From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Artur Frenszek-Iwicki To: git-commits@fedoraproject.org Subject: [rpms/cvise] rawhide: Update to v2.12.0, fix FTBFS Date: Wed, 05 Aug 2026 19:28:15 GMT Message-ID: <178595809533.1.10373673727319849883.rpms-cvise-ab282320661c@fedoraproject.org> List-ID: X-Git-Repo: rpms/cvise X-Git-Branch: rawhide X-Git-Rev: ab282320661cff1a0f29f9667ff239550257e359 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvY3Zpc2UKQnJhbmNo IDogcmF3aGlkZQpDb21taXQgOiBhYjI4MjMyMDY2MWNmZjFhMGYyOWY5NjY3ZmYyMzk1NTAyNTdl MzU5CkF1dGhvciA6IEFydHVyIEZyZW5zemVrLUl3aWNraSA8ZmVkb3JhQHN2Z2FtZXMucGw+CkRh dGUgICA6IDIwMjYtMDctMTdUMTU6NDI6MDkrMDI6MDAKU3RhdHMgIDogKzE1NjcvLTQgaW4gNCBm aWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvY3Zpc2Uv Yy9hYjI4MjMyMDY2MWNmZjFhMGYyOWY5NjY3ZmYyMzk1NTAyNTdlMzU5P2JyYW5jaD1yYXdoaWRl CgpMb2c6ClVwZGF0ZSB0byB2Mi4xMi4wLCBmaXggRlRCRlMKCi0tLQpkaWZmIC0tZ2l0IGEvLmdp dGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggYTYyMDc0Ny4uODg5MDIxOSAxMDA2NDQKLS0tIGEv LmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xMSwzICsxMSw0IEBACiAvdjIuMTAuMC50 YXIuZ3oKIC92Mi4xMC4wLjEudGFyLmd6CiAvdjIuMTEuMC50YXIuZ3oKKy92Mi4xMi4wLnRhci5n egoKZGlmZiAtLWdpdCBhL2N2aXNlLnNwZWMgYi9jdmlzZS5zcGVjCmluZGV4IDkwMTU1NTQuLmIz ZDRlYzggMTAwNjQ0Ci0tLSBhL2N2aXNlLnNwZWMKKysrIGIvY3Zpc2Uuc3BlYwpAQCAtMSwxMiAr MSwyMiBAQAogTmFtZTogY3Zpc2UKLVZlcnNpb246IDIuMTEuMAotUmVsZWFzZTogNiV7P2Rpc3R9 CitWZXJzaW9uOiAyLjEyLjAKK1JlbGVhc2U6IDElez9kaXN0fQogU3VtbWFyeTogU3VwZXItcGFy YWxsZWwgUHl0aG9uIHBvcnQgb2YgdGhlIEMtUmVkdWNlCiAjIEF1dG9tYXRpY2FsbHkgY29udmVy dGVkIGZyb20gb2xkIGZvcm1hdDogQlNEIC0gcmV2aWV3IGlzIGhpZ2hseSByZWNvbW1lbmRlZC4K IExpY2Vuc2U6IExpY2Vuc2VSZWYtQ2FsbGF3YXktQlNECiBVUkw6IGh0dHBzOi8vZ2l0aHViLmNv bS9tYXJ4aW4vY3Zpc2UKIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL21hcnhpbi9jdmlzZS9h cmNoaXZlL3Yle3ZlcnNpb259LnRhci5negogCisjIEZpeCBjb21wYXRpYmlsaXR5IHdpdGggTExW TTIyLgorIworIyBCYWNrcG9ydCBvZiB1cHN0cmVhbSBjb21taXRzOgorIyBodHRwczovL2dpdGh1 Yi5jb20vbWFyeGluL2N2aXNlL2NvbW1pdC81OWU5MDU4YzQzYjEyYjgwMjg5M2JkZTY2ODExM2M4 YjNiMzUyNWI3CisjIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ4aW4vY3Zpc2UvY29tbWl0LzY4MjYy ZjdkNmRlNTg0YjY0NzQ4MDE4MjdjYjdkZmM2ODAxMWRlMjUKKyMgaHR0cHM6Ly9naXRodWIuY29t L21hcnhpbi9jdmlzZS9jb21taXQvZmExYmU5NTIzZDU2OWFkZmUyMDdjODVhMWU0NGYwNzQxNzJi YzMwNQorIyBodHRwczovL2dpdGh1Yi5jb20vbWFyeGluL2N2aXNlL2NvbW1pdC9iMTdiYmFjZGIy NzliYWJkODdkYzllZjI0NzU2ZjMwMDM3NDY3MTdjCisjIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ4 aW4vY3Zpc2UvY29tbWl0L2M3Zjk2NDIzNDBlYjYxYzA5YTA1Yzk2NDk4ZmQyMWM5YjcyOTM3NzAK K1BhdGNoMTogbGx2bTIyLnBhdGNoCisKIEJ1aWxkUmVxdWlyZXM6IGFzdHlsZQogQnVpbGRSZXF1 aXJlczogY21ha2UKIEJ1aWxkUmVxdWlyZXM6IGZsZXgKQEAgLTQzLDcgKzUzLDcgQEAgaGFzIHRo ZSBzYW1lIHByb3BlcnR5LiBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IHBlb3BsZSB3aG8gZGlz Y292ZXIKIGFuZCByZXBvcnQgYnVncyBpbiBjb21waWxlcnMgYW5kIG90aGVyIHRvb2xzIHRoYXQg cHJvY2VzcyBDL0MrKyBvciBPcGVuQ0wgY29kZS4KIAogJXByZXAKLSVzZXR1cCAtcQorJWF1dG9z ZXR1cCAtcDEKIAogJWJ1aWxkCiBleHBvcnQgQ1hYRkxBR1M9IiRSUE1fT1BUX0ZMQUdTIC1Xbm8t ZXJyb3I9cmVzdHJpY3QiCkBAIC02OCw2ICs3OCw5IEBAIGV4cG9ydCBDWFhGTEFHUz0iJFJQTV9P UFRfRkxBR1MgLVduby1lcnJvcj1yZXN0cmljdCIKICV7X2RhdGFkaXJ9L2N2aXNlCiAKICVjaGFu Z2Vsb2cKKyogRnJpIEp1bCAxNyAyMDI2IEFydHVyIEZyZW5zemVrLUl3aWNraSA8ZmVkb3JhQHN2 Z2FtZXMucGw+IC0gMi4xMi4wLTEKKy0gVXBkYXRlIHRvIHYyLjEyLjAgKHJoYnojMjEyMzcwMyks IGZpeCBGVEJGUyAocmhieiMyNDMzOTcyKQorCiAqIFdlZCBKdWwgMTUgMjAyNiBGZWRvcmEgUmVs ZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDIuMTEuMC02CiAt IFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDVfTWFz c19SZWJ1aWxkCiAKCmRpZmYgLS1naXQgYS9sbHZtMjIucGF0Y2ggYi9sbHZtMjIucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q1MjBkZAotLS0gL2Rldi9udWxsCisr KyBiL2xsdm0yMi5wYXRjaApAQCAtMCwwICsxLDE1NDkgQEAKK2RpZmYgLXJOVTQgY3Zpc2UtMi4x Mi4wLS1vcmlnL2NsYW5nX2RlbHRhL0NNYWtlTGlzdHMudHh0IGN2aXNlLTIuMTIuMC9jbGFuZ19k ZWx0YS9DTWFrZUxpc3RzLnR4dAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9D TWFrZUxpc3RzLnR4dAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAwMDAwMCArMDIwMAorKysrIGN2 aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9DTWFrZUxpc3RzLnR4dAkyMDI2LTA3LTE3IDE1OjA1OjM4 LjIwMjQyNTQxOCArMDIwMAorQEAgLTM0OCw4ICszNDgsMTAgQEAKKyAgICIvdGVzdHMvcmVuYW1l LXBhcmFtL2ludmFsaWQub3V0cHV0IgorICAgIi90ZXN0cy9yZW5hbWUtcGFyYW0vc3R1Y2suaWki CisgICAiL3Rlc3RzL3JlbmFtZS12YXIvcmVuYW1lLXZhci5jIgorICAgIi90ZXN0cy9yZW5hbWUt dmFyL3JlbmFtZS12YXIub3V0cHV0IgorKyAgIi90ZXN0cy9yZXBsYWNlLWRlcGVuZGVudC10eXBl ZGVmL3Rlc3QyLmNjIgorKyAgIi90ZXN0cy9yZXBsYWNlLWRlcGVuZGVudC10eXBlZGVmL3Rlc3Qy Lm91dHB1dCIKKyAgICIvdGVzdHMvcmVwbGFjZS1kZXJpdmVkLWNsYXNzL3JlcGxhY2UtZGVyaXZl ZDEuY3BwIgorICAgIi90ZXN0cy9yZXBsYWNlLWRlcml2ZWQtY2xhc3MvcmVwbGFjZS1kZXJpdmVk MS5vdXRwdXQiCisgICAiL3Rlc3RzL3JlcGxhY2UtZGVyaXZlZC1jbGFzcy9yZXBsYWNlLWRlcml2 ZWQyLmNwcCIKKyAgICIvdGVzdHMvcmVwbGFjZS1kZXJpdmVkLWNsYXNzL3JlcGxhY2UtZGVyaXZl ZDIub3V0cHV0IgorZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvQ29t bW9uUGFyYW1ldGVyUmV3cml0ZVZpc2l0b3IuaCBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvQ29t bW9uUGFyYW1ldGVyUmV3cml0ZVZpc2l0b3IuaAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFu Z19kZWx0YS9Db21tb25QYXJhbWV0ZXJSZXdyaXRlVmlzaXRvci5oCTIwMjUtMDktMjMgMjI6NTE6 MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL0NvbW1vblBh cmFtZXRlclJld3JpdGVWaXNpdG9yLmgJMjAyNi0wNy0xNyAxMzo1Mzo0NS4yODU3ODAwOTcgKzAy MDAKK0BAIC0xMTAsMTEgKzExMCwxNyBAQAorICAgICBUcmFuc0Fzc2VydCgoKEROYW1lLmdldE5h bWVLaW5kKCkgPT0gY2xhbmc6OkRlY2xhcmF0aW9uTmFtZTo6SWRlbnRpZmllcikgfHwKKyAgICAg ICAgICAgICAgICAgIChETmFtZS5nZXROYW1lS2luZCgpID09IAorICAgICAgICAgICAgICAgICAg ICAgY2xhbmc6OkRlY2xhcmF0aW9uTmFtZTo6Q1hYT3BlcmF0b3JOYW1lKSkgJiYKKyAgICAgICAg ICAgICAgICAgIk5vdCBhbiBpbmRlbnRpZmllciEiKTsKKysjaWYgTExWTV9WRVJTSU9OX01BSk9S IDwgMjIKKyAgICAgaWYgKGNvbnN0IGNsYW5nOjpOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMgPSBV RS0+Z2V0UXVhbGlmaWVyKCkpIHsKKyAgICAgICBpZiAoY29uc3QgY2xhbmc6OkRlY2xDb250ZXh0 ICpDdHggPSAKKyAgICAgICAgICAgQ29uc3VtZXJJbnN0YW5jZS0+Z2V0RGVjbENvbnRleHRGcm9t U3BlY2lmaWVyKE5OUykpIHsKKysjZWxzZQorKyAgICBpZiAoY29uc3QgY2xhbmc6Ok5lc3RlZE5h bWVTcGVjaWZpZXIgTk5TID0gVUUtPmdldFF1YWxpZmllcigpKSB7CisrICAgICAgaWYgKGNvbnN0 IGNsYW5nOjpEZWNsQ29udGV4dCAqQ3R4ID0KKysgICAgICAgICAgQ29uc3VtZXJJbnN0YW5jZS0+ Z2V0RGVjbENvbnRleHRGcm9tU3BlY2lmaWVyKCZOTlMpKSB7CisrI2VuZGlmCisgICAgICAgICBE ZWNsQ29udGV4dFNldCBWaXNpdGVkQ3R4czsgCisgICAgICAgICBDYWxsZWVEZWNsID0gCisgICAg ICAgICAgIENvbnN1bWVySW5zdGFuY2UtPmxvb2t1cEZ1bmN0aW9uRGVjbChETmFtZSwgQ3R4LCBW aXNpdGVkQ3R4cyk7CisgICAgICAgfQorZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcvY2xh bmdfZGVsdGEvQ29tbW9uUmVuYW1lQ2xhc3NSZXdyaXRlVmlzaXRvci5oIGN2aXNlLTIuMTIuMC9j bGFuZ19kZWx0YS9Db21tb25SZW5hbWVDbGFzc1Jld3JpdGVWaXNpdG9yLmgKKy0tLSBjdmlzZS0y LjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvQ29tbW9uUmVuYW1lQ2xhc3NSZXdyaXRlVmlzaXRvci5o CTIwMjUtMDktMjMgMjI6NTE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zpc2UtMi4xMi4wL2Ns YW5nX2RlbHRhL0NvbW1vblJlbmFtZUNsYXNzUmV3cml0ZVZpc2l0b3IuaAkyMDI2LTA3LTE3IDE0 OjE0OjQyLjA3OTU3NTk5NiArMDIwMAorQEAgLTUzLDEwICs1MywxMyBAQAorICAgICAgICAgIFRl bXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlTG9jIFRTUExvYyk7CisgCisgICBib29sIFRyYXZlcnNl VGVtcGxhdGVBcmd1bWVudExvYyhjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TG9jICZBcmdMb2MpOwor IAorKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgYm9vbCBWaXNpdERlcGVuZGVudFRl bXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlTG9jKAorICAgICAgICAgIERlcGVuZGVudFRlbXBsYXRl U3BlY2lhbGl6YXRpb25UeXBlTG9jIERUU0xvYyk7CisrI2VuZGlmCisrCisgI2lmIExMVk1fVkVS U0lPTl9NQUpPUiA8IDE5CisgICBib29sIFZpc2l0Q2xhc3NUZW1wbGF0ZVBhcnRpYWxTcGVjaWFs aXphdGlvbkRlY2woCisgICAgICAgICAgQ2xhc3NUZW1wbGF0ZVBhcnRpYWxTcGVjaWFsaXphdGlv bkRlY2wgKkQpOworICNlbmRpZgorQEAgLTI5NSw4ICsyOTgsOSBAQAorIGJvb2wgQ29tbW9uUmVu YW1lQ2xhc3NSZXdyaXRlVmlzaXRvcjxUPjo6VmlzaXRJbmplY3RlZENsYXNzTmFtZVR5cGVMb2Mo CisgICAgICAgIEluamVjdGVkQ2xhc3NOYW1lVHlwZUxvYyBUeUxvYykKKyB7CisgICBjb25zdCBD WFhSZWNvcmREZWNsICpDWFhSRCA9IFR5TG9jLmdldERlY2woKTsKKysKKyAgIFRyYW5zQXNzZXJ0 KENYWFJEICYmICJJbnZhbGlkIENYWFJlY29yZERlY2whIik7CisgCisgICBzdGQ6OnN0cmluZyBO YW1lOworICAgaWYgKGdldE5ld05hbWUoQ1hYUkQsIE5hbWUpKSB7CitAQCAtMzM2LDggKzM0MCw5 IEBACisgICBpZiAoVHktPmlzVW5pb25UeXBlKCkpCisgICAgIHJldHVybiB0cnVlOworIAorICAg Y29uc3QgQ1hYUmVjb3JkRGVjbCAqUkQgPSBkeW5fY2FzdDxDWFhSZWNvcmREZWNsPihSVExvYy5n ZXREZWNsKCkpOworKworICAgaWYgKCFSRCkKKyAgICAgcmV0dXJuIHRydWU7CisgCisgICBzdGQ6 OnN0cmluZyBOYW1lOworQEAgLTM1OCw4ICszNjMsOSBAQAorICAgUmV3cml0ZUhlbHBlci0+cmVw bGFjZVJlY29yZFR5cGUoUlRMb2MsIE5hbWUpOworICAgcmV0dXJuIHRydWU7CisgfQorIAorKyNp ZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29t bW9uUmVuYW1lQ2xhc3NSZXdyaXRlVmlzaXRvcjxUPjo6CisgICBWaXNpdERlcGVuZGVudFRlbXBs YXRlU3BlY2lhbGl6YXRpb25UeXBlTG9jKAorICAgICBEZXBlbmRlbnRUZW1wbGF0ZVNwZWNpYWxp emF0aW9uVHlwZUxvYyBEVFNMb2MpCisgeworQEAgLTM2Nyw5ICszNzMsMTQgQEAKKyAgIGNvbnN0 IERlcGVuZGVudFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlICpEVFNUID0gCisgICAgIGR5bl9j YXN0PERlcGVuZGVudFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlPihUeSk7CisgICBUcmFuc0Fz c2VydChEVFNUICYmICJCYWQgRGVwZW5kZW50VGVtcGxhdGVTcGVjaWFsaXphdGlvblR5cGUhIik7 CisgCistICBjb25zdCBJZGVudGlmaWVySW5mbyAqSWRJbmZvID0gRFRTVC0+Z2V0SWRlbnRpZmll cigpOworKyAgY29uc3QgSWRlbnRpZmllckluZm8gKklkSW5mbyA9CisrI2lmIExMVk1fVkVSU0lP Tl9NQUpPUiA+IDIwCisrICAgIERUU1QtPmdldERlcGVuZGVudFRlbXBsYXRlTmFtZSgpLmdldE5h bWUoKS5nZXRJZGVudGlmaWVyKCk7CisrI2Vsc2UKKysgICAgRFRTVC0+Z2V0SWRlbnRpZmllcigp OworKyNlbmRpZgorICAgc3RkOjpzdHJpbmcgSWROYW1lID0gSWRJbmZvLT5nZXROYW1lKCkuc3Ry KCk7CisgICBzdGQ6OnN0cmluZyBOYW1lOworICAgaWYgKGdldE5ld05hbWVCeU5hbWUoSWROYW1l LCBOYW1lKSkgeworICAgICBTb3VyY2VMb2NhdGlvbiBMb2NTdGFydCA9IERUU0xvYy5nZXRUZW1w bGF0ZU5hbWVMb2MoKTsKK0BAIC0zNzcsMTUgKzM4OCwyOCBAQAorICAgfQorIAorICAgcmV0dXJu IHRydWU7CisgfQorKyNlbmRpZgorIAorIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisgdm9pZCBDb21t b25SZW5hbWVDbGFzc1Jld3JpdGVWaXNpdG9yPFQ+OjpyZW5hbWVUZW1wbGF0ZU5hbWUoCisgICAg ICAgIFRlbXBsYXRlTmFtZSBUbXBsTmFtZSwgU291cmNlTG9jYXRpb24gTG9jU3RhcnQpCisgewor KyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgaWYgKFRtcGxOYW1lLmdldEtpbmQoKSA9 PSBUZW1wbGF0ZU5hbWU6OkRlcGVuZGVudFRlbXBsYXRlKQorICAgICByZXR1cm47CisrI2Vsc2UK KysgIGlmIChUbXBsTmFtZS5nZXRLaW5kKCkgPT0gVGVtcGxhdGVOYW1lOjpEZXBlbmRlbnRUZW1w bGF0ZSkgeworKyAgICBEZXBlbmRlbnRUZW1wbGF0ZU5hbWUqIERUTiA9IFRtcGxOYW1lLmdldEFz RGVwZW5kZW50VGVtcGxhdGVOYW1lKCk7CisrICAgIGNvbnN0IElkZW50aWZpZXJJbmZvICpJZElu Zm8gPSBEVE4tPmdldE5hbWUoKS5nZXRJZGVudGlmaWVyKCk7CisrICAgIHN0ZDo6c3RyaW5nIElk TmFtZSA9IElkSW5mby0+Z2V0TmFtZSgpLnN0cigpOworKyAgICBzdGQ6OnN0cmluZyBOYW1lOwor KyAgICBpZiAoZ2V0TmV3TmFtZUJ5TmFtZShJZE5hbWUsIE5hbWUpKQorKyAgICAgIFRoZVJld3Jp dGVyLT5SZXBsYWNlVGV4dChMb2NTdGFydCwgSWROYW1lLnNpemUoKSwgTmFtZSk7CisrICAgIHJl dHVybjsKKysgIH0KKysjZW5kaWYKKyAgIGNvbnN0IFRlbXBsYXRlRGVjbCAqVG1wbEQgPSBUbXBs TmFtZS5nZXRBc1RlbXBsYXRlRGVjbCgpOworICAgVHJhbnNBc3NlcnQoVG1wbEQgJiYgIkludmFs aWQgVGVtcGxhdGVEZWNsISIpOworICAgTmFtZWREZWNsICpORCA9IFRtcGxELT5nZXRUZW1wbGF0 ZWREZWNsKCk7CisgICAvLyBpbiBzb21lIGNhc2VzLCBORCBjb3VsZCBiZSBOVUxMLCBlLmcuLCB0 aGUgCitkaWZmIC1yTlU0IGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9FbXB0eVN0cnVj dFRvSW50LmNwcCBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvRW1wdHlTdHJ1Y3RUb0ludC5jcHAK Ky0tLSBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvRW1wdHlTdHJ1Y3RUb0ludC5jcHAJ MjAyNS0wOS0yMyAyMjo1MToyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjdmlzZS0yLjEyLjAvY2xh bmdfZGVsdGEvRW1wdHlTdHJ1Y3RUb0ludC5jcHAJMjAyNi0wNy0xNyAxNDowMDozMy41NjU0ODM1 OTkgKzAyMDAKK0BAIC02Myw5ICs2MywxMSBAQAorICAgeyB9CisgCisgICBib29sIFZpc2l0UmVj b3JkVHlwZUxvYyhSZWNvcmRUeXBlTG9jIFJUTG9jKTsKKyAKKysjaWYgTExWTV9WRVJTSU9OX01B Sk9SIDwgMjIKKyAgIGJvb2wgVmlzaXRFbGFib3JhdGVkVHlwZUxvYyhFbGFib3JhdGVkVHlwZUxv YyBMb2MpOworKyNlbmRpZgorIAorICAgYm9vbCBWaXNpdFJlY29yZERlY2woUmVjb3JkRGVjbCAq UkQpOworIAorICAgYm9vbCBWaXNpdFZhckRlY2woVmFyRGVjbCAqVkQpOworQEAgLTExMSwxMCAr MTEzLDM4IEBACisgYm9vbCBFbXB0eVN0cnVjdFRvSW50UmV3cml0ZVZpc2l0b3I6OlZpc2l0UmVj b3JkVHlwZUxvYyhSZWNvcmRUeXBlTG9jIFJUTG9jKQorIHsKKyAgIGNvbnN0IFJlY29yZERlY2wg KlJEID0gUlRMb2MuZ2V0RGVjbCgpOworIAorKworICAgaWYgKFJELT5nZXRDYW5vbmljYWxEZWNs KCkgPT0gQ29uc3VtZXJJbnN0YW5jZS0+VGhlUmVjb3JkRGVjbCkgeworICAgICBTb3VyY2VMb2Nh dGlvbiBMb2NTdGFydCA9IFJUTG9jLmdldEJlZ2luTG9jKCk7CisrI2lmIExMVk1fVkVSU0lPTl9N QUpPUiA+PSAyMgorKyAgICAvLyBDaGVjayB0aGlzIEVsYWJvcmF0ZWRUeXBlTG9jIGhhc24ndCBi ZWVuIHJlbW92ZWQgYWxvbmcgd2l0aCB0aGUgUkQKKysgICAgaWYgKCFDb25zdW1lckluc3RhbmNl LT5pc1NvdXJjZVJhbmdlV2l0aGluUmVjb3JkRGVjbCgKKysgICAgICAgICAgUlRMb2MuZ2V0U291 cmNlUmFuZ2UoKSwgUkQpKSB7CisrICAgICAgaWYgKFJUTG9jLmdldEJlZ2luTG9jKCkgIT0gUlRM b2MuZ2V0Tm9uRWxhYm9yYXRlZEJlZ2luTG9jKCkpIHsKKysgICAgICAgIFNvdXJjZUxvY2F0aW9u IEtleXdvcmRFbmRMb2MgPSBSVExvYy5nZXROb25FbGFib3JhdGVkQmVnaW5Mb2MoKS5nZXRMb2NX aXRoT2Zmc2V0KC0xKTsKKysgICAgICAgIENvbnN1bWVySW5zdGFuY2UtPlRoZVJld3JpdGVyLlJl bW92ZVRleHQoU291cmNlUmFuZ2UoUlRMb2MuZ2V0QmVnaW5Mb2MoKSwgS2V5d29yZEVuZExvYykp OworKyAgICAgIH0gZWxzZSB7CisrICAgICAgICAvLyBJdCdzIHBvc3NpYmxlLCBlLmcuLAorKyAg ICAgICAgLy8gc3RydWN0IFMxIHsKKysgICAgICAgIC8vICAgc3RydWN0IHsgfSBTOworKyAgICAg ICAgLy8gfTsKKysgICAgICAgIC8vIENsYW5nIHdpbGwgdHJhbnNsYXRlIHN0cnVjdCB7IH0gUyB0 bworKyAgICAgICAgLy8gc3RydWN0IHsKKysgICAgICAgIC8vIH07CisrICAgICAgICAvLyAgc3Ry dWN0IDxhbm9ueW1vdXMgc3RydWN0IC4uLj4gUzsKKysgICAgICAgIC8vIHRoZSBsYXN0IGRlY2xh cmF0aW9uIGlzIGluamVjdGVkIGJ5IGNsYW5nLgorKyAgICAgICAgLy8gV2UgbmVlZCB0byBvbWl0 IGl0LgorKyAgICAgICAgU291cmNlTG9jYXRpb24gS2V5d29yZExvYyA9IFJUTG9jLmdldEVsYWJv cmF0ZWRLZXl3b3JkTG9jKCk7CisrICAgICAgICBjb25zdCBsbHZtOjpTdHJpbmdSZWYgS2V5d29y ZCA9CisrICAgICAgICAgIFR5cGVXaXRoS2V5d29yZDo6Z2V0S2V5d29yZE5hbWUoUlRMb2MuZ2V0 VHlwZVB0cigpLT5nZXRLZXl3b3JkKCkpOworKyAgICAgICAgQ29uc3VtZXJJbnN0YW5jZS0+VGhl UmV3cml0ZXIuUmVwbGFjZVRleHQoS2V5d29yZExvYywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleXdvcmQuc2l6ZSgpLCAiaW50Iik7CisrICAg ICAgfQorKyAgICB9CisrI2VuZGlmCisrCisgICAgIHZvaWQgKkxvY1B0ciA9IExvY1N0YXJ0Lmdl dFB0ckVuY29kaW5nKCk7CisgICAgIGlmIChDb25zdW1lckluc3RhbmNlLT5WaXNpdGVkTG9jcy5j b3VudChMb2NQdHIpKQorICAgICAgIHJldHVybiB0cnVlOworICAgICBDb25zdW1lckluc3RhbmNl LT5WaXNpdGVkTG9jcy5pbnNlcnQoTG9jUHRyKTsKK0BAIC0xMzYsOCArMTY2LDkgQEAKKyAgIH0K KyAgIHJldHVybiB0cnVlOworIH0KKyAKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyBi b29sIEVtcHR5U3RydWN0VG9JbnRSZXdyaXRlVmlzaXRvcjo6VmlzaXRFbGFib3JhdGVkVHlwZUxv YygKKyAgICAgICAgRWxhYm9yYXRlZFR5cGVMb2MgTG9jKQorIHsKKyAgIGNvbnN0IEVsYWJvcmF0 ZWRUeXBlICpFVHkgPSBkeW5fY2FzdDxFbGFib3JhdGVkVHlwZT4oTG9jLmdldFR5cGVQdHIoKSk7 CitAQCAtMTU5LDggKzE5MCwxMCBAQAorICAgU291cmNlTG9jYXRpb24gRW5kTG9jID0gVHlMb2Mu Z2V0QmVnaW5Mb2MoKTsKKyAgIGlmIChFbmRMb2MuaXNJbnZhbGlkKCkpCisgICAgIHJldHVybiB0 cnVlOworICAgRW5kTG9jID0gRW5kTG9jLmdldExvY1dpdGhPZmZzZXQoLTEpOworKyAgaWYgKEVu ZExvYy5pc0ludmFsaWQoKSkKKysgICAgcmV0dXJuIHRydWU7CisgICAvLyBUaGlzIEVsYWJvcmF0 ZWRUeXBlTG9jIGhhcyBiZWVuIHJlbW92ZWQgYWxvbmcgd2l0aCB0aGUgUkQKKyAgIGlmIChDb25z dW1lckluc3RhbmNlLT5pc1NvdXJjZVJhbmdlV2l0aGluUmVjb3JkRGVjbCgKKyAgICAgICAgIFNv dXJjZVJhbmdlKFN0YXJ0TG9jLCBFbmRMb2MpLCBSRCkpIHsKKyAgICAgcmV0dXJuIHRydWU7CitA QCAtMTkyLDggKzIyNSw5IEBACisgICAKKyAgIENvbnN1bWVySW5zdGFuY2UtPlRoZVJld3JpdGVy LlJlbW92ZVRleHQoU291cmNlUmFuZ2UoU3RhcnRMb2MsIEVuZExvYykpOworICAgcmV0dXJuIHRy dWU7CisgfQorKyNlbmRpZgorIAorIGJvb2wgRW1wdHlTdHJ1Y3RUb0ludFJld3JpdGVWaXNpdG9y OjpWaXNpdFJlY29yZERlY2woUmVjb3JkRGVjbCAqUkQpCisgeworICAgLy9pZiAoQ29uc3VtZXJJ bnN0YW5jZS0+aXNTcGVjaWFsUmVjb3JkRGVjbChSRCkpCitAQCAtMzk1LDggKzQyOSw5IEBACisg ICBjb25zdCBSZWNvcmRUeXBlICpSVCA9IFBvaW50ZWVUeS0+Z2V0QXM8UmVjb3JkVHlwZT4oKTsK KyAgIGlmICghUlQpCisgICAgIHJldHVybiBmYWxzZTsKKyAgIGNvbnN0IFJlY29yZERlY2wgKlJE ID0gUlQtPmdldERlY2woKTsKKysKKyAgIGNvbnN0IFJlY29yZERlY2wgKlBhcmVudCA9IEZELT5n ZXRQYXJlbnQoKTsKKyAgIHJldHVybiAoUGFyZW50LT5nZXRDYW5vbmljYWxEZWNsKCkgPT0gUkQt PmdldENhbm9uaWNhbERlY2woKSk7CisgfQorIAorQEAgLTQ4Niw4ICs1MjEsOSBAQAorICAgICBy ZXR1cm4gTlVMTDsKKyAKKyAgIGNvbnN0IFJlY29yZFR5cGUgKlJUID0gVHktPmdldEFzU3RydWN0 dXJlVHlwZSgpOworICAgcmV0dXJuIFJULT5nZXREZWNsKCktPmdldERlZmluaXRpb24oKTsKKysK KyB9CisgCisgdm9pZCBFbXB0eVN0cnVjdFRvSW50OjpnZXRJbml0RXhwcnMoY29uc3QgVHlwZSAq VHksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4cHIgKkUs CitAQCAtNTI2LDggKzU2Miw5IEBACisgICB9CisgCisgICBjb25zdCBSZWNvcmREZWNsICpSRCA9 IFJULT5nZXREZWNsKCk7CisgCisrCisgICBpZiAoUkQtPmdldENhbm9uaWNhbERlY2woKSA9PSBU aGVSZWNvcmREZWNsKSB7CisgICAgIEluaXRFeHBycy5wdXNoX2JhY2soRSk7CisgICB9CisgICBl bHNlIHsKK2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL0luc3RhbnRp YXRlVGVtcGxhdGVQYXJhbS5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL0luc3RhbnRpYXRl VGVtcGxhdGVQYXJhbS5jcHAKKy0tLSBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvSW5z dGFudGlhdGVUZW1wbGF0ZVBhcmFtLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAwMDAwMCAr MDIwMAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9JbnN0YW50aWF0ZVRlbXBsYXRlUGFy YW0uY3BwCTIwMjYtMDctMTcgMTQ6MDA6MzMuNTY1NjA4ODQ1ICswMjAwCitAQCAtMjg0LDggKzI4 NCw5IEBACisgICAgICAgIFJlY29yZERlY2xTZXQgJlRlbXBBdmFpbGFibGVSZWNvcmREZWNscykK KyB7CisgICBpZiAoY29uc3QgUmVjb3JkVHlwZSAqUlQgPSBUeS0+Z2V0QXNVbmlvblR5cGUoKSkg eworICAgICBjb25zdCBSZWNvcmREZWNsICpSRCA9IFJULT5nZXREZWNsKCk7CisrCisgICAgIGFk ZE9uZUZvcndhcmREZWNsU3RyKFJELCBGb3J3YXJkU3RyLCBUZW1wQXZhaWxhYmxlUmVjb3JkRGVj bHMpOworICAgICByZXR1cm47CisgICB9CisgCitkaWZmIC1yTlU0IGN2aXNlLTIuMTIuMC0tb3Jp Zy9jbGFuZ19kZWx0YS9NZW1iZXJUb0dsb2JhbC5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRh L01lbWJlclRvR2xvYmFsLmNwcAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9N ZW1iZXJUb0dsb2JhbC5jcHAJMjAyNS0wOS0yMyAyMjo1MToyOS4wMDAwMDAwMDAgKzAyMDAKKysr KyBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvTWVtYmVyVG9HbG9iYWwuY3BwCTIwMjYtMDctMTcg MTQ6MDk6MjAuODU5MDMwMjI3ICswMjAwCitAQCAtMjgsOSArMjgsOSBAQAorIAorIHN0YXRpYyBS ZWdpc3RlclRyYW5zZm9ybWF0aW9uPE1lbWJlclRvR2xvYmFsPgorICAgICAgICAgIFRyYW5zKCJt ZW1iZXItdG8tZ2xvYmFsIiwgRGVzY3JpcHRpb25Nc2cpOworIAorLWNsYXNzIE1lbWJlclRvR2xv YmFsOjpDb2xsZWN0aW9uVmlzaXRvciA6IHB1YmxpYyAKKytjbGFzcyBNZW1iZXJUb0dsb2JhbDo6 Q29sbGVjdGlvblZpc2l0b3IgOiBwdWJsaWMKKyAgIFJlY3Vyc2l2ZUFTVFZpc2l0b3I8Q29sbGVj dGlvblZpc2l0b3I+IHsKKyAKKyBwdWJsaWM6CisgICBleHBsaWNpdCBDb2xsZWN0aW9uVmlzaXRv cihNZW1iZXJUb0dsb2JhbCAqSW5zdGFuY2UpCitAQCAtNjUsOCArNjUsOSBAQAorIAorICAgICBy ZXR1cm4gdHJ1ZTsKKyAgIH0KKyAKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAgIGJv b2wgVmlzaXRFbGFib3JhdGVkVHlwZUxvYyhFbGFib3JhdGVkVHlwZUxvYyBUTCkgeworICAgICAv LyBSZXBsYWNlIENMQVNTOjpUWVBFIGJ5IFRZUEUKKyAgICAgaWYgKGF1dG8qIFRUID0gVEwuZ2V0 SW5uZXJUeXBlKCktPmdldEFzPFR5cGVkZWZUeXBlPigpKSB7CisgICAgICAgaWYgKENvbnN1bWVy SW5zdGFuY2UtPmlzVGhlRGVjbChUVC0+Z2V0RGVjbCgpKSkgeworQEAgLTc5LDggKzgwLDIxIEBA CisgICAgIH0KKyAKKyAgICAgcmV0dXJuIHRydWU7CisgICB9CisrI2Vsc2UKKysgIGJvb2wgVmlz aXRUeXBlZGVmVHlwZUxvYyhjb25zdCBUeXBlZGVmVHlwZUxvYyAmVFRMKSB7CisrICAgIGlmIChD b25zdW1lckluc3RhbmNlLT5pc1RoZURlY2woVFRMLmdldERlY2woKSkpCisrICAgICAgQ29uc3Vt ZXJJbnN0YW5jZS0+cmVtb3ZlUmVjb3JkUXVhbGlmaWVyKFRUTC5nZXRRdWFsaWZpZXJMb2MoKSk7 CisrICAgIHJldHVybiB0cnVlOworKyAgfQorKworKyAgYm9vbCBWaXNpdFRhZ1R5cGVMb2MoVGFn VHlwZUxvYyBUTCkgeworKyAgICBpZiAoQ29uc3VtZXJJbnN0YW5jZS0+aXNUaGVEZWNsKFRMLmdl dERlY2woKSkpCisrICAgICAgQ29uc3VtZXJJbnN0YW5jZS0+cmVtb3ZlUmVjb3JkUXVhbGlmaWVy KFRMLmdldFF1YWxpZmllckxvYygpKTsKKysgICAgcmV0dXJuIHRydWU7CisrICB9CisrI2VuZGlm CisgCisgICBib29sIFZpc2l0RGVjbFJlZkV4cHIoRGVjbFJlZkV4cHIqIERSRSkgeworICAgICBp ZiAoQ29uc3VtZXJJbnN0YW5jZS0+aXNUaGVEZWNsKERSRS0+Z2V0RGVjbCgpKSkgeworICAgICAg IENvbnN1bWVySW5zdGFuY2UtPnJlbW92ZVJlY29yZFF1YWxpZmllcihEUkUtPmdldFF1YWxpZmll ckxvYygpKTsKK0BAIC05Miw5ICsxMDYsOSBAQAorIHByaXZhdGU6CisgICBNZW1iZXJUb0dsb2Jh bCAqQ29uc3VtZXJJbnN0YW5jZTsKKyB9OworIAorLXZvaWQgTWVtYmVyVG9HbG9iYWw6OkluaXRp YWxpemUoQVNUQ29udGV4dCAmY29udGV4dCkgCisrdm9pZCBNZW1iZXJUb0dsb2JhbDo6SW5pdGlh bGl6ZShBU1RDb250ZXh0ICZjb250ZXh0KQorIHsKKyAgIFRyYW5zZm9ybWF0aW9uOjpJbml0aWFs aXplKGNvbnRleHQpOworIH0KKyAKK0BAIC0xMTEsMTAgKzEyNSwxOSBAQAorIHZvaWQgTWVtYmVy VG9HbG9iYWw6OnJlbW92ZVJlY29yZFF1YWxpZmllcihjb25zdCBOZXN0ZWROYW1lU3BlY2lmaWVy TG9jJiBOTlNMb2MpIHsKKyAgIGlmICghTk5TTG9jKQorICAgICByZXR1cm47CisgCistICBpZiAo aXNUaGVSZWNvcmREZWNsKE5OU0xvYy5nZXROZXN0ZWROYW1lU3BlY2lmaWVyKCktPmdldEFzUmVj b3JkRGVjbCgpKSkgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorKyAgQ1hYUmVjb3Jk RGVjbCAqUkQgPSBOTlNMb2MuZ2V0TmVzdGVkTmFtZVNwZWNpZmllcigpLT5nZXRBc1JlY29yZERl Y2woKTsKKysjZWxzZQorKyAgQ1hYUmVjb3JkRGVjbCAqUkQgPSBOTlNMb2MuZ2V0TmVzdGVkTmFt ZVNwZWNpZmllcigpLmdldEFzUmVjb3JkRGVjbCgpOworKyNlbmRpZgorKyAgaWYgKGlzVGhlUmVj b3JkRGVjbChSRCkpIHsKKyAgICAgU291cmNlUmFuZ2UgU1IgPSBOTlNMb2MuZ2V0TG9jYWxTb3Vy Y2VSYW5nZSgpOworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gMjIKKysgICAgaWYgKFR5cGVM b2MgVEwgPSBOTlNMb2MuZ2V0QXNUeXBlTG9jKCkpCisrICAgICAgU1Iuc2V0QmVnaW4oVEwuY2Fz dEFzPFRhZ1R5cGVMb2M+KCkuZ2V0TmFtZUxvYygpKTsKKysjZW5kaWYKKyAgICAgU1Iuc2V0RW5k KFNSLmdldEVuZCgpLmdldExvY1dpdGhPZmZzZXQoMSkpOworIAorICAgICBUaGVSZXdyaXRlci5S ZW1vdmVUZXh0KFNSKTsKKyAgIH0KK2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5n X2RlbHRhL1JlZHVjZVBvaW50ZXJMZXZlbC5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1Jl ZHVjZVBvaW50ZXJMZXZlbC5jcHAKKy0tLSBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEv UmVkdWNlUG9pbnRlckxldmVsLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAwMDAwMCArMDIw MAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZWR1Y2VQb2ludGVyTGV2ZWwuY3BwCTIw MjYtMDctMTcgMTQ6MDA6MzMuNTY1ODM3NjA2ICswMjAwCitAQCAtMjU5LDE1ICsyNTksMTcgQEAK KyAgICAgaWYgKCFBcnJheUVsZW1UeS0+aXNTdHJ1Y3R1cmVUeXBlKCkgJiYgIUFycmF5RWxlbVR5 LT5pc1VuaW9uVHlwZSgpKQorICAgICAgIHJldHVybiB0cnVlOworICAgICBpZiAoY29uc3QgUmVj b3JkVHlwZSAqUkRUeSA9IEFycmF5RWxlbVR5LT5nZXRBczxSZWNvcmRUeXBlPigpKSB7CisgICAg ICAgY29uc3QgUmVjb3JkRGVjbCAqUkQgPSBSRFR5LT5nZXREZWNsKCk7CisrCisgICAgICAgQ29u c3VtZXJJbnN0YW5jZS0+cmV3cml0ZUFycmF5SW5pdChSRCwgVkQtPmdldEluaXQoKSk7CisgICAg IH0KKyAgICAgcmV0dXJuIHRydWU7CisgICB9CisgCisgICBpZiAoY29uc3QgUmVjb3JkVHlwZSAq UkRUeSA9IFZEVHktPmdldEFzPFJlY29yZFR5cGU+KCkpIHsKKyAgICAgY29uc3QgUmVjb3JkRGVj bCAqUkQgPSBSRFR5LT5nZXREZWNsKCk7CisrCisgICAgIENvbnN1bWVySW5zdGFuY2UtPnJld3Jp dGVSZWNvcmRJbml0KFJELCBWRC0+Z2V0SW5pdCgpKTsKKyAgIH0KKyAKKyAgIHJldHVybiB0cnVl OworQEAgLTk3Nyw4ICs5NzksOSBAQAorICAgaWYgKCFSRCkKKyAgICAgcmV0dXJuIGZhbHNlOwor IAorICAgY29uc3QgUmVjb3JkRGVjbCAqTmVzdGVkUkQgPSBSVHktPmdldERlY2woKTsKKysKKyAg IHJldHVybiAoUkQtPmdldENhbm9uaWNhbERlY2woKSA9PSBOZXN0ZWRSRC0+Z2V0Q2Fub25pY2Fs RGVjbCgpKTsKKyB9CisgCisgdm9pZCBSZWR1Y2VQb2ludGVyTGV2ZWw6OnJld3JpdGVSZWNvcmRJ bml0KGNvbnN0IFJlY29yZERlY2wgKlJELAorZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcv Y2xhbmdfZGVsdGEvUmVtb3ZlQmFzZUNsYXNzLmNwcCBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEv UmVtb3ZlQmFzZUNsYXNzLmNwcAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9S ZW1vdmVCYXNlQ2xhc3MuY3BwCTIwMjUtMDktMjMgMjI6NTE6MjkuMDAwMDAwMDAwICswMjAwCisr KysgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1JlbW92ZUJhc2VDbGFzcy5jcHAJMjAyNi0wNy0x NyAxNDowMDozMy41NjU5NjYwNjggKzAyMDAKK0BAIC05NywxMCArOTcsMTAgQEAKKyAgICAgICAg RSA9IFN1YkMtPmJhc2VzX2VuZCgpOyBJICE9IEU7ICsrSSkgeworICAgICBpZiAoSS0+Z2V0VHlw ZSgpLT5pc0RlcGVuZGVudFR5cGUoKSkKKyAgICAgICBjb250aW51ZTsKKyAKKy0gICAgY29uc3Qg Q1hYUmVjb3JkRGVjbCAqQmFzZURlY2wgPQorLSAgICAgIGR5bl9jYXN0PENYWFJlY29yZERlY2w+ KEktPmdldFR5cGUoKS0+Z2V0QXM8UmVjb3JkVHlwZT4oKS0+Z2V0RGVjbCgpKTsKKysgICAgY29u c3QgUmVjb3JkVHlwZSAqUlQgPSBJLT5nZXRUeXBlKCktPmdldEFzPFJlY29yZFR5cGU+KCk7Cisr ICAgIGNvbnN0IENYWFJlY29yZERlY2wgKkJhc2VEZWNsID0gZHluX2Nhc3Q8Q1hYUmVjb3JkRGVj bD4oUlQtPmdldERlY2woKSk7CisgICAgIGlmIChCYXNlLT5nZXRDYW5vbmljYWxEZWNsKCkgPT0g QmFzZURlY2wtPmdldENhbm9uaWNhbERlY2woKSkKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgIH0K KyAgIHJldHVybiBmYWxzZTsKK0BAIC0xOTksOSArMTk5LDE1IEBACisgfQorIAorIGJvb2wgUmVt b3ZlQmFzZUNsYXNzOjppc1RoZUJhc2VDbGFzcyhjb25zdCBDWFhCYXNlU3BlY2lmaWVyICZTcGVj aWZpZXIpCisgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgY29uc3QgVHlwZSAq VHkgPSBUaGVCYXNlQ2xhc3MtPmdldFR5cGVGb3JEZWNsKCk7CisrI2Vsc2UKKysgIGNvbnN0IFR5 cGUgKlR5ID0gVGhlQmFzZUNsYXNzLT5nZXRBU1RDb250ZXh0KCkKKysgICAgICAgICAgICAgICAg ICAgICAgIC5nZXRDYW5vbmljYWxUYWdUeXBlKFRoZUJhc2VDbGFzcykKKysgICAgICAgICAgICAg ICAgICAgICAgIC0+Z2V0VHlwZVB0cigpOworKyNlbmRpZgorICAgcmV0dXJuIENvbnRleHQtPmhh c1NhbWVUeXBlKFNwZWNpZmllci5nZXRUeXBlKCksIAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFR5LT5nZXRDYW5vbmljYWxUeXBlSW50ZXJuYWwoKSk7CisgfQorIAorQEAgLTI1MSwx MCArMjU3LDE4IEBACisgCisgICAgIGlmICgoKkkpLT5pc0Jhc2VJbml0aWFsaXplcigpKSB7Cisg ICAgICAgY29uc3QgVHlwZSAqVHkgPSAoKkkpLT5nZXRCYXNlQ2xhc3MoKTsKKyAgICAgICBUcmFu c0Fzc2VydChUeSAmJiAiSW52YWxpZCBCYXNlIENsYXNzIFR5cGUhIik7CistICAgICAgaWYgKENv bnRleHQtPmhhc1NhbWVUeXBlKFR5LT5nZXRDYW5vbmljYWxUeXBlSW50ZXJuYWwoKSwKKy0gICAg ICAgICAgICBUaGVCYXNlQ2xhc3MtPmdldFR5cGVGb3JEZWNsKCktPmdldENhbm9uaWNhbFR5cGVJ bnRlcm5hbCgpKSkgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorKyAgICAgIFF1YWxU eXBlIENhbm9uVCA9CisrICAgICAgICAgIFRoZUJhc2VDbGFzcy0+Z2V0VHlwZUZvckRlY2woKS0+ Z2V0Q2Fub25pY2FsVHlwZUludGVybmFsKCk7CisrI2Vsc2UKKysgICAgICBRdWFsVHlwZSBDYW5v blQgPSBUaGVCYXNlQ2xhc3MtPmdldEFTVENvbnRleHQoKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLmdldENhbm9uaWNhbFRhZ1R5cGUoVGhlQmFzZUNsYXNzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5nZXRUeXBlUHRyKCkKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0Q2Fub25pY2FsVHlwZUludGVybmFsKCk7Cisr I2VuZGlmCisrICAgICAgaWYgKENvbnRleHQtPmhhc1NhbWVUeXBlKFR5LT5nZXRDYW5vbmljYWxU eXBlSW50ZXJuYWwoKSwgQ2Fub25UKSkgeworICAgICAgICAgSW5pdCA9ICgqSSk7CisgICAgICAg ICBicmVhazsKKyAgICAgICB9CisgICAgIH0KK2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmln L2NsYW5nX2RlbHRhL1JlbW92ZU5hbWVzcGFjZS5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRh L1JlbW92ZU5hbWVzcGFjZS5jcHAKKy0tLSBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEv UmVtb3ZlTmFtZXNwYWNlLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAwMDAwMCArMDIwMAor KysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZW1vdmVOYW1lc3BhY2UuY3BwCTIwMjYtMDct MTcgMTQ6MTQ6NDIuMDgwMDYwODI5ICswMjAwCitAQCAtOTAsMTAgKzkwLDEyIEBACisgCisgICBi b29sIFZpc2l0VGVtcGxhdGVTcGVjaWFsaXphdGlvblR5cGVMb2MoCisgICAgICAgICAgVGVtcGxh dGVTcGVjaWFsaXphdGlvblR5cGVMb2MgVFNQTG9jKTsKKyAKKysjaWYgTExWTV9WRVJTSU9OX01B Sk9SIDwgMjIKKyAgIGJvb2wgVmlzaXREZXBlbmRlbnRUZW1wbGF0ZVNwZWNpYWxpemF0aW9uVHlw ZUxvYygKKyAgICAgICAgICBEZXBlbmRlbnRUZW1wbGF0ZVNwZWNpYWxpemF0aW9uVHlwZUxvYyBE VFNMb2MpOworKyNlbmRpZgorIAorICAgYm9vbCBWaXNpdEluamVjdGVkQ2xhc3NOYW1lVHlwZUxv YyhJbmplY3RlZENsYXNzTmFtZVR5cGVMb2MgVHlMb2MpOworIAorICAgYm9vbCBWaXNpdFR5cGVk ZWZUeXBlTG9jKFR5cGVkZWZUeXBlTG9jIFR5TG9jKTsKK0BAIC0yMjUsMTEgKzIyNywyMSBAQAor IAorICAgLy8gY2hlY2sgaWYgdGhpcyBVc2luZ0RlY2wgcmVmZXJzIHRvIHRoZSBuYW1lc3BhY2Vk IGJlaW5nIHJlbW92ZWQKKyAgIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jID0g RC0+Z2V0UXVhbGlmaWVyTG9jKCk7CisgICBUcmFuc0Fzc2VydChRdWFsaWZpZXJMb2MgJiYgIkJh ZCBRdWFsaWZpZXJMb2MhIik7CisrI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDIyCisgICBOZXN0 ZWROYW1lU3BlY2lmaWVyTG9jIFByZWZpeExvYyA9IFF1YWxpZmllckxvYy5nZXRQcmVmaXgoKTsK KysjZWxzZQorKyAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBQcmVmaXhMb2MgPQorKyAgICAgIFF1 YWxpZmllckxvYy5nZXRBc05hbWVzcGFjZUFuZFByZWZpeCgpLlByZWZpeDsKKysjZW5kaWYKKyAK KysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAgIGNvbnN0IE5lc3RlZE5hbWVTcGVjaWZp ZXIgKk5OUyA9IEQtPmdldFF1YWxpZmllcigpOworKyNlbHNlCisrICBjb25zdCBOZXN0ZWROYW1l U3BlY2lmaWVyIE5OU1ZhbCA9IFF1YWxpZmllckxvYy5nZXROZXN0ZWROYW1lU3BlY2lmaWVyKCk7 CisrICBjb25zdCBOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMgPSBOTlNWYWwgPyAmTk5TVmFsIDog bnVsbHB0cjsKKysjZW5kaWYKKyAgIFRyYW5zQXNzZXJ0KE5OUyAmJiAiQmFkIE5hbWVTcGVjaWZp ZXIhIik7CisgICBpZiAoQ29uc3VtZXJJbnN0YW5jZS0+aXNUaGVOYW1lc3BhY2VTcGVjaWZpZXIo Tk5TKSAmJgorICAgICAgICghUHJlZml4TG9jIHx8IENvbnN1bWVySW5zdGFuY2UtPmlzR2xvYmFs TmFtZXNwYWNlKFByZWZpeExvYykpKSB7CisgICAgIENvbnN1bWVySW5zdGFuY2UtPlJld3JpdGVI ZWxwZXItPnJlbW92ZURlY2woRCk7CitAQCAtMzc3LDggKzM4OSw5IEBACisgCisgYm9vbCBSZW1v dmVOYW1lc3BhY2VSZXdyaXRlVmlzaXRvcjo6VmlzaXRSZWNvcmRUeXBlTG9jKFJlY29yZFR5cGVM b2MgUlRMb2MpCisgeworICAgY29uc3QgQ1hYUmVjb3JkRGVjbCAqUkQgPSBkeW5fY2FzdDxDWFhS ZWNvcmREZWNsPihSVExvYy5nZXREZWNsKCkpOworKworICAgaWYgKCFSRCkKKyAgICAgcmV0dXJu IHRydWU7CisgCisgICBzdGQ6OnN0cmluZyBOYW1lOworQEAgLTM5Niw4ICs0MDksNDEgQEAKKyAg ICAgZHluX2Nhc3Q8VGVtcGxhdGVTcGVjaWFsaXphdGlvblR5cGU+KFR5KTsKKyAgIFRyYW5zQXNz ZXJ0KFRTVCAmJiAiQmFkIFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlISIpOworIAorICAgVGVt cGxhdGVOYW1lIFRwbE5hbWUgPSBUU1QtPmdldFRlbXBsYXRlTmFtZSgpOworKworKyNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgPj0gMjIKKysgIGlmIChUcGxOYW1lLmdldEtpbmQoKSA9PSBUZW1wbGF0 ZU5hbWU6OkRlcGVuZGVudFRlbXBsYXRlKSB7CisrICAgIERlcGVuZGVudFRlbXBsYXRlTmFtZSog RFROID0gVHBsTmFtZS5nZXRBc0RlcGVuZGVudFRlbXBsYXRlTmFtZSgpOworKyAgICBjb25zdCBJ ZGVudGlmaWVySW5mbyAqSWRJbmZvID0gRFROLT5nZXROYW1lKCkuZ2V0SWRlbnRpZmllcigpOwor KyAgICBzdGQ6OnN0cmluZyBJZE5hbWUgPSBJZEluZm8tPmdldE5hbWUoKS5zdHIoKTsKKysgICAg c3RkOjpzdHJpbmcgTmFtZTsKKysKKysgICAgLy8gRklYTUU6CisrICAgIC8vIFRoaXMgaXNuJ3Qg cXVpdGUgcmlnaHQsIHdlIHdpbGwgZ2VuZXJhdGUgYmFkIGNvZGUgZm9yIHNvbWUgY2FzZXMsIGUu Zy4sCisrICAgIC8vIG5hbWVzcGFjZSBOUzEgeworKyAgICAvLyAgIHRlbXBsYXRlIDxjbGFzcyBU PiBzdHJ1Y3QgQmFzZSB7fTsKKysgICAgLy8gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IERl cml2ZWQ6IHB1YmxpYyBCYXNlPFQ+IHsKKysgICAgLy8gICAgIHR5cGVuYW1lIERlcml2ZWQ6OnRl bXBsYXRlIEJhc2U8ZG91YmxlPiogcDE7CisrICAgIC8vICAgfTsKKysgICAgLy8gfQorKyAgICAv LyB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IEJhc2Uge307CisrICAgIC8vIHRlbXBsYXRlIDxj bGFzcyBUPiBzdHJ1Y3QgRGVyaXZlZDogcHVibGljIEJhc2U8VD4geworKyAgICAvLyAgIHR5cGVu YW1lIERlcml2ZWQ6OnRlbXBsYXRlIEJhc2U8ZG91YmxlPiogcDE7CisrICAgIC8vIH07CisrICAg IC8vIEZvciB0aGUgZ2xvYmFsIERlcml2ZWQgdGVtcGxhdGUgY2xhc3MsIHdlIHdpbGwgZW5kIHVw IHdpdGgKKysgICAgLy8gdHlwZW5hbWUgRGVyaXZlZDo6dGVtcGxhdGUgVHJhbl9OU19OUzFfQmFz ZSAuLi4sCisrICAgIC8vIHdoaWNoIGlzIG9idmlvdXNseSB3cm9uZy4KKysgICAgLy8gQW55IHdh eSB0byBhdm9pZCB0aGlzIGJhZCB0cmFuc2Zvcm1hdGlvbj8KKysgICAgaWYgKENvbnN1bWVySW5z dGFuY2UtPmdldE5ld05hbWVCeU5hbWUoSWROYW1lLCBOYW1lKSkgeworKyAgICAgIFNvdXJjZUxv Y2F0aW9uIExvY1N0YXJ0ID0gVFNQTG9jLmdldFRlbXBsYXRlTmFtZUxvYygpOworKyAgICAgIENv bnN1bWVySW5zdGFuY2UtPlRoZVJld3JpdGVyLlJlcGxhY2VUZXh0KAorKyAgICAgICAgTG9jU3Rh cnQsIElkTmFtZS5zaXplKCksIE5hbWUpOworKyAgICB9CisrICAgIHJldHVybiB0cnVlOworKyAg fQorKyNlbmRpZgorKworICAgY29uc3QgVGVtcGxhdGVEZWNsICpUcGxEID0gVHBsTmFtZS5nZXRB c1RlbXBsYXRlRGVjbCgpOworICAgVHJhbnNBc3NlcnQoVHBsRCAmJiAiSW52YWxpZCBUZW1wbGF0 ZURlY2whIik7CisgICBOYW1lZERlY2wgKk5EID0gVHBsRC0+Z2V0VGVtcGxhdGVkRGVjbCgpOwor ICAgLy8gaW4gc29tZSBjYXNlcywgTkQgY291bGQgYmUgTlVMTCwgZS5nLiwgdGhlCitAQCAtNDI2 LDggKzQ3Miw5IEBACisgCisgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisrI2lmIExMVk1fVkVSU0lP Tl9NQUpPUiA8IDIyCisgLy8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEgdGVtcGxhdGUgc3BlY2lh bGl6YXRpb24gdHlwZSBjYW5ub3QgYmUgcmVzb2x2ZWQsIGUuZy4KKyAvLyB0ZW1wbGF0ZSA8Y2xh c3MgVD4gc3RydWN0IEJhc2Uge307CisgLy8gdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBEZXJp dmVkOiBwdWJsaWMgQmFzZTxUPiB7CisgLy8gIHR5cGVuYW1lIERlcml2ZWQ6OnRlbXBsYXRlIEJh c2U8ZG91YmxlPiogcDE7CitAQCAtNDM5LDkgKzQ4NiwxNCBAQAorICAgY29uc3QgRGVwZW5kZW50 VGVtcGxhdGVTcGVjaWFsaXphdGlvblR5cGUgKkRUU1QgPQorICAgICBkeW5fY2FzdDxEZXBlbmRl bnRUZW1wbGF0ZVNwZWNpYWxpemF0aW9uVHlwZT4oVHkpOworICAgVHJhbnNBc3NlcnQoRFRTVCAm JiAiQmFkIERlcGVuZGVudFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlISIpOworIAorLSAgY29u c3QgSWRlbnRpZmllckluZm8gKklkSW5mbyA9IERUU1QtPmdldElkZW50aWZpZXIoKTsKKysgIGNv bnN0IElkZW50aWZpZXJJbmZvICpJZEluZm8gPQorKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPiAy MAorKyAgICBEVFNULT5nZXREZXBlbmRlbnRUZW1wbGF0ZU5hbWUoKS5nZXROYW1lKCkuZ2V0SWRl bnRpZmllcigpOworKyNlbHNlCisrICAgIERUU1QtPmdldElkZW50aWZpZXIoKTsKKysjZW5kaWYK KyAgIHN0ZDo6c3RyaW5nIElkTmFtZSA9IElkSW5mby0+Z2V0TmFtZSgpLnN0cigpOworICAgc3Rk OjpzdHJpbmcgTmFtZTsKKyAKKyAgIC8vIEZJWE1FOgorQEAgLTQ2NywxMyArNTE5LDE1IEBACisg ICB9CisgCisgICByZXR1cm4gdHJ1ZTsKKyB9CisrI2VuZGlmCisgCisgYm9vbCBSZW1vdmVOYW1l c3BhY2VSZXdyaXRlVmlzaXRvcjo6VmlzaXRJbmplY3RlZENsYXNzTmFtZVR5cGVMb2MoCisgICAg ICAgIEluamVjdGVkQ2xhc3NOYW1lVHlwZUxvYyBUeUxvYykKKyB7CisgICBjb25zdCBDWFhSZWNv cmREZWNsICpDWFhSRCA9IFR5TG9jLmdldERlY2woKTsKKysKKyAgIFRyYW5zQXNzZXJ0KENYWFJE ICYmICJJbnZhbGlkIENYWFJlY29yZERlY2whIik7CisgCisgICBzdGQ6OnN0cmluZyBOYW1lOwor ICAgaWYgKENvbnN1bWVySW5zdGFuY2UtPmdldE5ld05hbWUoQ1hYUkQsIE5hbWUpKSB7CitAQCAt NDg3LDkgKzU0MSwxMyBAQAorIH0KKyAKKyBib29sIFJlbW92ZU5hbWVzcGFjZVJld3JpdGVWaXNp dG9yOjpWaXNpdFR5cGVkZWZUeXBlTG9jKFR5cGVkZWZUeXBlTG9jIFR5TG9jKQorIHsKKysjaWYg TExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAgIGNvbnN0IFR5cGVkZWZOYW1lRGVjbCAqRCA9IFR5 TG9jLmdldFR5cGVkZWZOYW1lRGVjbCgpOworKyNlbHNlCisrICBjb25zdCBUeXBlZGVmTmFtZURl Y2wgKkQgPSBUeUxvYy5nZXREZWNsKCk7CisrI2VuZGlmCisgCisgICBzdGQ6OnN0cmluZyBOYW1l OworICAgaWYgKENvbnN1bWVySW5zdGFuY2UtPmdldE5ld05hbWUoRCwgTmFtZSkpIHsKKyAgICAg U291cmNlTG9jYXRpb24gTG9jU3RhcnQgPSBUeUxvYy5nZXRCZWdpbkxvYygpOworQEAgLTUwMiw4 ICs1NjAsOSBAQAorIGJvb2wgUmVtb3ZlTmFtZXNwYWNlUmV3cml0ZVZpc2l0b3I6OlZpc2l0RW51 bVR5cGVMb2MoRW51bVR5cGVMb2MgVHlMb2MpCisgeworICAgY29uc3QgRW51bURlY2wgKkQgPSBU eUxvYy5nZXREZWNsKCk7CisgCisrCisgICBzdGQ6OnN0cmluZyBOYW1lOworICAgaWYgKENvbnN1 bWVySW5zdGFuY2UtPmdldE5ld05hbWUoRCwgTmFtZSkpIHsKKyAgICAgU291cmNlTG9jYXRpb24g TG9jU3RhcnQgPSBUeUxvYy5nZXRCZWdpbkxvYygpOworICAgICBDb25zdW1lckluc3RhbmNlLT5U aGVSZXdyaXRlci5SZXBsYWNlVGV4dCgKK0BAIC01NDEsMTggKzYwMCwzMyBAQAorICAgaWYgKCFR dWFsaWZpZXJMb2MgfHwgUXVhbGlmaWVyTG9jLmdldEJlZ2luTG9jKCkuaXNJbnZhbGlkKCkpCisg ICAgIHJldHVybiB0cnVlOworIAorICAgU21hbGxWZWN0b3I8TmVzdGVkTmFtZVNwZWNpZmllckxv YywgOD4gUXVhbGlmaWVyTG9jczsKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAgIGZv ciAoOyBRdWFsaWZpZXJMb2M7IFF1YWxpZmllckxvYyA9IFF1YWxpZmllckxvYy5nZXRQcmVmaXgo KSkKKysjZWxzZQorKyAgZm9yICg7IFF1YWxpZmllckxvYzsKKysgICAgICAgUXVhbGlmaWVyTG9j ID0gUXVhbGlmaWVyTG9jLmdldEFzTmFtZXNwYWNlQW5kUHJlZml4KCkuUHJlZml4KQorKyNlbmRp ZgorICAgICBRdWFsaWZpZXJMb2NzLnB1c2hfYmFjayhRdWFsaWZpZXJMb2MpOworIAorICAgd2hp bGUgKCFRdWFsaWZpZXJMb2NzLmVtcHR5KCkpIHsKKyAgICAgTmVzdGVkTmFtZVNwZWNpZmllckxv YyBMb2MgPSBRdWFsaWZpZXJMb2NzLnBvcF9iYWNrX3ZhbCgpOworKyNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgPCAyMgorICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMgPSBMb2MuZ2V0TmVzdGVk TmFtZVNwZWNpZmllcigpOworKyNlbHNlCisrICAgIE5lc3RlZE5hbWVTcGVjaWZpZXIgTk5TVmFs ID0gTG9jLmdldE5lc3RlZE5hbWVTcGVjaWZpZXIoKTsKKysgICAgTmVzdGVkTmFtZVNwZWNpZmll ciAqTk5TID0gTk5TVmFsID8gJk5OU1ZhbCA6IG51bGxwdHI7CisrI2VuZGlmCisrI2lmIExMVk1f VkVSU0lPTl9NQUpPUiA8IDIyCisgICAgIE5lc3RlZE5hbWVTcGVjaWZpZXI6OlNwZWNpZmllcktp bmQgS2luZCA9IE5OUy0+Z2V0S2luZCgpOworKyNlbHNlCisrICAgIE5lc3RlZE5hbWVTcGVjaWZp ZXI6OktpbmQgS2luZCA9IE5OUy0+Z2V0S2luZCgpOworKyNlbmRpZgorICAgICBjb25zdCBOYW1l c3BhY2VEZWNsICpORCA9IE5VTEw7CisgCisgICAgIHN3aXRjaCAoS2luZCkgeworKyNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgPCAyMgorICAgICAgIGNhc2UgTmVzdGVkTmFtZVNwZWNpZmllcjo6TmFt ZXNwYWNlOiB7CisgICAgICAgICBORCA9IE5OUy0+Z2V0QXNOYW1lc3BhY2UoKS0+Z2V0Q2Fub25p Y2FsRGVjbCgpOworICAgICAgICAgYnJlYWs7CisgICAgICAgfQorQEAgLTU2MiwxMSArNjM2LDI5 IEBACisgICAgICAgICAgIE5EID0gTkFELT5nZXROYW1lc3BhY2UoKS0+Z2V0Q2Fub25pY2FsRGVj bCgpOworICAgICAgICAgYnJlYWs7CisgICAgICAgfQorICAgICAgIGNhc2UgTmVzdGVkTmFtZVNw ZWNpZmllcjo6VHlwZVNwZWM6IC8vIEZhbGwtdGhyb3VnaAorKyNpZiBMTFZNX1ZFUlNJT05fTUFK T1IgPD0gMjAKKyAgICAgICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6OlR5cGVTcGVjV2l0aFRl bXBsYXRlOgorKyNlbmRpZgorICAgICAgICAgVHJhdmVyc2VUeXBlTG9jKExvYy5nZXRUeXBlTG9j KCkpOworICAgICAgICAgYnJlYWs7CisrI2Vsc2UKKysgICAgICBjYXNlIE5lc3RlZE5hbWVTcGVj aWZpZXI6OktpbmQ6Ok5hbWVzcGFjZTogeworKyAgICAgICAgaWYgKGF1dG8qIE5TID0gZHluX2Nh c3Q8TmFtZXNwYWNlRGVjbD4oCisrICAgICAgICAgICAgICAgIE5OUy0+Z2V0QXNOYW1lc3BhY2VB bmRQcmVmaXgoKS5OYW1lc3BhY2UpKSB7CisrICAgICAgICAgIE5EID0gTlMtPmdldENhbm9uaWNh bERlY2woKTsKKysgICAgICAgIH0gZWxzZSBpZiAoYXV0byogTkFEID0gZHluX2Nhc3Q8TmFtZXNw YWNlQWxpYXNEZWNsPigKKysgICAgICAgICAgICAgICAgICAgICAgIE5OUy0+Z2V0QXNOYW1lc3Bh Y2VBbmRQcmVmaXgoKS5OYW1lc3BhY2UpKSB7CisrICAgICAgICAgIGlmICghTkFELT5nZXRRdWFs aWZpZXIoKSkKKysgICAgICAgICAgICBORCA9IE5BRC0+Z2V0TmFtZXNwYWNlKCktPmdldENhbm9u aWNhbERlY2woKTsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworKyAgICAgIH0KKysgICAg ICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6OktpbmQ6OlR5cGU6CisrICAgICAgICBUcmF2ZXJz ZVR5cGVMb2MoTG9jLmdldEFzVHlwZUxvYygpKTsKKysgICAgICAgIGJyZWFrOworKyNlbmRpZgor ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICBicmVhazsKKyAgICAgfQorIAorQEAgLTc3MiwxNyAr ODY0LDI1IEBACisgICBzdGQ6OnN0cmluZyBOZXdOYW1lOworICAgVXNpbmdEZWNsICpEID0gZHlu X2Nhc3Q8VXNpbmdEZWNsPihVRC0+Z2V0SW50cm9kdWNlcigpKTsKKyAKKyAgIE5lc3RlZE5hbWVT cGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jID0gRC0+Z2V0UXVhbGlmaWVyTG9jKCk7CisrI2lmIExM Vk1fVkVSU0lPTl9NQUpPUiA8IDIyCisgICBOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMgPSBRdWFs aWZpZXJMb2MuZ2V0TmVzdGVkTmFtZVNwZWNpZmllcigpOworKyNlbHNlCisrICBOZXN0ZWROYW1l U3BlY2lmaWVyIE5OUyA9IFF1YWxpZmllckxvYy5nZXROZXN0ZWROYW1lU3BlY2lmaWVyKCk7Cisr I2VuZGlmCisgCisgICAvLyBRdWFsaWZpZXJMb2MgY291bGQgYmUgOjpmb28sIHdob3NlIFByZWZp eExvYyBpcyBpbnZhbGlkLCBlLmcuLAorICAgLy8gdm9pZCBmb28oKTsKKyAgIC8vIG5hbWVzcGFj ZSBOUzIgeworICAgLy8gICB1c2luZyA6OmZvbzsKKyAgIC8vICAgdm9pZCBiYXIgKCkgeyBmb28o KTsgfQorICAgLy8gfQorKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgaWYgKE5OUy0+ Z2V0S2luZCgpICE9IE5lc3RlZE5hbWVTcGVjaWZpZXI6Okdsb2JhbCkgeworKyNlbHNlCisrICBp ZiAoTk5TLmdldEtpbmQoKSAhPSBOZXN0ZWROYW1lU3BlY2lmaWVyOjpLaW5kOjpHbG9iYWwpIHsK KysjZW5kaWYKKyAgICAgLy8gTmVzdGVkTmFtZVNwZWNpZmllckxvYyBQcmVmaXhMb2MgPSBRdWFs aWZpZXJMb2MuZ2V0UHJlZml4KCk7CisgICAgIFJld3JpdGVIZWxwZXItPmdldFF1YWxpZmllckFz U3RyaW5nKFF1YWxpZmllckxvYywgTmV3TmFtZSk7CisgICB9CisgCitAQCAtMTEwMiwxNiArMTIw MiwyNiBAQAorIH0KKyAKKyBib29sIFJlbW92ZU5hbWVzcGFjZTo6aXNHbG9iYWxOYW1lc3BhY2Uo TmVzdGVkTmFtZVNwZWNpZmllckxvYyBMb2MpCisgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig PCAyMgorICAgTmVzdGVkTmFtZVNwZWNpZmllciAqTk5TID0gTG9jLmdldE5lc3RlZE5hbWVTcGVj aWZpZXIoKTsKKyAgIHJldHVybiAoTk5TLT5nZXRLaW5kKCkgPT0gTmVzdGVkTmFtZVNwZWNpZmll cjo6R2xvYmFsKTsKKysjZWxzZQorKyAgTmVzdGVkTmFtZVNwZWNpZmllciBOTlMgPSBMb2MuZ2V0 TmVzdGVkTmFtZVNwZWNpZmllcigpOworKyAgcmV0dXJuIChOTlMuZ2V0S2luZCgpID09IE5lc3Rl ZE5hbWVTcGVjaWZpZXI6OktpbmQ6Okdsb2JhbCk7CisrI2VuZGlmCisgfQorIAorIGJvb2wgUmVt b3ZlTmFtZXNwYWNlOjppc1RoZU5hbWVzcGFjZVNwZWNpZmllcihjb25zdCBOZXN0ZWROYW1lU3Bl Y2lmaWVyICpOTlMpCisgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgTmVzdGVk TmFtZVNwZWNpZmllcjo6U3BlY2lmaWVyS2luZCBLaW5kID0gTk5TLT5nZXRLaW5kKCk7CisrI2Vs c2UKKysgIE5lc3RlZE5hbWVTcGVjaWZpZXI6OktpbmQgS2luZCA9IE5OUy0+Z2V0S2luZCgpOwor KyNlbmRpZgorICAgc3dpdGNoIChLaW5kKSB7CisrI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDIy CisgICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6Ok5hbWVzcGFjZTogeworICAgICBjb25zdCBO YW1lc3BhY2VEZWNsICpDYW5vbmljYWxORCA9CisgICAgICAgTk5TLT5nZXRBc05hbWVzcGFjZSgp LT5nZXRDYW5vbmljYWxEZWNsKCk7CisgICAgIHJldHVybiAoQ2Fub25pY2FsTkQgPT0gVGhlTmFt ZXNwYWNlRGVjbCk7CitAQCAtMTEyNSw4ICsxMjM1LDIyIEBACisgICAgIGNvbnN0IE5hbWVzcGFj ZURlY2wgKkNhbm9uaWNhbE5EID0KKyAgICAgICBOQUQtPmdldE5hbWVzcGFjZSgpLT5nZXRDYW5v bmljYWxEZWNsKCk7CisgICAgIHJldHVybiAoQ2Fub25pY2FsTkQgPT0gVGhlTmFtZXNwYWNlRGVj bCk7CisgICB9CisrI2Vsc2UKKysgIGNhc2UgTmVzdGVkTmFtZVNwZWNpZmllcjo6S2luZDo6TmFt ZXNwYWNlOiB7CisrICAgIGNvbnN0IE5hbWVzcGFjZURlY2wqIENhbm9uaWNhbE5EID0gbnVsbHB0 cjsKKysgICAgaWYgKGF1dG8qIE5TID0gZHluX2Nhc3Q8TmFtZXNwYWNlRGVjbD4oCisrICAgICAg ICAgICAgTk5TLT5nZXRBc05hbWVzcGFjZUFuZFByZWZpeCgpLk5hbWVzcGFjZSkpIHsKKysgICAg ICBDYW5vbmljYWxORCA9IE5TLT5nZXRDYW5vbmljYWxEZWNsKCk7CisrICAgIH0gZWxzZSBpZiAo YXV0byogTkFEID0gZHluX2Nhc3Q8TmFtZXNwYWNlQWxpYXNEZWNsPigKKysgICAgICAgICAgICAg ICAgICAgIE5OUy0+Z2V0QXNOYW1lc3BhY2VBbmRQcmVmaXgoKS5OYW1lc3BhY2UpKSB7CisrICAg ICAgaWYgKE5BRC0+Z2V0UXVhbGlmaWVyKCkpIHJldHVybiBmYWxzZTsKKysgICAgICBDYW5vbmlj YWxORCA9IE5BRC0+Z2V0TmFtZXNwYWNlKCktPmdldENhbm9uaWNhbERlY2woKTsKKysgICAgfQor KyAgICByZXR1cm4gKENhbm9uaWNhbE5EID09IFRoZU5hbWVzcGFjZURlY2wpOworKyAgfQorKyNl bmRpZgorIAorICAgZGVmYXVsdDoKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorZGlmZiAtck5V NCBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvUmVtb3ZlTmVzdGVkRnVuY3Rpb24uY3Bw IGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZW1vdmVOZXN0ZWRGdW5jdGlvbi5jcHAKKy0tLSBj dmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvUmVtb3ZlTmVzdGVkRnVuY3Rpb24uY3BwCTIw MjUtMDktMjMgMjI6NTE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zpc2UtMi4xMi4wL2NsYW5n X2RlbHRhL1JlbW92ZU5lc3RlZEZ1bmN0aW9uLmNwcAkyMDI2LTA3LTE3IDEzOjUzOjQ1LjI4NzA2 ODEwNSArMDIwMAorQEAgLTI4MiwxMCArMjgyLDE1IEBACisgICAgIFRyYW5zQXNzZXJ0KCgoRE5h bWUuZ2V0TmFtZUtpbmQoKSA9PSBEZWNsYXJhdGlvbk5hbWU6OklkZW50aWZpZXIpIHx8CisgICAg ICAgICAgICAgICAgICAoRE5hbWUuZ2V0TmFtZUtpbmQoKSA9PSBEZWNsYXJhdGlvbk5hbWU6OkNY WE9wZXJhdG9yTmFtZSkpICYmCisgICAgICAgICAgICAgICAgICJOb3QgYW4gaW5kZW50aWZpZXIh Iik7CisgICAgIGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQgPSBOVUxMOworKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgPCAyMgorICAgICBpZiAoY29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciAqTk5TID0g VUUtPmdldFF1YWxpZmllcigpKSB7CisgICAgICAgaWYgKGNvbnN0IERlY2xDb250ZXh0ICpDdHgg PSBnZXREZWNsQ29udGV4dEZyb21TcGVjaWZpZXIoTk5TKSkgeworKyNlbHNlCisrICAgIGlmIChj b25zdCBOZXN0ZWROYW1lU3BlY2lmaWVyIE5OUyA9IFVFLT5nZXRRdWFsaWZpZXIoKSkgeworKyAg ICAgIGlmIChjb25zdCBEZWNsQ29udGV4dCAqQ3R4ID0gZ2V0RGVjbENvbnRleHRGcm9tU3BlY2lm aWVyKCZOTlMpKSB7CisrI2VuZGlmCisgICAgICAgICBEZWNsQ29udGV4dFNldCBWaXNpdGVkQ3R4 czsKKyAgICAgICAgIEZEID0gbG9va3VwRnVuY3Rpb25EZWNsKEROYW1lLCBDdHgsIFZpc2l0ZWRD dHhzKTsKKyAgICAgICB9CisgICAgIH0KK2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2Ns YW5nX2RlbHRhL1JlbW92ZVVudXNlZEZ1bmN0aW9uLmNwcCBjdmlzZS0yLjEyLjAvY2xhbmdfZGVs dGEvUmVtb3ZlVW51c2VkRnVuY3Rpb24uY3BwCistLS0gY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5n X2RlbHRhL1JlbW92ZVVudXNlZEZ1bmN0aW9uLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAw MDAwMCArMDIwMAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZW1vdmVVbnVzZWRGdW5j dGlvbi5jcHAJMjAyNi0wNy0xNyAxNDoxNDo0Mi4wODA1MzcwMjcgKzAyMDAKK0BAIC0yNTMsOSAr MjUzLDEzIEBACisgICB9CisgCisgICBpZiAoRkQtPmlzUmVmZXJlbmNlZCgpIHx8CisgICAgICAg RkQtPmlzTWFpbigpIHx8CisrI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA+IDIwCisrICAgICAgRkQt Pmhhc0F0dHI8RGV2aWNlS2VybmVsQXR0cj4oKSB8fAorKyNlbHNlCisgICAgICAgRkQtPmhhc0F0 dHI8T3BlbkNMS2VybmVsQXR0cj4oKSB8fAorKyNlbmRpZgorICAgICAgIENvbnN1bWVySW5zdGFu Y2UtPmhhc1JlZmVyZW5jZWRTcGVjaWFsaXphdGlvbihDYW5vbmljYWxGRCkgfHwKKyAgICAgICBD b25zdW1lckluc3RhbmNlLT5pc0lubGluZWRTeXN0ZW1GdW5jdGlvbihDYW5vbmljYWxGRCkgfHwK KyAgICAgICBDb25zdW1lckluc3RhbmNlLT5pc0luUmVmZXJlbmNlZFNldChDYW5vbmljYWxGRCkg fHwKKyAgICAgICAhQ29uc3VtZXJJbnN0YW5jZS0+aGFzQXRMZWFzdE9uZVZhbGlkTG9jYXRpb24o Q2Fub25pY2FsRkQpKQorQEAgLTc1NywyMyArNzYxLDM1IEBACisgeworICAgc3RkOjp1bm9yZGVy ZWRfc2V0PGNvbnN0IERlY2xDb250ZXh0ICo+IHNlZW5EZWNsYXJhdGlvbnM7CisgICBjb25zdCBG dW5jdGlvbkRlY2wgKkZEID0gTlVMTDsKKyAgIHN3aXRjaCAoTk5TLT5nZXRLaW5kKCkpIHsKKy0g IGNhc2UgTmVzdGVkTmFtZVNwZWNpZmllcjo6TmFtZXNwYWNlOgorLSAgICBGRCA9IGxvb2t1cEZ1 bmN0aW9uRGVjbFNoYWxsb3coTmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5OUy0+Z2V0QXNOYW1lc3BhY2UoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlZW5EZWNsYXJhdGlvbnMpOworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgor KyAgY2FzZSBOZXN0ZWROYW1lU3BlY2lmaWVyOjpOYW1lc3BhY2U6IHsKKysgICAgY29uc3QgRGVj bENvbnRleHQgKkRDID0gTk5TLT5nZXRBc05hbWVzcGFjZSgpOworKyAgICBGRCA9IGxvb2t1cEZ1 bmN0aW9uRGVjbFNoYWxsb3coTmFtZSwgREMsIHNlZW5EZWNsYXJhdGlvbnMpOworICAgICBicmVh azsKKy0gIGNhc2UgTmVzdGVkTmFtZVNwZWNpZmllcjo6TmFtZXNwYWNlQWxpYXM6CisrICB9Cisr ICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6Ok5hbWVzcGFjZUFsaWFzOiB7CisgICAgIEZEID0g bG9va3VwRnVuY3Rpb25EZWNsU2hhbGxvdyhOYW1lLAorICAgICAgICAgICAgTk5TLT5nZXRBc05h bWVzcGFjZUFsaWFzKCktPmdldE5hbWVzcGFjZSgpLAorICAgICAgICAgICAgc2VlbkRlY2xhcmF0 aW9ucyk7CisgICAgIGJyZWFrOworLSAgY2FzZSBOZXN0ZWROYW1lU3BlY2lmaWVyOjpHbG9iYWw6 CisrICB9CisrICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6Okdsb2JhbDogeworKyNlbHNlCisr ICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6OktpbmQ6Ok5hbWVzcGFjZTogeworKyAgICBjb25z dCBEZWNsQ29udGV4dCAqREMgPQorKyAgICAgICAgTk5TLT5nZXRBc05hbWVzcGFjZUFuZFByZWZp eCgpLk5hbWVzcGFjZS0+Z2V0RGVjbENvbnRleHQoKTsKKysgICAgRkQgPSBsb29rdXBGdW5jdGlv bkRlY2xTaGFsbG93KE5hbWUsIERDLCBzZWVuRGVjbGFyYXRpb25zKTsKKysgICAgYnJlYWs7Cisr ICB9CisrICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6OktpbmQ6Okdsb2JhbDogeworKyNlbmRp ZgorICAgICBGRCA9IGxvb2t1cEZ1bmN0aW9uRGVjbFNoYWxsb3coTmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQtPmdldFRyYW5zbGF0aW9uVW5pdERlY2wo KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5EZWNsYXJhdGlvbnMp OworICAgICBicmVhazsKKysgIH0KKyAgIGRlZmF1bHQ6CisgICAgIHJldHVybiBOVUxMOworICAg fQorICAgcmV0dXJuIEZEOworQEAgLTc4NSw5ICs4MDEsMTQgQEAKKyAgIGlmIChWaXNpdGVkVXNp bmdEZWNscy5jb3VudChVRCkpCisgICAgIHJldHVybjsKKyAKKyAgIFZpc2l0ZWRVc2luZ0RlY2xz Lmluc2VydChVRCk7CisrI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDIyCisgICBjb25zdCBOZXN0 ZWROYW1lU3BlY2lmaWVyICpOTlMgPSBVRC0+Z2V0UXVhbGlmaWVyKCk7CisrI2Vsc2UKKysgIGNv bnN0IE5lc3RlZE5hbWVTcGVjaWZpZXIgTk5TVmFsID0gVUQtPmdldFF1YWxpZmllcigpOworKyAg Y29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciAqTk5TID0gTk5TVmFsID8gJk5OU1ZhbCA6IG51bGxw dHI7CisrI2VuZGlmCisgICBpZiAoIU5OUykKKyAgICAgcmV0dXJuOworICAgRGVjbGFyYXRpb25O YW1lIE5hbWUgPSBVRC0+Z2V0VW5kZXJseWluZ0RlY2woKS0+Z2V0RGVjbE5hbWUoKTsKKyAgIGNv bnN0IEZ1bmN0aW9uRGVjbCAqRkQgPSBnZXRGdW5jdGlvbkRlY2xGcm9tU3BlY2lmaWVyKE5hbWUs IE5OUyk7CitAQCAtODQ0LDkgKzg2NSwxNCBAQAorICAgRGVjbGFyYXRpb25OYW1lOjpOYW1lS2lu ZCBLID0gRE5hbWUuZ2V0TmFtZUtpbmQoKTsKKyAgIGlmICgoSyAhPSBEZWNsYXJhdGlvbk5hbWU6 OkNYWE9wZXJhdG9yTmFtZSkgJiYKKyAgICAgICAoSyAhPSBEZWNsYXJhdGlvbk5hbWU6OklkZW50 aWZpZXIpKQorICAgICByZXR1cm47CisrI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDIyCisgICBj b25zdCBOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMgPSBFLT5nZXRRdWFsaWZpZXIoKTsKKysjZWxz ZQorKyAgY29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciBOTlNWYWwgPSBFLT5nZXRRdWFsaWZpZXIo KTsKKysgIGNvbnN0IE5lc3RlZE5hbWVTcGVjaWZpZXIgKk5OUyA9IE5OU1ZhbCA/ICZOTlNWYWwg OiBudWxscHRyOworKyNlbmRpZgorICAgLy8gd2UgZmFpbCBvbmx5IGlmIFVFIGlzIGludm9rZWQg d2l0aCBzb21lIHF1YWxpZmllciBvcgorICAgLy8gaW5zdGFudGlhdGlvbiwgZS5nLjoKKyAgIC8v IG5hbWVzcGFjZSBOUyB7IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZm9vKFQmKSB7IH0gfQor ICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBiYXIoVCBwKSB7IE5TOjpmb28ocCk7IH0K K2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL1JlbW92ZVVudXNlZE91 dGVyQ2xhc3MuY3BwIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZW1vdmVVbnVzZWRPdXRlckNs YXNzLmNwcAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9SZW1vdmVVbnVzZWRP dXRlckNsYXNzLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAwMDAwMCArMDIwMAorKysrIGN2 aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZW1vdmVVbnVzZWRPdXRlckNsYXNzLmNwcAkyMDI2LTA3 LTE3IDE0OjAwOjMzLjU2NjM1MDc3MyArMDIwMAorQEAgLTUyLDggKzUyLDkgQEAKKyAKKyBib29s IFJlbW92ZVVudXNlZE91dGVyQ2xhc3NWaXNpdG9yOjpWaXNpdFJlY29yZFR5cGVMb2MoUmVjb3Jk VHlwZUxvYyBUTG9jKQorIHsKKyAgIGNvbnN0IENYWFJlY29yZERlY2wgKlJEID0gZHluX2Nhc3Q8 Q1hYUmVjb3JkRGVjbD4oVExvYy5nZXREZWNsKCkpOworKworICAgQ29uc3VtZXJJbnN0YW5jZS0+ VXNlZENYWFJEU2V0Lmluc2VydChSRC0+Z2V0Q2Fub25pY2FsRGVjbCgpKTsKKyAgIHJldHVybiB0 cnVlOworIH0KKyAKK2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL1Jl bW92ZVVudXNlZFN0cnVjdEZpZWxkLmNwcCBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvUmVtb3Zl VW51c2VkU3RydWN0RmllbGQuY3BwCistLS0gY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRh L1JlbW92ZVVudXNlZFN0cnVjdEZpZWxkLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAwMDAw MCArMDIwMAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZW1vdmVVbnVzZWRTdHJ1Y3RG aWVsZC5jcHAJMjAyNi0wNy0xNyAxNDowMDozMy41NjY0NDI1NDYgKzAyMDAKK0BAIC0zMjYsOCAr MzI2LDkgQEAKKyAgICAgVHJhbnNBc3NlcnQoMCAmJiAiQmFkIFJlY29yZFR5cGUhIik7CisgICB9 CisgCisgICBjb25zdCBSZWNvcmREZWNsICpSRCA9IFJULT5nZXREZWNsKCk7CisrCisgICB1bnNp Z25lZCBpbnQgVmVjU3ogPSBJZHhWZWMtPnNpemUoKTsKKyAgIGZvciAoSW5kZXhWZWN0b3I6OmNv bnN0X2l0ZXJhdG9yIEZJID0gSWR4VmVjLT5iZWdpbigpLAorICAgICAgICBGRSA9IElkeFZlYy0+ ZW5kKCk7IEZJICE9IEZFOyArK0ZJKQorICAgeworQEAgLTQwNyw5ICs0MDgsMTEgQEAKKyAgIGlm ICghVHktPmlzU3RydWN0dXJlVHlwZSgpKQorICAgICByZXR1cm4gTlVMTDsKKyAKKyAgIGNvbnN0 IFJlY29yZFR5cGUgKlJUID0gVHktPmdldEFzU3RydWN0dXJlVHlwZSgpOworLSAgcmV0dXJuIFJU LT5nZXREZWNsKCktPmdldERlZmluaXRpb24oKTsKKysgIGNvbnN0IFJlY29yZERlY2wgKlJEID0g UlQtPmdldERlY2woKTsKKysKKysgIHJldHVybiBSRC0+Z2V0RGVmaW5pdGlvbigpOworIH0KKyAK KyB2b2lkIFJlbW92ZVVudXNlZFN0cnVjdEZpZWxkOjpyZW1vdmVGaWVsZERlY2wodm9pZCkKKyB7 CitkaWZmIC1yTlU0IGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9SZW5hbWVGdW4uY3Bw IGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZW5hbWVGdW4uY3BwCistLS0gY3Zpc2UtMi4xMi4w LS1vcmlnL2NsYW5nX2RlbHRhL1JlbmFtZUZ1bi5jcHAJMjAyNS0wOS0yMyAyMjo1MToyOS4wMDAw MDAwMDAgKzAyMDAKKysrKyBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvUmVuYW1lRnVuLmNwcAky MDI2LTA3LTE3IDE0OjE0OjQyLjA4MDc5MzQyMCArMDIwMAorQEAgLTI2MCw5ICsyNjAsMTUgQEAK KyB2b2lkIFJlbmFtZUZ1bjo6YWRkRnVuKGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpCisgeworICAg c3RkOjpzdHJpbmcgTmFtZSA9IEZELT5nZXROYW1lQXNTdHJpbmcoKTsKKyAgIC8vIFNraXAgc3Bl Y2lhbCBmdW5jdGlvbnMKKy0gIGlmIChpc1NwZWNpYWxGdW4oTmFtZSkgfHwgRkQtPmhhc0F0dHI8 T3BlbkNMS2VybmVsQXR0cj4oKSkKKysgIGlmIChpc1NwZWNpYWxGdW4oTmFtZSkgfHwKKysjaWYg TExWTV9WRVJTSU9OX01BSk9SID4gMjAKKysgICAgICBGRC0+aGFzQXR0cjxEZXZpY2VLZXJuZWxB dHRyPigpCisrI2Vsc2UKKysgICAgICBGRC0+aGFzQXR0cjxPcGVuQ0xLZXJuZWxBdHRyPigpCisr I2VuZGlmCisrICAgICApCisgICAgIEZ1blRvTmFtZU1hcFtGRF0gPSBOYW1lOworIAorICAgaWYg KEZ1blRvTmFtZU1hcC5maW5kKEZEKSAhPSBGdW5Ub05hbWVNYXAuZW5kKCkpCisgICAgIHJldHVy bjsKK2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL1JlcGxhY2VDbGFz c1dpdGhCYXNlVGVtcGxhdGVTcGVjLmNwcCBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvUmVwbGFj ZUNsYXNzV2l0aEJhc2VUZW1wbGF0ZVNwZWMuY3BwCistLS0gY3Zpc2UtMi4xMi4wLS1vcmlnL2Ns YW5nX2RlbHRhL1JlcGxhY2VDbGFzc1dpdGhCYXNlVGVtcGxhdGVTcGVjLmNwcAkyMDI1LTA5LTIz IDIyOjUxOjI5LjAwMDAwMDAwMCArMDIwMAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9S ZXBsYWNlQ2xhc3NXaXRoQmFzZVRlbXBsYXRlU3BlYy5jcHAJMjAyNi0wNy0xNyAxNDowMDozMy41 NjY1NDI3OTUgKzAyMDAKK0BAIC03OSw4ICs3OSw5IEBACisgICBpZiAoVHktPmlzVW5pb25UeXBl KCkpCisgICAgIHJldHVybiB0cnVlOworIAorICAgY29uc3QgQ1hYUmVjb3JkRGVjbCAqUkQgPSBk eW5fY2FzdDxDWFhSZWNvcmREZWNsPihUTG9jLmdldERlY2woKSk7CisrCisgICBpZiAoIVJEIHx8 IChSRC0+Z2V0Q2Fub25pY2FsRGVjbCgpICE9IENvbnN1bWVySW5zdGFuY2UtPlRoZUNYWFJlY29y ZCkpCisgICAgIHJldHVybiB0cnVlOworIAorICAgQ29uc3VtZXJJbnN0YW5jZS0+UmV3cml0ZUhl bHBlci0+cmVwbGFjZVJlY29yZFR5cGUoCitkaWZmIC1yTlU0IGN2aXNlLTIuMTIuMC0tb3JpZy9j bGFuZ19kZWx0YS9SZXBsYWNlRGVwZW5kZW50TmFtZS5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2Rl bHRhL1JlcGxhY2VEZXBlbmRlbnROYW1lLmNwcAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFu Z19kZWx0YS9SZXBsYWNlRGVwZW5kZW50TmFtZS5jcHAJMjAyNS0wOS0yMyAyMjo1MToyOS4wMDAw MDAwMDAgKzAyMDAKKysrKyBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvUmVwbGFjZURlcGVuZGVu dE5hbWUuY3BwCTIwMjYtMDctMTcgMTM6NTM6NDUuMjg3NjM4MDU5ICswMjAwCitAQCAtNTQsMTQg KzU0LDE2IEBACisgICBDb25zdW1lckluc3RhbmNlLT5oYW5kbGVPbmVEZXBlbmRlbnROYW1lVHlw ZUxvYyhUTG9jKTsKKyAgIHJldHVybiB0cnVlOworIH0KKyAKKysjaWYgTExWTV9WRVJTSU9OX01B Sk9SIDwgMjIKKyBib29sIFJlcGxhY2VEZXBlbmRlbnROYW1lQ29sbGVjdGlvblZpc2l0b3I6OlZp c2l0RWxhYm9yYXRlZFR5cGVMb2MoCisgICAgICAgIEVsYWJvcmF0ZWRUeXBlTG9jIFRMb2MpCisg eworICAgQ29uc3VtZXJJbnN0YW5jZS0+aGFuZGxlT25lRWxhYm9yYXRlZFR5cGVMb2MoVExvYyk7 CisgICByZXR1cm4gdHJ1ZTsKKyB9CisrI2VuZGlmCisgCisgdm9pZCBSZXBsYWNlRGVwZW5kZW50 TmFtZTo6SW5pdGlhbGl6ZShBU1RDb250ZXh0ICZjb250ZXh0KSAKKyB7CisgICBUcmFuc2Zvcm1h dGlvbjo6SW5pdGlhbGl6ZShjb250ZXh0KTsKK0BAIC05Myw4ICs5NSw5IEBACisgICAgICAgQ3R4 LmdldERpYWdub3N0aWNzKCkuaGFzRmF0YWxFcnJvck9jY3VycmVkKCkpCisgICAgIFRyYW5zRXJy b3IgPSBUcmFuc0ludGVybmFsRXJyb3I7CisgfQorIAorKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig PCAyMgorIFNvdXJjZUxvY2F0aW9uIFJlcGxhY2VEZXBlbmRlbnROYW1lOjpnZXRFbGFib3JhdGVk VHlwZUxvY0JlZ2luKAorICAgICAgICAgICAgICAgICAgY29uc3QgRWxhYm9yYXRlZFR5cGVMb2Mg JlRMb2MpCisgeworICAgU291cmNlTG9jYXRpb24gTG9jID0gVExvYy5nZXRFbGFib3JhdGVkS2V5 d29yZExvYygpOworQEAgLTE0OSw4ICsxNTIsOSBAQAorICAgICBUaGVMb2NCZWdpbiA9IGdldEVs YWJvcmF0ZWRUeXBlTG9jQmVnaW4oVExvYyk7CisgICAgIFRoZU5hbWVMb2NFbmQgPSBUTG9jLmdl dEVuZExvYygpOworICAgfQorIH0KKysjZW5kaWYKKyAKKyB2b2lkIFJlcGxhY2VEZXBlbmRlbnRO YW1lOjpoYW5kbGVPbmVEZXBlbmRlbnROYW1lVHlwZUxvYygKKyAgICAgICAgY29uc3QgRGVwZW5k ZW50TmFtZVR5cGVMb2MgJlRMb2MpCisgeworZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcv Y2xhbmdfZGVsdGEvUmVwbGFjZURlcGVuZGVudFR5cGVkZWYuY3BwIGN2aXNlLTIuMTIuMC9jbGFu Z19kZWx0YS9SZXBsYWNlRGVwZW5kZW50VHlwZWRlZi5jcHAKKy0tLSBjdmlzZS0yLjEyLjAtLW9y aWcvY2xhbmdfZGVsdGEvUmVwbGFjZURlcGVuZGVudFR5cGVkZWYuY3BwCTIwMjUtMDktMjMgMjI6 NTE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1JlcGxh Y2VEZXBlbmRlbnRUeXBlZGVmLmNwcAkyMDI2LTA3LTE3IDEzOjUzOjQ1LjI4NzcyOTU3MSArMDIw MAorQEAgLTQ0LDEzICs0NCw2NiBAQAorIAorIHN0YXRpYyBSZWdpc3RlclRyYW5zZm9ybWF0aW9u PFJlcGxhY2VEZXBlbmRlbnRUeXBlZGVmPgorICAgICAgICAgIFRyYW5zKCJyZXBsYWNlLWRlcGVu ZGVudC10eXBlZGVmIiwgRGVzY3JpcHRpb25Nc2cpOworIAorK3N0YXRpYyBib29sIERlcGVuZHNP blR5cGVkZWYoY29uc3QgVHlwZSAmVHkpIHsKKysgIHN3aXRjaCAoVHkuZ2V0VHlwZUNsYXNzKCkp IHsKKysgIGNhc2UgVHlwZTo6U3Vic3RUZW1wbGF0ZVR5cGVQYXJtOiB7CisrICAgIGNvbnN0IFN1 YnN0VGVtcGxhdGVUeXBlUGFybVR5cGUgKlRQID0KKysgICAgICBkeW5fY2FzdDxTdWJzdFRlbXBs YXRlVHlwZVBhcm1UeXBlPigmVHkpOworKyAgICBjb25zdCBUeXBlICpSZXBsVHkgPSBUUC0+Z2V0 UmVwbGFjZW1lbnRUeXBlKCkuZ2V0VHlwZVB0cigpOworKyAgICByZXR1cm4gRGVwZW5kc09uVHlw ZWRlZigqUmVwbFR5KTsKKysgIH0KKysKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKysg IGNhc2UgVHlwZTo6RWxhYm9yYXRlZDogeworKyAgICBjb25zdCBFbGFib3JhdGVkVHlwZSAqRVR5 ID0gZHluX2Nhc3Q8RWxhYm9yYXRlZFR5cGU+KCZUeSk7CisrICAgIGNvbnN0IFR5cGUgKk5hbWVk VHkgPSBFVHktPmdldE5hbWVkVHlwZSgpLmdldFR5cGVQdHIoKTsKKysgICAgcmV0dXJuIERlcGVu ZHNPblR5cGVkZWYoKk5hbWVkVHkpOworKyAgfQorKyNlbmRpZgorKworKyAgY2FzZSBUeXBlOjpU eXBlZGVmOiB7CisrICAgIHJldHVybiB0cnVlOworKyAgfQorKworKyAgY2FzZSBUeXBlOjpEZXBl bmRlbnROYW1lOiB7CisrICAgIGNvbnN0IERlcGVuZGVudE5hbWVUeXBlICpETlQgPSBkeW5fY2Fz dDxEZXBlbmRlbnROYW1lVHlwZT4oJlR5KTsKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIK KysgICAgY29uc3QgTmVzdGVkTmFtZVNwZWNpZmllciAqU3BlY2lmaWVyID0gRE5ULT5nZXRRdWFs aWZpZXIoKTsKKysjZWxzZQorKyAgICBjb25zdCBOZXN0ZWROYW1lU3BlY2lmaWVyIFNwZWNpZmll ciA9IEROVC0+Z2V0UXVhbGlmaWVyKCk7CisrI2VuZGlmCisrICAgIGlmICghU3BlY2lmaWVyKQor KyAgICAgIHJldHVybiBmYWxzZTsKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKysgICAg Y29uc3QgVHlwZSAqTmVzdGVkVHkgPSBTcGVjaWZpZXItPmdldEFzVHlwZSgpOworKyNlbHNlCisr ICAgIGNvbnN0IFR5cGUgKk5lc3RlZFR5ID0gU3BlY2lmaWVyLmdldEFzVHlwZSgpOworKyNlbmRp ZgorKyAgICBpZiAoIU5lc3RlZFR5KQorKyAgICAgIHJldHVybiBmYWxzZTsKKysgICAgcmV0dXJu IERlcGVuZHNPblR5cGVkZWYoKk5lc3RlZFR5KTsKKysgIH0KKysKKysgIGNhc2UgVHlwZTo6UmVj b3JkOgorKyAgY2FzZSBUeXBlOjpCdWlsdGluOiB7IC8vIGZhbGwtdGhyb3VnaAorKyAgICByZXR1 cm4gZmFsc2U7CisrICB9CisrCisrICBkZWZhdWx0OgorKyAgICByZXR1cm4gZmFsc2U7CisrICB9 CisrCisrICBUcmFuc0Fzc2VydCgwICYmICJVbnJlYWNoYWJsZSBjb2RlISIpOworKyAgcmV0dXJu IGZhbHNlOworK30KKysKKyBjbGFzcyBSZXBsYWNlRGVwZW5kZW50VHlwZWRlZkNvbGxlY3Rpb25W aXNpdG9yIDogcHVibGljCisgICBSZWN1cnNpdmVBU1RWaXNpdG9yPFJlcGxhY2VEZXBlbmRlbnRU eXBlZGVmQ29sbGVjdGlvblZpc2l0b3I+IHsKKyAKKyBwdWJsaWM6CistICBleHBsaWNpdCAKKysg IGV4cGxpY2l0CisgICBSZXBsYWNlRGVwZW5kZW50VHlwZWRlZkNvbGxlY3Rpb25WaXNpdG9yKFJl cGxhY2VEZXBlbmRlbnRUeXBlZGVmICpJbnN0YW5jZSkKKyAgICAgOiBDb25zdW1lckluc3RhbmNl KEluc3RhbmNlKQorICAgeyB9CisgCitAQCAtNjAsMTYgKzExMywxNiBAQAorICAgUmVwbGFjZURl cGVuZGVudFR5cGVkZWYgKkNvbnN1bWVySW5zdGFuY2U7CisgCisgfTsKKyAKKy1ib29sIAorK2Jv b2wKKyBSZXBsYWNlRGVwZW5kZW50VHlwZWRlZkNvbGxlY3Rpb25WaXNpdG9yOjpWaXNpdFR5cGVk ZWZOYW1lRGVjbChUeXBlZGVmTmFtZURlY2wgKkQpCisgeworICAgQ29uc3VtZXJJbnN0YW5jZS0+ aGFuZGxlT25lVHlwZWRlZkRlY2woRCk7CisgICByZXR1cm4gdHJ1ZTsKKyB9CisgCistdm9pZCBS ZXBsYWNlRGVwZW5kZW50VHlwZWRlZjo6SW5pdGlhbGl6ZShBU1RDb250ZXh0ICZjb250ZXh0KSAK Kyt2b2lkIFJlcGxhY2VEZXBlbmRlbnRUeXBlZGVmOjpJbml0aWFsaXplKEFTVENvbnRleHQgJmNv bnRleHQpCisgeworICAgVHJhbnNmb3JtYXRpb246OkluaXRpYWxpemUoY29udGV4dCk7CisgICBD b2xsZWN0aW9uVmlzaXRvciA9IG5ldyBSZXBsYWNlRGVwZW5kZW50VHlwZWRlZkNvbGxlY3Rpb25W aXNpdG9yKHRoaXMpOworIH0KK0BAIC0xMTAsOCArMTYzLDkgQEAKKyAgIGNhc2UgVHlwZTo6VHlw ZWRlZjoKKyAgIGNhc2UgVHlwZTo6RGVwZW5kZW50TmFtZTogLy8gZmFsbC10aHJvdWdoCisgICAg IHJldHVybiB0cnVlOworIAorKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgY2FzZSBU eXBlOjpFbGFib3JhdGVkOiB7CisgICAgIGNvbnN0IEVsYWJvcmF0ZWRUeXBlICpFVHkgPSBkeW5f Y2FzdDxFbGFib3JhdGVkVHlwZT4oVHkpOworICAgICBFbGFib3JhdGVkVHlwZUtleXdvcmQgS2V5 d29yZCA9IEVUeS0+Z2V0S2V5d29yZCgpOworIAorQEAgLTEyMCw5ICsxNzQsMTAgQEAKKyAjZWxz ZQorICAgICByZXR1cm4gKChLZXl3b3JkID09IEVUS19UeXBlbmFtZSkgfHwgKEtleXdvcmQgPT0g RVRLX05vbmUpKTsKKyAjZW5kaWYKKyAgIH0KKy0gIAorKyNlbmRpZgorKworICAgZGVmYXVsdDoK KyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorIAorQEAgLTEzNiw4ICsxOTEsMTAgQEAKKyAgICAg cmV0dXJuOworIAorICAgaWYgKCFpc1ZhbGlkVHlwZShELT5nZXRVbmRlcmx5aW5nVHlwZSgpKSkK KyAgICAgcmV0dXJuOworKyAgaWYgKCFEZXBlbmRzT25UeXBlZGVmKCpELT5nZXRVbmRlcmx5aW5n VHlwZSgpKSkKKysgICAgcmV0dXJuOworIAorICAgc3RkOjpzdHJpbmcgU3RyID0gIiI7CisgICBi b29sIFR5cGVuYW1lID0gZmFsc2U7CisgICBpZiAoIWdldFR5cGVTdHJpbmcoRC0+Z2V0VW5kZXJs eWluZ1R5cGUoKSwgU3RyLCBUeXBlbmFtZSkpCitkaWZmIC1yTlU0IGN2aXNlLTIuMTIuMC0tb3Jp Zy9jbGFuZ19kZWx0YS9SZXBsYWNlU2ltcGxlVHlwZWRlZi5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5n X2RlbHRhL1JlcGxhY2VTaW1wbGVUeXBlZGVmLmNwcAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9j bGFuZ19kZWx0YS9SZXBsYWNlU2ltcGxlVHlwZWRlZi5jcHAJMjAyNS0wOS0yMyAyMjo1MToyOS4w MDAwMDAwMDAgKzAyMDAKKysrKyBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvUmVwbGFjZVNpbXBs ZVR5cGVkZWYuY3BwCTIwMjYtMDctMTcgMTQ6MDA6MzMuNTY2NjMyMTA0ICswMjAwCitAQCAtNTcs OSArNTcsMTEgQEAKKyAgIHsgfQorIAorICAgYm9vbCBWaXNpdFR5cGVkZWZUeXBlTG9jKFR5cGVk ZWZUeXBlTG9jIExvYyk7CisgCisrI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDIyCisgICBib29s IFZpc2l0RWxhYm9yYXRlZFR5cGVMb2MoRWxhYm9yYXRlZFR5cGVMb2MgTG9jKTsKKysjZW5kaWYK KyAKKyBwcml2YXRlOgorICAgUmVwbGFjZVNpbXBsZVR5cGVkZWYgKkNvbnN1bWVySW5zdGFuY2U7 CisgCitAQCAtOTYsOCArOTgsOSBAQAorICAgfQorICAgcmV0dXJuIHRydWU7CisgfQorIAorKyNp ZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorIC8vIEhhbmRsZSBjYXNlcyBsaWtlOgorIC8vIHN0 cnVjdCBTIHsKKyAvLyAgIHR5cGVkZWYgaW50IEludDsKKyAvLyB9OworQEAgLTEyNCw4ICsxMjcs OSBAQAorICAgICBDb25zdW1lckluc3RhbmNlLT5SZXdyaXR0ZW4gPSB0cnVlOworICAgfQorICAg cmV0dXJuIHRydWU7CisgfQorKyNlbmRpZgorIAorIHZvaWQgUmVwbGFjZVNpbXBsZVR5cGVkZWY6 OkluaXRpYWxpemUoQVNUQ29udGV4dCAmY29udGV4dCkgCisgeworICAgVHJhbnNmb3JtYXRpb246 OkluaXRpYWxpemUoY29udGV4dCk7CitAQCAtMTc3LDggKzE4MSw5IEBACisgICAgIHJldHVybiB0 cnVlOworIAorICAgaWYgKGNvbnN0IFJlY29yZFR5cGUgKlJEVHkgPSBUeS0+Z2V0QXM8UmVjb3Jk VHlwZT4oKSkgeworICAgICBjb25zdCBSZWNvcmREZWNsICpSRCA9IFJEVHktPmdldERlY2woKTsK KysKKyAgICAgLy8gb21pdCBzb21lIHRyaXZpYWwgY2FzZXMsIGUuZy4sCisgICAgIC8vIHR5cGVk ZWYgc3RydWN0IFMgeyBpbnQgeDsgfSBTOworICAgICBpZiAoUkQtPmdldE5hbWVBc1N0cmluZygp ID09IEQtPmdldE5hbWVBc1N0cmluZygpKQorICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLXJO VTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL1Jld3JpdGVVdGlscy5jcHAgY3Zpc2Ut Mi4xMi4wL2NsYW5nX2RlbHRhL1Jld3JpdGVVdGlscy5jcHAKKy0tLSBjdmlzZS0yLjEyLjAtLW9y aWcvY2xhbmdfZGVsdGEvUmV3cml0ZVV0aWxzLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAwMDAw MDAwMCArMDIwMAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9SZXdyaXRlVXRpbHMuY3Bw CTIwMjYtMDctMTcgMTQ6MDk6MjAuODYwNjM2MjQ4ICswMjAwCitAQCAtMTcwMiw5ICsxNzAyLDEz IEBACisgICBjb25zdCBJZGVudGlmaWVySW5mbyAqVHlwZUlkID0gUlRMb2MuZ2V0VHlwZSgpLmdl dEJhc2VUeXBlSWRlbnRpZmllcigpOworICAgaWYgKCFUeXBlSWQpCisgICAgIHJldHVybiB0cnVl OworIAorKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgU291cmNlTG9jYXRpb24gTG9j U3RhcnQgPSBSVExvYy5nZXRCZWdpbkxvYygpOworKyNlbHNlCisrICBTb3VyY2VMb2NhdGlvbiBM b2NTdGFydCA9IFJUTG9jLmdldE5hbWVMb2MoKTsKKysjZW5kaWYKKyAKKyAgIC8vIExvYyBjb3Vs ZCBiZSBpbnZhbGlkLCBmb3IgZXhhbXBsZToKKyAgIC8vIGNsYXNzIEFBQSB7IH07CisgICAvLyBj bGFzcyBCQkI6QUFBIHsKK2RpZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRh L1NpbXBsaWZ5RGVwZW5kZW50VHlwZWRlZi5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1Np bXBsaWZ5RGVwZW5kZW50VHlwZWRlZi5jcHAKKy0tLSBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdf ZGVsdGEvU2ltcGxpZnlEZXBlbmRlbnRUeXBlZGVmLmNwcAkyMDI1LTA5LTIzIDIyOjUxOjI5LjAw MDAwMDAwMCArMDIwMAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9TaW1wbGlmeURlcGVu ZGVudFR5cGVkZWYuY3BwCTIwMjYtMDctMTcgMTM6NTM6NDUuMjg4MTUzMjIwICswMjAwCitAQCAt MjAyLDEzICsyMDIsMTkgQEAKKyAKKyAgIFF1YWxUeXBlIFFUID0gQ2Fub25pY2FsRC0+Z2V0VW5k ZXJseWluZ1R5cGUoKTsKKyAgIGNvbnN0IFR5cGUgKlR5ID0gUVQuZ2V0VHlwZVB0cigpOworICAg VHlwZTo6VHlwZUNsYXNzIFRDID0gVHktPmdldFR5cGVDbGFzcygpOworKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgPCAyMgorICAgaWYgKChUQyAhPSBUeXBlOjpEZXBlbmRlbnROYW1lKSAmJgorICAg ICAgIChUQyAhPSBUeXBlOjpEZXBlbmRlbnRUZW1wbGF0ZVNwZWNpYWxpemF0aW9uKSAmJgorICAg ICAgIChUQyAhPSBUeXBlOjpUZW1wbGF0ZVNwZWNpYWxpemF0aW9uKSAmJgorICAgICAgIChUQyAh PSBUeXBlOjpFbGFib3JhdGVkKSkKKyAgICAgcmV0dXJuOworKyNlbHNlCisrICBpZiAoKFRDICE9 IFR5cGU6OkRlcGVuZGVudE5hbWUpICYmCisrICAgICAgKFRDICE9IFR5cGU6OlRlbXBsYXRlU3Bl Y2lhbGl6YXRpb24pKQorKyAgICByZXR1cm47CisrI2VuZGlmCisgCisgICBUZW1wbGF0ZVR5cGVQ YXJtVHlwZVZpc2l0b3ItPnNldFR5cGVTZXQoJlR5cGVTZXQpOworICAgVGVtcGxhdGVUeXBlUGFy bVR5cGVWaXNpdG9yLT5zZXRWYWxpZFR5cGUoZmFsc2UpOworICAgVGVtcGxhdGVUeXBlUGFybVR5 cGVWaXNpdG9yLT5UcmF2ZXJzZVR5cGUoUVQpOworZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9y aWcvY2xhbmdfZGVsdGEvU2ltcGxpZnlOZXN0ZWRDbGFzcy5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5n X2RlbHRhL1NpbXBsaWZ5TmVzdGVkQ2xhc3MuY3BwCistLS0gY3Zpc2UtMi4xMi4wLS1vcmlnL2Ns YW5nX2RlbHRhL1NpbXBsaWZ5TmVzdGVkQ2xhc3MuY3BwCTIwMjUtMDktMjMgMjI6NTE6MjkuMDAw MDAwMDAwICswMjAwCisrKysgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1NpbXBsaWZ5TmVzdGVk Q2xhc3MuY3BwCTIwMjYtMDctMTcgMTQ6MDA6MzMuNTY2NzIwMjIwICswMjAwCitAQCAtNzcsOCAr NzcsOSBAQAorIAorIGJvb2wgU2ltcGxpZnlOZXN0ZWRDbGFzc1Jld3JpdGVWaXNpdG9yOjpWaXNp dFJlY29yZFR5cGVMb2MoUmVjb3JkVHlwZUxvYyBUTG9jKQorIHsKKyAgIGNvbnN0IENYWFJlY29y ZERlY2wgKlJEID0gZHluX2Nhc3Q8Q1hYUmVjb3JkRGVjbD4oVExvYy5nZXREZWNsKCkpOworKwor ICAgaWYgKCFSRCB8fCAoUkQtPmdldENhbm9uaWNhbERlY2woKSAhPSAKKyAgICAgICAgICAgICAg IENvbnN1bWVySW5zdGFuY2UtPlRoZUJhc2VDWFhSRC0+Z2V0Q2Fub25pY2FsRGVjbCgpKSkKKyAg ICAgcmV0dXJuIHRydWU7CisgCitkaWZmIC1yTlU0IGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19k ZWx0YS9TaW1wbGlmeVN0cnVjdC5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1NpbXBsaWZ5 U3RydWN0LmNwcAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9TaW1wbGlmeVN0 cnVjdC5jcHAJMjAyNS0wOS0yMyAyMjo1MToyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjdmlzZS0y LjEyLjAvY2xhbmdfZGVsdGEvU2ltcGxpZnlTdHJ1Y3QuY3BwCTIwMjYtMDctMTcgMTQ6MDA6MzMu NTY2ODEzMzc1ICswMjAwCitAQCAtOTksOCArOTksOSBAQAorICAgaWYgKCFSVCkKKyAgICAgcmV0 dXJuIHRydWU7CisgCisgICBjb25zdCBSZWNvcmREZWNsICpOZXN0ZWRSRCA9IFJULT5nZXREZWNs KCk7CisrCisgICBpZiAoTmVzdGVkUkQtPmdldE5hbWVBc1N0cmluZygpID09ICIiKQorICAgICBy ZXR1cm4gdHJ1ZTsKKyAKKyAgIENvbnN1bWVySW5zdGFuY2UtPlZhbGlkSW5zdGFuY2VOdW0rKzsK K0BAIC0xMjYsOCArMTI3LDkgQEAKKyAgIGlmICghUlQpCisgICAgIHJldHVybiB0cnVlOworIAor ICAgY29uc3QgUmVjb3JkRGVjbCAqUkQgPSBSVC0+Z2V0RGVjbCgpOworKworICAgaWYgKFJEICE9 IENvbnN1bWVySW5zdGFuY2UtPlRoZVJlY29yZERlY2wpCisgICAgIHJldHVybiB0cnVlOworIAor ICAgU291cmNlTG9jYXRpb24gTG9jU3RhcnQgPSBWRC0+Z2V0QmVnaW5Mb2MoKTsKK0BAIC0xODIs OCArMTg0LDkgQEAKKyAgIGlmIChUeS0+aXNVbmlvblR5cGUoKSkKKyAgICAgcmV0dXJuIHRydWU7 CisgCisgICBSZWNvcmREZWNsICpSRCA9IFJUTG9jLmdldERlY2woKTsKKysKKyAgIFJlY29yZERl Y2wgKkNhbm9uaWNhbFJEID0gZHluX2Nhc3Q8UmVjb3JkRGVjbD4oUkQtPmdldENhbm9uaWNhbERl Y2woKSk7CisgICBpZiAoQ2Fub25pY2FsUkQgIT0gQ29uc3VtZXJJbnN0YW5jZS0+VGhlUmVjb3Jk RGVjbCkKKyAgICAgcmV0dXJuIHRydWU7CisgCitAQCAtMjE3LDEwICsyMjAsMTEgQEAKKyAKKyAg IGNvbnN0IFR5cGUgKlQgPSBGRC0+Z2V0VHlwZSgpLmdldFR5cGVQdHIoKTsKKyAgIGNvbnN0IFJl Y29yZFR5cGUgKlJUID0gVC0+Z2V0QXM8UmVjb3JkVHlwZT4oKTsKKyAgIFRyYW5zQXNzZXJ0KFJU ICYmICJJbnZhbGlkIHJlY29yZCB0eXBlISIpOworLSAgY29uc3QgUmVjb3JkRGVjbCAqUmVwbGFj aW5nUkQgPSAKKy0gICAgZHluX2Nhc3Q8UmVjb3JkRGVjbD4oUlQtPmdldERlY2woKS0+Z2V0Q2Fu b25pY2FsRGVjbCgpKTsKKysgIFJlY29yZERlY2wgKlJURCA9IFJULT5nZXREZWNsKCk7CisrCisr ICBjb25zdCBSZWNvcmREZWNsICpSZXBsYWNpbmdSRCA9IGR5bl9jYXN0PFJlY29yZERlY2w+KFJU RC0+Z2V0Q2Fub25pY2FsRGVjbCgpKTsKKyAgICh2b2lkKVJlcGxhY2luZ1JEOyAKKyAgIFRyYW5z QXNzZXJ0KChSZXBsYWNpbmdSRCA9PSBDb25zdW1lckluc3RhbmNlLT5SZXBsYWNpbmdSZWNvcmRE ZWNsKSAmJiAKKyAgICAgIlVubWF0Y2hlZCBSZXBsYWNpbmcgUkQhIik7CisgCitkaWZmIC1yTlU0 IGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9TaW1wbGlmeVN0cnVjdFVuaW9uRGVjbC5j cHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1NpbXBsaWZ5U3RydWN0VW5pb25EZWNsLmNwcAor LS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9TaW1wbGlmeVN0cnVjdFVuaW9uRGVj bC5jcHAJMjAyNS0wOS0yMyAyMjo1MToyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjdmlzZS0yLjEy LjAvY2xhbmdfZGVsdGEvU2ltcGxpZnlTdHJ1Y3RVbmlvbkRlY2wuY3BwCTIwMjYtMDctMTcgMTQ6 MDA6MzMuNTY2OTExMDgwICswMjAwCitAQCAtMjIwLDggKzIyMCw5IEBACisgICBlbHNlCisgICAg IHJldHVybiBOVUxMOworIAorICAgcmV0dXJuIFJULT5nZXREZWNsKCk7CisrCisgfQorIAorIGJv b2wgU2ltcGxpZnlTdHJ1Y3RVbmlvbkRlY2w6OmhhbmRsZU9uZURlY2xhcmF0b3IoY29uc3QgVHlw ZSAqVHkpCisgeworZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvVGVt cGxhdGVBcmdUb0ludC5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1RlbXBsYXRlQXJnVG9J bnQuY3BwCistLS0gY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL1RlbXBsYXRlQXJnVG9J bnQuY3BwCTIwMjUtMDktMjMgMjI6NTE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zpc2UtMi4x Mi4wL2NsYW5nX2RlbHRhL1RlbXBsYXRlQXJnVG9JbnQuY3BwCTIwMjYtMDctMTcgMTM6NTM6NDUu Mjg4NTMxODIzICswMjAwCitAQCAtMzI0LDEzICszMjQsMTUgQEAKKyBUZW1wbGF0ZUFyZ1RvSW50 OjpnZXRTdWJzdFRlbXBsYXRlVHlwZVBhcm1UeXBlKGNvbnN0IFR5cGUgKlR5KQorIHsKKyAgIFR5 cGU6OlR5cGVDbGFzcyBUQyA9IFR5LT5nZXRUeXBlQ2xhc3MoKTsKKyAgIHN3aXRjaCAoVEMpIHsK KysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAgIGNhc2UgVHlwZTo6RWxhYm9yYXRlZDog eworICAgICBjb25zdCBFbGFib3JhdGVkVHlwZSAqRVR5ID0gZHluX2Nhc3Q8RWxhYm9yYXRlZFR5 cGU+KFR5KTsKKyAgICAgY29uc3QgVHlwZSAqTmFtZWRUID0gRVR5LT5nZXROYW1lZFR5cGUoKS5n ZXRUeXBlUHRyKCk7CisgICAgIHJldHVybiBnZXRTdWJzdFRlbXBsYXRlVHlwZVBhcm1UeXBlKE5h bWVkVCk7CisgICB9CisrI2VuZGlmCisgCisgICBjYXNlIFR5cGU6OlR5cGVkZWY6IHsKKyAgICAg Y29uc3QgVHlwZWRlZlR5cGUgKlRkZWZUeSA9IGR5bl9jYXN0PFR5cGVkZWZUeXBlPihUeSk7Cisg ICAgIGNvbnN0IFR5cGVkZWZOYW1lRGVjbCAqVGRlZkQgPSBUZGVmVHktPmdldERlY2woKTsKK2Rp ZmYgLXJOVTQgY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL3Rlc3RzL3JlcGxhY2UtZGVw ZW5kZW50LXR5cGVkZWYvdGVzdDIuY2MgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL3Rlc3RzL3Jl cGxhY2UtZGVwZW5kZW50LXR5cGVkZWYvdGVzdDIuY2MKKy0tLSBjdmlzZS0yLjEyLjAtLW9yaWcv Y2xhbmdfZGVsdGEvdGVzdHMvcmVwbGFjZS1kZXBlbmRlbnQtdHlwZWRlZi90ZXN0Mi5jYwkxOTcw LTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGN2aXNlLTIuMTIuMC9jbGFuZ19k ZWx0YS90ZXN0cy9yZXBsYWNlLWRlcGVuZGVudC10eXBlZGVmL3Rlc3QyLmNjCTIwMjYtMDctMTcg MTM6NTM6MzguOTI5ODYwNzMzICswMjAwCitAQCAtMCwwICsxLDE5IEBACisrdGVtcGxhdGUgPHR5 cGVuYW1lIFQ+Cisrc3RydWN0IEEgeworKyAgc3RydWN0IElubmVyOworKyAgLy8gVGhpcyBzaG91 bGRuJ3QgYmUgdHJlYXRlZCBhcyBhbiBpbnN0YW5jZToKKysgIHR5cGVkZWYgQTo6SW5uZXIgRm9v OworK307CisrCisrdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBTIHsgdHlwZWRlZiBUIHR5cGU7 IH07CisrCisrc3RydWN0IEIgeworKyAgc3RydWN0IElubmVyOworK307CisrCisrdGVtcGxhdGUg PHR5cGVuYW1lIFQ+Cisrc3RydWN0IEMgeworKyAgdHlwZWRlZiB0eXBlbmFtZSBTPFQ+Ojp0eXBl OjpJbm5lciBCYXI7CisrfTsKKysKKyt0eXBlZGVmIEM8Qj46OkJhciBEOworZGlmZiAtck5VNCBj dmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvdGVzdHMvcmVwbGFjZS1kZXBlbmRlbnQtdHlw ZWRlZi90ZXN0Mi5vdXRwdXQgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL3Rlc3RzL3JlcGxhY2Ut ZGVwZW5kZW50LXR5cGVkZWYvdGVzdDIub3V0cHV0CistLS0gY3Zpc2UtMi4xMi4wLS1vcmlnL2Ns YW5nX2RlbHRhL3Rlc3RzL3JlcGxhY2UtZGVwZW5kZW50LXR5cGVkZWYvdGVzdDIub3V0cHV0CTE5 NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgY3Zpc2UtMi4xMi4wL2NsYW5n X2RlbHRhL3Rlc3RzL3JlcGxhY2UtZGVwZW5kZW50LXR5cGVkZWYvdGVzdDIub3V0cHV0CTIwMjYt MDctMTcgMTM6NTM6MzguOTI5OTE4NDQyICswMjAwCitAQCAtMCwwICsxLDE5IEBACisrdGVtcGxh dGUgPHR5cGVuYW1lIFQ+Cisrc3RydWN0IEEgeworKyAgc3RydWN0IElubmVyOworKyAgLy8gVGhp cyBzaG91bGRuJ3QgYmUgdHJlYXRlZCBhcyBhbiBpbnN0YW5jZToKKysgIHR5cGVkZWYgQTo6SW5u ZXIgRm9vOworK307CisrCisrdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBTIHsgdHlwZWRlZiBU IHR5cGU7IH07CisrCisrc3RydWN0IEIgeworKyAgc3RydWN0IElubmVyOworK307CisrCisrdGVt cGxhdGUgPHR5cGVuYW1lIFQ+Cisrc3RydWN0IEMgeworKyAgdHlwZWRlZiB0eXBlbmFtZSBTPFQ+ Ojp0eXBlOjpJbm5lciBCYXI7CisrfTsKKysKKyt0eXBlZGVmIEI6OklubmVyIEQ7CitkaWZmIC1y TlU0IGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS90ZXN0cy90ZXN0X2NsYW5nX2RlbHRh LnB5IGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS90ZXN0cy90ZXN0X2NsYW5nX2RlbHRhLnB5Cist LS0gY3Zpc2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL3Rlc3RzL3Rlc3RfY2xhbmdfZGVsdGEu cHkJMjAyNS0wOS0yMyAyMjo1MToyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjdmlzZS0yLjEyLjAv Y2xhbmdfZGVsdGEvdGVzdHMvdGVzdF9jbGFuZ19kZWx0YS5weQkyMDI2LTA3LTE3IDEzOjUzOjM4 LjkzMDA4NjAzOCArMDIwMAorQEAgLTg5Myw4ICs4OTMsMTkgQEAKKyAKKyAgICAgZGVmIHRlc3Rf cmVuYW1lX3Zhcl9yZW5hbWVfdmFyKHNlbGYpOgorICAgICAgICAgc2VsZi5jaGVja19jbGFuZ19k ZWx0YSgncmVuYW1lLXZhci9yZW5hbWUtdmFyLmMnLCAnLS10cmFuc2Zvcm1hdGlvbj1yZW5hbWUt dmFyIC0tY291bnRlcj0xJykKKyAKKysgICAgZGVmIHRlc3RfcmVwbGFjZV9kZXJpdmVkX2NsYXNz X3JlcGxhY2VfZGVwZW5kZW50X3R5cGVkZWZfMihzZWxmKToKKysgICAgICAgIHNlbGYuY2hlY2tf cXVlcnlfaW5zdGFuY2VzKAorKyAgICAgICAgICAgICdyZXBsYWNlLWRlcGVuZGVudC10eXBlZGVm L3Rlc3QyLmNjJywKKysgICAgICAgICAgICAnLS1xdWVyeS1pbnN0YW5jZXM9cmVwbGFjZS1kZXBl bmRlbnQtdHlwZWRlZicsCisrICAgICAgICAgICAgJ0F2YWlsYWJsZSB0cmFuc2Zvcm1hdGlvbiBp bnN0YW5jZXM6IDEnLAorKyAgICAgICAgKQorKyAgICAgICAgc2VsZi5jaGVja19jbGFuZ19kZWx0 YSgKKysgICAgICAgICAgICAncmVwbGFjZS1kZXBlbmRlbnQtdHlwZWRlZi90ZXN0Mi5jYycsCisr ICAgICAgICAgICAgJy0tdHJhbnNmb3JtYXRpb249cmVwbGFjZS1kZXBlbmRlbnQtdHlwZWRlZiAt LWNvdW50ZXI9MScsCisrICAgICAgICApCisrCisgICAgIGRlZiB0ZXN0X3JlcGxhY2VfZGVyaXZl ZF9jbGFzc19yZXBsYWNlX2Rlcml2ZWQxKHNlbGYpOgorICAgICAgICAgc2VsZi5jaGVja19jbGFu Z19kZWx0YSgKKyAgICAgICAgICAgICAncmVwbGFjZS1kZXJpdmVkLWNsYXNzL3JlcGxhY2UtZGVy aXZlZDEuY3BwJywKKyAgICAgICAgICAgICAnLS10cmFuc2Zvcm1hdGlvbj1yZXBsYWNlLWRlcml2 ZWQtY2xhc3MgLS1jb3VudGVyPTEnLAorZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcvY2xh bmdfZGVsdGEvVHJhbnNmb3JtYXRpb24uY3BwIGN2aXNlLTIuMTIuMC9jbGFuZ19kZWx0YS9UcmFu c2Zvcm1hdGlvbi5jcHAKKy0tLSBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvVHJhbnNm b3JtYXRpb24uY3BwCTIwMjUtMDktMjMgMjI6NTE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zp c2UtMi4xMi4wL2NsYW5nX2RlbHRhL1RyYW5zZm9ybWF0aW9uLmNwcAkyMDI2LTA3LTE3IDE0OjI3 OjU2LjkwODUxNjkyNyArMDIwMAorQEAgLTYwMywxMCArNjAzLDE1IEBACisgICAgICAgcmV0dXJu IFRELT5nZXRUZW1wbGF0ZWREZWNsKCk7CisgCisgICAgIGlmIChjb25zdCBVbnJlc29sdmVkVXNp bmdWYWx1ZURlY2wgKlVVRCA9CisgICAgICAgICBkeW5fY2FzdDxVbnJlc29sdmVkVXNpbmdWYWx1 ZURlY2w+KCpJKSkgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAyMgorICAgICAgIGNvbnN0 IE5lc3RlZE5hbWVTcGVjaWZpZXIgKk5OUyA9IFVVRC0+Z2V0UXVhbGlmaWVyKCk7CisgICAgICAg Y29uc3QgRGVjbENvbnRleHQgKkRlY2xDdHggPSBnZXREZWNsQ29udGV4dEZyb21TcGVjaWZpZXIo Tk5TKTsKKysjZWxzZQorKyAgICAgIGNvbnN0IE5lc3RlZE5hbWVTcGVjaWZpZXIgTk5TID0gVVVE LT5nZXRRdWFsaWZpZXIoKTsKKysgICAgICBjb25zdCBEZWNsQ29udGV4dCAqRGVjbEN0eCA9IGdl dERlY2xDb250ZXh0RnJvbVNwZWNpZmllcigmTk5TKTsKKysjZW5kaWYKKyAgICAgICBpZiAoIURl Y2xDdHgpCisgICAgICAgICBjb250aW51ZTsKKyAgICAgICBpZiAoY29uc3QgRnVuY3Rpb25EZWNs ICpGRCA9CisgICAgICAgICAgIGxvb2t1cEZ1bmN0aW9uRGVjbChETmFtZSwgRGVjbEN0eCwgVmlz aXRlZEN0eHMpKQorQEAgLTY2MiwyNCArNjY3LDQ0IEBACisgCisgY29uc3QgRGVjbENvbnRleHQg KlRyYW5zZm9ybWF0aW9uOjpnZXREZWNsQ29udGV4dEZyb21TcGVjaWZpZXIoCisgICAgICAgICBj b25zdCBOZXN0ZWROYW1lU3BlY2lmaWVyICpOTlMpCisgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFK T1IgPCAyMgorICAgZm9yICg7IE5OUzsgTk5TID0gTk5TLT5nZXRQcmVmaXgoKSkgeworICAgICBO ZXN0ZWROYW1lU3BlY2lmaWVyOjpTcGVjaWZpZXJLaW5kIEtpbmQgPSBOTlMtPmdldEtpbmQoKTsK KysjZWxzZQorKyAgZm9yIChOZXN0ZWROYW1lU3BlY2lmaWVyIEN1ck5OUyA9ICpOTlM7IEN1ck5O UzsKKysgICAgICAgQ3VyTk5TID0gQ3VyTk5TLmdldEFzTmFtZXNwYWNlQW5kUHJlZml4KCkuUHJl Zml4KSB7CisrICAgIE5lc3RlZE5hbWVTcGVjaWZpZXIgKk5OUyA9ICZDdXJOTlM7CisrICAgIE5l c3RlZE5hbWVTcGVjaWZpZXI6OktpbmQgS2luZCA9IE5OUy0+Z2V0S2luZCgpOworKyNlbmRpZgor IAorICAgICBzd2l0Y2ggKEtpbmQpIHsKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAg ICAgICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6Ok5hbWVzcGFjZTogeworICAgICAgICAgcmV0 dXJuIE5OUy0+Z2V0QXNOYW1lc3BhY2UoKS0+Z2V0Q2Fub25pY2FsRGVjbCgpOworICAgICAgIH0K KyAgICAgICBjYXNlIE5lc3RlZE5hbWVTcGVjaWZpZXI6Ok5hbWVzcGFjZUFsaWFzOiB7CisgICAg ICAgICBjb25zdCBOYW1lc3BhY2VBbGlhc0RlY2wgKk5BRCA9IE5OUy0+Z2V0QXNOYW1lc3BhY2VB bGlhcygpOworICAgICAgICAgcmV0dXJuIE5BRC0+Z2V0TmFtZXNwYWNlKCktPmdldENhbm9uaWNh bERlY2woKTsKKyAgICAgICB9CisgICAgICAgY2FzZSBOZXN0ZWROYW1lU3BlY2lmaWVyOjpUeXBl U3BlYzogLy8gRmFsbC10aHJvdWdoCistICAgICAgY2FzZSBOZXN0ZWROYW1lU3BlY2lmaWVyOjpU eXBlU3BlY1dpdGhUZW1wbGF0ZTogeworKyAgICAgIGNhc2UgTmVzdGVkTmFtZVNwZWNpZmllcjo6 VHlwZVNwZWNXaXRoVGVtcGxhdGU6CisrI2Vsc2UKKysgICAgICBjYXNlIE5lc3RlZE5hbWVTcGVj aWZpZXI6OktpbmQ6Ok5hbWVzcGFjZTogeworKyAgICAgICAgY29uc3QgTmFtZXNwYWNlRGVjbCAq TlMgPSBkeW5fY2FzdF9pZl9wcmVzZW50PE5hbWVzcGFjZURlY2w+KAorKyAgICAgICAgICAgIE5O Uy0+Z2V0QXNOYW1lc3BhY2VBbmRQcmVmaXgoKS5OYW1lc3BhY2UpOworKyAgICAgICAgaWYgKCFO UykKKysgICAgICAgICAgYnJlYWs7CisrICAgICAgICByZXR1cm4gTlMtPmdldENhbm9uaWNhbERl Y2woKTsKKysgICAgICB9CisrICAgICAgY2FzZSBOZXN0ZWROYW1lU3BlY2lmaWVyOjpLaW5kOjpU eXBlOiAKKysjZW5kaWYKKysgICAgICB7CisgICAgICAgICBjb25zdCBUeXBlICpUeSA9IE5OUy0+ Z2V0QXNUeXBlKCk7CistICAgICAgICBpZiAoY29uc3QgUmVjb3JkVHlwZSAqUlQgPSBUeS0+Z2V0 QXM8UmVjb3JkVHlwZT4oKSkKKysgICAgICAgIGlmIChjb25zdCBSZWNvcmRUeXBlICpSVCA9IFR5 LT5nZXRBczxSZWNvcmRUeXBlPigpKSB7CisgICAgICAgICAgIHJldHVybiBSVC0+Z2V0RGVjbCgp OworKyAgICAgICAgfQorICAgICAgICAgaWYgKGNvbnN0IFR5cGVkZWZUeXBlICpUVCA9IFR5LT5n ZXRBczxUeXBlZGVmVHlwZT4oKSkgeworICAgICAgICAgICBjb25zdCBUeXBlZGVmTmFtZURlY2wg KlR5cGVEZWNsID0gVFQtPmdldERlY2woKTsKKyAgICAgICAgICAgY29uc3QgVHlwZSAqVW5kZXJs eWluZ1R5ID0gVHlwZURlY2wtPmdldFVuZGVybHlpbmdUeXBlKCkuZ2V0VHlwZVB0cigpOworICAg ICAgICAgICBpZiAoY29uc3QgUmVjb3JkVHlwZSAqUlQgPSBVbmRlcmx5aW5nVHktPmdldEFzPFJl Y29yZFR5cGU+KCkpCitAQCAtNzQxLDggKzc2Niw5IEBACisgICAgICAgZHluX2Nhc3Q8VGVtcGxh dGVTcGVjaWFsaXphdGlvblR5cGU+KFR5KTsKKyAgICAgcmV0dXJuIGdldEJhc2VEZWNsRnJvbVRl bXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlKFRTVHkpOworICAgfQorIAorKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgPCAyMgorICAgY2FzZSBUeXBlOjpEZXBlbmRlbnRUZW1wbGF0ZVNwZWNpYWxpemF0 aW9uOiB7CisgICAgIHJldHVybiBOVUxMOworICAgfQorIAorQEAgLTc1MCw4ICs3NzYsOSBAQAor ICAgICBjb25zdCBFbGFib3JhdGVkVHlwZSAqRVR5ID0gZHluX2Nhc3Q8RWxhYm9yYXRlZFR5cGU+ KFR5KTsKKyAgICAgY29uc3QgVHlwZSAqTmFtZWRUID0gRVR5LT5nZXROYW1lZFR5cGUoKS5nZXRU eXBlUHRyKCk7CisgICAgIHJldHVybiBnZXRCYXNlRGVjbEZyb21UeXBlKE5hbWVkVCk7CisgICB9 CisrI2VuZGlmCisgCisgICBjYXNlIFR5cGU6OlBhcmVuOiB7CisgICAgIGNvbnN0IFBhcmVuVHlw ZSAqUFQgPSBkeW5fY2FzdDxQYXJlblR5cGU+KFR5KTsKKyAgICAgY29uc3QgVHlwZSAqSW5uZXJU eSA9IFBULT5nZXRJbm5lclR5cGUoKS5nZXRUeXBlUHRyKCk7CitAQCAtOTMxLDEyICs5NTgsMTkg QEAKKyAgIGNvbnN0IERlcGVuZGVudE5hbWVUeXBlICpETlQgPSBkeW5fY2FzdDxEZXBlbmRlbnRO YW1lVHlwZT4oVHkpOworICAgY29uc3QgSWRlbnRpZmllckluZm8gKklkSW5mbyA9IEROVC0+Z2V0 SWRlbnRpZmllcigpOworICAgaWYgKCFJZEluZm8pCisgICAgIHJldHVybiBmYWxzZTsKKysjaWYg TExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAgIGNvbnN0IE5lc3RlZE5hbWVTcGVjaWZpZXIgKlNw ZWNpZmllciA9IEROVC0+Z2V0UXVhbGlmaWVyKCk7CisgICBpZiAoIVNwZWNpZmllcikKKyAgICAg cmV0dXJuIGZhbHNlOworICAgY29uc3QgVHlwZSAqRGVwZW5kZW50VHkgPSBTcGVjaWZpZXItPmdl dEFzVHlwZSgpOworKyNlbHNlCisrICBjb25zdCBOZXN0ZWROYW1lU3BlY2lmaWVyIFNwZWNpZmll ciA9IEROVC0+Z2V0UXVhbGlmaWVyKCk7CisrICBpZiAoIVNwZWNpZmllcikKKysgICAgcmV0dXJu IGZhbHNlOworKyAgY29uc3QgVHlwZSAqRGVwZW5kZW50VHkgPSBTcGVjaWZpZXIuZ2V0QXNUeXBl KCk7CisrI2VuZGlmCisgICBpZiAoIURlcGVuZGVudFR5KQorICAgICByZXR1cm4gZmFsc2U7Cisg CisgICBjb25zdCBUZW1wbGF0ZVR5cGVQYXJtVHlwZSAqUGFybVR5ID0KK0BAIC0xMDI4LDEyICsx MDYyLDE5IEBACisgeworICAgY29uc3QgSWRlbnRpZmllckluZm8gKklkSW5mbyA9IEROVC0+Z2V0 SWRlbnRpZmllcigpOworICAgaWYgKCFJZEluZm8pCisgICAgIHJldHVybiBmYWxzZTsKKysjaWYg TExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAgIGNvbnN0IE5lc3RlZE5hbWVTcGVjaWZpZXIgKlNw ZWNpZmllciA9IEROVC0+Z2V0UXVhbGlmaWVyKCk7CisgICBpZiAoIVNwZWNpZmllcikKKyAgICAg cmV0dXJuIGZhbHNlOworICAgY29uc3QgVHlwZSAqVHkgPSBTcGVjaWZpZXItPmdldEFzVHlwZSgp OworKyNlbHNlCisrICBjb25zdCBOZXN0ZWROYW1lU3BlY2lmaWVyIFNwZWNpZmllciA9IEROVC0+ Z2V0UXVhbGlmaWVyKCk7CisrICBpZiAoIVNwZWNpZmllcikKKysgICAgcmV0dXJuIGZhbHNlOwor KyAgY29uc3QgVHlwZSAqVHkgPSBTcGVjaWZpZXIuZ2V0QXNUeXBlKCk7CisrI2VuZGlmCisgICBp ZiAoIVR5KQorICAgICByZXR1cm4gZmFsc2U7CisgICBjb25zdCBDWFhSZWNvcmREZWNsICpCYXNl ID0gZ2V0QmFzZURlY2xGcm9tVHlwZShUeSk7CisgICBpZiAoIUJhc2UpCitAQCAtMTA2NiwxMiAr MTEwNywxNCBAQAorICAgICAgIGR5bl9jYXN0PFN1YnN0VGVtcGxhdGVUeXBlUGFybVR5cGU+KFR5 KTsKKyAgICAgcmV0dXJuIGdldFR5cGVTdHJpbmcoVFAtPmdldFJlcGxhY2VtZW50VHlwZSgpLCBT dHIsIFR5cGVuYW1lKTsKKyAgIH0KKyAKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKyAg IGNhc2UgVHlwZTo6RWxhYm9yYXRlZDogeworICAgICBjb25zdCBFbGFib3JhdGVkVHlwZSAqRVR5 ID0gZHluX2Nhc3Q8RWxhYm9yYXRlZFR5cGU+KFR5KTsKKyAgICAgcmV0dXJuIGdldFR5cGVTdHJp bmcoRVR5LT5nZXROYW1lZFR5cGUoKSwgU3RyLCBUeXBlbmFtZSk7CisgICB9CisrI2VuZGlmCisg CisgICBjYXNlIFR5cGU6OlR5cGVkZWY6IHsKKyAgICAgY29uc3QgVHlwZWRlZlR5cGUgKlRkZWZU eSA9IGR5bl9jYXN0PFR5cGVkZWZUeXBlPihUeSk7CisgICAgIGNvbnN0IFR5cGVkZWZOYW1lRGVj bCAqVGRlZkQgPSBUZGVmVHktPmdldERlY2woKTsKK0BAIC0xMDgyLDEwICsxMTI1LDE5IEBACisg ICAgIGNvbnN0IERlcGVuZGVudE5hbWVUeXBlICpETlQgPSBkeW5fY2FzdDxEZXBlbmRlbnROYW1l VHlwZT4oVHkpOworICAgICByZXR1cm4gZ2V0RGVwZW5kZW50TmFtZVR5cGVTdHJpbmcoRE5ULCBT dHIsIFR5cGVuYW1lKTsKKyAgIH0KKyAKKy0gIGNhc2UgVHlwZTo6UmVjb3JkOgorLSAgY2FzZSBU eXBlOjpCdWlsdGluOiB7IC8vIGZhbGwtdGhyb3VnaAorKyAgY2FzZSBUeXBlOjpSZWNvcmQ6IHsK KysjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDIyCisrICAgIGNvbnN0IFJlY29yZFR5cGUgKlJU ID0gZHluX2Nhc3Q8UmVjb3JkVHlwZT4oVHkpOworKyAgICBRdWFsVHlwZSBEUVQgPSBSVC0+ZGVz dWdhcigpOworKyAgICBpZiAoRFFUICE9IFFUKQorKyAgICAgIHJldHVybiBnZXRUeXBlU3RyaW5n KERRVCwgU3RyLCBUeXBlbmFtZSk7CisrI2VuZGlmCisrICAgIFtbZmFsbHRocm91Z2hdXTsKKysg IH0KKysKKysgIGNhc2UgVHlwZTo6QnVpbHRpbjogeworICAgICBRVC5nZXRBc1N0cmluZ0ludGVy bmFsKFN0ciwgZ2V0UHJpbnRpbmdQb2xpY3koKSk7CisgICAgIHJldHVybiB0cnVlOworICAgfQor IAorZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvVHJhbnNmb3JtYXRp b25NYW5hZ2VyLmNwcCBjdmlzZS0yLjEyLjAvY2xhbmdfZGVsdGEvVHJhbnNmb3JtYXRpb25NYW5h Z2VyLmNwcAorLS0tIGN2aXNlLTIuMTIuMC0tb3JpZy9jbGFuZ19kZWx0YS9UcmFuc2Zvcm1hdGlv bk1hbmFnZXIuY3BwCTIwMjUtMDktMjMgMjI6NTE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zp c2UtMi4xMi4wL2NsYW5nX2RlbHRhL1RyYW5zZm9ybWF0aW9uTWFuYWdlci5jcHAJMjAyNi0wNy0x NyAxNDoxNDo0Mi4wODE2MTM4NDYgKzAyMDAKK0BAIC05NywxMyArOTcsMTYgQEAKKyAKKyAgIENs YW5nSW5zdGFuY2UgPSBuZXcgQ29tcGlsZXJJbnN0YW5jZSgpOworICAgYXNzZXJ0KENsYW5nSW5z dGFuY2UpOworICAgCistICBDbGFuZ0luc3RhbmNlLT5jcmVhdGVEaWFnbm9zdGljcygKKy0jaWYg TExWTV9WRVJTSU9OX01BSk9SID49IDIwCistICAgICpsbHZtOjp2ZnM6OmdldFJlYWxGaWxlU3lz dGVtKCkKKysjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjAKKysgIENsYW5nSW5zdGFuY2UtPmNy ZWF0ZURpYWdub3N0aWNzKCk7CisrI2VsaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMjIKKysgIENs YW5nSW5zdGFuY2UtPmNyZWF0ZURpYWdub3N0aWNzKCpsbHZtOjp2ZnM6OmdldFJlYWxGaWxlU3lz dGVtKCkpOworKyNlbHNlCisrICBDbGFuZ0luc3RhbmNlLT5jcmVhdGVWaXJ0dWFsRmlsZVN5c3Rl bShsbHZtOjp2ZnM6OmdldFJlYWxGaWxlU3lzdGVtKCkpOworKyAgQ2xhbmdJbnN0YW5jZS0+Y3Jl YXRlRGlhZ25vc3RpY3MoKTsKKyAjZW5kaWYKKy0gICk7CisgCisgICBUYXJnZXRPcHRpb25zICZU YXJnZXRPcHRzID0gQ2xhbmdJbnN0YW5jZS0+Z2V0VGFyZ2V0T3B0cygpOworICAgaWYgKGNvbnN0 IGNoYXIgKmVudiA9IGdldGVudigiQ1ZJU0VfVEFSR0VUX1RSSVBMRSIpKSB7CisgICAgIFRhcmdl dE9wdHMuVHJpcGxlID0gc3RkOjpzdHJpbmcoZW52KTsKK0BAIC0xNjIsOSArMTY1LDE0IEBACisg CisgICAgIENsYW5nSW5zdGFuY2UtPmNyZWF0ZUZpbGVNYW5hZ2VyKCk7CisgCisgICAgIGlmKENM Q1BhdGggIT0gTlVMTCAmJiBDbGFuZ0luc3RhbmNlLT5oYXNGaWxlTWFuYWdlcigpICYmCistICAg ICAgIENsYW5nSW5zdGFuY2UtPmdldEZpbGVNYW5hZ2VyKCkuZ2V0RGlyZWN0b3J5KENMQ1BhdGgs IGZhbHNlKSkgeworKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPiAyMAorKyAgICAgICBDbGFuZ0lu c3RhbmNlLT5nZXRGaWxlTWFuYWdlcigpLmdldERpcmVjdG9yeVJlZihDTENQYXRoLCBmYWxzZSkK KysjZWxzZQorKyAgICAgICBDbGFuZ0luc3RhbmNlLT5nZXRGaWxlTWFuYWdlcigpLmdldERpcmVj dG9yeShDTENQYXRoLCBmYWxzZSkKKysjZW5kaWYKKysgICAgICApIHsKKyAgICAgICAgIEFyZ3Mu cHVzaF9iYWNrKCItSSIpOworICAgICAgICAgQXJncy5wdXNoX2JhY2soQ0xDUGF0aCk7CisgICAg IH0KKyAKK0BAIC0xODUsOSArMTkzLDE0IEBACisgICB9CisgCisgICBUYXJnZXRJbmZvICpUYXJn ZXQgPSAKKyAgICAgVGFyZ2V0SW5mbzo6Q3JlYXRlVGFyZ2V0SW5mbyhDbGFuZ0luc3RhbmNlLT5n ZXREaWFnbm9zdGljcygpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYW5n SW5zdGFuY2UtPmdldEludm9jYXRpb24oKS5UYXJnZXRPcHRzKTsKKysjaWYgTExWTV9WRVJTSU9O X01BSk9SID4gMjAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFuZ0luc3Rh bmNlLT5nZXRJbnZvY2F0aW9uKCkuZ2V0VGFyZ2V0T3B0cygpCisrI2Vsc2UKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDbGFuZ0luc3RhbmNlLT5nZXRJbnZvY2F0aW9uKCkuVGFy Z2V0T3B0cworKyNlbmRpZgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg IENsYW5nSW5zdGFuY2UtPnNldFRhcmdldChUYXJnZXQpOworIAorICAgaWYgKGNvbnN0IGNoYXIg KmVudiA9IGdldGVudigiQ1ZJU0VfSU5DTFVERV9QQVRIIikpIHsKKyAgICAgSGVhZGVyU2VhcmNo T3B0aW9ucyAmSGVhZGVyU2VhcmNoT3B0cyA9IENsYW5nSW5zdGFuY2UtPmdldEhlYWRlclNlYXJj aE9wdHMoKTsKK0BAIC0yMDQsOSArMjE3LDEzIEBACisgICAgIH0gd2hpbGUobmV4dCAhPSBucG9z KTsKKyAgIH0KKyAKKyAgIENsYW5nSW5zdGFuY2UtPmNyZWF0ZUZpbGVNYW5hZ2VyKCk7CisrI2lm IExMVk1fVkVSU0lPTl9NQUpPUiA8IDIyCisgICBDbGFuZ0luc3RhbmNlLT5jcmVhdGVTb3VyY2VN YW5hZ2VyKENsYW5nSW5zdGFuY2UtPmdldEZpbGVNYW5hZ2VyKCkpOworKyNlbHNlCisrICBDbGFu Z0luc3RhbmNlLT5jcmVhdGVTb3VyY2VNYW5hZ2VyKCk7CisrI2VuZGlmCisgICBDbGFuZ0luc3Rh bmNlLT5jcmVhdGVQcmVwcm9jZXNzb3IoVFVfQ29tcGxldGUpOworIAorICAgRGlhZ25vc3RpY0Nv bnN1bWVyICZEZ0NsaWVudCA9IENsYW5nSW5zdGFuY2UtPmdldERpYWdub3N0aWNDbGllbnQoKTsK KyAgIERnQ2xpZW50LkJlZ2luU291cmNlRmlsZShDbGFuZ0luc3RhbmNlLT5nZXRMYW5nT3B0cygp LAorZGlmZiAtck5VNCBjdmlzZS0yLjEyLjAtLW9yaWcvY2xhbmdfZGVsdGEvVW5pb25Ub1N0cnVj dC5jcHAgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1VuaW9uVG9TdHJ1Y3QuY3BwCistLS0gY3Zp c2UtMi4xMi4wLS1vcmlnL2NsYW5nX2RlbHRhL1VuaW9uVG9TdHJ1Y3QuY3BwCTIwMjUtMDktMjMg MjI6NTE6MjkuMDAwMDAwMDAwICswMjAwCisrKysgY3Zpc2UtMi4xMi4wL2NsYW5nX2RlbHRhL1Vu aW9uVG9TdHJ1Y3QuY3BwCTIwMjYtMDctMTcgMTQ6MDA6MzMuNTY3MjcyMjIxICswMjAwCitAQCAt NDA3LDkgKzQwNyw5IEBACisgICBUcmFuc0Fzc2VydChSRFR5ICYmICJCYWQgUmVjb3JkVHlwZSEi KTsKKyAgIGlmIChSRFR5LT5pc0luY29tcGxldGVUeXBlKCkpCisgICAgIHJldHVybjsKKyAKKy0g IGNvbnN0IFJlY29yZERlY2wgKlJEID0gUkRUeS0+Z2V0RGVjbCgpOyAKKysgIGNvbnN0IFJlY29y ZERlY2wgKlJEID0gUkRUeS0+Z2V0RGVjbCgpOworICAgY29uc3QgUmVjb3JkRGVjbCAqQ2Fub25p Y2FsUkQgPSAKKyAgICAgZHluX2Nhc3Q8UmVjb3JkRGVjbD4oUkQtPmdldENhbm9uaWNhbERlY2wo KSk7CisgICBUcmFuc0Fzc2VydChDYW5vbmljYWxSRCAmJiAiTlVMTCBDYW5vbmljYWxSRCEiKTsK KyAgIGlmIChDYW5vbmljYWxSRC0+Z2V0TmFtZUFzU3RyaW5nKCkgPT0gIiIpIHsKCmRpZmYgLS1n aXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCBiYzc3YTVkLi41Njk4MTFiIDEwMDY0NAotLS0g YS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLVNIQTUxMiAodjIuMTEuMC50YXIu Z3opID0gNGMwODQ0ZjFjZTA1OTZhN2FlZDg0MDE4ZWNmNjNmYmVkMzFlN2ZiNDc0ZDM0MWY5OTQ3 ZTk5ZWU2MTI3NDcxM2FkOGFlNWRjZTYxOWZjYmM3YjJhY2RkZGI5NTBiMTQxODk4OWU5Y2Q2Y2Q2 ZDdhMjAzMWU1NjIyNmNjZjlmNTcKK1NIQTUxMiAodjIuMTIuMC50YXIuZ3opID0gMTU2MWU4ZTdj OTZjZmI0ZDI0YmU0ZmZiM2I4ZWUzYzkxNDhhNzE1YTYzNjI1MmE1MmQ3OWYwMmUxMGVhNjFkYjI4 NTk3OWM1M2FkNTFjNzk3YjM5YmM3NTBlNzQ2ODI5NDJhZjg1ODE4N2ZkYmYzZDk2ZDk5NzhmOGY4 MzAxYjIK