From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brendan Higgins Subject: [PATCH v3 05/18] kunit: test: add the concept of expectations Date: Mon, 13 May 2019 22:42:38 -0700 Message-ID: <20190514054251.186196-6-brendanhiggins@google.com> References: <20190514054251.186196-1-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190514054251.186196-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, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.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, dan.j.williams@intel.com, 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 QWRkIHN1cHBvcnQgZm9yIGV4cGVjdGF0aW9ucywgd2hpY2ggYWxsb3cgcHJvcGVydGllcyB0byBi ZSBzcGVjaWZpZWQgYW5kCnRoZW4gdmVyaWZpZWQgaW4gdGVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBC cmVuZGFuIEhpZ2dpbnMgPGJyZW5kYW5oaWdnaW5zQGdvb2dsZS5jb20+ClJldmlld2VkLWJ5OiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1i eTogTG9nYW4gR3VudGhvcnBlIDxsb2dhbmdAZGVsdGF0ZWUuY29tPgotLS0KQ2hhbmdlcyBTaW5j ZSBMYXN0IFJldmlzaW9uOgogLSBBZGRlZCBFWFBFQ1QgbWFjcm9zIGZvciBwb2ludGVyIGNvbXBh cmlzb24gdG8gYWRkcmVzcyBpc3N1ZSBwb2ludGVkCiAgIG91dCBieSBrYnVpbGQgYm90LgotLS0K IGluY2x1ZGUva3VuaXQvdGVzdC5oIHwgNTE4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIGt1bml0L3Rlc3QuYyAgICAgICAgIHwgIDY2ICsrKysrKwogMiBmaWxl cyBjaGFuZ2VkLCA1ODQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUva3VuaXQv dGVzdC5oIGIvaW5jbHVkZS9rdW5pdC90ZXN0LmgKaW5kZXggNGJjODM5ODg0YTgzYy4uODYxODdi YTA2OWE1ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9rdW5pdC90ZXN0LmgKKysrIGIvaW5jbHVkZS9r dW5pdC90ZXN0LmgKQEAgLTI3MSw0ICsyNzEsNTIyIEBAIHZvaWQgX19wcmludGYoMywgNCkga3Vu aXRfcHJpbnRrKGNvbnN0IGNoYXIgKmxldmVsLAogI2RlZmluZSBrdW5pdF9lcnIodGVzdCwgZm10 LCAuLi4pIFwKIAkJa3VuaXRfcHJpbnRrKEtFUk5fRVJSLCB0ZXN0LCBmbXQsICMjX19WQV9BUkdT X18pCiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGt1bml0X3N0cmVhbSAqa3VuaXRfZXhwZWN0X3N0 YXJ0KHN0cnVjdCBrdW5pdCAqdGVzdCwKKwkJCQkJCSAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCisJ CQkJCQkgICAgICBjb25zdCBjaGFyICpsaW5lKQoreworCXN0cnVjdCBrdW5pdF9zdHJlYW0gKnN0 cmVhbSA9IGt1bml0X25ld19zdHJlYW0odGVzdCk7CisKKwlrdW5pdF9zdHJlYW1fYWRkKHN0cmVh bSwgIkVYUEVDVEFUSU9OIEZBSUxFRCBhdCAlczolc1xuXHQiLCBmaWxlLCBsaW5lKTsKKworCXJl dHVybiBzdHJlYW07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBrdW5pdF9leHBlY3RfZW5kKHN0 cnVjdCBrdW5pdCAqdGVzdCwKKwkJCQkgICAgYm9vbCBzdWNjZXNzLAorCQkJCSAgICBzdHJ1Y3Qg a3VuaXRfc3RyZWFtICpzdHJlYW0pCit7CisJaWYgKCFzdWNjZXNzKQorCQlrdW5pdF9mYWlsKHRl c3QsIHN0cmVhbSk7CisJZWxzZQorCQlrdW5pdF9zdHJlYW1fY2xlYXIoc3RyZWFtKTsKK30KKwor I2RlZmluZSBLVU5JVF9FWFBFQ1RfU1RBUlQodGVzdCkgXAorCQlrdW5pdF9leHBlY3Rfc3RhcnQo dGVzdCwgX19GSUxFX18sIF9fc3RyaW5naWZ5KF9fTElORV9fKSkKKworI2RlZmluZSBLVU5JVF9F WFBFQ1RfRU5EKHRlc3QsIHN1Y2Nlc3MsIHN0cmVhbSkgXAorCQlrdW5pdF9leHBlY3RfZW5kKHRl c3QsIHN1Y2Nlc3MsIHN0cmVhbSkKKworI2RlZmluZSBLVU5JVF9FWFBFQ1RfTVNHKHRlc3QsIHN1 Y2Nlc3MsIG1lc3NhZ2UsIGZtdCwgLi4uKSBkbyB7CQkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9z dHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCQkJ CQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBtZXNzYWdlKTsJCQkJ ICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18p OwkJCSAgICAgICBcCisJS1VOSVRfRVhQRUNUX0VORCh0ZXN0LCBzdWNjZXNzLCBfX3N0cmVhbSk7 CQkJICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgS1VOSVRfRVhQRUNUKHRlc3QsIHN1 Y2Nlc3MsIG1lc3NhZ2UpIGRvIHsJCQkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9f c3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCQkJCQkJCQkJICAg ICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCBtZXNzYWdlKTsJCQkJICAgICAgIFwK KwlLVU5JVF9FWFBFQ1RfRU5EKHRlc3QsIHN1Y2Nlc3MsIF9fc3RyZWFtKTsJCQkgICAgICAgXAor fSB3aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9TVUNDRUVEKCkgLSBBIG5vLW9wIGV4cGVjdGF0 aW9uLiBPbmx5IGV4aXN0cyBmb3IgY29kZSBjbGFyaXR5LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNv bnRleHQgb2JqZWN0LgorICoKKyAqIFRoZSBvcHBvc2l0ZSBvZiBLVU5JVF9GQUlMKCksIGl0IGlz IGFuIGV4cGVjdGF0aW9uIHRoYXQgY2Fubm90IGZhaWwuIEluIG90aGVyCisgKiB3b3JkcywgaXQg ZG9lcyBub3RoaW5nIGFuZCBvbmx5IGV4aXN0cyBmb3IgY29kZSBjbGFyaXR5LiBTZWUKKyAqIEtV TklUX0VYUEVDVF9UUlVFKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKyNkZWZpbmUgS1VO SVRfU1VDQ0VFRCh0ZXN0KSBkbyB7fSB3aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9GQUlMKCkg LSBBbHdheXMgY2F1c2VzIGEgdGVzdCB0byBmYWlsIHdoZW4gZXZhbHVhdGVkLgorICogQHRlc3Q6 IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQGZtdDogYW4gaW5mb3JtYXRpb25hbCBtZXNz YWdlIHRvIGJlIHByaW50ZWQgd2hlbiB0aGUgYXNzZXJ0aW9uIGlzIG1hZGUuCisgKiBALi4uOiBz dHJpbmcgZm9ybWF0IGFyZ3VtZW50cy4KKyAqCisgKiBUaGUgb3Bwb3NpdGUgb2YgS1VOSVRfU1VD Q0VFRCgpLCBpdCBpcyBhbiBleHBlY3RhdGlvbiB0aGF0IGFsd2F5cyBmYWlscy4gSW4KKyAqIG90 aGVyIHdvcmRzLCBpdCBhbHdheXMgcmVzdWx0cyBpbiBhIGZhaWxlZCBleHBlY3RhdGlvbiwgYW5k IGNvbnNlcXVlbnRseQorICogYWx3YXlzIGNhdXNlcyB0aGUgdGVzdCBjYXNlIHRvIGZhaWwgd2hl biBldmFsdWF0ZWQuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgpCisgKiBmb3IgbW9yZSBpbmZvcm1h dGlvbi4KKyAqLworI2RlZmluZSBLVU5JVF9GQUlMKHRlc3QsIGZtdCwgLi4uKSBkbyB7CQkJCQkg ICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfRVhQRUNUX1NU QVJUKHRlc3QpOwkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRk KF9fc3RyZWFtLCBmbXQsICMjX19WQV9BUkdTX18pOwkJCSAgICAgICBcCisJS1VOSVRfRVhQRUNU X0VORCh0ZXN0LCBmYWxzZSwgX19zdHJlYW0pOwkJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisv KioKKyAqIEtVTklUX0VYUEVDVF9UUlVFKCkgLSBDYXVzZXMgYSB0ZXN0IGZhaWx1cmUgd2hlbiB0 aGUgZXhwcmVzc2lvbiBpcyBub3QgdHJ1ZS4KKyAqIEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9i amVjdC4KKyAqIEBjb25kaXRpb246IGFuIGFyYml0cmFyeSBib29sZWFuIGV4cHJlc3Npb24uIFRo ZSB0ZXN0IGZhaWxzIHdoZW4gdGhpcyBkb2VzCisgKiBub3QgZXZhbHVhdGUgdG8gdHJ1ZS4KKyAq CisgKiBUaGlzIGFuZCBleHBlY3RhdGlvbnMgb2YgdGhlIGZvcm0gYEtVTklUX0VYUEVDVF8qYCB3 aWxsIGNhdXNlIHRoZSB0ZXN0IGNhc2UKKyAqIHRvIGZhaWwgd2hlbiB0aGUgc3BlY2lmaWVkIGNv bmRpdGlvbiBpcyBub3QgbWV0OyBob3dldmVyLCBpdCB3aWxsIG5vdCBwcmV2ZW50CisgKiB0aGUg dGVzdCBjYXNlIGZyb20gY29udGludWluZyB0byBydW47IHRoaXMgaXMgb3RoZXJ3aXNlIGtub3du IGFzIGFuCisgKiAqZXhwZWN0YXRpb24gZmFpbHVyZSouCisgKi8KKyNkZWZpbmUgS1VOSVRfRVhQ RUNUX1RSVUUodGVzdCwgY29uZGl0aW9uKQkJCQkgICAgICAgXAorCQlLVU5JVF9FWFBFQ1QodGVz dCwgKGNvbmRpdGlvbiksCQkJCSAgICAgICBcCisJCSAgICAgICAiRXhwZWN0ZWQgIiAjY29uZGl0 aW9uICIgaXMgdHJ1ZSwgYnV0IGlzIGZhbHNlLlxuIikKKworI2RlZmluZSBLVU5JVF9FWFBFQ1Rf VFJVRV9NU0codGVzdCwgY29uZGl0aW9uLCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0VY UEVDVF9NU0codGVzdCwgKGNvbmRpdGlvbiksCQkJICAgICAgIFwKKwkJCQkiRXhwZWN0ZWQgIiAj Y29uZGl0aW9uICIgaXMgdHJ1ZSwgYnV0IGlzIGZhbHNlLlxuIixcCisJCQkJZm10LCAjI19fVkFf QVJHU19fKQorCisvKioKKyAqIEtVTklUX0VYUEVDVF9GQUxTRSgpIC0gTWFrZXMgYSB0ZXN0IGZh aWx1cmUgd2hlbiB0aGUgZXhwcmVzc2lvbiBpcyBub3QgZmFsc2UuCisgKiBAdGVzdDogVGhlIHRl c3QgY29udGV4dCBvYmplY3QuCisgKiBAY29uZGl0aW9uOiBhbiBhcmJpdHJhcnkgYm9vbGVhbiBl eHByZXNzaW9uLiBUaGUgdGVzdCBmYWlscyB3aGVuIHRoaXMgZG9lcworICogbm90IGV2YWx1YXRl IHRvIGZhbHNlLgorICoKKyAqIFNldHMgYW4gZXhwZWN0YXRpb24gdGhhdCBAY29uZGl0aW9uIGV2 YWx1YXRlcyB0byBmYWxzZS4gU2VlCisgKiBLVU5JVF9FWFBFQ1RfVFJVRSgpIGZvciBtb3JlIGlu Zm9ybWF0aW9uLgorICovCisjZGVmaW5lIEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBjb25kaXRp b24pCQkJCSAgICAgICBcCisJCUtVTklUX0VYUEVDVCh0ZXN0LCAhKGNvbmRpdGlvbiksCQkJICAg ICAgIFwKKwkJICAgICAgICJFeHBlY3RlZCAiICNjb25kaXRpb24gIiBpcyBmYWxzZSwgYnV0IGlz IHRydWUuIikKKworI2RlZmluZSBLVU5JVF9FWFBFQ1RfRkFMU0VfTVNHKHRlc3QsIGNvbmRpdGlv biwgZm10LCAuLi4pCQkgICAgICAgXAorCQlLVU5JVF9FWFBFQ1RfTVNHKHRlc3QsICEoY29uZGl0 aW9uKSwJCQkgICAgICAgXAorCQkJCSJFeHBlY3RlZCAiICNjb25kaXRpb24gIiBpcyBmYWxzZSwg YnV0IGlzIHRydWUuXG4iLFwKKwkJCQlmbXQsICMjX19WQV9BUkdTX18pCisKK3ZvaWQga3VuaXRf ZXhwZWN0X2JpbmFyeV9tc2coc3RydWN0IGt1bml0ICp0ZXN0LAorCQkJICAgICBsb25nIGxvbmcg bGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJICAgICBsb25nIGxvbmcgcmlnaHQsIGNv bnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkgICAgIGJvb2wgY29tcGFyZV9yZXN1bHQsCisJCQkg ICAgIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJCSAgICAgY29uc3QgY2hhciAqZmlsZSwK KwkJCSAgICAgY29uc3QgY2hhciAqbGluZSwKKwkJCSAgICAgY29uc3QgY2hhciAqZm10LCAuLi4p OworCitzdGF0aWMgaW5saW5lIHZvaWQga3VuaXRfZXhwZWN0X2JpbmFyeShzdHJ1Y3Qga3VuaXQg KnRlc3QsCisJCQkJICAgICAgIGxvbmcgbG9uZyBsZWZ0LCBjb25zdCBjaGFyICpsZWZ0X25hbWUs CisJCQkJICAgICAgIGxvbmcgbG9uZyByaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJ CQkgICAgICAgYm9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJCQkgICAgICAgY29uc3QgY2hhciAqY29t cGFyZV9uYW1lLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlLAorCQkJCSAgICAgICBjb25z dCBjaGFyICpsaW5lKQoreworCWt1bml0X2V4cGVjdF9iaW5hcnlfbXNnKHRlc3QsCisJCQkJbGVm dCwgbGVmdF9uYW1lLAorCQkJCXJpZ2h0LCByaWdodF9uYW1lLAorCQkJCWNvbXBhcmVfcmVzdWx0 LAorCQkJCWNvbXBhcmVfbmFtZSwKKwkJCQlmaWxlLAorCQkJCWxpbmUsCisJCQkJTlVMTCk7Cit9 CisKK3ZvaWQga3VuaXRfZXhwZWN0X3B0cl9iaW5hcnlfbXNnKHN0cnVjdCBrdW5pdCAqdGVzdCwK KwkJCQkgdm9pZCAqbGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJCSB2b2lkICpyaWdo dCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCQkgYm9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJ CQkgY29uc3QgY2hhciAqY29tcGFyZV9uYW1lLAorCQkJCSBjb25zdCBjaGFyICpmaWxlLAorCQkJ CSBjb25zdCBjaGFyICpsaW5lLAorCQkJCSBjb25zdCBjaGFyICpmbXQsIC4uLik7CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBrdW5pdF9leHBlY3RfcHRyX2JpbmFyeShzdHJ1Y3Qga3VuaXQgKnRlc3Qs CisJCQkJCSAgIHZvaWQgKmxlZnQsIGNvbnN0IGNoYXIgKmxlZnRfbmFtZSwKKwkJCQkJICAgdm9p ZCAqcmlnaHQsIGNvbnN0IGNoYXIgKnJpZ2h0X25hbWUsCisJCQkJCSAgIGJvb2wgY29tcGFyZV9y ZXN1bHQsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbXBhcmVfbmFtZSwKKwkJCQkJICAgY29uc3Qg Y2hhciAqZmlsZSwKKwkJCQkJICAgY29uc3QgY2hhciAqbGluZSkKK3sKKwlrdW5pdF9leHBlY3Rf cHRyX2JpbmFyeV9tc2codGVzdCwKKwkJCQkgICAgbGVmdCwgbGVmdF9uYW1lLAorCQkJCSAgICBy aWdodCwgcmlnaHRfbmFtZSwKKwkJCQkgICAgY29tcGFyZV9yZXN1bHQsCisJCQkJICAgIGNvbXBh cmVfbmFtZSwKKwkJCQkgICAgZmlsZSwKKwkJCQkgICAgbGluZSwKKwkJCQkgICAgTlVMTCk7Cit9 CisKKy8qCisgKiBBIGZhY3RvcnkgbWFjcm8gZm9yIGRlZmluaW5nIHRoZSBleHBlY3RhdGlvbnMg Zm9yIHRoZSBiYXNpYyBjb21wYXJpc29ucworICogZGVmaW5lZCBmb3IgdGhlIGJ1aWx0IGluIHR5 cGVzLgorICoKKyAqIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGNvbW1vbiB0eXBlIHRoYXQg YWxsIHR5cGVzIGNhbiBiZSBwcm9tb3RlZCB0byBmb3IKKyAqIHdoaWNoIGFsbCB0aGUgYmluYXJ5 IG9wZXJhdG9ycyBiZWhhdmUgdGhlIHNhbWUgd2F5IGFzIGZvciB0aGUgYWN0dWFsIHR5cGVzCisg KiAoZm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIHR5cGUgdGhhdCBsb25nIGxvbmcgYW5kIHVuc2ln bmVkIGxvbmcgbG9uZyBjYW4KKyAqIGJvdGggYmUgY2FzdCB0byB3aGVyZSB0aGUgY29tcGFyaXNv biByZXN1bHQgaXMgcHJlc2VydmVkIGZvciBhbGwgdmFsdWVzKS4gU28KKyAqIHRoZSBiZXN0IHdl IGNhbiBkbyBpcyBkbyB0aGUgY29tcGFyaXNvbiBpbiB0aGUgb3JpZ2luYWwgdHlwZXMgYW5kIHRo ZW4gY29lcmNlCisgKiBldmVyeXRoaW5nIHRvIGxvbmcgbG9uZyBmb3IgcHJpbnRpbmc7IHRoaXMg d2F5LCB0aGUgY29tcGFyaXNvbiBiZWhhdmVzCisgKiBjb3JyZWN0bHkgYW5kIHRoZSBwcmludGVk IG91dCB2YWx1ZSB1c3VhbGx5IG1ha2VzIHNlbnNlIHdpdGhvdXQKKyAqIGludGVycHJldGF0aW9u LCBidXQgY2FuIGFsd2F5cyBiZSBpbnRlcnByZXR0ZWQgdG8gZmlndXJlIG91dCB0aGUgYWN0dWFs CisgKiB2YWx1ZS4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfQklOQVJZKHRlc3QsIGxlZnQs IGNvbmRpdGlvbiwgcmlnaHQpIGRvIHsJCSAgICAgICBcCisJdHlwZW9mKGxlZnQpIF9fbGVmdCA9 IChsZWZ0KTsJCQkJCSAgICAgICBcCisJdHlwZW9mKHJpZ2h0KSBfX3JpZ2h0ID0gKHJpZ2h0KTsJ CQkJICAgICAgIFwKKwlrdW5pdF9leHBlY3RfYmluYXJ5KHRlc3QsCQkJCQkgICAgICAgXAorCQkJ ICAgIChsb25nIGxvbmcpIF9fbGVmdCwgI2xlZnQsCQkJICAgICAgIFwKKwkJCSAgICAobG9uZyBs b25nKSBfX3JpZ2h0LCAjcmlnaHQsCQkgICAgICAgXAorCQkJICAgIF9fbGVmdCBjb25kaXRpb24g X19yaWdodCwgI2NvbmRpdGlvbiwJICAgICAgIFwKKwkJCSAgICBfX0ZJTEVfXywgX19zdHJpbmdp ZnkoX19MSU5FX18pKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0VY UEVDVF9CSU5BUllfTVNHKHRlc3QsIGxlZnQsIGNvbmRpdGlvbiwgcmlnaHQsIGZtdCwgLi4uKSBk byB7ICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5 cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJa3VuaXRfZXhwZWN0 X2JpbmFyeV9tc2codGVzdCwJCQkJCSAgICAgICBcCisJCQkJKGxvbmcgbG9uZykgX19sZWZ0LCAj bGVmdCwJCSAgICAgICBcCisJCQkJKGxvbmcgbG9uZykgX19yaWdodCwgI3JpZ2h0LAkJICAgICAg IFwKKwkJCQlfX2xlZnQgY29uZGl0aW9uIF9fcmlnaHQsICNjb25kaXRpb24sCSAgICAgICBcCisJ CQkJX19GSUxFX18sIF9fc3RyaW5naWZ5KF9fTElORV9fKSwJICAgICAgIFwKKwkJCQlmbXQsICMj X19WQV9BUkdTX18pOwkJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKgorICogSnVzdCBsaWtl IEtVTklUX0VYUEVDVF9CSU5BUlksIGJ1dCBmb3IgY29tcGFyaW5nIHBvaW50ZXIgdHlwZXMuCisg Ki8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX1BUUl9CSU5BUlkodGVzdCwgbGVmdCwgY29uZGl0aW9u LCByaWdodCkgZG8gewkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJ CQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBc CisJa3VuaXRfZXhwZWN0X3B0cl9iaW5hcnkodGVzdCwJCQkJCSAgICAgICBcCisJCQkgICAgKHZv aWQgKikgX19sZWZ0LCAjbGVmdCwJCQkgICAgICAgXAorCQkJICAgICh2b2lkICopIF9fcmlnaHQs ICNyaWdodCwJCQkgICAgICAgXAorCQkJICAgIF9fbGVmdCBjb25kaXRpb24gX19yaWdodCwgI2Nv bmRpdGlvbiwJICAgICAgIFwKKwkJCSAgICBfX0ZJTEVfXywgX19zdHJpbmdpZnkoX19MSU5FX18p KTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9QVFJfQklO QVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAorCQkJCSAgICBsZWZ0LAkJCQkgICAgICAgXAorCQkJ CSAgICBjb25kaXRpb24sCQkJCSAgICAgICBcCisJCQkJICAgIHJpZ2h0LAkJCQkgICAgICAgXAor CQkJCSAgICBmbXQsCQkJCSAgICAgICBcCisJCQkJICAgIC4uLikgZG8gewkJCQkgICAgICAgXAor CXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdo dCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJa3VuaXRfZXhwZWN0X3B0cl9iaW5h cnlfbXNnKHRlc3QsCQkJCSAgICAgICBcCisJCQkJICAgICh2b2lkICopIF9fbGVmdCwgI2xlZnQs CQkgICAgICAgXAorCQkJCSAgICAodm9pZCAqKSBfX3JpZ2h0LCAjcmlnaHQsCQkgICAgICAgXAor CQkJCSAgICBfX2xlZnQgY29uZGl0aW9uIF9fcmlnaHQsICNjb25kaXRpb24sICAgICAgXAorCQkJ CSAgICBfX0ZJTEVfXywgX19zdHJpbmdpZnkoX19MSU5FX18pLAkgICAgICAgXAorCQkJCSAgICBm bXQsICMjX19WQV9BUkdTX18pOwkJICAgICAgIFwKK30gd2hpbGUgKDApCisKKy8qKgorICogS1VO SVRfRVhQRUNUX0VRKCkgLSBTZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgQGxlZnQgYW5kIEByaWdo dCBhcmUgZXF1YWwuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVm dDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUg QyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRl cyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0 IHRoZSB2YWx1ZXMgdGhhdCBAbGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZQorICogZXF1 YWwuIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8KKyAqIEtVTklUX0VYUEVDVF9U UlVFKEB0ZXN0LCAoQGxlZnQpID09IChAcmlnaHQpKS4gU2VlIEtVTklUX0VYUEVDVF9UUlVFKCkg Zm9yCisgKiBtb3JlIGluZm9ybWF0aW9uLgorICovCisjZGVmaW5lIEtVTklUX0VYUEVDVF9FUSh0 ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9FWFBFQ1RfQklOQVJZKHRlc3QsIGxlZnQsID09 LCByaWdodCkKKworI2RlZmluZSBLVU5JVF9FWFBFQ1RfRVFfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0 LCBmbXQsIC4uLikJCSAgICAgICBcCisJCUtVTklUX0VYUEVDVF9CSU5BUllfTVNHKHRlc3QsCQkJ CSAgICAgICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJCQkJCT09LAkJCQkgICAgICAgXAor CQkJCQlyaWdodCwJCQkJICAgICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19f VkFfQVJHU19fKQorCisvKioKKyAqIEtVTklUX0VYUEVDVF9QVFJfRVEoKSAtIEV4cGVjdHMgdGhh dCBwb2ludGVycyBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBlcXVhbC4KKyAqIEB0ZXN0OiBUaGUgdGVz dCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0 IGV2YWx1YXRlcyB0byBhIHBvaW50ZXIuCisgKiBAcmlnaHQ6IGFuIGFyYml0cmFyeSBleHByZXNz aW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcG9pbnRlci4KKyAqCisgKiBTZXRzIGFuIGV4cGVjdGF0 aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQgZXZhbHVhdGUgdG8gYXJl CisgKiBlcXVhbC4gVGhpcyBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bworICogS1VOSVRf RVhQRUNUX1RSVUUoQHRlc3QsIChAbGVmdCkgPT0gKEByaWdodCkpLiBTZWUgS1VOSVRfRVhQRUNU X1RSVUUoKSBmb3IKKyAqIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKyNkZWZpbmUgS1VOSVRfRVhQ RUNUX1BUUl9FUSh0ZXN0LCBsZWZ0LCByaWdodCkgXAorCQlLVU5JVF9FWFBFQ1RfUFRSX0JJTkFS WSh0ZXN0LCBsZWZ0LCA9PSwgcmlnaHQpCisKKyNkZWZpbmUgS1VOSVRfRVhQRUNUX1BUUl9FUV9N U0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRfRVhQRUNU X1BUUl9CSU5BUllfTVNHKHRlc3QsCQkJICAgICAgIFwKKwkJCQkJICAgIGxlZnQsCQkJICAgICAg IFwKKwkJCQkJICAgID09LAkJCQkgICAgICAgXAorCQkJCQkgICAgcmlnaHQsCQkJICAgICAgIFwK KwkJCQkJICAgIGZtdCwJCQkgICAgICAgXAorCQkJCQkgICAgIyNfX1ZBX0FSR1NfXykKKworLyoq CisgKiBLVU5JVF9FWFBFQ1RfTkUoKSAtIEFuIGV4cGVjdGF0aW9uIHRoYXQgQGxlZnQgYW5kIEBy aWdodCBhcmUgbm90IGVxdWFsLgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0Lgor ICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcHJp bWl0aXZlIEMgdHlwZS4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBl dmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICoKKyAqIFNldHMgYW4gZXhwZWN0YXRp b24gdGhhdCB0aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBldmFsdWF0ZSB0byBhcmUg bm90CisgKiBlcXVhbC4gVGhpcyBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bworICogS1VO SVRfRVhQRUNUX1RSVUUoQHRlc3QsIChAbGVmdCkgIT0gKEByaWdodCkpLiBTZWUgS1VOSVRfRVhQ RUNUX1RSVUUoKSBmb3IKKyAqIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKyNkZWZpbmUgS1VOSVRf RVhQRUNUX05FKHRlc3QsIGxlZnQsIHJpZ2h0KSBcCisJCUtVTklUX0VYUEVDVF9CSU5BUlkodGVz dCwgbGVmdCwgIT0sIHJpZ2h0KQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9ORV9NU0codGVzdCwg bGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJICAgICAgIFwKKwkJS1VOSVRfRVhQRUNUX0JJTkFSWV9N U0codGVzdCwJCQkJICAgICAgIFwKKwkJCQkJbGVmdCwJCQkJICAgICAgIFwKKwkJCQkJIT0sCQkJ CSAgICAgICBcCisJCQkJCXJpZ2h0LAkJCQkgICAgICAgXAorCQkJCQlmbXQsCQkJCSAgICAgICBc CisJCQkJCSMjX19WQV9BUkdTX18pCisKKy8qKgorICogS1VOSVRfRVhQRUNUX1BUUl9ORSgpIC0g RXhwZWN0cyB0aGF0IHBvaW50ZXJzIEBsZWZ0IGFuZCBAcmlnaHQgYXJlIG5vdCBlcXVhbC4KKyAq IEB0ZXN0OiBUaGUgdGVzdCBjb250ZXh0IG9iamVjdC4KKyAqIEBsZWZ0OiBhbiBhcmJpdHJhcnkg ZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHBvaW50ZXIuCisgKiBAcmlnaHQ6IGFuIGFy Yml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEgcG9pbnRlci4KKyAqCisgKiBT ZXRzIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHZhbHVlcyB0aGF0IEBsZWZ0IGFuZCBAcmlnaHQg ZXZhbHVhdGUgdG8gYXJlIG5vdAorICogZXF1YWwuIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2 YWxlbnQgdG8KKyAqIEtVTklUX0VYUEVDVF9UUlVFKEB0ZXN0LCAoQGxlZnQpICE9IChAcmlnaHQp KS4gU2VlIEtVTklUX0VYUEVDVF9UUlVFKCkgZm9yCisgKiBtb3JlIGluZm9ybWF0aW9uLgorICov CisjZGVmaW5lIEtVTklUX0VYUEVDVF9QVFJfTkUodGVzdCwgbGVmdCwgcmlnaHQpIFwKKwkJS1VO SVRfRVhQRUNUX1BUUl9CSU5BUlkodGVzdCwgbGVmdCwgIT0sIHJpZ2h0KQorCisjZGVmaW5lIEtV TklUX0VYUEVDVF9QVFJfTkVfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikJCSAgICAg ICBcCisJCUtVTklUX0VYUEVDVF9QVFJfQklOQVJZX01TRyh0ZXN0LAkJCSAgICAgICBcCisJCQkJ CSAgICBsZWZ0LAkJCSAgICAgICBcCisJCQkJCSAgICAhPSwJCQkJICAgICAgIFwKKwkJCQkJICAg IHJpZ2h0LAkJCSAgICAgICBcCisJCQkJCSAgICBmbXQsCQkJICAgICAgIFwKKwkJCQkJICAgICMj X19WQV9BUkdTX18pCisKKy8qKgorICogS1VOSVRfRVhQRUNUX0xUKCkgLSBBbiBleHBlY3RhdGlv biB0aGF0IEBsZWZ0IGlzIGxlc3MgdGhhbiBAcmlnaHQuCisgKiBAdGVzdDogVGhlIHRlc3QgY29u dGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFs dWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhw cmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0 cyBhbiBleHBlY3RhdGlvbiB0aGF0IHRoZSB2YWx1ZSB0aGF0IEBsZWZ0IGV2YWx1YXRlcyB0byBp cyBsZXNzIHRoYW4gdGhlCisgKiB2YWx1ZSB0aGF0IEByaWdodCBldmFsdWF0ZXMgdG8uIFRoaXMg aXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8KKyAqIEtVTklUX0VYUEVDVF9UUlVFKEB0ZXN0 LCAoQGxlZnQpIDwgKEByaWdodCkpLiBTZWUgS1VOSVRfRVhQRUNUX1RSVUUoKSBmb3IKKyAqIG1v cmUgaW5mb3JtYXRpb24uCisgKi8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX0xUKHRlc3QsIGxlZnQs IHJpZ2h0KSBcCisJCUtVTklUX0VYUEVDVF9CSU5BUlkodGVzdCwgbGVmdCwgPCwgcmlnaHQpCisK KyNkZWZpbmUgS1VOSVRfRVhQRUNUX0xUX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4p CQkgICAgICAgXAorCQlLVU5JVF9FWFBFQ1RfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAor CQkJCQlsZWZ0LAkJCQkgICAgICAgXAorCQkJCQk8LAkJCQkgICAgICAgXAorCQkJCQlyaWdodCwJ CQkJICAgICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJHU19fKQor CisvKioKKyAqIEtVTklUX0VYUEVDVF9MRSgpIC0gRXhwZWN0cyB0aGF0IEBsZWZ0IGlzIGxlc3Mg dGhhbiBvciBlcXVhbCB0byBAcmlnaHQuCisgKiBAdGVzdDogVGhlIHRlc3QgY29udGV4dCBvYmpl Y3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMgdG8g YSBwcmltaXRpdmUgQyB0eXBlLgorICogQHJpZ2h0OiBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbiB0 aGF0IGV2YWx1YXRlcyB0byBhIHByaW1pdGl2ZSBDIHR5cGUuCisgKgorICogU2V0cyBhbiBleHBl Y3RhdGlvbiB0aGF0IHRoZSB2YWx1ZSB0aGF0IEBsZWZ0IGV2YWx1YXRlcyB0byBpcyBsZXNzIHRo YW4gb3IKKyAqIGVxdWFsIHRvIHRoZSB2YWx1ZSB0aGF0IEByaWdodCBldmFsdWF0ZXMgdG8uIFNl bWFudGljYWxseSB0aGlzIGlzIGVxdWl2YWxlbnQKKyAqIHRvIEtVTklUX0VYUEVDVF9UUlVFKEB0 ZXN0LCAoQGxlZnQpIDw9IChAcmlnaHQpKS4gU2VlIEtVTklUX0VYUEVDVF9UUlVFKCkgZm9yCisg KiBtb3JlIGluZm9ybWF0aW9uLgorICovCisjZGVmaW5lIEtVTklUX0VYUEVDVF9MRSh0ZXN0LCBs ZWZ0LCByaWdodCkgXAorCQlLVU5JVF9FWFBFQ1RfQklOQVJZKHRlc3QsIGxlZnQsIDw9LCByaWdo dCkKKworI2RlZmluZSBLVU5JVF9FWFBFQ1RfTEVfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQs IC4uLikJCSAgICAgICBcCisJCUtVTklUX0VYUEVDVF9CSU5BUllfTVNHKHRlc3QsCQkJCSAgICAg ICBcCisJCQkJCWxlZnQsCQkJCSAgICAgICBcCisJCQkJCTw9LAkJCQkgICAgICAgXAorCQkJCQly aWdodCwJCQkJICAgICAgIFwKKwkJCQkJZm10LAkJCQkgICAgICAgXAorCQkJCQkjI19fVkFfQVJH U19fKQorCisvKioKKyAqIEtVTklUX0VYUEVDVF9HVCgpIC0gQW4gZXhwZWN0YXRpb24gdGhhdCBA bGVmdCBpcyBncmVhdGVyIHRoYW4gQHJpZ2h0LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQg b2JqZWN0LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVz IHRvIGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Np b24gdGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICoKKyAqIFNldHMgYW4g ZXhwZWN0YXRpb24gdGhhdCB0aGUgdmFsdWUgdGhhdCBAbGVmdCBldmFsdWF0ZXMgdG8gaXMgZ3Jl YXRlciB0aGFuCisgKiB0aGUgdmFsdWUgdGhhdCBAcmlnaHQgZXZhbHVhdGVzIHRvLiBUaGlzIGlz IHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9FWFBFQ1RfVFJVRShAdGVzdCwg KEBsZWZ0KSA+IChAcmlnaHQpKS4gU2VlIEtVTklUX0VYUEVDVF9UUlVFKCkgZm9yCisgKiBtb3Jl IGluZm9ybWF0aW9uLgorICovCisjZGVmaW5lIEtVTklUX0VYUEVDVF9HVCh0ZXN0LCBsZWZ0LCBy aWdodCkgXAorCQlLVU5JVF9FWFBFQ1RfQklOQVJZKHRlc3QsIGxlZnQsID4sIHJpZ2h0KQorCisj ZGVmaW5lIEtVTklUX0VYUEVDVF9HVF9NU0codGVzdCwgbGVmdCwgcmlnaHQsIGZtdCwgLi4uKQkJ ICAgICAgIFwKKwkJS1VOSVRfRVhQRUNUX0JJTkFSWV9NU0codGVzdCwJCQkJICAgICAgIFwKKwkJ CQkJbGVmdCwJCQkJICAgICAgIFwKKwkJCQkJPiwJCQkJICAgICAgIFwKKwkJCQkJcmlnaHQsCQkJ CSAgICAgICBcCisJCQkJCWZtdCwJCQkJICAgICAgIFwKKwkJCQkJIyNfX1ZBX0FSR1NfXykKKwor LyoqCisgKiBLVU5JVF9FWFBFQ1RfR0UoKSAtIEV4cGVjdHMgdGhhdCBAbGVmdCBpcyBncmVhdGVy IHRoYW4gb3IgZXF1YWwgdG8gQHJpZ2h0LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2Jq ZWN0LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRv IGEgcHJpbWl0aXZlIEMgdHlwZS4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24g dGhhdCBldmFsdWF0ZXMgdG8gYSBwcmltaXRpdmUgQyB0eXBlLgorICoKKyAqIFNldHMgYW4gZXhw ZWN0YXRpb24gdGhhdCB0aGUgdmFsdWUgdGhhdCBAbGVmdCBldmFsdWF0ZXMgdG8gaXMgZ3JlYXRl ciB0aGFuCisgKiB0aGUgdmFsdWUgdGhhdCBAcmlnaHQgZXZhbHVhdGVzIHRvLiBUaGlzIGlzIHNl bWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9FWFBFQ1RfVFJVRShAdGVzdCwgKEBs ZWZ0KSA+PSAoQHJpZ2h0KSkuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgpIGZvcgorICogbW9yZSBp bmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfR0UodGVzdCwgbGVmdCwgcmln aHQpIFwKKwkJS1VOSVRfRVhQRUNUX0JJTkFSWSh0ZXN0LCBsZWZ0LCA+PSwgcmlnaHQpCisKKyNk ZWZpbmUgS1VOSVRfRVhQRUNUX0dFX01TRyh0ZXN0LCBsZWZ0LCByaWdodCwgZm10LCAuLi4pCQkg ICAgICAgXAorCQlLVU5JVF9FWFBFQ1RfQklOQVJZX01TRyh0ZXN0LAkJCQkgICAgICAgXAorCQkJ CQlsZWZ0LAkJCQkgICAgICAgXAorCQkJCQk+PSwJCQkJICAgICAgIFwKKwkJCQkJcmlnaHQsCQkJ CSAgICAgICBcCisJCQkJCWZtdCwJCQkJICAgICAgIFwKKwkJCQkJIyNfX1ZBX0FSR1NfXykKKwor LyoqCisgKiBLVU5JVF9FWFBFQ1RfU1RSRVEoKSAtIEV4cGVjdHMgdGhhdCBzdHJpbmdzIEBsZWZ0 IGFuZCBAcmlnaHQgYXJlIGVxdWFsLgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0 LgorICogQGxlZnQ6IGFuIGFyYml0cmFyeSBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIGEg bnVsbCB0ZXJtaW5hdGVkIHN0cmluZy4KKyAqIEByaWdodDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Np b24gdGhhdCBldmFsdWF0ZXMgdG8gYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgorICoKKyAqIFNl dHMgYW4gZXhwZWN0YXRpb24gdGhhdCB0aGUgdmFsdWVzIHRoYXQgQGxlZnQgYW5kIEByaWdodCBl dmFsdWF0ZSB0byBhcmUKKyAqIGVxdWFsLiBUaGlzIGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50 IHRvCisgKiBLVU5JVF9FWFBFQ1RfVFJVRShAdGVzdCwgIXN0cmNtcCgoQGxlZnQpLCAoQHJpZ2h0 KSkpLiBTZWUgS1VOSVRfRVhQRUNUX1RSVUUoKQorICogZm9yIG1vcmUgaW5mb3JtYXRpb24uCisg Ki8KKyNkZWZpbmUgS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIGxlZnQsIHJpZ2h0KSBkbyB7CQkJ ICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklUX0VYUEVDVF9T VEFSVCh0ZXN0KTsJICAgICAgIFwKKwl0eXBlb2YobGVmdCkgX19sZWZ0ID0gKGxlZnQpOwkJCQkJ ICAgICAgIFwKKwl0eXBlb2YocmlnaHQpIF9fcmlnaHQgPSAocmlnaHQpOwkJCQkgICAgICAgXAor CQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiRXhwZWN0ZWQg IiAjbGVmdCAiID09ICIgI3JpZ2h0ICIsIGJ1dFxuIik7IFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9f c3RyZWFtLCAiXHRcdCVzID09ICVzXG4iLCAjbGVmdCwgX19sZWZ0KTsJICAgICAgIFwKKwlrdW5p dF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiXHRcdCVzID09ICVzXG4iLCAjcmlnaHQsIF9fcmlnaHQp OwkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlLVU5JVF9FWFBFQ1RfRU5EKHRlc3QsICFz dHJjbXAobGVmdCwgcmlnaHQpLCBfX3N0cmVhbSk7CQkgICAgICAgXAorfSB3aGlsZSAoMCkKKwor I2RlZmluZSBLVU5JVF9FWFBFQ1RfU1RSRVFfTVNHKHRlc3QsIGxlZnQsIHJpZ2h0LCBmbXQsIC4u LikgZG8gewkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRf RVhQRUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVvZihsZWZ0KSBfX2xlZnQgPSAobGVm dCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19yaWdodCA9IChyaWdodCk7CQkJCSAg ICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJF eHBlY3RlZCAiICNsZWZ0ICIgPT0gIiAjcmlnaHQgIiwgYnV0XG4iKTsgXAorCWt1bml0X3N0cmVh bV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNsZWZ0LCBfX2xlZnQpOwkgICAgICAg XAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNyaWdodCwg X19yaWdodCk7CSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgZm10LCAjI19f VkFfQVJHU19fKTsJCQkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlLVU5JVF9FWFBFQ1Rf RU5EKHRlc3QsICFzdHJjbXAobGVmdCwgcmlnaHQpLCBfX3N0cmVhbSk7CQkgICAgICAgXAorfSB3 aGlsZSAoMCkKKworLyoqCisgKiBLVU5JVF9FWFBFQ1RfU1RSTkVRKCkgLSBFeHBlY3RzIHRoYXQg c3RyaW5ncyBAbGVmdCBhbmQgQHJpZ2h0IGFyZSBub3QgZXF1YWwuCisgKiBAdGVzdDogVGhlIHRl c3QgY29udGV4dCBvYmplY3QuCisgKiBAbGVmdDogYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gdGhh dCBldmFsdWF0ZXMgdG8gYSBudWxsIHRlcm1pbmF0ZWQgc3RyaW5nLgorICogQHJpZ2h0OiBhbiBh cmJpdHJhcnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBhIG51bGwgdGVybWluYXRlZCBz dHJpbmcuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0IHRoZSB2YWx1ZXMgdGhhdCBA bGVmdCBhbmQgQHJpZ2h0IGV2YWx1YXRlIHRvIGFyZQorICogbm90IGVxdWFsLiBUaGlzIGlzIHNl bWFudGljYWxseSBlcXVpdmFsZW50IHRvCisgKiBLVU5JVF9FWFBFQ1RfVFJVRShAdGVzdCwgc3Ry Y21wKChAbGVmdCksIChAcmlnaHQpKSkuIFNlZSBLVU5JVF9FWFBFQ1RfVFJVRSgpCisgKiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4KKyAqLworI2RlZmluZSBLVU5JVF9FWFBFQ1RfU1RSTkVRKHRlc3Qs IGxlZnQsIHJpZ2h0KSBkbyB7CQkJICAgICAgIFwKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpfX3N0 cmVhbSA9IEtVTklUX0VYUEVDVF9TVEFSVCh0ZXN0KTsJICAgICAgIFwKKwl0eXBlb2YobGVmdCkg X19sZWZ0ID0gKGxlZnQpOwkJCQkJICAgICAgIFwKKwl0eXBlb2YocmlnaHQpIF9fcmlnaHQgPSAo cmlnaHQpOwkJCQkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRk KF9fc3RyZWFtLCAiRXhwZWN0ZWQgIiAjbGVmdCAiICE9ICIgI3JpZ2h0ICIsIGJ1dFxuIik7IFwK KwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiXHRcdCVzID09ICVzXG4iLCAjbGVmdCwgX19s ZWZ0KTsJICAgICAgIFwKKwlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLCAiXHRcdCVzID09ICVz XG4iLCAjcmlnaHQsIF9fcmlnaHQpOwkgICAgICAgXAorCQkJCQkJCQkJICAgICAgIFwKKwlLVU5J VF9FWFBFQ1RfRU5EKHRlc3QsIHN0cmNtcChsZWZ0LCByaWdodCksIF9fc3RyZWFtKTsJCSAgICAg ICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9TVFJORVFfTVNHKHRlc3Qs IGxlZnQsIHJpZ2h0LCBmbXQsIC4uLikgZG8gewkgICAgICAgXAorCXN0cnVjdCBrdW5pdF9zdHJl YW0gKl9fc3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3QpOwkgICAgICAgXAorCXR5cGVv ZihsZWZ0KSBfX2xlZnQgPSAobGVmdCk7CQkJCQkgICAgICAgXAorCXR5cGVvZihyaWdodCkgX19y aWdodCA9IChyaWdodCk7CQkJCSAgICAgICBcCisJCQkJCQkJCQkgICAgICAgXAorCWt1bml0X3N0 cmVhbV9hZGQoX19zdHJlYW0sICJFeHBlY3RlZCAiICNsZWZ0ICIgIT0gIiAjcmlnaHQgIiwgYnV0 XG4iKTsgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0JXMgPT0gJXNcbiIsICNs ZWZ0LCBfX2xlZnQpOwkgICAgICAgXAorCWt1bml0X3N0cmVhbV9hZGQoX19zdHJlYW0sICJcdFx0 JXMgPT0gJXNcbiIsICNyaWdodCwgX19yaWdodCk7CSAgICAgICBcCisJa3VuaXRfc3RyZWFtX2Fk ZChfX3N0cmVhbSwgZm10LCAjI19fVkFfQVJHU19fKTsJCQkgICAgICAgXAorCQkJCQkJCQkJICAg ICAgIFwKKwlLVU5JVF9FWFBFQ1RfRU5EKHRlc3QsIHN0cmNtcChsZWZ0LCByaWdodCksIF9fc3Ry ZWFtKTsJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisvKioKKyAqIEtVTklUX0VYUEVDVF9OT1Rf RVJSX09SX05VTEwoKSAtIEV4cGVjdHMgdGhhdCBAcHRyIGlzIG5vdCBudWxsIGFuZCBub3QgZXJy LgorICogQHRlc3Q6IFRoZSB0ZXN0IGNvbnRleHQgb2JqZWN0LgorICogQHB0cjogYW4gYXJiaXRy YXJ5IHBvaW50ZXIuCisgKgorICogU2V0cyBhbiBleHBlY3RhdGlvbiB0aGF0IHRoZSB2YWx1ZSB0 aGF0IEBwdHIgZXZhbHVhdGVzIHRvIGlzIG5vdCBudWxsIGFuZCBub3QKKyAqIGFuIGVycm5vIHN0 b3JlZCBpbiBhIHBvaW50ZXIuIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8KKyAq IEtVTklUX0VYUEVDVF9UUlVFKEB0ZXN0LCAhSVNfRVJSX09SX05VTEwoQHB0cikpLiBTZWUgS1VO SVRfRVhQRUNUX1RSVUUoKSBmb3IKKyAqIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKyNkZWZpbmUg S1VOSVRfRVhQRUNUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBwdHIpIGRvIHsJCQkgICAgICAgXAor CXN0cnVjdCBrdW5pdF9zdHJlYW0gKl9fc3RyZWFtID0gS1VOSVRfRVhQRUNUX1NUQVJUKHRlc3Qp OwkgICAgICAgXAorCXR5cGVvZihwdHIpIF9fcHRyID0gKHB0cik7CQkJCQkgICAgICAgXAorCQkJ CQkJCQkJICAgICAgIFwKKwlpZiAoIV9fcHRyKQkJCQkJCQkgICAgICAgXAorCQlrdW5pdF9zdHJl YW1fYWRkKF9fc3RyZWFtLAkJCQkgICAgICAgXAorCQkJICAgICAgIkV4cGVjdGVkICIgI3B0ciAi IGlzIG5vdCBudWxsLCBidXQgaXMuIik7ICAgICAgIFwKKwlpZiAoSVNfRVJSKF9fcHRyKSkJCQkJ CQkgICAgICAgXAorCQlrdW5pdF9zdHJlYW1fYWRkKF9fc3RyZWFtLAkJCQkgICAgICAgXAorCQkJ ICAgICAgIkV4cGVjdGVkICIgI3B0ciAiIGlzIG5vdCBlcnJvciwgYnV0IGlzOiAlbGQiLCAgIFwK KwkJCSAgICAgIFBUUl9FUlIoX19wdHIpKTsJCQkJICAgICAgIFwKKwkJCQkJCQkJCSAgICAgICBc CisJS1VOSVRfRVhQRUNUX0VORCh0ZXN0LCAhSVNfRVJSX09SX05VTEwoX19wdHIpLCBfX3N0cmVh bSk7CSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEtVTklUX0VYUEVDVF9OT1RfRVJS X09SX05VTExfTVNHKHRlc3QsIHB0ciwgZm10LCAuLi4pIGRvIHsJICAgICAgIFwKKwlzdHJ1Y3Qg a3VuaXRfc3RyZWFtICpfX3N0cmVhbSA9IEtVTklUX0VYUEVDVF9TVEFSVCh0ZXN0KTsJICAgICAg IFwKKwl0eXBlb2YocHRyKSBfX3B0ciA9IChwdHIpOwkJCQkJICAgICAgIFwKKwkJCQkJCQkJCSAg ICAgICBcCisJaWYgKCFfX3B0cikgewkJCQkJCQkgICAgICAgXAorCQlrdW5pdF9zdHJlYW1fYWRk KF9fc3RyZWFtLAkJCQkgICAgICAgXAorCQkJICAgICAgIkV4cGVjdGVkICIgI3B0ciAiIGlzIG5v dCBudWxsLCBidXQgaXMuIik7ICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwg Zm10LCAjI19fVkFfQVJHU19fKTsJCSAgICAgICBcCisJfQkJCQkJCQkJICAgICAgIFwKKwlpZiAo SVNfRVJSKF9fcHRyKSkgewkJCQkJCSAgICAgICBcCisJCWt1bml0X3N0cmVhbV9hZGQoX19zdHJl YW0sCQkJCSAgICAgICBcCisJCQkgICAgICAiRXhwZWN0ZWQgIiAjcHRyICIgaXMgbm90IGVycm9y LCBidXQgaXM6ICVsZCIsICAgXAorCQkJICAgICAgUFRSX0VSUihfX3B0cikpOwkJCQkgICAgICAg XAorCQkJCQkJCQkJICAgICAgIFwKKwkJa3VuaXRfc3RyZWFtX2FkZChfX3N0cmVhbSwgZm10LCAj I19fVkFfQVJHU19fKTsJCSAgICAgICBcCisJfQkJCQkJCQkJICAgICAgIFwKKwlLVU5JVF9FWFBF Q1RfRU5EKHRlc3QsICFJU19FUlJfT1JfTlVMTChfX3B0ciksIF9fc3RyZWFtKTsJICAgICAgIFwK K30gd2hpbGUgKDApCisKICNlbmRpZiAvKiBfS1VOSVRfVEVTVF9IICovCmRpZmYgLS1naXQgYS9r dW5pdC90ZXN0LmMgYi9rdW5pdC90ZXN0LmMKaW5kZXggMGJiNmY1M2E3Zjg3ZS4uZTA3MjdhZmI1 ZDhhOSAxMDA2NDQKLS0tIGEva3VuaXQvdGVzdC5jCisrKyBiL2t1bml0L3Rlc3QuYwpAQCAtMzI5 LDMgKzMyOSw2OSBAQCB2b2lkIGt1bml0X3ByaW50ayhjb25zdCBjaGFyICpsZXZlbCwKIAogCXZh X2VuZChhcmdzKTsKIH0KKwordm9pZCBrdW5pdF9leHBlY3RfYmluYXJ5X21zZyhzdHJ1Y3Qga3Vu aXQgKnRlc3QsCisJCQkgICAgIGxvbmcgbG9uZyBsZWZ0LCBjb25zdCBjaGFyICpsZWZ0X25hbWUs CisJCQkgICAgIGxvbmcgbG9uZyByaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCSAg ICAgYm9vbCBjb21wYXJlX3Jlc3VsdCwKKwkJCSAgICAgY29uc3QgY2hhciAqY29tcGFyZV9uYW1l LAorCQkJICAgICBjb25zdCBjaGFyICpmaWxlLAorCQkJICAgICBjb25zdCBjaGFyICpsaW5lLAor CQkJICAgICBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpz dHJlYW0gPSBrdW5pdF9leHBlY3Rfc3RhcnQodGVzdCwgZmlsZSwgbGluZSk7CisJc3RydWN0IHZh X2Zvcm1hdCB2YWY7CisJdmFfbGlzdCBhcmdzOworCisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0s CisJCQkgIkV4cGVjdGVkICVzICVzICVzLCBidXRcbiIsCisJCQkgbGVmdF9uYW1lLCBjb21wYXJl X25hbWUsIHJpZ2h0X25hbWUpOworCWt1bml0X3N0cmVhbV9hZGQoc3RyZWFtLCAiXHRcdCVzID09 ICVsbGRcbiIsIGxlZnRfbmFtZSwgbGVmdCk7CisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJc dFx0JXMgPT0gJWxsZCIsIHJpZ2h0X25hbWUsIHJpZ2h0KTsKKworCWlmIChmbXQpIHsKKwkJdmFf c3RhcnQoYXJncywgZm10KTsKKworCQl2YWYuZm10ID0gZm10OworCQl2YWYudmEgPSAmYXJnczsK KworCQlrdW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwgIlxuJXBWIiwgJnZhZik7CisKKwkJdmFfZW5k KGFyZ3MpOworCX0KKworCWt1bml0X2V4cGVjdF9lbmQodGVzdCwgY29tcGFyZV9yZXN1bHQsIHN0 cmVhbSk7Cit9CisKK3ZvaWQga3VuaXRfZXhwZWN0X3B0cl9iaW5hcnlfbXNnKHN0cnVjdCBrdW5p dCAqdGVzdCwKKwkJCQkgdm9pZCAqbGVmdCwgY29uc3QgY2hhciAqbGVmdF9uYW1lLAorCQkJCSB2 b2lkICpyaWdodCwgY29uc3QgY2hhciAqcmlnaHRfbmFtZSwKKwkJCQkgYm9vbCBjb21wYXJlX3Jl c3VsdCwKKwkJCQkgY29uc3QgY2hhciAqY29tcGFyZV9uYW1lLAorCQkJCSBjb25zdCBjaGFyICpm aWxlLAorCQkJCSBjb25zdCBjaGFyICpsaW5lLAorCQkJCSBjb25zdCBjaGFyICpmbXQsIC4uLikK K3sKKwlzdHJ1Y3Qga3VuaXRfc3RyZWFtICpzdHJlYW0gPSBrdW5pdF9leHBlY3Rfc3RhcnQodGVz dCwgZmlsZSwgbGluZSk7CisJc3RydWN0IHZhX2Zvcm1hdCB2YWY7CisJdmFfbGlzdCBhcmdzOwor CisJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sCisJCQkgIkV4cGVjdGVkICVzICVzICVzLCBidXRc biIsCisJCQkgbGVmdF9uYW1lLCBjb21wYXJlX25hbWUsIHJpZ2h0X25hbWUpOworCWt1bml0X3N0 cmVhbV9hZGQoc3RyZWFtLCAiXHRcdCVzID09ICVwS1xuIiwgbGVmdF9uYW1lLCBsZWZ0KTsKKwlr dW5pdF9zdHJlYW1fYWRkKHN0cmVhbSwgIlx0XHQlcyA9PSAlcEsiLCByaWdodF9uYW1lLCByaWdo dCk7CisKKwlpZiAoZm10KSB7CisJCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisKKwkJdmFmLmZtdCA9 IGZtdDsKKwkJdmFmLnZhID0gJmFyZ3M7CisKKwkJa3VuaXRfc3RyZWFtX2FkZChzdHJlYW0sICJc biVwViIsICZ2YWYpOworCisJCXZhX2VuZChhcmdzKTsKKwl9CisKKwlrdW5pdF9leHBlY3RfZW5k KHRlc3QsIGNvbXBhcmVfcmVzdWx0LCBzdHJlYW0pOworfQotLSAKMi4yMS4wLjEwMjAuZ2YyODIw Y2YwMWEtZ29vZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs