From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id E28716E8B1 for ; Fri, 20 Nov 2020 11:32:07 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 20 Nov 2020 12:31:15 +0100 Message-Id: <20201120113131.67971-16-zbigniew.kempczynski@intel.com> In-Reply-To: <20201120113131.67971-1-zbigniew.kempczynski@intel.com> References: <20201120113131.67971-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v10 15/31] tests/api_intel_bb: Modify test to verify intel_bb with allocator 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 Cc: Chris Wilson List-ID: aW50ZWxfYmIgd2FzIGFkb3B0ZWQgdG8gdXNlIGFsbG9jYXRvci4gQ2hhbmdlIHRoZSB0ZXN0IHRv IHZlcmlmeQphZGRyZXNzZXMgaW4gZGlmZmVyZW50IHNjZW5hcmlvcyAtIHdpdGggcmVsb2NhdGlv bnMgYW5kIHdpdGggc29mdHBpbi4KdjI6IHNraXAgYWRkcmVzc2VzIHdoaWNoIGFyZSBiZXlvbmQg YWxsb2NhdG9yIHJhbmdlIGluIGNoZWNrLWNhbm9uaWNhbAoKU2lnbmVkLW9mZi1ieTogWmJpZ25p ZXcgS2VtcGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNjOiBEb21p bmlrIEdyemVnb3J6ZWsgPGRvbWluaWsuZ3J6ZWdvcnpla0BpbnRlbC5jb20+CkNjOiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2FwaV9pbnRl bF9iYi5jIHwgNTYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgNDI2IGluc2VydGlvbnMoKyksIDEzNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS90ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jIGIvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIu YwppbmRleCAwY2IzMTkyYy4uM2Q1OGJlMTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvYXBpX2lu dGVsX2JiLmMKKysrIGIvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYwpAQCAtNDUsNiArNDUsOCBA QAogI2RlZmluZSBDT0xPUl83NwkweDc3CiAjZGVmaW5lIENPTE9SX0NDCTB4Y2MKIAorI2RlZmlu ZSBERUNBTk9OSUNBTChvZmZzZXQpIChvZmZzZXQgJiAoKDF1bGwgPDwgNDgpIC0gMSkpCisKIElH VF9URVNUX0RFU0NSSVBUSU9OKCJpbnRlbF9iYiBBUEkgY2hlY2suIik7CiAKIGVudW0gcmVsb2Nf b2JqZWN0cyB7CkBAIC0xMjMsMjQgKzEyNSwzMyBAQCBzdGF0aWMgdm9pZCBwcmludF9idWYoc3Ry dWN0IGludGVsX2J1ZiAqYnVmLCBjb25zdCBjaGFyICpuYW1lKQogCiAJcHRyID0gZ2VtX21tYXBf X2RldmljZV9jb2hlcmVudChpOTE1LCBidWYtPmhhbmRsZSwgMCwKIAkJCQkJYnVmLT5zdXJmYWNl WzBdLnNpemUsIFBST1RfUkVBRCk7Ci0JaWd0X2RlYnVnKCJbJXNdIEJ1ZiBoYW5kbGU6ICVkLCBz aXplOiAlZCwgdjogMHglMDJ4LCBwcmVzdW1lZF9hZGRyOiAlcFxuIiwKKwlpZ3RfZGVidWcoIlsl c10gQnVmIGhhbmRsZTogJWQsIHNpemU6ICUiIFBSSXU2NAorCQkgICIsIHY6IDB4JTAyeCwgcHJl c3VtZWRfYWRkcjogJXBcbiIsCiAJCSAgbmFtZSwgYnVmLT5oYW5kbGUsIGJ1Zi0+c3VyZmFjZVsw XS5zaXplLCBwdHJbMF0sCiAJCQlmcm9tX3VzZXJfcG9pbnRlcihidWYtPmFkZHIub2Zmc2V0KSk7 CiAJbXVubWFwKHB0ciwgYnVmLT5zdXJmYWNlWzBdLnNpemUpOwogfQogCitzdGF0aWMgdm9pZCBy ZXNldF9iYihzdHJ1Y3QgYnVmX29wcyAqYm9wcykKK3sKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0 X2ZkKGJvcHMpOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCisJaWJiID0gaW50ZWxfYmJfY3Jl YXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaW50ZWxfYmJfcmVzZXQoaWJiLCBmYWxzZSk7CisJaW50 ZWxfYmJfZGVzdHJveShpYmIpOworfQorCiBzdGF0aWMgdm9pZCBzaW1wbGVfYmIoc3RydWN0IGJ1 Zl9vcHMgKmJvcHMsIGJvb2wgdXNlX2NvbnRleHQpCiB7CiAJaW50IGk5MTUgPSBidWZfb3BzX2dl dF9mZChib3BzKTsKIAlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKLQl1aW50MzJfdCBjdHg7CisJdWlu dDMyX3QgY3R4ID0gMDsKIAotCWlmICh1c2VfY29udGV4dCkgeworCWlmICh1c2VfY29udGV4dCkK IAkJZ2VtX3JlcXVpcmVfY29udGV4dHMoaTkxNSk7Ci0JCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0 ZShpOTE1KTsKLQl9CiAKLQlpYmIgPSBpbnRlbF9iYl9jcmVhdGUoaTkxNSwgUEFHRV9TSVpFKTsK KwlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfZnVsbChpOTE1LCBjdHgsIFBBR0VfU0laRSwgSU5URUxf QUxMT0NBVE9SX1NJTVBMRSk7CiAJaWYgKGRlYnVnX2JiKQogCQlpbnRlbF9iYl9zZXRfZGVidWco aWJiLCB0cnVlKTsKIApAQCAtMTU1LDEwICsxNjYsOCBAQCBzdGF0aWMgdm9pZCBzaW1wbGVfYmIo c3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGJvb2wgdXNlX2NvbnRleHQpCiAJaW50ZWxfYmJfcmVzZXQo aWJiLCBmYWxzZSk7CiAJaW50ZWxfYmJfcmVzZXQoaWJiLCB0cnVlKTsKIAotCWludGVsX2JiX291 dChpYmIsIE1JX0JBVENIX0JVRkZFUl9FTkQpOwotCWludGVsX2JiX3B0cl9hbGlnbihpYmIsIDgp OwotCiAJaWYgKHVzZV9jb250ZXh0KSB7CisJCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1 KTsKIAkJaW50ZWxfYmJfZGVzdHJveShpYmIpOwogCQlpYmIgPSBpbnRlbF9iYl9jcmVhdGVfd2l0 aF9jb250ZXh0KGk5MTUsIGN0eCwgUEFHRV9TSVpFKTsKIAkJaW50ZWxfYmJfb3V0KGliYiwgTUlf QkFUQ0hfQlVGRkVSX0VORCk7CkBAIC0xNjYsMTEgKzE3NSwxMCBAQCBzdGF0aWMgdm9pZCBzaW1w bGVfYmIoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGJvb2wgdXNlX2NvbnRleHQpCiAJCWludGVsX2Ji X2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKIAkJCSAgICAgIEk5MTVfRVhFQ19ERUZB VUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLAogCQkJICAgICAgdHJ1ZSk7CisJCWdlbV9jb250ZXh0 X2Rlc3Ryb3koaTkxNSwgY3R4KTsKIAl9CiAKIAlpbnRlbF9iYl9kZXN0cm95KGliYik7Ci0JaWYg KHVzZV9jb250ZXh0KQotCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGN0eCk7CiB9CiAKIC8q CkBAIC0xOTQsMjkgKzIwMiw0MyBAQCBzdGF0aWMgdm9pZCBsb3Rfb2ZfYnVmZmVycyhzdHJ1Y3Qg YnVmX29wcyAqYm9wcykKIAlmb3IgKGkgPSAwOyBpIDwgTlVNX0JVRlM7IGkrKykgewogCQlidWZb aV0gPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIDQwOTYsIDEsIDgsIDAsIEk5MTVfVElMSU5HX05P TkUsCiAJCQkJCSAgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKLQkJaW50ZWxfYmJfYWRkX2ludGVs X2J1ZihpYmIsIGJ1ZltpXSwgZmFsc2UpOworCQlpZiAoaSAlIDIpCisJCQlpbnRlbF9iYl9hZGRf aW50ZWxfYnVmKGliYiwgYnVmW2ldLCBmYWxzZSk7CisJCWVsc2UKKwkJCWludGVsX2JiX2FkZF9p bnRlbF9idWZfd2l0aF9hbGlnbm1lbnQoaWJiLCBidWZbaV0sCisJCQkJCQkJICAgICAgMHg0MDAw LCBmYWxzZSk7CiAJfQogCiAJaW50ZWxfYmJfZXhlYyhpYmIsIGludGVsX2JiX29mZnNldChpYmIp LAogCQkgICAgICBJOTE1X0VYRUNfREVGQVVMVCB8IEk5MTVfRVhFQ19OT19SRUxPQywgdHJ1ZSk7 CiAKLQlpbnRlbF9iYl9kZXN0cm95KGliYik7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgTlVNX0JVRlM7 IGkrKykKIAkJaW50ZWxfYnVmX2Rlc3Ryb3koYnVmW2ldKTsKKworCWludGVsX2JiX2Rlc3Ryb3ko aWJiKTsKIH0KIAogLyoKICAqIE1ha2Ugc3VyZSBpbnRlbC1iYiBzcGFjZSBhbGxvY2F0b3IgY3Vy cmVudGx5IGRvZXNuJ3QgZW50ZXIgNDctNDggYml0CiAgKiBndHQgc2l6ZXMuCiAgKi8KKyNkZWZp bmUgR0VOOF9ISUdIX0FERFJFU1NfQklUIDQ3CitzdGF0aWMgdWludDY0X3QgZ2VuOF9jYW5vbmlj YWxfYWRkcih1aW50NjRfdCBhZGRyZXNzKQoreworCWludCBzaGlmdCA9IDYzIC0gR0VOOF9ISUdI X0FERFJFU1NfQklUOworCisJcmV0dXJuIChpbnQ2NF90KShhZGRyZXNzIDw8IHNoaWZ0KSA+PiBz aGlmdDsKK30KKwogc3RhdGljIHZvaWQgY2hlY2tfY2Fub25pY2FsKHN0cnVjdCBidWZfb3BzICpi b3BzKQogewotCWludCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYm9wcyk7CisJaW50IGk5MTUgPSBi dWZfb3BzX2dldF9mZChib3BzKSwgaTsKIAlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKIAlzdHJ1Y3Qg aW50ZWxfYnVmICpidWY7CiAJdWludDMyX3Qgb2Zmc2V0OwotCXVpbnQ2NF90IGFkZHJlc3M7CisJ LyogVHdpY2Ugc2FtZSBhZGRyZXNzZXMgdG8gdmVyaWZ5IHdpbGwgYmUgdW5yZXNlcnZlZCBpbiBy ZW1vdmUgcGF0aCAqLworCXVpbnQ2NF90IGFkZHJlc3Nlc1tdID0geyAweDgwMDAwMDAwMDAwMCwg MHg4MDAwMDAwMDAwMDAsIDB4NDAwMDAwMDAwMDAwIH07CisJdWludDY0X3QgYWRkcmVzcywgc3Rh cnQsIGVuZDsKIAlib29sIHN1cHBvcnRzXzQ4Yml0OwogCiAJaWJiID0gaW50ZWxfYmJfY3JlYXRl KGk5MTUsIFBBR0VfU0laRSk7CkBAIC0yMjUsMjUgKzI0Nyw0MyBAQCBzdGF0aWMgdm9pZCBjaGVj a19jYW5vbmljYWwoc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCiAJCWludGVsX2JiX2Rlc3Ryb3koaWJi KTsKIAlpZ3RfcmVxdWlyZV9mKHN1cHBvcnRzXzQ4Yml0LCAiV2UgbmVlZCA0OGJpdCBwcGd0dCBm b3IgdGVzdGluZ1xuIik7CiAKLQlhZGRyZXNzID0gMHhjMDAwMDAwMDAwMDA7CiAJaWYgKGRlYnVn X2JiKQogCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsKIAotCW9mZnNldCA9IGludGVs X2JiX2VtaXRfYmJlKGliYik7CisJaW50ZWxfYWxsb2NhdG9yX2dldF9hZGRyZXNzX3JhbmdlKGli Yi0+YWxsb2NhdG9yX2hhbmRsZSwKKwkJCQkJICAmc3RhcnQsICZlbmQpOwogCi0JYnVmID0gaW50 ZWxfYnVmX2NyZWF0ZShib3BzLCA1MTIsIDUxMiwgMzIsIDAsCi0JCQkgICAgICAgSTkxNV9USUxJ TkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShhZGRyZXNzZXMpOyBpKyspIHsKKwkJYWRkcmVzcyA9IGFkZHJlc3Nlc1tpXTsKKworCQlp ZiAoYWRkcmVzcyA8IHN0YXJ0IHx8IGFkZHJlc3MgPj0gZW5kKSB7CisJCQlpZ3RfZGVidWcoIkFk ZHJlc3MgdG9vIGJpZzogJSIgUFJJeDY0CisJCQkJICAiLCBzdGFydDogJSIgUFJJeDY0ICIsIGVu ZDogJSIgUFJJeDY0CisJCQkJICAiLCBza2lwcGluZy4uLlxuIiwKKwkJCQkgIGFkZHJlc3MsIHN0 YXJ0LCBlbmQpOworCQkJY29udGludWU7CisJCX0KIAotCWJ1Zi0+YWRkci5vZmZzZXQgPSBhZGRy ZXNzOwotCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBidWYsIHRydWUpOwotCWludGVsX2Ji X29iamVjdF9zZXRfZmxhZyhpYmIsIGJ1Zi0+aGFuZGxlLCBFWEVDX09CSkVDVF9QSU5ORUQpOwor CQlvZmZzZXQgPSBpbnRlbF9iYl9lbWl0X2JiZShpYmIpOwogCi0JaWd0X2Fzc2VydChidWYtPmFk ZHIub2Zmc2V0ID09IDApOworCQlidWYgPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIDUxMiwgNTEy LCAzMiwgMCwKKwkJCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9O T05FKTsKIAotCWludGVsX2JiX2V4ZWMoaWJiLCBvZmZzZXQsCi0JCSAgICAgIEk5MTVfRVhFQ19E RUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCB0cnVlKTsKKwkJYnVmLT5hZGRyLm9mZnNldCA9 IGFkZHJlc3M7CisJCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBidWYsIHRydWUpOworCQlp bnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgYnVmLCB0cnVlKTsKKworCQlpZ3RfYXNzZXJ0KGJ1 Zi0+YWRkci5vZmZzZXQgPT0gZ2VuOF9jYW5vbmljYWxfYWRkcihhZGRyZXNzKSk7CisKKwkJaW50 ZWxfYmJfZXhlYyhpYmIsIG9mZnNldCwKKwkJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkx NV9FWEVDX05PX1JFTE9DLCB0cnVlKTsKKworCQkvKiBXZSBlbnN1cmUgdG8gZG8gdW5yZXNlcnZl IGFuZCB2ZXJpZnkgYWRkcmVzcyBjYW4gYmUgcmV1c2VkICovCisJCWludGVsX2JiX3JlbW92ZV9p bnRlbF9idWYoaWJiLCBidWYpOworCQlpbnRlbF9idWZfZGVzdHJveShidWYpOworCQlpbnRlbF9i Yl9yZXNldChpYmIsIHRydWUpOworCX0KIAotCWludGVsX2J1Zl9kZXN0cm95KGJ1Zik7CiAJaW50 ZWxfYmJfZGVzdHJveShpYmIpOwogfQogCkBAIC0zMzksNzAgKzM3OSwyODcgQEAgc3RhdGljIHZv aWQgcmVzZXRfZmxhZ3Moc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCiAJaW50ZWxfYmJfZGVzdHJveShp YmIpOwogfQogCitzdGF0aWMgdm9pZCBhZGRfcmVtb3ZlX29iamVjdHMoc3RydWN0IGJ1Zl9vcHMg KmJvcHMpCit7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChib3BzKTsKKwlzdHJ1Y3QgaW50 ZWxfYmIgKmliYjsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsICptaWQsICpkc3Q7CisJdWludDMy X3Qgb2Zmc2V0OworCWNvbnN0IHVpbnQzMl90IHdpZHRoID0gNTEyOworCWNvbnN0IHVpbnQzMl90 IGhlaWdodCA9IDUxMjsKIAotI2RlZmluZSBNSV9GTFVTSF9EVyAoMHgyNjw8MjMpCi0jZGVmaW5l IEJDU19TV0NUUkwgIDB4MjIyMDAKLSNkZWZpbmUgQkNTX1NSQ19ZICAgKDEgPDwgMCkKLSNkZWZp bmUgQkNTX0RTVF9ZICAgKDEgPDwgMSkKLXN0YXRpYyB2b2lkIF9fZW1pdF9ibGl0KHN0cnVjdCBp bnRlbF9iYiAqaWJiLAotCQkJc3RydWN0IGludGVsX2J1ZiAqc3JjLCBzdHJ1Y3QgaW50ZWxfYnVm ICpkc3QpCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKGRl YnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsKKworCXNyYyA9IGludGVs X2J1Zl9jcmVhdGUoYm9wcywgd2lkdGgsIGhlaWdodCwgMzIsIDAsCisJCQkgICAgICAgSTkxNV9U SUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKKwltaWQgPSBpbnRlbF9idWZfY3Jl YXRlKGJvcHMsIHdpZHRoLCBoZWlnaHQsIDMyLCAwLAorCQkJICAgICAgIEk5MTVfVElMSU5HX05P TkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CisJZHN0ID0gaW50ZWxfYnVmX2NyZWF0ZShib3Bz LCB3aWR0aCwgaGVpZ2h0LCAzMiwgMCwKKwkJCSAgICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1 X0NPTVBSRVNTSU9OX05PTkUpOworCisJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIHNyYywg ZmFsc2UpOworCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBtaWQsIHRydWUpOworCWludGVs X2JiX3JlbW92ZV9pbnRlbF9idWYoaWJiLCBtaWQpOworCWludGVsX2JiX3JlbW92ZV9pbnRlbF9i dWYoaWJiLCBtaWQpOworCWludGVsX2JiX3JlbW92ZV9pbnRlbF9idWYoaWJiLCBtaWQpOworCWlu dGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBkc3QsIHRydWUpOworCisJb2Zmc2V0ID0gaW50ZWxf YmJfZW1pdF9iYmUoaWJiKTsKKwlpbnRlbF9iYl9leGVjKGliYiwgb2Zmc2V0LAorCQkgICAgICBJ OTE1X0VYRUNfREVGQVVMVCB8IEk5MTVfRVhFQ19OT19SRUxPQywgdHJ1ZSk7CisKKwlpbnRlbF9i dWZfZGVzdHJveShzcmMpOworCWludGVsX2J1Zl9kZXN0cm95KG1pZCk7CisJaW50ZWxfYnVmX2Rl c3Ryb3koZHN0KTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7Cit9CisKK3N0YXRpYyB2b2lkIGRl c3Ryb3lfYmIoc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCit7CisJaW50IGk5MTUgPSBidWZfb3BzX2dl dF9mZChib3BzKTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpz cmMsICptaWQsICpkc3Q7CisJdWludDMyX3Qgb2Zmc2V0OworCWNvbnN0IHVpbnQzMl90IHdpZHRo ID0gNTEyOworCWNvbnN0IHVpbnQzMl90IGhlaWdodCA9IDUxMjsKKworCWliYiA9IGludGVsX2Ji X2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCWlmIChkZWJ1Z19iYikKKwkJaW50ZWxfYmJfc2V0 X2RlYnVnKGliYiwgdHJ1ZSk7CisKKwlzcmMgPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIHdpZHRo LCBoZWlnaHQsIDMyLCAwLAorCQkJICAgICAgIEk5MTVfVElMSU5HX05PTkUsIEk5MTVfQ09NUFJF U1NJT05fTk9ORSk7CisJbWlkID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCB3aWR0aCwgaGVpZ2h0 LCAzMiwgMCwKKwkJCSAgICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05P TkUpOworCWRzdCA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgd2lkdGgsIGhlaWdodCwgMzIsIDAs CisJCQkgICAgICAgSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKKwor CWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBzcmMsIGZhbHNlKTsKKwlpbnRlbF9iYl9hZGRf aW50ZWxfYnVmKGliYiwgbWlkLCB0cnVlKTsKKwlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwg ZHN0LCB0cnVlKTsKKworCW9mZnNldCA9IGludGVsX2JiX2VtaXRfYmJlKGliYik7CisJaW50ZWxf YmJfZXhlYyhpYmIsIG9mZnNldCwKKwkJICAgICAgSTkxNV9FWEVDX0RFRkFVTFQgfCBJOTE1X0VY RUNfTk9fUkVMT0MsIHRydWUpOworCisJLyogQ2hlY2sgZGVzdHJveSB3aWxsIGRldGFjaCBpbnRl bF9idWZzICovCisJaW50ZWxfYmJfZGVzdHJveShpYmIpOworCWlndF9hc3NlcnQoc3JjLT5hZGRy Lm9mZnNldCA9PSBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTKTsKKwlpZ3RfYXNzZXJ0KHNyYy0+ aWJiID09IE5VTEwpOworCWlndF9hc3NlcnQobWlkLT5hZGRyLm9mZnNldCA9PSBJTlRFTF9CVUZf SU5WQUxJRF9BRERSRVNTKTsKKwlpZ3RfYXNzZXJ0KG1pZC0+aWJiID09IE5VTEwpOworCWlndF9h c3NlcnQoZHN0LT5hZGRyLm9mZnNldCA9PSBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTKTsKKwlp Z3RfYXNzZXJ0KGRzdC0+aWJiID09IE5VTEwpOworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5 MTUsIFBBR0VfU0laRSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJi LCB0cnVlKTsKKworCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBzcmMsIGZhbHNlKTsKKwlv ZmZzZXQgPSBpbnRlbF9iYl9lbWl0X2JiZShpYmIpOworCWludGVsX2JiX2V4ZWMoaWJiLCBvZmZz ZXQsCisJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCB0cnVl KTsKKworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKKwlpbnRlbF9idWZfZGVzdHJveShzcmMpOwor CWludGVsX2J1Zl9kZXN0cm95KG1pZCk7CisJaW50ZWxfYnVmX2Rlc3Ryb3koZHN0KTsKK30KKwor c3RhdGljIHZvaWQgb2JqZWN0X3JlbG9jKHN0cnVjdCBidWZfb3BzICpib3BzLCBlbnVtIG9ial9j YWNoZV9vcHMgY2FjaGVfb3ApCiB7Ci0JdWludDMyX3QgbWFzazsKLQlib29sIGhhc182NGJfcmVs b2M7Ci0JdWludDY0X3QgYWRkcmVzczsKLQotCWhhc182NGJfcmVsb2MgPSBpYmItPmdlbiA+PSA4 OwotCi0JaWYgKChzcmMtPnRpbGluZyB8IGRzdC0+dGlsaW5nKSA+PSBJOTE1X1RJTElOR19ZKSB7 Ci0JCWludGVsX2JiX291dChpYmIsIE1JX0xPQURfUkVHSVNURVJfSU1NKTsKLQkJaW50ZWxfYmJf b3V0KGliYiwgQkNTX1NXQ1RSTCk7Ci0KLQkJbWFzayA9IChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kp IDw8IDE2OwotCQlpZiAoc3JjLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKLQkJCW1hc2sgfD0g QkNTX1NSQ19ZOwotCQlpZiAoZHN0LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKLQkJCW1hc2sg fD0gQkNTX0RTVF9ZOwotCQlpbnRlbF9iYl9vdXQoaWJiLCBtYXNrKTsKKwlpbnQgaTkxNSA9IGJ1 Zl9vcHNfZ2V0X2ZkKGJvcHMpOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXVpbnQzMl90IGgx LCBoMjsKKwl1aW50NjRfdCBwb2ZmX2JiLCBwb2ZmX2gxLCBwb2ZmX2gyOworCXVpbnQ2NF90IHBv ZmYyX2JiLCBwb2ZmMl9oMSwgcG9mZjJfaDI7CisJdWludDY0X3QgZmxhZ3MgPSAwOworCXVpbnQ2 NF90IHNoaWZ0ID0gY2FjaGVfb3AgPT0gUFVSR0VfQ0FDSEUgPyAweDIwMDAgOiAweDA7CisJYm9v bCBwdXJnZV9jYWNoZSA9IGNhY2hlX29wID09IFBVUkdFX0NBQ0hFID8gdHJ1ZSA6IGZhbHNlOwor CisJaWJiID0gaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2NzKGk5MTUsIFBBR0VfU0laRSk7CisJ aWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsKKworCWgxID0g Z2VtX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCWgyID0gZ2VtX2NyZWF0ZShpOTE1LCBQQUdF X1NJWkUpOworCisJLyogaW50ZWxfYmJfY3JlYXRlIGFkZHMgYmIgaGFuZGxlIHNvIGl0IGhhcyAw IGZvciByZWxvY3MgKi8KKwlwb2ZmX2JiID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJi LCBpYmItPmhhbmRsZSk7CisJaWd0X2Fzc2VydChwb2ZmX2JiID09IDApOworCisJLyogQmVmb3Jl IGFkZGluZyB0byBpbnRlbF9iYiBpdCBzaG91bGQgcmV0dXJuIElOVkFMSURfQUREUkVTUyAqLwor CXBvZmZfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgxKTsKKwlwb2ZmX2gy ID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBoMik7CisJaWd0X2RlYnVnKCJbMV0g cG9mZl9oMTogJWx4XG4iLCAobG9uZykgcG9mZl9oMSk7CisJaWd0X2RlYnVnKCJbMV0gcG9mZl9o MjogJWx4XG4iLCAobG9uZykgcG9mZl9oMik7CisJaWd0X2Fzc2VydChwb2ZmX2gxID09IElOVEVM X0JVRl9JTlZBTElEX0FERFJFU1MpOworCWlndF9hc3NlcnQocG9mZl9oMiA9PSBJTlRFTF9CVUZf SU5WQUxJRF9BRERSRVNTKTsKKworCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBoMSwgUEFHRV9T SVpFLCBwb2ZmX2gxLCAwLCB0cnVlKTsKKwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaDIsIFBB R0VfU0laRSwgcG9mZl9oMiwgMHgyMDAwLCB0cnVlKTsKKworCS8qCisJICogT2JqZWN0cyB3ZXJl IGFkZGVkIHRvIGJiLCB3ZSBleHBlY3QgaW5pdGlhbCBhZGRyZXNzZXMgYXJlIHplcm9lZAorCSAq IGZvciByZWxvY3MuCisJICovCisJcG9mZl9oMSA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0 KGliYiwgaDEpOworCXBvZmZfaDIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgy KTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDEgPT0gMCk7CisJaWd0X2Fzc2VydChwb2ZmX2gyID09IDAp OworCisJaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsKKwlpbnRlbF9iYl9leGVjKGliYiwgaW50ZWxf YmJfb2Zmc2V0KGliYiksIGZsYWdzLCBmYWxzZSk7CisKKwlwb2ZmMl9iYiA9IGludGVsX2JiX2dl dF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5kbGUpOworCXBvZmYyX2gxID0gaW50ZWxfYmJf Z2V0X29iamVjdF9vZmZzZXQoaWJiLCBoMSk7CisJcG9mZjJfaDIgPSBpbnRlbF9iYl9nZXRfb2Jq ZWN0X29mZnNldChpYmIsIGgyKTsKKwlpZ3RfZGVidWcoIlsyXSBwb2ZmMl9oMTogJWx4XG4iLCAo bG9uZykgcG9mZjJfaDEpOworCWlndF9kZWJ1ZygiWzJdIHBvZmYyX2gyOiAlbHhcbiIsIChsb25n KSBwb2ZmMl9oMik7CisJLyogU29tZSBhZGRyZXNzZXMgd29uJ3QgYmUgMCAqLworCWlndF9hc3Nl cnQocG9mZjJfYmIgfCBwb2ZmMl9oMSB8IHBvZmYyX2gyKTsKKworCWludGVsX2JiX3Jlc2V0KGli YiwgcHVyZ2VfY2FjaGUpOworCisJaWYgKHB1cmdlX2NhY2hlKSB7CisJCWludGVsX2JiX2FkZF9v YmplY3QoaWJiLCBoMSwgUEFHRV9TSVpFLCBwb2ZmMl9oMSwgMCwgdHJ1ZSk7CisJCWludGVsX2Ji X2FkZF9vYmplY3QoaWJiLCBoMiwgUEFHRV9TSVpFLCBwb2ZmMl9oMiArIHNoaWZ0LCAweDIwMDAs IHRydWUpOwogCX0KIAotCWludGVsX2JiX291dChpYmIsCi0JCSAgICAgWFlfU1JDX0NPUFlfQkxU X0NNRCB8Ci0JCSAgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX0FMUEhBIHwKLQkJICAgICBYWV9T UkNfQ09QWV9CTFRfV1JJVEVfUkdCIHwKLQkJICAgICAoNiArIDIgKiBoYXNfNjRiX3JlbG9jKSk7 Ci0JaW50ZWxfYmJfb3V0KGliYiwgMyA8PCAyNCB8IDB4Y2MgPDwgMTYgfCBkc3QtPnN1cmZhY2Vb MF0uc3RyaWRlKTsKLQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKLQlpbnRlbF9iYl9vdXQoaWJiLCBp bnRlbF9idWZfaGVpZ2h0KGRzdCkgPDwgMTYgfCBpbnRlbF9idWZfd2lkdGgoZHN0KSk7CisJcG9m Zl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5kbGUpOworCXBv ZmZfaDEgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgxKTsKKwlwb2ZmX2gyID0g aW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBoMik7CisJaWd0X2RlYnVnKCJbM10gcG9m Zl9oMTogJWx4XG4iLCAobG9uZykgcG9mZl9oMSk7CisJaWd0X2RlYnVnKCJbM10gcG9mZl9oMjog JWx4XG4iLCAobG9uZykgcG9mZl9oMik7CisJaWd0X2RlYnVnKCJbM10gcG9mZjJfaDE6ICVseFxu IiwgKGxvbmcpIHBvZmYyX2gxKTsKKwlpZ3RfZGVidWcoIlszXSBwb2ZmMl9oMjogJWx4ICsgc2hp ZnQgKCVseClcbiIsIChsb25nKSBwb2ZmMl9oMiwKKwkJIChsb25nKSBzaGlmdCk7CisJaWd0X2Fz c2VydChwb2ZmX2gxID09IHBvZmYyX2gxKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDIgPT0gcG9mZjJf aDIgKyBzaGlmdCk7CisJaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsKKwlpbnRlbF9iYl9leGVjKGli YiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGZsYWdzLCBmYWxzZSk7CiAKLQlhZGRyZXNzID0gaW50 ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBkc3QtPmhhbmRsZSk7Ci0JaW50ZWxfYmJfZW1p dF9yZWxvY19mZW5jZWQoaWJiLCBkc3QtPmhhbmRsZSwKLQkJCQkgICBJOTE1X0dFTV9ET01BSU5f UkVOREVSLAotCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCi0JCQkJICAgMCwgYWRkcmVz cyk7Ci0JaW50ZWxfYmJfb3V0KGliYiwgMCk7Ci0JaW50ZWxfYmJfb3V0KGliYiwgc3JjLT5zdXJm YWNlWzBdLnN0cmlkZSk7CisJZ2VtX2Nsb3NlKGk5MTUsIGgxKTsKKwlnZW1fY2xvc2UoaTkxNSwg aDIpOworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKK30KIAotCWFkZHJlc3MgPSBpbnRlbF9iYl9n ZXRfb2JqZWN0X29mZnNldChpYmIsIHNyYy0+aGFuZGxlKTsKLQlpbnRlbF9iYl9lbWl0X3JlbG9j X2ZlbmNlZChpYmIsIHNyYy0+aGFuZGxlLAotCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIs IDAsCi0JCQkJICAgMCwgYWRkcmVzcyk7CisjZGVmaW5lIFdJVEhJTl9SQU5HRShvZmZzZXQsIHN0 YXJ0LCBlbmQpIFwKKwkoREVDQU5PTklDQUwob2Zmc2V0KSA+PSBzdGFydCAmJiBERUNBTk9OSUNB TChvZmZzZXQpIDw9IGVuZCkKK3N0YXRpYyB2b2lkIG9iamVjdF9ub3JlbG9jKHN0cnVjdCBidWZf b3BzICpib3BzLCBlbnVtIG9ial9jYWNoZV9vcHMgY2FjaGVfb3AsCisJCQkgICB1aW50OF90IGFs bG9jYXRvcl90eXBlKQoreworCWludCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYm9wcyk7CisJc3Ry dWN0IGludGVsX2JiICppYmI7CisJdWludDMyX3QgaDEsIGgyOworCXVpbnQ2NF90IHN0YXJ0LCBl bmQ7CisJdWludDY0X3QgcG9mZl9iYiwgcG9mZl9oMSwgcG9mZl9oMjsKKwl1aW50NjRfdCBwb2Zm Ml9iYiwgcG9mZjJfaDEsIHBvZmYyX2gyOworCXVpbnQ2NF90IGZsYWdzID0gMDsKKwlib29sIHB1 cmdlX2NhY2hlID0gY2FjaGVfb3AgPT0gUFVSR0VfQ0FDSEUgPyB0cnVlIDogZmFsc2U7CiAKLQlp ZiAoKHNyYy0+dGlsaW5nIHwgZHN0LT50aWxpbmcpID49IEk5MTVfVElMSU5HX1kpIHsKLQkJaWd0 X2Fzc2VydChpYmItPmdlbiA+PSA2KTsKLQkJaW50ZWxfYmJfb3V0KGliYiwgTUlfRkxVU0hfRFcg fCAyKTsKLQkJaW50ZWxfYmJfb3V0KGliYiwgMCk7Ci0JCWludGVsX2JiX291dChpYmIsIDApOwot CQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpZ3RfcmVxdWlyZShnZW1fdXNlc19mdWxsX3BwZ3R0 KGk5MTUpKTsKKworCWliYiA9IGludGVsX2JiX2NyZWF0ZV9mdWxsKGk5MTUsIDAsIFBBR0VfU0la RSwgYWxsb2NhdG9yX3R5cGUpOworCWlmIChkZWJ1Z19iYikKKwkJaW50ZWxfYmJfc2V0X2RlYnVn KGliYiwgdHJ1ZSk7CisKKwloMSA9IGdlbV9jcmVhdGUoaTkxNSwgUEFHRV9TSVpFKTsKKwloMiA9 IGdlbV9jcmVhdGUoaTkxNSwgUEFHRV9TSVpFKTsKIAotCQlpbnRlbF9iYl9vdXQoaWJiLCBNSV9M T0FEX1JFR0lTVEVSX0lNTSk7Ci0JCWludGVsX2JiX291dChpYmIsIEJDU19TV0NUUkwpOwotCQlp bnRlbF9iYl9vdXQoaWJiLCAoQkNTX1NSQ19ZIHwgQkNTX0RTVF9ZKSA8PCAxNik7CisJaW50ZWxf YWxsb2NhdG9yX2dldF9hZGRyZXNzX3JhbmdlKGliYi0+YWxsb2NhdG9yX2hhbmRsZSwKKwkJCQkJ ICAmc3RhcnQsICZlbmQpOworCXBvZmZfYmIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChp YmIsIGliYi0+aGFuZGxlKTsKKwlpZ3RfZGVidWcoIlsxXSBiYiBwcmVzdW1lZCBvZmZzZXQ6IDB4 JSIgUFJJeDY0CisJCSAgIiwgc3RhcnQ6ICUiIFBSSXg2NCAiLCBlbmQ6ICUiIFBSSXg2NCAiXG4i LAorCQkgIHBvZmZfYmIsIHN0YXJ0LCBlbmQpOworCWlndF9hc3NlcnQoV0lUSElOX1JBTkdFKHBv ZmZfYmIsIHN0YXJ0LCBlbmQpKTsKKworCS8qIEJlZm9yZSBhZGRpbmcgdG8gaW50ZWxfYmIgaXQg c2hvdWxkIHJldHVybiBJTlZBTElEX0FERFJFU1MgKi8KKwlwb2ZmX2gxID0gaW50ZWxfYmJfZ2V0 X29iamVjdF9vZmZzZXQoaWJiLCBoMSk7CisJcG9mZl9oMiA9IGludGVsX2JiX2dldF9vYmplY3Rf b2Zmc2V0KGliYiwgaDIpOworCWlndF9kZWJ1ZygiWzFdIGgxIHByZXN1bWVkIG9mZnNldDogMHgl IlBSSXg2NCJcbiIsIHBvZmZfaDEpOworCWlndF9kZWJ1ZygiWzFdIGgyIHByZXN1bWVkIG9mZnNl dDogMHglIlBSSXg2NCJcbiIsIHBvZmZfaDIpOworCWlndF9hc3NlcnQocG9mZl9oMSA9PSBJTlRF TF9CVUZfSU5WQUxJRF9BRERSRVNTKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfaDIgPT0gSU5URUxfQlVG X0lOVkFMSURfQUREUkVTUyk7CisKKwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaDEsIFBBR0Vf U0laRSwgcG9mZl9oMSwgMCwgdHJ1ZSk7CisJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgyLCBQ QUdFX1NJWkUsIHBvZmZfaDIsIDAsIHRydWUpOworCisJcG9mZl9oMSA9IGludGVsX2JiX2dldF9v YmplY3Rfb2Zmc2V0KGliYiwgaDEpOworCXBvZmZfaDIgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29m ZnNldChpYmIsIGgyKTsKKwlpZ3RfZGVidWcoIlsyXSBiYiBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQ Ukl4NjQiXG4iLCBwb2ZmX2JiKTsKKwlpZ3RfZGVidWcoIlsyXSBoMSBwcmVzdW1lZCBvZmZzZXQ6 IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX2gxKTsKKwlpZ3RfZGVidWcoIlsyXSBoMiBwcmVzdW1lZCBv ZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX2gyKTsKKwlpZ3RfYXNzZXJ0KFdJVEhJTl9SQU5H RShwb2ZmX2JiLCBzdGFydCwgZW5kKSk7CisJaWd0X2Fzc2VydChXSVRISU5fUkFOR0UocG9mZl9o MSwgc3RhcnQsIGVuZCkpOworCWlndF9hc3NlcnQoV0lUSElOX1JBTkdFKHBvZmZfaDIsIHN0YXJ0 LCBlbmQpKTsKKworCWludGVsX2JiX2VtaXRfYmJlKGliYik7CisJaWd0X2RlYnVnKCJleGVjIGZs YWdzOiAlIiBQUklYNjQgIlxuIiwgZmxhZ3MpOworCWludGVsX2JiX2V4ZWMoaWJiLCBpbnRlbF9i Yl9vZmZzZXQoaWJiKSwgZmxhZ3MsIGZhbHNlKTsKKworCXBvZmYyX2JiID0gaW50ZWxfYmJfZ2V0 X29iamVjdF9vZmZzZXQoaWJiLCBpYmItPmhhbmRsZSk7CisJcG9mZjJfaDEgPSBpbnRlbF9iYl9n ZXRfb2JqZWN0X29mZnNldChpYmIsIGgxKTsKKwlwb2ZmMl9oMiA9IGludGVsX2JiX2dldF9vYmpl Y3Rfb2Zmc2V0KGliYiwgaDIpOworCWlndF9kZWJ1ZygiWzNdIGJiIHByZXN1bWVkIG9mZnNldDog MHglIlBSSXg2NCJcbiIsIHBvZmYyX2JiKTsKKwlpZ3RfZGVidWcoIlszXSBoMSBwcmVzdW1lZCBv ZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmMl9oMSk7CisJaWd0X2RlYnVnKCJbM10gaDIgcHJl c3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZjJfaDIpOworCWlndF9hc3NlcnQocG9m Zl9oMSA9PSBwb2ZmMl9oMSk7CisJaWd0X2Fzc2VydChwb2ZmX2gyID09IHBvZmYyX2gyKTsKKwor CWlndF9kZWJ1ZygicHVyZ2U6ICVkXG4iLCBwdXJnZV9jYWNoZSk7CisJaW50ZWxfYmJfcmVzZXQo aWJiLCBwdXJnZV9jYWNoZSk7CisKKwkvKgorCSAqIENoZWNrIGlmIGludGVsLWJiIGNhY2hlIHdh cyBwdXJnZWQ6CisJICogYSkgcmV0cmlldmUgc2FtZSBhZGRyZXNzIGZyb20gYWxsb2NhdG9yICh3 b3JrcyBmb3Igc2ltcGxlLCBub3QgcmFuZG9tKQorCSAqIGIpIHBhc3NpbmcgcHJldmlvdXMgYWRk cmVzcyBlbnRlcnMgYWxsb2NhdG9yIDwtPiBpbnRlbF9iYiBjYWNoZQorCSAqICAgIGNvbnNpc3Rl bmN5IGNoZWNrIHBhdGguCisJICovCisJaWYgKHB1cmdlX2NhY2hlKSB7CisJCWludGVsX2JiX2Fk ZF9vYmplY3QoaWJiLCBoMSwgUEFHRV9TSVpFLAorCQkJCSAgICBJTlRFTF9CVUZfSU5WQUxJRF9B RERSRVNTLCAwLCB0cnVlKTsKKwkJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGgyLCBQQUdFX1NJ WkUsIHBvZmYyX2gyLCAwLCB0cnVlKTsKKwl9IGVsc2UgeworCQkvKiBTZWUgY29uc2lzdGVuY3kg Y2hlY2sgd2lsbCBub3QgZmFpbCAqLworCQlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaDEsIFBB R0VfU0laRSwgcG9mZjJfaDEsIDAsIHRydWUpOworCQlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwg aDIsIFBBR0VfU0laRSwgcG9mZjJfaDIsIDAsIHRydWUpOwogCX0KKworCXBvZmZfaDEgPSBpbnRl bF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGgxKTsKKwlwb2ZmX2gyID0gaW50ZWxfYmJfZ2V0 X29iamVjdF9vZmZzZXQoaWJiLCBoMik7CisJaWd0X2RlYnVnKCJbNF0gYmIgcHJlc3VtZWQgb2Zm c2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9iYik7CisJaWd0X2RlYnVnKCJbNF0gaDEgcHJlc3Vt ZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9oMSk7CisJaWd0X2RlYnVnKCJbNF0gaDIg cHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9oMik7CisKKwkvKiBGb3Igc2lt cGxlIGFsbG9jYXRvciBhbmQgcHVyZ2U9Y2FjaGUgd2UgbXVzdCBoYXZlIHNhbWUgYWRkcmVzc2Vz ICovCisJaWYgKGFsbG9jYXRvcl90eXBlID09IElOVEVMX0FMTE9DQVRPUl9TSU1QTEUgfHwgIXB1 cmdlX2NhY2hlKSB7CisJCWlndF9hc3NlcnQocG9mZl9oMSA9PSBwb2ZmMl9oMSk7CisJCWlndF9h c3NlcnQocG9mZl9oMiA9PSBwb2ZmMl9oMik7CisJfQorCisJZ2VtX2Nsb3NlKGk5MTUsIGgxKTsK KwlnZW1fY2xvc2UoaTkxNSwgaDIpOworCWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKK30KK3N0YXRp YyB2b2lkIF9fZW1pdF9ibGl0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJIHN0cnVjdCBpbnRl bF9idWYgKnNyYywgc3RydWN0IGludGVsX2J1ZiAqZHN0KQoreworCWludGVsX2JiX2VtaXRfYmx0 X2NvcHkoaWJiLAorCQkJICAgICAgIHNyYywgMCwgMCwgc3JjLT5zdXJmYWNlWzBdLnN0cmlkZSwK KwkJCSAgICAgICBkc3QsIDAsIDAsIGRzdC0+c3VyZmFjZVswXS5zdHJpZGUsCisJCQkgICAgICAg aW50ZWxfYnVmX3dpZHRoKGRzdCksCisJCQkgICAgICAgaW50ZWxfYnVmX2hlaWdodChkc3QpLAor CQkJICAgICAgIGRzdC0+YnBwKTsKIH0KIAogc3RhdGljIHZvaWQgYmxpdChzdHJ1Y3QgYnVmX29w cyAqYm9wcywKIAkJIGVudW0gcmVsb2Nfb2JqZWN0cyByZWxvY19vYmosCi0JCSBlbnVtIG9ial9j YWNoZV9vcHMgY2FjaGVfb3ApCisJCSBlbnVtIG9ial9jYWNoZV9vcHMgY2FjaGVfb3AsCisJCSB1 aW50OF90IGFsbG9jYXRvcl90eXBlKQogewogCWludCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYm9w cyk7CiAJc3RydWN0IGludGVsX2JiICppYmI7CkBAIC00MTMsNiArNjcwLDkgQEAgc3RhdGljIHZv aWQgYmxpdChzdHJ1Y3QgYnVmX29wcyAqYm9wcywKIAlib29sIHB1cmdlX2NhY2hlID0gY2FjaGVf b3AgPT0gUFVSR0VfQ0FDSEUgPyB0cnVlIDogZmFsc2U7CiAJYm9vbCBkb19yZWxvY3MgPSByZWxv Y19vYmogPT0gUkVMT0MgPyB0cnVlIDogZmFsc2U7CiAKKwlpZiAoIWRvX3JlbG9jcykKKwkJaWd0 X3JlcXVpcmUoZ2VtX3VzZXNfZnVsbF9wcGd0dChpOTE1KSk7CisKIAlzcmMgPSBjcmVhdGVfYnVm KGJvcHMsIFdJRFRILCBIRUlHSFQsIENPTE9SX0NDKTsKIAlkc3QgPSBjcmVhdGVfYnVmKGJvcHMs IFdJRFRILCBIRUlHSFQsIENPTE9SXzAwKTsKIApAQCAtNDI0LDU1ICs2ODQsNjggQEAgc3RhdGlj IHZvaWQgYmxpdChzdHJ1Y3QgYnVmX29wcyAqYm9wcywKIAlpZiAoZG9fcmVsb2NzKSB7CiAJCWli YiA9IGludGVsX2JiX2NyZWF0ZV93aXRoX3JlbG9jcyhpOTE1LCBQQUdFX1NJWkUpOwogCX0gZWxz ZSB7Ci0JCWliYiA9IGludGVsX2JiX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCQlpYmIgPSBp bnRlbF9iYl9jcmVhdGVfZnVsbChpOTE1LCAwLCBQQUdFX1NJWkUsIGFsbG9jYXRvcl90eXBlKTsK IAkJZmxhZ3MgfD0gSTkxNV9FWEVDX05PX1JFTE9DOwogCX0KIAotCWlmIChpYmItPmdlbiA+PSA2 KQotCQlmbGFncyB8PSBJOTE1X0VYRUNfQkxUOwotCiAJaWYgKGRlYnVnX2JiKQogCQlpbnRlbF9i Yl9zZXRfZGVidWcoaWJiLCB0cnVlKTsKIAotCi0JaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIs IHNyYywgZmFsc2UpOwotCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBkc3QsIHRydWUpOwot CiAJX19lbWl0X2JsaXQoaWJiLCBzcmMsIGRzdCk7CiAKIAkvKiBXZSBleHBlY3QgaW5pdGlhbCBh ZGRyZXNzZXMgYXJlIHplcm9lZCBmb3IgcmVsb2NzICovCi0JcG9mZl9iYiA9IGludGVsX2JiX2dl dF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5kbGUpOwotCXBvZmZfc3JjID0gaW50ZWxfYmJf Z2V0X29iamVjdF9vZmZzZXQoaWJiLCBzcmMtPmhhbmRsZSk7Ci0JcG9mZl9kc3QgPSBpbnRlbF9i Yl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGRzdC0+aGFuZGxlKTsKLQlpZ3RfZGVidWcoImJiICBw cmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX2JiKTsKLQlpZ3RfZGVidWcoInNy YyBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX3NyYyk7Ci0JaWd0X2RlYnVn KCJkc3QgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9kc3QpOwogCWlmIChy ZWxvY19vYmogPT0gUkVMT0MpIHsKKwkJcG9mZl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zm c2V0KGliYiwgaWJiLT5oYW5kbGUpOworCQlwb2ZmX3NyYyA9IGludGVsX2JiX2dldF9vYmplY3Rf b2Zmc2V0KGliYiwgc3JjLT5oYW5kbGUpOworCQlwb2ZmX2RzdCA9IGludGVsX2JiX2dldF9vYmpl Y3Rfb2Zmc2V0KGliYiwgZHN0LT5oYW5kbGUpOworCQlpZ3RfZGVidWcoImJiICBwcmVzdW1lZCBv ZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX2JiKTsKKwkJaWd0X2RlYnVnKCJzcmMgcHJlc3Vt ZWQgb2Zmc2V0OiAweCUiUFJJeDY0IlxuIiwgcG9mZl9zcmMpOworCQlpZ3RfZGVidWcoImRzdCBw cmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4NjQiXG4iLCBwb2ZmX2RzdCk7CiAJCWlndF9hc3NlcnQo cG9mZl9iYiA9PSAwKTsKIAkJaWd0X2Fzc2VydChwb2ZmX3NyYyA9PSAwKTsKIAkJaWd0X2Fzc2Vy dChwb2ZmX2RzdCA9PSAwKTsKIAl9CiAKIAlpbnRlbF9iYl9lbWl0X2JiZShpYmIpOwotCWlndF9k ZWJ1ZygiZXhlYyBmbGFnczogJSIgUFJJWDY0ICJcbiIsIGZsYWdzKTsKLQlpbnRlbF9iYl9leGVj KGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGZsYWdzLCB0cnVlKTsKKwlpbnRlbF9iYl9mbHVz aF9ibGl0KGliYik7CisJaW50ZWxfYmJfc3luYyhpYmIpOworCiAJY2hlY2tfYnVmKGRzdCwgQ09M T1JfQ0MpOwogCiAJcG9mZl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJi LT5oYW5kbGUpOwogCXBvZmZfc3JjID0gaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBz cmMtPmhhbmRsZSk7CiAJcG9mZl9kc3QgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIs IGRzdC0+aGFuZGxlKTsKIAorCS8qCisJICogRm9yIHJlbG9jYXRpb25zIGludGVsX2JiIGlzIG5v dCB1cGRhdGluZyBpbnRlbF9idWYgb2Zmc2V0cyB5ZXQsCisJICogZm9yIGFsbG9jYXRvcnMgd2Ug dXNlIGludGVsX2J1ZiBvZmZzZXQgZXZlbiBpZiBpbnRlbF9iYiBjYWNoZQorCSAqIGlzIGVtcHR5 LgorCSAqLworCWlmIChyZWxvY19vYmogPT0gUkVMT0MpIHsKKwkJaW50ZWxfYmJfb2JqZWN0X29m ZnNldF90b19idWYoaWJiLCBzcmMpOworCQlpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1Zihp YmIsIGRzdCk7CisJfQorCiAJaW50ZWxfYmJfcmVzZXQoaWJiLCBwdXJnZV9jYWNoZSk7CiAKKwkv KiBBZGQgYnVmZmVycyBhZ2Fpbiwgc2hvdWxkIHdvcmsgYm90aCBmb3IgcHVyZ2UgYW5kIGtlZXAg Y2FjaGUgKi8KKwlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgc3JjLCBmYWxzZSk7CisJaW50 ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIGRzdCwgdHJ1ZSk7CisKKwlpZ3RfYXNzZXJ0X2YocG9m Zl9zcmMgPT0gc3JjLT5hZGRyLm9mZnNldCwKKwkJICAgICAicHJldiBzcmMgYWRkcjogJSIgUFJJ eDY0ICIgPD4gc3JjIGFkZHIgJSIgUFJJeDY0ICJcbiIsCisJCSAgICAgcG9mZl9zcmMsIHNyYy0+ YWRkci5vZmZzZXQpOworCWlndF9hc3NlcnRfZihwb2ZmX2RzdCA9PSBkc3QtPmFkZHIub2Zmc2V0 LAorCQkgICAgICJwcmV2IGRzdCBhZGRyOiAlIiBQUkl4NjQgIiA8PiBkc3QgYWRkciAlIiBQUkl4 NjQgIlxuIiwKKwkJICAgICBwb2ZmX2RzdCwgZHN0LT5hZGRyLm9mZnNldCk7CisKIAlmaWxsX2J1 ZihzcmMsIENPTE9SXzc3KTsKIAlmaWxsX2J1Zihkc3QsIENPTE9SXzAwKTsKIAotCWlmIChwdXJn ZV9jYWNoZSAmJiAhZG9fcmVsb2NzKSB7Ci0JCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBz cmMsIGZhbHNlKTsKLQkJaW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIGRzdCwgdHJ1ZSk7Ci0J fQotCiAJX19lbWl0X2JsaXQoaWJiLCBzcmMsIGRzdCk7CisJaW50ZWxfYmJfZmx1c2hfYmxpdChp YmIpOworCWludGVsX2JiX3N5bmMoaWJiKTsKKwljaGVja19idWYoZHN0LCBDT0xPUl83Nyk7CiAK IAlwb2ZmMl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5kbGUp OwogCXBvZmYyX3NyYyA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgc3JjLT5oYW5k bGUpOwpAQCAtNDg1LDI4ICs3NTgsMTIgQEAgc3RhdGljIHZvaWQgYmxpdChzdHJ1Y3QgYnVmX29w cyAqYm9wcywKIAlpZ3RfZGVidWcoImJiMiAgcHJlc3VtZWQgb2Zmc2V0OiAweCUiUFJJeDY0Ilxu IiwgcG9mZjJfYmIpOwogCWlndF9kZWJ1Zygic3JjMiBwcmVzdW1lZCBvZmZzZXQ6IDB4JSJQUkl4 NjQiXG4iLCBwb2ZmMl9zcmMpOwogCWlndF9kZWJ1ZygiZHN0MiBwcmVzdW1lZCBvZmZzZXQ6IDB4 JSJQUkl4NjQiXG4iLCBwb2ZmMl9kc3QpOwotCWlmIChwdXJnZV9jYWNoZSkgewotCQlpZiAoZG9f cmVsb2NzKSB7Ci0JCQlpZ3RfYXNzZXJ0KHBvZmYyX2JiID09IDApOwotCQkJaWd0X2Fzc2VydChw b2ZmMl9zcmMgPT0gMCk7Ci0JCQlpZ3RfYXNzZXJ0KHBvZmYyX2RzdCA9PSAwKTsKLQkJfSBlbHNl IHsKLQkJCWlndF9hc3NlcnQocG9mZl9iYiAhPSBwb2ZmMl9iYik7Ci0JCQlpZ3RfYXNzZXJ0KHBv ZmZfc3JjID09IHBvZmYyX3NyYyk7Ci0JCQlpZ3RfYXNzZXJ0KHBvZmZfZHN0ID09IHBvZmYyX2Rz dCk7Ci0JCX0KLQl9IGVsc2UgewotCQlpZ3RfYXNzZXJ0KHBvZmZfYmIgPT0gcG9mZjJfYmIpOwot CQlpZ3RfYXNzZXJ0KHBvZmZfc3JjID09IHBvZmYyX3NyYyk7Ci0JCWlndF9hc3NlcnQocG9mZl9k c3QgPT0gcG9mZjJfZHN0KTsKLQl9CiAKLQlpbnRlbF9iYl9lbWl0X2JiZShpYmIpOwotCWludGVs X2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwgZmxhZ3MsIHRydWUpOwotCWNoZWNr X2J1Zihkc3QsIENPTE9SXzc3KTsKLQotCXBvZmYyX3NyYyA9IGludGVsX2JiX2dldF9vYmplY3Rf b2Zmc2V0KGliYiwgc3JjLT5oYW5kbGUpOwotCXBvZmYyX2RzdCA9IGludGVsX2JiX2dldF9vYmpl Y3Rfb2Zmc2V0KGliYiwgZHN0LT5oYW5kbGUpOworCS8qCisJICogSW4gaW50ZWxfYmIgcmVzZXQg cGF0aCB3ZSByZWNyZWF0ZSBiYiBoYW5kbGUgc28gd2UgY2Fubm90IGFzc3VtZQorCSAqIHdlIHdp bGwgaGF2ZSBzYW1lIGFkZHJlc3MgZm9yIHJlbG9jYXRpb25zLiBXZSBjYW4gZW5mb3JjZSBpdAor CSAqIHdoZW4gd2UgdXNlIGFsbG9jYXRvciBhbmQgc29mdHBpbi4gKi8KKwlpZ3RfYXNzZXJ0KGRv X3JlbG9jcyB8fCBwb2ZmX2JiID09IHBvZmYyX2JiKTsKIAlpZ3RfYXNzZXJ0KHBvZmZfc3JjID09 IHBvZmYyX3NyYyk7CiAJaWd0X2Fzc2VydChwb2ZmX2RzdCA9PSBwb2ZmMl9kc3QpOwogCkBAIC02 NjMsNyArOTIwLDcgQEAgc3RhdGljIGludCBkdW1wX2Jhc2U2NChjb25zdCBjaGFyICpuYW1lLCBz dHJ1Y3QgaW50ZWxfYnVmICpidWYpCiAJaWYgKHJldCAhPSBaX09LKSB7CiAJCWlndF93YXJuKCJl cnJvciBjb21wcmVzc2luZywgcmV0OiAlZFxuIiwgcmV0KTsKIAl9IGVsc2UgewotCQlpZ3RfaW5m bygiY29tcHJlc3NlZCAldSAtPiAlbHVcbiIsCisJCWlndF9pbmZvKCJjb21wcmVzc2VkICUiIFBS SXU2NCAiIC0+ICVsdVxuIiwKIAkJCSBidWYtPnN1cmZhY2VbMF0uc2l6ZSwgb3V0c2l6ZSk7CiAK IAkJaWd0X2luZm8oIi0tLSAlcyAtLS1cbiIsIG5hbWUpOwpAQCAtNzk2LDExICsxMDUzLDExIEBA IHN0YXRpYyB2b2lkIG9mZnNldF9jb250cm9sKHN0cnVjdCBidWZfb3BzICpib3BzKQogCWRzdDIg PSBjcmVhdGVfYnVmKGJvcHMsIFdJRFRILCBIRUlHSFQsIENPTE9SXzc3KTsKIAogCWludGVsX2Ji X2FkZF9vYmplY3QoaWJiLCBzcmMtPmhhbmRsZSwgaW50ZWxfYnVmX2JvX3NpemUoc3JjKSwKLQkJ CSAgICBzcmMtPmFkZHIub2Zmc2V0LCBmYWxzZSk7CisJCQkgICAgc3JjLT5hZGRyLm9mZnNldCwg MCwgZmFsc2UpOwogCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBkc3QxLT5oYW5kbGUsIGludGVs X2J1Zl9ib19zaXplKGRzdDEpLAotCQkJICAgIGRzdDEtPmFkZHIub2Zmc2V0LCB0cnVlKTsKKwkJ CSAgICBkc3QxLT5hZGRyLm9mZnNldCwgMCwgdHJ1ZSk7CiAJaW50ZWxfYmJfYWRkX29iamVjdChp YmIsIGRzdDItPmhhbmRsZSwgaW50ZWxfYnVmX2JvX3NpemUoZHN0MiksCi0JCQkgICAgZHN0Mi0+ YWRkci5vZmZzZXQsIHRydWUpOworCQkJICAgIGRzdDItPmFkZHIub2Zmc2V0LCAwLCB0cnVlKTsK IAogCWludGVsX2JiX291dChpYmIsIE1JX0JBVENIX0JVRkZFUl9FTkQpOwogCWludGVsX2JiX3B0 cl9hbGlnbihpYmIsIDgpOwpAQCAtODI0LDEzICsxMDgxLDEzIEBAIHN0YXRpYyB2b2lkIG9mZnNl dF9jb250cm9sKHN0cnVjdCBidWZfb3BzICpib3BzKQogCiAJZHN0MyA9IGNyZWF0ZV9idWYoYm9w cywgV0lEVEgsIEhFSUdIVCwgQ09MT1JfMzMpOwogCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBk c3QzLT5oYW5kbGUsIGludGVsX2J1Zl9ib19zaXplKGRzdDMpLAotCQkJICAgIGRzdDMtPmFkZHIu b2Zmc2V0LCB0cnVlKTsKKwkJCSAgICBkc3QzLT5hZGRyLm9mZnNldCwgMCwgdHJ1ZSk7CiAJaW50 ZWxfYmJfYWRkX29iamVjdChpYmIsIHNyYy0+aGFuZGxlLCBpbnRlbF9idWZfYm9fc2l6ZShzcmMp LAotCQkJICAgIHNyYy0+YWRkci5vZmZzZXQsIGZhbHNlKTsKKwkJCSAgICBzcmMtPmFkZHIub2Zm c2V0LCAwLCBmYWxzZSk7CiAJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGRzdDEtPmhhbmRsZSwg aW50ZWxfYnVmX2JvX3NpemUoZHN0MSksCi0JCQkgICAgZHN0MS0+YWRkci5vZmZzZXQsIHRydWUp OworCQkJICAgIGRzdDEtPmFkZHIub2Zmc2V0LCAwLCB0cnVlKTsKIAlpbnRlbF9iYl9hZGRfb2Jq ZWN0KGliYiwgZHN0Mi0+aGFuZGxlLCBpbnRlbF9idWZfYm9fc2l6ZShkc3QyKSwKLQkJCSAgICBk c3QyLT5hZGRyLm9mZnNldCwgdHJ1ZSk7CisJCQkgICAgZHN0Mi0+YWRkci5vZmZzZXQsIDAsIHRy dWUpOwogCiAJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CiAJaW50ZWxf YmJfcHRyX2FsaWduKGliYiwgOCk7CkBAIC0xMTc2LDYgKzE0MzMsMTAgQEAgaWd0X21haW5fYXJn cygiZHBpYiIsIE5VTEwsIGhlbHBfc3RyLCBvcHRfaGFuZGxlciwgTlVMTCkKIAkJZ2VuID0gaW50 ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkpOwogCX0KIAorCWlndF9kZXNjcmliZSgi RW5zdXJlIHJlc2V0IGlzIHBvc3NpYmxlIG9uIGZyZXNoIGJiIik7CisJaWd0X3N1YnRlc3QoInJl c2V0LWJiIikKKwkJcmVzZXRfYmIoYm9wcyk7CisKIAlpZ3Rfc3VidGVzdCgic2ltcGxlLWJiIikK IAkJc2ltcGxlX2JiKGJvcHMsIGZhbHNlKTsKIApAQCAtMTE5MSwxNyArMTQ1Miw0NyBAQCBpZ3Rf bWFpbl9hcmdzKCJkcGliIiwgTlVMTCwgaGVscF9zdHIsIG9wdF9oYW5kbGVyLCBOVUxMKQogCWln dF9zdWJ0ZXN0KCJyZXNldC1mbGFncyIpCiAJCXJlc2V0X2ZsYWdzKGJvcHMpOwogCi0JaWd0X3N1 YnRlc3QoImJsaXQtbm9yZWxvYy1rZWVwLWNhY2hlIikKLQkJYmxpdChib3BzLCBOT1JFTE9DLCBL RUVQX0NBQ0hFKTsKKwlpZ3Rfc3VidGVzdCgiYWRkLXJlbW92ZS1vYmplY3RzIikKKwkJYWRkX3Jl bW92ZV9vYmplY3RzKGJvcHMpOwogCi0JaWd0X3N1YnRlc3QoImJsaXQtcmVsb2MtcHVyZ2UtY2Fj aGUiKQotCQlibGl0KGJvcHMsIFJFTE9DLCBQVVJHRV9DQUNIRSk7CisJaWd0X3N1YnRlc3QoImRl c3Ryb3ktYmIiKQorCQlkZXN0cm95X2JiKGJvcHMpOwogCi0JaWd0X3N1YnRlc3QoImJsaXQtbm9y ZWxvYy1wdXJnZS1jYWNoZSIpCi0JCWJsaXQoYm9wcywgTk9SRUxPQywgUFVSR0VfQ0FDSEUpOwor CWlndF9zdWJ0ZXN0KCJvYmplY3QtcmVsb2MtcHVyZ2UtY2FjaGUiKQorCQlvYmplY3RfcmVsb2Mo Ym9wcywgUFVSR0VfQ0FDSEUpOworCisJaWd0X3N1YnRlc3QoIm9iamVjdC1yZWxvYy1rZWVwLWNh Y2hlIikKKwkJb2JqZWN0X3JlbG9jKGJvcHMsIEtFRVBfQ0FDSEUpOworCisJaWd0X3N1YnRlc3Qo Im9iamVjdC1ub3JlbG9jLXB1cmdlLWNhY2hlLXNpbXBsZSIpCisJCW9iamVjdF9ub3JlbG9jKGJv cHMsIFBVUkdFX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKworCWlndF9zdWJ0ZXN0 KCJvYmplY3Qtbm9yZWxvYy1rZWVwLWNhY2hlLXNpbXBsZSIpCisJCW9iamVjdF9ub3JlbG9jKGJv cHMsIEtFRVBfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCisJaWd0X3N1YnRlc3Qo Im9iamVjdC1ub3JlbG9jLXB1cmdlLWNhY2hlLXJhbmRvbSIpCisJCW9iamVjdF9ub3JlbG9jKGJv cHMsIFBVUkdFX0NBQ0hFLCBJTlRFTF9BTExPQ0FUT1JfUkFORE9NKTsKKworCWlndF9zdWJ0ZXN0 KCJvYmplY3Qtbm9yZWxvYy1rZWVwLWNhY2hlLXJhbmRvbSIpCisJCW9iamVjdF9ub3JlbG9jKGJv cHMsIEtFRVBfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9SQU5ET00pOworCisJaWd0X3N1YnRlc3Qo ImJsaXQtcmVsb2MtcHVyZ2UtY2FjaGUiKQorCQlibGl0KGJvcHMsIFJFTE9DLCBQVVJHRV9DQUNI RSwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CiAKIAlpZ3Rfc3VidGVzdCgiYmxpdC1yZWxvYy1r ZWVwLWNhY2hlIikKLQkJYmxpdChib3BzLCBSRUxPQywgS0VFUF9DQUNIRSk7CisJCWJsaXQoYm9w cywgUkVMT0MsIEtFRVBfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCisJaWd0X3N1 YnRlc3QoImJsaXQtbm9yZWxvYy1rZWVwLWNhY2hlLXJhbmRvbSIpCisJCWJsaXQoYm9wcywgTk9S RUxPQywgS0VFUF9DQUNIRSwgSU5URUxfQUxMT0NBVE9SX1JBTkRPTSk7CisKKwlpZ3Rfc3VidGVz dCgiYmxpdC1ub3JlbG9jLXB1cmdlLWNhY2hlLXJhbmRvbSIpCisJCWJsaXQoYm9wcywgTk9SRUxP QywgUFVSR0VfQ0FDSEUsIElOVEVMX0FMTE9DQVRPUl9SQU5ET00pOworCisJaWd0X3N1YnRlc3Qo ImJsaXQtbm9yZWxvYy1rZWVwLWNhY2hlIikKKwkJYmxpdChib3BzLCBOT1JFTE9DLCBLRUVQX0NB Q0hFLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKworCWlndF9zdWJ0ZXN0KCJibGl0LW5vcmVs b2MtcHVyZ2UtY2FjaGUiKQorCQlibGl0KGJvcHMsIE5PUkVMT0MsIFBVUkdFX0NBQ0hFLCBJTlRF TF9BTExPQ0FUT1JfU0lNUExFKTsKIAogCWlndF9zdWJ0ZXN0KCJpbnRlbC1iYi1ibGl0LW5vbmUi KQogCQlkb19pbnRlbF9iYl9ibGl0KGJvcHMsIDEwLCBJOTE1X1RJTElOR19OT05FKTsKLS0gCjIu MjYuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==