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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.4.0-5 Date: Mon, 29 Jun 2026 12:24:19 GMT Message-ID: <178273585990.1.16935863212146164976.rpms-gcc-c3b415bb004e@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: c3b415bb004e172d471197c7df5f335aa23d3ee3 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogYzNiNDE1YmIwMDRlMTcyZDQ3MTE5N2M3ZGY1ZjMzNWFh MjNkM2VlMwpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOS0wNS0xNFQwODo1MjozMSswMDowMApTdGF0cyAgOiArNDIyMC8tNjgxIGlu IDE1IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9n Y2MvYy9jM2I0MTViYjAwNGUxNzJkNDcxMTk3YzdkZjVmMzM1YWEyM2QzZWUzP2JyYW5jaD1yaGVs LWY0MS1iYXNlCgpMb2c6CjQuNC4wLTUKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBiLy5j dnNpZ25vcmUKaW5kZXggOTczZDViOS4uMjNmMmY1MiAxMDA2NDQKLS0tIGEvLmN2c2lnbm9yZQor KysgYi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEsMiBAQAogZmFzdGphci0wLjk3LnRhci5negotZ2Nj LTQuNC4wLTIwMDkwNDE0LnRhci5iejIKK2djYy00LjQuMC0yMDA5MDUxNC50YXIuYnoyCgpkaWZm IC0tZ2l0IGEvZ2NjLnNwZWMgYi9nY2Muc3BlYwppbmRleCAxZjk5OTBhLi41Yzc3YmJjIDEwMDY0 NAotLS0gYS9nY2Muc3BlYworKysgYi9nY2Muc3BlYwpAQCAtMSw0MCArMSw0MSBAQAotJWRlZmlu ZSBEQVRFIDIwMDkwNDE0Ci0lZGVmaW5lIFNWTlJFViAxNDYwMzcKLSVkZWZpbmUgZ2NjX3ZlcnNp b24gNC40LjAKKyVnbG9iYWwgREFURSAyMDA5MDUxNAorJWdsb2JhbCBTVk5SRVYgMTQ3NTIzCisl Z2xvYmFsIGdjY192ZXJzaW9uIDQuNC4wCiAjIE5vdGUsIGdjY19yZWxlYXNlIG11c3QgYmUgaW50 ZWdlciwgaWYgeW91IHdhbnQgdG8gYWRkIHN1ZmZpeGVzIHRvCiAjICV7cmVsZWFzZX0sIGFwcGVu ZCB0aGVtIGFmdGVyICV7Z2NjX3JlbGVhc2V9IG9uIFJlbGVhc2U6IGxpbmUuCi0lZGVmaW5lIGdj Y19yZWxlYXNlIDAuMzQKLSVkZWZpbmUgX3VucGFja2FnZWRfZmlsZXNfdGVybWluYXRlX2J1aWxk IDAKLSVkZWZpbmUgbXVsdGlsaWJfNjRfYXJjaHMgc3BhcmM2NCBwcGM2NCBzMzkweCB4ODZfNjQK LSVkZWZpbmUgaW5jbHVkZV9nYXBwbGV0dmlld2VyIDEKKyVnbG9iYWwgZ2NjX3JlbGVhc2UgNQor JWdsb2JhbCBfdW5wYWNrYWdlZF9maWxlc190ZXJtaW5hdGVfYnVpbGQgMAorJWdsb2JhbCBtdWx0 aWxpYl82NF9hcmNocyBzcGFyYzY0IHBwYzY0IHMzOTB4IHg4Nl82NAorJWdsb2JhbCBpbmNsdWRl X2dhcHBsZXR2aWV3ZXIgMQogJWlmYXJjaCAle2l4ODZ9IHg4Nl82NCBpYTY0IHBwYyBwcGM2NCBh bHBoYQotJWRlZmluZSBidWlsZF9hZGEgMQorJWdsb2JhbCBidWlsZF9hZGEgMQogJWVsc2UKLSVk ZWZpbmUgYnVpbGRfYWRhIDAKKyVnbG9iYWwgYnVpbGRfYWRhIDAKICVlbmRpZgotJWRlZmluZSBi dWlsZF9qYXZhIDEKKyVnbG9iYWwgYnVpbGRfamF2YSAxCiAlaWZhcmNoICV7c3BhcmN9Ci0lZGVm aW5lIGJ1aWxkX2Nsb29nIDAKKyVnbG9iYWwgYnVpbGRfY2xvb2cgMAogJWVsc2UKLSVkZWZpbmUg YnVpbGRfY2xvb2cgMQorJWdsb2JhbCBidWlsZF9jbG9vZyAxCiAlZW5kaWYKKyVnbG9iYWwgYnVp bGRfbGlic3RkY3h4X2RvY3MgMQogIyBJZiB5b3UgZG9uJ3QgaGF2ZSBhbHJlYWR5IGEgdXNhYmxl IGdjYy1qYXZhIGFuZCBsaWJnY2ogZm9yIHlvdXIgYXJjaCwKICMgZG8gb24gc29tZSBhcmNoIHdo aWNoIGhhcyBpdCBycG1idWlsZCAtYmMgLS13aXRoIGphdmFfdGFyIGdjYzQxLnNwZWMKICMgd2hp Y2ggY3JlYXRlcyBsaWJqYXZhLWNsYXNzZXMtJXt2ZXJzaW9ufS0le3JlbGVhc2V9LnRhci5iejIK ICMgV2l0aCB0aGlzIHRoZW4gb24gdGhlIG5ldyBhcmNoIGRvIHJwbWJ1aWxkIC1iYSAtdiAtLXdp dGggamF2YV9ib290c3RyYXAgZ2NjNDEuc3BlYwotJWRlZmluZSBib290c3RyYXBfamF2YSAlez9f d2l0aF9qYXZhX2Jvb3RzdHJhcDole2J1aWxkX2phdmF9fSV7IT9fd2l0aF9qYXZhX2Jvb3RzdHJh cDowfQotJWRlZmluZSBidWlsZF9qYXZhX3RhciAlez9fd2l0aF9qYXZhX3Rhcjole2J1aWxkX2ph dmF9fSV7IT9fd2l0aF9qYXZhX3RhcjowfQorJWdsb2JhbCBib290c3RyYXBfamF2YSAlez9fd2l0 aF9qYXZhX2Jvb3RzdHJhcDole2J1aWxkX2phdmF9fSV7IT9fd2l0aF9qYXZhX2Jvb3RzdHJhcDow fQorJWdsb2JhbCBidWlsZF9qYXZhX3RhciAlez9fd2l0aF9qYXZhX3Rhcjole2J1aWxkX2phdmF9 fSV7IT9fd2l0aF9qYXZhX3RhcjowfQogJWlmYXJjaCBzMzkweAotJWRlZmluZSBtdWx0aWxpYl8z Ml9hcmNoIHMzOTAKKyVnbG9iYWwgbXVsdGlsaWJfMzJfYXJjaCBzMzkwCiAlZW5kaWYKICVpZmFy Y2ggc3BhcmM2NAotJWRlZmluZSBtdWx0aWxpYl8zMl9hcmNoIHNwYXJjdjkKKyVnbG9iYWwgbXVs dGlsaWJfMzJfYXJjaCBzcGFyY3Y5CiAlZW5kaWYKICVpZmFyY2ggcHBjNjQKLSVkZWZpbmUgbXVs dGlsaWJfMzJfYXJjaCBwcGMKKyVnbG9iYWwgbXVsdGlsaWJfMzJfYXJjaCBwcGMKICVlbmRpZgog JWlmYXJjaCB4ODZfNjQKLSVkZWZpbmUgbXVsdGlsaWJfMzJfYXJjaCBpNTg2CislZ2xvYmFsIG11 bHRpbGliXzMyX2FyY2ggaTU4NgogJWVuZGlmCiBTdW1tYXJ5OiBWYXJpb3VzIGNvbXBpbGVycyAo QywgQysrLCBPYmplY3RpdmUtQywgSmF2YSwgLi4uKQogTmFtZTogZ2NjCkBAIC01Miw3ICs1Myw3 IEBAIFNvdXJjZTA6IGdjYy0le3ZlcnNpb259LSV7REFURX0udGFyLmJ6MgogU291cmNlMTogbGli Z2NjX3Bvc3RfdXBncmFkZS5jCiBTb3VyY2UyOiBSRUFETUUubGliZ2Nqd2VicGx1Z2luLnNvCiBT b3VyY2UzOiBwcm90b2l6ZS4xCi0lZGVmaW5lIGZhc3RqYXJfdmVyIDAuOTcKKyVnbG9iYWwgZmFz dGphcl92ZXIgMC45NwogU291cmNlNDogaHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5v cmcvcmVsZWFzZXMvZmFzdGphci9mYXN0amFyLSV7ZmFzdGphcl92ZXJ9LnRhci5negogVVJMOiBo dHRwOi8vZ2NjLmdudS5vcmcKIEJ1aWxkUm9vdDogJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNp b259LSV7cmVsZWFzZX0tcm9vdC0lKCV7X19pZF91fSAtbikKQEAgLTk5LDYgKzEwMCwxMCBAQCBC dWlsZFJlcXVpcmVzOiBsaWJ1bndpbmQgPj0gMC45OAogJWlmICV7YnVpbGRfY2xvb2d9CiBCdWls ZFJlcXVpcmVzOiBwcGwgPj0gMC4xMCwgcHBsLWRldmVsID49IDAuMTAsIGNsb29nLXBwbCA+PSAw LjE1LCBjbG9vZy1wcGwtZGV2ZWwgPj0gMC4xNQogJWVuZGlmCislaWYgJXtidWlsZF9saWJzdGRj eHhfZG9jc30KK0J1aWxkUmVxdWlyZXM6IGRveHlnZW4KK0J1aWxkUmVxdWlyZXM6IGdyYXBodml6 CislZW5kaWYKIFJlcXVpcmVzOiBjcHAgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KICMgTmVlZCAu ZWhfZnJhbWUgbGQgb3B0aW1pemF0aW9ucwogIyBOZWVkIHByb3BlciB2aXNpYmlsaXR5IHN1cHBv cnQKQEAgLTEyNyw3ICsxMzIsOCBAQCBPYnNvbGV0ZXM6IGxpYmduYXQgPCAle3ZlcnNpb259LSV7 cmVsZWFzZX0KICVpZiAle2J1aWxkX2Nsb29nfQogUmVxdWlyZXM6IGNsb29nLXBwbCA+PSAwLjE1 CiAlZW5kaWYKLVByZXJlcTogL3NiaW4vaW5zdGFsbC1pbmZvCitSZXF1aXJlcyhwb3N0KTogL3Ni aW4vaW5zdGFsbC1pbmZvCitSZXF1aXJlcyhwcmV1bik6IC9zYmluL2luc3RhbGwtaW5mbwogQXV0 b1JlcTogdHJ1ZQogCiBQYXRjaDA6IGdjYzQ0LWhhY2sucGF0Y2gKQEAgLTE0NywyNiArMTUzLDI5 IEBAIFBhdGNoMjA6IGdjYzQ0LWxpYnRvb2wtbm8tcnBhdGgucGF0Y2gKIFBhdGNoMjE6IGdjYzQ0 LWNsb29nLWRsLnBhdGNoCiBQYXRjaDIyOiBnY2M0NC1yYXctc3RyaW5nLnBhdGNoCiBQYXRjaDI0 OiBnY2M0NC1hdG9tLnBhdGNoCi1QYXRjaDI2OiBnY2M0NC1wb3dlcjcucGF0Y2gKK1BhdGNoMjU6 IGdjYzQ0LXBvd2VyNy5wYXRjaAorUGF0Y2gyNjogZ2NjNDQtcG93ZXI3LTIucGF0Y2gKK1BhdGNo Mjc6IGdjYzQ0LXBvd2VyNy0zLnBhdGNoCiBQYXRjaDI4OiBnY2M0NC1wcjM4NzU3LnBhdGNoCi1Q YXRjaDMwOiBnY2M0NC1wcjM5NTQzLnBhdGNoCi1QYXRjaDMxOiBnY2M0NC1wcjM5NzYzLnBhdGNo CitQYXRjaDI5OiBnY2M0NC1wcjM5ODU2LnBhdGNoCitQYXRjaDMwOiBnY2M0NC1saWJzdGRjKyst ZG9jcy5wYXRjaAorUGF0Y2gzMTogZ2NjNDQtcHIzOTk0Mi5wYXRjaAogCiBQYXRjaDEwMDA6IGZh c3RqYXItMC45Ny1zZWdmYXVsdC5wYXRjaAogCiAjIE9uIEFSTSBFQUJJIHN5c3RlbXMsIHdlIGRv IHdhbnQgLWdudWVhYmkgdG8gYmUgcGFydCBvZiB0aGUKICMgdGFyZ2V0IHRyaXBsZS4KICVpZm5h cmNoICV7YXJtfQotJWRlZmluZSBfZ251ICV7bmlsfQorJWdsb2JhbCBfZ251ICV7bmlsfQogJWVu ZGlmCiAlaWZhcmNoIHNwYXJjdjkKLSVkZWZpbmUgZ2NjX3RhcmdldF9wbGF0Zm9ybSBzcGFyYzY0 LSV7X3ZlbmRvcn0tJXtfdGFyZ2V0X29zfQorJWdsb2JhbCBnY2NfdGFyZ2V0X3BsYXRmb3JtIHNw YXJjNjQtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9CiAlZW5kaWYKICVpZmFyY2ggcHBjCi0lZGVm aW5lIGdjY190YXJnZXRfcGxhdGZvcm0gcHBjNjQtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9Cisl Z2xvYmFsIGdjY190YXJnZXRfcGxhdGZvcm0gcHBjNjQtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9 CiAlZW5kaWYKICVpZm5hcmNoIHNwYXJjdjkgcHBjCi0lZGVmaW5lIGdjY190YXJnZXRfcGxhdGZv cm0gJXtfdGFyZ2V0X3BsYXRmb3JtfQorJWdsb2JhbCBnY2NfdGFyZ2V0X3BsYXRmb3JtICV7X3Rh cmdldF9wbGF0Zm9ybX0KICVlbmRpZgogCiAlZGVzY3JpcHRpb24KQEAgLTIxNSw2ICsyMjQsMTUg QEAgVGhpcyBpcyB0aGUgR05VIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBDKysgbGli cmFyaWVzLiAgVGhpcwogcGFja2FnZSBpbmNsdWRlcyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBsaWJy YXJpZXMgbmVlZGVkIGZvciBDKysKIGRldmVsb3BtZW50LiBUaGlzIGluY2x1ZGVzIHJld3JpdHRl biBpbXBsZW1lbnRhdGlvbiBvZiBTVEwuCiAKKyVwYWNrYWdlIC1uIGxpYnN0ZGMrKy1kb2NzCitT dW1tYXJ5OiBEb2N1bWVudGF0aW9uIGZvciB0aGUgR05VIHN0YW5kYXJkIEMrKyBsaWJyYXJ5CitH cm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzCitBdXRvcmVxOiB0cnVlCisKKyVkZXNjcmlwdGlv biAtbiBsaWJzdGRjKystZG9jcworTWFudWFsLCBkb3h5Z2VuIGdlbmVyYXRlZCBBUEkgaW5mb3Jt YXRpb24gYW5kIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zCitmb3IgdGhlIEdOVSBzdGFuZGFy ZCBDKysgbGlicmFyeS4KKwogJXBhY2thZ2Ugb2JqYwogU3VtbWFyeTogT2JqZWN0aXZlLUMgc3Vw cG9ydCBmb3IgR0NDCiBHcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2VzCkBAIC0yNTEsNyArMjY5 LDggQEAgR3JvdXA6IERldmVsb3BtZW50L0xhbmd1YWdlcwogUmVxdWlyZXM6IGdjYyA9ICV7dmVy c2lvbn0tJXtyZWxlYXNlfQogUmVxdWlyZXM6IGxpYmdmb3J0cmFuID0gJXt2ZXJzaW9ufS0le3Jl bGVhc2V9CiBCdWlsZFJlcXVpcmVzOiBnbXAtZGV2ZWwgPj0gNC4xLjItOCwgbXBmci1kZXZlbCA+ PSAyLjIuMQotUHJlcmVxOiAvc2Jpbi9pbnN0YWxsLWluZm8KK1JlcXVpcmVzKHBvc3QpOiAvc2Jp bi9pbnN0YWxsLWluZm8KK1JlcXVpcmVzKHByZXVuKTogL3NiaW4vaW5zdGFsbC1pbmZvCiBBdXRv cmVxOiB0cnVlCiAKICVkZXNjcmlwdGlvbiBnZm9ydHJhbgpAQCAtMjcwLDcgKzI4OSw4IEBAIEZv cnRyYW4gZHluYW1pY2FsbHkgbGlua2VkIHByb2dyYW1zLgogJXBhY2thZ2UgLW4gbGliZ29tcAog U3VtbWFyeTogR0NDIE9wZW5NUCB2My4wIHNoYXJlZCBzdXBwb3J0IGxpYnJhcnkKIEdyb3VwOiBT eXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCi1QcmVyZXE6IC9zYmluL2luc3RhbGwtaW5mbwor UmVxdWlyZXMocG9zdCk6IC9zYmluL2luc3RhbGwtaW5mbworUmVxdWlyZXMocHJldW4pOiAvc2Jp bi9pbnN0YWxsLWluZm8KIAogJWRlc2NyaXB0aW9uIC1uIGxpYmdvbXAKIFRoaXMgcGFja2FnZSBj b250YWlucyBHQ0Mgc2hhcmVkIHN1cHBvcnQgbGlicmFyeSB3aGljaCBpcyBuZWVkZWQKQEAgLTMw NSw3ICszMjUsOCBAQCBSZXF1aXJlczogZ2NjID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiBSZXF1 aXJlczogbGliZ2NqID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiBSZXF1aXJlczogbGliZ2NqLWRl dmVsID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiBSZXF1aXJlczogL3Vzci9zaGFyZS9qYXZhL2Vj bGlwc2UtZWNqLmphcgotUHJlcmVxOiAvc2Jpbi9pbnN0YWxsLWluZm8KK1JlcXVpcmVzKHBvc3Qp OiAvc2Jpbi9pbnN0YWxsLWluZm8KK1JlcXVpcmVzKHByZXVuKTogL3NiaW4vaW5zdGFsbC1pbmZv CiBBdXRvcmVxOiB0cnVlCiAKICVkZXNjcmlwdGlvbiBqYXZhCkBAIC0zMTUsNyArMzM2LDggQEAg Ynl0ZWNvZGUgaW50byBuYXRpdmUgY29kZS4KICVwYWNrYWdlIC1uIGxpYmdjagogU3VtbWFyeTog SmF2YSBydW50aW1lIGxpYnJhcnkgZm9yIGdjYwogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9M aWJyYXJpZXMKLVByZXJlcTogL3NiaW4vaW5zdGFsbC1pbmZvCitSZXF1aXJlcyhwb3N0KTogL3Ni aW4vaW5zdGFsbC1pbmZvCitSZXF1aXJlcyhwcmV1bik6IC9zYmluL2luc3RhbGwtaW5mbwogUmVx dWlyZXM6IHppcCA+PSAyLjEKIFJlcXVpcmVzOiBndGsyID49IDIuNC4wCiBSZXF1aXJlczogZ2xp YjIgPj0gMi40LjAKQEAgLTM2MCw3ICszODIsOCBAQCBUaGUgSmF2YSh0bSkgcnVudGltZSBsaWJy YXJ5IHNvdXJjZXMgZm9yIHVzZSBpbiBFY2xpcHNlLgogJXBhY2thZ2UgLW4gY3BwCiBTdW1tYXJ5 OiBUaGUgQyBQcmVwcm9jZXNzb3IKIEdyb3VwOiBEZXZlbG9wbWVudC9MYW5ndWFnZXMKLVByZXJl cTogL3NiaW4vaW5zdGFsbC1pbmZvCitSZXF1aXJlcyhwb3N0KTogL3NiaW4vaW5zdGFsbC1pbmZv CitSZXF1aXJlcyhwcmV1bik6IC9zYmluL2luc3RhbGwtaW5mbwogQXV0b3JlcTogdHJ1ZQogCiAl ZGVzY3JpcHRpb24gLW4gY3BwCkBAIC0zOTAsNyArNDEzLDggQEAgU3VtbWFyeTogQWRhIDk1IHN1 cHBvcnQgZm9yIEdDQwogR3JvdXA6IERldmVsb3BtZW50L0xhbmd1YWdlcwogUmVxdWlyZXM6IGdj YyA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogUmVxdWlyZXM6IGxpYmduYXQgPSAle3ZlcnNpb259 LSV7cmVsZWFzZX0sIGxpYmduYXQtZGV2ZWwgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KLVByZXJl cTogL3NiaW4vaW5zdGFsbC1pbmZvCitSZXF1aXJlcyhwb3N0KTogL3NiaW4vaW5zdGFsbC1pbmZv CitSZXF1aXJlcyhwcmV1bik6IC9zYmluL2luc3RhbGwtaW5mbwogQXV0b3JlcTogdHJ1ZQogCiAl ZGVzY3JpcHRpb24gZ25hdApAQCAtNDM2LDEwICs0NjAsMTUgQEAgd2hpY2ggYXJlIHJlcXVpcmVk IHRvIGNvbXBpbGUgd2l0aCB0aGUgR05BVC4KICVlbmRpZgogJXBhdGNoMjIgLXAwIC1iIC5yYXct c3RyaW5nfgogJXBhdGNoMjQgLXAwIC1iIC5hdG9tfgotJXBhdGNoMjYgLXAwIC1iIC5wb3dlcjd+ CislcGF0Y2gyNSAtcDAgLWIgLnBvd2VyN34KKyVwYXRjaDI2IC1wMCAtYiAucG93ZXI3LTJ+Cisl cGF0Y2gyNyAtcDAgLWIgLnBvd2VyNy0zfgogJXBhdGNoMjggLXAwIC1iIC5wcjM4NzU3fgotIyVw YXRjaDMwIC1wMCAtYiAucHIzOTU0M34KLSVwYXRjaDMxIC1wMCAtYiAucHIzOTc2M34KKyVwYXRj aDI5IC1wMCAtYiAucHIzOTg1Nn4KKyVpZiAle2J1aWxkX2xpYnN0ZGN4eF9kb2NzfQorJXBhdGNo MzAgLXAwIC1iIC5saWJzdGRjKystZG9jc34KKyVlbmRpZgorJXBhdGNoMzEgLXAwIC1iIC5wcjM5 OTQyfgogCiAjIFRoaXMgdGVzdGNhc2UgZG9lc24ndCBjb21waWxlLgogcm0gbGliamF2YS90ZXN0 c3VpdGUvbGliamF2YS5sYW5nL1BSMzUwMjAqCkBAIC00OTMsNyArNTIyLDcgQEAgZmkKICMgZmFz dGphciwgYnVpbGQgaXQgYW55d2F5LgogbWtkaXIgZmFzdGphci0le2Zhc3RqYXJfdmVyfS9vYmot JXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQogY2QgZmFzdGphci0le2Zhc3RqYXJfdmVyfS9vYmotJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfQotLi4vY29uZmlndXJlIENGTEFHUz0iJFJQTV9PUFRfRkxBR1Mi IC0tcHJlZml4PSV7X3ByZWZpeH0gLS1tYW5kaXI9JXtfbWFuZGlyfSAtLWluZm9kaXI9JXtfaW5m b2Rpcn0KKy4uL2NvbmZpZ3VyZSBDRkxBR1M9IiV7b3B0ZmxhZ3N9IiAtLXByZWZpeD0le19wcmVm aXh9IC0tbWFuZGlyPSV7X21hbmRpcn0gLS1pbmZvZGlyPSV7X2luZm9kaXJ9CiBtYWtlICV7P19z bXBfbWZsYWdzfQogZXhwb3J0IFBBVEg9YHB3ZGAke1BBVEg6KzokUEFUSH0KIGNkIC4uLy4uLwpA QCAtNTMzLDcgKzU2Miw3IEBAIGNkIC4uCiAlZW5kaWYKIAogQ0M9Z2NjCi1PUFRfRkxBR1M9YGVj aG8gJFJQTV9PUFRfRkxBR1N8c2VkIC1lICdzL1woLVdwLFwpXD8tRF9GT1JUSUZZX1NPVVJDRT1b MTJdLy9nJ2AKK09QVF9GTEFHUz1gZWNobyAle29wdGZsYWdzfXxzZWQgLWUgJ3MvXCgtV3AsXClc Py1EX0ZPUlRJRllfU09VUkNFPVsxMl0vL2cnYAogT1BUX0ZMQUdTPWBlY2hvICRPUFRfRkxBR1N8 c2VkIC1lICdzLy1tNjQvL2c7cy8tbTMyLy9nO3MvLW0zMS8vZydgCiAlaWZhcmNoIHNwYXJjCiBP UFRfRkxBR1M9YGVjaG8gJE9QVF9GTEFHU3xzZWQgLWUgJ3MvLW1jcHU9dWx0cmFzcGFyYy8tbXR1 bmU9dWx0cmFzcGFyYy9nO3MvLW1jcHU9dls3OF0vL2cnYApAQCAtNjMyLDE5ICs2NjEsNiBAQCBD Qz0iJENDIiBDRkxBR1M9IiRPUFRfRkxBR1MiIENYWEZMQUdTPSJgZWNobyAkT1BUX0ZMQUdTIHwg c2VkICdzLyAtV2FsbCAvIC9nJ2AiIAogI0dDSkZMQUdTPSIkT1BUX0ZMQUdTIiBtYWtlICV7P19z bXBfbWZsYWdzfSBCT09UX0NGTEFHUz0iJE9QVF9GTEFHUyIgYm9vdHN0cmFwCiBHQ0pGTEFHUz0i JE9QVF9GTEFHUyIgbWFrZSAlez9fc21wX21mbGFnc30gQk9PVF9DRkxBR1M9IiRPUFRfRkxBR1Mi IHByb2ZpbGVkYm9vdHN0cmFwCiAKLSMgcnVuIHRoZSB0ZXN0cy4KLW1ha2UgJXs/X3NtcF9tZmxh Z3N9IC1rIGNoZWNrIEFMVF9DQ19VTkRFUl9URVNUPWdjYyBBTFRfQ1hYX1VOREVSX1RFU1Q9Zysr IFJVTlRFU1RGTEFHUz0iLS10YXJnZXRfYm9hcmQ9dW5peC8neywtZnN0YWNrLXByb3RlY3Rvcn0n IiB8fCA6Ci1lY2hvID09PT09PT09PT09PT09PT09PT09VEVTVElORz09PT09PT09PT09PT09PT09 PT09PT09PT0KLSggLi4vY29udHJpYi90ZXN0X3N1bW1hcnkgfHwgOiApIDI+JjEgfCBzZWQgLW4g Jy9eY2F0LipFT0YvLC9eRU9GL3svXmNhdC4qRU9GL2Q7L15FT0YvZDsvXkxBU1RfVVBEQVRFRDov ZDtwO30nCi1lY2hvID09PT09PT09PT09PT09PT09PT09VEVTVElORyBFTkQ9PT09PT09PT09PT09 PT09PT09PT0KLW1rZGlyIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0tJXt2ZXJzaW9ufS0l e3JlbGVhc2V9Ci1mb3IgaSBpbiBgZmluZCAuIC1uYW1lIFwqLmxvZyB8IGdyZXAgLUYgdGVzdHN1 aXRlLyB8IGdyZXAgLXYgJ2NvbmZpZy5sb2dcfGFjYXRzXHxhZGEnYDsgZG8KLSAgbG4gJGkgdGVz dGxvZ3MtJXtfdGFyZ2V0X3BsYXRmb3JtfS0le3ZlcnNpb259LSV7cmVsZWFzZX0vIHx8IDoKLWRv bmUKLXRhciBjZiAtIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0tJXt2ZXJzaW9ufS0le3Jl bGVhc2V9IHwgYnppcDIgLTljIFwKLSAgfCB1dWVuY29kZSB0ZXN0bG9ncy0le190YXJnZXRfcGxh dGZvcm19LnRhci5iejIgfHwgOgotcm0gLXJmIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0t JXt2ZXJzaW9ufS0le3JlbGVhc2V9Ci0KICMgTWFrZSBwcm90b2l6ZQogbWFrZSAtQyBnY2MgQ0M9 Ii4veGdjYyAtQiAuLyAtTzIiIHByb3RvCiAKQEAgLTY1Niw2ICs2NzIsMTQgQEAgZG9uZQogbWFr ZSAtQyBnY2MgZ2VuZXJhdGVkLW1hbnBhZ2VzCiBmb3IgaSBpbiAuLi9nY2MvZG9jLyoudGV4aTsg ZG8gbXYgLWYgJGkub3JpZyAkaTsgZG9uZQogCisjIE1ha2UgZ2VuZXJhdGVkIGRveHlnZW4gcGFn ZXMuCislaWYgJXtidWlsZF9saWJzdGRjeHhfZG9jc30KK2NkICV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0vbGlic3RkYysrLXYzCittYWtlIGRvYy1odG1sLWRveHlnZW4KK21ha2UgZG9jLW1hbi1kb3h5 Z2VuCitjZCAuLi8uLgorJWVuZGlmCisKICMgQ29weSB2YXJpb3VzIGRvYyBmaWxlcyBoZXJlIGFu ZCB0aGVyZQogY2QgLi4KIG1rZGlyIC1wIHJwbS5kb2MvZ2ZvcnRyYW4gcnBtLmRvYy9vYmpjCkBA IC03MDQsMTEgKzcyOCw3IEBAIHRhciBjZiAtIC1UIGxpYmphdmEtY2xhc3Nlcy5saXN0IHwgYnpp cDIgLTkgPiAkUlBNX1NPVVJDRV9ESVIvbGliamF2YS1jbGFzc2VzLSV7CiAlZW5kaWYKIAogJWlu c3RhbGwKLXJtIC1mciAkUlBNX0JVSUxEX1JPT1QKLQotcGVybCAtcGkgLWUgXAotICAnc35ocmVm PSJsKGlic3RkY3xhdGVzdCl+aHJlZj0iaHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvbGli c3RkYysrL2xcMX4nIFwKLSAgbGlic3RkYysrLXYzL2RvYy9odG1sL2FwaS5odG1sCitybSAtZnIg JXtidWlsZHJvb3R9CiAKIGNkIG9iai0le2djY190YXJnZXRfcGxhdGZvcm19CiAKQEAgLTcyNCwz MSArNzQ0LDMxIEBAIFRBUkdFVF9QTEFURk9STT0le2djY190YXJnZXRfcGxhdGZvcm19CiAjIFRo ZXJlIGFyZSBzb21lIE1QIGJ1Z3MgaW4gbGlic3RkYysrIE1ha2VmaWxlcwogbWFrZSAtQyAle2dj Y190YXJnZXRfcGxhdGZvcm19L2xpYnN0ZGMrKy12MwogCi1tYWtlIHByZWZpeD0kUlBNX0JVSUxE X1JPT1Qle19wcmVmaXh9IG1hbmRpcj0kUlBNX0JVSUxEX1JPT1Qle19tYW5kaXJ9IFwKLSAgaW5m b2Rpcj0kUlBNX0JVSUxEX1JPT1Qle19pbmZvZGlyfSBpbnN0YWxsCittYWtlIHByZWZpeD0le2J1 aWxkcm9vdH0le19wcmVmaXh9IG1hbmRpcj0le2J1aWxkcm9vdH0le19tYW5kaXJ9IFwKKyAgaW5m b2Rpcj0le2J1aWxkcm9vdH0le19pbmZvZGlyfSBpbnN0YWxsCiAlaWYgJXtidWlsZF9qYXZhfQot bWFrZSBERVNURElSPSRSUE1fQlVJTERfUk9PVCAtQyAle2djY190YXJnZXRfcGxhdGZvcm19L2xp YmphdmEgaW5zdGFsbC1zcmMuemlwCittYWtlIERFU1RESVI9JXtidWlsZHJvb3R9IC1DICV7Z2Nj X3RhcmdldF9wbGF0Zm9ybX0vbGliamF2YSBpbnN0YWxsLXNyYy56aXAKICVlbmRpZgogJWlmICV7 YnVpbGRfYWRhfQotY2htb2QgNjQ0ICRSUE1fQlVJTERfUk9PVCV7X2luZm9kaXJ9L2duYXQqCitj aG1vZCA2NDQgJXtidWlsZHJvb3R9JXtfaW5mb2Rpcn0vZ25hdCoKICVlbmRpZgogCi1GVUxMUEFU SD0kUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufQotRlVMTEVQQVRIPSRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGli ZXhlYy9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQorRlVMTFBBVEg9 JXtidWlsZHJvb3R9JXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtn Y2NfdmVyc2lvbn0KK0ZVTExFUEFUSD0le2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYmV4ZWMvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0KIAogIyBmaXggc29tZSB0aGlu Z3MKLWxuIC1zZiBnY2MgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vY2MKLW1rZGlyIC1w ICRSUE1fQlVJTERfUk9PVC9saWIKLWxuIC1zZiAuLiV7X3ByZWZpeH0vYmluL2NwcCAkUlBNX0JV SUxEX1JPT1QvbGliL2NwcAotbG4gLXNmIGdmb3J0cmFuICRSUE1fQlVJTERfUk9PVCV7X3ByZWZp eH0vYmluL2Y5NQotcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfaW5mb2Rpcn0vZGlyCi1nemlwIC05 ICRSUE1fQlVJTERfUk9PVCV7X2luZm9kaXJ9LyouaW5mbyoKLWxuIC1zZiBnY2MgJFJQTV9CVUlM RF9ST09UJXtfcHJlZml4fS9iaW4vZ25hdGdjYworbG4gLXNmIGdjYyAle2J1aWxkcm9vdH0le19w cmVmaXh9L2Jpbi9jYworbWtkaXIgLXAgJXtidWlsZHJvb3R9L2xpYgorbG4gLXNmIC4uJXtfcHJl Zml4fS9iaW4vY3BwICV7YnVpbGRyb290fS9saWIvY3BwCitsbiAtc2YgZ2ZvcnRyYW4gJXtidWls ZHJvb3R9JXtfcHJlZml4fS9iaW4vZjk1CitybSAtZiAle2J1aWxkcm9vdH0le19pbmZvZGlyfS9k aXIKK2d6aXAgLTkgJXtidWlsZHJvb3R9JXtfaW5mb2Rpcn0vKi5pbmZvKgorbG4gLXNmIGdjYyAl e2J1aWxkcm9vdH0le19wcmVmaXh9L2Jpbi9nbmF0Z2NjCiAKIGN4eGNvbmZpZz0iYGZpbmQgJXtn Y2NfdGFyZ2V0X3BsYXRmb3JtfS9saWJzdGRjKystdjMvaW5jbHVkZSAtbmFtZSBjKytjb25maWcu aGAiCiBmb3IgaSBpbiBgZmluZCAle2djY190YXJnZXRfcGxhdGZvcm19L1szNl0qL2xpYnN0ZGMr Ky12My9pbmNsdWRlIC1uYW1lIGMrK2NvbmZpZy5oIDI+L2Rldi9udWxsYDsgZG8KICAgaWYgISBk aWZmIC11cCAkY3h4Y29uZmlnICRpOyB0aGVuCi0gICAgY2F0ID4gJFJQTV9CVUlMRF9ST09UJXtf cHJlZml4fS9pbmNsdWRlL2MrKy8le2djY192ZXJzaW9ufS8le2djY190YXJnZXRfcGxhdGZvcm19 L2JpdHMvYysrY29uZmlnLmggPDxFT0YKKyAgICBjYXQgPiAle2J1aWxkcm9vdH0le19wcmVmaXh9 L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vYml0cy9j Kytjb25maWcuaCA8PEVPRgogI2lmbmRlZiBfQ1BQX0NQUENPTkZJR19XUkFQUEVSCiAjZGVmaW5l IF9DUFBfQ1BQQ09ORklHX1dSQVBQRVIgMQogI2luY2x1ZGUgPGJpdHMvd29yZHNpemUuaD4KQEAg LTc3MSw3ICs3OTEsNyBAQCBFT0YKICAgZmkKIGRvbmUKIAotZm9yIGYgaW4gYGZpbmQgJFJQTV9C VUlMRF9ST09UJXtfcHJlZml4fS9pbmNsdWRlL2MrKy8le2djY192ZXJzaW9ufS8le2djY190YXJn ZXRfcGxhdGZvcm19LyAtbmFtZSBjKytjb25maWcuaGA7IGRvCitmb3IgZiBpbiBgZmluZCAle2J1 aWxkcm9vdH0le19wcmVmaXh9L2luY2x1ZGUvYysrLyV7Z2NjX3ZlcnNpb259LyV7Z2NjX3Rhcmdl dF9wbGF0Zm9ybX0vIC1uYW1lIGMrK2NvbmZpZy5oYDsgZG8KICAgZm9yIGkgaW4gMSAyIDQgODsg ZG8KICAgICBzZWQgLWkgLWUgJ3MvI2RlZmluZSBfR0xJQkNYWF9BVE9NSUNfQlVJTFRJTlNfJyRp JyAxLyNpZmRlZiBfX0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9BTkRfU1dBUF8nJGknXAogJlwKQEAg LTc4OCwxNSArODA4LDI1IEBAIGRvbmUKICMgNCkgaXQgaXMgaHVnZQogIyBQZW9wbGUgY2FuIGFs d2F5cyBwcmVjb21waWxlIG9uIHRoZWlyIG93biB3aGF0ZXZlciB0aGV5IHdhbnQsIGJ1dAogIyBz aGlwcGluZyB0aGlzIGZvciBldmVyeWJvZHkgaXMgdW5uZWNlc3NhcnkuCi1ybSAtcmYgJFJQTV9C VUlMRF9ST09UJXtfcHJlZml4fS9pbmNsdWRlL2MrKy8le2djY192ZXJzaW9ufS8le2djY190YXJn ZXRfcGxhdGZvcm19L2JpdHMvc3RkYysrLmguZ2NoCitybSAtcmYgJXtidWlsZHJvb3R9JXtfcHJl Zml4fS9pbmNsdWRlL2MrKy8le2djY192ZXJzaW9ufS8le2djY190YXJnZXRfcGxhdGZvcm19L2Jp dHMvc3RkYysrLmguZ2NoCisKKyVpZiAle2J1aWxkX2xpYnN0ZGN4eF9kb2NzfQorbGlic3RkY3h4 X2RvY19idWlsZGRpcj0le2djY190YXJnZXRfcGxhdGZvcm19L2xpYnN0ZGMrKy12My9kb2MvZG94 eWdlbgorbWtkaXIgLXAgLi4vcnBtLmRvYy9saWJzdGRjKystdjMKK2NwIC1yIC1wIC4uL2xpYnN0 ZGMrKy12My9kb2MvaHRtbCAuLi9ycG0uZG9jL2xpYnN0ZGMrKy12My9odG1sCittdiAkbGlic3Rk Y3h4X2RvY19idWlsZGRpci9odG1sIC4uL3JwbS5kb2MvbGlic3RkYysrLXYzL2h0bWwvYXBpCitt a2RpciAtcCAle2J1aWxkcm9vdH0le19tYW5kaXJ9CittdiAkbGlic3RkY3h4X2RvY19idWlsZGRp ci9tYW4vbWFuMyAle2J1aWxkcm9vdH0le19tYW5kaXJ9L21hbjMvCitmaW5kIC4uL3JwbS5kb2Mv bGlic3RkYysrLXYzIC1uYW1lIFwqfiB8IHhhcmdzIHJtCislZW5kaWYKIAogJWlmYXJjaCBzcGFy Y3Y5IHNwYXJjNjQKLWxuIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vYmluLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0tZ2NjIFwKLSAgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4vc3Bh cmMtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9LWdjYworbG4gLWYgJXtidWlsZHJvb3R9JXtfcHJl Zml4fS9iaW4vJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS1nY2MgXAorICAle2J1aWxkcm9vdH0le19w cmVmaXh9L2Jpbi9zcGFyYy0le192ZW5kb3J9LSV7X3RhcmdldF9vc30tZ2NjCiAlZW5kaWYKICVp ZmFyY2ggcHBjIHBwYzY0Ci1sbiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi8le2dj Y190YXJnZXRfcGxhdGZvcm19LWdjYyBcCi0gICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vYmlu L3BwYy0le192ZW5kb3J9LSV7X3RhcmdldF9vc30tZ2NjCitsbiAtZiAle2J1aWxkcm9vdH0le19w cmVmaXh9L2Jpbi8le2djY190YXJnZXRfcGxhdGZvcm19LWdjYyBcCisgICV7YnVpbGRyb290fSV7 X3ByZWZpeH0vYmluL3BwYy0le192ZW5kb3J9LSV7X3RhcmdldF9vc30tZ2NjCiAlZW5kaWYKIAog JWlmYXJjaCBzcGFyY3Y5IHBwYwpAQCAtODExLDI0ICs4NDEsMjQgQEAgZWxzZQogICBGVUxMTFBB VEg9JEZVTExQQVRICiBmaQogCi1maW5kICRSUE1fQlVJTERfUk9PVCAtbmFtZSBcKi5sYSB8IHhh cmdzIHJtIC1mCitmaW5kICV7YnVpbGRyb290fSAtbmFtZSBcKi5sYSB8IHhhcmdzIHJtIC1mCiAl aWYgJXtidWlsZF9qYXZhfQogIyBnY2ogLXN0YXRpYyBkb2Vzbid0IHdvcmsgcHJvcGVybHkgYW55 d2F5LCB1bmxlc3MgdXNpbmcgLS13aG9sZS1hcmNoaXZlCiAjIGFuZCBzYXZpbmcgMzVNQiBpcyBu b3QgYmFkLgotZmluZCAkUlBNX0JVSUxEX1JPT1QgLW5hbWUgbGliZ2NqLmEgLW8gLW5hbWUgbGli Z3RrcGVlci5hIFwKK2ZpbmQgJXtidWlsZHJvb3R9IC1uYW1lIGxpYmdjai5hIC1vIC1uYW1lIGxp Ymd0a3BlZXIuYSBcCiAJCSAgICAgLW8gLW5hbWUgbGliZ2pzbWFsc2EuYSAtbyAtbmFtZSBsaWJn Y2otdG9vbHMuYSAtbyAtbmFtZSBsaWJqdm0uYSBcCiAJCSAgICAgLW8gLW5hbWUgbGliZ2lqLmEg LW8gLW5hbWUgbGliZ2NqX2JjLmEgLW8gLW5hbWUgbGliamF2YW1hdGguYSBcCiAgIHwgeGFyZ3Mg cm0gLWYKIAotbXYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGliZ2NqLnNwZWMgJEZV TExQQVRILworbXYgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9saWIvbGliZ2NqLnNwZWMgJEZVTExQ QVRILwogc2VkIC1pIC1lICdzL2xpYjogLyYlJXtzdGF0aWM6JSVlSmF2YSBwcm9ncmFtcyBjYW5u b3QgYmUgbGlua2VkIHN0YXRpY2FsbHl9LycgXAogICAkRlVMTFBBVEgvbGliZ2NqLnNwZWMKICVl bmRpZgogCi1ta2RpciAtcCAkUlBNX0JVSUxEX1JPT1QvJXtfbGlifQotbXYgLWYgJFJQTV9CVUlM RF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmdjY19zLnNvLjEgJFJQTV9CVUlMRF9ST09ULyV7 X2xpYn0vbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4xCi1jaG1vZCA3NTUgJFJQ TV9CVUlMRF9ST09ULyV7X2xpYn0vbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4x Ci1sbiAtc2YgbGliZ2NjX3MtJXtnY2NfdmVyc2lvbn0tJXtEQVRFfS5zby4xICRSUE1fQlVJTERf Uk9PVC8le19saWJ9L2xpYmdjY19zLnNvLjEKK21rZGlyIC1wICV7YnVpbGRyb290fS8le19saWJ9 CittdiAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vbGliZ2NjX3Muc28uMSAle2J1 aWxkcm9vdH0vJXtfbGlifS9saWJnY2Nfcy0le2djY192ZXJzaW9ufS0le0RBVEV9LnNvLjEKK2No bW9kIDc1NSAle2J1aWxkcm9vdH0vJXtfbGlifS9saWJnY2Nfcy0le2djY192ZXJzaW9ufS0le0RB VEV9LnNvLjEKK2xuIC1zZiBsaWJnY2Nfcy0le2djY192ZXJzaW9ufS0le0RBVEV9LnNvLjEgJXti dWlsZHJvb3R9LyV7X2xpYn0vbGliZ2NjX3Muc28uMQogbG4gLXNmIC8le19saWJ9L2xpYmdjY19z LnNvLjEgJEZVTExQQVRIL2xpYmdjY19zLnNvCiAlaWZhcmNoIHNwYXJjdjkgcHBjCiBsbiAtc2Yg L2xpYjY0L2xpYmdjY19zLnNvLjEgJEZVTExQQVRILzY0L2xpYmdjY19zLnNvCkBAIC04MzcsMzAg Kzg2NywzMCBAQCBsbiAtc2YgL2xpYjY0L2xpYmdjY19zLnNvLjEgJEZVTExQQVRILzY0L2xpYmdj Y19zLnNvCiBsbiAtc2YgL2xpYi9saWJnY2Nfcy5zby4xICRGVUxMUEFUSC8zMi9saWJnY2Nfcy5z bwogJWVuZGlmCiAKLW12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJn b21wLnNwZWMgJEZVTExQQVRILworbXYgLWYgJXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19saWJ9 L2xpYmdvbXAuc3BlYyAkRlVMTFBBVEgvCiAKICVpZiAle2J1aWxkX2FkYX0KLW12IC1mICRGVUxM UEFUSC9hZGFsaWIvbGliZ25hcmwtKi5zbyAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xp Yn0vCi1tdiAtZiAkRlVMTFBBVEgvYWRhbGliL2xpYmduYXQtKi5zbyAkUlBNX0JVSUxEX1JPT1Ql e19wcmVmaXh9LyV7X2xpYn0vCittdiAtZiAkRlVMTFBBVEgvYWRhbGliL2xpYmduYXJsLSouc28g JXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19saWJ9LworbXYgLWYgJEZVTExQQVRIL2FkYWxpYi9s aWJnbmF0LSouc28gJXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19saWJ9Lwogcm0gLWYgJEZVTExQ QVRIL2FkYWxpYi9saWJnbmFybC5zbyogJEZVTExQQVRIL2FkYWxpYi9saWJnbmF0LnNvKgogJWVu ZGlmCiAKLW1rZGlyIC1wICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliZXhlYy9nZXRjb25m Citta2RpciAtcCAle2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYmV4ZWMvZ2V0Y29uZgogaWYgZ2Nj L3hnY2MgLUIgZ2NjLyAtRSAtZEQgLXhjIC9kZXYvbnVsbCB8IGdyZXAgX19MT05HX01BWF9fLioy MTQ3NDgzNjQ3OyB0aGVuCi0gIGxuIC1zZiBQT1NJWF9WNl9JTFAzMl9PRkYzMiAkUlBNX0JVSUxE X1JPT1Qle19wcmVmaXh9L2xpYmV4ZWMvZ2V0Y29uZi9kZWZhdWx0CisgIGxuIC1zZiBQT1NJWF9W Nl9JTFAzMl9PRkYzMiAle2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYmV4ZWMvZ2V0Y29uZi9kZWZh dWx0CiBlbHNlCi0gIGxuIC1zZiBQT1NJWF9WNl9MUDY0X09GRjY0ICRSUE1fQlVJTERfUk9PVCV7 X3ByZWZpeH0vbGliZXhlYy9nZXRjb25mL2RlZmF1bHQKKyAgbG4gLXNmIFBPU0lYX1Y2X0xQNjRf T0ZGNjQgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9saWJleGVjL2dldGNvbmYvZGVmYXVsdAogZmkK IAogJWlmICV7YnVpbGRfamF2YX0KIHB1c2hkIC4uL2Zhc3RqYXItJXtmYXN0amFyX3Zlcn0vb2Jq LSV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KLW1ha2UgaW5zdGFsbCBERVNURElSPSRSUE1fQlVJTERf Uk9PVAorbWFrZSBpbnN0YWxsIERFU1RESVI9JXtidWlsZHJvb3R9CiBwb3BkCiAKIGlmIFsgIiV7 X2xpYn0iICE9ICJsaWIiIF07IHRoZW4KLSAgbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09UJXtfcHJl Zml4fS8le19saWJ9L3BrZ2NvbmZpZwotICBzZWQgJy9ebGliZGlyL3MvbGliJC8le19saWJ9Lycg JFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvcGtnY29uZmlnL2xpYmdjai0qLnBjIFwKLSAg ICA+ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9wa2djb25maWcvYGJhc2VuYW1l ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL3BrZ2NvbmZpZy9saWJnY2otKi5wY2AKKyAg bWtkaXIgLXAgJXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19saWJ9L3BrZ2NvbmZpZworICBzZWQg Jy9ebGliZGlyL3MvbGliJC8le19saWJ9LycgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9saWIvcGtn Y29uZmlnL2xpYmdjai0qLnBjIFwKKyAgICA+ICV7YnVpbGRyb290fSV7X3ByZWZpeH0vJXtfbGli fS9wa2djb25maWcvYGJhc2VuYW1lICV7YnVpbGRyb290fSV7X3ByZWZpeH0vbGliL3BrZ2NvbmZp Zy9saWJnY2otKi5wY2AKIGZpCiAlZW5kaWYKIApAQCAtODkxLDE0ICs5MjEsMTQgQEAgbG4gLXNm IC4uLy4uLy4uLy4uLyV7X2xpYn0vbGliZ2lqLnNvLjEwLiogbGliZ2lqLnNvCiAlZW5kaWYKIGZp CiAlaWYgJXtidWlsZF9qYXZhfQotbXYgLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19s aWJ9L2xpYmdjal9iYy5zbyAkRlVMTExQQVRILworbXYgLWYgJXtidWlsZHJvb3R9JXtfcHJlZml4 fS8le19saWJ9L2xpYmdjal9iYy5zbyAkRlVMTExQQVRILwogJWVuZGlmCi1tdiAtZiAkUlBNX0JV SUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlic3RkYysrLiphICRGVUxMTFBBVEgvCi1tdiAt ZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlic3VwYysrLiphIC4KLW12IC1m ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJnZm9ydHJhbi4qYSAuCi1tdiAt ZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlib2JqYy4qYSAuCi1tdiAtZiAk UlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGliZ29tcC4qYSAuCi1tdiAtZiAkUlBN X0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGlibXVkZmxhcHssdGh9LiphICRGVUxMTFBB VEgvCittdiAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vbGlic3RkYysrLiphICRG VUxMTFBBVEgvCittdiAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vbGlic3VwYysr LiphIC4KK212IC1mICV7YnVpbGRyb290fSV7X3ByZWZpeH0vJXtfbGlifS9saWJnZm9ydHJhbi4q YSAuCittdiAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vbGlib2JqYy4qYSAuCitt diAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vbGliZ29tcC4qYSAuCittdiAtZiAl e2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vbGlibXVkZmxhcHssdGh9LiphICRGVUxMTFBB VEgvCiAKICVpZiAle2J1aWxkX2FkYX0KICVpZmFyY2ggc3BhcmN2OSBwcGMKQEAgLTk1NiwxMCAr OTg2LDEwIEBAIGxuIC1zZiAuLi9gZWNobyAuLi8uLi8uLi8uLi9saWIvbGliZ2lqLnNvLjEwLiog fCBzZWQgc34vbGliL34vbGliNjQvfmAgNjQvbGliZ2lqCiBsbiAtc2YgbGliMzIvbGliZ2NqX2Jj LnNvIGxpYmdjal9iYy5zbwogbG4gLXNmIC4uL2xpYjY0L2xpYmdjal9iYy5zbyA2NC9saWJnY2pf YmMuc28KICVlbmRpZgotbXYgLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWI2NC9saWJz dXBjKysuKmEgNjQvCi1tdiAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2xpYjY0L2xpYmdm b3J0cmFuLiphIDY0LwotbXYgLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWI2NC9saWJv YmpjLiphIDY0LwotbXYgLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWI2NC9saWJnb21w LiphIDY0LworbXYgLWYgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9saWI2NC9saWJzdXBjKysuKmEg NjQvCittdiAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYjY0L2xpYmdmb3J0cmFuLiphIDY0 LworbXYgLWYgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9saWI2NC9saWJvYmpjLiphIDY0LworbXYg LWYgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9saWI2NC9saWJnb21wLiphIDY0LwogbG4gLXNmIGxp YjMyL2xpYnN0ZGMrKy5hIGxpYnN0ZGMrKy5hCiBsbiAtc2YgLi4vbGliNjQvbGlic3RkYysrLmEg NjQvbGlic3RkYysrLmEKIGxuIC1zZiBsaWIzMi9saWJtdWRmbGFwLmEgbGlibXVkZmxhcC5hCkBA IC05ODksMTAgKzEwMTksMTAgQEAgbG4gLXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4uL2xpYjY0L2xp Ymdjai5zby4xMC4qIHwgc2VkIHN+Ly4uL2xpYjY0L34vfmAgMzIvbGliZ2MKIGxuIC1zZiAuLi9g ZWNobyAuLi8uLi8uLi8uLi9saWI2NC9saWJnY2otdG9vbHMuc28uMTAuKiB8IHNlZCBzfi8uLi9s aWI2NC9+L35gIDMyL2xpYmdjai10b29scy5zbwogbG4gLXNmIC4uL2BlY2hvIC4uLy4uLy4uLy4u L2xpYjY0L2xpYmdpai5zby4xMC4qIHwgc2VkIHN+Ly4uL2xpYjY0L34vfmAgMzIvbGliZ2lqLnNv CiAlZW5kaWYKLW12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL2xpYnN1cGMrKy4q YSAzMi8KLW12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL2xpYmdmb3J0cmFuLiph IDMyLwotbXYgLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGlib2JqYy4qYSAzMi8K LW12IC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL2xpYmdvbXAuKmEgMzIvCittdiAt ZiAle2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYi9saWJzdXBjKysuKmEgMzIvCittdiAtZiAle2J1 aWxkcm9vdH0le19wcmVmaXh9L2xpYi9saWJnZm9ydHJhbi4qYSAzMi8KK212IC1mICV7YnVpbGRy b290fSV7X3ByZWZpeH0vbGliL2xpYm9iamMuKmEgMzIvCittdiAtZiAle2J1aWxkcm9vdH0le19w cmVmaXh9L2xpYi9saWJnb21wLiphIDMyLwogJWVuZGlmCiAlaWZhcmNoIHNwYXJjNjQgcHBjNjQK IGxuIC1zZiAuLi9saWIzMi9saWJzdGRjKysuYSAzMi9saWJzdGRjKysuYQpAQCAtMTAzMSwxNCAr MTA2MSwxNCBAQCBzdHJpcCAtZyBgZmluZCAuIFwoIC1uYW1lIGxpYmdmb3J0cmFuLmEgLW8gLW5h bWUgbGlib2JqYy5hIC1vIC1uYW1lIGxpYmdvbXAuYSBcCiAJCSAgICAtbyAtbmFtZSBsaWJtdWRm bGFwLmEgLW8gLW5hbWUgbGlibXVkZmxhcHRoLmEgXAogCQkgICAgLW8gLW5hbWUgbGliZ2NjLmEg LW8gLW5hbWUgbGliZ2Nvdi5hIFwpIC1hIC10eXBlIGZgCiBwb3BkCi1jaG1vZCA3NTUgJFJQTV9C VUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmdmb3J0cmFuLnNvLjMuKgotY2htb2QgNzU1 ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJnb21wLnNvLjEuKgotY2htb2Qg NzU1ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJtdWRmbGFweyx0aH0uc28u MC4qCi1jaG1vZCA3NTUgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYm9iamMu c28uMi4qCitjaG1vZCA3NTUgJXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19saWJ9L2xpYmdmb3J0 cmFuLnNvLjMuKgorY2htb2QgNzU1ICV7YnVpbGRyb290fSV7X3ByZWZpeH0vJXtfbGlifS9saWJn b21wLnNvLjEuKgorY2htb2QgNzU1ICV7YnVpbGRyb290fSV7X3ByZWZpeH0vJXtfbGlifS9saWJt dWRmbGFweyx0aH0uc28uMC4qCitjaG1vZCA3NTUgJXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19s aWJ9L2xpYm9iamMuc28uMi4qCiAKICVpZiAle2J1aWxkX2FkYX0KLWNobW9kIDc1NSAkUlBNX0JV SUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vbGliZ25hcmwqc28qCi1jaG1vZCA3NTUgJFJQTV9C VUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2xpYmduYXQqc28qCitjaG1vZCA3NTUgJXtidWls ZHJvb3R9JXtfcHJlZml4fS8le19saWJ9L2xpYmduYXJsKnNvKgorY2htb2QgNzU1ICV7YnVpbGRy b290fSV7X3ByZWZpeH0vJXtfbGlifS9saWJnbmF0KnNvKgogJWVuZGlmCiAKIG12ICRGVUxMUEFU SC9pbmNsdWRlLWZpeGVkL3N5c2xpbWl0cy5oICRGVUxMUEFUSC9pbmNsdWRlL3N5c2xpbWl0cy5o CkBAIC0xMDUxLDcgKzEwODEsNyBAQCBmb3IgaCBpbiBgZmluZCAkRlVMTFBBVEgvaW5jbHVkZSAt bmFtZSBcKi5oYDsgZG8KICAgZmkKIGRvbmUKIAotY2F0ID4gJFJQTV9CVUlMRF9ST09UJXtfcHJl Zml4fS9iaW4vYzg5IDw8IkVPRiIKK2NhdCA+ICV7YnVpbGRyb290fSV7X3ByZWZpeH0vYmluL2M4 OSA8PCJFT0YiCiAjIS9iaW4vc2gKIGZsPSItc3RkPWM4OSIKIGZvciBvcHQ7IGRvCkBAIC0xMDYz LDcgKzEwOTMsNyBAQCBmb3Igb3B0OyBkbwogZG9uZQogZXhlYyBnY2MgJGZsICR7MSsiJEAifQog RU9GCi1jYXQgPiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi9jOTkgPDwiRU9GIgorY2F0 ID4gJXtidWlsZHJvb3R9JXtfcHJlZml4fS9iaW4vYzk5IDw8IkVPRiIKICMhL2Jpbi9zaAogZmw9 Ii1zdGQ9Yzk5IgogZm9yIG9wdDsgZG8KQEAgLTEwNzUsMTEgKzExMDUsMTEgQEAgZm9yIG9wdDsg ZG8KIGRvbmUKIGV4ZWMgZ2NjICRmbCAkezErIiRAIn0KIEVPRgotY2htb2QgNzU1ICRSUE1fQlVJ TERfUk9PVCV7X3ByZWZpeH0vYmluL2M/OQorY2htb2QgNzU1ICV7YnVpbGRyb290fSV7X3ByZWZp eH0vYmluL2M/OQogCi1ta2RpciAtcCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L3NiaW4KLWdj YyAtc3RhdGljIC1PcyAle1NPVVJDRTF9IC1vICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vc2Jp bi9saWJnY2NfcG9zdF91cGdyYWRlCi1zdHJpcCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L3Ni aW4vbGliZ2NjX3Bvc3RfdXBncmFkZQorbWtkaXIgLXAgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9z YmluCitnY2MgLXN0YXRpYyAtT3MgJXtTT1VSQ0UxfSAtbyAle2J1aWxkcm9vdH0le19wcmVmaXh9 L3NiaW4vbGliZ2NjX3Bvc3RfdXBncmFkZQorc3RyaXAgJXtidWlsZHJvb3R9JXtfcHJlZml4fS9z YmluL2xpYmdjY19wb3N0X3VwZ3JhZGUKIAogY2QgLi4KICVmaW5kX2xhbmcgJXtuYW1lfQpAQCAt MTA4NywzOCArMTExNyw1NCBAQCBjZCAuLgogCiAjIFJlbW92ZSBiaW5hcmllcyB3ZSB3aWxsIG5v dCBiZSBpbmNsdWRpbmcsIHNvIHRoYXQgdGhleSBkb24ndCBlbmQgdXAgaW4KICMgZ2NjLWRlYnVn aW5mbwotcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L3tsaWJmZmkqLGxp YmliZXJ0eS5hfQorcm0gLWYgJXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19saWJ9L3tsaWJmZmkq LGxpYmliZXJ0eS5hfQogcm0gLWYgJEZVTExFUEFUSC9pbnN0YWxsLXRvb2xzL3tta2hlYWRlcnMs Zml4aW5jbH0KLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL3szMiw2NH0vbGli aWJlcnR5LmEKLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9saWJzc3Aq Ci1ybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9L2Jpbi9nbmF0aXZlMmFzY2lpCitybSAt ZiAle2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYi97MzIsNjR9L2xpYmliZXJ0eS5hCitybSAtZiAl e2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vbGlic3NwKgorcm0gLWYgJXtidWlsZHJvb3R9 JXtfcHJlZml4fS9iaW4vZ25hdGl2ZTJhc2NpaQogCiAlaWZhcmNoICV7bXVsdGlsaWJfNjRfYXJj aHN9CiAjIFJlbW92ZSBsaWJyYXJpZXMgZm9yIHRoZSBvdGhlciBhcmNoIG9uIG11bHRpbGliIGFy Y2hlcwotcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9saWIvbGliKi5zbyoKLXJtIC1m ICRSUE1fQlVJTERfUk9PVCV7X3ByZWZpeH0vbGliL2xpYiouYQorcm0gLWYgJXtidWlsZHJvb3R9 JXtfcHJlZml4fS9saWIvbGliKi5zbyoKK3JtIC1mICV7YnVpbGRyb290fSV7X3ByZWZpeH0vbGli L2xpYiouYQogJWVsc2UKICVpZmFyY2ggc3BhcmN2OSBwcGMKLXJtIC1mICRSUE1fQlVJTERfUk9P VCV7X3ByZWZpeH0vbGliNjQvbGliKi5zbyoKLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X3ByZWZp eH0vbGliNjQvbGliKi5hCitybSAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYjY0L2xpYiou c28qCitybSAtZiAle2J1aWxkcm9vdH0le19wcmVmaXh9L2xpYjY0L2xpYiouYQogJWVuZGlmCiAl ZW5kaWYKIAogJWlmICV7YnVpbGRfamF2YX0KLW1rZGlyIC1wICRSUE1fQlVJTERfUk9PVCV7X3By ZWZpeH0vc2hhcmUvamF2YS9nY2otZW5kb3JzZWQgXAotCSAkUlBNX0JVSUxEX1JPT1Qle19wcmVm aXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lvbn0vY2xhc3NtYXAuZGIuZAotY2htb2QgNzU1ICRSUE1f QlVJTERfUk9PVCV7X3ByZWZpeH0vc2hhcmUvamF2YS9nY2otZW5kb3JzZWQgXAotCSAgJFJQTV9C VUlMRF9ST09UJXtfcHJlZml4fS8le19saWJ9L2djai0le3ZlcnNpb259IFwKLQkgICRSUE1fQlVJ TERfUk9PVCV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2ZXJzaW9ufS9jbGFzc21hcC5kYi5kCi10 b3VjaCAkUlBNX0JVSUxEX1JPT1Qle19wcmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lvbn0vY2xh c3NtYXAuZGIKK21rZGlyIC1wICV7YnVpbGRyb290fSV7X3ByZWZpeH0vc2hhcmUvamF2YS9nY2ot ZW5kb3JzZWQgXAorCSAle2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xpYn0vZ2NqLSV7dmVyc2lv bn0vY2xhc3NtYXAuZGIuZAorY2htb2QgNzU1ICV7YnVpbGRyb290fSV7X3ByZWZpeH0vc2hhcmUv amF2YS9nY2otZW5kb3JzZWQgXAorCSAgJXtidWlsZHJvb3R9JXtfcHJlZml4fS8le19saWJ9L2dj ai0le3ZlcnNpb259IFwKKwkgICV7YnVpbGRyb290fSV7X3ByZWZpeH0vJXtfbGlifS9nY2otJXt2 ZXJzaW9ufS9jbGFzc21hcC5kYi5kCit0b3VjaCAle2J1aWxkcm9vdH0le19wcmVmaXh9LyV7X2xp Yn0vZ2NqLSV7dmVyc2lvbn0vY2xhc3NtYXAuZGIKICVlbmRpZgogCi1pbnN0YWxsIC1tNjQ0ICV7 U09VUkNFM30gJFJQTV9CVUlMRF9ST09UJXtfbWFuZGlyfS9tYW4xL3Byb3RvaXplLjEKLWVjaG8g Jy5zbyBtYW4xL3Byb3RvaXplLjEnID4gJFJQTV9CVUlMRF9ST09UJXtfbWFuZGlyfS9tYW4xL3Vu cHJvdG9pemUuMQotY2htb2QgNjQ0ICRSUE1fQlVJTERfUk9PVCV7X21hbmRpcn0vbWFuMS91bnBy b3RvaXplLjEKK2luc3RhbGwgLW02NDQgJXtTT1VSQ0UzfSAle2J1aWxkcm9vdH0le19tYW5kaXJ9 L21hbjEvcHJvdG9pemUuMQorZWNobyAnLnNvIG1hbjEvcHJvdG9pemUuMScgPiAle2J1aWxkcm9v dH0le19tYW5kaXJ9L21hbjEvdW5wcm90b2l6ZS4xCitjaG1vZCA2NDQgJXtidWlsZHJvb3R9JXtf bWFuZGlyfS9tYW4xL3VucHJvdG9pemUuMQorCislY2hlY2sKK2NkIG9iai0le2djY190YXJnZXRf cGxhdGZvcm19CisKKyMgcnVuIHRoZSB0ZXN0cy4KK21ha2UgJXs/X3NtcF9tZmxhZ3N9IC1rIGNo ZWNrIEFMVF9DQ19VTkRFUl9URVNUPWdjYyBBTFRfQ1hYX1VOREVSX1RFU1Q9ZysrIFJVTlRFU1RG TEFHUz0iLS10YXJnZXRfYm9hcmQ9dW5peC8neywtZnN0YWNrLXByb3RlY3Rvcn0nIiB8fCA6Citl Y2hvID09PT09PT09PT09PT09PT09PT09VEVTVElORz09PT09PT09PT09PT09PT09PT09PT09PT0K KyggTENfQUxMPUMgLi4vY29udHJpYi90ZXN0X3N1bW1hcnkgfHwgOiApIDI+JjEgfCBzZWQgLW4g Jy9eY2F0LipFT0YvLC9eRU9GL3svXmNhdC4qRU9GL2Q7L15FT0YvZDsvXkxBU1RfVVBEQVRFRDov ZDtwO30nCitlY2hvID09PT09PT09PT09PT09PT09PT09VEVTVElORyBFTkQ9PT09PT09PT09PT09 PT09PT09PT0KK21rZGlyIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0tJXt2ZXJzaW9ufS0l e3JlbGVhc2V9Citmb3IgaSBpbiBgZmluZCAuIC1uYW1lIFwqLmxvZyB8IGdyZXAgLUYgdGVzdHN1 aXRlLyB8IGdyZXAgLXYgJ2NvbmZpZy5sb2dcfGFjYXRzXHxhZGEnYDsgZG8KKyAgbG4gJGkgdGVz dGxvZ3MtJXtfdGFyZ2V0X3BsYXRmb3JtfS0le3ZlcnNpb259LSV7cmVsZWFzZX0vIHx8IDoKK2Rv bmUKK3RhciBjZiAtIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0tJXt2ZXJzaW9ufS0le3Jl bGVhc2V9IHwgYnppcDIgLTljIFwKKyAgfCB1dWVuY29kZSB0ZXN0bG9ncy0le190YXJnZXRfcGxh dGZvcm19LnRhci5iejIgfHwgOgorcm0gLXJmIHRlc3Rsb2dzLSV7X3RhcmdldF9wbGF0Zm9ybX0t JXt2ZXJzaW9ufS0le3JlbGVhc2V9CiAKICVjbGVhbgotcm0gLXJmICRSUE1fQlVJTERfUk9PVAor cm0gLXJmICV7YnVpbGRyb290fQogCiAlcG9zdAogL3NiaW4vaW5zdGFsbC1pbmZvIFwKQEAgLTEx NjQsNyArMTIxMCw3IEBAIGZpCiAvc2Jpbi9pbnN0YWxsLWluZm8gXAogICAtLWluZm8tZGlyPSV7 X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2duYXRfcm0uaW5mby5neiB8fCA6CiAvc2Jpbi9pbnN0YWxs LWluZm8gXAotICAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2duYXRfdWduX3Vu dy5pbmZvLmd6IHx8IDoKKyAgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nbmF0 X3Vnbi5pbmZvLmd6IHx8IDoKIC9zYmluL2luc3RhbGwtaW5mbyBcCiAgIC0taW5mby1kaXI9JXtf aW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ25hdC1zdHlsZS5pbmZvLmd6IHx8IDoKIApAQCAtMTE3Myw3 ICsxMjE5LDcgQEAgaWYgWyAkMSA9IDAgXTsgdGhlbgogICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1k ZWxldGUgXAogICAgIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ25hdF9ybS5p bmZvLmd6IHx8IDoKICAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIFwKLSAgICAtLWluZm8t ZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2duYXRfdWduX3Vudy5pbmZvLmd6IHx8IDoKKyAg ICAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2duYXRfdWduLmluZm8uZ3ogfHwg OgogICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgXAogICAgIC0taW5mby1kaXI9JXtfaW5m b2Rpcn0gJXtfaW5mb2Rpcn0vZ25hdC1zdHlsZS5pbmZvLmd6IHx8IDoKIGZpCkBAIC0xMjM0LDcg KzEyODAsNyBAQCBmaQogJXBvc3R1biAtbiBsaWJtdWRmbGFwIC1wIC9zYmluL2xkY29uZmlnCiAK ICVmaWxlcyAtZiAle25hbWV9LmxhbmcKLSVkZWZhdHRyKC0scm9vdCxyb290KQorJWRlZmF0dHIo LSxyb290LHJvb3QsLSkKICV7X3ByZWZpeH0vYmluL2NjCiAle19wcmVmaXh9L2Jpbi9jODkKICV7 X3ByZWZpeH0vYmluL2M5OQpAQCAtMTM1Nyw3ICsxNDAzLDcgQEAgZmkKICVkb2MgZ2NjL1JFQURN RSogcnBtLmRvYy9jaGFuZ2Vsb2dzL2djYy9DaGFuZ2VMb2cqIGdjYy9DT1BZSU5HKgogCiAlZmls ZXMgLW4gY3BwIC1mIGNwcGxpYi5sYW5nCi0lZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkZWZhdHRy KC0scm9vdCxyb290LC0pCiAvbGliL2NwcAogJXtfcHJlZml4fS9iaW4vY3BwCiAle19tYW5kaXJ9 L21hbjEvY3BwLjEqCkBAIC0xMzY4LDE0ICsxNDE0LDE0IEBAIGZpCiAle19wcmVmaXh9L2xpYmV4 ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vY2MxCiAKICVmaWxl cyAtbiBsaWJnY2MKLSVkZWZhdHRyKC0scm9vdCxyb290KQorJWRlZmF0dHIoLSxyb290LHJvb3Qs LSkKIC8le19saWJ9L2xpYmdjY19zLSV7Z2NjX3ZlcnNpb259LSV7REFURX0uc28uMQogLyV7X2xp Yn0vbGliZ2NjX3Muc28uMQogJXtfcHJlZml4fS9zYmluL2xpYmdjY19wb3N0X3VwZ3JhZGUKICVk b2MgZ2NjL0NPUFlJTkcuTElCCiAKICVmaWxlcyBjKysKLSVkZWZhdHRyKC0scm9vdCxyb290KQor JWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICV7X3ByZWZpeH0vYmluLyV7Z2NjX3RhcmdldF9wbGF0 Zm9ybX0tKisrCiAle19wcmVmaXh9L2Jpbi9nKysKICV7X3ByZWZpeH0vYmluL2MrKwpAQCAtMTQw OSwxMSArMTQ1NSwxMSBAQCBmaQogJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvZ2NjL2NwL0NoYW5n ZUxvZyoKIAogJWZpbGVzIC1uIGxpYnN0ZGMrKwotJWRlZmF0dHIoLSxyb290LHJvb3QpCislZGVm YXR0cigtLHJvb3Qscm9vdCwtKQogJXtfcHJlZml4fS8le19saWJ9L2xpYnN0ZGMrKy5zby42Kgog CiAlZmlsZXMgLW4gbGlic3RkYysrLWRldmVsCi0lZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkZWZh dHRyKC0scm9vdCxyb290LC0pCiAlZGlyICV7X3ByZWZpeH0vaW5jbHVkZS9jKysKICVkaXIgJXtf cHJlZml4fS9pbmNsdWRlL2MrKy8le2djY192ZXJzaW9ufQogJXtfcHJlZml4fS9pbmNsdWRlL2Mr Ky8le2djY192ZXJzaW9ufS9bXmdqb3NdKgpAQCAtMTQzNywxMCArMTQ4MywxNyBAQCBmaQogJXtf cHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vbGli c3RkYysrLnNvCiAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2dj Y192ZXJzaW9ufS9saWJzdXBjKysuYQogJWVuZGlmCi0lZG9jIHJwbS5kb2MvY2hhbmdlbG9ncy9s aWJzdGRjKystdjMvQ2hhbmdlTG9nKiBsaWJzdGRjKystdjMvUkVBRE1FKiBsaWJzdGRjKystdjMv ZG9jL2h0bWwvCislZG9jIHJwbS5kb2MvY2hhbmdlbG9ncy9saWJzdGRjKystdjMvQ2hhbmdlTG9n KiBsaWJzdGRjKystdjMvUkVBRE1FKgogCi0lZmlsZXMgb2JqYworJWlmICV7YnVpbGRfbGlic3Rk Y3h4X2RvY3N9CislZmlsZXMgLW4gbGlic3RkYysrLWRvY3MKICVkZWZhdHRyKC0scm9vdCxyb290 KQorJXtfbWFuZGlyfS9tYW4zLyoKKyVkb2MgcnBtLmRvYy9saWJzdGRjKystdjMvaHRtbAorJWVu ZGlmCisKKyVmaWxlcyBvYmpjCislZGVmYXR0cigtLHJvb3Qscm9vdCwtKQogJWRpciAle19wcmVm aXh9L2xpYi9nY2MKICVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9y bX0KICVkaXIgJXtfcHJlZml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2Nf dmVyc2lvbn0KQEAgLTE0NjYsMTggKzE1MTksMTggQEAgZmkKICVkb2MgbGlib2JqYy9USFJFQURT KiBycG0uZG9jL2NoYW5nZWxvZ3MvbGlib2JqYy9DaGFuZ2VMb2cqCiAKICVmaWxlcyBvYmpjKysK LSVkZWZhdHRyKC0scm9vdCxyb290KQorJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICVkaXIgJXtf cHJlZml4fS9saWJleGVjL2djYwogJWRpciAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0KICVkaXIgJXtfcHJlZml4fS9saWJleGVjL2djYy8le2djY190YXJnZXRf cGxhdGZvcm19LyV7Z2NjX3ZlcnNpb259CiAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3Rh cmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vY2Mxb2JqcGx1cwogCiAlZmlsZXMgLW4gbGli b2JqYwotJWRlZmF0dHIoLSxyb290LHJvb3QpCislZGVmYXR0cigtLHJvb3Qscm9vdCwtKQogJXtf cHJlZml4fS8le19saWJ9L2xpYm9iamMuc28uMioKIAogJWZpbGVzIGdmb3J0cmFuCi0lZGVmYXR0 cigtLHJvb3Qscm9vdCkKKyVkZWZhdHRyKC0scm9vdCxyb290LC0pCiAle19wcmVmaXh9L2Jpbi9n Zm9ydHJhbgogJXtfcHJlZml4fS9iaW4vZjk1CiAle19tYW5kaXJ9L21hbjEvZ2ZvcnRyYW4uMSoK QEAgLTE1MTIsMTIgKzE1NjUsMTIgQEAgZmkKICVkb2MgcnBtLmRvYy9nZm9ydHJhbi8qCiAKICVm aWxlcyAtbiBsaWJnZm9ydHJhbgotJWRlZmF0dHIoLSxyb290LHJvb3QpCislZGVmYXR0cigtLHJv b3Qscm9vdCwtKQogJXtfcHJlZml4fS8le19saWJ9L2xpYmdmb3J0cmFuLnNvLjMqCiAKICVpZiAl e2J1aWxkX2phdmF9CiAlZmlsZXMgamF2YQotJWRlZmF0dHIoLSxyb290LHJvb3QpCislZGVmYXR0 cigtLHJvb3Qscm9vdCwtKQogJXtfcHJlZml4fS9iaW4vZ2NqCiAle19wcmVmaXh9L2Jpbi9namF2 YWgKICV7X3ByZWZpeH0vYmluL2djamgKQEAgLTE1NTksNyArMTYxMiw3IEBAIGZpCiAlZG9jIHJw bS5kb2MvY2hhbmdlbG9ncy9nY2MvamF2YS9DaGFuZ2VMb2cqCiAKICVmaWxlcyAtbiBsaWJnY2oK LSVkZWZhdHRyKC0scm9vdCxyb290KQorJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICV7X3ByZWZp eH0vYmluL2p2LWNvbnZlcnQKICV7X3ByZWZpeH0vYmluL2dpagogJXtfcHJlZml4fS9iaW4vZ2ph cgpAQCAtMTYyMCw3ICsxNjczLDcgQEAgZmkKICVlbmRpZgogCiAlZmlsZXMgLW4gbGliZ2NqLWRl dmVsCi0lZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkZWZhdHRyKC0scm9vdCxyb290LC0pCiAlZGly ICV7X3ByZWZpeH0vbGliL2djYwogJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0 X3BsYXRmb3JtfQogJWRpciAle19wcmVmaXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3Jt fS8le2djY192ZXJzaW9ufQpAQCAtMTY1Myw3ICsxNzA2LDcgQEAgZmkKICVkb2MgcnBtLmRvYy9s aWJqYXZhLyoKIAogJWZpbGVzIC1uIGxpYmdjai1zcmMKLSVkZWZhdHRyKC0scm9vdCxyb290KQor JWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICVkaXIgJXtfcHJlZml4fS9zaGFyZS9qYXZhCiAle19w cmVmaXh9L3NoYXJlL2phdmEvc3JjKi56aXAKICV7X3ByZWZpeH0vc2hhcmUvamF2YS9saWJnY2ot dG9vbHMtJXt2ZXJzaW9ufS5qYXIKQEAgLTE2NjEsNyArMTcxNCw3IEBAIGZpCiAKICVpZiAle2J1 aWxkX2FkYX0KICVmaWxlcyBnbmF0Ci0lZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkZWZhdHRyKC0s cm9vdCxyb290LC0pCiAle19wcmVmaXh9L2Jpbi9nbmF0KgogJXtfaW5mb2Rpcn0vZ25hdCoKICVk aXIgJXtfcHJlZml4fS9saWIvZ2NjCkBAIC0xNjg4LDEyICsxNzQxLDEyIEBAIGZpCiAlZG9jIHJw bS5kb2MvY2hhbmdlbG9ncy9nY2MvYWRhL0NoYW5nZUxvZyoKIAogJWZpbGVzIC1uIGxpYmduYXQK LSVkZWZhdHRyKC0scm9vdCxyb290KQorJWRlZmF0dHIoLSxyb290LHJvb3QsLSkKICV7X3ByZWZp eH0vJXtfbGlifS9saWJnbmF0LSouc28KICV7X3ByZWZpeH0vJXtfbGlifS9saWJnbmFybC0qLnNv CiAKICVmaWxlcyAtbiBsaWJnbmF0LWRldmVsCi0lZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkZWZh dHRyKC0scm9vdCxyb290LC0pCiAlZGlyICV7X3ByZWZpeH0vbGliL2djYwogJWRpciAle19wcmVm aXh9L2xpYi9nY2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfQogJWRpciAle19wcmVmaXh9L2xpYi9n Y2MvJXtnY2NfdGFyZ2V0X3BsYXRmb3JtfS8le2djY192ZXJzaW9ufQpAQCAtMTcxNCwxOCArMTc2 NywxOCBAQCBmaQogJWVuZGlmCiAKICVmaWxlcyAtbiBsaWJnb21wCi0lZGVmYXR0cigtLHJvb3Qs cm9vdCkKKyVkZWZhdHRyKC0scm9vdCxyb290LC0pCiAle19wcmVmaXh9LyV7X2xpYn0vbGliZ29t cC5zby4xKgogJXtfaW5mb2Rpcn0vbGliZ29tcC5pbmZvKgogJWRvYyBycG0uZG9jL2NoYW5nZWxv Z3MvbGliZ29tcC9DaGFuZ2VMb2cqCiAKICVmaWxlcyAtbiBsaWJtdWRmbGFwCi0lZGVmYXR0cigt LHJvb3Qscm9vdCkKKyVkZWZhdHRyKC0scm9vdCxyb290LC0pCiAle19wcmVmaXh9LyV7X2xpYn0v bGlibXVkZmxhcC5zby4wKgogJXtfcHJlZml4fS8le19saWJ9L2xpYm11ZGZsYXB0aC5zby4wKgog CiAlZmlsZXMgLW4gbGlibXVkZmxhcC1kZXZlbAotJWRlZmF0dHIoLSxyb290LHJvb3QpCislZGVm YXR0cigtLHJvb3Qscm9vdCwtKQogJWRpciAle19wcmVmaXh9L2xpYi9nY2MKICVkaXIgJXtfcHJl Zml4fS9saWIvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0KICVkaXIgJXtfcHJlZml4fS9saWIv Z2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0KQEAgLTE3NTAsNiArMTgw Myw2OCBAQCBmaQogJWRvYyBycG0uZG9jL2NoYW5nZWxvZ3MvbGlibXVkZmxhcC9DaGFuZ2VMb2cq CiAKICVjaGFuZ2Vsb2cKKyogVGh1IE1heSAxNCAyMDA5IEpha3ViIEplbGluZWsgPGpha3ViQHJl ZGhhdC5jb20+IDQuNC4wLTUKKy0gdXBkYXRlIGZyb20gZ2NjLTRfNC1icmFuY2gKKyAgLSBQUnMg YysrLzE3Mzk1LCBjLzM5OTgzLCBmb3J0cmFuLzM4ODYzLCBmb3J0cmFuLzM4OTU2LCBmb3J0cmFu LzM5ODc5LAorCWZvcnRyYW4vNDAwMTgsIGxpYnN0ZGMrKy8zOTU0NiwgbGlic3RkYysrLzQwMDM4 LCBtaWRkbGUtZW5kLzM5OTg2LAorCW1pZGRsZS1lbmQvNDAwMjEsIG1pZGRsZS1lbmQvNDAwMjMs IG1pZGRsZS1lbmQvNDAwNDMsCisJbWlkZGxlLWVuZC80MDA1NywgbWlkZGxlLWVuZC80MDA4MCwg dGFyZ2V0LzM3MTc5LAorCXRyZWUtb3B0aW1pemF0aW9uLzQwMDYyLCB0cmVlLW9wdGltaXphdGlv bi80MDA3NAorLSBmaXggRm9ydHJhbiBGTVQ9IGNoYXJhY3RlciBhcnJheSBhcmd1bWVudHMgKCM0 OTIyMDksIFBSIGZvcnRyYW4vMzk4NjUpCistIGFsbG93IHB1dHRpbmcgYnJlYWtwb2ludHMgb24g Rm9ydHJhbiBFTkR7U1VCUk9VVElORSxGVU5DVElPTn0KKyAgKFBSIGZvcnRyYW4vMzQxNTMpCist IGluY29ycG9yYXRlIGNoYW5nZXMgc3VnZ2VzdGVkIGluIGdjYzQ0IHBhY2thZ2UgcmV2aWV3ICgj NDk4OTExKQorCisqIFdlZCBNYXkgIDYgMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQu Y29tPiA0LjQuMC00CistIHVwZGF0ZSBmcm9tIGdjYy00XzQtYnJhbmNoCisgIC0gUFJzIGMrKy80 MDAxMywgbGliZ2NqLzM5ODk5LCBsaWJzdGRjKysvMzk4NjgsIGxpYnN0ZGMrKy8zOTg4MCwKKwls aWJzdGRjKysvMzk4ODEsIGxpYnN0ZGMrKy8zOTg4MiwgbGlic3RkYysrLzM5OTA5LCBtaWRkbGUt ZW5kLzM5OTM3LAorCXJ0bC1vcHRpbWl6YXRpb24vMzk5MTQsIHRhcmdldC8zOTU2NSwgdGVzdHN1 aXRlLzM5NzY5LAorCXRlc3RzdWl0ZS8zOTc3NiwgdGVzdHN1aXRlLzM5NzkwLCB0ZXN0c3VpdGUv Mzk4MDcsCisJdHJlZS1vcHRpbWl6YXRpb24vMzk5NDEKKyAgLSBmaXggcGhpcHJvcCB0dXBsaWZp Y2F0aW9uICgjNDk2NDAwLCBQUiB0cmVlLW9wdGltaXphdGlvbi80MDAyMikKKy0gZG9uJ3QgYWRk IGFydGlmaWNpYWwgZGVmYXVsdCBjYXNlIGxhYmVsIGlmIHN3aXRjaCBsYWJlbHMgYWxyZWFkeQor ICBjb3ZlciB0aGUgd2hvbGUgcmFuZ2UgKFBSIG1pZGRsZS1lbmQvMzk2NjYpCistIGZpeCBEU0Ug d2l0aCBibG9jayByZWFkcyAoUFIgbWlkZGxlLWVuZC80MDAzNSkKKy0gZml4IGRlYnVnaW5mbyBm b3IgQysrIHR5cGVkZWYgc3RydWN0IHsuLi59IFQgKFBSIGRlYnVnLzM1NDYzKQorLSByZW1vdmUg c29tZSB1bm5lY2Vzc2FyeSBwYWRkaW5nIG9uIHg4Nl82NC9pMzg2IGFkZGVkIGZvciA+PSA0IGNv bnRyb2wKKyAgZmxvdyBpbnNucyBpbiBhIDE2LWJ5dGUgYmxvY2sgKFBSIHRhcmdldC8zOTk0MikK Ky0gZG9uJ3QgY3JlYXRlIGludmFsaWQgRFdBUkYgbG9jYXRpb24gbGlzdHMgY29udGFpbmluZyBE V19PUF9yZWcqCisgIGZvbGxvd2VkIGJ5IERXX09QX2RlcmVmKiwgaW5zdGVhZCB1c2UgRFdfT1Bf YnJlZyogMCAoIzQ4MTY3NSkKKy0gYWRkIGxpYnN0ZGMrKy1kb2NzIHN1YnBhY2thZ2UsIG1vdmUg aHRtbCBtYW51YWwgdG8gaXQsIGFkZCBkb3h5Z2VuCisgIGdlbmVyYXRlZCBodG1sIGFuZCBtYW4g cGFnZXMKKworKiBNb24gQXByIDI3IDIwMDkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNv bT4gNC40LjAtMworLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAorICAtIFBSIGJvb3RzdHJh cC8zOTczOQorICAtIGZpeCAtV3VudXNlZC12YWx1ZSAoIzQ5NzU0NSwgUFIgYy8zOTg4OSkKKy0g YmFja3BvcnQgZnVydGhlciBwb3dlcjctbWVpc3NuZXIgYnJhbmNoIGNoYW5nZXMgKCM0OTc4MTYp CistIGZpeCByZWctc3RhY2sgSUNFIG9uIFNQRUMyazYgNDUzLnBvdnJheSB3aXRoIC1tMzIgLU8z IC1tc3NlMworICAoUFIgdGFyZ2V0LzM5ODU2KQorLSBmaXggeDg2XzY0IElDRSBvbiBwYXNzaW5n IHN0cnVjdHVyZSB3aXRoIGZsZXhpYmxlIGFycmF5IG1lbWJlcgorICAoUFIgdGFyZ2V0LzM5OTAz KQorCisqIEZyaSBBcHIgMjQgMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0 LjQuMC0yCistIHVwZGF0ZSBmcm9tIGdjYy00XzQtYnJhbmNoCisgIC0gUFIgYysrLzM4MjI4Cist IGZpeCBmb2xkaW5nIG9mIGNvbmQgZXhwciB3aXRoIGNvbXBhcmlzb24gdG8gTUFYL01JTiAoUFIg bWlkZGxlLWVuZC8zOTg2NykKKy0gZml4IHVwIGdjYy1nbmF0IGluc3RhbGwtaW5mbyBhcmd1bWVu dHMgKCM0NTI3ODMpCisKKyogVGh1IEFwciAyMyAyMDA5IEpha3ViIEplbGluZWsgPGpha3ViQHJl ZGhhdC5jb20+IDQuNC4wLTEKKy0gdXBkYXRlIGZyb20gZ2NjLTRfNC1icmFuY2gKKyAgLSBHQ0Mg NC40LjAgcmVsZWFzZQorICAtIFBScyBsaWJzdGRjKysvMzk4MDIsIGMrKy8zOTYzOSwgYy8zOTg1 NSwgcnRsLW9wdGltaXphdGlvbi8zOTc2MiwKKwl0ZXN0c3VpdGUvMzk3ODEsIHRyZWUtb3B0aW1p emF0aW9uLzM5ODI0CistIGZpeCB1cCBEU0UgKFBSIHJ0bC1vcHRpbWl6YXRpb24vMzk3OTQpCist IGRlYnVnaW5mbyBmaXhlcyBmb3IgVkxBIGFuZCBuZXN0ZWQvY29udGFpbmVkIGZ1bmN0aW9ucyAo IzQ1OTM3NCkKKy0gaW1wcm92ZSAtZnRyZWUtc3dpdGNoLWNvbnZlcnNpb24gb3B0aW1pemF0aW9u IGlmIHRoZSBjb25zdGFudCBpcyB0aGUKKyAgc2FtZSBpbiBhbGwgY2FzZXMKKworKiBNb24gQXBy IDIwIDIwMDkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC40LjAtMC4zNQorLSB1 cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAorICAtIFBScyBtaWRkbGUtZW5kLzM5ODA0LCB0YXJn ZXQvMzk2NzgsIHRhcmdldC8zOTc2NywgdHJlZS1vcHRpbWl6YXRpb24vMzk2NzUsCisJdHJlZS1v cHRpbWl6YXRpb24vMzk3NjQKKwogKiBUdWUgQXByIDE0IDIwMDkgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4gNC40LjAtMC4zNAogLSB1cGRhdGUgZnJvbSBnY2MtNF80LWJyYW5jaAog ICAtIEdDQyA0LjQuMC1yYzEKQEAgLTE3ODcsNyArMTkwMiw3IEBAIGZpCiAJdHJlZS1vcHRpbWl6 YXRpb24vMzk1NTcKIC0gZW1pdCBkZWJ1Z2luZm8gZm9yIGJsb2NrIGxvY2FsIGV4dGVybnMgaW4g QyAoUFIgZGVidWcvMzk1NjMpCiAtIGZpeCAtbWFsdGl2ZWMgY29uZGl0aW9uYWwgdmVjdG9yIG1h Y3JvIChQUiB0YXJnZXQvMzk1NTgpCi0tIHRlYWNoIGZ3cHJvcCB0byBoYW5kbGUgYXNtIChQUiBy dGwtb3B0aW1pemF0aW9uLzM5NTQzKQorLSB0ZWFjaCBmd3Byb3AgdG8gaGFuZGxlIGFzbSAoUFIg aW5saW5lLWFzbS8zOTU0MykKIAogKiBUdWUgTWFyIDI0IDIwMDkgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4gNC40LjAtMC4yOQogLSB1cGRhdGUgZnJvbSB0cnVuawpAQCAtMTgyNCw3 ICsxOTM5LDcgQEAgZmkKIC0gZml4IG1lbWNtcCBidWlsdGluIGFzbSByZWRpcmVjdGlvbiAoUFIg bWlkZGxlLWVuZC8zOTQ0MykKIC0gZml4IHNwYXJjdjkgcHJvZmlsZWRib290c3RyYXAgKFBSIGJv b3RzdHJhcC8zOTQ1NCkKIAotKiBUaHUgTWFyIDEyIDIwMDkgRGVubmlzIEdpbG1vcmUgPGRlbm5p c0BhdXNpbC51cz4gCisqIFRodSBNYXIgMTIgMjAwOSBEZW5uaXMgR2lsbW9yZSA8ZGVubmlzQGF1 c2lsLnVzPgogLSBkb24ndCBidWlsZCB3aXRoIGdyYXBoaXRlIHN1cHBvcnQgb24gc3BhcmMgYXJj aGVzCiAgIC0gc3RpbGwgbWlzc2luZyBzb21lIGRlcHMKIAoKZGlmZiAtLWdpdCBhL2djYzQ0LWF0 b20ucGF0Y2ggYi9nY2M0NC1hdG9tLnBhdGNoCmluZGV4IGUxMjJlNDYuLmJkZGQxM2UgMTAwNjQ0 Ci0tLSBhL2djYzQ0LWF0b20ucGF0Y2gKKysrIGIvZ2NjNDQtYXRvbS5wYXRjaApAQCAtMjQwOSw3 ICsyNDA5LDcgQEAKICAgICAgfCBtX05PQ09OQSB8IG1fQ09SRTIgfCBtX0dFTkVSSUM7CiAgCiAg c3RhdGljIGVudW0gc3RyaW5nb3BfYWxnIHN0cmluZ29wX2FsZyA9IG5vX3N0cmluZ29wOwotQEAg LTE5NTIsNyArMjAzOCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHR0IHByb2Nlc3Nvcl90YXJn ZXQKK0BAIC0xOTUzLDcgKzIwMzksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHB0dCBwcm9jZXNz b3JfdGFyZ2V0CiAgICB7JmNvcmUyX2Nvc3QsIDE2LCAxMCwgMTYsIDEwLCAxNn0sCiAgICB7Jmdl bmVyaWMzMl9jb3N0LCAxNiwgNywgMTYsIDcsIDE2fSwKICAgIHsmZ2VuZXJpYzY0X2Nvc3QsIDE2 LCAxMCwgMTYsIDEwLCAxNn0sCkBAIC0yNDE5LDcgKzI0MTksNyBAQAogIH07CiAgCiAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IGNwdV9uYW1lc1tUQVJHRVRfQ1BVX0RFRkFVTFRfbWF4XSA9Ci1A QCAtMTk3MCw2ICsyMDU3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGNwdV9uYW1lc1tU QVJHRQorQEAgLTE5NzEsNiArMjA1OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBjcHVf bmFtZXNbVEFSR0UKICAgICJwcmVzY290dCIsCiAgICAibm9jb25hIiwKICAgICJjb3JlMiIsCkBA IC0yNDI3LDcgKzI0MjcsNyBAQAogICAgImdlb2RlIiwKICAgICJrNiIsCiAgICAiazYtMiIsCi1A QCAtMjUyOCw2ICsyNjE2LDkgQEAgb3ZlcnJpZGVfb3B0aW9ucyAoYm9vbCBtYWluX2FyZ3NfcCkK K0BAIC0yNTI5LDYgKzI2MTcsOSBAQCBvdmVycmlkZV9vcHRpb25zIChib29sIG1haW5fYXJnc19w KQogICAgICAgIHsiY29yZTIiLCBQUk9DRVNTT1JfQ09SRTIsIENQVV9DT1JFMiwKICAJUFRBXzY0 QklUIHwgUFRBX01NWCB8IFBUQV9TU0UgfCBQVEFfU1NFMiB8IFBUQV9TU0UzCiAgCXwgUFRBX1NT U0UzIHwgUFRBX0NYMTZ9LApAQCAtMjQzNyw3ICsyNDM3LDcgQEAKICAgICAgICB7Imdlb2RlIiwg UFJPQ0VTU09SX0dFT0RFLCBDUFVfR0VPREUsCiAgCVBUQV9NTVggfCBQVEFfM0ROT1cgfCBQVEFf M0ROT1dfQSB8UFRBX1BSRUZFVENIX1NTRX0sCiAgICAgICAgeyJrNiIsIFBST0NFU1NPUl9LNiwg Q1BVX0s2LCBQVEFfTU1YfSwKLUBAIC0xMjg2Niw2ICsxMjk1NywyNjMgQEAgaXg4Nl9leHBhbmRf dW5hcnlfb3BlcmF0b3IgKGVudW0gcnR4X2NvZAorQEAgLTEyOTAzLDYgKzEyOTk0LDI2MyBAQCBp eDg2X2V4cGFuZF91bmFyeV9vcGVyYXRvciAoZW51bSBydHhfY29kCiAgICAgIGVtaXRfbW92ZV9p bnNuIChvcGVyYW5kc1swXSwgZHN0KTsKICB9CiAgCkBAIC0yNzAxLDcgKzI3MDEsNyBAQAogIC8q IFJldHVybiBUUlVFIG9yIEZBTFNFIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1bmFyeSBvcGVy YXRvciBtZWV0cyB0aGUKICAgICBhcHByb3ByaWF0ZSBjb25zdHJhaW50cy4gICovCiAgCi1AQCAt MTg5ODUsNiArMTkzMzMsNyBAQCBpeDg2X2lzc3VlX3JhdGUgKHZvaWQpCitAQCAtMTkwMjIsNiAr MTkzNzAsNyBAQCBpeDg2X2lzc3VlX3JhdGUgKHZvaWQpCiAgICBzd2l0Y2ggKGl4ODZfdHVuZSkK ICAgICAgewogICAgICBjYXNlIFBST0NFU1NPUl9QRU5USVVNOgpAQCAtMjcwOSw3ICsyNzA5LDcg QEAKICAgICAgY2FzZSBQUk9DRVNTT1JfSzY6CiAgICAgICAgcmV0dXJuIDI7CiAgCi1AQCAtMTkw NTEsNDEgKzE5NDAwLDIxIEBAIGl4ODZfZmxhZ3NfZGVwZW5kZW50IChydHggaW5zbiwgcnR4IGRl cF8KK0BAIC0xOTA4OCw0MSArMTk0MzcsMjEgQEAgaXg4Nl9mbGFnc19kZXBlbmRlbnQgKHJ0eCBp bnNuLCBydHggZGVwXwogICAgcmV0dXJuIDE7CiAgfQogIApAQCAtMjc2NCw3ICsyNzY0LDcgQEAK ICB9CiAgCiAgc3RhdGljIGludAotQEAgLTE5MTEzLDggKzE5NDQyLDE5IEBAIGl4ODZfYWRqdXN0 X2Nvc3QgKHJ0eCBpbnNuLCBydHggbGluaywgcnQKK0BAIC0xOTE1MCw4ICsxOTQ3OSwxOSBAQCBp eDg2X2FkanVzdF9jb3N0IChydHggaW5zbiwgcnR4IGxpbmssIHJ0CiAgICAgIHsKICAgICAgY2Fz ZSBQUk9DRVNTT1JfUEVOVElVTToKICAgICAgICAvKiBBZGRyZXNzIEdlbmVyYXRpb24gSW50ZXJs b2NrIGFkZHMgYSBjeWNsZSBvZiBsYXRlbmN5LiAgKi8KQEAgLTI3ODYsNyArMjc4Niw3IEBACiAg CiAgICAgICAgLyogPz8/IENvbXBhcmVzIHBhaXIgd2l0aCBqdW1wL3NldGNjLiAgKi8KICAgICAg ICBpZiAoaXg4Nl9mbGFnc19kZXBlbmRlbnQgKGluc24sIGRlcF9pbnNuLCBpbnNuX3R5cGUpKQot QEAgLTE5MTIzLDcgKzE5NDYzLDcgQEAgaXg4Nl9hZGp1c3RfY29zdCAocnR4IGluc24sIHJ0eCBs aW5rLCBydAorQEAgLTE5MTYwLDcgKzE5NTAwLDcgQEAgaXg4Nl9hZGp1c3RfY29zdCAocnR4IGlu c24sIHJ0eCBsaW5rLCBydAogICAgICAgIC8qIEZsb2F0aW5nIHBvaW50IHN0b3JlcyByZXF1aXJl IHZhbHVlIHRvIGJlIHJlYWR5IG9uZSBjeWNsZSBlYXJsaWVyLiAgKi8KICAgICAgICBpZiAoaW5z bl90eXBlID09IFRZUEVfRk1PVgogIAkgICYmIGdldF9hdHRyX21lbW9yeSAoaW5zbikgPT0gTUVN T1JZX1NUT1JFCkBAIC0yNzk1LDcgKzI3OTUsNyBAQAogIAljb3N0ICs9IDE7CiAgICAgICAgYnJl YWs7CiAgCi1AQCAtMTkxNDYsNyArMTk0ODYsNyBAQCBpeDg2X2FkanVzdF9jb3N0IChydHggaW5z biwgcnR4IGxpbmssIHJ0CitAQCAtMTkxODMsNyArMTk1MjMsNyBAQCBpeDg2X2FkanVzdF9jb3N0 IChydHggaW5zbiwgcnR4IGxpbmssIHJ0CiAgCSBpbiBwYXJhbGxlbCB3aXRoIHByZXZpb3VzIGlu c3RydWN0aW9uIGluIGNhc2UKICAJIHByZXZpb3VzIGluc3RydWN0aW9uIGlzIG5vdCBuZWVkZWQg dG8gY29tcHV0ZSB0aGUgYWRkcmVzcy4gICovCiAgICAgICAgaWYgKChtZW1vcnkgPT0gTUVNT1JZ X0xPQUQgfHwgbWVtb3J5ID09IE1FTU9SWV9CT1RIKQpAQCAtMjgwNCw3ICsyODA0LDcgQEAKICAJ ewogIAkgIC8qIENsYWltIG1vdmVzIHRvIHRha2Ugb25lIGN5Y2xlLCBhcyBjb3JlIGNhbiBpc3N1 ZSBvbmUgbG9hZAogIAkgICAgIGF0IHRpbWUgYW5kIHRoZSBuZXh0IGxvYWQgY2FuIHN0YXJ0IGN5 Y2xlIGxhdGVyLiAgKi8KLUBAIC0xOTE3NSw3ICsxOTUxNSw3IEBAIGl4ODZfYWRqdXN0X2Nvc3Qg KHJ0eCBpbnNuLCBydHggbGluaywgcnQKK0BAIC0xOTIxMiw3ICsxOTU1Miw3IEBAIGl4ODZfYWRq dXN0X2Nvc3QgKHJ0eCBpbnNuLCBydHggbGluaywgcnQKICAJIGluIHBhcmFsbGVsIHdpdGggcHJl dmlvdXMgaW5zdHJ1Y3Rpb24gaW4gY2FzZQogIAkgcHJldmlvdXMgaW5zdHJ1Y3Rpb24gaXMgbm90 IG5lZWRlZCB0byBjb21wdXRlIHRoZSBhZGRyZXNzLiAgKi8KICAgICAgICBpZiAoKG1lbW9yeSA9 PSBNRU1PUllfTE9BRCB8fCBtZW1vcnkgPT0gTUVNT1JZX0JPVEgpCkBAIC0yODEzLDcgKzI4MTMs NyBAQAogIAl7CiAgCSAgLyogQ2xhaW0gbW92ZXMgdG8gdGFrZSBvbmUgY3ljbGUsIGFzIGNvcmUg Y2FuIGlzc3VlIG9uZSBsb2FkCiAgCSAgICAgYXQgdGltZSBhbmQgdGhlIG5leHQgbG9hZCBjYW4g c3RhcnQgY3ljbGUgbGF0ZXIuICAqLwotQEAgLTE5MTkyLDYgKzE5NTMyLDcgQEAgaXg4Nl9hZGp1 c3RfY29zdCAocnR4IGluc24sIHJ0eCBsaW5rLCBydAorQEAgLTE5MjI5LDYgKzE5NTY5LDcgQEAg aXg4Nl9hZGp1c3RfY29zdCAocnR4IGluc24sIHJ0eCBsaW5rLCBydAogICAgICBjYXNlIFBST0NF U1NPUl9BVEhMT046CiAgICAgIGNhc2UgUFJPQ0VTU09SX0s4OgogICAgICBjYXNlIFBST0NFU1NP Ul9BTURGQU0xMDoKQEAgLTI4MjEsNyArMjgyMSw3IEBACiAgICAgIGNhc2UgUFJPQ0VTU09SX0dF TkVSSUMzMjoKICAgICAgY2FzZSBQUk9DRVNTT1JfR0VORVJJQzY0OgogICAgICAgIG1lbW9yeSA9 IGdldF9hdHRyX21lbW9yeSAoaW5zbik7Ci1AQCAtMTkyMDAsNyArMTk1NDEsNyBAQCBpeDg2X2Fk anVzdF9jb3N0IChydHggaW5zbiwgcnR4IGxpbmssIHJ0CitAQCAtMTkyMzcsNyArMTk1NzgsNyBA QCBpeDg2X2FkanVzdF9jb3N0IChydHggaW5zbiwgcnR4IGxpbmssIHJ0CiAgCSBpbiBwYXJhbGxl bCB3aXRoIHByZXZpb3VzIGluc3RydWN0aW9uIGluIGNhc2UKICAJIHByZXZpb3VzIGluc3RydWN0 aW9uIGlzIG5vdCBuZWVkZWQgdG8gY29tcHV0ZSB0aGUgYWRkcmVzcy4gICovCiAgICAgICAgaWYg KChtZW1vcnkgPT0gTUVNT1JZX0xPQUQgfHwgbWVtb3J5ID09IE1FTU9SWV9CT1RIKQoKZGlmZiAt LWdpdCBhL2djYzQ0LWxpYmphdmEtaTM4Ni5wYXRjaCBiL2djYzQ0LWxpYmphdmEtaTM4Ni5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRhZDA5NC4uMDAwMDAwMAotLS0gYS9n Y2M0NC1saWJqYXZhLWkzODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1k aWZmIC11cCAuL2xpYmphdmEvY29uZmlndXJlLmFjLnNhdiAuL2xpYmphdmEvY29uZmlndXJlLmFj Ci0tLS0gLi9saWJqYXZhL2NvbmZpZ3VyZS5hYy5zYXYJMjAwOS0wNC0wMyAxNDo1NjozNS4wMDAw MDAwMDAgLTA0MDAKLSsrKyAuL2xpYmphdmEvY29uZmlndXJlLmFjCTIwMDktMDQtMDMgMTQ6NTY6 NTAuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMTg4MSw3ICsxODgxLDcgQEAgdGhlbgotICAgICBjYXNl ICR7aG9zdH0gaW4KLSAgICAgICAqLW1pbmd3KiB8ICotY3lnd2luKikKLSAgICAgICAgIGhvc3Rf Y3B1PXg4Njs7Ci0tICAgICAgaTQ4Ni0qIHwgaTU4Ni0qIHwgaTY4Ni0qKQotKyAgICAgIGkzODYt KiB8IGk0ODYtKiB8IGk1ODYtKiB8IGk2ODYtKikKLSAgICAgICAgIGhvc3RfY3B1PWkzODY7Owot ICAgICAgIHg4Nl82NC0qKQotICAgICAgICAgaG9zdF9jcHU9YW1kNjQ7OwotZGlmZiAtdXAgLi9s aWJqYXZhL2NvbmZpZ3VyZS5zYXYgLi9saWJqYXZhL2NvbmZpZ3VyZQotLS0tIC4vbGliamF2YS9j b25maWd1cmUuc2F2CTIwMDktMDQtMDMgMTQ6NTY6MjcuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9s aWJqYXZhL2NvbmZpZ3VyZQkyMDA5LTA0LTAzIDE1OjAyOjU1LjAwMDAwMDAwMCAtMDQwMAotQEAg LTI4Mjg1LDcgKzI4Mjg1LDcgQEAgZWNobyAiJHtFQ0hPX1R9aG9zdCBpcyAke2hvc3R9IiA+JjYK LSAgICAgY2FzZSAke2hvc3R9IGluCi0gICAgICAgKi1taW5ndyogfCAqLWN5Z3dpbiopCi0gICAg ICAgICBob3N0X2NwdT14ODY7OwotLSAgICAgIGk0ODYtKiB8IGk1ODYtKiB8IGk2ODYtKikKLSsg ICAgICBpMzg2LSogfCBpNDg2LSogfCBpNTg2LSogfCBpNjg2LSopCi0gICAgICAgICBob3N0X2Nw dT1pMzg2OzsKLSAgICAgICB4ODZfNjQtKikKLSAgICAgICAgIGhvc3RfY3B1PWFtZDY0OzsKCmRp ZmYgLS1naXQgYS9nY2M0NC1saWJzdGRjKystZG9jcy5wYXRjaCBiL2djYzQ0LWxpYnN0ZGMrKy1k b2NzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1Y2FhZmUKLS0t IC9kZXYvbnVsbAorKysgYi9nY2M0NC1saWJzdGRjKystZG9jcy5wYXRjaApAQCAtMCwwICsxLDQ3 IEBACistLS0gbGlic3RkYysrLXYzL2RvYy9odG1sL2luZGV4Lmh0bWwJMjAwOS0wMS0xNCAxMjow NjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJzdGRjKystdjMvZG9jL2h0bWwvaW5kZXguaHRt bAkyMDA5LTA1LTA2IDA5OjE3OjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTEyLDcgKzEyLDggQEAK KyA8ZGl2PgorIDxoMT5UaGUgR05VIEMrKyBMaWJyYXJ5IERvY3VtZW50YXRpb248L2gxPgorIAor LTxwPkNvcHlyaWdodCAyMDA4IEZTRjwvcD4KKys8cD5SZWxlYXNlIDQuNC4wPC9wPgorKzxwPkNv cHlyaWdodCAyMDA4LCAyMDA5IEZTRjwvcD4KKyAKKyA8cD4KKyAgIFBlcm1pc3Npb24gaXMgZ3Jh bnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcworLS0tIGxpYnN0ZGMr Ky12My9kb2MvaHRtbC9hcGkuaHRtbAkyMDA5LTA0LTIwIDIxOjIxOjE1LjAwMDAwMDAwMCArMDIw MAorKysrIGxpYnN0ZGMrKy12My9kb2MvaHRtbC9hcGkuaHRtbAkyMDA5LTA1LTA2IDA5OjE3OjI0 LjAwMDAwMDAwMCArMDIwMAorQEAgLTE3LDI3ICsxNywxMiBAQCB1c2VmdWwgZm9yIGV4YW1pbmlu ZyB0aGUgc2lnbmF0dXJlcyBvZiBwCisgdGhlIGxpYnJhcnkgY2xhc3NlcywgZmluZGluZyBvdXQg d2hhdCBpcyBpbiBhIHBhcnRpY3VsYXIgaW5jbHVkZQorIGZpbGUsIGxvb2tpbmcgYXQgaW5oZXJp dGFuY2UgZGlhZ3JhbXMsIGV0Yy4KKyA8L3A+PHA+CistVGhlIHNvdXJjZS1sZXZlbCBkb2N1bWVu dGF0aW9uIGZvciB0aGUgbW9zdCByZWNlbnQgcmVsZWFzZXMgY2FuIGJlCistdmlld2VkIG9ubGlu ZToKKy08L3A+PGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iZGlzYyI+PGxpPjxw PgorLSAgICAgIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0ibGlic3RkYysrLWh0bWwtVVNFUlMtMy40 L2luZGV4Lmh0bWwiIHRhcmdldD0iX3RvcCI+Zm9yIHRoZSAzLjQgcmVsZWFzZQorK1RoZSBzb3Vy Y2UtbGV2ZWwgZG9jdW1lbnRhdGlvbiBjYW4gYmUgdmlld2VkIGhlcmU6CisrPC9wPgorKzxkaXYg Y2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImRpc2MiPgorKyAgICA8bGk+PHA+CisrICAg ICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJhcGkvaW5kZXguaHRtbCIgdGFyZ2V0PSJfdG9wIj5m b3IgdGhlIDQuNCByZWxlYXNlCisgICAgICAgPC9hPgorLSAgICA8L3A+PC9saT48bGk+PHA+Cist ICAgICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJsaWJzdGRjKystaHRtbC1VU0VSUy00LjEvaW5k ZXguaHRtbCIgdGFyZ2V0PSJfdG9wIj5mb3IgdGhlIDQuMSByZWxlYXNlCistICAgICAgPC9hPgor LSAgICA8L3A+PC9saT48bGk+PHA+CistICAgICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJsaWJz dGRjKystaHRtbC1VU0VSUy00LjIvaW5kZXguaHRtbCIgdGFyZ2V0PSJfdG9wIj5mb3IgdGhlIDQu MiByZWxlYXNlCistICAgICAgPC9hPgorLSAgICA8L3A+PC9saT48bGk+PHA+CistICAgICAgPGEg Y2xhc3M9InVsaW5rIiBocmVmPSJsaWJzdGRjKystaHRtbC1VU0VSUy00LjMvaW5kZXguaHRtbCIg dGFyZ2V0PSJfdG9wIj5mb3IgdGhlIDQuMyByZWxlYXNlCistICAgICAgPC9hPgorLSAgICA8L3A+ PC9saT48bGk+PHA+CistICAgICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJsaWJzdGRjKystaHRt bC1VU0VSUy00LjQvaW5kZXguaHRtbCIgdGFyZ2V0PSJfdG9wIj5mb3IgdGhlIDQuNCByZWxlYXNl CistICAgICAgPC9hPgorLSAgICA8L3A+PC9saT48bGk+PHA+CistICAgICAgPGEgY2xhc3M9InVs aW5rIiBocmVmPSJsYXRlc3QtZG94eWdlbi9pbmRleC5odG1sIiB0YXJnZXQ9Il90b3AiPiJ0aGUg bGF0ZXN0IGNvbGxlY3Rpb24iCistICAgICAgPC9hPgorLSAgICAgIChGb3IgdGhlIG1haW4gZGV2 ZWxvcG1lbnQgdHJlZTsgc2VlIHRoZSBkYXRlIG9uIHRoZSBmaXJzdCBwYWdlLikKKyAgICAgPC9w PjwvbGk+PC91bD48L2Rpdj48cD4KKyBUaGlzIGdlbmVyYXRlZCBIVE1MIGNvbGxlY3Rpb24sIGFz IGFib3ZlLCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgaW4gdGhlIGxpYnN0ZGMrKyBz bmFwc2hvdHMgZGlyZWN0b3J5IGF0CisgICAgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPiZsdDtVUkw6 ZnRwOi8vZ2NjLmdudS5vcmcvcHViL2djYy9saWJzdGRjKysvZG94eWdlbi8mZ3Q7PC9jb2RlPi4K CmRpZmYgLS1naXQgYS9nY2M0NC1wb3dlcjctMi5wYXRjaCBiL2djYzQ0LXBvd2VyNy0yLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOTYyMTcKLS0tIC9kZXYvbnVs bAorKysgYi9nY2M0NC1wb3dlcjctMi5wYXRjaApAQCAtMCwwICsxLDI2NyBAQAorMjAwOS0wNC0x NCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworCSog Y29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIpOiBI YW5kbGUKKwltb3JlIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiBhZGRyZXNzZXMuCisKKwkqIGNv bmZpZy9yczYwMDAvdmVjdG9yLm1kICh2ZWNfcmVsb2FkX2FuZF9wbHVzXzxtcHRyc2l6ZT4pOiBB bGxvdworCXJlZ2lzdGVyK3NtYWxsIGNvbnN0YW50IGluIGFkZGl0aW9uIHRvIHJlZ2lzdGVyK3Jl Z2lzdGVyLCBhbmQKKwlyZXN0cmljdCB0aGUgaW5zbiB0byBvbmx5IG1hdGNoIGR1cmluZyByZWxv YWQgYW5kIGFmdGVyd2FyZHMuCisJKHZlY19yZWxvYWRfYW5kX3JlZ188bXB0cnNpemU+KTogQWxs b3cgZm9yIGFuZCBvZiByZWdpc3RlcgorCWluZGlyZWN0IHRvIG5vdCBnZW5lcmF0ZSBpbnNuIG5v dCBmb3VuZCBtZXNzYWdlLgorCistLS0gZ2NjL2NvbmZpZy9yczYwMDAvdmVjdG9yLm1kCShyZXZp c2lvbiAxNDYwNjkpCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvdmVjdG9yLm1kCShyZXZpc2lvbiAx NDYxMTgpCitAQCAtMTI5LDE0ICsxMjksMTUgQEAgKGRlZmluZV9leHBhbmQgInJlbG9hZF88VkVD X1I6bW9kZT5fPFA6bQorIH0pCisgCisgOzsgUmVsb2FkIHNvbWV0aW1lcyB0cmllcyB0byBtb3Zl IHRoZSBhZGRyZXNzIHRvIGEgR1BSLCBhbmQgY2FuIGdlbmVyYXRlCistOzsgaW52YWxpZCBSVEwg Zm9yIGFkZHJlc3NlcyBpbnZvbHZpbmcgQU5EIC0xNi4KKys7OyBpbnZhbGlkIFJUTCBmb3IgYWRk cmVzc2VzIGludm9sdmluZyBBTkQgLTE2LiAgQWxsb3cgYWRkcmVzc2VzIGludm9sdmluZworKzs7 IHJlZytyZWcsIHJlZytzbWFsbCBjb25zdGFudCwgb3IganVzdCByZWcsIGFsbCB3cmFwcGVkIGlu IGFuIEFORCAtMTYuCisgCisgKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnZlY19yZWxvYWRfYW5k X3BsdXNfPG1wdHJzaXplPiIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAiZ3BjX3JlZ19v cGVyYW5kIiAiPWIiKQorIAkoYW5kOlAgKHBsdXM6UCAobWF0Y2hfb3BlcmFuZDpQIDEgImdwY19y ZWdfb3BlcmFuZCIgInIiKQorLQkJICAgICAgIChtYXRjaF9vcGVyYW5kOlAgMiAiZ3BjX3JlZ19v cGVyYW5kIiAiciIpKQorKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlAgMiAicmVnX29yX2NpbnRf b3BlcmFuZCIgInJJIikpCisgCSAgICAgICAoY29uc3RfaW50IC0xNikpKV0KKy0gICJUQVJHRVRf QUxUSVZFQyB8fCBUQVJHRVRfVlNYIgorKyAgIihUQVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNY KSAmJiAocmVsb2FkX2luX3Byb2dyZXNzIHx8IHJlbG9hZF9jb21wbGV0ZWQpIgorICAgIiMiCisg ICAiJiYgcmVsb2FkX2NvbXBsZXRlZCIKKyAgIFsoc2V0IChtYXRjaF9kdXAgMCkKK0BAIC0xNDYs NiArMTQ3LDIxIEBAIChkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIip2ZWNfcmVsb2FkX2FuZF8KKyAJ CSAgIChhbmQ6UCAobWF0Y2hfZHVwIDApCisgCQkJICAoY29uc3RfaW50IC0xNikpKQorIAkgICAg ICAoY2xvYmJlcjpDQyAoc2NyYXRjaDpDQykpXSldKQorKworKzs7IFRoZSBub3JtYWwgQU5EU0kz L0FORERJMyB3b24ndCBtYXRjaCBpZiByZWxvYWQgZGVjaWRlcyB0byBtb3ZlIGFuIEFORCAtMTYK Kys7OyBhZGRyZXNzIHRvIGEgcmVnaXN0ZXIgYmVjYXVzZSB0aGVyZSBpcyBubyBjbG9iYmVyIG9m IGEgKHNjcmF0Y2gpLCBzbyB3ZSBhZGQKKys7OyBpdCBoZXJlLgorKyhkZWZpbmVfaW5zbl9hbmRf c3BsaXQgIip2ZWNfcmVsb2FkX2FuZF9yZWdfPG1wdHJzaXplPiIKKysgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlAgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWIiKQorKwkoYW5kOlAgKG1hdGNoX29wZXJh bmQ6UCAxICJncGNfcmVnX29wZXJhbmQiICJyIikKKysJICAgICAgIChjb25zdF9pbnQgLTE2KSkp XQorKyAgIihUQVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNYKSAmJiAocmVsb2FkX2luX3Byb2dy ZXNzIHx8IHJlbG9hZF9jb21wbGV0ZWQpIgorKyAgIiMiCisrICAiJiYgcmVsb2FkX2NvbXBsZXRl ZCIKKysgIFsocGFyYWxsZWwgWyhzZXQgKG1hdGNoX2R1cCAwKQorKwkJICAgKGFuZDpQIChtYXRj aF9kdXAgMSkKKysJCQkgIChjb25zdF9pbnQgLTE2KSkpCisrCSAgICAgIChjbG9iYmVyOkNDIChz Y3JhdGNoOkNDKSldKV0pCisgDAorIDs7IEdlbmVyaWMgZmxvYXRpbmcgcG9pbnQgdmVjdG9yIGFy aXRobWV0aWMgc3VwcG9ydAorIChkZWZpbmVfZXhwYW5kICJhZGQ8bW9kZT4zIgorLS0tIGdjYy9j b25maWcvcnM2MDAwL3JzNjAwMC5jCShyZXZpc2lvbiAxNDYwNjkpCisrKysgZ2NjL2NvbmZpZy9y czYwMDAvcnM2MDAwLmMJKHJldmlzaW9uIDE0NjExOCkKK0BAIC0xMjU3NCw2ICsxMjU3NCwxMSBA QCByczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9pbm5lciAocnR4IHJlZywgCisgICBlbnVtIHJlZ19j bGFzcyByY2xhc3M7CisgICBydHggYWRkcjsKKyAgIHJ0eCBhbmRfb3AyID0gTlVMTF9SVFg7Cisr ICBydHggYWRkcl9vcDE7CisrICBydHggYWRkcl9vcDI7CisrICBydHggc2NyYXRjaF9vcl9wcmVt b2RpZnkgPSBzY3JhdGNoOworKyAgcnR4IGFuZF9ydHg7CisrICBydHggY2NfY2xvYmJlcjsKKyAK KyAgIGlmIChUQVJHRVRfREVCVUdfQUREUikKKyAgICAgeworQEAgLTEyNTk1LDcgKzEyNjAwLDgg QEAgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIgKHJ0eCByZWcsIAorIAorICAgc3dpdGNo IChyY2xhc3MpCisgICAgIHsKKy0gICAgICAvKiBNb3ZlIHJlZytyZWcgYWRkcmVzc2VzIGludG8g YSBzY3JhdGNoIHJlZ2lzdGVyIGZvciBHUFJzLiAgKi8KKysgICAgICAvKiBHUFJzIGNhbiBoYW5k bGUgcmVnICsgc21hbGwgY29uc3RhbnQsIGFsbCBvdGhlciBhZGRyZXNzZXMgbmVlZCB0byB1c2UK KysJIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLiAgKi8KKyAgICAgY2FzZSBHRU5FUkFMX1JFR1M6Cisg ICAgIGNhc2UgQkFTRV9SRUdTOgorICAgICAgIGlmIChHRVRfQ09ERSAoYWRkcikgPT0gQU5EKQor QEAgLTEyNjAzLDcwICsxMjYwOSwxNTIgQEAgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIg KHJ0eCByZWcsIAorIAkgIGFuZF9vcDIgPSBYRVhQIChhZGRyLCAxKTsKKyAJICBhZGRyID0gWEVY UCAoYWRkciwgMCk7CisgCX0KKysKKysgICAgICBpZiAoR0VUX0NPREUgKGFkZHIpID09IFBSRV9N T0RJRlkpCisrCXsKKysJICBzY3JhdGNoX29yX3ByZW1vZGlmeSA9IFhFWFAgKGFkZHIsIDApOwor KwkgIGdjY19hc3NlcnQgKFJFR19QIChzY3JhdGNoX29yX3ByZW1vZGlmeSkpOworKwkgIGdjY19h c3NlcnQgKEdFVF9DT0RFIChYRVhQIChhZGRyLCAxKSkgPT0gUExVUyk7CisrCSAgYWRkciA9IFhF WFAgKGFkZHIsIDEpOworKwl9CisrCisgICAgICAgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBQTFVT CisgCSAgJiYgKCFyczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChUSW1vZGUsIGFk ZHIsIHRydWUpCisgCSAgICAgIHx8IGFuZF9vcDIgIT0gTlVMTF9SVFgpKQorIAl7CistCSAgaWYg KEdFVF9DT0RFIChhZGRyKSA9PSBTWU1CT0xfUkVGIHx8IEdFVF9DT0RFIChhZGRyKSA9PSBDT05T VAorLQkgICAgICB8fCBHRVRfQ09ERSAoYWRkcikgPT0gQ09OU1RfSU5UKQorLQkgICAgcnM2MDAw X2VtaXRfbW92ZSAoc2NyYXRjaCwgYWRkciwgR0VUX01PREUgKGFkZHIpKTsKKy0JICBlbHNlCist CSAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lEbW9kZSwgc2NyYXRjaCwgYWRkcikpOwor LQkgIGFkZHIgPSBzY3JhdGNoOworKwkgIGFkZHJfb3AxID0gWEVYUCAoYWRkciwgMCk7CisrCSAg YWRkcl9vcDIgPSBYRVhQIChhZGRyLCAxKTsKKysJICBnY2NfYXNzZXJ0IChsZWdpdGltYXRlX2lu ZGlyZWN0X2FkZHJlc3NfcCAoYWRkcl9vcDEsIHRydWUpKTsKKysKKysJICBpZiAoIVJFR19QIChh ZGRyX29wMikKKysJICAgICAgJiYgKEdFVF9DT0RFIChhZGRyX29wMikgIT0gQ09OU1RfSU5UCisr CQkgIHx8ICFzYXRpc2ZpZXNfY29uc3RyYWludF9JIChhZGRyX29wMikpKQorKwkgICAgeworKwkg ICAgICByczYwMDBfZW1pdF9tb3ZlIChzY3JhdGNoLCBhZGRyX29wMiwgUG1vZGUpOworKwkgICAg ICBhZGRyX29wMiA9IHNjcmF0Y2g7CisrCSAgICB9CisrCisrCSAgZW1pdF9pbnNuIChnZW5fcnR4 X1NFVCAoVk9JRG1vZGUsCisrCQkJCSAgc2NyYXRjaF9vcl9wcmVtb2RpZnksCisrCQkJCSAgZ2Vu X3J0eF9QTFVTIChQbW9kZSwKKysJCQkJCQlhZGRyX29wMSwKKysJCQkJCQlhZGRyX29wMikpKTsK KysKKysJICBhZGRyID0gc2NyYXRjaF9vcl9wcmVtb2RpZnk7CisrCSAgc2NyYXRjaF9vcl9wcmVt b2RpZnkgPSBzY3JhdGNoOworIAl9CistICAgICAgZWxzZSBpZiAoR0VUX0NPREUgKGFkZHIpID09 IFBSRV9NT0RJRlkKKy0JICAgICAgICYmIFJFR19QIChYRVhQIChhZGRyLCAwKSkKKy0JICAgICAg ICYmIEdFVF9DT0RFIChYRVhQIChhZGRyLCAxKSkgPT0gUExVUykKKysgICAgICBlbHNlIGlmICgh bGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHIsIHRydWUpCisrCSAgICAgICAmJiAh cnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAoVEltb2RlLCBhZGRyLCB0cnVlKSkK KyAJeworLQkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBYRVhQIChhZGRyLCAw KSwgWEVYUCAoYWRkciwgMSkpKTsKKy0JICBhZGRyID0gWEVYUCAoYWRkciwgMCk7CisrCSAgcnM2 MDAwX2VtaXRfbW92ZSAoc2NyYXRjaF9vcl9wcmVtb2RpZnksIGFkZHIsIFBtb2RlKTsKKysJICBh ZGRyID0gc2NyYXRjaF9vcl9wcmVtb2RpZnk7CisrCSAgc2NyYXRjaF9vcl9wcmVtb2RpZnkgPSBz Y3JhdGNoOworIAl9CisgICAgICAgYnJlYWs7CisgCisrICAgICAgLyogRmxvYXQvQWx0aXZlYyBy ZWdpc3RlcnMgY2FuIG9ubHkgaGFuZGxlIHJlZytyZWcgYWRkcmVzc2luZy4gIE1vdmUKKysJIG90 aGVyIGFkZHJlc3NlcyBpbnRvIGEgc2NyYXRjaCByZWdpc3Rlci4gICovCisrICAgIGNhc2UgRkxP QVRfUkVHUzoKKysgICAgY2FzZSBWU1hfUkVHUzoKKysgICAgY2FzZSBBTFRJVkVDX1JFR1M6Cisr CisgICAgICAgLyogV2l0aCBmbG9hdCByZWdzLCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUgQU5EIG91 cnNlbHZlcywgc2luY2Ugd2UgY2FuJ3QKKyAJIHVzZSB0aGUgQWx0aXZlYyBpbnN0cnVjdGlvbiB3 aXRoIGFuIGltcGxpY2l0IEFORCAtMTYuICBBbGxvdyBzY2FsYXIKKyAJIGxvYWRzIHRvIGZsb2F0 IHJlZ2lzdGVycyB0byB1c2UgcmVnK29mZnNldCBldmVuIGlmIFZTWC4gICovCistICAgIGNhc2Ug RkxPQVRfUkVHUzoKKy0gICAgY2FzZSBWU1hfUkVHUzoKKy0gICAgICBpZiAoR0VUX0NPREUgKGFk ZHIpID09IEFORCkKKysgICAgICBpZiAoR0VUX0NPREUgKGFkZHIpID09IEFORAorKwkgICYmIChy Y2xhc3MgIT0gQUxUSVZFQ19SRUdTIHx8IEdFVF9NT0RFX1NJWkUgKG1vZGUpICE9IDE2KSkKKyAJ eworIAkgIGFuZF9vcDIgPSBYRVhQIChhZGRyLCAxKTsKKyAJICBhZGRyID0gWEVYUCAoYWRkciwg MCk7CisgCX0KKy0gICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAKKy0gICAgICAvKiBNb3ZlIHJl ZytvZmZzZXQgYWRkcmVzc2VzIGludG8gYSBzY3JhdGNoIHJlZ2lzdGVyLiAgKi8KKy0gICAgY2Fz ZSBBTFRJVkVDX1JFR1M6CistICAgICAgaWYgKCFsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3Nf cCAoYWRkciwgdHJ1ZSkKKy0JICAmJiAhbGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoYWRk ciwgdHJ1ZSkKKy0JICAmJiAoR0VUX0NPREUgKGFkZHIpICE9IFBSRV9NT0RJRlkKKy0JICAgICAg fHwgIWxlZ2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3AgKFhFWFAgKGFkZHIsIDEpLCB0cnVlKSkK Ky0JICAmJiAocmNsYXNzICE9IEZMT0FUX1JFR1MKKy0JICAgICAgfHwgR0VUX01PREVfU0laRSAo bW9kZSkgIT0gOAorKyAgICAgIC8qIElmIHdlIGFyZW4ndCB1c2luZyBhIFZTWCBsb2FkLCBzYXZl IHRoZSBQUkVfTU9ESUZZIHJlZ2lzdGVyIGFuZCB1c2UgaXQKKysJIGFzIHRoZSBhZGRyZXNzIGxh dGVyLiAgKi8KKysgICAgICBpZiAoR0VUX0NPREUgKGFkZHIpID09IFBSRV9NT0RJRlkKKysJICAm JiAoIVZFQ1RPUl9NRU1fVlNYX1AgKG1vZGUpCisgCSAgICAgIHx8IGFuZF9vcDIgIT0gTlVMTF9S VFgKKy0JICAgICAgfHwgIXJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AgKG1vZGUs IGFkZHIsIHRydWUpKSkKKysJICAgICAgfHwgIWxlZ2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3Ag KFhFWFAgKGFkZHIsIDEpLCB0cnVlKSkpCisgCXsKKy0JICBpZiAoR0VUX0NPREUgKGFkZHIpID09 IFNZTUJPTF9SRUYgfHwgR0VUX0NPREUgKGFkZHIpID09IENPTlNUCistCSAgICAgIHx8IEdFVF9D T0RFIChhZGRyKSA9PSBDT05TVF9JTlQpCistCSAgICByczYwMDBfZW1pdF9tb3ZlIChzY3JhdGNo LCBhZGRyLCBHRVRfTU9ERSAoYWRkcikpOworLQkgIGVsc2UKKy0JICAgIGVtaXRfaW5zbiAoZ2Vu X3J0eF9TRVQgKFZPSURtb2RlLCBzY3JhdGNoLCBhZGRyKSk7CistCSAgYWRkciA9IHNjcmF0Y2g7 CisrCSAgc2NyYXRjaF9vcl9wcmVtb2RpZnkgPSBYRVhQIChhZGRyLCAwKTsKKysJICBnY2NfYXNz ZXJ0IChsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3NfcCAoc2NyYXRjaF9vcl9wcmVtb2RpZnks CisrCQkJCQkJICAgICB0cnVlKSk7CisrCSAgZ2NjX2Fzc2VydCAoR0VUX0NPREUgKFhFWFAgKGFk ZHIsIDEpKSA9PSBQTFVTKTsKKysJICBhZGRyID0gWEVYUCAoYWRkciwgMSk7CisrCX0KKysKKysg ICAgICBpZiAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHIsIHRydWUpCS8qIHJl ZyAqLworKwkgIHx8IGxlZ2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3AgKGFkZHIsIHRydWUpCS8q IHJlZytyZWcgKi8KKysJICB8fCBHRVRfQ09ERSAoYWRkcikgPT0gUFJFX01PRElGWQkJLyogVlNY IHByZS1tb2RpZnkgKi8KKysJICB8fCBHRVRfQ09ERSAoYWRkcikgPT0gQU5ECQkJLyogQWx0aXZl YyBtZW1vcnkgKi8KKysJICB8fCAocmNsYXNzID09IEZMT0FUX1JFR1MJCQkvKiBsZWdhY3kgZmxv YXQgbWVtICovCisrCSAgICAgICYmIEdFVF9NT0RFX1NJWkUgKG1vZGUpID09IDgKKysJICAgICAg JiYgYW5kX29wMiA9PSBOVUxMX1JUWAorKwkgICAgICAmJiBzY3JhdGNoX29yX3ByZW1vZGlmeSA9 PSBzY3JhdGNoCisrCSAgICAgICYmIHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3Ag KG1vZGUsIGFkZHIsIHRydWUpKSkKKysJOworKworKyAgICAgIGVsc2UgaWYgKEdFVF9DT0RFIChh ZGRyKSA9PSBQTFVTKQorKwl7CisrCSAgYWRkcl9vcDEgPSBYRVhQIChhZGRyLCAwKTsKKysJICBh ZGRyX29wMiA9IFhFWFAgKGFkZHIsIDEpOworKwkgIGdjY19hc3NlcnQgKFJFR19QIChhZGRyX29w MSkpOworKworKwkgIHJzNjAwMF9lbWl0X21vdmUgKHNjcmF0Y2gsIGFkZHJfb3AyLCBQbW9kZSk7 CisrCSAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsCisrCQkJCSAgc2NyYXRjaF9v cl9wcmVtb2RpZnksCisrCQkJCSAgZ2VuX3J0eF9QTFVTIChQbW9kZSwKKysJCQkJCQlhZGRyX29w MSwKKysJCQkJCQlzY3JhdGNoKSkpOworKwkgIGFkZHIgPSBzY3JhdGNoX29yX3ByZW1vZGlmeTsK KysJICBzY3JhdGNoX29yX3ByZW1vZGlmeSA9IHNjcmF0Y2g7CisgCX0KKysKKysgICAgICBlbHNl IGlmIChHRVRfQ09ERSAoYWRkcikgPT0gU1lNQk9MX1JFRiB8fCBHRVRfQ09ERSAoYWRkcikgPT0g Q09OU1QKKysJICAgICAgIHx8IEdFVF9DT0RFIChhZGRyKSA9PSBDT05TVF9JTlQpCisrCXsKKysJ ICByczYwMDBfZW1pdF9tb3ZlIChzY3JhdGNoX29yX3ByZW1vZGlmeSwgYWRkciwgUG1vZGUpOwor KwkgIGFkZHIgPSBzY3JhdGNoX29yX3ByZW1vZGlmeTsKKysJICBzY3JhdGNoX29yX3ByZW1vZGlm eSA9IHNjcmF0Y2g7CisrCX0KKysKKysgICAgICBlbHNlCisrCWdjY191bnJlYWNoYWJsZSAoKTsK KysKKyAgICAgICBicmVhazsKKyAKKyAgICAgZGVmYXVsdDoKKyAgICAgICBnY2NfdW5yZWFjaGFi bGUgKCk7CisgICAgIH0KKyAKKy0gIC8qIElmIHRoZSBvcmlnaW5hbCBhZGRyZXNzIGludm9sdmVk IGFuIEFORCAtMTYgdGhhdCBpcyBwYXJ0IG9mIHRoZSBBbHRpdmVjCistICAgICBhZGRyZXNzZXMs IHJlY3JlYXRlIHRoZSBhbmQgbm93LiAgKi8KKysgIC8qIElmIHRoZSBvcmlnaW5hbCBhZGRyZXNz IGludm9sdmVkIGEgcHJlLW1vZGlmeSB0aGF0IHdlIGNvdWxkbid0IHVzZSB0aGUgVlNYCisrICAg ICBtZW1vcnkgaW5zdHJ1Y3Rpb24gd2l0aCB1cGRhdGUsIGFuZCB3ZSBoYXZlbid0IHRha2VuIGNh cmUgb2YgYWxyZWFkeSwKKysgICAgIHN0b3JlIHRoZSBhZGRyZXNzIGluIHRoZSBwcmUtbW9kaWZ5 IHJlZ2lzdGVyIGFuZCB1c2UgdGhhdCBhcyB0aGUKKysgICAgIGFkZHJlc3MuICAqLworKyAgaWYg KHNjcmF0Y2hfb3JfcHJlbW9kaWZ5ICE9IHNjcmF0Y2ggJiYgc2NyYXRjaF9vcl9wcmVtb2RpZnkg IT0gYWRkcikKKysgICAgeworKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2Rl LCBzY3JhdGNoX29yX3ByZW1vZGlmeSwgYWRkcikpOworKyAgICAgIGFkZHIgPSBzY3JhdGNoX29y X3ByZW1vZGlmeTsKKysgICAgfQorKworKyAgLyogSWYgdGhlIG9yaWdpbmFsIGFkZHJlc3MgaW52 b2x2ZWQgYW4gQU5EIC0xNiBhbmQgd2UgY291bGRuJ3QgdXNlIGFuIEFMVElWRUMKKysgICAgIG1l bW9yeSBpbnN0cnVjdGlvbiwgcmVjcmVhdGUgdGhlIEFORCBub3csIGluY2x1ZGluZyB0aGUgY2xv YmJlciB3aGljaCBpcworKyAgICAgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmFsIEFORFNJMy9BTkRE STMgcGF0dGVybnMgZm9yIHRoZQorKyAgICAgYW5kaS4gaW5zdHJ1Y3Rpb24uICAqLworICAgaWYg KGFuZF9vcDIgIT0gTlVMTF9SVFgpCisgICAgIHsKKy0gICAgICBydHggYW5kX3J0eCA9IGdlbl9y dHhfU0VUIChWT0lEbW9kZSwKKy0JCQkJIHNjcmF0Y2gsCistCQkJCSBnZW5fcnR4X0FORCAoUG1v ZGUsIGFkZHIsIGFuZF9vcDIpKTsKKy0gICAgICBydHggY2NfY2xvYmJlciA9IGdlbl9ydHhfQ0xP QkJFUiAoQ0Ntb2RlLCBnZW5fcnR4X1NDUkFUQ0ggKENDbW9kZSkpOworKyAgICAgIGlmICghIGxl Z2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChhZGRyLCB0cnVlKSkKKysJeworKwkgIGVtaXRf aW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBzY3JhdGNoLCBhZGRyKSk7CisrCSAgYWRkciA9 IHNjcmF0Y2g7CisrCX0KKysKKysgICAgICBhbmRfcnR4ID0gZ2VuX3J0eF9TRVQgKFZPSURtb2Rl LAorKwkJCSAgICAgc2NyYXRjaCwKKysJCQkgICAgIGdlbl9ydHhfQU5EIChQbW9kZSwKKysJCQkJ CSAgYWRkciwKKysJCQkJCSAgYW5kX29wMikpOworKworKyAgICAgIGNjX2Nsb2JiZXIgPSBnZW5f cnR4X0NMT0JCRVIgKENDbW9kZSwgZ2VuX3J0eF9TQ1JBVENIIChDQ21vZGUpKTsKKyAgICAgICBl bWl0X2luc24gKGdlbl9ydHhfUEFSQUxMRUwgKFZPSURtb2RlLAorIAkJCQkgICBnZW5fcnR2ZWMg KDIsIGFuZF9ydHgsIGNjX2Nsb2JiZXIpKSk7CisgICAgICAgYWRkciA9IHNjcmF0Y2g7CgpkaWZm IC0tZ2l0IGEvZ2NjNDQtcG93ZXI3LTMucGF0Y2ggYi9nY2M0NC1wb3dlcjctMy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjgxZTAzCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjNDQtcG93ZXI3LTMucGF0Y2gKQEAgLTAsMCArMSwzNTIzIEBACisyMDA5LTA0LTI2ICBN aWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgorCisJKiBjb25m aWcvcnM2MDAwL3ZlY3Rvci5tZCAodmVjdG9yX3ZzZWw8bW9kZT4pOiBHZW5lcmF0ZSB0aGUgaW5z bnMKKwlkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgVlNYL0FsdGl2ZWMgZXhwYW5kZXJzLgor CisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1jLmMgKHJzNjAwMF9jcHVfY3BwX2J1aWx0aW5zKTog TWFwIFZTWAorCWJ1aWx0aW5zIHRoYXQgYXJlIGlkZW50aWNhbCB0byBBbHRpdmVjLCB0byB0aGUg QWx0aXZlYyB2ZXNpb24uCisJKGFsdGl2ZWNfb3ZlcmxvYWRlZF9idWlsdGlucyk6IEFkZCBWMkRG L1YyREkgc2VsLCBwZXJtIHN1cHBvcnQuCisJKGFsdGl2ZWNfcmVzb2x2ZV9vdmVybG9hZGVkX2J1 aWx0aW4pOiBBZGQgVjJERi9WMkRJIHN1cHBvcnQuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAw LmMgKHJzNjAwMF9leHBhbmRfdmVjdG9yX2luaXQpOiBSZW5hbWUgVlNYCisJc3BsYXQgZnVuY3Rp b25zLgorCShleHBhbmRfdmVjdG9yX3NldCk6IE1lcmdlIFYyREYvVjJESSBjb2RlLgorCShleHBh bmRfdmVjdG9yX2V4dHJhY3QpOiBEaXR0by4KKwkoYmRlc2NfM2FyZyk6IEFkZCBtb3JlIFZTWCBi dWlsdGlucy4KKwkoYmRlc2NfMmFyZyk6IERpdHRvLgorCShiZGVzY18xYXJnKTogRGl0dG8uCisJ KHJzNjAwMF9leHBhbmRfdGVybm9wX2J1aWx0aW4pOiBSZXF1aXJlIHh4cGVybWRpIDNyZCBhcmd1 bWVudCB0bworCWJlIDIgYml0LWNvbnN0YW50LCBhbmQgVjJERi9WMkRJIHNldCB0byBiZSBhIDEg Yml0LWNvbnN0YW50LgorCShhbHRpdmVjX2V4cGFuZF9idWlsdGluKTogQWRkIHN1cHBvcnQgZm9y IFZTWCBvdmVybG9hZGVkIGJ1aWx0aW5zLgorCShhbHRpdmVjX2luaXRfYnVpbHRpbnMpOiBEaXR0 by4KKwkocnM2MDAwX2NvbW1vbl9pbml0X2J1aWx0aW5zKTogRGl0dG8uCisJKHJzNjAwMF9pbml0 X2J1aWx0aW5zKTogQWRkIFYyREkgdHlwZXMgYW5kIHZlY3RvciBsb25nIHN1cHBvcnQuCisJKHJz NjAwMF9oYW5kbGVfYWx0aXZlY19hdHRyaWJ1dGUpOiBEaXR0by4KKwkocnM2MDAwX21hbmdlX3R5 cGUpOiBEaXR0by4KKworCSogY29uZmlnL3JzNjAwMC92c3gubWQgKFVOU1BFQ18qKTogQWRkIG5l dyBVTlNQRUMgY29uc3RhbnRzLgorCSh2c3hfdnNlbDxtb2RlPik6IEFkZCBzdXBwb3J0IGZvciBh bGwgdmVjdG9yIHR5cGVzLCBpbmNsdWRpbmcKKwlBbHRpdmVjIHR5cGVzLgorCSh2c3hfZnRydW5j PG1vZGU+Mik6IEVtaXQgdGhlIGNvcnJlY3QgaW5zdHJ1Y3Rpb24uCisJKHZzeF94PFZTdj5yPFZT cz5pKTogTmV3IGJ1aWx0aW4gcm91bmRpbmcgbW9kZSBpbnNucy4KKwkodnN4X3g8VlN2PnI8VlNz PmljKTogRGl0dG8uCisJKHZzeF9jb25jYXRfPG1vZGU+KTogS2V5IG9mZiBvZiBWU1ggbWVtb3J5 IGluc3RydWN0aW9ucyBiZWluZworCWdlbmVyYXRlZCBpbnN0ZWFkIG9mIHRoZSB2ZWN0b3IgYXJp dGhtZXRpYyB1bml0IHRvIGVuYWJsZSBWMkRJCisJbW9kZS4KKwkodnN4X2V4dHJhY3RfPG1vZGU+ KTogRGl0dG8uCisJKHZzeF9zZXRfPG1vZGU+KTogUmV3cml0ZSBhcyBhbiB1bnNwZWMuCisJKHZz eF94eHBlcm1kaTJfPG1vZGU+KTogUmVuYW1lIG9sZCB2c3hfeHhwZXJtZGlfPG1vZGU+IGhlcmUu ICBLZXkKKwlvZmYgb2YgVlNYIG1lbW9yeSBpbnN0cnVjdGlvbnMgaW5zdGVhZCBvZiBhcml0aG1l dGljIHVuaXQuCisJKHZzeF94eHBlcm1kaV88bW9kZT4pOiBOZXcgaW5zbiBmb3IgX19idWlsdGlu X3ZzeF94eHBlcm1kaS4KKwkodnN4X3NwbGF0Xzxtb2RlPik6IFJlbmFtZSBmcm9tIHZzeF9zcGxh dDxtb2RlPi4KKwkodnN4X3h4c3BsdHdfPG1vZGU+KTogQ2hhbmdlIGZyb20gVjRTRiBvbmx5IHRv IFY0U0YvVjRTSSBtb2Rlcy4KKwlGaXggdXAgY29uc3RyYWludHMuICBLZXkgb2ZmIG9mIG1lbW9y eSBpbnN0cnVjdGlvbnMgaW5zdGVhZCBvZgorCWFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zIHRvIGFs bG93IHVzZSB3aXRoIFY0U0kuCisJKHZzeF94eG1yZ2h3Xzxtb2RlPik6IERpdHRvLgorCSh2c3hf eHhtcmdsd188bW9kZT4pOiBEaXR0by4KKwkodnN4X3h4c2xkd2lfPG1vZGU+KTogSW1wbGVtZW50 IHZlY3RvciBzaGlmdCBkb3VibGUgYnkgd29yZAorCWltbWVkaWF0ZS4KKworCSogY29uZmlnL3Jz NjAwMC9yczYwMDAuaCAoVlNYX0JVSUxUSU5fKik6IFVwZGF0ZSBmb3IgY3VycmVudAorCWJ1aWx0 aW5zIGJlaW5nIGdlbmVyYXRlZC4KKwkoUlM2MDAwX0JUSV91bnNpZ25lZF9WMkRJKTogQWRkIHZl Y3RvciBsb25nIHN1cHBvcnQuCisJKFJTNjAwMF9CVElfYm9vbF9sb25nKTogRGl0dG8uCisJKFJT NjAwMF9CVElfYm9vbF9WMkRJKTogRGl0dG8uCisJKHVuc2lnbmVkX1YyRElfdHlwZV9ub2RlKTog RGl0dG8uCisJKGJvb2xfbG9uZ190eXBlX25vZGUpOiBEaXR0by4KKwkoYm9vbF9WMkRJX3R5cGVf bm9kZSk6IERpdHRvLgorCisJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfdnNl bDxtb2RlPik6IEFkZCAnKicgc2luY2Ugd2UKKwlkb24ndCBuZWVkIHRoZSBnZW5lcmF0b3IgZnVu Y3Rpb24gbm93LiAgVXNlIFZTWCBpbnN0cnVjdGlvbiBpZgorCS1tdnN4LgorCShhbHRpdmVjX3Zt cmdodyk6IFVzZSBWU1ggaW5zdHJ1Y3Rpb24gaWYgLW12c3guCisJKGFsdGl2ZWNfdm1yZ2hzZik6 IERpdHRvLgorCShhbHRpdmVjX3Ztcmdsdyk6IERpdHRvLgorCShhbHRpdmVjX3Ztcmdsc2YpOiBE aXR0by4KKworCSogZG9jL2V4dGVuZC50ZXhpIChQb3dlclBDIEFsdGlWZWMvVlNYIEJ1aWx0LWlu IEZ1bmN0aW9ucyk6CisJRG9jdW1lbnQgdGhhdCB1bmRlciBWU1gsIHZlY3RvciBkb3VibGUvbG9u ZyBhcmUgYXZhaWxhYmxlLgorCit0ZXN0c3VpdGUvCisJKiBnY2MudGFyZ2V0L3Bvd2VycGMvdnN4 LWJ1aWx0aW4tMy5jOiBOZXcgdGVzdCBmb3IgVlNYIGJ1aWx0aW5zLgorCisyMDA5LTA0LTIzICBN aWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgorCisJKiBjb25m aWcvcnM2MDAwL3ZlY3Rvci5tZCAoVkVDX0UpOiBOZXcgaXRlcmF0b3IgdG8gYWRkIFYyREltb2Rl LgorCSh2ZWNfaW5pdDxtb2RlPik6IFVzZSBWRUNfRSBpbnN0ZWFkIG9mIFZFQ19DIGl0ZXJhdG9y LCB0byBhZGQKKwlWMkRJbW9kZSBzdXBwb3J0LgorCSh2ZWNfc2V0PG1vZGU+KTogRGl0dG8uCisJ KHZlY19leHRyYWN0PG1vZGU+KTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRl cy5tZCAoZWFzeV92ZWN0b3JfY29uc3RhbnQpOiBBZGQgc3VwcG9ydAorCWZvciBzZXR0aW5nIFRJ bW9kZSB0byAwLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgKC1tdnN4LXZlY3Rvci1t ZW1vcnkpOiBEZWxldGUgb2xkIGRlYnVnCisJc3dpdGNoIHRoYXQgaXMgbm8gbG9uZ2VyIHVzZWQu CisJKC1tdnN4LXZlY3Rvci1mbG9hdCk6IERpdHRvLgorCSgtbXZzeC12ZWN0b3ItZG91YmxlKTog RGl0dG8uCisJKC1tdnN4LXY0c2YtYWx0aXZlYy1yZWdzKTogRGl0dG8uCisJKC1tcmVsb2FkLWZ1 bmN0aW9ucyk6IERpdHRvLgorCSgtbWFsbG93LXRpbW9kZSk6IE5ldyBkZWJ1ZyBzd2l0Y2guCisK KwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9pcmFfY292ZXJfY2xhc3Nlcyk6IE5l dyB0YXJnZXQKKwlob29rIGZvciBJUkEgY292ZXIgY2xhc3NlcywgdG8ga25vdyB0aGF0IHVuZGVy IFZTWCB0aGUgZmxvYXQgYW5kCisJYWx0aXZlYyByZWdpc3RlcnMgYXJlIHBhcnQgb2YgdGhlIHNh bWUgcmVnaXN0ZXIgY2xhc3MsIGJ1dCBiZWZvcmUKKwl0aGV5IHdlcmVuJ3QuCisJKFRBUkdFVF9J UkFfQ09WRVJfQ0xBU1NFUyk6IFNldCBpcmEgY292ZXIgY2xhc3NlcyB0YXJnZXQgaG9va2QuCisJ KHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzKTogS2V5IG9mZiBvZiB3aGV0aGVyIFZTWC9BbHRpdmVj IG1lbW9yeQorCWluc3RydWN0aW9ucyBhcmUgc3VwcG9ydGVkLCBhbmQgbm90IHdoZXRoZXIgdGhl IHZlY3RvciB1bml0IGhhcworCWFyaXRobWV0aWMgc3VwcG9ydCB0byBlbmFibGUgVjJESS9USSBt b2RlLgorCShyczYwMDBfaGFyZF9yZWdub19tb2RlX29rKTogRGl0dG8uCisJKHJzNjAwMF9pbml0 X2hhcmRfcmVnbm9fbW9kZV9vayk6IEFkZCBWMkRJbW9kZSwgVEltb2RlIHN1cHBvcnQuCisJRHJv cCBzZXZlcmFsIG9mIHRoZSBkZWJ1ZyBzd2l0Y2hlcy4KKwkocnM2MDAwX2VtaXRfbW92ZSk6IEZv cmNlIFRJbW9kZSBjb25zdGFudHMgdG8gbWVtb3J5IGlmIHdlIGhhdmUKKwllaXRoZXIgQWx0aXZl YyBvciBWU1guCisJKHJzNjAwMF9idWlsdGluX2NvbnZlcnNpb24pOiBVc2UgY29ycmVjdCBpbnNu cyBmb3IgVjJESTwtPlYyREYKKwljb252ZXJzaW9ucy4KKwkocnM2MDAwX2V4cGFuZF92ZWN0b3Jf aW5pdCk6IEFkZCBWMkRJIHN1cHBvcnQuCisJKHJzNjAwMF9leHBhbmRfdmVjdG9yX3NldCk6IERp dHRvLgorCShhdm9pZGluZ19pbmRleGVkX2FkZHJlc3NfcCk6IFNpbXBsaWZ5IHRlc3RzIHRvIHNh eSBpZiB0aGUgbW9kZQorCXVzZXMgVlNYL0FsdGl2ZWMgbWVtb3J5IGluc3RydWN0aW9ucyB3ZSBj YW4ndCBlbGltaW5hdGUgcmVnK3JlZworCWFkZHJlc3NpbmcuCisJKHJzNjAwMF9sZWdpdGltaXpl X2FkZHJlc3MpOiBNb3ZlIFZTWC9BbHRpdmVjIFJFRytSRUcgc3VwcG9ydAorCWJlZm9yZSB0aGUg bGFyZ2UgaW50ZWdlciBzdXBwb3J0LgorCShyczYwMDBfbGVnaXRpbWF0ZV9hZGRyZXNzKTogQWRk IHN1cHBvcnQgZm9yIFRJbW9kZSBpbiBWU1gvQWx0aXZlYworCXJlZ2lzdGVycy4KKwkocnM2MDAw X2VtaXRfbW92ZSk6IERpdHRvLgorCShkZWZfYnVpbHRpbik6IENoYW5nZSBpbnRlcm5hbCBlcnJv ciBtZXNzYWdlIHRvIHByb3ZpZGUgbW9yZQorCWluZm9ybWF0aW9uLgorCShiZGVzY18yYXJnKTog QWRkIGNvbnZlcnNpb24gYnVpbHRpbnMuCisJKGJ1aWx0aW5faGFzaF9mdW5jdGlvbik6IE5ldyBm dW5jdGlvbiBmb3IgaGFzaGluZyBhbGwgb2YgdGhlIHR5cGVzCisJZm9yIGJ1aWx0aW4gZnVuY3Rp b25zLgorCShidWlsdGluX2hhc2hfZXEpOiBEaXR0by4KKwkoYnVpbHRpbl9mdW5jdGlvbl90eXBl KTogRGl0dG8uCisJKGJ1aWx0aW5fbW9kZV90b190eXBlKTogTmV3IHN0YXRpYyBmb3IgYnVpbHRp biBhcmd1bWVudCBoYXNoaW5nLgorCShidWlsdGluX2hhc2hfdGFibGUpOiBEaXR0by4KKwkocnM2 MDAwX2NvbW1vbl9pbml0X2J1aWx0aW5zKTogUmV3cml0ZSBzbyB0aGF0IHR5cGVzIGZvciBidWls dGluCisJZnVuY3Rpb25zIGFyZSBvbmx5IGNyZWF0ZWQgd2hlbiB3ZSBuZWVkIHRoZW0sIGFuZCB1 c2UgYSBoYXNoIHRhYmxlCisJdG8gc3RvcmUgYWxsIG9mIHRoZSBkaWZmZXJlbnQgYXJndW1lbnQg Y29tYmluYXRpb25zIHRoYXQgYXJlCisJY3JlYXRlZC4gIEFkZCBzdXBwb3J0IGZvciBWU1ggY29u dmVyc2lvbiBidWlsdGlucy4KKwkocnM2MDAwX3ByZWZlcnJlZF9yZWxvYWRfY2xhc3MpOiBBZGQg VEltb2RlIHN1cHBvcnQuCisJKHJlZ19jbGFzc2VzX2Nhbm5vdF9jaGFuZ2VfbW9kZV9jbGFzcyk6 IEJlIHN0cmljdGVyIGFib3V0IFZTWCBhbmQKKwlBbHRpdmVjIHZlY3RvciB0eXBlcy4KKwkocnM2 MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwcik6IFVzZSBWU1hfTU9WRV9NT0RFLCBub3QKKwlWU1hf VkVDVE9SX01PVkVfTU9ERS4KKwkocnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0ZSk6IEFs bG93IF9fdmVjdG9yIGxvbmcgb24gVlNYLgorCisJKiBjb25maWcvcnM2MDAwL3ZzeC5tZCAoVlNY X0QpOiBOZXcgaXRlcmF0b3IgZm9yIHZlY3RvcnMgd2l0aAorCTY0LWJpdCBlbGVtZW50cy4KKwko VlNYX00pOiBOZXcgaXRlcmF0b3IgZm9yIDEyOCBiaXQgdHlwZXMgZm9yIG1vdmVzLCBleGNlcHQg Zm9yCisJVEltb2RlLgorCShWU20sIFZTcywgVlNyKTogQWRkIFRJbW9kZS4KKwkoVlNyNCwgVlNy NSk6IE5ldyBtb2RlIGF0dHJpYnV0ZXMgZm9yIGZsb2F0PC0+ZG91YmxlIGNvbnZlcnNpb24uCisJ KFZTWF9TUERQKTogTmV3IGl0ZXJhdG9yIGZvciBmbG9hdDwtPmRvdWJsZSBjb252ZXJzaW9uLgor CShWU19zcGRwXyopOiBOZXcgbW9kZSBhdHRyaWJ1dGVzIGZvciBmbG9hdDwtPmRvdWJsZSBjb252 ZXJzaW9uLgorCShVTlNQRUNfVlNYXyopOiBSZW5hbWUgdW5zcGVjIGNvbnN0YW50cyB0byByZW1v dmUgWFYgZnJvbSB0aGUKKwluYW1lcy4gIENoYW5nZSBhbGwgdXNlcnMuCisJKHZzeF9tb3Y8bW9k ZT4pOiBEcm9wIFRJbW9kZSBzdXBwb3J0IGhlcmUuCisJKHZzeF9tb3Z0aSk6IE5ldyBUSW1vZGUg c3VwcG9ydCwgYWxsb3cgR1BScywgYnV0IGZhdm9yIFZTWAorCXJlZ2lzdGVycy4KKwkodnN4XzxW U19zcGRwX2luc24+KTogTmV3IHN1cHBvcnQgZm9yIGZsb2F0PC0+ZG91YmxlIGNvbnZlcnNpb25z LgorCSh2c3hfeHZjdmRwc3ApOiBEZWxldGUsIG1vdmUgaW50byB2c3hfPFZTX3NwZHBfaW5zbj4u CisJKHZzeF94dmN2c3BkcCk6IERpdHRvLgorCSh2c3hfeHZjdnV4ZHNwKTogTmV3IGNvbnZlcnNp b24gaW5zbi4KKwkodnN4X3h2Y3ZzcHN4ZHMpOiBEaXR0by4KKwkodnN4X3h2Y3ZzcHV4ZHMpOiBE aXR0by4KKwkodnN4X2NvbmNhdF88bW9kZT4pOiBHZW5lcmFsaXplIFYyREYgcGVybXV0ZS9zcGxh dCBvcGVyYXRpb25zIHRvCisJaW5jbHVkZSBWMkRJLgorCSh2c3hfc2V0Xzxtb2RlPik6IERpdHRv LgorCSh2c3hfZXh0cmFjdF88bW9kZT4pOiBEaXR0by4KKwkodnN4X3h4cGVybWRpXzxtb2RlPik6 IERpdHRvLgorCSh2c3hfc3BsYXQ8bW9kZT4pOiBEaXR0by4KKworCSogY29uZmlnL3JzNjAwMC9y czYwMDAuaCAoVlNYX1ZFQ1RPUl9NT1ZFX01PREUpOiBEZWxldGUuCisJKFZTWF9NT1ZFX01PREUp OiBBZGQgVEltb2RlLgorCShJUkFfQ09WRVJfQ0xBU1NFUyk6IERlbGV0ZS4KKwkoSVJBX0NPVkVS X0NMQVNTRVNfUFJFX1ZTWCk6IE5ldyBjb3ZlciBjbGFzc2VzIGZvciBtYWNoaW5lcworCXdpdGhv dXQgVlNYIHdoZXJlIGZsb2F0IGFuZCBhbHRpdmVjIGFyZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLgor CShJUkFfQ09WRVJfQ0xBU1NfVlNYKTogTmV3IGNvdmVyIGNsYXNzZXMgZm9yIG1hY2hpbmVzIHdp dGggVlNYCisJd2hlcmUgZmxvYXQgYW5kIGFsdGl2ZWMgYXJlIHBhcnQgb2YgdGhlIHNhbWUgcmVn aXN0ZXIgY2xhc3MuCisKKwkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoVk0yKTogTmV3IGl0 ZXJhdG9yIGZvciAxMjgtYml0IHR5cGVzLAorCWV4Y2VwdCBUSW1vZGUuCisJKGFsdGl2ZWNfbW92 PG1vZGU+KTogRHJvcCBtb3Z0aSBtb2RlIGhlcmUuCisJKGFsdGl2ZWNfbW92dGkpOiBBZGQgbW92 dGkgaW5zbiwgYW5kIGFsbG93IEdQUnMsIGJ1dCBmYXZvciBhbHRpdmVjCisJcmVnaXN0ZXJzLgor CisyMDA5LTA0LTE2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0u Y29tPgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX2hhc19pbmRp cmVjdF9qdW1wX3ApOiBOZXcKKwlkZWNsYXJhdGlvbi4KKwkocnM2MDAwX3NldF9pbmRpcmVjdF9q dW1wKTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHN0cnVjdCBtYWNoaW5l X2Z1bmN0aW9uKTogQWRkCisJaW5kaXJlY3RfanVtcF9wIGZpZWxkLgorCShyczYwMDBfb3ZlcnJp ZGVfb3B0aW9ucyk6IFdyYXAgd2FybmluZyBtZXNzYWdlcyBpbiBOXygpLiAgSWYKKwktbXZzeCB3 YXMgaW1wbGljaXRseSBzZXQsIGRvbid0IGdpdmUgYSB3YXJuaW5nIGZvciAtbXNvZnQtZmxvYXQs CisJanVzdCBzaWxlbnRseSB0dXJuIG9mZiB2c3guCisJKHJzNjAwMF9zZWNvbmRhcnlfcmVsb2Fk X2lubmVyKTogRG9uJ3QgdXNlIHN0cmljdCByZWdpc3RlcgorCWNoZWNraW5nLCBzaW5jZSBwc2V1 ZG9zIG1heSBzdGlsbCBiZSBwcmVzZW50LgorCShyZWdpc3Rlcl9tb3ZlX2Nvc3QpOiBJZiAtbWRl YnVnPWNvc3QsIHByaW50IG91dCBjb3N0IGluZm9ybWF0aW9uLgorCShyczYwMDBfbWVtb3J5X21v dmVfY29zdCk6IERpdHRvLgorCShyczYwMDBfaGFzX2luZGlyZWN0X2p1bXBfcCk6IE5ldyBmdW5j dGlvbiwgcmV0dXJuIHRydWUgaWYKKwljdXJyZW50IGZ1bmN0aW9uIGhhcyBhbiBpbmRpcmVjdCBq dW1wLgorCShyczYwMDBfc2V0X2luZGlyZWN0X2p1bXApOiBOZXcgZnVuY3Rpb24sIG5vdGUgdGhh dCBhbiBpbmRpcmVjdAorCWp1bXAgaGFzIGJlZW4gZ2VuZXJhdGVkLgorCisJKiBjb25maWcvcnM2 MDAwL3JzNjAwMC5tZCAoaW5kaXJlY3RfanVtcCk6IE5vdGUgdGhhdCB3ZSd2ZQorCWdlbmVyYXRl ZCBhbiBpbmRpcmVjdCBqdW1wLgorCSh0YWJsZWp1bXApOiBEaXR0by4KKwkoZG9sb29wX2VuZCk6 IERvIG5vdCBnZW5lcmF0ZSBkZWNyZW1lbnQgY3RyIGFuZCBicmFuY2gKKwlpbnN0cnVjdGlvbnMg aWYgYW4gaW5kaXJlY3QganVtcCBoYXMgYmVlbiBnZW5lcmF0ZWQuCisKKy0tLSBnY2MvZG9jL2V4 dGVuZC50ZXhpCShyZXZpc2lvbiAxNDYxMTkpCisrKysgZ2NjL2RvYy9leHRlbmQudGV4aQkocmV2 aXNpb24gMTQ2Nzk4KQorQEAgLTcwOTQsNyArNzA5NCw3IEBAIGluc3RydWN0aW9ucywgYnV0IGFs bG93IHRoZSBjb21waWxlciB0byAKKyAqIE1JUFMgTG9vbmdzb24gQnVpbHQtaW4gRnVuY3Rpb25z OjoKKyAqIE90aGVyIE1JUFMgQnVpbHQtaW4gRnVuY3Rpb25zOjoKKyAqIHBpY29DaGlwIEJ1aWx0 LWluIEZ1bmN0aW9uczo6CistKiBQb3dlclBDIEFsdGlWZWMgQnVpbHQtaW4gRnVuY3Rpb25zOjoK KysqIFBvd2VyUEMgQWx0aVZlYy9WU1ggQnVpbHQtaW4gRnVuY3Rpb25zOjoKKyAqIFNQQVJDIFZJ UyBCdWlsdC1pbiBGdW5jdGlvbnM6OgorICogU1BVIEJ1aWx0LWluIEZ1bmN0aW9uczo6CisgQGVu ZCBtZW51CitAQCAtOTU3MSw3ICs5NTcxLDcgQEAgR0NDIGRlZmluZXMgdGhlIHByZXByb2Nlc3Nv ciBtYWNybyBAY29kZQorIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBhdmFpbGFibGUuCisgQGVuZCB0 YWJsZQorIAorLUBub2RlIFBvd2VyUEMgQWx0aVZlYyBCdWlsdC1pbiBGdW5jdGlvbnMKKytAbm9k ZSBQb3dlclBDIEFsdGlWZWMvVlNYIEJ1aWx0LWluIEZ1bmN0aW9ucworIEBzdWJzZWN0aW9uIFBv d2VyUEMgQWx0aVZlYyBCdWlsdC1pbiBGdW5jdGlvbnMKKyAKKyBHQ0MgcHJvdmlkZXMgYW4gaW50 ZXJmYWNlIGZvciB0aGUgUG93ZXJQQyBmYW1pbHkgb2YgcHJvY2Vzc29ycyB0byBhY2Nlc3MKK0BA IC05NTk3LDYgKzk1OTcsMTkgQEAgdmVjdG9yIGJvb2wgaW50CisgdmVjdG9yIGZsb2F0CisgQGVu ZCBzbWFsbGV4YW1wbGUKKyAKKytJZiBAb3B0aW9uey1tdnN4fSBpcyB1c2VkIHRoZSBmb2xsb3dp bmcgYWRkaXRpb25hbCB2ZWN0b3IgdHlwZXMgYXJlCisraW1wbGVtZW50ZWQuCisrCisrQHNtYWxs ZXhhbXBsZQorK3ZlY3RvciB1bnNpZ25lZCBsb25nCisrdmVjdG9yIHNpZ25lZCBsb25nCisrdmVj dG9yIGRvdWJsZQorK0BlbmQgc21hbGxleGFtcGxlCisrCisrVGhlIGxvbmcgdHlwZXMgYXJlIG9u bHkgaW1wbGVtZW50ZWQgZm9yIDY0LWJpdCBjb2RlIGdlbmVyYXRpb24sIGFuZAorK3RoZSBsb25n IHR5cGUgaXMgb25seSB1c2VkIGluIHRoZSBmbG9hdGluZyBwb2ludC9pbnRlZ2VyIGNvbnZlcnNp b24KKytpbnN0cnVjdGlvbnMuCisrCisgR0NDJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhpZ2gt bGV2ZWwgbGFuZ3VhZ2UgaW50ZXJmYWNlIGF2YWlsYWJsZSBmcm9tCisgQyBhbmQgQysrIGNvZGUg ZGlmZmVycyBmcm9tIE1vdG9yb2xhJ3MgZG9jdW1lbnRhdGlvbiBpbiBzZXZlcmFsIHdheXMuCisg CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LWJ1aWx0aW4tMy5jCShy ZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC1idWls dGluLTMuYwkocmV2aXNpb24gMTQ2Nzk4KQorQEAgLTAsMCArMSwyMTIgQEAKKysvKiB7IGRnLWRv IGNvbXBpbGUgeyB0YXJnZXQgeyBwb3dlcnBjKi0qLSogJiYgbHA2NCB9IH0gfSAqLworKy8qIHsg ZGctc2tpcC1pZiAiIiB7IHBvd2VycGMqLSotZGFyd2luKiB9IHsgIioiIH0geyAiIiB9IH0gKi8K KysvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBwb3dlcnBjX3ZzeF9vayB9ICovCisr LyogeyBkZy1vcHRpb25zICItTzIgLW1jcHU9cG93ZXI3IiB9ICovCisrLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJ4eHNlbCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJ2cGVybSIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4 dnJkcGkiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZyZHBpYyIg fSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dnJkcGltIiB9IH0gKi8K KysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2cmRwaXAiIH0gfSAqLworKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZyZHBpeiIgfSB9ICovCisrLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJ4dnJzcGkiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAieHZyc3BpYyIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ4dnJzcGltIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2 cnNwaXAiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZyc3BpeiIg fSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4c3JkcGkiIH0gfSAqLwor Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHNyZHBpYyIgfSB9ICovCisrLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4c3JkcGltIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInhzcmRwaXAiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAieHNyZHBpeiIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ4c21heGRwIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInhz bWluZHAiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHhsYW5kIiB9 IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh4bGFuZGMiIH0gfSAqLwor Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHhsbm9yIiB9IH0gKi8KKysvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh4bG9yIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgInh4bHhvciIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJ4dmNtcGVxZHAiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAieHZjbXBndGRwIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2 Y21wZ2VkcCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmNtcGVx c3AiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZjbXBndHNwIiB9 IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2Y21wZ2VzcCIgfSB9ICov CisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4eHNsZHdpIiB9IH0gKi8KKysvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsIiB9IH0gKi8KKysKKytleHRlcm4g X192ZWN0b3IgaW50IHNpW11bNF07CisrZXh0ZXJuIF9fdmVjdG9yIHNob3J0IHNzW11bNF07Cisr ZXh0ZXJuIF9fdmVjdG9yIHNpZ25lZCBjaGFyIHNjW11bNF07CisrZXh0ZXJuIF9fdmVjdG9yIGZs b2F0IGZbXVs0XTsKKytleHRlcm4gX192ZWN0b3IgdW5zaWduZWQgaW50IHVpW11bNF07CisrZXh0 ZXJuIF9fdmVjdG9yIHVuc2lnbmVkIHNob3J0IHVzW11bNF07CisrZXh0ZXJuIF9fdmVjdG9yIHVu c2lnbmVkIGNoYXIgdWNbXVs0XTsKKytleHRlcm4gX192ZWN0b3IgX19ib29sIGludCBiaVtdWzRd OworK2V4dGVybiBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgYnNbXVs0XTsKKytleHRlcm4gX192ZWN0 b3IgX19ib29sIGNoYXIgYmNbXVs0XTsKKytleHRlcm4gX192ZWN0b3IgX19waXhlbCBwW11bNF07 CisrI2lmZGVmIF9fVlNYX18KKytleHRlcm4gX192ZWN0b3IgZG91YmxlIGRbXVs0XTsKKytleHRl cm4gX192ZWN0b3IgbG9uZyBzbFtdWzRdOworK2V4dGVybiBfX3ZlY3RvciB1bnNpZ25lZCBsb25n IHVsW11bNF07CisrZXh0ZXJuIF9fdmVjdG9yIF9fYm9vbCBsb25nIGJsW11bNF07CisrI2VuZGlm CisrCisraW50IGRvX3NlbCh2b2lkKQorK3sKKysgIGludCBpID0gMDsKKysKKysgIHNpW2ldWzBd ID0gX19idWlsdGluX3ZzeF94eHNlbF80c2kgKHNpW2ldWzFdLCBzaVtpXVsyXSwgc2lbaV1bM10p OyBpKys7CisrICBzc1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWxfOGhpIChzc1tpXVsxXSwg c3NbaV1bMl0sIHNzW2ldWzNdKTsgaSsrOworKyAgc2NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4 c2VsXzE2cWkgKHNjW2ldWzFdLCBzY1tpXVsyXSwgc2NbaV1bM10pOyBpKys7CisrICBmW2ldWzBd ID0gX19idWlsdGluX3ZzeF94eHNlbF80c2YgKGZbaV1bMV0sIGZbaV1bMl0sIGZbaV1bM10pOyBp Kys7CisrICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNlbF8yZGYgKGRbaV1bMV0sIGRbaV1b Ml0sIGRbaV1bM10pOyBpKys7CisrCisrICBzaVtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWwg KHNpW2ldWzFdLCBzaVtpXVsyXSwgYmlbaV1bM10pOyBpKys7CisrICBzc1tpXVswXSA9IF9fYnVp bHRpbl92c3hfeHhzZWwgKHNzW2ldWzFdLCBzc1tpXVsyXSwgYnNbaV1bM10pOyBpKys7CisrICBz Y1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWwgKHNjW2ldWzFdLCBzY1tpXVsyXSwgYmNbaV1b M10pOyBpKys7CisrICBmW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNlbCAoZltpXVsxXSwgZltp XVsyXSwgYmlbaV1bM10pOyBpKys7CisrICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNlbCAo ZFtpXVsxXSwgZFtpXVsyXSwgYmxbaV1bM10pOyBpKys7CisrCisrICBzaVtpXVswXSA9IF9fYnVp bHRpbl92c3hfeHhzZWwgKHNpW2ldWzFdLCBzaVtpXVsyXSwgdWlbaV1bM10pOyBpKys7CisrICBz c1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWwgKHNzW2ldWzFdLCBzc1tpXVsyXSwgdXNbaV1b M10pOyBpKys7CisrICBzY1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzZWwgKHNjW2ldWzFdLCBz Y1tpXVsyXSwgdWNbaV1bM10pOyBpKys7CisrICBmW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNl bCAoZltpXVsxXSwgZltpXVsyXSwgdWlbaV1bM10pOyBpKys7CisrICBkW2ldWzBdID0gX19idWls dGluX3ZzeF94eHNlbCAoZFtpXVsxXSwgZFtpXVsyXSwgdWxbaV1bM10pOyBpKys7CisrCisrICBy ZXR1cm4gaTsKKyt9CisrCisraW50IGRvX3Blcm0odm9pZCkKKyt7CisrICBpbnQgaSA9IDA7Cisr CisrICBzaVtpXVswXSA9IF9fYnVpbHRpbl92c3hfdnBlcm1fNHNpIChzaVtpXVsxXSwgc2lbaV1b Ml0sIHNjW2ldWzNdKTsgaSsrOworKyAgc3NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3ZwZXJtXzho aSAoc3NbaV1bMV0sIHNzW2ldWzJdLCBzY1tpXVszXSk7IGkrKzsKKysgIHNjW2ldWzBdID0gX19i dWlsdGluX3ZzeF92cGVybV8xNnFpIChzY1tpXVsxXSwgc2NbaV1bMl0sIHNjW2ldWzNdKTsgaSsr OworKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfdnBlcm1fNHNmIChmW2ldWzFdLCBmW2ldWzJd LCBzY1tpXVszXSk7IGkrKzsKKysgIGRbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3ZwZXJtXzJkZiAo ZFtpXVsxXSwgZFtpXVsyXSwgc2NbaV1bM10pOyBpKys7CisrCisrICBzaVtpXVswXSA9IF9fYnVp bHRpbl92c3hfdnBlcm0gKHNpW2ldWzFdLCBzaVtpXVsyXSwgdWNbaV1bM10pOyBpKys7CisrICBz c1tpXVswXSA9IF9fYnVpbHRpbl92c3hfdnBlcm0gKHNzW2ldWzFdLCBzc1tpXVsyXSwgdWNbaV1b M10pOyBpKys7CisrICBzY1tpXVswXSA9IF9fYnVpbHRpbl92c3hfdnBlcm0gKHNjW2ldWzFdLCBz Y1tpXVsyXSwgdWNbaV1bM10pOyBpKys7CisrICBmW2ldWzBdID0gX19idWlsdGluX3ZzeF92cGVy bSAoZltpXVsxXSwgZltpXVsyXSwgdWNbaV1bM10pOyBpKys7CisrICBkW2ldWzBdID0gX19idWls dGluX3ZzeF92cGVybSAoZFtpXVsxXSwgZFtpXVsyXSwgdWNbaV1bM10pOyBpKys7CisrCisrICBy ZXR1cm4gaTsKKyt9CisrCisraW50IGRvX3h4cGVybSAodm9pZCkKKyt7CisrICBpbnQgaSA9IDA7 CisrCisrICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHBlcm1kaV8yZGYgKGRbaV1bMV0sIGRb aV1bMl0sIDApOyBpKys7CisrICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHBlcm1kaSAoZFtp XVsxXSwgZFtpXVsyXSwgMSk7IGkrKzsKKysgIHJldHVybiBpOworK30KKysKKytkb3VibGUgeCwg eTsKKyt2b2lkIGRvX2NvbmNhdCAodm9pZCkKKyt7CisrICBkWzBdWzBdID0gX19idWlsdGluX3Zz eF9jb25jYXRfMmRmICh4LCB5KTsKKyt9CisrCisrdm9pZCBkb19zZXQgKHZvaWQpCisreworKyAg ZFswXVswXSA9IF9fYnVpbHRpbl92c3hfc2V0XzJkZiAoZFswXVsxXSwgeCwgMCk7CisrICBkWzFd WzBdID0gX19idWlsdGluX3ZzeF9zZXRfMmRmIChkWzFdWzFdLCB5LCAxKTsKKyt9CisrCisrZXh0 ZXJuIGRvdWJsZSB6W11bNF07CisrCisraW50IGRvX21hdGggKHZvaWQpCisreworKyAgaW50IGkg PSAwOworKworKyAgZFtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZyZHBpICAoZFtpXVsxXSk7IGkr KzsKKysgIGRbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h2cmRwaWMgKGRbaV1bMV0pOyBpKys7Cisr ICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94dnJkcGltIChkW2ldWzFdKTsgaSsrOworKyAgZFtp XVswXSA9IF9fYnVpbHRpbl92c3hfeHZyZHBpcCAoZFtpXVsxXSk7IGkrKzsKKysgIGRbaV1bMF0g PSBfX2J1aWx0aW5fdnN4X3h2cmRwaXogKGRbaV1bMV0pOyBpKys7CisrCisrICBmW2ldWzBdID0g X19idWlsdGluX3ZzeF94dnJzcGkgIChmW2ldWzFdKTsgaSsrOworKyAgZltpXVswXSA9IF9fYnVp bHRpbl92c3hfeHZyc3BpYyAoZltpXVsxXSk7IGkrKzsKKysgIGZbaV1bMF0gPSBfX2J1aWx0aW5f dnN4X3h2cnNwaW0gKGZbaV1bMV0pOyBpKys7CisrICBmW2ldWzBdID0gX19idWlsdGluX3ZzeF94 dnJzcGlwIChmW2ldWzFdKTsgaSsrOworKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHZyc3Bp eiAoZltpXVsxXSk7IGkrKzsKKysKKysgIHpbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3hzcmRwaSAg KHpbaV1bMV0pOyBpKys7CisrICB6W2ldWzBdID0gX19idWlsdGluX3ZzeF94c3JkcGljICh6W2ld WzFdKTsgaSsrOworKyAgeltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHNyZHBpbSAoeltpXVsxXSk7 IGkrKzsKKysgIHpbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3hzcmRwaXAgKHpbaV1bMV0pOyBpKys7 CisrICB6W2ldWzBdID0gX19idWlsdGluX3ZzeF94c3JkcGl6ICh6W2ldWzFdKTsgaSsrOworKyAg eltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHNtYXhkcCAoeltpXVsxXSwgeltpXVswXSk7IGkrKzsK KysgIHpbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3hzbWluZHAgKHpbaV1bMV0sIHpbaV1bMF0pOyBp Kys7CisrICByZXR1cm4gaTsKKyt9CisrCisraW50IGRvX2NtcCAodm9pZCkKKyt7CisrICBpbnQg aSA9IDA7CisrCisrICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94dmNtcGVxZHAgKGRbaV1bMV0s IGRbaV1bMl0pOyBpKys7CisrICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94dmNtcGd0ZHAgKGRb aV1bMV0sIGRbaV1bMl0pOyBpKys7CisrICBkW2ldWzBdID0gX19idWlsdGluX3ZzeF94dmNtcGdl ZHAgKGRbaV1bMV0sIGRbaV1bMl0pOyBpKys7CisrCisrICBmW2ldWzBdID0gX19idWlsdGluX3Zz eF94dmNtcGVxc3AgKGZbaV1bMV0sIGZbaV1bMl0pOyBpKys7CisrICBmW2ldWzBdID0gX19idWls dGluX3ZzeF94dmNtcGd0c3AgKGZbaV1bMV0sIGZbaV1bMl0pOyBpKys7CisrICBmW2ldWzBdID0g X19idWlsdGluX3ZzeF94dmNtcGdlc3AgKGZbaV1bMV0sIGZbaV1bMl0pOyBpKys7CisrICByZXR1 cm4gaTsKKyt9CisrCisraW50IGRvX2xvZ2ljYWwgKHZvaWQpCisreworKyAgaW50IGkgPSAwOwor KworKyAgc2lbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bGFuZCAoc2lbaV1bMV0sIHNpW2ldWzJd KTsgaSsrOworKyAgc2lbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bGFuZGMgKHNpW2ldWzFdLCBz aVtpXVsyXSk7IGkrKzsKKysgIHNpW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGxub3IgKHNpW2ld WzFdLCBzaVtpXVsyXSk7IGkrKzsKKysgIHNpW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGxvciAo c2lbaV1bMV0sIHNpW2ldWzJdKTsgaSsrOworKyAgc2lbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4 bHhvciAoc2lbaV1bMV0sIHNpW2ldWzJdKTsgaSsrOworKworKyAgc3NbaV1bMF0gPSBfX2J1aWx0 aW5fdnN4X3h4bGFuZCAoc3NbaV1bMV0sIHNzW2ldWzJdKTsgaSsrOworKyAgc3NbaV1bMF0gPSBf X2J1aWx0aW5fdnN4X3h4bGFuZGMgKHNzW2ldWzFdLCBzc1tpXVsyXSk7IGkrKzsKKysgIHNzW2ld WzBdID0gX19idWlsdGluX3ZzeF94eGxub3IgKHNzW2ldWzFdLCBzc1tpXVsyXSk7IGkrKzsKKysg IHNzW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGxvciAoc3NbaV1bMV0sIHNzW2ldWzJdKTsgaSsr OworKyAgc3NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bHhvciAoc3NbaV1bMV0sIHNzW2ldWzJd KTsgaSsrOworKworKyAgc2NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bGFuZCAoc2NbaV1bMV0s IHNjW2ldWzJdKTsgaSsrOworKyAgc2NbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bGFuZGMgKHNj W2ldWzFdLCBzY1tpXVsyXSk7IGkrKzsKKysgIHNjW2ldWzBdID0gX19idWlsdGluX3ZzeF94eGxu b3IgKHNjW2ldWzFdLCBzY1tpXVsyXSk7IGkrKzsKKysgIHNjW2ldWzBdID0gX19idWlsdGluX3Zz eF94eGxvciAoc2NbaV1bMV0sIHNjW2ldWzJdKTsgaSsrOworKyAgc2NbaV1bMF0gPSBfX2J1aWx0 aW5fdnN4X3h4bHhvciAoc2NbaV1bMV0sIHNjW2ldWzJdKTsgaSsrOworKworKyAgZFtpXVswXSA9 IF9fYnVpbHRpbl92c3hfeHhsYW5kIChkW2ldWzFdLCBkW2ldWzJdKTsgaSsrOworKyAgZFtpXVsw XSA9IF9fYnVpbHRpbl92c3hfeHhsYW5kYyAoZFtpXVsxXSwgZFtpXVsyXSk7IGkrKzsKKysgIGRb aV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bG5vciAoZFtpXVsxXSwgZFtpXVsyXSk7IGkrKzsKKysg IGRbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bG9yIChkW2ldWzFdLCBkW2ldWzJdKTsgaSsrOwor KyAgZFtpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhseG9yIChkW2ldWzFdLCBkW2ldWzJdKTsgaSsr OworKworKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhsYW5kIChmW2ldWzFdLCBmW2ldWzJd KTsgaSsrOworKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhsYW5kYyAoZltpXVsxXSwgZltp XVsyXSk7IGkrKzsKKysgIGZbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bG5vciAoZltpXVsxXSwg ZltpXVsyXSk7IGkrKzsKKysgIGZbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4bG9yIChmW2ldWzFd LCBmW2ldWzJdKTsgaSsrOworKyAgZltpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhseG9yIChmW2ld WzFdLCBmW2ldWzJdKTsgaSsrOworKyAgcmV0dXJuIGk7CisrfQorKworK2ludCBkb194eHNsZHdp ICh2b2lkKQorK3sKKysgIGludCBpID0gMDsKKysKKysgIHNpW2ldWzBdID0gX19idWlsdGluX3Zz eF94eHNsZHdpIChzaVtpXVsxXSwgc2lbaV1bMl0sIDApOyBpKys7CisrICBzc1tpXVswXSA9IF9f YnVpbHRpbl92c3hfeHhzbGR3aSAoc3NbaV1bMV0sIHNzW2ldWzJdLCAxKTsgaSsrOworKyAgc2Nb aV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4c2xkd2kgKHNjW2ldWzFdLCBzY1tpXVsyXSwgMik7IGkr KzsKKysgIHVpW2ldWzBdID0gX19idWlsdGluX3ZzeF94eHNsZHdpICh1aVtpXVsxXSwgdWlbaV1b Ml0sIDMpOyBpKys7CisrICB1c1tpXVswXSA9IF9fYnVpbHRpbl92c3hfeHhzbGR3aSAodXNbaV1b MV0sIHVzW2ldWzJdLCAwKTsgaSsrOworKyAgdWNbaV1bMF0gPSBfX2J1aWx0aW5fdnN4X3h4c2xk d2kgKHVjW2ldWzFdLCB1Y1tpXVsyXSwgMSk7IGkrKzsKKysgIGZbaV1bMF0gPSBfX2J1aWx0aW5f dnN4X3h4c2xkd2kgKGZbaV1bMV0sIGZbaV1bMl0sIDIpOyBpKys7CisrICBkW2ldWzBdID0gX19i dWlsdGluX3ZzeF94eHNsZHdpIChkW2ldWzFdLCBkW2ldWzJdLCAzKTsgaSsrOworKyAgcmV0dXJu IGk7CisrfQorLS0tIGdjYy9jb25maWcvcnM2MDAwL3ZlY3Rvci5tZAkocmV2aXNpb24gMTQ2MTE5 KQorKysrIGdjYy9jb25maWcvcnM2MDAwL3ZlY3Rvci5tZAkocmV2aXNpb24gMTQ2Nzk4KQorQEAg LTM5LDYgKzM5LDkgQEAgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19NIFtWMTZRSSBWOEhJIAor IDs7IFZlY3RvciBjb21wYXJpc29uIG1vZGVzCisgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19D IFtWMTZRSSBWOEhJIFY0U0kgVjRTRiBWMkRGXSkKKyAKKys7OyBWZWN0b3IgaW5pdC9leHRyYWN0 IG1vZGVzCisrKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19FIFtWMTZRSSBWOEhJIFY0U0kgVjJE SSBWNFNGIFYyREZdKQorKworIDs7IFZlY3RvciByZWxvYWQgaXRlcmF0b3IKKyAoZGVmaW5lX21v ZGVfaXRlcmF0b3IgVkVDX1IgW1YxNlFJIFY4SEkgVjRTSSBWMkRJIFY0U0YgVjJERiBERiBUSV0p CisgCitAQCAtMzQ3LDM0ICszNTAsMTMgQEAgKGRlZmluZV9leHBhbmQgInZlY3Rvcl9nZXU8bW9k ZT4iCisgOzsgTm90ZSB0aGUgYXJndW1lbnRzIGZvciBfX2J1aWx0aW5fYWx0aXZlY192c2VsIGFy ZSBvcDIsIG9wMSwgbWFzaworIDs7IHdoaWNoIGlzIGluIHRoZSByZXZlcnNlIG9yZGVyIHRoYXQg d2Ugd2FudAorIChkZWZpbmVfZXhwYW5kICJ2ZWN0b3JfdnNlbDxtb2RlPiIKKy0gIFsobWF0Y2hf b3BlcmFuZDpWRUNfRiAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKy0gICAobWF0Y2hfb3BlcmFu ZDpWRUNfRiAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKy0gICAobWF0Y2hfb3BlcmFuZDpWRUNf RiAyICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKy0gICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAzICJ2 bG9naWNhbF9vcGVyYW5kIiAiIildCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAwICJ2 bG9naWNhbF9vcGVyYW5kIiAiIikKKysJKGlmX3RoZW5fZWxzZTpWRUNfTCAobmUgKG1hdGNoX29w ZXJhbmQ6VkVDX0wgMyAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrCQkJCShjb25zdF9pbnQgMCkp CisrCQkJICAgIChtYXRjaF9vcGVyYW5kOlZFQ19MIDIgInZsb2dpY2FsX29wZXJhbmQiICIiKQor KwkJCSAgICAobWF0Y2hfb3BlcmFuZDpWRUNfTCAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikpKV0K KyAgICJWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKKy0gICIKKy17 CistICBpZiAoVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpKQorLSAgICBlbWl0X2luc24g KGdlbl92c3hfdnNlbDxtb2RlPiAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzNdLAorLQkJCQkgICBv cGVyYW5kc1syXSwgb3BlcmFuZHNbMV0pKTsKKy0gIGVsc2UKKy0gICAgZW1pdF9pbnNuIChnZW5f YWx0aXZlY192c2VsPG1vZGU+IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbM10sCistCQkJCSAgICAg ICBvcGVyYW5kc1syXSwgb3BlcmFuZHNbMV0pKTsKKy0gIERPTkU7CistfSIpCistCistKGRlZmlu ZV9leHBhbmQgInZlY3Rvcl92c2VsPG1vZGU+IgorLSAgWyhtYXRjaF9vcGVyYW5kOlZFQ19JIDAg InZsb2dpY2FsX29wZXJhbmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDEgInZsb2dp Y2FsX29wZXJhbmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDIgInZsb2dpY2FsX29w ZXJhbmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDMgInZsb2dpY2FsX29wZXJhbmQi ICIiKV0KKy0gICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpIgorLSAgIgorLXsK Ky0gIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdnNlbDxtb2RlPiAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzNdLAorLQkJCQkgICAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1sxXSkpOworLSAgRE9ORTsK Ky19IikKKysgICIiKQorIAorIAwKKyA7OyBWZWN0b3IgbG9naWNhbCBpbnN0cnVjdGlvbnMKK0BA IC00NzUsMTkgKzQ1NywyMyBAQCAoZGVmaW5lX2V4cGFuZCAiZml4dW5zX3RydW5jPG1vZGU+PFZF Q19pCisgDAorIDs7IFZlY3RvciBpbml0aWFsaXphdGlvbiwgc2V0LCBleHRyYWN0CisgKGRlZmlu ZV9leHBhbmQgInZlY19pbml0PG1vZGU+IgorLSAgWyhtYXRjaF9vcGVyYW5kOlZFQ19DIDAgInZs b2dpY2FsX29wZXJhbmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kOlZFQ19DIDEgInZlY19pbml0 X29wZXJhbmQiICIiKV0KKy0gICJWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5t b2RlKSIKKysgIFsobWF0Y2hfb3BlcmFuZDpWRUNfRSAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikK KysgICAobWF0Y2hfb3BlcmFuZDpWRUNfRSAxICJ2ZWNfaW5pdF9vcGVyYW5kIiAiIildCisrICAi KDxNT0RFPm1vZGUgPT0gVjJESW1vZGUKKysgICAgPyBWRUNUT1JfTUVNX1ZTWF9QIChWMkRJbW9k ZSkKKysgICAgOiBWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSkiCisg eworICAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfaW5pdCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd KTsKKyAgIERPTkU7CisgfSkKKyAKKyAoZGVmaW5lX2V4cGFuZCAidmVjX3NldDxtb2RlPiIKKy0g IFsobWF0Y2hfb3BlcmFuZDpWRUNfQyAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKysgIFsobWF0 Y2hfb3BlcmFuZDpWRUNfRSAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKyAgICAobWF0Y2hfb3Bl cmFuZDo8VkVDX2Jhc2U+IDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQorICAgIChtYXRjaF9vcGVy YW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCistICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19P Ul9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAiKDxNT0RFPm1vZGUgPT0gVjJESW1vZGUKKysgICAg PyBWRUNUT1JfTUVNX1ZTWF9QIChWMkRJbW9kZSkKKysgICAgOiBWRUNUT1JfVU5JVF9BTFRJVkVD X09SX1ZTWF9QICg8TU9ERT5tb2RlKSkiCisgeworICAgcnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0 IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFuZHNbMl0pKTsKKyAgIERP TkU7CitAQCAtNDk1LDkgKzQ4MSwxMSBAQCAoZGVmaW5lX2V4cGFuZCAidmVjX3NldDxtb2RlPiIK KyAKKyAoZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Q8bW9kZT4iCisgICBbKG1hdGNoX29wZXJh bmQ6PFZFQ19iYXNlPiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKy0gICAobWF0Y2hfb3BlcmFu ZDpWRUNfQyAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKysgICAobWF0Y2hfb3BlcmFuZDpWRUNf RSAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKyAgICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9p bnRfb3BlcmFuZCIgIiIpXQorLSAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RF Pm1vZGUpIgorKyAgIig8TU9ERT5tb2RlID09IFYyREltb2RlCisrICAgID8gVkVDVE9SX01FTV9W U1hfUCAoVjJESW1vZGUpCisrICAgIDogVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1P REU+bW9kZSkpIgorIHsKKyAgIHJzNjAwMF9leHBhbmRfdmVjdG9yX2V4dHJhY3QgKG9wZXJhbmRz WzBdLCBvcGVyYW5kc1sxXSwKKyAJCQkJSU5UVkFMIChvcGVyYW5kc1syXSkpOworLS0tIGdjYy9j b25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQJKHJldmlzaW9uIDE0NjExOSkKKysrKyBnY2MvY29u ZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kCShyZXZpc2lvbiAxNDY3OTgpCitAQCAtMzI3LDYgKzMy Nyw5IEBAIChkZWZpbmVfcHJlZGljYXRlICJlYXN5X3ZlY3Rvcl9jb25zdGFudCIKKyAgIGlmIChU QVJHRVRfUEFJUkVEX0ZMT0FUKQorICAgICByZXR1cm4gZmFsc2U7CisgCisrICBpZiAoKFZTWF9W RUNUT1JfTU9ERSAobW9kZSkgfHwgbW9kZSA9PSBUSW1vZGUpICYmIHplcm9fY29uc3RhbnQgKG9w LCBtb2RlKSkKKysgICAgcmV0dXJuIHRydWU7CisrCisgICBpZiAoQUxUSVZFQ19WRUNUT1JfTU9E RSAobW9kZSkpCisgICAgIHsKKyAgICAgICBpZiAoemVyb19jb25zdGFudCAob3AsIG1vZGUpKQor LS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaAkocmV2aXNpb24gMTQ2MTE5KQor KysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaAkocmV2aXNpb24gMTQ2Nzk4KQor QEAgLTE3Niw2ICsxNzYsOCBAQCBleHRlcm4gaW50IHJzNjAwMF9yZWdpc3Rlcl9tb3ZlX2Nvc3Qg KGVuCisgCQkJCSAgICAgIGVudW0gcmVnX2NsYXNzLCBlbnVtIHJlZ19jbGFzcyk7CisgZXh0ZXJu IGludCByczYwMDBfbWVtb3J5X21vdmVfY29zdCAoZW51bSBtYWNoaW5lX21vZGUsIGVudW0gcmVn X2NsYXNzLCBpbnQpOworIGV4dGVybiBib29sIHJzNjAwMF90bHNfcmVmZXJlbmNlZF9wIChydHgp OworK2V4dGVybiBib29sIHJzNjAwMF9oYXNfaW5kaXJlY3RfanVtcF9wICh2b2lkKTsKKytleHRl cm4gdm9pZCByczYwMDBfc2V0X2luZGlyZWN0X2p1bXAgKHZvaWQpOworIGV4dGVybiB2b2lkIHJz NjAwMF9jb25kaXRpb25hbF9yZWdpc3Rlcl91c2FnZSAodm9pZCk7CisgCisgLyogRGVjbGFyZSBm dW5jdGlvbnMgaW4gcnM2MDAwLWMuYyAqLworLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1j LmMJKHJldmlzaW9uIDE0NjExOSkKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAtYy5jCShy ZXZpc2lvbiAxNDY3OTgpCitAQCAtMzM2LDcgKzMzNiwyMCBAQCByczYwMDBfY3B1X2NwcF9idWls dGlucyAoY3BwX3JlYWRlciAqcGZpCisgICBpZiAoVEFSR0VUX05PX0xXU1lOQykKKyAgICAgYnVp bHRpbl9kZWZpbmUgKCJfX05PX0xXU1lOQ19fIik7CisgICBpZiAoVEFSR0VUX1ZTWCkKKy0gICAg YnVpbHRpbl9kZWZpbmUgKCJfX1ZTWF9fIik7CisrICAgIHsKKysgICAgICBidWlsdGluX2RlZmlu ZSAoIl9fVlNYX18iKTsKKysKKysgICAgICAvKiBGb3IgdGhlIFZTWCBidWlsdGluIGZ1bmN0aW9u cyBpZGVudGljYWwgdG8gQWx0aXZlYyBmdW5jdGlvbnMsIGp1c3QgbWFwCisrCSB0aGUgYWx0aXZl YyBidWlsdGluIGludG8gdGhlIHZzeCB2ZXJzaW9uICh0aGUgYWx0aXZlYyBmdW5jdGlvbnMKKysJ IGdlbmVyYXRlIFZTWCBjb2RlIGlmIC1tdnN4KS4gICovCisrICAgICAgYnVpbHRpbl9kZWZpbmUg KCJfX2J1aWx0aW5fdnN4X3h4bGFuZD1fX2J1aWx0aW5fdmVjX2FuZCIpOworKyAgICAgIGJ1aWx0 aW5fZGVmaW5lICgiX19idWlsdGluX3ZzeF94eGxhbmRjPV9fYnVpbHRpbl92ZWNfYW5kYyIpOwor KyAgICAgIGJ1aWx0aW5fZGVmaW5lICgiX19idWlsdGluX3ZzeF94eGxub3I9X19idWlsdGluX3Zl Y19ub3IiKTsKKysgICAgICBidWlsdGluX2RlZmluZSAoIl9fYnVpbHRpbl92c3hfeHhsb3I9X19i dWlsdGluX3ZlY19vciIpOworKyAgICAgIGJ1aWx0aW5fZGVmaW5lICgiX19idWlsdGluX3ZzeF94 eGx4b3I9X19idWlsdGluX3ZlY194b3IiKTsKKysgICAgICBidWlsdGluX2RlZmluZSAoIl9fYnVp bHRpbl92c3hfeHhzZWw9X19idWlsdGluX3ZlY19zZWwiKTsKKysgICAgICBidWlsdGluX2RlZmlu ZSAoIl9fYnVpbHRpbl92c3hfdnBlcm09X19idWlsdGluX3ZlY19wZXJtIik7CisrICAgIH0KKyAK KyAgIC8qIE1heSBiZSBvdmVycmlkZGVuIGJ5IHRhcmdldCBjb25maWd1cmF0aW9uLiAgKi8KKyAg IFJTNjAwMF9DUFVfQ1BQX0VORElBTl9CVUlMVElOUygpOworQEAgLTQwMCw3ICs0MTMsNyBAQCBz dHJ1Y3QgYWx0aXZlY19idWlsdGluX3R5cGVzCisgfTsKKyAKKyBjb25zdCBzdHJ1Y3QgYWx0aXZl Y19idWlsdGluX3R5cGVzIGFsdGl2ZWNfb3ZlcmxvYWRlZF9idWlsdGluc1tdID0geworLSAgLyog VW5hcnkgQWx0aVZlYyBidWlsdGlucy4gICovCisrICAvKiBVbmFyeSBBbHRpVmVjL1ZTWCBidWls dGlucy4gICovCisgICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQUJTLCBBTFRJVkVDX0JVSUxUSU5f QUJTX1YxNlFJLAorICAgICBSUzYwMDBfQlRJX1YxNlFJLCBSUzYwMDBfQlRJX1YxNlFJLCAwLCAw IH0sCisgICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfQUJTLCBBTFRJVkVDX0JVSUxUSU5fQUJTX1Y4 SEksCitAQCAtNDk2LDcgKzUwOSw3IEBAIGNvbnN0IHN0cnVjdCBhbHRpdmVjX2J1aWx0aW5fdHlw ZXMgYWx0aXYKKyAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19WVVBLTFNCLCBBTFRJVkVDX0JVSUxU SU5fVlVQS0xTQiwKKyAgICAgUlM2MDAwX0JUSV9ib29sX1Y4SEksIFJTNjAwMF9CVElfYm9vbF9W MTZRSSwgMCwgMCB9LAorIAorLSAgLyogQmluYXJ5IEFsdGlWZWMgYnVpbHRpbnMuICAqLworKyAg LyogQmluYXJ5IEFsdGlWZWMvVlNYIGJ1aWx0aW5zLiAgKi8KKyAgIHsgQUxUSVZFQ19CVUlMVElO X1ZFQ19BREQsIEFMVElWRUNfQlVJTFRJTl9WQUREVUJNLAorICAgICBSUzYwMDBfQlRJX1YxNlFJ LCBSUzYwMDBfQlRJX2Jvb2xfVjE2UUksIFJTNjAwMF9CVElfVjE2UUksIDAgfSwKKyAgIHsgQUxU SVZFQ19CVUlMVElOX1ZFQ19BREQsIEFMVElWRUNfQlVJTFRJTl9WQUREVUJNLAorQEAgLTIyMDYs NyArMjIxOSw3IEBAIGNvbnN0IHN0cnVjdCBhbHRpdmVjX2J1aWx0aW5fdHlwZXMgYWx0aXYKKyAg IHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19YT1IsIEFMVElWRUNfQlVJTFRJTl9WWE9SLAorICAgICBS UzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJLCBSUzYw MDBfQlRJX3Vuc2lnbmVkX1YxNlFJLCAwIH0sCisgCistICAvKiBUZXJuYXJ5IEFsdGlWZWMgYnVp bHRpbnMuICAqLworKyAgLyogVGVybmFyeSBBbHRpVmVjL1ZTWCBidWlsdGlucy4gICovCisgICB7 IEFMVElWRUNfQlVJTFRJTl9WRUNfRFNULCBBTFRJVkVDX0JVSUxUSU5fRFNULAorICAgICBSUzYw MDBfQlRJX3ZvaWQsIH5SUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJLCBSUzYwMDBfQlRJX0lOVFNJ LCBSUzYwMDBfQlRJX0lOVFNJIH0sCisgICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfRFNULCBBTFRJ VkVDX0JVSUxUSU5fRFNULAorQEAgLTI0MDcsNiArMjQyMCwxMCBAQCBjb25zdCBzdHJ1Y3QgYWx0 aXZlY19idWlsdGluX3R5cGVzIGFsdGl2CisgICAgIFJTNjAwMF9CVElfdW5zaWduZWRfVjRTSSwg UlM2MDAwX0JUSV91bnNpZ25lZF9WOEhJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y4SEksIFJTNjAw MF9CVElfdW5zaWduZWRfVjRTSSB9LAorICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX05NU1VCLCBB TFRJVkVDX0JVSUxUSU5fVk5NU1VCRlAsCisgICAgIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JU SV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiB9LAorKyAgeyBBTFRJVkVD X0JVSUxUSU5fVkVDX1BFUk0sIEFMVElWRUNfQlVJTFRJTl9WUEVSTV8yREYsCisrICAgIFJTNjAw MF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElf dW5zaWduZWRfVjE2UUkgfSwKKysgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19QRVJNLCBBTFRJVkVD X0JVSUxUSU5fVlBFUk1fMkRJLAorKyAgICBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElfVjJE SSwgUlM2MDAwX0JUSV9WMkRJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJIH0sCisgICB7IEFM VElWRUNfQlVJTFRJTl9WRUNfUEVSTSwgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzRTRiwKKyAgICAg UlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAw X0JUSV91bnNpZ25lZF9WMTZRSSB9LAorICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1BFUk0sIEFM VElWRUNfQlVJTFRJTl9WUEVSTV80U0ksCitAQCAtMjQzMywxMSArMjQ1MCwyOSBAQCBjb25zdCBz dHJ1Y3QgYWx0aXZlY19idWlsdGluX3R5cGVzIGFsdGl2CisgICAgIFJTNjAwMF9CVElfYm9vbF9W MTZRSSwgUlM2MDAwX0JUSV9ib29sX1YxNlFJLCBSUzYwMDBfQlRJX2Jvb2xfVjE2UUksIFJTNjAw MF9CVElfdW5zaWduZWRfVjE2UUkgfSwKKyAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19QRVJNLCBB TFRJVkVDX0JVSUxUSU5fVlBFUk1fMTZRSSwKKyAgICAgUlM2MDAwX0JUSV9ib29sX1YxNlFJLCBS UzYwMDBfQlRJX2Jvb2xfVjE2UUksIFJTNjAwMF9CVElfYm9vbF9WMTZRSSwgUlM2MDAwX0JUSV9i b29sX1YxNlFJIH0sCisrICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxU SU5fVlNFTF8yREYsCisrICAgIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYw MDBfQlRJX1YyREYsIFJTNjAwMF9CVElfYm9vbF9WMkRJIH0sCisrICB7IEFMVElWRUNfQlVJTFRJ Tl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF8yREYsCisrICAgIFJTNjAwMF9CVElfVjJE RiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfdW5zaWduZWRf VjJESSB9LAorKyAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1NFTCwgQUxUSVZFQ19CVUlMVElOX1ZT RUxfMkRGLAorKyAgICBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JU SV9WMkRGLCBSUzYwMDBfQlRJX1YyREkgfSwKKysgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19TRUws IEFMVElWRUNfQlVJTFRJTl9WU0VMXzJERiwKKysgICAgUlM2MDAwX0JUSV9WMkRGLCBSUzYwMDBf QlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGIH0sCisrICB7IEFMVElW RUNfQlVJTFRJTl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF8yREksCisrICAgIFJTNjAw MF9CVElfVjJESSwgUlM2MDAwX0JUSV9WMkRJLCBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElf Ym9vbF9WMkRJIH0sCisrICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxU SU5fVlNFTF8yREksCisrICAgIFJTNjAwMF9CVElfVjJESSwgUlM2MDAwX0JUSV9WMkRJLCBSUzYw MDBfQlRJX1YyREksIFJTNjAwMF9CVElfdW5zaWduZWRfVjJESSB9LAorKyAgeyBBTFRJVkVDX0JV SUxUSU5fVkVDX1NFTCwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfMkRJLAorKyAgICBSUzYwMDBfQlRJ X1YyREksIFJTNjAwMF9CVElfVjJESSwgUlM2MDAwX0JUSV9WMkRJLCBSUzYwMDBfQlRJX1YyREkg fSwKKyAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19TRUwsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzRT RiwKKyAgICAgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRT RiwgUlM2MDAwX0JUSV9ib29sX1Y0U0kgfSwKKyAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19TRUws IEFMVElWRUNfQlVJTFRJTl9WU0VMXzRTRiwKKyAgICAgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBf QlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JUSV91bnNpZ25lZF9WNFNJIH0sCisg ICB7IEFMVElWRUNfQlVJTFRJTl9WRUNfU0VMLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0ksCisr ICAgIFJTNjAwMF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJT NjAwMF9CVElfVjRTRiB9LAorKyAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1NFTCwgQUxUSVZFQ19C VUlMVElOX1ZTRUxfNFNJLAorKyAgICBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElfVjRTRiwg UlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0kgfSwKKysgIHsgQUxUSVZFQ19CVUlMVElO X1ZFQ19TRUwsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzRTSSwKKyAgICAgUlM2MDAwX0JUSV9WNFNJ LCBSUzYwMDBfQlRJX1Y0U0ksIFJTNjAwMF9CVElfVjRTSSwgUlM2MDAwX0JUSV9ib29sX1Y0U0kg fSwKKyAgIHsgQUxUSVZFQ19CVUlMVElOX1ZFQ19TRUwsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzRT SSwKKyAgICAgUlM2MDAwX0JUSV9WNFNJLCBSUzYwMDBfQlRJX1Y0U0ksIFJTNjAwMF9CVElfVjRT SSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WNFNJIH0sCitAQCAtMjgwNSw2ICsyODQwLDM3IEBAIGNv bnN0IHN0cnVjdCBhbHRpdmVjX2J1aWx0aW5fdHlwZXMgYWx0aXYKKyAgICAgUlM2MDAwX0JUSV92 b2lkLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJLCBSUzYwMDBfQlRJX0lOVFNJLCB+UlM2MDAw X0JUSV91bnNpZ25lZF9WMTZRSSB9LAorICAgeyBBTFRJVkVDX0JVSUxUSU5fVkVDX1NUVlJYTCwg QUxUSVZFQ19CVUlMVElOX1NUVlJYTCwKKyAgICAgUlM2MDAwX0JUSV92b2lkLCBSUzYwMDBfQlRJ X3Vuc2lnbmVkX1YxNlFJLCBSUzYwMDBfQlRJX0lOVFNJLCB+UlM2MDAwX0JUSV9VSU5UUUkgfSwK KysgIHsgVlNYX0JVSUxUSU5fVkVDX1hYU0xEV0ksIFZTWF9CVUlMVElOX1hYU0xEV0lfMTZRSSwK KysgICAgUlM2MDAwX0JUSV9WMTZRSSwgUlM2MDAwX0JUSV9WMTZRSSwgUlM2MDAwX0JUSV9WMTZR SSwgUlM2MDAwX0JUSV9OT1RfT1BBUVVFIH0sCisrICB7IFZTWF9CVUlMVElOX1ZFQ19YWFNMRFdJ LCBWU1hfQlVJTFRJTl9YWFNMRFdJXzE2UUksCisrICAgIFJTNjAwMF9CVElfdW5zaWduZWRfVjE2 UUksIFJTNjAwMF9CVElfdW5zaWduZWRfVjE2UUksIFJTNjAwMF9CVElfdW5zaWduZWRfVjE2UUks CisrICAgIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAorKyAgeyBWU1hfQlVJTFRJTl9WRUNfWFhT TERXSSwgVlNYX0JVSUxUSU5fWFhTTERXSV84SEksCisrICAgIFJTNjAwMF9CVElfVjhISSwgUlM2 MDAwX0JUSV9WOEhJLCBSUzYwMDBfQlRJX1Y4SEksIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAor KyAgeyBWU1hfQlVJTFRJTl9WRUNfWFhTTERXSSwgVlNYX0JVSUxUSU5fWFhTTERXSV84SEksCisr ICAgIFJTNjAwMF9CVElfdW5zaWduZWRfVjhISSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WOEhJLCBS UzYwMDBfQlRJX3Vuc2lnbmVkX1Y4SEksCisrICAgIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAor KyAgeyBWU1hfQlVJTFRJTl9WRUNfWFhTTERXSSwgVlNYX0JVSUxUSU5fWFhTTERXSV80U0ksCisr ICAgIFJTNjAwMF9CVElfVjRTSSwgUlM2MDAwX0JUSV9WNFNJLCBSUzYwMDBfQlRJX1Y0U0ksIFJT NjAwMF9CVElfTk9UX09QQVFVRSB9LAorKyAgeyBWU1hfQlVJTFRJTl9WRUNfWFhTTERXSSwgVlNY X0JVSUxUSU5fWFhTTERXSV80U0ksCisrICAgIFJTNjAwMF9CVElfdW5zaWduZWRfVjRTSSwgUlM2 MDAwX0JUSV91bnNpZ25lZF9WNFNJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ksCisrICAgIFJT NjAwMF9CVElfTk9UX09QQVFVRSB9LAorKyAgeyBWU1hfQlVJTFRJTl9WRUNfWFhTTERXSSwgVlNY X0JVSUxUSU5fWFhTTERXSV8yREksCisrICAgIFJTNjAwMF9CVElfVjJESSwgUlM2MDAwX0JUSV9W MkRJLCBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAorKyAgeyBWU1hf QlVJTFRJTl9WRUNfWFhTTERXSSwgVlNYX0JVSUxUSU5fWFhTTERXSV8yREksCisrICAgIFJTNjAw MF9CVElfdW5zaWduZWRfVjJESSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WMkRJLCBSUzYwMDBfQlRJ X3Vuc2lnbmVkX1YyREksCisrICAgIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAorKyAgeyBWU1hf QlVJTFRJTl9WRUNfWFhTTERXSSwgVlNYX0JVSUxUSU5fWFhTTERXSV80U0YsCisrICAgIFJTNjAw MF9CVElfVjRTRiwgUlM2MDAwX0JUSV9WNFNGLCBSUzYwMDBfQlRJX1Y0U0YsIFJTNjAwMF9CVElf Tk9UX09QQVFVRSB9LAorKyAgeyBWU1hfQlVJTFRJTl9WRUNfWFhTTERXSSwgVlNYX0JVSUxUSU5f WFhTTERXSV8yREYsCisrICAgIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9WMkRGLCBSUzYw MDBfQlRJX1YyREYsIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAorKyAgeyBWU1hfQlVJTFRJTl9W RUNfWFhQRVJNREksIFZTWF9CVUlMVElOX1hYUEVSTURJXzJERiwKKysgICAgUlM2MDAwX0JUSV9W MkRGLCBSUzYwMDBfQlRJX1YyREYsIFJTNjAwMF9CVElfVjJERiwgUlM2MDAwX0JUSV9OT1RfT1BB UVVFIH0sCisrICB7IFZTWF9CVUlMVElOX1ZFQ19YWFBFUk1ESSwgVlNYX0JVSUxUSU5fWFhQRVJN RElfMkRJLAorKyAgICBSUzYwMDBfQlRJX1YyREksIFJTNjAwMF9CVElfVjJESSwgUlM2MDAwX0JU SV9WMkRJLCBSUzYwMDBfQlRJX05PVF9PUEFRVUUgfSwKKysgIHsgVlNYX0JVSUxUSU5fVkVDX1hY UEVSTURJLCBWU1hfQlVJTFRJTl9YWFBFUk1ESV8yREksCisrICAgIFJTNjAwMF9CVElfdW5zaWdu ZWRfVjJESSwgUlM2MDAwX0JUSV91bnNpZ25lZF9WMkRJLCBSUzYwMDBfQlRJX3Vuc2lnbmVkX1Yy REksCisrICAgIFJTNjAwMF9CVElfTk9UX09QQVFVRSB9LAorIAorICAgLyogUHJlZGljYXRlcy4g ICovCisgICB7IEFMVElWRUNfQlVJTFRJTl9WQ01QR1RfUCwgQUxUSVZFQ19CVUlMVElOX1ZDTVBH VFVCX1AsCitAQCAtMzEwOCw2ICszMTc0LDEwIEBAIGFsdGl2ZWNfcmVzb2x2ZV9vdmVybG9hZGVk X2J1aWx0aW4gKHRyZWUKKyAJZ290byBiYWQ7CisgICAgICAgc3dpdGNoIChUWVBFX01PREUgKHR5 cGUpKQorIAl7CisrCSAgY2FzZSBESW1vZGU6CisrCSAgICB0eXBlID0gKHVuc2lnbmVkX3AgPyB1 bnNpZ25lZF9WMkRJX3R5cGVfbm9kZSA6IFYyRElfdHlwZV9ub2RlKTsKKysJICAgIHNpemUgPSAy OworKwkgICAgYnJlYWs7CisgCSAgY2FzZSBTSW1vZGU6CisgCSAgICB0eXBlID0gKHVuc2lnbmVk X3AgPyB1bnNpZ25lZF9WNFNJX3R5cGVfbm9kZSA6IFY0U0lfdHlwZV9ub2RlKTsKKyAJICAgIHNp emUgPSA0OworQEAgLTMxMjEsNiArMzE5MSw3IEBAIGFsdGl2ZWNfcmVzb2x2ZV9vdmVybG9hZGVk X2J1aWx0aW4gKHRyZWUKKyAJICAgIHNpemUgPSAxNjsKKyAJICAgIGJyZWFrOworIAkgIGNhc2Ug U0Ztb2RlOiB0eXBlID0gVjRTRl90eXBlX25vZGU7IHNpemUgPSA0OyBicmVhazsKKysJICBjYXNl IERGbW9kZTogdHlwZSA9IFYyREZfdHlwZV9ub2RlOyBzaXplID0gMjsgYnJlYWs7CisgCSAgZGVm YXVsdDoKKyAJICAgIGdvdG8gYmFkOworIAl9CistLS0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAw Lm9wdAkocmV2aXNpb24gMTQ2MTE5KQorKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQJ KHJldmlzaW9uIDE0Njc5OCkKK0BAIC0xMTksMTggKzExOSw2IEBAIG12c3gKKyBUYXJnZXQgUmVw b3J0IE1hc2soVlNYKQorIFVzZSB2ZWN0b3Ivc2NhbGFyIChWU1gpIGluc3RydWN0aW9ucworIAor LW12c3gtdmVjdG9yLW1lbW9yeQorLVRhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJH RVRfVlNYX1ZFQ1RPUl9NRU1PUlkpIEluaXQoLTEpCistOyBJZiAtbXZzeCwgdXNlIFZTWCB2ZWN0 b3IgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgaW5zdGVhZCBvZiBBbHRpdmVjIGluc3RydWN0aW9u cworLQorLW12c3gtdmVjdG9yLWZsb2F0CistVGFyZ2V0IFVuZG9jdW1lbnRlZCBSZXBvcnQgVmFy KFRBUkdFVF9WU1hfVkVDVE9SX0ZMT0FUKSBJbml0KC0xKQorLTsgSWYgLW12c3gsIHVzZSBWU1gg YXJpdGhtZXRpYyBpbnN0cnVjdGlvbnMgZm9yIGZsb2F0IHZlY3RvcnMgKG9uIGJ5IGRlZmF1bHQp CistCistbXZzeC12ZWN0b3ItZG91YmxlCistVGFyZ2V0IFVuZG9jdW1lbnRlZCBSZXBvcnQgVmFy KFRBUkdFVF9WU1hfVkVDVE9SX0RPVUJMRSkgSW5pdCgtMSkKKy07IElmIC1tdnN4LCB1c2UgVlNY IGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zIGZvciBkb3VibGUgdmVjdG9ycyAob24gYnkgZGVmYXVs dCkKKy0KKyBtdnN4LXNjYWxhci1kb3VibGUKKyBUYXJnZXQgVW5kb2N1bWVudGVkIFJlcG9ydCBW YXIoVEFSR0VUX1ZTWF9TQ0FMQVJfRE9VQkxFKSBJbml0KC0xKQorIDsgSWYgLW12c3gsIHVzZSBW U1ggYXJpdGhtZXRpYyBpbnN0cnVjdGlvbnMgZm9yIHNjYWxhciBkb3VibGUgKG9uIGJ5IGRlZmF1 bHQpCitAQCAtMTM5LDE4ICsxMjcsMTQgQEAgbXZzeC1zY2FsYXItbWVtb3J5CisgVGFyZ2V0IFVu ZG9jdW1lbnRlZCBSZXBvcnQgVmFyKFRBUkdFVF9WU1hfU0NBTEFSX01FTU9SWSkKKyA7IElmIC1t dnN4LCB1c2UgVlNYIHNjYWxhciBtZW1vcnkgcmVmZXJlbmNlIGluc3RydWN0aW9ucyBmb3Igc2Nh bGFyIGRvdWJsZSAob2ZmIGJ5IGRlZmF1bHQpCisgCistbXZzeC12NHNmLWFsdGl2ZWMtcmVncwor LVRhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJHRVRfVjRTRl9BTFRJVkVDX1JFR1Mp IEluaXQoLTEpCistOyBJZiAtbXZzeCwgcHJlZmVyIFY0U0YgdHlwZXMgdG8gdXNlIEFsdGl2ZWMg cmVncyBhbmQgbm90IHRoZSBmbG9hdGluZyByZWdpc3RlcnMKKy0KKy1tcmVsb2FkLWZ1bmN0aW9u cworLVRhcmdldCBVbmRvY3VtZW50ZWQgUmVwb3J0IFZhcihUQVJHRVRfUkVMT0FEX0ZVTkNUSU9O UykgSW5pdCgtMSkKKy07IElmIC1tdnN4IG9yIC1tYWx0aXZlYywgZW5hYmxlIHJlbG9hZCBmdW5j dGlvbnMKKy0KKyBtcG93ZXI3LWFkanVzdC1jb3N0CisgVGFyZ2V0IFVuZG9jdW1lbnRlZCBWYXIo VEFSR0VUX1BPV0VSN19BREpVU1RfQ09TVCkKKyA7IEFkZCBleHRyYSBjb3N0IGZvciBzZXR0aW5n IENSIHJlZ2lzdGVycyBiZWZvcmUgYSBicmFuY2ggbGlrZSBpcyBkb25lIGZvciBQb3dlcjUKKyAK KyttYWxsb3ctdGltb2RlCisrVGFyZ2V0IFVuZG9jdW1lbnRlZCBWYXIoVEFSR0VUX0FMTE9XX1RJ TU9ERSkKKys7IEFsbG93IFZTWC9BbHRpdmVjIHRvIHRhcmdldCBsb2FkaW5nIFRJbW9kZSB2YXJp YWJsZXMuCisrCisgbWRpc2FsbG93LWZsb2F0LWluLWxyLWN0cgorIFRhcmdldCBVbmRvY3VtZW50 ZWQgVmFyKFRBUkdFVF9ESVNBTExPV19GTE9BVF9JTl9MUl9DVFIpIEluaXQoLTEpCisgOyBEaXNh bGxvdyBmbG9hdGluZyBwb2ludCBpbiBMUiBvciBDVFIsIGNhdXNlcyBzb21lIHJlbG9hZCBidWdz CistLS0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMJKHJldmlzaW9uIDE0NjExOSkKKysrKyBn Y2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYwkocmV2aXNpb24gMTQ2Nzk4KQorQEAgLTEzMCw2ICsx MzAsOCBAQCB0eXBlZGVmIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uIEdUWSgoKSkKKyAgICAgIDY0 LWJpdHMgd2lkZSBhbmQgaXMgYWxsb2NhdGVkIGVhcmx5IGVub3VnaCBzbyB0aGF0IHRoZSBvZmZz ZXQKKyAgICAgIGRvZXMgbm90IG92ZXJmbG93IHRoZSAxNi1iaXQgbG9hZC9zdG9yZSBvZmZzZXQg ZmllbGQuICAqLworICAgcnR4IHNkbW9kZV9zdGFja19zbG90OworKyAgLyogV2hldGhlciBhbiBp bmRpcmVjdCBqdW1wIG9yIHRhYmxlIGp1bXAgd2FzIGdlbmVyYXRlZC4gICovCisrICBib29sIGlu ZGlyZWN0X2p1bXBfcDsKKyB9IG1hY2hpbmVfZnVuY3Rpb247CisgCisgLyogVGFyZ2V0IGNwdSB0 eXBlICovCitAQCAtOTE3LDYgKzkxOSwxMSBAQCBzdGF0aWMgcnR4IHJzNjAwMF9leHBhbmRfYmlu b3BfYnVpbHRpbiAoCisgc3RhdGljIHJ0eCByczYwMDBfZXhwYW5kX3Rlcm5vcF9idWlsdGluIChl bnVtIGluc25fY29kZSwgdHJlZSwgcnR4KTsKKyBzdGF0aWMgcnR4IHJzNjAwMF9leHBhbmRfYnVp bHRpbiAodHJlZSwgcnR4LCBydHgsIGVudW0gbWFjaGluZV9tb2RlLCBpbnQpOworIHN0YXRpYyB2 b2lkIGFsdGl2ZWNfaW5pdF9idWlsdGlucyAodm9pZCk7Cisrc3RhdGljIHVuc2lnbmVkIGJ1aWx0 aW5faGFzaF9mdW5jdGlvbiAoY29uc3Qgdm9pZCAqKTsKKytzdGF0aWMgaW50IGJ1aWx0aW5faGFz aF9lcSAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOworK3N0YXRpYyB0cmVlIGJ1aWx0aW5f ZnVuY3Rpb25fdHlwZSAoZW51bSBtYWNoaW5lX21vZGUsIGVudW0gbWFjaGluZV9tb2RlLAorKwkJ CQkgICBlbnVtIG1hY2hpbmVfbW9kZSwgZW51bSBtYWNoaW5lX21vZGUsCisrCQkJCSAgIGNvbnN0 IGNoYXIgKm5hbWUpOworIHN0YXRpYyB2b2lkIHJzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyAo dm9pZCk7Cisgc3RhdGljIHZvaWQgcnM2MDAwX2luaXRfbGliZnVuY3MgKHZvaWQpOworIAorQEAg LTEwMTgsNiArMTAyNSw4IEBAIHN0YXRpYyBlbnVtIHJlZ19jbGFzcyByczYwMDBfc2Vjb25kYXJ5 X3IKKyAJCQkJCSAgICAgICBlbnVtIG1hY2hpbmVfbW9kZSwKKyAJCQkJCSAgICAgICBzdHJ1Y3Qg c2Vjb25kYXJ5X3JlbG9hZF9pbmZvICopOworIAorK3N0YXRpYyBjb25zdCBlbnVtIHJlZ19jbGFz cyAqcnM2MDAwX2lyYV9jb3Zlcl9jbGFzc2VzICh2b2lkKTsKKysKKyBjb25zdCBpbnQgSU5TTl9O T1RfQVZBSUxBQkxFID0gLTE7Cisgc3RhdGljIGVudW0gbWFjaGluZV9tb2RlIHJzNjAwMF9laF9y ZXR1cm5fZmlsdGVyX21vZGUgKHZvaWQpOworIAorQEAgLTEwMzMsNiArMTA0MiwxNiBAQCBzdHJ1 Y3QgdG9jX2hhc2hfc3RydWN0IEdUWSgoKSkKKyB9OworIAorIHN0YXRpYyBHVFkgKChwYXJhbV9p cyAoc3RydWN0IHRvY19oYXNoX3N0cnVjdCkpKSBodGFiX3QgdG9jX2hhc2hfdGFibGU7CisrCisr LyogSGFzaCB0YWJsZSB0byBrZWVwIHRyYWNrIG9mIHRoZSBhcmd1bWVudCB0eXBlcyBmb3IgYnVp bHRpbiBmdW5jdGlvbnMuICAqLworKworK3N0cnVjdCBidWlsdGluX2hhc2hfc3RydWN0IEdUWSgo KSkKKyt7CisrICB0cmVlIHR5cGU7CisrICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlWzRdOwkvKiBy ZXR1cm4gdmFsdWUgKyAzIGFyZ3VtZW50cyAqLworK307CisrCisrc3RhdGljIEdUWSAoKHBhcmFt X2lzIChzdHJ1Y3QgYnVpbHRpbl9oYXNoX3N0cnVjdCkpKSBodGFiX3QgYnVpbHRpbl9oYXNoX3Rh YmxlOworIAwKKyAvKiBEZWZhdWx0IHJlZ2lzdGVyIG5hbWVzLiAgKi8KKyBjaGFyIHJzNjAwMF9y ZWdfbmFtZXNbXVs4XSA9CitAQCAtMTM1MCw2ICsxMzY5LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIg YWx0X3JlZ19uYW1lc1tdWzhdID0KKyAjdW5kZWYgVEFSR0VUX1NFQ09OREFSWV9SRUxPQUQKKyAj ZGVmaW5lIFRBUkdFVF9TRUNPTkRBUllfUkVMT0FEIHJzNjAwMF9zZWNvbmRhcnlfcmVsb2FkCisg CisrI3VuZGVmIFRBUkdFVF9JUkFfQ09WRVJfQ0xBU1NFUworKyNkZWZpbmUgVEFSR0VUX0lSQV9D T1ZFUl9DTEFTU0VTIHJzNjAwMF9pcmFfY292ZXJfY2xhc3NlcworKworIHN0cnVjdCBnY2NfdGFy Z2V0IHRhcmdldG0gPSBUQVJHRVRfSU5JVElBTElaRVI7CisgDAorIC8qIFJldHVybiBudW1iZXIg b2YgY29uc2VjdXRpdmUgaGFyZCByZWdzIG5lZWRlZCBzdGFydGluZyBhdCByZWcgUkVHTk8KK0BA IC0xMzcwLDcgKzEzOTIsNyBAQCByczYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCAoaW50 IHJlCisgICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHJlZ19zaXplOworIAorICAgaWYgKEZQX1JF R05PX1AgKHJlZ25vKSkKKy0gICAgcmVnX3NpemUgPSAoVkVDVE9SX1VOSVRfVlNYX1AgKG1vZGUp CisrICAgIHJlZ19zaXplID0gKFZFQ1RPUl9NRU1fVlNYX1AgKG1vZGUpCisgCQk/IFVOSVRTX1BF Ul9WU1hfV09SRAorIAkJOiBVTklUU19QRVJfRlBfV09SRCk7CisgCitAQCAtMTQ1Miw3ICsxNDc0 LDcgQEAgcnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayAoaW50IHJlZ25vLCBlbgorIAorICAgLyog QWx0aVZlYyBvbmx5IGluIEFsZHlWZWMgcmVnaXN0ZXJzLiAgKi8KKyAgIGlmIChBTFRJVkVDX1JF R05PX1AgKHJlZ25vKSkKKy0gICAgcmV0dXJuIFZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1Ag KG1vZGUpOworKyAgICByZXR1cm4gVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QIChtb2RlKTsK KyAKKyAgIC8qIC4uLmJ1dCBHUFJzIGNhbiBob2xkIFNJTUQgZGF0YSBvbiB0aGUgU1BFIGluIG9u ZSByZWdpc3Rlci4gICovCisgICBpZiAoU1BFX1NJTURfUkVHTk9fUCAocmVnbm8pICYmIFRBUkdF VF9TUEUgJiYgU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKSkKK0BAIC0xNjEzLDEwICsxNjM1LDggQEAg cnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rICh2b2lkKQorICAgICAgIHJzNjAwMF92ZWN0 b3JfcmVsb2FkW21dWzFdID0gQ09ERV9GT1Jfbm90aGluZzsKKyAgICAgfQorIAorLSAgLyogVE9E TywgYWRkIFRJL1YyREkgbW9kZSBmb3IgbW92aW5nIGRhdGEgaWYgQWx0aXZlYyBvciBWU1guICAq LworLQorICAgLyogVjJERiBtb2RlLCBWU1ggb25seS4gICovCistICBpZiAoZmxvYXRfcCAmJiBU QVJHRVRfVlNYICYmIFRBUkdFVF9WU1hfVkVDVE9SX0RPVUJMRSkKKysgIGlmIChmbG9hdF9wICYm IFRBUkdFVF9WU1gpCisgICAgIHsKKyAgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjJERm1vZGVd ID0gVkVDVE9SX1ZTWDsKKyAgICAgICByczYwMDBfdmVjdG9yX21lbVtWMkRGbW9kZV0gPSBWRUNU T1JfVlNYOworQEAgLTE2MjQsMTcgKzE2NDQsMTEgQEAgcnM2MDAwX2luaXRfaGFyZF9yZWdub19t b2RlX29rICh2b2lkKQorICAgICB9CisgCisgICAvKiBWNFNGIG1vZGUsIGVpdGhlciBWU1ggb3Ig QWx0aXZlYy4gICovCistICBpZiAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYICYmIFRBUkdFVF9WU1hf VkVDVE9SX0ZMT0FUKQorKyAgaWYgKGZsb2F0X3AgJiYgVEFSR0VUX1ZTWCkKKyAgICAgeworICAg ICAgIHJzNjAwMF92ZWN0b3JfdW5pdFtWNFNGbW9kZV0gPSBWRUNUT1JfVlNYOworLSAgICAgIGlm IChUQVJHRVRfVlNYX1ZFQ1RPUl9NRU1PUlkgfHwgIVRBUkdFVF9BTFRJVkVDKQorLQl7CistCSAg cnM2MDAwX3ZlY3Rvcl9hbGlnbltWNFNGbW9kZV0gPSAzMjsKKy0JICByczYwMDBfdmVjdG9yX21l bVtWNFNGbW9kZV0gPSBWRUNUT1JfVlNYOworLQl9IGVsc2UgeworLQkgIHJzNjAwMF92ZWN0b3Jf YWxpZ25bVjRTRm1vZGVdID0gMTI4OworLQkgIHJzNjAwMF92ZWN0b3JfbWVtW1Y0U0Ztb2RlXSA9 IFZFQ1RPUl9BTFRJVkVDOworLSAgICAgIH0KKysgICAgICByczYwMDBfdmVjdG9yX2FsaWduW1Y0 U0Ztb2RlXSA9IDMyOworKyAgICAgIHJzNjAwMF92ZWN0b3JfbWVtW1Y0U0Ztb2RlXSA9IFZFQ1RP Ul9WU1g7CisgICAgIH0KKyAgIGVsc2UgaWYgKGZsb2F0X3AgJiYgVEFSR0VUX0FMVElWRUMpCisg ICAgIHsKK0BAIC0xNjU1LDcgKzE2NjksNyBAQCByczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVf b2sgKHZvaWQpCisgICAgICAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjhISW1vZGVdID0gQUxU SVZFQ19SRUdTOworICAgICAgIHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1Y0U0ltb2RlXSA9IEFM VElWRUNfUkVHUzsKKyAKKy0gICAgICBpZiAoVEFSR0VUX1ZTWCAmJiBUQVJHRVRfVlNYX1ZFQ1RP Ul9NRU1PUlkpCisrICAgICAgaWYgKFRBUkdFVF9WU1gpCisgCXsKKyAJICByczYwMDBfdmVjdG9y X21lbVtWNFNJbW9kZV0gPSBWRUNUT1JfVlNYOworIAkgIHJzNjAwMF92ZWN0b3JfbWVtW1Y4SElt b2RlXSA9IFZFQ1RPUl9WU1g7CitAQCAtMTY3NSw2ICsxNjg5LDIzIEBAIHJzNjAwMF9pbml0X2hh cmRfcmVnbm9fbW9kZV9vayAodm9pZCkKKyAJfQorICAgICB9CisgCisrICAvKiBWMkRJbW9kZSwg cHJlZmVyIHZzeCBvdmVyIGFsdGl2ZWMsIHNpbmNlIHRoZSBtYWluIHVzZSB3aWxsIGJlIGZvcgor KyAgICAgdmVjdG9yaXplZCBmbG9hdGluZyBwb2ludCBjb252ZXJzaW9ucy4gICovCisrICBpZiAo ZmxvYXRfcCAmJiBUQVJHRVRfVlNYKQorKyAgICB7CisrICAgICAgcnM2MDAwX3ZlY3Rvcl9tZW1b VjJESW1vZGVdID0gVkVDVE9SX1ZTWDsKKysgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjJESW1v ZGVdID0gVkVDVE9SX05PTkU7CisrICAgICAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjJESW1v ZGVdID0gdnN4X3JjOworKyAgICAgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjJESW1vZGVdID0gNjQ7 CisrICAgIH0KKysgIGVsc2UgaWYgKFRBUkdFVF9BTFRJVkVDKQorKyAgICB7CisrICAgICAgcnM2 MDAwX3ZlY3Rvcl9tZW1bVjJESW1vZGVdID0gVkVDVE9SX0FMVElWRUM7CisrICAgICAgcnM2MDAw X3ZlY3Rvcl91bml0W1YyREltb2RlXSA9IFZFQ1RPUl9OT05FOworKyAgICAgIHJzNjAwMF92ZWN0 b3JfcmVnX2NsYXNzW1YyREltb2RlXSA9IEFMVElWRUNfUkVHUzsKKysgICAgICByczYwMDBfdmVj dG9yX2FsaWduW1YyREltb2RlXSA9IDEyODsKKysgICAgfQorKworICAgLyogREZtb2RlLCBzZWUg aWYgd2Ugd2FudCB0byB1c2UgdGhlIFZTWCB1bml0LiAgKi8KKyAgIGlmIChmbG9hdF9wICYmIFRB UkdFVF9WU1ggJiYgVEFSR0VUX1ZTWF9TQ0FMQVJfRE9VQkxFKQorICAgICB7CitAQCAtMTY4NCwx NiArMTcxNSwzMCBAQCByczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2sgKHZvaWQpCisgCT0g KFRBUkdFVF9WU1hfU0NBTEFSX01FTU9SWSA/IFZFQ1RPUl9WU1ggOiBWRUNUT1JfTk9ORSk7Cisg ICAgIH0KKyAKKy0gIC8qIFRPRE8sIGFkZCBTUEUgYW5kIHBhaXJlZCBmbG9hdGluZyBwb2ludCB2 ZWN0b3Igc3VwcG9ydC4gICovCisrICAvKiBUSW1vZGUuICBVbnRpbCB0aGlzIGlzIGRlYnVnZ2Vk LCBvbmx5IGFkZCBpdCB1bmRlciBzd2l0Y2ggY29udHJvbC4gICovCisrICBpZiAoVEFSR0VUX0FM TE9XX1RJTU9ERSkKKysgICAgeworKyAgICAgIGlmIChmbG9hdF9wICYmIFRBUkdFVF9WU1gpCisr CXsKKysJICByczYwMDBfdmVjdG9yX21lbVtUSW1vZGVdID0gVkVDVE9SX1ZTWDsKKysJICByczYw MDBfdmVjdG9yX3VuaXRbVEltb2RlXSA9IFZFQ1RPUl9OT05FOworKwkgIHJzNjAwMF92ZWN0b3Jf cmVnX2NsYXNzW1RJbW9kZV0gPSB2c3hfcmM7CisrCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltUSW1v ZGVdID0gNjQ7CisrCX0KKysgICAgICBlbHNlIGlmIChUQVJHRVRfQUxUSVZFQykKKysJeworKwkg IHJzNjAwMF92ZWN0b3JfbWVtW1RJbW9kZV0gPSBWRUNUT1JfQUxUSVZFQzsKKysJICByczYwMDBf dmVjdG9yX3VuaXRbVEltb2RlXSA9IFZFQ1RPUl9OT05FOworKwkgIHJzNjAwMF92ZWN0b3JfcmVn X2NsYXNzW1RJbW9kZV0gPSBBTFRJVkVDX1JFR1M7CisrCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltU SW1vZGVdID0gMTI4OworKwl9CisrICAgIH0KKysKKysgIC8qIFRPRE8gYWRkIFNQRSBhbmQgcGFp cmVkIGZsb2F0aW5nIHBvaW50IHZlY3RvciBzdXBwb3J0LiAgKi8KKyAKKyAgIC8qIFNldCB0aGUg VlNYIHJlZ2lzdGVyIGNsYXNzZXMuICAqLworLQorLSAgLyogRm9yIFY0U0YsIHByZWZlciB0aGUg QWx0aXZlYyByZWdpc3RlcnMsIGJlY2F1c2UgdGhlcmUgYXJlIGEgZmV3IG9wZXJhdGlvbnMKKy0g ICAgIHRoYXQgd2FudCB0byB1c2UgQWx0aXZlYyBvcGVyYXRpb25zIGluc3RlYWQgb2YgVlNYLiAg Ki8KKyAgIHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1Y0U0Ztb2RlXQorLSAgICA9ICgoVkVDVE9S X1VOSVRfVlNYX1AgKFY0U0Ztb2RlKQorLQkmJiBWRUNUT1JfTUVNX1ZTWF9QIChWNFNGbW9kZSkK Ky0JJiYgIVRBUkdFVF9WNFNGX0FMVElWRUNfUkVHUykKKysgICAgPSAoKFZFQ1RPUl9VTklUX1ZT WF9QIChWNFNGbW9kZSkgJiYgVkVDVE9SX01FTV9WU1hfUCAoVjRTRm1vZGUpKQorICAgICAgICA/ IHZzeF9yYworICAgICAgICA6IChWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChWNFNGbW9k ZSkKKyAJICA/IEFMVElWRUNfUkVHUworQEAgLTE3MTIsNyArMTc1Nyw3IEBAIHJzNjAwMF9pbml0 X2hhcmRfcmVnbm9fbW9kZV9vayAodm9pZCkKKyAgIHJzNjAwMF92c3hfcmVnX2NsYXNzID0gKGZs b2F0X3AgJiYgVEFSR0VUX1ZTWCkgPyB2c3hfcmMgOiBOT19SRUdTOworIAorICAgLyogU2V0IHVw IHRoZSByZWxvYWQgaGVscGVyIGZ1bmN0aW9ucy4gICovCistICBpZiAoVEFSR0VUX1JFTE9BRF9G VU5DVElPTlMgJiYgKFRBUkdFVF9WU1ggfHwgVEFSR0VUX0FMVElWRUMpKQorKyAgaWYgKFRBUkdF VF9WU1ggfHwgVEFSR0VUX0FMVElWRUMpCisgICAgIHsKKyAgICAgICBpZiAoVEFSR0VUXzY0QklU KQorIAl7CitAQCAtMTcyOCw2ICsxNzczLDExIEBAIHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9k ZV9vayAodm9pZCkKKyAJICByczYwMDBfdmVjdG9yX3JlbG9hZFtWNFNGbW9kZV1bMV0gID0gQ09E RV9GT1JfcmVsb2FkX3Y0c2ZfZGlfbG9hZDsKKyAJICByczYwMDBfdmVjdG9yX3JlbG9hZFtWMkRG bW9kZV1bMF0gID0gQ09ERV9GT1JfcmVsb2FkX3YyZGZfZGlfc3RvcmU7CisgCSAgcnM2MDAwX3Zl Y3Rvcl9yZWxvYWRbVjJERm1vZGVdWzFdICA9IENPREVfRk9SX3JlbG9hZF92MmRmX2RpX2xvYWQ7 CisrCSAgaWYgKFRBUkdFVF9BTExPV19USU1PREUpCisrCSAgICB7CisrCSAgICAgIHJzNjAwMF92 ZWN0b3JfcmVsb2FkW1RJbW9kZV1bMF0gPSBDT0RFX0ZPUl9yZWxvYWRfdGlfZGlfc3RvcmU7Cisr CSAgICAgIHJzNjAwMF92ZWN0b3JfcmVsb2FkW1RJbW9kZV1bMV0gPSBDT0RFX0ZPUl9yZWxvYWRf dGlfZGlfbG9hZDsKKysJICAgIH0KKyAJfQorICAgICAgIGVsc2UKKyAJeworQEAgLTE3NDMsNiAr MTc5MywxMSBAQCByczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2sgKHZvaWQpCisgCSAgcnM2 MDAwX3ZlY3Rvcl9yZWxvYWRbVjRTRm1vZGVdWzFdICA9IENPREVfRk9SX3JlbG9hZF92NHNmX3Np X2xvYWQ7CisgCSAgcnM2MDAwX3ZlY3Rvcl9yZWxvYWRbVjJERm1vZGVdWzBdICA9IENPREVfRk9S X3JlbG9hZF92MmRmX3NpX3N0b3JlOworIAkgIHJzNjAwMF92ZWN0b3JfcmVsb2FkW1YyREZtb2Rl XVsxXSAgPSBDT0RFX0ZPUl9yZWxvYWRfdjJkZl9zaV9sb2FkOworKwkgIGlmIChUQVJHRVRfQUxM T1dfVElNT0RFKQorKwkgICAgeworKwkgICAgICByczYwMDBfdmVjdG9yX3JlbG9hZFtUSW1vZGVd WzBdID0gQ09ERV9GT1JfcmVsb2FkX3RpX3NpX3N0b3JlOworKwkgICAgICByczYwMDBfdmVjdG9y X3JlbG9hZFtUSW1vZGVdWzFdID0gQ09ERV9GT1JfcmVsb2FkX3RpX3NpX2xvYWQ7CisrCSAgICB9 CisgCX0KKyAgICAgfQorIAorQEAgLTIxMzIsMjMgKzIxODcsMjkgQEAgcnM2MDAwX292ZXJyaWRl X29wdGlvbnMgKGNvbnN0IGNoYXIgKmRlZgorICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9IE5VTEw7 CisgICAgICAgaWYgKCFUQVJHRVRfSEFSRF9GTE9BVCB8fCAhVEFSR0VUX0ZQUlMKKyAJICB8fCAh VEFSR0VUX1NJTkdMRV9GTE9BVCB8fCAhVEFSR0VUX0RPVUJMRV9GTE9BVCkKKy0JbXNnID0gIi1t dnN4IHJlcXVpcmVzIGhhcmR3YXJlIGZsb2F0aW5nIHBvaW50IjsKKysJeworKwkgIGlmICh0YXJn ZXRfZmxhZ3NfZXhwbGljaXQgJiBNQVNLX1ZTWCkKKysJICAgIG1zZyA9IE5fKCItbXZzeCByZXF1 aXJlcyBoYXJkd2FyZSBmbG9hdGluZyBwb2ludCIpOworKwkgIGVsc2UKKysJICAgIHRhcmdldF9m bGFncyAmPSB+IE1BU0tfVlNYOworKwl9CisgICAgICAgZWxzZSBpZiAoVEFSR0VUX1BBSVJFRF9G TE9BVCkKKy0JbXNnID0gIi1tdnN4IGFuZCAtbXBhaXJlZCBhcmUgaW5jb21wYXRpYmxlIjsKKysJ bXNnID0gTl8oIi1tdnN4IGFuZCAtbXBhaXJlZCBhcmUgaW5jb21wYXRpYmxlIik7CisgICAgICAg LyogVGhlIGhhcmR3YXJlIHdpbGwgYWxsb3cgVlNYIGFuZCBsaXR0bGUgZW5kaWFuLCBidXQgdW50 aWwgd2UgbWFrZSBzdXJlCisgCSB0aGluZ3MgbGlrZSB2ZWN0b3Igc2VsZWN0LCBldGMuIHdvcmsg ZG9uJ3QgYWxsb3cgVlNYIG9uIGxpdHRsZSBlbmRpYW4KKyAJIHN5c3RlbXMgYXQgdGhpcyBwb2lu dC4gICovCisgICAgICAgZWxzZSBpZiAoIUJZVEVTX0JJR19FTkRJQU4pCistCW1zZyA9ICItbXZz eCB1c2VkIHdpdGggbGl0dGxlIGVuZGlhbiBjb2RlIjsKKysJbXNnID0gTl8oIi1tdnN4IHVzZWQg d2l0aCBsaXR0bGUgZW5kaWFuIGNvZGUiKTsKKyAgICAgICBlbHNlIGlmIChUQVJHRVRfQVZPSURf WEZPUk0gPiAwKQorLQltc2cgPSAiLW12c3ggbmVlZHMgaW5kZXhlZCBhZGRyZXNzaW5nIjsKKysJ bXNnID0gTl8oIi1tdnN4IG5lZWRzIGluZGV4ZWQgYWRkcmVzc2luZyIpOworIAorICAgICAgIGlm IChtc2cpCisgCXsKKyAJICB3YXJuaW5nICgwLCBtc2cpOworLQkgIHRhcmdldF9mbGFncyAmPSBN QVNLX1ZTWDsKKysJICB0YXJnZXRfZmxhZ3MgJj0gfiBNQVNLX1ZTWDsKKyAJfQorLSAgICAgIGVs c2UgaWYgKCFUQVJHRVRfQUxUSVZFQyAmJiAodGFyZ2V0X2ZsYWdzX2V4cGxpY2l0ICYgTUFTS19B TFRJVkVDKSA9PSAwKQorKyAgICAgIGVsc2UgaWYgKFRBUkdFVF9WU1ggJiYgIVRBUkdFVF9BTFRJ VkVDCisrCSAgICAgICAmJiAodGFyZ2V0X2ZsYWdzX2V4cGxpY2l0ICYgTUFTS19BTFRJVkVDKSA9 PSAwKQorIAl0YXJnZXRfZmxhZ3MgfD0gTUFTS19BTFRJVkVDOworICAgICB9CisgCitAQCAtMjU4 MSw4ICsyNjQyLDggQEAgcnM2MDAwX2J1aWx0aW5fY29udmVyc2lvbiAoZW51bSB0cmVlX2NvZAor IAkgICAgcmV0dXJuIE5VTExfVFJFRTsKKyAKKyAJICByZXR1cm4gVFlQRV9VTlNJR05FRCAodHlw ZSkKKy0JICAgID8gcnM2MDAwX2J1aWx0aW5fZGVjbHNbVlNYX0JVSUxUSU5fWFZDVlVYRFNQXQor LQkgICAgOiByczYwMDBfYnVpbHRpbl9kZWNsc1tWU1hfQlVJTFRJTl9YVkNWU1hEU1BdOworKwkg ICAgPyByczYwMDBfYnVpbHRpbl9kZWNsc1tWU1hfQlVJTFRJTl9YVkNWVVhERFBdCisrCSAgICA6 IHJzNjAwMF9idWlsdGluX2RlY2xzW1ZTWF9CVUlMVElOX1hWQ1ZTWEREUF07CisgCisgCWNhc2Ug VjRTSW1vZGU6CisgCSAgaWYgKFZFQ1RPUl9VTklUX05PTkVfUCAoVjRTSW1vZGUpIHx8IFZFQ1RP Ul9VTklUX05PTkVfUCAoVjRTRm1vZGUpKQorQEAgLTM3ODUsMTUgKzM4NDYsMjggQEAgcnM2MDAw X2V4cGFuZF92ZWN0b3JfaW5pdCAocnR4IHRhcmdldCwgcgorIAl9CisgICAgIH0KKyAKKy0gIGlm IChtb2RlID09IFYyREZtb2RlKQorKyAgaWYgKFZFQ1RPUl9NRU1fVlNYX1AgKG1vZGUpICYmICht b2RlID09IFYyREZtb2RlIHx8IG1vZGUgPT0gVjJESW1vZGUpKQorICAgICB7CistICAgICAgZ2Nj X2Fzc2VydCAoVEFSR0VUX1ZTWCk7CisrICAgICAgcnR4ICgqc3BsYXQpIChydHgsIHJ0eCk7Cisr ICAgICAgcnR4ICgqY29uY2F0KSAocnR4LCBydHgsIHJ0eCk7CisrCisrICAgICAgaWYgKG1vZGUg PT0gVjJERm1vZGUpCisrCXsKKysJICBzcGxhdCA9IGdlbl92c3hfc3BsYXRfdjJkZjsKKysJICBj b25jYXQgPSBnZW5fdnN4X2NvbmNhdF92MmRmOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAg c3BsYXQgPSBnZW5fdnN4X3NwbGF0X3YyZGk7CisrCSAgY29uY2F0ID0gZ2VuX3ZzeF9jb25jYXRf djJkaTsKKysJfQorKworICAgICAgIGlmIChhbGxfc2FtZSkKKy0JZW1pdF9pbnNuIChnZW5fdnN4 X3NwbGF0djJkZiAodGFyZ2V0LCBYVkVDRVhQICh2YWxzLCAwLCAwKSkpOworKwllbWl0X2luc24g KHNwbGF0ICh0YXJnZXQsIFhWRUNFWFAgKHZhbHMsIDAsIDApKSk7CisgICAgICAgZWxzZQorLQll bWl0X2luc24gKGdlbl92c3hfY29uY2F0X3YyZGYgKHRhcmdldCwKKy0JCQkJCWNvcHlfdG9fcmVn IChYVkVDRVhQICh2YWxzLCAwLCAwKSksCistCQkJCQljb3B5X3RvX3JlZyAoWFZFQ0VYUCAodmFs cywgMCwgMSkpKSk7CisrCWVtaXRfaW5zbiAoY29uY2F0ICh0YXJnZXQsCisrCQkJICAgY29weV90 b19yZWcgKFhWRUNFWFAgKHZhbHMsIDAsIDApKSwKKysJCQkgICBjb3B5X3RvX3JlZyAoWFZFQ0VY UCAodmFscywgMCwgMSkpKSk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtMzg1Niwx MCArMzkzMCwxMiBAQCByczYwMDBfZXhwYW5kX3ZlY3Rvcl9zZXQgKHJ0eCB0YXJnZXQsIHJ0Cisg ICBpbnQgd2lkdGggPSBHRVRfTU9ERV9TSVpFIChpbm5lcl9tb2RlKTsKKyAgIGludCBpOworIAor LSAgaWYgKG1vZGUgPT0gVjJERm1vZGUpCisrICBpZiAobW9kZSA9PSBWMkRGbW9kZSB8fCBtb2Rl ID09IFYyREltb2RlKQorICAgICB7CisrICAgICAgcnR4ICgqc2V0X2Z1bmMpIChydHgsIHJ0eCwg cnR4LCBydHgpCisrCT0gKChtb2RlID09IFYyREZtb2RlKSA/IGdlbl92c3hfc2V0X3YyZGYgOiBn ZW5fdnN4X3NldF92MmRpKTsKKyAgICAgICBnY2NfYXNzZXJ0IChUQVJHRVRfVlNYKTsKKy0gICAg ICBlbWl0X2luc24gKGdlbl92c3hfc2V0X3YyZGYgKHRhcmdldCwgdmFsLCB0YXJnZXQsIEdFTl9J TlQgKGVsdCkpKTsKKysgICAgICBlbWl0X2luc24gKHNldF9mdW5jICh0YXJnZXQsIHZhbCwgdGFy Z2V0LCBHRU5fSU5UIChlbHQpKSk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtMzkw MCwxMCArMzk3NiwxMiBAQCByczYwMDBfZXhwYW5kX3ZlY3Rvcl9leHRyYWN0IChydHggdGFyZ2V0 CisgICBlbnVtIG1hY2hpbmVfbW9kZSBpbm5lcl9tb2RlID0gR0VUX01PREVfSU5ORVIgKG1vZGUp OworICAgcnR4IG1lbSwgeDsKKyAKKy0gIGlmIChtb2RlID09IFYyREZtb2RlKQorKyAgaWYgKG1v ZGUgPT0gVjJERm1vZGUgfHwgbW9kZSA9PSBWMkRJbW9kZSkKKyAgICAgeworKyAgICAgIHJ0eCAo KmV4dHJhY3RfZnVuYykgKHJ0eCwgcnR4LCBydHgpCisrCT0gKChtb2RlID09IFYyREZtb2RlKSA/ IGdlbl92c3hfZXh0cmFjdF92MmRmIDogZ2VuX3ZzeF9leHRyYWN0X3YyZGkpOworICAgICAgIGdj Y19hc3NlcnQgKFRBUkdFVF9WU1gpOworLSAgICAgIGVtaXRfaW5zbiAoZ2VuX3ZzeF9leHRyYWN0 X3YyZGYgKHRhcmdldCwgdmVjLCBHRU5fSU5UIChlbHQpKSk7CisrICAgICAgZW1pdF9pbnNuIChl eHRyYWN0X2Z1bmMgKHRhcmdldCwgdmVjLCBHRU5fSU5UIChlbHQpKSk7CisgICAgICAgcmV0dXJu OworICAgICB9CisgCitAQCAtNDMyMyw5ICs0NDAxLDcgQEAgYXZvaWRpbmdfaW5kZXhlZF9hZGRy ZXNzX3AgKGVudW0gbWFjaGluZQorIHsKKyAgIC8qIEF2b2lkIGluZGV4ZWQgYWRkcmVzc2luZyBm b3IgbW9kZXMgdGhhdCBoYXZlIG5vbi1pbmRleGVkCisgICAgICBsb2FkL3N0b3JlIGluc3RydWN0 aW9uIGZvcm1zLiAgKi8KKy0gIHJldHVybiAoVEFSR0VUX0FWT0lEX1hGT1JNCistCSAgJiYgKCFU QVJHRVRfQUxUSVZFQyB8fCAhQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkpCistCSAgJiYgKCFU QVJHRVRfVlNYIHx8ICFWU1hfVkVDVE9SX01PREUgKG1vZGUpKSk7CisrICByZXR1cm4gKFRBUkdF VF9BVk9JRF9YRk9STSAmJiBWRUNUT1JfTUVNX05PTkVfUCAobW9kZSkpOworIH0KKyAKKyBpbmxp bmUgYm9vbAorQEAgLTQ0MjcsNiArNDUwMywxNiBAQCByczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNz IChydHggeCwgcnR4IG9sCisgCXJldCA9IHJzNjAwMF9sZWdpdGltaXplX3Rsc19hZGRyZXNzICh4 LCBtb2RlbCk7CisgICAgIH0KKyAKKysgIGVsc2UgaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9W U1hfUCAobW9kZSkpCisrICAgIHsKKysgICAgICAvKiBNYWtlIHN1cmUgYm90aCBvcGVyYW5kcyBh cmUgcmVnaXN0ZXJzLiAgKi8KKysgICAgICBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMpCisrCXJl dCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsCisrCQkJICAgIGZvcmNlX3JlZyAoUG1vZGUsIFhFWFAg KHgsIDApKSwKKysJCQkgICAgZm9yY2VfcmVnIChQbW9kZSwgWEVYUCAoeCwgMSkpKTsKKysgICAg ICBlbHNlCisrCXJldCA9IGZvcmNlX3JlZyAoUG1vZGUsIHgpOworKyAgICB9CisgICBlbHNlIGlm IChHRVRfQ09ERSAoeCkgPT0gUExVUworIAkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09 IFJFRworIAkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkpID09IENPTlNUX0lOVAorQEAgLTQ0 MzYsOCArNDUyMiw2IEBAIHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb2wK KyAJCSAmJiAobW9kZSA9PSBESW1vZGUgfHwgbW9kZSA9PSBUSW1vZGUpCisgCQkgJiYgKElOVFZB TCAoWEVYUCAoeCwgMSkpICYgMykgIT0gMCkKKyAJCXx8IChUQVJHRVRfU1BFICYmIFNQRV9WRUNU T1JfTU9ERSAobW9kZSkpCistCQl8fCAoVEFSR0VUX0FMVElWRUMgJiYgQUxUSVZFQ19WRUNUT1Jf TU9ERSAobW9kZSkpCistCQl8fCAoVEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PREUgKG1vZGUp KQorIAkJfHwgKFRBUkdFVF9FNTAwX0RPVUJMRSAmJiAobW9kZSA9PSBERm1vZGUgfHwgbW9kZSA9 PSBURm1vZGUKKyAJCQkJCSAgIHx8IG1vZGUgPT0gREltb2RlIHx8IG1vZGUgPT0gRERtb2RlCisg CQkJCQkgICB8fCBtb2RlID09IFREbW9kZSkpKSkKK0BAIC00NDY3LDE1ICs0NTUxLDYgQEAgcnM2 MDAwX2xlZ2l0aW1pemVfYWRkcmVzcyAocnR4IHgsIHJ0eCBvbAorICAgICAgIHJldCA9IGdlbl9y dHhfUExVUyAoUG1vZGUsIFhFWFAgKHgsIDApLAorIAkJCSAgZm9yY2VfcmVnIChQbW9kZSwgZm9y Y2Vfb3BlcmFuZCAoWEVYUCAoeCwgMSksIDApKSk7CisgICAgIH0KKy0gIGVsc2UgaWYgKFZFQ1RP Ul9NRU1fQUxUSVZFQ19PUl9WU1hfUCAobW9kZSkpCistICAgIHsKKy0gICAgICAvKiBNYWtlIHN1 cmUgYm90aCBvcGVyYW5kcyBhcmUgcmVnaXN0ZXJzLiAgKi8KKy0gICAgICBpZiAoR0VUX0NPREUg KHgpID09IFBMVVMpCistCXJldCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIGZvcmNlX3JlZyAoUG1v ZGUsIFhFWFAgKHgsIDApKSwKKy0JCQkgICAgZm9yY2VfcmVnIChQbW9kZSwgWEVYUCAoeCwgMSkp KTsKKy0gICAgICBlbHNlCistCXJldCA9IGZvcmNlX3JlZyAoUG1vZGUsIHgpOworLSAgICB9Cisg ICBlbHNlIGlmICgoVEFSR0VUX1NQRSAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUpKQorIAkgICB8 fCAoVEFSR0VUX0U1MDBfRE9VQkxFICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IFRGbW9k ZQorIAkJCQkgICAgICB8fCBtb2RlID09IEREbW9kZSB8fCBtb2RlID09IFREbW9kZQorQEAgLTUx MTMsNyArNTE4OCw3IEBAIHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MgKGVudW0gbWFjaGluZV8K KyAgICAgcmV0ID0gMTsKKyAgIGVsc2UgaWYgKHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRy ZXNzX3AgKG1vZGUsIHgsIHJlZ19va19zdHJpY3QpKQorICAgICByZXQgPSAxOworLSAgZWxzZSBp ZiAobW9kZSAhPSBUSW1vZGUKKysgIGVsc2UgaWYgKChtb2RlICE9IFRJbW9kZSB8fCAhVkVDVE9S X01FTV9OT05FX1AgKFRJbW9kZSkpCisgCSAgICYmIG1vZGUgIT0gVEZtb2RlCisgCSAgICYmIG1v ZGUgIT0gVERtb2RlCisgCSAgICYmICgoVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMp CitAQCAtNTk1Myw3ICs2MDI4LDEzIEBAIHJzNjAwMF9lbWl0X21vdmUgKHJ0eCBkZXN0LCBydHgg c291cmNlLCAKKyAKKyAgICAgY2FzZSBUSW1vZGU6CisgICAgICAgaWYgKFZFQ1RPUl9NRU1fQUxU SVZFQ19PUl9WU1hfUCAoVEltb2RlKSkKKy0JYnJlYWs7CisrCXsKKysJICBpZiAoQ09OU1RBTlRf UCAob3BlcmFuZHNbMV0pCisrCSAgICAgICYmICFlYXN5X3ZlY3Rvcl9jb25zdGFudCAob3BlcmFu ZHNbMV0sIG1vZGUpKQorKwkgICAgb3BlcmFuZHNbMV0gPSBmb3JjZV9jb25zdF9tZW0gKG1vZGUs IG9wZXJhbmRzWzFdKTsKKysKKysJICBicmVhazsKKysJfQorIAorICAgICAgIHJzNjAwMF9lbGlt aW5hdGVfaW5kZXhlZF9tZW1yZWZzIChvcGVyYW5kcyk7CisgCitAQCAtNzg2OSw3ICs3OTUwLDgg QEAgZGVmX2J1aWx0aW4gKGludCBtYXNrLCBjb25zdCBjaGFyICpuYW1lLAorICAgaWYgKChtYXNr ICYgdGFyZ2V0X2ZsYWdzKSB8fCBUQVJHRVRfUEFJUkVEX0ZMT0FUKQorICAgICB7CisgICAgICAg aWYgKHJzNjAwMF9idWlsdGluX2RlY2xzW2NvZGVdKQorLQlhYm9ydCAoKTsKKysJZmF0YWxfZXJy b3IgKCJpbnRlcm5hbCBlcnJvcjogYnVpbHRpbiBmdW5jdGlvbiB0byAlcyBhbHJlYWR5IHByb2Nl c3NlZC4iLAorKwkJICAgICBuYW1lKTsKKyAKKyAgICAgICByczYwMDBfYnVpbHRpbl9kZWNsc1tj b2RlXSA9CisgICAgICAgICBhZGRfYnVpbHRpbl9mdW5jdGlvbiAobmFtZSwgdHlwZSwgY29kZSwg QlVJTFRfSU5fTUQsCitAQCAtNzkzNCw2ICs4MDE2LDM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg YnVpbHRpbl9kZXNjcmlwdGlvbiAKKyAgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9mbm1hZGR2 NHNmNCwgIl9fYnVpbHRpbl92c3hfeHZubWFkZHNwIiwgVlNYX0JVSUxUSU5fWFZOTUFERFNQIH0s CisgICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfZm5tc3VidjRzZjQsICJfX2J1aWx0aW5fdnN4 X3h2bm1zdWJzcCIsIFZTWF9CVUlMVElOX1hWTk1TVUJTUCB9LAorIAorKyAgeyBNQVNLX1ZTWCwg Q09ERV9GT1JfdmVjdG9yX3ZzZWx2MmRpLCAiX19idWlsdGluX3ZzeF94eHNlbF8yZGkiLCBWU1hf QlVJTFRJTl9YWFNFTF8yREkgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZlY3Rvcl92c2Vs djJkZiwgIl9fYnVpbHRpbl92c3hfeHhzZWxfMmRmIiwgVlNYX0JVSUxUSU5fWFhTRUxfMkRGIH0s CisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92ZWN0b3JfdnNlbHY0c2YsICJfX2J1aWx0aW5fdnN4 X3h4c2VsXzRzZiIsIFZTWF9CVUlMVElOX1hYU0VMXzRTRiB9LAorKyAgeyBNQVNLX1ZTWCwgQ09E RV9GT1JfdmVjdG9yX3ZzZWx2NHNpLCAiX19idWlsdGluX3ZzeF94eHNlbF80c2kiLCBWU1hfQlVJ TFRJTl9YWFNFTF80U0kgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZlY3Rvcl92c2Vsdjho aSwgIl9fYnVpbHRpbl92c3hfeHhzZWxfOGhpIiwgVlNYX0JVSUxUSU5fWFhTRUxfOEhJIH0sCisr ICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92ZWN0b3JfdnNlbHYxNnFpLCAiX19idWlsdGluX3ZzeF94 eHNlbF8xNnFpIiwgVlNYX0JVSUxUSU5fWFhTRUxfMTZRSSB9LAorKworKyAgeyBNQVNLX1ZTWCwg Q09ERV9GT1JfYWx0aXZlY192cGVybV92MmRpLCAiX19idWlsdGluX3ZzeF92cGVybV8yZGkiLCBW U1hfQlVJTFRJTl9WUEVSTV8yREkgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX2FsdGl2ZWNf dnBlcm1fdjJkZiwgIl9fYnVpbHRpbl92c3hfdnBlcm1fMmRmIiwgVlNYX0JVSUxUSU5fVlBFUk1f MkRGIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9hbHRpdmVjX3ZwZXJtX3Y0c2YsICJfX2J1 aWx0aW5fdnN4X3ZwZXJtXzRzZiIsIFZTWF9CVUlMVElOX1ZQRVJNXzRTRiB9LAorKyAgeyBNQVNL X1ZTWCwgQ09ERV9GT1JfYWx0aXZlY192cGVybV92NHNpLCAiX19idWlsdGluX3ZzeF92cGVybV80 c2kiLCBWU1hfQlVJTFRJTl9WUEVSTV80U0kgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX2Fs dGl2ZWNfdnBlcm1fdjhoaSwgIl9fYnVpbHRpbl92c3hfdnBlcm1fOGhpIiwgVlNYX0JVSUxUSU5f VlBFUk1fOEhJIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9hbHRpdmVjX3ZwZXJtX3YxNnFp LCAiX19idWlsdGluX3ZzeF92cGVybV8xNnFpIiwgVlNYX0JVSUxUSU5fVlBFUk1fMTZRSSB9LAor KworKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h4cGVybWRpX3YyZGYsICJfX2J1aWx0aW5f dnN4X3h4cGVybWRpXzJkZiIsIFZTWF9CVUlMVElOX1hYUEVSTURJXzJERiB9LAorKyAgeyBNQVNL X1ZTWCwgQ09ERV9GT1JfdnN4X3h4cGVybWRpX3YyZGksICJfX2J1aWx0aW5fdnN4X3h4cGVybWRp XzJkaSIsIFZTWF9CVUlMVElOX1hYUEVSTURJXzJESSB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9G T1Jfbm90aGluZywgIl9fYnVpbHRpbl92c3hfeHhwZXJtZGkiLCBWU1hfQlVJTFRJTl9WRUNfWFhQ RVJNREkgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9zZXRfdjJkZiwgIl9fYnVpbHRp bl92c3hfc2V0XzJkZiIsIFZTWF9CVUlMVElOX1NFVF8yREYgfSwKKysgIHsgTUFTS19WU1gsIENP REVfRk9SX3ZzeF9zZXRfdjJkaSwgIl9fYnVpbHRpbl92c3hfc2V0XzJkaSIsIFZTWF9CVUlMVElO X1NFVF8yREkgfSwKKysKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdpX3YyZGks ICJfX2J1aWx0aW5fdnN4X3h4c2xkd2lfMmRpIiwgVlNYX0JVSUxUSU5fWFhTTERXSV8yREkgfSwK KysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdpX3YyZGYsICJfX2J1aWx0aW5fdnN4 X3h4c2xkd2lfMmRmIiwgVlNYX0JVSUxUSU5fWFhTTERXSV8yREYgfSwKKysgIHsgTUFTS19WU1gs IENPREVfRk9SX3ZzeF94eHNsZHdpX3Y0c2YsICJfX2J1aWx0aW5fdnN4X3h4c2xkd2lfNHNmIiwg VlNYX0JVSUxUSU5fWFhTTERXSV80U0YgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94 eHNsZHdpX3Y0c2ksICJfX2J1aWx0aW5fdnN4X3h4c2xkd2lfNHNpIiwgVlNYX0JVSUxUSU5fWFhT TERXSV80U0kgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdpX3Y4aGksICJf X2J1aWx0aW5fdnN4X3h4c2xkd2lfOGhpIiwgVlNYX0JVSUxUSU5fWFhTTERXSV84SEkgfSwKKysg IHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94eHNsZHdpX3YxNnFpLCAiX19idWlsdGluX3ZzeF94 eHNsZHdpXzE2cWkiLCBWU1hfQlVJTFRJTl9YWFNMRFdJXzE2UUkgfSwKKysgIHsgTUFTS19WU1gs IENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdnN4X3h4c2xkd2kiLCBWU1hfQlVJTFRJTl9W RUNfWFhTTERXSSB9LAorKworICAgeyAwLCBDT0RFX0ZPUl9wYWlyZWRfbXN1YiwgIl9fYnVpbHRp bl9wYWlyZWRfbXN1YiIsIFBBSVJFRF9CVUlMVElOX01TVUIgfSwKKyAgIHsgMCwgQ09ERV9GT1Jf cGFpcmVkX21hZGQsICJfX2J1aWx0aW5fcGFpcmVkX21hZGQiLCBQQUlSRURfQlVJTFRJTl9NQURE IH0sCisgICB7IDAsIENPREVfRk9SX3BhaXJlZF9tYWRkczAsICJfX2J1aWx0aW5fcGFpcmVkX21h ZGRzMCIsIFBBSVJFRF9CVUlMVElOX01BRERTMCB9LAorQEAgLTgwODMsNiArODE5Myw5IEBAIHN0 YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBiZGVzY18KKyAgIHsgTUFTS19WU1gsIENP REVfRk9SX3NtaW52MmRmMywgIl9fYnVpbHRpbl92c3hfeHZtaW5kcCIsIFZTWF9CVUlMVElOX1hW TUlORFAgfSwKKyAgIHsgTUFTS19WU1gsIENPREVfRk9SX3NtYXh2MmRmMywgIl9fYnVpbHRpbl92 c3hfeHZtYXhkcCIsIFZTWF9CVUlMVElOX1hWTUFYRFAgfSwKKyAgIHsgTUFTS19WU1gsIENPREVf Rk9SX3ZzeF90ZGl2djJkZjMsICJfX2J1aWx0aW5fdnN4X3h2dGRpdmRwIiwgVlNYX0JVSUxUSU5f WFZURElWRFAgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZlY3Rvcl9lcXYyZGYsICJfX2J1 aWx0aW5fdnN4X3h2Y21wZXFkcCIsIFZTWF9CVUlMVElOX1hWQ01QRVFEUCB9LAorKyAgeyBNQVNL X1ZTWCwgQ09ERV9GT1JfdmVjdG9yX2d0djJkZiwgIl9fYnVpbHRpbl92c3hfeHZjbXBndGRwIiwg VlNYX0JVSUxUSU5fWFZDTVBHVERQIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92ZWN0b3Jf Z2V2MmRmLCAiX19idWlsdGluX3ZzeF94dmNtcGdlZHAiLCBWU1hfQlVJTFRJTl9YVkNNUEdFRFAg fSwKKyAKKyAgIHsgTUFTS19WU1gsIENPREVfRk9SX2FkZHY0c2YzLCAiX19idWlsdGluX3ZzeF94 dmFkZHNwIiwgVlNYX0JVSUxUSU5fWFZBRERTUCB9LAorICAgeyBNQVNLX1ZTWCwgQ09ERV9GT1Jf c3VidjRzZjMsICJfX2J1aWx0aW5fdnN4X3h2c3Vic3AiLCBWU1hfQlVJTFRJTl9YVlNVQlNQIH0s CitAQCAtODA5MSw2ICs4MjA0LDIxIEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlv biBiZGVzY18KKyAgIHsgTUFTS19WU1gsIENPREVfRk9SX3NtaW52NHNmMywgIl9fYnVpbHRpbl92 c3hfeHZtaW5zcCIsIFZTWF9CVUlMVElOX1hWTUlOU1AgfSwKKyAgIHsgTUFTS19WU1gsIENPREVf Rk9SX3NtYXh2NHNmMywgIl9fYnVpbHRpbl92c3hfeHZtYXhzcCIsIFZTWF9CVUlMVElOX1hWTUFY U1AgfSwKKyAgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF90ZGl2djRzZjMsICJfX2J1aWx0aW5f dnN4X3h2dGRpdnNwIiwgVlNYX0JVSUxUSU5fWFZURElWU1AgfSwKKysgIHsgTUFTS19WU1gsIENP REVfRk9SX3ZlY3Rvcl9lcXY0c2YsICJfX2J1aWx0aW5fdnN4X3h2Y21wZXFzcCIsIFZTWF9CVUlM VElOX1hWQ01QRVFTUCB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdmVjdG9yX2d0djRzZiwg Il9fYnVpbHRpbl92c3hfeHZjbXBndHNwIiwgVlNYX0JVSUxUSU5fWFZDTVBHVFNQIH0sCisrICB7 IE1BU0tfVlNYLCBDT0RFX0ZPUl92ZWN0b3JfZ2V2NHNmLCAiX19idWlsdGluX3ZzeF94dmNtcGdl c3AiLCBWU1hfQlVJTFRJTl9YVkNNUEdFU1AgfSwKKysKKysgIHsgTUFTS19WU1gsIENPREVfRk9S X3NtaW5kZjMsICJfX2J1aWx0aW5fdnN4X3hzbWluZHAiLCBWU1hfQlVJTFRJTl9YU01JTkRQIH0s CisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9zbWF4ZGYzLCAiX19idWlsdGluX3ZzeF94c21heGRw IiwgVlNYX0JVSUxUSU5fWFNNQVhEUCB9LAorKworKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4 X2NvbmNhdF92MmRmLCAiX19idWlsdGluX3ZzeF9jb25jYXRfMmRmIiwgVlNYX0JVSUxUSU5fQ09O Q0FUXzJERiB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2NvbmNhdF92MmRpLCAiX19i dWlsdGluX3ZzeF9jb25jYXRfMmRpIiwgVlNYX0JVSUxUSU5fQ09OQ0FUXzJESSB9LAorKyAgeyBN QVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3NwbGF0X3YyZGYsICJfX2J1aWx0aW5fdnN4X3NwbGF0XzJk ZiIsIFZTWF9CVUlMVElOX1NQTEFUXzJERiB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4 X3NwbGF0X3YyZGksICJfX2J1aWx0aW5fdnN4X3NwbGF0XzJkaSIsIFZTWF9CVUlMVElOX1NQTEFU XzJESSB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h4bXJnaHdfdjRzZiwgIl9fYnVp bHRpbl92c3hfeHhtcmdodyIsIFZTWF9CVUlMVElOX1hYTVJHSFdfNFNGIH0sCisrICB7IE1BU0tf VlNYLCBDT0RFX0ZPUl92c3hfeHhtcmdod192NHNpLCAiX19idWlsdGluX3ZzeF94eG1yZ2h3XzRz aSIsIFZTWF9CVUlMVElOX1hYTVJHSFdfNFNJIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92 c3hfeHhtcmdsd192NHNmLCAiX19idWlsdGluX3ZzeF94eG1yZ2x3IiwgVlNYX0JVSUxUSU5fWFhN UkdMV180U0YgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94eG1yZ2x3X3Y0c2ksICJf X2J1aWx0aW5fdnN4X3h4bXJnbHdfNHNpIiwgVlNYX0JVSUxUSU5fWFhNUkdMV180U0kgfSwKKyAK KyAgIHsgTUFTS19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGlu X3ZlY19hZGQiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX0FERCB9LAorICAgeyBNQVNLX0FMVElWRUN8 TUFTS19WU1gsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3ZhZGRmcCIsIEFMVElW RUNfQlVJTFRJTl9WRUNfVkFEREZQIH0sCitAQCAtODUwOCw2ICs4NjM2LDQ3IEBAIHN0YXRpYyBz dHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBiZGVzY18KKyAgIHsgTUFTS19WU1gsIENPREVfRk9S X3ZzeF90c3FydHY0c2YyLCAiX19idWlsdGluX3ZzeF94dnRzcXJ0c3AiLCBWU1hfQlVJTFRJTl9Y VlRTUVJUU1AgfSwKKyAgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9mcmV2NHNmMiwgIl9fYnVp bHRpbl92c3hfeHZyZXNwIiwgVlNYX0JVSUxUSU5fWFZSRVNQIH0sCisgCisrICB7IE1BU0tfVlNY LCBDT0RFX0ZPUl92c3hfeHNjdmRwc3AsICJfX2J1aWx0aW5fdnN4X3hzY3ZkcHNwIiwgVlNYX0JV SUxUSU5fWFNDVkRQU1AgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94c2N2ZHBzcCwg Il9fYnVpbHRpbl92c3hfeHNjdnNwZHAiLCBWU1hfQlVJTFRJTl9YU0NWU1BEUCB9LAorKyAgeyBN QVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h2Y3ZkcHNwLCAiX19idWlsdGluX3ZzeF94dmN2ZHBzcCIs IFZTWF9CVUlMVElOX1hWQ1ZEUFNQIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZj dnNwZHAsICJfX2J1aWx0aW5fdnN4X3h2Y3ZzcGRwIiwgVlNYX0JVSUxUSU5fWFZDVlNQRFAgfSwK KysKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9maXhfdHJ1bmN2MmRmdjJkaTIsICJfX2J1 aWx0aW5fdnN4X3h2Y3ZkcHN4ZHMiLCBWU1hfQlVJTFRJTl9YVkNWRFBTWERTIH0sCisrICB7IE1B U0tfVlNYLCBDT0RFX0ZPUl92c3hfZml4dW5zX3RydW5jdjJkZnYyZGkyLCAiX19idWlsdGluX3Zz eF94dmN2ZHB1eGRzIiwgVlNYX0JVSUxUSU5fWFZDVkRQVVhEUyB9LAorKyAgeyBNQVNLX1ZTWCwg Q09ERV9GT1JfdnN4X2Zsb2F0djJkaXYyZGYyLCAiX19idWlsdGluX3ZzeF94dmN2c3hkZHAiLCBW U1hfQlVJTFRJTl9YVkNWU1hERFAgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9mbG9h dHVuc3YyZGl2MmRmMiwgIl9fYnVpbHRpbl92c3hfeHZjdnV4ZGRwIiwgVlNYX0JVSUxUSU5fWFZD VlVYRERQIH0sCisrCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfZml4X3RydW5jdjRzZnY0 c2kyLCAiX19idWlsdGluX3ZzeF94dmN2c3BzeHdzIiwgVlNYX0JVSUxUSU5fWFZDVlNQU1hXUyB9 LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2ZpeHVuc190cnVuY3Y0c2Z2NHNpMiwgIl9f YnVpbHRpbl92c3hfeHZjdnNwdXh3cyIsIFZTWF9CVUlMVElOX1hWQ1ZTUFVYV1MgfSwKKysgIHsg TUFTS19WU1gsIENPREVfRk9SX3ZzeF9mbG9hdHY0c2l2NHNmMiwgIl9fYnVpbHRpbl92c3hfeHZj dnN4d3NwIiwgVlNYX0JVSUxUSU5fWFZDVlNYV1NQIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZP Ul92c3hfZmxvYXR1bnN2NHNpdjRzZjIsICJfX2J1aWx0aW5fdnN4X3h2Y3Z1eHdzcCIsIFZTWF9C VUlMVElOX1hWQ1ZVWFdTUCB9LAorKworKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h2Y3Zk cHN4d3MsICJfX2J1aWx0aW5fdnN4X3h2Y3ZkcHN4d3MiLCBWU1hfQlVJTFRJTl9YVkNWRFBTWFdT IH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZjdmRwdXh3cywgIl9fYnVpbHRpbl92 c3hfeHZjdmRwdXh3cyIsIFZTWF9CVUlMVElOX1hWQ1ZEUFVYV1MgfSwKKysgIHsgTUFTS19WU1gs IENPREVfRk9SX3ZzeF94dmN2c3h3ZHAsICJfX2J1aWx0aW5fdnN4X3h2Y3ZzeHdkcCIsIFZTWF9C VUlMVElOX1hWQ1ZTWFdEUCB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3h2Y3Z1eHdk cCwgIl9fYnVpbHRpbl92c3hfeHZjdnV4d2RwIiwgVlNYX0JVSUxUSU5fWFZDVlVYV0RQIH0sCisr ICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZyZHBpLCAiX19idWlsdGluX3ZzeF94dnJkcGki LCBWU1hfQlVJTFRJTl9YVlJEUEkgfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94dnJk cGljLCAiX19idWlsdGluX3ZzeF94dnJkcGljIiwgVlNYX0JVSUxUSU5fWFZSRFBJQyB9LAorKyAg eyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2Zsb29ydjJkZjIsICJfX2J1aWx0aW5fdnN4X3h2cmRw aW0iLCBWU1hfQlVJTFRJTl9YVlJEUElNIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hf Y2VpbHYyZGYyLCAiX19idWlsdGluX3ZzeF94dnJkcGlwIiwgVlNYX0JVSUxUSU5fWFZSRFBJUCB9 LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2J0cnVuY3YyZGYyLCAiX19idWlsdGluX3Zz eF94dnJkcGl6IiwgVlNYX0JVSUxUSU5fWFZSRFBJWiB9LAorKworKyAgeyBNQVNLX1ZTWCwgQ09E RV9GT1JfdnN4X3h2Y3ZzcHN4ZHMsICJfX2J1aWx0aW5fdnN4X3h2Y3ZzcHN4ZHMiLCBWU1hfQlVJ TFRJTl9YVkNWU1BTWERTIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZjdnNwdXhk cywgIl9fYnVpbHRpbl92c3hfeHZjdnNwdXhkcyIsIFZTWF9CVUlMVElOX1hWQ1ZTUFVYRFMgfSwK KysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF94dmN2c3hkc3AsICJfX2J1aWx0aW5fdnN4X3h2 Y3ZzeGRzcCIsIFZTWF9CVUlMVElOX1hWQ1ZTWERTUCB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9G T1JfdnN4X3h2Y3Z1eGRzcCwgIl9fYnVpbHRpbl92c3hfeHZjdnV4ZHNwIiwgVlNYX0JVSUxUSU5f WFZDVlVYRFNQIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHZyc3BpLCAiX19idWls dGluX3ZzeF94dnJzcGkiLCBWU1hfQlVJTFRJTl9YVlJTUEkgfSwKKysgIHsgTUFTS19WU1gsIENP REVfRk9SX3ZzeF94dnJzcGljLCAiX19idWlsdGluX3ZzeF94dnJzcGljIiwgVlNYX0JVSUxUSU5f WFZSU1BJQyB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2Zsb29ydjRzZjIsICJfX2J1 aWx0aW5fdnN4X3h2cnNwaW0iLCBWU1hfQlVJTFRJTl9YVlJTUElNIH0sCisrICB7IE1BU0tfVlNY LCBDT0RFX0ZPUl92c3hfY2VpbHY0c2YyLCAiX19idWlsdGluX3ZzeF94dnJzcGlwIiwgVlNYX0JV SUxUSU5fWFZSU1BJUCB9LAorKyAgeyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2J0cnVuY3Y0c2Yy LCAiX19idWlsdGluX3ZzeF94dnJzcGl6IiwgVlNYX0JVSUxUSU5fWFZSU1BJWiB9LAorKworKyAg eyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X3hzcmRwaSwgIl9fYnVpbHRpbl92c3hfeHNyZHBpIiwg VlNYX0JVSUxUSU5fWFNSRFBJIH0sCisrICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl92c3hfeHNyZHBp YywgIl9fYnVpbHRpbl92c3hfeHNyZHBpYyIsIFZTWF9CVUlMVElOX1hTUkRQSUMgfSwKKysgIHsg TUFTS19WU1gsIENPREVfRk9SX3ZzeF9mbG9vcmRmMiwgIl9fYnVpbHRpbl92c3hfeHNyZHBpbSIs IFZTWF9CVUlMVElOX1hTUkRQSU0gfSwKKysgIHsgTUFTS19WU1gsIENPREVfRk9SX3ZzeF9jZWls ZGYyLCAiX19idWlsdGluX3ZzeF94c3JkcGlwIiwgVlNYX0JVSUxUSU5fWFNSRFBJUCB9LAorKyAg eyBNQVNLX1ZTWCwgQ09ERV9GT1JfdnN4X2J0cnVuY2RmMiwgIl9fYnVpbHRpbl92c3hfeHNyZHBp eiIsIFZTWF9CVUlMVElOX1hTUkRQSVogfSwKKysKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZP Ul9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19hYnMiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX0FCUyB9 LAorICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX2Fi c3MiLCBBTFRJVkVDX0JVSUxUSU5fVkVDX0FCU1MgfSwKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RF X0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY19jZWlsIiwgQUxUSVZFQ19CVUlMVElOX1ZFQ19D RUlMIH0sCitAQCAtODUzMywxNSArODcwMiw2IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNj cmlwdGlvbiBiZGVzY18KKyAgIHsgTUFTS19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZPUl9maXhf dHJ1bmN2NHNmdjRzaTIsICJfX2J1aWx0aW5fdmVjX2ZpeF9zZnNpIiwgVkVDVE9SX0JVSUxUSU5f RklYX1Y0U0ZfVjRTSSB9LAorICAgeyBNQVNLX0FMVElWRUN8TUFTS19WU1gsIENPREVfRk9SX2Zp eHVuc190cnVuY3Y0c2Z2NHNpMiwgIl9fYnVpbHRpbl92ZWNfZml4dW5zX3Nmc2kiLCBWRUNUT1Jf QlVJTFRJTl9GSVhVTlNfVjRTRl9WNFNJIH0sCisgCistICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9m bG9hdHYyZGl2MmRmMiwgIl9fYnVpbHRpbl92c3hfeHZjdnN4ZGRwIiwgVlNYX0JVSUxUSU5fWFZD VlNYRERQIH0sCistICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl91bnNpZ25lZF9mbG9hdHYyZGl2MmRm MiwgIl9fYnVpbHRpbl92c3hfeHZjdnV4ZGRwIiwgVlNYX0JVSUxUSU5fWFZDVlVYRERQIH0sCist ICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9maXhfdHJ1bmN2MmRmdjJkaTIsICJfX2J1aWx0aW5fdnN4 X3h2ZHBzeGRzIiwgVlNYX0JVSUxUSU5fWFZDVkRQU1hEUyB9LAorLSAgeyBNQVNLX1ZTWCwgQ09E RV9GT1JfZml4dW5zX3RydW5jdjJkZnYyZGkyLCAiX19idWlsdGluX3ZzeF94dmRwdXhkcyIsIFZT WF9CVUlMVElOX1hWQ1ZEUFVYRFMgfSwKKy0gIHsgTUFTS19WU1gsIENPREVfRk9SX2Zsb2F0djRz aXY0c2YyLCAiX19idWlsdGluX3ZzeF94dmN2c3h3c3AiLCBWU1hfQlVJTFRJTl9YVkNWU1hEU1Ag fSwKKy0gIHsgTUFTS19WU1gsIENPREVfRk9SX3Vuc2lnbmVkX2Zsb2F0djRzaXY0c2YyLCAiX19i dWlsdGluX3ZzeF94dmN2dXh3c3AiLCBWU1hfQlVJTFRJTl9YVkNWVVhXU1AgfSwKKy0gIHsgTUFT S19WU1gsIENPREVfRk9SX2ZpeF90cnVuY3Y0c2Z2NHNpMiwgIl9fYnVpbHRpbl92c3hfeHZzcHN4 d3MiLCBWU1hfQlVJTFRJTl9YVkNWU1BTWFdTIH0sCistICB7IE1BU0tfVlNYLCBDT0RFX0ZPUl9m aXh1bnNfdHJ1bmN2NHNmdjRzaTIsICJfX2J1aWx0aW5fdnN4X3h2c3B1eHdzIiwgVlNYX0JVSUxU SU5fWFZDVlNQVVhXUyB9LAorLQorICAgLyogVGhlIFNQRSB1bmFyeSBidWlsdGlucyBtdXN0IHN0 YXJ0IHdpdGggU1BFX0JVSUxUSU5fRVZBQlMgYW5kCisgICAgICBlbmQgd2l0aCBTUEVfQlVJTFRJ Tl9FVlNVQkZVU0lBQVcuICAqLworICAgeyAwLCBDT0RFX0ZPUl9zcGVfZXZhYnMsICJfX2J1aWx0 aW5fc3BlX2V2YWJzIiwgU1BFX0JVSUxUSU5fRVZBQlMgfSwKK0BAIC05MDQ2LDExICs5MjA2LDEy IEBAIHJzNjAwMF9leHBhbmRfdGVybm9wX2J1aWx0aW4gKGVudW0gaW5zbl8KKyAgICAgICB8fCBh cmcyID09IGVycm9yX21hcmtfbm9kZSkKKyAgICAgcmV0dXJuIGNvbnN0MF9ydHg7CisgCistICBp ZiAoaWNvZGUgPT0gQ09ERV9GT1JfYWx0aXZlY192c2xkb2lfdjRzZgorLSAgICAgIHx8IGljb2Rl ID09IENPREVfRk9SX2FsdGl2ZWNfdnNsZG9pX3Y0c2kKKy0gICAgICB8fCBpY29kZSA9PSBDT0RF X0ZPUl9hbHRpdmVjX3ZzbGRvaV92OGhpCistICAgICAgfHwgaWNvZGUgPT0gQ09ERV9GT1JfYWx0 aXZlY192c2xkb2lfdjE2cWkpCisrICBzd2l0Y2ggKGljb2RlKQorICAgICB7CisrICAgIGNhc2Ug Q09ERV9GT1JfYWx0aXZlY192c2xkb2lfdjRzZjoKKysgICAgY2FzZSBDT0RFX0ZPUl9hbHRpdmVj X3ZzbGRvaV92NHNpOgorKyAgICBjYXNlIENPREVfRk9SX2FsdGl2ZWNfdnNsZG9pX3Y4aGk6Cisr ICAgIGNhc2UgQ09ERV9GT1JfYWx0aXZlY192c2xkb2lfdjE2cWk6CisgICAgICAgLyogT25seSBh bGxvdyA0LWJpdCB1bnNpZ25lZCBsaXRlcmFscy4gICovCisgICAgICAgU1RSSVBfTk9QUyAoYXJn Mik7CisgICAgICAgaWYgKFRSRUVfQ09ERSAoYXJnMikgIT0gSU5URUdFUl9DU1QKK0BAIC05MDU5 LDYgKzkyMjAsNDAgQEAgcnM2MDAwX2V4cGFuZF90ZXJub3BfYnVpbHRpbiAoZW51bSBpbnNuXwor IAkgIGVycm9yICgiYXJndW1lbnQgMyBtdXN0IGJlIGEgNC1iaXQgdW5zaWduZWQgbGl0ZXJhbCIp OworIAkgIHJldHVybiBjb25zdDBfcnR4OworIAl9CisrICAgICAgYnJlYWs7CisrCisrICAgIGNh c2UgQ09ERV9GT1JfdnN4X3h4cGVybWRpX3YyZGY6CisrICAgIGNhc2UgQ09ERV9GT1JfdnN4X3h4 cGVybWRpX3YyZGk6CisrICAgIGNhc2UgQ09ERV9GT1JfdnN4X3h4c2xkd2lfdjE2cWk6CisrICAg IGNhc2UgQ09ERV9GT1JfdnN4X3h4c2xkd2lfdjhoaToKKysgICAgY2FzZSBDT0RFX0ZPUl92c3hf eHhzbGR3aV92NHNpOgorKyAgICBjYXNlIENPREVfRk9SX3ZzeF94eHNsZHdpX3Y0c2Y6CisrICAg IGNhc2UgQ09ERV9GT1JfdnN4X3h4c2xkd2lfdjJkaToKKysgICAgY2FzZSBDT0RFX0ZPUl92c3hf eHhzbGR3aV92MmRmOgorKyAgICAgIC8qIE9ubHkgYWxsb3cgMi1iaXQgdW5zaWduZWQgbGl0ZXJh bHMuICAqLworKyAgICAgIFNUUklQX05PUFMgKGFyZzIpOworKyAgICAgIGlmIChUUkVFX0NPREUg KGFyZzIpICE9IElOVEVHRVJfQ1NUCisrCSAgfHwgVFJFRV9JTlRfQ1NUX0xPVyAoYXJnMikgJiB+ MHgzKQorKwl7CisrCSAgZXJyb3IgKCJhcmd1bWVudCAzIG11c3QgYmUgYSAyLWJpdCB1bnNpZ25l ZCBsaXRlcmFsIik7CisrCSAgcmV0dXJuIGNvbnN0MF9ydHg7CisrCX0KKysgICAgICBicmVhazsK KysKKysgICAgY2FzZSBDT0RFX0ZPUl92c3hfc2V0X3YyZGY6CisrICAgIGNhc2UgQ09ERV9GT1Jf dnN4X3NldF92MmRpOgorKyAgICAgIC8qIE9ubHkgYWxsb3cgMS1iaXQgdW5zaWduZWQgbGl0ZXJh bHMuICAqLworKyAgICAgIFNUUklQX05PUFMgKGFyZzIpOworKyAgICAgIGlmIChUUkVFX0NPREUg KGFyZzIpICE9IElOVEVHRVJfQ1NUCisrCSAgfHwgVFJFRV9JTlRfQ1NUX0xPVyAoYXJnMikgJiB+ MHgxKQorKwl7CisrCSAgZXJyb3IgKCJhcmd1bWVudCAzIG11c3QgYmUgYSAxLWJpdCB1bnNpZ25l ZCBsaXRlcmFsIik7CisrCSAgcmV0dXJuIGNvbnN0MF9ydHg7CisrCX0KKysgICAgICBicmVhazsK KysKKysgICAgZGVmYXVsdDoKKysgICAgICBicmVhazsKKyAgICAgfQorIAorICAgaWYgKHRhcmdl dCA9PSAwCitAQCAtOTM2Niw4ICs5NTYxLDEwIEBAIGFsdGl2ZWNfZXhwYW5kX2J1aWx0aW4gKHRy ZWUgZXhwLCBydHggdGEKKyAgIGVudW0gbWFjaGluZV9tb2RlIHRtb2RlLCBtb2RlMDsKKyAgIHVu c2lnbmVkIGludCBmY29kZSA9IERFQ0xfRlVOQ1RJT05fQ09ERSAoZm5kZWNsKTsKKyAKKy0gIGlm IChmY29kZSA+PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9GSVJTVAorLSAgICAgICYmIGZj b2RlIDw9IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpCisrICBpZiAoKGZjb2RlID49 IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0ZJUlNUCisrICAgICAgICYmIGZjb2RlIDw9IEFM VElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpCisrICAgICAgfHwgKGZjb2RlID49IFZTWF9C VUlMVElOX09WRVJMT0FERURfRklSU1QKKysJICAmJiBmY29kZSA8PSBWU1hfQlVJTFRJTl9PVkVS TE9BREVEX0xBU1QpKQorICAgICB7CisgICAgICAgKmV4cGFuZGVkcCA9IHRydWU7CisgICAgICAg ZXJyb3IgKCJ1bnJlc29sdmVkIG92ZXJsb2FkIGZvciBBbHRpdmVjIGJ1aWx0aW4gJXFGIiwgZm5k ZWNsKTsKK0BAIC0xMDE1Niw2ICsxMDM1Myw3IEBAIHJzNjAwMF9pbml0X2J1aWx0aW5zICh2b2lk KQorICAgdW5zaWduZWRfVjE2UUlfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKHVuc2ln bmVkX2ludFFJX3R5cGVfbm9kZSwgMTYpOworICAgdW5zaWduZWRfVjhISV90eXBlX25vZGUgPSBi dWlsZF92ZWN0b3JfdHlwZSAodW5zaWduZWRfaW50SElfdHlwZV9ub2RlLCA4KTsKKyAgIHVuc2ln bmVkX1Y0U0lfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKHVuc2lnbmVkX2ludFNJX3R5 cGVfbm9kZSwgNCk7CisrICB1bnNpZ25lZF9WMkRJX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90 eXBlICh1bnNpZ25lZF9pbnRESV90eXBlX25vZGUsIDIpOworIAorICAgb3BhcXVlX1YyU0ZfdHlw ZV9ub2RlID0gYnVpbGRfb3BhcXVlX3ZlY3Rvcl90eXBlIChmbG9hdF90eXBlX25vZGUsIDIpOwor ICAgb3BhcXVlX1YyU0lfdHlwZV9ub2RlID0gYnVpbGRfb3BhcXVlX3ZlY3Rvcl90eXBlIChpbnRT SV90eXBlX25vZGUsIDIpOworQEAgLTEwMTY5LDYgKzEwMzY3LDcgQEAgcnM2MDAwX2luaXRfYnVp bHRpbnMgKHZvaWQpCisgICBib29sX2NoYXJfdHlwZV9ub2RlID0gYnVpbGRfZGlzdGluY3RfdHlw ZV9jb3B5ICh1bnNpZ25lZF9pbnRRSV90eXBlX25vZGUpOworICAgYm9vbF9zaG9ydF90eXBlX25v ZGUgPSBidWlsZF9kaXN0aW5jdF90eXBlX2NvcHkgKHVuc2lnbmVkX2ludEhJX3R5cGVfbm9kZSk7 CisgICBib29sX2ludF90eXBlX25vZGUgPSBidWlsZF9kaXN0aW5jdF90eXBlX2NvcHkgKHVuc2ln bmVkX2ludFNJX3R5cGVfbm9kZSk7CisrICBib29sX2xvbmdfdHlwZV9ub2RlID0gYnVpbGRfZGlz dGluY3RfdHlwZV9jb3B5ICh1bnNpZ25lZF9pbnRESV90eXBlX25vZGUpOworICAgcGl4ZWxfdHlw ZV9ub2RlID0gYnVpbGRfZGlzdGluY3RfdHlwZV9jb3B5ICh1bnNpZ25lZF9pbnRISV90eXBlX25v ZGUpOworIAorICAgbG9uZ19pbnRlZ2VyX3R5cGVfaW50ZXJuYWxfbm9kZSA9IGxvbmdfaW50ZWdl cl90eXBlX25vZGU7CitAQCAtMTAyMDEsNiArMTA0MDAsNyBAQCByczYwMDBfaW5pdF9idWlsdGlu cyAodm9pZCkKKyAgIGJvb2xfVjE2UUlfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKGJv b2xfY2hhcl90eXBlX25vZGUsIDE2KTsKKyAgIGJvb2xfVjhISV90eXBlX25vZGUgPSBidWlsZF92 ZWN0b3JfdHlwZSAoYm9vbF9zaG9ydF90eXBlX25vZGUsIDgpOworICAgYm9vbF9WNFNJX3R5cGVf bm9kZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlIChib29sX2ludF90eXBlX25vZGUsIDQpOworKyAgYm9v bF9WMkRJX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlIChib29sX2xvbmdfdHlwZV9ub2Rl LCAyKTsKKyAgIHBpeGVsX1Y4SElfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKHBpeGVs X3R5cGVfbm9kZSwgOCk7CisgCisgICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWls ZF9kZWNsIChUWVBFX0RFQ0wsCitAQCAtMTAyNDEsOSArMTA0NDEsMTcgQEAgcnM2MDAwX2luaXRf YnVpbHRpbnMgKHZvaWQpCisgCQkJCQkgICAgcGl4ZWxfVjhISV90eXBlX25vZGUpKTsKKyAKKyAg IGlmIChUQVJHRVRfVlNYKQorLSAgICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWls ZF9kZWNsIChUWVBFX0RFQ0wsCistCQkJCQkgICAgICBnZXRfaWRlbnRpZmllciAoIl9fdmVjdG9y IGRvdWJsZSIpLAorLQkJCQkJICAgICAgVjJERl90eXBlX25vZGUpKTsKKysgICAgeworKyAgICAg ICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVjbCkgKGJ1aWxkX2RlY2wgKFRZUEVfREVDTCwKKysJ CQkJCQlnZXRfaWRlbnRpZmllciAoIl9fdmVjdG9yIGRvdWJsZSIpLAorKwkJCQkJCVYyREZfdHlw ZV9ub2RlKSk7CisrICAgICAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAoYnVpbGRfZGVj bCAoVFlQRV9ERUNMLAorKwkJCQkJCWdldF9pZGVudGlmaWVyICgiX192ZWN0b3IgbG9uZyIpLAor KwkJCQkJCVYyRElfdHlwZV9ub2RlKSk7CisrICAgICAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hk ZWNsKSAoYnVpbGRfZGVjbCAoVFlQRV9ERUNMLAorKwkJCQkJCWdldF9pZGVudGlmaWVyICgiX192 ZWN0b3IgX19ib29sIGxvbmciKSwKKysJCQkJCQlib29sX1YyRElfdHlwZV9ub2RlKSk7CisrICAg IH0KKyAKKyAgIGlmIChUQVJHRVRfUEFJUkVEX0ZMT0FUKQorICAgICBwYWlyZWRfaW5pdF9idWls dGlucyAoKTsKK0BAIC0xMDgxOCw4ICsxMTAyNiwxMCBAQCBhbHRpdmVjX2luaXRfYnVpbHRpbnMg KHZvaWQpCisgICAgIHsKKyAgICAgICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlMTsKKyAgICAgICB0 cmVlIHR5cGU7CistICAgICAgYm9vbCBpc19vdmVybG9hZGVkID0gZHAtPmNvZGUgPj0gQUxUSVZF Q19CVUlMVElOX09WRVJMT0FERURfRklSU1QKKy0JCQkgICAmJiBkcC0+Y29kZSA8PSBBTFRJVkVD X0JVSUxUSU5fT1ZFUkxPQURFRF9MQVNUOworKyAgICAgIGJvb2wgaXNfb3ZlcmxvYWRlZCA9ICgo ZHAtPmNvZGUgPj0gQUxUSVZFQ19CVUlMVElOX09WRVJMT0FERURfRklSU1QKKysJCQkgICAgICYm IGRwLT5jb2RlIDw9IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpCisrCQkJICAgIHx8 IChkcC0+Y29kZSA+PSBWU1hfQlVJTFRJTl9PVkVSTE9BREVEX0ZJUlNUCisrCQkJCSYmIGRwLT5j b2RlIDw9IFZTWF9CVUlMVElOX09WRVJMT0FERURfTEFTVCkpOworIAorICAgICAgIGlmIChpc19v dmVybG9hZGVkKQorIAltb2RlMSA9IFZPSURtb2RlOworQEAgLTEwOTgyLDU5MiArMTExOTIsMzAy IEBAIGFsdGl2ZWNfaW5pdF9idWlsdGlucyAodm9pZCkKKyAJICAgICAgIEFMVElWRUNfQlVJTFRJ Tl9WRUNfRVhUX1Y0U0YpOworIH0KKyAKKy1zdGF0aWMgdm9pZAorLXJzNjAwMF9jb21tb25faW5p dF9idWlsdGlucyAodm9pZCkKKysvKiBIYXNoIGZ1bmN0aW9uIGZvciBidWlsdGluIGZ1bmN0aW9u cyB3aXRoIHVwIHRvIDMgYXJndW1lbnRzIGFuZCBhIHJldHVybgorKyAgIHR5cGUuICAqLworK3N0 YXRpYyB1bnNpZ25lZAorK2J1aWx0aW5faGFzaF9mdW5jdGlvbiAoY29uc3Qgdm9pZCAqaGFzaF9l bnRyeSkKKyB7CistICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAqZDsKKy0gIHNp emVfdCBpOworKyAgdW5zaWduZWQgcmV0ID0gMDsKKysgIGludCBpOworKyAgY29uc3Qgc3RydWN0 IGJ1aWx0aW5faGFzaF9zdHJ1Y3QgKmJoID0KKysgICAgKGNvbnN0IHN0cnVjdCBidWlsdGluX2hh c2hfc3RydWN0ICopIGhhc2hfZW50cnk7CisgCistICB0cmVlIHYyc2ZfZnR5cGVfdjJzZl92MnNm X3Yyc2YKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYyU0ZfdHlwZV9ub2RlLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjJTRl90eXBlX25vZGUsIFYyU0ZfdHlw ZV9ub2RlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjJTRl90eXBlX25vZGUs IE5VTExfVFJFRSk7CistCistICB0cmVlIHY0c2ZfZnR5cGVfdjRzZl92NHNmX3YxNnFpCistICAg ID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNGX3R5cGVfbm9kZSwKKy0JCQkJVjRTRl90 eXBlX25vZGUsIFY0U0ZfdHlwZV9ub2RlLAorLQkJCQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJF RSk7CistICB0cmVlIHY0c2lfZnR5cGVfdjRzaV92NHNpX3YxNnFpCistICAgID0gYnVpbGRfZnVu Y3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjRTSV90eXBlX25vZGUsIFY0 U0lfdHlwZV9ub2RlLAorLQkJCQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVl IHY4aGlfZnR5cGVfdjhoaV92OGhpX3YxNnFpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9s aXN0IChWOEhJX3R5cGVfbm9kZSwKKy0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2Rl LAorLQkJCQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIHYxNnFpX2Z0eXBl X3YxNnFpX3YxNnFpX3YxNnFpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMTZR SV90eXBlX25vZGUsCistCQkJCVYxNlFJX3R5cGVfbm9kZSwgVjE2UUlfdHlwZV9ub2RlLAorLQkJ CQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIHY0c2lfZnR5cGVfaW50Cist ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwgaW50ZWdlcl90 eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIHY4aGlfZnR5cGVfaW50CistICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwgaW50ZWdlcl90eXBlX25vZGUs IE5VTExfVFJFRSk7CistICB0cmVlIHYxNnFpX2Z0eXBlX2ludAorLSAgICA9IGJ1aWxkX2Z1bmN0 aW9uX3R5cGVfbGlzdCAoVjE2UUlfdHlwZV9ub2RlLCBpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9U UkVFKTsKKy0gIHRyZWUgdjhoaV9mdHlwZV92MTZxaQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5 cGVfbGlzdCAoVjhISV90eXBlX25vZGUsIFYxNlFJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0g IHRyZWUgdjRzZl9mdHlwZV92NHNmCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChW NFNGX3R5cGVfbm9kZSwgVjRTRl90eXBlX25vZGUsIE5VTExfVFJFRSk7CisrICBmb3IgKGkgPSAw OyBpIDwgNDsgaSsrKQorKyAgICByZXQgPSAocmV0ICogKHVuc2lnbmVkKU1BWF9NQUNISU5FX01P REUpICsgKCh1bnNpZ25lZCliaC0+bW9kZVtpXSk7CisgCistICB0cmVlIHYyc2lfZnR5cGVfdjJz aV92MnNpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChvcGFxdWVfVjJTSV90eXBl X25vZGUsCistCQkJCW9wYXF1ZV9WMlNJX3R5cGVfbm9kZSwKKy0JCQkJb3BhcXVlX1YyU0lfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOworLQorLSAgdHJlZSB2MnNmX2Z0eXBlX3Yyc2ZfdjJzZl9zcGUK Ky0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKG9wYXF1ZV9WMlNGX3R5cGVfbm9kZSwK Ky0JCQkJb3BhcXVlX1YyU0ZfdHlwZV9ub2RlLAorLQkJCQlvcGFxdWVfVjJTRl90eXBlX25vZGUs IE5VTExfVFJFRSk7CistCistICB0cmVlIHYyc2ZfZnR5cGVfdjJzZl92MnNmCistICAgID0gYnVp bGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMlNGX3R5cGVfbm9kZSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFYyU0ZfdHlwZV9ub2RlLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVjJTRl90eXBlX25vZGUsIE5VTExfVFJFRSk7CistCistCistICB0cmVlIHYyc2lf ZnR5cGVfaW50X2ludAorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Yy U0lfdHlwZV9ub2RlLAorLQkJCQlpbnRlZ2VyX3R5cGVfbm9kZSwgaW50ZWdlcl90eXBlX25vZGUs CistCQkJCU5VTExfVFJFRSk7CisrICByZXR1cm4gcmV0OworK30KKyAKKy0gIHRyZWUgb3BhcXVl X2Z0eXBlX29wYXF1ZQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Y0 U0lfdHlwZV9ub2RlLAorLQkJCQlvcGFxdWVfVjRTSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Cisr LyogQ29tcGFyZSBidWlsdGluIGhhc2ggZW50cmllcyBIMSBhbmQgSDIgZm9yIGVxdWl2YWxlbmNl LiAgKi8KKytzdGF0aWMgaW50CisrYnVpbHRpbl9oYXNoX2VxIChjb25zdCB2b2lkICpoMSwgY29u c3Qgdm9pZCAqaDIpCisreworKyAgY29uc3Qgc3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3QgKnAx ID0gKGNvbnN0IHN0cnVjdCBidWlsdGluX2hhc2hfc3RydWN0ICopIGgxOworKyAgY29uc3Qgc3Ry dWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3QgKnAyID0gKGNvbnN0IHN0cnVjdCBidWlsdGluX2hhc2hf c3RydWN0ICopIGgyOworIAorLSAgdHJlZSB2MnNpX2Z0eXBlX3Yyc2kKKy0gICAgPSBidWlsZF9m dW5jdGlvbl90eXBlX2xpc3QgKG9wYXF1ZV9WMlNJX3R5cGVfbm9kZSwKKy0JCQkJb3BhcXVlX1Yy U0lfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLQorLSAgdHJlZSB2MnNmX2Z0eXBlX3Yyc2Zfc3Bl CistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChvcGFxdWVfVjJTRl90eXBlX25vZGUs CistCQkJCW9wYXF1ZV9WMlNGX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0KKy0gIHRyZWUgdjJz Zl9mdHlwZV92MnNmCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMlNGX3R5cGVf bm9kZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYyU0ZfdHlwZV9ub2RlLCBO VUxMX1RSRUUpOworLQorLSAgdHJlZSB2MnNmX2Z0eXBlX3Yyc2kKKy0gICAgPSBidWlsZF9mdW5j dGlvbl90eXBlX2xpc3QgKG9wYXF1ZV9WMlNGX3R5cGVfbm9kZSwKKy0JCQkJb3BhcXVlX1YyU0lf dHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLQorLSAgdHJlZSB2MnNpX2Z0eXBlX3Yyc2YKKy0gICAg PSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKG9wYXF1ZV9WMlNJX3R5cGVfbm9kZSwKKy0JCQkJ b3BhcXVlX1YyU0ZfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLQorLSAgdHJlZSB2MnNpX2Z0eXBl X3Yyc2lfY2hhcgorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1YyU0lf dHlwZV9ub2RlLAorLQkJCQlvcGFxdWVfVjJTSV90eXBlX25vZGUsCistCQkJCWNoYXJfdHlwZV9u b2RlLCBOVUxMX1RSRUUpOworLQorLSAgdHJlZSB2MnNpX2Z0eXBlX2ludF9jaGFyCistICAgID0g YnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChvcGFxdWVfVjJTSV90eXBlX25vZGUsCistCQkJCWlu dGVnZXJfdHlwZV9ub2RlLCBjaGFyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0KKy0gIHRyZWUg djJzaV9mdHlwZV9jaGFyCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChvcGFxdWVf VjJTSV90eXBlX25vZGUsCistCQkJCWNoYXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworKyAgcmV0 dXJuICgocDEtPm1vZGVbMF0gPT0gcDItPm1vZGVbMF0pCisrCSAgJiYgKHAxLT5tb2RlWzFdID09 IHAyLT5tb2RlWzFdKQorKwkgICYmIChwMS0+bW9kZVsyXSA9PSBwMi0+bW9kZVsyXSkKKysJICAm JiAocDEtPm1vZGVbM10gPT0gcDItPm1vZGVbM10pKTsKKyt9CisgCistICB0cmVlIGludF9mdHlw ZV9pbnRfaW50CistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVf bm9kZSwKKy0JCQkJaW50ZWdlcl90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLAorLQkJCQlO VUxMX1RSRUUpOworKy8qIE1hcCBzZWxlY3RlZCBtb2RlcyB0byB0eXBlcyBmb3IgYnVpbHRpbnMu ICAqLworK3N0YXRpYyB0cmVlIGJ1aWx0aW5fbW9kZV90b190eXBlW01BWF9NQUNISU5FX01PREVd OworIAorLSAgdHJlZSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZQorLSAgICA9IGJ1aWxkX2Z1 bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3BhcXVlX1Y0U0lfdHlwZV9ub2RlLCBvcGFxdWVfVjRTSV90eXBl X25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIHY0c2lfZnR5cGVfdjRzaV92NHNpCistICAgID0g YnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjRTSV90eXBl X25vZGUsIFY0U0lfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2NHNmX2Z0eXBlX3Y0 c2lfaW50CistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNGX3R5cGVfbm9kZSwK Ky0JCQkJVjRTSV90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAg dHJlZSB2NHNpX2Z0eXBlX3Y0c2ZfaW50CistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0 IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjRTRl90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2Rl LCBOVUxMX1RSRUUpOworLSAgdHJlZSB2NHNpX2Z0eXBlX3Y0c2lfaW50CistICAgID0gYnVpbGRf ZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjRTSV90eXBlX25vZGUs IGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2OGhpX2Z0eXBlX3Y4aGlf aW50CistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwKKy0J CQkJVjhISV90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJl ZSB2MTZxaV9mdHlwZV92MTZxaV9pbnQKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3Qg KFYxNlFJX3R5cGVfbm9kZSwKKy0JCQkJVjE2UUlfdHlwZV9ub2RlLCBpbnRlZ2VyX3R5cGVfbm9k ZSwgTlVMTF9UUkVFKTsKKy0gIHRyZWUgdjE2cWlfZnR5cGVfdjE2cWlfdjE2cWlfaW50CistICAg ID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMTZRSV90eXBlX25vZGUsCistCQkJCVYxNlFJ X3R5cGVfbm9kZSwgVjE2UUlfdHlwZV9ub2RlLAorLQkJCQlpbnRlZ2VyX3R5cGVfbm9kZSwgTlVM TF9UUkVFKTsKKy0gIHRyZWUgdjhoaV9mdHlwZV92OGhpX3Y4aGlfaW50CistICAgID0gYnVpbGRf ZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwKKy0JCQkJVjhISV90eXBlX25vZGUs IFY4SElfdHlwZV9ub2RlLAorLQkJCQlpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0g IHRyZWUgdjRzaV9mdHlwZV92NHNpX3Y0c2lfaW50CistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlw ZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjRTSV90eXBlX25vZGUsIFY0U0lfdHlwZV9u b2RlLAorLQkJCQlpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0gIHRyZWUgdjRzZl9m dHlwZV92NHNmX3Y0c2ZfaW50CistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNG X3R5cGVfbm9kZSwKKy0JCQkJVjRTRl90eXBlX25vZGUsIFY0U0ZfdHlwZV9ub2RlLAorLQkJCQlp bnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0gIHRyZWUgdjRzZl9mdHlwZV92NHNmX3Y0 c2YKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFY0U0ZfdHlwZV9ub2RlLAorLQkJ CQlWNFNGX3R5cGVfbm9kZSwgVjRTRl90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIG9w YXF1ZV9mdHlwZV9vcGFxdWVfb3BhcXVlX29wYXF1ZQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5 cGVfbGlzdCAob3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3BhcXVlX1Y0U0lfdHlwZV9ub2RlLCBvcGFxdWVfVjRTSV90eXBlX25vZGUsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWVfVjRTSV90eXBlX25vZGUsIE5V TExfVFJFRSk7CistICB0cmVlIHY0c2ZfZnR5cGVfdjRzZl92NHNmX3Y0c2kKKy0gICAgPSBidWls ZF9mdW5jdGlvbl90eXBlX2xpc3QgKFY0U0ZfdHlwZV9ub2RlLAorLQkJCQlWNFNGX3R5cGVfbm9k ZSwgVjRTRl90eXBlX25vZGUsCistCQkJCVY0U0lfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAg dHJlZSB2NHNmX2Z0eXBlX3Y0c2ZfdjRzZl92NHNmCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlw ZV9saXN0IChWNFNGX3R5cGVfbm9kZSwKKy0JCQkJVjRTRl90eXBlX25vZGUsIFY0U0ZfdHlwZV9u b2RlLAorLQkJCQlWNFNGX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0gIHRyZWUgdjRzaV9mdHlw ZV92NHNpX3Y0c2lfdjRzaQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90 eXBlX25vZGUsCistCQkJCVY0U0lfdHlwZV9ub2RlLCBWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjRT SV90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIHY4aGlfZnR5cGVfdjhoaV92OGhpCist ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5cGVfbm9kZSwKKy0JCQkJVjhI SV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2OGhpX2Z0 eXBlX3Y4aGlfdjhoaV92OGhpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJ X3R5cGVfbm9kZSwKKy0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLAorLQkJCQlW OEhJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0gIHRyZWUgdjRzaV9mdHlwZV92OGhpX3Y4aGlf djRzaQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90eXBlX25vZGUsCist CQkJCVY4SElfdHlwZV9ub2RlLCBWOEhJX3R5cGVfbm9kZSwKKy0JCQkJVjRTSV90eXBlX25vZGUs IE5VTExfVFJFRSk7CistICB0cmVlIHY0c2lfZnR5cGVfdjE2cWlfdjE2cWlfdjRzaQorLSAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90eXBlX25vZGUsCistCQkJCVYxNlFJX3R5 cGVfbm9kZSwgVjE2UUlfdHlwZV9ub2RlLAorLQkJCQlWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVF KTsKKy0gIHRyZWUgdjE2cWlfZnR5cGVfdjE2cWlfdjE2cWkKKy0gICAgPSBidWlsZF9mdW5jdGlv bl90eXBlX2xpc3QgKFYxNlFJX3R5cGVfbm9kZSwKKy0JCQkJVjE2UUlfdHlwZV9ub2RlLCBWMTZR SV90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIHY0c2lfZnR5cGVfdjRzZl92NHNmCist ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjRT Rl90eXBlX25vZGUsIFY0U0ZfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2OGhpX2Z0 eXBlX3YxNnFpX3YxNnFpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWOEhJX3R5 cGVfbm9kZSwKKy0JCQkJVjE2UUlfdHlwZV9ub2RlLCBWMTZRSV90eXBlX25vZGUsIE5VTExfVFJF RSk7CistICB0cmVlIHY0c2lfZnR5cGVfdjhoaV92OGhpCistICAgID0gYnVpbGRfZnVuY3Rpb25f dHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2OGhpX2Z0eXBlX3Y0c2lfdjRzaQorLSAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjhISV90eXBlX25vZGUsCistCQkJCVY0U0lfdHlw ZV9ub2RlLCBWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0gIHRyZWUgdjE2cWlfZnR5cGVf djhoaV92OGhpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMTZRSV90eXBlX25v ZGUsCistCQkJCVY4SElfdHlwZV9ub2RlLCBWOEhJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0g IHRyZWUgdjRzaV9mdHlwZV92MTZxaV92NHNpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9s aXN0IChWNFNJX3R5cGVfbm9kZSwKKy0JCQkJVjE2UUlfdHlwZV9ub2RlLCBWNFNJX3R5cGVfbm9k ZSwgTlVMTF9UUkVFKTsKKy0gIHRyZWUgdjRzaV9mdHlwZV92MTZxaV92MTZxaQorLSAgICA9IGJ1 aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90eXBlX25vZGUsCistCQkJCVYxNlFJX3R5cGVf bm9kZSwgVjE2UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2NHNpX2Z0eXBlX3Y4 aGlfdjRzaQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRTSV90eXBlX25vZGUs CistCQkJCVY4SElfdHlwZV9ub2RlLCBWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0gIHRy ZWUgdjRzaV9mdHlwZV92OGhpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJ X3R5cGVfbm9kZSwgVjhISV90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIGludF9mdHlw ZV92NHNpX3Y0c2kKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlw ZV9ub2RlLAorLQkJCQlWNFNJX3R5cGVfbm9kZSwgVjRTSV90eXBlX25vZGUsIE5VTExfVFJFRSk7 CistICB0cmVlIGludF9mdHlwZV92NHNmX3Y0c2YKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBl X2xpc3QgKGludGVnZXJfdHlwZV9ub2RlLAorLQkJCQlWNFNGX3R5cGVfbm9kZSwgVjRTRl90eXBl X25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIGludF9mdHlwZV92MTZxaV92MTZxaQorLSAgICA9 IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsCistCQkJCVYxNlFJ X3R5cGVfbm9kZSwgVjE2UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSBpbnRfZnR5 cGVfdjhoaV92OGhpCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5 cGVfbm9kZSwKKy0JCQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLCBOVUxMX1RSRUUp OworLSAgdHJlZSB2MmRpX2Z0eXBlX3YyZGYKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xp c3QgKFYyRElfdHlwZV9ub2RlLAorLQkJCQlWMkRGX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0g IHRyZWUgdjJkZl9mdHlwZV92MmRmCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChW MkRGX3R5cGVfbm9kZSwKKy0JCQkJVjJERl90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVl IHYyZGZfZnR5cGVfdjJkaQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90 eXBlX25vZGUsCistCQkJCVYyRElfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2MmRm X2Z0eXBlX3YyZGZfdjJkZgorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90 eXBlX25vZGUsCistCQkJCVYyREZfdHlwZV9ub2RlLCBWMkRGX3R5cGVfbm9kZSwgTlVMTF9UUkVF KTsKKy0gIHRyZWUgdjJkZl9mdHlwZV92MmRmX3YyZGZfdjJkZgorLSAgICA9IGJ1aWxkX2Z1bmN0 aW9uX3R5cGVfbGlzdCAoVjJERl90eXBlX25vZGUsCistCQkJCVYyREZfdHlwZV9ub2RlLCBWMkRG X3R5cGVfbm9kZSwKKy0JCQkJVjJERl90eXBlX25vZGUsIE5VTExfVFJFRSk7CistICB0cmVlIHYy ZGlfZnR5cGVfdjJkaV92MmRpX3YyZGkKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3Qg KFYyRElfdHlwZV9ub2RlLAorLQkJCQlWMkRJX3R5cGVfbm9kZSwgVjJESV90eXBlX25vZGUsCist CQkJCVYyRElfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2MmRmX2Z0eXBlX3YyZGZf djJkZl92MTZxaQorLSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90eXBlX25v ZGUsCistCQkJCVYyREZfdHlwZV9ub2RlLCBWMkRGX3R5cGVfbm9kZSwKKy0JCQkJVjE2UUlfdHlw ZV9ub2RlLCBOVUxMX1RSRUUpOworLSAgdHJlZSB2MmRpX2Z0eXBlX3YyZGlfdjJkaV92MTZxaQor LSAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJESV90eXBlX25vZGUsCistCQkJCVYy RElfdHlwZV9ub2RlLCBWMkRJX3R5cGVfbm9kZSwKKy0JCQkJVjE2UUlfdHlwZV9ub2RlLCBOVUxM X1RSRUUpOworLSAgdHJlZSB2NHNmX2Z0eXBlX3Y0c2kKKy0gICAgPSBidWlsZF9mdW5jdGlvbl90 eXBlX2xpc3QgKFY0U0ZfdHlwZV9ub2RlLCBWNFNJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKy0g IHRyZWUgdjRzaV9mdHlwZV92NHNmCistICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChW NFNJX3R5cGVfbm9kZSwgVjRTRl90eXBlX25vZGUsIE5VTExfVFJFRSk7CisrLyogTWFwIHR5cGVz IGZvciBidWlsdGluIGZ1bmN0aW9ucyB3aXRoIGFuIGV4cGxpY2l0IHJldHVybiB0eXBlIGFuZCB1 cCB0byAzCisrICAgYXJndW1lbnRzLiAgRnVuY3Rpb25zIHdpdGggZmV3ZXIgdGhhbiAzIGFyZ3Vt ZW50cyB1c2UgVk9JRG1vZGUgYXMgdGhlIHR5cGUKKysgICBvZiB0aGUgYXJndW1lbnQuICAqLwor K3N0YXRpYyB0cmVlCisrYnVpbHRpbl9mdW5jdGlvbl90eXBlIChlbnVtIG1hY2hpbmVfbW9kZSBt b2RlX3JldCwgZW51bSBtYWNoaW5lX21vZGUgbW9kZV9hcmcwLAorKwkJICAgICAgIGVudW0gbWFj aGluZV9tb2RlIG1vZGVfYXJnMSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZV9hcmcyLAorKwkJICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUpCisreworKyAgc3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3Qg aDsKKysgIHN0cnVjdCBidWlsdGluX2hhc2hfc3RydWN0ICpoMjsKKysgIHZvaWQgKipmb3VuZDsK KysgIGludCBudW1fYXJncyA9IDM7CisrICBpbnQgaTsKKyAKKy0gIC8qIEFkZCB0aGUgc2ltcGxl IHRlcm5hcnkgb3BlcmF0b3JzLiAgKi8KKysgIC8qIENyZWF0ZSBidWlsdGluX2hhc2hfdGFibGUu ICAqLworKyAgaWYgKGJ1aWx0aW5faGFzaF90YWJsZSA9PSBOVUxMKQorKyAgICBidWlsdGluX2hh c2hfdGFibGUgPSBodGFiX2NyZWF0ZV9nZ2MgKDE1MDAsIGJ1aWx0aW5faGFzaF9mdW5jdGlvbiwK KysJCQkJCSAgYnVpbHRpbl9oYXNoX2VxLCBOVUxMKTsKKysKKysgIGgudHlwZSA9IE5VTExfVFJF RTsKKysgIGgubW9kZVswXSA9IG1vZGVfcmV0OworKyAgaC5tb2RlWzFdID0gbW9kZV9hcmcwOwor KyAgaC5tb2RlWzJdID0gbW9kZV9hcmcxOworKyAgaC5tb2RlWzNdID0gbW9kZV9hcmcyOworKwor KyAgLyogRmlndXJlIG91dCBob3cgbWFueSBhcmdzIGFyZSBwcmVzZW50LiAgKi8KKysgIHdoaWxl IChudW1fYXJncyA+IDAgJiYgaC5tb2RlW251bV9hcmdzXSA9PSBWT0lEbW9kZSkKKysgICAgbnVt X2FyZ3MtLTsKKysKKysgIGlmIChudW1fYXJncyA9PSAwKQorKyAgICBmYXRhbF9lcnJvciAoImlu dGVybmFsIGVycm9yOiBidWlsdGluIGZ1bmN0aW9uICVzIGhhZCBubyB0eXBlIiwgbmFtZSk7Cisr CisrICBpZiAoIWJ1aWx0aW5fbW9kZV90b190eXBlW2gubW9kZVswXV0pCisrICAgIGZhdGFsX2Vy cm9yICgiaW50ZXJuYWwgZXJyb3I6IGJ1aWx0aW4gZnVuY3Rpb24gJXMgaGFkIGFuIHVuZXhwZWN0 ZWQgIgorKwkJICJyZXR1cm4gdHlwZSAlcyIsIG5hbWUsIEdFVF9NT0RFX05BTUUgKGgubW9kZVsw XSkpOworKworKyAgZm9yIChpID0gMDsgaSA8IG51bV9hcmdzOyBpKyspCisrICAgIGlmICghYnVp bHRpbl9tb2RlX3RvX3R5cGVbaC5tb2RlW2krMV1dKQorKyAgICAgIGZhdGFsX2Vycm9yICgiaW50 ZXJuYWwgZXJyb3I6IGJ1aWx0aW4gZnVuY3Rpb24gJXMsIGFyZ3VtZW50ICVkICIKKysJCSAgICJo YWQgdW5leHBlY3RlZCBhcmd1bWVudCB0eXBlICVzIiwgbmFtZSwgaSwKKysJCSAgIEdFVF9NT0RF X05BTUUgKGgubW9kZVtpKzFdKSk7CisrCisrICBmb3VuZCA9IGh0YWJfZmluZF9zbG90IChidWls dGluX2hhc2hfdGFibGUsICZoLCAxKTsKKysgIGlmICgqZm91bmQgPT0gTlVMTCkKKysgICAgewor KyAgICAgIGgyID0gR0dDX05FVyAoc3RydWN0IGJ1aWx0aW5faGFzaF9zdHJ1Y3QpOworKyAgICAg ICpoMiA9IGg7CisrICAgICAgKmZvdW5kID0gKHZvaWQgKiloMjsKKysKKysgICAgICBzd2l0Y2gg KG51bV9hcmdzKQorKwl7CisrCWNhc2UgMToKKysJICBoMi0+dHlwZSA9IGJ1aWxkX2Z1bmN0aW9u X3R5cGVfbGlzdCAoYnVpbHRpbl9tb2RlX3RvX3R5cGVbbW9kZV9yZXRdLAorKwkJCQkJICAgICAg IGJ1aWx0aW5fbW9kZV90b190eXBlW21vZGVfYXJnMF0sCisrCQkJCQkgICAgICAgTlVMTF9UUkVF KTsKKysJICBicmVhazsKKysKKysJY2FzZSAyOgorKwkgIGgyLT50eXBlID0gYnVpbGRfZnVuY3Rp b25fdHlwZV9saXN0IChidWlsdGluX21vZGVfdG9fdHlwZVttb2RlX3JldF0sCisrCQkJCQkgICAg ICAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbbW9kZV9hcmcwXSwKKysJCQkJCSAgICAgICBidWlsdGlu X21vZGVfdG9fdHlwZVttb2RlX2FyZzFdLAorKwkJCQkJICAgICAgIE5VTExfVFJFRSk7CisrCSAg YnJlYWs7CisrCisrCWNhc2UgMzoKKysJICBoMi0+dHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVf bGlzdCAoYnVpbHRpbl9tb2RlX3RvX3R5cGVbbW9kZV9yZXRdLAorKwkJCQkJICAgICAgIGJ1aWx0 aW5fbW9kZV90b190eXBlW21vZGVfYXJnMF0sCisrCQkJCQkgICAgICAgYnVpbHRpbl9tb2RlX3Rv X3R5cGVbbW9kZV9hcmcxXSwKKysJCQkJCSAgICAgICBidWlsdGluX21vZGVfdG9fdHlwZVttb2Rl X2FyZzJdLAorKwkJCQkJICAgICAgIE5VTExfVFJFRSk7CisrCSAgYnJlYWs7CisrCisrCWRlZmF1 bHQ6CisrCSAgZ2NjX3VucmVhY2hhYmxlICgpOworKwl9CisrICAgIH0KKysKKysgIHJldHVybiAo KHN0cnVjdCBidWlsdGluX2hhc2hfc3RydWN0ICopKCpmb3VuZCkpLT50eXBlOworK30KKysKKytz dGF0aWMgdm9pZAorK3JzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyAodm9pZCkKKyt7CisrICBj b25zdCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAqZDsKKysgIHNpemVfdCBpOworKworKyAg dHJlZSBvcGFxdWVfZnR5cGVfb3BhcXVlID0gTlVMTF9UUkVFOworKyAgdHJlZSBvcGFxdWVfZnR5 cGVfb3BhcXVlX29wYXF1ZSA9IE5VTExfVFJFRTsKKysgIHRyZWUgb3BhcXVlX2Z0eXBlX29wYXF1 ZV9vcGFxdWVfb3BhcXVlID0gTlVMTF9UUkVFOworKyAgdHJlZSB2MnNpX2Z0eXBlX3FpID0gTlVM TF9UUkVFOworKyAgdHJlZSB2MnNpX2Z0eXBlX3Yyc2lfcWkgPSBOVUxMX1RSRUU7CisrICB0cmVl IHYyc2lfZnR5cGVfaW50X3FpID0gTlVMTF9UUkVFOworKworKyAgLyogSW5pdGlhbGl6ZSB0aGUg dGFibGVzIGZvciB0aGUgdW5hcnksIGJpbmFyeSwgYW5kIHRlcm5hcnkgb3BzLiAgKi8KKysgIGJ1 aWx0aW5fbW9kZV90b190eXBlW1FJbW9kZV0gPSBpbnRlZ2VyX3R5cGVfbm9kZTsKKysgIGJ1aWx0 aW5fbW9kZV90b190eXBlW0hJbW9kZV0gPSBpbnRlZ2VyX3R5cGVfbm9kZTsKKysgIGJ1aWx0aW5f bW9kZV90b190eXBlW1NJbW9kZV0gPSBpbnRTSV90eXBlX25vZGU7CisrICBidWlsdGluX21vZGVf dG9fdHlwZVtESW1vZGVdID0gaW50RElfdHlwZV9ub2RlOworKyAgYnVpbHRpbl9tb2RlX3RvX3R5 cGVbU0Ztb2RlXSA9IGZsb2F0X3R5cGVfbm9kZTsKKysgIGJ1aWx0aW5fbW9kZV90b190eXBlW0RG bW9kZV0gPSBkb3VibGVfdHlwZV9ub2RlOworKyAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbVjJTSW1v ZGVdID0gVjJTSV90eXBlX25vZGU7CisrICBidWlsdGluX21vZGVfdG9fdHlwZVtWMlNGbW9kZV0g PSBWMlNGX3R5cGVfbm9kZTsKKysgIGJ1aWx0aW5fbW9kZV90b190eXBlW1YyREltb2RlXSA9IFYy RElfdHlwZV9ub2RlOworKyAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbVjJERm1vZGVdID0gVjJERl90 eXBlX25vZGU7CisrICBidWlsdGluX21vZGVfdG9fdHlwZVtWNEhJbW9kZV0gPSBWNEhJX3R5cGVf bm9kZTsKKysgIGJ1aWx0aW5fbW9kZV90b190eXBlW1Y0U0ltb2RlXSA9IFY0U0lfdHlwZV9ub2Rl OworKyAgYnVpbHRpbl9tb2RlX3RvX3R5cGVbVjRTRm1vZGVdID0gVjRTRl90eXBlX25vZGU7Cisr ICBidWlsdGluX21vZGVfdG9fdHlwZVtWOEhJbW9kZV0gPSBWOEhJX3R5cGVfbm9kZTsKKysgIGJ1 aWx0aW5fbW9kZV90b190eXBlW1YxNlFJbW9kZV0gPSBWMTZRSV90eXBlX25vZGU7CisrCisrICBp ZiAoIVRBUkdFVF9QQUlSRURfRkxPQVQpCisrICAgIHsKKysgICAgICBidWlsdGluX21vZGVfdG9f dHlwZVtWMlNJbW9kZV0gPSBvcGFxdWVfVjJTSV90eXBlX25vZGU7CisrICAgICAgYnVpbHRpbl9t b2RlX3RvX3R5cGVbVjJTRm1vZGVdID0gb3BhcXVlX1YyU0ZfdHlwZV9ub2RlOworKyAgICB9Cisr CisrICAvKiBBZGQgdGhlIHRlcm5hcnkgb3BlcmF0b3JzLiAgKi8KKyAgIGQgPSBiZGVzY18zYXJn OworICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUgKGJkZXNjXzNhcmcpOyBpKyssIGQrKykK KyAgICAgeworLSAgICAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUwLCBtb2RlMSwgbW9kZTIsIG1v ZGUzOworICAgICAgIHRyZWUgdHlwZTsKKy0gICAgICBib29sIGlzX292ZXJsb2FkZWQgPSBkLT5j b2RlID49IEFMVElWRUNfQlVJTFRJTl9PVkVSTE9BREVEX0ZJUlNUCistCQkJICAgJiYgZC0+Y29k ZSA8PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9MQVNUOworKyAgICAgIGludCBtYXNrID0g ZC0+bWFzazsKKyAKKy0gICAgICBpZiAoaXNfb3ZlcmxvYWRlZCkKKy0JeworLSAgICAgICAgICBt b2RlMCA9IFZPSURtb2RlOworLSAgICAgICAgICBtb2RlMSA9IFZPSURtb2RlOworLSAgICAgICAg ICBtb2RlMiA9IFZPSURtb2RlOworLSAgICAgICAgICBtb2RlMyA9IFZPSURtb2RlOworKyAgICAg IGlmICgobWFzayAhPSAwICYmIChtYXNrICYgdGFyZ2V0X2ZsYWdzKSA9PSAwKQorKwkgIHx8ICht YXNrID09IDAgJiYgIVRBUkdFVF9QQUlSRURfRkxPQVQpKQorKwljb250aW51ZTsKKysKKysgICAg ICBpZiAoKGQtPmNvZGUgPj0gQUxUSVZFQ19CVUlMVElOX09WRVJMT0FERURfRklSU1QKKysJICAg JiYgZC0+Y29kZSA8PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9MQVNUKQorKwkgIHx8IChk LT5jb2RlID49IFZTWF9CVUlMVElOX09WRVJMT0FERURfRklSU1QKKysJICAgICAgJiYgZC0+Y29k ZSA8PSBWU1hfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpKQorKwl7CisrCSAgaWYgKCEgKHR5cGUg PSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZV9vcGFxdWUpKQorKwkgICAgdHlwZSA9IG9wYXF1 ZV9mdHlwZV9vcGFxdWVfb3BhcXVlX29wYXF1ZQorKwkgICAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5 cGVfbGlzdCAob3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAorKwkJCQkJICBvcGFxdWVfVjRTSV90eXBl X25vZGUsCisrCQkJCQkgIG9wYXF1ZV9WNFNJX3R5cGVfbm9kZSwKKysJCQkJCSAgb3BhcXVlX1Y0 U0lfdHlwZV9ub2RlLAorKwkJCQkJICBOVUxMX1RSRUUpOworIAl9CisgICAgICAgZWxzZQorIAl7 CistICAgICAgICAgIGlmIChkLT5uYW1lID09IDAgfHwgZC0+aWNvZGUgPT0gQ09ERV9GT1Jfbm90 aGluZykKKysJICBlbnVtIGluc25fY29kZSBpY29kZSA9IGQtPmljb2RlOworKyAgICAgICAgICBp ZiAoZC0+bmFtZSA9PSAwIHx8IGljb2RlID09IENPREVfRk9SX25vdGhpbmcpCisgCSAgICBjb250 aW51ZTsKKyAKKy0gICAgICAgICAgbW9kZTAgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRb MF0ubW9kZTsKKy0gICAgICAgICAgbW9kZTEgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRb MV0ubW9kZTsKKy0gICAgICAgICAgbW9kZTIgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRb Ml0ubW9kZTsKKy0gICAgICAgICAgbW9kZTMgPSBpbnNuX2RhdGFbZC0+aWNvZGVdLm9wZXJhbmRb M10ubW9kZTsKKysJICB0eXBlID0gYnVpbHRpbl9mdW5jdGlvbl90eXBlIChpbnNuX2RhdGFbaWNv ZGVdLm9wZXJhbmRbMF0ubW9kZSwKKysJCQkJCWluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsxXS5t b2RlLAorKwkJCQkJaW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kWzJdLm1vZGUsCisrCQkJCQlpbnNu X2RhdGFbaWNvZGVdLm9wZXJhbmRbM10ubW9kZSwKKysJCQkJCWQtPm5hbWUpOworIAl9CisgCist ICAgICAgLyogV2hlbiBhbGwgZm91ciBhcmUgb2YgdGhlIHNhbWUgbW9kZS4gICovCistICAgICAg aWYgKG1vZGUwID09IG1vZGUxICYmIG1vZGUxID09IG1vZGUyICYmIG1vZGUyID09IG1vZGUzKQor LQl7CistCSAgc3dpdGNoIChtb2RlMCkKKy0JICAgIHsKKy0JICAgIGNhc2UgVk9JRG1vZGU6Cist CSAgICAgIHR5cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZV9vcGFxdWU7CistCSAgICAg IGJyZWFrOworLQkgICAgY2FzZSBWMkRJbW9kZToKKy0JICAgICAgdHlwZSA9IHYyZGlfZnR5cGVf djJkaV92MmRpX3YyZGk7CistCSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBWMkRGbW9kZToKKy0J ICAgICAgdHlwZSA9IHYyZGZfZnR5cGVfdjJkZl92MmRmX3YyZGY7CistCSAgICAgIGJyZWFrOwor LQkgICAgY2FzZSBWNFNJbW9kZToKKy0JICAgICAgdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV92NHNp X3Y0c2k7CistCSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBWNFNGbW9kZToKKy0JICAgICAgdHlw ZSA9IHY0c2ZfZnR5cGVfdjRzZl92NHNmX3Y0c2Y7CistCSAgICAgIGJyZWFrOworLQkgICAgY2Fz ZSBWOEhJbW9kZToKKy0JICAgICAgdHlwZSA9IHY4aGlfZnR5cGVfdjhoaV92OGhpX3Y4aGk7Cist CSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBWMTZRSW1vZGU6CistCSAgICAgIHR5cGUgPSB2MTZx aV9mdHlwZV92MTZxaV92MTZxaV92MTZxaTsKKy0JICAgICAgYnJlYWs7CistICAgICAgICAgICAg Y2FzZSBWMlNGbW9kZToKKy0gICAgICAgICAgICAgICAgdHlwZSA9IHYyc2ZfZnR5cGVfdjJzZl92 MnNmX3Yyc2Y7CistICAgICAgICAgICAgICBicmVhazsKKy0JICAgIGRlZmF1bHQ6CistCSAgICAg IGdjY191bnJlYWNoYWJsZSAoKTsKKy0JICAgIH0KKy0JfQorLSAgICAgIGVsc2UgaWYgKG1vZGUw ID09IG1vZGUxICYmIG1vZGUxID09IG1vZGUyICYmIG1vZGUzID09IFYxNlFJbW9kZSkKKy0Jewor LQkgIHN3aXRjaCAobW9kZTApCistCSAgICB7CistCSAgICBjYXNlIFYyREltb2RlOgorLQkgICAg ICB0eXBlID0gdjJkaV9mdHlwZV92MmRpX3YyZGlfdjE2cWk7CistCSAgICAgIGJyZWFrOworLQkg ICAgY2FzZSBWMkRGbW9kZToKKy0JICAgICAgdHlwZSA9IHYyZGZfZnR5cGVfdjJkZl92MmRmX3Yx NnFpOworLQkgICAgICBicmVhazsKKy0JICAgIGNhc2UgVjRTSW1vZGU6CistCSAgICAgIHR5cGUg PSB2NHNpX2Z0eXBlX3Y0c2lfdjRzaV92MTZxaTsKKy0JICAgICAgYnJlYWs7CistCSAgICBjYXNl IFY0U0Ztb2RlOgorLQkgICAgICB0eXBlID0gdjRzZl9mdHlwZV92NHNmX3Y0c2ZfdjE2cWk7Cist CSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBWOEhJbW9kZToKKy0JICAgICAgdHlwZSA9IHY4aGlf ZnR5cGVfdjhoaV92OGhpX3YxNnFpOworLQkgICAgICBicmVhazsKKy0JICAgIGNhc2UgVjE2UUlt b2RlOgorLQkgICAgICB0eXBlID0gdjE2cWlfZnR5cGVfdjE2cWlfdjE2cWlfdjE2cWk7CistCSAg ICAgIGJyZWFrOworLQkgICAgZGVmYXVsdDoKKy0JICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwor LQkgICAgfQorLQl9CistICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEg PT0gVjE2UUltb2RlICYmIG1vZGUyID09IFYxNlFJbW9kZQorLQkgICAgICAgJiYgbW9kZTMgPT0g VjRTSW1vZGUpCistCXR5cGUgPSB2NHNpX2Z0eXBlX3YxNnFpX3YxNnFpX3Y0c2k7CistICAgICAg ZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gVjhISW1vZGUgJiYgbW9kZTIg PT0gVjhISW1vZGUKKy0JICAgICAgICYmIG1vZGUzID09IFY0U0ltb2RlKQorLQl0eXBlID0gdjRz aV9mdHlwZV92OGhpX3Y4aGlfdjRzaTsKKy0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNGbW9k ZSAmJiBtb2RlMSA9PSBWNFNGbW9kZSAmJiBtb2RlMiA9PSBWNFNGbW9kZQorLQkgICAgICAgJiYg bW9kZTMgPT0gVjRTSW1vZGUpCistCXR5cGUgPSB2NHNmX2Z0eXBlX3Y0c2ZfdjRzZl92NHNpOwor LQorLSAgICAgIC8qIHZjaGFyLCB2Y2hhciwgdmNoYXIsIDQtYml0IGxpdGVyYWwuICAqLworLSAg ICAgIGVsc2UgaWYgKG1vZGUwID09IFYxNlFJbW9kZSAmJiBtb2RlMSA9PSBtb2RlMCAmJiBtb2Rl MiA9PSBtb2RlMAorLQkgICAgICAgJiYgbW9kZTMgPT0gUUltb2RlKQorLQl0eXBlID0gdjE2cWlf ZnR5cGVfdjE2cWlfdjE2cWlfaW50OworLQorLSAgICAgIC8qIHZzaG9ydCwgdnNob3J0LCB2c2hv cnQsIDQtYml0IGxpdGVyYWwuICAqLworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY4SEltb2Rl ICYmIG1vZGUxID09IG1vZGUwICYmIG1vZGUyID09IG1vZGUwCistCSAgICAgICAmJiBtb2RlMyA9 PSBRSW1vZGUpCistCXR5cGUgPSB2OGhpX2Z0eXBlX3Y4aGlfdjhoaV9pbnQ7CistCistICAgICAg LyogdmludCwgdmludCwgdmludCwgNC1iaXQgbGl0ZXJhbC4gICovCistICAgICAgZWxzZSBpZiAo bW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gbW9kZTAgJiYgbW9kZTIgPT0gbW9kZTAKKy0J ICAgICAgICYmIG1vZGUzID09IFFJbW9kZSkKKy0JdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV92NHNp X2ludDsKKy0KKy0gICAgICAvKiB2ZmxvYXQsIHZmbG9hdCwgdmZsb2F0LCA0LWJpdCBsaXRlcmFs LiAgKi8KKy0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNGbW9kZSAmJiBtb2RlMSA9PSBtb2Rl MCAmJiBtb2RlMiA9PSBtb2RlMAorLQkgICAgICAgJiYgbW9kZTMgPT0gUUltb2RlKQorLQl0eXBl ID0gdjRzZl9mdHlwZV92NHNmX3Y0c2ZfaW50OworLQorLSAgICAgIGVsc2UKKy0JZ2NjX3VucmVh Y2hhYmxlICgpOworLQorICAgICAgIGRlZl9idWlsdGluIChkLT5tYXNrLCBkLT5uYW1lLCB0eXBl LCBkLT5jb2RlKTsKKyAgICAgfQorIAorLSAgLyogQWRkIHRoZSBzaW1wbGUgYmluYXJ5IG9wZXJh dG9ycy4gICovCisrICAvKiBBZGQgdGhlIGJpbmFyeSBvcGVyYXRvcnMuICAqLworICAgZCA9IChz dHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiAqKSBiZGVzY18yYXJnOworICAgZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUgKGJkZXNjXzJhcmcpOyBpKyssIGQrKykKKyAgICAgeworICAgICAgIGVu dW0gbWFjaGluZV9tb2RlIG1vZGUwLCBtb2RlMSwgbW9kZTI7CisgICAgICAgdHJlZSB0eXBlOwor LSAgICAgIGJvb2wgaXNfb3ZlcmxvYWRlZCA9IGQtPmNvZGUgPj0gQUxUSVZFQ19CVUlMVElOX09W RVJMT0FERURfRklSU1QKKy0JCQkgICAmJiBkLT5jb2RlIDw9IEFMVElWRUNfQlVJTFRJTl9PVkVS TE9BREVEX0xBU1Q7CisrICAgICAgaW50IG1hc2sgPSBkLT5tYXNrOworIAorLSAgICAgIGlmIChp c19vdmVybG9hZGVkKQorLQl7CistCSAgbW9kZTAgPSBWT0lEbW9kZTsKKy0JICBtb2RlMSA9IFZP SURtb2RlOworLQkgIG1vZGUyID0gVk9JRG1vZGU7CisrICAgICAgaWYgKChtYXNrICE9IDAgJiYg KG1hc2sgJiB0YXJnZXRfZmxhZ3MpID09IDApCisrCSAgfHwgKG1hc2sgPT0gMCAmJiAhVEFSR0VU X1BBSVJFRF9GTE9BVCkpCisrCWNvbnRpbnVlOworKworKyAgICAgIGlmICgoZC0+Y29kZSA+PSBB TFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9GSVJTVAorKwkgICAmJiBkLT5jb2RlIDw9IEFMVElW RUNfQlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpCisrCSAgfHwgKGQtPmNvZGUgPj0gVlNYX0JVSUxU SU5fT1ZFUkxPQURFRF9GSVJTVAorKwkgICAgICAmJiBkLT5jb2RlIDw9IFZTWF9CVUlMVElOX09W RVJMT0FERURfTEFTVCkpCisrCXsKKysJICBpZiAoISAodHlwZSA9IG9wYXF1ZV9mdHlwZV9vcGFx dWVfb3BhcXVlKSkKKysJICAgIHR5cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZQorKwkg ICAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAob3BhcXVlX1Y0U0lfdHlwZV9ub2RlLAor KwkJCQkJICBvcGFxdWVfVjRTSV90eXBlX25vZGUsCisrCQkJCQkgIG9wYXF1ZV9WNFNJX3R5cGVf bm9kZSwKKysJCQkJCSAgTlVMTF9UUkVFKTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworLSAgICAg ICAgICBpZiAoZC0+bmFtZSA9PSAwIHx8IGQtPmljb2RlID09IENPREVfRk9SX25vdGhpbmcpCisr CSAgZW51bSBpbnNuX2NvZGUgaWNvZGUgPSBkLT5pY29kZTsKKysgICAgICAgICAgaWYgKGQtPm5h bWUgPT0gMCB8fCBpY29kZSA9PSBDT0RFX0ZPUl9ub3RoaW5nKQorIAkgICAgY29udGludWU7Cisg CistICAgICAgICAgIG1vZGUwID0gaW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzBdLm1vZGU7 CistICAgICAgICAgIG1vZGUxID0gaW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzFdLm1vZGU7 CistICAgICAgICAgIG1vZGUyID0gaW5zbl9kYXRhW2QtPmljb2RlXS5vcGVyYW5kWzJdLm1vZGU7 CistCX0KKysgICAgICAgICAgbW9kZTAgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMF0ubW9k ZTsKKysgICAgICAgICAgbW9kZTEgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMV0ubW9kZTsK KysgICAgICAgICAgbW9kZTIgPSBpbnNuX2RhdGFbaWNvZGVdLm9wZXJhbmRbMl0ubW9kZTsKKyAK Ky0gICAgICAvKiBXaGVuIGFsbCB0aHJlZSBvcGVyYW5kcyBhcmUgb2YgdGhlIHNhbWUgbW9kZS4g ICovCistICAgICAgaWYgKG1vZGUwID09IG1vZGUxICYmIG1vZGUxID09IG1vZGUyKQorLQl7Cist CSAgc3dpdGNoIChtb2RlMCkKKysJICBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgbW9kZTEgPT0g VjJTSW1vZGUgJiYgbW9kZTIgPT0gUUltb2RlKQorIAkgICAgeworLQkgICAgY2FzZSBWT0lEbW9k ZToKKy0JICAgICAgdHlwZSA9IG9wYXF1ZV9mdHlwZV9vcGFxdWVfb3BhcXVlOworLQkgICAgICBi cmVhazsKKy0JICAgIGNhc2UgVjJERm1vZGU6CistCSAgICAgIHR5cGUgPSB2MmRmX2Z0eXBlX3Yy ZGZfdjJkZjsKKy0JICAgICAgYnJlYWs7CistCSAgICBjYXNlIFY0U0Ztb2RlOgorLQkgICAgICB0 eXBlID0gdjRzZl9mdHlwZV92NHNmX3Y0c2Y7CistCSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBW NFNJbW9kZToKKy0JICAgICAgdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV92NHNpOworLQkgICAgICBi cmVhazsKKy0JICAgIGNhc2UgVjE2UUltb2RlOgorLQkgICAgICB0eXBlID0gdjE2cWlfZnR5cGVf djE2cWlfdjE2cWk7CistCSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBWOEhJbW9kZToKKy0JICAg ICAgdHlwZSA9IHY4aGlfZnR5cGVfdjhoaV92OGhpOworLQkgICAgICBicmVhazsKKy0JICAgIGNh c2UgVjJTSW1vZGU6CistCSAgICAgIHR5cGUgPSB2MnNpX2Z0eXBlX3Yyc2lfdjJzaTsKKy0JICAg ICAgYnJlYWs7CistICAgICAgICAgICAgY2FzZSBWMlNGbW9kZToKKy0gICAgICAgICAgICAgIGlm IChUQVJHRVRfUEFJUkVEX0ZMT0FUKQorLSAgICAgICAgICAgICAgICB0eXBlID0gdjJzZl9mdHlw ZV92MnNmX3Yyc2Y7CistICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHR5cGUg PSB2MnNmX2Z0eXBlX3Yyc2ZfdjJzZl9zcGU7CistCSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBT SW1vZGU6CistCSAgICAgIHR5cGUgPSBpbnRfZnR5cGVfaW50X2ludDsKKy0JICAgICAgYnJlYWs7 CistCSAgICBkZWZhdWx0OgorLQkgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CisrCSAgICAgIGlm ICghICh0eXBlID0gdjJzaV9mdHlwZV92MnNpX3FpKSkKKysJCXR5cGUgPSB2MnNpX2Z0eXBlX3Yy c2lfcWkKKysJCSAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKG9wYXF1ZV9WMlNJX3R5cGVf bm9kZSwKKysJCQkJCSAgICAgIG9wYXF1ZV9WMlNJX3R5cGVfbm9kZSwKKysJCQkJCSAgICAgIGNo YXJfdHlwZV9ub2RlLAorKwkJCQkJICAgICAgTlVMTF9UUkVFKTsKKyAJICAgIH0KKy0JfQorLQor LSAgICAgIC8qIEEgZmV3IG90aGVyIGNvbWJvcyB3ZSByZWFsbHkgZG9uJ3Qgd2FudCB0byBkbyBt YW51YWxseS4gICovCistCistICAgICAgLyogdmludCwgdmZsb2F0LCB2ZmxvYXQuICAqLworLSAg ICAgIGVsc2UgaWYgKG1vZGUwID09IFY0U0ltb2RlICYmIG1vZGUxID09IFY0U0Ztb2RlICYmIG1v ZGUyID09IFY0U0Ztb2RlKQorLQl0eXBlID0gdjRzaV9mdHlwZV92NHNmX3Y0c2Y7CistCistICAg ICAgLyogdnNob3J0LCB2Y2hhciwgdmNoYXIuICAqLworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09 IFY4SEltb2RlICYmIG1vZGUxID09IFYxNlFJbW9kZSAmJiBtb2RlMiA9PSBWMTZRSW1vZGUpCist CXR5cGUgPSB2OGhpX2Z0eXBlX3YxNnFpX3YxNnFpOworLQorLSAgICAgIC8qIHZpbnQsIHZzaG9y dCwgdnNob3J0LiAgKi8KKy0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNJbW9kZSAmJiBtb2Rl MSA9PSBWOEhJbW9kZSAmJiBtb2RlMiA9PSBWOEhJbW9kZSkKKy0JdHlwZSA9IHY0c2lfZnR5cGVf djhoaV92OGhpOworLQorLSAgICAgIC8qIHZzaG9ydCwgdmludCwgdmludC4gICovCistICAgICAg ZWxzZSBpZiAobW9kZTAgPT0gVjhISW1vZGUgJiYgbW9kZTEgPT0gVjRTSW1vZGUgJiYgbW9kZTIg PT0gVjRTSW1vZGUpCistCXR5cGUgPSB2OGhpX2Z0eXBlX3Y0c2lfdjRzaTsKKy0KKy0gICAgICAv KiB2Y2hhciwgdnNob3J0LCB2c2hvcnQuICAqLworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYx NlFJbW9kZSAmJiBtb2RlMSA9PSBWOEhJbW9kZSAmJiBtb2RlMiA9PSBWOEhJbW9kZSkKKy0JdHlw ZSA9IHYxNnFpX2Z0eXBlX3Y4aGlfdjhoaTsKKy0KKy0gICAgICAvKiB2aW50LCB2Y2hhciwgdmlu dC4gICovCistICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gVjE2 UUltb2RlICYmIG1vZGUyID09IFY0U0ltb2RlKQorLQl0eXBlID0gdjRzaV9mdHlwZV92MTZxaV92 NHNpOworLQorLSAgICAgIC8qIHZpbnQsIHZjaGFyLCB2Y2hhci4gICovCistICAgICAgZWxzZSBp ZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gVjE2UUltb2RlICYmIG1vZGUyID09IFYx NlFJbW9kZSkKKy0JdHlwZSA9IHY0c2lfZnR5cGVfdjE2cWlfdjE2cWk7CistCistICAgICAgLyog dmludCwgdnNob3J0LCB2aW50LiAgKi8KKy0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNJbW9k ZSAmJiBtb2RlMSA9PSBWOEhJbW9kZSAmJiBtb2RlMiA9PSBWNFNJbW9kZSkKKy0JdHlwZSA9IHY0 c2lfZnR5cGVfdjhoaV92NHNpOworIAorLSAgICAgIC8qIHZpbnQsIHZpbnQsIDUtYml0IGxpdGVy YWwuICAqLworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY0U0ltb2RlICYmIG1vZGUxID09IFY0 U0ltb2RlICYmIG1vZGUyID09IFFJbW9kZSkKKy0JdHlwZSA9IHY0c2lfZnR5cGVfdjRzaV9pbnQ7 CistCistICAgICAgLyogdnNob3J0LCB2c2hvcnQsIDUtYml0IGxpdGVyYWwuICAqLworLSAgICAg IGVsc2UgaWYgKG1vZGUwID09IFY4SEltb2RlICYmIG1vZGUxID09IFY4SEltb2RlICYmIG1vZGUy ID09IFFJbW9kZSkKKy0JdHlwZSA9IHY4aGlfZnR5cGVfdjhoaV9pbnQ7CistCistICAgICAgLyog dmNoYXIsIHZjaGFyLCA1LWJpdCBsaXRlcmFsLiAgKi8KKy0gICAgICBlbHNlIGlmIChtb2RlMCA9 PSBWMTZRSW1vZGUgJiYgbW9kZTEgPT0gVjE2UUltb2RlICYmIG1vZGUyID09IFFJbW9kZSkKKy0J dHlwZSA9IHYxNnFpX2Z0eXBlX3YxNnFpX2ludDsKKy0KKy0gICAgICAvKiB2ZmxvYXQsIHZpbnQs IDUtYml0IGxpdGVyYWwuICAqLworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY0U0Ztb2RlICYm IG1vZGUxID09IFY0U0ltb2RlICYmIG1vZGUyID09IFFJbW9kZSkKKy0JdHlwZSA9IHY0c2ZfZnR5 cGVfdjRzaV9pbnQ7CistCistICAgICAgLyogdmludCwgdmZsb2F0LCA1LWJpdCBsaXRlcmFsLiAg Ki8KKy0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNJbW9kZSAmJiBtb2RlMSA9PSBWNFNGbW9k ZSAmJiBtb2RlMiA9PSBRSW1vZGUpCistCXR5cGUgPSB2NHNpX2Z0eXBlX3Y0c2ZfaW50OworLQor LSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYyU0ltb2RlICYmIG1vZGUxID09IFNJbW9kZSAmJiBt b2RlMiA9PSBTSW1vZGUpCistCXR5cGUgPSB2MnNpX2Z0eXBlX2ludF9pbnQ7CistCistICAgICAg ZWxzZSBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgbW9kZTEgPT0gVjJTSW1vZGUgJiYgbW9kZTIg PT0gUUltb2RlKQorLQl0eXBlID0gdjJzaV9mdHlwZV92MnNpX2NoYXI7CistCistICAgICAgZWxz ZSBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgbW9kZTEgPT0gU0ltb2RlICYmIG1vZGUyID09IFFJ bW9kZSkKKy0JdHlwZSA9IHYyc2lfZnR5cGVfaW50X2NoYXI7CistCistICAgICAgZWxzZQorLQl7 CistCSAgLyogaW50LCB4LCB4LiAgKi8KKy0JICBnY2NfYXNzZXJ0IChtb2RlMCA9PSBTSW1vZGUp OworLQkgIHN3aXRjaCAobW9kZTEpCisrCSAgZWxzZSBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYg R0VUX01PREVfQ0xBU1MgKG1vZGUxKSA9PSBNT0RFX0lOVAorKwkJICAgJiYgbW9kZTIgPT0gUUlt b2RlKQorIAkgICAgeworLQkgICAgY2FzZSBWNFNJbW9kZToKKy0JICAgICAgdHlwZSA9IGludF9m dHlwZV92NHNpX3Y0c2k7CistCSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBWNFNGbW9kZToKKy0J ICAgICAgdHlwZSA9IGludF9mdHlwZV92NHNmX3Y0c2Y7CistCSAgICAgIGJyZWFrOworLQkgICAg Y2FzZSBWMTZRSW1vZGU6CistCSAgICAgIHR5cGUgPSBpbnRfZnR5cGVfdjE2cWlfdjE2cWk7Cist CSAgICAgIGJyZWFrOworLQkgICAgY2FzZSBWOEhJbW9kZToKKy0JICAgICAgdHlwZSA9IGludF9m dHlwZV92OGhpX3Y4aGk7CistCSAgICAgIGJyZWFrOworLQkgICAgZGVmYXVsdDoKKy0JICAgICAg Z2NjX3VucmVhY2hhYmxlICgpOworKwkgICAgICBpZiAoISAodHlwZSA9IHYyc2lfZnR5cGVfaW50 X3FpKSkKKysJCXR5cGUgPSB2MnNpX2Z0eXBlX2ludF9xaQorKwkJICA9IGJ1aWxkX2Z1bmN0aW9u X3R5cGVfbGlzdCAob3BhcXVlX1YyU0lfdHlwZV9ub2RlLAorKwkJCQkJICAgICAgaW50ZWdlcl90 eXBlX25vZGUsCisrCQkJCQkgICAgICBjaGFyX3R5cGVfbm9kZSwKKysJCQkJCSAgICAgIE5VTExf VFJFRSk7CisgCSAgICB9CisrCisrCSAgZWxzZQorKwkgICAgdHlwZSA9IGJ1aWx0aW5fZnVuY3Rp b25fdHlwZSAobW9kZTAsIG1vZGUxLCBtb2RlMiwgVk9JRG1vZGUsCisrCQkJCQkgIGQtPm5hbWUp OworIAl9CisgCisgICAgICAgZGVmX2J1aWx0aW4gKGQtPm1hc2ssIGQtPm5hbWUsIHR5cGUsIGQt PmNvZGUpOworICAgICB9CisgCistICAvKiBBZGQgdGhlIHNpbXBsZSB1bmFyeSBvcGVyYXRvcnMu ICAqLworKyAgLyogQWRkIHRoZSB1bmFyeSBvcGVyYXRvcnMuICAqLworICAgZCA9IChzdHJ1Y3Qg YnVpbHRpbl9kZXNjcmlwdGlvbiAqKSBiZGVzY18xYXJnOworICAgZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUgKGJkZXNjXzFhcmcpOyBpKyssIGQrKykKKyAgICAgeworICAgICAgIGVudW0gbWFj aGluZV9tb2RlIG1vZGUwLCBtb2RlMTsKKyAgICAgICB0cmVlIHR5cGU7CistICAgICAgYm9vbCBp c19vdmVybG9hZGVkID0gZC0+Y29kZSA+PSBBTFRJVkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9GSVJT VAorLQkJCSAgICYmIGQtPmNvZGUgPD0gQUxUSVZFQ19CVUlMVElOX09WRVJMT0FERURfTEFTVDsK KysgICAgICBpbnQgbWFzayA9IGQtPm1hc2s7CisgCistICAgICAgaWYgKGlzX292ZXJsb2FkZWQp CistICAgICAgICB7CistICAgICAgICAgIG1vZGUwID0gVk9JRG1vZGU7CistICAgICAgICAgIG1v ZGUxID0gVk9JRG1vZGU7CistICAgICAgICB9CisrICAgICAgaWYgKChtYXNrICE9IDAgJiYgKG1h c2sgJiB0YXJnZXRfZmxhZ3MpID09IDApCisrCSAgfHwgKG1hc2sgPT0gMCAmJiAhVEFSR0VUX1BB SVJFRF9GTE9BVCkpCisrCWNvbnRpbnVlOworKworKyAgICAgIGlmICgoZC0+Y29kZSA+PSBBTFRJ VkVDX0JVSUxUSU5fT1ZFUkxPQURFRF9GSVJTVAorKwkgICAmJiBkLT5jb2RlIDw9IEFMVElWRUNf QlVJTFRJTl9PVkVSTE9BREVEX0xBU1QpCisrCSAgfHwgKGQtPmNvZGUgPj0gVlNYX0JVSUxUSU5f T1ZFUkxPQURFRF9GSVJTVAorKwkgICAgICAmJiBkLT5jb2RlIDw9IFZTWF9CVUlMVElOX09WRVJM T0FERURfTEFTVCkpCisrCXsKKysJICBpZiAoISAodHlwZSA9IG9wYXF1ZV9mdHlwZV9vcGFxdWUp KQorKwkgICAgdHlwZSA9IG9wYXF1ZV9mdHlwZV9vcGFxdWUKKysJICAgICAgPSBidWlsZF9mdW5j dGlvbl90eXBlX2xpc3QgKG9wYXF1ZV9WNFNJX3R5cGVfbm9kZSwKKysJCQkJCSAgb3BhcXVlX1Y0 U0lfdHlwZV9ub2RlLAorKwkJCQkJICBOVUxMX1RSRUUpOworKwl9CisgICAgICAgZWxzZQorICAg ICAgICAgeworLSAgICAgICAgICBpZiAoZC0+bmFtZSA9PSAwIHx8IGQtPmljb2RlID09IENPREVf Rk9SX25vdGhpbmcpCisrCSAgZW51bSBpbnNuX2NvZGUgaWNvZGUgPSBkLT5pY29kZTsKKysgICAg ICAgICAgaWYgKGQtPm5hbWUgPT0gMCB8fCBpY29kZSA9PSBDT0RFX0ZPUl9ub3RoaW5nKQorIAkg ICAgY29udGludWU7CisgCistICAgICAgICAgIG1vZGUwID0gaW5zbl9kYXRhW2QtPmljb2RlXS5v cGVyYW5kWzBdLm1vZGU7CistICAgICAgICAgIG1vZGUxID0gaW5zbl9kYXRhW2QtPmljb2RlXS5v cGVyYW5kWzFdLm1vZGU7CistICAgICAgICB9CisrICAgICAgICAgIG1vZGUwID0gaW5zbl9kYXRh W2ljb2RlXS5vcGVyYW5kWzBdLm1vZGU7CisrICAgICAgICAgIG1vZGUxID0gaW5zbl9kYXRhW2lj b2RlXS5vcGVyYW5kWzFdLm1vZGU7CisgCistICAgICAgaWYgKG1vZGUwID09IFY0U0ltb2RlICYm IG1vZGUxID09IFFJbW9kZSkKKy0JdHlwZSA9IHY0c2lfZnR5cGVfaW50OworLSAgICAgIGVsc2Ug aWYgKG1vZGUwID09IFY4SEltb2RlICYmIG1vZGUxID09IFFJbW9kZSkKKy0JdHlwZSA9IHY4aGlf ZnR5cGVfaW50OworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYxNlFJbW9kZSAmJiBtb2RlMSA9 PSBRSW1vZGUpCistCXR5cGUgPSB2MTZxaV9mdHlwZV9pbnQ7CistICAgICAgZWxzZSBpZiAobW9k ZTAgPT0gVk9JRG1vZGUgJiYgbW9kZTEgPT0gVk9JRG1vZGUpCistCXR5cGUgPSBvcGFxdWVfZnR5 cGVfb3BhcXVlOworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYyREZtb2RlICYmIG1vZGUxID09 IFYyREZtb2RlKQorLQl0eXBlID0gdjJkZl9mdHlwZV92MmRmOworLSAgICAgIGVsc2UgaWYgKG1v ZGUwID09IFY0U0Ztb2RlICYmIG1vZGUxID09IFY0U0Ztb2RlKQorLQl0eXBlID0gdjRzZl9mdHlw ZV92NHNmOworLSAgICAgIGVsc2UgaWYgKG1vZGUwID09IFY4SEltb2RlICYmIG1vZGUxID09IFYx NlFJbW9kZSkKKy0JdHlwZSA9IHY4aGlfZnR5cGVfdjE2cWk7CistICAgICAgZWxzZSBpZiAobW9k ZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gVjhISW1vZGUpCistCXR5cGUgPSB2NHNpX2Z0eXBl X3Y4aGk7CistICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjJTSW1vZGUgJiYgbW9kZTEgPT0gVjJT SW1vZGUpCistCXR5cGUgPSB2MnNpX2Z0eXBlX3Yyc2k7CistICAgICAgZWxzZSBpZiAobW9kZTAg PT0gVjJTRm1vZGUgJiYgbW9kZTEgPT0gVjJTRm1vZGUpCistICAgICAgICB7CistICAgICAgICAg IGlmIChUQVJHRVRfUEFJUkVEX0ZMT0FUKQorLSAgICAgICAgICAgIHR5cGUgPSB2MnNmX2Z0eXBl X3Yyc2Y7CistICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICB0eXBlID0gdjJzZl9mdHlwZV92 MnNmX3NwZTsKKy0gICAgICAgIH0KKy0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWMlNGbW9kZSAm JiBtb2RlMSA9PSBWMlNJbW9kZSkKKy0JdHlwZSA9IHYyc2ZfZnR5cGVfdjJzaTsKKy0gICAgICBl bHNlIGlmIChtb2RlMCA9PSBWMlNJbW9kZSAmJiBtb2RlMSA9PSBWMlNGbW9kZSkKKy0JdHlwZSA9 IHYyc2lfZnR5cGVfdjJzZjsKKy0gICAgICBlbHNlIGlmIChtb2RlMCA9PSBWMlNJbW9kZSAmJiBt b2RlMSA9PSBRSW1vZGUpCistCXR5cGUgPSB2MnNpX2Z0eXBlX2NoYXI7CistICAgICAgZWxzZSBp ZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9kZTEgPT0gVjRTRm1vZGUpCistCXR5cGUgPSB2NHNp X2Z0eXBlX3Y0c2Y7CistICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTRm1vZGUgJiYgbW9kZTEg PT0gVjRTSW1vZGUpCistCXR5cGUgPSB2NHNmX2Z0eXBlX3Y0c2k7CistICAgICAgZWxzZSBpZiAo bW9kZTAgPT0gVjJESW1vZGUgJiYgbW9kZTEgPT0gVjJERm1vZGUpCistCXR5cGUgPSB2MmRpX2Z0 eXBlX3YyZGY7CistICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjJERm1vZGUgJiYgbW9kZTEgPT0g VjJESW1vZGUpCistCXR5cGUgPSB2MmRmX2Z0eXBlX3YyZGk7CistICAgICAgZWxzZQorLQlnY2Nf dW5yZWFjaGFibGUgKCk7CisrCSAgaWYgKG1vZGUwID09IFYyU0ltb2RlICYmIG1vZGUxID09IFFJ bW9kZSkKKysJICAgIHsKKysJICAgICAgaWYgKCEgKHR5cGUgPSB2MnNpX2Z0eXBlX3FpKSkKKysJ CXR5cGUgPSB2MnNpX2Z0eXBlX3FpCisrCQkgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChv cGFxdWVfVjJTSV90eXBlX25vZGUsCisrCQkJCQkgICAgICBjaGFyX3R5cGVfbm9kZSwKKysJCQkJ CSAgICAgIE5VTExfVFJFRSk7CisrCSAgICB9CisrCisrCSAgZWxzZQorKwkgICAgdHlwZSA9IGJ1 aWx0aW5fZnVuY3Rpb25fdHlwZSAobW9kZTAsIG1vZGUxLCBWT0lEbW9kZSwgVk9JRG1vZGUsCisr CQkJCQkgIGQtPm5hbWUpOworKwl9CisgCisgICAgICAgZGVmX2J1aWx0aW4gKGQtPm1hc2ssIGQt Pm5hbWUsIHR5cGUsIGQtPmNvZGUpOworICAgICB9CitAQCAtMTI2MTgsMTIgKzEyNTM4LDEyIEBA IHJzNjAwMF9zZWNvbmRhcnlfcmVsb2FkX2lubmVyIChydHggcmVnLCAKKyAJfQorIAorICAgICAg IGlmIChHRVRfQ09ERSAoYWRkcikgPT0gUExVUworLQkgICYmICghcnM2MDAwX2xlZ2l0aW1hdGVf b2Zmc2V0X2FkZHJlc3NfcCAoVEltb2RlLCBhZGRyLCB0cnVlKQorKwkgICYmICghcnM2MDAwX2xl Z2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAoVEltb2RlLCBhZGRyLCBmYWxzZSkKKyAJICAgICAg fHwgYW5kX29wMiAhPSBOVUxMX1JUWCkpCisgCXsKKyAJICBhZGRyX29wMSA9IFhFWFAgKGFkZHIs IDApOworIAkgIGFkZHJfb3AyID0gWEVYUCAoYWRkciwgMSk7CistCSAgZ2NjX2Fzc2VydCAobGVn aXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHJfb3AxLCB0cnVlKSk7CisrCSAgZ2NjX2Fz c2VydCAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHJfb3AxLCBmYWxzZSkpOwor IAorIAkgIGlmICghUkVHX1AgKGFkZHJfb3AyKQorIAkgICAgICAmJiAoR0VUX0NPREUgKGFkZHJf b3AyKSAhPSBDT05TVF9JTlQKK0BAIC0xMjY0Miw4ICsxMjU2Miw4IEBAIHJzNjAwMF9zZWNvbmRh cnlfcmVsb2FkX2lubmVyIChydHggcmVnLCAKKyAJICBhZGRyID0gc2NyYXRjaF9vcl9wcmVtb2Rp Znk7CisgCSAgc2NyYXRjaF9vcl9wcmVtb2RpZnkgPSBzY3JhdGNoOworIAl9CistICAgICAgZWxz ZSBpZiAoIWxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChhZGRyLCB0cnVlKQorLQkgICAg ICAgJiYgIXJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AgKFRJbW9kZSwgYWRkciwg dHJ1ZSkpCisrICAgICAgZWxzZSBpZiAoIWxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wIChh ZGRyLCBmYWxzZSkKKysJICAgICAgICYmICFyczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVz c19wIChUSW1vZGUsIGFkZHIsIGZhbHNlKSkKKyAJeworIAkgIHJzNjAwMF9lbWl0X21vdmUgKHNj cmF0Y2hfb3JfcHJlbW9kaWZ5LCBhZGRyLCBQbW9kZSk7CisgCSAgYWRkciA9IHNjcmF0Y2hfb3Jf cHJlbW9kaWZ5OworQEAgLTEyNjcyLDI0ICsxMjU5MiwyNCBAQCByczYwMDBfc2Vjb25kYXJ5X3Jl bG9hZF9pbm5lciAocnR4IHJlZywgCisgICAgICAgaWYgKEdFVF9DT0RFIChhZGRyKSA9PSBQUkVf TU9ESUZZCisgCSAgJiYgKCFWRUNUT1JfTUVNX1ZTWF9QIChtb2RlKQorIAkgICAgICB8fCBhbmRf b3AyICE9IE5VTExfUlRYCistCSAgICAgIHx8ICFsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19w IChYRVhQIChhZGRyLCAxKSwgdHJ1ZSkpKQorKwkgICAgICB8fCAhbGVnaXRpbWF0ZV9pbmRleGVk X2FkZHJlc3NfcCAoWEVYUCAoYWRkciwgMSksIGZhbHNlKSkpCisgCXsKKyAJICBzY3JhdGNoX29y X3ByZW1vZGlmeSA9IFhFWFAgKGFkZHIsIDApOworIAkgIGdjY19hc3NlcnQgKGxlZ2l0aW1hdGVf aW5kaXJlY3RfYWRkcmVzc19wIChzY3JhdGNoX29yX3ByZW1vZGlmeSwKKy0JCQkJCQkgICAgIHRy dWUpKTsKKysJCQkJCQkgICAgIGZhbHNlKSk7CisgCSAgZ2NjX2Fzc2VydCAoR0VUX0NPREUgKFhF WFAgKGFkZHIsIDEpKSA9PSBQTFVTKTsKKyAJICBhZGRyID0gWEVYUCAoYWRkciwgMSk7CisgCX0K KyAKKy0gICAgICBpZiAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKGFkZHIsIHRydWUp CS8qIHJlZyAqLworLQkgIHx8IGxlZ2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3AgKGFkZHIsIHRy dWUpCS8qIHJlZytyZWcgKi8KKysgICAgICBpZiAobGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNz X3AgKGFkZHIsIGZhbHNlKQkvKiByZWcgKi8KKysJICB8fCBsZWdpdGltYXRlX2luZGV4ZWRfYWRk cmVzc19wIChhZGRyLCBmYWxzZSkJLyogcmVnK3JlZyAqLworIAkgIHx8IEdFVF9DT0RFIChhZGRy KSA9PSBQUkVfTU9ESUZZCQkvKiBWU1ggcHJlLW1vZGlmeSAqLworIAkgIHx8IEdFVF9DT0RFIChh ZGRyKSA9PSBBTkQJCQkvKiBBbHRpdmVjIG1lbW9yeSAqLworIAkgIHx8IChyY2xhc3MgPT0gRkxP QVRfUkVHUwkJCS8qIGxlZ2FjeSBmbG9hdCBtZW0gKi8KKyAJICAgICAgJiYgR0VUX01PREVfU0la RSAobW9kZSkgPT0gOAorIAkgICAgICAmJiBhbmRfb3AyID09IE5VTExfUlRYCisgCSAgICAgICYm IHNjcmF0Y2hfb3JfcHJlbW9kaWZ5ID09IHNjcmF0Y2gKKy0JICAgICAgJiYgcnM2MDAwX2xlZ2l0 aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAobW9kZSwgYWRkciwgdHJ1ZSkpKQorKwkgICAgICAmJiBy czYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChtb2RlLCBhZGRyLCBmYWxzZSkpKQor IAk7CisgCisgICAgICAgZWxzZSBpZiAoR0VUX0NPREUgKGFkZHIpID09IFBMVVMpCitAQCAtMTI3 MDksNyArMTI2MjksNyBAQCByczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9pbm5lciAocnR4IHJlZywg CisgCX0KKyAKKyAgICAgICBlbHNlIGlmIChHRVRfQ09ERSAoYWRkcikgPT0gU1lNQk9MX1JFRiB8 fCBHRVRfQ09ERSAoYWRkcikgPT0gQ09OU1QKKy0JICAgICAgIHx8IEdFVF9DT0RFIChhZGRyKSA9 PSBDT05TVF9JTlQpCisrCSAgICAgICB8fCBHRVRfQ09ERSAoYWRkcikgPT0gQ09OU1RfSU5UIHx8 IFJFR19QIChhZGRyKSkKKyAJeworIAkgIHJzNjAwMF9lbWl0X21vdmUgKHNjcmF0Y2hfb3JfcHJl bW9kaWZ5LCBhZGRyLCBQbW9kZSk7CisgCSAgYWRkciA9IHNjcmF0Y2hfb3JfcHJlbW9kaWZ5Owor QEAgLTEyNzQxLDcgKzEyNjYxLDcgQEAgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIgKHJ0 eCByZWcsIAorICAgICAgYW5kaS4gaW5zdHJ1Y3Rpb24uICAqLworICAgaWYgKGFuZF9vcDIgIT0g TlVMTF9SVFgpCisgICAgIHsKKy0gICAgICBpZiAoISBsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJl c3NfcCAoYWRkciwgdHJ1ZSkpCisrICAgICAgaWYgKCEgbGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRy ZXNzX3AgKGFkZHIsIGZhbHNlKSkKKyAJeworIAkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZP SURtb2RlLCBzY3JhdGNoLCBhZGRyKSk7CisgCSAgYWRkciA9IHNjcmF0Y2g7CitAQCAtMTI3NzYs NiArMTI2OTYsMjYgQEAgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfaW5uZXIgKHJ0eCByZWcsIAor ICAgcmV0dXJuOworIH0KKyAKKysvKiBUYXJnZXQgaG9vayB0byByZXR1cm4gdGhlIGNvdmVyIGNs YXNzZXMgZm9yIEludGVncmF0ZWQgUmVnaXN0ZXIgQWxsb2NhdG9yLgorKyAgIENvdmVyIGNsYXNz ZXMgaXMgYSBzZXQgb2Ygbm9uLWludGVyc2VjdGVkIHJlZ2lzdGVyIGNsYXNzZXMgY292ZXJpbmcg YWxsIGhhcmQKKysgICByZWdpc3RlcnMgdXNlZCBmb3IgcmVnaXN0ZXIgYWxsb2NhdGlvbiBwdXJw b3NlLiAgQW55IG1vdmUgYmV0d2VlbiB0d28KKysgICByZWdpc3RlcnMgb2YgYSBjb3ZlciBjbGFz cyBzaG91bGQgYmUgY2hlYXBlciB0aGFuIGxvYWQgb3Igc3RvcmUgb2YgdGhlCisrICAgcmVnaXN0 ZXJzLiAgVGhlIHZhbHVlIGlzIGFycmF5IG9mIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBMSU1fUkVH X0NMQVNTRVMgdXNlZAorKyAgIGFzIHRoZSBlbmQgbWFya2VyLgorKworKyAgIFdlIG5lZWQgdHdv IElSQV9DT1ZFUl9DTEFTU0VTLCBvbmUgZm9yIHByZS1WU1gsIGFuZCB0aGUgb3RoZXIgZm9yIFZT WCB0bworKyAgIGFjY291bnQgZm9yIHRoZSBBbHRpdmVjIGFuZCBGbG9hdGluZyByZWdpc3RlcnMg YmVpbmcgc3Vic2V0cyBvZiB0aGUgVlNYCisrICAgcmVnaXN0ZXIgc2V0IHVuZGVyIFZTWCwgYnV0 IGRpc3RpbmN0IHJlZ2lzdGVyIHNldHMgb24gcHJlLVZTWCBtYWNoaW5lcy4gICovCisrCisrc3Rh dGljIGNvbnN0IGVudW0gcmVnX2NsYXNzICoKKytyczYwMDBfaXJhX2NvdmVyX2NsYXNzZXMgKHZv aWQpCisreworKyAgc3RhdGljIGNvbnN0IGVudW0gcmVnX2NsYXNzIGNvdmVyX3ByZV92c3hbXSA9 IElSQV9DT1ZFUl9DTEFTU0VTX1BSRV9WU1g7CisrICBzdGF0aWMgY29uc3QgZW51bSByZWdfY2xh c3MgY292ZXJfdnN4W10gICAgID0gSVJBX0NPVkVSX0NMQVNTRVNfVlNYOworKworKyAgcmV0dXJu IChUQVJHRVRfVlNYKSA/IGNvdmVyX3ZzeCA6IGNvdmVyX3ByZV92c3g7CisrfQorKworIC8qIEFs bG9jYXRlIGEgNjQtYml0IHN0YWNrIHNsb3QgdG8gYmUgdXNlZCBmb3IgY29weWluZyBTRG1vZGUK KyAgICB2YWx1ZXMgdGhyb3VnaCBpZiB0aGlzIGZ1bmN0aW9uIGhhcyBhbnkgU0Rtb2RlIHJlZmVy ZW5jZXMuICAqLworIAorQEAgLTEyODQ5LDEzICsxMjc4OSwxNSBAQCByczYwMDBfcHJlZmVycmVk X3JlbG9hZF9jbGFzcyAocnR4IHgsIGVuCisgICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlID0gR0VU X01PREUgKHgpOworICAgZW51bSByZWdfY2xhc3MgcmV0OworIAorLSAgaWYgKFRBUkdFVF9WU1gg JiYgVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSAmJiB4ID09IENPTlNUMF9SVFggKG1vZGUpCistICAg ICAgJiYgVlNYX1JFR19DTEFTU19QIChyY2xhc3MpKQorKyAgaWYgKFRBUkdFVF9WU1gKKysgICAg ICAmJiAoVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSB8fCBtb2RlID09IFRJbW9kZSkKKysgICAgICAm JiB4ID09IENPTlNUMF9SVFggKG1vZGUpICYmIFZTWF9SRUdfQ0xBU1NfUCAocmNsYXNzKSkKKyAg ICAgcmV0ID0gcmNsYXNzOworIAorLSAgZWxzZSBpZiAoVEFSR0VUX0FMVElWRUMgJiYgQUxUSVZF Q19WRUNUT1JfTU9ERSAobW9kZSkKKy0JICAgJiYgcmNsYXNzID09IEFMVElWRUNfUkVHUyAmJiBl YXN5X3ZlY3Rvcl9jb25zdGFudCAoeCwgbW9kZSkpCistICAgIHJldCA9IHJjbGFzczsKKysgIGVs c2UgaWYgKFRBUkdFVF9BTFRJVkVDICYmIChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSB8fCBt b2RlID09IFRJbW9kZSkKKysJICAgJiYgKHJjbGFzcyA9PSBBTFRJVkVDX1JFR1MgfHwgcmNsYXNz ID09IFZTWF9SRUdTKQorKwkgICAmJiBlYXN5X3ZlY3Rvcl9jb25zdGFudCAoeCwgbW9kZSkpCisr ICAgIHJldCA9IEFMVElWRUNfUkVHUzsKKyAKKyAgIGVsc2UgaWYgKENPTlNUQU5UX1AgKHgpICYm IHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChyY2xhc3MsIEZMT0FUX1JFR1MpKQorICAgICByZXQg PSBOT19SRUdTOworQEAgLTEzMDc0LDggKzEzMDE2LDEwIEBAIHJzNjAwMF9jYW5ub3RfY2hhbmdl X21vZGVfY2xhc3MgKGVudW0gbWEKKyAJCSAgICAgICB8fCAoKCh0bykgPT0gVERtb2RlKSArICgo ZnJvbSkgPT0gVERtb2RlKSkgPT0gMQorIAkJICAgICAgIHx8ICgoKHRvKSA9PSBESW1vZGUpICsg KChmcm9tKSA9PSBESW1vZGUpKSA9PSAxKSkKKyAJCSAgfHwgKFRBUkdFVF9WU1gKKy0JCSAgICAg ICYmIChWU1hfVkVDVE9SX01PREUgKGZyb20pICsgVlNYX1ZFQ1RPUl9NT0RFICh0bykpID09IDEp CisrCQkgICAgICAmJiAoVlNYX01PVkVfTU9ERSAoZnJvbSkgKyBWU1hfTU9WRV9NT0RFICh0bykp ID09IDEKKysJCSAgICAgICYmIFZTWF9SRUdfQ0xBU1NfUCAocmNsYXNzKSkKKyAJCSAgfHwgKFRB UkdFVF9BTFRJVkVDCisrCQkgICAgICAmJiByY2xhc3MgPT0gQUxUSVZFQ19SRUdTCisgCQkgICAg ICAmJiAoQUxUSVZFQ19WRUNUT1JfTU9ERSAoZnJvbSkKKyAJCQkgICsgQUxUSVZFQ19WRUNUT1Jf TU9ERSAodG8pKSA9PSAxKQorIAkJICB8fCAoVEFSR0VUX1NQRQorQEAgLTE0OTUzLDcgKzE0ODk3 LDcgQEAgcnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAocnR4IGRlc3QsIAorICAgaWYgKCFt YXNrKQorICAgICByZXR1cm4gMDsKKyAKKy0gIGlmICgoVEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9S X01PVkVfTU9ERSAoZGVzdF9tb2RlKSkKKysgIGlmICgoVEFSR0VUX1ZTWCAmJiBWU1hfTU9WRV9N T0RFIChkZXN0X21vZGUpKQorICAgICAgIHx8IChUQVJHRVRfQUxUSVZFQyAmJiBBTFRJVkVDX1ZF Q1RPUl9NT0RFIChkZXN0X21vZGUpKSkKKyAgICAgeworICAgICAgIHJ0eCBjb25kMiA9IGdlbl9y dHhfZm10X2VlIChORSwgVk9JRG1vZGUsIG1hc2ssIGNvbnN0MF9ydHgpOworQEAgLTIyMDQ0LDcg KzIxOTg4LDggQEAgcnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0ZSAodHJlZSAqbgorICAg bW9kZSA9IFRZUEVfTU9ERSAodHlwZSk7CisgCisgICAvKiBDaGVjayBmb3IgaW52YWxpZCBBbHRp VmVjIHR5cGUgcXVhbGlmaWVycy4gICovCistICBpZiAodHlwZSA9PSBsb25nX3Vuc2lnbmVkX3R5 cGVfbm9kZSB8fCB0eXBlID09IGxvbmdfaW50ZWdlcl90eXBlX25vZGUpCisrICBpZiAoKHR5cGUg PT0gbG9uZ191bnNpZ25lZF90eXBlX25vZGUgfHwgdHlwZSA9PSBsb25nX2ludGVnZXJfdHlwZV9u b2RlKQorKyAgICAgICYmICFUQVJHRVRfVlNYKQorICAgICB7CisgICAgIGlmIChUQVJHRVRfNjRC SVQpCisgICAgICAgZXJyb3IgKCJ1c2Ugb2YgJTxsb25nJT4gaW4gQWx0aVZlYyB0eXBlcyBpcyBp bnZhbGlkIGZvciA2NC1iaXQgY29kZSIpOworQEAgLTIyMDgyLDYgKzIyMDI3LDcgQEAgcnM2MDAw X2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0ZSAodHJlZSAqbgorIAkgIGJyZWFrOworIAljYXNlIFNG bW9kZTogcmVzdWx0ID0gVjRTRl90eXBlX25vZGU7IGJyZWFrOworIAljYXNlIERGbW9kZTogcmVz dWx0ID0gVjJERl90eXBlX25vZGU7IGJyZWFrOworKwljYXNlIERJbW9kZTogcmVzdWx0ID0gVjJE SV90eXBlX25vZGU7IGJyZWFrOworIAkgIC8qIElmIHRoZSB1c2VyIHNheXMgJ3ZlY3RvciBpbnQg Ym9vbCcsIHdlIG1heSBiZSBoYW5kZWQgdGhlICdib29sJworIAkgICAgIGF0dHJpYnV0ZSBfYmVm b3JlXyB0aGUgJ3ZlY3RvcicgYXR0cmlidXRlLCBhbmQgc28gc2VsZWN0IHRoZQorIAkgICAgIHBy b3BlciB0eXBlIGluIHRoZSAnYicgY2FzZSBiZWxvdy4gICovCitAQCAtMjIwOTMsNiArMjIwMzks NyBAQCByczYwMDBfaGFuZGxlX2FsdGl2ZWNfYXR0cmlidXRlICh0cmVlICpuCisgICAgIGNhc2Ug J2InOgorICAgICAgIHN3aXRjaCAobW9kZSkKKyAJeworKwljYXNlIERJbW9kZTogY2FzZSBWMkRJ bW9kZTogcmVzdWx0ID0gYm9vbF9WMkRJX3R5cGVfbm9kZTsgYnJlYWs7CisgCWNhc2UgU0ltb2Rl OiBjYXNlIFY0U0ltb2RlOiByZXN1bHQgPSBib29sX1Y0U0lfdHlwZV9ub2RlOyBicmVhazsKKyAJ Y2FzZSBISW1vZGU6IGNhc2UgVjhISW1vZGU6IHJlc3VsdCA9IGJvb2xfVjhISV90eXBlX25vZGU7 IGJyZWFrOworIAljYXNlIFFJbW9kZTogY2FzZSBWMTZRSW1vZGU6IHJlc3VsdCA9IGJvb2xfVjE2 UUlfdHlwZV9ub2RlOworQEAgLTIyMTM3LDYgKzIyMDg0LDcgQEAgcnM2MDAwX21hbmdsZV90eXBl IChjb25zdF90cmVlIHR5cGUpCisgICBpZiAodHlwZSA9PSBib29sX3Nob3J0X3R5cGVfbm9kZSkg cmV0dXJuICJVNl9fYm9vbHMiOworICAgaWYgKHR5cGUgPT0gcGl4ZWxfdHlwZV9ub2RlKSByZXR1 cm4gInU3X19waXhlbCI7CisgICBpZiAodHlwZSA9PSBib29sX2ludF90eXBlX25vZGUpIHJldHVy biAiVTZfX2Jvb2xpIjsKKysgIGlmICh0eXBlID09IGJvb2xfbG9uZ190eXBlX25vZGUpIHJldHVy biAiVTZfX2Jvb2xsIjsKKyAKKyAgIC8qIE1hbmdsZSBJQk0gZXh0ZW5kZWQgZmxvYXQgbG9uZyBk b3VibGUgYXMgYGcnIChfX2Zsb2F0MTI4KSBvbgorICAgICAgcG93ZXJwYyotbGludXggd2hlcmUg bG9uZy1kb3VibGUtNjQgcHJldmlvdXNseSB3YXMgdGhlIGRlZmF1bHQuICAqLworQEAgLTIzNjQ3 LDYgKzIzNTk1LDggQEAgaW50CisgcnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAoZW51bSBtYWNo aW5lX21vZGUgbW9kZSwKKyAJCQkgICBlbnVtIHJlZ19jbGFzcyBmcm9tLCBlbnVtIHJlZ19jbGFz cyB0bykKKyB7CisrICBpbnQgcmV0OworKworICAgLyogIE1vdmVzIGZyb20vdG8gR0VORVJBTF9S RUdTLiAgKi8KKyAgIGlmIChyZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAodG8sIEdFTkVSQUxfUkVH UykKKyAgICAgICB8fCByZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAoZnJvbSwgR0VORVJBTF9SRUdT KSkKK0BAIC0yMzY1NSwzOSArMjM2MDUsNDcgQEAgcnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAo ZW51bSBtYWNoaW5lXworIAlmcm9tID0gdG87CisgCisgICAgICAgaWYgKGZyb20gPT0gRkxPQVRf UkVHUyB8fCBmcm9tID09IEFMVElWRUNfUkVHUyB8fCBmcm9tID09IFZTWF9SRUdTKQorLQlyZXR1 cm4gKHJzNjAwMF9tZW1vcnlfbW92ZV9jb3N0IChtb2RlLCBmcm9tLCAwKQorLQkJKyByczYwMDBf bWVtb3J5X21vdmVfY29zdCAobW9kZSwgR0VORVJBTF9SRUdTLCAwKSk7CisrCXJldCA9IChyczYw MDBfbWVtb3J5X21vdmVfY29zdCAobW9kZSwgZnJvbSwgMCkKKysJICAgICAgICsgcnM2MDAwX21l bW9yeV9tb3ZlX2Nvc3QgKG1vZGUsIEdFTkVSQUxfUkVHUywgMCkpOworIAorICAgICAgIC8qIEl0 J3MgbW9yZSBleHBlbnNpdmUgdG8gbW92ZSBDUl9SRUdTIHRoYW4gQ1IwX1JFR1MgYmVjYXVzZSBv ZiB0aGUKKyAJIHNoaWZ0LiAgKi8KKyAgICAgICBlbHNlIGlmIChmcm9tID09IENSX1JFR1MpCist CXJldHVybiA0OworKwlyZXQgPSA0OworIAorICAgICAgIC8qIFBvd2VyNiBoYXMgc2xvd2VyIExS L0NUUiBtb3ZlcyBzbyBtYWtlIHRoZW0gbW9yZSBleHBlbnNpdmUgdGhhbgorIAkgbWVtb3J5IGlu IG9yZGVyIHRvIGJpYXMgc3BpbGxzIHRvIG1lbW9yeSAuKi8KKyAgICAgICBlbHNlIGlmIChyczYw MDBfY3B1ID09IFBST0NFU1NPUl9QT1dFUjYKKyAJICAgICAgICYmIHJlZ19jbGFzc2VzX2ludGVy c2VjdF9wIChmcm9tLCBMSU5LX09SX0NUUl9SRUdTKSkKKy0gICAgICAgIHJldHVybiA2ICogaGFy ZF9yZWdub19ucmVnc1swXVttb2RlXTsKKysgICAgICAgIHJldCA9IDYgKiBoYXJkX3JlZ25vX25y ZWdzWzBdW21vZGVdOworIAorICAgICAgIGVsc2UKKyAJLyogQSBtb3ZlIHdpbGwgY29zdCBvbmUg aW5zdHJ1Y3Rpb24gcGVyIEdQUiBtb3ZlZC4gICovCistCXJldHVybiAyICogaGFyZF9yZWdub19u cmVnc1swXVttb2RlXTsKKysJcmV0ID0gMiAqIGhhcmRfcmVnbm9fbnJlZ3NbMF1bbW9kZV07Cisg ICAgIH0KKyAKKyAgIC8qIElmIHdlIGhhdmUgVlNYLCB3ZSBjYW4gZWFzaWx5IG1vdmUgYmV0d2Vl biBGUFIgb3IgQWx0aXZlYyByZWdpc3RlcnMuICAqLworLSAgZWxzZSBpZiAoVEFSR0VUX1ZTWAor LQkgICAmJiAoKGZyb20gPT0gVlNYX1JFR1MgfHwgZnJvbSA9PSBGTE9BVF9SRUdTIHx8IGZyb20g PT0gQUxUSVZFQ19SRUdTKQorLQkgICAgICAgfHwgKHRvID09IFZTWF9SRUdTIHx8IHRvID09IEZM T0FUX1JFR1MgfHwgdG8gPT0gQUxUSVZFQ19SRUdTKSkpCistICAgIHJldHVybiAyOworKyAgZWxz ZSBpZiAoVkVDVE9SX1VOSVRfVlNYX1AgKG1vZGUpCisrCSAgICYmIHJlZ19jbGFzc2VzX2ludGVy c2VjdF9wICh0bywgVlNYX1JFR1MpCisrCSAgICYmIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChm cm9tLCBWU1hfUkVHUykpCisrICAgIHJldCA9IDIgKiBoYXJkX3JlZ25vX25yZWdzWzMyXVttb2Rl XTsKKyAKKyAgIC8qIE1vdmluZyBiZXR3ZWVuIHR3byBzaW1pbGFyIHJlZ2lzdGVycyBpcyBqdXN0 IG9uZSBpbnN0cnVjdGlvbi4gICovCisgICBlbHNlIGlmIChyZWdfY2xhc3Nlc19pbnRlcnNlY3Rf cCAodG8sIGZyb20pKQorLSAgICByZXR1cm4gKG1vZGUgPT0gVEZtb2RlIHx8IG1vZGUgPT0gVERt b2RlKSA/IDQgOiAyOworKyAgICByZXQgPSAobW9kZSA9PSBURm1vZGUgfHwgbW9kZSA9PSBURG1v ZGUpID8gNCA6IDI7CisgCisgICAvKiBFdmVyeXRoaW5nIGVsc2UgaGFzIHRvIGdvIHRocm91Z2gg R0VORVJBTF9SRUdTLiAgKi8KKyAgIGVsc2UKKy0gICAgcmV0dXJuIChyczYwMDBfcmVnaXN0ZXJf bW92ZV9jb3N0IChtb2RlLCBHRU5FUkFMX1JFR1MsIHRvKQorLQkgICAgKyByczYwMDBfcmVnaXN0 ZXJfbW92ZV9jb3N0IChtb2RlLCBmcm9tLCBHRU5FUkFMX1JFR1MpKTsKKysgICAgcmV0ID0gKHJz NjAwMF9yZWdpc3Rlcl9tb3ZlX2Nvc3QgKG1vZGUsIEdFTkVSQUxfUkVHUywgdG8pCisrCSAgICsg cnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAobW9kZSwgZnJvbSwgR0VORVJBTF9SRUdTKSk7Cisr CisrICBpZiAoVEFSR0VUX0RFQlVHX0NPU1QpCisrICAgIGZwcmludGYgKHN0ZGVyciwKKysJICAg ICAicnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdDosIHJldD0lZCwgbW9kZT0lcywgZnJvbT0lcywg dG89JXNcbiIsCisrCSAgICAgcmV0LCBHRVRfTU9ERV9OQU1FIChtb2RlKSwgcmVnX2NsYXNzX25h bWVzW2Zyb21dLAorKwkgICAgIHJlZ19jbGFzc19uYW1lc1t0b10pOworKworKyAgcmV0dXJuIHJl dDsKKyB9CisgCisgLyogQSBDIGV4cHJlc3Npb25zIHJldHVybmluZyB0aGUgY29zdCBvZiBtb3Zp bmcgZGF0YSBvZiBNT0RFIGZyb20gYSByZWdpc3RlciB0bworQEAgLTIzNjk3LDE0ICsyMzY1NSwy MyBAQCBpbnQKKyByczYwMDBfbWVtb3J5X21vdmVfY29zdCAoZW51bSBtYWNoaW5lX21vZGUgbW9k ZSwgZW51bSByZWdfY2xhc3MgcmNsYXNzLAorIAkJCSBpbnQgaW4gQVRUUklCVVRFX1VOVVNFRCkK KyB7CisrICBpbnQgcmV0OworKworICAgaWYgKHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChyY2xh c3MsIEdFTkVSQUxfUkVHUykpCistICAgIHJldHVybiA0ICogaGFyZF9yZWdub19ucmVnc1swXVtt b2RlXTsKKysgICAgcmV0ID0gNCAqIGhhcmRfcmVnbm9fbnJlZ3NbMF1bbW9kZV07CisgICBlbHNl IGlmIChyZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAocmNsYXNzLCBGTE9BVF9SRUdTKSkKKy0gICAg cmV0dXJuIDQgKiBoYXJkX3JlZ25vX25yZWdzWzMyXVttb2RlXTsKKysgICAgcmV0ID0gNCAqIGhh cmRfcmVnbm9fbnJlZ3NbMzJdW21vZGVdOworICAgZWxzZSBpZiAocmVnX2NsYXNzZXNfaW50ZXJz ZWN0X3AgKHJjbGFzcywgQUxUSVZFQ19SRUdTKSkKKy0gICAgcmV0dXJuIDQgKiBoYXJkX3JlZ25v X25yZWdzW0ZJUlNUX0FMVElWRUNfUkVHTk9dW21vZGVdOworKyAgICByZXQgPSA0ICogaGFyZF9y ZWdub19ucmVnc1tGSVJTVF9BTFRJVkVDX1JFR05PXVttb2RlXTsKKyAgIGVsc2UKKy0gICAgcmV0 dXJuIDQgKyByczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChtb2RlLCByY2xhc3MsIEdFTkVSQUxf UkVHUyk7CisrICAgIHJldCA9IDQgKyByczYwMDBfcmVnaXN0ZXJfbW92ZV9jb3N0IChtb2RlLCBy Y2xhc3MsIEdFTkVSQUxfUkVHUyk7CisrCisrICBpZiAoVEFSR0VUX0RFQlVHX0NPU1QpCisrICAg IGZwcmludGYgKHN0ZGVyciwKKysJICAgICAicnM2MDAwX21lbW9yeV9tb3ZlX2Nvc3Q6IHJldD0l ZCwgbW9kZT0lcywgcmNsYXNzPSVzLCBpbj0lZFxuIiwKKysJICAgICByZXQsIEdFVF9NT0RFX05B TUUgKG1vZGUpLCByZWdfY2xhc3NfbmFtZXNbcmNsYXNzXSwgaW4pOworKworKyAgcmV0dXJuIHJl dDsKKyB9CisgCisgLyogUmV0dXJucyBhIGNvZGUgZm9yIGEgdGFyZ2V0LXNwZWNpZmljIGJ1aWx0 aW4gdGhhdCBpbXBsZW1lbnRzCitAQCAtMjQ0MjQsNCArMjQzOTEsMjQgQEAgcnM2MDAwX2ZpbmFs X3ByZXNjYW5faW5zbiAocnR4IGluc24sIHJ0eAorICAgICB9CisgfQorIAorKy8qIFJldHVybiB0 cnVlIGlmIHRoZSBmdW5jdGlvbiBoYXMgYW4gaW5kaXJlY3QganVtcCBvciBhIHRhYmxlIGp1bXAu ICBUaGUgY29tcGlsZXIKKysgICBwcmVmZXJzIHRoZSBjdHIgcmVnaXN0ZXIgZm9yIHN1Y2gganVt cHMsIHdoaWNoIGludGVyZmVyZXMgd2l0aCB1c2luZyB0aGUgZGVjcmVtZW50CisrICAgY3RyIHJl Z2lzdGVyIGFuZCBicmFuY2guICAqLworKworK2Jvb2wKKytyczYwMDBfaGFzX2luZGlyZWN0X2p1 bXBfcCAodm9pZCkKKyt7CisrICBnY2NfYXNzZXJ0IChjZnVuICYmIGNmdW4tPm1hY2hpbmUpOwor KyAgcmV0dXJuIGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2p1bXBfcDsKKyt9CisrCisrLyogUmVt ZW1iZXIgd2hlbiB3ZSd2ZSBnZW5lcmF0ZWQgYW4gaW5kaXJlY3QganVtcC4gICovCisrCisrdm9p ZAorK3JzNjAwMF9zZXRfaW5kaXJlY3RfanVtcCAodm9pZCkKKyt7CisrICBnY2NfYXNzZXJ0IChj ZnVuICYmIGNmdW4tPm1hY2hpbmUpOworKyAgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfanVtcF9w ID0gdHJ1ZTsKKyt9CisrCisgI2luY2x1ZGUgImd0LXJzNjAwMC5oIgorLS0tIGdjYy9jb25maWcv cnM2MDAwL3ZzeC5tZAkocmV2aXNpb24gMTQ2MTE5KQorKysrIGdjYy9jb25maWcvcnM2MDAwL3Zz eC5tZAkocmV2aXNpb24gMTQ2Nzk4KQorQEAgLTIyLDEyICsyMiwyMiBAQAorIDs7IEl0ZXJhdG9y IGZvciBib3RoIHNjYWxhciBhbmQgdmVjdG9yIGZsb2F0aW5nIHBvaW50IHR5cGVzIHN1cHBvcnRl ZCBieSBWU1gKKyAoZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNYX0IgW0RGIFY0U0YgVjJERl0pCisg CisrOzsgSXRlcmF0b3IgZm9yIHRoZSAyIDY0LWJpdCB2ZWN0b3IgdHlwZXMKKysoZGVmaW5lX21v ZGVfaXRlcmF0b3IgVlNYX0QgW1YyREYgVjJESV0pCisrCisrOzsgSXRlcmF0b3IgZm9yIHRoZSAy IDMyLWJpdCB2ZWN0b3IgdHlwZXMKKysoZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNYX1cgW1Y0U0Yg VjRTSV0pCisrCisgOzsgSXRlcmF0b3IgZm9yIHZlY3RvciBmbG9hdGluZyBwb2ludCB0eXBlcyBz dXBwb3J0ZWQgYnkgVlNYCisgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZTWF9GIFtWNFNGIFYyREZd KQorIAorIDs7IEl0ZXJhdG9yIGZvciBsb2dpY2FsIHR5cGVzIHN1cHBvcnRlZCBieSBWU1gKKyAo ZGVmaW5lX21vZGVfaXRlcmF0b3IgVlNYX0wgW1YxNlFJIFY4SEkgVjRTSSBWMkRJIFY0U0YgVjJE RiBUSV0pCisgCisrOzsgSXRlcmF0b3IgZm9yIG1lbW9yeSBtb3ZlLiAgSGFuZGxlIFRJbW9kZSBz cGVjaWFsbHkgdG8gYWxsb3cKKys7OyBpdCB0byB1c2UgZ3BycyBhcyB3ZWxsIGFzIHZzeCByZWdp c3RlcnMuCisrKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZTWF9NIFtWMTZRSSBWOEhJIFY0U0kgVjJE SSBWNFNGIFYyREZdKQorKworIDs7IEl0ZXJhdG9yIGZvciB0eXBlcyBmb3IgbG9hZC9zdG9yZSB3 aXRoIHVwZGF0ZQorIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWU1hfVSBbVjE2UUkgVjhISSBWNFNJ IFYyREkgVjRTRiBWMkRGIFRJIERGXSkKKyAKK0BAIC00OSw5ICs1OSwxMCBAQCAoZGVmaW5lX21v ZGVfYXR0ciBWU3MJWyhWMTZRSSAic3AiKQorIAkJCSAoVjJERiAgImRwIikKKyAJCQkgKFYyREkg ICJkcCIpCisgCQkJIChERiAgICAiZHAiKQorKwkJCSAoU0YJInNwIikKKyAJCQkgKFRJICAgICJz cCIpXSkKKyAKKy07OyBNYXAgaW50byB0aGUgcmVnaXN0ZXIgY2xhc3MgdXNlZAorKzs7IE1hcCB0 aGUgcmVnaXN0ZXIgY2xhc3MgdXNlZAorIChkZWZpbmVfbW9kZV9hdHRyIFZTcglbKFYxNlFJICJ2 IikKKyAJCQkgKFY4SEkgICJ2IikKKyAJCQkgKFY0U0kgICJ2IikKK0BAIC01OSw5ICs3MCwxMCBA QCAoZGVmaW5lX21vZGVfYXR0ciBWU3IJWyhWMTZRSSAidiIpCisgCQkJIChWMkRJICAid2QiKQor IAkJCSAoVjJERiAgIndkIikKKyAJCQkgKERGICAgICJ3cyIpCisrCQkJIChTRgkiZiIpCisgCQkJ IChUSSAgICAid2QiKV0pCisgCistOzsgTWFwIGludG8gdGhlIHJlZ2lzdGVyIGNsYXNzIHVzZWQg Zm9yIGZsb2F0PC0+aW50IGNvbnZlcnNpb25zCisrOzsgTWFwIHRoZSByZWdpc3RlciBjbGFzcyB1 c2VkIGZvciBmbG9hdDwtPmludCBjb252ZXJzaW9ucworIChkZWZpbmVfbW9kZV9hdHRyIFZTcjIJ WyhWMkRGICAid2QiKQorIAkJCSAoVjRTRiAgIndmIikKKyAJCQkgKERGICAgICIhZiNyIildKQor QEAgLTcwLDYgKzgyLDE4IEBAIChkZWZpbmVfbW9kZV9hdHRyIFZTcjMJWyhWMkRGICAid2EiKQor IAkJCSAoVjRTRiAgIndhIikKKyAJCQkgKERGICAgICIhZiNyIildKQorIAorKzs7IE1hcCB0aGUg cmVnaXN0ZXIgY2xhc3MgZm9yIHNwPC0+ZHAgZmxvYXQgY29udmVyc2lvbnMsIGRlc3RpbmF0aW9u CisrKGRlZmluZV9tb2RlX2F0dHIgVlNyNAlbKFNGCSJ3cyIpCisrCQkJIChERgkiZiIpCisrCQkJ IChWMkRGICAid2QiKQorKwkJCSAoVjRTRgkidiIpXSkKKysKKys7OyBNYXAgdGhlIHJlZ2lzdGVy IGNsYXNzIGZvciBzcDwtPmRwIGZsb2F0IGNvbnZlcnNpb25zLCBkZXN0aW5hdGlvbgorKyhkZWZp bmVfbW9kZV9hdHRyIFZTcjUJWyhTRgkid3MiKQorKwkJCSAoREYJImYiKQorKwkJCSAoVjJERiAg InYiKQorKwkJCSAoVjRTRgkid2QiKV0pCisrCisgOzsgU2FtZSBzaXplIGludGVnZXIgdHlwZSBm b3IgZmxvYXRpbmcgcG9pbnQgZGF0YQorIChkZWZpbmVfbW9kZV9hdHRyIFZTaSBbKFY0U0YgICJ2 NHNpIikKKyAJCSAgICAgICAoVjJERiAgInYyZGkiKQorQEAgLTEzNyw2ICsxNjEsMzIgQEAgKGRl ZmluZV9tb2RlX2F0dHIgVlNmcHR5cGVfc3FydAlbKFYyREYgIgorIAkJCQkgKFY0U0YgImZwX3Nx cnRfcyIpCisgCQkJCSAoREYgICAiZnBfc3FydF9kIildKQorIAorKzs7IEl0ZXJhdG9yIGFuZCBt b2RlcyBmb3Igc3A8LT5kcCBjb252ZXJzaW9ucworKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBWU1hf U1BEUCBbU0YgREYgVjRTRiBWMkRGXSkKKysKKysoZGVmaW5lX21vZGVfYXR0ciBWU19zcGRwX3Jl cyBbKFNGCSJERiIpCisrCQkJICAgICAgIChERgkiU0YiKQorKwkJCSAgICAgICAoVjRTRgkiVjJE RiIpCisrCQkJICAgICAgIChWMkRGCSJWNFNGIildKQorKworKyhkZWZpbmVfbW9kZV9hdHRyIFZT X3NwZHBfaW5zbiBbKFNGCSJ4c2N2c3BkcCIpCisrCQkJCShERgkieHNjdmRwc3AiKQorKwkJCQko VjRTRgkieHZjdnNwZHAiKQorKwkJCQkoVjJERgkieHZjdmRwc3AiKV0pCisrCisrKGRlZmluZV9t b2RlX2F0dHIgVlNfc3BkcF90eXBlIFsoU0YJImZwIikKKysJCQkJKERGCSJmcCIpCisrCQkJCShW NFNGCSJ2ZWNmbG9hdCIpCisrCQkJCShWMkRGCSJ2ZWNmbG9hdCIpXSkKKysKKys7OyBNYXAgdGhl IHNjYWxhciBtb2RlIGZvciBhIHZlY3RvciB0eXBlCisrKGRlZmluZV9tb2RlX2F0dHIgVlNfc2Nh bGFyIFsoVjJERgkiREYiKQorKwkJCSAgICAgKFYyREkJIkRJIikKKysJCQkgICAgIChWNFNGCSJT RiIpCisrCQkJICAgICAoVjRTSQkiU0kiKQorKwkJCSAgICAgKFY4SEkJIkhJIikKKysJCQkgICAg IChWMTZRSQkiUUkiKV0pCisrCQkJICAgICAKKyA7OyBBcHByb3ByaWF0ZSB0eXBlIGZvciBsb2Fk ICsgdXBkYXRlCisgKGRlZmluZV9tb2RlX2F0dHIgVlN0eXBlX2xvYWRfdXBkYXRlIFsoVjE2UUkg InZlY2xvYWQiKQorIAkJCQkgICAgICAoVjhISSAgInZlY2xvYWQiKQorQEAgLTE1OSwyNSArMjA5 LDMzIEBAIChkZWZpbmVfbW9kZV9hdHRyIFZTdHlwZV9zdG9yZV91cGRhdGUgWygKKyAKKyA7OyBD b25zdGFudHMgZm9yIGNyZWF0aW5nIHVuc3BlY3MKKyAoZGVmaW5lX2NvbnN0YW50cworLSAgWyhV TlNQRUNfVlNYX0NPTkNBVF9WMkRGCTUwMCkKKy0gICAoVU5TUEVDX1ZTWF9YVkNWRFBTUAkJNTAx KQorLSAgIChVTlNQRUNfVlNYX1hWQ1ZEUFNYV1MJNTAyKQorLSAgIChVTlNQRUNfVlNYX1hWQ1ZE UFVYV1MJNTAzKQorLSAgIChVTlNQRUNfVlNYX1hWQ1ZTUERQCQk1MDQpCistICAgKFVOU1BFQ19W U1hfWFZDVlNYV0RQCTUwNSkKKy0gICAoVU5TUEVDX1ZTWF9YVkNWVVhXRFAJNTA2KQorLSAgIChV TlNQRUNfVlNYX1hWTUFERAkJNTA3KQorLSAgIChVTlNQRUNfVlNYX1hWTVNVQgkJNTA4KQorLSAg IChVTlNQRUNfVlNYX1hWTk1BREQJCTUwOSkKKy0gICAoVU5TUEVDX1ZTWF9YVk5NU1VCCQk1MTAp CistICAgKFVOU1BFQ19WU1hfWFZSU1FSVEUJCTUxMSkKKy0gICAoVU5TUEVDX1ZTWF9YVlRESVYJ CTUxMikKKy0gICAoVU5TUEVDX1ZTWF9YVlRTUVJUCQk1MTMpXSkKKysgIFsoVU5TUEVDX1ZTWF9D T05DQVQJCTUwMCkKKysgICAoVU5TUEVDX1ZTWF9DVkRQU1hXUwkJNTAxKQorKyAgIChVTlNQRUNf VlNYX0NWRFBVWFdTCQk1MDIpCisrICAgKFVOU1BFQ19WU1hfQ1ZTUERQCQk1MDMpCisrICAgKFVO U1BFQ19WU1hfQ1ZTWFdEUAkJNTA0KQorKyAgIChVTlNQRUNfVlNYX0NWVVhXRFAJCTUwNSkKKysg ICAoVU5TUEVDX1ZTWF9DVlNYRFNQCQk1MDYpCisrICAgKFVOU1BFQ19WU1hfQ1ZVWERTUAkJNTA3 KQorKyAgIChVTlNQRUNfVlNYX0NWU1BTWERTCQk1MDgpCisrICAgKFVOU1BFQ19WU1hfQ1ZTUFVY RFMJCTUwOSkKKysgICAoVU5TUEVDX1ZTWF9NQURECQk1MTApCisrICAgKFVOU1BFQ19WU1hfTVNV QgkJNTExKQorKyAgIChVTlNQRUNfVlNYX05NQURECQk1MTIpCisrICAgKFVOU1BFQ19WU1hfTk1T VUIJCTUxMykKKysgICAoVU5TUEVDX1ZTWF9SU1FSVEUJCTUxNCkKKysgICAoVU5TUEVDX1ZTWF9U RElWCQk1MTUpCisrICAgKFVOU1BFQ19WU1hfVFNRUlQJCTUxNikKKysgICAoVU5TUEVDX1ZTWF9Y WFBFUk1ESQkJNTE3KQorKyAgIChVTlNQRUNfVlNYX1NFVAkJNTE4KQorKyAgIChVTlNQRUNfVlNY X1JPVU5EX0kJCTUxOSkKKysgICAoVU5TUEVDX1ZTWF9ST1VORF9JQwkJNTIwKQorKyAgIChVTlNQ RUNfVlNYX1NMRFdJCQk1MjEpXSkKKyAKKyA7OyBWU1ggbW92ZXMKKyAoZGVmaW5lX2luc24gIip2 c3hfbW92PG1vZGU+IgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMCAibm9uaW1tZWRp YXRlX29wZXJhbmQiICI9Wiw8VlNyPiw8VlNyPiw/Wiw/d2EsP3dhLCpvLCpyLCpyLDxWU3I+LD93 YSx2LHdaLHYiKQorLQkobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJpbnB1dF9vcGVyYW5kIiAiPFZT cj4sWiw8VlNyPix3YSxaLHdhLHIsbyxyLGosaixXLHYsd1oiKSldCisrICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWU1hfTSAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1aLDxWU3I+LDxWU3I+LD9a LD93YSw/d2EsKm8sKnIsKnIsPFZTcj4sP3dhLHYsd1osdiIpCisrCShtYXRjaF9vcGVyYW5kOlZT WF9NIDEgImlucHV0X29wZXJhbmQiICI8VlNyPixaLDxWU3I+LHdhLFosd2EscixvLHIsaixqLFcs dix3WiIpKV0KKyAgICJWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKQorICAgICYmIChyZWdp c3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1PREU+bW9kZSkgCisgICAgICAgIHx8IHJlZ2lz dGVyX29wZXJhbmQgKG9wZXJhbmRzWzFdLCA8TU9ERT5tb2RlKSkiCitAQCAtMjIwLDYgKzI3OCw0 OSBAQCAoZGVmaW5lX2luc24gIip2c3hfbW92PG1vZGU+IgorIH0KKyAgIFsoc2V0X2F0dHIgInR5 cGUiICJ2ZWNzdG9yZSx2ZWNsb2FkLHZlY3NpbXBsZSx2ZWNzdG9yZSx2ZWNsb2FkLHZlY3NpbXBs ZSwqLCosKix2ZWNzaW1wbGUsdmVjc2ltcGxlLCosdmVjc3RvcmUsdmVjbG9hZCIpXSkKKyAKKys7 OyBVbmxpa2Ugb3RoZXIgVlNYIG1vdmVzLCBhbGxvdyB0aGUgR1BScywgc2luY2UgYSBub3JtYWwg dXNlIG9mIFRJbW9kZSBpcyBmb3IKKys7OyB1bmlvbnMuICBIb3dldmVyIGZvciBwbGFpbiBkYXRh IG1vdmVtZW50LCBzbGlnaHRseSBmYXZvciB0aGUgdmVjdG9yIGxvYWRzCisrKGRlZmluZV9pbnNu ICIqdnN4X21vdnRpIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VEkgMCAibm9uaW1tZWRpYXRl X29wZXJhbmQiICI9Wix3YSx3YSw/byw/ciw/cix3YSx2LHYsd1oiKQorKwkobWF0Y2hfb3BlcmFu ZDpUSSAxICJpbnB1dF9vcGVyYW5kIiAid2EsWix3YSxyLG8scixqLFcsd1osdiIpKV0KKysgICJW RUNUT1JfTUVNX1ZTWF9QIChUSW1vZGUpCisrICAgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJh bmRzWzBdLCBUSW1vZGUpIAorKyAgICAgICB8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sx XSwgVEltb2RlKSkiCisreworKyAgc3dpdGNoICh3aGljaF9hbHRlcm5hdGl2ZSkKKysgICAgewor KyAgICBjYXNlIDA6CisrICAgICAgcmV0dXJuICJzdHh2ZDIlVTB4ICV4MSwleTAiOworKworKyAg ICBjYXNlIDE6CisrICAgICAgcmV0dXJuICJseHZkMiVVMHggJXgwLCV5MSI7CisrCisrICAgIGNh c2UgMjoKKysgICAgICByZXR1cm4gInh4bG9yICV4MCwleDEsJXgxIjsKKysKKysgICAgY2FzZSAz OgorKyAgICBjYXNlIDQ6CisrICAgIGNhc2UgNToKKysgICAgICByZXR1cm4gIiMiOworKworKyAg ICBjYXNlIDY6CisrICAgICAgcmV0dXJuICJ4eGx4b3IgJXgwLCV4MCwleDAiOworKworKyAgICBj YXNlIDc6CisrICAgICAgcmV0dXJuIG91dHB1dF92ZWNfY29uc3RfbW92ZSAob3BlcmFuZHMpOwor KworKyAgICBjYXNlIDg6CisrICAgICAgcmV0dXJuICJzdHZ4ICUxLCV5MCI7CisrCisrICAgIGNh c2UgOToKKysgICAgICByZXR1cm4gImx2eCAlMCwleTEiOworKworKyAgICBkZWZhdWx0OgorKyAg ICAgIGdjY191bnJlYWNoYWJsZSAoKTsKKysgICAgfQorK30KKysgIFsoc2V0X2F0dHIgInR5cGUi ICJ2ZWNzdG9yZSx2ZWNsb2FkLHZlY3NpbXBsZSwqLCosKix2ZWNzaW1wbGUsKix2ZWNzdG9yZSx2 ZWNsb2FkIildKQorKworIDs7IExvYWQvc3RvcmUgd2l0aCB1cGRhdGUKKyA7OyBEZWZpbmUgaW5z bnMgdGhhdCBkbyBsb2FkIG9yIHN0b3JlIHdpdGggdXBkYXRlLiAgQmVjYXVzZSBWU1ggb25seSBo YXMKKyA7OyByZWcrcmVnIGFkZHJlc3NpbmcsIHByZS1kZWNyZW1lbnQgb3IgcHJlLWlucmVtZW50 IGlzIHVubGlrZWx5IHRvIGJlCitAQCAtMjk3LDcgKzM5OCw3IEBAIChkZWZpbmVfaW5zbiAidnN4 X3RkaXY8bW9kZT4zIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKKyAJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJh bmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpCisgCQkgICAgICAg KG1hdGNoX29wZXJhbmQ6VlNYX0IgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIp XQorLQkJICAgICAgVU5TUEVDX1ZTWF9YVlRESVYpKV0KKysJCSAgICAgIFVOU1BFQ19WU1hfVERJ VikpXQorICAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKKyAgICJ4PFZTdj50ZGl2 PFZTcz4gJXgwLCV4MSwleDIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+ IikKK0BAIC0zNjcsNyArNDY4LDcgQEAgKGRlZmluZV9pbnNuICIqdnN4X3NxcnQ8bW9kZT4yIgor IChkZWZpbmVfaW5zbiAidnN4X3JzcXJ0ZTxtb2RlPjIiCisgICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWU1hfQiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQorIAkodW5zcGVj OlZTWF9CIFsobWF0Y2hfb3BlcmFuZDpWU1hfQiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxW U3I+LHdhIildCistCQkgICAgICBVTlNQRUNfVlNYX1hWUlNRUlRFKSldCisrCQkgICAgICBVTlNQ RUNfVlNYX1JTUVJURSkpXQorICAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKKyAg ICJ4PFZTdj5yc3FydGU8VlNzPiAleDAsJXgxIgorICAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5 cGVfc2ltcGxlPiIpCitAQCAtMzc2LDcgKzQ3Nyw3IEBAIChkZWZpbmVfaW5zbiAidnN4X3JzcXJ0 ZTxtb2RlPjIiCisgKGRlZmluZV9pbnNuICJ2c3hfdHNxcnQ8bW9kZT4yIgorICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikK KyAJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI8VlNyPix3YSIpXQorLQkJICAgICAgVU5TUEVDX1ZTWF9YVlRTUVJUKSldCisrCQkg ICAgICBVTlNQRUNfVlNYX1RTUVJUKSldCisgICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1v ZGUpIgorICAgIng8VlN2PnRzcXJ0PFZTcz4gJXgwLCV4MSIKKyAgIFsoc2V0X2F0dHIgInR5cGUi ICI8VlN0eXBlX3NpbXBsZT4iKQorQEAgLTQyNiw3ICs1MjcsNyBAQCAoZGVmaW5lX2luc24gInZz eF9mbWFkZDxtb2RlPjRfMiIKKyAJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0Ig MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIlPFZTcj4sPFZTcj4sd2Esd2EiKQorIAkJICAgICAg IChtYXRjaF9vcGVyYW5kOlZTWF9CIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3 YSwwIikKKyAJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIjAsPFZTcj4sMCx3YSIpXQorLQkJICAgICAgVU5TUEVDX1ZTWF9YVk1BREQpKV0KKysJ CSAgICAgIFVOU1BFQ19WU1hfTUFERCkpXQorICAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5t b2RlKSIKKyAgICJACisgICAgeDxWU3Y+bWFkZGE8VlNzPiAleDAsJXgxLCV4MgorQEAgLTQ3NCw3 ICs1NzUsNyBAQCAoZGVmaW5lX2luc24gInZzeF9mbXN1Yjxtb2RlPjRfMiIKKyAJKHVuc3BlYzpW U1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIlPFZT cj4sPFZTcj4sd2Esd2EiKQorIAkJICAgICAgIChtYXRjaF9vcGVyYW5kOlZTWF9CIDIgInZzeF9y ZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSwwIikKKyAJCSAgICAgICAobWF0Y2hfb3BlcmFu ZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4sMCx3YSIpXQorLQkJICAg ICAgVU5TUEVDX1ZTWF9YVk1TVUIpKV0KKysJCSAgICAgIFVOU1BFQ19WU1hfTVNVQikpXQorICAg IlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKKyAgICJACisgICAgeDxWU3Y+bXN1YmE8 VlNzPiAleDAsJXgxLCV4MgorQEAgLTU1Miw3ICs2NTMsNyBAQCAoZGVmaW5lX2luc24gInZzeF9m bm1hZGQ8bW9kZT40XzMiCisgCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9CIDEg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sPFZTcj4sd2Esd2EiKQorIAkJICAgICAgICht YXRjaF9vcGVyYW5kOlZTWF9CIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCx3YSww IikKKyAJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIjAsPFZTcj4sMCx3YSIpXQorLQkJICAgICAgVU5TUEVDX1ZTWF9YVk5NQUREKSldCisrCQkg ICAgICBVTlNQRUNfVlNYX05NQUREKSldCisgICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1v ZGUpIgorICAgIkAKKyAgICB4PFZTdj5ubWFkZGE8VlNzPiAleDAsJXgxLCV4MgorQEAgLTYyOSw3 ICs3MzAsNyBAQCAoZGVmaW5lX2luc24gInZzeF9mbm1zdWI8bW9kZT40XzMiCisgCSh1bnNwZWM6 VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJTxW U3I+LDxWU3I+LHdhLHdhIikKKyAJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWU1hfQiAyICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LDAsd2EsMCIpCisgCQkgICAgICAgKG1hdGNoX29wZXJh bmQ6VlNYX0IgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIwLDxWU3I+LDAsd2EiKV0KKy0JCSAg ICAgIFVOU1BFQ19WU1hfWFZOTVNVQikpXQorKwkJICAgICAgVU5TUEVDX1ZTWF9OTVNVQikpXQor ICAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKKyAgICJACisgICAgeDxWU3Y+bm1z dWJhPFZTcz4gJXgwLCV4MSwleDIKK0BAIC02NjcsMTMgKzc2OCwxMyBAQCAoZGVmaW5lX2luc24g Iip2c3hfZ2U8bW9kZT4iCisgICBbKHNldF9hdHRyICJ0eXBlIiAiPFZTdHlwZV9zaW1wbGU+IikK KyAgICAoc2V0X2F0dHIgImZwX3R5cGUiICI8VlNmcHR5cGVfc2ltcGxlPiIpXSkKKyAKKy0oZGVm aW5lX2luc24gInZzeF92c2VsPG1vZGU+IgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0Yg MCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKKy0JKGlmX3RoZW5fZWxzZTpW U1hfRiAobmUgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8 VlNyPix3YSIpCisrKGRlZmluZV9pbnNuICIqdnN4X3ZzZWw8bW9kZT4iCisrICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWU1hfTCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQor KwkoaWZfdGhlbl9lbHNlOlZTWF9MIChuZSAobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIjxWU3I+LHdhIikKKyAJCQkJKGNvbnN0X2ludCAwKSkKKy0JCQkgICAg KG1hdGNoX29wZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIp CistCQkJICAgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PFZTcj4sd2EiKSkpXQorLSAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysJCQkg ICAgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3 YSIpCisrCQkJICAgIChtYXRjaF9vcGVyYW5kOlZTWF9MIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAiPFZTcj4sd2EiKSkpXQorKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgorICAg Inh4c2VsICV4MCwleDMsJXgyLCV4MSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIild KQorIAorQEAgLTY5OCw3ICs3OTksNyBAQCAoZGVmaW5lX2luc24gInZzeF9mdHJ1bmM8bW9kZT4y IgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI9PFZTcj4sP3dhIikKKyAgIAkoZml4OlZTWF9CIChtYXRjaF9vcGVyYW5kOlZTWF9CIDEgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKSkpXQorICAgIlZFQ1RPUl9VTklUX1ZTWF9Q ICg8TU9ERT5tb2RlKSIKKy0gICJ4PFZTdj5yPFZTcz5waXogJXgwLCV4MSIKKysgICJ4PFZTdj5y PFZTcz5peiAleDAsJXgxIgorICAgWyhzZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIp CisgICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCisgCitAQCAt NzM1LDYgKzgzNiwyNCBAQCAoZGVmaW5lX2luc24gInZzeF9maXh1bnNfdHJ1bmM8bW9kZT48VlNp CisgICAgKHNldF9hdHRyICJmcF90eXBlIiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCisgCisgOzsg TWF0aCByb3VuZGluZyBmdW5jdGlvbnMKKysoZGVmaW5lX2luc24gInZzeF94PFZTdj5yPFZTcz5p IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI9PFZTcj4sP3dhIikKKysJKHVuc3BlYzpWU1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPix3YSIpXQorKwkJICAgICAgVU5TUEVDX1ZTWF9S T1VORF9JKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgIng8VlN2 PnI8VlNzPmkgJXgwLCV4MSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICI8VlN0eXBlX3NpbXBsZT4i KQorKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgIjxWU2ZwdHlwZV9zaW1wbGU+IildKQorKworKyhk ZWZpbmVfaW5zbiAidnN4X3g8VlN2PnI8VlNzPmljIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VlNYX0IgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKKysJKHVuc3BlYzpW U1hfQiBbKG1hdGNoX29wZXJhbmQ6VlNYX0IgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNy Pix3YSIpXQorKwkJICAgICAgVU5TUEVDX1ZTWF9ST1VORF9JQykpXQorKyAgIlZFQ1RPUl9VTklU X1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICJ4PFZTdj5yPFZTcz5pYyAleDAsJXgxIgorKyAgWyhz ZXRfYXR0ciAidHlwZSIgIjxWU3R5cGVfc2ltcGxlPiIpCisrICAgKHNldF9hdHRyICJmcF90eXBl IiAiPFZTZnB0eXBlX3NpbXBsZT4iKV0pCisrCisgKGRlZmluZV9pbnNuICJ2c3hfYnRydW5jPG1v ZGU+MiIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9CIDAgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAiPTxWU3I+LD93YSIpCisgCSh1bnNwZWM6VlNYX0IgWyhtYXRjaF9vcGVyYW5kOlZTWF9C IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sd2EiKV0KK0BAIC03NjUsMjIgKzg4NCwy NiBAQCAoZGVmaW5lX2luc24gInZzeF9jZWlsPG1vZGU+MiIKKyAMCisgOzsgVlNYIGNvbnZlcnQg dG8vZnJvbSBkb3VibGUgdmVjdG9yCisgCisrOzsgQ29udmVydCBiZXR3ZWVuIHNpbmdsZSBhbmQg ZG91YmxlIHByZWNpc2lvbgorKzs7IERvbid0IHVzZSB4c2N2c3BkcCBhbmQgeHNjdmRwc3AgZm9y IHNjYWxhciBjb252ZXJzaW9ucywgc2luY2UgdGhlIG5vcm1hbAorKzs7IHNjYWxhciBzaW5nbGUg cHJlY2lzaW9uIGluc3RydWN0aW9ucyBpbnRlcm5hbGx5IHVzZSB0aGUgZG91YmxlIGZvcm1hdC4K Kys7OyBQcmVmZXIgdGhlIGFsdGl2ZWMgcmVnaXN0ZXJzLCBzaW5jZSB3ZSBsaWtlbHkgd2lsbCBu ZWVkIHRvIGRvIGEgdnBlcm0KKysoZGVmaW5lX2luc24gInZzeF88VlNfc3BkcF9pbnNuPiIKKysg IFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWU19zcGRwX3Jlcz4gMCAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICI9PFZTcjQ+LD93YSIpCisrCSh1bnNwZWM6PFZTX3NwZHBfcmVzPiBbKG1hdGNoX29wZXJh bmQ6VlNYX1NQRFAgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyNT4sd2EiKV0KKysJCQkg ICAgICBVTlNQRUNfVlNYX0NWU1BEUCkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5t b2RlKSIKKysgICI8VlNfc3BkcF9pbnNuPiAleDAsJXgxIgorKyAgWyhzZXRfYXR0ciAidHlwZSIg IjxWU19zcGRwX3R5cGU+IildKQorKworIDs7IENvbnZlcnQgZnJvbSA2NC1iaXQgdG8gMzItYml0 IHR5cGVzCisgOzsgTm90ZSwgZmF2b3IgdGhlIEFsdGl2ZWMgcmVnaXN0ZXJzIHNpbmNlIHRoZSB1 c3VhbCB1c2Ugb2YgdGhlc2UgaW5zdHJ1Y3Rpb25zCisgOzsgaXMgaW4gdmVjdG9yIGNvbnZlcnRz IGFuZCB3ZSBuZWVkIHRvIHVzZSB0aGUgQWx0aXZlYyB2cGVybSBpbnN0cnVjdGlvbi4KKyAKKy0o ZGVmaW5lX2luc24gInZzeF94dmN2ZHBzcCIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0Yg MCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9diw/d2EiKQorLQkodW5zcGVjOlY0U0YgWyhtYXRj aF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3YSIpXQorLQkJICAg ICBVTlNQRUNfVlNYX1hWQ1ZEUFNQKSldCistICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2Rl KSIKKy0gICJ4dmN2ZHBzcCAleDAsJXgxIgorLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0 IildKQorLQorIChkZWZpbmVfaW5zbiAidnN4X3h2Y3ZkcHN4d3MiCisgICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWNFNJIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXYsP3dhIikKKyAJKHVuc3Bl YzpWNFNJIFsobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qs d2EiKV0KKy0JCSAgICAgVU5TUEVDX1ZTWF9YVkNWRFBTWFdTKSldCisrCQkgICAgIFVOU1BFQ19W U1hfQ1ZEUFNYV1MpKV0KKyAgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorICAgInh2 Y3ZkcHN4d3MgJXgwLCV4MSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKK0BA IC03ODgsMjQgKzkxMSwzMiBAQCAoZGVmaW5lX2luc24gInZzeF94dmN2ZHBzeHdzIgorIChkZWZp bmVfaW5zbiAidnN4X3h2Y3ZkcHV4d3MiCisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXYsP3dhIikKKyAJKHVuc3BlYzpWNFNJIFsobWF0Y2hf b3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2EiKV0KKy0JCSAgICAg VU5TUEVDX1ZTWF9YVkNWRFBVWFdTKSldCisrCQkgICAgIFVOU1BFQ19WU1hfQ1ZEUFVYV1MpKV0K KyAgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorICAgInh2Y3ZkcHV4d3MgJXgwLCV4 MSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKKyAKKy07OyBDb252ZXJ0IGZy b20gMzItYml0IHRvIDY0LWJpdCB0eXBlcworLShkZWZpbmVfaW5zbiAidnN4X3h2Y3ZzcGRwIgor LSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13 ZCw/d2EiKQorLQkodW5zcGVjOlYyREYgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICJ3Zix3YSIpXQorLQkJICAgICBVTlNQRUNfVlNYX1hWQ1ZTUERQKSldCisr KGRlZmluZV9pbnNuICJ2c3hfeHZjdnN4ZHNwIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRT SSAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQorKwkodW5zcGVjOlY0U0kgWyht YXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIpXQorKwkJ ICAgICBVTlNQRUNfVlNYX0NWU1hEU1ApKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1v ZGUpIgorKyAgInh2Y3ZzeGRzcCAleDAsJXgxIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zs b2F0IildKQorKworKyhkZWZpbmVfaW5zbiAidnN4X3h2Y3Z1eGRzcCIKKysgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlY0U0kgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2QsP3dhIikKKysJKHVu c3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi d2Ysd2EiKV0KKysJCSAgICAgVU5TUEVDX1ZTWF9DVlVYRFNQKSldCisgICAiVkVDVE9SX1VOSVRf VlNYX1AgKFYyREZtb2RlKSIKKy0gICJ4dmN2c3BkcCAleDAsJXgxIgorKyAgInh2Y3Z1eHdkcCAl eDAsJXgxIgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQorIAorKzs7IENvbnZl cnQgZnJvbSAzMi1iaXQgdG8gNjQtYml0IHR5cGVzCisgKGRlZmluZV9pbnNuICJ2c3hfeHZjdnN4 d2RwIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIj13ZCw/d2EiKQorIAkodW5zcGVjOlYyREYgWyhtYXRjaF9vcGVyYW5kOlY0U0kgMSAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIpXQorLQkJICAgICBVTlNQRUNfVlNYX1hWQ1ZTWFdE UCkpXQorKwkJICAgICBVTlNQRUNfVlNYX0NWU1hXRFApKV0KKyAgICJWRUNUT1JfVU5JVF9WU1hf UCAoVjJERm1vZGUpIgorICAgInh2Y3ZzeHdkcCAleDAsJXgxIgorICAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY2Zsb2F0IildKQorQEAgLTgxMywxMSArOTQ0LDI2IEBAIChkZWZpbmVfaW5zbiAidnN4 X3h2Y3ZzeHdkcCIKKyAoZGVmaW5lX2luc24gInZzeF94dmN2dXh3ZHAiCisgICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLD93YSIpCisgCSh1 bnNwZWM6VjJERiBbKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg IndmLHdhIildCistCQkgICAgIFVOU1BFQ19WU1hfWFZDVlVYV0RQKSldCisrCQkgICAgIFVOU1BF Q19WU1hfQ1ZVWFdEUCkpXQorICAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCisgICAi eHZjdnV4d2RwICV4MCwleDEiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCisg CisrKGRlZmluZV9pbnNuICJ2c3hfeHZjdnNwc3hkcyIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlYyREkgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9diw/d2EiKQorKwkodW5zcGVjOlYyREkg WyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCx3YSIpXQor KwkJICAgICBVTlNQRUNfVlNYX0NWU1BTWERTKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYy REZtb2RlKSIKKysgICJ4dmN2c3BzeGRzICV4MCwleDEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjZmxvYXQiKV0pCisrCisrKGRlZmluZV9pbnNuICJ2c3hfeHZjdnNwdXhkcyIKKysgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlYyREkgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9diw/d2EiKQor KwkodW5zcGVjOlYyREkgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICJ3ZCx3YSIpXQorKwkJICAgICBVTlNQRUNfVlNYX0NWU1BVWERTKSldCisrICAiVkVDVE9S X1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKKysgICJ4dmN2c3B1eGRzICV4MCwleDEiCisrICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCisgDAorIDs7IExvZ2ljYWwgYW5kIHBlcm11dGUg b3BlcmF0aW9ucworIChkZWZpbmVfaW5zbiAiKnZzeF9hbmQ8bW9kZT4zIgorQEAgLTg3NywyNCAr MTAyMywyNSBAQCAoZGVmaW5lX2luc24gIip2c3hfYW5kYzxtb2RlPjMiCisgDAorIDs7IFBlcm11 dGUgb3BlcmF0aW9ucworIAorLShkZWZpbmVfaW5zbiAidnN4X2NvbmNhdF92MmRmIgorLSAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2Ei KQorLQkodW5zcGVjOlYyREYKKy0JIFsobWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIndzLHdhIikKKy0JICAobWF0Y2hfb3BlcmFuZDpERiAyICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIndzLHdhIildCistCSBVTlNQRUNfVlNYX0NPTkNBVF9WMkRGKSldCistICAiVkVD VE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKKys7OyBCdWlsZCBhIFYyREYvVjJESSB2ZWN0b3Ig ZnJvbSB0d28gc2NhbGFycworKyhkZWZpbmVfaW5zbiAidnN4X2NvbmNhdF88bW9kZT4iCisrICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/ d2EiKQorKwkodW5zcGVjOlZTWF9ECisrCSBbKG1hdGNoX29wZXJhbmQ6PFZTX3NjYWxhcj4gMSAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyx3YSIpCisrCSAgKG1hdGNoX29wZXJhbmQ6PFZTX3Nj YWxhcj4gMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyx3YSIpXQorKwkgVU5TUEVDX1ZTWF9D T05DQVQpKV0KKysgICJWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKKyAgICJ4eHBlcm1k aSAleDAsJXgxLCV4MiwwIgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCisgCist OzsgU2V0IGEgZG91YmxlIGludG8gb25lIGVsZW1lbnQKKy0oZGVmaW5lX2luc24gInZzeF9zZXRf djJkZiIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREYgMCAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICI9d2QsP3dhIikKKy0JKHZlY19tZXJnZTpWMkRGCistCSAobWF0Y2hfb3BlcmFuZDpWMkRG IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2EiKQorLQkgKHZlY19kdXBsaWNhdGU6VjJE RiAobWF0Y2hfb3BlcmFuZDpERiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzLGYiKSkKKy0J IChtYXRjaF9vcGVyYW5kOlFJIDMgInU1Yml0X2NpbnRfb3BlcmFuZCIgImksaSIpKSldCistICAi VkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKKys7OyBTZXQgdGhlIGVsZW1lbnQgb2YgYSBW MkRJL1ZEMkYgbW9kZQorKyhkZWZpbmVfaW5zbiAidnN4X3NldF88bW9kZT4iCisrICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWU1hfRCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCw/d2EiKQor KwkodW5zcGVjOlZTWF9EIFsobWF0Y2hfb3BlcmFuZDpWU1hfRCAxICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIndkLHdhIikKKysJCSAgICAgICAobWF0Y2hfb3BlcmFuZDo8VlNfc2NhbGFyPiAyICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzLHdhIikKKysJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpR SSAzICJ1NWJpdF9jaW50X29wZXJhbmQiICJpLGkiKV0KKysJCSAgICAgIFVOU1BFQ19WU1hfU0VU KSldCisrICAiVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCisgeworICAgaWYgKElOVFZB TCAob3BlcmFuZHNbM10pID09IDApCisgICAgIHJldHVybiBcInh4cGVybWRpICV4MCwleDEsJXgy LDFcIjsKK0BAIC05MDYsMTIgKzEwNTMsMTIgQEAgKGRlZmluZV9pbnNuICJ2c3hfc2V0X3YyZGYi CisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKyAKKyA7OyBFeHRyYWN0IGEgREYg ZWxlbWVudCBmcm9tIFYyREYKKy0oZGVmaW5lX2luc24gInZzeF9leHRyYWN0X3YyZGYiCistICBb KHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyxmLD93 YSIpCistCSh2ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICJ3ZCx3ZCx3YSIpCisrKGRlZmluZV9pbnNuICJ2c3hfZXh0cmFjdF88bW9kZT4i CisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8VlNfc2NhbGFyPiAwICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIj13cyxmLD93YSIpCisrCSh2ZWNfc2VsZWN0OjxWU19zY2FsYXI+IChtYXRjaF9vcGVy YW5kOlZTWF9EIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qsd2Qsd2EiKQorIAkJICAgICAg IChwYXJhbGxlbAorIAkJCVsobWF0Y2hfb3BlcmFuZDpRSSAyICJ1NWJpdF9jaW50X29wZXJhbmQi ICJpLGksaSIpXSkpKV0KKy0gICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorKyAgIlZF Q1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgorIHsKKyAgIGdjY19hc3NlcnQgKFVJTlRWQUwg KG9wZXJhbmRzWzJdKSA8PSAxKTsKKyAgIG9wZXJhbmRzWzNdID0gR0VOX0lOVCAoSU5UVkFMIChv cGVyYW5kc1syXSkgPDwgMSk7CitAQCAtOTE5LDE3ICsxMDY2LDMwIEBAIChkZWZpbmVfaW5zbiAi dnN4X2V4dHJhY3RfdjJkZiIKKyB9CisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkK KyAKKy07OyBHZW5lcmFsIFYyREYgcGVybXV0ZSwgZXh0cmFjdF97aGlnaCxsb3csZXZlbixvZGR9 CistKGRlZmluZV9pbnNuICJ2c3hfeHhwZXJtZGkiCistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW MkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkIikKKy0JKHZlY19jb25jYXQ6VjJERgor LQkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJhbmQ6VjJERiAxICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIndkIikKKy0JCQkocGFyYWxsZWwKKy0JCQkgWyhtYXRjaF9vcGVyYW5kOlFJIDIgInU1 Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKQorLQkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJh bmQ6VjJERiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndkIikKKy0JCQkocGFyYWxsZWwKKy0J CQkgWyhtYXRjaF9vcGVyYW5kOlFJIDQgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKSkpXQor LSAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCisrOzsgR2VuZXJhbCBWMkRGL1YyREkg cGVybXV0ZQorKyhkZWZpbmVfaW5zbiAidnN4X3h4cGVybWRpXzxtb2RlPiIKKysgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZTWF9EIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLD93YSIpCisr CSh1bnNwZWM6VlNYX0QgWyhtYXRjaF9vcGVyYW5kOlZTWF9EIDEgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAid2Qsd2EiKQorKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlZTWF9EIDIgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAid2Qsd2EiKQorKwkJICAgICAgIChtYXRjaF9vcGVyYW5kOlFJIDMgInU1 Yml0X2NpbnRfb3BlcmFuZCIgImksaSIpXQorKwkJICAgICAgVU5TUEVDX1ZTWF9YWFBFUk1ESSkp XQorKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgInh4cGVybWRpICV4MCwl eDEsJXgyLCUzIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCisrCisrOzsgVmFy aWVudCBvZiB4eHBlcm1kaSB0aGF0IGlzIGVtaXR0ZWQgYnkgdGhlIHZlY19pbnRlcmxlYXZlIGZ1 bmN0aW9ucworKyhkZWZpbmVfaW5zbiAiKnZzeF94eHBlcm1kaTJfPG1vZGU+IgorKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VlNYX0QgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2QiKQorKwko dmVjX2NvbmNhdDpWU1hfRAorKwkgKHZlY19zZWxlY3Q6PFZTX3NjYWxhcj4KKysJICAobWF0Y2hf b3BlcmFuZDpWU1hfRCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndkIikKKysJICAocGFyYWxs ZWwKKysJICAgWyhtYXRjaF9vcGVyYW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0p KQorKwkgKHZlY19zZWxlY3Q6PFZTX3NjYWxhcj4KKysJICAobWF0Y2hfb3BlcmFuZDpWU1hfRCAz ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndkIikKKysJICAocGFyYWxsZWwKKysJICAgWyhtYXRj aF9vcGVyYW5kOlFJIDQgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKSkpXQorKyAgIlZFQ1RP Ul9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgorIHsKKyAgIGdjY19hc3NlcnQgKChVSU5UVkFMIChv cGVyYW5kc1syXSkgPD0gMSkgJiYgKFVJTlRWQUwgKG9wZXJhbmRzWzRdKSA8PSAxKSk7CisgICBv cGVyYW5kc1s1XSA9IEdFTl9JTlQgKCgoSU5UVkFMIChvcGVyYW5kc1syXSkgJiAxKSA8PCAxKQor QEAgLTkzOSwxMSArMTA5OSwxMSBAQCAoZGVmaW5lX2luc24gInZzeF94eHBlcm1kaSIKKyAgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQorIAorIDs7IFYyREYgc3BsYXQKKy0oZGVmaW5l X2luc24gInZzeF9zcGxhdHYyZGYiCistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLHdkLHdkLD93YSw/d2EsP3dhIikKKy0JKHZlY19kdXBs aWNhdGU6VjJERgorLQkgKG1hdGNoX29wZXJhbmQ6REYgMSAiaW5wdXRfb3BlcmFuZCIgIndzLGYs Wix3YSx3YSxaIikpKV0KKy0gICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorKyhkZWZp bmVfaW5zbiAidnN4X3NwbGF0Xzxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9E IDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLHdkLHdkLD93YSw/d2EsP3dhIikKKysJKHZl Y19kdXBsaWNhdGU6VlNYX0QKKysJIChtYXRjaF9vcGVyYW5kOjxWU19zY2FsYXI+IDEgImlucHV0 X29wZXJhbmQiICJ3cyxmLFosd2Esd2EsWiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxN T0RFPm1vZGUpIgorICAgIkAKKyAgICB4eHBlcm1kaSAleDAsJXgxLCV4MSwwCisgICAgeHhwZXJt ZGkgJXgwLCV4MSwleDEsMAorQEAgLTk1Myw1MiArMTExMyw2NiBAQCAoZGVmaW5lX2luc24gInZz eF9zcGxhdHYyZGYiCisgICAgbHh2ZHN4ICV4MCwleTEiCisgICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjcGVybSx2ZWNwZXJtLHZlY2xvYWQsdmVjcGVybSx2ZWNwZXJtLHZlY2xvYWQiKV0pCisgCist OzsgVjRTRiBzcGxhdAorLShkZWZpbmVfaW5zbiAiKnZzeF94eHNwbHR3IgorLSAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VjRTRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13Ziw/d2EiKQorLQko dmVjX2R1cGxpY2F0ZTpWNFNGCistCSAodmVjX3NlbGVjdDpTRiAobWF0Y2hfb3BlcmFuZDpWNFNG IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKQorLQkJCShwYXJhbGxlbAorLQkJCSBb KG1hdGNoX29wZXJhbmQ6UUkgMiAidTViaXRfY2ludF9vcGVyYW5kIiAiaSxpIildKSkpKV0KKy0g ICJWRUNUT1JfVU5JVF9WU1hfUCAoVjRTRm1vZGUpIgorKzs7IFY0U0YvVjRTSSBzcGxhdAorKyhk ZWZpbmVfaW5zbiAidnN4X3h4c3BsdHdfPG1vZGU+IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VlNYX1cgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2YsP3dhIikKKysJKHZlY19kdXBsaWNh dGU6VlNYX1cKKysJICh2ZWNfc2VsZWN0OjxWU19zY2FsYXI+CisrCSAgKG1hdGNoX29wZXJhbmQ6 VlNYX1cgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIpCisrCSAgKHBhcmFsbGVsCisr CSAgIFsobWF0Y2hfb3BlcmFuZDpRSSAyICJ1NWJpdF9jaW50X29wZXJhbmQiICJpLGkiKV0pKSkp XQorKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgorICAgInh4c3BsdHcgJXgwLCV4 MSwlMiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQorIAorLTs7IFY0U0YgaW50 ZXJsZWF2ZQorLShkZWZpbmVfaW5zbiAidnN4X3h4bXJnaHciCistICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9d2YsP3dhIikKKy0gICAgICAgICh2ZWNf bWVyZ2U6VjRTRgorLQkgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKQorLQkJCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50 IDApCistCQkJCSAgICAgKGNvbnN0X2ludCAyKQorLQkJCQkgICAgIChjb25zdF9pbnQgMSkKKy0J CQkJICAgICAoY29uc3RfaW50IDMpXSkpCistCSAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVy YW5kOlY0U0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIpCistCQkJICAocGFyYWxs ZWwgWyhjb25zdF9pbnQgMikKKy0JCQkJICAgICAoY29uc3RfaW50IDApCistCQkJCSAgICAgKGNv bnN0X2ludCAzKQorLQkJCQkgICAgIChjb25zdF9pbnQgMSldKSkKKys7OyBWNFNGL1Y0U0kgaW50 ZXJsZWF2ZQorKyhkZWZpbmVfaW5zbiAidnN4X3h4bXJnaHdfPG1vZGU+IgorKyAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VlNYX1cgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d2YsP3dhIikKKysg ICAgICAgICh2ZWNfbWVyZ2U6VlNYX1cKKysJICh2ZWNfc2VsZWN0OlZTWF9XCisrCSAgKG1hdGNo X29wZXJhbmQ6VlNYX1cgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3Zix3YSIpCisrCSAgKHBh cmFsbGVsIFsoY29uc3RfaW50IDApCisrCQkgICAgIChjb25zdF9pbnQgMikKKysJCSAgICAgKGNv bnN0X2ludCAxKQorKwkJICAgICAoY29uc3RfaW50IDMpXSkpCisrCSAodmVjX3NlbGVjdDpWU1hf VworKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9XIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ys d2EiKQorKwkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQorKwkJICAgICAoY29uc3RfaW50IDAp CisrCQkgICAgIChjb25zdF9pbnQgMykKKysJCSAgICAgKGNvbnN0X2ludCAxKV0pKQorIAkgKGNv bnN0X2ludCA1KSkpXQorLSAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWNFNGbW9kZSkiCisrICAiVkVD VE9SX01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCisgICAieHhtcmdodyAleDAsJXgxLCV4MiIKKyAg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQorIAorLShkZWZpbmVfaW5zbiAidnN4X3h4 bXJnbHciCistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQi ICI9d2YsP3dhIikKKy0gICAgICAgICh2ZWNfbWVyZ2U6VjRTRgorLQkgKHZlY19zZWxlY3Q6VjRT RgorLQkgIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIndmLHdhIikK KysoZGVmaW5lX2luc24gInZzeF94eG1yZ2x3Xzxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZTWF9XIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdmLD93YSIpCisrICAgICAgICAo dmVjX21lcmdlOlZTWF9XCisrCSAodmVjX3NlbGVjdDpWU1hfVworKwkgIChtYXRjaF9vcGVyYW5k OlZTWF9XIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Ysd2EiKQorIAkgIChwYXJhbGxlbCBb KGNvbnN0X2ludCAyKQorIAkJICAgICAoY29uc3RfaW50IDApCisgCQkgICAgIChjb25zdF9pbnQg MykKKyAJCSAgICAgKGNvbnN0X2ludCAxKV0pKQorLQkgKHZlY19zZWxlY3Q6VjRTRgorLQkgICht YXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIndmLD93YSIpCisrCSAodmVj X3NlbGVjdDpWU1hfVworKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9XIDIgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAid2YsP3dhIikKKyAJICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKKyAJCSAgICAg KGNvbnN0X2ludCAyKQorIAkJICAgICAoY29uc3RfaW50IDEpCisgCQkgICAgIChjb25zdF9pbnQg MyldKSkKKyAJIChjb25zdF9pbnQgNSkpKV0KKy0gICJWRUNUT1JfVU5JVF9WU1hfUCAoVjRTRm1v ZGUpIgorKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgorICAgInh4bXJnbHcgJXgw LCV4MSwleDIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKysKKys7OyBTaGlm dCBsZWZ0IGRvdWJsZSBieSB3b3JkIGltbWVkaWF0ZQorKyhkZWZpbmVfaW5zbiAidnN4X3h4c2xk d2lfPG1vZGU+IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9d2EiKQorKwkodW5zcGVjOlZTWF9MIFsobWF0Y2hfb3BlcmFuZDpWU1hfTCAx ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndhIikKKysJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpW U1hfTCAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndhIikKKysJCSAgICAgICAobWF0Y2hfb3Bl cmFuZDpRSSAzICJ1NWJpdF9jaW50X29wZXJhbmQiICJpIildCisrCQkgICAgICBVTlNQRUNfVlNY X1NMRFdJKSldCisrICAiVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAieHhzbGR3 aSAleDAsJXgxLCV4MiwlMyIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQorLS0t IGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oCShyZXZpc2lvbiAxNDYxMTkpCisrKysgZ2NjL2Nv bmZpZy9yczYwMDAvcnM2MDAwLmgJKHJldmlzaW9uIDE0Njc5OCkKK0BAIC0xMDMzLDE0ICsxMDMz LDYgQEAgZXh0ZXJuIGludCByczYwMDBfdmVjdG9yX2FsaWduW107CisgCSAoKE1PREUpID09IFY0 U0Ztb2RlCQlcCisgCSAgfHwgKE1PREUpID09IFYyREZtb2RlKQlcCisgCistI2RlZmluZSBWU1hf VkVDVE9SX01PVkVfTU9ERShNT0RFKQlcCistCSAoKE1PREUpID09IFYxNlFJbW9kZQkJXAorLQkg IHx8IChNT0RFKSA9PSBWOEhJbW9kZQkJXAorLQkgIHx8IChNT0RFKSA9PSBWNFNJbW9kZQkJXAor LQkgIHx8IChNT0RFKSA9PSBWMkRJbW9kZQkJXAorLQkgIHx8IChNT0RFKSA9PSBWNFNGbW9kZQkJ XAorLQkgIHx8IChNT0RFKSA9PSBWMkRGbW9kZSkJXAorLQorICNkZWZpbmUgVlNYX1NDQUxBUl9N T0RFKE1PREUpCQlcCisgCSgoTU9ERSkgPT0gREZtb2RlKQorIAorQEAgLTEwNDksMTIgKzEwNDEs OSBAQCBleHRlcm4gaW50IHJzNjAwMF92ZWN0b3JfYWxpZ25bXTsKKyAJIHx8IFZTWF9TQ0FMQVJf TU9ERSAoTU9ERSkpCisgCisgI2RlZmluZSBWU1hfTU9WRV9NT0RFKE1PREUpCQlcCistCShWU1hf VkVDVE9SX01PVkVfTU9ERSAoTU9ERSkJXAorLQkgfHwgVlNYX1NDQUxBUl9NT0RFKE1PREUpCVwK Ky0JIHx8IChNT0RFKSA9PSBWMTZRSW1vZGUJCVwKKy0JIHx8IChNT0RFKSA9PSBWOEhJbW9kZQkJ XAorLQkgfHwgKE1PREUpID09IFY0U0ltb2RlCQlcCistCSB8fCAoTU9ERSkgPT0gVjJESW1vZGUJ CVwKKysJKFZTWF9WRUNUT1JfTU9ERSAoTU9ERSkJCVwKKysJIHx8IFZTWF9TQ0FMQVJfTU9ERSAo TU9ERSkJXAorKwkgfHwgQUxUSVZFQ19WRUNUT1JfTU9ERSAoTU9ERSkJXAorIAkgfHwgKE1PREUp ID09IFRJbW9kZSkKKyAKKyAjZGVmaW5lIEFMVElWRUNfVkVDVE9SX01PREUoTU9ERSkJXAorQEAg LTEzMDQsMTIgKzEyOTMsMjQgQEAgZW51bSByZWdfY2xhc3MKKyAgICBwdXJwb3NlLiAgQW55IG1v dmUgYmV0d2VlbiB0d28gcmVnaXN0ZXJzIG9mIGEgY292ZXIgY2xhc3Mgc2hvdWxkIGJlCisgICAg Y2hlYXBlciB0aGFuIGxvYWQgb3Igc3RvcmUgb2YgdGhlIHJlZ2lzdGVycy4gIFRoZSBtYWNybyB2 YWx1ZSBpcworICAgIGFycmF5IG9mIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBMSU1fUkVHX0NMQVNT RVMgdXNlZCBhcyB0aGUgZW5kCistICAgbWFya2VyLiAgKi8KKysgICBtYXJrZXIuCisrCisrICAg V2UgbmVlZCB0d28gSVJBX0NPVkVSX0NMQVNTRVMsIG9uZSBmb3IgcHJlLVZTWCwgYW5kIHRoZSBv dGhlciBmb3IgVlNYIHRvCisrICAgYWNjb3VudCBmb3IgdGhlIEFsdGl2ZWMgYW5kIEZsb2F0aW5n IHJlZ2lzdGVycyBiZWluZyBzdWJzZXRzIG9mIHRoZSBWU1gKKysgICByZWdpc3RlciBzZXQuICAq LworKworKyNkZWZpbmUgSVJBX0NPVkVSX0NMQVNTRVNfUFJFX1ZTWAkJCQkJICAgICBcCisrewkJ CQkJCQkJCSAgICAgXAorKyAgR0VORVJBTF9SRUdTLCBTUEVDSUFMX1JFR1MsIEZMT0FUX1JFR1Ms IEFMVElWRUNfUkVHUywgLyogVlNYX1JFR1MsICovCSAgICAgXAorKyAgLyogVlJTQVZFX1JFR1Ms Ki8gVlNDUl9SRUdTLCBTUEVfQUNDX1JFR1MsIFNQRUZTQ1JfUkVHUywJCSAgICAgXAorKyAgLyog TVFfUkVHUywgTElOS19SRUdTLCBDVFJfUkVHUywgKi8JCQkJCSAgICAgXAorKyAgQ1JfUkVHUywg WEVSX1JFR1MsIExJTV9SRUdfQ0xBU1NFUwkJCQkJICAgICBcCisrfQorIAorLSNkZWZpbmUgSVJB X0NPVkVSX0NMQVNTRVMJCQkJCQkgICAgIFwKKysjZGVmaW5lIElSQV9DT1ZFUl9DTEFTU0VTX1ZT WAkJCQkJCSAgICAgXAorIHsJCQkJCQkJCQkgICAgIFwKKy0gIEdFTkVSQUxfUkVHUywgU1BFQ0lB TF9SRUdTLCBGTE9BVF9SRUdTLCBBTFRJVkVDX1JFR1MsCQkJICAgICBcCistICAvKlZSU0FWRV9S RUdTLCovIFZTQ1JfUkVHUywgU1BFX0FDQ19SRUdTLCBTUEVGU0NSX1JFR1MsCQkgICAgIFwKKysg IEdFTkVSQUxfUkVHUywgU1BFQ0lBTF9SRUdTLCAvKiBGTE9BVF9SRUdTLCBBTFRJVkVDX1JFR1Ms ICovIFZTWF9SRUdTLAkgICAgIFwKKysgIC8qIFZSU0FWRV9SRUdTLCovIFZTQ1JfUkVHUywgU1BF X0FDQ19SRUdTLCBTUEVGU0NSX1JFR1MsCQkgICAgIFwKKyAgIC8qIE1RX1JFR1MsIExJTktfUkVH UywgQ1RSX1JFR1MsICovCQkJCQkgICAgIFwKKyAgIENSX1JFR1MsIFhFUl9SRUdTLCBMSU1fUkVH X0NMQVNTRVMJCQkJCSAgICAgXAorIH0KK0BAIC0zMzcxLDIxICszMzcyLDM2IEBAIGVudW0gcnM2 MDAwX2J1aWx0aW5zCisgICBWU1hfQlVJTFRJTl9YVlRESVZTUCwKKyAgIFZTWF9CVUlMVElOX1hW VFNRUlREUCwKKyAgIFZTWF9CVUlMVElOX1hWVFNRUlRTUCwKKy0gIFZTWF9CVUlMVElOX1hYTEFO RCwKKy0gIFZTWF9CVUlMVElOX1hYTEFOREMsCistICBWU1hfQlVJTFRJTl9YWExOT1IsCistICBW U1hfQlVJTFRJTl9YWExPUiwKKy0gIFZTWF9CVUlMVElOX1hYTFhPUiwKKy0gIFZTWF9CVUlMVElO X1hYTVJHSEQsCistICBWU1hfQlVJTFRJTl9YWE1SR0hXLAorLSAgVlNYX0JVSUxUSU5fWFhNUkdM RCwKKy0gIFZTWF9CVUlMVElOX1hYTVJHTFcsCistICBWU1hfQlVJTFRJTl9YWFBFUk1ESSwKKy0g IFZTWF9CVUlMVElOX1hYU0VMLAorLSAgVlNYX0JVSUxUSU5fWFhTTERXSSwKKy0gIFZTWF9CVUlM VElOX1hYU1BMVEQsCistICBWU1hfQlVJTFRJTl9YWFNQTFRXLAorLSAgVlNYX0JVSUxUSU5fWFhT V0FQRCwKKysgIFZTWF9CVUlMVElOX1hYU0VMXzJESSwKKysgIFZTWF9CVUlMVElOX1hYU0VMXzJE RiwKKysgIFZTWF9CVUlMVElOX1hYU0VMXzRTSSwKKysgIFZTWF9CVUlMVElOX1hYU0VMXzRTRiwK KysgIFZTWF9CVUlMVElOX1hYU0VMXzhISSwKKysgIFZTWF9CVUlMVElOX1hYU0VMXzE2UUksCisr ICBWU1hfQlVJTFRJTl9WUEVSTV8yREksCisrICBWU1hfQlVJTFRJTl9WUEVSTV8yREYsCisrICBW U1hfQlVJTFRJTl9WUEVSTV80U0ksCisrICBWU1hfQlVJTFRJTl9WUEVSTV80U0YsCisrICBWU1hf QlVJTFRJTl9WUEVSTV84SEksCisrICBWU1hfQlVJTFRJTl9WUEVSTV8xNlFJLAorKyAgVlNYX0JV SUxUSU5fWFhQRVJNRElfMkRGLAorKyAgVlNYX0JVSUxUSU5fWFhQRVJNRElfMkRJLAorKyAgVlNY X0JVSUxUSU5fQ09OQ0FUXzJERiwKKysgIFZTWF9CVUlMVElOX0NPTkNBVF8yREksCisrICBWU1hf QlVJTFRJTl9TRVRfMkRGLAorKyAgVlNYX0JVSUxUSU5fU0VUXzJESSwKKysgIFZTWF9CVUlMVElO X1NQTEFUXzJERiwKKysgIFZTWF9CVUlMVElOX1NQTEFUXzJESSwKKysgIFZTWF9CVUlMVElOX1hY TVJHSFdfNFNGLAorKyAgVlNYX0JVSUxUSU5fWFhNUkdIV180U0ksCisrICBWU1hfQlVJTFRJTl9Y WE1SR0xXXzRTRiwKKysgIFZTWF9CVUlMVElOX1hYTVJHTFdfNFNJLAorKyAgVlNYX0JVSUxUSU5f WFhTTERXSV8xNlFJLAorKyAgVlNYX0JVSUxUSU5fWFhTTERXSV84SEksCisrICBWU1hfQlVJTFRJ Tl9YWFNMRFdJXzRTSSwKKysgIFZTWF9CVUlMVElOX1hYU0xEV0lfNFNGLAorKyAgVlNYX0JVSUxU SU5fWFhTTERXSV8yREksCisrICBWU1hfQlVJTFRJTl9YWFNMRFdJXzJERiwKKyAKKyAgIC8qIFZT WCBvdmVybG9hZGVkIGJ1aWx0aW5zLCBhZGQgdGhlIG92ZXJsb2FkZWQgZnVuY3Rpb25zIG5vdCBw cmVzZW50IGluCisgICAgICBBbHRpdmVjLiAgKi8KK0BAIC0zMzk1LDcgKzM0MTEsMTMgQEAgZW51 bSByczYwMDBfYnVpbHRpbnMKKyAgIFZTWF9CVUlMVElOX1ZFQ19OTUFERCwKKyAgIFZTWF9CVUlU TElOX1ZFQ19OTVNVQiwKKyAgIFZTWF9CVUlMVElOX1ZFQ19ESVYsCistICBWU1hfQlVJTFRJTl9P VkVSTE9BREVEX0xBU1QgPSBWU1hfQlVJTFRJTl9WRUNfRElWLAorKyAgVlNYX0JVSUxUSU5fVkVD X1hYTVJHSFcsCisrICBWU1hfQlVJTFRJTl9WRUNfWFhNUkdMVywKKysgIFZTWF9CVUlMVElOX1ZF Q19YWFBFUk1ESSwKKysgIFZTWF9CVUlMVElOX1ZFQ19YWFNMRFdJLAorKyAgVlNYX0JVSUxUSU5f VkVDX1hYU1BMVEQsCisrICBWU1hfQlVJTFRJTl9WRUNfWFhTUExUVywKKysgIFZTWF9CVUlMVElO X09WRVJMT0FERURfTEFTVCA9IFZTWF9CVUlMVElOX1ZFQ19YWFNQTFRXLAorIAorICAgLyogQ29t YmluZWQgVlNYL0FsdGl2ZWMgYnVpbHRpbnMuICAqLworICAgVkVDVE9SX0JVSUxUSU5fRkxPQVRf VjRTSV9WNFNGLAorQEAgLTM0MjUsMTMgKzM0NDcsMTYgQEAgZW51bSByczYwMDBfYnVpbHRpbl90 eXBlX2luZGV4CisgICBSUzYwMDBfQlRJX3Vuc2lnbmVkX1YxNlFJLAorICAgUlM2MDAwX0JUSV91 bnNpZ25lZF9WOEhJLAorICAgUlM2MDAwX0JUSV91bnNpZ25lZF9WNFNJLAorKyAgUlM2MDAwX0JU SV91bnNpZ25lZF9WMkRJLAorICAgUlM2MDAwX0JUSV9ib29sX2NoYXIsICAgICAgICAgIC8qIF9f Ym9vbCBjaGFyICovCisgICBSUzYwMDBfQlRJX2Jvb2xfc2hvcnQsICAgICAgICAgLyogX19ib29s IHNob3J0ICovCisgICBSUzYwMDBfQlRJX2Jvb2xfaW50LCAgICAgICAgICAgLyogX19ib29sIGlu dCAqLworKyAgUlM2MDAwX0JUSV9ib29sX2xvbmcsCQkgLyogX19ib29sIGxvbmcgKi8KKyAgIFJT NjAwMF9CVElfcGl4ZWwsICAgICAgICAgICAgICAvKiBfX3BpeGVsICovCisgICBSUzYwMDBfQlRJ X2Jvb2xfVjE2UUksICAgICAgICAgLyogX192ZWN0b3IgX19ib29sIGNoYXIgKi8KKyAgIFJTNjAw MF9CVElfYm9vbF9WOEhJLCAgICAgICAgICAvKiBfX3ZlY3RvciBfX2Jvb2wgc2hvcnQgKi8KKyAg IFJTNjAwMF9CVElfYm9vbF9WNFNJLCAgICAgICAgICAvKiBfX3ZlY3RvciBfX2Jvb2wgaW50ICov CisrICBSUzYwMDBfQlRJX2Jvb2xfVjJESSwgICAgICAgICAgLyogX192ZWN0b3IgX19ib29sIGxv bmcgKi8KKyAgIFJTNjAwMF9CVElfcGl4ZWxfVjhISSwgICAgICAgICAvKiBfX3ZlY3RvciBfX3Bp eGVsICovCisgICBSUzYwMDBfQlRJX2xvbmcsCSAgICAgICAgIC8qIGxvbmdfaW50ZWdlcl90eXBl X25vZGUgKi8KKyAgIFJTNjAwMF9CVElfdW5zaWduZWRfbG9uZywgICAgICAvKiBsb25nX3Vuc2ln bmVkX3R5cGVfbm9kZSAqLworQEAgLTM0NjYsMTMgKzM0OTEsMTYgQEAgZW51bSByczYwMDBfYnVp bHRpbl90eXBlX2luZGV4CisgI2RlZmluZSB1bnNpZ25lZF9WMTZRSV90eXBlX25vZGUgICAgICAo cnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV91bnNpZ25lZF9WMTZRSV0pCisgI2RlZmlu ZSB1bnNpZ25lZF9WOEhJX3R5cGVfbm9kZSAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2 MDAwX0JUSV91bnNpZ25lZF9WOEhJXSkKKyAjZGVmaW5lIHVuc2lnbmVkX1Y0U0lfdHlwZV9ub2Rl ICAgICAgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX3Vuc2lnbmVkX1Y0U0ldKQor KyNkZWZpbmUgdW5zaWduZWRfVjJESV90eXBlX25vZGUgICAgICAgKHJzNjAwMF9idWlsdGluX3R5 cGVzW1JTNjAwMF9CVElfdW5zaWduZWRfVjJESV0pCisgI2RlZmluZSBib29sX2NoYXJfdHlwZV9u b2RlICAgICAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9ib29sX2NoYXJd KQorICNkZWZpbmUgYm9vbF9zaG9ydF90eXBlX25vZGUgICAgICAgICAgKHJzNjAwMF9idWlsdGlu X3R5cGVzW1JTNjAwMF9CVElfYm9vbF9zaG9ydF0pCisgI2RlZmluZSBib29sX2ludF90eXBlX25v ZGUgICAgICAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9ib29sX2ludF0p CisrI2RlZmluZSBib29sX2xvbmdfdHlwZV9ub2RlICAgICAgICAgICAocnM2MDAwX2J1aWx0aW5f dHlwZXNbUlM2MDAwX0JUSV9ib29sX2xvbmddKQorICNkZWZpbmUgcGl4ZWxfdHlwZV9ub2RlICAg ICAgICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfcGl4ZWxdKQorICNk ZWZpbmUgYm9vbF9WMTZRSV90eXBlX25vZGUJICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JT NjAwMF9CVElfYm9vbF9WMTZRSV0pCisgI2RlZmluZSBib29sX1Y4SElfdHlwZV9ub2RlCSAgICAg IChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX2Jvb2xfVjhISV0pCisgI2RlZmluZSBi b29sX1Y0U0lfdHlwZV9ub2RlCSAgICAgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJ X2Jvb2xfVjRTSV0pCisrI2RlZmluZSBib29sX1YyRElfdHlwZV9ub2RlCSAgICAgIChyczYwMDBf YnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX2Jvb2xfVjJESV0pCisgI2RlZmluZSBwaXhlbF9WOEhJ X3R5cGVfbm9kZQkgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9waXhlbF9W OEhJXSkKKyAKKyAjZGVmaW5lIGxvbmdfaW50ZWdlcl90eXBlX2ludGVybmFsX25vZGUgIChyczYw MDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX2xvbmddKQorLS0tIGdjYy9jb25maWcvcnM2MDAw L2FsdGl2ZWMubWQJKHJldmlzaW9uIDE0NjExOSkKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9hbHRp dmVjLm1kCShyZXZpc2lvbiAxNDY3OTgpCitAQCAtMTY2LDEyICsxNjYsMTUgQEAgKGRlZmluZV9t b2RlX2l0ZXJhdG9yIFYgW1Y0U0kgVjhISSBWMTZRSQorIDs7IG90aGVyd2lzZSBoYW5kbGVkIGJ5 IGFsdGl2ZWMgKHYyZGYsIHYyZGksIHRpKQorIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWTSBbVjRT SSBWOEhJIFYxNlFJIFY0U0YgVjJERiBWMkRJIFRJXSkKKyAKKys7OyBMaWtlIFZNLCBleGNlcHQg ZG9uJ3QgZG8gVEltb2RlCisrKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZNMiBbVjRTSSBWOEhJIFYx NlFJIFY0U0YgVjJERiBWMkRJXSkKKysKKyAoZGVmaW5lX21vZGVfYXR0ciBWSV9jaGFyIFsoVjRT SSAidyIpIChWOEhJICJoIikgKFYxNlFJICJiIildKQorIAorIDs7IFZlY3RvciBtb3ZlIGluc3Ry dWN0aW9ucy4KKyAoZGVmaW5lX2luc24gIiphbHRpdmVjX21vdjxtb2RlPiIKKy0gIFsoc2V0ICht YXRjaF9vcGVyYW5kOlYgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9Wix2LHYsKm8sKnIsKnIs dix2IikKKy0JKG1hdGNoX29wZXJhbmQ6ViAxICJpbnB1dF9vcGVyYW5kIiAidixaLHYscixvLHIs aixXIikpXQorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0yIDAgIm5vbmltbWVkaWF0ZV9vcGVy YW5kIiAiPVosdix2LCpvLCpyLCpyLHYsdiIpCisrCShtYXRjaF9vcGVyYW5kOlZNMiAxICJpbnB1 dF9vcGVyYW5kIiAidixaLHYscixvLHIsaixXIikpXQorICAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19Q ICg8TU9ERT5tb2RlKQorICAgICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1P REU+bW9kZSkgCisgICAgICAgIHx8IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzFdLCA8TU9E RT5tb2RlKSkiCitAQCAtMTkxLDYgKzE5NCwzMSBAQCAoZGVmaW5lX2luc24gIiphbHRpdmVjX21v djxtb2RlPiIKKyB9CisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc3RvcmUsdmVjbG9hZCx2ZWNz aW1wbGUsc3RvcmUsbG9hZCwqLHZlY3NpbXBsZSwqIildKQorIAorKzs7IFVubGlrZSBvdGhlciBh bHRpdmVjIG1vdmVzLCBhbGxvdyB0aGUgR1BScywgc2luY2UgYSBub3JtYWwgdXNlIG9mIFRJbW9k ZQorKzs7IGlzIGZvciB1bmlvbnMuICBIb3dldmVyIGZvciBwbGFpbiBkYXRhIG1vdmVtZW50LCBz bGlnaHRseSBmYXZvciB0aGUgdmVjdG9yCisrOzsgbG9hZHMKKysoZGVmaW5lX2luc24gIiphbHRp dmVjX21vdnRpIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VEkgMCAibm9uaW1tZWRpYXRlX29w ZXJhbmQiICI9Wix2LHYsP28sP3IsP3Isdix2IikKKysJKG1hdGNoX29wZXJhbmQ6VEkgMSAiaW5w dXRfb3BlcmFuZCIgInYsWix2LHIsbyxyLGosVyIpKV0KKysgICJWRUNUT1JfTUVNX0FMVElWRUNf UCAoVEltb2RlKQorKyAgICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgVEltb2Rl KSAKKysgICAgICAgfHwgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMV0sIFRJbW9kZSkpIgor K3sKKysgIHN3aXRjaCAod2hpY2hfYWx0ZXJuYXRpdmUpCisrICAgIHsKKysgICAgY2FzZSAwOiBy ZXR1cm4gInN0dnggJTEsJXkwIjsKKysgICAgY2FzZSAxOiByZXR1cm4gImx2eCAlMCwleTEiOwor KyAgICBjYXNlIDI6IHJldHVybiAidm9yICUwLCUxLCUxIjsKKysgICAgY2FzZSAzOiByZXR1cm4g IiMiOworKyAgICBjYXNlIDQ6IHJldHVybiAiIyI7CisrICAgIGNhc2UgNTogcmV0dXJuICIjIjsK KysgICAgY2FzZSA2OiByZXR1cm4gInZ4b3IgJTAsJTAsJTAiOworKyAgICBjYXNlIDc6IHJldHVy biBvdXRwdXRfdmVjX2NvbnN0X21vdmUgKG9wZXJhbmRzKTsKKysgICAgZGVmYXVsdDogZ2NjX3Vu cmVhY2hhYmxlICgpOworKyAgICB9CisrfQorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3N0b3Jl LHZlY2xvYWQsdmVjc2ltcGxlLHN0b3JlLGxvYWQsKix2ZWNzaW1wbGUsKiIpXSkKKysKKyAoZGVm aW5lX3NwbGl0CisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWTSAwICJhbHRpdmVjX3JlZ2lzdGVy X29wZXJhbmQiICIiKQorIAkobWF0Y2hfb3BlcmFuZDpWTSAxICJlYXN5X3ZlY3Rvcl9jb25zdGFu dF9hZGRfc2VsZiIgIiIpKV0KK0BAIC00MzQsMTMgKzQ2MiwxMyBAQCAoZGVmaW5lX2luc24gIiph bHRpdmVjX2dldjRzZiIKKyAgICJ2Y21wZ2VmcCAlMCwlMSwlMiIKKyAgIFsoc2V0X2F0dHIgInR5 cGUiICJ2ZWNjbXAiKV0pCisgCistKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZzZWw8bW9kZT4iCisr KGRlZmluZV9pbnNuICIqYWx0aXZlY192c2VsPG1vZGU+IgorICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6Vk0gMCAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorIAkoaWZfdGhlbl9lbHNl OlZNIChuZSAobWF0Y2hfb3BlcmFuZDpWTSAxICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2 IikKKyAJCQkgICAgIChjb25zdF9pbnQgMCkpCisgCQkJIChtYXRjaF9vcGVyYW5kOlZNIDIgImFs dGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorIAkJCSAobWF0Y2hfb3BlcmFuZDpWTSAzICJh bHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KKy0gICJWRUNUT1JfVU5JVF9BTFRJVkVD X1AgKDxNT0RFPm1vZGUpIgorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIK KyAgICJ2c2VsICUwLCUzLCUyLCUxIgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0p CisgCitAQCAtNzgwLDcgKzgwOCw3IEBAIChkZWZpbmVfaW5zbiAiYWx0aXZlY192bXJnaHciCisg CQkJCQkJICAgIChjb25zdF9pbnQgMykKKyAJCQkJCQkgICAgKGNvbnN0X2ludCAxKV0pKQorIAkJ ICAgICAgKGNvbnN0X2ludCA1KSkpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorKyAgIlZFQ1RPUl9N RU1fQUxUSVZFQ19QIChWNFNJbW9kZSkiCisgICAidm1yZ2h3ICUwLCUxLCUyIgorICAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCisgCitAQCAtNzk3LDcgKzgyNSw3IEBAIChkZWZpbmVf aW5zbiAiKmFsdGl2ZWNfdm1yZ2hzZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3RfaW50IDEpXSkpCisgICAgICAg ICAgICAgICAgICAgICAgIChjb25zdF9pbnQgNSkpKV0KKy0gICJWRUNUT1JfVU5JVF9BTFRJVkVD X1AgKFY0U0Ztb2RlKSIKKysgICJWRUNUT1JfTUVNX0FMVElWRUNfUCAoVjRTRm1vZGUpIgorICAg InZtcmdodyAlMCwlMSwlMiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQorIAor QEAgLTg4MSw3ICs5MDksNyBAQCAoZGVmaW5lX2luc24gImFsdGl2ZWNfdm1yZ2x3IgorIAkJCQkg ICAgIChjb25zdF9pbnQgMSkKKyAJCQkJICAgICAoY29uc3RfaW50IDMpXSkpCisgCSAoY29uc3Rf aW50IDUpKSldCistICAiVEFSR0VUX0FMVElWRUMiCisrICAiVkVDVE9SX01FTV9BTFRJVkVDX1Ag KFY0U0ltb2RlKSIKKyAgICJ2bXJnbHcgJTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjcGVybSIpXSkKKyAKK0BAIC04OTksNyArOTI3LDcgQEAgKGRlZmluZV9pbnNuICIqYWx0aXZl Y192bXJnbHNmIgorIAkJCQkgICAgIChjb25zdF9pbnQgMSkKKyAJCQkJICAgICAoY29uc3RfaW50 IDMpXSkpCisgCSAoY29uc3RfaW50IDUpKSldCistICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QIChW NFNGbW9kZSkiCisrICAiVkVDVE9SX01FTV9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKKyAgICJ2bXJn bHcgJTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKyAKKy0tLSBn Y2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQJKHJldmlzaW9uIDE0NjExOSkKKysrKyBnY2MvY29u ZmlnL3JzNjAwMC9yczYwMDAubWQJKHJldmlzaW9uIDE0Njc5OCkKK0BAIC0xNDY2Nyw3ICsxNDY2 NywxMSBAQCAoZGVmaW5lX2luc24gInJldHVybiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJqbXBy ZWciKV0pCisgCisgKGRlZmluZV9leHBhbmQgImluZGlyZWN0X2p1bXAiCistICBbKHNldCAocGMp IChtYXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKSldKQorKyAgWyhzZXQgKHBj KSAobWF0Y2hfb3BlcmFuZCAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikpXQorKyAgIiIKKyt7Cisr ICByczYwMDBfc2V0X2luZGlyZWN0X2p1bXAgKCk7CisrfSkKKyAKKyAoZGVmaW5lX2luc24gIipp bmRpcmVjdF9qdW1wPG1vZGU+IgorICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpQIDAgInJl Z2lzdGVyX29wZXJhbmQiICJjLCpsIikpXQorQEAgLTE0NjgyLDE0ICsxNDY4NiwxNCBAQCAoZGVm aW5lX2V4cGFuZCAidGFibGVqdW1wIgorICAgWyh1c2UgKG1hdGNoX29wZXJhbmQgMCAiIiAiIikp CisgICAgKHVzZSAobGFiZWxfcmVmIChtYXRjaF9vcGVyYW5kIDEgIiIgIiIpKSldCisgICAiIgor LSAgIgorIHsKKysgIHJzNjAwMF9zZXRfaW5kaXJlY3RfanVtcCAoKTsKKyAgIGlmIChUQVJHRVRf MzJCSVQpCisgICAgIGVtaXRfanVtcF9pbnNuIChnZW5fdGFibGVqdW1wc2kgKG9wZXJhbmRzWzBd LCBvcGVyYW5kc1sxXSkpOworICAgZWxzZQorICAgICBlbWl0X2p1bXBfaW5zbiAoZ2VuX3RhYmxl anVtcGRpIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pKTsKKyAgIERPTkU7CistfSIpCisrfSkK KyAKKyAoZGVmaW5lX2V4cGFuZCAidGFibGVqdW1wc2kiCisgICBbKHNldCAobWF0Y2hfZHVwIDMp CitAQCAtMTQ3NDksNiArMTQ3NTMsMTEgQEAgKGRlZmluZV9leHBhbmQgImRvbG9vcF9lbmQiCisg ICAvKiBPbmx5IHVzZSB0aGlzIG9uIGlubmVybW9zdCBsb29wcy4gICovCisgICBpZiAoSU5UVkFM IChvcGVyYW5kc1szXSkgPiAxKQorICAgICBGQUlMOworKyAgLyogRG8gbm90IHRyeSB0byB1c2Ug ZGVjcmVtZW50IGFuZCBjb3VudCBvbiBjb2RlIHRoYXQgaGFzIGFuIGluZGlyZWN0CisrICAgICBq dW1wIG9yIGEgdGFibGUganVtcCwgYmVjYXVzZSB0aGUgY3RyIHJlZ2lzdGVyIGlzIHByZWZlcnJl ZCBvdmVyIHRoZQorKyAgICAgbHIgcmVnaXN0ZXIuICAqLworKyAgaWYgKHJzNjAwMF9oYXNfaW5k aXJlY3RfanVtcF9wICgpKQorKyAgICBGQUlMOworICAgaWYgKFRBUkdFVF82NEJJVCkKKyAgICAg eworICAgICAgIGlmIChHRVRfTU9ERSAob3BlcmFuZHNbMF0pICE9IERJbW9kZSkKCmRpZmYgLS1n aXQgYS9nY2M0NC1wcjM5NTQzLnBhdGNoIGIvZ2NjNDQtcHIzOTU0My5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0YzZiNS4uMDAwMDAwMAotLS0gYS9nY2M0NC1wcjM5NTQz LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLTIwMDktMDQtMTAgIEpha3Vi IEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgcnRsLW9wdGltaXphdGlvbi8zOTU0 MwotCSogZndwcm9wLmMgKGZvcndhcmRfcHJvcGFnYXRlX2FzbSk6IE5ldyBmdW5jdGlvbi4KLQko Zm9yd2FyZF9wcm9wYWdhdGVfYW5kX3NpbXBsaWZ5KTogUHJvcGFnYXRlIGFsc28gaW50byBfX2Fz bSwgaWYgaXQKLQlkb2Vzbid0IGluY3JlYXNlIHRoZSBudW1iZXIgb2YgcmVmZXJlbmNlZCByZWdp c3RlcnMuCi0KLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjM5NTQzLTEuYzogTmV3IHRlc3QuCi0JKiBn Y2MudGFyZ2V0L2kzODYvcHIzOTU0My0yLmM6IE5ldyB0ZXN0LgotCSogZ2NjLnRhcmdldC9pMzg2 L3ByMzk1NDMtMy5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9md3Byb3AuYy5qagkyMDA5LTAzLTMw IDEyOjQ1OjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy9md3Byb3AuYwkyMDA5LTA0LTEwIDE2 OjE5OjM2LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsNSArMSw1IEBACi0gLyogUlRMLWJhc2VkIGZv cndhcmQgcHJvcGFnYXRpb24gcGFzcyBmb3IgR05VIGNvbXBpbGVyLgotLSAgIENvcHlyaWdodCAo QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsgICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkgUGFvbG8gQm9uemluaSBh bmQgU3RldmVuIEJvc3NjaGVyLgotIAotIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KLUBAIC04 NTIsNiArODUyLDgwIEBAIGZvcndhcmRfcHJvcGFnYXRlX3N1YnJlZyAoZGZfcmVmIHVzZSwgcnQK LSAgICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLSsvKiBUcnkgdG8gcmVwbGFjZSBVU0Ugd2l0aCBT UkMgKGRlZmluZWQgaW4gREVGX0lOU04pIGluIF9fYXNtLiAgKi8KLSsKLStzdGF0aWMgYm9vbAot K2ZvcndhcmRfcHJvcGFnYXRlX2FzbSAoZGZfcmVmIHVzZSwgcnR4IGRlZl9pbnNuLCBydHggZGVm X3NldCwgcnR4IHJlZykKLSt7Ci0rICBydHggdXNlX2luc24gPSBERl9SRUZfSU5TTiAodXNlKSwg c3JjLCB1c2VfcGF0LCBhc21fb3BlcmFuZHMsIG5ld19ydHgsICpsb2M7Ci0rICBpbnQgc3BlZWRf cCwgaTsKLSsgIGRmX3JlZiAqdXNlX3ZlYzsKLSsKLSsgIGdjY19hc3NlcnQgKChERl9SRUZfRkxB R1MgKHVzZSkgJiBERl9SRUZfSU5fTk9URSkgPT0gMCk7Ci0rCi0rICBzcmMgPSBTRVRfU1JDIChk ZWZfc2V0KTsKLSsgIHVzZV9wYXQgPSBQQVRURVJOICh1c2VfaW5zbik7Ci0rCi0rICAvKiBJbiBf X2FzbSBkb24ndCByZXBsYWNlIGlmIHNyYyBtaWdodCBuZWVkIG1vcmUgcmVnaXN0ZXJzIHRoYW4K LSsgICAgIHJlZywgYXMgdGhhdCBjb3VsZCBpbmNyZWFzZSByZWdpc3RlciBwcmVzc3VyZSBvbiB0 aGUgX19hc20uICAqLwotKyAgdXNlX3ZlYyA9IERGX0lOU05fVVNFUyAoZGVmX2luc24pOwotKyAg aWYgKHVzZV92ZWNbMF0gJiYgdXNlX3ZlY1sxXSkKLSsgICAgcmV0dXJuIGZhbHNlOwotKwotKyAg c3BlZWRfcCA9IG9wdGltaXplX2JiX2Zvcl9zcGVlZF9wIChCTE9DS19GT1JfSU5TTiAodXNlX2lu c24pKTsKLSsgIGFzbV9vcGVyYW5kcyA9IE5VTExfUlRYOwotKyAgc3dpdGNoIChHRVRfQ09ERSAo dXNlX3BhdCkpCi0rICAgIHsKLSsgICAgY2FzZSBBU01fT1BFUkFORFM6Ci0rICAgICAgYXNtX29w ZXJhbmRzID0gdXNlX3BhdDsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBTRVQ6Ci0rICAgICAg aWYgKE1FTV9QIChTRVRfREVTVCAodXNlX3BhdCkpKQotKwl7Ci0rCSAgbG9jID0gJlNFVF9ERVNU ICh1c2VfcGF0KTsKLSsJICBuZXdfcnR4ID0gcHJvcGFnYXRlX3J0eCAoKmxvYywgR0VUX01PREUg KCpsb2MpLCByZWcsIHNyYywgc3BlZWRfcCk7Ci0rCSAgaWYgKG5ld19ydHgpCi0rCSAgICB2YWxp ZGF0ZV91bnNoYXJlX2NoYW5nZSAodXNlX2luc24sIGxvYywgbmV3X3J0eCwgdHJ1ZSk7Ci0rCX0K LSsgICAgICBhc21fb3BlcmFuZHMgPSBTRVRfU1JDICh1c2VfcGF0KTsKLSsgICAgICBicmVhazsK LSsgICAgY2FzZSBQQVJBTExFTDoKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgWFZFQ0xFTiAodXNl X3BhdCwgMCk7IGkrKykKLSsJaWYgKEdFVF9DT0RFIChYVkVDRVhQICh1c2VfcGF0LCAwLCBpKSkg PT0gU0VUKQotKwkgIHsKLSsJICAgIGlmIChNRU1fUCAoU0VUX0RFU1QgKFhWRUNFWFAgKHVzZV9w YXQsIDAsIGkpKSkpCi0rCSAgICAgIHsKLSsJCWxvYyA9ICZTRVRfREVTVCAoWFZFQ0VYUCAodXNl X3BhdCwgMCwgaSkpOwotKwkJbmV3X3J0eCA9IHByb3BhZ2F0ZV9ydHggKCpsb2MsIEdFVF9NT0RF ICgqbG9jKSwgcmVnLAotKwkJCQkJIHNyYywgc3BlZWRfcCk7Ci0rCQlpZiAobmV3X3J0eCkKLSsJ CSAgdmFsaWRhdGVfdW5zaGFyZV9jaGFuZ2UgKHVzZV9pbnNuLCBsb2MsIG5ld19ydHgsIHRydWUp OwotKwkgICAgICB9Ci0rCSAgICBhc21fb3BlcmFuZHMgPSBTRVRfU1JDIChYVkVDRVhQICh1c2Vf cGF0LCAwLCBpKSk7Ci0rCSAgfQotKwllbHNlIGlmIChHRVRfQ09ERSAoWFZFQ0VYUCAodXNlX3Bh dCwgMCwgaSkpID09IEFTTV9PUEVSQU5EUykKLSsJICBhc21fb3BlcmFuZHMgPSBYVkVDRVhQICh1 c2VfcGF0LCAwLCBpKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBnY2Nf dW5yZWFjaGFibGUgKCk7Ci0rICAgIH0KLSsKLSsgIGdjY19hc3NlcnQgKGFzbV9vcGVyYW5kcyAm JiBHRVRfQ09ERSAoYXNtX29wZXJhbmRzKSA9PSBBU01fT1BFUkFORFMpOwotKyAgZm9yIChpID0g MDsgaSA8IEFTTV9PUEVSQU5EU19JTlBVVF9MRU5HVEggKGFzbV9vcGVyYW5kcyk7IGkrKykKLSsg ICAgewotKyAgICAgIGxvYyA9ICZBU01fT1BFUkFORFNfSU5QVVQgKGFzbV9vcGVyYW5kcywgaSk7 Ci0rICAgICAgbmV3X3J0eCA9IHByb3BhZ2F0ZV9ydHggKCpsb2MsIEdFVF9NT0RFICgqbG9jKSwg cmVnLCBzcmMsIHNwZWVkX3ApOwotKyAgICAgIGlmIChuZXdfcnR4KQotKwl2YWxpZGF0ZV91bnNo YXJlX2NoYW5nZSAodXNlX2luc24sIGxvYywgbmV3X3J0eCwgdHJ1ZSk7Ci0rICAgIH0KLSsKLSsg IGlmIChudW1fY2hhbmdlc19wZW5kaW5nICgpID09IDAgfHwgIWFwcGx5X2NoYW5nZV9ncm91cCAo KSkKLSsgICAgcmV0dXJuIGZhbHNlOwotKwotKyAgbnVtX2NoYW5nZXMrKzsKLSsgIHJldHVybiB0 cnVlOwotK30KLSsKLSAvKiBUcnkgdG8gcmVwbGFjZSBVU0Ugd2l0aCBTUkMgKGRlZmluZWQgaW4g REVGX0lOU04pIGFuZCBzaW1wbGlmeSB0aGUKLSAgICByZXN1bHQuICAqLwotIAotQEAgLTg2Mywx MiArOTM3LDE2IEBAIGZvcndhcmRfcHJvcGFnYXRlX2FuZF9zaW1wbGlmeSAoZGZfcmVmIHUKLSAg IHJ0eCBzcmMsIHJlZywgbmV3X3J0eCwgKmxvYzsKLSAgIGJvb2wgc2V0X3JlZ19lcXVhbDsKLSAg IGVudW0gbWFjaGluZV9tb2RlIG1vZGU7Ci0rICBpbnQgYXNtX3VzZSA9IC0xOwotKwotKyAgaWYg KElOU05fQ09ERSAodXNlX2luc24pIDwgMCkKLSsgICAgYXNtX3VzZSA9IGFzbV9ub3BlcmFuZHMg KFBBVFRFUk4gKHVzZV9pbnNuKSk7Ci0gCi0tICBpZiAoIXVzZV9zZXQpCi0rICBpZiAoIXVzZV9z ZXQgJiYgYXNtX3VzZSA8IDApCi0gICAgIHJldHVybiBmYWxzZTsKLSAKLSAgIC8qIERvIG5vdCBw cm9wYWdhdGUgaW50byBQQywgQ0MwLCBldGMuICAqLwotLSAgaWYgKEdFVF9NT0RFIChTRVRfREVT VCAodXNlX3NldCkpID09IFZPSURtb2RlKQotKyAgaWYgKHVzZV9zZXQgJiYgR0VUX01PREUgKFNF VF9ERVNUICh1c2Vfc2V0KSkgPT0gVk9JRG1vZGUpCi0gICAgIHJldHVybiBmYWxzZTsKLSAKLSAg IC8qIElmIGRlZiBhbmQgdXNlIGFyZSBzdWJyZWcsIGNoZWNrIGlmIHRoZXkgbWF0Y2guICAqLwot QEAgLTkwMCw3ICs5NzgsNyBAQCBmb3J3YXJkX3Byb3BhZ2F0ZV9hbmRfc2ltcGxpZnkgKGRmX3Jl ZiB1Ci0gICBpZiAoTUVNX1AgKHNyYykgJiYgTUVNX1JFQURPTkxZX1AgKHNyYykpCi0gICAgIHsK LSAgICAgICBydHggeCA9IGF2b2lkX2NvbnN0YW50X3Bvb2xfcmVmZXJlbmNlIChzcmMpOwotLSAg ICAgIGlmICh4ICE9IHNyYykKLSsgICAgICBpZiAoeCAhPSBzcmMgJiYgdXNlX3NldCkKLSAJewot ICAgICAgICAgICBydHggbm90ZSA9IGZpbmRfcmVnX25vdGUgKHVzZV9pbnNuLCBSRUdfRVFVQUws IE5VTExfUlRYKTsKLSAJICBydHggb2xkX3J0eCA9IG5vdGUgPyBYRVhQIChub3RlLCAwKSA6IFNF VF9TUkMgKHVzZV9zZXQpOwotQEAgLTkxMSw2ICs5ODksOSBAQCBmb3J3YXJkX3Byb3BhZ2F0ZV9h bmRfc2ltcGxpZnkgKGRmX3JlZiB1Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0gCi0r ICBpZiAoYXNtX3VzZSA+PSAwKQotKyAgICByZXR1cm4gZm9yd2FyZF9wcm9wYWdhdGVfYXNtICh1 c2UsIGRlZl9pbnNuLCBkZWZfc2V0LCByZWcpOwotKwotICAgLyogRWxzZSB0cnkgc2ltcGxpZnlp bmcuICAqLwotIAotICAgaWYgKERGX1JFRl9UWVBFICh1c2UpID09IERGX1JFRl9SRUdfTUVNX1NU T1JFKQotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMzk1NDMtMS5jLmpqCTIw MDktMDQtMDkgMDk6NDc6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvcHIzOTU0My0xLmMJMjAwOS0wNC0wOSAwOTo0NzoxNi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0wLDAgKzEsNTIgQEAKLSsvKiBQUiBydGwtb3B0aW1pemF0aW9uLzM5NTQzICovCi0r LyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMyAtZm9taXQtZnJh bWUtcG9pbnRlciIgfSAqLwotKwotK2Zsb2F0IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgxNikp KSBzMFsxMjhdOwotK2NvbnN0IGZsb2F0IHMxID0gMC43MDc7Ci0rZmxvYXQgczJbOF0gX19hdHRy aWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwotK2Zsb2F0IHMzWzhdIF9fYXR0cmlidXRlX18gKChh bGlnbmVkICgxNikpKTsKLStmbG9hdCBzNFsxNl0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDE2 KSkpOwotK2Zsb2F0IHM1WzE2XSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7Ci0rCi0r dm9pZAotK2ZvbyAoaW50IGssIGZsb2F0ICp4LCBmbG9hdCAqeSwgY29uc3QgZmxvYXQgKmQsIGNv bnN0IGZsb2F0ICp6KQotK3sKLSsgIGZsb2F0ICphLCAqYiwgKmMsICplOwotKwotKyAgYSA9IHgg KyAyICogazsKLSsgIGIgPSBhICsgMiAqIGs7Ci0rICBjID0gYiArIDIgKiBrOwotKyAgZSA9IHkg KyAyICogazsKLSsgIF9fYXNtX18gdm9sYXRpbGUgKCIiCi0rCQkgICAgOiAiPW0iICh4WzBdKSwg Ij1tIiAoYlswXSksICI9bSIgKGFbMF0pLCAiPW0iIChjWzBdKQotKwkJICAgIDogIm0iICh5WzBd KSwgIm0iICh5W2sgKiAyXSksICJtIiAoeFswXSksICJtIiAoYVswXSkKLSsJCSAgICA6ICJtZW1v cnkiKTsKLSsgIGZvciAoOzspCi0rICAgIHsKLSsgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiIgot KwkJCToKLSsJCQk6ICJtIiAoeVsyXSksICJtIiAoZFsyXSksICJtIiAoZVsyXSksICJtIiAoelsy XSkKLSsJCQk6ICJtZW1vcnkiKTsKLSsgICAgICBpZiAoIS0taykKLSsJYnJlYWs7Ci0rICAgIH0K LSsgIF9fYXNtX18gdm9sYXRpbGUgKCIiCi0rCQkgICAgOiAiPW0iICh4WzJdKSwgIj1tIiAoeFsx MF0pLCAiPW0iICh4WzZdKSwgIj1tIiAoeFsxNF0pCi0rCQkgICAgOiAibSIgKHlbMl0pLCAibSIg KHlbNl0pLCAibSIgKHhbMl0pLCAibSIgKHhbNl0pLAotKwkJICAgICAgIm0iICh5WzE4XSksICJt IiAoczEpCi0rCQkgICAgOiAibWVtb3J5Iik7Ci0rfQotKwotK3ZvaWQKLStiYXIgKGZsb2F0ICph KQotK3sKLSsgIGZvbyAoNCwgYSwgYSArIDE2LCBzMiwgczMpOwotKyAgZm9vICg4LCBhLCBhICsg MzIsIHM0LCBzNSk7Ci0rfQotKwotK3ZvaWQKLStiYXogKHZvaWQpCi0rewotKyAgYmFyIChzMCk7 Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMzk1NDMtMi5jLmpqCTIw MDktMDQtMDkgMDk6NDc6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvcHIzOTU0My0yLmMJMjAwOS0wNC0wOSAwOTo0NzoxNi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0wLDAgKzEsNTEgQEAKLSsvKiBQUiBydGwtb3B0aW1pemF0aW9uLzM5NTQzICovCi0r LyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLwotKwot K2Zsb2F0IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgxNikpKSBzMFsxMjhdOwotK2NvbnN0IGZs b2F0IHMxID0gMC43MDc7Ci0rZmxvYXQgczJbOF0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDE2 KSkpOwotK2Zsb2F0IHMzWzhdIF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgxNikpKTsKLStmbG9h dCBzNFsxNl0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwotK2Zsb2F0IHM1WzE2XSBf X2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7Ci0rCi0rdm9pZAotK2ZvbyAoaW50IGssIGZs b2F0ICp4LCBmbG9hdCAqeSwgY29uc3QgZmxvYXQgKmQsIGNvbnN0IGZsb2F0ICp6KQotK3sKLSsg IGZsb2F0ICphLCAqYiwgKmMsICplOwotKwotKyAgYSA9IHggKyAyICogazsKLSsgIGIgPSBhICsg MiAqIGs7Ci0rICBjID0gYiArIDIgKiBrOwotKyAgZSA9IHkgKyAyICogazsKLSsgIF9fYXNtX18g dm9sYXRpbGUgKCIiCi0rCQkgICAgOiAiPW0iICh4WzBdKSwgIj1tIiAoYlswXSksICI9bSIgKGFb MF0pLCAiPW0iIChjWzBdKQotKwkJICAgIDogIm0iICh5WzBdKSwgIm0iICh5W2sgKiAyXSksICJt IiAoeFswXSksICJtIiAoYVswXSkKLSsJCSAgICA6ICJtZW1vcnkiKTsKLSsgIGZvciAoOzspCi0r ICAgIHsKLSsgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiIgotKwkJCToKLSsJCQk6ICJtIiAoeVsy XSksICJtIiAoZFsyXSksICJtIiAoZVsyXSksICJtIiAoelsyXSkKLSsJCQk6ICJtZW1vcnkiKTsK LSsgICAgICBpZiAoIS0taykKLSsJYnJlYWs7Ci0rICAgIH0KLSsgIF9fYXNtX18gdm9sYXRpbGUg KCIiCi0rCQkgICAgOiAiPW0iICh4WzJdKSwgIj1tIiAoeFsxMF0pLCAiPW0iICh4WzZdKSwgIj1t IiAoeFsxNF0pCi0rCQkgICAgOiAibSIgKHlbMl0pLCAibSIgKHlbNl0pLCAibSIgKHhbMl0pLCAi bSIgKHhbNl0pLCAibSIgKHMxKQotKwkJICAgIDogIm1lbW9yeSIpOwotK30KLSsKLSt2b2lkCi0r YmFyIChmbG9hdCAqYSkKLSt7Ci0rICBmb28gKDQsIGEsIGEgKyAxNiwgczIsIHMzKTsKLSsgIGZv byAoOCwgYSwgYSArIDMyLCBzNCwgczUpOwotK30KLSsKLSt2b2lkCi0rYmF6ICh2b2lkKQotK3sK LSsgIGJhciAoczApOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjM5 NTQzLTMuYy5qagkyMDA5LTA0LTA5IDA5OjQ3OjE2LjAwMDAwMDAwMCArMDIwMAotKysrIGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByMzk1NDMtMy5jCTIwMDktMDQtMDkgMDk6NDc6MTYu MDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDQyIEBACi0rLyogUFIgcnRsLW9wdGltaXphdGlv bi8zOTU0MyAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICIt TzIiIH0gKi8KLSsKLStpbnQgc1sxMjhdOwotKwotK3ZvaWQKLStmMSAodm9pZCkKLSt7Ci0rICBp bnQgaTsKLSsgIGFzbSB2b2xhdGlsZSAoIiMgJTAgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkg JTEwICUxMSAlMTIgJTEzICUxNCAlMTUgJTE2ICUxNyIKLSsJCTogIj1yIiAoaSkKLSsJCTogIm0i IChzWzBdKSwgIm0iIChzWzJdKSwgIm0iIChzWzRdKSwgIm0iIChzWzZdKSwgIm0iIChzWzhdKSwK LSsJCSAgIm0iIChzWzEwXSksICJtIiAoc1sxMl0pLCAibSIgKHNbMTRdKSwgIm0iIChzWzE2XSks ICJtIiAoc1sxOF0pLAotKwkJICAibSIgKHNbMjBdKSwgIm0iIChzWzIyXSksICJtIiAoc1syNF0p LCAibSIgKHNbMjZdKSwgIm0iIChzWzI4XSksCi0rCQkgICJtIiAoc1szMF0pLCAibSIgKHNbMzJd KSk7Ci0rICBhc20gdm9sYXRpbGUgKCIjICUwICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5ICUx MCAlMTEgJTEyICUxMyAlMTQgJTE1ICUxNiAlMTciCi0rCQk6ICI9ciIgKGkpCi0rCQk6ICJtIiAo c1swXSksICJtIiAoc1syXSksICJtIiAoc1s0XSksICJtIiAoc1s2XSksICJtIiAoc1s4XSksCi0r CQkgICJtIiAoc1sxMF0pLCAibSIgKHNbMTJdKSwgIm0iIChzWzE0XSksICJtIiAoc1sxNl0pLCAi bSIgKHNbMThdKSwKLSsJCSAgIm0iIChzWzIwXSksICJtIiAoc1syMl0pLCAibSIgKHNbMjRdKSwg Im0iIChzWzI2XSksICJtIiAoc1syOF0pLAotKwkJICAibSIgKHNbMzBdKSwgIm0iIChzWzMyXSkp OwotK30KLSsKLSt2b2lkCi0rZjIgKGludCAqcSkKLSt7Ci0rICBpbnQgaTsKLSsgIGludCAqcCA9 IHEgKyAzMjsKLSsgIGFzbSB2b2xhdGlsZSAoIiMgJTAgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTgg JTkgJTEwICUxMSAlMTIgJTEzICUxNCAlMTUgJTE2ICUxNyIKLSsJCTogIj1yIiAoaSkKLSsJCTog Im0iIChwWzBdKSwgIm0iIChwWzJdKSwgIm0iIChwWzRdKSwgIm0iIChwWzZdKSwgIm0iIChwWzhd KSwKLSsJCSAgIm0iIChwWzEwXSksICJtIiAocFsxMl0pLCAibSIgKHBbMTRdKSwgIm0iIChwWzE2 XSksICJtIiAocFsxOF0pLAotKwkJICAibSIgKHBbMjBdKSwgIm0iIChwWzIyXSksICJtIiAocFsy NF0pLCAibSIgKHBbMjZdKSwgIm0iIChwWzI4XSksCi0rCQkgICJtIiAocFszMF0pLCAibSIgKHBb MzJdKSk7Ci0rICBhc20gdm9sYXRpbGUgKCIjICUwICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5 ICUxMCAlMTEgJTEyICUxMyAlMTQgJTE1ICUxNiAlMTciCi0rCQk6ICI9ciIgKGkpCi0rCQk6ICJt IiAocFswXSksICJtIiAocFsyXSksICJtIiAocFs0XSksICJtIiAocFs2XSksICJtIiAocFs4XSks Ci0rCQkgICJtIiAocFsxMF0pLCAibSIgKHBbMTJdKSwgIm0iIChwWzE0XSksICJtIiAocFsxNl0p LCAibSIgKHBbMThdKSwKLSsJCSAgIm0iIChwWzIwXSksICJtIiAocFsyMl0pLCAibSIgKHBbMjRd KSwgIm0iIChwWzI2XSksICJtIiAocFsyOF0pLAotKwkJICAibSIgKHBbMzBdKSwgIm0iIChwWzMy XSkpOwotK30KCmRpZmYgLS1naXQgYS9nY2M0NC1wcjM5NzYzLnBhdGNoIGIvZ2NjNDQtcHIzOTc2 My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRmM2JiNC4uMDAwMDAwMAot LS0gYS9nY2M0NC1wcjM5NzYzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAot MjAwOS0wNC0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+Ci0KLQlQUiBjKysv Mzk3NjMKLQkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IEF2b2lkIGFs bCB3YXJuaW5ncwotCWFib3V0IHNoYWRvd2luZyBieSB0ZW50YXRpdmUgcGFybXMuCi0KLQkqIGcr Ky5kZy93YXJuL1dzaGFkb3ctNC5DOiBFeHRlbmQuCi0KLS0tLSBnY2MvY3AvbmFtZS1sb29rdXAu YwkocmV2aXNpb24gMTQ2MDUzKQotKysrIGdjYy9jcC9uYW1lLWxvb2t1cC5jCShyZXZpc2lvbiAx NDYwNTQpCi1AQCAtMTAwMiwxMyArMTAwMiwxOCBAQCBwdXNoZGVjbF9tYXliZV9mcmllbmQgKHRy ZWUgeCwgYm9vbCBpc19mCi0gCSAgICAgICYmIFRSRUVfUFVCTElDICh4KSkKLSAJICAgIFRSRUVf UFVCTElDIChuYW1lKSA9IDE7Ci0gCi0rCSAgLyogRG9uJ3QgY29tcGxhaW4gYWJvdXQgdGhlIHBh cm1zIHdlIHB1c2ggYW5kIHRoZW4gcG9wCi0rCSAgICAgd2hpbGUgdGVudGF0aXZlbHkgcGFyc2lu ZyBhIGZ1bmN0aW9uIGRlY2xhcmF0b3IuICAqLwotKwkgIGlmIChUUkVFX0NPREUgKHgpID09IFBB Uk1fREVDTCAmJiBERUNMX0NPTlRFWFQgKHgpID09IE5VTExfVFJFRSkKLSsJICAgIC8qIElnbm9y ZS4gICovOwotKwotIAkgIC8qIFdhcm4gaWYgc2hhZG93aW5nIGFuIGFyZ3VtZW50IGF0IHRoZSB0 b3AgbGV2ZWwgb2YgdGhlIGJvZHkuICAqLwotLQkgIGlmIChvbGRsb2NhbCAhPSBOVUxMX1RSRUUg JiYgIURFQ0xfRVhURVJOQUwgKHgpCi0tCSAgICAgIC8qIElubGluZSBkZWNscyBzaGFkb3cgbm90 aGluZy4gICovCi0tCSAgICAgICYmICFERUNMX0ZST01fSU5MSU5FICh4KQotLQkgICAgICAmJiBU UkVFX0NPREUgKG9sZGxvY2FsKSA9PSBQQVJNX0RFQ0wKLS0JICAgICAgLyogRG9uJ3QgY2hlY2sg dGhlIGB0aGlzJyBwYXJhbWV0ZXIuICAqLwotLQkgICAgICAmJiAhREVDTF9BUlRJRklDSUFMIChv bGRsb2NhbCkpCi0rCSAgZWxzZSBpZiAob2xkbG9jYWwgIT0gTlVMTF9UUkVFICYmICFERUNMX0VY VEVSTkFMICh4KQotKwkJICAgLyogSW5saW5lIGRlY2xzIHNoYWRvdyBub3RoaW5nLiAgKi8KLSsJ CSAgICYmICFERUNMX0ZST01fSU5MSU5FICh4KQotKwkJICAgJiYgVFJFRV9DT0RFIChvbGRsb2Nh bCkgPT0gUEFSTV9ERUNMCi0rCQkgICAvKiBEb24ndCBjaGVjayB0aGUgYHRoaXMnIHBhcmFtZXRl ci4gICovCi0rCQkgICAmJiAhREVDTF9BUlRJRklDSUFMIChvbGRsb2NhbCkpCi0gCSAgICB7Ci0g CSAgICAgIGJvb2wgZXJyID0gZmFsc2U7Ci0gCi1AQCAtMTAzMiwxMCArMTAzNyw3IEBAIHB1c2hk ZWNsX21heWJlX2ZyaWVuZCAodHJlZSB4LCBib29sIGlzX2YKLSAJCSAgICB9Ci0gCQl9Ci0gCi0t CSAgICAgIGlmICh3YXJuX3NoYWRvdyAmJiAhZXJyCi0tCQkgIC8qIERvbid0IGNvbXBsYWluIGFi b3V0IHRoZSBwYXJtcyB3ZSBwdXNoIGFuZCB0aGVuIHBvcAotLQkJICAgICB3aGlsZSB0ZW50YXRp dmVseSBwYXJzaW5nIGEgZnVuY3Rpb24gZGVjbGFyYXRvci4gICovCi0tCQkgICYmICEoVFJFRV9D T0RFICh4KSA9PSBQQVJNX0RFQ0wgJiYgREVDTF9DT05URVhUICh4KSA9PSBOVUxMX1RSRUUpKQot KwkgICAgICBpZiAod2Fybl9zaGFkb3cgJiYgIWVycikKLSAJCXsKLSAJCSAgd2FybmluZyAoT1BU X1dzaGFkb3csICJkZWNsYXJhdGlvbiBvZiAlcSNEIHNoYWRvd3MgYSBwYXJhbWV0ZXIiLCB4KTsK LSAJCSAgd2FybmluZyAoT1BUX1dzaGFkb3csICIlSnNoYWRvd2VkIGRlY2xhcmF0aW9uIGlzIGhl cmUiLCBvbGRsb2NhbCk7Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9Xc2hhZG93LTQu QwkocmV2aXNpb24gMTQ2MDUzKQotKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL3dhcm4vV3NoYWRv dy00LkMJKHJldmlzaW9uIDE0NjA1NCkKLUBAIC0xOCwzICsxOCwxNSBAQCBpbnQgZm9vKGludCBp bmZvbykJCS8vIHsgZGctd2FybmluZyAic2hhCi0gICB9OwotICAgcmV0dXJuIG91dGZvbzsKLSB9 Ci0rCi0rLy8gUFIgYysrLzM5NzYzCi0raW50IGZvbzIodm9pZCkKLSt7Ci0rICAgIGludCBpbmZv byA9IDA7CQkvLyB7IGRnLXdhcm5pbmcgInNoYWRvd2VkIGRlY2xhcmF0aW9uIiB9Ci0rICAgIGlu dCBvdXRmb28oIElOZXRVUkxPYmplY3QoIGluZm9vICkuR2V0TWFpblVSTCgpKTsgLy8geyBkZy1i b2d1cyAic2hhZG93cyIgfQotKyAgICBzdHJ1Y3QgQQotKyAgICB7Ci0rICAgICAgdm9pZCBmKGlu dCBpbmZvbykgeyB9CS8vIHsgZGctd2FybmluZyAic2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIiB9 Ci0rICAgIH07Ci0rICAgIHJldHVybiBvdXRmb287Ci0rfQotIDIwMDktMDQtMTMgIEphc29uIE1l cnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgotIAotIAlQUiBjKysvMzk0ODAKCmRpZmYgLS1naXQg YS9nY2M0NC1wcjM5ODU2LnBhdGNoIGIvZ2NjNDQtcHIzOTg1Ni5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmM4OGZlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDQt cHIzOTg1Ni5wYXRjaApAQCAtMCwwICsxLDQzIEBACisyMDA5LTA0LTI0ICBWbGFkaW1pciBNYWth cm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KKworCVBSIHRhcmdldC8zOTg1NgorCSogcmVnLXN0 YWNrLmMgKHN1YnN0X3N0YWNrX3JlZ3NfcGF0KTogUmVtb3ZlIGdjY19hc3NlcnQgZm9yIG5vdGUK Kwlmb3IgY2xvYmJlci4KKworLS0tIGdjYy9yZWctc3RhY2suYwkocmV2aXNpb24gMTQ2NjQ4KQor KysrIGdjYy9yZWctc3RhY2suYwkod29ya2luZyBjb3B5KQorQEAgLTEzNzEsMjEgKzEzNzEsMjMg QEAgc3Vic3Rfc3RhY2tfcmVnc19wYXQgKHJ0eCBpbnNuLCBzdGFjayByZQorIAorIAkgICAgaWYg KHBhdCAhPSBQQVRURVJOIChpbnNuKSkKKyAJICAgICAgeworLQkJLyogVGhlIGZpeF90cnVuY2Rp XzEgcGF0dGVybiB3YW50cyB0byBiZSBhYmxlIHRvIGFsbG9jYXRlCistCQkgICBpdHMgb3duIHNj cmF0Y2ggcmVnaXN0ZXIuICBJdCBkb2VzIHRoaXMgYnkgY2xvYmJlcmluZworLQkJICAgYW4gZnAg cmVnIHNvIHRoYXQgaXQgaXMgYXNzdXJlZCBvZiBhbiBlbXB0eSByZWctc3RhY2sKKy0JCSAgIHJl Z2lzdGVyLiAgSWYgdGhlIHJlZ2lzdGVyIGlzIGxpdmUsIGtpbGwgaXQgbm93LgorLQkJICAgUmVt b3ZlIHRoZSBERUFEL1VOVVNFRCBub3RlIHNvIHdlIGRvbid0IHRyeSB0byBraWxsIGl0CistCQkg ICBsYXRlciB0b28uICAqLworKwkJLyogVGhlIGZpeF90cnVuY2RpXzEgcGF0dGVybiB3YW50cyB0 byBiZSBhYmxlIHRvCisrCQkgICBhbGxvY2F0ZSBpdHMgb3duIHNjcmF0Y2ggcmVnaXN0ZXIuICBJ dCBkb2VzIHRoaXMgYnkKKysJCSAgIGNsb2JiZXJpbmcgYW4gZnAgcmVnIHNvIHRoYXQgaXQgaXMg YXNzdXJlZCBvZiBhbgorKwkJICAgZW1wdHkgcmVnLXN0YWNrIHJlZ2lzdGVyLiAgSWYgdGhlIHJl Z2lzdGVyIGlzIGxpdmUsCisrCQkgICBraWxsIGl0IG5vdy4gIFJlbW92ZSB0aGUgREVBRC9VTlVT RUQgbm90ZSBzbyB3ZQorKwkJICAgZG9uJ3QgdHJ5IHRvIGtpbGwgaXQgbGF0ZXIgdG9vLgorKwor KwkJICAgSW4gcmVhbGl0eSB0aGUgVU5VU0VEIG5vdGUgY2FuIGJlIGFic2VudCBpbiBzb21lCisr CQkgICBjb21wbGljYXRlZCBjYXNlcyB3aGVuIHRoZSByZWdpc3RlciBpcyByZXVzZWQgZm9yCisr CQkgICBwYXJ0aWFsbHkgc2V0IHZhcmlhYmxlLiAgKi8KKyAKKyAJCWlmIChub3RlKQorIAkJICBl bWl0X3BvcF9pbnNuIChpbnNuLCByZWdzdGFjaywgKmRlc3QsIEVNSVRfQkVGT1JFKTsKKyAJCWVs c2UKKy0JCSAgeworLQkJICAgIG5vdGUgPSBmaW5kX3JlZ19ub3RlIChpbnNuLCBSRUdfVU5VU0VE LCAqZGVzdCk7CistCQkgICAgZ2NjX2Fzc2VydCAobm90ZSk7CistCQkgIH0KKy0JCXJlbW92ZV9u b3RlIChpbnNuLCBub3RlKTsKKysJCSAgbm90ZSA9IGZpbmRfcmVnX25vdGUgKGluc24sIFJFR19V TlVTRUQsICpkZXN0KTsKKysJCWlmIChub3RlKQorKwkJICByZW1vdmVfbm90ZSAoaW5zbiwgbm90 ZSk7CisgCQlyZXBsYWNlX3JlZyAoZGVzdCwgRklSU1RfU1RBQ0tfUkVHICsgMSk7CisgCSAgICAg IH0KKyAJICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nY2M0NC1wcjM5OTQyLnBhdGNoIGIvZ2NjNDQt cHIzOTk0Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjc3ZWI2 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDQtcHIzOTk0Mi5wYXRjaApAQCAtMCwwICsxLDMzIEBA CisyMDA5LTA1LTA1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIHRh cmdldC8zOTk0MgorCSogY29uZmlnL2kzODYveDg2LTY0LmggKEFTTV9PVVRQVVRfTUFYX1NLSVBf QUxJR04pOiBEb24ndCBlbWl0IHNlY29uZAorCS5wMmFsaWduIDMgaWYgTUFYX1NLSVAgaXMgc21h bGxlciB0aGFuIDcuCisJKiBjb25maWcvaTM4Ni9saW51eC5oIChBU01fT1VUUFVUX01BWF9TS0lQ X0FMSUdOKTogTGlrZXdpc2UuCisKKy0tLSBnY2MvY29uZmlnL2kzODYveDg2LTY0LmguamoJMjAw OS0wNS0wNSAwODozMzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnY2MvY29uZmlnL2kzODYveDg2 LTY0LmgJMjAwOS0wNS0wNSAxNjozNzoxMy4wMDAwMDAwMDAgKzAyMDAKK0BAIC03NCw3ICs3NCw5 IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKKyAJZnByaW50ZiAo KEZJTEUpLCAiXHQucDJhbGlnbiAlZCwsJWRcbiIsIChMT0cpLCAoTUFYX1NLSVApKTsJXAorIAkv KiBNYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IDggYnl0ZSBhbGlnbm1lbnQgaWYgPiA4 IGJ5dGUgXAorIAkgICBhbGlnbm1lbnQgaXMgcHJlZmVycmVkLiAgKi8JCQkJCVwKKy0JaWYgKChM T0cpID4gMyAmJiAoMSA8PCAoTE9HKSkgPiAoKE1BWF9TS0lQKSArIDEpKQkJXAorKwlpZiAoKExP RykgPiAzCQkJCQkJCVwKKysJICAgICYmICgxIDw8IChMT0cpKSA+ICgoTUFYX1NLSVApICsgMSkJ CQkJXAorKwkgICAgJiYgKE1BWF9TS0lQKSA+PSA3KQkJCQkJCVwKKyAJICBmcHJpbnRmICgoRklM RSksICJcdC5wMmFsaWduIDNcbiIpOwkJCQlcCisgICAgICAgfQkJCQkJCQkJCVwKKyAgICAgfQkJ CQkJCQkJCVwKKy0tLSBnY2MvY29uZmlnL2kzODYvbGludXguaC5qagkyMDA5LTA1LTA1IDA4OjMz OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGdjYy9jb25maWcvaTM4Ni9saW51eC5oCTIwMDktMDUt MDUgMTY6Mzc6MTMuMDAwMDAwMDAwICswMjAwCitAQCAtMTUzLDcgKzE1Myw5IEBAIGFsb25nIHdp dGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICAKKyAJZnByaW50ZiAoKEZJTEUpLCAiXHQu cDJhbGlnbiAlZCwsJWRcbiIsIChMT0cpLCAoTUFYX1NLSVApKTsJXAorIAkvKiBNYWtlIHN1cmUg dGhhdCB3ZSBoYXZlIGF0IGxlYXN0IDggYnl0ZSBhbGlnbm1lbnQgaWYgPiA4IGJ5dGUgXAorIAkg ICBhbGlnbm1lbnQgaXMgcHJlZmVycmVkLiAgKi8JCQkJCVwKKy0JaWYgKChMT0cpID4gMyAmJiAo MSA8PCAoTE9HKSkgPiAoKE1BWF9TS0lQKSArIDEpKQkJXAorKwlpZiAoKExPRykgPiAzCQkJCQkJ CVwKKysJICAgICYmICgxIDw8IChMT0cpKSA+ICgoTUFYX1NLSVApICsgMSkJCQkJXAorKwkgICAg JiYgKE1BWF9TS0lQKSA+PSA3KQkJCQkJCVwKKyAJICBmcHJpbnRmICgoRklMRSksICJcdC5wMmFs aWduIDNcbiIpOwkJCQlcCisgICAgICAgfQkJCQkJCQkJCVwKKyAgICAgfQkJCQkJCQkJCVwKCmRp ZmYgLS1naXQgYS9nY2M0NC1yaDMzMDc3MS5wYXRjaCBiL2djYzQ0LXJoMzMwNzcxLnBhdGNoCmlu ZGV4IGY1MmI5MTkuLmY3YzM2NWQgMTAwNjQ0Ci0tLSBhL2djYzQ0LXJoMzMwNzcxLnBhdGNoCisr KyBiL2djYzQ0LXJoMzMwNzcxLnBhdGNoCkBAIC0zLDIwICszLDIwIEBACiAJKiBNYWtlZmlsZS5h bSAobGliZ2NqX3Rvb2xzX2xhX0xJQkFERCk6IEFkZC4KIAkqIE1ha2VmaWxlLmluOiBSZWdlbmVy YXRlZC4KIAotLS0tIGxpYmphdmEvTWFrZWZpbGUuYW0uamoJMjAwNy0wMy0xNyAwOToyMDozMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJqYXZhL01ha2VmaWxlLmFtCTIwMDctMTAtMTYgMTU6NDU6 MTQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjc3LDYgKzI3Nyw4IEBAIEVYVFJBX2xpYmdjal9sYV9T T1VSQ0VTID0gamF2YS9sYW5nL09iamUKLSAKLSBsaWJnY2pfdG9vbHNfbGFfU09VUkNFUyA9IGNs YXNzcGF0aC90b29scy90b29scy56aXAKLSBsaWJnY2pfdG9vbHNfbGFfR0NKRkxBR1MgPSAkKEFN X0dDSkZMQUdTKSAtZmluZGlyZWN0LWRpc3BhdGNoIC1mbm8taW5kaXJlY3QtY2xhc3NlcyAgLWZz b3VyY2UtZmlsZW5hbWU9JChoZXJlKS9jbGFzc3BhdGgvdG9vbHMvYWxsLWNsYXNzZXMubHN0Cist LS0gbGliamF2YS9NYWtlZmlsZS5hbS5qagkyMDA5LTA1LTA2IDA4OjE0OjUwLjAwMDAwMDAwMCAr MDIwMAorKysrIGxpYmphdmEvTWFrZWZpbGUuYW0JMjAwOS0wNS0wNiAxMDoyNjo0My4wMDAwMDAw MDAgKzAyMDAKK0BAIC0zMTQsNiArMzE0LDggQEAgbGliZ2NqX3Rvb2xzX2xhX1NPVVJDRVMgPSBj bGFzc3BhdGgvdG9vbAorIGxpYmdjal90b29sc19sYV9HQ0pGTEFHUyA9ICQoQU1fR0NKRkxBR1Mp IC1maW5kaXJlY3QtZGlzcGF0Y2ggXAorICAtZm5vLWJvb3RzdHJhcC1jbGFzc2VzIC1mbm8taW5k aXJlY3QtY2xhc3NlcyBcCisgIC1mc291cmNlLWZpbGVuYW1lPSQoaGVyZSkvY2xhc3NwYXRoL3Rv b2xzL2FsbC1jbGFzc2VzLmxzdAogKyMjIFNlZSBqdl9jb252ZXJ0X0xEQURELgogK2xpYmdjal90 b29sc19sYV9MSUJBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLmxhCiAgbGliZ2NqX3Rvb2xz X2xhX0xERkxBR1MgPSAtcnBhdGggJCh0b29sZXhlY2xpYmRpcikgXAogICAtdmVyc2lvbi1pbmZv IGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gIFwKICAgJChMSUJHQ0pf TERfU1lNQk9MSUNfRlVOQ1RJT05TKQotLS0tIGxpYmphdmEvTWFrZWZpbGUuaW4uamoJMjAwNy0w Ny0wNCAyMToxMToxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJqYXZhL01ha2VmaWxlLmluCTIw MDctMTAtMTYgMTU6NTY6MDcuMDAwMDAwMDAwICswMjAwCi1AQCAtMTUzLDcgKzE1Myw2IEBAIGFt X19vYmplY3RzXzEgPSBnbnUvZ2NqL3hsaWIvbGliX2dudV9hd3QKKy0tLSBsaWJqYXZhL01ha2Vm aWxlLmluLmpqCTIwMDktMDUtMDYgMDg6MTQ6NDkuMDAwMDAwMDAwICswMjAwCisrKysgbGliamF2 YS9NYWtlZmlsZS5pbgkyMDA5LTA1LTA2IDEwOjI3OjE4LjAwMDAwMDAwMCArMDIwMAorQEAgLTE2 MCw3ICsxNjAsNiBAQCBhbV9fb2JqZWN0c18xID0gZ251L2djai94bGliL2xpYl9nbnVfYXd0CiAg YW1fbGliX2dudV9hd3RfeGxpYl9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18xKQogIGxpYl9n bnVfYXd0X3hsaWJfbGFfT0JKRUNUUyA9ICQoYW1fbGliX2dudV9hd3RfeGxpYl9sYV9PQkpFQ1RT KQogIEBYTElCX0FXVF9UUlVFQGFtX2xpYl9nbnVfYXd0X3hsaWJfbGFfcnBhdGggPSAtcnBhdGgg JCh0b29sZXhlY2xpYmRpcikKQEAgLTI0LDEwICsyNCwxMCBAQAogIGFtX2xpYmdjal90b29sc19s YV9PQkpFQ1RTID0gY2xhc3NwYXRoL3Rvb2xzL2xpYmdjal90b29sc19sYS10b29scy5sbwogIGxp Ymdjal90b29sc19sYV9PQkpFQ1RTID0gJChhbV9saWJnY2pfdG9vbHNfbGFfT0JKRUNUUykKICBA SU5URVJQUkVURVJfVFJVRUBhbV9fREVQRU5ERU5DSUVTXzEgPSBnbnUvY2xhc3NwYXRoL2pkd3Au bG8gXAotQEAgLTk0MSw2ICs5NDAsNyBAQCBsaWJnY2pfbGFfTElOSyA9ICQoTElCTElOSykKLSBF WFRSQV9saWJnY2pfbGFfU09VUkNFUyA9IGphdmEvbGFuZy9PYmplY3QuamF2YQotIGxpYmdjal90 b29sc19sYV9TT1VSQ0VTID0gY2xhc3NwYXRoL3Rvb2xzL3Rvb2xzLnppcAotIGxpYmdjal90b29s c19sYV9HQ0pGTEFHUyA9ICQoQU1fR0NKRkxBR1MpIC1maW5kaXJlY3QtZGlzcGF0Y2ggLWZuby1p bmRpcmVjdC1jbGFzc2VzICAtZnNvdXJjZS1maWxlbmFtZT0kKGhlcmUpL2NsYXNzcGF0aC90b29s cy9hbGwtY2xhc3Nlcy5sc3QKK0BAIC0xMDQxLDYgKzEwNDAsNyBAQCBsaWJnY2pfdG9vbHNfbGFf R0NKRkxBR1MgPSAkKEFNX0dDSkZMQUdTCisgIC1mbm8tYm9vdHN0cmFwLWNsYXNzZXMgLWZuby1p bmRpcmVjdC1jbGFzc2VzIFwKKyAgLWZzb3VyY2UtZmlsZW5hbWU9JChoZXJlKS9jbGFzc3BhdGgv dG9vbHMvYWxsLWNsYXNzZXMubHN0CisgCiArbGliZ2NqX3Rvb2xzX2xhX0xJQkFERCA9IC1MJCho ZXJlKS8ubGlicyBsaWJnY2oubGEKICBsaWJnY2pfdG9vbHNfbGFfTERGTEFHUyA9IC1ycGF0aCAk KHRvb2xleGVjbGliZGlyKSBcCiAgIC12ZXJzaW9uLWluZm8gYGdyZXAgLXYgJ15cIycgJChzcmNk aXIpL2xpYnRvb2wtdmVyc2lvbmAgXAoKZGlmZiAtLWdpdCBhL2dlbmVyYXRlLWNhY2VydHMucGwg Yi9nZW5lcmF0ZS1jYWNlcnRzLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2Fi MGYxLi4wMDAwMDAwCi0tLSBhL2dlbmVyYXRlLWNhY2VydHMucGwKKysrIC9kZXYvbnVsbApAQCAt MSwxMDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0KLSMgQ29weXJpZ2h0IChDKSAyMDA3IFJl ZCBIYXQsIEluYy4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK LSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLQotIyBnZW5lcmF0ZS1jYWNlcnRzLnBsIGdlbmVyYXRlcyBhIGdrZXl0b29sIGtleXN0b3Jl IG5hbWVkICdjYWNlcnRzJwotIyBmcm9tIE9wZW5TU0wncyBjZXJ0aWZpY2F0ZSBidW5kbGUuCi0K LSMgRmlyc3QgZXh0cmFjdCBlYWNoIG9mIE9wZW5TU0wncyBidW5kbGVkIGNlcnRpZmljYXRlcyBp bnRvIGl0cyBvd24KLSMgYWxpYXNlZCBmaWxlbmFtZS4KLSRmaWxlID0gIi9ldGMvcGtpL3Rscy9j ZXJ0LnBlbSI7Ci1vcGVuKENFUlRTLCAkZmlsZSk7Ci1AY2VydHMgPSA8Q0VSVFM+OwotY2xvc2Uo Q0VSVFMpOwotCi0kcGVtX2ZpbGVfbnVtYmVyID0gMDsKLSR3cml0aW5nX2NlcnQgPSAwOwotZm9y ZWFjaCAkY2VydCAoQGNlcnRzKQotewotCSBpZiAoJGNlcnQgZXEgIi0tLS0tQkVHSU4gQ0VSVElG SUNBVEUtLS0tLVxuIikKLQkgewotCQkgIGlmICgkd3JpdGluZ19jZXJ0ICE9IDApCi0JCSAgewot CQkJCWRpZSAiJGZpbGUgaXMgbWFsZm9ybWVkLiI7Ci0JCSAgfQotCQkgICRwZW1fZmlsZV9udW1i ZXIrKzsKLQkJICAjIE51bWJlcmluZyBlYWNoIGZpbGUgZ3VhcmFudGVlcyB0aGF0IGNlcnQgYWxp YXNlcyB3aWxsIGJlCi0JCSAgIyB1bmlxdWUuCi0JCSAgJHBlbV9maWxlX25hbWUgPSAiJHBlbV9m aWxlX251bWJlciRjZXJ0X2FsaWFzLnBlbSI7Ci0JCSAgJHdyaXRpbmdfY2VydCA9IDE7Ci0JCSAg b3BlbihQRU0sICI+JHBlbV9maWxlX25hbWUiKTsKLQkJICBwcmludCBQRU0gJGNlcnQ7Ci0JIH0K LQkgZWxzaWYgKCRjZXJ0IGVxICItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tXG4iKQotCSB7Ci0J CSAgJHdyaXRpbmdfY2VydCA9IDA7Ci0JCSAgcHJpbnQgUEVNICRjZXJ0OwotCQkgIGNsb3NlKFBF TSk7Ci0JIH0KLQkgZWxzaWYgKCRjZXJ0ID1+IC9Jc3N1ZXI6IC8pCi0JIHsKLQkJICAjIEdlbmVy YXRlIGFuIGFsaWFzIHVzaW5nIHRoZSBPVSBhbmQgQ04gYXR0cmlidXRlcyBvZiB0aGUKLQkJICAj IElzc3VlciBmaWVsZCBpZiBib3RoIGFyZSBwcmVzZW50LCBvdGhlcndpc2UgdXNlIG9ubHkgdGhl IENOCi0JCSAgIyBhdHRyaWJ1dGUuICBUaGUgSXNzdWVyIGZpZWxkIG11c3QgaGF2ZSBlaXRoZXIg dGhlIE9VIG9yIHRoZQotCQkgICMgQ04gYXR0cmlidXRlLgotCQkgICRfID0gJGNlcnQ7Ci0JCSAg aWYgKCRjZXJ0ID1+IC9PVT0vKQotCQkgIHsKLQkJCQlzL0lzc3VlcjouKj9PVT0vLzsKLQkJCQkj IFJlbW92ZSBvdGhlciBvY2N1cnJlbmNlcyBvZiBPVT0uCi0JCQkJcy9PVT0uKkNOPS8vOwotCQkJ CSMgUmVtb3ZlIENOPSBpZiB0aGVyZSB3ZXJlIG5vdCBvdGhlciBvY2N1cnJlbmNlcyBvZiBPVT0u Ci0JCQkJcy9DTj0vLzsKLQkJICB9Ci0JCSAgZWxzaWYgKCRjZXJ0ID1+IC9DTj0vKQotCQkgIHsK LQkJCQlzL0lzc3VlcjouKkNOPS8vOwotCQkgIH0KLQkJICBzL1xXLy9nOwotCQkgIHRyL0EtWi9h LXovOwotCQkgICRjZXJ0X2FsaWFzID0gJF8KLQkgfQotCSBlbHNlCi0JIHsKLQkJICBpZiAoJHdy aXRpbmdfY2VydCA9PSAxKQotCQkgIHsKLQkJCQlwcmludCBQRU0gJGNlcnQ7Ci0JCSAgfQotCSB9 Ci19Ci0KLSMgQ2hlY2sgdGhhdCB0aGUgY29ycmVjdCBudW1iZXIgb2YgLnBlbSBmaWxlcyB3ZXJl IHByb2R1Y2VkLgotQHBlbV9maWxlcyA9IDwqLnBlbT47Ci1pZiAoQHBlbV9maWxlcyAhPSAkcGVt X2ZpbGVfbnVtYmVyKQotewotCSBkaWUgIk51bWJlciBvZiAucGVtIGZpbGVzIHByb2R1Y2VkIGRv ZXMgbm90IG1hdGNoIi4KLQkJICAiIG51bWJlciBvZiBjZXJ0cyByZWFkIGZyb20gJGZpbGUuIjsK LX0KLQotIyBOb3cgc3RvcmUgZWFjaCBjZXJ0IGluIHRoZSAnY2FjZXJ0cycgZmlsZSB1c2luZyBn a2V5dG9vbC4KLSRjZXJ0c193cml0dGVuX2NvdW50ID0gMDsKLWZvcmVhY2ggJHBlbV9maWxlIChA cGVtX2ZpbGVzKQotewotCSBzeXN0ZW0gInllcyB8IGdrZXl0b29sIC1pbXBvcnQgLWFsaWFzIGBi YXNlbmFtZSAkcGVtX2ZpbGUgLnBlbWAiLgotCQkgICIgLWtleXN0b3JlIGNhY2VydHMgLXN0b3Jl cGFzcyAnJyAtZmlsZSAkcGVtX2ZpbGUiLgotCQkgICIgMj4mMSA+L2Rldi9udWxsIjsKLQkgdW5s aW5rKCRwZW1fZmlsZSk7Ci0JICRjZXJ0c193cml0dGVuX2NvdW50Kys7Ci19Ci0KLSMgQ2hlY2sg dGhhdCB0aGUgY29ycmVjdCBudW1iZXIgb2YgY2VydHMgd2VyZSBhZGRlZCB0byB0aGUga2V5c3Rv cmUuCi1pZiAoJGNlcnRzX3dyaXR0ZW5fY291bnQgIT0gJHBlbV9maWxlX251bWJlcikKLXsKLQkg ZGllICJOdW1iZXIgb2YgY2VydHMgYWRkZWQgdG8ga2V5c3RvcmUgZG9lcyBub3QgbWF0Y2giLgot CQkgICIgbnVtYmVyIG9mIGNlcnRzIHJlYWQgZnJvbSAkZmlsZS4iOwotfQoKZGlmZiAtLWdpdCBh L2ltcG9ydC5sb2cgYi9pbXBvcnQubG9nCmluZGV4IGMyMDQwYTMuLmNkM2QxMGQgMTAwNjQ0Ci0t LSBhL2ltcG9ydC5sb2cKKysrIGIvaW1wb3J0LmxvZwpAQCAtMSArMSwyIEBACiBnY2MtNF80XzAt MF8zOkhFQUQ6Z2NjLTQuNC4wLTAuMy5zcmMucnBtOjEyMzIxMzA4NDEKK2djYy00XzRfMC01OkhF QUQ6Z2NjLTQuNC4wLTUuc3JjLnJwbToxMjQyMjkxMTI2CgpkaWZmIC0tZ2l0IGEvc291cmNlcyBi L3NvdXJjZXMKaW5kZXggYjE0NzU2Yi4uNWQ0NWRjOSAxMDA2NDQKLS0tIGEvc291cmNlcworKysg Yi9zb3VyY2VzCkBAIC0xLDIgKzEsMiBAQAogMjY1OWYwOWMyZTQzZWY4YjdkNDQwNjMyMTc1M2Yx YjIgIGZhc3RqYXItMC45Ny50YXIuZ3oKLTAwNGNmZDBhNDliMjI1MDMyOTUzNTE3YTgyN2RhOTY4 ICBnY2MtNC40LjAtMjAwOTA0MTQudGFyLmJ6MgorMjcxMzQwYTE4ODNhNTk1YzVjOGI0ZmUxMDA3 Mzg5ZmEgIGdjYy00LjQuMC0yMDA5MDUxNC50YXIuYnoyCg==