From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v9 11/18] kunit: test: add the concept of assertions Date: Fri, 12 Jul 2019 01:17:37 -0700 Message-ID: <20190712081744.87097-12-brendanhiggins@google.com> References: <20190712081744.87097-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190712081744.87097-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: linux-nvdimm@lists.01.org QWRkIHN1cHBvcnQgZm9yIGFzc2VydGlvbnMgd2hpY2ggYXJlIGxpa2UgZXhwZWN0YXRpb25zIGV4 Y2VwdCB0aGUgdGVzdAp0ZXJtaW5hdGVzIGlmIHRoZSBhc3NlcnRpb24gaXMgbm90IHNhdGlzZmll ZC4KClRoZSBpZGVhIHdpdGggYXNzZXJ0aW9ucyBpcyB0aGF0IHlvdSB1c2UgdGhlbSB0byBzdGF0 ZSBhbGwgdGhlCnByZWNvbmRpdGlvbnMgZm9yIHlvdXIgdGVzdC4gTG9naWNhbGx5IHNwZWFraW5n LCB0aGVzZSBhcmUgdGhlIHByZW1pc2VzCm9mIHRoZSB0ZXN0IGNhc2UsIHNvIGlmIGEgcHJlbWlz ZSBpc24ndCB0cnVlLCB0aGVyZSBpcyBubyBwb2ludCBpbgpjb250aW51aW5nIHRoZSB0ZXN0IGNh c2UgYmVjYXVzZSB0aGVyZSBhcmUgbm8gY29uY2x1c2lvbnMgdGhhdCBjYW4gYmUKZHJhd24gd2l0 aG91dCB0aGUgcHJlbWlzZXMuIFdoZXJlYXMsIHRoZSBleHBlY3RhdGlvbiBpcyB0aGUgdGhpbmcg eW91CmFyZSB0cnlpbmcgdG8gcHJvdmUuIEl0IGlzIG5vdCB1c2VkIHVuaXZlcnNhbGx5IGluIHgt dW5pdCBzdHlsZSB0ZXN0CmZyYW1ld29ya3MsIGJ1dCBJIHJlYWxseSBsaWtlIGl0IGFzIGEgY29u dmVudGlvbi4gIFlvdSBjb3VsZCBzdGlsbApleHByZXNzIHRoZSBpZGVhIG9mIGEgcHJlbWlzZSB1 c2luZyB0aGUgYWJvdmUgaWRpb20sIGJ1dCBJIHRoaW5rCktVTklUX0FTU0VSVF8qIHN0YXRlcyB0 aGUgaW50ZW5kZWQgaWRlYSBwZXJmZWN0bHkuCgpTaWduZWQtb2ZmLWJ5OiBCcmVuZGFuIEhpZ2dp bnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBHcmVnIEtyb2FoLUhh cnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1ieTogTG9nYW4gR3Vu dGhvcnBlIDxsb2dhbmdAZGVsdGF0ZWUuY29tPgotLS0KIGluY2x1ZGUva3VuaXQvdGVzdC5oICAg ICAgIHwgNDk5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGt1bml0L3N0 cmluZy1zdHJlYW0tdGVzdC5jIHwgIDEyICstCiBrdW5pdC90ZXN0LXRlc3QuYyAgICAgICAgICB8 ICAgMiArCiBrdW5pdC90ZXN0LmMgICAgICAgICAgICAgICB8ICA2NiArKysrKwogNCBmaWxlcyBj aGFuZ2VkLCA1NzAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9p bmNsdWRlL2t1bml0L3Rlc3QuaCBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCmluZGV4IDAxNDQwZjM1 Njk4NDcuLmU5NzI3M2ViNTJmNTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUva3VuaXQvdGVzdC5oCisr KyBiL2luY2x1ZGUva3VuaXQvdGVzdC5oCkBAIC04Niw5ICs4NiwxMCBAQCBzdHJ1Y3Qga3VuaXQ7 CiAgKiBAbmFtZTogdGhlIG5hbWUgb2YgdGhlIHRlc3QgY2FzZS4KICAqCiAgKiBBIHRlc3QgY2Fz ZSBpcyBhIGZ1bmN0aW9uIHdpdGggdGhlIHNpZ25hdHVyZSwgYGB2b2lkICgqKShzdHJ1Y3Qga3Vu aXQgKilgYAotICogdGhhdCBtYWtlcyBleHBlY3RhdGlvbnMgKHNlZSBLVU5JVF9FWFBFQ1RfVFJV RSgpKSBhYm91dCBjb2RlIHVuZGVyIHRlc3QuIEVhY2gKLSAqIHRlc3QgY2FzZSBpcyBhc3NvY2lh dGVkIHdpdGggYSAmc3RydWN0IGt1bml0X3N1aXRlIGFuZCB3aWxsIGJlIHJ1biBhZnRlciB0aGUK LSAqIHN1aXRlJ3MgaW5pdCBmdW5jdGlvbiBhbmQgZm9sbG93ZWQgYnkgdGhlIHN1aXRlJ3MgZXhp dCBmdW5jdGlvbi4KKyAqIHRoYXQgbWFrZXMgZXhwZWN0YXRpb25zIGFuZCBhc3NlcnRpb25zIChz ZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSBhbmQKKyAqIEtVTklUX0FTU0VSVF9UUlVFKCkpIGFib3V0 IGNvZGUgdW5kZXIgdGVzdC4gRWFjaCB0ZXN0IGNhc2UgaXMgYXNzb2NpYXRlZCB3aXRoCisgKiBh ICZzdHJ1Y3Qga3VuaXRfc3VpdGUgYW5kIHdpbGwgYmUgcnVuIGFmdGVyIHRoZSBzdWl0ZSdzIGlu aXQgZnVuY3Rpb24gYW5kCisgKiBmb2xsb3dlZCBieSB0aGUgc3VpdGUncyBleGl0IGZ1bmN0aW9u LgogICoKICAqIEEgdGVzdCBjYXNlIHNob3VsZCBiZSBzdGF0aWMgYW5kIHNob3VsZCBvbmx5IGJl IGNyZWF0ZWQgd2l0aCB0aGUgS1VOSVRfQ0FTRSgpCiAgKiBtYWNybzsgYWRkaXRpb25hbGx5LCBl dmVyeSBhcnJheSBvZiB0ZXN0IGNhc2VzIHNob3VsZCBiZSB0ZXJtaW5hdGVkIHdpdGggYW4KQEAg LTgzNiw0ICs4MzcsNDk2IEBAIGRvIHsJCQkJCQkJCQkgICAgICAgXAogCUtVTklUX0VYUEVDVF9F TkQodGVzdCwgIUlTX0VSUl9PUl9OVUxMKF9fcHRyKSwgX19zdHJlYW0pOwkgICAgICAgXAogfSB3 aGlsZSAoMCkKIAorc3RhdGljIGlubGluZSBzdHJ1Y3Qga3VuaXRfc3RyZWFtICprdW5pdF9hc3Nl cnRfc3RhcnQoc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJCQkJICAgICAgY29uc3QgY2hhciAqZmls ZSwKKwkJCQkJCSAgICAgIGNvbnN0IGNoYXIgKmxpbmUpCit7CisJc3RydWN0IGt1bml0X3N0cmVh bSAqc3RyZWFtID0gYWxsb2Nfa3VuaXRfc3RyZWFtKHRlc3QsIEtFUk5fRVJSKTsKKworCWt1bml0 X3N0cmVhbV9hZGQoc3RyZWFtLCAiQVNTRVJUSU9OIEZBSUxFRCBhdCAlczolc1xuXHQiLCBmaWxl LCBsaW5lKTsKKworCXJldHVybiBzdHJlYW07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBrdW5p dF9hc3NlcnRfZW5kKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCQkgICAgYm9vbCBzdWNjZXNzLAor CQkJCSAgICBzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0pCit7CisJaWYgKCFzdWNjZXNzKSB7 CisJCWt1bml0X2ZhaWwodGVzdCwgc3RyZWFtKTsKKwkJa3VuaXRfYWJvcnQodGVzdCk7CisJfSBl bHNlIHsKKwkJa3VuaXRfc3RyZWFtX2NsZWFyKHN0cmVhbSk7CisJfQorfQorCisjZGVmaW5lIEtV TklUX0FTU0VSVF9TVEFSVCh0ZXN0KSBcCisJCWt1bml0X2Fzc2VydF9zdGFydCh0ZXN0LCBfX0ZJ TEVfXywgX19zdHJpbmdpZnkoX19MSU5FX18pKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9FTkQo dGVzdCwgc3VjY2Vzcywgc3RyZWFtKSBcCisJCWt1bml0X2Fzc2VydF9lbmQodGVzdCwgc3VjY2Vz cywgc3RyZWFtKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVCh0ZXN0LCBzdWNjZXNzLCBtZXNzYWdl KSBkbyB7CQkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklU X0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJa3VuaXRf c3RyZWFtX2FkZChfX3N0cmVhbSwgbWVzc2FnZSk7CQkJCSAgICAgICBcCisJS1VOSVRfQVNTRVJU X0VORCh0ZXN0LCBzdWNjZXNzLCBfX3N0cmVhbSk7CQkJICAgICAgIFwKK30gd2hpbGUgKDApCisK KyNkZWZpbmUgS1VOSVRfQVNTRVJUX01TRyh0ZXN0LCBzdWNjZXNzLCBtZXNzYWdlLCBmbXQsIC4u LikgZG8gewkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklU X0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJa3VuaXRf c3RyZWFtX2FkZChfX3N0cmVhbSwgbWVzc2FnZSk7CQkJCSAgICAgICBcCisJa3VuaXRfc3RyZWFt X2FkZChfX3N0cmVhbSwgZm10LCAjI19fVkFfQVJHU19fKTsJCQkgICAgICAgXAorCUtVTklUX0FT U0VSVF9FTkQodGVzdCwgc3VjY2VzcywgX19zdHJlYW0pOwkJCSAgICAgICBcCit9IHdoaWxlICgw KQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9GQUlMVVJFKHRlc3QsIGZtdCwgLi4uKSBkbyB7CQkJ ICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklUX0FTU0VSVF9T VEFSVCh0ZXN0KTsJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2Fk ZChfX3N0cmVhbSwgZm10LCAjI19fVkFfQVJHU19fKTsJCQkgICAgICAgXAorCUtVTklUX0FTU0VS VF9FTkQodGVzdCwgZmFsc2UsIF9fc3RyZWFtKTsJCQkgICAgICAgXAorfSB3aGlsZSAoMCkKKwor LyoqCisgKiBLVU5JVF9BU1NFUlRfVFJVRSgpIC0gU2V0cyBhbiBhc3NlcnRpb24gdGhhdCBAY29u ZGl0aW9uIGlzIHRydWUuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBA Y29uZGl0aW9uOiBhbiBhcmJpdHJhcnkgYm9vbGVhbiBleHByZXNzaW9uLiBUaGUgdGVzdCBmYWls cyBhbmQgYWJvcnRzIHdoZW4KKyAqIHRoaXMgZG9lcyBub3QgZXZhbHVhdGUgdG8gdHJ1ZS4KKyAq CisgKiBUaGlzIGFuZCBhc3NlcnRpb25zIG9mIHRoZSBmb3JtIGBLVU5JVF9BU1NFUlRfKmAgd2ls bCBjYXVzZSB0aGUgdGVzdCBjYXNlIHRvCisgKiBmYWlsICphbmQgaW1tZWRpYXRlbHkgYWJvcnQq IHdoZW4gdGhlIHNwZWNpZmllZCBjb25kaXRpb24gaXMgbm90IG1ldC4gVW5saWtlCisgKiBhbiBl eHBlY3RhdGlvbiBmYWlsdXJlLCBpdCB3aWxsIHByZXZlbnQgdGhlIHRlc3QgY2FzZSBmcm9tIGNv bnRpbnVpbmcgdG8gcnVuOworICogdGhpcyBpcyBvdGhlcndpc2Uga25vd24gYXMgYW4gKmFzc2Vy dGlvbiBmYWlsdXJlKi4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCBjb25k aXRpb24pCQkJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVCh0ZXN0LCAoY29uZGl0aW9uKSwJCQkJ ICAgICAgIFwKKwkJCSAgICAgIkFzc2VydGVkICIgI2NvbmRpdGlvbiAiIGlzIHRydWUsIGJ1dCBp cyBmYWxzZVxuIikKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfVFJVRV9NU0codGVzdCwgY29uZGl0 aW9uLCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9NU0codGVzdCwgKGNvbmRp dGlvbiksCQkJICAgICAgIFwKKwkJCQkgIkFzc2VydGVkICIgI2NvbmRpdGlvbiAiIGlzIHRydWUs IGJ1dCBpcyBmYWxzZVxuIixcCisJCQkJIGZtdCwgIyNfX1ZBX0FSR1NfXykKKworLyoqCisgKiBL VU5JVF9BU1NFUlRfRkFMU0UoKSAtIFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgQGNvbmRpdGlvbiBp cyBmYWxzZS4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBjb25kaXRp b246IGFuIGFyYml0cmFyeSBib29sZWFuIGV4cHJlc3Npb24uCisgKgorICogU2V0cyBhbiBhc3Nl cnRpb24gdGhhdCB0aGUgdmFsdWUgdGhhdCBAY29uZGl0aW9uIGV2YWx1YXRlcyB0byBpcyBmYWxz ZS4gVGhpcworICogaXMgdGhlIHNhbWUgYXMgS1VOSVRfRVhQRUNUX0ZBTFNFKCksIGV4Y2VwdCBp dCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZhaWx1cmUKKyAqIChzZWUgS1VOSVRfQVNTRVJUX1RSVUUo KSkgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBtZXQuCisgKi8KKyNkZWZpbmUgS1VOSVRfQVNT RVJUX0ZBTFNFKHRlc3QsIGNvbmRpdGlvbikJCQkJICAgICAgIFwKKwkJS1VOSVRfQVNTRVJUKHRl c3QsICEoY29uZGl0aW9uKSwJCQkgICAgICAgXAorCQkJICAgICAiQXNzZXJ0ZWQgIiAjY29uZGl0 aW9uICIgaXMgZmFsc2UsIGJ1dCBpcyB0cnVlXG4iKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9G QUxTRV9NU0codGVzdCwgY29uZGl0aW9uLCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FT U0VSVF9NU0codGVzdCwgIShjb25kaXRpb24pLAkJCSAgICAgICBcCisJCQkJICJBc3NlcnRlZCAi ICNjb25kaXRpb24gIiBpcyBmYWxzZSwgYnV0IGlzIHRydWVcbiIsXAorCQkJCSBmbXQsICMjX19W QV9BUkdTX18pCisKK3ZvaWQga3VuaXRfYXNzZXJ0X2JpbmFyeV9tc2coc3RydWN0IGt1bml0ICp0 ZXN0LAorCQkJICAgICBsb25nIGxvbmcgbGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJ ICAgICBsb25nIGxvbmcgcmlnaHQsIGNvbnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkgICAgIGJv b2wgY29tcGFyZV9yZXN1bHQsCisJCQkgICAgIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJ CSAgICAgY29uc3QgY2hhciAqZmlsZSwKKwkJCSAgICAgY29uc3QgY2hhciAqbGluZSwKKwkJCSAg ICAgY29uc3QgY2hhciAqZm10LCAuLi4pOworCitzdGF0aWMgaW5saW5lIHZvaWQga3VuaXRfYXNz ZXJ0X2JpbmFyeShzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkJICAgICAgIGxvbmcgbG9uZyBsZWZ0 LCBjb25zdCBjaGFyICpsZWZ0X25hbWUsCisJCQkJICAgICAgIGxvbmcgbG9uZyByaWdodCwgY29u c3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCQkgICAgICAgYm9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJ CQkgICAgICAgY29uc3QgY2hhciAqY29tcGFyZV9uYW1lLAorCQkJCSAgICAgICBjb25zdCBjaGFy ICpmaWxlLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpsaW5lKQoreworCWt1bml0X2Fzc2VydF9i aW5hcnlfbXNnKHRlc3QsCisJCQkJbGVmdCwgbGVmdF9uYW1lLAorCQkJCXJpZ2h0LCByaWdodF9u YW1lLAorCQkJCWNvbXBhcmVfcmVzdWx0LAorCQkJCWNvbXBhcmVfbmFtZSwKKwkJCQlmaWxlLAor CQkJCWxpbmUsCisJCQkJTlVMTCk7Cit9CisKK3ZvaWQga3VuaXRfYXNzZXJ0X3B0cl9iaW5hcnlf bXNnKHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCQkgdm9pZCAqbGVmdCwgY29uc3QgY2hhciAqbGVm dF9uYW1lLAorCQkJCSB2b2lkICpyaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCQkg Ym9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJCQkgY29uc3QgY2hhciAqY29tcGFyZV9uYW1lLAorCQkJ CSBjb25zdCBjaGFyICpmaWxlLAorCQkJCSBjb25zdCBjaGFyICpsaW5lLAorCQkJCSBjb25zdCBj aGFyICpmbXQsIC4uLik7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBrdW5pdF9hc3NlcnRfcHRyX2Jp bmFyeShzdHJ1Y3Qga3VuaXQgKnRlc3QsCisJCQkJCSAgIHZvaWQgKmxlZnQsIGNvbnN0IGNoYXIg KmxlZnRfbmFtZSwKKwkJCQkJICAgdm9pZCAqcmlnaHQsIGNvbnN0IGNoYXIgKnJpZ2h0X25hbWUs CisJCQkJCSAgIGJvb2wgY29tcGFyZV9yZXN1bHQsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbXBh cmVfbmFtZSwKKwkJCQkJICAgY29uc3QgY2hhciAqZmlsZSwKKwkJCQkJICAgY29uc3QgY2hhciAq bGluZSkKK3sKKwlrdW5pdF9hc3NlcnRfcHRyX2JpbmFyeV9tc2codGVzdCwKKwkJCQkgICAgbGVm dCwgbGVmdF9uYW1lLAorCQkJCSAgICByaWdodCwgcmlnaHRfbmFtZSwKKwkJCQkgICAgY29tcGFy ZV9yZXN1bHQsCisJCQkJICAgIGNvbXBhcmVfbmFtZSwKKwkJCQkgICAgZmlsZSwKKwkJCQkgICAg bGluZSwKKwkJCQkgICAgTlVMTCk7Cit9CisKKy8qCisgKiBBIGZhY3RvcnkgbWFjcm8gZm9yIGRl ZmluaW5nIHRoZSBleHBlY3RhdGlvbnMgZm9yIHRoZSBiYXNpYyBjb21wYXJpc29ucworICogZGVm aW5lZCBmb3IgdGhlIGJ1aWx0IGluIHR5cGVzLgorICoKKyAqIFVuZm9ydHVuYXRlbHksIHRoZXJl IGlzIG5vIGNvbW1vbiB0eXBlIHRoYXQgYWxsIHR5cGVzIGNhbiBiZSBwcm9tb3RlZCB0byBmb3IK KyAqIHdoaWNoIGFsbCB0aGUgYmluYXJ5IG9wZXJhdG9ycyBiZWhhdmUgdGhlIHNhbWUgd2F5IGFz IGZvciB0aGUgYWN0dWFsIHR5cGVzCisgKiAoZm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIHR5cGUg dGhhdCBsb25nIGxvbmcgYW5kIHVuc2lnbmVkIGxvbmcgbG9uZyBjYW4KKyAqIGJvdGggYmUgY2Fz dCB0byB3aGVyZSB0aGUgY29tcGFyaXNvbiByZXN1bHQgaXMgcHJlc2VydmVkIGZvciBhbGwgdmFs dWVzKS4gU28KKyAqIHRoZSBiZXN0IHdlIGNhbiBkbyBpcyBkbyB0aGUgY29tcGFyaXNvbiBpbiB0 aGUgb3JpZ2luYWwgdHlwZXMgYW5kIHRoZW4gY29lcmNlCisgKiBldmVyeXRoaW5nIHRvIGxvbmcg bG9uZyBmb3IgcHJpbnRpbmc7IHRoaXMgd2F5LCB0aGUgY29tcGFyaXNvbiBiZWhhdmVzCisgKiBj b3JyZWN0bHkgYW5kIHRoZSBwcmludGVkIG91dCB2YWx1ZSB1c3VhbGx5IG1ha2VzIHNlbnNlIHdp dGhvdXQKKyAqIGludGVycHJldGF0aW9uLCBidXQgY2FuIGFsd2F5cyBiZSBpbnRlcnByZXR0ZWQg dG8gZmlndXJlIG91dCB0aGUgYWN0dWFsCisgKiB2YWx1ZS4KKyAqLworI2RlZmluZSBLVU5JVF9B U1NFUlRfQklOQVJZKHRlc3QsIGxlZnQsIGNvbmRpdGlvbiwgcmlnaHQpIGRvIHsJCSAgICAgICBc CisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJp Z2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAgICAgIFwKKwlfX2t1bml0X3R5cGVjaGVjayhf X2xlZnQsIF9fcmlnaHQpOwkJCQkgICAgICAgXAorCWt1bml0X2Fzc2VydF9iaW5hcnkodGVzdCwJ CQkJCSAgICAgICBcCisJCQkgICAgKGxvbmcgbG9uZykgX19sZWZ0LCAjbGVmdCwJCQkgICAgICAg XAorCQkJICAgIChsb25nIGxvbmcpIF9fcmlnaHQsICNyaWdodCwJCSAgICAgICBcCisJCQkgICAg X19sZWZ0IGNvbmRpdGlvbiBfX3JpZ2h0LCAjY29uZGl0aW9uLAkgICAgICAgXAorCQkJICAgIF9f RklMRV9fLCBfX3N0cmluZ2lmeShfX0xJTkVfXykpOwkJICAgICAgIFwKK30gd2hpbGUgKDApCisK KyNkZWZpbmUgS1VOSVRfQVNTRVJUX0JJTkFSWV9NU0codGVzdCwgbGVmdCwgY29uZGl0aW9uLCBy aWdodCwgZm10LCAuLi4pIGRvIHsgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0KTsJ CQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAgICAg IFwKKwlfX2t1bml0X3R5cGVjaGVjayhfX2xlZnQsIF9fcmlnaHQpOwkJCQkgICAgICAgXAorCWt1 bml0X2Fzc2VydF9iaW5hcnlfbXNnKHRlc3QsCQkJCQkgICAgICAgXAorCQkJCShsb25nIGxvbmcp IF9fbGVmdCwgI2xlZnQsCQkgICAgICAgXAorCQkJCShsb25nIGxvbmcpIF9fcmlnaHQsICNyaWdo dCwJCSAgICAgICBcCisJCQkJX19sZWZ0IGNvbmRpdGlvbiBfX3JpZ2h0LCAjY29uZGl0aW9uLAkg ICAgICAgXAorCQkJCV9fRklMRV9fLCBfX3N0cmluZ2lmeShfX0xJTkVfXyksCSAgICAgICBcCisJ CQkJZm10LCAjI19fVkFfQVJHU19fKTsJCQkgICAgICAgXAorfSB3aGlsZSAoMCkKKworLyoKKyAq IEp1c3QgbGlrZSBLVU5JVF9FWFBFQ1RfQklOQVJZLCBidXQgZm9yIGNvbXBhcmluZyBwb2ludGVy IHR5cGVzLgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9QVFJfQklOQVJZKHRlc3QsIGxlZnQs IGNvbmRpdGlvbiwgcmlnaHQpIGRvIHsJICAgICAgIFwKKwl0eXBlb2YobGVmdCkgX19sZWZ0ID0g KGxlZnQpOwkJCQkJICAgICAgIFwKKwl0eXBlb2YocmlnaHQpIF9fcmlnaHQgPSAocmlnaHQpOwkJ CQkgICAgICAgXAorCV9fa3VuaXRfdHlwZWNoZWNrKF9fbGVmdCwgX19yaWdodCk7CQkJCSAgICAg ICBcCisJa3VuaXRfYXNzZXJ0X3B0cl9iaW5hcnkodGVzdCwJCQkJCSAgICAgICBcCisJCQkJKHZv aWQgKikgX19sZWZ0LCAjbGVmdCwJCQkgICAgICAgXAorCQkJCSh2b2lkICopIF9fcmlnaHQsICNy aWdodCwJCSAgICAgICBcCisJCQkJX19sZWZ0IGNvbmRpdGlvbiBfX3JpZ2h0LCAjY29uZGl0aW9u LAkgICAgICAgXAorCQkJCV9fRklMRV9fLCBfX3N0cmluZ2lmeShfX0xJTkVfXykpOwkgICAgICAg XAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfUFRSX0JJTkFSWV9NU0codGVz dCwgbGVmdCwgY29uZGl0aW9uLCByaWdodCwgZm10LCAuLi4pICAgIFwKK2RvIHsJCQkJCQkJCQkg ICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5 cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJX19rdW5pdF90eXBl Y2hlY2soX19sZWZ0LCBfX3JpZ2h0KTsJCQkJICAgICAgIFwKKwlrdW5pdF9hc3NlcnRfcHRyX2Jp bmFyeV9tc2codGVzdCwJCQkJICAgICAgIFwKKwkJCQkgICAgKHZvaWQgKikgX19sZWZ0LCAjbGVm dCwJCSAgICAgICBcCisJCQkJICAgICh2b2lkICopIF9fcmlnaHQsICNyaWdodCwJCSAgICAgICBc CisJCQkJICAgIF9fbGVmdCBjb25kaXRpb24gX19yaWdodCwgI2NvbmRpdGlvbiwgICAgICBcCisJ CQkJICAgIF9fRklMRV9fLCBfX3N0cmluZ2lmeShfX0xJTkVfXyksCSAgICAgICBcCisJCQkJICAg IGZtdCwgIyNfX1ZBX0FSR1NfXyk7CQkgICAgICAgXAorfSB3aGlsZSAoMCkKKworLyoqCisgKiBL VU5JVF9BU1NFUlRfRVEoKSAtIFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgQGxlZnQgYW5kIEByaWdo dCBhcmUgZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVm dDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUg QyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRl cyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0 aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBldmFsdWF0ZSB0byBhcmUKKyAqIGVxdWFs LiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtVTklUX0VYUEVDVF9FUSgpLCBleGNlcHQgaXQgY2F1c2Vz IGFuIGFzc2VydGlvbgorICogZmFpbHVyZSAoc2VlIEtVTklUX0FTU0VSVF9UUlVFKCkpIHdoZW4g dGhlIGFzc2VydGlvbiBpcyBub3QgbWV0LgorICovCisjZGVmaW5lIEtVTklUX0FTU0VSVF9FUSh0 ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9BU1NFUlRfQklOQVJZKHRlc3QsIGxlZnQsID09 LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfRVFfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0 LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9CSU5BUllfTVNHKHRlc3QsCQkJ CSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJCQkJCT09LAkJCQkgICAgICAgXAor CQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19f VkFfQVJHU19fKQorCisvKioKKyAqIEtVTklUX0FTU0VSVF9QVFJfRVEoKSAtIEFzc2VydHMgdGhh dCBwb2ludGVycyBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVz dCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0 IGV2YWx1YXRlcyB0byBhIHBvaW50ZXIuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNz aW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcG9pbnRlci4KKyAqCisgKiBTZXRzIGFuIGFzc2VydGlv biB0aGF0IHRoZSB2YWx1ZXMgdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZQor ICogZXF1YWwuIFRoaXMgaXMgdGhlIHNhbWUgYXMgS1VOSVRfRVhQRUNUX0VRKCksIGV4Y2VwdCBp dCBjYXVzZXMgYW4gYXNzZXJ0aW9uCisgKiBmYWlsdXJlIChzZWUgS1VOSVRfQVNTRVJUX1RSVUUo KSkgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG5vdCBtZXQuCisgKi8KKyNkZWZpbmUgS1VOSVRfQVNT RVJUX1BUUl9FUSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9BU1NFUlRfUFRSX0JJTkFS WSh0ZXN0LCBsZWZ0LCA9PSwgcmlnaHQpCisKKyNkZWZpbmUgS1VOSVRfQVNTRVJUX1BUUl9FUV9N U0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRfQVNTRVJU X1BUUl9CSU5BUllfTVNHKHRlc3QsCQkJICAgICAgIFwKKwkJCQkJICAgIGxlZnQsCQkJICAgICAg IFwKKwkJCQkJICAgID09LAkJCQkgICAgICAgXAorCQkJCQkgICAgcmlnaHQsCQkJICAgICAgIFwK KwkJCQkJICAgIGZtdCwJCQkgICAgICAgXAorCQkJCQkgICAgIyNfX1ZBX0FSR1NfXykKKworLyoq CisgKiBLVU5JVF9BU1NFUlRfTkUoKSAtIEFuIGFzc2VydGlvbiB0aGF0IEBsZWZ0IGFuZCBAcmln aHQgYXJlIG5vdCBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAq IEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1p dGl2ZSBDIHR5cGUuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZh bHVhdGVzIHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqCisgKiBTZXRzIGFuIGFzc2VydGlvbiB0 aGF0IHRoZSB2YWx1ZXMgdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZSBub3QK KyAqIGVxdWFsLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtVTklUX0VYUEVDVF9ORSgpLCBleGNlcHQg aXQgY2F1c2VzIGFuIGFzc2VydGlvbgorICogZmFpbHVyZSAoc2VlIEtVTklUX0FTU0VSVF9UUlVF KCkpIHdoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgbWV0LgorICovCisjZGVmaW5lIEtVTklUX0FT U0VSVF9ORSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9BU1NFUlRfQklOQVJZKHRlc3Qs IGxlZnQsICE9LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfTkVfTVNHKHRlc3QsIGxl ZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9CSU5BUllfTVNH KHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJCQkJCSE9LAkJCQkg ICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAor CQkJCQkjI19fVkFfQVJHU19fKQorCisvKioKKyAqIEtVTklUX0FTU0VSVF9QVFJfTkUoKSAtIEFz c2VydHMgdGhhdCBwb2ludGVycyBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBub3QgZXF1YWwuCisgKiBL VU5JVF9BU1NFUlRfUFRSX0VRKCkgLSBBc3NlcnRzIHRoYXQgcG9pbnRlcnMgQGxlZnQgYW5kIEBy aWdodCBhcmUgZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBA bGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwb2ludGVy LgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBh IHBvaW50ZXIuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0aGUgdmFsdWVzIHRoYXQg QGxlZnQgYW5kIEByaWdodCBldmFsdWF0ZSB0byBhcmUgbm90CisgKiBlcXVhbC4gVGhpcyBpcyB0 aGUgc2FtZSBhcyBLVU5JVF9FWFBFQ1RfTkUoKSwgZXhjZXB0IGl0IGNhdXNlcyBhbiBhc3NlcnRp b24KKyAqIGZhaWx1cmUgKHNlZSBLVU5JVF9BU1NFUlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRp b24gaXMgbm90IG1ldC4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NFUlRfUFRSX05FKHRlc3QsIGxl ZnQsIHJpZ2h0KSBcCisJCUtVTklUX0FTU0VSVF9QVFJfQklOQVJZKHRlc3QsIGxlZnQsICE9LCBy aWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfUFRSX05FX01TRyh0ZXN0LCBsZWZ0LCByaWdo dCwgZm10LCAuLi4pCQkgICAgICAgXAorCQlLVU5JVF9BU1NFUlRfUFRSX0JJTkFSWV9NU0codGVz dCwJCQkgICAgICAgXAorCQkJCQkgICAgbGVmdCwJCQkgICAgICAgXAorCQkJCQkgICAgIT0sCQkJ CSAgICAgICBcCisJCQkJCSAgICByaWdodCwJCQkgICAgICAgXAorCQkJCQkgICAgZm10LAkJCSAg ICAgICBcCisJCQkJCSAgICAjI19fVkFfQVJHU19fKQorLyoqCisgKiBLVU5JVF9BU1NFUlRfTFQo KSAtIEFuIGFzc2VydGlvbiB0aGF0IEBsZWZ0IGlzIGxlc3MgdGhhbiBAcmlnaHQuCisgKiBAdGVz dDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJl c3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICogQHJpZ2h0OiBh biBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5 cGUuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0aGUgdmFsdWUgdGhhdCBAbGVmdCBl dmFsdWF0ZXMgdG8gaXMgbGVzcyB0aGFuIHRoZQorICogdmFsdWUgdGhhdCBAcmlnaHQgZXZhbHVh dGVzIHRvLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtVTklUX0VYUEVDVF9MVCgpLCBleGNlcHQKKyAq IGl0IGNhdXNlcyBhbiBhc3NlcnRpb24gZmFpbHVyZSAoc2VlIEtVTklUX0FTU0VSVF9UUlVFKCkp IHdoZW4gdGhlIGFzc2VydGlvbgorICogaXMgbm90IG1ldC4KKyAqLworI2RlZmluZSBLVU5JVF9B U1NFUlRfTFQodGVzdCwgbGVmdCwgcmlnaHQpIFwKKwkJS1VOSVRfQVNTRVJUX0JJTkFSWSh0ZXN0 LCBsZWZ0LCA8LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfTFRfTVNHKHRlc3QsIGxl ZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9CSU5BUllfTVNH KHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJCQkJCTwsCQkJCSAg ICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAgXAorCQkJCQlmbXQsCQkJCSAgICAgICBcCisJ CQkJCSMjX19WQV9BUkdTX18pCisvKioKKyAqIEtVTklUX0FTU0VSVF9MRSgpIC0gQW4gYXNzZXJ0 aW9uIHRoYXQgQGxlZnQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIEByaWdodC4KKyAqIEB0ZXN0 OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVz c2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKiBAcmlnaHQ6IGFu IGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJpbWl0aXZlIEMgdHlw ZS4KKyAqCisgKiBTZXRzIGFuIGFzc2VydGlvbiB0aGF0IHRoZSB2YWx1ZSB0aGF0IEBsZWZ0IGV2 YWx1YXRlcyB0byBpcyBsZXNzIHRoYW4gb3IKKyAqIGVxdWFsIHRvIHRoZSB2YWx1ZSB0aGF0IEBy aWdodCBldmFsdWF0ZXMgdG8uIFRoaXMgaXMgdGhlIHNhbWUgYXMKKyAqIEtVTklUX0VYUEVDVF9M RSgpLCBleGNlcHQgaXQgY2F1c2VzIGFuIGFzc2VydGlvbiBmYWlsdXJlIChzZWUKKyAqIEtVTklU X0FTU0VSVF9UUlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgbWV0LgorICovCisjZGVm aW5lIEtVTklUX0FTU0VSVF9MRSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9BU1NFUlRf QklOQVJZKHRlc3QsIGxlZnQsIDw9LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfTEVf TVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FTU0VS VF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJ CQkJCTw9LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJCQkJZm10LAkJ CQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQorLyoqCisgKiBLVU5JVF9BU1NFUlRfR1Qo KSAtIEFuIGFzc2VydGlvbiB0aGF0IEBsZWZ0IGlzIGdyZWF0ZXIgdGhhbiBAcmlnaHQuCisgKiBA dGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4 cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICogQHJpZ2h0 OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBD IHR5cGUuCisgKgorICogU2V0cyBhbiBhc3NlcnRpb24gdGhhdCB0aGUgdmFsdWUgdGhhdCBAbGVm dCBldmFsdWF0ZXMgdG8gaXMgZ3JlYXRlciB0aGFuIHRoZQorICogdmFsdWUgdGhhdCBAcmlnaHQg ZXZhbHVhdGVzIHRvLiBUaGlzIGlzIHRoZSBzYW1lIGFzIEtVTklUX0VYUEVDVF9HVCgpLCBleGNl cHQKKyAqIGl0IGNhdXNlcyBhbiBhc3NlcnRpb24gZmFpbHVyZSAoc2VlIEtVTklUX0FTU0VSVF9U UlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbgorICogaXMgbm90IG1ldC4KKyAqLworI2RlZmluZSBL VU5JVF9BU1NFUlRfR1QodGVzdCwgbGVmdCwgcmlnaHQpIFwKKwkJS1VOSVRfQVNTRVJUX0JJTkFS WSh0ZXN0LCBsZWZ0LCA+LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfR1RfTVNHKHRl c3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0FTU0VSVF9CSU5B UllfTVNHKHRlc3QsCQkJCSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJCQkJCT4s CQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAgXAorCQkJCQlmbXQsCQkJCSAgICAg ICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8qKgorICogS1VOSVRfQVNTRVJUX0dFKCkgLSBB c3NlcnRpb24gdGhhdCBAbGVmdCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gQHJpZ2h0Lgor ICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQGxlZnQ6IGFuIGFyYml0cmFy eSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqIEBy aWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRp dmUgQyB0eXBlLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgdGhlIHZhbHVlIHRoYXQg QGxlZnQgZXZhbHVhdGVzIHRvIGlzIGdyZWF0ZXIgdGhhbiB0aGUKKyAqIHZhbHVlIHRoYXQgQHJp Z2h0IGV2YWx1YXRlcyB0by4gVGhpcyBpcyB0aGUgc2FtZSBhcyBLVU5JVF9FWFBFQ1RfR0UoKSwg ZXhjZXB0CisgKiBpdCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgKHNlZSBLVU5JVF9BU1NF UlRfVFJVRSgpKSB3aGVuIHRoZSBhc3NlcnRpb24KKyAqIGlzIG5vdCBtZXQuCisgKi8KKyNkZWZp bmUgS1VOSVRfQVNTRVJUX0dFKHRlc3QsIGxlZnQsIHJpZ2h0KSBcCisJCUtVTklUX0FTU0VSVF9C SU5BUlkodGVzdCwgbGVmdCwgPj0sIHJpZ2h0KQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9HRV9N U0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRfQVNTRVJU X0JJTkFSWV9NU0codGVzdCwJCQkJICAgICAgIFwKKwkJCQkJbGVmdCwJCQkJICAgICAgIFwKKwkJ CQkJPj0sCQkJCSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAgXAorCQkJCQlmbXQsCQkJ CSAgICAgICBcCisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8qKgorICogS1VOSVRfQVNTRVJUX1NU UkVRKCkgLSBBbiBhc3NlcnRpb24gdGhhdCBzdHJpbmdzIEBsZWZ0IGFuZCBAcmlnaHQgYXJlIGVx dWFsLgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQGxlZnQ6IGFuIGFy Yml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgbnVsbCB0ZXJtaW5hdGVkIHN0 cmluZy4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMg dG8gYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgorICoKKyAqIFNldHMgYW4gYXNzZXJ0aW9uIHRo YXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQgZXZhbHVhdGUgdG8gYXJlCisgKiBl cXVhbC4gVGhpcyBpcyB0aGUgc2FtZSBhcyBLVU5JVF9FWFBFQ1RfU1RSRVEoKSwgZXhjZXB0IGl0 IGNhdXNlcyBhbgorICogYXNzZXJ0aW9uIGZhaWx1cmUgKHNlZSBLVU5JVF9BU1NFUlRfVFJVRSgp KSB3aGVuIHRoZSBhc3NlcnRpb24gaXMgbm90IG1ldC4KKyAqLworI2RlZmluZSBLVU5JVF9BU1NF UlRfU1RSRVEodGVzdCwgbGVmdCwgcmlnaHQpIGRvIHsJCQkgICAgICAgXAorCXN0cnVjdCBrdW5p dF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfQVNTRVJUX1NUQVJUKHRlc3QpOwkgICAgICAgXAor CXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdo dCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWt1 bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJBc3NlcnRlZCAiICNsZWZ0ICIgPT0gIiAjcmlnaHQg IiwgYnV0XG4iKTsgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNc biIsICNsZWZ0LCBfX2xlZnQpOwkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0s ICJcdFx0JXMgPT0gJXNcbiIsICNyaWdodCwgX19yaWdodCk7CSAgICAgICBcCisJCQkJCQkJCQkg ICAgICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVzdCwgIXN0cmNtcChsZWZ0LCByaWdodCksIF9f c3RyZWFtKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0FTU0VSVF9T VFJFUV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKSBkbyB7CSAgICAgICBcCisJc3Ry dWN0IGt1bml0X3N0cmVhbSAqX19zdHJlYW0gPSBLVU5JVF9BU1NFUlRfU1RBUlQodGVzdCk7CSAg ICAgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlw ZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAg ICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIkFzc2VydGVkICIgI2xlZnQgIiA9PSAi ICNyaWdodCAiLCBidXRcbiIpOyBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIlx0XHQl cyA9PSAlc1xuIiwgI2xlZnQsIF9fbGVmdCk7CSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChf X3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI3JpZ2h0LCBfX3JpZ2h0KTsJICAgICAgIFwKKwlr dW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJCSAgICAgICBc CisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVzdCwgIXN0cmNtcChsZWZ0 LCByaWdodCksIF9fc3RyZWFtKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKioKKyAqIEtV TklUX0FTU0VSVF9TVFJORVEoKSAtIEV4cGVjdHMgdGhhdCBzdHJpbmdzIEBsZWZ0IGFuZCBAcmln aHQgYXJlIG5vdCBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAq IEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIG51bGwg dGVybWluYXRlZCBzdHJpbmcuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRo YXQgZXZhbHVhdGVzIHRvIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZy4KKyAqCisgKiBTZXRzIGFu IGV4cGVjdGF0aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQgZXZhbHVh dGUgdG8gYXJlCisgKiBub3QgZXF1YWwuIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQg dG8KKyAqIEtVTklUX0FTU0VSVF9UUlVFKEB0ZXN0LCBzdHJjbXAoKEBsZWZ0KSwgKEByaWdodCkp KS4gU2VlIEtVTklUX0FTU0VSVF9UUlVFKCkKKyAqIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICov CisjZGVmaW5lIEtVTklUX0FTU0VSVF9TVFJORVEodGVzdCwgbGVmdCwgcmlnaHQpIGRvIHsJCQkg ICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfQVNTRVJUX1NU QVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkg ICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJ CQkJCQkJCQkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJBc3NlcnRlZCAi ICNsZWZ0ICIgPT0gIiAjcmlnaHQgIiwgYnV0XG4iKTsgXAorCWt1bml0X3N0cmVhbV9hZGQoX19z dHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNsZWZ0LCBfX2xlZnQpOwkgICAgICAgXAorCWt1bml0 X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNyaWdodCwgX19yaWdodCk7 CSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVzdCwgc3Ry Y21wKGxlZnQsIHJpZ2h0KSwgX19zdHJlYW0pOwkJICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNk ZWZpbmUgS1VOSVRfQVNTRVJUX1NUUk5FUV9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4u KSBkbyB7CSAgICAgICBcCisJc3RydWN0IGt1bml0X3N0cmVhbSAqX19zdHJlYW0gPSBLVU5JVF9B U1NFUlRfU1RBUlQodGVzdCk7CSAgICAgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9IChsZWZ0 KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJCQkJICAg ICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIkFz c2VydGVkICIgI2xlZnQgIiA9PSAiICNyaWdodCAiLCBidXRcbiIpOyBcCisJa3VuaXRfc3RyZWFt X2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI2xlZnQsIF9fbGVmdCk7CSAgICAgICBc CisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgIlx0XHQlcyA9PSAlc1xuIiwgI3JpZ2h0LCBf X3JpZ2h0KTsJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19W QV9BUkdTX18pOwkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0FTU0VSVF9F TkQodGVzdCwgc3RyY21wKGxlZnQsIHJpZ2h0KSwgX19zdHJlYW0pOwkJICAgICAgIFwKK30gd2hp bGUgKDApCisKKy8qKgorICogS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCgpIC0gQXNzZXJ0 aW9uIHRoYXQgQHB0ciBpcyBub3QgbnVsbCBhbmQgbm90IGVyci4KKyAqIEB0ZXN0OiBUaGUgdGVz dCBjb250ZXh0IG9iamVjdC4KKyAqIEBwdHI6IGFuIGFyYml0cmFyeSBwb2ludGVyLgorICoKKyAq IFNldHMgYW4gYXNzZXJ0aW9uIHRoYXQgdGhlIHZhbHVlIHRoYXQgQHB0ciBldmFsdWF0ZXMgdG8g aXMgbm90IG51bGwgYW5kIG5vdAorICogYW4gZXJybm8gc3RvcmVkIGluIGEgcG9pbnRlci4gVGhp cyBpcyB0aGUgc2FtZSBhcworICogS1VOSVRfRVhQRUNUX05PVF9FUlJfT1JfTlVMTCgpLCBleGNl cHQgaXQgY2F1c2VzIGFuIGFzc2VydGlvbiBmYWlsdXJlIChzZWUKKyAqIEtVTklUX0FTU0VSVF9U UlVFKCkpIHdoZW4gdGhlIGFzc2VydGlvbiBpcyBub3QgbWV0LgorICovCisjZGVmaW5lIEtVTklU X0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgcHRyKSBkbyB7CQkJICAgICAgIFwKKwlzdHJ1 Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklUX0FTU0VSVF9TVEFSVCh0ZXN0KTsJICAg ICAgIFwKKwl0eXBlb2YocHRyKSBfX3B0ciA9IChwdHIpOwkJCQkJICAgICAgIFwKKwkJCQkJCQkJ CSAgICAgICBcCisJaWYgKCFfX3B0cikJCQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2Fk ZChfX3N0cmVhbSwJCQkJICAgICAgIFwKKwkJCQkgIkFzc2VydGVkICIgI3B0ciAiIGlzIG5vdCBu dWxsLCBidXQgaXNcbiIpOyAgXAorCWlmIChJU19FUlIoX19wdHIpKQkJCQkJCSAgICAgICBcCisJ CWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sCQkJCSAgICAgICBcCisJCQkJICJBc3NlcnRlZCAi ICNwdHIgIiBpcyBub3QgZXJyb3IsIGJ1dCBpczogJWxkXG4iLFwKKwkJCQkgUFRSX0VSUihfX3B0 cikpOwkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCUtVTklUX0FTU0VSVF9FTkQodGVz dCwgIUlTX0VSUl9PUl9OVUxMKF9fcHRyKSwgX19zdHJlYW0pOwkgICAgICAgXAorfSB3aGlsZSAo MCkKKworI2RlZmluZSBLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMX01TRyh0ZXN0LCBwdHIs IGZtdCwgLi4uKSBkbyB7CSAgICAgICBcCisJc3RydWN0IGt1bml0X3N0cmVhbSAqX19zdHJlYW0g PSBLVU5JVF9BU1NFUlRfU1RBUlQodGVzdCk7CSAgICAgICBcCisJdHlwZW9mKHB0cikgX19wdHIg PSAocHRyKTsJCQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWlmICghX19wdHIpIHsJ CQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwJCQkJICAgICAgIFwK KwkJCQkgIkFzc2VydGVkICIgI3B0ciAiIGlzIG5vdCBudWxsLCBidXQgaXNcbiIpOyAgXAorCQlr dW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJICAgICAgIFwK Kwl9CQkJCQkJCQkgICAgICAgXAorCWlmIChJU19FUlIoX19wdHIpKSB7CQkJCQkJICAgICAgIFwK KwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwJCQkJICAgICAgIFwKKwkJCQkgIkFzc2VydGVk ICIgI3B0ciAiIGlzIG5vdCBlcnJvciwgYnV0IGlzOiAlbGRcbiIsXAorCQkJCSBQVFJfRVJSKF9f cHRyKSk7CQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBcCisJCWt1bml0X3N0cmVhbV9hZGQo X19zdHJlYW0sIGZtdCwgIyNfX1ZBX0FSR1NfXyk7CQkgICAgICAgXAorCX0JCQkJCQkJCSAgICAg ICBcCisJS1VOSVRfQVNTRVJUX0VORCh0ZXN0LCAhSVNfRVJSX09SX05VTEwoX19wdHIpLCBfX3N0 cmVhbSk7CSAgICAgICBcCit9IHdoaWxlICgwKQorCiAjZW5kaWYgLyogX0tVTklUX1RFU1RfSCAq LwpkaWZmIC0tZ2l0IGEva3VuaXQvc3RyaW5nLXN0cmVhbS10ZXN0LmMgYi9rdW5pdC9zdHJpbmct c3RyZWFtLXRlc3QuYwppbmRleCBiNTY0MWIwNzhiOGY2Li41ZjI3ZDU3NmQyZGFmIDEwMDY0NAot LS0gYS9rdW5pdC9zdHJpbmctc3RyZWFtLXRlc3QuYworKysgYi9rdW5pdC9zdHJpbmctc3RyZWFt LXRlc3QuYwpAQCAtMzQsNyArMzQsNyBAQCBzdGF0aWMgdm9pZCBzdHJpbmdfc3RyZWFtX3Rlc3Rf Z2V0X3N0cmluZyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJc3RyaW5nX3N0cmVhbV9hZGQoc3RyZWFt LCAiICVzIiwgImJhciIpOwogCiAJb3V0cHV0ID0gc3RyaW5nX3N0cmVhbV9nZXRfc3RyaW5nKHN0 cmVhbSk7Ci0JS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIG91dHB1dCwgIkZvbyBiYXIiKTsKKwlL VU5JVF9BU1NFUlRfU1RSRVEodGVzdCwgb3V0cHV0LCAiRm9vIGJhciIpOwogCWtmcmVlKG91dHB1 dCk7CiB9CiAKQEAgLTQ4LDE2ICs0OCwxNiBAQCBzdGF0aWMgdm9pZCBzdHJpbmdfc3RyZWFtX3Rl c3RfYWRkX2FuZF9jbGVhcihzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJCXN0cmluZ19zdHJlYW1fYWRk KHN0cmVhbSwgIkEiKTsKIAogCW91dHB1dCA9IHN0cmluZ19zdHJlYW1fZ2V0X3N0cmluZyhzdHJl YW0pOwotCUtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCBvdXRwdXQsICJBQUFBQUFBQUFBIik7Ci0J S1VOSVRfRVhQRUNUX0VRKHRlc3QsIHN0cmVhbS0+bGVuZ3RoLCAoc2l6ZV90KTEwKTsKLQlLVU5J VF9FWFBFQ1RfRkFMU0UodGVzdCwgc3RyaW5nX3N0cmVhbV9pc19lbXB0eShzdHJlYW0pKTsKKwlL VU5JVF9BU1NFUlRfU1RSRVEodGVzdCwgb3V0cHV0LCAiQUFBQUFBQUFBQSIpOworCUtVTklUX0FT U0VSVF9FUSh0ZXN0LCBzdHJlYW0tPmxlbmd0aCwgKHNpemVfdCkxMCk7CisJS1VOSVRfQVNTRVJU X0ZBTFNFKHRlc3QsIHN0cmluZ19zdHJlYW1faXNfZW1wdHkoc3RyZWFtKSk7CiAJa2ZyZWUob3V0 cHV0KTsKIAogCXN0cmluZ19zdHJlYW1fY2xlYXIoc3RyZWFtKTsKIAogCW91dHB1dCA9IHN0cmlu Z19zdHJlYW1fZ2V0X3N0cmluZyhzdHJlYW0pOwotCUtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCBv dXRwdXQsICIiKTsKLQlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBzdHJpbmdfc3RyZWFtX2lzX2Vt cHR5KHN0cmVhbSkpOworCUtVTklUX0FTU0VSVF9TVFJFUSh0ZXN0LCBvdXRwdXQsICIiKTsKKwlL VU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCBzdHJpbmdfc3RyZWFtX2lzX2VtcHR5KHN0cmVhbSkpOwog fQogCiBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2Ugc3RyaW5nX3N0cmVhbV90ZXN0X2Nhc2VzW10g PSB7CmRpZmYgLS1naXQgYS9rdW5pdC90ZXN0LXRlc3QuYyBiL2t1bml0L3Rlc3QtdGVzdC5jCmlu ZGV4IDg4ZjRjZGYwM2RiMmEuLjA1OGYzZmIzNzQ1OGEgMTAwNjQ0Ci0tLSBhL2t1bml0L3Rlc3Qt dGVzdC5jCisrKyBiL2t1bml0L3Rlc3QtdGVzdC5jCkBAIC03OCwxMSArNzgsMTMgQEAgc3RhdGlj IGludCBrdW5pdF90cnlfY2F0Y2hfdGVzdF9pbml0KHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlzdHJ1 Y3Qga3VuaXRfdHJ5X2NhdGNoX3Rlc3RfY29udGV4dCAqY3R4OwogCiAJY3R4ID0ga3VuaXRfa3ph bGxvYyh0ZXN0LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOworCUtVTklUX0FTU0VSVF9OT1Rf RVJSX09SX05VTEwodGVzdCwgY3R4KTsKIAl0ZXN0LT5wcml2ID0gY3R4OwogCiAJY3R4LT50cnlf Y2F0Y2ggPSBrdW5pdF9rbWFsbG9jKHRlc3QsCiAJCQkJICAgICAgIHNpemVvZigqY3R4LT50cnlf Y2F0Y2gpLAogCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKKwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9P Ul9OVUxMKHRlc3QsIGN0eC0+dHJ5X2NhdGNoKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0 IGEva3VuaXQvdGVzdC5jIGIva3VuaXQvdGVzdC5jCmluZGV4IDczMWYzYzllZWNmMjAuLjUyYjgx OGQ3NTY3MDQgMTAwNjQ0Ci0tLSBhL2t1bml0L3Rlc3QuYworKysgYi9rdW5pdC90ZXN0LmMKQEAg LTUwMSwzICs1MDEsNjkgQEAgdm9pZCBrdW5pdF9leHBlY3RfcHRyX2JpbmFyeV9tc2coc3RydWN0 IGt1bml0ICp0ZXN0LAogCiAJa3VuaXRfZXhwZWN0X2VuZCh0ZXN0LCBjb21wYXJlX3Jlc3VsdCwg c3RyZWFtKTsKIH0KKwordm9pZCBrdW5pdF9hc3NlcnRfYmluYXJ5X21zZyhzdHJ1Y3Qga3VuaXQg KnRlc3QsCisJCQkgICAgIGxvbmcgbG9uZyBsZWZ0LCBjb25zdCBjaGFyICpsZWZ0X25hbWUsCisJ CQkgICAgIGxvbmcgbG9uZyByaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCSAgICAg Ym9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJCSAgICAgY29uc3QgY2hhciAqY29tcGFyZV9uYW1lLAor CQkJICAgICBjb25zdCBjaGFyICpmaWxlLAorCQkJICAgICBjb25zdCBjaGFyICpsaW5lLAorCQkJ ICAgICBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJl YW0gPSBrdW5pdF9hc3NlcnRfc3RhcnQodGVzdCwgZmlsZSwgbGluZSk7CisJc3RydWN0IHZhX2Zv cm1hdCB2YWY7CisJdmFfbGlzdCBhcmdzOworCisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sCisJ CQkgIkFzc2VydGVkICVzICVzICVzLCBidXRcbiIsCisJCQkgbGVmdF9uYW1lLCBjb21wYXJlX25h bWUsIHJpZ2h0X25hbWUpOworCWt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXHRcdCVzID09ICVs bGRcbiIsIGxlZnRfbmFtZSwgbGVmdCk7CisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJcdFx0 JXMgPT0gJWxsZFxuIiwgcmlnaHRfbmFtZSwgcmlnaHQpOworCisJaWYgKGZtdCkgeworCQl2YV9z dGFydChhcmdzLCBmbXQpOworCisJCXZhZi5mbXQgPSBmbXQ7CisJCXZhZi52YSA9ICZhcmdzOwor CisJCWt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXG4lcFYiLCAmdmFmKTsKKworCQl2YV9lbmQo YXJncyk7CisJfQorCisJa3VuaXRfYXNzZXJ0X2VuZCh0ZXN0LCBjb21wYXJlX3Jlc3VsdCwgc3Ry ZWFtKTsKK30KKwordm9pZCBrdW5pdF9hc3NlcnRfcHRyX2JpbmFyeV9tc2coc3RydWN0IGt1bml0 ICp0ZXN0LAorCQkJCSB2b2lkICpsZWZ0LCBjb25zdCBjaGFyICpsZWZ0X25hbWUsCisJCQkJIHZv aWQgKnJpZ2h0LCBjb25zdCBjaGFyICpyaWdodF9uYW1lLAorCQkJCSBib29sIGNvbXBhcmVfcmVz dWx0LAorCQkJCSBjb25zdCBjaGFyICpjb21wYXJlX25hbWUsCisJCQkJIGNvbnN0IGNoYXIgKmZp bGUsCisJCQkJIGNvbnN0IGNoYXIgKmxpbmUsCisJCQkJIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQor eworCXN0cnVjdCBrdW5pdF9zdHJlYW0gKnN0cmVhbSA9IGt1bml0X2Fzc2VydF9zdGFydCh0ZXN0 LCBmaWxlLCBsaW5lKTsKKwlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsKKwl2YV9saXN0IGFyZ3M7CisK KwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwKKwkJCSAiQXNzZXJ0ZWQgJXMgJXMgJXMsIGJ1dFxu IiwKKwkJCSBsZWZ0X25hbWUsIGNvbXBhcmVfbmFtZSwgcmlnaHRfbmFtZSk7CisJa3VuaXRfc3Ry ZWFtX2FkZChzdHJlYW0sICJcdFx0JXMgPT0gJXBLXG4iLCBsZWZ0X25hbWUsIGxlZnQpOworCWt1 bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXHRcdCVzID09ICVwSyIsIHJpZ2h0X25hbWUsIHJpZ2h0 KTsKKworCWlmIChmbXQpIHsKKwkJdmFfc3RhcnQoYXJncywgZm10KTsKKworCQl2YWYuZm10ID0g Zm10OworCQl2YWYudmEgPSAmYXJnczsKKworCQlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwgIlxu JXBWIiwgJnZhZik7CisKKwkJdmFfZW5kKGFyZ3MpOworCX0KKworCWt1bml0X2Fzc2VydF9lbmQo dGVzdCwgY29tcGFyZV9yZXN1bHQsIHN0cmVhbSk7Cit9Ci0tIAoyLjIyLjAuNDEwLmdkOGZkYmUy MWI1LWdvb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==