From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: [PATCH RFC 003/111] staging: etnaviv: add drm driver Date: Thu, 2 Apr 2015 17:29:05 +0200 Message-ID: <1427988653-754-4-git-send-email-l.stach@pengutronix.de> References: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTP id 3BFB16EA40 for ; Thu, 2 Apr 2015 08:30:56 -0700 (PDT) In-Reply-To: <1427988653-754-1-git-send-email-l.stach@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Russell King , kernel@pengutronix.de List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0aWFuIEdtZWluZXIgPGNocmlzdGlhbi5nbWVpbmVyQGdtYWlsLmNvbT4KClRo aXMgaXMgYSBjb25zb2xpZGF0aW9uIGJ5IFJ1c3NlbGwgS2luZyBvZiBDaHJpc3RpYW4ncyBkcm0g d29yay4KClNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBHbWVpbmVyIDxjaHJpc3RpYW4uZ21laW5l ckBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IFJ1c3NlbGwgS2luZyA8cm1rK2tlcm5lbEBhcm0u bGludXgub3JnLnVrPgotLS0KIGRyaXZlcnMvc3RhZ2luZy9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKIGRyaXZlcnMvc3RhZ2luZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L0tjb25maWcgICAgICAgICAgICAg IHwgIDIwICsKIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L01ha2VmaWxlICAgICAgICAgICAgIHwg IDE3ICsKIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2NtZHN0cmVhbS54bWwuaCAgICAgIHwgMjE4 ICsrKysrKwogZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvY29tbW9uLnhtbC5oICAgICAgICAgfCAy NTMgKysrKysrKwogZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9idWZmZXIuYyAgICAg fCAyMDEgKysrKysrCiBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5jICAgICAg ICB8IDYyMSArKysrKysrKysrKysrKysrKwogZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZp dl9kcnYuaCAgICAgICAgfCAxNDMgKysrKwogZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZp dl9nZW0uYyAgICAgICAgfCA3MDYgKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9zdGFnaW5n L2V0bmF2aXYvZXRuYXZpdl9nZW0uaCAgICAgICAgfCAxMDAgKysrCiBkcml2ZXJzL3N0YWdpbmcv ZXRuYXZpdi9ldG5hdml2X2dlbV9wcmltZS5jICB8ICA1NiArKwogZHJpdmVycy9zdGFnaW5nL2V0 bmF2aXYvZXRuYXZpdl9nZW1fc3VibWl0LmMgfCA0MDcgKysrKysrKysrKysKIGRyaXZlcnMvc3Rh Z2luZy9ldG5hdml2L2V0bmF2aXZfZ3B1LmMgICAgICAgIHwgOTg0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKwogZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9ncHUuaCAgICAgICAg fCAxNTIgKysrKysKIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfaW9tbXUuYyAgICAg IHwgMTg1ICsrKysrCiBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11LmggICAg ICB8ICAyNSArCiBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmMgICB8 ICAzMiArCiBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmggICB8ICAy NSArCiBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X21tdS5jICAgICAgICB8IDExMSAr KysKIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfbW11LmggICAgICAgIHwgIDM3ICsK IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L3N0YXRlLnhtbC5oICAgICAgICAgIHwgMzQ4ICsrKysr KysrKysKIGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L3N0YXRlX2hpLnhtbC5oICAgICAgIHwgNDA1 ICsrKysrKysrKysrCiBpbmNsdWRlL3VhcGkvZHJtL2V0bmF2aXZfZHJtLmggICAgICAgICAgICAg ICB8IDIyNSArKysrKysKIDI0IGZpbGVzIGNoYW5nZWQsIDUyNzQgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L0tjb25maWcKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9NYWtlZmlsZQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2NtZHN0cmVhbS54bWwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2NvbW1vbi54bWwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfYnVmZmVyLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9kcnYuaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2dlbS5oCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9nZW1fcHJp bWUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZf Z2VtX3N1Ym1pdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYv ZXRuYXZpdl9ncHUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9ldG5hdml2 L2V0bmF2aXZfZ3B1LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvZXRuYXZp di9ldG5hdml2X2lvbW11LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvZXRu YXZpdi9ldG5hdml2X2lvbW11LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcv ZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0 YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X21tdS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9tbXUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvc3RhZ2luZy9ldG5hdml2L3N0YXRlLnhtbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9zdGFnaW5nL2V0bmF2aXYvc3RhdGVfaGkueG1sLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL3VhcGkvZHJtL2V0bmF2aXZfZHJtLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy9LY29uZmlnCmluZGV4IDQ1YmFhODNiZTdjZS4u NDQxYjFhZmJmZTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvS2NvbmZpZworKysgYi9k cml2ZXJzL3N0YWdpbmcvS2NvbmZpZwpAQCAtMTA4LDQgKzEwOCw2IEBAIHNvdXJjZSAiZHJpdmVy cy9zdGFnaW5nL2ZidGZ0L0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy9zdGFnaW5nL2kyby9L Y29uZmlnIgogCitzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy9ldG5hdml2L0tjb25maWciCisKIGVu ZGlmICMgU1RBR0lORwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL01ha2VmaWxlIGIvZHJp dmVycy9zdGFnaW5nL01ha2VmaWxlCmluZGV4IDI5MTYwNzkwODQxZi4uZjUzY2Y4NDEyYzBjIDEw MDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9zdGFnaW5n L01ha2VmaWxlCkBAIC00NiwzICs0Niw0IEBAIG9iai0kKENPTkZJR19VTklTWVNTUEFSKQkrPSB1 bmlzeXMvCiBvYmotJChDT05GSUdfQ09NTU9OX0NMS19YTE5YX0NMS1daUkQpCSs9IGNsb2NraW5n LXdpemFyZC8KIG9iai0kKENPTkZJR19GQl9URlQpCQkrPSBmYnRmdC8KIG9iai0kKENPTkZJR19J Mk8pCQkrPSBpMm8vCitvYmotJChDT05GSUdfRFJNX0VUTkFWSVYpCSs9IGV0bmF2aXYvCmRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5n L2V0bmF2aXYvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjZmMDM0ZWRhOTE0YwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2 L0tjb25maWcKQEAgLTAsMCArMSwyMCBAQAorCitjb25maWcgRFJNX0VUTkFWSVYKKwl0cmlzdGF0 ZSAiZXRuYXZpdiBEUk0iCisJZGVwZW5kcyBvbiBEUk0KKwlzZWxlY3QgU0hNRU0KKwlzZWxlY3Qg VE1QRlMKKwlzZWxlY3QgSU9NTVVfQVBJCisJc2VsZWN0IElPTU1VX1NVUFBPUlQKKwlkZWZhdWx0 IHkKKwloZWxwCisJICBEUk0gZHJpdmVyIGZvciBWaXZhbnRlIEdQVXMuCisKK2NvbmZpZyBEUk1f RVROQVZJVl9SRUdJU1RFUl9MT0dHSU5HCisJYm9vbCAiZXRuYXZpdiBEUk0gcmVnaXN0ZXIgbG9n Z2luZyIKKwlkZXBlbmRzIG9uIERSTV9FVE5BVklWCisJZGVmYXVsdCBuCisJaGVscAorCSAgQ29t cGlsZSBpbiBzdXBwb3J0IGZvciBsb2dnaW5nIHJlZ2lzdGVyIHJlYWRzL3dyaXRlcyBpbiBhIGZv cm1hdAorCSAgdGhhdCBjYW4gYmUgcGFyc2VkIGJ5IGVudnl0b29scyBkZW1zbSB0b29sLiAgSWYg ZW5hYmxlZCwgcmVnaXN0ZXIKKwkgIGxvZ2dpbmcgY2FuIGJlIHN3aXRjaGVkIG9uIHZpYSBldG5h dml2LnJlZ2xvZz15IG1vZHVsZSBwYXJhbS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9l dG5hdml2L01ha2VmaWxlIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvTWFrZWZpbGUKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZjBjZmZhYmRjY2UKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9NYWtlZmlsZQpAQCAtMCwwICsxLDE3 IEBACitjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybSAtSWRyaXZlcnMvc3RhZ2luZy92aXZhbnRl CitpZmVxICgsICQoZmluZHN0cmluZyAtVywkKEVYVFJBX0NGTEFHUykpKQorCWNjZmxhZ3MteSAr PSAtV2Vycm9yCitlbmRpZgorCitldG5hdml2LXkgOj0gXAorCWV0bmF2aXZfZHJ2Lm8gXAorCWV0 bmF2aXZfZ2VtLm8gXAorCWV0bmF2aXZfZ2VtX3ByaW1lLm8gXAorCWV0bmF2aXZfZ2VtX3N1Ym1p dC5vIFwKKwlldG5hdml2X2dwdS5vIFwKKwlldG5hdml2X2lvbW11Lm8gXAorCWV0bmF2aXZfaW9t bXVfdjIubyBcCisJZXRuYXZpdl9tbXUubyBcCisJZXRuYXZpdl9idWZmZXIubworCitvYmotJChD T05GSUdfRFJNX0VUTkFWSVYpCSs9IGV0bmF2aXYubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFn aW5nL2V0bmF2aXYvY21kc3RyZWFtLnhtbC5oIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvY21k c3RyZWFtLnhtbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODQ0 ZjgyOTc3ZTNlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvY21k c3RyZWFtLnhtbC5oCkBAIC0wLDAgKzEsMjE4IEBACisjaWZuZGVmIENNRFNUUkVBTV9YTUwKKyNk ZWZpbmUgQ01EU1RSRUFNX1hNTAorCisvKiBBdXRvZ2VuZXJhdGVkIGZpbGUsIERPIE5PVCBFRElU IG1hbnVhbGx5IQorCitUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSB0aGUgcnVsZXMtbmctbmcg aGVhZGVyZ2VuIHRvb2wgaW4gdGhpcyBnaXQgcmVwb3NpdG9yeToKK2h0dHA6Ly8weDA0Lm5ldC9j Z2l0L2luZGV4LmNnaS9ydWxlcy1uZy1uZworZ2l0IGNsb25lIGdpdDovLzB4MDQubmV0L3J1bGVz LW5nLW5nCisKK1RoZSBydWxlcy1uZy1uZyBzb3VyY2UgZmlsZXMgdGhpcyBoZWFkZXIgd2FzIGdl bmVyYXRlZCBmcm9tIGFyZToKKy0gL2hvbWUvb3Jpb24vcHJvamVjdHMvZXRuYV92aXYvcm5uZGIv Y21kc3RyZWFtLnhtbCAoICAxMjU4OSBieXRlcywgZnJvbSAyMDEzLTA5LTAxIDEwOjUzOjIyKQor LSAvaG9tZS9vcmlvbi9wcm9qZWN0cy9ldG5hX3Zpdi9ybm5kYi9jb21tb24ueG1sICAgICggIDE4 Mzc5IGJ5dGVzLCBmcm9tIDIwMTQtMDEtMjcgMTU6NTg6MDUpCisKK0NvcHlyaWdodCAoQykgMjAx MworKi8KKworCisjZGVmaW5lIEZFX09QQ09ERV9MT0FEX1NUQVRFCQkJCQkweDAwMDAwMDAxCisj ZGVmaW5lIEZFX09QQ09ERV9FTkQJCQkJCQkweDAwMDAwMDAyCisjZGVmaW5lIEZFX09QQ09ERV9O T1AJCQkJCQkweDAwMDAwMDAzCisjZGVmaW5lIEZFX09QQ09ERV9EUkFXXzJECQkJCQkweDAwMDAw MDA0CisjZGVmaW5lIEZFX09QQ09ERV9EUkFXX1BSSU1JVElWRVMJCQkJMHgwMDAwMDAwNQorI2Rl ZmluZSBGRV9PUENPREVfRFJBV19JTkRFWEVEX1BSSU1JVElWRVMJCQkweDAwMDAwMDA2CisjZGVm aW5lIEZFX09QQ09ERV9XQUlUCQkJCQkJMHgwMDAwMDAwNworI2RlZmluZSBGRV9PUENPREVfTElO SwkJCQkJCTB4MDAwMDAwMDgKKyNkZWZpbmUgRkVfT1BDT0RFX1NUQUxMCQkJCQkJMHgwMDAwMDAw OQorI2RlZmluZSBGRV9PUENPREVfQ0FMTAkJCQkJCTB4MDAwMDAwMGEKKyNkZWZpbmUgRkVfT1BD T0RFX1JFVFVSTgkJCQkJMHgwMDAwMDAwYgorI2RlZmluZSBGRV9PUENPREVfQ0hJUF9TRUxFQ1QJ CQkJCTB4MDAwMDAwMGQKKyNkZWZpbmUgUFJJTUlUSVZFX1RZUEVfUE9JTlRTCQkJCQkweDAwMDAw MDAxCisjZGVmaW5lIFBSSU1JVElWRV9UWVBFX0xJTkVTCQkJCQkweDAwMDAwMDAyCisjZGVmaW5l IFBSSU1JVElWRV9UWVBFX0xJTkVfU1RSSVAJCQkJMHgwMDAwMDAwMworI2RlZmluZSBQUklNSVRJ VkVfVFlQRV9UUklBTkdMRVMJCQkJMHgwMDAwMDAwNAorI2RlZmluZSBQUklNSVRJVkVfVFlQRV9U UklBTkdMRV9TVFJJUAkJCQkweDAwMDAwMDA1CisjZGVmaW5lIFBSSU1JVElWRV9UWVBFX1RSSUFO R0xFX0ZBTgkJCQkweDAwMDAwMDA2CisjZGVmaW5lIFBSSU1JVElWRV9UWVBFX0xJTkVfTE9PUAkJ CQkweDAwMDAwMDA3CisjZGVmaW5lIFBSSU1JVElWRV9UWVBFX1FVQURTCQkJCQkweDAwMDAwMDA4 CisjZGVmaW5lIFZJVl9GRV9MT0FEX1NUQVRFCQkJCQkweDAwMDAwMDAwCisKKyNkZWZpbmUgVklW X0ZFX0xPQURfU1RBVEVfSEVBREVSCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX0xPQURf U1RBVEVfSEVBREVSX09QX19NQVNLCQkJMHhmODAwMDAwMAorI2RlZmluZSBWSVZfRkVfTE9BRF9T VEFURV9IRUFERVJfT1BfX1NISUZUCQkJMjcKKyNkZWZpbmUgVklWX0ZFX0xPQURfU1RBVEVfSEVB REVSX09QX0xPQURfU1RBVEUJCQkweDA4MDAwMDAwCisjZGVmaW5lIFZJVl9GRV9MT0FEX1NUQVRF X0hFQURFUl9GSVhQCQkJCTB4MDQwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX0xPQURfU1RBVEVfSEVB REVSX0NPVU5UX19NQVNLCQkJMHgwM2ZmMDAwMAorI2RlZmluZSBWSVZfRkVfTE9BRF9TVEFURV9I RUFERVJfQ09VTlRfX1NISUZUCQkJMTYKKyNkZWZpbmUgVklWX0ZFX0xPQURfU1RBVEVfSEVBREVS X0NPVU5UKHgpCQkJKCgoeCkgPDwgVklWX0ZFX0xPQURfU1RBVEVfSEVBREVSX0NPVU5UX19TSElG VCkgJiBWSVZfRkVfTE9BRF9TVEFURV9IRUFERVJfQ09VTlRfX01BU0spCisjZGVmaW5lIFZJVl9G RV9MT0FEX1NUQVRFX0hFQURFUl9PRkZTRVRfX01BU0sJCQkweDAwMDBmZmZmCisjZGVmaW5lIFZJ Vl9GRV9MT0FEX1NUQVRFX0hFQURFUl9PRkZTRVRfX1NISUZUCQkJMAorI2RlZmluZSBWSVZfRkVf TE9BRF9TVEFURV9IRUFERVJfT0ZGU0VUKHgpCQkJKCgoeCkgPDwgVklWX0ZFX0xPQURfU1RBVEVf SEVBREVSX09GRlNFVF9fU0hJRlQpICYgVklWX0ZFX0xPQURfU1RBVEVfSEVBREVSX09GRlNFVF9f TUFTSykKKyNkZWZpbmUgVklWX0ZFX0xPQURfU1RBVEVfSEVBREVSX09GRlNFVF9fU0hSCQkJMgor CisjZGVmaW5lIFZJVl9GRV9FTkQJCQkJCQkweDAwMDAwMDAwCisKKyNkZWZpbmUgVklWX0ZFX0VO RF9IRUFERVIJCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX0VORF9IRUFERVJfRVZFTlRf SURfX01BU0sJCQkweDAwMDAwMDFmCisjZGVmaW5lIFZJVl9GRV9FTkRfSEVBREVSX0VWRU5UX0lE X19TSElGVAkJCTAKKyNkZWZpbmUgVklWX0ZFX0VORF9IRUFERVJfRVZFTlRfSUQoeCkJCQkJKCgo eCkgPDwgVklWX0ZFX0VORF9IRUFERVJfRVZFTlRfSURfX1NISUZUKSAmIFZJVl9GRV9FTkRfSEVB REVSX0VWRU5UX0lEX19NQVNLKQorI2RlZmluZSBWSVZfRkVfRU5EX0hFQURFUl9FVkVOVF9FTkFC TEUJCQkJMHgwMDAwMDEwMAorI2RlZmluZSBWSVZfRkVfRU5EX0hFQURFUl9PUF9fTUFTSwkJCQkw eGY4MDAwMDAwCisjZGVmaW5lIFZJVl9GRV9FTkRfSEVBREVSX09QX19TSElGVAkJCQkyNworI2Rl ZmluZSBWSVZfRkVfRU5EX0hFQURFUl9PUF9FTkQJCQkJMHgxMDAwMDAwMAorCisjZGVmaW5lIFZJ Vl9GRV9OT1AJCQkJCQkweDAwMDAwMDAwCisKKyNkZWZpbmUgVklWX0ZFX05PUF9IRUFERVIJCQkJ CTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX05PUF9IRUFERVJfT1BfX01BU0sJCQkJMHhmODAw MDAwMAorI2RlZmluZSBWSVZfRkVfTk9QX0hFQURFUl9PUF9fU0hJRlQJCQkJMjcKKyNkZWZpbmUg VklWX0ZFX05PUF9IRUFERVJfT1BfTk9QCQkJCTB4MTgwMDAwMDAKKworI2RlZmluZSBWSVZfRkVf RFJBV18yRAkJCQkJCTB4MDAwMDAwMDAKKworI2RlZmluZSBWSVZfRkVfRFJBV18yRF9IRUFERVIJ CQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX0RSQVdfMkRfSEVBREVSX0NPVU5UX19NQVNL CQkJMHgwMDAwZmYwMAorI2RlZmluZSBWSVZfRkVfRFJBV18yRF9IRUFERVJfQ09VTlRfX1NISUZU CQkJOAorI2RlZmluZSBWSVZfRkVfRFJBV18yRF9IRUFERVJfQ09VTlQoeCkJCQkJKCgoeCkgPDwg VklWX0ZFX0RSQVdfMkRfSEVBREVSX0NPVU5UX19TSElGVCkgJiBWSVZfRkVfRFJBV18yRF9IRUFE RVJfQ09VTlRfX01BU0spCisjZGVmaW5lIFZJVl9GRV9EUkFXXzJEX0hFQURFUl9EQVRBX0NPVU5U X19NQVNLCQkJMHgwN2ZmMDAwMAorI2RlZmluZSBWSVZfRkVfRFJBV18yRF9IRUFERVJfREFUQV9D T1VOVF9fU0hJRlQJCQkxNgorI2RlZmluZSBWSVZfRkVfRFJBV18yRF9IRUFERVJfREFUQV9DT1VO VCh4KQkJCSgoKHgpIDw8IFZJVl9GRV9EUkFXXzJEX0hFQURFUl9EQVRBX0NPVU5UX19TSElGVCkg JiBWSVZfRkVfRFJBV18yRF9IRUFERVJfREFUQV9DT1VOVF9fTUFTSykKKyNkZWZpbmUgVklWX0ZF X0RSQVdfMkRfSEVBREVSX09QX19NQVNLCQkJCTB4ZjgwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX0RS QVdfMkRfSEVBREVSX09QX19TSElGVAkJCQkyNworI2RlZmluZSBWSVZfRkVfRFJBV18yRF9IRUFE RVJfT1BfRFJBV18yRAkJCTB4MjAwMDAwMDAKKworI2RlZmluZSBWSVZfRkVfRFJBV18yRF9UT1Bf TEVGVAkJCQkJMHgwMDAwMDAwOAorI2RlZmluZSBWSVZfRkVfRFJBV18yRF9UT1BfTEVGVF9YX19N QVNLCQkJCTB4MDAwMGZmZmYKKyNkZWZpbmUgVklWX0ZFX0RSQVdfMkRfVE9QX0xFRlRfWF9fU0hJ RlQJCQkwCisjZGVmaW5lIFZJVl9GRV9EUkFXXzJEX1RPUF9MRUZUX1goeCkJCQkJKCgoeCkgPDwg VklWX0ZFX0RSQVdfMkRfVE9QX0xFRlRfWF9fU0hJRlQpICYgVklWX0ZFX0RSQVdfMkRfVE9QX0xF RlRfWF9fTUFTSykKKyNkZWZpbmUgVklWX0ZFX0RSQVdfMkRfVE9QX0xFRlRfWV9fTUFTSwkJCQkw eGZmZmYwMDAwCisjZGVmaW5lIFZJVl9GRV9EUkFXXzJEX1RPUF9MRUZUX1lfX1NISUZUCQkJMTYK KyNkZWZpbmUgVklWX0ZFX0RSQVdfMkRfVE9QX0xFRlRfWSh4KQkJCQkoKCh4KSA8PCBWSVZfRkVf RFJBV18yRF9UT1BfTEVGVF9ZX19TSElGVCkgJiBWSVZfRkVfRFJBV18yRF9UT1BfTEVGVF9ZX19N QVNLKQorCisjZGVmaW5lIFZJVl9GRV9EUkFXXzJEX0JPVFRPTV9SSUdIVAkJCQkweDAwMDAwMDBj CisjZGVmaW5lIFZJVl9GRV9EUkFXXzJEX0JPVFRPTV9SSUdIVF9YX19NQVNLCQkJMHgwMDAwZmZm ZgorI2RlZmluZSBWSVZfRkVfRFJBV18yRF9CT1RUT01fUklHSFRfWF9fU0hJRlQJCQkwCisjZGVm aW5lIFZJVl9GRV9EUkFXXzJEX0JPVFRPTV9SSUdIVF9YKHgpCQkJKCgoeCkgPDwgVklWX0ZFX0RS QVdfMkRfQk9UVE9NX1JJR0hUX1hfX1NISUZUKSAmIFZJVl9GRV9EUkFXXzJEX0JPVFRPTV9SSUdI VF9YX19NQVNLKQorI2RlZmluZSBWSVZfRkVfRFJBV18yRF9CT1RUT01fUklHSFRfWV9fTUFTSwkJ CTB4ZmZmZjAwMDAKKyNkZWZpbmUgVklWX0ZFX0RSQVdfMkRfQk9UVE9NX1JJR0hUX1lfX1NISUZU CQkJMTYKKyNkZWZpbmUgVklWX0ZFX0RSQVdfMkRfQk9UVE9NX1JJR0hUX1koeCkJCQkoKCh4KSA8 PCBWSVZfRkVfRFJBV18yRF9CT1RUT01fUklHSFRfWV9fU0hJRlQpICYgVklWX0ZFX0RSQVdfMkRf Qk9UVE9NX1JJR0hUX1lfX01BU0spCisKKyNkZWZpbmUgVklWX0ZFX0RSQVdfUFJJTUlUSVZFUwkJ CQkJMHgwMDAwMDAwMAorCisjZGVmaW5lIFZJVl9GRV9EUkFXX1BSSU1JVElWRVNfSEVBREVSCQkJ CTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX0RSQVdfUFJJTUlUSVZFU19IRUFERVJfT1BfX01B U0sJCQkweGY4MDAwMDAwCisjZGVmaW5lIFZJVl9GRV9EUkFXX1BSSU1JVElWRVNfSEVBREVSX09Q X19TSElGVAkJCTI3CisjZGVmaW5lIFZJVl9GRV9EUkFXX1BSSU1JVElWRVNfSEVBREVSX09QX0RS QVdfUFJJTUlUSVZFUwkweDI4MDAwMDAwCisKKyNkZWZpbmUgVklWX0ZFX0RSQVdfUFJJTUlUSVZF U19DT01NQU5ECQkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgVklWX0ZFX0RSQVdfUFJJTUlUSVZFU19D T01NQU5EX1RZUEVfX01BU0sJCTB4MDAwMDAwZmYKKyNkZWZpbmUgVklWX0ZFX0RSQVdfUFJJTUlU SVZFU19DT01NQU5EX1RZUEVfX1NISUZUCQkwCisjZGVmaW5lIFZJVl9GRV9EUkFXX1BSSU1JVElW RVNfQ09NTUFORF9UWVBFKHgpCQkJKCgoeCkgPDwgVklWX0ZFX0RSQVdfUFJJTUlUSVZFU19DT01N QU5EX1RZUEVfX1NISUZUKSAmIFZJVl9GRV9EUkFXX1BSSU1JVElWRVNfQ09NTUFORF9UWVBFX19N QVNLKQorCisjZGVmaW5lIFZJVl9GRV9EUkFXX1BSSU1JVElWRVNfU1RBUlQJCQkJMHgwMDAwMDAw OAorCisjZGVmaW5lIFZJVl9GRV9EUkFXX1BSSU1JVElWRVNfQ09VTlQJCQkJMHgwMDAwMDAwYwor CisjZGVmaW5lIFZJVl9GRV9EUkFXX0lOREVYRURfUFJJTUlUSVZFUwkJCQkweDAwMDAwMDAwCisK KyNkZWZpbmUgVklWX0ZFX0RSQVdfSU5ERVhFRF9QUklNSVRJVkVTX0hFQURFUgkJCTB4MDAwMDAw MDAKKyNkZWZpbmUgVklWX0ZFX0RSQVdfSU5ERVhFRF9QUklNSVRJVkVTX0hFQURFUl9PUF9fTUFT SwkJMHhmODAwMDAwMAorI2RlZmluZSBWSVZfRkVfRFJBV19JTkRFWEVEX1BSSU1JVElWRVNfSEVB REVSX09QX19TSElGVAkJMjcKKyNkZWZpbmUgVklWX0ZFX0RSQVdfSU5ERVhFRF9QUklNSVRJVkVT X0hFQURFUl9PUF9EUkFXX0lOREVYRURfUFJJTUlUSVZFUwkweDMwMDAwMDAwCisKKyNkZWZpbmUg VklWX0ZFX0RSQVdfSU5ERVhFRF9QUklNSVRJVkVTX0NPTU1BTkQJCQkweDAwMDAwMDA0CisjZGVm aW5lIFZJVl9GRV9EUkFXX0lOREVYRURfUFJJTUlUSVZFU19DT01NQU5EX1RZUEVfX01BU0sJMHgw MDAwMDBmZgorI2RlZmluZSBWSVZfRkVfRFJBV19JTkRFWEVEX1BSSU1JVElWRVNfQ09NTUFORF9U WVBFX19TSElGVAkwCisjZGVmaW5lIFZJVl9GRV9EUkFXX0lOREVYRURfUFJJTUlUSVZFU19DT01N QU5EX1RZUEUoeCkJCSgoKHgpIDw8IFZJVl9GRV9EUkFXX0lOREVYRURfUFJJTUlUSVZFU19DT01N QU5EX1RZUEVfX1NISUZUKSAmIFZJVl9GRV9EUkFXX0lOREVYRURfUFJJTUlUSVZFU19DT01NQU5E X1RZUEVfX01BU0spCisKKyNkZWZpbmUgVklWX0ZFX0RSQVdfSU5ERVhFRF9QUklNSVRJVkVTX1NU QVJUCQkJMHgwMDAwMDAwOAorCisjZGVmaW5lIFZJVl9GRV9EUkFXX0lOREVYRURfUFJJTUlUSVZF U19DT1VOVAkJCTB4MDAwMDAwMGMKKworI2RlZmluZSBWSVZfRkVfRFJBV19JTkRFWEVEX1BSSU1J VElWRVNfT0ZGU0VUCQkJMHgwMDAwMDAxMAorCisjZGVmaW5lIFZJVl9GRV9XQUlUCQkJCQkJMHgw MDAwMDAwMAorCisjZGVmaW5lIFZJVl9GRV9XQUlUX0hFQURFUgkJCQkJMHgwMDAwMDAwMAorI2Rl ZmluZSBWSVZfRkVfV0FJVF9IRUFERVJfREVMQVlfX01BU0sJCQkJMHgwMDAwZmZmZgorI2RlZmlu ZSBWSVZfRkVfV0FJVF9IRUFERVJfREVMQVlfX1NISUZUCQkJCTAKKyNkZWZpbmUgVklWX0ZFX1dB SVRfSEVBREVSX0RFTEFZKHgpCQkJCSgoKHgpIDw8IFZJVl9GRV9XQUlUX0hFQURFUl9ERUxBWV9f U0hJRlQpICYgVklWX0ZFX1dBSVRfSEVBREVSX0RFTEFZX19NQVNLKQorI2RlZmluZSBWSVZfRkVf V0FJVF9IRUFERVJfT1BfX01BU0sJCQkJMHhmODAwMDAwMAorI2RlZmluZSBWSVZfRkVfV0FJVF9I RUFERVJfT1BfX1NISUZUCQkJCTI3CisjZGVmaW5lIFZJVl9GRV9XQUlUX0hFQURFUl9PUF9XQUlU CQkJCTB4MzgwMDAwMDAKKworI2RlZmluZSBWSVZfRkVfTElOSwkJCQkJCTB4MDAwMDAwMDAKKwor I2RlZmluZSBWSVZfRkVfTElOS19IRUFERVIJCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWX0ZF X0xJTktfSEVBREVSX1BSRUZFVENIX19NQVNLCQkJMHgwMDAwZmZmZgorI2RlZmluZSBWSVZfRkVf TElOS19IRUFERVJfUFJFRkVUQ0hfX1NISUZUCQkJMAorI2RlZmluZSBWSVZfRkVfTElOS19IRUFE RVJfUFJFRkVUQ0goeCkJCQkJKCgoeCkgPDwgVklWX0ZFX0xJTktfSEVBREVSX1BSRUZFVENIX19T SElGVCkgJiBWSVZfRkVfTElOS19IRUFERVJfUFJFRkVUQ0hfX01BU0spCisjZGVmaW5lIFZJVl9G RV9MSU5LX0hFQURFUl9PUF9fTUFTSwkJCQkweGY4MDAwMDAwCisjZGVmaW5lIFZJVl9GRV9MSU5L X0hFQURFUl9PUF9fU0hJRlQJCQkJMjcKKyNkZWZpbmUgVklWX0ZFX0xJTktfSEVBREVSX09QX0xJ TksJCQkJMHg0MDAwMDAwMAorCisjZGVmaW5lIFZJVl9GRV9MSU5LX0FERFJFU1MJCQkJCTB4MDAw MDAwMDQKKworI2RlZmluZSBWSVZfRkVfU1RBTEwJCQkJCQkweDAwMDAwMDAwCisKKyNkZWZpbmUg VklWX0ZFX1NUQUxMX0hFQURFUgkJCQkJMHgwMDAwMDAwMAorI2RlZmluZSBWSVZfRkVfU1RBTExf SEVBREVSX09QX19NQVNLCQkJCTB4ZjgwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX1NUQUxMX0hFQURF Ul9PUF9fU0hJRlQJCQkJMjcKKyNkZWZpbmUgVklWX0ZFX1NUQUxMX0hFQURFUl9PUF9TVEFMTAkJ CQkweDQ4MDAwMDAwCisKKyNkZWZpbmUgVklWX0ZFX1NUQUxMX1RPS0VOCQkJCQkweDAwMDAwMDA0 CisjZGVmaW5lIFZJVl9GRV9TVEFMTF9UT0tFTl9GUk9NX19NQVNLCQkJCTB4MDAwMDAwMWYKKyNk ZWZpbmUgVklWX0ZFX1NUQUxMX1RPS0VOX0ZST01fX1NISUZUCQkJCTAKKyNkZWZpbmUgVklWX0ZF X1NUQUxMX1RPS0VOX0ZST00oeCkJCQkJKCgoeCkgPDwgVklWX0ZFX1NUQUxMX1RPS0VOX0ZST01f X1NISUZUKSAmIFZJVl9GRV9TVEFMTF9UT0tFTl9GUk9NX19NQVNLKQorI2RlZmluZSBWSVZfRkVf U1RBTExfVE9LRU5fVE9fX01BU0sJCQkJMHgwMDAwMWYwMAorI2RlZmluZSBWSVZfRkVfU1RBTExf VE9LRU5fVE9fX1NISUZUCQkJCTgKKyNkZWZpbmUgVklWX0ZFX1NUQUxMX1RPS0VOX1RPKHgpCQkJ CSgoKHgpIDw8IFZJVl9GRV9TVEFMTF9UT0tFTl9UT19fU0hJRlQpICYgVklWX0ZFX1NUQUxMX1RP S0VOX1RPX19NQVNLKQorCisjZGVmaW5lIFZJVl9GRV9DQUxMCQkJCQkJMHgwMDAwMDAwMAorCisj ZGVmaW5lIFZJVl9GRV9DQUxMX0hFQURFUgkJCQkJMHgwMDAwMDAwMAorI2RlZmluZSBWSVZfRkVf Q0FMTF9IRUFERVJfUFJFRkVUQ0hfX01BU0sJCQkweDAwMDBmZmZmCisjZGVmaW5lIFZJVl9GRV9D QUxMX0hFQURFUl9QUkVGRVRDSF9fU0hJRlQJCQkwCisjZGVmaW5lIFZJVl9GRV9DQUxMX0hFQURF Ul9QUkVGRVRDSCh4KQkJCQkoKCh4KSA8PCBWSVZfRkVfQ0FMTF9IRUFERVJfUFJFRkVUQ0hfX1NI SUZUKSAmIFZJVl9GRV9DQUxMX0hFQURFUl9QUkVGRVRDSF9fTUFTSykKKyNkZWZpbmUgVklWX0ZF X0NBTExfSEVBREVSX09QX19NQVNLCQkJCTB4ZjgwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX0NBTExf SEVBREVSX09QX19TSElGVAkJCQkyNworI2RlZmluZSBWSVZfRkVfQ0FMTF9IRUFERVJfT1BfQ0FM TAkJCQkweDUwMDAwMDAwCisKKyNkZWZpbmUgVklWX0ZFX0NBTExfQUREUkVTUwkJCQkJMHgwMDAw MDAwNAorCisjZGVmaW5lIFZJVl9GRV9DQUxMX1JFVFVSTl9QUkVGRVRDSAkJCQkweDAwMDAwMDA4 CisKKyNkZWZpbmUgVklWX0ZFX0NBTExfUkVUVVJOX0FERFJFU1MJCQkJMHgwMDAwMDAwYworCisj ZGVmaW5lIFZJVl9GRV9SRVRVUk4JCQkJCQkweDAwMDAwMDAwCisKKyNkZWZpbmUgVklWX0ZFX1JF VFVSTl9IRUFERVIJCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWX0ZFX1JFVFVSTl9IRUFERVJf T1BfX01BU0sJCQkJMHhmODAwMDAwMAorI2RlZmluZSBWSVZfRkVfUkVUVVJOX0hFQURFUl9PUF9f U0hJRlQJCQkJMjcKKyNkZWZpbmUgVklWX0ZFX1JFVFVSTl9IRUFERVJfT1BfUkVUVVJOCQkJCTB4 NTgwMDAwMDAKKworI2RlZmluZSBWSVZfRkVfQ0hJUF9TRUxFQ1QJCQkJCTB4MDAwMDAwMDAKKwor I2RlZmluZSBWSVZfRkVfQ0hJUF9TRUxFQ1RfSEVBREVSCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUg VklWX0ZFX0NISVBfU0VMRUNUX0hFQURFUl9PUF9fTUFTSwkJCTB4ZjgwMDAwMDAKKyNkZWZpbmUg VklWX0ZFX0NISVBfU0VMRUNUX0hFQURFUl9PUF9fU0hJRlQJCQkyNworI2RlZmluZSBWSVZfRkVf Q0hJUF9TRUxFQ1RfSEVBREVSX09QX0NISVBfU0VMRUNUCQkweDY4MDAwMDAwCisjZGVmaW5lIFZJ Vl9GRV9DSElQX1NFTEVDVF9IRUFERVJfRU5BQkxFX0NISVAxNQkJCTB4MDAwMDgwMDAKKyNkZWZp bmUgVklWX0ZFX0NISVBfU0VMRUNUX0hFQURFUl9FTkFCTEVfQ0hJUDE0CQkJMHgwMDAwNDAwMAor I2RlZmluZSBWSVZfRkVfQ0hJUF9TRUxFQ1RfSEVBREVSX0VOQUJMRV9DSElQMTMJCQkweDAwMDAy MDAwCisjZGVmaW5lIFZJVl9GRV9DSElQX1NFTEVDVF9IRUFERVJfRU5BQkxFX0NISVAxMgkJCTB4 MDAwMDEwMDAKKyNkZWZpbmUgVklWX0ZFX0NISVBfU0VMRUNUX0hFQURFUl9FTkFCTEVfQ0hJUDEx CQkJMHgwMDAwMDgwMAorI2RlZmluZSBWSVZfRkVfQ0hJUF9TRUxFQ1RfSEVBREVSX0VOQUJMRV9D SElQMTAJCQkweDAwMDAwNDAwCisjZGVmaW5lIFZJVl9GRV9DSElQX1NFTEVDVF9IRUFERVJfRU5B QkxFX0NISVA5CQkJMHgwMDAwMDIwMAorI2RlZmluZSBWSVZfRkVfQ0hJUF9TRUxFQ1RfSEVBREVS X0VOQUJMRV9DSElQOAkJCTB4MDAwMDAxMDAKKyNkZWZpbmUgVklWX0ZFX0NISVBfU0VMRUNUX0hF QURFUl9FTkFCTEVfQ0hJUDcJCQkweDAwMDAwMDgwCisjZGVmaW5lIFZJVl9GRV9DSElQX1NFTEVD VF9IRUFERVJfRU5BQkxFX0NISVA2CQkJMHgwMDAwMDA0MAorI2RlZmluZSBWSVZfRkVfQ0hJUF9T RUxFQ1RfSEVBREVSX0VOQUJMRV9DSElQNQkJCTB4MDAwMDAwMjAKKyNkZWZpbmUgVklWX0ZFX0NI SVBfU0VMRUNUX0hFQURFUl9FTkFCTEVfQ0hJUDQJCQkweDAwMDAwMDEwCisjZGVmaW5lIFZJVl9G RV9DSElQX1NFTEVDVF9IRUFERVJfRU5BQkxFX0NISVAzCQkJMHgwMDAwMDAwOAorI2RlZmluZSBW SVZfRkVfQ0hJUF9TRUxFQ1RfSEVBREVSX0VOQUJMRV9DSElQMgkJCTB4MDAwMDAwMDQKKyNkZWZp bmUgVklWX0ZFX0NISVBfU0VMRUNUX0hFQURFUl9FTkFCTEVfQ0hJUDEJCQkweDAwMDAwMDAyCisj ZGVmaW5lIFZJVl9GRV9DSElQX1NFTEVDVF9IRUFERVJfRU5BQkxFX0NISVAwCQkJMHgwMDAwMDAw MQorCisKKyNlbmRpZiAvKiBDTURTVFJFQU1fWE1MICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvZXRuYXZpdi9jb21tb24ueG1sLmggYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9jb21t b24ueG1sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zNmZhMGU0 Y2Y1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9jb21tb24u eG1sLmgKQEAgLTAsMCArMSwyNTMgQEAKKyNpZm5kZWYgQ09NTU9OX1hNTAorI2RlZmluZSBDT01N T05fWE1MCisKKy8qIEF1dG9nZW5lcmF0ZWQgZmlsZSwgRE8gTk9UIEVESVQgbWFudWFsbHkhCisK K1RoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBydWxlcy1uZy1uZyBoZWFkZXJnZW4gdG9v bCBpbiB0aGlzIGdpdCByZXBvc2l0b3J5OgoraHR0cDovLzB4MDQubmV0L2NnaXQvaW5kZXguY2dp L3J1bGVzLW5nLW5nCitnaXQgY2xvbmUgZ2l0Oi8vMHgwNC5uZXQvcnVsZXMtbmctbmcKKworVGhl IHJ1bGVzLW5nLW5nIHNvdXJjZSBmaWxlcyB0aGlzIGhlYWRlciB3YXMgZ2VuZXJhdGVkIGZyb20g YXJlOgorLSAvaG9tZS9vcmlvbi9wcm9qZWN0cy9ldG5hX3Zpdi9ybm5kYi9zdGF0ZS54bWwgICAg KCAgMTg1MjYgYnl0ZXMsIGZyb20gMjAxMy0wOS0xMSAxNjo1MjozMikKKy0gL2hvbWUvb3Jpb24v cHJvamVjdHMvZXRuYV92aXYvcm5uZGIvY29tbW9uLnhtbCAgICggIDE4Mzc5IGJ5dGVzLCBmcm9t IDIwMTQtMDEtMjcgMTU6NTg6MDUpCistIC9ob21lL29yaW9uL3Byb2plY3RzL2V0bmFfdml2L3Ju bmRiL3N0YXRlX2hpLnhtbCAoICAyMjIzNiBieXRlcywgZnJvbSAyMDE0LTAxLTI3IDE1OjU2OjQ2 KQorLSAvaG9tZS9vcmlvbi9wcm9qZWN0cy9ldG5hX3Zpdi9ybm5kYi9zdGF0ZV8yZC54bWwgKCAg NTExOTEgYnl0ZXMsIGZyb20gMjAxMy0xMC0wNCAwNjozNjo1NSkKKy0gL2hvbWUvb3Jpb24vcHJv amVjdHMvZXRuYV92aXYvcm5uZGIvc3RhdGVfM2QueG1sICggIDU0NTcwIGJ5dGVzLCBmcm9tIDIw MTMtMTAtMTIgMTU6MjU6MDMpCistIC9ob21lL29yaW9uL3Byb2plY3RzL2V0bmFfdml2L3JubmRi L3N0YXRlX3ZnLnhtbCAoICAgNTk0MiBieXRlcywgZnJvbSAyMDEzLTA5LTAxIDEwOjUzOjIyKQor CitDb3B5cmlnaHQgKEMpIDIwMTQKKyovCisKKworI2RlZmluZSBQSVBFX0lEX1BJUEVfM0QJCQkJ CQkweDAwMDAwMDAwCisjZGVmaW5lIFBJUEVfSURfUElQRV8yRAkJCQkJCTB4MDAwMDAwMDEKKyNk ZWZpbmUgU1lOQ19SRUNJUElFTlRfRkUJCQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgU1lOQ19SRUNJ UElFTlRfUkEJCQkJCTB4MDAwMDAwMDUKKyNkZWZpbmUgU1lOQ19SRUNJUElFTlRfUEUJCQkJCTB4 MDAwMDAwMDcKKyNkZWZpbmUgU1lOQ19SRUNJUElFTlRfREUJCQkJCTB4MDAwMDAwMGIKKyNkZWZp bmUgU1lOQ19SRUNJUElFTlRfVkcJCQkJCTB4MDAwMDAwMGYKKyNkZWZpbmUgU1lOQ19SRUNJUElF TlRfVEVTU0VMQVRPUgkJCQkweDAwMDAwMDEwCisjZGVmaW5lIFNZTkNfUkVDSVBJRU5UX1ZHMgkJ CQkJMHgwMDAwMDAxMQorI2RlZmluZSBTWU5DX1JFQ0lQSUVOVF9URVNTRUxBVE9SMgkJCQkweDAw MDAwMDEyCisjZGVmaW5lIFNZTkNfUkVDSVBJRU5UX1ZHMwkJCQkJMHgwMDAwMDAxMworI2RlZmlu ZSBTWU5DX1JFQ0lQSUVOVF9URVNTRUxBVE9SMwkJCQkweDAwMDAwMDE0CisjZGVmaW5lIEVORElB Tl9NT0RFX05PX1NXQVAJCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgRU5ESUFOX01PREVfU1dBUF8x NgkJCQkJMHgwMDAwMDAwMQorI2RlZmluZSBFTkRJQU5fTU9ERV9TV0FQXzMyCQkJCQkweDAwMDAw MDAyCisjZGVmaW5lIGNoaXBNb2RlbF9HQzMwMAkJCQkJCTB4MDAwMDAzMDAKKyNkZWZpbmUgY2hp cE1vZGVsX0dDMzIwCQkJCQkJMHgwMDAwMDMyMAorI2RlZmluZSBjaGlwTW9kZWxfR0MzNTAJCQkJ CQkweDAwMDAwMzUwCisjZGVmaW5lIGNoaXBNb2RlbF9HQzM1NQkJCQkJCTB4MDAwMDAzNTUKKyNk ZWZpbmUgY2hpcE1vZGVsX0dDNDAwCQkJCQkJMHgwMDAwMDQwMAorI2RlZmluZSBjaGlwTW9kZWxf R0M0MTAJCQkJCQkweDAwMDAwNDEwCisjZGVmaW5lIGNoaXBNb2RlbF9HQzQyMAkJCQkJCTB4MDAw MDA0MjAKKyNkZWZpbmUgY2hpcE1vZGVsX0dDNDUwCQkJCQkJMHgwMDAwMDQ1MAorI2RlZmluZSBj aGlwTW9kZWxfR0M1MDAJCQkJCQkweDAwMDAwNTAwCisjZGVmaW5lIGNoaXBNb2RlbF9HQzUzMAkJ CQkJCTB4MDAwMDA1MzAKKyNkZWZpbmUgY2hpcE1vZGVsX0dDNjAwCQkJCQkJMHgwMDAwMDYwMAor I2RlZmluZSBjaGlwTW9kZWxfR0M3MDAJCQkJCQkweDAwMDAwNzAwCisjZGVmaW5lIGNoaXBNb2Rl bF9HQzgwMAkJCQkJCTB4MDAwMDA4MDAKKyNkZWZpbmUgY2hpcE1vZGVsX0dDODYwCQkJCQkJMHgw MDAwMDg2MAorI2RlZmluZSBjaGlwTW9kZWxfR0M4ODAJCQkJCQkweDAwMDAwODgwCisjZGVmaW5l IGNoaXBNb2RlbF9HQzEwMDAJCQkJCTB4MDAwMDEwMDAKKyNkZWZpbmUgY2hpcE1vZGVsX0dDMjAw MAkJCQkJMHgwMDAwMjAwMAorI2RlZmluZSBjaGlwTW9kZWxfR0MyMTAwCQkJCQkweDAwMDAyMTAw CisjZGVmaW5lIGNoaXBNb2RlbF9HQzQwMDAJCQkJCTB4MDAwMDQwMDAKKyNkZWZpbmUgUkdCQV9C SVRTX1IJCQkJCQkweDAwMDAwMDAxCisjZGVmaW5lIFJHQkFfQklUU19HCQkJCQkJMHgwMDAwMDAw MgorI2RlZmluZSBSR0JBX0JJVFNfQgkJCQkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgUkdCQV9CSVRT X0EJCQkJCQkweDAwMDAwMDA4CisjZGVmaW5lIGNoaXBGZWF0dXJlc19GQVNUX0NMRUFSCQkJCQkw eDAwMDAwMDAxCisjZGVmaW5lIGNoaXBGZWF0dXJlc19TUEVDSUFMX0FOVElfQUxJQVNJTkcJCQkw eDAwMDAwMDAyCisjZGVmaW5lIGNoaXBGZWF0dXJlc19QSVBFXzNECQkJCQkweDAwMDAwMDA0Cisj ZGVmaW5lIGNoaXBGZWF0dXJlc19EWFRfVEVYVFVSRV9DT01QUkVTU0lPTgkJCTB4MDAwMDAwMDgK KyNkZWZpbmUgY2hpcEZlYXR1cmVzX0RFQlVHX01PREUJCQkJCTB4MDAwMDAwMTAKKyNkZWZpbmUg Y2hpcEZlYXR1cmVzX1pfQ09NUFJFU1NJT04JCQkJMHgwMDAwMDAyMAorI2RlZmluZSBjaGlwRmVh dHVyZXNfWVVWNDIwX1NDQUxFUgkJCQkweDAwMDAwMDQwCisjZGVmaW5lIGNoaXBGZWF0dXJlc19N U0FBCQkJCQkweDAwMDAwMDgwCisjZGVmaW5lIGNoaXBGZWF0dXJlc19EQwkJCQkJCTB4MDAwMDAx MDAKKyNkZWZpbmUgY2hpcEZlYXR1cmVzX1BJUEVfMkQJCQkJCTB4MDAwMDAyMDAKKyNkZWZpbmUg Y2hpcEZlYXR1cmVzX0VUQzFfVEVYVFVSRV9DT01QUkVTU0lPTgkJCTB4MDAwMDA0MDAKKyNkZWZp bmUgY2hpcEZlYXR1cmVzX0ZBU1RfU0NBTEVSCQkJCTB4MDAwMDA4MDAKKyNkZWZpbmUgY2hpcEZl YXR1cmVzX0hJR0hfRFlOQU1JQ19SQU5HRQkJCQkweDAwMDAxMDAwCisjZGVmaW5lIGNoaXBGZWF0 dXJlc19ZVVY0MjBfVElMRVIJCQkJMHgwMDAwMjAwMAorI2RlZmluZSBjaGlwRmVhdHVyZXNfTU9E VUxFX0NHCQkJCQkweDAwMDA0MDAwCisjZGVmaW5lIGNoaXBGZWF0dXJlc19NSU5fQVJFQQkJCQkJ MHgwMDAwODAwMAorI2RlZmluZSBjaGlwRmVhdHVyZXNfTk9fRUFSTFlfWgkJCQkJMHgwMDAxMDAw MAorI2RlZmluZSBjaGlwRmVhdHVyZXNfTk9fNDIyX1RFWFRVUkUJCQkJMHgwMDAyMDAwMAorI2Rl ZmluZSBjaGlwRmVhdHVyZXNfQlVGRkVSX0lOVEVSTEVBVklORwkJCTB4MDAwNDAwMDAKKyNkZWZp bmUgY2hpcEZlYXR1cmVzX0JZVEVfV1JJVEVfMkQJCQkJMHgwMDA4MDAwMAorI2RlZmluZSBjaGlw RmVhdHVyZXNfTk9fU0NBTEVSCQkJCQkweDAwMTAwMDAwCisjZGVmaW5lIGNoaXBGZWF0dXJlc19Z VVkyX0FWRVJBR0lORwkJCQkweDAwMjAwMDAwCisjZGVmaW5lIGNoaXBGZWF0dXJlc19IQUxGX1BF X0NBQ0hFCQkJCTB4MDA0MDAwMDAKKyNkZWZpbmUgY2hpcEZlYXR1cmVzX0hBTEZfVFhfQ0FDSEUJ CQkJMHgwMDgwMDAwMAorI2RlZmluZSBjaGlwRmVhdHVyZXNfWVVZMl9SRU5ERVJfVEFSR0VUCQkJ CTB4MDEwMDAwMDAKKyNkZWZpbmUgY2hpcEZlYXR1cmVzX01FTTMyCQkJCQkweDAyMDAwMDAwCisj ZGVmaW5lIGNoaXBGZWF0dXJlc19QSVBFX1ZHCQkJCQkweDA0MDAwMDAwCisjZGVmaW5lIGNoaXBG ZWF0dXJlc19WR1RTCQkJCQkweDA4MDAwMDAwCisjZGVmaW5lIGNoaXBGZWF0dXJlc19GRTIwCQkJ CQkweDEwMDAwMDAwCisjZGVmaW5lIGNoaXBGZWF0dXJlc19CWVRFX1dSSVRFXzNECQkJCTB4MjAw MDAwMDAKKyNkZWZpbmUgY2hpcEZlYXR1cmVzX1JTX1lVVl9UQVJHRVQJCQkJMHg0MDAwMDAwMAor I2RlZmluZSBjaGlwRmVhdHVyZXNfMzJfQklUX0lORElDRVMJCQkJMHg4MDAwMDAwMAorI2RlZmlu ZSBjaGlwTWlub3JGZWF0dXJlczBfRkxJUF9ZCQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgY2hpcE1p bm9yRmVhdHVyZXMwX0RVQUxfUkVUVVJOX0JVUwkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgY2hpcE1p bm9yRmVhdHVyZXMwX0VORElBTk5FU1NfQ09ORklHCQkJMHgwMDAwMDAwNAorI2RlZmluZSBjaGlw TWlub3JGZWF0dXJlczBfVEVYVFVSRV84SwkJCQkweDAwMDAwMDA4CisjZGVmaW5lIGNoaXBNaW5v ckZlYXR1cmVzMF9DT1JSRUNUX1RFWFRVUkVfQ09OVkVSVEVSCQkweDAwMDAwMDEwCisjZGVmaW5l IGNoaXBNaW5vckZlYXR1cmVzMF9TUEVDSUFMX01TQUFfTE9ECQkJMHgwMDAwMDAyMAorI2RlZmlu ZSBjaGlwTWlub3JGZWF0dXJlczBfRkFTVF9DTEVBUl9GTFVTSAkJCTB4MDAwMDAwNDAKKyNkZWZp bmUgY2hpcE1pbm9yRmVhdHVyZXMwXzJEUEUyMAkJCQkweDAwMDAwMDgwCisjZGVmaW5lIGNoaXBN aW5vckZlYXR1cmVzMF9DT1JSRUNUX0FVVE9fRElTQUJMRQkJCTB4MDAwMDAxMDAKKyNkZWZpbmUg Y2hpcE1pbm9yRmVhdHVyZXMwX1JFTkRFUlRBUkdFVF84SwkJCTB4MDAwMDAyMDAKKyNkZWZpbmUg Y2hpcE1pbm9yRmVhdHVyZXMwXzJCSVRQRVJUSUxFCQkJCTB4MDAwMDA0MDAKKyNkZWZpbmUgY2hp cE1pbm9yRmVhdHVyZXMwX1NFUEFSQVRFX1RJTEVfU1RBVFVTX1dIRU5fSU5URVJMRUFWRUQJMHgw MDAwMDgwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczBfU1VQRVJfVElMRUQJCQkJMHgwMDAw MTAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczBfVkdfMjAJCQkJMHgwMDAwMjAwMAorI2Rl ZmluZSBjaGlwTWlub3JGZWF0dXJlczBfVFNfRVhURU5ERURfQ09NTUFORFMJCQkweDAwMDA0MDAw CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMF9DT01QUkVTU0lPTl9GSUZPX0ZJWEVECQkweDAw MDA4MDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMF9IQVNfU0lHTl9GTE9PUl9DRUlMCQkJ MHgwMDAxMDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczBfVkdfRklMVEVSCQkJCTB4MDAw MjAwMDAKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMwX1ZHXzIxCQkJCTB4MDAwNDAwMDAKKyNk ZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMwX1NIQURFUl9IQVNfVwkJCQkweDAwMDgwMDAwCisjZGVm aW5lIGNoaXBNaW5vckZlYXR1cmVzMF9IQVNfU1FSVF9UUklHCQkJMHgwMDEwMDAwMAorI2RlZmlu ZSBjaGlwTWlub3JGZWF0dXJlczBfTU9SRV9NSU5PUl9GRUFUVVJFUwkJCTB4MDAyMDAwMDAKKyNk ZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMwX01DMjAJCQkJCTB4MDA0MDAwMDAKKyNkZWZpbmUgY2hp cE1pbm9yRmVhdHVyZXMwX01TQUFfU0lERUJBTkQJCQkweDAwODAwMDAwCisjZGVmaW5lIGNoaXBN aW5vckZlYXR1cmVzMF9CVUdfRklYRVMwCQkJCTB4MDEwMDAwMDAKKyNkZWZpbmUgY2hpcE1pbm9y RmVhdHVyZXMwX1ZBQQkJCQkJMHgwMjAwMDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczBf QllQQVNTX0lOX01TQUEJCQkweDA0MDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMF9I WgkJCQkJMHgwODAwMDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczBfTkVXX1RFWFRVUkUJ CQkJMHgxMDAwMDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczBfMkRfQThfVEFSR0VUCQkJ CTB4MjAwMDAwMDAKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMwX0NPUlJFQ1RfU1RFTkNJTAkJ CTB4NDAwMDAwMDAKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMwX0VOSEFOQ0VfVlIJCQkJMHg4 MDAwMDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfUlNVVl9TV0laWkxFCQkJCTB4MDAw MDAwMDEKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMxX1YyX0NPTVBSRVNTSU9OCQkJMHgwMDAw MDAwMgorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfVkdfRE9VQkxFX0JVRkZFUgkJCTB4MDAw MDAwMDQKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMxX0VYVFJBX0VWRU5UX1NUQVRFUwkJCTB4 MDAwMDAwMDgKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMxX05PX1NUUklQSU5HX05FRURFRAkJ CTB4MDAwMDAwMTAKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMxX1RFWFRVUkVfU1RSSURFCQkJ MHgwMDAwMDAyMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfQlVHX0ZJWEVTMwkJCQkweDAw MDAwMDQwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMV9BVVRPX0RJU0FCTEUJCQkJMHgwMDAw MDA4MAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfQVVUT19SRVNUQVJUX1RTCQkJMHgwMDAw MDEwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfRElTQUJMRV9QRV9HQVRJTkcJCQkweDAw MDAwMjAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMV9MMl9XSU5ET1dJTkcJCQkJMHgwMDAw MDQwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfSEFMRl9GTE9BVAkJCQkweDAwMDAwODAw CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMV9QSVhFTF9ESVRIRVIJCQkJMHgwMDAwMTAwMAor I2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfVFdPX1NURU5DSUxfUkVGRVJFTkNFCQkweDAwMDAy MDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMV9FWFRFTkRFRF9QSVhFTF9GT1JNQVQJCTB4 MDAwMDQwMDAKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMxX0NPUlJFQ1RfTUlOX01BWF9ERVBU SAkJMHgwMDAwODAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfMkRfRElUSEVSCQkJCTB4 MDAwMTAwMDAKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMxX0JVR19GSVhFUzUJCQkJMHgwMDAy MDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczFfTkVXXzJECQkJCTB4MDAwNDAwMDAKKyNk ZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMxX05FV19GUAkJCQkweDAwMDgwMDAwCisjZGVmaW5lIGNo aXBNaW5vckZlYXR1cmVzMV9URVhUVVJFX0hBTElHTgkJCTB4MDAxMDAwMDAKKyNkZWZpbmUgY2hp cE1pbm9yRmVhdHVyZXMxX05PTl9QT1dFUl9PRl9UV08JCQkweDAwMjAwMDAwCisjZGVmaW5lIGNo aXBNaW5vckZlYXR1cmVzMV9MSU5FQVJfVEVYVFVSRV9TVVBQT1JUCQkweDAwNDAwMDAwCisjZGVm aW5lIGNoaXBNaW5vckZlYXR1cmVzMV9IQUxUSTAJCQkJMHgwMDgwMDAwMAorI2RlZmluZSBjaGlw TWlub3JGZWF0dXJlczFfQ09SUkVDVF9PVkVSRkxPV19WRwkJCTB4MDEwMDAwMDAKKyNkZWZpbmUg Y2hpcE1pbm9yRmVhdHVyZXMxX05FR0FUSVZFX0xPR19GSVgJCQkweDAyMDAwMDAwCisjZGVmaW5l IGNoaXBNaW5vckZlYXR1cmVzMV9SRVNPTFZFX09GRlNFVAkJCTB4MDQwMDAwMDAKKyNkZWZpbmUg Y2hpcE1pbm9yRmVhdHVyZXMxX09LX1RPX0dBVEVfQVhJX0NMT0NLCQkJMHgwODAwMDAwMAorI2Rl ZmluZSBjaGlwTWlub3JGZWF0dXJlczFfTU1VX1ZFUlNJT04JCQkJMHgxMDAwMDAwMAorI2RlZmlu ZSBjaGlwTWlub3JGZWF0dXJlczFfV0lERV9MSU5FCQkJCTB4MjAwMDAwMDAKKyNkZWZpbmUgY2hp cE1pbm9yRmVhdHVyZXMxX0JVR19GSVhFUzYJCQkJMHg0MDAwMDAwMAorI2RlZmluZSBjaGlwTWlu b3JGZWF0dXJlczFfRkNfRkxVU0hfU1RBTEwJCQkweDgwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5v ckZlYXR1cmVzMl9MSU5FX0xPT1AJCQkJMHgwMDAwMDAwMQorI2RlZmluZSBjaGlwTWlub3JGZWF0 dXJlczJfTE9HSUNfT1AJCQkJMHgwMDAwMDAwMgorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJf VU5LMgkJCQkJMHgwMDAwMDAwNAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfU1VQRVJUSUxF RF9URVhUVVJFCQkJMHgwMDAwMDAwOAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfVU5LNAkJ CQkJMHgwMDAwMDAxMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfUkVDVF9QUklNSVRJVkUJ CQkweDAwMDAwMDIwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMl9DT01QT1NJVElPTgkJCQkw eDAwMDAwMDQwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMl9DT1JSRUNUX0FVVE9fRElTQUJM RV9DT1VOVAkJMHgwMDAwMDA4MAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfVU5LOAkJCQkJ MHgwMDAwMDEwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfVU5LOQkJCQkJMHgwMDAwMDIw MAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfVU5LMTAJCQkJMHgwMDAwMDQwMAorI2RlZmlu ZSBjaGlwTWlub3JGZWF0dXJlczJfU0FNUExFUkJBU0VfMTYJCQkweDAwMDAwODAwCisjZGVmaW5l IGNoaXBNaW5vckZlYXR1cmVzMl9VTksxMgkJCQkweDAwMDAxMDAwCisjZGVmaW5lIGNoaXBNaW5v ckZlYXR1cmVzMl9VTksxMwkJCQkweDAwMDAyMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVz Ml9VTksxNAkJCQkweDAwMDA0MDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMl9FWFRSQV9U RVhUVVJFX1NUQVRFCQkJMHgwMDAwODAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfRlVM TF9ESVJFQ1RGQgkJCTB4MDAwMTAwMDAKKyNkZWZpbmUgY2hpcE1pbm9yRmVhdHVyZXMyXzJEX1RJ TElORwkJCQkweDAwMDIwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMl9USFJFQURfV0FM S0VSX0lOX1BTCQkJMHgwMDA0MDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfVElMRV9G SUxMRVIJCQkJMHgwMDA4MDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfVU5LMjAJCQkJ MHgwMDEwMDAwMAorI2RlZmluZSBjaGlwTWlub3JGZWF0dXJlczJfMkRfTVVMVElfU09VUkNFX0JM SVQJCQkweDAwMjAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMl9VTksyMgkJCQkweDAw NDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMl9VTksyMwkJCQkweDAwODAwMDAwCisj ZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzMl9VTksyNAkJCQkweDAxMDAwMDAwCisjZGVmaW5lIGNo aXBNaW5vckZlYXR1cmVzMl9NSVhFRF9TVFJFQU1TCQkJMHgwMjAwMDAwMAorI2RlZmluZSBjaGlw TWlub3JGZWF0dXJlczJfMkRfNDIwX0wyQ0FDSEUJCQkweDA0MDAwMDAwCisjZGVmaW5lIGNoaXBN aW5vckZlYXR1cmVzMl9VTksyNwkJCQkweDA4MDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1 cmVzMl8yRF9OT19JTkRFWDhfQlJVU0gJCQkweDEwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZl YXR1cmVzMl9URVhUVVJFX1RJTEVEX1JFQUQJCQkweDIwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5v ckZlYXR1cmVzMl9VTkszMAkJCQkweDQwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVz Ml9VTkszMQkJCQkweDgwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19ST1RBVElP Tl9TVEFMTF9GSVgJCQkweDAwMDAwMDAxCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksx CQkJCQkweDAwMDAwMDAyCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM18yRF9NVUxUSV9TT1VS Q0VfQkxUX0VYCQkweDAwMDAwMDA0CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTkszCQkJ CQkweDAwMDAwMDA4CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTks0CQkJCQkweDAwMDAw MDEwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTks1CQkJCQkweDAwMDAwMDIwCisjZGVm aW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTks2CQkJCQkweDAwMDAwMDQwCisjZGVmaW5lIGNoaXBN aW5vckZlYXR1cmVzM19VTks3CQkJCQkweDAwMDAwMDgwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1 cmVzM19VTks4CQkJCQkweDAwMDAwMTAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTks5 CQkJCQkweDAwMDAwMjAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19CVUdfRklYRVMxMAkJ CQkweDAwMDAwNDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksxMQkJCQkweDAwMDAw ODAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19CVUdfRklYRVMxMQkJCQkweDAwMDAxMDAw CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksxMwkJCQkweDAwMDAyMDAwCisjZGVmaW5l IGNoaXBNaW5vckZlYXR1cmVzM19VTksxNAkJCQkweDAwMDA0MDAwCisjZGVmaW5lIGNoaXBNaW5v ckZlYXR1cmVzM19VTksxNQkJCQkweDAwMDA4MDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVz M19VTksxNgkJCQkweDAwMDEwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksxNwkJ CQkweDAwMDIwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksxOAkJCQkweDAwMDQw MDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksxOQkJCQkweDAwMDgwMDAwCisjZGVm aW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksyMAkJCQkweDAwMTAwMDAwCisjZGVmaW5lIGNoaXBN aW5vckZlYXR1cmVzM19VTksyMQkJCQkweDAwMjAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1 cmVzM19VTksyMgkJCQkweDAwNDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksy MwkJCQkweDAwODAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksyNAkJCQkweDAx MDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksyNQkJCQkweDAyMDAwMDAwCisj ZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTksyNgkJCQkweDA0MDAwMDAwCisjZGVmaW5lIGNo aXBNaW5vckZlYXR1cmVzM19VTksyNwkJCQkweDA4MDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZl YXR1cmVzM19VTksyOAkJCQkweDEwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19V TksyOQkJCQkweDIwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTkszMAkJCQkw eDQwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzM19VTkszMQkJCQkweDgwMDAwMDAw CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTkswCQkJCQkweDAwMDAwMDAxCisjZGVmaW5l IGNoaXBNaW5vckZlYXR1cmVzNF9VTksxCQkJCQkweDAwMDAwMDAyCisjZGVmaW5lIGNoaXBNaW5v ckZlYXR1cmVzNF9VTksyCQkJCQkweDAwMDAwMDA0CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVz NF9VTkszCQkJCQkweDAwMDAwMDA4CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTks0CQkJ CQkweDAwMDAwMDEwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTks1CQkJCQkweDAwMDAw MDIwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTks2CQkJCQkweDAwMDAwMDQwCisjZGVm aW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTks3CQkJCQkweDAwMDAwMDgwCisjZGVmaW5lIGNoaXBN aW5vckZlYXR1cmVzNF9VTks4CQkJCQkweDAwMDAwMTAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1 cmVzNF9VTks5CQkJCQkweDAwMDAwMjAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksx MAkJCQkweDAwMDAwNDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksxMQkJCQkweDAw MDAwODAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksxMgkJCQkweDAwMDAxMDAwCisj ZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksxMwkJCQkweDAwMDAyMDAwCisjZGVmaW5lIGNo aXBNaW5vckZlYXR1cmVzNF9VTksxNAkJCQkweDAwMDA0MDAwCisjZGVmaW5lIGNoaXBNaW5vckZl YXR1cmVzNF9VTksxNQkJCQkweDAwMDA4MDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9V TksxNgkJCQkweDAwMDEwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksxNwkJCQkw eDAwMDIwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksxOAkJCQkweDAwMDQwMDAw CisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksxOQkJCQkweDAwMDgwMDAwCisjZGVmaW5l IGNoaXBNaW5vckZlYXR1cmVzNF9VTksyMAkJCQkweDAwMTAwMDAwCisjZGVmaW5lIGNoaXBNaW5v ckZlYXR1cmVzNF9VTksyMQkJCQkweDAwMjAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVz NF9VTksyMgkJCQkweDAwNDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksyMwkJ CQkweDAwODAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksyNAkJCQkweDAxMDAw MDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksyNQkJCQkweDAyMDAwMDAwCisjZGVm aW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksyNgkJCQkweDA0MDAwMDAwCisjZGVmaW5lIGNoaXBN aW5vckZlYXR1cmVzNF9VTksyNwkJCQkweDA4MDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1 cmVzNF9VTksyOAkJCQkweDEwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTksy OQkJCQkweDIwMDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTkszMAkJCQkweDQw MDAwMDAwCisjZGVmaW5lIGNoaXBNaW5vckZlYXR1cmVzNF9VTkszMQkJCQkweDgwMDAwMDAwCisK KyNlbmRpZiAvKiBDT01NT05fWE1MICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRu YXZpdi9ldG5hdml2X2J1ZmZlci5jIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9i dWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMyNzY0ZTE1 YzVmNwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZf YnVmZmVyLmMKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgMjAx NCBFdG5hdml2IFByb2plY3QKKyAqIEF1dGhvcjogQ2hyaXN0aWFuIEdtZWluZXIgPGNocmlzdGlh bi5nbWVpbmVyQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVi bGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNp bmNsdWRlICJldG5hdml2X2dwdS5oIgorI2luY2x1ZGUgImV0bmF2aXZfZ2VtLmgiCisKKyNpbmNs dWRlICJjb21tb24ueG1sLmgiCisjaW5jbHVkZSAic3RhdGUueG1sLmgiCisjaW5jbHVkZSAiY21k c3RyZWFtLnhtbC5oIgorCisvKgorICogQ29tbWFuZCBCdWZmZXIgaGVscGVyOgorICovCisKKwor c3RhdGljIGlubGluZSB2b2lkIE9VVChzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpidWZmZXIs IHVpbnQzMl90IGRhdGEpCit7CisJdTMyICp2YWRkciA9ICh1MzIgKilidWZmZXItPnZhZGRyOwor CUJVR19PTihidWZmZXItPm9mZnNldCA+PSBidWZmZXItPmJhc2Uuc2l6ZSk7CisKKwl2YWRkclti dWZmZXItPm9mZnNldCsrXSA9IGRhdGE7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBDTURfTE9B RF9TVEFURShzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpidWZmZXIsIHUzMiByZWcsIHUzMiB2 YWx1ZSkKK3sKKwlidWZmZXItPm9mZnNldCA9IEFMSUdOKGJ1ZmZlci0+b2Zmc2V0LCAyKTsKKwor CS8qIHdyaXRlIGEgcmVnaXN0ZXIgdmlhIGNtZCBzdHJlYW0gKi8KKwlPVVQoYnVmZmVyLCBWSVZf RkVfTE9BRF9TVEFURV9IRUFERVJfT1BfTE9BRF9TVEFURSB8IFZJVl9GRV9MT0FEX1NUQVRFX0hF QURFUl9DT1VOVCgxKSB8CisJCQlWSVZfRkVfTE9BRF9TVEFURV9IRUFERVJfT0ZGU0VUKHJlZyA+ PiBWSVZfRkVfTE9BRF9TVEFURV9IRUFERVJfT0ZGU0VUX19TSFIpKTsKKwlPVVQoYnVmZmVyLCB2 YWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBDTURfTE9BRF9TVEFURVMoc3RydWN0IGV0 bmF2aXZfZ2VtX29iamVjdCAqYnVmZmVyLCB1MzIgcmVnLCB1MTYgY291bnQsIHUzMiAqdmFsdWVz KQoreworCXUxNiBpOworCWJ1ZmZlci0+b2Zmc2V0ID0gQUxJR04oYnVmZmVyLT5vZmZzZXQsIDIp OworCisJT1VUKGJ1ZmZlciwgVklWX0ZFX0xPQURfU1RBVEVfSEVBREVSX09QX0xPQURfU1RBVEUg fCBWSVZfRkVfTE9BRF9TVEFURV9IRUFERVJfQ09VTlQoY291bnQpIHwKKwkJCVZJVl9GRV9MT0FE X1NUQVRFX0hFQURFUl9PRkZTRVQocmVnID4+IFZJVl9GRV9MT0FEX1NUQVRFX0hFQURFUl9PRkZT RVRfX1NIUikpOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCisJCU9VVChidWZmZXIs IHZhbHVlc1tpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBDTURfRU5EKHN0cnVjdCBldG5h dml2X2dlbV9vYmplY3QgKmJ1ZmZlcikKK3sKKwlidWZmZXItPm9mZnNldCA9IEFMSUdOKGJ1ZmZl ci0+b2Zmc2V0LCAyKTsKKworCU9VVChidWZmZXIsIFZJVl9GRV9FTkRfSEVBREVSX09QX0VORCk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBDTURfTk9QKHN0cnVjdCBldG5hdml2X2dlbV9vYmpl Y3QgKmJ1ZmZlcikKK3sKKwlidWZmZXItPm9mZnNldCA9IEFMSUdOKGJ1ZmZlci0+b2Zmc2V0LCAy KTsKKworCU9VVChidWZmZXIsIFZJVl9GRV9OT1BfSEVBREVSX09QX05PUCk7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBDTURfV0FJVChzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpidWZmZXIp Cit7CisJYnVmZmVyLT5vZmZzZXQgPSBBTElHTihidWZmZXItPm9mZnNldCwgMik7CisKKwlPVVQo YnVmZmVyLCBWSVZfRkVfV0FJVF9IRUFERVJfT1BfV0FJVCB8IDIwMCk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBDTURfTElOSyhzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpidWZmZXIsIHUx NiBwcmVmZXRjaCwgdTMyIGFkZHJlc3MpCit7CisJYnVmZmVyLT5vZmZzZXQgPSBBTElHTihidWZm ZXItPm9mZnNldCwgMik7CisKKwlPVVQoYnVmZmVyLCBWSVZfRkVfTElOS19IRUFERVJfT1BfTElO SyB8IFZJVl9GRV9MSU5LX0hFQURFUl9QUkVGRVRDSChwcmVmZXRjaCkpOworCU9VVChidWZmZXIs IGFkZHJlc3MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgQ01EX1NUQUxMKHN0cnVjdCBldG5h dml2X2dlbV9vYmplY3QgKmJ1ZmZlciwgdTMyIGZyb20sIHUzMiB0bykKK3sKKwlidWZmZXItPm9m ZnNldCA9IEFMSUdOKGJ1ZmZlci0+b2Zmc2V0LCAyKTsKKworCU9VVChidWZmZXIsIFZJVl9GRV9T VEFMTF9IRUFERVJfT1BfU1RBTEwpOworCU9VVChidWZmZXIsIFZJVl9GRV9TVEFMTF9UT0tFTl9G Uk9NKGZyb20pIHwgVklWX0ZFX1NUQUxMX1RPS0VOX1RPKHRvKSk7Cit9CisKK3N0YXRpYyB2b2lk IGV0bmF2aXZfY21kX3NlbGVjdF9waXBlKHN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmJ1ZmZl ciwgdTggcGlwZSkKK3sKKwl1MzIgZmx1c2g7CisJdTMyIHN0YWxsOworCisJaWYgKHBpcGUgPT0g RVROQV9QSVBFXzJEKQorCQlmbHVzaCA9IFZJVlNfR0xfRkxVU0hfQ0FDSEVfREVQVEggfCBWSVZT X0dMX0ZMVVNIX0NBQ0hFX0NPTE9SOworCWVsc2UKKwkJZmx1c2ggPSBWSVZTX0dMX0ZMVVNIX0NB Q0hFX1RFWFRVUkU7CisKKwlzdGFsbCA9IFZJVlNfR0xfU0VNQVBIT1JFX1RPS0VOX0ZST00oU1lO Q19SRUNJUElFTlRfRkUpIHwKKwkJCVZJVlNfR0xfU0VNQVBIT1JFX1RPS0VOX1RPKFNZTkNfUkVD SVBJRU5UX1BFKTsKKworCUNNRF9MT0FEX1NUQVRFKGJ1ZmZlciwgVklWU19HTF9GTFVTSF9DQUNI RSwgZmx1c2gpOworCUNNRF9MT0FEX1NUQVRFKGJ1ZmZlciwgVklWU19HTF9TRU1BUEhPUkVfVE9L RU4sIHN0YWxsKTsKKworCUNNRF9TVEFMTChidWZmZXIsIFNZTkNfUkVDSVBJRU5UX0ZFLCBTWU5D X1JFQ0lQSUVOVF9QRSk7CisKKwlDTURfTE9BRF9TVEFURShidWZmZXIsIFZJVlNfR0xfUElQRV9T RUxFQ1QsIFZJVlNfR0xfUElQRV9TRUxFQ1RfUElQRShwaXBlKSk7Cit9CisKK3N0YXRpYyB2b2lk IGV0bmF2aXZfYnVmZmVyX2R1bXAoc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqb2JqLCB1MzIg bGVuKQoreworCXUzMiBzaXplID0gb2JqLT5iYXNlLnNpemU7CisJdTMyICpwdHIgPSBvYmotPnZh ZGRyOworCisJZGV2X2RiZyhvYmotPmdwdS0+ZGV2LT5kZXYsICJ2aXJ0ICVwIHBoeXMgMHglMDh4 IGZyZWUgMHglMDh4XG4iLAorCQkJb2JqLT52YWRkciwgb2JqLT5wYWRkciwgc2l6ZSAtIGxlbiAq IDQpOworCisJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCAiY21kICIsIERVTVBfUFJFRklYX09G RlNFVCwgMTYsIDQsCisJCQlwdHIsIGxlbiAqIDQsIDApOworfQorCit1MzIgZXRuYXZpdl9idWZm ZXJfaW5pdChzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9nZW1f b2JqZWN0ICpidWZmZXIgPSB0b19ldG5hdml2X2JvKGdwdS0+YnVmZmVyKTsKKworCS8qIGluaXRp YWxpemUgYnVmZmVyICovCisJYnVmZmVyLT5vZmZzZXQgPSAwOworCisJZXRuYXZpdl9jbWRfc2Vs ZWN0X3BpcGUoYnVmZmVyLCBncHUtPnBpcGUpOworCisJQ01EX1dBSVQoYnVmZmVyKTsKKwlDTURf TElOSyhidWZmZXIsIDIsIGJ1ZmZlci0+cGFkZHIgKyAoKGJ1ZmZlci0+b2Zmc2V0IC0gMSkgKiA0 KSk7CisKKwlyZXR1cm4gYnVmZmVyLT5vZmZzZXQ7Cit9CisKK3ZvaWQgZXRuYXZpdl9idWZmZXJf cXVldWUoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHVuc2lnbmVkIGludCBldmVudCwgc3RydWN0 IGV0bmF2aXZfZ2VtX3N1Ym1pdCAqc3VibWl0KQoreworCXN0cnVjdCBldG5hdml2X2dlbV9vYmpl Y3QgKmJ1ZmZlciA9IHRvX2V0bmF2aXZfYm8oZ3B1LT5idWZmZXIpOworCXN0cnVjdCBldG5hdml2 X2dlbV9vYmplY3QgKmNtZDsKKwl1MzIgKmx3ID0gYnVmZmVyLT52YWRkciArICgoYnVmZmVyLT5v ZmZzZXQgLSA0KSAqIDQpOworCXUzMiBiYWNrOworCXUzMiBpOworCisJZXRuYXZpdl9idWZmZXJf ZHVtcChidWZmZXIsIDB4NTApOworCisJLyogc2F2ZSBvZmZzZXQgYmFjayBpbnRvIG1haW4gYnVm ZmVyICovCisJYmFjayA9IGJ1ZmZlci0+b2Zmc2V0OworCisJLyogdHJpZ2dlciBldmVudCAqLwor CUNNRF9MT0FEX1NUQVRFKGJ1ZmZlciwgVklWU19HTF9FVkVOVCwgVklWU19HTF9FVkVOVF9FVkVO VF9JRChldmVudCkgfCBWSVZTX0dMX0VWRU5UX0ZST01fUEUpOworCisJLyogYXBwZW5kIFdBSVQv TElOSyB0byBtYWluIGJ1ZmZlciAqLworCUNNRF9XQUlUKGJ1ZmZlcik7CisJQ01EX0xJTksoYnVm ZmVyLCAyLCBidWZmZXItPnBhZGRyICsgKChidWZmZXItPm9mZnNldCAtIDEpICogNCkpOworCisJ LyogdXBkYXRlIG9mZnNldCBmb3IgZXZlcnkgY21kIHN0cmVhbSAqLworCWZvciAoaSA9IDA7IGkg PCBzdWJtaXQtPm5yX2NtZHM7IGkrKykKKwkJc3VibWl0LT5jbWRbaV0ub2JqLT5vZmZzZXQgPSBz dWJtaXQtPmNtZFtpXS5zaXplOworCisJLyogVE9ETzogaW50ZXItY29ubmVjdCBhbGwgY21kIGJ1 ZmZlcnMgKi8KKworCS8qIGp1bXAgYmFjayBmcm9tIGxhc3QgY21kIHRvIG1haW4gYnVmZmVyICov CisJY21kID0gc3VibWl0LT5jbWRbc3VibWl0LT5ucl9jbWRzIC0gMV0ub2JqOworCUNNRF9MSU5L KGNtZCwgNCwgYnVmZmVyLT5wYWRkciArIChiYWNrICogNCkpOworCisJcHJpbnRrKEtFUk5fRVJS ICJzdHJlYW0gbGluayBAIDB4JTA4eFxuIiwgY21kLT5wYWRkciArICgoY21kLT5vZmZzZXQgLSAx KSAqIDQpKTsKKwlwcmludGsoS0VSTl9FUlIgInN0cmVhbSBsaW5rIEAgJXBcbiIsIGNtZC0+dmFk ZHIgKyAoKGNtZC0+b2Zmc2V0IC0gMSkgKiA0KSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgc3VibWl0 LT5ucl9jbWRzOyBpKyspIHsKKwkJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqb2JqID0gc3Vi bWl0LT5jbWRbaV0ub2JqOworCisJCS8qIFRPRE86IHJlbW92ZSBsYXRlciAqLworCQlpZiAodW5s aWtlbHkoZHJtX2RlYnVnICYgRFJNX1VUX0NPUkUpKQorCQkJZXRuYXZpdl9idWZmZXJfZHVtcChv YmosIG9iai0+b2Zmc2V0KTsKKwl9CisKKwkvKiBjaGFuZ2UgbGwgdG8gTk9QICovCisJcHJpbnRr KEtFUk5fRVJSICJsaW5rIG9wOiAlcFxuIiwgbHcpOworCXByaW50ayhLRVJOX0VSUiAibGluayBh ZGRyOiAlcFxuIiwgbHcgKyAxKTsKKwlwcmludGsoS0VSTl9FUlIgImFkZHI6IDB4JTA4eFxuIiwg c3VibWl0LT5jbWRbMF0ub2JqLT5wYWRkcik7CisJcHJpbnRrKEtFUk5fRVJSICJiYWNrOiAweCUw OHhcbiIsIGJ1ZmZlci0+cGFkZHIgKyAoYmFjayAqIDQpKTsKKwlwcmludGsoS0VSTl9FUlIgImV2 ZW50OiAlZFxuIiwgZXZlbnQpOworCisJLyogQ2hhbmdlIFdBSVQgaW50byBhIExJTksgY29tbWFu ZDsgd3JpdGUgdGhlIGFkZHJlc3MgZmlyc3QuICovCisJaSA9IFZJVl9GRV9MSU5LX0hFQURFUl9P UF9MSU5LIHwgVklWX0ZFX0xJTktfSEVBREVSX1BSRUZFVENIKHN1Ym1pdC0+Y21kWzBdLnNpemUg KiAyKTsKKwkqKGx3ICsgMSkgPSBzdWJtaXQtPmNtZFswXS5vYmotPnBhZGRyOworCW1iKCk7CisJ Kihsdyk9IGk7CisJbWIoKTsKKworCWV0bmF2aXZfYnVmZmVyX2R1bXAoYnVmZmVyLCAweDUwKTsK K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZHJ2LmMgYi9k cml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMzk1ODZiNDUyMDBkCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9kcnYuYwpAQCAtMCwwICsxLDYyMSBAQAorLyoK KyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWQgSGF0CisgKiBBdXRob3I6IFJvYiBDbGFyayA8cm9i ZGNsYXJrQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlz aGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi dXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3Jl IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNs dWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgor CisjaW5jbHVkZSAiZXRuYXZpdl9kcnYuaCIKKyNpbmNsdWRlICJldG5hdml2X2dwdS5oIgorCit2 b2lkIGV0bmF2aXZfcmVnaXN0ZXJfbW11KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBl dG5hdml2X2lvbW11ICptbXUpCit7CisJc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZhdGUgKnByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCXByaXYtPm1tdSA9IG1tdTsKK30KKworI2lmZGVmIENPTkZJ R19EUk1fRVROQVZJVl9SRUdJU1RFUl9MT0dHSU5HCitzdGF0aWMgYm9vbCByZWdsb2cgPSBmYWxz ZTsKK01PRFVMRV9QQVJNX0RFU0MocmVnbG9nLCAiRW5hYmxlIHJlZ2lzdGVyIHJlYWQvd3JpdGUg bG9nZ2luZyIpOworbW9kdWxlX3BhcmFtKHJlZ2xvZywgYm9vbCwgMDYwMCk7CisjZWxzZQorI2Rl ZmluZSByZWdsb2cgMAorI2VuZGlmCisKK3ZvaWQgX19pb21lbSAqZXRuYXZpdl9pb3JlbWFwKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCisJCWNvbnN0IGNo YXIgKmRiZ25hbWUpCit7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJdW5zaWduZWQgbG9uZyBz aXplOworCXZvaWQgX19pb21lbSAqcHRyOworCisJaWYgKG5hbWUpCisJCXJlcyA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sIG5hbWUpOworCWVsc2UK KwkJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsK KworCWlmICghcmVzKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgbWVt b3J5IHJlc291cmNlOiAlc1xuIiwgbmFtZSk7CisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwor CX0KKworCXNpemUgPSByZXNvdXJjZV9zaXplKHJlcyk7CisKKwlwdHIgPSBkZXZtX2lvcmVtYXBf bm9jYWNoZSgmcGRldi0+ZGV2LCByZXMtPnN0YXJ0LCBzaXplKTsKKwlpZiAoIXB0cikgeworCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gaW9yZW1hcDogJXNcbiIsIG5hbWUpOworCQly ZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisKKwlpZiAocmVnbG9nKQorCQlwcmludGsoS0VS Tl9ERUJVRyAiSU86cmVnaW9uICVzICUwOHggJTA4bHhcbiIsIGRiZ25hbWUsICh1MzIpcHRyLCBz aXplKTsKKworCXJldHVybiBwdHI7Cit9CisKK3ZvaWQgZXRuYXZpdl93cml0ZWwodTMyIGRhdGEs IHZvaWQgX19pb21lbSAqYWRkcikKK3sKKwlpZiAocmVnbG9nKQorCQlwcmludGsoS0VSTl9ERUJV RyAiSU86VyAlMDh4ICUwOHhcbiIsICh1MzIpYWRkciwgZGF0YSk7CisJd3JpdGVsKGRhdGEsIGFk ZHIpOworfQorCit1MzIgZXRuYXZpdl9yZWFkbChjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIpCit7 CisJdTMyIHZhbCA9IHJlYWRsKGFkZHIpOworCWlmIChyZWdsb2cpCisJCXByaW50ayhLRVJOX0VS UiAiSU86UiAlMDh4ICUwOHhcbiIsICh1MzIpYWRkciwgdmFsKTsKKwlyZXR1cm4gdmFsOworfQor CisvKgorICogRFJNIG9wZXJhdGlvbnM6CisgKi8KKworc3RhdGljIGludCBldG5hdml2X3VubG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBldG5hdml2X2RybV9wcml2YXRl ICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZsdXNoX3dv cmtxdWV1ZShwcml2LT53cSk7CisJZGVzdHJveV93b3JrcXVldWUocHJpdi0+d3EpOworCisJbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCWZvciAoaSA9IDA7IGkgPCBFVE5BX01BWF9Q SVBFUzsgaSsrKSB7CisJCXN0cnVjdCBldG5hdml2X2dwdSAqZyA9IHByaXYtPmdwdVtpXTsKKwkJ aWYgKGcpCisJCQlldG5hdml2X2dwdV9wbV9zdXNwZW5kKGcpOworCX0KKwltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKKworCWNvbXBvbmVudF91bmJpbmRfYWxsKGRldi0+ZGV2LCBk ZXYpOworCisJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CisKKwlrZnJlZShwcml2KTsKKworCXJl dHVybiAwOworfQorCisKK3N0YXRpYyB2b2lkIGxvYWRfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCit7CisJc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2 YXRlOworCXVuc2lnbmVkIGludCBpOworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OworCisJZm9yIChpID0gMDsgaSA8IEVUTkFfTUFYX1BJUEVTOyBpKyspIHsKKwkJc3RydWN0IGV0 bmF2aXZfZ3B1ICpnID0gcHJpdi0+Z3B1W2ldOworCQlpZiAoZykgeworCQkJaW50IHJldDsKKwkJ CWV0bmF2aXZfZ3B1X3BtX3Jlc3VtZShnKTsKKwkJCXJldCA9IGV0bmF2aXZfZ3B1X2luaXQoZyk7 CisJCQlpZiAocmV0KSB7CisJCQkJZGV2X2VycihkZXYtPmRldiwgIiVzIGh3IGluaXQgZmFpbGVk OiAlZFxuIiwgZy0+bmFtZSwgcmV0KTsKKwkJCQlwcml2LT5ncHVbaV0gPSBOVUxMOworCQkJfQor CQl9CisJfQorCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cit9CisKK3N0YXRp YyBpbnQgZXRuYXZpdl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcg ZmxhZ3MpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRldi0+cGxhdGZvcm1k ZXY7CisJc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZhdGUgKnByaXY7CisJaW50IGVycjsKKworCXBy aXYgPSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOworCWlmICghcHJpdikgewor CQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIHByaXZhdGUgZGF0YVxuIik7 CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWRldi0+ZGV2X3ByaXZhdGUgPSBwcml2OworCisJ cHJpdi0+d3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgiZXRuYXZpdiIsIDApOworCWluaXRf d2FpdHF1ZXVlX2hlYWQoJnByaXYtPmZlbmNlX2V2ZW50KTsKKworCUlOSVRfTElTVF9IRUFEKCZw cml2LT5pbmFjdGl2ZV9saXN0KTsKKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRldik7 CisKKwllcnIgPSBjb21wb25lbnRfYmluZF9hbGwoZGV2LT5kZXYsIGRldik7CisJaWYgKGVyciA8 IDApCisJCXJldHVybiBlcnI7CisKKwlsb2FkX2dwdShkZXYpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgZXRuYXZpdl9vcGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9maWxlX3ByaXZhdGUgKmN0eDsKKwor CWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWN0eCkKKwkJ cmV0dXJuIC1FTk9NRU07CisKKwlmaWxlLT5kcml2ZXJfcHJpdiA9IGN0eDsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCBldG5hdml2X3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0 ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGV0bmF2aXZfZmlsZV9wcml2YXRl ICpjdHggPSBmaWxlLT5kcml2ZXJfcHJpdjsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211 dGV4KTsKKwlpZiAoY3R4ID09IHByaXYtPmxhc3RjdHgpCisJCXByaXYtPmxhc3RjdHggPSBOVUxM OworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJa2ZyZWUoY3R4KTsKK30K KworLyoKKyAqIERSTSBkZWJ1Z2ZzOgorICovCisKKyNpZmRlZiBDT05GSUdfREVCVUdfRlMKK3N0 YXRpYyBpbnQgZXRuYXZpdl9ncHVfc2hvdyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg c2VxX2ZpbGUgKm0pCit7CisJc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYt PmRldl9wcml2YXRlOworCXN0cnVjdCBldG5hdml2X2dwdSAqZ3B1OworCXVuc2lnbmVkIGludCBp OworCisJZm9yIChpID0gMDsgaSA8IEVUTkFfTUFYX1BJUEVTOyBpKyspIHsKKwkJZ3B1ID0gcHJp di0+Z3B1W2ldOworCQlpZiAoZ3B1KSB7CisJCQlzZXFfcHJpbnRmKG0sICIlcyBTdGF0dXM6XG4i LCBncHUtPm5hbWUpOworCQkJZXRuYXZpdl9ncHVfZGVidWdmcyhncHUsIG0pOworCQl9CisJfQor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXRuYXZpdl9nZW1fc2hvdyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCit7CisJc3RydWN0IGV0bmF2aXZfZHJt X3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBldG5hdml2X2dwdSAq Z3B1OworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IEVUTkFfTUFYX1BJUEVT OyBpKyspIHsKKwkJZ3B1ID0gcHJpdi0+Z3B1W2ldOworCQlpZiAoZ3B1KSB7CisJCQlzZXFfcHJp bnRmKG0sICJBY3RpdmUgT2JqZWN0cyAoJXMpOlxuIiwgZ3B1LT5uYW1lKTsKKwkJCW1zbV9nZW1f ZGVzY3JpYmVfb2JqZWN0cygmZ3B1LT5hY3RpdmVfbGlzdCwgbSk7CisJCX0KKwl9CisKKwlzZXFf cHV0cyhtLCAiSW5hY3RpdmUgT2JqZWN0czpcbiIpOworCW1zbV9nZW1fZGVzY3JpYmVfb2JqZWN0 cygmcHJpdi0+aW5hY3RpdmVfbGlzdCwgbSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBldG5hdml2X21tX3Nob3coc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IHNlcV9maWxl ICptKQoreworCXJldHVybiBkcm1fbW1fZHVtcF90YWJsZShtLCAmZGV2LT52bWFfb2Zmc2V0X21h bmFnZXItPnZtX2FkZHJfc3BhY2VfbW0pOworfQorCitzdGF0aWMgaW50IHNob3dfbG9ja2VkKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1faW5mb19ub2RlICpu b2RlID0gKHN0cnVjdCBkcm1faW5mb19ub2RlICopIG0tPnByaXZhdGU7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7CisJaW50ICgqc2hvdykoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgc3RydWN0IHNlcV9maWxlICptKSA9CisJCQlub2RlLT5pbmZvX2VudC0+ZGF0 YTsKKwlpbnQgcmV0OworCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0 cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHNob3coZGV2 LCBtKTsKKworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IEVUTkFWSVZfZGVidWdmc19saXN0 W10gPSB7CisJCXsiZ3B1Iiwgc2hvd19sb2NrZWQsIDAsIGV0bmF2aXZfZ3B1X3Nob3d9LAorCQl7 ImdlbSIsIHNob3dfbG9ja2VkLCAwLCBldG5hdml2X2dlbV9zaG93fSwKKwkJeyAibW0iLCBzaG93 X2xvY2tlZCwgMCwgZXRuYXZpdl9tbV9zaG93IH0sCit9OworCitzdGF0aWMgaW50IGV0bmF2aXZf ZGVidWdmc19pbml0KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQoreworCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBtaW5vci0+ZGV2OworCWludCByZXQ7CisKKwlyZXQgPSBkcm1fZGVidWdmc19j cmVhdGVfZmlsZXMoRVROQVZJVl9kZWJ1Z2ZzX2xpc3QsCisJCQlBUlJBWV9TSVpFKEVUTkFWSVZf ZGVidWdmc19saXN0KSwKKwkJCW1pbm9yLT5kZWJ1Z2ZzX3Jvb3QsIG1pbm9yKTsKKworCWlmIChy ZXQpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgImNvdWxkIG5vdCBpbnN0YWxsIEVUTkFWSVZfZGVi dWdmc19saXN0XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgdm9pZCBldG5hdml2X2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgZHJtX21pbm9yICptaW5v cikKK3sKKwlkcm1fZGVidWdmc19yZW1vdmVfZmlsZXMoRVROQVZJVl9kZWJ1Z2ZzX2xpc3QsCisJ CQlBUlJBWV9TSVpFKEVUTkFWSVZfZGVidWdmc19saXN0KSwgbWlub3IpOworfQorI2VuZGlmCisK Ky8qCisgKiBGZW5jZXM6CisgKi8KK2ludCBldG5hdml2X3dhaXRfZmVuY2VfaW50ZXJydXB0YWJs ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBwaXBlLAorCQl1aW50MzJfdCBmZW5j ZSwgc3RydWN0IHRpbWVzcGVjICp0aW1lb3V0KQoreworCXN0cnVjdCBldG5hdml2X2RybV9wcml2 YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdTsK KwlpbnQgcmV0OworCisJaWYgKHBpcGUgPj0gRVROQV9NQVhfUElQRVMpCisJCXJldHVybiAtRUlO VkFMOworCisJZ3B1ID0gcHJpdi0+Z3B1W3BpcGVdOworCWlmICghZ3B1KQorCQlyZXR1cm4gLUVO WElPOworCisJaWYgKGZlbmNlID4gZ3B1LT5zdWJtaXR0ZWRfZmVuY2UpIHsKKwkJRFJNX0VSUk9S KCJ3YWl0aW5nIG9uIGludmFsaWQgZmVuY2U6ICV1IChvZiAldSlcbiIsCisJCQkJZmVuY2UsIGdw dS0+c3VibWl0dGVkX2ZlbmNlKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKCF0aW1l b3V0KSB7CisJCS8qIG5vLXdhaXQ6ICovCisJCXJldCA9IGZlbmNlX2NvbXBsZXRlZChkZXYsIGZl bmNlKSA/IDAgOiAtRUJVU1k7CisJfSBlbHNlIHsKKwkJdW5zaWduZWQgbG9uZyB0aW1lb3V0X2pp ZmZpZXMgPSB0aW1lc3BlY190b19qaWZmaWVzKHRpbWVvdXQpOworCQl1bnNpZ25lZCBsb25nIHN0 YXJ0X2ppZmZpZXMgPSBqaWZmaWVzOworCQl1bnNpZ25lZCBsb25nIHJlbWFpbmluZ19qaWZmaWVz OworCisJCWlmICh0aW1lX2FmdGVyKHN0YXJ0X2ppZmZpZXMsIHRpbWVvdXRfamlmZmllcykpCisJ CQlyZW1haW5pbmdfamlmZmllcyA9IDA7CisJCWVsc2UKKwkJCXJlbWFpbmluZ19qaWZmaWVzID0g dGltZW91dF9qaWZmaWVzIC0gc3RhcnRfamlmZmllczsKKworCQlyZXQgPSB3YWl0X2V2ZW50X2lu dGVycnVwdGlibGVfdGltZW91dChwcml2LT5mZW5jZV9ldmVudCwKKwkJCQlmZW5jZV9jb21wbGV0 ZWQoZGV2LCBmZW5jZSksCisJCQkJcmVtYWluaW5nX2ppZmZpZXMpOworCisJCWlmIChyZXQgPT0g MCkgeworCQkJREJHKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIGZlbmNlOiAldSAoY29tcGxldGVkOiAl dSkiLAorCQkJCQlmZW5jZSwgcHJpdi0+Y29tcGxldGVkX2ZlbmNlKTsKKwkJCXJldCA9IC1FVElN RURPVVQ7CisJCX0gZWxzZSBpZiAocmV0ICE9IC1FUkVTVEFSVFNZUykgeworCQkJcmV0ID0gMDsK KwkJfQorCX0KKworCXJldHVybiByZXQ7Cit9CisKKy8qIGNhbGxlZCBmcm9tIHdvcmtxdWV1ZSAq Lwordm9pZCBldG5hdml2X3VwZGF0ZV9mZW5jZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50 MzJfdCBmZW5jZSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJcHJpdi0+ Y29tcGxldGVkX2ZlbmNlID0gbWF4KGZlbmNlLCBwcml2LT5jb21wbGV0ZWRfZmVuY2UpOworCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJd2FrZV91cF9hbGwoJnByaXYtPmZl bmNlX2V2ZW50KTsKK30KKworLyoKKyAqIERSTSBpb2N0bHM6CisgKi8KKworc3RhdGljIGludCBl dG5hdml2X2lvY3RsX2dldF9wYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAorCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZh dGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZXRuYXZpdl9wYXJhbSAq YXJncyA9IGRhdGE7CisJc3RydWN0IGV0bmF2aXZfZ3B1ICpncHU7CisKKwlpZiAoYXJncy0+cGlw ZSA+PSBFVE5BX01BWF9QSVBFUykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlncHUgPSBwcml2LT5n cHVbYXJncy0+cGlwZV07CisJaWYgKCFncHUpCisJCXJldHVybiAtRU5YSU87CisKKwlyZXR1cm4g ZXRuYXZpdl9ncHVfZ2V0X3BhcmFtKGdwdSwgYXJncy0+cGFyYW0sICZhcmdzLT52YWx1ZSk7Cit9 CisKK3N0YXRpYyBpbnQgZXRuYXZpdl9pb2N0bF9nZW1fbmV3KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCisJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJt X2V0bmF2aXZfZ2VtX25ldyAqYXJncyA9IGRhdGE7CisJcmV0dXJuIGV0bmF2aXZfZ2VtX25ld19o YW5kbGUoZGV2LCBmaWxlLCBhcmdzLT5zaXplLAorCQkJYXJncy0+ZmxhZ3MsICZhcmdzLT5oYW5k bGUpOworfQorCisjZGVmaW5lIFRTKHQpICgoc3RydWN0IHRpbWVzcGVjKXsgLnR2X3NlYyA9ICh0 KS50dl9zZWMsIC50dl9uc2VjID0gKHQpLnR2X25zZWMgfSkKKworc3RhdGljIGludCBldG5hdml2 X2lvY3RsX2dlbV9jcHVfcHJlcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAor CQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9ldG5hdml2X2dlbV9jcHVf cHJlcCAqYXJncyA9IGRhdGE7CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJaW50IHJl dDsKKworCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGUsIGFyZ3MtPmhhbmRs ZSk7CisJaWYgKCFvYmopCisJCXJldHVybiAtRU5PRU5UOworCisJcmV0ID0gZXRuYXZpdl9nZW1f Y3B1X3ByZXAob2JqLCBhcmdzLT5vcCwgJlRTKGFyZ3MtPnRpbWVvdXQpKTsKKworCWRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50IGV0bmF2aXZfaW9jdGxfZ2VtX2NwdV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCisJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJt X2V0bmF2aXZfZ2VtX2NwdV9maW5pICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iajsKKwlpbnQgcmV0OworCisJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwg ZmlsZSwgYXJncy0+aGFuZGxlKTsKKwlpZiAoIW9iaikKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwly ZXQgPSBldG5hdml2X2dlbV9jcHVfZmluaShvYmopOworCisJZHJtX2dlbV9vYmplY3RfdW5yZWZl cmVuY2VfdW5sb2NrZWQob2JqKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZXRu YXZpdl9pb2N0bF9nZW1faW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAor CQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9ldG5hdml2X2dlbV9pbmZv ICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlpbnQgcmV0ID0g MDsKKworCWlmIChhcmdzLT5wYWQpCisJCXJldHVybiAtRUlOVkFMOworCisJb2JqID0gZHJtX2dl bV9vYmplY3RfbG9va3VwKGRldiwgZmlsZSwgYXJncy0+aGFuZGxlKTsKKwlpZiAoIW9iaikKKwkJ cmV0dXJuIC1FTk9FTlQ7CisKKwlhcmdzLT5vZmZzZXQgPSBtc21fZ2VtX21tYXBfb2Zmc2V0KG9i aik7CisKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOworCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBldG5hdml2X2lvY3RsX3dhaXRfZmVuY2Uoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJc3RydWN0IGRybV9maWxlICpmaWxlKQor eworCXN0cnVjdCBkcm1fZXRuYXZpdl93YWl0X2ZlbmNlICphcmdzID0gZGF0YTsKKwlyZXR1cm4g ZXRuYXZpdl93YWl0X2ZlbmNlX2ludGVycnVwdGFibGUoZGV2LCBhcmdzLT5waXBlLCBhcmdzLT5m ZW5jZSwgJlRTKGFyZ3MtPnRpbWVvdXQpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f aW9jdGxfZGVzYyBldG5hdml2X2lvY3Rsc1tdID0geworCURSTV9JT0NUTF9ERUZfRFJWKEVUTkFW SVZfR0VUX1BBUkFNLCAgICBldG5hdml2X2lvY3RsX2dldF9wYXJhbSwgICAgRFJNX1VOTE9DS0VE fERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEVUTkFWSVZf R0VNX05FVywgICAgICBldG5hdml2X2lvY3RsX2dlbV9uZXcsICAgICAgRFJNX1VOTE9DS0VEfERS TV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEVUTkFWSVZfR0VN X0lORk8sICAgICBldG5hdml2X2lvY3RsX2dlbV9pbmZvLCAgICAgRFJNX1VOTE9DS0VEfERSTV9B VVRIfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEVUTkFWSVZfR0VNX0NQ VV9QUkVQLCBldG5hdml2X2lvY3RsX2dlbV9jcHVfcHJlcCwgRFJNX1VOTE9DS0VEfERSTV9BVVRI fERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEVUTkFWSVZfR0VNX0NQVV9G SU5JLCBldG5hdml2X2lvY3RsX2dlbV9jcHVfZmluaSwgRFJNX1VOTE9DS0VEfERSTV9BVVRIfERS TV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEVUTkFWSVZfR0VNX1NVQk1JVCwg ICBldG5hdml2X2lvY3RsX2dlbV9zdWJtaXQsICAgRFJNX1VOTE9DS0VEfERSTV9BVVRIfERSTV9S RU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEVUTkFWSVZfV0FJVF9GRU5DRSwgICBl dG5hdml2X2lvY3RsX3dhaXRfZmVuY2UsICAgRFJNX1VOTE9DS0VEfERSTV9BVVRIfERSTV9SRU5E RVJfQUxMT1cpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVj dCB2bV9vcHMgPSB7CisJLmZhdWx0ID0gZXRuYXZpdl9nZW1fZmF1bHQsCisJLm9wZW4gPSBkcm1f Z2VtX3ZtX29wZW4sCisJLmNsb3NlID0gZHJtX2dlbV92bV9jbG9zZSwKK307CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHMgPSB7CisJLm93bmVyICAgICAgICAgICAg ICA9IFRISVNfTU9EVUxFLAorCS5vcGVuICAgICAgICAgICAgICAgPSBkcm1fb3BlbiwKKwkucmVs ZWFzZSAgICAgICAgICAgID0gZHJtX3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsICAgICA9IGRy bV9pb2N0bCwKKyNpZmRlZiBDT05GSUdfQ09NUEFUCisJLmNvbXBhdF9pb2N0bCAgICAgICA9IGRy bV9jb21wYXRfaW9jdGwsCisjZW5kaWYKKwkucG9sbCAgICAgICAgICAgICAgID0gZHJtX3BvbGws CisJLnJlYWQgICAgICAgICAgICAgICA9IGRybV9yZWFkLAorCS5sbHNlZWsgICAgICAgICAgICAg PSBub19sbHNlZWssCisJLm1tYXAgICAgICAgICAgICAgICA9IGV0bmF2aXZfZ2VtX21tYXAsCit9 OworCitzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZXRuYXZpdl9kcm1fZHJpdmVyID0geworCS5k cml2ZXJfZmVhdHVyZXMgICAgPSBEUklWRVJfSEFWRV9JUlEgfAorCQkJCURSSVZFUl9HRU0gfAor CQkJCURSSVZFUl9QUklNRSB8CisJCQkJRFJJVkVSX1JFTkRFUiwKKwkubG9hZCAgICAgICAgICAg ICAgID0gZXRuYXZpdl9sb2FkLAorCS51bmxvYWQgICAgICAgICAgICAgPSBldG5hdml2X3VubG9h ZCwKKwkub3BlbiAgICAgICAgICAgICAgID0gZXRuYXZpdl9vcGVuLAorCS5wcmVjbG9zZSAgICAg ICAgICAgPSBldG5hdml2X3ByZWNsb3NlLAorCS5zZXRfYnVzaWQgICAgICAgICAgPSBkcm1fcGxh dGZvcm1fc2V0X2J1c2lkLAorCS5nZW1fZnJlZV9vYmplY3QgICAgPSBldG5hdml2X2dlbV9mcmVl X29iamVjdCwKKwkuZ2VtX3ZtX29wcyAgICAgICAgID0gJnZtX29wcywKKwkuZHVtYl9jcmVhdGUg ICAgICAgID0gbXNtX2dlbV9kdW1iX2NyZWF0ZSwKKwkuZHVtYl9tYXBfb2Zmc2V0ICAgID0gbXNt X2dlbV9kdW1iX21hcF9vZmZzZXQsCisJLmR1bWJfZGVzdHJveSAgICAgICA9IGRybV9nZW1fZHVt Yl9kZXN0cm95LAorCS5wcmltZV9oYW5kbGVfdG9fZmQgPSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90 b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUs CisJLmdlbV9wcmltZV9leHBvcnQgICA9IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5nZW1fcHJp bWVfaW1wb3J0ICAgPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1lX3BpbiAgICAg ID0gbXNtX2dlbV9wcmltZV9waW4sCisJLmdlbV9wcmltZV91bnBpbiAgICA9IG1zbV9nZW1fcHJp bWVfdW5waW4sCisJLmdlbV9wcmltZV9nZXRfc2dfdGFibGUgPSBtc21fZ2VtX3ByaW1lX2dldF9z Z190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IG1zbV9nZW1fcHJpbWVfaW1w b3J0X3NnX3RhYmxlLAorCS5nZW1fcHJpbWVfdm1hcCAgICAgPSBtc21fZ2VtX3ByaW1lX3ZtYXAs CisJLmdlbV9wcmltZV92dW5tYXAgICA9IG1zbV9nZW1fcHJpbWVfdnVubWFwLAorI2lmZGVmIENP TkZJR19ERUJVR19GUworCS5kZWJ1Z2ZzX2luaXQgICAgICAgPSBldG5hdml2X2RlYnVnZnNfaW5p dCwKKwkuZGVidWdmc19jbGVhbnVwICAgID0gZXRuYXZpdl9kZWJ1Z2ZzX2NsZWFudXAsCisjZW5k aWYKKwkuaW9jdGxzICAgICAgICAgICAgID0gZXRuYXZpdl9pb2N0bHMsCisJLm51bV9pb2N0bHMg ICAgICAgICA9IERSTV9FVE5BVklWX05VTV9JT0NUTFMsCisJLmZvcHMgICAgICAgICAgICAgICA9 ICZmb3BzLAorCS5uYW1lICAgICAgICAgICAgICAgPSAiZXRuYXZpdiIsCisJLmRlc2MgICAgICAg ICAgICAgICA9ICJldG5hdml2IERSTSIsCisJLmRhdGUgICAgICAgICAgICAgICA9ICIyMDEzMDYy NSIsCisJLm1ham9yICAgICAgICAgICAgICA9IDEsCisJLm1pbm9yICAgICAgICAgICAgICA9IDAs Cit9OworCisvKgorICogUGxhdGZvcm0gZHJpdmVyOgorICovCisKK3N0YXRpYyBpbnQgZXRuYXZp dl9jb21wYXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKm5wID0gZGF0YTsKKworCXJldHVybiBkZXYtPm9mX25vZGUgPT0gbnA7Cit9CisK K3N0YXRpYyBpbnQgZXRuYXZpdl9hZGRfY29tcG9uZW50cyhzdHJ1Y3QgZGV2aWNlICptYXN0ZXIs IHN0cnVjdCBtYXN0ZXIgKm0pCit7CisJc3RydWN0IGRldmljZV9ub2RlICpucAk9IG1hc3Rlci0+ b2Zfbm9kZTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkX25wOworCisJY2hpbGRfbnAgPSBv Zl9nZXRfbmV4dF9hdmFpbGFibGVfY2hpbGQobnAsIE5VTEwpOworCisJd2hpbGUgKGNoaWxkX25w KSB7CisJCURSTV9JTkZPKCJhZGQgY2hpbGQgJXNcbiIsIGNoaWxkX25wLT5uYW1lKTsKKwkJY29t cG9uZW50X21hc3Rlcl9hZGRfY2hpbGQobSwgZXRuYXZpdl9jb21wYXJlLCBjaGlsZF9ucCk7CisJ CW9mX25vZGVfcHV0KGNoaWxkX25wKTsKKwkJY2hpbGRfbnAgPSBvZl9nZXRfbmV4dF9hdmFpbGFi bGVfY2hpbGQobnAsIGNoaWxkX25wKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBldG5hdml2X2JpbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXJldHVybiBkcm1fcGxhdGZv cm1faW5pdCgmZXRuYXZpdl9kcm1fZHJpdmVyLCB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KSk7Cit9 CisKK3N0YXRpYyB2b2lkIGV0bmF2aXZfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlk cm1fcHV0X2RldihkZXZfZ2V0X2RydmRhdGEoZGV2KSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY29tcG9uZW50X21hc3Rlcl9vcHMgZXRuYXZpdl9tYXN0ZXJfb3BzID0geworCS5hZGRfY29t cG9uZW50cyA9IGV0bmF2aXZfYWRkX2NvbXBvbmVudHMsCisJLmJpbmQgPSBldG5hdml2X2JpbmQs CisJLnVuYmluZCA9IGV0bmF2aXZfdW5iaW5kLAorfTsKKworc3RhdGljIGludCBldG5hdml2X3Bk ZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zf bm9kZTsKKworCW9mX3BsYXRmb3JtX3BvcHVsYXRlKG5vZGUsIE5VTEwsIE5VTEwsIGRldik7CisK KwlkbWFfc2V0X2NvaGVyZW50X21hc2soJnBkZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CisK KwlyZXR1cm4gY29tcG9uZW50X21hc3Rlcl9hZGQoJnBkZXYtPmRldiwgJmV0bmF2aXZfbWFzdGVy X29wcyk7Cit9CisKK3N0YXRpYyBpbnQgZXRuYXZpdl9wZGV2X3JlbW92ZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQoreworCWNvbXBvbmVudF9tYXN0ZXJfZGVsKCZwZGV2LT5kZXYsICZl dG5hdml2X21hc3Rlcl9vcHMpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGR0X21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJ2aXZhbnRl LGdjY29yZSIgfSwKKwl7fQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR0X21hdGNoKTsK Kworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZXRuYXZpdl9wbGF0Zm9ybV9kcml2ZXIg PSB7CisJLnByb2JlICAgICAgPSBldG5hdml2X3BkZXZfcHJvYmUsCisJLnJlbW92ZSAgICAgPSBl dG5hdml2X3BkZXZfcmVtb3ZlLAorCS5kcml2ZXIgICAgID0geworCQkub3duZXIgID0gVEhJU19N T0RVTEUsCisJCS5uYW1lICAgPSAidml2YW50ZSIsCisJCS5vZl9tYXRjaF90YWJsZSA9IGR0X21h dGNoLAorCX0sCit9OworCitzdGF0aWMgaW50IF9faW5pdCBldG5hdml2X2luaXQodm9pZCkKK3sK KwlpbnQgcmV0OworCisJcmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZldG5hdml2X2dw dV9kcml2ZXIpOworCWlmIChyZXQgIT0gMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHBsYXRm b3JtX2RyaXZlcl9yZWdpc3RlcigmZXRuYXZpdl9wbGF0Zm9ybV9kcml2ZXIpOworCWlmIChyZXQg IT0gMCkKKwkJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmV0bmF2aXZfZ3B1X2RyaXZlcik7 CisKKwlyZXR1cm4gcmV0OworfQorbW9kdWxlX2luaXQoZXRuYXZpdl9pbml0KTsKKworc3RhdGlj IHZvaWQgX19leGl0IGV0bmF2aXZfZXhpdCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91bnJl Z2lzdGVyKCZldG5hdml2X2dwdV9kcml2ZXIpOworCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVy KCZldG5hdml2X3BsYXRmb3JtX2RyaXZlcik7Cit9Cittb2R1bGVfZXhpdChldG5hdml2X2V4aXQp OworCitNT0RVTEVfQVVUSE9SKCJSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20iKTsKK01P RFVMRV9ERVNDUklQVElPTigiZXRuYXZpdiBEUk0gRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgi R1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2Rydi5o IGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9kcnYuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYzOTk0ZjIyZDhjOQotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZHJ2LmgKQEAgLTAsMCArMSwxNDMgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVkIEhhdAorICogQXV0aG9yOiBSb2IgQ2xhcmsg PHJvYmRjbGFya0BnbWFpbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1 Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICog bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisj aWZuZGVmIF9fRVROQVZJVl9EUlZfSF9fCisjZGVmaW5lIF9fRVROQVZJVl9EUlZfSF9fCisKKyNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRl IDxsaW51eC9jcHVmcmVxLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcG0uaD4KKyNpbmNsdWRl IDxsaW51eC9wbV9ydW50aW1lLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUg PGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9pb21tdS5oPgorI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKworI2luY2x1ZGUgPGRybS9kcm1Q Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1f ZmJfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KKyNpbmNsdWRlIDxkcm0vZXRu YXZpdl9kcm0uaD4KKworc3RydWN0IGV0bmF2aXZfZ3B1Oworc3RydWN0IGV0bmF2aXZfbW11Owor c3RydWN0IGV0bmF2aXZfZ2VtX3N1Ym1pdDsKKworc3RydWN0IGV0bmF2aXZfZmlsZV9wcml2YXRl IHsKKwkvKiBjdXJyZW50bHkgd2UgZG9uJ3QgZG8gYW55dGhpbmcgdXNlZnVsIHdpdGggdGhpcy4u IGJ1dCB3aGVuCisJICogcGVyLWNvbnRleHQgYWRkcmVzcyBzcGFjZXMgYXJlIHN1cHBvcnRlZCB3 ZSdkIGtlZXAgdHJhY2sgb2YKKwkgKiB0aGUgY29udGV4dCdzIHBhZ2UtdGFibGVzIGhlcmUuCisJ ICovCisJaW50IGR1bW15OworfTsKKworc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZhdGUgeworCXN0 cnVjdCBldG5hdml2X2dwdSAqZ3B1W0VUTkFfTUFYX1BJUEVTXTsKKwlzdHJ1Y3QgZXRuYXZpdl9m aWxlX3ByaXZhdGUgKmxhc3RjdHg7CisKKwl1aW50MzJfdCBuZXh0X2ZlbmNlLCBjb21wbGV0ZWRf ZmVuY2U7CisJd2FpdF9xdWV1ZV9oZWFkX3QgZmVuY2VfZXZlbnQ7CisKKwkvKiBsaXN0IG9mIEdF TSBvYmplY3RzOiAqLworCXN0cnVjdCBsaXN0X2hlYWQgaW5hY3RpdmVfbGlzdDsKKworCXN0cnVj dCB3b3JrcXVldWVfc3RydWN0ICp3cTsKKworCS8qIHJlZ2lzdGVyZWQgTU1VczogKi8KKwlzdHJ1 Y3QgZXRuYXZpdl9pb21tdSAqbW11OworfTsKKwordm9pZCBldG5hdml2X3JlZ2lzdGVyX21tdShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqbW11KTsKKworaW50 IGV0bmF2aXZfd2FpdF9mZW5jZV9pbnRlcnJ1cHRhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVpbnQzMl90IHBpcGUsCisJCXVpbnQzMl90IGZlbmNlLAlzdHJ1Y3QgdGltZXNwZWMgKnRpbWVv dXQpOwordm9pZCBldG5hdml2X3VwZGF0ZV9mZW5jZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 aW50MzJfdCBmZW5jZSk7CisKK2ludCBldG5hdml2X2lvY3RsX2dlbV9zdWJtaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJc3RydWN0IGRybV9maWxlICpmaWxlKTsKKwor aW50IGV0bmF2aXZfZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hKTsKK2ludCBldG5hdml2X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpOwordWludDY0X3QgbXNtX2dlbV9tbWFwX29mZnNl dChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitpbnQgZXRuYXZpdl9nZW1fZ2V0X2lvdmFf bG9ja2VkKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwKKwkJdWludDMyX3QgKmlvdmEpOworaW50IGV0bmF2aXZfZ2VtX2dldF9pb3ZhKHN0cnVjdCBl dG5hdml2X2dwdSAqZ3B1LCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgaW50IGlkLCB1aW50 MzJfdCAqaW92YSk7CitzdHJ1Y3QgcGFnZSAqKmV0bmF2aXZfZ2VtX2dldF9wYWdlcyhzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaik7Cit2b2lkIG1zbV9nZW1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgZXRuYXZpdl9nZW1fcHV0X2lvdmEoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopOworaW50IG1zbV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxl ICpmaWxlLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzdHJ1Y3QgZHJtX21vZGVfY3JlYXRl X2R1bWIgKmFyZ3MpOworaW50IG1zbV9nZW1fZHVtYl9tYXBfb2Zmc2V0KHN0cnVjdCBkcm1fZmls ZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJdWludDMyX3QgaGFuZGxlLCB1aW50 NjRfdCAqb2Zmc2V0KTsKK3N0cnVjdCBzZ190YWJsZSAqbXNtX2dlbV9wcmltZV9nZXRfc2dfdGFi bGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwordm9pZCAqbXNtX2dlbV9wcmltZV92bWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgbXNtX2dlbV9wcmltZV92dW5tYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKK3N0cnVjdCBkcm1fZ2Vt X29iamVjdCAqbXNtX2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKKwkJc2l6ZV90IHNpemUsIHN0cnVjdCBzZ190YWJsZSAqc2cpOworaW50IG1zbV9nZW1f cHJpbWVfcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgbXNtX2dlbV9wcmlt ZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cit2b2lkICpldG5hdml2X2dlbV92 YWRkcl9sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwordm9pZCAqbXNtX2dlbV92 YWRkcihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitkbWFfYWRkcl90IGV0bmF2aXZfZ2Vt X3BhZGRyX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cit2b2lkIGV0bmF2aXZf Z2VtX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAorCQlzdHJ1Y3Qg ZXRuYXZpdl9ncHUgKmdwdSwgYm9vbCB3cml0ZSwgdWludDMyX3QgZmVuY2UpOwordm9pZCBldG5h dml2X2dlbV9tb3ZlX3RvX2luYWN0aXZlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK2lu dCBldG5hdml2X2dlbV9jcHVfcHJlcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdWludDMy X3Qgb3AsCisJCXN0cnVjdCB0aW1lc3BlYyAqdGltZW91dCk7CitpbnQgZXRuYXZpdl9nZW1fY3B1 X2Zpbmkoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwordm9pZCBldG5hdml2X2dlbV9mcmVl X29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7CitpbnQgZXRuYXZpdl9nZW1fbmV3 X2hhbmRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJ CXVpbnQzMl90IHNpemUsIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCAqaGFuZGxlKTsKK3N0cnVj dCBkcm1fZ2VtX29iamVjdCAqZXRuYXZpdl9nZW1fbmV3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CisJCXVpbnQzMl90IHNpemUsIHVpbnQzMl90IGZsYWdzKTsKK3N0cnVjdCBkcm1fZ2VtX29iamVj dCAqbXNtX2dlbV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJdWludDMyX3Qgc2l6 ZSwgc3RydWN0IHNnX3RhYmxlICpzZ3QpOwordTMyIGV0bmF2aXZfYnVmZmVyX2luaXQoc3RydWN0 IGV0bmF2aXZfZ3B1ICpncHUpOwordm9pZCBldG5hdml2X2J1ZmZlcl9xdWV1ZShzdHJ1Y3QgZXRu YXZpdl9ncHUgKmdwdSwgdW5zaWduZWQgaW50IGV2ZW50LCBzdHJ1Y3QgZXRuYXZpdl9nZW1fc3Vi bWl0ICpzdWJtaXQpOworCisjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCit2b2lkIG1zbV9nZW1fZGVz Y3JpYmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBzZXFfZmlsZSAqbSk7Cit2 b2lkIG1zbV9nZW1fZGVzY3JpYmVfb2JqZWN0cyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1 Y3Qgc2VxX2ZpbGUgKm0pOwordm9pZCBtc21fZnJhbWVidWZmZXJfZGVzY3JpYmUoc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsIHN0cnVjdCBzZXFfZmlsZSAqbSk7CisjZW5kaWYKKwordm9pZCBf X2lvbWVtICpldG5hdml2X2lvcmVtYXAoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgY29u c3QgY2hhciAqbmFtZSwKKwkJY29uc3QgY2hhciAqZGJnbmFtZSk7Cit2b2lkIGV0bmF2aXZfd3Jp dGVsKHUzMiBkYXRhLCB2b2lkIF9faW9tZW0gKmFkZHIpOwordTMyIGV0bmF2aXZfcmVhZGwoY29u c3Qgdm9pZCBfX2lvbWVtICphZGRyKTsKKworI2RlZmluZSBEQkcoZm10LCAuLi4pIERSTV9ERUJV RyhmbXQiXG4iLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBWRVJCKGZtdCwgLi4uKSBpZiAoMCkg RFJNX0RFQlVHKGZtdCJcbiIsICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyBpbmxpbmUgYm9vbCBm ZW5jZV9jb21wbGV0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgZmVuY2UpCit7 CisJc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwor CXJldHVybiBwcml2LT5jb21wbGV0ZWRfZmVuY2UgPj0gZmVuY2U7Cit9CisKK3N0YXRpYyBpbmxp bmUgaW50IGFsaWduX3BpdGNoKGludCB3aWR0aCwgaW50IGJwcCkKK3sKKwlpbnQgYnl0ZXNwcCA9 IChicHAgKyA3KSAvIDg7CisJLyogYWRyZW5vIG5lZWRzIHBpdGNoIGFsaWduZWQgdG8gMzIgcGl4 ZWxzOiAqLworCXJldHVybiBieXRlc3BwICogQUxJR04od2lkdGgsIDMyKTsKK30KKworI2VuZGlm IC8qIF9fRVROQVZJVl9EUlZfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRu YXZpdi9ldG5hdml2X2dlbS5jIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9nZW0u YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQyMTQ5YTJiNzQwNAot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ2VtLmMK QEAgLTAsMCArMSw3MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVkIEhhdAorICog QXV0aG9yOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdp dGgKKyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxs aW51eC9zaG1lbV9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKworI2luY2x1ZGUg ImV0bmF2aXZfZHJ2LmgiCisjaW5jbHVkZSAiZXRuYXZpdl9nZW0uaCIKKyNpbmNsdWRlICJldG5h dml2X2dwdS5oIgorI2luY2x1ZGUgImV0bmF2aXZfbW11LmgiCisKKy8qIGNhbGxlZCB3aXRoIGRl di0+c3RydWN0X211dGV4IGhlbGQgKi8KK3N0YXRpYyBzdHJ1Y3QgcGFnZSAqKmdldF9wYWdlcyhz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0 ICpldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsKKworCWlmICghZXRuYXZpdl9vYmot PnBhZ2VzKSB7CisJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKKwkJc3RydWN0 IHBhZ2UgKipwOworCQlpbnQgbnBhZ2VzID0gb2JqLT5zaXplID4+IFBBR0VfU0hJRlQ7CisKKwkJ cCA9IGRybV9nZW1fZ2V0X3BhZ2VzKG9iaik7CisKKwkJaWYgKElTX0VSUihwKSkgeworCQkJZGV2 X2VycihkZXYtPmRldiwgImNvdWxkIG5vdCBnZXQgcGFnZXM6ICVsZFxuIiwKKwkJCQkJUFRSX0VS UihwKSk7CisJCQlyZXR1cm4gcDsKKwkJfQorCisJCWV0bmF2aXZfb2JqLT5zZ3QgPSBkcm1fcHJp bWVfcGFnZXNfdG9fc2cocCwgbnBhZ2VzKTsKKwkJaWYgKElTX0VSUihldG5hdml2X29iai0+c2d0 KSkgeworCQkJZGV2X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBhbGxvY2F0ZSBzZ3RcbiIpOwor CQkJcmV0dXJuIEVSUl9DQVNUKGV0bmF2aXZfb2JqLT5zZ3QpOworCQl9CisKKwkJZXRuYXZpdl9v YmotPnBhZ2VzID0gcDsKKworCQkvKiBGb3Igbm9uLWNhY2hlZCBidWZmZXJzLCBlbnN1cmUgdGhl IG5ldyBwYWdlcyBhcmUgY2xlYW4KKwkJICogYmVjYXVzZSBkaXNwbGF5IGNvbnRyb2xsZXIsIEdQ VSwgZXRjLiBhcmUgbm90IGNvaGVyZW50OgorCQkgKi8KKwkJaWYgKGV0bmF2aXZfb2JqLT5mbGFn cyAmIChFVE5BX0JPX1dDfEVUTkFfQk9fVU5DQUNIRUQpKQorCQkJZG1hX21hcF9zZyhkZXYtPmRl diwgZXRuYXZpdl9vYmotPnNndC0+c2dsLAorCQkJCQlldG5hdml2X29iai0+c2d0LT5uZW50cywg RE1BX0JJRElSRUNUSU9OQUwpOworCX0KKworCXJldHVybiBldG5hdml2X29iai0+cGFnZXM7Cit9 CisKK3N0YXRpYyB2b2lkIHB1dF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sK KwlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8o b2JqKTsKKworCWlmIChldG5hdml2X29iai0+cGFnZXMpIHsKKwkJLyogRm9yIG5vbi1jYWNoZWQg YnVmZmVycywgZW5zdXJlIHRoZSBuZXcgcGFnZXMgYXJlIGNsZWFuCisJCSAqIGJlY2F1c2UgZGlz cGxheSBjb250cm9sbGVyLCBHUFUsIGV0Yy4gYXJlIG5vdCBjb2hlcmVudDoKKwkJICovCisJCWlm IChldG5hdml2X29iai0+ZmxhZ3MgJiAoRVROQV9CT19XQ3xFVE5BX0JPX1VOQ0FDSEVEKSkKKwkJ CWRtYV91bm1hcF9zZyhvYmotPmRldi0+ZGV2LCBldG5hdml2X29iai0+c2d0LT5zZ2wsCisJCQkJ CWV0bmF2aXZfb2JqLT5zZ3QtPm5lbnRzLCBETUFfQklESVJFQ1RJT05BTCk7CisJCXNnX2ZyZWVf dGFibGUoZXRuYXZpdl9vYmotPnNndCk7CisJCWtmcmVlKGV0bmF2aXZfb2JqLT5zZ3QpOworCisJ CWRybV9nZW1fcHV0X3BhZ2VzKG9iaiwgZXRuYXZpdl9vYmotPnBhZ2VzLCB0cnVlLCBmYWxzZSk7 CisKKwkJZXRuYXZpdl9vYmotPnBhZ2VzID0gTlVMTDsKKwl9Cit9CisKK3N0cnVjdCBwYWdlICoq ZXRuYXZpdl9nZW1fZ2V0X3BhZ2VzKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKKwlzdHJ1Y3QgcGFnZSAqKnA7CisJbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXAgPSBnZXRfcGFnZXMob2JqKTsKKwltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1cm4gcDsKK30KKwordm9pZCBtc21f Z2VtX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwkvKiB3aGVuIHdl IHN0YXJ0IHRyYWNraW5nIHRoZSBwaW4gY291bnQsIHRoZW4gZG8gc29tZXRoaW5nIGhlcmUgKi8K K30KKworc3RhdGljIGludCBldG5hdml2X2dlbV9tbWFwX2NtZChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaiwKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3QgZXRuYXZp dl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsKKwlpbnQgcmV0 OworCisJLyoKKwkgKiBDbGVhciB0aGUgVk1fUEZOTUFQIGZsYWcgdGhhdCB3YXMgc2V0IGJ5IGRy bV9nZW1fbW1hcCgpLCBhbmQgc2V0IHRoZQorCSAqIHZtX3Bnb2ZmICh1c2VkIGFzIGEgZmFrZSBi dWZmZXIgb2Zmc2V0IGJ5IERSTSkgdG8gMCBhcyB3ZSB3YW50IHRvIG1hcAorCSAqIHRoZSB3aG9s ZSBidWZmZXIuCisJICovCisJdm1hLT52bV9mbGFncyAmPSB+Vk1fUEZOTUFQOworCXZtYS0+dm1f cGdvZmYgPSAwOworCisJcmV0ID0gZG1hX21tYXBfY29oZXJlbnQob2JqLT5kZXYtPmRldiwgdm1h LAorCQkJCWV0bmF2aXZfb2JqLT52YWRkciwgZXRuYXZpdl9vYmotPnBhZGRyLAorCQkJCXZtYS0+ dm1fZW5kIC0gdm1hLT52bV9zdGFydCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50 IGV0bmF2aXZfZ2VtX21tYXBfb2JqKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAorCQlzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpl dG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsKKworCXZtYS0+dm1fZmxhZ3MgJj0gflZN X1BGTk1BUDsKKwl2bWEtPnZtX2ZsYWdzIHw9IFZNX01JWEVETUFQOworCisJaWYgKGV0bmF2aXZf b2JqLT5mbGFncyAmIEVUTkFfQk9fV0MpIHsKKwkJdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3Rf d3JpdGVjb21iaW5lKHZtX2dldF9wYWdlX3Byb3Qodm1hLT52bV9mbGFncykpOworCX0gZWxzZSBp ZiAoZXRuYXZpdl9vYmotPmZsYWdzICYgRVROQV9CT19VTkNBQ0hFRCkgeworCQl2bWEtPnZtX3Bh Z2VfcHJvdCA9IHBncHJvdF9ub25jYWNoZWQodm1fZ2V0X3BhZ2VfcHJvdCh2bWEtPnZtX2ZsYWdz KSk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogU2h1bnQgb2ZmIGNhY2hlZCBvYmpzIHRvIHNobWVt IGZpbGUgc28gdGhleSBoYXZlIHRoZWlyIG93bgorCQkgKiBhZGRyZXNzX3NwYWNlIChzbyB1bm1h cF9tYXBwaW5nX3JhbmdlIGRvZXMgd2hhdCB3ZSB3YW50LAorCQkgKiBpbiBwYXJ0aWN1bGFyIGlu IHRoZSBjYXNlIG9mIG1tYXAnZCBkbWFidWZzKQorCQkgKi8KKwkJZnB1dCh2bWEtPnZtX2ZpbGUp OworCQlnZXRfZmlsZShvYmotPmZpbHApOworCQl2bWEtPnZtX3Bnb2ZmID0gMDsKKwkJdm1hLT52 bV9maWxlICA9IG9iai0+ZmlscDsKKworCQl2bWEtPnZtX3BhZ2VfcHJvdCA9IHZtX2dldF9wYWdl X3Byb3Qodm1hLT52bV9mbGFncyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBldG5hdml2 X2dlbV9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkK K3sKKwlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpvYmo7CisJaW50IHJldDsKKworCXJldCA9 IGRybV9nZW1fbW1hcChmaWxwLCB2bWEpOworCWlmIChyZXQpIHsKKwkJREJHKCJtbWFwIGZhaWxl ZDogJWQiLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCW9iaiA9IHRvX2V0bmF2aXZfYm8o dm1hLT52bV9wcml2YXRlX2RhdGEpOworCWlmIChvYmotPmZsYWdzICYgRVROQV9CT19DTURTVFJF QU0pCisJCXJldCA9IGV0bmF2aXZfZ2VtX21tYXBfY21kKHZtYS0+dm1fcHJpdmF0ZV9kYXRhLCB2 bWEpOworCWVsc2UKKwkJcmV0ID0gZXRuYXZpdl9nZW1fbW1hcF9vYmoodm1hLT52bV9wcml2YXRl X2RhdGEsIHZtYSk7CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQgZXRuYXZpdl9nZW1fZmF1bHQo c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCB2bV9mYXVsdCAqdm1mKQoreworCXN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gdm1hLT52bV9wcml2YXRlX2RhdGE7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OworCXN0cnVjdCBwYWdlICoqcGFnZXM7CisJdW5z aWduZWQgbG9uZyBwZm47CisJcGdvZmZfdCBwZ29mZjsKKwlpbnQgcmV0OworCisJLyogTWFrZSBz dXJlIHdlIGRvbid0IHBhcmFsbGVsIHVwZGF0ZSBvbiBhIGZhdWx0LCBub3IgbW92ZSBvciByZW1v dmUKKwkgKiBzb21ldGhpbmcgZnJvbSBiZW5lYXRoIG91ciBmZWV0CisJICovCisJcmV0ID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJ Z290byBvdXQ7CisKKwkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBwYWdlcyBhdHRhY2hlZCBub3cgKi8K KwlwYWdlcyA9IGdldF9wYWdlcyhvYmopOworCWlmIChJU19FUlIocGFnZXMpKSB7CisJCXJldCA9 IFBUUl9FUlIocGFnZXMpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJLyogV2UgZG9uJ3Qg dXNlIHZtZi0+cGdvZmYgc2luY2UgdGhhdCBoYXMgdGhlIGZha2Ugb2Zmc2V0OiAqLworCXBnb2Zm ID0gKCh1bnNpZ25lZCBsb25nKXZtZi0+dmlydHVhbF9hZGRyZXNzIC0KKwkJCXZtYS0+dm1fc3Rh cnQpID4+IFBBR0VfU0hJRlQ7CisKKwlwZm4gPSBwYWdlX3RvX3BmbihwYWdlc1twZ29mZl0pOwor CisJVkVSQigiSW5zZXJ0aW5nICVwIHBmbiAlbHgsIHBhICVseCIsIHZtZi0+dmlydHVhbF9hZGRy ZXNzLAorCQkJcGZuLCBwZm4gPDwgUEFHRV9TSElGVCk7CisKKwlyZXQgPSB2bV9pbnNlcnRfbWl4 ZWQodm1hLCAodW5zaWduZWQgbG9uZyl2bWYtPnZpcnR1YWxfYWRkcmVzcywgcGZuKTsKKworb3V0 X3VubG9jazoKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKK291dDoKKwlzd2l0 Y2ggKHJldCkgeworCWNhc2UgLUVBR0FJTjoKKwljYXNlIDA6CisJY2FzZSAtRVJFU1RBUlRTWVM6 CisJY2FzZSAtRUlOVFI6CisJY2FzZSAtRUJVU1k6CisJCS8qCisJCSAqIEVCVVNZIGlzIG9rOiB0 aGlzIGp1c3QgbWVhbnMgdGhhdCBhbm90aGVyIHRocmVhZAorCQkgKiBhbHJlYWR5IGRpZCB0aGUg am9iLgorCQkgKi8KKwkJcmV0dXJuIFZNX0ZBVUxUX05PUEFHRTsKKwljYXNlIC1FTk9NRU06CisJ CXJldHVybiBWTV9GQVVMVF9PT007CisJZGVmYXVsdDoKKwkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JV UzsKKwl9Cit9CisKKy8qKiBnZXQgbW1hcCBvZmZzZXQgKi8KK3N0YXRpYyB1aW50NjRfdCBtbWFw X29mZnNldChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gb2JqLT5kZXY7CisJaW50IHJldDsKKworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tl ZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKKworCS8qIE1ha2UgaXQgbW1hcGFibGUgKi8KKwlyZXQg PSBkcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldChvYmopOworCisJaWYgKHJldCkgeworCQlkZXZf ZXJyKGRldi0+ZGV2LCAiY291bGQgbm90IGFsbG9jYXRlIG1tYXAgb2Zmc2V0XG4iKTsKKwkJcmV0 dXJuIDA7CisJfQorCisJcmV0dXJuIGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmb2JqLT52bWFf bm9kZSk7Cit9CisKK3VpbnQ2NF90IG1zbV9nZW1fbW1hcF9vZmZzZXQoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopCit7CisJdWludDY0X3Qgb2Zmc2V0OworCW11dGV4X2xvY2soJm9iai0+ZGV2 LT5zdHJ1Y3RfbXV0ZXgpOworCW9mZnNldCA9IG1tYXBfb2Zmc2V0KG9iaik7CisJbXV0ZXhfdW5s b2NrKCZvYmotPmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1cm4gb2Zmc2V0OworfQorCisvKiBz aG91bGQgYmUgY2FsbGVkIHVuZGVyIHN0cnVjdF9tdXRleC4uIGFsdGhvdWdoIGl0IGNhbiBiZSBj YWxsZWQKKyAqIGZyb20gYXRvbWljIGNvbnRleHQgd2l0aG91dCBzdHJ1Y3RfbXV0ZXggdG8gYWNx dWlyZSBhbiBleHRyYQorICogaW92YSByZWYgaWYgeW91IGtub3cgb25lIGlzIGFscmVhZHkgaGVs ZC4KKyAqCisgKiBUaGF0IG1lYW5zIHdoZW4gSSBkbyBldmVudHVhbGx5IG5lZWQgdG8gYWRkIHN1 cHBvcnQgZm9yIHVucGlubmluZworICogdGhlIHJlZmNudCBjb3VudGVyIG5lZWRzIHRvIGJlIGF0 b21pY190LgorICovCitpbnQgZXRuYXZpdl9nZW1fZ2V0X2lvdmFfbG9ja2VkKHN0cnVjdCBldG5h dml2X2dwdSAqIGdwdSwgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisJCXVpbnQzMl90ICpp b3ZhKQoreworCXN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0bmF2aXZfb2JqID0gdG9fZXRu YXZpdl9ibyhvYmopOworCWludCByZXQgPSAwOworCisJaWYgKCFldG5hdml2X29iai0+aW92YSAg JiYgIShldG5hdml2X29iai0+ZmxhZ3MgJiBFVE5BX0JPX0NNRFNUUkVBTSkpIHsKKwkJc3RydWN0 IGV0bmF2aXZfZHJtX3ByaXZhdGUgKnByaXYgPSBvYmotPmRldi0+ZGV2X3ByaXZhdGU7CisJCXN0 cnVjdCBldG5hdml2X2lvbW11ICptbXUgPSBwcml2LT5tbXU7CisJCXN0cnVjdCBwYWdlICoqcGFn ZXMgPSBnZXRfcGFnZXMob2JqKTsKKwkJdWludDMyX3Qgb2Zmc2V0OworCQlzdHJ1Y3QgZHJtX21t X25vZGUgKm5vZGUgPSBOVUxMOworCisJCWlmIChJU19FUlIocGFnZXMpKQorCQkJcmV0dXJuIFBU Ul9FUlIocGFnZXMpOworCisJCW5vZGUgPSBremFsbG9jKHNpemVvZigqbm9kZSksIEdGUF9LRVJO RUwpOworCQlpZiAoIW5vZGUpCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQlyZXQgPSBkcm1fbW1f aW5zZXJ0X25vZGUoJmdwdS0+bW0sIG5vZGUsIG9iai0+c2l6ZSwgMCwKKwkJCQlEUk1fTU1fU0VB UkNIX0RFRkFVTFQpOworCisJCWlmICghcmV0KSB7CisJCQlvZmZzZXQgPSBub2RlLT5zdGFydDsK KwkJCWV0bmF2aXZfb2JqLT5pb3ZhID0gb2Zmc2V0OworCQkJZXRuYXZpdl9vYmotPmdwdV92cmFt X25vZGUgPSBub2RlOworCisJCQlyZXQgPSBldG5hdml2X2lvbW11X21hcChtbXUsIG9mZnNldCwg ZXRuYXZpdl9vYmotPnNndCwKKwkJCQkJb2JqLT5zaXplLCBJT01NVV9SRUFEIHwgSU9NTVVfV1JJ VEUpOworCQl9IGVsc2UKKwkJCWtmcmVlKG5vZGUpOworCX0KKworCWlmICghcmV0KQorCQkqaW92 YSA9IGV0bmF2aXZfb2JqLT5pb3ZhOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGV0bmF2aXZf Z2VtX2dldF9pb3ZhKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCBzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaiwgaW50IGlkLCB1aW50MzJfdCAqaW92YSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9nZW1f b2JqZWN0ICpldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsKKwlpbnQgcmV0OworCisJ LyogdGhpcyBpcyBzYWZlIHJpZ2h0IG5vdyBiZWNhdXNlIHdlIGRvbid0IHVubWFwIHVudGlsIHRo ZQorCSAqIGJvIGlzIGRlbGV0ZWQ6CisJICovCisJaWYgKGV0bmF2aXZfb2JqLT5pb3ZhKSB7CisJ CSppb3ZhID0gZXRuYXZpdl9vYmotPmlvdmE7CisJCXJldHVybiAwOworCX0KKworCW11dGV4X2xv Y2soJm9iai0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldCA9IGV0bmF2aXZfZ2VtX2dldF9pb3Zh X2xvY2tlZChncHUsIG9iaiwgaW92YSk7CisJbXV0ZXhfdW5sb2NrKCZvYmotPmRldi0+c3RydWN0 X211dGV4KTsKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIGV0bmF2aXZfZ2VtX3B1dF9pb3ZhKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCS8vIFhYWCBUT0RPIC4uCisJLy8gTk9URTog cHJvYmFibHkgZG9uJ3QgbmVlZCBhIF9sb2NrZWQoKSB2ZXJzaW9uLi4gd2Ugd291bGRuJ3QKKwkv LyBub3JtYWxseSB1bm1hcCBoZXJlLCBidXQgaW5zdGVhZCBqdXN0IG1hcmsgdGhhdCBpdCBjb3Vs ZCBiZQorCS8vIHVubWFwcGVkIChpZiB0aGUgaW92YSByZWZjbnQgZHJvcHMgdG8gemVybyksIGJ1 dCB0aGVuIGxhdGVyCisJLy8gaWYgYW5vdGhlciBfZ2V0X2lvdmFfbG9ja2VkKCkgZmFpbHMgd2Ug Y2FuIHN0YXJ0IHVubWFwcGluZworCS8vIHRoaW5ncyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVk Li4KK30KKworaW50IG1zbV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLCBz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFy Z3MpCit7CisJYXJncy0+cGl0Y2ggPSBhbGlnbl9waXRjaChhcmdzLT53aWR0aCwgYXJncy0+YnBw KTsKKwlhcmdzLT5zaXplICA9IFBBR0VfQUxJR04oYXJncy0+cGl0Y2ggKiBhcmdzLT5oZWlnaHQp OworCS8qIFRPRE86IHJlLWNoZWNrIGZsYWdzICovCisJcmV0dXJuIGV0bmF2aXZfZ2VtX25ld19o YW5kbGUoZGV2LCBmaWxlLCBhcmdzLT5zaXplLAorCQkJRVROQV9CT19XQywgJmFyZ3MtPmhhbmRs ZSk7Cit9CisKK2ludCBtc21fZ2VtX2R1bWJfbWFwX29mZnNldChzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCXVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qg Km9mZnNldCkKK3sKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlpbnQgcmV0ID0gMDsK KworCS8qIEdFTSBkb2VzIGFsbCBvdXIgaGFuZGxlIHRvIG9iamVjdCBtYXBwaW5nICovCisJb2Jq ID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZSwgaGFuZGxlKTsKKwlpZiAob2JqID09 IE5VTEwpIHsKKwkJcmV0ID0gLUVOT0VOVDsKKwkJZ290byBmYWlsOworCX0KKworCSpvZmZzZXQg PSBtc21fZ2VtX21tYXBfb2Zmc2V0KG9iaik7CisKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5j ZV91bmxvY2tlZChvYmopOworCitmYWlsOgorCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgKmV0bmF2 aXZfZ2VtX3ZhZGRyX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlzdHJ1 Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsK KwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJm9iai0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKKwlp ZiAoIWV0bmF2aXZfb2JqLT52YWRkcikgeworCQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gZ2V0X3Bh Z2VzKG9iaik7CisJCWlmIChJU19FUlIocGFnZXMpKQorCQkJcmV0dXJuIEVSUl9DQVNUKHBhZ2Vz KTsKKwkJZXRuYXZpdl9vYmotPnZhZGRyID0gdm1hcChwYWdlcywgb2JqLT5zaXplID4+IFBBR0Vf U0hJRlQsCisJCQkJVk1fTUFQLCBwZ3Byb3Rfd3JpdGVjb21iaW5lKFBBR0VfS0VSTkVMKSk7CisJ fQorCXJldHVybiBldG5hdml2X29iai0+dmFkZHI7Cit9CisKK3ZvaWQgKm1zbV9nZW1fdmFkZHIo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJdm9pZCAqcmV0OworCW11dGV4X2xvY2so Jm9iai0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldCA9IGV0bmF2aXZfZ2VtX3ZhZGRyX2xvY2tl ZChvYmopOworCW11dGV4X3VubG9jaygmb2JqLT5kZXYtPnN0cnVjdF9tdXRleCk7CisJcmV0dXJu IHJldDsKK30KKworZG1hX2FkZHJfdCBldG5hdml2X2dlbV9wYWRkcl9sb2NrZWQoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZp dl9vYmogPSB0b19ldG5hdml2X2JvKG9iaik7CisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZv YmotPmRldi0+c3RydWN0X211dGV4KSk7CisKKwlyZXR1cm4gZXRuYXZpdl9vYmotPnBhZGRyOwor fQorCit2b2lkIGV0bmF2aXZfZ2VtX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqLAorCQlzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSwgYm9vbCB3cml0ZSwgdWludDMyX3Qg ZmVuY2UpCit7CisJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmogPSB0b19l dG5hdml2X2JvKG9iaik7CisJZXRuYXZpdl9vYmotPmdwdSA9IGdwdTsKKwlpZiAod3JpdGUpCisJ CWV0bmF2aXZfb2JqLT53cml0ZV9mZW5jZSA9IGZlbmNlOworCWVsc2UKKwkJZXRuYXZpdl9vYmot PnJlYWRfZmVuY2UgPSBmZW5jZTsKKwlsaXN0X2RlbF9pbml0KCZldG5hdml2X29iai0+bW1fbGlz dCk7CisJbGlzdF9hZGRfdGFpbCgmZXRuYXZpdl9vYmotPm1tX2xpc3QsICZncHUtPmFjdGl2ZV9s aXN0KTsKK30KKwordm9pZCBldG5hdml2X2dlbV9tb3ZlX3RvX2luYWN0aXZlKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsK KwlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJ c3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmogPSB0b19ldG5hdml2X2JvKG9i aik7CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CisK KwlldG5hdml2X29iai0+Z3B1ID0gTlVMTDsKKwlldG5hdml2X29iai0+cmVhZF9mZW5jZSA9IDA7 CisJZXRuYXZpdl9vYmotPndyaXRlX2ZlbmNlID0gMDsKKwlsaXN0X2RlbF9pbml0KCZldG5hdml2 X29iai0+bW1fbGlzdCk7CisJbGlzdF9hZGRfdGFpbCgmZXRuYXZpdl9vYmotPm1tX2xpc3QsICZw cml2LT5pbmFjdGl2ZV9saXN0KTsKK30KKworaW50IGV0bmF2aXZfZ2VtX2NwdV9wcmVwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqLCB1aW50MzJfdCBvcCwKKwkJc3RydWN0IHRpbWVzcGVjICp0 aW1lb3V0KQoreworLyoKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7CisJc3Ry dWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmogPSB0b19ldG5hdml2X2JvKG9iaik7 CisqLworCWludCByZXQgPSAwOworCS8qIFRPRE8gKi8KKyNpZiAwCisJaWYgKGlzX2FjdGl2ZShl dG5hdml2X29iaikpIHsKKwkJdWludDMyX3QgZmVuY2UgPSAwOworCisJCWlmIChvcCAmIE1TTV9Q UkVQX1JFQUQpCisJCQlmZW5jZSA9IGV0bmF2aXZfb2JqLT53cml0ZV9mZW5jZTsKKwkJaWYgKG9w ICYgTVNNX1BSRVBfV1JJVEUpCisJCQlmZW5jZSA9IG1heChmZW5jZSwgZXRuYXZpdl9vYmotPnJl YWRfZmVuY2UpOworCQlpZiAob3AgJiBNU01fUFJFUF9OT1NZTkMpCisJCQl0aW1lb3V0ID0gTlVM TDsKKworCQlyZXQgPSBldG5hdml2X3dhaXRfZmVuY2VfaW50ZXJydXB0YWJsZShkZXYsIGZlbmNl LCB0aW1lb3V0KTsKKwl9CisKKwkvKiBUT0RPIGNhY2hlIG1haW50ZW5hbmNlICovCisjZW5kaWYK KwlyZXR1cm4gcmV0OworfQorCitpbnQgZXRuYXZpdl9nZW1fY3B1X2Zpbmkoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopCit7CisJLyogVE9ETyBjYWNoZSBtYWludGVuYW5jZSAqLworCXJldHVy biAwOworfQorCisjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCit2b2lkIG1zbV9nZW1fZGVzY3JpYmUo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBzZXFfZmlsZSAqbSkKK3sKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7CisJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVj dCAqZXRuYXZpdl9vYmogPSB0b19ldG5hdml2X2JvKG9iaik7CisJdWludDY0X3Qgb2ZmID0gZHJt X3ZtYV9ub2RlX3N0YXJ0KCZvYmotPnZtYV9ub2RlKTsKKworCVdBUk5fT04oIW11dGV4X2lzX2xv Y2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKKwlzZXFfcHJpbnRmKG0sICIlMDh4OiAlYyhyPSV1 LHc9JXUpICUyZCAoJTJkKSAlMDhsbHggJXAgJWRcbiIsCisJCQlldG5hdml2X29iai0+ZmxhZ3Ms IGlzX2FjdGl2ZShldG5hdml2X29iaikgPyAnQScgOiAnSScsCisJCQlldG5hdml2X29iai0+cmVh ZF9mZW5jZSwgZXRuYXZpdl9vYmotPndyaXRlX2ZlbmNlLAorCQkJb2JqLT5uYW1lLCBvYmotPnJl ZmNvdW50LnJlZmNvdW50LmNvdW50ZXIsCisJCQlvZmYsIGV0bmF2aXZfb2JqLT52YWRkciwgb2Jq LT5zaXplKTsKK30KKwordm9pZCBtc21fZ2VtX2Rlc2NyaWJlX29iamVjdHMoc3RydWN0IGxpc3Rf aGVhZCAqbGlzdCwgc3RydWN0IHNlcV9maWxlICptKQoreworCXN0cnVjdCBldG5hdml2X2dlbV9v YmplY3QgKmV0bmF2aXZfb2JqOworCWludCBjb3VudCA9IDA7CisJc2l6ZV90IHNpemUgPSAwOwor CisJbGlzdF9mb3JfZWFjaF9lbnRyeShldG5hdml2X29iaiwgbGlzdCwgbW1fbGlzdCkgeworCQlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZldG5hdml2X29iai0+YmFzZTsKKwkJc2VxX3B1 dHMobSwgIiAgICIpOworCQltc21fZ2VtX2Rlc2NyaWJlKG9iaiwgbSk7CisJCWNvdW50Kys7CisJ CXNpemUgKz0gb2JqLT5zaXplOworCX0KKworCXNlcV9wcmludGYobSwgIlRvdGFsICVkIG9iamVj dHMsICV6dSBieXRlc1xuIiwgY291bnQsIHNpemUpOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lk IGV0bmF2aXZfZnJlZV9jbWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0 IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmogPSB0b19ldG5hdml2X2JvKG9iaik7CisK Kwlkcm1fZ2VtX2ZyZWVfbW1hcF9vZmZzZXQob2JqKTsKKworCWRtYV9mcmVlX2NvaGVyZW50KG9i ai0+ZGV2LT5kZXYsIG9iai0+c2l6ZSwKKwkJZXRuYXZpdl9vYmotPnZhZGRyLCBldG5hdml2X29i ai0+cGFkZHIpOworCisJZHJtX2dlbV9vYmplY3RfcmVsZWFzZShvYmopOworfQorCitzdGF0aWMg dm9pZCBldG5hdml2X2ZyZWVfb2JqKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCXN0 cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0bmF2aXZfb2JqID0gdG9fZXRuYXZpdl9ibyhvYmop OworCXN0cnVjdCBldG5hdml2X2RybV9wcml2YXRlICpwcml2ID0gb2JqLT5kZXYtPmRldl9wcml2 YXRlOworCXN0cnVjdCBldG5hdml2X2lvbW11ICptbXUgPSBwcml2LT5tbXU7CisKKwlpZiAobW11 ICYmIGV0bmF2aXZfb2JqLT5pb3ZhKSB7CisJCXVpbnQzMl90IG9mZnNldCA9IGV0bmF2aXZfb2Jq LT5ncHVfdnJhbV9ub2RlLT5zdGFydDsKKwkJZXRuYXZpdl9pb21tdV91bm1hcChtbXUsIG9mZnNl dCwgZXRuYXZpdl9vYmotPnNndCwgb2JqLT5zaXplKTsKKwkJZHJtX21tX3JlbW92ZV9ub2RlKGV0 bmF2aXZfb2JqLT5ncHVfdnJhbV9ub2RlKTsKKwkJa2ZyZWUoZXRuYXZpdl9vYmotPmdwdV92cmFt X25vZGUpOworCX0KKworCWRybV9nZW1fZnJlZV9tbWFwX29mZnNldChvYmopOworCisJaWYgKG9i ai0+aW1wb3J0X2F0dGFjaCkgeworCQlpZiAoZXRuYXZpdl9vYmotPnZhZGRyKQorCQkJZG1hX2J1 Zl92dW5tYXAob2JqLT5pbXBvcnRfYXR0YWNoLT5kbWFidWYsIGV0bmF2aXZfb2JqLT52YWRkcik7 CisKKwkJLyogRG9uJ3QgZHJvcCB0aGUgcGFnZXMgZm9yIGltcG9ydGVkIGRtYWJ1ZiwgYXMgdGhl eSBhcmUgbm90CisJCSAqIG91cnMsIGp1c3QgZnJlZSB0aGUgYXJyYXkgd2UgYWxsb2NhdGVkOgor CQkgKi8KKwkJaWYgKGV0bmF2aXZfb2JqLT5wYWdlcykKKwkJCWRybV9mcmVlX2xhcmdlKGV0bmF2 aXZfb2JqLT5wYWdlcyk7CisKKwl9IGVsc2UgeworCQlpZiAoZXRuYXZpdl9vYmotPnZhZGRyKQor CQkJdnVubWFwKGV0bmF2aXZfb2JqLT52YWRkcik7CisJCXB1dF9wYWdlcyhvYmopOworCX0KKwor CWlmIChldG5hdml2X29iai0+cmVzdiA9PSAmZXRuYXZpdl9vYmotPl9yZXN2KQorCQlyZXNlcnZh dGlvbl9vYmplY3RfZmluaShldG5hdml2X29iai0+cmVzdik7CisKKwlkcm1fZ2VtX29iamVjdF9y ZWxlYXNlKG9iaik7Cit9CisKK3ZvaWQgZXRuYXZpdl9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2 OworCXN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKmV0bmF2aXZfb2JqID0gdG9fZXRuYXZpdl9i byhvYmopOworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkp OworCisJLyogb2JqZWN0IHNob3VsZCBub3QgYmUgb24gYWN0aXZlIGxpc3Q6ICovCisJV0FSTl9P Tihpc19hY3RpdmUoZXRuYXZpdl9vYmopKTsKKworCWxpc3RfZGVsKCZldG5hdml2X29iai0+bW1f bGlzdCk7CisKKwlpZiAoZXRuYXZpdl9vYmotPmZsYWdzICYgRVROQV9CT19DTURTVFJFQU0pCisJ CWV0bmF2aXZfZnJlZV9jbWQob2JqKTsKKwllbHNlCisJCWV0bmF2aXZfZnJlZV9vYmoob2JqKTsK KworCWtmcmVlKGV0bmF2aXZfb2JqKTsKK30KKworLyogY29udmVuaWVuY2UgbWV0aG9kIHRvIGNv bnN0cnVjdCBhIEdFTSBidWZmZXIgb2JqZWN0LCBhbmQgdXNlcnNwYWNlIGhhbmRsZSAqLworaW50 IGV0bmF2aXZfZ2VtX25ld19oYW5kbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRy bV9maWxlICpmaWxlLAorCQl1aW50MzJfdCBzaXplLCB1aW50MzJfdCBmbGFncywgdWludDMyX3Qg KmhhbmRsZSkKK3sKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwlpbnQgcmV0OworCisJ cmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCW9iaiA9IGV0bmF2aXZfZ2VtX25ldyhkZXYsIHNpemUs IGZsYWdzKTsKKworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKElT X0VSUihvYmopKQorCQlyZXR1cm4gUFRSX0VSUihvYmopOworCisJcmV0ID0gZHJtX2dlbV9oYW5k bGVfY3JlYXRlKGZpbGUsIG9iaiwgaGFuZGxlKTsKKworCS8qIGRyb3AgcmVmZXJlbmNlIGZyb20g YWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQgbm93ICovCisJZHJtX2dlbV9vYmplY3RfdW5yZWZl cmVuY2VfdW5sb2NrZWQob2JqKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZXRu YXZpdl9nZW1fbmV3X2ltcGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJdWludDMyX3Qgc2l6 ZSwgdWludDMyX3QgZmxhZ3MsCisJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKm9iaikKK3sKKwlz dHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3Ry dWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmo7CisJdW5zaWduZWQgc3ogPSBzaXpl b2YoKmV0bmF2aXZfb2JqKTsKKwlib29sIHZhbGlkID0gdHJ1ZTsKKworCS8qIHZhbGlkYXRlIGZs YWdzICovCisJaWYgKGZsYWdzICYgRVROQV9CT19DTURTVFJFQU0pIHsKKwkJaWYgKChmbGFncyAm IEVUTkFfQk9fQ0FDSEVfTUFTSykgIT0gMCkKKwkJCXZhbGlkID0gZmFsc2U7CisJfSBlbHNlIHsK KwkJc3dpdGNoIChmbGFncyAmIEVUTkFfQk9fQ0FDSEVfTUFTSykgeworCQljYXNlIEVUTkFfQk9f VU5DQUNIRUQ6CisJCWNhc2UgRVROQV9CT19DQUNIRUQ6CisJCWNhc2UgRVROQV9CT19XQzoKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJdmFsaWQgPSBmYWxzZTsKKwkJfQorCX0KKworCWlmICgh dmFsaWQpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgImludmFsaWQgY2FjaGUgZmxhZzogJXggKGNt ZDogJWQpXG4iLAorCQkJCShmbGFncyAmIEVUTkFfQk9fQ0FDSEVfTUFTSyksCisJCQkJKGZsYWdz ICYgRVROQV9CT19DTURTVFJFQU0pKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZXRuYXZp dl9vYmogPSBremFsbG9jKHN6LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWV0bmF2aXZfb2JqKQorCQly ZXR1cm4gLUVOT01FTTsKKworCWlmIChmbGFncyAmIEVUTkFfQk9fQ01EU1RSRUFNKSB7CisJCWV0 bmF2aXZfb2JqLT52YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYtPmRldiwgc2l6ZSwKKwkJ CQkmZXRuYXZpdl9vYmotPnBhZGRyLCBHRlBfS0VSTkVMKTsKKworCQlpZiAoIWV0bmF2aXZfb2Jq LT52YWRkcikgeworCQkJa2ZyZWUoZXRuYXZpdl9vYmopOworCQkJcmV0dXJuIC1FTk9NRU07CisJ CX0KKwl9CisKKwlldG5hdml2X29iai0+ZmxhZ3MgPSBmbGFnczsKKworCWV0bmF2aXZfb2JqLT5y ZXN2ID0gJmV0bmF2aXZfb2JqLT5fcmVzdjsKKwlyZXNlcnZhdGlvbl9vYmplY3RfaW5pdChldG5h dml2X29iai0+cmVzdik7CisKKwlJTklUX0xJU1RfSEVBRCgmZXRuYXZpdl9vYmotPnN1Ym1pdF9l bnRyeSk7CisJbGlzdF9hZGRfdGFpbCgmZXRuYXZpdl9vYmotPm1tX2xpc3QsICZwcml2LT5pbmFj dGl2ZV9saXN0KTsKKworCSpvYmogPSAmZXRuYXZpdl9vYmotPmJhc2U7CisKKwlyZXR1cm4gMDsK K30KKworc3RydWN0IGRybV9nZW1fb2JqZWN0ICpldG5hdml2X2dlbV9uZXcoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKKwkJdWludDMyX3Qgc2l6ZSwgdWludDMyX3QgZmxhZ3MpCit7CisJc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmogPSBOVUxMOworCWludCByZXQ7CisKKwlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7CisKKwlzaXplID0gUEFHRV9BTElHTihz aXplKTsKKworCXJldCA9IGV0bmF2aXZfZ2VtX25ld19pbXBsKGRldiwgc2l6ZSwgZmxhZ3MsICZv YmopOworCWlmIChyZXQpCisJCWdvdG8gZmFpbDsKKworCXJldCA9IDA7CisJaWYgKGZsYWdzICYg RVROQV9CT19DTURTVFJFQU0pCisJCWRybV9nZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsIG9i aiwgc2l6ZSk7CisJZWxzZQorCQlyZXQgPSBkcm1fZ2VtX29iamVjdF9pbml0KGRldiwgb2JqLCBz aXplKTsKKworCWlmIChyZXQpCisJCWdvdG8gZmFpbDsKKworCXJldHVybiBvYmo7CisKK2ZhaWw6 CisJaWYgKG9iaikKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uob2JqKTsKKworCXJldHVy biBFUlJfUFRSKHJldCk7Cit9CisKK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqbXNtX2dlbV9pbXBv cnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJdWludDMyX3Qgc2l6ZSwgc3RydWN0IHNnX3Rh YmxlICpzZ3QpCit7CisJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmo7CisJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7CisJaW50IHJldCwgbnBhZ2VzOworCisJc2l6ZSA9 IFBBR0VfQUxJR04oc2l6ZSk7CisKKwlyZXQgPSBldG5hdml2X2dlbV9uZXdfaW1wbChkZXYsIHNp emUsIEVUTkFfQk9fV0MsICZvYmopOworCWlmIChyZXQpCisJCWdvdG8gZmFpbDsKKworCWRybV9n ZW1fcHJpdmF0ZV9vYmplY3RfaW5pdChkZXYsIG9iaiwgc2l6ZSk7CisKKwlucGFnZXMgPSBzaXpl IC8gUEFHRV9TSVpFOworCisJZXRuYXZpdl9vYmogPSB0b19ldG5hdml2X2JvKG9iaik7CisJZXRu YXZpdl9vYmotPnNndCA9IHNndDsKKwlldG5hdml2X29iai0+cGFnZXMgPSBkcm1fbWFsbG9jX2Fi KG5wYWdlcywgc2l6ZW9mKHN0cnVjdCBwYWdlICopKTsKKwlpZiAoIWV0bmF2aXZfb2JqLT5wYWdl cykgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGZhaWw7CisJfQorCisJcmV0ID0gZHJtX3By aW1lX3NnX3RvX3BhZ2VfYWRkcl9hcnJheXMoc2d0LCBldG5hdml2X29iai0+cGFnZXMsIE5VTEws IG5wYWdlcyk7CisJaWYgKHJldCkKKwkJZ290byBmYWlsOworCisJcmV0dXJuIG9iajsKKworZmFp bDoKKwlpZiAob2JqKQorCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmop OworCisJcmV0dXJuIEVSUl9QVFIocmV0KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2lu Zy9ldG5hdml2L2V0bmF2aXZfZ2VtLmggYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2 X2dlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTk3ZmY4MjMz ZmIxCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9n ZW0uaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWQgSGF0 CisgKiBBdXRob3I6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcgd2l0aAorICogdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgX19FVE5BVklWX0dFTV9IX18KKyNkZWZpbmUg X19FVE5BVklWX0dFTV9IX18KKworI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CisjaW5j bHVkZSAiZXRuYXZpdl9kcnYuaCIKKworc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCB7CisJc3Ry dWN0IGRybV9nZW1fb2JqZWN0IGJhc2U7CisKKwl1aW50MzJfdCBmbGFnczsKKworCS8qIEFuZCBv YmplY3QgaXMgZWl0aGVyOgorCSAqICBpbmFjdGl2ZSAtIG9uIHByaXYtPmluYWN0aXZlX2xpc3QK KwkgKiAgYWN0aXZlICAgLSBvbiBvbmUgb25lIG9mIHRoZSBncHUncyBhY3RpdmVfbGlzdC4uICB3 ZWxsLCBhdAorCSAqICAgICBsZWFzdCBmb3Igbm93IHdlIGRvbid0IGhhdmUgKEkgZG9uJ3QgdGhp bmspIGh3IHN5bmMgYmV0d2VlbgorCSAqICAgICAyZCBhbmQgM2Qgb25lIGRldmljZXMgd2hpY2gg aGF2ZSBib3RoLCBtZWFuaW5nIHdlIG5lZWQgdG8KKwkgKiAgICAgYmxvY2sgb24gc3VibWl0IGlm IGEgYm8gaXMgYWxyZWFkeSBvbiBvdGhlciByaW5nCisJICoKKwkgKi8KKwlzdHJ1Y3QgbGlzdF9o ZWFkIG1tX2xpc3Q7CisJc3RydWN0IGV0bmF2aXZfZ3B1ICpncHU7ICAgICAvKiBub24tbnVsbCBp ZiBhY3RpdmUgKi8KKwl1aW50MzJfdCByZWFkX2ZlbmNlLCB3cml0ZV9mZW5jZTsKKworCS8qIFRy YW5zaWVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHN1Ym1pdCBpb2N0bCwgb2JqZWN0cyBhc3NvY2lh dGVkCisJICogd2l0aCB0aGUgc3VibWl0IGFyZSBvbiBzdWJtaXQtPmJvX2xpc3QuLiB0aGlzIG9u bHkgbGFzdHMgZm9yCisJICogdGhlIGR1cmF0aW9uIG9mIHRoZSBpb2N0bCwgc28gb25lIGJvIGNh biBuZXZlciBiZSBvbiBtdWx0aXBsZQorCSAqIHN1Ym1pdCBsaXN0cy4KKwkgKi8KKwlzdHJ1Y3Qg bGlzdF9oZWFkIHN1Ym1pdF9lbnRyeTsKKworCXN0cnVjdCBwYWdlICoqcGFnZXM7CisJc3RydWN0 IHNnX3RhYmxlICpzZ3Q7CisJdm9pZCAqdmFkZHI7CisJdWludDMyX3QgaW92YTsKKworCS8qIGZv ciBFVE5BX0JPX0NNRFNUUkVBTSAqLworCWRtYV9hZGRyX3QgcGFkZHI7CisKKwkvKiBub3JtYWxs eSAocmVzdiA9PSAmX3Jlc3YpIGV4Y2VwdCBmb3IgaW1wb3J0ZWQgYm8ncyAqLworCXN0cnVjdCBy ZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCBfcmVz djsKKworCXN0cnVjdCBkcm1fbW1fbm9kZSAqZ3B1X3ZyYW1fbm9kZTsKKworCS8qIGZvciBidWZm ZXIgbWFuaXB1bGF0aW9uIGR1cmluZyBzdWJtaXQgKi8KKwl1MzIgb2Zmc2V0OworfTsKKyNkZWZp bmUgdG9fZXRuYXZpdl9ibyh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGV0bmF2aXZfZ2VtX29i amVjdCwgYmFzZSkKKworc3RhdGljIGlubGluZSBib29sIGlzX2FjdGl2ZShzdHJ1Y3QgZXRuYXZp dl9nZW1fb2JqZWN0ICpldG5hdml2X29iaikKK3sKKwlyZXR1cm4gZXRuYXZpdl9vYmotPmdwdSAh PSBOVUxMOworfQorCisjZGVmaW5lIE1BWF9DTURTIDQKKworLyogQ3JlYXRlZCBwZXIgc3VibWl0 LWlvY3RsLCB0byB0cmFjayBibydzIGFuZCBjbWRzdHJlYW0gYnVmcywgZXRjLAorICogYXNzb2Np YXRlZCB3aXRoIHRoZSBjbWRzdHJlYW0gc3VibWlzc2lvbiBmb3Igc3luY2hyb25pemF0aW9uIChh bmQKKyAqIG1ha2UgaXQgZWFzaWVyIHRvIHVud2luZCB3aGVuIHRoaW5ncyBnbyB3cm9uZywgZXRj KS4gIFRoaXMgb25seQorICogbGFzdHMgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgc3VibWl0LWlv Y3RsLgorICovCitzdHJ1Y3QgZXRuYXZpdl9nZW1fc3VibWl0IHsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2OworCXN0cnVjdCBldG5hdml2X2dwdSAqZ3B1OworCXN0cnVjdCBsaXN0X2hlYWQgYm9f bGlzdDsKKwlzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggdGlja2V0OworCXVpbnQzMl90IGZlbmNlOwor CWJvb2wgdmFsaWQ7CisJdW5zaWduZWQgaW50IG5yX2NtZHM7CisJdW5zaWduZWQgaW50IG5yX2Jv czsKKwlzdHJ1Y3QgeworCQl1aW50MzJfdCB0eXBlOworCQl1aW50MzJfdCBzaXplOyAgLyogaW4g ZHdvcmRzICovCisJCXN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKm9iajsKKwl9IGNtZFtNQVhf Q01EU107CisJc3RydWN0IHsKKwkJdWludDMyX3QgZmxhZ3M7CisJCXN0cnVjdCBldG5hdml2X2dl bV9vYmplY3QgKm9iajsKKwkJdWludDMyX3QgaW92YTsKKwl9IGJvc1swXTsKK307CisKKyNlbmRp ZiAvKiBfX0VUTkFWSVZfR0VNX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0 bmF2aXYvZXRuYXZpdl9nZW1fcHJpbWUuYyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2 aXZfZ2VtX3ByaW1lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43 OGRkODQzYThlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9l dG5hdml2X2dlbV9wcmltZS5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp IDIwMTMgUmVkIEhhdAorICogQXV0aG9yOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+ CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSAiZXRuYXZpdl9kcnYu aCIKKyNpbmNsdWRlICJldG5hdml2X2dlbS5oIgorCisKK3N0cnVjdCBzZ190YWJsZSAqbXNtX2dl bV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCit7CisJc3Ry dWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmo9IHRvX2V0bmF2aXZfYm8ob2JqKTsK KwlCVUdfT04oIWV0bmF2aXZfb2JqLT5zZ3QpOyAgLyogc2hvdWxkIGhhdmUgYWxyZWFkeSBwaW5u ZWQhICovCisJcmV0dXJuIGV0bmF2aXZfb2JqLT5zZ3Q7Cit9CisKK3ZvaWQgKm1zbV9nZW1fcHJp bWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlyZXR1cm4gbXNtX2dlbV92 YWRkcihvYmopOworfQorCit2b2lkIG1zbV9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKK3sKKwkvKiBUT0RPIG1zbV9nZW1fdnVubWFwKCkg Ki8KK30KKworc3RydWN0IGRybV9nZW1fb2JqZWN0ICptc21fZ2VtX3ByaW1lX2ltcG9ydF9zZ190 YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzaXplX3Qgc2l6ZSwgc3RydWN0IHNnX3Rh YmxlICpzZykKK3sKKwlyZXR1cm4gbXNtX2dlbV9pbXBvcnQoZGV2LCBzaXplLCBzZyk7Cit9CisK K2ludCBtc21fZ2VtX3ByaW1lX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlp ZiAoIW9iai0+aW1wb3J0X2F0dGFjaCkKKwkJZXRuYXZpdl9nZW1fZ2V0X3BhZ2VzKG9iaik7CisJ cmV0dXJuIDA7Cit9CisKK3ZvaWQgbXNtX2dlbV9wcmltZV91bnBpbihzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaikKK3sKKwlpZiAoIW9iai0+aW1wb3J0X2F0dGFjaCkKKwkJbXNtX2dlbV9wdXRf cGFnZXMob2JqKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2 aXZfZ2VtX3N1Ym1pdC5jIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9nZW1fc3Vi bWl0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZDg3ZmRmZTdh YjUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2dl bV9zdWJtaXQuYwpAQCAtMCwwICsxLDQwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBS ZWQgSGF0CisgKiBBdXRob3I6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlICJldG5hdml2X2Rydi5oIgorI2lu Y2x1ZGUgImV0bmF2aXZfZ3B1LmgiCisjaW5jbHVkZSAiZXRuYXZpdl9nZW0uaCIKKworLyoKKyAq IENtZHN0cmVhbSBzdWJtaXNzaW9uOgorICovCisKKyNkZWZpbmUgQk9fSU5WQUxJRF9GTEFHUyB+ KEVUTkFfU1VCTUlUX0JPX1JFQUQgfCBFVE5BX1NVQk1JVF9CT19XUklURSkKKy8qIG1ha2Ugc3Vy ZSB0aGVzZSBkb24ndCBjb25mbGljdCB3LyBNU01fU1VCTUlUX0JPX3ggKi8KKyNkZWZpbmUgQk9f VkFMSUQgICAgMHg4MDAwCisjZGVmaW5lIEJPX0xPQ0tFRCAgIDB4NDAwMAorI2RlZmluZSBCT19Q SU5ORUQgICAweDIwMDAKKworc3RhdGljIGlubGluZSB2b2lkIF9fdXNlciAqdG9fdXNlcl9wdHIo dTY0IGFkZHJlc3MpCit7CisJcmV0dXJuICh2b2lkIF9fdXNlciAqKSh1aW50cHRyX3QpYWRkcmVz czsKK30KKworc3RhdGljIHN0cnVjdCBldG5hdml2X2dlbV9zdWJtaXQgKnN1Ym1pdF9jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIGludCBu cikKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9nZW1fc3VibWl0ICpzdWJtaXQ7CisJaW50IHN6ID0gc2l6 ZW9mKCpzdWJtaXQpICsgKG5yICogc2l6ZW9mKHN1Ym1pdC0+Ym9zWzBdKSk7CisKKwlzdWJtaXQg PSBrbWFsbG9jKHN6LCBHRlBfVEVNUE9SQVJZIHwgX19HRlBfTk9XQVJOIHwgX19HRlBfTk9SRVRS WSk7CisJaWYgKHN1Ym1pdCkgeworCQlzdWJtaXQtPmRldiA9IGRldjsKKwkJc3VibWl0LT5ncHUg PSBncHU7CisKKwkJLyogaW5pdGlhbGx5LCB1bnRpbCBjb3B5X2Zyb21fdXNlcigpIGFuZCBibyBs b29rdXAgc3VjY2VlZHM6ICovCisJCXN1Ym1pdC0+bnJfYm9zID0gMDsKKwkJc3VibWl0LT5ucl9j bWRzID0gMDsKKworCQlJTklUX0xJU1RfSEVBRCgmc3VibWl0LT5ib19saXN0KTsKKwkJd3dfYWNx dWlyZV9pbml0KCZzdWJtaXQtPnRpY2tldCwgJnJlc2VydmF0aW9uX3d3X2NsYXNzKTsKKwl9CisK KwlyZXR1cm4gc3VibWl0OworfQorCitzdGF0aWMgaW50IHN1Ym1pdF9sb29rdXBfb2JqZWN0cyhz dHJ1Y3QgZXRuYXZpdl9nZW1fc3VibWl0ICpzdWJtaXQsCisJCXN0cnVjdCBkcm1fZXRuYXZpdl9n ZW1fc3VibWl0ICphcmdzLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJdW5zaWduZWQgaTsK KwlpbnQgcmV0ID0gMDsKKworCXNwaW5fbG9jaygmZmlsZS0+dGFibGVfbG9jayk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgYXJncy0+bnJfYm9zOyBpKyspIHsKKwkJc3RydWN0IGRybV9ldG5hdml2X2dl bV9zdWJtaXRfYm8gc3VibWl0X2JvOworCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKKwkJ c3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmo7CisJCXZvaWQgX191c2VyICp1 c2VycHRyID0KKwkJCXRvX3VzZXJfcHRyKGFyZ3MtPmJvcyArIChpICogc2l6ZW9mKHN1Ym1pdF9i bykpKTsKKworCQlyZXQgPSBjb3B5X2Zyb21fdXNlcigmc3VibWl0X2JvLCB1c2VycHRyLCBzaXpl b2Yoc3VibWl0X2JvKSk7CisJCWlmIChyZXQpIHsKKwkJCXJldCA9IC1FRkFVTFQ7CisJCQlnb3Rv IG91dF91bmxvY2s7CisJCX0KKworCQlpZiAoc3VibWl0X2JvLmZsYWdzICYgQk9fSU5WQUxJRF9G TEFHUykgeworCQkJRFJNX0VSUk9SKCJpbnZhbGlkIGZsYWdzOiAleFxuIiwgc3VibWl0X2JvLmZs YWdzKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQlnb3RvIG91dF91bmxvY2s7CisJCX0KKworCQlz dWJtaXQtPmJvc1tpXS5mbGFncyA9IHN1Ym1pdF9iby5mbGFnczsKKwkJLyogaW4gdmFsaWRhdGVf b2JqZWN0cygpIHdlIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyB0cnVlOiAqLworCQlzdWJtaXQtPmJv c1tpXS5pb3ZhICA9IHN1Ym1pdF9iby5wcmVzdW1lZDsKKworCQkvKiBub3JtYWxseSB1c2UgZHJt X2dlbV9vYmplY3RfbG9va3VwKCksIGJ1dCBmb3IgYnVsayBsb29rdXAKKwkJICogYWxsIHVuZGVy IHNpbmdsZSB0YWJsZV9sb2NrIGp1c3QgaGl0IG9iamVjdF9pZHIgZGlyZWN0bHk6CisJCSAqLwor CQlvYmogPSBpZHJfZmluZCgmZmlsZS0+b2JqZWN0X2lkciwgc3VibWl0X2JvLmhhbmRsZSk7CisJ CWlmICghb2JqKSB7CisJCQlEUk1fRVJST1IoImludmFsaWQgaGFuZGxlICV1IGF0IGluZGV4ICV1 XG4iLCBzdWJtaXRfYm8uaGFuZGxlLCBpKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQlnb3RvIG91 dF91bmxvY2s7CisJCX0KKworCQlldG5hdml2X29iaiA9IHRvX2V0bmF2aXZfYm8ob2JqKTsKKwor CQlpZiAoIWxpc3RfZW1wdHkoJmV0bmF2aXZfb2JqLT5zdWJtaXRfZW50cnkpKSB7CisJCQlEUk1f RVJST1IoImhhbmRsZSAldSBhdCBpbmRleCAldSBhbHJlYWR5IG9uIHN1Ym1pdCBsaXN0XG4iLAor CQkJCQlzdWJtaXRfYm8uaGFuZGxlLCBpKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQlnb3RvIG91 dF91bmxvY2s7CisJCX0KKworCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2JqKTsKKworCQlz dWJtaXQtPmJvc1tpXS5vYmogPSBldG5hdml2X29iajsKKworCQlsaXN0X2FkZF90YWlsKCZldG5h dml2X29iai0+c3VibWl0X2VudHJ5LCAmc3VibWl0LT5ib19saXN0KTsKKwl9CisKK291dF91bmxv Y2s6CisJc3VibWl0LT5ucl9ib3MgPSBpOworCXNwaW5fdW5sb2NrKCZmaWxlLT50YWJsZV9sb2Nr KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHN1Ym1pdF91bmxvY2tfdW5waW5f Ym8oc3RydWN0IGV0bmF2aXZfZ2VtX3N1Ym1pdCAqc3VibWl0LCBpbnQgaSkKK3sKKwlzdHJ1Y3Qg ZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHN1Ym1pdC0+Ym9zW2ldLm9iajsKKwor CWlmIChzdWJtaXQtPmJvc1tpXS5mbGFncyAmIEJPX1BJTk5FRCkKKwkJZXRuYXZpdl9nZW1fcHV0 X2lvdmEoJmV0bmF2aXZfb2JqLT5iYXNlKTsKKworCWlmIChzdWJtaXQtPmJvc1tpXS5mbGFncyAm IEJPX0xPQ0tFRCkKKwkJd3dfbXV0ZXhfdW5sb2NrKCZldG5hdml2X29iai0+cmVzdi0+bG9jayk7 CisKKwlpZiAoIShzdWJtaXQtPmJvc1tpXS5mbGFncyAmIEJPX1ZBTElEKSkKKwkJc3VibWl0LT5i b3NbaV0uaW92YSA9IDA7CisKKwlzdWJtaXQtPmJvc1tpXS5mbGFncyAmPSB+KEJPX0xPQ0tFRCB8 IEJPX1BJTk5FRCk7Cit9CisKKy8qIFRoaXMgaXMgd2hlcmUgd2UgbWFrZSBzdXJlIGFsbCB0aGUg Ym8ncyBhcmUgcmVzZXJ2ZWQgYW5kIHBpbidkOiAqLworc3RhdGljIGludCBzdWJtaXRfdmFsaWRh dGVfb2JqZWN0cyhzdHJ1Y3QgZXRuYXZpdl9nZW1fc3VibWl0ICpzdWJtaXQpCit7CisJaW50IGNv bnRlbmRlZCwgc2xvd19sb2NrZWQgPSAtMSwgaSwgcmV0ID0gMDsKKworcmV0cnk6CisJc3VibWl0 LT52YWxpZCA9IHRydWU7CisKKwlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykg eworCQlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHN1Ym1pdC0+Ym9z W2ldLm9iajsKKwkJdWludDMyX3QgaW92YTsKKworCQlpZiAoc2xvd19sb2NrZWQgPT0gaSkKKwkJ CXNsb3dfbG9ja2VkID0gLTE7CisKKwkJY29udGVuZGVkID0gaTsKKworCQlpZiAoIShzdWJtaXQt PmJvc1tpXS5mbGFncyAmIEJPX0xPQ0tFRCkpIHsKKwkJCXJldCA9IHd3X211dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmZXRuYXZpdl9vYmotPnJlc3YtPmxvY2ssCisJCQkJCSZzdWJtaXQtPnRpY2tl dCk7CisJCQlpZiAocmV0KQorCQkJCWdvdG8gZmFpbDsKKwkJCXN1Ym1pdC0+Ym9zW2ldLmZsYWdz IHw9IEJPX0xPQ0tFRDsKKwkJfQorCisKKwkJLyogaWYgbG9ja2luZyBzdWNjZWVkZWQsIHBpbiBi bzogKi8KKwkJcmV0ID0gZXRuYXZpdl9nZW1fZ2V0X2lvdmFfbG9ja2VkKHN1Ym1pdC0+Z3B1LCAm ZXRuYXZpdl9vYmotPmJhc2UsICZpb3ZhKTsKKworCQkvKiB0aGlzIHdvdWxkIGJyZWFrIHRoZSBs b2dpYyBpbiB0aGUgZmFpbCBwYXRoLi4gdGhlcmUgaXMgbm8KKwkJICogcmVhc29uIGZvciB0aGlz IHRvIGhhcHBlbiwgYnV0IGp1c3QgdG8gYmUgb24gdGhlIHNhZmUgc2lkZQorCQkgKiBsZXQncyBu b3RpY2UgaWYgdGhpcyBzdGFydHMgaGFwcGVuaW5nIGluIHRoZSBmdXR1cmU6CisJCSAqLworCQlX QVJOX09OKHJldCA9PSAtRURFQURMSyk7CisKKwkJaWYgKHJldCkKKwkJCWdvdG8gZmFpbDsKKwor CQlzdWJtaXQtPmJvc1tpXS5mbGFncyB8PSBCT19QSU5ORUQ7CisKKwkJaWYgKGlvdmEgPT0gc3Vi bWl0LT5ib3NbaV0uaW92YSkgeworCQkJc3VibWl0LT5ib3NbaV0uZmxhZ3MgfD0gQk9fVkFMSUQ7 CisJCX0gZWxzZSB7CisJCQlzdWJtaXQtPmJvc1tpXS5pb3ZhID0gaW92YTsKKwkJCXN1Ym1pdC0+ Ym9zW2ldLmZsYWdzICY9IH5CT19WQUxJRDsKKwkJCXN1Ym1pdC0+dmFsaWQgPSBmYWxzZTsKKwkJ fQorCX0KKworCXd3X2FjcXVpcmVfZG9uZSgmc3VibWl0LT50aWNrZXQpOworCisJcmV0dXJuIDA7 CisKK2ZhaWw6CisJZm9yICg7IGkgPj0gMDsgaS0tKQorCQlzdWJtaXRfdW5sb2NrX3VucGluX2Jv KHN1Ym1pdCwgaSk7CisKKwlpZiAoc2xvd19sb2NrZWQgPiAwKQorCQlzdWJtaXRfdW5sb2NrX3Vu cGluX2JvKHN1Ym1pdCwgc2xvd19sb2NrZWQpOworCisJaWYgKHJldCA9PSAtRURFQURMSykgewor CQlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHN1Ym1pdC0+Ym9zW2Nv bnRlbmRlZF0ub2JqOworCQkvKiB3ZSBsb3N0IG91dCBpbiBhIHNlcW5vIHJhY2UsIGxvY2sgYW5k IHJldHJ5Li4gKi8KKwkJcmV0ID0gd3dfbXV0ZXhfbG9ja19zbG93X2ludGVycnVwdGlibGUoJmV0 bmF2aXZfb2JqLT5yZXN2LT5sb2NrLAorCQkJCSZzdWJtaXQtPnRpY2tldCk7CisJCWlmICghcmV0 KSB7CisJCQlzdWJtaXQtPmJvc1tjb250ZW5kZWRdLmZsYWdzIHw9IEJPX0xPQ0tFRDsKKwkJCXNs b3dfbG9ja2VkID0gY29udGVuZGVkOworCQkJZ290byByZXRyeTsKKwkJfQorCX0KKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBpbnQgc3VibWl0X2JvKHN0cnVjdCBldG5hdml2X2dlbV9zdWJt aXQgKnN1Ym1pdCwgdWludDMyX3QgaWR4LAorCQlzdHJ1Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICoq b2JqLCB1aW50MzJfdCAqaW92YSwgYm9vbCAqdmFsaWQpCit7CisJaWYgKGlkeCA+PSBzdWJtaXQt Pm5yX2JvcykgeworCQlEUk1fRVJST1IoImludmFsaWQgYnVmZmVyIGluZGV4OiAldSAob3V0IG9m ICV1KVxuIiwKKwkJCQlpZHgsIHN1Ym1pdC0+bnJfYm9zKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJaWYgKG9iaikKKwkJKm9iaiA9IHN1Ym1pdC0+Ym9zW2lkeF0ub2JqOworCWlmIChpb3Zh KQorCQkqaW92YSA9IHN1Ym1pdC0+Ym9zW2lkeF0uaW92YTsKKwlpZiAodmFsaWQpCisJCSp2YWxp ZCA9ICEhKHN1Ym1pdC0+Ym9zW2lkeF0uZmxhZ3MgJiBCT19WQUxJRCk7CisKKwlyZXR1cm4gMDsK K30KKworLyogcHJvY2VzcyB0aGUgcmVsb2MncyBhbmQgcGF0Y2ggdXAgdGhlIGNtZHN0cmVhbSBh cyBuZWVkZWQ6ICovCitzdGF0aWMgaW50IHN1Ym1pdF9yZWxvYyhzdHJ1Y3QgZXRuYXZpdl9nZW1f c3VibWl0ICpzdWJtaXQsIHN0cnVjdCBldG5hdml2X2dlbV9vYmplY3QgKm9iaiwKKwkJdWludDMy X3Qgb2Zmc2V0LCB1aW50MzJfdCBucl9yZWxvY3MsIHVpbnQ2NF90IHJlbG9jcykKK3sKKwl1aW50 MzJfdCBpLCBsYXN0X29mZnNldCA9IDA7CisJdWludDMyX3QgKnB0ciA9IG9iai0+dmFkZHI7CisJ aW50IHJldDsKKworCWlmIChvZmZzZXQgJSA0KSB7CisJCURSTV9FUlJPUigibm9uLWFsaWduZWQg Y21kc3RyZWFtIGJ1ZmZlcjogJXVcbiIsIG9mZnNldCk7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCWZvciAoaSA9IDA7IGkgPCBucl9yZWxvY3M7IGkrKykgeworCQlzdHJ1Y3QgZHJtX2V0bmF2 aXZfZ2VtX3N1Ym1pdF9yZWxvYyBzdWJtaXRfcmVsb2M7CisJCXZvaWQgX191c2VyICp1c2VycHRy ID0KKwkJCXRvX3VzZXJfcHRyKHJlbG9jcyArIChpICogc2l6ZW9mKHN1Ym1pdF9yZWxvYykpKTsK KwkJdWludDMyX3QgaW92YSwgb2ZmOworCQlib29sIHZhbGlkOworCisJCXJldCA9IGNvcHlfZnJv bV91c2VyKCZzdWJtaXRfcmVsb2MsIHVzZXJwdHIsIHNpemVvZihzdWJtaXRfcmVsb2MpKTsKKwkJ aWYgKHJldCkKKwkJCXJldHVybiAtRUZBVUxUOworCisJCWlmIChzdWJtaXRfcmVsb2Muc3VibWl0 X29mZnNldCAlIDQpIHsKKwkJCURSTV9FUlJPUigibm9uLWFsaWduZWQgcmVsb2Mgb2Zmc2V0OiAl dVxuIiwKKwkJCQkJc3VibWl0X3JlbG9jLnN1Ym1pdF9vZmZzZXQpOworCQkJcmV0dXJuIC1FSU5W QUw7CisJCX0KKworCQkvKiBvZmZzZXQgaW4gZHdvcmRzOiAqLworCQlvZmYgPSBzdWJtaXRfcmVs b2Muc3VibWl0X29mZnNldCAvIDQ7CisKKwkJaWYgKChvZmYgPj0gKG9iai0+YmFzZS5zaXplIC8g NCkpIHx8CisJCQkJKG9mZiA8IGxhc3Rfb2Zmc2V0KSkgeworCQkJRFJNX0VSUk9SKCJpbnZhbGlk IG9mZnNldCAldSBhdCByZWxvYyAldVxuIiwgb2ZmLCBpKTsKKwkJCXJldHVybiAtRUlOVkFMOwor CQl9CisKKwkJcmV0ID0gc3VibWl0X2JvKHN1Ym1pdCwgc3VibWl0X3JlbG9jLnJlbG9jX2lkeCwg TlVMTCwgJmlvdmEsICZ2YWxpZCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJCWlm ICh2YWxpZCkKKwkJCWNvbnRpbnVlOworCisJCWlvdmEgKz0gc3VibWl0X3JlbG9jLnJlbG9jX29m ZnNldDsKKworCQlpZiAoc3VibWl0X3JlbG9jLnNoaWZ0IDwgMCkKKwkJCWlvdmEgPj49IC1zdWJt aXRfcmVsb2Muc2hpZnQ7CisJCWVsc2UKKwkJCWlvdmEgPDw9IHN1Ym1pdF9yZWxvYy5zaGlmdDsK KworCQlwdHJbb2ZmXSA9IGlvdmEgfCBzdWJtaXRfcmVsb2Mub3I7CisKKwkJbGFzdF9vZmZzZXQg PSBvZmY7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHN1Ym1pdF9jbGVhbnVw KHN0cnVjdCBldG5hdml2X2dlbV9zdWJtaXQgKnN1Ym1pdCwgYm9vbCBmYWlsKQoreworCXVuc2ln bmVkIGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykgeworCQlzdHJ1 Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaiA9IHN1Ym1pdC0+Ym9zW2ldLm9iajsK KwkJc3VibWl0X3VubG9ja191bnBpbl9ibyhzdWJtaXQsIGkpOworCQlsaXN0X2RlbF9pbml0KCZl dG5hdml2X29iai0+c3VibWl0X2VudHJ5KTsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uo JmV0bmF2aXZfb2JqLT5iYXNlKTsKKwl9CisKKwl3d19hY3F1aXJlX2ZpbmkoJnN1Ym1pdC0+dGlj a2V0KTsKKwlrZnJlZShzdWJtaXQpOworfQorCitpbnQgZXRuYXZpdl9pb2N0bF9nZW1fc3VibWl0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCXN0cnVjdCBkcm1fZmlsZSAq ZmlsZSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CisJc3RydWN0IGRybV9ldG5hdml2X2dlbV9zdWJtaXQgKmFyZ3MgPSBkYXRhOworCXN0 cnVjdCBldG5hdml2X2ZpbGVfcHJpdmF0ZSAqY3R4ID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3Ry dWN0IGV0bmF2aXZfZ2VtX3N1Ym1pdCAqc3VibWl0OworCXN0cnVjdCBldG5hdml2X2dwdSAqZ3B1 OworCXVuc2lnbmVkIGk7CisJaW50IHJldDsKKworCWlmIChhcmdzLT5waXBlID49IEVUTkFfTUFY X1BJUEVTKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWdwdSA9IHByaXYtPmdwdVthcmdzLT5waXBl XTsKKwlpZiAoIWdwdSkKKwkJcmV0dXJuIC1FTlhJTzsKKworCWlmIChhcmdzLT5ucl9jbWRzID4g TUFYX0NNRFMpCisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOworCisJc3VibWl0ID0gc3VibWl0X2NyZWF0ZShkZXYsIGdwdSwgYXJncy0+bnJfYm9z KTsKKwlpZiAoIXN1Ym1pdCkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisK KwlyZXQgPSBzdWJtaXRfbG9va3VwX29iamVjdHMoc3VibWl0LCBhcmdzLCBmaWxlKTsKKwlpZiAo cmV0KQorCQlnb3RvIG91dDsKKworCXJldCA9IHN1Ym1pdF92YWxpZGF0ZV9vYmplY3RzKHN1Ym1p dCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgYXJncy0+bnJf Y21kczsgaSsrKSB7CisJCXN0cnVjdCBkcm1fZXRuYXZpdl9nZW1fc3VibWl0X2NtZCBzdWJtaXRf Y21kOworCQl2b2lkIF9fdXNlciAqdXNlcnB0ciA9CisJCQl0b191c2VyX3B0cihhcmdzLT5jbWRz ICsgKGkgKiBzaXplb2Yoc3VibWl0X2NtZCkpKTsKKwkJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVj dCAqZXRuYXZpdl9vYmo7CisKKwkJcmV0ID0gY29weV9mcm9tX3VzZXIoJnN1Ym1pdF9jbWQsIHVz ZXJwdHIsIHNpemVvZihzdWJtaXRfY21kKSk7CisJCWlmIChyZXQpIHsKKwkJCXJldCA9IC1FRkFV TFQ7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCXJldCA9IHN1Ym1pdF9ibyhzdWJtaXQsIHN1Ym1p dF9jbWQuc3VibWl0X2lkeCwKKwkJCQkmZXRuYXZpdl9vYmosIE5VTEwsIE5VTEwpOworCQlpZiAo cmV0KQorCQkJZ290byBvdXQ7CisKKwkJaWYgKCEoZXRuYXZpdl9vYmotPmZsYWdzICYgRVROQV9C T19DTURTVFJFQU0pKSB7CisJCQlEUk1fRVJST1IoImNtZHN0cmVhbSBibyBoYXMgZmxhZyBFVE5B X0JPX0NNRFNUUkVBTSBub3Qgc2V0XG4iKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQlnb3RvIG91 dDsKKwkJfQorCisJCWlmIChzdWJtaXRfY21kLnNpemUgJSA0KSB7CisJCQlEUk1fRVJST1IoIm5v bi1hbGlnbmVkIGNtZHN0cmVhbSBidWZmZXIgc2l6ZTogJXVcbiIsCisJCQkJCXN1Ym1pdF9jbWQu c2l6ZSk7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBvdXQ7CisJCX0KKworCQlpZiAoKHN1 Ym1pdF9jbWQuc2l6ZSArIHN1Ym1pdF9jbWQuc3VibWl0X29mZnNldCkgPj0KKwkJCQlldG5hdml2 X29iai0+YmFzZS5zaXplKSB7CisJCQlEUk1fRVJST1IoImludmFsaWQgY21kc3RyZWFtIHNpemU6 ICV1XG4iLCBzdWJtaXRfY21kLnNpemUpOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0 OworCQl9CisKKwkJc3VibWl0LT5jbWRbaV0udHlwZSA9IHN1Ym1pdF9jbWQudHlwZTsKKwkJc3Vi bWl0LT5jbWRbaV0uc2l6ZSA9IHN1Ym1pdF9jbWQuc2l6ZSAvIDQ7CisJCXN1Ym1pdC0+Y21kW2ld Lm9iaiA9IGV0bmF2aXZfb2JqOworCisJCWlmIChzdWJtaXQtPnZhbGlkKQorCQkJY29udGludWU7 CisKKwkJcmV0ID0gc3VibWl0X3JlbG9jKHN1Ym1pdCwgZXRuYXZpdl9vYmosIHN1Ym1pdF9jbWQu c3VibWl0X29mZnNldCwKKwkJCQlzdWJtaXRfY21kLm5yX3JlbG9jcywgc3VibWl0X2NtZC5yZWxv Y3MpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisJfQorCisJc3VibWl0LT5ucl9jbWRzID0g aTsKKworCXJldCA9IGV0bmF2aXZfZ3B1X3N1Ym1pdChncHUsIHN1Ym1pdCwgY3R4KTsKKworCWFy Z3MtPmZlbmNlID0gc3VibWl0LT5mZW5jZTsKKworb3V0OgorCWlmIChzdWJtaXQpCisJCXN1Ym1p dF9jbGVhbnVwKHN1Ym1pdCwgISFyZXQpOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZp di9ldG5hdml2X2dwdS5jIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9ncHUuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQyZDA1NTZhOWJhZAotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ3B1LmMKQEAg LTAsMCArMSw5ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVkIEhhdAorICogQXV0 aG9yOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgK KyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+CisjaW5jbHVkZSA8bGlu dXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSAiZXRuYXZpdl9ncHUuaCIKKyNpbmNsdWRlICJldG5h dml2X2dlbS5oIgorI2luY2x1ZGUgImV0bmF2aXZfbW11LmgiCisjaW5jbHVkZSAiZXRuYXZpdl9p b21tdS5oIgorI2luY2x1ZGUgImV0bmF2aXZfaW9tbXVfdjIuaCIKKyNpbmNsdWRlICJjb21tb24u eG1sLmgiCisjaW5jbHVkZSAic3RhdGUueG1sLmgiCisjaW5jbHVkZSAic3RhdGVfaGkueG1sLmgi CisjaW5jbHVkZSAiY21kc3RyZWFtLnhtbC5oIgorCisKKy8qCisgKiBEcml2ZXIgZnVuY3Rpb25z OgorICovCisKK2ludCBldG5hdml2X2dwdV9nZXRfcGFyYW0oc3RydWN0IGV0bmF2aXZfZ3B1ICpn cHUsIHVpbnQzMl90IHBhcmFtLCB1aW50NjRfdCAqdmFsdWUpCit7CisJc3dpdGNoIChwYXJhbSkg eworCWNhc2UgRVROQVZJVl9QQVJBTV9HUFVfTU9ERUw6CisJCSp2YWx1ZSA9IGdwdS0+aWRlbnRp dHkubW9kZWw7CisJCWJyZWFrOworCisJY2FzZSBFVE5BVklWX1BBUkFNX0dQVV9SRVZJU0lPTjoK KwkJKnZhbHVlID0gZ3B1LT5pZGVudGl0eS5yZXZpc2lvbjsKKwkJYnJlYWs7CisKKwljYXNlIEVU TkFWSVZfUEFSQU1fR1BVX0ZFQVRVUkVTXzA6CisJCSp2YWx1ZSA9IGdwdS0+aWRlbnRpdHkuZmVh dHVyZXM7CisJCWJyZWFrOworCisJY2FzZSBFVE5BVklWX1BBUkFNX0dQVV9GRUFUVVJFU18xOgor CQkqdmFsdWUgPSBncHUtPmlkZW50aXR5Lm1pbm9yX2ZlYXR1cmVzMDsKKwkJYnJlYWs7CisKKwlj YXNlIEVUTkFWSVZfUEFSQU1fR1BVX0ZFQVRVUkVTXzI6CisJCSp2YWx1ZSA9IGdwdS0+aWRlbnRp dHkubWlub3JfZmVhdHVyZXMxOworCQlicmVhazsKKworCWNhc2UgRVROQVZJVl9QQVJBTV9HUFVf RkVBVFVSRVNfMzoKKwkJKnZhbHVlID0gZ3B1LT5pZGVudGl0eS5taW5vcl9mZWF0dXJlczI7CisJ CWJyZWFrOworCisJY2FzZSBFVE5BVklWX1BBUkFNX0dQVV9GRUFUVVJFU180OgorCQkqdmFsdWUg PSBncHUtPmlkZW50aXR5Lm1pbm9yX2ZlYXR1cmVzMzsKKwkJYnJlYWs7CisKKwljYXNlIEVUTkFW SVZfUEFSQU1fR1BVX1NUUkVBTV9DT1VOVDoKKwkJKnZhbHVlID0gZ3B1LT5pZGVudGl0eS5zdHJl YW1fY291bnQ7CisJCWJyZWFrOworCisJY2FzZSBFVE5BVklWX1BBUkFNX0dQVV9SRUdJU1RFUl9N QVg6CisJCSp2YWx1ZSA9IGdwdS0+aWRlbnRpdHkucmVnaXN0ZXJfbWF4OworCQlicmVhazsKKwor CWNhc2UgRVROQVZJVl9QQVJBTV9HUFVfVEhSRUFEX0NPVU5UOgorCQkqdmFsdWUgPSBncHUtPmlk ZW50aXR5LnRocmVhZF9jb3VudDsKKwkJYnJlYWs7CisKKwljYXNlIEVUTkFWSVZfUEFSQU1fR1BV X1ZFUlRFWF9DQUNIRV9TSVpFOgorCQkqdmFsdWUgPSBncHUtPmlkZW50aXR5LnZlcnRleF9jYWNo ZV9zaXplOworCQlicmVhazsKKworCWNhc2UgRVROQVZJVl9QQVJBTV9HUFVfU0hBREVSX0NPUkVf Q09VTlQ6CisJCSp2YWx1ZSA9IGdwdS0+aWRlbnRpdHkuc2hhZGVyX2NvcmVfY291bnQ7CisJCWJy ZWFrOworCisJY2FzZSBFVE5BVklWX1BBUkFNX0dQVV9QSVhFTF9QSVBFUzoKKwkJKnZhbHVlID0g Z3B1LT5pZGVudGl0eS5waXhlbF9waXBlczsKKwkJYnJlYWs7CisKKwljYXNlIEVUTkFWSVZfUEFS QU1fR1BVX1ZFUlRFWF9PVVRQVVRfQlVGRkVSX1NJWkU6CisJCSp2YWx1ZSA9IGdwdS0+aWRlbnRp dHkudmVydGV4X291dHB1dF9idWZmZXJfc2l6ZTsKKwkJYnJlYWs7CisKKwljYXNlIEVUTkFWSVZf UEFSQU1fR1BVX0JVRkZFUl9TSVpFOgorCQkqdmFsdWUgPSBncHUtPmlkZW50aXR5LmJ1ZmZlcl9z aXplOworCQlicmVhazsKKworCWNhc2UgRVROQVZJVl9QQVJBTV9HUFVfSU5TVFJVQ1RJT05fQ09V TlQ6CisJCSp2YWx1ZSA9IGdwdS0+aWRlbnRpdHkuaW5zdHJ1Y3Rpb25fY291bnQ7CisJCWJyZWFr OworCisJY2FzZSBFVE5BVklWX1BBUkFNX0dQVV9OVU1fQ09OU1RBTlRTOgorCQkqdmFsdWUgPSBn cHUtPmlkZW50aXR5Lm51bV9jb25zdGFudHM7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJREJH KCIlczogaW52YWxpZCBwYXJhbTogJXUiLCBncHUtPm5hbWUsIHBhcmFtKTsKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGV0bmF2aXZfaHdfc3Bl Y3Moc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCit7CisJaWYgKGdwdS0+aWRlbnRpdHkubWlub3Jf ZmVhdHVyZXMwICYgY2hpcE1pbm9yRmVhdHVyZXMwX01PUkVfTUlOT1JfRkVBVFVSRVMpIHsKKwkJ dTMyIHNwZWNzWzJdOworCisJCXNwZWNzWzBdID0gZ3B1X3JlYWQoZ3B1LCBWSVZTX0hJX0NISVBf U1BFQ1MpOworCQlzcGVjc1sxXSA9IGdwdV9yZWFkKGdwdSwgVklWU19ISV9DSElQX1NQRUNTXzIp OworCisJCWdwdS0+aWRlbnRpdHkuc3RyZWFtX2NvdW50ID0gKHNwZWNzWzBdICYgVklWU19ISV9D SElQX1NQRUNTX1NUUkVBTV9DT1VOVF9fTUFTSykKKwkJCQk+PiBWSVZTX0hJX0NISVBfU1BFQ1Nf U1RSRUFNX0NPVU5UX19TSElGVDsKKwkJZ3B1LT5pZGVudGl0eS5yZWdpc3Rlcl9tYXggPSAoc3Bl Y3NbMF0gJiBWSVZTX0hJX0NISVBfU1BFQ1NfUkVHSVNURVJfTUFYX19NQVNLKQorCQkJCT4+IFZJ VlNfSElfQ0hJUF9TUEVDU19SRUdJU1RFUl9NQVhfX1NISUZUOworCQlncHUtPmlkZW50aXR5LnRo cmVhZF9jb3VudCA9IChzcGVjc1swXSAmIFZJVlNfSElfQ0hJUF9TUEVDU19USFJFQURfQ09VTlRf X01BU0spCisJCQkJPj4gVklWU19ISV9DSElQX1NQRUNTX1RIUkVBRF9DT1VOVF9fU0hJRlQ7CisJ CWdwdS0+aWRlbnRpdHkudmVydGV4X2NhY2hlX3NpemUgPSAoc3BlY3NbMF0gJiBWSVZTX0hJX0NI SVBfU1BFQ1NfVkVSVEVYX0NBQ0hFX1NJWkVfX01BU0spCisJCQkJPj4gVklWU19ISV9DSElQX1NQ RUNTX1ZFUlRFWF9DQUNIRV9TSVpFX19TSElGVDsKKwkJZ3B1LT5pZGVudGl0eS5zaGFkZXJfY29y ZV9jb3VudCA9IChzcGVjc1swXSAmIFZJVlNfSElfQ0hJUF9TUEVDU19TSEFERVJfQ09SRV9DT1VO VF9fTUFTSykKKwkJCQk+PiBWSVZTX0hJX0NISVBfU1BFQ1NfU0hBREVSX0NPUkVfQ09VTlRfX1NI SUZUOworCQlncHUtPmlkZW50aXR5LnBpeGVsX3BpcGVzID0gKHNwZWNzWzBdICYgVklWU19ISV9D SElQX1NQRUNTX1BJWEVMX1BJUEVTX19NQVNLKQorCQkJCT4+IFZJVlNfSElfQ0hJUF9TUEVDU19Q SVhFTF9QSVBFU19fU0hJRlQ7CisJCWdwdS0+aWRlbnRpdHkudmVydGV4X291dHB1dF9idWZmZXJf c2l6ZSA9IChzcGVjc1swXSAmIFZJVlNfSElfQ0hJUF9TUEVDU19WRVJURVhfT1VUUFVUX0JVRkZF Ul9TSVpFX19NQVNLKQorCQkJCT4+IFZJVlNfSElfQ0hJUF9TUEVDU19WRVJURVhfT1VUUFVUX0JV RkZFUl9TSVpFX19TSElGVDsKKworCQlncHUtPmlkZW50aXR5LmJ1ZmZlcl9zaXplID0gKHNwZWNz WzFdICYgVklWU19ISV9DSElQX1NQRUNTXzJfQlVGRkVSX1NJWkVfX01BU0spCisJCQkJPj4gVklW U19ISV9DSElQX1NQRUNTXzJfQlVGRkVSX1NJWkVfX1NISUZUOworCQlncHUtPmlkZW50aXR5Lmlu c3RydWN0aW9uX2NvdW50ID0gKHNwZWNzWzFdICYgVklWU19ISV9DSElQX1NQRUNTXzJfSU5TVFJV Q1RJT05fQ09VTlRfX01BU0spCisJCQkJPj4gVklWU19ISV9DSElQX1NQRUNTXzJfSU5TVFJVQ1RJ T05fQ09VTlRfX1NISUZUOworCQlncHUtPmlkZW50aXR5Lm51bV9jb25zdGFudHMgPSAoc3BlY3Nb MV0gJiBWSVZTX0hJX0NISVBfU1BFQ1NfMl9OVU1fQ09OU1RBTlRTX19NQVNLKQorCQkJCT4+IFZJ VlNfSElfQ0hJUF9TUEVDU18yX05VTV9DT05TVEFOVFNfX1NISUZUOworCisJCWdwdS0+aWRlbnRp dHkucmVnaXN0ZXJfbWF4ID0gMSA8PCBncHUtPmlkZW50aXR5LnJlZ2lzdGVyX21heDsKKwkJZ3B1 LT5pZGVudGl0eS50aHJlYWRfY291bnQgPSAxIDw8IGdwdS0+aWRlbnRpdHkudGhyZWFkX2NvdW50 OworCQlncHUtPmlkZW50aXR5LnZlcnRleF9vdXRwdXRfYnVmZmVyX3NpemUgPSAxIDw8IGdwdS0+ aWRlbnRpdHkudmVydGV4X291dHB1dF9idWZmZXJfc2l6ZTsKKwl9IGVsc2UgeworCQlkZXZfZXJy KGdwdS0+ZGV2LT5kZXYsICJUT0RPOiBkZXRlcm1pbmUgR1BVIHNwZWNzIGJhc2VkIG9uIG1vZGVs XG4iKTsKKwl9CisKKwlzd2l0Y2ggKGdwdS0+aWRlbnRpdHkuaW5zdHJ1Y3Rpb25fY291bnQpIHsK KwljYXNlIDA6CisJCWdwdS0+aWRlbnRpdHkuaW5zdHJ1Y3Rpb25fY291bnQgPSAyNTY7CisJCWJy ZWFrOworCisJY2FzZSAxOgorCQlncHUtPmlkZW50aXR5Lmluc3RydWN0aW9uX2NvdW50ID0gMTAy NDsKKwkJYnJlYWs7CisKKwljYXNlIDI6CisJCWdwdS0+aWRlbnRpdHkuaW5zdHJ1Y3Rpb25fY291 bnQgPSAyMDQ4OworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWdwdS0+aWRlbnRpdHkuaW5zdHJ1 Y3Rpb25fY291bnQgPSAyNTY7CisJCWJyZWFrOworCX0KKworCWRldl9pbmZvKGdwdS0+ZGV2LT5k ZXYsICJzdHJlYW1fY291bnQ6ICAleFxuIiwgZ3B1LT5pZGVudGl0eS5zdHJlYW1fY291bnQpOwor CWRldl9pbmZvKGdwdS0+ZGV2LT5kZXYsICJyZWdpc3Rlcl9tYXg6ICV4XG4iLCBncHUtPmlkZW50 aXR5LnJlZ2lzdGVyX21heCk7CisJZGV2X2luZm8oZ3B1LT5kZXYtPmRldiwgInRocmVhZF9jb3Vu dDogJXhcbiIsIGdwdS0+aWRlbnRpdHkudGhyZWFkX2NvdW50KTsKKwlkZXZfaW5mbyhncHUtPmRl di0+ZGV2LCAidmVydGV4X2NhY2hlX3NpemU6ICV4XG4iLCBncHUtPmlkZW50aXR5LnZlcnRleF9j YWNoZV9zaXplKTsKKwlkZXZfaW5mbyhncHUtPmRldi0+ZGV2LCAic2hhZGVyX2NvcmVfY291bnQ6 ICV4XG4iLCBncHUtPmlkZW50aXR5LnNoYWRlcl9jb3JlX2NvdW50KTsKKwlkZXZfaW5mbyhncHUt PmRldi0+ZGV2LCAicGl4ZWxfcGlwZXM6ICV4XG4iLCBncHUtPmlkZW50aXR5LnBpeGVsX3BpcGVz KTsKKwlkZXZfaW5mbyhncHUtPmRldi0+ZGV2LCAidmVydGV4X291dHB1dF9idWZmZXJfc2l6ZTog JXhcbiIsIGdwdS0+aWRlbnRpdHkudmVydGV4X291dHB1dF9idWZmZXJfc2l6ZSk7CisJZGV2X2lu Zm8oZ3B1LT5kZXYtPmRldiwgImJ1ZmZlcl9zaXplOiAleFxuIiwgZ3B1LT5pZGVudGl0eS5idWZm ZXJfc2l6ZSk7CisJZGV2X2luZm8oZ3B1LT5kZXYtPmRldiwgImluc3RydWN0aW9uX2NvdW50OiAl eFxuIiwgZ3B1LT5pZGVudGl0eS5pbnN0cnVjdGlvbl9jb3VudCk7CisJZGV2X2luZm8oZ3B1LT5k ZXYtPmRldiwgIm51bV9jb25zdGFudHM6ICV4XG4iLCBncHUtPmlkZW50aXR5Lm51bV9jb25zdGFu dHMpOworfQorCitzdGF0aWMgdm9pZCBldG5hdml2X2h3X2lkZW50aWZ5KHN0cnVjdCBldG5hdml2 X2dwdSAqZ3B1KQoreworCXUzMiBjaGlwSWRlbnRpdHk7CisKKwljaGlwSWRlbnRpdHkgPSBncHVf cmVhZChncHUsIFZJVlNfSElfQ0hJUF9JREVOVElUWSk7CisKKwkvKiBTcGVjaWFsIGNhc2UgZm9y IG9sZGVyIGdyYXBoaWMgY29yZXMuICovCisJaWYgKFZJVlNfSElfQ0hJUF9JREVOVElUWV9GQU1J TFkoY2hpcElkZW50aXR5KSA9PSAgMHgwMSkgeworCQlncHUtPmlkZW50aXR5Lm1vZGVsICAgID0g MHg1MDA7IC8qIGdjNTAwICovCisJCWdwdS0+aWRlbnRpdHkucmV2aXNpb24gPSBWSVZTX0hJX0NI SVBfSURFTlRJVFlfUkVWSVNJT04oY2hpcElkZW50aXR5KTsKKwl9IGVsc2UgeworCisJCWdwdS0+ aWRlbnRpdHkubW9kZWwgPSBncHVfcmVhZChncHUsIFZJVlNfSElfQ0hJUF9NT0RFTCk7CisJCWdw dS0+aWRlbnRpdHkucmV2aXNpb24gPSBncHVfcmVhZChncHUsIFZJVlNfSElfQ0hJUF9SRVYpOwor CisJCS8qICEhISEgSEFDSyBBTEVSVCAhISEhICovCisJCS8qIEJlY2F1c2UgcGVvcGxlIGNoYW5n ZSBkZXZpY2UgSURzIHdpdGhvdXQgbGV0dGluZyBzb2Z0d2FyZSBrbm93CisJCSoqIGFib3V0IGl0 IC0gaGVyZSBpcyB0aGUgaGFjayB0byBtYWtlIGl0IGFsbCBsb29rIHRoZSBzYW1lLiAgT25seQor CQkqKiBmb3IgR0M0MDAgZmFtaWx5LiAgTmV4dCB0aW1lIC0gVEVMTCBNRSEhISAqLworCQlpZiAo KChncHUtPmlkZW50aXR5Lm1vZGVsICYgMHhGRjAwKSA9PSAweDA0MDApCisJCSYmIChncHUtPmlk ZW50aXR5Lm1vZGVsICE9IDB4MDQyMCkpIHsKKwkJCWdwdS0+aWRlbnRpdHkubW9kZWwgPSBncHUt PmlkZW50aXR5Lm1vZGVsICYgMHgwNDAwOworCQl9CisKKwkJLyogQW4gb3RoZXIgc3BlY2lhbCBj YXNlICovCisJCWlmICgoZ3B1LT5pZGVudGl0eS5tb2RlbCAgICA9PSAweDMwMCkKKwkJJiYgIChn cHUtPmlkZW50aXR5LnJldmlzaW9uID09IDB4MjIwMSkpIHsKKwkJCXUzMiBjaGlwRGF0ZSA9IGdw dV9yZWFkKGdwdSwgVklWU19ISV9DSElQX0RBVEUpOworCQkJdTMyIGNoaXBUaW1lID0gZ3B1X3Jl YWQoZ3B1LCBWSVZTX0hJX0NISVBfVElNRSk7CisKKwkJCWlmICgoY2hpcERhdGUgPT0gMHgyMDA4 MDgxNCkgJiYgKGNoaXBUaW1lID09IDB4MTIwNTExMDApKSB7CisJCQkJLyogVGhpcyBJUCBoYXMg YW4gRUNPOyBwdXQgdGhlIGNvcnJlY3QgcmV2aXNpb24gaW4gaXQuICovCisJCQkJZ3B1LT5pZGVu dGl0eS5yZXZpc2lvbiA9IDB4MTA1MTsKKwkJCX0KKwkJfQorCX0KKworCWRldl9pbmZvKGdwdS0+ ZGV2LT5kZXYsICJtb2RlbDogJXhcbiIsIGdwdS0+aWRlbnRpdHkubW9kZWwpOworCWRldl9pbmZv KGdwdS0+ZGV2LT5kZXYsICJyZXZpc2lvbjogJXhcbiIsIGdwdS0+aWRlbnRpdHkucmV2aXNpb24p OworCisJZ3B1LT5pZGVudGl0eS5mZWF0dXJlcyA9IGdwdV9yZWFkKGdwdSwgVklWU19ISV9DSElQ X0ZFQVRVUkUpOworCisJLyogRGlzYWJsZSBmYXN0IGNsZWFyIG9uIEdDNzAwLiAqLworCWlmIChn cHUtPmlkZW50aXR5Lm1vZGVsID09IDB4NzAwKQorCQlncHUtPmlkZW50aXR5LmZlYXR1cmVzICY9 IH5CSVQoMCk7CisKKwlpZiAoKChncHUtPmlkZW50aXR5Lm1vZGVsID09IDB4NTAwKSAmJiAoZ3B1 LT5pZGVudGl0eS5yZXZpc2lvbiA8IDIpKQorCXx8ICAoKGdwdS0+aWRlbnRpdHkubW9kZWwgPT0g MHgzMDApICYmIChncHUtPmlkZW50aXR5LnJldmlzaW9uIDwgMHgyMDAwKSkpIHsKKworCQkvKiBH QzUwMCByZXYgMS54IGFuZCBHQzMwMCByZXYgPCAyLjAgZG9lc24ndCBoYXZlIHRoZXNlIHJlZ2lz dGVycy4gKi8KKwkJZ3B1LT5pZGVudGl0eS5taW5vcl9mZWF0dXJlczAgPSAwOworCQlncHUtPmlk ZW50aXR5Lm1pbm9yX2ZlYXR1cmVzMSA9IDA7CisJCWdwdS0+aWRlbnRpdHkubWlub3JfZmVhdHVy ZXMyID0gMDsKKwkJZ3B1LT5pZGVudGl0eS5taW5vcl9mZWF0dXJlczMgPSAwOworCX0gZWxzZQor CQlncHUtPmlkZW50aXR5Lm1pbm9yX2ZlYXR1cmVzMCA9IGdwdV9yZWFkKGdwdSwgVklWU19ISV9D SElQX01JTk9SX0ZFQVRVUkVfMCk7CisKKwlpZiAoZ3B1LT5pZGVudGl0eS5taW5vcl9mZWF0dXJl czAgJiBCSVQoMjEpKSB7CisJCWdwdS0+aWRlbnRpdHkubWlub3JfZmVhdHVyZXMxID0gZ3B1X3Jl YWQoZ3B1LCBWSVZTX0hJX0NISVBfTUlOT1JfRkVBVFVSRV8xKTsKKwkJZ3B1LT5pZGVudGl0eS5t aW5vcl9mZWF0dXJlczIgPSBncHVfcmVhZChncHUsIFZJVlNfSElfQ0hJUF9NSU5PUl9GRUFUVVJF XzIpOworCQlncHUtPmlkZW50aXR5Lm1pbm9yX2ZlYXR1cmVzMyA9IGdwdV9yZWFkKGdwdSwgVklW U19ISV9DSElQX01JTk9SX0ZFQVRVUkVfMyk7CisJfQorCisJZGV2X2luZm8oZ3B1LT5kZXYtPmRl diwgIm1pbm9yX2ZlYXR1cmVzOiAgJXhcbiIsIGdwdS0+aWRlbnRpdHkubWlub3JfZmVhdHVyZXMw KTsKKwlkZXZfaW5mbyhncHUtPmRldi0+ZGV2LCAibWlub3JfZmVhdHVyZXMxOiAleFxuIiwgZ3B1 LT5pZGVudGl0eS5taW5vcl9mZWF0dXJlczEpOworCWRldl9pbmZvKGdwdS0+ZGV2LT5kZXYsICJt aW5vcl9mZWF0dXJlczI6ICV4XG4iLCBncHUtPmlkZW50aXR5Lm1pbm9yX2ZlYXR1cmVzMik7CisJ ZGV2X2luZm8oZ3B1LT5kZXYtPmRldiwgIm1pbm9yX2ZlYXR1cmVzMzogJXhcbiIsIGdwdS0+aWRl bnRpdHkubWlub3JfZmVhdHVyZXMzKTsKKworCWV0bmF2aXZfaHdfc3BlY3MoZ3B1KTsKK30KKwor c3RhdGljIHZvaWQgZXRuYXZpdl9od19yZXNldChzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSkKK3sK Kwl1MzIgY29udHJvbCwgaWRsZTsKKworCS8qIFRPRE8KKwkgKgorCSAqIC0gY2xvY2sgZ2F0aW5n CisJICogLSBwdWxzIGVhdGVyCisJICogLSB3aGF0IGFib3V0IFZHPworCSAqLworCisJd2hpbGUg KHRydWUpIHsKKwkJY29udHJvbCA9IGdwdV9yZWFkKGdwdSwgVklWU19ISV9DTE9DS19DT05UUk9M KTsKKworCQkvKiBpc29sYXRlIHRoZSBHUFUuICovCisJCWNvbnRyb2wgfD0gVklWU19ISV9DTE9D S19DT05UUk9MX0lTT0xBVEVfR1BVOworCQlncHVfd3JpdGUoZ3B1LCBWSVZTX0hJX0NMT0NLX0NP TlRST0wsIGNvbnRyb2wpOworCisJCS8qIHNldCBzb2Z0IHJlc2V0LiAqLworCQljb250cm9sIHw9 IFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9TT0ZUX1JFU0VUOworCQlncHVfd3JpdGUoZ3B1LCBWSVZT X0hJX0NMT0NLX0NPTlRST0wsIGNvbnRyb2wpOworCisJCS8qIHdhaXQgZm9yIHJlc2V0LiAqLwor CQltc2xlZXAoMSk7CisKKwkJLyogcmVzZXQgc29mdCByZXNldCBiaXQuICovCisJCWNvbnRyb2wg Jj0gflZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9TT0ZUX1JFU0VUOworCQlncHVfd3JpdGUoZ3B1LCBW SVZTX0hJX0NMT0NLX0NPTlRST0wsIGNvbnRyb2wpOworCisJCS8qIHJlc2V0IEdQVSBpc29sYXRp b24uICovCisJCWNvbnRyb2wgJj0gflZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9JU09MQVRFX0dQVTsK KwkJZ3B1X3dyaXRlKGdwdSwgVklWU19ISV9DTE9DS19DT05UUk9MLCBjb250cm9sKTsKKworCQkv KiByZWFkIGlkbGUgcmVnaXN0ZXIuICovCisJCWlkbGUgPSBncHVfcmVhZChncHUsIFZJVlNfSElf SURMRV9TVEFURSk7CisKKwkJLyogdHJ5IHJlc2V0aW5nIGFnYWluIGlmIEZFIGl0IG5vdCBpZGxl ICovCisJCWlmICgoaWRsZSAmIFZJVlNfSElfSURMRV9TVEFURV9GRSkgPT0gMCkgeworCQkJZGV2 X2RiZyhncHUtPmRldi0+ZGV2LCAiJXM6IEZFIGlzIG5vdCBpZGxlXG4iLCBncHUtPm5hbWUpOwor CQkJY29udGludWU7CisJCX0KKworCQkvKiByZWFkIHJlc2V0IHJlZ2lzdGVyLiAqLworCQljb250 cm9sID0gZ3B1X3JlYWQoZ3B1LCBWSVZTX0hJX0NMT0NLX0NPTlRST0wpOworCisJCS8qIGlzIHRo ZSBHUFUgaWRsZT8gKi8KKwkJaWYgKCgoY29udHJvbCAmIFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9J RExFXzNEKSA9PSAwKQorCQl8fCAoKGNvbnRyb2wgJiBWSVZTX0hJX0NMT0NLX0NPTlRST0xfSURM RV8yRCkgPT0gMCkpIHsKKwkJCWRldl9kYmcoZ3B1LT5kZXYtPmRldiwgIiVzOiBHUFUgaXMgbm90 IGlkbGVcbiIsIGdwdS0+bmFtZSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWJyZWFrOworCX0K K30KKworaW50IGV0bmF2aXZfZ3B1X2luaXQoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCit7CisJ aW50IHJldCwgaTsKKwl1MzIgd29yZHM7IC8qIDMyIGJpdCB3b3JkcyAqLworCXN0cnVjdCBpb21t dV9kb21haW4gKmlvbW11OworCWJvb2wgbW11djI7CisKKwlldG5hdml2X2h3X2lkZW50aWZ5KGdw dSk7CisJZXRuYXZpdl9od19yZXNldChncHUpOworCisJLyogc2V0IGJhc2UgYWRkcmVzc2VzICov CisJZ3B1X3dyaXRlKGdwdSwgVklWU19NQ19NRU1PUllfQkFTRV9BRERSX1JBLCAweDApOworCWdw dV93cml0ZShncHUsIFZJVlNfTUNfTUVNT1JZX0JBU0VfQUREUl9GRSwgMHgwKTsKKwlncHVfd3Jp dGUoZ3B1LCBWSVZTX01DX01FTU9SWV9CQVNFX0FERFJfVFgsIDB4MCk7CisJZ3B1X3dyaXRlKGdw dSwgVklWU19NQ19NRU1PUllfQkFTRV9BRERSX1BFWiwgMHgwKTsKKwlncHVfd3JpdGUoZ3B1LCBW SVZTX01DX01FTU9SWV9CQVNFX0FERFJfUEUsIDB4MCk7CisKKwkvKiBTZXR1cCBJT01NVS4uIGV2 ZW50dWFsbHkgd2Ugd2lsbCAoSSB0aGluaykgZG8gdGhpcyBvbmNlIHBlciBjb250ZXh0CisJICog YW5kIGhhdmUgc2VwYXJhdGUgcGFnZSB0YWJsZXMgcGVyIGNvbnRleHQuICBGb3Igbm93LCB0byBr ZWVwIHRoaW5ncworCSAqIHNpbXBsZSBhbmQgdG8gZ2V0IHNvbWV0aGluZyB3b3JraW5nLCBqdXN0 IHVzZSBhIHNpbmdsZSBhZGRyZXNzIHNwYWNlOgorCSAqLworCW1tdXYyID0gZ3B1LT5pZGVudGl0 eS5taW5vcl9mZWF0dXJlczEgJiBjaGlwTWlub3JGZWF0dXJlczFfTU1VX1ZFUlNJT047CisJZGV2 X2RiZyhncHUtPmRldi0+ZGV2LCAibW11djI6ICVkXG4iLCBtbXV2Mik7CisKKwlpZiAoIW1tdXYy KQorCQlpb21tdSA9IGV0bmF2aXZfaW9tbXVfZG9tYWluX2FsbG9jKGdwdSk7CisJZWxzZQorCQlp b21tdSA9IGV0bmF2aXZfaW9tbXVfdjJfZG9tYWluX2FsbG9jKGdwdSk7CisKKwlpZiAoIWlvbW11 KSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbDsKKwl9CisKKwkvKiBUT0RPOiB3ZSB3 aWxsIGxlYWsgaGVyZSBtZW1vcnkgLSBmaXggaXQhICovCisKKwlncHUtPm1tdSA9IGV0bmF2aXZf aW9tbXVfbmV3KGdwdS0+ZGV2LCBpb21tdSk7CisJaWYgKCFncHUtPm1tdSkgeworCQlyZXQgPSAt RU5PTUVNOworCQlnb3RvIGZhaWw7CisJfQorCWV0bmF2aXZfcmVnaXN0ZXJfbW11KGdwdS0+ZGV2 LCBncHUtPm1tdSk7CisKKwkvKiBDcmVhdGUgYnVmZmVyOiAqLworCWdwdS0+YnVmZmVyID0gZXRu YXZpdl9nZW1fbmV3KGdwdS0+ZGV2LCBQQUdFX1NJWkUsIEVUTkFfQk9fQ01EU1RSRUFNKTsKKwlp ZiAoSVNfRVJSKGdwdS0+YnVmZmVyKSkgeworCQlyZXQgPSBQVFJfRVJSKGdwdS0+YnVmZmVyKTsK KwkJZ3B1LT5idWZmZXIgPSBOVUxMOworCQlkZXZfZXJyKGdwdS0+ZGV2LT5kZXYsICJjb3VsZCBu b3QgY3JlYXRlIGJ1ZmZlcjogJWRcbiIsIHJldCk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwkvKiBT ZXR1cCBldmVudCBtYW5hZ2VtZW50ICovCisJc3Bpbl9sb2NrX2luaXQoJmdwdS0+ZXZlbnRfc3Bp bmxvY2spOworCWluaXRfY29tcGxldGlvbigmZ3B1LT5ldmVudF9mcmVlKTsKKwlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShncHUtPmV2ZW50X3VzZWQpOyBpKyspIHsKKwkJZ3B1LT5ldmVudF91 c2VkW2ldID0gZmFsc2U7CisJCWNvbXBsZXRlKCZncHUtPmV2ZW50X2ZyZWUpOworCX0KKworCS8q IFN0YXJ0IGNvbW1hbmQgcHJvY2Vzc29yICovCisJd29yZHMgPSBldG5hdml2X2J1ZmZlcl9pbml0 KGdwdSk7CisKKwkvKiBjb252ZXJ0IG51bWJlciBvZiAzMiBiaXQgd29yZHMgdG8gbnVtYmVyIG9m IDY0IGJpdCB3b3JkcyAqLworCXdvcmRzID0gQUxJR04od29yZHMsIDIpIC8gMjsKKworCWdwdV93 cml0ZShncHUsIFZJVlNfSElfSU5UUl9FTkJMLCB+MFUpOworCWdwdV93cml0ZShncHUsIFZJVlNf RkVfQ09NTUFORF9BRERSRVNTLCBldG5hdml2X2dlbV9wYWRkcl9sb2NrZWQoZ3B1LT5idWZmZXIp KTsKKwlncHVfd3JpdGUoZ3B1LCBWSVZTX0ZFX0NPTU1BTkRfQ09OVFJPTCwgVklWU19GRV9DT01N QU5EX0NPTlRST0xfRU5BQkxFIHwgVklWU19GRV9DT01NQU5EX0NPTlRST0xfUFJFRkVUQ0god29y ZHMpKTsKKworCXJldHVybiAwOworCitmYWlsOgorCXJldHVybiByZXQ7Cit9CisKKyNpZmRlZiBD T05GSUdfREVCVUdfRlMKK3N0cnVjdCBkbWFfZGVidWcgeworCXUzMiBhZGRyZXNzWzJdOworCXUz MiBzdGF0ZVsyXTsKK307CisKK3N0YXRpYyB2b2lkIHZlcmlmeV9kbWEoc3RydWN0IGV0bmF2aXZf Z3B1ICpncHUsIHN0cnVjdCBkbWFfZGVidWcgKmRlYnVnKQoreworCXUzMiBpOworCisJZGVidWct PmFkZHJlc3NbMF0gPSBncHVfcmVhZChncHUsIFZJVlNfRkVfRE1BX0FERFJFU1MpOworCWRlYnVn LT5zdGF0ZVswXSAgID0gZ3B1X3JlYWQoZ3B1LCBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURSk7CisK Kwlmb3IgKGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKwkJZGVidWctPmFkZHJlc3NbMV0gPSBncHVf cmVhZChncHUsIFZJVlNfRkVfRE1BX0FERFJFU1MpOworCQlkZWJ1Zy0+c3RhdGVbMV0gICA9IGdw dV9yZWFkKGdwdSwgVklWU19GRV9ETUFfREVCVUdfU1RBVEUpOworCisJCWlmIChkZWJ1Zy0+YWRk cmVzc1swXSAhPSBkZWJ1Zy0+YWRkcmVzc1sxXSkKKwkJCWJyZWFrOworCisJCWlmIChkZWJ1Zy0+ c3RhdGVbMF0gIT0gZGVidWctPnN0YXRlWzFdKQorCQkJYnJlYWs7CisJfQorfQorCit2b2lkIGV0 bmF2aXZfZ3B1X2RlYnVnZnMoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHN0cnVjdCBzZXFfZmls ZSAqbSkKK3sKKwlzdHJ1Y3QgZG1hX2RlYnVnIGRlYnVnOworCXUzMiBkbWFfbG8gPSBncHVfcmVh ZChncHUsIFZJVlNfRkVfRE1BX0xPVyk7CisJdTMyIGRtYV9oaSA9IGdwdV9yZWFkKGdwdSwgVklW U19GRV9ETUFfSElHSCk7CisJdTMyIGF4aSA9IGdwdV9yZWFkKGdwdSwgVklWU19ISV9BWElfU1RB VFVTKTsKKwl1MzIgaWRsZSA9IGdwdV9yZWFkKGdwdSwgVklWU19ISV9JRExFX1NUQVRFKTsKKwor CXZlcmlmeV9kbWEoZ3B1LCAmZGVidWcpOworCisJc2VxX3ByaW50ZihtLCAiXHRheGk6IDB4MDgl eFxuIiwgYXhpKTsKKwlzZXFfcHJpbnRmKG0sICJcdGlkbGU6IDB4MDgleFxuIiwgaWRsZSk7CisJ aWYgKChpZGxlICYgVklWU19ISV9JRExFX1NUQVRFX0ZFKSA9PSAwKQorCQlzZXFfcHV0cyhtLCAi XHQgRkUgaXMgbm90IGlkbGVcbiIpOworCWlmICgoaWRsZSAmIFZJVlNfSElfSURMRV9TVEFURV9E RSkgPT0gMCkKKwkJc2VxX3B1dHMobSwgIlx0IERFIGlzIG5vdCBpZGxlXG4iKTsKKwlpZiAoKGlk bGUgJiBWSVZTX0hJX0lETEVfU1RBVEVfUEUpID09IDApCisJCXNlcV9wdXRzKG0sICJcdCBQRSBp cyBub3QgaWRsZVxuIik7CisJaWYgKChpZGxlICYgVklWU19ISV9JRExFX1NUQVRFX1NIKSA9PSAw KQorCQlzZXFfcHV0cyhtLCAiXHQgU0ggaXMgbm90IGlkbGVcbiIpOworCWlmICgoaWRsZSAmIFZJ VlNfSElfSURMRV9TVEFURV9QQSkgPT0gMCkKKwkJc2VxX3B1dHMobSwgIlx0IFBBIGlzIG5vdCBp ZGxlXG4iKTsKKwlpZiAoKGlkbGUgJiBWSVZTX0hJX0lETEVfU1RBVEVfU0UpID09IDApCisJCXNl cV9wdXRzKG0sICJcdCBTRSBpcyBub3QgaWRsZVxuIik7CisJaWYgKChpZGxlICYgVklWU19ISV9J RExFX1NUQVRFX1JBKSA9PSAwKQorCQlzZXFfcHV0cyhtLCAiXHQgUkEgaXMgbm90IGlkbGVcbiIp OworCWlmICgoaWRsZSAmIFZJVlNfSElfSURMRV9TVEFURV9UWCkgPT0gMCkKKwkJc2VxX3B1dHMo bSwgIlx0IFRYIGlzIG5vdCBpZGxlXG4iKTsKKwlpZiAoKGlkbGUgJiBWSVZTX0hJX0lETEVfU1RB VEVfVkcpID09IDApCisJCXNlcV9wdXRzKG0sICJcdCBWRyBpcyBub3QgaWRsZVxuIik7CisJaWYg KChpZGxlICYgVklWU19ISV9JRExFX1NUQVRFX0lNKSA9PSAwKQorCQlzZXFfcHV0cyhtLCAiXHQg SU0gaXMgbm90IGlkbGVcbiIpOworCWlmICgoaWRsZSAmIFZJVlNfSElfSURMRV9TVEFURV9GUCkg PT0gMCkKKwkJc2VxX3B1dHMobSwgIlx0IEZQIGlzIG5vdCBpZGxlXG4iKTsKKwlpZiAoKGlkbGUg JiBWSVZTX0hJX0lETEVfU1RBVEVfVFMpID09IDApCisJCXNlcV9wdXRzKG0sICJcdCBUUyBpcyBu b3QgaWRsZVxuIik7CisJaWYgKGlkbGUgJiBWSVZTX0hJX0lETEVfU1RBVEVfQVhJX0xQKQorCQlz ZXFfcHV0cyhtLCAiXHQgQVhJIGxvdyBwb3dlciBtb2RlXG4iKTsKKworCWlmIChncHUtPmlkZW50 aXR5LmZlYXR1cmVzICYgY2hpcEZlYXR1cmVzX0RFQlVHX01PREUpIHsKKwkJdTMyIHJlYWQwID0g Z3B1X3JlYWQoZ3B1LCBWSVZTX01DX0RFQlVHX1JFQUQwKTsKKwkJdTMyIHJlYWQxID0gZ3B1X3Jl YWQoZ3B1LCBWSVZTX01DX0RFQlVHX1JFQUQxKTsKKwkJdTMyIHdyaXRlID0gZ3B1X3JlYWQoZ3B1 LCBWSVZTX01DX0RFQlVHX1dSSVRFKTsKKworCQlzZXFfcHV0cyhtLCAiXHRNQ1xuIik7CisJCXNl cV9wcmludGYobSwgIlx0IHJlYWQwOiAweCUwOHhcbiIsIHJlYWQwKTsKKwkJc2VxX3ByaW50Ziht LCAiXHQgcmVhZDE6IDB4JTA4eFxuIiwgcmVhZDEpOworCQlzZXFfcHJpbnRmKG0sICJcdCB3cml0 ZTogMHglMDh4XG4iLCB3cml0ZSk7CisJfQorCisJc2VxX3B1dHMobSwgIlx0RE1BICIpOworCisJ aWYgKChkZWJ1Zy5hZGRyZXNzWzBdID09IGRlYnVnLmFkZHJlc3NbMV0pICYmIChkZWJ1Zy5zdGF0 ZVswXSA9PSBkZWJ1Zy5zdGF0ZVsxXSkpIHsKKwkJc2VxX3B1dHMobSwgInNlZW1zIHRvIGJlIHN0 dWNrXG4iKTsKKwl9IGVsc2UgeworCQlpZiAoZGVidWcuYWRkcmVzc1swXSA9PSBkZWJ1Zy5hZGRy ZXNzWzFdKQorCQkJc2VxX3B1dHMobSwgImFkcmVzcyBpcyBjb25zdGFudFxuIik7CisJCWVsc2UK KwkJCXNlcV9wdXRzKG0sICJpcyBydW5pbmdcbiIpOworCX0KKworCXNlcV9wcmludGYobSwgIlx0 IGFkZHJlc3MgMDogMHglMDh4XG4iLCBkZWJ1Zy5hZGRyZXNzWzBdKTsKKwlzZXFfcHJpbnRmKG0s ICJcdCBhZGRyZXNzIDE6IDB4JTA4eFxuIiwgZGVidWcuYWRkcmVzc1sxXSk7CisJc2VxX3ByaW50 ZihtLCAiXHQgc3RhdGUgMDogMHglMDh4XG4iLCBkZWJ1Zy5zdGF0ZVswXSk7CisJc2VxX3ByaW50 ZihtLCAiXHQgc3RhdGUgMTogMHglMDh4XG4iLCBkZWJ1Zy5zdGF0ZVsxXSk7CisJc2VxX3ByaW50 ZihtLCAiXHQgbGFzdCBmZXRjaCA2NCBiaXQgd29yZDogMHglMDh4LTB4JTA4eFxuIiwgZG1hX2hp LCBkbWFfbG8pOworfQorI2VuZGlmCisKKy8qCisgKiBQb3dlciBNYW5hZ2VtZW50OgorICovCisK K3N0YXRpYyBpbnQgZW5hYmxlX3B3cnJhaWwoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCit7Cisj aWYgMAorCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBncHUtPmRldjsKKwlpbnQgcmV0ID0gMDsK KworCWlmIChncHUtPmdwdV9yZWcpIHsKKwkJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShncHUtPmdw dV9yZWcpOworCQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIGVu YWJsZSAnZ3B1X3JlZyc6ICVkXG4iLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKwor CWlmIChncHUtPmdwdV9jeCkgeworCQlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGdwdS0+Z3B1X2N4 KTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBlbmFibGUg J2dwdV9jeCc6ICVkXG4iLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKyNlbmRpZgor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRpc2FibGVfcHdycmFpbChzdHJ1Y3QgZXRuYXZp dl9ncHUgKmdwdSkKK3sKKyNpZiAwCisJaWYgKGdwdS0+Z3B1X2N4KQorCQlyZWd1bGF0b3JfZGlz YWJsZShncHUtPmdwdV9jeCk7CisJaWYgKGdwdS0+Z3B1X3JlZykKKwkJcmVndWxhdG9yX2Rpc2Fi bGUoZ3B1LT5ncHVfcmVnKTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVu YWJsZV9jbGsoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCit7CisJaWYgKGdwdS0+Y2xrX2NvcmUp CisJCWNsa19wcmVwYXJlX2VuYWJsZShncHUtPmNsa19jb3JlKTsKKwlpZiAoZ3B1LT5jbGtfc2hh ZGVyKQorCQljbGtfcHJlcGFyZV9lbmFibGUoZ3B1LT5jbGtfc2hhZGVyKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGRpc2FibGVfY2xrKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQor eworCWlmIChncHUtPmNsa19jb3JlKQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUoZ3B1LT5jbGtf Y29yZSk7CisJaWYgKGdwdS0+Y2xrX3NoYWRlcikKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGdw dS0+Y2xrX3NoYWRlcik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBlbmFibGVfYXhp KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQoreworCWlmIChncHUtPmNsa19idXMpCisJCWNsa19w cmVwYXJlX2VuYWJsZShncHUtPmNsa19idXMpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgZGlzYWJsZV9heGkoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCit7CisJaWYgKGdwdS0+Y2xr X2J1cykKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGdwdS0+Y2xrX2J1cyk7CisKKwlyZXR1cm4g MDsKK30KKworaW50IGV0bmF2aXZfZ3B1X3BtX3Jlc3VtZShzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdw dSkKK3sKKwlpbnQgcmV0OworCisJREJHKCIlcyIsIGdwdS0+bmFtZSk7CisKKwlyZXQgPSBlbmFi bGVfcHdycmFpbChncHUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBlbmFi bGVfY2xrKGdwdSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGVuYWJsZV9h eGkoZ3B1KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CisKK2lu dCBldG5hdml2X2dwdV9wbV9zdXNwZW5kKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQoreworCWlu dCByZXQ7CisKKwlEQkcoIiVzIiwgZ3B1LT5uYW1lKTsKKworCXJldCA9IGRpc2FibGVfYXhpKGdw dSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGRpc2FibGVfY2xrKGdwdSk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGRpc2FibGVfcHdycmFpbChncHUp OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEhh bmdjaGVjayBkZXRlY3Rpb24gZm9yIGxvY2tlZCBncHU6CisgKi8KK3N0YXRpYyB2b2lkIHJlY292 ZXJfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9n cHUgKmdwdSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZXRuYXZpdl9ncHUsIHJlY292ZXJf d29yayk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGdwdS0+ZGV2OworCisJZGV2X2Vycihk ZXYtPmRldiwgIiVzOiBoYW5nY2hlY2sgcmVjb3ZlciFcbiIsIGdwdS0+bmFtZSk7CisKKwltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJLyogVE9ETyBncHUtPmZ1bmNzLT5yZWNvdmVy KGdwdSk7ICovCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKKwlldG5hdml2 X2dwdV9yZXRpcmUoZ3B1KTsKK30KKworc3RhdGljIHZvaWQgaGFuZ2NoZWNrX3RpbWVyX3Jlc2V0 KHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQoreworCURCRygiJXMiLCBncHUtPm5hbWUpOworCW1v ZF90aW1lcigmZ3B1LT5oYW5nY2hlY2tfdGltZXIsCisJCQlyb3VuZF9qaWZmaWVzX3VwKGppZmZp ZXMgKyBEUk1fTVNNX0hBTkdDSEVDS19KSUZGSUVTKSk7Cit9CisKK3N0YXRpYyB2b2lkIGhhbmdj aGVja19oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9ncHUg KmdwdSA9IChzdHJ1Y3QgZXRuYXZpdl9ncHUgKilkYXRhOworCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBncHUtPmRldjsKKwlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJdWludDMyX3QgZmVuY2UgPSBncHUtPnJldGlyZWRfZmVuY2U7CisKKwlp ZiAoZmVuY2UgIT0gZ3B1LT5oYW5nY2hlY2tfZmVuY2UpIHsKKwkJLyogc29tZSBwcm9ncmVzcyBo YXMgYmVlbiBtYWRlLi4geWEhICovCisJCWdwdS0+aGFuZ2NoZWNrX2ZlbmNlID0gZmVuY2U7CisJ fSBlbHNlIGlmIChmZW5jZSA8IGdwdS0+c3VibWl0dGVkX2ZlbmNlKSB7CisJCS8qIG5vIHByb2dy ZXNzIGFuZCBub3QgZG9uZS4uIGh1bmchICovCisJCWdwdS0+aGFuZ2NoZWNrX2ZlbmNlID0gZmVu Y2U7CisJCWRldl9lcnIoZGV2LT5kZXYsICIlczogaGFuZ2NoZWNrIGRldGVjdGVkIGdwdSBsb2Nr dXAhXG4iLAorCQkJCWdwdS0+bmFtZSk7CisJCWRldl9lcnIoZGV2LT5kZXYsICIlczogICAgIGNv bXBsZXRlZCBmZW5jZTogJXVcbiIsCisJCQkJZ3B1LT5uYW1lLCBmZW5jZSk7CisJCWRldl9lcnIo ZGV2LT5kZXYsICIlczogICAgIHN1Ym1pdHRlZCBmZW5jZTogJXVcbiIsCisJCQkJZ3B1LT5uYW1l LCBncHUtPnN1Ym1pdHRlZF9mZW5jZSk7CisJCXF1ZXVlX3dvcmsocHJpdi0+d3EsICZncHUtPnJl Y292ZXJfd29yayk7CisJfQorCisJLyogaWYgc3RpbGwgbW9yZSBwZW5kaW5nIHdvcmssIHJlc2V0 IHRoZSBoYW5nY2hlY2sgdGltZXI6ICovCisJaWYgKGdwdS0+c3VibWl0dGVkX2ZlbmNlID4gZ3B1 LT5oYW5nY2hlY2tfZmVuY2UpCisJCWhhbmdjaGVja190aW1lcl9yZXNldChncHUpOworfQorCisv KgorICogZXZlbnQgbWFuYWdlbWVudDoKKyAqLworCitzdGF0aWMgdW5zaWduZWQgaW50IGV2ZW50 X2FsbG9jKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQoreworCXVuc2lnbmVkIGxvbmcgcmV0LCBm bGFnczsKKwl1bnNpZ25lZCBpbnQgaSwgZXZlbnQgPSB+MFU7CisKKwlyZXQgPSB3YWl0X2Zvcl9j b21wbGV0aW9uX3RpbWVvdXQoJmdwdS0+ZXZlbnRfZnJlZSwgbXNlY3NfdG9famlmZmllcygxMCAq IDEwMDAwKSk7CisJaWYgKCFyZXQpCisJCWRldl9lcnIoZ3B1LT5kZXYtPmRldiwgIndhaXRfZm9y X2NvbXBsZXRpb25fdGltZW91dCBmYWlsZWQiKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZncHUt PmV2ZW50X3NwaW5sb2NrLCBmbGFncyk7CisKKwkvKiBmaW5kIGZpcnN0IGZyZWUgZXZlbnQgKi8K Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShncHUtPmV2ZW50X3VzZWQpOyBpKyspIHsKKwkJ aWYgKGdwdS0+ZXZlbnRfdXNlZFtpXSA9PSBmYWxzZSkgeworCQkJZ3B1LT5ldmVudF91c2VkW2ld ID0gdHJ1ZTsKKwkJCWV2ZW50ID0gaTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZ3B1LT5ldmVudF9zcGlubG9jaywgZmxhZ3MpOworCisJcmV0dXJuIGV2 ZW50OworfQorCitzdGF0aWMgdm9pZCBldmVudF9mcmVlKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1 LCB1bnNpZ25lZCBpbnQgZXZlbnQpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5f bG9ja19pcnFzYXZlKCZncHUtPmV2ZW50X3NwaW5sb2NrLCBmbGFncyk7CisKKwlpZiAoZ3B1LT5l dmVudF91c2VkW2V2ZW50XSA9PSBmYWxzZSkgeworCQlkZXZfd2FybihncHUtPmRldi0+ZGV2LCAi ZXZlbnQgJXUgaXMgYWxyZWFkeSBtYXJrZWQgYXMgZnJlZSIsIGV2ZW50KTsKKwkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZ3B1LT5ldmVudF9zcGlubG9jaywgZmxhZ3MpOworCX0gZWxzZSB7CisJ CWdwdS0+ZXZlbnRfdXNlZFtldmVudF0gPSBmYWxzZTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZ3B1LT5ldmVudF9zcGlubG9jaywgZmxhZ3MpOworCisJCWNvbXBsZXRlKCZncHUtPmV2ZW50 X2ZyZWUpOworCX0KK30KKworLyoKKyAqIENtZHN0cmVhbSBzdWJtaXNzaW9uL3JldGlyZW1lbnQ6 CisgKi8KKworc3RhdGljIHZvaWQgcmV0aXJlX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCit7CisJc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUgPSBjb250YWluZXJfb2Yod29yaywgc3Ry dWN0IGV0bmF2aXZfZ3B1LCByZXRpcmVfd29yayk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGdwdS0+ZGV2OworCXVpbnQzMl90IGZlbmNlID0gZ3B1LT5yZXRpcmVkX2ZlbmNlOworCisJZXRu YXZpdl91cGRhdGVfZmVuY2UoZ3B1LT5kZXYsIGZlbmNlKTsKKworCW11dGV4X2xvY2soJmRldi0+ c3RydWN0X211dGV4KTsKKworCXdoaWxlICghbGlzdF9lbXB0eSgmZ3B1LT5hY3RpdmVfbGlzdCkp IHsKKwkJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqb2JqOworCisJCW9iaiA9IGxpc3RfZmly c3RfZW50cnkoJmdwdS0+YWN0aXZlX2xpc3QsCisJCQkJc3RydWN0IGV0bmF2aXZfZ2VtX29iamVj dCwgbW1fbGlzdCk7CisKKwkJaWYgKChvYmotPnJlYWRfZmVuY2UgPD0gZmVuY2UpICYmCisJCQkJ KG9iai0+d3JpdGVfZmVuY2UgPD0gZmVuY2UpKSB7CisJCQkvKiBtb3ZlIHRvIGluYWN0aXZlOiAq LworCQkJZXRuYXZpdl9nZW1fbW92ZV90b19pbmFjdGl2ZSgmb2JqLT5iYXNlKTsKKwkJCWV0bmF2 aXZfZ2VtX3B1dF9pb3ZhKCZvYmotPmJhc2UpOworCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVu Y2UoJm9iai0+YmFzZSk7CisJCX0gZWxzZSB7CisJCQlicmVhazsKKwkJfQorCX0KKworCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworfQorCisvKiBjYWxsIGZyb20gaXJxIGhhbmRs ZXIgdG8gc2NoZWR1bGUgd29yayB0byByZXRpcmUgYm8ncyAqLwordm9pZCBldG5hdml2X2dwdV9y ZXRpcmUoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpCit7CisJc3RydWN0IGV0bmF2aXZfZHJtX3By aXZhdGUgKnByaXYgPSBncHUtPmRldi0+ZGV2X3ByaXZhdGU7CisJcXVldWVfd29yayhwcml2LT53 cSwgJmdwdS0+cmV0aXJlX3dvcmspOworfQorCisvKiBhZGQgYm8ncyB0byBncHUncyByaW5nLCBh bmQga2ljayBncHU6ICovCitpbnQgZXRuYXZpdl9ncHVfc3VibWl0KHN0cnVjdCBldG5hdml2X2dw dSAqZ3B1LCBzdHJ1Y3QgZXRuYXZpdl9nZW1fc3VibWl0ICpzdWJtaXQsCisJCXN0cnVjdCBldG5h dml2X2ZpbGVfcHJpdmF0ZSAqY3R4KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBncHUt PmRldjsKKwlzdHJ1Y3QgZXRuYXZpdl9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CisJaW50IHJldCA9IDA7CisJdW5zaWduZWQgaW50IGV2ZW50LCBpOworCisJc3VibWl0LT5m ZW5jZSA9ICsrcHJpdi0+bmV4dF9mZW5jZTsKKworCWdwdS0+c3VibWl0dGVkX2ZlbmNlID0gc3Vi bWl0LT5mZW5jZTsKKworCS8qCisJICogVE9ETworCSAqCisJICogLSBmbHVzaAorCSAqIC0gZGF0 YSBlbmRpYW4KKwkgKiAtIHByZWZldGNoCisJICoKKwkgKi8KKworCWV2ZW50ID0gZXZlbnRfYWxs b2MoZ3B1KTsKKwlpZiAodW5saWtlbHkoZXZlbnQgPT0gfjBVKSkgeworCQlEUk1fRVJST1IoIm5v IGZyZWUgZXZlbnRcbiIpOworCQlyZXQgPSAtRUJVU1k7CisJCWdvdG8gZmFpbDsKKwl9CisKKwln cHUtPmV2ZW50X3RvX2ZlbmNlW2V2ZW50XSA9IHN1Ym1pdC0+ZmVuY2U7CisKKwlldG5hdml2X2J1 ZmZlcl9xdWV1ZShncHUsIGV2ZW50LCBzdWJtaXQpOworCisJcHJpdi0+bGFzdGN0eCA9IGN0eDsK KworCWZvciAoaSA9IDA7IGkgPCBzdWJtaXQtPm5yX2JvczsgaSsrKSB7CisJCXN0cnVjdCBldG5h dml2X2dlbV9vYmplY3QgKmV0bmF2aXZfb2JqID0gc3VibWl0LT5ib3NbaV0ub2JqOworCisJCS8q IGNhbid0IGhhcHBlbiB5ZXQuLiBidXQgd2hlbiB3ZSBhZGQgMmQgc3VwcG9ydCB3ZSdsbCBoYXZl CisJCSAqIHRvIGRlYWwgdy8gY3Jvc3MtcmluZyBzeW5jaHJvbml6YXRpb246CisJCSAqLworCQlX QVJOX09OKGlzX2FjdGl2ZShldG5hdml2X29iaikgJiYgKGV0bmF2aXZfb2JqLT5ncHUgIT0gZ3B1 KSk7CisKKwkJaWYgKCFpc19hY3RpdmUoZXRuYXZpdl9vYmopKSB7CisJCQl1aW50MzJfdCBpb3Zh OworCisJCQkvKiByaW5nIHRha2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBibyBhbmQgaW92YTogKi8K KwkJCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmZXRuYXZpdl9vYmotPmJhc2UpOworCQkJZXRu YXZpdl9nZW1fZ2V0X2lvdmFfbG9ja2VkKGdwdSwgJmV0bmF2aXZfb2JqLT5iYXNlLCAmaW92YSk7 CisJCX0KKworCQlpZiAoc3VibWl0LT5ib3NbaV0uZmxhZ3MgJiBFVE5BX1NVQk1JVF9CT19SRUFE KQorCQkJZXRuYXZpdl9nZW1fbW92ZV90b19hY3RpdmUoJmV0bmF2aXZfb2JqLT5iYXNlLCBncHUs IGZhbHNlLCBzdWJtaXQtPmZlbmNlKTsKKworCQlpZiAoc3VibWl0LT5ib3NbaV0uZmxhZ3MgJiBF VE5BX1NVQk1JVF9CT19XUklURSkKKwkJCWV0bmF2aXZfZ2VtX21vdmVfdG9fYWN0aXZlKCZldG5h dml2X29iai0+YmFzZSwgZ3B1LCB0cnVlLCBzdWJtaXQtPmZlbmNlKTsKKwl9CisJaGFuZ2NoZWNr X3RpbWVyX3Jlc2V0KGdwdSk7CisKK2ZhaWw6CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIElu aXQvQ2xlYW51cDoKKyAqLworc3RhdGljIGlycXJldHVybl90IGlycV9oYW5kbGVyKGludCBpcnEs IHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUgPSBkYXRhOworCWlycXJl dHVybl90IHJldCA9IElSUV9OT05FOworCisJdTMyIGludHIgPSBncHVfcmVhZChncHUsIFZJVlNf SElfSU5UUl9BQ0tOT1dMRURHRSk7CisKKwlpZiAoaW50ciAhPSAwKSB7CisJCWRldl9kYmcoZ3B1 LT5kZXYtPmRldiwgImludHIgMHglMDh4XG4iLCBpbnRyKTsKKworCQlpZiAoaW50ciAmIFZJVlNf SElfSU5UUl9BQ0tOT1dMRURHRV9BWElfQlVTX0VSUk9SKQorCQkJZGV2X2VycihncHUtPmRldi0+ ZGV2LCAiQVhJIGJ1cyBlcnJvclxuIik7CisJCWVsc2UgeworCQkJdWludDhfdCBldmVudCA9IF9f ZmxzKGludHIpOworCQkJZGV2X2RiZyhncHUtPmRldi0+ZGV2LCAiZXZlbnQgJXVcbiIsIGV2ZW50 KTsKKwkJCWdwdS0+cmV0aXJlZF9mZW5jZSA9IGdwdS0+ZXZlbnRfdG9fZmVuY2VbZXZlbnRdOwor CQkJZXZlbnRfZnJlZShncHUsIGV2ZW50KTsKKwkJCWV0bmF2aXZfZ3B1X3JldGlyZShncHUpOwor CQl9CisKKwkJcmV0ID0gSVJRX0hBTkRMRUQ7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludCBldG5hdml2X2dwdV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj ZSAqbWFzdGVyLAorCXZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRh dGE7CisJc3RydWN0IGV0bmF2aXZfZHJtX3ByaXZhdGUgKnByaXYgPSBkcm0tPmRldl9wcml2YXRl OworCXN0cnVjdCBldG5hdml2X2dwdSAqZ3B1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50 IGlkeCA9IGdwdS0+cGlwZTsKKworCWRldl9pbmZvKGRldiwgInByZSBncHVbaWR4XTogMHglMDh4 XG4iLCAodTMyKXByaXYtPmdwdVtpZHhdKTsKKworCWlmIChwcml2LT5ncHVbaWR4XSA9PSAwKSB7 CisJCWRldl9pbmZvKGRldiwgImFkZGluZyBjb3JlIEBpZHggJWRcbiIsIGlkeCk7CisJCXByaXYt PmdwdVtpZHhdID0gZ3B1OworCX0gZWxzZSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGFk ZCBjb3JlIEBpZHggJWRcbiIsIGlkeCk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlkZXZfaW5mbyhk ZXYsICJwb3N0IGdwdVtpZHhdOiAweCUwOHhcbiIsICh1MzIpcHJpdi0+Z3B1W2lkeF0pOworCisJ Z3B1LT5kZXYgPSBkcm07CisKKwlJTklUX0xJU1RfSEVBRCgmZ3B1LT5hY3RpdmVfbGlzdCk7CisJ SU5JVF9XT1JLKCZncHUtPnJldGlyZV93b3JrLCByZXRpcmVfd29ya2VyKTsKKwlJTklUX1dPUkso JmdwdS0+cmVjb3Zlcl93b3JrLCByZWNvdmVyX3dvcmtlcik7CisKKwlzZXR1cF90aW1lcigmZ3B1 LT5oYW5nY2hlY2tfdGltZXIsIGhhbmdjaGVja19oYW5kbGVyLAorCQkJKHVuc2lnbmVkIGxvbmcp Z3B1KTsKKwlyZXR1cm4gMDsKK2ZhaWw6CisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZCBl dG5hdml2X2dwdV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsCisJdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOworCisJREJHKCIlcyIsIGdwdS0+bmFtZSk7CisKKwlXQVJOX09OKCFsaXN0 X2VtcHR5KCZncHUtPmFjdGl2ZV9saXN0KSk7CisKKwlpZiAoZ3B1LT5idWZmZXIpCisJCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlKGdwdS0+YnVmZmVyKTsKKworCWlmIChncHUtPm1tdSkKKwkJ ZXRuYXZpdl9pb21tdV9kZXN0cm95KGdwdS0+bW11KTsKKworCWRybV9tbV90YWtlZG93bigmZ3B1 LT5tbSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBncHVfb3BzID0g eworCS5iaW5kID0gZXRuYXZpdl9ncHVfYmluZCwKKwkudW5iaW5kID0gZXRuYXZpdl9ncHVfdW5i aW5kLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZXRuYXZpdl9ncHVf bWF0Y2hbXSA9IHsKKwl7CisJCS5jb21wYXRpYmxlID0gInZpdmFudGUsdml2YW50ZS1ncHUtMmQi LAorCQkuZGF0YSA9ICh2b2lkICopRVROQV9QSVBFXzJECisJfSwKKwl7CisJCS5jb21wYXRpYmxl ID0gInZpdmFudGUsdml2YW50ZS1ncHUtM2QiLAorCQkuZGF0YSA9ICh2b2lkICopRVROQV9QSVBF XzNECisJfSwKKwl7CisJCS5jb21wYXRpYmxlID0gInZpdmFudGUsdml2YW50ZS1ncHUtdmciLAor CQkuZGF0YSA9ICh2b2lkICopRVROQV9QSVBFX1ZHCisJfSwKKwl7IH0KK307CisKK3N0YXRpYyBp bnQgZXRuYXZpdl9ncHVfcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKK3sKKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBldG5hdml2X2dwdSAqZ3B1OworCWludCBlcnIg PSAwOworCisJZ3B1ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpncHUpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIWdwdSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltYXRjaCA9IG9mX21hdGNoX2Rl dmljZShldG5hdml2X2dwdV9tYXRjaCwgJnBkZXYtPmRldik7CisJaWYgKCFtYXRjaCkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlncHUtPm5hbWUgPSBwZGV2LT5uYW1lOworCisJLyogTWFwIHJlZ2lz dGVyczogKi8KKwlncHUtPm1taW8gPSBldG5hdml2X2lvcmVtYXAocGRldiwgTlVMTCwgZ3B1LT5u YW1lKTsKKwlpZiAoSVNfRVJSKGdwdS0+bW1pbykpCisJCXJldHVybiBQVFJfRVJSKGdwdS0+bW1p byk7CisKKwkvKiBHZXQgSW50ZXJydXB0OiAqLworCWdwdS0+aXJxID0gcGxhdGZvcm1fZ2V0X2ly cShwZGV2LCAwKTsKKwlpZiAoZ3B1LT5pcnEgPCAwKSB7CisJCWVyciA9IGdwdS0+aXJxOworCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgaXJxOiAlZFxuIiwgZXJyKTsKKwkJZ290byBmYWls OworCX0KKworCWVyciA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwgZ3B1LT5pcnEsIGly cV9oYW5kbGVyLAorCQkJSVJRRl9UUklHR0VSX0hJR0gsIGdwdS0+bmFtZSwgZ3B1KTsKKwlpZiAo ZXJyKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIHJlcXVlc3QgSVJRJXU6ICVkXG4iLCBn cHUtPmlycSwgZXJyKTsKKwkJZ290byBmYWlsOworCX0KKworCS8qIEdldCBDbG9ja3M6ICovCisJ Z3B1LT5jbGtfYnVzID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJidXMiKTsKKwlEQkcoImNs a19idXM6ICVwIiwgZ3B1LT5jbGtfYnVzKTsKKwlpZiAoSVNfRVJSKGdwdS0+Y2xrX2J1cykpCisJ CWdwdS0+Y2xrX2J1cyA9IE5VTEw7CisKKwlncHUtPmNsa19jb3JlID0gZGV2bV9jbGtfZ2V0KCZw ZGV2LT5kZXYsICJjb3JlIik7CisJREJHKCJjbGtfY29yZTogJXAiLCBncHUtPmNsa19jb3JlKTsK KwlpZiAoSVNfRVJSKGdwdS0+Y2xrX2NvcmUpKQorCQlncHUtPmNsa19jb3JlID0gTlVMTDsKKwor CWdwdS0+Y2xrX3NoYWRlciA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAic2hhZGVyIik7CisJ REJHKCJjbGtfc2hhZGVyOiAlcCIsIGdwdS0+Y2xrX3NoYWRlcik7CisJaWYgKElTX0VSUihncHUt PmNsa19zaGFkZXIpKQorCQlncHUtPmNsa19zaGFkZXIgPSBOVUxMOworCisJZ3B1LT5waXBlID0g KGludCltYXRjaC0+ZGF0YTsKKworCS8qIFRPRE86IGZpZ3VyZSBvdXQgbWF4IG1hcHBlZCBzaXpl ICovCisJZHJtX21tX2luaXQoJmdwdS0+bW0sIDB4ODAwMDAwMDAsIFNaXzFHKTsKKworCWRldl9z ZXRfZHJ2ZGF0YShkZXYsIGdwdSk7CisKKwllcnIgPSBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYs ICZncHVfb3BzKTsKKwlpZiAoZXJyIDwgMCkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWls ZWQgdG8gcmVnaXN0ZXIgY29tcG9uZW50OiAlZFxuIiwgZXJyKTsKKwkJZ290byBmYWlsOworCX0K KworCXJldHVybiAwOworCitmYWlsOgorCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgZXRu YXZpdl9ncHVfcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmZ3B1X29wcyk7CisJcmV0dXJuIDA7Cit9CisK K3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZXRuYXZpdl9ncHVfZHJpdmVyID0geworCS5kcml2ZXIg PSB7CisJCS5uYW1lID0gImV0bmF2aXYtZ3B1IiwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCisJ CS5vZl9tYXRjaF90YWJsZSA9IGV0bmF2aXZfZ3B1X21hdGNoLAorCX0sCisJLnByb2JlID0gZXRu YXZpdl9ncHVfcGxhdGZvcm1fcHJvYmUsCisJLnJlbW92ZSA9IGV0bmF2aXZfZ3B1X3BsYXRmb3Jt X3JlbW92ZSwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2 X2dwdS5oIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9ncHUuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcwNzA5NmI1ZmU5OAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfZ3B1LmgKQEAgLTAsMCArMSwx NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmVkIEhhdAorICogQXV0aG9yOiBSb2Ig Q2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy IGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv cgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAq LworCisjaWZuZGVmIF9fRVROQVZJVl9HUFVfSF9fCisjZGVmaW5lIF9fRVROQVZJVl9HUFVfSF9f CisKKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29u c3VtZXIuaD4KKworI2luY2x1ZGUgImV0bmF2aXZfZHJ2LmgiCisKK3N0cnVjdCBldG5hdml2X2dl bV9zdWJtaXQ7CisKK3N0cnVjdCBldG5hdml2X2NoaXBfaWRlbnRpdHkgeworCS8qIENoaXAgbW9k ZWwuICovCisJdWludDMyX3QgbW9kZWw7CisKKwkvKiBSZXZpc2lvbiB2YWx1ZS4qLworCXVpbnQz Ml90IHJldmlzaW9uOworCisJLyogU3VwcG9ydGVkIGZlYXR1cmUgZmllbGRzLiAqLworCXVpbnQz Ml90IGZlYXR1cmVzOworCisJLyogU3VwcG9ydGVkIG1pbm9yIGZlYXR1cmUgZmllbGRzLiAqLwor CXVpbnQzMl90IG1pbm9yX2ZlYXR1cmVzMDsKKworCS8qIFN1cHBvcnRlZCBtaW5vciBmZWF0dXJl IDEgZmllbGRzLiAqLworCXVpbnQzMl90IG1pbm9yX2ZlYXR1cmVzMTsKKworCS8qIFN1cHBvcnRl ZCBtaW5vciBmZWF0dXJlIDIgZmllbGRzLiAqLworCXVpbnQzMl90IG1pbm9yX2ZlYXR1cmVzMjsK KworCS8qIFN1cHBvcnRlZCBtaW5vciBmZWF0dXJlIDMgZmllbGRzLiAqLworCXVpbnQzMl90IG1p bm9yX2ZlYXR1cmVzMzsKKworCS8qIE51bWJlciBvZiBzdHJlYW1zIHN1cHBvcnRlZC4gKi8KKwl1 aW50MzJfdCBzdHJlYW1fY291bnQ7CisKKwkvKiBUb3RhbCBudW1iZXIgb2YgdGVtcG9yYXJ5IHJl Z2lzdGVycyBwZXIgdGhyZWFkLiAqLworCXVpbnQzMl90IHJlZ2lzdGVyX21heDsKKworCS8qIE1h eGltdW0gbnVtYmVyIG9mIHRocmVhZHMuICovCisJdWludDMyX3QgdGhyZWFkX2NvdW50OworCisJ LyogTnVtYmVyIG9mIHNoYWRlciBjb3Jlcy4gKi8KKwl1aW50MzJfdCBzaGFkZXJfY29yZV9jb3Vu dDsKKworCS8qIFNpemUgb2YgdGhlIHZlcnRleCBjYWNoZS4gKi8KKwl1aW50MzJfdCB2ZXJ0ZXhf Y2FjaGVfc2l6ZTsKKworCS8qIE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSB2ZXJ0ZXggb3V0cHV0 IGJ1ZmZlci4gKi8KKwl1aW50MzJfdCB2ZXJ0ZXhfb3V0cHV0X2J1ZmZlcl9zaXplOworCisJLyog TnVtYmVyIG9mIHBpeGVsIHBpcGVzLiAqLworCXVpbnQzMl90IHBpeGVsX3BpcGVzOworCisJLyog TnVtYmVyIG9mIGluc3RydWN0aW9ucy4gKi8KKwl1aW50MzJfdCBpbnN0cnVjdGlvbl9jb3VudDsK KworCS8qIE51bWJlciBvZiBjb25zdGFudHMuICovCisJdWludDMyX3QgbnVtX2NvbnN0YW50czsK KworCS8qIEJ1ZmZlciBzaXplICovCisJdWludDMyX3QgYnVmZmVyX3NpemU7Cit9OworCitzdHJ1 Y3QgZXRuYXZpdl9ncHUgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRldjsKKwlzdHJ1Y3QgZXRuYXZpdl9jaGlwX2lkZW50aXR5IGlkZW50aXR5OworCWludCBwaXBl OworCisJLyogJ3JpbmcnLWJ1ZmZlcjogKi8KKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmJ1ZmZl cjsKKworCS8qIGV2ZW50IG1hbmFnZW1lbnQ6ICovCisJYm9vbCBldmVudF91c2VkWzMwXTsKKwl1 aW50MzJfdCBldmVudF90b19mZW5jZVszMF07CisJc3RydWN0IGNvbXBsZXRpb24gZXZlbnRfZnJl ZTsKKwlzdHJ1Y3Qgc3BpbmxvY2sgZXZlbnRfc3BpbmxvY2s7CisKKwkvKiBsaXN0IG9mIEdFTSBh Y3RpdmUgb2JqZWN0czogKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OworCisJdWlu dDMyX3Qgc3VibWl0dGVkX2ZlbmNlOworCXVpbnQzMl90IHJldGlyZWRfZmVuY2U7CisKKwkvKiB3 b3JrZXIgZm9yIGhhbmRsaW5nIGFjdGl2ZS1saXN0IHJldGlyaW5nOiAqLworCXN0cnVjdCB3b3Jr X3N0cnVjdCByZXRpcmVfd29yazsKKworCXZvaWQgX19pb21lbSAqbW1pbzsKKwlpbnQgaXJxOwor CisJc3RydWN0IGV0bmF2aXZfaW9tbXUgKm1tdTsKKworCS8qIG1lbW9yeSBtYW5hZ2VyIGZvciBH UFUgYWRkcmVzcyBhcmVhICovCisJc3RydWN0IGRybV9tbSBtbTsKKworCS8qIFBvd2VyIENvbnRy b2w6ICovCisJc3RydWN0IGNsayAqY2xrX2J1czsKKwlzdHJ1Y3QgY2xrICpjbGtfY29yZTsKKwlz dHJ1Y3QgY2xrICpjbGtfc2hhZGVyOworCisJLyogSGFuZyBEZXRjdGlvbjogKi8KKyNkZWZpbmUg RFJNX01TTV9IQU5HQ0hFQ0tfUEVSSU9EIDUwMCAvKiBpbiBtcyAqLworI2RlZmluZSBEUk1fTVNN X0hBTkdDSEVDS19KSUZGSUVTIG1zZWNzX3RvX2ppZmZpZXMoRFJNX01TTV9IQU5HQ0hFQ0tfUEVS SU9EKQorCXN0cnVjdCB0aW1lcl9saXN0IGhhbmdjaGVja190aW1lcjsKKwl1aW50MzJfdCBoYW5n Y2hlY2tfZmVuY2U7CisJc3RydWN0IHdvcmtfc3RydWN0IHJlY292ZXJfd29yazsKK307CisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBncHVfd3JpdGUoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHUzMiBy ZWcsIHUzMiBkYXRhKQoreworCWV0bmF2aXZfd3JpdGVsKGRhdGEsIGdwdS0+bW1pbyArIHJlZyk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGdwdV9yZWFkKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1 LCB1MzIgcmVnKQoreworCXJldHVybiBldG5hdml2X3JlYWRsKGdwdS0+bW1pbyArIHJlZyk7Cit9 CisKK2ludCBldG5hdml2X2dwdV9nZXRfcGFyYW0oc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHVp bnQzMl90IHBhcmFtLCB1aW50NjRfdCAqdmFsdWUpOworCitpbnQgZXRuYXZpdl9ncHVfaW5pdChz dHJ1Y3QgZXRuYXZpdl9ncHUgKmdwdSk7CitpbnQgZXRuYXZpdl9ncHVfcG1fc3VzcGVuZChzdHJ1 Y3QgZXRuYXZpdl9ncHUgKmdwdSk7CitpbnQgZXRuYXZpdl9ncHVfcG1fcmVzdW1lKHN0cnVjdCBl dG5hdml2X2dwdSAqZ3B1KTsKKworI2lmZGVmIENPTkZJR19ERUJVR19GUwordm9pZCBldG5hdml2 X2dwdV9kZWJ1Z2ZzKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0p OworI2VuZGlmCisKK3ZvaWQgZXRuYXZpdl9ncHVfcmV0aXJlKHN0cnVjdCBldG5hdml2X2dwdSAq Z3B1KTsKK2ludCBldG5hdml2X2dwdV9zdWJtaXQoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUsIHN0 cnVjdCBldG5hdml2X2dlbV9zdWJtaXQgKnN1Ym1pdCwKKwkJc3RydWN0IGV0bmF2aXZfZmlsZV9w cml2YXRlICpjdHgpOworCitleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBldG5hdml2X2dw dV9kcml2ZXI7CisKKyNlbmRpZiAvKiBfX0VUTkFWSVZfR1BVX0hfXyAqLwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9pb21tdS5jIGIvZHJpdmVycy9zdGFnaW5n L2V0bmF2aXYvZXRuYXZpdl9pb21tdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZDA4MTFmYjEzMzYzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9zdGFnaW5n L2V0bmF2aXYvZXRuYXZpdl9pb21tdS5jCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQ29weXJp Z2h0IChDKSAyMDE0IENocmlzdGlhbiBHbWVpbmVyIDxjaHJpc3RpYW4uZ21laW5lckBnbWFpbC5j b20+CisgICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkKKyAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisg KiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD SEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAq CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2lv bW11Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvZG1h LW1hcHBpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KKworI2luY2x1ZGUgImV0bmF2 aXZfZ3B1LmgiCisjaW5jbHVkZSAic3RhdGVfaGkueG1sLmgiCisKKyNkZWZpbmUgUFRfU0laRQkJ U1pfMjU2SworI2RlZmluZSBQVF9FTlRSSUVTCShQVF9TSVpFIC8gc2l6ZW9mKHVpbnQzMl90KSkK KworI2RlZmluZSBHUFVfTUVNX1NUQVJUCTB4ODAwMDAwMDAKKworc3RydWN0IGV0bmF2aXZfaW9t bXVfZG9tYWluX3BndGFibGUgeworCXVpbnQzMl90ICpwZ3RhYmxlOworCWRtYV9hZGRyX3QgcGFk ZHI7Cit9OworCitzdHJ1Y3QgZXRuYXZpdl9pb21tdV9kb21haW4geworCXN0cnVjdCBldG5hdml2 X2lvbW11X2RvbWFpbl9wZ3RhYmxlIHBndGFibGU7CisJc3BpbmxvY2tfdCBtYXBfbG9jazsKK307 CisKK3N0YXRpYyBpbnQgcGd0YWJsZV9hbGxvYyhzdHJ1Y3QgZXRuYXZpdl9pb21tdV9kb21haW5f cGd0YWJsZSAqcGd0YWJsZSwKKwkJCSBzaXplX3Qgc2l6ZSkKK3sKKwlwZ3RhYmxlLT5wZ3RhYmxl ID0gZG1hX2FsbG9jX2NvaGVyZW50KE5VTEwsIHNpemUsICZwZ3RhYmxlLT5wYWRkciwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFwZ3RhYmxlLT5wZ3RhYmxlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwZ3RhYmxlX2ZyZWUoc3RydWN0IGV0bmF2aXZfaW9t bXVfZG9tYWluX3BndGFibGUgKnBndGFibGUsCisJCQkgc2l6ZV90IHNpemUpCit7CisJZG1hX2Zy ZWVfY29oZXJlbnQoTlVMTCwgc2l6ZSwgcGd0YWJsZS0+cGd0YWJsZSwgcGd0YWJsZS0+cGFkZHIp OworfQorCitzdGF0aWMgdWludDMyX3QgcGd0YWJsZV9yZWFkKHN0cnVjdCBldG5hdml2X2lvbW11 X2RvbWFpbl9wZ3RhYmxlICpwZ3RhYmxlLAorCQkJICAgdW5zaWduZWQgbG9uZyBpb3ZhKQorewor CS8qIGNhbGN1YXRlIGluZGV4IGludG8gcGFnZSB0YWJsZSAqLworCXVuc2lnbmVkIGludCBpbmRl eCA9IChpb3ZhIC0gR1BVX01FTV9TVEFSVCkgLyBTWl80SzsKKwlwaHlzX2FkZHJfdCBwYWRkcjsK KworCXBhZGRyID0gcGd0YWJsZS0+cGd0YWJsZVtpbmRleF07CisKKwlyZXR1cm4gcGFkZHI7Cit9 CisKK3N0YXRpYyB2b2lkIHBndGFibGVfd3JpdGUoc3RydWN0IGV0bmF2aXZfaW9tbXVfZG9tYWlu X3BndGFibGUgKnBndGFibGUsCisJCQkgIHVuc2lnbmVkIGxvbmcgaW92YSwgcGh5c19hZGRyX3Qg cGFkZHIpCit7CisJLyogY2FsY3VhdGUgaW5kZXggaW50byBwYWdlIHRhYmxlICovCisJdW5zaWdu ZWQgaW50IGluZGV4ID0gKGlvdmEgLSBHUFVfTUVNX1NUQVJUKSAvIFNaXzRLOworCisJcGd0YWJs ZS0+cGd0YWJsZVtpbmRleF0gPSBwYWRkcjsKK30KKworc3RhdGljIGludCBldG5hdml2X2lvbW11 X2RvbWFpbl9pbml0KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbikKK3sKKwlzdHJ1Y3QgZXRu YXZpdl9pb21tdV9kb21haW4gKmV0bmF2aXZfZG9tYWluOworCWludCByZXQ7CisKKwlldG5hdml2 X2RvbWFpbiA9IGttYWxsb2Moc2l6ZW9mKCpldG5hdml2X2RvbWFpbiksIEdGUF9LRVJORUwpOwor CWlmICghZXRuYXZpdl9kb21haW4pCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0gcGd0YWJs ZV9hbGxvYygmZXRuYXZpdl9kb21haW4tPnBndGFibGUsIFBUX1NJWkUpOworCWlmIChyZXQgPCAw KSB7CisJCWtmcmVlKGV0bmF2aXZfZG9tYWluKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlzcGlu X2xvY2tfaW5pdCgmZXRuYXZpdl9kb21haW4tPm1hcF9sb2NrKTsKKwlkb21haW4tPnByaXYgPSBl dG5hdml2X2RvbWFpbjsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZXRuYXZpdl9pb21t dV9kb21haW5fZGVzdHJveShzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4pCit7CisJc3RydWN0 IGV0bmF2aXZfaW9tbXVfZG9tYWluICpldG5hdml2X2RvbWFpbiA9IGRvbWFpbi0+cHJpdjsKKwor CXBndGFibGVfZnJlZSgmZXRuYXZpdl9kb21haW4tPnBndGFibGUsIFBUX1NJWkUpOworCisJa2Zy ZWUoZXRuYXZpdl9kb21haW4pOworCWRvbWFpbi0+cHJpdiA9IE5VTEw7Cit9CisKK3N0YXRpYyBp bnQgZXRuYXZpdl9pb21tdV9tYXAoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLCB1bnNpZ25l ZCBsb25nIGlvdmEsCisJICAgcGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLCBpbnQgcHJv dCkKK3sKKwlzdHJ1Y3QgZXRuYXZpdl9pb21tdV9kb21haW4gKmV0bmF2aXZfZG9tYWluID0gZG9t YWluLT5wcml2OworCisJaWYgKHNpemUgIT0gU1pfNEspCisJCXJldHVybiAtRUlOVkFMOworCisJ c3Bpbl9sb2NrKCZldG5hdml2X2RvbWFpbi0+bWFwX2xvY2spOworCXBndGFibGVfd3JpdGUoJmV0 bmF2aXZfZG9tYWluLT5wZ3RhYmxlLCBpb3ZhLCBwYWRkcik7CisJc3Bpbl91bmxvY2soJmV0bmF2 aXZfZG9tYWluLT5tYXBfbG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHNpemVfdCBl dG5hdml2X2lvbW11X3VubWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQg bG9uZyBpb3ZhLAorCSAgICAgc2l6ZV90IHNpemUpCit7CisJc3RydWN0IGV0bmF2aXZfaW9tbXVf ZG9tYWluICpldG5hdml2X2RvbWFpbiA9IGRvbWFpbi0+cHJpdjsKKworCWlmIChzaXplICE9IFNa XzRLKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXNwaW5fbG9jaygmZXRuYXZpdl9kb21haW4tPm1h cF9sb2NrKTsKKwlwZ3RhYmxlX3dyaXRlKCZldG5hdml2X2RvbWFpbi0+cGd0YWJsZSwgaW92YSwg fjApOworCXNwaW5fdW5sb2NrKCZldG5hdml2X2RvbWFpbi0+bWFwX2xvY2spOworCisJcmV0dXJu IDA7Cit9CisKK3BoeXNfYWRkcl90IGV0bmF2aXZfaW9tbXVfaW92YV90b19waHlzKHN0cnVjdCBp b21tdV9kb21haW4gKmRvbWFpbiwgZG1hX2FkZHJfdCBpb3ZhKQoreworCXN0cnVjdCBldG5hdml2 X2lvbW11X2RvbWFpbiAqZXRuYXZpdl9kb21haW4gPSBkb21haW4tPnByaXY7CisKKwlyZXR1cm4g cGd0YWJsZV9yZWFkKCZldG5hdml2X2RvbWFpbi0+cGd0YWJsZSwgaW92YSk7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgaW9tbXVfb3BzIGV0bmF2aXZfaW9tbXVfb3BzID0geworCQkuZG9tYWluX2luaXQg PSBldG5hdml2X2lvbW11X2RvbWFpbl9pbml0LAorCQkuZG9tYWluX2Rlc3Ryb3kgPSBldG5hdml2 X2lvbW11X2RvbWFpbl9kZXN0cm95LAorCQkubWFwID0gZXRuYXZpdl9pb21tdV9tYXAsCisJCS51 bm1hcCA9IGV0bmF2aXZfaW9tbXVfdW5tYXAsCisJCS5pb3ZhX3RvX3BoeXMgPSBldG5hdml2X2lv bW11X2lvdmFfdG9fcGh5cywKKwkJLnBnc2l6ZV9iaXRtYXAgPSBTWl80SywKK307CisKK3N0cnVj dCBpb21tdV9kb21haW4gKmV0bmF2aXZfaW9tbXVfZG9tYWluX2FsbG9jKHN0cnVjdCBldG5hdml2 X2dwdSAqZ3B1KQoreworCXN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbjsKKwlzdHJ1Y3QgZXRu YXZpdl9pb21tdV9kb21haW4gKmV0bmF2aXZfZG9tYWluOworCWludCByZXQ7CisKKwlkb21haW4g PSBremFsbG9jKHNpemVvZigqZG9tYWluKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkb21haW4pCisJ CXJldHVybiBOVUxMOworCisJZG9tYWluLT5vcHMgPSAmZXRuYXZpdl9pb21tdV9vcHM7CisKKwly ZXQgPSBkb21haW4tPm9wcy0+ZG9tYWluX2luaXQoZG9tYWluKTsKKwlpZiAocmV0KQorCQlnb3Rv IG91dF9mcmVlOworCisJLyogc2V0IHBhZ2UgdGFibGUgYWRkcmVzcyBpbiBNQyAqLworCWV0bmF2 aXZfZG9tYWluID0gZG9tYWluLT5wcml2OworCisJZ3B1X3dyaXRlKGdwdSwgVklWU19NQ19NTVVf RkVfUEFHRV9UQUJMRSwgKHVpbnQzMl90KWV0bmF2aXZfZG9tYWluLT5wZ3RhYmxlLnBhZGRyKTsK KwlncHVfd3JpdGUoZ3B1LCBWSVZTX01DX01NVV9UWF9QQUdFX1RBQkxFLCAodWludDMyX3QpZXRu YXZpdl9kb21haW4tPnBndGFibGUucGFkZHIpOworCWdwdV93cml0ZShncHUsIFZJVlNfTUNfTU1V X1BFX1BBR0VfVEFCTEUsICh1aW50MzJfdClldG5hdml2X2RvbWFpbi0+cGd0YWJsZS5wYWRkcik7 CisJZ3B1X3dyaXRlKGdwdSwgVklWU19NQ19NTVVfUEVaX1BBR0VfVEFCTEUsICh1aW50MzJfdCll dG5hdml2X2RvbWFpbi0+cGd0YWJsZS5wYWRkcik7CisJZ3B1X3dyaXRlKGdwdSwgVklWU19NQ19N TVVfUkFfUEFHRV9UQUJMRSwgKHVpbnQzMl90KWV0bmF2aXZfZG9tYWluLT5wZ3RhYmxlLnBhZGRy KTsKKworCXJldHVybiBkb21haW47CisKK291dF9mcmVlOgorCWtmcmVlKGRvbWFpbik7CisJcmV0 dXJuIE5VTEw7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2 X2lvbW11LmggYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11LmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMTAzZmYzZWZjYmUKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11LmgKQEAgLTAs MCArMSwyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDaHJpc3RpYW4gR21laW5lciA8 Y2hyaXN0aWFuLmdtZWluZXJAZ21haWwuY29tPgorICAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICog dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDIgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor ICovCisKKyNpZm5kZWYgX19FVE5BVklWX0lPTU1VX0hfXworI2RlZmluZSBfX0VUTkFWSVZfSU9N TVVfSF9fCisKKyNpbmNsdWRlIDxsaW51eC9pb21tdS5oPgorc3RydWN0IGV0bmF2aXZfZ3B1Owor CitzdHJ1Y3QgaW9tbXVfZG9tYWluICpldG5hdml2X2lvbW11X2RvbWFpbl9hbGxvYyhzdHJ1Y3Qg ZXRuYXZpdl9ncHUgKmdwdSk7CisKKyNlbmRpZiAvKiBfX0VUTkFWSVZfSU9NTVVfSF9fICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmMgYi9k cml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMDM5ZWU5Y2JjNmQKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X2lvbW11X3YyLmMKQEAgLTAsMCArMSwz MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBDaHJpc3RpYW4gR21laW5lciA8Y2hyaXN0 aWFuLmdtZWluZXJAZ21haWwuY29tPgorICAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMg cHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisg KiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisK KyNpbmNsdWRlIDxsaW51eC9pb21tdS5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rldmlj ZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgor I2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+ CisKKyNpbmNsdWRlICJldG5hdml2X2dwdS5oIgorI2luY2x1ZGUgInN0YXRlX2hpLnhtbC5oIgor CisKK3N0cnVjdCBpb21tdV9kb21haW4gKmV0bmF2aXZfaW9tbXVfdjJfZG9tYWluX2FsbG9jKHN0 cnVjdCBldG5hdml2X2dwdSAqZ3B1KQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gTlVMTDsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfaW9tbXVfdjIuaCBi L2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfaW9tbXVfdjIuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjYwM2VhNDFjNTM4OQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfaW9tbXVfdjIuaApAQCAtMCwwICsx LDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IENocmlzdGlhbiBHbWVpbmVyIDxjaHJp c3RpYW4uZ21laW5lckBnbWFpbC5jb20+CisgICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBh cyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IK KyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8K KworI2lmbmRlZiBfX0VUTkFWSVZfSU9NTVVfVjJfSF9fCisjZGVmaW5lIF9fRVROQVZJVl9JT01N VV9WMl9IX18KKworI2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+CitzdHJ1Y3QgZXRuYXZpdl9ncHU7 CisKK3N0cnVjdCBpb21tdV9kb21haW4gKmV0bmF2aXZfaW9tbXVfdjJfZG9tYWluX2FsbG9jKHN0 cnVjdCBldG5hdml2X2dwdSAqZ3B1KTsKKworI2VuZGlmIC8qIF9fRVROQVZJVl9JT01NVV9WMl9I X18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfbW11LmMg Yi9kcml2ZXJzL3N0YWdpbmcvZXRuYXZpdi9ldG5hdml2X21tdS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2VlOTdlMTExMTdkCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9tbXUuYwpAQCAtMCwwICsxLDExMSBAQAor LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWQgSGF0CisgKiBBdXRob3I6IFJvYiBDbGFyayA8 cm9iZGNsYXJrQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVi bGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNp bmNsdWRlICJldG5hdml2X2Rydi5oIgorI2luY2x1ZGUgImV0bmF2aXZfbW11LmgiCisKK3N0YXRp YyBpbnQgZXRuYXZpdl9mYXVsdF9oYW5kbGVyKHN0cnVjdCBpb21tdV9kb21haW4gKmlvbW11LCBz dHJ1Y3QgZGV2aWNlICpkZXYsCisJCXVuc2lnbmVkIGxvbmcgaW92YSwgaW50IGZsYWdzLCB2b2lk ICphcmcpCit7CisJREJHKCIqKiogZmF1bHQ6IGlvdmE9JTA4bHgsIGZsYWdzPSVkIiwgaW92YSwg ZmxhZ3MpOworCXJldHVybiAwOworfQorCitpbnQgZXRuYXZpdl9pb21tdV9tYXAoc3RydWN0IGV0 bmF2aXZfaW9tbXUgKmlvbW11LCB1aW50MzJfdCBpb3ZhLAorCQlzdHJ1Y3Qgc2dfdGFibGUgKnNn dCwgdW5zaWduZWQgbGVuLCBpbnQgcHJvdCkKK3sKKwlzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21h aW4gPSBpb21tdS0+ZG9tYWluOworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJdW5zaWduZWQg aW50IGRhID0gaW92YTsKKwl1bnNpZ25lZCBpbnQgaSwgajsKKwlpbnQgcmV0OworCisJaWYgKCFk b21haW4gfHwgIXNndCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlmb3JfZWFjaF9zZyhzZ3QtPnNn bCwgc2csIHNndC0+bmVudHMsIGkpIHsKKwkJdTMyIHBhID0gc2dfcGh5cyhzZykgLSBzZy0+b2Zm c2V0OworCQlzaXplX3QgYnl0ZXMgPSBzZy0+bGVuZ3RoICsgc2ctPm9mZnNldDsKKworCQlWRVJC KCJtYXBbJWRdOiAlMDh4ICUwOHgoJXgpIiwgaSwgaW92YSwgcGEsIGJ5dGVzKTsKKworCQlyZXQg PSBpb21tdV9tYXAoZG9tYWluLCBkYSwgcGEsIGJ5dGVzLCBwcm90KTsKKwkJaWYgKHJldCkKKwkJ CWdvdG8gZmFpbDsKKworCQlkYSArPSBieXRlczsKKwl9CisKKwlyZXR1cm4gMDsKKworZmFpbDoK KwlkYSA9IGlvdmE7CisKKwlmb3JfZWFjaF9zZyhzZ3QtPnNnbCwgc2csIGksIGopIHsKKwkJc2l6 ZV90IGJ5dGVzID0gc2ctPmxlbmd0aCArIHNnLT5vZmZzZXQ7CisJCWlvbW11X3VubWFwKGRvbWFp biwgZGEsIGJ5dGVzKTsKKwkJZGEgKz0gYnl0ZXM7CisJfQorCXJldHVybiByZXQ7Cit9CisKK2lu dCBldG5hdml2X2lvbW11X3VubWFwKHN0cnVjdCBldG5hdml2X2lvbW11ICppb21tdSwgdWludDMy X3QgaW92YSwKKwkJc3RydWN0IHNnX3RhYmxlICpzZ3QsIHVuc2lnbmVkIGxlbikKK3sKKwlzdHJ1 Y3QgaW9tbXVfZG9tYWluICpkb21haW4gPSBpb21tdS0+ZG9tYWluOworCXN0cnVjdCBzY2F0dGVy bGlzdCAqc2c7CisJdW5zaWduZWQgaW50IGRhID0gaW92YTsKKwlpbnQgaTsKKworCWZvcl9lYWNo X3NnKHNndC0+c2dsLCBzZywgc2d0LT5uZW50cywgaSkgeworCQlzaXplX3QgYnl0ZXMgPSBzZy0+ bGVuZ3RoICsgc2ctPm9mZnNldDsKKwkJc2l6ZV90IHVubWFwcGVkOworCisJCXVubWFwcGVkID0g aW9tbXVfdW5tYXAoZG9tYWluLCBkYSwgYnl0ZXMpOworCQlpZiAodW5tYXBwZWQgPCBieXRlcykK KwkJCXJldHVybiB1bm1hcHBlZDsKKworCQlWRVJCKCJ1bm1hcFslZF06ICUwOHgoJXgpIiwgaSwg aW92YSwgYnl0ZXMpOworCisJCUJVR19PTighUEFHRV9BTElHTkVEKGJ5dGVzKSk7CisKKwkJZGEg Kz0gYnl0ZXM7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZXRuYXZpdl9pb21tdV9kZXN0 cm95KHN0cnVjdCBldG5hdml2X2lvbW11ICptbXUpCit7CisJaW9tbXVfZG9tYWluX2ZyZWUobW11 LT5kb21haW4pOworCWtmcmVlKG1tdSk7Cit9CisKK3N0cnVjdCBldG5hdml2X2lvbW11ICpldG5h dml2X2lvbW11X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW9tbXVfZG9tYWlu ICpkb21haW4pCit7CisJc3RydWN0IGV0bmF2aXZfaW9tbXUgKm1tdTsKKworCW1tdSA9IGt6YWxs b2Moc2l6ZW9mKCptbXUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1tdSkKKwkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7CisKKwltbXUtPmRvbWFpbiA9IGRvbWFpbjsKKwltbXUtPmRldiA9IGRldjsK Kwlpb21tdV9zZXRfZmF1bHRfaGFuZGxlcihkb21haW4sIGV0bmF2aXZfZmF1bHRfaGFuZGxlciwg ZGV2KTsKKworCXJldHVybiBtbXU7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXRu YXZpdi9ldG5hdml2X21tdS5oIGIvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvZXRuYXZpdl9tbXUu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAyZTdhZGNjOTZkNwot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L2V0bmF2aXZfbW11LmgK QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBSZWQgSGF0CisgKiBB dXRob3I6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0 aAorICogdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorICovCisKKyNpZm5kZWYgX19FVE5BVklWX01NVV9IX18KKyNkZWZpbmUgX19FVE5B VklWX01NVV9IX18KKworI2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+CisKK3N0cnVjdCBldG5hdml2 X2lvbW11IHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCXN0cnVjdCBpb21tdV9kb21haW4g KmRvbWFpbjsKK307CisKK2ludCBldG5hdml2X2lvbW11X2F0dGFjaChzdHJ1Y3QgZXRuYXZpdl9p b21tdSAqaW9tbXUsIGNvbnN0IGNoYXIgKipuYW1lcywgaW50IGNudCk7CitpbnQgZXRuYXZpdl9p b21tdV9tYXAoc3RydWN0IGV0bmF2aXZfaW9tbXUgKmlvbW11LCB1aW50MzJfdCBpb3ZhLCBzdHJ1 Y3Qgc2dfdGFibGUgKnNndCwKKwkJdW5zaWduZWQgbGVuLCBpbnQgcHJvdCk7CitpbnQgZXRuYXZp dl9pb21tdV91bm1hcChzdHJ1Y3QgZXRuYXZpdl9pb21tdSAqaW9tbXUsIHVpbnQzMl90IGlvdmEs IHN0cnVjdCBzZ190YWJsZSAqc2d0LAorCQl1bnNpZ25lZCBsZW4pOwordm9pZCBldG5hdml2X2lv bW11X2Rlc3Ryb3koc3RydWN0IGV0bmF2aXZfaW9tbXUgKmlvbW11KTsKKworc3RydWN0IGV0bmF2 aXZfaW9tbXUgKmV0bmF2aXZfaW9tbXVfbmV3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpb21tdV9kb21haW4gKmRvbWFpbik7CisKKyNlbmRpZiAvKiBfX0VUTkFWSVZfTU1VX0hfXyAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0bmF2aXYvc3RhdGUueG1sLmggYi9kcml2 ZXJzL3N0YWdpbmcvZXRuYXZpdi9zdGF0ZS54bWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmU3YjM2ZGYxZTRlMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv c3RhZ2luZy9ldG5hdml2L3N0YXRlLnhtbC5oCkBAIC0wLDAgKzEsMzQ4IEBACisjaWZuZGVmIFNU QVRFX1hNTAorI2RlZmluZSBTVEFURV9YTUwKKworLyogQXV0b2dlbmVyYXRlZCBmaWxlLCBETyBO T1QgRURJVCBtYW51YWxseSEKKworVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIHJ1bGVz LW5nLW5nIGhlYWRlcmdlbiB0b29sIGluIHRoaXMgZ2l0IHJlcG9zaXRvcnk6CitodHRwOi8vMHgw NC5uZXQvY2dpdC9pbmRleC5jZ2kvcnVsZXMtbmctbmcKK2dpdCBjbG9uZSBnaXQ6Ly8weDA0Lm5l dC9ydWxlcy1uZy1uZworCitUaGUgcnVsZXMtbmctbmcgc291cmNlIGZpbGVzIHRoaXMgaGVhZGVy IHdhcyBnZW5lcmF0ZWQgZnJvbSBhcmU6CistIC9ob21lL29yaW9uL3Byb2plY3RzL2V0bmFfdml2 L3JubmRiL3N0YXRlLnhtbCAgICAoICAxODUyNiBieXRlcywgZnJvbSAyMDEzLTA5LTExIDE2OjUy OjMyKQorLSAvaG9tZS9vcmlvbi9wcm9qZWN0cy9ldG5hX3Zpdi9ybm5kYi9jb21tb24ueG1sICAg KCAgMTgzNzkgYnl0ZXMsIGZyb20gMjAxNC0wMS0yNyAxNTo1ODowNSkKKy0gL2hvbWUvb3Jpb24v cHJvamVjdHMvZXRuYV92aXYvcm5uZGIvc3RhdGVfaGkueG1sICggIDIyMjM2IGJ5dGVzLCBmcm9t IDIwMTQtMDEtMjcgMTU6NTY6NDYpCistIC9ob21lL29yaW9uL3Byb2plY3RzL2V0bmFfdml2L3Ju bmRiL3N0YXRlXzJkLnhtbCAoICA1MTE5MSBieXRlcywgZnJvbSAyMDEzLTEwLTA0IDA2OjM2OjU1 KQorLSAvaG9tZS9vcmlvbi9wcm9qZWN0cy9ldG5hX3Zpdi9ybm5kYi9zdGF0ZV8zZC54bWwgKCAg NTQ1NzAgYnl0ZXMsIGZyb20gMjAxMy0xMC0xMiAxNToyNTowMykKKy0gL2hvbWUvb3Jpb24vcHJv amVjdHMvZXRuYV92aXYvcm5uZGIvc3RhdGVfdmcueG1sICggICA1OTQyIGJ5dGVzLCBmcm9tIDIw MTMtMDktMDEgMTA6NTM6MjIpCisKK0NvcHlyaWdodCAoQykgMjAxMworKi8KKworCisjZGVmaW5l IFZBUllJTkdfQ09NUE9ORU5UX1VTRV9VTlVTRUQJCQkJMHgwMDAwMDAwMAorI2RlZmluZSBWQVJZ SU5HX0NPTVBPTkVOVF9VU0VfVVNFRAkJCQkweDAwMDAwMDAxCisjZGVmaW5lIFZBUllJTkdfQ09N UE9ORU5UX1VTRV9QT0lOVENPT1JEX1gJCQkweDAwMDAwMDAyCisjZGVmaW5lIFZBUllJTkdfQ09N UE9ORU5UX1VTRV9QT0lOVENPT1JEX1kJCQkweDAwMDAwMDAzCisjZGVmaW5lIEZFX1ZFUlRFWF9T VFJFQU1fQ09OVFJPTF9WRVJURVhfU1RSSURFX19NQVNLCQkweDAwMDAwMGZmCisjZGVmaW5lIEZF X1ZFUlRFWF9TVFJFQU1fQ09OVFJPTF9WRVJURVhfU1RSSURFX19TSElGVAkJMAorI2RlZmluZSBG RV9WRVJURVhfU1RSRUFNX0NPTlRST0xfVkVSVEVYX1NUUklERSh4KQkJKCgoeCkgPDwgRkVfVkVS VEVYX1NUUkVBTV9DT05UUk9MX1ZFUlRFWF9TVFJJREVfX1NISUZUKSAmIEZFX1ZFUlRFWF9TVFJF QU1fQ09OVFJPTF9WRVJURVhfU1RSSURFX19NQVNLKQorI2RlZmluZSBWSVZTX0ZFCQkJCQkJCTB4 MDAwMDAwMDAKKworI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJRyhpMCkJCSAg ICAgICAoMHgwMDAwMDYwMCArIDB4NCooaTApKQorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVN RU5UX0NPTkZJR19fRVNJWkUJCQkweDAwMDAwMDA0CisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX0VM RU1FTlRfQ09ORklHX19MRU4JCQkweDAwMDAwMDEwCisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX0VM RU1FTlRfQ09ORklHX1RZUEVfX01BU0sJCTB4MDAwMDAwMGYKKyNkZWZpbmUgVklWU19GRV9WRVJU RVhfRUxFTUVOVF9DT05GSUdfVFlQRV9fU0hJRlQJCTAKKyNkZWZpbmUgVklWU19GRV9WRVJURVhf RUxFTUVOVF9DT05GSUdfVFlQRV9CWVRFCQkJMHgwMDAwMDAwMAorI2RlZmluZSBWSVZTX0ZFX1ZF UlRFWF9FTEVNRU5UX0NPTkZJR19UWVBFX1VOU0lHTkVEX0JZVEUJMHgwMDAwMDAwMQorI2RlZmlu ZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19UWVBFX1NIT1JUCQkweDAwMDAwMDAyCisj ZGVmaW5lIFZJVlNfRkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX1RZUEVfVU5TSUdORURfU0hPUlQJ MHgwMDAwMDAwMworI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19UWVBFX0lO VAkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfVFlQ RV9VTlNJR05FRF9JTlQJCTB4MDAwMDAwMDUKKyNkZWZpbmUgVklWU19GRV9WRVJURVhfRUxFTUVO VF9DT05GSUdfVFlQRV9GTE9BVAkJMHgwMDAwMDAwOAorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9F TEVNRU5UX0NPTkZJR19UWVBFX0hBTEZfRkxPQVQJCTB4MDAwMDAwMDkKKyNkZWZpbmUgVklWU19G RV9WRVJURVhfRUxFTUVOVF9DT05GSUdfVFlQRV9GSVhFRAkJMHgwMDAwMDAwYgorI2RlZmluZSBW SVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19UWVBFX0lOVF8xMF8xMF8xMF8yCTB4MDAwMDAw MGMKKyNkZWZpbmUgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfVFlQRV9VTlNJR05FRF9J TlRfMTBfMTBfMTBfMgkweDAwMDAwMDBkCisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX0VMRU1FTlRf Q09ORklHX0VORElBTl9fTUFTSwkJMHgwMDAwMDAzMAorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9F TEVNRU5UX0NPTkZJR19FTkRJQU5fX1NISUZUCQk0CisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX0VM RU1FTlRfQ09ORklHX0VORElBTih4KQkJCSgoKHgpIDw8IFZJVlNfRkVfVkVSVEVYX0VMRU1FTlRf Q09ORklHX0VORElBTl9fU0hJRlQpICYgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfRU5E SUFOX19NQVNLKQorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19OT05DT05T RUNVVElWRQkJMHgwMDAwMDA4MAorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJ R19TVFJFQU1fX01BU0sJCTB4MDAwMDA3MDAKKyNkZWZpbmUgVklWU19GRV9WRVJURVhfRUxFTUVO VF9DT05GSUdfU1RSRUFNX19TSElGVAkJOAorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5U X0NPTkZJR19TVFJFQU0oeCkJCQkoKCh4KSA8PCBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJ R19TVFJFQU1fX1NISUZUKSAmIFZJVlNfRkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX1NUUkVBTV9f TUFTSykKKyNkZWZpbmUgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfTlVNX19NQVNLCQkJ MHgwMDAwMzAwMAorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19OVU1fX1NI SUZUCQkxMgorI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19OVU0oeCkJCQko KCh4KSA8PCBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19OVU1fX1NISUZUKSAmIFZJVlNf RkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX05VTV9fTUFTSykKKyNkZWZpbmUgVklWU19GRV9WRVJU RVhfRUxFTUVOVF9DT05GSUdfTk9STUFMSVpFX19NQVNLCQkweDAwMDBjMDAwCisjZGVmaW5lIFZJ VlNfRkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX05PUk1BTElaRV9fU0hJRlQJCTE0CisjZGVmaW5l IFZJVlNfRkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX05PUk1BTElaRV9PRkYJCTB4MDAwMDAwMDAK KyNkZWZpbmUgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfTk9STUFMSVpFX09OCQkweDAw MDA4MDAwCisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX1NUQVJUX19NQVNL CQkweDAwZmYwMDAwCisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX1NUQVJU X19TSElGVAkJMTYKKyNkZWZpbmUgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfU1RBUlQo eCkJCQkoKCh4KSA8PCBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5UX0NPTkZJR19TVEFSVF9fU0hJRlQp ICYgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfU1RBUlRfX01BU0spCisjZGVmaW5lIFZJ VlNfRkVfVkVSVEVYX0VMRU1FTlRfQ09ORklHX0VORF9fTUFTSwkJCTB4ZmYwMDAwMDAKKyNkZWZp bmUgVklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfRU5EX19TSElGVAkJMjQKKyNkZWZpbmUg VklWU19GRV9WRVJURVhfRUxFTUVOVF9DT05GSUdfRU5EKHgpCQkJKCgoeCkgPDwgVklWU19GRV9W RVJURVhfRUxFTUVOVF9DT05GSUdfRU5EX19TSElGVCkgJiBWSVZTX0ZFX1ZFUlRFWF9FTEVNRU5U X0NPTkZJR19FTkRfX01BU0spCisKKyNkZWZpbmUgVklWU19GRV9DTURfU1RSRUFNX0JBU0VfQURE UgkJCQkweDAwMDAwNjQwCisKKyNkZWZpbmUgVklWU19GRV9JTkRFWF9TVFJFQU1fQkFTRV9BRERS CQkJCTB4MDAwMDA2NDQKKworI2RlZmluZSBWSVZTX0ZFX0lOREVYX1NUUkVBTV9DT05UUk9MCQkJ CTB4MDAwMDA2NDgKKyNkZWZpbmUgVklWU19GRV9JTkRFWF9TVFJFQU1fQ09OVFJPTF9UWVBFX19N QVNLCQkJMHgwMDAwMDAwMworI2RlZmluZSBWSVZTX0ZFX0lOREVYX1NUUkVBTV9DT05UUk9MX1RZ UEVfX1NISUZUCQkwCisjZGVmaW5lIFZJVlNfRkVfSU5ERVhfU1RSRUFNX0NPTlRST0xfVFlQRV9V TlNJR05FRF9DSEFSCQkweDAwMDAwMDAwCisjZGVmaW5lIFZJVlNfRkVfSU5ERVhfU1RSRUFNX0NP TlRST0xfVFlQRV9VTlNJR05FRF9TSE9SVAkweDAwMDAwMDAxCisjZGVmaW5lIFZJVlNfRkVfSU5E RVhfU1RSRUFNX0NPTlRST0xfVFlQRV9VTlNJR05FRF9JTlQJCTB4MDAwMDAwMDIKKworI2RlZmlu ZSBWSVZTX0ZFX1ZFUlRFWF9TVFJFQU1fQkFTRV9BRERSCQkJCTB4MDAwMDA2NGMKKworI2RlZmlu ZSBWSVZTX0ZFX1ZFUlRFWF9TVFJFQU1fQ09OVFJPTAkJCQkweDAwMDAwNjUwCisKKyNkZWZpbmUg VklWU19GRV9DT01NQU5EX0FERFJFU1MJCQkJCTB4MDAwMDA2NTQKKworI2RlZmluZSBWSVZTX0ZF X0NPTU1BTkRfQ09OVFJPTAkJCQkJMHgwMDAwMDY1OAorI2RlZmluZSBWSVZTX0ZFX0NPTU1BTkRf Q09OVFJPTF9QUkVGRVRDSF9fTUFTSwkJCTB4MDAwMGZmZmYKKyNkZWZpbmUgVklWU19GRV9DT01N QU5EX0NPTlRST0xfUFJFRkVUQ0hfX1NISUZUCQkJMAorI2RlZmluZSBWSVZTX0ZFX0NPTU1BTkRf Q09OVFJPTF9QUkVGRVRDSCh4KQkJCSgoKHgpIDw8IFZJVlNfRkVfQ09NTUFORF9DT05UUk9MX1BS RUZFVENIX19TSElGVCkgJiBWSVZTX0ZFX0NPTU1BTkRfQ09OVFJPTF9QUkVGRVRDSF9fTUFTSykK KyNkZWZpbmUgVklWU19GRV9DT01NQU5EX0NPTlRST0xfRU5BQkxFCQkJCTB4MDAwMTAwMDAKKwor I2RlZmluZSBWSVZTX0ZFX0RNQV9TVEFUVVMJCQkJCTB4MDAwMDA2NWMKKworI2RlZmluZSBWSVZT X0ZFX0RNQV9ERUJVR19TVEFURQkJCQkJMHgwMDAwMDY2MAorI2RlZmluZSBWSVZTX0ZFX0RNQV9E RUJVR19TVEFURV9DTURfU1RBVEVfX01BU0sJCQkweDAwMDAwMDFmCisjZGVmaW5lIFZJVlNfRkVf RE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV9fU0hJRlQJCTAKKyNkZWZpbmUgVklWU19GRV9ETUFf REVCVUdfU1RBVEVfQ01EX1NUQVRFX0lETEUJCQkweDAwMDAwMDAwCisjZGVmaW5lIFZJVlNfRkVf RE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV9ERUMJCQkweDAwMDAwMDAxCisjZGVmaW5lIFZJVlNf RkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV9BRFIwCQkJMHgwMDAwMDAwMgorI2RlZmluZSBW SVZTX0ZFX0RNQV9ERUJVR19TVEFURV9DTURfU1RBVEVfTE9BRDAJCQkweDAwMDAwMDAzCisjZGVm aW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV9BRFIxCQkJMHgwMDAwMDAwNAor I2RlZmluZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9DTURfU1RBVEVfTE9BRDEJCQkweDAwMDAw MDA1CisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV8zREFEUgkJCTB4 MDAwMDAwMDYKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVfQ01EX1NUQVRFXzNEQ01E CQkJMHgwMDAwMDAwNworI2RlZmluZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9DTURfU1RBVEVf M0RDTlRMCQkweDAwMDAwMDA4CisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9T VEFURV8zRElEWENOVEwJCTB4MDAwMDAwMDkKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RB VEVfQ01EX1NUQVRFX0lOSVRSRVFETUEJCTB4MDAwMDAwMGEKKyNkZWZpbmUgVklWU19GRV9ETUFf REVCVUdfU1RBVEVfQ01EX1NUQVRFX0RSQVdJRFgJCTB4MDAwMDAwMGIKKyNkZWZpbmUgVklWU19G RV9ETUFfREVCVUdfU1RBVEVfQ01EX1NUQVRFX0RSQVcJCQkweDAwMDAwMDBjCisjZGVmaW5lIFZJ VlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV8yRFJFQ1QwCQkweDAwMDAwMDBkCisjZGVm aW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV8yRFJFQ1QxCQkweDAwMDAwMDBl CisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV8yRERBVEEwCQkweDAw MDAwMDBmCisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV8yRERBVEEx CQkweDAwMDAwMDEwCisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX0NNRF9TVEFURV9X QUlURklGTwkJMHgwMDAwMDAxMQorI2RlZmluZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9DTURf U1RBVEVfV0FJVAkJCTB4MDAwMDAwMTIKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVf Q01EX1NUQVRFX0xJTksJCQkweDAwMDAwMDEzCisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NU QVRFX0NNRF9TVEFURV9FTkQJCQkweDAwMDAwMDE0CisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVH X1NUQVRFX0NNRF9TVEFURV9TVEFMTAkJCTB4MDAwMDAwMTUKKyNkZWZpbmUgVklWU19GRV9ETUFf REVCVUdfU1RBVEVfQ01EX0RNQV9TVEFURV9fTUFTSwkJMHgwMDAwMDMwMAorI2RlZmluZSBWSVZT X0ZFX0RNQV9ERUJVR19TVEFURV9DTURfRE1BX1NUQVRFX19TSElGVAkJOAorI2RlZmluZSBWSVZT X0ZFX0RNQV9ERUJVR19TVEFURV9DTURfRE1BX1NUQVRFX0lETEUJCTB4MDAwMDAwMDAKKyNkZWZp bmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVfQ01EX0RNQV9TVEFURV9TVEFSVAkJMHgwMDAwMDEw MAorI2RlZmluZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9DTURfRE1BX1NUQVRFX1JFUQkJMHgw MDAwMDIwMAorI2RlZmluZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9DTURfRE1BX1NUQVRFX0VO RAkJMHgwMDAwMDMwMAorI2RlZmluZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9DTURfRkVUQ0hf U1RBVEVfX01BU0sJCTB4MDAwMDBjMDAKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVf Q01EX0ZFVENIX1NUQVRFX19TSElGVAkJMTAKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RB VEVfQ01EX0ZFVENIX1NUQVRFX0lETEUJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWU19GRV9ETUFf REVCVUdfU1RBVEVfQ01EX0ZFVENIX1NUQVRFX1JBTVZBTElECTB4MDAwMDA0MDAKKyNkZWZpbmUg VklWU19GRV9ETUFfREVCVUdfU1RBVEVfQ01EX0ZFVENIX1NUQVRFX1ZBTElECQkweDAwMDAwODAw CisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX1JFUV9ETUFfU1RBVEVfX01BU0sJCTB4 MDAwMDMwMDAKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVfUkVRX0RNQV9TVEFURV9f U0hJRlQJCTEyCisjZGVmaW5lIFZJVlNfRkVfRE1BX0RFQlVHX1NUQVRFX1JFUV9ETUFfU1RBVEVf SURMRQkJMHgwMDAwMDAwMAorI2RlZmluZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9SRVFfRE1B X1NUQVRFX1dBSVRJRFgJCTB4MDAwMDEwMDAKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RB VEVfUkVRX0RNQV9TVEFURV9DQUwJCTB4MDAwMDIwMDAKKyNkZWZpbmUgVklWU19GRV9ETUFfREVC VUdfU1RBVEVfQ0FMX1NUQVRFX19NQVNLCQkJMHgwMDAwYzAwMAorI2RlZmluZSBWSVZTX0ZFX0RN QV9ERUJVR19TVEFURV9DQUxfU1RBVEVfX1NISUZUCQkxNAorI2RlZmluZSBWSVZTX0ZFX0RNQV9E RUJVR19TVEFURV9DQUxfU1RBVEVfSURMRQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWU19GRV9E TUFfREVCVUdfU1RBVEVfQ0FMX1NUQVRFX0xEQURSCQkJMHgwMDAwNDAwMAorI2RlZmluZSBWSVZT X0ZFX0RNQV9ERUJVR19TVEFURV9DQUxfU1RBVEVfSURYQ0FMQwkJMHgwMDAwODAwMAorI2RlZmlu ZSBWSVZTX0ZFX0RNQV9ERUJVR19TVEFURV9WRV9SRVFfU1RBVEVfX01BU0sJCTB4MDAwMzAwMDAK KyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVfVkVfUkVRX1NUQVRFX19TSElGVAkJMTYK KyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVfVkVfUkVRX1NUQVRFX0lETEUJCTB4MDAw MDAwMDAKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVfVkVfUkVRX1NUQVRFX0NLQ0FD SEUJCTB4MDAwMTAwMDAKKyNkZWZpbmUgVklWU19GRV9ETUFfREVCVUdfU1RBVEVfVkVfUkVRX1NU QVRFX01JU1MJCTB4MDAwMjAwMDAKKworI2RlZmluZSBWSVZTX0ZFX0RNQV9BRERSRVNTCQkJCQkw eDAwMDAwNjY0CisKKyNkZWZpbmUgVklWU19GRV9ETUFfTE9XCQkJCQkJMHgwMDAwMDY2OAorCisj ZGVmaW5lIFZJVlNfRkVfRE1BX0hJR0gJCQkJCTB4MDAwMDA2NmMKKworI2RlZmluZSBWSVZTX0ZF X0FVVE9fRkxVU0gJCQkJCTB4MDAwMDA2NzAKKworI2RlZmluZSBWSVZTX0ZFX1VOSzAwNjc4CQkJ CQkweDAwMDAwNjc4CisKKyNkZWZpbmUgVklWU19GRV9VTkswMDY3QwkJCQkJMHgwMDAwMDY3Ywor CisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX1NUUkVBTVMoaTApCQkJICAgICAgICgweDAwMDAwMDAw ICsgMHg0KihpMCkpCisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX1NUUkVBTVNfX0VTSVpFCQkJCTB4 MDAwMDAwMDQKKyNkZWZpbmUgVklWU19GRV9WRVJURVhfU1RSRUFNU19fTEVOCQkJCTB4MDAwMDAw MDgKKworI2RlZmluZSBWSVZTX0ZFX1ZFUlRFWF9TVFJFQU1TX0JBU0VfQUREUihpMCkJCSAgICAg ICAoMHgwMDAwMDY4MCArIDB4NCooaTApKQorCisjZGVmaW5lIFZJVlNfRkVfVkVSVEVYX1NUUkVB TVNfQ09OVFJPTChpMCkJCSAgICAgICAoMHgwMDAwMDZhMCArIDB4NCooaTApKQorCisjZGVmaW5l IFZJVlNfRkVfVU5LMDA3MDAoaTApCQkJCSAgICAgICAoMHgwMDAwMDcwMCArIDB4NCooaTApKQor I2RlZmluZSBWSVZTX0ZFX1VOSzAwNzAwX19FU0laRQkJCQkJMHgwMDAwMDAwNAorI2RlZmluZSBW SVZTX0ZFX1VOSzAwNzAwX19MRU4JCQkJCTB4MDAwMDAwMTAKKworI2RlZmluZSBWSVZTX0ZFX1VO SzAwNzQwKGkwKQkJCQkgICAgICAgKDB4MDAwMDA3NDAgKyAweDQqKGkwKSkKKyNkZWZpbmUgVklW U19GRV9VTkswMDc0MF9fRVNJWkUJCQkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgVklWU19GRV9VTksw MDc0MF9fTEVOCQkJCQkweDAwMDAwMDEwCisKKyNkZWZpbmUgVklWU19GRV9VTkswMDc4MChpMCkJ CQkJICAgICAgICgweDAwMDAwNzgwICsgMHg0KihpMCkpCisjZGVmaW5lIFZJVlNfRkVfVU5LMDA3 ODBfX0VTSVpFCQkJCQkweDAwMDAwMDA0CisjZGVmaW5lIFZJVlNfRkVfVU5LMDA3ODBfX0xFTgkJ CQkJMHgwMDAwMDAxMAorCisjZGVmaW5lIFZJVlNfR0wJCQkJCQkJMHgwMDAwMDAwMAorCisjZGVm aW5lIFZJVlNfR0xfUElQRV9TRUxFQ1QJCQkJCTB4MDAwMDM4MDAKKyNkZWZpbmUgVklWU19HTF9Q SVBFX1NFTEVDVF9QSVBFX19NQVNLCQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgVklWU19HTF9QSVBF X1NFTEVDVF9QSVBFX19TSElGVAkJCQkwCisjZGVmaW5lIFZJVlNfR0xfUElQRV9TRUxFQ1RfUElQ RSh4KQkJCQkoKCh4KSA8PCBWSVZTX0dMX1BJUEVfU0VMRUNUX1BJUEVfX1NISUZUKSAmIFZJVlNf R0xfUElQRV9TRUxFQ1RfUElQRV9fTUFTSykKKworI2RlZmluZSBWSVZTX0dMX0VWRU5UCQkJCQkJ MHgwMDAwMzgwNAorI2RlZmluZSBWSVZTX0dMX0VWRU5UX0VWRU5UX0lEX19NQVNLCQkJCTB4MDAw MDAwMWYKKyNkZWZpbmUgVklWU19HTF9FVkVOVF9FVkVOVF9JRF9fU0hJRlQJCQkJMAorI2RlZmlu ZSBWSVZTX0dMX0VWRU5UX0VWRU5UX0lEKHgpCQkJCSgoKHgpIDw8IFZJVlNfR0xfRVZFTlRfRVZF TlRfSURfX1NISUZUKSAmIFZJVlNfR0xfRVZFTlRfRVZFTlRfSURfX01BU0spCisjZGVmaW5lIFZJ VlNfR0xfRVZFTlRfRlJPTV9GRQkJCQkJMHgwMDAwMDAyMAorI2RlZmluZSBWSVZTX0dMX0VWRU5U X0ZST01fUEUJCQkJCTB4MDAwMDAwNDAKKyNkZWZpbmUgVklWU19HTF9FVkVOVF9TT1VSQ0VfX01B U0sJCQkJMHgwMDAwMWYwMAorI2RlZmluZSBWSVZTX0dMX0VWRU5UX1NPVVJDRV9fU0hJRlQJCQkJ OAorI2RlZmluZSBWSVZTX0dMX0VWRU5UX1NPVVJDRSh4KQkJCQkJKCgoeCkgPDwgVklWU19HTF9F VkVOVF9TT1VSQ0VfX1NISUZUKSAmIFZJVlNfR0xfRVZFTlRfU09VUkNFX19NQVNLKQorCisjZGVm aW5lIFZJVlNfR0xfU0VNQVBIT1JFX1RPS0VOCQkJCQkweDAwMDAzODA4CisjZGVmaW5lIFZJVlNf R0xfU0VNQVBIT1JFX1RPS0VOX0ZST01fX01BU0sJCQkweDAwMDAwMDFmCisjZGVmaW5lIFZJVlNf R0xfU0VNQVBIT1JFX1RPS0VOX0ZST01fX1NISUZUCQkJMAorI2RlZmluZSBWSVZTX0dMX1NFTUFQ SE9SRV9UT0tFTl9GUk9NKHgpCQkJCSgoKHgpIDw8IFZJVlNfR0xfU0VNQVBIT1JFX1RPS0VOX0ZS T01fX1NISUZUKSAmIFZJVlNfR0xfU0VNQVBIT1JFX1RPS0VOX0ZST01fX01BU0spCisjZGVmaW5l IFZJVlNfR0xfU0VNQVBIT1JFX1RPS0VOX1RPX19NQVNLCQkJMHgwMDAwMWYwMAorI2RlZmluZSBW SVZTX0dMX1NFTUFQSE9SRV9UT0tFTl9UT19fU0hJRlQJCQk4CisjZGVmaW5lIFZJVlNfR0xfU0VN QVBIT1JFX1RPS0VOX1RPKHgpCQkJCSgoKHgpIDw8IFZJVlNfR0xfU0VNQVBIT1JFX1RPS0VOX1RP X19TSElGVCkgJiBWSVZTX0dMX1NFTUFQSE9SRV9UT0tFTl9UT19fTUFTSykKKworI2RlZmluZSBW SVZTX0dMX0ZMVVNIX0NBQ0hFCQkJCQkweDAwMDAzODBjCisjZGVmaW5lIFZJVlNfR0xfRkxVU0hf Q0FDSEVfREVQVEgJCQkJMHgwMDAwMDAwMQorI2RlZmluZSBWSVZTX0dMX0ZMVVNIX0NBQ0hFX0NP TE9SCQkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgVklWU19HTF9GTFVTSF9DQUNIRV9URVhUVVJFCQkJ CTB4MDAwMDAwMDQKKyNkZWZpbmUgVklWU19HTF9GTFVTSF9DQUNIRV9QRTJECQkJCTB4MDAwMDAw MDgKKyNkZWZpbmUgVklWU19HTF9GTFVTSF9DQUNIRV9URVhUVVJFVlMJCQkJMHgwMDAwMDAxMAor I2RlZmluZSBWSVZTX0dMX0ZMVVNIX0NBQ0hFX1NIQURFUl9MMQkJCQkweDAwMDAwMDIwCisjZGVm aW5lIFZJVlNfR0xfRkxVU0hfQ0FDSEVfU0hBREVSX0wyCQkJCTB4MDAwMDAwNDAKKworI2RlZmlu ZSBWSVZTX0dMX0ZMVVNIX01NVQkJCQkJMHgwMDAwMzgxMAorI2RlZmluZSBWSVZTX0dMX0ZMVVNI X01NVV9GTFVTSF9GRU1NVQkJCQkweDAwMDAwMDAxCisjZGVmaW5lIFZJVlNfR0xfRkxVU0hfTU1V X0ZMVVNIX1BFTU1VCQkJCTB4MDAwMDAwMDIKKworI2RlZmluZSBWSVZTX0dMX1ZFUlRFWF9FTEVN RU5UX0NPTkZJRwkJCQkweDAwMDAzODE0CisKKyNkZWZpbmUgVklWU19HTF9NVUxUSV9TQU1QTEVf Q09ORklHCQkJCTB4MDAwMDM4MTgKKyNkZWZpbmUgVklWU19HTF9NVUxUSV9TQU1QTEVfQ09ORklH X01TQUFfU0FNUExFU19fTUFTSwkJMHgwMDAwMDAwMworI2RlZmluZSBWSVZTX0dMX01VTFRJX1NB TVBMRV9DT05GSUdfTVNBQV9TQU1QTEVTX19TSElGVAkJMAorI2RlZmluZSBWSVZTX0dMX01VTFRJ X1NBTVBMRV9DT05GSUdfTVNBQV9TQU1QTEVTX05PTkUJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklW U19HTF9NVUxUSV9TQU1QTEVfQ09ORklHX01TQUFfU0FNUExFU18yWAkJMHgwMDAwMDAwMQorI2Rl ZmluZSBWSVZTX0dMX01VTFRJX1NBTVBMRV9DT05GSUdfTVNBQV9TQU1QTEVTXzRYCQkweDAwMDAw MDAyCisjZGVmaW5lIFZJVlNfR0xfTVVMVElfU0FNUExFX0NPTkZJR19NU0FBX1NBTVBMRVNfTUFT SwkJMHgwMDAwMDAwOAorI2RlZmluZSBWSVZTX0dMX01VTFRJX1NBTVBMRV9DT05GSUdfTVNBQV9F TkFCTEVTX19NQVNLCQkweDAwMDAwMGYwCisjZGVmaW5lIFZJVlNfR0xfTVVMVElfU0FNUExFX0NP TkZJR19NU0FBX0VOQUJMRVNfX1NISUZUCQk0CisjZGVmaW5lIFZJVlNfR0xfTVVMVElfU0FNUExF X0NPTkZJR19NU0FBX0VOQUJMRVMoeCkJCSgoKHgpIDw8IFZJVlNfR0xfTVVMVElfU0FNUExFX0NP TkZJR19NU0FBX0VOQUJMRVNfX1NISUZUKSAmIFZJVlNfR0xfTVVMVElfU0FNUExFX0NPTkZJR19N U0FBX0VOQUJMRVNfX01BU0spCisjZGVmaW5lIFZJVlNfR0xfTVVMVElfU0FNUExFX0NPTkZJR19N U0FBX0VOQUJMRVNfTUFTSwkJMHgwMDAwMDEwMAorI2RlZmluZSBWSVZTX0dMX01VTFRJX1NBTVBM RV9DT05GSUdfVU5LMTJfX01BU0sJCQkweDAwMDA3MDAwCisjZGVmaW5lIFZJVlNfR0xfTVVMVElf U0FNUExFX0NPTkZJR19VTksxMl9fU0hJRlQJCTEyCisjZGVmaW5lIFZJVlNfR0xfTVVMVElfU0FN UExFX0NPTkZJR19VTksxMih4KQkJCSgoKHgpIDw8IFZJVlNfR0xfTVVMVElfU0FNUExFX0NPTkZJ R19VTksxMl9fU0hJRlQpICYgVklWU19HTF9NVUxUSV9TQU1QTEVfQ09ORklHX1VOSzEyX19NQVNL KQorI2RlZmluZSBWSVZTX0dMX01VTFRJX1NBTVBMRV9DT05GSUdfVU5LMTJfTUFTSwkJCTB4MDAw MDgwMDAKKyNkZWZpbmUgVklWU19HTF9NVUxUSV9TQU1QTEVfQ09ORklHX1VOSzE2X19NQVNLCQkJ MHgwMDAzMDAwMAorI2RlZmluZSBWSVZTX0dMX01VTFRJX1NBTVBMRV9DT05GSUdfVU5LMTZfX1NI SUZUCQkxNgorI2RlZmluZSBWSVZTX0dMX01VTFRJX1NBTVBMRV9DT05GSUdfVU5LMTYoeCkJCQko KCh4KSA8PCBWSVZTX0dMX01VTFRJX1NBTVBMRV9DT05GSUdfVU5LMTZfX1NISUZUKSAmIFZJVlNf R0xfTVVMVElfU0FNUExFX0NPTkZJR19VTksxNl9fTUFTSykKKyNkZWZpbmUgVklWU19HTF9NVUxU SV9TQU1QTEVfQ09ORklHX1VOSzE2X01BU0sJCQkweDAwMDgwMDAwCisKKyNkZWZpbmUgVklWU19H TF9WQVJZSU5HX1RPVEFMX0NPTVBPTkVOVFMJCQkweDAwMDAzODFjCisjZGVmaW5lIFZJVlNfR0xf VkFSWUlOR19UT1RBTF9DT01QT05FTlRTX05VTV9fTUFTSwkJMHgwMDAwMDBmZgorI2RlZmluZSBW SVZTX0dMX1ZBUllJTkdfVE9UQUxfQ09NUE9ORU5UU19OVU1fX1NISUZUCQkwCisjZGVmaW5lIFZJ VlNfR0xfVkFSWUlOR19UT1RBTF9DT01QT05FTlRTX05VTSh4KQkJCSgoKHgpIDw8IFZJVlNfR0xf VkFSWUlOR19UT1RBTF9DT01QT05FTlRTX05VTV9fU0hJRlQpICYgVklWU19HTF9WQVJZSU5HX1RP VEFMX0NPTVBPTkVOVFNfTlVNX19NQVNLKQorCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1f Q09NUE9ORU5UUwkJCQkweDAwMDAzODIwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09N UE9ORU5UU19WQVIwX19NQVNLCQkweDAwMDAwMDA3CisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19O VU1fQ09NUE9ORU5UU19WQVIwX19TSElGVAkJMAorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfTlVN X0NPTVBPTkVOVFNfVkFSMCh4KQkJCSgoKHgpIDw8IFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9O RU5UU19WQVIwX19TSElGVCkgJiBWSVZTX0dMX1ZBUllJTkdfTlVNX0NPTVBPTkVOVFNfVkFSMF9f TUFTSykKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjFfX01BU0sJ CTB4MDAwMDAwNzAKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjFf X1NISUZUCQk0CisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19WQVIxKHgp CQkJKCgoeCkgPDwgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjFfX1NISUZUKSAm IFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19WQVIxX19NQVNLKQorI2RlZmluZSBWSVZT X0dMX1ZBUllJTkdfTlVNX0NPTVBPTkVOVFNfVkFSMl9fTUFTSwkJMHgwMDAwMDcwMAorI2RlZmlu ZSBWSVZTX0dMX1ZBUllJTkdfTlVNX0NPTVBPTkVOVFNfVkFSMl9fU0hJRlQJCTgKKyNkZWZpbmUg VklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjIoeCkJCQkoKCh4KSA8PCBWSVZTX0dM X1ZBUllJTkdfTlVNX0NPTVBPTkVOVFNfVkFSMl9fU0hJRlQpICYgVklWU19HTF9WQVJZSU5HX05V TV9DT01QT05FTlRTX1ZBUjJfX01BU0spCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09N UE9ORU5UU19WQVIzX19NQVNLCQkweDAwMDA3MDAwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19O VU1fQ09NUE9ORU5UU19WQVIzX19TSElGVAkJMTIKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX05V TV9DT01QT05FTlRTX1ZBUjMoeCkJCQkoKCh4KSA8PCBWSVZTX0dMX1ZBUllJTkdfTlVNX0NPTVBP TkVOVFNfVkFSM19fU0hJRlQpICYgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjNf X01BU0spCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19WQVI0X19NQVNL CQkweDAwMDcwMDAwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19WQVI0 X19TSElGVAkJMTYKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjQo eCkJCQkoKCh4KSA8PCBWSVZTX0dMX1ZBUllJTkdfTlVNX0NPTVBPTkVOVFNfVkFSNF9fU0hJRlQp ICYgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjRfX01BU0spCisjZGVmaW5lIFZJ VlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19WQVI1X19NQVNLCQkweDAwNzAwMDAwCisjZGVm aW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19WQVI1X19TSElGVAkJMjAKKyNkZWZp bmUgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjUoeCkJCQkoKCh4KSA8PCBWSVZT X0dMX1ZBUllJTkdfTlVNX0NPTVBPTkVOVFNfVkFSNV9fU0hJRlQpICYgVklWU19HTF9WQVJZSU5H X05VTV9DT01QT05FTlRTX1ZBUjVfX01BU0spCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1f Q09NUE9ORU5UU19WQVI2X19NQVNLCQkweDA3MDAwMDAwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlO R19OVU1fQ09NUE9ORU5UU19WQVI2X19TSElGVAkJMjQKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5H X05VTV9DT01QT05FTlRTX1ZBUjYoeCkJCQkoKCh4KSA8PCBWSVZTX0dMX1ZBUllJTkdfTlVNX0NP TVBPTkVOVFNfVkFSNl9fU0hJRlQpICYgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZB UjZfX01BU0spCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19WQVI3X19N QVNLCQkweDcwMDAwMDAwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19OVU1fQ09NUE9ORU5UU19W QVI3X19TSElGVAkJMjgKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZB UjcoeCkJCQkoKCh4KSA8PCBWSVZTX0dMX1ZBUllJTkdfTlVNX0NPTVBPTkVOVFNfVkFSN19fU0hJ RlQpICYgVklWU19HTF9WQVJZSU5HX05VTV9DT01QT05FTlRTX1ZBUjdfX01BU0spCisKKyNkZWZp bmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0UoaTApCQkgICAgICAgKDB4MDAwMDM4Mjgg KyAweDQqKGkwKSkKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfX0VTSVpF CQkJMHgwMDAwMDAwNAorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9fTEVO CQkJMHgwMDAwMDAwMgorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01Q MF9fTUFTSwkJMHgwMDAwMDAwMworI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VT RV9DT01QMF9fU0hJRlQJCTAKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0Vf Q09NUDAoeCkJCQkoKCh4KSA8PCBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMF9f U0hJRlQpICYgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDBfX01BU0spCisjZGVm aW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxX19NQVNLCQkweDAwMDAwMDBj CisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxX19TSElGVAkJMgor I2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMSh4KQkJCSgoKHgpIDw8 IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxX19TSElGVCkgJiBWSVZTX0dMX1ZB UllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMV9fTUFTSykKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5H X0NPTVBPTkVOVF9VU0VfQ09NUDJfX01BU0sJCTB4MDAwMDAwMzAKKyNkZWZpbmUgVklWU19HTF9W QVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDJfX1NISUZUCQk0CisjZGVmaW5lIFZJVlNfR0xfVkFS WUlOR19DT01QT05FTlRfVVNFX0NPTVAyKHgpCQkJKCgoeCkgPDwgVklWU19HTF9WQVJZSU5HX0NP TVBPTkVOVF9VU0VfQ09NUDJfX1NISUZUKSAmIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNF X0NPTVAyX19NQVNLKQorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01Q M19fTUFTSwkJMHgwMDAwMDBjMAorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VT RV9DT01QM19fU0hJRlQJCTYKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0Vf Q09NUDMoeCkJCQkoKCh4KSA8PCBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QM19f U0hJRlQpICYgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDNfX01BU0spCisjZGVm aW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVA0X19NQVNLCQkweDAwMDAwMzAw CisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVA0X19TSElGVAkJOAor I2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QNCh4KQkJCSgoKHgpIDw8 IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVA0X19TSElGVCkgJiBWSVZTX0dMX1ZB UllJTkdfQ09NUE9ORU5UX1VTRV9DT01QNF9fTUFTSykKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5H X0NPTVBPTkVOVF9VU0VfQ09NUDVfX01BU0sJCTB4MDAwMDBjMDAKKyNkZWZpbmUgVklWU19HTF9W QVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDVfX1NISUZUCQkxMAorI2RlZmluZSBWSVZTX0dMX1ZB UllJTkdfQ09NUE9ORU5UX1VTRV9DT01QNSh4KQkJCSgoKHgpIDw8IFZJVlNfR0xfVkFSWUlOR19D T01QT05FTlRfVVNFX0NPTVA1X19TSElGVCkgJiBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VT RV9DT01QNV9fTUFTSykKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09N UDZfX01BU0sJCTB4MDAwMDMwMDAKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9V U0VfQ09NUDZfX1NISUZUCQkxMgorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VT RV9DT01QNih4KQkJCSgoKHgpIDw8IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVA2 X19TSElGVCkgJiBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QNl9fTUFTSykKKyNk ZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDdfX01BU0sJCTB4MDAwMGMw MDAKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDdfX1NISUZUCQkx NAorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QNyh4KQkJCSgoKHgp IDw8IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVA3X19TSElGVCkgJiBWSVZTX0dM X1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QN19fTUFTSykKKyNkZWZpbmUgVklWU19HTF9WQVJZ SU5HX0NPTVBPTkVOVF9VU0VfQ09NUDhfX01BU0sJCTB4MDAwMzAwMDAKKyNkZWZpbmUgVklWU19H TF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDhfX1NISUZUCQkxNgorI2RlZmluZSBWSVZTX0dM X1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QOCh4KQkJCSgoKHgpIDw8IFZJVlNfR0xfVkFSWUlO R19DT01QT05FTlRfVVNFX0NPTVA4X19TSElGVCkgJiBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5U X1VTRV9DT01QOF9fTUFTSykKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0Vf Q09NUDlfX01BU0sJCTB4MDAwYzAwMDAKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVO VF9VU0VfQ09NUDlfX1NISUZUCQkxOAorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5U X1VTRV9DT01QOSh4KQkJCSgoKHgpIDw8IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NP TVA5X19TSElGVCkgJiBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QOV9fTUFTSykK KyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDEwX19NQVNLCQkweDAw MzAwMDAwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxMF9fU0hJ RlQJCTIwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxMCh4KQkJ CSgoKHgpIDw8IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxMF9fU0hJRlQpICYg VklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDEwX19NQVNLKQorI2RlZmluZSBWSVZT X0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTFfX01BU0sJCTB4MDBjMDAwMDAKKyNkZWZp bmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDExX19TSElGVAkJMjIKKyNkZWZp bmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDExKHgpCQkJKCgoeCkgPDwgVklW U19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDExX19TSElGVCkgJiBWSVZTX0dMX1ZBUllJ TkdfQ09NUE9ORU5UX1VTRV9DT01QMTFfX01BU0spCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19D T01QT05FTlRfVVNFX0NPTVAxMl9fTUFTSwkJMHgwMzAwMDAwMAorI2RlZmluZSBWSVZTX0dMX1ZB UllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTJfX1NISUZUCQkyNAorI2RlZmluZSBWSVZTX0dMX1ZB UllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTIoeCkJCQkoKCh4KSA8PCBWSVZTX0dMX1ZBUllJTkdf Q09NUE9ORU5UX1VTRV9DT01QMTJfX1NISUZUKSAmIFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRf VVNFX0NPTVAxMl9fTUFTSykKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0Vf Q09NUDEzX19NQVNLCQkweDBjMDAwMDAwCisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05F TlRfVVNFX0NPTVAxM19fU0hJRlQJCTI2CisjZGVmaW5lIFZJVlNfR0xfVkFSWUlOR19DT01QT05F TlRfVVNFX0NPTVAxMyh4KQkJCSgoKHgpIDw8IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNF X0NPTVAxM19fU0hJRlQpICYgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDEzX19N QVNLKQorI2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTRfX01BU0sJ CTB4MzAwMDAwMDAKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDE0 X19TSElGVAkJMjgKKyNkZWZpbmUgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDE0 KHgpCQkJKCgoeCkgPDwgVklWU19HTF9WQVJZSU5HX0NPTVBPTkVOVF9VU0VfQ09NUDE0X19TSElG VCkgJiBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTRfX01BU0spCisjZGVmaW5l IFZJVlNfR0xfVkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxNV9fTUFTSwkJMHhjMDAwMDAwMAor I2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTVfX1NISUZUCQkzMAor I2RlZmluZSBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTUoeCkJCQkoKCh4KSA8 PCBWSVZTX0dMX1ZBUllJTkdfQ09NUE9ORU5UX1VTRV9DT01QMTVfX1NISUZUKSAmIFZJVlNfR0xf VkFSWUlOR19DT01QT05FTlRfVVNFX0NPTVAxNV9fTUFTSykKKworI2RlZmluZSBWSVZTX0dMX1VO SzAzODM0CQkJCQkweDAwMDAzODM0CisKKyNkZWZpbmUgVklWU19HTF9VTkswMzgzOAkJCQkJMHgw MDAwMzgzOAorCisjZGVmaW5lIFZJVlNfR0xfQVBJX01PREUJCQkJCTB4MDAwMDM4NGMKKyNkZWZp bmUgVklWU19HTF9BUElfTU9ERV9PUEVOR0wJCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWU19H TF9BUElfTU9ERV9PUEVOVkcJCQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgVklWU19HTF9BUElfTU9E RV9PUEVOQ0wJCQkJCTB4MDAwMDAwMDIKKworI2RlZmluZSBWSVZTX0dMX0NPTlRFWFRfUE9JTlRF UgkJCQkJMHgwMDAwMzg1MAorCisjZGVmaW5lIFZJVlNfR0xfVU5LMDNBMDAJCQkJCTB4MDAwMDNh MDAKKworI2RlZmluZSBWSVZTX0dMX1NUQUxMX1RPS0VOCQkJCQkweDAwMDAzYzAwCisjZGVmaW5l IFZJVlNfR0xfU1RBTExfVE9LRU5fRlJPTV9fTUFTSwkJCQkweDAwMDAwMDFmCisjZGVmaW5lIFZJ VlNfR0xfU1RBTExfVE9LRU5fRlJPTV9fU0hJRlQJCQkJMAorI2RlZmluZSBWSVZTX0dMX1NUQUxM X1RPS0VOX0ZST00oeCkJCQkJKCgoeCkgPDwgVklWU19HTF9TVEFMTF9UT0tFTl9GUk9NX19TSElG VCkgJiBWSVZTX0dMX1NUQUxMX1RPS0VOX0ZST01fX01BU0spCisjZGVmaW5lIFZJVlNfR0xfU1RB TExfVE9LRU5fVE9fX01BU0sJCQkJMHgwMDAwMWYwMAorI2RlZmluZSBWSVZTX0dMX1NUQUxMX1RP S0VOX1RPX19TSElGVAkJCQk4CisjZGVmaW5lIFZJVlNfR0xfU1RBTExfVE9LRU5fVE8oeCkJCQkJ KCgoeCkgPDwgVklWU19HTF9TVEFMTF9UT0tFTl9UT19fU0hJRlQpICYgVklWU19HTF9TVEFMTF9U T0tFTl9UT19fTUFTSykKKyNkZWZpbmUgVklWU19HTF9TVEFMTF9UT0tFTl9GTElQMAkJCQkweDQw MDAwMDAwCisjZGVmaW5lIFZJVlNfR0xfU1RBTExfVE9LRU5fRkxJUDEJCQkJMHg4MDAwMDAwMAor CisjZGVmaW5lIFZJVlNfRFVNTVkJCQkJCQkweDAwMDAwMDAwCisKKyNkZWZpbmUgVklWU19EVU1N WV9EVU1NWQkJCQkJMHgwMDAzZmZmYworCisKKyNlbmRpZiAvKiBTVEFURV9YTUwgKi8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldG5hdml2L3N0YXRlX2hpLnhtbC5oIGIvZHJpdmVycy9z dGFnaW5nL2V0bmF2aXYvc3RhdGVfaGkueG1sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi45Nzk5ZDc0NzNlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3N0 YWdpbmcvZXRuYXZpdi9zdGF0ZV9oaS54bWwuaApAQCAtMCwwICsxLDQwNSBAQAorI2lmbmRlZiBT VEFURV9ISV9YTUwKKyNkZWZpbmUgU1RBVEVfSElfWE1MCisKKy8qIEF1dG9nZW5lcmF0ZWQgZmls ZSwgRE8gTk9UIEVESVQgbWFudWFsbHkhCisKK1RoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRo ZSBydWxlcy1uZy1uZyBoZWFkZXJnZW4gdG9vbCBpbiB0aGlzIGdpdCByZXBvc2l0b3J5OgoraHR0 cDovLzB4MDQubmV0L2NnaXQvaW5kZXguY2dpL3J1bGVzLW5nLW5nCitnaXQgY2xvbmUgZ2l0Oi8v MHgwNC5uZXQvcnVsZXMtbmctbmcKKworVGhlIHJ1bGVzLW5nLW5nIHNvdXJjZSBmaWxlcyB0aGlz IGhlYWRlciB3YXMgZ2VuZXJhdGVkIGZyb20gYXJlOgorLSAvaG9tZS9jaHJpc3RpYW4vcHJvamVj dHMvZXRuYV92aXYvcm5uZGIvc3RhdGUueG1sICAgICggIDE4NTI2IGJ5dGVzLCBmcm9tIDIwMTQt MDktMDYgMDU6NTc6NTcpCistIC9ob21lL2NocmlzdGlhbi9wcm9qZWN0cy9ldG5hX3Zpdi9ybm5k Yi9jb21tb24ueG1sICAgKCAgMTgzNzkgYnl0ZXMsIGZyb20gMjAxNC0wOS0wNiAwNTo1Nzo1NykK Ky0gL2hvbWUvY2hyaXN0aWFuL3Byb2plY3RzL2V0bmFfdml2L3JubmRiL3N0YXRlX2hpLnhtbCAo ICAyMzE3NiBieXRlcywgZnJvbSAyMDE0LTA5LTA2IDA2OjA3OjQ3KQorLSAvaG9tZS9jaHJpc3Rp YW4vcHJvamVjdHMvZXRuYV92aXYvcm5uZGIvc3RhdGVfMmQueG1sICggIDUxMTkxIGJ5dGVzLCBm cm9tIDIwMTQtMDktMDYgMDU6NTc6NTcpCistIC9ob21lL2NocmlzdGlhbi9wcm9qZWN0cy9ldG5h X3Zpdi9ybm5kYi9zdGF0ZV8zZC54bWwgKCAgNTQ1NzAgYnl0ZXMsIGZyb20gMjAxNC0wOS0wNiAw NTo1Nzo1NykKKy0gL2hvbWUvY2hyaXN0aWFuL3Byb2plY3RzL2V0bmFfdml2L3JubmRiL3N0YXRl X3ZnLnhtbCAoICAgNTk0MiBieXRlcywgZnJvbSAyMDE0LTA5LTA2IDA1OjU3OjU3KQorCitDb3B5 cmlnaHQgKEMpIDIwMTQKKyovCisKKworI2RlZmluZSBNTVVfRVhDRVBUSU9OX1NMQVZFX05PVF9Q UkVTRU5UCQkJCTB4MDAwMDAwMDEKKyNkZWZpbmUgTU1VX0VYQ0VQVElPTl9QQUdFX05PVF9QUkVT RU5UCQkJCTB4MDAwMDAwMDIKKyNkZWZpbmUgTU1VX0VYQ0VQVElPTl9XUklURV9WSU9MQVRJT04J CQkJMHgwMDAwMDAwMworI2RlZmluZSBWSVZTX0hJCQkJCQkJCTB4MDAwMDAwMDAKKworI2RlZmlu ZSBWSVZTX0hJX0NMT0NLX0NPTlRST0wJCQkJCTB4MDAwMDAwMDAKKyNkZWZpbmUgVklWU19ISV9D TE9DS19DT05UUk9MX0NMSzNEX0RJUwkJCQkweDAwMDAwMDAxCisjZGVmaW5lIFZJVlNfSElfQ0xP Q0tfQ09OVFJPTF9DTEsyRF9ESVMJCQkJMHgwMDAwMDAwMgorI2RlZmluZSBWSVZTX0hJX0NMT0NL X0NPTlRST0xfRlNDQUxFX1ZBTF9fTUFTSwkJCTB4MDAwMDAxZmMKKyNkZWZpbmUgVklWU19ISV9D TE9DS19DT05UUk9MX0ZTQ0FMRV9WQUxfX1NISUZUCQkJMgorI2RlZmluZSBWSVZTX0hJX0NMT0NL X0NPTlRST0xfRlNDQUxFX1ZBTCh4KQkJCSgoKHgpIDw8IFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9G U0NBTEVfVkFMX19TSElGVCkgJiBWSVZTX0hJX0NMT0NLX0NPTlRST0xfRlNDQUxFX1ZBTF9fTUFT SykKKyNkZWZpbmUgVklWU19ISV9DTE9DS19DT05UUk9MX0ZTQ0FMRV9DTURfTE9BRAkJCTB4MDAw MDAyMDAKKyNkZWZpbmUgVklWU19ISV9DTE9DS19DT05UUk9MX0RJU0FCTEVfUkFNX0NMS19HQVRJ TkcJCTB4MDAwMDA0MDAKKyNkZWZpbmUgVklWU19ISV9DTE9DS19DT05UUk9MX0RJU0FCTEVfREVC VUdfUkVHSVNURVJTCQkweDAwMDAwODAwCisjZGVmaW5lIFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9T T0ZUX1JFU0VUCQkJMHgwMDAwMTAwMAorI2RlZmluZSBWSVZTX0hJX0NMT0NLX0NPTlRST0xfSURM RV8zRAkJCQkweDAwMDEwMDAwCisjZGVmaW5lIFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9JRExFXzJE CQkJCTB4MDAwMjAwMDAKKyNkZWZpbmUgVklWU19ISV9DTE9DS19DT05UUk9MX0lETEVfVkcJCQkJ MHgwMDA0MDAwMAorI2RlZmluZSBWSVZTX0hJX0NMT0NLX0NPTlRST0xfSVNPTEFURV9HUFUJCQkw eDAwMDgwMDAwCisjZGVmaW5lIFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9ERUJVR19QSVhFTF9QSVBF X19NQVNLCQkweDAwZjAwMDAwCisjZGVmaW5lIFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9ERUJVR19Q SVhFTF9QSVBFX19TSElGVAkJMjAKKyNkZWZpbmUgVklWU19ISV9DTE9DS19DT05UUk9MX0RFQlVH X1BJWEVMX1BJUEUoeCkJCSgoKHgpIDw8IFZJVlNfSElfQ0xPQ0tfQ09OVFJPTF9ERUJVR19QSVhF TF9QSVBFX19TSElGVCkgJiBWSVZTX0hJX0NMT0NLX0NPTlRST0xfREVCVUdfUElYRUxfUElQRV9f TUFTSykKKworI2RlZmluZSBWSVZTX0hJX0lETEVfU1RBVEUJCQkJCTB4MDAwMDAwMDQKKyNkZWZp bmUgVklWU19ISV9JRExFX1NUQVRFX0ZFCQkJCQkweDAwMDAwMDAxCisjZGVmaW5lIFZJVlNfSElf SURMRV9TVEFURV9ERQkJCQkJMHgwMDAwMDAwMgorI2RlZmluZSBWSVZTX0hJX0lETEVfU1RBVEVf UEUJCQkJCTB4MDAwMDAwMDQKKyNkZWZpbmUgVklWU19ISV9JRExFX1NUQVRFX1NICQkJCQkweDAw MDAwMDA4CisjZGVmaW5lIFZJVlNfSElfSURMRV9TVEFURV9QQQkJCQkJMHgwMDAwMDAxMAorI2Rl ZmluZSBWSVZTX0hJX0lETEVfU1RBVEVfU0UJCQkJCTB4MDAwMDAwMjAKKyNkZWZpbmUgVklWU19I SV9JRExFX1NUQVRFX1JBCQkJCQkweDAwMDAwMDQwCisjZGVmaW5lIFZJVlNfSElfSURMRV9TVEFU RV9UWAkJCQkJMHgwMDAwMDA4MAorI2RlZmluZSBWSVZTX0hJX0lETEVfU1RBVEVfVkcJCQkJCTB4 MDAwMDAxMDAKKyNkZWZpbmUgVklWU19ISV9JRExFX1NUQVRFX0lNCQkJCQkweDAwMDAwMjAwCisj ZGVmaW5lIFZJVlNfSElfSURMRV9TVEFURV9GUAkJCQkJMHgwMDAwMDQwMAorI2RlZmluZSBWSVZT X0hJX0lETEVfU1RBVEVfVFMJCQkJCTB4MDAwMDA4MDAKKyNkZWZpbmUgVklWU19ISV9JRExFX1NU QVRFX0FYSV9MUAkJCQkweDgwMDAwMDAwCisKKyNkZWZpbmUgVklWU19ISV9BWElfQ09ORklHCQkJ CQkweDAwMDAwMDA4CisjZGVmaW5lIFZJVlNfSElfQVhJX0NPTkZJR19BV0lEX19NQVNLCQkJCTB4 MDAwMDAwMGYKKyNkZWZpbmUgVklWU19ISV9BWElfQ09ORklHX0FXSURfX1NISUZUCQkJCTAKKyNk ZWZpbmUgVklWU19ISV9BWElfQ09ORklHX0FXSUQoeCkJCQkJKCgoeCkgPDwgVklWU19ISV9BWElf Q09ORklHX0FXSURfX1NISUZUKSAmIFZJVlNfSElfQVhJX0NPTkZJR19BV0lEX19NQVNLKQorI2Rl ZmluZSBWSVZTX0hJX0FYSV9DT05GSUdfQVJJRF9fTUFTSwkJCQkweDAwMDAwMGYwCisjZGVmaW5l IFZJVlNfSElfQVhJX0NPTkZJR19BUklEX19TSElGVAkJCQk0CisjZGVmaW5lIFZJVlNfSElfQVhJ X0NPTkZJR19BUklEKHgpCQkJCSgoKHgpIDw8IFZJVlNfSElfQVhJX0NPTkZJR19BUklEX19TSElG VCkgJiBWSVZTX0hJX0FYSV9DT05GSUdfQVJJRF9fTUFTSykKKyNkZWZpbmUgVklWU19ISV9BWElf Q09ORklHX0FXQ0FDSEVfX01BU0sJCQkweDAwMDAwZjAwCisjZGVmaW5lIFZJVlNfSElfQVhJX0NP TkZJR19BV0NBQ0hFX19TSElGVAkJCTgKKyNkZWZpbmUgVklWU19ISV9BWElfQ09ORklHX0FXQ0FD SEUoeCkJCQkJKCgoeCkgPDwgVklWU19ISV9BWElfQ09ORklHX0FXQ0FDSEVfX1NISUZUKSAmIFZJ VlNfSElfQVhJX0NPTkZJR19BV0NBQ0hFX19NQVNLKQorI2RlZmluZSBWSVZTX0hJX0FYSV9DT05G SUdfQVJDQUNIRV9fTUFTSwkJCTB4MDAwMGYwMDAKKyNkZWZpbmUgVklWU19ISV9BWElfQ09ORklH X0FSQ0FDSEVfX1NISUZUCQkJMTIKKyNkZWZpbmUgVklWU19ISV9BWElfQ09ORklHX0FSQ0FDSEUo eCkJCQkJKCgoeCkgPDwgVklWU19ISV9BWElfQ09ORklHX0FSQ0FDSEVfX1NISUZUKSAmIFZJVlNf SElfQVhJX0NPTkZJR19BUkNBQ0hFX19NQVNLKQorCisjZGVmaW5lIFZJVlNfSElfQVhJX1NUQVRV UwkJCQkJMHgwMDAwMDAwYworI2RlZmluZSBWSVZTX0hJX0FYSV9TVEFUVVNfV1JfRVJSX0lEX19N QVNLCQkJMHgwMDAwMDAwZgorI2RlZmluZSBWSVZTX0hJX0FYSV9TVEFUVVNfV1JfRVJSX0lEX19T SElGVAkJCTAKKyNkZWZpbmUgVklWU19ISV9BWElfU1RBVFVTX1dSX0VSUl9JRCh4KQkJCQkoKCh4 KSA8PCBWSVZTX0hJX0FYSV9TVEFUVVNfV1JfRVJSX0lEX19TSElGVCkgJiBWSVZTX0hJX0FYSV9T VEFUVVNfV1JfRVJSX0lEX19NQVNLKQorI2RlZmluZSBWSVZTX0hJX0FYSV9TVEFUVVNfUkRfRVJS X0lEX19NQVNLCQkJMHgwMDAwMDBmMAorI2RlZmluZSBWSVZTX0hJX0FYSV9TVEFUVVNfUkRfRVJS X0lEX19TSElGVAkJCTQKKyNkZWZpbmUgVklWU19ISV9BWElfU1RBVFVTX1JEX0VSUl9JRCh4KQkJ CQkoKCh4KSA8PCBWSVZTX0hJX0FYSV9TVEFUVVNfUkRfRVJSX0lEX19TSElGVCkgJiBWSVZTX0hJ X0FYSV9TVEFUVVNfUkRfRVJSX0lEX19NQVNLKQorI2RlZmluZSBWSVZTX0hJX0FYSV9TVEFUVVNf REVUX1dSX0VSUgkJCQkweDAwMDAwMTAwCisjZGVmaW5lIFZJVlNfSElfQVhJX1NUQVRVU19ERVRf UkRfRVJSCQkJCTB4MDAwMDAyMDAKKworI2RlZmluZSBWSVZTX0hJX0lOVFJfQUNLTk9XTEVER0UJ CQkJMHgwMDAwMDAxMAorI2RlZmluZSBWSVZTX0hJX0lOVFJfQUNLTk9XTEVER0VfSU5UUl9WRUNf X01BU0sJCQkweDdmZmZmZmZmCisjZGVmaW5lIFZJVlNfSElfSU5UUl9BQ0tOT1dMRURHRV9JTlRS X1ZFQ19fU0hJRlQJCTAKKyNkZWZpbmUgVklWU19ISV9JTlRSX0FDS05PV0xFREdFX0lOVFJfVkVD KHgpCQkJKCgoeCkgPDwgVklWU19ISV9JTlRSX0FDS05PV0xFREdFX0lOVFJfVkVDX19TSElGVCkg JiBWSVZTX0hJX0lOVFJfQUNLTk9XTEVER0VfSU5UUl9WRUNfX01BU0spCisjZGVmaW5lIFZJVlNf SElfSU5UUl9BQ0tOT1dMRURHRV9BWElfQlVTX0VSUk9SCQkJMHg4MDAwMDAwMAorCisjZGVmaW5l IFZJVlNfSElfSU5UUl9FTkJMCQkJCQkweDAwMDAwMDE0CisjZGVmaW5lIFZJVlNfSElfSU5UUl9F TkJMX0lOVFJfRU5CTF9WRUNfX01BU0sJCQkweGZmZmZmZmZmCisjZGVmaW5lIFZJVlNfSElfSU5U Ul9FTkJMX0lOVFJfRU5CTF9WRUNfX1NISUZUCQkJMAorI2RlZmluZSBWSVZTX0hJX0lOVFJfRU5C TF9JTlRSX0VOQkxfVkVDKHgpCQkJKCgoeCkgPDwgVklWU19ISV9JTlRSX0VOQkxfSU5UUl9FTkJM X1ZFQ19fU0hJRlQpICYgVklWU19ISV9JTlRSX0VOQkxfSU5UUl9FTkJMX1ZFQ19fTUFTSykKKwor I2RlZmluZSBWSVZTX0hJX0NISVBfSURFTlRJVFkJCQkJCTB4MDAwMDAwMTgKKyNkZWZpbmUgVklW U19ISV9DSElQX0lERU5USVRZX0ZBTUlMWV9fTUFTSwkJCTB4ZmYwMDAwMDAKKyNkZWZpbmUgVklW U19ISV9DSElQX0lERU5USVRZX0ZBTUlMWV9fU0hJRlQJCQkyNAorI2RlZmluZSBWSVZTX0hJX0NI SVBfSURFTlRJVFlfRkFNSUxZKHgpCQkJCSgoKHgpIDw8IFZJVlNfSElfQ0hJUF9JREVOVElUWV9G QU1JTFlfX1NISUZUKSAmIFZJVlNfSElfQ0hJUF9JREVOVElUWV9GQU1JTFlfX01BU0spCisjZGVm aW5lIFZJVlNfSElfQ0hJUF9JREVOVElUWV9QUk9EVUNUX19NQVNLCQkJMHgwMGZmMDAwMAorI2Rl ZmluZSBWSVZTX0hJX0NISVBfSURFTlRJVFlfUFJPRFVDVF9fU0hJRlQJCQkxNgorI2RlZmluZSBW SVZTX0hJX0NISVBfSURFTlRJVFlfUFJPRFVDVCh4KQkJCSgoKHgpIDw8IFZJVlNfSElfQ0hJUF9J REVOVElUWV9QUk9EVUNUX19TSElGVCkgJiBWSVZTX0hJX0NISVBfSURFTlRJVFlfUFJPRFVDVF9f TUFTSykKKyNkZWZpbmUgVklWU19ISV9DSElQX0lERU5USVRZX1JFVklTSU9OX19NQVNLCQkJMHgw MDAwZjAwMAorI2RlZmluZSBWSVZTX0hJX0NISVBfSURFTlRJVFlfUkVWSVNJT05fX1NISUZUCQkJ MTIKKyNkZWZpbmUgVklWU19ISV9DSElQX0lERU5USVRZX1JFVklTSU9OKHgpCQkJKCgoeCkgPDwg VklWU19ISV9DSElQX0lERU5USVRZX1JFVklTSU9OX19TSElGVCkgJiBWSVZTX0hJX0NISVBfSURF TlRJVFlfUkVWSVNJT05fX01BU0spCisKKyNkZWZpbmUgVklWU19ISV9DSElQX0ZFQVRVUkUJCQkJ CTB4MDAwMDAwMWMKKworI2RlZmluZSBWSVZTX0hJX0NISVBfTU9ERUwJCQkJCTB4MDAwMDAwMjAK KworI2RlZmluZSBWSVZTX0hJX0NISVBfUkVWCQkJCQkweDAwMDAwMDI0CisKKyNkZWZpbmUgVklW U19ISV9DSElQX0RBVEUJCQkJCTB4MDAwMDAwMjgKKworI2RlZmluZSBWSVZTX0hJX0NISVBfVElN RQkJCQkJMHgwMDAwMDAyYworCisjZGVmaW5lIFZJVlNfSElfQ0hJUF9NSU5PUl9GRUFUVVJFXzAJ CQkJMHgwMDAwMDAzNAorCisjZGVmaW5lIFZJVlNfSElfQ0FDSEVfQ09OVFJPTAkJCQkJMHgwMDAw MDAzOAorCisjZGVmaW5lIFZJVlNfSElfTUVNT1JZX0NPVU5URVJfUkVTRVQJCQkJMHgwMDAwMDAz YworCisjZGVmaW5lIFZJVlNfSElfUFJPRklMRV9SRUFEX0JZVEVTOAkJCQkweDAwMDAwMDQwCisK KyNkZWZpbmUgVklWU19ISV9QUk9GSUxFX1dSSVRFX0JZVEVTOAkJCQkweDAwMDAwMDQ0CisKKyNk ZWZpbmUgVklWU19ISV9DSElQX1NQRUNTCQkJCQkweDAwMDAwMDQ4CisjZGVmaW5lIFZJVlNfSElf Q0hJUF9TUEVDU19TVFJFQU1fQ09VTlRfX01BU0sJCQkweDAwMDAwMDBmCisjZGVmaW5lIFZJVlNf SElfQ0hJUF9TUEVDU19TVFJFQU1fQ09VTlRfX1NISUZUCQkJMAorI2RlZmluZSBWSVZTX0hJX0NI SVBfU1BFQ1NfU1RSRUFNX0NPVU5UKHgpCQkJKCgoeCkgPDwgVklWU19ISV9DSElQX1NQRUNTX1NU UkVBTV9DT1VOVF9fU0hJRlQpICYgVklWU19ISV9DSElQX1NQRUNTX1NUUkVBTV9DT1VOVF9fTUFT SykKKyNkZWZpbmUgVklWU19ISV9DSElQX1NQRUNTX1JFR0lTVEVSX01BWF9fTUFTSwkJCTB4MDAw MDAwZjAKKyNkZWZpbmUgVklWU19ISV9DSElQX1NQRUNTX1JFR0lTVEVSX01BWF9fU0hJRlQJCQk0 CisjZGVmaW5lIFZJVlNfSElfQ0hJUF9TUEVDU19SRUdJU1RFUl9NQVgoeCkJCQkoKCh4KSA8PCBW SVZTX0hJX0NISVBfU1BFQ1NfUkVHSVNURVJfTUFYX19TSElGVCkgJiBWSVZTX0hJX0NISVBfU1BF Q1NfUkVHSVNURVJfTUFYX19NQVNLKQorI2RlZmluZSBWSVZTX0hJX0NISVBfU1BFQ1NfVEhSRUFE X0NPVU5UX19NQVNLCQkJMHgwMDAwMGYwMAorI2RlZmluZSBWSVZTX0hJX0NISVBfU1BFQ1NfVEhS RUFEX0NPVU5UX19TSElGVAkJCTgKKyNkZWZpbmUgVklWU19ISV9DSElQX1NQRUNTX1RIUkVBRF9D T1VOVCh4KQkJCSgoKHgpIDw8IFZJVlNfSElfQ0hJUF9TUEVDU19USFJFQURfQ09VTlRfX1NISUZU KSAmIFZJVlNfSElfQ0hJUF9TUEVDU19USFJFQURfQ09VTlRfX01BU0spCisjZGVmaW5lIFZJVlNf SElfQ0hJUF9TUEVDU19WRVJURVhfQ0FDSEVfU0laRV9fTUFTSwkJMHgwMDAxZjAwMAorI2RlZmlu ZSBWSVZTX0hJX0NISVBfU1BFQ1NfVkVSVEVYX0NBQ0hFX1NJWkVfX1NISUZUCQkxMgorI2RlZmlu ZSBWSVZTX0hJX0NISVBfU1BFQ1NfVkVSVEVYX0NBQ0hFX1NJWkUoeCkJCQkoKCh4KSA8PCBWSVZT X0hJX0NISVBfU1BFQ1NfVkVSVEVYX0NBQ0hFX1NJWkVfX1NISUZUKSAmIFZJVlNfSElfQ0hJUF9T UEVDU19WRVJURVhfQ0FDSEVfU0laRV9fTUFTSykKKyNkZWZpbmUgVklWU19ISV9DSElQX1NQRUNT X1NIQURFUl9DT1JFX0NPVU5UX19NQVNLCQkweDAxZjAwMDAwCisjZGVmaW5lIFZJVlNfSElfQ0hJ UF9TUEVDU19TSEFERVJfQ09SRV9DT1VOVF9fU0hJRlQJCTIwCisjZGVmaW5lIFZJVlNfSElfQ0hJ UF9TUEVDU19TSEFERVJfQ09SRV9DT1VOVCh4KQkJCSgoKHgpIDw8IFZJVlNfSElfQ0hJUF9TUEVD U19TSEFERVJfQ09SRV9DT1VOVF9fU0hJRlQpICYgVklWU19ISV9DSElQX1NQRUNTX1NIQURFUl9D T1JFX0NPVU5UX19NQVNLKQorI2RlZmluZSBWSVZTX0hJX0NISVBfU1BFQ1NfUElYRUxfUElQRVNf X01BU0sJCQkweDBlMDAwMDAwCisjZGVmaW5lIFZJVlNfSElfQ0hJUF9TUEVDU19QSVhFTF9QSVBF U19fU0hJRlQJCQkyNQorI2RlZmluZSBWSVZTX0hJX0NISVBfU1BFQ1NfUElYRUxfUElQRVMoeCkJ CQkoKCh4KSA8PCBWSVZTX0hJX0NISVBfU1BFQ1NfUElYRUxfUElQRVNfX1NISUZUKSAmIFZJVlNf SElfQ0hJUF9TUEVDU19QSVhFTF9QSVBFU19fTUFTSykKKyNkZWZpbmUgVklWU19ISV9DSElQX1NQ RUNTX1ZFUlRFWF9PVVRQVVRfQlVGRkVSX1NJWkVfX01BU0sJMHhmMDAwMDAwMAorI2RlZmluZSBW SVZTX0hJX0NISVBfU1BFQ1NfVkVSVEVYX09VVFBVVF9CVUZGRVJfU0laRV9fU0hJRlQJMjgKKyNk ZWZpbmUgVklWU19ISV9DSElQX1NQRUNTX1ZFUlRFWF9PVVRQVVRfQlVGRkVSX1NJWkUoeCkJCSgo KHgpIDw8IFZJVlNfSElfQ0hJUF9TUEVDU19WRVJURVhfT1VUUFVUX0JVRkZFUl9TSVpFX19TSElG VCkgJiBWSVZTX0hJX0NISVBfU1BFQ1NfVkVSVEVYX09VVFBVVF9CVUZGRVJfU0laRV9fTUFTSykK KworI2RlZmluZSBWSVZTX0hJX1BST0ZJTEVfV1JJVEVfQlVSU1RTCQkJCTB4MDAwMDAwNGMKKwor I2RlZmluZSBWSVZTX0hJX1BST0ZJTEVfV1JJVEVfUkVRVUVTVFMJCQkJMHgwMDAwMDA1MAorCisj ZGVmaW5lIFZJVlNfSElfUFJPRklMRV9SRUFEX0JVUlNUUwkJCQkweDAwMDAwMDU4CisKKyNkZWZp bmUgVklWU19ISV9QUk9GSUxFX1JFQURfUkVRVUVTVFMJCQkJMHgwMDAwMDA1YworCisjZGVmaW5l IFZJVlNfSElfUFJPRklMRV9SRUFEX0xBU1RTCQkJCTB4MDAwMDAwNjAKKworI2RlZmluZSBWSVZT X0hJX0dQX09VVDAJCQkJCQkweDAwMDAwMDY0CisKKyNkZWZpbmUgVklWU19ISV9HUF9PVVQxCQkJ CQkJMHgwMDAwMDA2OAorCisjZGVmaW5lIFZJVlNfSElfR1BfT1VUMgkJCQkJCTB4MDAwMDAwNmMK KworI2RlZmluZSBWSVZTX0hJX0FYSV9DT05UUk9MCQkJCQkweDAwMDAwMDcwCisjZGVmaW5lIFZJ VlNfSElfQVhJX0NPTlRST0xfV1JfRlVMTF9CVVJTVF9NT0RFCQkJMHgwMDAwMDAwMQorCisjZGVm aW5lIFZJVlNfSElfQ0hJUF9NSU5PUl9GRUFUVVJFXzEJCQkJMHgwMDAwMDA3NAorCisjZGVmaW5l IFZJVlNfSElfUFJPRklMRV9UT1RBTF9DWUNMRVMJCQkJMHgwMDAwMDA3OAorCisjZGVmaW5lIFZJ VlNfSElfUFJPRklMRV9JRExFX0NZQ0xFUwkJCQkweDAwMDAwMDdjCisKKyNkZWZpbmUgVklWU19I SV9DSElQX1NQRUNTXzIJCQkJCTB4MDAwMDAwODAKKyNkZWZpbmUgVklWU19ISV9DSElQX1NQRUNT XzJfQlVGRkVSX1NJWkVfX01BU0sJCQkweDAwMDAwMGZmCisjZGVmaW5lIFZJVlNfSElfQ0hJUF9T UEVDU18yX0JVRkZFUl9TSVpFX19TSElGVAkJCTAKKyNkZWZpbmUgVklWU19ISV9DSElQX1NQRUNT XzJfQlVGRkVSX1NJWkUoeCkJCQkoKCh4KSA8PCBWSVZTX0hJX0NISVBfU1BFQ1NfMl9CVUZGRVJf U0laRV9fU0hJRlQpICYgVklWU19ISV9DSElQX1NQRUNTXzJfQlVGRkVSX1NJWkVfX01BU0spCisj ZGVmaW5lIFZJVlNfSElfQ0hJUF9TUEVDU18yX0lOU1RSVUNUSU9OX0NPVU5UX19NQVNLCQkweDAw MDBmZjAwCisjZGVmaW5lIFZJVlNfSElfQ0hJUF9TUEVDU18yX0lOU1RSVUNUSU9OX0NPVU5UX19T SElGVAkJOAorI2RlZmluZSBWSVZTX0hJX0NISVBfU1BFQ1NfMl9JTlNUUlVDVElPTl9DT1VOVCh4 KQkJKCgoeCkgPDwgVklWU19ISV9DSElQX1NQRUNTXzJfSU5TVFJVQ1RJT05fQ09VTlRfX1NISUZU KSAmIFZJVlNfSElfQ0hJUF9TUEVDU18yX0lOU1RSVUNUSU9OX0NPVU5UX19NQVNLKQorI2RlZmlu ZSBWSVZTX0hJX0NISVBfU1BFQ1NfMl9OVU1fQ09OU1RBTlRTX19NQVNLCQkweGZmZmYwMDAwCisj ZGVmaW5lIFZJVlNfSElfQ0hJUF9TUEVDU18yX05VTV9DT05TVEFOVFNfX1NISUZUCQkxNgorI2Rl ZmluZSBWSVZTX0hJX0NISVBfU1BFQ1NfMl9OVU1fQ09OU1RBTlRTKHgpCQkJKCgoeCkgPDwgVklW U19ISV9DSElQX1NQRUNTXzJfTlVNX0NPTlNUQU5UU19fU0hJRlQpICYgVklWU19ISV9DSElQX1NQ RUNTXzJfTlVNX0NPTlNUQU5UU19fTUFTSykKKworI2RlZmluZSBWSVZTX0hJX0NISVBfTUlOT1Jf RkVBVFVSRV8yCQkJCTB4MDAwMDAwODQKKworI2RlZmluZSBWSVZTX0hJX0NISVBfTUlOT1JfRkVB VFVSRV8zCQkJCTB4MDAwMDAwODgKKworI2RlZmluZSBWSVZTX0hJX0NISVBfTUlOT1JfRkVBVFVS RV80CQkJCTB4MDAwMDAwOTQKKworI2RlZmluZSBWSVZTX1BNCQkJCQkJCTB4MDAwMDAwMDAKKwor I2RlZmluZSBWSVZTX1BNX1BPV0VSX0NPTlRST0xTCQkJCQkweDAwMDAwMTAwCisjZGVmaW5lIFZJ VlNfUE1fUE9XRVJfQ09OVFJPTFNfRU5BQkxFX01PRFVMRV9DTE9DS19HQVRJTkcJMHgwMDAwMDAw MQorI2RlZmluZSBWSVZTX1BNX1BPV0VSX0NPTlRST0xTX0RJU0FCTEVfU1RBTExfTU9EVUxFX0NM T0NLX0dBVElORwkweDAwMDAwMDAyCisjZGVmaW5lIFZJVlNfUE1fUE9XRVJfQ09OVFJPTFNfRElT QUJMRV9TVEFSVkVfTU9EVUxFX0NMT0NLX0dBVElORwkweDAwMDAwMDA0CisjZGVmaW5lIFZJVlNf UE1fUE9XRVJfQ09OVFJPTFNfVFVSTl9PTl9DT1VOVEVSX19NQVNLCQkweDAwMDAwMGYwCisjZGVm aW5lIFZJVlNfUE1fUE9XRVJfQ09OVFJPTFNfVFVSTl9PTl9DT1VOVEVSX19TSElGVAkJNAorI2Rl ZmluZSBWSVZTX1BNX1BPV0VSX0NPTlRST0xTX1RVUk5fT05fQ09VTlRFUih4KQkJKCgoeCkgPDwg VklWU19QTV9QT1dFUl9DT05UUk9MU19UVVJOX09OX0NPVU5URVJfX1NISUZUKSAmIFZJVlNfUE1f UE9XRVJfQ09OVFJPTFNfVFVSTl9PTl9DT1VOVEVSX19NQVNLKQorI2RlZmluZSBWSVZTX1BNX1BP V0VSX0NPTlRST0xTX1RVUk5fT0ZGX0NPVU5URVJfX01BU0sJCTB4ZmZmZjAwMDAKKyNkZWZpbmUg VklWU19QTV9QT1dFUl9DT05UUk9MU19UVVJOX09GRl9DT1VOVEVSX19TSElGVAkJMTYKKyNkZWZp bmUgVklWU19QTV9QT1dFUl9DT05UUk9MU19UVVJOX09GRl9DT1VOVEVSKHgpCQkoKCh4KSA8PCBW SVZTX1BNX1BPV0VSX0NPTlRST0xTX1RVUk5fT0ZGX0NPVU5URVJfX1NISUZUKSAmIFZJVlNfUE1f UE9XRVJfQ09OVFJPTFNfVFVSTl9PRkZfQ09VTlRFUl9fTUFTSykKKworI2RlZmluZSBWSVZTX1BN X01PRFVMRV9DT05UUk9MUwkJCQkJMHgwMDAwMDEwNAorI2RlZmluZSBWSVZTX1BNX01PRFVMRV9D T05UUk9MU19ESVNBQkxFX01PRFVMRV9DTE9DS19HQVRJTkdfRkUJMHgwMDAwMDAwMQorI2RlZmlu ZSBWSVZTX1BNX01PRFVMRV9DT05UUk9MU19ESVNBQkxFX01PRFVMRV9DTE9DS19HQVRJTkdfREUJ MHgwMDAwMDAwMgorI2RlZmluZSBWSVZTX1BNX01PRFVMRV9DT05UUk9MU19ESVNBQkxFX01PRFVM RV9DTE9DS19HQVRJTkdfUEUJMHgwMDAwMDAwNAorCisjZGVmaW5lIFZJVlNfUE1fTU9EVUxFX1NU QVRVUwkJCQkJMHgwMDAwMDEwOAorI2RlZmluZSBWSVZTX1BNX01PRFVMRV9TVEFUVVNfTU9EVUxF X0NMT0NLX0dBVEVEX0ZFCQkweDAwMDAwMDAxCisjZGVmaW5lIFZJVlNfUE1fTU9EVUxFX1NUQVRV U19NT0RVTEVfQ0xPQ0tfR0FURURfREUJCTB4MDAwMDAwMDIKKyNkZWZpbmUgVklWU19QTV9NT0RV TEVfU1RBVFVTX01PRFVMRV9DTE9DS19HQVRFRF9QRQkJMHgwMDAwMDAwNAorCisjZGVmaW5lIFZJ VlNfUE1fUFVMU0VfRUFURVIJCQkJCTB4MDAwMDAxMGMKKworI2RlZmluZSBWSVZTX01NVXYyCQkJ CQkJMHgwMDAwMDAwMAorCisjZGVmaW5lIFZJVlNfTU1VdjJfU0FGRV9BRERSRVNTCQkJCQkweDAw MDAwMTgwCisKKyNkZWZpbmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OCQkJCTB4MDAwMDAxODQK KyNkZWZpbmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OX01PREVfX01BU0sJCQkweDAwMDAwMDAx CisjZGVmaW5lIFZJVlNfTU1VdjJfQ09ORklHVVJBVElPTl9NT0RFX19TSElGVAkJCTAKKyNkZWZp bmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OX01PREVfTU9ERTRfSwkJCTB4MDAwMDAwMDAKKyNk ZWZpbmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OX01PREVfTU9ERTFfSwkJCTB4MDAwMDAwMDEK KyNkZWZpbmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OX01PREVfTUFTSwkJCTB4MDAwMDAwMDgK KyNkZWZpbmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OX0ZMVVNIX19NQVNLCQkJMHgwMDAwMDAx MAorI2RlZmluZSBWSVZTX01NVXYyX0NPTkZJR1VSQVRJT05fRkxVU0hfX1NISUZUCQkJNAorI2Rl ZmluZSBWSVZTX01NVXYyX0NPTkZJR1VSQVRJT05fRkxVU0hfRkxVU0gJCQkweDAwMDAwMDEwCisj ZGVmaW5lIFZJVlNfTU1VdjJfQ09ORklHVVJBVElPTl9GTFVTSF9NQVNLCQkJMHgwMDAwMDA4MAor I2RlZmluZSBWSVZTX01NVXYyX0NPTkZJR1VSQVRJT05fQUREUkVTU19NQVNLCQkJMHgwMDAwMDEw MAorI2RlZmluZSBWSVZTX01NVXYyX0NPTkZJR1VSQVRJT05fQUREUkVTU19fTUFTSwkJCTB4ZmZm ZmZjMDAKKyNkZWZpbmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OX0FERFJFU1NfX1NISUZUCQkJ MTAKKyNkZWZpbmUgVklWU19NTVV2Ml9DT05GSUdVUkFUSU9OX0FERFJFU1MoeCkJCQkoKCh4KSA8 PCBWSVZTX01NVXYyX0NPTkZJR1VSQVRJT05fQUREUkVTU19fU0hJRlQpICYgVklWU19NTVV2Ml9D T05GSUdVUkFUSU9OX0FERFJFU1NfX01BU0spCisKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFUVVMJ CQkJCTB4MDAwMDAxODgKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9OMF9fTUFT SwkJCTB4MDAwMDAwMDMKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9OMF9fU0hJ RlQJCQkwCisjZGVmaW5lIFZJVlNfTU1VdjJfU1RBVFVTX0VYQ0VQVElPTjAoeCkJCQkJKCgoeCkg PDwgVklWU19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9OMF9fU0hJRlQpICYgVklWU19NTVV2Ml9TVEFU VVNfRVhDRVBUSU9OMF9fTUFTSykKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9O MV9fTUFTSwkJCTB4MDAwMDAwMzAKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9O MV9fU0hJRlQJCQk0CisjZGVmaW5lIFZJVlNfTU1VdjJfU1RBVFVTX0VYQ0VQVElPTjEoeCkJCQkJ KCgoeCkgPDwgVklWU19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9OMV9fU0hJRlQpICYgVklWU19NTVV2 Ml9TVEFUVVNfRVhDRVBUSU9OMV9fTUFTSykKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFUVVNfRVhD RVBUSU9OMl9fTUFTSwkJCTB4MDAwMDAzMDAKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFUVVNfRVhD RVBUSU9OMl9fU0hJRlQJCQk4CisjZGVmaW5lIFZJVlNfTU1VdjJfU1RBVFVTX0VYQ0VQVElPTjIo eCkJCQkJKCgoeCkgPDwgVklWU19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9OMl9fU0hJRlQpICYgVklW U19NTVV2Ml9TVEFUVVNfRVhDRVBUSU9OMl9fTUFTSykKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFU VVNfRVhDRVBUSU9OM19fTUFTSwkJCTB4MDAwMDMwMDAKKyNkZWZpbmUgVklWU19NTVV2Ml9TVEFU VVNfRVhDRVBUSU9OM19fU0hJRlQJCQkxMgorI2RlZmluZSBWSVZTX01NVXYyX1NUQVRVU19FWENF UFRJT04zKHgpCQkJCSgoKHgpIDw8IFZJVlNfTU1VdjJfU1RBVFVTX0VYQ0VQVElPTjNfX1NISUZU KSAmIFZJVlNfTU1VdjJfU1RBVFVTX0VYQ0VQVElPTjNfX01BU0spCisKKyNkZWZpbmUgVklWU19N TVV2Ml9DT05UUk9MCQkJCQkweDAwMDAwMThjCisjZGVmaW5lIFZJVlNfTU1VdjJfQ09OVFJPTF9F TkFCTEUJCQkJMHgwMDAwMDAwMQorCisjZGVmaW5lIFZJVlNfTU1VdjJfRVhDRVBUSU9OX0FERFIo aTApCQkJICAgICAgICgweDAwMDAwMTkwICsgMHg0KihpMCkpCisjZGVmaW5lIFZJVlNfTU1VdjJf RVhDRVBUSU9OX0FERFJfX0VTSVpFCQkJMHgwMDAwMDAwNAorI2RlZmluZSBWSVZTX01NVXYyX0VY Q0VQVElPTl9BRERSX19MRU4JCQkJMHgwMDAwMDAwNAorCisjZGVmaW5lIFZJVlNfTUMJCQkJCQkJ MHgwMDAwMDAwMAorCisjZGVmaW5lIFZJVlNfTUNfTU1VX0ZFX1BBR0VfVEFCTEUJCQkJMHgwMDAw MDQwMAorCisjZGVmaW5lIFZJVlNfTUNfTU1VX1RYX1BBR0VfVEFCTEUJCQkJMHgwMDAwMDQwNAor CisjZGVmaW5lIFZJVlNfTUNfTU1VX1BFX1BBR0VfVEFCTEUJCQkJMHgwMDAwMDQwOAorCisjZGVm aW5lIFZJVlNfTUNfTU1VX1BFWl9QQUdFX1RBQkxFCQkJCTB4MDAwMDA0MGMKKworI2RlZmluZSBW SVZTX01DX01NVV9SQV9QQUdFX1RBQkxFCQkJCTB4MDAwMDA0MTAKKworI2RlZmluZSBWSVZTX01D X0RFQlVHX01FTU9SWQkJCQkJMHgwMDAwMDQxNAorI2RlZmluZSBWSVZTX01DX0RFQlVHX01FTU9S WV9TUEVDSUFMX1BBVENIX0dDMzIwCQkweDAwMDAwMDA4CisjZGVmaW5lIFZJVlNfTUNfREVCVUdf TUVNT1JZX0ZBU1RfQ0xFQVJfQllQQVNTCQkJMHgwMDEwMDAwMAorI2RlZmluZSBWSVZTX01DX0RF QlVHX01FTU9SWV9DT01QUkVTU0lPTl9CWVBBU1MJCQkweDAwMjAwMDAwCisKKyNkZWZpbmUgVklW U19NQ19NRU1PUllfQkFTRV9BRERSX1JBCQkJCTB4MDAwMDA0MTgKKworI2RlZmluZSBWSVZTX01D X01FTU9SWV9CQVNFX0FERFJfRkUJCQkJMHgwMDAwMDQxYworCisjZGVmaW5lIFZJVlNfTUNfTUVN T1JZX0JBU0VfQUREUl9UWAkJCQkweDAwMDAwNDIwCisKKyNkZWZpbmUgVklWU19NQ19NRU1PUllf QkFTRV9BRERSX1BFWgkJCQkweDAwMDAwNDI0CisKKyNkZWZpbmUgVklWU19NQ19NRU1PUllfQkFT RV9BRERSX1BFCQkJCTB4MDAwMDA0MjgKKworI2RlZmluZSBWSVZTX01DX01FTU9SWV9USU1JTkdf Q09OVFJPTAkJCQkweDAwMDAwNDJjCisKKyNkZWZpbmUgVklWU19NQ19NRU1PUllfRkxVU0gJCQkJ CTB4MDAwMDA0MzAKKworI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ1lDTEVfQ09VTlRFUgkJCQkw eDAwMDAwNDM4CisKKyNkZWZpbmUgVklWU19NQ19ERUJVR19SRUFEMAkJCQkJMHgwMDAwMDQzYwor CisjZGVmaW5lIFZJVlNfTUNfREVCVUdfUkVBRDEJCQkJCTB4MDAwMDA0NDAKKworI2RlZmluZSBW SVZTX01DX0RFQlVHX1dSSVRFCQkJCQkweDAwMDAwNDQ0CisKKyNkZWZpbmUgVklWU19NQ19QUk9G SUxFX1JBX1JFQUQJCQkJCTB4MDAwMDA0NDgKKworI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfVFhf UkVBRAkJCQkJMHgwMDAwMDQ0YworCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9GRV9SRUFECQkJ CQkweDAwMDAwNDUwCisKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX1BFX1JFQUQJCQkJCTB4MDAw MDA0NTQKKworI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfREVfUkVBRAkJCQkJMHgwMDAwMDQ1OAor CisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9TSF9SRUFECQkJCQkweDAwMDAwNDVjCisKKyNkZWZp bmUgVklWU19NQ19QUk9GSUxFX1BBX1JFQUQJCQkJCTB4MDAwMDA0NjAKKworI2RlZmluZSBWSVZT X01DX1BST0ZJTEVfU0VfUkVBRAkJCQkJMHgwMDAwMDQ2NAorCisjZGVmaW5lIFZJVlNfTUNfUFJP RklMRV9NQ19SRUFECQkJCQkweDAwMDAwNDY4CisKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0hJ X1JFQUQJCQkJCTB4MDAwMDA0NmMKKworI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMAkJ CQkJMHgwMDAwMDQ3MAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMF9GRV9fTUFTSwkJ CTB4MDAwMDAwMGYKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzBfRkVfX1NISUZUCQkJ MAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMF9GRV9SRVNFVAkJCTB4MDAwMDAwMGYK KyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzBfREVfX01BU0sJCQkweDAwMDAwZjAwCisj ZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcwX0RFX19TSElGVAkJCTgKKyNkZWZpbmUgVklW U19NQ19QUk9GSUxFX0NPTkZJRzBfREVfUkVTRVQJCQkweDAwMDAwZjAwCisjZGVmaW5lIFZJVlNf TUNfUFJPRklMRV9DT05GSUcwX1BFX19NQVNLCQkJMHgwMDBmMDAwMAorI2RlZmluZSBWSVZTX01D X1BST0ZJTEVfQ09ORklHMF9QRV9fU0hJRlQJCQkxNgorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVf Q09ORklHMF9QRV9QSVhFTF9DT1VOVF9LSUxMRURfQllfQ09MT1JfUElQRQkweDAwMDAwMDAwCisj ZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcwX1BFX1BJWEVMX0NPVU5UX0tJTExFRF9CWV9E RVBUSF9QSVBFCTB4MDAwMTAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzBfUEVf UElYRUxfQ09VTlRfRFJBV05fQllfQ09MT1JfUElQRQkweDAwMDIwMDAwCisjZGVmaW5lIFZJVlNf TUNfUFJPRklMRV9DT05GSUcwX1BFX1BJWEVMX0NPVU5UX0RSQVdOX0JZX0RFUFRIX1BJUEUJMHgw MDAzMDAwMAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMF9QRV9QSVhFTFNfUkVOREVS RURfMkQJCTB4MDAwYjAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzBfUEVfUkVT RVQJCQkweDAwMGYwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcwX1NIX19NQVNL CQkJMHgwZjAwMDAwMAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMF9TSF9fU0hJRlQJ CQkyNAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMF9TSF9TSEFERVJfQ1lDTEVTCQkw eDA0MDAwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcwX1NIX1BTX0lOU1RfQ09V TlRFUgkJMHgwNzAwMDAwMAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMF9TSF9SRU5E RVJFRF9QSVhFTF9DT1VOVEVSCTB4MDgwMDAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NP TkZJRzBfU0hfVlNfSU5TVF9DT1VOVEVSCQkweDA5MDAwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJP RklMRV9DT05GSUcwX1NIX1JFTkRFUkVEX1ZFUlRJQ0VfQ09VTlRFUgkweDBhMDAwMDAwCisjZGVm aW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcwX1NIX1ZUWF9CUkFOQ0hfSU5TVF9DT1VOVEVSCTB4 MGIwMDAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzBfU0hfVlRYX1RFWExEX0lO U1RfQ09VTlRFUgkweDBjMDAwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcwX1NI X1BYTF9CUkFOQ0hfSU5TVF9DT1VOVEVSCTB4MGQwMDAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9G SUxFX0NPTkZJRzBfU0hfUFhMX1RFWExEX0lOU1RfQ09VTlRFUgkweDBlMDAwMDAwCisjZGVmaW5l IFZJVlNfTUNfUFJPRklMRV9DT05GSUcwX1NIX1JFU0VUCQkJMHgwZjAwMDAwMAorCisjZGVmaW5l IFZJVlNfTUNfUFJPRklMRV9DT05GSUcxCQkJCQkweDAwMDAwNDc0CisjZGVmaW5lIFZJVlNfTUNf UFJPRklMRV9DT05GSUcxX1BBX19NQVNLCQkJMHgwMDAwMDAwZgorI2RlZmluZSBWSVZTX01DX1BS T0ZJTEVfQ09ORklHMV9QQV9fU0hJRlQJCQkwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05G SUcxX1BBX0lOUFVUX1ZUWF9DT1VOVEVSCQkweDAwMDAwMDAzCisjZGVmaW5lIFZJVlNfTUNfUFJP RklMRV9DT05GSUcxX1BBX0lOUFVUX1BSSU1fQ09VTlRFUgkJMHgwMDAwMDAwNAorI2RlZmluZSBW SVZTX01DX1BST0ZJTEVfQ09ORklHMV9QQV9PVVRQVVRfUFJJTV9DT1VOVEVSCQkweDAwMDAwMDA1 CisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1BBX0RFUFRIX0NMSVBQRURfQ09VTlRF UgkweDAwMDAwMDA2CisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1BBX1RSSVZJQUxf UkVKRUNURURfQ09VTlRFUgkweDAwMDAwMDA3CisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05G SUcxX1BBX0NVTExFRF9DT1VOVEVSCQkweDAwMDAwMDA4CisjZGVmaW5lIFZJVlNfTUNfUFJPRklM RV9DT05GSUcxX1BBX1JFU0VUCQkJMHgwMDAwMDAwZgorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVf Q09ORklHMV9TRV9fTUFTSwkJCTB4MDAwMDBmMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NP TkZJRzFfU0VfX1NISUZUCQkJOAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMV9TRV9D VUxMRURfVFJJQU5HTEVfQ09VTlQJMHgwMDAwMDAwMAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVf Q09ORklHMV9TRV9DVUxMRURfTElORVNfQ09VTlQJCTB4MDAwMDAxMDAKKyNkZWZpbmUgVklWU19N Q19QUk9GSUxFX0NPTkZJRzFfU0VfUkVTRVQJCQkweDAwMDAwZjAwCisjZGVmaW5lIFZJVlNfTUNf UFJPRklMRV9DT05GSUcxX1JBX19NQVNLCQkJMHgwMDBmMDAwMAorI2RlZmluZSBWSVZTX01DX1BS T0ZJTEVfQ09ORklHMV9SQV9fU0hJRlQJCQkxNgorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09O RklHMV9SQV9WQUxJRF9QSVhFTF9DT1VOVAkJMHgwMDAwMDAwMAorI2RlZmluZSBWSVZTX01DX1BS T0ZJTEVfQ09ORklHMV9SQV9UT1RBTF9RVUFEX0NPVU5UCQkweDAwMDEwMDAwCisjZGVmaW5lIFZJ VlNfTUNfUFJPRklMRV9DT05GSUcxX1JBX1ZBTElEX1FVQURfQ09VTlRfQUZURVJfRUFSTFlfWgkw eDAwMDIwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1JBX1RPVEFMX1BSSU1J VElWRV9DT1VOVAkweDAwMDMwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1JB X1BJUEVfQ0FDSEVfTUlTU19DT1VOVEVSCTB4MDAwOTAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9G SUxFX0NPTkZJRzFfUkFfUFJFRkVUQ0hfQ0FDSEVfTUlTU19DT1VOVEVSCTB4MDAwYTAwMDAKKyNk ZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzFfUkFfQ1VMTEVEX1FVQURfQ09VTlQJCTB4MDAw YjAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzFfUkFfUkVTRVQJCQkweDAwMGYw MDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RYX19NQVNLCQkJMHgwZjAwMDAw MAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMV9UWF9fU0hJRlQJCQkyNAorI2RlZmlu ZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMV9UWF9UT1RBTF9CSUxJTkVBUl9SRVFVRVNUUwkweDAw MDAwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RYX1RPVEFMX1RSSUxJTkVB Ul9SRVFVRVNUUwkweDAxMDAwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RY X1RPVEFMX0RJU0NBUkRFRF9URVhUVVJFX1JFUVVFU1RTCTB4MDIwMDAwMDAKKyNkZWZpbmUgVklW U19NQ19QUk9GSUxFX0NPTkZJRzFfVFhfVE9UQUxfVEVYVFVSRV9SRVFVRVNUUwkweDAzMDAwMDAw CisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RYX1VOS05PV04JCQkweDA0MDAwMDAw CisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RYX01FTV9SRUFEX0NPVU5UCQkweDA1 MDAwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RYX01FTV9SRUFEX0lOXzhC X0NPVU5UCQkweDA2MDAwMDAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RYX0NB Q0hFX01JU1NfQ09VTlQJCTB4MDcwMDAwMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJ RzFfVFhfQ0FDSEVfSElUX1RFWEVMX0NPVU5UCTB4MDgwMDAwMDAKKyNkZWZpbmUgVklWU19NQ19Q Uk9GSUxFX0NPTkZJRzFfVFhfQ0FDSEVfTUlTU19URVhFTF9DT1VOVAkweDA5MDAwMDAwCisjZGVm aW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcxX1RYX1JFU0VUCQkJMHgwZjAwMDAwMAorCisjZGVm aW5lIFZJVlNfTUNfUFJPRklMRV9DT05GSUcyCQkJCQkweDAwMDAwNDc4CisjZGVmaW5lIFZJVlNf TUNfUFJPRklMRV9DT05GSUcyX01DX19NQVNLCQkJMHgwMDAwMDAwZgorI2RlZmluZSBWSVZTX01D X1BST0ZJTEVfQ09ORklHMl9NQ19fU0hJRlQJCQkwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9D T05GSUcyX01DX1RPVEFMX1JFQURfUkVRXzhCX0ZST01fUElQRUxJTkUJMHgwMDAwMDAwMQorI2Rl ZmluZSBWSVZTX01DX1BST0ZJTEVfQ09ORklHMl9NQ19UT1RBTF9SRUFEX1JFUV84Ql9GUk9NX0lQ CTB4MDAwMDAwMDIKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzJfTUNfVE9UQUxfV1JJ VEVfUkVRXzhCX0ZST01fUElQRUxJTkUJMHgwMDAwMDAwMworI2RlZmluZSBWSVZTX01DX1BST0ZJ TEVfQ09ORklHMl9NQ19SRVNFVAkJCTB4MDAwMDAwMGYKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxF X0NPTkZJRzJfSElfX01BU0sJCQkweDAwMDAwZjAwCisjZGVmaW5lIFZJVlNfTUNfUFJPRklMRV9D T05GSUcyX0hJX19TSElGVAkJCTgKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzJfSElf QVhJX0NZQ0xFU19SRUFEX1JFUVVFU1RfU1RBTExFRAkweDAwMDAwMDAwCisjZGVmaW5lIFZJVlNf TUNfUFJPRklMRV9DT05GSUcyX0hJX0FYSV9DWUNMRVNfV1JJVEVfUkVRVUVTVF9TVEFMTEVECTB4 MDAwMDAxMDAKKyNkZWZpbmUgVklWU19NQ19QUk9GSUxFX0NPTkZJRzJfSElfQVhJX0NZQ0xFU19X UklURV9EQVRBX1NUQUxMRUQJMHgwMDAwMDIwMAorI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09O RklHMl9ISV9SRVNFVAkJCTB4MDAwMDBmMDAKKworI2RlZmluZSBWSVZTX01DX1BST0ZJTEVfQ09O RklHMwkJCQkJMHgwMDAwMDQ3YworCisjZGVmaW5lIFZJVlNfTUNfQlVTX0NPTkZJRwkJCQkJMHgw MDAwMDQ4MAorCisjZGVmaW5lIFZJVlNfTUNfU1RBUlRfQ09NUE9TSVRJT04JCQkJMHgwMDAwMDU1 NAorCisjZGVmaW5lIFZJVlNfTUNfMTI4Ql9NRVJHRQkJCQkJMHgwMDAwMDU1OAorCisKKyNlbmRp ZiAvKiBTVEFURV9ISV9YTUwgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZXRuYXZp dl9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vZXRuYXZpdl9kcm0uaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY3YjVhYzZmMzg0MgotLS0gL2Rldi9udWxsCisrKyBi L2luY2x1ZGUvdWFwaS9kcm0vZXRuYXZpdl9kcm0uaApAQCAtMCwwICsxLDIyNSBAQAorLyoKKyAq IENvcHlyaWdodCAoQykgMjAxMyBSZWQgSGF0CisgKiBBdXRob3I6IFJvYiBDbGFyayA8cm9iZGNs YXJrQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVk IGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRl dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYg X19FVE5BVklWX0RSTV9IX18KKyNkZWZpbmUgX19FVE5BVklWX0RSTV9IX18KKworI2luY2x1ZGUg PHN0ZGRlZi5oPgorI2luY2x1ZGUgPGRybS9kcm0uaD4KKworLyogUGxlYXNlIG5vdGUgdGhhdCBt b2RpZmljYXRpb25zIHRvIGFsbCBzdHJ1Y3RzIGRlZmluZWQgaGVyZSBhcmUKKyAqIHN1YmplY3Qg dG8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgY29uc3RyYWludHM6CisgKiAgMSkgRG8gbm90IHVz ZSBwb2ludGVycywgdXNlIHVpbnQ2NF90IGluc3RlYWQgZm9yIDMyIGJpdCAvIDY0IGJpdAorICog ICAgIHVzZXIva2VybmVsIGNvbXBhdGliaWxpdHkKKyAqICAyKSBLZWVwIGZpZWxkcyBhbGlnbmVk IHRvIHRoZWlyIHNpemUKKyAqICAzKSBCZWNhdXNlIG9mIGhvdyBkcm1faW9jdGwoKSB3b3Jrcywg d2UgY2FuIGFkZCBuZXcgZmllbGRzIGF0CisgKiAgICAgdGhlIGVuZCBvZiBhbiBpb2N0bCBpZiBz b21lIGNhcmUgaXMgdGFrZW46IGRybV9pb2N0bCgpIHdpbGwKKyAqICAgICB6ZXJvIG91dCB0aGUg bmV3IGZpZWxkcyBhdCB0aGUgdGFpbCBvZiB0aGUgaW9jdGwsIHNvIGEgemVybworICogICAgIHZh bHVlIHNob3VsZCBoYXZlIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgbWVhbmluZy4gIEFuZCBmb3IK KyAqICAgICBvdXRwdXQgcGFyYW1zLCB1c2Vyc3BhY2Ugd29uJ3Qgc2VlIHRoZSBuZXdseSBhZGRl ZCBvdXRwdXQKKyAqICAgICBmaWVsZHMuLiBzbyB0aGF0IGhhcyB0byBiZSBzb21laG93IG9rLgor ICovCisKKyNkZWZpbmUgRVROQV9QSVBFXzNEICAgICAgMHgwMAorI2RlZmluZSBFVE5BX1BJUEVf MkQgICAgICAweDAxCisjZGVmaW5lIEVUTkFfUElQRV9WRyAgICAgIDB4MDIKKworI2RlZmluZSBF VE5BX01BWF9QSVBFUyAgICAzCisKKy8qIHRpbWVvdXRzIGFyZSBzcGVjaWZpZWQgaW4gY2xvY2st bW9ub3RvbmljIGFic29sdXRlIHRpbWVzICh0byBzaW1wbGlmeQorICogcmVzdGFydGluZyBpbnRl cnJ1cHRlZCBpb2N0bHMpLiAgVGhlIGZvbGxvd2luZyBzdHJ1Y3QgaXMgbG9naWNhbGx5IHRoZQor ICogc2FtZSBhcyAnc3RydWN0IHRpbWVzcGVjJyBidXQgMzIvNjRiIEFCSSBzYWZlLgorICovCitz dHJ1Y3QgZHJtX2V0bmF2aXZfdGltZXNwZWMgeworCWludDY0X3QgdHZfc2VjOyAgICAgICAgICAv KiBzZWNvbmRzICovCisJaW50NjRfdCB0dl9uc2VjOyAgICAgICAgIC8qIG5hbm9zZWNvbmRzICov Cit9OworCisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX01PREVMICAgICAgICAgICAgICAgICAg ICAgMHgwMQorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9SRVZJU0lPTiAgICAgICAgICAgICAg ICAgIDB4MDIKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfRkVBVFVSRVNfMCAgICAgICAgICAg ICAgICAweDAzCisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX0ZFQVRVUkVTXzEgICAgICAgICAg ICAgICAgMHgwNAorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9GRUFUVVJFU18yICAgICAgICAg ICAgICAgIDB4MDUKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfRkVBVFVSRVNfMyAgICAgICAg ICAgICAgICAweDA2CisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX0ZFQVRVUkVTXzQgICAgICAg ICAgICAgICAgMHgwNworCisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX1NUUkVBTV9DT1VOVCAg ICAgICAgICAgICAgMHgxMAorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9SRUdJU1RFUl9NQVgg ICAgICAgICAgICAgIDB4MTEKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfVEhSRUFEX0NPVU5U ICAgICAgICAgICAgICAweDEyCisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX1ZFUlRFWF9DQUNI RV9TSVpFICAgICAgICAgMHgxMworI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9TSEFERVJfQ09S RV9DT1VOVCAgICAgICAgIDB4MTQKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfUElYRUxfUElQ RVMgICAgICAgICAgICAgICAweDE1CisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX1ZFUlRFWF9P VVRQVVRfQlVGRkVSX1NJWkUgMHgxNgorI2RlZmluZSBFVE5BVklWX1BBUkFNX0dQVV9CVUZGRVJf U0laRSAgICAgICAgICAgICAgIDB4MTcKKyNkZWZpbmUgRVROQVZJVl9QQVJBTV9HUFVfSU5TVFJV Q1RJT05fQ09VTlQgICAgICAgICAweDE4CisjZGVmaW5lIEVUTkFWSVZfUEFSQU1fR1BVX05VTV9D T05TVEFOVFMgICAgICAgICAgICAgMHgxOQorCisvLyNkZWZpbmUgTVNNX1BBUkFNX0dNRU1fU0la RSAgMHgwMgorCitzdHJ1Y3QgZHJtX2V0bmF2aXZfcGFyYW0geworCXVpbnQzMl90IHBpcGU7ICAg ICAgICAgICAvKiBpbiwgRVROQV9QSVBFX3ggKi8KKwl1aW50MzJfdCBwYXJhbTsgICAgICAgICAg LyogaW4sIEVUTkFWSVZfUEFSQU1feCAqLworCXVpbnQ2NF90IHZhbHVlOyAgICAgICAgICAvKiBv dXQgKGdldF9wYXJhbSkgb3IgaW4gKHNldF9wYXJhbSkgKi8KK307CisKKy8qCisgKiBHRU0gYnVm ZmVyczoKKyAqLworCisjZGVmaW5lIEVUTkFfQk9fQ01EU1RSRUFNICAgIDB4MDAwMDAwMDEKKyNk ZWZpbmUgRVROQV9CT19DQUNIRV9NQVNLICAgMHgwMDBmMDAwMAorLyogY2FjaGUgbW9kZXMgKi8K KyNkZWZpbmUgRVROQV9CT19DQUNIRUQgICAgICAgMHgwMDAxMDAwMAorI2RlZmluZSBFVE5BX0JP X1dDICAgICAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIEVUTkFfQk9fVU5DQUNIRUQgICAgIDB4 MDAwNDAwMDAKKworc3RydWN0IGRybV9ldG5hdml2X2dlbV9uZXcgeworCXVpbnQ2NF90IHNpemU7 ICAgICAgICAgICAvKiBpbiAqLworCXVpbnQzMl90IGZsYWdzOyAgICAgICAgICAvKiBpbiwgbWFz ayBvZiBFVE5BX0JPX3ggKi8KKwl1aW50MzJfdCBoYW5kbGU7ICAgICAgICAgLyogb3V0ICovCit9 OworCitzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX2luZm8geworCXVpbnQzMl90IGhhbmRsZTsgICAg ICAgICAvKiBpbiAqLworCXVpbnQzMl90IHBhZDsKKwl1aW50NjRfdCBvZmZzZXQ7ICAgICAgICAg Lyogb3V0LCBvZmZzZXQgdG8gcGFzcyB0byBtbWFwKCkgKi8KK307CisKKyNkZWZpbmUgRVROQV9Q UkVQX1JFQUQgICAgICAgIDB4MDEKKyNkZWZpbmUgRVROQV9QUkVQX1dSSVRFICAgICAgIDB4MDIK KyNkZWZpbmUgRVROQV9QUkVQX05PU1lOQyAgICAgIDB4MDQKKworc3RydWN0IGRybV9ldG5hdml2 X2dlbV9jcHVfcHJlcCB7CisJdWludDMyX3QgaGFuZGxlOyAgICAgICAgIC8qIGluICovCisJdWlu dDMyX3Qgb3A7ICAgICAgICAgICAgIC8qIGluLCBtYXNrIG9mIEVUTkFfUFJFUF94ICovCisJc3Ry dWN0IGRybV9ldG5hdml2X3RpbWVzcGVjIHRpbWVvdXQ7ICAgLyogaW4gKi8KK307CisKK3N0cnVj dCBkcm1fZXRuYXZpdl9nZW1fY3B1X2ZpbmkgeworCXVpbnQzMl90IGhhbmRsZTsgICAgICAgICAv KiBpbiAqLworfTsKKworLyoKKyAqIENtZHN0cmVhbSBTdWJtaXNzaW9uOgorICovCisKKy8qIFRo ZSB2YWx1ZSB3cml0dGVuIGludG8gdGhlIGNtZHN0cmVhbSBpcyBsb2dpY2FsbHk6CisgKgorICog ICAoKHJlbG9jYnVmLT5ncHVhZGRyICsgcmVsb2Nfb2Zmc2V0KSA8PCBzaGlmdCkgfCBvcgorICoK KyAqIFdoZW4gd2UgaGF2ZSBHUFUncyB3LyA+MzJiaXQgcHRycywgaXQgc2hvdWxkIGJlIHBvc3Np YmxlIHRvIGRlYWwKKyAqIHdpdGggdGhpcyBieSBlbWl0J2luZyB0d28gcmVsb2MgZW50cmllcyB3 aXRoIGFwcHJvcHJpYXRlIHNoaWZ0CisgKiB2YWx1ZXMuICBPciBhIG5ldyBFVE5BX1NVQk1JVF9D TURfeCB0eXBlIHdvdWxkIGFsc28gYmUgYW4gb3B0aW9uLgorICoKKyAqIE5PVEUgdGhhdCByZWxv YydzIG11c3QgYmUgc29ydGVkIGJ5IG9yZGVyIG9mIGluY3JlYXNpbmcgc3VibWl0X29mZnNldCwK KyAqIG90aGVyd2lzZSBFSU5WQUwuCisgKi8KK3N0cnVjdCBkcm1fZXRuYXZpdl9nZW1fc3VibWl0 X3JlbG9jIHsKKwl1aW50MzJfdCBzdWJtaXRfb2Zmc2V0OyAgLyogaW4sIG9mZnNldCBmcm9tIHN1 Ym1pdF9ibyAqLworCXVpbnQzMl90IG9yOyAgICAgICAgICAgICAvKiBpbiwgdmFsdWUgT1InZCB3 aXRoIHJlc3VsdCAqLworCWludDMyX3QgIHNoaWZ0OyAgICAgICAgICAvKiBpbiwgYW1vdW50IG9m IGxlZnQgc2hpZnQgKGNhbiBiZSBuZWdhdGl2ZSkgKi8KKwl1aW50MzJfdCByZWxvY19pZHg7ICAg ICAgLyogaW4sIGluZGV4IG9mIHJlbG9jX2JvIGJ1ZmZlciAqLworCXVpbnQ2NF90IHJlbG9jX29m ZnNldDsgICAvKiBpbiwgb2Zmc2V0IGZyb20gc3RhcnQgb2YgcmVsb2NfYm8gKi8KK307CisKKy8q IHN1Ym1pdC10eXBlczoKKyAqICAgQlVGIC0gdGhpcyBjbWQgYnVmZmVyIGlzIGV4ZWN1dGVkIG5v cm1hbGx5LgorICogICBJQl9UQVJHRVRfQlVGIC0gdGhpcyBjbWQgYnVmZmVyIGlzIGFuIElCIHRh cmdldC4gIFJlbG9jJ3MgYXJlCisgKiAgICAgIHByb2Nlc3NlZCBub3JtYWxseSwgYnV0IHRoZSBr ZXJuZWwgZG9lcyBub3Qgc2V0dXAgYW4gSUIgdG8KKyAqICAgICAgdGhpcyBidWZmZXIgaW4gdGhl IGZpcnN0LWxldmVsIHJpbmdidWZmZXIKKyAqICAgQ1RYX1JFU1RPUkVfQlVGIC0gb25seSBleGVj dXRlZCBpZiB0aGVyZSBoYXMgYmVlbiBhIEdQVSBjb250ZXh0CisgKiAgICAgIHN3aXRjaCBzaW5j ZSB0aGUgbGFzdCBTVUJNSVQgaW9jdGwKKyAqLworI2RlZmluZSBFVE5BX1NVQk1JVF9DTURfQlVG ICAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBFVE5BX1NVQk1JVF9DTURfSUJfVEFSR0VUX0JV RiAgIDB4MDAwMgorI2RlZmluZSBFVE5BX1NVQk1JVF9DTURfQ1RYX1JFU1RPUkVfQlVGIDB4MDAw Mworc3RydWN0IGRybV9ldG5hdml2X2dlbV9zdWJtaXRfY21kIHsKKwl1aW50MzJfdCB0eXBlOyAg ICAgICAgICAgLyogaW4sIG9uZSBvZiBFVE5BX1NVQk1JVF9DTURfeCAqLworCXVpbnQzMl90IHN1 Ym1pdF9pZHg7ICAgICAvKiBpbiwgaW5kZXggb2Ygc3VibWl0X2JvIGNtZHN0cmVhbSBidWZmZXIg Ki8KKwl1aW50MzJfdCBzdWJtaXRfb2Zmc2V0OyAgLyogaW4sIG9mZnNldCBpbnRvIHN1Ym1pdF9i byAqLworCXVpbnQzMl90IHNpemU7ICAgICAgICAgICAvKiBpbiwgY21kc3RyZWFtIHNpemUgKi8K Kwl1aW50MzJfdCBwYWQ7CisJdWludDMyX3QgbnJfcmVsb2NzOyAgICAgIC8qIGluLCBudW1iZXIg b2Ygc3VibWl0X3JlbG9jJ3MgKi8KKwl1aW50NjRfdCBfX3VzZXIgcmVsb2NzOyAgLyogaW4sIHB0 ciB0byBhcnJheSBvZiBzdWJtaXRfcmVsb2MncyAqLworfTsKKworLyogRWFjaCBidWZmZXIgcmVm ZXJlbmNlZCBlbHNld2hlcmUgaW4gdGhlIGNtZHN0cmVhbSBzdWJtaXQgKGllLiB0aGUKKyAqIGNt ZHN0cmVhbSBidWZmZXIocykgdGhlbXNlbHZlcyBvciByZWxvYyBlbnRyaWVzKSBoYXMgb25lIChh bmQgb25seQorICogb25lKSBlbnRyeSBpbiB0aGUgc3VibWl0LT5ib3NbXSB0YWJsZS4KKyAqCisg KiBBcyBhIG9wdGltaXphdGlvbiwgdGhlIGN1cnJlbnQgYnVmZmVyIChncHUgdmlydHVhbCBhZGRy ZXNzKSBjYW4gYmUKKyAqIHBhc3NlZCBiYWNrIHRocm91Z2ggdGhlICdwcmVzdW1lZCcgZmllbGQu ICBJZiBvbiBhIHN1YnNlcXVlbnQgcmVsb2MsCisgKiB1c2Vyc3BhY2UgcGFzc2VzIGJhY2sgYSAn cHJlc3VtZWQnIGFkZHJlc3MgdGhhdCBpcyBzdGlsbCB2YWxpZCwKKyAqIHRoZW4gcGF0Y2hpbmcg dGhlIGNtZHN0cmVhbSBmb3IgdGhpcyBlbnRyeSBpcyBza2lwcGVkLiAgVGhpcyBjYW4KKyAqIGF2 b2lkIGtlcm5lbCBuZWVkaW5nIHRvIG1hcC9hY2Nlc3MgdGhlIGNtZHN0cmVhbSBibyBpbiB0aGUg Y29tbW9uCisgKiBjYXNlLgorICovCisjZGVmaW5lIEVUTkFfU1VCTUlUX0JPX1JFQUQgICAgICAg ICAgICAgMHgwMDAxCisjZGVmaW5lIEVUTkFfU1VCTUlUX0JPX1dSSVRFICAgICAgICAgICAgMHgw MDAyCitzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX3N1Ym1pdF9ibyB7CisJdWludDMyX3QgZmxhZ3M7 ICAgICAgICAgIC8qIGluLCBtYXNrIG9mIEVUTkFfU1VCTUlUX0JPX3ggKi8KKwl1aW50MzJfdCBo YW5kbGU7ICAgICAgICAgLyogaW4sIEdFTSBoYW5kbGUgKi8KKwl1aW50NjRfdCBwcmVzdW1lZDsg ICAgICAgLyogaW4vb3V0LCBwcmVzdW1lZCBidWZmZXIgYWRkcmVzcyAqLworfTsKKworLyogRWFj aCBjbWRzdHJlYW0gc3VibWl0IGNvbnNpc3RzIG9mIGEgdGFibGUgb2YgYnVmZmVycyBpbnZvbHZl ZCwgYW5kCisgKiBvbmUgb3IgbW9yZSBjbWRzdHJlYW0gYnVmZmVycy4gIFRoaXMgYWxsb3dzIGZv ciBjb25kaXRpb25hbCBleGVjdXRpb24KKyAqIChjb250ZXh0LXJlc3RvcmUpLCBhbmQgSUIgYnVm ZmVycyBuZWVkZWQgZm9yIHBlciB0aWxlL2JpbiBkcmF3IGNtZHMuCisgKi8KK3N0cnVjdCBkcm1f ZXRuYXZpdl9nZW1fc3VibWl0IHsKKwl1aW50MzJfdCBwaXBlOyAgICAgICAgICAgLyogaW4sIEVU TkFfUElQRV94ICovCisJdWludDMyX3QgZmVuY2U7ICAgICAgICAgIC8qIG91dCAqLworCXVpbnQz Ml90IG5yX2JvczsgICAgICAgICAvKiBpbiwgbnVtYmVyIG9mIHN1Ym1pdF9ibydzICovCisJdWlu dDMyX3QgbnJfY21kczsgICAgICAgIC8qIGluLCBudW1iZXIgb2Ygc3VibWl0X2NtZCdzICovCisJ dWludDY0X3QgX191c2VyIGJvczsgICAgIC8qIGluLCBwdHIgdG8gYXJyYXkgb2Ygc3VibWl0X2Jv J3MgKi8KKwl1aW50NjRfdCBfX3VzZXIgY21kczsgICAgLyogaW4sIHB0ciB0byBhcnJheSBvZiBz dWJtaXRfY21kJ3MgKi8KK307CisKKy8qIFRoZSBub3JtYWwgd2F5IHRvIHN5bmNocm9uaXplIHdp dGggdGhlIEdQVSBpcyBqdXN0IHRvIENQVV9QUkVQIG9uCisgKiBhIGJ1ZmZlciBpZiB5b3UgbmVl ZCB0byBhY2Nlc3MgaXQgZnJvbSB0aGUgQ1BVIChvdGhlciBjbWRzdHJlYW0KKyAqIHN1Ym1pc3Np b24gZnJvbSBzYW1lIG9yIG90aGVyIGNvbnRleHRzLCBQQUdFX0ZMSVAgaW9jdGwsIGV0YywgYWxs CisgKiBoYW5kbGUgdGhlIHJlcXVpcmVkIHN5bmNocm9uaXphdGlvbiB1bmRlciB0aGUgaG9vZCku ICBUaGlzIGlvY3RsCisgKiBtYWlubHkganVzdCBleGlzdHMgYXMgYSB3YXkgdG8gaW1wbGVtZW50 IHRoZSBnYWxsaXVtIHBpcGVfZmVuY2UKKyAqIEFQSXMgd2l0aG91dCByZXF1aXJpbmcgYSBkdW1t eSBibyB0byBzeW5jaHJvbml6ZSBvbi4KKyAqLworc3RydWN0IGRybV9ldG5hdml2X3dhaXRfZmVu Y2UgeworCXVpbnQzMl90IHBpcGU7ICAgICAgICAgICAvKiBpbiwgRVROQV9QSVBFX3ggKi8KKwl1 aW50MzJfdCBmZW5jZTsgICAgICAgICAgLyogaW4gKi8KKwlzdHJ1Y3QgZHJtX2V0bmF2aXZfdGlt ZXNwZWMgdGltZW91dDsgICAvKiBpbiAqLworfTsKKworI2RlZmluZSBEUk1fRVROQVZJVl9HRVRf UEFSQU0gICAgICAgICAgMHgwMAorLyogcGxhY2Vob2xkZXI6CisjZGVmaW5lIERSTV9NU01fU0VU X1BBUkFNICAgICAgICAgICAgICAweDAxCisgKi8KKyNkZWZpbmUgRFJNX0VUTkFWSVZfR0VNX05F VyAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgRFJNX0VUTkFWSVZfR0VNX0lORk8gICAgICAgICAg IDB4MDMKKyNkZWZpbmUgRFJNX0VUTkFWSVZfR0VNX0NQVV9QUkVQICAgICAgIDB4MDQKKyNkZWZp bmUgRFJNX0VUTkFWSVZfR0VNX0NQVV9GSU5JICAgICAgIDB4MDUKKyNkZWZpbmUgRFJNX0VUTkFW SVZfR0VNX1NVQk1JVCAgICAgICAgIDB4MDYKKyNkZWZpbmUgRFJNX0VUTkFWSVZfV0FJVF9GRU5D RSAgICAgICAgIDB4MDcKKyNkZWZpbmUgRFJNX0VUTkFWSVZfTlVNX0lPQ1RMUyAgICAgICAgIDB4 MDgKKworI2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9HRVRfUEFSQU0gICAgRFJNX0lPV1IoRFJN X0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFVF9QQVJBTSwgc3RydWN0IGRybV9ldG5hdml2 X3BhcmFtKQorI2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9HRU1fTkVXICAgICAgRFJNX0lPV1Io RFJNX0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFTV9ORVcsIHN0cnVjdCBkcm1fZXRuYXZp dl9nZW1fbmV3KQorI2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9HRU1fSU5GTyAgICAgRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFTV9JTkZPLCBzdHJ1Y3QgZHJtX2V0 bmF2aXZfZ2VtX2luZm8pCisjZGVmaW5lIERSTV9JT0NUTF9FVE5BVklWX0dFTV9DUFVfUFJFUCBE Uk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0VUTkFWSVZfR0VNX0NQVV9QUkVQLCBzdHJ1 Y3QgZHJtX2V0bmF2aXZfZ2VtX2NwdV9wcmVwKQorI2RlZmluZSBEUk1fSU9DVExfRVROQVZJVl9H RU1fQ1BVX0ZJTkkgRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9FVE5BVklWX0dFTV9D UFVfRklOSSwgc3RydWN0IGRybV9ldG5hdml2X2dlbV9jcHVfZmluaSkKKyNkZWZpbmUgRFJNX0lP Q1RMX0VUTkFWSVZfR0VNX1NVQk1JVCAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f RVROQVZJVl9HRU1fU1VCTUlULCBzdHJ1Y3QgZHJtX2V0bmF2aXZfZ2VtX3N1Ym1pdCkKKyNkZWZp bmUgRFJNX0lPQ1RMX0VUTkFWSVZfV0FJVF9GRU5DRSAgIERSTV9JT1cgKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fRVROQVZJVl9XQUlUX0ZFTkNFLCBzdHJ1Y3QgZHJtX2V0bmF2aXZfd2FpdF9mZW5j ZSkKKworI2VuZGlmIC8qIF9fRVROQVZJVl9EUk1fSF9fICovCi0tIAoyLjEuNAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK