From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 817BF8924F for ; Thu, 25 Apr 2019 20:59:43 +0000 (UTC) From: Daniel Mrzyglod Date: Thu, 25 Apr 2019 22:58:20 +0200 Message-Id: <20190425205822.8995-5-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190425205822.8995-1-daniel.t.mrzyglod@intel.com> References: <20190425205822.8995-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4 4/6] lib/intel_mmio: add pointer for read/write register funtions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: VGhpcyBwYXRjaCBpcyBmaXJzdCBtb3ZlIHRvIGV4dGVuZCBmdW5jdGlvbmFsaXR5IG9mIGludGVs X21taW8gbGlicmFyeS4KVGhlcmUgd2FzIGxpbWl0YXRpb24gZm9yIDEgZGV2aWNlLCBhZGRpbmcg cG9pbnRlciBmb3IgSU8gZnVuY3Rpb25zIHRvCm1tYXBlZCBhcmVhIGdpdmVzIHVzIHBvc3NpYmls aXR5IHRvIHVzZSB0aG9zZSBJTyBmdW5jdGlvbnMgZm9yIG90aGVyIG1tYXBlZApkZXZpY2VzLgoK djQ6IHJld29yZCBjb21taXRtc2csIHNwZWxsaW5nIGVycm9ycwoKU2lnbmVkLW9mZi1ieTogRGFu aWVsIE1yenlnbG9kIDxkYW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5jb20+Ci0tLQogbGliL2ludGVs X2lvLmggICAgICAgICAgICAgICB8ICAxMiArLQogbGliL2ludGVsX21taW8uYyAgICAgICAgICAg ICB8ICAyOSArKy0tCiB0ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jICAgIHwgICAyICstCiB0b29s cy9pbnRlbF9hdWRpb19kdW1wLmMgICAgIHwgMjg5ICsrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tCiB0b29scy9pbnRlbF9iYWNrbGlnaHQuYyAgICAgIHwgIDEwICstCiB0b29scy9p bnRlbF9kaXNwbGF5X3BvbGxlci5jIHwgICA4ICstCiB0b29scy9pbnRlbF9ncHVfdGltZS5jICAg ICAgIHwgICA2ICstCiB0b29scy9pbnRlbF9pbmZvZnJhbWVzLmMgICAgIHwgIDY4ICsrKystLS0t LQogdG9vbHMvaW50ZWxfbGlkLmMgICAgICAgICAgICB8ICAgMiArLQogdG9vbHMvaW50ZWxfcGFu ZWxfZml0dGVyLmMgICB8ICAyNCArLS0KIHRvb2xzL2ludGVsX3JlZy5jICAgICAgICAgICAgfCAg MTAgKy0KIHRvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMgICAgfCAgIDIgKy0KIHRvb2xzL2ludGVs X3dhdGVybWFyay5jICAgICAgfCAgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDI1MCBpbnNlcnRp b25zKCspLCAyMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2lvLmggYi9s aWIvaW50ZWxfaW8uaAppbmRleCAwOWZlYTM4Ni4uMjdmN2U3NjYgMTAwNjQ0Ci0tLSBhL2xpYi9p bnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5oCkBAIC00MiwxMiArNDIsMTIgQEAgdWludDMy X3QgaW50ZWxfcmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpOwogdm9pZCBpbnRlbF9yZWdpc3Rl cl93cml0ZSh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CiBpbnQgaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX25lZWRzX2Zha2V3YWtlKHZvaWQpOwogCi11aW50MzJfdCBJTlJFRyh1aW50MzJfdCBy ZWcpOwotdWludDE2X3QgSU5SRUcxNih1aW50MzJfdCByZWcpOwotdWludDhfdCBJTlJFRzgodWlu dDMyX3QgcmVnKTsKLXZvaWQgT1VUUkVHKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLXZv aWQgT1VUUkVHMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpOwotdm9pZCBPVVRSRUc4KHVp bnQzMl90IHJlZywgdWludDhfdCB2YWwpOwordWludDMyX3QgSU5SRUcodm9pZCAqaWd0X21taW8s IHVpbnQzMl90IHJlZyk7Cit1aW50MTZfdCBJTlJFRzE2KHZvaWQgKmlndF9tbWlvLCB1aW50MzJf dCByZWcpOwordWludDhfdCBJTlJFRzgodm9pZCAqaWd0X21taW8sIHVpbnQzMl90IHJlZyk7Cit2 b2lkIE9VVFJFRyh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwor dm9pZCBPVVRSRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwp Owordm9pZCBPVVRSRUc4KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFs KTsKIAogLyogc2lkZWJhbmQgYWNjZXNzIGZ1bmN0aW9ucyBmcm9tIGludGVsX2lvc2YuYyAqLwog dWludDMyX3QgaW50ZWxfZHBpb19yZWdfcmVhZCh1aW50MzJfdCByZWcsIGludCBwaHkpOwpkaWZm IC0tZ2l0IGEvbGliL2ludGVsX21taW8uYyBiL2xpYi9pbnRlbF9tbWlvLmMKaW5kZXggNDI1MzYw ZTQuLjhiYTYwZDg1IDEwMDY0NAotLS0gYS9saWIvaW50ZWxfbW1pby5jCisrKyBiL2xpYi9pbnRl bF9tbWlvLmMKQEAgLTMyNCw2ICszMjQsNyBAQCB3cml0ZV9vdXQ6CiAKIC8qKgogICogSU5SRUc6 CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJlZ2lzdGVyIG9m ZnNldAogICoKICAqIDMyLWJpdCByZWFkIG9mIHRoZSByZWdpc3RlciBhdCBvZmZzZXQgQHJlZy4g VGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlCkBAIC0zMzQsMTMgKzMzNSwxNCBAQCB3 cml0ZV9vdXQ6CiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0 ZXIuCiAgKi8KLXVpbnQzMl90IElOUkVHKHVpbnQzMl90IHJlZykKK3VpbnQzMl90IElOUkVHKHZv aWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcpCiB7Ci0JcmV0dXJuICoodm9sYXRpbGUgdWludDMy X3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpOworCXJldHVybiAq KHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X21taW8gKyByZWcpOwog fQogCiAvKioKICAqIElOUkVHMTY6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIK ICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICoKICAqIDE2LWJpdCByZWFkIG9mIHRoZSByZWdp c3RlciBhdCBvZmZzZXQgQHJlZy4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlCkBA IC0zNTEsMTMgKzM1MywxNCBAQCB1aW50MzJfdCBJTlJFRyh1aW50MzJfdCByZWcpCiAgKiBSZXR1 cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0ZXIuCiAgKi8KLXVpbnQxNl90 IElOUkVHMTYodWludDMyX3QgcmVnKQordWludDE2X3QgSU5SRUcxNih2b2lkICppZ3RfbW1pbywg dWludDMyX3QgcmVnKQogewotCXJldHVybiAqKHZvbGF0aWxlIHVpbnQxNl90ICopKCh2b2xhdGls ZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsgcmVnKTsKKwlyZXR1cm4gKih2b2xhdGlsZSB1aW50 MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9tbWlvICsgcmVnKTsKIH0KIAogLyoqCiAgKiBJ TlJFRzg6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJlZ2lz dGVyIG9mZnNldAogICoKICAqIDgtYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNldCBA cmVnLiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUKQEAgLTM2OCwxMyArMzcxLDE0 IEBAIHVpbnQxNl90IElOUkVHMTYodWludDMyX3QgcmVnKQogICogUmV0dXJuczoKICAqIFRoZSB2 YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCi11aW50OF90IElOUkVHOCh1aW50MzJf dCByZWcpCit1aW50OF90IElOUkVHOCh2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnKQogewot CXJldHVybiAqKCh2b2xhdGlsZSB1aW50OF90ICopaWd0X2dsb2JhbF9tbWlvICsgcmVnKTsKKwly ZXR1cm4gKigodm9sYXRpbGUgdWludDhfdCAqKWlndF9tbWlvICsgcmVnKTsKIH0KIAogLyoqCiAg KiBPVVRSRUc6CisgKiBAaWd0X21taW8gbWFwZWQgbWVtb3J5IHBvaW50ZXIKICAqIEByZWc6IHJl Z2lzdGVyIG9mZnNldAogICogQHZhbDogdmFsdWUgdG8gd3JpdGUKICAqCkBAIC0zODQsOSArMzg4 LDkgQEAgdWludDhfdCBJTlJFRzgodWludDMyX3QgcmVnKQogICoKICAqIFRoaXMgZnVuY3Rpb24g ZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hl Y2tzLgogICovCi12b2lkIE9VVFJFRyh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQg T1VUUkVHKHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKIHsKLQkq KHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsg cmVnKSA9IHZhbDsKKwkqKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0 X21taW8gKyByZWcpID0gdmFsOwogfQogCiAvKioKQEAgLTQwMCwxMyArNDA0LDE0IEBAIHZvaWQg T1VUUkVHKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQogICoKICAqIFRoaXMgZnVuY3Rpb24g ZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBzYWZldHkgY2hl Y2tzLgogICovCi12b2lkIE9VVFJFRzE2KHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQordm9p ZCBPVVRSRUcxNih2b2lkICppZ3RfbW1pbywgdWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpCiB7 Ci0JKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1p byArIHJlZykgPSB2YWw7CisJKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAq KWlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0KIAogLyoqCiAgKiBPVVRSRUc4OgorICogQGlndF9t bWlvIG1hcGVkIG1lbW9yeSBwb2ludGVyCiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKICAqIEB2 YWw6IHZhbHVlIHRvIHdyaXRlCiAgKgpAQCAtNDE2LDcgKzQyMSw3IEBAIHZvaWQgT1VUUkVHMTYo dWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpCiAgKgogICogVGhpcyBmdW5jdGlvbiBkaXJlY3Rs eSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCiAg Ki8KLXZvaWQgT1VUUkVHOCh1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQordm9pZCBPVVRSRUc4 KHZvaWQgKmlndF9tbWlvLCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQogewotCSooKHZvbGF0 aWxlIHVpbnQ4X3QgKilpZ3RfZ2xvYmFsX21taW8gKyByZWcpID0gdmFsOworCSooKHZvbGF0aWxl IHVpbnQ4X3QgKilpZ3RfbW1pbyArIHJlZykgPSB2YWw7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2k5MTVfcG1fbHBzcC5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwppbmRleCBiMzE5 ZGJlOS4uZjY5Yzg4ZjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9scHNwLmMKKysr IGIvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYwpAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgYm9v bCBscHNwX2lzX2VuYWJsZWQoaW50IGRybV9mZCkKIHsKIAl1aW50MzJfdCB2YWw7CiAKLQl2YWwg PSBJTlJFRyhIU1dfUFdSX1dFTExfQ1RMMik7CisJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBIU1dfUFdSX1dFTExfQ1RMMik7CiAJcmV0dXJuICEodmFsICYgSFNXX1BXUl9XRUxMX1NUQVRF X0VOQUJMRUQpOwogfQogCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMgYi90 b29scy9pbnRlbF9hdWRpb19kdW1wLmMKaW5kZXggZDk1MmU1NGIuLjg2NjY0NDc4IDEwMDY0NAot LS0gYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMKKysrIGIvdG9vbHMvaW50ZWxfYXVkaW9fZHVt cC5jCkBAIC02NywyMyArNjcsMjMgQEAgc3RhdGljIGludCBkaXNwX3JlZ19iYXNlID0gMDsJLyog YmFzZSBhZGRyZXNzIG9mIGRpc3BsYXkgcmVnaXN0ZXJzICovCiAKICNkZWZpbmUgZHVtcF9yZWco cmVnLCBkZXNjKQkJCQkJXAogCWRvIHsJCQkJCQkJXAotCQlkd29yZCA9IElOUkVHKHJlZyk7CVwK KwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CVwKIAkJcHJpbnRmKCIlLTIx cyglI3gpIDB4JTA4eCAgJXNcbiIsICMgcmVnLCByZWcsIGR3b3JkLCBkZXNjKTsJXAogCX0gd2hp bGUgKDApCiAKICNkZWZpbmUgZHVtcF9kaXNwX3JlZyhyZWcsIGRlc2MpCQkJCQlcCiAJZG8gewkJ CQkJCQlcCi0JCWR3b3JkID0gSU5SRUcoZGlzcF9yZWdfYmFzZSArIHJlZyk7CVwKKwkJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGRpc3BfcmVnX2Jhc2UgKyByZWcpOwlcCiAJCXByaW50 ZigiJS0yMXMoJSN4KSAweCUwOHggICVzXG4iLCAjIHJlZywgcmVnLCBkd29yZCwgZGVzYyk7CVwK IAl9IHdoaWxlICgwKQogCiAjZGVmaW5lIGR1bXBfYXVkX3JlZyhyZWcsIGRlc2MpCQkJCQlcCiAJ ZG8gewkJCQkJCQlcCi0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgcmVnKTsJXAorCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgcmVnKTsJXAogCQlw cmludGYoIiUtMjFzKCUjeCkgMHglMDh4ICAlc1xuIiwgIyByZWcsIHJlZywgZHdvcmQsIGRlc2Mp OwlcCiAJfSB3aGlsZSAoMCkKIAotI2RlZmluZSByZWFkX2F1ZF9yZWcocmVnKQlJTlJFRyhhdWRf cmVnX2Jhc2UgKyAocmVnKSkKKyNkZWZpbmUgcmVhZF9hdWRfcmVnKHJlZykJSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyAocmVnKSkKIAogc3RhdGljIGludCBnZXRfbnVtX3Bp cGVzKHZvaWQpCiB7CkBAIC01MzIsMzEgKzUzMiwzMSBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xl bGFrZSh2b2lkKQogCiAJcHJpbnRmKCJcbkRldGFpbHM6XG5cbiIpOwogCi0JZHdvcmQgPSBJTlJF RyhBVURfVklEX0RJRCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9WSURf RElEKTsKIAlwcmludGYoIkFVRF9WSURfRElEIHZlbmRvciBpZFx0XHRcdDB4JXhcbiIsIGR3b3Jk ID4+IDE2KTsKIAlwcmludGYoIkFVRF9WSURfRElEIGRldmljZSBpZFx0XHRcdDB4JXhcbiIsIGR3 b3JkICYgMHhmZmZmKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1JJRCk7CisJZHdvcmQgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9SSUQpOwogCXByaW50ZigiQVVEX1JJRCBtYWpvciByZXZp c2lvblx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAyMywgMjApKTsKIAlwcmludGYoIkFVRF9S SUQgbWlub3IgcmV2aXNpb25cdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMTksIDE2KSk7CiAJ cHJpbnRmKCJBVURfUklEIHJldmlzaW9uIGlkXHRcdFx0MHglbHhcbiIsICAgIEJJVFMoZHdvcmQs IDE1LCA4KSk7CiAJcHJpbnRmKCJBVURfUklEIHN0ZXBwaW5nIGlkXHRcdFx0MHglbHhcbiIsICAg IEJJVFMoZHdvcmQsIDcsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoU0RWT0IpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBTRFZPQik7CiAJcHJpbnRmKCJTRFZPQiBlbmFibGVcdFx0 XHRcdCV1XG4iLCAgICAgICEhKGR3b3JkICYgU0RWT19FTkFCTEUpKTsKIAlwcmludGYoIlNEVk9C IEhETUkgZW5jb2RpbmdcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0VOQ09ESU5HX0hETUkp KTsKIAlwcmludGYoIlNEVk9CIFNEVk8gZW5jb2RpbmdcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBT RFZPX0VOQ09ESU5HX1NEVk8pKTsKIAlwcmludGYoIlNEVk9CIG51bGwgcGFja2V0c1x0XHRcdCV1 XG4iLCAgISEoZHdvcmQgJiBTRFZPX05VTExfUEFDS0VUU19EVVJJTkdfVlNZTkMpKTsKIAlwcmlu dGYoIlNEVk9CIGF1ZGlvIGVuYWJsZWRcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0FVRElP X0VOQUJMRSkpOwogCi0JZHdvcmQgPSBJTlJFRyhTRFZPQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIFNEVk9DKTsKIAlwcmludGYoIlNEVk9DIGVuYWJsZVx0XHRcdFx0JXVcbiIs ICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwogCXByaW50ZigiU0RWT0MgSERNSSBlbmNv ZGluZ1x0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fRU5DT0RJTkdfSERNSSkpOwogCXByaW50 ZigiU0RWT0MgU0RWTyBlbmNvZGluZ1x0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fRU5DT0RJ TkdfU0RWTykpOwogCXByaW50ZigiU0RWT0MgbnVsbCBwYWNrZXRzXHRcdFx0JXVcbiIsICAhIShk d29yZCAmIFNEVk9fTlVMTF9QQUNLRVRTX0RVUklOR19WU1lOQykpOwogCXByaW50ZigiU0RWT0Mg YXVkaW8gZW5hYmxlZFx0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7 CiAKLQlkd29yZCA9IElOUkVHKFBPUlRfSE9UUExVR19FTik7CisJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIFBPUlRfSE9UUExVR19FTik7CiAJcHJpbnRmKCJQT1JUX0hPVFBMVUdfRU4g RGlzcGxheVBvcnQvSERNSSBwb3J0IEJcdCVsZFxuIiwgQklUKGR3b3JkLCAyOSkpLAogCXByaW50 ZigiUE9SVF9IT1RQTFVHX0VOIERpc3BsYXlQb3J0L0hETUkgcG9ydCBDXHQlbGRcbiIsIEJJVChk d29yZCwgMjgpKSwKIAlwcmludGYoIlBPUlRfSE9UUExVR19FTiBEaXNwbGF5UG9ydCBwb3J0IERc dCVsZFxuIiwgICAgICBCSVQoZHdvcmQsIDI3KSksCkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGlj IHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKIAlwcmludGYoIlBPUlRfSE9UUExVR19FTiBUVlx0 XHRcdCVsZFxuIiwgICAgQklUKGR3b3JkLCAyMykpLAogCXByaW50ZigiUE9SVF9IT1RQTFVHX0VO IENSVFx0XHRcdCVsZFxuIiwgICBCSVQoZHdvcmQsIDkpKSwKIAotCWR3b3JkID0gSU5SRUcoVklE RU9fRElQX0NUTCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZJREVPX0RJUF9D VEwpOwogCXByaW50ZigiVklERU9fRElQX0NUTCBlbmFibGUgZ3JhcGhpY3MgRElQXHQlbGRcbiIs ICAgICBCSVQoZHdvcmQsIDMxKSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMIHBvcnQgc2VsZWN0 XHRcdFsweCVseF0gJXNcbiIsCiAJCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgZGlwX3BvcnRbQklU Uyhkd29yZCwgMzAsIDI5KV0pOwpAQCAtNTgxLDQ2ICs1ODEsNDYgQEAgc3RhdGljIHZvaWQgZHVt cF9lYWdsZWxha2Uodm9pZCkKIAlwcmludGYoIlZJREVPX0RJUF9DVEwgRElQIGJ1ZmZlciBzaXpl XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTEsIDgpKTsKIAlwcmludGYoIlZJREVPX0RJUF9DVEwg RElQIGFkZHJlc3NcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElO UkVHKEFVRF9DT05GSUcpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ09O RklHKTsKIAlwcmludGYoIkFVRF9DT05GSUcgcGl4ZWwgY2xvY2tcdFx0XHRbMHglbHhdICVzXG4i LCBCSVRTKGR3b3JkLCAxOSwgMTYpLAogCQkJT1BOQU1FKHBpeGVsX2Nsb2NrLCBCSVRTKGR3b3Jk LCAxOSwgMTYpKSk7CiAJcHJpbnRmKCJBVURfQ09ORklHIGZhYnJpY2F0aW9uIGVuYWJsZWRcdFx0 JWx1XG4iLCBCSVRTKGR3b3JkLCAyLCAyKSk7CiAJcHJpbnRmKCJBVURfQ09ORklHIHByb2Zlc3Np b25hbCB1c2UgYWxsb3dlZFx0JWx1XG4iLCBCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9D T05GSUcgZnVzZSBlbmFibGVkXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDApKTsKIAotCWR3b3Jk ID0gSU5SRUcoQVVEX0RFQlVHKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVE X0RFQlVHKTsKIAlwcmludGYoIkFVRF9ERUJVRyBmdW5jdGlvbiByZXNldFx0XHQlbHVcbiIsIEJJ VChkd29yZCwgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfU1VCTl9DTlQpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfU1VCTl9DTlQpOwogCXByaW50ZigiQVVEX1NVQk5f Q05UIHN0YXJ0aW5nIG5vZGUgbnVtYmVyXHQweCVseFxuIiwgIEJJVFMoZHdvcmQsIDIzLCAxNikp OwogCXByaW50ZigiQVVEX1NVQk5fQ05UIHRvdGFsIG51bWJlciBvZiBub2Rlc1x0MHglbHhcbiIs IEJJVFMoZHdvcmQsIDcsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1NVQk5fQ05UMik7CisJ ZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9TVUJOX0NOVDIpOwogCXByaW50Zigi QVVEX1NVQk5fQ05UMiBzdGFydGluZyBub2RlIG51bWJlclx0MHglbHhcbiIsICBCSVRTKGR3b3Jk LCAyNCwgMTYpKTsKIAlwcmludGYoIkFVRF9TVUJOX0NOVDIgdG90YWwgbnVtYmVyIG9mIG5vZGVz XHQweCVseFxuIiwgQklUUyhkd29yZCwgNywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfRlVO Q19HUlApOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfRlVOQ19HUlApOwog CXByaW50ZigiQVVEX0ZVTkNfR1JQIHVuc29sIGNhcGFibGVcdFx0JWx1XG4iLCBCSVQoZHdvcmQs IDgpKTsKIAlwcmludGYoIkFVRF9GVU5DX0dSUCBub2RlIHR5cGVcdFx0XHQweCVseFxuIiwgQklU Uyhkd29yZCwgNywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfR1JQX0NBUCk7CisJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9HUlBfQ0FQKTsKIAlwcmludGYoIkFVRF9HUlBf Q0FQIGJlZXAgMFx0XHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAxNikpOwogCXByaW50Zigi QVVEX0dSUF9DQVAgaW5wdXQgZGVsYXlcdFx0XHQlbHVcbiIsICBCSVRTKGR3b3JkLCAxMSwgOCkp OwogCXByaW50ZigiQVVEX0dSUF9DQVAgb3V0cHV0IGRlbGF5XHRcdCVsdVxuIiwgICBCSVRTKGR3 b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9QV1JTVCk7CisJZHdvcmQgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9QV1JTVCk7CiAJcHJpbnRmKCJBVURfUFdSU1QgZGV2aWNl IHBvd2VyIHN0YXRlXHRcdCVzXG4iLAogCQkJcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgNSwgNCld KTsKIAlwcmludGYoIkFVRF9QV1JTVCBkZXZpY2UgcG93ZXIgc3RhdGUgc2V0dGluZ1x0JXNcbiIs CiAJCQlwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAxLCAwKV0pOwogCi0JZHdvcmQgPSBJTlJFRyhB VURfU1VQUFdSKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1NVUFBXUik7 CiAJcHJpbnRmKCJBVURfU1VQUFdSIHN1cHBvcnQgRDBcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwg MCkpOwogCXByaW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQxXHRcdFx0JWx1XG4iLCBCSVQoZHdv cmQsIDEpKTsKIAlwcmludGYoIkFVRF9TVVBQV1Igc3VwcG9ydCBEMlx0XHRcdCVsdVxuIiwgQklU KGR3b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfU1VQUFdSIHN1cHBvcnQgRDNcdFx0XHQlbHVcbiIs IEJJVChkd29yZCwgMykpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0NXQ0FQKTsKKwlkd29y ZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9DV0NBUCk7CiAJcHJpbnRmKCJBVURf T1VUX0NXQ0FQIHdpZGdldCB0eXBlXHRcdDB4JWx4XG4iLCAgQklUUyhkd29yZCwgMjMsIDIwKSk7 CiAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQIHNhbXBsZSBkZWxheVx0XHQweCVseFxuIiwgQklUUyhk d29yZCwgMTksIDE2KSk7CiAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQIGNoYW5uZWwgY291bnRcdFx0 JWx1XG4iLApAQCAtNjM2LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZv aWQpCiAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQIG91dCBhbXAgcHJlc2VudFx0XHQlbHVcbiIsICBC SVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgaW4gYW1wIHByZXNlbnRcdFx0 JWx1XG4iLCAgIEJJVChkd29yZCwgMSkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0RJR19D TlZUKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9ESUdfQ05WVCk7 CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUIFNQRElGIGNhdGVnb3J5XHRcdDB4JWx4XG4iLCBC SVRTKGR3b3JkLCAxNCwgOCkpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVCBTUERJRiBsZXZl bFx0XHQlbHVcbiIsICAgICAgQklUKGR3b3JkLCA3KSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19D TlZUIHByb2Zlc3Npb25hbFx0XHQlbHVcbiIsICAgICBCSVQoZHdvcmQsIDYpKTsKQEAgLTY0Nywx NiArNjQ3LDE2IEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCiAJcHJpbnRmKCJB VURfT1VUX0RJR19DTlZUIHZhbGlkaXR5IGZsYWdcdFx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDEp KTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlQgZGlnaXRhbCBlbmFibGVcdFx0JWx1XG4iLCAg IEJJVChkd29yZCwgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0NIX1NUUik7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfQ0hfU1RSKTsKIAlwcmludGYoIkFV RF9PVVRfQ0hfU1RSIHN0cmVhbSBpZFx0XHQweCVseFxuIiwgICAgICAgIEJJVFMoZHdvcmQsIDcs IDQpKTsKIAlwcmludGYoIkFVRF9PVVRfQ0hfU1RSIGxvd2VzdCBjaGFubmVsXHRcdCVsdVxuIiwg ICAgIEJJVFMoZHdvcmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVT Qyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfU1RSX0RFU0MpOwog CXByaW50ZigiQVVEX09VVF9TVFJfREVTQyBzdHJlYW0gY2hhbm5lbHNcdCVsdVxuIiwgICAgQklU Uyhkd29yZCwgMywgMCkgKyAxKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0MgQml0cyBwZXIg U2FtcGxlXHRbJSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCA2LCA0KSwgT1BOQU1FKGJpdHNf cGVyX3NhbXBsZSwgQklUUyhkd29yZCwgNiwgNCkpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1BJ TldfQ0FQKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX1BJTldfQ0FQKTsK IAlwcmludGYoIkFVRF9QSU5XX0NBUCB3aWRnZXQgdHlwZVx0XHQweCVseFxuIiwgICAgICAgIEJJ VFMoZHdvcmQsIDIzLCAyMCkpOwogCXByaW50ZigiQVVEX1BJTldfQ0FQIHNhbXBsZSBkZWxheVx0 XHQweCVseFxuIiwgICAgICAgQklUUyhkd29yZCwgMTksIDE2KSk7CiAJcHJpbnRmKCJBVURfUElO V19DQVAgY2hhbm5lbCBjb3VudFx0XHQlbHVcbiIsCkBAIC02NzQsMTMgKzY3NCwxMyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCXByaW50ZigiQVVEX1BJTldfQ0FQIGluIGFt cCBwcmVzZW50XHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAxKSk7CiAKIAotCWR3b3JkID0g SU5SRUcoQVVEX1BJTl9DQVApOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURf UElOX0NBUCk7CiAJcHJpbnRmKCJBVURfUElOX0NBUCBFQVBEXHRcdFx0JWx1XG4iLCAgICAgICAg ICBCSVQoZHdvcmQsIDE2KSk7CiAJcHJpbnRmKCJBVURfUElOX0NBUCBIRE1JXHRcdFx0JWx1XG4i LCAgICAgICAgICBCSVQoZHdvcmQsIDcpKTsKIAlwcmludGYoIkFVRF9QSU5fQ0FQIG91dHB1dFx0 XHRcdCVsdVxuIiwgICAgICAgIEJJVChkd29yZCwgNCkpOwogCXByaW50ZigiQVVEX1BJTl9DQVAg cHJlc2VuY2UgZGV0ZWN0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyKSk7CiAKLQlkd29yZCA9IElO UkVHKEFVRF9QSU5XX0NOVFIpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURf UElOV19DTlRSKTsKIAlwcmludGYoIkFVRF9QSU5XX0NOVFIgbXV0ZSBzdGF0dXNcdFx0JWx1XG4i LCAgICAgQklUKGR3b3JkLCA4KSk7CiAJcHJpbnRmKCJBVURfUElOV19DTlRSIG91dCBlbmFibGVc dFx0JWx1XG4iLCAgICAgIEJJVChkd29yZCwgNikpOwogCXByaW50ZigiQVVEX1BJTldfQ05UUiBh bXAgbXV0ZSBzdGF0dXNcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDgpKTsKQEAgLTY4OSwxMCArNjg5 LDEwIEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCiAJCQlCSVRTKGR3b3JkLCAy LCAwKSwKIAkJCU9QTkFNRShzdHJlYW1fdHlwZSwgQklUUyhkd29yZCwgMiwgMCkpKTsKIAotCWR3 b3JkID0gSU5SRUcoQVVEX1BJTldfVU5TT0xSRVNQKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9i YWxfbW1pbywgQVVEX1BJTldfVU5TT0xSRVNQKTsKIAlwcmludGYoIkFVRF9QSU5XX1VOU09MUkVT UCBlbmFibGUgdW5zb2wgcmVzcFx0JWx1XG4iLCBCSVQoZHdvcmQsIDMxKSk7CiAKLQlkd29yZCA9 IElOUkVHKEFVRF9DTlRMX1NUKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVE X0NOVExfU1QpOwogCXByaW50ZigiQVVEX0NOVExfU1QgRElQIGF1ZGlvIGVuYWJsZWRcdFx0JWx1 XG4iLCBCSVQoZHdvcmQsIDIxKSk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVCBESVAgQUNQIGVuYWJs ZWRcdFx0JWx1XG4iLCAgIEJJVChkd29yZCwgMjIpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUIERJ UCBJU1JDeCBlbmFibGVkXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMykpOwpAQCAtNzA5LDM4ICs3 MDksMzkgQEAgc3RhdGljIHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKIAlwcmludGYoIkFVRF9D TlRMX1NUIEVMRCBidWZzaXplXHRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMywgOSkpOwogCXBy aW50ZigiQVVEX0NOVExfU1QgRUxEIGFkZHJlc3NcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDgs IDUpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0hETUlXX1NUQVRVUyk7CisJZHdvcmQgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9IRE1JV19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlX X1NUQVRVUyBDRENMSy9ET1RDTEsgdW5kZXJydW5cdCVsdVxuIiwgQklUKGR3b3JkLCAzMSkpOwog CXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyBDRENMSy9ET1RDTEsgb3ZlcnJ1blx0JWx1XG4iLCAg QklUKGR3b3JkLCAzMCkpOwogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyBCQ0xLL0NEQ0xLIHVu ZGVycnVuXHQlbHVcbiIsICAgQklUKGR3b3JkLCAyOSkpOwogCXByaW50ZigiQVVEX0hETUlXX1NU QVRVUyBCQ0xLL0NEQ0xLIG92ZXJydW5cdCVsdVxuIiwgICAgQklUKGR3b3JkLCAyOCkpOwogCi0J ZHdvcmQgPSBJTlJFRyhBVURfQ09OVl9DSENOVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9DT05WX0NIQ05UKTsKIAlwcmludGYoIkFVRF9DT05WX0NIQ05UIEhETUkgSEJS IGVuYWJsZWRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxNSwgMTQpKTsKIAlwcmludGYoIkFVRF9D T05WX0NIQ05UIEhETUkgY2hhbm5lbCBjb3VudFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMSwgOCkg KyAxKTsKIAogCXByaW50ZigiQVVEX0NPTlZfQ0hDTlQgSERNSSBjaGFubmVsIG1hcHBpbmc6XG4i KTsKIAlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0JCU9VVFJFRyhBVURfQ09OVl9DSENOVCwg aSk7Ci0JCWR3b3JkID0gSU5SRUcoQVVEX0NPTlZfQ0hDTlQpOworCQlPVVRSRUcoaWd0X2dsb2Jh bF9tbWlvLCBBVURfQ09OVl9DSENOVCwgaSk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBBVURfQ09OVl9DSENOVCk7CiAJCXByaW50ZigiXHRcdFx0XHRcdFsweCV4XSAldSA9PiAl bHVcbiIsIGR3b3JkLCBpLCBCSVRTKGR3b3JkLCA3LCA0KSk7CiAJfQogCiAJcHJpbnRmKCJBVURf SERNSVdfSERNSUVESUQgSERNSSBFTEQ6XG5cdCIpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExf U1QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVCk7CiAJZHdv cmQgJj0gfkJJVE1BU0soOCwgNSk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NULCBkd29yZCk7CisJT1VU UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1QsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBp IDwgQklUUyhkd29yZCwgMTQsIDEwKSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25s KElOUkVHKEFVRF9IRE1JV19IRE1JRURJRCkpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElO UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0hETUlXX0hETUlFRElEKSkpOwogCXByaW50ZigiXG4i KTsKIAogCXByaW50ZigiQVVEX0hETUlXX0lORk9GUiBIRE1JIGF1ZGlvIEluZm9mcmFtZTpcblx0 Iik7Ci0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIEFVRF9DTlRMX1NUKTsKIAlkd29yZCAmPSB+QklUTUFTSygyMCwgMTgpOwogCWR3 b3JkICY9IH5CSVRNQVNLKDMsIDApOwotCU9VVFJFRyhBVURfQ05UTF9TVCwgZHdvcmQpOworCU9V VFJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NULCBkd29yZCk7CiAJZm9yIChpID0gMDsg aSA8IDg7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19JTkZP RlIpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCisJ CQkJCSAgICBBVURfSERNSVdfSU5GT0ZSKSkpOwogCXByaW50ZigiXG4iKTsKIH0KIApAQCAtODYz LDcgKzg2NCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAKIAlwcmludGYoIlxuRGV0 YWlsczpcblxuIik7CiAKLQlkd29yZCA9IElOUkVHKFZJREVPX0RJUF9DVExfQSk7CisJZHdvcmQg PSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFZJREVPX0RJUF9DVExfQSk7CiAJcHJpbnRmKCJWSURF T19ESVBfQ1RMX0EgRW5hYmxlX0dyYXBoaWNzX0RJUFx0XHRcdCVsZFxuIiwgICAgIEJJVChkd29y ZCwgMzEpKSwKIAlwcmludGYoIlZJREVPX0RJUF9DVExfQSBHQ1BfRElQX2VuYWJsZVx0XHRcdFx0 JWxkXG4iLCAgICAgQklUKGR3b3JkLCAyNSkpLAogCXByaW50ZigiVklERU9fRElQX0NUTF9BIFZp ZGVvX0RJUF90eXBlX2VuYWJsZSBBVklcdFx0JWx1XG4iLCAgICAgICBCSVQoZHdvcmQsIDIxKSk7 CkBAIC04NzcsNyArODc4LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYo IlZJREVPX0RJUF9DVExfQSBWaWRlb19ESVBfYnVmZmVyX3NpemVcdFx0XHQlbHVcbiIsIEJJVFMo ZHdvcmQsIDExLCA4KSk7CiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0EgVmlkZW9fRElQX2FjY2Vz c19hZGRyZXNzXHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJTlJF RyhWSURFT19ESVBfQ1RMX0IpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBWSURF T19ESVBfQ1RMX0IpOwogCXByaW50ZigiVklERU9fRElQX0NUTF9CIEVuYWJsZV9HcmFwaGljc19E SVBcdFx0XHQlbGRcbiIsICAgICBCSVQoZHdvcmQsIDMxKSksCiAJcHJpbnRmKCJWSURFT19ESVBf Q1RMX0IgR0NQX0RJUF9lbmFibGVcdFx0XHRcdCVsZFxuIiwgICAgIEJJVChkd29yZCwgMjUpKSwK IAlwcmludGYoIlZJREVPX0RJUF9DVExfQiBWaWRlb19ESVBfdHlwZV9lbmFibGUgQVZJXHRcdCVs dVxuIiwgICAgICAgQklUKGR3b3JkLCAyMSkpOwpAQCAtODkxLDcgKzg5Miw3IEBAIHN0YXRpYyB2 b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0IgVmlkZW9fRElQX2J1 ZmZlcl9zaXplXHRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxMSwgOCkpOwogCXByaW50ZigiVklE RU9fRElQX0NUTF9CIFZpZGVvX0RJUF9hY2Nlc3NfYWRkcmVzc1x0XHQlbHVcbiIsIEJJVFMoZHdv cmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoVklERU9fRElQX0NUTF9DKTsKKwlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgVklERU9fRElQX0NUTF9DKTsKIAlwcmludGYoIlZJREVP X0RJUF9DVExfQyBFbmFibGVfR3JhcGhpY3NfRElQXHRcdFx0JWxkXG4iLCAgICAgQklUKGR3b3Jk LCAzMSkpLAogCXByaW50ZigiVklERU9fRElQX0NUTF9DIEdDUF9ESVBfZW5hYmxlXHRcdFx0XHQl bGRcbiIsICAgICBCSVQoZHdvcmQsIDI1KSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0MgVmlk ZW9fRElQX3R5cGVfZW5hYmxlIEFWSVx0XHQlbHVcbiIsICAgICAgIEJJVChkd29yZCwgMjEpKTsK QEAgLTkwNSwxNyArOTA2LDE3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRm KCJWSURFT19ESVBfQ1RMX0MgVmlkZW9fRElQX2J1ZmZlcl9zaXplXHRcdFx0JWx1XG4iLCBCSVRT KGR3b3JkLCAxMSwgOCkpOwogCXByaW50ZigiVklERU9fRElQX0NUTF9DIFZpZGVvX0RJUF9hY2Nl c3NfYWRkcmVzc1x0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5S RUcoQVVEX1ZJRF9ESUQpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfVklE X0RJRCk7CiAJcHJpbnRmKCJBVURfVklEX0RJRCB2ZW5kb3IgaWRcdFx0XHRcdFx0MHgleFxuIiwg ZHdvcmQgPj4gMTYpOwogCXByaW50ZigiQVVEX1ZJRF9ESUQgZGV2aWNlIGlkXHRcdFx0XHRcdDB4 JXhcbiIsIGR3b3JkICYgMHhmZmZmKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1JJRCk7CisJZHdv cmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9SSUQpOwogCXByaW50ZigiQVVEX1JJRCBN YWpvcl9SZXZpc2lvblx0XHRcdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMjMsIDIwKSk7CiAJ cHJpbnRmKCJBVURfUklEIE1pbm9yX1JldmlzaW9uXHRcdFx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3 b3JkLCAxOSwgMTYpKTsKIAlwcmludGYoIkFVRF9SSUQgUmV2aXNpb25fSWRcdFx0XHRcdFx0MHgl bHhcbiIsICAgIEJJVFMoZHdvcmQsIDE1LCA4KSk7CiAJcHJpbnRmKCJBVURfUklEIFN0ZXBwaW5n X0lkXHRcdFx0XHRcdDB4JWx4XG4iLCAgICBCSVRTKGR3b3JkLCA3LCAwKSk7CiAKLQlkd29yZCA9 IElOUkVHKEhETUlCKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgSERNSUIpOwog CXByaW50ZigiSERNSUIgUG9ydF9FbmFibGVcdFx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQg JiBTRFZPX0VOQUJMRSkpOwogCXByaW50ZigiSERNSUIgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRc dFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSksIHRyYW5zY29kZXJfc2Vs ZWN0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKQEAgLTkyOCw3ICs5MjksNyBAQCBzdGF0aWMgdm9p ZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiSERNSUIgSERNSV9vcl9EVklfU2VsZWN0XHRcdFx0 XHQlc1xuIiwgQklUKGR3b3JkLCA5KSA/ICJIRE1JIiA6ICJEVkkiKTsKIAlwcmludGYoIkhETUlC IEF1ZGlvX091dHB1dF9FbmFibGVcdFx0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9f RU5BQkxFKSk7CiAKLQlkd29yZCA9IElOUkVHKEhETUlDKTsKKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgSERNSUMpOwogCXByaW50ZigiSERNSUMgUG9ydF9FbmFibGVcdFx0XHRcdFx0 JXVcbiIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwogCXByaW50ZigiSERNSUMgVHJh bnNjb2Rlcl9TZWxlY3RcdFx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMw LCAyOSksIHRyYW5zY29kZXJfc2VsZWN0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKQEAgLTk0MSw3 ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiSERNSUMgSERN SV9vcl9EVklfU2VsZWN0XHRcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCA5KSA/ICJIRE1JIiA6ICJE VkkiKTsKIAlwcmludGYoIkhETUlDIEF1ZGlvX091dHB1dF9FbmFibGVcdFx0XHRcdCV1XG4iLCAh IShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7CiAKLQlkd29yZCA9IElOUkVHKEhETUlEKTsK Kwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgSERNSUQpOwogCXByaW50ZigiSERNSUQg UG9ydF9FbmFibGVcdFx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkp OwogCXByaW50ZigiSERNSUQgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRcdFx0WzB4JWx4XSAlc1xu IiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSksIHRyYW5zY29kZXJfc2VsZWN0W0JJVFMoZHdvcmQs IDMwLCAyOSldKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lk KQogCXByaW50ZigiSERNSUQgSERNSV9vcl9EVklfU2VsZWN0XHRcdFx0XHQlc1xuIiwgQklUKGR3 b3JkLCA5KSA/ICJIRE1JIiA6ICJEVkkiKTsKIAlwcmludGYoIkhETUlEIEF1ZGlvX091dHB1dF9F bmFibGVcdFx0XHRcdCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7CiAKLQlk d29yZCA9IElOUkVHKERQX0NUTF9CKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg RFBfQ1RMX0IpOwogCXByaW50ZigiRFBfQ1RMX0IgRGlzcGxheVBvcnRfRW5hYmxlXHRcdFx0XHQl bHVcbiIsIEJJVChkd29yZCwgMzEpKTsKIAlwcmludGYoIkRQX0NUTF9CIFBvcnRfV2lkdGhfU2Vs ZWN0aW9uXHRcdFx0XHRbMHglbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMjEsIDE5KSwgZHBf cG9ydF93aWR0aFtCSVRTKGR3b3JkLCAyMSwgMTkpXSk7CkBAIC05NjIsNyArOTYzLDcgQEAgc3Rh dGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkRQX0NUTF9CIEhEQ1BfUG9ydF9TZWxl Y3RcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA1KSk7CiAJcHJpbnRmKCJEUF9DVExfQiBBdWRp b19PdXRwdXRfRW5hYmxlXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNikpOwogCi0JZHdvcmQg PSBJTlJFRyhEUF9DVExfQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIERQX0NU TF9DKTsKIAlwcmludGYoIkRQX0NUTF9DIERpc3BsYXlQb3J0X0VuYWJsZVx0XHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDMxKSk7CiAJcHJpbnRmKCJEUF9DVExfQyBQb3J0X1dpZHRoX1NlbGVjdGlv blx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDIxLCAxOSksIGRwX3BvcnRf d2lkdGhbQklUUyhkd29yZCwgMjEsIDE5KV0pOwpAQCAtOTcwLDcgKzk3MSw3IEBAIHN0YXRpYyB2 b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJEUF9DVExfQyBIRENQX1BvcnRfU2VsZWN0XHRc dFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNSkpOwogCXByaW50ZigiRFBfQ1RMX0MgQXVkaW9fT3V0 cHV0X0VuYWJsZVx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDYpKTsKIAotCWR3b3JkID0gSU5S RUcoRFBfQ1RMX0QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBEUF9DVExfRCk7 CiAJcHJpbnRmKCJEUF9DVExfRCBEaXNwbGF5UG9ydF9FbmFibGVcdFx0XHRcdCVsdVxuIiwgQklU KGR3b3JkLCAzMSkpOwogCXByaW50ZigiRFBfQ1RMX0QgUG9ydF9XaWR0aF9TZWxlY3Rpb25cdFx0 XHRcdFsweCVseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAyMSwgMTkpLCBkcF9wb3J0X3dpZHRo W0JJVFMoZHdvcmQsIDIxLCAxOSldKTsKQEAgLTk3OCw3ICs5NzksNyBAQCBzdGF0aWMgdm9pZCBk dW1wX2NwdCh2b2lkKQogCXByaW50ZigiRFBfQ1RMX0QgSERDUF9Qb3J0X1NlbGVjdFx0XHRcdFx0 JWx1XG4iLCBCSVQoZHdvcmQsIDUpKTsKIAlwcmludGYoIkRQX0NUTF9EIEF1ZGlvX091dHB1dF9F bmFibGVcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA2KSk7CiAKLQlkd29yZCA9IElOUkVHKEFV RF9DT05GSUdfQSk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DT05GSUdf QSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0EgIE5faW5kZXhfdmFsdWVcdFx0XHRcdFsweCVseF0g JXNcbiIsIEJJVChkd29yZCwgMjkpLAogCQkJbl9pbmRleF92YWx1ZVtCSVQoZHdvcmQsIDI5KV0p OwogCXByaW50ZigiQVVEX0NPTkZJR19BICBOX3Byb2dyYW1taW5nX2VuYWJsZVx0XHRcdCVsdVxu IiwgQklUKGR3b3JkLCAyOCkpOwpAQCAtOTg3LDcgKzk4OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBf Y3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfQ09ORklHX0EgIFBpeGVsX0Nsb2NrX0hETUlcdFx0XHRc dFsweCVseF0gJXNcbiIsIEJJVFMoZHdvcmQsIDE5LCAxNiksCiAJCQlPUE5BTUUocGl4ZWxfY2xv Y2ssIEJJVFMoZHdvcmQsIDE5LCAxNikpKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQSAgRGlzYWJs ZV9OQ1RTXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMykpOwotCWR3b3JkID0gSU5SRUcoQVVE X0NPTkZJR19CKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NPTkZJR19C KTsKIAlwcmludGYoIkFVRF9DT05GSUdfQiAgTl9pbmRleF92YWx1ZVx0XHRcdFx0WzB4JWx4XSAl c1xuIiwgQklUKGR3b3JkLCAyOSksCiAJCQluX2luZGV4X3ZhbHVlW0JJVChkd29yZCwgMjkpXSk7 CiAJcHJpbnRmKCJBVURfQ09ORklHX0IgIE5fcHJvZ3JhbW1pbmdfZW5hYmxlXHRcdFx0JWx1XG4i LCBCSVQoZHdvcmQsIDI4KSk7CkBAIC05OTYsNyArOTk3LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9j cHQodm9pZCkKIAlwcmludGYoIkFVRF9DT05GSUdfQiAgUGl4ZWxfQ2xvY2tfSERNSVx0XHRcdFx0 WzB4JWx4XSAlc1xuIiwgQklUUyhkd29yZCwgMTksIDE2KSwKIAkJCU9QTkFNRShwaXhlbF9jbG9j aywgQklUUyhkd29yZCwgMTksIDE2KSkpOwogCXByaW50ZigiQVVEX0NPTkZJR19CICBEaXNhYmxl X05DVFNcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzKSk7Ci0JZHdvcmQgPSBJTlJFRyhBVURf Q09ORklHX0MpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ09ORklHX0Mp OwogCXByaW50ZigiQVVEX0NPTkZJR19DICBOX2luZGV4X3ZhbHVlXHRcdFx0XHRbMHglbHhdICVz XG4iLCBCSVQoZHdvcmQsIDI5KSwKIAkJCW5faW5kZXhfdmFsdWVbQklUKGR3b3JkLCAyOSldKTsK IAlwcmludGYoIkFVRF9DT05GSUdfQyAgTl9wcm9ncmFtbWluZ19lbmFibGVcdFx0XHQlbHVcbiIs IEJJVChkd29yZCwgMjgpKTsKQEAgLTEwMDYsMzYgKzEwMDcsMzYgQEAgc3RhdGljIHZvaWQgZHVt cF9jcHQodm9pZCkKIAkJCU9QTkFNRShwaXhlbF9jbG9jaywgQklUUyhkd29yZCwgMTksIDE2KSkp OwogCXByaW50ZigiQVVEX0NPTkZJR19DICBEaXNhYmxlX05DVFNcdFx0XHRcdCVsdVxuIiwgQklU KGR3b3JkLCAzKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9DVFNfRU5BQkxFX0EpOworCWR3b3Jk ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9BKTsKIAlwcmludGYoIkFV RF9DVFNfRU5BQkxFX0EgIEVuYWJsZV9DVFNfb3JfTV9wcm9ncmFtbWluZ1x0XHQlbHVcbiIsIEJJ VChkd29yZCwgMjApKTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0EgIENUU19NIHZhbHVlIElu ZGV4XHRcdFx0JXNcbiIsIEJJVChkd29yZCwgMjEpID8gIkNUUyIgOiAiTSIpOwogCXByaW50Zigi QVVEX0NUU19FTkFCTEVfQSAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNseFxuIiwgQklUUyhkd29y ZCwgMTksIDApKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DVFNfRU5BQkxFX0IpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9CKTsKIAlwcmludGYoIkFVRF9D VFNfRU5BQkxFX0IgIEVuYWJsZV9DVFNfb3JfTV9wcm9ncmFtbWluZ1x0XHQlbHVcbiIsIEJJVChk d29yZCwgMjApKTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0IgIENUU19NIHZhbHVlIEluZGV4 XHRcdFx0JXNcbiIsIEJJVChkd29yZCwgMjEpID8gIkNUUyIgOiAiTSIpOwogCXByaW50ZigiQVVE X0NUU19FTkFCTEVfQiAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNseFxuIiwgQklUUyhkd29yZCwg MTksIDApKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DVFNfRU5BQkxFX0MpOworCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9DKTsKIAlwcmludGYoIkFVRF9DVFNf RU5BQkxFX0MgIEVuYWJsZV9DVFNfb3JfTV9wcm9ncmFtbWluZ1x0XHQlbHVcbiIsIEJJVChkd29y ZCwgMjApKTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0MgIENUU19NIHZhbHVlIEluZGV4XHRc dFx0JXNcbiIsIEJJVChkd29yZCwgMjEpID8gIkNUUyIgOiAiTSIpOwogCXByaW50ZigiQVVEX0NU U19FTkFCTEVfQyAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNseFxuIiwgQklUUyhkd29yZCwgMTks IDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX01JU0NfQ1RSTF9BKTsKKwlkd29yZCA9IElOUkVH KGlndF9nbG9iYWxfbW1pbywgQVVEX01JU0NfQ1RSTF9BKTsKIAlwcmludGYoIkFVRF9NSVNDX0NU UkxfQSAgU2FtcGxlX0ZhYnJpY2F0aW9uX0VOX2JpdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMikp OwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9BICBTYW1wbGVfcHJlc2VudF9EaXNhYmxlXHRcdFx0 JWx1XG4iLAlCSVQoZHdvcmQsIDgpKTsKIAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQSAgT3V0cHV0 X0RlbGF5XHRcdFx0XHQlbHVcbiIsCQlCSVRTKGR3b3JkLCA3LCA0KSk7CiAJcHJpbnRmKCJBVURf TUlTQ19DVFJMX0EgIFByb19BbGxvd2VkXHRcdFx0XHQlbHVcbiIsCQkJQklUKGR3b3JkLCAxKSk7 Ci0JZHdvcmQgPSBJTlJFRyhBVURfTUlTQ19DVFJMX0IpOworCWR3b3JkID0gSU5SRUcoaWd0X2ds b2JhbF9tbWlvLCBBVURfTUlTQ19DVFJMX0IpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9CICBT YW1wbGVfRmFicmljYXRpb25fRU5fYml0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAyKSk7CiAJcHJp bnRmKCJBVURfTUlTQ19DVFJMX0IgIFNhbXBsZV9wcmVzZW50X0Rpc2FibGVcdFx0XHQlbHVcbiIs CUJJVChkd29yZCwgOCkpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9CICBPdXRwdXRfRGVsYXlc dFx0XHRcdCVsdVxuIiwJCUJJVFMoZHdvcmQsIDcsIDQpKTsKIAlwcmludGYoIkFVRF9NSVNDX0NU UkxfQiAgUHJvX0FsbG93ZWRcdFx0XHRcdCVsdVxuIiwJCQlCSVQoZHdvcmQsIDEpKTsKLQlkd29y ZCA9IElOUkVHKEFVRF9NSVNDX0NUUkxfQyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIEFVRF9NSVNDX0NUUkxfQyk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0MgIFNhbXBsZV9G YWJyaWNhdGlvbl9FTl9iaXRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFV RF9NSVNDX0NUUkxfQyAgU2FtcGxlX3ByZXNlbnRfRGlzYWJsZVx0XHRcdCVsdVxuIiwJQklUKGR3 b3JkLCA4KSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0MgIE91dHB1dF9EZWxheVx0XHRcdFx0 JWx1XG4iLAkJQklUUyhkd29yZCwgNywgNCkpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9DICBQ cm9fQWxsb3dlZFx0XHRcdFx0JWx1XG4iLAkJCUJJVChkd29yZCwgMSkpOwogCi0JZHdvcmQgPSBJ TlJFRyhBVURfUFdSU1QpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUFdS U1QpOwogCXByaW50ZigiQVVEX1BXUlNUICBGdW5jX0dycF9EZXZfUHdyU3RfQ3VyciAgICAgICAg ICAgICAgICAgIFx0JXNcbiIsIHBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsIDI3LCAyNildKTsKIAlw cmludGYoIkFVRF9QV1JTVCAgRnVuY19HcnBfRGV2X1B3clN0X1NldCAgICAgICAgICAgICAgICAg ICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAyNSwgMjQpXSk7CiAJcHJpbnRmKCJB VURfUFdSU1QgIENvbnZlcnRvckFfV2lkZ2V0X1Bvd2VyX1N0YXRlX0N1cnJlbnQgICAgXHQlc1xu IiwgcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgMTUsIDE0KV0pOwpAQCAtMTA1MSw3ICsxMDUyLDcg QEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluRF9X aWRnZXRfUG93ZXJfU3RhdGVfQ3VycmVudCAgICAgICAgICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtC SVRTKGR3b3JkLCAxMSwgMTApXSk7CiAJcHJpbnRmKCJBVURfUFdSU1QgIFBpbkRfV2lkZ2V0X1Bv d2VyX1N0YXRlX1NldCAgICAgICAgICAgICAgXHQlc1xuIiwgcG93ZXJfc3RhdGVbQklUUyhkd29y ZCwgIDksICA4KV0pOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfUE9SVF9FTl9IRF9DRkcpOworCWR3 b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUE9SVF9FTl9IRF9DRkcpOwogCXByaW50 ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBDb252ZXJ0b3JfQV9EaWdlblx0XHRcdCVsdVxuIiwJQklU KGR3b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURfUE9SVF9FTl9IRF9DRkcgIENvbnZlcnRvcl9CX0Rp Z2VuXHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9QT1JUX0VOX0hE X0NGRyAgQ29udmVydG9yX0NfRGlnZW5cdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMikpOwpAQCAt MTA2NSw3ICsxMDY2LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFV RF9QT1JUX0VOX0hEX0NGRyAgUG9ydF9DX0FtcF9NdXRlX1N0YXR1c1x0XHQlbHVcbiIsIEJJVChk d29yZCwgMjEpKTsKIAlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgUG9ydF9EX0FtcF9NdXRl X1N0YXR1c1x0XHQlbHVcbiIsIEJJVChkd29yZCwgMjIpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVE X09VVF9ESUdfQ05WVF9BKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09V VF9ESUdfQ05WVF9BKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQSAgVlx0XHRcdFx0XHQl bHVcbiIsCQlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQSAgVkNG R1x0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19D TlZUX0EgIFBSRVx0XHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQsIDMpKTsKQEAgLTEwNzcsNyAr MTA3OCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfT1VUX0RJ R19DTlZUX0EgIExvd2VzdF9DaGFubmVsX051bWJlclx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE5 LCAxNikpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9BICBTdHJlYW1fSURcdFx0XHRcdCVs dVxuIiwJQklUUyhkd29yZCwgMjMsIDIwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfRElH X0NOVlRfQik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfRElHX0NO VlRfQik7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIFZcdFx0XHRcdFx0JWx1XG4iLAkJ QklUKGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIFZDRkdcdFx0XHRc dCVsdVxuIiwJCUJJVChkd29yZCwgMikpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9CICBQ UkVcdFx0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAzKSk7CkBAIC0xMDg5LDcgKzEwOTAsNyBA QCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9C ICBMb3dlc3RfQ2hhbm5lbF9OdW1iZXJcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsK IAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQiAgU3RyZWFtX0lEXHRcdFx0XHQlbHVcbiIsCUJJ VFMoZHdvcmQsIDIzLCAyMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0RJR19DTlZUX0Mp OworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX0RJR19DTlZUX0MpOwog CXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBWXHRcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29y ZCwgMSkpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBWQ0ZHXHRcdFx0XHQlbHVcbiIs CQlCSVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlRfQyAgUFJFXHRcdFx0 XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMykpOwpAQCAtMTEwMyw4ICsxMTA0LDkgQEAgc3RhdGlj IHZvaWQgZHVtcF9jcHQodm9pZCkKIAogCXByaW50ZigiQVVEX09VVF9DSF9TVFIgIENvbnZlcnRl cl9DaGFubmVsX01BUAlQT1JUQglQT1JUQwlQT1JURFxuIik7CiAJZm9yIChpID0gMDsgaSA8IDg7 IGkrKykgewotCQlPVVRSRUcoQVVEX09VVF9DSF9TVFIsIGkgfCAoaSA8PCA4KSB8IChpIDw8IDE2 KSk7Ci0JCWR3b3JkID0gSU5SRUcoQVVEX09VVF9DSF9TVFIpOworCQlPVVRSRUcoaWd0X2dsb2Jh bF9tbWlvLCBBVURfT1VUX0NIX1NUUiwgaSB8IChpIDw8IDgpIHwKKwkJICAgICAgIChpIDw8IDE2 KSk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX0NIX1NUUik7CiAJ CXByaW50ZigiXHRcdFx0XHQlbHVcdCVsdVx0JWx1XHQlbHVcbiIsCiAJCQkJMSArIEJJVFMoZHdv cmQsICAzLCAgMCksCiAJCQkJMSArIEJJVFMoZHdvcmQsICA3LCAgNCksCkBAIC0xMTEyLDMzICsx MTE0LDMzIEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJCQkJMSArIEJJVFMoZHdvcmQs IDIzLCAyMCkpOwogCX0KIAotCWR3b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVTQ19BKTsKKwlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9TVFJfREVTQ19BKTsKIAlwcmlu dGYoIkFVRF9PVVRfU1RSX0RFU0NfQSAgSEJSX2VuYWJsZVx0XHRcdFx0JWx1XG4iLAkgQklUUyhk d29yZCwgMjgsIDI3KSk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0EgIENvbnZlcnRvcl9D aGFubmVsX0NvdW50XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMjAsIDE2KSArIDEpOwogCXByaW50 ZigiQVVEX09VVF9TVFJfREVTQ19BICBCaXRzX3Blcl9TYW1wbGVcdFx0XHRbJSNseF0gJXNcbiIs CiAJCQlCSVRTKGR3b3JkLCA2LCA0KSwgT1BOQU1FKGJpdHNfcGVyX3NhbXBsZSwgQklUUyhkd29y ZCwgNiwgNCkpKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQSAgTnVtYmVyX29mX0NoYW5u ZWxzX2luX2FfU3RyZWFtXHQlbHVcbiIsIDEgKyBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29y ZCA9IElOUkVHKEFVRF9PVVRfU1RSX0RFU0NfQik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9PVVRfU1RSX0RFU0NfQik7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0Ig IEhCUl9lbmFibGVcdFx0XHRcdCVsdVxuIiwJIEJJVFMoZHdvcmQsIDI4LCAyNykpOwogCXByaW50 ZigiQVVEX09VVF9TVFJfREVTQ19CICBDb252ZXJ0b3JfQ2hhbm5lbF9Db3VudFx0XHQlbHVcbiIs IEJJVFMoZHdvcmQsIDIwLCAxNikgKyAxKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQiAg Qml0c19wZXJfU2FtcGxlXHRcdFx0WyUjbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgNiwgNCks IE9QTkFNRShiaXRzX3Blcl9zYW1wbGUsIEJJVFMoZHdvcmQsIDYsIDQpKSk7CiAJcHJpbnRmKCJB VURfT1VUX1NUUl9ERVNDX0IgIE51bWJlcl9vZl9DaGFubmVsc19pbl9hX1N0cmVhbVx0JWx1XG4i LCAxICsgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX1NUUl9E RVNDX0MpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VUX1NUUl9ERVND X0MpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19DICBIQlJfZW5hYmxlXHRcdFx0XHQlbHVc biIsCSBCSVRTKGR3b3JkLCAyOCwgMjcpKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQyAg Q29udmVydG9yX0NoYW5uZWxfQ291bnRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAyMCwgMTYpICsg MSk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0MgIEJpdHNfcGVyX1NhbXBsZVx0XHRcdFsl I2x4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDYsIDQpLCBPUE5BTUUoYml0c19wZXJfc2FtcGxl LCBCSVRTKGR3b3JkLCA2LCA0KSkpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19DICBOdW1i ZXJfb2ZfQ2hhbm5lbHNfaW5fYV9TdHJlYW1cdCVsdVxuIiwgMSArIEJJVFMoZHdvcmQsIDMsIDAp KTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1BJTldfQ09OTkxOR19TRUwpOworCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfUElOV19DT05OTE5HX1NFTCk7CiAJcHJpbnRmKCJBVURf UElOV19DT05OTE5HX1NFTCAgQ29ubmVjdGlvbl9zZWxlY3RfQ29udHJvbF9CXHQlI2x4XG4iLCBC SVRTKGR3b3JkLCAgNywgIDApKTsKIAlwcmludGYoIkFVRF9QSU5XX0NPTk5MTkdfU0VMICBDb25u ZWN0aW9uX3NlbGVjdF9Db250cm9sX0NcdCUjbHhcbiIsIEJJVFMoZHdvcmQsIDE1LCAgOCkpOwog CXByaW50ZigiQVVEX1BJTldfQ09OTkxOR19TRUwgIENvbm5lY3Rpb25fc2VsZWN0X0NvbnRyb2xf RFx0JSNseFxuIiwgQklUUyhkd29yZCwgMjMsIDE2KSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9D TlRMX1NUX0EpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9B KTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0EgIERJUF9Qb3J0X1NlbGVjdFx0XHRcdFx0WyUjbHhd ICVzXG4iLAogCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgZGlwX3BvcnRbQklUUyhkd29yZCwgMzAs IDI5KV0pOwogCXByaW50ZigiQVVEX0NOVExfU1RfQSAgRElQX3R5cGVfZW5hYmxlX3N0YXR1cyBB dWRpbyBESVBcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIxKSk7CkBAIC0xMTQ5LDcgKzExNTEsNyBA QCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX0NOVExfU1RfQSAgRUxE X0FDS1x0XHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNCkpOwogCXByaW50ZigiQVVEX0NOVExf U1RfQSAgRUxEX2J1ZmZlcl9zaXplXHRcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDE0LCAxMCkp OwogCi0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9CKTsKKwlkd29yZCA9IElOUkVHKGlndF9n bG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQik7CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9CICBESVBf UG9ydF9TZWxlY3RcdFx0XHRcdFslI2x4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSks IGRpcF9wb3J0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0Ig IERJUF90eXBlX2VuYWJsZV9zdGF0dXMgQXVkaW8gRElQXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAy MSkpOwpAQCAtMTE2MCw3ICsxMTYyLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlw cmludGYoIkFVRF9DTlRMX1NUX0IgIEVMRF9BQ0tcdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQs IDQpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0IgIEVMRF9idWZmZXJfc2l6ZVx0XHRcdFx0JWx1 XG4iLCBCSVRTKGR3b3JkLCAxNCwgMTApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1Rf Qyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0MpOwogCXBy aW50ZigiQVVEX0NOVExfU1RfQyAgRElQX1BvcnRfU2VsZWN0XHRcdFx0XHRbJSNseF0gJXNcbiIs CiAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCBkaXBfcG9ydFtCSVRTKGR3b3JkLCAzMCwgMjkpXSk7 CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBESVBfdHlwZV9lbmFibGVfc3RhdHVzIEF1ZGlvIERJ UFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKQEAgLTExNzEsNyArMTE3Myw3IEBAIHN0YXRp YyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBFTERfQUNLXHRc dFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA0KSk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBF TERfYnVmZmVyX3NpemVcdFx0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTQsIDEwKSk7CiAKLQlk d29yZCA9IElOUkVHKEFVRF9DTlRSTF9TVDIpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBBVURfQ05UUkxfU1QyKTsKIAlwcmludGYoIkFVRF9DTlRSTF9TVDIgIENQX1JlYWR5Qlx0 XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9DTlRSTF9TVDIgIEVM RF92YWxpZEJcdFx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURfQ05U UkxfU1QyICBDUF9SZWFkeUNcdFx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCA1KSk7CkBAIC0xMTc5 LDcgKzExODEsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVEX0NO VFJMX1NUMiAgQ1BfUmVhZHlEXHRcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOSkpOwogCXByaW50 ZigiQVVEX0NOVFJMX1NUMiAgRUxEX3ZhbGlkRFx0XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDgp KTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVFJMX1NUMyk7CisJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIEFVRF9DTlRSTF9TVDMpOwogCXByaW50ZigiQVVEX0NOVFJMX1NUMyAgVHJh bnNBX0RQVF9BdWRpb19PdXRwdXRfRW5cdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDMpKTsKIAlwcmlu dGYoIkFVRF9DTlRSTF9TVDMgIFRyYW5zQV90b19Qb3J0X1NlbFx0XHRcdFslI2x4XSAlc1xuIiwK IAkJCUJJVFMoZHdvcmQsIDIsIDApLCB0cmFuc190b19wb3J0X3NlbFtCSVRTKGR3b3JkLCAyLCAw KV0pOwpAQCAtMTE5MCw3ICsxMTkyLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlw cmludGYoIkFVRF9DTlRSTF9TVDMgIFRyYW5zQ190b19Qb3J0X1NlbFx0XHRcdFslI2x4XSAlc1xu IiwKIAkJCUJJVFMoZHdvcmQsIDEwLCA4KSwgdHJhbnNfdG9fcG9ydF9zZWxbQklUUyhkd29yZCwg MTAsIDgpXSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9IRE1JV19TVEFUVVMpOworCWR3b3JkID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfSERNSVdfU1RBVFVTKTsKIAlwcmludGYoIkFVRF9I RE1JV19TVEFUVVMgIENvbnZfQV9DRENMSy9ET1RDTEtfRklGT19VbmRlcnJ1blx0JWx1XG4iLCBC SVQoZHdvcmQsIDI3KSk7CiAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0FfQ0RDTEsv RE9UQ0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklUKGR3b3JkLCAyNikpOwogCXByaW50Zigi QVVEX0hETUlXX1NUQVRVUyAgQ29udl9CX0NEQ0xLL0RPVENMS19GSUZPX1VuZGVycnVuXHQlbHVc biIsIEJJVChkd29yZCwgMjkpKTsKQEAgLTEyMDEsNTQgKzEyMDMsNjAgQEAgc3RhdGljIHZvaWQg ZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9IRE1JV19TVEFUVVMgIEZ1bmN0aW9uX1Jlc2V0 XHRcdFx0JWx1XG4iLAkJIEJJVChkd29yZCwgMjQpKTsKIAogCXByaW50ZigiQVVEX0hETUlXX0hE TUlFRElEX0EgSERNSSBFTEQ6XG5cdCIpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1RfQSk7 CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0EpOwogCWR3b3Jk ICY9IH5CSVRNQVNLKDksIDUpOwotCU9VVFJFRyhBVURfQ05UTF9TVF9BLCBkd29yZCk7CisJT1VU UkVHKGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQSwgZHdvcmQpOwogCWZvciAoaSA9IDA7 IGkgPCBCSVRTKGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRv bmwoSU5SRUcoQVVEX0hETUlXX0hETUlFRElEX0EpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9u bChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCisJCQkJCSAgICBBVURfSERNSVdfSERNSUVESURfQSkp KTsKIAlwcmludGYoIlxuIik7CiAKIAlwcmludGYoIkFVRF9IRE1JV19IRE1JRURJRF9CIEhETUkg RUxEOlxuXHQiKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0IpOworCWR3b3JkID0gSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CKTsKIAlkd29yZCAmPSB+QklUTUFTSyg5 LCA1KTsKLQlPVVRSRUcoQVVEX0NOVExfU1RfQiwgZHdvcmQpOworCU9VVFJFRyhpZ3RfZ2xvYmFs X21taW8sIEFVRF9DTlRMX1NUX0IsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwgQklUUyhkd29y ZCwgMTQsIDEwKSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9I RE1JV19IRE1JRURJRF9CKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2ds b2JhbF9tbWlvLAorCQkJCQkgICAgQVVEX0hETUlXX0hETUlFRElEX0IpKSk7CiAJcHJpbnRmKCJc biIpOwogCiAJcHJpbnRmKCJBVURfSERNSVdfSERNSUVESURfQyBIRE1JIEVMRDpcblx0Iik7Ci0J ZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9DKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxf bW1pbywgQVVEX0NOVExfU1RfQyk7CiAJZHdvcmQgJj0gfkJJVE1BU0soOSwgNSk7Ci0JT1VUUkVH KEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05U TF9TVF9DLCBkd29yZCk7CiAJZm9yIChpID0gMDsgaSA8IEJJVFMoZHdvcmQsIDE0LCAxMCkgLyA0 OyBpKyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhBVURfSERNSVdfSERNSUVESURf QykpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywKKwkJ CQkJICAgIEFVRF9IRE1JV19IRE1JRURJRF9DKSkpOwogCXByaW50ZigiXG4iKTsKIAogCXByaW50 ZigiQVVEX0hETUlXX0lORk9GUl9BIEhETUkgYXVkaW8gSW5mb2ZyYW1lOlxuXHQiKTsKLQlkd29y ZCA9IElOUkVHKEFVRF9DTlRMX1NUX0EpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBBVURfQ05UTF9TVF9BKTsKIAlkd29yZCAmPSB+QklUTUFTSygyMCwgMTgpOwogCWR3b3JkICY9 IH5CSVRNQVNLKDMsIDApOwotCU9VVFJFRyhBVURfQ05UTF9TVF9BLCBkd29yZCk7CisJT1VUUkVH KGlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQSwgZHdvcmQpOwogCWZvciAoaSA9IDA7IGkg PCA4OyBpKyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhBVURfSERNSVdfSU5GT0ZS X0EpKSk7CisJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sCisJ CQkJCSAgICBBVURfSERNSVdfSU5GT0ZSX0EpKSk7CiAJcHJpbnRmKCJcbiIpOwogCiAJcHJpbnRm KCJBVURfSERNSVdfSU5GT0ZSX0IgSERNSSBhdWRpbyBJbmZvZnJhbWU6XG5cdCIpOwotCWR3b3Jk ID0gSU5SRUcoQVVEX0NOVExfU1RfQik7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8s IEFVRF9DTlRMX1NUX0IpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7CiAJZHdvcmQgJj0g fkJJVE1BU0soMywgMCk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NUX0IsIGR3b3JkKTsKKwlPVVRSRUco aWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CLCBkd29yZCk7CiAJZm9yIChpID0gMDsgaSA8 IDg7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19JTkZPRlJf QikpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGlndF9nbG9iYWxfbW1pbywKKwkJ CQkJICAgIEFVRF9IRE1JV19JTkZPRlJfQikpKTsKIAlwcmludGYoIlxuIik7CiAKIAlwcmludGYo IkFVRF9IRE1JV19JTkZPRlJfQyBIRE1JIGF1ZGlvIEluZm9mcmFtZTpcblx0Iik7Ci0JZHdvcmQg PSBJTlJFRyhBVURfQ05UTF9TVF9DKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywg QVVEX0NOVExfU1RfQyk7CiAJZHdvcmQgJj0gfkJJVE1BU0soMjAsIDE4KTsKIAlkd29yZCAmPSB+ QklUTUFTSygzLCAwKTsKLQlPVVRSRUcoQVVEX0NOVExfU1RfQywgZHdvcmQpOworCU9VVFJFRyhp Z3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVEX0hETUlXX0lORk9GUl9D KSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLAorCQkJ CQkgICAgQVVEX0hETUlXX0lORk9GUl9DKSkpOwogCXByaW50ZigiXG4iKTsKIAogfQpAQCAtMTM3 NCwxMCArMTM4MiwxMiBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9jb25maWcoaW50IGluZGV4KQog CWNoYXIgcHJlZml4W01BWF9QUkVGSVhfU0laRV07CiAKIAlpZiAoIUlTX0hBU1dFTExfUExVUyhk ZXZpZCkpIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfQ09ORklHX0EgKyAo aW5kZXggLSBQSVBFX0EpICogMHgxMDApOworCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgYXVkX3JlZ19iYXNlICsgQVVEX0NPTkZJR19BICsKKwkJCSAgICAgIChpbmRleCAtIFBJUEVf QSkgKiAweDEwMCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVEX0NPTkZJR18lYyAgIiwgJ0EnICsg aW5kZXggLSBQSVBFX0EpOwogCX0gZWxzZSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNl ICsgQVVEX1RDQV9DT05GSUcgKyAoaW5kZXggLSBUUkFOU0NPREVSX0EpICogMHgxMDApOworCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9DT05G SUcgKworCQkJICAgICAgKGluZGV4IC0gVFJBTlNDT0RFUl9BKSAqIDB4MTAwKTsKIAkJc3ByaW50 ZihwcmVmaXgsICJBVURfVEMlY19DT05GSUciLCAnQScgKyBpbmRleCAtIFRSQU5TQ09ERVJfQSk7 CiAJfQogCkBAIC0xMzk3LDEwICsxNDA3LDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX21pc2Nf Y29udHJvbChpbnQgaW5kZXgpCiAJY2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKIAogCWlm ICghSVNfSEFTV0VMTF9QTFVTKGRldmlkKSkgewotCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFz ZSArIEFVRF9NSVNDX0NUUkxfQSArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7CisJCWR3b3Jk ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfTUlTQ19DVFJMX0Eg KworCQkJICAgICAgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgs ICJBVURfTUlTQ19DVFJMXyVjICIsICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9IGVsc2Ugewot CQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9NSVNDX0NUUkwgKyAoaW5kZXgg LSBDT05WRVJURVJfMSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlv LCBhdWRfcmVnX2Jhc2UgKyBBVURfQzFfTUlTQ19DVFJMICsKKwkJCSAgICAgIChpbmRleCAtIENP TlZFUlRFUl8xKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfQyVjX01JU0NfQ1RS TCIsICcxJyArIGluZGV4IC0gQ09OVkVSVEVSXzEpOwogCX0KIApAQCAtMTQxNCw3ICsxNDI2LDcg QEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfdmVuZG9yX2RldmljZV9pZCh2b2lkKQogewogCXVpbnQz Ml90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfVklEX0RJRCk7 CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9WSURf RElEKTsKIAlwcmludGYoIkFVRF9WSURfRElEIGRldmljZSBpZFx0XHRcdFx0XHQweCVseFxuIiwg QklUUyhkd29yZCwgMTUsIDApKTsKIAlwcmludGYoIkFVRF9WSURfRElEIHZlbmRvciBpZFx0XHRc dFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMzEsIDE2KSk7CiB9CkBAIC0xNDIzLDcgKzE0MzUs NyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9yZXZpc2lvbl9pZCh2b2lkKQogewogCXVpbnQzMl90 IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUklEKTsKKwlkd29y ZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1JJRCk7CiAJcHJp bnRmKCJBVURfUklEIFN0ZXBwaW5nX0lkXHRcdFx0XHRcdDB4JWx4XG4iLCAgICBCSVRTKGR3b3Jk LCA3LCAwKSk7CiAJcHJpbnRmKCJBVURfUklEIFJldmlzaW9uX0lkXHRcdFx0XHRcdDB4JWx4XG4i LCAgICBCSVRTKGR3b3JkLCAxNSwgOCkpOwogCXByaW50ZigiQVVEX1JJRCBNaW5vcl9SZXZpc2lv blx0XHRcdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMTksIDE2KSk7CkBAIC0xNDM2LDEwICsx NDQ4LDEzIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX21fY3RzX2VuYWJsZShpbnQgaW5kZXgpCiAJ Y2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmICghSVNfSEFTV0VMTF9QTFVTKGRl dmlkKSkgewotCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DVFNfRU5BQkxFX0Eg ICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFs X21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DVFNfRU5BQkxFX0EgKworCQkJICAgICAgKGluZGV4 IC0gUElQRV9BKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfQ1RTX0VOQUJMRV8l YyAgICAiLCAnQScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfSBlbHNlIHsKLQkJZHdvcmQgPSBJTlJF RyhhdWRfcmVnX2Jhc2UgKyBBVURfVENBX01fQ1RTX0VOQUJMRSAgKyAoaW5kZXggLSBUUkFOU0NP REVSX0EpICogMHgxMDApOworCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3Jl Z19iYXNlICsKKwkJCSAgICAgIEFVRF9UQ0FfTV9DVFNfRU5BQkxFICArIChpbmRleCAtIFRSQU5T Q09ERVJfQSkgKgorCQkJICAgICAgMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9UQyVj X01fQ1RTX0VOQUJMRSIsICdBJyArIGluZGV4IC0gVFJBTlNDT0RFUl9BKTsKIAl9CiAKQEAgLTE0 NTQsNyArMTQ2OSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX3Bvd2VyX3N0YXRlKHZvaWQpCiAJ dWludDMyX3QgZHdvcmQ7CiAJaW50IG51bV9waXBlczsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3Jl Z19iYXNlICsgQVVEX1BXUlNUKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVk X3JlZ19iYXNlICsgQVVEX1BXUlNUKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluQl9XaWRnZXRf UG93ZXJfU3RhdGVfU2V0ICAgICAgICAgICAgICBcdCVzXG4iLCAgICAgICAgIHBvd2VyX3N0YXRl W0JJVFMoZHdvcmQsICAxLCAgMCldKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluQl9XaWRnZXRf UG93ZXJfU3RhdGVfQ3VycmVudCAgICAgICAgICBcdCVzXG4iLCAgICAgICAgIHBvd2VyX3N0YXRl W0JJVFMoZHdvcmQsICAzLCAgMildKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgUGluQ19XaWRnZXRf UG93ZXJfU3RhdGVfU2V0ICAgICAgICAgICAgICBcdCVzXG4iLCAgICAgICAgIHBvd2VyX3N0YXRl W0JJVFMoZHdvcmQsICA1LCAgNCldKTsKQEAgLTE1MTAsMTEgKzE1MjUsMTEgQEAgc3RhdGljIHZv aWQgZHVtcF9hdWRfZWRpZF9kYXRhKGludCBpbmRleCkKIAkJcHJpbnRmKCJBVURfSERNSVdfSERN SUVESURfJWMgSERNSSBFTEQ6XG5cdCIsICAnQScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfQogCi0J ZHdvcmQgPSBJTlJFRyhhdWRfY3RybF9zdCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIGF1ZF9jdHJsX3N0KTsKIAlkd29yZCAmPSB+QklUTUFTSyg5LCA1KTsKLQlPVVRSRUcoYXVk X2N0cmxfc3QsIGR3b3JkKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfY3RybF9zdCwg ZHdvcmQpOwogCWZvciAoaSA9IDA7IGkgPCBCSVRTKGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQot CQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoZWRpZF9kYXRhKSkpOworCQlwcmludGYoIiUw OHggIiwgaHRvbmwoSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBlZGlkX2RhdGEpKSk7CiAJcHJpbnRm KCJcbiIpOwogfQogCkBAIC0xNTM3LDEyICsxNTUyLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVk X2luZm9mcmFtZShpbnQgaW5kZXgpCiAJCXByaW50ZigiQVVEX0hETUlXX0lORk9GUl8lYyBIRE1J IGF1ZGlvIEluZm9mcmFtZTpcblx0IiwgICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9CiAKLQlk d29yZCA9IElOUkVHKGF1ZF9jdHJsX3N0KTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgYXVkX2N0cmxfc3QpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7CiAJZHdvcmQgJj0g fkJJVE1BU0soMywgMCk7Ci0JT1VUUkVHKGF1ZF9jdHJsX3N0LCBkd29yZCk7CisJT1VUUkVHKGln dF9nbG9iYWxfbW1pbywgYXVkX2N0cmxfc3QsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwgODsg aSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoaW5mb19mcm0pKSk7CisJCXByaW50 ZigiJTA4eCAiLCBodG9ubChJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGluZm9fZnJtKSkpOwogCXBy aW50ZigiXG4iKTsKIH0KIApAQCAtMTU1MSw3ICsxNTY2LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9h dWRfcG9ydF9lbl9oZF9jZmcodm9pZCkKIAl1aW50MzJfdCBkd29yZDsKIAlpbnQgbnVtX3BpcGVz ID0gZ2V0X251bV9waXBlcygpOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURf UE9SVF9FTl9IRF9DRkcpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVn X2Jhc2UgKyBBVURfUE9SVF9FTl9IRF9DRkcpOwogCWlmIChudW1fcGlwZXMgPT0gMikgewogCQlw cmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9yX0FfRGlnZW5cdFx0XHQlbHVcbiIs ICAgIEJJVChkd29yZCwgMCkpOwogCQlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVy dG9yX0JfRGlnZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMSkpOwpAQCAtMTU4NSw3ICsx NjAwLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfcGlwZV9jb252X2NmZyh2b2lkKQogewogCXVp bnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUElQRV9D T05WX0NGRyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSAr IEFVRF9QSVBFX0NPTlZfQ0ZHKTsKIAlwcmludGYoIkFVRF9QSVBFX0NPTlZfQ0ZHICBDb252ZXJ0 b3JfMV9EaWdlblx0XHRcdCVsdVxuIiwgICAgQklUKGR3b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURf UElQRV9DT05WX0NGRyAgQ29udmVydG9yXzJfRGlnZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29y ZCwgMSkpOwogCXByaW50ZigiQVVEX1BJUEVfQ09OVl9DRkcgIENvbnZlcnRvcl8zX0RpZ2VuXHRc dFx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDIpKTsKQEAgLTE2MDcsMTAgKzE2MjIsMTIgQEAgc3Rh dGljIHZvaWQgZHVtcF9hdWRfZGlnX2NudnQoaW50IGluZGV4KQogCWNoYXIgcHJlZml4W01BWF9Q UkVGSVhfU0laRV07CiAKIAlpZiAoIUlTX0hBU1dFTExfUExVUyhkZXZpZCkpIHsKLQkJZHdvcmQg PSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfT1VUX0RJR19DTlZUX0EgICsgKGluZGV4IC0gUElQ RV9BKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdf YmFzZSArCisJCQkgICAgICBBVURfT1VUX0RJR19DTlZUX0EgICsgKGluZGV4IC0gUElQRV9BKSAq IDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfT1VUX0RJR19DTlZUXyVjIiwgJ0EnICsg aW5kZXggLSBQSVBFX0EpOwogCX0gZWxzZSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNl ICsgQVVEX0MxX0RJR19DTlZUICsgKGluZGV4IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOworCQlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0MxX0RJR19D TlZUICsKKwkJCSAgICAgIChpbmRleCAtIENPTlZFUlRFUl8xKSAqIDB4MTAwKTsKIAkJc3ByaW50 ZihwcmVmaXgsICJBVURfQyVjX0RJR19DTlZUICAgIiwgJzEnICsgaW5kZXggLSBDT05WRVJURVJf MSk7CiAJfQogCkBAIC0xNjMzLDEwICsxNjUwLDEyIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX3N0 cl9kZXNjKGludCBpbmRleCkKIAl1aW50MzJfdCByYXRlOwogCiAJaWYgKCFJU19IQVNXRUxMX1BM VVMoZGV2aWQpKSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX09VVF9TVFJf REVTQ19BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArCisJCQkgICAgICBBVURfT1VUX1NUUl9ERVNDX0Eg KyAoaW5kZXggLSBQSVBFX0EpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9PVVRf U1RSX0RFU0NfJWMiLCAnQScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfSBlbHNlIHsKLQkJZHdvcmQg PSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfQzFfU1RSX0RFU0MgKyAoaW5kZXggLSBDT05WRVJU RVJfMSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVn X2Jhc2UgKyBBVURfQzFfU1RSX0RFU0MgKworCQkJICAgICAgKGluZGV4IC0gQ09OVkVSVEVSXzEp ICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9DJWNfU1RSX0RFU0MgICIsICcxJyAr IGluZGV4IC0gQ09OVkVSVEVSXzEpOwogCX0KIApAQCAtMTY2OCw4ICsxNjg3LDkgQEAgc3RhdGlj IHZvaWQgZHVtcF9hdWRfb3V0X2NoYW5fbWFwKHZvaWQpCiAKIAlwcmludGYoIkFVRF9PVVRfQ0hB Tl9NQVAgIENvbnZlcnRlcl9DaGFubmVsX01BUAlQT1JUQglQT1JUQwlQT1JURFxuIik7CiAJZm9y IChpID0gMDsgaSA8IDg7IGkrKykgewotCQlPVVRSRUcoYXVkX3JlZ19iYXNlICsgQVVEX09VVF9D SEFOX01BUCwgaSB8IChpIDw8IDgpIHwgKGkgPDwgMTYpKTsKLQkJZHdvcmQgPSBJTlJFRyhhdWRf cmVnX2Jhc2UgKyBBVURfT1VUX0NIQU5fTUFQKTsKKwkJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywg YXVkX3JlZ19iYXNlICsgQVVEX09VVF9DSEFOX01BUCwKKwkJICAgICAgIGkgfCAoaSA8PCA4KSB8 IChpIDw8IDE2KSk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jh c2UgKyBBVURfT1VUX0NIQU5fTUFQKTsKIAkJcHJpbnRmKCJcdFx0XHRcdCVsdVx0JWx1XHQlbHVc dCVsdVxuIiwKIAkJCQkxICsgQklUUyhkd29yZCwgIDMsICAwKSwKIAkJCQkxICsgQklUUyhkd29y ZCwgIDcsICA0KSwKQEAgLTE2ODMsNyArMTcwMyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nv bm5lY3RfbGlzdCh2b2lkKQogCXVpbnQzMl90IGR3b3JkOwogCWNoYXIgcHJlZml4W01BWF9QUkVG SVhfU0laRV07CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5XX0NPTk5M TkdfTElTVCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSAr IEFVRF9QSU5XX0NPTk5MTkdfTElTVCk7CiAJc3ByaW50ZihwcmVmaXgsICJBVURfUElOV19DT05O TE5HX0xJU1QiKTsKIAogCXByaW50ZigiJXMgIENvbm5lY3RfTGlzdF9MZW5ndGhcdFx0JWx1XG4i LCAgICAgcHJlZml4LCBCSVRTKGR3b3JkLCA2LCAwKSk7CkBAIC0xNjk4LDExICsxNzE4LDEzIEBA IHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nvbm5lY3Rfc2VsZWN0KHZvaWQpCiAJY2hhciBwcmVmaXhb TUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmIChJU19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7Ci0JCWR3 b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJUEVfQ09OTl9TRUxfQ1RSTCk7CisJCWR3 b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKworCQkJICAgICAgQVVE X1BJUEVfQ09OTl9TRUxfQ1RSTCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVEX1BJUEVfQ09OTl9T RUxfQ1RSTCIpOwogCiAJfSBlbHNlIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBB VURfUElOV19DT05OTE5HX1NFTCk7CisJCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBh dWRfcmVnX2Jhc2UgKworCQkJICAgICAgQVVEX1BJTldfQ09OTkxOR19TRUwpOwogCQlzcHJpbnRm KHByZWZpeCwgIkFVRF9QSU5XX0NPTk5MTkdfU0VMICAiKTsKIAl9CiAKQEAgLTE3MTgsMTEgKzE3 NDAsMTMgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfY3RybF9zdGF0ZShpbnQgaW5kZXgpCiAKIAlp ZiAoSVNfSEFTV0VMTF9QTFVTKGRldmlkKSkgewogCQlvZmZzZXQgPSAoaW5kZXggLSBUUkFOU0NP REVSX0EpICogMHgxMDA7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9E SVBfRUxEX0NUUkxfU1QgKyBvZmZzZXQpOworCQlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgYXVkX3JlZ19iYXNlICsKKwkJCSAgICAgIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsgb2Zm c2V0KTsKIAkJcHJpbnRmKCJBdWRpbyBESVAgYW5kIEVMRCBjb250cm9sIHN0YXRlIGZvciBUcmFu c2NvZGVyICVjXG4iLCAgJ0EnICsgaW5kZXggLSBUUkFOU0NPREVSX0EpOwogCX0gZWxzZSB7CiAJ CW9mZnNldCA9IChpbmRleCAtIFBJUEVfQSkgKiAweDEwMDsKLQkJZHdvcmQgPSBJTlJFRyhhdWRf cmVnX2Jhc2UgKyBBVURfQ05UTF9TVF9BICsgb2Zmc2V0KTsKKwkJZHdvcmQgPSBJTlJFRyhpZ3Rf Z2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUX0EgKworCQkJICAgICAgb2Zm c2V0KTsKIAkJcHJpbnRmKCJBdWRpbyBjb250cm9sIHN0YXRlIC0gUGlwZSAlY1xuIiwgICdBJyAr IGluZGV4IC0gUElQRV9BKTsKIAl9CiAKQEAgLTE3NDMsNyArMTc2Nyw3IEBAIHN0YXRpYyB2b2lk IGR1bXBfYXVkX2N0cmxfc3RhdGUyKHZvaWQpCiB7CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29y ZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUMik7CisJZHdvcmQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DTlRMX1NUMik7CiAJcHJpbnRmKCJB VURfQ05UTF9TVDIgIEVMRF92YWxpZEJcdFx0XHRcdCVsdVxuIiwgIEJJVChkd29yZCwgMCkpOwog CXByaW50ZigiQVVEX0NOVExfU1QyICBDUF9SZWFkeUJcdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdv cmQsIDEpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUMiAgRUxEX3ZhbGlkQ1x0XHRcdFx0JWx1XG4i LCAgQklUKGR3b3JkLCA0KSk7CkBAIC0xNzU3LDcgKzE3ODEsNyBAQCBzdGF0aWMgdm9pZCBkdW1w X2F1ZF9lbGRfY3BfdmxkKHZvaWQpCiB7CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElO UkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5fRUxEX0NQX1ZMRCk7CisJZHdvcmQgPSBJTlJFRyhp Z3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9QSU5fRUxEX0NQX1ZMRCk7CiAJcHJp bnRmKCJBVURfUElOX0VMRF9DUF9WTEQgIFRyYW5zY29kZXJfQSBFTERfdmFsaWRcdFx0JWx1XG4i LAlCSVQoZHdvcmQsIDApKTsKIAlwcmludGYoIkFVRF9QSU5fRUxEX0NQX1ZMRCAgVHJhbnNjb2Rl cl9BIENQX1JlYWR5IFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX1BJ Tl9FTERfQ1BfVkxEICBUcmFuc2NvZGVyX0EgT3V0X2VuYWJsZVx0XHQlbHVcbiIsCUJJVChkd29y ZCwgMikpOwpAQCAtMTc3Niw3ICsxODAwLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfaGRtaV9z dGF0dXModm9pZCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3Jl Z19iYXNlICsgQVVEX0hETUlXX1NUQVRVUyk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9IRE1JV19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlX X1NUQVRVUyAgRnVuY3Rpb25fUmVzZXRcdFx0XHQlbHVcbiIsICAgICAgICAgICAgICAgIEJJVChk d29yZCwgMjQpKTsKIAlwcmludGYoIkFVRF9IRE1JV19TVEFUVVMgIEJDTEsvQ0RDTEtfRklGT19P dmVycnVuXHRcdCVsdVxuIiwJICAgICBCSVQoZHdvcmQsIDI1KSk7CiAJcHJpbnRmKCJBVURfSERN SVdfU1RBVFVTICBDb252X0FfQ0RDTEsvRE9UQ0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklU KGR3b3JkLCAyOCkpOwpAQCAtMTgxNyw3ICsxODQxLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9kcF9w b3J0X2N0cmwoaW50IHBvcnQpCiAJc3ByaW50ZihwcmVmaXgsICJEUF8lYyIsICdCJyArIHBvcnQg LSBQT1JUX0IpOwogCiAJcG9ydF9jdHJsID0gZGlzcF9yZWdfYmFzZSArIERQX0NUTF9CICsgKHBv cnQgLSBQT1JUX0IpICogMHgxMDA7Ci0JZHdvcmQgPSBJTlJFRyhwb3J0X2N0cmwpOworCWR3b3Jk ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBwb3J0X2N0cmwpOwogCXByaW50ZigiJXMgRGlzcGxh eVBvcnRfRW5hYmxlXHRcdFx0XHRcdCVsdVxuIiwgICAgICAgIHByZWZpeCwgQklUKGR3b3JkLCAz MSkpOwogCXByaW50ZigiJXMgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRcdFx0JXNcbiIsICAgICAg ICAgIHByZWZpeCwgQklUKGR3b3JkLCAzMCkgPyAiVHJhbnNjb2RlciBCIiA6ICJUcmFuc2NvZGVy IEEiKTsKIAlwcmludGYoIiVzIFBvcnRfV2lkdGhfU2VsZWN0aW9uXHRcdFx0XHRbMHglbHhdICVz XG4iLCBwcmVmaXgsIEJJVFMoZHdvcmQsIDIxLCAxOSksCkBAIC0xODQxLDcgKzE4NjUsNyBAQCBz dGF0aWMgdm9pZCBkdW1wX2hkbWlfcG9ydF9jdHJsKGludCBwb3J0KQogCQlwb3J0X2N0cmwgPSBk aXNwX3JlZ19iYXNlICsgSERNSV9DVExfQiArIChwb3J0IC0gUE9SVF9CKSAqIDB4MTA7CiAJfQog Ci0JZHdvcmQgPSBJTlJFRyhwb3J0X2N0cmwpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCBwb3J0X2N0cmwpOwogCXByaW50ZigiJXMgSERNSV9FbmFibGVcdFx0XHRcdFx0JXVcbiIs ICAgICAgICAgICAgICAgICBwcmVmaXgsICEhKGR3b3JkICYgU0RWT19FTkFCTEUpKTsKIAlwcmlu dGYoIiVzIFRyYW5zY29kZXJfU2VsZWN0XHRcdFx0XHQlc1xuIiwgICAgICAgICAgICAgcHJlZml4 LCBCSVQoZHdvcmQsIDMwKSA/ICJUcmFuc2NvZGVyIEIiIDogIlRyYW5zY29kZXIgQSIpOwogCXBy aW50ZigiJXMgSERDUF9Qb3J0X1NlbGVjdFx0XHRcdFx0JWx1XG4iLCAgICAgICAgICAgICBwcmVm aXgsIEJJVChkd29yZCwgNSkpOwpAQCAtMjAyOSw3ICsyMDUzLDcgQEAgc3RhdGljIHZvaWQgZHVt cF9kZGlfYnVmX2N0bChpbnQgcG9ydCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAotCWR3b3JkID0g SU5SRUcoRERJX0JVRl9DVExfQSArIChwb3J0IC0gUE9SVF9BKSAqIDB4MTAwKTsKKwlkd29yZCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgRERJX0JVRl9DVExfQSArIChwb3J0IC0gUE9SVF9BKSAq IDB4MTAwKTsKIAlwcmludGYoIkRESSAlYyBCdWZmZXIgY29udHJvbFxuIiwgJ0EnICsgcG9ydCAt IFBPUlRfQSk7CiAKIAlwcmludGYoIlx0RFAgcG9ydCB3aWR0aFx0XHRcdFx0XHRbMHglbHhdICVz XG4iLCBCSVRTKGR3b3JkLCAzLCAxKSwKQEAgLTIwNDEsNyArMjA2NSw4IEBAIHN0YXRpYyB2b2lk IGR1bXBfZGRpX2Z1bmNfY3RsKGludCBwaXBlKQogewogCXVpbnQzMl90IGR3b3JkOwogCi0JZHdv cmQgPSBJTlJFRyhQSVBFX0RESV9GVU5DX0NUTF9BICsgKHBpcGUgLSBQSVBFX0EpICogMHgxMDAw KTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgUElQRV9ERElfRlVOQ19DVExfQSAr IChwaXBlIC0gUElQRV9BKSAqCisJCSAgICAgIDB4MTAwMCk7CiAJcHJpbnRmKCJQaXBlICVjIERE SSBGdW5jdGlvbiBDb250cm9sXG4iLCAnQScgKyBwaXBlIC0gUElQRV9BKTsKIAogCXByaW50Zigi XHRCSVRTIHBlciBjb2xvclx0XHRcdFx0XHRbMHglbHhdICVzXG4iLCAgICBCSVRTKGR3b3JkLCAy MiwgMjApLApAQCAtMjA1OCw3ICsyMDgzLDggQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfY29ubmVj dF9saXN0X2VudHJ5X2xlbmd0aChpbnQgdHJhbnNjb2RlcikKIAl1aW50MzJfdCBkd29yZDsKIAlj aGFyIHByZWZpeFtNQVhfUFJFRklYX1NJWkVdOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jh c2UgKyBBVURfVENBX1BJTl9QSVBFX0NPTk5fRU5UUllfTE5HVEggKyAodHJhbnNjb2RlciAtIFRS QU5TQ09ERVJfQSkgKiAweDEwMCk7CisJZHdvcmQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGF1 ZF9yZWdfYmFzZSArCisJCSAgICAgIEFVRF9UQ0FfUElOX1BJUEVfQ09OTl9FTlRSWV9MTkdUSCAr ICh0cmFuc2NvZGVyIC0gVFJBTlNDT0RFUl9BKSAqIDB4MTAwKTsKIAlzcHJpbnRmKHByZWZpeCwg IkFVRF9UQyVjX1BJTl9QSVBFX0NPTk5fRU5UUllfTE5HVEgiLCAnQScgKyB0cmFuc2NvZGVyIC0g VFJBTlNDT0RFUl9BKTsKIAogCXByaW50ZigiJXMgIENvbm5lY3RfTGlzdF9MZW5ndGhcdCVsdVxu IiwgcHJlZml4LCBCSVRTKGR3b3JkLCA2LCAwKSk7CkBAIC0yMDcxLDcgKzIwOTcsNyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2F1ZF9jb25uZWN0X3NlbGVjdF9jdHJsKHZvaWQpCiB7CiAJdWludDMyX3Qg ZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QSVBFX0NPTk5fU0VM X0NUUkwpOworCWR3b3JkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBB VURfUElQRV9DT05OX1NFTF9DVFJMKTsKIAlwcmludGYoIkFVRF9QSVBFX0NPTk5fU0VMX0NUUkwg IENvbm5lY3Rpb25fc2VsZWN0X1BvcnRfQlx0JSNseFxuIiwgQklUUyhkd29yZCwgIDcsICAwKSk7 CiAJcHJpbnRmKCJBVURfUElQRV9DT05OX1NFTF9DVFJMICBDb25uZWN0aW9uX3NlbGVjdF9Qb3J0 X0NcdCUjbHhcbiIsIEJJVFMoZHdvcmQsIDE1LCAgOCkpOwogCXByaW50ZigiQVVEX1BJUEVfQ09O Tl9TRUxfQ1RSTCAgQ29ubmVjdGlvbl9zZWxlY3RfUG9ydF9EXHQlI2x4XG4iLCBCSVRTKGR3b3Jk LCAyMywgMTYpKTsKQEAgLTIwODIsNyArMjEwOCw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Rp cF9lbGRfY3RybF9zdChpbnQgdHJhbnNjb2RlcikKIAl1aW50MzJfdCBkd29yZDsKIAlpbnQgb2Zm c2V0ID0gKHRyYW5zY29kZXIgLSBUUkFOU0NPREVSX0EpICogMHgxMDA7CiAKLQlkd29yZCA9IElO UkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsgb2Zmc2V0KTsKKwlk d29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9ESVBf RUxEX0NUUkxfU1QgKworCQkgICAgICBvZmZzZXQpOwogCXByaW50ZigiQXVkaW8gRElQIGFuZCBF TEQgY29udHJvbCBzdGF0ZSBmb3IgVHJhbnNjb2RlciAlY1xuIiwgICdBJyArIHRyYW5zY29kZXIg LSBUUkFOU0NPREVSX0EpOwogCiAJcHJpbnRmKCJcdEVMRF9BQ0tcdFx0XHRcdFx0XHQlbHVcbiIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKGR3b3JkLCA0KSk7CkBAIC0yMTAy LDcgKzIxMjksNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9oZG1pX2ZpZm9fc3RhdHVzKHZvaWQp CiB7CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFV RF9IRE1JX0ZJRk9fU1RBVFVTKTsKKwlkd29yZCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgYXVk X3JlZ19iYXNlICsgQVVEX0hETUlfRklGT19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlfRklG T19TVEFUVVMgIEZ1bmN0aW9uX1Jlc2V0XHRcdFx0JWx1XG4iLCAgICAgICAgICAgICAgICBCSVQo ZHdvcmQsIDI0KSk7CiAJcHJpbnRmKCJBVURfSERNSV9GSUZPX1NUQVRVUyAgQ29udl8xX0NEQ0xL L0RPVENMS19GSUZPX092ZXJydW5cdCVsdVxuIiwgIEJJVChkd29yZCwgMjYpKTsKIAlwcmludGYo IkFVRF9IRE1JX0ZJRk9fU1RBVFVTICBDb252XzFfQ0RDTEsvRE9UQ0xLX0ZJRk9fVW5kZXJydW5c dCVsdVxuIiwgQklUKGR3b3JkLCAyNykpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfYmFja2xp Z2h0LmMgYi90b29scy9pbnRlbF9iYWNrbGlnaHQuYwppbmRleCBlNDg1MGU4OC4uODVkMDk5ZDcg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCisrKyBiL3Rvb2xzL2ludGVsX2Jh Y2tsaWdodC5jCkBAIC00Miw4ICs0Miw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn dikKIAogCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgLTEp OwogCi0JY3VycmVudCA9IElOUkVHKEJMQ19QV01fQ1BVX0NUTCkgJiBCQUNLTElHSFRfRFVUWV9D WUNMRV9NQVNLOwotCW1heCA9IElOUkVHKEJMQ19QV01fUENIX0NUTDIpID4+IDE2OworCWN1cnJl bnQgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCkgJiBCQUNLTElHSFRf RFVUWV9DWUNMRV9NQVNLOworCW1heCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgQkxDX1BXTV9Q Q0hfQ1RMMikgPj4gMTY7CiAKIAlwcmludGYgKCJjdXJyZW50IGJhY2tsaWdodCB2YWx1ZTogJWQl JVxuIiwgY3VycmVudCAqIDEwMCAvIG1heCk7CiAKQEAgLTUxLDkgKzUxLDkgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCQl1aW50MzJfdCB2ID0gYXRvaSAoYXJndlsxXSkgKiBt YXggLyAxMDA7CiAJCWlmICh2ID4gbWF4KQogCQkJdiA9IG1heDsKLQkJT1VUUkVHKEJMQ19QV01f Q1BVX0NUTCwKLQkJICAgICAgIChJTlJFRyhCTENfUFdNX0NQVV9DVEwpICZ+IEJBQ0tMSUdIVF9E VVRZX0NZQ0xFX01BU0spIHwgdik7Ci0JCSh2b2lkKSBJTlJFRyhCTENfUFdNX0NQVV9DVEwpOwor CQlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX0NQVV9DVEwsCisJCSAgICAgICAoSU5S RUcoaWd0X2dsb2JhbF9tbWlvLCBCTENfUFdNX0NQVV9DVEwpICYgfkJBQ0tMSUdIVF9EVVRZX0NZ Q0xFX01BU0spIHwgdik7CisJCSh2b2lkKUlOUkVHKGlndF9nbG9iYWxfbW1pbywgQkxDX1BXTV9D UFVfQ1RMKTsKIAkJcHJpbnRmICgic2V0IGJhY2tsaWdodCB0byAlZCUlXG4iLCB2ICogMTAwIC8g bWF4KTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMgYi90 b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jCmluZGV4IDUxZjViOWE1Li5lMTA5NGQzOSAxMDA2 NDQKLS0tIGEvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYworKysgYi90b29scy9pbnRlbF9k aXNwbGF5X3BvbGxlci5jCkBAIC03MSwyMiArNzEsMjIgQEAgc3RhdGljIHZvaWQgc2lnaGFuZGxl cihpbnQgeCkKIAogc3RhdGljIHVpbnQxNl90IHJlYWRfcmVnXzE2KHVpbnQzMl90IHJlZykKIHsK LQlyZXR1cm4gSU5SRUcxNih2bHZfb2Zmc2V0ICsgcmVnKTsKKwlyZXR1cm4gSU5SRUcxNihpZ3Rf Z2xvYmFsX21taW8sIHZsdl9vZmZzZXQgKyByZWcpOwogfQogCiBzdGF0aWMgdWludDMyX3QgcmVh ZF9yZWcodWludDMyX3QgcmVnKQogewotCXJldHVybiBJTlJFRyh2bHZfb2Zmc2V0ICsgcmVnKTsK KwlyZXR1cm4gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCB2bHZfb2Zmc2V0ICsgcmVnKTsKIH0KIAog c3RhdGljIHZvaWQgd3JpdGVfcmVnXzE2KHVpbnQzMl90IHJlZywgdWludDE2X3QgdmFsKQogewot CU9VVFJFRzE2KHZsdl9vZmZzZXQgKyByZWcsIHZhbCk7CisJT1VUUkVHMTYoaWd0X2dsb2JhbF9t bWlvLCB2bHZfb2Zmc2V0ICsgcmVnLCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCB3cml0ZV9yZWco dWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0JT1VUUkVHKHZsdl9vZmZzZXQgKyByZWcs IHZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgdmx2X29mZnNldCArIHJlZywgdmFsKTsK IH0KIAogc3RhdGljIGNoYXIgcGlwZV9uYW1lKGludCBwaXBlKQpkaWZmIC0tZ2l0IGEvdG9vbHMv aW50ZWxfZ3B1X3RpbWUuYyBiL3Rvb2xzL2ludGVsX2dwdV90aW1lLmMKaW5kZXggNGVkNjQzMGUu LmQ5MGI4MTZhIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9ncHVfdGltZS5jCisrKyBiL3Rvb2xz L2ludGVsX2dwdV90aW1lLmMKQEAgLTg2LDggKzg2LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAl3aGlsZSAoIWdvZGRvKSB7CiAJCXVpbnQzMl90IHJpbmdfaGVhZCwgcmlu Z190YWlsOwogCi0JCXJpbmdfaGVhZCA9IElOUkVHKExQX1JJTkcgKyBSSU5HX0hFQUQpICYgSEVB RF9BRERSOwotCQlyaW5nX3RhaWwgPSBJTlJFRyhMUF9SSU5HICsgUklOR19UQUlMKSAmIFRBSUxf QUREUjsKKwkJcmluZ19oZWFkID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBMUF9SSU5HICsgUklO R19IRUFEKSAmCisJCQkgICAgSEVBRF9BRERSOworCQlyaW5nX3RhaWwgPSBJTlJFRyhpZ3RfZ2xv YmFsX21taW8sIExQX1JJTkcgKyBSSU5HX1RBSUwpICYKKwkJCSAgICBUQUlMX0FERFI7CiAKIAkJ aWYgKHJpbmdfdGFpbCA9PSByaW5nX2hlYWQpCiAJCQlyaW5nX2lkbGUrKzsKZGlmZiAtLWdpdCBh L3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYyBiL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMuYwppbmRl eCAyZWY1ZDRmZC4uNjg5ZjVmYWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2luZm9mcmFtZXMu YworKysgYi90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKQEAgLTMzNywyMCArMzM3LDIwIEBAIHN0 YXRpYyB2b2lkIGxvYWRfaW5mb2ZyYW1lKFRyYW5zY29kZXIgdHJhbnNjb2RlciwgRGlwSW5mb0Zy YW1lICpmcmFtZSwKIAl1aW50MzJfdCBjdGxfdmFsOwogCXVpbnQzMl90IGk7CiAKLQljdGxfdmFs ID0gSU5SRUcoY3RsX3JlZyk7CisJY3RsX3ZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgY3Rs X3JlZyk7CiAKIAljdGxfdmFsICY9IH5ESVBfQ1RMX0JVRkZFUl9JTkRFWDsKIAljdGxfdmFsIHw9 IHR5cGUgPDwgMTk7Ci0JT1VUUkVHKGN0bF9yZWcsIGN0bF92YWwpOwotCWN0bF92YWwgPSBJTlJF RyhjdGxfcmVnKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnLCBjdGxfdmFsKTsK KwljdGxfdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnKTsKIAogCWN0bF92YWwg Jj0gfkRJUF9DVExfQUNDRVNTX0FERFI7Ci0JT1VUUkVHKGN0bF9yZWcsIGN0bF92YWwpOworCU9V VFJFRyhpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcsIGN0bF92YWwpOwogCiAJZm9yIChpID0gMDsg aSA8IDE2OyBpKyspIHsKLQkJY3RsX3ZhbCA9IElOUkVHKGN0bF9yZWcpOworCQljdGxfdmFsID0g SU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnKTsKIAkJYXNzZXJ0KChjdGxfdmFsICYgRElQ X0NUTF9BQ0NFU1NfQUREUikgPT0gaSk7Ci0JCWZyYW1lLT5kYXRhMzJbaV0gPSBJTlJFRyhkYXRh X3JlZyk7CisJCWZyYW1lLT5kYXRhMzJbaV0gPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIGRhdGFf cmVnKTsKIAl9CiB9CiAKQEAgLTM4NSw3ICszODUsNyBAQCBzdGF0aWMgdm9pZCBpbmZvZnJhbWVf Zml4X2NoZWNrc3VtKERpcEluZm9GcmFtZSAqZnJhbWUpCiBzdGF0aWMgdm9pZCBkdW1wX3BvcnRf aW5mbyhpbnQgaGRtaV9wb3J0X2luZGV4KQogewogCVJlZ2lzdGVyIHBvcnQgPSBnZXRfaGRtaV9w b3J0KGhkbWlfcG9ydF9pbmRleCk7Ci0JdWludDMyX3QgdmFsID0gSU5SRUcocG9ydCk7CisJdWlu dDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBwb3J0KTsKIAlUcmFuc2NvZGVyIHRy YW5zY29kZXI7CiAKIAlwcmludGYoIlxuUG9ydCAlczpcbiIsIGhkbWlfcG9ydF9uYW1lc1toZG1p X3BvcnRfaW5kZXhdKTsKQEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F2aV9p bmZvKFRyYW5zY29kZXIgdHJhbnNjb2RlcikKIAlEaXBJbmZvRnJhbWUgZnJhbWU7CiAKIAlsb2Fk X2luZm9mcmFtZSh0cmFuc2NvZGVyLCAmZnJhbWUsIERJUF9BVkkpOwotCXZhbCA9IElOUkVHKHJl Zyk7CisJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCiAJcHJpbnRmKCJBVkkg SW5mb0ZyYW1lOlxuIik7CiAKQEAgLTUzNyw3ICs1MzcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX3Zl bmRvcl9pbmZvKFRyYW5zY29kZXIgdHJhbnNjb2RlcikKIAlEaXBJbmZvRnJhbWUgZnJhbWU7CiAK IAlsb2FkX2luZm9mcmFtZSh0cmFuc2NvZGVyLCAmZnJhbWUsIERJUF9WRU5ET1IpOwotCXZhbCA9 IElOUkVHKHJlZyk7CisJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCiAJcHJp bnRmKCJWZW5kb3IgSW5mb0ZyYW1lOlxuIik7CiAKQEAgLTU3Miw3ICs1NzIsNyBAQCBzdGF0aWMg dm9pZCBkdW1wX2dhbXV0X2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQogCURpcEluZm9GcmFt ZSBmcmFtZTsKIAogCWxvYWRfaW5mb2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwgRElQX0dBTVVU KTsKLQl2YWwgPSBJTlJFRyhyZWcpOworCXZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVn KTsKIAogCXByaW50ZigiR2FtdXQgSW5mb0ZyYW1lOlxuIik7CiAKQEAgLTYwMCw3ICs2MDAsNyBA QCBzdGF0aWMgdm9pZCBkdW1wX3NwZF9pbmZvKFRyYW5zY29kZXIgdHJhbnNjb2RlcikKIAljaGFy IGRlc2NyaXB0aW9uWzE3XTsKIAogCWxvYWRfaW5mb2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwg RElQX1NQRCk7Ci0JdmFsID0gSU5SRUcocmVnKTsKKwl2YWwgPSBJTlJFRyhpZ3RfZ2xvYmFsX21t aW8sIHJlZyk7CiAKIAlwcmludGYoIlNQRCBJbmZvRnJhbWU6XG4iKTsKIApAQCAtNjM1LDcgKzYz NSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfc3BkX2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQog c3RhdGljIHZvaWQgZHVtcF90cmFuc2NvZGVyX2luZm8oVHJhbnNjb2RlciB0cmFuc2NvZGVyKQog ewogCVJlZ2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3JlZyh0cmFuc2NvZGVyKTsKLQl1aW50MzJf dCB2YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgcmVnKTsKIAogCWlmIChnZW4gPT0gNCkgewogCQlwcmludGYoIlxuRElQIGluZm9ybWF0aW9u OlxuIik7CkBAIC02OTgsMzcgKzY5OCwzNyBAQCBzdGF0aWMgdm9pZCB3cml0ZV9pbmZvZnJhbWUo VHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBlIHR5cGUsCiAJdWludDMyX3QgY3RsX3ZhbDsK IAl1bnNpZ25lZCBpbnQgaTsKIAotCWN0bF92YWwgPSBJTlJFRyhjdGxfcmVnKTsKKwljdGxfdmFs ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnKTsKIAljdGxfdmFsICY9IH5ESVBfQ1RM X0JVRkZFUl9JTkRFWDsKIAljdGxfdmFsIHw9ICh0eXBlIDw8IDE5KTsKIAljdGxfdmFsICY9IH5E SVBfQ1RMX0FDQ0VTU19BRERSOwotCU9VVFJFRyhjdGxfcmVnLCBjdGxfdmFsKTsKKwlPVVRSRUco aWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnLCBjdGxfdmFsKTsKIAogCWZvciAoaSA9IDA7IGkgPCA4 OyBpKyspIHsKLQkJY3RsX3ZhbCA9IElOUkVHKGN0bF9yZWcpOworCQljdGxfdmFsID0gSU5SRUco aWd0X2dsb2JhbF9tbWlvLCBjdGxfcmVnKTsKIAkJYXNzZXJ0KChjdGxfdmFsICYgRElQX0NUTF9B Q0NFU1NfQUREUikgPT0gaSk7Ci0JCU9VVFJFRyhkYXRhX3JlZywgZnJhbWUtPmRhdGEzMltpXSk7 CisJCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIGRhdGFfcmVnLCBmcmFtZS0+ZGF0YTMyW2ldKTsK IAl9CiB9CiAKIHN0YXRpYyB2b2lkIGRpc2FibGVfaW5mb2ZyYW1lKFRyYW5zY29kZXIgdHJhbnNj b2RlciwgRGlwVHlwZSB0eXBlKQogewogCVJlZ2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3JlZyh0 cmFuc2NvZGVyKTsKLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAlpZiAoZ2VuICE9IDQgJiYgdHlwZSA9PSBE SVBfQVZJKQogCQl2YWwgJj0gfkRJUF9DVExfRU5BQkxFOwogCXZhbCAmPSB+KDEgPDwgKDIxICsg dHlwZSkpOwotCU9VVFJFRyhyZWcsIHZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVn LCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCBlbmFibGVfaW5mb2ZyYW1lKFRyYW5zY29kZXIgdHJh bnNjb2RlciwgRGlwVHlwZSB0eXBlKQogewogCVJlZ2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3Jl Zyh0cmFuc2NvZGVyKTsKLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZh bCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAlpZiAoZ2VuICE9IDQgJiYgdHlwZSA9 PSBESVBfQVZJKQogCQl2YWwgfD0gRElQX0NUTF9FTkFCTEU7CiAJdmFsIHw9ICgxIDw8ICgyMSAr IHR5cGUpKTsKLQlPVVRSRUcocmVnLCB2YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sIHJl ZywgdmFsKTsKIH0KIAogc3RhdGljIGludCBwYXJzZV9pbmZvZnJhbWVfb3B0aW9uX3UoY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqcywKQEAgLTc4Nyw3ICs3ODcsNyBAQCBzdGF0aWMgdm9p ZCBjaGFuZ2VfYXZpX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIGNoYXIgKmNvbW1h bmRzKQogCWNoYXIgKmN1cnJlbnQgPSBjb21tYW5kczsKIAogCWxvYWRfaW5mb2ZyYW1lKHRyYW5z Y29kZXIsICZmcmFtZSwgRElQX0FWSSk7Ci0JdmFsID0gSU5SRUcocmVnKTsKKwl2YWwgPSBJTlJF RyhpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAKIAl3aGlsZSAoMSkgewogCQlyYyA9IHNzY2FuZihj dXJyZW50LCAiJTMxcyVuIiwgb3B0aW9uLCAmcmVhZCk7CkBAIC04NTYsNyArODU2LDcgQEAgc3Rh dGljIHZvaWQgY2hhbmdlX2F2aV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBjaGFy ICpjb21tYW5kcykKIAogCXZhbCAmPSB+RElQX0NUTF9GUkVRVUVOQ1k7CiAJdmFsIHw9IERJUF9D VExfRlJFUV9FVkVSWTsKLQlPVVRSRUcocmVnLCB2YWwpOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21t aW8sIHJlZywgdmFsKTsKIAogCWZyYW1lLmF2aS5oZWFkZXIudHlwZSA9IEFWSV9JTkZPRlJBTUVf VFlQRTsKIAlmcmFtZS5hdmkuaGVhZGVyLnZlcnNpb24gPSBBVklfSU5GT0ZSQU1FX1ZFUlNJT047 CkBAIC04ODgsNyArODg4LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlX3NwZF9pbmZvZnJhbWUoVHJh bnNjb2RlciB0cmFuc2NvZGVyLCBjaGFyICpjb21tYW5kcykKIAljaGFyICpjdXJyZW50ID0gY29t bWFuZHM7CiAKIAlsb2FkX2luZm9mcmFtZSh0cmFuc2NvZGVyLCAmZnJhbWUsIERJUF9TUEQpOwot CXZhbCA9IElOUkVHKHJlZyk7CisJdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcpOwog CiAJd2hpbGUgKDEpIHsKIAkJcmMgPSBzc2NhbmYoY3VycmVudCwgIiUxNXMlbiIsIG9wdGlvbiwg JnJlYWQpOwpAQCAtOTE3LDcgKzkxNyw3IEBAIHN0YXRpYyB2b2lkIGNoYW5nZV9zcGRfaW5mb2Zy YW1lKFRyYW5zY29kZXIgdHJhbnNjb2RlciwgY2hhciAqY29tbWFuZHMpCiAKIAl2YWwgJj0gfkRJ UF9DVExfRlJFUVVFTkNZOwogCXZhbCB8PSBESVBfQ1RMX0ZSRVFfRVZFUllfT1RIRVI7Ci0JT1VU UkVHKHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiAKIAlm cmFtZS5zcGQuaGVhZGVyLnR5cGUgPSBTUERfSU5GT0ZSQU1FX1RZUEU7CiAJZnJhbWUuc3BkLmhl YWRlci52ZXJzaW9uID0gU1BEX0lORk9GUkFNRV9WRVJTSU9OOwpAQCAtOTQ2LDcgKzk0Niw3IEBA IHN0YXRpYyB2b2lkIGNoYW5nZV9pbmZvZnJhbWVfZnJlcXVlbmN5KFRyYW5zY29kZXIgdHJhbnNj b2RlciwgRGlwVHlwZSB0eXBlLAogCQkJCSAgICAgICBEaXBGcmVxdWVuY3kgZnJlcXVlbmN5KQog ewogCVJlZ2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3JlZyh0cmFuc2NvZGVyKTsKLQl1aW50MzJf dCB2YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1p bywgcmVnKTsKIAogCWlmICh0eXBlID09IERJUF9BVkkgJiYgZnJlcXVlbmN5ICE9IERJUF9GUkVR X0VWRVJZX1ZTWU5DKSB7CiAJCXByaW50ZigiRXJyb3I6IEFWSSBpbmZvZnJhbWUgbXVzdCBiZSBz ZW50IGV2ZXJ5IFZTeW5jIVxuIik7CkBAIC05NTUsMzcgKzk1NSwzNyBAQCBzdGF0aWMgdm9pZCBj aGFuZ2VfaW5mb2ZyYW1lX2ZyZXF1ZW5jeShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIERpcFR5cGUg dHlwZSwKIAogCXZhbCAmPSB+RElQX0NUTF9GUkVRVUVOQ1k7CiAJdmFsIHw9IChmcmVxdWVuY3kg PDwgMTYpOwotCU9VVFJFRyhyZWcsIHZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVn LCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCBkaXNhYmxlX2RpcChUcmFuc2NvZGVyIHRyYW5zY29k ZXIpCiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVp bnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCByZWcpOwogCXZhbCAmPSB+RElQX0NUTF9FTkFCTEU7Ci0JT1VUUkVHKHJlZywgdmFs KTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lk IGVuYWJsZV9kaXAoVHJhbnNjb2RlciB0cmFuc2NvZGVyKQogewogCVJlZ2lzdGVyIHJlZyA9IGdl dF9kaXBfY3RsX3JlZyh0cmFuc2NvZGVyKTsKLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhyZWcpOwor CXVpbnQzMl90IHZhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAl2YWwgfD0gRElQ X0NUTF9FTkFCTEU7Ci0JT1VUUkVHKHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlv LCByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpc2FibGVfaGRtaV9wb3J0KFJlZ2lzdGVy IHJlZykKIHsKLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9IElO UkVHKGlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAl2YWwgJj0gfkhETUlfUE9SVF9FTkFCTEU7Ci0J T1VUUkVHKHJlZywgdmFsKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9 CiAKIHN0YXRpYyB2b2lkIGVuYWJsZV9oZG1pX3BvcnQoUmVnaXN0ZXIgcmVnKQogewotCXVpbnQz Ml90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2JhbF9t bWlvLCByZWcpOwogCXZhbCB8PSBIRE1JX1BPUlRfRU5BQkxFOwotCU9VVFJFRyhyZWcsIHZhbCk7 CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgcmVnLCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCBw cmludF91c2FnZSh2b2lkKQpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfbGlkLmMgYi90b29scy9p bnRlbF9saWQuYwppbmRleCBmNDU3NTZlMi4uYTQxMzJkNTYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2lu dGVsX2xpZC5jCisrKyBiL3Rvb2xzL2ludGVsX2xpZC5jCkBAIC0xMjIsNyArMTIyLDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50 ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgLTEpOwogCiAJd2hpbGUgKDEpIHsKLQkJc3dmMTQgPSBJTlJF RyhTV0YxNCk7CisJCXN3ZjE0ID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBTV0YxNCk7CiAKIAkJ cHJpbnRmKCJJbnRlbCBMVkRTIExpZCBzdGF0dXM6XG4iKTsKIAkJcHJpbnRmKCJcdFNXRjE0KDB4 JXgpIDogJXNcbiIsIHN3ZjE0LApkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVy LmMgYi90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYwppbmRleCAxMzdlZjYxYS4uMjY4NDNkN2Mg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRlci5jCisrKyBiL3Rvb2xzL2ludGVs X3BhbmVsX2ZpdHRlci5jCkBAIC04NCwxMiArODQsMTIgQEAgc3RhdGljIHZvaWQgcmVhZF9waXBl X2luZm8oaW50IGludGVsX3BpcGUsIHN0cnVjdCBwaXBlX2luZm8gKmluZm8pCiB7CiAJdWludDMy X3QgY29uZiwgdnRvdGFsLCBodG90YWwsIHNyYywgY3RybDEsIHdpbl9zejsKIAotCWNvbmYgICA9 IElOUkVHKFBJUEVDT05GW2ludGVsX3BpcGVdKTsKLQlodG90YWwgPSBJTlJFRyhIVE9UQUxbaW50 ZWxfcGlwZV0pOwotCXZ0b3RhbCA9IElOUkVHKFZUT1RBTFtpbnRlbF9waXBlXSk7Ci0Jc3JjICAg ID0gSU5SRUcoUElQRVNSQ1tpbnRlbF9waXBlXSk7Ci0JY3RybDEgID0gSU5SRUcoUEZfQ1RSTDFb aW50ZWxfcGlwZV0pOwotCXdpbl9zeiA9IElOUkVHKFBGX1dJTl9TWltpbnRlbF9waXBlXSk7CisJ Y29uZiAgID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBQSVBFQ09ORltpbnRlbF9waXBlXSk7CisJ aHRvdGFsID0gSU5SRUcoaWd0X2dsb2JhbF9tbWlvLCBIVE9UQUxbaW50ZWxfcGlwZV0pOworCXZ0 b3RhbCA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgVlRPVEFMW2ludGVsX3BpcGVdKTsKKwlzcmMg ICAgPSBJTlJFRyhpZ3RfZ2xvYmFsX21taW8sIFBJUEVTUkNbaW50ZWxfcGlwZV0pOworCWN0cmwx ICA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgUEZfQ1RSTDFbaW50ZWxfcGlwZV0pOworCXdpbl9z eiA9IElOUkVHKGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1NaW2ludGVsX3BpcGVdKTsKIAogCWlu Zm8tPmVuYWJsZWQgPSAoY29uZiAmIFBJUEVDT05GX0VOQUJMRSkgPyB0cnVlIDogZmFsc2U7CiAJ aW5mby0+dG90X3dpZHRoID0gKGh0b3RhbCAmIEhUT1RBTF9BQ1RJVkVfTUFTSykgKyAxOwpAQCAt MjMyLDI0ICsyMzIsMjQgQEAgc3RhdGljIGludCBjaGFuZ2Vfc2NyZWVuX3NpemUoaW50IGludGVs X3BpcGUsIGludCB4LCBpbnQgeSkKIAkJCWFzc2VydCgwKTsKIAkJfQogCX0KLQlPVVRSRUcoUEZf Q1RSTDFbaW50ZWxfcGlwZV0sIGN0cmwxX3ZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywg UEZfQ1RSTDFbaW50ZWxfcGlwZV0sIGN0cmwxX3ZhbCk7CiAKIAl3aW5fcG9zX3ZhbCA9IHBvc194 IDw8IDE2OwogCXdpbl9wb3NfdmFsIHw9IHBvc195OwotCU9VVFJFRyhQRl9XSU5fUE9TW2ludGVs X3BpcGVdLCB3aW5fcG9zX3ZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1BP U1tpbnRlbF9waXBlXSwgd2luX3Bvc192YWwpOwogCiAJd2luX3N6X3ZhbCA9IGRzdF93aWR0aCA8 PCAxNjsKIAl3aW5fc3pfdmFsIHw9IGRzdF9oZWlnaHQ7Ci0JT1VUUkVHKFBGX1dJTl9TWltpbnRl bF9waXBlXSwgd2luX3N6X3ZhbCk7CisJT1VUUkVHKGlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1Na W2ludGVsX3BpcGVdLCB3aW5fc3pfdmFsKTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50 IGRpc2FibGVfcGFuZWxfZml0dGVyKGludCBpbnRlbF9waXBlKQogewotCU9VVFJFRyhQRl9DVFJM MVtpbnRlbF9waXBlXSwgMCk7Ci0JT1VUUkVHKFBGX1dJTl9QT1NbaW50ZWxfcGlwZV0sIDApOwot CU9VVFJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0sIDApOworCU9VVFJFRyhpZ3RfZ2xvYmFsX21t aW8sIFBGX0NUUkwxW2ludGVsX3BpcGVdLCAwKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBQ Rl9XSU5fUE9TW2ludGVsX3BpcGVdLCAwKTsKKwlPVVRSRUcoaWd0X2dsb2JhbF9tbWlvLCBQRl9X SU5fU1pbaW50ZWxfcGlwZV0sIDApOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS90b29s cy9pbnRlbF9yZWcuYyBiL3Rvb2xzL2ludGVsX3JlZy5jCmluZGV4IDk0N2VjMzc4Li4yNDc1MzZl NyAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfcmVnLmMKKysrIGIvdG9vbHMvaW50ZWxfcmVnLmMK QEAgLTM2NCw3ICszNjQsOCBAQCBzdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXIoc3RydWN0IGNvbmZp ZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcsIHVpbnQzMl90ICp2YWxwKQogCQlpZiAocmVnLT5l bmdpbmUpCiAJCQl2YWwgPSByZWdpc3Rlcl9zcm0oY29uZmlnLCByZWcsIE5VTEwpOwogCQllbHNl Ci0JCQl2YWwgPSBJTlJFRyhyZWctPm1taW9fb2Zmc2V0ICsgcmVnLT5hZGRyKTsKKwkJCXZhbCA9 IElOUkVHKGlndF9nbG9iYWxfbW1pbywKKwkJCQkgICAgcmVnLT5tbWlvX29mZnNldCArIHJlZy0+ YWRkcik7CiAJCWJyZWFrOwogCWNhc2UgUE9SVF9QT1JUSU9fVkdBOgogCQlpb3BsKDMpOwpAQCAt MzcyLDcgKzM3Myw3IEBAIHN0YXRpYyBpbnQgcmVhZF9yZWdpc3RlcihzdHJ1Y3QgY29uZmlnICpj b25maWcsIHN0cnVjdCByZWcgKnJlZywgdWludDMyX3QgKnZhbHApCiAJCWlvcGwoMCk7CiAJCWJy ZWFrOwogCWNhc2UgUE9SVF9NTUlPX1ZHQToKLQkJdmFsID0gSU5SRUc4KHJlZy0+YWRkcik7CisJ CXZhbCA9IElOUkVHOChpZ3RfZ2xvYmFsX21taW8sIHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWNh c2UgUE9SVF9CVU5JVDoKIAljYXNlIFBPUlRfUFVOSVQ6CkBAIC00MjQsNyArNDI1LDggQEAgc3Rh dGljIGludCB3cml0ZV9yZWdpc3RlcihzdHJ1Y3QgY29uZmlnICpjb25maWcsIHN0cnVjdCByZWcg KnJlZywgdWludDMyX3QgdmFsKQogCQlpZiAocmVnLT5lbmdpbmUpIHsKIAkJCXJlZ2lzdGVyX3Ny bShjb25maWcsIHJlZywgJnZhbCk7CiAJCX0gZWxzZSB7Ci0JCQlPVVRSRUcocmVnLT5tbWlvX29m ZnNldCArIHJlZy0+YWRkciwgdmFsKTsKKwkJCU9VVFJFRyhpZ3RfZ2xvYmFsX21taW8sCisJCQkg ICAgICAgcmVnLT5tbWlvX29mZnNldCArIHJlZy0+YWRkciwgdmFsKTsKIAkJfQogCQlicmVhazsK IAljYXNlIFBPUlRfUE9SVElPX1ZHQToKQEAgLTQ0Myw3ICs0NDUsNyBAQCBzdGF0aWMgaW50IHdy aXRlX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50 MzJfdCB2YWwpCiAJCQkJdmFsLCByZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsK IAkJfQotCQlPVVRSRUc4KHJlZy0+YWRkciwgdmFsKTsKKwkJT1VUUkVHOChpZ3RfZ2xvYmFsX21t aW8sIHJlZy0+YWRkciwgdmFsKTsKIAkJYnJlYWs7CiAJY2FzZSBQT1JUX0JVTklUOgogCWNhc2Ug UE9SVF9QVU5JVDoKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3JlZ19jaGVja2VyLmMgYi90b29s cy9pbnRlbF9yZWdfY2hlY2tlci5jCmluZGV4IDkyYTg5YWUwLi4xZDQwY2Q4MiAxMDA2NDQKLS0t IGEvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYworKysgYi90b29scy9pbnRlbF9yZWdfY2hlY2tl ci5jCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBpbnQgZ2VuOwogc3RhdGljIHVpbnQzMl90CiBy ZWFkX2FuZF9wcmludF9yZWcoY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgcmVnKQogewotCXVp bnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoaWd0X2dsb2Jh bF9tbWlvLCByZWcpOwogCiAJcHJpbnRmKCIlcyAoMHgleCk6IDB4JTA4eFxuIiwgbmFtZSwgcmVn LCB2YWwpOwogCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF93YXRlcm1hcmsuYyBiL3Rvb2xzL2lu dGVsX3dhdGVybWFyay5jCmluZGV4IGU3MWMzZDljLi4wMGJkZDEyMCAxMDA2NDQKLS0tIGEvdG9v bHMvaW50ZWxfd2F0ZXJtYXJrLmMKKysrIGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKQEAgLTM4 LDcgKzM4LDcgQEAgc3RhdGljIHVpbnQzMl90IGRldmlkOwogCiBzdGF0aWMgdWludDMyX3QgcmVh ZF9yZWcodWludDMyX3QgYWRkcikKIHsKLQlyZXR1cm4gSU5SRUcoZGlzcGxheV9iYXNlICsgYWRk cik7CisJcmV0dXJuIElOUkVHKGlndF9nbG9iYWxfbW1pbywgZGlzcGxheV9iYXNlICsgYWRkcik7 CiB9CiAKIHN0cnVjdCBnbWNoX3dtIHsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pZ3QtZGV2