From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v6 02/24] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Wed, 6 Apr 2016 23:49:21 -0400 Message-ID: <1460000983-28170-3-git-send-email-konrad.wilk@oracle.com> References: <1460000983-28170-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ao0xK-0004pX-Rk for xen-devel@lists.xenproject.org; Thu, 07 Apr 2016 03:50:07 +0000 In-Reply-To: <1460000983-28170-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad@kernel.org, ross.lagerwall@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com, andrew.cooper3@citrix.com Cc: Wei Liu , Daniel De Graaf , Stefano Stabellini , Ian Jackson , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFjdHVhbGx5IGRvIGFueSBwYXRjaGluZy4KCkl0 IGp1c3QgYWRkcyB0aGUgZnJhbWV3b3JrIGZvciBkb2luZyB0aGUgaHlwZXJjYWxscywKa2VlcGlu ZyB0cmFjayBvZiBFTEYgcGF5bG9hZHMsIGFuZCB0aGUgYmFzaWMgb3BlcmF0aW9uczoKIC0gcXVl cnkgd2hpY2ggcGF5bG9hZHMgZXhpc3QsCiAtIHF1ZXJ5IGZvciBzcGVjaWZpYyBwYXlsb2FkcywK IC0gY2hlY2sqMSwgYXBwbHkqMSwgcmVwbGFjZSoxLCBhbmQgdW5sb2FkIHBheWxvYWRzLgoKKjE6 IFdoaWNoIG9mIGNvdXJzZSBpbiB0aGlzIHBhdGNoIGFyZSBub3BzLgoKVGhlIGZ1bmN0aW9uYWxp dHkgaXMgZGlzYWJsZWQgb24gQVJNIHVudGlsIGFsbCBhcmNoCmNvbXBvbmVudHMgYXJlIGltcGxl bWVudGVkLgoKQWxzbyBieSBkZWZhdWx0IGl0IGlzIGRpc2FibGVkIHVudGlsIHRoZSBpbXBsZW1l bnRhdGlvbgppcyBpbiBwbGFjZS4KCldlIGFsc28gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MgdG8g c28gdGhhdCB0aGUgZmluZF9wYXlsb2FkCmZ1bmN0aW9uIGRvZXMgbm90IG5lZWQgdG8gaGF2ZSBh ICdsb2NrJyBhbmQgJ25vbi1sb2NrJyB2YXJpYW50LgoKQWNrZWQtYnk6IERhbmllbCBEZSBHcmFh ZiA8ZGdkZWdyYUB0eWNoby5uc2EuZ292PgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVr IFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3 YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgoKLS0tCkNjOiBEYW5pZWwgRGUgR3JhYWYg PGRnZGVncmFAdHljaG8ubnNhLmdvdj4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5j aXRyaXguY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAZXUu Y2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cgp2MjogUmViYXNl ZCBvbiBrZXloYW5kbGVyOiByZXdvcmsga2V5aGFuZGxlciBpbmZyYXN0cnVjdHVyZQp2MzogRml4 ZWQgWFNNLgogLSBSZW1vdmVkIFJFVkVSVEVEIHN0YXRlLgogICAgU3BsaXQgc3RhdHVzIGFuZCBl cnJvciBjb2RlLgogICAgQWRkIFJFUExBQ0UgYWN0aW9uLgogICAgU2VwYXJhdGUgcGF5bG9hZCBk YXRhIGZyb20gdGhlIHBheWxvYWQgc3RydWN0dXJlLgogICAgcy9YU1BMSUNFX0lEXy4uL1hTUExJ Q0VfTkFNRV8uLi8KIC0gQWRkIHhzcGxpY2UgYW5kIENPTkZJR19YU1BMSUNFIGJ1aWxkIHRvcHRp b24uCiAgICBGaXggY29kZSBwZXIgSmFuJ3MgcmV2aWV3LgogICAgVXBkYXRlIHRoZSBzeXNjdGwu aCAoY2hhbmdlIGJpdHMgdG8gZW51bSBsaWtlKQogLSBSZWJhc2Ugb24gS2NvbmZpZyBjaGFuZ2Vz LgogLSBBZGQgbWlzc2luZyBwYWQgY2hlY2tzLiBSZS1vcmRlciBrZXloYW5kbGVyLmggdG8gYnVp bGQgb24gQVJNLgogLSBSZWJhc2Ugb24gYnVpbGQ6IGhvb2sgdGhlIHNjaGVkdWxlcnMgaW50byBL Y29uZmlnCiAtIHMvaWQvbmFtZS87IHMvcGF5bG9hZF9saXN0X2xvY2svcGF5bG9hZF9sb2NrLwog LSBQdXQgI2lmZGVmIENPTkZJR19YU1BMSUNFIGluIGhlYWRlciBmaWxlIHBlciBEb3VnIHJldmll dy4KIC0gQW5kcmV3IHJldmlldzoKICAgIC0gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MsIGNoYW5n ZSBuYW1lIHRvIHhzcGxpY2Vfb3AsCiAgICAgIHNwcmlua2xlIG5ldy1saW5lcywgYWRkIGxvY2Fs IHZhcmlhYmxlIGJsb2NrLCBpbmNsdWRlCiAgICAgIHN0YXRlIGRpYWdyYW0sIHNxdWFzaCB0d28g Z290byBsYWJlbHMsIHVzZSB2emFsbG9jIGluc3RlYWQgb2YKICAgICAgYWxsb2NfeGVuaGVhcF9w YWdlcy4KICAgIC0gY2hhbmdlICdzdGF0ZScgZnJvbSBpbnQzMiB0byB1aW50MzJfdAogICAgLSBy ZW1vdmUgdGhlIGVyciBsYWJlbCBvdXQgb2YgeHNwbGljZV91cGxvYWQKICAgIC0gdXNlIHZvaWQq IGluc3RhZWQgb2YgdWludDhfdAogICAgLSBtb3ZlIGNvZGUgYXJvdW5kIHRvIG1ha2UgaXQgZWFz aWVyIHRvIHJlYWQuCiAgICAtIEFkZCB2bWFwLmggdG8gY29tcGlsZXIgdW5kZXIgQVJNLgogLSBB ZGQgbWlzc2luZyBDb3B5cmlnaHQgaW4gaGVhZGVyIGZpbGUKIC0gRHJvcHBlZCBMT0FERUQgc3Rh dGUsIG1ha2UgdGhlIHBheWxvYWQgZ28gaW4gQ0hFQ0tFRC4KdjQ6IE1hZGUgaXQgb25seSB3b3Jr IG9uIHg4NiBwZXIgSnVsaWVuJ3MgKEFSTSkgbWFpbnRhaW5lciByZXF1ZXN0Lgp2NTogRHJvcHBl ZCB0aGUgbG9hZC0+Y2hlY2sgc3RhdGUgZXhhbXBsZSBpbiBzeXNjdGwuaAogICAgTWFkZSB0aGUg LT5ucj0wIGNhbGwgd29yay4gUmVtb3ZlIHJjPTAgaW4gbG90cyBvZiBjYXNlcy4gVXBkYXRlCiAg ICBoZWFkZXIgZnJvbSBkZXNpZ24gZG9jLgp2NjogVXBkYXRlIHdoYXQgJ2lkeCcgbWVhbnMuIERv bid0IGRyb3AgbG9jayBpbiBmaW5kX3BheWxvYWQuIE1ha2UKICAgIGZpbmRfbmFtZSBjb3B5IGRh dGEuCi0tLQotLS0KIHRvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRl IHwgICAxICsKIHhlbi9jb21tb24vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDEyICsKIHhlbi9jb21tb24vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHhlbi9jb21tb24vc3lzY3RsLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsK IHhlbi9jb21tb24veHNwbGljZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAzICsrKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oICAgICAg ICAgICAgICAgICAgfCAxNjYgKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgg ICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKwogeGVuL3hzbS9mbGFzay9ob29rcy5jICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDYgKwogeGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3Zl Y3RvcnMgICAgICAgICAgfCAgIDIgKwogOSBmaWxlcyBjaGFuZ2VkLCA2MzMgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24veHNwbGljZS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgeGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAoKZGlmZiAtLWdpdCBhL3Rvb2xzL2ZsYXNr L3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlIGIvdG9vbHMvZmxhc2svcG9saWN5L3Bv bGljeS9tb2R1bGVzL3hlbi94ZW4udGUKaW5kZXggN2U2OWNlOS4uNjhlZjZkZSAxMDA2NDQKLS0t IGEvdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4udGUKKysrIGIvdG9v bHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4udGUKQEAgLTcyLDYgKzcyLDcg QEAgYWxsb3cgZG9tMF90IHhlbl90OnhlbjIgewogYWxsb3cgZG9tMF90IHhlbl90OnhlbjIgewog ICAgIHBtdV9jdHJsCiAgICAgZ2V0X3N5bWJvbAorICAgIHhzcGxpY2Vfb3AKIH07CiAKICMgQWxs b3cgZG9tMCB0byB1c2UgYWxsIFhFTlZFUl8gc3Vib3BzIGFuZCBWRVJTSU9OIHN1Ym9wcyB0aGF0 IGhhdmUgY2hlY2tzLgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1v bi9LY29uZmlnCmluZGV4IGFkOWY3YmYuLmZlYTMzZDMgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24v S2NvbmZpZworKysgYi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTE4OCw0ICsxODgsMTYgQEAgY29u ZmlnIFNDSEVEX0RFRkFVTFQKIAogZW5kbWVudQogCisjIEVuYWJsZS9EaXNhYmxlIHhzcGxpY2Ug c3VwcG9ydAorY29uZmlnIFhTUExJQ0UKKwlib29sICJ4U3BsaWNlIGxpdmUgcGF0Y2hpbmcgc3Vw cG9ydCIKKwlkZWZhdWx0IG4KKwlkZXBlbmRzIG9uIFg4NgorCS0tLWhlbHAtLS0KKwkgIEFsbG93 cyBhIHJ1bm5pbmcgWGVuIGh5cGVydmlzb3IgdG8gYmUgZHluYW1pY2FsbHkgcGF0Y2hlZCB1c2lu ZworCSAgYmluYXJ5IHBhdGNoZXMgd2l0aG91dCByZWJvb3RpbmcuIFRoaXMgaXMgcHJpbWFyaWx5 IHVzZWQgdG8gYmluYXJpbHkKKwkgIHBhdGNoIGluIHRoZSBmaWVsZCBhbiBoeXBlcnZpc29yIHdp dGggWFNBIGZpeGVzLgorCisJICBJZiB1bnN1cmUsIHNheSBZLgorCiBlbmRtZW51CmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCA3N2Rl MjdlLi45MTBhYzY5IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9j b21tb24vTWFrZWZpbGUKQEAgLTU3LDYgKzU3LDcgQEAgb2JqLXkgKz0gdnNwcmludGYubwogb2Jq LXkgKz0gd2FpdC5vCiBvYmotJChDT05GSUdfWEVOT1BST0YpICs9IHhlbm9wcm9mLm8KIG9iai15 ICs9IHhtYWxsb2NfdGxzZi5vCitvYmotJChDT05GSUdfWFNQTElDRSkgKz0geHNwbGljZS5vCiAK IG9iai1iaW4tJChDT05GSUdfWDg2KSArPSAkKGZvcmVhY2ggbixkZWNvbXByZXNzIGJ1bnppcDIg dW54eiB1bmx6bWEgdW5sem8gdW5sejQgZWFybHljcGlvLCQobikuaW5pdC5vKQogCmRpZmYgLS1n aXQgYS94ZW4vY29tbW9uL3N5c2N0bC5jIGIveGVuL2NvbW1vbi9zeXNjdGwuYwppbmRleCAyNTNi N2M4Li4wZmFjOTQwIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3N5c2N0bC5jCisrKyBiL3hlbi9j b21tb24vc3lzY3RsLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx4c20veHNtLmg+CiAj aW5jbHVkZSA8eGVuL3Btc3RhdC5oPgogI2luY2x1ZGUgPHhlbi9nY292Lmg+CisjaW5jbHVkZSA8 eGVuL3hzcGxpY2UuaD4KIAogbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4 ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogewpAQCAtNDYwLDYgKzQ2MSwxMiBAQCBsb25nIGRvX3N5 c2N0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9zeXNjdGxfdCkgdV9zeXNjdGwpCiAgICAg ICAgIHJldCA9IHRtZW1fY29udHJvbCgmb3AtPnUudG1lbV9vcCk7CiAgICAgICAgIGJyZWFrOwog CisgICAgY2FzZSBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3A6CisgICAgICAgIHJldCA9IHhzcGxpY2Vf b3AoJm9wLT51LnhzcGxpY2UpOworICAgICAgICBpZiAoIHJldCAhPSAtRU9QTk9UU1VQUCApCisg ICAgICAgICAgICBjb3B5YmFjayA9IDE7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoK ICAgICAgICAgcmV0ID0gYXJjaF9kb19zeXNjdGwob3AsIHVfc3lzY3RsKTsKICAgICAgICAgY29w eWJhY2sgPSAwOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4vY29tbW9u L3hzcGxpY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmY0YTdiCi0t LSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKQEAgLTAsMCArMSw0MDMgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2luY2x1ZGUgPHhlbi9lcnIuaD4KKyNp bmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIuaD4K KyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4 ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4vc21wLmg+Cisj aW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRl IDx4ZW4veHNwbGljZS5oPgorCisjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+CisjaW5jbHVkZSA8cHVi bGljL3N5c2N0bC5oPgorCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHBheWxvYWRfbG9jayk7Citz dGF0aWMgTElTVF9IRUFEKHBheWxvYWRfbGlzdCk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGF5 bG9hZF9jbnQ7CitzdGF0aWMgdW5zaWduZWQgaW50IHBheWxvYWRfdmVyc2lvbiA9IDE7CisKK3N0 cnVjdCBwYXlsb2FkIHsKKyAgICB1aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAgICAgICAgICAg LyogT25lIG9mIHRoZSBYU1BMSUNFX1NUQVRFXyouICovCisgICAgaW50MzJfdCByYzsgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIDAgb3IgLVhFTl9FWFguICovCisgICAgc3RydWN0IGxpc3Rf aGVhZCBsaXN0OyAgICAgICAgICAgICAgIC8qIExpbmtlZCB0byAncGF5bG9hZF9saXN0Jy4gKi8K KyAgICBjaGFyIG5hbWVbWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4g Ki8KK307CisKK3N0YXRpYyBpbnQgdmVyaWZ5X25hbWUoY29uc3QgeGVuX3hzcGxpY2VfbmFtZV90 ICpuYW1lLCBjaGFyICpuKQoreworICAgIGlmICggIW5hbWUtPnNpemUgfHwgbmFtZS0+c2l6ZSA+ IFhFTl9YU1BMSUNFX05BTUVfU0laRSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAg aWYgKCBuYW1lLT5wYWRbMF0gfHwgbmFtZS0+cGFkWzFdIHx8IG5hbWUtPnBhZFsyXSApCisgICAg ICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX29rYXkobmFtZS0+ bmFtZSwgbmFtZS0+c2l6ZSkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICgg X19jb3B5X2Zyb21fZ3Vlc3QobiwgbmFtZS0+bmFtZSwgbmFtZS0+c2l6ZSkgKQorICAgICAgICBy ZXR1cm4gLUVGQVVMVDsKKworICAgIGlmICggbltuYW1lLT5zaXplIC0gMV0gKQorICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZlcmlmeV9w YXlsb2FkKGNvbnN0IHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkLCBjaGFyICpu KQoreworICAgIGlmICggdmVyaWZ5X25hbWUoJnVwbG9hZC0+bmFtZSwgbikgKQorICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIXVwbG9hZC0+c2l6ZSApCisgICAgICAgIHJldHVy biAtRUlOVkFMOworCisgICAgaWYgKCB1cGxvYWQtPnNpemUgPiBNQigyKSApCisgICAgICAgIHJl dHVybiAtRUlOVkFMOworCisgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX29rYXkodXBsb2FkLT5wYXls b2FkLCB1cGxvYWQtPnNpemUpICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICByZXR1 cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwYXlsb2FkICpmaW5kX3BheWxvYWQoY29uc3QgY2hh ciAqbmFtZSkKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKmZvdW5kID0gTlVMTDsKKwor ICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CisgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQorICAgIHsKKyAgICAgICAg aWYgKCAhc3RyY21wKGRhdGEtPm5hbWUsIG5hbWUpICkKKyAgICAgICAgeworICAgICAgICAgICAg Zm91bmQgPSBkYXRhOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICByZXR1cm4gZm91bmQ7Cit9CisKKy8qIFdlIE1VU1QgYmUgaG9sZGluZyB0aGUgcGF5bG9hZF9s b2NrIHNwaW5sb2NrLiAqLworc3RhdGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2Fk ICpkYXRhKQoreworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7Cisg ICAgbGlzdF9kZWwoJmRhdGEtPmxpc3QpOworICAgIHBheWxvYWRfY250LS07CisgICAgcGF5bG9h ZF92ZXJzaW9uKys7CisgICAgeGZyZWUoZGF0YSk7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV91 cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQpCit7CisgICAgc3RydWN0 IHBheWxvYWQgKmRhdGEgPSBOVUxMLCAqZm91bmQ7CisgICAgY2hhciBuW1hFTl9YU1BMSUNFX05B TUVfU0laRV07CisgICAgaW50IHJjOworCisgICAgcmMgPSB2ZXJpZnlfcGF5bG9hZCh1cGxvYWQs IG4pOworICAgIGlmICggcmMgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBzcGluX2xvY2so JnBheWxvYWRfbG9jayk7CisKKyAgICBmb3VuZCA9IGZpbmRfcGF5bG9hZChuKTsKKyAgICBpZiAo IGZvdW5kICYmICFJU19FUlIoZm91bmQpIC8qIEZvdW5kLiAqLyApCisgICAgeworICAgICAgICBy YyA9IC1FRVhJU1Q7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICggSVNfRVJS KGZvdW5kKSApCisgICAgeworICAgICAgICByYyA9IFBUUl9FUlIoZm91bmQpOworICAgICAgICBn b3RvIG91dDsKKyAgICB9CisKKyAgICBkYXRhID0geHphbGxvYyhzdHJ1Y3QgcGF5bG9hZCk7Cisg ICAgaWYgKCAhZGF0YSApCisgICAgeworICAgICAgICByYyA9IC1FTk9NRU07CisgICAgICAgIGdv dG8gb3V0OworICAgIH0KKworICAgIHJjID0gMDsKKworICAgIG1lbWNweShkYXRhLT5uYW1lLCBu LCBzdHJsZW4obikpOworICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOwor ICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5saXN0KTsKKworICAgIGxpc3RfYWRkX3RhaWwoJmRh dGEtPmxpc3QsICZwYXlsb2FkX2xpc3QpOworICAgIHBheWxvYWRfY250Kys7CisgICAgcGF5bG9h ZF92ZXJzaW9uKys7CisKKyBvdXQ6CisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisK KyAgICBpZiAoIHJjICkKKyAgICAgICAgeGZyZWUoZGF0YSk7CisKKyAgICByZXR1cm4gcmM7Cit9 CisKK3N0YXRpYyBpbnQgeHNwbGljZV9nZXQoeGVuX3N5c2N0bF94c3BsaWNlX2dldF90ICpnZXQp Cit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgaW50IHJjOworICAgIGNoYXIgbltY RU5fWFNQTElDRV9OQU1FX1NJWkVdOworCisgICAgcmMgPSB2ZXJpZnlfbmFtZSgmZ2V0LT5uYW1l LCBuKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgc3Bpbl9sb2Nr KCZwYXlsb2FkX2xvY2spOworCisgICAgZGF0YSA9IGZpbmRfcGF5bG9hZChuKTsKKyAgICBpZiAo IElTX0VSUl9PUl9OVUxMKGRhdGEpICkKKyAgICB7CisgICAgICAgIHNwaW5fdW5sb2NrKCZwYXls b2FkX2xvY2spOworCisgICAgICAgIGlmICggIWRhdGEgKQorICAgICAgICAgICAgcmV0dXJuIC1F Tk9FTlQ7CisKKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZGF0YSk7CisgICAgfQorCisgICAgZ2V0 LT5zdGF0dXMuc3RhdGUgPSBkYXRhLT5zdGF0ZTsKKyAgICBnZXQtPnN0YXR1cy5yYyA9IGRhdGEt PnJjOworCisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAgICByZXR1cm4gMDsK K30KKworc3RhdGljIGludCB4c3BsaWNlX2xpc3QoeGVuX3N5c2N0bF94c3BsaWNlX2xpc3RfdCAq bGlzdCkKK3sKKyAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCBzdGF0dXM7CisgICAgc3RydWN0IHBh eWxvYWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGlkeCA9IDAsIGkgPSAwOworICAgIGludCBy YyA9IDA7CisKKyAgICBpZiAoIGxpc3QtPm5yID4gMTAyNCApCisgICAgICAgIHJldHVybiAtRTJC SUc7CisKKyAgICBpZiAoIGxpc3QtPnBhZCApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisg ICAgaWYgKCBsaXN0LT5uciAmJgorICAgICAgICAgKCFndWVzdF9oYW5kbGVfb2theShsaXN0LT5z dGF0dXMsIGxpc3QtPm5yKSB8fAorICAgICAgICAgICFndWVzdF9oYW5kbGVfb2theShsaXN0LT5u YW1lLCBYRU5fWFNQTElDRV9OQU1FX1NJWkUgKiBsaXN0LT5ucikgfHwKKyAgICAgICAgICAhZ3Vl c3RfaGFuZGxlX29rYXkobGlzdC0+bGVuLCBsaXN0LT5ucikpICkKKyAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisKKyAgICBzcGluX2xvY2soJnBheWxvYWRfbG9jayk7CisgICAgaWYgKCBsaXN0LT5p ZHggPj0gcGF5bG9hZF9jbnQgKQorICAgIHsKKyAgICAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRf bG9jayk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggbGlzdC0+ bnIgKQorICAgIHsKKyAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggZGF0YSwgJnBheWxvYWRf bGlzdCwgbGlzdCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGxlbjsKKworICAg ICAgICAgICAgaWYgKCBsaXN0LT5pZHggPiBpKysgKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl OworCisgICAgICAgICAgICBzdGF0dXMuc3RhdGUgPSBkYXRhLT5zdGF0ZTsKKyAgICAgICAgICAg IHN0YXR1cy5yYyA9IGRhdGEtPnJjOworICAgICAgICAgICAgbGVuID0gc3RybGVuKGRhdGEtPm5h bWUpICsgMTsKKworICAgICAgICAgICAgLyogTi5CLiAnaWR4JyAhPSAnaScuICovCisgICAgICAg ICAgICBpZiAoIF9fY29weV90b19ndWVzdF9vZmZzZXQobGlzdC0+bmFtZSwgaWR4ICogWEVOX1hT UExJQ0VfTkFNRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGEtPm5hbWUsIGxlbikgfHwKKyAgICAgICAgICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Rfb2Zm c2V0KGxpc3QtPmxlbiwgaWR4LCAmbGVuLCAxKSB8fAorICAgICAgICAgICAgICAgIF9fY29weV90 b19ndWVzdF9vZmZzZXQobGlzdC0+c3RhdHVzLCBpZHgsICZzdGF0dXMsIDEpICkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlkeCsrOworCisgICAgICAgICAgICBp ZiAoIChpZHggPj0gbGlzdC0+bnIpIHx8IGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQorICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGxpc3QtPm5yID0gcGF5 bG9hZF9jbnQgLSBpOyAvKiBSZW1haW5pbmcgYW1vdW50LiAqLworICAgIGxpc3QtPnZlcnNpb24g PSBwYXlsb2FkX3ZlcnNpb247CisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAg ICAvKiBBbmQgaG93IG1hbnkgd2UgaGF2ZSBwcm9jZXNzZWQuICovCisgICAgcmV0dXJuIHJjID8g OiBpZHg7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNl X2FjdGlvbl90ICphY3Rpb24pCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgY2hh ciBuW1hFTl9YU1BMSUNFX05BTUVfU0laRV07CisgICAgaW50IHJjOworCisgICAgcmMgPSB2ZXJp ZnlfbmFtZSgmYWN0aW9uLT5uYW1lLCBuKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJu IHJjOworCisgICAgc3Bpbl9sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgZGF0YSA9IGZpbmRf cGF5bG9hZChuKTsKKyAgICBpZiAoIElTX0VSUl9PUl9OVUxMKGRhdGEpICkKKyAgICB7CisgICAg ICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgICAgIGlmICggIWRhdGEgKQor ICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZGF0 YSk7CisgICAgfQorCisgICAgc3dpdGNoICggYWN0aW9uLT5jbWQgKQorICAgIHsKKyAgICBjYXNl IFhTUExJQ0VfQUNUSU9OX0NIRUNLOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJ Q0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVu dGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9D SEVDS0VEOworICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICB9CisgICAgICAgIGJy ZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9VTkxPQUQ6CisgICAgICAgIGlmICggZGF0 YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9DSEVDS0VEICkKKyAgICAgICAgeworICAgICAgICAg ICAgZnJlZV9wYXlsb2FkKGRhdGEpOworICAgICAgICAgICAgLyogTm8gdG91Y2hpbmcgJ2RhdGEn IGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgICAgIGRhdGEgPSBOVUxMOworICAgICAgICB9Cisg ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQ6CisgICAgICAg IGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9BUFBMSUVEICkKKyAgICAgICAgewor ICAgICAgICAgICAgLyogTm8gaW1wbGVtZW50YXRpb24geWV0LiAqLworICAgICAgICAgICAgZGF0 YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CisgICAgICAgICAgICBkYXRhLT5yYyA9 IDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9O X0FQUExZOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tF RCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8K KyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9BUFBMSUVEOworICAgICAg ICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz ZSBYU1BMSUNFX0FDVElPTl9SRVBMQUNFOgorICAgICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhT UExJQ0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxl bWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFU RV9DSEVDS0VEOworICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICB9CisgICAgICAg IGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAg ICAgYnJlYWs7CisgICAgfQorCisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAg ICByZXR1cm4gcmM7Cit9CisKK2ludCB4c3BsaWNlX29wKHhlbl9zeXNjdGxfeHNwbGljZV9vcF90 ICp4c3BsaWNlKQoreworICAgIGludCByYzsKKworICAgIGlmICggeHNwbGljZS0+cGFkICkKKyAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBzd2l0Y2ggKCB4c3BsaWNlLT5jbWQgKQorICAg IHsKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQ6CisgICAgICAgIHJjID0geHNw bGljZV91cGxvYWQoJnhzcGxpY2UtPnUudXBsb2FkKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj YXNlIFhFTl9TWVNDVExfWFNQTElDRV9HRVQ6CisgICAgICAgIHJjID0geHNwbGljZV9nZXQoJnhz cGxpY2UtPnUuZ2V0KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQ TElDRV9MSVNUOgorICAgICAgICByYyA9IHhzcGxpY2VfbGlzdCgmeHNwbGljZS0+dS5saXN0KTsK KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT046Cisg ICAgICAgIHJjID0geHNwbGljZV9hY3Rpb24oJnhzcGxpY2UtPnUuYWN0aW9uKTsKKyAgICAgICAg YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAg ICBicmVhazsKKyAgIH0KKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGNvbnN0IGNoYXIg KnN0YXRlMnN0cih1aW50MzJfdCBzdGF0ZSkKK3sKKyNkZWZpbmUgU1RBVEUoeCkgW1hTUExJQ0Vf U1RBVEVfIyN4XSA9ICN4CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWVzW10gPSB7 CisgICAgICAgICAgICBTVEFURShDSEVDS0VEKSwKKyAgICAgICAgICAgIFNUQVRFKEFQUExJRUQp LAorICAgIH07CisjdW5kZWYgU1RBVEUKKworICAgIGlmIChzdGF0ZSA+PSBBUlJBWV9TSVpFKG5h bWVzKSB8fCAhbmFtZXNbc3RhdGVdKQorICAgICAgICByZXR1cm4gInVua25vd24iOworCisgICAg cmV0dXJuIG5hbWVzW3N0YXRlXTsKK30KKworc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1 bnNpZ25lZCBjaGFyIGtleSkKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsKKworICAgIGlm ICggIXNwaW5fdHJ5bG9jaygmcGF5bG9hZF9sb2NrKSApCisgICAgeworICAgICAgICBwcmludGso IkxvY2sgaGVsZC4gVHJ5IGFnYWluLlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg ICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCisgICAg ICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9JXMoJWQpXG4iLCBkYXRhLT5uYW1lLAorICAgICAg ICAgICAgICAgc3RhdGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0YS0+c3RhdGUpOworCisgICAgc3Bp bl91bmxvY2soJnBheWxvYWRfbG9jayk7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IHhzcGxpY2Vf aW5pdCh2b2lkKQoreworICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ3gnLCB4c3BsaWNlX3ByaW50 YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKyAgICByZXR1cm4gMDsKK30KK19faW5p dGNhbGwoeHNwbGljZV9pbml0KTsKKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6 IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lz Y3RsLmgKaW5kZXggOTY2ODBlYi4uMTAxOTFjYyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaApAQCAtNzY2LDYg Kzc2NiwxNzAgQEAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCB7CiB0eXBlZGVmIHN0cnVjdCB4 ZW5fc3lzY3RsX3RtZW1fb3AgeGVuX3N5c2N0bF90bWVtX29wX3Q7CiBERUZJTkVfWEVOX0dVRVNU X0hBTkRMRSh4ZW5fc3lzY3RsX3RtZW1fb3BfdCk7CiAKKy8qCisgKiBYRU5fU1lTQ1RMX1hTUExJ Q0Vfb3AKKyAqCisgKiBSZWZlciB0byB0aGUgZG9jcy91bnN0YWJsZS9taXNjL3hzcGxpY2UubWFy a2Rvd24KKyAqIGZvciB0aGUgZGVzaWduIGRldGFpbHMgb2YgdGhpcyBoeXBlcmNhbGwuCisgKgor ICogVGhlcmUgYXJlIGZvdXIgc3ViLW9wczoKKyAqICBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FE ICgwKQorICogIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgKDEpCisgKiAgWEVOX1NZU0NUTF9YU1BM SUNFX0xJU1QgKDIpCisgKiAgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiAoMykKKyAqCisgKiBU aGUgbm9ybWFsIHNlcXVlbmNlIG9mIHN1Yi1vcHMgaXMgdG86CisgKiAgMSkgWEVOX1NZU0NUTF9Y U1BMSUNFX1VQTE9BRCB0byB1cGxvYWQgdGhlIHBheWxvYWQuIElmIGVycm9ycyBTVE9QLgorICog IDIpIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgdG8gY2hlY2sgdGhlIGAtPnJjYC4gSWYgLVhFTl9F QUdBSU4gc3Bpbi4KKyAqICAgICBJZiB6ZXJvIGdvIHRvIG5leHQgc3RlcC4KKyAqICAzKSBYRU5f U1lTQ1RMX1hTUExJQ0VfQUNUSU9OIHdpdGggWFNQTElDRV9BQ1RJT05fQVBQTFkgdG8gYXBwbHkg dGhlIHBhdGNoLgorICogIDQpIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgdG8gY2hlY2sgdGhlIGAt PnJjYC4gSWYgaW4gLVhFTl9FQUdBSU4gc3Bpbi4KKyAqICAgICBJZiB6ZXJvIGV4aXQgd2l0aCBz dWNjZXNzLgorICovCisKKy8qCisgKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBhbiBFTEYgcGF5bG9h ZC4gVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUKKyAqIHBheWxvYWQuIFNob3VsZCBiZSBodW1hbiBy ZWFkYWJsZS4KKyAqIFJlY29tbWVuZGVkIGxlbmd0aCBpcyB1cHRvIFhFTl9YU1BMSUNFX05BTUVf U0laRS4KKyAqIEluY2x1ZGVzIHRoZSBOVUwgdGVybWluYXRvci4KKyAqLworI2RlZmluZSBYRU5f WFNQTElDRV9OQU1FX1NJWkUgMTI4CitzdHJ1Y3QgeGVuX3hzcGxpY2VfbmFtZSB7CisgICAgWEVO X0dVRVNUX0hBTkRMRV82NChjaGFyKSBuYW1lOyAgICAgICAgIC8qIElOOiBwb2ludGVyIHRvIG5h bWUuICovCisgICAgdWludDE2X3Qgc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElO OiBzaXplIG9mIG5hbWUuIE1heSBiZSB1cHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhFTl9YU1BMSUNFX05BTUVfU0laRS4gKi8KKyAgICB1aW50MTZf dCBwYWRbM107ICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IE1VU1QgYmUgemVyby4gKi8K K307Cit0eXBlZGVmIHN0cnVjdCB4ZW5feHNwbGljZV9uYW1lIHhlbl94c3BsaWNlX25hbWVfdDsK K0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3BsaWNlX25hbWVfdCk7CisKKy8qCisgKiBV cGxvYWQgYSBwYXlsb2FkIHRvIHRoZSBoeXBlcnZpc29yLiBUaGUgcGF5bG9hZCBpcyB2ZXJpZmll ZAorICogYWdhaW5zdCBiYXNpYyBjaGVja3MgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHRo ZSBwcm9wZXIgcmV0dXJuIGNvZGUKKyAqIHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBwYXlsb2FkIGlz IG5vdCBhcHBsaWVkIGF0IHRoaXMgdGltZSAtIHRoYXQgaXMKKyAqIGNvbnRyb2xsZWQgYnkgWEVO X1NZU0NUTF9YU1BMSUNFX0FDVElPTi4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHplcm8g aWYgdGhlIHBheWxvYWQgd2FzIHN1Y2Nlc2Z1bGx5IHVwbG9hZGVkLgorICogT3RoZXJ3aXNlIGFu IEVYWCByZXR1cm4gdmFsdWUgaXMgcHJvdmlkZWQuIER1cGxpY2F0ZSBgbmFtZWAgYXJlIG5vdAor ICogc3VwcG9ydGVkLgorICoKKyAqIFRoZSBwYXlsb2FkIGF0IHRoaXMgcG9pbnQgaXMgdmVyaWZp ZWQgYWdhaW5zdCBiYXNpYyBjaGVja3MuCisgKgorICogVGhlIGBwYXlsb2FkYCBpcyB0aGUgRUxG IHBheWxvYWQgYXMgbWVudGlvbmVkIGluIHRoZSBgUGF5bG9hZCBmb3JtYXRgCisgKiBzZWN0aW9u IGluIHRoZSB4U3BsaWNlIGRlc2lnbiBkb2N1bWVudC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RM X1hTUExJQ0VfVVBMT0FEIDAKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkIHsKKyAg ICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgICAgLyogSU4sIG5hbWUgb2Yg dGhlIHBhdGNoLiAqLworICAgIHVpbnQ2NF90IHNpemU7ICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBJTiwgc2l6ZSBvZiB0aGUgRUxGIGZpbGUuICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82 NCh1aW50OCkgcGF5bG9hZDsgICAgIC8qIElOLCB0aGUgRUxGIGZpbGUuICovCit9OwordHlwZWRl ZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBs b2FkX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2Fk X3QpOworCisvKgorICogUmV0cmlldmUgYW4gc3RhdHVzIG9mIGFuIHNwZWNpZmljIHBheWxvYWQu CisgKgorICogVXBvbiBjb21wbGV0aW9uIHRoZSBgc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1c2Ag aXMgdXBkYXRlZC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHplcm8gb24gc3VjY2VzcyBh bmQgWEVOX0VYWCBvbiBmYWlsdXJlLiBUaGlzIG9wZXJhdGlvbgorICogaXMgc3luY2hyb25vdXMg YW5kIGRvZXMgbm90IHJlcXVpcmUgcHJlZW1wdGlvbi4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RM X1hTUExJQ0VfR0VUIDEKKworc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1cyB7CisjZGVmaW5lIFhT UExJQ0VfU1RBVEVfQ0hFQ0tFRCAgICAgIDEKKyNkZWZpbmUgWFNQTElDRV9TVEFURV9BUFBMSUVE ICAgICAgMgorICAgIHVpbnQzMl90IHN0YXRlOyAgICAgICAgICAgICAgICAvKiBPVVQ6IFhTUExJ Q0VfU1RBVEVfKi4gKi8KKyAgICBpbnQzMl90IHJjOyAgICAgICAgICAgICAgICAgICAgLyogT1VU OiAwIGlmIG5vIGVycm9yLCBvdGhlcndpc2UgLVhFTl9FWFguICovCit9OwordHlwZWRlZiBzdHJ1 Y3QgeGVuX3hzcGxpY2Vfc3RhdHVzIHhlbl94c3BsaWNlX3N0YXR1c190OworREVGSU5FX1hFTl9H VUVTVF9IQU5ETEUoeGVuX3hzcGxpY2Vfc3RhdHVzX3QpOworCitzdHJ1Y3QgeGVuX3N5c2N0bF94 c3BsaWNlX2dldCB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90IG5hbWU7ICAgICAgICAgICAgICAg IC8qIElOLCBuYW1lIG9mIHRoZSBwYXlsb2FkLiAqLworICAgIHhlbl94c3BsaWNlX3N0YXR1c190 IHN0YXR1czsgICAgICAgICAgICAvKiBJTi9PVVQsIHN0YXRlIG9mIGl0LiAqLworfTsKK3R5cGVk ZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgeGVuX3N5c2N0bF94c3BsaWNlX2dldF90 OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNlX2dldF90KTsKKwor LyoKKyAqIFJldHJpZXZlIGFuIGFycmF5IG9mIGFiYnJldmlhdGVkIHN0YXR1cyBhbmQgbmFtZXMg b2YgcGF5bG9hZHMgdGhhdCBhcmUKKyAqIGxvYWRlZCBpbiB0aGUgaHlwZXJ2aXNvci4KKyAqCisg KiBJZiB0aGUgaHlwZXJjYWxsIHJldHVybnMgYW4gcG9zaXRpdmUgbnVtYmVyLCBpdCBpcyB0aGUg bnVtYmVyICh1cCB0byBgbnJgKQorICogb2YgdGhlIHBheWxvYWRzIHJldHVybmVkLCBhbG9uZyB3 aXRoIGBucmAgdXBkYXRlZCB3aXRoIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nCisgKiBwYXlsb2Fk cywgYHZlcnNpb25gIHVwZGF0ZWQgKGl0IG1heSBiZSB0aGUgc2FtZSBhY3Jvc3MgaHlwZXJjYWxs cy4gSWYgaXQKKyAqIHZhcmllcyB0aGUgZGF0YSBpcyBzdGFsZSBhbmQgZnVydGhlciBjYWxscyBj b3VsZCBmYWlsKS4gVGhlIGBzdGF0dXNgLAorICogYG5hbWVgLCBhbmQgYGxlbmAnIGFyZSB1cGRh dGVkIGF0IHRoZWlyIGRlc2lnbmVkIGluZGV4IHZhbHVlIChgaWR4YCkgd2l0aAorICogdGhlIHJl dHVybmVkIHZhbHVlIG9mIGRhdGEuCisgKgorICogSWYgdGhlIGh5cGVyY2FsbCByZXR1cm5zIEUy QklHIHRoZSBgbnJgIGlzIHRvbyBiaWcgYW5kIHNob3VsZCBiZQorICogbG93ZXJlZC4gVGhlIHVw cGVyIGxpbWl0IG9mIGBucmAgaXMgbGVmdCB0byB0aGUgaW1wbGVtZW50aW9uLgorICoKKyAqIE5v dGUgdGhhdCBkdWUgdG8gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgaHlwZXJjYWxscyB0aGUg ZG9tYWluIG1pZ2h0IGhhdmUKKyAqIGFkZGVkIG9yIHJlbW92ZWQgdGhlIG51bWJlciBvZiBwYXls b2FkcyBtYWtpbmcgdGhpcyBpbmZvcm1hdGlvbiBzdGFsZS4gSXQgaXMKKyAqIHRoZSByZXNwb25z aWJpbGl0eSBvZiB0aGUgdG9vbHN0YWNrIHRvIHVzZSB0aGUgYHZlcnNpb25gIGZpZWxkIHRvIGNo ZWNrCisgKiBiZXR3ZWVuIGVhY2ggaW52b2NhdGlvbi4gaWYgdGhlIHZlcnNpb24gZGlmZmVycyBp dCBzaG91bGQgZGlzY2FyZCB0aGUgc3RhbGUKKyAqIGRhdGEgYW5kIHN0YXJ0IGZyb20gc2NyYXRj aC4gSXQgaXMgT0sgZm9yIHRoZSB0b29sc3RhY2sgdG8gdXNlIHRoZSBuZXcKKyAqIGB2ZXJzaW9u YCBmaWVsZC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCAyCitzdHJ1Y3Qg eGVuX3N5c2N0bF94c3BsaWNlX2xpc3QgeworICAgIHVpbnQzMl90IHZlcnNpb247ICAgICAgICAg ICAgICAgICAgICAgICAvKiBPVVQ6IEh5cGVydmlzb3Igc3RhbXBzIHZhbHVlLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB2YXJpZXMgYmV0d2VlbiBj YWxscywgd2UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqIGdldHRpbmcgc3RhbGUgZGF0YS4gKi8KKyAgICB1aW50MzJfdCBpZHg7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogSU46IEluZGV4IGludG8gaHlwZXJ2aXNvciBsaXN0LiAqLworICAg IHVpbnQzMl90IG5yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogSG93IG1hbnkg c3RhdHVzLCBuYW1lLCBhbmQgbGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNob3VsZCBmaWxsIG91dC4gQ2FuIGJlIHplcm8gdG8gZ2V0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBwYXlsb2Fk cyBhbmQgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT1VUOiBIb3cgbWFueSBwYXlsb2FkcyBsZWZ0LiAqLworICAgIHVpbnQzMl90IHBhZDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogTXVzdCBiZSB6ZXJvLiAqLworICAgIFhF Tl9HVUVTVF9IQU5ETEVfNjQoeGVuX3hzcGxpY2Vfc3RhdHVzX3QpIHN0YXR1czsgIC8qIE9VVC4g TXVzdCBoYXZlIGVub3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzcGFjZSBhbGxvY2F0ZSBmb3IgbnIgb2YgdGhlbS4gKi8KKyAgICBYRU5fR1VFU1Rf SEFORExFXzY0KGNoYXIpIG5hbWU7ICAgICAgICAgLyogT1VUOiBBcnJheSBvZiBuYW1lcy4gRWFj aCBtZW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TVVTVCBYRU5fWFNQTElDRV9OQU1FX1NJWkUgaW4gc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBoYXZlIG5yIG9mIHRoZW0uICovCisgICAg WEVOX0dVRVNUX0hBTkRMRV82NCh1aW50MzIpIGxlbjsgICAgICAgIC8qIE9VVDogQXJyYXkgb2Yg bGVuZ3RocyBvZiBuYW1lJ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE11c3QgaGF2ZSBuciBvZiB0aGVtLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhl bl9zeXNjdGxfeHNwbGljZV9saXN0IHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3Q7CitERUZJTkVf WEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90KTsKKworLyoKKyAqIFBl cmZvcm0gYW4gb3BlcmF0aW9uIG9uIHRoZSBwYXlsb2FkIHN0cnVjdHVyZSByZWZlcmVuY2VkIGJ5 IHRoZSBgbmFtZWAgZmllbGQuCisgKiBUaGUgb3BlcmF0aW9uIHJlcXVlc3QgaXMgYXN5bmNocm9u b3VzIGFuZCB0aGUgc3RhdHVzIHNob3VsZCBiZSByZXRyaWV2ZWQKKyAqIGJ5IHVzaW5nIGVpdGhl ciBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUIG9yIFhFTl9TWVNDVExfWFNQTElDRV9MSVNUIGh5cGVy Y2FsbC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OIDMKK3N0cnVjdCB4 ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uIHsKKyAgICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsg ICAgICAgICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLworI2RlZmluZSBYU1BM SUNFX0FDVElPTl9DSEVDSyAgICAgICAgMQorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9VTkxPQUQg ICAgICAgMgorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQgICAgICAgMworI2RlZmluZSBY U1BMSUNFX0FDVElPTl9BUFBMWSAgICAgICAgNAorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9SRVBM QUNFICAgICAgNQorICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBJTjogWFNQTElDRV9BQ1RJT05fKi4gKi8KKyAgICB1aW50MzJfdCB0aW1lb3V0OyAgICAgICAg ICAgICAgICAgICAgICAgLyogSU46IFplcm8gaWYgbm8gdGltZW91dC4gKi8KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT3IgdXBwZXIgYm91bmQgb2YgdGlt ZSAobXMpICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IGZvciBvcGVyYXRpb24gdG8gdGFrZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2VfYWN0aW9uIHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdDsKK0RFRklORV9YRU5f R1VFU1RfSEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCk7CisKK3N0cnVjdCB4ZW5f c3lzY3RsX3hzcGxpY2Vfb3AgeworICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBJTjogWEVOX1NZU0NUTF9YU1BMSUNFXyouICovCisgICAgdWludDMyX3QgcGFk OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBBbHdheXMgemVyby4gKi8KKyAgICB1 bmlvbiB7CisgICAgICAgIHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCB1cGxvYWQ7CisgICAg ICAgIHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QgbGlzdDsKKyAgICAgICAgeGVuX3N5c2N0bF94 c3BsaWNlX2dldF90IGdldDsKKyAgICAgICAgeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90IGFj dGlvbjsKKyAgICB9IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29w IHhlbl9zeXNjdGxfeHNwbGljZV9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5 c2N0bF94c3BsaWNlX29wX3QpOworCiBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgdWludDMyX3Qg Y21kOwogI2RlZmluZSBYRU5fU1lTQ1RMX3JlYWRjb25zb2xlICAgICAgICAgICAgICAgICAgICAx CkBAIC03OTEsNiArOTU1LDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogI2RlZmluZSBYRU5fU1lT Q1RMX3BjaXRvcG9pbmZvICAgICAgICAgICAgICAgICAgIDIyCiAjZGVmaW5lIFhFTl9TWVNDVExf cHNyX2NhdF9vcCAgICAgICAgICAgICAgICAgICAgMjMKICNkZWZpbmUgWEVOX1NZU0NUTF90bWVt X29wICAgICAgICAgICAgICAgICAgICAgICAyNAorI2RlZmluZSBYRU5fU1lTQ1RMX3hzcGxpY2Vf b3AgICAgICAgICAgICAgICAgICAgIDI1CiAgICAgdWludDMyX3QgaW50ZXJmYWNlX3ZlcnNpb247 IC8qIFhFTl9TWVNDVExfSU5URVJGQUNFX1ZFUlNJT04gKi8KICAgICB1bmlvbiB7CiAgICAgICAg IHN0cnVjdCB4ZW5fc3lzY3RsX3JlYWRjb25zb2xlICAgICAgIHJlYWRjb25zb2xlOwpAQCAtODE2 LDYgKzk4MSw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICAgICAgICAgc3RydWN0IHhlbl9zeXNj dGxfcHNyX2NtdF9vcCAgICAgICAgcHNyX2NtdF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNj dGxfcHNyX2NhdF9vcCAgICAgICAgcHNyX2NhdF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNj dGxfdG1lbV9vcCAgICAgICAgICAgdG1lbV9vcDsKKyAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxf eHNwbGljZV9vcCAgICAgICAgeHNwbGljZTsKICAgICAgICAgdWludDhfdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFkWzEyOF07CiAgICAgfSB1OwogfTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjODQ4NTEKLS0tIC9kZXYvbnVsbAorKysgYi94 ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmln aHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqCisgKi8KKworI2lmbmRlZiBfX1hFTl9YU1BMSUNFX0hfXworI2RlZmluZSBfX1hF Tl9YU1BMSUNFX0hfXworCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOworCisjaWZkZWYg Q09ORklHX1hTUExJQ0UKKworaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGlj ZV9vcCAqKTsKKworI2Vsc2UKKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPiAvKiBGb3IgLUVPUE5P VFNVUFAgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxf eHNwbGljZV9vcCAqb3ApCit7CisgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworfQorCisjZW5kaWYg LyogQ09ORklHX1hTUExJQ0UgKi8KKworI2VuZGlmIC8qIF9fWEVOX1hTUExJQ0VfSF9fICovCisK Ky8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJC U0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFi cy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9ob29r cy5jIGIveGVuL3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDFlYWVjNTguLjNlZjA0NDEgMTAwNjQ0 Ci0tLSBhL3hlbi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMK QEAgLTgwOCw2ICs4MDgsMTIgQEAgc3RhdGljIGludCBmbGFza19zeXNjdGwoaW50IGNtZCkKICAg ICBjYXNlIFhFTl9TWVNDVExfdG1lbV9vcDoKICAgICAgICAgcmV0dXJuIGRvbWFpbl9oYXNfeGVu KGN1cnJlbnQtPmRvbWFpbiwgWEVOX19UTUVNX0NPTlRST0wpOwogCisjaWZkZWYgQ09ORklHX1hT UExJQ0UKKyAgICBjYXNlIFhFTl9TWVNDVExfeHNwbGljZV9vcDoKKyAgICAgICAgcmV0dXJuIGF2 Y19jdXJyZW50X2hhc19wZXJtKFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19YRU4yLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOMl9fWFNQTElDRV9PUCwgTlVMTCk7Cisj ZW5kaWYKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHByaW50aygiZmxhc2tfc3lzY3RsOiBVbmtu b3duIG9wICVkXG4iLCBjbWQpOwogICAgICAgICByZXR1cm4gLUVQRVJNOwpkaWZmIC0tZ2l0IGEv eGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgYi94ZW4veHNtL2ZsYXNrL3BvbGlj eS9hY2Nlc3NfdmVjdG9ycwppbmRleCA1NjYwMGJiLi4xYzU5YjU4IDEwMDY0NAotLS0gYS94ZW4v eHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycworKysgYi94ZW4veHNtL2ZsYXNrL3BvbGlj eS9hY2Nlc3NfdmVjdG9ycwpAQCAtOTMsNiArOTMsOCBAQCBjbGFzcyB4ZW4yCiAgICAgcG11X2N0 cmwKICMgUE1VIHVzZSAoZG9tYWlucywgaW5jbHVkaW5nIHVucHJpdmlsZWdlZCBvbmVzLCB3aWxs IGJlIHVzaW5nIHRoaXMgb3BlcmF0aW9uKQogICAgIHBtdV91c2UKKyMgWEVOX1NZU0NUTF94c3Bs aWNlX29wCisgICAgeHNwbGljZV9vcAogfQogCiAjIENsYXNzZXMgZG9tYWluIGFuZCBkb21haW4y IGNvbnNpc3Qgb2Ygb3BlcmF0aW9ucyB0aGF0IGEgZG9tYWluIHBlcmZvcm1zIG9uCi0tIAoyLjUu MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==