From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v11 11/18] kunit: test: add the concept of assertions Date: Tue, 16 Jul 2019 18:55:36 -0700 Message-ID: <20190717015543.152251-12-brendanhiggins@google.com> References: <20190717015543.152251-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190717015543.152251-1-brendanhiggins@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: frowand.list@gmail.com, gregkh@linuxfoundation.org, jpoimboe@redhat.com, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.org, peterz@infradead.org, robh@kernel.org, sboyd@kernel.org, shuah@kernel.org, tytso@mit.edu, yamada.masahiro@socionext.com Cc: pmladek@suse.com, linux-doc@vger.kernel.org, amir73il@gmail.com, Brendan Higgins , dri-devel@lists.freedesktop.org, Alexander.Levin@microsoft.com, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, khilman@baylibre.com, knut.omang@oracle.com, wfg@linux.intel.com, joel@jms.id.au, rientjes@google.com, jdike@addtoit.com, dan.carpenter@oracle.com, devicetree@vger.kernel.org, linux-kbuild@vger.kernel.org, Tim.Bird@sony.com, linux-um@lists.infradead.org, rostedt@goodmis.org, julia.lawall@lip6.fr, kunit-dev@googlegroups.com, richard@nod.at, rdunlap@infradead.org, linux-kernel@vger.kernel.org, mpe@ellerman.id.au, linux-fsdevel@vger.kernel.org, logang@deltatee.com List-Id: devicetree@vger.kernel.org QWRkIHN1cHBvcnQgZm9yIGFzc2VydGlvbnMgd2hpY2ggYXJlIGxpa2UgZXhwZWN0YXRpb25zIGV4 Y2VwdCB0aGUgdGVzdAp0ZXJtaW5hdGVzIGlmIHRoZSBhc3NlcnRpb24gaXMgbm90IHNhdGlzZmll ZC4KClRoZSBpZGVhIHdpdGggYXNzZXJ0aW9ucyBpcyB0aGF0IHlvdSB1c2UgdGhlbSB0byBzdGF0 ZSBhbGwgdGhlCnByZWNvbmRpdGlvbnMgZm9yIHlvdXIgdGVzdC4gTG9naWNhbGx5IHNwZWFraW5n LCB0aGVzZSBhcmUgdGhlIHByZW1pc2VzCm9mIHRoZSB0ZXN0IGNhc2UsIHNvIGlmIGEgcHJlbWlz ZSBpc24ndCB0cnVlLCB0aGVyZSBpcyBubyBwb2ludCBpbgpjb250aW51aW5nIHRoZSB0ZXN0IGNh c2UgYmVjYXVzZSB0aGVyZSBhcmUgbm8gY29uY2x1c2lvbnMgdGhhdCBjYW4gYmUKZHJhd24gd2l0 aG91dCB0aGUgcHJlbWlzZXMuIFdoZXJlYXMsIHRoZSBleHBlY3RhdGlvbiBpcyB0aGUgdGhpbmcg eW91CmFyZSB0cnlpbmcgdG8gcHJvdmUuIEl0IGlzIG5vdCB1c2VkIHVuaXZlcnNhbGx5IGluIHgt dW5pdCBzdHlsZSB0ZXN0CmZyYW1ld29ya3MsIGJ1dCBJIHJlYWxseSBsaWtlIGl0IGFzIGEgY29u dmVudGlvbi4gIFlvdSBjb3VsZCBzdGlsbApleHByZXNzIHRoZSBpZGVhIG9mIGEgcHJlbWlzZSB1 c2luZyB0aGUgYWJvdmUgaWRpb20sIGJ1dCBJIHRoaW5rCktVTklUX0FTU0VSVF8qIHN0YXRlcyB0 aGUgaW50ZW5kZWQgaWRlYSBwZXJmZWN0bHkuCgpTaWduZWQtb2ZmLWJ5OiBCcmVuZGFuIEhpZ2dp bnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBHcmVnIEtyb2FoLUhh cnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1ieTogTG9nYW4gR3Vu dGhvcnBlIDxsb2dhbmdAZGVsdGF0ZWUuY29tPgotLS0KIGluY2x1ZGUva3VuaXQvdGVzdC5oICAg ICAgIHwgNTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGt1bml0L3N0 cmluZy1zdHJlYW0tdGVzdC5jIHwgIDEyICstCiBrdW5pdC90ZXN0LXRlc3QuYyAgICAgICAgICB8 ICAgMiArCiBrdW5pdC90ZXN0LmMgICAgICAgICAgICAgICB8ICA2NiArKysrKwogNCBmaWxlcyBj aGFuZ2VkLCA1NzEgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9p bmNsdWRlL2t1bml0L3Rlc3QuaCBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCmluZGV4IDFkYWE0NTEw YmI5NjAuLjdkMTQyMTBiMTg0ODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUva3VuaXQvdGVzdC5oCisr KyBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCkBAIC04Niw5ICs4NiwxMCBAQCBzdHJ1Y3Qga3VuaXQ7 CiAgKiBAbmFtZTogdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZS4KICAqCiAgKiBBIHRlc3QgY2Fz ZSBpcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSwgYGB2b2lkICgqKShzdHJ1Y3Qga3Vu aXQgKilgYAotICogdGhhdCBtYWtlcyBleHBlY3RhdGlvbnMgKHNlZSBLVU5JVF9FWFBFQ1RfVFJV RSgpKSBhYm91dCBjb2RlIHVuZGVyIHRlc3QuIEVhY2gKLSAqIHRlc3QgY2FzZSBpcyBhc3NvY2lh dGVkIHdpdGggYSAmc3RydWN0IGt1bml0X3N1aXRlIGFuZCB3aWxsIGJlIHJ1biBhZnRlciB0aGUK LSAqIHN1aXRlJ3MgaW5pdCBmdW5jdGlvbiBhbmQgZm9sbG93ZWQgYnkgdGhlIHN1aXRlJ3MgZXhp dCBmdW5jdGlvbi4KKyAqIHRoYXQgbWFrZXMgZXhwZWN0YXRpb25zIGFuZCBhc3NlcnRpb25zIChz ZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSBhbmQKKyAqIEtVTklUX0FTU0VSVF9UUlVFKCkpIGFib3V0 IGNvZGUgdW5kZXIgdGVzdC4gRWFjaCB0ZXN0IGNhc2UgaXMgYXNzb2NpYXRlZCB3aXRoCisgKiBh ICZzdHJ1Y3Qga3VuaXRfc3VpdGUgYW5kIHdpbGwgYmUgcnVuIGFmdGVyIHRoZSBzdWl0ZSdzIGlu aXQgZnVuY3Rpb24gYW5kCisgKiBmb2xsb3dlZCBieSB0aGUgc3VpdGUncyBleGl0IGZ1bmN0aW9u LgogICoKICAqIEEgdGVzdCBjYXNlIHNob3VsZCBiZSBzdGF0aWMgYW5kIHNob3VsZCBvbmx5IGJl IGNyZWF0ZWQgd2l0aCB0aGUgS1VOSVRfQ0FTRSgpCiAgKiBtYWNybzsgYWRkaXRpb25hbGx5LCBl dmVyeSBhcnJheSBvZiB0ZXN0IGNhc2VzIHNob3VsZCBiZSB0ZXJtaW5hdGVkIHdpdGggYW4KQEAg LTg2NCw0ICs4NjUsNDk3IEBAIGRvIHsJCQkJCQkJCQkgICAgICAgXAogCUtVTklUX0VYUEVDVF9F TkQodGVzdCwgIUlTX0VSUl9PUl9OVUxMKF9fcHRyKSwgX19zdHJlYW0pOwkgICAgICAgXAogfSB3 aGlsZSAoMCkKIAorc3RhdGljIGlubGluZSBzdHJ1Y3Qga3VuaXRfc3RyZWFtICprdW5pdF9hc3Nl cnRfc3RhcnQoc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCQkJICAgICAgY29uc3QgY2hhciAqZmls ZSwKKwkJCQkJCSAgICAgIGNvbnN0IGNoYXIgKmxpbmUpCit7CisJc3RydWN0IGt1bml0X3N0cmVh bSAqc3RyZWFtID0gYWxsb2Nfa3VuaXRfc3RyZWFtKHRlc3QsIEtFUk5fRVJSLAorCQkJCQkJCSBH RlBfS0VSTkVMKTsKKworCWt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiQVNTRVJUSU9OIEZBSUxF RCBhdCAlczolc1xuXHQiLCBmaWxlLCBsaW5lKTsKKworCXJldHVybiBzdHJlYW07Cit9CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBrdW5pdF9hc3NlcnRfZW5kKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJ CQkgICAgYm9vbCBzdWNjZXNzLAorCQkJCSAgICBzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0p Cit7CisJaWYgKCFzdWNjZXNzKSB7CisJCWt1bml0X2ZhaWwodGVzdCwgc3RyZWFtKTsKKwkJa3Vu aXRfYWJvcnQodGVzdCk7CisJfSBlbHNlIHsKKwkJa3VuaXRfc3RyZWFtX2NsZWFyKHN0cmVhbSk7 CisJfQorfQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9TVEFSVCh0ZXN0KSBcCisJCWt1bml0X2Fz c2VydF9zdGFydCh0ZXN0LCBfX0ZJTEVfXywgX19zdHJpbmdpZnkoX19MSU5FX18pKQorCisjZGVm aW5lIEtVTklUX0FTU0VSVF9FTkQodGVzdCwgc3VjY2Vzcywgc3RyZWFtKSBcCisJCWt1bml0X2Fz c2VydF9lbmQodGVzdCwgc3VjY2Vzcywgc3RyZWFtKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVCh0 ZXN0LCBzdWNjZXNzLCBtZXNzYWdlKSBkbyB7CQkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3Ry ZWFtICpfX3N0cmVhbSA9IEtVTklUX0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwkJCQkJ CQkJCSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgbWVzc2FnZSk7CQkJCSAg ICAgICBcCisJS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCBzdWNjZXNzLCBfX3N0cmVhbSk7CQkJICAg ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX01TRyh0ZXN0LCBzdWNj ZXNzLCBtZXNzYWdlLCBmbXQsIC4uLikgZG8gewkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3Ry ZWFtICpfX3N0cmVhbSA9IEtVTklUX0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwkJCQkJ CQkJCSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgbWVzc2FnZSk7CQkJCSAg ICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgZm10LCAjI19fVkFfQVJHU19fKTsJ CQkgICAgICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVzdCwgc3VjY2VzcywgX19zdHJlYW0pOwkJ CSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9GQUlMVVJFKHRl c3QsIGZtdCwgLi4uKSBkbyB7CQkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0 cmVhbSA9IEtVTklUX0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwkJCQkJCQkJCSAgICAg ICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgZm10LCAjI19fVkFfQVJHU19fKTsJCQkg ICAgICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVzdCwgZmFsc2UsIF9fc3RyZWFtKTsJCQkgICAg ICAgXAorfSB3aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9BU1NFUlRfVFJVRSgpIC0gU2V0cyBh biBhc3NlcnRpb24gdGhhdCBAY29uZGl0aW9uIGlzIHRydWUuCisgKiBAdGVzdDogVGhlIHRlc3Qg Y29udGV4dCBvYmplY3QuCisgKiBAY29uZGl0aW9uOiBhbiBhcmJpdHJhcnkgYm9vbGVhbiBleHBy ZXNzaW9uLiBUaGUgdGVzdCBmYWlscyBhbmQgYWJvcnRzIHdoZW4KKyAqIHRoaXMgZG9lcyBub3Qg ZXZhbHVhdGUgdG8gdHJ1ZS4KKyAqCisgKiBUaGlzIGFuZCBhc3NlcnRpb25zIG9mIHRoZSBmb3Jt IGBLVU5JVF9BU1NFUlRfKmAgd2lsbCBjYXVzZSB0aGUgdGVzdCBjYXNlIHRvCisgKiBmYWlsICph bmQgaW1tZWRpYXRlbHkgYWJvcnQqIHdoZW4gdGhlIHNwZWNpZmllZCBjb25kaXRpb24gaXMgbm90 IG1ldC4gVW5saWtlCisgKiBhbiBleHBlY3RhdGlvbiBmYWlsdXJlLCBpdCB3aWxsIHByZXZlbnQg dGhlIHRlc3QgY2FzZSBmcm9tIGNvbnRpbnVpbmcgdG8gcnVuOworICogdGhpcyBpcyBvdGhlcndp c2Uga25vd24gYXMgYW4gKmFzc2VydGlvbiBmYWlsdXJlKi4KKyAqLworI2RlZmluZSBLVU5JVF9B U1NFUlRfVFJVRSh0ZXN0LCBjb25kaXRpb24pCQkJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVCh0 ZXN0LCAoY29uZGl0aW9uKSwJCQkJICAgICAgIFwKKwkJCSAgICAgIkFzc2VydGVkICIgI2NvbmRp dGlvbiAiIGlzIHRydWUsIGJ1dCBpcyBmYWxzZVxuIikKKworI2RlZmluZSBLVU5JVF9BU1NFUlRf VFJVRV9NU0codGVzdCwgY29uZGl0aW9uLCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FT U0VSVF9NU0codGVzdCwgKGNvbmRpdGlvbiksCQkJICAgICAgIFwKKwkJCQkgIkFzc2VydGVkICIg I2NvbmRpdGlvbiAiIGlzIHRydWUsIGJ1dCBpcyBmYWxzZVxuIixcCisJCQkJIGZtdCwgIyNfX1ZB X0FSR1NfXykKKworLyoqCisgKiBLVU5JVF9BU1NFUlRfRkFMU0UoKSAtIFNldHMgYW4gYXNzZXJ0 aW9uIHRoYXQgQGNvbmRpdGlvbiBpcyBmYWxzZS4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0 IG9iamVjdC4KKyAqIEBjb25kaXRpb246IGFuIGFyYml0cmFyeSBib29sZWFuIGV4cHJlc3Npb24u CisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0aGUgdmFsdWUgdGhhdCBAY29uZGl0aW9u IGV2YWx1YXRlcyB0byBpcyBmYWxzZS4gVGhpcworICogaXMgdGhlIHNhbWUgYXMgS1VOSVRfRVhQ RUNUX0ZBTFNFKCksIGV4Y2VwdCBpdCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZhaWx1cmUKKyAqIChz ZWUgS1VOSVRfQVNTRVJUX1RSVUUoKSkgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBtZXQuCisg Ki8KKyNkZWZpbmUgS1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIGNvbmRpdGlvbikJCQkJICAgICAg IFwKKwkJS1VOSVRfQVNTRVJUKHRlc3QsICEoY29uZGl0aW9uKSwJCQkgICAgICAgXAorCQkJICAg ICAiQXNzZXJ0ZWQgIiAjY29uZGl0aW9uICIgaXMgZmFsc2UsIGJ1dCBpcyB0cnVlXG4iKQorCisj ZGVmaW5lIEtVTklUX0FTU0VSVF9GQUxTRV9NU0codGVzdCwgY29uZGl0aW9uLCBmbXQsIC4uLikJ CSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9NU0codGVzdCwgIShjb25kaXRpb24pLAkJCSAgICAg ICBcCisJCQkJICJBc3NlcnRlZCAiICNjb25kaXRpb24gIiBpcyBmYWxzZSwgYnV0IGlzIHRydWVc biIsXAorCQkJCSBmbXQsICMjX19WQV9BUkdTX18pCisKK3ZvaWQga3VuaXRfYXNzZXJ0X2JpbmFy eV9tc2coc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJICAgICBsb25nIGxvbmcgbGVmdCwgY29uc3Qg Y2hhciAqbGVmdF9uYW1lLAorCQkJICAgICBsb25nIGxvbmcgcmlnaHQsIGNvbnN0IGNoYXIgKnJp Z2h0X25hbWUsCisJCQkgICAgIGJvb2wgY29tcGFyZV9yZXN1bHQsCisJCQkgICAgIGNvbnN0IGNo YXIgKmNvbXBhcmVfbmFtZSwKKwkJCSAgICAgY29uc3QgY2hhciAqZmlsZSwKKwkJCSAgICAgY29u c3QgY2hhciAqbGluZSwKKwkJCSAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pOworCitzdGF0aWMg aW5saW5lIHZvaWQga3VuaXRfYXNzZXJ0X2JpbmFyeShzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkJ ICAgICAgIGxvbmcgbG9uZyBsZWZ0LCBjb25zdCBjaGFyICpsZWZ0X25hbWUsCisJCQkJICAgICAg IGxvbmcgbG9uZyByaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCQkgICAgICAgYm9v bCBjb21wYXJlX3Jlc3VsdCwKKwkJCQkgICAgICAgY29uc3QgY2hhciAqY29tcGFyZV9uYW1lLAor CQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpsaW5l KQoreworCWt1bml0X2Fzc2VydF9iaW5hcnlfbXNnKHRlc3QsCisJCQkJbGVmdCwgbGVmdF9uYW1l LAorCQkJCXJpZ2h0LCByaWdodF9uYW1lLAorCQkJCWNvbXBhcmVfcmVzdWx0LAorCQkJCWNvbXBh cmVfbmFtZSwKKwkJCQlmaWxlLAorCQkJCWxpbmUsCisJCQkJTlVMTCk7Cit9CisKK3ZvaWQga3Vu aXRfYXNzZXJ0X3B0cl9iaW5hcnlfbXNnKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCQkgdm9pZCAq bGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJCSB2b2lkICpyaWdodCwgY29uc3QgY2hh ciAqcmlnaHRfbmFtZSwKKwkJCQkgYm9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJCQkgY29uc3QgY2hh ciAqY29tcGFyZV9uYW1lLAorCQkJCSBjb25zdCBjaGFyICpmaWxlLAorCQkJCSBjb25zdCBjaGFy ICpsaW5lLAorCQkJCSBjb25zdCBjaGFyICpmbXQsIC4uLik7CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBrdW5pdF9hc3NlcnRfcHRyX2JpbmFyeShzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkJCSAgIHZv aWQgKmxlZnQsIGNvbnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCQkJICAgdm9pZCAqcmlnaHQsIGNv bnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkJCSAgIGJvb2wgY29tcGFyZV9yZXN1bHQsCisJCQkJ CSAgIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJCQkJICAgY29uc3QgY2hhciAqZmlsZSwK KwkJCQkJICAgY29uc3QgY2hhciAqbGluZSkKK3sKKwlrdW5pdF9hc3NlcnRfcHRyX2JpbmFyeV9t c2codGVzdCwKKwkJCQkgICAgbGVmdCwgbGVmdF9uYW1lLAorCQkJCSAgICByaWdodCwgcmlnaHRf bmFtZSwKKwkJCQkgICAgY29tcGFyZV9yZXN1bHQsCisJCQkJICAgIGNvbXBhcmVfbmFtZSwKKwkJ CQkgICAgZmlsZSwKKwkJCQkgICAgbGluZSwKKwkJCQkgICAgTlVMTCk7Cit9CisKKy8qCisgKiBB IGZhY3RvcnkgbWFjcm8gZm9yIGRlZmluaW5nIHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoZSBiYXNp YyBjb21wYXJpc29ucworICogZGVmaW5lZCBmb3IgdGhlIGJ1aWx0IGluIHR5cGVzLgorICoKKyAq IFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGNvbW1vbiB0eXBlIHRoYXQgYWxsIHR5cGVzIGNh biBiZSBwcm9tb3RlZCB0byBmb3IKKyAqIHdoaWNoIGFsbCB0aGUgYmluYXJ5IG9wZXJhdG9ycyBi ZWhhdmUgdGhlIHNhbWUgd2F5IGFzIGZvciB0aGUgYWN0dWFsIHR5cGVzCisgKiAoZm9yIGV4YW1w bGUsIHRoZXJlIGlzIG5vIHR5cGUgdGhhdCBsb25nIGxvbmcgYW5kIHVuc2lnbmVkIGxvbmcgbG9u ZyBjYW4KKyAqIGJvdGggYmUgY2FzdCB0byB3aGVyZSB0aGUgY29tcGFyaXNvbiByZXN1bHQgaXMg cHJlc2VydmVkIGZvciBhbGwgdmFsdWVzKS4gU28KKyAqIHRoZSBiZXN0IHdlIGNhbiBkbyBpcyBk byB0aGUgY29tcGFyaXNvbiBpbiB0aGUgb3JpZ2luYWwgdHlwZXMgYW5kIHRoZW4gY29lcmNlCisg KiBldmVyeXRoaW5nIHRvIGxvbmcgbG9uZyBmb3IgcHJpbnRpbmc7IHRoaXMgd2F5LCB0aGUgY29t cGFyaXNvbiBiZWhhdmVzCisgKiBjb3JyZWN0bHkgYW5kIHRoZSBwcmludGVkIG91dCB2YWx1ZSB1 c3VhbGx5IG1ha2VzIHNlbnNlIHdpdGhvdXQKKyAqIGludGVycHJldGF0aW9uLCBidXQgY2FuIGFs d2F5cyBiZSBpbnRlcnByZXR0ZWQgdG8gZmlndXJlIG91dCB0aGUgYWN0dWFsCisgKiB2YWx1ZS4K KyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfQklOQVJZKHRlc3QsIGxlZnQsIGNvbmRpdGlvbiwg cmlnaHQpIGRvIHsJCSAgICAgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0KTsJCQkJ CSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAgICAgIFwK KwlfX2t1bml0X3R5cGVjaGVjayhfX2xlZnQsIF9fcmlnaHQpOwkJCQkgICAgICAgXAorCWt1bml0 X2Fzc2VydF9iaW5hcnkodGVzdCwJCQkJCSAgICAgICBcCisJCQkgICAgKGxvbmcgbG9uZykgX19s ZWZ0LCAjbGVmdCwJCQkgICAgICAgXAorCQkJICAgIChsb25nIGxvbmcpIF9fcmlnaHQsICNyaWdo dCwJCSAgICAgICBcCisJCQkgICAgX19sZWZ0IGNvbmRpdGlvbiBfX3JpZ2h0LCAjY29uZGl0aW9u LAkgICAgICAgXAorCQkJICAgIF9fRklMRV9fLCBfX3N0cmluZ2lmeShfX0xJTkVfXykpOwkJICAg ICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX0JJTkFSWV9NU0codGVz dCwgbGVmdCwgY29uZGl0aW9uLCByaWdodCwgZm10LCAuLi4pIGRvIHsgICBcCisJdHlwZW9mKGxl ZnQpIF9fbGVmdCA9IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0 ID0gKHJpZ2h0KTsJCQkJICAgICAgIFwKKwlfX2t1bml0X3R5cGVjaGVjayhfX2xlZnQsIF9fcmln aHQpOwkJCQkgICAgICAgXAorCWt1bml0X2Fzc2VydF9iaW5hcnlfbXNnKHRlc3QsCQkJCQkgICAg ICAgXAorCQkJCShsb25nIGxvbmcpIF9fbGVmdCwgI2xlZnQsCQkgICAgICAgXAorCQkJCShsb25n IGxvbmcpIF9fcmlnaHQsICNyaWdodCwJCSAgICAgICBcCisJCQkJX19sZWZ0IGNvbmRpdGlvbiBf X3JpZ2h0LCAjY29uZGl0aW9uLAkgICAgICAgXAorCQkJCV9fRklMRV9fLCBfX3N0cmluZ2lmeShf X0xJTkVfXyksCSAgICAgICBcCisJCQkJZm10LCAjI19fVkFfQVJHU19fKTsJCQkgICAgICAgXAor fSB3aGlsZSAoMCkKKworLyoKKyAqIEp1c3QgbGlrZSBLVU5JVF9FWFBFQ1RfQklOQVJZLCBidXQg Zm9yIGNvbXBhcmluZyBwb2ludGVyIHR5cGVzLgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9Q VFJfQklOQVJZKHRlc3QsIGxlZnQsIGNvbmRpdGlvbiwgcmlnaHQpIGRvIHsJICAgICAgIFwKKwl0 eXBlb2YobGVmdCkgX19sZWZ0ID0gKGxlZnQpOwkJCQkJICAgICAgIFwKKwl0eXBlb2YocmlnaHQp IF9fcmlnaHQgPSAocmlnaHQpOwkJCQkgICAgICAgXAorCV9fa3VuaXRfdHlwZWNoZWNrKF9fbGVm dCwgX19yaWdodCk7CQkJCSAgICAgICBcCisJa3VuaXRfYXNzZXJ0X3B0cl9iaW5hcnkodGVzdCwJ CQkJCSAgICAgICBcCisJCQkJKHZvaWQgKikgX19sZWZ0LCAjbGVmdCwJCQkgICAgICAgXAorCQkJ CSh2b2lkICopIF9fcmlnaHQsICNyaWdodCwJCSAgICAgICBcCisJCQkJX19sZWZ0IGNvbmRpdGlv biBfX3JpZ2h0LCAjY29uZGl0aW9uLAkgICAgICAgXAorCQkJCV9fRklMRV9fLCBfX3N0cmluZ2lm eShfX0xJTkVfXykpOwkgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBLVU5JVF9BU1NF UlRfUFRSX0JJTkFSWV9NU0codGVzdCwgbGVmdCwgY29uZGl0aW9uLCByaWdodCwgZm10LCAuLi4p ICAgIFwKK2RvIHsJCQkJCQkJCQkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVm dCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAg ICAgICBcCisJX19rdW5pdF90eXBlY2hlY2soX19sZWZ0LCBfX3JpZ2h0KTsJCQkJICAgICAgIFwK KwlrdW5pdF9hc3NlcnRfcHRyX2JpbmFyeV9tc2codGVzdCwJCQkJICAgICAgIFwKKwkJCQkgICAg KHZvaWQgKikgX19sZWZ0LCAjbGVmdCwJCSAgICAgICBcCisJCQkJICAgICh2b2lkICopIF9fcmln aHQsICNyaWdodCwJCSAgICAgICBcCisJCQkJICAgIF9fbGVmdCBjb25kaXRpb24gX19yaWdodCwg I2NvbmRpdGlvbiwgICAgICBcCisJCQkJICAgIF9fRklMRV9fLCBfX3N0cmluZ2lmeShfX0xJTkVf XyksCSAgICAgICBcCisJCQkJICAgIGZtdCwgIyNfX1ZBX0FSR1NfXyk7CQkgICAgICAgXAorfSB3 aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9BU1NFUlRfRVEoKSAtIFNldHMgYW4gYXNzZXJ0aW9u IHRoYXQgQGxlZnQgYW5kIEByaWdodCBhcmUgZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29u dGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFs dWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhw cmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0 cyBhbiBhc3NlcnRpb24gdGhhdCB0aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBldmFs dWF0ZSB0byBhcmUKKyAqIGVxdWFsLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtVTklUX0VYUEVDVF9F USgpLCBleGNlcHQgaXQgY2F1c2VzIGFuIGFzc2VydGlvbgorICogZmFpbHVyZSAoc2VlIEtVTklU X0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgbWV0LgorICovCisjZGVm aW5lIEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9BU1NFUlRf QklOQVJZKHRlc3QsIGxlZnQsID09LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfRVFf TVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FTU0VS VF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJ CQkJCT09LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJCQkJZm10LAkJ CQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorCisvKioKKyAqIEtVTklUX0FTU0VSVF9Q VFJfRVEoKSAtIEFzc2VydHMgdGhhdCBwb2ludGVycyBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBlcXVh bC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJp dHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHBvaW50ZXIuCisgKiBAcmlnaHQ6 IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcG9pbnRlci4KKyAq CisgKiBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IHRoZSB2YWx1ZXMgdGhhdCBAbGVmdCBhbmQgQHJp Z2h0IGV2YWx1YXRlIHRvIGFyZQorICogZXF1YWwuIFRoaXMgaXMgdGhlIHNhbWUgYXMgS1VOSVRf RVhQRUNUX0VRKCksIGV4Y2VwdCBpdCBjYXVzZXMgYW4gYXNzZXJ0aW9uCisgKiBmYWlsdXJlIChz ZWUgS1VOSVRfQVNTRVJUX1RSVUUoKSkgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBtZXQuCisg Ki8KKyNkZWZpbmUgS1VOSVRfQVNTRVJUX1BUUl9FUSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlL VU5JVF9BU1NFUlRfUFRSX0JJTkFSWSh0ZXN0LCBsZWZ0LCA9PSwgcmlnaHQpCisKKyNkZWZpbmUg S1VOSVRfQVNTRVJUX1BUUl9FUV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAg ICAgIFwKKwkJS1VOSVRfQVNTRVJUX1BUUl9CSU5BUllfTVNHKHRlc3QsCQkJICAgICAgIFwKKwkJ CQkJICAgIGxlZnQsCQkJICAgICAgIFwKKwkJCQkJICAgID09LAkJCQkgICAgICAgXAorCQkJCQkg ICAgcmlnaHQsCQkJICAgICAgIFwKKwkJCQkJICAgIGZtdCwJCQkgICAgICAgXAorCQkJCQkgICAg IyNfX1ZBX0FSR1NfXykKKworLyoqCisgKiBLVU5JVF9BU1NFUlRfTkUoKSAtIEFuIGFzc2VydGlv biB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQgYXJlIG5vdCBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVz dCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0 IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFy eSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqCisg KiBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IHRoZSB2YWx1ZXMgdGhhdCBAbGVmdCBhbmQgQHJpZ2h0 IGV2YWx1YXRlIHRvIGFyZSBub3QKKyAqIGVxdWFsLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtVTklU X0VYUEVDVF9ORSgpLCBleGNlcHQgaXQgY2F1c2VzIGFuIGFzc2VydGlvbgorICogZmFpbHVyZSAo c2VlIEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgbWV0Lgor ICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9ORSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5J VF9BU1NFUlRfQklOQVJZKHRlc3QsIGxlZnQsICE9LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9B U1NFUlRfTkVfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtV TklUX0FTU0VSVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAg ICAgICBcCisJCQkJCSE9LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJ CQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorCisvKioKKyAqIEtVTklU X0FTU0VSVF9QVFJfTkUoKSAtIEFzc2VydHMgdGhhdCBwb2ludGVycyBAbGVmdCBhbmQgQHJpZ2h0 IGFyZSBub3QgZXF1YWwuCisgKiBLVU5JVF9BU1NFUlRfUFRSX0VRKCkgLSBBc3NlcnRzIHRoYXQg cG9pbnRlcnMgQGxlZnQgYW5kIEByaWdodCBhcmUgZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3Qg Y29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBl dmFsdWF0ZXMgdG8gYSBwb2ludGVyLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lv biB0aGF0IGV2YWx1YXRlcyB0byBhIHBvaW50ZXIuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24g dGhhdCB0aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBldmFsdWF0ZSB0byBhcmUgbm90 CisgKiBlcXVhbC4gVGhpcyBpcyB0aGUgc2FtZSBhcyBLVU5JVF9FWFBFQ1RfTkUoKSwgZXhjZXB0 IGl0IGNhdXNlcyBhbiBhc3NlcnRpb24KKyAqIGZhaWx1cmUgKHNlZSBLVU5JVF9BU1NFUlRfVFJV RSgpKSB3aGVuIHRoZSBhc3NlcnRpb24gaXMgbm90IG1ldC4KKyAqLworI2RlZmluZSBLVU5JVF9B U1NFUlRfUFRSX05FKHRlc3QsIGxlZnQsIHJpZ2h0KSBcCisJCUtVTklUX0FTU0VSVF9QVFJfQklO QVJZKHRlc3QsIGxlZnQsICE9LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfUFRSX05F X01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4pCQkgICAgICAgXAorCQlLVU5JVF9BU1NF UlRfUFRSX0JJTkFSWV9NU0codGVzdCwJCQkgICAgICAgXAorCQkJCQkgICAgbGVmdCwJCQkgICAg ICAgXAorCQkJCQkgICAgIT0sCQkJCSAgICAgICBcCisJCQkJCSAgICByaWdodCwJCQkgICAgICAg XAorCQkJCQkgICAgZm10LAkJCSAgICAgICBcCisJCQkJCSAgICAjI19fVkFfQVJHU19fKQorLyoq CisgKiBLVU5JVF9BU1NFUlRfTFQoKSAtIEFuIGFzc2VydGlvbiB0aGF0IEBsZWZ0IGlzIGxlc3Mg dGhhbiBAcmlnaHQuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVm dDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUg QyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRl cyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0 aGUgdmFsdWUgdGhhdCBAbGVmdCBldmFsdWF0ZXMgdG8gaXMgbGVzcyB0aGFuIHRoZQorICogdmFs dWUgdGhhdCBAcmlnaHQgZXZhbHVhdGVzIHRvLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtVTklUX0VY UEVDVF9MVCgpLCBleGNlcHQKKyAqIGl0IGNhdXNlcyBhbiBhc3NlcnRpb24gZmFpbHVyZSAoc2Vl IEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbgorICogaXMgbm90IG1ldC4K KyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfTFQodGVzdCwgbGVmdCwgcmlnaHQpIFwKKwkJS1VO SVRfQVNTRVJUX0JJTkFSWSh0ZXN0LCBsZWZ0LCA8LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9B U1NFUlRfTFRfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtV TklUX0FTU0VSVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAg ICAgICBcCisJCQkJCTwsCQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAgXAorCQkJ CQlmbXQsCQkJCSAgICAgICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisvKioKKyAqIEtVTklUX0FT U0VSVF9MRSgpIC0gQW4gYXNzZXJ0aW9uIHRoYXQgQGxlZnQgaXMgbGVzcyB0aGFuIG9yIGVxdWFs IHRvIEByaWdodC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0 OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBD IHR5cGUuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVz IHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqCisgKiBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IHRo ZSB2YWx1ZSB0aGF0IEBsZWZ0IGV2YWx1YXRlcyB0byBpcyBsZXNzIHRoYW4gb3IKKyAqIGVxdWFs IHRvIHRoZSB2YWx1ZSB0aGF0IEByaWdodCBldmFsdWF0ZXMgdG8uIFRoaXMgaXMgdGhlIHNhbWUg YXMKKyAqIEtVTklUX0VYUEVDVF9MRSgpLCBleGNlcHQgaXQgY2F1c2VzIGFuIGFzc2VydGlvbiBm YWlsdXJlIChzZWUKKyAqIEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbiBp cyBub3QgbWV0LgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9MRSh0ZXN0LCBsZWZ0LCByaWdo dCkgXAorCQlLVU5JVF9BU1NFUlRfQklOQVJZKHRlc3QsIGxlZnQsIDw9LCByaWdodCkKKworI2Rl ZmluZSBLVU5JVF9BU1NFUlRfTEVfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAg ICAgICBcCisJCUtVTklUX0FTU0VSVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJ CWxlZnQsCQkJCSAgICAgICBcCisJCQkJCTw9LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJ ICAgICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorLyoq CisgKiBLVU5JVF9BU1NFUlRfR1QoKSAtIEFuIGFzc2VydGlvbiB0aGF0IEBsZWZ0IGlzIGdyZWF0 ZXIgdGhhbiBAcmlnaHQuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBA bGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRp dmUgQyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1 YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhh dCB0aGUgdmFsdWUgdGhhdCBAbGVmdCBldmFsdWF0ZXMgdG8gaXMgZ3JlYXRlciB0aGFuIHRoZQor ICogdmFsdWUgdGhhdCBAcmlnaHQgZXZhbHVhdGVzIHRvLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtV TklUX0VYUEVDVF9HVCgpLCBleGNlcHQKKyAqIGl0IGNhdXNlcyBhbiBhc3NlcnRpb24gZmFpbHVy ZSAoc2VlIEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbgorICogaXMgbm90 IG1ldC4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfR1QodGVzdCwgbGVmdCwgcmlnaHQpIFwK KwkJS1VOSVRfQVNTRVJUX0JJTkFSWSh0ZXN0LCBsZWZ0LCA+LCByaWdodCkKKworI2RlZmluZSBL VU5JVF9BU1NFUlRfR1RfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBc CisJCUtVTklUX0FTU0VSVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQs CQkJCSAgICAgICBcCisJCQkJCT4sCQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAg XAorCQkJCQlmbXQsCQkJCSAgICAgICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8qKgorICog S1VOSVRfQVNTRVJUX0dFKCkgLSBBc3NlcnRpb24gdGhhdCBAbGVmdCBpcyBncmVhdGVyIHRoYW4g b3IgZXF1YWwgdG8gQHJpZ2h0LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0Lgor ICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJp bWl0aXZlIEMgdHlwZS4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBl dmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0aW9u IHRoYXQgdGhlIHZhbHVlIHRoYXQgQGxlZnQgZXZhbHVhdGVzIHRvIGlzIGdyZWF0ZXIgdGhhbiB0 aGUKKyAqIHZhbHVlIHRoYXQgQHJpZ2h0IGV2YWx1YXRlcyB0by4gVGhpcyBpcyB0aGUgc2FtZSBh cyBLVU5JVF9FWFBFQ1RfR0UoKSwgZXhjZXB0CisgKiBpdCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZh aWx1cmUgKHNlZSBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24KKyAqIGlz IG5vdCBtZXQuCisgKi8KKyNkZWZpbmUgS1VOSVRfQVNTRVJUX0dFKHRlc3QsIGxlZnQsIHJpZ2h0 KSBcCisJCUtVTklUX0FTU0VSVF9CSU5BUlkodGVzdCwgbGVmdCwgPj0sIHJpZ2h0KQorCisjZGVm aW5lIEtVTklUX0FTU0VSVF9HRV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAg ICAgIFwKKwkJS1VOSVRfQVNTRVJUX0JJTkFSWV9NU0codGVzdCwJCQkJICAgICAgIFwKKwkJCQkJ bGVmdCwJCQkJICAgICAgIFwKKwkJCQkJPj0sCQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkg ICAgICAgXAorCQkJCQlmbXQsCQkJCSAgICAgICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8q KgorICogS1VOSVRfQVNTRVJUX1NUUkVRKCkgLSBBbiBhc3NlcnRpb24gdGhhdCBzdHJpbmdzIEBs ZWZ0IGFuZCBAcmlnaHQgYXJlIGVxdWFsLgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2Jq ZWN0LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRv IGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZy4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJl c3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgorICoKKyAq IFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQg ZXZhbHVhdGUgdG8gYXJlCisgKiBlcXVhbC4gVGhpcyBpcyB0aGUgc2FtZSBhcyBLVU5JVF9FWFBF Q1RfU1RSRVEoKSwgZXhjZXB0IGl0IGNhdXNlcyBhbgorICogYXNzZXJ0aW9uIGZhaWx1cmUgKHNl ZSBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24gaXMgbm90IG1ldC4KKyAq LworI2RlZmluZSBLVU5JVF9BU1NFUlRfU1RSRVEodGVzdCwgbGVmdCwgcmlnaHQpIGRvIHsJCQkg ICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfQVNTRVJUX1NU QVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkg ICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJ CQkJCQkJCQkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJBc3NlcnRlZCAi ICNsZWZ0ICIgPT0gIiAjcmlnaHQgIiwgYnV0XG4iKTsgXAorCWt1bml0X3N0cmVhbV9hZGQoX19z dHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNsZWZ0LCBfX2xlZnQpOwkgICAgICAgXAorCWt1bml0 X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNyaWdodCwgX19yaWdodCk7 CSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVzdCwgIXN0 cmNtcChsZWZ0LCByaWdodCksIF9fc3RyZWFtKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisj ZGVmaW5lIEtVTklUX0FTU0VSVF9TVFJFUV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4u KSBkbyB7CSAgICAgICBcCisJc3RydWN0IGt1bml0X3N0cmVhbSAqX19zdHJlYW0gPSBLVU5JVF9B U1NFUlRfU1RBUlQodGVzdCk7CSAgICAgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0 KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAg ICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIkFz c2VydGVkICIgI2xlZnQgIiA9PSAiICNyaWdodCAiLCBidXRcbiIpOyBcCisJa3VuaXRfc3RyZWFt X2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI2xlZnQsIF9fbGVmdCk7CSAgICAgICBc CisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI3JpZ2h0LCBf X3JpZ2h0KTsJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19W QV9BUkdTX18pOwkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0FTU0VSVF9F TkQodGVzdCwgIXN0cmNtcChsZWZ0LCByaWdodCksIF9fc3RyZWFtKTsJCSAgICAgICBcCit9IHdo aWxlICgwKQorCisvKioKKyAqIEtVTklUX0FTU0VSVF9TVFJORVEoKSAtIEV4cGVjdHMgdGhhdCBz dHJpbmdzIEBsZWZ0IGFuZCBAcmlnaHQgYXJlIG5vdCBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVz dCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0 IGV2YWx1YXRlcyB0byBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcuCisgKiBAcmlnaHQ6IGFuIGFy Yml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgbnVsbCB0ZXJtaW5hdGVkIHN0 cmluZy4KKyAqCisgKiBTZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBs ZWZ0IGFuZCBAcmlnaHQgZXZhbHVhdGUgdG8gYXJlCisgKiBub3QgZXF1YWwuIFRoaXMgaXMgc2Vt YW50aWNhbGx5IGVxdWl2YWxlbnQgdG8KKyAqIEtVTklUX0FTU0VSVF9UUlVFKEB0ZXN0LCBzdHJj bXAoKEBsZWZ0KSwgKEByaWdodCkpKS4gU2VlIEtVTklUX0FTU0VSVF9UUlVFKCkKKyAqIGZvciBt b3JlIGluZm9ybWF0aW9uLgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9TVFJORVEodGVzdCwg bGVmdCwgcmlnaHQpIGRvIHsJCQkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3Ry ZWFtID0gS1VOSVRfQVNTRVJUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBf X2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChy aWdodCk7CQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQo X19zdHJlYW0sICJBc3NlcnRlZCAiICNsZWZ0ICIgPT0gIiAjcmlnaHQgIiwgYnV0XG4iKTsgXAor CWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNsZWZ0LCBfX2xl ZnQpOwkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNc biIsICNyaWdodCwgX19yaWdodCk7CSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklU X0FTU0VSVF9FTkQodGVzdCwgc3RyY21wKGxlZnQsIHJpZ2h0KSwgX19zdHJlYW0pOwkJICAgICAg IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX1NUUk5FUV9NU0codGVzdCwg bGVmdCwgcmlnaHQsIGZtdCwgLi4uKSBkbyB7CSAgICAgICBcCisJc3RydWN0IGt1bml0X3N0cmVh bSAqX19zdHJlYW0gPSBLVU5JVF9BU1NFUlRfU1RBUlQodGVzdCk7CSAgICAgICBcCisJdHlwZW9m KGxlZnQpIF9fbGVmdCA9IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3Jp Z2h0ID0gKHJpZ2h0KTsJCQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJa3VuaXRfc3Ry ZWFtX2FkZChfX3N0cmVhbSwgIkFzc2VydGVkICIgI2xlZnQgIiA9PSAiICNyaWdodCAiLCBidXRc biIpOyBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI2xl ZnQsIF9fbGVmdCk7CSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIlx0XHQl cyA9PSAlc1xuIiwgI3JpZ2h0LCBfX3JpZ2h0KTsJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRk KF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJCSAgICAgICBcCisJCQkJCQkJCQkgICAg ICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVzdCwgc3RyY21wKGxlZnQsIHJpZ2h0KSwgX19zdHJl YW0pOwkJICAgICAgIFwKK30gd2hpbGUgKDApCisKKy8qKgorICogS1VOSVRfQVNTRVJUX05PVF9F UlJfT1JfTlVMTCgpIC0gQXNzZXJ0aW9uIHRoYXQgQHB0ciBpcyBub3QgbnVsbCBhbmQgbm90IGVy ci4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBwdHI6IGFuIGFyYml0 cmFyeSBwb2ludGVyLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgdGhlIHZhbHVlIHRo YXQgQHB0ciBldmFsdWF0ZXMgdG8gaXMgbm90IG51bGwgYW5kIG5vdAorICogYW4gZXJybm8gc3Rv cmVkIGluIGEgcG9pbnRlci4gVGhpcyBpcyB0aGUgc2FtZSBhcworICogS1VOSVRfRVhQRUNUX05P VF9FUlJfT1JfTlVMTCgpLCBleGNlcHQgaXQgY2F1c2VzIGFuIGFzc2VydGlvbiBmYWlsdXJlIChz ZWUKKyAqIEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgbWV0 LgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgcHRyKSBk byB7CQkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklUX0FT U0VSVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwl0eXBlb2YocHRyKSBfX3B0ciA9IChwdHIpOwkJ CQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJaWYgKCFfX3B0cikJCQkJCQkJICAgICAg IFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwJCQkJICAgICAgIFwKKwkJCQkgIkFzc2Vy dGVkICIgI3B0ciAiIGlzIG5vdCBudWxsLCBidXQgaXNcbiIpOyAgXAorCWlmIChJU19FUlIoX19w dHIpKQkJCQkJCSAgICAgICBcCisJCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sCQkJCSAgICAg ICBcCisJCQkJICJBc3NlcnRlZCAiICNwdHIgIiBpcyBub3QgZXJyb3IsIGJ1dCBpczogJWxkXG4i LFwKKwkJCQkgUFRSX0VSUihfX3B0cikpOwkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAor CUtVTklUX0FTU0VSVF9FTkQodGVzdCwgIUlTX0VSUl9PUl9OVUxMKF9fcHRyKSwgX19zdHJlYW0p OwkgICAgICAgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfTk9UX0VSUl9P Ul9OVUxMX01TRyh0ZXN0LCBwdHIsIGZtdCwgLi4uKSBkbyB7CSAgICAgICBcCisJc3RydWN0IGt1 bml0X3N0cmVhbSAqX19zdHJlYW0gPSBLVU5JVF9BU1NFUlRfU1RBUlQodGVzdCk7CSAgICAgICBc CisJdHlwZW9mKHB0cikgX19wdHIgPSAocHRyKTsJCQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAg ICAgXAorCWlmICghX19wdHIpIHsJCQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChf X3N0cmVhbSwJCQkJICAgICAgIFwKKwkJCQkgIkFzc2VydGVkICIgI3B0ciAiIGlzIG5vdCBudWxs LCBidXQgaXNcbiIpOyAgXAorCQlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19W QV9BUkdTX18pOwkJICAgICAgIFwKKwl9CQkJCQkJCQkgICAgICAgXAorCWlmIChJU19FUlIoX19w dHIpKSB7CQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwJCQkJICAg ICAgIFwKKwkJCQkgIkFzc2VydGVkICIgI3B0ciAiIGlzIG5vdCBlcnJvciwgYnV0IGlzOiAlbGRc biIsXAorCQkJCSBQVFJfRVJSKF9fcHRyKSk7CQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBc CisJCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sIGZtdCwgIyNfX1ZBX0FSR1NfXyk7CQkgICAg ICAgXAorCX0JCQkJCQkJCSAgICAgICBcCisJS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCAhSVNfRVJS X09SX05VTEwoX19wdHIpLCBfX3N0cmVhbSk7CSAgICAgICBcCit9IHdoaWxlICgwKQorCiAjZW5k aWYgLyogX0tVTklUX1RFU1RfSCAqLwpkaWZmIC0tZ2l0IGEva3VuaXQvc3RyaW5nLXN0cmVhbS10 ZXN0LmMgYi9rdW5pdC9zdHJpbmctc3RyZWFtLXRlc3QuYwppbmRleCA5Y2YwOGY5ZGFkZjM2Li5m ZDkyOGFiN2Q2NWE4IDEwMDY0NAotLS0gYS9rdW5pdC9zdHJpbmctc3RyZWFtLXRlc3QuYworKysg Yi9rdW5pdC9zdHJpbmctc3RyZWFtLXRlc3QuYwpAQCAtMzUsNyArMzUsNyBAQCBzdGF0aWMgdm9p ZCBzdHJpbmdfc3RyZWFtX3Rlc3RfZ2V0X3N0cmluZyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJc3Ry aW5nX3N0cmVhbV9hZGQoc3RyZWFtLCAiICVzIiwgImJhciIpOwogCiAJb3V0cHV0ID0gc3RyaW5n X3N0cmVhbV9nZXRfc3RyaW5nKHN0cmVhbSk7Ci0JS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIG91 dHB1dCwgIkZvbyBiYXIiKTsKKwlLVU5JVF9BU1NFUlRfU1RSRVEodGVzdCwgb3V0cHV0LCAiRm9v IGJhciIpOwogfQogCiBzdGF0aWMgdm9pZCBzdHJpbmdfc3RyZWFtX3Rlc3RfYWRkX2FuZF9jbGVh cihzdHJ1Y3Qga3VuaXQgKnRlc3QpCkBAIC00OCwxNSArNDgsMTUgQEAgc3RhdGljIHZvaWQgc3Ry aW5nX3N0cmVhbV90ZXN0X2FkZF9hbmRfY2xlYXIoc3RydWN0IGt1bml0ICp0ZXN0KQogCQlzdHJp bmdfc3RyZWFtX2FkZChzdHJlYW0sICJBIik7CiAKIAlvdXRwdXQgPSBzdHJpbmdfc3RyZWFtX2dl dF9zdHJpbmcoc3RyZWFtKTsKLQlLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgb3V0cHV0LCAiQUFB QUFBQUFBQSIpOwotCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBzdHJlYW0tPmxlbmd0aCwgKHNpemVf dCkxMCk7Ci0JS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHN0cmluZ19zdHJlYW1faXNfZW1wdHko c3RyZWFtKSk7CisJS1VOSVRfQVNTRVJUX1NUUkVRKHRlc3QsIG91dHB1dCwgIkFBQUFBQUFBQUEi KTsKKwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgc3RyZWFtLT5sZW5ndGgsIChzaXplX3QpMTApOwor CUtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBzdHJpbmdfc3RyZWFtX2lzX2VtcHR5KHN0cmVhbSkp OwogCiAJc3RyaW5nX3N0cmVhbV9jbGVhcihzdHJlYW0pOwogCiAJb3V0cHV0ID0gc3RyaW5nX3N0 cmVhbV9nZXRfc3RyaW5nKHN0cmVhbSk7Ci0JS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIG91dHB1 dCwgIiIpOwotCUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHN0cmluZ19zdHJlYW1faXNfZW1wdHko c3RyZWFtKSk7CisJS1VOSVRfQVNTRVJUX1NUUkVRKHRlc3QsIG91dHB1dCwgIiIpOworCUtVTklU X0FTU0VSVF9UUlVFKHRlc3QsIHN0cmluZ19zdHJlYW1faXNfZW1wdHkoc3RyZWFtKSk7CiB9CiAK IHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfc3RyZWFtX3Rlc3RfY2FzZXNbXSA9IHsK ZGlmZiAtLWdpdCBhL2t1bml0L3Rlc3QtdGVzdC5jIGIva3VuaXQvdGVzdC10ZXN0LmMKaW5kZXgg ODhmNGNkZjAzZGIyYS4uMDU4ZjNmYjM3NDU4YSAxMDA2NDQKLS0tIGEva3VuaXQvdGVzdC10ZXN0 LmMKKysrIGIva3VuaXQvdGVzdC10ZXN0LmMKQEAgLTc4LDExICs3OCwxMyBAQCBzdGF0aWMgaW50 IGt1bml0X3RyeV9jYXRjaF90ZXN0X2luaXQoc3RydWN0IGt1bml0ICp0ZXN0KQogCXN0cnVjdCBr dW5pdF90cnlfY2F0Y2hfdGVzdF9jb250ZXh0ICpjdHg7CiAKIAljdHggPSBrdW5pdF9remFsbG9j KHRlc3QsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7CisJS1VOSVRfQVNTRVJUX05PVF9FUlJf T1JfTlVMTCh0ZXN0LCBjdHgpOwogCXRlc3QtPnByaXYgPSBjdHg7CiAKIAljdHgtPnRyeV9jYXRj aCA9IGt1bml0X2ttYWxsb2ModGVzdCwKIAkJCQkgICAgICAgc2l6ZW9mKCpjdHgtPnRyeV9jYXRj aCksCiAJCQkJICAgICAgIEdGUF9LRVJORUwpOworCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05V TEwodGVzdCwgY3R4LT50cnlfY2F0Y2gpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9r dW5pdC90ZXN0LmMgYi9rdW5pdC90ZXN0LmMKaW5kZXggMTJkYjUwYjIyMTc4MS4uMjcyM2Y3YmMw NDY4MiAxMDA2NDQKLS0tIGEva3VuaXQvdGVzdC5jCisrKyBiL2t1bml0L3Rlc3QuYwpAQCAtNDk5 LDMgKzQ5OSw2OSBAQCB2b2lkIGt1bml0X2V4cGVjdF9wdHJfYmluYXJ5X21zZyhzdHJ1Y3Qga3Vu aXQgKnRlc3QsCiAKIAlrdW5pdF9leHBlY3RfZW5kKHRlc3QsIGNvbXBhcmVfcmVzdWx0LCBzdHJl YW0pOwogfQorCit2b2lkIGt1bml0X2Fzc2VydF9iaW5hcnlfbXNnKHN0cnVjdCBrdW5pdCAqdGVz dCwKKwkJCSAgICAgbG9uZyBsb25nIGxlZnQsIGNvbnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCSAg ICAgbG9uZyBsb25nIHJpZ2h0LCBjb25zdCBjaGFyICpyaWdodF9uYW1lLAorCQkJICAgICBib29s IGNvbXBhcmVfcmVzdWx0LAorCQkJICAgICBjb25zdCBjaGFyICpjb21wYXJlX25hbWUsCisJCQkg ICAgIGNvbnN0IGNoYXIgKmZpbGUsCisJCQkgICAgIGNvbnN0IGNoYXIgKmxpbmUsCisJCQkgICAg IGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXN0cnVjdCBrdW5pdF9zdHJlYW0gKnN0cmVhbSA9 IGt1bml0X2Fzc2VydF9zdGFydCh0ZXN0LCBmaWxlLCBsaW5lKTsKKwlzdHJ1Y3QgdmFfZm9ybWF0 IHZhZjsKKwl2YV9saXN0IGFyZ3M7CisKKwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwKKwkJCSAi QXNzZXJ0ZWQgJXMgJXMgJXMsIGJ1dFxuIiwKKwkJCSBsZWZ0X25hbWUsIGNvbXBhcmVfbmFtZSwg cmlnaHRfbmFtZSk7CisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcdFx0JXMgPT0gJWxsZFxu IiwgbGVmdF9uYW1lLCBsZWZ0KTsKKwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwgIlx0XHQlcyA9 PSAlbGxkXG4iLCByaWdodF9uYW1lLCByaWdodCk7CisKKwlpZiAoZm10KSB7CisJCXZhX3N0YXJ0 KGFyZ3MsIGZtdCk7CisKKwkJdmFmLmZtdCA9IGZtdDsKKwkJdmFmLnZhID0gJmFyZ3M7CisKKwkJ a3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcbiVwViIsICZ2YWYpOworCisJCXZhX2VuZChhcmdz KTsKKwl9CisKKwlrdW5pdF9hc3NlcnRfZW5kKHRlc3QsIGNvbXBhcmVfcmVzdWx0LCBzdHJlYW0p OworfQorCit2b2lkIGt1bml0X2Fzc2VydF9wdHJfYmluYXJ5X21zZyhzdHJ1Y3Qga3VuaXQgKnRl c3QsCisJCQkJIHZvaWQgKmxlZnQsIGNvbnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCQkgdm9pZCAq cmlnaHQsIGNvbnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkJIGJvb2wgY29tcGFyZV9yZXN1bHQs CisJCQkJIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJCQkgY29uc3QgY2hhciAqZmlsZSwK KwkJCQkgY29uc3QgY2hhciAqbGluZSwKKwkJCQkgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJ c3RydWN0IGt1bml0X3N0cmVhbSAqc3RyZWFtID0ga3VuaXRfYXNzZXJ0X3N0YXJ0KHRlc3QsIGZp bGUsIGxpbmUpOworCXN0cnVjdCB2YV9mb3JtYXQgdmFmOworCXZhX2xpc3QgYXJnczsKKworCWt1 bml0X3N0cmVhbV9hZGQoc3RyZWFtLAorCQkJICJBc3NlcnRlZCAlcyAlcyAlcywgYnV0XG4iLAor CQkJIGxlZnRfbmFtZSwgY29tcGFyZV9uYW1lLCByaWdodF9uYW1lKTsKKwlrdW5pdF9zdHJlYW1f YWRkKHN0cmVhbSwgIlx0XHQlcyA9PSAlcEtcbiIsIGxlZnRfbmFtZSwgbGVmdCk7CisJa3VuaXRf c3RyZWFtX2FkZChzdHJlYW0sICJcdFx0JXMgPT0gJXBLIiwgcmlnaHRfbmFtZSwgcmlnaHQpOwor CisJaWYgKGZtdCkgeworCQl2YV9zdGFydChhcmdzLCBmbXQpOworCisJCXZhZi5mbXQgPSBmbXQ7 CisJCXZhZi52YSA9ICZhcmdzOworCisJCWt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXG4lcFYi LCAmdmFmKTsKKworCQl2YV9lbmQoYXJncyk7CisJfQorCisJa3VuaXRfYXNzZXJ0X2VuZCh0ZXN0 LCBjb21wYXJlX3Jlc3VsdCwgc3RyZWFtKTsKK30KLS0gCjIuMjIuMC41MTAuZzI2NGYyYzgxN2Et Z29vZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs