From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by sourceware.org (Postfix) with ESMTPS id 34B7A3857C59 for ; Fri, 11 Sep 2020 17:00:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 34B7A3857C59 Received: by mail-wr1-x442.google.com with SMTP id m6so12204627wrn.0 for ; Fri, 11 Sep 2020 10:00:48 -0700 (PDT) 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=yhyzbZn7upH/rA60tLviqUZmpGlT2JtzmA/Riy8Q6qU=; b=tsE2+6FAK3qd5eECGYaex1biDAWLEhL0XYkCFp/116ZYbOTLWZNvorCzR7evwzJ0Uz zOf1icz0AmQi2bkjUHyHVRCTdlUjwAuoJB0r6IIN64sbLnx8Esn2W8xP3XWjgEobjDTz oNAJ8AX6PlZcmQ29aasgLdZkGlaCIEguTrQneNVGo1TMxvZE1dmvdmmTSuP0+HWbhxdX J5F25cuRc/kVqYqGBDgT9OpxZXqlmVbMqa+yh86sjoGIiVjCjsaDvqAKqTIILxr9a6xj kSTtvJQ2ptpYFveB4dIzYXI3OzhihDa1HT3kRr/trSgBov9gQWpXzAx6iKGYD/uSjPEf XeTg== X-Gm-Message-State: AOAM530Q/rWIUXZr9OqmkCAlSmepNFevOBp6zUwtG133P+nNcSDZ6ixe cig2mU2HxRffWTTSA5uRQQfr5UOwH+RrQMhSqSo= X-Google-Smtp-Source: ABdhPJyU/F8FX8SG2bEWFs/Ct8QkpfBqzo77Dm9u7akhYfTpUMukfbm0lgZ39NLf4cLBG19AKZgTZlcpkDKf9dDXONI= X-Received: by 2002:a5d:55c8:: with SMTP id i8mr3010338wrw.331.1599843647032; Fri, 11 Sep 2020 10:00:47 -0700 (PDT) MIME-Version: 1.0 References: <20200903150743.gfzofhl3huifeq4x@kyukhin> <20200904140159.r6biwwb74qnj7dhc@kyukhin> In-Reply-To: <20200904140159.r6biwwb74qnj7dhc@kyukhin> From: Hongyu Wang Date: Sat, 12 Sep 2020 01:00:36 +0800 Message-ID: Subject: Re: [PATCH] Enable GCC support for AMX To: Kirill Yukhin Cc: "H.J. Lu" , Uros Bizjak , GCC Patches Content-Type: multipart/mixed; boundary="000000000000472e4405af0ca088" X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, 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: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Sep 2020 17:00:50 -0000 --000000000000472e4405af0ca088 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Thanks for your review, and sorry for the late reply. It took a while to finish the runtime test. > > diff --git a/gcc/config.gcc b/gcc/config.gcc > > index 797f0ad5edd..d0e59e86a5c 100644 > > --- a/gcc/config.gcc > > +++ b/gcc/config.gcc > > @@ -412,7 +412,7 @@ i[34567]86-*-*) > > waitpkgintrin.h cldemoteintrin.h avx512bf16vlintri= n.h > > avx512bf16intrin.h enqcmdintrin.h serializeintrin.= h > > avx512vp2intersectintrin.h avx512vp2intersectvlint= rin.h > > - tsxldtrkintrin.h" > > + tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h a= mxbf16intrin.h" > > Line more than 80 chars. > > > ;; > > x86_64-*-*) > > cpu_type=3Di386 > > @@ -447,7 +447,7 @@ x86_64-*-*) > > waitpkgintrin.h cldemoteintrin.h avx512bf16vlintri= n.h > > avx512bf16intrin.h enqcmdintrin.h serializeintrin.= h > > avx512vp2intersectintrin.h avx512vp2intersectvlint= rin.h > > - tsxldtrkintrin.h" > > + tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h a= mxbf16intrin.h" > > Ditto. Changed. > > > diff --git a/gcc/config/i386/amxbf16intrin.h b/gcc/config/i386/amxbf16i= ntrin.h > > new file mode 100644 > > index 00000000000..df0e2262d50 > > --- /dev/null > > +++ b/gcc/config/i386/amxbf16intrin.h > > @@ -0,0 +1,25 @@ > > +#if !defined _IMMINTRIN_H_INCLUDED > > +#error "Never use directly; include in= stead." > > +#endif > > + > > +#ifndef _AMXBF16INTRIN_H_INCLUDED > > +#define _AMXBF16INTRIN_H_INCLUDED > > + > > +#if !defined(__AMX_BF16__) > > +#pragma GCC push_options > > +#pragma GCC target("amx-bf16") > > +#define __DISABLE_AMX_BF16__ > > +#endif /* __AMX_BF16__ */ > > + > > +#if defined(__x86_64__) && defined(__AMX_BF16__) > > +#define _tile_dpbf16ps(dst,src1,src2) = \ > > + __asm__ volatile\ > > + ("{tdpbf16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbf16ps\t%%t= mm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::) > > +#endif > > I hope in future we'll replace it with unspecs at least... Currently we think it is redundant to add builtins with just const int parameters, which are supposed to be replaced in the future. > > > diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt > > index c9f7195d423..9389dc24948 100644 > > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > > index bca8c856dc8..a46e31f5862 100644 > > --- a/gcc/doc/invoke.texi > > +++ b/gcc/doc/invoke.texi > > @@ -1357,6 +1357,7 @@ See RS/6000 and PowerPC Options. > > -mvpclmulqdq -mavx512bitalg -mmovdiri -mmovdir64b -mavx512vpopcntd= q @gol > > -mavx5124fmaps -mavx512vnni -mavx5124vnniw -mprfchw -mrdpid @gol > > -mrdseed -msgx -mavx512vp2intersect -mserialize -mtsxldtrk@gol > > +-mamx-tile -mamx-int8 -mamx-bf16@gol > > Add space please. Changed. > > > diff --git a/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-2.c b/gcc/t= estsuite/gcc.target/i386/amxbf16-asmintel-2.c > > new file mode 100644 > > index 00000000000..605a44df3f8 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-2.c > > @@ -0,0 +1,4 @@ > > +/* { dg-do assemble { target { ! ia32 } } } */ > > +/* { dg-options "-O2 -mamx-bf16 -masm=3Dintel" } */ > > +/* { dg-require-effective-target amx_bf16 } */ > > +#include"amxbf16-asmintel-1.c" > > I didn't get it. We ususally use second tescase to actually execute > it and (well, a little) verify that semantics is ok. E.g. that > operands order is correct. Could you please do that? > This applies to all *-2.c cases. > I've checked and looks like public SDE simulator supports AMX. > Added runtime test. Tested and passed under SDE. Also, we adjust the intrinsic call to accept macro parameters. Updated patch. > -- > K > Hello, > > On 03 =D1=81=D0=B5=D0=BD 08:17, H.J. Lu wrote: > > On Thu, Sep 3, 2020 at 8:08 AM Kirill Yukhin via Gcc-patches > > wrote: > > > > > > Hello, > > > > > > On 06 =D0=B8=D1=8E=D0=BB 09:58, Hongyu Wang via Gcc-patches wrote: > > > > Hi: > > > > > > > > This patch is about to support Intel Advanced Matrix Extensions (AM= X) > > > > which will be enabled in GLC. > > > > > > > > AMX is a new 64-bit programming paradigm consisting of two > > > > compo nents: a set of 2-dimensional registers (tiles) representing > > > > sub-arrays from a larger 2-dimensional memory image, > > > > and an accelerator able to operate on tiles > > > > > > > > Supported instructions are > > > > > > > > AMX-TILE:ldtilecfg/sttilecfg/tileloadd/tileloaddt1/tilezero/tilerel= ease > > > > AMX-INT8:tdpbssd/tdpbsud/tdpbusd/tdpbuud > > > > AMX-BF16:tdpbf16ps > > > > > > > > The intrinsics adopts constant tile register number as its input pa= rameters. > > > > > > > > For detailed information, please refer to > > > > https://software.intel.com/content/dam/develop/public/us/en/documen= ts/architecture-instruction-set-extensions-programming-reference.pdf > > > > > > > > Bootstrap ok, regression test on i386/x86 backend is ok. > > > > > > > > OK for master? > > > > > > I was trying to apply your patch to recent master and got > > > compilation error: > > > > > > g++ -std=3Dgnu++11 -fno-PIE -c -g -O2 -DIN_GCC -fno-exceptions= -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowi > > > ng -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloade= d-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wn > > > o-overlength-strings -fno-common -DHAVE_CONFIG_H -I. -I. -I/export/k= yukhin/gcc/src/gcc -I/export/kyukhin/gcc/src/gcc/. -I/expor > > > t/kyukhin/gcc/src/gcc/../include -I/export/kyukhin/gcc/src/gcc/../lib= cpp/include -I/export/kyukhin/gcc/src/gcc/../libdecnumber > > > -I/export/kyukhin/gcc/src/gcc/../libdecnumber/bid -I../libdecnumber -= I/export/kyukhin/gcc/src/gcc/../libbacktrace -o i386-opti > > > ons.o -MT i386-options.o -MMD -MP -MF ./.deps/i386-options.TPo /expor= t/kyukhin/gcc/src/gcc/config/i386/i386-options.c > > > /export/kyukhin/gcc/src/gcc/config/i386/i386-options.c: In function = =E2=80=98bool ix86_option_override_internal(bool, gcc_options*, gcc_ > > > options*)=E2=80=99: > > > /export/kyukhin/gcc/src/gcc/config/i386/i386-options.c:2263:41: error= : =E2=80=98PTA_AMX_TILE=E2=80=99 was not declared in this scope > > > if (((processor_alias_table[i].flags & PTA_AMX_TILE) !=3D 0) > > > ^ > > > /export/kyukhin/gcc/src/gcc/config/i386/i386-options.c:2267:41: error= : =E2=80=98PTA_AMX_INT8=E2=80=99 was not declared in this scope > > > if (((processor_alias_table[i].flags & PTA_AMX_INT8) !=3D 0) > > > ^ > > > /export/kyukhin/gcc/src/gcc/config/i386/i386-options.c:2271:41: error= : =E2=80=98PTA_AMX_BF16=E2=80=99 was not declared in this scope > > > if (((processor_alias_table[i].flags & PTA_AMX_BF16) !=3D 0) > > > > > > Could you please fix that? > > > > Here is the rebased patch against > > > > commit 3c219134152f645103f2fcd50735b177ccd76cde > > Author: Jonathan Wakely > > Date: Thu Sep 3 12:38:50 2020 +0100 > > > > libstdc++: Optimise GCD algorithms > > > > Thanks. > > > > -- > > H.J. > > > diff --git a/gcc/config.gcc b/gcc/config.gcc > > index 797f0ad5edd..d0e59e86a5c 100644 > > --- a/gcc/config.gcc > > +++ b/gcc/config.gcc > > @@ -412,7 +412,7 @@ i[34567]86-*-*) > > waitpkgintrin.h cldemoteintrin.h avx512bf16vlintri= n.h > > avx512bf16intrin.h enqcmdintrin.h serializeintrin.= h > > avx512vp2intersectintrin.h avx512vp2intersectvlint= rin.h > > - tsxldtrkintrin.h" > > + tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h a= mxbf16intrin.h" > > Line more than 80 chars. > > > ;; > > x86_64-*-*) > > cpu_type=3Di386 > > @@ -447,7 +447,7 @@ x86_64-*-*) > > waitpkgintrin.h cldemoteintrin.h avx512bf16vlintri= n.h > > avx512bf16intrin.h enqcmdintrin.h serializeintrin.= h > > avx512vp2intersectintrin.h avx512vp2intersectvlint= rin.h > > - tsxldtrkintrin.h" > > + tsxldtrkintrin.h amxtileintrin.h amxint8intrin.h a= mxbf16intrin.h" > > Ditto. > > > diff --git a/gcc/config/i386/amxbf16intrin.h b/gcc/config/i386/amxbf16i= ntrin.h > > new file mode 100644 > > index 00000000000..df0e2262d50 > > --- /dev/null > > +++ b/gcc/config/i386/amxbf16intrin.h > > @@ -0,0 +1,25 @@ > > +#if !defined _IMMINTRIN_H_INCLUDED > > +#error "Never use directly; include in= stead." > > +#endif > > + > > +#ifndef _AMXBF16INTRIN_H_INCLUDED > > +#define _AMXBF16INTRIN_H_INCLUDED > > + > > +#if !defined(__AMX_BF16__) > > +#pragma GCC push_options > > +#pragma GCC target("amx-bf16") > > +#define __DISABLE_AMX_BF16__ > > +#endif /* __AMX_BF16__ */ > > + > > +#if defined(__x86_64__) && defined(__AMX_BF16__) > > +#define _tile_dpbf16ps(dst,src1,src2) = \ > > + __asm__ volatile\ > > + ("{tdpbf16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpbf16ps\t%%t= mm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::) > > +#endif > > I hope in future we'll replace it with unspecs at least... > > > diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt > > index c9f7195d423..9389dc24948 100644 > > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > > index bca8c856dc8..a46e31f5862 100644 > > --- a/gcc/doc/invoke.texi > > +++ b/gcc/doc/invoke.texi > > @@ -1357,6 +1357,7 @@ See RS/6000 and PowerPC Options. > > -mvpclmulqdq -mavx512bitalg -mmovdiri -mmovdir64b -mavx512vpopcntd= q @gol > > -mavx5124fmaps -mavx512vnni -mavx5124vnniw -mprfchw -mrdpid @gol > > -mrdseed -msgx -mavx512vp2intersect -mserialize -mtsxldtrk@gol > > +-mamx-tile -mamx-int8 -mamx-bf16@gol > > Add space please. > > > diff --git a/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-2.c b/gcc/t= estsuite/gcc.target/i386/amxbf16-asmintel-2.c > > new file mode 100644 > > index 00000000000..605a44df3f8 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/i386/amxbf16-asmintel-2.c > > @@ -0,0 +1,4 @@ > > +/* { dg-do assemble { target { ! ia32 } } } */ > > +/* { dg-options "-O2 -mamx-bf16 -masm=3Dintel" } */ > > +/* { dg-require-effective-target amx_bf16 } */ > > +#include"amxbf16-asmintel-1.c" > > I didn't get it. We ususally use second tescase to actually execute > it and (well, a little) verify that semantics is ok. E.g. that > operands order is correct. Could you please do that? > This applies to all *-2.c cases. > I've checked and looks like public SDE simulator supports AMX. > > -- > K --000000000000472e4405af0ca088 Content-Type: application/octet-stream; name="GCC_AMX_support_v2.patch" Content-Disposition: attachment; filename="GCC_AMX_support_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_keyhig7o0 RnJvbSAzY2JjODdlNzI4ODdmOThmMjA4NzFhNDY4ZTgwOGRhZTE4N2YzOWY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBsaXVob25ndCA8aG9uZ3Rhby5saXVAaW50ZWwuY29tPgpEYXRl OiBUaHUsIDI1IEp1bCAyMDE5IDE2OjQ5OjM2ICswODAwClN1YmplY3Q6IFtQQVRDSF0gRW5hYmxl IEdDQyBzdXBwb3J0IGZvciBBTVgtVElMRSxBTVgtSU5UOCxBTVgtQkYxNi4KCkFNWC1USUxFOmxk dGlsZWNmZy9zdHRpbGVjZmcvdGlsZWxvYWRkL3RpbGVsb2FkZHQxL3RpbGV6ZXJvL3RpbGVyZWxl YXNlCkFNWC1JTlQ4OnRkcGJzc2QvdGRwYnN1ZC90ZHBidXNkL3RkcGJ1dWQKQU1YLUJGMTY6dGRw YmYxNnBzCgpnY2MvQ2hhbmdlTG9nCgoJKiBjb21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24u YyAoT1BUSU9OX01BU0tfSVNBMl9BTVhfVElMRV9TRVQsCglPUFRJT05fTUFTS19JU0EyX0FNWF9J TlQ4X1NFVCwgT1BUSU9OX01BU0tfSVNBMl9BTVhfQkYxNl9TRVQsCglPUFRJT05fTUFTS19JU0Ey X0FNWF9USUxFX1VOU0VULAoJT1BUSU9OX01BU0tfSVNBMl9BTVhfSU5UOF9VTlNFVCwgT1BUSU9O X01BU0tfSVNBMl9BTVhfQkYxNl9VTlNFVCk6CglOZXcgbWFyY29zLgoJKGl4ODZfaGFuZGxlX29w dGlvbik6IEhhbmxkZSAtbWFteC10aWxlLCAtbWFteC1pbnQ4LCAtbWFteC1iZjE2LgoJKiBjb21t b24vY29uZmlnL2kzODYvaTM4Ni1jcHVpbmZvLmggKHByb2Nlc3Nvcl90eXBlcyk6IEFkZAoJRkVB VFVSRV9BTVhfVElMRSwgRkVBVFVSRV9BTVhfSU5UOCwgRkVBVFVSRV9BTVhfQkYxNi4KCSogY29t bW9uL2NvbmZpZy9pMzg2L2NwdWluZm8uaCAoWFNUQVRFX1RJTEVDRkcsCglYU1RBVEVfVElMRURB VEEsIFhDUl9BTVhfRU5BQkxFRF9NQVNLKTogTmV3IG1hY3JvLgoJKGdldF9hdmFpbGFibGVfZmVh dHVyZXMpOiBFbmFibGUgQU1YIGZlYXR1cmVzIG9ubHkgaWYKCXRoZWlyIHN0YXRlcyBhcmUgc3Vv b3JpdGVkIGJ5IE9TWFNBVkUuCgkqIGNvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWlzYXMuaDogQWRk IElTQV9OQU1FX1RBQkxFX0VOVFJZCglmb3IgYW14LXRpbGUsIGFteC1pbnQ4LCBhbXgtYmYxNi4K CSogY29uZmlnLmdjYzogQWRkIGFteHRpbGVpbnRyaW4uaCwgYW14aW50OGludHJpbi5oLAoJYW14 YmYxNmludHJpbi5oIHRvIGV4dHJhIGhlYWRlcnMuCgkqIGNvbmZpZy9pMzg2L2FteGJmMTZpbnRy aW4uaDogTmV3IGZpbGUuCgkqIGNvbmZpZy9pMzg2L2FteGludDhpbnRyaW4uaDogRGl0dG8uCgkq IGNvbmZpZy9pMzg2L2FteHRpbGVpbnRyaW4uaDogRGl0dG8uCgkqIGNvbmZpZy9pMzg2L2NwdWlk LmggKGJpdF9BTVhfQkYxNiwgYml0X0FNWF9USUxFLCBiaXRfQU1YX0lOVDgpOgoJTmV3IG1hY3Jv LgoJKiBjb25maWcvaTM4Ni9pMzg2LWMuYyAoaXg4Nl90YXJnZXRfbWFjcm9zX2ludGVybmFsKTog RGVmaW5lCglfX0FNWF9USUxFX18sIF9fQU1YX0lOVDhfXywgQU1YX0JGMTZfXy4KCSogY29uZmln L2kzODYvaTM4Ni1vcHRpb25zLmMgKGl4ODZfdGFyZ2V0X3N0cmluZyk6IEFkZAoJLW1hbXgtdGls ZSwgLW1hbXgtaW50OCwgLW1hbXgtYmYxNi4KCShpeDg2X29wdGlvbl9vdmVycmlkZV9pbnRlcm5h bCk6IEhhbmRsZSBBTVgtVElMRSwKCUFNWC1JTlQ4LCBBTVgtQkYxNi4KCSogY29uZmlnL2kzODYv aTM4Ni5oIChUQVJHRVRfQU1YX1RJTEUsIFRBUkdFVF9BTVhfVElMRV9QLAoJVEFSR0VUX0FNWF9J TlQ4LCBUQVJHRVRfQU1YX0lOVDhfUCwgVEFSR0VUX0FNWF9CRjE2X1AsCglQVEFfQU1YX1RJTEUs IFBUQV9BTVhfSU5UOCwgUFRBX0FNWF9CRjE2KTogTmV3IG1hY3Jvcy4KCSogY29uZmlnL2kzODYv aTM4Ni5vcHQ6IEFkZCAtbWFteC10aWxlLCAtbWFteC1pbnQ4LCAtbWFteC1iZjE2LgoJKiBjb25m aWcvaTM4Ni9pbW1pbnRyaW4uaDogSW5jbHVkZSBhbXh0aWxlaW50cmluLmgsCglhbXhpbnQ4aW50 cmluLmgsIGFteGJmMTZpbnRyaW4uaC4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCAtbWFt eC10aWxlLCAtbWFteC1pbnQ4LCAtbWFteC1iZjE2LgoJKiBkb2MvZXh0ZW5kLnRleGk6IERvY3Vt ZW50IGFteC10aWxlLCBhbXgtaW50OCwgYW14LWJmMTYuCgkqIGRvYy9zb3VyY2VidWlsZC50ZXhp ICgoRWZmZWN0aXZlLVRhcmdldCBLZXl3b3JkcywgT3RoZXIKCWhhcmR3YXJlIGF0dHJpYnV0ZXMp OiBEb2N1bWVudCBhbXhfaW50OCwgYW14X3RpbGUsIGFteF9iZjE2LgoKZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cKCgkqIGxpYi90YXJnZXQtc3VwcG9ydHMuZXhwIChjaGVja19lZmZlY3RpdmVfdGFy Z2V0X2FteF90aWxlLAoJY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9hbXhfaW50OCwKCWNoZWNrX2Vm ZmVjdGl2ZV90YXJnZXRfYW14X2JmMTYpOiBOZXcgcHJvYy4KCSogZysrLmRnL290aGVyL2kzODYt Mi5DOiBBZGQgLW1hbXgtdGlsZSwgLW1hbXgtaW50OCwgLW1hbXgtYmYxNi4KCSogZysrLmRnL290 aGVyL2kzODYtMy5DOiBEaXR0by4KCSogZ2NjLnRhcmdldC9pMzg2L3NzZS0xMi5jOiBEaXR0by4K CSogZ2NjLnRhcmdldC9pMzg2L3NzZS0xMy5jOiBEaXR0by4KCSogZ2NjLnRhcmdldC9pMzg2L3Nz ZS0xNC5jOiBEaXR0by4KCSogZ2NjLnRhcmdldC9pMzg2L3NzZS0yMi5jOiBEaXR0by4KCSogZ2Nj LnRhcmdldC9pMzg2L3NzZS0yMy5jOiBEaXR0by4KCSogZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVj LTU2LmluYzogQWRkIG5ldyB0YXJnZXQgYXR0cmlidXRlLgoJKiBnY2MudGFyZ2V0L2kzODYvYW14 LWNoZWNrLmg6IE5ldyBoZWFkZXIgZmlsZS4KCSogZ2NjLmdhcmdldC9pMzg2L2FteGJmMTYtYXNt YXR0LTEuYzogTmV3IHRlc3QuCgkqIGdjYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWFzbWF0dC0xLmM6 IERpdHRvLgoJKiBnY2MudGFyZ2V0L2kzODYvYW14dGlsZS1hc21hdHQtMS5jOiBEaXR0by4KCSog Z2NjLnRhcmdldC9pMzg2L2FteGJmMTYtYXNtaW50ZWwtMS5jOiBEaXR0by4KCSogZ2NjLnRhcmdl dC9pMzg2L2FteGludDgtYXNtaW50ZWwtMS5jOiBEaXR0by4KCSogZ2NjLnRhcmdldC9pMzg2L2Ft eHRpbGUtYXNtaW50ZWwtMS5jOiBEaXR0by4KCSogZ2NjLnRhcmdldC9pMzg2L2FteGJmMTYtZHBi ZjE2cHMtMi5jOiBEaXR0by4KCSogZ2NjLnRhcmdldC9pMzg2L2FteGludDgtZHBic3NkLTIuYzog RGl0dG8uCgkqIGdjYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWRwYnN1ZC0yLmM6IERpdHRvLgoJKiBn Y2MudGFyZ2V0L2kzODYvYW14aW50OC1kcGJ1c2QtMi5jOiBEaXR0by4KCSogZ2NjLnRhcmdldC9p Mzg2L2FteGludDgtZHBidXVkLTIuYzogRGl0dG8uCgkqIGdjYy50YXJnZXQvaTM4Ni9hbXh0aWxl LTIuYzogRGl0dG8uCgpBZGQgQU1YIHJ1bnRpbWUgdGVzdGNhc2VzCi0tLQogZ2NjL2NvbW1vbi9j b25maWcvaTM4Ni9jcHVpbmZvLmggICAgICAgICAgICAgIHwgIDE2ICsrCiBnY2MvY29tbW9uL2Nv bmZpZy9pMzg2L2kzODYtY29tbW9uLmMgICAgICAgICAgfCAgNDUgKysrKwogZ2NjL2NvbW1vbi9j b25maWcvaTM4Ni9pMzg2LWNwdWluZm8uaCAgICAgICAgIHwgICAzICsKIGdjYy9jb21tb24vY29u ZmlnL2kzODYvaTM4Ni1pc2FzLmggICAgICAgICAgICB8ICAgMyArCiBnY2MvY29uZmlnLmdjYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIGdjYy9jb25maWcvaTM4Ni9h bXhiZjE2aW50cmluLmggICAgICAgICAgICAgICB8ICAyOSArKysKIGdjYy9jb25maWcvaTM4Ni9h bXhpbnQ4aW50cmluLmggICAgICAgICAgICAgICB8ICAzOCArKysKIGdjYy9jb25maWcvaTM4Ni9h bXh0aWxlaW50cmluLmggICAgICAgICAgICAgICB8ICA3NCArKysrKysKIGdjYy9jb25maWcvaTM4 Ni9jcHVpZC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBnY2MvY29uZmlnL2kzODYv aTM4Ni1jLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwogZ2NjL2NvbmZpZy9pMzg2L2kz ODYtb3B0aW9ucy5jICAgICAgICAgICAgICAgIHwgIDIwICstCiBnY2MvY29uZmlnL2kzODYvaTM4 Ni5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIGdjYy9jb25maWcvaTM4Ni9pMzg2 Lm9wdCAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArLQogZ2NjL2NvbmZpZy9pMzg2L2ltbWlu dHJpbi5oICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGdjYy9kb2MvZXh0ZW5kLnRleGkgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArKwogZ2NjL2RvYy9pbnZva2UudGV4aSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGdjYy9kb2Mvc291cmNlYnVpbGQudGV4aSAg ICAgICAgICAgICAgICAgICAgICB8ICAgOSArCiBnY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9p Mzg2LTIuQyAgICAgICAgICAgfCAgIDMgKy0KIGdjYy90ZXN0c3VpdGUvZysrLmRnL290aGVyL2kz ODYtMy5DICAgICAgICAgICB8ICAgMyArLQogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YW14LWNoZWNrLmggICAgIHwgMjE2ICsrKysrKysrKysrKysrKysrKwogLi4uL2djYy50YXJnZXQv aTM4Ni9hbXhiZjE2LWFzbWF0dC0xLmMgICAgICAgIHwgIDEzICsrCiAuLi4vZ2NjLnRhcmdldC9p Mzg2L2FteGJmMTYtYXNtaW50ZWwtMS5jICAgICAgfCAgIDkgKwogLi4uL2djYy50YXJnZXQvaTM4 Ni9hbXhiZjE2LWRwYmYxNnBzLTIuYyAgICAgIHwgIDgzICsrKysrKysKIC4uLi9nY2MudGFyZ2V0 L2kzODYvYW14aW50OC1hc21hdHQtMS5jICAgICAgICB8ICAxOSArKwogLi4uL2djYy50YXJnZXQv aTM4Ni9hbXhpbnQ4LWFzbWludGVsLTEuYyAgICAgIHwgIDE1ICsrCiAuLi4vZ2NjLnRhcmdldC9p Mzg2L2FteGludDgtZHBic3NkLTIuYyAgICAgICAgfCAgNjIgKysrKysKIC4uLi9nY2MudGFyZ2V0 L2kzODYvYW14aW50OC1kcGJzdWQtMi5jICAgICAgICB8ICA2MSArKysrKwogLi4uL2djYy50YXJn ZXQvaTM4Ni9hbXhpbnQ4LWRwYnVzZC0yLmMgICAgICAgIHwgIDYxICsrKysrCiAuLi4vZ2NjLnRh cmdldC9pMzg2L2FteGludDgtZHBidXVkLTIuYyAgICAgICAgfCAgNjEgKysrKysKIGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteHRpbGUtMi5jICAgICB8ICA0NyArKysrCiAuLi4vZ2Nj LnRhcmdldC9pMzg2L2FteHRpbGUtYXNtYXR0LTEuYyAgICAgICAgfCAgMzAgKysrCiAuLi4vZ2Nj LnRhcmdldC9pMzg2L2FteHRpbGUtYXNtaW50ZWwtMS5jICAgICAgfCAgMjQgKysKIGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTU2LmluYyB8ICAgNiArCiBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMTIuYyAgICAgICAgfCAgIDIgKy0KIGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xMy5jICAgICAgICB8ICAgMiArLQogZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTE0LmMgICAgICAgIHwgICAyICstCiBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9zc2UtMjIuYyAgICAgICAgfCAgIDUgKy0KIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L3NzZS0yMy5jICAgICAgICB8ICAgMyArLQogZ2NjL3Rlc3RzdWl0ZS9s aWIvdGFyZ2V0LXN1cHBvcnRzLmV4cCAgICAgICAgIHwgIDMzICsrKwogMzkgZmlsZXMgY2hhbmdl ZCwgMTA1NyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvY29uZmlnL2kzODYvYW14YmYxNmludHJpbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L2NvbmZpZy9pMzg2L2FteGludDhpbnRyaW4uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy9jb25m aWcvaTM4Ni9hbXh0aWxlaW50cmluLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hbXgtY2hlY2suaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGJmMTYtYXNtYXR0LTEuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGJmMTYtYXNtaW50ZWwtMS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14YmYxNi1k cGJmMTZwcy0yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hbXhpbnQ4LWFzbWF0dC0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWFzbWludGVsLTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtZHBic3NkLTIuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtZHBic3Vk LTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Ft eGludDgtZHBidXNkLTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2FteGludDgtZHBidXVkLTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteHRpbGUtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14dGlsZS1hc21hdHQtMS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14dGlsZS1hc21pbnRlbC0x LmMKCmRpZmYgLS1naXQgYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2NwdWluZm8uaCBiL2djYy9j b21tb24vY29uZmlnL2kzODYvY3B1aW5mby5oCmluZGV4IDEyMjM3ZTJmNDQ5Li5jOTY0NTVjZTY0 ZiAxMDA2NDQKLS0tIGEvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9jcHVpbmZvLmgKKysrIGIvZ2Nj L2NvbW1vbi9jb25maWcvaTM4Ni9jcHVpbmZvLmgKQEAgLTUwOSwxNSArNTA5LDIwIEBAIGdldF9h dmFpbGFibGVfZmVhdHVyZXMgKHN0cnVjdCBfX3Byb2Nlc3Nvcl9tb2RlbCAqY3B1X21vZGVsLAog I2RlZmluZSBYU1RBVEVfT1BNQVNLCQkJMHgyMAogI2RlZmluZSBYU1RBVEVfWk1NCQkJMHg0MAog I2RlZmluZSBYU1RBVEVfSElfWk1NCQkJMHg4MAorI2RlZmluZSBYU1RBVEVfVElMRUNGRwkJCTB4 MjAwMDAKKyNkZWZpbmUgWFNUQVRFX1RJTEVEQVRBCQkweDQwMDAwCiAKICNkZWZpbmUgWENSX0FW WF9FTkFCTEVEX01BU0sgXAogICAoWFNUQVRFX1NTRSB8IFhTVEFURV9ZTU0pCiAjZGVmaW5lIFhD Ul9BVlg1MTJGX0VOQUJMRURfTUFTSyBcCiAgIChYU1RBVEVfU1NFIHwgWFNUQVRFX1lNTSB8IFhT VEFURV9PUE1BU0sgfCBYU1RBVEVfWk1NIHwgWFNUQVRFX0hJX1pNTSkKKyNkZWZpbmUgWENSX0FN WF9FTkFCTEVEX01BU0sgXAorICAoWFNUQVRFX1RJTEVDRkcgfCBYU1RBVEVfVElMRURBVEEpCiAK ICAgLyogQ2hlY2sgaWYgQVZYIGFuZCBBVlg1MTIgYXJlIHVzYWJsZS4gICovCiAgIGludCBhdnhf dXNhYmxlID0gMDsKICAgaW50IGF2eDUxMl91c2FibGUgPSAwOworICBpbnQgYW14X3VzYWJsZSA9 IDA7CiAgIGlmICgoZWN4ICYgYml0X09TWFNBVkUpKQogICAgIHsKICAgICAgIC8qIENoZWNrIGlm IFhNTSwgWU1NLCBPUE1BU0ssIHVwcGVyIDI1NiBiaXRzIG9mIFpNTTAtWk1NMTUgYW5kCkBAIC01 MzMsNiArNTM4LDggQEAgZ2V0X2F2YWlsYWJsZV9mZWF0dXJlcyAoc3RydWN0IF9fcHJvY2Vzc29y X21vZGVsICpjcHVfbW9kZWwsCiAJICBhdng1MTJfdXNhYmxlID0gKCh4Y3Jsb3cgJiBYQ1JfQVZY NTEyRl9FTkFCTEVEX01BU0spCiAJCQkgICA9PSBYQ1JfQVZYNTEyRl9FTkFCTEVEX01BU0spOwog CX0KKyAgICAgIGFteF91c2FibGUgPSAoKHhjcmxvdyAmIFhDUl9BTVhfRU5BQkxFRF9NQVNLKQor CQkgICAgPT0gWENSX0FNWF9FTkFCTEVEX01BU0spOwogICAgIH0KIAogI2RlZmluZSBzZXRfZmVh dHVyZShmKSBcCkBAIC02NTEsNiArNjU4LDE1IEBAIGdldF9hdmFpbGFibGVfZmVhdHVyZXMgKHN0 cnVjdCBfX3Byb2Nlc3Nvcl9tb2RlbCAqY3B1X21vZGVsLAogCXNldF9mZWF0dXJlIChGRUFUVVJF X1BDT05GSUcpOwogICAgICAgaWYgKGVkeCAmIGJpdF9JQlQpCiAJc2V0X2ZlYXR1cmUgKEZFQVRV UkVfSUJUKTsKKyAgICAgIGlmIChhbXhfdXNhYmxlKQorCXsKKwkgIGlmIChlZHggJiBiaXRfQU1Y X1RJTEUpCisJICAgIHNldF9mZWF0dXJlIChGRUFUVVJFX0FNWF9USUxFKTsKKwkgIGlmIChlZHgg JiBiaXRfQU1YX0lOVDgpCisJICAgIHNldF9mZWF0dXJlIChGRUFUVVJFX0FNWF9JTlQ4KTsKKwkg IGlmIChlZHggJiBiaXRfQU1YX0JGMTYpCisJICAgIHNldF9mZWF0dXJlIChGRUFUVVJFX0FNWF9C RjE2KTsKKwl9CiAgICAgICBpZiAoYXZ4NTEyX3VzYWJsZSkKIAl7CiAJICBpZiAoZWJ4ICYgYml0 X0FWWDUxMkYpCmRpZmYgLS1naXQgYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9u LmMgYi9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9uLmMKaW5kZXggNTMwNTE0NWE4 YzkuLmNkNWE0MzJkNzgzIDEwMDY0NAotLS0gYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYt Y29tbW9uLmMKKysrIGIvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5jCkBAIC0x MDEsNiArMTAxLDkgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElm IG5vdCBzZWUKICAgKE9QVElPTl9NQVNLX0lTQV9YU0FWRUMgfCBPUFRJT05fTUFTS19JU0FfWFNB VkVfU0VUKQogI2RlZmluZSBPUFRJT05fTUFTS19JU0FfQ0xXQl9TRVQgT1BUSU9OX01BU0tfSVNB X0NMV0IKICNkZWZpbmUgT1BUSU9OX01BU0tfSVNBMl9BVlg1MTJWUDJJTlRFUlNFQ1RfU0VUIE9Q VElPTl9NQVNLX0lTQTJfQVZYNTEyVlAySU5URVJTRUNUCisjZGVmaW5lIE9QVElPTl9NQVNLX0lT QTJfQU1YX1RJTEVfU0VUIE9QVElPTl9NQVNLX0lTQTJfQU1YX1RJTEUKKyNkZWZpbmUgT1BUSU9O X01BU0tfSVNBMl9BTVhfSU5UOF9TRVQgT1BUSU9OX01BU0tfSVNBMl9BTVhfSU5UOAorI2RlZmlu ZSBPUFRJT05fTUFTS19JU0EyX0FNWF9CRjE2X1NFVCBPUFRJT05fTUFTS19JU0EyX0FNWF9CRjE2 CiAKIC8qIFNTRTQgaW5jbHVkZXMgYm90aCBTU0U0LjEgYW5kIFNTRTQuMi4gLW1zc2U0IHNob3Vs ZCBiZSB0aGUgc2FtZQogICAgYXMgLW1zc2U0LjIuICAqLwpAQCAtMjQ2LDYgKzI0OSw5IEBAIGFs b25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjZGVmaW5l IE9QVElPTl9NQVNLX0lTQTJfU0VSSUFMSVpFX1VOU0VUIE9QVElPTl9NQVNLX0lTQTJfU0VSSUFM SVpFCiAjZGVmaW5lIE9QVElPTl9NQVNLX0lTQTJfQVZYNTEyVlAySU5URVJTRUNUX1VOU0VUIE9Q VElPTl9NQVNLX0lTQTJfQVZYNTEyVlAySU5URVJTRUNUCiAjZGVmaW5lIE9QVElPTl9NQVNLX0lT QTJfVFNYTERUUktfVU5TRVQgT1BUSU9OX01BU0tfSVNBMl9UU1hMRFRSSworI2RlZmluZSBPUFRJ T05fTUFTS19JU0EyX0FNWF9USUxFX1VOU0VUIE9QVElPTl9NQVNLX0lTQTJfQU1YX1RJTEUKKyNk ZWZpbmUgT1BUSU9OX01BU0tfSVNBMl9BTVhfSU5UOF9VTlNFVCBPUFRJT05fTUFTS19JU0EyX0FN WF9JTlQ4CisjZGVmaW5lIE9QVElPTl9NQVNLX0lTQTJfQU1YX0JGMTZfVU5TRVQgT1BUSU9OX01B U0tfSVNBMl9BTVhfQkYxNgogCiAvKiBTU0U0IGluY2x1ZGVzIGJvdGggU1NFNC4xIGFuZCBTU0U0 LjIuICAtbW5vLXNzZTQgc2hvdWxkIHRoZSBzYW1lCiAgICBhcyAtbW5vLXNzZTQuMS4gKi8KQEAg LTkzMCw2ICs5MzYsNDUgQEAgaXg4Nl9oYW5kbGVfb3B0aW9uIChzdHJ1Y3QgZ2NjX29wdGlvbnMg Km9wdHMsCiAJfQogICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBjYXNlIE9QVF9tYW14X3RpbGU6 CisgICAgICBpZiAodmFsdWUpCisJeworCSAgb3B0cy0+eF9peDg2X2lzYV9mbGFnczIgfD0gT1BU SU9OX01BU0tfSVNBMl9BTVhfVElMRV9TRVQ7CisJICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdzMl9l eHBsaWNpdCB8PSBPUFRJT05fTUFTS19JU0EyX0FNWF9USUxFX1NFVDsKKwl9CisgICAgICBlbHNl CisJeworCSAgb3B0cy0+eF9peDg2X2lzYV9mbGFnczIgJj0gfk9QVElPTl9NQVNLX0lTQTJfQU1Y X1RJTEVfVU5TRVQ7CisJICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdzMl9leHBsaWNpdCB8PSBPUFRJ T05fTUFTS19JU0EyX0FNWF9USUxFX1VOU0VUOworCX0KKyAgICAgIHJldHVybiB0cnVlOworCisg ICAgY2FzZSBPUFRfbWFteF9pbnQ4OgorICAgICAgaWYgKHZhbHVlKQorCXsKKwkgIG9wdHMtPnhf aXg4Nl9pc2FfZmxhZ3MyIHw9IE9QVElPTl9NQVNLX0lTQTJfQU1YX0lOVDhfU0VUOworCSAgb3B0 cy0+eF9peDg2X2lzYV9mbGFnczJfZXhwbGljaXQgfD0gT1BUSU9OX01BU0tfSVNBMl9BTVhfSU5U OF9TRVQ7CisJfQorICAgICAgZWxzZQorCXsKKwkgIG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3MyICY9 IH5PUFRJT05fTUFTS19JU0EyX0FNWF9JTlQ4X1VOU0VUOworCSAgb3B0cy0+eF9peDg2X2lzYV9m bGFnczJfZXhwbGljaXQgfD0gT1BUSU9OX01BU0tfSVNBMl9BTVhfSU5UOF9VTlNFVDsKKwl9Cisg ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgT1BUX21hbXhfYmYxNjoKKyAgICAgIGlmICh2 YWx1ZSkKKwl7CisJICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdzMiB8PSBPUFRJT05fTUFTS19JU0Ey X0FNWF9CRjE2X1NFVDsKKwkgIG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3MyX2V4cGxpY2l0IHw9IE9Q VElPTl9NQVNLX0lTQTJfQU1YX0JGMTZfU0VUOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBvcHRz LT54X2l4ODZfaXNhX2ZsYWdzMiAmPSB+T1BUSU9OX01BU0tfSVNBMl9BTVhfQkYxNl9VTlNFVDsK KwkgIG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3MyX2V4cGxpY2l0IHw9IE9QVElPTl9NQVNLX0lTQTJf QU1YX0JGMTZfVU5TRVQ7CisJfQorICAgICAgcmV0dXJuIHRydWU7CisKICAgICBjYXNlIE9QVF9t Zm1hOgogICAgICAgaWYgKHZhbHVlKQogCXsKZGlmZiAtLWdpdCBhL2djYy9jb21tb24vY29uZmln L2kzODYvaTM4Ni1jcHVpbmZvLmggYi9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY3B1aW5m by5oCmluZGV4IDg0Y2E5N2U3YWRlLi41Yjk0YjFmMWRmNyAxMDA2NDQKLS0tIGEvZ2NjL2NvbW1v bi9jb25maWcvaTM4Ni9pMzg2LWNwdWluZm8uaAorKysgYi9nY2MvY29tbW9uL2NvbmZpZy9pMzg2 L2kzODYtY3B1aW5mby5oCkBAIC0yMTYsNiArMjE2LDkgQEAgZW51bSBwcm9jZXNzb3JfZmVhdHVy ZXMKICAgRkVBVFVSRV9YU0FWRUMsCiAgIEZFQVRVUkVfWFNBVkVPUFQsCiAgIEZFQVRVUkVfWFNB VkVTLAorICBGRUFUVVJFX0FNWF9USUxFLAorICBGRUFUVVJFX0FNWF9JTlQ4LAorICBGRUFUVVJF X0FNWF9CRjE2LAogICBDUFVfRkVBVFVSRV9NQVgKIH07CiAKZGlmZiAtLWdpdCBhL2djYy9jb21t b24vY29uZmlnL2kzODYvaTM4Ni1pc2FzLmggYi9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYt aXNhcy5oCmluZGV4IDA4YzlkYmVjYzc2Li4zYzgzMGVhMDhmZiAxMDA2NDQKLS0tIGEvZ2NjL2Nv bW1vbi9jb25maWcvaTM4Ni9pMzg2LWlzYXMuaAorKysgYi9nY2MvY29tbW9uL2NvbmZpZy9pMzg2 L2kzODYtaXNhcy5oCkBAIC0xNjAsNCArMTYwLDcgQEAgSVNBX05BTUVTX1RBQkxFX1NUQVJUCiAg IElTQV9OQU1FU19UQUJMRV9FTlRSWSgieHNhdmVvcHQiLCBGRUFUVVJFX1hTQVZFT1BULCBQX05P TkUsCiAJCQkiLW14c2F2ZW9wdCIpCiAgIElTQV9OQU1FU19UQUJMRV9FTlRSWSgieHNhdmVzIiwg RkVBVFVSRV9YU0FWRVMsIFBfTk9ORSwgIi1teHNhdmVzIikKKyAgSVNBX05BTUVTX1RBQkxFX0VO VFJZKCJhbXgtdGlsZSIsIEZFQVRVUkVfQU1YX1RJTEUsIFBfTk9ORSwgIi1tYW14LXRpbGUiKQor ICBJU0FfTkFNRVNfVEFCTEVfRU5UUlkoImFteC1pbnQ4IiwgRkVBVFVSRV9BTVhfSU5UOCwgUF9O T05FLCAiLW1hbXgtaW50OCIpCisgIElTQV9OQU1FU19UQUJMRV9FTlRSWSgiYW14LWJmMTYiLCBG RUFUVVJFX0FNWF9CRjE2LCBQX05PTkUsICItbWFteC1iZjE2IikKIElTQV9OQU1FU19UQUJMRV9F TkQKZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKaW5kZXggNzk3 ZjBhZDVlZGQuLjU3MTNlNmQzODkzIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnLmdjYworKysgYi9n Y2MvY29uZmlnLmdjYwpAQCAtNDEyLDcgKzQxMiw4IEBAIGlbMzQ1NjddODYtKi0qKQogCQkgICAg ICAgd2FpdHBrZ2ludHJpbi5oIGNsZGVtb3RlaW50cmluLmggYXZ4NTEyYmYxNnZsaW50cmluLmgK IAkJICAgICAgIGF2eDUxMmJmMTZpbnRyaW4uaCBlbnFjbWRpbnRyaW4uaCBzZXJpYWxpemVpbnRy aW4uaAogCQkgICAgICAgYXZ4NTEydnAyaW50ZXJzZWN0aW50cmluLmggYXZ4NTEydnAyaW50ZXJz ZWN0dmxpbnRyaW4uaAotCQkgICAgICAgdHN4bGR0cmtpbnRyaW4uaCIKKwkJICAgICAgIHRzeGxk dHJraW50cmluLmggYW14dGlsZWludHJpbi5oIGFteGludDhpbnRyaW4uaAorCQkgICAgICAgYW14 YmYxNmludHJpbi5oIgogCTs7CiB4ODZfNjQtKi0qKQogCWNwdV90eXBlPWkzODYKQEAgLTQ0Nyw3 ICs0NDgsOCBAQCB4ODZfNjQtKi0qKQogCQkgICAgICAgd2FpdHBrZ2ludHJpbi5oIGNsZGVtb3Rl aW50cmluLmggYXZ4NTEyYmYxNnZsaW50cmluLmgKIAkJICAgICAgIGF2eDUxMmJmMTZpbnRyaW4u aCBlbnFjbWRpbnRyaW4uaCBzZXJpYWxpemVpbnRyaW4uaAogCQkgICAgICAgYXZ4NTEydnAyaW50 ZXJzZWN0aW50cmluLmggYXZ4NTEydnAyaW50ZXJzZWN0dmxpbnRyaW4uaAotCQkgICAgICAgdHN4 bGR0cmtpbnRyaW4uaCIKKwkJICAgICAgIHRzeGxkdHJraW50cmluLmggYW14dGlsZWludHJpbi5o IGFteGludDhpbnRyaW4uaAorCQkgICAgICAgYW14YmYxNmludHJpbi5oIgogCTs7CiBpYTY0LSot KikKIAlleHRyYV9oZWFkZXJzPWlhNjRpbnRyaW4uaApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9p Mzg2L2FteGJmMTZpbnRyaW4uaCBiL2djYy9jb25maWcvaTM4Ni9hbXhiZjE2aW50cmluLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxNjIwOTYzOTQ0Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2FteGJmMTZpbnRyaW4uaApAQCAtMCwwICsxLDI5 IEBACisjaWYgIWRlZmluZWQgX0lNTUlOVFJJTl9IX0lOQ0xVREVECisjZXJyb3IgIk5ldmVyIHVz ZSA8YW14YmYxNmludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGluc3Rl YWQuIgorI2VuZGlmCisKKyNpZm5kZWYgX0FNWEJGMTZJTlRSSU5fSF9JTkNMVURFRAorI2RlZmlu ZSBfQU1YQkYxNklOVFJJTl9IX0lOQ0xVREVECisKKyNpZiAhZGVmaW5lZChfX0FNWF9CRjE2X18p CisjcHJhZ21hIEdDQyBwdXNoX29wdGlvbnMKKyNwcmFnbWEgR0NDIHRhcmdldCgiYW14LWJmMTYi KQorI2RlZmluZSBfX0RJU0FCTEVfQU1YX0JGMTZfXworI2VuZGlmIC8qIF9fQU1YX0JGMTZfXyAq LworCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fQU1YX0JGMTZfXykKKyNk ZWZpbmUgX3RpbGVfZHBiZjE2cHNfaW50ZXJuYWwoZHN0LHNyYzEsc3JjMikJCQkJCVwKKyAgX19h c21fXyB2b2xhdGlsZVwKKyAgKCJ7dGRwYmYxNnBzXHQlJXRtbSIjc3JjMiIsICUldG1tIiNzcmMx IiwgJSV0bW0iI2RzdCJ8dGRwYmYxNnBzXHQlJXRtbSIjZHN0IiwgJSV0bW0iI3NyYzEiLCAlJXRt bSIjc3JjMiJ9IiA6OikKKworI2RlZmluZSBfdGlsZV9kcGJmMTZwcyhkc3Qsc3JjMSxzcmMyKQkJ CQkJXAorICBfdGlsZV9kcGJmMTZwc19pbnRlcm5hbCAoZHN0LCBzcmMxLCBzcmMyKQorCisjZW5k aWYKKworI2lmZGVmIF9fRElTQUJMRV9BTVhfQkYxNl9fCisjdW5kZWYgX19ESVNBQkxFX0FNWF9C RjE2X18KKyNwcmFnbWEgR0NDIHBvcF9vcHRpb25zCisjZW5kaWYgLyogX19ESVNBQkxFX0FNWF9C RjE2X18gKi8KKworI2VuZGlmIC8qIF9BTVhCRjE2SU5UUklOX0hfSU5DTFVERUQgKi8KZGlmZiAt LWdpdCBhL2djYy9jb25maWcvaTM4Ni9hbXhpbnQ4aW50cmluLmggYi9nY2MvY29uZmlnL2kzODYv YW14aW50OGludHJpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x MWFkYzFmMTI5NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvaTM4Ni9hbXhpbnQ4aW50 cmluLmgKQEAgLTAsMCArMSwzOCBAQAorI2lmICFkZWZpbmVkIF9JTU1JTlRSSU5fSF9JTkNMVURF RAorI2Vycm9yICJOZXZlciB1c2UgPGFteGludDhpbnRyaW4uaD4gZGlyZWN0bHk7IGluY2x1ZGUg PGltbWludHJpbi5oPiBpbnN0ZWFkLiIKKyNlbmRpZgorCisjaWZuZGVmIF9BTVhJTlQ4SU5UUklO X0hfSU5DTFVERUQKKyNkZWZpbmUgX0FNWElOVDhJTlRSSU5fSF9JTkNMVURFRAorCisjaWYgIWRl ZmluZWQoX19BTVhfSU5UOF9fKQorI3ByYWdtYSBHQ0MgcHVzaF9vcHRpb25zCisjcHJhZ21hIEdD QyB0YXJnZXQoImFteC1pbnQ4IikKKyNkZWZpbmUgX19ESVNBQkxFX0FNWF9JTlQ4X18KKyNlbmRp ZiAvKiBfX0FNWF9JTlQ4X18gKi8KKworI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5l ZChfX0FNWF9JTlQ4X18pCisjZGVmaW5lIF90aWxlX2ludDhfZHBfaW50ZXJuYWwobmFtZSxkc3Qs c3JjMSxzcmMyKQkJCQkJXAorICBfX2FzbV9fIHZvbGF0aWxlCQkJCQkJCVwKKyAgKCJ7IiNuYW1l Ilx0JSV0bW0iI3NyYzIiLCAlJXRtbSIjc3JjMSIsICUldG1tIiNkc3QifCIjbmFtZSJcdCUldG1t IiNkc3QiLCAlJXRtbSIjc3JjMSIsICUldG1tIiNzcmMyIn0iIDo6KQorCisjZGVmaW5lIF90aWxl X2RwYnNzZChkc3Qsc3JjMSxzcmMyKQkJCQkJXAorICBfdGlsZV9pbnQ4X2RwX2ludGVybmFsICh0 ZHBic3NkLCBkc3QsIHNyYzEsIHNyYzIpCisKKyNkZWZpbmUgX3RpbGVfZHBic3VkKGRzdCxzcmMx LHNyYzIpCQkJCQlcCisgIF90aWxlX2ludDhfZHBfaW50ZXJuYWwgKHRkcGJzdWQsIGRzdCwgc3Jj MSwgc3JjMikKKworI2RlZmluZSBfdGlsZV9kcGJ1c2QoZHN0LHNyYzEsc3JjMikJCQkJCVwKKyAg X3RpbGVfaW50OF9kcF9pbnRlcm5hbCAodGRwYnVzZCwgZHN0LCBzcmMxLCBzcmMyKQorCisjZGVm aW5lIF90aWxlX2RwYnV1ZChkc3Qsc3JjMSxzcmMyKQkJCQkJXAorICBfdGlsZV9pbnQ4X2RwX2lu dGVybmFsICh0ZHBidXVkLCBkc3QsIHNyYzEsIHNyYzIpCisKKyNlbmRpZgorCisjaWZkZWYgX19E SVNBQkxFX0FNWF9JTlQ4X18KKyN1bmRlZiBfX0RJU0FCTEVfQU1YX0lOVDhfXworI3ByYWdtYSBH Q0MgcG9wX29wdGlvbnMKKyNlbmRpZiAvKiBfX0RJU0FCTEVfQU1YX0lOVDhfXyAqLworCisjZW5k aWYgLyogX0FNWElOVDhJTlRSSU5fSF9JTkNMVURFRCAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9pMzg2L2FteHRpbGVpbnRyaW4uaCBiL2djYy9jb25maWcvaTM4Ni9hbXh0aWxlaW50cmluLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlMjNiNjgyZmExCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2FteHRpbGVpbnRyaW4uaApAQCAtMCwwICsx LDc0IEBACisjaWYgIWRlZmluZWQgX0lNTUlOVFJJTl9IX0lOQ0xVREVECisjZXJyb3IgIk5ldmVy IHVzZSA8YW14dGlsZWludHJpbi5oPiBkaXJlY3RseTsgaW5jbHVkZSA8aW1taW50cmluLmg+IGlu c3RlYWQuIgorI2VuZGlmCisKKyNpZm5kZWYgX0FNWFRJTEVJTlRSSU5fSF9JTkNMVURFRAorI2Rl ZmluZSBfQU1YVElMRUlOVFJJTl9IX0lOQ0xVREVECisKKyNpZiAhZGVmaW5lZChfX0FNWF9USUxF X18pCisjcHJhZ21hIEdDQyBwdXNoX29wdGlvbnMKKyNwcmFnbWEgR0NDIHRhcmdldCgiYW14LXRp bGUiKQorI2RlZmluZSBfX0RJU0FCTEVfQU1YX1RJTEVfXworI2VuZGlmIC8qIF9fQU1YX1RJTEVf XyAqLworCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fQU1YX1RJTEVfXykK K2V4dGVybiBfX2lubGluZSB2b2lkCitfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK190aWxlX2xvYWRjb25maWcgKGNvbnN0 IHZvaWQgKl9fY29uZmlnKQoreworICBfX2FzbV9fIHZvbGF0aWxlICgibGR0aWxlY2ZnXHQlWDAi IDo6ICJtIiAoKigoY29uc3Qgdm9pZCAqKilfX2NvbmZpZykpKTsKK30KKworZXh0ZXJuIF9faW5s aW5lIHZvaWQKK19fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQorX3RpbGVfc3RvcmVjb25maWcgKHZvaWQgKl9fY29uZmlnKQor eworICBfX2FzbV9fIHZvbGF0aWxlICgic3R0aWxlY2ZnXHQlWDAiIDogIj1tIiAoKigodm9pZCAq KilfX2NvbmZpZykpKTsKK30KKworZXh0ZXJuIF9faW5saW5lIHZvaWQKK19fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX3Rp bGVfcmVsZWFzZSAodm9pZCkKK3sKKyAgX19hc21fXyB2b2xhdGlsZSAoInRpbGVyZWxlYXNlIiA6 Oik7Cit9CisKKyNkZWZpbmUgX3RpbGVfbG9hZGQoZHN0LGJhc2Usc3RyaWRlKQkJXAorICBfdGls ZV9sb2FkZF9pbnRlcm5hbCAoZHN0LCBiYXNlLCBzdHJpZGUpCisKKyNkZWZpbmUgX3RpbGVfbG9h ZGRfaW50ZXJuYWwoZHN0LGJhc2Usc3RyaWRlKQkJCQlcCisgIF9fYXNtX18gdm9sYXRpbGUJCQkJ CQkJXAorICAoInt0aWxlbG9hZGRcdCglMCwlMSwxKSwgJSV0bW0iI2RzdCJ8dGlsZWxvYWRkXHQl JXRtbSIjZHN0IiwgWyUwKyUxKjFdfSIgXAorICAgOjogInIiICgoY29uc3Qgdm9pZCopIGJhc2Up LCAiciIgKChsb25nKSBzdHJpZGUpKQorCisjZGVmaW5lIF90aWxlX3N0cmVhbV9sb2FkZChkc3Qs YmFzZSxzdHJpZGUpCQlcCisgIF90aWxlX3N0cmVhbV9sb2FkZF9pbnRlcm5hbCAoZHN0LCBiYXNl LCBzdHJpZGUpCisKKyNkZWZpbmUgX3RpbGVfc3RyZWFtX2xvYWRkX2ludGVybmFsKGRzdCxiYXNl LHN0cmlkZSkJCQlcCisgIF9fYXNtX18gdm9sYXRpbGUJCQkJCQkJXAorICAoInt0aWxlbG9hZGR0 MVx0KCUwLCUxLDEpLCAlJXRtbSIjZHN0Inx0aWxlbG9hZGR0MVx0JSV0bW0iI2RzdCIsIFslMCsl MSoxXX0iIFwKKyAgIDo6ICJyIiAoKGNvbnN0IHZvaWQqKSBiYXNlKSwgInIiICgobG9uZykgc3Ry aWRlKSkKKworI2RlZmluZSBfdGlsZV9zdG9yZWQoZHN0LGJhc2Usc3RyaWRlKQkJXAorICBfdGls ZV9zdG9yZWRfaW50ZXJuYWwgKGRzdCwgYmFzZSwgc3RyaWRlKQorCisjZGVmaW5lIF90aWxlX3N0 b3JlZF9pbnRlcm5hbChzcmMsYmFzZSxzdHJpZGUpCQkJCVwKKyAgX19hc21fXyB2b2xhdGlsZQkJ CQkJCQlcCisgICgie3RpbGVzdG9yZWRcdCUldG1tIiNzcmMiLCAoJTAsJTEsMSl8dGlsZXN0b3Jl ZFx0WyUwKyUxKjFdLCAlJXRtbSIjc3JjIn0iIFwKKyAgIDo6ICJyIiAoKHZvaWQqKSBiYXNlKSwg InIiICgobG9uZykgc3RyaWRlKSkKKworI2RlZmluZSBfdGlsZV96ZXJvKGRzdCkJCQkJXAorICBf dGlsZV96ZXJvX2ludGVybmFsIChkc3QpCisKKyNkZWZpbmUgX3RpbGVfemVyb19pbnRlcm5hbChk c3QpCQlcCisgIF9fYXNtX18gdm9sYXRpbGUJCQkJXAorICAoInRpbGV6ZXJvXHQlJXRtbSIjZHN0 IDo6KQorCisjZW5kaWYKKworI2lmZGVmIF9fRElTQUJMRV9BTVhfVElMRV9fCisjdW5kZWYgX19E SVNBQkxFX0FNWF9USUxFX18KKyNwcmFnbWEgR0NDIHBvcF9vcHRpb25zCisjZW5kaWYgLyogX19E SVNBQkxFX0FNWF9USUxFX18gKi8KKworI2VuZGlmIC8qIF9BTVhUSUxFSU5UUklOX0hfSU5DTFVE RUQgKi8KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9jcHVpZC5oIGIvZ2NjL2NvbmZpZy9p Mzg2L2NwdWlkLmgKaW5kZXggYmNhNjFkNjIwZGIuLjQ1OTg0MzRmZDAyIDEwMDY0NAotLS0gYS9n Y2MvY29uZmlnL2kzODYvY3B1aWQuaAorKysgYi9nY2MvY29uZmlnL2kzODYvY3B1aWQuaApAQCAt MTI3LDYgKzEyNyw5IEBACiAjZGVmaW5lIGJpdF9QQ09ORklHCSgxIDw8IDE4KQogI2RlZmluZSBi aXRfU0VSSUFMSVpFCSgxIDw8IDE0KQogI2RlZmluZSBiaXRfVFNYTERUUksgICAgKDEgPDwgMTYp CisjZGVmaW5lIGJpdF9BTVhfQkYxNiAgICAoMSA8PCAyMikKKyNkZWZpbmUgYml0X0FNWF9USUxF ICAgICgxIDw8IDI0KQorI2RlZmluZSBiaXRfQU1YX0lOVDggICAgKDEgPDwgMjUpCiAKIC8qIFhG RUFUVVJFX0VOQUJMRURfTUFTSyByZWdpc3RlciBiaXRzICglZWF4ID09IDB4ZCwgJWVjeCA9PSAw KSAqLwogI2RlZmluZSBiaXRfQk5EUkVHUyAgICAgKDEgPDwgMykKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvaTM4Ni9pMzg2LWMuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LWMuYwppbmRleCAyZDYx YTBjZTcwYS4uNmE2OGU3Y2FmMDggMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LWMu YworKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1jLmMKQEAgLTU4OCw2ICs1ODgsMTMgQEAgaXg4 Nl90YXJnZXRfbWFjcm9zX2ludGVybmFsIChIT1NUX1dJREVfSU5UIGlzYV9mbGFnLAogICAgIGRl Zl9vcl91bmRlZiAocGFyc2VfaW4sICJfX0VOUUNNRF9fIik7CiAgIGlmIChpc2FfZmxhZzIgJiBP UFRJT05fTUFTS19JU0EyX1RTWExEVFJLKQogICAgIGRlZl9vcl91bmRlZiAocGFyc2VfaW4sICJf X1RTWExEVFJLX18iKTsKKyAgaWYgKGlzYV9mbGFnMiAmIE9QVElPTl9NQVNLX0lTQTJfQU1YX1RJ TEUpCisgICAgZGVmX29yX3VuZGVmIChwYXJzZV9pbiwgIl9fQU1YX1RJTEVfXyIpOworICBpZiAo aXNhX2ZsYWcyICYgT1BUSU9OX01BU0tfSVNBMl9BTVhfSU5UOCkKKyAgICBkZWZfb3JfdW5kZWYg KHBhcnNlX2luLCAiX19BTVhfSU5UOF9fIik7CisgIGlmIChpc2FfZmxhZzIgJiBPUFRJT05fTUFT S19JU0EyX0FNWF9CRjE2KQorICAgIGRlZl9vcl91bmRlZiAocGFyc2VfaW4sICJfX0FNWF9CRjE2 X18iKTsKKwogICBpZiAoVEFSR0VUX0lBTUNVKQogICAgIHsKICAgICAgIGRlZl9vcl91bmRlZiAo cGFyc2VfaW4sICJfX2lhbWN1Iik7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1v cHRpb25zLmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1vcHRpb25zLmMKaW5kZXggYjkzYzMzODM0 NmYuLmY3OWI2YTg5MjcwIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1vcHRpb25z LmMKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0aW9ucy5jCkBAIC0yMDksNyArMjA5LDEw IEBAIHN0YXRpYyBzdHJ1Y3QgaXg4Nl90YXJnZXRfb3B0cyBpc2EyX29wdHNbXSA9CiAgIHsgIi1t YXZ4NTEyYmYxNiIsCU9QVElPTl9NQVNLX0lTQTJfQVZYNTEyQkYxNiB9LAogICB7ICItbWVucWNt ZCIsCQlPUFRJT05fTUFTS19JU0EyX0VOUUNNRCB9LAogICB7ICItbXNlcmlhbGl6ZSIsCU9QVElP Tl9NQVNLX0lTQTJfU0VSSUFMSVpFIH0sCi0gIHsgIi1tdHN4bGR0cmsiLAlPUFRJT05fTUFTS19J U0EyX1RTWExEVFJLIH0KKyAgeyAiLW10c3hsZHRyayIsCU9QVElPTl9NQVNLX0lTQTJfVFNYTERU UksgfSwKKyAgeyAiLW1hbXgtdGlsZSIsCU9QVElPTl9NQVNLX0lTQTJfQU1YX1RJTEUgfSwKKyAg eyAiLW1hbXgtaW50OCIsCU9QVElPTl9NQVNLX0lTQTJfQU1YX0lOVDggfSwKKyAgeyAiLW1hbXgt YmYxNiIsCU9QVElPTl9NQVNLX0lTQTJfQU1YX0JGMTYgfQogfTsKIHN0YXRpYyBzdHJ1Y3QgaXg4 Nl90YXJnZXRfb3B0cyBpc2Ffb3B0c1tdID0KIHsKQEAgLTEwMzEsNiArMTAzNCw5IEBAIGl4ODZf dmFsaWRfdGFyZ2V0X2F0dHJpYnV0ZV9pbm5lcl9wICh0cmVlIGZuZGVjbCwgdHJlZSBhcmdzLCBj aGFyICpwX3N0cmluZ3NbXSwKICAgICBJWDg2X0FUVFJfSVNBICgiZW5xY21kIiwgT1BUX21lbnFj bWQpLAogICAgIElYODZfQVRUUl9JU0EgKCJzZXJpYWxpemUiLCBPUFRfbXNlcmlhbGl6ZSksCiAg ICAgSVg4Nl9BVFRSX0lTQSAoInRzeGxkdHJrIiwgT1BUX210c3hsZHRyayksCisgICAgSVg4Nl9B VFRSX0lTQSAoImFteC10aWxlIiwgT1BUX21hbXhfdGlsZSksCisgICAgSVg4Nl9BVFRSX0lTQSAo ImFteC1pbnQ4IiwgT1BUX21hbXhfaW50OCksCisgICAgSVg4Nl9BVFRSX0lTQSAoImFteC1iZjE2 IiwgT1BUX21hbXhfYmYxNiksCiAKICAgICAvKiBlbnVtIG9wdGlvbnMgKi8KICAgICBJWDg2X0FU VFJfRU5VTSAoImZwbWF0aD0iLAlPUFRfbWZwbWF0aF8pLApAQCAtMjI1NCw2ICsyMjYwLDE4IEBA IGl4ODZfb3B0aW9uX292ZXJyaWRlX2ludGVybmFsIChib29sIG1haW5fYXJnc19wLAogCSAgICAm JiAhKG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3MyX2V4cGxpY2l0CiAJCSAmIE9QVElPTl9NQVNLX0lT QTJfQVZYNTEyQkYxNikpCiAJICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdzMiB8PSBPUFRJT05fTUFT S19JU0EyX0FWWDUxMkJGMTY7CisJaWYgKCgocHJvY2Vzc29yX2FsaWFzX3RhYmxlW2ldLmZsYWdz ICYgUFRBX0FNWF9USUxFKSAhPSAwKQorCSAgICAmJiAhKG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3My X2V4cGxpY2l0CisJCSAmIE9QVElPTl9NQVNLX0lTQTJfQU1YX1RJTEUpKQorCSAgb3B0cy0+eF9p eDg2X2lzYV9mbGFnczIgfD0gT1BUSU9OX01BU0tfSVNBMl9BTVhfVElMRTsKKwlpZiAoKChwcm9j ZXNzb3JfYWxpYXNfdGFibGVbaV0uZmxhZ3MgJiBQVEFfQU1YX0lOVDgpICE9IDApCisJICAgICYm ICEob3B0cy0+eF9peDg2X2lzYV9mbGFnczJfZXhwbGljaXQKKwkJICYgT1BUSU9OX01BU0tfSVNB Ml9BTVhfSU5UOCkpCisJICBvcHRzLT54X2l4ODZfaXNhX2ZsYWdzMiB8PSBPUFRJT05fTUFTS19J U0EyX0FNWF9JTlQ4OworCWlmICgoKHByb2Nlc3Nvcl9hbGlhc190YWJsZVtpXS5mbGFncyAmIFBU QV9BTVhfQkYxNikgIT0gMCkKKwkgICAgJiYgIShvcHRzLT54X2l4ODZfaXNhX2ZsYWdzMl9leHBs aWNpdAorCQkgJiBPUFRJT05fTUFTS19JU0EyX0FNWF9CRjE2KSkKKwkgIG9wdHMtPnhfaXg4Nl9p c2FfZmxhZ3MyIHw9IE9QVElPTl9NQVNLX0lTQTJfQU1YX0JGMTY7CiAgICAgICAgIGlmICgoKHBy b2Nlc3Nvcl9hbGlhc190YWJsZVtpXS5mbGFncyAmIFBUQV9NT1ZESVJJKSAhPSAwKQogICAgICAg ICAgICAgJiYgIShvcHRzLT54X2l4ODZfaXNhX2ZsYWdzX2V4cGxpY2l0ICYgT1BUSU9OX01BU0tf SVNBX01PVkRJUkkpKQogICAgICAgICAgIG9wdHMtPnhfaXg4Nl9pc2FfZmxhZ3MgfD0gT1BUSU9O X01BU0tfSVNBX01PVkRJUkk7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIv Z2NjL2NvbmZpZy9pMzg2L2kzODYuaAppbmRleCA5MmI3NDc1YTdiZi4uYTQ0OTY1M2NjM2UgMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kz ODYuaApAQCAtMjAzLDYgKzIwMywxMiBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZ SU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKICNkZWZpbmUgVEFSR0VUX1NF UklBTElaRV9QKHgpIFRBUkdFVF9JU0EyX1NFUklBTElaRV9QKHgpCiAjZGVmaW5lIFRBUkdFVF9U U1hMRFRSSwlUQVJHRVRfSVNBMl9UU1hMRFRSSwogI2RlZmluZSBUQVJHRVRfVFNYTERUUktfUCh4 KSBUQVJHRVRfSVNBMl9UU1hMRFRSS19QKHgpCisjZGVmaW5lIFRBUkdFVF9BTVhfVElMRSBUQVJH RVRfSVNBMl9BTVhfVElMRQorI2RlZmluZSBUQVJHRVRfQU1YX1RJTEVfUCh4KSBUQVJHRVRfSVNB Ml9BTVhfVElMRSh4KQorI2RlZmluZSBUQVJHRVRfQU1YX0lOVDggVEFSR0VUX0lTQTJfQU1YX0lO VDgKKyNkZWZpbmUgVEFSR0VUX0FNWF9JTlQ4X1AoeCkgVEFSR0VUX0lTQTJfQU1YX0lOVDgoeCkK KyNkZWZpbmUgVEFSR0VUX0FNWF9CRjE2IFRBUkdFVF9JU0EyX0FNWF9CRjE2CisjZGVmaW5lIFRB UkdFVF9BTVhfQkYxNl9QKHgpIFRBUkdFVF9JU0EyX0FNWF9CRjE2KHgpCiAKICNkZWZpbmUgVEFS R0VUX0xQNjQJVEFSR0VUX0FCSV82NAogI2RlZmluZSBUQVJHRVRfTFA2NF9QKHgpCVRBUkdFVF9B QklfNjRfUCh4KQpAQCAtMjQ2Niw2ICsyNDcyLDkgQEAgY29uc3Qgd2lkZV9pbnRfYml0bWFzayBQ VEFfRU5RQ01EICgwLCBIT1NUX1dJREVfSU5UXzFVIDw8IDE1KTsKIGNvbnN0IHdpZGVfaW50X2Jp dG1hc2sgUFRBX0NMREVNT1RFICgwLCBIT1NUX1dJREVfSU5UXzFVIDw8IDE2KTsKIGNvbnN0IHdp ZGVfaW50X2JpdG1hc2sgUFRBX1NFUklBTElaRSAoMCwgSE9TVF9XSURFX0lOVF8xVSA8PCAxNyk7 CiBjb25zdCB3aWRlX2ludF9iaXRtYXNrIFBUQV9UU1hMRFRSSyAoMCwgSE9TVF9XSURFX0lOVF8x VSA8PCAxOCk7Citjb25zdCB3aWRlX2ludF9iaXRtYXNrIFBUQV9BTVhfVElMRSgwLCBIT1NUX1dJ REVfSU5UXzFVIDw8IDE5KTsKK2NvbnN0IHdpZGVfaW50X2JpdG1hc2sgUFRBX0FNWF9JTlQ4KDAs IEhPU1RfV0lERV9JTlRfMVUgPDwgMjApOworY29uc3Qgd2lkZV9pbnRfYml0bWFzayBQVEFfQU1Y X0JGMTYoMCwgSE9TVF9XSURFX0lOVF8xVSA8PCAyMSk7CiAKIGNvbnN0IHdpZGVfaW50X2JpdG1h c2sgUFRBX0NPUkUyID0gUFRBXzY0QklUIHwgUFRBX01NWCB8IFBUQV9TU0UgfCBQVEFfU1NFMgog ICB8IFBUQV9TU0UzIHwgUFRBX1NTU0UzIHwgUFRBX0NYMTYgfCBQVEFfRlhTUjsKQEAgLTI0OTks NyArMjUwOCw4IEBAIGNvbnN0IHdpZGVfaW50X2JpdG1hc2sgUFRBX1RJR0VSTEFLRSA9IFBUQV9J Q0VMQUtFX0NMSUVOVCB8IFBUQV9NT1ZESVJJCiAgIHwgUFRBX01PVkRJUjY0QiB8IFBUQV9DTFdC IHwgUFRBX0FWWDUxMlZQMklOVEVSU0VDVDsKIGNvbnN0IHdpZGVfaW50X2JpdG1hc2sgUFRBX1NB UFBISVJFUkFQSURTID0gUFRBX0NPT1BFUkxBS0UgfCBQVEFfTU9WRElSSQogICB8IFBUQV9NT1ZE SVI2NEIgfCBQVEFfQVZYNTEyVlAySU5URVJTRUNUIHwgUFRBX0VOUUNNRCB8IFBUQV9DTERFTU9U RQotICB8IFBUQV9QVFdSSVRFIHwgUFRBX1dBSVRQS0cgfCBQVEFfU0VSSUFMSVpFIHwgUFRBX1RT WExEVFJLOworICB8IFBUQV9QVFdSSVRFIHwgUFRBX1dBSVRQS0cgfCBQVEFfU0VSSUFMSVpFIHwg UFRBX1RTWExEVFJLIHwgUFRBX0FNWF9USUxFCisgIHwgUFRBX0FNWF9JTlQ4IHwgUFRBX0FNWF9C RjE2OwogY29uc3Qgd2lkZV9pbnRfYml0bWFzayBQVEFfQUxERVJMQUtFID0gUFRBX1NLWUxBS0Ug fCBQVEFfQ0xERU1PVEUgfCBQVEFfUFRXUklURQogICB8IFBUQV9XQUlUUEtHIHwgUFRBX1NFUklB TElaRTsKIGNvbnN0IHdpZGVfaW50X2JpdG1hc2sgUFRBX0tOTCA9IFBUQV9CUk9BRFdFTEwgfCBQ VEFfQVZYNTEyUEYgfCBQVEFfQVZYNTEyRVIKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9p Mzg2Lm9wdCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAppbmRleCBjOWY3MTk1ZDQyMy4uOTM4 OWRjMjQ5NDggMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAorKysgYi9nY2Mv Y29uZmlnL2kzODYvaTM4Ni5vcHQKQEAgLTExMTQsNCArMTExNCwxNiBAQCBTdXBwb3J0IFNFUklB TElaRSBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIGNvZGUgZ2VuZXJhdGlvbi4KIAogbXRzeGxkdHJr CiBUYXJnZXQgUmVwb3J0IE1hc2soSVNBMl9UU1hMRFRSSykgVmFyKGl4ODZfaXNhX2ZsYWdzMikg U2F2ZQotU3VwcG9ydCBUU1hMRFRSSyBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIGNvZGUgZ2VuZXJh dGlvbi4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitTdXBwb3J0IFRTWExEVFJLIGJ1aWx0 LWluIGZ1bmN0aW9ucyBhbmQgY29kZSBnZW5lcmF0aW9uLgorCittYW14LXRpbGUKK1RhcmdldCBS ZXBvcnQgTWFzayhJU0EyX0FNWF9USUxFKSBWYXIoaXg4Nl9pc2FfZmxhZ3MyKSBTYXZlCitTdXBw b3J0IEFNWC1USUxFIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgY29kZSBnZW5lcmF0aW9uLgorCitt YW14LWludDgKK1RhcmdldCBSZXBvcnQgTWFzayhJU0EyX0FNWF9JTlQ4KSBWYXIoaXg4Nl9pc2Ff ZmxhZ3MyKSBTYXZlCitTdXBwb3J0IEFNWC1JTlQ4IGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgY29k ZSBnZW5lcmF0aW9uLgorCittYW14LWJmMTYKK1RhcmdldCBSZXBvcnQgTWFzayhJU0EyX0FNWF9C RjE2KSBWYXIoaXg4Nl9pc2FfZmxhZ3MyKSBTYXZlCitTdXBwb3J0IEFNWC1CRjE2IGJ1aWx0LWlu IGZ1bmN0aW9ucyBhbmQgY29kZSBnZW5lcmF0aW9uLgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9p Mzg2L2ltbWludHJpbi5oIGIvZ2NjL2NvbmZpZy9pMzg2L2ltbWludHJpbi5oCmluZGV4IGI2NjBk MGQ5MDQwLi42ZDI1ZjQ0YzMwMyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2ltbWludHJp bi5oCisrKyBiL2djYy9jb25maWcvaTM4Ni9pbW1pbnRyaW4uaApAQCAtMTQ0LDYgKzE0NCwxMiBA QAogCiAjaW5jbHVkZSA8dHN4bGR0cmtpbnRyaW4uaD4KIAorI2luY2x1ZGUgPGFteHRpbGVpbnRy aW4uaD4KKworI2luY2x1ZGUgPGFteGludDhpbnRyaW4uaD4KKworI2luY2x1ZGUgPGFteGJmMTZp bnRyaW4uaD4KKwogI2luY2x1ZGUgPHJkc2VlZGludHJpbi5oPgogCiAjaW5jbHVkZSA8cHJmY2h3 aW50cmluLmg+CmRpZmYgLS1naXQgYS9nY2MvZG9jL2V4dGVuZC50ZXhpIGIvZ2NjL2RvYy9leHRl bmQudGV4aQppbmRleCAzYjM3YWJhNTc5NS4uYmE5YTdhNGQ1ZjkgMTAwNjQ0Ci0tLSBhL2djYy9k b2MvZXh0ZW5kLnRleGkKKysrIGIvZ2NjL2RvYy9leHRlbmQudGV4aQpAQCAtNjYyMyw2ICs2NjIz LDIxIEBAIEVuYWJsZS9kaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBYU0FWRU9QVCBpbnN0 cnVjdGlvbnMuCiBAY2luZGV4IEBjb2Rle3RhcmdldCgieHNhdmVzIil9IGZ1bmN0aW9uIGF0dHJp YnV0ZSwgeDg2CiBFbmFibGUvZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgWFNBVkVTIGlu c3RydWN0aW9ucy4KIAorQGl0ZW0gYW14LXRpbGUKK0BpdGVteCBuby1hbXgtdGlsZQorQGNpbmRl eCBAY29kZXt0YXJnZXQoImFteC10aWxlIil9IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgeDg2CitFbmFi bGUvZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgQU1YLVRJTEUgaW5zdHJ1Y3Rpb25zLgor CitAaXRlbSBhbXgtaW50OAorQGl0ZW14IG5vLWFteC1pbnQ4CitAY2luZGV4IEBjb2Rle3Rhcmdl dCgiYW14LWludDgiKX0gZnVuY3Rpb24gYXR0cmlidXRlLCB4ODYKK0VuYWJsZS9kaXNhYmxlIHRo ZSBnZW5lcmF0aW9uIG9mIHRoZSBBTVgtSU5UOCBpbnN0cnVjdGlvbnMuCisKK0BpdGVtIGFteC1i ZjE2CitAaXRlbXggbm8tYW14LWJmMTYKK0BjaW5kZXggQGNvZGV7dGFyZ2V0KCJhbXgtYmYxNiIp fSBmdW5jdGlvbiBhdHRyaWJ1dGUsIHg4NgorRW5hYmxlL2Rpc2FibGUgdGhlIGdlbmVyYXRpb24g b2YgdGhlIEFNWC1CRjE2IGluc3RydWN0aW9ucy4KKwogQGl0ZW0gY2xkCiBAaXRlbXggbm8tY2xk CiBAY2luZGV4IEBjb2Rle3RhcmdldCgiY2xkIil9IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgeDg2CmRp ZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRl eCBiY2E4Yzg1NmRjOC4uM2U2NzEwOGE2N2IgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRl eGkKKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAtMTM1Nyw2ICsxMzU3LDcgQEAgU2VlIFJT LzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucy4KIC1tdnBjbG11bHFkcSAgLW1hdng1MTJiaXRhbGcg IC1tbW92ZGlyaSAgLW1tb3ZkaXI2NGIgIC1tYXZ4NTEydnBvcGNudGRxIEBnb2wKIC1tYXZ4NTEy NGZtYXBzICAtbWF2eDUxMnZubmkgIC1tYXZ4NTEyNHZubml3ICAtbXByZmNodyAgLW1yZHBpZCBA Z29sCiAtbXJkc2VlZCAgLW1zZ3ggLW1hdng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJpYWxpemUgLW10 c3hsZHRya0Bnb2wKKy1tYW14LXRpbGUgIC1tYW14LWludDggIC1tYW14LWJmMTZAZ29sCiAtbWNs ZGVtb3RlICAtbW1zLWJpdGZpZWxkcyAgLW1uby1hbGlnbi1zdHJpbmdvcHMgIC1taW5saW5lLWFs bC1zdHJpbmdvcHMgQGdvbAogLW1pbmxpbmUtc3RyaW5nb3BzLWR5bmFtaWNhbGx5ICAtbXN0cmlu Z29wLXN0cmF0ZWd5PUB2YXJ7YWxnfSBAZ29sCiAtbW1lbWNweS1zdHJhdGVneT1AdmFye3N0cmF0 ZWd5fSAgLW1tZW1zZXQtc3RyYXRlZ3k9QHZhcntzdHJhdGVneX0gQGdvbApAQCAtMzAwMjAsNiAr MzAwMjEsMTUgQEAgcHJlZmVycmVkIGFsaWdubWVudCB0byBAb3B0aW9uey1tcHJlZmVycmVkLXN0 YWNrLWJvdW5kYXJ5PTJ9LgogQG5lZWQgMjAwCiBAaXRlbXggLW1zZXJpYWxpemUKIEBvcGluZGV4 IG1zZXJpYWxpemUKK0BuZWVkIDIwMAorQGl0ZW14IC1tYW14LXRpbGUKK0BvcGluZGV4IG1hbXgt dGlsZQorQG5lZWQgMjAwCitAaXRlbXggLW1hbXgtaW50OAorQG9waW5kZXggbWFteC1pbnQ4CitA bmVlZCAyMDAKK0BpdGVteCAtbWFteC1iZjE2CitAb3BpbmRleCBtYW14LWJmMTYKIFRoZXNlIHN3 aXRjaGVzIGVuYWJsZSB0aGUgdXNlIG9mIGluc3RydWN0aW9ucyBpbiB0aGUgTU1YLCBTU0UsCiBT U0UyLCBTU0UzLCBTU1NFMywgU1NFNCwgU1NFNEEsIFNTRTQuMSwgU1NFNC4yLCBBVlgsIEFWWDIs IEFWWDUxMkYsIEFWWDUxMlBGLAogQVZYNTEyRVIsIEFWWDUxMkNELCBBVlg1MTJWTCwgQVZYNTEy QlcsIEFWWDUxMkRRLCBBVlg1MTJJRk1BLCBBVlg1MTJWQk1JLCBTSEEsCmRpZmYgLS1naXQgYS9n Y2MvZG9jL3NvdXJjZWJ1aWxkLnRleGkgYi9nY2MvZG9jL3NvdXJjZWJ1aWxkLnRleGkKaW5kZXgg NjViMmU1NTJiNzQuLmI2MjVmMWU5ZjY4IDEwMDY0NAotLS0gYS9nY2MvZG9jL3NvdXJjZWJ1aWxk LnRleGkKKysrIGIvZ2NjL2RvYy9zb3VyY2VidWlsZC50ZXhpCkBAIC0yMjQ5LDYgKzIyNDksMTUg QEAgVGFyZ2V0IHN1cHBvcnRzIHRoZSBleGVjdXRpb24gb2YgQGNvZGV7YXZ4NTEyZn0gaW5zdHJ1 Y3Rpb25zLgogQGl0ZW0gYXZ4NTEydnAyaW50ZXJzZWN0CiBUYXJnZXQgc3VwcG9ydHMgdGhlIGV4 ZWN1dGlvbiBvZiBAY29kZXthdng1MTJ2cDJpbnRlcnNlY3R9IGluc3RydWN0aW9ucy4KIAorQGl0 ZW0gYW14X3RpbGUKK1RhcmdldCBzdXBwb3J0cyB0aGUgZXhlY3V0aW9uIG9mIEBjb2Rle2FteC10 aWxlfSBpbnN0cnVjdGlvbnMuCisKK0BpdGVtIGFteF9pbnQ4CitUYXJnZXQgc3VwcG9ydHMgdGhl IGV4ZWN1dGlvbiBvZiBAY29kZXthbXgtaW50OH0gaW5zdHJ1Y3Rpb25zLgorCitAaXRlbSBhbXhf YmYxNgorVGFyZ2V0IHN1cHBvcnRzIHRoZSBleGVjdXRpb24gb2YgQGNvZGV7YW14LWJmMTZ9IGlu c3RydWN0aW9ucy4KKwogQGl0ZW0gY2VsbF9odwogVGVzdCBzeXN0ZW0gY2FuIGV4ZWN1dGUgQWx0 aVZlYyBhbmQgQ2VsbCBQUFUgaW5zdHJ1Y3Rpb25zLgogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9vdGhlci9pMzg2LTIuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL290aGVyL2kz ODYtMi5DCmluZGV4IDA0ZDVmZWMwZjZjLi40NDlmMzBkYmFjZSAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvb3RoZXIvaTM4Ni0yLkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv b3RoZXIvaTM4Ni0yLkMKQEAgLTEsMTEgKzEsMTIgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB7IHRh cmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItTyAtcGVk YW50aWMtZXJyb3JzIC1tYXJjaD1rOCAtbXNzZTRhIC1tM2Rub3cgLW1hdnggLW1hdngyIC1tZm1h NCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtbWFibSAtbWx6Y250IC1tYm1pIC1tYm1p MiAtbXRibSAtbWx3cCAtbWZzZ3NiYXNlIC1tcmRybmQgLW1mMTZjIC1tZm1hIC1tcnRtIC1tcmRz ZWVkIC1tcHJmY2h3IC1tYWR4IC1tZnhzciAtbXhzYXZlb3B0IC1tYXZ4NTEyZiAtbWF2eDUxMmVy IC1tYXZ4NTEyY2QgLW1hdng1MTJwZiAtbXNoYSAtbXByZWZldGNod3QxIC1teHNhdmVjIC1teHNh dmVzIC1tY2xmbHVzaG9wdCAgLW1hdng1MTJkcSAtbWF2eDUxMmJ3IC1tYXZ4NTEydmwgLW1hdng1 MTJpZm1hIC1tYXZ4NTEydmJtaSAtbWF2eDUxMnZibWkyIC1tYXZ4NTEyNGZtYXBzIC1tYXZ4NTEy NHZubml3IC1tYXZ4NTEydnBvcGNudGRxIC1tY2x3YiAtbW13YWl0eCAtbWNsemVybyAtbXBrdSAt bXNneCAtbXJkcGlkIC1tZ2ZuaSAtbWF2eDUxMmJpdGFsZyAtbXBjb25maWcgLW13Ym5vaW52ZCAt bWF2eDUxMmJmMTYgLW1lbnFjbWQgLW1hdng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJpYWxpemUgLW10 c3hsZHRyayIgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtcGVkYW50aWMtZXJyb3JzIC1tYXJj aD1rOCAtbXNzZTRhIC1tM2Rub3cgLW1hdnggLW1hdngyIC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBj bG11bCAtbXBvcGNudCAtbWFibSAtbWx6Y250IC1tYm1pIC1tYm1pMiAtbXRibSAtbWx3cCAtbWZz Z3NiYXNlIC1tcmRybmQgLW1mMTZjIC1tZm1hIC1tcnRtIC1tcmRzZWVkIC1tcHJmY2h3IC1tYWR4 IC1tZnhzciAtbXhzYXZlb3B0IC1tYXZ4NTEyZiAtbWF2eDUxMmVyIC1tYXZ4NTEyY2QgLW1hdng1 MTJwZiAtbXNoYSAtbXByZWZldGNod3QxIC1teHNhdmVjIC1teHNhdmVzIC1tY2xmbHVzaG9wdCAg LW1hdng1MTJkcSAtbWF2eDUxMmJ3IC1tYXZ4NTEydmwgLW1hdng1MTJpZm1hIC1tYXZ4NTEydmJt aSAtbWF2eDUxMnZibWkyIC1tYXZ4NTEyNGZtYXBzIC1tYXZ4NTEyNHZubml3IC1tYXZ4NTEydnBv cGNudGRxIC1tY2x3YiAtbW13YWl0eCAtbWNsemVybyAtbXBrdSAtbXNneCAtbXJkcGlkIC1tZ2Zu aSAtbWF2eDUxMmJpdGFsZyAtbXBjb25maWcgLW13Ym5vaW52ZCAtbWF2eDUxMmJmMTYgLW1lbnFj bWQgLW1hdng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJpYWxpemUgLW10c3hsZHRyayAtbWFteC10aWxl IC1tYW14LWludDggLW1hbXgtYmYxNiIgfSAqLwogCiAvKiBUZXN0IHRoYXQgeyx4LGUscCx0LHMs dyxhLGIsaX1tbWludHJpbi5oLCBtbTNkbm93LmgsIGZtYTRpbnRyaW4uaCwKICAgIHhvcGludHJp bi5oLCBhYm1pbnRyaW4uaCwgYm1paW50cmluLmgsIHRibWludHJpbi5oLCBsd3BpbnRyaW4uaCwK ICAgIHBvcGNudGludHJpbi5oLCBmbWFpbnRyaW4uaCwgcGt1aW50cmluLmgsIGF2eDUxMjRmbWFw c2ludHJpbi5oLAogICAgYXZ4NTEyNHZubml3aW50cmluLmgsIGF2eDUxMnZwb3BjbnRkcWludHJp bi5oIGdmbmlpbnRyaW4uaAogICAgYXZ4NTEyYml0YWxnaW50cmluLmgsIGF2eDUxMnZwMmludGVy c2VjdGludHJpbi5oLCB0c3hsZHRya2ludHJpbi5oLAorICAgYW14dGlsZWludHJpbi5oLCBhbXhp bnQ4aW50cmluLmgsIGFteGJmMTZpbnRyaW4uaCwKICAgIGF2eDUxMnZwMmludGVyc2VjdHZsaW50 cmluLmggYW5kIG1tX21hbGxvYy5oLmggYXJlIHVzYWJsZQogICAgd2l0aCAtTyAtcGVkYW50aWMt ZXJyb3JzLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvb3RoZXIvaTM4 Ni0zLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9vdGhlci9pMzg2LTMuQwppbmRleCBmNDAxNzJl ZTliNS4uMjllOTg5MTkzODYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL290aGVy L2kzODYtMy5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL290aGVyL2kzODYtMy5DCkBAIC0x LDExICsxLDEyIEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0 LSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8gLWZrZWVwLWlubGluZS1mdW5jdGlvbnMg LW1hcmNoPWs4IC1tc3NlNGEgLW0zZG5vdyAtbWF2eCAtbWF2eDIgLW1mbWE0IC1teG9wIC1tYWVz IC1tcGNsbXVsIC1tcG9wY250IC1tYWJtIC1tbHpjbnQgLW1ibWkgLW1ibWkyIC1tdGJtIC1tbHdw IC1tZnNnc2Jhc2UgLW1yZHJuZCAtbWYxNmMgLW1mbWEgLW1ydG0gLW1yZHNlZWQgLW1wcmZjaHcg LW1hZHggLW1meHNyIC1teHNhdmVvcHQgLW1hdng1MTJmIC1tYXZ4NTEyZXIgLW1hdng1MTJjZCAt bWF2eDUxMnBmIC1tc2hhIC1tcHJlZmV0Y2h3dDEgLW14c2F2ZWMgLW14c2F2ZXMgLW1jbGZsdXNo b3B0IC1tYXZ4NTEyZHEgLW1hdng1MTJidyAtbWF2eDUxMnZsIC1tYXZ4NTEyaWZtYSAtbWF2eDUx MnZibWkgLW1hdng1MTJ2Ym1pMiAtbWF2eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5pdyAtbWF2eDUx MnZwb3BjbnRkcSAtbWNsd2IgLW1td2FpdHggLW1jbHplcm8gLW1wa3UgLW1zZ3ggLW1yZHBpZCAt bWdmbmkgLW1hdng1MTJiaXRhbGcgLW1wY29uZmlnIC1td2Jub2ludmQgLW1hdng1MTJiZjE2IC1t ZW5xY21kIC1tYXZ4NTEydnAyaW50ZXJzZWN0IC1tc2VyaWFsaXplIC1tdHN4bGR0cmsiIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLWZrZWVwLWlubGluZS1mdW5jdGlvbnMgLW1hcmNoPWs4IC1t c3NlNGEgLW0zZG5vdyAtbWF2eCAtbWF2eDIgLW1mbWE0IC1teG9wIC1tYWVzIC1tcGNsbXVsIC1t cG9wY250IC1tYWJtIC1tbHpjbnQgLW1ibWkgLW1ibWkyIC1tdGJtIC1tbHdwIC1tZnNnc2Jhc2Ug LW1yZHJuZCAtbWYxNmMgLW1mbWEgLW1ydG0gLW1yZHNlZWQgLW1wcmZjaHcgLW1hZHggLW1meHNy IC1teHNhdmVvcHQgLW1hdng1MTJmIC1tYXZ4NTEyZXIgLW1hdng1MTJjZCAtbWF2eDUxMnBmIC1t c2hhIC1tcHJlZmV0Y2h3dDEgLW14c2F2ZWMgLW14c2F2ZXMgLW1jbGZsdXNob3B0IC1tYXZ4NTEy ZHEgLW1hdng1MTJidyAtbWF2eDUxMnZsIC1tYXZ4NTEyaWZtYSAtbWF2eDUxMnZibWkgLW1hdng1 MTJ2Ym1pMiAtbWF2eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5pdyAtbWF2eDUxMnZwb3BjbnRkcSAt bWNsd2IgLW1td2FpdHggLW1jbHplcm8gLW1wa3UgLW1zZ3ggLW1yZHBpZCAtbWdmbmkgLW1hdng1 MTJiaXRhbGcgLW1wY29uZmlnIC1td2Jub2ludmQgLW1hdng1MTJiZjE2IC1tZW5xY21kIC1tYXZ4 NTEydnAyaW50ZXJzZWN0IC1tc2VyaWFsaXplIC1tdHN4bGR0cmsgLW1hbXgtdGlsZSAtbWFteC1p bnQ4IC1tYW14LWJmMTYiIH0gKi8KIAogLyogVGVzdCB0aGF0IHsseCxlLHAsdCxzLHcsYSxiLGl9 bW1pbnRyaW4uaCwgbW0zZG5vdy5oLCBmbWE0aW50cmluLmgsCiAgICB4b3BpbnRyaW4uaCwgYWJt aW50cmluLmgsIGJtaWludHJpbi5oLCB0Ym1pbnRyaW4uaCwgbHdwaW50cmluLmgsCiAgICBwb3Bj bnRpbnRyaW4uaCwgZm1haW50cmluLmgsIHBrdWludHJpbi5oLCBhdng1MTI0Zm1hcHNpbnRyaW4u aCwKICAgIGF2eDUxMjR2bm5pd2ludHJpbi5oLCBhdng1MTJ2cG9wY250ZHFpbnRyaW4uaCBnZm5p aW50cmluLmgKICAgIGF2eDUxMmJpdGFsZ2ludHJpbi5oLCBhdng1MTJ2cDJpbnRlcnNlY3RpbnRy aW4uaCwgdHN4bGR0cmtpbnRyaW4uaCwKKyAgIGFteHRpbGVpbnRyaW4uaCwgYW14aW50OGludHJp bi5oLCBhbXhiZjE2aW50cmluLmgsCiAgICBhdng1MTJ2cDJpbnRlcnNlY3R2bGludHJpbi5oIGFu ZCBtbV9tYWxsb2MuaCBhcmUgdXNhYmxlCiAgICB3aXRoIC1PIC1ma2VlcC1pbmxpbmUtZnVuY3Rp b25zLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14 LWNoZWNrLmggYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXgtY2hlY2suaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmU0ZjI5N2VlMDYKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXgtY2hlY2suaApAQCAt MCwwICsxLDIxNiBAQAorI2lmbmRlZiBBTVhfQ0hFQ0tfSF9JTkNMVURFRAorI2RlZmluZSBBTVhf Q0hFQ0tfSF9JTkNMVURFRAorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5n Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaWZkZWYgREVCVUcKKyNpbmNsdWRlIDxzdGRpby5o PgorI2VuZGlmCisjaW5jbHVkZSAiY3B1aWQuaCIKKworLyogVE9ETzogVGhlIHRtbSBlbXVsYXRp b24gaXMgdGVtcG9yYXJ5IGZvciBjdXJyZW50CisgICBBTVggaW1wbGVtZW50YXRpb24gd2l0aCBu byB0bW0gcmVnY2xhc3MsIHNob3VsZAorICAgYmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJlLiAqLwor dHlwZWRlZiBzdHJ1Y3QgX190aWxlX2NvbmZpZworeworICB1aW50OF90IHBhbGV0dGVfaWQ7IAor ICB1aW50OF90IHN0YXJ0X3JvdzsgICAKKyAgdWludDhfdCByZXNlcnZlZF8wWzE0XTsKKyAgdWlu dDE2X3QgY29sc2JbOF07IC8qIENvbHVtIHNpemUgb2YgZWFjaCB0bW0gcmVnaXN0ZXIgaW4gYnl0 ZXMgKi8KKyAgdWludDE2X3QgcmVzZXJ2ZWRfMVs4XTsKKyAgdWludDhfdCByb3dzWzhdOyAvKiBS b3cgc2l6ZSBvZiBlYWNoIHRtbSByZWcgaW4gYnl0ZXMgKi8KKyAgdWludDhfdCByZXNlcnZlZF8y WzhdOworfSBfX3RpbGVjZmc7CisKK3R5cGVkZWYgdW5pb24gX191bmlvbl90aWxlX2NvbmZpZwor eworICBfX3RpbGVjZmcgczsKKyAgdWludDhfdCBhWzY0XTsKK30gX190aWxlY2ZnX3U7CisKK3R5 cGVkZWYgc3RydWN0IF9fdGlsZQoreworICAvKiBNYXggc2l6ZSBvZiB0aWxlIHJlZ2lzdGVyICov CisgIHVpbnQ4X3QgYnVmWzEwMjRdOworICBpbnQgcm93czsKKyAgaW50IGNvbHNiOworfSBfX3Rp bGU7CisKKy8qIE1heGl1bSBjb2wvcm93IHNpemUgaW4gYnl0ZXMgKi8KKyNkZWZpbmUgTUFYX1JP V1MgMTYKKyNkZWZpbmUgTUFYX0NPTFMgNjQKKworLyogU3RyaWRlIChjb2x1bSB3aWR0aCBpbiBi eXRlKSB1c2VkIGZvciB0aWxlbG9hZC9zdG9yZSAqLworI2RlZmluZSBfU1RSSURFIDY0CisKKy8q IEluaXRpYWxpemUgdGlsZSBjb25maWcgYnkgc2V0dGluZyBhbGwgdG1tIHNpemUgdG8gMTZ4NjQg Ki8KK3ZvaWQgaW5pdF90aWxlX2NvbmZpZyAoX190aWxlY2ZnX3UgKmRzdCkKK3sKKyAgaW50IGk7 CisKKyAgZHN0LT5zLnBhbGV0dGVfaWQgPSAxOworICBkc3QtPnMuc3RhcnRfcm93ID0gMDsKKwor ICBmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKykKKyAgICBkc3QtPnMucmVzZXJ2ZWRfMFtpXSA9IDA7 CisKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKyAgeworICAgIGRzdC0+cy5jb2xzYltpXSA9 IF9TVFJJREU7CisgICAgZHN0LT5zLnJvd3NbaV0gPSAxNjsKKyAgICBkc3QtPnMucmVzZXJ2ZWRf MVtpXSA9IDA7CisgICAgZHN0LT5zLnJlc2VydmVkXzJbaV0gPSAwOworICB9CisKKyAgX3RpbGVf bG9hZGNvbmZpZyAoZHN0LT5hKTsKK30KKworLyogSW5pdCBfX3RpbGUgdmFyaWFibGUgdGhhdCBn b2luZyB0byBiZSBzdG9yZSB0byByZWdpc3RlcgorICAgdy9vIGV4dHJhIGJ1ZmZlci4gSWYgYnVm ZmVyIGV4aXN0cywgaXQgc2hvdWxkIGJlIHRoZSBzYW1lCisgICBzaXplIG1hdHJpeCBhcyBjb3Jy ZXNwb25kaW5nIHRtbSByZWdpc3Rlci4KKyAgIFNob3VsZCBleGVjdXRlIGluaXRfdGlsZV9jb25m aWcgZmlyc3QgKi8KK3ZvaWQgaW5pdF90aWxlX3NyYyAoY29uc3QgaW50IHRtbV9udW0sIF9fdGls ZSAqc3JjLCB1aW50OF90ICpidWZmZXIpCit7CisgIGludCByb3dzLCBjb2xzYiwgaSwgajsKKyAg X190aWxlY2ZnX3UgdG1wOworCisgIF90aWxlX3N0b3JlY29uZmlnICh0bXAuYSk7CisKKyAgc3Jj LT5yb3dzID0gcm93cyA9IHRtcC5zLnJvd3NbdG1tX251bV07CisgIHNyYy0+Y29sc2IgPSBjb2xz YiA9IHRtcC5zLmNvbHNiW3RtbV9udW1dOworCisgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKysp CisgICAgZm9yIChqID0gMDsgaiA8IGNvbHNiOyBqKyspCisgICAgeworICAgICAgaWYoYnVmZmVy KQorCXNyYy0+YnVmW2kgKiBjb2xzYiArIGpdID0gYnVmZmVyW2kgKiBjb2xzYiArIGpdOworICAg ICAgZWxzZQorCXNyYy0+YnVmW2kgKiBjb2xzYiArIGpdID0gKGkgKyAxMSAqIGopICUgMjU2Owor ICAgIH0KKworfQorCisvKiBJbml0IF9fdGlsZSBzcmMgYW5kIGNvcnJlc3BvbmRpbmcgdG1tIHJl Z2lzdGVyICovCisjZGVmaW5lIGluaXRfdGlsZV9yZWdfYW5kX3NyYyh0bW1fbnVtLCBzcmMpICAg XAorewkJCQkJICAgICAgXAorICBpbml0X3RpbGVfc3JjICh0bW1fbnVtLCAmc3JjLCBOVUxMKTsJ ICAgICAgXAorICBfdGlsZV9sb2FkZCAodG1tX251bSwgc3JjLmJ1ZiwgX1NUUklERSk7ICAgXAor fQorCisjZGVmaW5lIGluaXRfdGlsZV9yZWdfYW5kX3NyY193aXRoX2J1ZmZlcih0bW1fbnVtLCBz cmMsIGJ1ZmZlcikgXAorewkJCQkJCQkJXAorICBpbml0X3RpbGVfc3JjICh0bW1fbnVtLCAmc3Jj LCBidWZmZXIpOwkJCQlcCisgIF90aWxlX2xvYWRkICh0bW1fbnVtLCBzcmMuYnVmLCBfU1RSSURF KTsJCQlcCit9CisKKy8qIFplcm8gX190aWxlIHNyYy4gSXQgc2hvdWxkIGJlIGluaXQgZmlyc3Qu ICovCit2b2lkIHplcm9fdGlsZV9zcmMgKF9fdGlsZSAqc3JjKQoreworICBpbnQgaSwgajsKKwor ICBmb3IgKGkgPSAwOyBpIDwgc3JjLT5yb3dzOyBpKyspCisgICAgZm9yIChqID0gMDsgaiA8IHNy Yy0+Y29sc2I7IGorKykKKyAgICAgIHNyYy0+YnVmW2kgKiBzcmMtPmNvbHNiICsgal0gPSAwOwor fQorCisvKiBDb21wYXJlIHRpbGUgY29uZmlnIHZhbHVlIHdpdGggX190aWxlY2ZnX3UgZHN0ICov CitpbnQgY2hlY2tfdGlsZV9jb25maWcgKF9fdGlsZWNmZ191ICpzcmMsIF9fdGlsZWNmZ191ICpk c3QpCit7CisgIHNpemVfdCBzaXplID0gc2l6ZW9mKF9fdGlsZWNmZyk7CisgIHVpbnQ4X3QgKnBh X3NyYyA9ICh1aW50OF90ICopIHNyYy0+YTsKKyAgdWludDhfdCAqcGFfZHN0ID0gKHVpbnQ4X3Qg KikgZHN0LT5hOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgIGlmIChw YV9zcmNbaV0gIT0gcGFfZHN0W2ldKQorICAgICAgcmV0dXJuIDA7CisKKyAgcmV0dXJuIDE7Cit9 CisKKy8qIENvbXBhcmUgdGlsZSByZWdpc3RlciB2YWx1ZSB3aXRoIF9fdGlsZSB2YXJpYWJsZSAq LworaW50IGNoZWNrX3RpbGVfcmVnaXN0ZXIgKF9fdGlsZSogcmVmLCBfX3RpbGUqIHRhcmdldCkK K3sKKyAgLyogVGlsZSByZWdpc3RlciBzaG91bGQgYmUgc3RvcmVkIGZyb20gdG1tIHRvCisgICAg IG1lbW9yeSBhbmQgY29tcGFyZSB3aXRoIGVtdWxhdGlvbiByZXN1bHRzLiAqLworICBpbnQgcm93 cyA9IHRhcmdldC0+cm93czsKKyAgaW50IGNvbHNiID0gdGFyZ2V0LT5jb2xzYjsKKyAgaW50IGks IGo7CisKKyAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykKKyAgICBmb3IgKGogPSAwOyBqIDwg Y29sc2I7IGorKykKKwlpZiAocmVmLT5idWZbaSAqIGNvbHNiICsgal0gIT0gdGFyZ2V0LT5idWZb aSAqIGNvbHNiICsgal0pCisJICAgIHJldHVybiAwOworCisgIHJldHVybiAxOworfQorCisjaWZu ZGVmIERPX1RFU1QKKyNkZWZpbmUgRE9fVEVTVCBkb190ZXN0CitzdGF0aWMgdm9pZCB0ZXN0X2Ft eCAodm9pZCk7CitfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorc3RhdGljIHZvaWQKK2RvX3Rl c3QgKHZvaWQpCit7CisgIHRlc3RfYW14ICgpOworfQorI2VuZGlmCisKKy8qIFRvIHZlcmlmeSB3 aGV0aGUgaG9zdCBoYXMgQU1YIHN1cHBvcnQqLworaW50Cit2YWxpZF90ZXN0ICgpCit7CisgIHVu c2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7CisKKy8qIENoZWNrIFhDUjAgc3RhdCBmb3Ig QU1YICovCisjZGVmaW5lIFhTVEFURV9USUxFQ0ZHICAgICAgICAgIDB4MjAwMDAKKyNkZWZpbmUg WFNUQVRFX1RJTEVEQVRBICAgICAgICAgMHg0MDAwMAorICAKKyAgX19jcHVpZCAoMSwgZWF4LCBl YngsIGVjeCwgZWR4KTsKKworICBpZiAoZWN4ICYgYml0X09TWFNBVkUpCisgICAgeworICAgICAg dW5zaWduZWQgaW50IHhjcmxvdzsKKyAgICAgIAorICAgICAgX19hc21fXyAoInhnZXRidiIKKwkg ICAgICA6ICI9YSIgKHhjcmxvdykKKwkgICAgICA6ICJjIiAoMCkpOworCisgICAgICBpZiAoeGNy bG93ICYgKFhTVEFURV9USUxFQ0ZHIHwgWFNUQVRFX1RJTEVEQVRBKSkKKwl7CisJICBfX2dldF9j cHVpZF9jb3VudCAoNywgMCwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7CisKKwkgIGlmIChlZHgg JiBiaXRfQU1YX1RJTEUKKyNpZmRlZiBBTVhfSU5UOAorCSAgICAmJiAoZWR4ICYgYml0X0FNWF9J TlQ4KQorI2VuZGlmCisjaWZkZWYgQU1YX0JGMTYKKwkgICAgJiYgKGVkeCAmIGJpdF9BTVhfQkYx NikKKyNlbmRpZgorCSAgICApCisJICAgIHJldHVybiAxOworCX0KKyAgICB9CisKKyAgcmV0dXJu IDA7Cit9CisKK2ludAorbWFpbiAoKQoreworICBpZiAodmFsaWRfdGVzdCAoKSkKKyAgICB7Cisg ICAgICBET19URVNUICgpOworI2lmZGVmIERFQlVHCisgICAgICBwcmludGYgKCJQQVNTRURcbiIp OworI2VuZGlmCisgICAgfQorI2lmZGVmIERFQlVHCisgIGVsc2UKKyAgICBwcmludGYgKCJTS0lQ UEVEXG4iKTsKKyNlbmRpZgorCisgIHJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGJmMTYtYXNtYXR0LTEuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGJmMTYtYXNtYXR0LTEuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTVlNWJkZGVkYWMKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhiZjE2LWFzbWF0dC0xLmMKQEAgLTAs MCArMSwxMyBAQAorLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFteC1iZjE2IiB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgInRkcGJmMTZwc1xbIFxcdF0rXFteXG5cXSoldG1tMytcW15cblxdKiV0 bW0yK1xbXlxuXF0qJXRtbTEiICB9IH0gKi8KKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKworI2Rl ZmluZSBUTU0xIDEKKyNkZWZpbmUgVE1NMiAyCisjZGVmaW5lIFRNTTMgMworCit2b2lkIFRFU1Qg KCkKK3sKKyAgX3RpbGVfZHBiZjE2cHMgKFRNTTEsIFRNTTIsIFRNTTMpOworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14YmYxNi1hc21pbnRlbC0xLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhiZjE2LWFzbWludGVsLTEuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzJkNjA3NDM4N2EKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhiZjE2LWFzbWludGVsLTEu YwpAQCAtMCwwICsxLDkgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9 IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hbXgtYmYxNiAtbWFzbT1pbnRlbCIgfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZHBiZjE2cHNcWyBcXHRdK1xbXlxu XF0qJXRtbTErXFteXG5cXSoldG1tMitcW15cblxdKiV0bW0zIiAgfSB9ICovCisjaW5jbHVkZSA8 aW1taW50cmluLmg+CisKK3ZvaWQgVEVTVCAoKQoreworICBfdGlsZV9kcGJmMTZwcyAoMSwgMiwg Myk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhiZjE2 LWRwYmYxNnBzLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGJmMTYtZHBi ZjE2cHMtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jODE5MTEz ODk3ZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Ft eGJmMTYtZHBiZjE2cHMtMi5jCkBAIC0wLDAgKzEsODMgQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFy Z2V0IHsgISBpYTMyIH0gfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFteC10aWxlIC1t YW14LWJmMTYiIH0gKi8KKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKworI2RlZmluZSBBTVhfQkYx NgorI2RlZmluZSBET19URVNUIHRlc3RfYW14X2JmMTZfZHBiZjE2cHMKK3ZvaWQgdGVzdF9hbXhf YmYxNl9kcGJmMTZwcyAoKTsKKyNpbmNsdWRlICJhbXgtY2hlY2suaCIKKworLyogVHJhbnNmb3Jt YXRpb24gZnVuY3Rpb25zIGJldHdlZW4gYmYxNi9mbG9hdCAqLworc3RhdGljIHVpbnQxNl90IG1h a2VfYmYxNiAoZmxvYXQgZikKK3sKKyAgdWludDMyX3QgdSA9ICh1aW50MzJfdClmOworICB1ID0g KHUgPj4gMTYpICYgMHhmZmZmOworICByZXR1cm4gKHVpbnQxNl90KXU7Cit9CisKK3N0YXRpYyBm bG9hdCBtYWtlX2YzMiAodWludDE2X3QgYmYpCit7CisgIHVpbnQzMl90IHUgPSAodWludDMyX3Qp KGJmIDw8IDE2KTsKKyAgcmV0dXJuIChmbG9hdCl1OworfQorCisvKiBJbml0IHRpbGUgYnVmZmVy IHdpdGggYmYxNiBwYWlycyAqLwordm9pZCBpbml0X2JmMTZfbWF4X3RpbGVfYnVmZmVyICh1aW50 OF90ICpidWYpCit7IAorICBpbnQgaSwgajsKKyAgdWludDE2X3QgKnB0ciA9ICh1aW50MTZfdCAq KWJ1ZjsKKworICBmb3IoaSA9IDA7IGkgPCAxNjsgaSsrKQorICAgIGZvcihqID0gMDsgaiA8IDMy OyBqKyspCisgICAgICB7CQorCWZsb2F0IGYgPSAxNi4xZiAqIGkgKyAzLjRmICogajsKKwlwdHJb aSAqIDMyICsgal0gPSBtYWtlX2JmMTYoZik7CisgICAgICB9Cit9CisKK3ZvaWQgY2FsY19tYXRy aXhfZHBiZjE2cHMgKF9fdGlsZSAqZHN0LCBfX3RpbGUgKnNyYzEsIF9fdGlsZSAqc3JjMikKK3sK KyAgdWludDE2X3QgKnNyYzFfYnVmID0gKHVpbnQxNl90ICopc3JjMS0+YnVmOworICB1aW50MTZf dCAqc3JjMl9idWYgPSAodWludDE2X3QgKilzcmMyLT5idWY7CisgIGZsb2F0ICpkc3RfYnVmID0g KGZsb2F0ICopZHN0LT5idWY7CisgIAorICBpbnQgTSA9IHNyYzEtPnJvd3M7CisgIGludCBOID0g c3JjMS0+Y29sc2IgLyA0OworICBpbnQgSyA9IHNyYzItPmNvbHNiIC8gNDsKKyAgaW50IGksIGos IGssIHQ7CisKKyAgZm9yIChpID0gMDsgaSA8IE07IGkrKykKKyAgICBmb3IgKGogPSAwOyBqIDwg TjsgaisrKQorICAgICAgZm9yIChrID0gMDsgayA8IEs7IGsrKykKKwlmb3IgKHQgPSAwOyB0IDwg MjsgdCs9MikKKwkgIHsgICAgCisJICAgIGRzdF9idWZbaSAqIE4gKyBrXSArPSAKKwkgICAgICAo bWFrZV9mMzIoc3JjMV9idWZbaSAqIDQgKiBOICsgNCAqIGogKyB0XSkgKgorCSAgICAgIG1ha2Vf ZjMyKHNyYzJfYnVmW2ogKiA0ICogSyArIDQgKiBrICsgdF0pKSArCisJICAgICAgKG1ha2VfZjMy KHNyYzFfYnVmW2kgKiA0ICogTiArIDQgKiBqICsgdCArIDFdKSAqCisJICAgICAgbWFrZV9mMzIo c3JjMV9idWZbaSAqIDQgKiBOICsgNCAqIGogKyB0ICsgMV0pKTsKKwkgIH0KKworfQorCit2b2lk IHRlc3RfYW14X2JmMTZfZHBiZjE2cHMgKCkKK3sKKyAgX190aWxlY2ZnX3UgY2ZnOworICBfX3Rp bGUgZHN0LCBkc3RfcmVmLCBzcmMxLCBzcmMyOworICB1aW50OF90IHRtcF9kc3RfYnVmWzEwMjRd OworCisgIGluaXRfYmYxNl9tYXhfdGlsZV9idWZmZXIgKHRtcF9kc3RfYnVmKTsKKyAgCisgIGlu aXRfdGlsZV9jb25maWcgKCZjZmcpOworICBpbml0X3RpbGVfcmVnX2FuZF9zcmNfd2l0aF9idWZm ZXIgKDEsIGRzdCwgdG1wX2RzdF9idWYpOworICBpbml0X3RpbGVfcmVnX2FuZF9zcmNfd2l0aF9i dWZmZXIgKDIsIGRzdCwgdG1wX2RzdF9idWYpOworICBpbml0X3RpbGVfcmVnX2FuZF9zcmNfd2l0 aF9idWZmZXIgKDMsIGRzdCwgdG1wX2RzdF9idWYpOworCisgIGNhbGNfbWF0cml4X2RwYmYxNnBz ICgmZHN0LCAmc3JjMSwgJnNyYzIpOworICAKKyAgX3RpbGVfZHBiZjE2cHMgKDEsIDIsIDMpOwor ICBfdGlsZV9zdG9yZWQgKDEsIGRzdF9yZWYuYnVmLCBfU1RSSURFKTsKKworICBpZiAoIWNoZWNr X3RpbGVfcmVnaXN0ZXIgKCZkc3RfcmVmLCAmZHN0KSkKKyAgICAgICAgYWJvcnQoKTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtYXNtYXR0LTEu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtYXNtYXR0LTEuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTg0MmMyMzRiZTgKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWFzbWF0dC0x LmMKQEAgLTAsMCArMSwxOSBAQAorLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFteC1pbnQ4IiB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRkcGJzc2RcWyBcXHRdK1xbXlxuXF0qJXRtbTMrXFte XG5cXSoldG1tMitcW15cblxdKiV0bW0xIiAgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInRkcGJzdWRcWyBcXHRdK1xbXlxuXF0qJXRtbTMrXFteXG5cXSoldG1tMitcW15c blxdKiV0bW0xIiAgfSB9ICoKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidGRwYnVz ZFxbIFxcdF0rXFteXG5cXSoldG1tMytcW15cblxdKiV0bW0yK1xbXlxuXF0qJXRtbTEiICB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidGRwYnV1ZFxbIFxcdF0rXFteXG5c XSoldG1tMytcW15cblxdKiV0bW0yK1xbXlxuXF0qJXRtbTEiICB9IH0gKi8KKyNpbmNsdWRlIDxp bW1pbnRyaW4uaD4KKworI2RlZmluZSBUTU0xIDEKKyNkZWZpbmUgVE1NMiAyCisjZGVmaW5lIFRN TTMgMworCit2b2lkIFRFU1QgKCkKK3sKKyAgX3RpbGVfZHBic3NkIChUTU0xLCBUTU0yLCBUTU0z KTsKKyAgX3RpbGVfZHBic3VkIChUTU0xLCBUTU0yLCBUTU0zKTsKKyAgX3RpbGVfZHBidXNkIChU TU0xLCBUTU0yLCBUTU0zKTsKKyAgX3RpbGVfZHBidXVkIChUTU0xLCBUTU0yLCBUTU0zKTsKK30K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtYXNtaW50 ZWwtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14aW50OC1hc21pbnRlbC0x LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJjZmJiM2ZhNWVkCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14aW50OC1h c21pbnRlbC0xLmMKQEAgLTAsMCArMSwxNSBAQAorLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0 IHsgISBpYTMyIH0gfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFteC1pbnQ4IC1tYXNt PWludGVsIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRkcGJzc2RcWyBc XHRdK1xbXlxuXF0qJXRtbTErXFteXG5cXSoldG1tMitcW15cblxdKiV0bW0zIiAgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRkcGJzdWRcWyBcXHRdK1xbXlxuXF0qJXRt bTErXFteXG5cXSoldG1tMitcW15cblxdKiV0bW0zIiAgfSB9ICoKKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAidGRwYnVzZFxbIFxcdF0rXFteXG5cXSoldG1tMStcW15cblxdKiV0bW0y K1xbXlxuXF0qJXRtbTMiICB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi dGRwYnV1ZFxbIFxcdF0rXFteXG5cXSoldG1tMStcW15cblxdKiV0bW0yK1xbXlxuXF0qJXRtbTMi ICB9IH0gKi8KKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKwordm9pZCBURVNUICgpCit7CisgIF90 aWxlX2RwYnNzZCAoMSwgMiwgMyk7CisgIF90aWxlX2RwYnN1ZCAoMSwgMiwgMyk7CisgIF90aWxl X2RwYnVzZCAoMSwgMiwgMyk7CisgIF90aWxlX2RwYnV1ZCAoMSwgMiwgMyk7Cit9CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWRwYnNzZC0yLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWRwYnNzZC0yLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYyZDMxY2UzZTgxCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14aW50OC1kcGJzc2QtMi5jCkBA IC0wLDAgKzEsNjIgQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFteC10aWxlIC1tYW14LWludDgiIH0gKi8KKyNpbmNs dWRlIDxpbW1pbnRyaW4uaD4KKworI2RlZmluZSBBTVhfSU5UOAorI2RlZmluZSBET19URVNUIHRl c3RfYW14X2ludDhfZHBic3NkCit2b2lkIHRlc3RfYW14X2ludDhfZHBic3NkICgpOworI2luY2x1 ZGUgImFteC1jaGVjay5oIgorCisvKiBJbml0IHRpbGUgYnVmZmVyIHdpdGggaW50MzIgdmFsdWUq Lwordm9pZCBpbml0X2kzMl9tYXhfdGlsZV9idWZmZXIgKHVpbnQ4X3QgKmJ1ZikKK3sKKyAgaW50 IGksIGo7CisgIGludCAqcHRyID0gKGludCAqKWJ1ZjsKKyAgZm9yIChpID0gMDsgaSA8IDE2OyBp KyspCisgICAgZm9yIChqID0gMDsgaiA8IDE2OyBqKyspCisgICAgICBwdHJbaSAqIDE2ICsgal0g PSAyICogaSAtICgxNiAtIGopOworfQorCit2b2lkIGNhbGNfbWF0cml4X2RwYnNzZCAoX190aWxl ICpkc3QsIF9fdGlsZSAqc3JjMSwgX190aWxlICpzcmMyKQoreworICBpbnQ4X3QgKnNyYzFfYnVm ID0gKGludDhfdCAqKXNyYzEtPmJ1ZjsKKyAgaW50OF90ICpzcmMyX2J1ZiA9IChpbnQ4X3QgKilz cmMyLT5idWY7CisgIGludCAqZHN0X2J1ZiA9IChpbnQgKilkc3QtPmJ1ZjsKKworICBpbnQgTSA9 IHNyYzEtPnJvd3M7CisgIGludCBOID0gc3JjMS0+Y29sc2IgLyA0OworICBpbnQgSyA9IHNyYzIt PmNvbHNiIC8gNDsKKyAgaW50IGksIGosIGssIHQ7CisKKyAgZm9yIChpID0gMDsgaSA8IE07IGkr KykKKyAgICBmb3IgKGogPSAwOyBqIDwgTjsgaisrKQorICAgICAgZm9yIChrID0gMDsgayA8IEs7 IGsrKykKKwlmb3IgKHQgPSAwOyB0IDwgNDsgdCsrKQorCSAgeworCSAgICBkc3RfYnVmW2kgKiBO ICsga10gKz0gIAorCSAgICAgICgoaW50KSBzcmMxX2J1ZltpICogNCAqIE4gKyA0ICogaiArIHRd KSAqCisJICAgICAgKChpbnQpIHNyYzJfYnVmW2ogKiA0ICogSyArIDQgKiBrICsgdF0pOworCSAg fQorfQorCit2b2lkIHRlc3RfYW14X2ludDhfZHBic3NkICgpCit7CisgIF9fdGlsZWNmZ191IGNm ZzsKKyAgX190aWxlIGRzdCwgZHN0X3JlZiwgc3JjMSwgc3JjMjsKKyAgdWludDhfdCB0bXBfZHN0 X2J1ZlsxMDI0XTsKKyAgCisgIGluaXRfaTMyX21heF90aWxlX2J1ZmZlciAodG1wX2RzdF9idWYp OworCisgIGluaXRfdGlsZV9jb25maWcgKCZjZmcpOworICBpbml0X3RpbGVfcmVnX2FuZF9zcmNf d2l0aF9idWZmZXIgKDEsIGRzdCwgdG1wX2RzdF9idWYpOworICBpbml0X3RpbGVfcmVnX2FuZF9z cmMgKDIsIHNyYzEpOworICBpbml0X3RpbGVfcmVnX2FuZF9zcmMgKDMsIHNyYzIpOworCisgIGNh bGNfbWF0cml4X2RwYnNzZCAoJmRzdCwgJnNyYzEsICZzcmMyKTsKKworICBfdGlsZV9kcGJzc2Qg KDEsIDIsIDMpOworICBfdGlsZV9zdG9yZWQgKDEsIGRzdF9yZWYuYnVmLCBfU1RSSURFKTsKKyAg CisgIGlmICghY2hlY2tfdGlsZV9yZWdpc3RlciAoJmRzdF9yZWYsICZkc3QpKQorICAgICAgYWJv cnQoKTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGlu dDgtZHBic3VkLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtZHBi c3VkLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTAwN2VlOTE3 ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhp bnQ4LWRwYnN1ZC0yLmMKQEAgLTAsMCArMSw2MSBAQAorLyogeyBkZy1kbyBydW4geyB0YXJnZXQg eyAhIGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYW14LXRpbGUgLW1hbXgt aW50OCIgfSAqLworI2luY2x1ZGUgPGltbWludHJpbi5oPgorCisjZGVmaW5lIEFNWF9JTlQ4Cisj ZGVmaW5lIERPX1RFU1QgdGVzdF9hbXhfaW50OF9kcGJzdWQKK3ZvaWQgdGVzdF9hbXhfaW50OF9k cGJzdWQgKCk7CisjaW5jbHVkZSAiYW14LWNoZWNrLmgiCisKKy8qIEluaXQgdGlsZSBidWZmZXIg d2l0aCBpbnQzMiB2YWx1ZSovCit2b2lkIGluaXRfaTMyX21heF90aWxlX2J1ZmZlciAodWludDhf dCAqYnVmKQoreworICBpbnQgaSwgajsKKyAgaW50ICpwdHIgPSAoaW50ICopYnVmOworICBmb3Ig KGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICBmb3IgKGogPSAwOyBqIDwgMTY7IGorKykKKyAgICAg IHB0cltpICogMTYgKyBqXSA9IDIgKiBpIC0gKDE2IC0gaik7Cit9CisKK3ZvaWQgY2FsY19tYXRy aXhfZHBic3VkIChfX3RpbGUgKmRzdCwgX190aWxlICpzcmMxLCBfX3RpbGUgKnNyYzIpCit7Cisg IGludDhfdCAqc3JjMV9idWYgPSAoaW50OF90ICopc3JjMS0+YnVmOworICB1aW50OF90ICpzcmMy X2J1ZiA9ICh1aW50OF90ICopc3JjMi0+YnVmOworICBpbnQgKmRzdF9idWYgPSAoaW50ICopZHN0 LT5idWY7CisKKyAgaW50IE0gPSBzcmMxLT5yb3dzOworICBpbnQgTiA9IHNyYzEtPmNvbHNiIC8g NDsKKyAgaW50IEsgPSBzcmMyLT5jb2xzYiAvIDQ7CisgIGludCBpLCBqLCBrLCB0OworCisgIGZv ciAoaSA9IDA7IGkgPCBNOyBpKyspCisgICAgZm9yIChqID0gMDsgaiA8IE47IGorKykKKyAgICAg IGZvciAoayA9IDA7IGsgPCBLOyBrKyspCisJZm9yICh0ID0gMDsgdCA8IDQ7IHQrKykKKwkgIHsK KwkgICAgZHN0X2J1ZltpICogTiArIGtdICs9IAorCSAgICAgICgoaW50KSBzcmMxX2J1ZltpICog NCAqIE4gKyA0ICogaiArIHRdKSAqCisJICAgICAgKCh1bnNpZ25lZCkgc3JjMl9idWZbaiAqIDQg KiBLICsgNCAqIGsgKyB0XSk7CisJICB9Cit9CisKK3ZvaWQgdGVzdF9hbXhfaW50OF9kcGJzdWQg KCkKK3sKKyAgX190aWxlY2ZnX3UgY2ZnOworICBfX3RpbGUgZHN0LCBkc3RfcmVmLCBzcmMxLCBz cmMyOworICB1aW50OF90IHRtcF9kc3RfYnVmWzEwMjRdOworICAKKyAgaW5pdF9pMzJfbWF4X3Rp bGVfYnVmZmVyICh0bXBfZHN0X2J1Zik7CisKKyAgaW5pdF90aWxlX2NvbmZpZyAoJmNmZyk7Cisg IGluaXRfdGlsZV9yZWdfYW5kX3NyY193aXRoX2J1ZmZlciAoMSwgZHN0LCB0bXBfZHN0X2J1Zik7 CisgIGluaXRfdGlsZV9yZWdfYW5kX3NyYyAoMiwgc3JjMSk7CisgIGluaXRfdGlsZV9yZWdfYW5k X3NyYyAoMywgc3JjMik7CisKKyAgY2FsY19tYXRyaXhfZHBic3VkICgmZHN0LCAmc3JjMSwgJnNy YzIpOworICBfdGlsZV9kcGJzdWQgKDEsIDIsIDMpOworICBfdGlsZV9zdG9yZWQgKDEsIGRzdF9y ZWYuYnVmLCBfU1RSSURFKTsKKyAgCisgIGlmICghY2hlY2tfdGlsZV9yZWdpc3RlciAoJmRzdF9y ZWYsICZkc3QpKQorICAgICAgYWJvcnQoKTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2FteGludDgtZHBidXNkLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2FteGludDgtZHBidXNkLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMTc4ODhlMjYxMTYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWRwYnVzZC0yLmMKQEAgLTAsMCArMSw2MSBAQAorLyog eyBkZy1kbyBydW4geyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1tYW14LXRpbGUgLW1hbXgtaW50OCIgfSAqLworI2luY2x1ZGUgPGltbWludHJpbi5oPgor CisjZGVmaW5lIEFNWF9JTlQ4CisjZGVmaW5lIERPX1RFU1QgdGVzdF9hbXhfaW50OF9kcGJ1c2QK K3ZvaWQgdGVzdF9hbXhfaW50OF9kcGJ1c2QgKCk7CisjaW5jbHVkZSAiYW14LWNoZWNrLmgiCisK Ky8qIEluaXQgdGlsZSBidWZmZXIgd2l0aCBpbnQzMiB2YWx1ZSovCit2b2lkIGluaXRfaTMyX21h eF90aWxlX2J1ZmZlciAodWludDhfdCAqYnVmKQoreworICBpbnQgaSwgajsKKyAgaW50ICpwdHIg PSAoaW50ICopYnVmOworICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKyAgICBmb3IgKGogPSAw OyBqIDwgMTY7IGorKykKKyAgICAgIHB0cltpICogMTYgKyBqXSA9IDIgKiBpIC0gKDE2IC0gaik7 Cit9CisKK3ZvaWQgY2FsY19tYXRyaXhfZHBidXNkIChfX3RpbGUgKmRzdCwgX190aWxlICpzcmMx LCBfX3RpbGUgKnNyYzIpCit7CisgIHVpbnQ4X3QgKnNyYzFfYnVmID0gKHVpbnQ4X3QgKilzcmMx LT5idWY7CisgIGludDhfdCAqc3JjMl9idWYgPSAoaW50OF90ICopc3JjMi0+YnVmOworICBpbnQg KmRzdF9idWYgPSAoaW50ICopZHN0LT5idWY7CisKKyAgaW50IE0gPSBzcmMxLT5yb3dzOworICBp bnQgTiA9IHNyYzEtPmNvbHNiIC8gNDsKKyAgaW50IEsgPSBzcmMyLT5jb2xzYiAvIDQ7CisgIGlu dCBpLCBqLCBrLCB0OworCisgIGZvciAoaSA9IDA7IGkgPCBNOyBpKyspCisgICAgZm9yIChqID0g MDsgaiA8IE47IGorKykKKyAgICAgIGZvciAoayA9IDA7IGsgPCBLOyBrKyspCisJZm9yICh0ID0g MDsgdCA8IDQ7IHQrKykKKwkgIHsKKwkgICAgZHN0X2J1ZltpICogTiArIGtdICs9IAorCSAgICAg ICgodW5zaWduZWQpIHNyYzFfYnVmW2kgKiA0ICogTiArIDQgKiBqICsgdF0pICoKKwkgICAgICAo KGludCkgc3JjMl9idWZbaiAqIDQgKiBLICsgNCAqIGsgKyB0XSk7CisJICB9Cit9CisKK3ZvaWQg dGVzdF9hbXhfaW50OF9kcGJ1c2QgKCkKK3sKKyAgX190aWxlY2ZnX3UgY2ZnOworICBfX3RpbGUg ZHN0LCBkc3RfcmVmLCBzcmMxLCBzcmMyOworICB1aW50OF90IHRtcF9kc3RfYnVmWzEwMjRdOwor ICAKKyAgaW5pdF9pMzJfbWF4X3RpbGVfYnVmZmVyICh0bXBfZHN0X2J1Zik7CisKKyAgaW5pdF90 aWxlX2NvbmZpZyAoJmNmZyk7CisgIGluaXRfdGlsZV9yZWdfYW5kX3NyY193aXRoX2J1ZmZlciAo MSwgZHN0LCB0bXBfZHN0X2J1Zik7CisgIGluaXRfdGlsZV9yZWdfYW5kX3NyYyAoMiwgc3JjMSk7 CisgIGluaXRfdGlsZV9yZWdfYW5kX3NyYyAoMywgc3JjMik7CisKKyAgY2FsY19tYXRyaXhfZHBi dXNkICgmZHN0LCAmc3JjMSwgJnNyYzIpOworICBfdGlsZV9kcGJ1c2QgKDEsIDIsIDMpOworICBf dGlsZV9zdG9yZWQgKDEsIGRzdF9yZWYuYnVmLCBfU1RSSURFKTsKKyAgCisgIGlmICghY2hlY2tf dGlsZV9yZWdpc3RlciAoJmRzdF9yZWYsICZkc3QpKQorICAgICAgYWJvcnQoKTsKK30KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtZHBidXVkLTIuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteGludDgtZHBidXVkLTIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzM5NjY2YzM2NDMKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXhpbnQ4LWRwYnV1ZC0yLmMK QEAgLTAsMCArMSw2MSBAQAorLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYW14LXRpbGUgLW1hbXgtaW50OCIgfSAqLworI2lu Y2x1ZGUgPGltbWludHJpbi5oPgorCisjZGVmaW5lIEFNWF9JTlQ4CisjZGVmaW5lIERPX1RFU1Qg dGVzdF9hbXhfaW50OF9kcGJ1dWQKK3ZvaWQgdGVzdF9hbXhfaW50OF9kcGJ1dWQgKCk7CisjaW5j bHVkZSAiYW14LWNoZWNrLmgiCisKKy8qIEluaXQgdGlsZSBidWZmZXIgd2l0aCBpbnQzMiB2YWx1 ZSovCit2b2lkIGluaXRfaTMyX21heF90aWxlX2J1ZmZlciAodWludDhfdCAqYnVmKQoreworICBp bnQgaSwgajsKKyAgaW50ICpwdHIgPSAoaW50ICopYnVmOworICBmb3IgKGkgPSAwOyBpIDwgMTY7 IGkrKykKKyAgICBmb3IgKGogPSAwOyBqIDwgMTY7IGorKykKKyAgICAgIHB0cltpICogMTYgKyBq XSA9IDIgKiBpIC0gKDE2IC0gaik7Cit9CisKK3ZvaWQgY2FsY19tYXRyaXhfZHBidXVkIChfX3Rp bGUgKmRzdCwgX190aWxlICpzcmMxLCBfX3RpbGUgKnNyYzIpCit7CisgIHVpbnQ4X3QgKnNyYzFf YnVmID0gKHVpbnQ4X3QgKilzcmMxLT5idWY7CisgIHVpbnQ4X3QgKnNyYzJfYnVmID0gKHVpbnQ4 X3QgKilzcmMyLT5idWY7CisgIGludCAqZHN0X2J1ZiA9IChpbnQgKilkc3QtPmJ1ZjsKKworICBp bnQgTSA9IHNyYzEtPnJvd3M7CisgIGludCBOID0gc3JjMS0+Y29sc2IgLyA0OworICBpbnQgSyA9 IHNyYzItPmNvbHNiIC8gNDsKKyAgaW50IGksIGosIGssIHQ7CisKKyAgZm9yIChpID0gMDsgaSA8 IE07IGkrKykKKyAgICBmb3IgKGogPSAwOyBqIDwgTjsgaisrKQorICAgICAgZm9yIChrID0gMDsg ayA8IEs7IGsrKykKKwlmb3IgKHQgPSAwOyB0IDwgNDsgdCsrKQorCSAgeworCSAgICBkc3RfYnVm W2kgKiBOICsga10gKz0gCisJICAgICAgKCh1bnNpZ25lZCkgc3JjMV9idWZbaSAqIDQgKiBOICsg NCAqIGogKyB0XSkgKgorCSAgICAgICgodW5zaWduZWQpIHNyYzJfYnVmW2ogKiA0ICogSyArIDQg KiBrICsgdF0pOworCSAgfQorfQorCit2b2lkIHRlc3RfYW14X2ludDhfZHBidXVkICgpCit7Cisg IF9fdGlsZWNmZ191IGNmZzsKKyAgX190aWxlIGRzdCwgZHN0X3JlZiwgc3JjMSwgc3JjMjsKKyAg dWludDhfdCB0bXBfZHN0X2J1ZlsxMDI0XTsKKyAgCisgIGluaXRfaTMyX21heF90aWxlX2J1ZmZl ciAodG1wX2RzdF9idWYpOworCisgIGluaXRfdGlsZV9jb25maWcgKCZjZmcpOworICBpbml0X3Rp bGVfcmVnX2FuZF9zcmNfd2l0aF9idWZmZXIgKDEsIGRzdCwgdG1wX2RzdF9idWYpOworICBpbml0 X3RpbGVfcmVnX2FuZF9zcmMgKDIsIHNyYzEpOworICBpbml0X3RpbGVfcmVnX2FuZF9zcmMgKDMs IHNyYzIpOworCisgIGNhbGNfbWF0cml4X2RwYnV1ZCAoJmRzdCwgJnNyYzEsICZzcmMyKTsKKyAg X3RpbGVfZHBidXVkICgxLCAyLCAzKTsKKyAgX3RpbGVfc3RvcmVkICgxLCBkc3RfcmVmLmJ1Ziwg X1NUUklERSk7CisgIAorICBpZiAoIWNoZWNrX3RpbGVfcmVnaXN0ZXIgKCZkc3RfcmVmLCAmZHN0 KSkKKyAgICAgIGFib3J0KCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9hbXh0aWxlLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteHRp bGUtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZWY4NGY5ZjQ3 OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteHRp bGUtMi5jCkBAIC0wLDAgKzEsNDcgQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgISBpYTMy IH0gfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWFteC10aWxlICIgfSAqLworI2luY2x1 ZGUgPGltbWludHJpbi5oPgorCisjZGVmaW5lIERPX1RFU1QgdGVzdF9hbXhfdGlsZQordm9pZCB0 ZXN0X2FteF90aWxlICgpOworI2luY2x1ZGUgImFteC1jaGVjay5oIgorCit2b2lkIHRlc3RfYW14 X3RpbGUgKCkKK3sKKyAgX190aWxlY2ZnX3UgY2ZnX3NyYywgY2ZnX2RzdDsKKyAgX190aWxlIHJl Z19zcmMxLCByZWdfc3JjMiwgcmVnX3JlZjsKKworICAvKiBjaGVjayB0aWxlIGNvbmZpZyBsb2Fk ICYgc3RvcmUuICovCisgIGluaXRfdGlsZV9jb25maWcgKCZjZmdfc3JjKTsKKyAgX3RpbGVfc3Rv cmVjb25maWcgKGNmZ19kc3QuYSk7CisKKyAgaWYgKCFjaGVja190aWxlX2NvbmZpZyAoJmNmZ19z cmMsICZjZmdfZHN0KSkKKyAgICBhYm9ydCAoKTsKKworICAvKiBjaGVjayB0aWxlIHJlZ2lzdGVy IGxvYWQgJiBzdG9yZS4gKi8KKyAgaW5pdF90aWxlX3JlZ19hbmRfc3JjICgxLCByZWdfc3JjMSk7 CisgIF90aWxlX3N0b3JlZCAoMSwgcmVnX3JlZi5idWYsIF9TVFJJREUpOworICBpZiAoIWNoZWNr X3RpbGVfcmVnaXN0ZXIgKCZyZWdfcmVmLCAmcmVnX3NyYzEpKQorICAgIGFib3J0ICgpOworCisg IC8qIGNoZWNrIHRpbGUgc3RyZWFtIGxvYWQgaW5zdHJ1Y3Rpb24gKi8KKyAgaW5pdF90aWxlX3Ny YyAoMiwgJnJlZ19zcmMyLCBOVUxMKTsKKyAgX3RpbGVfc3RyZWFtX2xvYWRkICgyLCByZWdfc3Jj Mi5idWYsIF9TVFJJREUpOworICBfdGlsZV9zdG9yZWQgKDIsIHJlZ19yZWYuYnVmLCBfU1RSSURF KTsKKyAgaWYgKCFjaGVja190aWxlX3JlZ2lzdGVyICgmcmVnX3JlZiwgJnJlZ19zcmMyKSkKKyAg ICBhYm9ydCAoKTsKKworICAvKiBjaGVjayB0aWxlIHJlZ2lzdGVyIHplcm9pbmcgKi8KKyAgemVy b190aWxlX3NyYyAoJnJlZ19zcmMyKTsKKyAgX3RpbGVfemVybyAoMik7CisgIF90aWxlX3N0b3Jl ZCAoMiwgcmVnX3JlZi5idWYsIF9TVFJJREUpOworICBpZiAoIWNoZWNrX3RpbGVfcmVnaXN0ZXIg KCZyZWdfcmVmLCAmcmVnX3NyYzIpKQorICAgIGFib3J0ICgpOworCisgIC8qIGNoZWNrIHRpbGUg Y2ZnIHplcm9pbmcgKi8KKyAgbWVtc2V0IChjZmdfZHN0LmEsIDAsIHNpemVvZihfX3RpbGVjZmcp KTsKKyAgX3RpbGVfcmVsZWFzZSAoKTsKKyAgX3RpbGVfc3RvcmVjb25maWcgKGNmZ19zcmMuYSk7 CisgIGlmICghY2hlY2tfdGlsZV9jb25maWcgKCZjZmdfc3JjLCAmY2ZnX2RzdCkpCisgICAgYWJv cnQgKCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXh0 aWxlLWFzbWF0dC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXh0aWxlLWFz bWF0dC0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNlYjVmYTRi ZGUzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW14 dGlsZS1hc21hdHQtMS5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRh cmdldCB7ICEgaWEzMiB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hbXgtdGlsZSAi IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGR0aWxlY2ZnXFsgXFx0XStc KFxbXlwpXG5cXSpcKSIgIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJz dHRpbGVjZmdcWyBcXHRdK1woXFteXClcblxdKlwpIiAgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgInRpbGVyZWxlYXNlIiAgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgInRpbGVsb2FkZFxbIFxcdF0rXFteXG5cXSpcXCglXFthLXowLTldKlwsJVxb YS16MC05XF0qXCxcWzEyNFxdXFwpK1xbXlxuXF0qJXRtbVxbMC05XF0iICB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAidGlsZWxvYWRkdDFcWyBcXHRdK1xbXlxuXF0qXFwo JVxbYS16MC05XSpcLCVcW2EtejAtOVxdKlwsXFsxMjRcXVxcKStcW15cblxdKiV0bW1cWzAtOVxd IiAgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRpbGVzdG9yZWRcWyBc XHRdK1xbXlxuXF0qJXRtbVxbMC05XF0rXFteXG5cXSpcXCglXFthLXowLTldKlwsJVxbYS16MC05 XF0qXCxcWzEyNFxdXFwpIiAgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg InRpbGV6ZXJvXFsgXFx0XStcW15cblxdKiV0bW1cWzAtOVxdIiAgfSB9ICovCisjaW5jbHVkZSA8 aW1taW50cmluLmg+CisKK2V4dGVybiBpbnQgYVtdOworZXh0ZXJuIGNvbnN0IHZvaWQqIGJhc2U7 CitleHRlcm4gY29uc3QgaW50IHN0cmlkZTsKKworI2RlZmluZSBUTU0wIDAKKyNkZWZpbmUgVE1N MSAxCisjZGVmaW5lIFRNTTIgMgorI2RlZmluZSBUTU0zIDMKKwordm9pZCBURVNUICgpCit7Cisg IF90aWxlX2xvYWRjb25maWcgKGEpOworICBfdGlsZV9zdG9yZWNvbmZpZyAoYSk7CisgIF90aWxl X3JlbGVhc2UgKCk7CisgIF90aWxlX2xvYWRkIChUTU0zLCBiYXNlLCBzdHJpZGUpOworICBfdGls ZV9zdHJlYW1fbG9hZGQgKFRNTTIsIGJhc2UsIHN0cmlkZSk7CisgIF90aWxlX3N0b3JlZCAoVE1N MSwgYmFzZSwgc3RyaWRlKTsKKyAgX3RpbGVfemVybyAoVE1NMCk7Cit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbXh0aWxlLWFzbWludGVsLTEuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteHRpbGUtYXNtaW50ZWwtMS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OGVmNjEyZWQxNAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FteHRpbGUtYXNtaW50ZWwtMS5jCkBA IC0wLDAgKzEsMjQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0g fSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hbXgtdGlsZSAtbWFzbT1pbnRlbCAiIH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGR0aWxlY2ZnXFsgXFx0XSIgIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdHRpbGVjZmdcWyBcXHRdIiAgfSB9 ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRpbGVyZWxlYXNlIiAgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRpbGVsb2FkZFxbIFxcdF0ldG1tXFsw LTlcXSIgIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0aWxlbG9hZGR0 MVxbIFxcdF0ldG1tXFswLTlcXSIgIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ0aWxlc3RvcmVkXFsgXFx0XVxbXlxuXF0rXFteXG5cXSoldG1tXFswLTlcXSIgIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0aWxlemVyb1xbIFxcdF0rXFteXG5c XSoldG1tXFswLTlcXSIgIH0gfSAqLworI2luY2x1ZGUgPGltbWludHJpbi5oPgorCitleHRlcm4g aW50IGFbXTsKK2V4dGVybiBjb25zdCB2b2lkKiBiYXNlOworZXh0ZXJuIGNvbnN0IGludCBzdHJp ZGU7Cit2b2lkIFRFU1QgKCkKK3sKKyAgX3RpbGVfbG9hZGNvbmZpZyAoYSk7CisgIF90aWxlX3N0 b3JlY29uZmlnIChhKTsKKyAgX3RpbGVfcmVsZWFzZSAoKTsKKyAgX3RpbGVfbG9hZGQgKDUsIGJh c2UsIHN0cmlkZSk7CisgIF90aWxlX3N0cmVhbV9sb2FkZCAoNCwgYmFzZSwgc3RyaWRlKTsKKyAg X3RpbGVfc3RvcmVkICgzLCBiYXNlLCBzdHJpZGUpOworICBfdGlsZV96ZXJvICgyKTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTU2LmluYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTU2LmluYwppbmRleCA5NGZm YmI2NGM3NS4uOGU2NjlmMTIyMTUgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2Z1bmNzcGVjLTU2LmluYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9mdW5jc3BlYy01Ni5pbmMKQEAgLTcxLDYgKzcxLDkgQEAgZXh0ZXJuIHZvaWQgdGVzdF90c3hs ZHRyayAodm9pZCkJCV9fYXR0cmlidXRlX18oKF9fdGFyZ2V0X18oInRzeGxkdHJrIikpKTsKIGV4 dGVybiB2b2lkIHRlc3RfZW5xY21kICh2b2lkKQkJCV9fYXR0cmlidXRlX18oKF9fdGFyZ2V0X18o ImVucWNtZCIpKSk7CiBleHRlcm4gdm9pZCB0ZXN0X2F2eDUxMmJmMTYgKHZvaWQpCQlfX2F0dHJp YnV0ZV9fKChfX3RhcmdldF9fKCJhdng1MTJiZjE2IikpKTsKIGV4dGVybiB2b2lkIHRlc3RfYXZ4 NTEydnAyaW50ZXJzZWN0ICh2b2lkKQlfX2F0dHJpYnV0ZV9fKChfX3RhcmdldF9fKCJhdng1MTJ2 cDJpbnRlcnNlY3QiKSkpOworZXh0ZXJuIHZvaWQgdGVzdF9hbXhfdGlsZSAodm9pZCkJCV9fYXR0 cmlidXRlX18oKF9fdGFyZ2V0X18oImFteC10aWxlIikpKTsKK2V4dGVybiB2b2lkIHRlc3RfYW14 X2ludDggKHZvaWQpCQlfX2F0dHJpYnV0ZV9fKChfX3RhcmdldF9fKCJhbXgtaW50OCIpKSk7Citl eHRlcm4gdm9pZCB0ZXN0X2FteF9iZjE2ICh2b2lkKQkJX19hdHRyaWJ1dGVfXygoX190YXJnZXRf XygiYW14LWJmMTYiKSkpOwogCiBleHRlcm4gdm9pZCB0ZXN0X25vX3NneCAodm9pZCkJCQlfX2F0 dHJpYnV0ZV9fKChfX3RhcmdldF9fKCJuby1zZ3giKSkpOwogZXh0ZXJuIHZvaWQgdGVzdF9ub19h dng1MTI0Zm1hcHModm9pZCkJCV9fYXR0cmlidXRlX18oKF9fdGFyZ2V0X18oIm5vLWF2eDUxMjRm bWFwcyIpKSk7CkBAIC0xNDMsNiArMTQ2LDkgQEAgZXh0ZXJuIHZvaWQgdGVzdF9ub190c3hsZHRy ayAodm9pZCkJCV9fYXR0cmlidXRlX18oKF9fdGFyZ2V0X18oIm5vLXRzeGxkdHJrIikpKTsKIGV4 dGVybiB2b2lkIHRlc3Rfbm9fZW5xY21kICh2b2lkKQkJX19hdHRyaWJ1dGVfXygoX190YXJnZXRf Xygibm8tZW5xY21kIikpKTsKIGV4dGVybiB2b2lkIHRlc3Rfbm9fYXZ4NTEyYmYxNiAodm9pZCkJ CV9fYXR0cmlidXRlX18oKF9fdGFyZ2V0X18oIm5vLWF2eDUxMmJmMTYiKSkpOwogZXh0ZXJuIHZv aWQgdGVzdF9ub19hdng1MTJ2cDJpbnRlcnNlY3QgKHZvaWQpCV9fYXR0cmlidXRlX18oKF9fdGFy Z2V0X18oIm5vLWF2eDUxMnZwMmludGVyc2VjdCIpKSk7CitleHRlcm4gdm9pZCB0ZXN0X25vX2Ft eF90aWxlICh2b2lkKQkJX19hdHRyaWJ1dGVfXygoX190YXJnZXRfXygibm8tYW14LXRpbGUiKSkp OworZXh0ZXJuIHZvaWQgdGVzdF9ub19hbXhfaW50OCAodm9pZCkJCV9fYXR0cmlidXRlX18oKF9f dGFyZ2V0X18oIm5vLWFteC1pbnQ4IikpKTsKK2V4dGVybiB2b2lkIHRlc3Rfbm9fYW14X2JmMTYg KHZvaWQpCQlfX2F0dHJpYnV0ZV9fKChfX3RhcmdldF9fKCJuby1hbXgtYmYxNiIpKSk7CiAKIGV4 dGVybiB2b2lkIHRlc3RfYXJjaF9ub2NvbmEgKHZvaWQpCQlfX2F0dHJpYnV0ZV9fKChfX3Rhcmdl dF9fKCJhcmNoPW5vY29uYSIpKSk7CiBleHRlcm4gdm9pZCB0ZXN0X2FyY2hfY29yZTIgKHZvaWQp CQlfX2F0dHJpYnV0ZV9fKChfX3RhcmdldF9fKCJhcmNoPWNvcmUyIikpKTsKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvc3NlLTEyLmMKaW5kZXggYjE2OTBkNzIwNGYuLjYxMTQ2YjJiMzBhIDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMTIuYworKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMTIuYwpAQCAtMyw3ICszLDcgQEAKICAg IHBvcGNudGludHJpbi5oIGdmbmlpbnRyaW4uaCBhbmQgbW1fbWFsbG9jLmggYXJlIHVzYWJsZQog ICAgd2l0aCAtTyAtc3RkPWM4OSAtcGVkYW50aWMtZXJyb3JzLiAgKi8KIC8qIHsgZGctZG8gY29t cGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PIC1zdGQ9Yzg5IC1wZWRhbnRpYy1lcnJvcnMg LW1hcmNoPWs4IC1tc3NlNGEgLW0zZG5vdyAtbWF2eCAtbWF2eDIgLW1mbWE0IC1teG9wIC1tYWVz IC1tcGNsbXVsIC1tcG9wY250IC1tYWJtIC1tbHpjbnQgLW1ibWkgLW1ibWkyIC1tdGJtIC1tbHdw IC1tZnNnc2Jhc2UgLW1yZHJuZCAtbWYxNmMgLW1mbWEgLW1ydG0gLW1yZHNlZWQgLW1wcmZjaHcg LW1hZHggLW1meHNyIC1teHNhdmVvcHQgLW1hdng1MTJmIC1tYXZ4NTEyZXIgLW1hdng1MTJjZCAt bWF2eDUxMnBmIC1tc2hhIC1tcHJlZmV0Y2h3dDEgLW14c2F2ZWMgLW14c2F2ZXMgLW1jbGZsdXNo b3B0IC1tYXZ4NTEyYncgLW1hdng1MTJkcSAtbWF2eDUxMnZsIC1tYXZ4NTEydmJtaSAtbWF2eDUx MnZibWkyIC1tYXZ4NTEyaWZtYSAtbWF2eDUxMjRmbWFwcyAtbWF2eDUxMjR2bm5pdyAtbWF2eDUx MnZwb3BjbnRkcSAtbWNsd2IgLW1td2FpdHggLW1jbHplcm8gLW1wa3UgLW1zZ3ggLW1yZHBpZCAt bWdmbmkgLW1hdng1MTJiaXRhbGcgLW1wY29uZmlnIC1td2Jub2ludmQgLW1hdng1MTJiZjE2IC1t ZW5xY21kIC1tYXZ4NTEydnAyaW50ZXJzZWN0IC1tc2VyaWFsaXplIC1tdHN4bGR0cmsiIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8gLXN0ZD1jODkgLXBlZGFudGljLWVycm9ycyAtbWFyY2g9azgg LW1zc2U0YSAtbTNkbm93IC1tYXZ4IC1tYXZ4MiAtbWZtYTQgLW14b3AgLW1hZXMgLW1wY2xtdWwg LW1wb3BjbnQgLW1hYm0gLW1semNudCAtbWJtaSAtbWJtaTIgLW10Ym0gLW1sd3AgLW1mc2dzYmFz ZSAtbXJkcm5kIC1tZjE2YyAtbWZtYSAtbXJ0bSAtbXJkc2VlZCAtbXByZmNodyAtbWFkeCAtbWZ4 c3IgLW14c2F2ZW9wdCAtbWF2eDUxMmYgLW1hdng1MTJlciAtbWF2eDUxMmNkIC1tYXZ4NTEycGYg LW1zaGEgLW1wcmVmZXRjaHd0MSAtbXhzYXZlYyAtbXhzYXZlcyAtbWNsZmx1c2hvcHQgLW1hdng1 MTJidyAtbWF2eDUxMmRxIC1tYXZ4NTEydmwgLW1hdng1MTJ2Ym1pIC1tYXZ4NTEydmJtaTIgLW1h dng1MTJpZm1hIC1tYXZ4NTEyNGZtYXBzIC1tYXZ4NTEyNHZubml3IC1tYXZ4NTEydnBvcGNudGRx IC1tY2x3YiAtbW13YWl0eCAtbWNsemVybyAtbXBrdSAtbXNneCAtbXJkcGlkIC1tZ2ZuaSAtbWF2 eDUxMmJpdGFsZyAtbXBjb25maWcgLW13Ym5vaW52ZCAtbWF2eDUxMmJmMTYgLW1lbnFjbWQgLW1h dng1MTJ2cDJpbnRlcnNlY3QgLW1zZXJpYWxpemUgLW10c3hsZHRyayAtbWFteC10aWxlIC1tYW14 LWludDggLW1hbXgtYmYxNiIgfSAqLwogCiAjaW5jbHVkZSA8eDg2aW50cmluLmg+CiAKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xMy5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTEzLmMKaW5kZXggM2E2NDA0NzA3YzQuLjRkNmM5YjNh MTdhIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMTMuYwor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMTMuYwpAQCAtMSw1ICsxLDUg QEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtV2Vycm9y LWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1tYXJjaD1rOCAtbXNzZTRhIC1tM2Rub3cg LW1hdnggLW1hdngyIC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtbWFibSAt bWx6Y250IC1tYm1pIC1tYm1pMiAtbXRibSAtbWx3cCAtbWZzZ3NiYXNlIC1tcmRybmQgLW1mMTZj IC1tZm1hIC1tcnRtIC1tcmRzZWVkIC1tcHJmY2h3IC1tYWR4IC1tZnhzciAtbXhzYXZlb3B0IC1t YXZ4NTEyZiAtbWF2eDUxMmVyIC1tYXZ4NTEyY2QgLW1hdng1MTJwZiAtbXNoYSAtbXByZWZldGNo d3QxIC1teHNhdmVjIC1teHNhdmVzIC1tY2xmbHVzaG9wdCAtbWF2eDUxMnZsIC1tYXZ4NTEyZHEg LW1hdng1MTJidyAtbWF2eDUxMnZibWkgLW1hdng1MTJ2Ym1pMiAtbWF2eDUxMmlmbWEgLW1hdng1 MTI0Zm1hcHMgLW1hdng1MTI0dm5uaXcgLW1hdng1MTJ2cG9wY250ZHEgLW1hdng1MTJ2cDJpbnRl cnNlY3QgLW1jbHdiIC1tbXdhaXR4IC1tY2x6ZXJvIC1tcGt1IC1tc2d4IC1tcmRwaWQgLW1nZm5p IC1tYXZ4NTEyYml0YWxnIC1tcGNvbmZpZyAtbXdibm9pbnZkIC1tYXZ4NTEyYmYxNiAtbWVucWNt ZCAtbXNlcmlhbGl6ZSAtbXRzeGxkdHJrIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtV2Vy cm9yLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1tYXJjaD1rOCAtbXNzZTRhIC1tM2Ru b3cgLW1hdnggLW1hdngyIC1tZm1hNCAtbXhvcCAtbWFlcyAtbXBjbG11bCAtbXBvcGNudCAtbWFi bSAtbWx6Y250IC1tYm1pIC1tYm1pMiAtbXRibSAtbWx3cCAtbWZzZ3NiYXNlIC1tcmRybmQgLW1m MTZjIC1tZm1hIC1tcnRtIC1tcmRzZWVkIC1tcHJmY2h3IC1tYWR4IC1tZnhzciAtbXhzYXZlb3B0 IC1tYXZ4NTEyZiAtbWF2eDUxMmVyIC1tYXZ4NTEyY2QgLW1hdng1MTJwZiAtbXNoYSAtbXByZWZl dGNod3QxIC1teHNhdmVjIC1teHNhdmVzIC1tY2xmbHVzaG9wdCAtbWF2eDUxMnZsIC1tYXZ4NTEy ZHEgLW1hdng1MTJidyAtbWF2eDUxMnZibWkgLW1hdng1MTJ2Ym1pMiAtbWF2eDUxMmlmbWEgLW1h dng1MTI0Zm1hcHMgLW1hdng1MTI0dm5uaXcgLW1hdng1MTJ2cG9wY250ZHEgLW1hdng1MTJ2cDJp bnRlcnNlY3QgLW1jbHdiIC1tbXdhaXR4IC1tY2x6ZXJvIC1tcGt1IC1tc2d4IC1tcmRwaWQgLW1n Zm5pIC1tYXZ4NTEyYml0YWxnIC1tcGNvbmZpZyAtbXdibm9pbnZkIC1tYXZ4NTEyYmYxNiAtbWVu cWNtZCAtbXNlcmlhbGl6ZSAtbXRzeGxkdHJrIC1tYW14LXRpbGUgLW1hbXgtaW50OCAtbWFteC1i ZjE2IiB9ICovCiAvKiB7IGRnLWFkZC1vcHRpb25zIGJpbmRfcGljX2xvY2FsbHkgfSAqLwogCiAj aW5jbHVkZSA8bW1fbWFsbG9jLmg+CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9zc2UtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0xNC5j CmluZGV4IGVkYWEyYWE4YWQ0Li44MzdiNTFjNTNlNiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTE0LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvc3NlLTE0LmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwot LyogeyBkZy1vcHRpb25zICItTzAgLVdlcnJvci1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlv biAtbWFyY2g9azggLW1zc2U0YSAtbTNkbm93IC1tYXZ4IC1tYXZ4MiAtbWZtYTQgLW14b3AgLW1h ZXMgLW1wY2xtdWwgLW1wb3BjbnQgLW1hYm0gLW1semNudCAtbWJtaSAtbWJtaTIgLW10Ym0gLW1s d3AgLW1mc2dzYmFzZSAtbXJkcm5kIC1tZjE2YyAtbWZtYSAtbXJ0bSAtbXJkc2VlZCAtbXByZmNo dyAtbWFkeCAtbWZ4c3IgLW14c2F2ZW9wdCAtbWF2eDUxMmYgLW1hdng1MTJlciAtbWF2eDUxMmNk IC1tYXZ4NTEycGYgLW1zaGEgLW1wcmVmZXRjaHd0MSAtbXhzYXZlYyAtbXhzYXZlcyAtbWNsZmx1 c2hvcHQgLW1hdng1MTJkcSAtbWF2eDUxMmJ3IC1tYXZ4NTEydmwgLW1hdng1MTJpZm1hIC1tYXZ4 NTEydmJtaSAtbWF2eDUxMnZibWkyIC1tYXZ4NTEyNGZtYXBzIC1tYXZ4NTEyNHZubml3IC1tYXZ4 NTEydnBvcGNudGRxIC1tY2x3YiAtbW13YWl0eCAtbWNsemVybyAtbXBrdSAtbXNneCAtbXJkcGlk IC1tZ2ZuaSAtbXBjb25maWcgLW13Ym5vaW52ZCAtbWF2eDUxMnZsIC1tYXZ4NTEyYmYxNiAtbWVu cWNtZCAtbWF2eDUxMnZwMmludGVyc2VjdCAtbXNlcmlhbGl6ZSAtbXRzeGxkdHJrIiB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1PMCAtV2Vycm9yLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9u IC1tYXJjaD1rOCAtbXNzZTRhIC1tM2Rub3cgLW1hdnggLW1hdngyIC1tZm1hNCAtbXhvcCAtbWFl cyAtbXBjbG11bCAtbXBvcGNudCAtbWFibSAtbWx6Y250IC1tYm1pIC1tYm1pMiAtbXRibSAtbWx3 cCAtbWZzZ3NiYXNlIC1tcmRybmQgLW1mMTZjIC1tZm1hIC1tcnRtIC1tcmRzZWVkIC1tcHJmY2h3 IC1tYWR4IC1tZnhzciAtbXhzYXZlb3B0IC1tYXZ4NTEyZiAtbWF2eDUxMmVyIC1tYXZ4NTEyY2Qg LW1hdng1MTJwZiAtbXNoYSAtbXByZWZldGNod3QxIC1teHNhdmVjIC1teHNhdmVzIC1tY2xmbHVz aG9wdCAtbWF2eDUxMmRxIC1tYXZ4NTEyYncgLW1hdng1MTJ2bCAtbWF2eDUxMmlmbWEgLW1hdng1 MTJ2Ym1pIC1tYXZ4NTEydmJtaTIgLW1hdng1MTI0Zm1hcHMgLW1hdng1MTI0dm5uaXcgLW1hdng1 MTJ2cG9wY250ZHEgLW1jbHdiIC1tbXdhaXR4IC1tY2x6ZXJvIC1tcGt1IC1tc2d4IC1tcmRwaWQg LW1nZm5pIC1tcGNvbmZpZyAtbXdibm9pbnZkIC1tYXZ4NTEydmwgLW1hdng1MTJiZjE2IC1tZW5x Y21kIC1tYXZ4NTEydnAyaW50ZXJzZWN0IC1tc2VyaWFsaXplIC1tdHN4bGR0cmsgLW1hbXgtdGls ZSAtbWFteC1pbnQ4IC1tYW14LWJmMTYiIH0gKi8KIC8qIHsgZGctYWRkLW9wdGlvbnMgYmluZF9w aWNfbG9jYWxseSB9ICovCiAKICNpbmNsdWRlIDxtbV9tYWxsb2MuaD4KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3NzZS0yMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvc3NlLTIyLmMKaW5kZXggNzM2NGIyZmYzMzcuLmZjNzU2NjlmNDFiIDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMjIuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMjIuYwpAQCAtMTEsNiArMTEsNyBAQAogICAg dGJtaW50cmluLmgsIGx3cGludHJpbi5oLCBwb3BjbnRpbnRyaW4uaCwgZm1haW50cmluLmgsIHRz eGxkdHJraW50cmluLmgsCiAgICBhdng1MTI0Zm1hcHNpbnRyaW4uaCwgYXZ4NTEyNHZubml3aW50 cmluLmgsIGF2eDUxMnZwb3BjbnRkcWludHJpbi5oLAogICAgYXZ4NTEyYml0YWxnaW50cmluLmgs IGF2eDUxMnZwMmludGVyc2VjdGludHJpbi5oLAorICAgYW14dGlsZWludHJpbi5oLCBhbXhpbnQ4 aW50cmluLmgsIGFteGJmMTZpbnRyaW4uaCwKICAgIGF2eDUxMnZwMmludGVyc2VjdHZsaW50cmlu LmggYW5kIG1tX21hbGxvYy5oIHRoYXQgcmVmZXJlbmNlIHRoZSBwcm9wZXIKICAgIGJ1aWx0aW4g ZnVuY3Rpb25zLgogICAgRGVmaW5pbmcgYXdheSAiZXh0ZXJuIiBhbmQgIl9faW5saW5lIiByZXN1 bHRzIGluIGFsbCBvZiB0aGVtIGJlaW5nCkBAIC0xMDIsNyArMTAzLDcgQEAKIAogCiAjaWZuZGVm IERJRkZFUkVOVF9QUkFHTUFTCi0jcHJhZ21hIEdDQyB0YXJnZXQgKCJzc2U0YSwzZG5vdyxhdngs YXZ4MixmbWE0LHhvcCxhZXMscGNsbXVsLHBvcGNudCxhYm0sbHpjbnQsYm1pLGJtaTIsdGJtLGx3 cCxmc2dzYmFzZSxyZHJuZCxmMTZjLHJ0bSxyZHNlZWQscHJmY2h3LGFkeCxmeHNyLHhzYXZlb3B0 LGF2eDUxMmYsYXZ4NTEyZXIsYXZ4NTEyY2QsYXZ4NTEycGYsc2hhLHByZWZldGNod3QxLGF2eDUx MnZsLGF2eDUxMmJ3LGF2eDUxMmRxLGF2eDUxMnZibWksYXZ4NTEydmJtaTIsYXZ4NTEyaWZtYSxh dng1MTI0Zm1hcHMsYXZ4NTEyNHZubml3LGF2eDUxMnZwb3BjbnRkcSxnZm5pLGF2eDUxMmJpdGFs Zyxhdng1MTJiZjE2LGF2eDUxMnZwMmludGVyc2VjdCxzZXJpYWxpemUsdHN4bGR0cmsiKQorI3By YWdtYSBHQ0MgdGFyZ2V0ICgic3NlNGEsM2Rub3csYXZ4LGF2eDIsZm1hNCx4b3AsYWVzLHBjbG11 bCxwb3BjbnQsYWJtLGx6Y250LGJtaSxibWkyLHRibSxsd3AsZnNnc2Jhc2UscmRybmQsZjE2Yyxy dG0scmRzZWVkLHByZmNodyxhZHgsZnhzcix4c2F2ZW9wdCxhdng1MTJmLGF2eDUxMmVyLGF2eDUx MmNkLGF2eDUxMnBmLHNoYSxwcmVmZXRjaHd0MSxhdng1MTJ2bCxhdng1MTJidyxhdng1MTJkcSxh dng1MTJ2Ym1pLGF2eDUxMnZibWkyLGF2eDUxMmlmbWEsYXZ4NTEyNGZtYXBzLGF2eDUxMjR2bm5p dyxhdng1MTJ2cG9wY250ZHEsZ2ZuaSxhdng1MTJiaXRhbGcsYXZ4NTEyYmYxNixhdng1MTJ2cDJp bnRlcnNlY3Qsc2VyaWFsaXplLHRzeGxkdHJrLGFteC10aWxlLGFteC1pbnQ4LGFteC1iZjE2IikK ICNlbmRpZgogCiAvKiBGb2xsb3dpbmcgaW50cmluc2ljcyByZXF1aXJlIGltbWVkaWF0ZSBhcmd1 bWVudHMuICBUaGV5CkBAIC0yMTksNyArMjIwLDcgQEAgdGVzdF80IChfbW1fY21wZXN0cnosIGlu dCwgX19tMTI4aSwgaW50LCBfX20xMjhpLCBpbnQsIDEpCiAKIC8qIGltbWludHJpbi5oIChBVlgv QVZYMi9SRFJORC9GU0dTQkFTRS9GMTZDL1JUTS9BVlg1MTJGL1NIQSkgKi8KICNpZmRlZiBESUZG RVJFTlRfUFJBR01BUwotI3ByYWdtYSBHQ0MgdGFyZ2V0ICgiYXZ4LGF2eDIscmRybmQsZnNnc2Jh c2UsZjE2YyxydG0sYXZ4NTEyZixhdng1MTJlcixhdng1MTJjZCxhdng1MTJwZixzaGEsYXZ4NTEy dmwsYXZ4NTEyYncsYXZ4NTEyZHEsYXZ4NTEyaWZtYSxhdng1MTJ2Ym1pLGF2eDUxMnZibWkyLGF2 eDUxMjRmbWFwcyxhdng1MTI0dm5uaXcsYXZ4NTEydnBvcGNudGRxLGdmbmksYXZ4NTEyYml0YWxn LGF2eDUxMmJmMTYsYXZ4NTEydnAyaW50ZXJzZWN0LHNlcmlhbGl6ZSx0c3hsZHRyayIpCisjcHJh Z21hIEdDQyB0YXJnZXQgKCJhdngsYXZ4MixyZHJuZCxmc2dzYmFzZSxmMTZjLHJ0bSxhdng1MTJm LGF2eDUxMmVyLGF2eDUxMmNkLGF2eDUxMnBmLHNoYSxhdng1MTJ2bCxhdng1MTJidyxhdng1MTJk cSxhdng1MTJpZm1hLGF2eDUxMnZibWksYXZ4NTEydmJtaTIsYXZ4NTEyNGZtYXBzLGF2eDUxMjR2 bm5pdyxhdng1MTJ2cG9wY250ZHEsZ2ZuaSxhdng1MTJiaXRhbGcsYXZ4NTEyYmYxNixhdng1MTJ2 cDJpbnRlcnNlY3Qsc2VyaWFsaXplLHRzeGxkdHJrLGFteC10aWxlLGFteC1pbnQ4LGFteC1iZjE2 IikKICNlbmRpZgogI2luY2x1ZGUgPGltbWludHJpbi5oPgogdGVzdF8xIChfY3Z0c3Nfc2gsIHVu c2lnbmVkIHNob3J0LCBmbG9hdCwgMSkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L3NzZS0yMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvc3NlLTIz LmMKaW5kZXggZWFhZGViZWYxODcuLjljYTdjNWQ5MTlkIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9zc2UtMjMuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9zc2UtMjMuYwpAQCAtMTAsNiArMTAsNyBAQAogICAgdGJtaW50cmluLmgsIGx3cGlu dHJpbi5oLCBwb3BjbnRpbnRyaW4uaCwgZm1haW50cmluLmgsIHRzeHRya2ludHJpbi5oLAogICAg YXZ4NTEyNGZtYXBzaW50cmluLmgsIGF2eDUxMjR2bm5pd2ludHJpbi5oLCBhdng1MTJ2cG9wY250 ZHFpbnRyaW4uaCwKICAgIGF2eDUxMmJpdGFsZ2ludHJpbi5oLCBhdng1MTJ2cDJpbnRlcnNlY3Rp bnRyaW4uaCwKKyAgIGFteHRpbGVpbnRyaW4uaCwgYW14aW50OGludHJpbi5oLCBhbXhiZjE2aW50 cmluLmgsCiAgICBhdng1MTJ2cDJpbnRlcnNlY3R2bGludHJpbi5oIGFuZCBtbV9tYWxsb2MuaCB0 aGF0IHJlZmVyZW5jZSB0aGUgcHJvcGVyCiAgICBidWlsdGluIGZ1bmN0aW9ucy4KICAgIERlZmlu aW5nIGF3YXkgImV4dGVybiIgYW5kICJfX2lubGluZSIgcmVzdWx0cyBpbiBhbGwgb2YgdGhlbSBi ZWluZwpAQCAtNjk3LDYgKzY5OCw2IEBACiAjZGVmaW5lIF9fYnVpbHRpbl9pYTMyX3ZwY2xtdWxx ZHFfdjJkaShBLCBCLCBDKSAgX19idWlsdGluX2lhMzJfdnBjbG11bHFkcV92MmRpKEEsIEIsIDEp IAogI2RlZmluZSBfX2J1aWx0aW5faWEzMl92cGNsbXVscWRxX3Y4ZGkoQSwgQiwgQykgIF9fYnVp bHRpbl9pYTMyX3ZwY2xtdWxxZHFfdjhkaShBLCBCLCAxKSAKIAotI3ByYWdtYSBHQ0MgdGFyZ2V0 ICgic3NlNGEsM2Rub3csYXZ4LGF2eDIsZm1hNCx4b3AsYWVzLHBjbG11bCxwb3BjbnQsYWJtLGx6 Y250LGJtaSxibWkyLHRibSxsd3AsZnNnc2Jhc2UscmRybmQsZjE2YyxmbWEscnRtLHJkc2VlZCxw cmZjaHcsYWR4LGZ4c3IseHNhdmVvcHQsYXZ4NTEyZixhdng1MTJlcixhdng1MTJjZCxhdng1MTJw ZixzaGEscHJlZmV0Y2h3dDEseHNhdmVjLHhzYXZlcyxjbGZsdXNob3B0LGF2eDUxMmJ3LGF2eDUx MmRxLGF2eDUxMnZsLGF2eDUxMnZibWksYXZ4NTEyaWZtYSxhdng1MTI0Zm1hcHMsYXZ4NTEyNHZu bml3LGF2eDUxMnZwb3BjbnRkcSxjbHdiLG13YWl0eCxjbHplcm8scGt1LHNneCxyZHBpZCxnZm5p LGF2eDUxMnZibWkyLHZwY2xtdWxxZHEsYXZ4NTEyYml0YWxnLHBjb25maWcsd2Jub2ludmQsYXZ4 NTEyYmYxNixlbnFjbWQsYXZ4NTEydnAyaW50ZXJzZWN0LHNlcmlhbGl6ZSx0c3hsZHRyayIpCisj cHJhZ21hIEdDQyB0YXJnZXQgKCJzc2U0YSwzZG5vdyxhdngsYXZ4MixmbWE0LHhvcCxhZXMscGNs bXVsLHBvcGNudCxhYm0sbHpjbnQsYm1pLGJtaTIsdGJtLGx3cCxmc2dzYmFzZSxyZHJuZCxmMTZj LGZtYSxydG0scmRzZWVkLHByZmNodyxhZHgsZnhzcix4c2F2ZW9wdCxhdng1MTJmLGF2eDUxMmVy LGF2eDUxMmNkLGF2eDUxMnBmLHNoYSxwcmVmZXRjaHd0MSx4c2F2ZWMseHNhdmVzLGNsZmx1c2hv cHQsYXZ4NTEyYncsYXZ4NTEyZHEsYXZ4NTEydmwsYXZ4NTEydmJtaSxhdng1MTJpZm1hLGF2eDUx MjRmbWFwcyxhdng1MTI0dm5uaXcsYXZ4NTEydnBvcGNudGRxLGNsd2IsbXdhaXR4LGNsemVybyxw a3Usc2d4LHJkcGlkLGdmbmksYXZ4NTEydmJtaTIsdnBjbG11bHFkcSxhdng1MTJiaXRhbGcscGNv bmZpZyx3Ym5vaW52ZCxhdng1MTJiZjE2LGVucWNtZCxhdng1MTJ2cDJpbnRlcnNlY3Qsc2VyaWFs aXplLHRzeGxkdHJrLGFteC10aWxlLGFteC1pbnQ4LGFteC1iZjE2IikKIAogI2luY2x1ZGUgPHg4 NmludHJpbi5oPgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRz LmV4cCBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHAKaW5kZXggNjg4MWI2 NmNkMjMuLjlhYjU0ZGMxNGNlIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQt c3VwcG9ydHMuZXhwCisrKyBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHAK QEAgLTg5NTYsNiArODk1NiwzOSBAQCBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfYXZ4NTEy dmFlcyB7IH0gewogICAgIH0gIi1tdmFlcyIgXQogfQogCisjIFJldHVybiAxIGlmIGFteC10aWxl IGluc3RydWN0aW9ucyBjYW4gYmUgY29tcGlsZWQuCitwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJn ZXRfYW14X3RpbGUgeyB9IHsKKyAgICByZXR1cm4gW2NoZWNrX25vX2NvbXBpbGVyX21lc3NhZ2Vz IGFteF90aWxlIG9iamVjdCB7CisJdm9pZAorCWZvbyAoKQorCXsKKwkgICAgX19hc21fXyB2b2xh dGlsZSAoInRpbGVyZWxlYXNlIiA6Oik7CisJfQorICAgIH0gIi1tYW14LXRpbGUiIF0KK30KKwor IyBSZXR1cm4gMSBpZiBhbXgtaW50OCBpbnN0cnVjdGlvbnMgY2FuIGJlIGNvbXBpbGVkLgorcHJv YyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X2FteF9pbnQ4IHsgfSB7CisgICAgcmV0dXJuIFtjaGVj a19ub19jb21waWxlcl9tZXNzYWdlcyBhbXhfaW50OCBvYmplY3QgeworCXZvaWQKKwlmb28gKCkK Kwl7CisJICAgIF9fYXNtX18gdm9sYXRpbGUgKCJ0ZHBic3NkXHQlJXRtbTEsICUldG1tMiwgJSV0 bW0zIiA6Oik7CisJfQorICAgIH0gIi1tYW14LWludDgiIF0KK30KKworIyBSZXR1cm4gMSBpZiBh bXgtYmYxNiBpbnN0cnVjdGlvbnMgY2FuIGJlIGNvbXBpbGVkLgorcHJvYyBjaGVja19lZmZlY3Rp dmVfdGFyZ2V0X2FteF9iZjE2IHsgfSB7CisgICAgcmV0dXJuIFtjaGVja19ub19jb21waWxlcl9t ZXNzYWdlcyBhbXhfYmYxNiBvYmplY3QgeworCXZvaWQKKwlmb28gKCkKKwl7CisJICAgIF9fYXNt X18gdm9sYXRpbGUgKCJ0ZHBiZjE2cHNcdCUldG1tMSwgJSV0bW0yLCAlJXRtbTMiIDo6KTsKKwl9 CisgICAgfSAiLW1hbXgtYmYxNiIgXQorfQorCiAjIFJldHVybiAxIGlmIHZwY2xtdWxxZHEgaW5z dHJ1Y3Rpb25zIGNhbiBiZSBjb21waWxlZC4KIHByb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF92 cGNsbXVscWRxIHsgfSB7CiAgICAgcmV0dXJuIFtjaGVja19ub19jb21waWxlcl9tZXNzYWdlcyB2 cGNsbXVscWRxIG9iamVjdCB7Ci0tIAoyLjI1LjEKCg== --000000000000472e4405af0ca088--