From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x234.google.com (mail-oi1-x234.google.com [IPv6:2607:f8b0:4864:20::234]) by sourceware.org (Postfix) with ESMTPS id 2ACCC3858C27 for ; Wed, 9 Dec 2020 03:27:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2ACCC3858C27 Received: by mail-oi1-x234.google.com with SMTP id d27so314756oic.0 for ; Tue, 08 Dec 2020 19:27:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zLOy2C70tYHYT5H8BI7PIaqyPOBtb0YNWmh70cxPsmY=; b=lIIOIdsRzJ3lFikPt61+3YmCBnjNni1+KStZ3g3HiFVwL5vjLoqVi84S4VTGrJ1wDO We9SAS3RANK7MDKWXXx8zL6RzFCOcroVmgKuag7MwgysbbP33DJl3OIzVgYNQsK3ENL7 2u7kbCE8ZJRaoqYuQYCEmpf5a1C4/mrt4GPriewmUsybZ17/NTjE9cTHTZs25Jus8H7V MQMIx1P4RPf5f/rnOmH/3lY3r2YQzoIVXl1xr0KqsupKoZ2ojbwnPW5knhtpfKCALFQP JmPkJKwI+5dhXF8/7Y+1O/F3JD5l4sfJHNaGpunQGKfUzaISateKrUiyVcFzCHkuaL5O J6ww== X-Gm-Message-State: AOAM533JMpqYYfVDvUppA5khi3edCToaHtYcTSwOu3XrU74mfsqjSwuH GmCMiuzt8SpaGRZJoZclE7fZqVfJsc9F0/rNnKo= X-Google-Smtp-Source: ABdhPJzdlVMevrXkVBGX0DkyCt0bR54yjX0CT3+y3/5HNjnEv2cVJGAQ1rDnWSUaC2R5Fi23ah6WKG6fnvCq3+KXXMU= X-Received: by 2002:aca:f456:: with SMTP id s83mr413161oih.58.1607484464431; Tue, 08 Dec 2020 19:27:44 -0800 (PST) MIME-Version: 1.0 References: <20201206144952.2109594-1-hjl.tools@gmail.com> <20201206144952.2109594-3-hjl.tools@gmail.com> <87sg8ikkal.fsf@oldenburg2.str.redhat.com> <871rg0e85j.fsf@oldenburg2.str.redhat.com> <87wnxscreu.fsf@oldenburg2.str.redhat.com> <87mtyocor7.fsf@oldenburg2.str.redhat.com> In-Reply-To: From: "H.J. Lu" Date: Tue, 8 Dec 2020 19:27:06 -0800 Message-ID: Subject: [PATCH] ldconfig/x86: Store ISA level in cache and aux cache To: Florian Weimer Cc: "H.J. Lu via Libc-alpha" Content-Type: multipart/mixed; boundary="0000000000007e4faf05b5ffa4c4" X-Spam-Status: No, score=-3036.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Dec 2020 03:27:50 -0000 --0000000000007e4faf05b5ffa4c4 Content-Type: text/plain; charset="UTF-8" On Tue, Dec 8, 2020 at 7:31 AM H.J. Lu wrote: > > On Tue, Dec 8, 2020 at 7:16 AM Florian Weimer wrote: > > > > * H. J. Lu: > > > > >> > For each file entry for a shared object, the hwcap field has been used by > > >> > DL_CACHE_HWCAP_EXTENSION for glibc-hwcaps. Are you suggesting > > >> > to add another file entry for the same shared object to store ISA level > > >> > requirement? > > >> > > >> It's a 64-bit field. We do this: > > >> > > >> /* This bit in the hwcap field of struct file_entry_new indicates that > > >> the lower 32 bits contain an index into the > > >> cache_extension_tag_glibc_hwcaps section. Older glibc versions do > > >> not know about this HWCAP bit, so they will ignore these > > >> entries. */ > > >> #define DL_CACHE_HWCAP_EXTENSION (1ULL << 62) > > >> > > >> /* Return true if the ENTRY->hwcap value indicates that > > >> DL_CACHE_HWCAP_EXTENSION is used. */ > > >> static inline bool > > >> dl_cache_hwcap_extension (struct file_entry_new *entry) > > >> { > > >> /* If DL_CACHE_HWCAP_EXTENSION is set, but other bits as well, this > > >> is a different kind of extension. */ > > >> return (entry->hwcap >> 32) == (DL_CACHE_HWCAP_EXTENSION >> 32); > > >> } > > >> > > >> So we can use a different bit pattern involving DL_CACHE_HWCAP_EXTENSION > > >> to express something else. In particular, only the lower 32 bits are > > >> currently used as an index. > > > > > > So bits 33-47 can be used for ISA level requirement. This should support > > > 65536 ISA levels. > > > > The question is whether the ISA levels and the glibc-hwcaps name are > > used in parallel. If not, we can use (1ULL << 62) | (1ULL << 32) as > > the marker bits and a 32-bit index in the lower half. > > > > (I do not think this is necessarily relevant for levels, but it could be > > used for locating objects according to other criteria.) > > > > I think ISA level and glibc-hwcaps should go together. > Here is the patch to store ISA level in the portion of the unused upper 32 bits of the hwcaps field in cache and the unused pad field in aux cache. -- H.J. --0000000000007e4faf05b5ffa4c4 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-ldconfig-x86-Store-ISA-level-in-cache-and-aux-cache.patch" Content-Disposition: attachment; filename="0001-ldconfig-x86-Store-ISA-level-in-cache-and-aux-cache.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kigunzmc0 RnJvbSBmNTA1M2ZhYmQxZThhNTU2N2I0ODdlZjQwNTQ3OTNlMDQzYTdiODE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgNSBEZWMgMjAyMCAwNzowMTo1OCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGxkY29uZmln L3g4NjogU3RvcmUgSVNBIGxldmVsIGluIGNhY2hlIGFuZCBhdXggY2FjaGUKClN0b3JlIElTQSBs ZXZlbCBpbiB0aGUgcG9ydGlvbiBvZiB0aGUgdW51c2VkIHVwcGVyIDMyIGJpdHMgb2YgdGhlIGh3 Y2FwcwpmaWVsZCBpbiBjYWNoZSBhbmQgdGhlIHVudXNlZCBwYWQgZmllbGQgaW4gYXV4IGNhY2hl LiAgSVNBIGxldmVsIGlzIHN0b3JlZAphbmQgY2hlY2tlZCBvbmx5IGZvciBzaGFyZWQgb2JqZWN0 cyBpbiBnbGliYy1od2NhcHMgc3ViZGlyZWN0b3JpZXMuICBUaGUKc2hhcmVkIG9iamVjdHMgaW4g dGhlIGRlZmF1bHQgZGlyZWN0b3JpZXMgYXJlbid0IGNoZWNrZWQgc2luY2UgdGhlcmUgYXJlCm5v IGZhbGxiYWNrcyBmb3IgdGhlc2Ugc2hhcmVkIG9iamVjdHMuCi0tLQogZWxmL2NhY2hlLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzQgKysrKystLS0KIGVsZi9kbC1jYWNo ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsKIGVsZi9sZGNvbmZpZy5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKy0tCiBlbGYvcmVhZGVsZmxp Yi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4MSArKysrKysrKysrKysrKysrKyst CiBlbGYvcmVhZGxpYi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArLQog ZWxmL3RzdC1nbGliYy1od2NhcHMtMi1jYWNoZS5jICAgICAgICAgICAgICAgIHwgNDUgKysrKysr KysrKysKIC4uLi9ldGMvbGQuc28uY29uZiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICsKIC4uLi9wb3N0Y2xlYW4ucmVxICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCiBl bGYvdHN0LWdsaWJjLWh3Y2Fwcy0yLWNhY2hlLnNjcmlwdCAgICAgICAgICAgfCAgNiArKwogc3lz ZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggICAgICAgICAgICAgICAgICAgIHwgMTUgKysrLQogc3lz ZGVwcy9nZW5lcmljL2RsLWlzYS1sZXZlbC5oICAgICAgICAgICAgICAgIHwgMjYgKysrKysrCiBz eXNkZXBzL2dlbmVyaWMvbGRjb25maWcuaCAgICAgICAgICAgICAgICAgICAgfCAyMiArKystLQog c3lzZGVwcy9nZW5lcmljL3JlYWQtcHJvcC5oICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysr KysKIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9yZWFkZWxmbGliLmMgICAgICB8IDIyICsr LS0tCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L3JlYWRlbGZsaWIuYyAgICAgfCAyMiAr Ky0tLQogc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9yZWFkZWxmbGliLmMgICAgIHwgMjIg KystLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcmVhZGVsZmxpYi5jICB8IDIy ICsrLS0tCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9yaXNjdi9yZWFkZWxmbGliLmMgICAgfCAy MiArKy0tLQogc3lzZGVwcy91bml4L3N5c3YvbGludXgvczM5MC9yZWFkZWxmbGliLmMgICAgIHwg MjIgKystLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NwYXJjL3JlYWRlbGZsaWIuYyAgICB8 IDIyICsrLS0tCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODYvcmVhZC1wcm9wLmggICAgICAg fCA2MSArKysrKysrKysrKysrKwogc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2L3JlYWRlbGZs aWIuYyAgICAgIHwgMjMgKysrLS0tCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvTWFr ZWZpbGUgICAgICAgfCAzMSArKysrKysrCiAuLi4vc3lzdi9saW51eC94ODZfNjQvdHN0LWdsaWJj LWh3Y2Fwcy0yLmMgICAgfCA2MSArKysrKysrKysrKysrKwogLi4uL2xpbnV4L3g4Nl82NC94ODYt NjQtaXNhLWxldmVsLVZBTFVFLmMgICAgIHwgIDQgKwogc3lzZGVwcy94ODYvZGwtaXNhLWxldmVs LmggICAgICAgICAgICAgICAgICAgIHwgMzIgKysrKysrKysKIDI2IGZpbGVzIGNoYW5nZWQsIDU1 MCBpbnNlcnRpb25zKCspLCAxMTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZWxm L3RzdC1nbGliYy1od2NhcHMtMi1jYWNoZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmL3RzdC1n bGliYy1od2NhcHMtMi1jYWNoZS5yb290L2V0Yy9sZC5zby5jb25mCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZWxmL3RzdC1nbGliYy1od2NhcHMtMi1jYWNoZS5yb290L3Bvc3RjbGVhbi5yZXEKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBlbGYvdHN0LWdsaWJjLWh3Y2Fwcy0yLWNhY2hlLnNjcmlwdAogY3JlYXRl IG1vZGUgMTAwNjQ0IHN5c2RlcHMvZ2VuZXJpYy9kbC1pc2EtbGV2ZWwuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHN5c2RlcHMvZ2VuZXJpYy9yZWFkLXByb3AuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Ni9yZWFkLXByb3AuaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC90c3QtZ2xpYmMtaHdjYXBzLTIuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC94ODYtNjQtaXNh LWxldmVsLVZBTFVFLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3g4Ni9kbC1pc2EtbGV2 ZWwuaAoKZGlmZiAtLWdpdCBhL2VsZi9jYWNoZS5jIGIvZWxmL2NhY2hlLmMKaW5kZXggYjAzYzUz MTlmOC4uOTFhNzIzODFhZSAxMDA2NDQKLS0tIGEvZWxmL2NhY2hlLmMKKysrIGIvZWxmL2NhY2hl LmMKQEAgLTE0NSw2ICsxNDUsNyBAQCBzdHJ1Y3QgY2FjaGVfZW50cnkKICAgc3RydWN0IHN0cmlu Z3RhYmxlX2VudHJ5ICpwYXRoOyAvKiBQYXRoIHRvIGZpbmQgbGlicmFyeS4gICovCiAgIGludCBm bGFnczsJCQkvKiBGbGFncyB0byBpbmRpY2F0ZSBraW5kIG9mIGxpYnJhcnkuICAqLwogICB1bnNp Z25lZCBpbnQgb3N2ZXJzaW9uOwkvKiBSZXF1aXJlZCBPUyB2ZXJzaW9uLiAgKi8KKyAgdW5zaWdu ZWQgaW50IGlzYV9sZXZlbDsJLyogUmVxdWlyZWQgSVNBTCBsZXZlbC4gICovCiAgIHVpbnQ2NF90 IGh3Y2FwOwkJLyogSW1wb3J0YW50IGhhcmR3YXJlIGNhcGFiaWxpdGllcy4gICovCiAgIGludCBi aXRzX2h3Y2FwOwkJLyogTnVtYmVyIG9mIGJpdHMgc2V0IGluIGh3Y2FwLiAgKi8KIApAQCAtNjYw LDggKzY2MSwxNCBAQCBzYXZlX2NhY2hlIChjb25zdCBjaGFyICpjYWNoZV9uYW1lKQogCSAgaWYg KGVudHJ5LT5od2NhcHMgPT0gTlVMTCkKIAkgICAgZmlsZV9lbnRyaWVzX25ldy0+bGlic1tpZHhf bmV3XS5od2NhcCA9IGVudHJ5LT5od2NhcDsKIAkgIGVsc2UKLQkgICAgZmlsZV9lbnRyaWVzX25l dy0+bGlic1tpZHhfbmV3XS5od2NhcAotCSAgICAgID0gRExfQ0FDSEVfSFdDQVBfRVhURU5TSU9O IHwgZW50cnktPmh3Y2Fwcy0+c2VjdGlvbl9pbmRleDsKKwkgICAgeworCSAgICAgIGlmIChlbnRy eS0+aXNhX2xldmVsID4gKDEgPDwgRExfQ0FDSEVfSFdDQVBfSVNBX0xFVkVMX0NPVU5UKSkKKwkJ YWJvcnQgKCk7CisJICAgICAgZmlsZV9lbnRyaWVzX25ldy0+bGlic1tpZHhfbmV3XS5od2NhcAor CQk9IChETF9DQUNIRV9IV0NBUF9FWFRFTlNJT04KKwkJICAgfCAoKCh1aW50NjRfdCkgZW50cnkt PmlzYV9sZXZlbCkgPDwgMzIpCisJCSAgIHwgZW50cnktPmh3Y2Fwcy0+c2VjdGlvbl9pbmRleCk7 CisJICAgIH0KIAkgIGZpbGVfZW50cmllc19uZXctPmxpYnNbaWR4X25ld10ua2V5CiAJICAgID0g c3RyX29mZnNldCArIGVudHJ5LT5saWItPm9mZnNldDsKIAkgIGZpbGVfZW50cmllc19uZXctPmxp YnNbaWR4X25ld10udmFsdWUKQEAgLTc3Niw3ICs3ODMsOCBAQCBzYXZlX2NhY2hlIChjb25zdCBj aGFyICpjYWNoZV9uYW1lKQogLyogQWRkIG9uZSBsaWJyYXJ5IHRvIHRoZSBjYWNoZS4gICovCiB2 b2lkCiBhZGRfdG9fY2FjaGUgKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmZpbGVuYW1l LCBjb25zdCBjaGFyICpzb25hbWUsCi0JICAgICAgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgb3N2 ZXJzaW9uLCB1aW50NjRfdCBod2NhcCwKKwkgICAgICBpbnQgZmxhZ3MsIHVuc2lnbmVkIGludCBv c3ZlcnNpb24sCisJICAgICAgdW5zaWduZWQgaW50IGlzYV9sZXZlbCwgdWludDY0X3QgaHdjYXAs CiAJICAgICAgc3RydWN0IGdsaWJjX2h3Y2Fwc19zdWJkaXJlY3RvcnkgKmh3Y2FwcykKIHsKICAg c3RydWN0IGNhY2hlX2VudHJ5ICpuZXdfZW50cnkgPSB4bWFsbG9jIChzaXplb2YgKCpuZXdfZW50 cnkpKTsKQEAgLTc5NCw2ICs4MDIsNyBAQCBhZGRfdG9fY2FjaGUgKGNvbnN0IGNoYXIgKnBhdGgs IGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpzb25hbWUsCiAgIG5ld19lbnRyeS0+ cGF0aCA9IHBhdGhfaW50ZXJuZWQ7CiAgIG5ld19lbnRyeS0+ZmxhZ3MgPSBmbGFnczsKICAgbmV3 X2VudHJ5LT5vc3ZlcnNpb24gPSBvc3ZlcnNpb247CisgIG5ld19lbnRyeS0+aXNhX2xldmVsID0g aXNhX2xldmVsOwogICBuZXdfZW50cnktPmh3Y2FwID0gaHdjYXA7CiAgIG5ld19lbnRyeS0+aHdj YXBzID0gaHdjYXBzOwogICBuZXdfZW50cnktPmJpdHNfaHdjYXAgPSAwOwpAQCAtODUwLDYgKzg1 OSw3IEBAIHN0cnVjdCBhdXhfY2FjaGVfZW50cnkKICAgc3RydWN0IGF1eF9jYWNoZV9lbnRyeV9p ZCBpZDsKICAgaW50IGZsYWdzOwogICB1bnNpZ25lZCBpbnQgb3N2ZXJzaW9uOworICB1bnNpZ25l ZCBpbnQgaXNhX2xldmVsOwogICBpbnQgdXNlZDsKICAgY2hhciAqc29uYW1lOwogICBzdHJ1Y3Qg YXV4X2NhY2hlX2VudHJ5ICpuZXh0OwpAQCAtODYzLDcgKzg3Myw3IEBAIHN0cnVjdCBhdXhfY2Fj aGVfZmlsZV9lbnRyeQogICBpbnQzMl90IGZsYWdzOwkJLyogVGhpcyBpcyAxIGZvciBhbiBFTEYg bGlicmFyeS4gICovCiAgIHVpbnQzMl90IHNvbmFtZTsJCS8qIFN0cmluZyB0YWJsZSBpbmRpY2Uu ICAqLwogICB1aW50MzJfdCBvc3ZlcnNpb247CQkvKiBSZXF1aXJlZCBPUyB2ZXJzaW9uLgkgKi8K LSAgaW50MzJfdCBwYWQ7CisgIHVpbnQzMl90IGlzYV9sZXZlbDsJCS8qIFJlcXVpcmVkIElTQSBs ZXZlbC4JICovCiB9OwogCiAvKiBsZGNvbmZpZyBtYWludGFpbnMgYW4gYXV4aWxpYXJ5IGNhY2hl IGZpbGUgdGhhdCBhbGxvd3MKQEAgLTkxNCw3ICs5MjQsOCBAQCBpbml0X2F1eF9jYWNoZSAodm9p ZCkKIAogaW50CiBzZWFyY2hfYXV4X2NhY2hlIChzdHJ1Y3Qgc3RhdDY0ICpzdGF0X2J1ZiwgaW50 ICpmbGFncywKLQkJICB1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwgY2hhciAqKnNvbmFtZSkKKwkJ ICB1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwgdW5zaWduZWQgaW50ICppc2FfbGV2ZWwsCisJCSAg Y2hhciAqKnNvbmFtZSkKIHsKICAgc3RydWN0IGF1eF9jYWNoZV9lbnRyeV9pZCBpZDsKICAgaWQu aW5vID0gKHVpbnQ2NF90KSBzdGF0X2J1Zi0+c3RfaW5vOwpAQCAtOTMyLDYgKzk0Myw3IEBAIHNl YXJjaF9hdXhfY2FjaGUgKHN0cnVjdCBzdGF0NjQgKnN0YXRfYnVmLCBpbnQgKmZsYWdzLAogICAg ICAgewogCSpmbGFncyA9IGVudHJ5LT5mbGFnczsKIAkqb3N2ZXJzaW9uID0gZW50cnktPm9zdmVy c2lvbjsKKwkqaXNhX2xldmVsID0gZW50cnktPmlzYV9sZXZlbDsKIAlpZiAoZW50cnktPnNvbmFt ZSAhPSBOVUxMKQogCSAgKnNvbmFtZSA9IHhzdHJkdXAgKGVudHJ5LT5zb25hbWUpOwogCWVsc2UK QEAgLTk0NSw3ICs5NTcsOCBAQCBzZWFyY2hfYXV4X2NhY2hlIChzdHJ1Y3Qgc3RhdDY0ICpzdGF0 X2J1ZiwgaW50ICpmbGFncywKIAogc3RhdGljIHZvaWQKIGluc2VydF90b19hdXhfY2FjaGUgKHN0 cnVjdCBhdXhfY2FjaGVfZW50cnlfaWQgKmlkLCBpbnQgZmxhZ3MsCi0JCSAgICAgdW5zaWduZWQg aW50IG9zdmVyc2lvbiwgY29uc3QgY2hhciAqc29uYW1lLCBpbnQgdXNlZCkKKwkJICAgICB1bnNp Z25lZCBpbnQgb3N2ZXJzaW9uLCB1bnNpZ25lZCBpbnQgaXNhX2xldmVsLAorCQkgICAgIGNvbnN0 IGNoYXIgKnNvbmFtZSwgaW50IHVzZWQpCiB7CiAgIHNpemVfdCBoYXNoID0gYXV4X2NhY2hlX2Vu dHJ5X2lkX2hhc2ggKGlkKSAlIGF1eF9oYXNoX3NpemU7CiAgIHN0cnVjdCBhdXhfY2FjaGVfZW50 cnkgKmVudHJ5OwpAQCAtOTYxLDYgKzk3NCw3IEBAIGluc2VydF90b19hdXhfY2FjaGUgKHN0cnVj dCBhdXhfY2FjaGVfZW50cnlfaWQgKmlkLCBpbnQgZmxhZ3MsCiAgIGVudHJ5LT5pZCA9ICppZDsK ICAgZW50cnktPmZsYWdzID0gZmxhZ3M7CiAgIGVudHJ5LT5vc3ZlcnNpb24gPSBvc3ZlcnNpb247 CisgIGVudHJ5LT5pc2FfbGV2ZWwgPSBpc2FfbGV2ZWw7CiAgIGVudHJ5LT51c2VkID0gdXNlZDsK ICAgaWYgKHNvbmFtZSAhPSBOVUxMKQogICAgIGVudHJ5LT5zb25hbWUgPSBtZW1jcHkgKChjaGFy ICopIChlbnRyeSArIDEpLCBzb25hbWUsIGxlbik7CkBAIC05NzIsMTQgKzk4NiwxNSBAQCBpbnNl cnRfdG9fYXV4X2NhY2hlIChzdHJ1Y3QgYXV4X2NhY2hlX2VudHJ5X2lkICppZCwgaW50IGZsYWdz LAogCiB2b2lkCiBhZGRfdG9fYXV4X2NhY2hlIChzdHJ1Y3Qgc3RhdDY0ICpzdGF0X2J1ZiwgaW50 IGZsYWdzLAotCQkgIHVuc2lnbmVkIGludCBvc3ZlcnNpb24sIGNvbnN0IGNoYXIgKnNvbmFtZSkK KwkJICB1bnNpZ25lZCBpbnQgb3N2ZXJzaW9uLCB1bnNpZ25lZCBpbnQgaXNhX2xldmVsLAorCQkg IGNvbnN0IGNoYXIgKnNvbmFtZSkKIHsKICAgc3RydWN0IGF1eF9jYWNoZV9lbnRyeV9pZCBpZDsK ICAgaWQuaW5vID0gKHVpbnQ2NF90KSBzdGF0X2J1Zi0+c3RfaW5vOwogICBpZC5jdGltZSA9ICh1 aW50NjRfdCkgc3RhdF9idWYtPnN0X2N0aW1lOwogICBpZC5zaXplID0gKHVpbnQ2NF90KSBzdGF0 X2J1Zi0+c3Rfc2l6ZTsKICAgaWQuZGV2ID0gKHVpbnQ2NF90KSBzdGF0X2J1Zi0+c3RfZGV2Owot ICBpbnNlcnRfdG9fYXV4X2NhY2hlICgmaWQsIGZsYWdzLCBvc3ZlcnNpb24sIHNvbmFtZSwgMSk7 CisgIGluc2VydF90b19hdXhfY2FjaGUgKCZpZCwgZmxhZ3MsIG9zdmVyc2lvbiwgaXNhX2xldmVs LCBzb25hbWUsIDEpOwogfQogCiAvKiBMb2FkIGF1eGlsaWFyeSBjYWNoZSB0byBzZWFyY2ggZm9y IHVuY2hhbmdlZCBlbnRyaWVzLiAgICovCkBAIC0xMDI1LDYgKzEwNDAsNyBAQCBsb2FkX2F1eF9j YWNoZSAoY29uc3QgY2hhciAqYXV4X2NhY2hlX25hbWUpCiAgICAgaW5zZXJ0X3RvX2F1eF9jYWNo ZSAoJmF1eF9jYWNoZS0+bGlic1tpXS5pZCwKIAkJCSBhdXhfY2FjaGUtPmxpYnNbaV0uZmxhZ3Ms CiAJCQkgYXV4X2NhY2hlLT5saWJzW2ldLm9zdmVyc2lvbiwKKwkJCSBhdXhfY2FjaGUtPmxpYnNb aV0uaXNhX2xldmVsLAogCQkJIGF1eF9jYWNoZS0+bGlic1tpXS5zb25hbWUgPT0gMAogCQkJID8g TlVMTCA6IGF1eF9jYWNoZV9kYXRhICsgYXV4X2NhY2hlLT5saWJzW2ldLnNvbmFtZSwKIAkJCSAw KTsKQEAgLTEwOTMsNyArMTEwOSw3IEBAIHNhdmVfYXV4X2NhY2hlIChjb25zdCBjaGFyICphdXhf Y2FjaGVfbmFtZSkKIAkgICAgICBzdHJfb2Zmc2V0ICs9IGxlbjsKIAkgICAgfQogCSAgZmlsZV9l bnRyaWVzLT5saWJzW2lkeF0ub3N2ZXJzaW9uID0gZW50cnktPm9zdmVyc2lvbjsKLQkgIGZpbGVf ZW50cmllcy0+bGlic1tpZHgrK10ucGFkID0gMDsKKwkgIGZpbGVfZW50cmllcy0+bGlic1tpZHgr K10uaXNhX2xldmVsID0gZW50cnktPmlzYV9sZXZlbDsKIAl9CiAKICAgLyogV3JpdGUgb3V0IGF1 eGlsaWFyeSBjYWNoZSBmaWxlLiAgKi8KZGlmZiAtLWdpdCBhL2VsZi9kbC1jYWNoZS5jIGIvZWxm L2RsLWNhY2hlLmMKaW5kZXggOTcwOTNiYjcwMC4uZWRlZmY3Y2NjMSAxMDA2NDQKLS0tIGEvZWxm L2RsLWNhY2hlLmMKKysrIGIvZWxmL2RsLWNhY2hlLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs dWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxfaXRvYS5oPgogI2luY2x1ZGUgPGRsLWh3Y2Fwcy5o PgorI2luY2x1ZGUgPGRsLWlzYS1sZXZlbC5oPgogCiAjaWZuZGVmIF9ETF9QTEFURk9STVNfQ09V TlQKICMgZGVmaW5lIF9ETF9QTEFURk9STVNfQ09VTlQgMApAQCAtMjg0LDYgKzI4NSw5IEBAIHNl YXJjaF9jYWNoZSAoY29uc3QgY2hhciAqc3RyaW5nX3RhYmxlLCB1aW50MzJfdCBzdHJpbmdfdGFi bGVfc2l6ZSwKIAogI2lmZGVmIFNIQVJFRAogCQkJICBuYW1lZF9od2NhcCA9IGRsX2NhY2hlX2h3 Y2FwX2V4dGVuc2lvbiAobGlibmV3KTsKKwkJCSAgaWYgKG5hbWVkX2h3Y2FwCisJCQkgICAgICAm JiAhZGxfY2FjaGVfaHdjYXBfaXNhX2xldmVsX2NvbXBhdGlibGUgKGxpYm5ldykpCisJCQkgICAg Y29udGludWU7CiAjZW5kaWYKIAogCQkJICAvKiBUaGUgZW50cmllcyB3aXRoIG5hbWVkL2V4dGVu c2lvbiBod2NhcHMKZGlmZiAtLWdpdCBhL2VsZi9sZGNvbmZpZy5jIGIvZWxmL2xkY29uZmlnLmMK aW5kZXggMTA5MjdhOGM3Zi4uOWRjZWFjMzhhYSAxMDA2NDQKLS0tIGEvZWxmL2xkY29uZmlnLmMK KysrIGIvZWxmL2xkY29uZmlnLmMKQEAgLTY1NSw2ICs2NTUsNyBAQCBtYW51YWxfbGluayAoY2hh ciAqbGlicmFyeSkKICAgc3RydWN0IHN0YXQ2NCBzdGF0X2J1ZjsKICAgaW50IGZsYWc7CiAgIHVu c2lnbmVkIGludCBvc3ZlcnNpb247CisgIHVuc2lnbmVkIGludCBpc2FfbGV2ZWw7CiAKICAgLyog UHJlcGFyZSBhcmd1bWVudHMgZm9yIGNyZWF0ZV9saW5rcyBjYWxsLiAgU3BsaXQgbGlicmFyeSBu YW1lIGluCiAgICAgIGRpcmVjdG9yeSBhbmQgZmlsZW5hbWUgZmlyc3QuICBTaW5jZSBwYXRoIGlz IGFsbG9jYXRlZCwgd2UndmUgZ290CkBAIC03MjEsNyArNzIyLDcgQEAgbWFudWFsX2xpbmsgKGNo YXIgKmxpYnJhcnkpCiAgICAgfQogCiAgIGlmIChwcm9jZXNzX2ZpbGUgKHJlYWxfbGlicmFyeSwg bGlicmFyeSwgbGlibmFtZSwgJmZsYWcsICZvc3ZlcnNpb24sCi0JCSAgICAmc29uYW1lLCAwLCAm c3RhdF9idWYpKQorCQkgICAgJmlzYV9sZXZlbCwgJnNvbmFtZSwgMCwgJnN0YXRfYnVmKSkKICAg ICB7CiAgICAgICBlcnJvciAoMCwgMCwgXygiTm8gbGluayBjcmVhdGVkIHNpbmNlIHNvbmFtZSBj b3VsZCBub3QgYmUgZm91bmQgZm9yICVzIiksCiAJICAgICBsaWJyYXJ5KTsKQEAgLTc2OCw2ICs3 NjksNyBAQCBzdHJ1Y3QgZGxpYl9lbnRyeQogICBpbnQgZmxhZzsKICAgaW50IGlzX2xpbms7CiAg IHVuc2lnbmVkIGludCBvc3ZlcnNpb247CisgIHVuc2lnbmVkIGludCBpc2FfbGV2ZWw7CiAgIHN0 cnVjdCBkbGliX2VudHJ5ICpuZXh0OwogfTsKIApAQCAtOTgwLDE3ICs5ODIsMjEgQEAgc2VhcmNo X2RpciAoY29uc3Qgc3RydWN0IGRpcl9lbnRyeSAqZW50cnkpCiAJIGxpYnJhcnkgYWxyZWFkeSBh bmQgaXQncyBub3QgY2hhbmdlZC4gICovCiAgICAgICBjaGFyICpzb25hbWU7CiAgICAgICB1bnNp Z25lZCBpbnQgb3N2ZXJzaW9uOwotICAgICAgaWYgKCFzZWFyY2hfYXV4X2NhY2hlICgmbHN0YXRf YnVmLCAmZmxhZywgJm9zdmVyc2lvbiwgJnNvbmFtZSkpCisgICAgICB1bnNpZ25lZCBpbnQgaXNh X2xldmVsOworICAgICAgaWYgKCFzZWFyY2hfYXV4X2NhY2hlICgmbHN0YXRfYnVmLCAmZmxhZywg Jm9zdmVyc2lvbiwgJmlzYV9sZXZlbCwKKwkJCSAgICAgJnNvbmFtZSkpCiAJewogCSAgaWYgKHBy b2Nlc3NfZmlsZSAocmVhbF9uYW1lLCBmaWxlX25hbWUsIGRpcmVudHJ5LT5kX25hbWUsICZmbGFn LAotCQkJICAgICZvc3ZlcnNpb24sICZzb25hbWUsIGlzX2xpbmssICZsc3RhdF9idWYpKQorCQkJ ICAgICZvc3ZlcnNpb24sICZpc2FfbGV2ZWwsICZzb25hbWUsIGlzX2xpbmssCisJCQkgICAgJmxz dGF0X2J1ZikpCiAJICAgIHsKIAkgICAgICBpZiAocmVhbF9uYW1lICE9IHJlYWxfZmlsZV9uYW1l KQogCQlmcmVlIChyZWFsX25hbWUpOwogCSAgICAgIGNvbnRpbnVlOwogCSAgICB9CiAJICBlbHNl IGlmIChvcHRfYnVpbGRfY2FjaGUpCi0JICAgIGFkZF90b19hdXhfY2FjaGUgKCZsc3RhdF9idWYs IGZsYWcsIG9zdmVyc2lvbiwgc29uYW1lKTsKKwkgICAgYWRkX3RvX2F1eF9jYWNoZSAoJmxzdGF0 X2J1ZiwgZmxhZywgb3N2ZXJzaW9uLCBpc2FfbGV2ZWwsCisJCQkgICAgICBzb25hbWUpOwogCX0K IAogICAgICAgaWYgKHNvbmFtZSA9PSBOVUxMKQpAQCAtMTA5Niw2ICsxMTAyLDcgQEAgc2VhcmNo X2RpciAoY29uc3Qgc3RydWN0IGRpcl9lbnRyeSAqZW50cnkpCiAJCSAgZGxpYl9wdHItPm5hbWUg PSB4c3RyZHVwIChkaXJlbnRyeS0+ZF9uYW1lKTsKIAkJICBkbGliX3B0ci0+aXNfbGluayA9IGlz X2xpbms7CiAJCSAgZGxpYl9wdHItPm9zdmVyc2lvbiA9IG9zdmVyc2lvbjsKKwkJICBkbGliX3B0 ci0+aXNhX2xldmVsID0gaXNhX2xldmVsOwogCQl9CiAJICAgICAgLyogRG9uJ3QgYWRkIHRoaXMg bGlicmFyeSwgYWJvcnQgbG9vcC4gICovCiAJICAgICAgLyogQWxzbyBmcmVlIHNvbmFtZSwgc2lu Y2UgaXQncyBkeW5hbWljYWxseSBhbGxvY2F0ZWQuICAqLwpAQCAtMTExMiw2ICsxMTE5LDcgQEAg c2VhcmNoX2RpciAoY29uc3Qgc3RydWN0IGRpcl9lbnRyeSAqZW50cnkpCiAJICBkbGliX3B0ci0+ ZmxhZyA9IGZsYWc7CiAJICBkbGliX3B0ci0+aXNfbGluayA9IGlzX2xpbms7CiAJICBkbGliX3B0 ci0+b3N2ZXJzaW9uID0gb3N2ZXJzaW9uOworCSAgZGxpYl9wdHItPmlzYV9sZXZlbCA9IGlzYV9s ZXZlbDsKIAkgIC8qIEFkZCBhdCBoZWFkIG9mIGxpc3QuICAqLwogCSAgZGxpYl9wdHItPm5leHQg PSBkbGliczsKIAkgIGRsaWJzID0gZGxpYl9wdHI7CkBAIC0xMTQ5LDcgKzExNTcsNyBAQCBzZWFy Y2hfZGlyIChjb25zdCBzdHJ1Y3QgZGlyX2VudHJ5ICplbnRyeSkKICAgICAgIGlmIChvcHRfYnVp bGRfY2FjaGUpCiAJYWRkX3RvX2NhY2hlIChlbnRyeS0+cGF0aCwgZmlsZW5hbWUsIGRsaWJfcHRy LT5zb25hbWUsCiAJCSAgICAgIGRsaWJfcHRyLT5mbGFnLCBkbGliX3B0ci0+b3N2ZXJzaW9uLAot CQkgICAgICBod2NhcCwgZW50cnktPmh3Y2Fwcyk7CisJCSAgICAgIGRsaWJfcHRyLT5pc2FfbGV2 ZWwsIGh3Y2FwLCBlbnRyeS0+aHdjYXBzKTsKICAgICB9CiAKICAgLyogRnJlZSBhbGwgcmVzb3Vy Y2VzLiAgKi8KZGlmZiAtLWdpdCBhL2VsZi9yZWFkZWxmbGliLmMgYi9lbGYvcmVhZGVsZmxpYi5j CmluZGV4IDU5MDVmNmQzNDQuLmFiYjFhYzYxZmEgMTAwNjQ0Ci0tLSBhL2VsZi9yZWFkZWxmbGli LmMKKysrIGIvZWxmL3JlYWRlbGZsaWIuYwpAQCAtMTcsNiArMTcsOCBAQAogICAgTGljZW5zZSBh bG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQogICAgPGh0dHBzOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKKyNpbmNsdWRlIDxyZWFkLXByb3AuaD4KKwogLyog VGhpcyBjb2RlIGlzIGEgaGVhdmlseSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgdGhlIHJlYWRlbGYg cHJvZ3JhbQogICAgdGhhdCdzIHBhcnQgb2YgdGhlIGN1cnJlbnQgYmludXRpbHMgZGV2ZWxvcG1l bnQgdmVyc2lvbi4gIEZvciBhcmNoaXRlY3R1cmVzCiAgICB3aGljaCBuZWVkIHRvIGhhbmRsZSBi b3RoIDMyYml0IGFuZCA2NGJpdCBFTEYgbGlicmFyaWVzLCAgdGhpcyBmaWxlIGlzCkBAIC00MCw4 ICs0Miw4IEBAIGRvCQkJCQkJCQlcCiAvKiBSZXR1cm5zIDAgaWYgZXZlcnl0aGluZyBpcyBvaywg IT0gMCBpbiBjYXNlIG9mIGVycm9yLiAgKi8KIGludAogcHJvY2Vzc19lbGZfZmlsZSAoY29uc3Qg Y2hhciAqZmlsZV9uYW1lLCBjb25zdCBjaGFyICpsaWIsIGludCAqZmxhZywKLQkJICB1bnNpZ25l ZCBpbnQgKm9zdmVyc2lvbiwgY2hhciAqKnNvbmFtZSwgdm9pZCAqZmlsZV9jb250ZW50cywKLQkJ ICBzaXplX3QgZmlsZV9sZW5ndGgpCisJCSAgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIHVuc2ln bmVkIGludCAqaXNhX2xldmVsLAorCQkgIGNoYXIgKipzb25hbWUsIHZvaWQgKmZpbGVfY29udGVu dHMsIHNpemVfdCBmaWxlX2xlbmd0aCkKIHsKICAgaW50IGk7CiAgIHVuc2lnbmVkIGludCBqOwpA QCAtODYsNiArODgsOSBAQCBwcm9jZXNzX2VsZl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUs IGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAogICAgICBsaWJjNS9saWJjNi4gICovCiAgICpm bGFnID0gRkxBR19FTEY7CiAKKyAgLyogVGhlIGRlZmF1bHQgSVNBIGxldmVsIGlzIDAuICAqLwor ICAqaXNhX2xldmVsID0gMDsKKwogICBkeW5hbWljX2FkZHIgPSAwOwogICBkeW5hbWljX3NpemUg PSAwOwogICBwcm9ncmFtX2ludGVycHJldGVyID0gTlVMTDsKQEAgLTE2NCw2ICsxNjksNzggQEAg cHJvY2Vzc19lbGZfZmlsZSAoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBjb25zdCBjaGFyICpsaWIs IGludCAqZmxhZywKIAkgICAgfQogCSAgYnJlYWs7CiAKKwljYXNlIFBUX0dOVV9QUk9QRVJUWToK KwkgIC8qIFRoZSBOVF9HTlVfUFJPUEVSVFlfVFlQRV8wIG5vdGUgbXVzdCBiZSBhbGlnbmVkIHRv IDQgYnl0ZXMKKwkgICAgIGluIDMyLWJpdCBvYmplY3RzIGFuZCB0byA4IGJ5dGVzIGluIDY0LWJp dCBvYmplY3RzLiAgU2tpcAorCSAgICAgbm90ZXMgd2l0aCBpbmNvcnJlY3QgYWxpZ25tZW50LiAg Ki8KKwkgIGlmIChzZWdtZW50LT5wX2FsaWduID09IChfX0VMRl9OQVRJVkVfQ0xBU1MgLyA4KSkK KwkgICAgeworCSAgICAgIGNvbnN0IEVsZlcoTmhkcikgKm5vdGUgPSAoY29uc3Qgdm9pZCAqKSAo ZmlsZV9jb250ZW50cworCQkJCQkJICAgICAgICsgc2VnbWVudC0+cF9vZmZzZXQpOworCSAgICAg IGNvbnN0IEVsZlcoQWRkcikgc2l6ZSA9IHNlZ21lbnQtPnBfZmlsZXN6OworCSAgICAgIGNvbnN0 IEVsZlcoQWRkcikgYWxpZ24gPSBzZWdtZW50LT5wX2FsaWduOworCisJICAgICAgY29uc3QgRWxm VyhBZGRyKSBzdGFydCA9IChFbGZXKEFkZHIpKSAodWludHB0cl90KSBub3RlOworCSAgICAgIHVu c2lnbmVkIGludCBsYXN0X3R5cGUgPSAwOworCisJICAgICAgd2hpbGUgKChFbGZXKEFkZHIpKSAo dWludHB0cl90KSAobm90ZSArIDEpIC0gc3RhcnQgPCBzaXplKQorCQl7CisJCSAgLyogRmluZCB0 aGUgTlRfR05VX1BST1BFUlRZX1RZUEVfMCBub3RlLiAgKi8KKwkJICBpZiAobm90ZS0+bl9uYW1l c3ogPT0gNAorCQkgICAgICAmJiBub3RlLT5uX3R5cGUgPT0gTlRfR05VX1BST1BFUlRZX1RZUEVf MAorCQkgICAgICAmJiBtZW1jbXAgKG5vdGUgKyAxLCAiR05VIiwgNCkgPT0gMCkKKwkJICAgIHsK KwkJICAgICAgLyogQ2hlY2sgZm9yIGludmFsaWQgcHJvcGVydHkuICAqLworCQkgICAgICBpZiAo bm90ZS0+bl9kZXNjc3ogPCA4CisJCQkgIHx8IChub3RlLT5uX2Rlc2NzeiAlIHNpemVvZiAoRWxm VyhBZGRyKSkpICE9IDApCisJCQlnb3RvIGRvbmU7CisKKwkJICAgICAgLyogU3RhcnQgYW5kIGVu ZCBvZiBwcm9wZXJ0eSBhcnJheS4gICovCisJCSAgICAgIHVuc2lnbmVkIGNoYXIgKnB0ciA9ICh1 bnNpZ25lZCBjaGFyICopIChub3RlICsgMSkgKyA0OworCQkgICAgICB1bnNpZ25lZCBjaGFyICpw dHJfZW5kID0gcHRyICsgbm90ZS0+bl9kZXNjc3o7CisKKwkJICAgICAgZG8KKwkJCXsKKwkJCSAg dW5zaWduZWQgaW50IHR5cGUgPSAqKHVuc2lnbmVkIGludCAqKSBwdHI7CisJCQkgIHVuc2lnbmVk IGludCBkYXRhc3ogPSAqKHVuc2lnbmVkIGludCAqKSAocHRyICsgNCk7CisKKwkJCSAgLyogUHJv cGVydHkgdHlwZSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlci4gICovCisJCQkgIGlmICh0eXBl IDwgbGFzdF90eXBlKQorCQkJICAgIGdvdG8gZG9uZTsKKworCQkJICBwdHIgKz0gODsKKwkJCSAg aWYgKChwdHIgKyBkYXRhc3opID4gcHRyX2VuZCkKKwkJCSAgICBnb3RvIGRvbmU7CisKKwkJCSAg bGFzdF90eXBlID0gdHlwZTsKKworCQkJICAvKiBUYXJnZXQgc3BlY2lmaWMgcHJvcGVydHkgcHJv Y2Vzc2luZy4KKwkJCSAgICAgUmV0dXJuIHZhbHVlOgorCQkJICAgICAgIGZhbHNlOiBDb250aW51 ZSBwcm9jZXNzaW5nIHRoZSBwcm9wZXJ0aWVzLgorCQkJICAgICAgIHRydWUgOiBTdG9wIHByb2Nl c3NpbmcgdGhlIHByb3BlcnRpZXMuCisJCQkgICAqLworCQkJICBpZiAocmVhZF9nbnVfcHJvcGVy dHkgKGlzYV9sZXZlbCwgdHlwZSwKKwkJCQkJCSBkYXRhc3osIHB0cikpCisJCQkgICAgZ290byBk b25lOworCisJCQkgIC8qIENoZWNrIHRoZSBuZXh0IHByb3BlcnR5IGl0ZW0uICAqLworCQkJICBw dHIgKz0gQUxJR05fVVAgKGRhdGFzeiwgc2l6ZW9mIChFbGZXKEFkZHIpKSk7CisJCQl9CisJCSAg ICAgIHdoaWxlICgocHRyX2VuZCAtIHB0cikgPj0gOCk7CisKKwkJICAgICAgLyogT25seSBoYW5k bGUgb25lIE5UX0dOVV9QUk9QRVJUWV9UWVBFXzAuICAqLworCQkgICAgICBnb3RvIGRvbmU7CisJ CSAgICB9CisKKwkJICBub3RlID0gKChjb25zdCB2b2lkICopIG5vdGUKKwkJCSAgKyBFTEZfTk9U RV9ORVhUX09GRlNFVCAobm90ZS0+bl9uYW1lc3osCisJCQkJCQkgIG5vdGUtPm5fZGVzY3N6LAor CQkJCQkJICBhbGlnbikpOworCQl9CisJICAgIH0KK2RvbmU6CisJICBicmVhazsKKwogCWRlZmF1 bHQ6CiAJICBicmVhazsKIAl9CmRpZmYgLS1naXQgYS9lbGYvcmVhZGxpYi5jIGIvZWxmL3JlYWRs aWIuYwppbmRleCA5OTRhNDQyNmExLi5kZWYwZWFmYmViIDEwMDY0NAotLS0gYS9lbGYvcmVhZGxp Yi5jCisrKyBiL2VsZi9yZWFkbGliLmMKQEAgLTc1LDcgKzc1LDggQEAgaXNfZ2RiX3B5dGhvbl9m aWxlIChjb25zdCBjaGFyICpuYW1lKQogaW50CiBwcm9jZXNzX2ZpbGUgKGNvbnN0IGNoYXIgKnJl YWxfZmlsZV9uYW1lLCBjb25zdCBjaGFyICpmaWxlX25hbWUsCiAJICAgICAgY29uc3QgY2hhciAq bGliLCBpbnQgKmZsYWcsIHVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLAotCSAgICAgIGNoYXIgKipz b25hbWUsIGludCBpc19saW5rLCBzdHJ1Y3Qgc3RhdDY0ICpzdGF0X2J1ZikKKwkgICAgICB1bnNp Z25lZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFtZSwgaW50IGlzX2xpbmssCisJICAgICAg c3RydWN0IHN0YXQ2NCAqc3RhdF9idWYpCiB7CiAgIEZJTEUgKmZpbGU7CiAgIHN0cnVjdCBzdGF0 NjQgc3RhdGJ1ZjsKQEAgLTE3Myw4ICsxNzQsOCBAQCBwcm9jZXNzX2ZpbGUgKGNvbnN0IGNoYXIg KnJlYWxfZmlsZV9uYW1lLCBjb25zdCBjaGFyICpmaWxlX25hbWUsCiAgIC8qIExpYnJhcmllcyBo YXZlIHRvIGJlIHNoYXJlZCBvYmplY3QgZmlsZXMuICAqLwogICBlbHNlIGlmIChlbGZfaGVhZGVy LT5lX3R5cGUgIT0gRVRfRFlOKQogICAgIHJldCA9IDE7Ci0gIGVsc2UgaWYgKHByb2Nlc3NfZWxm X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIHNvbmFtZSwKLQkJCSAgICAg ZmlsZV9jb250ZW50cywgc3RhdGJ1Zi5zdF9zaXplKSkKKyAgZWxzZSBpZiAocHJvY2Vzc19lbGZf ZmlsZSAoZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgaXNhX2xldmVsLAorCQkJICAg ICBzb25hbWUsIGZpbGVfY29udGVudHMsIHN0YXRidWYuc3Rfc2l6ZSkpCiAgICAgcmV0ID0gMTsK IAogIGRvbmU6CmRpZmYgLS1naXQgYS9lbGYvdHN0LWdsaWJjLWh3Y2Fwcy0yLWNhY2hlLmMgYi9l bGYvdHN0LWdsaWJjLWh3Y2Fwcy0yLWNhY2hlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMmMzMGEyYzkxMQotLS0gL2Rldi9udWxsCisrKyBiL2VsZi90c3QtZ2xpYmMt aHdjYXBzLTItY2FjaGUuYwpAQCAtMCwwICsxLDQ1IEBACisvKiBXcmFwcGVyIHRvIGludm9rZSB0 c3QtZ2xpYmMtaHdjYXBzLTIgaW4gYSBjb250YWluZXIgdG8gdGVzdCBsZGNvbmZpZy4KKyAgIENv cHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgorICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsg aWYgbm90LCBzZWUKKyAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisv KiBUaGlzIHByb2dyYW0gaXMganVzdCBhIHdyYXBwZXIgdGhhdCBydW5zIGxkY29uZmlnIGZvbGxv d2VkIGJ5CisgICB0c3QtZ2xpYmMtaHdjYXBzLTIuICBUaGUgYWN0dWFsIHRlc3QgaXMgcHJvdmlk ZWQgdmlhIGFuCisgICBpbXBsZW1lbnRhdGlvbiBpbiBhIHN5c2RlcHMgc3ViZGlyZWN0b3J5LiAg Ki8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 c3VwcG9ydC9zdXBwb3J0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK2ludAorbWFpbiAoaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAvKiBSdW4gbGRjb25maWcgdG8gcG9wdWxhdGUgdGhl IGNhY2hlLiAgKi8KKyAgeworICAgIGNoYXIgKmNvbW1hbmQgPSB4YXNwcmludGYgKCIlcy9sZGNv bmZpZyIsIHN1cHBvcnRfaW5zdGFsbF9yb290c2JpbmRpcik7CisgICAgaWYgKHN5c3RlbSAoY29t bWFuZCkgIT0gMCkKKyAgICAgIHJldHVybiAxOworICAgIGZyZWUgKGNvbW1hbmQpOworICB9CisK KyAgLyogUmV1c2UgdHN0LWdsaWJjLWh3Y2Fwcy4gIFNpbmNlIHRoaXMgY29kZSBpcyBydW5uaW5n IGluIGEKKyAgICAgY29udGFpbmVyLCB3ZSBjYW4gbGF1bmNoIGl0IGRpcmVjdGx5LiAgKi8KKyAg Y2hhciAqcGF0aCA9IHhhc3ByaW50ZiAoIiVzL2VsZi90c3QtZ2xpYmMtaHdjYXBzLTIiLCBzdXBw b3J0X29iamRpcl9yb290KTsKKyAgZXhlY3YgKHBhdGgsIGFyZ3YpOworICBwcmludGYgKCJlcnJv cjogZXhlY3Ygb2YgJXMgZmFpbGVkOiAlbVxuIiwgcGF0aCk7CisgIHJldHVybiAxOworfQpkaWZm IC0tZ2l0IGEvZWxmL3RzdC1nbGliYy1od2NhcHMtMi1jYWNoZS5yb290L2V0Yy9sZC5zby5jb25m IGIvZWxmL3RzdC1nbGliYy1od2NhcHMtMi1jYWNoZS5yb290L2V0Yy9sZC5zby5jb25mCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUxZTc0ZGJkYTIKLS0tIC9kZXYvbnVs bAorKysgYi9lbGYvdHN0LWdsaWJjLWh3Y2Fwcy0yLWNhY2hlLnJvb3QvZXRjL2xkLnNvLmNvbmYK QEAgLTAsMCArMSwyIEBACisjIFRoaXMgZmlsZSB3YXMgY3JlYXRlZCB0byBzdXBwcmVzcyBhIHdh cm5pbmcgZnJvbSBsZGNvbmZpZzoKKyMgL3NiaW4vbGRjb25maWc6IFdhcm5pbmc6IGlnbm9yaW5n IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IGNhbm5vdCBiZSBvcGVuZWQ6IC9ldGMvbGQuc28uY29u ZjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvZWxmL3RzdC1nbGliYy1o d2NhcHMtMi1jYWNoZS5yb290L3Bvc3RjbGVhbi5yZXEgYi9lbGYvdHN0LWdsaWJjLWh3Y2Fwcy0y LWNhY2hlLnJvb3QvcG9zdGNsZWFuLnJlcQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi5lNjlkZTI5YmIyCmRpZmYgLS1naXQgYS9lbGYvdHN0LWdsaWJjLWh3Y2Fwcy0yLWNh Y2hlLnNjcmlwdCBiL2VsZi90c3QtZ2xpYmMtaHdjYXBzLTItY2FjaGUuc2NyaXB0Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI5Y2NmYzNiNDkKLS0tIC9kZXYvbnVsbAor KysgYi9lbGYvdHN0LWdsaWJjLWh3Y2Fwcy0yLWNhY2hlLnNjcmlwdApAQCAtMCwwICsxLDYgQEAK KyMgdGVzdC1jb250YWluZXIgZG9lcyBub3Qgc3VwcG9ydCBzY3JpcHRzIGluIHN5c2RlcHMgZGly ZWN0b3JpZXMsIHNvCisjIGNvbGxlY3QgZXZlcnl0aGluZyBpbiBvbmUgZmlsZS4KKworbWtkaXJw IDA3NzAgJEwvZ2xpYmMtaHdjYXBzL3g4Ni02NC12MgorY3AgJEIvZWxmL2xpYng4Ni02NC1pc2Et bGV2ZWwtMS5zbyAkTC9saWJ4ODYtNjQtaXNhLWxldmVsLnNvCitjcCAkQi9lbGYvbGlieDg2LTY0 LWlzYS1sZXZlbC00LnNvICRML2dsaWJjLWh3Y2Fwcy94ODYtNjQtdjIvbGlieDg2LTY0LWlzYS1s ZXZlbC5zbwpkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggYi9zeXNkZXBz L2dlbmVyaWMvZGwtY2FjaGUuaAppbmRleCA3MmE2NmI0NWVlLi4xMTM4MjI4ZTVjIDEwMDY0NAot LS0gYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAorKysgYi9zeXNkZXBzL2dlbmVyaWMvZGwt Y2FjaGUuaApAQCAtMTA2LDE0ICsxMDYsMjMgQEAgc3RydWN0IGZpbGVfZW50cnlfbmV3CiAgICBl bnRyaWVzLiAgKi8KICNkZWZpbmUgRExfQ0FDSEVfSFdDQVBfRVhURU5TSU9OICgxVUxMIDw8IDYy KQogCisvKiBUaGUgbnVtYmVyIG9mIHRoZSBJU0EgbGV2ZWwgYml0cyBpbiB0aGUgdXBwZXIgMzIg Yml0cyBvZiB0aGUgaHdjYXAKKyAgIGZpZWxkLiAgKi8KKyNkZWZpbmUgRExfQ0FDSEVfSFdDQVBf SVNBX0xFVkVMX0NPVU5UIDEwCisKKy8qIFRoZSBtYXNrIG9mIHRoZSBJU0EgbGV2ZWwgYml0cyBp biB0aGUgaHdjYXAgZmllbGQuICAqLworI2RlZmluZSBETF9DQUNIRV9IV0NBUF9JU0FfTEVWRUxf TUFTSyBcCisgICgoMSA8PCBETF9DQUNIRV9IV0NBUF9JU0FfTEVWRUxfQ09VTlQpIC0xKQorCiAv KiBSZXR1cm4gdHJ1ZSBpZiB0aGUgRU5UUlktPmh3Y2FwIHZhbHVlIGluZGljYXRlcyB0aGF0CiAg ICBETF9DQUNIRV9IV0NBUF9FWFRFTlNJT04gaXMgdXNlZC4gICovCiBzdGF0aWMgaW5saW5lIGJv b2wKIGRsX2NhY2hlX2h3Y2FwX2V4dGVuc2lvbiAoc3RydWN0IGZpbGVfZW50cnlfbmV3ICplbnRy eSkKIHsKLSAgLyogSWYgRExfQ0FDSEVfSFdDQVBfRVhURU5TSU9OIGlzIHNldCwgYnV0IG90aGVy IGJpdHMgYXMgd2VsbCwgdGhpcwotICAgICBpcyBhIGRpZmZlcmVudCBraW5kIG9mIGV4dGVuc2lv bi4gICovCi0gIHJldHVybiAoZW50cnktPmh3Y2FwID4+IDMyKSA9PSAoRExfQ0FDSEVfSFdDQVBf RVhURU5TSU9OID4+IDMyKTsKKyAgLyogSWYgRExfQ0FDSEVfSFdDQVBfRVhURU5TSU9OIGlzIHNl dCwgYnV0IG90aGVyIGJpdHMsIGV4Y2VwdCBmb3IgdGhlCisgICAgIElTQSBsZXZlbCBiaXRzLCBh cyB3ZWxsLCB0aGlzIGlzIGEgZGlmZmVyZW50IGtpbmQgb2YgZXh0ZW5zaW9uLiAgKi8KKyAgcmV0 dXJuICgoKGVudHJ5LT5od2NhcCA+PiAzMikgJiB+RExfQ0FDSEVfSFdDQVBfSVNBX0xFVkVMX01B U0spCisJICA9PSAoRExfQ0FDSEVfSFdDQVBfRVhURU5TSU9OID4+IDMyKSk7CiB9CiAKIC8qIFNl ZSBmbGFncyBtZW1iZXIgb2Ygc3RydWN0IGNhY2hlX2ZpbGVfbmV3IGJlbG93LiAgKi8KZGlmZiAt LWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1pc2EtbGV2ZWwuaCBiL3N5c2RlcHMvZ2VuZXJpYy9k bC1pc2EtbGV2ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43Nzcz NTc3NWI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzZGVwcy9nZW5lcmljL2RsLWlzYS1sZXZlbC5o CkBAIC0wLDAgKzEsMjYgQEAKKy8qIFN1cHBvcnQgZm9yIHJlYWRpbmcgSVNBIGxldmVsIGluIC9l dGMvbGQuc28uY2FjaGUgZmlsZXMgd3JpdHRlbiBieQorICAgTGludXggbGRjb25maWcuICBHZW5l cmljIHZlcnNpb24uCisgICBDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKwor ICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGUgR05VIEMg TGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGgg dGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKworLyogUmV0dXJuIHRydWUgaWYgdGhlIElTQSBsZXZlbCBpbiBFTlRS WSBpcyBjb21wYXRpYmxlIHdpdGggQ1BVLiAgKi8KKworc3RhdGljIGlubGluZSBib29sCitkbF9j YWNoZV9od2NhcF9pc2FfbGV2ZWxfY29tcGF0aWJsZSAoc3RydWN0IGZpbGVfZW50cnlfbmV3ICpl bnRyeSkKK3sKKyAgcmV0dXJuIHRydWU7Cit9CmRpZmYgLS1naXQgYS9zeXNkZXBzL2dlbmVyaWMv bGRjb25maWcuaCBiL3N5c2RlcHMvZ2VuZXJpYy9sZGNvbmZpZy5oCmluZGV4IDFhZDE1Mjg4OTAu LmE1ZWQzNTAyMzcgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvZ2VuZXJpYy9sZGNvbmZpZy5oCisrKyBi L3N5c2RlcHMvZ2VuZXJpYy9sZGNvbmZpZy5oCkBAIC03MCw4ICs3MCw5IEBAIGNvbnN0IGNoYXIg KmdsaWJjX2h3Y2Fwc19zdWJkaXJlY3RvcnlfbmFtZQogICAoY29uc3Qgc3RydWN0IGdsaWJjX2h3 Y2Fwc19zdWJkaXJlY3RvcnkgKik7CiAKIGV4dGVybiB2b2lkIGFkZF90b19jYWNoZSAoY29uc3Qg Y2hhciAqcGF0aCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0JCQkgIGNvbnN0IGNoYXIgKnNvbmFt ZSwKLQkJCSAgaW50IGZsYWdzLCB1bnNpZ25lZCBpbnQgb3N2ZXJzaW9uLCB1aW50NjRfdCBod2Nh cCwKKwkJCSAgY29uc3QgY2hhciAqc29uYW1lLCBpbnQgZmxhZ3MsCisJCQkgIHVuc2lnbmVkIGlu dCBvc3ZlcnNpb24sIHVuc2lnbmVkIGludCBpc2FfbGV2ZWwsCisJCQkgIHVpbnQ2NF90IGh3Y2Fw LAogCQkJICBzdHJ1Y3QgZ2xpYmNfaHdjYXBzX3N1YmRpcmVjdG9yeSAqKTsKIAogZXh0ZXJuIHZv aWQgaW5pdF9hdXhfY2FjaGUgKHZvaWQpOwpAQCAtNzksMjMgKzgwLDI4IEBAIGV4dGVybiB2b2lk IGluaXRfYXV4X2NhY2hlICh2b2lkKTsKIGV4dGVybiB2b2lkIGxvYWRfYXV4X2NhY2hlIChjb25z dCBjaGFyICphdXhfY2FjaGVfbmFtZSk7CiAKIGV4dGVybiBpbnQgc2VhcmNoX2F1eF9jYWNoZSAo c3RydWN0IHN0YXQ2NCAqc3RhdF9idWYsIGludCAqZmxhZ3MsCi0JCQkgICAgIHVuc2lnbmVkIGlu dCAqb3N2ZXJzaW9uLCBjaGFyICoqc29uYW1lKTsKKwkJCSAgICAgdW5zaWduZWQgaW50ICpvc3Zl cnNpb24sCisJCQkgICAgIHVuc2lnbmVkIGludCAqaXNhX2xldmVsLCBjaGFyICoqc29uYW1lKTsK IAogZXh0ZXJuIHZvaWQgYWRkX3RvX2F1eF9jYWNoZSAoc3RydWN0IHN0YXQ2NCAqc3RhdF9idWYs IGludCBmbGFncywKLQkJCSAgICAgIHVuc2lnbmVkIGludCBvc3ZlcnNpb24sIGNvbnN0IGNoYXIg KnNvbmFtZSk7CisJCQkgICAgICB1bnNpZ25lZCBpbnQgb3N2ZXJzaW9uLAorCQkJICAgICAgdW5z aWduZWQgaW50IGlzYV9sZXZlbCwgY29uc3QgY2hhciAqc29uYW1lKTsKIAogZXh0ZXJuIHZvaWQg c2F2ZV9hdXhfY2FjaGUgKGNvbnN0IGNoYXIgKmF1eF9jYWNoZV9uYW1lKTsKIAogLyogRGVjbGFy ZWQgaW4gcmVhZGxpYi5jLiAgKi8KIGV4dGVybiBpbnQgcHJvY2Vzc19maWxlIChjb25zdCBjaGFy ICpyZWFsX2ZpbGVfbmFtZSwgY29uc3QgY2hhciAqZmlsZV9uYW1lLAotCQkJIGNvbnN0IGNoYXIg KmxpYiwgaW50ICpmbGFnLCB1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwKLQkJCSBjaGFyICoqc29u YW1lLCBpbnQgaXNfbGluaywgc3RydWN0IHN0YXQ2NCAqc3RhdF9idWYpOworCQkJIGNvbnN0IGNo YXIgKmxpYiwgaW50ICpmbGFnLAorCQkJIHVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLCB1bnNpZ25l ZCBpbnQgKmlzYV9sZXZlbCwKKwkJCSBjaGFyICoqc29uYW1lLCBpbnQgaXNfbGluaywKKwkJCSBz dHJ1Y3Qgc3RhdDY0ICpzdGF0X2J1Zik7CiAKIGV4dGVybiBjaGFyICppbXBsaWNpdF9zb25hbWUg KGNvbnN0IGNoYXIgKmxpYiwgaW50IGZsYWcpOwogCiAvKiBEZWNsYXJlZCBpbiByZWFkZWxmbGli LmMuICAqLwotZXh0ZXJuIGludCBwcm9jZXNzX2VsZl9maWxlIChjb25zdCBjaGFyICpmaWxlX25h bWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkJICAgICB1bnNpZ25lZCBpbnQgKm9z dmVyc2lvbiwgY2hhciAqKnNvbmFtZSwKK2V4dGVybiBpbnQgcHJvY2Vzc19lbGZfZmlsZSAoY29u c3QgY2hhciAqZmlsZV9uYW1lLCBjb25zdCBjaGFyICpsaWIsCisJCQkgICAgIGludCAqZmxhZywg dW5zaWduZWQgaW50ICpvc3ZlcnNpb24sCisJCQkgICAgIHVuc2lnbmVkIGludCAqaXNhX2xldmVs LCBjaGFyICoqc29uYW1lLAogCQkJICAgICB2b2lkICpmaWxlX2NvbnRlbnRzLCBzaXplX3QgZmls ZV9sZW5ndGgpOwogCiAvKiBEZWNsYXJlZCBpbiBjaHJvb3RfY2Fub24uYy4gICovCmRpZmYgLS1n aXQgYS9zeXNkZXBzL2dlbmVyaWMvcmVhZC1wcm9wLmggYi9zeXNkZXBzL2dlbmVyaWMvcmVhZC1w cm9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDkxYmQyZjZjMQot LS0gL2Rldi9udWxsCisrKyBiL3N5c2RlcHMvZ2VuZXJpYy9yZWFkLXByb3AuaApAQCAtMCwwICsx LDM1IEBACisvKiBTdXBwb3J0IGZvciBHTlUgcHJvcGVydGllcyBpbiBsZGNvbmZpZy4gIEdlbmVy aWMgdmVyc2lvbi4KKyAgIENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorCisg ICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBM aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0 aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKyAgIDxodHRwczovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLworCisjaWZuZGVmIF9SRUFEX1BST1BfSAorI2RlZmluZSBfUkVBRF9QUk9Q X0gKKworLyogQ2FsbGVkIGZvciBlYWNoIHByb3BlcnR5IGluIHRoZSBOVF9HTlVfUFJPUEVSVFlf VFlQRV8wIG5vdGUgb2YgU0VHTUVOVC4KKyAgIFJldHVybiB2YWx1ZToKKyAgICAgZmFsc2U6IENv bnRpbnVlIHByb2Nlc3NpbmcgdGhlIHByb3BlcnRpZXMuCisgICAgIHRydWUgOiBTdG9wIHByb2Nl c3NpbmcgdGhlIHByb3BlcnRpZXMuCisgKi8KKworc3RhdGljIGlubGluZSBib29sIF9fYXR0cmli dXRlX18gKChhbHdheXNfaW5saW5lKSkKK3JlYWRfZ251X3Byb3BlcnR5ICh1bnNpZ25lZCBpbnQg KmlzYWxfbGV2ZWwsIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90CisJCSAgIGRhdGFzeiwgdm9pZCAq ZGF0YSkKK3sKKyAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzZGVw cy91bml4L3N5c3YvbGludXgvYXJtL3JlYWRlbGZsaWIuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2FybS9yZWFkZWxmbGliLmMKaW5kZXggOWQwM2ZhNjQwNS4uN2Y0NDRhZGQxNCAxMDA2NDQK LS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL3JlYWRlbGZsaWIuYworKysgYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vcmVhZGVsZmxpYi5jCkBAIC0xOCwxOCArMTgsMjAgQEAK ICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAKLWludCBwcm9jZXNz X2VsZjMyX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqbGliLCBpbnQg KmZsYWcsCi0JCQl1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwgY2hhciAqKnNvbmFtZSwKK2ludCBw cm9jZXNzX2VsZjMyX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqbGli LAorCQkJaW50ICpmbGFnLCB1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwKKwkJCXVuc2lnbmVkIGlu dCAqaXNhX2xldmVsLCBjaGFyICoqc29uYW1lLAogCQkJdm9pZCAqZmlsZV9jb250ZW50cywgc2l6 ZV90IGZpbGVfbGVuZ3RoKTsKLWludCBwcm9jZXNzX2VsZjY0X2ZpbGUgKGNvbnN0IGNoYXIgKmZp bGVfbmFtZSwgY29uc3QgY2hhciAqbGliLCBpbnQgKmZsYWcsCi0JCQl1bnNpZ25lZCBpbnQgKm9z dmVyc2lvbiwgY2hhciAqKnNvbmFtZSwKK2ludCBwcm9jZXNzX2VsZjY0X2ZpbGUgKGNvbnN0IGNo YXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqbGliLAorCQkJaW50ICpmbGFnLCB1bnNpZ25lZCBp bnQgKm9zdmVyc2lvbiwKKwkJCXVuc2lnbmVkIGludCAqaXNhX2xldmVsLCBjaGFyICoqc29uYW1l LAogCQkJdm9pZCAqZmlsZV9jb250ZW50cywgc2l6ZV90IGZpbGVfbGVuZ3RoKTsKIAogLyogUmV0 dXJucyAwIGlmIGV2ZXJ5dGhpbmcgaXMgb2ssICE9IDAgaW4gY2FzZSBvZiBlcnJvci4gICovCiBp bnQKIHByb2Nlc3NfZWxmX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAq bGliLCBpbnQgKmZsYWcsCi0JCSAgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25h bWUsIHZvaWQgKmZpbGVfY29udGVudHMsCi0JCSAgc2l6ZV90IGZpbGVfbGVuZ3RoKQorCQkgIHVu c2lnbmVkIGludCAqb3N2ZXJzaW9uLCB1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwKKwkJICBjaGFy ICoqc29uYW1lLCB2b2lkICpmaWxlX2NvbnRlbnRzLCBzaXplX3QgZmlsZV9sZW5ndGgpCiB7CiAg IEVsZlcoRWhkcikgKmVsZl9oZWFkZXIgPSAoRWxmVyhFaGRyKSAqKSBmaWxlX2NvbnRlbnRzOwog ICBpbnQgcmV0OwpAQCAtMzgsOCArNDAsOCBAQCBwcm9jZXNzX2VsZl9maWxlIChjb25zdCBjaGFy ICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAogICAgIHsKICAgICAgIEVs ZjMyX0VoZHIgKmVsZjMyX2hlYWRlciA9IChFbGYzMl9FaGRyICopIGVsZl9oZWFkZXI7CiAKLSAg ICAgIHJldCA9IHByb2Nlc3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVy c2lvbiwgc29uYW1lLAotCQkJCWZpbGVfY29udGVudHMsIGZpbGVfbGVuZ3RoKTsKKyAgICAgIHJl dCA9IHByb2Nlc3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwg aXNhX2xldmVsLAorCQkJCXNvbmFtZSwgZmlsZV9jb250ZW50cywgZmlsZV9sZW5ndGgpOwogCiAg ICAgICBpZiAoIXJldCAmJiBFRl9BUk1fRUFCSV9WRVJTSU9OIChlbGYzMl9oZWFkZXItPmVfZmxh Z3MpID09IEVGX0FSTV9FQUJJX1ZFUjUpCiAJewpAQCAtNTcsOCArNTksOCBAQCBwcm9jZXNzX2Vs Zl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFn LAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIHJldCA9IHByb2Nlc3NfZWxmNjRfZmlsZSAo ZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgc29uYW1lLAotCQkJCWZpbGVfY29udGVu dHMsIGZpbGVfbGVuZ3RoKTsKKyAgICAgIHJldCA9IHByb2Nlc3NfZWxmNjRfZmlsZSAoZmlsZV9u YW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgaXNhX2xldmVsLAorCQkJCXNvbmFtZSwgZmlsZV9j b250ZW50cywgZmlsZV9sZW5ndGgpOwogICAgICAgLyogQUFyY2g2NCBsaWJyYXJpZXMgYXJlIGFs d2F5cyBsaWJjLnNvLjYrLiAgKi8KICAgICAgIGlmICghcmV0KQogCSpmbGFnID0gRkxBR19BQVJD SDY0X0xJQjY0fEZMQUdfRUxGX0xJQkM2OwpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3Yv bGludXgvaWE2NC9yZWFkZWxmbGliLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L3Jl YWRlbGZsaWIuYwppbmRleCBkMjRhOTM0MzUxLi4xOWQzN2I0MzhlIDEwMDY0NAotLS0gYS9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L3JlYWRlbGZsaWIuYworKysgYi9zeXNkZXBzL3VuaXgv c3lzdi9saW51eC9pYTY0L3JlYWRlbGZsaWIuYwpAQCAtMTYsMjkgKzE2LDMxIEBACiAgICA8aHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogCi1pbnQgcHJvY2Vzc19lbGYzMl9m aWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAot CQkJdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25hbWUsCitpbnQgcHJvY2Vzc19l bGYzMl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwKKwkJCWlu dCAqZmxhZywgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sCisJCQl1bnNpZ25lZCBpbnQgKmlzYV9s ZXZlbCwgY2hhciAqKnNvbmFtZSwKIAkJCXZvaWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxl X2xlbmd0aCk7Ci1pbnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUs IGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkJdW5zaWduZWQgaW50ICpvc3ZlcnNpb24s IGNoYXIgKipzb25hbWUsCitpbnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBjaGFyICpmaWxl X25hbWUsIGNvbnN0IGNoYXIgKmxpYiwKKwkJCWludCAqZmxhZywgdW5zaWduZWQgaW50ICpvc3Zl cnNpb24sCisJCQl1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFtZSwKIAkJCXZv aWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0aCk7CiAKIC8qIFJldHVybnMgMCBp ZiBldmVyeXRoaW5nIGlzIG9rLCAhPSAwIGluIGNhc2Ugb2YgZXJyb3IuICAqLwogaW50CiBwcm9j ZXNzX2VsZl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50 ICpmbGFnLAotCQkgIHVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLCBjaGFyICoqc29uYW1lLAotCQkg IHZvaWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0aCkKKwkJICB1bnNpZ25lZCBp bnQgKm9zdmVyc2lvbiwgdW5zaWduZWQgaW50ICppc2FfbGV2ZWwsCisJCSAgY2hhciAqKnNvbmFt ZSwgdm9pZCAqZmlsZV9jb250ZW50cywgc2l6ZV90IGZpbGVfbGVuZ3RoKQogewogICBFbGZXKEVo ZHIpICplbGZfaGVhZGVyID0gKEVsZlcoRWhkcikgKikgZmlsZV9jb250ZW50czsKICAgaW50IHJl dDsKIAogICBpZiAoZWxmX2hlYWRlci0+ZV9pZGVudCBbRUlfQ0xBU1NdID09IEVMRkNMQVNTMzIp Ci0gICAgcmV0dXJuIHByb2Nlc3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9z dmVyc2lvbiwgc29uYW1lLAotCQkJICAgICAgIGZpbGVfY29udGVudHMsIGZpbGVfbGVuZ3RoKTsK KyAgICByZXR1cm4gcHJvY2Vzc19lbGYzMl9maWxlIChmaWxlX25hbWUsIGxpYiwgZmxhZywgb3N2 ZXJzaW9uLCBpc2FfbGV2ZWwsCisJCQkgICAgICAgc29uYW1lLCBmaWxlX2NvbnRlbnRzLCBmaWxl X2xlbmd0aCk7CiAgIGVsc2UKICAgICB7Ci0gICAgICByZXQgPSBwcm9jZXNzX2VsZjY0X2ZpbGUg KGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIHNvbmFtZSwKLQkJCQlmaWxlX2NvbnRl bnRzLCBmaWxlX2xlbmd0aCk7CisgICAgICByZXQgPSBwcm9jZXNzX2VsZjY0X2ZpbGUgKGZpbGVf bmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIGlzYV9sZXZlbCwKKwkJCQlzb25hbWUsIGZpbGVf Y29udGVudHMsIGZpbGVfbGVuZ3RoKTsKICAgICAgIC8qIEludGVsIDY0Yml0IGxpYnJhcmllcyBh cmUgYWx3YXlzIGxpYmMuc28uNisuICAqLwogICAgICAgaWYgKCFyZXQpCiAJKmZsYWcgPSBGTEFH X0lBNjRfTElCNjR8RkxBR19FTEZfTElCQzY7CmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lz di9saW51eC9taXBzL3JlYWRlbGZsaWIuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMv cmVhZGVsZmxpYi5jCmluZGV4IDgzNjNiOGFmY2MuLmEzMzk5OTYxYzkgMTAwNjQ0Ci0tLSBhL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvcmVhZGVsZmxpYi5jCisrKyBiL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L21pcHMvcmVhZGVsZmxpYi5jCkBAIC0yMCwxOCArMjAsMjAgQEAKICAgIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAKLWludCBwcm9jZXNzX2VsZjMy X2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqbGliLCBpbnQgKmZsYWcs Ci0JCQl1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwgY2hhciAqKnNvbmFtZSwKK2ludCBwcm9jZXNz X2VsZjMyX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqbGliLAorCQkJ aW50ICpmbGFnLCB1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwKKwkJCXVuc2lnbmVkIGludCAqaXNh X2xldmVsLCBjaGFyICoqc29uYW1lLAogCQkJdm9pZCAqZmlsZV9jb250ZW50cywgc2l6ZV90IGZp bGVfbGVuZ3RoKTsKLWludCBwcm9jZXNzX2VsZjY0X2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFt ZSwgY29uc3QgY2hhciAqbGliLCBpbnQgKmZsYWcsCi0JCQl1bnNpZ25lZCBpbnQgKm9zdmVyc2lv biwgY2hhciAqKnNvbmFtZSwKK2ludCBwcm9jZXNzX2VsZjY0X2ZpbGUgKGNvbnN0IGNoYXIgKmZp bGVfbmFtZSwgY29uc3QgY2hhciAqbGliLAorCQkJaW50ICpmbGFnLCB1bnNpZ25lZCBpbnQgKm9z dmVyc2lvbiwKKwkJCXVuc2lnbmVkIGludCAqaXNhX2xldmVsLCBjaGFyICoqc29uYW1lLAogCQkJ dm9pZCAqZmlsZV9jb250ZW50cywgc2l6ZV90IGZpbGVfbGVuZ3RoKTsKIAogLyogUmV0dXJucyAw IGlmIGV2ZXJ5dGhpbmcgaXMgb2ssICE9IDAgaW4gY2FzZSBvZiBlcnJvci4gICovCiBpbnQKIHBy b2Nlc3NfZWxmX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqbGliLCBp bnQgKmZsYWcsCi0JCSAgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25hbWUsIHZv aWQgKmZpbGVfY29udGVudHMsCi0JCSAgc2l6ZV90IGZpbGVfbGVuZ3RoKQorCQkgIHVuc2lnbmVk IGludCAqb3N2ZXJzaW9uLCB1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwKKwkJICBjaGFyICoqc29u YW1lLCB2b2lkICpmaWxlX2NvbnRlbnRzLCBzaXplX3QgZmlsZV9sZW5ndGgpCiB7CiAgIHVuaW9u CiAgICAgewpAQCAtNDUsOCArNDcsOCBAQCBwcm9jZXNzX2VsZl9maWxlIChjb25zdCBjaGFyICpm aWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAogICBlbGZfaGVhZGVyLmVoID0g ZmlsZV9jb250ZW50czsKICAgaWYgKGVsZl9oZWFkZXIuZWgtPmVfaWRlbnQgW0VJX0NMQVNTXSA9 PSBFTEZDTEFTUzMyKQogICAgIHsKLSAgICAgIHJldCA9IHByb2Nlc3NfZWxmMzJfZmlsZSAoZmls ZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgc29uYW1lLAotCQkJCWZpbGVfY29udGVudHMs IGZpbGVfbGVuZ3RoKTsKKyAgICAgIHJldCA9IHByb2Nlc3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1l LCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgaXNhX2xldmVsLAorCQkJCXNvbmFtZSwgZmlsZV9jb250 ZW50cywgZmlsZV9sZW5ndGgpOwogICAgICAgaWYgKCFyZXQpCiAJewogCSAgRWxmMzJfV29yZCBm bGFncyA9IGVsZl9oZWFkZXIuZWgzMi0+ZV9mbGFnczsKQEAgLTYyLDggKzY0LDggQEAgcHJvY2Vz c19lbGZfZmlsZSAoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBjb25zdCBjaGFyICpsaWIsIGludCAq ZmxhZywKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICByZXQgPSBwcm9jZXNzX2VsZjY0X2Zp bGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIHNvbmFtZSwKLQkJCQlmaWxlX2Nv bnRlbnRzLCBmaWxlX2xlbmd0aCk7CisgICAgICByZXQgPSBwcm9jZXNzX2VsZjY0X2ZpbGUgKGZp bGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIGlzYV9sZXZlbCwKKwkJCQlzb25hbWUsIGZp bGVfY29udGVudHMsIGZpbGVfbGVuZ3RoKTsKICAgICAgIC8qIG42NCBsaWJyYXJpZXMgYXJlIGFs d2F5cyBsaWJjLnNvLjYrLiAgKi8KICAgICAgIGlmICghcmV0KQogCXsKZGlmZiAtLWdpdCBhL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcmVhZGVsZmxpYi5jIGIvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvcG93ZXJwYy9yZWFkZWxmbGliLmMKaW5kZXggZWIyMDY4MDQxOC4uY2UwMTY1 OGZiMyAxMDA2NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9yZWFkZWxm bGliLmMKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9yZWFkZWxmbGliLmMK QEAgLTE3LDI5ICsxNywzMSBAQAogICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCiAKIAotaW50IHByb2Nlc3NfZWxmMzJfZmlsZSAoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBj b25zdCBjaGFyICpsaWIsIGludCAqZmxhZywKLQkJCXVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLCBj aGFyICoqc29uYW1lLAoraW50IHByb2Nlc3NfZWxmMzJfZmlsZSAoY29uc3QgY2hhciAqZmlsZV9u YW1lLCBjb25zdCBjaGFyICpsaWIsCisJCQlpbnQgKmZsYWcsIHVuc2lnbmVkIGludCAqb3N2ZXJz aW9uLAorCQkJdW5zaWduZWQgaW50ICppc2FfbGV2ZWwsIGNoYXIgKipzb25hbWUsCiAJCQl2b2lk ICpmaWxlX2NvbnRlbnRzLCBzaXplX3QgZmlsZV9sZW5ndGgpOwotaW50IHByb2Nlc3NfZWxmNjRf ZmlsZSAoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBjb25zdCBjaGFyICpsaWIsIGludCAqZmxhZywK LQkJCXVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLCBjaGFyICoqc29uYW1lLAoraW50IHByb2Nlc3Nf ZWxmNjRfZmlsZSAoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBjb25zdCBjaGFyICpsaWIsCisJCQlp bnQgKmZsYWcsIHVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLAorCQkJdW5zaWduZWQgaW50ICppc2Ff bGV2ZWwsIGNoYXIgKipzb25hbWUsCiAJCQl2b2lkICpmaWxlX2NvbnRlbnRzLCBzaXplX3QgZmls ZV9sZW5ndGgpOwogCiAvKiBSZXR1cm5zIDAgaWYgZXZlcnl0aGluZyBpcyBvaywgIT0gMCBpbiBj YXNlIG9mIGVycm9yLiAgKi8KIGludAogcHJvY2Vzc19lbGZfZmlsZSAoY29uc3QgY2hhciAqZmls ZV9uYW1lLCBjb25zdCBjaGFyICpsaWIsIGludCAqZmxhZywKLQkJICB1bnNpZ25lZCBpbnQgKm9z dmVyc2lvbiwgY2hhciAqKnNvbmFtZSwgdm9pZCAqZmlsZV9jb250ZW50cywKLQkJICBzaXplX3Qg ZmlsZV9sZW5ndGgpCisJCSAgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIHVuc2lnbmVkIGludCAq aXNhX2xldmVsLAorCQkgIGNoYXIgKipzb25hbWUsIHZvaWQgKmZpbGVfY29udGVudHMsIHNpemVf dCBmaWxlX2xlbmd0aCkKIHsKICAgRWxmVyhFaGRyKSAqZWxmX2hlYWRlciA9IChFbGZXKEVoZHIp ICopIGZpbGVfY29udGVudHM7CiAgIGludCByZXQ7CiAKICAgaWYgKGVsZl9oZWFkZXItPmVfaWRl bnQgW0VJX0NMQVNTXSA9PSBFTEZDTEFTUzMyKQotICAgIHJldHVybiBwcm9jZXNzX2VsZjMyX2Zp bGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIHNvbmFtZSwKLQkJCSAgICAgICBm aWxlX2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CisgICAgcmV0dXJuIHByb2Nlc3NfZWxmMzJfZmls ZSAoZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgaXNhX2xldmVsLAorCQkJICAgICAg IHNvbmFtZSwgZmlsZV9jb250ZW50cywgZmlsZV9sZW5ndGgpOwogICBlbHNlCiAgICAgewotICAg ICAgcmV0ID0gcHJvY2Vzc19lbGY2NF9maWxlIChmaWxlX25hbWUsIGxpYiwgZmxhZywgb3N2ZXJz aW9uLCBzb25hbWUsCi0JCQkJZmlsZV9jb250ZW50cywgZmlsZV9sZW5ndGgpOworICAgICAgcmV0 ID0gcHJvY2Vzc19lbGY2NF9maWxlIChmaWxlX25hbWUsIGxpYiwgZmxhZywgb3N2ZXJzaW9uLCBp c2FfbGV2ZWwsCisJCQkJc29uYW1lLCBmaWxlX2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CiAgICAg ICAvKiBQb3dlclBDIDY0Yml0IGxpYnJhcmllcyBhcmUgYWx3YXlzIGxpYmMuc28uNisuICAqLwog ICAgICAgaWYgKCFyZXQpCiAJKmZsYWcgPSBGTEFHX1BPV0VSUENfTElCNjR8RkxBR19FTEZfTElC QzY7CmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9yaXNjdi9yZWFkZWxmbGli LmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9yaXNjdi9yZWFkZWxmbGliLmMKaW5kZXggMWU3 MDczNWNjMC4uOThhZTNjMGIyYiAxMDA2NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgv cmlzY3YvcmVhZGVsZmxpYi5jCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Jpc2N2L3Jl YWRlbGZsaWIuYwpAQCAtMTcsMTEgKzE3LDEzIEBACiAgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KIAogCi1pbnQgcHJvY2Vzc19lbGYzMl9maWxlIChjb25zdCBjaGFyICpm aWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkJdW5zaWduZWQgaW50ICpv c3ZlcnNpb24sIGNoYXIgKipzb25hbWUsCitpbnQgcHJvY2Vzc19lbGYzMl9maWxlIChjb25zdCBj aGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwKKwkJCWludCAqZmxhZywgdW5zaWduZWQg aW50ICpvc3ZlcnNpb24sCisJCQl1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFt ZSwKIAkJCXZvaWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0aCk7Ci1pbnQgcHJv Y2Vzc19lbGY2NF9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwg aW50ICpmbGFnLAotCQkJdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25hbWUsCitp bnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIg KmxpYiwKKwkJCWludCAqZmxhZywgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sCisJCQl1bnNpZ25l ZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFtZSwKIAkJCXZvaWQgKmZpbGVfY29udGVudHMs IHNpemVfdCBmaWxlX2xlbmd0aCk7CiAKIC8qIFRoZSBFTEYgZmxhZ3Mgc3VwcG9ydGVkIGJ5IG91 ciBjdXJyZW50IGdsaWJjIHBvcnQ6CkBAIC0zOCw4ICs0MCw4IEBAIGludCBwcm9jZXNzX2VsZjY0 X2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgY29uc3QgY2hhciAqbGliLCBpbnQgKmZsYWcs CiAvKiBSZXR1cm5zIDAgaWYgZXZlcnl0aGluZyBpcyBvaywgIT0gMCBpbiBjYXNlIG9mIGVycm9y LiAgKi8KIGludAogcHJvY2Vzc19lbGZfZmlsZSAoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBjb25z dCBjaGFyICpsaWIsIGludCAqZmxhZywKLQkJICB1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwgY2hh ciAqKnNvbmFtZSwgdm9pZCAqZmlsZV9jb250ZW50cywKLQkJICBzaXplX3QgZmlsZV9sZW5ndGgp CisJCSAgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIHVuc2lnbmVkIGludCAqaXNhX2xldmVsLAor CQkgIGNoYXIgKipzb25hbWUsIHZvaWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0 aCkKIHsKICAgRWxmVyhFaGRyKSAqZWxmX2hlYWRlciA9IChFbGZXKEVoZHIpICopIGZpbGVfY29u dGVudHM7CiAgIEVsZjMyX0VoZHIgKmVsZjMyX2hlYWRlciA9IChFbGYzMl9FaGRyICopIGVsZl9o ZWFkZXI7CkBAIC01MiwxNCArNTQsMTQgQEAgcHJvY2Vzc19lbGZfZmlsZSAoY29uc3QgY2hhciAq ZmlsZV9uYW1lLCBjb25zdCBjaGFyICpsaWIsIGludCAqZmxhZywKIAogICBpZiAoZWxmX2hlYWRl ci0+ZV9pZGVudCBbRUlfQ0xBU1NdID09IEVMRkNMQVNTMzIpCiAgICAgewotICAgICAgcmV0ID0g cHJvY2Vzc19lbGYzMl9maWxlIChmaWxlX25hbWUsIGxpYiwgZmxhZywgb3N2ZXJzaW9uLCBzb25h bWUsCi0JCQkJZmlsZV9jb250ZW50cywgZmlsZV9sZW5ndGgpOworICAgICAgcmV0ID0gcHJvY2Vz c19lbGYzMl9maWxlIChmaWxlX25hbWUsIGxpYiwgZmxhZywgb3N2ZXJzaW9uLCBpc2FfbGV2ZWws CisJCQkJc29uYW1lLCBmaWxlX2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CiAgICAgICBmbGFncyA9 IGVsZjMyX2hlYWRlci0+ZV9mbGFnczsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICByZXQg PSBwcm9jZXNzX2VsZjY0X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIHNv bmFtZSwKLQkJCQlmaWxlX2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CisgICAgICByZXQgPSBwcm9j ZXNzX2VsZjY0X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIGlzYV9sZXZl bCwKKwkJCQlzb25hbWUsIGZpbGVfY29udGVudHMsIGZpbGVfbGVuZ3RoKTsKICAgICAgIGZsYWdz ID0gZWxmNjRfaGVhZGVyLT5lX2ZsYWdzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvczM5MC9yZWFkZWxmbGliLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9zMzkwL3JlYWRlbGZsaWIuYwppbmRleCAxNzE4ZWZjOWY5Li42ZDE5ZTM1MWJhIDEwMDY0NAot LS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zMzkwL3JlYWRlbGZsaWIuYworKysgYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9zMzkwL3JlYWRlbGZsaWIuYwpAQCAtMTYsMjkgKzE2LDMxIEBA CiAgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogCi1pbnQgcHJvY2Vz c19lbGYzMl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50 ICpmbGFnLAotCQkJdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25hbWUsCitpbnQg cHJvY2Vzc19lbGYzMl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxp YiwKKwkJCWludCAqZmxhZywgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sCisJCQl1bnNpZ25lZCBp bnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFtZSwKIAkJCXZvaWQgKmZpbGVfY29udGVudHMsIHNp emVfdCBmaWxlX2xlbmd0aCk7Ci1pbnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBjaGFyICpm aWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkJdW5zaWduZWQgaW50ICpv c3ZlcnNpb24sIGNoYXIgKipzb25hbWUsCitpbnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBj aGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwKKwkJCWludCAqZmxhZywgdW5zaWduZWQg aW50ICpvc3ZlcnNpb24sCisJCQl1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFt ZSwKIAkJCXZvaWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0aCk7CiAKIC8qIFJl dHVybnMgMCBpZiBldmVyeXRoaW5nIGlzIG9rLCAhPSAwIGluIGNhc2Ugb2YgZXJyb3IuICAqLwog aW50CiBwcm9jZXNzX2VsZl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIg KmxpYiwgaW50ICpmbGFnLAotCQkgIHVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLCBjaGFyICoqc29u YW1lLCB2b2lkICpmaWxlX2NvbnRlbnRzLAotCQkgIHNpemVfdCBmaWxlX2xlbmd0aCkKKwkJICB1 bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwgdW5zaWduZWQgaW50ICppc2FfbGV2ZWwsCisJCSAgY2hh ciAqKnNvbmFtZSwgdm9pZCAqZmlsZV9jb250ZW50cywgc2l6ZV90IGZpbGVfbGVuZ3RoKQogewog ICBFbGZXKEVoZHIpICplbGZfaGVhZGVyID0gKEVsZlcoRWhkcikgKikgZmlsZV9jb250ZW50czsK ICAgaW50IHJldDsKIAogICBpZiAoZWxmX2hlYWRlci0+ZV9pZGVudCBbRUlfQ0xBU1NdID09IEVM RkNMQVNTMzIpCi0gICAgcmV0dXJuIHByb2Nlc3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1lLCBsaWIs IGZsYWcsIG9zdmVyc2lvbiwgc29uYW1lLAotCQkJICAgICAgIGZpbGVfY29udGVudHMsIGZpbGVf bGVuZ3RoKTsKKyAgICByZXR1cm4gcHJvY2Vzc19lbGYzMl9maWxlIChmaWxlX25hbWUsIGxpYiwg ZmxhZywgb3N2ZXJzaW9uLCBpc2FfbGV2ZWwsCisJCQkgICAgICAgc29uYW1lLCBmaWxlX2NvbnRl bnRzLCBmaWxlX2xlbmd0aCk7CiAgIGVsc2UKICAgICB7Ci0gICAgICByZXQgPSBwcm9jZXNzX2Vs ZjY0X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIHNvbmFtZSwKLQkJCQlm aWxlX2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CisgICAgICByZXQgPSBwcm9jZXNzX2VsZjY0X2Zp bGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIGlzYV9sZXZlbCwKKwkJCQlzb25h bWUsIGZpbGVfY29udGVudHMsIGZpbGVfbGVuZ3RoKTsKICAgICAgIC8qIFMvMzkwIDY0Yml0IGxp YnJhcmllcyBhcmUgYWx3YXlzIGxpYmMuc28uNisuICAqLwogICAgICAgaWYgKCFyZXQpCiAJKmZs YWcgPSBGTEFHX1MzOTBfTElCNjR8RkxBR19FTEZfTElCQzY7CmRpZmYgLS1naXQgYS9zeXNkZXBz L3VuaXgvc3lzdi9saW51eC9zcGFyYy9yZWFkZWxmbGliLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9zcGFyYy9yZWFkZWxmbGliLmMKaW5kZXggZTAyN2ExMWEzNy4uMzc2ODAwMzkyNSAxMDA2 NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3BhcmMvcmVhZGVsZmxpYi5jCisrKyBi L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NwYXJjL3JlYWRlbGZsaWIuYwpAQCAtMTgsMjkgKzE4 LDMxIEBACiAgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogCi1pbnQg cHJvY2Vzc19lbGYzMl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxp YiwgaW50ICpmbGFnLAotCQkJdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25hbWUs CitpbnQgcHJvY2Vzc19lbGYzMl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNo YXIgKmxpYiwKKwkJCWludCAqZmxhZywgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sCisJCQl1bnNp Z25lZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFtZSwKIAkJCXZvaWQgKmZpbGVfY29udGVu dHMsIHNpemVfdCBmaWxlX2xlbmd0aCk7Ci1pbnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBj aGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkJdW5zaWduZWQg aW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25hbWUsCitpbnQgcHJvY2Vzc19lbGY2NF9maWxlIChj b25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwKKwkJCWludCAqZmxhZywgdW5z aWduZWQgaW50ICpvc3ZlcnNpb24sCisJCQl1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAq KnNvbmFtZSwKIAkJCXZvaWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0aCk7CiAK IC8qIFJldHVybnMgMCBpZiBldmVyeXRoaW5nIGlzIG9rLCAhPSAwIGluIGNhc2Ugb2YgZXJyb3Iu ICAqLwogaW50CiBwcm9jZXNzX2VsZl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0 IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkgIHVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLCBjaGFy ICoqc29uYW1lLCB2b2lkICpmaWxlX2NvbnRlbnRzLAotCQkgIHNpemVfdCBmaWxlX2xlbmd0aCkK KwkJICB1bnNpZ25lZCBpbnQgKm9zdmVyc2lvbiwgdW5zaWduZWQgaW50ICppc2FfbGV2ZWwsCisJ CSAgY2hhciAqKnNvbmFtZSwgdm9pZCAqZmlsZV9jb250ZW50cywgc2l6ZV90IGZpbGVfbGVuZ3Ro KQogewogICBFbGZXKEVoZHIpICplbGZfaGVhZGVyID0gKEVsZlcoRWhkcikgKikgZmlsZV9jb250 ZW50czsKICAgaW50IHJldDsKIAogICBpZiAoZWxmX2hlYWRlci0+ZV9pZGVudCBbRUlfQ0xBU1Nd ID09IEVMRkNMQVNTMzIpCi0gICAgcmV0dXJuIHByb2Nlc3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1l LCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgc29uYW1lLAotCQkJICAgICAgIGZpbGVfY29udGVudHMs IGZpbGVfbGVuZ3RoKTsKKyAgICByZXR1cm4gcHJvY2Vzc19lbGYzMl9maWxlIChmaWxlX25hbWUs IGxpYiwgZmxhZywgb3N2ZXJzaW9uLCBpc2FfbGV2ZWwsCisJCQkgICAgICAgc29uYW1lLCBmaWxl X2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CiAgIGVsc2UKICAgICB7Ci0gICAgICByZXQgPSBwcm9j ZXNzX2VsZjY0X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIHNvbmFtZSwK LQkJCQlmaWxlX2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CisgICAgICByZXQgPSBwcm9jZXNzX2Vs ZjY0X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNpb24sIGlzYV9sZXZlbCwKKwkJ CQlzb25hbWUsIGZpbGVfY29udGVudHMsIGZpbGVfbGVuZ3RoKTsKICAgICAgIC8qIFNwYXJjIDY0 Yml0IGxpYnJhcmllcyBhcmUgYWx3YXlzIGxpYmMuc28uNisuICAqLwogICAgICAgaWYgKCFyZXQp CiAJKmZsYWcgPSBGTEFHX1NQQVJDX0xJQjY0fEZMQUdfRUxGX0xJQkM2OwpkaWZmIC0tZ2l0IGEv c3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2L3JlYWQtcHJvcC5oIGIvc3lzZGVwcy91bml4L3N5 c3YvbGludXgveDg2L3JlYWQtcHJvcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmFjMzdmYmM0NDkKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC94ODYvcmVhZC1wcm9wLmgKQEAgLTAsMCArMSw2MSBAQAorLyogU3VwcG9ydCBmb3IgR05V IHByb3BlcnRpZXMgaW4gbGRjb25maWcuICB4ODYgdmVyc2lvbi4KKyAgIENvcHlyaWdodCAoQykg MjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUK KyAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWZuZGVmIF9SRUFE X1BST1BfSAorI2RlZmluZSBfUkVBRF9QUk9QX0gKKworI2luY2x1ZGUgPGRsLWNhY2hlLmg+CisK Ky8qIENhbGxlZCBmb3IgZWFjaCBwcm9wZXJ0eSBpbiB0aGUgTlRfR05VX1BST1BFUlRZX1RZUEVf MCBub3RlIG9mIFNFR01FTlQuCisgICBSZXR1cm4gdmFsdWU6CisgICAgIGZhbHNlOiBDb250aW51 ZSBwcm9jZXNzaW5nIHRoZSBwcm9wZXJ0aWVzLgorICAgICB0cnVlIDogU3RvcCBwcm9jZXNzaW5n IHRoZSBwcm9wZXJ0aWVzLgorICovCisKK3N0YXRpYyBpbmxpbmUgYm9vbCBfX2F0dHJpYnV0ZV9f ICgoYWx3YXlzX2lubGluZSkpCityZWFkX2dudV9wcm9wZXJ0eSAodW5zaWduZWQgaW50ICppc2Fs X2xldmVsLCB1aW50MzJfdCB0eXBlLAorCQkgICB1aW50MzJfdCBkYXRhc3osIHZvaWQgKmRhdGEp Cit7CisgIC8qIFByb3BlcnR5IHR5cGUgbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIuICAqLwor ICBpZiAodHlwZSA+IEdOVV9QUk9QRVJUWV9YODZfSVNBXzFfTkVFREVEKQorICAgIHJldHVybiB0 cnVlOworCisgIGlmICh0eXBlID09IEdOVV9QUk9QRVJUWV9YODZfSVNBXzFfTkVFREVEKQorICAg IHsKKyAgICAgIGlmIChkYXRhc3ogPT0gNCkKKwl7CisJICAvKiBUaGUgc2l6ZSBvZiBHTlVfUFJP UEVSVFlfWDg2X0lTQV8xX05FRURFRCBtdXN0IGJlIDQgYnl0ZXMuCisJICAgICBUaGVyZSBpcyBu byBwb2ludCB0byBjb250aW51ZSBpZiB0aGlzIHR5cGUgaXMgaWxsLWZvcm1lZC4gICovCisJICB1 bnNpZ25lZCBpbnQgaXNhXzFfbmVlZGVkID0gKih1bnNpZ25lZCBpbnQgKikgZGF0YTsKKwkgIF9T dGF0aWNfYXNzZXJ0ICgoKHNpemVvZiAoaXNhXzFfbmVlZGVkKSAqIDgpCisJCQkgICA8PSAoMSA8 PCBETF9DQUNIRV9IV0NBUF9JU0FfTEVWRUxfQ09VTlQpKSwKKwkJCSAgIkRMX0NBQ0hFX0hXQ0FQ X0lTQV9MRVZFTF9DT1VOVCBpcyB0b28gc21hbGwiKTsKKwkgIGlmIChpc2FfMV9uZWVkZWQpCisJ ICAgIHsKKwkgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWw7CisJICAgICAgYXNtICgiYnNyICUxLCAl MCIgOiAiPXIiIChsZXZlbCkgOiAiZyIgKGlzYV8xX25lZWRlZCkpOworCSAgICAgICppc2FsX2xl dmVsID0gbGV2ZWw7CisJICAgIH0KKwl9CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg cmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L3g4Ni9yZWFkZWxmbGliLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODYvcmVh ZGVsZmxpYi5jCmluZGV4IDNlODM0MTlmNWIuLjcxNjYyOWJmMTAgMTAwNjQ0Ci0tLSBhL3N5c2Rl cHMvdW5peC9zeXN2L2xpbnV4L3g4Ni9yZWFkZWxmbGliLmMKKysrIGIvc3lzZGVwcy91bml4L3N5 c3YvbGludXgveDg2L3JlYWRlbGZsaWIuYwpAQCAtMTcsMTkgKzE3LDIwIEBACiAgICBMaWNlbnNl IGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCiAgICA8aHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAotCi1pbnQgcHJvY2Vzc19lbGYzMl9maWxlIChj b25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkJdW5z aWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIgKipzb25hbWUsCitpbnQgcHJvY2Vzc19lbGYzMl9m aWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwKKwkJCWludCAqZmxh ZywgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sCisJCQl1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwg Y2hhciAqKnNvbmFtZSwKIAkJCXZvaWQgKmZpbGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0 aCk7Ci1pbnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0 IGNoYXIgKmxpYiwgaW50ICpmbGFnLAotCQkJdW5zaWduZWQgaW50ICpvc3ZlcnNpb24sIGNoYXIg Kipzb25hbWUsCitpbnQgcHJvY2Vzc19lbGY2NF9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUs IGNvbnN0IGNoYXIgKmxpYiwKKwkJCWludCAqZmxhZywgdW5zaWduZWQgaW50ICpvc3ZlcnNpb24s CisJCQl1bnNpZ25lZCBpbnQgKmlzYV9sZXZlbCwgY2hhciAqKnNvbmFtZSwKIAkJCXZvaWQgKmZp bGVfY29udGVudHMsIHNpemVfdCBmaWxlX2xlbmd0aCk7CiAKIC8qIFJldHVybnMgMCBpZiBldmVy eXRoaW5nIGlzIG9rLCAhPSAwIGluIGNhc2Ugb2YgZXJyb3IuICAqLwogaW50CiBwcm9jZXNzX2Vs Zl9maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUsIGNvbnN0IGNoYXIgKmxpYiwgaW50ICpmbGFn LAotCQkgIHVuc2lnbmVkIGludCAqb3N2ZXJzaW9uLCBjaGFyICoqc29uYW1lLCB2b2lkICpmaWxl X2NvbnRlbnRzLAotCQkgIHNpemVfdCBmaWxlX2xlbmd0aCkKKwkJICB1bnNpZ25lZCBpbnQgKm9z dmVyc2lvbiwgdW5zaWduZWQgaW50ICppc2FfbGV2ZWwsCisJCSAgY2hhciAqKnNvbmFtZSwgdm9p ZCAqZmlsZV9jb250ZW50cywgc2l6ZV90IGZpbGVfbGVuZ3RoKQogewogICBFbGZXKEVoZHIpICpl bGZfaGVhZGVyID0gKEVsZlcoRWhkcikgKikgZmlsZV9jb250ZW50czsKICAgaW50IHJldCwgZmls ZV9mbGFnID0gMDsKQEAgLTY4LDExICs2OSwxMSBAQCBmYWlsZWQ6CiAgICAgfQogCiAgIGlmIChl bGZfaGVhZGVyLT5lX2lkZW50W0VJX0NMQVNTXSA9PSBFTEZDTEFTUzMyKQotICAgIHJldCA9IHBy b2Nlc3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgc29uYW1l LAotCQkJICAgICAgZmlsZV9jb250ZW50cywgZmlsZV9sZW5ndGgpOworICAgIHJldCA9IHByb2Nl c3NfZWxmMzJfZmlsZSAoZmlsZV9uYW1lLCBsaWIsIGZsYWcsIG9zdmVyc2lvbiwgaXNhX2xldmVs LAorCQkJICAgICAgc29uYW1lLCBmaWxlX2NvbnRlbnRzLCBmaWxlX2xlbmd0aCk7CiAgIGVsc2UK LSAgICByZXQgPSBwcm9jZXNzX2VsZjY0X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3Zl cnNpb24sIHNvbmFtZSwKLQkJCSAgICAgIGZpbGVfY29udGVudHMsIGZpbGVfbGVuZ3RoKTsKKyAg ICByZXQgPSBwcm9jZXNzX2VsZjY0X2ZpbGUgKGZpbGVfbmFtZSwgbGliLCBmbGFnLCBvc3ZlcnNp b24sIGlzYV9sZXZlbCwKKwkJCSAgICAgIHNvbmFtZSwgZmlsZV9jb250ZW50cywgZmlsZV9sZW5n dGgpOwogCiAgIGlmICghcmV0ICYmIGZpbGVfZmxhZykKICAgICAqZmxhZyA9IGZpbGVfZmxhZzsK ZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9NYWtlZmlsZSBiL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9NYWtlZmlsZQppbmRleCA5YjgyMTU1MzkzLi45 YTdiM2NkOGU1IDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvTWFr ZWZpbGUKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L01ha2VmaWxlCkBAIC0x MywzICsxMywzNCBAQCBlbmRpZgogaWZlcSAoJChzdWJkaXIpLG1pc2MpCiBnZW4tYXMtY29uc3Qt aGVhZGVycyArPSBzaWdhbHRzdGFjay1vZmZzZXRzLnN5bQogZW5kaWYKKworaWZlcSAoJChzdWJk aXIpLGVsZikKK2lmZXEgKHllc3llcywkKGVuYWJsZS14ODYtaXNhLWxldmVsKSQoY29uZmlnLWNm bGFncy1za3lsYWtlLWF2eDUxMikpCit0ZXN0cyArPSB0c3QtZ2xpYmMtaHdjYXBzLTIKK2lmZXEg KG5vLCQoYnVpbGQtaGFyZGNvZGVkLXBhdGgtaW4tdGVzdHMpKQorIyBUaGlzIGlzIGFuIGxkLnNv LmNhY2hlIHRlc3QsIGFuZCBSUEFUSC9SVU5QQVRIIGluIHRoZSBleGVjdXRhYmxlCisjIGludGVy ZmVyZXMgd2l0aCBpdHMgdGVzdCBvYmplY3RpdmVzLgordGVzdHMtY29udGFpbmVyICs9IHRzdC1n bGliYy1od2NhcHMtMi1jYWNoZQorZW5kaWYKK21vZHVsZXMtbmFtZXMgKz0gbGlieDg2LTY0LWlz YS1sZXZlbC0xIGxpYng4Ni02NC1pc2EtbGV2ZWwtNAorCiskKG9ianBmeCl0c3QtZ2xpYmMtaHdj YXBzLTI6ICQob2JqcGZ4KWxpYng4Ni02NC1pc2EtbGV2ZWwuc28KKworJChvYmpwZngpdHN0LWds aWJjLWh3Y2Fwcy0yLm91dDogXAorICAkKG9ianBmeClnbGliYy1od2NhcHMveDg2LTY0LXY0L2xp Yng4Ni02NC1pc2EtbGV2ZWwuc28KKyQob2JqcGZ4KWdsaWJjLWh3Y2Fwcy94ODYtNjQtdjQvbGli eDg2LTY0LWlzYS1sZXZlbC5zbzogXAorICAkKG9ianBmeClsaWJ4ODYtNjQtaXNhLWxldmVsLTQu c28KKwljcCAkPCAkQAorCitDRkxBR1MtbGlieDg2LTY0LWlzYS1sZXZlbC0xLm9zICs9IC1tYXJj aD14ODYtNjQKK0NGTEFHUy1saWJ4ODYtNjQtaXNhLWxldmVsLTQub3MgKz0gLW1hcmNoPXNreWxh a2UtYXZ4NTEyCisKKyMgVGhlIHRlc3QgbW9kdWxlcyBhcmUgcGFyYW1ldGVyaXplZCBieSBwcmVw cm9jZXNzb3IgbWFjcm9zLgorTERGTEFHUy1saWJ4ODYtNjQtaXNhLWxldmVsLTEuc28gKz0gLVds LC1zb25hbWUsbGlieDg2LTY0LWlzYS1sZXZlbC5zbworTERGTEFHUy1saWJ4ODYtNjQtaXNhLWxl dmVsLTQuc28gKz0gLVdsLC1zb25hbWUsbGlieDg2LTY0LWlzYS1sZXZlbC5zbworJChvYmpwZngp bGlieDg2LTY0LWlzYS1sZXZlbCUub3M6ICQoLi4pL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4 Nl82NC94ODYtNjQtaXNhLWxldmVsLVZBTFVFLmMKKwkkKGNvbXBpbGUtY29tbWFuZC5jKSAtRFZB TFVFPSQobGFzdHdvcmQgJChzdWJzdCAtLCAsJCopKQorJChvYmpwZngpbGlieDg2LTY0LWlzYS1s ZXZlbC5zbzogJChvYmpwZngpbGlieDg2LTY0LWlzYS1sZXZlbC0xLnNvCisJY3AgJDwgJEAKK2Vu ZGlmCitlbmRpZiAjICQoc3ViZGlyKSA9PSBlbGYKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L3g4Nl82NC90c3QtZ2xpYmMtaHdjYXBzLTIuYyBiL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L3g4Nl82NC90c3QtZ2xpYmMtaHdjYXBzLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi44ZDZiMTdkNjU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzZGVwcy91 bml4L3N5c3YvbGludXgveDg2XzY0L3RzdC1nbGliYy1od2NhcHMtMi5jCkBAIC0wLDAgKzEsNjEg QEAKKy8qIENoZWNrIElTQSBsZXZlbCBvbiBzaGFyZWQgb2JqZWN0IGluIGdsaWJjLWh3Y2FwcyBz dWJkaXJlY3Rvcmllcy4KKyAgIENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5Lgor CisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoZSBHTlUg QyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0 aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKyAgIDxodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8u aD4KKyNpbmNsdWRlIDxlbGYuaD4KKyNpbmNsdWRlIDxnZXQtaXNhLWxldmVsLmg+CisjaW5jbHVk ZSA8c3VwcG9ydC9jaGVjay5oPgorI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuaD4KKwor ZXh0ZXJuIGludCBkc29faXNhX2xldmVsICh2b2lkKTsKKworc3RhdGljIGludAorZG9fdGVzdCAo dm9pZCkKK3sKKyAgY29uc3Qgc3RydWN0IGNwdV9mZWF0dXJlcyAqY3B1X2ZlYXR1cmVzCisgICAg PSBfX3g4Nl9nZXRfY3B1X2ZlYXR1cmVzIChDT01NT05fQ1BVSURfSU5ERVhfTUFYKTsKKyAgdW5z aWduZWQgaW50IGlzYV9sZXZlbCA9IGdldF9pc2FfbGV2ZWwgKGNwdV9mZWF0dXJlcyk7CisgIGlu dCBsZXZlbCA9IGRzb19pc2FfbGV2ZWwgKCk7CisgIGludCByZXQ7CisgIHN3aXRjaCAobGV2ZWwp CisgICAgeworICAgIGNhc2UgMToKKyAgICAgIC8qIFRoZSBkZWZhdWx0IGxpYng4Ni02NC1pc2Et bGV2ZWwuc28gc2hvdWxkIGJlIHVzZWQuICAqLworICAgICAgcHJpbnRmICgiVGhlIGRlZmF1bHQg c2hhcmVkIGxpYnJhcnkgaXMgdXNlZC5cbiIpOworICAgICAgaWYgKChpc2FfbGV2ZWwgJiBHTlVf UFJPUEVSVFlfWDg2X0lTQV8xX1Y0KSAhPSAwKQorCXJldCA9IEVYSVRfRkFJTFVSRTsKKyAgICAg IGVsc2UKKwlyZXQgPSBFWElUX1NVQ0NFU1M7CisgICAgICBicmVhazsKKyAgICBjYXNlIDQ6Cisg ICAgICAvKiBsaWJ4ODYtNjQtaXNhLWxldmVsLnNvIG1hcmtlZCBhcyB4ODYtNjQgSVNBIGxldmVs IDQgbmVlZGVkIGluCisJIHg4Ni02NC12MiBzaG91bGQgYmUgaWdub3JlZCBvbiBsZXNzZXIgQ1BV LiAgKi8KKyAgICAgIHByaW50ZiAoIng4Ni02NCBJU0EgbGV2ZWwgNCBzaGFyZWQgbGlicmFyeSBp biB4ODYtNjQtdjIgaXMgdXNlZC5cbiIpOworICAgICAgaWYgKChpc2FfbGV2ZWwgJiBHTlVfUFJP UEVSVFlfWDg2X0lTQV8xX1Y0KSAhPSAwKQorCXJldCA9IEVYSVRfU1VDQ0VTUzsKKyAgICAgIGVs c2UKKwlyZXQgPSBFWElUX0ZBSUxVUkU7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg ICAgYWJvcnQgKCk7CisgICAgfQorICByZXR1cm4gcmV0OworfQorCisjaW5jbHVkZSA8c3VwcG9y dC90ZXN0LWRyaXZlci5jPgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2 XzY0L3g4Ni02NC1pc2EtbGV2ZWwtVkFMVUUuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4 Nl82NC94ODYtNjQtaXNhLWxldmVsLVZBTFVFLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMjgxM2Q2MjdjYwotLS0gL2Rldi9udWxsCisrKyBiL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L3g4Nl82NC94ODYtNjQtaXNhLWxldmVsLVZBTFVFLmMKQEAgLTAsMCArMSw0IEBA CisjZGVmaW5lIElOQ0xVREVfWDg2X0lTQV9MRVZFTAorI2RlZmluZSBNQVJLRVIgZHNvX2lzYV9s ZXZlbAorI2luY2x1ZGUgPGlzYS1sZXZlbC5jPgorI2luY2x1ZGUgPG1hcmtlcm1vZE1BUktFUi1W QUxVRS5jPgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvZGwtaXNhLWxldmVsLmggYi9zeXNkZXBz L3g4Ni9kbC1pc2EtbGV2ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5jNmVkOGZiOWQyCi0tLSAvZGV2L251bGwKKysrIGIvc3lzZGVwcy94ODYvZGwtaXNhLWxldmVs LmgKQEAgLTAsMCArMSwzMiBAQAorLyogU3VwcG9ydCBmb3IgcmVhZGluZyBJU0EgbGV2ZWwgaW4g L2V0Yy9sZC5zby5jYWNoZSBmaWxlcyB3cml0dGVuIGJ5CisgICBMaW51eCBsZGNvbmZpZy4gIHg4 NiB2ZXJzaW9uLgorICAgQ29weXJpZ2h0IChDKSAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAg IFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdOVSBDIExp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRo ZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQorICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxzeXMvcGxhdGZvcm0veDg2Lmg+CisKKy8qIFJldHVy biB0cnVlIGlmIHRoZSBJU0EgbGV2ZWwgaW4gRU5UUlkgaXMgY29tcGF0aWJsZSB3aXRoIENQVS4g ICovCisKK3N0YXRpYyBpbmxpbmUgYm9vbAorZGxfY2FjaGVfaHdjYXBfaXNhX2xldmVsX2NvbXBh dGlibGUgKHN0cnVjdCBmaWxlX2VudHJ5X25ldyAqZW50cnkpCit7CisgIGNvbnN0IHN0cnVjdCBj cHVfZmVhdHVyZXMgKmNwdV9mZWF0dXJlcyA9IF9fZ2V0X2NwdV9mZWF0dXJlcyAoKTsKKyAgdW5z aWduZWQgaW50IGlzYV9sZXZlbAorICAgID0gMSA8PCAoKGVudHJ5LT5od2NhcCA+PiAzMikgJiBE TF9DQUNIRV9IV0NBUF9JU0FfTEVWRUxfTUFTSyk7CisKKyAgcmV0dXJuIChpc2FfbGV2ZWwgJiBj cHVfZmVhdHVyZXMtPmlzYV8xKSA9PSBpc2FfbGV2ZWw7Cit9Ci0tIAoyLjI5LjIKCg== --0000000000007e4faf05b5ffa4c4--