From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id B90063858D33 for ; Wed, 9 Aug 2023 14:59:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B90063858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7E85ED75; Wed, 9 Aug 2023 08:00:39 -0700 (PDT) Received: from [10.57.77.218] (unknown [10.57.77.218]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 464013F59C; Wed, 9 Aug 2023 07:59:56 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------sPIPni1B7sNoTKyYRbPK3Vh2" Message-ID: <9322d3d7-5188-fd49-7902-74efa5d65da7@arm.com> Date: Wed, 9 Aug 2023 15:59:49 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH] aarch64: enable mixed-types for aarch64 simdclones Content-Language: en-US To: "gcc-patches@gcc.gnu.org" , Kyrylo Tkachov , richard.sandiford@arm.com References: From: "Andre Vieira (lists)" In-Reply-To: X-Spam-Status: No, score=-16.2 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,KAM_LOTSOFHASH,NICE_REPLY_A,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------sPIPni1B7sNoTKyYRbPK3Vh2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Here is my new version, see inline response to your comments. New cover letter: This patch enables the use of mixed-types for simd clones for AArch64, adds aarch64 as a target_vect_simd_clones and corrects the way the simdlen is chosen for non-specified simdlen clauses according to the 'Vector Function Application Binary Interface Specification for AArch64'. gcc/ChangeLog: * config/aarch64/aarch64.cc (currently_supported_simd_type): Remove. (aarch64_simd_clone_compute_vecsize_and_simdlen): Determine simdlen according to NDS rule. (lane_size): New function. gcc/testsuite/ChangeLog: * lib/target-supports.exp: Add aarch64 targets to vect_simd_clones. * c-c++-common/gomp/declare-variant-14.c: Add aarch64 checks and remove warning check. * g++.dg/gomp/attrs-10.C: Likewise. * g++.dg/gomp/declare-simd-1.C: Likewise. * g++.dg/gomp/declare-simd-3.C: Likewise. * g++.dg/gomp/declare-simd-4.C: Likewise. * gcc.dg/gomp/declare-simd-3.c: Likewise. * gcc.dg/gomp/simd-clones-2.c: Likewise. * gfortran.dg/gomp/declare-variant-14.f90: Likewise. * c-c++-common/gomp/pr60823-1.c: Remove warning check. * c-c++-common/gomp/pr60823-3.c: Likewise. * g++.dg/gomp/declare-simd-7.C: Likewise. * g++.dg/gomp/declare-simd-8.C: Likewise. * g++.dg/gomp/pr88182.C: Likewise. * gcc.dg/declare-simd.c: Likewise. * gcc.dg/gomp/declare-simd-1.c: Likewise. * gcc.dg/gomp/pr87895-1.c: Likewise. * gfortran.dg/gomp/declare-simd-2.f90: Likewise. * gfortran.dg/gomp/declare-simd-coarray-lib.f90: Likewise. * gfortran.dg/gomp/pr79154-1.f90: Likewise. * gfortran.dg/gomp/pr83977.f90: Likewise. * gcc.dg/gomp/pr87887-1.c: Add warning test. * gcc.dg/gomp/pr89246-1.c: Likewise. * gcc.dg/gomp/pr99542.c: Update warning test. On 08/08/2023 11:51, Richard Sandiford wrote: > "Andre Vieira (lists)" writes: >> warning_at (DECL_SOURCE_LOCATION (node->decl), 0, >> - "unsupported return type %qT for % functions", >> + "unsupported return type %qT for simd", >> ret_type); > > What's the reason for s/% functions/simd/, in particular for > dropping the quotes around simd? It's to align with i386's error message, this helps with testing as then I can avoid having different tests for the same error. I asked Jakub which one he preferred, and he gave me an explanation why the i386's one was preferable, ... but I didn't write it down unfortunately. > >> return 0; >> } >> >> + nfs_type = ret_type; > > Genuine question, but what does nfs stand for in this context? Was supposed to be nds... my bad. > I don't think this implements the NDS calculation in the spec: > > The `Narrowest Data Size of f`, or ``NDS(f)``, as the minumum of > the lane size ``LS(P)`` among all input parameters and > return value ``

`` of ``f``. > > ... > > We then define the `Lane Size of P`, or ``LS(P)``, as follows. > > 1. If ``MTV(P)`` is ``false`` and ``P`` is a pointer or reference to > some type ``T`` for which ``PBV(T)`` is ``true``, ``LS(P) = > sizeof(T)``. > 2. If ``PBV(T(P))`` is ``true``, ``LS(P) = sizeof(P)``. > 3. Otherwise ``LS(P) = sizeof(uintptr_t)``. > > AIUI, (1) means that we need to look at the targets of uniform and > linear scalars[*] that have pointer type, so that e.g. a uniform uint8_t * > pointer should cause NDS to be 1. > > [*] i.e. arguments that remain scalar in the vector prototype > > (2) means that other types of uniform and linear scalars do contribute. > A uniform uint8_t should cause NDS to be 1. You are right, I misread the ABI description there. > > Thanks, > Richard --------------sPIPni1B7sNoTKyYRbPK3Vh2 Content-Type: text/plain; charset=UTF-8; name="aarch64_simd_clone_mixed2.patch" Content-Disposition: attachment; filename="aarch64_simd_clone_mixed2.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmNjIGIvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuY2MKaW5kZXggN2NkMjMwYzQ2MDJhMTU5ODAwMTZiZGM5MmU4 MDU3OWJlMGMwNzA5NC4uNDU4YTRkYmY3NjEzOGUzMjllYjk5MDc3NzgwMDg5YTliNTAxYzA0 NiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKKysrIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuY2MKQEAgLTI3Mjc0LDI4ICsyNzI3NCw1NyBAQCBz dXBwb3J0ZWRfc2ltZF90eXBlICh0cmVlIHQpCiAgIHJldHVybiBmYWxzZTsKIH0KIAotLyog UmV0dXJuIHRydWUgZm9yIHR5cGVzIHRoYXQgY3VycmVudGx5IGFyZSBzdXBwb3J0ZWQgYXMg U0lNRCByZXR1cm4KLSAgIG9yIGFyZ3VtZW50IHR5cGVzLiAgKi8KKy8qIERldGVybWluZSB0 aGUgbGFuZSBzaXplIGZvciB0aGUgY2xvbmUgYXJndW1lbnQvcmV0dXJuIHR5cGUuICBUaGlz IGZvbGxvd3MKKyAgIHRoZSBMUyhQKSBydWxlIGluIHRoZSBWRkFCSUE2NC4gICovCiAKLXN0 YXRpYyBib29sCi1jdXJyZW50bHlfc3VwcG9ydGVkX3NpbWRfdHlwZSAodHJlZSB0LCB0cmVl IGIpCitzdGF0aWMgdW5zaWduZWQKK2xhbmVfc2l6ZSAoY2dyYXBoX3NpbWRfY2xvbmVfYXJn X3R5cGUgY2xvbmVfYXJnX3R5cGUsIHRyZWUgdHlwZSkKIHsKLSAgaWYgKENPTVBMRVhfRkxP QVRfVFlQRV9QICh0KSkKLSAgICByZXR1cm4gZmFsc2U7CisgIGdjY19hc3NlcnQgKGNsb25l X2FyZ190eXBlICE9IFNJTURfQ0xPTkVfQVJHX1RZUEVfTUFTSyk7CiAKLSAgaWYgKFRZUEVf U0laRSAodCkgIT0gVFlQRV9TSVpFIChiKSkKLSAgICByZXR1cm4gZmFsc2U7CisgIC8qIEZv ciBub24gbWFwLXRvLXZlY3RvciB0eXBlcyB0aGF0IGFyZSBwb2ludGVycyB3ZSB1c2UgdGhl IGVsZW1lbnQgdHlwZSBpdAorICAgICBwb2ludHMgdG8uICAqLworICBpZiAoUE9JTlRFUl9U WVBFX1AgKHR5cGUpKQorICAgIHN3aXRjaCAoY2xvbmVfYXJnX3R5cGUpCisgICAgICB7Cisg ICAgICBkZWZhdWx0OgorCWJyZWFrOworICAgICAgY2FzZSBTSU1EX0NMT05FX0FSR19UWVBF X1VOSUZPUk06CisgICAgICBjYXNlIFNJTURfQ0xPTkVfQVJHX1RZUEVfTElORUFSX0NPTlNU QU5UX1NURVA6CisgICAgICBjYXNlIFNJTURfQ0xPTkVfQVJHX1RZUEVfTElORUFSX1ZBUklB QkxFX1NURVA6CisJdHlwZSA9IFRSRUVfVFlQRSAodHlwZSk7CisJYnJlYWs7CisgICAgICB9 CiAKLSAgcmV0dXJuIHN1cHBvcnRlZF9zaW1kX3R5cGUgKHQpOworICAvKiBGb3IgdHlwZXMg KG9yIHR5cGVzIHBvaW50ZXJzIG9mIG5vbiBtYXAtdG8tdmVjdG9yIHR5cGVzIHBvaW50IHRv KSB0aGF0IGFyZQorICAgICBpbnRlZ2VycyBvciBmbG9hdGluZyBwb2ludCwgd2UgdXNlIHRo ZWlyIHNpemUgaWYgdGhleSBhcmUgMSwgMiwgNCBvciA4LgorICAgKi8KKyAgaWYgKElOVEVH UkFMX1RZUEVfUCAodHlwZSkKKyAgICAgIHx8IFNDQUxBUl9GTE9BVF9UWVBFX1AgKHR5cGUp KQorICAgICAgc3dpdGNoIChUWVBFX1BSRUNJU0lPTiAodHlwZSkgLyBCSVRTX1BFUl9VTklU KQorCXsKKwlkZWZhdWx0OgorCSAgYnJlYWs7CisJY2FzZSAxOgorCWNhc2UgMjoKKwljYXNl IDQ6CisJY2FzZSA4OgorCSAgcmV0dXJuIFRZUEVfUFJFQ0lTSU9OICh0eXBlKTsKKwl9Cisg IC8qIEZvciBhbnkgb3RoZXIgd2UgdXNlIHRoZSBzaXplIG9mIHVpbnRwdHJfdC4gIEZvciBt YXAtdG8tdmVjdG9yIHR5cGVzIHRoYXQKKyAgICAgYXJlIHBvaW50ZXJzLCB1c2luZyB0aGUg c2l6ZSBvZiB1aW50cHRyX3QgaXMgdGhlIHNhbWUgYXMgdXNpbmcgdGhlIHNpemUgb2YKKyAg ICAgdGhlaXIgdHlwZSwgc2VlaW5nIGFsbCBwb2ludGVycyBhcmUgdGhlIHNhbWUgc2l6ZSBh cyB1aW50cHRyX3QuICAqLworICByZXR1cm4gUE9JTlRFUl9TSVpFOwogfQogCisKIC8qIElt cGxlbWVudCBUQVJHRVRfU0lNRF9DTE9ORV9DT01QVVRFX1ZFQ1NJWkVfQU5EX1NJTURMRU4u ICAqLwogCiBzdGF0aWMgaW50CiBhYXJjaDY0X3NpbWRfY2xvbmVfY29tcHV0ZV92ZWNzaXpl X2FuZF9zaW1kbGVuIChzdHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUsCiAJCQkJCXN0cnVjdCBj Z3JhcGhfc2ltZF9jbG9uZSAqY2xvbmVpLAotCQkJCQl0cmVlIGJhc2VfdHlwZSwgaW50IG51 bSwKLQkJCQkJYm9vbCBleHBsaWNpdF9wKQorCQkJCQl0cmVlIGJhc2VfdHlwZSBBVFRSSUJV VEVfVU5VU0VELAorCQkJCQlpbnQgbnVtLCBib29sIGV4cGxpY2l0X3ApCiB7CiAgIHRyZWUg dCwgcmV0X3R5cGU7CiAgIHVuc2lnbmVkIGludCBlbHRfYml0cywgY291bnQ7CkBAIC0yNzMy MCw1NSArMjczNDksNjUgQEAgYWFyY2g2NF9zaW1kX2Nsb25lX2NvbXB1dGVfdmVjc2l6ZV9h bmRfc2ltZGxlbiAoc3RydWN0IGNncmFwaF9ub2RlICpub2RlLAogICAgIH0KIAogICByZXRf dHlwZSA9IFRSRUVfVFlQRSAoVFJFRV9UWVBFIChub2RlLT5kZWNsKSk7CisgIC8qIEFjY29y ZGluZyB0byBBQXJjaDY0J3MgVmVjdG9yIEFCSSB0aGUgdHlwZSB0aGF0IGRldGVybWluZXMg dGhlIHNpbWRsZW4gaXMKKyAgICAgdGhlIG5hcnJvd2VzdCBvZiB0eXBlcywgc28gd2UgaWdu b3JlIGJhc2VfdHlwZSBmb3IgQUFyY2g2NC4gICovCiAgIGlmIChUUkVFX0NPREUgKHJldF90 eXBlKSAhPSBWT0lEX1RZUEUKLSAgICAgICYmICFjdXJyZW50bHlfc3VwcG9ydGVkX3NpbWRf dHlwZSAocmV0X3R5cGUsIGJhc2VfdHlwZSkpCisgICAgICAmJiAhc3VwcG9ydGVkX3NpbWRf dHlwZSAocmV0X3R5cGUpKQogICAgIHsKICAgICAgIGlmICghZXhwbGljaXRfcCkKIAk7Ci0g ICAgICBlbHNlIGlmIChUWVBFX1NJWkUgKHJldF90eXBlKSAhPSBUWVBFX1NJWkUgKGJhc2Vf dHlwZSkpCi0Jd2FybmluZ19hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG5vZGUtPmRlY2wp LCAwLAotCQkgICAgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXpl IHR5cGVzICIKLQkJICAgICJmb3IgJTxzaW1kJT4gZnVuY3Rpb25zIik7Ci0gICAgICBlbHNl IGlmIChzdXBwb3J0ZWRfc2ltZF90eXBlIChyZXRfdHlwZSkpCisgICAgICBlbHNlIGlmIChD T01QTEVYX0ZMT0FUX1RZUEVfUCAocmV0X3R5cGUpKQogCXdhcm5pbmdfYXQgKERFQ0xfU09V UkNFX0xPQ0FUSU9OIChub2RlLT5kZWNsKSwgMCwKIAkJICAgICJHQ0MgZG9lcyBub3QgY3Vy cmVudGx5IHN1cHBvcnQgcmV0dXJuIHR5cGUgJXFUICIKLQkJICAgICJmb3IgJTxzaW1kJT4g ZnVuY3Rpb25zIiwgcmV0X3R5cGUpOworCQkgICAgImZvciBzaW1kIiwgcmV0X3R5cGUpOwog ICAgICAgZWxzZQogCXdhcm5pbmdfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChub2RlLT5k ZWNsKSwgMCwKLQkJICAgICJ1bnN1cHBvcnRlZCByZXR1cm4gdHlwZSAlcVQgZm9yICU8c2lt ZCU+IGZ1bmN0aW9ucyIsCisJCSAgICAidW5zdXBwb3J0ZWQgcmV0dXJuIHR5cGUgJXFUIGZv ciBzaW1kIiwKIAkJICAgIHJldF90eXBlKTsKICAgICAgIHJldHVybiAwOwogICAgIH0KIAor ICAvKiBXZSBhcmUgbG9va2luZyBmb3IgdGhlIE5EUyB0eXBlIGhlcmUgYWNjb3JkaW5nIHRv IHRoZSBWRkFCSUE2NCwgdGhvdWdoIHdlCisgICAgIG9ubHkga2VlcCB0cmFjayBvZiB0aGUg RUxUX0JJVFMgcmVxdWlyZWQgdG8gcmVwcmVzZW50IGl0LiAgKi8KKyAgaWYgKFRSRUVfQ09E RSAocmV0X3R5cGUpICE9IFZPSURfVFlQRSkKKyAgICBlbHRfYml0cyA9IGxhbmVfc2l6ZSAo U0lNRF9DTE9ORV9BUkdfVFlQRV9WRUNUT1IsIHJldF90eXBlKTsKKyAgZWxzZQorICAgIGVs dF9iaXRzID0gMDsKKwogICBpbnQgaTsKICAgdHJlZSB0eXBlX2FyZ190eXBlcyA9IFRZUEVf QVJHX1RZUEVTIChUUkVFX1RZUEUgKG5vZGUtPmRlY2wpKTsKICAgYm9vbCBkZWNsX2FyZ19w ID0gKG5vZGUtPmRlZmluaXRpb24gfHwgdHlwZV9hcmdfdHlwZXMgPT0gTlVMTF9UUkVFKTsK LQogICBmb3IgKHQgPSAoZGVjbF9hcmdfcCA/IERFQ0xfQVJHVU1FTlRTIChub2RlLT5kZWNs KSA6IHR5cGVfYXJnX3R5cGVzKSwgaSA9IDA7CiAgICAgICAgdCAmJiB0ICE9IHZvaWRfbGlz dF9ub2RlOyB0ID0gVFJFRV9DSEFJTiAodCksIGkrKykKICAgICB7CiAgICAgICB0cmVlIGFy Z190eXBlID0gZGVjbF9hcmdfcCA/IFRSRUVfVFlQRSAodCkgOiBUUkVFX1ZBTFVFICh0KTsK LQogICAgICAgaWYgKGNsb25laS0+YXJnc1tpXS5hcmdfdHlwZSAhPSBTSU1EX0NMT05FX0FS R19UWVBFX1VOSUZPUk0KLQkgICYmICFjdXJyZW50bHlfc3VwcG9ydGVkX3NpbWRfdHlwZSAo YXJnX3R5cGUsIGJhc2VfdHlwZSkpCisJICAmJiAhc3VwcG9ydGVkX3NpbWRfdHlwZSAoYXJn X3R5cGUpKQogCXsKIAkgIGlmICghZXhwbGljaXRfcCkKIAkgICAgOwotCSAgZWxzZSBpZiAo VFlQRV9TSVpFIChhcmdfdHlwZSkgIT0gVFlQRV9TSVpFIChiYXNlX3R5cGUpKQorCSAgZWxz ZSBpZiAoQ09NUExFWF9GTE9BVF9UWVBFX1AgKHJldF90eXBlKSkKIAkgICAgd2FybmluZ19h dCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG5vZGUtPmRlY2wpLCAwLAotCQkJIkdDQyBkb2Vz IG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5cGVzICIKLQkJCSJmb3IgJTxz aW1kJT4gZnVuY3Rpb25zIik7CisJCQkiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0 IGFyZ3VtZW50IHR5cGUgJXFUICIKKwkJCSJmb3Igc2ltZCIsIGFyZ190eXBlKTsKIAkgIGVs c2UKIAkgICAgd2FybmluZ19hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKG5vZGUtPmRlY2wp LCAwLAotCQkJIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBhcmd1bWVudCB0eXBl ICVxVCAiCi0JCQkiZm9yICU8c2ltZCU+IGZ1bmN0aW9ucyIsIGFyZ190eXBlKTsKKwkJCSJ1 bnN1cHBvcnRlZCBhcmd1bWVudCB0eXBlICVxVCBmb3Igc2ltZCIsCisJCQlhcmdfdHlwZSk7 CiAJICByZXR1cm4gMDsKIAl9CisgICAgICB1bnNpZ25lZCBsYW5lX2JpdHMgPSBsYW5lX3Np emUgKGNsb25laS0+YXJnc1tpXS5hcmdfdHlwZSwgYXJnX3R5cGUpOworICAgICAgaWYgKGVs dF9iaXRzID4gbGFuZV9iaXRzKQorCWVsdF9iaXRzID0gbGFuZV9iaXRzOwogICAgIH0KIAor ICAvKiBJZiB3ZSBjb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBORFMgdHlwZSBmcm9tIGF2YWls YWJsZSBwYXJhbWV0ZXJzL3JldHVybiwKKyAgICAgdGhlbiBmYWxsYmFjayB0byB1c2luZyB1 aW50cHRyX3QuICAqLworICBpZiAoZWx0X2JpdHMgPT0gMCkKKyAgICBlbHRfYml0cyA9IFBP SU5URVJfU0laRTsKKwogICBjbG9uZWktPnZlY3NpemVfbWFuZ2xlID0gJ24nOwogICBjbG9u ZWktPm1hc2tfbW9kZSA9IFZPSURtb2RlOwotICBlbHRfYml0cyA9IEdFVF9NT0RFX0JJVFNJ WkUgKFNDQUxBUl9UWVBFX01PREUgKGJhc2VfdHlwZSkpOwogICBpZiAoa25vd25fZXEgKGNs b25laS0+c2ltZGxlbiwgMFUpKQogICAgIHsKICAgICAgIGNvdW50ID0gMjsKQEAgLTI3Mzc5 LDIxICsyNzQxOCw5IEBAIGFhcmNoNjRfc2ltZF9jbG9uZV9jb21wdXRlX3ZlY3NpemVfYW5k X3NpbWRsZW4gKHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSwKICAgICB7CiAgICAgICBjb3Vu dCA9IDE7CiAgICAgICB2ZWNfYml0cyA9IGNsb25laS0+c2ltZGxlbiAqIGVsdF9iaXRzOwot ICAgICAgLyogRm9yIG5vdywgU1ZFIHNpbWRjbG9uZXMgd29uJ3QgcHJvZHVjZSBpbGxlZ2Fs IHNpbWRsZW4sIFNvIG9ubHkgY2hlY2sKLQkgY29uc3Qgc2ltZGxlbnMgaGVyZS4gICovCi0g ICAgICBpZiAoY2xvbmVpLT5zaW1kbGVuLmlzX2NvbnN0YW50ICgmY29uc3Rfc2ltZGxlbikK LQkgICYmIG1heWJlX25lICh2ZWNfYml0cywgNjRVKSAmJiBtYXliZV9uZSAodmVjX2JpdHMs IDEyOFUpKQotCXsKLQkgIGlmIChleHBsaWNpdF9wKQotCSAgICB3YXJuaW5nX2F0IChERUNM X1NPVVJDRV9MT0NBVElPTiAobm9kZS0+ZGVjbCksIDAsCi0JCQkiR0NDIGRvZXMgbm90IGN1 cnJlbnRseSBzdXBwb3J0IHNpbWRsZW4gJXdkIGZvciAiCi0JCQkidHlwZSAlcVQiLAotCQkJ Y29uc3Rfc2ltZGxlbiwgYmFzZV90eXBlKTsKLQkgIHJldHVybiAwOwotCX0KICAgICB9Ci0g IGNsb25laS0+dmVjc2l6ZV9pbnQgPSB2ZWNfYml0czsKLSAgY2xvbmVpLT52ZWNzaXplX2Zs b2F0ID0gdmVjX2JpdHM7CisgIGNsb25laS0+dmVjc2l6ZV9pbnQgPSAwOworICBjbG9uZWkt PnZlY3NpemVfZmxvYXQgPSAwOwogICByZXR1cm4gY291bnQ7CiB9CiAKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS12YXJpYW50LTE0LmMg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2RlY2xhcmUtdmFyaWFudC0xNC5j CmluZGV4IGNkYjBiYjM0ZjUwNWJjOWJkODJhMTRiNTdkMzUxMzg4MDBiYzQ1MjMuLmUzNjY4 ODkzYWZlMzNhNThjMDI5Y2RkZDQzM2Q5YmY0M2NjZTJiZmEgMTAwNjQ0Ci0tLSBhL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvZGVjbGFyZS12YXJpYW50LTE0LmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9kZWNsYXJlLXZhcmlhbnQtMTQuYwpA QCAtMTUsMTMgKzE1LDE1IEBAIGludAogdGVzdDEgKGludCB4KQogewogICAvKiBBdCBnaW1w bGlmaWNhdGlvbiB0aW1lLCB3ZSBjYW4ndCBkZWNpZGUgeWV0IHdoaWNoIGZ1bmN0aW9uIHRv IGNhbGwuICAqLwotICAvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImYw NCBcXFwoeCIgMiAiZ2ltcGxlIiB9IH0gKi8KKyAgLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJmMDQgXFxcKHgiIDIgImdpbXBsZSIgeyB0YXJnZXQgeyAhYWFyY2g2 NCotKi0qIH0gfSB9IH0gKi8KICAgLyogQWZ0ZXIgc2ltZCBjbG9uZXMgYXJlIGNyZWF0ZWQs IHRoZSBvcmlnaW5hbCBub24tY2xvbmUgdGVzdDEgc2hhbGwKICAgICAgY2FsbCBmMDMgKHNj b3JlIDYpLCB0aGUgc3NlMi9hdngvYXZ4MiBjbG9uZXMgdG9vLCBidXQgYXZ4NTEyZiBjbG9u ZXMKICAgICAgc2hhbGwgY2FsbCBmMDEgd2l0aCBzY29yZSA4LiAgKi8KICAgLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiZjA0IFxcXCh4IiAib3B0aW1pemVkIiB9IH0g Ki8KLSAgLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJmMDMgXFxcKHgi IDE0ICJvcHRpbWl6ZWQiIH0gfSAqLwotICAvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgImYwMSBcXFwoeCIgNCAib3B0aW1pemVkIiB9IH0gKi8KKyAgLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJmMDMgXFxcKHgiIDE0ICJvcHRpbWl6ZWQi IHsgdGFyZ2V0IHsgIWFhcmNoNjQqLSotKiB9IH0gfSB9ICovCisgIC8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiZjAzIFxcXCh4IiAxMCAib3B0aW1pemVkIiB7IHRh cmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9ICovCisgIC8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiZjAxIFxcXCh4IiA0ICJvcHRpbWl6ZWQiIHsgdGFyZ2V0IHsg IWFhcmNoNjQqLSotKiB9IH0gfSB9ICovCisgIC8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiZjAxIFxcXCh4IiAwICJvcHRpbWl6ZWQiIHsgdGFyZ2V0IHsgYWFyY2g2 NCotKi0qIH0gfSB9IH0gKi8KICAgaW50IGEgPSBmMDQgKHgpOwogICBpbnQgYiA9IGYwNCAo eCk7CiAgIHJldHVybiBhICsgYjsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2dvbXAvcHI2MDgyMy0xLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9n b21wL3ByNjA4MjMtMS5jCmluZGV4IDJjYzQ0ZTgyYzNjZmZhMjU5MDAzZmE1ZmRiZThlZGQ2 YjY4OGQyM2UuLjVmOTg1NzI0ZGFlZTcxYWUzMzQ4MWU4NGM3N2NmN2UxNGQyNzRiMGEgMTAw NjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvcHI2MDgyMy0xLmMK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9wcjYwODIzLTEuYwpAQCAt MTcsNCArMTcsMyBAQCBmb28gKGNvbnN0IGRvdWJsZSBjMSwgY29uc3QgZG91YmxlIGMyKQog ICAgIH0KICAgcmV0dXJuIHJlczsKIH0KLS8qIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90 IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdzaW1kJyBmdW5jdGlv bnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4tMTMgfSAqLwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9wcjYwODIzLTMuYyBiL2djYy90ZXN0 c3VpdGUvYy1jKystY29tbW9uL2dvbXAvcHI2MDgyMy0zLmMKaW5kZXggNTZhZDUwYzQxZjZl ZGVjZWQyNmRlYWE1N2FlYTU5MmYxMmM1ZWRiMS4uOTNlOWZiZTNhMTYxNGUzNWU5MTYyOWUx YWY3OTAyMWQ5ODZiNjQzMCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29tcC9wcjYwODIzLTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9n b21wL3ByNjA4MjMtMy5jCkBAIC0yOCw2ICsyOCw1IEBAIGZvbyAoZG91YmxlIGMxLCBkb3Vi bGUgYzIpCiAgIGJheiAoKihzdHJ1Y3QgUyAqKSZjMSwgKihzdHJ1Y3QgUyAqKSZjMik7CiAg IHJldHVybiBjMSArIGMyICsgKChzdHJ1Y3QgUyAqKSZjMSktPmNbMV07CiB9Ci0vKiB7IGRn LXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5 cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAu LTE2IH0gKi8KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9n b21wL2F0dHJzLTEwLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL2F0dHJzLTEwLkMK aW5kZXggZWQwMjE0YThkZTIzNWIzYzJhNmI1MjMzNjEwNmFjNWRlNzU0YmU0Ni4uZTE5NGQ4 OGYwMmRhMjM2OTRhZWFkNjBlODRhYjk2Zjg0YzI4Mzc3ZSAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvZ29tcC9hdHRycy0xMC5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2dvbXAvYXR0cnMtMTAuQwpAQCAtMTMsNiArMTMsMTEgQEAgZjEgKGludCBsKQogICBy ZXR1cm4gbDsKIH0KIAorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJf WkdWbk4ybF9fWjJmMWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8v IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5NMmxfX1oyZjFpOiIg MSB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgIl9aR1ZuTjRsX19aMmYxaToiIDEgeyB0YXJnZXQgeyBhYXJj aDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJfWkdWbk00bF9fWjJmMWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0K KwogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk00bF9fWjJm MWk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTjRsX19aMmYxaToiIDEgeyB0 YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNNNGxfX1oyZjFpOiIgMSB7IHRhcmdldCB7IGk/ ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpAQCAtMjgsNyArMzMsNyBAQCBmMiAoaW50IGwp CiAgIHJldHVybiBsICsgMTsKIH0KIAotLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LW5vdCAiX1pHVlxbYS16QS1aMC05XV9fWjJmMmk6IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4 Nl82NC0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAi X1pHVlxbYS16QS1aMC05XV9fWjJmMmk6IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0q LSogYWFyY2g2NCotKi0qIH0gfSB9IH0KIAogaW50CiBmMyAoaW50IGwpCkBAIC0zNiw2ICs0 MSwxMSBAQCBmMyAoaW50IGwpCiAgIHJldHVybiBsICsgMjsKIH0KIAorLy8geyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk4ydV9fWjJmM2k6IiAxIHsgdGFyZ2V0 IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiX1pHVm5NMnVfX1oyZjNpOiIgMSB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9 IH0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZuTjR1 X19aMmYzaToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk00dV9fWjJmM2k6IiAxIHsgdGFy Z2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKwogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJfWkdWYk00dV9fWjJmM2k6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSog eDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgIl9aR1ZiTjR1X19aMmYzaToiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0q IH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNN NHVfX1oyZjNpOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpA QCAtNTEsMTQgKzYxLDE4IEBAIGY0IChpbnQgbCkKICAgcmV0dXJuIGwgKyAzOwogfQogCi0v LyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfWkdWXFthLXpBLVowLTldX19a MmY0aToiIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CisvLyB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfWkdWXFthLXpBLVowLTldX19aMmY0aToi IHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiBhYXJjaDY0Ki0qLSogfSB9IH0gfQog CiBpbnQKIGY1IChpbnQgbCkKLXsJLy8geyBkZy13YXJuaW5nICJHQ0MgZG9lcyBub3QgY3Vy cmVudGx5IHN1cHBvcnQgc2ltZGxlbiA4IGZvciB0eXBlICdpbnQnIiAiIiB7IHRhcmdldCBh YXJjaDY0Ki0qLSogfSAuLTEgfQorewogICByZXR1cm4gbCArIDQ7CiB9CiAKKy8vIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5ONGxfX1oyZjVpOiIgMSB7IHRh cmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgIl9aR1ZuTTRsX19aMmY1aToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0q LSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdW bk44dV9fWjJmNWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKwogLy8g eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk00bF9fWjJmNWk6IiAx IHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTjRsX19aMmY1aToiIDEgeyB0YXJnZXQg eyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiX1pHVmNNNGxfX1oyZjVpOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0q IHg4Nl82NC0qLSogfSB9IH0gfQpAQCAtNzgsMTAgKzkyLDE0IEBAIGY1IChpbnQgbCkKIGlu dAogZjYgW1tvbXA6OnNlcXVlbmNlIChkaXJlY3RpdmUgKGRlY2xhcmUgc2ltZCB1bmlmb3Jt IChsKSBzaW1kbGVuICg4KSwgbm90aW5icmFuY2gpLAogCQkgICAgb21wOjpkaXJlY3RpdmUg KGRlY2xhcmUgc2ltZCBsaW5lYXIgKGwpIHNpbWRsZW4gKDgpIGluYnJhbmNoKSldXSAoaW50 IGwpCi17CS8vIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0 IHNpbWRsZW4gOCBmb3IgdHlwZSAnaW50JyIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0g Li0yIH0KK3sKICAgcmV0dXJuIGwgKyA1OwogfQogCisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIl9aR1ZuTjRsX19aMmY2aToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0 Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJf WkdWbk00dV9fWjJmNmk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8v IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5OOHVfX1oyZjZpOiIg MSB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9CisKIC8vIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmJNNHVfX1oyZjZpOiIgMSB7IHRhcmdldCB7IGk/ ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJfWkdWYk40bF9fWjJmNmk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2 XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Il9aR1ZiTThsX19aMmY2aToiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0g fSB9IH0KQEAgLTEwOSw3ICsxMjcsNyBAQCBmNyAoaW50IGwpCiAgIHJldHVybiBsICsgNjsK IH0KIAotLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX1pHVlxbYS16QS1a MC05XV9fWjJmN2k6IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQor Ly8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX1pHVlxbYS16QS1aMC05XV9f WjJmN2k6IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogYWFyY2g2NCotKi0qIH0g fSB9IH0KIAogaW50CiBmOCAoaW50IGwpCkBAIC0xMTcsMTcgKzEzNSwyMiBAQCBmOCAoaW50 IGwpCiAgIHJldHVybiBsICsgNzsKIH0KIAotLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCAiX1pHVlxbYS16QS1aMC05XV9fWjJmOGk6IiB7IHRhcmdldCB7IGk/ODYtKi0q IHg4Nl82NC0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAiX1pHVlxbYS16QS1aMC05XV9fWjJmOGk6IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82 NC0qLSogYWFyY2g2NCotKi0qIH0gfSB9IH0KIAogW1tvbXA6OnNlcXVlbmNlIChvbXA6OmRp cmVjdGl2ZSAoZGVjbGFyZSB2YXJpYW50IChmNyksIG1hdGNoIChjb25zdHJ1Y3Q9e3BhcmFs bGVsfSkpLAogCQkgZGlyZWN0aXZlIChkZWNsYXJlIHNpbWQgdW5pZm9ybSAobCksIHNpbWRs ZW4oNCkpKV1dCiBpbnQKIGY5IFtbb21wOjpkaXJlY3RpdmUgKGRlY2xhcmUgc2ltZCB1bmlm b3JtIChsKSBzaW1kbGVuICg4KSksCiAgICAgIG9tcDo6ZGlyZWN0aXZlIChkZWNsYXJlIHZh cmlhbnQgKGY4KSBtYXRjaCAoY29uc3RydWN0PXtwYXJhbGxlbCxmb3J9KSldXSAoaW50IGwp Ci17CS8vIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHNp bWRsZW4gOCBmb3IgdHlwZSAnaW50JyIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gLi0y IH0KK3sKICAgcmV0dXJuIGwgKyA4OwogfQogCisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgIl9aR1ZuTjR1X19aMmY5aToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0q LSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdW bk00dV9fWjJmOWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5OOHVfX1oyZjlpOiIgMSB7 IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIl9aR1ZuTTh1X19aMmY5aToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0 Ki0qLSogfSB9IH0gfQorCiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Il9aR1ZiTTR1X19aMmY5aToiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0g fSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmJONHVf X1oyZjlpOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQogLy8g eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWY000dV9fWjJmOWk6IiAx IHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CkBAIC0xNzQsNiArMTk3 LDkgQEAgZjEwIChpbnQgeCkKIAogdGVtcGxhdGUgW1tvbXA6OmRpcmVjdGl2ZSAoZGVjbGFy ZSBzaW1kLCBub3RpbmJyYW5jaCldXSBpbnQgZjEwPDA+IChpbnQpOwogCisvLyB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZuTjJ2X19aM2YxMElMaTBFRWlpOiIg MSB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgIl9aR1ZuTjR2X19aM2YxMElMaTBFRWlpOiIgMSB7IHRhcmdl dCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9CisKIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAiX1pHVmJONHZfX1ozZjEwSUxpMEVFaWk6IiAxIHsgdGFyZ2V0IHsgaT84 Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIl9aR1ZjTjR2X19aM2YxMElMaTBFRWlpOiIgMSB7IHRhcmdldCB7IGk/ODYt Ki0qIHg4Nl82NC0qLSogfSB9IH0gfQogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJfWkdWZE44dl9fWjNmMTBJTGkwRUVpaToiIDEgeyB0YXJnZXQgeyBpPzg2LSot KiB4ODZfNjQtKi0qIH0gfSB9IH0KQEAgLTE4MSw2ICsyMDcsOSBAQCB0ZW1wbGF0ZSBbW29t cDo6ZGlyZWN0aXZlIChkZWNsYXJlIHNpbWQsIG5vdGluYnJhbmNoKV1dIGludCBmMTA8MD4g KGludCk7CiAKIHRlbXBsYXRlICBpbnQgZjEwPDE+IFtbb21wOjpkaXJlY3RpdmUgKGRlY2xh cmUgc2ltZCBpbmJyYW5jaCBsaW5lYXIoeCkpXV0gKGludCB4KTsKIAorLy8geyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk0ybF9fWjNmMTBJTGkxRUVpaToiIDEg eyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJfWkdWbk00bF9fWjNmMTBJTGkxRUVpaToiIDEgeyB0YXJnZXQg eyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorCiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIl9aR1ZiTTRsX19aM2YxMElMaTFFRWlpOiIgMSB7IHRhcmdldCB7IGk/ODYt Ki0qIHg4Nl82NC0qLSogfSB9IH0gfQogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJfWkdWY000bF9fWjNmMTBJTGkxRUVpaToiIDEgeyB0YXJnZXQgeyBpPzg2LSot KiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAiX1pHVmRNOGxfX1ozZjEwSUxpMUVFaWk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSog eDg2XzY0LSotKiB9IH0gfSB9CkBAIC0xOTUsNiArMjI0LDkgQEAgZjExPDA+IChpbnQgeCkK ICAgcmV0dXJuIHg7CiB9CiAKKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAiX1pHVm5NMnZfX1ozZjExSUxpMEVFaWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0q IH0gfSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5N NHZfX1ozZjExSUxpMEVFaWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0K KwogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk00dl9fWjNm MTFJTGkwRUVpaToiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0K IC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNNNHZfX1ozZjEx SUxpMEVFaWk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAv LyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZkTTh2X19aM2YxMUlM aTBFRWlpOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpAQCAt MjA2LDYgKzIzOCw5IEBAIGYxMTwxPiBbW29tcDo6ZGlyZWN0aXZlIChkZWNsYXJlIHNpbWQs IG5vdGluYnJhbmNoLCBsaW5lYXIgKHkpKV1dIChpbnQgeSkKICAgcmV0dXJuIHk7CiB9CiAK Ky8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5OMmxfX1ozZjEx SUxpMUVFaWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5ONGxfX1ozZjExSUxpMUVFaWk6 IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKwogLy8geyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk40bF9fWjNmMTFJTGkxRUVpaToiIDEgeyB0 YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNONGxfX1ozZjExSUxpMUVFaWk6IiAxIHsgdGFy Z2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgIl9aR1ZkTjhsX19aM2YxMUlMaTFFRWlpOiIgMSB7IHRhcmdl dCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpAQCAtMjIzLDYgKzI1OCw5IEBAIFM6 OmYxMiAoaW50IHgpCiAgIHJldHVybiB4OwogfQogCisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIl9aR1ZuTTJ1dl9fWk4xUzNmMTJFaToiIDEgeyB0YXJnZXQgeyBh YXJjaDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJfWkdWbk0ydXZfX1pOMVMzZjEyRWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0q IH0gfSB9IH0KKwogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdW Yk00dXZfX1pOMVMzZjEyRWk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9 IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZjTTR1 dl9fWk4xUzNmMTJFaToiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9 IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmRNOHV2X19a TjFTM2YxMkVpOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXNpbWQtMS5D IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXNpbWQtMS5DCmluZGV4IDAw OTk2YjYwZTUyNzYwYmY5ZmU4MmRlN2IwYzQyYjljODQ2YzEyNzIuLjYxYTNiMzE3MDRkZDk5 N2Y2NTI2OGU5MWI0Y2JmMWI5YjA3ZTY3ZmQgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2dvbXAvZGVjbGFyZS1zaW1kLTEuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9nb21wL2RlY2xhcmUtc2ltZC0xLkMKQEAgLTE0LDcgKzE0LDkgQEAgaW50IGYyIChpbnQg YSwgaW50ICpiLCBpbnQgYykKICAgcmV0dXJuIGEgKyAqYiArIGM7CiB9CiAKLS8vIHsgZGct d2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUgdHlw ZXMgZm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4t NSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZuTjh1dmEz Mmw0X19aMmYyaVBpaToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorLy8g eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk04dXZhMzJsNF9fWjJm MmlQaWk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKwogLy8geyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk04dXZhMzJsNF9fWjJmMmlQaWk6 IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTjh1dmEzMmw0X19aMmYyaVBpaToi IDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNNOHV2YTMybDRfX1oyZjJpUGlpOiIg MSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpAQCAtODIsNiArODQs OSBAQCBuYW1lc3BhY2UgTjEKICAgfQogfQogCisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgIl9aR1ZuTjJ2YTE2X19aTjJOMTJOMjNmMTBFUHg6IiAxIHsgdGFyZ2V0 IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiX1pHVm5NMnZhMTZfX1pOMk4xMk4yM2YxMEVQeDoiIDEgeyB0YXJnZXQgeyBh YXJjaDY0Ki0qLSogfSB9IH0gfQorCiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgIl9aR1ZiTTJ2YTE2X19aTjJOMTJOMjNmMTBFUHg6IiAxIHsgdGFyZ2V0IHsgaT84 Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIl9aR1ZiTjJ2YTE2X19aTjJOMTJOMjNmMTBFUHg6IiAxIHsgdGFyZ2V0IHsg aT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgIl9aR1ZjTTJ2YTE2X19aTjJOMTJOMjNmMTBFUHg6IiAxIHsgdGFyZ2V0 IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CkBAIC0xOTMsOCArMTk4LDkgQEAgaW50 IEI8aW50Pjo6ZjI1PDc+IChpbnQgYSwgaW50ICpiLCBpbnQgYykKIHsKICAgcmV0dXJuIGEg KyAqYiArIGM7CiB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9a R1ZuTjh2dXZhMzJ1X19aTjFCSWlFM2YyNUlMaTdFRUVpaVBpaToiIDEgeyB0YXJnZXQgeyBh YXJjaDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJfWkdWbk04dnV2YTMydV9fWk4xQklpRTNmMjVJTGk3RUVFaWlQaWk6IiAxIHsgdGFy Z2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KIAotLy8geyBkZy13YXJuaW5nICJHQ0MgZG9l cyBub3QgY3VycmVudGx5IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0eXBlcyBmb3IgJ3NpbWQnIGZ1 bmN0aW9ucyIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gLi01IH0KIC8vIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmJNOHZ1dmEzMnVfX1pOMUJJaUUzZjI1 SUxpN0VFRWlpUGlpOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0g fQogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk44dnV2YTMy dV9fWk4xQklpRTNmMjVJTGk3RUVFaWlQaWk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2 XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Il9aR1ZjTTh2dXZhMzJ1X19aTjFCSWlFM2YyNUlMaTdFRUVpaVBpaToiIDEgeyB0YXJnZXQg eyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KQEAgLTIxMiw3ICsyMTgsOSBAQCBpbnQg QjxpbnQ+OjpmMjY8LTE+IChpbnQgYSwgaW50ICpiLCBpbnQgYykKICAgcmV0dXJuIGEgKyAq YiArIGM7CiB9CiAKLS8vIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBz dXBwb3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFy Z2V0IGFhcmNoNjQqLSotKiB9IC4tNSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIl9aR1ZuTjR2bDJ2YTMyX19aTjFCSWlFM2YyNklMaW4xRUVFaWlQaWk6IiAx IHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAiX1pHVm5NNHZsMnZhMzJfX1pOMUJJaUUzZjI2SUxpbjFFRUVp aVBpaToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorCiAvLyB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTTR2bDJ2YTMyX19aTjFCSWlFM2Yy NklMaW4xRUVFaWlQaWk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0g fSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTjR2bDJ2 YTMyX19aTjFCSWlFM2YyNklMaW4xRUVFaWlQaWk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSog eDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgIl9aR1ZjTTR2bDJ2YTMyX19aTjFCSWlFM2YyNklMaW4xRUVFaWlQaWk6IiAxIHsgdGFy Z2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CkBAIC0yNDQsNyArMjUyLDkgQEAg ZjMwIChpbnQgeCkKICAgcmV0dXJuIHg7CiB9CiAKLS8vIHsgZGctd2FybmluZyAiR0NDIGRv ZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IHNpbWRsZW4gMTYgZm9yIHR5cGUgJ2ludCciICIi IHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4tNyB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIl9aR1ZuTjE2dl9fWjNmMzBpOiIgMSB7IHRhcmdldCB7IGFhcmNo NjQqLSotKiB9IH0gfSB9CisvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Il9aR1ZuTTE2dl9fWjNmMzBpOiIgMSB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9 CisKIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmJNMTZ2X19a M2YzMGk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTjE2dl9fWjNmMzBpOiIg MSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQogLy8geyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWY00xNnZfX1ozZjMwaToiIDEgeyB0YXJn ZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KQEAgLTI4Nyw3ICsyOTcsNiBAQCBz dHJ1Y3QgRAogICBpbnQgZjM3IChpbnQgYSk7CiAgIGludCBlOwogfTsKLS8vIHsgZGctd2Fy bmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUgdHlwZXMg Zm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4tMyB9 CiAKIHZvaWQKIGYzOCAoRCAmZCkKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2dvbXAvZGVjbGFyZS1zaW1kLTMuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvZGVj bGFyZS1zaW1kLTMuQwppbmRleCBlZTRhYjZmZWJkMGRmYzcyN2U1N2ZjZTk0MzhiMmU5MDAx MDc1MTU1Li5kODlkOWE3Y2Y2YjVhY2E0ZDY5ZDgxOWFiYmQ5NzVhNzc3M2FiODI0IDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL2RlY2xhcmUtc2ltZC0zLkMKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXNpbWQtMy5DCkBAIC0xMyw3 ICsxMywxMSBAQCBpbnQgZjEgKGludCBhLCBpbnQgYiwgaW50IGMsIGludCAmZCwgaW50ICZl LCBpbnQgJmYpCiAgIHJldHVybiBhICsgYiArIGMgKyBkICsgZSArIGY7CiB9CiAKLS8vIHsg ZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUg dHlwZXMgZm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9 IC4tMTEgfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk4y dnVsTFVSNF9fWjJmMWlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9 IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk0ydnVs TFVSNF9fWjJmMWlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0g fQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk40dnVsTFVS NF9fWjJmMWlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfQor Ly8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk00dnVsTFVSNF9f WjJmMWlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorCiAv LyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTTR2dWxMVVI0X19a MmYxaWlpUmlTX1NfOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0g fQogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk40dnVsTFVS NF9fWjJmMWlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0g fSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNNNHZ1 bExVUjRfX1oyZjFpaWlSaVNfU186IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSot KiB9IH0gfSB9CkBAIC00Miw3ICs0NiwxMSBAQCBpbnQgZjIgKGludCBhLCBpbnQgYiwgaW50 IGMsIGludCAmZCwgaW50ICZlLCBpbnQgJmYpCiAgIHJldHVybiBhICsgYiArIGMgKyBkICsg ZSArIGY7CiB9CiAKLS8vIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBz dXBwb3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFy Z2V0IGFhcmNoNjQqLSotKiB9IC4tMTcgfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJfWkdWbk4ydnVsTFVSNF9fWjJmMmlpaVJpU19TXzoiIDEgeyB0YXJnZXQg eyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJfWkdWbk0ydnVsTFVSNF9fWjJmMmlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBh YXJjaDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJfWkdWbk40dnVsTFVSNF9fWjJmMmlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBhYXJj aDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJfWkdWbk00dnVsTFVSNF9fWjJmMmlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBhYXJjaDY0 Ki0qLSogfSB9IH0gfQorCiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Il9aR1ZiTTR2dWxMVVI0X19aMmYyaWlpUmlTX1NfOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0q IHg4Nl82NC0qLSogfSB9IH0gfQogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJfWkdWYk40dnVsTFVSNF9fWjJmMmlpaVJpU19TXzoiIDEgeyB0YXJnZXQgeyBpPzg2 LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiX1pHVmNNNHZ1bExVUjRfX1oyZjJpaWlSaVNfU186IiAxIHsgdGFyZ2V0IHsg aT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CkBAIC01OCw3ICs2NiwxMSBAQCBpbnQgZjMg KGNvbnN0IGludCBhLCBjb25zdCBpbnQgYiwgY29uc3QgaW50IGMsIGNvbnN0IGludCAmZCwg Y29uc3QgaW50ICZlLCBjb25zdAogICByZXR1cm4gYSArIGIgKyBjICsgZCArIGUgKyBmOwog fQogCi0vLyB7IGRnLXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBt aXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJj aDY0Ki0qLSogfSAuLTUgfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJfWkdWbk4ydnVsTFVSNF9fWjJmM2lpaVJLaVMwX1MwXzoiIDEgeyB0YXJnZXQgeyBhYXJj aDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJfWkdWbk0ydnVsTFVSNF9fWjJmM2lpaVJLaVMwX1MwXzoiIDEgeyB0YXJnZXQgeyBhYXJj aDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJfWkdWbk40dnVsTFVSNF9fWjJmM2lpaVJLaVMwX1MwXzoiIDEgeyB0YXJnZXQgeyBhYXJj aDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJfWkdWbk00dnVsTFVSNF9fWjJmM2lpaVJLaVMwX1MwXzoiIDEgeyB0YXJnZXQgeyBhYXJj aDY0Ki0qLSogfSB9IH0gfQorCiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGlt ZXMgIl9aR1ZiTTR2dWxMVVI0X19aMmYzaWlpUktpUzBfUzBfOiIgMSB7IHRhcmdldCB7IGk/ ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJfWkdWYk40dnVsTFVSNF9fWjJmM2lpaVJLaVMwX1MwXzoiIDEgeyB0YXJn ZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyAiX1pHVmNNNHZ1bExVUjRfX1oyZjNpaWlSS2lTMF9TMF86IiAx IHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CkBAIC04MCw3ICs5Miwx MSBAQCBpbnQgZjQgKGNvbnN0IGludCBhLCBjb25zdCBpbnQgYiwgY29uc3QgaW50IGMsIGNv bnN0IGludCAmZCwgY29uc3QgaW50ICZlLCBjb25zdAogICByZXR1cm4gYSArIGIgKyBjICsg ZCArIGUgKyBmOwogfQogCi0vLyB7IGRnLXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50 bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7 IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAuLTExIH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiX1pHVm5OMnZ1bExVUjRfX1oyZjRpaWlSS2lTMF9TMF86IiAxIHsg dGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiX1pHVm5NMnZ1bExVUjRfX1oyZjRpaWlSS2lTMF9TMF86IiAxIHsg dGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiX1pHVm5ONHZ1bExVUjRfX1oyZjRpaWlSS2lTMF9TMF86IiAxIHsg dGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKy8vIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAiX1pHVm5NNHZ1bExVUjRfX1oyZjRpaWlSS2lTMF9TMF86IiAxIHsg dGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKwogLy8geyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzICJfWkdWYk00dnVsTFVSNF9fWjJmNGlpaVJLaVMwX1MwXzoiIDEg eyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmJONHZ1bExVUjRfX1oyZjRpaWlSS2lTMF9T MF86IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZjTTR2dWxMVVI0X19aMmY0aWlp UktpUzBfUzBfOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXNpbWQtNC5D IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXNpbWQtNC5DCmluZGV4IGQ3 NmRlZmJjOTMzMTllOTRlMjMwODYyNTBkZWZjNjU3NThhZjE4ZmMuLmE2NzExMDhjZDlkYWZk OWJlODA2YmRjMjgxZTAxN2M3MTI0NThlY2UgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2dvbXAvZGVjbGFyZS1zaW1kLTQuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9nb21wL2RlY2xhcmUtc2ltZC00LkMKQEAgLTUsNyArNSwxMSBAQCBmMSAoaW50ICpwLCBp bnQgKnEsIHNob3J0ICpzKQogICByZXR1cm4gKnAgKyAqcSArICpzOwogfQogCi0vLyB7IGRn LXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5 cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAu LTUgfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk40bDRs bjRsbjZfX1oyZjFQaVNfUHM6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0K Ky8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5NNGw0bG40bG42 X19aMmYxUGlTX1BzOiIgMSB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9CisvLyB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZuTjhsNGxuNGxuNl9fWjJm MVBpU19QczoiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfQorLy8geyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk04bDRsbjRsbjZfX1oyZjFQaVNf UHM6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKwogLy8geyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk00bDRsbjRsbjZfX1oyZjFQaVNfUHM6 IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTjRsNGxuNGxuNl9fWjJmMVBpU19Q czoiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNNNGw0bG40bG42X19aMmYxUGlT X1BzOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpAQCAtMjIs NyArMjYsOCBAQCBmMiAoaW50ICpwLCBzaG9ydCAqcSwgaW50IHMsIGludCByLCBpbnQgJnQp CiAgIHJldHVybiAqcCArICpxICsgcjsKIH0KIAotLy8geyBkZy13YXJuaW5nICJHQ0MgZG9l cyBub3QgY3VycmVudGx5IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0eXBlcyBmb3IgJ3NpbWQnIGZ1 bmN0aW9ucyIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gLi01IH0KKy8vIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5OOGxzMmxzNHVsczJ1X19aMmYyUGlQ c2lpUmk6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KKwogLy8geyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk44bHMybHM0dWxzMnVfX1oyZjJQ aVBzaWlSaToiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8v IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNOOGxzMmxzNHVsczJ1 X19aMmYyUGlQc2lpUmk6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0g fSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZkTjhsczJs czR1bHMydV9fWjJmMlBpUHNpaVJpOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0q LSogfSB9IH0gfQpAQCAtMzUsNyArNDAsOCBAQCBmMyAoaW50ICZwLCBzaG9ydCAmcSwgaW50 IHMsIGludCAmciwgaW50ICZ0KQogICByZXR1cm4gcCArIHEgKyByOwogfQogCi0vLyB7IGRn LXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5 cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAu LTUgfQorLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWbk44UnMy THM0dVVzMnVfX1oyZjNSaVJzaVNfU186IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0g fSB9IH0KKwogLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk44 UnMyTHM0dVVzMnVfX1oyZjNSaVJzaVNfU186IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2 XzY0LSotKiB9IH0gfSB9CiAvLyB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Il9aR1ZjTjhSczJMczR1VXMydV9fWjJmM1JpUnNpU19TXzoiIDEgeyB0YXJnZXQgeyBpPzg2 LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0KIC8vIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAiX1pHVmROOFJzMkxzNHVVczJ1X19aMmYzUmlSc2lTX1NfOiIgMSB7IHRhcmdl dCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXNpbWQtNy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvZ29tcC9kZWNsYXJlLXNpbWQtNy5DCmluZGV4IDM3M2JlMjhlYmQzMjViMjU0YjFmNDY3 YzJhZDc2MTQ3OWUyNjY4NWIuLjUyZTlmMTgyZGEzNWM5MjBkNzhlNjRkYThlZTU2Y2ZkYWJh ZWE1NDEgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvZGVjbGFyZS1z aW1kLTcuQworKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9nb21wL2RlY2xhcmUtc2ltZC03 LkMKQEAgLTE4LDcgKzE4LDYgQEAgZm9vMSAoaW50IGEsIGludCBiLCBmbG9hdCBjLCBTIGQs IGludCAqZSwgaW50IGYsIGludCAmZywgaW50ICZoLCBpbnQgJmksIGludCBqLAogewogICBy ZXR1cm4gYmFyMSAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgayk7CiB9Ci0vLyB7 IGRnLXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXpl IHR5cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSog fSAuLTQgfQogCiAjcHJhZ21hIG9tcCBkZWNsYXJlIHNpbWQgaW5icmFuY2ggdW5pZm9ybSAo YiwgYywgZCwgZSkgYWxpZ25lZCAoZSA6IDE2KSBcCiAJCSAgICBsaW5lYXIgKGYgOiAyKSBs aW5lYXIgKHJlZiAoZykgOiAxKSBcCkBAIC0yOSw3ICsyOCw2IEBAIGZvbzIgKGludCBhLCBp bnQgYiwgZmxvYXQgYywgUyBkLCBpbnQgKmUsIGludCBmLCBpbnQgJmcsIGludCAmaCwgaW50 ICZpLCBpbnQgaiwKIHsKICAgcmV0dXJuIGJhcjIgKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgs IGksIGosIGspOwogfQotLy8geyBkZy13YXJuaW5nICJHQ0MgZG9lcyBub3QgY3VycmVudGx5 IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0eXBlcyBmb3IgJ3NpbWQnIGZ1bmN0aW9ucyIgIiIgeyB0 YXJnZXQgYWFyY2g2NCotKi0qIH0gLi00IH0KIAogI3ByYWdtYSBvbXAgZGVjbGFyZSBzaW1k IG5vdGluYnJhbmNoIHVuaWZvcm0gKGIsIGMsIGQsIGUpIGFsaWduZWQgKGUgOiAxNikgXAog CQkgICAgbGluZWFyIChmIDogMikgbGluZWFyIChyZWYgKGcpIDogMSkgXApAQCAtNDAsNyAr MzgsNiBAQCBmb28zIChpbnQgYSwgaW50IGIsIGZsb2F0IGMsIFMgZCwgaW50ICplLCBpbnQg ZiwgaW50ICZnLCBpbnQgJmgsIGludCAmaSwgaW50IGosCiB7CiAgIHJldHVybiBiYXIzIChh LCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrKTsKIH0KLS8vIHsgZGctd2FybmluZyAi R0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdz aW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4tNCB9CiAKICNw cmFnbWEgb21wIGRlY2xhcmUgc2ltZCBpbmJyYW5jaCB1bmlmb3JtIChiLCBjLCBkLCBlKSBh bGlnbmVkIChlIDogMTYpIFwKIAkJICAgIGxpbmVhciAoZiA6IDIpIGxpbmVhciAocmVmIChn KSA6IDEpIFwKQEAgLTUxLDQgKzQ4LDMgQEAgZm9vNCAoaW50IGEsIGludCBiLCBmbG9hdCBj LCBTIGQsIGludCAqZSwgaW50IGYsIGludCAmZywgaW50ICZoLCBpbnQgJmksIGludCBqLAog ewogICByZXR1cm4gYmFyNCAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgayk7CiB9 Ci0vLyB7IGRnLXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhl ZCBzaXplIHR5cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJjaDY0 Ki0qLSogfSAuLTQgfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9k ZWNsYXJlLXNpbWQtOC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9kZWNsYXJlLXNp bWQtOC5DCmluZGV4IGVmMTgzMTM2ODMzYTk5N2UyMDA5YWYzNjdhY2I1NzVlMDJjYjViMjIu LjAxYzkxZTg5MDkxNDMxNWNjZDUwZTExY2JlYjVmZjc1ODE0OTFhN2QgMTAwNjQ0Ci0tLSBh L2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvZGVjbGFyZS1zaW1kLTguQworKysgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9nb21wL2RlY2xhcmUtc2ltZC04LkMKQEAgLTQsNyArNCw2IEBA IHRlbXBsYXRlIDxpbnQgTiwgdHlwZW5hbWUgVD4KIHN0cnVjdCBTIHsKICAgI3ByYWdtYSBv bXAgZGVjbGFyZSBzaW1kIGFsaWduZWQoYSA6IE4gKiAyKSBhbGlnbmVkKGIpIGxpbmVhcihy ZWYoYik6IE4pCiAgIGZsb2F0IGZvbyAoZmxvYXQgKmEsIFQgKiZiKSB7IHJldHVybiAqYSAr ICpiOyB9Ci0gIC8vIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBw b3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0 IGFhcmNoNjQqLSotKiB9IC4tMSB9CiB9OwogCiBTPDE2LCBmbG9hdD4gczsKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2dvbXAvcHI4ODE4Mi5DIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvZ29tcC9wcjg4MTgyLkMKaW5kZXggNTA0ZjUwMzc2NDA4NTQzZDRiYmNlNTVk YmNjOGYwZjA2YjBmZDgwNS4uNmVlZWVkOWZmZjc3OTJkYWEwNTM2MjJlMzdjODU0ODY1MGNl ODdkMyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9wcjg4MTgyLkMK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZ29tcC9wcjg4MTgyLkMKQEAgLTE4LDcgKzE4 LDYgQEAgZm9vIChkb3VibGUgYzEsIGRvdWJsZSBjMikKICAgICB9CiAgIHJldHVybiByZXM7 CiB9Ci0vLyB7IGRnLXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBt aXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJj aDY0Ki0qLSogfSAuLTE1IH0KIAogX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vY2xvbmUp KSB2b2lkCiBiYXIgKGRvdWJsZSAqeCwgZG91YmxlICp5KQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvZGVjbGFyZS1zaW1kLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9k ZWNsYXJlLXNpbWQuYwppbmRleCAyYzhjMWI3ZGE0ZjMyNDljNzE0ODQ5ZmEyMjZiZmEyZmU2 NGEyYjg4Li4xYzcxYjYwYzk3NDI3NzA1ZTI3NTEwODhlMjQ4NDBlMjYxM2I0ZjAzIDEwMDY0 NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9kZWNsYXJlLXNpbWQuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy5kZy9kZWNsYXJlLXNpbWQuYwpAQCAtMyw3ICszLDYgQEAKIAogI3By YWdtYSBvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAocDIsIHAzKQogZXh0ZXJuIHZvaWQgZm4y IChmbG9hdCBwMSwgZmxvYXQgKnAyLCBmbG9hdCAqcDMpOwotLyogeyBkZy13YXJuaW5nICJH Q0MgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0eXBlcyBmb3IgJ3Np bWQnIGZ1bmN0aW9ucyIgIiIgeyB0YXJnZXQgeyB7IGFhcmNoNjQqLSotKiB9ICYmIGxwNjQg fSB9IC4tMSB9ICovCiAKIGZsb2F0ICphLCAqYjsKIHZvaWQgZm4xIChmbG9hdCAqcDEpCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL2RlY2xhcmUtc2ltZC0xLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL2RlY2xhcmUtc2ltZC0xLmMKaW5kZXggYWRk MzIyODczZTY0NTkwZmYzMTg3ZjIwOTA3Njg3ZWYzNDk5MWZjYi4uYjhiYmExZjg5MmI2ZDFm YjY4ODVhNDdmNGI3ZWY3OGY3Y2FiYTdlZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvZ29tcC9kZWNsYXJlLXNpbWQtMS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2dvbXAvZGVjbGFyZS1zaW1kLTEuYwpAQCAtMTMsNyArMTMsNiBAQCBpbnQgZjIgKGludCBh LCBpbnQgKmIsIGludCBjKQogICByZXR1cm4gYSArICpiICsgYzsKIH0KIAotLyogeyBkZy13 YXJuaW5nICJHQ0MgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0eXBl cyBmb3IgJ3NpbWQnIGZ1bmN0aW9uIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAuLTUg fSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk04dXZh MzJsNF9mMjoiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0gKi8K IC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmJOOHV2YTMybDRf ZjI6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9ICovCiAvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZjTTh1dmEzMmw0X2YyOiIg MSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfSAqLwpAQCAtNTAsNyAr NDksNiBAQCBmNyAoaW50IHgpCiAgIHJldHVybiB4OwogfQogCi0vKiB7IGRnLXdhcm5pbmcg IkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBzaW1kbGVuIDE2IGZvciB0eXBlICdp bnQnIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAuLTcgfSAqLwogLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk0xNnZfZjc6IiAxIHsgdGFyZ2V0IHsg aT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIl9aR1ZiTjE2dl9mNzoiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4 ODZfNjQtKi0qIH0gfSB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAiX1pHVmNNMTZ2X2Y3OiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSog fSB9IH0gfSAqLwpAQCAtNzAsNyArNjgsNiBAQCBmMTMgKGludCBjOyBpbnQgKmI7IGludCBh OyBpbnQgYSwgaW50ICpiLCBpbnQgYykKICAgcmV0dXJuIGEgKyAqYiArIGM7CiB9CiAKLS8q IHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNp emUgdHlwZXMgZm9yICdzaW1kJyBmdW5jdGlvbiIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0q IH0gLi01IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pH VmJNOHV2YTMybDRfZjEzOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9 IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk44 dXZhMzJsNF9mMTM6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9 ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZjTTh1dmEz Mmw0X2YxMzoiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0gKi8K QEAgLTg5LDcgKzg2LDYgQEAgZjE0IChhLCBiLCBjKQogICByZXR1cm4gYSArICpiICsgYzsK IH0KIAotLyogeyBkZy13YXJuaW5nICJHQ0MgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQg bWl4ZWQgc2l6ZSB0eXBlcyBmb3IgJ3NpbWQnIGZ1bmN0aW9uIiAiIiB7IHRhcmdldCBhYXJj aDY0Ki0qLSogfSAuLTcgfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJfWkdWYk04dXZhMzJsNF9mMTQ6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0 LSotKiB9IH0gfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Il9aR1ZiTjh1dmEzMmw0X2YxNDoiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0q IH0gfSB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pH VmNNOHV2YTMybDRfZjE0OiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9 IH0gfSAqLwpAQCAtMTA2LDcgKzEwMiw2IEBAIGYxNSAoaW50IGEsIGludCAqYiwgaW50IGMp CiAgIHJldHVybiBhICsgKmIgKyBjOwogfQogCi0vKiB7IGRnLXdhcm5pbmcgIkdDQyBkb2Vz IG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcgZnVu Y3Rpb24iICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4tNSB9ICovCiAvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTTh1dmEzMmw0X2YxNToiIDEgeyB0 YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0gKi8KIC8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmJOOHV2YTMybDRfZjE1OiIgMSB7IHRhcmdl dCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWY004dXZhMzJsNF9mMTU6IiAxIHsgdGFyZ2V0IHsg aT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9ICovCkBAIC0xMjgsNyArMTIzLDYgQEAgaW50 IGYxNyAoaW50IGcsIGxvbmcgKmgpCiAgIHJldHVybiBnICsgaFswXTsKIH0KIAotLyogeyBk Zy13YXJuaW5nICJHQ0MgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0 eXBlcyBmb3IgJ3NpbWQnIGZ1bmN0aW9uIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAu LTUgfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk00 bDIwdmE4X2YxNzoiIDEgeyB0YXJnZXQgeyB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSAmJiBs cDY0IH0gfSB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi X1pHVmJONGwyMHZhOF9mMTc6IiAxIHsgdGFyZ2V0IHsgeyBpPzg2LSotKiB4ODZfNjQtKi0q IH0gJiYgbHA2NCB9IH0gfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgIl9aR1ZjTTRsMjB2YThfZjE3OiIgMSB7IHRhcmdldCB7IHsgaT84Ni0qLSogeDg2 XzY0LSotKiB9ICYmIGxwNjQgfSB9IH0gfSAqLwpAQCAtMTU1LDcgKzE0OSw2IEBAIGYxOCAo aiwgaSkKICAgcmV0dXJuIGogKyBpWzBdOwogfQogCi0vKiB7IGRnLXdhcm5pbmcgIkdDQyBk b2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcg ZnVuY3Rpb24iICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4tNyB9ICovCiAvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZiTTRsMjB2YThfZjE4OiIgMSB7 IHRhcmdldCB7IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9ICYmIGxwNjQgfSB9IH0gfSAqLwog LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk40bDIwdmE4X2Yx ODoiIDEgeyB0YXJnZXQgeyB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSAmJiBscDY0IH0gfSB9 IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVmNNNGwy MHZhOF9mMTg6IiAxIHsgdGFyZ2V0IHsgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gJiYgbHA2 NCB9IH0gfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL2Rl Y2xhcmUtc2ltZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL2RlY2xhcmUtc2lt ZC0zLmMKaW5kZXggYmYwMWMwMjM1NDFhZTIxMDBmNjM4ODc5MDFmNGYzMzBmYmYxYTEyZi4u NzEyNDFkMjU2OWExNDlkODI4ZTk3MDJkNzFmYmE2NWQ3NDk3ZDBjMiAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC9kZWNsYXJlLXNpbWQtMy5jCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvZGVjbGFyZS1zaW1kLTMuYwpAQCAtNCw4ICs0LDEwIEBA IGYxIChpbnQgKnAsIGludCAqcSwgc2hvcnQgKnMpCiB7CiAgIHJldHVybiAqcCArICpxICsg KnM7CiB9Ci0KLS8qIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBw b3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0 IGFhcmNoNjQqLSotKiB9IC4tNSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgIl9aR1ZuTTRsNGxuNGxuNl9mMToiIDEgeyB0YXJnZXQgeyBhYXJjaDY0Ki0q LSogfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJf WkdWbk40bDRsbjRsbjZfZjE6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pHVm5NOGw0bG40 bG42X2YxOiIgMSB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1ZuTjhsNGxuNGxuNl9mMToiIDEg eyB0YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJfWkdWYk00bDRsbjRsbjZfZjE6IiAxIHsgdGFyZ2V0IHsg aT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIl9aR1ZiTjRsNGxuNGxuNl9mMToiIDEgeyB0YXJnZXQgeyBpPzg2 LSotKiB4ODZfNjQtKi0qIH0gfSB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAiX1pHVmNNNGw0bG40bG42X2YxOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0q IHg4Nl82NC0qLSogfSB9IH0gfSAqLwpAQCAtMjIsNyArMjQsNyBAQCBmMiAoaW50ICpwLCBz aG9ydCAqcSwgaW50IHMsIGludCByLCBpbnQgdCkKICAgcmV0dXJuICpwICsgKnEgKyByOwog fQogCi0vKiB7IGRnLXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBt aXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJj aDY0Ki0qLSogfSAuLTUgfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJfWkdWbk44bHMybHM0dWxzMnVfZjI6IiAxIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0q IH0gfSB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiX1pH VmJOOGxzMmxzNHVsczJ1X2YyOiIgMSB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSog fSB9IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJfWkdW Y044bHMybHM0dWxzMnVfZjI6IiAxIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9 IH0gfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIl9aR1Zk TjhsczJsczR1bHMydV9mMjoiIDEgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0g fSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvcHI4Nzg4 Ny0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL3ByODc4ODctMS5jCmluZGV4IDhi MDRmZmQwODA5YmU0ZTZmNWFiOTdjMmUzMmU4MDBlZGZmYmVlNGYuLjZlMTQzYWEwYjVhYTVm ZjlhOWUxMzI5OGZkNDQwNTkzNzdiYzRmMmUgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2dvbXAvcHI4Nzg4Ny0xLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29t cC9wcjg3ODg3LTEuYwpAQCAtMTAsNiArMTAsNyBAQCBmb28gKGludCB4KQogewogICByZXR1 cm4gKHN0cnVjdCBTKSB7IHggfTsKIH0KKy8qIHsgZGctd2FybmluZyAidW5zdXBwb3J0ZWQg cmV0dXJuIHR5cGUg4oCYc3RydWN0IFPigJkgZm9yIOKAmHNpbWTigJkgZnVuY3Rpb25zIiB7 IHRhcmdldCBhYXJjaDY0Ki0qLSogfSAuLTQgfSAqLwogCiAjcHJhZ21hIG9tcCBkZWNsYXJl IHNpbWQKIGludApAQCAtMTcsNiArMTgsNyBAQCBiYXIgKHN0cnVjdCBTIHgpCiB7CiAgIHJl dHVybiB4Lm47CiB9CisvKiB7IGRnLXdhcm5pbmcgInVuc3VwcG9ydGVkIGFyZ3VtZW50IHR5 cGUg4oCYc3RydWN0IFPigJkgZm9yIOKAmHNpbWTigJkgZnVuY3Rpb25zIiB7IHRhcmdldCBh YXJjaDY0Ki0qLSogfSAuLTQgfSAqLwogCiAjcHJhZ21hIG9tcCBkZWNsYXJlIHNpbWQgdW5p Zm9ybSAoeCkKIGludApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC9w cjg3ODk1LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvcHI4Nzg5NS0xLmMKaW5k ZXggNzMzOGYxOGQxOTIwNzJjNDQ0Nzk1N2YzZjIwYTMyNTQ1Yzk2MWQ3Zi4uMjJmNWM2OTE0 MTY0NzBkNmUwYjliMDJjOTdlNTE5MzU2YmQzOTEyMyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvZ29tcC9wcjg3ODk1LTEuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9nb21wL3ByODc4OTUtMS5jCkBAIC0xNyw0ICsxNywzIEBAIGJhciAoaW50ICp4LCBpbnQg eSkKICAgaWYgKCh5ID09IDApID8gKCp4ID0gMCkgOiAqeCkKICAgICByZXR1cm4gMDsKIH0K LS8qIHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVk IHNpemUgdHlwZXMgZm9yICdzaW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQq LSotKiB9IC4tNSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21w L3ByODkyNDYtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvZ29tcC9wcjg5MjQ2LTEuYwpp bmRleCBkZmU2MjljMWM2YTUxNjI0Y2Q5NDg3OGM2Mzg2MDYyMjBjZmU5NGViLi5jZGFlYzZi Mzg1MTY5ZmM1ZWJiNzFkY2E0OGVmMTBjNjRjMmNlY2ZhIDEwMDY0NAotLS0gYS9nY2MvdGVz dHN1aXRlL2djYy5kZy9nb21wL3ByODkyNDYtMS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2dvbXAvcHI4OTI0Ni0xLmMKQEAgLTgsNiArOCw3IEBAIGludCBmb28gKF9faW50MTI4 IHgpCiB7CiAgIHJldHVybiB4OwogfQorLyogeyBkZy13YXJuaW5nICJ1bnN1cHBvcnRlZCBh cmd1bWVudCB0eXBlIOKAmF9faW50MTI44oCZIGZvciDigJhzaW1k4oCZIGZ1bmN0aW9ucyIg eyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gLi00IH0gKi8KIAogI3ByYWdtYSBvbXAgZGVjbGFy ZSBzaW1kCiBleHRlcm4gaW50IGJhciAoaW50IHgpOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvZ29tcC9wcjk5NTQyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21w L3ByOTk1NDIuYwppbmRleCBiNjdmZjVhMzdhMjBmZGMyNzkxYjBhYTkyNTRhMThkNWFjNDMy NDdlLi5mMzhlMjFkYTE4NTgwNzk4YmQyNzg5YzQzN2NiMDc0N2RhMzE3ZWZiIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL3ByOTk1NDIuYworKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9nb21wL3ByOTk1NDIuYwpAQCAtMyw4ICszLDggQEAKIC8qIHsgZGct b3B0aW9ucyAiLU8wIC1mb3Blbm1wLXNpbWQiIH0gKi8KIAogI3ByYWdtYSBvbXAgZGVjbGFy ZSBzaW1kCi1leHRlcm4gaW50IGZvbyAoX19pbnQxMjggeCk7CS8qIHsgZGctd2FybmluZyAi R0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdz aW1kJyBmdW5jdGlvbiIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfSAqLwotLyogeyBk Zy13YXJuaW5nICJ1bnN1cHBvcnRlZCBhcmd1bWVudCB0eXBlICdfX2ludDEyOCcgZm9yIHNp bWQiICIiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSAuLTEgfSAqLworZXh0ZXJu IGludCBmb28gKF9faW50MTI4IHgpOworLyogeyBkZy13YXJuaW5nICJ1bnN1cHBvcnRlZCBh cmd1bWVudCB0eXBlICdfX2ludDEyOCcgZm9yIHNpbWQiICIiIHsgdGFyZ2V0IGk/ODYtKi0q IHg4Nl82NC0qLSogYWFyY2g2NCotKi0qIH0gLi0xIH0gKi8KIAogI3ByYWdtYSBvbXAgZGVj bGFyZSBzaW1kIHVuaWZvcm0gKHgpCiBleHRlcm4gaW50IGJheiAoX19pbnQxMjggeCk7CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9nb21wL3NpbWQtY2xvbmVzLTIuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2dvbXAvc2ltZC1jbG9uZXMtMi5jCmluZGV4IDlmN2M4 NGRjNzBiYTQ3NzBjNWY2M2Y4YWY4NjNlNTU3NzYwOGQ5YTguLjVmZTQwNjljMDFjMTk5YTc4 YzVmMDc2ZjVhOGVkMTAzMWRhNTFjZWMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2dvbXAvc2ltZC1jbG9uZXMtMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2dv bXAvc2ltZC1jbG9uZXMtMi5jCkBAIC02LDcgKzYsNiBAQCBpbnQgYWRkaXQoaW50IGEsIGlu dCBiLCBpbnQgKmMpCiB7CiAgIHJldHVybiBhICsgYjsKIH0KLS8qIHsgZGctd2FybmluZyAi R0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdz aW1kJyBmdW5jdGlvbnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IC4tNCB9ICovCiAv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgeyg/bileX19hdHRyaWJ1dGVfX1woXChv bXAgZGVjbGFyZSBzaW1kIFwobm90aW5icmFuY2ggYWxpZ25lZFwoMjozMlwpXCksIG9tcCBk ZWNsYXJlIHNpbWQgXChpbmJyYW5jaCB1bmlmb3JtXCgyXCkgbGluZWFyXCgxOjY2XClcKVwp XCkkfSAib3B0aW1pemVkIiB9IH0gKi8KIAogI3ByYWdtYSBvbXAgZGVjbGFyZSBzaW1kIHVu aWZvcm0oYSkgYWxpZ25lZChhOjMyKSBsaW5lYXIoazoxKSBub3RpbmJyYW5jaApAQCAtMTcs NiArMTYsMTMgQEAgZmxvYXQgc2V0QXJyYXkoZmxvYXQgKmEsIGZsb2F0IHgsIGludCBrKQog fQogLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wIHsoP24pXl9fYXR0cmlidXRlX19c KFwob21wIGRlY2xhcmUgc2ltZCBcKG5vdGluYnJhbmNoIHVuaWZvcm1cKDBcKSBhbGlnbmVk XCgwOjMyXCkgbGluZWFyXCgyOjFcKVwpXClcKSR9ICJvcHRpbWl6ZWQiIH0gfSAqLwogCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9aR1ZuTjJ1YTMydmxfc2V0QXJyYXki ICJvcHRpbWl6ZWQgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9aR1ZuTjR1YTMydmxfc2V0QXJyYXkiICJvcHRpbWl6 ZWQgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgIl9aR1ZuTjJ2dnZhMzJfYWRkaXQiICJvcHRpbWl6ZWQgeyB0YXJnZXQg YWFyY2g2NCotKi0qIH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg Il9aR1ZuTjR2dnZhMzJfYWRkaXQiICJvcHRpbWl6ZWQgeyB0YXJnZXQgYWFyY2g2NCotKi0q IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9aR1ZuTTJ2bDY2 dV9hZGRpdCIgIm9wdGltaXplZCB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiX1pHVm5NNHZsNjZ1X2FkZGl0IiAib3B0 aW1pemVkIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IH0gfSAqLworCiAvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgIl9aR1ZiTjR1YTMydmxfc2V0QXJyYXkiICJvcHRpbWl6ZWQi IHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KIC8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcCAiX1pHVmJONHZ2dmEzMl9hZGRpdCIgIm9wdGltaXplZCIgeyB0 YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJfWkdWYk00dmw2NnVfYWRkaXQiICJvcHRpbWl6ZWQiIHsgdGFyZ2V0 IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9kZWNsYXJlLXNpbWQtMi5mOTAgYi9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvZGVjbGFyZS1zaW1kLTIuZjkwCmluZGV4IGJiZjcwZDk2NjRh NzQ2MDFiZWQxZDMzNTJjMGMzMzE0NWU4ZmM4ZTcuLjhmNzY3NzRmZDZlMGNjM2E0ZWUzMjcx NjE0OTY1MjQzOTI4MzMxNzkgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvZ29tcC9kZWNsYXJlLXNpbWQtMi5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2RlY2xhcmUtc2ltZC0yLmY5MApAQCAtMSw2ICsxLDYgQEAKICEgeyBkZy1k byBjb21waWxlIH0KIAotZnVuY3Rpb24gZjEgKGEsIGIsIGMsIGQsIGUsIGYpICEgeyBkZy13 YXJuaW5nICJHQ0MgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0eXBl cyBmb3IgJ3NpbWQnIGZ1bmN0aW9ucyIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfQor ZnVuY3Rpb24gZjEgKGEsIGIsIGMsIGQsIGUsIGYpCiAgIGludGVnZXIsIHZhbHVlIDo6IGEs IGIsIGMKICAgaW50ZWdlciA6OiBkLCBlLCBmLCBmMQogISRvbXAgZGVjbGFyZSBzaW1kIChm MSkgdW5pZm9ybShiKSBsaW5lYXIoYywgZCkgbGluZWFyKHV2YWwoZSkpIGxpbmVhcihyZWYo ZikpCkBAIC0xMiw3ICsxMiw3IEBAIGZ1bmN0aW9uIGYxIChhLCBiLCBjLCBkLCBlLCBmKSAh IHsgZGctd2FybmluZyAiR0NDIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IG1pCiAgIGYg PSBmICsgMQogICBmMSA9IGEgKyBiICsgYyArIGQgKyBlICsgZgogZW5kIGZ1bmN0aW9uIGYx Ci1pbnRlZ2VyIGZ1bmN0aW9uIGYyIChhLCBiKSAhIHsgZGctd2FybmluZyAiR0NDIGRvZXMg bm90IGN1cnJlbnRseSBzdXBwb3J0IG1peGVkIHNpemUgdHlwZXMgZm9yICdzaW1kJyBmdW5j dGlvbnMiICIiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IH0KK2ludGVnZXIgZnVuY3Rpb24g ZjIgKGEsIGIpCiAgIGludGVnZXIgOjogYSwgYgogISRvbXAgZGVjbGFyZSBzaW1kIHVuaWZv cm0oYikgbGluZWFyKHJlZihhKTpiKQogICBhID0gYSArIDEKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9kZWNsYXJlLXNpbWQtY29hcnJheS1saWIuZjkw IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2RlY2xhcmUtc2ltZC1jb2FycmF5 LWxpYi5mOTAKaW5kZXggZjBjNGUzOWVmYmExNDA1NTBmMjVjMWIyODNkOGVjYTY2NzYwZjNh OS4uMWY3NGRhNzZmZmUzZjQ1Yjg1ZTdmODk1MzRiN2JmMmFiOTIzYjRmZiAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2RlY2xhcmUtc2ltZC1jb2FycmF5 LWxpYi5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2RlY2xhcmUt c2ltZC1jb2FycmF5LWxpYi5mOTAKQEAgLTUsNyArNSw3IEBACiAhIEZhaWxlZCBhcyBUUkVF X1RZUEUoZm5kZWNsKSBkaWQgbm90IGluY2x1ZGUgdGhlCiAhIGhpZGRlbiBjYWZfdG9rZW4v Y2FmX29mZnNldCBhcmd1bWVudHMuCiAhCi1pbnRlZ2VyIGZ1bmN0aW9uIGYoeCkJISB7IGRn LXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5 cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSB9 CitpbnRlZ2VyIGZ1bmN0aW9uIGYoeCkKICAgIGludGVnZXIgOjogeFsqXQogICAgISRvbXAg ZGVjbGFyZSBzaW1kCiAgICBmID0geFsxXQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2RlY2xhcmUtdmFyaWFudC0xNC5mOTAgYi9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvZGVjbGFyZS12YXJpYW50LTE0LmY5MAppbmRleCAwNmM5YTVk MWVkOGY5YTVjMGJiYjQyMDFlNTA1ZjQzMDllZjU2MjIyLi42NmZmY2YyZTNmZWIxYmQzZTVi YjQzYzliNzczMWZmZDdhMmFhZDIyIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvZGVjbGFyZS12YXJpYW50LTE0LmY5MAorKysgYi9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvbXAvZGVjbGFyZS12YXJpYW50LTE0LmY5MApAQCAtMzUsMTMgKzM1 LDE1IEBAIGNvbnRhaW5zCiAgICAgaW50ZWdlciA6OiBhLCBiCiAKICAgICAhIEF0IGdpbXBs aWZpY2F0aW9uIHRpbWUsIHdlIGNhbid0IGRlY2lkZSB5ZXQgd2hpY2ggZnVuY3Rpb24gdG8g Y2FsbC4KLSAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiZjA0IFxc XCh4IiAyICJnaW1wbGUiIH0gfQorICAgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJmMDQgXFxcKHgiIDIgImdpbXBsZSIgeyB0YXJnZXQgeyAhYWFyY2g2NCotKi0q IH0gfSB9IH0KICAgICAhIEFmdGVyIHNpbWQgY2xvbmVzIGFyZSBjcmVhdGVkLCB0aGUgb3Jp Z2luYWwgbm9uLWNsb25lIHRlc3QxIHNoYWxsCiAgICAgISBjYWxsIGYwMyAoc2NvcmUgNiks IHRoZSBzc2UyL2F2eC9hdngyIGNsb25lcyB0b28sIGJ1dCBhdng1MTJmIGNsb25lcwogICAg ICEgc2hhbGwgY2FsbCBmMDEgd2l0aCBzY29yZSA4LgogICAgICEgeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLW5vdCAiZjA0IFxcXCh4IiAib3B0aW1pemVkIiB9IH0KLSAgICAhIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiZjAzIFxcXCh4IiAxNCAib3B0aW1p emVkIiB9IH0KLSAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiZjAx IFxcXCh4IiA0ICJvcHRpbWl6ZWQiIH0gfQorICAgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJmMDMgXFxcKHgiIDE0ICJvcHRpbWl6ZWQiIHsgdGFyZ2V0IHsgIWFh cmNoNjQqLSotKiB9IH0gfSB9CisgICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgImYwMyBcXFwoeCIgMTAgIm9wdGltaXplZCIgeyB0YXJnZXQgeyBhYXJjaDY0Ki0q LSogfSB9IH0gfQorICAgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJm MDEgXFxcKHgiIDQgIm9wdGltaXplZCIgeyB0YXJnZXQgeyAhYWFyY2g2NCotKi0qIH0gfSB9 IH0KKyAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiZjAxIFxcXCh4 IiAwICJvcHRpbWl6ZWQiIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0KICAgICBh ID0gZjA0ICh4KQogICAgIGIgPSBmMDQgKHgpCiAgICAgdGVzdDEgPSBhICsgYgpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3ByNzkxNTQtMS5mOTAgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvcHI3OTE1NC0xLmY5MAppbmRleCBlYTE0 N2JmYTc4ZWM3MTZiNzUzNGY5YjA5OGMxZmMwYjk4YjFkMzk3Li42Mzc2YmFhNjM4M2M1NTI3 YTZmOWI4MTM4ZDJiODAxZjBmYTUzZDVkIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2dvbXAvcHI3OTE1NC0xLmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvcHI3OTE1NC0xLmY5MApAQCAtMSw3ICsxLDcgQEAKICEgUFIgZm9ydHJh bi83OTE1NAogISB7IGRnLWRvIGNvbXBpbGUgfQogCi1wdXJlIHJlYWwgZnVuY3Rpb24gZm9v IChhLCBiKQkJISB7IGRnLXdhcm5pbmcgIkdDQyBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9y dCBtaXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcgZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBh YXJjaDY0Ki0qLSogfSB9CitwdXJlIHJlYWwgZnVuY3Rpb24gZm9vIChhLCBiKQogISRvbXAg ZGVjbGFyZSBzaW1kKGZvbykJCQkhIHsgZGctYm9ndXMgIm1heSBub3QgYXBwZWFyIGluIFBV UkUiIH0KICAgcmVhbCwgaW50ZW50KGluKSA6OiBhLCBiCiAgIGZvbyA9IGEgKyBiCkBAIC0y MCw3ICsyMCw3IEBAIHB1cmUgcmVhbCBmdW5jdGlvbiBiYXogKGEsIGIpCiAgIHJlYWwsIGlu dGVudChpbikgOjogYSwgYgogICBiYXogPSBhICsgYgogZW5kIGZ1bmN0aW9uIGJhegotZWxl bWVudGFsIHJlYWwgZnVuY3Rpb24gZm9vZSAoYSwgYikJISB7IGRnLXdhcm5pbmcgIkdDQyBk b2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBtaXhlZCBzaXplIHR5cGVzIGZvciAnc2ltZCcg ZnVuY3Rpb25zIiAiIiB7IHRhcmdldCBhYXJjaDY0Ki0qLSogfSB9CitlbGVtZW50YWwgcmVh bCBmdW5jdGlvbiBmb29lIChhLCBiKQogISRvbXAgZGVjbGFyZSBzaW1kKGZvb2UpCQkhIHsg ZGctYm9ndXMgIm1heSBub3QgYXBwZWFyIGluIFBVUkUiIH0KICAgcmVhbCwgaW50ZW50KGlu KSA6OiBhLCBiCiAgIGZvb2UgPSBhICsgYgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL3ByODM5NzcuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL3ByODM5NzcuZjkwCmluZGV4IGVhOGUyMjlmZTU0ODZhNjQ1Y2M3Y2M4YWFlNzQ4 NzI1Zjk3OWM0NDguLmI4YWQxYTdlMzljMTg0ZmQwODQ2NTg0NzdiMTgzZmM5MzA3MWIzNTcg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9wcjgzOTc3LmY5 MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvcHI4Mzk3Ny5mOTAKQEAg LTEsNyArMSw3IEBACiAhIFBSIG1pZGRsZS1lbmQvODM5NzcKICEgeyBkZy1kbyBjb21waWxl IH0KIAotaW50ZWdlciBmdW5jdGlvbiBmb28gKGEsIGIpICEgeyBkZy13YXJuaW5nICJHQ0Mg ZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgbWl4ZWQgc2l6ZSB0eXBlcyBmb3IgJ3NpbWQn IGZ1bmN0aW9ucyIgIiIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfQoraW50ZWdlciBmdW5j dGlvbiBmb28gKGEsIGIpCiAgICBpbnRlZ2VyIDo6IGEsIGIKICEkb21wIGRlY2xhcmUgc2lt ZCB1bmlmb3JtKGIpIGxpbmVhcihyZWYoYSk6YikKICAgIGEgPSBhICsgMQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cCBiL2djYy90ZXN0c3Vp dGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHAKaW5kZXggNzAwNDcxMWIzODQ4ZDRjZWIyMzE5 NTI2OTI4MTU2YjgyZjUyNWQzMi4uZTg1ODUyZjE1MzU3YjFhNjIwMmM1NTkyMzgxZDk2ZDQz NTY1OTc0YyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRz LmV4cAorKysgYi9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtc3VwcG9ydHMuZXhwCkBAIC00 MDI4LDcgKzQwMjgsOCBAQCBwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfdmVjdF9zaW1k X2Nsb25lcyB7IH0gewogICAgIHJldHVybiBbY2hlY2tfY2FjaGVkX2VmZmVjdGl2ZV90YXJn ZXRfaW5kZXhlZCB2ZWN0X3NpbWRfY2xvbmVzIHsKICAgICAgIGV4cHIgeyAoKFtpc3Rhcmdl dCBpPzg2LSotKl0gfHwgW2lzdGFyZ2V0IHg4Nl82NC0qLSpdKQogCSAgICAgICYmIFtjaGVj a19lZmZlY3RpdmVfdGFyZ2V0X2F2eDUxMmZdKQotCSAgICAgfHwgW2lzdGFyZ2V0IGFtZGdj bi0qLSpdIH19XQorCSAgICAgfHwgW2lzdGFyZ2V0IGFtZGdjbi0qLSpdCisJICAgICB8fCBb aXN0YXJnZXQgYWFyY2g2NCotKi0qXSB9fV0KIH0KIAogIyBSZXR1cm4gMSBpZiB0aGlzIGlz IGEgQUFyY2g2NCB0YXJnZXQgc3VwcG9ydGluZyBiaWcgZW5kaWFuCg== --------------sPIPni1B7sNoTKyYRbPK3Vh2--