From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wan ZongShun Subject: [PATCH] ASoC: Add support for NAU8824 codec to ASoC Date: Sat, 21 Feb 2015 22:39:54 +0800 Message-ID: <1424529594-3540-1-git-send-email-linux@mcuos.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from m59-178.qiye.163.com (m59-178.qiye.163.com [123.58.178.59]) by alsa0.perex.cz (Postfix) with ESMTP id A9448260698 for ; Sat, 21 Feb 2015 15:40:10 +0100 (CET) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: mcuos.com@gmail.com, broonie@kernel.org, lgirdwood@gmail.com, tiwai@suse.de, alsa-devel@alsa-project.org Cc: JSTSENG1@nuvoton.com, ccchang12@nuvoton.com, linux@mcuos.com List-Id: alsa-devel@alsa-project.org VGhlIE5BVTg4TDI0IGlzIGFuIHVsdHJhLWxvdyBwb3dlciBoaWdoIHBlcmZvcm1hbmNlIGF1ZGlv IGNvZGVjIGRlc2lnbmVkCmZvciB0YWJsZXQgUEMsIHVsdHJhIHBvcnRhYmxlIGxhcHRvcHMgYnkg TnV2b3Rvbiwgbm93IGFkZCBsaW51eCBkcml2ZXIKc3VwcG9ydCBmb3IgaXQuCgpTaWduZWQtb2Zm LWJ5OiBXYW4gWm9uZ1NodW4gPGxpbnV4QG1jdW9zLmNvbT4KLS0tCiBzb3VuZC9zb2MvY29kZWNz L0tjb25maWcgICB8ICAgNSArCiBzb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlICB8ICAgMiArCiBz b3VuZC9zb2MvY29kZWNzL25hdTg4MjQuYyB8IDc3MCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIHNvdW5kL3NvYy9jb2RlY3MvbmF1ODgyNC5oIHwgMzc5ICsr KysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTE1NiBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQvc29jL2NvZGVjcy9uYXU4ODI0LmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNzL25hdTg4MjQuaAoKZGlmZiAtLWdpdCBhL3NvdW5k L3NvYy9jb2RlY3MvS2NvbmZpZyBiL3NvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZwppbmRleCAwNjRl NmMxLi44NjJiN2JkIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcKKysrIGIv c291bmQvc29jL2NvZGVjcy9LY29uZmlnCkBAIC03NSw2ICs3NSw3IEBAIGNvbmZpZyBTTkRfU09D X0FMTF9DT0RFQ1MKIAlzZWxlY3QgU05EX1NPQ19NQVg5ODc3IGlmIEkyQwogCXNlbGVjdCBTTkRf U09DX01DMTM3ODMgaWYgTUZEX01DMTNYWFgKIAlzZWxlY3QgU05EX1NPQ19NTDI2MTI0IGlmIEky QworCXNlbGVjdCBTTkRfU09DX05BVTg4MjQgaWYgSTJDCiAJc2VsZWN0IFNORF9TT0NfSERNSV9D T0RFQwogCXNlbGVjdCBTTkRfU09DX1BDTTE2ODEgaWYgSTJDCiAJc2VsZWN0IFNORF9TT0NfUENN MTc5MkEgaWYgU1BJX01BU1RFUgpAQCAtNDYzLDYgKzQ2NCwxMCBAQCBjb25maWcgU05EX1NPQ19N QVg5ODM1N0EKIGNvbmZpZyBTTkRfU09DX01BWDk4NTAKIAl0cmlzdGF0ZQogCitjb25maWcgU05E X1NPQ19OQVU4ODI0CisJdHJpc3RhdGUgIk51dm90b24gTkFVODgyNCBDT0RFQyIKKwlkZXBlbmRz IG9uIEkyQworCiBjb25maWcgU05EX1NPQ19QQ00xNjgxCiAJdHJpc3RhdGUgIlRleGFzIEluc3Ry dW1lbnRzIFBDTTE2ODEgQ09ERUMiCiAJZGVwZW5kcyBvbiBJMkMKZGlmZiAtLWdpdCBhL3NvdW5k L3NvYy9jb2RlY3MvTWFrZWZpbGUgYi9zb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlCmluZGV4IDY5 Yjg2NjYuLmFjYjdiZGEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUKKysr IGIvc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZQpAQCAtNjgsNiArNjgsNyBAQCBzbmQtc29jLW1h eDk4MzU3YS1vYmpzIDo9IG1heDk4MzU3YS5vCiBzbmQtc29jLW1heDk4NTAtb2JqcyA6PSBtYXg5 ODUwLm8KIHNuZC1zb2MtbWMxMzc4My1vYmpzIDo9IG1jMTM3ODMubwogc25kLXNvYy1tbDI2MTI0 LW9ianMgOj0gbWwyNjEyNC5vCitzbmQtc29jLW5hdTg4MjQtb2JqcyA6PSBuYXU4ODI0Lm8KIHNu ZC1zb2MtaGRtaS1jb2RlYy1vYmpzIDo9IGhkbWkubwogc25kLXNvYy1wY20xNjgxLW9ianMgOj0g cGNtMTY4MS5vCiBzbmQtc29jLXBjbTE3OTJhLWNvZGVjLW9ianMgOj0gcGNtMTc5MmEubwpAQCAt MjUwLDYgKzI1MSw3IEBAIG9iai0kKENPTkZJR19TTkRfU09DX01BWDk4MzU3QSkJKz0gc25kLXNv Yy1tYXg5ODM1N2Eubwogb2JqLSQoQ09ORklHX1NORF9TT0NfTUFYOTg1MCkJKz0gc25kLXNvYy1t YXg5ODUwLm8KIG9iai0kKENPTkZJR19TTkRfU09DX01DMTM3ODMpCSs9IHNuZC1zb2MtbWMxMzc4 My5vCiBvYmotJChDT05GSUdfU05EX1NPQ19NTDI2MTI0KQkrPSBzbmQtc29jLW1sMjYxMjQubwor b2JqLSQoQ09ORklHX1NORF9TT0NfTkFVODgyNCkJKz0gc25kLXNvYy1uYXU4ODI0Lm8KIG9iai0k KENPTkZJR19TTkRfU09DX0hETUlfQ09ERUMpICs9IHNuZC1zb2MtaGRtaS1jb2RlYy5vCiBvYmot JChDT05GSUdfU05EX1NPQ19QQ00xNjgxKQkrPSBzbmQtc29jLXBjbTE2ODEubwogb2JqLSQoQ09O RklHX1NORF9TT0NfUENNMTc5MkEpCSs9IHNuZC1zb2MtcGNtMTc5MmEtY29kZWMubwpkaWZmIC0t Z2l0IGEvc291bmQvc29jL2NvZGVjcy9uYXU4ODI0LmMgYi9zb3VuZC9zb2MvY29kZWNzL25hdTg4 MjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGMyMjgzCi0tLSAvZGV2 L251bGwKKysrIGIvc291bmQvc29jL2NvZGVjcy9uYXU4ODI0LmMKQEAgLTAsMCArMSw3NzAgQEAK Ky8qCisgKiBsaW51eC9zb3VuZC9zb2MvY29kZWNzL25hdTg4MjQuYworICoKKyAqIENvcHlyaWdo dCAyMDE1IE51dm90b24gVGVjaG5vbG9neSBDb3JwLgorICogQXV0aG9yOiBNZW5nLUh1YW5nIEt1 byA8bWhrdW9AbnV2b3Rvbi5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisg KiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVk ZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGlu dXgvcG0uaD4KKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+ CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5j bHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvYWNwaS5oPgorI2luY2x1ZGUg PGFzbS9kaXY2NC5oPgorI2luY2x1ZGUgPHNvdW5kL2phY2suaD4KKyNpbmNsdWRlIDxzb3VuZC9j b3JlLmg+CisjaW5jbHVkZSA8c291bmQvcGNtLmg+CisjaW5jbHVkZSA8c291bmQvcGNtX3BhcmFt cy5oPgorI2luY2x1ZGUgPHNvdW5kL3NvYy5oPgorI2luY2x1ZGUgPHNvdW5kL3NvYy1kYXBtLmg+ CisjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgorI2luY2x1ZGUgPHNvdW5kL3Rsdi5oPgorI2lu Y2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisKKyNpbmNsdWRlICJuYXU4ODI0LmgiCisKK3N0YXRpYyBp bnQgbmF1ODgyNF9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0s CisJCQkJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJc3RydWN0IHNuZF9z b2NfZGFpICpkYWkpOworc3RhdGljIGludCBuYXU4ODI0X3NldF9kYWlfZm10KHN0cnVjdCBzbmRf c29jX2RhaSAqY29kZWNfZGFpLAorCQkJCXVuc2lnbmVkIGludCBmbXQpOworc3RhdGljIGludCBu YXU4ODI0X3NldF9iaWFzX2xldmVsKHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYywKKwkJCQll bnVtIHNuZF9zb2NfYmlhc19sZXZlbCBsZXZlbCk7CitzdGF0aWMgaW50IG5hdTg4MjRfc2V0X3N5 c2NsayhzdHJ1Y3Qgc25kX3NvY19jb2RlYyAqY29kZWMsIGludCBjbGtfaWQsCisJCQkJaW50IHNv dXJjZSwgdW5zaWduZWQgaW50IGZyZXEsIGludCBkaXIpOworc3RhdGljIGNvbnN0IERFQ0xBUkVf VExWX0RCX1NDQUxFKG91dF9zcGtfdm9sX3RsdiwgMCwgMTAwLCAwKTsKK3N0YXRpYyBjb25zdCBE RUNMQVJFX1RMVl9EQl9TQ0FMRShvdXRfaHBfdm9sX3RsdiwgLTMwMDAsIDEwMCwgMCk7CitzdGF0 aWMgY29uc3QgREVDTEFSRV9UTFZfREJfU0NBTEUoZGFjX3ZvbF90bHYsIC0xMjgwMCwgNTAsIDAp Oworc3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1NDQUxFKGluX3ZvbF90bHYsIC0zNDUwLCAx NTAsIDApOworc3RhdGljIGNvbnN0IERFQ0xBUkVfVExWX0RCX1NDQUxFKGFkY192b2xfdGx2LCAt MTI4MDAsIDUwLCAwKTsKK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9TQ0FMRShhZGNfbGVm dF92b2xfdGx2LCAtMTI3NTAsIDUwLCAxKTsKK3N0YXRpYyBjb25zdCBERUNMQVJFX1RMVl9EQl9T Q0FMRShhZGNfcmlnaHRfdm9sX3RsdiwgLTEyNzUwLCA1MCwgMSk7CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc25kX2tjb250cm9sX25ldyBuYXU4ODI0X3NuZF9jb250cm9sc1tdID0geworCS8qIFNQ IENsYXNzLUQgbXV0ZSBjb250cm9sICovCisJU09DX0RPVUJMRSgiU1AgUGxheWJhY2sgU3dpdGNo IiwgTkFVODgyNF9DTEFTU19EX0dBSU4xLAorCQkJCU5BVTg4MjRfQ0xBU1NfRF9TRlQsIE5BVTg4 MjRfQ0xBU1NfRF9TRlQsIDEsIDApLAorCS8qIFNQIENsYXNzLUQgZHJpdmVyIG91dHB1dCBzdGFn ZSBnYWluIGNvbnRyb2wgKi8KKwlTT0NfU0lOR0xFX1RMVigiU1AgTGVmdCBWb2x1bWUiLCBOQVU4 ODI0X0NMQVNTX0RfR0FJTjIsCisJCQkJTkFVODgyNF9DTEFTU19EX0dBSU5fTF9TRlQsCisJCQkJ TkFVODgyNF9TUEtfVk9MX1JTQ0xfUkFOR0UsIDAsIG91dF9zcGtfdm9sX3RsdiksCisJU09DX1NJ TkdMRV9UTFYoIlNQIFJpZ2h0IFZvbHVtZSIsIE5BVTg4MjRfQ0xBU1NfRF9HQUlOMSwKKwkJCQlO QVU4ODI0X0NMQVNTX0RfR0FJTl9SX1NGVCwKKwkJCQlOQVU4ODI0X1NQS19WT0xfUlNDTF9SQU5H RSwJMCwKKwkJCQlvdXRfc3BrX3ZvbF90bHYpLAorCS8qIFNQIENsYXNzLUQgbXV0ZSBjb250cm9s ICovCisJU09DX0RPVUJMRSgiSFAgUGxheWJhY2sgU3dpdGNoIiwgTkFVODgyNF9IUF9NVVRFLCBO QVU4ODI0X0xfTVVURV9TRlQsCisJCQkJTkFVODgyNF9SX01VVEVfU0ZULCAxLCAxKSwKKwlTT0Nf U0lOR0xFX1RMVigiSFAgTGVmdCBWb2x1bWUiLCBOQVU4ODI0X0hQX1ZPTCwgTkFVODgyNF9MX1ZP TF9TRlQsCisJCQkJTkFVODgyNF9WT0xfUlNDTF9SQU5HRSwgMSwgb3V0X2hwX3ZvbF90bHYpLAor CVNPQ19TSU5HTEVfVExWKCJIUCBSaWdodCBWb2x1bWUiLCBOQVU4ODI0X0hQX1ZPTCwgTkFVODgy NF9SX1ZPTF9TRlQsCisJCQkJTkFVODgyNF9WT0xfUlNDTF9SQU5HRSwgMSwgb3V0X2hwX3ZvbF90 bHYpLAorCS8qIERNSUMgY29udHJvbCAqLworCVNPQ19ET1VCTEUoIkRNSUMgTCBSIFN3aXRjaCIs IE5BVTg4MjRfRU5BX0NUUkwsIE5BVTg4MjRfRE1JQ19DSDBfU0ZULAorCQkJCU5BVTg4MjRfRE1J Q19DSDFfU0ZULCAxLCAwKSwKKwlTT0NfU0lOR0xFKCJETUlDIEVuYWJsZSIsIE5BVTg4MjRfQklB U19BREosIE5BVTg4MjRfRE1JQzFfU0ZULCAxLCAwKSwKKwlTT0NfU0lOR0xFKCJWTUlEIFN3aXRj aCIsIE5BVTg4MjRfQklBU19BREosIE5BVTg4MjRfVk1JRF9TRlQsIDEsIDApLAorCVNPQ19TSU5H TEUoIkJJQVMgU3dpdGNoIiwgTkFVODgyNF9CT09TVCwgTkFVODgyNF9HX0JJQVNfU0ZULCAxLCAw KSwKKwlTT0NfRE9VQkxFX1JfVExWKCJNSUMgTCBSIEdhaW4iLCBOQVU4ODI0X0FEQ19DSDBfREdB SU5fQ1RSTCwKKwkJCQlOQVU4ODI0X0FEQ19DSDFfREdBSU5fQ1RSTCwgMCwKKwkJCQlOQVU4ODI0 X0FEQ19WT0xfUlNDTF9SQU5HRSwJMCwgYWRjX3ZvbF90bHYpLAorfTsKKworc3RhdGljIGludCBz ZXRfZG1pY19jbGsoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsCisJCQkJc3RydWN0IHNu ZF9rY29udHJvbCAqa2NvbnRyb2wsIGludCBldmVudCkKK3sKKwlzdHJ1Y3Qgc25kX3NvY19jb2Rl YyAqY29kZWMgPSB3LT5jb2RlYzsKKworCXN3aXRjaCAoZXZlbnQpIHsKKwljYXNlIFNORF9TT0Nf REFQTV9QUkVfUE1VOgorCQlzbmRfc29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBOQVU4ODI0X0NMS19E SVZJREVSLAorCQkJCU5BVTg4MjRfQ0xLX0RNSUNfU1JDX01BU0ssCisJCQkJTkFVODgyNF9DTEtf RE1JQ19ESVZfNCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG5hdTg4MjRfcmVj X2xfbWl4W10gPSB7CisJCQkJU09DX0RBUE1fU0lOR0xFKCJCU1QxIFN3aXRjaCIsIFNORF9TT0Nf Tk9QTSwKKwkJCQkwLCAwLCAwKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250 cm9sX25ldyBuYXU4ODI0X3JlY19yX21peFtdID0geworCQkJCVNPQ19EQVBNX1NJTkdMRSgiQlNU MiBTd2l0Y2giLCBTTkRfU09DX05PUE0sCisJCQkJMCwgMCwgMCksCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgbmF1ODgyNF9zcG9fbWl4W10gPSB7CisJCQkJU09D X0RBUE1fU0lOR0xFKCJTUCBMIFN3aXRjaCIsIFNORF9TT0NfTk9QTSwKKwkJCQkwLCAwLCAwKSwK KwkJCQlTT0NfREFQTV9TSU5HTEUoIlNQIFIgU3dpdGNoIiwgU05EX1NPQ19OT1BNLAorCQkJCTAs IDAsIDApLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG5hdTg4 MjRfaHBvX21peFtdID0geworCQkJCVNPQ19EQVBNX1NJTkdMRSgiSFAgTCBTd2l0Y2giLAorCQkJ CU5BVTg4MjRfSFBPX01JWEVSLCBOQVU4ODI0X01fSFBWT0xfTF9ITV9TRlQsCisJCQkJMSwgMCks CisJCQkJU09DX0RBUE1fU0lOR0xFKCJIUCBSIFN3aXRjaCIsCisJCQkJTkFVODgyNF9IUE9fTUlY RVIsIE5BVTg4MjRfTV9IUFZPTF9SX0hNX1NGVCwKKwkJCQkxLCAwKSwKK307CisKK3N0YXRpYyBj b25zdCBjaGFyICogY29uc3QgbmF1ODgyNF9zdGVyZW9fYWRjMV9zcmNbXSA9IHsgIkFEQyIsICJE TUlDIiB9OworCitzdGF0aWMgY29uc3QgU09DX0VOVU1fU0lOR0xFX0RFQ0wobmF1ODgyNF9zdGVy ZW9fYWRjX2wxX2VudW0sIE5BVTg4MjRfRU5BX0NUUkwsCisJCQkJTkFVODgyNF9ETUlDX0NIMF9T RlQsIG5hdTg4MjRfc3RlcmVvX2FkYzFfc3JjKTsKKworc3RhdGljIGNvbnN0IFNPQ19FTlVNX1NJ TkdMRV9ERUNMKG5hdTg4MjRfc3RlcmVvX2FkY19yMV9lbnVtLCBOQVU4ODI0X0VOQV9DVFJMLAor CQkJCU5BVTg4MjRfRE1JQ19DSDFfU0ZULCBuYXU4ODI0X3N0ZXJlb19hZGMxX3NyYyk7CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBuYXU4ODI0X3N0b19hZGNfbDFfbXV4 ID0KKwkJCQlTT0NfREFQTV9FTlVNKCJTdGVyZW8gQURDIEwxIHNvdXJjZSIsCisJCQkJbmF1ODgy NF9zdGVyZW9fYWRjX2wxX2VudW0pOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJv bF9uZXcgbmF1ODgyNF9zdG9fYWRjX3IxX211eCA9CisJCQkJU09DX0RBUE1fRU5VTSgiU3RlcmVv IEFEQyBSMSBzb3VyY2UiLAorCQkJCW5hdTg4MjRfc3RlcmVvX2FkY19yMV9lbnVtKTsKKworc3Rh dGljIGludCBuYXU4ODI0X3Nwa19ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywK KwkJCSAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwgaW50IGV2ZW50KQoreworCXN0 cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IHctPmNvZGVjOworCisJc3dpdGNoIChldmVudCkg eworCWNhc2UgU05EX1NPQ19EQVBNX1BPU1RfUE1VOgorCQlzbmRfc29jX3VwZGF0ZV9iaXRzKGNv ZGVjLCBOQVU4ODI0X0FOQUxPR19DVFJMMiwKKwkJCQlOQVU4ODI0X0NMQVNTX0RfQ0xBTVBfTVNL LAorCQkJCU5BVTg4MjRfQ0xBU1NfRF9DTEFNUF9CRVRURVIpOworCQlicmVhazsKKwljYXNlIFNO RF9TT0NfREFQTV9QUkVfUE1EOgorCQlzbmRfc29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBOQVU4ODI0 X0NMQVNTX0RfR0FJTjEsCisJCQkJTkFVODgyNF9DTEFTU19EX01BU0ssIE5BVTg4MjRfQ0xBU1Nf RF9ESVMpOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBuYXU4ODI0X2hwX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LAorCQkJ CXN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLCBpbnQgZXZlbnQpCit7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgbmF1ODgyNF9kYWMxX2V2ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1f d2lkZ2V0ICp3LAorCQkJCXN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLCBpbnQgZXZlbnQp Cit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWljYmlhc19wb3dlcl9vbl9ldmVudChz dHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywKKwkJCQlzdHJ1Y3Qgc25kX2tjb250cm9sICpr Y29udHJvbCwgaW50IGV2ZW50KQoreworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IHct PmNvZGVjOworCisJaWYgKFNORF9TT0NfREFQTV9FVkVOVF9PTihldmVudCkpCisJCXNuZF9zb2Nf dXBkYXRlX2JpdHMoY29kZWMsIE5BVTg4MjRfQk9PU1QsIE5BVTg4MjRfR19CSUFTX01BU0ssCisJ CQkJTkFVODgyNF9HX0JJQVNfRU4pOworCWVsc2UgaWYgKFNORF9TT0NfREFQTV9FVkVOVF9PRkYo ZXZlbnQpKQorCQlzbmRfc29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBOQVU4ODI0X0JPT1NULCBOQVU4 ODI0X0dfQklBU19NQVNLLAorCQkJCU5BVTg4MjRfR19CSUFTX0RJUyk7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgdm1pZF9wb3dlcl9vbl9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dp ZGdldCAqdywKKwkJCQlzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwgaW50IGV2ZW50KQor eworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IHctPmNvZGVjOworCisJaWYgKFNORF9T T0NfREFQTV9FVkVOVF9PTihldmVudCkpCisJCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29kZWMsIE5B VTg4MjRfQklBU19BREosCisJCQkJTkFVODgyNF9WTUlEX01BU0ssIE5BVTg4MjRfVk1JRF9FTik7 CisJZWxzZSBpZiAoU05EX1NPQ19EQVBNX0VWRU5UX09GRihldmVudCkpCisJCXNuZF9zb2NfdXBk YXRlX2JpdHMoY29kZWMsIE5BVTg4MjRfQklBU19BREosCisJCQkJTkFVODgyNF9WTUlEX01BU0ss IE5BVTg4MjRfVk1JRF9ESVMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IHNuZF9zb2NfZGFwbV93aWRnZXQgbmF1ODgyNF9kYXBtX3dpZGdldHNbXSA9IHsKKworCVNORF9T T0NfREFQTV9JTlBVVCgiRE1JQzEiKSwKKwlTTkRfU09DX0RBUE1fSU5QVVQoIklOMVAiKSwKKwlT TkRfU09DX0RBUE1fSU5QVVQoIklOMU4iKSwKKwlTTkRfU09DX0RBUE1fSU5QVVQoIklOMlAiKSwK KwlTTkRfU09DX0RBUE1fSU5QVVQoIklOMk4iKSwKKworCVNORF9TT0NfREFQTV9TVVBQTFkoIm1p Y2JpYXMiLCBTTkRfU09DX05PUE0sIDAsIDAsCisJCQkJbWljYmlhc19wb3dlcl9vbl9ldmVudCwg U05EX1NPQ19EQVBNX1BSRV9QTVUKKwkJCQl8IFNORF9TT0NfREFQTV9QT1NUX1BNRCksCisKKwlT TkRfU09DX0RBUE1fU1VQUExZKCJ2bWlkIiwgU05EX1NPQ19OT1BNLCAwLCAwLCB2bWlkX3Bvd2Vy X29uX2V2ZW50LAorCQkJCVNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1Rf UE1EKSwKKworCVNORF9TT0NfREFQTV9QR0EoIkRNSUMgTDEiLCBOQVU4ODI0X0VOQV9DVFJMLCBO QVU4ODI0X0RNSUNfQ0gwX1NGVCwKKwkJCQkwLCBOVUxMLCAwKSwKKwlTTkRfU09DX0RBUE1fUEdB KCJETUlDIFIxIiwgTkFVODgyNF9FTkFfQ1RSTCwgTkFVODgyNF9ETUlDX0NIMV9TRlQsCisJCQkJ MCwgTlVMTCwgMCksCisJU05EX1NPQ19EQVBNX1NVUFBMWSgiRE1JQyBDTEsiLCBTTkRfU09DX05P UE0sIDAsIDAsIHNldF9kbWljX2NsaywKKwkJCQlTTkRfU09DX0RBUE1fUFJFX1BNVSksCisKKwkv KiBSRUMgTWl4ZXIgKi8KKwlTTkRfU09DX0RBUE1fTUlYRVIoIlJFQ01JWEwiLCBTTkRfU09DX05P UE0sIDAsIDAsIG5hdTg4MjRfcmVjX2xfbWl4LAorCQkJCUFSUkFZX1NJWkUobmF1ODgyNF9yZWNf bF9taXgpKSwKKwlTTkRfU09DX0RBUE1fTUlYRVIoIlJFQ01JWFIiLCBTTkRfU09DX05PUE0sIDAs IDAsIG5hdTg4MjRfcmVjX3JfbWl4LAorCQkJCUFSUkFZX1NJWkUobmF1ODgyNF9yZWNfcl9taXgp KSwKKworCS8qIEFEQ3MgKi8KKwlTTkRfU09DX0RBUE1fQURDKCJBREMgTCIsIE5VTEwsIFNORF9T T0NfTk9QTSwgMCwgMCksCisJU05EX1NPQ19EQVBNX0FEQygiQURDIFIiLCBOVUxMLCBTTkRfU09D X05PUE0sIDAsIDApLAorCisJLyogQURDIE11eCAqLworCVNORF9TT0NfREFQTV9NVVgoIlN0ZXJl byBBREMgTDEgTXV4IiwgU05EX1NPQ19OT1BNLCAwLCAwLAorCQkJCSZuYXU4ODI0X3N0b19hZGNf bDFfbXV4KSwKKwlTTkRfU09DX0RBUE1fTVVYKCJTdGVyZW8gQURDIFIxIE11eCIsIFNORF9TT0Nf Tk9QTSwgMCwgMCwKKwkJCQkmbmF1ODgyNF9zdG9fYWRjX3IxX211eCksCisJLyogQURDIElGMSAg Ki8KKwlTTkRfU09DX0RBUE1fUEdBKCJJRjEgQURDIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxM LCAwKSwKKworCS8qIEF1ZGlvIEludGVyZmFjZSAqLworCVNORF9TT0NfREFQTV9BSUZfSU4oIkFJ RjFSWCIsICJBSUYxIFBsYXliYWNrIiwgMCwgU05EX1NPQ19OT1BNLCAwLCAwKSwKKwlTTkRfU09D X0RBUE1fQUlGX09VVCgiQUlGMVRYIiwgIkFJRjEgQ2FwdHVyZSIsIDAsIFNORF9TT0NfTk9QTSwg MCwgMCksCisKKwkvKiBEQUNzICovCisJU05EX1NPQ19EQVBNX0RBQ19FKCJEQUMgTDEiLCBOVUxM LCBOQVU4ODI0X0RBQ19DVFJMLAorCQkJCU5BVTg4MjRfREFDX0xfU0ZULCAwLCBuYXU4ODI0X2Rh YzFfZXZlbnQsCisJCQkJU05EX1NPQ19EQVBNX1BSRV9QTUQpLAorCVNORF9TT0NfREFQTV9EQUNf RSgiREFDIFIxIiwgTlVMTCwgTkFVODgyNF9EQUNfQ1RSTCwKKwkJCQlOQVU4ODI0X0RBQ19SX1NG VCwgMCwgbmF1ODgyNF9kYWMxX2V2ZW50LAorCQkJCVNORF9TT0NfREFQTV9QUkVfUE1EKSwKKwor CS8qIFNQTy9IUE8vTE9VVC9Nb25vIE1peGVyICovCisJU05EX1NPQ19EQVBNX01JWEVSKCJTUE8g TUlYIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBuYXU4ODI0X3Nwb19taXgsCisJCQkJQVJSQVlfU0la RShuYXU4ODI0X3Nwb19taXgpKSwKKwlTTkRfU09DX0RBUE1fTUlYRVIoIkhQTyBNSVgiLCBTTkRf U09DX05PUE0sIDAsIDAsIG5hdTg4MjRfaHBvX21peCwKKwkJCQlBUlJBWV9TSVpFKG5hdTg4MjRf aHBvX21peCkpLAorCisJU05EX1NPQ19EQVBNX1BHQV9TKCJIUCBhbXAiLCAxLCBOQVU4ODI0X0NM QVNTX0dfQ1RSTCwKKwlOQVU4ODI0X0NMQVNTX0dfU0hJRlQsIDAsIG5hdTg4MjRfaHBfZXZlbnQs CisJCQkJU05EX1NPQ19EQVBNX1BSRV9QTUQgfCBTTkRfU09DX0RBUE1fUE9TVF9QTVUpLAorCVNO RF9TT0NfREFQTV9QR0FfUygiU1BLIGFtcCIsIDEsIE5BVTg4MjRfQ0xBU1NfRF9HQUlOMSwKKwkJ CQlOQVU4ODI0X0NMQVNTX0RfU0ZULCAwLCBuYXU4ODI0X3Nwa19ldmVudCwKKwkJCQlTTkRfU09D X0RBUE1fUFJFX1BNRCB8IFNORF9TT0NfREFQTV9QT1NUX1BNVSksCisKKwkvKiBPdXRwdXQgTGlu ZXMgKi8KKwlTTkRfU09DX0RBUE1fT1VUUFVUKCJTUEsiKSwKKwlTTkRfU09DX0RBUE1fT1VUUFVU KCJIUE9MIiksCisJU05EX1NPQ19EQVBNX09VVFBVVCgiSFBPUiIpLAorfTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgbmF1ODgyNF9kYXBtX3JvdXRlc1tdID0gewor CisJeyJETUlDIEwxIiwgTlVMTCwgIkRNSUMxIn0sCisJeyJETUlDIFIxIiwgTlVMTCwgIkRNSUMx In0sCisKKwl7IkJTVDEiLCBOVUxMLCAiSU4xUCJ9LAorCXsiQlNUMSIsIE5VTEwsICJJTjFOIn0s CisJeyJCU1QyIiwgTlVMTCwgIklOMlAifSwKKwl7IkJTVDIiLCBOVUxMLCAiSU4yTiJ9LAorCXsi SU4yUCIsIE5VTEwsICJtaWNiaWFzIn0sCisJeyJJTjJQIiwgTlVMTCwgInZtaWQifSwKKworCXsi UkVDTUlYTCIsICJCU1QxIFN3aXRjaCIsICJCU1QxIn0sCisJeyJSRUNNSVhSIiwgIkJTVDIgU3dp dGNoIiwgIkJTVDIifSwKKworCXsiQURDIEwiLCBOVUxMLCAiUkVDTUlYTCJ9LAorCXsiQURDIFIi LCBOVUxMLCAiUkVDTUlYUiJ9LAorCXsiRE1JQyBMMSIsIE5VTEwsICJETUlDIENMSyJ9LAorCXsi RE1JQyBSMSIsIE5VTEwsICJETUlDIENMSyJ9LAorCisJeyJTdGVyZW8gQURDIEwxIE11eCIsICJB REMiLCAiQURDIEwifSwKKwl7IlN0ZXJlbyBBREMgTDEgTXV4IiwgIkRNSUMiLCAiRE1JQyBMMSJ9 LAorCXsiU3RlcmVvIEFEQyBSMSBNdXgiLCAiQURDIiwgIkFEQyBSIn0sCisJeyJTdGVyZW8gQURD IFIxIE11eCIsICJETUlDIiwgIkRNSUMgUjEifSwKKwl7IkFJRjFUWCIsIE5VTEwsICJJRjEgQURD In0sCisKKwl7IkRBQyBMMSIsIE5VTEwsICJBSUYxUlgifSwKKwl7IkRBQyBSMSIsIE5VTEwsICJB SUYxUlgifSwKKwl7IlNQTyBNSVgiLCAiU1AgTCBTd2l0Y2giLCAiREFDIEwxIn0sCisJeyJTUE8g TUlYIiwgIlNQIFIgU3dpdGNoIiwgIkRBQyBSMSJ9LAorCXsiU1BLIGFtcCIsIE5VTEwsICJTUE8g TUlYIn0sCisJeyJTUEsiLCBOVUxMLCAiU1BLIGFtcCJ9LAorCisJeyJIUE8gTUlYIiwgIkhQIEwg U3dpdGNoIiwgIkRBQyBMMSJ9LAorCXsiSFBPIE1JWCIsICJIUCBSIFN3aXRjaCIsICJEQUMgUjEi fSwKKwl7IkhQIGFtcCIsIE5VTEwsICJIUE8gTUlYIn0sCisJeyJIUE9MIiwgTlVMTCwgIkhQIGFt cCJ9LAorCXsiSFBPUiIsIE5VTEwsICJIUCBhbXAifSwKK307CisKK3N0YXRpYyBpbnQgbmF1ODgy NF9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkJc3Ry dWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsCisJCQkJc3RydWN0IHNuZF9zb2NfZGFpICp0 bXApCit7CisJc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCA9IHN1YnN0cmVhbS0+cHJp dmF0ZV9kYXRhOworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IHJ0ZC0+Y29kZWM7CisJ dW5zaWduZWQgaW50IHZhbF9sZW4gPSAwOworCisJZGV2X2RiZyhjb2RlYy0+ZGV2LCAiJXNcbiIs IF9fZnVuY19fKTsKKwlkZXZfZGJnKGNvZGVjLT5kZXYsICIjIy0gRGF0YSBsZW5ndGg6ICVkXG4i LCBwYXJhbXNfZm9ybWF0KHBhcmFtcykpOworCisJc3dpdGNoIChwYXJhbXNfZm9ybWF0KHBhcmFt cykpIHsKKwljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzE2X0xFOgorCQlicmVhazsKKwljYXNlIFNO RFJWX1BDTV9GT1JNQVRfUzIwXzNMRToKKwkJdmFsX2xlbiB8PSBOQVU4ODI0X0kyU19ETF8yMDsK KwkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1MyNF9MRToKKwkJdmFsX2xlbiB8PSBO QVU4ODI0X0kyU19ETF8yNDsKKwkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1M4Ogor CWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMzJfTEU6CisJCXZhbF9sZW4gfD0gTkFVODgyNF9JMlNf RExfMzI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlzbmRf c29jX3VwZGF0ZV9iaXRzKGNvZGVjLCBOQVU4ODI0X0kyU19QQ01fQ1RSTF8xLCBOQVU4ODI0X0ky U19ETF9NQVNLLAorCQkJCXZhbF9sZW4pOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG5h dTg4MjRfZGFjX211dGUoc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWksIGludCBtdXRlKQor eworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IGNvZGVjX2RhaS0+Y29kZWM7CisKKwlp ZiAobXV0ZSkKKwkJc25kX3NvY191cGRhdGVfYml0cyhjb2RlYywgTkFVODgyNF9EQUNfTVVURV9D VFJMLAorCQkJCU5BVTg4MjRfU09GVF9NVVRFX01BU0ssIE5BVTg4MjRfU09GVF9NVVRFX0VOKTsK KwllbHNlCisJCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29kZWMsIE5BVTg4MjRfREFDX01VVEVfQ1RS TCwKKwkJCQlOQVU4ODI0X1NPRlRfTVVURV9NQVNLLCBOQVU4ODI0X1NPRlRfTVVURV9ESVMpOwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG5hdTg4MjRfc2V0X2RhaV9mbXQoc3RydWN0IHNu ZF9zb2NfZGFpICpjb2RlY19kYWksIHVuc2lnbmVkIGludCBmbXQpCit7CisJc3RydWN0IHNuZF9z b2NfY29kZWMgKmNvZGVjID0gY29kZWNfZGFpLT5jb2RlYzsKKwl1bnNpZ25lZCBpbnQgcmVnX3Zh bCA9IDAsIHJlZ192YWxfMiA9IDA7CisKKwlkZXZfZGJnKGNvZGVjLT5kZXYsICIlczogRW50ZXJl ZFxuIiwgX19mdW5jX18pOworCWRldl9kYmcoY29kZWMtPmRldiwgIiMjI25hdTg4MjRfc2V0X2Rh aV9mbXQgJXhcbiIsIGZtdCk7CisJZGV2X2RiZyhjb2RlYy0+ZGV2LCAiIyMrIG5hdTg4MjRfc2V0 X2RhaV9mbXQgKCV4KVxuIiwgZm10KTsKKworCS8qIHNldCBtYXN0ZXIvc2xhdmUgYXVkaW8gaW50 ZXJmYWNlICovCisJc3dpdGNoIChmbXQgJiBTTkRfU09DX0RBSUZNVF9NQVNURVJfTUFTSykgewor CWNhc2UgU05EX1NPQ19EQUlGTVRfQ0JNX0NGTToKKwkJcmVnX3ZhbF8yIHw9IE5BVTg4MjRfSTJT X01TX007CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfQ0JTX0NGUzoKKwkJYnJlYWs7 CisJY2FzZSBTTkRfU09DX0RBSUZNVF9DQlNfQ0ZNOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlk ZXZfYWxlcnQoY29kZWMtPmRldiwgIkludmFsaWQgREFJIG1hc3Rlci9zbGF2ZSBpbnRlcmZhY2Vc biIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBpbnRlcmZhY2UgZm9ybWF0ICovCisJ c3dpdGNoIChmbXQgJiBTTkRfU09DX0RBSUZNVF9JTlZfTUFTSykgeworCWNhc2UgU05EX1NPQ19E QUlGTVRfTkJfTkY6CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJfTkY6CisJCXJl Z192YWwgfD0gTkFVODgyNF9JMlNfQlBfSU5WOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwlzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9N QVNLKSB7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9JMlM6CisJCXJlZ192YWwgfD0gTkFVODgyNF9J MlNfREZfSTJTOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0xFRlRfSjoKKwkJcmVn X3ZhbCB8PSBOQVU4ODI0X0kyU19ERl9MRUZUOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJ Rk1UX1JJR0hUX0o6CisJCXJlZ192YWwgfD0gTkFVODgyNF9JMlNfREZfUklHSFQ7CisJCWJyZWFr OworCWNhc2UgU05EX1NPQ19EQUlGTVRfRFNQX0E6CisJCXJlZ192YWwgfD0gTkFVODgyNF9JMlNf REZfUENNX0E7CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfRFNQX0I6CisJCXJlZ192 YWwgfD0gTkFVODgyNF9JMlNfREZfUENNX0I7CisJCXJlZ192YWwgfD0gTkFVODgyNF9JMlNfUENN Ql9FTjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJc25k X3NvY191cGRhdGVfYml0cyhjb2RlYywgTkFVODgyNF9JMlNfUENNX0NUUkxfMSwKKwkJCQlOQVU4 ODI0X0kyU19ETF9NQVNLIHwgTkFVODgyNF9JMlNfREZfTUFTSworCQkJCXwgTkFVODgyNF9JMlNf QlBfTUFTSyB8IE5BVTg4MjRfSTJTX1BDTUJfTUFTSywKKwkJCQlyZWdfdmFsKTsKKwlzbmRfc29j X3VwZGF0ZV9iaXRzKGNvZGVjLCBOQVU4ODI0X0kyU19QQ01fQ1RSTF8yLCBOQVU4ODI0X0kyU19N U19NQVNLLAorCQkJCXJlZ192YWxfMik7CisKKwlkZXZfZGJnKGNvZGVjLT5kZXYsICIjIy1uYXU4 ODI0X3NldF9kYWlfZm10IE1hc3RlclxuIik7CisJZGV2X2RiZyhjb2RlYy0+ZGV2LCAiJXM6IEV4 aXRpbmdcbiIsIF9fZnVuY19fKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuYXU4ODI0 X0ZMTF9mcmVlcnVuX21vZGUoc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjLCBpbnQgSXNFbmFi bGUpCit7CisJaWYgKElzRW5hYmxlID09IHRydWUpIHsKKwkJc25kX3NvY193cml0ZShjb2RlYywg MHgwMywgMHgwODUzKTsKKwkJc25kX3NvY193cml0ZShjb2RlYywgMHgwOSwgMHhFMDAwKTsKKwkJ c25kX3NvY193cml0ZShjb2RlYywgMHgwMywgMHg4ODUzKTsKKwl9IGVsc2UgeworCQlzbmRfc29j X3dyaXRlKGNvZGVjLCAweDAzLCAweDA4NTMpOworCQlzbmRfc29jX3dyaXRlKGNvZGVjLCAweDA5 LCAweDYwMDApOworCQlzbmRfc29jX3dyaXRlKGNvZGVjLCAweDAzLCAweDg4NTMpOworCX0KKwly ZXR1cm4gMDsKK30KKwordm9pZCBzZXRfc3lzX2NsayhzdHJ1Y3Qgc25kX3NvY19jb2RlYyAqY29k ZWMsIGludCBzeXNfY2xrKQoreworCXByX2RlYnVnKCIlcyBzeXNfY2xrPSV4XG4iLCBfX2Z1bmNf Xywgc3lzX2Nsayk7CisJc3dpdGNoIChzeXNfY2xrKSB7CisJY2FzZSBOQVU4ODI0X0lOVEVSTkFM Q0xPQ0s6CisJCW5hdTg4MjRfRkxMX2ZyZWVydW5fbW9kZShjb2RlYywgdHJ1ZSk7CisJCWJyZWFr OworCisJY2FzZSBOQVU4ODI0X01DTEs6CisJZGVmYXVsdDoKKwkJbmF1ODgyNF9GTExfZnJlZXJ1 bl9tb2RlKGNvZGVjLCBmYWxzZSk7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGludCBuYXU4 ODI0X3NldF9kYWlfcGxsKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpLAorCQlpbnQgcGxsX2lkLCBp bnQgc291cmNlLCB1bnNpZ25lZCBpbnQgZnJlcV9pbiwKKwkJdW5zaWduZWQgaW50IGZyZXFfb3V0 KQoreworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IGRhaS0+Y29kZWM7CisKKwlkZXZf ZGJnKGNvZGVjLT5kZXYsICJJbiBuYXU4ODI0OiBkYWlfc2V0X3BsbFxuIik7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgbmF1ODgyNF9zZXRfc3lzY2xrKHN0cnVjdCBzbmRfc29jX2NvZGVj ICpjb2RlYywKKwkJaW50IGNsa19pZCwgaW50IHNvdXJjZSwgdW5zaWduZWQgaW50IGZyZXEsIGlu dCBkaXIpCit7CisJaW50IGRpdmlkZXIgPSAxOworCisJaWYgKGNsa19pZCA9PSBOQVU4ODI0X01D TEspIHsKKwkJc2V0X3N5c19jbGsoY29kZWMsIE5BVTg4MjRfTUNMSyk7CisJCWRldl9kYmcoY29k ZWMtPmRldiwgIiVzOiBpbnB1dCBmcmVxID0gJWQgZGl2aWRlciA9ICVkIiwKKwkJX19mdW5jX18s IGZyZXEsIGRpdmlkZXIpOworCisJfSBlbHNlIGlmIChjbGtfaWQgPT0gTkFVODgyNF9JTlRFUk5B TENMT0NLKSB7CisJCXNldF9zeXNfY2xrKGNvZGVjLCBOQVU4ODI0X0lOVEVSTkFMQ0xPQ0spOwor CX0gZWxzZSB7CisJCWRldl9lcnIoY29kZWMtPmRldiwgIldyb25nIGNsb2NrIHNyY1xuIik7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuYXU4ODI0 X3NldF9iaWFzX2xldmVsKHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYywKKwkJCQllbnVtIHNu ZF9zb2NfYmlhc19sZXZlbCBsZXZlbCkKK3sKKwlkZXZfZGJnKGNvZGVjLT5kZXYsICIjIyBuYXU4 ODI0X3NldF9iaWFzX2xldmVsICVkXG4iLCBsZXZlbCk7CisJaWYgKGxldmVsID09IGNvZGVjLT5k YXBtLmJpYXNfbGV2ZWwpIHsKKwkJZGV2X2RiZyhjb2RlYy0+ZGV2LCAiIyNzZXRfYmlhc19sZXZl bDogbGV2ZWwgcmV0dXJuaW5nLi4uXHJcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlz d2l0Y2ggKGxldmVsKSB7CisJY2FzZSBTTkRfU09DX0JJQVNfT046CisJCS8qIEFsbCBwb3dlciBp cyBkcml2ZW4gYnkgREFQTSBzeXN0ZW0qLworCQlkZXZfZGJnKGNvZGVjLT5kZXYsICIjIyNuYXU4 ODI0X3NldF9iaWFzX2xldmVsIEJJQVNfT05cbiIpOworCQlzbmRfc29jX3VwZGF0ZV9iaXRzKGNv ZGVjLCBOQVU4ODI0X0JJQVNfQURKLAorCQkJTkFVODgyNF9WTUlEX01BU0ssIE5BVTg4MjRfVk1J RF9FTik7CisJCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29kZWMsIE5BVTg4MjRfQk9PU1QsCisJCQkJ TkFVODgyNF9HX0JJQVNfTUFTSywgTkFVODgyNF9HX0JJQVNfRU4pOworCQlicmVhazsKKworCWNh c2UgU05EX1NPQ19CSUFTX1BSRVBBUkU6CisJCWRldl9kYmcoY29kZWMtPmRldiwgIiMjI25hdTg4 MjRfc2V0X2JpYXNfbGV2ZWwgQklBU19QUkVQQVJFXG4iKTsKKwkJYnJlYWs7CisKKwljYXNlIFNO RF9TT0NfQklBU19TVEFOREJZOgorCQlkZXZfZGJnKGNvZGVjLT5kZXYsICIjIyNuYXU4ODI0X3Nl dF9iaWFzX2xldmVsIFNUQU5EQllcbiIpOworCQlicmVhazsKKworCWNhc2UgU05EX1NPQ19CSUFT X09GRjoKKwkJZGV2X2RiZyhjb2RlYy0+ZGV2LCAiIyMjbmF1ODgyNF9zZXRfYmlhc19sZXZlbCBP RkZcbiIpOworCQlzZXRfc3lzX2Nsayhjb2RlYywgTkFVODgyNF9JTlRFUk5BTENMT0NLKTsKKwkJ c25kX3NvY191cGRhdGVfYml0cyhjb2RlYywgTkFVODgyNF9CSUFTX0FESiwgTkFVODgyNF9WTUlE X01BU0ssCisJCQkJTkFVODgyNF9WTUlEX0RJUyk7CisJCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29k ZWMsIE5BVTg4MjRfQk9PU1QsCisJCQkJTkFVODgyNF9HX0JJQVNfTUFTSywgTkFVODgyNF9HX0JJ QVNfRElTKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCWNvZGVjLT5kYXBt LmJpYXNfbGV2ZWwgPSBsZXZlbDsKKwlkZXZfZGJnKGNvZGVjLT5kZXYsICIjIyBuYXU4ODI0X3Nl dF9iaWFzX2xldmVsICVkXG4iLCBsZXZlbCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBuYXU4ODI0X3N1c3BlbmQoc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjKQoreworCWRldl9k YmcoY29kZWMtPmRldiwgIiVzOiBFbnRlcmVkXG4iLCBfX2Z1bmNfXyk7CisJbmF1ODgyNF9zZXRf Ymlhc19sZXZlbChjb2RlYywgU05EX1NPQ19CSUFTX09GRik7CisJZGV2X2RiZyhjb2RlYy0+ZGV2 LCAiJXM6IEV4aXRpbmdcbiIsIF9fZnVuY19fKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBuYXU4ODI0X3Jlc3VtZShzdHJ1Y3Qgc25kX3NvY19jb2RlYyAqY29kZWMpCit7CisJZGV2X2Ri Zyhjb2RlYy0+ZGV2LCAiJXM6IEVudGVyZWRcbiIsIF9fZnVuY19fKTsKKwluYXU4ODI0X3NldF9i aWFzX2xldmVsKGNvZGVjLCBTTkRfU09DX0JJQVNfU1RBTkRCWSk7CisJZGV2X2RiZyhjb2RlYy0+ ZGV2LCAiJXM6IEV4aXRpbmdcbiIsIF9fZnVuY19fKTsKKwlyZXR1cm4gMDsKK30KKworc3RydWN0 IG5hdTg4MjRfaW5pdF9yZWcgeworCXU4IHJlZzsKKwl1MTYgdmFsOworfTsKKworc3RhdGljIHN0 cnVjdCBuYXU4ODI0X2luaXRfcmVnIGluaXRfbGlzdFtdID0geworCXsweDAwMDAsIDB4MDAwMX0s CisJezB4MDAwMCwgMHgwMDAwfSwKKwl7MHgwMDY2LCAweDAwNjB9LAorCXsweDAwNzYsIDB4MzAw MH0sCisJezB4MDAwNCwgMHgwMDAyfSwKKwl7MHgwMDA1LCAweERENDR9LAorCXsweDAwMDYsIDB4 MDAwN30sCisJezB4MDAwNywgMHgwODEwfSwKKwl7MHgwMDA4LCAweEMwMDB9LAorCXsweDAwNzQs IDB4MTEwNn0sCisJezB4MDA3MywgMHgzMzBDfSwKKwl7MHgwMDgwLCAweDAwMDB9LAorCXsweDAw NkQsIDB4MDEwMH0sCisJezB4MDA2RSwgMHgwMDAxfSwKKwl7MHgwMDZBLCAweDAwMDh9LAorCXsw eDAwNkQsIDB4MDE4MH0sCisJezB4MDA2RCwgMHgxNDgwfSwKKwl7MHgwMDZFLCAweDAwMTR9LAor CXsweDAwNTAsIDB4MjAwN30sCisJezB4MDA4MCwgMHgzMDIwfSwKKwl7MHgwMDZCLCAweEMwMDB9 LAorCXsweDAwN0IsIDB4MUUxRX0sCisJezB4MDA2QiwgMHhDMDA1fSwKKwl7MHgwMDY4LCAweDgw MDB9LAorCXsweDAwNzYsIDB4MzAwRn0sCisJezB4MDA3RiwgMHgwMDBGfSwKKwl7MHgwMDgwLCAw eDAwMjB9LAorCXsweDAwNkIsIDB4MDAwNX0sCisJezB4MDA3QiwgMHgwMDAwfSwKKwl7MHgwMDAy LCAweDA4MDB9LAorCXsweDAwMjUsIDB4MTAwMH0sCisJezB4MDAyNCwgMHgwMDAyfSwKKwl7MHgw MDAyLCAweDBBQTV9LAorCXsweDAwMjAsIDB4MDAwMH0sCisJezB4MDAyNSwgMHgxMDgyfSwKKwl7 MHgwMDMxLCAweDA4MDB9LAorCXsweDAwMzIsIDB4MDEwMH0sCisJezB4MDAzMywgMHgwMzAwfSwK Kwl7MHgwMDM0LCAweDAwMDB9LAorCXsweDAwMUMsIDB4MDAwQX0sCisJezB4MDAxRiwgMHgyMDAw fSwKKwl7MHgwMDAxLCAweDAwMzB9LAorCXsweDAwMDIsIDB4M0FBNX0sCisJezB4MDA2NywgMHg0 MDQwfSwKKwl7MHgwMDdGLCAweDMwMEZ9LAorCXsweDAwNzcsIDB4MDAxMH0sCisJezB4MDA3OCwg MHgzQzAwfSwKKwl7MHgwMDc2LCAweDM4MEZ9LAorCXsweDAwNzYsIDB4MzAwRn0sCisJezB4MDA3 QSwgMHgwMjAyfSwKKwl7MHgwMDY3LCAweDAwMDB9LAorCXsweDAwNzIsIDB4NDBBMH0sCisJezB4 MDA3OSwgMHgwMzAwfSwKKwl7MHgwMDIzLCAweDEwMTB9LAorCXsweDAwMjQsIDB4MDAwMn0sCisJ ezB4MDAzOCwgMHgxNDg2fSwKKwl7MHgwMDNDLCAweDE0ODZ9LAorCXsweDAwNjYsIDB4MDA2NH0s CisJezB4MDAwMSwgMHg0MEYwfSwKKwl7MHgwMDAxLCAweDQ4RjB9LAorCXsweDAwMjUsIDB4MzA4 Mn0sCisJezB4MDAyMCwgMHgwMDAzfSwKKwl7MHgwMDI0LCAweDgxMDJ9LAorCXsweDAwMkQsIDB4 MDEwOH0sCisJezB4MDAyRSwgMHgwMzA4fSwKKwl7MHgwMDJGLCAweDA1MDB9LAorCXsweDAwMzAs IDB4MDcwMH0sCisJezB4MDAxQywgMHgwMDBBfSwKKwl7MHgwMDFGLCAweDIwMDB9LAorCXsweDAw MDIsIDB4M0JBNX0sCisJezB4MDAwMSwgMHg0OEYzfSwKKwl7MHgwMDAyLCAweEZCQTV9LAorCXsw eDAwMTQsIDB4MjIxMH0sCisJezB4MDA3YywgMHgxZTFlfSwKK307CisKKyNkZWZpbmUgTkFVODgy NF9JTklUX1JFR19MRU4gQVJSQVlfU0laRShpbml0X2xpc3QpCitzdGF0aWMgaW50IG5hdTg4MjRf cmVnX2luaXQoc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjKQoreworCWludCBpOworCisJbWRl bGF5KDEpOworCWZvciAoaSA9IDA7IGkgPCBOQVU4ODI0X0lOSVRfUkVHX0xFTjsgaSsrKSB7CisJ CWlmIChpbml0X2xpc3RbaV0ucmVnID09IDB4RkZGRikKKwkJCW1kZWxheSgxKTsKKwkJZWxzZQor CQkJc25kX3NvY193cml0ZShjb2RlYywgaW5pdF9saXN0W2ldLnJlZywKKwkJCWluaXRfbGlzdFtp XS52YWwpOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBuYXU4ODI0X2NvZGVjX3By b2JlKHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYykKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1 Y3QgbmF1ODgyNF9wcml2ICpuYXU4ODI0OworCisJbmF1ODgyNCA9IHNuZF9zb2NfY29kZWNfZ2V0 X2RydmRhdGEoY29kZWMpOworCWNvZGVjLT5jb250cm9sX2RhdGEgPSBuYXU4ODI0LT5yZWdtYXA7 CisJbXV0ZXhfaW5pdCgmbmF1ODgyNC0+bXV0ZXgpOworCW5hdTg4MjRfcmVnX2luaXQoY29kZWMp OworCisJLyogRHluYW1pYyBIZWFkc2V0IGRldGVjdGlvbiBlbmFibGVkICovCisJc25kX3NvY191 cGRhdGVfYml0cyhjb2RlYywgMHgwMSwgMHg0MDAsIDB4NDAwKTsKKwlzbmRfc29jX3VwZGF0ZV9i aXRzKGNvZGVjLCAweDAyLCAweDAwMDgsIDB4MDAwOCk7CisJc25kX3NvY191cGRhdGVfYml0cyhj b2RlYywgMHgwZiwgMHgwMzAwLCAweDAxMDApOworCXNuZF9zb2Nfd3JpdGUoY29kZWMsIDB4MDks IDB4RTAwMCk7CisJc25kX3NvY193cml0ZShjb2RlYywgTkFVODgyNF9JUlFfU0VUVElORywgMHgx MDA2KTsKKwlzbmRfc29jX3dyaXRlKGNvZGVjLCAweDEzLCAweDE2MTUpOworCXNuZF9zb2Nfd3Jp dGUoY29kZWMsIDB4MTUsIDB4MDQxNCk7CisJc25kX3NvY191cGRhdGVfYml0cyhjb2RlYywgMHgx NiwgMHhGRjAwLCAweDU5MDApOworCXNuZF9zb2NfdXBkYXRlX2JpdHMoY29kZWMsIDB4NjYsIDB4 MDA3MCwgMHgwMDYwKTsKKworCS8qIFByb2dyYW0gY29kZWMgdG8gdXNlIGludGVybmFsIGNsb2Nr ICovCisJbmF1ODgyNF9GTExfZnJlZXJ1bl9tb2RlKGNvZGVjLCB0cnVlKTsKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50IG5hdTg4MjRfY29kZWNfcmVtb3ZlKHN0cnVjdCBzbmRfc29jX2Nv ZGVjICpjb2RlYykKK3sKKwluYXU4ODI0X3NldF9iaWFzX2xldmVsKGNvZGVjLCBTTkRfU09DX0JJ QVNfT0ZGKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzbmRfc29jX2NvZGVjX2Ry aXZlciBzb2NfY29kZWNfZHJpdmVyX25hdTg4MjQgPSB7CisJLnByb2JlCQkJPSBuYXU4ODI0X2Nv ZGVjX3Byb2JlLAorCS5yZW1vdmUJCQk9IG5hdTg4MjRfY29kZWNfcmVtb3ZlLAorCS5zdXNwZW5k CQk9IG5hdTg4MjRfc3VzcGVuZCwKKwkucmVzdW1lCQkJPSBuYXU4ODI0X3Jlc3VtZSwKKwkuc2V0 X2JpYXNfbGV2ZWwJCT0gbmF1ODgyNF9zZXRfYmlhc19sZXZlbCwKKwkuY29udHJvbHMJCT0gbmF1 ODgyNF9zbmRfY29udHJvbHMsCisJLm51bV9jb250cm9scwkJPSBBUlJBWV9TSVpFKG5hdTg4MjRf c25kX2NvbnRyb2xzKSwKKwkuZGFwbV93aWRnZXRzCQk9IG5hdTg4MjRfZGFwbV93aWRnZXRzLAor CS5udW1fZGFwbV93aWRnZXRzCT0gQVJSQVlfU0laRShuYXU4ODI0X2RhcG1fd2lkZ2V0cyksCisJ LmRhcG1fcm91dGVzCQk9IG5hdTg4MjRfZGFwbV9yb3V0ZXMsCisJLm51bV9kYXBtX3JvdXRlcwk9 IEFSUkFZX1NJWkUobmF1ODgyNF9kYXBtX3JvdXRlcyksCisJLnJlZ193b3JkX3NpemUJCT0gc2l6 ZW9mKHUxNiksCisJLnJlZ19jYWNoZV9kZWZhdWx0CT0gaW5pdF9saXN0LAorCS5zZXRfc3lzY2xr CQk9IG5hdTg4MjRfc2V0X3N5c2NsaywKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlf b3BzIG5hdTg4MjRfZGFpX29wcyA9IHsKKwkuaHdfcGFyYW1zCT0gbmF1ODgyNF9od19wYXJhbXMs CisJLnNldF9wbGwJPSBuYXU4ODI0X3NldF9kYWlfcGxsLAorCS5zZXRfZm10CT0gbmF1ODgyNF9z ZXRfZGFpX2ZtdCwKKwkuZGlnaXRhbF9tdXRlCT0gbmF1ODgyNF9kYWNfbXV0ZSwKK307CisKK3N0 YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfZHJpdmVyIG5hdTg4MjRfZGFpX2RyaXZlcltdID0gewor eworCS5uYW1lID0gIm5hdTg4MjQtYWlmMSIsCisJCS5wbGF5YmFjayA9IHsKKwkJCS5zdHJlYW1f bmFtZQkgPSAiQUlGMSBQbGF5YmFjayIsCisJCQkuY2hhbm5lbHNfbWluCSA9IDEsCisJCQkuY2hh bm5lbHNfbWF4CSA9IDIsCisJCQkucmF0ZXMJCSA9IE5BVTg4MjRfUkFURVMsCisJCQkuZm9ybWF0 cwkgPSBOQVU4ODI0X0ZPUk1BVFMsCisJCX0sCisJCS5jYXB0dXJlID0geworCQkJLnN0cmVhbV9u YW1lCSA9ICJBSUYxIENhcHR1cmUiLAorCQkJLmNoYW5uZWxzX21pbgkgPSAxLAorCQkJLmNoYW5u ZWxzX21heAkgPSAyLAorCQkJLnJhdGVzCQkgPSBOQVU4ODI0X1JBVEVTLAorCQkJLmZvcm1hdHMJ ID0gTkFVODgyNF9GT1JNQVRTLAorCQl9LAorCS5vcHMgPSAmbmF1ODgyNF9kYWlfb3BzLAorfQor fTsKKworc3RhdGljIGludCBuYXU4ODI0X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJj LAorCQkJCQljb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0IG5hdTg4 MjRfcHJpdiAqbmF1ODgyNDsKKwlpbnQgcmV0OworCisJcHJfZGVidWcoIiVzIGVudGVyIiwgX19m dW5jX18pOworCW5hdTg4MjQgPSBremFsbG9jKHNpemVvZigqbmF1ODgyNCksIEdGUF9LRVJORUwp OworCWlmIChuYXU4ODI0ID09IE5VTEwpCisJCXJldHVybiAtRU5PTUVNOworCisJaTJjX3NldF9j bGllbnRkYXRhKGkyYywgbmF1ODgyNCk7CisJcmV0ID0gc25kX3NvY19yZWdpc3Rlcl9jb2RlYygm aTJjLT5kZXYsICZzb2NfY29kZWNfZHJpdmVyX25hdTg4MjQsCisJCQkJbmF1ODgyNF9kYWlfZHJp dmVyLAorCQkJCUFSUkFZX1NJWkUobmF1ODgyNF9kYWlfZHJpdmVyKSk7CisJaWYgKHJldCA8IDAp CisJCWtmcmVlKG5hdTg4MjQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBuYXU4 ODI0X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKK3sKKwlzdHJ1Y3QgbmF1ODgy NF9wcml2ICpuYXU4ODI0ID0gZGV2X2dldF9kcnZkYXRhKCZpMmMtPmRldik7CisKKwlzbmRfc29j X3VucmVnaXN0ZXJfY29kZWMobmF1ODgyNC0+ZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbmF1ODgyNF9pMmNfaWRbXSA9IHsKKwl7ICJu YXU4ODI0IiwgMH0sCisJeyIxMDUwODgyNDowMCIsIDB9LAorCXsiMTA1MDg4MjQiLCAwfSwKKwl7 IH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBuYXU4ODI0X2kyY19pZCk7CitzdGF0 aWMgc3RydWN0IGkyY19kcml2ZXIgbmF1ODgyNF9pMmNfZHJpdmVyID0geworCS5kcml2ZXIgPSB7 CisJCS5uYW1lCT0gIm5hdTg4MjQiLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKKwl9LAorCS5w cm9iZQkJPSBuYXU4ODI0X2kyY19wcm9iZSwKKwkucmVtb3ZlCQk9IChuYXU4ODI0X2kyY19yZW1v dmUpLAorCS5pZF90YWJsZQk9IG5hdTg4MjRfaTJjX2lkLAorfTsKK21vZHVsZV9pMmNfZHJpdmVy KG5hdTg4MjRfaTJjX2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiQVNvQyBOQVU4ODI0 IGNvZGVjIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiTnV2b3RvbiIpOworTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOworCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL25hdTg4MjQuaCBiL3Nv dW5kL3NvYy9jb2RlY3MvbmF1ODgyNC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjE3NDVkYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zb3VuZC9zb2MvY29kZWNzL25hdTg4MjQu aApAQCAtMCwwICsxLDM3OSBAQAorLyoKKyAqIGxpbnV4L3NvdW5kL3NvYy9jb2RlY3MvbmF1ODgy NC5oCisgKgorICogQ29weXJpZ2h0IDIwMTUgTnV2b3RvbiBUZWNobm9sb2d5IENvcnAuCisgKiBB dXRob3I6IE1lbmctSHVhbmcgS3VvIDxtaGt1b0BudXZvdG9uLmNvbT4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICovCisKKyNpZm5kZWYgX05BVTg4MjRfSAorI2RlZmluZSBfTkFVODgyNF9ICisK KyNkZWZpbmUgTkFVODgyNF9SRVNFVAkJCQkJCTB4MDAKKyNkZWZpbmUgTkFVODgyNF9FTkFfQ1RS TAkJCQkJMHgwMQorI2RlZmluZSBOQVU4ODI0X0NMS19FTgkJCQkJCTB4MDIKKyNkZWZpbmUgTkFV ODgyNF9DTEtfRElWSURFUgkJCQkJMHgwMworI2RlZmluZSBOQVU4ODI0X0ZMXzEJCQkJCQkweDA0 CisjZGVmaW5lIE5BVTg4MjRfRkxfMgkJCQkJCTB4MDUKKyNkZWZpbmUgTkFVODgyNF9GTF8zCQkJ CQkJMHgwNgorI2RlZmluZSBOQVU4ODI0X0ZMXzQJCQkJCQkweDA3CisjZGVmaW5lIE5BVTg4MjRf RkxfNQkJCQkJCTB4MDgKKyNkZWZpbmUgTkFVODgyNF9GTF82CQkJCQkJMHgwOQorI2RlZmluZSBO QVU4ODI0X0lSUV9TVEFUVVMJCQkJCTB4MTAKKyNkZWZpbmUgTkFVODgyNF9JUlFfQ0xFQVIJCQkJ CTB4MTEKKyNkZWZpbmUgTkFVODgyNF9JUlFfU0VUVElORwkJCQkJMHgxMgorI2RlZmluZSBOQVU4 ODI0X1NBUl9BREMJCQkJCQkweDEzCisjZGVmaW5lIE5BVTg4MjRfVkRFVF9DT0VGRklDSUVOVAkJ CTB4MTQKKyNkZWZpbmUgTkFVODgyNF9JMlNfUENNX0NUUkxfMQkJCQkweDFDCisjZGVmaW5lIE5B VTg4MjRfSTJTX1BDTV9DVFJMXzIJCQkJMHgxRAorI2RlZmluZSBOQVU4ODI0X0FEQ19DSDBfREdB SU5fQ1RSTAkJCTB4MkQKKyNkZWZpbmUgTkFVODgyNF9BRENfQ0gxX0RHQUlOX0NUUkwJCQkweDJF CisjZGVmaW5lIE5BVTg4MjRfREFDX01VVEVfQ1RSTAkJCQkweDMxCisjZGVmaW5lIE5BVTg4MjRf REFDMF9ESUdfVk9MCQkJCTB4MzIKKyNkZWZpbmUgTkFVODgyNF9EQUMxX0RJR19WT0wJCQkJMHgz MworI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfQ1RSTAkJCQkweDUwCisjZGVmaW5lIE5BVTg4MjRf U0FSX0FEQ19PVVRQVVQJCQkJMHg1OQorI2RlZmluZSBOQVU4ODI0X0JJQVNfQURKCQkJCQkweDY2 CisjZGVmaW5lIE5BVTg4MjRfQU5BTE9HX0NUUkwyCQkJCTB4NkEKKyNkZWZpbmUgTkFVODgyNF9I UE9fTUlYRVIJCQkJCTB4NkIKKyNkZWZpbmUgTkFVODgyNF9DTEFTU19EX0dBSU4xCQkJCTB4NkQK KyNkZWZpbmUgTkFVODgyNF9DTEFTU19EX0dBSU4yCQkJCTB4NkUKKyNkZWZpbmUgTkFVODgyNF9E QUNfQ1RSTAkJCQkJMHg3MworI2RlZmluZSBOQVU4ODI0X01JQ19CSUFTCQkJCQkweDc0CisjZGVm aW5lIE5BVTg4MjRfSFBfTVVURQkJCQkJCTB4NzUKKyNkZWZpbmUgTkFVODgyNF9CT09TVAkJCQkJ CTB4NzYKKyNkZWZpbmUJTkFVODgyNF9IUF9WT0wJCQkJCQkweDdCCisKKy8qIHJlZy4gTkFVODgy NF9FTkFfQ1RSTCAoMHgwMSkgKi8KKyNkZWZpbmUgTkFVODgyNF9ETUlDX0VER0VfQ0gyM19NQVNL CQkJKDB4MDEgPDwgMTUpCisjZGVmaW5lIE5BVTg4MjRfRE1JQ19FREdFX0NIMjNfU0ZUCQkJMTUK KyNkZWZpbmUgTkFVODgyNF9ETUlDX0VER0VfQ0gwMV9NQVNLCQkJKDB4MDEgPDwgMTQpCisjZGVm aW5lIE5BVTg4MjRfRE1JQ19FREdFX0NIMDFfU0ZUCQkJMTQKKyNkZWZpbmUgTkFVODgyNF9BRENf T1BfRU5fTUFTSwkJCQkoMHgwMSA8PCAxMSkKKyNkZWZpbmUgTkFVODgyNF9BRENfT1BfRU5fU0ZU CQkJCTExCisjZGVmaW5lIE5BVTg4MjRfQURDX09QX0VOCQkJCQkoMHgwMSA8PCAxMSkKKyNkZWZp bmUgTkFVODgyNF9BRENfT1BfRElTCQkJCQkoMHgwMCA8PCAxMSkKKyNkZWZpbmUgTkFVODgyNF9J TlRfU0xFRVBfTUFTSwkJCQkoMHgwMSA8PCAxMCkKKyNkZWZpbmUgTkFVODgyNF9JTlRfU0xFRVBf U0ZUCQkJCTEwCisjZGVmaW5lIE5BVTg4MjRfSU5UX1NMRUVQX09OCQkJCSgweDAxIDw8IDEwKQor I2RlZmluZSBOQVU4ODI0X0lOVF9TTEVFUF9PRkYJCQkJKDB4MDAgPDwgMTApCisjZGVmaW5lIE5B VTg4MjRfRE1JQ19DSDNfTUFTSwkJCQkoMHgwMSA8PCA5KQorI2RlZmluZSBOQVU4ODI0X0RNSUNf Q0gzX1NGVAkJCQk5CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDNfT04JCQkJCSgweDAxIDw8IDkp CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDNfT0ZGCQkJCSgweDAwIDw8IDkpCisjZGVmaW5lIE5B VTg4MjRfRE1JQ19DSDJfTUFTSwkJCQkoMHgwMSA8PCA4KQorI2RlZmluZSBOQVU4ODI0X0RNSUNf Q0gyX1NGVAkJCQk4CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDJfT04JCQkJCSgweDAxIDw8IDgp CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDJfT0ZGCQkJCSgweDAwIDw8IDgpCisjZGVmaW5lIE5B VTg4MjRfRE1JQ19DSDFfTUFTSwkJCQkoMHgwMSA8PCA3KQorI2RlZmluZSBOQVU4ODI0X0RNSUNf Q0gxX1NGVAkJCQk3CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDFfT04JCQkJCSgweDAxIDw8IDcp CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDFfT0ZGCQkJCSgweDAwIDw8IDcpCisjZGVmaW5lIE5B VTg4MjRfRE1JQ19DSDBfTUFTSwkJCQkoMHgwMSA8PCA2KQorI2RlZmluZSBOQVU4ODI0X0RNSUNf Q0gwX1NGVAkJCQk2CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDBfT04JCQkJCSgweDAxIDw8IDYp CisjZGVmaW5lIE5BVTg4MjRfRE1JQ19DSDBfT0ZGCQkJCSgweDAwIDw8IDYpCisjZGVmaW5lIE5B VTg4MjRfREFDX0NIMV9FTl9NQVNLCQkJCSgweDAxIDw8IDUpCisjZGVmaW5lIE5BVTg4MjRfREFD X0NIMV9FTl9TRlQJCQkJNQorI2RlZmluZSBOQVU4ODI0X0RBQ19DSDFfRU4JCQkJCSgweDAxIDw8 IDUpCisjZGVmaW5lIE5BVTg4MjRfREFDX0NIMV9ESVMJCQkJCSgweDAwIDw8IDUpCisjZGVmaW5l IE5BVTg4MjRfREFDX0NIMF9FTl9NQVNLCQkJCSgweDAxIDw8IDQpCisjZGVmaW5lIE5BVTg4MjRf REFDX0NIMF9FTl9TRlQJCQkJNAorI2RlZmluZSBOQVU4ODI0X0RBQ19DSDBfRU4JCQkJCSgweDAx IDw8IDQpCisjZGVmaW5lIE5BVTg4MjRfREFDX0NIMF9ESVMJCQkJCSgweDAwIDw8IDQpCisjZGVm aW5lIE5BVTg4MjRfQURDX0NIM19FTl9NQVNLCQkJCSgweDAxIDw8IDMpCisjZGVmaW5lIE5BVTg4 MjRfQURDX0NIM19FTl9TRlQJCQkJMworI2RlZmluZSBOQVU4ODI0X0FEQ19DSDNfRU4JCQkJCSgw eDAxIDw8IDMpCisjZGVmaW5lIE5BVTg4MjRfQURDX0NIM19ESVMJCQkJCSgweDAwIDw8IDMpCisj ZGVmaW5lIE5BVTg4MjRfQURDX0NIMl9FTl9NQVNLCQkJCSgweDAxIDw8IDIpCisjZGVmaW5lIE5B VTg4MjRfQURDX0NIMl9FTl9TRlQJCQkJMgorI2RlZmluZSBOQVU4ODI0X0FEQ19DSDJfRU4JCQkJ CSgweDAxIDw8IDIpCisjZGVmaW5lIE5BVTg4MjRfQURDX0NIMl9ESVMJCQkJCSgweDAwIDw8IDIp CisjZGVmaW5lIE5BVTg4MjRfQURDX0NIMV9FTl9NQVNLCQkJCSgweDAxIDw8IDEpCisjZGVmaW5l IE5BVTg4MjRfQURDX0NIMV9FTl9TRlQJCQkJMQorI2RlZmluZSBOQVU4ODI0X0FEQ19DSDFfRU4J CQkJCSgweDAxIDw8IDEpCisjZGVmaW5lIE5BVTg4MjRfQURDX0NIMV9ESVMJCQkJCSgweDAwIDw8 IDEpCisjZGVmaW5lIE5BVTg4MjRfQURDX0NIMF9FTl9NQVNLCQkJCSgweDAxIDw8IDApCisjZGVm aW5lIE5BVTg4MjRfQURDX0NIMF9FTl9TRlQJCQkJMAorI2RlZmluZSBOQVU4ODI0X0FEQ19DSDBf RU4JCQkJCSgweDAxIDw8IDApCisjZGVmaW5lIE5BVTg4MjRfQURDX0NIMF9ESVMJCQkJCSgweDAw IDw8IDApCisKKy8qIHJlZy4gTkFVODgyNF9DTEtfRU4gKDB4MDIpICovCisjZGVmaW5lIE5BVTg4 MjRfQ0xLX1NBUl9FTl9NQVNLCQkJCSgweDEgPDwgMykKKyNkZWZpbmUgTkFVODgyNF9DTEtfU0FS X0VOX1NGVAkJCQkzCisjZGVmaW5lIE5BVTg4MjRfQ0xLX1NBUl9FTgkJCQkJKDB4MSA8PCAzKQor I2RlZmluZSBOQVU4ODI0X0NMS19TQVJfRElTCQkJCQkoMHgwIDw8IDMpCisKKy8qIHJlZy4gTkFV ODgyNF9DTEtfRElWSURFUiAoMHgwMykgKi8KKyNkZWZpbmUgTkFVODgyNF9TWVNDTEtfU1JDX01B U0sJCQkJKDB4MSA8PCAxNSkKKyNkZWZpbmUgTkFVODgyNF9TWVNDTEtfU1JDX1NGVAkJCQkxNQor I2RlZmluZSBOQVU4ODI0X1NZU0NMS19TUkNfVkNPCQkJCSgweDEgPDwgMTUpCisjZGVmaW5lIE5B VTg4MjRfU1lTQ0xLX1NSQ19NQ0xLCQkJCSgweDAgPDwgMTUpCisjZGVmaW5lIE5BVTg4MjRfQ0xL X0NPREVDX1NSQ19NQVNLCQkJKDB4MSA8PCAxMykKKyNkZWZpbmUgTkFVODgyNF9DTEtfQ09ERUNf U1JDX1NGVAkJCTEzCisjZGVmaW5lIE5BVTg4MjRfQ09ERUNfU1JDX1NZU0NMSwkJCSgweDEgPDwg MTMpCisjZGVmaW5lIE5BVTg4MjRfQ09ERUNfU1JDX01DTEsJCQkJKDB4MCA8PCAxMykKKyNkZWZp bmUgTkFVODgyNF9DTEtfRE1JQ19TUkNfTUFTSwkJCSgweDcgPDwgMTApCisjZGVmaW5lIE5BVTg4 MjRfQ0xLX0RNSUNfU1JDX1NGVAkJCTEwCisjZGVmaW5lIE5BVTg4MjRfQ0xLX0RNSUNfRElWXzQJ CQkJKDB4MiA8PCAxMCkKKworLyogcmVnLiBOQVU4ODI0X0lSUV9TVEFUVVMgKDB4MTApICovCisj ZGVmaW5lIE5BVTg4MjRfSVJRX0tFWV9SRUxFQVNFCQkJCSgweDEgPDwgNSkKKyNkZWZpbmUgTkFV ODgyNF9JUlFfTE9OR0tFWQkJCQkJKDB4MSA8PCA0KQorI2RlZmluZSBOQVU4ODI0X0lSUV9TSE9S VEtFWQkJCQkoMHgxIDw8IDMpCisjZGVmaW5lIE5BVTg4MjRfSVJRX01JQ19JTlNFUlRFRAkJCSgw eDEgPDwgMikKKyNkZWZpbmUgTkFVODgyNF9JUlFfSkFDS19FSkVDVEVECQkJKDB4MSA8PCAxKQor I2RlZmluZSBOQVU4ODI0X0lSUV9KQUNLX0lOU0VSVEVECQkJKDB4MSA8PCAwKQorCisvKiByZWcu IE5BVTg4MjRfSVJRX0NMRUFSICgweDExKSAqLworI2RlZmluZSBOQVU4ODI0X0lSUV9LRVlfUkVM RUFTRV9DTFIJCQkoMHgxIDw8IDUpCisjZGVmaW5lIE5BVTg4MjRfSVJRX0xPTkdLRVlfQ0xSCQkJ CSgweDEgPDwgNCkKKyNkZWZpbmUgTkFVODgyNF9JUlFfU0hPUlRLRVlfQ0xSCQkJKDB4MSA8PCAz KQorI2RlZmluZSBOQVU4ODI0X0lSUV9NSUNfSU5TRVJURURfQ0xSCQkoMHgxIDw8IDIpCisjZGVm aW5lIE5BVTg4MjRfSVJRX0pBQ0tfRUpFQ1RFRF9DTFIJCSgweDEgPDwgMSkKKyNkZWZpbmUgTkFV ODgyNF9JUlFfSkFDS19JTlNFUlRFRF9DTFIJCSgweDEgPDwgMCkKKworLyogcmVnIE5BVTg4MjRf U0FSX0FEQyAoMHgxMykgKi8KKyNkZWZpbmUgTkFVODgyNF9TQVJfRU5fTUFTSwkJCQkJKDB4MSA8 PCAxMikKKyNkZWZpbmUgTkFVODgyNF9TQVJfRU5fU0ZUCQkJCQkxMgorI2RlZmluZSBOQVU4ODI0 X1NBUl9FTgkJCQkJCSgweDEgPDwgMTIpCisjZGVmaW5lIE5BVTg4MjRfU0FSX0RJUwkJCQkJCSgw eDAgPDwgMTIpCisKKy8qIHJlZy4gTkFVODgyNF9JMlNfUENNX0NUUkxfMSAoMHgxQykgKi8KKyNk ZWZpbmUgTkFVODgyNF9JMlNfQlBfTUFTSwkJCQkJKDB4MSA8PCA3KQorI2RlZmluZSBOQVU4ODI0 X0kyU19CUF9TRlQJCQkJCTcKKyNkZWZpbmUgTkFVODgyNF9JMlNfQlBfTk9SCQkJCQkoMHgwIDw8 IDcpCisjZGVmaW5lIE5BVTg4MjRfSTJTX0JQX0lOVgkJCQkJKDB4MSA8PCA3KQorI2RlZmluZSBO QVU4ODI0X0kyU19QQ01CX01BU0sJCQkJKDB4MSA8PCA2KQorI2RlZmluZSBOQVU4ODI0X0kyU19Q Q01CX1NGVAkJCQk2CisjZGVmaW5lIE5BVTg4MjRfSTJTX1BDTUJfRU4JCQkJCSgweDEgPDwgNikK KyNkZWZpbmUgTkFVODgyNF9JMlNfUENNQl9ESVMJCQkJKDB4MCA8PCA2KQorI2RlZmluZSBOQVU4 ODI0X0kyU19ETF9NQVNLCQkJCQkoMHgzIDw8IDIpCisjZGVmaW5lIE5BVTg4MjRfSTJTX0RMX1NG VAkJCQkJMgorI2RlZmluZSBOQVU4ODI0X0kyU19ERl9NQVNLCQkJCQkoMHgzKQorI2RlZmluZSBO QVU4ODI0X0kyU19ERl9TRlQJCQkJCTAKKyNkZWZpbmUgTkFVODgyNF9JMlNfREZfUklHSFQJCQkJ KDB4MCkKKyNkZWZpbmUgTkFVODgyNF9JMlNfREZfTEVGVAkJCQkJKDB4MSkKKyNkZWZpbmUgTkFV ODgyNF9JMlNfREZfSTJTCQkJCQkoMHgyKQorI2RlZmluZSBOQVU4ODI0X0kyU19ERl9QQ01fQQkJ CQkoMHgzKQorI2RlZmluZSBOQVU4ODI0X0kyU19ERl9QQ01fQgkJCQkoMHgzKQorCisvKiByZWcu IE5BVTg4MjRfSTJTX1BDTV9DVFJMXzIgKDB4MUQpICovCisjZGVmaW5lIE5BVTg4MjRfSTJTX0JD TEtESVZfTUFTSwkJCTcKKyNkZWZpbmUgTkFVODgyNF9JMlNfQkNMS0RJVl9TRlQJCQkJMAorCisj ZGVmaW5lIE5BVTg4MjRfSTJTX01TX01BU0sJCQkJCSgweDEgPDwgMykKKyNkZWZpbmUgTkFVODgy NF9JMlNfTVNfU0ZUCQkJCQkzCisjZGVmaW5lIE5BVTg4MjRfSTJTX01TX00JCQkJCSgweDEgPDwg MykKKyNkZWZpbmUgTkFVODgyNF9JMlNfTVNfUwkJCQkJKDB4MCA8PCAzKQorCisvKiByZWcuIE5B VTg4MjRfREFDX01VVEVfQ1RSTCAoMHgzMSkgKi8KKyNkZWZpbmUgTkFVODgyNF9TT0ZUX01VVEVf TUFTSwkJCQkoMHgxIDw8IDEzKQorI2RlZmluZSBOQVU4ODI0X1NPRlRfTVVURV9TRlQJCQkJMTMK KyNkZWZpbmUgTkFVODgyNF9TT0ZUX01VVEVfRU4JCQkJKDB4MSA8PCAxMykKKyNkZWZpbmUgTkFV ODgyNF9TT0ZUX01VVEVfRElTCQkJCSgweDAgPDwgMTMpCisKKy8qIHJlZyBOQVU4ODI0X0RBQzBf RElHX1ZPTCAoMHgzMikgKi8KKyNkZWZpbmUgTkFVODgyNF9EQUMwX0dBSU5fTUFTSwkJCQkoMHgx RkYgPDwgMCkKKworLyogcmVnIE5BVTg4MjRfREFDMV9ESUdfVk9MICgweDMzKSAqLworI2RlZmlu ZSBOQVU4ODI0X0RBQzFfR0FJTl9NQVNLCQkJCSgweDFGRiA8PCAwKQorCisvKiByZWcuIE5BVTg4 MjRfQ0xBU1NfR19DVFJMICgweDUwKSAqLworI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfQ0xLX1NS Q19NU0sJCQkoMHgzIDw8IDE0KQorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfQ0xLX0RJUwkJCQko MHgzIDw8IDE0KQorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfQ0xLX1NSQ19NQ0xLCQkoMHgyIDw8 IDE0KQorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfQ0xLX1NSQ182NjBLCQkoMHgxIDw8IDE0KQor I2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfQ0xLX1NSQ18yTQkJCSgweDAgPDwgMTQpCisjZGVmaW5l IE5BVTg4MjRfQ0xBU1NfR19USU1FUl9NU0sJCQkoMHgzRiA8PCA4KQorI2RlZmluZSBOQVU4ODI0 X0NMQVNTX0dfVElNRVJfU0ZUCQkJOAorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfVEhSU0xEX01T SwkJCSgweDMgPDwgNCkKKyNkZWZpbmUgTkFVODgyNF9DTEFTU19HX1RIUlNMRF9TRlQJCQk0Cisj ZGVmaW5lIE5BVTg4MjRfQ0xBU1NfR19SSUdIVF9FTl9NU0sJCSgweDEgPDwgMikKKyNkZWZpbmUg TkFVODgyNF9DTEFTU19HX1JJR0hUX0VOCQkJKDB4MSA8PCAyKQorI2RlZmluZQlOQVU4ODI0X0NM QVNTX0dfUklHSFRfRElTCQkJKDB4MCA8PCAyKQorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfTEVG VF9FTl9NU0sJCQkoMHgxIDw8IDEpCisjZGVmaW5lIE5BVTg4MjRfQ0xBU1NfR19MRUZUX0VOCQkJ CSgweDEgPDwgMSkKKyNkZWZpbmUgTkFVODgyNF9DTEFTU19HX0xFRlRfRElTCQkJKDB4MCA8PCAx KQorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0dfRU5fTVNLCQkJCSgweDEgPDwgMCkKKyNkZWZpbmUg TkFVODgyNF9DTEFTU19HX1NISUZUCQkJCTAKKyNkZWZpbmUgTkFVODgyNF9DTEFTU19HX0VOCQkJ CQkoMHgxIDw8IDApCisjZGVmaW5lIE5BVTg4MjRfQ0xBU1NfR19ESVMJCQkJCSgweDAgPDwgMCkK KworLyogcmVnIE5BVTg4MjRfU0FSX0FEQ19PVVRQVVQgKDB4NTkpICovCisjZGVmaW5lIE5BVTg4 MjRfQURDX09VVFBVVF9NQVNLCQkJCSgweEZGIDw8IDApCisjZGVmaW5lIE5BVTg4MjRfQURDX09V VFBVVF9TRlQJCQkJMAorCisvKiByZWcuIE5BVTg4MjRfQklBU19BREpfMiAoMHg2NikgKi8KKyNk ZWZpbmUgTkFVODgyNF9WTUlEX01BU0sJCQkJCSgweDEgPDwgNikKKyNkZWZpbmUgTkFVODgyNF9W TUlEX1NGVAkJCQkJNgorI2RlZmluZSBOQVU4ODI0X1ZNSURfRU4JCQkJCQkoMHgxIDw8IDYpCisj ZGVmaW5lIE5BVTg4MjRfVk1JRF9ESVMJCQkJCSgweDAgPDwgNikKKyNkZWZpbmUgTkFVODgyNF9W TUlEX09QVElPTl9NQVNLCQkJKDB4MSA8PCA0KQorI2RlZmluZSBOQVU4ODI0X1ZNSURfT1BUSU9O X1NGVAkJCQk0CisjZGVmaW5lIE5BVTg4MjRfRE1JQzJfTUFTSwkJCQkJKDB4MSA8PCAzKQorI2Rl ZmluZSBOQVU4ODI0X0RNSUMyX1NGVAkJCQkJMworI2RlZmluZSBOQVU4ODI0X0RNSUMyX0VOCQkJ CQkoMHgxIDw8IDMpCisjZGVmaW5lIE5BVTg4MjRfRE1JQzJfRElTCQkJCQkoMHgwIDw8IDMpCisj ZGVmaW5lIE5BVTg4MjRfRE1JQzFfTUFTSwkJCQkJKDB4MSA8PCAyKQorI2RlZmluZSBOQVU4ODI0 X0RNSUMxX1NGVAkJCQkJMgorI2RlZmluZSBOQVU4ODI0X0RNSUMxX0VOCQkJCQkoMHgxIDw8IDIp CisjZGVmaW5lIE5BVTg4MjRfRE1JQzFfRElTCQkJCQkoMHgwIDw8IDIpCisKKy8qIHJlZy4gTkFV ODgyNF9BTkFMT0dfQ1RSTDIgKDB4NkEpICovCisjZGVmaW5lIE5BVTg4MjRfQ0xBU1NfRF9DTEFN UF9NU0sJCQkoMHgxIDw8IDMpCisjZGVmaW5lIE5BVTg4MjRfQ0xBU1NfRF9DTEFNUF9TRlQJCQkz CisjZGVmaW5lIE5BVTg4MjRfQ0xBU1NfRF9DTEFNUF9CRVRURVIJCSgweDEgPDwgMykKKyNkZWZp bmUgTkFVODgyNF9DTEFTU19EX0NMQU1QX0RFRkFVTFQJCSgweDAgPDwgMykKKworLyogcmVnLiBO QVU4ODI0X0hQT19NSVhFUiAoMHg2QikgKi8KKyNkZWZpbmUgTkFVODgyNF9NX0hQVk9MX1JfSE0J CQkJKDB4MSA8PCAyKQorI2RlZmluZSBOQVU4ODI0X01fSFBWT0xfUl9ITV9TRlQJCQkyCisjZGVm aW5lIE5BVTg4MjRfTV9IUFZPTF9MX0hNCQkJCSgweDEgPDwgMCkKKyNkZWZpbmUgTkFVODgyNF9N X0hQVk9MX0xfSE1fU0ZUCQkJMAorCisvKiByZWcuIE5BVTg4MjRfQ0xBU1NfRF9HQUlOMSAoMHg2 RCkgKi8KKyNkZWZpbmUgTkFVODgyNF9DTEFTU19EX0dBSU5fUl9NU0sJCQkoMHgxRiA8PCA4KQor I2RlZmluZSBOQVU4ODI0X0NMQVNTX0RfR0FJTl9SX1NGVAkJCTgKKyNkZWZpbmUgTkFVODgyNF9D TEFTU19EX01BU0sJCQkJKDB4MSA8PCA3KQorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0RfU0ZUCQkJ CQk3CisjZGVmaW5lIE5BVTg4MjRfQ0xBU1NfRF9FTl9NU0sJCQkJKDB4MSA8PCA3KQorI2RlZmlu ZSBOQVU4ODI0X0NMQVNTX0RfRU4JCQkJCSgweDEgPDwgNykKKyNkZWZpbmUgTkFVODgyNF9DTEFT U19EX0RJUwkJCQkJKDB4MCA8PCA3KQorCisvKiByZWcuIE5BVTg4MjRfQ0xBU1NfRF9HQUlOMiAo MHg2RSkgKi8KKyNkZWZpbmUgTkFVODgyNF9DTEFTU19EX0dBSU5fTF9NU0sJCQkoMHgxRiA8PCAw KQorI2RlZmluZSBOQVU4ODI0X0NMQVNTX0RfR0FJTl9MX1NGVAkJCTAKKworLyogcmVnLiBOQVU4 ODI0X0RBQ19DVFJMICgweDczKSAqLworI2RlZmluZSBOQVU4ODI0X0RBQ19SX01BU0sJCQkJCSgw eDEgPDwgMTMpCisjZGVmaW5lIE5BVTg4MjRfREFDX1JfU0ZUCQkJCQkxMworI2RlZmluZSBOQVU4 ODI0X0RBQ19SX0VOCQkJICAgICAgICAoMHgxIDw8IDEzKQorI2RlZmluZSBOQVU4ODI0X0RBQ19S X0RJUwkJCQkJKDB4MCA8PCAxMykKKyNkZWZpbmUgTkFVODgyNF9EQUNfTF9NQVNLCQkJCQkoMHgx IDw8IDEyKQorI2RlZmluZSBOQVU4ODI0X0RBQ19MX1NGVAkJCQkJMTIKKyNkZWZpbmUgTkFVODgy NF9EQUNfTF9FTgkJCQkJKDB4MSA8PCAxMikKKyNkZWZpbmUgTkFVODgyNF9EQUNfTF9ESVMJCQkJ CSgweDAgPDwgMTIpCisKKy8qIHJlZy4gTkFVODgyNF9NSUNfQklBUyAoMHg3NCkgKi8KKyNkZWZp bmUgTkFVODgyNF9CSUFTX1BPV0VSX01BU0sJCQkJKDB4MSA8PCA4KQorI2RlZmluZSBOQVU4ODI0 X0JJQVNfUE9XRVJfU0ZUCQkJCTgKKyNkZWZpbmUgTkFVODgyNF9CSUFTX1BPV0VSX09OCQkJCSgw eDEgPDwgOCkKKyNkZWZpbmUgTkFVODgyNF9CSUFTX1BPV0VSX0RPV04JCQkJKDB4MCA8PCA4KQor I2RlZmluZSBOQVU4ODI0X0JJQVNfTEVWRUxfTUFTSwkJCQkoMHg3IDw8IDApCisjZGVmaW5lIE5B VTg4MjRfQklBU19MRVZFTF9TRlQJCQkJMAorI2RlZmluZSBOQVU4ODI0X0JJQVNfTEVWRUxfVkRE QQkJCQkoMHgwIDw8IDApCisKKy8qIHJlZy4gTkFVODgyNF9IUF9NVVRFCSgweDc1KSAqLworI2Rl ZmluZSBOQVU4ODI0X1JfTVVURQkJCQkJCSgweDEgPDwgMTQpCisjZGVmaW5lIE5BVTg4MjRfUl9N VVRFX1NGVAkJCQkJMTQKKyNkZWZpbmUgTkFVODgyNF9MX01VVEUJCQkJCQkoMHgxIDw8IDYpCisj ZGVmaW5lIE5BVTg4MjRfTF9NVVRFX1NGVAkJCQkJNgorCisvKiByZWcuIE5BVTg4MjRfQk9PU1Qg KDB4NzYpICovCisjZGVmaW5lIE5BVTg4MjRfVk1JRF9QUkVDSEFSR0VfTUFTSwkJCSgweDEgPDwg MTMpCisjZGVmaW5lIE5BVTg4MjRfVk1JRF9QUkVDSEFSR0VfU0ZUCQkJMTMKKyNkZWZpbmUgTkFV ODgyNF9WTUlEX1BSRUNIQVJHRV9ESVMJCQkoMHgxIDw8IDEzKQorI2RlZmluZSBOQVU4ODI0X1ZN SURfUFJFQ0hBUkdFX0VOCQkJKDB4MCA8PCAxMykKKyNkZWZpbmUgTkFVODgyNF9HX0JJQVNfTUFT SwkJCQkJKDB4MSA8PCAxMikKKyNkZWZpbmUgTkFVODgyNF9HX0JJQVNfU0ZUCQkJCQkxMgorI2Rl ZmluZSBOQVU4ODI0X0dfQklBU19FTgkJCQkJKDB4MSA8PCAxMikKKyNkZWZpbmUgTkFVODgyNF9H X0JJQVNfRElTCQkJCQkoMHgwIDw8IDEyKQorCisvKiByZWcuIE5BVTg4MjRfSFBfVk9MICgweDdC KSAqLworI2RlZmluZSBOQVU4ODI0X1JfVk9MX01BU0sJCQkJCSgweDFmIDw8IDgpCisjZGVmaW5l IE5BVTg4MjRfUl9WT0xfU0ZUCQkJCQk4CisjZGVmaW5lIE5BVTg4MjRfU1BLX0xfVk9MX01BU0sJ CQkJKDB4MWYpCisjZGVmaW5lIE5BVTg4MjRfU1BLX1JfVk9MX01BU0sJCQkJKDB4MWYgPDwgOCkK KyNkZWZpbmUgTkFVODgyNF9MX1ZPTF9NQVNLCQkJCQkoMHgxZikKKyNkZWZpbmUgTkFVODgyNF9M X1ZPTF9TRlQJCQkJCTAKKworLyogVm9sdW1lIFJlc2NhbGUgKi8KKyNkZWZpbmUgTkFVODgyNF9W T0xfUlNDTF9NQVgJCQkJMHgxRQorI2RlZmluZSBOQVU4ODI0X1ZPTF9SU0NMX1JBTkdFCQkJCTB4 MUUKKyNkZWZpbmUgTkFVODgyNF9TUEtfVk9MX1JTQ0xfTUFYCQkJMHgxOQorI2RlZmluZSBOQVU4 ODI0X1NQS19WT0xfUlNDTF9SQU5HRQkJCTB4MTkKKyNkZWZpbmUgTkFVODgyNF9EQUNfVk9MX1JT Q0xfUkFOR0UJCQkweDE2NAorI2RlZmluZSBOQVU4ODI0X0FEQ19WT0xfUlNDTF9SQU5HRQkJCTB4 MTY0CisKKy8qIERhdGEgRm9ybWF0ICovCisjZGVmaW5lIE5BVTg4MjRfSTJTX0RMXzMyCQkJCQko MHgzIDw8IDIpCisjZGVmaW5lIE5BVTg4MjRfSTJTX0RMXzI0CQkJCQkoMHgyIDw8IDIpCisjZGVm aW5lIE5BVTg4MjRfSTJTX0RMXzIwCQkJCQkoMHgxIDw8IDIpCisjZGVmaW5lIE5BVTg4MjRfSTJT X0RMXzE2CQkJCQkoMHgwIDw8IDIpCisKKyNkZWZpbmUgTkFVODgyNF9GUkVRXzI1MDAwMDAwCQkJ CTI1MDAwMDAwCisjZGVmaW5lIE5BVTg4MjRfUExMX0NMS0lOX01DTEsJCQkJMAorI2RlZmluZSBO QVU4ODI0X0JVVFRPTlBSRVNTX01BU0sJCQkweDIwCisjZGVmaW5lIE5BVTg4MjRfSFNQTFVHX01B U0sJCQkJCTB4MTAKKworZW51bSB7CisJTkFVODgyNF9JTlRFUk5BTENMT0NLID0gMCwKKwlOQVU4 ODI0X01DTEssCit9OworCitlbnVtIHsKKwlOQVU4ODI0X0pfSU5fRVZFTlQsCisJTkFVODgyNF9K X09VVF9FVkVOVCwKKwlOQVU4ODI0X0JQX0VWRU5ULAorCU5BVTg4MjRfQlJfRVZFTlQsCisJTkFV ODgyNF9VTl9FVkVOVCwKK307CisKK2VudW0geworCVNfTkFVODgyNF9KX09VVCwKKwlTX05BVTg4 MjRfSl9JTl9URU1QLAorCVNfTkFVODgyNF9KX0lOLAorCVNfTkFVODgyNF9CVVRUT05fREVDVCwK KwlTX05BVTg4MjRfTk9fQlVUVE9OX0RFQ1QsCit9OworCisjZGVmaW5lIE5BVTg4MjRfUkFURVMJ U05EUlZfUENNX1JBVEVfODAwMF8xOTIwMDAKKyNkZWZpbmUgTkFVODgyNF9GT1JNQVRTCShTTkRS Vl9QQ01fRk1UQklUX1MxNl9MRSB8IFNORFJWX1BDTV9GTVRCSVRfUzIwXzNMRSBcCisJCQkgfCBT TkRSVl9QQ01fRk1UQklUX1MyNF8zTEUgfCBTTkRSVl9QQ01fRk1UQklUX1MzMl9MRSkKKworc3Ry dWN0IG5hdTg4MjRfamFja19kYXRhIHsKKwlzdHJ1Y3Qgc25kX3NvY19qYWNrICpqYWNrOworCWlu dCByZXBvcnQ7Cit9OworCitzdHJ1Y3QgbmF1ODgyNF9ncGlvX3NldHVwIHsKKwl1bnNpZ25lZCBp bnQgcmVnOworCXU4IHZhbHVlOworfTsKKworc3RydWN0IG5hdTg4MjRfcGRhdGEgeworCXVuc2ln bmVkIGludCBhdWRpb19tY2xrMTsKKwl1bnNpZ25lZCBpbnQgZ3Bpb19pcnE7CisJaW50IG5hdWRp bnRfaXJxOworCWludCBoZWFkc2V0X2RldGVjdDsKKwlpbnQgYnV0dG9uX3ByZXNzX2RldGVjdDsK K307CisKK3N0cnVjdCBuYXU4ODI0X3ByaXYgeworCXN0cnVjdCBuYXU4ODI0X2phY2tfZGF0YSBo c19qYWNrOworCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3b3JrcXVldWU7CisJc3RydWN0IGRl bGF5ZWRfd29yayBkZWxheWVkX3dvcms7CisJc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjOwor CXU4IGkyY19yZWdzX3N0YXR1czsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHJlZ21h cCAqcmVnbWFwOworCXN0cnVjdCBtdXRleCBtdXRleDsKKwlzdHJ1Y3QgbmF1ODgyNF9wZGF0YSBw ZGF0YTsKKwl1bnNpZ25lZCBpbnQgaXJxOworCWJvb2wgamRfc3RhdHVzOworCWJvb2wgYnBfc3Rh dHVzOworCWludAlqYWNrX3R5cGU7Cit9OworCitpbnQgbmF1ODgyNF9kZXZpY2VfaW5pdChzdHJ1 Y3QgbmF1ODgyNF9wcml2ICpuYXU4ODI0KTsKK3ZvaWQgbmF1ODgyNF9kZXZpY2VfZXhpdChzdHJ1 Y3QgbmF1ODgyNF9wcml2ICpuYXU4ODI0KTsKK3ZvaWQgbmF1ODgyNF9lbmFibGVfbWljX2JpYXMo c3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjLCBpbnQgZW5hYmxlKTsKK2ludCBuYXU4ODI0X3F1 ZXJ5X2phY2tfc3RhdHVzKHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyk7CitpbnQgbmF1ODgy NF9xdWVyeV9idG5fcHJlc3Moc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjKTsKK3ZvaWQgbmF1 ODgyNF9idG5fcHJlc3NfaW50cl9lbmFibGUoc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjLAlp bnQgZW5hYmxlKTsKKworI2VuZGlmCQkJCS8qIF9OQVU4ODI0X0ggKi8KLS0gCjEuOS4xCgoKLS0t CuatpOeUteWtkOmCruS7tuayoeacieeXheavkuWSjOaBtuaEj+i9r+S7tu+8jOWboOS4uiBhdmFz dCEg6Ziy55eF5q+S5L+d5oqk5aSE5LqO5rS75Yqo54q25oCB44CCCmh0dHA6Ly93d3cuYXZhc3Qu Y29tCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBbHNh LWRldmVsIG1haWxpbmcgbGlzdApBbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcKaHR0cDovL21h aWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Fsc2EtZGV2ZWwK