From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id 1A269385841D for ; Thu, 14 Oct 2021 13:32:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1A269385841D Received: by mail-pg1-x532.google.com with SMTP id m21so5534192pgu.13 for ; Thu, 14 Oct 2021 06:32:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=MNhoUim86D3jtMCI0djXlxb/Uq+xF7FZkOVJJic4RfE=; b=uXz9HoLeuSIiWepDTqfXtLwBXBsoccEvFKPvqFRpP/msMVzUtz/TMKnltmoDF5JGP8 dn2x++I6YvfYAfP50c55WG51hyAESp325Hp6zScONx9jwDapzemAHsPYzL3zP8ThSlKU atEqYzi4o6exfwoa+OK8ZAnqSXSgIWjJc/qTT+5PQWpyOAleuEiMZltu9cDM1zGYqH3F vnI8efnPhY0RLbjNY6lVx+III1cic9eJSagIxTi8ZMSxOUkAtBvQb3vTsFLGcIXgthjO HqhhaqK3goz+CIhmzXJTatz3zZXe1WMSgZ9rTiAfdROy0niydBJvMQ/175Kjx6v01oTC f/Yw== X-Gm-Message-State: AOAM530TDOAR/xhGvcLirUdpFXLs0ugtOMLevDk0US9zGfi4V5HtDlnU ZZFOSfVcqc9JEffGyGmqc9vHXRDSwUiyFKjxrPnNzWHN6BU= X-Google-Smtp-Source: ABdhPJwiWBuHFK4Ao9ZVJWyqQ+QaV2Zust4e/tnhNwg4V3z4brYiAij+8ARQu0KKRECCr4D6vx6wkVTmtDJJFW7NafY= X-Received: by 2002:a62:7752:0:b0:44c:eb65:8561 with SMTP id s79-20020a627752000000b0044ceb658561mr5446520pfc.43.1634218364007; Thu, 14 Oct 2021 06:32:44 -0700 (PDT) MIME-Version: 1.0 References: <20211014035435.6339-1-hjl.tools@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Thu, 14 Oct 2021 06:32:08 -0700 Message-ID: Subject: [PATCH v2] x86-64: Add test-vector-abi.h/test-vector-abi-sincos.h To: Noah Goldstein , "Pandey, Sunil K" Cc: GNU C Library Content-Type: multipart/mixed; boundary="00000000000012dd0505ce501d90" X-Spam-Status: No, score=-3030.5 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.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Thu, 14 Oct 2021 13:32:48 -0000 --00000000000012dd0505ce501d90 Content-Type: text/plain; charset="UTF-8" On Wed, Oct 13, 2021 at 9:23 PM Noah Goldstein wrote: > > On Wed, Oct 13, 2021 at 11:54 PM H.J. Lu via Libc-alpha > wrote: > > > > Add a template for vector ABI test and use it for vector sincos/sincosf > > ABI tests. > > --- > > sysdeps/x86_64/fpu/Makefile | 6 --- > > .../fpu/test-double-libmvec-sincos-avx.c | 1 + > > .../fpu/test-double-libmvec-sincos-avx2.c | 3 +- > > .../fpu/test-double-libmvec-sincos-avx512.c | 3 +- > > .../fpu/test-double-libmvec-sincos-main.c | 2 +- > > .../x86_64/fpu/test-double-libmvec-sincos.c | 45 +------------------ > > .../fpu/test-float-libmvec-sincosf-avx.c | 3 +- > > .../fpu/test-float-libmvec-sincosf-avx2.c | 3 +- > > .../fpu/test-float-libmvec-sincosf-avx512.c | 3 +- > > .../fpu/test-float-libmvec-sincosf-main.c | 2 +- > > .../x86_64/fpu/test-float-libmvec-sincosf.c | 45 +------------------ > > sysdeps/x86_64/fpu/test-vector-abi.h | 41 +++++++++++++++++ > > 12 files changed, 56 insertions(+), 101 deletions(-) > > create mode 100644 sysdeps/x86_64/fpu/test-vector-abi.h > > > > diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile > > index 1b4406380d..6643f77c5d 100644 > > --- a/sysdeps/x86_64/fpu/Makefile > > +++ b/sysdeps/x86_64/fpu/Makefile > > @@ -108,19 +108,13 @@ CFLAGS-test-double-vlen4-avx2-wrappers.c = $(double-vlen4-arch-ext2-cflags) > > CFLAGS-test-float-vlen8-avx2-wrappers.c = $(float-vlen8-arch-ext2-cflags) > > > > CFLAGS-test-double-libmvec-sincos-main.c = $(libmvec-sincos-cflags) > > -CFLAGS-test-double-libmvec-sincos-avx.c = -DREQUIRE_AVX > > CFLAGS-test-double-libmvec-sincos-avx-main.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext-cflags) > > -CFLAGS-test-double-libmvec-sincos-avx2.c = -DREQUIRE_AVX2 > > CFLAGS-test-double-libmvec-sincos-avx2-main.c = $(libmvec-sincos-cflags) $(double-vlen4-arch-ext2-cflags) > > -CFLAGS-test-double-libmvec-sincos-avx512.c = -DREQUIRE_AVX512F > > CFLAGS-test-double-libmvec-sincos-avx512-main.c = $(libmvec-sincos-cflags) $(double-vlen8-arch-ext-cflags) > > > > CFLAGS-test-float-libmvec-sincosf-main.c = $(libmvec-sincos-cflags) > > -CFLAGS-test-float-libmvec-sincosf-avx.c = -DREQUIRE_AVX > > CFLAGS-test-float-libmvec-sincosf-avx-main.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext-cflags) > > -CFLAGS-test-float-libmvec-sincosf-avx2.c = -DREQUIRE_AVX2 > > CFLAGS-test-float-libmvec-sincosf-avx2-main.c = $(libmvec-sincos-cflags) $(float-vlen8-arch-ext2-cflags) > > -CFLAGS-test-float-libmvec-sincosf-avx512.c = -DREQUIRE_AVX512F > > CFLAGS-test-float-libmvec-sincosf-avx512-main.c = $(libmvec-sincos-cflags) $(float-vlen16-arch-ext-cflags) > > endif > > endif > > diff --git a/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx.c b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx.c > > index 896f1bcbaf..fbc0dbe3d9 100644 > > --- a/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx.c > > +++ b/sysdeps/x86_64/fpu/test-double-libmvec-sincos-avx.c > > @@ -1 +1,2 @@ > > +#define REQUIRE_AVX > > #include "test-double-libmvec-sincos.c" > > Should this be: #include "test-vector-abi.h"? Yes. > If so can test-double-libmvec-sincos.c be deleted? No. We need it to build test-double-libmvec-sincos. Here is the v2 patch. The main changes are 1. Rename all test-XXX-main.c files to test-XXX.c. 2. Use test-libmvec*.c to run the libmvec ABI tests. OK for master? Thanks. -- H.J. --00000000000012dd0505ce501d90 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-x86-64-Add-test-vector-abi.h-test-vector-abi-sinc.patch" Content-Disposition: attachment; filename="v2-0001-x86-64-Add-test-vector-abi.h-test-vector-abi-sinc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kuqz7nuu0 RnJvbSBhYzNjM2RlMWU4NTc2Y2Y0Y2VlMDkzZDNkNDY1ZjAzM2E3YzYwNzBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTMgT2N0IDIwMjEgMTM6NDY6NTIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYyXSB4ODYt NjQ6IEFkZCB0ZXN0LXZlY3Rvci1hYmkuaC90ZXN0LXZlY3Rvci1hYmktc2luY29zLmgKCkFkZCB0 ZW1wbGF0ZXMgZm9yIHZlY3RvciBBQkkgdGVzdCBhbmQgdXNlIHRoZW0gZm9yIHZlY3RvciBzaW5j b3Mvc2luY29zZgpBQkkgdGVzdHMuCi0tLQogc3lzZGVwcy94ODZfNjQvZnB1L01ha2VmaWxlICAg ICAgICAgICAgICAgICAgIHwgNzQgKysrKysrKystLS0tLS0tLS0tLQogLi4uL2ZwdS90ZXN0LWRv dWJsZS1saWJtdmVjLXNpbmNvcy1hdngtbWFpbi5jIHwgIDEgLQogLi4uL3Rlc3QtZG91YmxlLWxp Ym12ZWMtc2luY29zLWF2eDItbWFpbi5jICAgIHwgIDEgLQogLi4uL3Rlc3QtZG91YmxlLWxpYm12 ZWMtc2luY29zLWF2eDUxMi1tYWluLmMgIHwgIDEgLQogLi4uYyA9PiB0ZXN0LWRvdWJsZS1saWJt dmVjLXNpbmNvcy1hdng1MTJmLmN9IHwgIDAKIC4uLi94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxp Ym12ZWMtc2luY29zLmMgICB8IDQ3ICstLS0tLS0tLS0tLQogLi4uL2ZwdS90ZXN0LWZsb2F0LWxp Ym12ZWMtc2luY29zZi1hdngtbWFpbi5jIHwgIDEgLQogLi4uL3Rlc3QtZmxvYXQtbGlibXZlYy1z aW5jb3NmLWF2eDItbWFpbi5jICAgIHwgIDEgLQogLi4uL3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5j b3NmLWF2eDUxMi1tYWluLmMgIHwgIDEgLQogLi4uYyA9PiB0ZXN0LWZsb2F0LWxpYm12ZWMtc2lu Y29zZi1hdng1MTJmLmN9IHwgIDAKIC4uLi94ODZfNjQvZnB1L3Rlc3QtZmxvYXQtbGlibXZlYy1z aW5jb3NmLmMgICB8IDQ3ICstLS0tLS0tLS0tLQogc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGli bXZlYy1hdnguYyAgICAgICAgIHwgIDIgKwogc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZl Yy1hdngyLmMgICAgICAgIHwgIDIgKwogc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy1h dng1MTJmLmMgICAgIHwgIDIgKwogc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy5jICAg ICAgICAgICAgIHwgIDEgKwogLi4uc2luY29zLW1haW4uYyA9PiB0ZXN0LXZlY3Rvci1hYmktc2lu Y29zLmh9IHwgMzAgKysrKystLS0KIC4uLmJtdmVjLXNpbmNvc2YtbWFpbi5jID0+IHRlc3QtdmVj dG9yLWFiaS5ofSB8IDQxICsrKysrLS0tLS0KIDE3IGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlv bnMoKyksIDE3MiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3g4Nl82 NC9mcHUvdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4LW1haW4uYwogZGVsZXRlIG1vZGUg MTAwNjQ0IHN5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdngy LW1haW4uYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWRvdWJs ZS1saWJtdmVjLXNpbmNvcy1hdng1MTItbWFpbi5jCiByZW5hbWUgc3lzZGVwcy94ODZfNjQvZnB1 L3t0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdng1MTIuYyA9PiB0ZXN0LWRvdWJsZS1saWJt dmVjLXNpbmNvcy1hdng1MTJmLmN9ICgxMDAlKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMv eDg2XzY0L2ZwdS90ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdngtbWFpbi5jCiBkZWxldGUg bW9kZSAxMDA2NDQgc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3Nm LWF2eDItbWFpbi5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3Qt ZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDUxMi1tYWluLmMKIHJlbmFtZSBzeXNkZXBzL3g4Nl82 NC9mcHUve3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDUxMi5jID0+IHRlc3QtZmxvYXQt bGlibXZlYy1zaW5jb3NmLWF2eDUxMmYuY30gKDEwMCUpCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lz ZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy1hdnguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5 c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWxpYm12ZWMtYXZ4Mi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy1hdng1MTJmLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1saWJtdmVjLmMKIHJlbmFtZSBzeXNkZXBzL3g4 Nl82NC9mcHUve3Rlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLW1haW4uYyA9PiB0ZXN0LXZlY3Rv ci1hYmktc2luY29zLmh9ICg1OCUpCiByZW5hbWUgc3lzZGVwcy94ODZfNjQvZnB1L3t0ZXN0LWZs b2F0LWxpYm12ZWMtc2luY29zZi1tYWluLmMgPT4gdGVzdC12ZWN0b3ItYWJpLmh9ICg2MiUpCgpk aWZmIC0tZ2l0IGEvc3lzZGVwcy94ODZfNjQvZnB1L01ha2VmaWxlIGIvc3lzZGVwcy94ODZfNjQv ZnB1L01ha2VmaWxlCmluZGV4IDFiNDQwNjM4MGQuLmU1YTY1NzUwYzAgMTAwNjQ0Ci0tLSBhL3N5 c2RlcHMveDg2XzY0L2ZwdS9NYWtlZmlsZQorKysgYi9zeXNkZXBzL3g4Nl82NC9mcHUvTWFrZWZp bGUKQEAgLTMxLDU4ICszMSw0OCBAQCBsaWJtdmVjLXRlc3RzICs9IGRvdWJsZS12bGVuMiBkb3Vi bGUtdmxlbjQgZG91YmxlLXZsZW40LWF2eDIgXAogdGVzdHMgKz0gdGVzdC1kb3VibGUtbGlibXZl Yy1zaW5jb3MgdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4IFwKIAkgdGVzdC1kb3VibGUt bGlibXZlYy1zaW5jb3MtYXZ4MiB0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZiBcCiAJIHRlc3Qt ZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eCB0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdngy Ci10ZXN0LWV4dHJhcyArPSB0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdngtbWFpbiBcCi0J CSAgIHRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eDItbWFpbiBcCi0JCSAgIHRlc3QtZG91 YmxlLWxpYm12ZWMtc2luY29zLW1haW4gXAotCQkgICB0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29z Zi1hdngtbWFpbiBcCi0JCSAgIHRlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDItbWFpbiBc Ci0JCSAgIHRlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLW1haW4KLWV4dHJhLXRlc3Qtb2JqcyAr PSB0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdngtbWFpbi5vIFwKLQkJICAgdGVzdC1kb3Vi bGUtbGlibXZlYy1zaW5jb3MtYXZ4Mi1tYWluLm8gXAotCQkgICB0ZXN0LWRvdWJsZS1saWJtdmVj LXNpbmNvcy1tYWluLm8gXAotCQkgICB0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdngtbWFp bi5vIFwKLQkJICAgdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtYXZ4Mi1tYWluLm9cCi0JCSAg IHRlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLW1haW4ubwordGVzdC1leHRyYXMgKz0gdGVzdC1s aWJtdmVjIHRlc3QtbGlibXZlYy1hdnggXAorCSAgICAgICB0ZXN0LWxpYm12ZWMtYXZ4MiB0ZXN0 LWxpYm12ZWMtYXZ4NTEyZgorZXh0cmEtdGVzdC1vYmpzICs9IHRlc3QtbGlibXZlYy5vIHRlc3Qt bGlibXZlYy1hdngubyBcCisJCSAgIHRlc3QtbGlibXZlYy1hdngyLm8gdGVzdC1saWJtdmVjLWF2 eDUxMmYubwogCiAkKG9ianBmeCl0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvczogXAogICAkKG9i anBmeCl0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy5vIFwKLSAgJChvYmpwZngpdGVzdC1kb3Vi bGUtbGlibXZlYy1zaW5jb3MtbWFpbi5vICQobGlibXZlYykKKyAgJChvYmpwZngpdGVzdC1saWJt dmVjLm8gJChsaWJtdmVjKQogCiAkKG9ianBmeCl0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1h dng6IFwKICAgJChvYmpwZngpdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4Lm8gXAotICAk KG9ianBmeCl0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdngtbWFpbi5vICQobGlibXZlYykK KyAgJChvYmpwZngpdGVzdC1saWJtdmVjLWF2eC5vICQobGlibXZlYykKIAogJChvYmpwZngpdGVz dC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4MjogXAogICAkKG9ianBmeCl0ZXN0LWRvdWJsZS1s aWJtdmVjLXNpbmNvcy1hdngyLm8gXAotICAkKG9ianBmeCl0ZXN0LWRvdWJsZS1saWJtdmVjLXNp bmNvcy1hdngyLW1haW4ubyAkKGxpYm12ZWMpCisgICQob2JqcGZ4KXRlc3QtbGlibXZlYy1hdngy Lm8gJChsaWJtdmVjKQogCiAkKG9ianBmeCl0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZjogXAog ICAkKG9ianBmeCl0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi5vIFwKLSAgJChvYmpwZngpdGVz dC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtbWFpbi5vICQobGlibXZlYykKKyAgJChvYmpwZngpdGVz dC1saWJtdmVjLm8gJChsaWJtdmVjKQogCiAkKG9ianBmeCl0ZXN0LWZsb2F0LWxpYm12ZWMtc2lu Y29zZi1hdng6IFwKICAgJChvYmpwZngpdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtYXZ4Lm8g XAotICAkKG9ianBmeCl0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdngtbWFpbi5vICQobGli bXZlYykKKyAgJChvYmpwZngpdGVzdC1saWJtdmVjLWF2eC5vICQobGlibXZlYykKIAogJChvYmpw ZngpdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtYXZ4MjogXAogICAkKG9ianBmeCl0ZXN0LWZs b2F0LWxpYm12ZWMtc2luY29zZi1hdngyLm8gXAotICAkKG9ianBmeCl0ZXN0LWZsb2F0LWxpYm12 ZWMtc2luY29zZi1hdngyLW1haW4ubyAkKGxpYm12ZWMpCisgICQob2JqcGZ4KXRlc3QtbGlibXZl Yy1hdngyLm8gJChsaWJtdmVjKQogCiBsaWJtdmVjLXRlc3RzICs9IGRvdWJsZS12bGVuOCBmbG9h dC12bGVuMTYKLXRlc3RzICs9IHRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eDUxMiBcCi0J IHRlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDUxMgotdGVzdC1leHRyYXMgKz0gdGVzdC1k b3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4NTEyLW1haW4gXAotCSAgICAgICB0ZXN0LWZsb2F0LWxp Ym12ZWMtc2luY29zZi1hdng1MTItbWFpbgotZXh0cmEtdGVzdC1vYmpzICs9IHRlc3QtZG91Ymxl LWxpYm12ZWMtc2luY29zLWF2eDUxMi1tYWluLm8gXAotCQkgICB0ZXN0LWZsb2F0LWxpYm12ZWMt c2luY29zZi1hdng1MTItbWFpbi5vCit0ZXN0cyArPSB0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNv cy1hdng1MTJmIFwKKwkgdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtYXZ4NTEyZgordGVzdC1l eHRyYXMgKz0gdGVzdC1saWJtdmVjLWF2eDUxMmYKK2V4dHJhLXRlc3Qtb2JqcyArPSB0ZXN0LWxp Ym12ZWMtYXZ4NTEyZi5vCiAKLSQob2JqcGZ4KXRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2 eDUxMjogXAotICAkKG9ianBmeCl0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdng1MTIubyBc Ci0gICQob2JqcGZ4KXRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eDUxMi1tYWluLm8gJChs aWJtdmVjKQorJChvYmpwZngpdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4NTEyZjogXAor ICAkKG9ianBmeCl0ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdng1MTJmLm8gXAorICAkKG9i anBmeCl0ZXN0LWxpYm12ZWMtYXZ4NTEyZi5vICQobGlibXZlYykKIAotJChvYmpwZngpdGVzdC1m bG9hdC1saWJtdmVjLXNpbmNvc2YtYXZ4NTEyOiBcCi0gICQob2JqcGZ4KXRlc3QtZmxvYXQtbGli bXZlYy1zaW5jb3NmLWF2eDUxMi5vIFwKLSAgJChvYmpwZngpdGVzdC1mbG9hdC1saWJtdmVjLXNp bmNvc2YtYXZ4NTEyLW1haW4ubyAkKGxpYm12ZWMpCiskKG9ianBmeCl0ZXN0LWZsb2F0LWxpYm12 ZWMtc2luY29zZi1hdng1MTJmOiBcCisgICQob2JqcGZ4KXRlc3QtZmxvYXQtbGlibXZlYy1zaW5j b3NmLWF2eDUxMmYubyBcCisgICQob2JqcGZ4KXRlc3QtbGlibXZlYy1hdng1MTJmLm8gJChsaWJt dmVjKQogCiBkb3VibGUtdmxlbjItZnVuY3MgPSBjb3MgZXhwIGxvZyBwb3cgc2luIHNpbmNvcwog ZG91YmxlLXZsZW40LWZ1bmNzID0gY29zIGV4cCBsb2cgcG93IHNpbiBzaW5jb3MKQEAgLTEwNywy MSArOTcsMTUgQEAgQ0ZMQUdTLXRlc3QtZG91YmxlLXZsZW40LWF2eDItd3JhcHBlcnMuYyA9ICQo ZG91YmxlLXZsZW40LWFyY2gtZXh0Mi1jZmxhZ3MpCiAKIENGTEFHUy10ZXN0LWZsb2F0LXZsZW44 LWF2eDItd3JhcHBlcnMuYyA9ICQoZmxvYXQtdmxlbjgtYXJjaC1leHQyLWNmbGFncykKIAotQ0ZM QUdTLXRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLW1haW4uYyA9ICQobGlibXZlYy1zaW5jb3Mt Y2ZsYWdzKQotQ0ZMQUdTLXRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eC5jID0gLURSRVFV SVJFX0FWWAotQ0ZMQUdTLXRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eC1tYWluLmMgPSAk KGxpYm12ZWMtc2luY29zLWNmbGFncykgJChkb3VibGUtdmxlbjQtYXJjaC1leHQtY2ZsYWdzKQot Q0ZMQUdTLXRlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eDIuYyA9IC1EUkVRVUlSRV9BVlgy Ci1DRkxBR1MtdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4Mi1tYWluLmMgPSAkKGxpYm12 ZWMtc2luY29zLWNmbGFncykgJChkb3VibGUtdmxlbjQtYXJjaC1leHQyLWNmbGFncykKLUNGTEFH Uy10ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdng1MTIuYyA9IC1EUkVRVUlSRV9BVlg1MTJG Ci1DRkxBR1MtdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4NTEyLW1haW4uYyA9ICQobGli bXZlYy1zaW5jb3MtY2ZsYWdzKSAkKGRvdWJsZS12bGVuOC1hcmNoLWV4dC1jZmxhZ3MpCi0KLUNG TEFHUy10ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1tYWluLmMgPSAkKGxpYm12ZWMtc2luY29z LWNmbGFncykKLUNGTEFHUy10ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdnguYyA9IC1EUkVR VUlSRV9BVlgKLUNGTEFHUy10ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdngtbWFpbi5jID0g JChsaWJtdmVjLXNpbmNvcy1jZmxhZ3MpICQoZmxvYXQtdmxlbjgtYXJjaC1leHQtY2ZsYWdzKQot Q0ZMQUdTLXRlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDIuYyA9IC1EUkVRVUlSRV9BVlgy Ci1DRkxBR1MtdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtYXZ4Mi1tYWluLmMgPSAkKGxpYm12 ZWMtc2luY29zLWNmbGFncykgJChmbG9hdC12bGVuOC1hcmNoLWV4dDItY2ZsYWdzKQotQ0ZMQUdT LXRlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDUxMi5jID0gLURSRVFVSVJFX0FWWDUxMkYK LUNGTEFHUy10ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdng1MTItbWFpbi5jID0gJChsaWJt dmVjLXNpbmNvcy1jZmxhZ3MpICQoZmxvYXQtdmxlbjE2LWFyY2gtZXh0LWNmbGFncykKK0NGTEFH Uy10ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy5jID0gJChsaWJtdmVjLXNpbmNvcy1jZmxhZ3Mp CitDRkxBR1MtdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4LmMgPSAkKGxpYm12ZWMtc2lu Y29zLWNmbGFncykgJChkb3VibGUtdmxlbjQtYXJjaC1leHQtY2ZsYWdzKQorQ0ZMQUdTLXRlc3Qt ZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eDIuYyA9ICQobGlibXZlYy1zaW5jb3MtY2ZsYWdzKSAk KGRvdWJsZS12bGVuNC1hcmNoLWV4dDItY2ZsYWdzKQorQ0ZMQUdTLXRlc3QtZG91YmxlLWxpYm12 ZWMtc2luY29zLWF2eDUxMmYuYyA9ICQobGlibXZlYy1zaW5jb3MtY2ZsYWdzKSAkKGRvdWJsZS12 bGVuOC1hcmNoLWV4dC1jZmxhZ3MpCisKK0NGTEFHUy10ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29z Zi5jID0gJChsaWJtdmVjLXNpbmNvcy1jZmxhZ3MpCitDRkxBR1MtdGVzdC1mbG9hdC1saWJtdmVj LXNpbmNvc2YtYXZ4LmMgPSAkKGxpYm12ZWMtc2luY29zLWNmbGFncykgJChmbG9hdC12bGVuOC1h cmNoLWV4dC1jZmxhZ3MpCitDRkxBR1MtdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtYXZ4Mi5j ID0gJChsaWJtdmVjLXNpbmNvcy1jZmxhZ3MpICQoZmxvYXQtdmxlbjgtYXJjaC1leHQyLWNmbGFn cykKK0NGTEFHUy10ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdng1MTJmLmMgPSAkKGxpYm12 ZWMtc2luY29zLWNmbGFncykgJChmbG9hdC12bGVuMTYtYXJjaC1leHQtY2ZsYWdzKQogZW5kaWYK IGVuZGlmCiAKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWRvdWJsZS1saWJt dmVjLXNpbmNvcy1hdngtbWFpbi5jIGIvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxp Ym12ZWMtc2luY29zLWF2eC1tYWluLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZj MmZmZWEzMTQuLjAwMDAwMDAwMDAKLS0tIGEvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91Ymxl LWxpYm12ZWMtc2luY29zLWF2eC1tYWluLmMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0j aW5jbHVkZSAidGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtbWFpbi5jIgpkaWZmIC0tZ2l0IGEv c3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eDItbWFpbi5j IGIvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2eDItbWFp bi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzJmZmVhMzE0Li4wMDAwMDAwMDAw Ci0tLSBhL3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdngy LW1haW4uYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSNpbmNsdWRlICJ0ZXN0LWRvdWJs ZS1saWJtdmVjLXNpbmNvcy1tYWluLmMiCmRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Nl82NC9mcHUv dGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtYXZ4NTEyLW1haW4uYyBiL3N5c2RlcHMveDg2XzY0 L2ZwdS90ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdng1MTItbWFpbi5jCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBmYzJmZmVhMzE0Li4wMDAwMDAwMDAwCi0tLSBhL3N5c2RlcHMv eDg2XzY0L2ZwdS90ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdng1MTItbWFpbi5jCisrKyAv ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotI2luY2x1ZGUgInRlc3QtZG91YmxlLWxpYm12ZWMtc2lu Y29zLW1haW4uYyIKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWRvdWJsZS1s aWJtdmVjLXNpbmNvcy1hdng1MTIuYyBiL3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWRvdWJsZS1s aWJtdmVjLXNpbmNvcy1hdng1MTJmLmMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9t IHN5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWRvdWJsZS1saWJtdmVjLXNpbmNvcy1hdng1MTIuYwpy ZW5hbWUgdG8gc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLWF2 eDUxMmYuYwpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxpYm12 ZWMtc2luY29zLmMgYi9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1kb3VibGUtbGlibXZlYy1zaW5j b3MuYwppbmRleCA1ZjllYjQ5MTRmLi45Y2NkYmQ2ZDZlIDEwMDY0NAotLS0gYS9zeXNkZXBzL3g4 Nl82NC9mcHUvdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MuYworKysgYi9zeXNkZXBzL3g4Nl82 NC9mcHUvdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MuYwpAQCAtMSw0NCArMSwzIEBACi0vKiBU ZXN0IGZvciB2ZWN0b3Igc2luY29zIEFCSS4KLSAgIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBDIExpYnJhcnkuCi0KLSAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICAgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLQotICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICAg TGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQotICAgPGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0KLSNpbmNsdWRlIDxtYXRoLXRlc3Rz LWFyY2guaD4KLQotZXh0ZXJuIGludCB0ZXN0X3NpbmNvc19hYmkgKHZvaWQpOwotCi1pbnQgYXJj aF9jaGVjayA9IDE7Ci0KLXN0YXRpYyB2b2lkCi1jaGVja19hcmNoICh2b2lkKQotewotICBDSEVD S19BUkNIX0VYVDsKLSAgYXJjaF9jaGVjayA9IDA7Ci19Ci0KLXN0YXRpYyBpbnQKLWRvX3Rlc3Qg KHZvaWQpCi17Ci0gIGNoZWNrX2FyY2ggKCk7Ci0KLSAgaWYgKGFyY2hfY2hlY2spCi0gICAgcmV0 dXJuIDc3OwotCi0gIHJldHVybiB0ZXN0X3NpbmNvc19hYmkgKCk7Ci19Ci0KLSNkZWZpbmUgVEVT VF9GVU5DVElPTiBkb190ZXN0ICgpCi0jaW5jbHVkZSAiLi4vLi4vLi4vdGVzdC1za2VsZXRvbi5j IgorI2RlZmluZSBMSUJNVkVDX1RZUEUgZG91YmxlCisjZGVmaW5lIExJQk1WRUNfU0lOQ09TIHNp bmNvcworI2luY2x1ZGUgInRlc3QtdmVjdG9yLWFiaS1zaW5jb3MuaCIKZGlmZiAtLWdpdCBhL3N5 c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdngtbWFpbi5jIGIv c3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eC1tYWluLmMK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OGUyYWM2NDkuLjAwMDAwMDAwMDAKLS0t IGEvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eC1tYWlu LmMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jaW5jbHVkZSAidGVzdC1mbG9hdC1saWJt dmVjLXNpbmNvc2YtbWFpbi5jIgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3Qt ZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDItbWFpbi5jIGIvc3lzZGVwcy94ODZfNjQvZnB1L3Rl c3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDItbWFpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA1NThlMmFjNjQ5Li4wMDAwMDAwMDAwCi0tLSBhL3N5c2RlcHMveDg2XzY0L2Zw dS90ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdngyLW1haW4uYworKysgL2Rldi9udWxsCkBA IC0xICswLDAgQEAKLSNpbmNsdWRlICJ0ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1tYWluLmMi CmRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNv c2YtYXZ4NTEyLW1haW4uYyBiL3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWZsb2F0LWxpYm12ZWMt c2luY29zZi1hdng1MTItbWFpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NThl MmFjNjQ5Li4wMDAwMDAwMDAwCi0tLSBhL3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWZsb2F0LWxp Ym12ZWMtc2luY29zZi1hdng1MTItbWFpbi5jCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot I2luY2x1ZGUgInRlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLW1haW4uYyIKZGlmZiAtLWdpdCBh L3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdng1MTIuYyBi L3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdng1MTJmLmMK c2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHN5c2RlcHMveDg2XzY0L2ZwdS90ZXN0 LWZsb2F0LWxpYm12ZWMtc2luY29zZi1hdng1MTIuYwpyZW5hbWUgdG8gc3lzZGVwcy94ODZfNjQv ZnB1L3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLWF2eDUxMmYuYwpkaWZmIC0tZ2l0IGEvc3lz ZGVwcy94ODZfNjQvZnB1L3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLmMgYi9zeXNkZXBzL3g4 Nl82NC9mcHUvdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YuYwppbmRleCA0NTM4MDAzZTljLi4y Yjc3ZjI1ZGIxIDEwMDY0NAotLS0gYS9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1mbG9hdC1saWJt dmVjLXNpbmNvc2YuYworKysgYi9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1mbG9hdC1saWJtdmVj LXNpbmNvc2YuYwpAQCAtMSw0NCArMSwzIEBACi0vKiBUZXN0IGZvciB2ZWN0b3Igc2luY29zZiBB QkkuCi0gICBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotCi0gICBU aGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKLSAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKLSAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgIFRoZSBHTlUgQyBMaWJy YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0KLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUg R05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKLSAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwotCi0jaW5jbHVkZSA8bWF0aC10ZXN0cy1hcmNoLmg+Ci0KLWV4dGVybiBpbnQg dGVzdF9zaW5jb3NmX2FiaSAodm9pZCk7Ci0KLWludCBhcmNoX2NoZWNrID0gMTsKLQotc3RhdGlj IHZvaWQKLWNoZWNrX2FyY2ggKHZvaWQpCi17Ci0gIENIRUNLX0FSQ0hfRVhUOwotICBhcmNoX2No ZWNrID0gMDsKLX0KLQotc3RhdGljIGludAotZG9fdGVzdCAodm9pZCkKLXsKLSAgY2hlY2tfYXJj aCAoKTsKLQotICBpZiAoYXJjaF9jaGVjaykKLSAgICByZXR1cm4gNzc7Ci0KLSAgcmV0dXJuIHRl c3Rfc2luY29zZl9hYmkgKCk7Ci19Ci0KLSNkZWZpbmUgVEVTVF9GVU5DVElPTiBkb190ZXN0ICgp Ci0jaW5jbHVkZSAiLi4vLi4vLi4vdGVzdC1za2VsZXRvbi5jIgorI2RlZmluZSBMSUJNVkVDX1RZ UEUgZmxvYXQKKyNkZWZpbmUgTElCTVZFQ19TSU5DT1Mgc2luY29zZgorI2luY2x1ZGUgInRlc3Qt dmVjdG9yLWFiaS1zaW5jb3MuaCIKZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2XzY0L2ZwdS90ZXN0 LWxpYm12ZWMtYXZ4LmMgYi9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1saWJtdmVjLWF2eC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhlMGZiNDkyZDcKLS0tIC9kZXYv bnVsbAorKysgYi9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1saWJtdmVjLWF2eC5jCkBAIC0wLDAg KzEsMiBAQAorI2RlZmluZSBSRVFVSVJFX0FWWAorI2luY2x1ZGUgInRlc3QtdmVjdG9yLWFiaS5o IgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy1hdngyLmMgYi9z eXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1saWJtdmVjLWF2eDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi44NzI1OTA3OTE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzZGVw cy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy1hdngyLmMKQEAgLTAsMCArMSwyIEBACisjZGVmaW5l IFJFUVVJUkVfQVZYMgorI2luY2x1ZGUgInRlc3QtdmVjdG9yLWFiaS5oIgpkaWZmIC0tZ2l0IGEv c3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy1hdng1MTJmLmMgYi9zeXNkZXBzL3g4Nl82 NC9mcHUvdGVzdC1saWJtdmVjLWF2eDUxMmYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi5jMGYyNGNlYWVlCi0tLSAvZGV2L251bGwKKysrIGIvc3lzZGVwcy94ODZfNjQv ZnB1L3Rlc3QtbGlibXZlYy1hdng1MTJmLmMKQEAgLTAsMCArMSwyIEBACisjZGVmaW5lIFJFUVVJ UkVfQVZYNTEyRgorI2luY2x1ZGUgInRlc3QtdmVjdG9yLWFiaS5oIgpkaWZmIC0tZ2l0IGEvc3lz ZGVwcy94ODZfNjQvZnB1L3Rlc3QtbGlibXZlYy5jIGIvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3Qt bGlibXZlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjYwMjYxZjgz YjgKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1saWJtdmVjLmMK QEAgLTAsMCArMSBAQAorI2luY2x1ZGUgInRlc3QtdmVjdG9yLWFiaS5oIgpkaWZmIC0tZ2l0IGEv c3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxpYm12ZWMtc2luY29zLW1haW4uYyBiL3N5 c2RlcHMveDg2XzY0L2ZwdS90ZXN0LXZlY3Rvci1hYmktc2luY29zLmgKc2ltaWxhcml0eSBpbmRl eCA1OCUKcmVuYW1lIGZyb20gc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZG91YmxlLWxpYm12ZWMt c2luY29zLW1haW4uYwpyZW5hbWUgdG8gc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtdmVjdG9yLWFi aS1zaW5jb3MuaAppbmRleCAwZmUyMzY5MDk5Li44ODYzNjc3YTY5IDEwMDY0NAotLS0gYS9zeXNk ZXBzL3g4Nl82NC9mcHUvdGVzdC1kb3VibGUtbGlibXZlYy1zaW5jb3MtbWFpbi5jCisrKyBiL3N5 c2RlcHMveDg2XzY0L2ZwdS90ZXN0LXZlY3Rvci1hYmktc2luY29zLmgKQEAgLTEsNCArMSw0IEBA Ci0vKiBUZXN0IGZvciB2ZWN0b3Igc2luY29zIEFCSS4KKy8qIFRlc3QgZm9yIHZlY3RvciBzaW5j b3Mvc2luY29zZiBBQkkuCiAgICBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJy YXJ5LgogCkBAIC0xNywyNyArMTcsMzMgQEAKICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwogCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1k cml2ZXIuaD4KKworLyogU2luY2UgbGlic3VwcG9ydF9ub25zaGFyZWQuYSBpcyBwbGFjZWQgYmVm b3JlIHRlc3QtbGlibXZlYyoubywgd2hpY2gKKyAgIGRlZmluZXMgZG9fdGVzdCwgcmVmZXJlbmNl IHN1cHBvcnRfdGVzdF9tYWluIGhlcmUgdG8gaW5jbHVkZSBpdCB0bworICAgYXZvaWQgdW5kZWZp bmVkIHJlZmVyZW5jZSB0byBzdXBwb3J0X3Rlc3RfbWFpbi4gIFRoZSBsaWJtdmVjIEFCSSB0ZXN0 CisgICBkb2Vzbid0IG5lZWQgb3RoZXIgc3ltYm9scyBpbiBsaWJzdXBwb3J0X25vbnNoYXJlZC5h LiAgKi8KK19fdHlwZW9mIChzdXBwb3J0X3Rlc3RfbWFpbikgKnN1cHBvcnRfdGVzdF9tYWluX3Ag PSBzdXBwb3J0X3Rlc3RfbWFpbjsKIAogI2RlZmluZSBOIDEwMDAKLWRvdWJsZSB4W05dLCBzW05d LCBjW05dOwotZG91YmxlKiBzX3B0cnNbTl07Ci1kb3VibGUqIGNfcHRyc1tOXTsKK0xJQk1WRUNf VFlQRSB4W05dLCBzW05dLCBjW05dOworTElCTVZFQ19UWVBFICpzX3B0cnNbTl07CitMSUJNVkVD X1RZUEUgKmNfcHRyc1tOXTsKIAogaW50Ci10ZXN0X3NpbmNvc19hYmkgKHZvaWQpCit0ZXN0X3Zl Y3Rvcl9hYmkgKHZvaWQpCiB7CiAgIGludCBpOwotCiAgIGZvcihpID0gMDsgaSA8IE47IGkrKykK LSAgewotICAgIHhbaV0gPSBpIC8gMzsKLSAgICBzX3B0cnNbaV0gPSAmc1tpXTsKLSAgICBjX3B0 cnNbaV0gPSAmY1tpXTsKLSAgfQorICAgIHsKKyAgICAgIHhbaV0gPSBpIC8gMzsKKyAgICAgIHNf cHRyc1tpXSA9ICZzW2ldOworICAgICAgY19wdHJzW2ldID0gJmNbaV07CisgICAgfQogCiAjcHJh Z21hIG9tcCBzaW1kCiAgIGZvcihpID0gMDsgaSA8IE47IGkrKykKLSAgICBzaW5jb3MgKHhbaV0s IHNfcHRyc1tpXSwgY19wdHJzW2ldKTsKKyAgICBMSUJNVkVDX1NJTkNPUyAoeFtpXSwgc19wdHJz W2ldLCBjX3B0cnNbaV0pOwogCiAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy94 ODZfNjQvZnB1L3Rlc3QtZmxvYXQtbGlibXZlYy1zaW5jb3NmLW1haW4uYyBiL3N5c2RlcHMveDg2 XzY0L2ZwdS90ZXN0LXZlY3Rvci1hYmkuaApzaW1pbGFyaXR5IGluZGV4IDYyJQpyZW5hbWUgZnJv bSBzeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC1mbG9hdC1saWJtdmVjLXNpbmNvc2YtbWFpbi5jCnJl bmFtZSB0byBzeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC12ZWN0b3ItYWJpLmgKaW5kZXggYzcyNDZj ZmZjMy4uY2RlMjRlNjAyMSAxMDA2NDQKLS0tIGEvc3lzZGVwcy94ODZfNjQvZnB1L3Rlc3QtZmxv YXQtbGlibXZlYy1zaW5jb3NmLW1haW4uYworKysgYi9zeXNkZXBzL3g4Nl82NC9mcHUvdGVzdC12 ZWN0b3ItYWJpLmgKQEAgLTEsNCArMSw0IEBACi0vKiBUZXN0IGZvciB2ZWN0b3Igc2luY29zZiBB QkkuCisvKiBUZXN0IGZvciB2ZWN0b3IgQUJJLgogICAgQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIEMgTGlicmFyeS4KIApAQCAtMTYsMjcgKzE2LDI2IEBACiAgICBMaWNlbnNlIGFsb25n IHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCiAgICA8aHR0cHM6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAotI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzeXMv cGxhdGZvcm0veDg2Lmg+CisjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5oPgogCi0jZGVm aW5lIE4gMTAwMAotZmxvYXQgeFtOXSwgc1tOXSwgY1tOXTsKLWZsb2F0ICpzX3B0cnNbTl07Ci1m bG9hdCAqY19wdHJzW05dOworZXh0ZXJuIGludCB0ZXN0X3ZlY3Rvcl9hYmkgKHZvaWQpOwogCi1p bnQKLXRlc3Rfc2luY29zZl9hYmkgKHZvaWQpCitzdGF0aWMgaW50Citkb190ZXN0ICh2b2lkKQog ewotICBpbnQgaTsKLSAgZm9yKGkgPSAwOyBpIDwgTjsgaSsrKQotICB7Ci0gICAgeFtpXSA9IGkg LyAzOwotICAgIHNfcHRyc1tpXSA9ICZzW2ldOwotICAgIGNfcHRyc1tpXSA9ICZjW2ldOwotICB9 Ci0KLSNwcmFnbWEgb21wIHNpbWQKLSAgZm9yKGkgPSAwOyBpIDwgTjsgaSsrKQotICAgIHNpbmNv c2YgKHhbaV0sIHNfcHRyc1tpXSwgY19wdHJzW2ldKTsKLQotICByZXR1cm4gMDsKKyNpZiBkZWZp bmVkIFJFUVVJUkVfQVZYCisgIGlmICghQ1BVX0ZFQVRVUkVfQUNUSVZFIChBVlgpKQorICAgIHJl dHVybiBFWElUX1VOU1VQUE9SVEVEOworI2VsaWYgZGVmaW5lZCBSRVFVSVJFX0FWWDIKKyAgaWYg KCFDUFVfRkVBVFVSRV9BQ1RJVkUgKEFWWDIpKQorICAgIHJldHVybiBFWElUX1VOU1VQUE9SVEVE OworI2VsaWYgZGVmaW5lZCBSRVFVSVJFX0FWWDUxMkYKKyAgaWYgKCFDUFVfRkVBVFVSRV9BQ1RJ VkUgKEFWWDUxMkYpKQorICAgIHJldHVybiBFWElUX1VOU1VQUE9SVEVEOworI2VuZGlmCisKKyAg cmV0dXJuIHRlc3RfdmVjdG9yX2FiaSAoKTsKIH0KKworI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1k cml2ZXIuYz4KLS0gCjIuMzEuMQoK --00000000000012dd0505ce501d90--