From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chandra Konduru Subject: =?utf-8?q?=5BPATCH_2/2=5D_i-g-t=3A_Adding_display_NV1?= =?utf-8?q?2_testcase?= Date: Fri, 1 May 2015 20:11:39 -0700 Message-ID: <1430536299-17547-3-git-send-email-chandra.konduru@intel.com> References: <1430536299-17547-1-git-send-email-chandra.konduru@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 4AAA06E2B1 for ; Fri, 1 May 2015 20:12:34 -0700 (PDT) In-Reply-To: <1430536299-17547-1-git-send-email-chandra.konduru@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: thomas.wood@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogY2hhbmRyYSBrb25kdXJ1IDxjaGFuZHJhLmtvbmR1cnVAaW50ZWwuY29tPgoKVGhpcyBw YXRjaCBhZGRzIGttc19udjEyIHRlc3QgY2FzZS4gSXQgY292ZXJzIHRlc3RpbmcgTlYxMiBpbgph bGwgc3VwcG9ydGVkIGxpbmVhci90aWxlLVgvdGlsZS1ZL3RpbGUtWWYgdGlsZSBmb3JtYXRzIGlu CjAgYW5kIDE4MCBvcmllbnRhdGlvbnMuIEZvciBlYWNoIHRpbGluZyBmb3JtYXQsIGl0IHRlc3Rz CnZhcmlvdXMgY29tYmluYXRpb25zIG9mIHBsYW5lcyBhbmQgc2NhbGluZy4KCkl0IGhhcyBzb21l IHZlcnkgcHJlbGltaW5hcnkgY3JjIHN1cHBvcnQgYW5kIGl0IGlzIGJpdCBmbGFreS4KVGhvdWdo IEkgaGF2ZSBzZWVuIG9uY2UtaW4tYS13aGlsZSBjcmMgY2hlY2sgZmFpbHVyZXMsIG1vc3Qgb2Yg dGhlCnRpbWUgdGhleSBwYXNzLCBzbyBlbmFibGVkIGJ5LWRlZmF1bHQuIElmIHRoZXkgY2F1c2Ug aGVhZGFjaGVzCnRoZXkgY2FuIGJlIGRpc2FibGVkIGFzIG5lZWRlZC4KClNpZ25lZC1vZmYtYnk6 IGNoYW5kcmEga29uZHVydSA8Y2hhbmRyYS5rb25kdXJ1QGludGVsLmNvbT4KLS0tCiB0ZXN0cy8u Z2l0aWdub3JlICAgICAgIHwgICAxICsKIHRlc3RzL0FuZHJvaWQubWsgICAgICAgfCAgIDEgKwog dGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9rbXNfbnYxMi5jICAgICAgIHwg NTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgNTMyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy9rbXNfbnYxMi5jCgpkaWZmIC0tZ2l0IGEvdGVzdHMvLmdpdGlnbm9yZSBiL3Rlc3RzLy5naXRp Z25vcmUKaW5kZXggNzk2ZTMzMC4uMzVjMGU2ZSAxMDA2NDQKLS0tIGEvdGVzdHMvLmdpdGlnbm9y ZQorKysgYi90ZXN0cy8uZ2l0aWdub3JlCkBAIC0xNDcsNiArMTQ3LDcgQEAga21zX3ZibGFuawog a21zX2NydGNfYmFja2dyb3VuZF9jb2xvcgoga21zX3BsYW5lX3NjYWxpbmcKIGttc19wYW5lbF9m aXR0aW5nCitrbXNfbnYxMgogcG1fbHBzcAogcG1fcmM2X3Jlc2lkZW5jeQogcG1fcnBtCmRpZmYg LS1naXQgYS90ZXN0cy9BbmRyb2lkLm1rIGIvdGVzdHMvQW5kcm9pZC5tawppbmRleCBmYWM5OTMx Li5jMGM2MzgzIDEwMDY0NAotLS0gYS90ZXN0cy9BbmRyb2lkLm1rCisrKyBiL3Rlc3RzL0FuZHJv aWQubWsKQEAgLTgxLDYgKzgxLDcgQEAgZWxzZQogICAgIGttc19wd3JpdGVfY3JjIFwKICAgICBr bXNfcGlwZV9iX2NfaXZiIFwKICAgICBrbXNfbGVnYWN5X2NvbG9ya2V5CisJa21zX252MTIgXAog ICAgIElHVF9MT0NBTF9DRkxBR1MgKz0gLURBTkRST0lEX0hBU19DQUlSTz0wCiBlbmRpZgogCmRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwppbmRleCA0Y2JjNTBkLi5iNjgyMjRlIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTc4LDYgKzc4LDcgQEAgVEVTVFNf cHJvZ3NfTSA9IFwKIAlrbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yIFwKIAlrbXNfcGxhbmVfc2Nh bGluZyBcCiAJa21zX3BhbmVsX2ZpdHRpbmcgXAorCWttc19udjEyIFwKIAlwbV9scHNwIFwKIAlw bV9ycG0gXAogCXBtX3JwcyBcCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfbnYxMi5jIGIvdGVzdHMv a21zX252MTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODhjOTM0Ci0t LSAvZGV2L251bGwKKysrIGIvdGVzdHMva21zX252MTIuYwpAQCAtMCwwICsxLDUyOSBAQAorLyoK KyAqIENvcHlyaWdodCDCqSAyMDEzLDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoK KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBT SEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlIDxt YXRoLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCisjaW5j bHVkZSAiZHJtdGVzdC5oIgorI2luY2x1ZGUgImlndF9kZWJ1Z2ZzLmgiCisjaW5jbHVkZSAiaWd0 X2ttcy5oIgorI2luY2x1ZGUgImlndF9jb3JlLmgiCisjaW5jbHVkZSAiaW50ZWxfY2hpcHNldC5o IgorI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisKK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJU ZXN0IGRpc3BsYXkgTlYxMiBzdXBwb3J0Iik7CisKK3VpbnQzMl90IGRldmlkOwordHlwZWRlZiBz dHJ1Y3QgeworCWludCBkcm1fZmQ7CisJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5OworCWlndF9jcmNf dCBjcmMxOworCWlndF9jcmNfdCBjcmMyOworCWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKKwlp bnQgbnVtX3NjYWxlcnM7CisKKwlzdHJ1Y3QgaWd0X2ZiIGZiMTsKKwlzdHJ1Y3QgaWd0X2ZiIGZi MV9udjEyOworCXN0cnVjdCBpZ3RfZmIgZmIyOworCXN0cnVjdCBpZ3RfZmIgZmIyX252MTI7CisJ c3RydWN0IGlndF9mYiBmYjM7CisJc3RydWN0IGlndF9mYiBmYjNfbnYxMjsKKwlpbnQgZmJfaWQx OworCWludCBmYl9pZDFfbnYxMjsKKwlpbnQgZmJfaWQyOworCWludCBmYl9pZDJfbnYxMjsKKwlp bnQgZmJfaWQzOworCWludCBmYl9pZDNfbnYxMjsKKworCWlndF9wbGFuZV90ICpwbGFuZTE7CisJ aWd0X3BsYW5lX3QgKnBsYW5lMjsKKwlpZ3RfcGxhbmVfdCAqcGxhbmUzOworCisJdWludDY0X3Qg dGlsZWQ7CisJaW50IHJvdGF0aW9uOworCWludCBjcmM7Cit9IGRhdGFfdDsKKworI2RlZmluZSBJ TUdfRklMRSAgIjEwODBwLWxlZnQucG5nIgorI2RlZmluZSBTT0xJRF9DT0xPUiAgICAgIDB4RkZG RkZGICAgICAgIC8qIEJHUiA4YnBjICovCisKK3N0YXRpYyB2b2lkCitwYWludF9wYXR0ZXJuKGRh dGFfdCAqZCwgc3RydWN0IGlndF9mYiAqZmIsIHVpbnQxNl90IHcsIHVpbnQxNl90IGgpCit7CisJ Y2Fpcm9fdCAqY3I7CisKKwljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGQtPmRybV9mZCwgZmIpOwor CWlndF9wYWludF90ZXN0X3BhdHRlcm4oY3IsIHcsIGgpOworCWNhaXJvX2Rlc3Ryb3koY3IpOwor fQorCitzdGF0aWMgdm9pZAorcGFpbnRfaW1hZ2UoZGF0YV90ICpkLCBzdHJ1Y3QgaWd0X2ZiICpm YiwgdWludDE2X3QgdywgdWludDE2X3QgaCkKK3sKKwljYWlyb190ICpjcjsKKworCWNyID0gaWd0 X2dldF9jYWlyb19jdHgoZC0+ZHJtX2ZkLCBmYik7CisJaWd0X3BhaW50X2ltYWdlKGNyLCBJTUdf RklMRSwgMCwgMCwgdywgaCk7CisJY2Fpcm9fZGVzdHJveShjcik7Cit9CisKK3N0YXRpYyB2b2lk CitwYWludF9zb2xpZF9jb2xvcihkYXRhX3QgKmQsIHN0cnVjdCBpZ3RfZmIgKmZiLCB1aW50MTZf dCB3LCB1aW50MTZfdCBoLAorCXVpbnQzMl90IGNvbG9yKQoreworCWNhaXJvX3QgKmNyOworCWRv dWJsZSByLCBnLCBiOworCisJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkLT5kcm1fZmQsIGZiKTsK KworCS8qIFBhaW50IHdpdGggc29saWQgY29sb3IgKi8KKwlyID0gKGRvdWJsZSkgKGNvbG9yICYg MHhGRikgLyAyNTUuMDsKKwlnID0gKGRvdWJsZSkgKChjb2xvciAmIDB4RkYwMCkgPj4gOCkgLyAy NTUuMDsKKwliID0gKGRvdWJsZSkgKChjb2xvciAmIDB4RkYwMDAwKSA+PiAxNikgLyAyNTUuMDsK KwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIDAsIHcsIGgsIHIsIGcsIGIpOworCisJY2Fpcm9fZGVz dHJveShjcik7Cit9CisKK3N0YXRpYyB2b2lkIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsIGln dF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwKKwkJCWlndF9wbGFuZV90ICpwbGFu ZSwgZHJtTW9kZU1vZGVJbmZvICptb2RlLCBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKK3sKKwlp Z3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7CisKKwlpZ3Rfb3V0cHV0X3Nl dF9waXBlKG91dHB1dCwgcGlwZSk7CisKKwkvKiBjcmVhdGUgdGhlIHBpcGVfY3JjIG9iamVjdCBm b3IgdGhpcyBwaXBlICovCisJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOworCWRh dGEtPnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhwaXBlLCBJTlRFTF9QSVBFX0NSQ19TT1VS Q0VfQVVUTyk7CisKKwkvKiBiZWZvcmUgYWxsb2NhdGluZywgZnJlZSBpZiBhbnkgb2xkZXIgZmIg Ki8KKwlpZiAoZGF0YS0+ZmJfaWQxKSB7CisJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAm ZGF0YS0+ZmIxKTsKKwkJZGF0YS0+ZmJfaWQxID0gMDsKKwl9CisKKwkvKiBhbGxvY2F0ZSBmYiBm b3IgcGxhbmUgMSAqLworCWRhdGEtPmZiX2lkMSA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2Zk LAorCQkJbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJRFJNX0ZPUk1BVF9YUkdC ODg4OCwKKwkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVELCAvKiB0aWxlZCAqLworCQkJ JmRhdGEtPmZiMSk7CisJaWd0X2Fzc2VydChkYXRhLT5mYl9pZDEpOworCisJcGFpbnRfcGF0dGVy bihkYXRhLCAmZGF0YS0+ZmIxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOworCisJ LyoKKwkgKiBXZSBhbHdheXMgc2V0IHRoZSBwcmltYXJ5IHBsYW5lIHRvIGFjdHVhbGx5IGVuYWJs ZSB0aGUgcGlwZSBhcworCSAqIHRoZXJlJ3Mgbm8gd2F5ICh0aGF0IHdvcmtzKSB0byBsaWdodCB1 cCBhIHBpcGUgd2l0aCBvbmx5IGEgc3ByaXRlCisJICogcGxhbmUgZW5hYmxlZCBhdCB0aGUgbW9t ZW50LgorCSAqLworCWlmICghcGxhbmUtPmlzX3ByaW1hcnkpIHsKKwkJaWd0X3BsYW5lX3QgKnBy aW1hcnk7CisKKwkJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgSUdUX1BM QU5FX1BSSU1BUlkpOworCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5mYjEpOwor CX0KKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5mYjEpOworCWlmIChzID09IENP TU1JVF9MRUdBQ1kpIHsKKwkJaW50IHJldDsKKwkJcmV0ID0gZHJtTW9kZVNldENydGMoZGF0YS0+ ZHJtX2ZkLAorCQkJCW91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNfaWQsCisJCQkJZGF0YS0+ZmJf aWQxLAorCQkJCXBsYW5lLT5wYW5feCwgcGxhbmUtPnBhbl95LAorCQkJCSZvdXRwdXQtPmlkLAor CQkJCTEsCisJCQkJbW9kZSk7CisJCWlndF9hc3NlcnQocmV0ID09IDApOworCX0gZWxzZSB7CisJ CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgcyk7CisJfQorfQorCitzdGF0aWMgdm9pZCBj bGVhbnVwX2NydGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BsYW5l X3QgKnBsYW5lKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsK KworCWlndF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKKwlkYXRhLT5waXBlX2NyYyA9 IE5VTEw7CisKKwlpZiAoZGF0YS0+ZmJfaWQxKSB7CisJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJt X2ZkLCAmZGF0YS0+ZmIxKTsKKwkJZGF0YS0+ZmJfaWQxID0gMDsKKwl9CisJaWYgKGRhdGEtPmZi X2lkMikgeworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiMik7CisJCWRh dGEtPmZiX2lkMiA9IDA7CisJfQorCWlmIChkYXRhLT5mYl9pZDMpIHsKKwkJaWd0X3JlbW92ZV9m YihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjMpOworCQlkYXRhLT5mYl9pZDMgPSAwOworCX0KKwor CWlmIChkYXRhLT5mYl9pZDFfbnYxMikgeworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwg JmRhdGEtPmZiMV9udjEyKTsKKwkJZGF0YS0+ZmJfaWQxX252MTIgPSAwOworCX0KKworCWlmIChk YXRhLT5mYl9pZDJfbnYxMikgeworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEt PmZiMl9udjEyKTsKKwkJZGF0YS0+ZmJfaWQyX252MTIgPSAwOworCX0KKworCWlmIChkYXRhLT5m Yl9pZDNfbnYxMikgeworCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiM19u djEyKTsKKwkJZGF0YS0+ZmJfaWQzX252MTIgPSAwOworCX0KKworCWlmICghcGxhbmUtPmlzX3By aW1hcnkpIHsKKwkJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisKKwkJcHJpbWFyeSA9IGlndF9vdXRw dXRfZ2V0X3BsYW5lKG91dHB1dCwgSUdUX1BMQU5FX1BSSU1BUlkpOworCQlpZ3RfcGxhbmVfc2V0 X2ZiKHByaW1hcnksIE5VTEwpOworCX0KKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwp OworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7CisKKwlpZ3RfZGlzcGxh eV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworfQorCitzdGF0aWMgdm9pZCB0 ZXN0X252MTJfcGxhbmUoZGF0YV90ICpkKQoreworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAm ZC0+ZGlzcGxheTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwllbnVtIHBpcGUgcGlwZTsKKwlp bnQgdmFsaWRfdGVzdHMgPSAwOworCWludCBpbWdfd2lkdGg7CisJaW50IGltZ19oZWlnaHQ7CisK KwlpZ3RfcmVxdWlyZShkLT5kaXNwbGF5Lmhhc191bml2ZXJzYWxfcGxhbmVzKTsKKwlpZ3RfcmVx dWlyZShkLT5udW1fc2NhbGVycyk7CisKKwlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRpc3Bs YXksIG91dHB1dCkgeworCQlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJCW1vZGUgPSBpZ3Rfb3V0 cHV0X2dldF9tb2RlKG91dHB1dCk7CisJCXBpcGUgPSBvdXRwdXQtPmNvbmZpZy5waXBlOworCisJ CWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKworCQkvKiBnZXQgcGxhbmVzICov CisJCWQtPnBsYW5lMSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgSUdUX1BMQU5FX1BS SU1BUlkpOworCQlkLT5wbGFuZTIgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIElHVF9Q TEFORV8yKTsKKwkJZC0+cGxhbmUzID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBJR1Rf UExBTkVfMyk7CisKKwkJLyogc2V0IHJlcXVpcmVkIHJvdGF0aW9uICovCisJCWlndF9wbGFuZV9z ZXRfcm90YXRpb24oZC0+cGxhbmUxLCBkLT5yb3RhdGlvbik7CisJCWlndF9wbGFuZV9zZXRfcm90 YXRpb24oZC0+cGxhbmUyLCBkLT5yb3RhdGlvbik7CisJCWlndF9wbGFuZV9zZXRfcm90YXRpb24o ZC0+cGxhbmUzLCBkLT5yb3RhdGlvbik7CisKKwkJLyogU2V0IHVwIGRpc3BsYXkgd2l0aCBwbGFu ZSAxICovCisJCXByZXBhcmVfY3J0YyhkLCBvdXRwdXQsIHBpcGUsIGQtPnBsYW5lMSwgbW9kZSwg Q09NTUlUX0xFR0FDWSk7CisKKwkJLyogYWxsb2NhdGUgZmIyLCBmYjJfbnYxMiwgZmIxX252MTIg d2l0aCBpbWFnZSBzaXplICovCisJCWlndF9nZXRfaW1hZ2Vfc2l6ZShJTUdfRklMRSwgJmltZ193 aWR0aCwgJmltZ19oZWlnaHQpOworCisJCS8qIGZiMiBpcyBpbiBSR0IgZm9ybWF0ICovCisJCWQt PmZiX2lkMiA9IGlndF9jcmVhdGVfZmIoZC0+ZHJtX2ZkLAorCQkJCWltZ193aWR0aCwgaW1nX2hl aWdodCwKKwkJCQlEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJCWQtPnRpbGVkLCAvKiB0aWxlZCAq LworCQkJCSZkLT5mYjIpOworCQlpZ3RfYXNzZXJ0KGQtPmZiX2lkMik7CisKKwkJLyogZmIxX252 MTIgaXMgaW4gTlYxMiBmb3JtYXQgKi8KKwkJZC0+ZmJfaWQxX252MTIgPSBpZ3RfY3JlYXRlX2Zi KGQtPmRybV9mZCwKKwkJCQlpbWdfd2lkdGgsIGltZ19oZWlnaHQsCisJCQkJRFJNX0ZPUk1BVF9O VjEyLAorCQkJCWQtPnRpbGVkLCAvKiB0aWxlZCAqLworCQkJCSZkLT5mYjFfbnYxMik7CisJCWln dF9hc3NlcnQoZC0+ZmJfaWQxX252MTIpOworCisJCS8qIGZiMl9udjEyIGlzIGluIE5WMTIgZm9y bWF0ICovCisJCWQtPmZiX2lkMl9udjEyID0gaWd0X2NyZWF0ZV9mYihkLT5kcm1fZmQsCisJCQkJ aW1nX3dpZHRoLCBpbWdfaGVpZ2h0LAorCQkJCURSTV9GT1JNQVRfTlYxMiwKKwkJCQlkLT50aWxl ZCwKKwkJCQkmZC0+ZmIyX252MTIpOworCQlpZ3RfYXNzZXJ0KGQtPmZiX2lkMl9udjEyKTsKKwor CQkvKiBmYjMgaXMgaW4gUkdCICovCisJCWQtPmZiX2lkMyA9IGlndF9jcmVhdGVfZmIoZC0+ZHJt X2ZkLAorCQkJCW1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCQlEUk1fRk9STUFU X0FSR0I4ODg4LAorCQkJCWQtPnRpbGVkLCAvKiB0aWxlZCAqLworCQkJCSZkLT5mYjMpOworCQlp Z3RfYXNzZXJ0KGQtPmZiX2lkMyk7CisKKwkJaWYgKGQtPmNyYykgeworCQkJLyoKKwkJCSAqIENS QyB0ZXN0OgorCQkJICogMXN0IENSQzogcGxhbmUgMTogUkdCIEZTLCBwbGFuZSAyOiBSR0IgMTl4 MTAgIC0tPiBDUkMxCisJCQkgKiAybmQgQ1JDOiBwbGFuZSAxOiBSR0IgRlMsIHBsYW5lIDI6IE5W MTIgMTl4MTAgLS0+IENSQzIKKwkJCSAqIG1ha2Ugc3VyZSBDUkMxID09IENSQzIKKwkJCSAqCisJ CQkgKiBGb3IgQ1JDcyB0byB3b3JrLCBjYW5ub3QgdXNlIGFueSBpbWFnZS9kYXRhIGJlY2F1c2UK KwkJCSAqIGNocm9tZS11cHNhbXBsaW5nIGNhbiBmYWlsIENSQyBjb21wYXJpc29uLgorCQkJICog VGhvdWdoIGl0IGlzIGEgdmVyeSBiYXNpYywgc29saWQgY29sb3IgaXMgZXhwZWN0ZWQgdG8gd29y aworCQkJICovCisJCQlwYWludF9zb2xpZF9jb2xvcihkLCAmZC0+ZmIyLCBkLT5mYjIud2lkdGgs IGQtPmZiMi5oZWlnaHQsCisJCQkJU09MSURfQ09MT1IpOworCisJCQkvKiBTZXR1cCB0byBjYXB0 dXJlIENSQzEgd2hlbiBwbGFuZSAyIGlzIGluIFJHQiBtb2RlICovCisJCQlpZ3RfcGxhbmVfc2V0 X2ZiKGQtPnBsYW5lMiwgJmQtPmZiMik7CisJCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjIs IGQtPnBsYW5lMiwgMCwgMCk7CisJCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMiwgZC0+cGxhbmUy LCBkLT5mYjIud2lkdGgsIGQtPmZiMi5oZWlnaHQpOworCQkJaWd0X3BsYW5lX3NldF9wb3NpdGlv bihkLT5wbGFuZTIsIDAsIDApOworCQkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMiwgZC0+ ZmIyLndpZHRoLCBkLT5mYjIuaGVpZ2h0KTsKKwkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxh eSwgQ09NTUlUX1VOSVZFUlNBTCk7CisJCQlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMoZC0+cGlw ZV9jcmMsICZkLT5jcmMxKTsKKworCQkJLyogU2V0dXAgdG8gY2FwdHVyZSBDUkMyIHdoZW4gcGxh bmUgMiBpcyBpbiBOVjEyIG1vZGUgKi8KKwkJCWlndF9mYl9jc2NfeHJnYl90b19udjEyKGQtPmRy bV9mZCwgJmQtPmZiMl9udjEyLCAmZC0+ZmIyKTsKKwkJCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxh bmUyLCAmZC0+ZmIyX252MTIpOworCQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyX252MTIs IGQtPnBsYW5lMiwgMCwgMCk7CisJCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMl9udjEyLCBkLT5w bGFuZTIsIGQtPmZiMl9udjEyLndpZHRoLAorCQkJCWQtPmZiMl9udjEyLmhlaWdodCk7CisJCQlp Z3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMCwgMCk7CisJCQlpZ3RfcGxhbmVfc2V0 X3NpemUoZC0+cGxhbmUyLCBkLT5mYjJfbnYxMi53aWR0aCxkLT5mYjJfbnYxMi5oZWlnaHQpOwor CQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwkJCWln dF9waXBlX2NyY19jb2xsZWN0X2NyYyhkLT5waXBlX2NyYywgJmQtPmNyYzIpOworCisJCQlpZ3Rf YXNzZXJ0X2NyY19lcXVhbCgmZC0+Y3JjMSwgJmQtPmNyYzIpOworCQl9CisKKwkJLyoKKwkJICog Tm9uLUNSQyB0ZXN0czoKKwkJICogTWltaWNpbmcgc29tZSBub3QgZXhhY3RseSBidXQgY2xvc2Vy IHRvIHNvbWUgcmVhbCB1c2FnZQorCQkgKi8KKworCQkvKiBzZXQgdXAgZGF0YSBmb3IgZmIyOiBi b3RoIGZiMV9udjEyLCBmYjJfbnYxMiB1c2VzIHRoaXMgKi8KKwkJcGFpbnRfaW1hZ2UoZCwgJmQt PmZiMiwgaW1nX3dpZHRoLCBpbWdfaGVpZ2h0KTsKKworCQkvKiBzZXQgdXAgZGF0YSBpbiBmYjFf bnYxMjogZmIyIFJHQi0+IGZiMV9udjEyICovCisJCWlndF9mYl9jc2NfeHJnYl90b19udjEyKGQt PmRybV9mZCwgJmQtPmZiMV9udjEyLCAmZC0+ZmIyKTsKKworCQkvKiBzZXQgdXAgZGF0YSBpbiBm YjJfbnYxMjogZmIyIFJHQi0+IGZiMl9udjEyICovCisJCWlndF9mYl9jc2NfeHJnYl90b19udjEy KGQtPmRybV9mZCwgJmQtPmZiMl9udjEyLCAmZC0+ZmIyKTsKKworCQkvKiBzZXQgdXAgZGF0YSBp biBmYjMgKi8KKwkJcGFpbnRfcGF0dGVybihkLCAmZC0+ZmIzLCBkLT5mYjMud2lkdGgsIGQtPmZi My5oZWlnaHQpOworCisJCS8qIFNldCB1cCBmYjJfbnYxMi0+cGxhbmUyIG1hcHBpbmcuICovCisJ CWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUyLCAmZC0+ZmIyX252MTIpOworCQkvKiAybmQgcGxh bmUgbnYxMiB3aW5kb3dlZCAtIG5vIHNjYWxpbmcgKi8KKwkJaWd0X2ZiX3NldF9wb3NpdGlvbigm ZC0+ZmIyX252MTIsIGQtPnBsYW5lMiwgMCwgMCk7CisJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIy X252MTIsIGQtPnBsYW5lMiwgZC0+ZmIyX252MTIud2lkdGgsCisJCQlkLT5mYjJfbnYxMi5oZWln aHQpOworCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMCwgMCk7CisJCWlndF9w bGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIGQtPmZiMl9udjEyLndpZHRoLCBkLT5mYjJfbnYxMi5o ZWlnaHQpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwp OworCisJCS8qIENoYW5nZSBwcmltYXJ5IHBsYW5lIHRvIG52MTIgZnVsbCBzY3JlZW46IHNjYWxp bmcgKyBOVjEyICovCisJCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUxLCAmZC0+ZmIxX252MTIp OworCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjFfbnYxMiwgZC0+cGxhbmUxLCAwLCAwKTsK KwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjFfbnYxMiwgZC0+cGxhbmUxLCBkLT5mYjFfbnYxMi53 aWR0aCwKKwkJCWQtPmZiMV9udjEyLmhlaWdodCk7CisJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24o ZC0+cGxhbmUxLCAwLCAwKTsKKwkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMSwgbW9kZS0+ aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBDT01NSVRfVU5JVkVSU0FMKTsKKworCQkvKiBTZXQgdXAgZmIzLT5wbGFuZTMgbWFwcGluZy4g Ki8KKwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsICZkLT5mYjMpOworCisJCS8qIDNyZCBw bGFuZSBmdWxsIHNjcmVlbiAtIG5vIHNjYWxpbmcuICovCisJCWlndF9mYl9zZXRfcG9zaXRpb24o JmQtPmZiMywgZC0+cGxhbmUzLCAwLCAwKTsKKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjMsIGQt PnBsYW5lMywgZC0+ZmIzLndpZHRoLCBkLT5mYjMuaGVpZ2h0KTsKKwkJaWd0X3BsYW5lX3NldF9w b3NpdGlvbihkLT5wbGFuZTMsIDAsIDApOworCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUz LCBkLT5mYjMud2lkdGgsIGQtPmZiMy5oZWlnaHQpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworCisJCS8qIDJuZCBwbGFuZSBudjEyIHVwIHNjYWxp bmcgKi8KKwkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyX252MTIsIGQtPnBsYW5lMiwgMCwg MCk7CisJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyX252MTIsIGQtPnBsYW5lMiwgZC0+ZmIyX252 MTIud2lkdGgsCisJCQlkLT5mYjJfbnYxMi5oZWlnaHQpOworCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0 aW9uKGQtPnBsYW5lMiwgMTAwLCAxMDApOworCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUy LCBtb2RlLT5oZGlzcGxheS0yMDAsIG1vZGUtPnZkaXNwbGF5LTIwMCk7CisJCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7CisKKwkJLyogMm5kIHBsYW5lIG52 MTIgZG93biBzY2FsaW5nICovCisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMl9udjEyLCBk LT5wbGFuZTIsIDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMl9udjEyLCBkLT5wbGFu ZTIsIGQtPmZiMl9udjEyLndpZHRoLAorCQkJZC0+ZmIyX252MTIuaGVpZ2h0KTsKKwkJaWd0X3Bs YW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDEwMjQsIDApOworCQlpZ3RfcGxhbmVfc2V0X3Np emUoZC0+cGxhbmUyLCBkLT5mYjJfbnYxMi53aWR0aCAqIDIvMywKKwkJCWQtPmZiMl9udjEyLmhl aWdodCAqIDIvMyk7CisJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZF UlNBTCk7CisKKwkJLyogQmFjayB0byBzaW5nbGUgcGxhbmUgbW9kZSAgLSByZ2IgJiBubyBzY2Fs aW5nICovCisJCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUxLCAmZC0+ZmIxKTsKKwkJaWd0X3Bs YW5lX3NldF9mYihkLT5wbGFuZTIsIE5VTEwpOworCQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5l MywgTlVMTCk7CisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAwLCAw KTsKKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjEsIGQtPnBsYW5lMSwgbW9kZS0+aGRpc3BsYXks IG1vZGUtPnZkaXNwbGF5KTsKKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTEsIDAs IDApOworCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9k ZS0+dmRpc3BsYXkpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklW RVJTQUwpOworCisJCS8qIHNpbmdsZSBwbGFuZSBtb2RlICAtIHJnYiAmIHNjYWxpbmcgKi8KKwkJ aWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTEsICZkLT5mYjEpOworCQlpZ3RfZmJfc2V0X3Bvc2l0 aW9uKCZkLT5mYjEsIGQtPnBsYW5lMSwgMCwgMCk7CisJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIx LCBkLT5wbGFuZTEsIGQtPmZiMS53aWR0aC8yLCBkLT5mYjEuaGVpZ2h0LzIpOworCQlpZ3RfcGxh bmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMSwgMCwgMCk7CisJCWlndF9wbGFuZV9zZXRfc2l6ZShk LT5wbGFuZTEsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7CisJCWlndF9kaXNwbGF5 X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7CisKKwkJLyogc2luZ2xlIHBsYW5l IG1vZGUgIC0gbnYxMiAmIHNjYWxpbmcgKi8KKwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTEs ICZkLT5mYjFfbnYxMik7CisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMV9udjEyLCBkLT5w bGFuZTEsIDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMV9udjEyLCBkLT5wbGFuZTEs IGQtPmZiMV9udjEyLndpZHRoLAorCQkJZC0+ZmIxX252MTIuaGVpZ2h0KTsKKwkJaWd0X3BsYW5l X3NldF9wb3NpdGlvbihkLT5wbGFuZTEsIDAsIDApOworCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+ cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOworCQlpZ3RfZGlzcGxheV9j b21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworCisJCXZhbGlkX3Rlc3RzKys7CisK KwkJY2xlYW51cF9jcnRjKGQsIG91dHB1dCwgZC0+cGxhbmUxKTsKKwl9CisJaWd0X3JlcXVpcmVf Zih2YWxpZF90ZXN0cywgIm5vIHZhbGlkIGNydGMvY29ubmVjdG9yIGNvbWJpbmF0aW9ucyBmb3Vu ZFxuIik7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfbnYxMl91bnN1cHBvcnRlZF9wbGFuZShkYXRh X3QgKmQpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkLT5kaXNwbGF5OworCWlndF9v dXRwdXRfdCAqb3V0cHV0OworCWVudW0gcGlwZSBwaXBlOworCWludCB2YWxpZF90ZXN0cyA9IDA7 CisKKwlpZ3RfcmVxdWlyZShkLT5kaXNwbGF5Lmhhc191bml2ZXJzYWxfcGxhbmVzKTsKKwlpZ3Rf cmVxdWlyZShkLT5udW1fc2NhbGVycyk7CisKKwlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRp c3BsYXksIG91dHB1dCkgeworCQlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJCW1vZGUgPSBpZ3Rf b3V0cHV0X2dldF9tb2RlKG91dHB1dCk7CisJCXBpcGUgPSBvdXRwdXQtPmNvbmZpZy5waXBlOwor CisJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKworCQkvKiBTZXQgdXAgZGlz cGxheSB3aXRoIHBsYW5lIDEgKi8KKwkJZC0+cGxhbmUxID0gaWd0X291dHB1dF9nZXRfcGxhbmUo b3V0cHV0LCBJR1RfUExBTkVfUFJJTUFSWSk7CisJCXByZXBhcmVfY3J0YyhkLCBvdXRwdXQsIHBp cGUsIGQtPnBsYW5lMSwgbW9kZSwgQ09NTUlUX0xFR0FDWSk7CisKKwkJZC0+ZmJfaWQzX252MTIg PSBpZ3RfY3JlYXRlX2ZiKGQtPmRybV9mZCwKKwkJCQkxOTIwLCAxMDgwLAorCQkJCURSTV9GT1JN QVRfTlYxMiwKKwkJCQlkLT50aWxlZCwKKwkJCQkmZC0+ZmIzX252MTIpOworCQlpZ3RfYXNzZXJ0 KGQtPmZiX2lkM19udjEyKTsKKworCQkvKiBTZXQgdXAgZmIzX252MTItPnBsYW5lMyBtYXBwaW5n LiAqLworCQlkLT5wbGFuZTIgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIElHVF9QTEFO RV8zKTsKKwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsICZkLT5mYjNfbnYxMik7CisKKwkJ LyogM3JkIHBsYW5lIG52MTIgd2luZG93ZWQgLSBubyBzY2FsaW5nICovCisJCWlndF9mYl9zZXRf cG9zaXRpb24oJmQtPmZiM19udjEyLCBkLT5wbGFuZTMsIDAsIDApOworCQlpZ3RfZmJfc2V0X3Np emUoJmQtPmZiM19udjEyLCBkLT5wbGFuZTMsIGQtPmZiM19udjEyLndpZHRoLAorCQkJZC0+ZmIz X252MTIuaGVpZ2h0KTsKKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMsIDAsIDAp OworCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUzLCBkLT5mYjNfbnYxMi53aWR0aCwgZC0+ ZmIzX252MTIuaGVpZ2h0KTsKKworCQkvKiBTaG91bGQgZmFpbCBiZWNhdXNlIE5WMTIgaXMgbm90 IHN1cHBvcnRlZCBvbiBwbGFuZSAzICovCisJCWlndF9hc3NlcnQoaWd0X2Rpc3BsYXlfdHJ5X2Nv bW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCkKKwkJCT09IC1FSU5WQUwpOworCisJCXZh bGlkX3Rlc3RzKys7CisKKwkJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsIE5VTEwpOworCQlj bGVhbnVwX2NydGMoZCwgb3V0cHV0LCBkLT5wbGFuZTEpOworCX0KKwlpZ3RfcmVxdWlyZV9mKHZh bGlkX3Rlc3RzLCAibm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IgY29tYmluYXRpb25zIGZvdW5kXG4i KTsKK30KKworaWd0X21haW4KK3sKKwlkYXRhX3QgZGF0YSA9IHt9OworCisJaWd0X3NraXBfb25f c2ltdWxhdGlvbigpOworCisJaWd0X2ZpeHR1cmUgeworCQlkYXRhLmRybV9mZCA9IGRybV9vcGVu X2FueSgpOworCisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKKworCQlpZ3RfcmVx dWlyZV9waXBlX2NyYygpOworCisJCWlndF9kaXNwbGF5X2luaXQoJmRhdGEuZGlzcGxheSwgZGF0 YS5kcm1fZmQpOworCX0KKwlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQp OworCisJZGF0YS5udW1fc2NhbGVycyA9IGludGVsX2dlbihkZXZpZCkgPj0gOSA/IDIgOiAwOwor CisJZGF0YS5jcmMgPSAxOworCWRhdGEucm90YXRpb24gPSBJR1RfUk9UQVRJT05fMDsKKwlpZ3Rf c3VidGVzdF9mKCJudjEyLXBsYW5lLWxpbmVhciIpIHsKKwkJZGF0YS50aWxlZCA9IExPQ0FMX0RS TV9GT1JNQVRfTU9EX05PTkU7CisJCXRlc3RfbnYxMl9wbGFuZSgmZGF0YSk7CisJfQorCWlndF9z dWJ0ZXN0X2YoIm52MTItcGxhbmUtdGlsZS14IikgeworCQlkYXRhLnRpbGVkID0gTE9DQUxfSTkx NV9GT1JNQVRfTU9EX1hfVElMRUQ7CisJCXRlc3RfbnYxMl9wbGFuZSgmZGF0YSk7CisJfQorCWln dF9zdWJ0ZXN0X2YoIm52MTItcGxhbmUtdGlsZS15IikgeworCQlkYXRhLnRpbGVkID0gTE9DQUxf STkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7CisJCXRlc3RfbnYxMl9wbGFuZSgmZGF0YSk7CisJfQor CWlndF9zdWJ0ZXN0X2YoIm52MTItcGxhbmUtdGlsZS15ZiIpIHsKKwkJZGF0YS50aWxlZCA9IExP Q0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRDsKKwkJdGVzdF9udjEyX3BsYW5lKCZkYXRhKTsK Kwl9CisKKwlkYXRhLnJvdGF0aW9uID0gSUdUX1JPVEFUSU9OXzE4MDsKKwlpZ3Rfc3VidGVzdF9m KCJudjEyLXBsYW5lLWxpbmVhci1yb3QtMTgwIikgeworCQlkYXRhLnRpbGVkID0gTE9DQUxfRFJN X0ZPUk1BVF9NT0RfTk9ORTsKKwkJdGVzdF9udjEyX3BsYW5lKCZkYXRhKTsKKwl9CisJaWd0X3N1 YnRlc3RfZigibnYxMi1wbGFuZS10aWxlLXgtcm90LTE4MCIpIHsKKwkJZGF0YS50aWxlZCA9IExP Q0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEOworCQl0ZXN0X252MTJfcGxhbmUoJmRhdGEpOwor CX0KKwlpZ3Rfc3VidGVzdF9mKCJudjEyLXBsYW5lLXRpbGUteS1yb3QtMTgwIikgeworCQlkYXRh LnRpbGVkID0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7CisJCXRlc3RfbnYxMl9wbGFu ZSgmZGF0YSk7CisJfQorCWlndF9zdWJ0ZXN0X2YoIm52MTItcGxhbmUtdGlsZS15Zi1yb3QtMTgw IikgeworCQlkYXRhLnRpbGVkID0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOworCQl0 ZXN0X252MTJfcGxhbmUoJmRhdGEpOworCX0KKworCWlndF9zdWJ0ZXN0X2YoIm52MTItb24tdW5z dXBwb3J0ZWQtcGxhbmUiKSB7CisJCWRhdGEudGlsZWQgPSBMT0NBTF9EUk1fRk9STUFUX01PRF9O T05FOworCQl0ZXN0X252MTJfdW5zdXBwb3J0ZWRfcGxhbmUoJmRhdGEpOworCX0KKworCWlndF9m aXh0dXJlIHsKKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKwl9Cit9Ci0tIAox LjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK