From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 121147 invoked by alias); 3 Jan 2019 19:59:37 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 120480 invoked by uid 89); 3 Jan 2019 19:59:36 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=BAYES_05,FREEMAIL_FROM,GARBLED_FROM,GARBLED_SUBJECT,GIT_PATCH_1,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS,TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=safety, dozens, Delay, 99 X-HELO: mail-oi1-f195.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SkP97nCj3z8OBa6p+2oXchYR6qDAw53yRHIZgJYVFAw=; b=irzH2V8LBBndrziFiysjfha9TtK3Y3DVgGqAnuEXPo6rIdspEjguAZ0MuP3hacPtpb yzZPFFiNrUze1ZG2l9+deScEtHz+zCqwVG4IqMWI8HjVwtARRyO8MUgxLZFtvk30dNFz 29aMkI8OBzsJJPJKJL9TprChv6WbOa4Ioc4jcMvpS2e44Wv2Cg6ykvS/6E+ADviwIo3s KM4XV6s/VcqvqA7D91UBxuscd6KYB3WjP2zeNsgYh4Dv6+8hrTEYE6KRe55FNF8zffQm 91ssd9F9cAO5TfLSj2QLCLBkzmU8JyscAa4k4gVixrJbt+/5JmUsYeJ9WAD30392Pdxc voVQ== MIME-Version: 1.0 References: <20181226025019.38752-1-ling.ma@MacBook-Pro-8.local> <7D8A82D6-6F0A-4860-856A-EB0C8CD13E9C@antfin.com> <0a474516-b8c8-48cf-aeea-e57c77b78cbd.ling.ml@antfin.com> <8c67f319-31bf-818b-4a89-66d25328026e@arm.com> In-Reply-To: <8c67f319-31bf-818b-4a89-66d25328026e@arm.com> From: "H.J. Lu" Date: Thu, 03 Jan 2019 19:59:00 -0000 Message-ID: Subject: =?UTF-8?B?UmU6IOi9rOWPke+8mltQQVRDSF0gTlVNQSBzcGlubG9jayBbQlogIzIzOTYyXQ==?= To: Szabolcs Nagy Cc: =?UTF-8?B?6ams5YeMKOW9puWGmyk=?= , libc-alpha , "Xiao, Wei3" , nd , "ling.ma.program" Content-Type: multipart/mixed; boundary="000000000000f47577057e933254" X-SW-Source: 2019-01/txt/msg00090.txt.bz2 --000000000000f47577057e933254 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 1793 On Thu, Jan 3, 2019 at 6:52 AM Szabolcs Nagy wrote: > > On 03/01/2019 05:35, =E9=A9=AC=E5=87=8C(=E5=BD=A6=E5=86=9B) wrote: > > create mode 100644 manual/examples/numa-spinlock.c > > create mode 100644 sysdeps/unix/sysv/linux/numa-spinlock-private.h > > create mode 100644 sysdeps/unix/sysv/linux/numa-spinlock.c > > create mode 100644 sysdeps/unix/sysv/linux/numa-spinlock.h > > create mode 100644 sysdeps/unix/sysv/linux/numa_spinlock_alloc.c > > create mode 100644 sysdeps/unix/sysv/linux/x86/tst-numa-variable-o= verhead.c > > create mode 100644 sysdeps/unix/sysv/linux/x86/tst-variable-overhe= ad-skeleton.c > > create mode 100644 sysdeps/unix/sysv/linux/x86/tst-variable-overhe= ad.c > > as far as i can tell the new code is generic > (other than the presence of efficient getcpu), > so i think the test should be generic too. > > > --- /dev/null > > +++ b/sysdeps/unix/sysv/linux/x86/tst-variable-overhead-skeleton.c > > @@ -0,0 +1,384 @@ > ... > > +/* Check spinlock overhead with large number threads. Critical re= gion is > > + very smmall. Critical region + spinlock overhead aren't notice= able > > + when number of threads is small. When thread number increases, > > + spinlock overhead become the bottleneck. It shows up in wall t= ime > > + of thread execution. */ > > yeah, this is not easy to do in a generic way, i think > even on x86 such measurement is problematic, you don't > know what goes on a system (or vm) when the glibc test > is running. > > but doing precise timing is not that important for > checking the correctness of the locks, so i think a > simplified version can be generic test code. Here is the updated patch to make tests generic. --=20 H.J. --000000000000f47577057e933254 Content-Type: text/x-patch; charset="UTF-8"; name="0001-NUMA-spinlock-BZ-23962.patch" Content-Disposition: attachment; filename="0001-NUMA-spinlock-BZ-23962.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jqh18sxc0 Content-length: 95392 RnJvbSA3NDdlOTQwYTRmM2M1OWNlOGJiYTY4YzMzMzRiNjE5ZjE4MDc3Mjdh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAibGluZy5tYSIgPGxp bmcubWxAYW50ZmluLmNvbT4KRGF0ZTogTW9uLCAyNiBOb3YgMjAxOCAyMToz MTo1MSArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIE5VTUEgc3BpbmxvY2sgW0Ja ICMyMzk2Ml0KCk9uIG11bHRpLXNvY2tldCBzeXN0ZW1zLCBtZW1vcnkgaXMg c2hhcmVkIGFjcm9zcyB0aGUgZW50aXJlIHN5c3RlbS4KRGF0YSBhY2Nlc3Mg dG8gdGhlIGxvY2FsIHNvY2tldCBpcyBtdWNoIGZhc3RlciB0aGFuIHRoZSBy ZW1vdGUgc29ja2V0CmFuZCBkYXRhIGFjY2VzcyB0byB0aGUgbG9jYWwgY29y ZSBpcyBmYXN0ZXIgdGhhbiBzaWJsaW5nIGNvcmVzIG9uIHRoZQpzYW1lIHNv Y2tldC4gIEZvciBzZXJpYWxpemVkIHdvcmtsb2FkcyB3aXRoIGNvbnZlbnRp b25hbCBzcGlubG9jaywKd2hlbiB0aGVyZSBpcyBoaWdoIHNwaW5sb2NrIGNv bnRlbnRpb24gYmV0d2VlbiB0aHJlYWRzLCBsb2NrIHBpbmctcG9uZwphbW9u ZyBzb2NrZXRzIGJlY29tZXMgdGhlIGJvdHRsZW5lY2sgYW5kIHRocmVhZHMg c3BlbmQgbWFqb3JpdHkgb2YKdGhlaXIgdGltZSBpbiBzcGlubG9jayBvdmVy aGVhZC4KCk9uIG11bHRpLXNvY2tldCBzeXN0ZW1zLCB0aGUga2V5cyB0byBv dXIgTlVNQSBzcGlubG9jayBwZXJmb3JtYW5jZQphcmUgdG8gbWluaW1pemUg Y3Jvc3Mtc29ja2V0IHRyYWZmaWMgYXMgd2VsbCBhcyBsb2NhbGl6ZSB0aGUg c2VyaWFsaXplZAp3b3JrbG9hZCB0byBvbmUgY29yZSBmb3IgZXhlY3V0aW9u LiAgVGhlIGJhc2ljIHByaW5jaXBsZXMgb2YgTlVNQQpzcGlubG9jayBhcmUg bWFpbmx5IGNvbnNpc3RlZCBvZiBmb2xsb3dpbmcgYXBwcm9hY2hlcywgd2hp Y2ggcmVkdWNlCmRhdGEgbW92ZW1lbnQgYW5kIGFjY2VsZXJhdGUgY3JpdGlj YWwgc2VjdGlvbiwgZXZlbnR1YWxseSBnaXZlIHVzCnNpZ25pZmljYW50IHBl cmZvcm1hbmNlIGltcHJvdmVtZW50LgoKMS4gTUNTIHNwaW5sb2NrCk1DUyBz cGlubG9jayBoZWxwIHVzIHRvIHJlZHVjZSB0aGUgdXNlbGVzcyBsb2NrIG1v dmVtZW50IGluIHRoZQpzcGlubmluZyBzdGF0ZS4gIFRoaXMgcGFwZXIgcHJv dmlkZXMgYSBnb29kIGRlc2NyaXB0aW9uIGZvciB0aGlzCmtpbmQgb2YgbG9j azoKPGh0dHA6Ly93d3cuY2lzZS51ZmwuZWR1L3RyL0RPQy9SRVAtMTk5Mi03 MS5wZGY+CgoyLiBDcml0aWNhbCBTZWN0aW9uIEludGVncmF0aW9uIChDU0kp CkVzc2VudGlhbGx5IHNwaW5sb2NrIGlzIHNpbWlsYXIgdG8gdGhhdCBvbmUg Y29yZSBjb21wbGV0ZSBjcml0aWNhbApzZWN0aW9ucyBvbmUgYnkgb25lLiBT byB3aGVuIGNvbnRlbnRpb24gaGFwcGVuLCB0aGUgc2VyaWFsaXplZCB3b3Jr cwphcmUgc2VudCB0byB0aGUgY29yZSB3aG8gaXMgdGhlIGxvY2sgb3duZXIg YW5kIHJlc3BvbnNpYmxlIHRvIGV4ZWN1dGUKdGhlbSwgdGhhdCBjYW4gc2F2 ZSBtdWNoIHRpbWUgYW5kIHBvd2VyLCBiZWNhdXNlIGFsbCBzaGFyZWQgZGF0 YSBhcmUKbG9jYXRlZCBpbiBwcml2YXRlIGNhY2hlIG9mIHRoZSBsb2NrIG93 bmVyLgoKV2UgaW1wbGVtZW50ZWQgdGhpcyBtZWNoYW5pc20gYmFzZWQgb24g cXVldWVkIHNwaW5sb2NrIGluIGtlcm5lbCwgdGhhdApzcGVlZHMgdXAgY3Jp dGljYWwgc2VjdGlvbiwgYW5kIHJlZHVjZXMgdGhlIHByb2JhYmlsaXR5IG9m IGNvbnRlbnRpb24uClRoZSBwYXBlciBwcm92aWRlcyBhIGdvb2QgZGVzY3Jp cHRpb24gZm9yIHRoaXMga2luZCBvZiBsb2NrOgo8aHR0cHM6Ly91c2Vycy5l Y2UuY211LmVkdS9+b211dGx1L3B1Yi9hY3NfYXNwbG9zMDkucGRmPgoKMy4g TlVNQSBBd2FyZSBTcGlubG9jayAoTkFTKQpDdXJyZW50bHkgbXVsdGktc29j a2V0IHN5c3RlbXMgZ2l2ZSB1cyBiZXR0ZXIgcGVyZm9ybWFuY2UgcGVyIHdh dHQsCmhvd2V2ZXIgdGhhdCBhbHNvIGludm9sdmVzIG1vcmUgY29tcGxleCBz eW5jaHJvbml6YXRpb24gcmVxdWlyZW1lbnQsCmJlY2F1c2Ugb2ZmLWNoaXAg ZGF0YSBtb3ZlbWVudCBpcyBtdWNoIHNsb3dlci4gV2UgdXNlIGRpc3RyaWJ1 dGVkCnN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20gdG8gZGVjcmVhc2UgTG9j ayBjYWNoZSBsaW5lIHRvIGFuZCBmcm9tCmRpZmZlcmVudCBub2Rlcy4gVGhl IHBhcGVyIHByb3ZpZGVzIGEgZ29vZCBkZXNjcmlwdGlvbiBmb3IgdGhpcyBr aW5kCm9mIGxvY2s6CjxodHRwczovL3d3dy51c2VuaXgub3JnL3N5c3RlbS9m aWxlcy9jb25mZXJlbmNlL2F0YzE3L2F0YzE3LWthc2h5YXAucGRmPgoKNC4g WWllbGQgU2NoZWR1bGUKV2hlbiB0aHJlYWRzIGFyZSBhcHBseWluZyBmb3Ig Q3JpdGljYWwgU2VjdGlvbiBJbnRlZ3JhdGlvbihDU0kpIHdpdGgKa25vd24g Y29udGVudGlvbiwgdGhleSB3aWxsIGRlbGVnYXRlIHdvcmsgdG8gdGhlIHRo cmVhZCB3aG8gaXMgdGhlCmxvY2sgb3duZXIsIGFuZCB3YWl0IGZvciB3b3Jr IHRvIGJlIGNvbXBsZXRlZC4gIFRoZSByZXNvdXJjZXMgd2hpY2gKdGhleSBh cmUgdXNpbmcgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRvIG90aGVyIHRocmVh ZHMuIEluIG9yZGVyIHRvCmFjY2VsZXJhdGUgdGhlIHNjZW5hcmlvLCB3ZSBp bnRyb2R1Y2UgeWllbGRfc2NoZWQgZnVuY3Rpb24gZHVyaW5nCnNwaW5uaW5n IHN0YWdlLgoKNS4gT3B0aW1pemF0aW9uIHdoZW4gTlVNQSBpcyBPTiBvciBP RkYuCkFsdGhvdWdoIHByb2dyYW1zIGNhbiBhY2Nlc3MgbWVtb3J5IHdpdGgg bG93ZXIgbGF0ZW5jeSB3aGVuIE5VTUEgaXMKZW5hYmxlZCwgc29tZSBwcm9n cmFtcyBtYXkgbmVlZCBtb3JlIG1lbW9yeSBiYW5kd2lkdGggZm9yIGNvbXB1 dGF0aW9uCndpdGggTlVNQSBkaXNhYmxlZC4gIFdlIGFsc28gb3B0aW1pemUg bXVsdGktc29ja2V0IHN5c3RlbXMgd2l0aCBOVU1BCmRpc2FibGVkLgoKTlVN QSBzcGlubG9jayBmbG93IGNoYXJ0IChhc3N1bWluZyB0aGVyZSBhcmUgMiBD UFUgbm9kZXMpOgoKMS4gVGhyZWFkcyBmcm9tIG5vZGVfMC9ub2RlXzEgYWNx dWlyZSBsb2NhbCBsb2NrIGZvciBub2RlXzAvMQpyZXNwZWN0aXZlbHkuICBJ ZiB0aGUgdGhyZWFkIHN1Y2NlZWRzIGluIGFjcXVpcmluZyBsb2NhbCBsb2Nr LCBpdApnb2VzIHRvIHN0ZXAgMiwgb3RoZXJ3aXNlIHB1c2hlcyBjcml0aWNh bCBmdW5jdGlvbiBpbnRvIGN1cnJlbnQKbG9jYWwgd29yayBxdWV1ZSwgYW5k IGVudGVycyBpbnRvIHNwaW5uaW5nIHN0YWdlIHdpdGggTUNTIG1vZGUuCgoy LiBUaHJlYWRzIGZyb20gbm9kZV8wL25vZGVfMSBhY3F1aXJlIHRoZSBnbG9i YWwgbG9jay4gIElmIGl0IHN1Y2NlZWRzCmluIGFjcXVpcmluZyB0aGUgZ2xv YmFsIGxvY2sgYXMgdGhlIGxvY2sgb3duZXIsIGl0IGdvZXMgdG8gc3RlcCAz LApvdGhlcndpc2Ugd2FpdHMgdW50aWwgdGhlIGxvY2sgb3duZXIgdGhyZWFk IHJlbGVhc2VzIHRoZSBnbG9iYWwgbG9jay4KCjMuIFRoZSBsb2NrIG93bmVy IHRocmVhZCBmcm9tIG5vZGVfMC8xIGVudGVycyBpbnRvIGNyaXRpY2FsIHNl Y3Rpb24sCmNsZWFucyB1cCB3b3JrIHF1ZXVlIGJ5IHBlcmZvcm1pbmcgYWxs IGxvY2FsIGNyaXRpY2FsIGZ1bmN0aW9ucwpwdXNoZWQgYXQgc3RlcCAxIHdp dGggQ1NJIG9uIGJlaGFsZiBvZiBvdGhlciB0aHJlYWRzIGFuZCBpbmZvcm1z CnRob3NlIHNwaW5uaW5nIHRocmVhZHMgdGhhdCB0aGVpciB3b3JrcyBoYXZl IGJlZW4gZG9uZS4gIEl0IHRoZW4KcmVsZWFzZXMgdGhlIGxvY2FsIGxvY2su Cgo0LiBUaGUgbG9jayBvd25lciB0aHJlYWQgZnJlZXMgZ2xvYmFsIGxvY2su ICBJZiBhbm90aGVyIHRocmVhZCBpcwp3YWl0aW5nIGF0IHN0ZXAgMiwgdGhl IGxvY2sgb3duZXIgdGhyZWFkIHBhc3NlcyB0aGUgZ2xvYmFsIGxvY2sgdG8K dGhlIHdhaXRpbmcgdGhyZWFkIGFuZCByZXR1cm5zLiAgVGhlIG5ldyBsb2Nr IG93bmVyIHRocmVhZCBlbnRlcnMKaW50byBzdGVwIDMuICBJZiBubyB0aHJl YWRzIGFyZSB3YWl0aW5nLCB0aGUgbG9jayBvd25lciB0aHJlYWQKcmVsZWFz ZXMgdGhlIGdsb2JhbCBsb2NrIGFuZCByZXR1cm5zLiAgVGhlIHdob2xlIGNy aXRpY2FsIHNlY3Rpb24KcHJvY2VzcyBpcyBjb21wbGV0ZWQuCgpTdGVwcyAx IGFuZCAyIG1pdGlnYXRlIGdsb2JhbCBsb2NrIGNvbnRlbnRpb24uICBPbmx5 IG9uZSB0aHJlYWQKZnJvbSBkaWZmZXJlbnQgbm9kZXMgd2lsbCBjb21wZXRl IGZvciB0aGUgZ2xvYmFsIGxvY2sgaW4gc3RlcCAyLgpTdGVwIDMgcmVkdWNl cyB0aGUgZ2xvYmFsIGxvY2sgJiBzaGFyZWQgZGF0YSBtb3ZlbWVudCBiZWNh dXNlIHRoZXkKYXJlIGxvY2F0ZWQgaW4gdGhlIHNhbWUgbm9kZSBhcyB3ZWxs IGFzIHRoZSBzYW1lIGNvcmUuICBPdXIgZGF0YQpzaG93cyB0aGF0IENyaXRp Y2FsIFNlY3Rpb24gSW50ZWdyYXRpb24gKENTSSkgaW1wcm92ZXMgZGF0YSBs b2NhbGl0eQphbmQgTlVNQS1hd2FyZSBzcGlubG9jayAoTkFTKSBoZWxwcyBD U0kgYmFsYW5jZSB0aGUgd29ya2xvYWQuCgpOVU1BIHNwaW5sb2NrIGNhbiBn cmVhdGx5IHNwZWVkIHVwIGNyaXRpY2FsIHNlY3Rpb24gb24gbXVsdGktc29j a2V0CnN5c3RlbXMuICBJdCBzaG91bGQgaW1wcm92ZSBzcGlubG9jayBwZXJm b3JtYW5jZSBvbiBhbGwgbXVsdGktc29ja2V0CnN5c3RlbXMuCgoyMDE5LTAx LTAzICBMaW5nIE1hICA8bGluZy5tbEBhbnRmaW4uY29tPgoJICAgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCSAgICBXZWkgWGlhbyAgPHdl aTMueGlhb0BpbnRlbC5jb20+CgoJW0JaICMyMzk2Ml0KCSogTkVXUzogTWVu dGlvbiBOVU1BIHNwaW5sb2NrLgoJKiBtYW51YWwvZXhhbXBsZXMvbnVtYS1z cGlubG9jay5jOiBOZXcgZmlsZS4KCSogc3lzZGVwcy91bml4L3N5c3YvbGlu dXgvbnVtYS1zcGlubG9jay1wcml2YXRlLmg6IExpa2V3aXNlLgoJKiBzeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9udW1hLXNwaW5sb2NrLmM6IExpa2V3aXNl LgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9udW1hLXNwaW5sb2NrLmg6 IExpa2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9udW1hX3Nw aW5sb2NrX2FsbG9jLmM6IExpa2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lz di9saW51eC90c3QtbnVtYS12YXJpYWJsZS1vdmVyaGVhZC5jOiBMaWtld2lz ZS4KCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvdHN0LXZhcmlhYmxlLW92 ZXJoZWFkLXNrZWxldG9uLmM6CglMaWtld2lzZS4KCSogc3lzZGVwcy91bml4 L3N5c3YvbGludXgvdHN0LXZhcmlhYmxlLW92ZXJoZWFkLmM6IExpa2V3aXNl LgoJKiBtYW51YWwvdGhyZWFkcy50ZXhpOiBEb2N1bWVudCBOVU1BIHNwaW5s b2NrLgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9NYWtlZmlsZSAobGli cHRocmVhZC1zeXNkZXBfcm91dGluZXMpOgoJQWRkIG51bWFfc3BpbmxvY2tf YWxsb2MgYW5kIG51bWEtc3BpbmxvY2suCgkoc3lzZGVwX2hlYWRlcnMpOiBB ZGQgbnVtYS1zcGlubG9jay5oLgoJKHh0ZXN0cyk6IEFkZCB0c3QtdmFyaWFi bGUtb3ZlcmhlYWQgYW5kIHRzdC1udW1hLXZhcmlhYmxlLW92ZXJoZWFkLgoJ KiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9WZXJzaW9ucyAobGlicHRocmVh ZCk6IEFkZAoJbnVtYV9zcGlubG9ja19hbGxvYywgbnVtYV9zcGlubG9ja19m cmVlLCBudW1hX3NwaW5sb2NrX2luaXQKCWFuZCBudW1hX3NwaW5sb2NrX2Fw cGx5IHRvIEdMSUJDXzIuMjkuCgkqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L2FhcmNoNjQvbGlicHRocmVhZC5hYmlsaXN0OiBBZGQKCW51bWFfc3Bpbmxv Y2tfYWxsb2MsIG51bWFfc3BpbmxvY2tfYXBwbHksIG51bWFfc3BpbmxvY2tf ZnJlZQoJYW5kIG51bWFfc3BpbmxvY2tfaW5pdC4KCSogc3lzZGVwcy91bml4 L3N5c3YvbGludXgvYWxwaGEvbGlicHRocmVhZC5hYmlsaXN0OiBMaWtld2lz ZS4KCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYnB0aHJlYWQu YWJpbGlzdDogTGlrZXdpc2UuCgkqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L2Nza3kvbGlicHRocmVhZC5hYmlsaXN0OiBMaWtld2lzZS4KCSogc3lzZGVw cy91bml4L3N5c3YvbGludXgvaHBwYS9saWJwdGhyZWFkLmFiaWxpc3Q6IExp a2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2xpYnB0 aHJlYWQuYWJpbGlzdDogTGlrZXdpc2UuCgkqIHN5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L2lhNjQvbGlicHRocmVhZC5hYmlsaXN0OiBMaWtld2lzZS4KCSog c3lzZGVwcy91bml4L3N5c3YvbGludXgvbTY4ay9jb2xkZmlyZS9saWJwdGhy ZWFkLmFiaWxpc3Q6CglMaWtld2lzZS4KCSogc3lzZGVwcy91bml4L3N5c3Yv bGludXgvbTY4ay9tNjgweDAvbGlicHRocmVhZC5hYmlsaXN0OiBMaWtld2lz ZS4KCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWljcm9ibGF6ZS9saWJw dGhyZWFkLmFiaWxpc3Q6IExpa2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lz di9saW51eC9taXBzL21pcHMzMi9saWJwdGhyZWFkLmFiaWxpc3Q6IExpa2V3 aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL21pcHM2NC9s aWJwdGhyZWFkLmFiaWxpc3Q6IExpa2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgv c3lzdi9saW51eC9uaW9zMi9saWJwdGhyZWFkLmFiaWxpc3Q6IExpa2V3aXNl LgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMz Mi9saWJwdGhyZWFkLmFiaWxpc3Q6CglMaWtld2lzZS4KCSogc3lzZGVwcy91 bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvYmUvbGlicHRocmVh ZC5hYmlsaXN0OgoJTGlrZXdpc2UuCgkqIHN5c2RlcHMvdW5peC9zeXN2L2xp bnV4L3Bvd2VycGMvcG93ZXJwYzY0L2xlL2xpYnB0aHJlYWQuYWJpbGlzdDoK CUxpa2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9yaXNjdi9y djY0L2xpYnB0aHJlYWQuYWJpbGlzdDogTGlrZXdpc2UuCgkqIHN5c2RlcHMv dW5peC9zeXN2L2xpbnV4L3MzOTAvczM5MC0zMi9saWJwdGhyZWFkLmFiaWxp c3Q6CglMaWtld2lzZS4KCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvczM5 MC9zMzkwLTY0L2xpYnB0aHJlYWQuYWJpbGlzdDoKCUxpa2V3aXNlLgoJKiBz eXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9saWJwdGhyZWFkLmFiaWxpc3Q6 IExpa2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zcGFyYy9z cGFyYzMyL2xpYnB0aHJlYWQuYWJpbGlzdDoKCUxpa2V3aXNlLgoJKiBzeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9zcGFyYy9zcGFyYzY0L2xpYnB0aHJlYWQu YWJpbGlzdDoKCUxpa2V3aXNlLgoJKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51 eC94ODZfNjQvNjQvbGlicHRocmVhZC5hYmlsaXN0OiBMaWtld2lzZS4KCSog c3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L3gzMi9saWJwdGhyZWFk LmFiaWxpc3Q6IExpa2V3aXNlLgotLS0KIE5FV1MgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBtYW51YWwvZXhh bXBsZXMvbnVtYS1zcGlubG9jay5jICAgICAgICAgICAgICAgfCAgOTkgKysr KysKIG1hbnVhbC90aHJlYWRzLnRleGkgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDEwNSArKysrKwogc3lzZGVwcy91bml4L3N5c3YvbGludXgvTWFr ZWZpbGUgICAgICAgICAgICAgIHwgICAzICsKIHN5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L1ZlcnNpb25zICAgICAgICAgICAgICB8ICAgOSArCiAuLi4vc3lz di9saW51eC9hYXJjaDY0L2xpYnB0aHJlYWQuYWJpbGlzdCAgICAgfCAgIDQg KwogLi4uL3VuaXgvc3lzdi9saW51eC9hbHBoYS9saWJwdGhyZWFkLmFiaWxp c3QgIHwgICA0ICsKIC4uLi91bml4L3N5c3YvbGludXgvYXJtL2xpYnB0aHJl YWQuYWJpbGlzdCAgICB8ICAgNCArCiAuLi4vdW5peC9zeXN2L2xpbnV4L2Nz a3kvbGlicHRocmVhZC5hYmlsaXN0ICAgfCAgIDQgKwogLi4uL3VuaXgvc3lz di9saW51eC9ocHBhL2xpYnB0aHJlYWQuYWJpbGlzdCAgIHwgICA0ICsKIC4u Li91bml4L3N5c3YvbGludXgvaTM4Ni9saWJwdGhyZWFkLmFiaWxpc3QgICB8 ICAgNCArCiAuLi4vdW5peC9zeXN2L2xpbnV4L2lhNjQvbGlicHRocmVhZC5h YmlsaXN0ICAgfCAgIDQgKwogLi4uL2xpbnV4L202OGsvY29sZGZpcmUvbGli cHRocmVhZC5hYmlsaXN0ICAgIHwgICA0ICsKIC4uLi9zeXN2L2xpbnV4L202 OGsvbTY4MHgwL2xpYnB0aHJlYWQuYWJpbGlzdCB8ICAgNCArCiAuLi4vc3lz di9saW51eC9taWNyb2JsYXplL2xpYnB0aHJlYWQuYWJpbGlzdCAgfCAgIDQg KwogLi4uL3N5c3YvbGludXgvbWlwcy9taXBzMzIvbGlicHRocmVhZC5hYmls aXN0IHwgICA0ICsKIC4uLi9zeXN2L2xpbnV4L21pcHMvbWlwczY0L2xpYnB0 aHJlYWQuYWJpbGlzdCB8ICAgNCArCiAuLi4vdW5peC9zeXN2L2xpbnV4L25p b3MyL2xpYnB0aHJlYWQuYWJpbGlzdCAgfCAgIDQgKwogLi4uL3VuaXgvc3lz di9saW51eC9udW1hLXNwaW5sb2NrLXByaXZhdGUuaCAgIHwgIDM4ICsrCiBz eXNkZXBzL3VuaXgvc3lzdi9saW51eC9udW1hLXNwaW5sb2NrLmMgICAgICAg fCAzMjcgKysrKysrKysrKysrKysrCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9udW1hLXNwaW5sb2NrLmggICAgICAgfCAgNjQgKysrCiBzeXNkZXBzL3Vu aXgvc3lzdi9saW51eC9udW1hX3NwaW5sb2NrX2FsbG9jLmMgfCAzMDQgKysr KysrKysrKysrKysKIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9saWJwdGhyZWFk LmFiaWxpc3QgICAgICB8ICAgNCArCiAuLi4vcG93ZXJwYy9wb3dlcnBjNjQv YmUvbGlicHRocmVhZC5hYmlsaXN0ICAgfCAgIDQgKwogLi4uL3Bvd2VycGMv cG93ZXJwYzY0L2xlL2xpYnB0aHJlYWQuYWJpbGlzdCAgIHwgICA0ICsKIC4u Li9zeXN2L2xpbnV4L3Jpc2N2L3J2NjQvbGlicHRocmVhZC5hYmlsaXN0ICB8 ICAgNCArCiAuLi4vbGludXgvczM5MC9zMzkwLTMyL2xpYnB0aHJlYWQuYWJp bGlzdCAgICAgfCAgIDQgKwogLi4uL2xpbnV4L3MzOTAvczM5MC02NC9saWJw dGhyZWFkLmFiaWxpc3QgICAgIHwgICA0ICsKIHN5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L3NoL2xpYnB0aHJlYWQuYWJpbGlzdCB8ICAgNCArCiAuLi4vbGlu dXgvc3BhcmMvc3BhcmMzMi9saWJwdGhyZWFkLmFiaWxpc3QgICAgfCAgIDQg KwogLi4uL2xpbnV4L3NwYXJjL3NwYXJjNjQvbGlicHRocmVhZC5hYmlsaXN0 ICAgIHwgICA0ICsKIC4uLi9zeXN2L2xpbnV4L3RzdC1udW1hLXZhcmlhYmxl LW92ZXJoZWFkLmMgICB8ICA1MyArKysKIC4uLi9saW51eC90c3QtdmFyaWFi bGUtb3ZlcmhlYWQtc2tlbGV0b24uYyAgICB8IDM5NyArKysrKysrKysrKysr KysrKysKIC4uLi91bml4L3N5c3YvbGludXgvdHN0LXZhcmlhYmxlLW92ZXJo ZWFkLmMgICB8ICA0NyArKysKIC4uLi9zeXN2L2xpbnV4L3g4Nl82NC82NC9s aWJwdGhyZWFkLmFiaWxpc3QgICB8ICAgNCArCiAuLi4vc3lzdi9saW51eC94 ODZfNjQveDMyL2xpYnB0aHJlYWQuYWJpbGlzdCAgfCAgIDQgKwogMzYgZmls ZXMgY2hhbmdlZCwgMTU0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgbWFudWFsL2V4YW1wbGVzL251bWEtc3BpbmxvY2suYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L251bWEtc3Bp bmxvY2stcHJpdmF0ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91 bml4L3N5c3YvbGludXgvbnVtYS1zcGlubG9jay5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbnVtYS1zcGlubG9jay5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgv bnVtYV9zcGlubG9ja19hbGxvYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lz ZGVwcy91bml4L3N5c3YvbGludXgvdHN0LW51bWEtdmFyaWFibGUtb3Zlcmhl YWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xp bnV4L3RzdC12YXJpYWJsZS1vdmVyaGVhZC1za2VsZXRvbi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvdHN0LXZhcmlh YmxlLW92ZXJoZWFkLmMKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRl eCBjYzIwMTAyZmRhLi5iY2FhOTMyZDRlIDEwMDY0NAotLS0gYS9ORVdTCisr KyBiL05FV1MKQEAgLTksNiArOSw5IEBAIFZlcnNpb24gMi4yOQogCiBNYWpv ciBuZXcgZmVhdHVyZXM6CiAKKyogTlVNQSBzcGlubG9jayBpcyBhZGRlZCB0 byBwcm92aWRlIGEgc3BpbmxvY2sgaW1wbGVtZW50YXRpb24gb3B0aW1pemVk CisgIGZvciBtdWx0aS1zb2NrZXQgTlVNQSBzeXN0ZW1zLgorCiAqIFRoZSBn ZXRjcHUgd3JhcHBlciBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCwgd2hpY2gg cmV0dXJucyB0aGUgY3VycmVudGx5CiAgIHVzZWQgQ1BVIGFuZCBOVU1BIG5v ZGUuICBUaGlzIGZ1bmN0aW9uIGlzIExpbnV4LXNwZWNpZmljLgogCmRpZmYg LS1naXQgYS9tYW51YWwvZXhhbXBsZXMvbnVtYS1zcGlubG9jay5jIGIvbWFu dWFsL2V4YW1wbGVzL251bWEtc3BpbmxvY2suYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi5jYTk4NDQzZjY5Ci0tLSAvZGV2L251 bGwKKysrIGIvbWFudWFsL2V4YW1wbGVzL251bWEtc3BpbmxvY2suYwpAQCAt MCwwICsxLDk5IEBACisvKiBOVU1BIHNwaW5sb2NrIGV4YW1wbGUuCisgICBD b3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICAgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYg bm90LCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KyovCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8c3RkaW8u aD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4K KyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lu Y2x1ZGUgPG51bWEtc3BpbmxvY2suaD4KKworI2RlZmluZSBOVU1fVEhSRUFE UwkyMAorCitzdHJ1Y3QgbnVtYV9zcGlubG9jayAqbG9jazsKKworc3RydWN0 IHdvcmtfdG9kb19hcmd1bWVudAoreworICB2b2lkICphcmc7Cit9OworCitz dGF0aWMgdm9pZCAqCit3b3JrX3RvZG8gKHZvaWQgKnYpCit7CisgIC8qIERv IHRoZSByZWFsIHdvcmsgd2l0aCBwLT5hcmcuICovCisgIHN0cnVjdCB3b3Jr X3RvZG9fYXJndW1lbnQgKnAgPSB2OworICAvKiBSZXR1cm4gdmFsdWUgaXMg c2V0IHRvIGxvY2tfaW5mby5yZXN1bHQuICovCisgIHJldHVybiBOVUxMOwor fQorCit2b2lkICoKK3dvcmtfdGhyZWFkICh2b2lkICphcmcpCit7CisgIHN0 cnVjdCB3b3JrX3RvZG9fYXJndW1lbnQgd29ya190b2RvX2FyZzsKKyAgc3Ry dWN0IG51bWFfc3BpbmxvY2tfaW5mbyBsb2NrX2luZm87CisKKyAgaWYgKG51 bWFfc3BpbmxvY2tfaW5pdCAobG9jaywgJmxvY2tfaW5mbykpCisgICAgewor ICAgICAgcHJpbnRmICgibnVtYV9zcGlubG9ja19pbml0IGZhaWx1cmU6ICVt XG4iKTsKKyAgICAgIGV4aXQgKDEpOworICAgIH0KKworICB3b3JrX3RvZG9f YXJnLmFyZyA9IGFyZzsKKyAgbG9ja19pbmZvLmFyZ3VtZW50ID0gJndvcmtf dG9kb19hcmc7CisgIGxvY2tfaW5mby53b3JrbG9hZCA9IHdvcmtfdG9kbzsK KworICBudW1hX3NwaW5sb2NrX2FwcGx5ICgmbG9ja19pbmZvKTsKKworICBy ZXR1cm4gbG9ja19pbmZvLnJlc3VsdDsKK30KKworaW50CittYWluIChpbnQg YXJnYywgY2hhciAqKmFyZ3YpCit7CisgIGxvY2sgPSBudW1hX3NwaW5sb2Nr X2FsbG9jICgpOworICBwdGhyZWFkX3QgdGhyW05VTV9USFJFQURTXTsKKyAg dm9pZCAqcmVzW05VTV9USFJFQURTXTsKKyAgaW50IG51bXRocmVhZHMgPSBO VU1fVEhSRUFEUzsKKyAgaW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IE5V TV9USFJFQURTOyBpKyspCisgICAgeworICAgICAgaW50IGVycl9yZXQgPSBw dGhyZWFkX2NyZWF0ZSAoJnRocltpXSwgTlVMTCwgd29ya190aHJlYWQsCisJ CQkJICAgICh2b2lkICopIChpbnRwdHJfdCkgaSk7CisgICAgICBpZiAoZXJy X3JldCAhPSAwKQorCXsKKwkgIHByaW50ZiAoInB0aHJlYWRfY3JlYXRlIGZh aWxlZDogJWQsICVzXG4iLAorCQkgIGksIHN0cmVycm9yIChpKSk7CisJICBu dW10aHJlYWRzID0gaTsKKwkgIGJyZWFrOworCX0KKyAgICB9CisKKyAgZm9y IChpID0gMDsgaSA8IG51bXRocmVhZHM7IGkrKykKKyAgICB7CisgICAgICBp ZiAocHRocmVhZF9qb2luICh0aHJbaV0sICh2b2lkICopICZyZXNbaV0pID09 IDApCisJZnJlZSAocmVzW2ldKTsKKyAgICAgIGVsc2UKKwlwcmludGYgKCJw dGhyZWFkX2pvaW4gZmFpbHVyZTogJW1cbiIpOworICAgIH0KKworICBudW1h X3NwaW5sb2NrX2ZyZWUgKGxvY2spOworCisgIHJldHVybiAwOworfQpkaWZm IC0tZ2l0IGEvbWFudWFsL3RocmVhZHMudGV4aSBiL21hbnVhbC90aHJlYWRz LnRleGkKaW5kZXggODdmZGE3ZDhlNy4uZTgyYWUwZDUxYiAxMDA2NDQKLS0t IGEvbWFudWFsL3RocmVhZHMudGV4aQorKysgYi9tYW51YWwvdGhyZWFkcy50 ZXhpCkBAIC02MjUsNiArNjI1LDkgQEAgdGhlIHN0YW5kYXJkLgogQG1lbnUK ICogRGVmYXVsdCBUaHJlYWQgQXR0cmlidXRlczo6ICAgICAgICAgICAgIFNl dHRpbmcgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvcgogCQkJCQkgIHRocmVhZHMg aW4gYSBwcm9jZXNzLgorKiBOVU1BIFNwaW5sb2NrOjogICAgICAgICAgICAg ICAgICAgICAgICAgU3BpbmxvY2sgb3B0aW1pemVkIGZvcgorCQkJCQkgIG11 bHRpLXNvY2tldCBOVU1BIHBsYXRmb3JtLgorKiBOVU1BIFNwaW5sb2NrIEV4 YW1wbGU6OiAgICAgICAgICAgICAgICAgQSBOVU1BIHNwaW5sb2NrIGV4YW1w bGUuCiBAZW5kIG1lbnUKIAogQG5vZGUgRGVmYXVsdCBUaHJlYWQgQXR0cmli dXRlcwpAQCAtNjY5LDYgKzY3MiwxMDggQEAgVGhlIHN5c3RlbSBkb2VzIG5v dCBoYXZlIHN1ZmZpY2llbnQgbWVtb3J5LgogQGVuZCB0YWJsZQogQGVuZCBk ZWZ0eXBlZnVuCiAKK0Bub2RlIE5VTUEgU3BpbmxvY2sKK0BzdWJzdWJzZWN0 aW9uIFNwaW5sb2NrIG9wdGltaXplZCBmb3IgbXVsdGktbm9kZSBOVU1BIHN5 c3RlbXMKKworVG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvbiBtdWx0aS1zb2Nr ZXQgTlVNQSBwbGF0Zm9ybXMgZm9yIHNlcmlhbGl6ZWQKK3JlZ2lvbiBwcm90 ZWN0ZWQgYnkgc3BpbmxvY2ssIEB0aGVnbGliY3t9IGltcGxlbWVudHMgYSBO VU1BIHNwaW5sb2NrCitvYmplY3QsIHdoaWNoIG1pbmltaXplcyBjcm9zcy1z b2NrZXQgdHJhZmZpYyBhbmQgc2VuZHMgdGhlIHByb3RlY3RlZAorc2VyaWFs aXplZCByZWdpb24gdG8gb25lIGNvcmUgZm9yIGV4ZWN1dGlvbiB0byByZWR1 Y2Ugc3BpbmxvY2sgY29udGVudGlvbgorb3ZlcmhlYWQuCisKK1RoZSBmdW5k YW1lbnRhbCBkYXRhIHR5cGVzIGZvciBhIE5VTUEgc3BpbmxvY2sgYXJlCitA Y29kZXtudW1hX3NwaW5sb2NrfSBhbmQgQGNvZGV7bnVtYV9zcGlubG9ja19p bmZvfToKKworQGRlZnRwIHtEYXRhIFR5cGV9IHtzdHJ1Y3QgbnVtYV9zcGlu bG9ja30KK0BzdGFuZGFyZHN7TGludXgsIG51bWEtc3BpbmxvY2suaH0KK1Ro aXMgZGF0YSB0eXBlIGlzIGFuIG9wYXF1ZSBzdHJ1Y3R1cmUuICBBIEBjb2Rl e251bWFfc3BpbmxvY2t9IHBvaW50ZXIKK3VuaXF1ZWx5IGlkZW50aWZpZXMg YSBOVU1BIHNwaW5sb2NrIG9iamVjdC4KK0BlbmQgZGVmdHAKKworQGRlZnRw IHtEYXRhIFR5cGV9IHtzdHJ1Y3QgbnVtYV9zcGlubG9ja19pbmZvfQorQHN0 YW5kYXJkc3tMaW51eCwgbnVtYS1zcGlubG9jay5ofQorCitUaGlzIGRhdGEg dHlwZSB1bmlxdWVseSBpZGVudGlmaWVzIGEgTlVNQSBzcGlubG9jayBpbmZv cm1hdGlvbiBvYmplY3QgZm9yCithIHRocmVhZC4gIEl0IGhhcyB0aGUgZm9s bG93aW5nIG1lbWJlcnMsIGFuZCBvdGhlcnMgaW50ZXJuYWwgdG8gTlVNQQor c3BpbmxvY2sgaW1wbGVtZW5hdGlvbjoKKworQHRhYmxlIEBjb2RlCitAaXRl bSB2b2lkICooKndvcmtsb2FkKSAodm9pZCAqKQorQSBmdW5jdGlvbiBwb2lu dGVyIHRvIHRoZSB3b3JrbG9hZCBmdW5jdGlvbiBzZXJpYWxpemVkIGJ5IHNw aW5sb2NrLgorQGl0ZW0gdm9pZCAqYXJndW1lbnQKK0EgcG9pbnRlciB0byBh cmd1bWVudCBwYXNzZWQgdG8gdGhlIEB2YXJ7d29ya2xvYWR9IGZ1bmN0aW9u IHBvaW50ZXIuCitAaXRlbSB2b2lkICpyZXN1bHQKK1JldHVybiB2YWx1ZSBm cm9tIHRoZSBAdmFye3dvcmtsb2FkfSBmdW5jdGlvbiBwb2ludGVyLgorQGVu ZCB0YWJsZQorCitAZW5kIGRlZnRwCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rp b25zIGFyZSBwcm92aWRlZCBmb3IgTlVNQSBzcGlubG9jayBvYmplY3RzOgor CitAZGVmdHlwZWZ1biBzdHJ1Y3QgbnVtYV9zcGlubG9jayAqbnVtYV9zcGlu bG9ja19hbGxvYyAodm9pZCkKK0BzdGFuZGFyZHN7TGludXgsIG51bWEtc3Bp bmxvY2suaH0KK0BzYWZldHl7QHByZWxpbXt9QG10c2FmZXt9QGFzdW5zYWZl e0Bhc3Vsb2Nre319QGFjdW5zYWZle0BhY3Vsb2Nre30gQGFjc2Zke30gQGFj c21lbXt9fX0KKworVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgcG9pbnRlciB0 byBhIG5ld2x5IGFsbG9jYXRlZCBOVU1BIHNwaW5sb2NrIG9yIGEKK251bGwg cG9pbnRlciBpZiB0aGUgTlVNQSBzcGlubG9jayBjb3VsZCBub3QgYmUgYWxs b2NhdGVkLCBzZXR0aW5nCitAY29kZXtlcnJub30gdG8gQGNvZGV7RU5PTUVN fS4gIENhbGxlciBzaG91bGQgY2FsbAorQGNvZGV7bnVtYV9zcGlubG9ja19m cmVlfSBvbiB0aGUgTlVNQSBzcGlubG9jayBwb2ludGVyIHRvIGZyZWUgdGhl CittZW1vcnkgc3BhY2Ugd2hlbiBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgor CitUaGlzIGZ1bmN0aW9uIGlzIExpbnV4LXNwZWNpZmljIGFuZCBpcyBkZWNs YXJlZCBpbiBAZmlsZXtudW1hLXNwaW5sb2NrLmh9LgorQGVuZCBkZWZ0eXBl ZnVuCisKK0BkZWZ0eXBlZnVuIHZvaWQgbnVtYV9zcGlubG9ja19mcmVlIChz dHJ1Y3QgbnVtYV9zcGlubG9jayAqQHZhcntsb2NrfSkKK0BzdGFuZGFyZHN7 TGludXgsIG51bWEtc3BpbmxvY2suaH0KK0BzYWZldHl7QHByZWxpbXt9QG10 c2FmZXt9QGFzdW5zYWZle0Bhc3Vsb2Nre319QGFjdW5zYWZle0BhY3Vsb2Nr e30gQGFjc2Zke30gQGFjc21lbXt9fX0KKworRnJlZSB0aGUgbWVtb3J5IHNw YWNlIHBvaW50ZWQgdG8gYnkgQHZhcntsb2NrfSwgd2hpY2ggbXVzdCBoYXZl IGJlZW4KK3JldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBAY29kZXtu dW1hX3NwaW5sb2NrX2FsbG9jfS4gIE90aGVyd2lzZSwKK29yIGlmIEBjb2Rl e251bWFfc3BpbmxvY2tfZnJlZSAoQHZhcntsb2NrfSl9IGhhcyBhbHJlYWR5 IGJlZW4gY2FsbGVkCitiZWZvcmUsIHVuZGVmaW5lZCBiZWhhdmlvciBvY2N1 cnMuCisKK1RoaXMgZnVuY3Rpb24gaXMgTGludXgtc3BlY2lmaWMgYW5kIGlz IGRlY2xhcmVkIGluIEBmaWxle251bWEtc3BpbmxvY2suaH0uCitAZW5kIGRl ZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gaW50IG51bWFfc3BpbmxvY2tfaW5p dCAoc3RydWN0IG51bWFfc3BpbmxvY2sgKkB2YXJ7bG9ja30sCitzdHJ1Y3Qg bnVtYV9zcGlubG9ja19pbmZvICpAdmFye2luZm99KQorQHN0YW5kYXJkc3tM aW51eCwgbnVtYS1zcGlubG9jay5ofQorQHNhZmV0eXtAcHJlbGlte31AbXRz YWZle31AYXNzYWZle31AYWNzYWZle319CisKK0luaXRpYWxpemUgdGhlIE5V TUEgc3BpbmxvY2sgaW5mb3JtYXRpb24gYmxvY2sgcG9pbnRlZCB0byBieSBA dmFye2luZm99Cit3aXRoIGEgTlVNQSBzcGlubG9jayBwb2ludGVyIEB2YXJ7 bG9ja30uICBUaGUgcmV0dXJuIHZhbHVlIGlzIEBjb2RlezB9IG9uCitzdWNj ZXNzIGFuZCBAY29kZXstMX0gb24gZmFpbHVyZS4gIFRoZSBmb2xsb3dpbmcg QGNvZGV7ZXJybm99IGVycm9yCitjb2RlcyBhcmUgZGVmaW5lZCBmb3IgdGhp cyBmdW5jdGlvbjoKKworQHRhYmxlIEBjb2RlCitAaXRlbSBFTk9TWVMKK1Ro ZSBvcGVyYXRpbmcgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgdGhlIEBjb2Rl e2dldGNwdX0gZnVuY3Rpb24uCitAZW5kIHRhYmxlCisKK1RoaXMgZnVuY3Rp b24gaXMgTGludXgtc3BlY2lmaWMgYW5kIGlzIGRlY2xhcmVkIGluIEBmaWxl e251bWEtc3BpbmxvY2suaH0uCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5 cGVmdW4gdm9pZCBudW1hX3NwaW5sb2NrX2FwcGx5IChzdHJ1Y3QgbnVtYV9z cGlubG9ja19pbmZvICpAdmFye2luZm99KQorQHN0YW5kYXJkc3tMaW51eCwg bnVtYS1zcGlubG9jay5ofQorQHNhZmV0eXtAcHJlbGlte31AbXRzYWZle31A YXNzYWZle31AYWNzYWZle319CisKK0FwcGx5IGZvciBzcGlubG9jayB3aXRo IGEgTlVNQSBzcGlubG9jayBpbmZvcm1hdGlvbiBibG9jayBwb2ludGVkIHRv IGJ5CitAdmFye2luZm99LiAgV2hlbiBAY29kZXtudW1hX3NwaW5sb2NrX2Fw cGx5fSByZXR1cm5zLCB0aGUgc3BpbmxvY2sgaXMKK3JlbGVhc2VkIGFuZCB0 aGUgQHZhcntyZXN1bHR9IG1lbWJlciBvZiBAdmFye2luZm99IGNvbnRhaW5z IHRoZSByZXR1cm4KK3ZhbHVlIG9mIHRoZSBAdmFye3dvcmtsb2FkfSBtZW1i ZXIuCisKK1RoaXMgZnVuY3Rpb24gaXMgTGludXgtc3BlY2lmaWMgYW5kIGlz IGRlY2xhcmVkIGluIEBmaWxle251bWEtc3BpbmxvY2suaH0uCitAZW5kIGRl ZnR5cGVmdW4KKworQG5vZGUgTlVNQSBTcGlubG9jayBFeGFtcGxlCitAc3Vi c3Vic2VjdGlvbiBOVU1BIFNwaW5sb2NrIEV4YW1wbGUKKworQSBOVU1BIHNw aW5sb2NrIGV4YW1wbGU6CisKK0BzbWFsbGV4YW1wbGUKK0BpbmNsdWRlIG51 bWEtc3BpbmxvY2suYy50ZXhpCitAZW5kIHNtYWxsZXhhbXBsZQorCiBAYyBG SVhNRSB0aGVzZSBhcmUgdW5kb2N1bWVudGVkOgogQGMgcHRocmVhZF9hdGZv cmsKIEBjIHB0aHJlYWRfYXR0cl9kZXN0cm95CmRpZmYgLS1naXQgYS9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9NYWtlZmlsZSBiL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L01ha2VmaWxlCmluZGV4IDVmOGMyYzdjN2QuLjM2YjEyZThj OTIgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L01ha2Vm aWxlCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L01ha2VmaWxlCkBA IC0yMjcsOCArMjI3LDExIEBAIENGTEFHUy1nYWkuYyArPSAtRE5FRURfTkVU TElOSwogZW5kaWYKIAogaWZlcSAoJChzdWJkaXIpLG5wdGwpCitsaWJwdGhy ZWFkLXN5c2RlcF9yb3V0aW5lcyArPSBudW1hX3NwaW5sb2NrX2FsbG9jIG51 bWEtc3BpbmxvY2sKK3N5c2RlcF9oZWFkZXJzICs9IG51bWEtc3BpbmxvY2su aAogdGVzdHMgKz0gdHN0LWFsaWduLWNsb25lIHRzdC1nZXRwaWQxIFwKIAl0 c3QtdGhyZWFkLWFmZmluaXR5LXB0aHJlYWQgdHN0LXRocmVhZC1hZmZpbml0 eS1wdGhyZWFkMiBcCiAJdHN0LXRocmVhZC1hZmZpbml0eS1zY2hlZAogdGVz dHMtaW50ZXJuYWwgKz0gdHN0LXNldGdldG5hbWUKK3h0ZXN0cyArPSB0c3Qt dmFyaWFibGUtb3ZlcmhlYWQgdHN0LW51bWEtdmFyaWFibGUtb3ZlcmhlYWQK IGVuZGlmCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9W ZXJzaW9ucyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L1ZlcnNpb25zCmlu ZGV4IGYxZTEyZDljNjkuLjdjZTdlMmIyNzYgMTAwNjQ0Ci0tLSBhL3N5c2Rl cHMvdW5peC9zeXN2L2xpbnV4L1ZlcnNpb25zCisrKyBiL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L1ZlcnNpb25zCkBAIC0xODUsMyArMTg1LDEyIEBAIGxp YmMgewogICAgIF9fbmV0bGlua19hc3NlcnRfcmVzcG9uc2U7CiAgIH0KIH0K KworbGlicHRocmVhZCB7CisgIEdMSUJDXzIuMjkgeworICAgIG51bWFfc3Bp bmxvY2tfYWxsb2M7CisgICAgbnVtYV9zcGlubG9ja19mcmVlOworICAgIG51 bWFfc3BpbmxvY2tfaW5pdDsKKyAgICBudW1hX3NwaW5sb2NrX2FwcGx5Owor ICB9Cit9CmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9h YXJjaDY0L2xpYnB0aHJlYWQuYWJpbGlzdCBiL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L2FhcmNoNjQvbGlicHRocmVhZC5hYmlsaXN0CmluZGV4IDlhOWU0 Y2VlODUuLmViNTRhODM2M2QgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L2FhcmNoNjQvbGlicHRocmVhZC5hYmlsaXN0CisrKyBiL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvbGlicHRocmVhZC5hYmls aXN0CkBAIC0yNDMsMyArMjQzLDcgQEAgR0xJQkNfMi4yOCB0c3NfY3JlYXRl IEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18yLjI4IHRzc19n ZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIuMjkgbnVtYV9z cGlubG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYXBw bHkgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUgRgorR0xJQkNf Mi4yOSBudW1hX3NwaW5sb2NrX2luaXQgRgpkaWZmIC0tZ2l0IGEvc3lzZGVw cy91bml4L3N5c3YvbGludXgvYWxwaGEvbGlicHRocmVhZC5hYmlsaXN0IGIv c3lzZGVwcy91bml4L3N5c3YvbGludXgvYWxwaGEvbGlicHRocmVhZC5hYmls aXN0CmluZGV4IGI0MTMwMDdjY2IuLmRkMDg3OTYyNDIgMTAwNjQ0Ci0tLSBh L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FscGhhL2xpYnB0aHJlYWQuYWJp bGlzdAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hbHBoYS9saWJw dGhyZWFkLmFiaWxpc3QKQEAgLTIyNyw2ICsyMjcsMTAgQEAgR0xJQkNfMi4y OCB0c3NfY3JlYXRlIEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElC Q18yLjI4IHRzc19nZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJD XzIuMjkgbnVtYV9zcGlubG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFf c3BpbmxvY2tfYXBwbHkgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2Zy ZWUgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNf Mi4zLjIgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCBGCiBHTElCQ18yLjMuMiBw dGhyZWFkX2NvbmRfZGVzdHJveSBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2Nv bmRfaW5pdCBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9hcm0vbGlicHRocmVhZC5hYmlsaXN0IGIvc3lzZGVwcy91bml4L3N5c3Yv bGludXgvYXJtL2xpYnB0aHJlYWQuYWJpbGlzdAppbmRleCBhZjgyYTRjNjMy Li40NWE1YzVhOGZkIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9hcm0vbGlicHRocmVhZC5hYmlsaXN0CisrKyBiL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L2FybS9saWJwdGhyZWFkLmFiaWxpc3QKQEAgLTI3LDYg KzI3LDEwIEBAIEdMSUJDXzIuMjggdHNzX2NyZWF0ZSBGCiBHTElCQ18yLjI4 IHRzc19kZWxldGUgRgogR0xJQkNfMi4yOCB0c3NfZ2V0IEYKIEdMSUJDXzIu MjggdHNzX3NldCBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYWxsb2Mg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2FwcGx5IEYKK0dMSUJDXzIu MjkgbnVtYV9zcGlubG9ja19mcmVlIEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlu bG9ja19pbml0IEYKIEdMSUJDXzIuNCBfSU9fZmxvY2tmaWxlIEYKIEdMSUJD XzIuNCBfSU9fZnRyeWxvY2tmaWxlIEYKIEdMSUJDXzIuNCBfSU9fZnVubG9j a2ZpbGUgRgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgv Y3NreS9saWJwdGhyZWFkLmFiaWxpc3QgYi9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9jc2t5L2xpYnB0aHJlYWQuYWJpbGlzdAppbmRleCBlYTRiNzlhNTE4 Li5jZjY1ZjcyYWUxIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9jc2t5L2xpYnB0aHJlYWQuYWJpbGlzdAorKysgYi9zeXNkZXBzL3Vu aXgvc3lzdi9saW51eC9jc2t5L2xpYnB0aHJlYWQuYWJpbGlzdApAQCAtNzMs NiArNzMsMTAgQEAgR0xJQkNfMi4yOSBtdHhfdGltZWRsb2NrIEYKIEdMSUJD XzIuMjkgbXR4X3RyeWxvY2sgRgogR0xJQkNfMi4yOSBtdHhfdW5sb2NrIEYK IEdMSUJDXzIuMjkgbmFub3NsZWVwIEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlu bG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYXBwbHkg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUgRgorR0xJQkNfMi4y OSBudW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi4yOSBvcGVuIEYKIEdM SUJDXzIuMjkgb3BlbjY0IEYKIEdMSUJDXzIuMjkgcGF1c2UgRgpkaWZmIC0t Z2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaHBwYS9saWJwdGhyZWFk LmFiaWxpc3QgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9ocHBhL2xpYnB0 aHJlYWQuYWJpbGlzdAppbmRleCBiY2JhMDdmNTc1Li5hODA0NzVmZDA0IDEw MDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9ocHBhL2xpYnB0 aHJlYWQuYWJpbGlzdAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9o cHBhL2xpYnB0aHJlYWQuYWJpbGlzdApAQCAtMjE5LDYgKzIxOSwxMCBAQCBH TElCQ18yLjI4IHRzc19jcmVhdGUgRgogR0xJQkNfMi4yOCB0c3NfZGVsZXRl IEYKIEdMSUJDXzIuMjggdHNzX2dldCBGCiBHTElCQ18yLjI4IHRzc19zZXQg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2FsbG9jIEYKK0dMSUJDXzIu MjkgbnVtYV9zcGlubG9ja19hcHBseSBGCitHTElCQ18yLjI5IG51bWFfc3Bp bmxvY2tfZnJlZSBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfaW5pdCBG CiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0IEYKIEdMSUJD XzIuMy4yIHB0aHJlYWRfY29uZF9kZXN0cm95IEYKIEdMSUJDXzIuMy4yIHB0 aHJlYWRfY29uZF9pbml0IEYKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L2kzODYvbGlicHRocmVhZC5hYmlsaXN0IGIvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvaTM4Ni9saWJwdGhyZWFkLmFiaWxpc3QKaW5kZXgg YmVjZTg2ZDI0Ni4uNDBhYzA1YTQ3MSAxMDA2NDQKLS0tIGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvaTM4Ni9saWJwdGhyZWFkLmFiaWxpc3QKKysrIGIv c3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9saWJwdGhyZWFkLmFiaWxp c3QKQEAgLTIyNyw2ICsyMjcsMTAgQEAgR0xJQkNfMi4yOCB0c3NfY3JlYXRl IEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18yLjI4IHRzc19n ZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIuMjkgbnVtYV9z cGlubG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYXBw bHkgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUgRgorR0xJQkNf Mi4yOSBudW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi4zLjIgcHRocmVh ZF9jb25kX2Jyb2FkY2FzdCBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRf ZGVzdHJveSBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRfaW5pdCBGCmRp ZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L2xpYnB0 aHJlYWQuYWJpbGlzdCBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2lhNjQv bGlicHRocmVhZC5hYmlsaXN0CmluZGV4IGNjYzk0NDk4MjYuLjViMTkwZjY5 YWYgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2lhNjQv bGlicHRocmVhZC5hYmlsaXN0CisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2lhNjQvbGlicHRocmVhZC5hYmlsaXN0CkBAIC0yMTksNiArMjE5LDEw IEBAIEdMSUJDXzIuMjggdHNzX2NyZWF0ZSBGCiBHTElCQ18yLjI4IHRzc19k ZWxldGUgRgogR0xJQkNfMi4yOCB0c3NfZ2V0IEYKIEdMSUJDXzIuMjggdHNz X3NldCBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYWxsb2MgRgorR0xJ QkNfMi4yOSBudW1hX3NwaW5sb2NrX2FwcGx5IEYKK0dMSUJDXzIuMjkgbnVt YV9zcGlubG9ja19mcmVlIEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9ja19p bml0IEYKIEdMSUJDXzIuMy4yIHB0aHJlYWRfY29uZF9icm9hZGNhc3QgRgog R0xJQkNfMi4zLjIgcHRocmVhZF9jb25kX2Rlc3Ryb3kgRgogR0xJQkNfMi4z LjIgcHRocmVhZF9jb25kX2luaXQgRgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvbTY4ay9jb2xkZmlyZS9saWJwdGhyZWFkLmFiaWxp c3QgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9tNjhrL2NvbGRmaXJlL2xp YnB0aHJlYWQuYWJpbGlzdAppbmRleCBhZjgyYTRjNjMyLi40NWE1YzVhOGZk IDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9tNjhrL2Nv bGRmaXJlL2xpYnB0aHJlYWQuYWJpbGlzdAorKysgYi9zeXNkZXBzL3VuaXgv c3lzdi9saW51eC9tNjhrL2NvbGRmaXJlL2xpYnB0aHJlYWQuYWJpbGlzdApA QCAtMjcsNiArMjcsMTAgQEAgR0xJQkNfMi4yOCB0c3NfY3JlYXRlIEYKIEdM SUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18yLjI4IHRzc19nZXQgRgog R0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9j a19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYXBwbHkgRgor R0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUgRgorR0xJQkNfMi4yOSBu dW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi40IF9JT19mbG9ja2ZpbGUg RgogR0xJQkNfMi40IF9JT19mdHJ5bG9ja2ZpbGUgRgogR0xJQkNfMi40IF9J T19mdW5sb2NrZmlsZSBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lz di9saW51eC9tNjhrL202ODB4MC9saWJwdGhyZWFkLmFiaWxpc3QgYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9tNjhrL202ODB4MC9saWJwdGhyZWFkLmFi aWxpc3QKaW5kZXggYmVjZTg2ZDI0Ni4uNDBhYzA1YTQ3MSAxMDA2NDQKLS0t IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbTY4ay9tNjgweDAvbGlicHRo cmVhZC5hYmlsaXN0CisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L202 OGsvbTY4MHgwL2xpYnB0aHJlYWQuYWJpbGlzdApAQCAtMjI3LDYgKzIyNywx MCBAQCBHTElCQ18yLjI4IHRzc19jcmVhdGUgRgogR0xJQkNfMi4yOCB0c3Nf ZGVsZXRlIEYKIEdMSUJDXzIuMjggdHNzX2dldCBGCiBHTElCQ18yLjI4IHRz c19zZXQgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2FsbG9jIEYKK0dM SUJDXzIuMjkgbnVtYV9zcGlubG9ja19hcHBseSBGCitHTElCQ18yLjI5IG51 bWFfc3BpbmxvY2tfZnJlZSBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tf aW5pdCBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0IEYK IEdMSUJDXzIuMy4yIHB0aHJlYWRfY29uZF9kZXN0cm95IEYKIEdMSUJDXzIu My4yIHB0aHJlYWRfY29uZF9pbml0IEYKZGlmZiAtLWdpdCBhL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L21pY3JvYmxhemUvbGlicHRocmVhZC5hYmlsaXN0 IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWljcm9ibGF6ZS9saWJwdGhy ZWFkLmFiaWxpc3QKaW5kZXggNTA2NzM3NWQyMy4uZTY1MzliZjlhOCAxMDA2 NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWljcm9ibGF6ZS9s aWJwdGhyZWFkLmFiaWxpc3QKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGlu dXgvbWljcm9ibGF6ZS9saWJwdGhyZWFkLmFiaWxpc3QKQEAgLTI0MywzICsy NDMsNyBAQCBHTElCQ18yLjI4IHRzc19jcmVhdGUgRgogR0xJQkNfMi4yOCB0 c3NfZGVsZXRlIEYKIEdMSUJDXzIuMjggdHNzX2dldCBGCiBHTElCQ18yLjI4 IHRzc19zZXQgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2FsbG9jIEYK K0dMSUJDXzIuMjkgbnVtYV9zcGlubG9ja19hcHBseSBGCitHTElCQ18yLjI5 IG51bWFfc3BpbmxvY2tfZnJlZSBGCitHTElCQ18yLjI5IG51bWFfc3Bpbmxv Y2tfaW5pdCBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9taXBzL21pcHMzMi9saWJwdGhyZWFkLmFiaWxpc3QgYi9zeXNkZXBzL3Vu aXgvc3lzdi9saW51eC9taXBzL21pcHMzMi9saWJwdGhyZWFkLmFiaWxpc3QK aW5kZXggMDIxNDQ5NjdjNi4uNzZlZGNiOGQ1NCAxMDA2NDQKLS0tIGEvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9taXBzMzIvbGlicHRocmVhZC5h YmlsaXN0CisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvbWlw czMyL2xpYnB0aHJlYWQuYWJpbGlzdApAQCAtMjI3LDYgKzIyNywxMCBAQCBH TElCQ18yLjI4IHRzc19jcmVhdGUgRgogR0xJQkNfMi4yOCB0c3NfZGVsZXRl IEYKIEdMSUJDXzIuMjggdHNzX2dldCBGCiBHTElCQ18yLjI4IHRzc19zZXQg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2FsbG9jIEYKK0dMSUJDXzIu MjkgbnVtYV9zcGlubG9ja19hcHBseSBGCitHTElCQ18yLjI5IG51bWFfc3Bp bmxvY2tfZnJlZSBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfaW5pdCBG CiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0IEYKIEdMSUJD XzIuMy4yIHB0aHJlYWRfY29uZF9kZXN0cm95IEYKIEdMSUJDXzIuMy4yIHB0 aHJlYWRfY29uZF9pbml0IEYKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L21pcHMvbWlwczY0L2xpYnB0aHJlYWQuYWJpbGlzdCBiL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvbWlwczY0L2xpYnB0aHJlYWQu YWJpbGlzdAppbmRleCAwMjE0NDk2N2M2Li43NmVkY2I4ZDU0IDEwMDY0NAot LS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL21pcHM2NC9saWJw dGhyZWFkLmFiaWxpc3QKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgv bWlwcy9taXBzNjQvbGlicHRocmVhZC5hYmlsaXN0CkBAIC0yMjcsNiArMjI3 LDEwIEBAIEdMSUJDXzIuMjggdHNzX2NyZWF0ZSBGCiBHTElCQ18yLjI4IHRz c19kZWxldGUgRgogR0xJQkNfMi4yOCB0c3NfZ2V0IEYKIEdMSUJDXzIuMjgg dHNzX3NldCBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYWxsb2MgRgor R0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2FwcGx5IEYKK0dMSUJDXzIuMjkg bnVtYV9zcGlubG9ja19mcmVlIEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9j a19pbml0IEYKIEdMSUJDXzIuMy4yIHB0aHJlYWRfY29uZF9icm9hZGNhc3Qg RgogR0xJQkNfMi4zLjIgcHRocmVhZF9jb25kX2Rlc3Ryb3kgRgogR0xJQkNf Mi4zLjIgcHRocmVhZF9jb25kX2luaXQgRgpkaWZmIC0tZ2l0IGEvc3lzZGVw cy91bml4L3N5c3YvbGludXgvbmlvczIvbGlicHRocmVhZC5hYmlsaXN0IGIv c3lzZGVwcy91bml4L3N5c3YvbGludXgvbmlvczIvbGlicHRocmVhZC5hYmls aXN0CmluZGV4IDc4Y2FjMmFlMjcuLjMxNDFkMDhkMDAgMTAwNjQ0Ci0tLSBh L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L25pb3MyL2xpYnB0aHJlYWQuYWJp bGlzdAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9uaW9zMi9saWJw dGhyZWFkLmFiaWxpc3QKQEAgLTI0MSwzICsyNDEsNyBAQCBHTElCQ18yLjI4 IHRzc19jcmVhdGUgRgogR0xJQkNfMi4yOCB0c3NfZGVsZXRlIEYKIEdMSUJD XzIuMjggdHNzX2dldCBGCiBHTElCQ18yLjI4IHRzc19zZXQgRgorR0xJQkNf Mi4yOSBudW1hX3NwaW5sb2NrX2FsbG9jIEYKK0dMSUJDXzIuMjkgbnVtYV9z cGlubG9ja19hcHBseSBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfZnJl ZSBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfaW5pdCBGCmRpZmYgLS1n aXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9udW1hLXNwaW5sb2NrLXBy aXZhdGUuaCBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L251bWEtc3Bpbmxv Y2stcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjBkZGZmZWY0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNkZXBz L3VuaXgvc3lzdi9saW51eC9udW1hLXNwaW5sb2NrLXByaXZhdGUuaApAQCAt MCwwICsxLDM4IEBACisvKiBJbnRlcm5hbCBkZWZpbml0aW9ucyBhbmQgZGVj bGFyYXRpb25zIGZvciBOVU1BIHNwaW5sb2NrLgorICAgQ29weXJpZ2h0IChD KSAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRo ZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg VGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUg QyBMaWJyYXJ5OyBpZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgIm51bWEtc3BpbmxvY2su aCIKKworLyogVGhlIGdsb2JhbCBOVU1BIHNwaW5sb2NrLiAgKi8KK3N0cnVj dCBudW1hX3NwaW5sb2NrCit7CisgIC8qIExpc3Qgb2YgdGhyZWFkcyB3aG8g b3ducyB0aGUgZ2xvYmFsIE5VTUEgc3BpbmxvY2suICAqLworICBzdHJ1Y3Qg bnVtYV9zcGlubG9ja19pbmZvICpvd25lcjsKKyAgLyogVGhlIG1heGltaXVt IE5VTUEgbm9kZSBudW1iZXIuICAqLworICB1bnNpZ25lZCBpbnQgbWF4X25v ZGU7CisgIC8qIE5vbi16ZXJvIGZvciBzaW5nbGUgbm9kZSBzeXN0ZW0uICAq LworICB1bnNpZ25lZCBpbnQgc2luZ2xlX25vZGU7CisgIC8qIFRoZSBtYXhp bWl1bSBDUFUgbnVtYmVyLiAgVXNlZCBvbmx5IHdoZW4gTlVNQSBpcyBkaXNh YmxlZC4gICovCisgIHVuc2lnbmVkIGludCBtYXhfY3B1OworICAvKiBBcnJh eSBvZiBwaHlzaWNhbF9wYWNrYWdlX2lkIG9mIGVhY2ggY29yZSBpZiBpdCBp c24ndCBOVUxMLiAgVXNlZAorICAgICBvbmx5IHdoZW4gTlVNQSBpcyBkaXNh YmxlZC4qLworICB1bnNpZ25lZCBpbnQgKnBoeXNpY2FsX3BhY2thZ2VfaWRf cDsKKyAgLyogQXJyYXlzIG9mIGxpc3RzIG9mIHRocmVhZHMgd2hvIGFyZSBz cGlubmluZyBmb3IgdGhlIGxvY2FsIE5VTUEgbG9jaworICAgICBvbiBOVU1B IG5vZGVzIGluZGV4ZWQgYnkgTlVNQSBub2RlIG51bWJlci4gICovCisgIHN0 cnVjdCBudW1hX3NwaW5sb2NrX2luZm8gKmxpc3RzW107Cit9OwpkaWZmIC0t Z2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbnVtYS1zcGlubG9jay5j IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbnVtYS1zcGlubG9jay5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmMyMjZiYmIy MmMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9udW1hLXNwaW5sb2NrLmMKQEAgLTAsMCArMSwzMjcgQEAKKy8qIE5VTUEg c3BpbmxvY2sKKyAgIENvcHlyaWdodCAoQykgMjAxOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgQyBMaWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK KyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExp Y2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBz ZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpbmNsdWRlIDxjb25maWcuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzY2hlZC5oPgorI2lmbmRl ZiBIQVZFX0dFVENQVQorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUg PHN5c2NhbGwuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j bHVkZSA8YXRvbWljLmg+CisjaW5jbHVkZSAibnVtYS1zcGlubG9jay1wcml2 YXRlLmgiCisKKyNpZiAhZGVmaW5lZCBIQVZFX0dFVENQVSAmJiBkZWZpbmVk IF9MSUJDCisjIGRlZmluZSBIQVZFX0dFVENQVQorI2VuZGlmCisKKy8qIE9u IG11bHRpLXNvY2tldCBzeXN0ZW1zLCBtZW1vcnkgaXMgc2hhcmVkIGFjcm9z cyB0aGUgZW50aXJlIHN5c3RlbS4KKyAgIERhdGEgYWNjZXNzIHRvIHRoZSBs b2NhbCBzb2NrZXQgaXMgbXVjaCBmYXN0ZXIgdGhhbiB0aGUgcmVtb3RlIHNv Y2tldAorICAgYW5kIGRhdGEgYWNjZXNzIHRvIHRoZSBsb2NhbCBjb3JlIGlz IGZhc3RlciB0aGFuIHNpYmxpbmcgY29yZXMgb24gdGhlCisgICBzYW1lIHNv Y2tldC4gIEZvciBzZXJpYWxpemVkIHdvcmtsb2FkcyB3aXRoIGNvbnZlbnRp b25hbCBzcGlubG9jaywKKyAgIHdoZW4gdGhlcmUgaXMgaGlnaCBzcGlubG9j ayBjb250ZW50aW9uIGJldHdlZW4gdGhyZWFkcywgbG9jayBwaW5nLXBvbmcK KyAgIGFtb25nIHNvY2tldHMgYmVjb21lcyB0aGUgYm90dGxlbmVjayBhbmQg dGhyZWFkcyBzcGVuZCBtYWpvcml0eSBvZgorICAgdGhlaXIgdGltZSBpbiBz cGlubG9jayBvdmVyaGVhZC4KKworICAgT24gbXVsdGktc29ja2V0IHN5c3Rl bXMsIHRoZSBrZXlzIHRvIG91ciBOVU1BIHNwaW5sb2NrIHBlcmZvcm1hbmNl CisgICBhcmUgdG8gbWluaW1pemUgY3Jvc3Mtc29ja2V0IHRyYWZmaWMgYXMg d2VsbCBhcyBsb2NhbGl6ZSB0aGUgc2VyaWFsaXplZAorICAgd29ya2xvYWQg dG8gb25lIGNvcmUgZm9yIGV4ZWN1dGlvbi4gIFRoZSBiYXNpYyBwcmluY2lw bGVzIG9mIE5VTUEKKyAgIHNwaW5sb2NrIGFyZSBtYWlubHkgY29uc2lzdGVk IG9mIGZvbGxvd2luZyBhcHByb2FjaGVzLCB3aGljaCByZWR1Y2UKKyAgIGRh dGEgbW92ZW1lbnQgYW5kIGFjY2VsZXJhdGUgY3JpdGljYWwgc2VjdGlvbiwg ZXZlbnR1YWxseSBnaXZlIHVzCisgICBzaWduaWZpY2FudCBwZXJmb3JtYW5j ZSBpbXByb3ZlbWVudC4KKworICAgMS4gTUNTIHNwaW5sb2NrCisgICBNQ1Mg c3BpbmxvY2sgaGVscCB1cyB0byByZWR1Y2UgdGhlIHVzZWxlc3MgbG9jayBt b3ZlbWVudCBpbiB0aGUKKyAgIHNwaW5uaW5nIHN0YXRlLiAgVGhpcyBwYXBl ciBwcm92aWRlcyBhIGdvb2QgZGVzY3JpcHRpb24gZm9yIHRoaXMKKyAgIGtp bmQgb2YgbG9jazoKKyAgIDxodHRwOi8vd3d3LmNpc2UudWZsLmVkdS90ci9E T0MvUkVQLTE5OTItNzEucGRmPgorCisgICAyLiBDcml0aWNhbCBTZWN0aW9u IEludGVncmF0aW9uIChDU0kpCisgICBFc3NlbnRpYWxseSBzcGlubG9jayBp cyBzaW1pbGFyIHRvIHRoYXQgb25lIGNvcmUgY29tcGxldGUgY3JpdGljYWwK KyAgIHNlY3Rpb25zIG9uZSBieSBvbmUuIFNvIHdoZW4gY29udGVudGlvbiBo YXBwZW4sIHRoZSBzZXJpYWxpemVkIHdvcmtzCisgICBhcmUgc2VudCB0byB0 aGUgY29yZSB3aG8gaXMgdGhlIGxvY2sgb3duZXIgYW5kIHJlc3BvbnNpYmxl IHRvIGV4ZWN1dGUKKyAgIHRoZW0sIHRoYXQgY2FuIHNhdmUgbXVjaCB0aW1l IGFuZCBwb3dlciwgYmVjYXVzZSBhbGwgc2hhcmVkIGRhdGEgYXJlCisgICBs b2NhdGVkIGluIHByaXZhdGUgY2FjaGUgb2YgdGhlIGxvY2sgb3duZXIuCisK KyAgIFdlIGltcGxlbWVudGVkIHRoaXMgbWVjaGFuaXNtIGJhc2VkIG9uIHF1 ZXVlZCBzcGlubG9jayBpbiBrZXJuZWwsIHRoYXQKKyAgIHNwZWVkcyB1cCBj cml0aWNhbCBzZWN0aW9uLCBhbmQgcmVkdWNlcyB0aGUgcHJvYmFiaWxpdHkg b2YgY29udGVudGlvbi4KKyAgIFRoZSBwYXBlciBwcm92aWRlcyBhIGdvb2Qg ZGVzY3JpcHRpb24gZm9yIHRoaXMga2luZCBvZiBsb2NrOgorICAgPGh0dHBz Oi8vdXNlcnMuZWNlLmNtdS5lZHUvfm9tdXRsdS9wdWIvYWNzX2FzcGxvczA5 LnBkZj4KKworICAgMy4gTlVNQSBBd2FyZSBTcGlubG9jayAoTkFTKQorICAg Q3VycmVudGx5IG11bHRpLXNvY2tldCBzeXN0ZW1zIGdpdmUgdXMgYmV0dGVy IHBlcmZvcm1hbmNlIHBlciB3YXR0LAorICAgaG93ZXZlciB0aGF0IGFsc28g aW52b2x2ZXMgbW9yZSBjb21wbGV4IHN5bmNocm9uaXphdGlvbiByZXF1aXJl bWVudCwKKyAgIGJlY2F1c2Ugb2ZmLWNoaXAgZGF0YSBtb3ZlbWVudCBpcyBt dWNoIHNsb3dlci4gV2UgdXNlIGRpc3RyaWJ1dGVkCisgICBzeW5jaHJvbml6 YXRpb24gbWVjaGFuaXNtIHRvIGRlY3JlYXNlIExvY2sgY2FjaGUgbGluZSB0 byBhbmQgZnJvbQorICAgZGlmZmVyZW50IG5vZGVzLiBUaGUgcGFwZXIgcHJv dmlkZXMgYSBnb29kIGRlc2NyaXB0aW9uIGZvciB0aGlzIGtpbmQKKyAgIG9m IGxvY2s6CisgICA8aHR0cHM6Ly93d3cudXNlbml4Lm9yZy9zeXN0ZW0vZmls ZXMvY29uZmVyZW5jZS9hdGMxNy9hdGMxNy1rYXNoeWFwLnBkZj4KKworICAg NC4gWWllbGQgU2NoZWR1bGUKKyAgIFdoZW4gdGhyZWFkcyBhcmUgYXBwbHlp bmcgZm9yIENyaXRpY2FsIFNlY3Rpb24gSW50ZWdyYXRpb24oQ1NJKSB3aXRo CisgICBrbm93biBjb250ZW50aW9uLCB0aGV5IHdpbGwgZGVsZWdhdGUgd29y ayB0byB0aGUgdGhyZWFkIHdobyBpcyB0aGUKKyAgIGxvY2sgb3duZXIsIGFu ZCB3YWl0IGZvciB3b3JrIHRvIGJlIGNvbXBsZXRlZC4gIFRoZSByZXNvdXJj ZXMgd2hpY2gKKyAgIHRoZXkgYXJlIHVzaW5nIHNob3VsZCBiZSB0cmFuc2Zl cnJlZCB0byBvdGhlciB0aHJlYWRzLiBJbiBvcmRlciB0bworICAgYWNjZWxl cmF0ZSB0aGUgc2NlbmFyaW8sIHdlIGludHJvZHVjZSB5aWVsZF9zY2hlZCBm dW5jdGlvbiBkdXJpbmcKKyAgIHNwaW5uaW5nIHN0YWdlLgorCisgICA1LiBP cHRpbWl6YXRpb24gd2hlbiBOVU1BIGlzIE9OIG9yIE9GRi4KKyAgIEFsdGhv dWdoIHByb2dyYW1zIGNhbiBhY2Nlc3MgbWVtb3J5IHdpdGggbG93ZXIgbGF0 ZW5jeSB3aGVuIE5VTUEgaXMKKyAgIGVuYWJsZWQsIHNvbWUgcHJvZ3JhbXMg bWF5IG5lZWQgbW9yZSBtZW1vcnkgYmFuZHdpZHRoIGZvciBjb21wdXRhdGlv bgorICAgd2l0aCBOVU1BIGRpc2FibGVkLiAgV2UgYWxzbyBvcHRpbWl6ZSBt dWx0aS1zb2NrZXQgc3lzdGVtcyB3aXRoIE5VTUEKKyAgIGRpc2FibGVkLgor CisgICBOVU1BIHNwaW5sb2NrIGZsb3cgY2hhcnQgKGFzc3VtaW5nIHRoZXJl IGFyZSAyIENQVSBub2Rlcyk6CisKKyAgIDEuIFRocmVhZHMgZnJvbSBub2Rl XzAvbm9kZV8xIGFjcXVpcmUgbG9jYWwgbG9jayBmb3Igbm9kZV8wLzEKKyAg IHJlc3BlY3RpdmVseS4gIElmIHRoZSB0aHJlYWQgc3VjY2VlZHMgaW4gYWNx dWlyaW5nIGxvY2FsIGxvY2ssIGl0CisgICBnb2VzIHRvIHN0ZXAgMiwgb3Ro ZXJ3aXNlIHB1c2hlcyBjcml0aWNhbCBmdW5jdGlvbiBpbnRvIGN1cnJlbnQK KyAgIGxvY2FsIHdvcmsgcXVldWUsIGFuZCBlbnRlcnMgaW50byBzcGlubmlu ZyBzdGFnZSB3aXRoIE1DUyBtb2RlLgorCisgICAyLiBUaHJlYWRzIGZyb20g bm9kZV8wL25vZGVfMSBhY3F1aXJlIHRoZSBnbG9iYWwgbG9jay4gIElmIGl0 IHN1Y2NlZWRzCisgICBpbiBhY3F1aXJpbmcgdGhlIGdsb2JhbCBsb2NrIGFz IHRoZSBsb2NrIG93bmVyLCBpdCBnb2VzIHRvIHN0ZXAgMywKKyAgIG90aGVy d2lzZSB3YWl0cyB1bnRpbCB0aGUgbG9jayBvd25lciB0aHJlYWQgcmVsZWFz ZXMgdGhlIGdsb2JhbCBsb2NrLgorCisgICAzLiBUaGUgbG9jayBvd25lciB0 aHJlYWQgZnJvbSBub2RlXzAvMSBlbnRlcnMgaW50byBjcml0aWNhbCBzZWN0 aW9uLAorICAgY2xlYW5zIHVwIHdvcmsgcXVldWUgYnkgcGVyZm9ybWluZyBh bGwgbG9jYWwgY3JpdGljYWwgZnVuY3Rpb25zCisgICBwdXNoZWQgYXQgc3Rl cCAxIHdpdGggQ1NJIG9uIGJlaGFsZiBvZiBvdGhlciB0aHJlYWRzIGFuZCBp bmZvcm1zCisgICB0aG9zZSBzcGlubmluZyB0aHJlYWRzIHRoYXQgdGhlaXIg d29ya3MgaGF2ZSBiZWVuIGRvbmUuICBJdCB0aGVuCisgICByZWxlYXNlcyB0 aGUgbG9jYWwgbG9jay4KKworICAgNC4gVGhlIGxvY2sgb3duZXIgdGhyZWFk IGZyZWVzIGdsb2JhbCBsb2NrLiAgSWYgYW5vdGhlciB0aHJlYWQgaXMKKyAg IHdhaXRpbmcgYXQgc3RlcCAyLCB0aGUgbG9jayBvd25lciB0aHJlYWQgcGFz c2VzIHRoZSBnbG9iYWwgbG9jayB0bworICAgdGhlIHdhaXRpbmcgdGhyZWFk IGFuZCByZXR1cm5zLiAgVGhlIG5ldyBsb2NrIG93bmVyIHRocmVhZCBlbnRl cnMKKyAgIGludG8gc3RlcCAzLiAgSWYgbm8gdGhyZWFkcyBhcmUgd2FpdGlu ZywgdGhlIGxvY2sgb3duZXIgdGhyZWFkCisgICByZWxlYXNlcyB0aGUgZ2xv YmFsIGxvY2sgYW5kIHJldHVybnMuICBUaGUgd2hvbGUgY3JpdGljYWwgc2Vj dGlvbgorICAgcHJvY2VzcyBpcyBjb21wbGV0ZWQuCisKKyAgIFN0ZXBzIDEg YW5kIDIgbWl0aWdhdGUgZ2xvYmFsIGxvY2sgY29udGVudGlvbi4gIE9ubHkg b25lIHRocmVhZAorICAgZnJvbSBkaWZmZXJlbnQgbm9kZXMgd2lsbCBjb21w ZXRlIGZvciB0aGUgZ2xvYmFsIGxvY2sgaW4gc3RlcCAyLgorICAgU3RlcCAz IHJlZHVjZXMgdGhlIGdsb2JhbCBsb2NrICYgc2hhcmVkIGRhdGEgbW92ZW1l bnQgYmVjYXVzZSB0aGV5CisgICBhcmUgbG9jYXRlZCBpbiB0aGUgc2FtZSBu b2RlIGFzIHdlbGwgYXMgdGhlIHNhbWUgY29yZS4gIE91ciBkYXRhCisgICBz aG93cyB0aGF0IENyaXRpY2FsIFNlY3Rpb24gSW50ZWdyYXRpb24gKENTSSkg aW1wcm92ZXMgZGF0YSBsb2NhbGl0eQorICAgYW5kIE5VTUEtYXdhcmUgc3Bp bmxvY2sgKE5BUykgaGVscHMgQ1NJIGJhbGFuY2UgdGhlIHdvcmtsb2FkLgor CisgICBOVU1BIHNwaW5sb2NrIGNhbiBncmVhdGx5IHNwZWVkIHVwIGNyaXRp Y2FsIHNlY3Rpb24gb24gbXVsdGktc29ja2V0CisgICBzeXN0ZW1zLiAgSXQg c2hvdWxkIGltcHJvdmUgc3BpbmxvY2sgcGVyZm9ybWFuY2Ugb24gYWxsIG11 bHRpLXNvY2tldAorICAgc3lzdGVtcy4KKworICAgTk9URTogTGlUTCA8aHR0 cHM6Ly9naXRodWIuY29tL211bHRpY29yZS1sb2Nrcy9saXRsPiwgaXMgYW4g b3Blbi1zb3VyY2UKKyAgIHByb2plY3QgdGhhdCBwcm92aWRlcyBpbXBsZW1l bnRhdGlvbnMgb2YgZG96ZW5zIG9mIHZhcmlvdXMgbG9ja3MsCisgICBpbmNs dWRpbmcgc2V2ZXJhbCBzdGF0ZS1vZi10aGUtYXJ0IE5VTUEtYXdhcmUgc3Bp bmxvY2tzLiAgQW1vbmcgdGhlbQorCisgICAxLiBIaWVyYXJjaGljYWwgTUNT IChITUNTKSBzcGlubG9jay4gIE1pbGluZCBDaGFiYmksIE1pY2hhZWwgRmFn YW4sCisgICBhbmQgSm9obiBNZWxsb3ItQ3J1bW1leS4gSGlnaCBQZXJmb3Jt YW5jZSBMb2NrcyBmb3IgTXVsdGktbGV2ZWwgTlVNQQorICAgU3lzdGVtcy4g IEluIFByb2NlZWRpbmdzIG9mIHRoZSBBQ00gU0lHUExBTiBTeW1wb3NpdW0g b24gUHJpbmNpcGxlcworICAgYW5kIFByYWN0aWNlIG9mIFBhcmFsbGVsIFBy b2dyYW1taW5nIChQUG9QUCksIHBhZ2VzIDIxNeKAkzIyNiwgMjAxNS4KKwor ICAgMi4gQ29ob3J0LU1DUyAoQy1NQ1MpIHNwaW5sb2NrLiAgRGF2ZSBEaWNl LCBWaXJlbmRyYSBKLiBNYXJhdGhlLCBhbmQKKyAgIE5pciBTaGF2aXQuICBM b2NrIENvaG9ydGluZzogQSBHZW5lcmFsIFRlY2huaXF1ZSBmb3IgRGVzaWdu aW5nIE5VTUEKKyAgIExvY2tzLiBBQ00gVHJhbnMuIFBhcmFsbGVsIENvbXB1 dC4sIDEoMik6MTM6MeKAkzEzOjQyLCAyMDE1LgorICovCisKKy8qIEdldCB0 aGUgbmV4dCB0aHJlYWQgcG9pbnRlZCB0byBieSAqTkVYVF9QLiAgTkI6IFdl IG11c3QgdXNlIGEgd2hpbGUKKyAgIHNwaW4gbG9vcCB0byBsb2FkIE5FWFRf UCBzaW5jZSB0aGVyZSBpcyBhIHNtYWxsIHdpbmRvdyBiZWZvcmUgKk5FWFRf UAorICAgaXMgdXBkYXRlZC4gICovCisKK3N0YXRpYyBpbmxpbmUgc3RydWN0 IG51bWFfc3BpbmxvY2tfaW5mbyAqCitnZXRfbnVtYV9zcGlubG9ja19pbmZv X25leHQgKHN0cnVjdCBudW1hX3NwaW5sb2NrX2luZm8gKipuZXh0X3ApCit7 CisgIHN0cnVjdCBudW1hX3NwaW5sb2NrX2luZm8gKm5leHQ7CisgIHdoaWxl ICghKG5leHQgPSBhdG9taWNfbG9hZF9yZWxheGVkIChuZXh0X3ApKSkKKyAg ICBhdG9taWNfc3Bpbl9ub3AgKCk7CisgIHJldHVybiBuZXh0OworfQorCisv KiBXaGlsZSBob2xkaW5nIHRoZSBnbG9iYWwgTlVNQSBzcGlubG9jaywgcnVu IHRoZSB3b3JrbG9hZCBvZiB0aGUKKyAgIHRocmVhZCBwb2ludGVkIHRvIGJ5 IFNFTEYgZmlyc3QsIHRoZW4gcnVuIHRoZSB3b3JrbG9hZCBmb3IgZWFjaAor ICAgdGhyZWFkIG9uIHRoZSB0aHJlYWQgbGlzdCBwb2ludGVkIHRvIGJ5IEhF QURfUCBhbmQgd2FrZSB1cCB0aGUKKyAgIHRocmVhZCBzbyB0aGF0IGFsbCB3 b3JrbG9hZHMgcnVuIG9uIGEgc2luZ2xlIHByb2Nlc3Nvci4gICovCisKK3N0 YXRpYyBpbmxpbmUgdm9pZAorcnVuX251bWFfc3BpbmxvY2sgKHN0cnVjdCBu dW1hX3NwaW5sb2NrX2luZm8gKnNlbGYsCisJCSAgIHN0cnVjdCBudW1hX3Nw aW5sb2NrX2luZm8gKipoZWFkX3ApCit7CisgIHN0cnVjdCBudW1hX3NwaW5s b2NrX2luZm8gKm5leHQsICpjdXJyZW50OworCisgIC8qIFJ1biB0aGUgU0VM RidzIHdvcmtsb2FkLiAqLworICBzZWxmLT5yZXN1bHQgPSBzZWxmLT53b3Jr bG9hZCAoc2VsZi0+YXJndW1lbnQpOworCisgIC8qIFByb2Nlc3Mgd29ya2xv YWRzIGZvciB0aGUgcmVzdCBvZiB0aHJlYWRzIG9uIHRoZSB0aHJlYWQgbGlz dC4KKyAgICAgTkI6IFRoZSB0aHJlYWQgbGlzdCBtYXkgYmUgcHJlcGVuZGVk IGJ5IG90aGVyIHRocmVhZHMgYXQgdGhlCisgICAgIHNhbWUgdGltZS4gICov CisKK3JldHJ5OgorICAgLyogSWYgU0VMRiBpcyB0aGUgZmlyc3QgdGhyZWFk IG9mIHRoZSB0aHJlYWQgbGlzdCBwb2ludGVkIHRvIGJ5CisgICAgICBIRUFE X1AsIGNsZWFyIHRoZSB0aHJlYWQgbGlzdC4gICovCisgIGN1cnJlbnQgPSBh dG9taWNfY29tcGFyZV9hbmRfZXhjaGFuZ2VfdmFsX2FjcSAoaGVhZF9wLCBO VUxMLCBzZWxmKTsKKyAgaWYgKGN1cnJlbnQgPT0gc2VsZikKKyAgICB7Cisg ICAgICAvKiBTaW5jZSBTRUxGIGlzIHRoZSBvbmx5IHRocmVhZCBvbiB0aGUg bGlzdCwgY2xlYXIgU0VMRidzIHBlbmRpbmcKKyAgICAgICAgIGZpZWxkIGFu ZCByZXR1cm4uICAqLworICAgICAgYXRvbWljX3N0b3JlX3JlbGVhc2UgKCZj dXJyZW50LT5wZW5kaW5nLCAwKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgLyogQ1VSUkVOVCB3aWxsIGhhdmUgdGhlIHByZXZpb3VzIGZpcnN0IHRo cmVhZCBvZiB0aGUgdGhyZWFkIGxpc3QKKyAgICAgcG9pbnRlZCB0byBieSBI RUFEX1AgYW5kICpIRUFEX1Agd2lsbCBwb2ludCB0byBTRUxGLiAgKi8KKyAg Y3VycmVudCA9IGF0b21pY19leGNoYW5nZV9hY3F1aXJlIChoZWFkX3AsIHNl bGYpOworCisgIC8qIE5COiBObyBuZWVkIHRvIGNoZWNrIGlmIENVUlJFTlQg PT0gU0VMRiBoZXJlIHNpbmNlIFNFTEYgY2FuIG5ldmVyCisgICAgIGJlIENV UlJFTlQuICAqLworCityZXBlYXQ6CisgIC8qIEdldCB0aGUgbmV4dCB0aHJl YWQuICAqLworICBuZXh0ID0gZ2V0X251bWFfc3BpbmxvY2tfaW5mb19uZXh0 ICgmY3VycmVudC0+bmV4dCk7CisKKyAgLyogUnVuIHRoZSBDVVJSRU5UJ3Mg d29ya2xvYWQgYW5kIGNsZWFyIENVUlJFTlQncyBwZW5kaW5nIGZpZWxkLiAq LworICBjdXJyZW50LT5yZXN1bHQgPSBjdXJyZW50LT53b3JrbG9hZCAoY3Vy cmVudC0+YXJndW1lbnQpOworICBjdXJyZW50LT5wZW5kaW5nID0gMDsKKwor ICAvKiBQcm9jZXNzIHRoZSB3b3JrbG9hZCBmb3IgZWFjaCB0aHJlYWQgZnJv bSBDVVJSRU5UIHRvIFNFTEYgb24gdGhlCisgICAgIHRocmVhZCBsaXN0LiAg RG9uJ3QgcGFzcyBiZXlvbmQgU0VMRiBzaW5jZSBTRUxGIGlzIHRoZSBsYXN0 IHRocmVhZAorICAgICBvbiB0aGUgbGlzdC4gICovCisgIGlmIChuZXh0ID09 IHNlbGYpCisgICAgZ290byByZXRyeTsKKyAgY3VycmVudCA9IG5leHQ7Cisg IGdvdG8gcmVwZWF0OworfQorCisvKiBBcHBseSBmb3IgdGhlIE5VTUEgc3Bp bmxvY2sgd2l0aCB0aGUgTlVNQSBzcGlubG9jayBpbmZvIGRhdGEgcG9pbnRl ZAorICAgdG8gYnkgU0VMRi4gICovCisKK3ZvaWQKK251bWFfc3BpbmxvY2tf YXBwbHkgKHN0cnVjdCBudW1hX3NwaW5sb2NrX2luZm8gKnNlbGYpCit7Cisg IHN0cnVjdCBudW1hX3NwaW5sb2NrICpsb2NrID0gc2VsZi0+bG9jazsKKyAg c3RydWN0IG51bWFfc3BpbmxvY2tfaW5mbyAqZmlyc3QsICpuZXh0OworICBz dHJ1Y3QgbnVtYV9zcGlubG9ja19pbmZvICoqaGVhZF9wOworCisgIHNlbGYt Pm5leHQgPSBOVUxMOworICAvKiBXZSB3YW50IHRoZSBnbG9iYWwgTlVNQSBz cGlubG9jay4gICovCisgIHNlbGYtPnBlbmRpbmcgPSAxOworICAvKiBTZWxl Y3QgdGhlIGxvY2FsIE5VTUEgc3BpbmxvY2sgbGlzdCBieSB0aGUgTlVNQSBu b2RlIG51bWJlci4gICovCisgIGhlYWRfcCA9ICZsb2NrLT5saXN0c1tzZWxm LT5ub2RlXTsKKyAgLyogRklSU1Qgd2lsbCBoYXZlIHRoZSBwcmV2aW91cyBm aXJzdCB0aHJlYWQgb2YgdGhlIGxvY2FsIE5VTUEgc3BpbmxvY2sKKyAgICAg bGlzdCBhbmQgKkhFQURfUCB3aWxsIHBvaW50IHRvIFNFTEYuICAqLworICBm aXJzdCA9IGF0b21pY19leGNoYW5nZV9hY3F1aXJlIChoZWFkX3AsIHNlbGYp OworICBpZiAoZmlyc3QpCisgICAgeworICAgICAgLyogU0VMRiBoYXMgYmVl biBwcmVwZW5kZWQgdG8gdGhlIHRocmVhZCBsaXN0IHBvaW50ZWQgdG8gYnkK KwkgSEVBRF9QLiAgTkI6IFRoZXJlIGlzIGEgc21hbGwgd2luZG93IGJldHdl ZW4gdXBkYXRpbmcKKwkgKkhFQURfUCBhbmQgc2VsZi0+bmV4dC4gICovCisg ICAgICBhdG9taWNfc3RvcmVfcmVsZWFzZSAoJnNlbGYtPm5leHQsIGZpcnN0 KTsKKyAgICAgIC8qIExldCBvdGhlciB0aHJlYWRzIHJ1biBmaXJzdCBzaW5j ZSBhbm90aGVyIHRocmVhZCB3aWxsIHJ1biBvdXIKKwkgd29ya2xvYWQgZm9y IHVzLiAgKi8KKyAgICAgIHNjaGVkX3lpZWxkICgpOworICAgICAgLyogU3Bp biB1bnRpbCBvdXIgUEVORElORyBpcyBjbGVhcmVkLiAgKi8KKyAgICAgIHdo aWxlIChhdG9taWNfbG9hZF9yZWxheGVkICgmc2VsZi0+cGVuZGluZykpCisJ YXRvbWljX3NwaW5fbm9wICgpOworICAgICAgcmV0dXJuOworICAgIH0KKwor ICAvKiBOQjogTm93IFNFTEYgbXVzdCBiZSB0aGUgb25seSB0aHJlYWQgb24g dGhlIHRocmVhZCBsaXN0IHBvaW50ZWQKKyAgICAgdG8gYnkgSEVBRF9QLiAg U2luY2UgdGhyZWFkIGlzIGFsd2F5cyBwcmVwZW5kZWQgdG8gSEVBRF9QLCB3 ZQorICAgICBjYW4gdXNlICpIRUFEX1AgPT0gU0VMRiB0byBjaGVjayBpZiBT RUxGIGlzIHRoZSBvbmx5IHRocmVhZCBvbgorICAgICB0aGUgdGhyZWFkIGxp c3QuICAqLworCisgIGlmIChfX2dsaWJjX3VubGlrZWx5IChsb2NrLT5zaW5n bGVfbm9kZSkpCisgICAgeworICAgICAgLyogSWYgdGhlcmUgaXMgb25seSBv bmUgbm9kZSwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhlIGdsb2JhbAorICAg ICAgICAgTlVNQSBzcGlubG9jay4gICovCisgICAgICBydW5fbnVtYV9zcGlu bG9jayAoc2VsZiwgaGVhZF9wKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgLyogRklSU1Qgd2lsbCBoYXZlIHRoZSBwcmV2aW91cyBmaXJzdCB0aHJl YWQgb2YgdGhlIGxvY2FsIE5VTUEgc3BpbmxvY2sKKyAgICAgbGlzdCBvZiB0 aHJlYWRzIHdoaWNoIGhvbGRzIHRoZSBnbG9iYWwgTlVNQSBzcGlubG9jaywg d2hpY2ggd2lsbAorICAgICBwb2ludCB0byBTRUxGLiAgKi8KKyAgZmlyc3Qg PSBhdG9taWNfZXhjaGFuZ2VfYWNxdWlyZSAoJmxvY2stPm93bmVyLCBzZWxm KTsKKyAgaWYgKGZpcnN0KQorICAgIHsKKyAgICAgIC8qIFNFTEYgaGFzIGJl ZW4gcHJlcGVuZGVkIHRvIHRoZSB0aHJlYWQgbGlzdCBwb2ludGVkIHRvIGJ5 CisJIGxvY2stPm93bmVyLiAgTkI6IFRoZXJlIGlzIGEgc21hbGwgd2luZG93 IGJldHdlZW4gdXBkYXRpbmcKKwkgKkhFQURfUCBhbmQgZmlyc3QtPm5leHQu ICAqLworICAgICAgYXRvbWljX3N0b3JlX3JlbGVhc2UgKCZmaXJzdC0+bmV4 dCwgc2VsZik7CisgICAgICAvKiBTcGluIHVudGlsIHRoZSBsaXN0IG9mIHRo cmVhZHMgd2hpY2ggaG9sZHMgdGhlIGdsb2JhbCBOVU1BCisJIHNwaW5sb2Nr IGNsZWFycyBvdXIgUEVORElORy4gICovCisgICAgICB3aGlsZSAoYXRvbWlj X2xvYWRfcmVsYXhlZCAoJnNlbGYtPnBlbmRpbmcpKQorCWF0b21pY19zcGlu X25vcCAoKTsKKyAgICB9CisKKyAgLyogV2UgZ2V0IHRoZSBnbG9iYWwgTlVN QSBzcGlubG9jayBub3cuICBSdW4gb3VyIHdvcmtsb2FkLiAgKi8KKyAgcnVu X251bWFfc3BpbmxvY2sgKHNlbGYsIGhlYWRfcCk7CisKKyAgLyogU0VMRiBp cyB0aGUgb25seSB0aHJlYWQgb24gdGhlIGxpc3QgaWYgU0VMRiBpcyB0aGUg Zmlyc3QgdGhyZWFkCisgICAgIG9mIHRoZSB0aHJlYWQgbGlzdCBwb2ludGVk IHRvIGJ5IGxvY2stPm93bmVyLiAgSW4gdGhpcyBjYXNlLCB3ZQorICAgICBz aW1wbHkgcmV0dXJuLiAgKi8KKyAgaWYgKCFhdG9taWNfY29tcGFyZV9hbmRf ZXhjaGFuZ2VfYm9vbF9hY3EgKCZsb2NrLT5vd25lciwgTlVMTCwgc2VsZikp CisgICAgcmV0dXJuOworCisgIC8qIFdha2UgdXAgdGhlIG5leHQgdGhyZWFk LiAgKi8KKyAgbmV4dCA9IGdldF9udW1hX3NwaW5sb2NrX2luZm9fbmV4dCAo JnNlbGYtPm5leHQpOworICBhdG9taWNfc3RvcmVfcmVsZWFzZSAoJm5leHQt PnBlbmRpbmcsIDApOworfQorCisvKiBJbml0aWFsaXplIHRoZSBOVU1BIHNw aW5sb2NrIGluZm8gZGF0YSBwb2ludGVkIHRvIGJ5IElORk8gZnJvbSBhCisg ICBwb2ludGVyIHRvIHRoZSBOVU1BIHNwaW5sb2NrLCBMT0NLLiAgKi8KKwor aW50CitudW1hX3NwaW5sb2NrX2luaXQgKHN0cnVjdCBudW1hX3NwaW5sb2Nr ICpsb2NrLAorCQkgICAgc3RydWN0IG51bWFfc3BpbmxvY2tfaW5mbyAqaW5m bykKK3sKKyAgbWVtc2V0IChpbmZvLCAwLCBzaXplb2YgKCppbmZvKSk7Cisg IGluZm8tPmxvY2sgPSBsb2NrOworICAvKiBGb3Igc2luZ2xlIG5vZGUgc3lz dGVtLCB1c2UgMCBhcyB0aGUgTlVNQSBub2RlIG51bWJlci4gICovCisgIGlm IChsb2NrLT5zaW5nbGVfbm9kZSkKKyAgICByZXR1cm4gMDsKKyAgLyogTkI6 IFVzZSB0aGUgTlVNQSBub2RlIG51bWJlciBmcm9tIGdldGNwdSB0byBzZWxl Y3QgdGhlIGxvY2FsIE5VTUEKKyAgICAgc3BpbmxvY2sgbGlzdC4gICovCisg IHVuc2lnbmVkIGludCBjcHU7CisgIHVuc2lnbmVkIGludCBub2RlOworI2lm ZGVmIEhBVkVfR0VUQ1BVCisgIGludCBlcnJfcmV0ID0gZ2V0Y3B1ICgmY3B1 LCAmbm9kZSk7CisjZWxzZQorICBpbnQgZXJyX3JldCA9IHN5c2NhbGwgKFNZ U19nZXRjcHUsICZjcHUsICZub2RlLCBOVUxMKTsKKyNlbmRpZgorICBpZiAo ZXJyX3JldCkKKyAgICByZXR1cm4gZXJyX3JldDsKKyAgaWYgKGxvY2stPnBo eXNpY2FsX3BhY2thZ2VfaWRfcCkKKyAgICB7CisgICAgICAvKiBDYW4gaXQg ZXZlciBoYXBwZW4/ICAqLworICAgICAgaWYgKGNwdSA+IGxvY2stPm1heF9j cHUpCisJY3B1ID0gbG9jay0+bWF4X2NwdTsKKyAgICAgIC8qIE5COiBJZiBO VU1BIGlzIGRpc2FibGVkLCB1c2UgcGh5c2ljYWxfcGFja2FnZV9pZC4gICov CisgICAgICBub2RlID0gbG9jay0+cGh5c2ljYWxfcGFja2FnZV9pZF9wW2Nw dV07CisgICAgfQorICAvKiBDYW4gaXQgZXZlciBoYXBwZW4/ICAqLworICBp ZiAobm9kZSA+IGxvY2stPm1heF9ub2RlKQorICAgIG5vZGUgPSBsb2NrLT5t YXhfbm9kZTsKKyAgaW5mby0+bm9kZSA9IG5vZGU7CisgIHJldHVybiBlcnJf cmV0OworfQorCit2b2lkCitudW1hX3NwaW5sb2NrX2ZyZWUgKHN0cnVjdCBu dW1hX3NwaW5sb2NrICpsb2NrKQoreworICBpZiAobG9jay0+cGh5c2ljYWxf cGFja2FnZV9pZF9wKQorICAgIGZyZWUgKGxvY2stPnBoeXNpY2FsX3BhY2th Z2VfaWRfcCk7CisgIGZyZWUgKGxvY2spOworfQpkaWZmIC0tZ2l0IGEvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvbnVtYS1zcGlubG9jay5oIGIvc3lzZGVw cy91bml4L3N5c3YvbGludXgvbnVtYS1zcGlubG9jay5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjFjMTRlNGE4YWYKLS0tIC9k ZXYvbnVsbAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9udW1hLXNw aW5sb2NrLmgKQEAgLTAsMCArMSw2NCBAQAorLyogQ29weXJpZ2h0IChDKSAy MDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBH TlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhl IEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBM aWJyYXJ5OyBpZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKworI2lmbmRlZiBfTlVNQV9TUElOTE9DS19ICisj ZGVmaW5lIF9OVU1BX1NQSU5MT0NLX0gKKworI2luY2x1ZGUgPGZlYXR1cmVz Lmg+CisKK19fQkVHSU5fREVDTFMKKworLyogVGhlIE5VTUEgc3BpbmxvY2su ICAqLworc3RydWN0IG51bWFfc3BpbmxvY2s7CisKKy8qIFRoZSBOVU1BIHNw aW5sb2NrIGluZm9ybWF0aW9uIGZvciBlYWNoIHRocmVhZC4gICovCitzdHJ1 Y3QgbnVtYV9zcGlubG9ja19pbmZvCit7CisgIC8qIFRoZSB3b3JrbG9hZCBm dW5jdGlvbiBvZiB0aGlzIHRocmVhZC4gICovCisgIHZvaWQgKigqd29ya2xv YWQpICh2b2lkICopOworICAvKiBUaGUgYXJndW1lbnQgcG9pbnRlciBwYXNz ZWQgdG8gdGhlIHdvcmtsb2FkIGZ1bmN0aW9uLiAgKi8KKyAgdm9pZCAqYXJn dW1lbnQ7CisgIC8qIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHdvcmtsb2Fk IGZ1bmN0aW9uLiAgKi8KKyAgdm9pZCAqcmVzdWx0OworICAvKiBUaGUgcG9p bnRlciB0byB0aGUgTlVNQSBzcGlubG9jay4gICovCisgIHN0cnVjdCBudW1h X3NwaW5sb2NrICpsb2NrOworICAvKiBUaGUgbmV4dCB0aHJlYWQgb24gdGhl IGxvY2FsIE5VTUEgc3BpbmxvY2sgdGhyZWFkIGxpc3QuICAqLworICBzdHJ1 Y3QgbnVtYV9zcGlubG9ja19pbmZvICpuZXh0OworICAvKiBUaGUgTlVNQSBu b2RlIG51bWJlci4gICovCisgIHVuc2lnbmVkIGludCBub2RlOworICAvKiBO b24temVybyB0byBpbmRpY2F0ZSB0aGF0IHRoZSB0aHJlYWQgd2FudHMgdGhl IE5VTUEgc3BpbmxvY2suICAqLworICBpbnQgcGVuZGluZzsKKyAgLyogUmVz ZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuICAqLworICB2b2lkICpfX3Jlc2VydmVk WzRdOworfTsKKworLyogUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFs bG9jYXRlZCBOVU1BIHNwaW5sb2NrLiAgKi8KK2V4dGVybiBzdHJ1Y3QgbnVt YV9zcGlubG9jayAqbnVtYV9zcGlubG9ja19hbGxvYyAodm9pZCk7CisKKy8q IEZyZWUgdGhlIG1lbW9yeSBzcGFjZSBvZiB0aGUgTlVNQSBzcGlubG9jay4g ICovCitleHRlcm4gdm9pZCBudW1hX3NwaW5sb2NrX2ZyZWUgKHN0cnVjdCBu dW1hX3NwaW5sb2NrICopOworCisvKiBJbml0aWFsaXplIHRoZSBOVU1BIHNw aW5sb2NrIGluZm9ybWF0aW9uIGJsb2NrLiAgKi8KK2V4dGVybiBpbnQgbnVt YV9zcGlubG9ja19pbml0IChzdHJ1Y3QgbnVtYV9zcGlubG9jayAqLAorCQkJ ICAgICAgIHN0cnVjdCBudW1hX3NwaW5sb2NrX2luZm8gKik7CisKKy8qIEFw cGx5IGZvciBzcGlubG9jayB3aXRoIGEgTlVNQSBzcGlubG9jayBpbmZvcm1h dGlvbiBibG9jay4gICovCitleHRlcm4gdm9pZCBudW1hX3NwaW5sb2NrX2Fw cGx5IChzdHJ1Y3QgbnVtYV9zcGlubG9ja19pbmZvICopOworCitfX0VORF9E RUNMUworCisjZW5kaWYgLyogbnVtYS1zcGlubG9jay5oICovCmRpZmYgLS1n aXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9udW1hX3NwaW5sb2NrX2Fs bG9jLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9udW1hX3NwaW5sb2Nr X2FsbG9jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uODViMDkxN2NkOQotLS0gL2Rldi9udWxsCisrKyBiL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L251bWFfc3BpbmxvY2tfYWxsb2MuYwpAQCAtMCwwICsx LDMwNCBAQAorLyogSW5pdGlhbGl6YXRpb24gb2YgTlVNQSBzcGlubG9jay4K KyAgIENvcHlyaWdodCAoQykgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBM aWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVyc2lvbiAyLjEg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxv bmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKyAgIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRl IDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0 cmluZy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPHN0ZGlv Lmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaWZkZWYgX0xJQkMKKyMgaW5j bHVkZSA8bm90LWNhbmNlbC5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8c3RkbGli Lmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxmY250bC5o PgorIyBkZWZpbmUgX19vcGVuX25vY2FuY2VsCQlvcGVuCisjIGRlZmluZSBf X2Nsb3NlX25vY2FuY2VsX25vc3RhdHVzCWNsb3NlCisjIGRlZmluZSBfX3Jl YWRfbm9jYW5jZWwJCXJlYWQKKyNlbmRpZgorCisjaW5jbHVkZSAibnVtYS1z cGlubG9jay1wcml2YXRlLmgiCisKK3N0YXRpYyBjaGFyICoKK25leHRfbGlu ZSAoaW50IGZkLCBjaGFyICpjb25zdCBidWZmZXIsIGNoYXIgKipjcCwgY2hh ciAqKnJlLAorCSAgIGNoYXIgKmNvbnN0IGJ1ZmZlcl9lbmQpCit7CisgIGNo YXIgKnJlcyA9ICpjcDsKKyAgY2hhciAqbmwgPSBtZW1jaHIgKCpjcCwgJ1xu JywgKnJlIC0gKmNwKTsKKyAgaWYgKG5sID09IE5VTEwpCisgICAgeworICAg ICAgaWYgKCpjcCAhPSBidWZmZXIpCisJeworCSAgaWYgKCpyZSA9PSBidWZm ZXJfZW5kKQorCSAgICB7CisJICAgICAgbWVtbW92ZSAoYnVmZmVyLCAqY3As ICpyZSAtICpjcCk7CisJICAgICAgKnJlID0gYnVmZmVyICsgKCpyZSAtICpj cCk7CisJICAgICAgKmNwID0gYnVmZmVyOworCisJICAgICAgc3NpemVfdCBu ID0gX19yZWFkX25vY2FuY2VsIChmZCwgKnJlLCBidWZmZXJfZW5kIC0gKnJl KTsKKwkgICAgICBpZiAobiA8IDApCisJCXJldHVybiBOVUxMOworCisJICAg ICAgKnJlICs9IG47CisKKwkgICAgICBubCA9IG1lbWNociAoKmNwLCAnXG4n LCAqcmUgLSAqY3ApOworCSAgICAgIHdoaWxlIChubCA9PSBOVUxMICYmICpy ZSA9PSBidWZmZXJfZW5kKQorCQl7CisJCSAgLyogVHJ1bmNhdGUgdG9vIGxv bmcgbGluZXMuICAqLworCQkgICpyZSA9IGJ1ZmZlciArIDMgKiAoYnVmZmVy X2VuZCAtIGJ1ZmZlcikgLyA0OworCQkgIG4gPSBfX3JlYWRfbm9jYW5jZWwg KGZkLCAqcmUsIGJ1ZmZlcl9lbmQgLSAqcmUpOworCQkgIGlmIChuIDwgMCkK KwkJICAgIHJldHVybiBOVUxMOworCisJCSAgbmwgPSBtZW1jaHIgKCpyZSwg J1xuJywgbik7CisJCSAgKipyZSA9ICdcbic7CisJCSAgKnJlICs9IG47CisJ CX0KKwkgICAgfQorCSAgZWxzZQorCSAgICBubCA9IG1lbWNociAoKmNwLCAn XG4nLCAqcmUgLSAqY3ApOworCisJICByZXMgPSAqY3A7CisJfQorCisgICAg ICBpZiAobmwgPT0gTlVMTCkKKwlubCA9ICpyZSAtIDE7CisgICAgfQorCisg ICpjcCA9IG5sICsgMTsKKyAgYXNzZXJ0ICgqY3AgPD0gKnJlKTsKKworICBy ZXR1cm4gcmVzID09ICpyZSA/IE5VTEwgOiByZXM7Cit9CisKK3N0YXRpYyBp bnQKK3NlbGVjdF9jcHUgKGNvbnN0IHN0cnVjdCBkaXJlbnQgKmQpCit7Cisg IC8qIFJldHVybiAxIGZvciAiY3B1WFhYIiB3aGVyZSBYWFggYXJlIGRpZ2l0 cy4gICovCisgIGlmIChzdHJuY21wIChkLT5kX25hbWUsICJjcHUiLCBzaXpl b2YgKCJjcHUiKSAtIDEpID09IDApCisgICAgeworICAgICAgY29uc3QgY2hh ciAqcCA9IGQtPmRfbmFtZSArIDM7CisKKyAgICAgIGlmICgqcCA9PSAnXDAn KQorCXJldHVybiAwOworCisgICAgICBkbworCXsKKwkgIGlmICghaXNkaWdp dCAoKnApKQorCSAgICByZXR1cm4gMDsKKwkgIHArKzsKKwl9CisgICAgICB3 aGlsZSAoKnAgIT0gJ1wwJyk7CisKKyAgICAgIHJldHVybiAxOworICAgIH0K KyAgcmV0dXJuIDA7Cit9CisKKy8qIEFsbG9jYXRlIGEgTlVNQSBzcGlubG9j ayBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBpdC4gIENhbGxlciBzaG91bGQK KyAgIGNhbGwgbnVtYV9zcGlubG9ja19mcmVlIG9uIHRoZSBOVU1BIHNwaW5s b2NrIHBvaW50ZXIgdG8gZnJlZSB0aGUKKyAgIG1lbW9yeSB3aGVuIGl0IGlz IG5vIGxvbmdlciBuZWVkZWQuICAqLworCitzdHJ1Y3QgbnVtYV9zcGlubG9j ayAqCitudW1hX3NwaW5sb2NrX2FsbG9jICh2b2lkKQoreworICBjb25zdCBz aXplX3QgYnVmZmVyX3NpemUgPSAxMDI0OworICBjaGFyIGJ1ZmZlcltidWZm ZXJfc2l6ZV07CisgIGNoYXIgKmJ1ZmZlcl9lbmQgPSBidWZmZXIgKyBidWZm ZXJfc2l6ZTsKKyAgY2hhciAqY3AgPSBidWZmZXJfZW5kOworICBjaGFyICpy ZSA9IGJ1ZmZlcl9lbmQ7CisKKyAgY29uc3QgaW50IGZsYWdzID0gT19SRE9O TFkgfCBPX0NMT0VYRUM7CisgIGludCBmZCA9IF9fb3Blbl9ub2NhbmNlbCAo Ii9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9vbmxpbmUiLCBmbGFncyk7Cisg IGNoYXIgKmw7CisgIHVuc2lnbmVkIGludCBtYXhfbm9kZSA9IDA7CisgIHVu c2lnbmVkIGludCBub2RlX2NvdW50ID0gMDsKKyAgaWYgKGZkICE9IC0xKQor ICAgIHsKKyAgICAgIGwgPSBuZXh0X2xpbmUgKGZkLCBidWZmZXIsICZjcCwg JnJlLCBidWZmZXJfZW5kKTsKKyAgICAgIGlmIChsICE9IE5VTEwpCisJZG8K KwkgIHsKKwkgICAgY2hhciAqZW5kcDsKKwkgICAgdW5zaWduZWQgbG9uZyBp bnQgbiA9IHN0cnRvdWwgKGwsICZlbmRwLCAxMCk7CisJICAgIGlmIChsID09 IGVuZHApCisJICAgICAgeworCQlub2RlX2NvdW50ID0gMTsKKwkJYnJlYWs7 CisJICAgICAgfQorCisJICAgIHVuc2lnbmVkIGxvbmcgaW50IG0gPSBuOwor CSAgICBpZiAoKmVuZHAgPT0gJy0nKQorCSAgICAgIHsKKwkJbCA9IGVuZHAg KyAxOworCQltID0gc3RydG91bCAobCwgJmVuZHAsIDEwKTsKKwkJaWYgKGwg PT0gZW5kcCkKKwkJICB7CisJCSAgICBub2RlX2NvdW50ID0gMTsKKwkJICAg IGJyZWFrOworCQkgIH0KKwkgICAgICB9CisKKwkgICAgbm9kZV9jb3VudCAr PSBtIC0gbiArIDE7CisKKwkgICAgaWYgKG0gPj0gbWF4X25vZGUpCisJICAg ICAgbWF4X25vZGUgPSBtOworCisJICAgIGwgPSBlbmRwOworCSAgICB3aGls ZSAobCA8IHJlICYmIGlzc3BhY2UgKCpsKSkKKwkgICAgICArK2w7CisJICB9 CisJd2hpbGUgKGwgPCByZSk7CisKKyAgICAgIF9fY2xvc2Vfbm9jYW5jZWxf bm9zdGF0dXMgKGZkKTsKKyAgICB9CisKKyAgLyogTkI6IFNvbWUgTlVNQSBu b2RlcyBtYXkgbm90IGJlIGF2YWlsYWJsZSwgaWYgdGhlIG51bWJlciBvZiBO VU1BCisgICAgIG5vZGVzIGlzIDEsIHNldCB0aGUgbWF4aW1pdW0gTlVNQSBu b2RlIG51bWJlciB0byAwLiAgKi8KKyAgaWYgKG5vZGVfY291bnQgPT0gMSkK KyAgICBtYXhfbm9kZSA9IDA7CisKKyAgdW5zaWduZWQgaW50IG1heF9jcHUg PSAwOworICB1bnNpZ25lZCBpbnQgKnBoeXNpY2FsX3BhY2thZ2VfaWRfcCA9 IE5VTEw7CisKKyAgaWYgKG1heF9ub2RlID09IDApCisgICAgeworICAgICAg LyogVGhlcmUgaXMgYXQgbGVhc3QgMSBub2RlLiAgKi8KKyAgICAgIG5vZGVf Y291bnQgPSAxOworCisgICAgICAvKiBJZiBOVU1BIGlzIGRpc2FibGVkLCB1 c2UgcGh5c2ljYWxfcGFja2FnZV9pZCBpbnN0ZWFkLiAgKi8KKyAgICAgIHN0 cnVjdCBkaXJlbnQgKipjcHVfbGlzdDsKKyAgICAgIGludCBucHJvY3MgPSBz Y2FuZGlyICgiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUiLCAmY3B1X2xpc3Qs CisJCQkgICAgc2VsZWN0X2NwdSwgTlVMTCk7CisgICAgICBpZiAobnByb2Nz ID4gMCkKKwl7CisJICBpbnQgaTsKKwkgIHVuc2lnbmVkIGludCAqY3B1X2lk X3AgPSBOVUxMOworCisJICAvKiBGaW5kIHRoZSBtYXhpbXVtIENQVSBudW1i ZXIuICAqLworCSAgaWYgKHBvc2l4X21lbWFsaWduICgodm9pZCAqKikgJmNw dV9pZF9wLAorCQkJICAgICAgX19hbGlnbm9mX18gKHZvaWQgKiksCisJCQkg ICAgICBucHJvY3MgKiBzaXplb2YgKHVuc2lnbmVkIGludCkpID09IDApCisJ ICAgIHsKKwkgICAgICBmb3IgKGkgPSAwOyBpIDwgbnByb2NzOyBpKyspCisJ CXsKKwkJICB1bnNpZ25lZCBpbnQgY3B1X2lkCisJCSAgICA9IHN0cnRvdWwg KGNwdV9saXN0W2ldLT5kX25hbWUgKyAzLCBOVUxMLCAxMCk7CisJCSAgY3B1 X2lkX3BbaV0gPSBjcHVfaWQ7CisJCSAgaWYgKGNwdV9pZCA+IG1heF9jcHUp CisJCSAgICBtYXhfY3B1ID0gY3B1X2lkOworCQl9CisKKwkgICAgICBpZiAo cG9zaXhfbWVtYWxpZ24gKCh2b2lkICoqKSAmcGh5c2ljYWxfcGFja2FnZV9p ZF9wLAorCQkJCSAgX19hbGlnbm9mX18gKHZvaWQgKiksCisJCQkJICAoKG1h eF9jcHUgKyAxKQorCQkJCSAgICogc2l6ZW9mICh1bnNpZ25lZCBpbnQpKSkg PT0gMCkKKwkJeworCQkgIG1lbXNldCAocGh5c2ljYWxfcGFja2FnZV9pZF9w LCAwLAorCQkJICAoKG1heF9jcHUgKyAxKSAqIHNpemVvZiAodW5zaWduZWQg aW50KSkpOworCisJCSAgbWF4X25vZGUgPSBVSU5UX01BWDsKKworCQkgIC8q IEdldCBwaHlzaWNhbF9wYWNrYWdlX2lkLiAgKi8KKwkJICBjaGFyIHBhdGhb KHNpemVvZiAoIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1IikKKwkJCSAgICAg KyAzICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkKKwkJCSAgICAgKyBz aXplb2YgKCIvdG9wb2xvZ3kvcGh5c2ljYWxfcGFja2FnZV9pZCIpKV07CisJ CSAgZm9yIChpID0gMDsgaSA8IG5wcm9jczsgaSsrKQorCQkgICAgeworCQkg ICAgICBzdHJ1Y3QgZGlyZW50ICpkID0gY3B1X2xpc3RbaV07CisJCSAgICAg IGlmIChzbnByaW50ZiAocGF0aCwgc2l6ZW9mIChwYXRoKSwKKwkJCQkgICAg Ii9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1LyVzL3RvcG9sb2d5L3BoeXNpY2Fs X3BhY2thZ2VfaWQiLAorCQkJCSAgICBkLT5kX25hbWUpID4gMCkKKwkJCXsK KwkJCSAgZmQgPSBfX29wZW5fbm9jYW5jZWwgKHBhdGgsIGZsYWdzKTsKKwkJ CSAgaWYgKGZkICE9IC0xKQorCQkJICAgIHsKKwkJCSAgICAgIGlmIChfX3Jl YWRfbm9jYW5jZWwgKGZkLCBidWZmZXIsCisJCQkJCQkgICBidWZmZXJfc2l6 ZSkgPiAwKQorCQkJCXsKKwkJCQkgIGNoYXIgKmVuZHA7CisJCQkJICB1bnNp Z25lZCBsb25nIGludCBwYWNrYWdlX2lkCisJCQkJICAgID0gc3RydG91bCAo YnVmZmVyLCAmZW5kcCwgMTApOworCQkJCSAgaWYgKHBhY2thZ2VfaWQgIT0g VUxPTkdfTUFYCisJCQkJICAgICAgJiYgKmJ1ZmZlciAhPSAnXDAnCisJCQkJ ICAgICAgJiYgKCplbmRwID09ICdcMCcgfHwgKmVuZHAgPT0gJ1xuJykpCisJ CQkJICAgIHsKKwkJCQkgICAgICBwaHlzaWNhbF9wYWNrYWdlX2lkX3BbY3B1 X2lkX3BbaV1dCisJCQkJCT0gcGFja2FnZV9pZDsKKwkJCQkgICAgICBpZiAo bWF4X25vZGUgPT0gVUlOVF9NQVgpCisJCQkJCXsKKwkJCQkJICAvKiBUaGlz IGlzIHRoZSBmaXJzdCBub2RlLiAgKi8KKwkJCQkJICBtYXhfbm9kZSA9IHBh Y2thZ2VfaWQ7CisJCQkJCX0KKwkJCQkgICAgICBlbHNlIGlmIChwYWNrYWdl X2lkICE9IG1heF9ub2RlKQorCQkJCQl7CisJCQkJCSAgLyogTkI6IFdlIG9u bHkgbmVlZCB0byBrbm93IGlmCisJCQkJCSAgICAgTk9ERV9DT1VOVCA+IDEu ICAqLworCQkJCQkgIG5vZGVfY291bnQgPSAyOworCQkJCQkgIGlmIChwYWNr YWdlX2lkID4gbWF4X25vZGUpCisJCQkJCSAgICBtYXhfbm9kZSA9IHBhY2th Z2VfaWQ7CisJCQkJCX0KKwkJCQkgICAgfQorCQkJCX0KKwkJCSAgICAgIF9f Y2xvc2Vfbm9jYW5jZWxfbm9zdGF0dXMgKGZkKTsKKwkJCSAgICB9CisJCQl9 CisKKwkJICAgICAgZnJlZSAoZCk7CisJCSAgICB9CisJCX0KKworCSAgICAg IGZyZWUgKGNwdV9pZF9wKTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJ ICAgICAgZm9yIChpID0gMDsgaSA8IG5wcm9jczsgaSsrKQorCQlmcmVlIChj cHVfbGlzdFtpXSk7CisJICAgIH0KKworCSAgZnJlZSAoY3B1X2xpc3QpOwor CX0KKyAgICB9CisKKyAgaWYgKHBoeXNpY2FsX3BhY2thZ2VfaWRfcCAhPSBO VUxMICYmIG5vZGVfY291bnQgPT0gMSkKKyAgICB7CisgICAgICAvKiBUaGVy ZSBpcyBvbmx5IG9uZSBub2RlLiAgTm8gbmVlZCBmb3IgcGh5c2ljYWxfcGFj a2FnZV9pZF9wLiAgKi8KKyAgICAgIGZyZWUgKHBoeXNpY2FsX3BhY2thZ2Vf aWRfcCk7CisgICAgICBwaHlzaWNhbF9wYWNrYWdlX2lkX3AgPSBOVUxMOwor ICAgICAgbWF4X2NwdSA9IDA7CisgICAgfQorCisgIC8qIEFsbG9jYXRlIGFu IGFycmF5IG9mIHN0cnVjdCBudW1hX3NwaW5sb2NrX2luZm8gcG9pbnRlcnMg dG8gaG9sZCBpbmZvCisgICAgIGZvciBhbGwgTlVNQSBub2RlcyB3aXRoIE5V TUEgbm9kZSBudW1iZXIgZnJvbSBnZXRjcHUgKCkgYXMgaW5kZXguICAqLwor ICBzaXplX3Qgc2l6ZSA9IChzaXplb2YgKHN0cnVjdCBudW1hX3NwaW5sb2Nr KQorCQkgKyAoKG1heF9ub2RlICsgMSkKKwkJICAgICogc2l6ZW9mIChzdHJ1 Y3QgbnVtYV9zcGlubG9ja19pbmZvICopKSk7CisgIHN0cnVjdCBudW1hX3Nw aW5sb2NrICpsb2NrOworICBpZiAocG9zaXhfbWVtYWxpZ24gKCh2b2lkICoq KSAmbG9jaywKKwkJICAgICAgX19hbGlnbm9mX18gKHN0cnVjdCBudW1hX3Nw aW5sb2NrX2luZm8gKiksIHNpemUpKQorICAgIHJldHVybiBOVUxMOworICBt ZW1zZXQgKGxvY2ssIDAsIHNpemUpOworCisgIGxvY2stPm1heF9ub2RlID0g bWF4X25vZGU7CisgIGxvY2stPnNpbmdsZV9ub2RlID0gbm9kZV9jb3VudCA9 PSAxOworICBsb2NrLT5tYXhfY3B1ID0gbWF4X2NwdTsKKyAgbG9jay0+cGh5 c2ljYWxfcGFja2FnZV9pZF9wID0gcGh5c2ljYWxfcGFja2FnZV9pZF9wOwor CisgIHJldHVybiBsb2NrOworfQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvbGlicHRocmVhZC5hYmls aXN0IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBj MzIvbGlicHRocmVhZC5hYmlsaXN0CmluZGV4IDA5ZTg0NDdiMDYuLmRiYTdk ZjYyYWEgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bv d2VycGMvcG93ZXJwYzMyL2xpYnB0aHJlYWQuYWJpbGlzdAorKysgYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9saWJwdGhy ZWFkLmFiaWxpc3QKQEAgLTIyNyw2ICsyMjcsMTAgQEAgR0xJQkNfMi4yOCB0 c3NfY3JlYXRlIEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18y LjI4IHRzc19nZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIu MjkgbnVtYV9zcGlubG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3Bp bmxvY2tfYXBwbHkgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi4z LjIgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCBGCiBHTElCQ18yLjMuMiBwdGhy ZWFkX2NvbmRfZGVzdHJveSBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRf aW5pdCBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9w b3dlcnBjL3Bvd2VycGM2NC9iZS9saWJwdGhyZWFkLmFiaWxpc3QgYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9iZS9saWJw dGhyZWFkLmFiaWxpc3QKaW5kZXggODMwMDk1OGQ0Ny4uYTc2M2MwYTgxOSAx MDA2NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9w b3dlcnBjNjQvYmUvbGlicHRocmVhZC5hYmlsaXN0CisrKyBiL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2JlL2xpYnB0aHJl YWQuYWJpbGlzdApAQCAtMjcsNiArMjcsMTAgQEAgR0xJQkNfMi4yOCB0c3Nf Y3JlYXRlIEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18yLjI4 IHRzc19nZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIuMjkg bnVtYV9zcGlubG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3Bpbmxv Y2tfYXBwbHkgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUgRgor R0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi4zIF9J T19mbG9ja2ZpbGUgRgogR0xJQkNfMi4zIF9JT19mdHJ5bG9ja2ZpbGUgRgog R0xJQkNfMi4zIF9JT19mdW5sb2NrZmlsZSBGCmRpZmYgLS1naXQgYS9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9sZS9saWJw dGhyZWFkLmFiaWxpc3QgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dl cnBjL3Bvd2VycGM2NC9sZS9saWJwdGhyZWFkLmFiaWxpc3QKaW5kZXggOWE5 ZTRjZWU4NS4uZWI1NGE4MzYzZCAxMDA2NDQKLS0tIGEvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvbGUvbGlicHRocmVhZC5h YmlsaXN0CisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMv cG93ZXJwYzY0L2xlL2xpYnB0aHJlYWQuYWJpbGlzdApAQCAtMjQzLDMgKzI0 Myw3IEBAIEdMSUJDXzIuMjggdHNzX2NyZWF0ZSBGCiBHTElCQ18yLjI4IHRz c19kZWxldGUgRgogR0xJQkNfMi4yOCB0c3NfZ2V0IEYKIEdMSUJDXzIuMjgg dHNzX3NldCBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYWxsb2MgRgor R0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2FwcGx5IEYKK0dMSUJDXzIuMjkg bnVtYV9zcGlubG9ja19mcmVlIEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9j a19pbml0IEYKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L3Jpc2N2L3J2NjQvbGlicHRocmVhZC5hYmlsaXN0IGIvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvcmlzY3YvcnY2NC9saWJwdGhyZWFkLmFiaWxpc3QKaW5k ZXggYzM3MGZkYTczZC4uMzY2ZmNhY2E3ZSAxMDA2NDQKLS0tIGEvc3lzZGVw cy91bml4L3N5c3YvbGludXgvcmlzY3YvcnY2NC9saWJwdGhyZWFkLmFiaWxp c3QKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcmlzY3YvcnY2NC9s aWJwdGhyZWFkLmFiaWxpc3QKQEAgLTIzNSwzICsyMzUsNyBAQCBHTElCQ18y LjI4IHRzc19jcmVhdGUgRgogR0xJQkNfMi4yOCB0c3NfZGVsZXRlIEYKIEdM SUJDXzIuMjggdHNzX2dldCBGCiBHTElCQ18yLjI4IHRzc19zZXQgRgorR0xJ QkNfMi4yOSBudW1hX3NwaW5sb2NrX2FsbG9jIEYKK0dMSUJDXzIuMjkgbnVt YV9zcGlubG9ja19hcHBseSBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tf ZnJlZSBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfaW5pdCBGCmRpZmYg LS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zMzkwL3MzOTAtMzIv bGlicHRocmVhZC5hYmlsaXN0IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgv czM5MC9zMzkwLTMyL2xpYnB0aHJlYWQuYWJpbGlzdAppbmRleCBkMDU0Njhm M2IyLi43ODZkOGUxYjhkIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lz di9saW51eC9zMzkwL3MzOTAtMzIvbGlicHRocmVhZC5hYmlsaXN0CisrKyBi L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3MzOTAvczM5MC0zMi9saWJwdGhy ZWFkLmFiaWxpc3QKQEAgLTIyOSw2ICsyMjksMTAgQEAgR0xJQkNfMi4yOCB0 c3NfY3JlYXRlIEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18y LjI4IHRzc19nZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIu MjkgbnVtYV9zcGlubG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3Bp bmxvY2tfYXBwbHkgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi4z LjIgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCBGCiBHTElCQ18yLjMuMiBwdGhy ZWFkX2NvbmRfZGVzdHJveSBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRf aW5pdCBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9z MzkwL3MzOTAtNjQvbGlicHRocmVhZC5hYmlsaXN0IGIvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvczM5MC9zMzkwLTY0L2xpYnB0aHJlYWQuYWJpbGlzdApp bmRleCBlODE2MWFhNzQ3Li5kZDdjNTJmZTlhIDEwMDY0NAotLS0gYS9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9zMzkwL3MzOTAtNjQvbGlicHRocmVhZC5h YmlsaXN0CisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3MzOTAvczM5 MC02NC9saWJwdGhyZWFkLmFiaWxpc3QKQEAgLTIyMSw2ICsyMjEsMTAgQEAg R0xJQkNfMi4yOCB0c3NfY3JlYXRlIEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0 ZSBGCiBHTElCQ18yLjI4IHRzc19nZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0 IEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9ja19hbGxvYyBGCitHTElCQ18y LjI5IG51bWFfc3BpbmxvY2tfYXBwbHkgRgorR0xJQkNfMi4yOSBudW1hX3Nw aW5sb2NrX2ZyZWUgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2luaXQg RgogR0xJQkNfMi4zLjIgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCBGCiBHTElC Q18yLjMuMiBwdGhyZWFkX2NvbmRfZGVzdHJveSBGCiBHTElCQ18yLjMuMiBw dGhyZWFkX2NvbmRfaW5pdCBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgv c3lzdi9saW51eC9zaC9saWJwdGhyZWFkLmFiaWxpc3QgYi9zeXNkZXBzL3Vu aXgvc3lzdi9saW51eC9zaC9saWJwdGhyZWFkLmFiaWxpc3QKaW5kZXggYmNi YTA3ZjU3NS4uYTgwNDc1ZmQwNCAxMDA2NDQKLS0tIGEvc3lzZGVwcy91bml4 L3N5c3YvbGludXgvc2gvbGlicHRocmVhZC5hYmlsaXN0CisrKyBiL3N5c2Rl cHMvdW5peC9zeXN2L2xpbnV4L3NoL2xpYnB0aHJlYWQuYWJpbGlzdApAQCAt MjE5LDYgKzIxOSwxMCBAQCBHTElCQ18yLjI4IHRzc19jcmVhdGUgRgogR0xJ QkNfMi4yOCB0c3NfZGVsZXRlIEYKIEdMSUJDXzIuMjggdHNzX2dldCBGCiBH TElCQ18yLjI4IHRzc19zZXQgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2Nr X2FsbG9jIEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9ja19hcHBseSBGCitH TElCQ18yLjI5IG51bWFfc3BpbmxvY2tfZnJlZSBGCitHTElCQ18yLjI5IG51 bWFfc3BpbmxvY2tfaW5pdCBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRf YnJvYWRjYXN0IEYKIEdMSUJDXzIuMy4yIHB0aHJlYWRfY29uZF9kZXN0cm95 IEYKIEdMSUJDXzIuMy4yIHB0aHJlYWRfY29uZF9pbml0IEYKZGlmZiAtLWdp dCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NwYXJjL3NwYXJjMzIvbGli cHRocmVhZC5hYmlsaXN0IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3Bh cmMvc3BhcmMzMi9saWJwdGhyZWFkLmFiaWxpc3QKaW5kZXggYjQxMzAwN2Nj Yi4uZGQwODc5NjI0MiAxMDA2NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3Yv bGludXgvc3BhcmMvc3BhcmMzMi9saWJwdGhyZWFkLmFiaWxpc3QKKysrIGIv c3lzZGVwcy91bml4L3N5c3YvbGludXgvc3BhcmMvc3BhcmMzMi9saWJwdGhy ZWFkLmFiaWxpc3QKQEAgLTIyNyw2ICsyMjcsMTAgQEAgR0xJQkNfMi4yOCB0 c3NfY3JlYXRlIEYKIEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18y LjI4IHRzc19nZXQgRgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIu MjkgbnVtYV9zcGlubG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3Bp bmxvY2tfYXBwbHkgRgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi4z LjIgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCBGCiBHTElCQ18yLjMuMiBwdGhy ZWFkX2NvbmRfZGVzdHJveSBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRf aW5pdCBGCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9z cGFyYy9zcGFyYzY0L2xpYnB0aHJlYWQuYWJpbGlzdCBiL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L3NwYXJjL3NwYXJjNjQvbGlicHRocmVhZC5hYmlsaXN0 CmluZGV4IGNjYzk0NDk4MjYuLjViMTkwZjY5YWYgMTAwNjQ0Ci0tLSBhL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NwYXJjL3NwYXJjNjQvbGlicHRocmVh ZC5hYmlsaXN0CisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NwYXJj L3NwYXJjNjQvbGlicHRocmVhZC5hYmlsaXN0CkBAIC0yMTksNiArMjE5LDEw IEBAIEdMSUJDXzIuMjggdHNzX2NyZWF0ZSBGCiBHTElCQ18yLjI4IHRzc19k ZWxldGUgRgogR0xJQkNfMi4yOCB0c3NfZ2V0IEYKIEdMSUJDXzIuMjggdHNz X3NldCBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYWxsb2MgRgorR0xJ QkNfMi4yOSBudW1hX3NwaW5sb2NrX2FwcGx5IEYKK0dMSUJDXzIuMjkgbnVt YV9zcGlubG9ja19mcmVlIEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9ja19p bml0IEYKIEdMSUJDXzIuMy4yIHB0aHJlYWRfY29uZF9icm9hZGNhc3QgRgog R0xJQkNfMi4zLjIgcHRocmVhZF9jb25kX2Rlc3Ryb3kgRgogR0xJQkNfMi4z LjIgcHRocmVhZF9jb25kX2luaXQgRgpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvdHN0LW51bWEtdmFyaWFibGUtb3ZlcmhlYWQuYyBi L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC1udW1hLXZhcmlhYmxlLW92 ZXJoZWFkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uZDQzZDAzMDVlZQotLS0gL2Rldi9udWxsCisrKyBiL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L3RzdC1udW1hLXZhcmlhYmxlLW92ZXJoZWFkLmMKQEAg LTAsMCArMSw1MyBAQAorLyogVGVzdCBjYXNlIGZvciBOVU1BIHNwaW5sb2Nr IG92ZXJoZWFkLgorICAgQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2 ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdOVSBDIExpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAg TGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3Qs IHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KworI2lmbmRlZiBfR05VX1NPVVJDRQorIyBkZWZpbmUgX0dOVV9TT1VSQ0UK KyNlbmRpZgorI2luY2x1ZGUgIm51bWEtc3BpbmxvY2suaCIKKworc3RydWN0 IG51bWFfc3BpbmxvY2sgKmxvY2s7CisKK3N0cnVjdCB3b3JrX3RvZG9fYXJn dW1lbnQKK3sKKyAgdW5zaWduZWQgbG9uZyAqdjE7CisgIHVuc2lnbmVkIGxv bmcgKnYyOworICB1bnNpZ25lZCBsb25nICp2MzsKKyAgdW5zaWduZWQgbG9u ZyAqdjQ7Cit9OworCitzdGF0aWMgdm9pZCAqCit3b3JrX3RvZG8gKHZvaWQg KnYpCit7CisgIHN0cnVjdCB3b3JrX3RvZG9fYXJndW1lbnQgKnAgPSB2Owor ICB1bnNpZ25lZCBsb25nIHJldDsKKyAgKnAtPnYxID0gKnAtPnYxICsgMTsK KyAgKnAtPnYyID0gKnAtPnYyICsgMTsKKyAgcmV0ID0gX19zeW5jX3ZhbF9j b21wYXJlX2FuZF9zd2FwIChwLT52NCwgMCwgMSk7CisgICpwLT52MyA9ICpw LT52MyArIHJldDsKKyAgcmV0dXJuICh2b2lkICopIDI7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZAorZG9fd29yayAoc3RydWN0IG51bWFfc3BpbmxvY2tf aW5mbyAqbG9ja19pbmZvKQoreworICBudW1hX3NwaW5sb2NrX2FwcGx5IChs b2NrX2luZm8pOworfQorCisjZGVmaW5lIFVTRV9OVU1BX1NQSU5MT0NLCisj aW5jbHVkZSAidHN0LXZhcmlhYmxlLW92ZXJoZWFkLXNrZWxldG9uLmMiCmRp ZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC90c3QtdmFyaWFi bGUtb3ZlcmhlYWQtc2tlbGV0b24uYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xp bnV4L3RzdC12YXJpYWJsZS1vdmVyaGVhZC1za2VsZXRvbi5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYwYWYxM2YzMDIKLS0t IC9kZXYvbnVsbAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC90c3Qt dmFyaWFibGUtb3ZlcmhlYWQtc2tlbGV0b24uYwpAQCAtMCwwICsxLDM5NyBA QAorLyogVGVzdCBjYXNlIHNrZWxldG9uIGZvciBzcGlubG9jayBvdmVyaGVh ZC4KKyAgIENvcHlyaWdodCAoQykgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg QyBMaWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVyc2lvbiAy LjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2Ug YWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKyAg IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIENo ZWNrIHNwaW5sb2NrIG92ZXJoZWFkIHdpdGggbGFyZ2UgbnVtYmVyIHRocmVh ZHMuICBDcml0aWNhbCByZWdpb24gaXMKKyAgIHZlcnkgc21tYWxsLiAgQ3Jp dGljYWwgcmVnaW9uICsgc3BpbmxvY2sgb3ZlcmhlYWQgYXJlbid0IG5vdGlj ZWFibGUKKyAgIHdoZW4gbnVtYmVyIG9mIHRocmVhZHMgaXMgc21hbGwuICBX aGVuIHRocmVhZCBudW1iZXIgaW5jcmVhc2VzLAorICAgc3BpbmxvY2sgb3Zl cmhlYWQgYmVjb21lIHRoZSBib3R0bGVuZWNrLiAgSXQgc2hvd3MgdXAgaW4g d2FsbCB0aW1lCisgICBvZiB0aHJlYWQgZXhlY3V0aW9uLiAgKi8KKworI2lm bmRlZiBfR05VX1NPVVJDRQorIyBkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRp ZgorI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgor I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2lu Y2x1ZGUgPHNjaGVkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVk ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8 c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRl IDxlcnJuby5oPgorI2lmZGVmIE1PRFVMRV9OQU1FCisjIGluY2x1ZGUgPGNw dS1mZWF0dXJlcy5oPgorIyBpbmNsdWRlIDxzdXBwb3J0L3Rlc3QtZHJpdmVy Lmg+CisKKyMgdW5kZWYgYXR0cmlidXRlX2hpZGRlbgorIyBkZWZpbmUgYXR0 cmlidXRlX2hpZGRlbgorI2VuZGlmCisjaW5jbHVkZSA8aHAtdGltaW5nLmg+ CisjaW5jbHVkZSA8YXRvbWljLmg+CisKKyNpZm5kZWYgVVNFX1BUSFJFQURf QVRUUl9TRVRBRkZJTklUWV9OUAorIyBkZWZpbmUgVVNFX1BUSFJFQURfQVRU Ul9TRVRBRkZJTklUWV9OUCAxCisjZW5kaWYKKworI2RlZmluZSBDQUNIRUxJ TkVfU0laRQk2NAorI2RlZmluZSBDQUNIRV9BTElHTkVECV9fYXR0cmlidXRl X18oKGFsaWduZWQoQ0FDSEVMSU5FX1NJWkUpKSkKKworI2RlZmluZSBjb25z dGFudF90aW1lIDUKK3Vuc2lnbmVkIGxvbmcgZ192YWwgQ0FDSEVfQUxJR05F RDsKK3Vuc2lnbmVkIGxvbmcgZ192YWwyIENBQ0hFX0FMSUdORUQ7Cit1bnNp Z25lZCBsb25nIGdfdmFsMyBDQUNIRV9BTElHTkVEOwordW5zaWduZWQgbG9u ZyBjbXBsb2NrIENBQ0hFX0FMSUdORUQ7CitzdHJ1Y3QgY291bnQKK3sKKyAg dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsOworICB1bnNpZ25lZCBsb25nIGxv bmcgc3BpbmxvY2s7CisgIHVuc2lnbmVkIGxvbmcgbG9uZyB3YWxsOworfSBf X2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKKworc3RydWN0IGNvdW50 ICpnY291bnQ7CisKKy8qIFRoZSB0aW1lIGNvbnN1bWVkIGJ5IG9uZSB1cGRh dGUgaXMgYWJvdXQgMjAwIFRTQ3MuICAqLworc3RhdGljIGludCBkZWxheV90 aW1lX3VubG9ja2VkID0gNDAwOworCitzdHJ1Y3Qgb3BzCit7CisgIHZvaWQg KigqdGVzdCkgKHZvaWQgKmFyZyk7CisgIHZvaWQgKCpwcmludF90aHJlYWQp ICh2b2lkICpyZXMsIGludCk7Cit9ICpvcHM7CisKK3N0cnVjdCBzdGF0c19y ZXN1bHQKK3sKKyAgdW5zaWduZWQgbG9uZyBudW07Cit9OworCit2b2lkICp3 b3JrX3RocmVhZCAodm9pZCAqYXJnKTsKKworI2RlZmluZSBpdGVyYXRpb25z ICgxMDAwMCAqIDUpCisKK3N0YXRpYyB2b2xhdGlsZSBpbnQgc3RhcnRfdGhy ZWFkOworCisvKiBEZWxheSBzb21lIGZpeGVkIHRpbWUgKi8KK3N0YXRpYyB2 b2lkCitkZWxheV90c2MgKHVuc2lnbmVkIG4pCit7CisjaWYgSFBfVElNSU5H X0FWQUlMCisgIGhwX3RpbWluZ190IHN0YXJ0LCBjdXJyZW50LCBkaWZmOwor ICBIUF9USU1JTkdfTk9XIChzdGFydCk7CisKKyAgd2hpbGUgKDEpCisgICAg eworICAgICAgSFBfVElNSU5HX05PVyAoY3VycmVudCk7CisgICAgICBIUF9U SU1JTkdfRElGRiAoZGlmZiwgc3RhcnQsIGN1cnJlbnQpOworICAgICAgaWYg KGRpZmYgPCBuKQorCWF0b21pY19zcGluX25vcCAoKTsKKyAgICAgIGVsc2UK KwlicmVhazsKKyAgICB9CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQKK3dh aXRfYV9iaXQgKGludCBkZWxheV90aW1lKQoreworICBpZiAoZGVsYXlfdGlt ZSA+IDApCisgICAgZGVsYXlfdHNjIChkZWxheV90aW1lKTsKK30KKworI2lm bmRlZiBVU0VfTlVNQV9TUElOTE9DSworc3RhdGljIGlubGluZSB2b2lkCit3 b3JrX3RvZG8gKHZvaWQpCit7CisgIHVuc2lnbmVkIGxvbmcgcmV0OworICBn X3ZhbCA9IGdfdmFsICsgMTsKKyAgZ192YWwyID0gZ192YWwyICsgMTsKKyAg cmV0ID0gX19zeW5jX3ZhbF9jb21wYXJlX2FuZF9zd2FwICgmY21wbG9jaywg MCwgMSk7CisgIGdfdmFsMyA9IGdfdmFsMyArIDEgKyByZXQ7Cit9CisjZW5k aWYKKwordm9pZCAqCit3b3JrX3RocmVhZCAodm9pZCAqYXJnKQoreworICBs b25nIGk7CisgIHVuc2lnbmVkIGxvbmcgcGlkID0gKHVuc2lnbmVkIGxvbmcp IGFyZzsKKyAgc3RydWN0IHN0YXRzX3Jlc3VsdCAqcmVzOworICBpbnQgZXJy X3JldCA9IHBvc2l4X21lbWFsaWduICgodm9pZCAqKikmcmVzLCBDQUNIRUxJ TkVfU0laRSwKKwkJCQlyb3VuZHVwIChzaXplb2YgKCpyZXMpLCBDQUNIRUxJ TkVfU0laRSkpOworICBpZiAoZXJyX3JldCkKKyAgICB7CisgICAgICBwcmlu dGYgKCJwb3NpeF9tZW1hbGlnbiBmYWlsdXJlOiAlc1xuIiwgc3RyZXJyb3Ig KGVycl9yZXQpKTsKKyAgICAgIGV4aXQgKGVycl9yZXQpOworICAgIH0KKyAg bG9uZyBudW0gPSAwOworCisjaWZkZWYgVVNFX05VTUFfU1BJTkxPQ0sKKyAg c3RydWN0IHdvcmtfdG9kb19hcmd1bWVudCB3b3JrX3RvZG9fYXJnOworICBz dHJ1Y3QgbnVtYV9zcGlubG9ja19pbmZvIGxvY2tfaW5mbzsKKworICBpZiAo bnVtYV9zcGlubG9ja19pbml0IChsb2NrLCAmbG9ja19pbmZvKSkKKyAgICB7 CisgICAgICBwcmludGYgKCJudW1hX3NwaW5sb2NrX2luaXQgZmFpbHVyZTog JW1cbiIpOworICAgICAgZXhpdCAoMSk7CisgICAgfQorCisgIHdvcmtfdG9k b19hcmcudjEgPSAmZ192YWw7CisgIHdvcmtfdG9kb19hcmcudjIgPSAmZ192 YWwyOworICB3b3JrX3RvZG9fYXJnLnYzID0gJmdfdmFsMzsKKyAgd29ya190 b2RvX2FyZy52NCA9ICZjbXBsb2NrOworICBsb2NrX2luZm8uYXJndW1lbnQg PSAmd29ya190b2RvX2FyZzsKKyAgbG9ja19pbmZvLndvcmtsb2FkID0gd29y a190b2RvOworI2VuZGlmCisKKyAgd2hpbGUgKCFzdGFydF90aHJlYWQpCisg ICAgYXRvbWljX3NwaW5fbm9wICgpOworCisjaWYgSFBfVElNSU5HX0FWQUlM CisgIGhwX3RpbWluZ190IHN0YXJ0LCBlbmQ7CisgIEhQX1RJTUlOR19OT1cg KHN0YXJ0KTsKKyNlbmRpZgorCisgIGZvciAoaSA9IDA7IGkgPCBpdGVyYXRp b25zOyBpKyspCisgICAgeworI2lmZGVmIFVTRV9OVU1BX1NQSU5MT0NLCisg ICAgICBkb193b3JrICgmbG9ja19pbmZvKTsKKyNlbHNlCisgICAgICBkb193 b3JrICgpOworI2VuZGlmCisgICAgICB3YWl0X2FfYml0IChkZWxheV90aW1l X3VubG9ja2VkKTsKKyAgICAgIG51bSsrOworICAgIH0KKyNpZiBIUF9USU1J TkdfQVZBSUwKKyAgSFBfVElNSU5HX05PVyAoZW5kKTsKKyAgSFBfVElNSU5H X0RJRkYgKGdjb3VudFtwaWRdLnRvdGFsLCBzdGFydCwgZW5kKTsKKyNlbmRp ZgorICByZXMtPm51bSA9IG51bTsKKworICByZXR1cm4gcmVzOworfQorCit2 b2lkCitpbml0X2dsb2JhbF9kYXRhKHZvaWQpCit7CisgIGdfdmFsID0gMDsK KyAgZ192YWwyID0gMDsKKyAgZ192YWwzID0gMDsKKyAgY21wbG9jayA9IDA7 Cit9CisKK3ZvaWQKK3Rlc3RfdGhyZWFkcyAoaW50IG51bXRocmVhZHMsIGlu dCBudW1wcm9jcywgdW5zaWduZWQgbG9uZyB0aW1lKQoreworICBzdGFydF90 aHJlYWQgPSAwOworCisjaWZkZWYgVVNFX05VTUFfU1BJTkxPQ0sKKyAgbG9j ayA9IG51bWFfc3BpbmxvY2tfYWxsb2MgKCk7CisjZW5kaWYKKworICBhdG9t aWNfZnVsbF9iYXJyaWVyICgpOworCisgIHB0aHJlYWRfdCB0aHJbbnVtdGhy ZWFkc107CisgIHZvaWQgKnJlc1tudW10aHJlYWRzXTsKKyAgaW50IGk7CisK KyAgaW5pdF9nbG9iYWxfZGF0YSAoKTsKKyAgZm9yIChpID0gMDsgaSA8IG51 bXRocmVhZHM7IGkrKykKKyAgICB7CisgICAgICBwdGhyZWFkX2F0dHJfdCBh dHRyOworICAgICAgY29uc3QgcHRocmVhZF9hdHRyX3QgKmF0dHJwID0gTlVM TDsKKyAgICAgIGlmIChVU0VfUFRIUkVBRF9BVFRSX1NFVEFGRklOSVRZX05Q KQorCXsKKwkgIGF0dHJwID0gJmF0dHI7CisJICBwdGhyZWFkX2F0dHJfaW5p dCAoJmF0dHIpOworCSAgY3B1X3NldF90IHNldDsKKwkgIENQVV9aRVJPICgm c2V0KTsKKwkgIGludCBjcHUgPSBpICUgbnVtcHJvY3M7CisJICAodm9pZCkg Q1BVX1NFVCAoY3B1LCAmc2V0KTsKKwkgIHB0aHJlYWRfYXR0cl9zZXRhZmZp bml0eV9ucCAoJmF0dHIsIHNpemVvZiAoY3B1X3NldF90KSwgJnNldCk7CisJ fQorICAgICAgaW50IGVycl9yZXQgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocltp XSwgYXR0cnAsIG9wcy0+dGVzdCwKKwkJCQkgICAgKHZvaWQgKikodWludHB0 cl90KSBpKTsKKyAgICAgIGlmIChlcnJfcmV0ICE9IDApCisJeworCSAgcHJp bnRmICgicHRocmVhZF9jcmVhdGUgZmFpbGVkOiAlZCwgJXNcbiIsCisJCSAg aSwgc3RyZXJyb3IgKGkpKTsKKwkgIG51bXRocmVhZHMgPSBpOworCSAgYnJl YWs7CisJfQorICAgIH0KKworICBhdG9taWNfZnVsbF9iYXJyaWVyICgpOwor ICBzdGFydF90aHJlYWQgPSAxOworICBhdG9taWNfZnVsbF9iYXJyaWVyICgp OworICBzY2hlZF95aWVsZCAoKTsKKworICBpZiAodGltZSkKKyAgICB7Cisg ICAgICBzdHJ1Y3QgdGltZXNwZWMgdHMgPQorCXsKKwkgIHRzLnR2X3NlYyA9 IHRpbWUsCisJICB0cy50dl9uc2VjID0gMAorCX07CisgICAgICBjbG9ja19u YW5vc2xlZXAgKENMT0NLX01PTk9UT05JQywgMCwgJnRzLCBOVUxMKTsKKyAg ICAgIGF0b21pY19mdWxsX2JhcnJpZXIgKCk7CisgICAgfQorCisgIGZvciAo aSA9IDA7IGkgPCBudW10aHJlYWRzOyBpKyspCisgICAgeworICAgICAgaWYg KHB0aHJlYWRfam9pbiAodGhyW2ldLCAodm9pZCAqKSAmcmVzW2ldKSA9PSAw KQorCWZyZWUgKHJlc1tpXSk7CisgICAgICBlbHNlCisJcHJpbnRmICgicHRo cmVhZF9qb2luIGZhaWx1cmU6ICVtXG4iKTsKKyAgICB9CisKKyNpZmRlZiBV U0VfTlVNQV9TUElOTE9DSworICBudW1hX3NwaW5sb2NrX2ZyZWUgKGxvY2sp OworI2VuZGlmCit9CisKK3N0cnVjdCBvcHMgaGFzaHdvcmtfb3BzID0KK3sK KyAgLnRlc3QgPSB3b3JrX3RocmVhZCwKK307CisKK3N0cnVjdCBvcHMgKm9w czsKKworc3RhdGljIHN0cnVjdCBjb3VudAordG90YWxfY29zdCAoaW50IG51 bXRocmVhZHMsIGludCBudW1wcm9jcykKK3sKKyAgaW50IGk7CisgIHVuc2ln bmVkIGxvbmcgbG9uZyB0b3RhbCA9IDA7CisgIHVuc2lnbmVkIGxvbmcgbG9u ZyBzcGlubG9jayA9IDA7CisKKyAgbWVtc2V0IChnY291bnQsIDAsIHNpemVv ZihnY291bnRbMF0pICogbnVtdGhyZWFkcyk7CisKKyNpZiBIUF9USU1JTkdf QVZBSUwKKyAgaHBfdGltaW5nX3Qgc3RhcnQsIGVuZCwgZGlmZjsKKyAgSFBf VElNSU5HX05PVyAoc3RhcnQpOworI2VuZGlmCisKKyAgdGVzdF90aHJlYWRz IChudW10aHJlYWRzLCBudW1wcm9jcywgY29uc3RhbnRfdGltZSk7CisKKyNp ZiBIUF9USU1JTkdfQVZBSUwKKyAgSFBfVElNSU5HX05PVyAoZW5kKTsKKyAg SFBfVElNSU5HX0RJRkYgKGRpZmYsIHN0YXJ0LCBlbmQpOworI2VuZGlmCisK KyAgZm9yIChpID0gMDsgaSA8IG51bXRocmVhZHM7IGkrKykKKyAgICB7Cisg ICAgICB0b3RhbCArPSBnY291bnRbaV0udG90YWw7CisgICAgICBzcGlubG9j ayArPSBnY291bnRbaV0uc3BpbmxvY2s7CisgICAgfQorCisgIHN0cnVjdCBj b3VudCBjb3N0ID0geyB0b3RhbCwgc3BpbmxvY2ssIGRpZmYgfTsKKyAgcmV0 dXJuIGNvc3Q7Cit9CisKKyNpZmRlZiBNT0RVTEVfTkFNRQorc3RhdGljIGlu dAorZG9fdGVzdCAodm9pZCkKK3sKKyMgaWYgIUhQX1RJTUlOR19BVkFJTAor ICByZXR1cm4gRVhJVF9VTlNVUFBPUlRFRDsKKyMgZW5kaWYKKyNlbHNlCitp bnQKK21haW4gKHZvaWQpCit7CisjZW5kaWYKKyAgaW50IG51bXByb2NzID0g c3lzY29uZiAoX1NDX05QUk9DRVNTT1JTX09OTE4pOworCisgIC8qIE92ZXJz dWJzY3JpYmUgQ1BVLiAgKi8KKyAgaW50IG51bXRocmVhZHMgPSA0ICogbnVt cHJvY3M7CisKKyAgb3BzID0gJmhhc2h3b3JrX29wczsKKworICBpbnQgZXJy X3JldCA9IHBvc2l4X21lbWFsaWduICgodm9pZCAqKikmZ2NvdW50LCA0MDk2 LAorCQkJCXNpemVvZihnY291bnRbMF0pICogbnVtdGhyZWFkcyk7CisgIGlm IChlcnJfcmV0KQorICAgIHsKKyAgICAgIHByaW50ZiAoInBvc2l4X21lbWFs aWduIGZhaWx1cmU6ICVzXG4iLCBzdHJlcnJvciAoZXJyX3JldCkpOworICAg ICAgZXhpdCAoZXJyX3JldCk7CisgICAgfQorCisgIHN0cnVjdCBjb3VudCBj b3N0LCBjb3N0MTsKKyAgZG91YmxlIG92ZXJoZWFkOworICBpbnQgaSwgbGFz dDsKKyAgaW50IGxhc3RfaW5jcmVtZW50ID0gbnVtcHJvY3MgPCAxNiA/IDE2 IDogbnVtcHJvY3M7CisgIGludCBudW1wcm9jc19kb25lID0gMDsKKyAgaW50 IG51bXByb2NzX3Jlc2V0ID0gMDsKKyAgY29zdDEgPSB0b3RhbF9jb3N0ICgx LCBudW1wcm9jcyk7CisKKyAgcHJpbnRmICgiTnVtYmVyIG9mIHByb2Nlc3Nv cnM6ICVkLCBTaW5nbGUgdGhyZWFkIHRpbWUgJWxsZFxuXG4iLAorCSAgbnVt cHJvY3MsIGNvc3QxLnRvdGFsKTsKKworICBmb3IgKGxhc3QgPSBpID0gMjsg aSA8PSBudW10aHJlYWRzOykKKyAgICB7CisgICAgICBsYXN0ID0gaTsKKyAg ICAgIGNvc3QgPSB0b3RhbF9jb3N0IChpLCBudW1wcm9jcyk7CisgICAgICBv dmVyaGVhZCA9IGNvc3QudG90YWw7CisgICAgICBvdmVyaGVhZCAvPSBpOwor ICAgICAgb3ZlcmhlYWQgLz0gY29zdDEudG90YWw7CisgICAgICBwcmludGYg KCJOdW1iZXIgb2YgdGhyZWFkczogJTRkLCBUb3RhbCB0aW1lICUxNGxsZCwg T3ZlcmhlYWQ6ICUuMmZcbiIsCisJICAgICAgaSwgY29zdC50b3RhbCwgb3Zl cmhlYWQpOworICAgICAgaWYgKChpICogMikgPCBudW1wcm9jcykKKwlpID0g aSAqIDI7CisgICAgICBlbHNlIGlmIChudW1wcm9jc19kb25lKQorCXsKKwkg IGlmIChudW1wcm9jc19yZXNldCkKKwkgICAgeworCSAgICAgIGkgPSBudW1w cm9jc19yZXNldDsKKwkgICAgICBudW1wcm9jc19yZXNldCA9IDA7CisJICAg IH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmICgoaSAqIDIpIDwgbnVt dGhyZWFkcykKKwkJaSA9IGkgKiAyOworCSAgICAgIGVsc2UKKwkJaSA9IGkg KyBsYXN0X2luY3JlbWVudDsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7 CisJICBpZiAobnVtcHJvY3MgIT0gMiAqIGkpCisJICAgIG51bXByb2NzX3Jl c2V0ID0gMiAqIGk7CisJICBpID0gbnVtcHJvY3M7CisJICBudW1wcm9jc19k b25lID0gMTsKKwl9CisgICAgfQorCisgIGlmIChsYXN0ICE9IG51bXRocmVh ZHMpCisgICAgeworICAgICAgaSA9IG51bXRocmVhZHM7CisgICAgICBjb3N0 ID0gdG90YWxfY29zdCAoaSwgbnVtcHJvY3MpOworICAgICAgb3ZlcmhlYWQg PSBjb3N0LnRvdGFsOworICAgICAgb3ZlcmhlYWQgLz0gaTsKKyAgICAgIG92 ZXJoZWFkIC89IGNvc3QxLnRvdGFsOworICAgICAgcHJpbnRmICgiTnVtYmVy IG9mIHRocmVhZHM6ICU0ZCwgVG90YWwgdGltZSAlMTRsbGQsIE92ZXJoZWFk OiAlLjJmXG4iLAorCSAgICAgIGksIGNvc3QudG90YWwsIG92ZXJoZWFkKTsK KyAgICB9CisKKyAgZnJlZSAoZ2NvdW50KTsKKyAgcmV0dXJuIDA7Cit9CisK KyNpZmRlZiBNT0RVTEVfTkFNRQorIyBkZWZpbmUgVElNRU9VVCA5MDAKKyMg aW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5jPgorI2VuZGlmCmRpZmYg LS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC90c3QtdmFyaWFibGUt b3ZlcmhlYWQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC12YXJp YWJsZS1vdmVyaGVhZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjFjYjYyY2JjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC90c3QtdmFyaWFibGUtb3ZlcmhlYWQuYwpA QCAtMCwwICsxLDQ3IEBACisvKiBUZXN0IGNhc2UgZm9yIHNwaW5sb2NrIG92 ZXJoZWFkLgorICAgQ29weXJpZ2h0IChDKSAyMDE5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGlj ZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNl ZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor I2lmbmRlZiBfR05VX1NPVVJDRQorIyBkZWZpbmUgX0dOVV9TT1VSQ0UKKyNl bmRpZgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKworc3RydWN0Cit7CisgIHB0 aHJlYWRfc3BpbmxvY2tfdCB0ZXN0bG9jazsKKyAgY2hhciBwYWRbNjQgLSBz aXplb2YgKHB0aHJlYWRfc3BpbmxvY2tfdCldOworfSB0ZXN0IF9fYXR0cmli dXRlX18oKGFsaWduZWQoNjQpKSk7CisKK3N0YXRpYyB2b2lkCitfX2F0dHJp YnV0ZV9fKChjb25zdHJ1Y3RvcikpCitpbml0X3NwaW4gKHZvaWQpCit7Cisg IHB0aHJlYWRfc3Bpbl9pbml0ICgmdGVzdC50ZXN0bG9jaywgMCk7Cit9CisK K3N0YXRpYyB2b2lkIHdvcmtfdG9kbyAodm9pZCk7CisKK3N0YXRpYyBpbmxp bmUgdm9pZAorZG9fd29yayAodm9pZCkKK3sKKyAgcHRocmVhZF9zcGluX2xv Y2soJnRlc3QudGVzdGxvY2spOworICB3b3JrX3RvZG8gKCk7CisgIHB0aHJl YWRfc3Bpbl91bmxvY2soJnRlc3QudGVzdGxvY2spOworfQorCisjaW5jbHVk ZSAidHN0LXZhcmlhYmxlLW92ZXJoZWFkLXNrZWxldG9uLmMiCmRpZmYgLS1n aXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvNjQvbGlicHRo cmVhZC5hYmlsaXN0IGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0 LzY0L2xpYnB0aHJlYWQuYWJpbGlzdAppbmRleCA5MzFjODI3N2E4Li5lOTA1 MzJlZjM2IDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94 ODZfNjQvNjQvbGlicHRocmVhZC5hYmlsaXN0CisrKyBiL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L3g4Nl82NC82NC9saWJwdGhyZWFkLmFiaWxpc3QKQEAg LTIxOSw2ICsyMTksMTAgQEAgR0xJQkNfMi4yOCB0c3NfY3JlYXRlIEYKIEdM SUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18yLjI4IHRzc19nZXQgRgog R0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlubG9j a19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYXBwbHkgRgor R0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUgRgorR0xJQkNfMi4yOSBu dW1hX3NwaW5sb2NrX2luaXQgRgogR0xJQkNfMi4zLjIgcHRocmVhZF9jb25k X2Jyb2FkY2FzdCBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRfZGVzdHJv eSBGCiBHTElCQ18yLjMuMiBwdGhyZWFkX2NvbmRfaW5pdCBGCmRpZmYgLS1n aXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQveDMyL2xpYnB0 aHJlYWQuYWJpbGlzdCBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82 NC94MzIvbGlicHRocmVhZC5hYmlsaXN0CmluZGV4IGMwOWM5YjAxNWEuLmM3 NGZlYmJkYTEgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L3g4Nl82NC94MzIvbGlicHRocmVhZC5hYmlsaXN0CisrKyBiL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L3g4Nl82NC94MzIvbGlicHRocmVhZC5hYmlsaXN0 CkBAIC0yNDMsMyArMjQzLDcgQEAgR0xJQkNfMi4yOCB0c3NfY3JlYXRlIEYK IEdMSUJDXzIuMjggdHNzX2RlbGV0ZSBGCiBHTElCQ18yLjI4IHRzc19nZXQg RgogR0xJQkNfMi4yOCB0c3Nfc2V0IEYKK0dMSUJDXzIuMjkgbnVtYV9zcGlu bG9ja19hbGxvYyBGCitHTElCQ18yLjI5IG51bWFfc3BpbmxvY2tfYXBwbHkg RgorR0xJQkNfMi4yOSBudW1hX3NwaW5sb2NrX2ZyZWUgRgorR0xJQkNfMi4y OSBudW1hX3NwaW5sb2NrX2luaXQgRgotLSAKMi4yMC4xCgo= --000000000000f47577057e933254--