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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to: gdb-7.0.1-25.fc12 Date: Sat, 27 Jun 2026 23:54:29 GMT Message-ID: <178260446931.1.8546522218381995203.rpms-gdb-0911f375d9eb@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 0911f375d9ebd20a4f159df241a3febc18203a37 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMDkxMWYzNzVkOWViZDIwYTRmMTU5ZGYyNDFh M2ZlYmMxODIwM2EzNwpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJv amVjdC5vcmc+CkRhdGUgICA6IDIwMTAtMDEtMTJUMjI6MTU6NTcrMDA6MDAKU3RhdHMgIDogKzg5 NjMvLTI1MzMgaW4gNDggZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0 Lm9yZy9ycG1zL2dkYi9jLzA5MTFmMzc1ZDllYmQyMGE0ZjE1OWRmMjQxYTNmZWJjMTgyMDNhMzc/ YnJhbmNoPWdkYi0xNy4yLXJlYmFzZS1mNDQKCkxvZzoKUmViYXNlIHRvOiBnZGItNy4wLjEtMjUu ZmMxMgoKLS0tCmRpZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2c2lnbm9yZQppbmRleCBlZTYx Yzk5Li5jNWM4MDQ2IDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisrKyBiLy5jdnNpZ25vcmUKQEAg LTEsMiArMSwyIEBACi1saWJzdGRjKystdjMtcHl0aG9uLXIxNTE3OTgudGFyLnh6Ci1nZGItNi44 LjkxLjIwMDkwOTMwLnRhci5iejIKK2dkYi03LjAuMS50YXIuYnoyCitsaWJzdGRjKystdjMtcHl0 aG9uLXIxNTE3OTgudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5k ZXggOTUwMDAzYy4uNWRmZTU1OCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUK QEAgLTEsNSArMSw1IEBACiAjIE1ha2VmaWxlIGZvciBzb3VyY2UgcnBtOiBnZGIKLSMgJElkOiBN YWtlZmlsZSx2IDEuMyAyMDA3LzEwLzE1IDE4OjQ2OjQ1IG5vdHRpbmcgRXhwICQKKyMgJElkOiBN YWtlZmlsZSx2IDEuNCAyMDA5LzExLzI2IDAxOjUzOjU5IG5vdHRpbmcgRXhwICQKIE5BTUUgOj0g Z2RiCiBTUEVDRklMRSA9ICQoZmlyc3R3b3JkICQod2lsZGNhcmQgKi5zcGVjKSkKIAoKZGlmZiAt LWdpdCBhL2dkYi02LjMtYnoxODIxMTYtZXhlYy1mcm9tLXB0aHJlYWQucGF0Y2ggYi9nZGItNi4z LWJ6MTgyMTE2LWV4ZWMtZnJvbS1wdGhyZWFkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBiZjdmNThjLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtYnoxODIxMTYtZXhlYy1mcm9t LXB0aHJlYWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1odHRwczovL2J1 Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4MjExNgotCi0KLUlu ZGV4OiBnZGItNi41L2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02 LjUub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAwNi0wOC0yNCAwMjo1NToyNC4wMDAwMDAw MDAgLTAzMDAKLSsrKyBnZGItNi41L2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDA2LTA4LTI0IDAy OjU2OjE2LjAwMDAwMDAwMCAtMDMwMAotQEAgLTkzOSw2ICs5MzksMTUgQEAgdGhyZWFkX2RiX3dh aXQgKHB0aWRfdCBwdGlkLCBzdHJ1Y3QgdGFyZwotICAgICAgIHx8IG91cnN0YXR1cy0+a2luZCA9 PSBUQVJHRVRfV0FJVEtJTkRfU0lHTkFMTEVEKQotICAgICByZXR1cm4gcGlkX3RvX3B0aWQgKC0x KTsKLSAKLSsgIGlmIChvdXJzdGF0dXMtPmtpbmQgPT0gVEFSR0VUX1dBSVRLSU5EX0VYRUNEKQot KyAgICB7Ci0rICAgICAgcmVtb3ZlX3RocmVhZF9ldmVudF9icmVha3BvaW50cyAoKTsKLSsgICAg ICB1bnB1c2hfdGFyZ2V0ICgmdGhyZWFkX2RiX29wcyk7Ci0rICAgICAgdXNpbmdfdGhyZWFkX2Ri ID0gMDsKLSsKLSsgICAgICByZXR1cm4gcGlkX3RvX3B0aWQgKEdFVF9QSUQgKHB0aWQpKTsKLSsg ICAgfQotKwotICAgaWYgKG91cnN0YXR1cy0+a2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfU1RPUFBF RAotICAgICAgICYmIChvdXJzdGF0dXMtPnZhbHVlLnNpZyA9PSBUQVJHRVRfU0lHTkFMX1RSQVAK LSAgICAgICAgICAgfHwgb3Vyc3RhdHVzLT52YWx1ZS5zaWcgPT0gVEFSR0VUX1NJR05BTF9JTEwp KQoKZGlmZiAtLWdpdCBhL2dkYi02LjMtaWE2NC1jb3JlZmlsZS1maXgtMjAwNTAxMjcucGF0Y2gg Yi9nZGItNi4zLWlhNjQtY29yZWZpbGUtZml4LTIwMDUwMTI3LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA0NWE4NGNjLi4wMDAwMDAwCi0tLSBhL2dkYi02LjMtaWE2NC1jb3Jl ZmlsZS1maXgtMjAwNTAxMjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0y MDA1LTAxLTI1ICBKZWZmIEpvaG5zdG9uICA8ampvaG5zdG5AcmVkaGF0LmNvbT4KLQotCSogaWE2 NC10ZGVwLmMgKGdldHVud2luZF90YWJsZSk6IENhbGwgdGhlIGxvdy1sZXZlbCB4ZmVyCi0JdW53 aW5kIHRhYmxlIHN5c2NhbGwgdG8gc3VwcG9ydCBiYWNrdHJhY2luZyBmcm9tIHN5c2NhbGxzIGlu Ci0JYSBjb3JlZmlsZS4KLQotSW5kZXg6IGdkYi02LjUvZ2RiL2lhNjQtdGRlcC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTYuNS5vcmlnL2dkYi9pYTY0LXRkZXAuYwkyMDA2LTA0LTE4IDE2OjIwOjA2 LjAwMDAwMDAwMCAtMDMwMAotKysrIGdkYi02LjUvZ2RiL2lhNjQtdGRlcC5jCTIwMDYtMDctMDcg MDI6MTg6NDAuMDAwMDAwMDAwIC0wMzAwCi1AQCAtMjQ3MCw4ICsyNDcwLDE3IEBAIGdldHVud2lu ZF90YWJsZSAodm9pZCAqYnVmLCBzaXplX3QgbGVuKQotICAgICAgd2Ugd2FudCB0byBwcmVzZXJ2 ZSBmYWxsIGJhY2sgdG8gdGhlIHJ1bm5pbmcga2VybmVsJ3MgdGFibGUsIHRoZW4KLSAgICAgIHdl IHNob3VsZCBmaW5kIGEgd2F5IHRvIG92ZXJyaWRlIHRoZSBjb3JlZmlsZSBsYXllcidzCi0gICAg ICB4ZmVyX3BhcnRpYWwgbWV0aG9kLiAgKi8KLSsjaWYgMAotICAgeCA9IHRhcmdldF9yZWFkX3Bh cnRpYWwgKCZjdXJyZW50X3RhcmdldCwgVEFSR0VUX09CSkVDVF9VTldJTkRfVEFCTEUsIE5VTEws Ci0gCQkJICAgYnVmLCAwLCBsZW4pOwotKyNlbmRpZgotKyAgLyogRklYTUU6IFRoaXMgaXMgYSB0 ZW1wb3Jhcnkgc29sdXRpb24gdG8gYmFja3RyYWNpbmcgc3lzY2FsbHMgaW4gY29yZWZpbGVzLgot KyAgICAgICAgICAgIFRvIGRvIHRoaXMgcHJvcGVybHksIHRoZSBBVVhWIHNlY3Rpb24gc2hvdWxk IGJlIHVzZWQuICBUaGlzCi0rCSAgICBmaXggd2lsbCB3b3JrIGFzIGxvbmcgYXMgdGhlIGtlcm5l bCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb3JlZmlsZQotKwkgICAgaXMgZXF1aXZhbGVudCB0byB0 aGUga2VybmVsIHVzZWQgdG8gZGVidWcgdGhlIGNvcmVmaWxlLiAgKi8KLSsgIHggPSBpYTY0X2xp bnV4X3hmZXJfdW53aW5kX3RhYmxlICgmY3VycmVudF90YXJnZXQsCi0rCQkgIAkJICAgIFRBUkdF VF9PQkpFQ1RfVU5XSU5EX1RBQkxFLCBOVUxMLAotKwkJCSAgIAkgICAgYnVmLCBOVUxMLCAwLCBs ZW4pOwotIAotICAgcmV0dXJuIChpbnQpeDsKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1pYTY0 LWluZm8tZnJhbWUtZml4LTIwMDUwNzI1LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LWluZm8tZnJhbWUt Zml4LTIwMDUwNzI1LnBhdGNoCmluZGV4IDNiMmJkOWEuLjlkNjEzZmQgMTAwNjQ0Ci0tLSBhL2dk Yi02LjMtaWE2NC1pbmZvLWZyYW1lLWZpeC0yMDA1MDcyNS5wYXRjaAorKysgYi9nZGItNi4zLWlh NjQtaW5mby1mcmFtZS1maXgtMjAwNTA3MjUucGF0Y2gKQEAgLTQxLDcgKzQxLDcgQEAgdGVzdHN1 aXRlOgogKwogLS0tIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ3RyYW1w LmV4cC5maXgJMjAwNS0wNy0yNSAxNjo0Mjo1MC4wMDAwMDAwMDAgLTA0MDAKICsrKyBnZGItNi4z L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWd0cmFtcC5leHAJMjAwNS0wNy0yNSAxNjo0 MjowMS4wMDAwMDAwMDAgLTA0MDAKLUBAIC0wLDAgKzEsNjYgQEAKK0BAIC0wLDAgKzEsNzMgQEAK ICsjICAgQ29weXJpZ2h0IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiAr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQpAQCAtOTAsNyArOTAsMTAgQEAgdGVzdHN1aXRlOgogK30KICsKICtnZGJf ZXhpdAorK3NldCBtYXRjaF9tYXhfb2xkIFttYXRjaF9tYXhdCisrbWF0Y2hfbWF4IC1kIDEwMDAw MDAKICtnZGJfc3RhcnQKKyttYXRjaF9tYXggLWQgJG1hdGNoX21heF9vbGQKICtnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKICtnZGJfbG9hZCAke2JpbmZpbGV9CiArCkBAIC0x MDYsNSArMTA5LDkgQEAgdGVzdHN1aXRlOgogK2dkYl90ZXN0ICJjb250aW51ZSIgIkJyZWFrcG9p bnQuKnguKiIgImNvbnRpbnVlIHRvIHgiCiArCiArZ2RiX3Rlc3QgImYgMSIgIi4qc2lnbmFsIGhh bmRsZXIgY2FsbGVkLioiICJmcmFtZSAxIgotK2dkYl90ZXN0ICJpbmZvIGZyYW1lIiAiU3RhY2sg bGV2ZWwgMS4qcDYzIGF0IC4qIiAiaW5mbyBzaWd0cmFtcCBmcmFtZSIKLSsgCisrCisrIyBnZGIt Ny4wKyBubyBsb25nZXIgcHJpbnRzIHRoZSBwc2V1ZG8gcmVnaXN0ZXJzIGFzIHRoZXkgYXJlIGNv bXB1dGVkLgorKyMgZnJhbWVfaW5mbyBzYXlzOiAvKiBGb3IgbW9tZW50LCBvbmx5IGRpc3BsYXkg cmVnaXN0ZXJzIHRoYXQgd2VyZSBzYXZlZCBvbiB0aGUKKysjICAgICAgICAgICAgICAgICAgICAg c3RhY2suICAqLworK2dkYl90ZXN0ICJzZXQgZGVidWcgZnJhbWUgMSIKKytnZGJfdGVzdCAiaW5m byBmcmFtZSIgIlN0YWNrIGxldmVsIDEsIC4qZnJhbWVfdW53aW5kX3JlZ2lzdGVyX3ZhbHVlIFxc KGZyYW1lPTEscmVnbnVtPTc1MFxcKHA2M1xcKSxcW15cclxuXF0qXHJcblxbXlxyXG5cXSotPiBj b21wdXRlZCBieXRlcz0uKiIgImluZm8gc2lndHJhbXAgZnJhbWUiCgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuMy1pYTY0LXNpZ3RyYW1wLWZyYW1lLTIwMDUwNzA4LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LXNp Z3RyYW1wLWZyYW1lLTIwMDUwNzA4LnBhdGNoCmluZGV4IDE4NjJmOTcuLmM2YTc3ODkgMTAwNjQ0 Ci0tLSBhL2dkYi02LjMtaWE2NC1zaWd0cmFtcC1mcmFtZS0yMDA1MDcwOC5wYXRjaAorKysgYi9n ZGItNi4zLWlhNjQtc2lndHJhbXAtZnJhbWUtMjAwNTA3MDgucGF0Y2gKQEAgLTI5LDcgKzI5LDcg QEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL2lhNjQtdGRlcC5jCiArICAgICAgVUxP TkdFU1QgdW5hdE5fdmFsOwogKyAgICAgIFVMT05HRVNUIHVuYXQ7CiArICAgICAgcmVhZF9tZW1v cnkgKGNhY2hlLT5zYXZlZF9yZWdzW0lBNjRfVU5BVF9SRUdOVU1dLCAoY2hhciAqKSAmdW5hdCwK LSsJCSAgIHJlZ2lzdGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwgSUE2NF9VTkFUX1JFR05VTSkp OworKwkJICAgcmVnaXN0ZXJfc2l6ZSAodGFyZ2V0X2dkYmFyY2gsIElBNjRfVU5BVF9SRUdOVU0p KTsKICsgICAgICB1bmF0Tl92YWwgPSAodW5hdCAmICgxTEwgPDwgKHJlZ251bSAtIElBNjRfTkFU MF9SRUdOVU0pKSkgIT0gMDsKICsgICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9jb25zdGFu dCAodGhpc19mcmFtZSwgcmVnbnVtLCB1bmF0Tl92YWwpOwogKyAgICB9CkBAIC00NSw5ICs0NSw5 IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9pYTY0LXRkZXAuYwogKyAgICAgIENP UkVfQUREUiBncl9hZGRyID0gMCwgbmF0X2FkZHIgPSAwOwogKwogKyAgICAgIHJlYWRfbWVtb3J5 IChjYWNoZS0+c2F2ZWRfcmVnc1tJQTY0X0JTUF9SRUdOVU1dLCAoY2hhciAqKSAmYnNwLAotKwkJ ICAgcmVnaXN0ZXJfc2l6ZSAoY3VycmVudF9nZGJhcmNoLCBJQTY0X0JTUF9SRUdOVU0pKTsKKysJ CSAgIHJlZ2lzdGVyX3NpemUgKHRhcmdldF9nZGJhcmNoLCBJQTY0X0JTUF9SRUdOVU0pKTsKICsg ICAgICByZWFkX21lbW9yeSAoY2FjaGUtPnNhdmVkX3JlZ3NbSUE2NF9DRk1fUkVHTlVNXSwgKGNo YXIgKikgJmNmbSwKLSsJCSAgIHJlZ2lzdGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwgSUE2NF9D Rk1fUkVHTlVNKSk7CisrCQkgICByZWdpc3Rlcl9zaXplICh0YXJnZXRfZ2RiYXJjaCwgSUE2NF9D Rk1fUkVHTlVNKSk7CiArCiArICAgICAgLyogVGhlIGJzcCBwb2ludHMgYXQgdGhlIGVuZCBvZiB0 aGUgcmVnaXN0ZXIgZnJhbWUgc28gd2UKICsJIHN1YnRyYWN0IHRoZSBzaXplIG9mIGZyYW1lIGZy b20gaXQgdG8gZ2V0IHN0YXJ0IG9mIHJlZ2lzdGVyIGZyYW1lLiAgKi8KQEAgLTcxLDEwICs3MSwx MCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvaWE2NC10ZGVwLmMKICsJICAgICAg bmF0X2FkZHIgPSBjYWNoZS0+c2F2ZWRfcmVnc1tJQTY0X1JOQVRfUkVHTlVNXTsKICsJICAgICAg aWYgKG5hdF9hZGRyICE9IDApCiArCQlyZWFkX21lbW9yeSAobmF0X2FkZHIsIChjaGFyICopICZu YXRfY29sbGVjdGlvbiwKLSsJCQkgICAgIHJlZ2lzdGVyX3NpemUgKGN1cnJlbnRfZ2RiYXJjaCwg SUE2NF9STkFUX1JFR05VTSkpOworKwkJCSAgICAgcmVnaXN0ZXJfc2l6ZSAodGFyZ2V0X2dkYmFy Y2gsIElBNjRfUk5BVF9SRUdOVU0pKTsKICsJICAgIH0KICsJICBlbHNlCi0rCSAgICBuYXRfY29s bGVjdGlvbiA9IHJlYWRfbWVtb3J5X2ludGVnZXIgKG5hdF9hZGRyLCA4KTsKKysJICAgIG5hdF9j b2xsZWN0aW9uID0gcmVhZF9tZW1vcnlfaW50ZWdlciAobmF0X2FkZHIsIDgsIEJGRF9FTkRJQU5f TElUVExFKTsKICsJICBpZiAobmF0X2FkZHIgIT0gMCkKICsJICAgIHsKICsJICAgICAgbmF0X2Jp dCA9IChncl9hZGRyID4+IDMpICYgMHgzZjsKQEAgLTk3LDkgKzk3LDkgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwODExMjgvZ2RiL2lhNjQtdGRlcC5jCiArICAgICAgVUxPTkdFU1QgYm9mOwogKwog KyAgICAgIHJlYWRfbWVtb3J5IChjYWNoZS0+c2F2ZWRfcmVnc1tJQTY0X0JTUF9SRUdOVU1dLCAo Y2hhciAqKSAmYnNwLAotKwkJICAgcmVnaXN0ZXJfc2l6ZSAoY3VycmVudF9nZGJhcmNoLCBJQTY0 X0JTUF9SRUdOVU0pKTsKKysJCSAgIHJlZ2lzdGVyX3NpemUgKHRhcmdldF9nZGJhcmNoLCBJQTY0 X0JTUF9SRUdOVU0pKTsKICsgICAgICByZWFkX21lbW9yeSAoY2FjaGUtPnNhdmVkX3JlZ3NbSUE2 NF9DRk1fUkVHTlVNXSwgKGNoYXIgKikgJmNmbSwKLSsJCSAgIHJlZ2lzdGVyX3NpemUgKGN1cnJl bnRfZ2RiYXJjaCwgSUE2NF9DRk1fUkVHTlVNKSk7CisrCQkgICByZWdpc3Rlcl9zaXplICh0YXJn ZXRfZ2RiYXJjaCwgSUE2NF9DRk1fUkVHTlVNKSk7CiArCiArICAgICAgLyogVGhlIGJzcCBwb2lu dHMgYXQgdGhlIGVuZCBvZiB0aGUgcmVnaXN0ZXIgZnJhbWUgc28gd2UKICsJIHN1YnRyYWN0IHRo ZSBzaXplIG9mIGZyYW1lIGZyb20gaXQgdG8gZ2V0IGJlZ2lubmluZyBvZiBmcmFtZS4gICovCkBA IC0xMzMsOSArMTMzLDkgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL2lhNjQtdGRl cC5jCiArCSAgVUxPTkdFU1QgY2ZtOwogKwkgIFVMT05HRVNUIHByTl92YWw7CiArCSAgcmVhZF9t ZW1vcnkgKHByX2FkZHIsIChjaGFyICopICZwciwKLSsJCSAgICAgICByZWdpc3Rlcl9zaXplIChj dXJyZW50X2dkYmFyY2gsIElBNjRfUFJfUkVHTlVNKSk7CisrCQkgICAgICAgcmVnaXN0ZXJfc2l6 ZSAodGFyZ2V0X2dkYmFyY2gsIElBNjRfUFJfUkVHTlVNKSk7CiArCSAgcmVhZF9tZW1vcnkgKGNh Y2hlLT5zYXZlZF9yZWdzW0lBNjRfQ0ZNX1JFR05VTV0sIChjaGFyICopICZjZm0sCi0rCQkgICAg ICAgcmVnaXN0ZXJfc2l6ZSAoY3VycmVudF9nZGJhcmNoLCBJQTY0X0NGTV9SRUdOVU0pKTsKKysJ CSAgICAgICByZWdpc3Rlcl9zaXplICh0YXJnZXRfZ2RiYXJjaCwgSUE2NF9DRk1fUkVHTlVNKSk7 CiArCiArCSAgLyogR2V0IHRoZSByZWdpc3RlciByZW5hbWUgYmFzZSBmb3IgdGhpcyBmcmFtZSBh bmQgYWRqdXN0IHRoZQogKwkgICAqIHJlZ2lzdGVyIG5hbWUgdG8gdGFrZSByb3RhdGlvbiBpbnRv IGFjY291bnQuICovCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1ub250aHJlYWRlZC13cC0yMDA1MDEx Ny5wYXRjaCBiL2dkYi02LjMtbm9udGhyZWFkZWQtd3AtMjAwNTAxMTcucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmNDk4NjQuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuMy1ub250 aHJlYWRlZC13cC0yMDA1MDExNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBA Ci1bYmFzZV0KLQotMjAwNy0xMC0xMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotCi0JKiBsaW51eC1uYXQuYyAoaXRlcmF0ZV9vdmVyX2x3cHMpOiBGaXhlZCBt aXNzaW5nIExXUCBpbml0aWFsaXphdGlvbiBmb3IKLQljdXJyZW50IElORkVSSU9SX1BUSUQuCi0K LTIwMDctMTAtMTMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCSogZ2RiLmJhc2UvZm9sbG93LWNoaWxkLmV4cCwgZ2RiLmJhc2UvZm9sbG93LWNoaWxkLmM6 IE5ldyBmaWxlcy4KLQotMjAwNy0xMC0xNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JUG9ydCB0byBHREItNi43LgotCi0yMDA4LTAyLTI0ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdEQi02Ljhw cmUuCi0KLTIwMDgtMDgtMjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLQotCVJlbW92ZSB0aGUgZml4IGFzIGNhdXNpbmcgYW4gYXNzZXJ0aW9uIGZhaWx1cmUg Zm9yCi0JZ2RiLmJhc2UvY2hlY2twb2ludC5leHAgYW5kIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQg Zm9yCi0JZ2RiLmJhc2UvZm9sbG93LWNoaWxkLmV4cCAuCi0KLUluZGV4OiBnZGItNi44Y3ZzMjAw ODAyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb2xsb3ctY2hpbGQuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi02LjhjdnMyMDA4MDIxOS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvbGxvdy1jaGlsZC5jCTIw MDgtMDItMjIgMDg6MTQ6MDQuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDI5IEBACi0rLyog VGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBD b3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rICAgUGxlYXNl IGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUg dG86Ci0rICAgYnVnLWdkYkBwcmVwLmFpLm1pdC5lZHUgICovCi0rCi0rI2luY2x1ZGUgPHVuaXN0 ZC5oPgotKwotK2ludCBtYWluKCkKLSt7Ci0rICBmb3JrICgpOwotKyAgc2xlZXAgKDYwKTsKLSsg IHJldHVybiAwOwotK30KLUluZGV4OiBnZGItNi44Y3ZzMjAwODAyMTkvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9mb2xsb3ctY2hpbGQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTYuOGN2czIwMDgwMjE5L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9sbG93LWNoaWxkLmV4cAkyMDA4LTAyLTIyIDA4OjE0OjE3 LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw1NSBAQAotKyMgQ29weXJpZ2h0IDIwMDcgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsj IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EuCi0rCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFj ZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0r c2V0IHRlc3RmaWxlIGZvbGxvdy1jaGlsZAotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStz ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVj dXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGls ZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEdldCB0aGluZ3Mgc3Rh cnRlZC4KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIEZvciBDIHByb2dyYW1z LCAic3RhcnQiIHNob3VsZCBzdG9wIGluIG1haW4oKS4KLSsKLStnZGJfdGVzdCAic2V0IGZvbGxv dy1mb3JrLW1vZGUgY2hpbGQiICIiCi0rc2V0IHRlc3QgInN0YXJ0ZWQiCi0rIyBHREJfUlVOX0NN RCBhbHJlYWR5IGNoZWNrcyBmb3IgYFN0YXJ0aW5nIHByb2dyYW06Jy4KLStnZGJfcnVuX2NtZAot K3NsZWVwIDUKLStzZW5kX2dkYiAiXDAwMyIKLStzZXQgdGVzdCAiYnJlYWsiCi0rZ2RiX3Rlc3Rf bXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAtcmUgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJ R0lOVC4qJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJc XFxbTmV3IHByb2Nlc3MgXFswLTlcXStcXFxdIiB7Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30K CmRpZmYgLS1naXQgYS9nZGItNi4zLXBpZS0yMDA1MDExMC5wYXRjaCBiL2dkYi02LjMtcGllLTIw MDUwMTEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGZkN2Y3Li4wMDAw MDAwCi0tLSBhL2dkYi02LjMtcGllLTIwMDUwMTEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTM1MCArMCwwIEBACi0yMDA3LTExLTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdEQi02LjcuMS4KLQotMjAwNy0xMS0wMiAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUG9ydCB0byBwb3N0LUdE Qi02LjcuMSBtdWx0aS1QQyBicmVha3BvaW50cy4KLQotMjAwNy0xMS0wOSAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBzb2xpYi1zdnI0LmMgKHN2cjRf Y3VycmVudF9zb3MpOiBGaXggc2VnZmF1bHQgb24gTlVMTCBFWEVDX0JGRC4KLQotMjAwOC0wMi0y NCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUG9ydCB0 byBHREItNi44cHJlLgotCi0yMDA4LTAyLTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIGdkYi02LjcuNTAuMjAwODAyMjcuCi0KLTIwMDgt MDYtMDEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZp eCBjcmFzaCBvbiBhIHdhdGNocG9pbnQgdXBkYXRlIG9uIGFuIGluZmVyaW9yIHN0b3AuCi0KLTIw MDgtMDktMDEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CUZpeCBzY2FuX2R5bnRhZygpIGZvciBiaW5hcmllcyBwcm92aWRlZCBieSB2YWxncmluZCAoQlog NDYwMzE5KS4KLQotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2FtZDY0LXRkZXAuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvYW1kNjQtdGRlcC5j CTIwMDktMDktMjUgMTA6MjU6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5 MDkyNS9nZGIvYW1kNjQtdGRlcC5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAw Ci1AQCAtMzYsNiArMzYsNyBAQAotICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJy ZWdzZXQuaCIKLSAjaW5jbHVkZSAic3ltZmlsZS5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgi Ci0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAKLUBAIC0xNTkxLDE4ICsxNTkyLDMxIEBA IGFtZDY0X2FuYWx5emVfc3RhY2tfYWxpZ24gKENPUkVfQUREUiBwYywKLSAgICBBbnkgZnVuY3Rp b24gdGhhdCBkb2Vzbid0IHN0YXJ0IHdpdGggdGhpcyBzZXF1ZW5jZSB3aWxsIGJlIGFzc3VtZWQK LSAgICB0byBoYXZlIG5vIHByb2xvZ3VlIGFuZCB0aHVzIG5vIHZhbGlkIGZyYW1lIHBvaW50ZXIg aW4gJXJicC4gICovCi0gCi0tc3RhdGljIENPUkVfQUREUgotLWFtZDY0X2FuYWx5emVfcHJvbG9n dWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotLQkJCUNPUkVfQUREUiBwYywgQ09SRV9BRERS IGN1cnJlbnRfcGMsCi0tCQkJc3RydWN0IGFtZDY0X2ZyYW1lX2NhY2hlICpjYWNoZSkKLStzdHJ1 Y3QgYW1kNjRfYW5hbHl6ZV9wcm9sb2d1ZV9kYXRhCi0rICB7Ci0rICAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoOwotKyAgICBDT1JFX0FERFIgcGMsIGN1cnJlbnRfcGM7Ci0rICAgIHN0cnVjdCBh bWQ2NF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci0rICAgIENPUkVfQUREUiByZXR2YWw7Ci0rICB9Owot KwotK3N0YXRpYyBpbnQKLSthbWQ2NF9hbmFseXplX3Byb2xvZ3VlXzEgKHZvaWQgKmRhdGFfcG9p bnRlcikKLSB7Ci0rICBzdHJ1Y3QgYW1kNjRfYW5hbHl6ZV9wcm9sb2d1ZV9kYXRhICpkYXRhID0g ZGF0YV9wb2ludGVyOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBkYXRhLT5nZGJhcmNo OwotKyAgQ09SRV9BRERSIHBjID0gZGF0YS0+cGMsIGN1cnJlbnRfcGMgPSBkYXRhLT5jdXJyZW50 X3BjOwotKyAgc3RydWN0IGFtZDY0X2ZyYW1lX2NhY2hlICpjYWNoZSA9IGRhdGEtPmNhY2hlOwot ICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFy Y2gpOwotICAgc3RhdGljIGdkYl9ieXRlIHByb3RvWzNdID0geyAweDQ4LCAweDg5LCAweGU1IH07 IC8qIG1vdnEgJXJzcCwgJXJicCAqLwotICAgZ2RiX2J5dGUgYnVmWzNdOwotICAgZ2RiX2J5dGUg b3A7Ci0gCi0gICBpZiAoY3VycmVudF9wYyA8PSBwYykKLS0gICAgcmV0dXJuIGN1cnJlbnRfcGM7 Ci0rICAgIHsKLSsgICAgICBkYXRhLT5yZXR2YWwgPSBjdXJyZW50X3BjOwotKyAgICAgIHJldHVy biAxOwotKyAgICB9Ci0gCi0gICBwYyA9IGFtZDY0X2FuYWx5emVfc3RhY2tfYWxpZ24gKHBjLCBj dXJyZW50X3BjLCBjYWNoZSk7Ci0gCi1AQCAtMTYxNywxOCArMTYzMSw1OSBAQCBhbWQ2NF9hbmFs eXplX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqCi0gCi0gICAgICAgLyogSWYgdGhhdCdzIGFs bCwgcmV0dXJuIG5vdy4gICovCi0gICAgICAgaWYgKGN1cnJlbnRfcGMgPD0gcGMgKyAxKQotLSAg ICAgICAgcmV0dXJuIGN1cnJlbnRfcGM7Ci0rICAgICAgICB7Ci0rCSAgZGF0YS0+cmV0dmFsID0g Y3VycmVudF9wYzsKLSsJICByZXR1cm4gMTsKLSsgICAgICAgIH0KLSAKLSAgICAgICAvKiBDaGVj ayBmb3IgYG1vdnEgJXJzcCwgJXJicCcuICAqLwotICAgICAgIHJlYWRfbWVtb3J5IChwYyArIDEs IGJ1ZiwgMyk7Ci0gICAgICAgaWYgKG1lbWNtcCAoYnVmLCBwcm90bywgMykgIT0gMCkKLS0JcmV0 dXJuIHBjICsgMTsKLSsJewotKwkgIGRhdGEtPnJldHZhbCA9IHBjICsgMTsKLSsJICByZXR1cm4g MTsKLSsJfQotIAotICAgICAgIC8qIE9LLCB3ZSBhY3R1YWxseSBoYXZlIGEgZnJhbWUuICAqLwot ICAgICAgIGNhY2hlLT5mcmFtZWxlc3NfcCA9IDA7Ci0tICAgICAgcmV0dXJuIHBjICsgNDsKLSsg ICAgICBkYXRhLT5yZXR2YWwgPSBwYyArIDQ7Ci0rICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLSAK LSsgIGRhdGEtPnJldHZhbCA9IHBjOwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIENhdGNoIG1l bW9yeSByZWFkIGVycm9ycyBhbmQgcmV0dXJuIGp1c3QgUEMgaW4gc3VjaCBjYXNlLgotKyAgIEl0 IG9jY3VycyB2ZXJ5IGVhcmx5IG9uIGVuYWJsZV9icmVhay0+bmV3X3N5bWZpbGVfb2JqZmlsZS0+ Ci0rICAgLT5icmVha3BvaW50X3JlX3NldC0+ZGVjb2RlX2xpbmVfMS0+ZGVjb2RlX3ZhcmlhYmxl XzEtPgotKyAgIC0+ZmluZF9mdW5jdGlvbl9zdGFydF9zYWwgICovCi0rCi0rc3RhdGljIENPUkVf QUREUgotK2FtZDY0X2FuYWx5emVfcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot KwkJCUNPUkVfQUREUiBwYywgQ09SRV9BRERSIGN1cnJlbnRfcGMsCi0rCQkJc3RydWN0IGFtZDY0 X2ZyYW1lX2NhY2hlICpjYWNoZSkKLSt7Ci0rICBpbnQgc3RhdHVzOwotKyAgc3RydWN0IGFtZDY0 X2FuYWx5emVfcHJvbG9ndWVfZGF0YSBkYXRhOwotKyAgc3RydWN0IHVpX2ZpbGUgKnNhdmVkX2dk Yl9zdGRlcnI7Ci0rCi0rICAvKiBTdXBwcmVzcyBlcnJvciBtZXNzYWdlcy4gICovCi0rICBzYXZl ZF9nZGJfc3RkZXJyID0gZ2RiX3N0ZGVycjsKLSsgIGdkYl9zdGRlcnIgPSB1aV9maWxlX25ldyAo KTsKLSsKLSsgIGRhdGEuZ2RiYXJjaCA9IGdkYmFyY2g7Ci0rICBkYXRhLnBjID0gcGM7Ci0rICBk YXRhLmN1cnJlbnRfcGMgPSBjdXJyZW50X3BjOwotKyAgZGF0YS5jYWNoZSA9IGNhY2hlOwotKyAg c3RhdHVzID0gY2F0Y2hfZXJyb3JzIChhbWQ2NF9hbmFseXplX3Byb2xvZ3VlXzEsICZkYXRhLCAi IiwgUkVUVVJOX01BU0tfQUxMKTsKLSsKLSsgIC8qIFN0b3Agc3VwcHJlc3NpbmcgZXJyb3IgbWVz c2FnZXMuICAqLwotKyAgdWlfZmlsZV9kZWxldGUgKGdkYl9zdGRlcnIpOwotKyAgZ2RiX3N0ZGVy ciA9IHNhdmVkX2dkYl9zdGRlcnI7Ci0rCi0rICBpZiAoc3RhdHVzKQotKyAgICByZXR1cm4gZGF0 YS5yZXR2YWw7Ci0gICByZXR1cm4gcGM7Ci0gfQotIAotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5 MjUvZ2RiL2F1eHYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9n ZGIvYXV4di5jCTIwMDktMDctMDIgMTk6MjU6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYu OC45MS4yMDA5MDkyNS9nZGIvYXV4di5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICsw MjAwCi1AQCAtNzgsNyArNzgsNyBAQCBwcm9jZnNfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzCi0gICAgUmV0dXJuIDEgaWYgYW4gZW50cnkgd2FzIHJlYWQgaW50byAqVFlQRVAgYW5k ICpWQUxQLiAgKi8KLSBzdGF0aWMgaW50Ci0gZGVmYXVsdF9hdXh2X3BhcnNlIChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzLCBnZGJfYnl0ZSAqKnJlYWRwdHIsCi0tCQkgICBnZGJfYnl0ZSAqZW5kcHRy LCBDT1JFX0FERFIgKnR5cGVwLCBDT1JFX0FERFIgKnZhbHApCi0rCQkgICBnZGJfYnl0ZSAqZW5k cHRyLCBVTE9OR0VTVCAqdHlwZXAsIENPUkVfQUREUiAqdmFscCkKLSB7Ci0gICBjb25zdCBpbnQg c2l6ZW9mX2F1eHZfZmllbGQgPSBnZGJhcmNoX3B0cl9iaXQgKHRhcmdldF9nZGJhcmNoKQotIAkJ CQkvIFRBUkdFVF9DSEFSX0JJVDsKLUBAIC0xMDYsNyArMTA2LDcgQEAgZGVmYXVsdF9hdXh2X3Bh cnNlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqbwotICAgIFJldHVybiAxIGlmIGFuIGVudHJ5IHdhcyBy ZWFkIGludG8gKlRZUEVQIGFuZCAqVkFMUC4gICovCi0gaW50Ci0gdGFyZ2V0X2F1eHZfcGFyc2Ug KHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGdkYl9ieXRlICoqcmVhZHB0ciwKLS0gICAgICAgICAg ICAgICAgICBnZGJfYnl0ZSAqZW5kcHRyLCBDT1JFX0FERFIgKnR5cGVwLCBDT1JFX0FERFIgKnZh bHApCi0rICAgICAgICAgICAgICAgICAgZ2RiX2J5dGUgKmVuZHB0ciwgVUxPTkdFU1QgKnR5cGVw LCBDT1JFX0FERFIgKnZhbHApCi0gewotICAgc3RydWN0IHRhcmdldF9vcHMgKnQ7Ci0gICBmb3Ig KHQgPSBvcHM7IHQgIT0gTlVMTDsgdCA9IHQtPmJlbmVhdGgpCi1AQCAtMTIxLDkgKzEyMSwxMCBA QCB0YXJnZXRfYXV4dl9wYXJzZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wCi0gICAgYW4gZXJyb3Ig Z2V0dGluZyB0aGUgaW5mb3JtYXRpb24uICBPbiBzdWNjZXNzLCByZXR1cm4gMSBhZnRlcgotICAg IHN0b3JpbmcgdGhlIGVudHJ5J3MgdmFsdWUgZmllbGQgaW4gKlZBTFAuICAqLwotIGludAotLXRh cmdldF9hdXh2X3NlYXJjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSIG1hdGNo LCBDT1JFX0FERFIgKnZhbHApCi0rdGFyZ2V0X2F1eHZfc2VhcmNoIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzLCBVTE9OR0VTVCBtYXRjaCwgQ09SRV9BRERSICp2YWxwKQotIHsKLS0gIENPUkVfQURE UiB0eXBlLCB2YWw7Ci0rICBDT1JFX0FERFIgdmFsOwotKyAgVUxPTkdFU1QgYXRfdHlwZTsKLSAg IGdkYl9ieXRlICpkYXRhOwotICAgTE9OR0VTVCBuID0gdGFyZ2V0X3JlYWRfYWxsb2MgKG9wcywg VEFSR0VUX09CSkVDVF9BVVhWLCBOVUxMLCAmZGF0YSk7Ci0gICBnZGJfYnl0ZSAqcHRyID0gZGF0 YTsKLUBAIC0xMzMsMTAgKzEzNCwxMCBAQCB0YXJnZXRfYXV4dl9zZWFyY2ggKHN0cnVjdCB0YXJn ZXRfb3BzICpvCi0gICAgIHJldHVybiBuOwotIAotICAgd2hpbGUgKDEpCi0tICAgIHN3aXRjaCAo dGFyZ2V0X2F1eHZfcGFyc2UgKG9wcywgJnB0ciwgZGF0YSArIG4sICZ0eXBlLCAmdmFsKSkKLSsg ICAgc3dpdGNoICh0YXJnZXRfYXV4dl9wYXJzZSAob3BzLCAmcHRyLCBkYXRhICsgbiwgJmF0X3R5 cGUsICZ2YWwpKQotICAgICAgIHsKLSAgICAgICBjYXNlIDE6CQkJLyogSGVyZSdzIGFuIGVudHJ5 LCBjaGVjayBpdC4gICovCi0tCWlmICh0eXBlID09IG1hdGNoKQotKwlpZiAoYXRfdHlwZSA9PSBt YXRjaCkKLSAJICB7Ci0gCSAgICB4ZnJlZSAoZGF0YSk7Ci0gCSAgICAqdmFscCA9IHZhbDsKLUBA IC0xNTksNyArMTYwLDggQEAgdGFyZ2V0X2F1eHZfc2VhcmNoIChzdHJ1Y3QgdGFyZ2V0X29wcyAq bwotIGludAotIGZwcmludF90YXJnZXRfYXV4diAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0cnVj dCB0YXJnZXRfb3BzICpvcHMpCi0gewotLSAgQ09SRV9BRERSIHR5cGUsIHZhbDsKLSsgIENPUkVf QUREUiB2YWw7Ci0rICBVTE9OR0VTVCBhdF90eXBlOwotICAgZ2RiX2J5dGUgKmRhdGE7Ci0gICBM T05HRVNUIGxlbiA9IHRhcmdldF9yZWFkX2FsbG9jIChvcHMsIFRBUkdFVF9PQkpFQ1RfQVVYViwg TlVMTCwKLSAJCQkJICAgJmRhdGEpOwotQEAgLTE2OSwxMyArMTcxLDEzIEBAIGZwcmludF90YXJn ZXRfYXV4diAoc3RydWN0IHVpX2ZpbGUgKmZpbGUKLSAgIGlmIChsZW4gPD0gMCkKLSAgICAgcmV0 dXJuIGxlbjsKLSAKLS0gIHdoaWxlICh0YXJnZXRfYXV4dl9wYXJzZSAob3BzLCAmcHRyLCBkYXRh ICsgbGVuLCAmdHlwZSwgJnZhbCkgPiAwKQotKyAgd2hpbGUgKHRhcmdldF9hdXh2X3BhcnNlIChv cHMsICZwdHIsIGRhdGEgKyBsZW4sICZhdF90eXBlLCAmdmFsKSA+IDApCi0gICAgIHsKLSAgICAg ICBjb25zdCBjaGFyICpuYW1lID0gIj8/PyI7Ci0gICAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRp b24gPSAiIjsKLSAgICAgICBlbnVtIHsgZGVjLCBoZXgsIHN0ciB9IGZsYXZvciA9IGhleDsKLSAK LS0gICAgICBzd2l0Y2ggKHR5cGUpCi0rICAgICAgc3dpdGNoIChhdF90eXBlKQotIAl7Ci0gI2Rl ZmluZSBUQUcodGFnLCB0ZXh0LCBraW5kKSBcCi0gCWNhc2UgdGFnOiBuYW1lID0gI3RhZzsgZGVz Y3JpcHRpb24gPSB0ZXh0OyBmbGF2b3IgPSBraW5kOyBicmVhawotQEAgLTIzMSw3ICsyMzMsNyBA QCBmcHJpbnRfdGFyZ2V0X2F1eHYgKHN0cnVjdCB1aV9maWxlICpmaWxlCi0gCX0KLSAKLSAgICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCAiJS00cyAlLTIwcyAlLTMwcyAiLAotLQkJCXBsb25n ZXN0ICh0eXBlKSwgbmFtZSwgZGVzY3JpcHRpb24pOwotKwkJCXBsb25nZXN0IChhdF90eXBlKSwg bmFtZSwgZGVzY3JpcHRpb24pOwotICAgICAgIHN3aXRjaCAoZmxhdm9yKQotIAl7Ci0gCWNhc2Ug ZGVjOgotQEAgLTI1Myw3ICsyNTUsNyBAQCBmcHJpbnRfdGFyZ2V0X2F1eHYgKHN0cnVjdCB1aV9m aWxlICpmaWxlCi0gCSAgYnJlYWs7Ci0gCX0KLSAgICAgICArK2VudHM7Ci0tICAgICAgaWYgKHR5 cGUgPT0gQVRfTlVMTCkKLSsgICAgICBpZiAoYXRfdHlwZSA9PSBBVF9OVUxMKQotIAlicmVhazsK LSAgICAgfQotIAotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2F1eHYuaAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvYXV4di5oCTIwMDktMDYtMDcg MjE6MDc6MDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvYXV4 di5oCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMzEsMTQgKzMxLDE0 IEBACi0gICAgUmV0dXJuIDEgaWYgYW4gZW50cnkgd2FzIHJlYWQgaW50byAqVFlQRVAgYW5kICpW QUxQLiAgKi8KLSBleHRlcm4gaW50IHRhcmdldF9hdXh2X3BhcnNlIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzLAotIAkJCSAgICAgIGdkYl9ieXRlICoqcmVhZHB0ciwgZ2RiX2J5dGUgKmVuZHB0ciwK LS0JCQkgICAgICBDT1JFX0FERFIgKnR5cGVwLCBDT1JFX0FERFIgKnZhbHApOwotKwkJCSAgICAg IFVMT05HRVNUICp0eXBlcCwgQ09SRV9BRERSICp2YWxwKTsKLSAKLSAvKiBFeHRyYWN0IHRoZSBh dXhpbGlhcnkgdmVjdG9yIGVudHJ5IHdpdGggYV90eXBlIG1hdGNoaW5nIE1BVENILgotICAgIFJl dHVybiB6ZXJvIGlmIG5vIHN1Y2ggZW50cnkgd2FzIGZvdW5kLCBvciAtMSBpZiB0aGVyZSB3YXMK LSAgICBhbiBlcnJvciBnZXR0aW5nIHRoZSBpbmZvcm1hdGlvbi4gIE9uIHN1Y2Nlc3MsIHJldHVy biAxIGFmdGVyCi0gICAgc3RvcmluZyB0aGUgZW50cnkncyB2YWx1ZSBmaWVsZCBpbiAqVkFMUC4g ICovCi0gZXh0ZXJuIGludCB0YXJnZXRfYXV4dl9zZWFyY2ggKHN0cnVjdCB0YXJnZXRfb3BzICpv cHMsCi0tCQkJICAgICAgIENPUkVfQUREUiBtYXRjaCwgQ09SRV9BRERSICp2YWxwKTsKLSsJCQkg ICAgICAgVUxPTkdFU1QgbWF0Y2gsIENPUkVfQUREUiAqdmFscCk7Ci0gCi0gLyogUHJpbnQgdGhl IGNvbnRlbnRzIG9mIHRoZSB0YXJnZXQncyBBVVhWIG9uIHRoZSBzcGVjaWZpZWQgZmlsZS4gKi8K LSBleHRlcm4gaW50IGZwcmludF90YXJnZXRfYXV4diAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMpOwotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2R3 YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIv ZHdhcmYycmVhZC5jCTIwMDktMDktMjUgMTA6MjU6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTYuOC45MS4yMDA5MDkyNS9nZGIvZHdhcmYycmVhZC5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAw MDAwMDAwICswMjAwCi1AQCAtMTcxNyw3ICsxNzE3LDcgQEAgZHdhcmYyX2J1aWxkX3BzeW10YWJz IChzdHJ1Y3Qgb2JqZmlsZSAqbwotICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3 YXJmMl9wZXJfb2JqZmlsZS0+ZWhfZnJhbWUpOwotICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2Jq ZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+ZnJhbWUpOwotIAotLSAgaWYgKG1haW5saW5lCi0r ICBpZiAoKG1haW5saW5lID09IDEpCi0gICAgICAgfHwgKG9iamZpbGUtPmdsb2JhbF9wc3ltYm9s cy5zaXplID09IDAKLSAJICAmJiBvYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMuc2l6ZSA9PSAwKSkK LSAgICAgewotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2VsZnJlYWQuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvZWxmcmVhZC5jCTIwMDktMDkt MjUgMTA6MjU6MzguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIv ZWxmcmVhZC5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtNjgxLDcg KzY4MSw3IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKLSAgIC8q IElmIHdlIGFyZSByZWluaXRpYWxpemluZywgb3IgaWYgd2UgaGF2ZSBuZXZlciBsb2FkZWQgc3lt cyB5ZXQsCi0gICAgICBzZXQgdGFibGUgdG8gZW1wdHkuICBNQUlOTElORSBpcyBjbGVhcmVkIHNv IHRoYXQgKl9yZWFkX3BzeW10YWIKLSAgICAgIGZ1bmN0aW9ucyBkbyBub3QgYWxsIGFsc28gcmUt aW5pdGlhbGl6ZSB0aGUgcHN5bWJvbCB0YWJsZS4gKi8KLS0gIGlmIChtYWlubGluZSkKLSsgIGlm IChtYWlubGluZSA9PSAxKQotICAgICB7Ci0gICAgICAgaW5pdF9wc3ltYm9sX2xpc3QgKG9iamZp bGUsIDApOwotICAgICAgIG1haW5saW5lID0gMDsKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1 L2dkYi9pbmZydW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9n ZGIvaW5mcnVuLmMJMjAwOS0wOS0yNSAxMDoyNTozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ni44LjkxLjIwMDkwOTI1L2dkYi9pbmZydW4uYwkyMDA5LTA5LTI1IDEwOjI1OjQ1LjAwMDAwMDAw MCArMDIwMAotQEAgLTM2NTksNiArMzY1OSwxMCBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9M T05HSk1QX1JFU1VNRSAoCi0gI2VuZGlmCi0gCSAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9yICgp OwotIAotKwkgIC8qIEZvciBQSUUgZXhlY3V0YWJsZXMsIHdlIGRvbnQgcmVhbGx5IGtub3cgd2hl cmUgdGhlCi0rCSAgICAgYnJlYWtwb2ludHMgYXJlIGdvaW5nIHRvIGJlIHVudGlsIHdlIHN0YXJ0 IHVwIHRoZSBpbmZlcmlvci4gICovCi0rCSAgZW5hYmxlX2JyZWFrcG9pbnRzX2FmdGVyX3N0YXJ0 dXAgKCk7Ci0rCi0gCSAgLyogSWYgcmVxdWVzdGVkLCBzdG9wIHdoZW4gdGhlIGR5bmFtaWMgbGlu a2VyIG5vdGlmaWVzCi0gCSAgICAgZ2RiIG9mIGV2ZW50cy4gIFRoaXMgYWxsb3dzIHRoZSB1c2Vy IHRvIGdldCBjb250cm9sCi0gCSAgICAgYW5kIHBsYWNlIGJyZWFrcG9pbnRzIGluIGluaXRpYWxp emVyIHJvdXRpbmVzIGZvcgotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL29iamZpbGVz LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL29iamZpbGVz LmMJMjAwOS0wOS0yNSAxMDoyNTozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIw MDkwOTI1L2dkYi9vYmpmaWxlcy5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAw Ci1AQCAtNTMsNiArNTMsOSBAQAotICNpbmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJj b21wbGFpbnRzLmgiCi0gCi0rI2luY2x1ZGUgImF1eHYuaCIKLSsjaW5jbHVkZSAiZWxmL2NvbW1v bi5oIgotKwotIC8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucyAqLwotIAotIHN0YXRp YyB2b2lkIG9iamZpbGVfYWxsb2NfZGF0YSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotQEAg LTI4MCw5ICsyODMsMTcgQEAgaW5pdF9lbnRyeV9wb2ludF9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAq bwotIENPUkVfQUREUgotIGVudHJ5X3BvaW50X2FkZHJlc3MgKHZvaWQpCi0gewotKyAgaW50IHJl dDsKLSsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwotICAgQ09SRV9BRERSIGVudHJ5X3Bv aW50OwotIAotKyAgLyogRmluZCB0aGUgYWRkcmVzcyBvZiB0aGUgZW50cnkgcG9pbnQgb2YgdGhl IHByb2dyYW0gZnJvbSB0aGUKLSsgICAgIGF1eHYgdmVjdG9yLiAgKi8KLSsgIHJldCA9IHRhcmdl dF9hdXh2X3NlYXJjaCAoJmN1cnJlbnRfdGFyZ2V0LCBBVF9FTlRSWSwgJmVudHJ5X3BvaW50KTsK LSsgIGlmIChyZXQgPT0gMSkKLSsgICAgIHJldHVybiBlbnRyeV9wb2ludDsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKLSsKLSAgIGlmIChzeW1maWxlX29iamZpbGUgPT0gTlVMTCkKLSAgICAgcmV0dXJu IDA7Ci0gCi1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc29saWItc3ZyNC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAw OS0wOS0yNSAxMDoyNTozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1 L2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0wOS0yNSAxMDoyODowNy4wMDAwMDAwMDAgKzAyMDAKLUBA IC00Nyw2ICs0Nyw3IEBACi0gI2luY2x1ZGUgImV4ZWMuaCIKLSAjaW5jbHVkZSAiYXV4di5oIgot ICNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAKLSBzdGF0 aWMgc3RydWN0IGxpbmtfbWFwX29mZnNldHMgKnN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAo dm9pZCk7Ci0gc3RhdGljIGludCBzdnI0X2hhdmVfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7Ci1A QCAtMzU5LDcgKzM2MCw5IEBAIHNvbGliX3N2cjRfaW5mZXJpb3JfZXhpdCAoaW50IHBpZCkKLSAK LSAvKiBMb2NhbCBmdW5jdGlvbiBwcm90b3R5cGVzICovCi0gCi0rI2lmIDAKLSBzdGF0aWMgaW50 IG1hdGNoX21haW4gKGNoYXIgKik7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIENPUkVfQUREUiBiZmRf bG9va3VwX3N5bWJvbCAoYmZkICosIGNoYXIgKik7Ci0gCi1AQCAtNjAwLDEwICs2MDMsMTIgQEAg c2Nhbl9keW50YWcgKGludCBkeW50YWcsIGJmZCAqYWJmZCwgQ09SRQotICAgaW50IGFyY2hfc2l6 ZSwgc3RlcCwgc2VjdF9zaXplOwotICAgbG9uZyBkeW5fdGFnOwotICAgQ09SRV9BRERSIGR5bl9w dHIsIGR5bl9hZGRyOwotKyAgQ09SRV9BRERSIHJlbG9jX2FkZHIgPSAwOwotICAgZ2RiX2J5dGUg KmJ1ZmVuZCwgKmJ1ZnN0YXJ0LCAqYnVmOwotICAgRWxmMzJfRXh0ZXJuYWxfRHluICp4X2R5bnBf MzI7Ci0gICBFbGY2NF9FeHRlcm5hbF9EeW4gKnhfZHlucF82NDsKLSAgIHN0cnVjdCBiZmRfc2Vj dGlvbiAqc2VjdDsKLSsgIGludCByZXQ7Ci0gCi0gICBpZiAoYWJmZCA9PSBOVUxMKQotICAgICBy ZXR1cm4gMDsKLUBAIC02MTUsMTkgKzYyMCw4MSBAQCBzY2FuX2R5bnRhZyAoaW50IGR5bnRhZywg YmZkICphYmZkLCBDT1JFCi0gICBpZiAoYXJjaF9zaXplID09IC0xKQotICAgICByZXR1cm4gMDsK LSAKLSsgIC8qIFRoZSBhdXh2IHZlY3RvciBiYXNlZCByZWxvY2F0YWJsZSBmaWxlcyByZWFkaW5n IGlzIGxpbWl0ZWQgdG8gdGhlIG1haW4KLSsgICAgIGV4ZWN1dGFibGUuICAqLwotKyAgZ2RiX2Fz c2VydCAoYWJmZCA9PSBleGVjX2JmZCB8fCBwdHIgPT0gTlVMTCk7Ci0rCi0rICBpZiAocHRyICE9 IE5VTEwpCi0rICAgIHsKLSsgICAgICBDT1JFX0FERFIgZW50cnlfYWRkcjsKLSsKLSsgICAgICAv KiBGaW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBlbnRyeSBwb2ludCBvZiB0aGUgcHJvZ3JhbSBmcm9t IHRoZQotKwkgYXV4diB2ZWN0b3IuICAqLwotKyAgICAgIHJldCA9IHRhcmdldF9hdXh2X3NlYXJj aCAoJmN1cnJlbnRfdGFyZ2V0LCBBVF9FTlRSWSwgJmVudHJ5X2FkZHIpOwotKwotKyAgICAgIGlm IChyZXQgPT0gMCB8fCByZXQgPT0gLTEpCi0rCXsKLSsJICAvKiBObyBhdXh2IGluZm8sIG1heWJl IGFuIG9sZGVyIGtlcm5lbC4gRmFrZSBvdXIgd2F5IHRocm91Z2guICAqLwotKwkgIGVudHJ5X2Fk ZHIgPSBiZmRfZ2V0X3N0YXJ0X2FkZHJlc3MgKGV4ZWNfYmZkKTsgCi0rCi0rCSAgaWYgKGRlYnVn X3NvbGliKQotKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQkiZWxm X2xvY2F0ZV9iYXNlOiBwcm9ncmFtIGVudHJ5IGFkZHJlc3Mgbm90IGZvdW5kLiBVc2luZyBiZmQn cyAlcyBmb3IgJXNcbiIsCi0rCQkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgZW50cnlfYWRk ciksIGV4ZWNfYmZkLT5maWxlbmFtZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAo ZGVidWdfc29saWIpCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJ CSJlbGZfbG9jYXRlX2Jhc2U6IGZvdW5kIHByb2dyYW0gZW50cnkgYWRkcmVzcyAlcyBmb3IgJXNc biIsCi0rCQkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgZW50cnlfYWRkciksIGV4ZWNfYmZk LT5maWxlbmFtZSk7Ci0rCX0KLSsgICAgICByZWxvY19hZGRyID0gZW50cnlfYWRkciAtIGJmZF9n ZXRfc3RhcnRfYWRkcmVzcyAoZXhlY19iZmQpOwotKyAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJ ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAgICAiZWxmX2xvY2F0ZV9iYXNl OiBleHBlY3RlZCByZWxvY2F0aW9uIG9mZnNldCAlcyBmb3IgJXNcbiIsCi0rCQkJICAgIHBhZGRy ZXNzICh0YXJnZXRfZ2RiYXJjaCwgcmVsb2NfYWRkciksIGV4ZWNfYmZkLT5maWxlbmFtZSk7Ci0r ICAgIH0KLSsKLSAgIC8qIEZpbmQgdGhlIHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIC5keW5hbWljIHNl Y3Rpb24uICAqLwotICAgc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmR5 bmFtaWMiKTsKLSAgIGlmIChzZWN0ID09IE5VTEwpCi0tICAgIHJldHVybiAwOwotKyAgICB7IAot KyAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAotKwkJCSAgICAiZWxmX2xvY2F0ZV9iYXNlOiAuZHluYW1pYyBzZWN0aW9uIG5vdCBmb3VuZCBp biAlcyAtLSByZXR1cm4gbm93XG4iLAotKwkJCSAgICBleGVjX2JmZC0+ZmlsZW5hbWUpOwotKyAg ICAgIHJldHVybiAwOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsgCi0rICAgICAgaWYgKGRlYnVn X3NvbGliKQotKwlmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJICAgICJlbGZf bG9jYXRlX2Jhc2U6IC5keW5hbWljIHNlY3Rpb24gZm91bmQgaW4gJXNcbiIsCi0rCQkJICAgIGV4 ZWNfYmZkLT5maWxlbmFtZSk7Ci0rICAgIH0KLSsKLSAgIGR5bl9hZGRyID0gYmZkX3NlY3Rpb25f dm1hIChhYmZkLCBzZWN0KTsKLSsgIGlmIChkZWJ1Z19zb2xpYikKLSsgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSJlbGZfbG9jYXRlX2Jhc2U6IC5keW5hbWljIGFkZHIg JXNcbiIsCi0rCQkJcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBkeW5fYWRkcikpOwotIAotICAg LyogUmVhZCBpbiAuZHluYW1pYyBmcm9tIHRoZSBCRkQuICBXZSB3aWxsIGdldCB0aGUgYWN0dWFs IHZhbHVlCi0gICAgICBmcm9tIG1lbW9yeSBsYXRlci4gICovCi0gICBzZWN0X3NpemUgPSBiZmRf c2VjdGlvbl9zaXplIChhYmZkLCBzZWN0KTsKLSAgIGJ1ZiA9IGJ1ZnN0YXJ0ID0gYWxsb2NhIChz ZWN0X3NpemUpOwotKyAgaWYgKGRlYnVnX3NvbGliKSAKLSsgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAiZWxmX2xvY2F0ZV9iYXNl OiByZWFkIGluIC5keW5hbWljIHNlY3Rpb25cbiIpOwotICAgaWYgKCFiZmRfZ2V0X3NlY3Rpb25f Y29udGVudHMgKGFiZmQsIHNlY3QsCi0gCQkJCSBidWYsIDAsIHNlY3Rfc2l6ZSkpCi0tICAgIHJl dHVybiAwOwotKyAgICB7IAotKyAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCSAgICAiZWxmX2xvY2F0ZV9iYXNlOiBjb3VsZG4ndCBy ZWFkIC5keW5hbWljIHNlY3Rpb24gLS0gcmV0dXJuIG5vd1xuIik7Ci0rICAgICAgcmV0dXJuIDA7 Ci0rICAgIH0KLSAKLSAgIC8qIEl0ZXJhdGUgb3ZlciBCVUYgYW5kIHNjYW4gZm9yIERZTlRBRy4g IElmIGZvdW5kLCBzZXQgUFRSIGFuZCByZXR1cm4uICAqLwotICAgc3RlcCA9IChhcmNoX3NpemUg PT0gMzIpID8gc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9EeW4pCi1AQCAtNjQ4LDI2ICs3MTUsMTA1 IEBAIHNjYW5fZHludGFnIChpbnQgZHludGFnLCBiZmQgKmFiZmQsIENPUkUKLSAJZHluX3RhZyA9 IGJmZF9oX2dldF82NCAoYWJmZCwgKGJmZF9ieXRlICopIHhfZHlucF82NC0+ZF90YWcpOwotIAlk eW5fcHRyID0gYmZkX2hfZ2V0XzY0IChhYmZkLCAoYmZkX2J5dGUgKikgeF9keW5wXzY0LT5kX3Vu LmRfcHRyKTsKLSAgICAgICB9Ci0tICAgICBpZiAoZHluX3RhZyA9PSBEVF9OVUxMKQotKwotKyAg ICAvKiBWZXJpZnkgUkVMT0NfQUREUiBtYWtlcyBzZW5zZSAtIGl0IGRvZXMgbm90IGhhdmUgdG8g Zm9yIHZhbGdyaW5kIHdoaWNoCi0rICAgICAgIHN1cHBsaWVzIHVzIGEgc3BlY2lhbGx5IGNyYWZ0 ZWQgZXhlY3V0YWJsZSBpbiAvcHJvYy9QSUQvZmQvWCB3aGlsZQotKyAgICAgICAvcHJvYy9QSUQv YXV4diBjb3JyZXNwb25kcyB0byBhIGRpZmZlcmVudCBleGVjdXRhYmxlICguLi4vbWVtY2hlY2sp LiAgKi8KLSsgICAgaWYgKHJlbG9jX2FkZHIpCi0rICAgICAgewotKwlnZGJfYnl0ZSB0YWdfYnVm WzhdOwotKwlDT1JFX0FERFIgdGFnX2FkZHI7Ci0rCi0rCXRhZ19hZGRyID0gZHluX2FkZHIgKyAo YnVmIC0gYnVmc3RhcnQpICsgcmVsb2NfYWRkcjsKLSsJaWYgKHRhcmdldF9yZWFkX21lbW9yeSAo dGFnX2FkZHIsIHRhZ19idWYsIGFyY2hfc2l6ZSAvIDgpID09IDApCi0rCSAgewotKwkgICAgaWYg KG1lbWNtcCAodGFnX2J1ZiwgYnVmLCBhcmNoX3NpemUgLyA4KSAhPSAwKQotKwkgICAgICB7Ci0r CQlpZiAoZGVidWdfc29saWIpCi0rCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK LSsJCQkJICAgICAgImVsZl9sb2NhdGVfYmFzZTogdGFnIGF0IG9mZnNldCAweCVseCBkb2VzIG5v dCBtYXRjaCwiCi0rCQkJCSAgICAgICIgZHJvcHBpbmcgcmVsb2NhdGlvbiBvZmZzZXQgJXNcbiIs Ci0rCQkJCSAgICAgICh1bnNpZ25lZCBsb25nKSAoYnVmIC0gYnVmc3RhcnQpLCBwYWRkcmVzcyAo dGFyZ2V0X2dkYmFyY2gsIHJlbG9jX2FkZHIpKTsKLSsJCXJlbG9jX2FkZHIgPSAwOwotKwkgICAg ICB9Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgaWYgKGRlYnVnX3NvbGliKQotKwkgICAg ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSAgImVsZl9sb2NhdGVfYmFz ZTogdGFnIGF0IG9mZnNldCAweCVseCBpcyBub3QgcmVhZGFibGUsIgotKwkJCQkgICIgZHJvcHBp bmcgcmVsb2NhdGlvbiBvZmZzZXQgJXNcbiIsCi0rCQkJCSAgKHVuc2lnbmVkIGxvbmcpIChidWYg LSBidWZzdGFydCksIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgcmVsb2NfYWRkcikpOwotKwkg ICAgcmVsb2NfYWRkciA9IDA7Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsgICAgaWYgKGR5bl90YWcg PT0gRFRfTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgICBpZiAoZHluX3RhZyA9PSBkeW50 YWcpCi0tICAgICAgIHsKLS0JIC8qIElmIHJlcXVlc3RlZCwgdHJ5IHRvIHJlYWQgdGhlIHJ1bnRp bWUgdmFsdWUgb2YgdGhpcyAuZHluYW1pYwotLQkgICAgZW50cnkuICAqLwotLQkgaWYgKHB0cikK LS0JICAgewotLQkgICAgIHN0cnVjdCB0eXBlICpwdHJfdHlwZTsKLS0JICAgICBnZGJfYnl0ZSBw dHJfYnVmWzhdOwotLQkgICAgIENPUkVfQUREUiBwdHJfYWRkcjsKLS0KLS0JICAgICBwdHJfdHlw ZSA9IGJ1aWx0aW5fdHlwZSAodGFyZ2V0X2dkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotLQkg ICAgIHB0cl9hZGRyID0gZHluX2FkZHIgKyAoYnVmIC0gYnVmc3RhcnQpICsgYXJjaF9zaXplIC8g ODsKLS0JICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChwdHJfYWRkciwgcHRyX2J1ZiwgYXJj aF9zaXplIC8gOCkgPT0gMCkKLS0JICAgICAgIGR5bl9wdHIgPSBleHRyYWN0X3R5cGVkX2FkZHJl c3MgKHB0cl9idWYsIHB0cl90eXBlKTsKLS0JICAgICAqcHRyID0gZHluX3B0cjsKLS0JICAgfQot LQkgcmV0dXJuIDE7Ci0tICAgICAgIH0KLSsgICAgaWYgKGR5bl90YWcgPT0gZHludGFnKQotKyAg ICAgIHsKLSsJLyogSWYgcmVxdWVzdGVkLCB0cnkgdG8gcmVhZCB0aGUgcnVudGltZSB2YWx1ZSBv ZiB0aGlzIC5keW5hbWljCi0rCSAgIGVudHJ5LiAgKi8KLSsJaWYgKHB0cikKLSsJICB7Ci0rCSAg ICBnZGJfYnl0ZSBwdHJfYnVmWzhdOwotKwkgICAgQ09SRV9BRERSIHB0cl9hZGRyOwotKwkgICAg aW50IGdvdDsKLSsKLSsJICAgIHB0cl9hZGRyID0gZHluX2FkZHIgKyAoYnVmIC0gYnVmc3RhcnQp ICsgYXJjaF9zaXplIC8gODsKLSsJICAgIGlmIChwdHIgIT0gTlVMTCkKLSsJICAgICAgewotKwkJ aWYgKGRlYnVnX3NvbGliKQotKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0r CQkJCSAgICAgICJlbGZfbG9jYXRlX2Jhc2U6IHVucmVsb2NhdGVkIHB0ciBhZGRyICVzXG4iLAot KwkJCQkgICAgICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHB0cl9hZGRyKSk7Ci0rCQlwdHJf YWRkciArPSByZWxvY19hZGRyOwotKwkJaWYgKGRlYnVnX3NvbGliKSAKLSsJCSAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAKLSsJCQkJICAgICAgImVsZl9sb2NhdGVfYmFzZTogcmVs b2NhdGVkIHB0ciBhZGRyICVzIgotKwkJCQkgICAgICAiIChyZWxvY2F0aW9uIG9mZnNldCAlcykg Zm9yICVzXG4iLAotKwkJCQkgICAgICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHB0cl9hZGRy KSwgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCByZWxvY19hZGRyKSwKLSsJCQkJICAgICAgZXhl Y19iZmQtPmZpbGVuYW1lKTsKLSsJICAgICAgfQotKwkgICAgZ290ID0gdGFyZ2V0X3JlYWRfbWVt b3J5IChwdHJfYWRkciwgcHRyX2J1ZiwgYXJjaF9zaXplIC8gOCk7Ci0rCSAgICBpZiAoZ290ICE9 IDAgJiYgcmVsb2NfYWRkcikKLSsJICAgICAgewotKwkJcHRyX2FkZHIgLT0gcmVsb2NfYWRkcjsK LSsJCWlmIChkZWJ1Z19zb2xpYikgCi0rCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywgCi0rCQkJCSAgICAgICJlbGZfbG9jYXRlX2Jhc2U6IHVucmVsb2NhdGVkIGJhY2sgdG8gcHRy IGFkZHIgJXMiCi0rCQkJCSAgICAgICIgYXMgdGhlIG1lbW9yeSB3YXMgdW5yZWFibGUgZm9yICVz XG4iLAotKwkJCQkgICAgICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIHB0cl9hZGRyKSwgZXhl Y19iZmQtPmZpbGVuYW1lKTsKLSsJCWdvdCA9IHRhcmdldF9yZWFkX21lbW9yeSAocHRyX2FkZHIs IHB0cl9idWYsIGFyY2hfc2l6ZSAvIDgpOwotKwkgICAgICB9Ci0rCi0rCSAgICBpZiAoZ290ID09 IDApCi0rCSAgICAgIHsKLSsJCXN0cnVjdCB0eXBlICpwdHJfdHlwZTsKLSsKLSsJCXB0cl90eXBl ID0gYnVpbHRpbl90eXBlICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Ci0rCQlk eW5fcHRyID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzIChwdHJfYnVmLCBwdHJfdHlwZSk7Ci0rCQlp ZiAocHRyICE9IE5VTEwpCi0rCQkgIHsKLSsJCSAgICBpZiAoZGVidWdfc29saWIpCi0rCQkgICAg ICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCQkgICJlbGZfbG9jYXRlX2Jh c2U6IFRhZyBlbnRyeSBoYXMgdmFsdWUgJXMgLS0gcmV0dXJuIG5vd1xuIiwKLSsJCQkJCSAgcGFk ZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBkeW5fcHRyKSk7Ci0rCQkgIH0KLSsJICAgICAgfQotKwkg ICAgZWxzZQotKwkgICAgICB7Ci0rCQlpZiAocHRyICE9IE5VTEwpCi0rCQkgIHsKLSsJCSAgICBp ZiAoZGVidWdfc29saWIpCi0rCQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs Ci0rCQkJCQkgICJlbGZfbG9jYXRlX2Jhc2U6IENvdWxkbid0IHJlYWQgdGFnIGVudHJ5IHZhbHVl IC0tIHJldHVybiBub3dcbiIpOwotKwkJICB9Ci0rCSAgICAgIH0KLSsJICAgICpwdHIgPSBkeW5f cHRyOwotKwkgIH0KLSsJcmV0dXJuIDE7Ci0rICAgICAgfQotICAgfQotIAotICAgcmV0dXJuIDA7 Ci1AQCAtMTA0MCw2ICsxMTg2LDExIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gICBDT1JF X0FERFIgbGRzb21hcCA9IDA7Ci0gICBzdHJ1Y3QgaW5mZXJpb3IgKmluZjsKLSAgIHN0cnVjdCBz dnI0X2luZm8gKmluZm87Ci0rICBjb25zdCBjaGFyICpmaWxlbmFtZSA9IGV4ZWNfYmZkID8gZXhl Y19iZmQtPmZpbGVuYW1lIDogIjxub25lPiI7Ci0rCi0rICBpZiAoZGVidWdfc29saWIpCi0rICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rICAgICAgICAgICAgICAgICAgICAg ICAgInN2cjRfY3VycmVudF9zb3M6IGV4ZWNfYmZkICVzXG4iLCBmaWxlbmFtZSk7Ci0gCi0gICBp ZiAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKSkKLSAgICAgcmV0dXJuIE5V TEw7Ci1AQCAtMTA1NCw3ICsxMjA1LDEzIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gICAv KiBJZiB3ZSBjYW4ndCBmaW5kIHRoZSBkeW5hbWljIGxpbmtlcidzIGJhc2Ugc3RydWN0dXJlLCB0 aGlzCi0gICAgICBtdXN0IG5vdCBiZSBhIGR5bmFtaWNhbGx5IGxpbmtlZCBleGVjdXRhYmxlLiAg SG1tLiAgKi8KLSAgIGlmICghIGluZm8tPmRlYnVnX2Jhc2UpCi0tICAgIHJldHVybiBzdnI0X2Rl ZmF1bHRfc29zICgpOwotKyAgICB7Ci0rICAgICAgaWYgKGRlYnVnX3NvbGliKQotKwlmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIAotKwkJCSAgICAic3ZyNF9jdXJyZW50X3Nvczogbm8g RFRfREVCVUcgZm91bmQgaW4gJXMgLS0gcmV0dXJuIG5vd1xuIiwKLSsJCQkgICAgZmlsZW5hbWUp OwotKyAgICAgIHJldHVybiBzdnI0X2RlZmF1bHRfc29zICgpOwotKyAgICB9Ci0gCi0gICAvKiBX YWxrIHRoZSBpbmZlcmlvcidzIGxpbmsgbWFwIGxpc3QsIGFuZCBidWlsZCBvdXIgbGlzdCBvZgot ICAgICAgYHN0cnVjdCBzb19saXN0JyBub2Rlcy4gICovCi1AQCAtMTA3NCwyNiArMTIzMSwxMDQg QEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKLSAgICAgICBuZXctPmxtX2luZm8tPmxtID0geHph bGxvYyAobG1vLT5saW5rX21hcF9zaXplKTsKLSAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBu ZXctPmxtX2luZm8tPmxtKTsKLSAKLSsgICAgICBpZiAoZGVidWdfc29saWIpCi0rICAgICAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAic3ZyNF9jdXJyZW50X3NvczogcmVhZCBsbSBhdCAlc1xuIiwgcGFkZHJlc3MgKHRhcmdl dF9nZGJhcmNoLCBsbSkpOwotICAgICAgIHJlYWRfbWVtb3J5IChsbSwgbmV3LT5sbV9pbmZvLT5s bSwgbG1vLT5saW5rX21hcF9zaXplKTsKLSAKLSAgICAgICBsbSA9IExNX05FWFQgKG5ldyk7Ci0g Ci0rICAgICAgaWYgKGRlYnVnX3NvbGliKQotKyAgICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ZyNF9jdXJyZW50X3Nv czogaXMgZmlyc3QgbGluayBlbnRyeT8gJWRcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElHTk9SRV9GSVJTVF9MSU5LX01BUF9FTlRSWSAobmV3KSk7Ci0rCi0gICAgICAgLyogRm9y IFNWUjQgdmVyc2lvbnMsIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgbGluayBtYXAgaXMgZm9yIHRo ZQotICAgICAgICAgIGluZmVyaW9yIGV4ZWN1dGFibGUsIHNvIHdlIG11c3QgaWdub3JlIGl0LiAg Rm9yIHNvbWUgdmVyc2lvbnMgb2YKLSAgICAgICAgICBTVlI0LCBpdCBoYXMgbm8gbmFtZS4gIEZv ciBvdGhlcnMgKFNvbGFyaXMgMi4zIGZvciBleGFtcGxlKSwgaXQKLSAgICAgICAgICBkb2VzIGhh dmUgYSBuYW1lLCBzbyB3ZSBjYW4gbm8gbG9uZ2VyIHVzZSBhIG1pc3NpbmcgbmFtZSB0bwotICAg ICAgICAgIGRlY2lkZSB3aGVuIHRvIGlnbm9yZSBpdC4gKi8KLS0gICAgICBpZiAoSUdOT1JFX0ZJ UlNUX0xJTktfTUFQX0VOVFJZIChuZXcpICYmIGxkc29tYXAgPT0gMCkKLSsgICAgICBpZiAoZXhl Y19iZmQgIT0gTlVMTCAmJiBJR05PUkVfRklSU1RfTElOS19NQVBfRU5UUlkgKG5ldykgJiYgbGRz b21hcCA9PSAwKQotIAl7Ci0tCSAgaW5mby0+bWFpbl9sbV9hZGRyID0gbmV3LT5sbV9pbmZvLT5s bV9hZGRyOwotLQkgIGZyZWVfc28gKG5ldyk7Ci0tCX0KLSsgICAgICAgICAgLyogSXQgaXMgdGhl IGZpcnN0IGxpbmsgbWFwIGVudHJ5LCBpLmUuIGl0IGlzIHRoZSBtYWluIGV4ZWN1dGFibGUuICAq LwotKwotKwkgIGlmIChiZmRfZ2V0X3N0YXJ0X2FkZHJlc3MgKGV4ZWNfYmZkKSA9PSBlbnRyeV9w b2ludF9hZGRyZXNzICgpKQotKwkgICAgewotKwkgICAgICAvKiBOb24tcGllIGNhc2UsIG1haW4g ZXhlY3V0YWJsZSBoYXMgbm90IGJlZW4gcmVsb2NhdGVkLiAgKi8KLSsJICAgICAgaW5mby0+bWFp bl9sbV9hZGRyID0gbmV3LT5sbV9pbmZvLT5sbV9hZGRyOwotKwkgICAgICBmcmVlX3NvIChuZXcp OwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsgICAgICAgICAgICAgIC8qIFBpZSBjYXNl LCBtYWluIGV4ZWN1dGFibGUgaGFzIGJlZW4gcmVsb2NhdGVkLiAgKi8KLSsJICAgICAgc3RydWN0 IHNvX2xpc3QgKmdkYl9zb2xpYjsKLSsKLSsJICAgICAgaWYgKGRlYnVnX3NvbGliKQotKwkJZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQkgICAgInN2cjRfY3VycmVudF9zb3M6 IFByb2Nlc3NpbmcgZmlyc3QgbGluayBtYXAgZW50cnlcbiIpOwotKwkgICAgICBzdHJuY3B5IChu ZXctPnNvX25hbWUsIGV4ZWNfYmZkLT5maWxlbmFtZSwKLSsJCSAgICAgICBTT19OQU1FX01BWF9Q QVRIX1NJWkUgLSAxKTsKLSsJICAgICAgbmV3LT5zb19uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0la RSAtIDFdID0gJ1wwJzsKLSsJICAgICAgc3RyY3B5IChuZXctPnNvX29yaWdpbmFsX25hbWUsIG5l dy0+c29fbmFtZSk7Ci0rCSAgICAgIC8qbmV3LT5tYWluID0gMTsqLwotKwkgICAgICBuZXctPm1h aW5fcmVsb2NhdGVkID0gMDsKLSsgICAgICAgICAgICAKLSsJICAgICAgaWYgKGRlYnVnX3NvbGli KQotKwkJeyAKLSsJCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJCQkgICAg ICAic3ZyNF9jdXJyZW50X3NvczogUHJvY2Vzc2luZyBuYW1lbGVzcyBEU09cbiIpOwotKwkJICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCSAgICAgICJzdnI0X2N1cnJlbnRf c29zOiBhZGRpbmcgbmFtZSAlc1xuIiwKLSsJCQkJICAgICAgbmV3LT5zb19uYW1lKTsKLSsJCX0K LSsKLSsJICAgICAgZm9yIChnZGJfc29saWIgPSBtYXN0ZXJfc29fbGlzdCAoKTsKLSsgICAgICAg ICAgICAgICAgICAgZ2RiX3NvbGliOwotKyAgICAgICAgICAgICAgICAgICBnZGJfc29saWIgPSBn ZGJfc29saWItPm5leHQpCi0rCQl7Ci0rCQkgIGlmIChkZWJ1Z19zb2xpYikKLSsJCSAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCQkic3ZyNF9jdXJyZW50X3NvczogY29t cGFyZSBnZGIgJXMgYW5kIG5ldyAlc1xuIiwKLSsJCQkJCWdkYl9zb2xpYi0+c29fbmFtZSwgbmV3 LT5zb19uYW1lKTsKLSsJCSAgaWYgKHN0cmNtcCAoZ2RiX3NvbGliLT5zb19uYW1lLCBuZXctPnNv X25hbWUpID09IDApCi0rCQkgICAgaWYgKGdkYl9zb2xpYi0+bWFpbl9yZWxvY2F0ZWQpCi0rCQkg ICAgICB7IAotKwkJCWlmIChkZWJ1Z19zb2xpYikKLSsJCQkgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLSsJCQkJCSAgICAgICJzdnI0X2N1cnJlbnRfc29zOiBmb3VuZCBtYWluIHJl bG9jYXRlZFxuIik7Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICB9Ci0rCQl9Ci0rCi0rCSAgICAgIGlm ICgoZ2RiX3NvbGliICYmICFnZGJfc29saWItPm1haW5fcmVsb2NhdGVkKSB8fCAoIWdkYl9zb2xp YikpCi0rCQl7Ci0rCQkgIGFkZF90b190YXJnZXRfc2VjdGlvbnMgKDAgLypmcm9tX3R0eSovLCAm Y3VycmVudF90YXJnZXQsIG5ldyk7Ci0rCQkgIG5ldy0+bWFpbiA9IDE7Ci0rCQl9Ci0rCi0rCSAg ICAgIC8qIFdlIG5lZWQgdGhpcyBpbiB0aGUgbGlzdCBvZiBzaGFyZWQgbGlicyB3ZSByZXR1cm4g YmVjYXVzZQotKwkJIHNvbGliX2FkZF9zdHViIHdpbGwgbG9vcCB0aHJvdWdoIGl0IGFuZCBhZGQg dGhlIHN5bWJvbCBmaWxlLiAgKi8KLSsJICAgICAgbmV3LT5uZXh0ID0gMDsKLSsJICAgICAgKmxp bmtfcHRyID0gbmV3OwotKwkgICAgICBsaW5rX3B0ciA9ICZuZXctPm5leHQ7IAotKwkgICAgfQot Kwl9IC8qIEVuZCBvZiBJR05PUkVfRklSU1RfTElOS19NQVBfRU5UUlkgICovCi0gICAgICAgZWxz ZQotIAl7Ci0rICAgICAgICAgIC8qIFRoaXMgaXMgbm90IHRoZSBmaXJzdCBsaW5rIG1hcCBlbnRy eSwgaS5lLiBpcyBub3QgdGhlIG1haW4KLSsgICAgICAgICAgICAgZXhlY3V0YWJsZS4gIE5vdGUg aG93ZXZlciB0aGF0IGl0IGNvdWxkIGJlIHRoZSBEU08gc3VwcGxpZWQgb24KLSsgICAgICAgICAg ICAgY2VydGFpbiBzeXN0ZW1zIChpLmUuIExpbnV4IDIuNikgY29udGFpbmluZyBpbmZvcm1hdGlv biBhYm91dAotKyAgICAgICAgICAgICB0aGUgdnN5c2NhbGwgcGFnZS4gIFdlIG11c3QgaWdub3Jl IHN1Y2ggZW50cnkuIFRoaXMgZW50cnkgaXMgCi0rICAgICAgICAgICAgIG5hbWVsZXNzIChqdXN0 IGxpa2UgdGhlIG9uZSBmb3IgdGhlIG1haW4gZXhlY3V0YWJsZSwgc2lnaCkuICAqLwotKwotIAkg IGludCBlcnJjb2RlOwotIAkgIGNoYXIgKmJ1ZmZlcjsKLSAKLSAJICAvKiBFeHRyYWN0IHRoaXMg c2hhcmVkIG9iamVjdCdzIG5hbWUuICAqLwotKwkgIGlmIChkZWJ1Z19zb2xpYikKLSsJICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAic3ZyNF9jdXJyZW50X3NvczogcmVhZCBMTV9OQU1FXG4iKTsKLSsKLSAJICB0YXJn ZXRfcmVhZF9zdHJpbmcgKExNX05BTUUgKG5ldyksICZidWZmZXIsCi0gCQkJICAgICAgU09fTkFN RV9NQVhfUEFUSF9TSVpFIC0gMSwgJmVycmNvZGUpOwotIAkgIGlmIChlcnJjb2RlICE9IDApCi1A QCAtMTEwMSw2MyArMTMzNiw3NiBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQotIAkJICAgICBz YWZlX3N0cmVycm9yIChlcnJjb2RlKSk7Ci0gCSAgZWxzZQotIAkgICAgewotLQkgICAgICBzdHJ1 Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkOwotLQotLQkgICAgICBzdHJuY3B5IChuZXctPnNvX29yaWdp bmFsX25hbWUsIGJ1ZmZlciwgU09fTkFNRV9NQVhfUEFUSF9TSVpFIC0gMSk7Ci0tCSAgICAgIG5l dy0+c29fb3JpZ2luYWxfbmFtZVtTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxXSA9ICdcMCc7Ci0t CSAgICAgIC8qIE1heSBnZXQgb3ZlcndyaXR0ZW4gYmVsb3cuICAqLwotLQkgICAgICBzdHJjcHkg KG5ldy0+c29fbmFtZSwgbmV3LT5zb19vcmlnaW5hbF9uYW1lKTsKLS0KLS0JICAgICAgYnVpbGRf aWQgPSBidWlsZF9pZF9hZGRyX2dldCAoTE1fRFlOQU1JQ19GUk9NX0xJTktfTUFQIChuZXcpKTsK LS0JICAgICAgaWYgKGJ1aWxkX2lkICE9IE5VTEwpCi0rCSAgICAgIGlmIChkZWJ1Z19zb2xpYikK LSsJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rCQkJCSAgICAic3ZyNF9jdXJy ZW50X3NvczogTE1fTkFNRSBpcyA8JXM+XG4iLAotKwkJCQkgICAgYnVmZmVyKTsKLSsJICAgICAg LyogVGhlIG5hbWUgY291bGQgYmUgZW1wdHksIGluIHdoaWNoIGNhc2UgaXQgaXMgdGhlCi0rCQkg c3lzdGVtIHN1cHBsaWVkIERTTy4gICovCi0rCSAgICAgIGlmIChzdHJjbXAgKGJ1ZmZlciwgIiIp ID09IDApCi0rCQlmcmVlX3NvIChuZXcpOwotKwkgICAgICBlbHNlCi0gCQl7Ci0tCQkgIGNoYXIg Km5hbWUsICpidWlsZF9pZF9maWxlbmFtZTsKLSsJCSAgc3RydWN0IGJ1aWxkX2lkICpidWlsZF9p ZDsKLSsKLSsJCSAgc3RybmNweSAobmV3LT5zb19vcmlnaW5hbF9uYW1lLCBidWZmZXIsIFNPX05B TUVfTUFYX1BBVEhfU0laRSAtIDEpOwotKwkJICBuZXctPnNvX29yaWdpbmFsX25hbWVbU09fTkFN RV9NQVhfUEFUSF9TSVpFIC0gMV0gPSAnXDAnOwotKwkJICAvKiBNYXkgZ2V0IG92ZXJ3cml0dGVu IGJlbG93LiAgKi8KLSsJCSAgc3RyY3B5IChuZXctPnNvX25hbWUsIG5ldy0+c29fb3JpZ2luYWxf bmFtZSk7Ci0gCi0tCQkgIC8qIE1pc3NpbmcgdGhlIGJ1aWxkLWlkIG1hdGNoaW5nIHNlcGFyYXRl IGRlYnVnIGluZm8gZmlsZQotLQkJICAgICB3b3VsZCBiZSBoYW5kbGVkIHdoaWxlIFNPX05BTUUg Z2V0cyBsb2FkZWQuICAqLwotLQkJICBuYW1lID0gYnVpbGRfaWRfdG9fZmlsZW5hbWUgKGJ1aWxk X2lkLCAmYnVpbGRfaWRfZmlsZW5hbWUsIDApOwotLQkJICBpZiAobmFtZSAhPSBOVUxMKQotKwkJ ICBidWlsZF9pZCA9IGJ1aWxkX2lkX2FkZHJfZ2V0IChMTV9EWU5BTUlDX0ZST01fTElOS19NQVAg KG5ldykpOwotKwkJICBpZiAoYnVpbGRfaWQgIT0gTlVMTCkKLSAJCSAgICB7Ci0tCQkgICAgICBz dHJuY3B5IChuZXctPnNvX25hbWUsIG5hbWUsIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEpOwot LQkJICAgICAgbmV3LT5zb19uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1wwJzsK LS0JCSAgICAgIHhmcmVlIChuYW1lKTsKLSsJCSAgICAgIGNoYXIgKm5hbWUsICpidWlsZF9pZF9m aWxlbmFtZTsKLSsKLSsJCSAgICAgIC8qIE1pc3NpbmcgdGhlIGJ1aWxkLWlkIG1hdGNoaW5nIHNl cGFyYXRlIGRlYnVnIGluZm8gZmlsZQotKwkJCSB3b3VsZCBiZSBoYW5kbGVkIHdoaWxlIFNPX05B TUUgZ2V0cyBsb2FkZWQuICAqLwotKwkJICAgICAgbmFtZSA9IGJ1aWxkX2lkX3RvX2ZpbGVuYW1l IChidWlsZF9pZCwgJmJ1aWxkX2lkX2ZpbGVuYW1lLCAwKTsKLSsJCSAgICAgIGlmIChuYW1lICE9 IE5VTEwpCi0rCQkJewotKwkJCSAgc3RybmNweSAobmV3LT5zb19uYW1lLCBuYW1lLCBTT19OQU1F X01BWF9QQVRIX1NJWkUgLSAxKTsKLSsJCQkgIG5ldy0+c29fbmFtZVtTT19OQU1FX01BWF9QQVRI X1NJWkUgLSAxXSA9ICdcMCc7Ci0rCQkJICB4ZnJlZSAobmFtZSk7Ci0rCQkJfQotKwkJICAgICAg ZWxzZQotKwkJCXsKLSsJCQkgIGRlYnVnX3ByaW50X21pc3NpbmcgKG5ldy0+c29fbmFtZSwgYnVp bGRfaWRfZmlsZW5hbWUpOwotKwotKwkJCSAgLyogSW4gdGhlIGNhc2UgdGhlIG1haW4gZXhlY3V0 YWJsZSB3YXMgZm91bmQgYWNjb3JkaW5nIHRvCi0rCQkJICAgICBpdHMgYnVpbGQtaWQgKGZyb20g YSBjb3JlIGZpbGUpIHByZXZlbnQgbG9hZGluZwotKwkJCSAgICAgYSBkaWZmZXJlbnQgYnVpbGQg b2YgYSBsaWJyYXJ5IHdpdGggYWNjaWRlbnRhbGx5IHRoZQotKwkJCSAgICAgc2FtZSBTT19OQU1F LgotKwotKwkJCSAgICAgSXQgc3VwcHJlc3NlcyBib2d1cyBiYWNrdHJhY2VzIChhbmQgcHJpbnRz ICI/PyIgdGhlcmUKLSsJCQkgICAgIGluc3RlYWQpIGlmIHRoZSBvbi1kaXNrIGZpbGVzIG5vIGxv bmdlciBtYXRjaCB0aGUKLSsJCQkgICAgIHJ1bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KLSsK LSsJCQkgIGlmIChzeW1maWxlX29iamZpbGUgIT0gTlVMTAotKwkJCSAgICAgICYmIChzeW1maWxl X29iamZpbGUtPmZsYWdzCi0rCQkJCSAgJiBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEKSAhPSAw KQotKwkJCSAgICBuZXctPnNvX25hbWVbMF0gPSAwOwotKwkJCX0KLSsKLSsJCSAgICAgIHhmcmVl IChidWlsZF9pZF9maWxlbmFtZSk7Ci0rCQkgICAgICB4ZnJlZSAoYnVpbGRfaWQpOwotIAkJICAg IH0KLS0JCSAgZWxzZQotLQkJICAgIHsKLS0JCSAgICAgIGRlYnVnX3ByaW50X21pc3NpbmcgKG5l dy0+c29fbmFtZSwgYnVpbGRfaWRfZmlsZW5hbWUpOwotIAotLQkJICAgICAgLyogSW4gdGhlIGNh c2UgdGhlIG1haW4gZXhlY3V0YWJsZSB3YXMgZm91bmQgYWNjb3JkaW5nIHRvCi0tCQkJIGl0cyBi dWlsZC1pZCAoZnJvbSBhIGNvcmUgZmlsZSkgcHJldmVudCBsb2FkaW5nCi0tCQkJIGEgZGlmZmVy ZW50IGJ1aWxkIG9mIGEgbGlicmFyeSB3aXRoIGFjY2lkZW50YWxseSB0aGUKLS0JCQkgc2FtZSBT T19OQU1FLgotLQotLQkJCSBJdCBzdXBwcmVzc2VzIGJvZ3VzIGJhY2t0cmFjZXMgKGFuZCBwcmlu dHMgIj8/IiB0aGVyZQotLQkJCSBpbnN0ZWFkKSBpZiB0aGUgb24tZGlzayBmaWxlcyBubyBsb25n ZXIgbWF0Y2ggdGhlCi0tCQkJIHJ1bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KLS0KLS0JCSAg ICAgIGlmIChzeW1maWxlX29iamZpbGUgIT0gTlVMTAotLQkJCSAgJiYgKHN5bWZpbGVfb2JqZmls ZS0+ZmxhZ3MKLS0JCQkgICAgICAmIE9CSkZfQlVJTERfSURfQ09SRV9MT0FERUQpICE9IDApCi0t CQkJbmV3LT5zb19uYW1lWzBdID0gMDsKLSsJCSAgaWYgKGRlYnVnX3NvbGliKQotKwkJICAgIHsK LSsJCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgCi0rCQkJCQkgICJzdnI0 X2N1cnJlbnRfc29zOiBQcm9jZXNzaW5nIERTTzogJXNcbiIsCi0rCQkJCQkgIG5ldy0+c29fbmFt ZSk7Ci0rCQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCQkgICJz dnI0X2N1cnJlbnRfc29zOiBmaXJzdCBsaW5rIGVudHJ5ICVkXG4iLAotKwkJCQkJICBJR05PUkVf RklSU1RfTElOS19NQVBfRU5UUlkgKG5ldykpOwotIAkJICAgIH0KLSAKLS0JCSAgeGZyZWUgKGJ1 aWxkX2lkX2ZpbGVuYW1lKTsKLS0JCSAgeGZyZWUgKGJ1aWxkX2lkKTsKLSsJCSAgbmV3LT5uZXh0 ID0gMDsKLSsJCSAgKmxpbmtfcHRyID0gbmV3OwotKwkJICBsaW5rX3B0ciA9ICZuZXctPm5leHQ7 Ci0gCQl9Ci0gCSAgICB9Ci0tCSAgeGZyZWUgKGJ1ZmZlcik7Ci0tCi0tCSAgLyogSWYgdGhpcyBl bnRyeSBoYXMgbm8gbmFtZSwgb3IgaXRzIG5hbWUgbWF0Y2hlcyB0aGUgbmFtZQotLQkgICAgIGZv ciB0aGUgbWFpbiBleGVjdXRhYmxlLCBkb24ndCBpbmNsdWRlIGl0IGluIHRoZSBsaXN0LiAgKi8K LS0JICBpZiAoISBuZXctPnNvX25hbWVbMF0KLS0JICAgICAgfHwgbWF0Y2hfbWFpbiAobmV3LT5z b19uYW1lKSkKLS0JICAgIGZyZWVfc28gKG5ldyk7Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAg ICBuZXctPm5leHQgPSAwOwotLQkgICAgICAqbGlua19wdHIgPSBuZXc7Ci0tCSAgICAgIGxpbmtf cHRyID0gJm5ldy0+bmV4dDsKLS0JICAgIH0KLSsgICAgICAgICAgeGZyZWUgKGJ1ZmZlcik7Ci0g CX0KLSAKLSAgICAgICAvKiBPbiBTb2xhcmlzLCB0aGUgZHluYW1pYyBsaW5rZXIgaXMgbm90IGlu IHRoZSBub3JtYWwgbGlzdCBvZgotQEAgLTExNzMsNiArMTQyMSw5IEBAIHN2cjRfY3VycmVudF9z b3MgKHZvaWQpCi0gICBpZiAoaGVhZCA9PSBOVUxMKQotICAgICByZXR1cm4gc3ZyNF9kZWZhdWx0 X3NvcyAoKTsKLSAKLSsgIGlmIChkZWJ1Z19zb2xpYikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCAic3ZyNF9jdXJyZW50X3NvczogRU5EUyAlc1xuIiwgZmlsZW5hbWUpOwot KwotICAgcmV0dXJuIGhlYWQ7Ci0gfQotIAotQEAgLTEyMDUsNyArMTQ1Niw3IEBAIHN2cjRfZmV0 Y2hfb2JqZmlsZV9saW5rX21hcCAoc3RydWN0IG9iamYKLSAvKiBPbiBzb21lIHN5c3RlbXMsIHRo ZSBvbmx5IHdheSB0byByZWNvZ25pemUgdGhlIGxpbmsgbWFwIGVudHJ5IGZvcgotICAgIHRoZSBt YWluIGV4ZWN1dGFibGUgZmlsZSBpcyBieSBsb29raW5nIGF0IGl0cyBuYW1lLiAgUmV0dXJuCi0g ICAgbm9uLXplcm8gaWZmIFNPTkFNRSBtYXRjaGVzIG9uZSBvZiB0aGUga25vd24gbWFpbiBleGVj dXRhYmxlIG5hbWVzLiAgKi8KLS0KLSsjaWYgMAotIHN0YXRpYyBpbnQKLSBtYXRjaF9tYWluIChj aGFyICpzb25hbWUpCi0gewotQEAgLTEyMTksNiArMTQ3MCw3IEBAIG1hdGNoX21haW4gKGNoYXIg KnNvbmFtZSkKLSAKLSAgIHJldHVybiAoMCk7Ci0gfQotKyNlbmRpZgotIAotIC8qIFJldHVybiAx IGlmIFBDIGxpZXMgaW4gdGhlIGR5bmFtaWMgc3ltYm9sIHJlc29sdXRpb24gY29kZSBvZiB0aGUK LSAgICBTVlI0IHJ1biB0aW1lIGxvYWRlci4gICovCi1AQCAtMTM3MCwxNSArMTYyMiwyOSBAQCBl bmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0gICAvKiBGaW5kIHRoZSBwcm9n cmFtIGludGVycHJldGVyOyBpZiBub3QgZm91bmQsIHdhcm4gdGhlIHVzZXIgYW5kIGRyb3AKLSAg ICAgIGludG8gdGhlIG9sZCBicmVha3BvaW50IGF0IHN5bWJvbCBjb2RlLiAgKi8KLSAgIGludGVy cF9uYW1lID0gZmluZF9wcm9ncmFtX2ludGVycHJldGVyICgpOwotKwotKyAgaWYgKGRlYnVnX3Nv bGliKQotKyAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAiZW5hYmxlX2JyZWFrOiBzZWFyY2ggZm9yIC5pbnRlcnAgaW4gJXNcbiIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfYmZkLT5maWxlbmFtZSk7Ci0gICBpZiAo aW50ZXJwX25hbWUpCi0gICAgIHsKLSAgICAgICBDT1JFX0FERFIgbG9hZF9hZGRyID0gMDsKLSsg ICAgICBDT1JFX0FERFIgbG9hZF9hZGRyX21hc2sgPSAtMUw7Ci0gICAgICAgaW50IGxvYWRfYWRk cl9mb3VuZCA9IDA7Ci0gICAgICAgaW50IGxvYWRlcl9mb3VuZF9pbl9saXN0ID0gMDsKLSAgICAg ICBzdHJ1Y3Qgc29fbGlzdCAqc287Ci0gICAgICAgYmZkICp0bXBfYmZkID0gTlVMTDsKLSAgICAg ICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdG1wX2JmZF90YXJnZXQ7Ci0gICAgICAgdm9sYXRpbGUgc3Ry dWN0IGdkYl9leGNlcHRpb24gZXg7Ci0rICAgICAgaW50IGFyY2hfc2l6ZTsKLSsKLSsgICAgICAv KiBGb3IgMzJiaXQgaW5mZXJpb3JzIHdpdGggNjRiaXQgR0RCIHdlIG1heSBnZXQgTE9BRF9BRERS IGF0IDB4ZmYuLi4uLi4KLSsJIGFuZCB0aHVzIG92ZXJmbG93aW5nIGl0cyBhZGRpdGlvbiB0byB0 aGUgYWRkcmVzcyB3aGlsZSBDT1JFX0FERFIgaXMKLSsJIDY0Yml0IHByb2R1Y2luZyAweDEuLi4u Li4uLiBhZGRyZXNzIGludmFsaWQgYWNyb3NzIEdEQi4gICovCi0rICAgICAgYXJjaF9zaXplID0g YmZkX2dldF9hcmNoX3NpemUgKGV4ZWNfYmZkKTsKLSsgICAgICBpZiAoYXJjaF9zaXplID4gMCAm JiBhcmNoX3NpemUgPCBzaXplb2YgKDFVTCkgKiA4KQotKyAgICAgICAgbG9hZF9hZGRyX21hc2sg PSAoMVVMIDw8IGFyY2hfc2l6ZSkgLSAxOwotIAotICAgICAgIHN5bV9hZGRyID0gMDsKLSAKLUBA IC0xMzk1LDYgKzE2NjEsOSBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8p Ci0gICAgICAgICB7Ci0gCSAgdG1wX2JmZCA9IHNvbGliX2JmZF9vcGVuIChpbnRlcnBfbmFtZSk7 Ci0gCX0KLSsgICAgICBpZiAoZGVidWdfc29saWIpCi0rCSBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCi0rCQkJICAgICJlbmFibGVfYnJlYWs6IG9wZW5pbmcgJXNcbiIsIGludGVycF9u YW1lKTsKLSAgICAgICBpZiAodG1wX2JmZCA9PSBOVUxMKQotIAlnb3RvIGJrcHRfYXRfc3ltYm9s OwotIAotQEAgLTE0NTIsMTYgKzE3MjEsMTYgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9p bmZvICppbmZvKQotICAgICAgIGludGVycF9zZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUg KHRtcF9iZmQsICIudGV4dCIpOwotICAgICAgIGlmIChpbnRlcnBfc2VjdCkKLSAJewotLQkgIGlu dGVycF90ZXh0X3NlY3RfbG93ID0KLS0JICAgIGJmZF9zZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50 ZXJwX3NlY3QpICsgbG9hZF9hZGRyOwotKwkgIGludGVycF90ZXh0X3NlY3RfbG93ID0gKGJmZF9z ZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpCi0rCQkJCSAgKyBsb2FkX2FkZHIpICYg bG9hZF9hZGRyX21hc2s7Ci0gCSAgaW50ZXJwX3RleHRfc2VjdF9oaWdoID0KLSAJICAgIGludGVy cF90ZXh0X3NlY3RfbG93ICsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3Qp OwotIAl9Ci0gICAgICAgaW50ZXJwX3NlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAodG1w X2JmZCwgIi5wbHQiKTsKLSAgICAgICBpZiAoaW50ZXJwX3NlY3QpCi0gCXsKLS0JICBpbnRlcnBf cGx0X3NlY3RfbG93ID0KLS0JICAgIGJmZF9zZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3Nl Y3QpICsgbG9hZF9hZGRyOwotKwkgIGludGVycF9wbHRfc2VjdF9sb3cgPSAoYmZkX3NlY3Rpb25f dm1hICh0bXBfYmZkLCBpbnRlcnBfc2VjdCkKLSsJCQkJICsgbG9hZF9hZGRyKSAmIGxvYWRfYWRk cl9tYXNrOwotIAkgIGludGVycF9wbHRfc2VjdF9oaWdoID0KLSAJICAgIGludGVycF9wbHRfc2Vj dF9sb3cgKyBiZmRfc2VjdGlvbl9zaXplICh0bXBfYmZkLCBpbnRlcnBfc2VjdCk7Ci0gCX0KLUBA IC0xNDk2LDcgKzE3NjUsNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8p Ci0gCi0gICAgICAgaWYgKHN5bV9hZGRyICE9IDApCi0gCXsKLS0JICBjcmVhdGVfc29saWJfZXZl bnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIGxvYWRfYWRkciArIHN5bV9hZGRyKTsKLSsJ ICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFyY2gsIChsb2FkX2Fk ZHIgKyBzeW1fYWRkcikgJiBsb2FkX2FkZHJfbWFzayk7Ci0gCSAgeGZyZWUgKGludGVycF9uYW1l KTsKLSAJICByZXR1cm4gMTsKLSAJfQotQEAgLTE3NjksNiArMjAzOCw5IEBAIHN2cjRfc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCi0gICB3aGlsZSAodHAtPnN0b3Bfc2lnbmFsICE9 IFRBUkdFVF9TSUdOQUxfVFJBUCk7Ci0gICBpbmYtPnN0b3Bfc29vbiA9IE5PX1NUT1BfUVVJRVRM WTsKLSAjZW5kaWYgLyogZGVmaW5lZChfU0NPX0RTKSAqLwotKwotKyAgaWYgKGJmZF9nZXRfc3Rh cnRfYWRkcmVzcyAoZXhlY19iZmQpICE9IGVudHJ5X3BvaW50X2FkZHJlc3MgKCkpCi0rICAgIGRp c2FibGVfYnJlYWtwb2ludHNfYmVmb3JlX3N0YXJ0dXAgKCk7Ci0gfQotIAotIHN0YXRpYyB2b2lk Ci1AQCAtMTk0NSw2ICsyMjE3LDc2IEBAIHN2cjRfbHA2NF9mZXRjaF9saW5rX21hcF9vZmZzZXRz ICh2b2lkKQotIAotICAgcmV0dXJuIGxtcDsKLSB9Ci0rdm9pZAotK2luZm9fbGlua21hcF9jb21t YW5kIChjaGFyICpjbWQsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBDT1JFX0FERFIgbG07Ci0rICBz dHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoUElER0VUIChpbmZlcmlvcl9w dGlkKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSsgIC8qIE1ha2Ugc3VyZSB3ZSd2ZSBs b29rZWQgdXAgdGhlIGluZmVyaW9yJ3MgZHluYW1pYyBsaW5rZXIncyBiYXNlCi0rICAgICBzdHJ1 Y3R1cmUuICAqLwotKyAgaWYgKCEgaW5mby0+ZGVidWdfYmFzZSkKLSsgICAgewotKyAgICAgIGlu Zm8tPmRlYnVnX2Jhc2UgPSBsb2NhdGVfYmFzZSAoaW5mbyk7Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKLSsgICAgICAvKiBJZiB3ZSBjYW4ndCBmaW5kIHRoZSBkeW5hbWljIGxpbmtlcidzIGJh c2Ugc3RydWN0dXJlLCB0aGlzCi0rICAgICAgICAgbXVzdCBub3QgYmUgYSBkeW5hbWljYWxseSBs aW5rZWQgZXhlY3V0YWJsZS4gIEhtbS4gICovCi0rICAgICAgaWYgKCEgaW5mby0+ZGVidWdfYmFz ZSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKGRlYnVnX3NvbGliKQotKyAgICAgICAgICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJzdnI0X3ByaW50X2xpbmttYXA6IG5vIERUX0RFQlVHIGZvdW5kIGluICVzIC0t IHJldHVybiBub3dcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2Jm ZC0+ZmlsZW5hbWUpOwotKyAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0rICAgIH0KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAotKyAgLyogV2FsayB0aGUgaW5mZXJpb3IncyBsaW5rIG1h cCBsaXN0LCBhbmQgcHJpbnQgdGhlIGluZm8uICAqLwotKyAKLSsgIGxtID0gc29saWJfc3ZyNF9y X21hcCAoaW5mbyk7Ci0rICB3aGlsZSAobG0pCi0rICAgIHsKLSsgICAgICBpbnQgZXJyY29kZTsK LSsgICAgICBjaGFyICpidWZmZXI7Ci0rICAgICAgQ09SRV9BRERSIGxvYWRfYWRkcjsKLSsKLSsg ICAgICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5rX21hcF9v ZmZzZXRzICgpOwotKyAgICAgIHN0cnVjdCBzb19saXN0ICpuZXcKLSsgICAgICAgID0gKHN0cnVj dCBzb19saXN0ICopIHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHNvX2xpc3QpKTsKLSsgICAgICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3KTsKLSsK LSsgICAgICBtZW1zZXQgKG5ldywgMCwgc2l6ZW9mICgqbmV3KSk7Ci0rCi0rICAgICAgbmV3LT5s bV9pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG1faW5mbykpOwotKyAgICAgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIG5ldy0+bG1faW5mbyk7Ci0rCi0rICAgICAgbmV3LT5sbV9pbmZvLT5s bSA9IHhtYWxsb2MgKGxtby0+bGlua19tYXBfc2l6ZSk7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgbmV3LT5sbV9pbmZvLT5sbSk7Ci0rICAgICAgbWVtc2V0IChuZXctPmxtX2luZm8tPmxt LCAwLCBsbW8tPmxpbmtfbWFwX3NpemUpOwotKwotKyAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsg ICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInN2cjRfcHJpbnRfbGlua21hcDogcmVhZCBsbSBhdCAlc1xuIiwgcGFkZHJl c3MgKHRhcmdldF9nZGJhcmNoLCBsbSkpOwotKyAgICAgIHJlYWRfbWVtb3J5IChsbSwgbmV3LT5s bV9pbmZvLT5sbSwgbG1vLT5saW5rX21hcF9zaXplKTsKLSsKLSsgICAgICBsbSA9IExNX05FWFQg KG5ldyk7Ci0rCi0rICAgICAgLyogTG9hZCBhZGRyZXNzLiAgKi8KLSsgICAgICBsb2FkX2FkZHIg PSBMTV9BRERSX0NIRUNLIChuZXcsIE5VTEwpOwotKyAgICAgIC8qIFNoYXJlZCBvYmplY3QncyBu YW1lLiAgKi8KLSsgICAgICB0YXJnZXRfcmVhZF9zdHJpbmcgKExNX05BTUUgKG5ldyksICZidWZm ZXIsCi0rCQkJICBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxLCAmZXJyY29kZSk7Ci0rICAgICAg bWFrZV9jbGVhbnVwICh4ZnJlZSwgYnVmZmVyKTsKLSsgICAgICBpZiAoZXJyY29kZSAhPSAwKQot Kwl7Ci0rCSAgd2FybmluZyAoInN2cjRfcHJpbnRfbGlua21hcDogQ2FuJ3QgcmVhZCBwYXRobmFt ZSBmb3IgbG9hZCBtYXA6ICVzXG4iLAotKwkJICAgc2FmZV9zdHJlcnJvciAoZXJyY29kZSkpOwot Kwl9Ci0rICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZG91dCwgIiUtOHMgJS0zMHNcbiIs IHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgbG9hZF9hZGRyKSwgYnVmZmVyKTsKLSsgICAgICBk b19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgICAgfQotK30gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAotKwotIAwKLSAKLSBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyBzdnI0X3NvX29wczsKLUBAIC0xOTg1 LDQgKzIzMjcsNyBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQotICAgc3ZyNF9zb19v cHMuc2FtZSA9IHN2cjRfc2FtZTsKLSAKLSAgIG9ic2VydmVyX2F0dGFjaF9pbmZlcmlvcl9leGl0 IChzb2xpYl9zdnI0X2luZmVyaW9yX2V4aXQpOwotKwotKyAgYWRkX2luZm8gKCJsaW5rbWFwIiwg aW5mb19saW5rbWFwX2NvbW1hbmQsCi0rCSAgICAiRGlzcGxheSB0aGUgaW5mZXJpb3IncyBsaW5r bWFwLiIpOwotIH0KLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zb2xpYi5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zb2xpYi5jCTIwMDktMDkt MjUgMTA6MjU6MzguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIv c29saWIuYwkyMDA5LTA5LTI1IDEwOjI1OjQ1LjAwMDAwMDAwMCArMDIwMAotQEAgLTgyLDYgKzgy LDggQEAgc2V0X3NvbGliX29wcyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIAotIAotIC8qIGV4 dGVybmFsIGRhdGEgZGVjbGFyYXRpb25zICovCi0gCi0raW50IGRlYnVnX3NvbGliOwotKwotIC8q IEZJWE1FOiBnZGJhcmNoIG5lZWRzIHRvIGNvbnRyb2wgdGhpcyB2YXJpYWJsZSwgb3IgZWxzZSBl dmVyeQotICAgIGNvbmZpZ3VyYXRpb24gbmVlZHMgdG8gY2FsbCBzZXRfc29saWJfb3BzLiAgKi8K LSBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqY3VycmVudF90YXJnZXRfc29fb3BzOwotQEAgLTEwNSw2 ICsxMDcsOCBAQCBUaGUgc2VhcmNoIHBhdGggZm9yIGxvYWRpbmcgbm9uLWFic29sdXRlCi0gCQkg ICAgdmFsdWUpOwotIH0KLSAKLSt2b2lkIGFkZF90b190YXJnZXRfc2VjdGlvbnMgKGludCwgc3Ry dWN0IHRhcmdldF9vcHMgKiwgc3RydWN0IHNvX2xpc3QgKik7Ci0rCi0gLyoKLSAKLSAgICBHTE9C QUwgRlVOQ1RJT04KLUBAIC00NDksMTQgKzQ1MywzOCBAQCBzeW1ib2xfYWRkX3N0dWIgKHN0cnVj dCBzb19saXN0ICpzbywgaW50Ci0gICAvKiBIYXZlIHdlIGFscmVhZHkgbG9hZGVkIHRoaXMgc2hh cmVkIG9iamVjdD8gICovCi0gICBBTExfT0JKRklMRVMgKHNvLT5vYmpmaWxlKQotICAgICB7Ci0t ICAgICAgaWYgKHN0cmNtcCAoc28tPm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1lKSA9PSAwKQot KyAgICAgIC8qIEZvdW5kIGFuIGFscmVhZHkgbG9hZGVkIHNoYXJlZCBsaWJyYXJ5LiAgKi8KLSsg ICAgICBpZiAoc3RyY21wIChzby0+b2JqZmlsZS0+bmFtZSwgc28tPnNvX25hbWUpID09IDAKLSsJ ICAmJiAhc28tPm1haW4pCi0rCXJldHVybjsKLSsgICAgICAvKiBGb3VuZCBhbiBhbHJlYWR5IGxv YWRlZCBtYWluIGV4ZWN1dGFibGUuICBUaGlzIGNvdWxkIGhhcHBlbiBpbgotKwkgdHdvIGNpcmN1 bXN0YW5jZXMuCi0rCSBGaXJzdCBjYXNlOiB0aGUgbWFpbiBmaWxlIGhhcyBhbHJlYWR5IGJlZW4g cmVhZCBpbgotKwkgYXMgdGhlIGZpcnN0IHRoaW5nIHRoYXQgZ2RiIGRvZXMgYXQgc3RhcnR1cCwg YW5kIHRoZSBmaWxlCi0rCSBoYXNuJ3QgYmVlbiByZWxvY2F0ZWQgcHJvcGVybHkgeWV0LiBUaGVy ZWZvciB3ZSBuZWVkIHRvIHJlYWQKLSsJIGl0IGluIHdpdGggdGhlIHByb3BlciBzZWN0aW9uIGlu Zm8uCi0rCSBTZWNvbmQgY2FzZTogaXQgaGFzIGJlZW4gcmVhZCBpbiB3aXRoIHRoZSBjb3JyZWN0 IHJlbG9jYXRpb24sCi0rCSBhbmQgdGhlcmVmb3JlIHdlIG5lZWQgdG8gc2tpcCBpdC4gICovCi0r ICAgICAgaWYgKHN0cmNtcCAoc28tPm9iamZpbGUtPm5hbWUsIHNvLT5zb19uYW1lKSA9PSAwCi0r CSAgJiYgc28tPm1haW4KLSsJICAmJiBzby0+bWFpbl9yZWxvY2F0ZWQpCi0gCXJldHVybjsKLSAg ICAgfQotIAotICAgc2FwID0gYnVpbGRfc2VjdGlvbl9hZGRyX2luZm9fZnJvbV9zZWN0aW9uX3Rh YmxlIChzby0+c2VjdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNvLT5zZWN0aW9uc19lbmQpOwotIAotLSAgc28tPm9iamZpbGUgPSBz eW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKHNvLT5hYmZkLCBmbGFncywgc2FwLCBPQkpGX1NIQVJF RCk7Ci0rICBpZiAoc28tPm1haW4pCi0rICAgIHsKLSsgICAgICBpZiAoZGVidWdfc29saWIpCi0r ICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJICAgICJzeW1ib2xf YWRkX3N0dWI6IGFkZGluZyBzeW1ib2xzIGZvciBtYWluXG4iKTsKLSsgICAgICBzby0+b2JqZmls ZSA9IHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAoc28tPmFiZmQsIChmbGFncyAmIH5TWU1GSUxF X1ZFUkJPU0UpIHwgU1lNRklMRV9NQUlOTElORSwgc2FwLCAwKTsKLSsgICAgICBzby0+bWFpbl9y ZWxvY2F0ZWQgPSAxOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHNvLT5vYmpmaWxlID0gc3ltYm9s X2ZpbGVfYWRkX2Zyb21fYmZkIChzby0+YWJmZCwgZmxhZ3MsIHNhcCwgT0JKRl9TSEFSRUQpOwot KwotICAgZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAoc2FwKTsKLSAKLSAgIHJldHVybjsKLUBAIC01 OTYsNiArNjI0LDEwIEBAIHVwZGF0ZV9zb2xpYl9saXN0IChpbnQgZnJvbV90dHksIHN0cnVjdCAK LSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICB7Ci0rCSAgICAgIGlmIChkZWJ1Z19zb2xpYikKLSsJ CWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJICAgICJ1cGRhdGVfc29saWJf bGlzdDogY29tcGFyZSBnZGI6JXMgYW5kIGluZmVyaW9yOiVzXG4iLAotKwkJCQkgICAgZ2RiLT5z b19vcmlnaW5hbF9uYW1lLCBpLT5zb19vcmlnaW5hbF9uYW1lKTsKLSAJICAgICAgaWYgKCEgc3Ry Y21wIChnZGItPnNvX29yaWdpbmFsX25hbWUsIGktPnNvX29yaWdpbmFsX25hbWUpKQotIAkJYnJl YWs7CSAgICAgIAotIAkgICAgfQotQEAgLTY1MCwxOCArNjgyLDcgQEAgdXBkYXRlX3NvbGliX2xp c3QgKGludCBmcm9tX3R0eSwgc3RydWN0IAotICAgICAgIC8qIEZpbGwgaW4gdGhlIHJlc3Qgb2Yg ZWFjaCBvZiB0aGUgYHN0cnVjdCBzb19saXN0JyBub2Rlcy4gICovCi0gICAgICAgZm9yIChpID0g aW5mZXJpb3I7IGk7IGkgPSBpLT5uZXh0KQotIAl7Ci0tCSAgaS0+ZnJvbV90dHkgPSBmcm9tX3R0 eTsKLS0KLS0JICAvKiBGaWxsIGluIHRoZSByZXN0IG9mIHRoZSBgc3RydWN0IHNvX2xpc3QnIG5v ZGUuICAqLwotLQkgIGNhdGNoX2Vycm9ycyAoc29saWJfbWFwX3NlY3Rpb25zLCBpLAotLQkJCSJF cnJvciB3aGlsZSBtYXBwaW5nIHNoYXJlZCBsaWJyYXJ5IHNlY3Rpb25zOlxuIiwKLS0JCQlSRVRV Uk5fTUFTS19BTEwpOwotLQotLQkgIC8qIEFkZCB0aGUgc2hhcmVkIG9iamVjdCdzIHNlY3Rpb25z IHRvIHRoZSBjdXJyZW50IHNldCBvZgotLQkgICAgIGZpbGUgc2VjdGlvbiB0YWJsZXMuICBEbyB0 aGlzIGltbWVkaWF0ZWx5IGFmdGVyIG1hcHBpbmcKLS0JICAgICB0aGUgb2JqZWN0IHNvIHRoYXQg bGF0ZXIgbm9kZXMgaW4gdGhlIGxpc3QgY2FuIHF1ZXJ5IHRoaXMKLS0JICAgICBvYmplY3QsIGFz IGlzIG5lZWRlZCBpbiBzb2xpYi1vc2YuYy4gICovCi0tCSAgYWRkX3RhcmdldF9zZWN0aW9ucyAo aS0+c2VjdGlvbnMsIGktPnNlY3Rpb25zX2VuZCk7Ci0rCSAgYWRkX3RvX3RhcmdldF9zZWN0aW9u cyAoZnJvbV90dHksIHRhcmdldCwgaSk7Ci0gCi0gCSAgLyogTm90aWZ5IGFueSBvYnNlcnZlciB0 aGF0IHRoZSBzaGFyZWQgb2JqZWN0IGhhcyBiZWVuCi0gICAgICAgICAgICAgIGxvYWRlZCBub3cg dGhhdCB3ZSd2ZSBhZGRlZCBpdCB0byBHREIncyB0YWJsZXMuICAqLwotQEAgLTc3MSw2ICs3OTIs MzIgQEAgc29saWJfYWRkIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksIAotICAgfQotIH0K LSAKLSt2b2lkCi0rYWRkX3RvX3RhcmdldF9zZWN0aW9ucyAoaW50IGZyb21fdHR5LCBzdHJ1Y3Qg dGFyZ2V0X29wcyAqdGFyZ2V0LCBzdHJ1Y3Qgc29fbGlzdCAqc29saWIpCi0rewotKyAgLyogSWYg dGhpcyBpcyBzZXQsIHRoZW4gdGhlIHNlY3Rpb25zIGhhdmUgYmVlbiBhbHJlYWR5IGFkZGVkIHRv IHRoZQotKyAgICAgdGFyZ2V0IGxpc3QuICAqLwotKyAgaWYgKHNvbGliLT5tYWluKQotKyAgICBy ZXR1cm47Ci0rCi0rICBzb2xpYi0+ZnJvbV90dHkgPSBmcm9tX3R0eTsKLSsKLSsgIC8qIEZpbGwg aW4gdGhlIHJlc3Qgb2YgdGhlIGBzdHJ1Y3Qgc29fbGlzdCcgbm9kZS4gICovCi0rICBjYXRjaF9l cnJvcnMgKHNvbGliX21hcF9zZWN0aW9ucywgc29saWIsCi0rCSAgICAgICAiRXJyb3Igd2hpbGUg bWFwcGluZyBzaGFyZWQgbGlicmFyeSBzZWN0aW9uczpcbiIsCi0rCSAgICAgICBSRVRVUk5fTUFT S19BTEwpOwotKwotKyAgaWYgKGRlYnVnX3NvbGliKQotKyAgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLAotKwkJCSAiYWRkX3RvX3RhcmdldF9zZWN0aW9uczogYWRkICVzIHRvIHRv X3NlY3Rpb25zXG4iLAotKwkJCSBzb2xpYi0+c29fb3JpZ2luYWxfbmFtZSk7Ci0rCi0rICAvKiBB ZGQgdGhlIHNoYXJlZCBvYmplY3QncyBzZWN0aW9ucyB0byB0aGUgY3VycmVudCBzZXQgb2YKLSsg ICAgIGZpbGUgc2VjdGlvbiB0YWJsZXMuICBEbyB0aGlzIGltbWVkaWF0ZWx5IGFmdGVyIG1hcHBp bmcKLSsgICAgIHRoZSBvYmplY3Qgc28gdGhhdCBsYXRlciBub2RlcyBpbiB0aGUgbGlzdCBjYW4g cXVlcnkgdGhpcwotKyAgICAgb2JqZWN0LCBhcyBpcyBuZWVkZWQgaW4gc29saWItb3NmLmMuICAq LwotKyAgYWRkX3RhcmdldF9zZWN0aW9ucyAoc29saWItPnNlY3Rpb25zLCBzb2xpYi0+c2VjdGlv bnNfZW5kKTsKLSt9Ci0gCi0gLyoKLSAKLUBAIC0xMTg5LDQgKzEyMzYsMTIgQEAgVGhpcyB0YWtl cyBwcmVjZWRlbmNlIG92ZXIgdGhlIGVudmlyb25tZQotIAkJCQkgICAgIHJlbG9hZF9zaGFyZWRf bGlicmFyaWVzLAotIAkJCQkgICAgIHNob3dfc29saWJfc2VhcmNoX3BhdGgsCi0gCQkJCSAgICAg JnNldGxpc3QsICZzaG93bGlzdCk7Ci0rCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInNv bGliIiwgbm9fY2xhc3MsICZkZWJ1Z19zb2xpYiwKLSsJCQkgICBfKCJcCi0rU2V0IGRlYnVnZ2lu ZyBvZiBHTlUvTGludXggc2hsaWIgbW9kdWxlLlxuIiksIF8oIlwKLStTaG93IGRlYnVnZ2luZyBz dGF0dXMgb2YgR05VL0xpbnV4IHNobGliIG1vZHVsZS5cbiIpLCBfKCJcCi0rRW5hYmxlcyBwcmlu dGYgZGVidWdnaW5nIG91dHB1dCBvZiBHTlUvTGludXggc2hsaWIgbW9kdWxlLlxuIiksCi0rCQkJ ICAgTlVMTCwgTlVMTCwKLSsJCQkgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0g fQotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3NvbGlzdC5oCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zb2xpc3QuaAkyMDA5LTA5LTI1IDEwOjI1 OjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3NvbGlzdC5o CTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtNjEsNiArNjEsOCBAQCBz dHJ1Y3Qgc29fbGlzdAotICAgICBiZmQgKmFiZmQ7Ci0gICAgIGNoYXIgc3ltYm9sc19sb2FkZWQ7 CS8qIGZsYWc6IHN5bWJvbHMgcmVhZCBpbiB5ZXQ/ICovCi0gICAgIGNoYXIgZnJvbV90dHk7CQkv KiBmbGFnOiBwcmludCBtc2dzPyAqLwotKyAgICBjaGFyIG1haW47ICAgICAgICAgICAgICAgICAg LyogZmxhZzogaXMgdGhpcyB0aGUgbWFpbiBleGVjdXRhYmxlPyAqLwotKyAgICBjaGFyIG1haW5f cmVsb2NhdGVkOyAgICAgICAgLyogZmxhZzogaGFzIGl0IGJlZW4gcmVsb2NhdGVkIHlldD8gKi8K LSAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CS8qIG9iamZpbGUgZm9yIGxvYWRlZCBsaWIg Ki8KLSAgICAgc3RydWN0IHRhcmdldF9zZWN0aW9uICpzZWN0aW9uczsKLSAgICAgc3RydWN0IHRh cmdldF9zZWN0aW9uICpzZWN0aW9uc19lbmQ7Ci1AQCAtMTQ3LDQgKzE0OSwxMCBAQCBzdHJ1Y3Qg c3ltYm9sICpzb2xpYl9nbG9iYWxfbG9va3VwIChjb25zCi0gCQkJCSAgICBjb25zdCBjaGFyICpu YW1lLAotIAkJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSAKLSsvKiBBZGQgdGhl IGxpc3Qgb2Ygc2VjdGlvbnMgaW4gc29fbGlzdCB0byB0aGUgdGFyZ2V0IHRvX3NlY3Rpb25zLiAg Ki8KLStleHRlcm4gdm9pZCBhZGRfdG9fdGFyZ2V0X3NlY3Rpb25zIChpbnQsIHN0cnVjdCB0YXJn ZXRfb3BzICosIHN0cnVjdCBzb19saXN0ICopOwotKwotKy8qIENvbnRyb2xzIHRoZSBwcmludGlu ZyBvZiBkZWJ1Z2dpbmcgb3V0cHV0LiAgKi8KLStleHRlcm4gaW50IGRlYnVnX3NvbGliOwotKwot ICNlbmRpZgotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3N5bWZpbGUtbWVtLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL3N5bWZpbGUtbWVtLmMJ MjAwOS0wOS0yNSAxMDoyNTozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkw OTI1L2dkYi9zeW1maWxlLW1lbS5jCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTE1LDcgKzExNSw3IEBAIHN5bWJvbF9maWxlX2FkZF9mcm9tX21lbW9yeSAoc3RydWN0 IGJmZCAKLSAJKytpOwotICAgICAgIH0KLSAKLS0gIG9iamYgPSBzeW1ib2xfZmlsZV9hZGRfZnJv bV9iZmQgKG5iZmQsIGZyb21fdHR5ID8gU1lNRklMRV9WRVJCT1NFIDogMCwKLSsgIG9iamYgPSBz eW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgKG5iZmQsIChmcm9tX3R0eSA/IFNZTUZJTEVfVkVSQk9T RSA6IDApIHwgU1lNRklMRV9NQUlOTElORTJfQk9USCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNhaSwgT0JKRl9TSEFSRUQpOwotIAotICAgLyogVGhpcyBtaWdodCBjaGFu Z2Ugb3VyIGlkZWFzIGFib3V0IGZyYW1lcyBhbHJlYWR5IGxvb2tlZCBhdC4gICovCi1JbmRleDog Z2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmlsZS5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYu OC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOS0wOS0yNSAxMDoyNTozOS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmMJMjAwOS0w OS0yNSAxMDoyNTo0NS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00OSw2ICs0OSw3IEBACi0gI2luY2x1 ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5j bHVkZSAiYmxvY2suaCIKLSsjaW5jbHVkZSAidmFyb2JqLmgiCi0gI2luY2x1ZGUgIm9ic2VydmVy LmgiCi0gI2luY2x1ZGUgImV4ZWMuaCIKLSAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKLUBAIC03 NzksNyArNzgwLDcgQEAgc3ltc19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQot IAotICAgLyogTm93IGVpdGhlciBhZGRycyBvciBvZmZzZXRzIGlzIG5vbi16ZXJvLiAgKi8KLSAK LS0gIGlmIChtYWlubGluZSkKLSsgIGlmICgoYWRkX2ZsYWdzICYgU1lNRklMRV9NQUlOTElORSkg JiYgIShhZGRfZmxhZ3MgJiBTWU1GSUxFX01BSU5MSU5FMl9PTkxZKSkKLSAgICAgewotICAgICAg IC8qIFdlIHdpbGwgbW9kaWZ5IHRoZSBtYWluIHN5bWJvbCB0YWJsZSwgbWFrZSBzdXJlIHRoYXQg YWxsIGl0cyB1c2VycwotICAgICAgICAgIHdpbGwgYmUgY2xlYW5lZCB1cCBpZiBhbiBlcnJvciBv Y2N1cnMgZHVyaW5nIHN5bWJvbCByZWFkaW5nLiAgKi8KLUBAIC04MDcsNyArODA4LDcgQEAgc3lt c19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIAotICAgICAgV2Ugbm8gbG9u Z2VyIHdhcm4gaWYgdGhlIGxvd2VzdCBzZWN0aW9uIGlzIG5vdCBhIHRleHQgc2VnbWVudCAoYXMK LSAgICAgIGhhcHBlbnMgZm9yIHRoZSBQQTY0IHBvcnQuICAqLwotLSAgaWYgKCFtYWlubGluZSAm JiBhZGRycyAmJiBhZGRycy0+b3RoZXJbMF0ubmFtZSkKLSsgIGlmICgvKiFtYWlubGluZSAmJiov IGFkZHJzICYmIGFkZHJzLT5vdGhlclswXS5uYW1lKQotICAgICB7Ci0gICAgICAgYXNlY3Rpb24g Kmxvd2VyX3NlY3Q7Ci0gICAgICAgYXNlY3Rpb24gKnNlY3Q7Ci1AQCAtODkwLDcgKzg5MSw3IEBA IHN5bXNfZnJvbV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAgICAgICBpbml0X29i amZpbGVfc2VjdF9pbmRpY2VzIChvYmpmaWxlKTsKLSAgICAgfQotIAotLSAgKCpvYmpmaWxlLT5z Zi0+c3ltX3JlYWQpIChvYmpmaWxlLCBtYWlubGluZSk7Ci0rICAoKm9iamZpbGUtPnNmLT5zeW1f cmVhZCkgKG9iamZpbGUsIGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUyX09OTFkgPyAyIDog KGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUgPyAxIDogMCkpOwotIAotICAgLyogRGlzY2Fy ZCBjbGVhbnVwcyBhcyBzeW1ib2wgcmVhZGluZyB3YXMgc3VjY2Vzc2Z1bC4gICovCi0gCi1AQCAt OTA5LDE3ICs5MTAsMjIgQEAgbmV3X3N5bWZpbGVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i agotICAgLyogSWYgdGhpcyBpcyB0aGUgbWFpbiBzeW1ib2wgZmlsZSB3ZSBoYXZlIHRvIGNsZWFu IHVwIGFsbCB1c2VycyBvZiB0aGUKLSAgICAgIG9sZCBtYWluIHN5bWJvbCBmaWxlLiBPdGhlcndp c2UgaXQgaXMgc3VmZmljaWVudCB0byBmaXh1cCBhbGwgdGhlCi0gICAgICBicmVha3BvaW50cyB0 aGF0IG1heSBoYXZlIGJlZW4gcmVkZWZpbmVkIGJ5IHRoaXMgc3ltYm9sIGZpbGUuICAqLwotLSAg aWYgKGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUpCi0rICBpZiAoYWRkX2ZsYWdzICYgU1lN RklMRV9NQUlOTElORSAmJiAhKGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUyX09OTFkpKQot ICAgICB7Ci0gICAgICAgLyogT0ssIG1ha2UgaXQgdGhlICJyZWFsIiBzeW1ib2wgZmlsZS4gICov Ci0gICAgICAgc3ltZmlsZV9vYmpmaWxlID0gb2JqZmlsZTsKLSAKLSAgICAgICBjbGVhcl9zeW10 YWJfdXNlcnMgKCk7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxFX0RF RkVSX0JQX1JFU0VUKSA9PSAwKQotKyAgZWxzZSBpZiAoKGFkZF9mbGFncyAmIFNZTUZJTEVfREVG RVJfQlBfUkVTRVQpID09IDAKLSsgICAgICAgICAgICYmIChhZGRfZmxhZ3MgJiBTWU1GSUxFX01B SU5MSU5FMl9CT1RIKSA9PSAwKQotICAgICB7Ci0gICAgICAgYnJlYWtwb2ludF9yZV9zZXQgKCk7 Ci0gICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIERvbid0IHJlc2V0IGJyZWFrcG9p bnRzIG9yIGl0IHdpbGwgc2NyZXcgdXAgUElFLiAgKi8KLSsgICAgfQotIAotICAgLyogV2UncmUg ZG9uZSByZWFkaW5nIHRoZSBzeW1ib2wgZmlsZTsgZmluaXNoIG9mZiBjb21wbGFpbnRzLiAgKi8K LSAgIGNsZWFyX2NvbXBsYWludHMgKCZzeW1maWxlX2NvbXBsYWludHMsIDAsIGFkZF9mbGFncyAm IFNZTUZJTEVfVkVSQk9TRSk7Ci1AQCAtOTczLDcgKzk3OSw3IEBAIHN5bWJvbF9maWxlX2FkZF93 aXRoX2FkZHJzX29yX29mZnNldHMgKGIKLSAgIC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byBidXJw IGlmIHdlJ2QgYmUKLSAgICAgIGludGVyYWN0aXZlbHkgd2lwaW5nIG91dCBhbnkgZXhpc3Rpbmcg c3ltYm9scy4gICovCi0gCi0tICBpZiAoKGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUpCi0r ICBpZiAoKGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkUpICYmICEoYWRkX2ZsYWdzICYgU1lN RklMRV9NQUlOTElORTJfT05MWSkKLSAgICAgICAmJiAoaGF2ZV9mdWxsX3N5bWJvbHMgKCkgfHwg aGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpCi0gICAgICAgJiYgZnJvbV90dHkKLSAgICAgICAmJiAo aGF2ZV9mdWxsX3N5bWJvbHMgKCkgfHwgaGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKCkpCi1AQCAtMTE2 Myw2ICsxMTY5LDkgQEAgc3ltYm9sX2ZpbGVfY2xlYXIgKGludCBmcm9tX3R0eSkKLSAJCSAgICBz eW1maWxlX29iamZpbGUtPm5hbWUpCi0gCSAgOiAhcXVlcnkgKF8oIkRpc2NhcmQgc3ltYm9sIHRh YmxlPyAiKSkpKQotICAgICBlcnJvciAoXygiTm90IGNvbmZpcm1lZC4iKSk7Ci0rI2lmZGVmIENM RUFSX1NPTElCCi0rICAgICAgQ0xFQVJfU09MSUIgKCk7Ci0rI2VuZGlmCi0gCi0gICBmcmVlX2Fs bF9vYmpmaWxlcyAoKTsKLSAKLUBAIC0zMzY3LDYgKzMzNzYsOCBAQCByZXJlYWRfc3ltYm9scyAo dm9pZCkKLSAJICAgICAgLyogRGlzY2FyZCBjbGVhbnVwcyBhcyBzeW1ib2wgcmVhZGluZyB3YXMg c3VjY2Vzc2Z1bC4gICovCi0gCSAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7 Ci0gCi0rCSAgICAgIGluaXRfZW50cnlfcG9pbnRfaW5mbyAob2JqZmlsZSk7Ci0rCi0gCSAgICAg IC8qIElmIHRoZSBtdGltZSBoYXMgY2hhbmdlZCBiZXR3ZWVuIHRoZSB0aW1lIHdlIHNldCBuZXdf bW9kdGltZQotIAkgICAgICAgICBhbmQgbm93LCB3ZSAqd2FudCogdGhpcyB0byBiZSBvdXQgb2Yg ZGF0ZSwgc28gZG9uJ3QgY2FsbCBzdGF0Ci0gCSAgICAgICAgIGFnYWluIG5vdy4gICovCi1JbmRl eDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvdGFyZ2V0LmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ni44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMDktMDktMjUgMTA6MjU6MzguMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvdGFyZ2V0LmgJMjAwOS0w OS0yNSAxMDoyNTo0NS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NDUsNyArNTQ1LDcgQEAgc3RydWN0 IHRhcmdldF9vcHMKLSAgICAgICAgUmV0dXJuIC0xIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBi dWZmZXIgZm9yIGEgd2hvbGUgZW50cnkuCi0gICAgICAgIFJldHVybiAxIGlmIGFuIGVudHJ5IHdh cyByZWFkIGludG8gKlRZUEVQIGFuZCAqVkFMUC4gICovCi0gICAgIGludCAoKnRvX2F1eHZfcGFy c2UpIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBnZGJfYnl0ZSAqKnJlYWRwdHIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgIGdkYl9ieXRlICplbmRwdHIsIENPUkVfQUREUiAqdHlwZXAsIENP UkVfQUREUiAqdmFscCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9ieXRlICplbmRw dHIsIFVMT05HRVNUICp0eXBlcCwgQ09SRV9BRERSICp2YWxwKTsKLSAKLSAgICAgLyogU2VhcmNo IFNFQVJDSF9TUEFDRV9MRU4gYnl0ZXMgYmVnaW5uaW5nIGF0IFNUQVJUX0FERFIgZm9yIHRoZQot ICAgICAgICBzZXF1ZW5jZSBvZiBieXRlcyBpbiBQQVRURVJOIHdpdGggbGVuZ3RoIFBBVFRFUk5f TEVOLgotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3N5bWZpbGUuaAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvc3ltZmlsZS5oCTIwMDktMDktMjUg MTA6MjU6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3lt ZmlsZS5oCTIwMDktMDktMjUgMTA6MjU6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMjI5LDcgKzIy OSwxMyBAQCBlbnVtIHN5bWZpbGVfYWRkX2ZsYWdzCi0gICAgIFNZTUZJTEVfTUFJTkxJTkUgPSAx IDw8IDIsCi0gCi0gICAgIC8qIERvIG5vdCBjYWxsIGJyZWFrcG9pbnRfcmVfc2V0IHdoZW4gYWRk aW5nIHRoaXMgc3ltYm9sIGZpbGUuICAqLwotLSAgICBTWU1GSUxFX0RFRkVSX0JQX1JFU0VUID0g MSA8PCAzCi0rICAgIFNZTUZJTEVfREVGRVJfQlBfUkVTRVQgPSAxIDw8IDMsCi0rCi0rICAgIC8q IFJlZCBIYXQgUElFIHBhdGNoOiBMaWtlIFNZTUZJTEVfTUFJTkxJTkUgYnV0IGZvciBtYWlubGlu ZSA9PSAyLgotKyAgICAgICBGb3JtZXIgY29kZSB3YXMgY2hlY2tpbmcgYGlmIChtYWlubGluZSkn IGJlaW5nIHNhdGlzZmllZCBib3RoIGJ5Ci0rICAgICAgIHN0YW5kYXJkIDEgYW5kIHJhcmUgMiwg c2ltdWxhdGUgaXQgaGVyZS4gICovCi0rICAgIFNZTUZJTEVfTUFJTkxJTkUyX09OTFkgPSAxIDw8 IDQsCi0rICAgIFNZTUZJTEVfTUFJTkxJTkUyX0JPVEggPSBTWU1GSUxFX01BSU5MSU5FMl9PTkxZ IHwgU1lNRklMRV9NQUlOTElORQotICAgfTsKLSAKLSBleHRlcm4gdm9pZCBzeW1zX2Zyb21fb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKiwKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9p bmZjbWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvaW5m Y21kLmMJMjAwOS0wOS0yNSAxMDoyNTozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44Ljkx LjIwMDkwOTI1L2dkYi9pbmZjbWQuYwkyMDA5LTA5LTI1IDEwOjI1OjQ1LjAwMDAwMDAwMCArMDIw MAotQEAgLTIzMDgsNiArMjMwOCw5IEBAIGF0dGFjaF9jb21tYW5kX3Bvc3Rfd2FpdCAoY2hhciAq YXJncywgaW4KLSAKLSAgIHBvc3RfY3JlYXRlX2luZmVyaW9yICgmY3VycmVudF90YXJnZXQsIGZy b21fdHR5KTsKLSAKLSsgIC8qIFVuZG8gdGhlIGRpc2FibGUgZnJvbSBwb3N0X2NyZWF0ZV9pbmZl cmlvci4gICovCi0rICBlbmFibGVfYnJlYWtwb2ludHNfYWZ0ZXJfc3RhcnR1cCAoKTsKLSsKLSAg IC8qIEluc3RhbGwgaW5mZXJpb3IncyB0ZXJtaW5hbCBtb2Rlcy4gICovCi0gICB0YXJnZXRfdGVy bWluYWxfaW5mZXJpb3IgKCk7Ci0gCi1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvbGlu dXgtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9s aW51eC10ZGVwLmMJMjAwOS0wOC0wNCAyMjo0MToxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ni44LjkxLjIwMDkwOTI1L2dkYi9saW51eC10ZGVwLmMJMjAwOS0wOS0yNSAxMDoyNTo0NS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xNjMsNSArMTYzLDcgQEAgaW4gdGhpcyBzZXNzaW9uLlxuIikpOwot IHZvaWQKLSBfaW5pdGlhbGl6ZV9saW51eF90ZGVwICh2b2lkKQotIHsKLSsjaWYgMCAvKiBnZGIt Ni4zLXBpZS0yMDA1MDExMC5wYXRjaCAqLwotICAgb2JzZXJ2ZXJfYXR0YWNoX2V4ZWN1dGFibGVf Y2hhbmdlZCAoY2hlY2tfaXNfcGllX2JpbmFyeSk7Ci0rI2VuZGlmCi0gfQoKZGlmZiAtLWdpdCBh L2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2ggYi9nZGItNi4zLXJoLXRlc3R2 ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCmluZGV4IGNmMjViY2QuLjI1YTEzNTcgMTAwNjQ0Ci0tLSBh L2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKKysrIGIvZ2RiLTYuMy1yaC10 ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaApAQCAtMTEsOCArMTEsOCBAQCBJbmRleDogZ2RiLTYu OC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCiAgCS1yZSAiLlxbMC05XF0rID0g Ky4rICsweC4qXFswLTkuXF0rLiokZ2RiX3Byb21wdCAkIiB7CiAgCSAgICBwYXNzICJwcmludGVk IHZlcnNpb24gd2l0aCBjYXN0IgogIAl9Ci0rCS1yZSAiLlxbMC05XF0rID0gLkZlZG9yYSBcW1xc KFxcKTAtOS5hLXpcXC1cXSsuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgInByaW50ZWQg dmVyc2lvbiBGZWRvcmEgb25seSIKKysJLXJlICIuXFswLTlcXSsgPSAuKEZlZG9yYXxSZWQgSGF0 IEVudGVycHJpc2UgTGludXgpIFxbXFwoXFwpMC05LmEtelxcLVxdKy4qJGdkYl9wcm9tcHQgJCIg eworKwkgICAgcGFzcyAicHJpbnRlZCB2ZXJzaW9uIEZlZG9yYSBvciBSZWQgSGF0IEVudGVycHJp c2UgTGludXggb25seSIKICsJfQogIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJwcmlu dGVkIHZlcnNpb24iIH0KICAJdGltZW91dAkJeyBmYWlsICIodGltZW91dCkgcHJpbnRlZCB2ZXJz aW9uIiB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1zZXBjcmMtMjAwNTA0MDIucGF0Y2ggYi9nZGIt Ni4zLXNlcGNyYy0yMDA1MDQwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MzMwYTczOS4uMDAwMDAwMAotLS0gYS9nZGItNi4zLXNlcGNyYy0yMDA1MDQwMi5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLTIwMDUtMDQtMDIgIEFuZHJldyBDYWduZXkgIDxj YWduZXlAZ251Lm9yZz4KLQotCSogc3ltZmlsZS5jIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0 cyk6IFdoZW4gdGhlIENSQ3MgbWlzbWF0Y2gKLQlwcmludCBhIHdhcm5pbmcuCi0JKGZpbmRfc2Vw YXJhdGVfZGVidWdfZmlsZSk6IFBhc3MgaW4gdGhlIG9iamZpbGUncyBuYW1lLgotCi1JbmRleDog Z2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvc3ltZmlsZS5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYu OC41MC4yMDA4MTEyOC5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOC0xMC0wMyAxODozNjoxMC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi9zeW1maWxlLmMJMjAwOC0x Mi0wMSAxNjozNDozNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjk2LDcgKzEyOTYsOCBAQCBnZXRf ZGVidWdfbGlua19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCi0gfQotIAotIHN0YXRpYyBpbnQK LS1zZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQg bG9uZyBjcmMpCi0rc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKm5hbWUs IHVuc2lnbmVkIGxvbmcgY3JjLAotKwkJCSAgICBjb25zdCBjaGFyICpwYXJlbnRfbmFtZSkKLSB7 Ci0gICB1bnNpZ25lZCBsb25nIGZpbGVfY3JjID0gMDsKLSAgIGJmZCAqYWJmZDsKLUBAIC0xMzE2 LDcgKzEzMTcsMTUgQEAgc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKgot IAotICAgYmZkX2Nsb3NlIChhYmZkKTsKLSAKLS0gIHJldHVybiBjcmMgPT0gZmlsZV9jcmM7Ci0r ICBpZiAoY3JjICE9IGZpbGVfY3JjKQotKyAgICB7Ci0rICAgICAgd2FybmluZyAoXygidGhlIGRl YnVnIGluZm9ybWF0aW9uIGZvdW5kIGluIFwiJXNcIiIKLSsJCSAiIGRvZXMgbm90IG1hdGNoIFwi JXNcIiAoQ1JDIG1pc21hdGNoKS5cbiIpLAotKwkgICAgICAgbmFtZSwgcGFyZW50X25hbWUpOwot KyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMTsKLSB9Ci0gCi0gY2hhciAq ZGVidWdfZmlsZV9kaXJlY3RvcnkgPSBOVUxMOwotQEAgLTEzNjgsNiArMTM3Nyw4IEBAIGZpbmRf c2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUKLSAgIGJhc2VuYW1lID0gZ2V0X2Rl YnVnX2xpbmtfaW5mbyAob2JqZmlsZSwgJmNyYzMyKTsKLSAKLSAgIGlmIChiYXNlbmFtZSA9PSBO VUxMKQotKyAgICAvKiBUaGVyZSdzIG5vIHNlcGFyYXRlIGRlYnVnIGluZm8sIGhlbmNlIHRoZXJl J3Mgbm8gd2F5IHdlIGNvdWxkCi0rICAgICAgIGxvYWQgaXQgPT4gbm8gd2FybmluZy4gICovCi0g ICAgIHJldHVybiBOVUxMOwotIAotICAgZGlyID0geHN0cmR1cCAob2JqZmlsZS0+bmFtZSk7Ci1A QCAtMTM5NSw3ICsxNDA2LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2Jq ZmlsZQotICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRpcik7Ci0gICBzdHJjYXQgKGRlYnVnZmlsZSwg YmFzZW5hbWUpOwotIAotLSAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2Zp bGUsIGNyYzMyKSkKLSsgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxl LCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0gICAgIHsKLSAgICAgICB4ZnJlZSAoYmFzZW5hbWUp OwotICAgICAgIHhmcmVlIChkaXIpOwotQEAgLTE0MDgsNyArMTQxOSw3IEBAIGZpbmRfc2VwYXJh dGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUKLSAgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIp OwotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLS0gIGlmIChzZXBhcmF0ZV9k ZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMikpCi0rICBpZiAoc2VwYXJhdGVfZGVi dWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUpKQotICAgICB7 Ci0gICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKLSAgICAgICB4ZnJlZSAoZGlyKTsKLUBAIC0xNDIx LDcgKzE0MzIsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlCi0g ICBzdHJjYXQgKGRlYnVnZmlsZSwgZGlyKTsKLSAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFt ZSk7Ci0gCi0tICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3Jj MzIpKQotKyAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMy LCBvYmpmaWxlLT5uYW1lKSkKLSAgICAgewotICAgICAgIHhmcmVlIChiYXNlbmFtZSk7Ci0gICAg ICAgeGZyZWUgKGRpcik7Ci1AQCAtMTQ0MCw3ICsxNDUxLDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQotICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIpOwot ICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0gCi0tICAgICAgaWYgKHNlcGFy YXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkKLSsgICAgICBpZiAoc2Vw YXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUp KQotIAl7Ci0gCSAgeGZyZWUgKGNhbm9uX25hbWUpOwotIAkgIHhmcmVlIChiYXNlbmFtZSk7Cgpk aWZmIC0tZ2l0IGEvZ2RiLTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2ggYi9nZGItNi4z LXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaAppbmRleCBkZjQ2ODU5Li5iY2M0NTY1IDEwMDY0 NAotLS0gYS9nZGItNi4zLXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaAorKysgYi9nZGItNi4z LXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaApAQCAtMTI5LDcgKzEyOSw3IEBAIEluZGV4OiBn ZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogK30KIC0tLSBnZGItNi4zL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2NvbnN0cnVjdG9ydGVzdC5leHAuZml4CUZyaSBKYW4gMjEgMTc6MDc6MDIgMjAwNQogKysr IGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmV4cAlGcmkgSmFu IDIxIDE3OjA1OjI5IDIwMDUKLUBAIC0wLDAgKzEsMTMxIEBACitAQCAtMCwwICsxLDEzNyBAQAog KyMgVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKICsj IENvcHlyaWdodCAyMDA1LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAt MTc5LDggKzE3OSw5IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogKyAgICBnZGJf c3VwcHJlc3NfdGVzdHMKICt9CiArCi0rIyBCcmVhayBvbiB0aGUgdmFyaW91cyBmb3JtcyBvZiB0 aGUgQTo6QSBjb25zdHJ1Y3RvcgotK2dkYl90ZXN0ICJicmVhayBBXDpcOkEiICJCcmVha3BvaW50 IDIgYXQgLiogXFwoMiBsb2NhdGlvbnNcXCkiICJicmVha2luZyBvbiBBOjpBIgorKyMgQnJlYWsg b24gdGhlIHZhcmlvdXMgZm9ybXMgb2YgdGhlIEE6OkEgY29uc3RydWN0b3IuCisrIyAiICgyIGxv Y2F0aW9ucykiIGlzIGRpc3BsYXllZCBkZXBlbmRpbmcgb24gRysrIHZlcnNpb24uCisrZ2RiX3Rl c3QgImJyZWFrIEFcOlw6QSIgIkJyZWFrcG9pbnQgMiBhdCAuKiIgImJyZWFraW5nIG9uIEE6OkEi CiArICAgICAgICAKICsjIFZlcmlmeSB0aGF0IHdlIGJyZWFrIGZvciB0aGUgQSBjb25zdHJ1Y3Rv ciB0d28gdGltZXMKICsjIE9uY2UgZm9yIG5ldyBBIGFuZCBvbmNlIGZvciBuZXcgQgpAQCAtMjA2 LDcgKzIwNyw4IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogK2dkYl90ZXN0ICJi cmVhayAnQTo6QSgpJyIgIiIgImJyZWFrIGluIGNvbnN0cnVjdG9yIEEgMiIKICtnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiRmlyc3QgbGluZSBBIgogK3NldCBzZWNvbmRfbGluZSBbZ2RiX2dl dF9saW5lX251bWJlciAiU2Vjb25kIGxpbmUgQSJdCi0rZ2RiX3Rlc3QgImJyZWFrICRzZWNvbmRf bGluZSIgIkJyZWFrcG9pbnQgLiosIGxpbmUgJHNlY29uZF9saW5lLiBcXCgyIGxvY2F0aW9uc1xc KSIgImJyZWFrIGJ5IGxpbmUgaW4gY29uc3RydWN0b3IiCisrIyAiICgyIGxvY2F0aW9ucykiIGlz IGRpc3BsYXllZCBkZXBlbmRpbmcgb24gRysrIHZlcnNpb24uCisrZ2RiX3Rlc3QgImJyZWFrICRz ZWNvbmRfbGluZSIgIkJyZWFrcG9pbnQgLiosIGxpbmUgJHNlY29uZF9saW5lXFwuLioiICJicmVh ayBieSBsaW5lIGluIGNvbnN0cnVjdG9yIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJT ZWNvbmQgbGluZSBBIgogK2dkYl90ZXN0ICJidCIgIiMwLipBLiojMS4qbWFpbi4qIiAiVmVyaWZ5 IGluIGluLWNoYXJnZSBBOjpBIHNlY29uZCBsaW5lIgogK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJTZWNvbmQgbGluZSBBIgpAQCAtMjE3LDcgKzIxOSw4IEBAIEluZGV4OiBnZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZwogK2dkYl90ZXN0ICJicmVhayAnQTo6fkEoKSciICIiICJicmVhayBpbiBj b25zdHJ1Y3RvciB+QSAyIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJGaXJzdCBsaW5l IH5BIgogK3NldCBzZWNvbmRfbGluZV9kdG9yIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJTZWNvbmQg bGluZSB+QSJdCi0rZ2RiX3Rlc3QgImJyZWFrICRzZWNvbmRfbGluZV9kdG9yIiAiQnJlYWtwb2lu dCAuKiwgbGluZSAkc2Vjb25kX2xpbmVfZHRvci4gXFwoMiBsb2NhdGlvbnNcXCkiICJicmVhayBi eSBsaW5lIGluIGRlc3RydWN0b3IiCisrIyAiICgyIGxvY2F0aW9ucykiIGlzIGRpc3BsYXllZCBk ZXBlbmRpbmcgb24gRysrIHZlcnNpb24uCisrZ2RiX3Rlc3QgImJyZWFrICRzZWNvbmRfbGluZV9k dG9yIiAiQnJlYWtwb2ludCAuKiwgbGluZSAkc2Vjb25kX2xpbmVfZHRvclxcLi4qIiAiYnJlYWsg YnkgbGluZSBpbiBkZXN0cnVjdG9yIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJTZWNv bmQgbGluZSB+QSIKICtnZGJfdGVzdCAiYnQiICIjMC4qQS4qIzEuKm1haW4uKiIgIlZlcmlmeSBp biBpbi1jaGFyZ2UgQTo6fkEgc2Vjb25kIGxpbmUiCiArIyBGSVhNRTogQW5hbHlzZSB0aGlzIGNh c2UgYmV0dGVyLgpAQCAtMjMyLDggKzIzNSwxMSBAQCBJbmRleDogZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cKICtnZGJfbG9hZCAke2JpbmZpbGV9CiArcnVudG9fbWFpbgogKworK3NldCBmaXJzdF9s aW5lX2R0b3IgW2dkYl9nZXRfbGluZV9udW1iZXIgIkZpcnN0IGxpbmUgfkMiXQorK3NldCBkZWZp bmVfbGluZV9kdG9yIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEZXN0cnVjdG9yIEMiXQogKyMgQnJl YWsgb24gdGhlIHZhcmlvdXMgZm9ybXMgb2YgdGhlIEM6On5DIGRlc3RydWN0b3IKLStnZGJfdGVz dCAiYnJlYWsgQ1w6XDp+QyIgIkJyZWFrcG9pbnQgLiogXFwoMyBsb2NhdGlvbnNcXCkiICJicmVh a2luZyBvbiBDOjp+QyIKKysjICIgKFsyM10gbG9jYXRpb25zKSIgaXMgZGlzcGxheWVkIGRlcGVu ZGluZyBvbiBHKysgdmVyc2lvbi4KKytnZGJfdGVzdCAiYnJlYWsgQ1w6XDp+QyIgIkJyZWFrcG9p bnQgLiosIGxpbmUgKCRkZWZpbmVfbGluZV9kdG9yfCRkZWZpbmVfbGluZV9kdG9yKVxcLi4qIiAi YnJlYWtpbmcgb24gQzo6fkMiCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkZpcnN0IGxp bmUgfkMiCiArCiArIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYnJlYWsgYnkgbGluZSBudW1iZXIgaW4g YSBkZXN0cnVjdG9yIGFuZCBmaW5kCkBAIC0yNDIsOCArMjQ4LDggQEAgSW5kZXg6IGdkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCiArZ2RiX2xvYWQgJHtiaW5maWxlfQogK2RlbGV0ZV9icmVha3BvaW50 cwogKwotK3NldCBmaXJzdF9saW5lX2R0b3IgW2dkYl9nZXRfbGluZV9udW1iZXIgIkZpcnN0IGxp bmUgfkMiXQotK2dkYl90ZXN0ICJicmVhayAkZmlyc3RfbGluZV9kdG9yIiAiQnJlYWtwb2ludCAu KiwgbGluZSAkZmlyc3RfbGluZV9kdG9yLiBcXCgzIGxvY2F0aW9uc1xcKSIgImJyZWFrIGJ5IGxp bmUgaW4gZGVzdHJ1Y3RvciIKKysjICIgKDMgbG9jYXRpb25zKSIgaXMgZGlzcGxheWVkIGRlcGVu ZGluZyBvbiBHKysgdmVyc2lvbi4KKytnZGJfdGVzdCAiYnJlYWsgJGZpcnN0X2xpbmVfZHRvciIg IkJyZWFrcG9pbnQgLiosIGxpbmUgJGZpcnN0X2xpbmVfZHRvclxcLi4qIiAiYnJlYWsgYnkgbGlu ZSBpbiBkZXN0cnVjdG9yIgogKwogKyMgUnVuIHRvIGBtYWluJyB3aGVyZSB3ZSBiZWdpbiBvdXIg dGVzdHMuCiArIyBTZXQgdGhlIGJyZWFrcG9pbnRzIGZpcnN0IHRvIHRlc3QgUElFIG11bHRpcGxl LVBDIEJSRUFLUE9JTlRfUkVfU0VULgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1waWUtMjAw NTAxMDcucGF0Y2ggYi9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4IDZiYTI0 YTAuLjkyMDg5ODEgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gK KysrIGIvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtNDM2LDcgKzQzNiw3IEBA IEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCiArKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUv YXR0YWNoLmV4cAkyMDA5LTA5LTA5IDE5OjA2OjAxLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCAr MSw0MzIgQEAKK0BAIC0wLDAgKzEsNDMzIEBACiArIyAgIENvcHlyaWdodCAxOTk3LCAxOTk5LCAy MDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAg LTgxNyw3ICs4MTcsOCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRl L2dkYi5waWUvYXR0YWNoLmV4cAogKyAgICAgIC1yZSAiLip3YXJuaW5nOiByZWFkaW5nIHJlZ2lz dGVyLipJLipPIGVycm9yLiokZ2RiX3Byb21wdCAkIiB7CiArICAgICAgICAgZmFpbCAiYXR0YWNo IGNhbGwsIHJlYWQgcmVnaXN0ZXIgMyBlcnJvciIKICsgICAgIH0KLSsgICAgIC1yZSAiQXR0YWNo aW5nIHRvLipwcm9jZXNzICR0ZXN0cGlkLipsaWJjLiokZ2RiX3Byb21wdCAkIiB7CisrICAgICAt cmUgIkF0dGFjaGluZyB0by4qcHJvY2VzcyAkdGVzdHBpZC4qJGdkYl9wcm9tcHQgJCIgeworKyAg ICAgICAgICMgbGliYyBpcyByZWxvY2F0ZWQsIG5vdCByZWxvY2F0ZWQsIHRoZXJlZm9yZSBub3Qg cHJpbnRlZC4KICsgICAgICAgICBwYXNzICJhdHRhY2ggY2FsbCIKICsgICAgIH0KICsgICAgICAt cmUgIiRnZGJfcHJvbXB0ICQiIHtmYWlsICJhdHRhY2ggY2FsbCJ9CgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuMy10ZXN0LXNlcGNyYy0yMDA1MDQwMi5wYXRjaCBiL2dkYi02LjMtdGVzdC1zZXBjcmMtMjAw NTA0MDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZTA4NmYuLjAwMDAw MDAKLS0tIGEvZ2RiLTYuMy10ZXN0LXNlcGNyYy0yMDA1MDQwMi5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDU1ICswLDAgQEAKLUluZGV4OiBnZGItNi44L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c2VwZGVidWcuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2Uvc2VwZGVidWcuZXhwCTIwMDgtMDItMjYgMDk6MTQ6MTEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTYuOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NlcGRlYnVnLmV4cAkyMDA4LTA3 LTE0IDEwOjI2OjE5LjAwMDAwMDAwMCArMDIwMAotQEAgLTk4MSwzICs5ODEsNDAgQEAgaWYgIVtz dHJpbmcgY29tcGFyZSAkYnVpbGRfaWRfZGVidWdfZmlsZQotICAgICAjIFNwYXJlIGRlYnVnIGZp bGVzIG1heSBjb25mdXNlIHRlc3RzdWl0ZSBydW5zIGluIHRoZSBmdXR1cmUuCi0gICAgIHJlbW90 ZV9leGVjIGJ1aWxkICJybSAtZiAke29iamRpcn0vJHtzdWJkaXJ9LyR7YnVpbGRfaWRfZGVidWdf ZmlsZW5hbWV9IgotIH0KLSsKLSsKLSsjIENvbXBpbGUgdXAgYSBzZWNvbmQsIGRpZmZlcmVudCwg b2JqZWN0IGZpbGUuICBDb3B5IGl0cyBkZWJ1ZyBpbmZvCi0rIyBvdmVyIHRoZSB0b3Agb2YgdGhl IG5ldyBkZWJ1ZyBpbmZvLiAgTm90ZSB0aGF0IHNvbWV3aGVyZSBpbiB0aGUKLSsjIGFib3ZlIHRo ZSAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IiB2YXJpYWJsZSBpcyBzZXQgdG8KLSsjICR7b2Jq ZGlyfS8ke3N1YmRpcn0gc28gbmVlZCB0byBtb3ZlIHRoaW5ncyB0aGVyZS4KLSsKLStzZXQgZXhp c3RpbmdfYmluZmlsZSAkYmluZmlsZQotK3NldCB0ZXN0ZmlsZSAic2VwZGVidWcyIgotK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9Ci0rc2V0IGNvcnJ1cHRfZGVidWdfZmlsZSBbc2VwYXJhdGVfZGVidWdfZmlsZW5h bWUgJGJpbmZpbGVdCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdz PS13fV0gIT0gIiIgfSB7Ci0rICAgIHJldHVybiAtMQotK30KLStpZiBbZ2RiX2dudV9zdHJpcF9k ZWJ1ZyAkYmluZmlsZV0gewotKyAgICAjIGNoZWNrIHRoYXQgeW91IGhhdmUgYSByZWNlbnQgdmVy c2lvbiBvZiBzdHJpcCBhbmQgb2JqY29weSBpbnN0YWxsZWQKLSsgICAgdW5zdXBwb3J0ZWQgImNh bm5vdCBwcm9kdWNlIHNlcGFyYXRlIGRlYnVnIGluZm8gZmlsZXMiCi0rICAgIHJldHVybiAtMQot K30KLStyZW1vdGVfZXhlYyBidWlsZCAiY3AgJGNvcnJ1cHRfZGVidWdfZmlsZSAke2V4aXN0aW5n X2JpbmZpbGV9LmRlYnVnIgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK3NldCB0 ZXN0ICAiQSBjb3JydXB0IGRlYnVnIGZpbGUgZ2V0cyBhIHdhcm5pbmciCi0rZ2RiX3Rlc3RfbXVs dGlwbGUgImZpbGUgJGV4aXN0aW5nX2JpbmZpbGUiICIkdGVzdCIgewotKyAgICAtcmUgIndhcm5p bmc6LiptaXNtYXRjaC4qIiB7Ci0rCXBhc3MgIiR0ZXN0IgotKyAgICB9Ci0rICAgIC1yZSAiLnkg b3Igbi4gIiB7Ci0rCXNlbmRfZ2RiICJ5XG4iCi0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0rfQot SW5kZXg6IGdkYi02LjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1ZzIuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi02LjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1ZzIuYwkyMDA4LTA3LTE0 IDEwOjI2OjE5LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1IEBACi0raW50Ci0rbWFpbiAo aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgY2hhciAqZW52cFtdKQotK3sKLSsgIHJldHVybiAwOwot K30KCmRpZmYgLS1naXQgYS9nZGItNi4zLXdhdGNocG9pbnQtY29uZC1nb25lLXRlc3QucGF0Y2gg Yi9nZGItNi4zLXdhdGNocG9pbnQtY29uZC1nb25lLXRlc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGNkOGEyMzcuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuMy13YXRjaHBvaW50 LWNvbmQtZ29uZS10ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS0t LSAvZGV2L251bGwJMjAwOC0wNC0wMyAwMDozOTozMC43MTQwMjE2MDQgKzAyMDAKLSsrKyBnZGIt Ni4zL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1jb25kLWdvbmUtc3RyaXBwZWQu YwkyMDA4LTA0LTA1IDIwOjI2OjI5LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwyMyBAQAot Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0r ICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyAKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gKi8KLSsKLSt2 b2lkCi0ranVtcGVyICh2b2lkICgqanVtcHRvKSAodm9pZCkpCi0rewotKyAgKCpqdW1wdG8pICgp OwotK30KLS0tLSAvZGV2L251bGwJMjAwOC0wNC0wMyAwMDozOTozMC43MTQwMjE2MDQgKzAyMDAK LSsrKyBnZGItNi4zL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1jb25kLWdvbmUu YwkyMDA4LTA0LTA1IDIwOjI2OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwzNyBAQAot Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0r ICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyAKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gKi8KLSsKLStl eHRlcm4gdm9pZCBqdW1wZXIgKHZvaWQgKCpqdW1wdG8pICh2b2lkKSk7Ci0rCi0rdm9pZAotK2Z1 bmMgKCkKLSt7Ci0rCWludCBhLCBiLCBjOwotKwotKwlhID0gYiA9IGMgPSA1OwotKwlhID0gYiA9 IGMgPSAxMDsJLyogd2F0Y2hwb2ludC1oZXJlICovCi0rCWMgPSBhICsgYjsKLSt9Ci0rCi0raW50 Ci0rbWFpbiAoKQotK3sKLSsJanVtcGVyIChmdW5jKTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotLS0t IC9kZXYvbnVsbAkyMDA4LTA0LTAzIDAwOjM5OjMwLjcxNDAyMTYwNCArMDIwMAotKysrIGdkYi02 LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS5leHAJMjAwOC0w NC0wNSAyMDozMzoxOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNTkgQEAKLSsjIENvcHly aWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsK LSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAid2F0Y2hwb2lu dC1jb25kLWdvbmUiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBzcmNmaWxlc3Ry aXBwZWQgJHt0ZXN0ZmlsZX0tc3RyaXBwZWQuYwotK3NldCBvYmpmaWxlc3RyaXBwZWQgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1zdHJpcHBlZC5vCi0rc2V0IGJpbmZpbGUgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotKwotKyMgV2UgbmVlZCB0byBnZW5lcmF0ZSBhIGZ1 bmN0aW9uIHdpdGhvdXQgRFdBUkYgdG8gY3Jhc2ggb2xkZXIgR0RCLgotKyMgU3RlcHBpbmcgaW50 byBhIGR5bmFtaWMgZnVuY3Rpb24gdHJhbXBvbGluZSBvciBzdGVwcGluZyBvdXQgb2YgTUFJTiBt YXkgd29yawotKyMgYnV0IGl0IGlzIG5vdCBhIHJlbGlhYmxlIEZBSUwgY2FzZS4KLSsKLStpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlc3RyaXBwZWR9IiAi JHtvYmpmaWxlc3RyaXBwZWR9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICBnZGJfc3VwcHJl c3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4g dGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9Ci0rCi0raWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtvYmpmaWxlc3RyaXBwZWR9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgZ2RiX3N1 cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3Rz IGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2dkYl9leGl0 Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2Ri X2xvYWQgJHtiaW5maWxlfQotKwotKyMgUHJvYmxlbSBkb2VzIG5vdCBvY2N1ciBvdGhlcndpc2Uu Ci0rZ2RiX3Rlc3QgInNldCBjYW4tdXNlLWh3LXdhdGNocG9pbnRzIDAiCi0rCi0rcnVudG9fbWFp bgotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ3YXRjaHBvaW50LWhlcmUi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJQbGFjZSB0byBzZXQgdGhlIHdhdGNocG9p bnQiCi0rCi0rIyBUaGUgY29uZGl0aW9uIGBjID09IDMwJyBpcyB0aGUgdGVzdGVkIGN1bHByaXQu Ci0rZ2RiX3Rlc3QgIndhdGNoIGMgaWYgYyA9PSAzMCIgIiIgIlBsYWNlIHRoZSB3YXRjaHBvaW50 IgotKwotKyMgTm8gZnVuY3Rpb25hbGl0eSwganVzdCB0byBjaGVjayB0aGUgc3RhdGUuCi0rZ2Ri X3Rlc3QgImJhY2t0cmFjZSIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAgICAgICAgIldh dGNocG9pbnQgLiogZGVsZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9j ayBpbi4qd2hpY2ggaXRzIGV4cHJlc3Npb24gaXMgdmFsaWQuLippbiAoanVtcGVyfGZ1bmMpLioi IFwKLSsgICAgICAgICAiQ2F0Y2ggdGhlIG5vIGxvbmdlciB2YWxpZCB3YXRjaHBvaW50IgoKZGlm ZiAtLWdpdCBhL2dkYi02LjUtYnoyMTY3MTEtY2xvbmUtaXMtb3V0ZXJtb3N0LnBhdGNoIGIvZ2Ri LTYuNS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2gKaW5kZXggYjJkYzQ1MS4uYWIw YzkwMiAxMDA2NDQKLS0tIGEvZ2RiLTYuNS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0 Y2gKKysrIGIvZ2RiLTYuNS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2gKQEAgLTE2 Miw2ICsxNjIsMTU0IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9hbWQ2NC10ZGVw LmMKICB9OwogIAogIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCistLS0gYS9nZGIv aWE2NC10ZGVwLmMKKysrKyBiL2dkYi9pYTY0LXRkZXAuYworQEAgLTIxMjIsNiArMjEyMiwxMzcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgaWE2NF9mcmFtZV91bndpbmQgPQor ICAgZGVmYXVsdF9mcmFtZV9zbmlmZmVyCisgfTsKKyAKKysvKiBEZXRlY3QgdGhlIG91dGVybW9z dCBmcmFtZTsgZHVyaW5nIHVud2luZCBvZgorKyAgIAkjNiAgMHgyMDAwMDAwMDAwMzQ3MTAwIGlu IF9fY2xvbmUyICgpIGZyb20gL2xpYi9saWJjLnNvLjYuMQorKyAgIGF2b2lkIHRoZSBhZGRpdGlv bmFsIGJvZ3VzIGZyYW1lCisrICAgCSM3ICAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkgICov CisrCisrc3RhdGljIGNoYXIgbGludXhfY2xvbmUyX2NvZGVbXSA9CisreworKy8qIGxpYmMvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvaWE2NC9jbG9uZTIuUyAqLworKyAgMHgwOSwgMHgwMCwgMHgy MCwgMHgxMiwgMHg5MCwgMHgxMSwgMHgwMCwgMHg0MCwKKysgIDB4MjgsIDB4MjAsIDB4MjMsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsCisrLyogICAgICAgICBzdDQgW3I5XT1yOCAqLwor Ky8qICAgICAgICAgc3Q0IFtyMTBdPXI4ICovCisrLyogICAgICAgICA7OyAqLworKy8qICNlbmRp ZiAqLworKyAgMHgwMiwgMHg1MCwgMHgyMSwgMHg0MCwgMHgxOCwgMHgxNCwgMHg5MCwgMHgwMiwK KysgIDB4OTAsIDB4MDAsIDB4NDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsCisrLyog MTogICAgICBsZDggb3V0MT1baW4wXSw4ICAgICAgICB8KiBSZXRyaWV2ZSBjb2RlIHBvaW50ZXIu ICAgICAgICp8ICovCisrLyogICAgICAgICBtb3Ygb3V0MD1pbjQgICAgICAgICAgICB8KiBQYXNz IHByb3BlciBhcmd1bWVudCB0byBmbiAqfCAqLworKy8qICAgICAgICAgOzsgKi8KKysgIDB4MTEs IDB4MDgsIDB4MDAsIDB4NDAsIDB4MTgsIDB4MTAsIDB4NjAsIDB4NTAsCisrICAweDA1LCAweDgw LCAweDAzLCAweDAwLCAweDY4LCAweDAwLCAweDgwLCAweDEyLAorKy8qICAgICAgICAgbGQ4IGdw PVtpbjBdICAgICAgICAgICAgfCogTG9hZCBmdW5jdGlvbiBncC4gICAgICAgICAgICAqfCAqLwor Ky8qICAgICAgICAgbW92IGI2PW91dDEgKi8KKysvKiAgICAgICAgIGJyLmNhbGwuZHB0ay5tYW55 IHJwPWI2IHwqIENhbGwgZm4oYXJnKSBpbiB0aGUgY2hpbGQgICAgKnwgKi8KKysvKiAgICAgICAg IDs7ICovCisrICAweDEwLCAweDQ4LCAweDAxLCAweDEwLCAweDAwLCAweDIxLCAweDEwLCAweDAw LAorKyAgMHhhMCwgMHgwMCwgMHg0MiwgMHgwMCwgMHg5OCwgMHhkZiwgMHhmNywgMHg1YiwKKysv KiAgICAgICAgIG1vdiBvdXQwPXI4ICAgICAgICAgICAgIHwqIEFyZ3VtZW50IHRvIF9leGl0ICAg ICAgICAgICAgKnwgKi8KKysvKiAgICAgICAgIG1vdiBncD1sb2MwICovCisrLyogICAgICAgICAu Z2xvYmwgSElEREVOX0pVTVBUQVJHRVQoX2V4aXQpICovCisrLyogICAgICAgICBici5jYWxsLmRw bnQubWFueSBycD1ISURERU5fSlVNUFRBUkdFVChfZXhpdCkgKi8KKysvKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwqIGNhbGwgX2V4aXQgd2l0aCByZXN1bHQgZnJvbSBmbi4gICAg ICAqfCAqLworKyAgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgw MCwKKysgIDB4MDAsIDB4MDIsIDB4MDAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4ODQsIDB4MDAKKysv KiAgICAgICAgIHJldCAgICAgICAgICAgICAgICAgICAgIHwqIE5vdCByZWFjaGVkLiAgICAgICAg ICp8ICovCisrfTsKKysKKysjZGVmaW5lIExJTlVYX0NMT05FX1BSRV9TTE9UUyAzCS8qIE51bWJl ciBvZiBzbG90cyBiZWZvcmUgUEMuICAqLworKyNkZWZpbmUgTElOVVhfQ0xPTkVfTEVOIChzaXpl b2YgbGludXhfY2xvbmUyX2NvZGUpCisrCisrc3RhdGljIGludAorK2lhNjRfbGludXhfY2xvbmUy X3J1bm5pbmcgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQorK3sKKysgIENPUkVfQURE UiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7CisrICBjaGFyIGJ1ZltMSU5VWF9DTE9O RV9MRU5dOworKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptaW5zeW07CisrICBsb25nIGxvbmcg aW5zdHI7CisrCisrICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAodGhpc19mcmFtZSwg cGMgLSBMSU5VWF9DTE9ORV9QUkVfU0xPVFMgKiAxNiwKKysJCQkJIGJ1ZiwgTElOVVhfQ0xPTkVf TEVOKSkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAobWVtY21wIChidWYsIGxpbnV4X2Nsb25l Ml9jb2RlLCBMSU5VWF9DTE9ORV9QUkVfU0xPVFMgKiAxNikgIT0gMCkKKysgICAgcmV0dXJuIDA7 CisrCisrICAvKiBBZGp1c3QgdGhlIGV4cGVjdGVkICJfZXhpdCIgYWRkcmVzcy4gICovCisrICBt aW5zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoIl9leGl0IiwgTlVMTCk7CisrICBp ZiAobWluc3ltID09IE5VTEwpCisrICAgIHJldHVybiAwOworKworKyAgaW5zdHIgPSBzbG90Tl9j b250ZW50cyAoJmJ1ZltMSU5VWF9DTE9ORV9QUkVfU0xPVFMgKiAxNl0sIDIpOworKyAgaW5zdHIg Jj0gfigoKDFMIDw8IDIwKSAtIDEpIDw8IDEzKTsKKysgIC8qIEFkZHJlc3MgaXMgcmVsYXRpdmUg dG8gdGhlIGp1bXAgaW5zdHJ1Y3Rpb24gc2xvdCwgbm90IHRoZSBuZXh0IG9uZS4gICovCisrICBp bnN0ciB8PSAoKChTWU1CT0xfVkFMVUVfQUREUkVTUyAobWluc3ltKSAtIChwYyAmIH4weGZMKSkg Pj4gNCkKKysJICAgICYgKCgxTCA8PCAyMCkgLSAxKSkgPDwgMTM7CisrICByZXBsYWNlX3Nsb3RO X2NvbnRlbnRzICgmYnVmW0xJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2XSwgaW5zdHIsIDIpOwor KworKyAgaWYgKG1lbWNtcCAoJmJ1ZltMSU5VWF9DTE9ORV9QUkVfU0xPVFMgKiAxNl0sCisrICAg ICAgICAgICAgICAmbGludXhfY2xvbmUyX2NvZGVbTElOVVhfQ0xPTkVfUFJFX1NMT1RTICogMTZd LAorKwkgICAgICBMSU5VWF9DTE9ORV9MRU4gLSAoTElOVVhfQ0xPTkVfUFJFX1NMT1RTICogMTYp KSAhPSAwKQorKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVybiAxOworK30KKysKKytzdGF0aWMg aW50CisraWE2NF9vdXRlcm1vc3RfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1l KQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7CisrICBj aGFyICpuYW1lOworKworKyAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsIE5V TEwsIE5VTEwpOworKworKyAgLyogSWYgd2UgaGF2ZSBOQU1FLCB3ZSBjYW4gb3B0aW1pemUgdGhl IHNlYXJjaC4KKysgICAgIGBjbG9uZScgTkFNRSBzdGlsbCBuZWVkcyB0byBoYXZlIHRoZSBjb2Rl IGNoZWNrZWQgYXMgaXRzIG5hbWUgbWF5IGJlCisrICAgICBwcmVzZW50IGluIHRoZSB1c2VyIGNv ZGUuCisrICAgICBgX19jbG9uZScgTkFNRSBzaG91bGQgbm90IGJlIHByZXNlbnQgaW4gdGhlIHVz ZXIgY29kZSBidXQgaW4gdGhlIGluaXRpYWwKKysgICAgIHBhcnRzIG9mIHRoZSBgX19jbG9uZScg aW1wbGVtZW50YXRpb24gdGhlIHVud2luZCBzdGlsbCBtYWtlcyBzZW5zZS4KKysgICAgIE1vcmUg ZGV0YWlsZWQgdW53aW5kaW5nIGRlY2lzaW9uIHdvdWxkIGJlIHRvbyBtdWNoIHNlbnNpdGl2ZSB0 byBwb3NzaWJsZQorKyAgICAgc3VidGxlIGNoYW5nZXMgaW4gc3BlY2lmaWMgZ2xpYmMgcmV2aXNp b25zLiAgKi8KKysgIGlmIChuYW1lID09IE5VTEwgfHwgc3RyY21wIChuYW1lLCAiY2xvbmUyIikg PT0gMAorKyAgICAgIHx8IHN0cmNtcCAoIl9fY2xvbmUyIiwgbmFtZSkgPT0gMCkKKysgICAgcmV0 dXJuIChpYTY0X2xpbnV4X2Nsb25lMl9ydW5uaW5nICh0aGlzX2ZyYW1lKSAhPSAwKTsKKysKKysg IHJldHVybiAwOworK30KKysKKytzdGF0aWMgdm9pZAorK2lhNjRfY2xvbmUyX2ZyYW1lX3RoaXNf aWQgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKKysJ CQkgICBzdHJ1Y3QgZnJhbWVfaWQgKnRoaXNfaWQpCisreworKyAgLyogTGVhdmUgdGhlIGRlZmF1 bHQgb3V0ZXJtb3N0IGZyYW1lIGF0ICpUSElTX0lELiAgKi8KKyt9CisrCisrc3RhdGljIHN0cnVj dCB2YWx1ZSAqCisraWE2NF9jbG9uZTJfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1l X2luZm8gKnRoaXNfZnJhbWUsCisrCQkJCSB2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkK Kyt7CisrICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9yZWdpc3RlciAodGhpc19mcmFtZSwgcmVn bnVtLCByZWdudW0pOworK30KKysKKytzdGF0aWMgaW50CisraWE2NF9jbG9uZTJfZnJhbWVfc25p ZmZlciAoY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCAqc2VsZiwKKysJCQkgICBzdHJ1Y3QgZnJh bWVfaW5mbyAqdGhpc19mcmFtZSwKKysJCQkgICB2b2lkICoqdGhpc19wcm9sb2d1ZV9jYWNoZSkK Kyt7CisrICBpZiAoaWE2NF9vdXRlcm1vc3RfZnJhbWUgKHRoaXNfZnJhbWUpKQorKyAgICByZXR1 cm4gMTsKKysKKysgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1l X3Vud2luZCBpYTY0X2Nsb25lMl9mcmFtZV91bndpbmQgPQorK3sKKysgIE5PUk1BTF9GUkFNRSwK KysgICZpYTY0X2Nsb25lMl9mcmFtZV90aGlzX2lkLAorKyAgJmlhNjRfY2xvbmUyX2ZyYW1lX3By ZXZfcmVnaXN0ZXIsCisrICBOVUxMLAorKyAgJmlhNjRfY2xvbmUyX2ZyYW1lX3NuaWZmZXIKKyt9 OworKworIC8qIFNpZ25hbCB0cmFtcG9saW5lcy4gICovCisgCisgc3RhdGljIHZvaWQKK0BAIC0z ODI0LDYgKzM5NTUsNyBAQCBpYTY0X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBp bmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCisgICBzZXRfZ2RiYXJjaF9kdW1teV9p ZCAoZ2RiYXJjaCwgaWE2NF9kdW1teV9pZCk7CisgCisgICBzZXRfZ2RiYXJjaF91bndpbmRfcGMg KGdkYmFyY2gsIGlhNjRfdW53aW5kX3BjKTsKKysgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5k ZXIgKGdkYmFyY2gsICZpYTY0X2Nsb25lMl9mcmFtZV91bndpbmQpOworICNpZmRlZiBIQVZFX0xJ QlVOV0lORF9JQTY0X0gKKyAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWE2NF9saWJ1bndpbmRfc2lndHJh bXBfZnJhbWVfdW53aW5kKTsKIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90ZXN0c3Vp dGUvZ2RiLnRocmVhZHMvYnQtY2xvbmUtc3RvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCgpkaWZmIC0tZ2l0IGEvZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5w YXRjaAppbmRleCAzMmNiY2EzLi5mMDdmN2VjIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQt bG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaApA QCAtNDgsNyArNDgsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS5j CiAgCiAgCiAgaW50ICgqZGVwcmVjYXRlZF91aV9sb2FkX3Byb2dyZXNzX2hvb2spIChjb25zdCBj aGFyICpzZWN0aW9uLCB1bnNpZ25lZCBsb25nIG51bSk7Ci1AQCAtMTY3Myw4ICsxNjc1LDM1MiBA QCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCitAQCAtMTY3Myw4ICsx Njc1LDM1MyBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCiAgICBy ZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTI1OCw3ICsyNTgsOCBAQCBJbmRleDogZ2RiLTYuOC41 MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS5jCiArCiArCSAgLyogQmFzZSBwYWNrYWdlIG5hbWUgZm9y IGBkZWJ1Z2luZm8taW5zdGFsbCcuICBXZSBkbyBub3QgdXNlIHRoZQogKwkgICAgIGB5dW0nIGNv bW1hbmQgZGlyZWN0bHkgYXMgdGhlIGxpbmUKLSsJCSB5dW0gLS1lbmFibGVyZXBvPScqLWRlYnVn aW5mbycgaW5zdGFsbCBOQU1FLWRlYnVnaW5mby5BUkNICisrCQkgeXVtIC0tZGlzYWJsZXJlcG89 JyonIC0tZW5hYmxlcmVwbz0nKi1kZWJ1Z2luZm8nIFwKKysJCSAgICAgaW5zdGFsbCBOQU1FLWRl YnVnaW5mby5BUkNICiArCSAgICAgd291bGQgYmUgbW9yZSBjb21wbGljYXRlZCB0aGFuIGp1c3Q6 CiArCQkgZGVidWdpbmZvLWluc3RhbGwgTkFNRS1WRVJTSU9OLVJFTEVBU0UuQVJDSAogKwkgICAg IERvIG5vdCBzdXBwbHkgdGhlIHJwbSBiYXNlIG5hbWUgKGRlcml2ZWQgZnJvbSAuc3JjLnJwbSBu YW1lKSBhcwpAQCAtMzk4LDcgKzM5OSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dk Yi9zeW1maWxlLmMKICsKICAvKiBUaGlzIE1JU1NJTkdfRklMRVBBSVJfSEFTSCB0cmFja2VyIGlz IHVzZWQgb25seSBmb3IgdGhlIGR1cGxpY2l0ZSBtZXNzYWdlcwogLSAgICAgVHJ5IHRvIGluc3Rh bGwgdGhlIGhhc2ggZmlsZSAuLi4KLSsgICAgIHl1bSAtLWVuYWJsZXJlcG89JyotZGVidWdpbmZv JyBpbnN0YWxsIC4uLgorKyAgICAgeXVtIC0tZGlzYWJsZXJlcG89JyonIC0tZW5hYmxlcmVwbz0n Ki1kZWJ1Z2luZm8nIGluc3RhbGwgLi4uCiAgICAgYXZvaWRhbmNlLiAgKi8KICAKICBzdHJ1Y3Qg bWlzc2luZ19maWxlcGFpcgpAQCAtNDIwLDcgKzQyMSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIw MDkwOTA5L2dkYi9zeW1maWxlLmMKICAgIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOwogIH0K ICAKLUBAIC0xNzk5LDE0ICsyMTUxLDMzIEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNo YXIgKmJpbmFyeSwKK0BAIC0xNzk5LDE0ICsyMTUxLDM0IEBAIGRlYnVnX3ByaW50X21pc3Npbmcg KGNvbnN0IGNoYXIgKmJpbmFyeSwKICAKICAgICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsKICAK QEAgLTQ1Niw3ICs0NTcsOCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmls ZS5jCiArCQkJICAgIF8oIk1pc3Npbmcgc2VwYXJhdGUgZGVidWdpbmZvIGZvciAlc1xuIiksIGJp bmFyeSk7CiArICAgICAgICBpZiAoZGVidWcgIT0gTlVMTCkKICsJICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csIF8oIlRyeTogJXMgJXNcbiIpLAotKwkJCSAgICAgICJ5dW0gLS1lbmFi bGVyZXBvPScqLWRlYnVnaW5mbycgaW5zdGFsbCIsIGRlYnVnKTsKKysJCQkgICAgICAieXVtIC0t ZGlzYWJsZXJlcG89JyonIC0tZW5hYmxlcmVwbz0nKi1kZWJ1Z2luZm8nIgorKwkJCSAgICAgICIg aW5zdGFsbCIsIGRlYnVnKTsKICsgICAgICB9CiAgfQogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjYt YnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4 IGVkYzUyYmQuLjVmMjY3OWMgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0 Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUlu ZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9jb3JlbG93LmMKK0luZGV4OiBnZGItNy4wL2dk Yi9jb3JlbG93LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2Ri L2NvcmVsb3cuYwkyMDA5LTA3LTMxIDE3OjI1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02 LjguOTEuMjAwOTA5MjUvZ2RiL2NvcmVsb3cuYwkyMDA5LTA5LTI1IDA5OjM5OjA5LjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjAub3JpZy9nZGIvY29yZWxvdy5jCTIwMDktMDctMzEgMTc6MjU6 MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMC9nZGIvY29yZWxvdy5jCTIwMDktMTAtMjMg MDA6MTc6MjkuMDAwMDAwMDAwICswMjAwCiBAQCAtNDUsNiArNDUsMTAgQEAKICAjaW5jbHVkZSAi ZXhjZXB0aW9ucy5oIgogICNpbmNsdWRlICJzb2xpYi5oIgpAQCAtOTEsMTEgKzkxLDExIEBAIElu ZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9jb3JlbG93LmMKICsJCQkgICBOVUxMLCBOVUxM LCBOVUxMLAogKwkJCSAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwogIH0KLUluZGV4OiBnZGItNi44 LjkxLjIwMDkwOTI1L2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy4wL2dkYi9kb2Mv Z2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDA5LTA5LTI1IDA5OjI5OjU4LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5LTA5LTI1IDA5OjI5 OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEzODk1LDYgKzEzODk1LDI3IEBAIGluZm9ybWF0aW9u IGZpbGVzLgorLS0tIGdkYi03LjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMTAtMjMg MDA6MTI6MzkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMC9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICswMjAwCitAQCAtMTM4OTYsNiArMTM4OTYs MjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCiAgCiAgQGVuZCB0YWJsZQogIApAQCAtMTIzLDEwICsx MjMsMTAgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL2RvYy9nZGIudGV4aW5mbwog IEBjaW5kZXggQGNvZGV7LmdudV9kZWJ1Z2xpbmt9IHNlY3Rpb25zCiAgQGNpbmRleCBkZWJ1ZyBs aW5rIHNlY3Rpb25zCiAgQSBkZWJ1ZyBsaW5rIGlzIGEgc3BlY2lhbCBzZWN0aW9uIG9mIHRoZSBl eGVjdXRhYmxlIGZpbGUgbmFtZWQKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zb2xp Yi1zdnI0LmMKK0luZGV4OiBnZGItNy4wL2dkYi9zb2xpYi1zdnI0LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDA5LTA5LTI1IDA5 OjI5OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3NvbGli LXN2cjQuYwkyMDA5LTA5LTI1IDA5OjQzOjE0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAu b3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMDktMTAtMjMgMDA6MTI6MzguMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMC9nZGIvc29saWItc3ZyNC5jCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAw MDAwICswMjAwCiBAQCAtMTEwMSw5ICsxMTAxLDQ5IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQp CiAgCQkgICAgIHNhZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsKICAJICBlbHNlCkBAIC0xODAsMTAg KzE4MCwxMCBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc29saWItc3ZyNC5jCiAg CSAgICB9CiAgCSAgeGZyZWUgKGJ1ZmZlcik7CiAgCi1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDky NS9nZGIvc3ltZmlsZS5jCitJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOS0wOS0yNSAw OToyOTo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1m aWxlLmMJMjAwOS0wOS0yNSAwOToyOTo1OC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLm9y aWcvZ2RiL3N5bWZpbGUuYwkyMDA5LTEwLTIzIDAwOjEyOjM4LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjAvZ2RiL3N5bWZpbGUuYwkyMDA5LTEwLTIzIDAwOjQzOjI4LjAwMDAwMDAwMCArMDIw MAogQEAgLTU2LDYgKzU2LDcgQEAKICAjaW5jbHVkZSAiZWxmLWJmZC5oIgogICNpbmNsdWRlICJz b2xpYi5oIgpAQCAtNjE4LDcgKzYxOCw3IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dk Yi9zeW1maWxlLmMKICAKICAgIGlmIChmb3VuZCA9PSBOVUxMKQogICAgICB3YXJuaW5nIChfKCJG aWxlIFwiJXNcIiBoYXMgbm8gYnVpbGQtaWQsIGZpbGUgc2tpcHBlZCIpLCBmaWxlbmFtZSk7Ci1A QCAtMTIzNCw4ICsxNjI2LDkgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFt ZSwgcworQEAgLTEyMzQsMTQgKzE2MjYsMTYgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFy ICpmaWxlbmFtZSwgcwogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC02MjgsNDggKzYyOCw3 NyBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmlsZS5jCiArYnVpbGRfaWRf dG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQsIGNoYXIgKipsaW5rX3JldHVy biwKICsJCSAgICAgIGludCBhZGRfZGVidWdfc3VmZml4KQogIHsKLSAgIGNoYXIgKmxpbmssICpz LCAqcmV0dmFsID0gTlVMTDsKLSAgIGdkYl9ieXRlICpkYXRhID0gYnVpbGRfaWQtPmRhdGE7Ci1A QCAtMTI0Myw3ICsxNjM2LDkgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBi dWlsZAorICAgY2hhciAqbGluaywgKmRlYnVnZGlyLCAqcmV0dmFsID0gTlVMTDsKKysgIGNoYXIg KmxpbmtfYWxsID0gTlVMTDsKICAKICAgIC8qIERFQlVHX0ZJTEVfRElSRUNUT1JZLy5idWlsZC1p ZC9hYi9jZGVmICovCi0gICBsaW5rID0geG1hbGxvYyAoc3RybGVuIChkZWJ1Z19maWxlX2RpcmVj dG9yeSkgKyAoc2l6ZW9mICIvLmJ1aWxkLWlkLyIgLSAxKSArIDEKLS0JCSAgKyAyICogc2l6ZSAr IChzaXplb2YgIi5kZWJ1ZyIgLSAxKSArIDEpOwotKwkJICArIDIgKiBzaXplCi0rCQkgICsgKGFk ZF9kZWJ1Z19zdWZmaXggPyBzaXplb2YgIi5kZWJ1ZyIgLSAxIDogMCkKLSsJCSAgKyAxKTsKLSAg IHMgPSBsaW5rICsgc3ByaW50ZiAobGluaywgIiVzLy5idWlsZC1pZC8iLCBkZWJ1Z19maWxlX2Rp cmVjdG9yeSk7Ci0gICBpZiAoc2l6ZSA+IDApCi0gICAgIHsKLUBAIC0xMjU0LDEyICsxNjQ5LDE0 IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKLSAgICAgKnMrKyA9 ICcvJzsKLSAgIHdoaWxlIChzaXplLS0gPiAwKQotICAgICBzICs9IHNwcmludGYgKHMsICIlMDJ4 IiwgKHVuc2lnbmVkKSAqZGF0YSsrKTsKLS0gIHN0cmNweSAocywgIi5kZWJ1ZyIpOwotKyAgaWYg KGFkZF9kZWJ1Z19zdWZmaXgpCi0rICAgIHN0cmNweSAocywgIi5kZWJ1ZyIpOwotKyAgZWxzZQot KyAgICAqcyA9IDA7CistICBsaW5rID0gYWxsb2NhIChzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0 b3J5KSArIChzaXplb2YgIi8uYnVpbGQtaWQvIiAtIDEpICsgMQorLQkJICsgMiAqIGJ1aWxkX2lk LT5zaXplICsgKHNpemVvZiAiLmRlYnVnIiAtIDEpICsgMSk7CisrICBsaW5rID0geG1hbGxvYyAo c3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAoc2l6ZW9mICIvLmJ1aWxkLWlkLyIgLSAx KSArIDEKKysJCSAgKyAyICogYnVpbGRfaWQtPnNpemUgKyAoc2l6ZW9mICIuZGVidWciIC0gMSkg KyAxKTsKKyAKKyAgIC8qIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVH X0ZJTEVfRElSRUNUT1JZIGJlaW5nICIiIHdpbGwKKyAgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4u LiIgbG9va3Vwcy4gICovCitAQCAtMTI3Miw3ICsxNjY2LDEwIEBAIGJ1aWxkX2lkX3RvX2RlYnVn X2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKKyAJKnMrKyA9ICcvJzsKKyAgICAgICB3aGlsZSAoc2l6 ZS0tID4gMCkKKyAJcyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7 CistICAgICAgc3RyY3B5IChzLCAiLmRlYnVnIik7CisrICAgICAgaWYgKGFkZF9kZWJ1Z19zdWZm aXgpCisrCXN0cmNweSAocywgIi5kZWJ1ZyIpOworKyAgICAgIGVsc2UKKysJKnMgPSAwOworIAor ICAgICAgIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxseSBu b24tZXhpc3RlbnQgZmlsZXMuICAqLworICAgICAgIGlmIChhY2Nlc3MgKGxpbmssIEZfT0spID09 IDApCitAQCAtMTI4NSwxNSArMTY4MiwxODUgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUg KHN0cnVjdCBidWlsZAorIAl9CiAgCi0gICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZl biBmb3IgdGhlIHVzdWFsbHkgbm9uLWV4aXN0ZW50IGZpbGVzLiAgKi8KLSAgIGlmIChhY2Nlc3Mg KGxpbmssIEZfT0spID09IDApCi0gICAgIHJldHZhbCA9IGxyZWFscGF0aCAobGluayk7Ci0tICB4 ZnJlZSAobGluayk7CisgICAgICAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQlicmVhazsKKysJewor KwkgIC8qIExJTktfQUxMIGlzIG5vdCB1c2VkIGJlbG93IGluIHRoaXMgbm9uLU5VTEwgUkVUVkFM IGNhc2UuICAqLworKwkgIGJyZWFrOworKwl9CisrCisrCWlmIChsaW5rX2FsbCA9PSBOVUxMKQor KwkgIGxpbmtfYWxsID0geHN0cmR1cCAobGluayk7CisrCWVsc2UKKysJICB7CisrCSAgICBzaXpl X3QgbGVuX29yaWcgPSBzdHJsZW4gKGxpbmtfYWxsKTsKKysKKysJICAgIGxpbmtfYWxsID0geHJl YWxsb2MgKGxpbmtfYWxsLCBsZW5fb3JpZyArIDEgKyBzdHJsZW4gKGxpbmspICsgMSk7CisrCisr CSAgICAvKiBVc2Ugd2hpdGVzcGFjZSBpbnN0ZWFkIG9mIERJUk5BTUVfU0VQQVJBVE9SIHRvIGJl IGNvbXBhdGlibGUgd2l0aAorKwkgICAgICAgaXRzIHBvc3NpYmxlIHVzZSBhcyBhbiBhcmd1bWVu dCBmb3IgaW5zdGFsbGF0aW9uIGNvbW1hbmQuICAqLworKwkgICAgbGlua19hbGxbbGVuX29yaWdd ID0gJyAnOworKworKwkgICAgc3RyY3B5ICgmbGlua19hbGxbbGVuX29yaWcgKyAxXSwgbGluayk7 CisrCSAgfQogIAotICAgaWYgKHJldHZhbCAhPSBOVUxMICYmICFidWlsZF9pZF92ZXJpZnkgKHJl dHZhbCwgYnVpbGRfaWQpKQotICAgICB7Ci1AQCAtMTI2Nyw5ICsxNjY0LDE1MCBAQCBidWlsZF9p ZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCi0gICAgICAgcmV0dmFsID0gTlVMTDsK KyAgICAgICBkZWJ1Z2RpciA9IGRlYnVnZGlyX2VuZDsKICAgICAgfQorICAgd2hpbGUgKCpkZWJ1 Z2RpciAhPSAwKTsKICAKICsgIGlmIChsaW5rX3JldHVybiAhPSBOVUxMKQotKyAgICAqbGlua19y ZXR1cm4gPSBsaW5rOwotKyAgZWxzZQotKyAgICB4ZnJlZSAobGluayk7CisrICAgIHsKKysgICAg ICBpZiAocmV0dmFsICE9IE5VTEwpCisrICAgICAgIHsKKysgICAgICAgICAqbGlua19yZXR1cm4g PSBsaW5rOworKyAgICAgICAgIGxpbmsgPSBOVUxMOworKyAgICAgICB9CisrICAgICAgZWxzZQor KyAgICAgICB7CisrICAgICAgICAgKmxpbmtfcmV0dXJuID0gbGlua19hbGw7CisrICAgICAgICAg bGlua19hbGwgPSBOVUxMOworKyAgICAgICB9CisrICAgIH0KKysgIHhmcmVlIChsaW5rKTsKKysg IHhmcmVlIChsaW5rX2FsbCk7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KICsKLSAgIHJldHVy biByZXR2YWw7Ci0gfQotIAogKy8qIFRoaXMgTUlTU0lOR19GSUxFUEFJUl9IQVNIIHRyYWNrZXIg aXMgdXNlZCBvbmx5IGZvciB0aGUgZHVwbGljaXRlIG1lc3NhZ2VzCiArICAgICBUcnkgdG8gaW5z dGFsbCB0aGUgaGFzaCBmaWxlIC4uLgogKyAgIGF2b2lkYW5jZS4gICovCkBAIC02OTIsOSArNzIx LDkgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3N5bWZpbGUuYwogKwogKyAgcmV0 dmFsID0gb2JzdGFja19hbGxvYyAoJm1pc3NpbmdfZmlsZXBhaXJfb2JzdGFjaywgc2l6ZSk7CiAr ICBtZW1zZXQgKHJldHZhbCwgMCwgc2l6ZSk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKKyAg IHJldHVybiByZXR2YWw7CisgfQorIAogK3N0YXRpYyBoYXNodmFsX3QKICttaXNzaW5nX2ZpbGVw YWlyX2hhc2hfZnVuYyAoY29uc3Qgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIgKmVsZW0pCiArewpA QCAtODA5LDIwICs4MzgsNyBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmls ZS5jCiAgc3RhdGljIGNoYXIgKgogIGdldF9kZWJ1Z19saW5rX2luZm8gKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCB1bnNpZ25lZCBsb25nICpjcmMzMl9vdXQpCiAgewotQEAgLTEzNTIsMzIgKzE4 OTAsMzYgQEAgc3RhdGljIGNoYXIgKgotIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCi0gewotICAgYXNlY3Rpb24gKnNlY3Q7Ci0tICBjaGFyICpiYXNl bmFtZTsKLS0gIGNoYXIgKmRpcjsKLS0gIGNoYXIgKmRlYnVnZmlsZTsKLSsgIGNoYXIgKmJhc2Vu YW1lID0gTlVMTDsKLSsgIGNoYXIgKmRpciA9IE5VTEw7Ci0rICBjaGFyICpkZWJ1Z2ZpbGUgPSBO VUxMOwotICAgY2hhciAqbmFtZV9jb3B5OwotLSAgY2hhciAqY2Fub25fbmFtZTsKLSsgIGNoYXIg KmNhbm9uX25hbWUgPSBOVUxMOwotICAgYmZkX3NpemVfdHlwZSBkZWJ1Z2xpbmtfc2l6ZTsKK0BA IC0xMzg0LDEzICsxOTUxLDE0IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9i amZpbGUKICAgIHVuc2lnbmVkIGxvbmcgY3JjMzI7CiAgICBpbnQgaTsKICAgIHN0cnVjdCBidWls ZF9pZCAqYnVpbGRfaWQ7CkBAIC04MzksMTIzICs4NTUsMzQgQEAgSW5kZXg6IGdkYi02LjguOTEu MjAwOTA5MjUvZ2RiL3N5bWZpbGUuYwogICAgICAgIHhmcmVlIChidWlsZF9pZCk7CiAgICAgICAg LyogUHJldmVudCBsb29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVnIGZpbGUuICAqLwogICAgICAg IGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwgJiYgc3RyY21wIChidWlsZF9pZF9uYW1lLCBvYmpm aWxlLT5uYW1lKSA9PSAwKQotICAgICAgICAgewotLQkgIHdhcm5pbmcgKF8oIlwiJXNcIjogc2Vw YXJhdGUgZGVidWcgaW5mbyBmaWxlIGhhcyBubyBkZWJ1ZyBpbmZvIiksCi0rCSAgd2FybmluZyAo XygiXCIlc1wiOiBUaGUgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlIGhhcyBubyBkZWJ1ZyBpbmZv IiksCi0gCQkgICBidWlsZF9pZF9uYW1lKTsKK0BAIC0xNDAwLDcgKzE5NjgsMTAgQEAgZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQogIAkgIHhmcmVlIChidWlsZF9pZF9u YW1lKTsKICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCkKIC0gICAg ICAgIHJldHVybiBidWlsZF9pZF9uYW1lOwotKyAgICAgICAgeworKwl7CiArCSAgeGZyZWUgKGJ1 aWxkX2lkX2ZpbGVuYW1lKTsKICsJICByZXR1cm4gYnVpbGRfaWRfbmFtZTsKICsJfQogICAgICB9 CiAgCiAgICBiYXNlbmFtZSA9IGdldF9kZWJ1Z19saW5rX2luZm8gKG9iamZpbGUsICZjcmMzMik7 Ci1AQCAtMTM4NSw3ICsxOTI3LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qg b2JqZmlsZQotICAgaWYgKGJhc2VuYW1lID09IE5VTEwpCi0gICAgIC8qIFRoZXJlJ3Mgbm8gc2Vw YXJhdGUgZGVidWcgaW5mbywgaGVuY2UgdGhlcmUncyBubyB3YXkgd2UgY291bGQKLSAgICAgICAg bG9hZCBpdCA9PiBubyB3YXJuaW5nLiAgKi8KLS0gICAgcmV0dXJuIE5VTEw7Ci0rICAgIGdvdG8g Y2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOwotIAotICAgZGlyID0geHN0cmR1cCAob2JqZmlsZS0+ bmFtZSk7Ci0gCi1AQCAtMTQwNywyNCArMTk0OSwxOSBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGUgKHN0cnVjdCBvYmpmaWxlCi0gICBpZiAoY2Fub25fbmFtZSAmJiBzdHJsZW4gKGNhbm9uX25h bWUpID4gaSkKLSAgICAgaSA9IHN0cmxlbiAoY2Fub25fbmFtZSk7Ci0gCi0tICBkZWJ1Z2ZpbGUg PSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsgMQotLSAgICAgICAgICAg ICAgICAgICAgICArIGkKLS0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKERFQlVHX1NV QkRJUkVDVE9SWSkKLS0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKCIvIikKLS0gICAg ICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKGJhc2VuYW1lKQotLSAgICAgICAgICAgICAgICAg ICAgICArIDEpOwotKyAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChkZWJ1Z19maWxlX2Rp cmVjdG9yeSkgKyAxCi0rCQkgICAgICAgKyBpCi0rCQkgICAgICAgKyBzdHJsZW4gKERFQlVHX1NV QkRJUkVDVE9SWSkKLSsJCSAgICAgICArIHN0cmxlbiAoIi8iKQotKwkJICAgICAgICsgc3RybGVu IChiYXNlbmFtZSkKLSsJCSAgICAgICArIDEpOwotIAotICAgLyogRmlyc3QgdHJ5IGluIHRoZSBz YW1lIGRpcmVjdG9yeSBhcyB0aGUgb3JpZ2luYWwgZmlsZS4gICovCi0gICBzdHJjcHkgKGRlYnVn ZmlsZSwgZGlyKTsKLSAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0gCi0gICBpZiAo c2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5h bWUpKQotLSAgICB7Ci0tICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKLS0gICAgICB4ZnJlZSAoZGly KTsKLS0gICAgICB4ZnJlZSAoY2Fub25fbmFtZSk7Ci0tICAgICAgcmV0dXJuIHhzdHJkdXAgKGRl YnVnZmlsZSk7Ci0tICAgIH0KLSsgICAgZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7Ci0g Ci0gICAvKiBUaGVuIHRyeSBpbiB0aGUgc3ViZGlyZWN0b3J5IG5hbWVkIERFQlVHX1NVQkRJUkVD VE9SWS4gICovCi0gICBzdHJjcHkgKGRlYnVnZmlsZSwgZGlyKTsKLUBAIC0xNDMzLDEyICsxOTcw LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQotICAgc3RyY2F0 IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4 aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0tICAgIHsKLS0gICAgICB4 ZnJlZSAoYmFzZW5hbWUpOwotLSAgICAgIHhmcmVlIChkaXIpOwotLSAgICAgIHhmcmVlIChjYW5v bl9uYW1lKTsKLS0gICAgICByZXR1cm4geHN0cmR1cCAoZGVidWdmaWxlKTsKLS0gICAgfQotKyAg ICBnb3RvIGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAKLSAgIC8qIFRoZW4gdHJ5IGluIHRo ZSBnbG9iYWwgZGVidWdmaWxlIGRpcmVjdG9yeS4gICovCi0gICBzdHJjcHkgKGRlYnVnZmlsZSwg ZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotQEAgLTE0NDcsMTIgKzE5NzksNyBAQCBmaW5kX3NlcGFy YXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlCi0gICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFz ZW5hbWUpOwotIAotICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUs IGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkKLS0gICAgewotLSAgICAgIHhmcmVlIChiYXNlbmFtZSk7 Ci0tICAgICAgeGZyZWUgKGRpcik7Ci0tICAgICAgeGZyZWUgKGNhbm9uX25hbWUpOwotLSAgICAg IHJldHVybiB4c3RyZHVwIChkZWJ1Z2ZpbGUpOwotLSAgICB9Ci0rICAgIGdvdG8gY2xlYW51cF9y ZXR1cm5fZGVidWdmaWxlOwotIAotICAgLyogSWYgdGhlIGZpbGUgaXMgaW4gdGhlIHN5c3Jvb3Qs IHRyeSB1c2luZyBpdHMgYmFzZSBwYXRoIGluIHRoZQotICAgICAgZ2xvYmFsIGRlYnVnZmlsZSBk aXJlY3RvcnkuICAqLwotQEAgLTE0NjYsMjAgKzE5OTMsMTggQEAgZmluZF9zZXBhcmF0ZV9kZWJ1 Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQotICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFt ZSk7Ci0gCi0gICAgICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUs IGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkKLS0JewotLQkgIHhmcmVlIChjYW5vbl9uYW1lKTsKLS0J ICB4ZnJlZSAoYmFzZW5hbWUpOwotLQkgIHhmcmVlIChkaXIpOwotLQkgIHJldHVybiB4c3RyZHVw IChkZWJ1Z2ZpbGUpOwotLQl9Ci0rCWdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOwotICAg ICB9CitAQCAtMTUwMSw4ICsyMDcyLDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3Ry dWN0IG9iamZpbGUKICAgIAotLSAgaWYgKGNhbm9uX25hbWUpCi0tICAgIHhmcmVlIChjYW5vbl9u YW1lKTsKLSsgIGRlYnVnZmlsZSA9IE5VTEw7CisgICB4ZnJlZSAoZGVidWdmaWxlKTsKKyAgIGRl YnVnZmlsZSA9IE5VTEw7CiArICBkZWJ1Z19wcmludF9taXNzaW5nIChvYmpmaWxlLT5uYW1lLCBi dWlsZF9pZF9maWxlbmFtZSk7CiAgCi0rY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOgorIGNsZWFu dXBfcmV0dXJuX2RlYnVnZmlsZToKICsgIHhmcmVlIChidWlsZF9pZF9maWxlbmFtZSk7Ci0rICB4 ZnJlZSAoY2Fub25fbmFtZSk7CisgICB4ZnJlZSAoY2Fub25fbmFtZSk7CiAgICB4ZnJlZSAoYmFz ZW5hbWUpOwogICAgeGZyZWUgKGRpcik7Ci0tICByZXR1cm4gTlVMTDsKLSsgIHJldHVybiBkZWJ1 Z2ZpbGU7Ci0gfQotIAotIAotQEAgLTQyMjksNCArNDc1NCwxNiBAQCB0aGUgZ2xvYmFsIGRlYnVn LWZpbGUgZGlyZWN0b3J5IHByZXBlbmRlCitAQCAtNDI1Niw0ICs0ODI5LDE2IEBAIGVhY2ggZ2xv YmFsIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGNvbXBvbmUKICAJCQkJICAgICBOVUxMLAogIAkJCQkg ICAgIHNob3dfZGVidWdfZmlsZV9kaXJlY3RvcnksCiAgCQkJCSAgICAgJnNldGxpc3QsICZzaG93 bGlzdCk7Ci0rIAorKwogKyAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoImJ1aWxkLWlkLXZl cmJvc2UiLCBub19jbGFzcywgJmJ1aWxkX2lkX3ZlcmJvc2UsCiArIAkJCSAgICBfKCJcCiArIFNl dCBkZWJ1Z2dpbmcgbGV2ZWwgb2YgdGhlIGJ1aWxkLWlkIGxvY2F0b3IuIiksIF8oIlwKQEAgLTk2 NSwxMyArODkyLDEzIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmMK ICsgCQkJICAgIE5VTEwsCiArIAkJCSAgICBzaG93X2J1aWxkX2lkX3ZlcmJvc2UsCiArIAkJCSAg ICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSsgCisrCiArICAgb2JzZXJ2ZXJfYXR0YWNoX2V4ZWN1 dGFibGVfY2hhbmdlZCAoZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFuZ2VkKTsKICB9Ci1JbmRl eDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuMC9nZGIv c3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkyNS5vcmlnL2dkYi9z eW1maWxlLmgJMjAwOS0wOS0yNSAwOToyOTo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44 LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxlLmgJMjAwOS0wOS0yNSAwOToyOTo1OC4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy4wLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDA5LTEwLTIzIDAwOjEyOjM4 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjAvZ2RiL3N5bWZpbGUuaAkyMDA5LTEwLTIzIDAw OjE3OjI5LjAwMDAwMDAwMCArMDIwMAogQEAgLTM4MSw2ICszODEsMTMgQEAgZXh0ZXJuIGludCBz eW1maWxlX21hcF9vZmZzZXRzX3RvX3NlZ21lbgogIHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0 YSAqZ2V0X3N5bWZpbGVfc2VnbWVudF9kYXRhIChiZmQgKmFiZmQpOwogIHZvaWQgZnJlZV9zeW1m aWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHN5bWZpbGVfc2VnbWVudF9kYXRhICpkYXRhKTsKQEAg LTk4NiwxMCArOTEzLDEwIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi9zeW1maWxl LmgKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAogIGV4dGVybiBpbnQgZHdhcmYyX2hhc19p bmZvIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy4wL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTI1Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTA5LTI1IDA5OjI5OjU3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTA5LTI1 IDA5OjI5OjU4LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAub3JpZy9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCTIwMDktMTAtMjMgMDA6MTI6MzguMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAw MDAwICswMjAwCiBAQCAtMTI0OCw2ICsxMjQ4LDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQg eyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0K QEAgLTEwMDcsMTAgKzkzNCwxMCBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHJldHVybiAwOwogIH0KICAKLUluZGV4OiBnZGItNi44 LjkxLjIwMDkwOTI1L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2Ri LTcuMC9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAky MDA5LTA5LTE1IDIwOjUxOjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5 MjUvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAwOS0wOS0yNSAwOToyOTo1OC4w MDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3Vw cG9ydC5leHAJMjAwOS0wOS0xNSAyMDo1MToyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4w L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAw MDAwMDAwICswMjAwCiBAQCAtMjIxLDYgKzIyMSwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0 YXJ0IHsgYXJncyB9IHsKICAJICAgIH0KICAgICAgCX0KQEAgLTEwMjgsMTAgKzk1NSwxMCBAQCBJ bmRleDogZ2RiLTYuOC45MS4yMDA5MDkyNS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4 cAogIAogICAgICBkZXRlY3RfYXN5bmMKICAKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTI1L2dk Yi9vYmpmaWxlcy5oCitJbmRleDogZ2RiLTcuMC9nZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi02LjguOTEuMjAwOTA5MjUub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDA5LTA5LTI1IDA5 OjI5OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MjUvZ2RiL29iamZp bGVzLmgJMjAwOS0wOS0yNSAwOTozODoyNy4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLm9y aWcvZ2RiL29iamZpbGVzLmgJMjAwOS0xMC0yMyAwMDoxMjozOC4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4wL2dkYi9vYmpmaWxlcy5oCTIwMDktMTAtMjMgMDA6MTc6MjkuMDAwMDAwMDAwICsw MjAwCiBAQCAtNDI4LDYgKzQyOCwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQogIAogICNkZWZpbmUgT0JK Rl9NQUlOICgxIDw8IDcpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJl c3VsdHMucGF0Y2ggYi9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAppbmRl eCA3NWY2OGIzLi44MWUwYzAyIDEwMDY0NAotLS0gYS9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUt cmVzdWx0cy5wYXRjaAorKysgYi9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRj aApAQCAtMTAyLDMgKzEwMiwxNTQgQEAgZnJhbWVzLWludmFsaWQgY2FuIGhhcHBlbiBhc3luY2hy b25vdXNseS4KICAKICBzZXQgdGltZW91dCAkb2xkdGltZW91dAogIHJldHVybiAwCisKKworCito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMi9tc2cwMDIzNC5odG1s CitTdWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0ZTogRml4IGEgcmFjZSBieSBtZSAtIHdhdGNodGhy ZWFkcy1yZW9yZGVyLmV4cAorCitIaSwKKwordGhlcmUgaXMgYSBidWcgZXhwbGFpbmFibGUgYnkg bWFuIHB0aHJlYWRfY29uZF9zaWduYWw6CisJVGhlIFsuLi5dIHB0aHJlYWRfY29uZF9zaWduYWwo KSBmdW5jdGlvbnMgc2hhbGwgaGF2ZSBubyBlZmZlY3QgaWYKKwl0aGVyZSBhcmUgbm8gdGhyZWFk cyBjdXJyZW50bHkgYmxvY2tlZCBvbiBjb25kLgorCittZWFuaW5nIGEgcmFjZSBmb3IgdGhlIHRl c3RjYXNlLgorCStGQUlMOiBnZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5leHA6IHJl b3JkZXIxOiBjb250aW51ZSBhICh0aW1lb3V0KQorCitPbmUgY2FuIHJlcHJvZHVjZSB0aGUgcmFj ZSBvbiBDVlMgSEVBRCBieToKKyMJLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRj aHRocmVhZHMtcmVvcmRlci5jCisjCSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0 Y2h0aHJlYWRzLXJlb3JkZXIuYworIwlAQCAtODksNiArODksNyBAQCB0aHJlYWQxX2Z1bmMgKHZv aWQgKnVudXNlZCkKKyMJICAgaW50IGk7CisjCSAgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7 CisjCSAKKyMJK3NsZWVwKDEpOworIwkgICB0aHJlYWQxX3RpZCA9IGdldHRpZCAoKTsKKyMJICAg aSA9IHB0aHJlYWRfY29uZF9zaWduYWwgKCZ0aHJlYWQxX3RpZF9jb25kKTsKKyMJICAgYXNzZXJ0 IChpID09IDApOworIwlAQCAtMzE3LDYgKzMxOCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikKKyMJIAorIwkgICBpZiAodGhyZWFkMV90aWQgPT0gMCkKKyMJICAgICB7CisjCStzbGVl cCgyKTsKKyMJICAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDFfdGlkX2NvbmQs ICZ0aHJlYWQxX3RpZF9tdXRleCk7CisjCSAgICAgICBhc3NlcnQgKGkgPT0gMCk7CisjCSAKKwor Rml4ZWQ7IGdkYnN0b3BfbXV0ZXggZ290IHJlbW92ZWQgYXMgaXQgYmVjYW1lIHJlZHVuZGFudCB0 aGVyZS4KKworR29pbmcgdG8gY2hlY2sgaXQgaW4gYXMgb2J2aW91cyBpbiBzZXZlcmFsIGRheXMg KGNvZGUgaXMgYnkgbWUgKyBpdCBpcyBqdXN0CithIHRlc3RjYXNlKS4KKworCitTb3JyeSwKK0ph bgorCisKK2dkYi90ZXN0c3VpdGUvCisyMDA5LTEyLTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9y ZGVyLmMgKGdkYnN0b3BfbXV0ZXgpOiBSZW1vdmUuCisJKHRocmVhZDFfZnVuYyk6IFByb3RlY3Qg dGhyZWFkMV90aWRfY29uZCBieSB0aHJlYWQxX3RpZF9tdXRleC4gIFJlbW92ZQorCWdkYnN0b3Bf bXV0ZXggaGFuZGxpbmcuCisJKHRocmVhZDJfZnVuYyk6IFByb3RlY3QgdGhyZWFkMl90aWRfY29u ZCBieSB0aHJlYWQyX3RpZF9tdXRleC4gIFJlbW92ZQorCWdkYnN0b3BfbXV0ZXggaGFuZGxpbmcu CisJKG1haW4pOiBNb3ZlIHRocmVhZDFfdGlkX211dGV4IGFuZCB0aHJlYWQyX3RpZF9tdXRleCBs b2NrcyBiZWZvcmUKKwlwdGhyZWFkX2NyZWF0ZS4gIFJlbW92ZSBnZGJzdG9wX211dGV4IGhhbmRs aW5nLiAgTmV3IGNvbW1lbnQuICBSZW1vdmUKKwlwdGhyZWFkX2NvbmRfd2FpdCBjb25kaXRpb25h bGl6YXRpb25zLgorCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFk cy1yZW9yZGVyLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRz LXJlb3JkZXIuYworQEAgLTM0LDggKzM0LDYgQEAKKyAgICBvdGhlcndpc2UuICAqLworICNkZWZp bmUgVElNRU9VVCAoZ2V0dGlkICgpID09IGdldHBpZCgpID8gMTAgOiAxNSkKKyAKKy1zdGF0aWMg cHRocmVhZF9tdXRleF90IGdkYnN0b3BfbXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hFQ0tfTVVURVhf SU5JVElBTElaRVJfTlA7CistCisgc3RhdGljIHBpZF90IHRocmVhZDFfdGlkOworIHN0YXRpYyBw dGhyZWFkX2NvbmRfdCB0aHJlYWQxX3RpZF9jb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVS OworIHN0YXRpYyBwdGhyZWFkX211dGV4X3QgdGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFEX0VS Uk9SQ0hFQ0tfTVVURVhfSU5JVElBTElaRVJfTlA7CitAQCAtOTAsMTIgKzg4LDExIEBAIHRocmVh ZDFfZnVuYyAodm9pZCAqdW51c2VkKQorICAgdm9sYXRpbGUgaW50IHJ3YXRjaF9zdG9yZTsKKyAK KyAgIHRocmVhZDFfdGlkID0gZ2V0dGlkICgpOworKworKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRo cmVhZDFfdGlkX211dGV4KTsKKyAgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMV90 aWRfY29uZCk7CisgICBhc3NlcnQgKGkgPT0gMCk7CistCistICAvKiBCZSBzdXJlIEdEQiBpcyBh bHJlYWR5IHN0b3BwZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLworLSAgdGltZWRfbXV0ZXhfbG9j ayAoJmdkYnN0b3BfbXV0ZXgpOworLSAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3Rv cF9tdXRleCk7CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0aHJlYWQxX3RpZF9tdXRl eCk7CisgICBhc3NlcnQgKGkgPT0gMCk7CisgCisgICByd2F0Y2hfc3RvcmUgPSB0aHJlYWQxX3J3 YXRjaDsKK0BAIC0xMTUsMTIgKzExMiwxMSBAQCB0aHJlYWQyX2Z1bmMgKHZvaWQgKnVudXNlZCkK KyAgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7CisgCisgICB0aHJlYWQyX3RpZCA9IGdldHRp ZCAoKTsKKysKKysgIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7CisgICBp ID0gcHRocmVhZF9jb25kX3NpZ25hbCAoJnRocmVhZDJfdGlkX2NvbmQpOworICAgYXNzZXJ0IChp ID09IDApOworLQorLSAgLyogQmUgc3VyZSBHREIgaXMgYWxyZWFkeSBzdG9wcGVkIGJlZm9yZSBj b250aW51aW5nLiAgKi8KKy0gIHRpbWVkX211dGV4X2xvY2sgKCZnZGJzdG9wX211dGV4KTsKKy0g IGkgPSBwdGhyZWFkX211dGV4X3VubG9jayAoJmdkYnN0b3BfbXV0ZXgpOworKyAgaSA9IHB0aHJl YWRfbXV0ZXhfdW5sb2NrICgmdGhyZWFkMl90aWRfbXV0ZXgpOworICAgYXNzZXJ0IChpID09IDAp OworIAorICAgcndhdGNoX3N0b3JlID0gdGhyZWFkMl9yd2F0Y2g7CitAQCAtMjY3LDcgKzI2Myw4 IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAgIHNldGJ1ZiAoc3Rkb3V0LCBO VUxMKTsKKyAKKy0gIHRpbWVkX211dGV4X2xvY2sgKCZnZGJzdG9wX211dGV4KTsKKysgIHRpbWVk X211dGV4X2xvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICB0aW1lZF9tdXRleF9sb2NrICgm dGhyZWFkMl90aWRfbXV0ZXgpOworIAorICAgdGltZWRfbXV0ZXhfbG9jayAoJnRlcm1pbmF0ZV9t dXRleCk7CisgCitAQCAtMzA2LDMwICszMDMsMjEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQorICAgICAgIHN0YXRlX3dhaXQgKHRyYWNlciwgIlQgKHN0b3BwZWQpIik7CisgICAgIH0K KyAKKy0gIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7CistICB0aW1lZF9t dXRleF9sb2NrICgmdGhyZWFkMl90aWRfbXV0ZXgpOworLQorLSAgLyogTGV0IHRoZSB0aHJlYWRz IHN0YXJ0LiAgKi8KKy0gIGkgPSBwdGhyZWFkX211dGV4X3VubG9jayAoJmdkYnN0b3BfbXV0ZXgp OworLSAgYXNzZXJ0IChpID09IDApOworKyAgLyogVGhyZWFkcyBhcmUgbm93IHdhaXRpbmcgYXQg dGltZWRfbXV0ZXhfbG9jayAodGhyZWFkMV90aWRfbXV0ZXgpIGFuZCBzbworKyAgICAgdGhleSBj b3VsZCBub3QgdHJpZ2dlciB0aGUgd2F0Y2hwb2ludHMgYmVmb3JlIEdEQiBnZXRzIHVuc3RvcHBl ZCBsYXRlci4KKysgICAgIFRocmVhZHMgZ2V0IHJlc3VtZWQgYXQgcHRocmVhZF9jb25kX3dhaXQg YmVsb3cuICAqLworIAorICAgcHJpbnRmICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGluaXRp YWxpemUgdGhlaXIgVElEcy5cbiIpOworIAorLSAgaWYgKHRocmVhZDFfdGlkID09IDApCistICAg IHsKKy0gICAgICBpID0gcHRocmVhZF9jb25kX3dhaXQgKCZ0aHJlYWQxX3RpZF9jb25kLCAmdGhy ZWFkMV90aWRfbXV0ZXgpOworLSAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysgIGkgPSBwdGhyZWFk X2NvbmRfd2FpdCAoJnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICBh c3NlcnQgKGkgPT0gMCk7CisgCistICAgICAgYXNzZXJ0ICh0aHJlYWQxX3RpZCA+IDApOworLSAg ICB9CisrICBhc3NlcnQgKHRocmVhZDFfdGlkID4gMCk7CisgCistICBpZiAodGhyZWFkMl90aWQg PT0gMCkKKy0gICAgeworLSAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDJfdGlk X2NvbmQsICZ0aHJlYWQyX3RpZF9tdXRleCk7CistICAgICAgYXNzZXJ0IChpID09IDApOworKyAg aSA9IHB0aHJlYWRfY29uZF93YWl0ICgmdGhyZWFkMl90aWRfY29uZCwgJnRocmVhZDJfdGlkX211 dGV4KTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKyAKKy0gICAgICBhc3NlcnQgKHRocmVhZDJfdGlk ID4gMCk7CistICAgIH0KKysgIGFzc2VydCAodGhyZWFkMl90aWQgPiAwKTsKKyAKKyAgIHByaW50 ZiAoIlRocmVhZCAxIFRJRCA9ICVsdSwgdGhyZWFkIDIgVElEID0gJWx1LCBQSUQgPSAlbHUuXG4i LAorIAkgICh1bnNpZ25lZCBsb25nKSB0aHJlYWQxX3RpZCwgKHVuc2lnbmVkIGxvbmcpIHRocmVh ZDJfdGlkLAorCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaCBiL2dk Yi02LjgtaW5saW5pbmctYWRkb24ucGF0Y2gKaW5kZXggNGVkY2QxYS4uN2U4OTljYSAxMDA2NDQK LS0tIGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaAorKysgYi9nZGItNi44LWlubGluaW5n LWFkZG9uLnBhdGNoCkBAIC0yMzYsMTkgKzIzNiwxOSBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5 MDkxNy9nZGIvYnJlYWtwb2ludC5jCiAgICAgIHsKICAgICAgICBpbnQgdmFsdWVfaXNfemVybyA9 IDA7CiAgICAgICAgCi1AQCAtMzM4Myw2ICszMzk4LDEyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAo Q09SRV9BRERSIGJwX2FkZHIsIHAKLSAJICAgIGJzLT5wcmludCA9IDA7Ci0gCSAgfQotIAlicy0+ Y29tbWFuZHMgPSBjb3B5X2NvbW1hbmRfbGluZXMgKGJzLT5jb21tYW5kcyk7CitAQCAtMzM5OSw2 ICszMzk5LDEyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoQ09SRV9BRERSIGJwX2FkZHIsIHAKKyAJ CSAgYnMtPnByaW50ID0gMDsKKyAJCX0KKyAJICAgICAgYnMtPmNvbW1hbmRzID0gY29weV9jb21t YW5kX2xpbmVzIChicy0+Y29tbWFuZHMpOwogKwotKwkvKiBEaXNwbGF5IHRoZSBpbm5lcm1vc3Qg aW5saW5lZCBmcmFtZSBhdCBhIGJyZWFrcG9udCBhcyBpdCBnaXZlcyB0bwotKwkgICBtb3N0IG9m IHRoZSBhdmFpbGFibGUgaW5mb3JtYXRpb24uICAqLwotKwlpZiAoYi0+dHlwZSAhPSBicF91bnRp bCAmJiBiLT50eXBlICE9IGJwX2ZpbmlzaCkKLSsJICB3aGlsZSAoaW5saW5lX3NraXBwZWRfZnJh bWVzIChwdGlkKSkKLSsJICAgIHN0ZXBfaW50b19pbmxpbmVfZnJhbWUgKHB0aWQpOwotICAgICAg IH0KLSAKLSAgICAgLyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250IHN0 b3Agb3IgaWYgd2UgZG9udCBwcmludC4gICovCisrCSAgICAgIC8qIERpc3BsYXkgdGhlIGlubmVy bW9zdCBpbmxpbmVkIGZyYW1lIGF0IGEgYnJlYWtwb250IGFzIGl0IGdpdmVzIHRvCisrCQkgbW9z dCBvZiB0aGUgYXZhaWxhYmxlIGluZm9ybWF0aW9uLiAgKi8KKysJICAgICAgaWYgKGItPnR5cGUg IT0gYnBfdW50aWwgJiYgYi0+dHlwZSAhPSBicF9maW5pc2gpCisrCQl3aGlsZSAoaW5saW5lX3Nr aXBwZWRfZnJhbWVzIChwdGlkKSkKKysJCSAgc3RlcF9pbnRvX2lubGluZV9mcmFtZSAocHRpZCk7 CisgCSAgICB9CisgCisgCSAgLyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBk b250IHN0b3Agb3IgaWYgd2UgZG9udCBwcmludC4gICovCiBAQCAtNTU3Miw5ICs1NTkzLDkgQEAg c2V0X21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaAogIHsKICAgIHN0cnVjdCBi cmVha3BvaW50ICpiOwoKZGlmZiAtLWdpdCBhL2dkYi03LjAtdXBzdHJlYW0ucGF0Y2ggYi9nZGIt Ny4wLXVwc3RyZWFtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZi ZGQwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItNy4wLXVwc3RyZWFtLnBhdGNoCkBAIC0wLDAg KzEsMjI5IEBACisKKworCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAw OS0xMS9tc2cwMDM4OC5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5 LTExL21zZzAwMTU2Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IGNyYXNoIG9uIHJlYWRpbmcg c3RhYnMKKworSGksCisKK3RoZXJlIGlzIGEgY3Jhc2ggb24gcmVhZGluZyBzdGFicyBmcGMgYmlu YXJ5OgorCWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTM3ODM3 CisKK1Byb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4K KzB4MDAwMDAwMDAwMDY5ZGIzZCBpbiByZWFkX2RieF9zeW10YWIgKG9iamZpbGU9MHgxZGFmNWYw KSBhdCBkYnhyZWFkLmM6MTM2OQorMTM2OSAgICAgICAgICAgICAgaWYgKChuYW1lc3RyaW5nWzBd ID09ICctJyAmJiBuYW1lc3RyaW5nWzFdID09ICdsJykKKworKGdkYikgcC94IG5saXN0Lm5fc3Ry eAorJDcgPSAweGZmZmZmZmY4CisoZ2RiKSBwIHNpemVvZihubGlzdC5uX3N0cngpCiskMTAgPSA4 CisKK0JlbG93IHRoZSBwYXRjaCBjb250ZXh0IGlzOgorICAgIG5hbWVzdHJpbmcgPSAobmxpc3Qt Pm5fc3RyeCArIGZpbGVfc3RyaW5nX3RhYmxlX29mZnNldAorICAgICAgICAgICAgICAgICAgKyBE QlhfU1RSSU5HVEFCIChvYmpmaWxlKSk7CisKK3NvIElNTyB0aGUgYCh1bnNpZ25lZCknIGNhc3Qg aXMgZXhjZXNzaXZlIGFzIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBleHByZXNzaW9uCitiZWxvdy4g IFN1Y2ggY2FzdCBpcyB0aGVyZSBzaW5jZSB0aGUgR0RCICJJbml0aWFsIHJldmlzaW9uIiAoMTk5 OSkuCisKK2BuX3N0cngnIHR5cGU6CitzdHJ1Y3QgaW50ZXJuYWxfbmxpc3QKK3sKKyAgdW5zaWdu ZWQgbG9uZyBuX3N0cng7ICAgICAgICAgICAgICAgICAvKiBJbmRleCBpbnRvIHN0cmluZyB0YWJs ZSBvZiBuYW1lLiAgKi8KKy4uLgorfTsKKworUmVncmVzc2lvbiB0ZXN0ZWQgb24ge3g4Nl82NCx4 ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudSB3aGljaCBkb2VzIG5vdAorbWVhbiBh bnl0aGluZyB3aXRoIHRoZSBkZWZhdWx0IERXQVJGIGRlYnVnIGluZm8uICBJdCB3YXMgaGFuZ2lu ZyBmb3Igc3RhYnMgc28KK3RyaWVkIGp1c3QgYSBsYXJnZSBwYXJ0IG9mIGdkYi5iYXNlLyouZXhw IG9uIHg4Nl82NC1tMzIgLSBgdW5peC8tZ3N0YWJzKy8tbTMyJy4KKworSWYgaXQgaXNuJ3Qgb2J2 aW91c2x5IGFwcHJvdmVkIHBsZWFzZSBmZWVsIGZyZWUgdG8gZHJvcCBpdCBhcyBvbmUgc2hvdWxk IG5vdAordXNlIFNUQUJTIGluIHRoZSBmaXJzdCBwbGFjZS4KKworCitSZWdhcmRzLAorSmFuCisK KworZ2RiLworMjAwOS0xMS0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorCisJKiBkYnhyZWFkLmMgKHNldF9uYW1lc3RyaW5nKTogUmVtb3ZlIGNhc3QgdG8g dW5zaWduZWQuICBDaGVjayBOX1NUUlgKKwlvdmVyZmxvdy4KKworLS0tIGEvZ2RiL2RieHJlYWQu YworKysrIGIvZ2RiL2RieHJlYWQuYworQEAgLTk2NSw4ICs5NjUsOSBAQCBzZXRfbmFtZXN0cmlu ZyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IHN0cnVjdCBpbnRlcm5hbF9ubGlzdCAq bmxpc3QpCisgeworICAgY2hhciAqbmFtZXN0cmluZzsKKyAKKy0gIGlmICgoKHVuc2lnbmVkKSBu bGlzdC0+bl9zdHJ4ICsgZmlsZV9zdHJpbmdfdGFibGVfb2Zmc2V0KQorLSAgICAgID49IERCWF9T VFJJTkdUQUJfU0laRSAob2JqZmlsZSkpCisrICBpZiAobmxpc3QtPm5fc3RyeCArIGZpbGVfc3Ry aW5nX3RhYmxlX29mZnNldAorKyAgICAgID49IERCWF9TVFJJTkdUQUJfU0laRSAob2JqZmlsZSkK KysgICAgICB8fCBubGlzdC0+bl9zdHJ4ICsgZmlsZV9zdHJpbmdfdGFibGVfb2Zmc2V0IDwgbmxp c3QtPm5fc3RyeCkKKyAgICAgeworICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50 cywgXygiYmFkIHN0cmluZyB0YWJsZSBvZmZzZXQgaW4gc3ltYm9sICVkIiksCisgCQkgc3ltbnVt KTsKKworCisKK1JlOiBbUkZBXSBGaXggInNob3cgY29udmVuaWVuY2UiIHRlc3QKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTA5L21zZzAwNTY1Lmh0bWwKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMDkvbXNnMDAwOTkuaHRtbAorCisjIyMg c3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMDkvMDkvMTUgMTg6NTE6MjUJMS4xOTYwCisj IyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMDkvMDkvMTcgMTc6NDk6NDYJMS4xOTYx CisjIyAtMSwzICsxLDcgQEAKKysyMDA5LTA5LTE3ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhu aWtvdkBnb29nbGUuY29tPgorKworKwkqIGdkYi5iYXNlL2RlZmF1bHQuZXhwOiBGaXggInNob3cg Y29udmVuaWVuY2UiLgorKworIDIwMDktMDktMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0 LmNvbT4KKyAKKyAJKiBsaWIvbWktc3VwcG9ydC5leHAgKG1pX2NyZWF0ZV92YXJvYmopOiBVcGRh dGUuCistLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAJMjAwOS8wOC8x MyAxNDo1ODoyNwkxLjMxCisrKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5l eHAJMjAwOS8wOS8xNyAxNzo0OTo0NgkxLjMyCitAQCAtNTk4LDcgKzU5OCw3IEBACisgI3Rlc3Qg c2hvdyBjb25maXJtCisgZ2RiX3Rlc3QgInNob3cgY29uZmlybSIgIldoZXRoZXIgdG8gY29uZmly bSBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3BlcmF0aW9ucyBpcyBvXFthLXpcXSouIiAic2hvdyBj b25maXJtIgorICN0ZXN0IHNob3cgY29udmVuaWVuY2UKKy1nZGJfdGVzdCAic2hvdyBjb252ZW5p ZW5jZSIgIk5vIGRlYnVnZ2VyIGNvbnZlbmllbmNlIHZhcmlhYmxlcyBub3cgZGVmaW5lZC4oXFte XHJcblxdKlxbXHJcblxdKStDb252ZW5pZW5jZSB2YXJpYWJsZXMgaGF2ZSBuYW1lcyBzdGFydGlu ZyB3aXRoIFwiLlwiOyhcW15cclxuXF0qXFtcclxuXF0pK3VzZSBcInNldFwiIGFzIGluIFwic2V0 IC5mb28gPSA1XCIgdG8gZGVmaW5lIHRoZW0uIiAic2hvdyBjb252ZW5pZW5jZSIKKytnZGJfdGVz dCAic2hvdyBjb252ZW5pZW5jZSIgIlxcXCRfc2lnaW5mbyA9IHZvaWQiICJzaG93IGNvbnZlbmll bmNlIgorICN0ZXN0IHNob3cgZGlyZWN0b3JpZXMKKyBnZGJfdGVzdCAic2hvdyBkaXJlY3Rvcmll cyIgIlNvdXJjZSBkaXJlY3RvcmllcyBzZWFyY2hlZDogLmNkaXJcWzo7XF0uY3dkIiAic2hvdyBk aXJlY3RvcmllcyIKKyAjdGVzdCBzaG93IGVkaXRpbmcKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VM b2cJMjAwOS8wOS8xNSAxODo1MToyNAkxLjk1MworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwky MDA5LzA5LzE3IDE3OjQ5OjQ2CTEuOTU0CisjIyAtMSwzICsxLDggQEAKKysyMDA5LTA5LTE3ICBQ YXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgorKworKwkqIGdkYi50ZXhp bmZvIChjb252ZW5pbmNlIHZhcmlhYmxlcyk6IE1lbnRpb24KKysJJF9zaWdpbmZvIGNvdWxkIGJl IGVtcHR5LgorKwkKKyAyMDA5LTA5LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+ CisgCisgCSogZ2RiLnRleGluZm8gKEdEQi9NSSBWYXJpYWJsZSBPYmplY3RzKTogRG9jdW1lbnQK Ky0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5LzA5LzE1IDE4OjUxOjI1CTEuNjI0Cisr Kysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAwOS8wOS8xNyAxNzo0OTo0NgkxLjYyNQorQEAg LTc4MTksOCArNzgxOSwxMCBAQAorIAorIEBpdGVtICRfc2lnaW5mbworIEB2aW5kZXggJF9zaWdp bmZvQHJ7LCBjb252ZW5pZW5jZSB2YXJpYWJsZX0KKy1UaGUgdmFyaWFibGUgQGNvZGV7JF9zaWdp bmZvfSBpcyBib3VuZCB0byBleHRyYSBzaWduYWwgaW5mb3JtYXRpb24KKy1pbnNwZWN0aW9uIChA cHhyZWZ7ZXh0cmEgc2lnbmFsIGluZm9ybWF0aW9ufSkuCisrVGhlIHZhcmlhYmxlIEBjb2RleyRf c2lnaW5mb30gY29udGFpbnMgZXh0cmEgc2lnbmFsIGluZm9ybWF0aW9uCisrKEBweHJlZntleHRy YSBzaWduYWwgaW5mb3JtYXRpb259KS4gIE5vdGUgdGhhdCBAY29kZXskX3NpZ2luZm99CisrY291 bGQgYmUgZW1wdHksIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgbm90IHlldCByZWNlaXZlZCBhbnkg c2lnbmFscy4KKytGb3IgZXhhbXBsZSwgaXQgd2lsbCBiZSBlbXB0eSBiZWZvcmUgeW91IGV4ZWN1 dGUgdGhlIEBjb2Rle3J1bn0gY29tbWFuZC4KKyBAZW5kIHRhYmxlCisgCisgT24gSFAtVVggc3lz dGVtcywgaWYgeW91IHJlZmVyIHRvIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgbmFtZSB0aGF0CisK KworCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTEyL21zZzAwMTI4Lmh0 bWwKKworIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDA5LzEyLzIzIDIzOjE4OjA4 CTEuMjA1NAorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDA5LzEyLzI0IDIxOjU3 OjA2CTEuMjA1NQorIyMgLTEsMyArMSwxMCBAQAorKzIwMDktMTItMjQgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJRml4IGNvbXBhdGliaWxpdHkgd2l0 aCBHKystNC41LgorKwkqIGdkYi5jcC9leHBhbmQtc2Fscy5jYyAobWFpbik6IFJlbW92ZSB0aGUg ImV4aXQtbGluZSIgY29tbWVudC4KKysJKiBnZGIuY3AvZXhwYW5kLXNhbHMuZXhwOiBSZW1vdmUg YnJlYWtwb2ludCBvbiAiZXhpdC1saW5lIi4KKysJKHVuY2F1Z2h0IHJldHVybik6IFJlbW92ZS4K KysKKyAyMDA5LTEyLTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisgCSAgICBQaGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgorIAorLS0tIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5jYwkyMDA5LzA1LzExIDE1OjA1OjU2 CTEuMQorKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5jYwkyMDA5LzEy LzI0IDIxOjU3OjA2CTEuMgorQEAgLTQ5LDUgKzQ5LDUgQEAKKyAgIEEgYTsKKyAgIEIgYjsKKyAK Ky0gIHJldHVybiAwOwkvKiBleGl0LWxpbmUgKi8KKysgIHJldHVybiAwOworIH0KKy0tLSBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhwYW5kLXNhbHMuZXhwCTIwMDkvMDUvMTEgMTU6MDU6NTYJ MS4xCisrKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4cGFuZC1zYWxzLmV4cAkyMDA5LzEy LzI0IDIxOjU3OjA2CTEuMgorQEAgLTIzLDggKzIzLDYgQEAKKyAgICAgcmV0dXJuIC0xCisgfQor IAorLWdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJleGl0LWxpbmUiXQorLQor IGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jLWxpbmUiXQorIGdkYl9j b250aW51ZV90b19icmVha3BvaW50ICJmdW5jIiAiLipmdW5jLWxpbmUuKiIKKyAKK0BAIC01Miw3 ICs1MCwzIEBACisgCSAiYnQgZnJvbSBBIgorIAorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJuZXh0IGNhbGxlciBmdW5jIiAiLipmdW5jLWxpbmUuKiIKKy0KKy0jIFZlcmlmeSBHREIgcmVh bGx5IGNvdWxkIG5vdCBjYXRjaCBhbnkgb3RoZXIgYnJlYWtwb2ludCBsb2NhdGlvbi4KKy0KKy1n ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidW5jYXVnaHQgcmV0dXJuIiAiLipleGl0LWxpbmUu KiIKKworCisKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMTEvbXNnMDAy MTMuaHRtbAorCitbIGN1dCBdCisKKy0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb25k YnJlYWsuZXhwCTIwMDkvMDEvMDMgMDU6NTg6MDMJMS4xMworKysrIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2NvbmRicmVhay5leHAJMjAwOS8xMS8yNSAyMDo0MzoyOQkxLjE0CitAQCAtMjA3 LDEwICsyMDcsMTAgQEAKKyBzZXR1cF94ZmFpbCBocHBhMi4wdy0qLSogMTE1MTJDTExicworIHNl bmRfZ2RiICJjb250aW51ZVxuIgorIGdkYl9leHBlY3QgeworLSAgICAtcmUgIkNvbnRpbnVpbmdc XC4uKkJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtlcjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxl MTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KS4qKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0 aW9uOSlcW1x0IFxdKy4qIiB7CisrICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBc WzAtOVxdKywgbWFya2VyMiBcXChhPTQzXFwpIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb244 fCRicF9sb2NhdGlvbjkpLiooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KVxbXHQgXF0rLiok Z2RiX3Byb21wdCAkIiB7CisgCXBhc3MgInJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjIi CisgICAgIH0KKy0gICAgLXJlICJDb250aW51aW5nXFwuLipCcmVha3BvaW50IFxbMC05XF0rLCAk aGV4IGluIG1hcmtlcjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwk YnBfbG9jYXRpb245KS4qKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcW1x0IFxdKy4qIiB7 CisrICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgJGhleCBpbiBt YXJrZXIyIFxcKGE9NDNcXCkgYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0 aW9uOSkuKigkYnBfbG9jYXRpb244fCRicF9sb2NhdGlvbjkpXFtcdCBcXSsuKiRnZGJfcHJvbXB0 ICQiIHsKKyAJeGZhaWwgInJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjIiCisgICAgIH0K KyAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7CisKKworCitGaXggZm9yIGdmb3J0cmFuLTQuMToK KyAgLVBBU1M6IGdkYi5taS9taS12YXItY2hpbGQtZi5leHA6IG1pIHJ1bnRvIE1BSU5fXworICAr RkFJTDogZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cDogbWkgcnVudG8gTUFJTl9fICh1bmtub3du IG91dHB1dCBhZnRlciBydW5uaW5nKQorCitSRkM6IE1vdmUgbGFuZ3VhZ2UtY2hhbmdlZCBtZXNz YWdlIHRvIHZlcmJvc2UKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5 LTExL21zZzAwMDMxLmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDkt MTEvbXNnMDAwMzQuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAwOS8xMS8wNSAxOTo1 MzowMwkxLjExMDMwCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAwOS8xMS8wNSAyMDo0Mzo1Mgkx LjExMDMxCisjIyAtMSwzICsxLDggQEAKKysyMDA5LTExLTA1ICBEYW5pZWwgSmFjb2Jvd2l0eiAg PGRhbkBjb2Rlc291cmNlcnkuY29tPgorKworKwkqIHRvcC5jIChleGVjdXRlX2NvbW1hbmQpOiBT ZWxlY3QgYSBmcmFtZSBiZWZvcmUgY2hlY2tpbmcgdGhlIGN1cnJlbnQKKysJbGFuZ3VhZ2UuICBP bmx5IG91dHB1dCBhIG1lc3NhZ2UgaWYgdmVyYm9zZS4KKysKKyAyMDA5LTExLTA1ICBUb20gVHJv bWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgCisgCSogc3ltdGFiLmggKFNZTUJPTF9TRVRfTElO S0FHRV9OQU1FKTogVXBkYXRlIGNvbW1lbnQuCistLS0gc3JjL2dkYi90b3AuYwkyMDA5LzEwLzE5 IDA5OjUxOjQyCTEuMTcyCisrKysgc3JjL2dkYi90b3AuYwkyMDA5LzExLzA1IDIwOjQzOjUyCTEu MTczCitAQCAtNDU3LDEwICs0NTcsMTMgQEAKKyAKKyAgICAgfQorIAorLSAgLyogVGVsbCB0aGUg dXNlciBpZiB0aGUgbGFuZ3VhZ2UgaGFzIGNoYW5nZWQgKGV4Y2VwdCBmaXJzdCB0aW1lKS4gICov CisrICAvKiBUZWxsIHRoZSB1c2VyIGlmIHRoZSBsYW5ndWFnZSBoYXMgY2hhbmdlZCAoZXhjZXB0 IGZpcnN0IHRpbWUpLgorKyAgICAgRmlyc3QgbWFrZSBzdXJlIHRoYXQgYSBuZXcgZnJhbWUgaGFz IGJlZW4gc2VsZWN0ZWQsIGluIGNhc2UgdGhpcworKyAgICAgY29tbWFuZCBvciB0aGUgaG9va3Mg Y2hhbmdlZCB0aGUgcHJvZ3JhbSBzdGF0ZS4gICovCisrICBkZXByZWNhdGVkX3NhZmVfZ2V0X3Nl bGVjdGVkX2ZyYW1lICgpOworICAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UgIT0gZXhwZWN0ZWRfbGFu Z3VhZ2UpCisgICAgIHsKKy0gICAgICBpZiAobGFuZ3VhZ2VfbW9kZSA9PSBsYW5ndWFnZV9tb2Rl X2F1dG8pCisrICAgICAgaWYgKGxhbmd1YWdlX21vZGUgPT0gbGFuZ3VhZ2VfbW9kZV9hdXRvICYm IGluZm9fdmVyYm9zZSkKKyAJeworIAkgIGxhbmd1YWdlX2luZm8gKDEpOwkvKiBQcmludCB3aGF0 IGNoYW5nZWQuICAqLworIAl9CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtl ZXAtZGlzYWJsZWQucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzdhODg4Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKQEAg LTAsMCArMSwxMjIgQEAKKy0tLSAuL2dkYi9icmVha3BvaW50LmMJMjAwOS0xMi0xOCAwMDoxMzo0 OS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9icmVha3BvaW50LmMJMjAwOS0xMi0xOCAwMDox MzoxNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC04NTYzLDYgKzg1NjMsNDkgQEAgdXBkYXRlX2JyZWFr cG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYQorICAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9s aXN0ICgxKTsKKyB9CisgCisrdm9pZAorK2JyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpCisreworKyAgc3Ry dWN0IGJwX2xvY2F0aW9uICpibCwgKipibHBfdG1wOworKyAgaW50IGNoYW5nZWQgPSAwOworKwor KyAgZ2RiX2Fzc2VydCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9 PSBOVUxMKTsKKysKKysgIEFMTF9CUF9MT0NBVElPTlMgKGJsLCBibHBfdG1wKQorKyAgICB7Cisr ICAgICAgc3RydWN0IG9ial9zZWN0aW9uICpvc2VjdDsKKysKKysgICAgICAvKiBCTC0+U0VDVElP TiBjYW4gYmUgY29ycmVjdGx5IE5VTEwgZm9yIGJyZWFrcG9pbnRzIHdpdGggbXVsdGlwbGUKKysg ICAgICAgICBsb2NhdGlvbnMgZXhwYW5kZWQgdGhyb3VnaCBzeW10YWIuICAqLworKworKyAgICAg IEFMTF9PQkpGSUxFX09TRUNUSU9OUyAob2JqZmlsZSwgb3NlY3QpCisrCXsKKysJICBDT1JFX0FE RFIgcmVsb2NhdGVkX2FkZHJlc3M7CisrCSAgQ09SRV9BRERSIGRlbHRhX29mZnNldDsKKysKKysJ ICBkZWx0YV9vZmZzZXQgPSBBTk9GRlNFVCAoZGVsdGEsIG9zZWN0LT50aGVfYmZkX3NlY3Rpb24t PmluZGV4KTsKKysJICBpZiAoZGVsdGFfb2Zmc2V0ID09IDApCisrCSAgICBjb250aW51ZTsKKysJ ICByZWxvY2F0ZWRfYWRkcmVzcyA9IGJsLT5hZGRyZXNzICsgZGVsdGFfb2Zmc2V0OworKworKwkg IGlmIChvYmpfc2VjdGlvbl9hZGRyIChvc2VjdCkgPD0gcmVsb2NhdGVkX2FkZHJlc3MKKysJICAg ICAgJiYgcmVsb2NhdGVkX2FkZHJlc3MgPCBvYmpfc2VjdGlvbl9lbmRhZGRyIChvc2VjdCkpCisr CSAgICB7CisrCSAgICAgIGlmIChibC0+aW5zZXJ0ZWQpCisrCQlyZW1vdmVfYnJlYWtwb2ludCAo YmwsIG1hcmtfdW5pbnNlcnRlZCk7CisrCisrCSAgICAgIGJsLT5hZGRyZXNzICs9IGRlbHRhX29m ZnNldDsKKysJICAgICAgYmwtPnJlcXVlc3RlZF9hZGRyZXNzICs9IGRlbHRhX29mZnNldDsKKysK KysJICAgICAgY2hhbmdlZCA9IDE7CisrCSAgICB9CisrCX0KKysgICAgfQorKworKyAgaWYgKGNo YW5nZWQpCisrICAgIHFzb3J0IChicF9sb2NhdGlvbiwgYnBfbG9jYXRpb25fY291bnQsIHNpemVv ZiAoKmJwX2xvY2F0aW9uKSwKKysJICAgYnBfbG9jYXRpb25fY29tcGFyZV9mb3JfcXNvcnQpOwor K30KKyAKKyAvKiBSZXNldCBhIGJyZWFrcG9pbnQgZ2l2ZW4gaXQncyBzdHJ1Y3QgYnJlYWtwb2lu dCAqIEJJTlQuCisgICAgVGhlIHZhbHVlIHdlIHJldHVybiBlbmRzIHVwIGJlaW5nIHRoZSByZXR1 cm4gdmFsdWUgZnJvbSBjYXRjaF9lcnJvcnMuCistLS0gLi9nZGIvYnJlYWtwb2ludC5oCTIwMDkt MTItMTggMDA6MTM6NDguMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvYnJlYWtwb2ludC5oCTIw MDktMTItMTcgMjI6MTE6MTAuMDAwMDAwMDAwICswMTAwCitAQCAtOTcwLDQgKzk3MCw3IEBAIGV4 dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAqZ2V0X3RyYWNlcG9pbnQKKyAgICBpcyBuZXdseSBhbGxv Y2F0ZWQ7IHRoZSBjYWxsZXIgc2hvdWxkIGZyZWUgd2hlbiBkb25lIHdpdGggaXQuICAqLworIGV4 dGVybiBWRUMoYnJlYWtwb2ludF9wKSAqYWxsX3RyYWNlcG9pbnRzICh2b2lkKTsKKyAKKytleHRl cm4gdm9pZCBicmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisr CQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOworKworICNlbmRpZiAvKiAhZGVm aW5lZCAoQlJFQUtQT0lOVF9IKSAqLworLS0tIC4vZ2RiL29iamZpbGVzLmMJMjAwOS0xMi0xOCAw MDoxMzo0OC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9vYmpmaWxlcy5jCTIwMDktMTItMTcg MjM6MTk6MjIuMDAwMDAwMDAwICswMTAwCitAQCAtNTQ2LDcgKzU0Niw3IEBAIGZyZWVfYWxsX29i amZpbGVzICh2b2lkKQorIC8qIFJlbG9jYXRlIE9CSkZJTEUgdG8gTkVXX09GRlNFVFMuICBUaGVy ZSBzaG91bGQgYmUgT0JKRklMRS0+TlVNX1NFQ1RJT05TCisgICAgZW50cmllcyBpbiBuZXdfb2Zm c2V0cy4gIFNFUEFSQVRFX0RFQlVHX09CSkZJTEUgaXMgbm90IHRvdWNoZWQgaGVyZS4gICovCisg Cistc3RhdGljIHZvaWQKKytzdGF0aWMgaW50Cisgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKKyB7 CisgICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnM7CitAQCAtNTY1LDcgKzU2NSw3IEBAIG9iamZpbGVf cmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKyAJICBzb21ldGhpbmdfY2hhbmdlZCA9 IDE7CisgICAgICAgfQorICAgICBpZiAoIXNvbWV0aGluZ19jaGFuZ2VkKQorLSAgICAgIHJldHVy bjsKKysgICAgICByZXR1cm4gMDsKKyAgIH0KKyAKKyAgIC8qIE9LLCBnZXQgYWxsIHRoZSBzeW10 YWJzLiAgKi8KK0BAIC03MDYsNiArNzA2LDEzIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmkKKyAgICAgICBleGVjX3NldF9zZWN0aW9uX2FkZHJlc3MgKGJmZF9nZXRf ZmlsZW5hbWUgKG9iamZpbGUtPm9iZmQpLCBpZHgsCisgCQkJCW9ial9zZWN0aW9uX2FkZHIgKHMp KTsKKyAgICAgfQorKworKyAgLyogRmluYWwgY2FsbCBvZiBicmVha3BvaW50X3JlX3NldCBjYW4g a2VlcCBicmVha3BvaW50IGxvY2F0aW9ucyBkaXNhYmxlZCBpZgorKyAgICAgdGhlaXIgYWRkcmVz c2VzIG1hdGNoLiAgKi8KKysgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2Jh Y2tsaW5rID09IE5VTEwpCisrICAgIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChvYmpmaWxlLCBkZWx0 YSk7CisrCisrICByZXR1cm4gMTsKKyB9CisgCisgLyogUmVsb2NhdGUgT0JKRklMRSB0byBORVdf T0ZGU0VUUy4gIFRoZXJlIHNob3VsZCBiZSBPQkpGSUxFLT5OVU1fU0VDVElPTlMKK0BAIC03MjAs NyArNzI3LDkgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQorIHZv aWQKKyBvYmpmaWxlX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNl Y3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMpCisgeworLSAgb2JqZmlsZV9yZWxvY2F0ZTEgKG9i amZpbGUsIG5ld19vZmZzZXRzKTsKKysgIGludCBjaGFuZ2VkID0gMDsKKysKKysgIGNoYW5nZWQg fD0gb2JqZmlsZV9yZWxvY2F0ZTEgKG9iamZpbGUsIG5ld19vZmZzZXRzKTsKKyAKKyAgIGlmIChv YmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlICE9IE5VTEwpCisgICAgIHsKK0BAIC03NDcs MTEgKzc1NiwxMiBAQCBvYmpmaWxlX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCisg CQkJCQkgICAgIG9iamZpbGVfYWRkcnMpOworICAgICAgIGRvX2NsZWFudXBzIChteV9jbGVhbnVw cyk7CisgCistICAgICAgb2JqZmlsZV9yZWxvY2F0ZTEgKGRlYnVnX29iamZpbGUsIG5ld19kZWJ1 Z19vZmZzZXRzKTsKKysgICAgICBjaGFuZ2VkIHw9IG9iamZpbGVfcmVsb2NhdGUxIChkZWJ1Z19v YmpmaWxlLCBuZXdfZGVidWdfb2Zmc2V0cyk7CisgICAgIH0KKyAKKyAgIC8qIFJlbG9jYXRlIGJy ZWFrcG9pbnRzIGFzIG5lY2Vzc2FyeSwgYWZ0ZXIgdGhpbmdzIGFyZSByZWxvY2F0ZWQuICovCist ICBicmVha3BvaW50X3JlX3NldCAoKTsKKysgIGlmIChjaGFuZ2VkKQorKyAgICBicmVha3BvaW50 X3JlX3NldCAoKTsKKyB9CisgDAorIC8qIFJldHVybiBub24temVybyBpZiBPQkpGSUxFIGhhcyBw YXJ0aWFsIHN5bWJvbHMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy5w YXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4zMzA2Yzc3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWFyY2hlci1waWUt YWRkb25zLnBhdGNoCkBAIC0wLDAgKzEsMzEyIEBACistLS0gYS9nZGIvZHdhcmYycmVhZC5jCisr KysgYi9nZGIvZHdhcmYycmVhZC5jCitAQCAtNTc1NCw3ICs1NzU0LDEyIEBAIHJlYWRfY29tbW9u X2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgewor ICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKyAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKy0gIENP UkVfQUREUiBiYXNlID0gKENPUkVfQUREUikgMDsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl ID0gY3UtPm9iamZpbGU7CisrICBDT1JFX0FERFIgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmls ZS0+c2VjdGlvbl9vZmZzZXRzLAorKwkJCQkgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOworKyAg LyogVGhpcyBpcyB1c2VkIG9ubHkgZm9yIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uIGVudHJp ZXMuICAqLworKyAgQ09SRV9BRERSIGJhc2UgPSAwOworKyAgaW50IGJhc2VfcCA9IDA7CisgCisg ICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKKyAgIGlmIChh dHRyKQorQEAgLTU3NjMsNiArNTc2OCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgaWYgKGF0dHJfZm9ybV9p c19ibG9jayAoYXR0cikpCisgCXsKKyAJICBiYXNlID0gZGVjb2RlX2xvY2Rlc2MgKERXX0JMT0NL IChhdHRyKSwgY3UpOworKwkgIGJhc2VfcCA9IDE7CisgCX0KKyAgICAgICBlbHNlIGlmIChhdHRy X2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpKQorIAl7CitAQCAtNTgyNCwxMiArNTgzMCwx NSBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorIAkgICAgICBlbHNlCisgCQlkd2FyZjJfY29tcGxleF9sb2NhdGlvbl9leHBy X2NvbXBsYWludCAoKTsKKyAKKy0JICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkgPSBi YXNlICsgYnl0ZV9vZmZzZXQ7CisrCSAgICAgIGlmICghYmFzZV9wKQorKwkJZHdhcmYyX2ludmFs aWRfYXR0cmliX2NsYXNzX2NvbXBsYWludAorKwkJICAoIkRXX0FUX2RhdGFfbWVtYmVyX2xvY2F0 aW9uIiwgImNvbW1vbiBibG9jayBtZW1iZXIiKTsKKysJICAgICAgU1lNQk9MX1ZBTFVFX0FERFJF U1MgKHN5bSkgPSBiYXNlICsgYnl0ZV9vZmZzZXQgKyBiYXNlYWRkcjsKKyAJICAgICAgYWRkX3N5 bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CisgCSAgICB9CisgCisgCSAgaWYg KFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElDKQorLQkgICAgU0VUX0ZJRUxEX1BIWVNB RERSICgqZmllbGQsIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pKTsKKysJICAgIFNFVF9GSUVM RF9QSFlTQUREUiAoKmZpZWxkLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSAtIGJhc2VhZGRy KTsKKyAJICBlbHNlCisgCSAgICBTRVRfRklFTERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJ TktBR0VfTkFNRSAoc3ltKSk7CisgCSAgRklFTERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBF IChzeW0pOworQEAgLTU4NDMsNyArNTg1Miw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCisgICAgICAgc3ltID0gbmV3 X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CisgICAgICAgLyogU1lNQk9MX1ZBTFVFX0FERFJFU1Mg bmV2ZXIgZ2V0cyB1c2VkIGFzIGFsbCBpdHMgZmllbGRzIGFyZSBzdGF0aWMuICAqLworLSAgICAg IFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID0gYmFzZTsKKysgICAgICBTWU1CT0xfVkFMVUVf QUREUkVTUyAoc3ltKSA9IGJhc2UgKyBiYXNlYWRkcjsKKyAKKyAgICAgICBzZXRfZGllX3R5cGUg KGRpZSwgdHlwZSwgY3UpOworICAgICB9CistLS0gYS9nZGIvZXhlYy5jCisrKysgYi9nZGIvZXhl Yy5jCitAQCAtMzIsNiArMzIsNyBAQAorICNpbmNsdWRlICJleGVjLmgiCisgI2luY2x1ZGUgIm9i c2VydmVyLmgiCisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAic29saWIuaCIK KyAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIK K0BAIC0yMjAsNiArMjIxLDEwIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBp bnQgZnJvbV90dHkpCisgICAgICAgY2hhciAqc2NyYXRjaF9wYXRobmFtZTsKKyAgICAgICBpbnQg c2NyYXRjaF9jaGFuOworICAgICAgIHN0cnVjdCB0YXJnZXRfc2VjdGlvbiAqc2VjdGlvbnMgPSBO VUxMLCAqc2VjdGlvbnNfZW5kID0gTlVMTDsKKysgICAgICBzdHJ1Y3QgdGFyZ2V0X3NlY3Rpb24g KnA7CisrICAgICAgaW50IGFkZHJfYml0OworKyAgICAgIENPUkVfQUREUiBtYXNrID0gQ09SRV9B RERSX01BWDsKKysgICAgICBDT1JFX0FERFIgZGlzcGxhY2VtZW50OworIAorICAgICAgIHNjcmF0 Y2hfY2hhbiA9IG9wZW5wIChnZXRlbnYgKCJQQVRIIiksIE9QRl9UUllfQ1dEX0ZJUlNULCBmaWxl bmFtZSwKKyAJCSAgIHdyaXRlX2ZpbGVzID8gT19SRFdSIHwgT19CSU5BUlkgOiBPX1JET05MWSB8 IE9fQklOQVJZLAorQEAgLTI4OCwxMiArMjkzLDIzIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIg KmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCisgCQkgc2NyYXRjaF9wYXRobmFtZSwgYmZkX2Vycm1z ZyAoYmZkX2dldF9lcnJvciAoKSkpOworIAl9CisgCisrICAgICAgc2V0X2dkYmFyY2hfZnJvbV9m aWxlIChleGVjX2JmZCk7CisrCisrICAgICAgYWRkcl9iaXQgPSBnZGJhcmNoX2FkZHJfYml0ICh0 YXJnZXRfZ2RiYXJjaCk7CisrICAgICAgaWYgKGFkZHJfYml0IDwgKHNpemVvZiAoQ09SRV9BRERS KSAqIEhPU1RfQ0hBUl9CSVQpKQorKwltYXNrID0gKChDT1JFX0FERFIpIDEgPDwgYWRkcl9iaXQp IC0gMTsKKysKKysgICAgICBkaXNwbGFjZW1lbnQgPSBzb2xpYl9leGVjX2Rpc3BsYWNlbWVudCAo KTsKKysgICAgICBmb3IgKHAgPSBzZWN0aW9uczsgcCA8IHNlY3Rpb25zX2VuZDsgcCsrKQorKwl7 CisrCSAgcC0+YWRkciA9IChwLT5hZGRyICsgZGlzcGxhY2VtZW50KSAmIG1hc2s7CisrCSAgcC0+ ZW5kYWRkciA9IChwLT5lbmRhZGRyICsgZGlzcGxhY2VtZW50KSAmIG1hc2s7CisrCX0KKysKKyAg ICAgICBleGVjX2JmZF9tdGltZSA9IGJmZF9nZXRfbXRpbWUgKGV4ZWNfYmZkKTsKKyAKKyAgICAg ICB2YWxpZGF0ZV9maWxlcyAoKTsKKyAKKy0gICAgICBzZXRfZ2RiYXJjaF9mcm9tX2ZpbGUgKGV4 ZWNfYmZkKTsKKy0KKyAgICAgICAvKiBBZGQgdGhlIGV4ZWN1dGFibGUncyBzZWN0aW9ucyB0byB0 aGUgY3VycmVudCBhZGRyZXNzIHNwYWNlcycKKyAJIGxpc3Qgb2Ygc2VjdGlvbnMuICAqLworICAg ICAgIGFkZF90YXJnZXRfc2VjdGlvbnMgKHNlY3Rpb25zLCBzZWN0aW9uc19lbmQpOworLS0tIGEv Z2RiL2dkYnR5cGVzLmgKKysrKyBiL2dkYi9nZGJ0eXBlcy5oCitAQCAtOTY2LDYgKzk2Niw3IEBA IGV4dGVybiB2b2lkIGFsbG9jYXRlX2NwbHVzX3N0cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsK KyAjZGVmaW5lIEZJRUxEX0xPQ19LSU5EKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jX2tpbmQpCisg I2RlZmluZSBGSUVMRF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuYml0cG9zKQorICNk ZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNu YW1lKQorKy8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0aGUgb2JqZmlsZSdzIEFO T0ZGU0VULiAgKi8KKyAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzZmxkKSAoKHRo aXNmbGQpLmxvYy5waHlzYWRkcikKKyAjZGVmaW5lIEZJRUxEX0RXQVJGX0JMT0NLKHRoaXNmbGQp ICgodGhpc2ZsZCkubG9jLmR3YXJmX2Jsb2NrKQorICNkZWZpbmUgU0VUX0ZJRUxEX0JJVFBPUyh0 aGlzZmxkLCBiaXRwb3MpCQkJXAorQEAgLTk3NCw2ICs5NzUsNyBAQCBleHRlcm4gdm9pZCBhbGxv Y2F0ZV9jcGx1c19zdHJ1Y3RfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2RlZmluZSBTRVRfRklF TERfUEhZU05BTUUodGhpc2ZsZCwgbmFtZSkJCQlcCisgICAoRklFTERfTE9DX0tJTkQgKHRoaXNm bGQpID0gRklFTERfTE9DX0tJTkRfUEhZU05BTUUsCQlcCisgICAgRklFTERfU1RBVElDX1BIWVNO QU1FICh0aGlzZmxkKSA9IChuYW1lKSkKKysvKiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQg YnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4gICovCisgI2RlZmluZSBTRVRfRklFTERfUEhZU0FE RFIodGhpc2ZsZCwgYWRkcikJCQlcCisgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklF TERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCisgICAgRklFTERfU1RBVElDX1BIWVNBRERSICh0aGlz ZmxkKSA9IChhZGRyKSkKK0BAIC05ODksNiArOTkxLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVf Y3BsdXNfc3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworICNkZWZpbmUgVFlQRV9GSUVMRF9M T0NfS0lORCh0aGlzdHlwZSwgbikgRklFTERfTE9DX0tJTkQgKFRZUEVfRklFTEQgKHRoaXN0eXBl LCBuKSkKKyAjZGVmaW5lIFRZUEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQ T1MgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKKyAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElD X1BIWVNOQU1FKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQg KHRoaXN0eXBlLCBuKSkKKysvKiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9i amZpbGUncyBBTk9GRlNFVC4gICovCisgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQURE Uih0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNBRERSIChUWVBFX0ZJRUxEICh0aGlzdHlw ZSwgbikpCisgI2RlZmluZSBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLKHRoaXN0eXBlLCBuKSBGSUVM RF9EV0FSRl9CTE9DSyAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQorICNkZWZpbmUgVFlQRV9G SUVMRF9BUlRJRklDSUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQo dGhpc3R5cGUsbikpCistLS0gYS9nZGIvanYtbGFuZy5jCisrKysgYi9nZGIvanYtbGFuZy5jCitA QCAtNDE2LDcgKzQxNiw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKKyAKKyAgIGZpZWxkcyA9IE5VTEw7CisgICBuZmllbGRzLS07CQkJLyogRmlyc3Qg c2V0IHVwIGR1bW15ICJjbGFzcyIgZmllbGQuICovCistICBTRVRfRklFTERfUEhZU0FERFIgKFRZ UEVfRklFTEQgKHR5cGUsIG5maWVsZHMpLCB2YWx1ZV9hZGRyZXNzIChjbGFzKSk7CisrICBTRVRf RklFTERfUEhZU0FERFIgKFRZUEVfRklFTEQgKHR5cGUsIG5maWVsZHMpLCB2YWx1ZV9hZGRyZXNz IChjbGFzKQorKyAgICAtIChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwgPyAwIDogQU5PRkZT RVQgKFRZUEVfT0JKRklMRSAodHlwZSktPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAo VFlQRV9PQkpGSUxFICh0eXBlKSkpKSk7CisgICBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIG5maWVs ZHMpID0gImNsYXNzIjsKKyAgIFRZUEVfRklFTERfVFlQRSAodHlwZSwgbmZpZWxkcykgPSB2YWx1 ZV90eXBlIChjbGFzKTsKKyAgIFNFVF9UWVBFX0ZJRUxEX1BSSVZBVEUgKHR5cGUsIG5maWVsZHMp OworQEAgLTQ2Miw3ICs0NjMsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCisgCSAgU0VUX1RZUEVfRklFTERfUFJPVEVDVEVEICh0eXBlLCBpKTsKKyAJ fQorICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJLyogQUNDX1NUQVRJQyAqLworLQlTRVRf RklFTERfUEhZU0FERFIgKFRZUEVfRklFTEQgKHR5cGUsIGkpLCBib2Zmc2V0KTsKKysJU0VUX0ZJ RUxEX1BIWVNBRERSIChUWVBFX0ZJRUxEICh0eXBlLCBpKSwgYm9mZnNldAorKwkgIC0gKFRZUEVf T0JKRklMRSAodHlwZSkgPT0gTlVMTCA/IDAgOiBBTk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBl KS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkp KTsKKyAgICAgICBlbHNlCisgCVRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSA9IDggKiBib2Zm c2V0OworICAgICAgIGlmIChhY2NmbGFncyAmIDB4ODAwMCkJLyogRklFTERfVU5SRVNPTFZFRF9G TEFHICovCistLS0gYS9nZGIvc29saWItc3ZyNC5jCisrKysgYi9nZGIvc29saWItc3ZyNC5jCitA QCAtMTY3MiwxNSArMTY3MiwyMCBAQCBzdGF0aWMgQ09SRV9BRERSCisgc3ZyNF9leGVjX2Rpc3Bs YWNlbWVudCAodm9pZCkKKyB7CisgICBpbnQgZm91bmQ7CisrICAvKiBFTlRSWV9QT0lOVCBpcyBh IHBvc3NpYmxlIGZ1bmN0aW9uIGRlc2NyaXB0b3IgLSBiZWZvcmUKKysgICAgIGEgY2FsbCB0byBn ZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyLiAgKi8KKyAgIENPUkVfQUREUiBlbnRy eV9wb2ludDsKKyAKKyAgIGlmIChleGVjX2JmZCA9PSBOVUxMKQorICAgICByZXR1cm4gMDsKKyAK KyAgIGlmICh0YXJnZXRfYXV4dl9zZWFyY2ggKCZjdXJyZW50X3RhcmdldCwgQVRfRU5UUlksICZl bnRyeV9wb2ludCkgPT0gMSkKKy0gICAgcmV0dXJuIGVudHJ5X3BvaW50IC0gZXhlY19lbnRyeV9w b2ludCAoZXhlY19iZmQsICZjdXJyZW50X3RhcmdldCk7CisrICAgIHJldHVybiBlbnRyeV9wb2lu dCAtIGJmZF9nZXRfc3RhcnRfYWRkcmVzcyAoZXhlY19iZmQpOworIAorLSAgcmV0dXJuIHN2cjRf c3RhdGljX2V4ZWNfZGlzcGxhY2VtZW50ICgpOworKyAgaWYgKCFwdGlkX2VxdWFsIChpbmZlcmlv cl9wdGlkLCBudWxsX3B0aWQpKQorKyAgICByZXR1cm4gc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFj ZW1lbnQgKCk7CisrCisrICByZXR1cm4gMDsKKyB9CisgCisgLyogUmVsb2NhdGUgdGhlIG1haW4g ZXhlY3V0YWJsZS4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1cG9uCitAQCAtMTYz Miw3ICsxNjM1LDcgQEAgc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAodm9pZCkKKyBzdGF0aWMgdm9p ZAorIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICh2b2lkKQorIHsKKy0gIENPUkVfQURE UiBkaXNwbGFjZW1lbnQgPSBzdnI0X2V4ZWNfZGlzcGxhY2VtZW50ICgpOworKyAgQ09SRV9BRERS IGRpc3BsYWNlbWVudCA9IHNvbGliX2V4ZWNfZGlzcGxhY2VtZW50ICgpOworIAorICAgLyogRXZl biBpZiBESVNQTEFDRU1FTlQgaXMgMCBzdGlsbCB0cnkgdG8gcmVsb2NhdGUgaXQgYXMgdGhpcyBp cyBhIG5ldworICAgICAgZGlmZmVyZW5jZSBvZiBpbi1tZW1vcnkgdnMuIGluLWZpbGUgYWRkcmVz c2VzIGFuZCB3ZSBjb3VsZCBhbHJlYWR5CitAQCAtMTk3NSw2ICsxOTc4LDcgQEAgX2luaXRpYWxp emVfc3ZyNF9zb2xpYiAodm9pZCkKKyAgIHN2cjRfc29fb3BzLmZyZWVfc28gPSBzdnI0X2ZyZWVf c287CisgICBzdnI0X3NvX29wcy5jbGVhcl9zb2xpYiA9IHN2cjRfY2xlYXJfc29saWI7CisgICBz dnI0X3NvX29wcy5zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayA9IHN2cjRfc29saWJfY3JlYXRl X2luZmVyaW9yX2hvb2s7CisrICBzdnI0X3NvX29wcy5leGVjX2Rpc3BsYWNlbWVudCA9IHN2cjRf ZXhlY19kaXNwbGFjZW1lbnQ7CisgICBzdnI0X3NvX29wcy5zcGVjaWFsX3N5bWJvbF9oYW5kbGlu ZyA9IHN2cjRfc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmc7CisgICBzdnI0X3NvX29wcy5jdXJyZW50 X3NvcyA9IHN2cjRfY3VycmVudF9zb3M7CisgICBzdnI0X3NvX29wcy5vcGVuX3N5bWJvbF9maWxl X29iamVjdCA9IG9wZW5fc3ltYm9sX2ZpbGVfb2JqZWN0OworLS0tIGEvZ2RiL3NvbGliLmMKKysr KyBiL2dkYi9zb2xpYi5jCitAQCAtMTAxNCw2ICsxMDE0LDE5IEBAIHNvbGliX2NyZWF0ZV9pbmZl cmlvcl9ob29rIChpbnQgZnJvbV90dHkpCisgICBvcHMtPnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rIChmcm9tX3R0eSk7CisgfQorIAorKy8qIFF1ZXJ5IHRoZSBkaWZmZXJlbmNlIG9mIGluLW1l bW9yeSBWTUEgYWRkcmVzc2VzIHZzLiBleGVjX2JmZCBWTUFzLiAgKi8KKysKKytDT1JFX0FERFIK Kytzb2xpYl9leGVjX2Rpc3BsYWNlbWVudCAodm9pZCkKKyt7CisrICBzdHJ1Y3QgdGFyZ2V0X3Nv X29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CisrCisrICBpZiAob3BzLT5l eGVjX2Rpc3BsYWNlbWVudCAhPSBOVUxMKQorKyAgICByZXR1cm4gKCpvcHMtPmV4ZWNfZGlzcGxh Y2VtZW50KSAoKTsKKysgIGVsc2UKKysgICAgcmV0dXJuIDA7CisrfQorKworIC8qIEdMT0JBTCBG VU5DVElPTgorIAorICAgIGluX3NvbGliX2R5bnN5bV9yZXNvbHZlX2NvZGUgLS0gY2hlY2sgdG8g c2VlIGlmIGFuIGFkZHJlc3MgaXMgaW4KKy0tLSBhL2dkYi9zb2xpYi5oCisrKysgYi9nZGIvc29s aWIuaAorQEAgLTQzLDYgKzQzLDggQEAgZXh0ZXJuIGludCBzb2xpYl9yZWFkX3N5bWJvbHMgKHN0 cnVjdCBzb19saXN0ICosIGludCk7CisgCisgZXh0ZXJuIHZvaWQgc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKGludCBmcm9tX3R0eSk7CisgCisrZXh0ZXJuIENPUkVfQUREUiBzb2xpYl9leGVj X2Rpc3BsYWNlbWVudCAodm9pZCk7CisrCisgLyogSWYgQUREUiBsaWVzIGluIGEgc2hhcmVkIGxp YnJhcnksIHJldHVybiBpdHMgbmFtZS4gICovCisgCisgZXh0ZXJuIGNoYXIgKnNvbGliX25hbWVf ZnJvbV9hZGRyZXNzIChDT1JFX0FERFIpOworLS0tIGEvZ2RiL3NvbGlzdC5oCisrKysgYi9nZGIv c29saXN0LmgKK0BAIC04OSw2ICs4OSw5IEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCisgICAgIC8q IFRhcmdldCBkZXBlbmRlbnQgY29kZSB0byBydW4gYWZ0ZXIgY2hpbGQgcHJvY2VzcyBmb3JrLiAg Ki8KKyAgICAgdm9pZCAoKnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKSAoaW50IGZyb21fdHR5 KTsKKyAKKysgICAgLyogUXVlcnkgdGhlIGRpZmZlcmVuY2Ugb2YgaW4tbWVtb3J5IFZNQSBhZGRy ZXNzZXMgdnMuIGV4ZWNfYmZkIFZNQXMuICAqLworKyAgICBDT1JFX0FERFIgKCpleGVjX2Rpc3Bs YWNlbWVudCkgKHZvaWQpOworKworICAgICAvKiBEbyBhZGRpdGlvbmFsIHN5bWJvbCBoYW5kbGlu ZywgbG9va3VwLCBldGMuIGFmdGVyIHN5bWJvbHMKKyAgICAgICAgZm9yIGEgc2hhcmVkIG9iamVj dCBoYXZlIGJlZW4gbG9hZGVkLiAgKi8KKyAgICAgdm9pZCAoKnNwZWNpYWxfc3ltYm9sX2hhbmRs aW5nKSAodm9pZCk7CistLS0gYS9nZGIvc3ltZmlsZS5jCisrKysgYi9nZGIvc3ltZmlsZS5jCitA QCAtODczLDE1ICs4NzMsMzYgQEAgc3ltc19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorICAgICAgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBzeW1ib2wgcmVhZGluZy4g ICovCisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9vYmpmaWxlIChvYmpmaWxlKTsK KyAKKy0gIC8qIElmIEFERFJTIGFuZCBPRkZTRVRTIGFyZSBib3RoIE5VTEwsIHB1dCB0b2dldGhl ciBhIGR1bW15IGFkZHJlc3MKKy0gICAgIGxpc3QuICBXZSBub3cgZXN0YWJsaXNoIHRoZSBjb252 ZW50aW9uIHRoYXQgYW4gYWRkciBvZiB6ZXJvIG1lYW5zCistICAgICBubyBsb2FkIGFkZHJlc3Mg d2FzIHNwZWNpZmllZC4gKi8KKysgIC8qIElmIEFERFJTIGFuZCBPRkZTRVRTIGFyZSBib3RoIE5V TEwsIHB1dCB0b2dldGhlciBhIGR1bW15IG9mZnNldCBsaXN0LiAgKi8KKysKKyAgIGlmICghIGFk ZHJzICYmICEgb2Zmc2V0cykKKyAgICAgeworLSAgICAgIGxvY2FsX2FkZHIKKy0JPSBhbGxvY19z ZWN0aW9uX2FkZHJfaW5mbyAoYmZkX2NvdW50X3NlY3Rpb25zIChvYmpmaWxlLT5vYmZkKSk7Cist ICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgbG9jYWxfYWRkcik7CistICAgICAgYWRkcnMgPSBs b2NhbF9hZGRyOworKyAgICAgIC8qIFJlbG9jYXRlYmxlIGZpbGVzIGhhdmUgYW4gZXhjZXB0aW9u IGluIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzIHdoaWNoCisrCSBhcHBsaWVzIG9ubHkgZm9yIEFE RFJTLiAgQnV0IGNhbGxpbmcgc29saWJfZXhlY19kaXNwbGFjZW1lbnQgaXMgbW9yZQorKwkgc3Vp dGFibGUgZm9yIE9GRlNFVFMuICBGb3J0dW5hdGVseSB3ZSBuZXZlciBuZWVkIHRoZSBib3RoCisr CSBmdW5jdGlvbmFsaXRpZXMgc2ltdWx0YW5lb3VzbHkgYW5kIGluIG90aGVyIGNhc2VzIHplcm9l ZCBBRERSUyBhbmQKKysJIHplcm9lZCBPRkZTRVRTIGFyZSBlcXVpdmFsZW50LiAgKi8KKysKKysg ICAgICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAob2JqZmlsZS0+b2JmZCkgJiAoRVhFQ19QIHwg RFlOQU1JQykpID09IDApCisrCXsKKysJICBsb2NhbF9hZGRyCisrCQkgPSBhbGxvY19zZWN0aW9u X2FkZHJfaW5mbyAoYmZkX2NvdW50X3NlY3Rpb25zIChvYmpmaWxlLT5vYmZkKSk7CisrCSAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgbG9jYWxfYWRkcik7CisrCSAgYWRkcnMgPSBsb2NhbF9hZGRyOwor Kwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgQ09SRV9BRERSIGRpc3BsYWNlbWVudCA9IDA7Cisr CSAgaW50IGk7CisrCisrCSAgaWYgKG1haW5saW5lKQorKwkgICAgZGlzcGxhY2VtZW50ID0gc29s aWJfZXhlY19kaXNwbGFjZW1lbnQgKCk7CisrCisrCSAgbnVtX29mZnNldHMgPSBiZmRfY291bnRf c2VjdGlvbnMgKG9iamZpbGUtPm9iZmQpOworKwkgIG9mZnNldHMgPSBhbGxvY2EgKFNJWkVPRl9O X1NFQ1RJT05fT0ZGU0VUUyAobnVtX29mZnNldHMpKTsKKysJICBmb3IgKGkgPSAwOyBpIDwgbnVt X29mZnNldHM7IGkrKykKKysJICAgIG9mZnNldHMtPm9mZnNldHNbaV0gPSBkaXNwbGFjZW1lbnQ7 CisrCX0KKyAgICAgfQorIAorICAgLyogTm93IGVpdGhlciBhZGRycyBvciBvZmZzZXRzIGlzIG5v bi16ZXJvLiAgKi8KKy0tLSBhL2dkYi92YWx1ZS5jCisrKysgYi9nZGIvdmFsdWUuYworQEAgLTE4 OTAsNyArMTg5MCw4IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGlu dCBmaWVsZG5vKQorICAgaWYgKFRZUEVfRklFTERfTE9DX0tJTkQgKHR5cGUsIGZpZWxkbm8pID09 IEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSKQorICAgICB7CisgICAgICAgcmV0dmFsID0gdmFsdWVf YXQgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgZmllbGRubyksCistCQkJIFRZUEVfRklFTERfU1RB VElDX1BIWVNBRERSICh0eXBlLCBmaWVsZG5vKSk7CisrCQkJIFRZUEVfRklFTERfU1RBVElDX1BI WVNBRERSICh0eXBlLCBmaWVsZG5vKQorKwkJCSAgICsgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0g TlVMTCA/IDAgOiBBTk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBlKS0+c2VjdGlvbl9vZmZzZXRz LCBTRUNUX09GRl9URVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkpKTsKKyAgICAgfQorICAgZWxz ZQorICAgICB7CitAQCAtMTkyMCw3ICsxOTIxLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgaW50IGZpZWxkbm8pCisgIAl9CisgICAgICAgaWYgKHJldHZhbCAmJiBW QUxVRV9MVkFMIChyZXR2YWwpID09IGx2YWxfbWVtb3J5KQorIAlTRVRfRklFTERfUEhZU0FERFIg KFRZUEVfRklFTEQgKHR5cGUsIGZpZWxkbm8pLAorLQkJCSAgICB2YWx1ZV9hZGRyZXNzIChyZXR2 YWwpKTsKKysJCQkgICAgdmFsdWVfYWRkcmVzcyAocmV0dmFsKQorKwkJCSAgICAgIC0gKFRZUEVf T0JKRklMRSAodHlwZSkgPT0gTlVMTCA/IDAgOiBBTk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBl KS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkp KTsKKyAgICAgfQorICAgcmV0dXJuIHJldHZhbDsKKyB9CistLS0gZ2RiLTcuMC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFjaC5leHAtb3JpZwkyMDA5LTEyLTIxIDE2OjUw OjQyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 YWxncmluZC1kYi1hdHRhY2guZXhwCTIwMDktMTItMjEgMTY6NTE6MjQuMDAwMDAwMDAwICswMTAw CitAQCAtNjcsNiArNjcsOCBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7CisgICAgIH0K KyB9CisgCisrZ2RiX3Rlc3QgIiIgIiIgImVhdCBmaXJzdCBwcm9tcHQiCisrCisgIyBJbml0aWFs aXphdGlvbiBmcm9tIGRlZmF1bHRfZ2RiX3N0YXJ0LgorIGdkYl90ZXN0ICJzZXQgaGVpZ2h0IDAi CisgZ2RiX3Rlc3QgInNldCB3aWR0aCAwIgoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGllLnBh dGNoIGIvZ2RiLWFyY2hlci1waWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMGM4YWFiYgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hcmNoZXItcGllLnBhdGNoCkBA IC0wLDAgKzEsMjY0NyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RB cmNoZXIKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2Vt ZW50CisKK2FyY2hlci1qYW5rcmF0b2NodmlsLXBpZS1mZWRvcmExMgorR0lUIHNuYXBzaG90Ogor Y29tbWl0IDJhZTYwYjUxNTZkNDNhYWJmZTU3NTc5NDBlYWY3YjQzNzBmYjA1ZDIKKworCitkaWZm IC0tZ2l0IGEvZ2RiL2F1eHYuYyBiL2dkYi9hdXh2LmMKK2luZGV4IDdiNGVjYmUuLjdkZjhlYjUg MTAwNjQ0CistLS0gYS9nZGIvYXV4di5jCisrKysgYi9nZGIvYXV4di5jCitAQCAtMjUsNiArMjUs NyBAQAorICNpbmNsdWRlICJpbmZlcmlvci5oIgorICNpbmNsdWRlICJ2YWxwcmludC5oIgorICNp bmNsdWRlICJnZGJfYXNzZXJ0LmgiCisrI2luY2x1ZGUgImdkYmNvcmUuaCIKKyAKKyAjaW5jbHVk ZSAiYXV4di5oIgorICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCitAQCAtMzMsMTUgKzM0LDExIEBA CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgCisgCistLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg bGlrZSBhIHRvX3hmZXJfcGFydGlhbCBob29rLCBidXQgbXVzdCBiZQorLSAgIGNhbGxlZCB3aXRo IFRBUkdFVF9PQkpFQ1RfQVVYVi4gIEl0IGhhbmRsZXMgYWNjZXNzIHZpYQorLSAgIC9wcm9jL1BJ RC9hdXh2LCB3aGljaCBpcyBhIGNvbW1vbiBtZXRob2QgZm9yIG5hdGl2ZSB0YXJnZXRzLiAgKi8K KysvKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgYWNjZXNzIHZpYSAvcHJvYy9QSUQvYXV4diwgd2hp Y2ggaXMgYSBjb21tb24gbWV0aG9kCisrICAgZm9yIG5hdGl2ZSB0YXJnZXRzLiAgKi8KKyAKKy1M T05HRVNUCistcHJvY2ZzX3hmZXJfYXV4diAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKy0JCSAg ZW51bSB0YXJnZXRfb2JqZWN0IG9iamVjdCwKKy0JCSAgY29uc3QgY2hhciAqYW5uZXgsCistCQkg IGdkYl9ieXRlICpyZWFkYnVmLAorK3N0YXRpYyBMT05HRVNUCisrcHJvY2ZzX3hmZXJfYXV4diAo Z2RiX2J5dGUgKnJlYWRidWYsCisgCQkgIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZiwKKyAJCSAg VUxPTkdFU1Qgb2Zmc2V0LAorIAkJICBMT05HRVNUIGxlbikKK0BAIC01MCw5ICs0Nyw2IEBAIHBy b2Nmc194ZmVyX2F1eHYgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgICBpbnQgZmQ7CisgICBM T05HRVNUIG47CisgCistICBnZGJfYXNzZXJ0IChvYmplY3QgPT0gVEFSR0VUX09CSkVDVF9BVVhW KTsKKy0gIGdkYl9hc3NlcnQgKHJlYWRidWYgfHwgd3JpdGVidWYpOworLQorICAgcGF0aG5hbWUg PSB4c3RycHJpbnRmICgiL3Byb2MvJWQvYXV4diIsIFBJREdFVCAoaW5mZXJpb3JfcHRpZCkpOwor ICAgZmQgPSBvcGVuIChwYXRobmFtZSwgd3JpdGVidWYgIT0gTlVMTCA/IE9fV1JPTkxZIDogT19S RE9OTFkpOworICAgeGZyZWUgKHBhdGhuYW1lKTsKK0BAIC03Miw2ICs2NiwxNTIgQEAgcHJvY2Zz X3hmZXJfYXV4diAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKyAgIHJldHVybiBuOworIH0KKyAK KysvKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgYWNjZXNzIHZpYSBsZC5zbydzIHN5bWJvbCBgX2Rs X2F1eHYnLiAgKi8KKysKKytzdGF0aWMgTE9OR0VTVAorK2xkX3NvX3hmZXJfYXV4diAoZ2RiX2J5 dGUgKnJlYWRidWYsCisrCQkgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmLAorKwkJIFVMT05HRVNU IG9mZnNldCwKKysJCSBMT05HRVNUIGxlbikKKyt7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Km1zeW07CisrICBDT1JFX0FERFIgZGF0YV9hZGRyZXNzLCBwb2ludGVyX2FkZHJlc3M7CisrICBz dHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKHRhcmdldF9nZGJhcmNoKS0+YnVp bHRpbl9kYXRhX3B0cjsKKysgIHNpemVfdCBwdHJfc2l6ZSA9IFRZUEVfTEVOR1RIIChwdHJfdHlw ZSk7CisrICBzaXplX3QgYXV4dl9wYWlyX3NpemUgPSAyICogcHRyX3NpemU7CisrICBnZGJfYnl0 ZSAqcHRyX2J1ZiA9IGFsbG9jYSAocHRyX3NpemUpOworKyAgTE9OR0VTVCByZXR2YWw7CisrICBz aXplX3QgYmxvY2s7CisrCisrICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sICgiX2RsX2F1 eHYiLCBOVUxMLCBOVUxMKTsKKysgIGlmIChtc3ltID09IE5VTEwpCisrICAgIHJldHVybiAtMTsK KysKKysgIGlmIChNU1lNQk9MX1NJWkUgKG1zeW0pICE9IHB0cl9zaXplKQorKyAgICByZXR1cm4g LTE7CisrCisrICAvKiBQT0lOVEVSX0FERFJFU1MgaXMgYSBsb2NhdGlvbiB3aGVyZSB0aGUgYF9k bF9hdXh2JyB2YXJpYWJsZSByZXNpZGVzLgorKyAgICAgREFUQV9BRERSRVNTIGlzIHRoZSBpbmZl cmlvciB2YWx1ZSBwcmVzZW50IGluIGBfZGxfYXV4dicsIHRoZXJlZm9yZSB0aGUKKysgICAgIHJl YWwgaW5mZXJpb3IgQVVYViBhZGRyZXNzLiAgKi8KKysKKysgIHBvaW50ZXJfYWRkcmVzcyA9IFNZ TUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKTsKKysKKysgIGRhdGFfYWRkcmVzcyA9IHJlYWRfbWVt b3J5X3R5cGVkX2FkZHJlc3MgKHBvaW50ZXJfYWRkcmVzcywgcHRyX3R5cGUpOworKworKyAgLyog UG9zc2libHkgc3RpbGwgbm90IGluaXRpYWxpemVkIHN1Y2ggYXMgZHVyaW5nIGFuIGluZmVyaW9y IHN0YXJ0dXAuICAqLworKyAgaWYgKGRhdGFfYWRkcmVzcyA9PSAwKQorKyAgICByZXR1cm4gLTE7 CisrCisrICBkYXRhX2FkZHJlc3MgKz0gb2Zmc2V0OworKworKyAgaWYgKHdyaXRlYnVmICE9IE5V TEwpCisrICAgIHsKKysgICAgICBpZiAodGFyZ2V0X3dyaXRlX21lbW9yeSAoZGF0YV9hZGRyZXNz LCB3cml0ZWJ1ZiwgbGVuKSA9PSAwKQorKwlyZXR1cm4gbGVuOworKyAgICAgIGVsc2UKKysJcmV0 dXJuIC0xOworKyAgICB9CisrCisrICAvKiBTdG9wIGlmIHRyeWluZyB0byByZWFkIHBhc3QgdGhl IGV4aXN0aW5nIEFVWFYgYmxvY2suICBUaGUgZmluYWwgQVRfTlVMTAorKyAgICAgd2FzIGFscmVh ZHkgcmV0dXJuZWQgYmVmb3JlLiAgKi8KKysKKysgIGlmIChvZmZzZXQgPj0gYXV4dl9wYWlyX3Np emUpCisrICAgIHsKKysgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChkYXRhX2FkZHJlc3Mg LSBhdXh2X3BhaXJfc2l6ZSwgcHRyX2J1ZiwKKysJCQkgICAgICBwdHJfc2l6ZSkgIT0gMCkKKysJ cmV0dXJuIC0xOworKworKyAgICAgIGlmIChleHRyYWN0X3R5cGVkX2FkZHJlc3MgKHB0cl9idWYs IHB0cl90eXBlKSA9PSBBVF9OVUxMKQorKwlyZXR1cm4gMDsKKysgICAgfQorKworKyAgcmV0dmFs ID0gMDsKKysgIGJsb2NrID0gMHg0MDA7CisrICBnZGJfYXNzZXJ0IChibG9jayAlIGF1eHZfcGFp cl9zaXplID09IDApOworKworKyAgd2hpbGUgKGxlbiA+IDApCisrICAgIHsKKysgICAgICBpZiAo YmxvY2sgPiBsZW4pCisrCWJsb2NrID0gbGVuOworKworKyAgICAgIC8qIFJlYWRpbmcgc2l6ZXMg c21hbGxlciB0aGFuIEFVWFZfUEFJUl9TSVpFIGlzIG5vdCBzdXBwb3J0ZWQuICBUYWlscworKwkg dW5hbGlnbmVkIHRvIEFVWFZfUEFJUl9TSVpFIHdpbGwgbm90IGJlIHJlYWQgZHVyaW5nIGEgY2Fs bCAodGhleQorKwkgc2hvdWxkIGJlIGNvbXBsZXRlZCBkdXJpbmcgbmV4dCByZWFkIHdpdGggbmV3 L2V4dGVuZGVkIGJ1ZmZlcikuICAqLworKworKyAgICAgIGJsb2NrICY9IC1hdXh2X3BhaXJfc2l6 ZTsKKysgICAgICBpZiAoYmxvY2sgPT0gMCkKKysJcmV0dXJuIHJldHZhbDsKKysKKysgICAgICBp ZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChkYXRhX2FkZHJlc3MsIHJlYWRidWYsIGJsb2NrKSAhPSAw KQorKwl7CisrCSAgaWYgKGJsb2NrIDw9IGF1eHZfcGFpcl9zaXplKQorKwkgICAgcmV0dXJuIHJl dHZhbDsKKysKKysJICBibG9jayA9IGF1eHZfcGFpcl9zaXplOworKwkgIGNvbnRpbnVlOworKwl9 CisrCisrICAgICAgZGF0YV9hZGRyZXNzICs9IGJsb2NrOworKyAgICAgIGxlbiAtPSBibG9jazsK KysKKysgICAgICAvKiBDaGVjayB0ZXJtaW5hbCBBVF9OVUxMLiAgVGhpcyBmdW5jdGlvbiBpcyBi ZWluZyBjYWxsZWQgaW5kZWZpbml0ZWx5CisrICAgICAgICAgYmVpbmcgZXh0ZW5kZWQgaXRzIFJF QURCVUYgdW50aWwgaXQgcmV0dXJucyBFT0YgKDApLiAgKi8KKysKKysgICAgICB3aGlsZSAoYmxv Y2sgPj0gYXV4dl9wYWlyX3NpemUpCisrCXsKKysJICByZXR2YWwgKz0gYXV4dl9wYWlyX3NpemU7 CisrCisrCSAgaWYgKGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAocmVhZGJ1ZiwgcHRyX3R5cGUpID09 IEFUX05VTEwpCisrCSAgICByZXR1cm4gcmV0dmFsOworKworKwkgIHJlYWRidWYgKz0gYXV4dl9w YWlyX3NpemU7CisrCSAgYmxvY2sgLT0gYXV4dl9wYWlyX3NpemU7CisrCX0KKysgICAgfQorKwor KyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCisrLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgbGlr ZSBhIHRvX3hmZXJfcGFydGlhbCBob29rLCBidXQgbXVzdCBiZQorKyAgIGNhbGxlZCB3aXRoIFRB UkdFVF9PQkpFQ1RfQVVYVi4gIEl0IGhhbmRsZXMgYWNjZXNzIHRvIEFVWFYuICAqLworKworK0xP TkdFU1QKKyttZW1vcnlfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorKwkJICBl bnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAorKwkJICBjb25zdCBjaGFyICphbm5leCwKKysJCSAg Z2RiX2J5dGUgKnJlYWRidWYsCisrCQkgIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZiwKKysJCSAg VUxPTkdFU1Qgb2Zmc2V0LAorKwkJICBMT05HRVNUIGxlbikKKyt7CisrICAvKiBXb3JrYXJvdW5k IGdkYi03LjAgYnVnIHdoZXJlIGxpbnV4X25hdF94ZmVyX3BhcnRpYWwoKSBkb2VzCisrICAgICAg IGluZmVyaW9yX3B0aWQgPSBwaWRfdG9fcHRpZCAoR0VUX0xXUCAoaW5mZXJpb3JfcHRpZCkpOwor KyAgICAgYW5kIGN1cnJlbnRfaW5mZXJpb3IoKSBhc3NlcnRpb24gZmFpbHMgbm90IGZpbmRpbmcg dGhlIExXUC0+UElELgorKyAgICAgSXQgZ290IGZpeGVkIHBvc3QtZ2RiLTcuMCBieToKKysgICAg ICAgQWRkIGJhc2UgbXVsdGktZXhlY3V0YWJsZS9wcm9jZXNzIHN1cHBvcnQgdG8gR0RCLgorKyAg ICAgICA0MGZmMGEyODllNjE2NWFhOTMwYWYyODRkZjVjNTIxNjJjYjBjZDVmCisrICAgICBieSBp bnRyb2R1Y2luZyBgY3VycmVudF9pbmZlcmlvcl8nLiAgKi8KKysgIHN0cnVjdCBpbmZlcmlvciAq aW5mID0gZmluZF9pbmZlcmlvcl9waWQgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOwor KworKyAgZ2RiX2Fzc2VydCAob2JqZWN0ID09IFRBUkdFVF9PQkpFQ1RfQVVYVik7CisrICBnZGJf YXNzZXJ0IChyZWFkYnVmIHx8IHdyaXRlYnVmKTsKKysKKysgICAvKiBsZF9zb194ZmVyX2F1eHYg aXMgdGhlIG9ubHkgZnVuY3Rpb24gc2FmZSBmb3IgdmlydHVhbCBleGVjdXRhYmxlcyBiZWluZwor KyAgICAgIGV4ZWN1dGVkIGJ5IHZhbGdyaW5kJ3MgbWVtY2hlY2suICBBcyB1c2luZyBsZF9zb194 ZmVyX2F1eHYgaXMgcHJvYmxlbWF0aWMKKysgICAgICBkdXJpbmcgaW5mZXJpb3Igc3RhcnR1cCBH REIgZG9lcyBjYWxsIGl0IG9ubHkgZm9yIGF0dGFjaGVkIHByb2Nlc3Nlcy4gICovCisrCisrICBp ZiAoaW5mID09IE5VTEwgfHwgaW5mLT5hdHRhY2hfZmxhZyAhPSAwKQorKyAgICB7CisrICAgICAg TE9OR0VTVCByZXR2YWw7CisrCisrICAgICAgcmV0dmFsID0gbGRfc29feGZlcl9hdXh2IChyZWFk YnVmLCB3cml0ZWJ1Ziwgb2Zmc2V0LCBsZW4pOworKyAgICAgIGlmIChyZXR2YWwgIT0gLTEpCisr CXJldHVybiByZXR2YWw7CisrICAgIH0KKysKKysgIHJldHVybiBwcm9jZnNfeGZlcl9hdXh2IChy ZWFkYnVmLCB3cml0ZWJ1Ziwgb2Zmc2V0LCBsZW4pOworK30KKysKKyAvKiBSZWFkIG9uZSBhdXh2 IGVudHJ5IGZyb20gKlJFQURQVFIsIG5vdCByZWFkaW5nIGxvY2F0aW9ucyA+PSBFTkRQVFIuCisg ICAgUmV0dXJuIDAgaWYgKlJFQURQVFIgaXMgYWxyZWFkeSBhdCB0aGUgZW5kIG9mIHRoZSBidWZm ZXIuCisgICAgUmV0dXJuIC0xIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBidWZmZXIgZm9yIGEg d2hvbGUgZW50cnkuCitkaWZmIC0tZ2l0IGEvZ2RiL2F1eHYuaCBiL2dkYi9hdXh2LmgKK2luZGV4 IDcxZTY1NjIuLjg3YzI0YWUgMTAwNjQ0CistLS0gYS9nZGIvYXV4di5oCisrKysgYi9nZGIvYXV4 di5oCitAQCAtNDMsMTEgKzQzLDcgQEAgZXh0ZXJuIGludCB0YXJnZXRfYXV4dl9zZWFyY2ggKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgLyogUHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YXJn ZXQncyBBVVhWIG9uIHRoZSBzcGVjaWZpZWQgZmlsZS4gKi8KKyBleHRlcm4gaW50IGZwcmludF90 YXJnZXRfYXV4diAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIHN0cnVjdCB0YXJnZXRfb3BzICpvcHMp OworIAorLS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGxpa2UgYSB0b194ZmVyX3BhcnRpYWwg aG9vaywgYnV0IG11c3QgYmUKKy0gICBjYWxsZWQgd2l0aCBUQVJHRVRfT0JKRUNUX0FVWFYuICBJ dCBoYW5kbGVzIGFjY2VzcyB2aWEKKy0gICAvcHJvYy9QSUQvYXV4diwgd2hpY2ggaXMgYSBjb21t b24gbWV0aG9kIGZvciBuYXRpdmUgdGFyZ2V0cy4gICovCistCistZXh0ZXJuIExPTkdFU1QgcHJv Y2ZzX3hmZXJfYXV4diAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKytleHRlcm4gTE9OR0VTVCBt ZW1vcnlfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorIAkJCQkgZW51bSB0YXJn ZXRfb2JqZWN0IG9iamVjdCwKKyAJCQkJIGNvbnN0IGNoYXIgKmFubmV4LAorIAkJCQkgZ2RiX2J5 dGUgKnJlYWRidWYsCitkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3Bv aW50LmMKK2luZGV4IDBmMzUxMDEuLmJmZmM1YTYgMTAwNjQ0CistLS0gYS9nZGIvYnJlYWtwb2lu dC5jCisrKysgYi9nZGIvYnJlYWtwb2ludC5jCitAQCAtNDgwNSw3ICs0ODA1LDggQEAgZGlzYWJs ZV9icmVha3BvaW50c19pbl9zaGxpYnMgKHZvaWQpCisgICAgICAgIHRvIGluc2VydCB0aG9zZSBi cmVha3BvaW50cyBhbmQgZmFpbC4gICovCisgICAgIGlmICgoKGItPnR5cGUgPT0gYnBfYnJlYWtw b2ludCkKKyAJIHx8IChiLT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQpCistCSB8fCAo Yi0+dHlwZSA9PSBicF90cmFjZXBvaW50KSkKKysJIHx8IChiLT50eXBlID09IGJwX3RyYWNlcG9p bnQpCisrCSB8fCBiLT50eXBlID09IGJwX3NobGliX2V2ZW50KQorIAkmJiAhbG9jLT5zaGxpYl9k aXNhYmxlZAorICNpZmRlZiBQQ19TT0xJQgorIAkmJiBQQ19TT0xJQiAobG9jLT5hZGRyZXNzKQor ZGlmZiAtLWdpdCBhL2dkYi9kZWZzLmggYi9nZGIvZGVmcy5oCitpbmRleCA5NDY3NGRjLi41N2Fh YWUyIDEwMDY0NAorLS0tIGEvZ2RiL2RlZnMuaAorKysrIGIvZ2RiL2RlZnMuaAorQEAgLTk4LDcg Kzk4LDIwIEBACisgLyogQSBieXRlIGZyb20gdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuICAq LworIHR5cGVkZWYgYmZkX2J5dGUgZ2RiX2J5dGU7CisgCistLyogQW4gYWRkcmVzcyBpbiB0aGUg cHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4gIEhvc3QgYnl0ZSBvcmRlci4gICovCisrLyogQW4gYWRk cmVzcyBpbiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4gIEhvc3QgYnl0ZSBvcmRlci4KKysK KysgICBJdHMgd2lkdGggaXMgdGhlIG1heGltdW0gd2lkdGggb2YgYWxsIHRoZSBzdXBwb3J0ZWQg dGFyZ2V0cy4gIFRoYXQgbWVhbnMKKysgICAzMi1iaXQgdGFyZ2V0IHdpbGwgcnVuIG9uIHN1Y2gg R0RCIHVzaW5nIDY0LWJpdCBDT1JFX0FERFIgY2x1dHRlcmluZyB0aGUKKysgICBiaXRzIDMyLi4u NjMgd2l0aCByYW5kb20gZGF0YSBmcm9tIGludGVybmFsIEdEQiBjYWxjdWxhdGlvbnMuICBHREIg Y3VycmVudGx5CisrICAgaW4gZ2VuZXJhbCB0cnVuY2F0ZXMgdGhlIGFkZHJlc3Mgd2lkdGggb25s eSB3aGVuIGl0IGlzIGJlaW5nIHByZXNlbnRlZC91c2VkCisrICAgZXh0ZXJuYWxseSAoc3VjaCBh cyBieSB0aGUgcGFkZHJlc3MgZnVuY3Rpb24pLgorKworKyAgIEZJWE1FOiBUaGlzIGlzIHN0aWxs IG5vdCByaWdodCBhcyBhbnkgR0RCIGludGVybmFsIGNvbXBhcmlzb25zIChzdWNoIGFzID49KQor KyAgIG9mIENPUkVfQUREUiBkbyBub3QgdXNlIHRoZSBwcm9wZXJseSB0cnVuY2F0ZWQgd2lkdGgu ICBBcyBjb252ZXJ0aW5nIGFsbCB0aGUKKysgICBDT1JFX0FERFIgb3BlcmF0aW9ucyB0byB3aWR0 aC1hd2FyZSBmdW5jdGlvbnMgaXMgbm90IGZlYXNpYmxlIHRoZSB3YXkgb3V0CisrICAgY291bGQg YmUgYSB3aWR0aC1hd2FyZSBDKysgY2xhc3MgQ09SRV9BRERSIHJlZmVyZW5jaW5nIGdkYmFyY2gg YXMgaXRzCisrICAgY29uc3RydWN0b3IgcGFyYW1ldGVyLiAgKi8KKysKKyB0eXBlZGVmIGJmZF92 bWEgQ09SRV9BRERSOworIAorIC8qIFRoZSBsYXJnZXN0IENPUkVfQUREUiB2YWx1ZS4gICovCitk aWZmIC0tZ2l0IGEvZ2RiL2V4ZWMuYyBiL2dkYi9leGVjLmMKK2luZGV4IDQ1NTE1MWUuLjY3ZjQw ZDkgMTAwNjQ0CistLS0gYS9nZGIvZXhlYy5jCisrKysgYi9nZGIvZXhlYy5jCitAQCAtNjU2LDgg KzY1NiwzMyBAQCBwcmludF9zZWN0aW9uX2luZm8gKHN0cnVjdCB0YXJnZXRfc2VjdGlvbl90YWJs ZSAqdCwgYmZkICphYmZkKQorICAgd3JhcF9oZXJlICgiICAgICAgICAiKTsKKyAgIHByaW50Zl9m aWx0ZXJlZCAoXygiZmlsZSB0eXBlICVzLlxuIiksIGJmZF9nZXRfdGFyZ2V0IChhYmZkKSk7Cisg ICBpZiAoYWJmZCA9PSBleGVjX2JmZCkKKy0gICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJcdEVudHJ5 IHBvaW50OiAlc1xuIiksCistICAgICAgICAgICAgICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gs IGJmZF9nZXRfc3RhcnRfYWRkcmVzcyAoYWJmZCkpKTsKKysgICAgeworKyAgICAgIGJmZF92bWEg ZGlzcGxhY2VtZW50ID0gMDsKKysKKysgICAgICBmb3IgKHAgPSB0LT5zZWN0aW9uczsgcCA8IHQt PnNlY3Rpb25zX2VuZDsgcCsrKQorKwl7CisrCSAgYXNlY3Rpb24gKmFzZWN0ID0gcC0+dGhlX2Jm ZF9zZWN0aW9uOworKworKwkgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChhYmZkLCBhc2Vj dCkgJiAoU0VDX0FMTE9DIHwgU0VDX0xPQUQpKQorKwkgICAgICAhPSAoU0VDX0FMTE9DIHwgU0VD X0xPQUQpKQorKwkgICAgY29udGludWU7CisrCisrCSAgaWYgKGJmZF9nZXRfc2VjdGlvbl92bWEg KGFiZmQsIGFzZWN0KSA8PSBhYmZkLT5zdGFydF9hZGRyZXNzCisrCSAgICAgICYmIGFiZmQtPnN0 YXJ0X2FkZHJlc3MgPCBiZmRfZ2V0X3NlY3Rpb25fdm1hIChhYmZkLCBhc2VjdCkKKysJCQkJICAg ICAgICsgYmZkX2dldF9zZWN0aW9uX3NpemUgKGFzZWN0KSkKKysJICAgIHsKKysJICAgICAgZGlz cGxhY2VtZW50ID0gcC0+YWRkciAtIGJmZF9nZXRfc2VjdGlvbl92bWEgKGFiZmQsIGFzZWN0KTsK KysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCX0KKysgICAgICBpZiAocCA9PSB0LT5zZWN0aW9u c19lbmQpCisrCXdhcm5pbmcgKF8oIkNhbm5vdCBmaW5kIHNlY3Rpb24gZm9yIHRoZSBlbnRyeSBw b2ludCBvZiAlcy5cbiIpLAorKwkJIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKKysKKysgICAg ICBwcmludGZfZmlsdGVyZWQgKF8oIlx0RW50cnkgcG9pbnQ6ICVzXG4iKSwKKysJCSAgICAgICBw YWRkcmVzcyAoZ2RiYXJjaCwgYmZkX2dldF9zdGFydF9hZGRyZXNzIChhYmZkKQorKwkJCQkJICAr IGRpc3BsYWNlbWVudCkpOworKyAgICB9CisgICBmb3IgKHAgPSB0LT5zZWN0aW9uczsgcCA8IHQt PnNlY3Rpb25zX2VuZDsgcCsrKQorICAgICB7CisgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXHQl cyIsIGhleF9zdHJpbmdfY3VzdG9tIChwLT5hZGRyLCB3aWQpKTsKK2RpZmYgLS1naXQgYS9nZGIv aW5mY21kLmMgYi9nZGIvaW5mY21kLmMKK2luZGV4IGZhYjE4OTIuLmZjMGYwNWQgMTAwNjQ0Cist LS0gYS9nZGIvaW5mY21kLmMKKysrKyBiL2dkYi9pbmZjbWQuYworQEAgLTM5NSwyMiArMzk1LDYg QEAgcG9zdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsIGludCBm cm9tX3R0eSkKKyAgIC8qIE5vdyB0aGF0IHdlIGtub3cgdGhlIHJlZ2lzdGVyIGxheW91dCwgcmV0 cmlldmUgY3VycmVudCBQQy4gICovCisgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0 X2N1cnJlbnRfcmVnY2FjaGUgKCkpOworIAorLSAgLyogSWYgdGhlIHNvbGlzdCBpcyBnbG9iYWwg YWNyb3NzIHByb2Nlc3NlcywgdGhlcmUncyBubyBuZWVkIHRvCistICAgICByZWZldGNoIGl0IGhl cmUuICAqLworLSAgaWYgKGV4ZWNfYmZkICYmICFnZGJhcmNoX2hhc19nbG9iYWxfc29saXN0ICh0 YXJnZXRfZ2RiYXJjaCkpCistICAgIHsKKy0gICAgICAvKiBTb21ldGltZXMgdGhlIHBsYXRmb3Jt LXNwZWNpZmljIGhvb2sgbG9hZHMgaW5pdGlhbCBzaGFyZWQKKy0JIGxpYnJhcmllcywgYW5kIHNv bWV0aW1lcyBpdCBkb2Vzbid0LiAgVHJ5IHRvIGRvIHNvIGZpcnN0LCBzbworLQkgdGhhdCB3ZSBj YW4gYWRkIHRoZW0gd2l0aCB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgRlJPTV9UVFkuCistCSBJZiB3 ZSBtYWRlIGFsbCB0aGUgaW5mZXJpb3IgaG9vayBtZXRob2RzIGNvbnNpc3RlbnQsCistCSB0aGlz IGNhbGwgY291bGQgYmUgcmVtb3ZlZC4gICovCistI2lmZGVmIFNPTElCX0FERAorLSAgICAgIFNP TElCX0FERCAoTlVMTCwgZnJvbV90dHksIHRhcmdldCwgYXV0b19zb2xpYl9hZGQpOworLSNlbHNl CistICAgICAgc29saWJfYWRkIChOVUxMLCBmcm9tX3R0eSwgdGFyZ2V0LCBhdXRvX3NvbGliX2Fk ZCk7CistI2VuZGlmCistICAgIH0KKy0KKyAgIGlmIChleGVjX2JmZCkKKyAgICAgeworICAgICAg IC8qIENyZWF0ZSB0aGUgaG9va3MgdG8gaGFuZGxlIHNoYXJlZCBsaWJyYXJ5IGxvYWQgYW5kIHVu bG9hZAorQEAgLTQxOCw3ICs0MDIsMjUgQEAgcG9zdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0 YXJnZXRfb3BzICp0YXJnZXQsIGludCBmcm9tX3R0eSkKKyAjaWZkZWYgU09MSUJfQ1JFQVRFX0lO RkVSSU9SX0hPT0sKKyAgICAgICBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSyAoUElER0VUIChp bmZlcmlvcl9wdGlkKSk7CisgI2Vsc2UKKy0gICAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9v ayAoKTsKKysgICAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoZnJvbV90dHkpOworKyNl bmRpZgorKyAgICB9CisrCisrICAvKiBJZiB0aGUgc29saXN0IGlzIGdsb2JhbCBhY3Jvc3MgcHJv Y2Vzc2VzLCB0aGVyZSdzIG5vIG5lZWQgdG8KKysgICAgIHJlZmV0Y2ggaXQgaGVyZS4gICovCisr ICBpZiAoZXhlY19iZmQgJiYgIWdkYmFyY2hfaGFzX2dsb2JhbF9zb2xpc3QgKHRhcmdldF9nZGJh cmNoKSkKKysgICAgeworKyAgICAgIC8qIFNvbWV0aW1lcyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMg aG9vayBsb2FkcyBpbml0aWFsIHNoYXJlZAorKwkgbGlicmFyaWVzLCBhbmQgc29tZXRpbWVzIGl0 IGRvZXNuJ3QuICBJZiBpdCBkb2Vzbid0IEZST01fVFRZIHdpbGwgYmUKKysJIGluY29ycmVjdGx5 IDAgYnV0IHN1Y2ggc29saWIgdGFyZ2V0cyBzaG91bGQgYmUgZml4ZWQgYW55d2F5LiAgSWYgd2UK KysJIG1hZGUgYWxsIHRoZSBpbmZlcmlvciBob29rIG1ldGhvZHMgY29uc2lzdGVudCwgdGhpcyBj YWxsIGNvdWxkIGJlCisrCSByZW1vdmVkLiAgQ2FsbCBpdCBvbmx5IGFmdGVyIHRoZSBzb2xpYiB0 YXJnZXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgYnkKKysJIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rLiAgKi8KKysKKysjaWZkZWYgU09MSUJfQURECisrICAgICAgU09MSUJfQUREIChOVUxMLCAw LCB0YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKysjZWxzZQorKyAgICAgIHNvbGliX2FkZCAoTlVM TCwgMCwgdGFyZ2V0LCBhdXRvX3NvbGliX2FkZCk7CisgI2VuZGlmCisgICAgIH0KKyAKK2RpZmYg LS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKK2luZGV4IDlkMjliMTUuLmVkNDUx ZDUgMTAwNjQ0CistLS0gYS9nZGIvaW5mcnVuLmMKKysrKyBiL2dkYi9pbmZydW4uYworQEAgLTU0 NCw3ICs1NDQsNyBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0aG5h bWUpCisgI2lmZGVmIFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09LCisgICBTT0xJQl9DUkVBVEVf SU5GRVJJT1JfSE9PSyAoUElER0VUIChpbmZlcmlvcl9wdGlkKSk7CisgI2Vsc2UKKy0gIHNvbGli X2NyZWF0ZV9pbmZlcmlvcl9ob29rICgpOworKyAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sg KDApOworICNlbmRpZgorIAorICAgaml0X2luZmVyaW9yX2NyZWF0ZWRfaG9vayAoKTsKK2RpZmYg LS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKK2luZGV4IDA5MDdmMDMu LjFjMTg3ODIgMTAwNjQ0CistLS0gYS9nZGIvbGludXgtbmF0LmMKKysrKyBiL2dkYi9saW51eC1u YXQuYworQEAgLTQ2NzQsNyArNDY3NCw3IEBAIGxpbnV4X3hmZXJfcGFydGlhbCAoc3RydWN0IHRh cmdldF9vcHMgKm9wcywgZW51bSB0YXJnZXRfb2JqZWN0IG9iamVjdCwKKyAgIExPTkdFU1QgeGZl cjsKKyAKKyAgIGlmIChvYmplY3QgPT0gVEFSR0VUX09CSkVDVF9BVVhWKQorLSAgICByZXR1cm4g cHJvY2ZzX3hmZXJfYXV4diAob3BzLCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwK KysgICAgcmV0dXJuIG1lbW9yeV94ZmVyX2F1eHYgKG9wcywgb2JqZWN0LCBhbm5leCwgcmVhZGJ1 Ziwgd3JpdGVidWYsCisgCQkJICAgICBvZmZzZXQsIGxlbik7CisgCisgICBpZiAob2JqZWN0ID09 IFRBUkdFVF9PQkpFQ1RfT1NEQVRBKQorZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmMgYi9n ZGIvbGludXgtdGRlcC5jCitpbmRleCA2NjM0NzAzLi4zNzc3MGY1IDEwMDY0NAorLS0tIGEvZ2Ri L2xpbnV4LXRkZXAuYworKysrIGIvZ2RiL2xpbnV4LXRkZXAuYworQEAgLTE4LDEyICsxOCw4IEBA CisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNpbmNsdWRlICJkZWZzLmgiCistI2luY2x1ZGUg ImdkYmNvcmUuaCIKKyAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKKyAjaW5jbHVkZSAibGludXgtdGRl cC5oIgorLSNpbmNsdWRlICJvYnNlcnZlci5oIgorLQorLSNpbmNsdWRlICJlbGYtYmZkLmgiCisg CisgLyogVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRv bid0CisgICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVjdHVyZS4g ICovCitAQCAtMTM4LDMwICsxMzQsMyBAQCBsaW51eF9nZXRfc2lnaW5mb190eXBlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCkKKyAKKyAgIHJldHVybiBzaWdpbmZvX3R5cGU7CisgfQorLQorLS8q IE9ic2VydmVyIGZvciB0aGUgZXhlY3V0YWJsZV9jaGFuZ2VkIGV2ZW50LCB0byBjaGVjayB3aGV0 aGVyIHRoZSBuZXcKKy0gICBleGVjIGJpbmFyeSBpcyBhIFBJRSAoUG9zaXRpb24gSW5kZXBlbmRl bnQgRXhlY3V0YWJsZSkgc3BlY2ltZW4sIHdoaWNoCistICAgaXMgY3VycmVudGx5IHVuc3VwcG9y dGVkLiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWNoZWNrX2lzX3BpZV9iaW5hcnkgKHZvaWQpCist eworLSAgRWxmX0ludGVybmFsX0VoZHIgKmVsZl9oZHI7CistCistICBpZiAoIWV4ZWNfYmZkKQor LSAgICByZXR1cm47CistICBlbHNlIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGV4ZWNfYmZkKSAhPSBi ZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQorLSAgICByZXR1cm47CistCistICBpZiAoZWxmX3RkYXRh IChleGVjX2JmZCktPmVsZl9oZWFkZXItPmVfdHlwZSA9PSBFVF9EWU4pCistICAgIHdhcm5pbmcg KF8oIlwKKy1UaGUgY3VycmVudCBiaW5hcnkgaXMgYSBQSUUgKFBvc2l0aW9uIEluZGVwZW5kZW50 IEV4ZWN1dGFibGUpLCB3aGljaFxuXAorLUdEQiBkb2VzIE5PVCBjdXJyZW50bHkgc3VwcG9ydC4g IE1vc3QgZGVidWdnZXIgZmVhdHVyZXMgd2lsbCBmYWlsIGlmIHVzZWRcblwKKy1pbiB0aGlzIHNl c3Npb24uXG4iKSk7CistfQorLQorLXZvaWQKKy1faW5pdGlhbGl6ZV9saW51eF90ZGVwICh2b2lk KQorLXsKKy0gIG9ic2VydmVyX2F0dGFjaF9leGVjdXRhYmxlX2NoYW5nZWQgKGNoZWNrX2lzX3Bp ZV9iaW5hcnkpOworLX0KK2RpZmYgLS1naXQgYS9nZGIvbnRvLXByb2Nmcy5jIGIvZ2RiL250by1w cm9jZnMuYworaW5kZXggMGFkYjA0NS4uZWE4OTMzMSAxMDA2NDQKKy0tLSBhL2dkYi9udG8tcHJv Y2ZzLmMKKysrKyBiL2dkYi9udG8tcHJvY2ZzLmMKK0BAIC02NTIsNyArNjUyLDcgQEAgc3RhdGlj IHZvaWQKKyBwcm9jZnNfcG9zdF9hdHRhY2ggKHBpZF90IHBpZCkKKyB7CisgICBpZiAoZXhlY19i ZmQpCistICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgpOworKyAgICBzb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoMCk7CisgfQorIAorIHN0YXRpYyBwdGlkX3QKK0BAIC0xMjEyLDcg KzEyMTIsNyBAQCBwcm9jZnNfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3Bz LCBjaGFyICpleGVjX2ZpbGUsCisgCisgICBpZiAoZXhlY19iZmQgIT0gTlVMTAorICAgICAgIHx8 IChzeW1maWxlX29iamZpbGUgIT0gTlVMTCAmJiBzeW1maWxlX29iamZpbGUtPm9iZmQgIT0gTlVM TCkpCistICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgpOworKyAgICBzb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoMCk7CisgfQorIAorIHN0YXRpYyB2b2lkCitkaWZmIC0tZ2l0IGEv Z2RiL29iamZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYworaW5kZXggZTU0NDJjYS4uZmIwY2VhOSAx MDA2NDQKKy0tLSBhL2dkYi9vYmpmaWxlcy5jCisrKysgYi9nZGIvb2JqZmlsZXMuYworQEAgLTU0 NCw5ICs1NDQsMTAgQEAgZnJlZV9hbGxfb2JqZmlsZXMgKHZvaWQpCisgfQorIAwKKyAvKiBSZWxv Y2F0ZSBPQkpGSUxFIHRvIE5FV19PRkZTRVRTLiAgVGhlcmUgc2hvdWxkIGJlIE9CSkZJTEUtPk5V TV9TRUNUSU9OUworLSAgIGVudHJpZXMgaW4gbmV3X29mZnNldHMuICAqLworLXZvaWQKKy1vYmpm aWxlX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zm c2V0cyAqbmV3X29mZnNldHMpCisrICAgZW50cmllcyBpbiBuZXdfb2Zmc2V0cy4gIFNFUEFSQVRF X0RFQlVHX09CSkZJTEUgaXMgbm90IHRvdWNoZWQgaGVyZS4gICovCisrCisrc3RhdGljIHZvaWQK KytvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0 aW9uX29mZnNldHMgKm5ld19vZmZzZXRzKQorIHsKKyAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqczsK KyAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRhID0KK0BAIC02MjQsNiArNjI1LDEwIEBA IG9iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlv bl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKKyAgICAgfQorICAgfQorIAorKyAgaWYgKG9iamZpbGUt PnBzeW10YWJzX2FkZHJtYXApCisrICAgIGFkZHJtYXBfcmVsb2NhdGUgKG9iamZpbGUtPnBzeW10 YWJzX2FkZHJtYXAsCisrCQkgICAgICBBTk9GRlNFVCAoZGVsdGEsIFNFQ1RfT0ZGX1RFWFQgKG9i amZpbGUpKSk7CisrCisgICB7CisgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcDsKKyAKK0BA IC03MDEsNiArNzA2LDQ5IEBAIG9iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKKyAgICAgICBleGVjX3Nl dF9zZWN0aW9uX2FkZHJlc3MgKGJmZF9nZXRfZmlsZW5hbWUgKG9iamZpbGUtPm9iZmQpLCBpZHgs CisgCQkJCW9ial9zZWN0aW9uX2FkZHIgKHMpKTsKKyAgICAgfQorK30KKysKKysvKiBSZWxvY2F0 ZSBPQkpGSUxFIHRvIE5FV19PRkZTRVRTLiAgVGhlcmUgc2hvdWxkIGJlIE9CSkZJTEUtPk5VTV9T RUNUSU9OUworKyAgIGVudHJpZXMgaW4gbmV3X29mZnNldHMuICBQcm9jZXNzIGFsc28gT0JKRklM RSdzIFNFUEFSQVRFX0RFQlVHX09CSkZJTEUuCisrCisrICAgVGhlIG51bWJlciBhbmQgb3JkZXJp bmcgb2Ygc2VjdGlvbnMgZG9lcyBkaWZmZXIgYmV0d2VlbiB0aGUgdHdvIG9iamZpbGVzLgorKyAg IE9ubHkgdGhlaXIgbmFtZXMgbWF0Y2guICBBbHNvIHRoZSBmaWxlIG9mZnNldHMgd2lsbCBkaWZm ZXIgKG9iamZpbGUgYmVpbmcKKysgICBwb3NzaWJseSBwcmVsaW5rZWQgYnV0IHNlcGFyYXRlX2Rl YnVnX29iamZpbGUgaXMgcHJvYmFibHkgbm90IHByZWxpbmtlZCkgYnV0CisrICAgdGhlIGluLW1l bW9yeSBhYnNvbHV0ZSBhZGRyZXNzIGFzIHNwZWNpZmllZCBieSBORVdfT0ZGU0VUUyBtdXN0IG1h dGNoIGJvdGgKKysgICBmaWxlcy4gICovCisrCisrdm9pZAorK29iamZpbGVfcmVsb2NhdGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0 cykKKyt7CisrICBvYmpmaWxlX3JlbG9jYXRlMSAob2JqZmlsZSwgbmV3X29mZnNldHMpOworKwor KyAgaWYgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgIT0gTlVMTCkKKysgICAgewor KyAgICAgIHN0cnVjdCBvYmpmaWxlICpkZWJ1Z19vYmpmaWxlID0gb2JqZmlsZS0+c2VwYXJhdGVf ZGVidWdfb2JqZmlsZTsKKysgICAgICBzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKm9iamZpbGVf YWRkcnM7CisrICAgICAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X2RlYnVnX29mZnNldHM7 CisrICAgICAgaW50IG5ld19kZWJ1Z19udW1fc2VjdGlvbnM7CisrICAgICAgc3RydWN0IGNsZWFu dXAgKm15X2NsZWFudXBzOworKworKyAgICAgIG9iamZpbGVfYWRkcnMgPSBidWlsZF9zZWN0aW9u X2FkZHJfaW5mb19mcm9tX29iamZpbGUgKG9iamZpbGUpOworKyAgICAgIG15X2NsZWFudXBzID0g bWFrZV9jbGVhbnVwICh4ZnJlZSwgb2JqZmlsZV9hZGRycyk7CisrCisrICAgICAgLyogSGVyZSBP QkpGSUxFX0FERFJTIGNvbnRhaW4gdGhlIGNvcnJlY3QgYWJzb2x1dGUgYWRkcmVzc2VzLCB0aGUK KysJIHJlbGF0aXZlIG9uZXMgbXVzdCBiZSBhbHJlYWR5IGNyZWF0ZWQgYWNjb3JkaW5nIHRvIGRl YnVnX29iamZpbGUuICAqLworKworKyAgICAgIGFkZHJfaW5mb19tYWtlX3JlbGF0aXZlIChvYmpm aWxlX2FkZHJzLCBkZWJ1Z19vYmpmaWxlLT5vYmZkKTsKKysKKysgICAgICBnZGJfYXNzZXJ0IChk ZWJ1Z19vYmpmaWxlLT5udW1fc2VjdGlvbnMKKysJCSAgPT0gYmZkX2NvdW50X3NlY3Rpb25zIChk ZWJ1Z19vYmpmaWxlLT5vYmZkKSk7CisrICAgICAgbmV3X2RlYnVnX29mZnNldHMgPSBhbGxvY2Eg KFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUworKwkJCQkJCSAoZGVidWdfb2JqZmlsZS0+bnVtX3Nl Y3Rpb25zKSk7CisrICAgICAgcmVsYXRpdmVfYWRkcl9pbmZvX3RvX3NlY3Rpb25fb2Zmc2V0cyAo bmV3X2RlYnVnX29mZnNldHMsCisrCQkJCQkgICAgIGRlYnVnX29iamZpbGUtPm51bV9zZWN0aW9u cywKKysJCQkJCSAgICAgb2JqZmlsZV9hZGRycyk7CisrICAgICAgZG9fY2xlYW51cHMgKG15X2Ns ZWFudXBzKTsKKysKKysgICAgICBvYmpmaWxlX3JlbG9jYXRlMSAoZGVidWdfb2JqZmlsZSwgbmV3 X2RlYnVnX29mZnNldHMpOworKyAgICB9CisgCisgICAvKiBSZWxvY2F0ZSBicmVha3BvaW50cyBh cyBuZWNlc3NhcnksIGFmdGVyIHRoaW5ncyBhcmUgcmVsb2NhdGVkLiAqLworICAgYnJlYWtwb2lu dF9yZV9zZXQgKCk7CitkaWZmIC0tZ2l0IGEvZ2RiL3Byb2Nmcy5jIGIvZ2RiL3Byb2Nmcy5jCitp bmRleCBiNTY5YmFjLi4xNTgyOWMyIDEwMDY0NAorLS0tIGEvZ2RiL3Byb2Nmcy5jCisrKysgYi9n ZGIvcHJvY2ZzLmMKK0BAIC00Mzc2LDcgKzQzNzYsNyBAQCBwcm9jZnNfeGZlcl9wYXJ0aWFsIChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAorIAorICNp ZmRlZiBORVdfUFJPQ19BUEkKKyAgICAgY2FzZSBUQVJHRVRfT0JKRUNUX0FVWFY6CistICAgICAg cmV0dXJuIHByb2Nmc194ZmVyX2F1eHYgKG9wcywgb2JqZWN0LCBhbm5leCwgcmVhZGJ1Ziwgd3Jp dGVidWYsCisrICAgICAgcmV0dXJuIG1lbW9yeV94ZmVyX2F1eHYgKG9wcywgb2JqZWN0LCBhbm5l eCwgcmVhZGJ1Ziwgd3JpdGVidWYsCisgCQkJICAgICAgIG9mZnNldCwgbGVuKTsKKyAjZW5kaWYK KyAKK2RpZmYgLS1naXQgYS9nZGIvc29saWItZGFyd2luLmMgYi9nZGIvc29saWItZGFyd2luLmMK K2luZGV4IDk0MjhkOTIuLjM1OTExNjggMTAwNjQ0CistLS0gYS9nZGIvc29saWItZGFyd2luLmMK KysrKyBiL2dkYi9zb2xpYi1kYXJ3aW4uYworQEAgLTI3Nyw3ICsyNzcsNyBAQCBkYXJ3aW5fc3Bl Y2lhbF9zeW1ib2xfaGFuZGxpbmcgKHZvaWQpCisgCisgLyogU2hhcmVkIGxpYnJhcnkgc3RhcnR1 cCBzdXBwb3J0LiAgU2VlIGRvY3VtZW50YXRpb24gaW4gc29saWItc3ZyNC5jICAqLworIHN0YXRp YyB2b2lkCistZGFyd2luX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK2Rhcndp bl9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIHN0cnVj dCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbDsKKyAgIGNoYXIgKipia3B0X25hbWVwOworZGlmZiAt LWdpdCBhL2dkYi9zb2xpYi1mcnYuYyBiL2dkYi9zb2xpYi1mcnYuYworaW5kZXggYjhkNTUyOC4u MDAyYzU4OSAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1mcnYuYworKysrIGIvZ2RiL3NvbGliLWZy di5jCitAQCAtOTcxLDcgKzk3MSw3IEBAIGZydl9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZv aWQpCisgICovCisgCisgc3RhdGljIHZvaWQKKy1mcnZfc29saWJfY3JlYXRlX2luZmVyaW9yX2hv b2sgKHZvaWQpCisrZnJ2X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkp CisgeworICAgLyogUmVsb2NhdGUgbWFpbiBleGVjdXRhYmxlLiAgKi8KKyAgIGZydl9yZWxvY2F0 ZV9tYWluX2V4ZWN1dGFibGUgKCk7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWlyaXguYyBiL2dk Yi9zb2xpYi1pcml4LmMKK2luZGV4IGEwYzFjZDIuLmY5NGY3ZGMgMTAwNjQ0CistLS0gYS9nZGIv c29saWItaXJpeC5jCisrKysgYi9nZGIvc29saWItaXJpeC5jCitAQCAtMzg2LDcgKzM4Niw3IEBA IGVuYWJsZV9icmVhayAodm9pZCkKKyAKKyAgICBTWU5PUFNJUworIAorLSAgIHZvaWQgc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKCkKKysgICB2b2lkIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rIChpbnQgZnJvbV90dHkpCisgCisgICAgREVTQ1JJUFRJT04KKyAKK0BAIC00MzEsNyArNDMx LDcgQEAgZW5hYmxlX2JyZWFrICh2b2lkKQorICAqLworIAorIHN0YXRpYyB2b2lkCistaXJpeF9z b2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKKytpcml4X3NvbGliX2NyZWF0ZV9pbmZl cmlvcl9ob29rIChpbnQgZnJvbV90dHkpCisgeworICAgc3RydWN0IGluZmVyaW9yICppbmY7Cisg ICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOworZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1udWxsLmMg Yi9nZGIvc29saWItbnVsbC5jCitpbmRleCBiMzljY2RiLi44N2Y3ODQ4IDEwMDY0NAorLS0tIGEv Z2RiL3NvbGliLW51bGwuYworKysrIGIvZ2RiL3NvbGliLW51bGwuYworQEAgLTMyLDcgKzMyLDcg QEAgbnVsbF9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkKKyB9CisgCisgc3RhdGljIHZv aWQKKy1udWxsX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK251bGxfc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKKyB7CisgfQorIAorZGlmZiAtLWdp dCBhL2dkYi9zb2xpYi1vc2YuYyBiL2dkYi9zb2xpYi1vc2YuYworaW5kZXggYzI5NTMzNS4uMGFj YzdmYiAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1vc2YuYworKysrIGIvZ2RiL3NvbGliLW9zZi5j CitAQCAtMzA2LDcgKzMwNiw3IEBAIG9zZl9jbGVhcl9zb2xpYiAodm9pZCkKKyAgICBBbHNvLCB3 aGF0IGlmIGNoaWxkIGhhcyBleGl0KCllZD8gIE11c3QgZXhpdCBsb29wIHNvbWVob3cuICAqLwor IAorIHN0YXRpYyB2b2lkCistb3NmX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQor K29zZl9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIHN0 cnVjdCBpbmZlcmlvciAqaW5mOworICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKK2RpZmYgLS1n aXQgYS9nZGIvc29saWItcGE2NC5jIGIvZ2RiL3NvbGliLXBhNjQuYworaW5kZXggNjM3ZmMxYS4u MTZkNDAxMCAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1wYTY0LmMKKysrKyBiL2dkYi9zb2xpYi1w YTY0LmMKK0BAIC0zMjksNyArMzI5LDcgQEAgYmZkX2xvb2t1cF9zeW1ib2wgKGJmZCAqYWJmZCwg Y2hhciAqc3ltbmFtZSkKKyAgICB3aXRoIHNoYXJlZCBsaWJyYXJpZXMgbWFwcGVkIHNoYXJlYWJs ZS4gICovCisgCisgc3RhdGljIHZvaWQKKy1wYTY0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29r ICh2b2lkKQorK3BhNjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkK KyB7CisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7CisgICB1bnNpZ25lZCBpbnQg ZGxkX2ZsYWdzLCBzdGF0dXM7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXNvbS5jIGIvZ2RiL3Nv bGliLXNvbS5jCitpbmRleCAxNmYwMGEzLi4zN2FjOGNkIDEwMDY0NAorLS0tIGEvZ2RiL3NvbGli LXNvbS5jCisrKysgYi9nZGIvc29saWItc29tLmMKK0BAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0 IHsKKyAgICBtZWFucyBydW5uaW5nIHVudGlsIHRoZSAiX3N0YXJ0IiBpcyBjYWxsZWQuICAqLwor IAorIHN0YXRpYyB2b2lkCistc29tX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQor K3NvbV9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIGVu dW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyICh0YXJnZXRfZ2Ri YXJjaCk7CisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7CitkaWZmIC0tZ2l0IGEv Z2RiL3NvbGliLXNwdS5jIGIvZ2RiL3NvbGliLXNwdS5jCitpbmRleCA5ZjA2ZmE5Li40NWU3ZTY5 IDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLXNwdS5jCisrKysgYi9nZGIvc29saWItc3B1LmMKK0BA IC01MiwyNSArNTIsMTkgQEAKKyBzdGF0aWMgdm9pZAorIHNwdV9yZWxvY2F0ZV9tYWluX2V4ZWN1 dGFibGUgKGludCBzcHVmc19mZCkKKyB7CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKy0g IHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpu ZXdfb2Zmc2V0czsKKyAgIGludCBpOworIAorLSAgZm9yIChvYmpmaWxlID0gc3ltZmlsZV9vYmpm aWxlOworLSAgICAgICBvYmpmaWxlOworLSAgICAgICBvYmpmaWxlID0gb2JqZmlsZS0+c2VwYXJh dGVfZGVidWdfb2JqZmlsZSkKKy0gICAgeworLSAgICAgIG5ld19vZmZzZXRzID0geGNhbGxvYyAo b2JqZmlsZS0+bnVtX3NlY3Rpb25zLAorLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3Qgc2VjdGlvbl9v ZmZzZXRzKSk7CistICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmV3X29m ZnNldHMpOworKyAgaWYgKHN5bWZpbGVfb2JqZmlsZSA9PSBOVUxMKQorKyAgICByZXR1cm47Cisg CistICAgICAgZm9yIChpID0gMDsgaSA8IG9iamZpbGUtPm51bV9zZWN0aW9uczsgaSsrKQorLSAg ICAgICAgbmV3X29mZnNldHMtPm9mZnNldHNbaV0gPSBTUFVBRERSIChzcHVmc19mZCwgMCk7Cisr ICBuZXdfb2Zmc2V0cyA9IGFsbG9jYSAoc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnMKKysJ CQkqIHNpemVvZiAoc3RydWN0IHNlY3Rpb25fb2Zmc2V0cykpOworIAorLSAgICAgIG9iamZpbGVf cmVsb2NhdGUgKG9iamZpbGUsIG5ld19vZmZzZXRzKTsKKy0gICAgICBkb19jbGVhbnVwcyAob2xk X2NoYWluKTsKKy0gICAgfQorKyAgZm9yIChpID0gMDsgaSA8IHN5bWZpbGVfb2JqZmlsZS0+bnVt X3NlY3Rpb25zOyBpKyspCisrICAgIG5ld19vZmZzZXRzLT5vZmZzZXRzW2ldID0gU1BVQUREUiAo c3B1ZnNfZmQsIDApOworKworKyAgb2JqZmlsZV9yZWxvY2F0ZSAoc3ltZmlsZV9vYmpmaWxlLCBu ZXdfb2Zmc2V0cyk7CisgfQorIAorIC8qIFdoZW4gcnVubmluZyBhIHN0YW5kLWFsb25lIFNQRSBl eGVjdXRhYmxlLCB3ZSBtYXkgbmVlZCB0byBza2lwIG9uZSBtb3JlCitAQCAtMzcwLDcgKzM2NCw3 IEBAIHNwdV9lbmFibGVfYnJlYWsgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIAorIC8qIENy ZWF0ZSBpbmZlcmlvciBob29rLiAgKi8KKyBzdGF0aWMgdm9pZAorLXNwdV9zb2xpYl9jcmVhdGVf aW5mZXJpb3JfaG9vayAodm9pZCkKKytzcHVfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGlu dCBmcm9tX3R0eSkKKyB7CisgICAvKiBSZW1vdmUgYWxsIHByZXZpb3VzbHkgaW5zdGFsbGVkIHNv bGliIGJyZWFrcG9pbnRzLiAgQm90aCB0aGUgU1ZSNAorICAgICAgY29kZSBhbmQgdXMgd2lsbCBy ZS1pbnN0YWxsIGFsbCByZXF1aXJlZCBicmVha3BvaW50cy4gICovCitAQCAtNDAxLDcgKzM5NSw3 IEBAIHNwdV9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKKyAgICAgfQorIAorICAg LyogQ2FsbCBTVlI0IGhvb2sgLS0gdGhpcyB3aWxsIHJlLWluc2VydCB0aGUgU1ZSNCBzb2xpYiBi cmVha3BvaW50cy4gICovCistICBzdnI0X3NvX29wcy5zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9v ayAoKTsKKysgIHN2cjRfc29fb3BzLnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9tX3R0 eSk7CisgCisgICAvKiBJZiB0aGUgaW5mZXJpb3IgaXMgc3RhdGljYWxseSBsaW5rZWQgYWdhaW5z dCBsaWJzcGUsIHdlIG5lZWQgdG8gaW5zdGFsbAorICAgICAgb3VyIG93biBzb2xpYiBicmVha3Bv aW50IHJpZ2h0IG5vdy4gIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBpbnN0YWxsZWQgYnkKK2RpZmYg LS1naXQgYS9nZGIvc29saWItc3Vub3MuYyBiL2dkYi9zb2xpYi1zdW5vcy5jCitpbmRleCA5YjJh NDcwLi5iMmExNDdkIDEwMDY0NAorLS0tIGEvZ2RiL3NvbGliLXN1bm9zLmMKKysrKyBiL2dkYi9z b2xpYi1zdW5vcy5jCitAQCAtNzQwLDcgKzc0MCw3IEBAIHN1bm9zX3NwZWNpYWxfc3ltYm9sX2hh bmRsaW5nICh2b2lkKQorICAqLworIAorIHN0YXRpYyB2b2lkCistc3Vub3Nfc29saWJfY3JlYXRl X2luZmVyaW9yX2hvb2sgKHZvaWQpCisrc3Vub3Nfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sg KGludCBmcm9tX3R0eSkKKyB7CisgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOworICAgc3RydWN0 IGluZmVyaW9yICppbmY7CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xp Yi1zdnI0LmMKK2luZGV4IDY4YWFkYzAuLmVmYmU3MTcgMTAwNjQ0CistLS0gYS9nZGIvc29saWIt c3ZyNC5jCisrKysgYi9nZGIvc29saWItc3ZyNC5jCitAQCAtNTAsNiArNTAsNyBAQAorIAorIHN0 YXRpYyBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRz ICh2b2lkKTsKKyBzdGF0aWMgaW50IHN2cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsK KytzdGF0aWMgdm9pZCBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCk7CisgCisg LyogTGluayBtYXAgaW5mbyB0byBpbmNsdWRlIGluIGFuIGFsbG9jYXRlZCBzb19saXN0IGVudHJ5 ICovCisgCitAQCAtNTk5LDExICs2MDAsMTIgQEAgc2Nhbl9keW50YWcgKGludCBkeW50YWcsIGJm ZCAqYWJmZCwgQ09SRV9BRERSICpwdHIpCisgeworICAgaW50IGFyY2hfc2l6ZSwgc3RlcCwgc2Vj dF9zaXplOworICAgbG9uZyBkeW5fdGFnOworLSAgQ09SRV9BRERSIGR5bl9wdHIsIGR5bl9hZGRy OworKyAgQ09SRV9BRERSIGR5bl9wdHI7CisgICBnZGJfYnl0ZSAqYnVmZW5kLCAqYnVmc3RhcnQs ICpidWY7CisgICBFbGYzMl9FeHRlcm5hbF9EeW4gKnhfZHlucF8zMjsKKyAgIEVsZjY0X0V4dGVy bmFsX0R5biAqeF9keW5wXzY0OworICAgc3RydWN0IGJmZF9zZWN0aW9uICpzZWN0OworKyAgc3Ry dWN0IHRhcmdldF9zZWN0aW9uICp0YXJnZXRfc2VjdGlvbjsKKyAKKyAgIGlmIChhYmZkID09IE5V TEwpCisgICAgIHJldHVybiAwOworQEAgLTYxOSw3ICs2MjEsMTMgQEAgc2Nhbl9keW50YWcgKGlu dCBkeW50YWcsIGJmZCAqYWJmZCwgQ09SRV9BRERSICpwdHIpCisgICBzZWN0ID0gYmZkX2dldF9z ZWN0aW9uX2J5X25hbWUgKGFiZmQsICIuZHluYW1pYyIpOworICAgaWYgKHNlY3QgPT0gTlVMTCkK KyAgICAgcmV0dXJuIDA7CistICBkeW5fYWRkciA9IGJmZF9zZWN0aW9uX3ZtYSAoYWJmZCwgc2Vj dCk7CisrCisrICBmb3IgKHRhcmdldF9zZWN0aW9uID0gdGFyZ2V0X2dldF9zZWN0aW9uX3RhYmxl ICgmZXhlY19vcHMpLT5zZWN0aW9uczsKKysgICAgICAgdGFyZ2V0X3NlY3Rpb24gPCB0YXJnZXRf Z2V0X3NlY3Rpb25fdGFibGUgKCZleGVjX29wcyktPnNlY3Rpb25zX2VuZDsKKysgICAgICAgdGFy Z2V0X3NlY3Rpb24rKykKKysgICAgaWYgKHNlY3QgPT0gdGFyZ2V0X3NlY3Rpb24tPnRoZV9iZmRf c2VjdGlvbikKKysgICAgICBicmVhazsKKysgIGdkYl9hc3NlcnQgKHRhcmdldF9zZWN0aW9uIDwg dGFyZ2V0X2dldF9zZWN0aW9uX3RhYmxlICgmZXhlY19vcHMpLT5zZWN0aW9uc19lbmQpOworIAor ICAgLyogUmVhZCBpbiAuZHluYW1pYyBmcm9tIHRoZSBCRkQuICBXZSB3aWxsIGdldCB0aGUgYWN0 dWFsIHZhbHVlCisgICAgICBmcm9tIG1lbW9yeSBsYXRlci4gICovCitAQCAtNjYxLDcgKzY2OSw3 IEBAIHNjYW5fZHludGFnIChpbnQgZHludGFnLCBiZmQgKmFiZmQsIENPUkVfQUREUiAqcHRyKQor IAkgICAgIENPUkVfQUREUiBwdHJfYWRkcjsKKyAKKyAJICAgICBwdHJfdHlwZSA9IGJ1aWx0aW5f dHlwZSAodGFyZ2V0X2dkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOworLQkgICAgIHB0cl9hZGRy ID0gZHluX2FkZHIgKyAoYnVmIC0gYnVmc3RhcnQpICsgYXJjaF9zaXplIC8gODsKKysJICAgICBw dHJfYWRkciA9IHRhcmdldF9zZWN0aW9uLT5hZGRyICsgKGJ1ZiAtIGJ1ZnN0YXJ0KSArIGFyY2hf c2l6ZSAvIDg7CisgCSAgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAocHRyX2FkZHIsIHB0cl9i dWYsIGFyY2hfc2l6ZSAvIDgpID09IDApCisgCSAgICAgICBkeW5fcHRyID0gZXh0cmFjdF90eXBl ZF9hZGRyZXNzIChwdHJfYnVmLCBwdHJfdHlwZSk7CisgCSAgICAgKnB0ciA9IGR5bl9wdHI7CitA QCAtMTI1OCw3ICsxMjY2LDcgQEAgZXhlY19lbnRyeV9wb2ludCAoc3RydWN0IGJmZCAqYWJmZCwg c3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCisgICovCisgCisgc3RhdGljIGludAorLWVuYWJsZV9i cmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKytlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0 X2luZm8gKmluZm8sIGludCBmcm9tX3R0eSkKKyB7CisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Km1zeW1ib2w7CisgICBjaGFyICoqYmtwdF9uYW1lcDsKK0BAIC0xMjc5LDcgKzEyODcsNyBAQCBl bmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisgICAgICBtZWFuIHJfYnJrIGhh cyBhbHJlYWR5IGJlZW4gcmVsb2NhdGVkLiAgQXNzdW1lIHRoZSBkeW5hbWljIGxpbmtlcgorICAg ICAgaXMgdGhlIG9iamVjdCBjb250YWluaW5nIHJfYnJrLiAgKi8KKyAKKy0gIHNvbGliX2FkZCAo TlVMTCwgMCwgJmN1cnJlbnRfdGFyZ2V0LCBhdXRvX3NvbGliX2FkZCk7CisrICBzb2xpYl9hZGQg KE5VTEwsIGZyb21fdHR5LCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKyAgIHN5 bV9hZGRyID0gMDsKKyAgIGlmIChpbmZvLT5kZWJ1Z19iYXNlICYmIHNvbGliX3N2cjRfcl9tYXAg KGluZm8pICE9IDApCisgICAgIHN5bV9hZGRyID0gc29saWJfc3ZyNF9yX2JyayAoaW5mbyk7CitA QCAtMTMzOSw2ICsxMzQ3LDExIEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5m bykKKyAgICAgICBiZmQgKnRtcF9iZmQgPSBOVUxMOworICAgICAgIHN0cnVjdCB0YXJnZXRfb3Bz ICp0bXBfYmZkX3RhcmdldDsKKyAgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBl eDsKKysgICAgICBpbnQgYWRkcl9iaXQgPSBnZGJhcmNoX2FkZHJfYml0ICh0YXJnZXRfZ2RiYXJj aCk7CisrICAgICAgQ09SRV9BRERSIG1hc2sgPSBDT1JFX0FERFJfTUFYOworKworKyAgICAgIGlm IChhZGRyX2JpdCA8IChzaXplb2YgKENPUkVfQUREUikgKiBIT1NUX0NIQVJfQklUKSkKKysJbWFz ayA9ICgoQ09SRV9BRERSKSAxIDw8IGFkZHJfYml0KSAtIDE7CisgCisgICAgICAgc3ltX2FkZHIg PSAwOworIAorQEAgLTE0MDQsNyArMTQxNyw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRf aW5mbyAqaW5mbykKKyAJICBpbmZvLT5kZWJ1Z19sb2FkZXJfbmFtZSA9IHhzdHJkdXAgKGludGVy cF9uYW1lKTsKKyAJICBpbmZvLT5kZWJ1Z19sb2FkZXJfb2Zmc2V0X3AgPSAxOworIAkgIGluZm8t PmRlYnVnX2xvYWRlcl9vZmZzZXQgPSBsb2FkX2FkZHI7CistCSAgc29saWJfYWRkIChOVUxMLCAw LCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKysJICBzb2xpYl9hZGQgKE5VTEws IGZyb21fdHR5LCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKyAJfQorIAorICAg ICAgIC8qIFJlY29yZCB0aGUgcmVsb2NhdGVkIHN0YXJ0IGFuZCBlbmQgYWRkcmVzcyBvZiB0aGUg ZHluYW1pYyBsaW5rZXIKK0BAIC0xNDE0LDE2ICsxNDI3LDIwIEBAIGVuYWJsZV9icmVhayAoc3Ry dWN0IHN2cjRfaW5mbyAqaW5mbykKKyAJeworIAkgIGludGVycF90ZXh0X3NlY3RfbG93ID0KKyAJ ICAgIGJmZF9zZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpICsgbG9hZF9hZGRyOwor KwkgIGludGVycF90ZXh0X3NlY3RfbG93ICY9IG1hc2s7CisgCSAgaW50ZXJwX3RleHRfc2VjdF9o aWdoID0KKyAJICAgIGludGVycF90ZXh0X3NlY3RfbG93ICsgYmZkX3NlY3Rpb25fc2l6ZSAodG1w X2JmZCwgaW50ZXJwX3NlY3QpOworKwkgIGludGVycF90ZXh0X3NlY3RfaGlnaCAmPSBtYXNrOwor IAl9CisgICAgICAgaW50ZXJwX3NlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAodG1wX2Jm ZCwgIi5wbHQiKTsKKyAgICAgICBpZiAoaW50ZXJwX3NlY3QpCisgCXsKKyAJICBpbnRlcnBfcGx0 X3NlY3RfbG93ID0KKyAJICAgIGJmZF9zZWN0aW9uX3ZtYSAodG1wX2JmZCwgaW50ZXJwX3NlY3Qp ICsgbG9hZF9hZGRyOworKwkgIGludGVycF90ZXh0X3NlY3RfbG93ICY9IG1hc2s7CisgCSAgaW50 ZXJwX3BsdF9zZWN0X2hpZ2ggPQorIAkgICAgaW50ZXJwX3BsdF9zZWN0X2xvdyArIGJmZF9zZWN0 aW9uX3NpemUgKHRtcF9iZmQsIGludGVycF9zZWN0KTsKKysJICBpbnRlcnBfdGV4dF9zZWN0X2hp Z2ggJj0gbWFzazsKKyAJfQorIAorICAgICAgIC8qIE5vdyB0cnkgdG8gc2V0IGEgYnJlYWtwb2lu dCBpbiB0aGUgZHluYW1pYyBsaW5rZXIuICAqLworQEAgLTE0NDgsNyArMTQ2NSw3IEBAIGVuYWJs ZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKyAKKyAgICAgICBpZiAoc3ltX2FkZHIg IT0gMCkKKyAJeworLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2Ri YXJjaCwgbG9hZF9hZGRyICsgc3ltX2FkZHIpOworKwkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50ICh0YXJnZXRfZ2RiYXJjaCwgKGxvYWRfYWRkciArIHN5bV9hZGRyKSAmIG1hc2spOwor IAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7CisgCSAgcmV0dXJuIDE7CisgCX0KK0BAIC0xNTE3LDEx MyArMTUzNCwxMzEgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQorIHN0 YXRpYyB2b2lkCisgc3ZyNF9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkKKyB7CisrICBz dnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKKyB9CisgCistLyogUmVsb2NhdGUgdGhl IG1haW4gZXhlY3V0YWJsZS4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1cG9uCist ICAgc3RvcHBpbmcgdGhlIGluZmVyaW9yIHByb2Nlc3MgYXQgdGhlIGVudHJ5IHBvaW50IHRvIHRo ZSBwcm9ncmFtLiAKKy0gICBUaGUgZW50cnkgcG9pbnQgZnJvbSBCRkQgaXMgY29tcGFyZWQgdG8g dGhlIFBDIGFuZCBpZiB0aGV5IGFyZQorLSAgIGRpZmZlcmVudCwgdGhlIG1haW4gZXhlY3V0YWJs ZSBpcyByZWxvY2F0ZWQgYnkgdGhlIHByb3BlciBhbW91bnQuIAorKy8qIERlY2lkZSBpZiB0aGUg b2JqZmlsZSBuZWVkcyB0byBiZSByZWxvY2F0ZWQuICBBcyBpbmRpY2F0ZWQgYWJvdmUsCisrICAg d2Ugd2lsbCBvbmx5IGJlIGhlcmUgd2hlbiBleGVjdXRpb24gaXMgc3RvcHBlZCBhdCB0aGUgYmVn aW5uaW5nCisrICAgb2YgdGhlIHByb2dyYW0uICBSZWxvY2F0aW9uIGlzIG5lY2Vzc2FyeSBpZiB0 aGUgYWRkcmVzcyBhdCB3aGljaAorKyAgIHdlIGFyZSBwcmVzZW50bHkgc3RvcHBlZCBkaWZmZXJz IGZyb20gdGhlIHN0YXJ0IGFkZHJlc3Mgc3RvcmVkIGluCisrICAgdGhlIGV4ZWN1dGFibGUgQU5E IHRoZXJlJ3Mgbm8gaW50ZXJwcmV0ZXIgc2VjdGlvbi4gIFRoZSBjb25kaXRpb24KKysgICByZWdh cmRpbmcgdGhlIGludGVycHJldGVyIHNlY3Rpb24gaXMgdmVyeSBpbXBvcnRhbnQgYmVjYXVzZSBp ZgorKyAgIHRoZXJlICppcyogYW4gaW50ZXJwcmV0ZXIgc2VjdGlvbiwgZXhlY3V0aW9uIHdpbGwg YmVnaW4gdGhlcmUKKysgICBpbnN0ZWFkLiAgV2hlbiB0aGVyZSBpcyBhbiBpbnRlcnByZXRlciBz ZWN0aW9uLCB0aGUgc3RhcnQgYWRkcmVzcworKyAgIGlzIChwcmVzdW1hYmx5KSB1c2VkIGJ5IHRo ZSBpbnRlcnByZXRlciBhdCBzb21lIHBvaW50IHRvIHN0YXJ0CisrICAgZXhlY3V0aW9uIG9mIHRo ZSBwcm9ncmFtLgorKworKyAgIElmIHRoZXJlIGlzIGFuIGludGVycHJldGVyLCBpdCBpcyBub3Jt YWwgZm9yIGl0IHRvIGJlIHNldCB0byBhbgorKyAgIGFyYml0cmFyeSBhZGRyZXNzIGF0IHRoZSBv dXRzZXQuICBUaGUgam9iIG9mIGZpbmRpbmcgaXQgaXMKKysgICBoYW5kbGVkIGluIGVuYWJsZV9i cmVhaygpLgorKworKyAgIFNvLCB0byBzdW1tYXJpemUsIHJlbG9jYXRpb25zIGFyZSBuZWNlc3Nh cnkgd2hlbiB0aGVyZSBpcyBubworKyAgIGludGVycHJldGVyIHNlY3Rpb24gYW5kIHRoZSBzdGFy dCBhZGRyZXNzIG9idGFpbmVkIGZyb20gdGhlCisrICAgZXhlY3V0YWJsZSBpcyBkaWZmZXJlbnQg ZnJvbSB0aGUgYWRkcmVzcyBhdCB3aGljaCBHREIgaXMKKysgICBjdXJyZW50bHkgc3RvcHBlZC4K KyAgICAKKy0gICBBcyB3cml0dGVuIGl0IHdpbGwgb25seSBhdHRlbXB0IHRvIHJlbG9jYXRlIGV4 ZWN1dGFibGVzIHdoaWNoCistICAgbGFjayBpbnRlcnByZXRlciBzZWN0aW9ucy4gIEl0IHNlZW1z IGxpa2VseSB0aGF0IG9ubHkgZHluYW1pYworLSAgIGxpbmtlciBleGVjdXRhYmxlcyB3aWxsIGdl dCByZWxvY2F0ZWQsIHRob3VnaCBpdCBzaG91bGQgd29yaworLSAgIHByb3Blcmx5IGZvciBhIHBv c2l0aW9uLWluZGVwZW5kZW50IHN0YXRpYyBleGVjdXRhYmxlIGFzIHdlbGwuICAqLworKyAgIFsg VGhlIGFzdHV0ZSByZWFkZXIgd2lsbCBub3RlIHRoYXQgd2UgYWxzbyB0ZXN0IHRvIG1ha2Ugc3Vy ZSB0aGF0CisrICAgICB0aGUgZXhlY3V0YWJsZSBpbiBxdWVzdGlvbiBoYXMgdGhlIERZTkFNSUMg ZmxhZyBzZXQuICBJdCBpcyBteQorKyAgICAgb3BpbmlvbiB0aGF0IHRoaXMgdGVzdCBpcyB1bm5l Y2Vzc2FyeSAodW5kZXNpcmFibGUgZXZlbikuICBJdAorKyAgICAgd2FzIGFkZGVkIHRvIGF2b2lk IGluYWR2ZXJ0ZW50IHJlbG9jYXRpb24gb2YgYW4gZXhlY3V0YWJsZQorKyAgICAgd2hvc2UgZV90 eXBlIG1lbWJlciBpbiB0aGUgRUxGIGhlYWRlciBpcyBub3QgRVRfRFlOLiAgVGhlcmUgbWF5Cisr ICAgICBiZSBhIHRpbWUgaW4gdGhlIGZ1dHVyZSB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byBkbyBy ZWxvY2F0aW9ucworKyAgICAgb24gb3RoZXIgdHlwZXMgb2YgZmlsZXMgYXMgd2VsbCBpbiB3aGlj aCBjYXNlIHRoaXMgY29uZGl0aW9uCisrICAgICBzaG91bGQgZWl0aGVyIGJlIHJlbW92ZWQgb3Ig bW9kaWZpZWQgdG8gYWNjb21vZGF0ZSB0aGUgbmV3IGZpbGUKKysgICAgIHR5cGUuICAoRS5nLCBh biBFVF9FWEVDIGV4ZWN1dGFibGUgd2hpY2ggaGFzIGJlZW4gYnVpbHQgdG8gYmUKKysgICAgIHBv c2l0aW9uLWluZGVwZW5kZW50IGNvdWxkIHNhZmVseSBiZSByZWxvY2F0ZWQgYnkgdGhlIE9TIGlm CisrICAgICBkZXNpcmVkLiAgSXQgaXMgdHJ1ZSB0aGF0IHRoaXMgdmlvbGF0ZXMgdGhlIEFCSSwg YnV0IHRoZSBBQkkKKysgICAgIGhhcyBiZWVuIGtub3duIHRvIGJlIGJlbnQgZnJvbSB0aW1lIHRv IHRpbWUuKSAgLSBLZXZpbiwgTm92IDIwMDAuIF0KKysgICAqLworIAorLXN0YXRpYyB2b2lkCist c3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpCisrc3RhdGljIENPUkVfQUREUgor K3N2cjRfc3RhdGljX2V4ZWNfZGlzcGxhY2VtZW50ICh2b2lkKQorIHsKKyAgIGFzZWN0aW9uICpp bnRlcnBfc2VjdDsKKyAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUKKyAgICAgPSBnZXRfdGhy ZWFkX2FyY2hfcmVnY2FjaGUgKGluZmVyaW9yX3B0aWQsIHRhcmdldF9nZGJhcmNoKTsKKyAgIENP UkVfQUREUiBwYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hlKTsKKyAKKy0gIC8qIERlY2lk ZSBpZiB0aGUgb2JqZmlsZSBuZWVkcyB0byBiZSByZWxvY2F0ZWQuICBBcyBpbmRpY2F0ZWQgYWJv dmUsCistICAgICB3ZSB3aWxsIG9ubHkgYmUgaGVyZSB3aGVuIGV4ZWN1dGlvbiBpcyBzdG9wcGVk IGF0IHRoZSBiZWdpbm5pbmcKKy0gICAgIG9mIHRoZSBwcm9ncmFtLiAgUmVsb2NhdGlvbiBpcyBu ZWNlc3NhcnkgaWYgdGhlIGFkZHJlc3MgYXQgd2hpY2gKKy0gICAgIHdlIGFyZSBwcmVzZW50bHkg c3RvcHBlZCBkaWZmZXJzIGZyb20gdGhlIHN0YXJ0IGFkZHJlc3Mgc3RvcmVkIGluCistICAgICB0 aGUgZXhlY3V0YWJsZSBBTkQgdGhlcmUncyBubyBpbnRlcnByZXRlciBzZWN0aW9uLiAgVGhlIGNv bmRpdGlvbgorLSAgICAgcmVnYXJkaW5nIHRoZSBpbnRlcnByZXRlciBzZWN0aW9uIGlzIHZlcnkg aW1wb3J0YW50IGJlY2F1c2UgaWYKKy0gICAgIHRoZXJlICppcyogYW4gaW50ZXJwcmV0ZXIgc2Vj dGlvbiwgZXhlY3V0aW9uIHdpbGwgYmVnaW4gdGhlcmUKKy0gICAgIGluc3RlYWQuICBXaGVuIHRo ZXJlIGlzIGFuIGludGVycHJldGVyIHNlY3Rpb24sIHRoZSBzdGFydCBhZGRyZXNzCistICAgICBp cyAocHJlc3VtYWJseSkgdXNlZCBieSB0aGUgaW50ZXJwcmV0ZXIgYXQgc29tZSBwb2ludCB0byBz dGFydAorLSAgICAgZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLgorLQorLSAgICAgSWYgdGhlcmUg aXMgYW4gaW50ZXJwcmV0ZXIsIGl0IGlzIG5vcm1hbCBmb3IgaXQgdG8gYmUgc2V0IHRvIGFuCist ICAgICBhcmJpdHJhcnkgYWRkcmVzcyBhdCB0aGUgb3V0c2V0LiAgVGhlIGpvYiBvZiBmaW5kaW5n IGl0IGlzCistICAgICBoYW5kbGVkIGluIGVuYWJsZV9icmVhaygpLgorLQorLSAgICAgU28sIHRv IHN1bW1hcml6ZSwgcmVsb2NhdGlvbnMgYXJlIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGlzIG5vCist ICAgICBpbnRlcnByZXRlciBzZWN0aW9uIGFuZCB0aGUgc3RhcnQgYWRkcmVzcyBvYnRhaW5lZCBm cm9tIHRoZQorLSAgICAgZXhlY3V0YWJsZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYWRkcmVzcyBh dCB3aGljaCBHREIgaXMKKy0gICAgIGN1cnJlbnRseSBzdG9wcGVkLgorLSAgICAgCistICAgICBb IFRoZSBhc3R1dGUgcmVhZGVyIHdpbGwgbm90ZSB0aGF0IHdlIGFsc28gdGVzdCB0byBtYWtlIHN1 cmUgdGhhdAorLSAgICAgICB0aGUgZXhlY3V0YWJsZSBpbiBxdWVzdGlvbiBoYXMgdGhlIERZTkFN SUMgZmxhZyBzZXQuICBJdCBpcyBteQorLSAgICAgICBvcGluaW9uIHRoYXQgdGhpcyB0ZXN0IGlz IHVubmVjZXNzYXJ5ICh1bmRlc2lyYWJsZSBldmVuKS4gIEl0CistICAgICAgIHdhcyBhZGRlZCB0 byBhdm9pZCBpbmFkdmVydGVudCByZWxvY2F0aW9uIG9mIGFuIGV4ZWN1dGFibGUKKy0gICAgICAg d2hvc2UgZV90eXBlIG1lbWJlciBpbiB0aGUgRUxGIGhlYWRlciBpcyBub3QgRVRfRFlOLiAgVGhl cmUgbWF5CistICAgICAgIGJlIGEgdGltZSBpbiB0aGUgZnV0dXJlIHdoZW4gaXQgaXMgZGVzaXJh YmxlIHRvIGRvIHJlbG9jYXRpb25zCistICAgICAgIG9uIG90aGVyIHR5cGVzIG9mIGZpbGVzIGFz IHdlbGwgaW4gd2hpY2ggY2FzZSB0aGlzIGNvbmRpdGlvbgorLSAgICAgICBzaG91bGQgZWl0aGVy IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQgdG8gYWNjb21vZGF0ZSB0aGUgbmV3IGZpbGUKKy0gICAg ICAgdHlwZS4gIChFLmcsIGFuIEVUX0VYRUMgZXhlY3V0YWJsZSB3aGljaCBoYXMgYmVlbiBidWls dCB0byBiZQorLSAgICAgICBwb3NpdGlvbi1pbmRlcGVuZGVudCBjb3VsZCBzYWZlbHkgYmUgcmVs b2NhdGVkIGJ5IHRoZSBPUyBpZgorLSAgICAgICBkZXNpcmVkLiAgSXQgaXMgdHJ1ZSB0aGF0IHRo aXMgdmlvbGF0ZXMgdGhlIEFCSSwgYnV0IHRoZSBBQkkKKy0gICAgICAgaGFzIGJlZW4ga25vd24g dG8gYmUgYmVudCBmcm9tIHRpbWUgdG8gdGltZS4pICAtIEtldmluLCBOb3YgMjAwMC4gXQorLSAg ICAgKi8KKy0KKyAgIGludGVycF9zZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGV4ZWNf YmZkLCAiLmludGVycCIpOworICAgaWYgKGludGVycF9zZWN0ID09IE5VTEwgCisgICAgICAgJiYg KGJmZF9nZXRfZmlsZV9mbGFncyAoZXhlY19iZmQpICYgRFlOQU1JQykgIT0gMAorICAgICAgICYm IChleGVjX2VudHJ5X3BvaW50IChleGVjX2JmZCwgJmV4ZWNfb3BzKSAhPSBwYykpCisrICAgIHJl dHVybiBwYyAtIGV4ZWNfZW50cnlfcG9pbnQgKGV4ZWNfYmZkLCAmZXhlY19vcHMpOworKworKyAg cmV0dXJuIDA7CisrfQorKworKy8qIFdlIHJlbG9jYXRlIGFsbCBvZiB0aGUgc2VjdGlvbnMgYnkg dGhlIHNhbWUgYW1vdW50LiAgVGhpcworKyAgIGJlaGF2aW9yIGlzIG1hbmRhdGVkIGJ5IHJlY2Vu dCBlZGl0aW9ucyBvZiB0aGUgU3lzdGVtIFYgQUJJLiAKKysgICBBY2NvcmRpbmcgdG8gdGhlIFN5 c3RlbSBWIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UsCisrICAgRWRpdGlvbiA0LjEsIHBh Z2UgNS01OgorKworKyAgICAgLi4uICBUaG91Z2ggdGhlIHN5c3RlbSBjaG9vc2VzIHZpcnR1YWwg YWRkcmVzc2VzIGZvcgorKyAgICAgaW5kaXZpZHVhbCBwcm9jZXNzZXMsIGl0IG1haW50YWlucyB0 aGUgc2VnbWVudHMnIHJlbGF0aXZlCisrICAgICBwb3NpdGlvbnMuICBCZWNhdXNlIHBvc2l0aW9u LWluZGVwZW5kZW50IGNvZGUgdXNlcyByZWxhdGl2ZQorKyAgICAgYWRkcmVzc2VzaW5nIGJldHdl ZW4gc2VnbWVudHMsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKysgICAgIHZpcnR1YWwgYWRkcmVz c2VzIGluIG1lbW9yeSBtdXN0IG1hdGNoIHRoZSBkaWZmZXJlbmNlCisrICAgICBiZXR3ZWVuIHZp cnR1YWwgYWRkcmVzc2VzIGluIHRoZSBmaWxlLiAgVGhlIGRpZmZlcmVuY2UKKysgICAgIGJldHdl ZW4gdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiBhbnkgc2VnbWVudCBpbiBtZW1vcnkgYW5kCisrICAg ICB0aGUgY29ycmVzcG9uZGluZyB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIGZpbGUgaXMgdGh1cyBh CisrICAgICBzaW5nbGUgY29uc3RhbnQgdmFsdWUgZm9yIGFueSBvbmUgZXhlY3V0YWJsZSBvciBz aGFyZWQKKysgICAgIG9iamVjdCBpbiBhIGdpdmVuIHByb2Nlc3MuICBUaGlzIGRpZmZlcmVuY2Ug aXMgdGhlIGJhc2UKKysgICAgIGFkZHJlc3MuICBPbmUgdXNlIG9mIHRoZSBiYXNlIGFkZHJlc3Mg aXMgdG8gcmVsb2NhdGUgdGhlCisrICAgICBtZW1vcnkgaW1hZ2Ugb2YgdGhlIHByb2dyYW0gZHVy aW5nIGR5bmFtaWMgbGlua2luZy4KKysKKysgICBUaGUgc2FtZSBsYW5ndWFnZSBhbHNvIGFwcGVh cnMgaW4gRWRpdGlvbiA0LjAgb2YgdGhlIFN5c3RlbSBWCisrICAgQUJJIGFuZCBpcyBsZWZ0IHVu c3BlY2lmaWVkIGluIHNvbWUgb2YgdGhlIGVhcmxpZXIgZWRpdGlvbnMuICAqLworKworK3N0YXRp YyBDT1JFX0FERFIKKytzdnI0X2V4ZWNfZGlzcGxhY2VtZW50ICh2b2lkKQorK3sKKysgIGludCBm b3VuZDsKKysgIENPUkVfQUREUiBlbnRyeV9wb2ludDsKKysKKysgIGlmIChleGVjX2JmZCA9PSBO VUxMKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmICh0YXJnZXRfYXV4dl9zZWFyY2ggKCZjdXJy ZW50X3RhcmdldCwgQVRfRU5UUlksICZlbnRyeV9wb2ludCkgPT0gMSkKKysgICAgcmV0dXJuIGVu dHJ5X3BvaW50IC0gZXhlY19lbnRyeV9wb2ludCAoZXhlY19iZmQsICZjdXJyZW50X3RhcmdldCk7 CisrCisrICByZXR1cm4gc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQgKCk7CisrfQorKwor Ky8qIFJlbG9jYXRlIHRoZSBtYWluIGV4ZWN1dGFibGUuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBi ZSBjYWxsZWQgdXBvbgorKyAgIHN0b3BwaW5nIHRoZSBpbmZlcmlvciBwcm9jZXNzIGF0IHRoZSBl bnRyeSBwb2ludCB0byB0aGUgcHJvZ3JhbS4gCisrICAgVGhlIGVudHJ5IHBvaW50IGZyb20gQkZE IGlzIGNvbXBhcmVkIHRvIHRoZSBBVF9FTlRSWSBvZiBBVVhWIGFuZCBpZiB0aGV5IGFyZQorKyAg IGRpZmZlcmVudCwgdGhlIG1haW4gZXhlY3V0YWJsZSBpcyByZWxvY2F0ZWQgYnkgdGhlIHByb3Bl ciBhbW91bnQuICAqLworKworK3N0YXRpYyB2b2lkCisrc3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1 dGFibGUgKHZvaWQpCisreworKyAgQ09SRV9BRERSIGRpc3BsYWNlbWVudCA9IHN2cjRfZXhlY19k aXNwbGFjZW1lbnQgKCk7CisrCisrICAvKiBFdmVuIGlmIERJU1BMQUNFTUVOVCBpcyAwIHN0aWxs IHRyeSB0byByZWxvY2F0ZSBpdCBhcyB0aGlzIGlzIGEgbmV3CisrICAgICBkaWZmZXJlbmNlIG9m IGluLW1lbW9yeSB2cy4gaW4tZmlsZSBhZGRyZXNzZXMgYW5kIHdlIGNvdWxkIGFscmVhZHkKKysg ICAgIHJlbG9jYXRlIHRoZSBleGVjdXRhYmxlIGF0IHRoaXMgZnVuY3Rpb24gdG8gaW1wcm9wZXIg YWRkcmVzcyBiZWZvcmUuICAqLworKworKyAgaWYgKHN5bWZpbGVfb2JqZmlsZSkKKyAgICAgewor LSAgICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgICAgICAgc3RydWN0IHNlY3Rpb25f b2Zmc2V0cyAqbmV3X29mZnNldHM7CistICAgICAgaW50IGksIGNoYW5nZWQ7CistICAgICAgQ09S RV9BRERSIGRpc3BsYWNlbWVudDsKKy0gICAgICAKKy0gICAgICAvKiBJdCBpcyBuZWNlc3Nhcnkg dG8gcmVsb2NhdGUgdGhlIG9iamZpbGUuICBUaGUgYW1vdW50IHRvCistCSByZWxvY2F0ZSBieSBp cyBzaW1wbHkgdGhlIGFkZHJlc3MgYXQgd2hpY2ggd2UgYXJlIHN0b3BwZWQKKy0JIG1pbnVzIHRo ZSBzdGFydGluZyBhZGRyZXNzIGZyb20gdGhlIGV4ZWN1dGFibGUuCistCistCSBXZSByZWxvY2F0 ZSBhbGwgb2YgdGhlIHNlY3Rpb25zIGJ5IHRoZSBzYW1lIGFtb3VudC4gIFRoaXMKKy0JIGJlaGF2 aW9yIGlzIG1hbmRhdGVkIGJ5IHJlY2VudCBlZGl0aW9ucyBvZiB0aGUgU3lzdGVtIFYgQUJJLiAK Ky0JIEFjY29yZGluZyB0byB0aGUgU3lzdGVtIFYgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFj ZSwKKy0JIEVkaXRpb24gNC4xLCBwYWdlIDUtNToKKy0KKy0JICAgLi4uICBUaG91Z2ggdGhlIHN5 c3RlbSBjaG9vc2VzIHZpcnR1YWwgYWRkcmVzc2VzIGZvcgorLQkgICBpbmRpdmlkdWFsIHByb2Nl c3NlcywgaXQgbWFpbnRhaW5zIHRoZSBzZWdtZW50cycgcmVsYXRpdmUKKy0JICAgcG9zaXRpb25z LiAgQmVjYXVzZSBwb3NpdGlvbi1pbmRlcGVuZGVudCBjb2RlIHVzZXMgcmVsYXRpdmUKKy0JICAg YWRkcmVzc2VzaW5nIGJldHdlZW4gc2VnbWVudHMsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKy0J ICAgdmlydHVhbCBhZGRyZXNzZXMgaW4gbWVtb3J5IG11c3QgbWF0Y2ggdGhlIGRpZmZlcmVuY2UK Ky0JICAgYmV0d2VlbiB2aXJ0dWFsIGFkZHJlc3NlcyBpbiB0aGUgZmlsZS4gIFRoZSBkaWZmZXJl bmNlCistCSAgIGJldHdlZW4gdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiBhbnkgc2VnbWVudCBpbiBt ZW1vcnkgYW5kCistCSAgIHRoZSBjb3JyZXNwb25kaW5nIHZpcnR1YWwgYWRkcmVzcyBpbiB0aGUg ZmlsZSBpcyB0aHVzIGEKKy0JICAgc2luZ2xlIGNvbnN0YW50IHZhbHVlIGZvciBhbnkgb25lIGV4 ZWN1dGFibGUgb3Igc2hhcmVkCistCSAgIG9iamVjdCBpbiBhIGdpdmVuIHByb2Nlc3MuICBUaGlz IGRpZmZlcmVuY2UgaXMgdGhlIGJhc2UKKy0JICAgYWRkcmVzcy4gIE9uZSB1c2Ugb2YgdGhlIGJh c2UgYWRkcmVzcyBpcyB0byByZWxvY2F0ZSB0aGUKKy0JICAgbWVtb3J5IGltYWdlIG9mIHRoZSBw cm9ncmFtIGR1cmluZyBkeW5hbWljIGxpbmtpbmcuCistCistCSBUaGUgc2FtZSBsYW5ndWFnZSBh bHNvIGFwcGVhcnMgaW4gRWRpdGlvbiA0LjAgb2YgdGhlIFN5c3RlbSBWCistCSBBQkkgYW5kIGlz IGxlZnQgdW5zcGVjaWZpZWQgaW4gc29tZSBvZiB0aGUgZWFybGllciBlZGl0aW9ucy4gICovCist CistICAgICAgZGlzcGxhY2VtZW50ID0gcGMgLSBleGVjX2VudHJ5X3BvaW50IChleGVjX2JmZCwg JmV4ZWNfb3BzKTsKKy0gICAgICBjaGFuZ2VkID0gMDsKKy0KKy0gICAgICBuZXdfb2Zmc2V0cyA9 IHhjYWxsb2MgKHN5bWZpbGVfb2JqZmlsZS0+bnVtX3NlY3Rpb25zLAorLQkJCSAgICAgc2l6ZW9m IChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzKSk7CistICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVh bnVwICh4ZnJlZSwgbmV3X29mZnNldHMpOworKyAgICAgIGludCBpOworKworKyAgICAgIG5ld19v ZmZzZXRzID0gYWxsb2NhIChzeW1maWxlX29iamZpbGUtPm51bV9zZWN0aW9ucworKwkJCSAgICAq IHNpemVvZiAoKm5ld19vZmZzZXRzKSk7CisgCisgICAgICAgZm9yIChpID0gMDsgaSA8IHN5bWZp bGVfb2JqZmlsZS0+bnVtX3NlY3Rpb25zOyBpKyspCistCXsKKy0JICBpZiAoZGlzcGxhY2VtZW50 ICE9IEFOT0ZGU0VUIChzeW1maWxlX29iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgaSkpCistCSAg ICBjaGFuZ2VkID0gMTsKKy0JICBuZXdfb2Zmc2V0cy0+b2Zmc2V0c1tpXSA9IGRpc3BsYWNlbWVu dDsKKy0JfQorKwluZXdfb2Zmc2V0cy0+b2Zmc2V0c1tpXSA9IGRpc3BsYWNlbWVudDsKKyAKKy0g ICAgICBpZiAoY2hhbmdlZCkKKy0Jb2JqZmlsZV9yZWxvY2F0ZSAoc3ltZmlsZV9vYmpmaWxlLCBu ZXdfb2Zmc2V0cyk7CisrICAgICAgb2JqZmlsZV9yZWxvY2F0ZSAoc3ltZmlsZV9vYmpmaWxlLCBu ZXdfb2Zmc2V0cyk7CisrICAgIH0KKysgIGVsc2UgaWYgKGV4ZWNfYmZkKQorKyAgICB7CisrICAg ICAgYXNlY3Rpb24gKmFzZWN0OworIAorLSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwor KyAgICAgIGZvciAoYXNlY3QgPSBleGVjX2JmZC0+c2VjdGlvbnM7IGFzZWN0ICE9IE5VTEw7IGFz ZWN0ID0gYXNlY3QtPm5leHQpCisrCWV4ZWNfc2V0X3NlY3Rpb25fYWRkcmVzcyAoYmZkX2dldF9m aWxlbmFtZSAoZXhlY19iZmQpLCBhc2VjdC0+aW5kZXgsCisrCQkJCSAgYmZkX3NlY3Rpb25fdm1h IChleGVjX2JmZCwgYXNlY3QpCisrCQkJCSAgKyBkaXNwbGFjZW1lbnQpOworICAgICB9CisgfQor IAorQEAgLTE2MzUsNyArMTY3MCw3IEBAIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICh2 b2lkKQorIAorICAgIFNZTk9QU0lTCisgCistICAgdm9pZCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZl cmlvcl9ob29rICgpCisrICAgdm9pZCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChp bnQgZnJvbV90dHkpCisgCisgICAgREVTQ1JJUFRJT04KKyAKK0BAIC0xNjgwLDcgKzE3MTUsNyBA QCBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCkKKyAgKi8KKyAKKyBzdGF0aWMg dm9pZAorLXN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCisrc3ZyNF9zb2xp Yl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIHN0cnVjdCBpbmZl cmlvciAqaW5mOworICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKK0BAIC0xNjg5LDEyICsxNzI0 LDEzIEBAIHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCisgICBpbmZvID0g Z2V0X3N2cjRfaW5mbyAoUElER0VUIChpbmZlcmlvcl9wdGlkKSk7CisgCisgICAvKiBSZWxvY2F0 ZSB0aGUgbWFpbiBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeS4gICovCistICBzdnI0X3JlbG9jYXRl X21haW5fZXhlY3V0YWJsZSAoKTsKKysgIGlmIChjdXJyZW50X2luZmVyaW9yICgpLT5hdHRhY2hf ZmxhZyA9PSAwKQorKyAgICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKKyAKKyAg IGlmICghc3ZyNF9oYXZlX2xpbmtfbWFwX29mZnNldHMgKCkpCisgICAgIHJldHVybjsKKyAKKy0g IGlmICghZW5hYmxlX2JyZWFrIChpbmZvKSkKKysgIGlmICghZW5hYmxlX2JyZWFrIChpbmZvLCBm cm9tX3R0eSkpCisgICAgIHJldHVybjsKKyAKKyAjaWYgZGVmaW5lZChfU0NPX0RTKQorQEAgLTE5 MTAsOCArMTk0NiwxOSBAQCBlbGZfbG9va3VwX2xpYl9zeW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorIAkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgCQkgICAgICAgY29u c3QgZG9tYWluX2VudW0gZG9tYWluKQorIHsKKy0gIGlmIChvYmpmaWxlLT5vYmZkID09IE5VTEwK Ky0gICAgIHx8IHNjYW5fZHludGFnIChEVF9TWU1CT0xJQywgb2JqZmlsZS0+b2JmZCwgTlVMTCkg IT0gMSkKKysgIGJmZCAqYWJmZDsKKysKKysgIGlmIChvYmpmaWxlID09IHN5bWZpbGVfb2JqZmls ZSkKKysgICAgYWJmZCA9IGV4ZWNfYmZkOworKyAgZWxzZQorKyAgICB7CisrICAgICAgLyogT0JK RklMRSBzaG91bGQgaGF2ZSBiZWVuIHBhc3NlZCBhcyB0aGUgbm9uLWRlYnVnIG9uZS4gICovCisr ICAgICAgZ2RiX2Fzc2VydCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGlu ayA9PSBOVUxMKTsKKysKKysgICAgICBhYmZkID0gb2JqZmlsZS0+b2JmZDsKKysgICAgfQorKwor KyAgaWYgKGFiZmQgPT0gTlVMTCB8fCBzY2FuX2R5bnRhZyAoRFRfU1lNQk9MSUMsIGFiZmQsIE5V TEwpICE9IDEpCisgICAgIHJldHVybiBOVUxMOworIAorICAgcmV0dXJuIGxvb2t1cF9nbG9iYWxf c3ltYm9sX2Zyb21fb2JqZmlsZSAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKK2RpZmYgLS1naXQg YS9nZGIvc29saWItdGFyZ2V0LmMgYi9nZGIvc29saWItdGFyZ2V0LmMKK2luZGV4IDA3NDE1ZTQu LmQxNjBhNzAgMTAwNjQ0CistLS0gYS9nZGIvc29saWItdGFyZ2V0LmMKKysrKyBiL2dkYi9zb2xp Yi10YXJnZXQuYworQEAgLTMwNiw3ICszMDYsNyBAQCBzb2xpYl90YXJnZXRfc3BlY2lhbF9zeW1i b2xfaGFuZGxpbmcgKHZvaWQpCisgfQorIAorIHN0YXRpYyB2b2lkCistc29saWJfdGFyZ2V0X3Nv bGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQorK3NvbGliX3RhcmdldF9zb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQorIHsKKyAgIC8qIE5vdGhpbmcgbmVlZGVk LiAgKi8KKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLmMgYi9nZGIvc29saWIuYworaW5kZXgg MzU3NGU2Mi4uN2VhMzY2MyAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi5jCisrKysgYi9nZGIvc29s aWIuYworQEAgLTk5OCw3ICs5OTgsNyBAQCBjbGVhcl9zb2xpYiAodm9pZCkKKyAKKyAgICBTWU5P UFNJUworIAorLSAgIHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCkKKysgICB2b2lk IHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkpCisgCisgICAgREVTQ1JJ UFRJT04KKyAKK0BAIC0xMDA4LDEwICsxMDA4LDEwIEBAIGNsZWFyX3NvbGliICh2b2lkKQorICAg IFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09LLiAgKi8KKyAKKyB2b2lkCistc29saWJfY3JlYXRl X2luZmVyaW9yX2hvb2sgKHZvaWQpCisrc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBm cm9tX3R0eSkKKyB7CisgICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0 YXJnZXRfZ2RiYXJjaCk7CistICBvcHMtPnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKCk7Cisr ICBvcHMtPnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9tX3R0eSk7CisgfQorIAorIC8q IEdMT0JBTCBGVU5DVElPTgorQEAgLTEwODcsNyArMTA4Nyw2IEBAIHJlbG9hZF9zaGFyZWRfbGli cmFyaWVzIChjaGFyICppZ25vcmVkLCBpbnQgZnJvbV90dHksCisgCQkJIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICplKQorIHsKKyAgIG5vX3NoYXJlZF9saWJyYXJpZXMgKE5VTEwsIGZyb21fdHR5 KTsKKy0gIHNvbGliX2FkZCAoTlVMTCwgZnJvbV90dHksIE5VTEwsIGF1dG9fc29saWJfYWRkKTsK KyAgIC8qIENyZWF0aW5nIGluZmVyaW9yIGhvb2tzIGhlcmUgaGFzIHR3byBwdXJwb3Nlcy4gRmly c3QsIGlmIHdlIHJlbG9hZCAKKyAgICAgIHNoYXJlZCBsaWJyYXJpZXMgdGhlbiB0aGUgYWRkcmVz cyBvZiBzb2xpYiBicmVha3BvaW50IHdlJ3ZlIGNvbXB1dGVkCisgICAgICBwcmV2aW91c2x5IG1p Z2h0IGJlIG5vIGxvbmdlciB2YWxpZC4gIEZvciBleGFtcGxlLCBpZiB3ZSBmb3Jnb3QgdG8gc2V0 CitAQCAtMTEwMiw5ICsxMTAxLDE5IEBAIHJlbG9hZF9zaGFyZWRfbGlicmFyaWVzIChjaGFyICpp Z25vcmVkLCBpbnQgZnJvbV90dHksCisgI2lmZGVmIFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09L CisgICAgICAgU09MSUJfQ1JFQVRFX0lORkVSSU9SX0hPT0sgKFBJREdFVCAoaW5mZXJpb3JfcHRp ZCkpOworICNlbHNlCistICAgICAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCk7CisrICAg ICAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGZyb21fdHR5KTsKKyAjZW5kaWYKKyAgICAg fQorKworKyAgLyogU29tZXRpbWVzIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBob29rIGxvYWRzIGlu aXRpYWwgc2hhcmVkCisrICAgICBsaWJyYXJpZXMsIGFuZCBzb21ldGltZXMgaXQgZG9lc24ndC4g IElmIGl0IGRvZXNuJ3QgRlJPTV9UVFkgd2lsbCBiZQorKyAgICAgaW5jb3JyZWN0bHkgMCBidXQg c3VjaCBzb2xpYiB0YXJnZXRzIHNob3VsZCBiZSBmaXhlZCBhbnl3YXkuICBJZiB3ZQorKyAgICAg bWFkZSBhbGwgdGhlIGluZmVyaW9yIGhvb2sgbWV0aG9kcyBjb25zaXN0ZW50LCB0aGlzIGNhbGwg Y291bGQgYmUKKysgICAgIHJlbW92ZWQuICBDYWxsIGl0IG9ubHkgYWZ0ZXIgdGhlIHNvbGliIHRh cmdldCBoYXMgYmVlbiBpbml0aWFsaXplZCBieQorKyAgICAgc29saWJfY3JlYXRlX2luZmVyaW9y X2hvb2suICAqLworKworKyAgc29saWJfYWRkIChOVUxMLCAwLCBOVUxMLCBhdXRvX3NvbGliX2Fk ZCk7CisrCisgICAvKiBXZSBoYXZlIHVubG9hZGVkIGFuZCB0aGVuIHJlbG9hZGVkIGRlYnVnIGlu Zm8gZm9yIGFsbCBzaGFyZWQgbGlicmFyaWVzLgorICAgICAgSG93ZXZlciwgZnJhbWVzIG1heSBz dGlsbCByZWZlcmVuY2UgdGhlbSwgZm9yIGV4YW1wbGUgYSBmcmFtZSdzIAorICAgICAgdW53aW5k ZXIgbWlnaHQgc3RpbGwgcG9pbnQgb2YgRFdBUkYgRkRFIHN0cnVjdHVyZXMgdGhhdCBhcmUgbm93 IGZyZWVkLgorZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi5oIGIvZ2RiL3NvbGliLmgKK2luZGV4IGNj YzViNjMuLmFiZTVlMTkgMTAwNjQ0CistLS0gYS9nZGIvc29saWIuaAorKysrIGIvZ2RiL3NvbGli LmgKK0BAIC00MSw3ICs0MSw3IEBAIGV4dGVybiBpbnQgc29saWJfcmVhZF9zeW1ib2xzIChzdHJ1 Y3Qgc29fbGlzdCAqLCBpbnQpOworICAgIGFkZHJlc3NlcyB0byB3aGljaCB0aGV5IGFyZSBsaW5r ZWQsIGFuZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvCisgICAgcmVhZCBpbiB0aGVpciBzeW1i b2xzIGF0IGEgbGF0ZXIgdGltZS4gICovCisgCistZXh0ZXJuIHZvaWQgc29saWJfY3JlYXRlX2lu ZmVyaW9yX2hvb2sgKHZvaWQpOworK2V4dGVybiB2b2lkIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rIChpbnQgZnJvbV90dHkpOworIAorIC8qIElmIEFERFIgbGllcyBpbiBhIHNoYXJlZCBsaWJy YXJ5LCByZXR1cm4gaXRzIG5hbWUuICAqLworIAorZGlmZiAtLWdpdCBhL2dkYi9zb2xpc3QuaCBi L2dkYi9zb2xpc3QuaAoraW5kZXggMDA1ZThmNy4uOTcyNGZlNyAxMDA2NDQKKy0tLSBhL2dkYi9z b2xpc3QuaAorKysrIGIvZ2RiL3NvbGlzdC5oCitAQCAtODcsNyArODcsNyBAQCBzdHJ1Y3QgdGFy Z2V0X3NvX29wcworICAgICB2b2lkICgqY2xlYXJfc29saWIpICh2b2lkKTsKKyAKKyAgICAgLyog VGFyZ2V0IGRlcGVuZGVudCBjb2RlIHRvIHJ1biBhZnRlciBjaGlsZCBwcm9jZXNzIGZvcmsuICAq LworLSAgICB2b2lkICgqc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2spICh2b2lkKTsKKysgICAg dm9pZCAoKnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKSAoaW50IGZyb21fdHR5KTsKKyAKKyAg ICAgLyogRG8gYWRkaXRpb25hbCBzeW1ib2wgaGFuZGxpbmcsIGxvb2t1cCwgZXRjLiBhZnRlciBz eW1ib2xzCisgICAgICAgIGZvciBhIHNoYXJlZCBvYmplY3QgaGF2ZSBiZWVuIGxvYWRlZC4gICov CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1maWxlLmMKK2luZGV4IGMzMWI3 MmEuLjZkN2ZhMTAgMTAwNjQ0CistLS0gYS9nZGIvc3ltZmlsZS5jCisrKysgYi9nZGIvc3ltZmls ZS5jCitAQCAtNTM2LDQwICs1MzYsMTUxIEBAIHBsYWNlX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNl Y3Rpb24gKnNlY3QsIHZvaWQgKm9iaikKKyAgIGFyZy0+bG93ZXN0ID0gc3RhcnRfYWRkciArIGJm ZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0KTsKKyB9CisgCistLyogUGFyc2UgdGhlIHVzZXIncyBp ZGVhIG9mIGFuIG9mZnNldCBmb3IgZHluYW1pYyBsaW5raW5nLCBpbnRvIG91ciBpZGVhCistICAg b2YgaG93IHRvIHJlcHJlc2VudCBpdCBmb3IgZmFzdCBzeW1ib2wgcmVhZGluZy4gIFRoaXMgaXMg dGhlIGRlZmF1bHQKKy0gICB2ZXJzaW9uIG9mIHRoZSBzeW1fZm5zLnN5bV9vZmZzZXRzIGZ1bmN0 aW9uIGZvciBzeW1ib2wgcmVhZGVycyB0aGF0CistICAgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGlu ZyBzcGVjaWFsLiAgSXQgYWxsb2NhdGVzIGEgc2VjdGlvbl9vZmZzZXRzIHRhYmxlCistICAgZm9y IHRoZSBvYmplY3RmaWxlIE9CSkZJTEUgYW5kIHN0dWZmcyBBRERSIGludG8gYWxsIG9mIHRoZSBv ZmZzZXRzLiAgKi8KKysvKiBCdWlsZCAoYWxsb2NhdGUgYW5kIHBvcHVsYXRlKSBzdHJ1Y3Qgc2Vj dGlvbl9hZGRyX2luZm8gd2l0aCBhYnNvbHV0ZQorKyAgIGFkZHJlc3NlcyBmcm9tIE9CSkZJTEUt Pk9CRkQgYW5kIE9CSkZJTEUtPlNFQ1RJT05fT0ZGU0VUUy4gICovCisrCisrc3RydWN0IHNlY3Rp b25fYWRkcl9pbmZvICoKKytidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIHN0cnVjdCB0YXJnZXRfc2VjdGlvbiAqc2Vj dGlvbnMgPSBOVUxMLCAqc2VjdGlvbnNfZW5kOworKyAgc3RydWN0IHRhcmdldF9zZWN0aW9uICpw OworKyAgaW50IGFkZHJfYml0ID0gZ2RiYXJjaF9hZGRyX2JpdCAob2JqZmlsZS0+Z2RiYXJjaCk7 CisrICBDT1JFX0FERFIgbWFzayA9IENPUkVfQUREUl9NQVg7CisrICBzdHJ1Y3Qgc2VjdGlvbl9h ZGRyX2luZm8gKnJldHZhbDsKKysgIHN0cnVjdCBjbGVhbnVwICpteV9jbGVhbnVwczsKKysKKysg IGlmIChidWlsZF9zZWN0aW9uX3RhYmxlIChvYmpmaWxlLT5vYmZkLCAmc2VjdGlvbnMsICZzZWN0 aW9uc19lbmQpKQorKyAgICBlcnJvciAoXygiQ2FuJ3QgZmluZCB0aGUgZmlsZSBzZWN0aW9ucyBp biBgJXMnOiAlcyIpLAorKwkgICBiZmRfZ2V0X2ZpbGVuYW1lIChvYmpmaWxlLT5vYmZkKSwgYmZk X2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworKyAgbXlfY2xlYW51cHMgPSBtYWtlX2NsZWFu dXAgKHhmcmVlLCBzZWN0aW9ucyk7CisrCisrICBpZiAoYWRkcl9iaXQgPCAoc2l6ZW9mIChDT1JF X0FERFIpICogSE9TVF9DSEFSX0JJVCkpCisrICAgIG1hc2sgPSAoKENPUkVfQUREUikgMSA8PCBh ZGRyX2JpdCkgLSAxOworKworKyAgZm9yIChwID0gc2VjdGlvbnM7IHAgPCBzZWN0aW9uc19lbmQ7 IHArKykKKysgICAgeworKyAgICAgIENPUkVfQUREUiBiYXNlYWRkcjsKKysKKysgICAgICBnZGJf YXNzZXJ0IChwLT50aGVfYmZkX3NlY3Rpb24tPmluZGV4IDwgb2JqZmlsZS0+bnVtX3NlY3Rpb25z KTsKKysgICAgICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMs CisrCQkJICAgcC0+dGhlX2JmZF9zZWN0aW9uLT5pbmRleCk7CisrCisrICAgICAgcC0+YWRkciA9 IChwLT5hZGRyICsgYmFzZWFkZHIpICYgbWFzazsKKysgICAgICBwLT5lbmRhZGRyID0gKHAtPmVu ZGFkZHIgKyBiYXNlYWRkcikgJiBtYXNrOworKyAgICB9CisrCisrICByZXR2YWwgPSBidWlsZF9z ZWN0aW9uX2FkZHJfaW5mb19mcm9tX3NlY3Rpb25fdGFibGUgKHNlY3Rpb25zLCBzZWN0aW9uc19l bmQpOworKworKyAgZG9fY2xlYW51cHMgKG15X2NsZWFudXBzKTsKKysKKysgIHJldHVybiByZXR2 YWw7CisrfQorKworKy8qIFN0b3JlIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyBhcyBwcmVwYXJl ZCAobWFkZSByZWxhdGl2ZSBhbmQgd2l0aCBTRUNUSU5ERVgKKysgICBmaWxsZWQtaW4pIGJ5IGFk ZHJfaW5mb19tYWtlX3JlbGF0aXZlIGludG8gU0VDVElPTl9PRkZTRVRTIG9mIE5VTV9TRUNUSU9O UworKyAgIGVudHJpZXMuICAqLworIAorIHZvaWQKKy1kZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAq YWRkcnMpCisrcmVsYXRpdmVfYWRkcl9pbmZvX3RvX3NlY3Rpb25fb2Zmc2V0cyAoc3RydWN0IHNl Y3Rpb25fb2Zmc2V0cyAqc2VjdGlvbl9vZmZzZXRzLAorKwkJCQkgICAgICAgaW50IG51bV9zZWN0 aW9ucywKKysJCQkJICAgICAgIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMpCisgewor ICAgaW50IGk7CisgCistICBvYmpmaWxlLT5udW1fc2VjdGlvbnMgPSBiZmRfY291bnRfc2VjdGlv bnMgKG9iamZpbGUtPm9iZmQpOworLSAgb2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzID0gKHN0cnVj dCBzZWN0aW9uX29mZnNldHMgKikKKy0gICAgb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZp bGVfb2JzdGFjaywKKy0JCSAgIFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUyAob2JqZmlsZS0+bnVt X3NlY3Rpb25zKSk7CistICBtZW1zZXQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgMCwKKy0J ICBTSVpFT0ZfTl9TRUNUSU9OX09GRlNFVFMgKG9iamZpbGUtPm51bV9zZWN0aW9ucykpOworKyAg bWVtc2V0IChzZWN0aW9uX29mZnNldHMsIDAsIFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUyAobnVt X3NlY3Rpb25zKSk7CisgCistICAvKiBOb3cgY2FsY3VsYXRlIG9mZnNldHMgZm9yIHNlY3Rpb24g dGhhdCB3ZXJlIHNwZWNpZmllZCBieSB0aGUKKy0gICAgIGNhbGxlci4gKi8KKysgIC8qIE5vdyBj YWxjdWxhdGUgb2Zmc2V0cyBmb3Igc2VjdGlvbiB0aGF0IHdlcmUgc3BlY2lmaWVkIGJ5IHRoZSBj YWxsZXIuICovCisgICBmb3IgKGkgPSAwOyBpIDwgYWRkcnMtPm51bV9zZWN0aW9ucyAmJiBhZGRy cy0+b3RoZXJbaV0ubmFtZTsgaSsrKQorICAgICB7CistICAgICAgc3RydWN0IG90aGVyX3NlY3Rp b25zICpvc3AgOworKyAgICAgIHN0cnVjdCBvdGhlcl9zZWN0aW9ucyAqb3NwOworIAorLSAgICAg IG9zcCA9ICZhZGRycy0+b3RoZXJbaV0gOworKyAgICAgIG9zcCA9ICZhZGRycy0+b3RoZXJbaV07 CisgICAgICAgaWYgKG9zcC0+YWRkciA9PSAwKQorICAgCWNvbnRpbnVlOworIAorICAgICAgIC8q IFJlY29yZCBhbGwgc2VjdGlvbnMgaW4gb2Zmc2V0cyAqLworICAgICAgIC8qIFRoZSBzZWN0aW9u X29mZnNldHMgaW4gdGhlIG9iamZpbGUgYXJlIGhlcmUgZmlsbGVkIGluIHVzaW5nCisgICAgICAg ICAgdGhlIEJGRCBpbmRleC4gKi8KKy0gICAgICAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzKS0+ b2Zmc2V0c1tvc3AtPnNlY3RpbmRleF0gPSBvc3AtPmFkZHI7CisrICAgICAgc2VjdGlvbl9vZmZz ZXRzLT5vZmZzZXRzW29zcC0+c2VjdGluZGV4XSA9IG9zcC0+YWRkcjsKKysgICAgfQorK30KKysK KysvKiBSZWxhdGl2aXplIGFic29sdXRlIGFkZHJlc3NlcyBpbiBBRERSUyBpbnRvIG9mZnNldHMg YmFzZWQgb24gQUJGRC4gIEZpbGwtaW4KKysgICBhbHNvIFNFQ1RJTkRFWGVzIHRoZXJlLiAgKi8K KysKKyt2b2lkCisrYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgKHN0cnVjdCBzZWN0aW9uX2FkZHJf aW5mbyAqYWRkcnMsIGJmZCAqYWJmZCkKKyt7CisrICBhc2VjdGlvbiAqbG93ZXJfc2VjdDsKKysg IGFzZWN0aW9uICpzZWN0OworKyAgQ09SRV9BRERSIGxvd2VyX29mZnNldDsKKysgIGludCBpOwor KworKyAgLyogRmluZCBsb3dlc3QgbG9hZGFibGUgc2VjdGlvbiB0byBiZSB1c2VkIGFzIHN0YXJ0 aW5nIHBvaW50IGZvcgorKyAgICAgY29udGluZ3VvdXMgc2VjdGlvbnMuIEZJWE1FISEgd29uJ3Qg d29yayB3aXRob3V0IGNhbGwgdG8gZmluZAorKyAgICAgLnRleHQgZmlyc3QsIGJ1dCB0aGlzIGFz c3VtZXMgdGV4dCBpcyBsb3dlc3Qgc2VjdGlvbi4gKi8KKysgIGxvd2VyX3NlY3QgPSBiZmRfZ2V0 X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi50ZXh0Iik7CisrICBpZiAobG93ZXJfc2VjdCA9PSBO VUxMKQorKyAgICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKGFiZmQsIGZpbmRfbG93ZXN0X3NlY3Rp b24sICZsb3dlcl9zZWN0KTsKKysgIGlmIChsb3dlcl9zZWN0ID09IE5VTEwpCisrICAgIHsKKysg ICAgICB3YXJuaW5nIChfKCJubyBsb2FkYWJsZSBzZWN0aW9ucyBmb3VuZCBpbiBhZGRlZCBzeW1i b2wtZmlsZSAlcyIpLAorKwkgICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOworKyAgICAg IGxvd2VyX29mZnNldCA9IDA7CisrICAgIH0KKysgIGVsc2UKKysgICAgbG93ZXJfb2Zmc2V0ID0g YmZkX3NlY3Rpb25fdm1hIChiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwgbG93ZXJfc2VjdCk7Cisr CisrICAvKiBDYWxjdWxhdGUgb2Zmc2V0cyBmb3IgdGhlIGxvYWRhYmxlIHNlY3Rpb25zLgorKyAg ICAgRklYTUUhIFNlY3Rpb25zIG11c3QgYmUgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBsb2FkYWJs ZSBzZWN0aW9uCisrICAgICBzbyB0aGF0IGNvbnRpZ3VvdXMgc2VjdGlvbnMgY2FuIHVzZSB0aGUg bG93ZXItb2Zmc2V0ISEhCisrCisrICAgICBBZGp1c3Qgb2Zmc2V0cyBpZiB0aGUgc2VnbWVudHMg YXJlIG5vdCBjb250aWd1b3VzLgorKyAgICAgSWYgdGhlIHNlY3Rpb24gaXMgY29udGlndW91cywg aXRzIG9mZnNldCBzaG91bGQgYmUgc2V0IHRvCisrICAgICB0aGUgb2Zmc2V0IG9mIHRoZSBoaWdo ZXN0IGxvYWRhYmxlIHNlY3Rpb24gbG93ZXIgdGhhbiBpdAorKyAgICAgKHRoZSBsb2FkYWJsZSBz ZWN0aW9uIGRpcmVjdGx5IGJlbG93IGl0IGluIG1lbW9yeSkuCisrICAgICB0aGlzX29mZnNldCA9 IGxvd2VyX29mZnNldCA9IGxvd2VyX2FkZHIgLSBsb3dlcl9vcmlnX2FkZHIgKi8KKysKKysgIGZv ciAoaSA9IDA7IGkgPCBhZGRycy0+bnVtX3NlY3Rpb25zICYmIGFkZHJzLT5vdGhlcltpXS5uYW1l OyBpKyspCisrICAgIHsKKysgICAgICBpZiAoYWRkcnMtPm90aGVyW2ldLmFkZHIgIT0gMCkKKysJ eworKwkgIHNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgYWRkcnMtPm90aGVy W2ldLm5hbWUpOworKwkgIGlmIChzZWN0KQorKwkgICAgeworKwkgICAgICBhZGRycy0+b3RoZXJb aV0uYWRkciAtPSBiZmRfc2VjdGlvbl92bWEgKGFiZmQsIHNlY3QpOworKwkgICAgICBsb3dlcl9v ZmZzZXQgPSBhZGRycy0+b3RoZXJbaV0uYWRkcjsKKysJICAgICAgLyogVGhpcyBpcyB0aGUgaW5k ZXggdXNlZCBieSBCRkQuICovCisrCSAgICAgIGFkZHJzLT5vdGhlcltpXS5zZWN0aW5kZXggPSBz ZWN0LT5pbmRleDsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIHdhcm5pbmcg KF8oInNlY3Rpb24gJXMgbm90IGZvdW5kIGluICVzIiksIGFkZHJzLT5vdGhlcltpXS5uYW1lLAor KwkJICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKKysJICAgICAgYWRkcnMtPm90aGVy W2ldLmFkZHIgPSAwOworKwkgICAgfQorKwl9CisrICAgICAgZWxzZQorKwlhZGRycy0+b3RoZXJb aV0uYWRkciA9IGxvd2VyX29mZnNldDsKKyAgICAgfQorK30KKysKKysvKiBQYXJzZSB0aGUgdXNl cidzIGlkZWEgb2YgYW4gb2Zmc2V0IGZvciBkeW5hbWljIGxpbmtpbmcsIGludG8gb3VyIGlkZWEK KysgICBvZiBob3cgdG8gcmVwcmVzZW50IGl0IGZvciBmYXN0IHN5bWJvbCByZWFkaW5nLiAgVGhp cyBpcyB0aGUgZGVmYXVsdAorKyAgIHZlcnNpb24gb2YgdGhlIHN5bV9mbnMuc3ltX29mZnNldHMg ZnVuY3Rpb24gZm9yIHN5bWJvbCByZWFkZXJzIHRoYXQKKysgICBkb24ndCBuZWVkIHRvIGRvIGFu eXRoaW5nIHNwZWNpYWwuICBJdCBhbGxvY2F0ZXMgYSBzZWN0aW9uX29mZnNldHMgdGFibGUKKysg ICBmb3IgdGhlIG9iamVjdGZpbGUgT0JKRklMRSBhbmQgc3R1ZmZzIEFERFIgaW50byBhbGwgb2Yg dGhlIG9mZnNldHMuICAqLworKworK3ZvaWQKKytkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cyAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRk cnMpCisreworKyAgb2JqZmlsZS0+bnVtX3NlY3Rpb25zID0gYmZkX2NvdW50X3NlY3Rpb25zIChv YmpmaWxlLT5vYmZkKTsKKysgIG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cyA9IChzdHJ1Y3Qgc2Vj dGlvbl9vZmZzZXRzICopCisrICAgIG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29i c3RhY2ssCisrCQkgICBTSVpFT0ZfTl9TRUNUSU9OX09GRlNFVFMgKG9iamZpbGUtPm51bV9zZWN0 aW9ucykpOworKyAgcmVsYXRpdmVfYWRkcl9pbmZvX3RvX3NlY3Rpb25fb2Zmc2V0cyAob2JqZmls ZS0+c2VjdGlvbl9vZmZzZXRzLAorKwkJCQkJIG9iamZpbGUtPm51bV9zZWN0aW9ucywgYWRkcnMp OworIAorICAgLyogRm9yIHJlbG9jYXRhYmxlIGZpbGVzLCBhbGwgbG9hZGFibGUgc2VjdGlvbnMg d2lsbCBzdGFydCBhdCB6ZXJvLgorICAgICAgVGhlIHplcm8gaXMgbWVhbmluZ2xlc3MsIHNvIHRy eSB0byBwaWNrIGFyYml0cmFyeSBhZGRyZXNzZXMgc3VjaAorQEAgLTgwMyw2NSArOTE0LDggQEAg c3ltc19mcm9tX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAorICAgICAgV2Ug bm8gbG9uZ2VyIHdhcm4gaWYgdGhlIGxvd2VzdCBzZWN0aW9uIGlzIG5vdCBhIHRleHQgc2VnbWVu dCAoYXMKKyAgICAgIGhhcHBlbnMgZm9yIHRoZSBQQTY0IHBvcnQuICAqLworLSAgaWYgKCFtYWlu bGluZSAmJiBhZGRycyAmJiBhZGRycy0+b3RoZXJbMF0ubmFtZSkKKy0gICAgeworLSAgICAgIGFz ZWN0aW9uICpsb3dlcl9zZWN0OworLSAgICAgIGFzZWN0aW9uICpzZWN0OworLSAgICAgIENPUkVf QUREUiBsb3dlcl9vZmZzZXQ7CistICAgICAgaW50IGk7CistCistICAgICAgLyogRmluZCBsb3dl c3QgbG9hZGFibGUgc2VjdGlvbiB0byBiZSB1c2VkIGFzIHN0YXJ0aW5nIHBvaW50IGZvcgorLSAg ICAgICAgIGNvbnRpbmd1b3VzIHNlY3Rpb25zLiBGSVhNRSEhIHdvbid0IHdvcmsgd2l0aG91dCBj YWxsIHRvIGZpbmQKKy0JIC50ZXh0IGZpcnN0LCBidXQgdGhpcyBhc3N1bWVzIHRleHQgaXMgbG93 ZXN0IHNlY3Rpb24uICovCistICAgICAgbG93ZXJfc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9u YW1lIChvYmpmaWxlLT5vYmZkLCAiLnRleHQiKTsKKy0gICAgICBpZiAobG93ZXJfc2VjdCA9PSBO VUxMKQorLQliZmRfbWFwX292ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGZpbmRfbG93ZXN0 X3NlY3Rpb24sCistCQkJICAgICAgICZsb3dlcl9zZWN0KTsKKy0gICAgICBpZiAobG93ZXJfc2Vj dCA9PSBOVUxMKQorLQl7CistCSAgd2FybmluZyAoXygibm8gbG9hZGFibGUgc2VjdGlvbnMgZm91 bmQgaW4gYWRkZWQgc3ltYm9sLWZpbGUgJXMiKSwKKy0JCSAgIG9iamZpbGUtPm5hbWUpOworLQkg IGxvd2VyX29mZnNldCA9IDA7CistCX0KKy0gICAgICBlbHNlCistCWxvd2VyX29mZnNldCA9IGJm ZF9zZWN0aW9uX3ZtYSAob2JqZmlsZS0+b2JmZCwgbG93ZXJfc2VjdCk7CistCistICAgICAgLyog Q2FsY3VsYXRlIG9mZnNldHMgZm9yIHRoZSBsb2FkYWJsZSBzZWN0aW9ucy4KKy0gCSBGSVhNRSEg U2VjdGlvbnMgbXVzdCBiZSBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIGxvYWRhYmxlIHNlY3Rpb24K Ky0gCSBzbyB0aGF0IGNvbnRpZ3VvdXMgc2VjdGlvbnMgY2FuIHVzZSB0aGUgbG93ZXItb2Zmc2V0 ISEhCistCistICAgICAgICAgQWRqdXN0IG9mZnNldHMgaWYgdGhlIHNlZ21lbnRzIGFyZSBub3Qg Y29udGlndW91cy4KKy0gICAgICAgICBJZiB0aGUgc2VjdGlvbiBpcyBjb250aWd1b3VzLCBpdHMg b2Zmc2V0IHNob3VsZCBiZSBzZXQgdG8KKy0gCSB0aGUgb2Zmc2V0IG9mIHRoZSBoaWdoZXN0IGxv YWRhYmxlIHNlY3Rpb24gbG93ZXIgdGhhbiBpdAorLSAJICh0aGUgbG9hZGFibGUgc2VjdGlvbiBk aXJlY3RseSBiZWxvdyBpdCBpbiBtZW1vcnkpLgorLSAJIHRoaXNfb2Zmc2V0ID0gbG93ZXJfb2Zm c2V0ID0gbG93ZXJfYWRkciAtIGxvd2VyX29yaWdfYWRkciAqLworLQorLSAgICAgICAgZm9yIChp ID0gMDsgaSA8IGFkZHJzLT5udW1fc2VjdGlvbnMgJiYgYWRkcnMtPm90aGVyW2ldLm5hbWU7IGkr KykKKy0gICAgICAgICAgeworLSAgICAgICAgICAgIGlmIChhZGRycy0+b3RoZXJbaV0uYWRkciAh PSAwKQorLSAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBzZWN0ID0gYmZkX2dldF9z ZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWRkcnMtPm90aGVyW2ldLm5hbWUpOworLSAgICAgICAg ICAgICAgICBpZiAoc2VjdCkKKy0gICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAg ICAgICBhZGRycy0+b3RoZXJbaV0uYWRkcgorLSAgICAgICAgICAgICAgICAgICAgICAtPSBiZmRf c2VjdGlvbl92bWEgKG9iamZpbGUtPm9iZmQsIHNlY3QpOworLSAgICAgICAgICAgICAgICAgICAg bG93ZXJfb2Zmc2V0ID0gYWRkcnMtPm90aGVyW2ldLmFkZHI7CistICAgICAgICAgICAgICAgICAg ICAvKiBUaGlzIGlzIHRoZSBpbmRleCB1c2VkIGJ5IEJGRC4gKi8KKy0gICAgICAgICAgICAgICAg ICAgIGFkZHJzLT5vdGhlcltpXS5zZWN0aW5kZXggPSBzZWN0LT5pbmRleCA7CistICAgICAgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgewor LSAgICAgICAgICAgICAgICAgICAgd2FybmluZyAoXygic2VjdGlvbiAlcyBub3QgZm91bmQgaW4g JXMiKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJzLT5vdGhlcltpXS5uYW1l LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZmlsZS0+bmFtZSk7CistICAgICAg ICAgICAgICAgICAgICBhZGRycy0+b3RoZXJbaV0uYWRkciA9IDA7CistICAgICAgICAgICAgICAg ICAgfQorLSAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAg IGFkZHJzLT5vdGhlcltpXS5hZGRyID0gbG93ZXJfb2Zmc2V0OworLSAgICAgICAgICB9CistICAg IH0KKysgIGlmIChhZGRycyAmJiBhZGRycy0+b3RoZXJbMF0ubmFtZSkKKysgICAgYWRkcl9pbmZv X21ha2VfcmVsYXRpdmUgKGFkZHJzLCBvYmpmaWxlLT5vYmZkKTsKKyAKKyAgIC8qIEluaXRpYWxp emUgc3ltYm9sIHJlYWRpbmcgcm91dGluZXMgZm9yIHRoaXMgb2JqZmlsZSwgYWxsb3cgY29tcGxh aW50cyB0bworICAgICAgYXBwZWFyIGZvciB0aGlzIG5ldyBmaWxlLCBhbmQgcmVjb3JkIGhvdyB2 ZXJib3NlIHRvIGJlLCB0aGVuIGRvIHRoZQorQEAgLTk1OSw3ICsxMDEzLDYgQEAgc3ltYm9sX2Zp bGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAorICAgc3RydWN0IG9iamZp bGUgKm9iamZpbGU7CisgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10YWI7CisgICBjaGFy ICpkZWJ1Z2ZpbGUgPSBOVUxMOworLSAgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICpvcmlnX2Fk ZHJzID0gTlVMTDsKKyAgIHN0cnVjdCBjbGVhbnVwICpteV9jbGVhbnVwczsKKyAgIGNvbnN0IGNo YXIgKm5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKKyAgIGNvbnN0IGludCBmcm9tX3R0 eSA9IGFkZF9mbGFncyAmIFNZTUZJTEVfVkVSQk9TRTsKK0BAIC05ODEsMTIgKzEwMzQsNiBAQCBz eW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFiZmQsCisgICAgIG9i amZpbGUtPmZsYWdzIHw9IE9CSkZfTUFJTjsKKyAgIGRpc2NhcmRfY2xlYW51cHMgKG15X2NsZWFu dXBzKTsKKyAKKy0gIGlmIChhZGRycykKKy0gICAgeworLSAgICAgIG9yaWdfYWRkcnMgPSBjb3B5 X3NlY3Rpb25fYWRkcl9pbmZvIChhZGRycyk7CistICAgICAgbWFrZV9jbGVhbnVwX2ZyZWVfc2Vj dGlvbl9hZGRyX2luZm8gKG9yaWdfYWRkcnMpOworLSAgICB9CistCisgICAvKiBXZSBlaXRoZXIg Y3JlYXRlZCBhIG5ldyBtYXBwZWQgc3ltYm9sIHRhYmxlLCBtYXBwZWQgYW4gZXhpc3RpbmcKKyAg ICAgIHN5bWJvbCB0YWJsZSBmaWxlIHdoaWNoIGhhcyBub3QgaGFkIGluaXRpYWwgc3ltYm9sIHJl YWRpbmcKKyAgICAgIHBlcmZvcm1lZCwgb3IgbmVlZCB0byByZWFkIGFuIHVubWFwcGVkIHN5bWJv bCB0YWJsZS4gKi8KK0BAIC0xMDMzLDE4ICsxMDgwLDE3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRo X2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKKyAgICAgIGAuZ251X2RlYnVnbGluaycgbWF5 IG5vIGxvbmdlciBiZSBwcmVzZW50IHdpdGggYC5ub3RlLmdudS5idWlsZC1pZCcuICAqLworICAg aWYgKCFoYXNfYW55X2RlYnVnX3N5bWJvbHMgKG9iamZpbGUpKQorICAgICBkZWJ1Z2ZpbGUgPSBm aW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKG9iamZpbGUpOworKworICAgaWYgKGRlYnVnZmlsZSkK KyAgICAgeworLSAgICAgIGlmIChhZGRycyAhPSBOVUxMKQorLQl7CistCSAgb2JqZmlsZS0+c2Vw YXJhdGVfZGVidWdfb2JqZmlsZQorLSAgICAgICAgICAgID0gc3ltYm9sX2ZpbGVfYWRkIChkZWJ1 Z2ZpbGUsIGFkZF9mbGFncywgb3JpZ19hZGRycywgZmxhZ3MpOworLQl9CistICAgICAgZWxzZQor LQl7CistCSAgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZQorLSAgICAgICAgICAgID0g c3ltYm9sX2ZpbGVfYWRkIChkZWJ1Z2ZpbGUsIGFkZF9mbGFncywgTlVMTCwgZmxhZ3MpOworLQl9 CisrICAgICAgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICpvYmpmaWxlX2FkZHJzOworKworKyAg ICAgIG9iamZpbGVfYWRkcnMgPSBidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX29iamZpbGUg KG9iamZpbGUpOworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG9iamZpbGVfYWRkcnMpOwor KworKyAgICAgIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgPSBzeW1ib2xfZmlsZV9h ZGQgKGRlYnVnZmlsZSwgYWRkX2ZsYWdzLAorKwkJCQkJCQkgb2JqZmlsZV9hZGRycywgZmxhZ3Mp OworKworICAgICAgIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUtPnNlcGFyYXRlX2Rl YnVnX29iamZpbGVfYmFja2xpbmsKKyAgICAgICAgID0gb2JqZmlsZTsKKyAKK2RpZmYgLS1naXQg YS9nZGIvc3ltZmlsZS5oIGIvZ2RiL3N5bWZpbGUuaAoraW5kZXggYmY5ZDllNy4uYmZmNmJkOCAx MDA2NDQKKy0tLSBhL2dkYi9zeW1maWxlLmgKKysrKyBiL2dkYi9zeW1maWxlLmgKK0BAIC0xODEs NiArMTgxLDE2IEBAIHN0cnVjdCBzeW1fZm5zCisgCisgfTsKKyAKKytleHRlcm4gc3RydWN0IHNl Y3Rpb25fYWRkcl9pbmZvICoKKysJCSBidWlsZF9zZWN0aW9uX2FkZHJfaW5mb19mcm9tX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKysKKytleHRlcm4gdm9pZCByZWxhdGl2ZV9h ZGRyX2luZm9fdG9fc2VjdGlvbl9vZmZzZXRzCisrICAoc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAq c2VjdGlvbl9vZmZzZXRzLCBpbnQgbnVtX3NlY3Rpb25zLAorKyAgIHN0cnVjdCBzZWN0aW9uX2Fk ZHJfaW5mbyAqYWRkcnMpOworKworK2V4dGVybiB2b2lkIGFkZHJfaW5mb19tYWtlX3JlbGF0aXZl IChzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKmFkZHJzLAorKwkJCQkgICAgIGJmZCAqYWJmZCk7 CisrCisgLyogVGhlIGRlZmF1bHQgdmVyc2lvbiBvZiBzeW1fZm5zLnN5bV9vZmZzZXRzIGZvciBy ZWFkZXJzIHRoYXQgZG9uJ3QKKyAgICBkbyBhbnl0aGluZyBzcGVjaWFsLiAgKi8KKyAKK2RpZmYg LS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKK2luZGV4IDgyZTAxNjMuLjAxMTE3 ZTMgMTAwNjQ0CistLS0gYS9nZGIvc3ltdGFiLmMKKysrKyBiL2dkYi9zeW10YWIuYworQEAgLTE0 NDksNyArMTQ0OSwxMiBAQCBsb29rdXBfb2JqZmlsZV9mcm9tX2Jsb2NrIChjb25zdCBzdHJ1Y3Qg YmxvY2sgKmJsb2NrKQorICAgLyogR28gdGhyb3VnaCBTWU1UQUJTLiAgKi8KKyAgIEFMTF9TWU1U QUJTIChvYmosIHMpCisgICAgIGlmIChibG9jayA9PSBCTE9DS1ZFQ1RPUl9CTE9DSyAoQkxPQ0tW RUNUT1IgKHMpLCBHTE9CQUxfQkxPQ0spKQorLSAgICAgIHJldHVybiBvYmo7CisrICAgICAgewor KwlpZiAob2JqLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rKQorKwkgIG9iaiA9IG9i ai0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluazsKKysKKysJcmV0dXJuIG9iajsKKysg ICAgICB9CisgCisgICByZXR1cm4gTlVMTDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbGliLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLWludGVycC1saWIuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjlj YTk0M2UKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst aW50ZXJwLWxpYi5jCitAQCAtMCwwICsxLDQwIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNsdWRlIDx1bmlzdGQu aD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisrdm9pZAor K2xpYmZ1bmMgKGNvbnN0IGNoYXIgKmFjdGlvbikKKyt7CisrICBhc3NlcnQgKGFjdGlvbiAhPSBO VUxMKTsKKysKKysgIGlmIChzdHJjbXAgKGFjdGlvbiwgInNlZ3YiKSA9PSAwKQorKyAgICByYWlz ZSAoU0lHU0VHVik7CisrCisrICBpZiAoc3RyY21wIChhY3Rpb24sICJzbGVlcCIpID09IDApCisr ICAgIHsKKysgICAgICBwdXRzICgic2xlZXBpbmciKTsKKysgICAgICBmZmx1c2ggKHN0ZG91dCk7 CisrCisrICAgICAgc2xlZXAgKDYwKTsKKysgICAgfQorKworKyAgYXNzZXJ0ICgwKTsKKyt9Citk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbWFpbi5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbWFpbi5jCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTEyZWMyYgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbWFpbi5jCitAQCAtMCwwICsxLDMwIEBA CisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysK KysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPGFz c2VydC5oPgorKworK2V4dGVybiB2b2lkIGxpYmZ1bmMgKGNvbnN0IGNoYXIgKmFjdGlvbik7Cisr CisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgIGFzc2VydCAoYXJn YyA9PSAyKTsKKysKKysgIGxpYmZ1bmMgKGFyZ3ZbMV0pOworKworKyAgcmV0dXJuIDA7CisrfQor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLjUyZjQ2MGMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorQEAgLTAsMCArMSw1NDUgQEAKKysjIENv cHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRoaXMgdGVzdCBvbmx5IHdvcmtzIG9uIEdOVS9M aW51eC4KKytpZiB7ICFbaXNuYXRpdmVdIHx8IFtpc19yZW1vdGUgaG9zdF0gfHwgIVtpc3Rhcmdl dCAqLWxpbnV4Kl0gfHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7CisrICAgIGNvbnRpbnVlCisrfQor KworK3NldCB0ZXN0ICJicmVhay1pbnRlcnAiCisrc2V0IGJpbnByZWZpeCAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdH0KKysjIE9ubHkgdG8gZ2V0IHRoZSAkaW50ZXJwX3N5c3RlbSBuYW1lLgor K3NldCBzcmNmaWxlX3Rlc3QgInN0YXJ0LmMiCisrc2V0IGJpbmZpbGVfdGVzdCAke3Rlc3R9LXRl c3QKKytzZXQgYmluZmlsZV9saWIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9LnNvCisrc2V0 IHNyY2ZpbGUgIiR7dGVzdH0tbWFpbi5jIgorK3NldCBzcmNmaWxlX2xpYiAiJHt0ZXN0fS1saWIu YyIKKysKKytpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlX2xpYn1dIHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworKyMgVXNlIC1zb25hbWUgc28gdGhhdCBpdCBpcyBsaXN0ZWQgd2l0aCAi ID0+ICIgYnkgbGRkIGFuZCB0aGlzIHRlc3RjYXNlIG1ha2VzCisrIyBhIGNvcHkgb2YgJHtiaW5m aWxlX2xpYn0gZm9yIGVhY2ggcHJlbGluayB2YXJpYW50LgorKworK2lmIHtbZ2RiX2NvbXBpbGVf c2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBb bGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtc29uYW1lLCR7dGVzdH0uc29dXSAhPSAi In0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVz dH0uZXhwICRiaW5maWxlX3Rlc3QgJHtzcmNmaWxlX3Rlc3R9IHt9XSA9PSAtMX0geworKyAgICBy ZXR1cm4gLTEKKyt9CisrCisrIyBSZXR1cm4gdGhlIGludGVycHJldGVyIGZpbGVuYW1lIHN0cmlu Zy4KKysjIFJldHVybiAiIiBpZiBubyBpbnRlcnByZXRlciB3YXMgZm91bmQuCisrcHJvYyBzZWN0 aW9uX2dldCB7ZXhlYyBzZWN0aW9ufSB7CisrICAgIGdsb2JhbCBvYmpkaXIKKysgICAgZ2xvYmFs IHN1YmRpcgorKyAgICBzZXQgdG1wICIke29iamRpcn0vJHtzdWJkaXJ9L2JyZWFrLWludGVycC5p bnRlcnAiCisrICAgIHNldCBvYmpjb3B5X3Byb2dyYW0gW3RyYW5zZm9ybSBvYmpjb3B5XQorKwor KyAgICBzZXQgY29tbWFuZCAiZXhlYyAkb2JqY29weV9wcm9ncmFtIC1PIGJpbmFyeSAtLXNldC1z ZWN0aW9uLWZsYWdzICRzZWN0aW9uPUEgLS1jaGFuZ2Utc2VjdGlvbi1hZGRyZXNzICRzZWN0aW9u PTAgLWogJHNlY3Rpb24gJGV4ZWMgJHRtcCIKKysgICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlz ICRjb21tYW5kIgorKyAgICBzZXQgcmVzdWx0IFtjYXRjaCAkY29tbWFuZCBvdXRwdXRdCisrICAg IHZlcmJvc2UgLWxvZyAicmVzdWx0IGlzICRyZXN1bHQiCisrICAgIHZlcmJvc2UgLWxvZyAib3V0 cHV0IGlzICRvdXRwdXQiCisrICAgIGlmIHskcmVzdWx0ID09IDF9IHsKKysJcmV0dXJuICIiCisr ICAgIH0KKysgICAgc2V0IGZpIFtvcGVuICR0bXBdCisrICAgIGZjb25maWd1cmUgJGZpIC10cmFu c2xhdGlvbiBiaW5hcnkKKysgICAgc2V0IGRhdGEgW3JlYWQgJGZpXQorKyAgICBjbG9zZSAkZmkK KysgICAgI2ZpbGUgZGVsZXRlICR0bXAKKysgICAgIyAuaW50ZXJwIGhhcyBzaXplICRsZW4gKyAx IGJ1dCAuZ251X2RlYnVnbGluayBjb250YWlucyBnYXJiYWdlIGFmdGVyIFwwMDAuCisrICAgIHNl dCBsZW4gW3N0cmluZyBmaXJzdCBcMDAwICRkYXRhXQorKyAgICBpZiB7JGxlbiA8IDB9IHsKKysJ dmVyYm9zZSAtbG9nICJzZWN0aW9uICRzZWN0aW9uIG5vdCBmb3VuZCIKKysJcmV0dXJuICIiCisr ICAgIH0KKysgICAgc2V0IHJldHZhbCBbc3RyaW5nIHJhbmdlICRkYXRhIDAgW2V4cHIgJGxlbiAt IDFdXQorKyAgICB2ZXJib3NlIC1sb2cgInNlY3Rpb24gJHNlY3Rpb24gaXMgPCRyZXR2YWw+Igor KyAgICByZXR1cm4gJHJldHZhbAorK30KKysKKysjIE5vdGU6IFRoZSBzZXBhcmF0ZSBkZWJ1ZyBp bmZvIGZpbGUgY29udGVudCBidWlsZC1pZC9jcmMzMiBhcmUgbm90IHZlcmlmaWVkCisrIyBjb250 cmFyeSB0byB0aGUgR0RCIHNlYXJjaCBhbGdvcml0aG0gc2tpcHBpbmcgbm9uLW1hdGNoaW5nIG9u ZXMuCisrcHJvYyBzeXN0ZW1fZGVidWdfZ2V0IHtleGVjfSB7CisrICAgIGdsb2JhbCBkZWJ1Z19y b290CisrCisrICAgIHNldCBleGVjX2J1aWxkX2lkX2RlYnVnIFtidWlsZF9pZF9kZWJ1Z19maWxl bmFtZV9nZXQgJGV4ZWNdCisrICAgIHNldCBkZWJ1Z19iYXNlICJbZmlsZSB0YWlsICRleGVjXS5k ZWJ1ZyIKKysgICAgc2V0IGV4ZWNfZGlyIFtmaWxlIGRpcm5hbWUgJGV4ZWNdCisrCisrICAgICMg aXNmaWxlIHJldHVybnMgMSBldmVuIGZvciBzeW1saW5rcyB0byBmaWxlcy4KKysgICAgc2V0IHJl dHZhbCAkZGVidWdfcm9vdC8kZXhlY19idWlsZF9pZF9kZWJ1ZworKyAgICBpZiBbZmlsZSBpc2Zp bGUgJHJldHZhbF0geworKwlyZXR1cm4gJHJldHZhbAorKyAgICB9CisrICAgIHNldCByZXR2YWwg JGV4ZWNfZGlyLyRkZWJ1Z19iYXNlCisrICAgIGlmIFtmaWxlIGlzZmlsZSAkcmV0dmFsXSB7Cisr CXJldHVybiAkcmV0dmFsCisrICAgIH0KKysgICAgc2V0IHJldHZhbCAkZXhlY19kaXIvLmRlYnVn LyRkZWJ1Z19iYXNlCisrICAgIGlmIFtmaWxlIGlzZmlsZSAkcmV0dmFsXSB7CisrCXJldHVybiAk cmV0dmFsCisrICAgIH0KKysgICAgc2V0IHJldHZhbCAkZGVidWdfcm9vdC8kZXhlY19kaXIvJGRl YnVnX2Jhc2UKKysgICAgaWYgW2ZpbGUgaXNmaWxlICRyZXR2YWxdIHsKKysJcmV0dXJuICRyZXR2 YWwKKysgICAgfQorKyAgICByZXR1cm4gIiIKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQK KytzZXQgZGVidWdfcm9vdCAiIgorK3NldCB0ZXN0ICJzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5 IgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJUaGUgZGlyZWN0 b3J5IHdoZXJlIHNlcGFyYXRlIGRlYnVnIHN5bWJvbHMgYXJlIHNlYXJjaGVkIGZvciBpcyBcIigu KilcIi5cclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQgZGVidWdfcm9vdCAkZXhwZWN0X291dCgx LHN0cmluZykKKysgICAgfQorK30KKysKKytzZXQgaW50ZXJwX3N5c3RlbSBbc2VjdGlvbl9nZXQg JHtvYmpkaXJ9LyR7c3ViZGlyfS8kYmluZmlsZV90ZXN0IC5pbnRlcnBdCisrc2V0IGludGVycF9z eXN0ZW1fZGVidWcgW3N5c3RlbV9kZWJ1Z19nZXQgJGludGVycF9zeXN0ZW1dCisrdmVyYm9zZSAt bG9nICIkaW50ZXJwX3N5c3RlbSBoYXMgZGVidWcgJGludGVycF9zeXN0ZW1fZGVidWciCisrCisr cHJvYyBwcmVsaW5rTk9fcnVuIHthcmd9IHsKKysgICAgc2V0IGNvbW1hbmQgImV4ZWMgL3Vzci9z YmluL3ByZWxpbmsgLXVOICRhcmciCisrICAgIHZlcmJvc2UgLWxvZyAiY29tbWFuZCBpcyAkY29t bWFuZCIKKysgICAgc2V0IHJlc3VsdCBbY2F0Y2ggJGNvbW1hbmQgb3V0cHV0XQorKyAgICB2ZXJi b3NlIC1sb2cgInJlc3VsdCBpcyAkcmVzdWx0IgorKyAgICB2ZXJib3NlIC1sb2cgIm91dHB1dCBp cyAkb3V0cHV0IgorKyAgICByZXR1cm4gW2xpc3QgJHJlc3VsdCAkb3V0cHV0XQorK30KKysKKytw cm9jIHByZWxpbmtOTyB7YXJnIHtuYW1lIHt9fX0geworKyAgICBpZiB7JG5hbWUgPT0gIiJ9IHsK KysJc2V0IG5hbWUgW2ZpbGUgdGFpbCAkYXJnXQorKyAgICB9CisrICAgIHNldCB0ZXN0ICJ1bnBy ZWxpbmsgJG5hbWUiCisrICAgIHNldCBydW4gW3ByZWxpbmtOT19ydW4gJGFyZ10KKysgICAgc2V0 IHJlc3VsdCBbbGluZGV4ICRydW4gMF0KKysgICAgc2V0IG91dHB1dCBbbGluZGV4ICRydW4gMV0K KysgICAgaWYgeyRyZXN1bHQgPT0gMCAmJiAkb3V0cHV0ID09ICIifSB7CisrCXZlcmJvc2UgLWxv ZyAiJG5hbWUgaGFzIGJlZW4gbm93IHVucHJlbGlua2VkIgorKwlzZXQgcnVuIFtwcmVsaW5rTk9f cnVuICRhcmddCisrCXNldCByZXN1bHQgW2xpbmRleCAkcnVuIDBdCisrCXNldCBvdXRwdXQgW2xp bmRleCAkcnVuIDFdCisrICAgIH0KKysgICAgIyBMYXN0IGxpbmUgZG9lcyBtaXNzIHRoZSB0cmFp bGluZyBcbi4KKysgICAgaWYgeyRyZXN1bHQgPT0gMSAmJiBbcmVnZXhwIHteKC91c3Ivc2Jpbi9w cmVsaW5rOiBbXiBdKiBkb2VzIG5vdCBoYXZlIC5nbnUucHJlbGlua191bmRvIHNlY3Rpb25cbj8p KiR9ICRvdXRwdXRdfSB7CisrCXBhc3MgJHRlc3QKKysJcmV0dXJuIDEKKysgICAgfSBlbHNlIHsK KysJZmFpbCAkdGVzdAorKwlyZXR1cm4gMAorKyAgICB9CisrfQorKworK3Byb2MgcHJlbGlua1lF UyB7YXJnIHtuYW1lICIifX0geworKyAgICBpZiB7JG5hbWUgPT0gIiJ9IHsKKysJc2V0IG5hbWUg W2ZpbGUgdGFpbCAkYXJnXQorKyAgICB9CisrICAgIHNldCB0ZXN0ICJwcmVsaW5rICRuYW1lIgor KyAgICBzZXQgY29tbWFuZCAiZXhlYyAvdXNyL3NiaW4vcHJlbGluayAtcU5SIC0tbm8tZXhlYy1z aGllbGQgJGFyZyIKKysgICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgorKyAg ICBzZXQgcmVzdWx0IFtjYXRjaCAkY29tbWFuZCBvdXRwdXRdCisrICAgIHZlcmJvc2UgLWxvZyAi cmVzdWx0IGlzICRyZXN1bHQiCisrICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQi CisrICAgIGlmIHskcmVzdWx0ID09IDAgJiYgJG91dHB1dCA9PSAiIn0geworKwlwYXNzICR0ZXN0 CisrCXJldHVybiAxCisrICAgIH0gZWxzZSB7CisrCWZhaWwgJHRlc3QKKysJcmV0dXJuIDAKKysg ICAgfQorK30KKysKKysjIFJlc29sdmUgc3ltbGlua3MuCisrcHJvYyBzeW1saW5rX3Jlc29sdmUg e2ZpbGV9IHsKKysgICAgc2V0IGxvb3AgMAorKyAgICB3aGlsZSB7W2ZpbGUgdHlwZSAkZmlsZV0g PT0gImxpbmsifSB7CisrCXNldCB0YXJnZXQgW2ZpbGUgcmVhZGxpbmsgJGZpbGVdCisrCWlmIHtb ZmlsZSBwYXRodHlwZSAkdGFyZ2V0XSA9PSAicmVsYXRpdmUifSB7CisrCSAgICBzZXQgc3JjMiBb ZmlsZSBkaXJuYW1lICRmaWxlXS8kdGFyZ2V0CisrCX0gZWxzZSB7CisrCSAgICBzZXQgc3JjMiAk dGFyZ2V0CisrCX0KKysJdmVyYm9zZSAtbG9nICJSZXNvbHZlZCBzeW1saW5rICRmaWxlIHRhcmdl dHRpbmcgJHRhcmdldCBhcyAkc3JjMiIKKysJc2V0IGZpbGUgJHNyYzIKKysKKysJc2V0IGxvb3Ag W2V4cHIgJGxvb3AgKyAxXQorKwlpZiB7JGxvb3AgPiAzMH0geworKwkgICAgZmFpbCAiTG9vcGlu ZyBzeW1saW5rIHJlc29sdXRpb24gZm9yICRmaWxlIgorKwkgICAgcmV0dXJuICIiCisrCX0KKysg ICAgfQorKyAgICByZXR1cm4gJGZpbGUKKyt9CisrCisrcHJvYyBjb3B5IHtzcmMgZGVzdH0gewor KyAgICBzZXQgc3JjIFtzeW1saW5rX3Jlc29sdmUgJHNyY10KKysgICAgIyBUZXN0IG5hbWUgd291 bGQgY29udGFpbiBidWlsZC1pZCBoYXNoIGZvciBzeW1saW5rLXVucmVzb2x2ZWQgJHNyYy4KKysg ICAgc2V0IHRlc3QgImNvcHkgW2ZpbGUgdGFpbCAkc3JjXSB0byBbZmlsZSB0YWlsICRkZXN0XSIK KysgICAgc2V0IGNvbW1hbmQgImZpbGUgY29weSAtZm9yY2UgJHNyYyAkZGVzdCIKKysgICAgdmVy Ym9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgorKyAgICBpZiBbY2F0Y2ggJGNvbW1hbmRd IHsKKysJZmFpbCAkdGVzdAorKwlyZXR1cm4gMAorKyAgICB9IGVsc2UgeworKyAgICAJcGFzcyAk dGVzdAorKwlyZXR1cm4gMQorKyAgICB9CisrfQorKworK3Byb2Mgc3RyaXBfZGVidWcge2Rlc3R9 IHsKKysgICAgc2V0IHRlc3QgInN0cmlwIFtmaWxlIHRhaWwgJGRlc3RdIgorKyAgICBzZXQgc3Ry aXBfcHJvZ3JhbSBbdHJhbnNmb3JtIHN0cmlwXQorKyAgICBzZXQgY29tbWFuZCAiZXhlYyAkc3Ry aXBfcHJvZ3JhbSAtLXN0cmlwLWRlYnVnICRkZXN0IgorKyAgICB2ZXJib3NlIC1sb2cgImNvbW1h bmQgaXMgJGNvbW1hbmQiCisrICAgIGlmIFtjYXRjaCAkY29tbWFuZF0geworKwlmYWlsICR0ZXN0 CisrCXJldHVybiAwCisrICAgIH0gZWxzZSB7CisrICAgIAlwYXNzICR0ZXN0CisrCXJldHVybiAx CisrICAgIH0KKyt9CisrCisrIyBgcnVudG8nIGRvZXMgbm90IGNoZWNrIHdlIHN0b3BwZWQgcmVh bGx5IGF0IHRoZSBmdW5jdGlvbiB3ZSBzcGVjaWZpZWQuCisrcHJvYyByZWFjaCB7ZnVuYyBjb21t YW5kfSB7CisrICAgIGdsb2JhbCBnZGJfcHJvbXB0CisrCisrICAgIGlmIFtnZGJfYnJlYWtwb2lu dCAkZnVuYyBhbGxvdy1wZW5kaW5nXSB7CisrCXNldCB0ZXN0ICJyZWFjaCAkZnVuYyIKKysJZ2Ri X3Rlc3RfbXVsdGlwbGUgJGNvbW1hbmQgJHRlc3QgeworKwkgICAgLXJlICJCcmVha3BvaW50IFxb MC05XF0rLCAkZnVuYyBcXCguKlxcKSBhdCAuKjpcWzAtOVxdK1xyXG4uKiRnZGJfcHJvbXB0ICQi IHsKKysJCXBhc3MgJHRlc3QKKysJICAgIH0KKysJICAgIC1yZSAiQnJlYWtwb2ludCBcWzAtOVxd KywgXFswLTl4YS1mXF0rIGluICRmdW5jIFxcKFxcKSggZnJvbSAuKik/XHJcbiRnZGJfcHJvbXB0 ICQiIHsgCisrCQlwYXNzICR0ZXN0CisrCSAgICB9CisrCX0KKysgICAgfQorK30KKysKKytwcm9j IHRlc3RfY29yZSB7ZmlsZX0geworKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBnZGJfcHJvbXB0 CisrCisrICAgIHNldCBjb3JlZmlsZSBbY29yZV9maW5kICRmaWxlIHt9ICJzZWd2Il0KKysgICAg aWYgeyRjb3JlZmlsZSA9PSAiIn0geworKwlyZXR1cm4KKysgICAgfQorKworKyAgICBnZGJfZXhp dAorKyAgICBnZGJfc3RhcnQKKysgICAgIyBDbGVhciBpdCB0byBuZXZlciBmaW5kIGFueSBzZXBh cmF0ZSBkZWJ1ZyBpbmZvcyBpbiAkZGVidWdfcm9vdC4KKysgICAgZ2RiX3Rlc3QgInNldCBkZWJ1 Zy1maWxlLWRpcmVjdG9yeSIgIiIgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSBmb3IgY29yZSIK KysgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrICAgIGdkYl9sb2Fk ICRmaWxlCisrCisrICAgICMgRG8gbm90IGNoZWNrIHRoZSBiaW5hcnkgZmlsZW5hbWUgYXMgaXQg bWF5IGJlIHRydW5jYXRlZC4KKysgICAgZ2RiX3Rlc3QgImNvcmUtZmlsZSAkY29yZWZpbGUiICJD b3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipcclxuIzAgLioiICJjb3JlIGxvYWRlZCIKKysKKysgICAg IyBDaGVjayB0aGVyZSBpcyBubyAiYXJnYz1jYW4ndCBjb21wdXRlIENGQSBmb3IgdGhpcyBmcmFt ZSIuCisrICAgIGdkYl90ZXN0ICJidCIgIiNcWzAtOVxdKyArXFteXHJcblxdKlxcbWxpYmZ1bmNc XE1cW15cclxuXF0qXHJcbiNcWzAtOVxdKyArXFteXHJcblxdKlxcbW1haW4gXFwoKGFyZ2M9Miwu Kik/XFwpLioiICJjb3JlIG1haW4gYnQiCisrfQorKworK3Byb2MgdGVzdF9hdHRhY2gge2ZpbGV9 IHsKKysgICAgZ2xvYmFsIGJvYXJkX2luZm8KKysKKysgICAgZ2RiX2V4aXQKKysKKysgICAgc2V0 IHRlc3QgInNsZWVwIGZ1bmN0aW9uIHN0YXJ0ZWQiCisrCisrICAgIHNldCBjb21tYW5kICIke2Zp bGV9IHNsZWVwIgorKyAgICBzZXQgcmVzIFtyZW1vdGVfc3Bhd24gaG9zdCAkY29tbWFuZF07Cisr ICAgIGlmIHsgJHJlcyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsKKysJcGVycm9yICJTcGF3bmluZyAk Y29tbWFuZCBmYWlsZWQuIgorKwlmYWlsICR0ZXN0CisrCXJldHVybgorKyAgICB9CisrICAgIHNl dCBwaWQgW2V4cF9waWQgLWkgJHJlc10KKysgICAgZ2RiX2V4cGVjdCB7CisrCS1yZSAic2xlZXBp bmdcclxuIiB7CisrCSAgICBwYXNzICR0ZXN0CisrCX0KKysJZW9mIHsKKysJICAgIGZhaWwgIiR0 ZXN0IChlb2YpIgorKwkgICAgcmV0dXJuCisrCX0KKysJdGltZW91dCB7CisrCSAgICBmYWlsICIk dGVzdCAodGltZW91dCkiCisrCSAgICByZXR1cm4KKysJfQorKyAgICB9CisrCisrICAgIGdkYl9l eGl0CisrICAgIGdkYl9zdGFydAorKyAgICBnZGJfdGVzdCAiYXR0YWNoICRwaWQiICJBdHRhY2hp bmcgdG8gcHJvY2VzcyAkcGlkXHJcbi4qIiAiYXR0YWNoIgorKyAgICAjIENoZWNrIHRoZXJlIGlz IG5vICJhcmdjPWNhbid0IGNvbXB1dGUgQ0ZBIGZvciB0aGlzIGZyYW1lIi4KKysgICAgZ2RiX3Rl c3QgImJ0IiAiI1xbMC05XF0rICtcW15cclxuXF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxu I1xbMC05XF0rICtcW15cclxuXF0qXFxtbWFpbiBcXCgoYXJnYz0yLC4qKT9cXCkuKiIgImF0dGFj aCBtYWluIGJ0IgorKyAgICBnZGJfZXhpdAorKworKyAgICByZW1vdGVfZXhlYyBob3N0ICJraWxs IC05ICRwaWQiCisrfQorKworK3Byb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW19IHsK KysgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdAorKworKyAgICAjIEZpcnN0IHRl c3Qgbm9ybWFsIGBmaWxlJy1jb21tYW5kIGxvYWRlZCAkRklMRSB3aXRoIHN5bWJvbHMuCisrCisr ICAgIGdkYl9leGl0CisrICAgIGdkYl9zdGFydAorKyAgICAjIENsZWFyIGl0IHRvIG5ldmVyIGZp bmQgYW55IHNlcGFyYXRlIGRlYnVnIGluZm9zIGluICRkZWJ1Z19yb290LgorKyAgICBnZGJfdGVz dCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IgorKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKKysgICAgZ2RiX2xvYWQgJGZpbGUKKysKKysgICAgcmVhY2ggImRsX21h aW4iICJydW4gc2VndiIKKysKKysgICAgZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG1k bF9tYWluXFxNLioiICJkbCBidCIKKysKKysgICAgaWYgJGlmbWFpbiB7CisrCXJlYWNoICJtYWlu IiBjb250aW51ZQorKworKwlyZWFjaCAibGliZnVuYyIgY29udGludWUKKysKKysJIyBDaGVjayB0 aGVyZSBpcyBubyAiYXJnYz1jYW4ndCBjb21wdXRlIENGQSBmb3IgdGhpcyBmcmFtZSIuCisrCWdk Yl90ZXN0ICJidCIgIiMwICtcW15cclxuXF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxuIzEg K1xbXlxyXG5cXSpcXG1tYWluIFxcKChhcmdjPTIsLiopP1xcKS4qIiAibWFpbiBidCIKKysKKysJ dGVzdF9jb3JlICRmaWxlCisrCisrCXRlc3RfYXR0YWNoICRmaWxlCisrICAgIH0KKysKKysgICAg aWYgISR0cnlub3N5bSB7CisrCXJldHVybgorKyAgICB9CisrCisrICAgIGdsb2JhbCBwZl9wcmVm aXgKKysgICAgc2V0IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4CisrICAgIGxhcHBlbmQgcGZfcHJl Zml4ICJzeW1ib2wtbGVzczoiCisrCisrICAgICMgVGVzdCBhbHNvIGBleGVjLWZpbGUnLWNvbW1h bmQgbG9hZGVkICRGSUxFIC0gdGhlcmVmb3JlIHdpdGhvdXQgc3ltYm9scy4KKysgICAgIyBTWU1C T0xfT0JKRklMRSBpcyBub3QgYXZhaWxhYmxlIGFuZCBvbmx5IEVYRUNfQkZEIG11c3QgYmUgdXNl ZC4KKysKKysgICAgZ2RiX2V4aXQKKysgICAgZ2RiX3N0YXJ0CisrICAgICMgQ2xlYXIgaXQgdG8g bmV2ZXIgZmluZCBhbnkgc2VwYXJhdGUgZGVidWcgaW5mb3MgaW4gJGRlYnVnX3Jvb3QuCisrICAg IGdkYl90ZXN0ICJzZXQgZGVidWctZmlsZS1kaXJlY3RvcnkiCisrICAgIGdkYl9yZWluaXRpYWxp emVfZGlyICRzcmNkaXIvJHN1YmRpcgorKworKyAgICAjIFRlc3Qgbm8gKGVycm9yKSBtZXNzYWdl IGhhcyBiZWVuIHByaW50ZWQgYnkgYGV4ZWMtZmlsZScuCisrICAgIHNldCBlc2NhcGVkZmlsZSBb c3RyaW5nX3RvX3JlZ2V4cCAkZmlsZV0KKysgICAgZ2RiX3Rlc3QgImV4ZWMtZmlsZSAkZmlsZSIg ImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2FkIgorKworKyAgICBpZiAkaWZtYWluIHsKKysJ cmVhY2ggImRsX21haW4iIHJ1bgorKworKwlzZXQgdGVzdCAiaW5mbyBmaWxlcyIKKysJc2V0IGVu dHJ5bm9oZXggIiIKKysJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwkgICAgLXJl ICJcclxuXFtcdCBcXSpFbnRyeSBwb2ludDpcW1x0IFxdKjB4KFxbMC05YS1mXF0rKVxyXG4uKiRn ZGJfcHJvbXB0ICQiIHsKKysJCXNldCBlbnRyeW5vaGV4ICRleHBlY3Rfb3V0KDEsc3RyaW5nKSAK KysJCXBhc3MgJHRlc3QKKysJICAgIH0KKysJfQorKwlpZiB7JGVudHJ5bm9oZXggIT0gIiJ9IHsK KysJICAgIGdkYl90ZXN0ICJicmVhayAqMHgkZW50cnlub2hleCIgIiIgImJyZWFrIGF0IGVudHJ5 IHBvaW50IgorKwkgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiXHJcbkJyZWFrcG9pbnQgXFswLTlc XSssIDB4MCokZW50cnlub2hleCBpbiAuKiIgImVudHJ5IHBvaW50IHJlYWNoZWQiCisrCX0KKysg ICAgfSBlbHNlIHsKKysJIyBUaGVyZSBpcyBubyBzeW1ib2wgdG8gYnJlYWsgYXQgbGQuc28uICBN b3Jlb3ZlciBpdCBjYW4gZXhpdCB3aXRoIGFuCisrCSMgZXJyb3IgY29kZS4KKysJZ2RiX3Rlc3Qg InJ1biIgIlByb2dyYW0gZXhpdGVkIChub3JtYWxseXx3aXRoIGNvZGUgXFswLTlcXSspXFwuIiAi bGQuc28gZXhpdCIKKysgICAgfQorKworKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgK Kyt9CisrCisrIyBDcmVhdGUgc2VwYXJhdGUgYmluYXJpZXMgZm9yIGVhY2ggdGVzdGNhc2UgLSB0 byBtYWtlIHRoZSBwb3NzaWJsZSByZXBvcnRlZAorKyMgcHJvYmxlbSByZXByb2R1Y2libGUgYWZ0 ZXIgdGhlIHdob2xlIHRlc3QgcnVuIGZpbmlzaGVzLgorKworK3NldCBvbGRfbGRwcmVmaXggJHBm X3ByZWZpeAorK2ZvcmVhY2ggbGRwcmVsaW5rIHtOTyBZRVN9IHsKKysgICAgZm9yZWFjaCBsZHNl cGRlYnVnIHtOTyBJTiBTRVB9IHsKKysJIyBTa2lwIHJ1bm5pbmcgdGhlIGxkc2VwZGVidWcgdGVz dCBpZiB3ZSBkbyBub3QgaGF2ZSBzeXN0ZW0gc2VwYXJhdGUKKysJIyBkZWJ1ZyBpbmZvIGF2YWls YWJsZS4KKysJaWYgeyRpbnRlcnBfc3lzdGVtX2RlYnVnID09ICIiICYmICRsZHNlcGRlYnVnID09 ICJTRVAifSB7CisrCSAgICBjb250aW51ZQorKwl9CisrCisrCXNldCBsZG5hbWUgIkxEcHJlbGlu ayR7bGRwcmVsaW5rfWRlYnVnJHtsZHNlcGRlYnVnfSIKKysJc2V0IGludGVycCAkYmlucHJlZml4 LSRsZG5hbWUKKysKKysJIyBwcmVsaW5rIG5lZWRzIHRvIGFsd2F5cyBwcmVsaW5rIGFsbCB0aGUg ZGVwZW5kZW5jaWVzIHRvIGRvIGFueSBmaWxlCisrCSMgbW9kaWZpY2F0aW9ucyBvZiBpdHMgZmls ZXMuICBsZC5zbyBhbHNvIG5lZWRzIGFsbCB0aGUgZGVwZW5kZW5jaWVzIHRvCisrCSMgYmUgcHJl bGlua2VkIHRvIG9taXQgdGhlIHJlbG9jYXRpb24gcHJvY2Vzcy4gIEluLW1lbW9yeSBmaWxlIG9m ZnNldHMKKysJIyBhcmUgbm90IGRlcGVuZGVudCB3aGV0aGVyIGxkLnNvIHdlbnQgdGhlIHByZWxp bmsgd2F5IG9yIHRocm91Z2ggdGhlCisrCSMgcmVsb2NhdGlvbiBwcm9jZXNzLgorKwkjCisrCSMg Rm9yIEdEQiB3ZSBhcmUgbm90IGludGVyZXN0ZWQgd2hldGhlciBwcmVsaW5rIHN1Y2NlZWRzIGFz IGl0IGlzCisrCSMgdHJhbnNwYXJlbnQgdG8gR0RCLiAgR0RCIGlzIGJlaW5nIHRlc3RlZCBmb3Ig ZGlmZmVyZW5jZXMgb2YgZmlsZQorKwkjIG9mZnNldHMgdnMuIGluLW1lbW9yeSBvZmZzZXRzLiAg U28gd2UgaGF2ZSB0byBwcmVsaW5rIGV2ZW4gbGQuc28gZm9yCisrCSMgdGhlIEJJTiBtb2RpZmlj YXRpb24gdG8gaGFwcGVuIGJ1dCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsCisrCSMg cG9zc2libHkgdW5wcmVsaW5rZWQgbGQuc28gdG8gdGVzdCBhbGwgdGhlIGNvbWJpbmF0aW9ucyBm b3IgR0RCLgorKwlzZXQgaW50ZXJwX3NhdmVkICR7aW50ZXJwfS1zYXZlZAorKworKwlzZXQgcGZf cHJlZml4ICRvbGRfbGRwcmVmaXgKKysJbGFwcGVuZCBwZl9wcmVmaXggIiRsZG5hbWU6IgorKwor KwlpZiB7JGxkc2VwZGVidWcgPT0gIk5PIn0geworKwkgICAgY29weSAkaW50ZXJwX3N5c3RlbSAk aW50ZXJwCisrCSAgICAjIE5ldmVyIGNhbGwgc3RyaXAtZGVidWcgYmVmb3JlIHVucHJlbGluazoK KysJICAgICMgcHJlbGluazogLi4uOiBTZWN0aW9uIC5ub3RlLmdudS5idWlsZC1pZCBjcmVhdGVk IGFmdGVyIHByZWxpbmtpbmcKKysJICAgIGlmICFbcHJlbGlua05PICRpbnRlcnBdIHsKKysJCWNv bnRpbnVlCisrCSAgICB9CisrCSAgICBzdHJpcF9kZWJ1ZyAkaW50ZXJwCisrCX0gZWxzZWlmIHsk bGRzZXBkZWJ1ZyA9PSAiSU4iICYmICRpbnRlcnBfc3lzdGVtX2RlYnVnID09ICIifSB7CisrCSAg ICBjb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKKysJfSBlbHNlaWYgeyRsZHNlcGRlYnVnID09 ICJJTiIgJiYgJGludGVycF9zeXN0ZW1fZGVidWcgIT0gIiJ9IHsKKysJICAgIGNvcHkgJGludGVy cF9zeXN0ZW0gJGludGVycAorKwkgICAgY29weSAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyAiJHtpbnRl cnB9LmRlYnVnIgorKwkgICAgIyBldS11bnN0cmlwOiBEV0FSRiBkYXRhIGluICcuLi4nIG5vdCBh ZGp1c3RlZCBmb3IgcHJlbGlua2luZyBiaWFzOyBjb25zaWRlciBwcmVsaW5rIC11CisrCSAgICBp ZiB7IVtwcmVsaW5rTk8gJGludGVycF0gfHwgIVtwcmVsaW5rTk8gIiR7aW50ZXJwfS5kZWJ1ZyJd fSB7CisrCQljb250aW51ZQorKwkgICAgfQorKwkgICAgc2V0IHRlc3QgImV1LXVuc3RyaXAgdW5w cmVsaW5rZWQ6W2ZpbGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0gKyBbZmlsZSB0YWlsICRpbnRlcnBf c3lzdGVtX2RlYnVnXSB0byBbZmlsZSB0YWlsICRpbnRlcnBdIgorKwkgICAgc2V0IGNvbW1hbmQg ImV4ZWMgZXUtdW5zdHJpcCAtbyAkaW50ZXJwICRpbnRlcnAgJHtpbnRlcnB9LmRlYnVnIgorKwkg ICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgorKwkgICAgaWYgW2NhdGNoICRj b21tYW5kXSB7CisrCQlzZXR1cF94ZmFpbCAqLSotKgorKwkJZmFpbCAkdGVzdAorKwkJY29udGlu dWUKKysJICAgIH0gZWxzZSB7CisrCQlwYXNzICR0ZXN0CisrCSAgICB9CisrCX0gZWxzZWlmIHsk bGRzZXBkZWJ1ZyA9PSAiU0VQIiAmJiAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyA9PSAiIn0geworKwkg ICAgY29weSAkaW50ZXJwX3N5c3RlbSAkaW50ZXJwCisrCSAgICAjIGV1LXVuc3RyaXA6IERXQVJG IGRhdGEgaW4gJy4uLicgbm90IGFkanVzdGVkIGZvciBwcmVsaW5raW5nIGJpYXM7IGNvbnNpZGVy IHByZWxpbmsgLXUKKysJICAgIGlmICFbcHJlbGlua05PICRpbnRlcnBdIHsKKysJCWNvbnRpbnVl CisrCSAgICB9CisrCSAgICBnZGJfZ251X3N0cmlwX2RlYnVnICRpbnRlcnAKKysJfSBlbHNlaWYg eyRsZHNlcGRlYnVnID09ICJTRVAiICYmICRpbnRlcnBfc3lzdGVtX2RlYnVnICE9ICIifSB7Cisr CSAgICBjb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKKysJICAgIGNvcHkgJGludGVycF9zeXN0 ZW1fZGVidWcgIiR7aW50ZXJwfS5kZWJ1ZyIKKysJfQorKworKwlpZiB7JGxkc2VwZGVidWcgPT0g IlNFUCJ9IHsKKysJICAgIGlmICFbcHJlbGlua05PICIke2ludGVycH0uZGVidWciXSB7CisrCQlj b250aW51ZQorKwkgICAgfQorKwl9IGVsc2UgeworKwkgICAgZmlsZSBkZWxldGUgIiR7aW50ZXJw fS5kZWJ1ZyIKKysJfQorKworKwlpZiAhW3ByZWxpbmskbGRwcmVsaW5rICRpbnRlcnBdIHsKKysJ ICAgIGNvbnRpbnVlCisrCX0KKysJdGVzdF9sZCAkaW50ZXJwIDAgW2V4cHIgeyRsZHNlcGRlYnVn ID09ICJOTyJ9XQorKworKwlpZiAhW2NvcHkgJGludGVycCAkaW50ZXJwX3NhdmVkXSB7CisrCSAg ICBjb250aW51ZQorKwl9CisrCXNldCBvbGRfYmlucHJlZml4ICRwZl9wcmVmaXgKKysJZm9yZWFj aCBiaW5wcmVsaW5rIHtOTyBZRVN9IHsKKysJICAgIGZvcmVhY2ggYmluc2VwZGVidWcge05PIElO IFNFUH0geworKwkJZm9yZWFjaCBiaW5waWUge05PIFlFU30geworKwkJICAgICMgVGhpcyBjb21i aW5hdGlvbiBpcyBub3QgcG9zc2libGUsIG5vbi1QSUUgKGZpeGVkIGFkZHJlc3MpCisrCQkgICAg IyBiaW5hcnkgY2Fubm90IGJlIHByZWxpbmtlZCB0byBhbnkgKG90aGVyKSBhZGRyZXNzLgorKwkJ ICAgIGlmIHskYmlucHJlbGluayA9PSAiWUVTIiAmJiAkYmlucGllID09ICJOTyJ9IHsKKysJCQlj b250aW51ZQorKwkJICAgIH0KKysKKysJCSAgICBzZXQgYmlubmFtZSAiQklOcHJlbGluayR7Ymlu cHJlbGlua31kZWJ1ZyR7Ymluc2VwZGVidWd9cGllJHtiaW5waWV9IgorKwkJICAgIHNldCBleGVj ICRiaW5wcmVmaXgtJGJpbm5hbWUKKysJCSAgICBzZXQgZGlyICR7ZXhlY30uZAorKworKwkJICAg IHNldCBwZl9wcmVmaXggJG9sZF9iaW5wcmVmaXgKKysJCSAgICBsYXBwZW5kIHBmX3ByZWZpeCAi JGJpbm5hbWU6IgorKworKwkJICAgIHNldCBvcHRzICJhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtLWR5 bmFtaWMtbGlua2VyLCRpbnRlcnAsLXJwYXRoLCRkaXIiCisrCQkgICAgbGFwcGVuZCBvcHRzICJh ZGRpdGlvbmFsX2ZsYWdzPS1XbCwkYmluZmlsZV9saWIsLXJwYXRoLFtmaWxlIGRpcm5hbWUgJGJp bmZpbGVfbGliXSIKKysJCSAgICBpZiB7JGJpbnNlcGRlYnVnICE9ICJOTyJ9IHsKKysJCQlsYXBw ZW5kIG9wdHMge2RlYnVnfQorKwkJICAgIH0KKysJCSAgICBpZiB7JGJpbnBpZSA9PSAiWUVTIn0g eworKwkJCWxhcHBlbmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllfQorKwkJICAg IH0KKysJCSAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgW2ZpbGUgdGFpbCAk ZXhlY10gJHNyY2ZpbGUgJG9wdHNdID09IC0xfSB7CisrCQkJY29udGludWU7CisrCQkgICAgfQor KwkJICAgIGlmIHskYmluc2VwZGVidWcgPT0gIlNFUCJ9IHsKKysJCQlnZGJfZ251X3N0cmlwX2Rl YnVnICRleGVjCisrCQkJIyBKdXN0IGEgc2FuaXR5IGNoZWNrLiAgQXMgZ2RiX2dudV9zdHJpcF9k ZWJ1ZyB1c2VzIHRoZQorKwkJCSMgIltmaWxlIGRpcm5hbWUgJGV4ZWNdLy5kZWJ1Zy9bZmlsZSB0 YWlsICRleGVjXS5kZWJ1ZyIKKysJCQkjIHZhcmlhbnQgZGVsZXRlIHRoZSBoaWdoZXItcHJpb3Jp dHkgZXhlYy5kZWJ1ZyBmaWxlLgorKwkJCWZpbGUgZGVsZXRlICIkZXhlYy5kZWJ1ZyIKKysJCSAg ICB9CisrCisrCQkgICAgIyBTdXBwbHkgYSBzZWxmLXN1ZmZpY2VudCBkaXJlY3RvcnkgJGRpciB3 aXRoIHRoZSByZXF1aXJlZAorKwkJICAgICMgbGlicmFyaWVzLiAgVG8gbWFrZSBhbiBleGVjdXRh YmxlIHByb3Blcmx5IHByZWxpbmtlZCBhbGwKKysJCSAgICAjIGl0cyBkZXBlbmRlbmNpZXMgb24g bGlicmFyaWVzIG11c3QgYmUgYWxzbyBwcmVsaW5rZWQuICBJZgorKwkJICAgICMgc29tZSBvZiB0 aGUgc3lzdGVtIGxpYnJhcmllcyBpcyBjdXJyZW50bHkgbm90IHByZWxpbmtlZAorKwkJICAgICMg d2UgaGF2ZSBubyByaWdodCB0byBwcmVsaW5rIChtb2RpZnkgaXQpIGF0IGl0cyBjdXJyZW50Cisr CQkgICAgIyBzeXN0ZW0gcGxhY2UuCisrCisrCQkgICAgZmlsZSBkZWxldGUgLWZvcmNlICRkaXIK KysJCSAgICBmaWxlIG1rZGlyICRkaXIKKysKKysJCSAgICBzZXQgY29tbWFuZCAibGRkICRleGVj IgorKwkJICAgIHNldCByZXN1bHQgW2NhdGNoICJleGVjICRjb21tYW5kIiBvdXRwdXRdCisrCQkg ICAgdmVyYm9zZSAtbG9nICJyZXN1bHQgb2YgJGNvbW1hbmQgaXMgJHJlc3VsdCIKKysJCSAgICB2 ZXJib3NlIC1sb2cgIm91dHB1dCBvZiAkY29tbWFuZCBpcyAkb3V0cHV0IgorKwkJICAgIGlmIHsk cmVzdWx0ICE9IDAgfHwgJG91dHB1dCA9PSAiIn0geworKwkJCWZhaWwgJGNvbW1hbmQKKysJCSAg ICB9IGVsc2UgeworKwkJCXBhc3MgJGNvbW1hbmQKKysJCSAgICB9CisrCisrCQkgICAgIyBnZGIg dGVzdHN1aXRlIHdpbGwgcHV0IHRoZXJlIGFsc28gbmVlZGxlc3MgLWxtLgorKwkJICAgIHNldCB0 ZXN0ICIkY29tbWFuZCBvdXRwdXQgY29udGFpbnMgbGliYyIKKysJCSAgICBzZXQgbGliYyBbcmVn ZXhwIC1hbGwgLWlubGluZSAtbGluZSB7Xi4qID0+ICgvW14gXSspLiokfSAkb3V0cHV0XQorKwkJ ICAgIGlmIHtbbGxlbmd0aCAkbGliY10gPT0gMH0geworKwkJCWZhaWwgJHRlc3QKKysJCSAgICB9 IGVsc2UgeworKwkJCXBhc3MgJHRlc3QKKysJCSAgICB9CisrCisrCQkgICAgc2V0IGRlc3RzIHt9 CisrCQkgICAgZm9yIHtzZXQgaSAxfSB7JGkgPCBbbGxlbmd0aCAkbGliY119IHtpbmNyIGkgMn0g eworKwkJCXNldCBhYnNwYXRoIFtsaW5kZXggJGxpYmMgJGldCisrCQkJc2V0IGRlc3QgIiRkaXIv W2ZpbGUgdGFpbCAkYWJzcGF0aF0iCisrCQkJY29weSAkYWJzcGF0aCAkZGVzdAorKwkJCWxhcHBl bmQgZGVzdHMgJGRlc3QKKysJCSAgICB9CisrCisrCQkgICAgaWYge1twcmVsaW5rJGJpbnByZWxp bmsgIi0tZHluYW1pYy1saW5rZXI9JGludGVycCAtLWxkLWxpYnJhcnktcGF0aD0kZGlyICRleGVj ICRpbnRlcnAgW2NvbmNhdCAkZGVzdHNdIiAkZXhlY10KKysJCSAgICAgICAgJiYgW2NvcHkgJGlu dGVycF9zYXZlZCAkaW50ZXJwXX0geworKwkJCXRlc3RfbGQgJGV4ZWMgMSBbZXhwciB7JGJpbnNl cGRlYnVnID09ICJOTyJ9XQorKwkJICAgIH0KKysJCX0KKysJICAgIH0KKysJfQorKworKwlmaWxl IGRlbGV0ZSAkaW50ZXJwX3NhdmVkCisrICAgIH0KKyt9Cisrc2V0IHBmX3ByZWZpeCAkb2xkX2xk cHJlZml4CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAoraW5kZXggYTEwMDNlMS4uNTQ3 YTg5OCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCisr KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAorQEAgLTQyLDY1ICs0Miwx MiBAQCBpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworICAgICByZXR1cm4gLTE7 CisgfQorIAorLSMgQ3JlYXRlIGEgY29yZSBmaWxlIG5hbWVkICJjb3JlZmlsZSIgcmF0aGVyIHRo YW4ganVzdCAiY29yZSIsIHRvCistIyBhdm9pZCBwcm9ibGVtcyB3aXRoIHN5cyBhZG1pbiB0eXBl cyB0aGF0IGxpa2UgdG8gcmVndWxhcmx5IHBydW5lIGFsbAorLSMgZmlsZXMgbmFtZWQgImNvcmUi IGZyb20gdGhlIHN5c3RlbS4KKy0jCistIyBBcmJpdHJhcmlseSB0cnkgc2V0dGluZyB0aGUgY29y ZSBzaXplIGxpbWl0IHRvICJ1bmxpbWl0ZWQiIHNpbmNlCistIyB0aGlzIGRvZXMgbm90IGh1cnQg b24gc3lzdGVtcyB3aGVyZSB0aGUgY29tbWFuZCBkb2VzIG5vdCB3b3JrIGFuZAorLSMgYWxsb3dz IHVzIHRvIGdlbmVyYXRlIGEgY29yZSBvbiBzeXN0ZW1zIHdoZXJlIGl0IGRvZXMuCistIworLSMg U29tZSBzeXN0ZW1zIGFwcGVuZCAiY29yZSIgdG8gdGhlIG5hbWUgb2YgdGhlIHByb2dyYW07IG90 aGVycyBhcHBlbmQKKy0jIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvICJjb3JlIjsgc3RpbGwg b3RoZXJzIChsaWtlIExpbnV4LCBhcyBvZgorLSMgTWF5IDIwMDMpIGNyZWF0ZSBjb3JlcyBuYW1l ZCAiY29yZS5QSUQiLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB3ZQorLSMgY291bGQgaGF2ZSBtYW55 IGNvcmUgZmlsZXMgbHlpbmcgYXJvdW5kLCBhbmQgaXQgbWF5IGJlIGRpZmZpY3VsdCB0bworLSMg dGVsbCB3aGljaCBvbmUgaXMgb3Vycywgc28gbGV0J3MgcnVuIHRoZSBwcm9ncmFtIGluIGEgc3Vi ZGlyZWN0b3J5LgorLXNldCBmb3VuZCAwCistc2V0IGNvcmVkaXIgIiR7b2JqZGlyfS8ke3N1YmRp cn0vY29yZWRpci5bZ2V0cGlkXSIKKy1maWxlIG1rZGlyICRjb3JlZGlyCistY2F0Y2ggInN5c3Rl bSBcIihjZCAke2NvcmVkaXJ9OyB1bGltaXQgLWMgdW5saW1pdGVkOyAke2JpbmZpbGV9OyB0cnVl KSA+L2Rldi9udWxsIDI+JjFcIiIKKy0jICAgICAgcmVtb3RlX2V4ZWMgaG9zdCAiJHtiaW5maWxl fSIKKy1mb3JlYWNoIGkgIiR7Y29yZWRpcn0vY29yZSAke2NvcmVkaXJ9L2NvcmUuY29yZW1ha2Vy LmMgJHtiaW5maWxlfS5jb3JlIiB7CistICAgIGlmIFtyZW1vdGVfZmlsZSBidWlsZCBleGlzdHMg JGldIHsKKy0JcmVtb3RlX2V4ZWMgYnVpbGQgIm12ICRpICR7b2JqZGlyfS8ke3N1YmRpcn0vY29y ZWZpbGUiCistCXNldCBmb3VuZCAxCistICAgIH0KKy19CistIyBDaGVjayBmb3IgImNvcmUuUElE Ii4KKy1pZiB7ICRmb3VuZCA9PSAwIH0geworLSAgICBzZXQgbmFtZXMgW2dsb2IgLW5vY29tcGxh aW4gLWRpcmVjdG9yeSAkY29yZWRpciBjb3JlLipdCistICAgIGlmIHtbbGxlbmd0aCAkbmFtZXNd ID09IDF9IHsKKy0gICAgICAgIHNldCBjb3JlZmlsZSBbZmlsZSBqb2luICRjb3JlZGlyIFtsaW5k ZXggJG5hbWVzIDBdXQorLSAgICAgICAgcmVtb3RlX2V4ZWMgYnVpbGQgIm12ICRjb3JlZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9L2NvcmVmaWxlIgorLSAgICAgICAgc2V0IGZvdW5kIDEKKy0gICAg fQorLX0KKy1pZiB7ICRmb3VuZCA9PSAwIH0geworLSAgICAjIFRoZSBicmFpbmRhbWFnZWQgSFBV WCBzaGVsbCBxdWl0cyBhZnRlciB0aGUgdWxpbWl0IC1jIGFib3ZlCistICAgICMgd2l0aG91dCBl eGVjdXRpbmcgJHtiaW5maWxlfS4gIFNvIHdlIHRyeSBhZ2FpbiB3aXRob3V0IHRoZQorLSAgICAj IHVsaW1pdCBoZXJlIGlmIHdlIGRpZG4ndCBmaW5kIGEgY29yZSBmaWxlIGFib3ZlLgorLSAgICAj IE9oLCBJIHNob3VsZCBtZW50aW9uIHRoYXQgYW55ICJicmFpbmRhbWFnZWQiIG5vbi1Vbml4IHN5 c3RlbSBoYXMKKy0gICAgIyB0aGUgc2FtZSBwcm9ibGVtLiBJIGxpa2UgdGhlIGNkIGJpdCB0b28s IGl0J3MgcmVhbGx5IG5lYXQnbiBzdHVmZi4KKy0gICAgY2F0Y2ggInN5c3RlbSBcIihjZCAke29i amRpcn0vJHtzdWJkaXJ9OyAke2JpbmZpbGV9OyB0cnVlKSA+L2Rldi9udWxsIDI+JjFcIiIKKy0g ICAgZm9yZWFjaCBpICIke29iamRpcn0vJHtzdWJkaXJ9L2NvcmUgJHtvYmpkaXJ9LyR7c3ViZGly fS9jb3JlLmNvcmVtYWtlci5jICR7YmluZmlsZX0uY29yZSIgeworLQlpZiBbcmVtb3RlX2ZpbGUg YnVpbGQgZXhpc3RzICRpXSB7CistCSAgICByZW1vdGVfZXhlYyBidWlsZCAibXYgJGkgJHtvYmpk aXJ9LyR7c3ViZGlyfS9jb3JlZmlsZSIKKy0JICAgIHNldCBmb3VuZCAxCistCX0KKy0gICAgfQor K3NldCBjb3JlZmlsZSBbY29yZV9maW5kICRiaW5maWxlIHtjb3JlbW1hcC5kYXRhfV0KKytpZiB7 JGNvcmVmaWxlID09ICIifSB7CisrICAgIHJldHVybiAwOworIH0KKyAKKy0jIFRyeSB0byBjbGVh biB1cCBhZnRlciBvdXJzZWx2ZXMuIAorLXJlbW90ZV9maWxlIGJ1aWxkIGRlbGV0ZSBbZmlsZSBq b2luICRjb3JlZGlyIGNvcmVtbWFwLmRhdGFdCistcmVtb3RlX2V4ZWMgYnVpbGQgInJtZGlyICRj b3JlZGlyIgorLSAgICAKKy1pZiB7ICRmb3VuZCA9PSAwICB9IHsKKy0gICAgd2FybmluZyAiY2Fu J3QgZ2VuZXJhdGUgYSBjb3JlIGZpbGUgLSBjb3JlIHRlc3RzIHN1cHByZXNzZWQgLSBjaGVjayB1 bGltaXQgLWMiCistICAgIHJldHVybiAwCistfQorLQorLSMKKy0jIFRlc3QgdGhhdCB3ZSBjYW4g c2ltcGx5IHN0YXJ0dXAgd2l0aCBhICItY29yZT1jb3JlZmlsZSIgY29tbWFuZCBsaW5lIGFyZwor KyMgVGVzdCB0aGF0IHdlIGNhbiBzaW1wbHkgc3RhcnR1cCB3aXRoIGEgIi1jb3JlPSRjb3JlZmls ZSIgY29tbWFuZCBsaW5lIGFyZworICMgYW5kIHJlY29nbml6ZSB0aGF0IHRoZSBjb3JlIGZpbGUg aXMgYSB2YWxpZCwgdXNhYmxlIGNvcmUgZmlsZS4KKyAjIFRvIGRvIHRoaXMsIHdlIG11c3Qgc2h1 dGRvd24gdGhlIGN1cnJlbnRseSBydW5uaW5nIGdkYiBhbmQgcmVzdGFydAorICMgd2l0aCB0aGUg LWNvcmUgYXJncy4gIFdlIGNhbid0IHVzZSBnZGJfc3RhcnQgYmVjYXVzZSBpdCBsb29rcyBmb3IK K0BAIC0xMTQsMjcgKzYxLDI3IEBAIGlmIHsgJGZvdW5kID09IDAgIH0geworIAorIGdkYl9leGl0 CisgaWYgJHZlcmJvc2U+MSB0aGVuIHsKKy0gICAgc2VuZF91c2VyICJTcGF3bmluZyAkR0RCICRJ TlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgLWNvcmU9JG9iamRpci8kc3ViZGlyL2NvcmVmaWxl XG4iCisrICAgIHNlbmRfdXNlciAiU3Bhd25pbmcgJEdEQiAkSU5URVJOQUxfR0RCRkxBR1MgJEdE QkZMQUdTIC1jb3JlPSRjb3JlZmlsZVxuIgorIH0KKyAKKyBzZXQgb2xkdGltZW91dCAkdGltZW91 dAorIHNldCB0aW1lb3V0IFtleHByICIkdGltZW91dCArIDYwIl0KKyB2ZXJib3NlICJUaW1lb3V0 IGlzIG5vdyAkdGltZW91dCBzZWNvbmRzIiAyCistZXZhbCAic3Bhd24gJEdEQiAkSU5URVJOQUxf R0RCRkxBR1MgJEdEQkZMQUdTIC1jb3JlPSRvYmpkaXIvJHN1YmRpci9jb3JlZmlsZSIKKytldmFs ICJzcGF3biAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgLWNvcmU9JGNvcmVmaWxl IgorIGV4cGVjdCB7CisgICAgIC1yZSAiQ291bGRuJ3QgZmluZCAuKiByZWdpc3RlcnMgaW4gY29y ZSBmaWxlLiokZ2RiX3Byb21wdCAkIiB7CistICAgICAgICBmYWlsICJhcmdzOiAtY29yZT1jb3Jl ZmlsZSAoY291bGRuJ3QgZmluZCByZWdzKSIKKysgICAgICAgIGZhaWwgImFyZ3M6IC1jb3JlPVtm aWxlIHRhaWwgJGNvcmVmaWxlXSAoY291bGRuJ3QgZmluZCByZWdzKSIKKyAgICAgfQorICAgICAt cmUgIkNvcmUgd2FzIGdlbmVyYXRlZCBieSAuKmNvcmVtYWtlci4qXHJcblwjMCAgLipcKFwpLipc clxuJGdkYl9wcm9tcHQgJCIgeworLQlwYXNzICJhcmdzOiAtY29yZT1jb3JlZmlsZSIKKysJcGFz cyAiYXJnczogLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIgorICAgICB9CisgICAgIC1yZSAi Q29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qXHJcblwjMCAgLipcKFwpLipcclxuJGdkYl9wcm9tcHQg JCIgeworLQlwYXNzICJhcmdzOiAtY29yZT1jb3JlZmlsZSAod2l0aCBiYWQgcHJvZ3JhbSBuYW1l KSIKKysJcGFzcyAiYXJnczogLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdICh3aXRoIGJhZCBw cm9ncmFtIG5hbWUpIgorICAgICB9CisgICAgIC1yZSAiLipyZWdpc3RlcnMgZnJvbSBjb3JlIGZp bGU6IEZpbGUgaW4gd3JvbmcgZm9ybWF0LiogJCIgeworLQlmYWlsICJhcmdzOiAtY29yZT1jb3Jl ZmlsZSAoY291bGQgbm90IHJlYWQgcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlKSIKKysJZmFpbCAi YXJnczogLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIChjb3VsZCBub3QgcmVhZCByZWdpc3Rl cnMgZnJvbSBjb3JlIGZpbGUpIgorICAgICB9CistICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIgl7 IGZhaWwgImFyZ3M6IC1jb3JlPWNvcmVmaWxlIiB9CisrICAgIC1yZSAiLiokZ2RiX3Byb21wdCAk Igl7IGZhaWwgImFyZ3M6IC1jb3JlPVtmaWxlIHRhaWwgJGNvcmVmaWxlXSIgfQorICAgICB0aW1l b3V0IAkJeyBmYWlsICIodGltZW91dCkgc3RhcnRpbmcgd2l0aCAtY29yZSIgfQorIH0KKyAKK0BA IC0xNDcsMjIgKzk0LDIyIEBAIGV4cGVjdCB7CisgY2xvc2U7CisgCisgaWYgJHZlcmJvc2U+MSB0 aGVuIHsKKy0gICAgc2VuZF91c2VyICJTcGF3bmluZyAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAk R0RCRkxBR1MgJGJpbmZpbGUgLWNvcmU9JG9iamRpci8kc3ViZGlyL2NvcmVmaWxlXG4iCisrICAg IHNlbmRfdXNlciAiU3Bhd25pbmcgJEdEQiAkSU5URVJOQUxfR0RCRkxBR1MgJEdEQkZMQUdTICRi aW5maWxlIC1jb3JlPSRjb3JlZmlsZVxuIgorIH0KKyAKKyAKKy1ldmFsICJzcGF3biAkR0RCICRJ TlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgJGJpbmZpbGUgLWNvcmU9JG9iamRpci8kc3ViZGly L2NvcmVmaWxlIjsKKytldmFsICJzcGF3biAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxB R1MgJGJpbmZpbGUgLWNvcmU9JGNvcmVmaWxlIjsKKyBleHBlY3QgeworICAgICAtcmUgIkNvcmUg d2FzIGdlbmVyYXRlZCBieSAuKmNvcmVtYWtlci4qXHJcblwjMCAgLipcKFwpLipcclxuJGdkYl9w cm9tcHQgJCIgeworLQlwYXNzICJhcmdzOiBleGVjZmlsZSAtY29yZT1jb3JlZmlsZSIKKysJcGFz cyAiYXJnczogZXhlY2ZpbGUgLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIgorICAgICB9Cisg ICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qXHJcblwjMCAgLipcKFwpLipcclxuJGdk Yl9wcm9tcHQgJCIJIHsKKy0JcGFzcyAiYXJnczogZXhlY2ZpbGUgLWNvcmU9Y29yZWZpbGUgKHdp dGggYmFkIHByb2dyYW0gbmFtZSkiCisrCXBhc3MgImFyZ3M6IGV4ZWNmaWxlIC1jb3JlPVtmaWxl IHRhaWwgJGNvcmVmaWxlXSAod2l0aCBiYWQgcHJvZ3JhbSBuYW1lKSIKKyAgICAgfQorICAgICAt cmUgIi4qcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlOiBGaWxlIGluIHdyb25nIGZvcm1hdC4qICQi IHsKKy0JZmFpbCAiYXJnczogZXhlY2ZpbGUgLWNvcmU9Y29yZWZpbGUgKGNvdWxkIG5vdCByZWFk IHJlZ2lzdGVycyBmcm9tIGNvcmUgZmlsZSkiCisrCWZhaWwgImFyZ3M6IGV4ZWNmaWxlIC1jb3Jl PVtmaWxlIHRhaWwgJGNvcmVmaWxlXSAoY291bGQgbm90IHJlYWQgcmVnaXN0ZXJzIGZyb20gY29y ZSBmaWxlKSIKKyAgICAgfQorLSAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJhcmdz OiBleGVjZmlsZSAtY29yZT1jb3JlZmlsZSIgfQorKyAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIJ eyBmYWlsICJhcmdzOiBleGVjZmlsZSAtY29yZT1bZmlsZSB0YWlsICRjb3JlZmlsZV0iIH0KKyAg ICAgdGltZW91dCAJCXsgZmFpbCAiKHRpbWVvdXQpIHN0YXJ0aW5nIHdpdGggLWNvcmUiIH0KKyB9 Cisgc2V0IHRpbWVvdXQgJG9sZHRpbWVvdXQKK0BAIC0xNzgsNyArMTI1LDcgQEAgZ2RiX2xvYWQg JHtiaW5maWxlfQorIAorICMgVGVzdCBiYXNpYyBjb3JlZmlsZSByZWNvZ25pdGlvbiB2aWEgY29y ZS1maWxlIGNvbW1hbmQuCisgCistc2VuZF9nZGIgImNvcmUtZmlsZSAkb2JqZGlyLyRzdWJkaXIv Y29yZWZpbGVcbiIKKytzZW5kX2dkYiAiY29yZS1maWxlICRjb3JlZmlsZVxuIgorIGdkYl9leHBl Y3QgeworICAgICAtcmUgIi4qIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFkeS4qeSBv ciBuLiAkIiB7CisgCSMgZ2RiX2xvYWQgbWF5IGNvbm5lY3QgdXMgdG8gYSBnZGJzZXJ2ZXIuCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5jCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDYzNzY4YjkuLjAwMDAwMDAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGll LXN1cHBvcnQuYworKysrIC9kZXYvbnVsbAorQEAgLTEsMzQgKzAsMCBAQAorLS8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCistCistICAgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK Ky0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCistICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistCistKi8KKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0K Ky12b2lkCistZjEgKGludCBhKQorLXsKKy0gIHByaW50ZiAoImEgPSAlZFxuIiwgYSk7CistfQor LQorLWludAorLW1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisteworLSAgZjEgKDEpOwor LQorLSAgcmV0dXJuIDA7CistfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv cGllLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5leHAK K2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggN2QxMThjMC4uMDAwMDAwMAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5leHAKKysrKyAvZGV2L251bGwKK0BA IC0xLDU4ICswLDAgQEAKKy0jIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorLQorLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor LSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0j IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0KKy1zZXQgdGVzdGZp bGUgcGllLXN1cHBvcnQKKy1zZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCistc2V0IG9iamZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5vCistc2V0IGJpbmZpbGUgJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorLQorLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpmaWxlfSIgb2JqZWN0IHtxdWlldCBkZWJ1ZyBh ZGRpdGlvbmFsX2ZsYWdzPS1mcGllfV0gIT0gIiIgfSB7CistICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgUElFIG9iamVjdCBmaWxlLiIKKy0gICAgcmV0dXJuIC0xCistfQorLWlm ICB7IFtnZGJfY29tcGlsZSAiJHtvYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge3F1 aWV0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LXBpZX1dICE9ICIiIH0geworLSAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IFBJRSBiaW5hcnkuIgorLSAgICByZXR1cm4gLTEKKy19 CistCistIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCistCistZ2RiX2V4aXQKKy1nZGJfc3RhcnQKKy1n ZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKy0KKy1pZiBbaXNfcmVtb3RlIGhv c3RdIHsKKy0gIHNldCBiaW5maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAkYmluZmlsZV0KKy0g ICAgaWYgeyAkYmluZmlsZSA9PSAiIiB9IHsKKy0gICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgZG93 bmxvYWQgcmVtb3RlIHRlc3QgYmluYXJ5LiIKKy0gICAgICByZXR1cm4gLTEKKy0gICAgfQorLX0K Ky0KKy0jIFRoZSBmaWxlIGNvbW1hbmQgdXNlZCB0byBraWxsIHRoZSByZW1vdGUgdGFyZ2V0LiAg Rm9yIHRoZSBiZW5lZml0CistIyBvZiB0aGUgdGVzdHN1aXRlLCBwcmVzZXJ2ZSB0aGlzIGJlaGF2 aW9yLgorLXNlbmRfZ2RiICJraWxsXG4iCistZ2RiX2V4cGVjdCAxMjAgeworLSAgICAtcmUgIktp bGwgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuIC55IG9yIG4uICQiIHsKKy0Jc2VuZF9nZGIg InlcbiIKKy0JdmVyYm9zZSAiXHRcdEtpbGxpbmcgcHJldmlvdXMgcHJvZ3JhbSBiZWluZyBkZWJ1 Z2dlZCIKKy0JZXhwX2NvbnRpbnVlCistICAgIH0KKy0gICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7 CistCSMgT0suCistICAgIH0KKy19CistCistZ2RiX3Rlc3QgImZpbGUgJGJpbmZpbGUiICJjdXJy ZW50IGJpbmFyeSBpcyBhIFBJRS4qIiAiY29ycmVjdGx5IGRldGVjdGVkIFBJRSBiaW5hcnkiCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3JpbmQtZGItYXR0YWNoLmMKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41ZmFhYWFjCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFjaC5jCitAQCAtMCwwICsxLDMw IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KysKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUg PHN0ZGxpYi5oPgorKworK2ludCBtYWluKCkKKyt7CisrICB2b2lkICpwOworKworKyAgcCA9IG1h bGxvYyAoMSk7CisrICBpZiAocCA9PSBOVUxMKQorKyAgICByZXR1cm4gMTsKKysgIGZyZWUgKHAp OworKyAgZnJlZSAocCk7CS8qIGRvdWJsZS1mcmVlICovCisrICByZXR1cm4gMDsKKyt9CitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYWMwNmZkMworLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2guZXhwCitAQCAtMCwwICsx LDc0IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc2V0IHRlc3QgdmFsZ3JpbmQt ZGItYXR0YWNoCisrc2V0IHNyY2ZpbGUgJHRlc3QuYworK3NldCBleGVjdXRhYmxlICR0ZXN0Cisr c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9CisraWYge1tidWls ZF9leGVjdXRhYmxlICR0ZXN0LmV4cCAkZXhlY3V0YWJsZSAkc3JjZmlsZSB7ZGVidWd9XSA9PSAt MX0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKysKKysjIHJlbW90ZV9zcGF3 biBicmVha3MgdGhlIGNvbW1hbmQgb24gZWFjaCB3aGl0ZXNwYWNlIGRlc3BpdGUgcG9zc2libGUg cXVvdGluZy4KKysjIFVzZSBiYWNrc2xhc2gtZXNjYXBlZCB3aGl0ZXNwYWNlIHRoZXJlIGluc3Rl YWQ6CisrCisrc2V0IGRiX2NvbW1hbmQgIi0tZGItY29tbWFuZD0kR0RCICRJTlRFUk5BTF9HREJG TEFHUyAkR0RCRkxBR1MgW2hvc3RfaW5mbyBnZGJfb3B0c10gJWYgJXAiCisrcmVnc3ViIC1hbGwg IiAiICRkYl9jb21tYW5kICJcXCAiIGRiX2NvbW1hbmQKKysKKytzZXQgdGVzdCAic3Bhd24gdmFs Z3JpbmQiCisrc2V0IGNtZCAidmFsZ3JpbmQgLS1kYi1hdHRhY2g9eWVzICRkYl9jb21tYW5kICRi aW5maWxlIgorK3NldCByZXMgW3JlbW90ZV9zcGF3biBob3N0ICRjbWRdOworK2lmIHsgJHJlcyA8 IDAgfHwgJHJlcyA9PSAiIiB9IHsKKysgICAgdmVyYm9zZSAtbG9nICJTcGF3bmluZyAkY21kIGZh aWxlZC4iCisrICAgIHNldHVwX3hmYWlsICotKi0qCisrICAgIGZhaWwgJHRlc3QKKysgICAgcmV0 dXJuIC0xCisrfQorK3Bhc3MgJHRlc3QKKysjIERlY2xhcmUgR0RCIG5vdyBhcyBydW5uaW5nLgor K3NldCBnZGJfc3Bhd25faWQgLTEKKysKKytzZXQgdGVzdCAidmFsZ3JpbmQgc3RhcnRlZCIKKysj IFRoZSB0cmFpbGluZyAnLicgZGlmZmVycyBmb3IgZGlmZmVyZW50IG1lbWNoZWNrIHZlcnNpb25z LgorK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKKysgICAgLXJlICJNZW1jaGVjaywgYSBt ZW1vcnkgZXJyb3IgZGV0ZWN0b3JcXC4/XHJcbiIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysg ICAgLXJlICJ2YWxncmluZDogZmFpbGVkIHRvIHN0YXJ0IHRvb2wgJ21lbWNoZWNrJyBmb3IgcGxh dGZvcm0gJy4qJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIgeworKwlzZXR1cF94ZmFpbCAq LSotKgorKwlmYWlsICR0ZXN0CisrCXJldHVybiAtMQorKyAgICB9CisrfQorKworK3NldCBkb3Vi bGVfZnJlZSBbZ2RiX2dldF9saW5lX251bWJlciAiZG91YmxlLWZyZWUiXQorKworK2dkYl90ZXN0 X211bHRpcGxlICIiICR0ZXN0IHsKKysgICAgLXJlICJJbnZhbGlkIGZyZWVcXChcXCkgLyBkZWxl dGUgLyBkZWxldGVcXFxbXFxcXVxyXG4uKjogbWFpbiBcXCgke3NyY2ZpbGV9OiRkb3VibGVfZnJl ZVxcKVxyXG4uKi0tLS0gQXR0YWNoIHRvIGRlYnVnZ2VyIFxcPyAtLS0gXFteXHJcblxdKiAtLS0t ICIgeworKwlzZW5kX2dkYiAieVxyIgorKyAgICB9CisrICAgIC1yZSAiLS0tLSBBdHRhY2ggdG8g ZGVidWdnZXIgXFw/IC0tLSBcW15cclxuXF0qIC0tLS0gIiB7CisrCXNlbmRfZ2RiICJuXHIiCisr CWV4cF9jb250aW51ZQorKyAgICB9CisrfQorKworKyMgSW5pdGlhbGl6YXRpb24gZnJvbSBkZWZh dWx0X2dkYl9zdGFydC4KKytnZGJfdGVzdCAic2V0IGhlaWdodCAwIgorK2dkYl90ZXN0ICJzZXQg d2lkdGggMCIKKysKKytnZGJfdGVzdCAiYnQiICJpbiBtYWluIFxcKC4qXFwpIGF0IC4qJHtzcmNm aWxlfTokZG91YmxlX2ZyZWUiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1yYW5nZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1yYW5nZXMuZXhw CitpbmRleCA2MWUxZmU0Li45MTA5MDMwIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1yYW5nZXMuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LXJhbmdlcy5leHAKK0BAIC01NSw2ICs1NSwxMiBAQCBnZGJfc3RhcnQKKyBnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisrIyBUZXN0 IGFsc28gb2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCByZWxvY2F0aW9ucyBmb3IgLWZQSUUgLXBp ZSBidWlsZHMgYmVsb3cuCisrIyBPbiBzb21lIHRhcmdldHMgaXQgbWF5IHBvc3NpYmx5IGZhaWwg YnV0IHRoZSBwcm9ncmFtIGlzIGJlaW5nIHN0YXJ0ZWQgb25seQorKyMgZm9yIHRoZSBQSUUgYnVp bGQgc28gdHJ5IGl0IGFueXdheS4KKysKKytydW50b19tYWluCisrCisgIyBDb3JyZWN0IG91dHB1 dDoKKyAjIAlMaW5lIDM5IG9mICIuLi8uLi8uL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt cmFuZ2VzLlMiIHN0YXJ0cyBhdCBhZGRyZXNzIDB4NCBhbmQgZW5kcyBhdCAweDguCisgIyBXcm9u ZyBvdXRwdXQ6CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKK2luZGV4IGQwYzM0OTMuLmZiZjkxMjQgMTAwNjQ0CistLS0g YS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCitAQCAtMjc3OCw2ICsyNzc4LDExIEBAIHByb2MgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB7IGRl c3QgYXJncyB9IHsKKyAgICAgICByZXR1cm4gMQorICAgICB9CisgCisrICAgICMgV29ya2Fyb3Vu ZCBQUiBiaW51dGlscy8xMDgwMjoKKysgICAgIyBQcmVzZXJ2ZSB0aGUgJ3gnIGJpdCBhbHNvIGZv ciBQSUVzIChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlcykuCisrICAgIHNldCBwZXJt IFtmaWxlIGF0dHJpYnV0ZXMgJHtkZXN0fSAtcGVybWlzc2lvbnNdCisrICAgIGZpbGUgYXR0cmli dXRlcyAke3N0cmlwcGVkX2ZpbGV9IC1wZXJtaXNzaW9ucyAkcGVybQorKworICAgICAjIEdldCBy aWQgb2YgZXZlcnl0aGluZyBidXQgdGhlIGRlYnVnIGluZm8sIGFuZCBzdG9yZSByZXN1bHQgaW4g ZGVidWdfZmlsZQorICAgICAjIFRoaXMgd2lsbCBiZSBpbiB0aGUgLmRlYnVnIHN1YmRpcmVjdG9y eSwgc2VlIGFib3ZlLgorICAgICBzZXQgcmVzdWx0IFtjYXRjaCAiZXhlYyAkc3RyaXBfdG9fZmls ZV9wcm9ncmFtIC0tb25seS1rZWVwLWRlYnVnICR7ZGVzdH0gLW8gJHtkZWJ1Z19maWxlfSIgb3V0 cHV0XQorQEAgLTI4MTQsNyArMjgxOSwxMiBAQCBwcm9jIGdkYl9nbnVfc3RyaXBfZGVidWcgeyBk ZXN0IGFyZ3MgfSB7CisgICAgICAgcmV0dXJuIDEKKyAgICAgfQorIAorLSAgIHJldHVybiAwCisr ICAgICMgV29ya2Fyb3VuZCBQUiBiaW51dGlscy8xMDgwMjoKKysgICAgIyBQcmVzZXJ2ZSB0aGUg J3gnIGJpdCBhbHNvIGZvciBQSUVzIChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlcyku CisrICAgIHNldCBwZXJtIFtmaWxlIGF0dHJpYnV0ZXMgJHtzdHJpcHBlZF9maWxlfSAtcGVybWlz c2lvbnNdCisrICAgIGZpbGUgYXR0cmlidXRlcyAke2Rlc3R9IC1wZXJtaXNzaW9ucyAkcGVybQor KworKyAgICByZXR1cm4gMAorIH0KKyAKKyAjIFRlc3QgdGhlIG91dHB1dCBvZiBHREJfQ09NTUFO RCBtYXRjaGVzIHRoZSBwYXR0ZXJuIG9idGFpbmVkCitAQCAtMzA0MywzICszMDUzLDcwIEBAIGlm IHtbaW5mbyBleGlzdHMgVFJBTlNDUklQVF19IHsKKyAgICAgcmV0dXJuIFt1cGxldmVsIHJlYWxf c2VuZF9nZGIgJGFyZ3NdCisgICB9CisgfQorKworK3Byb2MgY29yZV9maW5kIHtiaW5maWxlIHtk ZWxldGVmaWxlcyB7fX0ge2FyZyAiIn19IHsKKysgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIKKysK KysgICAgc2V0IGRlc3Rjb3JlICIkYmluZmlsZS5jb3JlIgorKyAgICBmaWxlIGRlbGV0ZSAkZGVz dGNvcmUKKysKKysgICAgIyBDcmVhdGUgYSBjb3JlIGZpbGUgbmFtZWQgIiRkZXN0Y29yZSIgcmF0 aGVyIHRoYW4ganVzdCAiY29yZSIsIHRvCisrICAgICMgYXZvaWQgcHJvYmxlbXMgd2l0aCBzeXMg YWRtaW4gdHlwZXMgdGhhdCBsaWtlIHRvIHJlZ3VsYXJseSBwcnVuZSBhbGwKKysgICAgIyBmaWxl cyBuYW1lZCAiY29yZSIgZnJvbSB0aGUgc3lzdGVtLgorKyAgICAjCisrICAgICMgQXJiaXRyYXJp bHkgdHJ5IHNldHRpbmcgdGhlIGNvcmUgc2l6ZSBsaW1pdCB0byAidW5saW1pdGVkIiBzaW5jZQor KyAgICAjIHRoaXMgZG9lcyBub3QgaHVydCBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBjb21tYW5kIGRv ZXMgbm90IHdvcmsgYW5kCisrICAgICMgYWxsb3dzIHVzIHRvIGdlbmVyYXRlIGEgY29yZSBvbiBz eXN0ZW1zIHdoZXJlIGl0IGRvZXMuCisrICAgICMKKysgICAgIyBTb21lIHN5c3RlbXMgYXBwZW5k ICJjb3JlIiB0byB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbTsgb3RoZXJzIGFwcGVuZAorKyAgICAj IHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvICJjb3JlIjsgc3RpbGwgb3RoZXJzIChsaWtlIExp bnV4LCBhcyBvZgorKyAgICAjIE1heSAyMDAzKSBjcmVhdGUgY29yZXMgbmFtZWQgImNvcmUuUElE Ii4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgd2UKKysgICAgIyBjb3VsZCBoYXZlIG1hbnkgY29yZSBm aWxlcyBseWluZyBhcm91bmQsIGFuZCBpdCBtYXkgYmUgZGlmZmljdWx0IHRvCisrICAgICMgdGVs bCB3aGljaCBvbmUgaXMgb3Vycywgc28gbGV0J3MgcnVuIHRoZSBwcm9ncmFtIGluIGEgc3ViZGly ZWN0b3J5LgorKyAgICBzZXQgZm91bmQgMAorKyAgICBzZXQgY29yZWRpciAiJHtvYmpkaXJ9LyR7 c3ViZGlyfS9jb3JlZGlyLltnZXRwaWRdIgorKyAgICBmaWxlIG1rZGlyICRjb3JlZGlyCisrICAg IGNhdGNoICJzeXN0ZW0gXCIoY2QgJHtjb3JlZGlyfTsgdWxpbWl0IC1jIHVubGltaXRlZDsgJHti aW5maWxlfSAke2FyZ307IHRydWUpID4vZGV2L251bGwgMj4mMVwiIgorKyAgICAjICAgICAgcmVt b3RlX2V4ZWMgaG9zdCAiJHtiaW5maWxlfSIKKysgICAgZm9yZWFjaCBpICIke2NvcmVkaXJ9L2Nv cmUgJHtjb3JlZGlyfS9jb3JlLmNvcmVtYWtlci5jICR7YmluZmlsZX0uY29yZSIgeworKwlpZiBb cmVtb3RlX2ZpbGUgYnVpbGQgZXhpc3RzICRpXSB7CisrCSAgICByZW1vdGVfZXhlYyBidWlsZCAi bXYgJGkgJGRlc3Rjb3JlIgorKwkgICAgc2V0IGZvdW5kIDEKKysJfQorKyAgICB9CisrICAgICMg Q2hlY2sgZm9yICJjb3JlLlBJRCIuCisrICAgIGlmIHsgJGZvdW5kID09IDAgfSB7CisrCXNldCBu YW1lcyBbZ2xvYiAtbm9jb21wbGFpbiAtZGlyZWN0b3J5ICRjb3JlZGlyIGNvcmUuKl0KKysJaWYg e1tsbGVuZ3RoICRuYW1lc10gPT0gMX0geworKwkgICAgc2V0IGNvcmVmaWxlIFtmaWxlIGpvaW4g JGNvcmVkaXIgW2xpbmRleCAkbmFtZXMgMF1dCisrCSAgICByZW1vdGVfZXhlYyBidWlsZCAibXYg JGNvcmVmaWxlICRkZXN0Y29yZSIKKysJICAgIHNldCBmb3VuZCAxCisrCX0KKysgICAgfQorKyAg ICBpZiB7ICRmb3VuZCA9PSAwIH0geworKwkjIFRoZSBicmFpbmRhbWFnZWQgSFBVWCBzaGVsbCBx dWl0cyBhZnRlciB0aGUgdWxpbWl0IC1jIGFib3ZlCisrCSMgd2l0aG91dCBleGVjdXRpbmcgJHti aW5maWxlfS4gIFNvIHdlIHRyeSBhZ2FpbiB3aXRob3V0IHRoZQorKwkjIHVsaW1pdCBoZXJlIGlm IHdlIGRpZG4ndCBmaW5kIGEgY29yZSBmaWxlIGFib3ZlLgorKwkjIE9oLCBJIHNob3VsZCBtZW50 aW9uIHRoYXQgYW55ICJicmFpbmRhbWFnZWQiIG5vbi1Vbml4IHN5c3RlbSBoYXMKKysJIyB0aGUg c2FtZSBwcm9ibGVtLiBJIGxpa2UgdGhlIGNkIGJpdCB0b28sIGl0J3MgcmVhbGx5IG5lYXQnbiBz dHVmZi4KKysJY2F0Y2ggInN5c3RlbSBcIihjZCAke29iamRpcn0vJHtzdWJkaXJ9OyAke2JpbmZp bGV9OyB0cnVlKSA+L2Rldi9udWxsIDI+JjFcIiIKKysJZm9yZWFjaCBpICIke29iamRpcn0vJHtz dWJkaXJ9L2NvcmUgJHtvYmpkaXJ9LyR7c3ViZGlyfS9jb3JlLmNvcmVtYWtlci5jICR7YmluZmls ZX0uY29yZSIgeworKwkgICAgaWYgW3JlbW90ZV9maWxlIGJ1aWxkIGV4aXN0cyAkaV0geworKwkJ cmVtb3RlX2V4ZWMgYnVpbGQgIm12ICRpICRkZXN0Y29yZSIKKysJCXNldCBmb3VuZCAxCisrCSAg ICB9CisrCX0KKysgICAgfQorKworKyAgICAjIFRyeSB0byBjbGVhbiB1cCBhZnRlciBvdXJzZWx2 ZXMuIAorKyAgICBmb3JlYWNoIGRlbGV0ZWZpbGUgJGRlbGV0ZWZpbGVzIHsKKysJcmVtb3RlX2Zp bGUgYnVpbGQgZGVsZXRlIFtmaWxlIGpvaW4gJGNvcmVkaXIgJGRlbGV0ZWZpbGVdCisrICAgIH0K KysgICAgcmVtb3RlX2V4ZWMgYnVpbGQgInJtZGlyICRjb3JlZGlyIgorKwkKKysgICAgaWYgeyAk Zm91bmQgPT0gMCAgfSB7CisrCXdhcm5pbmcgImNhbid0IGdlbmVyYXRlIGEgY29yZSBmaWxlIC0g Y29yZSB0ZXN0cyBzdXBwcmVzc2VkIC0gY2hlY2sgdWxpbWl0IC1jIgorKwlyZXR1cm4gIiIKKysg ICAgfQorKyAgICByZXR1cm4gJGRlc3Rjb3JlCisrfQoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIu cGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IGMzMzAyMTIuLmMyNTg0NGIgMTAwNjQ0Ci0t LSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiw3ICsyLDcg QEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFw c2hvdDoKLWNvbW1pdCA3Y2I4NjBmMDNlMjQzN2M5NzIzOTMzNGViZTI0MGQwNmY0NTcyM2UwCitj b21taXQgNmU3Mzk4OGY2NTNiYTk4NmU4NzQyZjIwOGYxN2VjMDg0MjkyY2JkNQogCiBicmFuY2gg YGFyY2hlcicgLSB0aGUgbWVyZ2Ugb2YgYnJhbmNoZXM6CiBhcmNoZXItdHJvbWV5LWNhbGwtZnJh bWUtY2ZhCkBAIC0xOSwxMiArMTksMTIgQEAgYXJjaGVyLXBtdWxkb29uLW5leHQtb3Zlci10aHJv dwogCiAKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWlu ZGV4IGY1ZTFkZGUuLjczZWU1NWMgMTAwNjQ0CitpbmRleCA3ZDUzMjA1Li4zMTlmYWM0IDEwMDY0 NAogLS0tIGEvZ2RiL01ha2VmaWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KIEBAIC0xNjks NiArMTY5LDEwIEBAIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9S T09UX0RFRklORUAKICAjIERpZCB0aGUgdXNlciBnaXZlIHVzIGEgLS13aXRoLWdkYi1kYXRhZGly IG9wdGlvbj8KLSBHREJfREFUQURJUl9QQVRIID0gQEdEQl9EQVRBRElSX1BBVEhACisgR0RCX0RB VEFESVIgPSBAR0RCX0RBVEFESVJACiAgCiArIyBUaGUgYXJndW1lbnQgdG8gLS13aXRoLXB5dGhv bmRpci4gIElmIG5vdCBnaXZlbiwgdGhpcyBpcwogKyMgR0RCX0RBVEFESVJfUEFUSC9weXRob24u CkBAIC0xOTQsMTAgKzE5NCwxMCBAQCBpbmRleCBmNWUxZGRlLi43M2VlNTVjIDEwMDY0NAogICMg RGVwZW5kZW5jeSB0cmFja2luZy4gIE1vc3Qgb2YgdGhpcyBpcyBjb25kaXRpb25hbCBvbiBHTlUg TWFrZSBiZWluZwogICMgZm91bmQgYnkgY29uZmlndXJlOyBpZiBHTlUgTWFrZSBpcyBub3QgZm91 bmQsIHdlIGZhbGwgYmFjayB0byBhCiBkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwot aW5kZXggNGZjNmRjZC4uNjc0NGIyMyAxMDA2NDQKK2luZGV4IDhkMzJjMzQuLmY3ZWEyMWIgMTAw NjQ0CiAtLS0gYS9nZGIvTkVXUwogKysrIGIvZ2RiL05FV1MKLUBAIC00NjIsNiArNDYyLDEzIEBA IHg4Ni94ODZfNjQgRGFyd2luCQlpWzM0NTY3XTg2LSotZGFyd2luKgorQEAgLTQ3Niw2ICs0NzYs MTMgQEAgeDg2L3g4Nl82NCBEYXJ3aW4JCWlbMzQ1NjddODYtKi1kYXJ3aW4qCiAgCiAgeDg2XzY0 IE1pbkdXCQkJeDg2XzY0LSotbWluZ3cqCiAgCkBAIC0yOTAsNyArMjkwLDcgQEAgaW5kZXggOWI1 ZDJjNi4uNjE2NzZhOSAxMDA2NDQKICAgIGFkYV9kdW1wX3N1YmV4cF9ib2R5LAogICAgYWRhX2V2 YWx1YXRlX3N1YmV4cAogZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYyBiL2dkYi9h bWQ2NC1saW51eC1uYXQuYwotaW5kZXggN2Q4NDYxYy4uYTZkMzVkNyAxMDA2NDQKK2luZGV4IDdk ODQ2MWMuLmZjNGIzZTAgMTAwNjQ0CiAtLS0gYS9nZGIvYW1kNjQtbGludXgtbmF0LmMKICsrKyBi L2dkYi9hbWQ2NC1saW51eC1uYXQuYwogQEAgLTI3MCw2ICsyNzAsOCBAQCBhbWQ2NF9saW51eF9k cl9nZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtKQpAQCAtMzQwLDcgKzM0MCw3IEBAIGluZGV4 IDdkODQ2MWMuLmE2ZDM1ZDcgMTAwNjQ0CiAgICByZXR1cm4gYW1kNjRfbGludXhfZHJfZ2V0IChp bmZlcmlvcl9wdGlkLCBEUl9TVEFUVVMpOwogIH0KICAKLSsvKiBVbnNldCBWQUxVRSBiaXRzIGlu IERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCisrLyogVW5zZXQgTUFTSyBi aXRzIGluIERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCiArCiArc3RhdGlj IHZvaWQKICthbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXMgKHVuc2lnbmVkIGxvbmcgbWFzaykK QEAgLTQ2Myw3ICs0NjMsNyBAQCBpbmRleCA1M2U3MzcxLi5kMzczZjhhIDEwMDY0NAogKwogICNl bmRpZiAvKiBCTE9DS19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9i cmVha3BvaW50LmMKLWluZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CitpbmRleCA4MTFjZGZi Li4wZjM1MTAxIDEwMDY0NAogLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2RiL2JyZWFr cG9pbnQuYwogQEAgLTYxLDYgKzYxLDcgQEAKQEAgLTY4NCwxNCArNjg0LDE0IEBAIGluZGV4IDgx MWNkZmIuLmIwYmYzMTQgMTAwNjQ0CiArCiArICAvKiBGaW5kIEJDX0wgd2hpY2ggaXMgYSBsZWZ0 bW9zdCBlbGVtZW50IHdoaWNoIG1heSBhZmZlY3QgQlVGIGNvbnRlbnQuICBJdCBpcwogKyAgICAg c2FmZSB0byByZXBvcnQgbG93ZXIgdmFsdWUgYnV0IGEgZmFpbHVyZSB0byByZXBvcnQgaGlnaGVy IG9uZS4gICovCi0rCisgCistICBBTExfQlBfTE9DQVRJT05TIChiKQogKyAgYmNfbCA9IDA7CiAr ICBiY19yID0gYnBfbG9jYXRpb25fY291bnQ7CiArICB3aGlsZSAoYmNfbCArIDEgPCBiY19yKQog KyAgICB7CiArICAgICAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotIAotLSAgQUxMX0JQX0xPQ0FU SU9OUyAoYikKKysKICsgICAgICBiYyA9IChiY19sICsgYmNfcikgLyAyOwogKyAgICAgIGIgPSBi cF9sb2NhdGlvbltiY107CiArCkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBpbmRleCA4MTFjZGZiLi5i MGJmMzE0IDEwMDY0NAogIC8qIElmIFNIT1VMRF9JTlNFUlQgaXMgZmFsc2UsIGRvIG5vdCBpbnNl cnQgYW55IGJyZWFrcG9pbnQgbG9jYXRpb25zCiAgICAgaW50byB0aGUgaW5mZXJpb3IsIG9ubHkg cmVtb3ZlIGFscmVhZHktaW5zZXJ0ZWQgbG9jYXRpb25zIHRoYXQgbm8KICAgICBsb25nZXIgc2hv dWxkIGJlIGluc2VydGVkLiAgRnVuY3Rpb25zIHRoYXQgZGVsZXRlIGEgYnJlYWtwb2ludCBvcgot QEAgLTc3NzcsNDkgKzc5NTEsNjYgQEAgc3RhdGljIHZvaWQKK0BAIC03Nzc3LDQ5ICs3OTUxLDc4 IEBAIHN0YXRpYyB2b2lkCiAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxk X2luc2VydCkKICB7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKQEAgLTE2MjUsMTEgKzE2MjUs MTEgQEAgaW5kZXggODExY2RmYi4uYjBiZjMxNCAxMDA2NDQKICAgICAgewogLSAgICAgIC8qIFRl bGxzIGlmICdsb2MnIGlzIGZvdW5kIGFtb3VuZyB0aGUgbmV3IGxvY2F0aW9ucy4gIElmIG5vdCwg d2UKICsgICAgICBzdHJ1Y3QgYnBfbG9jYXRpb24gKm9sZF9sb2MgPSAqb2xkX2xvY3A7CisrICAg ICAgc3RydWN0IGJwX2xvY2F0aW9uICoqbG9jMnA7CiArCiArICAgICAgLyogVGVsbHMgaWYgJ29s ZF9sb2MnIGlzIGZvdW5kIGFtb3VuZyB0aGUgbmV3IGxvY2F0aW9ucy4gIElmIG5vdCwgd2UKICAJ IGhhdmUgdG8gZnJlZSBpdC4gICovCi0tICAgICAgaW50IGZvdW5kX29iamVjdCA9IDA7Ci0rICAg ICAgaW50IGZvdW5kX29iamVjdDsKKyAgICAgICBpbnQgZm91bmRfb2JqZWN0ID0gMDsKICAgICAg ICAvKiBUZWxscyBpZiB0aGUgbG9jYXRpb24gc2hvdWxkIHJlbWFpbiBpbnNlcnRlZCBpbiB0aGUg dGFyZ2V0LiAgKi8KICAgICAgICBpbnQga2VlcF9pbl90YXJnZXQgPSAwOwogICAgICAgIGludCBy ZW1vdmVkID0gMDsKQEAgLTE2NDMsMTMgKzE2NDMsMjQgQEAgaW5kZXggODExY2RmYi4uYjBiZjMx NCAxMDA2NDQKICsgICAgICAvKiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRl bHkgbmV2ZXIgYmUgbmVlZGVkLiAgU3RvcCBlaXRoZXIKICsJIGF0IG9yIGJlaW5nIHRoZSBvbmUg bWF0Y2hpbmcgT0xEX0xPQy4gICovCiArICAgICAgd2hpbGUgKGxvY3AgPCBicF9sb2NhdGlvbiAr IGJwX2xvY2F0aW9uX2NvdW50Ci0rCSAgICAgJiYgYnBfbG9jYXRpb25fY29tcGFyZSAoKmxvY3As IG9sZF9sb2MpIDwgMCkKKysJICAgICAmJiAoKmxvY3ApLT5hZGRyZXNzIDwgb2xkX2xvYy0+YWRk cmVzcykKICsJbG9jcCsrOwotKyAgICAgIGZvdW5kX29iamVjdCA9IGxvY3AgPCBicF9sb2NhdGlv biArIGJwX2xvY2F0aW9uX2NvdW50ICYmICpsb2NwID09IG9sZF9sb2M7CisrCisrICAgICAgZm9y IChsb2MycCA9IGxvY3A7CisrCSAgIChsb2MycCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25f Y291bnQKKysJICAgICYmICgqbG9jMnApLT5hZGRyZXNzID09IG9sZF9sb2MtPmFkZHJlc3MpOwor KwkgICBsb2MycCsrKQorKwl7CisrCSAgaWYgKCpsb2MycCA9PSBvbGRfbG9jKQorKwkgICAgewor KwkgICAgICBmb3VuZF9vYmplY3QgPSAxOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQog IAogICAgICAgIC8qIElmIHRoaXMgbG9jYXRpb24gaXMgbm8gbG9uZ2VyIHByZXNlbnQsIGFuZCBp bnNlcnRlZCwgbG9vayBpZiB0aGVyZSdzCiAgCSBtYXliZSBhIG5ldyBsb2NhdGlvbiBhdCB0aGUg c2FtZSBhZGRyZXNzLiAgSWYgc28sIG1hcmsgdGhhdCBvbmUgCi1AQCAtNzgyNywxMSArODAxOCwx MSBAQCB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQorQEAg LTc4MjcsMTEgKzgwMzAsMTEgQEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hv dWxkX2luc2VydCkKICAJIGRvbid0IGhhdmUgYSB0aW1lIHdpbmRvdyB3aGVyZSBhIGJyZWFrcG9p bnQgYXQgY2VydGFpbiBsb2NhdGlvbiBpcyBub3QKICAJIGluc2VydGVkLiAgKi8KICAKQEAgLTE2 NjMsNyArMTY3NCw3IEBAIGluZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CiAgCSAgICB7CiAg CSAgICAgIC8qIFRoZSBsb2NhdGlvbiBpcyBzdGlsbCBwcmVzZW50IGluIHRoZSBsb2NhdGlvbiBs aXN0LCBhbmQgc3RpbGwKICAJCSBzaG91bGQgYmUgaW5zZXJ0ZWQuICBEb24ndCBkbyBhbnl0aGlu Zy4gICovCi1AQCAtNzg0MiwzNyArODAzMyw0NiBAQCB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xp c3QgKGludCBzaG91bGRfaW5zZXJ0KQorQEAgLTc4NDIsMzcgKzgwNDUsNDYgQEAgdXBkYXRlX2ds b2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAJICAgICAgLyogVGhlIGxv Y2F0aW9uIGlzIGVpdGhlciBubyBsb25nZXIgcHJlc2VudCwgb3IgZ290IGRpc2FibGVkLgogIAkJ IFNlZSBpZiB0aGVyZSdzIGFub3RoZXIgbG9jYXRpb24gYXQgdGhlIHNhbWUgYWRkcmVzcywgaW4g d2hpY2ggCiAgCQkgY2FzZSB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSB0aGlzIG9uZSBmcm9tIHRo ZSB0YXJnZXQuICAqLwpAQCAtMTY4NSwyNCArMTY5NiwyNCBAQCBpbmRleCA4MTFjZGZiLi5iMGJm MzE0IDEwMDY0NAogKwogKwkgICAgICBpZiAoYnJlYWtwb2ludF9hZGRyZXNzX2lzX21lYW5pbmdm dWwgKG9sZF9sb2MtPm93bmVyKSkKICsJCXsKLSsJCSAgc3RydWN0IGJwX2xvY2F0aW9uICoqbG9j MnA7Ci0rCiArCQkgIGZvciAobG9jMnAgPSBsb2NwOwotKwkJICAgICAgIGxvYzJwIDwgYnBfbG9j YXRpb24gKyBicF9sb2NhdGlvbl9jb3VudAotKwkJICAgICAgICYmICgqbG9jMnApLT5hZGRyZXNz ID09IG9sZF9sb2MtPmFkZHJlc3M7CisrCQkgICAgICAgKGxvYzJwIDwgYnBfbG9jYXRpb24gKyBi cF9sb2NhdGlvbl9jb3VudAorKwkJCSYmICgqbG9jMnApLT5hZGRyZXNzID09IG9sZF9sb2MtPmFk ZHJlc3MpOwogKwkJICAgICAgIGxvYzJwKyspCiArCQkgICAgewogKwkJICAgICAgc3RydWN0IGJw X2xvY2F0aW9uICpsb2MyID0gKmxvYzJwOwogKwotKwkJICAgICAgLyogRm9yIHRoZSBzYWtlIG9m IHNob3VsZF9iZV9pbnNlcnRlZC4KLSsJCQkgRHVwbGljYXRlcyBjaGVjayBiZWxvdyB3aWxsIGZp eCB1cCB0aGlzIGxhdGVyLiAgKi8KLSsJCSAgICAgIGxvYzItPmR1cGxpY2F0ZSA9IDA7Ci0rCQkg ICAgICBpZiAobG9jMiAhPSBvbGRfbG9jICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jMikpCi0r CQkJewkJICAKLSsJCQkgIGxvYzItPmluc2VydGVkID0gMTsKLSsJCQkgIGxvYzItPnRhcmdldF9p bmZvID0gb2xkX2xvYy0+dGFyZ2V0X2luZm87Ci0rCQkJICBrZWVwX2luX3RhcmdldCA9IDE7Ci0r CQkJICBicmVhazsKKysJCQl7CisrCQkJICAvKiBGb3IgdGhlIHNha2Ugb2Ygc2hvdWxkX2JlX2lu c2VydGVkLgorKwkJCSAgICAgRHVwbGljYXRlcyBjaGVjayBiZWxvdyB3aWxsIGZpeCB1cCB0aGlz IGxhdGVyLiAgKi8KKysJCQkgIGxvYzItPmR1cGxpY2F0ZSA9IDA7CisrCQkJICBpZiAobG9jMiAh PSBvbGRfbG9jICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jMikpCisrCQkJICAgIHsKKysJCQkg ICAgICBsb2MyLT5pbnNlcnRlZCA9IDE7CisrCQkJICAgICAgbG9jMi0+dGFyZ2V0X2luZm8gPSBv bGRfbG9jLT50YXJnZXRfaW5mbzsKKysJCQkgICAgICBrZWVwX2luX3RhcmdldCA9IDE7CisrCQkJ ICAgICAgYnJlYWs7CisrCQkJICAgIH0KICsJCQl9CiArCQkgICAgfQogKwkJfQpAQCAtMTcyOCw3 ICsxNzM5LDcgQEAgaW5kZXggODExY2RmYi4uYjBiZjMxNCAxMDA2NDQKICAJCX0KICAJICAgICAg cmVtb3ZlZCA9IDE7CiAgCSAgICB9Ci1AQCAtNzg5NCwxOSArODA5NCw1OSBAQCB1cGRhdGVfZ2xv YmFsX2xvY2F0aW9uX2xpc3QgKGludCBzaG91bGRfaW5zZXJ0KQorQEAgLTc4OTQsMTkgKzgxMDYs NTkgQEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAJ CSBsb25nZXIgbmVlZCB0byBrZWVwIHRoaXMgYnJlYWtwb2ludC4gIFRoaXMgaXMganVzdCBhCiAg CQkgaGV1cmlzdGljLCBidXQgaWYgaXQncyB3cm9uZywgd2UnbGwgcmVwb3J0IHVuZXhwZWN0ZWQg U0lHVFJBUCwKICAJCSB3aGljaCBpcyB1c2FiaWxpdHkgaXNzdWUsIGJ1dCBub3QgYSBjb3JyZWN0 bmVzcyBwcm9ibGVtLiAgKi8KQEAgLTE3OTQsNyArMTgwNSw3IEBAIGluZGV4IDgxMWNkZmIuLmIw YmYzMTQgMTAwNjQ0CiAgICAgIH0KICAKICAgIGlmIChicmVha3BvaW50c19hbHdheXNfaW5zZXJ0 ZWRfbW9kZSAoKSAmJiBzaG91bGRfaW5zZXJ0Ci1AQCAtODA4Myw2ICs4MzIzLDcgQEAgZGVsZXRl X2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorQEAgLTgwODMsNiArODMzNSw3IEBA IGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICAJICAgICYmIGItPnR5 cGUgIT0gYnBfdGhyZWFkX2V2ZW50CiAgCSAgICAmJiBiLT50eXBlICE9IGJwX292ZXJsYXlfZXZl bnQKICAJICAgICYmIGItPnR5cGUgIT0gYnBfbG9uZ2ptcF9tYXN0ZXIKQEAgLTE4MDIsNyArMTgx Myw3IEBAIGluZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CiAgCSAgICAmJiBiLT5udW1iZXIg Pj0gMCkKICAJICB7CiAgCSAgICBicmVha3NfdG9fZGVsZXRlID0gMTsKLUBAIC04MTAyLDYgKzgz NDMsNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCitAQCAtODEw Miw2ICs4MzU1LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQog IAkJJiYgYi0+dHlwZSAhPSBicF9qaXRfZXZlbnQKICAJCSYmIGItPnR5cGUgIT0gYnBfb3Zlcmxh eV9ldmVudAogIAkJJiYgYi0+dHlwZSAhPSBicF9sb25nam1wX21hc3RlcgpAQCAtMTgxMCw3ICsx ODIxLDcgQEAgaW5kZXggODExY2RmYi4uYjBiZjMxNCAxMDA2NDQKICAJCSYmIGItPm51bWJlciA+ PSAwKQogIAkgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CiAgCSAgfQotQEAgLTg0MDQsNiAr ODY0Niw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKK0BAIC04NDA0LDYg Kzg2NTgsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCiAgCSByZXNldCBs YXRlciBieSBicmVha3BvaW50X3JlX3NldC4gICovCiAgICAgIGNhc2UgYnBfb3ZlcmxheV9ldmVu dDoKICAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKQEAgLTE4MTgsNyArMTgyOSw3IEBAIGlu ZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CiAgICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIp OwogICAgICAgIGJyZWFrOwogIAotQEAgLTg0MjcsNiArODY3MCw4IEBAIGJyZWFrcG9pbnRfcmVf c2V0X29uZSAodm9pZCAqYmludCkKK0BAIC04NDI3LDYgKzg2ODIsOCBAQCBicmVha3BvaW50X3Jl X3NldF9vbmUgKHZvaWQgKmJpbnQpCiAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBi cF9sb25nam1wX3Jlc3VtZToKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CkBAIC0xODI3LDcgKzE4 MzgsNyBAQCBpbmRleCA4MTFjZGZiLi5iMGJmMzE0IDEwMDY0NAogICAgICAgIGJyZWFrOwogICAg ICB9CiAgCi1AQCAtODQ2Miw2ICs4NzA3LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCitA QCAtODQ2Miw2ICs4NzE5LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgICBjcmVhdGVf bG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoIl9sb25nam1wIik7CiAgICBjcmVhdGVfbG9uZ2pt cF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKICAgIGNyZWF0ZV9sb25nam1wX21h c3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKQEAgLTE4MzUsNyArMTg0Niw3IEBAIGlu ZGV4IDgxMWNkZmIuLmIwYmYzMTQgMTAwNjQ0CiAgfQogIAwKICAvKiBSZXNldCB0aGUgdGhyZWFk IG51bWJlciBvZiB0aGlzIGJyZWFrcG9pbnQ6Ci1AQCAtOTMyNyw2ICs5NTczLDIyIEBAIGFsbF90 cmFjZXBvaW50cyAoKQorQEAgLTkzMjcsNiArOTU4NSwyMiBAQCBhbGxfdHJhY2Vwb2ludHMgKCkK ICAgIHJldHVybiB0cF92ZWM7CiAgfQogIApAQCAtMTg1OCw3ICsxODY5LDcgQEAgaW5kZXggODEx Y2RmYi4uYjBiZjMxNCAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZv ciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0 IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTk4NTAs NCArMTAxMTIsNSBAQCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBp ZiBhbHdheXMtaW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCitAQCAtOTg1MCw0ICsxMDEyNCw1IEBA IGluZmVyaW9yIGluIGFsbC1zdG9wIG1vZGUsIGdkYiBiZWhhdmVzIGFzIGlmIGFsd2F5cy1pbnNl cnRlZCBtb2RlIGlzIG9mZi4iKSwKICAgIGF1dG9tYXRpY19oYXJkd2FyZV9icmVha3BvaW50cyA9 IDE7CiAgCiAgICBvYnNlcnZlcl9hdHRhY2hfYWJvdXRfdG9fcHJvY2VlZCAoYnJlYWtwb2ludF9h Ym91dF90b19wcm9jZWVkKTsKQEAgLTI5MDAsNyArMjkxMSw3IEBAIGluZGV4IDAwMDAwMDAuLjQ5 YWM0MjAKICsjZGVmaW5lIFRBUkdFVF9SRUdJT05fU0laRV9PS19GT1JfSFdfV0FUQ0hQT0lOVChT SVpFKSAxCiArCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKLWlu ZGV4IDk5YWNjMmYuLmEyZWExYWUgMTAwNzU1CitpbmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1 NQogLS0tIGEvZ2RiL2NvbmZpZ3VyZQogKysrIGIvZ2RiL2NvbmZpZ3VyZQogQEAgLTY3Niw2ICs2 NzYsOCBAQCBSRVBPUlRfQlVHU19UTwpAQCAtMzAxNSw3ICszMDI2LDcgQEAgaW5kZXggOTlhY2My Zi4uYTJlYTFhZSAxMDA3NTUKICAKICAgICMgRmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9u IGNvZGUgKHRha2VuIGZyb20gcHl0aG9uLWNvbmZpZyAtLWNmbGFncykuCiBkaWZmIC0tZ2l0IGEv Z2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKLWluZGV4IGIzMWQ5YjcuLmExOTY5 YmMgMTAwNjQ0CitpbmRleCAwZTQyMTgyLi5lN2Y5N2NmIDEwMDY0NAogLS0tIGEvZ2RiL2NvbmZp Z3VyZS5hYwogKysrIGIvZ2RiL2NvbmZpZ3VyZS5hYwogQEAgLTEwNyw2ICsxMDcsNTEgQEAgQVNf SEVMUF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRIXSwgW2F1dG9tYXRpY2Fs bHkgcmVsb2NhdGUgdGhpcyBwYXQKQEAgLTMxMDIsNyArMzExMyw3IEBAIGluZGV4IDYyODAwYjgu Ljk3ZDU4N2IgMTAwNjQ0CiAgCQkJeyAkJCA9ICQxLmNvbXA7CiAgCQkJICBpZiAoJDIpICQkID0g ZmlsbF9jb21wIChERU1BTkdMRV9DT01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQyKTsgfQogZGlm ZiAtLWdpdCBhL2dkYi9jcC1uYW1lc3BhY2UuYyBiL2dkYi9jcC1uYW1lc3BhY2UuYwotaW5kZXgg ZDJkOGYyZS4uYWYwYmEyOCAxMDA2NDQKK2luZGV4IGQyZDhmMmUuLmRiMjZhMDEgMTAwNjQ0CiAt LS0gYS9nZGIvY3AtbmFtZXNwYWNlLmMKICsrKyBiL2dkYi9jcC1uYW1lc3BhY2UuYwogQEAgLTM2 LDE0ICszNiwxNyBAQCBzdGF0aWMgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3BfY29weV91c2luZ3Mg KHN0cnVjdCB1c2luZ19kaXJlY3QgKnVzaW5nLApAQCAtMzI4Miw3ICszMjkzLDcgQEAgaW5kZXgg ZDJkOGYyZS4uYWYwYmEyOCAxMDA2NDQKICAgICAgICBpZiAoc3ltICE9IE5VTEwpCiAgCXJldHVy biBzeW07CiAgICAgIH0KLUBAIC0zMjAsMjUgKzM3Nyw4NyBAQCBsb29rdXBfbmFtZXNwYWNlX3Nj b3BlIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTMyMCwyNSArMzc3LDk4IEBAIGxvb2t1cF9uYW1l c3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCiAgICBuYW1lc3BhY2UgPSBhbGxvY2EgKHNj b3BlX2xlbiArIDEpOwogICAgc3RybmNweSAobmFtZXNwYWNlLCBzY29wZSwgc2NvcGVfbGVuKTsK ICAgIG5hbWVzcGFjZVtzY29wZV9sZW5dID0gJ1wwJzsKQEAgLTMzMTksNiArMzMzMCwxNiBAQCBp bmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogKyAgICB9CiArfQogKworKy8qIFVzZWQgZm9y IGNsZWFudXBzIHRvIHJlc2V0IHRoZSAic2VhcmNoZWQiIGZsYWcgaW5jYXNlCisrICAgb2YgYW4g ZXJyb3IuICAqLworKworK3N0YXRpYyB2b2lkCisrcmVzZXRfZGlyZWN0aXZlX3NlYXJjaGVkICh2 b2lkICpkYXRhKQorK3sKKysgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmRpcmVjdCA9IGRhdGE7Cisr ICBkaXJlY3QtPnNlYXJjaGVkID0gMDsKKyt9CisrCiArLyogU2VhcmNoIGZvciBOQU1FIGJ5IGFw cGx5aW5nIGFsbCBpbXBvcnQgc3RhdGVtZW50cyBiZWxvbmdpbmcKICsgICB0byBCTE9DSyB3aGlj aCBhcmUgYXBwbGljYWJsZSBpbiBTQ09QRS4gSWYgREVDTEFSQVRJT05fT05MWSB0aGUgc2VhcmNo CiArICAgaXMgcmVzdHJpY3RlZCB0byB1c2luZyBkZWNsYXJhdGlvbnMuCkBAIC0zMzUxLDExICsz MzcyLDExIEBAIGluZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAtCQkJICAgIGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2ssCiAtCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKICtj cF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBkZWNsYXJhdGlvbl9vbmx5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgc2VhcmNoX3BhcmVudHMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpuYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2Nr ICpibG9jaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRv bWFpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWNsYXJhdGlvbl9vbmx5LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlYXJjaF9wYXJlbnRzKQogIHsKIC0gIGNv bnN0IHN0cnVjdCB1c2luZ19kaXJlY3QgKmN1cnJlbnQ7CiAtICBzdHJ1Y3Qgc3ltYm9sICpzeW07 CkBAIC0zMzYzLDYgKzMzODQsNyBAQCBpbmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogKyAg c3RydWN0IHN5bWJvbCAqc3ltID0gTlVMTDsKICsgIGludCBkaXJlY3RpdmVfbWF0Y2g7CiArICBp bnQgY3VycmVudF9saW5lOworKyAgc3RydWN0IGNsZWFudXAgKnNlYXJjaGVkX2NsZWFudXA7CiAr CiArICBpZighZGVjbGFyYXRpb25fb25seSkKICsgICAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRo ZSBzeW1ib2wgaW4gdGhlIGdpdmVuIG5hbWVzcGFjZS4gICovCkBAIC0zMzgyLDcgKzM0MDQsNyBA QCBpbmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogICAgICAgbmFtZXMgdG8gdGhlIG5hbWVz cGFjZSB3ZSdyZSBzZWFyY2hpbmcgaW4sIHNlZSBpZiB3ZSBjYW4gZmluZCBhCiAgICAgICBtYXRj aCBieSBhcHBseWluZyB0aGVtLiAgKi8KICAKLUBAIC0zNDYsMzkgKzQ2NSw3NCBAQCBjcF9sb29r dXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorQEAgLTM0NiwzOSAr NDc2LDc4IEBAIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3Bh Y2UsCiAgICAgICAgIGN1cnJlbnQgIT0gTlVMTDsKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQt Pm5leHQpCiAgICAgIHsKQEAgLTM0MDUsNiArMzQyNyw4IEBAIGluZGV4IGQyZDhmMmUuLmFmMGJh MjggMTAwNjQ0CiAtCQkJCQkgICAgYmxvY2ssCiAtCQkJCQkgICAgZG9tYWluKTsKICsJICBjdXJy ZW50LT5zZWFyY2hlZCA9IDE7CisrCSAgc2VhcmNoZWRfY2xlYW51cCA9IG1ha2VfY2xlYW51cCAo cmVzZXRfZGlyZWN0aXZlX3NlYXJjaGVkLCBjdXJyZW50KTsKKysKICsJICAvKiBJZiB0aGVyZSBp cyBhbiBpbXBvcnQgb2YgYSBzaW5nbGUgZGVjbGFyYXRpb24sIGNvbXBhcmUgdGhlIGltcG9ydGVk CiArCSAgICAgZGVjbGFyYXRpb24gd2l0aCB0aGUgc291Z2h0IG91dCBuYW1lLiBJZiB0aGVyZSBp cyBhIG1hdGNoIHBhc3MKICsJICAgICBjdXJyZW50LT5pbXBvcnRfc3JjIGFzIE5BTUVTUEFDRSB0 byBkaXJlY3QgdGhlIHNlYXJjaCB0b3dhcmRzIHRoZQpAQCAtMzQxMywyMyArMzQzNywyNSBAQCBp bmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogKwkgICAgewogKwkgICAgaWYgKHN0cmNtcCAo bmFtZSwgY3VycmVudC0+ZGVjbGFyYXRpb24pID09IDApCiArCSAgICAgIHsKLSsJICAgICAgICBz eW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY3VycmVudC0+aW1wb3J0X3NyYywK LSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSsJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssCi0rCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7CisrCSAgICAgIHN5bSA9 IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChjdXJyZW50LT5pbXBvcnRfc3JjLAorKwkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKysJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorKwkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKICsJICAgICAgfQorKwor KwkgICAgY3VycmVudC0+c2VhcmNoZWQgPSAwOworKwkgICAgaWYgKHN5bSkKKysJICAgICAgcmV0 dXJuIHN5bTsKKysKKysJICAgIGNvbnRpbnVlOwogKwkgICAgfQogKwkgICAKICsJICBpZiAoZGVj bGFyYXRpb25fb25seSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBjdXJyZW50LT5z ZWFyY2hlZCA9IDA7Ci0rICAgICAgICAgICAgICBpZiAoc3ltKQotKyAgICAgICAgICAgICAgICB7 Ci0rICAgICAgICAgICAgICAgICAgcmV0dXJuIHN5bTsKLSsgICAgICAgICAgICAgICAgfSBlbHNl IHsKLSsgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgfQotKyAg ICAgICAgICAgIH0KKysJICAgIHsKKysJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKKysJICAg IGRpc2NhcmRfY2xlYW51cHMgKHNlYXJjaGVkX2NsZWFudXApOworKwkgICAgY29udGludWU7Cisr CSAgICB9CiArCiArCSAgaWYgKHN0cmNtcCAobmFtZSwgY3VycmVudC0+YWxpYXMpID09IDApCiAr CSAgICAvKiBJZiB0aGUgaW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxpYXMg bWF0Y2hlcyB0aGUKQEAgLTM0MzcsMjYgKzM0NjMsMjUgQEAgaW5kZXggZDJkOGYyZS4uYWYwYmEy OCAxMDA2NDQKICsJICAgICAgIHNlYXJjaCB0b3dhcmRzIHRoZSBhbGlhc2VkIG5hbWVzcGFjZSAq LwogKwkgICAgewogKwkgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNj b3BlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPmlt cG9ydF9zcmMsCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ss Ci0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKKysJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LT5pbXBvcnRfc3Jj LAorKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAorKwkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7CiArCSAgICB9 IGVsc2UgaWYgKHN0cmNtcCAoIiIsIGN1cnJlbnQtPmFsaWFzKSA9PSAwKXsKICsJICAgIC8qIElm IHRoaXMgaW1wb3J0IHN0YXRlbWVudCBjcmVhdGVzIG5vIGFsaWFzLCBwYXNzIGN1cnJlbnQtPmlu bmVyIGFzCiArCSAgICAgICBOQU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0 aGUgaW1wb3J0ZWQgbmFtZXNwYWNlLiAqLwogKwkgICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9s X2ltcG9ydHMgKGN1cnJlbnQtPmltcG9ydF9zcmMsCi0rCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr LAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sCi0rCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDApOworKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUs CisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssCisrCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluLAorKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMCk7CiArCSAgICB9CiArCiArCSAgY3VycmVudC0+c2VhcmNoZWQgPSAwOwor KwkgIGRpc2NhcmRfY2xlYW51cHMgKHNlYXJjaGVkX2NsZWFudXApOworKwogIAkgIGlmIChzeW0g IT0gTlVMTCkKLS0JICAgIHJldHVybiBzeW07Ci0rCSAgICB7Ci0rCSAgICAgIHJldHVybiBzeW07 Ci0rCSAgICB9CisgCSAgICByZXR1cm4gc3ltOwogIAl9CiAgICAgIH0KICAKQEAgLTM0ODUsNyAr MzUxMCw3IEBAIGluZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAgfQogIAogIC8qIExvb2sg dXAgTkFNRSBpbiBCTE9DSydzIHN0YXRpYyBibG9jayBhbmQgaW4gZ2xvYmFsIGJsb2Nrcy4gIElm Ci1AQCAtMzg4LDE3ICs1NDIsMTUgQEAgY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0 IGNoYXIgKm5hbWVzcGFjZSwKK0BAIC0zODgsMTcgKzU1NywxNSBAQCBjcF9sb29rdXBfc3ltYm9s X25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAogIAogIHN0YXRpYyBzdHJ1Y3Qgc3lt Ym9sICoKICBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0zNTA0LDcg KzM1MjksNyBAQCBpbmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogICAgaWYgKGFub255bW91 c19uYW1lc3BhY2UpCiAgICAgIHsKICAgICAgICAvKiBTeW1ib2xzIGRlZmluZWQgaW4gYW5vbnlt b3VzIG5hbWVzcGFjZXMgaGF2ZSBleHRlcm5hbCBsaW5rYWdlCi1AQCAtNDA4LDEyICs1NjAsMTEg QEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTQwOCwxMiArNTc1 LDExIEBAIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBjb25z dCBzdHJ1Y3QgYmxvY2sgKmdsb2JhbF9ibG9jayA9IGJsb2NrX2dsb2JhbF9ibG9jayAoYmxvY2sp OwogICAgICAgIAogICAgICAgIGlmIChnbG9iYWxfYmxvY2sgIT0gTlVMTCkKQEAgLTM1MTksNyAr MzU0NCw3IEBAIGluZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAgICAgIH0KICAKICAgIGlm IChzeW0gIT0gTlVMTCkKLUBAIC00MzQsNiArNTg1LDcgQEAgbG9va3VwX3N5bWJvbF9maWxlIChj b25zdCBjaGFyICpuYW1lLAorQEAgLTQzNCw2ICs2MDAsNyBAQCBsb29rdXBfc3ltYm9sX2ZpbGUg KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgc3ltID0gbG9va3VwX3Bvc3NpYmxlX25hbWVzcGFj ZV9zeW1ib2wgKG5hbWUpOwogICAgICAgIGlmIChzeW0gIT0gTlVMTCkKICAJcmV0dXJuIHN5bTsK QEAgLTM1MjcsNyArMzU1Miw3IEBAIGluZGV4IGQyZDhmMmUuLmFmMGJhMjggMTAwNjQ0CiAgICAg IH0KICAKICAgIHJldHVybiBOVUxMOwotQEAgLTQ2MSw5ICs2MTMsOCBAQCBjcF9sb29rdXBfbmVz dGVkX3R5cGUgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSwKK0BAIC00NjEsOSArNjI4LDggQEAg Y3BfbG9va3VwX25lc3RlZF90eXBlIChzdHJ1Y3QgdHlwZSAqcGFyZW50X3R5cGUsCiAgCSAgIGxv b2t1cF9zeW1ib2xfbmFtZXNwYWNlIHdvcmtzIHdoZW4gbG9va2luZyB0aGVtIHVwLiAgKi8KICAK ICAJY29uc3QgY2hhciAqcGFyZW50X25hbWUgPSBUWVBFX1RBR19OQU1FIChwYXJlbnRfdHlwZSk7 CkBAIC0zNTM4LDcgKzM1NjMsNyBAQCBpbmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogIAkJ CQkJCQkgYmxvY2ssCiAgCQkJCQkJCSBWQVJfRE9NQUlOKTsKICAJaWYgKHN5bSA9PSBOVUxMIHx8 IFNZTUJPTF9DTEFTUyAoc3ltKSAhPSBMT0NfVFlQRURFRikKLUBAIC03MDksNyArODYwLDcgQEAg Y2hlY2tfb25lX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGlu dCBsZW4sCitAQCAtNzA5LDcgKzg3NSw3IEBAIGNoZWNrX29uZV9wb3NzaWJsZV9uYW1lc3BhY2Vf c3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLAogIAogICAgbWVtY3B5IChuYW1lX2Nv cHksIG5hbWUsIGxlbik7CiAgICBuYW1lX2NvcHlbbGVuXSA9ICdcMCc7CkBAIC0zNTQ3LDcgKzM1 NzIsNyBAQCBpbmRleCBkMmQ4ZjJlLi5hZjBiYTI4IDEwMDY0NAogIAogICAgaWYgKHN5bSA9PSBO VUxMKQogICAgICB7Ci1AQCAtNzQ5LDcgKzkwMCw3IEBAIGxvb2t1cF9wb3NzaWJsZV9uYW1lc3Bh Y2Vfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lKQorQEAgLTc0OSw3ICs5MTUsNyBAQCBsb29rdXBf cG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSkKICAgICAgICBzdHJ1 Y3Qgc3ltYm9sICpzeW07CiAgCiAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoZ2V0 X3Bvc3NpYmxlX25hbWVzcGFjZV9ibG9jayAob2JqZmlsZSksCkBAIC0zODMyLDcgKzM4NTcsNyBA QCBpbmRleCA3Y2IwMTZkLi5iYjllMzVhIDEwMDY0NAogICAgZGVmYXVsdF9zeW1maWxlX29mZnNl dHMsIC8qIHN5bV9vZmZzZXRzOiBwYXJzZSB1c2VyJ3Mgb2Zmc2V0cyB0bwogIAkJCSAgICAgIGlu dGVybmFsIGZvcm0gKi8KIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbwotaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKK2luZGV4IDFmOThm YTUuLjllMjQ0ODIgMTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCiArKysgYi9nZGIv ZG9jL2dkYi50ZXhpbmZvCiBAQCAtOTU5LDggKzk1OSwxMCBAQCBDb25uZWN0IHRvIHByb2Nlc3Mg SUQgQHZhcntudW1iZXJ9LCBhcyB3aXRoIHRoZSBAY29kZXthdHRhY2h9IGNvbW1hbmQuCkBAIC0z ODY1LDcgKzM4OTAsNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0NAogIEBjIHJlc29s dmUgdGhlIHNpdHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5k ZXggQGNvZGV7LS10dWl9Ci1AQCAtMTg2NTAsNyArMTg2NjIsNyBAQCBjb21tYW5kOgorQEAgLTE4 NjYwLDcgKzE4NjcyLDcgQEAgY29tbWFuZDoKICBAdGFibGUgQGNvZGUKICBAa2luZGV4IHNvdXJj ZQogIEBjaW5kZXggZXhlY3V0ZSBjb21tYW5kcyBmcm9tIGEgZmlsZQpAQCAtMzg3NCw3ICszODk5 LDcgQEAgaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKICBFeGVjdXRlIHRoZSBjb21tYW5k IGZpbGUgQHZhcntmaWxlbmFtZX0uCiAgQGVuZCB0YWJsZQogIAotQEAgLTE4NjY3LDYgKzE4Njc5 LDExIEBAIElmIEBjb2Rley12fSwgZm9yIHZlcmJvc2UgbW9kZSwgaXMgZ2l2ZW4gdGhlbiBAdmFs dWV7R0RCTn0gZGlzcGxheXMKK0BAIC0xODY3Nyw2ICsxODY4OSwxMSBAQCBJZiBAY29kZXstdn0s IGZvciB2ZXJib3NlIG1vZGUsIGlzIGdpdmVuIHRoZW4gQHZhbHVle0dEQk59IGRpc3BsYXlzCiAg ZWFjaCBjb21tYW5kIGFzIGl0IGlzIGV4ZWN1dGVkLiAgVGhlIG9wdGlvbiBtdXN0IGJlIGdpdmVu IGJlZm9yZQogIEB2YXJ7ZmlsZW5hbWV9LCBhbmQgaXMgaW50ZXJwcmV0ZWQgYXMgcGFydCBvZiB0 aGUgZmlsZW5hbWUgYW55d2hlcmUgZWxzZS4KICAKQEAgLTM4ODYsNyArMzkxMSw3IEBAIGluZGV4 IGYxNmI2ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgQ29tbWFuZHMgdGhhdCB3b3VsZCBhc2sgZm9yIGNv bmZpcm1hdGlvbiBpZiB1c2VkIGludGVyYWN0aXZlbHkgcHJvY2VlZAogIHdpdGhvdXQgYXNraW5n IHdoZW4gdXNlZCBpbiBhIGNvbW1hbmQgZmlsZS4gIE1hbnkgQHZhbHVle0dEQk59IGNvbW1hbmRz IHRoYXQKICBub3JtYWxseSBwcmludCBtZXNzYWdlcyB0byBzYXkgd2hhdCB0aGV5IGFyZSBkb2lu ZyBvbWl0IHRoZSBtZXNzYWdlcwotQEAgLTE4OTI4LDggKzE4OTQ1LDYgQEAgY29udGFpbmluZyBA Y29kZXtlbmR9LiAgRm9yIGV4YW1wbGU6CitAQCAtMTg5MzgsOCArMTg5NTUsNiBAQCBjb250YWlu aW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1 ZXtHREJQfSkgcHl0aG9uCkBAIC0zODk1LDcgKzM5MjAsNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMy OGM3IDEwMDY0NAogID5wcmludCAyMwogID5lbmQKICAyMwotQEAgLTE4OTQyLDYgKzE4OTU3LDE0 IEBAIGluIGEgUHl0aG9uIHNjcmlwdC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcgQGNv ZGV7bWFpbnQgc2V0CitAQCAtMTg5NTIsNiArMTg5NjcsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0 LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKICBweXRob24g cHJpbnQtc3RhY2t9OiBpZiBAY29kZXtvbn0sIHRoZSBkZWZhdWx0LCB0aGVuIFB5dGhvbiBzdGFj awogIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uIHN0YWNr IHByaW50aW5nIGlzCiAgZGlzYWJsZWQuCkBAIC0zOTEwLDcgKzM5MzUsNyBAQCBpbmRleCBmMTZi NmUyLi5mZTMyOGM3IDEwMDY0NAogIEBlbmQgdGFibGUKICAKICBAbm9kZSBQeXRob24gQVBJCi1A QCAtMTg5NDksNiArMTg5NzIsMTQgQEAgZGlzYWJsZWQuCitAQCAtMTg5NTksNiArMTg5ODIsMTQg QEAgZGlzYWJsZWQuCiAgQGNpbmRleCBweXRob24gYXBpCiAgQGNpbmRleCBwcm9ncmFtbWluZyBp biBweXRob24KICAKQEAgLTM5MjUsNyArMzk1MCw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4Yzcg MTAwNjQ0CiAgQGNpbmRleCBweXRob24gc3Rkb3V0CiAgQGNpbmRleCBweXRob24gcGFnaW5hdGlv bgogIEF0IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3MgQGNvZGV7c3lz LnN0ZG91dH0gYW5kCi1AQCAtMTg5NjEsMTMgKzE4OTkyLDE3IEBAIHNpdHVhdGlvbiwgYSBQeXRo b24gQGNvZGV7S2V5Ym9hcmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCitAQCAtMTg5 NzEsMTMgKzE5MDAyLDE3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5Ym9hcmRJbnRl cnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgKiBCYXNpYyBQeXRob246OiAgICAgICAgICAg ICAgICBCYXNpYyBQeXRob24gRnVuY3Rpb25zLgogICogRXhjZXB0aW9uIEhhbmRsaW5nOjoKICAq IEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQeXRo b24gY29kZS4KQEAgLTM5NDQsNyArMzk2OSw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4YzcgMTAw NjQ0CiAgKiBGcmFtZXMgSW4gUHl0aG9uOjogICAgICAgICAgICBBY2Vzc2luZyBpbmZlcmlvciBz dGFjayBmcmFtZXMgZnJvbSBQeXRob24uCiAgQGVuZCBtZW51CiAgCi1AQCAtMTg5OTQsNiArMTkw MjksMTIgQEAgY29tbWFuZCBhcyBoYXZpbmcgb3JpZ2luYXRlZCBmcm9tIHRoZSB1c2VyIGludm9r aW5nIGl0IGludGVyYWN0aXZlbHkuCitAQCAtMTkwMDQsNiArMTkwMzksMTIgQEAgY29tbWFuZCBh cyBoYXZpbmcgb3JpZ2luYXRlZCBmcm9tIHRoZSB1c2VyIGludm9raW5nIGl0IGludGVyYWN0aXZl bHkuCiAgSXQgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0 cyB0byBAY29kZXtGYWxzZX0uCiAgQGVuZCBkZWZ1bgogIApAQCAtMzk1Nyw3ICszOTgyLDcgQEAg aW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKICBAZmluZGV4IGdkYi5wYXJhbWV0ZXIKICBA ZGVmdW4gcGFyYW1ldGVyIHBhcmFtZXRlcgogIFJldHVybiB0aGUgdmFsdWUgb2YgYSBAdmFsdWV7 R0RCTn0gcGFyYW1ldGVyLiAgQHZhcntwYXJhbWV0ZXJ9IGlzIGEKLUBAIC0xOTAxMCw2ICsxOTA1 MSw3IEBAIGEgUHl0aG9uIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLCBhbmQgcmV0dXJu ZWQuCitAQCAtMTkwMjAsNiArMTkwNjEsNyBAQCBhIFB5dGhvbiB2YWx1ZSBvZiB0aGUgYXBwcm9w cmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgogIEBkZWZ1biBoaXN0b3J5IG51bWJlcgogIFJldHVy biBhIHZhbHVlIGZyb20gQHZhbHVle0dEQk59J3MgdmFsdWUgaGlzdG9yeSAoQHB4cmVme1ZhbHVl CiAgSGlzdG9yeX0pLiAgQHZhcntudW1iZXJ9IGluZGljYXRlcyB3aGljaCBoaXN0b3J5IGVsZW1l bnQgdG8gcmV0dXJuLgpAQCAtMzk2NSw3ICszOTkwLDcgQEAgaW5kZXggZjE2YjZlMi4uZmUzMjhj NyAxMDA2NDQKICBJZiBAdmFye251bWJlcn0gaXMgbmVnYXRpdmUsIHRoZW4gQHZhbHVle0dEQk59 IHdpbGwgdGFrZSBpdHMgYWJzb2x1dGUgdmFsdWUKICBhbmQgY291bnQgYmFja3dhcmQgZnJvbSB0 aGUgbGFzdCBlbGVtZW50IChpLmUuLCB0aGUgbW9zdCByZWNlbnQgZWxlbWVudCkgdG8KICBmaW5k IHRoZSB2YWx1ZSB0byByZXR1cm4uICBJZiBAdmFye251bWJlcn0gaXMgemVybywgdGhlbiBAdmFs dWV7R0RCTn0gd2lsbAotQEAgLTE5MDIxLDYgKzE5MDYzLDI4IEBAIElmIG5vIGV4Y2VwdGlvbiBp cyByYWlzZWQsIHRoZSByZXR1cm4gdmFsdWUgaXMgYWx3YXlzIGFuIGluc3RhbmNlIG9mCitAQCAt MTkwMzEsNiArMTkwNzMsMjggQEAgSWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgdGhlIHJldHVy biB2YWx1ZSBpcyBhbHdheXMgYW4gaW5zdGFuY2Ugb2YKICBAY29kZXtnZGIuVmFsdWV9IChAcHhy ZWZ7VmFsdWVzIEZyb20gSW5mZXJpb3J9KS4KICBAZW5kIGRlZnVuCiAgCkBAIC0zOTk0LDcgKzQw MTksNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0NAogIEBmaW5kZXggZ2RiLndyaXRl CiAgQGRlZnVuIHdyaXRlIHN0cmluZwogIFByaW50IGEgc3RyaW5nIHRvIEB2YWx1ZXtHREJOfSdz IHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLgotQEAgLTE5MDM1LDYgKzE5MDk5LDEx IEBAIEZsdXNoIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFt LiAgRmx1c2hpbmcKK0BAIC0xOTA0NSw2ICsxOTEwOSwxMSBAQCBGbHVzaCBAdmFsdWV7R0RCTn0n cyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4gIEZsdXNoaW5nCiAgZnVuY3Rpb24u CiAgQGVuZCBkZWZ1bgogIApAQCAtNDAwNiw3ICs0MDMxLDcgQEAgaW5kZXggZjE2YjZlMi4uZmUz MjhjNyAxMDA2NDQKICBAbm9kZSBFeGNlcHRpb24gSGFuZGxpbmcKICBAc3Vic3Vic2VjdGlvbiBF eGNlcHRpb24gSGFuZGxpbmcKICBAY2luZGV4IHB5dGhvbiBleGNlcHRpb25zCi1AQCAtMTkxNzEs NiArMTkyNDAsMTMgQEAgVGhlIHR5cGUgb2YgdGhpcyBAY29kZXtnZGIuVmFsdWV9LiAgVGhlIHZh bHVlIG9mIHRoaXMgYXR0cmlidXRlIGlzIGEKK0BAIC0xOTE4MSw2ICsxOTI1MCwxMyBAQCBUaGUg dHlwZSBvZiB0aGlzIEBjb2Rle2dkYi5WYWx1ZX0uICBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1 dGUgaXMgYQogIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgcHJvdmlkZWQ6CiAgCiAgQHRhYmxl IEBjb2RlCkBAIC00MDIwLDcgKzQwNDUsNyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0 NAogIEBkZWZtZXRob2QgVmFsdWUgZGVyZWZlcmVuY2UKICBGb3IgcG9pbnRlciBkYXRhIHR5cGVz LCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IEBjb2Rle2dkYi5WYWx1ZX0gb2JqZWN0CiAgd2hv c2UgY29udGVudHMgaXMgdGhlIG9iamVjdCBwb2ludGVkIHRvIGJ5IHRoZSBwb2ludGVyLiAgRm9y IGV4YW1wbGUsIGlmCi1AQCAtMTkyNDIsNiArMTkzMTgsOSBAQCBtb2R1bGU6CitAQCAtMTkyNTIs NiArMTkzMjgsOSBAQCBtb2R1bGU6CiAgVGhpcyBmdW5jdGlvbiBsb29rcyB1cCBhIHR5cGUgYnkg bmFtZS4gIEB2YXJ7bmFtZX0gaXMgdGhlIG5hbWUgb2YgdGhlCiAgdHlwZSB0byBsb29rIHVwLiAg SXQgbXVzdCBiZSBhIHN0cmluZy4KICAKQEAgLTQwMzAsNyArNDA1NSw3IEBAIGluZGV4IGYxNmI2 ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgT3JkaW5hcmlseSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy biBhbiBpbnN0YW5jZSBvZiBAY29kZXtnZGIuVHlwZX0uCiAgSWYgdGhlIG5hbWVkIHR5cGUgY2Fu bm90IGJlIGZvdW5kLCBpdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4KICBAZW5kIGRlZnVuCi1A QCAtMTkyOTQsNiArMTkzNzMsMTIgQEAgVGhpcyBpcyBAY29kZXtUcnVlfSBpZiB0aGUgZmllbGQg aXMgYXJ0aWZpY2lhbCwgdXN1YWxseSBtZWFuaW5nIHRoYXQKK0BAIC0xOTMwNCw2ICsxOTM4Mywx MiBAQCBUaGlzIGlzIEBjb2Rle1RydWV9IGlmIHRoZSBmaWVsZCBpcyBhcnRpZmljaWFsLCB1c3Vh bGx5IG1lYW5pbmcgdGhhdAogIGl0IHdhcyBwcm92aWRlZCBieSB0aGUgY29tcGlsZXIgYW5kIG5v dCB0aGUgdXNlci4gIFRoaXMgYXR0cmlidXRlIGlzCiAgYWx3YXlzIHByb3ZpZGVkLCBhbmQgaXMg QGNvZGV7RmFsc2V9IGlmIHRoZSBmaWVsZCBpcyBub3QgYXJ0aWZpY2lhbC4KICAKQEAgLTQwNDMs NyArNDA2OCw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgQGl0ZW0gYml0c2l6 ZQogIElmIHRoZSBmaWVsZCBpcyBwYWNrZWQsIG9yIGlzIGEgYml0ZmllbGQsIHRoZW4gdGhpcyB3 aWxsIGhhdmUgYQogIG5vbi16ZXJvIHZhbHVlLCB3aGljaCBpcyB0aGUgc2l6ZSBvZiB0aGUgZmll bGQgaW4gYml0cy4gIE90aGVyd2lzZSwKLUBAIC0xOTM0Niw3ICsxOTQzMSw3IEBAIElmIHRoZSB0 eXBlIGRvZXMgbm90IGhhdmUgYSB0YXJnZXQsIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4KK0BA IC0xOTM1Niw3ICsxOTQ0MSw3IEBAIElmIHRoZSB0eXBlIGRvZXMgbm90IGhhdmUgYSB0YXJnZXQs IHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4KICBleGNlcHRpb24uCiAgQGVuZCBkZWZtZXRob2QK ICAKQEAgLTQwNTIsNyArNDA3Nyw3IEBAIGluZGV4IGYxNmI2ZTIuLmZlMzI4YzcgMTAwNjQ0CiAg SWYgdGhpcyBAY29kZXtnZGIuVHlwZX0gaXMgYW4gaW5zdGFudGlhdGlvbiBvZiBhIHRlbXBsYXRl LCB0aGlzIHdpbGwKICByZXR1cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2Vu dHMgdGhlIHR5cGUgb2YgdGhlCiAgQHZhcntufXRoIHRlbXBsYXRlIGFyZ3VtZW50LgotQEAgLTE5 MzU0LDcgKzE5NDM5LDggQEAgcmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXBy ZXNlbnRzIHRoZSB0eXBlIG9mIHRoZQorQEAgLTE5MzY0LDcgKzE5NDQ5LDggQEAgcmV0dXJuIGEg bmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZQogIElm IHRoaXMgQGNvZGV7Z2RiLlR5cGV9IGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUsIHRoaXMgd2lsbCB0 aHJvdyBhbgogIGV4Y2VwdGlvbi4gIE9yZGluYXJpbHksIG9ubHkgQ0B0eysrfSBjb2RlIHdpbGwg aGF2ZSB0ZW1wbGF0ZSB0eXBlcy4KICAKQEAgLTQwNjIsNyArNDA4Nyw3IEBAIGluZGV4IGYxNmI2 ZTIuLmZlMzI4YzcgMTAwNjQ0CiAgQGVuZCBkZWZtZXRob2QKICBAZW5kIHRhYmxlCiAgCi1AQCAt MTk3MDgsNiArMTk3OTQsMTIxIEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CitAQCAtMTk3MTgs NiArMTk4MDQsMTIxIEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CiAgZ2RiLmxpYnN0ZGN4eC52 Ni5yZWdpc3Rlcl9wcmludGVycyAoZ2RiLmN1cnJlbnRfb2JqZmlsZSAoKSkKICBAZW5kIHNtYWxs ZXhhbXBsZQogIApAQCAtNDE4NCw3ICs0MjA5LDcgQEAgaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAx MDA2NDQKICBAbm9kZSBDb21tYW5kcyBJbiBQeXRob24KICBAc3Vic3Vic2VjdGlvbiBDb21tYW5k cyBJbiBQeXRob24KICAKLUBAIC0xOTk2MCw2ICsyMDE2MSwxMzUgQEAgcmVnaXN0cmF0aW9uIG9m IHRoZSBjb21tYW5kIHdpdGggQHZhbHVle0dEQk59LiAgRGVwZW5kaW5nIG9uIGhvdyB0aGUKK0BA IC0xOTk3MCw2ICsyMDE3MSwxMzUgQEAgcmVnaXN0cmF0aW9uIG9mIHRoZSBjb21tYW5kIHdpdGgg QHZhbHVle0dEQk59LiAgRGVwZW5kaW5nIG9uIGhvdyB0aGUKICBQeXRob24gY29kZSBpcyByZWFk IGludG8gQHZhbHVle0dEQk59LCB5b3UgbWF5IG5lZWQgdG8gaW1wb3J0IHRoZQogIEBjb2Rle2dk Yn0gbW9kdWxlIGV4cGxpY2l0bHkuCiAgCkBAIC00MzIwLDcgKzQzNDUsNyBAQCBpbmRleCBmMTZi NmUyLi5mZTMyOGM3IDEwMDY0NAogIEBub2RlIEZ1bmN0aW9ucyBJbiBQeXRob24KICBAc3Vic3Vi c2VjdGlvbiBXcml0aW5nIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbnMKICAKLUBAIC0yMDA2NCw2 ICsyMDM5NCw4MiBAQCB3aGljaCBpcyB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWUuICBAeHJlZntQ cmV0dHkgUHJpbnRpbmd9LCBmb3IgbW9yZQorQEAgLTIwMDc0LDYgKzIwNDA0LDgyIEBAIHdoaWNo IGlzIHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZS4gIEB4cmVme1ByZXR0eSBQcmludGluZ30sIGZv ciBtb3JlCiAgaW5mb3JtYXRpb24uCiAgQGVuZCBkZWZpdmFyCiAgCkBAIC00NDAzLDcgKzQ0Mjgs NyBAQCBpbmRleCBmMTZiNmUyLi5mZTMyOGM3IDEwMDY0NAogIEBub2RlIEZyYW1lcyBJbiBQeXRo b24KICBAc3Vic3Vic2VjdGlvbiBBY2Vzc2luZyBpbmZlcmlvciBzdGFjayBmcmFtZXMgZnJvbSBQ eXRob24uCiAgCi1AQCAtMjAxMjgsNiArMjA1MzQsMTQgQEAgZnVuY3Rpb24gdG8gYSBzdHJpbmcu CitAQCAtMjAxMzgsNiArMjA1NDQsMTQgQEAgZnVuY3Rpb24gdG8gYSBzdHJpbmcuCiAgUmV0dXJu cyB0aGUgZnJhbWUncyByZXN1bWUgYWRkcmVzcy4KICBAZW5kIGRlZm1ldGhvZAogIApAQCAtNDQx OCw3ICs0NDQzLDcgQEAgaW5kZXggZjE2YjZlMi4uZmUzMjhjNyAxMDA2NDQKICBAZGVmbWV0aG9k IEZyYW1lIG9sZGVyCiAgUmV0dXJuIHRoZSBmcmFtZSB0aGF0IGNhbGxlZCB0aGlzIGZyYW1lLgog IEBlbmQgZGVmbWV0aG9kCi1AQCAtMjAxMzYsMTAgKzIwNTUwLDE4IEBAIFJldHVybiB0aGUgZnJh bWUgdGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4KK0BAIC0yMDE0NiwxMCArMjA1NjAsMTggQEAgUmV0 dXJuIHRoZSBmcmFtZSB0aGF0IGNhbGxlZCB0aGlzIGZyYW1lLgogIFJldHVybiB0aGUgZnJhbWUg Y2FsbGVkIGJ5IHRoaXMgZnJhbWUuCiAgQGVuZCBkZWZtZXRob2QKICAKQEAgLTQ5NjMsNyArNDk4 OCw3IEBAIGluZGV4IDBiZmNmY2EuLjAxMDE4ZDYgMTAwNjQ0CiAgCiAgI2VuZGlmIC8qIGR3YXJm MmxvYy5oICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFk LmMKLWluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CitpbmRleCA0Y2NlMzZiLi5mYjBhNjkz IDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwog QEAgLTQ4LDYgKzQ4LDEyIEBACkBAIC01NzAxLDcgKzU3MjYsNyBAQCBpbmRleCA0Y2NlMzZiLi5j MmY1ZjIzIDEwMDY0NAogICAgICAgIGlmIChkaWUtPmNoaWxkICE9IE5VTEwgJiYgKGRpZS0+dGFn ID09IERXX1RBR19pbXBvcnRlZF9kZWNsYXJhdGlvbgogIAkJCQkgfHwgY3UtPmxhbmd1YWdlICE9 IGxhbmd1YWdlX2ZvcnRyYW4pKQogIAljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8o IlRhZyAnJXMnIGhhcyB1bmV4cGVjdGVkIGNoaWxkcmVuIiksCi1AQCAtMzMxMCw0MSArMzU4Myw2 OCBAQCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorQEAgLTMzMTAsNDEgKzM1ODMsNzEgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAvKiBSZXR1cm4gdGhlIGZ1bGx5IHF1YWxp ZmllZCBuYW1lIG9mIERJRSwgYmFzZWQgb24gaXRzIERXX0FUX25hbWUuCiAgICAgSWYgc2NvcGUg cXVhbGlmaWVycyBhcmUgYXBwcm9wcmlhdGUgdGhleSB3aWxsIGJlIGFkZGVkLiAgVGhlIHJlc3Vs dAogICAgIHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlX29ic3RhY2ssIG9yIE5VTEwg aWYgdGhlIERJRSBkb2VzCkBAIC01Nzc2LDE0ICs1ODAxLDE3IEBAIGluZGV4IDRjY2UzNmIuLmMy ZjVmMjMgMTAwNjQ0CiAgICByZXR1cm4gbmFtZTsKICB9CiAgCi0rLyogcmVhZCB0aGUgZ2l2ZW4g ZGllJ3MgZGVjbF9saW5lIG51bWJlci4gUmV0dXJuIC0xIGlmIGluIGNhc2Ugb2YgYW4gZXJyb3Ig Ki8KLStzdGF0aWMgY29uc3QgaW50IGR3YXJmMl9yZWFkX2RlY2xfbGluZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KXsKKysvKiBSZWFkIHRoZSBnaXZlbiBESUUn cyBEV19BVF9kZWNsX2xpbmUgbnVtYmVyLiAgUmV0dXJuIC0xIGlmIGluIGNhc2Ugb2YgYW4KKysg ICBlcnJvci4gICovCisrCisrc3RhdGljIGludAorK2R3YXJmMl9yZWFkX2RlY2xfbGluZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK3sKICsgIHN0cnVjdCBh dHRyaWJ1dGUgKmxpbmVfYXR0cjsKICsKICsgIGxpbmVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2RlY2xfbGluZSwgY3UpOwotKyAgaWYgKGxpbmVfYXR0cil7Ci0rICAgIHJldHVybiAg RFdfVU5TTkQgKGxpbmVfYXR0cik7Ci0rICB9CisrICBpZiAobGluZV9hdHRyKQorKyAgICByZXR1 cm4gRFdfVU5TTkQgKGxpbmVfYXR0cik7CiArCiArICByZXR1cm4gLTE7CiArfQpAQCAtNTc5MSw3 ICs1ODE5LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAvKiBSZWFkIHRoZSBp bXBvcnQgc3RhdGVtZW50IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gZGllIGFuZCByZWNvcmQgaXQu ICAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtMzM1NCw5ICszNjU0LDE1IEBAIHJlYWRfaW1wb3J0 X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor QEAgLTMzNTQsOSArMzY1NywxNSBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBkaWVfaW5mbyAqaW1w b3J0ZWRfZGllOwogICAgY29uc3QgY2hhciAqaW1wb3J0ZWRfbmFtZTsKICAgIGNvbnN0IGNoYXIg KmltcG9ydGVkX25hbWVfcHJlZml4OwpAQCAtNTgwOSw3ICs1ODM3LDcgQEAgaW5kZXggNGNjZTM2 Yi4uYzJmNWYyMyAxMDA2NDQKICAgIGltcG9ydF9hdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdf QVRfaW1wb3J0LCBjdSk7CiAgICBpZiAoaW1wb3J0X2F0dHIgPT0gTlVMTCkKICAgICAgewotQEAg LTM0MDQsMTcgKzM3MTAsMjcgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzQwNCwxNyArMzcxMywyNyBAQCBy ZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICAgICAgICByZXR1cm47CiAgICAgIH0KICAKQEAgLTU4NDMsNyArNTg3MSw3IEBA IGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgICAgY2Fub25pY2FsX25hbWUgPSBh bGxvY2EgKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiArIHN0cmxlbiAoaW1wb3J0 ZWRfbmFtZSkgKyAxKTsKICAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9uYW1lLCBpbXBvcnRlZF9u YW1lX3ByZWZpeCk7CiAgICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgIjo6Iik7Ci1AQCAt MzQyNSw4ICszNzQxLDE0IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM0MjUsOCArMzc0NCwxNCBAQCByZWFk X2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKICAgICAgICBjYW5vbmljYWxfbmFtZSA9IGFsbG9jYSAoc3RybGVuIChpbXBvcnRlZF9u YW1lKSArIDEpOwogICAgICAgIHN0cmNweSAoY2Fub25pY2FsX25hbWUsIGltcG9ydGVkX25hbWUp OwogICAgICB9CkBAIC01ODYwLDcgKzU4ODgsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEw MDY0NAogIH0KICAKICBzdGF0aWMgdm9pZAotQEAgLTM2OTUsNiArNDAxNywxNCBAQCBpbmhlcml0 X2Fic3RyYWN0X2RpZXMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC0zNjk1LDYgKzQwMjAsMTQgQEAgaW5oZXJpdF9hYnN0cmFjdF9kaWVzIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyOwogIAogICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Fic3RyYWN0X29y aWdpbiwgY3UpOwpAQCAtNTg3NSw3ICs1OTAzLDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAx MDA2NDQKICAgIGlmICghYXR0cikKICAgICAgcmV0dXJuOwogIAotQEAgLTM3OTMsNiArNDEyMyw3 IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorQEAgLTM3OTMsNiArNDEyNiw3IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgY2hhciAqbmFtZTsKICAgIENP UkVfQUREUiBiYXNlYWRkcjsKICAgIHN0cnVjdCBibG9jayAqYmxvY2s7CkBAIC01ODgzLDcgKzU5 MTEsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgaW50IGlubGluZWRfZnVu YyA9IChkaWUtPnRhZyA9PSBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKTsKICAKICAgIGlmIChp bmxpbmVkX2Z1bmMpCi1AQCAtMzgxMSwxMyArNDE0MiwyMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zODExLDEzICs0 MTQ1LDIzIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogIAogICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlv bl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7CiAgCkBAIC01OTEwLDcgKzU5Mzgs NyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgbG93cGMgKz0gYmFzZWFkZHI7 CiAgICBoaWdocGMgKz0gYmFzZWFkZHI7CiAgCi1AQCAtMzg0NCwxNCArNDE4NSwxOSBAQCByZWFk X2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC0zODQ0LDE0ICs0MTg4LDE5IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAogICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAm bG9jYWxfc3ltYm9sczsKICAKQEAgLTU5MzcsNyArNTk2NSw3IEBAIGluZGV4IDRjY2UzNmIuLmMy ZjVmMjMgMTAwNjQ0CiAgICAgIH0KICAKICAgIGluaGVyaXRfYWJzdHJhY3RfZGllcyAoZGllLCBj dSk7Ci1AQCAtMzg2Nyw2ICs0MjEzLDEzIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM4NjcsNiArNDIxNiwxMyBAQCBy ZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICAJCQlkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KSwKICAJCQlwcm9jZXNzaW5nX2hhc19u YW1lc3BhY2VfaW5mbyk7CiAgCkBAIC01OTUxLDcgKzU5NzksNyBAQCBpbmRleCA0Y2NlMzZiLi5j MmY1ZjIzIDEwMDY0NAogICAgLyogSWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywgcmVjb3JkIHRo ZW0uICAqLwogICAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxvY2ssIGJhc2Vh ZGRyLCBjdSk7CiAgICAKLUBAIC0zOTAzLDcgKzQyNTYsNyBAQCByZWFkX2xleGljYWxfYmxvY2tf c2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0z OTAzLDcgKzQyNTksNyBAQCByZWFkX2xleGljYWxfYmxvY2tfc2NvcGUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgIGFzIG11bHRpcGxlIGxleGljYWwg YmxvY2tzPyAgSGFuZGxpbmcgY2hpbGRyZW4gaW4gYSBzYW5lIHdheSB3b3VsZAogICAgICAgYmUg bmFzdHkuICBNaWdodCBiZSBlYXNpZXIgdG8gcHJvcGVybHkgZXh0ZW5kIGdlbmVyaWMgYmxvY2tz IHRvIAogICAgICAgZGVzY3JpYmUgcmFuZ2VzLiAgKi8KQEAgLTU5NjAsNyArNTk4OCw3IEBAIGlu ZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgIHJldHVybjsKICAgIGxvd3BjICs9IGJh c2VhZGRyOwogICAgaGlnaHBjICs9IGJhc2VhZGRyOwotQEAgLTM5MjAsNyArNDI3Myw3IEBAIHJl YWRfbGV4aWNhbF9ibG9ja19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorQEAgLTM5MjAsNyArNDI3Niw3IEBAIHJlYWRfbGV4aWNhbF9ibG9ja19zY29w ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICB9CiAg ICBuZXcgPSBwb3BfY29udGV4dCAoKTsKICAKQEAgLTU5NjksNyArNTk5Nyw3IEBAIGluZGV4IDRj Y2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgIHsKICAgICAgICBzdHJ1Y3QgYmxvY2sgKmJsb2Nr CiAgICAgICAgICA9IGZpbmlzaF9ibG9jayAoMCwgJmxvY2FsX3N5bWJvbHMsIG5ldy0+b2xkX2Js b2NrcywgbmV3LT5zdGFydF9hZGRyLAotQEAgLTQwNzUsNyArNDQyOCw4IEBAIGR3YXJmMl9yYW5n ZXNfcmVhZCAodW5zaWduZWQgb2Zmc2V0LCBDT1JFX0FERFIgKmxvd19yZXR1cm4sCitAQCAtNDA3 NSw3ICs0NDMxLDggQEAgZHdhcmYyX3Jhbmdlc19yZWFkICh1bnNpZ25lZCBvZmZzZXQsIENPUkVf QUREUiAqbG93X3JldHVybiwKICAgICBkaXNjb250aW51b3VzLCBpLmUuIGRlcml2ZWQgZnJvbSBE V19BVF9yYW5nZXMgaW5mb3JtYXRpb24uICAqLwogIHN0YXRpYyBpbnQKICBkd2FyZjJfZ2V0X3Bj X2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIENPUkVfQUREUiAqbG93cGMsCkBAIC01OTc5 LDcgKzYwMDcsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIHsKICAgIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHI7CiAgICBDT1JFX0FERFIgbG93ID0gMDsKLUBAIC00MTAzLDcgKzQ0 NTcsNyBAQCBkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIENPUkVf QUREUiAqbG93cGMsCitAQCAtNDEwMyw3ICs0NDYwLDcgQEAgZHdhcmYyX2dldF9wY19ib3VuZHMg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBDT1JFX0FERFIgKmxvd3BjLAogIAl7CiAgCSAgLyogVmFs dWUgb2YgdGhlIERXX0FUX3JhbmdlcyBhdHRyaWJ1dGUgaXMgdGhlIG9mZnNldCBpbiB0aGUKICAJ ICAgICAuZGVidWdfcmFuZ2VzIHNlY3Rpb24uICAqLwpAQCAtNTk4OCw3ICs2MDE2LDcgQEAgaW5k ZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAJICAgIHJldHVybiAwOwogIAkgIC8qIEZvdW5k IGRpc2NvbnRpbnVvdXMgcmFuZ2Ugb2YgYWRkcmVzc2VzLiAgKi8KICAJICByZXQgPSAtMTsKLUBA IC00MTQyLDcgKzQ0OTYsNyBAQCBkd2FyZjJfZ2V0X3N1YnByb2dyYW1fcGNfYm91bmRzIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwKK0BAIC00MTQyLDcgKzQ0OTksNyBAQCBkd2FyZjJfZ2V0X3N1YnBy b2dyYW1fcGNfYm91bmRzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgIENPUkVfQUREUiBsb3cs IGhpZ2g7CiAgICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkID0gZGllLT5jaGlsZDsKICAKQEAgLTU5 OTcsNyArNjAyNSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgIHsKICAg ICAgICAqbG93cGMgPSBtaW4gKCpsb3dwYywgbG93KTsKICAgICAgICAqaGlnaHBjID0gbWF4ICgq aGlnaHBjLCBoaWdoKTsKLUBAIC00MTc5LDcgKzQ1MzMsNyBAQCBnZXRfc2NvcGVfcGNfYm91bmRz IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC00MTc5LDcgKzQ1MzYsNyBAQCBnZXRfc2NvcGVf cGNfYm91bmRzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgIENPUkVfQUREUiBiZXN0X2hpZ2gg PSAoQ09SRV9BRERSKSAwOwogICAgQ09SRV9BRERSIGN1cnJlbnRfbG93LCBjdXJyZW50X2hpZ2g7 CiAgCkBAIC02MDA2LDcgKzYwMzQsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAog ICAgICB7CiAgICAgICAgYmVzdF9sb3cgPSBjdXJyZW50X2xvdzsKICAgICAgICBiZXN0X2hpZ2gg PSBjdXJyZW50X2hpZ2g7Ci1AQCAtNDQ3NCw3ICs0ODI4LDcgQEAgZHdhcmYyX2FkZF9maWVsZCAo c3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtNDQ3NCw3 ICs0ODMxLDcgQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3Ry dWN0IGRpZV9pbmZvICpkaWUsCiAgCXJldHVybjsKICAKICAgICAgICAvKiBHZXQgcGh5c2ljYWwg bmFtZS4gICovCkBAIC02MDE1LDcgKzYwNDMsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEw MDY0NAogIAogICAgICAgIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdp dGggdGhpcyBvYmpmaWxlLCBzbyB3ZSBkb24ndAogIAkgbmVlZCB0byBkdXBsaWNhdGUgaXQgZm9y IHRoZSB0eXBlLiAgKi8KLUBAIC00NjE3LDcgKzQ5NzEsNyBAQCBkd2FyZjJfYWRkX21lbWJlcl9m biAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtNDYx Nyw3ICs0OTc0LDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpm aXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAogICAgICByZXR1cm47CiAgCiAgICAvKiBHZXQgdGhl IG1hbmdsZWQgbmFtZS4gICovCkBAIC02MDI0LDcgKzYwNTIsNyBAQCBpbmRleCA0Y2NlMzZiLi5j MmY1ZjIzIDEwMDY0NAogIAogICAgLyogTG9vayB1cCBtZW1iZXIgZnVuY3Rpb24gbmFtZSBpbiBm aWVsZGxpc3QuICAqLwogICAgZm9yIChpID0gMDsgaSA8IGZpcC0+bmZuZmllbGRzOyBpKyspCi1A QCAtNDY2MSw3ICs1MDE1LDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9p bmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTQ2NjEsNyArNTAxOCw3IEBAIGR3 YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKICAgIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGgg dGhpcyBvYmpmaWxlLCBzbyB3ZSBkb24ndAogICAgICAgbmVlZCB0byBkdXBsaWNhdGUgaXQgZm9y IHRoZSB0eXBlLiAgKi8KICAgIGZucC0+cGh5c25hbWUgPSBwaHlzbmFtZSA/IHBoeXNuYW1lIDog IiI7CkBAIC02MDMzLDcgKzYwNjEsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAog ICAgdGhpc190eXBlID0gcmVhZF90eXBlX2RpZSAoZGllLCBjdSk7CiAgICBpZiAodGhpc190eXBl ICYmIFRZUEVfQ09ERSAodGhpc190eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewotQEAg LTQ3MjEsMTggKzUwNzUsMTggQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9p bmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTQ3MjEsMTggKzUwNzgsMTggQEAg ZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVf aW5mbyAqZGllLAogICAgICB7CiAgICAgICAgLyogU3VwcG9ydCB0aGUgLmRlYnVnX2xvYyBvZmZz ZXRzICovCiAgICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCkBAIC02MDU5LDcg KzYwODcsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgIH0KICB9CiAgCi1A QCAtNDg0NSw3ICs1MTk5LDcgQEAgcXVpcmtfZ2NjX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNDg0NSw3ICs1 MjAyLDcgQEAgcXVpcmtfZ2NjX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIHJldHVybiBOVUxMOwogIAogICAg ZG9tYWluX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZJRUxEX1RZUEUgKHBmbl90eXBl LCAwKSk7CkBAIC02MDY4LDcgKzYwOTYsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0 NAogICAgc21hc2hfdG9fbWV0aG9kX3R5cGUgKHR5cGUsIGRvbWFpbl90eXBlLCBUWVBFX1RBUkdF VF9UWVBFIChwZm5fdHlwZSksCiAgCQkJVFlQRV9GSUVMRFMgKHBmbl90eXBlKSwgVFlQRV9ORklF TERTIChwZm5fdHlwZSksCiAgCQkJVFlQRV9WQVJBUkdTIChwZm5fdHlwZSkpOwotQEAgLTQ4OTgs NyArNTI1Miw3IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC00ODk4LDcgKzUyNTUsNyBAQCByZWFkX3N0cnVjdHVy ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAg ICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7CiAgICAgIH0KICAKQEAgLTYw NzcsNyArNjEwNSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICBJTklUX0NQ TFVTX1NQRUNJRklDICh0eXBlKTsKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7 Ci1AQCAtNDkwNywxNCArNTI2MSwxOCBAQCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNDkwNywxNCArNTI2NCwxOCBA QCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgICAgICAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwogIAkg IHx8IGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQogIAl7CkBAIC02MDk5LDcgKzYxMjcs NyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAl9CiAgICAgIH0KICAKLUBAIC01 MTI0LDcgKzU0ODIsNyBAQCByZWFkX2VudW1lcmF0aW9uX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01MTI0LDcgKzU0ODUsNyBAQCByZWFkX2Vu dW1lcmF0aW9uX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICAgICAgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKICAgICAgfQog IApAQCAtNjEwOCw3ICs2MTM2LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAK ICAgIFRZUEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVfRU5VTTsKICAgIG5hbWUgPSBkd2FyZjJf ZnVsbF9uYW1lIChkaWUsIGN1KTsKLUBAIC01MTUyLDUxICs1NTEwLDYgQEAgcmVhZF9lbnVtZXJh dGlvbl90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitA QCAtNTE1Miw1MSArNTUxMyw2IEBAIHJlYWRfZW51bWVyYXRpb25fdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgcmV0dXJuIHNldF9kaWVfdHlwZSAo ZGllLCB0eXBlLCBjdSk7CiAgfQogIApAQCAtNjE2MCw3ICs2MTg4LDcgQEAgaW5kZXggNGNjZTM2 Yi4uYzJmNWYyMyAxMDA2NDQKICAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBkaWUgd2hpY2ggYmVn aW5zIGFuIGVudW1lcmF0aW9uLCBwcm9jZXNzIGFsbAogICAgIHRoZSBkaWVzIHRoYXQgZGVmaW5l IHRoZSBtZW1iZXJzIG9mIHRoZSBlbnVtZXJhdGlvbiwgYW5kIGNyZWF0ZSB0aGUKICAgICBzeW1i b2wgZm9yIHRoZSBlbnVtZXJhdGlvbiB0eXBlLgotQEAgLTUyNzQsNiArNTU4NywyOSBAQCBwcm9j ZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCitAQCAtNTI3NCw2ICs1NTkwLDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19z eW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtNjE5MCw3ICs2MjE4LDcgQEAg aW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlv biBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0aGUgRElF J3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25h bAogICAgIGFycmF5cy4gICovCi1AQCAtNTI4Nyw3ICs1NjIzLDcgQEAgcmVhZF9hcnJheV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTI4Nyw3 ICs1NjI2LDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlw ZSwgKmluZGV4X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKICAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC02MTk5LDcgKzYyMjcsNyBAQCBpbmRleCA0Y2Nl MzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFy ICpuYW1lOwogIAotQEAgLTUzMzQsMTYgKzU2NzAsMTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTMzNCwxNiArNTY3 MywxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCiAgICBpZiAocmVhZF9hcnJh eV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKQEAgLTYyMjEsNyArNjI0OSw3 IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCiAgICAvKiBVbmRlcnN0YW5kIER3 YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgogICAgICAg dGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRl IHRvIHRoZQotQEAgLTU0MTAsMTIgKzU3NDEsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU0MTAsMTIgKzU3NDQsMTQg QEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOwogIH0KICAK QEAgLTYyMzgsNyArNjI2Niw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAgc3RydWN0IHN5bWJvbCAqc3ltOwogICAgQ09SRV9B RERSIGJhc2UgPSAoQ09SRV9BRERSKSAwOwotQEAgLTU0MjUsMjUgKzU3NTgsNTUgQEAgcmVhZF9j b21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC01NDI1LDI1ICs1NzYxLDU1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIHsKICAgICAgICAvKiBTdXBwb3J0 IHRoZSAuZGVidWdfbG9jIG9mZnNldHMgKi8KICAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2Nr IChhdHRyKSkKQEAgLTYzMDEsNyArNjMyOSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAw NjQ0CiAgCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2RhdGFfbWVtYmVy X2xvY2F0aW9uLCBjdSk7CiAgCSAgaWYgKGF0dHIpCiAgCSAgICB7Ci1AQCAtNTQ2MSw4ICs1ODI0 LDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCitAQCAtNTQ2MSw4ICs1ODI3LDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgICAgIFNZTUJP TF9WQUxVRV9BRERSRVNTIChzeW0pID0gYmFzZSArIGJ5dGVfb2Zmc2V0OwogIAkgICAgICBhZGRf c3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKICAJICAgIH0KQEAgLTYzMjcs NyArNjM1NSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICAgIH0KICB9CiAg Ci1AQCAtNTUzMCw3ICs1OTEwLDcgQEAgcmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NTMwLDcgKzU5MTMsNyBAQCByZWFkX25h bWVzcGFjZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAg ICAgIGlmIChpc19hbm9ueW1vdXMpCiAgCXsKICAJICBjb25zdCBjaGFyICpwcmV2aW91c19wcmVm aXggPSBkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KTsKQEAgLTYzMzYsNyArNjM2NCw3IEBAIGlu ZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCX0KICAgICAgfQogIAotQEAgLTU1NDYsMjAg KzU5MjYsMTU1IEBAIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCitAQCAtNTU0NiwyMCArNTkyOSwxNTUgQEAgcmVhZF9uYW1lc3BhY2Ug KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgfQogIH0K ICAKQEAgLTYzNzYsMTggKzY0MDQsMTggQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQK ICsKICsgIGlmIChkaWVfaXNfZGVjbGFyYXRpb24gKGRpZSwgY3UpKQogKyAgICByZXR1cm4gTlVM TDsKLSAKLS0gIC8qIEZJWE1FOiBTdXBwb3J0IHRoZSBzZXBhcmF0ZSBGb3J0cmFuIG1vZHVsZSBu YW1lc3BhY2VzLiAgKi8KKysKICsgIG1vZHVsZV9uYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3Up OwogKyAgaWYgKCFtb2R1bGVfbmFtZSkKICsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFp bnRzLCBfKCJEV19UQUdfbW9kdWxlIGhhcyBubyBuYW1lLCBvZmZzZXQgMHgleCIpLAogKyAgICAg ICAgICAgICAgIGRpZS0+b2Zmc2V0KTsKICsgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9N T0RVTEUsIDAsIDAsIG1vZHVsZV9uYW1lLCBvYmpmaWxlKTsKLSAKLSsgIC8qIENyZWF0ZSBhIGNv bnRleHQgZm9yIHJlYWRpbmcgdGhlIG1vZHVsZSB2YXJpYWJsZXMuICAqLwogKworKyAgLyogQ3Jl YXRlIGEgY29udGV4dCBmb3IgcmVhZGluZyB0aGUgbW9kdWxlIHZhcmlhYmxlcy4gICovCisgCist ICAvKiBGSVhNRTogU3VwcG9ydCB0aGUgc2VwYXJhdGUgRm9ydHJhbiBtb2R1bGUgbmFtZXNwYWNl cy4gICovCiArICBuZXcgPSBwdXNoX2NvbnRleHQgKDAsIDApOwotKworIAogKyAgc2F2ZV9maWxl X3N5bWJvbHMgPSBmaWxlX3N5bWJvbHM7CiArICBmaWxlX3N5bWJvbHMgPSBOVUxMOwogKyAgc2F2 ZV9nbG9iYWxfc3ltYm9scyA9IGdsb2JhbF9zeW1ib2xzOwpAQCAtNjQ5NSw3ICs2NTIzLDcgQEAg aW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICB9CiAgCiAgLyogUmV0dXJuIHRoZSBuYW1l IG9mIHRoZSBuYW1lc3BhY2UgcmVwcmVzZW50ZWQgYnkgRElFLiAgU2V0Ci1AQCAtNTcyNCwyOSAr NjIzOSwxMTMgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01NzI0LDI5ICs2MjQyLDExMyBAQCByZWFkX3RhZ19z dHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog ICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsK ICAgIHN0cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5 cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNjYyMyw3ICs2NjUxLDcgQEAgaW5k ZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAgIGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmlu Z19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZuLCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVh dGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlwZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtNTg0 MSw3ICs2NDQwLDYgQEAgc3RhdGljIHN0cnVjdCB0eXBlICoKK0BAIC01ODQxLDcgKzY0NDMsNiBA QCBzdGF0aWMgc3RydWN0IHR5cGUgKgogIHJlYWRfdHlwZWRlZiAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIHsKICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl ID0gY3UtPm9iamZpbGU7CkBAIC02NjMxLDcgKzY2NTksNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1 ZjIzIDEwMDY0NAogICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7CiAgICBzdHJ1Y3QgdHlwZSAq dGhpc190eXBlOwogIAotQEAgLTU5NDksOCArNjU0Nyw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU5NDksOCAr NjU1MCw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0cnVjdCB0 eXBlICpyYW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAgLTY2NDEsNyAr NjY2OSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgICBjaGFyICpuYW1lOwog ICAgCiAgICBiYXNlX3R5cGUgPSBkaWVfdHlwZSAoZGllLCBjdSk7Ci1AQCAtNTk2Myw0MiArNjU2 MCw4OSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC01OTYzLDQyICs2NTYzLDg5IEBAIHJlYWRfc3VicmFuZ2VfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJICAgICAw LCBOVUxMLCBjdS0+b2JqZmlsZSk7CiAgICAgIH0KICAKQEAgLTY3NjAsNyArNjc4OCw3IEBAIGlu ZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRp ZSwgY3UpOwogICAgaWYgKG5hbWUpCi1AQCAtNjQ2OSw2ICs3MTEzLDcgQEAgbG9hZF9wYXJ0aWFs X2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAor QEAgLTY0NjksNiArNzExNiw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9i eXRlICpidWZmZXIsIGdkYl9ieXRlICppbmZvX3B0ciwKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBE V19UQUdfbGV4aWNhbF9ibG9jawogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR192YXJpYWJs ZQogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UKQEAgLTY3NjgsNyArNjc5 Niw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgCSAgJiYgYWJicmV2LT50YWcg IT0gRFdfVEFHX21lbWJlcikKICAJewogIAkgIC8qIE90aGVyd2lzZSB3ZSBza2lwIHRvIHRoZSBu ZXh0IHNpYmxpbmcsIGlmIGFueS4gICovCi1AQCAtNjY4OSw5ICs3MzM0LDYgQEAgcmVhZF9wYXJ0 aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAorQEAgLTY2ODksOSAr NzMzNyw2IEBAIHJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0 X2RpZSwKICAJICBpZiAocGFydF9kaWUtPmRpcm5hbWUgPT0gTlVMTCkKICAJICAgIHBhcnRfZGll LT5kaXJuYW1lID0gRFdfU1RSSU5HICgmYXR0cik7CiAgCSAgYnJlYWs7CkBAIC02Nzc4LDcgKzY4 MDYsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAljYXNlIERXX0FUX2xvd19w YzoKICAJICBoYXNfbG93X3BjX2F0dHIgPSAxOwogIAkgIHBhcnRfZGllLT5sb3dwYyA9IERXX0FE RFIgKCZhdHRyKTsKLUBAIC02OTIzLDcgKzc1NjUsOCBAQCBmaXh1cF9wYXJ0aWFsX2RpZSAoc3Ry dWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAorQEAgLTY5MjMsNyArNzU2OCw4IEBAIGZp eHVwX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFydF9kaWUsCiAgICAv KiBJZiB3ZSBmb3VuZCBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUgYW5kIHRoZSBESUUgaGFzIG5vIG5h bWUsIHRyeQogICAgICAgdG8gZmluZCBhIG5hbWUgaW4gdGhlIHJlZmVycmVkIHRvIERJRS4gICov CiAgCkBAIC02Nzg4LDcgKzY4MTYsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAog ICAgICB7CiAgICAgICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnNwZWNfZGllOwogIAotQEAg LTgyNjUsMTAgKzg5MDgsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTgyNjUsMTAgKzg5MTEsMTIgQEAgdmFy X2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAq c3ltLAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkg bG9jYXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBl dGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEkn bSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtNjgwMyw3ICs2 ODMxLDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4g YSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQgaWYgd2Ug bmVlZAotQEAgLTgyOTAsMjEgKzg5MzUsMzAgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04Mjkw LDIxICs4OTM4LDMwIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBiYXNlYWRkciA9IEFOT0ZG U0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsK ICAKQEAgLTY4NDEsNyArNjg2OSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAg CiAgICAgICAgLyogRGVmYXVsdCBhc3N1bXB0aW9ucy4KICAgICAgICAgICBVc2UgdGhlIHBhc3Nl ZCB0eXBlIG9yIGRlY29kZSBpdCBmcm9tIHRoZSBkaWUuICAqLwotQEAgLTg0MDIsOSArOTA1Niwy OCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTg0MDIsOSArOTA1OSwyOCBAQCBuZXdfc3ltYm9s IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQogIAkgIGlmIChhdHRyKQogIAkgICAgewogIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0 aW9uIChhdHRyLCBzeW0sIGN1KTsKQEAgLTY4NzEsNyArNjg5OSw3IEBAIGluZGV4IDRjY2UzNmIu LmMyZjVmMjMgMTAwNjQ0CiAgCSAgICAgIGVsc2UKICAJCWFkZF9zeW1ib2xfdG9fbGlzdCAoc3lt LCBjdS0+bGlzdF9pbl9zY29wZSk7CiAgCSAgICB9Ci1AQCAtODUzNCw3ICs5MjA3LDcgQEAgbmV3 X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKK0BAIC04NTM0LDcgKzkyMTAsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog IAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7CiAgCSAgYnJl YWs7CiAgCWNhc2UgRFdfVEFHX2VudW1lcmF0b3I6CkBAIC02ODgwLDcgKzY5MDgsNyBAQCBpbmRl eCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAkgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9jb25zdF92YWx1ZSwgY3UpOwogIAkgIGlmIChhdHRyKQogIAkgICAgewotQEAgLTg1NTgs NiArOTIzMSwxNiBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTg1NTgsNiArOTIzNCwxNiBAQCBu ZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogIAkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19UWVBFREVGOwog IAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOwogIAkgIGJyZWFr OwpAQCAtNjg5Nyw3ICs2OTI1LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAJ ZGVmYXVsdDoKICAJICAvKiBOb3QgYSB0YWcgd2UgcmVjb2duaXplLiAgSG9wZWZ1bGx5IHdlIGFy ZW4ndCBwcm9jZXNzaW5nCiAgCSAgICAgdHJhc2ggZGF0YSwgYnV0IHNpbmNlIHdlIG11c3Qgc3Bl Y2lmaWNhbGx5IGlnbm9yZSB0aGluZ3MKLUBAIC04NTcxLDggKzkyNTQsNyBAQCBuZXdfc3ltYm9s IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorQEAgLTg1NzEsOCArOTI1Nyw3IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAg LyogRm9yIHRoZSBiZW5lZml0IG9mIG9sZCB2ZXJzaW9ucyBvZiBHQ0MsIGNoZWNrIGZvciBhbm9u eW1vdXMKICAJIG5hbWVzcGFjZXMgYmFzZWQgb24gdGhlIGRlbWFuZ2xlZCBuYW1lLiAgKi8KICAg ICAgICBpZiAoIXByb2Nlc3NpbmdfaGFzX25hbWVzcGFjZV9pbmZvCkBAIC02OTA3LDcgKzY5MzUs NyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAljcF9zY2FuX2Zvcl9hbm9ueW1v dXNfbmFtZXNwYWNlcyAoc3ltKTsKICAgICAgfQogICAgcmV0dXJuIChzeW0pOwotQEAgLTg4MjMs MTIgKzk1MDUsMTggQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTg4MjMsMTIgKzk1MDgsMTggQEAgcmVhZF90eXBlX2RpZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICBjYXNlIERX X1RBR19uYW1lc3BhY2U6CiAgICAgICAgdGhpc190eXBlID0gcmVhZF9uYW1lc3BhY2VfdHlwZSAo ZGllLCBjdSk7CiAgICAgICAgYnJlYWs7CkBAIC02OTI2LDcgKzY5NTQsNyBAQCBpbmRleCA0Y2Nl MzZiLi5jMmY1ZjIzIDEwMDY0NAogICAgcmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAtODkx MCwxMCArOTU5OCwxMDAgQEAgZGV0ZXJtaW5lX3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTg5MTAsMTAgKzk2MDEsMTAwIEBAIGRldGVybWlu ZV9wcmVmaXggKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJ ICAgICBTbyBpdCBkb2VzIG5vdCBuZWVkIGEgcHJlZml4LiAgKi8KICAJICByZXR1cm4gIiI7CiAg ICAgICAgZGVmYXVsdDoKQEAgLTcwMjgsNyArNzA1Niw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVm MjMgMTAwNjQ0CiAgLyogUmV0dXJuIGEgbmV3bHktYWxsb2NhdGVkIHN0cmluZyBmb3JtZWQgYnkg Y29uY2F0ZW5hdGluZyBQUkVGSVggYW5kCiAgICAgU1VGRklYIHdpdGggYXBwcm9wcmlhdGUgc2Vw YXJhdG9yLiAgSWYgUFJFRklYIG9yIFNVRkZJWCBpcyBOVUxMIG9yIGVtcHR5LCB0aGVuCiAgICAg c2ltcGx5IGNvcHkgdGhlIFNVRkZJWCBvciBQUkVGSVgsIHJlc3BlY3RpdmVseS4gIElmIE9CUyBp cyBub24tbnVsbCwKLUBAIC04OTYzLDE3ICs5NzQxLDExMSBAQCBzaWJsaW5nX2RpZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUpCitAQCAtODk2MywxNyArOTc0NCwxMTEgQEAgc2libGluZ19kaWUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllKQogICAgcmV0dXJuIGRpZS0+c2libGluZzsKICB9CiAgCkBAIC03 MTQ2LDcgKzcxNzQsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIH0KICAKICAv KiBHZXQgbmFtZSBvZiBhIGRpZSwgcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLUBAIC0x MDIwMCwxMSArMTEwNzIsMTEgQEAgZHdhcmYyX2dldF9yZWZfZGllX29mZnNldCAoc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cikKK0BAIC0xMDIwMCwxMSArMTEwNzUsMTEgQEAgZHdhcmYyX2dldF9yZWZf ZGllX29mZnNldCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKICAgIHJldHVybiAwOwogIH0KICAK QEAgLTcxNjEsNyArNzE4OSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0CiAgewog ICAgaWYgKGF0dHItPmZvcm0gPT0gRFdfRk9STV9zZGF0YSkKICAgICAgcmV0dXJuIERXX1NORCAo YXR0cik7Ci1AQCAtMTEwMDksOCArMTE4ODEsNiBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1 Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorQEAgLTExMDA5LDggKzEx ODg0LDYgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5z aWduZWQgaW50IG9mZnNldCwKICB7CiAgICBnZGJfYnl0ZSAqbWFjX3B0ciwgKm1hY19lbmQ7CiAg ICBzdHJ1Y3QgbWFjcm9fc291cmNlX2ZpbGUgKmN1cnJlbnRfZmlsZSA9IDA7CkBAIC03MTcwLDcg KzcxOTgsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAogICAgaWYgKGR3YXJm Ml9wZXJfb2JqZmlsZS0+bWFjaW5mby5idWZmZXIgPT0gTlVMTCkKICAgICAgewotQEAgLTExMDE4 LDI5ICsxMTg4OCwxOSBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIg KmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorQEAgLTExMDE4LDI5ICsxMTg5MSwxOSBAQCBkd2Fy Zl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zm c2V0LAogICAgICAgIHJldHVybjsKICAgICAgfQogIApAQCAtNzIwNSw3ICs3MjMzLDcgQEAgaW5k ZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAgICAgICAgIH0KICAKICAgICAgICBtYWNpbmZv X3R5cGUgPSByZWFkXzFfYnl0ZSAoYWJmZCwgbWFjX3B0cik7Ci1AQCAtMTEwNTEsOTIgKzExOTEx LDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWdu ZWQgaW50IG9mZnNldCwKK0BAIC0xMTA1MSw5MiArMTE5MTQsNyBAQCBkd2FyZl9kZWNvZGVfbWFj cm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAogICAgICAg ICAgICAvKiBBIHplcm8gbWFjaW5mbyB0eXBlIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBtYWNy bwogICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4gICovCiAgICAgICAgICBjYXNlIDA6CkBAIC03 Mjk5LDcgKzczMjcsNyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIAogICAgICAg ICAgY2FzZSBEV19NQUNJTkZPX2RlZmluZToKICAgICAgICAgIGNhc2UgRFdfTUFDSU5GT191bmRl ZjoKLUBAIC0xMTE1MSwzMSArMTE5MjYsMTkgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0 IGxpbmVfaGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9mZnNldCwKK0BAIC0xMTE1MSwzMSArMTE5 MjksMTkgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5z aWduZWQgaW50IG9mZnNldCwKICAgICAgICAgICAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7CiAg CiAgICAgICAgICAgICAgaWYgKCEgY3VycmVudF9maWxlKQpAQCAtNzM0Miw3ICs3MzcwLDcgQEAg aW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICAgICAgICAgICAgfQogICAgICAgICAgICBi cmVhazsKICAKLUBAIC0xMTE4OSwyMiArMTE5NTIsOSBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChz dHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorQEAgLTExMTg5LDIy ICsxMTk1NSw5IEBAIGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgs IHVuc2lnbmVkIGludCBvZmZzZXQsCiAgICAgICAgICAgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRf bGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7CiAgICAgICAgICAgICAgbWFjX3B0 ciArPSBieXRlc19yZWFkOwogIApAQCAtNzM2OCw3ICs3Mzk2LDcgQEAgaW5kZXggNGNjZTM2Yi4u YzJmNWYyMyAxMDA2NDQKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAKLUBAIC0x MTI1OCw3ICsxMjAwOCw3IEBAIGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRl ciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCitAQCAtMTEyNTgsNyArMTIwMTEsNyBAQCBkd2Fy Zl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zm c2V0LAogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQpAQCAtNzM3 Nyw3ICs3NDA1LDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYyMyAxMDA2NDQKICB9CiAgCiAgLyog Q2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSdzIGZvcm0gaXMgYSBEV19GT1JNX2Jsb2NrKgotQEAgLTEx MzE4LDYgKzEyMDY4LDM0IEBAIGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cikKK0BAIC0xMTMxOCw2ICsxMjA3MSwzNCBAQCBhdHRyX2Zvcm1faXNfY29uc3RhbnQg KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCiAgICAgIH0KICB9CiAgCkBAIC03NDEyLDcgKzc0NDAs NyBAQCBpbmRleCA0Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIHN0YXRpYyB2b2lkCiAgZHdhcmYy X3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3lt Ym9sICpzeW0sCiAgCQkJICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLUBAIC0xMTM0NywzNSAr MTIxMjUsMjUgQEAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRl ICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCitAQCAtMTEzNDcsMzUgKzEyMTI4LDI1IEBAIGR3 YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0 IHN5bWJvbCAqc3ltLAogICAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYy X2xvY2xpc3RfZnVuY3M7CiAgICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gYmF0 b247CiAgICAgIH0KQEAgLTc0NjMsNyArNzQ5MSw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMg MTAwNjQ0CiAgICAgIH0KICB9CiAgCi1AQCAtMTE2NjMsNiArMTI0MzEsMzEgQEAgb2Zmc2V0X2Fu ZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitA QCAtMTE2NjMsNiArMTI0MzQsMzEgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICpp dGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCiAgICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0 ID09IG9mc19yaHMtPm9mZnNldDsKICB9CiAgCkBAIC03NDk1LDcgKzc1MjMsNyBAQCBpbmRleCA0 Y2NlMzZiLi5jMmY1ZjIzIDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGgg RElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2Fy eS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuICAqLwogIAotQEAgLTExNjcxLDYgKzEy NDY0LDggQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTExNjcxLDYgKzEyNDY3LDggQEAgc2V0 X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogIHsKICAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoq c2xvdCwgb2ZzOwogIApAQCAtNzUwNCw3ICs3NTMyLDcgQEAgaW5kZXggNGNjZTM2Yi4uYzJmNWYy MyAxMDA2NDQKICAgIGlmIChjdS0+dHlwZV9oYXNoID09IE5VTEwpCiAgICAgIHsKICAgICAgICBn ZGJfYXNzZXJ0IChjdS0+cGVyX2N1ICE9IE5VTEwpOwotQEAgLTExODEzLDIzICsxMjYwOCwxMyBA QCBzaG93X2R3YXJmMl9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xMTgxMywy MyArMTI2MTEsMTMgQEAgc2hvd19kd2FyZjJfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkp CiAgICBjbWRfc2hvd19saXN0IChzaG93X2R3YXJmMl9jbWRsaXN0LCBmcm9tX3R0eSwgIiIpOwog IH0KICAKQEAgLTc1MzIsNyArNzU2MCw3IEBAIGluZGV4IDRjY2UzNmIuLmMyZjVmMjMgMTAwNjQ0 CiAgfQogIAogIC8qIG11bm1hcCBkZWJ1ZyBzZWN0aW9ucyBmb3IgT0JKRklMRSwgaWYgbmVjZXNz YXJ5LiAgKi8KLUBAIC0xMTgzOCwxNSArMTI2MjMsMTUgQEAgc3RhdGljIHZvaWQKK0BAIC0xMTgz OCwxNSArMTI2MjYsMTUgQEAgc3RhdGljIHZvaWQKICBkd2FyZjJfcGVyX29iamZpbGVfZnJlZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCiAgewogICAgc3RydWN0IGR3YXJmMl9w ZXJfb2JqZmlsZSAqZGF0YSA9IGQ7CkBAIC03NTU3LDcgKzc1ODUsNyBAQCBpbmRleCA0Y2NlMzZi Li5jMmY1ZjIzIDEwMDY0NAogIH0KICAKICB2b2lkIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2 b2lkKTsKLUBAIC0xMTg1NCw2ICsxMjYzOSw3IEBAIHZvaWQgX2luaXRpYWxpemVfZHdhcmYyX3Jl YWQgKHZvaWQpOworQEAgLTExODU0LDYgKzEyNjQyLDcgQEAgdm9pZCBfaW5pdGlhbGl6ZV9kd2Fy ZjJfcmVhZCAodm9pZCk7CiAgdm9pZAogIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKQog IHsKQEAgLTc1OTgsNyArNzYyNiw3IEBAIGluZGV4IDZlNzlkNGEuLjE5OGJhZTMgMTAwNjQ0CiAg ICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0 LiB0byBpbnQuIHJlbG9jYXRpb24gKi8KICAgIGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJLyogc3lt X3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0IGEvZ2Ri L2V2YWwuYyBiL2dkYi9ldmFsLmMKLWluZGV4IDI5MjY0NjUuLjRjNmRlNzggMTAwNjQ0CitpbmRl eCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0NAogLS0tIGEvZ2RiL2V2YWwuYwogKysrIGIvZ2RiL2V2 YWwuYwogQEAgLTM5LDggKzM5LDEyIEBACkBAIC03NzM5LDE3ICs3NzY3LDIzIEBAIGluZGV4IDI5 MjY0NjUuLjRjNmRlNzggMTAwNjQ0CiAgCX0KICAgICAgICBlbHNlIGlmIChvcCA9PSBPUF9WQVJf VkFMVUUpCiAgCXsKLUBAIC0xNTQ5LDcgKzE2MDEsMTAgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTU0OSw2ICsxNjAxLDggQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCiAgICAg ICAgLyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcgd2l0aC4g ICovCiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywg bm9zaWRlKTsKICsgICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwg MCk7CiArICAgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkp OwogICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0rICAg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlw ZSk7CiAgCi0gICAgICAgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BUUikKK0BAIC0xNTY5LDYgKzE2 MjMsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKKyAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCSAgICB9CisgCX0gCisrICAg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisgCisgICAgICAgc3dpdGNoIChjb2RlKQorIAl7 CiBAQCAtMTcxNiw2ICsxNzcxLDM3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAogIAkgIGVycm9yIChfKCJub24tcG9pbnRlci10by1tZW1iZXIg dmFsdWUgdXNlZCBpbiBwb2ludGVyLXRvLW1lbWJlciBjb25zdHJ1Y3QiKSk7CiAgCX0KQEAgLTc4 MzAsNyArNzg2NCwxMCBAQCBpbmRleCAyOTI2NDY1Li40YzZkZTc4IDEwMDY0NAogLQlvZmZzZXRf aXRlbSA9IHN1YnNjcmlwdF9hcnJheVtuZGltZW5zaW9ucyAtIDFdOwogKwlvZmZzZXRfaXRlbSA9 IDA7CiArCW9mZnNldF9ieXRlID0gMDsKLSsKKyAKKy0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAx OyBpID4gMDsgLS1pKQorLQkgIG9mZnNldF9pdGVtID0KKy0JICAgIGFycmF5X3NpemVfYXJyYXlb aSAtIDFdICogb2Zmc2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwogKwlmb3IgKGkg PSBuZGltZW5zaW9ucyAtIDE7IGkgPj0gMDsgLS1pKQogKwkgIHsKICsJICAgIG9mZnNldF9pdGVt ICo9IGFycmF5X3NpemVfYXJyYXlbaV07CkBAIC03ODM5LDEwICs3ODc2LDcgQEAgaW5kZXggMjky NjQ2NS4uNGM2ZGU3OCAxMDA2NDQKICsJICAgIGVsc2UKICsJICAgICAgb2Zmc2V0X2J5dGUgKz0g c3Vic2NyaXB0X2FycmF5W2ldICogYnl0ZV9zdHJpZGVfYXJyYXlbaV07CiArCSAgfQotIAotLQlm b3IgKGkgPSBuZGltZW5zaW9ucyAtIDE7IGkgPiAwOyAtLWkpCi0tCSAgb2Zmc2V0X2l0ZW0gPQot LQkgICAgYXJyYXlfc2l6ZV9hcnJheVtpIC0gMV0gKiBvZmZzZXRfaXRlbSArIHN1YnNjcmlwdF9h cnJheVtpIC0gMV07CisrCiArCWVsZW1lbnRfc2l6ZSA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdF VF9UWVBFICh0bXBfdHlwZSkpOwogKwlvZmZzZXRfYnl0ZSArPSBvZmZzZXRfaXRlbSAqIGVsZW1l bnRfc2l6ZTsKICAKQEAgLTc4NTcsNyArNzg5MSw3NCBAQCBpbmRleCAyOTI2NDY1Li40YzZkZTc4 IDEwMDY0NAogICAgICAgIH0KICAKICAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLUBAIC0y NTk4LDcgKzI3MDUsNyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX2FkZHJlc3MgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCAqcG9zLAorQEAgLTIyOTEsMTQgKzIzOTgsMjIgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgICAgICAgaWYgKGV4 cGVjdF90eXBlICYmIFRZUEVfQ09ERSAoZXhwZWN0X3R5cGUpID09IFRZUEVfQ09ERV9QVFIpCisg CWV4cGVjdF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAoZXhwZWN0X3R5 cGUpKTsKKyAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChleHBlY3RfdHlwZSwgZXhwLCBw b3MsIG5vc2lkZSk7CisrICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFu dXAsIDApOworKyAgICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFy ZzEpKTsKKyAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwor ICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0RQVFIKKyAJICB8 fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NRU1CRVJQVFIpCisgCWVycm9yIChfKCJB dHRlbXB0IHRvIGRlcmVmZXJlbmNlIHBvaW50ZXIgdG8gbWVtYmVyIHdpdGhvdXQgYW4gb2JqZWN0 IikpOworICAgICAgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQorLQlnb3RvIG5vc2lkZXJldDsK KysJeworKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKwkgIGdvdG8gbm9zaWRlcmV0Owor Kwl9CisgICAgICAgaWYgKHVub3BfdXNlcl9kZWZpbmVkX3AgKG9wLCBhcmcxKSkKKy0JcmV0dXJu IHZhbHVlX3hfdW5vcCAoYXJnMSwgb3AsIG5vc2lkZSk7CisrCXsKKysJICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKKysJICByZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsK KysJfQorICAgICAgIGVsc2UgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykK KyAJeworIAkgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CitAQCAt MjMwNywxMiArMjQyMiwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKKyAJICAvKiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkg dG8gZ2V0IHRoZSAxc3QgZWx0LiAgKi8KKyAJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfQVJSQVkKKyAJICAgICkKKy0JICAgIHJldHVybiB2YWx1ZV96ZXJvIChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSwKKy0JCQkgICAgICAgbHZhbF9tZW1vcnkpOworKwkgICAgeworKwkg ICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysJICAgICAgcmV0dXJuIHZhbHVlX3plcm8g KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAorKwkJCQkgbHZhbF9tZW1vcnkpOworKwkgICAgfQor IAkgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKKy0JICAgIC8q IEdEQiBhbGxvd3MgZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLworLQkgICAgcmV0dXJuIHZhbHVl X3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCistCQkJICAg ICAgIGx2YWxfbWVtb3J5KTsKKysJICAgIHsKKysJICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFp bik7CisrCSAgICAgIC8qIEdEQiBhbGxvd3MgZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLworKwkg ICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWls dGluX2ludCwKKysJCQkJIGx2YWxfbWVtb3J5KTsKKysJICAgIH0KKyAJICBlbHNlCisgCSAgICBl cnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUu IikpOworIAl9CitAQCAtMjMyMiw5ICsyNDQzLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJs ZXMgYXJlIHJhcmUgZW5vdWdoIHRoYXQKKyAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNl ZW0gdG8gYmUgYSBtaXN0YWtlLiAgKi8KKyAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfSU5UKQorLQlyZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChleHAt PmdkYmFyY2gpLT5idWlsdGluX2ludCwKKy0JCQkgICAgICAoQ09SRV9BRERSKSB2YWx1ZV9hc19h ZGRyZXNzIChhcmcxKSk7CistICAgICAgcmV0dXJuIHZhbHVlX2luZCAoYXJnMSk7CisrCXsKKysJ ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysJICByZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVp bHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJKENPUkVfQUREUikg dmFsdWVfYXNfYWRkcmVzcyAoYXJnMSkpOworKwl9CisrICAgICAgYXJnMSA9IHZhbHVlX2luZCAo YXJnMSk7CisrICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAgICAgcmV0dXJuIGFy ZzE7CisgCisgICAgIGNhc2UgVU5PUF9BRERSOgorICAgICAgIC8qIEMrKzogY2hlY2sgZm9yIGFu ZCBoYW5kbGUgcG9pbnRlciB0byBtZW1iZXJzLiAgKi8KK0BAIC0yNTk4LDcgKzI3MjQsNyBAQCBl dmFsdWF0ZV9zdWJleHBfZm9yX2FkZHJlc3MgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAq cG9zLAogICAgICAgICgqcG9zKSArPSA1ICsgQllURVNfVE9fRVhQX0VMRU0gKHRlbSArIDEpOwog ICAgICAgIHggPSB2YWx1ZV9hZ2dyZWdhdGVfZWx0IChleHAtPmVsdHNbcGMgKyAxXS50eXBlLAog IAkJCSAgICAgICAmZXhwLT5lbHRzW3BjICsgM10uc3RyaW5nLApAQCAtNzg2Niw3ICs3OTY3LDcg QEAgaW5kZXggMjkyNjQ2NS4uNGM2ZGU3OCAxMDA2NDQKICAgICAgICBpZiAoeCA9PSBOVUxMKQog IAllcnJvciAoXygiVGhlcmUgaXMgbm8gZmllbGQgbmFtZWQgJXMiKSwgJmV4cC0+ZWx0c1twYyAr IDNdLnN0cmluZyk7CiAgICAgICAgcmV0dXJuIHg7Ci1AQCAtMjY0Myw3ICsyNzUwLDcgQEAgZXZh bHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAt MjY0Myw3ICsyNzY5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBl eHByZXNzaW9uICpleHAsCiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpA QCAtNzg3NSw3ICs3OTc2LDcgQEAgaW5kZXggMjkyNjQ2NS4uNGM2ZGU3OCAxMDA2NDQKICAgIHN0 cnVjdCBzeW1ib2wgKnZhcjsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogIAotQEAgLTI2NTQsMTIg KzI3NjEsMTcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNz aW9uICpleHAsCitAQCAtMjY1NCwxMiArMjc4MCwxNyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9j b2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZB Ul9WQUxVRToKICAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CkBAIC03ODk0 LDcgKzc5OTUsNyBAQCBpbmRleCAyOTI2NDY1Li40YzZkZTc4IDEwMDY0NAogIAkgIHJldHVybiB2 YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSks CiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAtMjcxMSw5ICsyODIzLDEzIEBAIGV2YWx1YXRlX3N1 YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKK0BAIC0y NzExLDkgKzI4NDIsMTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCAqcG9zKQogIAogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAg ICAoKnBvcykgKz0gNDsKQEAgLTEwOTk1LDcgKzExMDk2LDcgQEAgaW5kZXggMGY5ZDQ0ZS4uYzkx MGU4OCAxMDA2NDQKICAgIC8qIFdlIGRpZG4ndCBmaW5kIGl0OyBwcmludCB0aGUgcmF3IGRhdGEu ICAqLwogICAgaWYgKHZiaXQpCiBkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtbmF0LmMgYi9n ZGIvaTM4Ni1saW51eC1uYXQuYwotaW5kZXggZmU4NDhmZi4uMTcwZTZjZCAxMDA2NDQKK2luZGV4 IGZlODQ4ZmYuLjkwNWRjYzMgMTAwNjQ0CiAtLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYwogKysr IGIvZ2RiL2kzODYtbGludXgtbmF0LmMKIEBAIC01ODYsNiArNTg2LDggQEAgaTM4Nl9saW51eF9z dG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCkBAIC0xMTA1 NCw3ICsxMTE1NSw3IEBAIGluZGV4IGZlODQ4ZmYuLjE3MGU2Y2QgMTAwNjQ0CiAgICByZXR1cm4g aTM4Nl9saW51eF9kcl9nZXQgKGluZmVyaW9yX3B0aWQsIERSX1NUQVRVUyk7CiAgfQogIAotKy8q IFVuc2V0IFZBTFVFIGJpdHMgaW4gRFJfU1RBVFVTIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAg Ki8KKysvKiBVbnNldCBNQVNLIGJpdHMgaW4gRFJfU1RBVFVTIGluIGFsbCBMV1BzIG9mIExXUF9M SVNULiAgKi8KICsKICtzdGF0aWMgdm9pZAogK2kzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1 bnNpZ25lZCBsb25nIG1hc2spCkBAIC0xMTEwMCw3ICsxMTIwMSw3IEBAIGluZGV4IGZlODQ4ZmYu LjE3MGU2Y2QgMTAwNjQ0CiAgCiAgICAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJhY2UgcmVz dW1lIG1ldGhvZC4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmMgYi9nZGIvaTM4Ni1u YXQuYwotaW5kZXggYWIxYmQ4YS4uZWUzMzBiOCAxMDA2NDQKK2luZGV4IDMyNWI0ZGYuLjYzMWNj ZDYgMTAwNjQ0CiAtLS0gYS9nZGIvaTM4Ni1uYXQuYwogKysrIGIvZ2RiL2kzODYtbmF0LmMKIEBA IC0xMzcsOCArMTM3LDExIEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlIGkzODZfZHJfbG93OwpA QCAtMTExNTcsNyArMTEyNTgsNyBAQCBpbmRleCBhYjFiZDhhLi5lZTMzMGI4IDEwMDY0NAogIC8q IFJldHVybiBub24temVybyBpZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3Rh cnRzIGF0CiAgICAgYWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAg Ki8KICAKLUBAIC01NzUsMjggKzU5OCw3IEBAIHN0YXRpYyBpbnQKK0BAIC01NzgsMjggKzYwMSw3 IEBAIHN0YXRpYyBpbnQKICBpMzg2X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKICB7CiAg ICBDT1JFX0FERFIgYWRkciA9IDA7CkBAIC0xMTE4Nyw3ICsxMTI4OCw3IEBAIGluZGV4IGFiMWJk OGEuLmVlMzMwYjggMTAwNjQ0CiAgfQogIAogIC8qIEluc2VydCBhIGhhcmR3YXJlLWFzc2lzdGVk IGJyZWFrcG9pbnQgYXQgQlBfVEdULT5wbGFjZWRfYWRkcmVzcy4KLUBAIC02OTAsNiArNjkyLDcg QEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorQEAgLTY5Myw2 ICs2OTUsNyBAQCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKnQpCiAg ICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3M7 CiAgICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IGkzODZfaW5zZXJ0X3dhdGNocG9pbnQ7CiAg ICB0LT50b19yZW1vdmVfd2F0Y2hwb2ludCA9IGkzODZfcmVtb3ZlX3dhdGNocG9pbnQ7CkBAIC0x MTIzNiw2ICsxMTMzNywzOSBAQCBpbmRleCBmNDliOWY2Li5jZDMxOTU4IDEwMDY0NAogICAgICBp bnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoOwogICAgfTsKICAKK2RpZmYgLS1naXQgYS9nZGIvaW5m Y2FsbC5jIGIvZ2RiL2luZmNhbGwuYworaW5kZXggYzlkOThjZi4uMjc3Mzk5YSAxMDA2NDQKKy0t LSBhL2dkYi9pbmZjYWxsLmMKKysrKyBiL2dkYi9pbmZjYWxsLmMKK0BAIC00NDEsNiArNDQxLDcg QEAgY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBpbnQgbmFy Z3MsIHN0cnVjdCB2YWx1ZSAqKmFyZ3MpCisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAg IHN0cnVjdCBicmVha3BvaW50ICp0ZXJtaW5hdGVfYnAgPSBOVUxMOworICAgc3RydWN0IG1pbmlt YWxfc3ltYm9sICp0bTsKKysgIHN0cnVjdCBjbGVhbnVwICp0ZXJtaW5hdGVfYnBfY2xlYW51cCA9 IE5VTEw7CisgICBwdGlkX3QgY2FsbF90aHJlYWRfcHRpZDsKKyAgIHN0cnVjdCBnZGJfZXhjZXB0 aW9uIGU7CisgICBjb25zdCBjaGFyICpuYW1lOworQEAgLTc3Miw3ICs3NzMsNyBAQCBjYWxsX2Z1 bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIGludCBuYXJncywgc3RydWN0 IHZhbHVlICoqYXJncykKKyAKKyAgIC8qIFJlZ2lzdGVyIGEgY2xlYW4tdXAgZm9yIHVud2luZF9v bl90ZXJtaW5hdGluZ19leGNlcHRpb25fYnJlYWtwb2ludC4gICovCisgICBpZiAodGVybWluYXRl X2JwKQorLSAgICBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKHRlcm1pbmF0ZV9icCk7 CisrICAgIHRlcm1pbmF0ZV9icF9jbGVhbnVwID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3Bv aW50ICh0ZXJtaW5hdGVfYnApOworIAorICAgLyogLSBTTklQIC0gU05JUCAtIFNOSVAgLSBTTklQ IC0gU05JUCAtIFNOSVAgLSBTTklQIC0gU05JUCAtIFNOSVAgLQorICAgICAgSWYgeW91J3JlIGxv b2tpbmcgdG8gaW1wbGVtZW50IGFzeW5jaHJvbm91cyBkdW1teS1mcmFtZXMsIHRoZW4KK0BAIC05 ODcsNiArOTg4LDExIEBAIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRvbmUgZXhlY3V0aW5nLCBHREIg d2lsbCBzaWxlbnRseSBzdG9wLiIpLAorICAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sIF8oIi4uLiBzaG91bGQgbm90IGJlIGhlcmUiKSk7CisgICAgIH0KKyAKKysgIC8q IElmIHdlIGdldCBoZXJlIGFuZCB0aGUgc3RkOjp0ZXJtaW5hdGUoKSBicmVha3BvaW50IGhhcyBi ZWVuIHNldCwKKysgICAgIGl0IGhhcyB0byBiZSBjbGVhbmVkIG1hbnVhbGx5LiAgKi8KKysgIGlm ICh0ZXJtaW5hdGVfYnApCisrICAgIGRvX2NsZWFudXBzICh0ZXJtaW5hdGVfYnBfY2xlYW51cCk7 CisrCisgICAvKiBJZiB3ZSBnZXQgaGVyZSB0aGUgY2FsbGVkIEZVTkNUSU9OIHJhbiB0byBjb21w bGV0aW9uLAorICAgICAgYW5kIHRoZSBkdW1teSBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIHBvcHBl ZC4gICovCisgCiBkaWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCiBpbmRl eCA5ZTk4MjkwLi5mYWIxODkyIDEwMDY0NAogLS0tIGEvZ2RiL2luZmNtZC5jCkBAIC0xMTM0OSw3 ICsxMTQ4Myw3IEBAIGluZGV4IGYxYjVkMTcuLjMxYWRkN2QgMTAwNjQ0CiAgCiAgZXh0ZXJuIHZv aWQgbm90aWNlX25ld19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7CiBkaWZmIC0tZ2l0IGEv Z2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCi1pbmRleCAxYTgzYTI1Li4yZWUyMTY0IDEwMDY0 NAoraW5kZXggZmY3YzZiOS4uOWQyOWIxNSAxMDA2NDQKIC0tLSBhL2dkYi9pbmZydW4uYwogKysr IGIvZ2RiL2luZnJ1bi5jCiBAQCAtNDUsNiArNDUsOCBAQApAQCAtMTEzOTIsNyArMTE1MjYsMjYg QEAgaW5kZXggMWE4M2EyNS4uMmVlMjE2NCAxMDA2NDQKICAgICAgICAvKiBUaGlzIGNhdXNlcyB0 aGUgZXZlbnRwb2ludHMgYW5kIHN5bWJvbCB0YWJsZSB0byBiZSByZXNldC4KICAgICAgICAgICBN dXN0IGRvIHRoaXMgbm93LCBiZWZvcmUgdHJ5aW5nIHRvIGRldGVybWluZSB3aGV0aGVyIHRvCiAg ICAgICAgICAgc3RvcC4gICovCi1AQCAtMzQ2OCwyMyArMzQ4MCwzMyBAQCBwcm9jZXNzX2V2ZW50 X3N0b3BfdGVzdDoKK0BAIC0yODQ1LDYgKzI4NTcsOSBAQCB0YXJnZXRzIHNob3VsZCBhZGQgbmV3 IHRocmVhZHMgdG8gdGhlIHRocmVhZCBsaXN0IHRoZW1zZWx2ZXMgaW4gbm9uLXN0b3AgbW9kZS4i KQorICAgICB7CisgICAgICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJlYWRf cmVnY2FjaGUgKGVjcy0+cHRpZCk7CisgICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBn ZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOworKyAgICAgIHN0cnVjdCBjbGVhbnVwICpvbGRf Y2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7CisrCisrICAgICAgaW5mZXJpb3JfcHRpZCA9 IGVjcy0+cHRpZDsKKyAKKyAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJp bmZydW46IHN0b3BfcGMgPSAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRy ZXNzIChnZGJhcmNoLCBzdG9wX3BjKSk7CitAQCAtMjg2MSw2ICsyODc2LDggQEAgdGFyZ2V0cyBz aG91bGQgYWRkIG5ldyB0aHJlYWRzIHRvIHRoZSB0aHJlYWQgbGlzdCB0aGVtc2VsdmVzIGluIG5v bi1zdG9wIG1vZGUuIikKKyAgICAgICAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mcnVuOiAobm8gZGF0YSBh ZGRyZXNzIGF2YWlsYWJsZSlcbiIpOworIAl9CisrCisrICAgICAgZG9fY2xlYW51cHMgKG9sZF9j aGFpbik7CisgICAgIH0KKyAKKyAgIGlmIChzdGVwcGluZ19wYXN0X3NpbmdsZXN0ZXBfYnJlYWtw b2ludCkKK0BAIC0zNDY4LDIzICszNDg1LDMzIEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0Ogog IAogIAllY3MtPmV2ZW50X3RocmVhZC0+c3RlcHBpbmdfb3Zlcl9icmVha3BvaW50ID0gMTsKICAK QEAgLTExNDM4LDcgKzExNTkxLDcgQEAgaW5kZXggMWE4M2EyNS4uMmVlMjE2NCAxMDA2NDQKICAJ a2VlcF9nb2luZyAoZWNzKTsKICAJcmV0dXJuOwogIAotQEAgLTM0OTYsNiArMzUxOCw1MyBAQCBp bmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdq bXBfdGFyZ2V0KVxuIik7CitAQCAtMzQ5Niw2ICszNTIzLDUzIEBAIGluZnJ1bjogQlBTVEFUX1dI QVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsK ICAJZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQg IT0gTlVMTCk7CiAgCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3Ro cmVhZCk7CiAgCkBAIC0xMTQ5Miw3ICsxMTY0NSw3IEBAIGluZGV4IDFhODNhMjUuLjJlZTIxNjQg MTAwNjQ0CiAgCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAxOwogIAlwcmludF9zdG9w X3JlYXNvbiAoRU5EX1NURVBQSU5HX1JBTkdFLCAwKTsKICAJc3RvcF9zdGVwcGluZyAoZWNzKTsK LUBAIC00NTAwLDYgKzQ1NjksOTYgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCitAQCAtNDUwMCw2ICs0NTc0 LDk2IEBAIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIHBjKQogICAgICBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRf cGMgKGdkYmFyY2gsIHBjLCBicF9sb25nam1wX3Jlc3VtZSk7CiAgfQogIApAQCAtMTE1ODksNyAr MTE3NDIsNyBAQCBpbmRleCAxYTgzYTI1Li4yZWUyMTY0IDEwMDY0NAogIHN0YXRpYyB2b2lkCiAg c3RvcF9zdGVwcGluZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCiAgewot QEAgLTQ1NjgsNiArNDcyNyw4IEBAIGtlZXBfZ29pbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJv bF9zdGF0ZSAqZWNzKQorQEAgLTQ1NjgsNiArNDczMiw4IEBAIGtlZXBfZ29pbmcgKHN0cnVjdCBl eGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogIAkgICAgfQogIAkgIGlmIChlLnJlYXNvbiA8 IDApCiAgCSAgICB7CkBAIC0xMjE2NSwxMCArMTIzMTgsMjIgQEAgaW5kZXggYTg0MDAzZi4uOTI0 YzFjNSAxMDA2NDQKICAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzLAkvKiBzeW1fb2Zmc2V0czog ZHVtbXkgRklYTUUgdGlsIGltcGxlbSBzeW0gcmVsb2MgKi8KICAgIGRlZmF1bHRfc3ltZmlsZV9z ZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCiBk aWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYwotaW5kZXggOGRjY2E3 MC4uNGIyNWE1YSAxMDA2NDQKK2luZGV4IDhkY2NhNzAuLmU1NDQyY2EgMTAwNjQ0CiAtLS0gYS9n ZGIvb2JqZmlsZXMuYwogKysrIGIvZ2RiL29iamZpbGVzLmMKLUBAIC03MzEsNiArNzMxLDIwIEBA IGhhdmVfcGFydGlhbF9zeW1ib2xzICh2b2lkKQorQEAgLTYzNCw2ICs2MzQsMTEgQEAgb2JqZmls ZV9yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNl dHMgKm5ld19vZmZzZXRzKQorICAgICB9CisgICB9CisgCisrICAvKiBBbHJlYWQgUVVJQ0tfQURE Uk1BUCB0aXNlbGYgYXNzdW1lcyBhbGwgc2VjdGlvbnMgaGF2ZSB0aGUgc2FtZSBvZmZzZXQuICAq LworKyAgaWYgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXApCisrICAgIGFkZHJtYXBfcmVsb2NhdGUg KG9iamZpbGUtPnF1aWNrX2FkZHJtYXAsCisrCQkgICAgICBBTk9GRlNFVCAoZGVsdGEsIFNFQ1Rf T0ZGX1RFWFQgKG9iamZpbGUpKSk7CisrCisgICB7CisgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJv bCAqKnBzeW07CisgCitAQCAtNzMxLDYgKzczNiwyMCBAQCBoYXZlX3BhcnRpYWxfc3ltYm9scyAo dm9pZCkKICAgICAgaWYgKG9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2ZwKSkKICAgICAg ICByZXR1cm4gMTsKICAgIH0KQEAgLTE4MDE0LDcgKzE4MTc5LDcgQEAgaW5kZXggNDljMDQzNy4u ODRhNDc2ZSAxMDA2NDQKICsgIHJldHVybiAxOwogK30KIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9u L3B5LXZhbHVlLmMgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLWluZGV4IDU4YmNlZTMuLmIyZTdi N2QgMTAwNjQ0CitpbmRleCAwMTQ2NTkzLi5iODJmY2I2IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhv bi9weS12YWx1ZS5jCiArKysgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKIEBAIC0yNSw2ICsyNSw3 IEBACkBAIC0yMDA3MCw3ICsyMDIzNSw3IEBAIGluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0 CiAgICBjdXJyZW50X3RhcmdldC50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGRlYnVnX3RvX3N0 b3BwZWRfZGF0YV9hZGRyZXNzOwogICAgY3VycmVudF90YXJnZXQudG9fd2F0Y2hwb2ludF9hZGRy X3dpdGhpbl9yYW5nZSA9IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2U7CiBk aWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCi1pbmRleCBiMWNiODUyLi5h ZGZmOTQ2IDEwMDY0NAoraW5kZXggYjFjYjg1Mi4uM2MwNmViYSAxMDA2NDQKIC0tLSBhL2dkYi90 YXJnZXQuaAogKysrIGIvZ2RiL3RhcmdldC5oCiBAQCAtMzk1LDYgKzM5NSw3IEBAIHN0cnVjdCB0 YXJnZXRfb3BzCkBAIC0yMDA4MSw3ICsyMDI0NiwxNiBAQCBpbmRleCBiMWNiODUyLi5hZGZmOTQ2 IDEwMDY0NAogICAgICBpbnQgKCp0b19zdG9wcGVkX2J5X3dhdGNocG9pbnQpICh2b2lkKTsKICAg ICAgaW50IHRvX2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQ7CiAgICAgIGludCB0b19oYXZlX2Nv bnRpbnVhYmxlX3dhdGNocG9pbnQ7Ci1AQCAtMTE2Niw2ICsxMTY3LDE1IEBAIGV4dGVybiBjaGFy ICpub3JtYWxfcGlkX3RvX3N0ciAocHRpZF90IHB0aWQpOworQEAgLTExMjQsNyArMTEyNSw3IEBA IGV4dGVybiBjaGFyICpub3JtYWxfcGlkX3RvX3N0ciAocHRpZF90IHB0aWQpOworIC8qIEhhcmR3 YXJlIHdhdGNocG9pbnQgaW50ZXJmYWNlcy4gICovCisgCisgLyogUmV0dXJucyBub24temVybyBp ZiB3ZSB3ZXJlIHN0b3BwZWQgYnkgYSBoYXJkd2FyZSB3YXRjaHBvaW50IChtZW1vcnkgcmVhZCBv cgorLSAgIHdyaXRlKS4gICovCisrICAgd3JpdGUpLiAgT25seSB0aGUgSU5GRVJJT1JfUFRJRCB0 YXNrIGlzIGJlaW5nIHF1ZXJpZWQuICAqLworIAorICNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfYnlf d2F0Y2hwb2ludCBcCisgICAgKCpjdXJyZW50X3RhcmdldC50b19zdG9wcGVkX2J5X3dhdGNocG9p bnQpCitAQCAtMTE2NiwxNCArMTE2NywyNiBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19z dHIgKHB0aWRfdCBwdGlkKTsKICAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludChhZGRy LCBsZW4sIHR5cGUpCVwKICAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dhdGNocG9p bnQpIChhZGRyLCBsZW4sIHR5cGUpCiAgCkBAIC0yMDA5Nyw3ICsyMDI3MSwyMCBAQCBpbmRleCBi MWNiODUyLi5hZGZmOTQ2IDEwMDY0NAogICNkZWZpbmUgdGFyZ2V0X2luc2VydF9od19icmVha3Bv aW50KGdkYmFyY2gsIGJwX3RndCkgXAogICAgICAgKCpjdXJyZW50X3RhcmdldC50b19pbnNlcnRf aHdfYnJlYWtwb2ludCkgKGdkYmFyY2gsIGJwX3RndCkKICAKLUBAIC0xMjAzLDYgKzEyMTMsMjAg QEAgZXh0ZXJuIGludCB0YXJnZXRfc2VhcmNoX21lbW9yeSAoQ09SRV9BRERSIHN0YXJ0X2FkZHIs CisgI2RlZmluZSB0YXJnZXRfcmVtb3ZlX2h3X2JyZWFrcG9pbnQoZ2RiYXJjaCwgYnBfdGd0KSBc CisgICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV9od19icmVha3BvaW50KSAoZ2RiYXJj aCwgYnBfdGd0KQorIAorLSNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfZGF0YV9hZGRyZXNzKHRhcmdl dCwgeCkgXAorLSAgICAoKnRhcmdldC50b19zdG9wcGVkX2RhdGFfYWRkcmVzcykgKHRhcmdldCwg eCkKKysvKiBSZXR1cm4gbm9uLXplcm8gaWYgdGFyZ2V0IGtub3dzIHRoZSBkYXRhIGFkZHJlc3Mg d2hpY2ggdHJpZ2dlcmVkIHRoaXMKKysgICB0YXJnZXRfc3RvcHBlZF9ieV93YXRjaHBvaW50LCBp biBzdWNoIGNhc2UgcGxhY2UgaXQgdG8gKkFERFJfUC4gIE9ubHkgdGhlCisrICAgSU5GRVJJT1Jf UFRJRCB0YXNrIGlzIGJlaW5nIHF1ZXJpZWQuICAqLworKyNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRf ZGF0YV9hZGRyZXNzKHRhcmdldCwgYWRkcl9wKSBcCisrICAgICgqdGFyZ2V0LnRvX3N0b3BwZWRf ZGF0YV9hZGRyZXNzKSAodGFyZ2V0LCBhZGRyX3ApCisgCisgI2RlZmluZSB0YXJnZXRfd2F0Y2hw b2ludF9hZGRyX3dpdGhpbl9yYW5nZSh0YXJnZXQsIGFkZHIsIHN0YXJ0LCBsZW5ndGgpIFwKKyAg ICgqdGFyZ2V0LnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UpICh0YXJnZXQsIGFkZHIs IHN0YXJ0LCBsZW5ndGgpCitAQCAtMTIwMyw2ICsxMjE2LDIwIEBAIGV4dGVybiBpbnQgdGFyZ2V0 X3NlYXJjaF9tZW1vcnkgKENPUkVfQUREUiBzdGFydF9hZGRyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFVMT05HRVNUIHBhdHRlcm5fbGVuLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENPUkVfQUREUiAqZm91bmRfYWRkcnApOwogIApAQCAtMjAxMTgsNyAr MjAzMDUsNyBAQCBpbmRleCBiMWNiODUyLi5hZGZmOTQ2IDEwMDY0NAogIC8qIENvbW1hbmQgbG9n Z2luZyBmYWNpbGl0eS4gICovCiAgCiAgI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQocCkJCQkJ CQlcCi1AQCAtMTMyMiw2ICsxMzQ2LDE0IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X29wcyAqZmlu ZF90YXJnZXRfYmVuZWF0aCAoc3RydWN0IHRhcmdldF9vcHMgKik7CitAQCAtMTMyMiw2ICsxMzQ5 LDE0IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X29wcyAqZmluZF90YXJnZXRfYmVuZWF0aCAoc3Ry dWN0IHRhcmdldF9vcHMgKik7CiAgCiAgZXh0ZXJuIGNoYXIgKnRhcmdldF9nZXRfb3NkYXRhIChj b25zdCBjaGFyICp0eXBlKTsKICAKQEAgLTIwNDI3LDEzICsyMDYxNCwxMyBAQCBpbmRleCAwMDAw MDAwLi45OGIyZTc5CiArCS5sb25nCTB4ZWRjMDc4MzQJLyogMTk0OiBmcnNxcnRlcyBmMTQsZjE1 ICAgICAgICAgICovCiArCS5sb25nCTB4ZWRjMDc4MzUJLyogMTk4OiBmcnNxcnRlcy4gZjE0LGYx NSAgICAgICAgICovCiArCS5sb25nCTB4N2M0MzI3MWUJLyogMTljOiBpc2VsICAgIHIyLHIzLHI0 LDI4ICAgICAgICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXR5cGVkZWYtZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlw ZWRlZi1mb28uUworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS1wb2ludGVyLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50 ZXItZm9vLlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NmY3YTM5Citp bmRleCAwMDAwMDAwLi44M2ZhYWY2CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwotQEAgLTAsMCArMSw0NTUgQEAKLSsJ LmZpbGUJIng4Nl82NC12bGEtdHlwZWRlZi5jIgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKK0BAIC0wLDAgKzEsNDU3IEBACisrCS5maWxlCSJ4 ODZfNjQtdmxhLXBvaW50ZXIuYyIKICsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJvZ2Jp dHMKICsuTGRlYnVnX2FiYnJldjA6CiArCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0 cwpAQCAtMjA0NDYsNyArMjA2MzMsNyBAQCBpbmRleCAwMDAwMDAwLi42NmY3YTM5CiArCS50eXBl CWZvbywgQGZ1bmN0aW9uCiArZm9vOgogKy5MRkIyOgotKwkuZmlsZSAxICJ4ODZfNjQtdmxhLXR5 cGVkZWYuYyIKKysJLmZpbGUgMSAieDg2XzY0LXZsYS1wb2ludGVyLmMiCiArCS5sb2MgMSAyMiAw CiArCXB1c2hxCSVyYnAKICsuTENGSTA6CkBAIC0yMDYwMiw2ICsyMDc4OSw3IEBAIGluZGV4IDAw MDAwMDAuLjY2ZjdhMzkKICsJLnF1YWQJMHgwCiArCS5xdWFkCTB4MAogKwkuc2VjdGlvbgkuZGVi dWdfaW5mbworKy5MZGVidWdfcmVsYXRpdmU6CiArCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1 Z19zdGFydAogKy5MZGVidWdfc3RhcnQ6CiArCS52YWx1ZQkweDIKQEAgLTIwNjI0LDI3ICsyMDgx MiwyNSBAQCBpbmRleCAwMDAwMDAwLi42NmY3YTM5CiArCS5xdWFkCS5MRkIyCiArCS5xdWFkCS5M RkUyCiArCS5sb25nCS5MTFNUMAotKwkubG9uZwkweDgzCisrCS5sb25nCS5MdHlwZV9pbnQgLSAu TGRlYnVnX3JlbGF0aXZlCiArCS51bGViMTI4IDB4MwogKwkubG9uZwkuTEFTRjUKICsJLmJ5dGUJ MHgxCiArCS5ieXRlCTB4MTUKLSsJLmxvbmcJMHg4MworKwkubG9uZwkuTHR5cGVfaW50IC0gLkxk ZWJ1Z19yZWxhdGl2ZQogKwkuYnl0ZQkweDIKICsJLmJ5dGUJMHg5MQogKwkuc2xlYjEyOCAtNTIK LSsuTHRhZ190eXBlZGVmOgorKy5MdGFnX3BvaW50ZXI6CiArCS51bGViMTI4IDB4NAotKwkubG9u ZwkuTEFTRjYKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTcKLSsJLmxvbmcJLkx0YWdfYXJyYXlf dHlwZSAtIC5kZWJ1Z19pbmZvCisrCS5ieXRlCTB4OAkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJ LmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCS8qIERXX0FUX3R5cGUgKi8KICsJ LnVsZWIxMjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KICsJ LmxvbmcJLkxBU0YwCiArCS5ieXRlCTB4MQogKwkuYnl0ZQkweDE4CiArI2lmIDEKLSsJLmxvbmcJ Lkx0YWdfdHlwZWRlZiAtIC5kZWJ1Z19pbmZvCisrCS5sb25nCS5MdGFnX3BvaW50ZXIgLSAuZGVi dWdfaW5mbwogKyNlbHNlCiArCS8qIERlYnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGlu ZGlyZWN0aW9uLiAgKi8KICsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCkBA IC0yMDY2MywzNSArMjA4NDksNDIgQEAgaW5kZXggMDAwMDAwMC4uNjZmN2EzOQogKwkuc3RyaW5n CSJpIgogKwkuYnl0ZQkweDEKICsJLmJ5dGUJMHgxOQotKwkubG9uZwkweDgzCisrCS5sb25nCS5M dHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCiArCS5ieXRlCTB4MgogKwkuYnl0ZQkweDkxCiAr CS5zbGViMTI4IC0yMAogKwkuYnl0ZQkweDAKKysuTHR5cGVfaW50OgogKwkudWxlYjEyOCAweDcK ICsJLmJ5dGUJMHg0CiArCS5ieXRlCTB4NQogKwkuc3RyaW5nCSJpbnQiCiArLkx0YWdfYXJyYXlf dHlwZToKICsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90 eXBlKSAqLwotKwkubG9uZwkweGEwICsgKDJmIC0gMWYpCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1f cmVmNCAqLwotKwkubG9uZwkweDlkICsgKDJmIC0gMWYpCS8qIERXX0FUX3NpYmxpbmc6IERXX0ZP Uk1fcmVmNCAqLworKwkubG9uZwkuTHR5cGVfY2hhciAtIC5MZGVidWdfcmVsYXRpdmUKKysJLmxv bmcJLkx0eXBlX3Vsb25nIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF9zaWJsaW5nOiBEV19G T1JNX3JlZjQgKi8KICsxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTog c3RhcnQgKi8KICsJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KICszOgogKwkuYnl0ZQkweDk3 CS8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KKysjaWYgMQogKwkuYnl0ZQkweDYJLyog RFdfT1BfZGVyZWYgKi8KKysjZWxzZQorKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLworKyNl bmRpZgogKzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8K ICsJLnVsZWIxMjggMHg5Ci0rCS5sb25nCTB4OWQgKyAoMmIgLSAxYikJLyogRFdfQVRfdHlwZTog RFdfRk9STV9yZWY0ICovCisrCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQkv KiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KICsJLmJ5dGUJMHgzCiArCS5ieXRlCTB4OTEK ICsJLnNsZWIxMjggLTQwCiArCS5ieXRlCTB4NgogKwkuYnl0ZQkweDAKKysuTHR5cGVfdWxvbmc6 CiArCS51bGViMTI4IDB4YQogKwkuYnl0ZQkweDgKICsJLmJ5dGUJMHg3CisrLkx0eXBlX2NoYXI6 CiArCS51bGViMTI4IDB4YgogKwkuYnl0ZQkweDEKICsJLmJ5dGUJMHg2CkBAIC0yMDc1NiwxNCAr MjA5NDksMTAgQEAgaW5kZXggMDAwMDAwMC4uNjZmN2EzOQogKwkudWxlYjEyOCAweGEKICsJLmJ5 dGUJMHgwCiArCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMHgxNgorKwku dWxlYjEyOCAweDQJLyogLkx0YWdfcG9pbnRlciBhYmJyZXYgKi8KKysJLnVsZWIxMjggMHgwZgkv KiBEV19UQUdfcG9pbnRlcl90eXBlICovCiArCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJ LnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4 IDB4M2IKKysJLnVsZWIxMjggMHgwYgogKwkudWxlYjEyOCAweGIKICsJLnVsZWIxMjggMHg0OQog KwkudWxlYjEyOCAweDEzCkBAIC0yMDg3Nyw3ICsyMTA2Niw3IEBAIGluZGV4IDAwMDAwMDAuLjY2 ZjdhMzkKICsuTEFTRjU6CiArCS5zdHJpbmcJInNpemUiCiArLkxBU0YzOgotKwkuc3RyaW5nCSJ4 ODZfNjQtdmxhLXR5cGVkZWYuYyIKKysJLnN0cmluZwkieDg2XzY0LXZsYS1wb2ludGVyLmMiCiAr LkxBU0Y2OgogKwkuc3RyaW5nCSJhcnJheV90IgogKy5MQVNGMToKQEAgLTIwODg4LDE1ICsyMTA3 NywxNSBAQCBpbmRleCAwMDAwMDAwLi42NmY3YTM5CiArCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIw MDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgogKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAw ODExMDUgKFJlZCBIYXQgNC4zLjItNykiCiArCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixA cHJvZ2JpdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEt dHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jCiBuZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjgwOWM0ZQoraW5kZXggMDAwMDAwMC4uZmUyYzhm NwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXR5cGVkZWYuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50 ZXIuYwogQEAgLTAsMCArMSw0MyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCiArCi0rICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjA5Mzcs MTIgKzIxMTI2LDEyIEBAIGluZGV4IDAwMDAwMDAuLmI4MDljNGUKICt9CiArCiArI2VuZGlmCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjA1NDExZQoraW5kZXggMDAwMDAwMC4uZDI0M2NmMQog LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5 cGVkZWYuZXhwCi1AQCAtMCwwICsxLDY0IEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L3g4Nl82NC12bGEtcG9pbnRlci5leHAKK0BAIC0wLDAgKzEsNjYgQEAKICsjIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAg LTIwOTU4LDE0ICsyMTE0NywxMiBAQCBpbmRleCAwMDAwMDAwLi5iMDU0MTFlCiArIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rIyBUZXN0IERXX0FUX2RhdGFfbG9jYXRpb24gYWNjZXNz ZWQgdGhyb3VnaCBEV19UQUdfdHlwZWRlZiBpbnRlcm1lZGlhdGUuCi0rCiAraWYgIVtpc3Rhcmdl dCAieDg2XzY0LSotKiJdIHRoZW4gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5h cmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCisr ICAgIHZlcmJvc2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4 cCB0ZXN0IG1hZGUgb25seSBmb3IgeDg2XzY0LiIKICsgICAgcmV0dXJuCiArfQogKwotK3NldCB0 ZXN0ZmlsZSB4ODZfNjQtdmxhLXR5cGVkZWYKKytzZXQgdGVzdGZpbGUgeDg2XzY0LXZsYS1wb2lu dGVyCiArc2V0IHNyY2FzbWZpbGUgJHt0ZXN0ZmlsZX0tZm9vLlMKICtzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5jCiArc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpA QCAtMjA5ODUsNyArMjExNzIsNyBAQCBpbmRleCAwMDAwMDAwLi5iMDU0MTFlCiArZ2RiX2xvYWQg JHtiaW5maWxlfQogKwogK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB4ODZfNjQt dmxhLXR5cGVkZWYKKysgICAgdW50ZXN0ZWQgeDg2XzY0LXZsYS1wb2ludGVyCiArICAgIHJldHVy biAtMQogK30KICsKQEAgLTIwOTkzLDExMCArMjExODAsNzUyIEBAIGluZGV4IDAwMDAwMDAuLmIw NTQxMWUKICsKICtnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtfaGVyZSIKICsKLStn ZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3QiICJmaXJzdDogd2hhdGlzIGFy cmF5IgorK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxb dmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKKytnZGJfdGVzdCAicHR5cGUgYXJy YXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5 IgogKwotK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJm aXJzdDogcHR5cGUgYXJyYXkiCisrZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBlID0gY2hh ciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyAqYXJyYXkiCisrZ2RiX3Rlc3QgInB0eXBlICph cnJheSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgKmFycmF5IgogKwot K2dkYl90ZXN0ICJwIGFycmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2Ri X3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVz dCAicCBhcnJheVxbM1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJw IGFycmF5XFs0XF0iICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCisrZ2RiX3Rlc3QgInAgKCph cnJheSlcWzFcXSIgIlxcJFxbMC05XF0gPSAxICdcXFxcMDAxJyIKKytnZGJfdGVzdCAicCAoKmFy cmF5KVxbMlxdIiAiXFwkXFswLTlcXSA9IDIgJ1xcXFwwMDInIgorK2dkYl90ZXN0ICJwICgqYXJy YXkpXFszXF0iICJcXCRcWzAtOVxdID0gMyAnXFxcXDAwMyciCisrZ2RiX3Rlc3QgInAgKCphcnJh eSlcWzRcXSIgIlxcJFxbMC05XF0gPSA0ICdcXFxcMDA0JyIKICsKICtnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiYnJlYWtfaGVyZSIKICsKLStnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlw ZSA9IGFycmF5X3QiICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUg YXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKLWluZGV4IDk4ZDRkMzUuLmY5OGE2NTYgMTAwNjQ0Ci0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYXJyYXlpZHguYwotQEAgLTE3LDYgKzE3LDEzIEBACi0gCi0gaW50IGFycmF5 W10gPSB7MSwgMiwgMywgNH07Ci0gCi0rI2lmZGVmIF9fR05VQ19fCi0rc3RydWN0Ci0rICB7Ci0r ICAgIGludCBhWzBdOwotKyAgfSB1bmJvdW5kOwotKyNlbmRpZgotKwotIGludAotIG1haW4gKHZv aWQpCi0gewotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLWluZGV4IDcxY2U0YWEuLmFm MGU1ZjggMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLUBAIC01OSw0ICs1OSwx MiBAQCBnZGJfdGVzdCAicHJpbnQgYXJyYXkiIFwKLSAgICAgICAgICAiXFx7XFxcWzBcXFxdID0g MSwgXFxcWzFcXFxdID0gMiwgXFxcWzJcXFxdID0gMywgXFxcWzNcXFxdID0gNFxcfSIgXAotICAg ICAgICAgICJQcmludCBhcnJheSB3aXRoIGFycmF5LWluZGV4ZXMgb24iCi0gCi0tCi0rc2V0IHRl c3QgInAgdW5ib3VuZC5hID09ICZ1bmJvdW5kLmFcWzBcXSIKLStnZGJfdGVzdF9tdWx0aXBsZSAk dGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiID0gMVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3Mg JHRlc3QKLSsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCBcInVuYm91bmRcIiBpbiBjdXJyZW50 IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJdW5zdXBwb3J0ZWQgIiR0ZXN0IChubyBH Q0MpIgotKyAgICB9Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVs cC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCi1pbmRleCBkNzZjYzM2Li40 OTZmZjE4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotQEAgLTYwNiw3ICs2MDYsNyBAQCBn ZGJfdGVzdCAiaGVscCBzdGVwaSIgIlN0ZXAgb25lIGluc3RydWN0aW9uIGV4YWN0bHlcLlxbXHJc blxdK0FyZ3VtZW50IE4gbWVhbnMgZAotIGdkYl90ZXN0ICJoZWxwIHNpZ25hbCIgIkNvbnRpbnVl IHByb2dyYW0gZ2l2aW5nIGl0IHNpZ25hbC4qIiAiaGVscCBzaWduYWwiCi0gIyB0ZXN0IGhlbHAg c291cmNlCi0gIyB2eGdkYiByZWFkcyAudnhnZGJpbml0Ci0tZ2RiX3Rlc3QgImhlbHAgc291cmNl IiAiUmVhZCBjb21tYW5kcyBmcm9tIGEgZmlsZSBuYW1lZCBGSUxFXC5cW1xyXG5cXStPcHRpb25h bCAtdiBzd2l0Y2ggXFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxcKSBjYXVzZXMgZWFjaCBjb21tYW5k IGluXFtcclxuXF0rRklMRSB0byBiZSBlY2hvZWQgYXMgaXQgaXMgZXhlY3V0ZWRcLlxbXHJcblxd K05vdGUgdGhhdCB0aGUgZmlsZSBcIlxbXlwiXF0qXCIgaXMgcmVhZCBhdXRvbWF0aWNhbGx5IGlu IHRoaXMgd2F5XFtcclxuXF0rd2hlbiBHREIgaXMgc3RhcnRlZFwuIiAiaGVscCBzb3VyY2UiCi0r Z2RiX3Rlc3QgImhlbHAgc291cmNlIiAiUmVhZCBjb21tYW5kcyBmcm9tIGEgZmlsZSBuYW1lZCBG SUxFXC5cW1xyXG5cXStPcHRpb25hbCAtdiBzd2l0Y2ggXFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxc KSBjYXVzZXMgZWFjaCBjb21tYW5kIGluXFtcclxuXF0rRklMRSB0byBiZSBlY2hvZWQgYXMgaXQg aXMgZXhlY3V0ZWRcLlxbXHJcblxdK05vdGUgdGhhdCB0aGUgZmlsZSBcIlxbXlwiXF0qXCIgaXMg cmVhZCBhdXRvbWF0aWNhbGx5IGluIHRoaXMgd2F5XFtcclxuXF0rd2hlbiBHREIgaXMgc3RhcnRl ZFwuXFtcclxuXF0rT3B0aW9uYWwgLXAgc3dpdGNoIFxcKGJlZm9yZSB0aGUgZmlsZW5hbWVcXCkg Y2F1c2VzIEZJTEUgdG8gYmUgZXZhbHVhdGVkXFtcclxuXF0rYXMgUHl0aG9uIGNvZGVcLiIgImhl bHAgc291cmNlIgotICMgdGVzdCBoZWxwIHN0YWNrCi0gdGVzdF9jbGFzc19oZWxwICJzdGFjayIg ewotICAgICAiRXhhbWluaW5nIHRoZSBzdGFja1wuLipcW1xyXG5cXSsiCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLWZ1bmMuYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC1mdW5jLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi4xYTAyMjBlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2xpbmVuby1tYWtldXAtZnVuYy5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIg InR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyBh cnJheSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxb NzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKICsKLSt2b2lkCi0rZnVuYyAodm9pZCkKLSt7 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmMKKytnZGJfdGVzdCAid2hh dGlzICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyAqYXJy YXkiCisrZ2RiX3Rlc3QgInB0eXBlICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJz ZWNvbmQ6IHB0eXBlICphcnJheSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS10eXBlZGVmLWZvby5TCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u YmIyMGU5OAoraW5kZXggMDAwMDAwMC4uNjZmN2EzOQogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmMKLUBAIC0wLDAgKzEsMzUgQEAKLSsv KiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAg IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtdHlwZWRlZi1mb28uUworQEAgLTAsMCArMSw0NTUgQEAKKysJLmZpbGUJIng4Nl82 NC12bGEtdHlwZWRlZi5jIgorKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwor Ky5MZGVidWdfYWJicmV2MDoKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCisr LkxkZWJ1Z19pbmZvMDoKKysJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCisrLkxk ZWJ1Z19saW5lMDoKKysJLnRleHQKKysuTHRleHQwOgorKy5nbG9ibCBmb28KKysJLnR5cGUJZm9v LCBAZnVuY3Rpb24KKytmb286CisrLkxGQjI6CisrCS5maWxlIDEgIng4Nl82NC12bGEtdHlwZWRl Zi5jIgorKwkubG9jIDEgMjIgMAorKwlwdXNocQklcmJwCisrLkxDRkkwOgorKwltb3ZxCSVyc3As ICVyYnAKKysuTENGSTE6CisrCXN1YnEJJDY0LCAlcnNwCisrLkxDRkkyOgorKwltb3ZsCSVlZGks IC0zNiglcmJwKQorKwkubG9jIDEgMjIgMAorKwltb3ZxCSVyc3AsICVyYXgKKysJbW92cQklcmF4 LCAtNDgoJXJicCkKKysJLmxvYyAxIDIzIDAKKysJbW92bAktMzYoJXJicCksICVlZHgKKysJbW92 c2xxCSVlZHgsJXJheAorKwlzdWJxCSQxLCAlcmF4CisrCW1vdnEJJXJheCwgLTI0KCVyYnApCisr CS5sb2MgMSAyNCAwCisrCW1vdnNscQklZWR4LCVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJYWRk cQkkMTUsICVyYXgKKysJc2hycQkkNCwgJXJheAorKwlzYWxxCSQ0LCAlcmF4CisrCXN1YnEJJXJh eCwgJXJzcAorKwltb3ZxCSVyc3AsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAor KwlhZGRxCSQxNSwgJXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJbW92 cQklcmF4LCAtNTYoJXJicCkKKysJbW92cQktNTYoJXJicCksICVyYXgKKysJbW92cQklcmF4LCAt MTYoJXJicCkKKysJLmxvYyAxIDI3IDAKKysJbW92bAkkMCwgLTQoJXJicCkKKysJam1wCS5MMgor Ky5MMzoKKysJLmxvYyAxIDI4IDAKKysJbW92bAktNCglcmJwKSwgJWVzaQorKwltb3ZsCS00KCVy YnApLCAlZWF4CisrCW1vdmwJJWVheCwgJWVjeAorKwltb3ZxCS0xNiglcmJwKSwgJXJkeAorKwlt b3ZzbHEJJWVzaSwlcmF4CisrCW1vdmIJJWNsLCAoJXJkeCwlcmF4KQorKwkubG9jIDEgMjcgMAor KwlhZGRsCSQxLCAtNCglcmJwKQorKy5MMjoKKysJbW92bAktNCglcmJwKSwgJWVheAorKwljbXBs CS0zNiglcmJwKSwgJWVheAorKwlqbAkuTDMKKysJLmxvYyAxIDMwIDAKKysJLmdsb2JsCWJyZWFr X2hlcmUKKyticmVha19oZXJlOgorKwltb3ZxCS0xNiglcmJwKSwgJXJheAorKwltb3ZiCSQwLCAo JXJheCkKKysJbW92cQktNDgoJXJicCksICVyc3AKKysJLmxvYyAxIDMxIDAKKysJbGVhdmUKKysJ cmV0CisrLkxGRTI6CisrCS5zaXplCWZvbywgLi1mb28KKysJLnNlY3Rpb24JLmRlYnVnX2ZyYW1l LCIiLEBwcm9nYml0cworKy5MZnJhbWUwOgorKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKKysuTFND SUUwOgorKwkubG9uZwkweGZmZmZmZmZmCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSIiCisrCS51 bGViMTI4IDB4MQorKwkuc2xlYjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS5ieXRlCTB4YworKwku dWxlYjEyOCAweDcKKysJLnVsZWIxMjggMHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgx CisrCS5hbGlnbiA4CisrLkxFQ0lFMDoKKysuTFNGREUwOgorKwkubG9uZwkuTEVGREUwLS5MQVNG REUwCisrLkxBU0ZERTA6CisrCS5sb25nCS5MZnJhbWUwCisrCS5xdWFkCS5MRkIyCisrCS5xdWFk CS5MRkUyLS5MRkIyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJ MHhlCisrCS51bGViMTI4IDB4MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5 dGUJMHg0CisrCS5sb25nCS5MQ0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4 NgorKwkuYWxpZ24gOAorKy5MRUZERTA6CisrCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2di aXRzCisrLkxmcmFtZTE6CisrCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQorKy5MU0NJRTE6CisrCS5s b25nCTB4MAorKwkuYnl0ZQkweDEKKysJLnN0cmluZwkielIiCisrCS51bGViMTI4IDB4MQorKwku c2xlYjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDMKKysJ LmJ5dGUJMHhjCisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAor KwkudWxlYjEyOCAweDEKKysJLmFsaWduIDgKKysuTEVDSUUxOgorKy5MU0ZERTE6CisrCS5sb25n CS5MRUZERTEtLkxBU0ZERTEKKysuTEFTRkRFMToKKysJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEK KysJLmxvbmcJLkxGQjIKKysJLmxvbmcJLkxGRTItLkxGQjIKKysJLnVsZWIxMjggMHgwCisrCS5i eXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGViMTI4IDB4 MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5M Q0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24gOAorKy5M RUZERTE6CisrCS50ZXh0CisrLkxldGV4dDA6CisrCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHBy b2diaXRzCisrLkxkZWJ1Z19sb2MwOgorKy5MTFNUMDoKKysJLnF1YWQJLkxGQjItLkx0ZXh0MAor KwkucXVhZAkuTENGSTAtLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNs ZWIxMjggOAorKwkucXVhZAkuTENGSTAtLkx0ZXh0MAorKwkucXVhZAkuTENGSTEtLkx0ZXh0MAor KwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJLkxDRkkx LS5MdGV4dDAKKysJLnF1YWQJLkxGRTItLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4 NzYKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2VjdGlvbgku ZGVidWdfaW5mbworKwkubG9uZwkuTGRlYnVnX2VuZCAtIC5MZGVidWdfc3RhcnQKKysuTGRlYnVn X3N0YXJ0OgorKwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdfYWJicmV2MAorKwkuYnl0ZQkw eDgKKysJLnVsZWIxMjggMHgxCisrCS5sb25nCS5MQVNGMgorKwkuYnl0ZQkweDEKKysJLmxvbmcJ LkxBU0YzCisrCS5sb25nCS5MQVNGNAorKwkucXVhZAkuTHRleHQwCisrCS5xdWFkCS5MZXRleHQw CisrCS5sb25nCS5MZGVidWdfbGluZTAKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4MQorKwku c3RyaW5nCSJmb28iCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE2CisrCS5ieXRlCTB4MQorKwku cXVhZAkuTEZCMgorKwkucXVhZAkuTEZFMgorKwkubG9uZwkuTExTVDAKKysJLmxvbmcJMHg4Mwor KwkudWxlYjEyOCAweDMKKysJLmxvbmcJLkxBU0Y1CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE1 CisrCS5sb25nCTB4ODMKKysJLmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTUy CisrLkx0YWdfdHlwZWRlZjoKKysJLnVsZWIxMjggMHg0CisrCS5sb25nCS5MQVNGNgorKwkuYnl0 ZQkweDEKKysJLmJ5dGUJMHgxNworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2lu Zm8KKysJLnVsZWIxMjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkg Ki8KKysJLmxvbmcJLkxBU0YwCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE4CisrI2lmIDEKKysJ LmxvbmcJLkx0YWdfdHlwZWRlZiAtIC5kZWJ1Z19pbmZvCisrI2Vsc2UKKysJLyogRGVidWdnaW5n IG9ubHk6IFNraXAgdGhlIHR5cGVkZWYgaW5kaXJlY3Rpb24uICAqLworKwkubG9uZwkuTHRhZ19h cnJheV90eXBlIC0gLmRlYnVnX2luZm8KKysjZW5kaWYKKysJLyogRFdfQVRfbG9jYXRpb246IERX X0ZPUk1fYmxvY2sxOiBzdGFydCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQorKwkuc2xl YjEyOCAtMzIKKysjaWYgMAorKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KKysjZWxzZQor KwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlv bjogRFdfRk9STV9ibG9jazE6IGVuZCAqLworKwkudWxlYjEyOCAweDYKKysJLnN0cmluZwkiaSIK KysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTkKKysJLmxvbmcJMHg4MworKwkuYnl0ZQkweDIKKysJ LmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtMjAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4Nwor KwkuYnl0ZQkweDQKKysJLmJ5dGUJMHg1CisrCS5zdHJpbmcJImludCIKKysuTHRhZ19hcnJheV90 eXBlOgorKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5 cGUpICovCisrCS5sb25nCTB4YTAgKyAoMmYgLSAxZikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9y ZWY0ICovCisrCS5sb25nCTB4OWQgKyAoMmYgLSAxZikJLyogRFdfQVRfc2libGluZzogRFdfRk9S TV9yZWY0ICovCisrMToJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0 YXJ0ICovCisrCS5ieXRlCTJmIC0gM2YJLyogbGVuZ3RoICovCisrMzoKKysJLmJ5dGUJMHg5Nwkv KiBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzICovCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJl ZiAqLworKzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8K KysJLnVsZWIxMjggMHg5CisrCS5sb25nCTB4OWQgKyAoMmIgLSAxYikJLyogRFdfQVRfdHlwZTog RFdfRk9STV9yZWY0ICovCisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC00 MAorKwkuYnl0ZQkweDYKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDgK KysJLmJ5dGUJMHg3CisrCS51bGViMTI4IDB4YgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHg2Cisr CS5sb25nCS5MQVNGMQorKwkuYnl0ZQkweDAKKysuTGRlYnVnX2VuZDoKKysJLnNlY3Rpb24JLmRl YnVnX2FiYnJldgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMQorKwkuYnl0ZQkweDEK KysJLnVsZWIxMjggMHgyNQorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMworKwkudWxl YjEyOCAweGIKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDFi CisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxl YjEyOCAweDEyCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEwCisrCS51bGViMTI4IDB4 NgorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAw eDJlCisrCS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDNmCisrCS51bGViMTI4IDB4YworKwkudWxl YjEyOCAweDMKKysJLnVsZWIxMjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhi CisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjcKKysJLnVs ZWIxMjggMHhjCisrCS51bGViMTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4 MTIKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4NDAKKysJLnVsZWIxMjggMHg2CisrCS51 bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJ LnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4NQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgz CisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxl YjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4 MTMKKysJLnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJ MHgwCisrCS51bGViMTI4IDB4NAorKwkudWxlYjEyOCAweDE2CisrCS5ieXRlCTB4MAorKwkudWxl YjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhi CisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVs ZWIxMjggMHgxMworKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NQorKwku dWxlYjEyOCAweDM0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhl CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVs ZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAw eDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjgg MHg2CisrCS51bGViMTI4IDB4MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxl YjEyOCAweDgKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgz YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51 bGViMTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwku dWxlYjEyOCAweDcKKysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhi CisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkudWxl YjEyOCAweDMKKysJLnVsZWIxMjggMHg4CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVs ZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLworKwku dWxlYjEyOCAweDEKKysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAq LworKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDEJLyog RFdfQVRfc2libGluZyAqLworKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwku dWxlYjEyOCAweDUwCS8qIERXX0FUX2RhdGFfbG9jYXRpb24gKi8KKysJLnVsZWIxMjggMHhhCS8q IERXX0ZPUk1fYmxvY2sxICovCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjgg MHg5CisrCS51bGViMTI4IDB4MjEKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NDkJLyogRFdf QVRfdHlwZSAqLworKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEy OCAweDJmCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGVi MTI4IDB4YQorKwkudWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJ LnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4 MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJ MHgwCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwku dWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkuYnl0ZQkweDAK KysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIs QHByb2diaXRzCisrCS5sb25nCTB4MTYKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2lu Zm8wCisrCS5sb25nCTB4YTgKKysJLmxvbmcJMHgyZAorKwkuc3RyaW5nCSJmb28iCisrCS5sb25n CTB4MAorKwkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgy YworKwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdfaW5mbzAKKysJLmJ5dGUJMHg4CisrCS5i eXRlCTB4MAorKwkudmFsdWUJMHgwCisrCS52YWx1ZQkweDAKKysJLnF1YWQJLkx0ZXh0MAorKwku cXVhZAkuTGV0ZXh0MC0uTHRleHQwCisrCS5xdWFkCTB4MAorKwkucXVhZAkweDAKKysJLnNlY3Rp b24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0cywxCisrLkxBU0YwOgorKwkuc3RyaW5nCSJhcnJh eSIKKysuTEFTRjU6CisrCS5zdHJpbmcJInNpemUiCisrLkxBU0YzOgorKwkuc3RyaW5nCSJ4ODZf NjQtdmxhLXR5cGVkZWYuYyIKKysuTEFTRjY6CisrCS5zdHJpbmcJImFycmF5X3QiCisrLkxBU0Yx OgorKwkuc3RyaW5nCSJjaGFyIgorKy5MQVNGNDoKKysJLnN0cmluZwkiZ2RiLmFyY2giCisrLkxB U0YyOgorKwkuc3RyaW5nCSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIK KysJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgor Kwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi5iODA5YzRlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCitAQCAtMCwwICsxLDQzIEBACisrLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmln aHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2lmIDAKKysKKyt2b2lkCisrZm9vIChp bnQgc2l6ZSkKKyt7CisrICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKKysgIGFycmF5X3Qg YXJyYXk7CisrICBpbnQgaTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCisrICAg IGFycmF5W2ldID0gaTsKKysKKysgIGFycmF5WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLworK30K KysKKysjZWxzZQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZm9vICgyNik7CisrICBm b28gKDc4KTsKKysgIHJldHVybiAwOworK30KKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi5iMDU0MTFlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKK0BAIC0wLDAgKzEsNjQgQEAKKysjIENv cHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRlc3QgRFdfQVRfZGF0YV9sb2NhdGlvbiBhY2Nl c3NlZCB0aHJvdWdoIERXX1RBR190eXBlZGVmIGludGVybWVkaWF0ZS4KKysKKytpZiAhW2lzdGFy Z2V0ICJ4ODZfNjQtKi0qIl0gdGhlbiB7CisrICAgIHZlcmJvc2UgIlNraXBwaW5nIG92ZXIgZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cCB0ZXN0IG1hZGUgb25seSBmb3IgeDg2XzY0LiIK KysgICAgcmV0dXJuCisrfQorKworK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXR5cGVkZWYKKytz ZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Cisrc2V0IGJp bm9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28ubworK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpm aWxlfSIgb2JqZWN0IHt9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBp bGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisraWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9leGl0 CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2Ri X2xvYWQgJHtiaW5maWxlfQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICB1bnRlc3RlZCB4 ODZfNjQtdmxhLXR5cGVkZWYKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50 ICJicmVha19oZXJlIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJl IgorKworK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gYXJyYXlfdCIgImZpcnN0OiB3 aGF0aXMgYXJyYXkiCisrCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxc WzI2XFxcXSIgImZpcnN0OiBwdHlwZSBhcnJheSIKKysKKytnZGJfdGVzdCAicCBhcnJheVxbMVxd IiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgorK2dkYl90ZXN0ICJwIGFycmF5XFsyXF0iICJc XCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCisrZ2RiX3Rlc3QgInAgYXJyYXlcWzNcXSIgIlxcJFxb MC05XF0gPSAzICdcXFxcMDAzJyIKKytnZGJfdGVzdCAicCBhcnJheVxbNFxdIiAiXFwkXFswLTlc XSA9IDQgJ1xcXFwwMDQnIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19o ZXJlIgorKworK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gYXJyYXlfdCIgInNlY29u ZDogd2hhdGlzIGFycmF5IgorKworK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFy IFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIGFycmF5IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlp ZHguYworaW5kZXggOThkNGQzNS4uZjk4YTY1NiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXJyYXlpZHguYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlk eC5jCitAQCAtMTcsNiArMTcsMTMgQEAKKyAKKyBpbnQgYXJyYXlbXSA9IHsxLCAyLCAzLCA0fTsK KyAKKysjaWZkZWYgX19HTlVDX18KKytzdHJ1Y3QKKysgIHsKKysgICAgaW50IGFbMF07CisrICB9 IHVuYm91bmQ7CisrI2VuZGlmCisrCisgaW50CisgbWFpbiAodm9pZCkKKyB7CitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmV4cAoraW5kZXggNzFjZTRhYS4uYWYwZTVmOCAxMDA2NDQKKy0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2FycmF5aWR4LmV4cAorQEAgLTU5LDQgKzU5LDEyIEBAIGdkYl90ZXN0ICJwcmlu dCBhcnJheSIgXAorICAgICAgICAgICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBc XFxbMlxcXF0gPSAzLCBcXFxbM1xcXF0gPSA0XFx9IiBcCisgICAgICAgICAgIlByaW50IGFycmF5 IHdpdGggYXJyYXktaW5kZXhlcyBvbiIKKyAKKy0KKytzZXQgdGVzdCAicCB1bmJvdW5kLmEgPT0g JnVuYm91bmQuYVxbMFxdIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAg LXJlICIgPSAxXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrICAg IC1yZSAiTm8gc3ltYm9sIFwidW5ib3VuZFwiIGluIGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9w cm9tcHQgJCIgeworKwl1bnN1cHBvcnRlZCAiJHRlc3QgKG5vIEdDQykiCisrICAgIH0KKyt9Citk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvaGVscC5leHAKK2luZGV4IGQ3NmNjMzYuLjQ5NmZmMTggMTAwNjQ0CistLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2hlbHAuZXhwCitAQCAtNjA2LDcgKzYwNiw3IEBAIGdkYl90ZXN0ICJoZWxwIHN0ZXBp IiAiU3RlcCBvbmUgaW5zdHJ1Y3Rpb24gZXhhY3RseVwuXFtcclxuXF0rQXJndW1lbnQgTiBtZWFu cyBkCisgZ2RiX3Rlc3QgImhlbHAgc2lnbmFsIiAiQ29udGludWUgcHJvZ3JhbSBnaXZpbmcgaXQg c2lnbmFsLioiICJoZWxwIHNpZ25hbCIKKyAjIHRlc3QgaGVscCBzb3VyY2UKKyAjIHZ4Z2RiIHJl YWRzIC52eGdkYmluaXQKKy1nZGJfdGVzdCAiaGVscCBzb3VyY2UiICJSZWFkIGNvbW1hbmRzIGZy b20gYSBmaWxlIG5hbWVkIEZJTEVcLlxbXHJcblxdK09wdGlvbmFsIC12IHN3aXRjaCBcXChiZWZv cmUgdGhlIGZpbGVuYW1lXFwpIGNhdXNlcyBlYWNoIGNvbW1hbmQgaW5cW1xyXG5cXStGSUxFIHRv IGJlIGVjaG9lZCBhcyBpdCBpcyBleGVjdXRlZFwuXFtcclxuXF0rTm90ZSB0aGF0IHRoZSBmaWxl IFwiXFteXCJcXSpcIiBpcyByZWFkIGF1dG9tYXRpY2FsbHkgaW4gdGhpcyB3YXlcW1xyXG5cXSt3 aGVuIEdEQiBpcyBzdGFydGVkXC4iICJoZWxwIHNvdXJjZSIKKytnZGJfdGVzdCAiaGVscCBzb3Vy Y2UiICJSZWFkIGNvbW1hbmRzIGZyb20gYSBmaWxlIG5hbWVkIEZJTEVcLlxbXHJcblxdK09wdGlv bmFsIC12IHN3aXRjaCBcXChiZWZvcmUgdGhlIGZpbGVuYW1lXFwpIGNhdXNlcyBlYWNoIGNvbW1h bmQgaW5cW1xyXG5cXStGSUxFIHRvIGJlIGVjaG9lZCBhcyBpdCBpcyBleGVjdXRlZFwuXFtcclxu XF0rTm90ZSB0aGF0IHRoZSBmaWxlIFwiXFteXCJcXSpcIiBpcyByZWFkIGF1dG9tYXRpY2FsbHkg aW4gdGhpcyB3YXlcW1xyXG5cXSt3aGVuIEdEQiBpcyBzdGFydGVkXC5cW1xyXG5cXStPcHRpb25h bCAtcCBzd2l0Y2ggXFwoYmVmb3JlIHRoZSBmaWxlbmFtZVxcKSBjYXVzZXMgRklMRSB0byBiZSBl dmFsdWF0ZWRcW1xyXG5cXSthcyBQeXRob24gY29kZVwuIiAiaGVscCBzb3VyY2UiCisgIyB0ZXN0 IGhlbHAgc3RhY2sKKyB0ZXN0X2NsYXNzX2hlbHAgInN0YWNrIiB7CisgICAgICJFeGFtaW5pbmcg dGhlIHN0YWNrXC4uKlxbXHJcblxdKyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi5lZWI3Yjg1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKK0BAIC0wLDAgKzEsMjAgQEAKKysv KiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAg IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytzdHJ1Y3QgeworKyAgaW50 IGZpZWxkOworK30gc3RhdGljc3RydWN0ID0geyAxIH07CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjZkODJlNzMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCitAQCAt MCwwICsxLDI2IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc2V0IHRlc3QgaW50 ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MKKytzZXQgYmluZmlsZSAke3Rlc3R9LngKKytpZiAgeyBb Z2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS5jIiAiJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke2JpbmZpbGV9IiBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQor KworK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKKysKKytnZGJfdGVzdCB7c2V0ICR2YXJzdHJ1Y3Qg PSBzdGF0aWNzdHJ1Y3R9CisrZ2RiX3Rlc3Qge3AgJHZhcnN0cnVjdC5maWVsZH0gIiA9IDEiCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLWZ1bmMuYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC1mdW5jLmMKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xYTAyMjBlCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xpbmVuby1tYWtldXAtZnVuYy5jCitAQCAtMCwwICsxLDIx IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KysKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrdm9pZAorK2Z1 bmMgKHZvaWQpCisreworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xp bmVuby1tYWtldXAuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC5jCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYmIyMGU5OAorLS0tIC9kZXYvbnVs bAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmMKK0BAIC0wLDAg KzEsMzUgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCiArICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKQEAgLTIzMTc0LDYgKzI0MDAzLDE2MiBAQCBpbmRleCAwMDAwMDAwLi41NTQzNzU3CiAr CiArc2V0dXBfa2ZhaWwgImdkYi8xMDU0MSIgIiotKi0qIgogK2dkYl90ZXN0ICJwcmludCBHOjpH Rjo6RkU6OmV4IiAiPSA5OTk5IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi4xNzNlNDliCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9uYW1lc3BhY2Utc3RyZXNzLWRlY2xhcmF0aW9ucy5jYworQEAgLTAsMCArMSw5MyBAQAor K2ludCBhOworK2ludCBiOworK2ludCBjOworK2ludCBkOworK2ludCBlOworK2ludCBmOworK2lu dCBnOworK2ludCBoOworK2ludCBpOworK2ludCBqOworK2ludCBrOworK2ludCBsOworK2ludCBt OworK2ludCBuOworK2ludCBvOworK2ludCBwOworK2ludCBxOworK2ludCByOworK2ludCBzOwor K2ludCB0OworK2ludCB1OworK2ludCB2OworK2ludCB3OworK2ludCB4OworK2ludCB5OworK2lu dCB6OworKworK25hbWVzcGFjZSBBCisreworKyAgaW50IHh5ejsKKysKKysgIHVzaW5nIDo6YTsK KysgIHVzaW5nIDo6YjsKKysgIHVzaW5nIDo6YzsKKysgIHVzaW5nIDo6ZDsKKysgIHVzaW5nIDo6 ZTsKKysgIHVzaW5nIDo6ZjsKKysgIHVzaW5nIDo6ZzsKKysgIHVzaW5nIDo6aDsKKysgIHVzaW5n IDo6aTsKKysgIHVzaW5nIDo6ajsKKysgIHVzaW5nIDo6azsKKysgIHVzaW5nIDo6bDsKKysgIHVz aW5nIDo6bTsKKysgIHVzaW5nIDo6bjsKKysgIHVzaW5nIDo6bzsKKysgIHVzaW5nIDo6cDsKKysg IHVzaW5nIDo6cTsKKysgIHVzaW5nIDo6cjsKKysgIHVzaW5nIDo6czsKKysgIHVzaW5nIDo6dDsK KysgIHVzaW5nIDo6dTsKKysgIHVzaW5nIDo6djsKKysgIHVzaW5nIDo6dzsKKysgIHVzaW5nIDo6 eDsKKysgIHVzaW5nIDo6eTsKKysgIHVzaW5nIDo6ejsKKysKKyt9CisrCisrdXNpbmcgQTo6YTsK Kyt1c2luZyBBOjpiOworK3VzaW5nIEE6OmM7CisrdXNpbmcgQTo6ZDsKKyt1c2luZyBBOjplOwor K3VzaW5nIEE6OmY7CisrdXNpbmcgQTo6ZzsKKyt1c2luZyBBOjpoOworK3VzaW5nIEE6Omk7Cisr dXNpbmcgQTo6ajsKKyt1c2luZyBBOjprOworK3VzaW5nIEE6Omw7CisrdXNpbmcgQTo6bTsKKyt1 c2luZyBBOjpuOworK3VzaW5nIEE6Om87CisrdXNpbmcgQTo6cDsKKyt1c2luZyBBOjpxOworK3Vz aW5nIEE6OnI7CisrdXNpbmcgQTo6czsKKyt1c2luZyBBOjp0OworK3VzaW5nIEE6OnU7CisrdXNp bmcgQTo6djsKKyt1c2luZyBBOjp3OworK3VzaW5nIEE6Ong7CisrdXNpbmcgQTo6eTsKKyt1c2lu ZyBBOjp6OworKworK3VzaW5nIG5hbWVzcGFjZSBBOworKworK2ludCBtYWluICgpCisreworKyAg cmV0dXJuIDA7CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjIyYTE0ZQorLS0tIC9kZXYvbnVs bAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlv bnMuZXhwCitAQCAtMCwwICsxLDUwIEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr aWYgJHRyYWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysKKytz ZXQgcHJtc19pZCAwCisrc2V0IGJ1Z19pZCAwCisrCisrc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1z dHJlc3MtZGVjbGFyYXRpb25zCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKKytzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg dGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgW2dldF9jb21waWxlcl9p bmZvICR7YmluZmlsZX1dIHsKKysgICAgcmV0dXJuIC0xOworK30KKysKKysjIEdldCB0aGluZ3Mg c3RhcnRlZC4KKysKKytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGly ICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0KKysKKytpZiAhW3J1bnRvX21h aW5dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4i CisrICAgIGNvbnRpbnVlCisrfQorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisrIyBUZXN0IHRoYXQgdGhlIHNlYXJjaCBjYW4gZmFpbCBlZmZpY2llbnRs eSAKKysKKytnZGJfdGVzdCAicHJpbnQgZmFrZXgiICJObyBzeW1ib2wgXCJmYWtleFwiIGluIGN1 cnJlbnQgY29udGV4dC4iCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNw YWNlLXN0cmVzcy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuY2MK IG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5mMzQwODNlCkBAIC0yNTM2OSwx MCArMjYzNTQsMTAgQEAgaW5kZXggNDk1YWU0NS4uZDA4ZDdhNCAxMDA2NDQKICAJCXNldCBjb21t YW5kICJuZXh0IgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uNzRkNGQ1OAoraW5kZXggMDAwMDAwMC4uZTcxMzkxZQogLS0tIC9kZXYv bnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAotQEAgLTAsMCArMSw3 MiBAQAorQEAgLTAsMCArMSw3NyBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjUzOTUsMTAgKzI2MzgwLDEw IEBAIGluZGV4IDAwMDAwMDAuLjc0ZDRkNTgKICtsb2FkX2xpYiAiamF2YS5leHAiCiArCiArc2V0 IHRlc3RmaWxlICJqbnBlIgotK3NldCBzcmNmaWxlICR7c3JjZGlyfS8kc3ViZGlyLyR7dGVzdGZp bGV9LmphdmEKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5qYXZhCiArc2V0IGJpbmZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtjb21waWxlX2phdmFfZnJvbV9z b3VyY2UgJHtzcmNmaWxlfSAke2JpbmZpbGV9ICItZyJdICE9ICIiIH0gewotKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorK2lmICB7IFtjb21waWxlX2phdmFfZnJv bV9zb3VyY2UgJHtzcmNkaXJ9LyRzdWJkaXIvJHtzcmNmaWxlfSAke2JpbmZpbGV9ICItZyJdICE9 ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Rpcn0vJHN1YmRp ci8ke3NyY2ZpbGV9IgogKyAgICByZXR1cm4gLTEKICt9CiArCkBAIC0yNTQxNiw3ICsyNjQwMSw3 IEBAIGluZGV4IDAwMDAwMDAuLjc0ZDRkNTgKICtnZGJfdGVzdCAiYnJlYWsgJHRlc3RmaWxlLmph dmE6JGxpbmUiICIiCiArCiArZ2RiX3Rlc3QgInJ1biIgXAotKyAgIkN1cnJlbnQgbGFuZ3VhZ2Uu KmphdmEiIFwKKysgICIvLyBicmVhayBoZXJlLioiIFwKICsgICJydW4gamF2YSBuZXh0LW92ZXIt dGhyb3ciCiArCiArIyBTZWUgd2hldGhlciB3ZSBoYXZlIHRoZSBuZWVkZWQgdW53aW5kZXIgaG9v a3MuCkBAIC0yNTQyNSw5ICsyNjQxMCwxMCBAQCBpbmRleCAwMDAwMDAwLi43NGQ0ZDU4CiArICAg IC1yZSAiPSAuKl9VbndpbmRfRGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewogKwlwYXNz ICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayBpbiBqYXZhIgogKyAgICB9Ci0rICAgIC1yZSAiTm8g c3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgeworKyAgICAt cmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4kZ2RiX3Byb21wdCAkIiB7 CiArCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMgZmFpbHMgaW4gdGhlIHJl c3VsdHMuCi0rCXBhc3MgImNoZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEiCisrCXNldHVw X3hmYWlsICotKi0qCisrCWZhaWwgImNoZWNrIGZvciB1bndpbmRlciBob29rIGluIGphdmEiCiAr CXNldCBvayAwCiArICAgIH0KICt9CkBAIC0yNTQ0MCwxNCArMjY0MjYsMTggQEAgaW5kZXggMDAw MDAwMC4uNzRkNGQ1OAogKyAgIlNJR1NFR1YuKmZhdWx0IiBcCiArICAiZGlzYWJsZSBTSUdTRUdW IGZvciBuZXh0LW92ZXItTlBFIgogKwotKyMgV2Ugc29tZXRpbWVzIHN0b3AgYXQgbGluZSAzNywg bm90IGxpbmUgMzUuICBUaGlzIHNlZW1zIHRvIGJlIGEgZ2NqCi0rIyBvZGRpdHkgLS0gYW5vdGhl ciBuZXh0IHdpbGwgc29sdmUgaXQuCisrIyBUaGUgbGluZSB3aGVyZSB3ZSBzdG9wIGRpZmZlciBh Y2NvcmRpbmcgdG8gZ2NqOyBjaGVjayBqdXN0IHdlIGRpZCBub3QgYWxyZWFkeQorKyMgZXhlY3V0 ZSB0aGUgY2F0Y2ggcG9pbnQuCisrCiArZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIzXFs1N1xdLioi IFwKKysgICIiIFwKICsgICJuZXh0IG92ZXIgTlBFIgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJjYXRjaCBwb2ludCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImNhdGNoIHBvaW50IiAiLiovLyBjYXRjaCBwb2ludC4qIgogZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5qYXZhIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBl LmphdmEKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mZmNhM2FiCitpbmRl eCAwMDAwMDAwLi4zNTI0ODMwCiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5qYXZhL2pucGUuamF2YQogQEAgLTAsMCArMSwzOCBAQApAQCAtMjU0ODUsNyArMjY0NzUsNyBA QCBpbmRleCAwMDAwMDAwLi5mZmNhM2FiCiArICAgICAgfQogKyAgICBjYXRjaCAoTnVsbFBvaW50 ZXJFeGNlcHRpb24gbikKICsgICAgICB7Ci0rCVN5c3RlbS5vdXQucHJpbnRsbiAoInN1Y2Nlc3Mi KTsKKysJU3lzdGVtLm91dC5wcmludGxuICgic3VjY2VzcyIpOyAvLyBjYXRjaCBwb2ludAogKyAg ICAgIH0KICsgIH0KICt9CkBAIC0yNzI5MiwxMCArMjgyODIsMTAgQEAgaW5kZXggMDAwMDAwMC4u MTRmNDJkNgogK30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNo dGhyZWFkcy1yZW9yZGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJl YWRzLXJlb3JkZXIuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGY2 NTM2NAoraW5kZXggMDAwMDAwMC4uNWFkMWE0ZQogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5leHAKLUBAIC0wLDAgKzEs MTAxIEBACitAQCAtMCwwICsxLDEwNSBAQAogKyMgVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgpAQCAtMjczOTMsNiArMjgzODMsMTAgQEAgaW5kZXggMDAwMDAwMC4u OGY2NTM2NAogKwkgICAgICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6IHRocmVh ZFxbMTJcXV9yd2F0Y2hcclxuXHJcblZhbHVlID0gMFxyXG4weFxbMC05YS1mXF0rIGluIHRocmVh ZFxbMTJcXV9mdW5jIC4qIiBcCiArCSAgICAgImNvbnRpbnVlIGIiCiArCisrICAgICMgV2hpbGUg dGhlIGRlYnVnIG91dHB1dCBpdHNlbGYgaXMgbm90IGNoZWNrZWQgaW4gdGhpcyB0ZXN0Y2FzZSBv bmUgYnVnIHdhcworKyAgICAjIGZvdW5kIGluIHRoZSBERUJVR19JTkZSVU4gY29kZSBwYXRoLgor KyAgICBnZGJfdGVzdCAic2V0IGRlYnVnIGluZnJ1biAxIgorKwogKyAgICBnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiYnJlYWstYXQtZXhpdCIgIi4qYnJlYWstYXQtZXhpdC4qIgogKwogKyAg ICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfdGVzdApAQCAtMjc4MDMsNyArMjg3OTcsNyBAQCBpbmRl eCBhOWM4NzVkLi4xMmY2ZjA3IDEwMDY0NAogIH0KICAKIGRpZmYgLS1naXQgYS9nZGIvdmFsb3Bz LmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CitpbmRleCAw MTJlYTZhLi45YjRkMmE4IDEwMDY0NAogLS0tIGEvZ2RiL3ZhbG9wcy5jCiArKysgYi9nZGIvdmFs b3BzLmMKIEBAIC0zOCw2ICszOCw3IEBACkBAIC0yNzkxNyw3ICsyODkxMSw3IEBAIGluZGV4IGI2 NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CiAgCX0KICAgICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZB TCAodmFsKSA9PSBsdmFsX3JlZ2lzdGVyKQotQEAgLTEwNzAsNyArMTEzMywxOCBAQCBhZGRyZXNz X29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKK0BAIC0x MDcyLDcgKzExMzUsMTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFy LCBzdHJ1Y3QgYmxvY2sgKmIpCiAgICBpZiAoKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1v cnkgJiYgdmFsdWVfbGF6eSAodmFsKSkKICAgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZ UEVfQ09ERV9GVU5DKQogICAgICB7CkBAIC0yNzkzNyw3ICsyODkzMSw3IEBAIGluZGV4IGI2NGNi MjEuLmI3ZDMxY2MgMTAwNjQ0CiAgICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fcG9pbnRlciAobG9v a3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9CiAgCi1AQCAtMTE3Niw2ICsx MjUwLDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xMTc4LDYgKzEyNTIsNyBAQCBzdHJ1Y3QgdmFs dWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogIHsKICAgIHN0 cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwpAQCAt Mjc5NDUsNyArMjg5MzksNyBAQCBpbmRleCBiNjRjYjIxLi5iN2QzMWNjIDEwMDY0NAogIAogICAg LyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIg d2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUg dGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xMTg1LDggKzEyNjAsMTIgQEAgdmFsdWVfY29l cmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCitAQCAtMTE4Nyw4ICsxMjYyLDEyIEBAIHZh bHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogICAgaWYgKFZBTFVFX0xWQUwg KGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBlcnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGFk ZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVtb3J5LiIpKTsKICAKQEAgLTI3OTU5LDcg KzI4OTUzLDcgQEAgaW5kZXggYjY0Y2IyMS4uYjdkMzFjYyAxMDA2NDQKICB9CiAgCiAgLyogR2l2 ZW4gYSB2YWx1ZSB3aGljaCBpcyBhIGZ1bmN0aW9uLCByZXR1cm4gYSB2YWx1ZSB3aGljaCBpcyBh IHBvaW50ZXIKLUBAIC0yMDY5LDEyICsyMTQ4LDI1IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0 cnVjdCB0eXBlICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCitAQCAtMjA3MSwxMiArMjE1MCwyNSBA QCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5hcmdz LAogICAgaWYgKG1ldGhvZCkKICAgICAgewogICAgICAgIGdkYl9hc3NlcnQgKG9iaik7CkBAIC0y Nzk5MCw3ICsyODk4NCw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CiAgCiAgICAg ICAgZm5zX3B0ciA9IHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKCZ0ZW1wLCBuYW1lLCAK ICAJCQkJCSAgICAgIDAsICZudW1fZm5zLCAKLUBAIC0yMDk0LDE2ICsyMTg2LDI5IEBAIGZpbmRf b3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCitAQCAt MjA5NiwxNiArMjE4OCwyOSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFy Z190eXBlcywgaW50IG5hcmdzLAogICAgICB9CiAgICBlbHNlCiAgICAgIHsKQEAgLTI4MDI4LDcg KzI5MDIyLDcgQEAgaW5kZXggYjY0Y2IyMS4uYjdkMzFjYyAxMDA2NDQKICAgICAgICBpZiAoZnVu Y19uYW1lID09IE5VTEwpCiAgICAgICAgICB7CiAgCSAgKnN5bXAgPSBmc3ltOwotQEAgLTI1MzQs OCArMjYzOSw4IEBAIGNoZWNrX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgY2hhciAq bmFtZSkKK0BAIC0yNTM2LDggKzI2NDEsOCBAQCBjaGVja19maWVsZCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgdGhlIGNvbW1lbnQgYmVmb3JlIHZhbHVlX3N0cnVj dF9lbHRfZm9yX3JlZmVyZW5jZS4gICovCiAgCiAgc3RydWN0IHZhbHVlICoKQEAgLTI4MDM5LDcg KzI5MDMzLDcgQEAgaW5kZXggYjY0Y2IyMS4uYjdkMzFjYyAxMDA2NDQKICAJCSAgICAgZW51bSBu b3NpZGUgbm9zaWRlKQogIHsKICAgIHN3aXRjaCAoVFlQRV9DT0RFIChjdXJ0eXBlKSkKLUBAIC0y NTQzLDcgKzI2NDgsNyBAQCB2YWx1ZV9hZ2dyZWdhdGVfZWx0IChzdHJ1Y3QgdHlwZSAqY3VydHlw ZSwKK0BAIC0yNTQ1LDcgKzI2NTAsNyBAQCB2YWx1ZV9hZ2dyZWdhdGVfZWx0IChzdHJ1Y3QgdHlw ZSAqY3VydHlwZSwKICAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICBjYXNlIFRZUEVf Q09ERV9VTklPTjoKICAgICAgICByZXR1cm4gdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNl IChjdXJ0eXBlLCAwLCBjdXJ0eXBlLCAKQEAgLTI4MDQ4LDcgKzI5MDQyLDcgQEAgaW5kZXggYjY0 Y2IyMS4uYjdkMzFjYyAxMDA2NDQKICAJCQkJCSAgICAgd2FudF9hZGRyZXNzLCBub3NpZGUpOwog ICAgICBjYXNlIFRZUEVfQ09ERV9OQU1FU1BBQ0U6CiAgICAgICAgcmV0dXJuIHZhbHVlX25hbWVz cGFjZV9lbHQgKGN1cnR5cGUsIG5hbWUsIAotQEAgLTI1NTQsNiArMjY1OSw1NiBAQCB2YWx1ZV9h Z2dyZWdhdGVfZWx0IChzdHJ1Y3QgdHlwZSAqY3VydHlwZSwKK0BAIC0yNTU2LDYgKzI2NjEsNTYg QEAgdmFsdWVfYWdncmVnYXRlX2VsdCAoc3RydWN0IHR5cGUgKmN1cnR5cGUsCiAgICAgIH0KICB9 CiAgCkBAIC0yODEwNSw3ICsyOTA5OSw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0 CiAgLyogQysrOiBHaXZlbiBhbiBhZ2dyZWdhdGUgdHlwZSBDVVJUWVBFLCBhbmQgYSBtZW1iZXIg bmFtZSBOQU1FLAogICAgIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGlzIG1lbWJlciBhcyBhICJw b2ludGVyIHRvIG1lbWJlciIgdHlwZS4KICAgICBJZiBJTlRZUEUgaXMgbm9uLW51bGwsIHRoZW4g aXQgd2lsbCBiZSB0aGUgdHlwZSBvZiB0aGUgbWVtYmVyIHdlCi1AQCAtMjYzMSwyMyArMjc4Niw0 NiBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICpkb21haW4s IGludCBvZmZzZXQsCitAQCAtMjYzMywyMyArMjc4OCw0NiBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zv cl9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICpkb21haW4sIGludCBvZmZzZXQsCiAgCX0KICAgICAg ICBpZiAodF9maWVsZF9uYW1lICYmIHN0cmNtcCAodF9maWVsZF9uYW1lLCBuYW1lKSA9PSAwKQog IAl7CkBAIC0yODE2Miw3ICsyOTE1Niw3IEBAIGluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0 CiAgCiAgCSAgaWYgKFRZUEVfRk5fRklFTERfU1RBVElDX1AgKGYsIGopKQogIAkgICAgewotQEAg LTI3NjEsNyArMjkzOSw3IEBAIHZhbHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVj dCB0eXBlICpjdXJ0eXBlLAorQEAgLTI3NjMsNyArMjk0MSw3IEBAIHZhbHVlX21heWJlX25hbWVz cGFjZV9lbHQgKGNvbnN0IHN0cnVjdCB0eXBlICpjdXJ0eXBlLAogICAgc3RydWN0IHN5bWJvbCAq c3ltOwogICAgc3RydWN0IHZhbHVlICpyZXN1bHQ7CiAgCkBAIC0yODE3MSw3ICsyOTE2NSw3IEBA IGluZGV4IGI2NGNiMjEuLmI3ZDMxY2MgMTAwNjQ0CiAgCQkJCSAgICBnZXRfc2VsZWN0ZWRfYmxv Y2sgKDApLCAKICAJCQkJICAgIFZBUl9ET01BSU4pOwogIAotQEAgLTI5MDUsNyArMzA4Myw3IEBA IHZhbHVlX29mX2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29tcGxhaW4pCitAQCAtMjkw Nyw3ICszMDg1LDcgQEAgdmFsdWVfb2ZfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBjb21w bGFpbikKICAKICAgIC8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJvbCBpcyBuZWNlc3Nhcnkg dG8gZ2V0IHRoZSBMT0NfUkVHSVNURVIKICAgICAgIHN5bWJvbCBpbnN0ZWFkIG9mIHRoZSBMT0Nf QVJHIG9uZSAoaWYgYm90aCBleGlzdCkuICAqLwpAQCAtMjgxODAsNyArMjkxNzQsNyBAQCBpbmRl eCBiNjRjYjIxLi5iN2QzMWNjIDEwMDY0NAogICAgaWYgKHN5bSA9PSBOVUxMKQogICAgICB7CiAg ICAgICAgaWYgKGNvbXBsYWluKQotQEAgLTI5NTksOCArMzEzNyw2IEBAIHZhbHVlX3NsaWNlIChz dHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMjk2MSw4 ICszMTM5LDYgQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3Vu ZCwgaW50IGxlbmd0aCkKICAgICAgICB8fCBsb3dib3VuZCArIGxlbmd0aCAtIDEgPiB1cHBlcmJv dW5kKQogICAgICBlcnJvciAoXygic2xpY2Ugb3V0IG9mIHJhbmdlIikpOwogIApAQCAtMjgyMTks NyArMjkyMTMsNyBAQCBpbmRleCBjYmI1ZDk0Li5mOTYzNGVhIDEwMDY0NAogIAkgICsrcmVwczsK ICAJICArK3JlcDE7CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwotaW5k ZXggNTg5ZTAzYi4uNjYwMTNiNyAxMDA2NDQKK2luZGV4IDU4OWUwM2IuLjYyMDAzZmEgMTAwNjQ0 CiAtLS0gYS9nZGIvdmFsdWUuYwogKysrIGIvZ2RiL3ZhbHVlLmMKIEBAIC0zNyw4ICszNywxMCBA QApAQCAtMjgzMDMsMTggKzI5Mjk3LDIwIEBAIGluZGV4IDU4OWUwM2IuLjY2MDEzYjcgMTAwNjQ0 CiAgICBpZiAoVkFMVUVfTFZBTCAod2hvbGUpID09IGx2YWxfY29tcHV0ZWQpCiAgICAgIHsKICAg ICAgICBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB3aG9sZS0+bG9jYXRpb24uY29tcHV0ZWQu ZnVuY3M7Ci1AQCAtNzc2LDYgKzc5OSwxMCBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9u IChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwgc3RydWN0IHZhbHVlICp3aG9sZSkKK0BAIC03NzYs NiArNzk5LDEyIEBAIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAq Y29tcG9uZW50LCBzdHJ1Y3QgdmFsdWUgKndob2xlKQogICAgICAgIGlmIChmdW5jcy0+Y29weV9j bG9zdXJlKQogICAgICAgICAgY29tcG9uZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0g ZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hvbGUpOwogICAgICB9CiArCiArICBhZGRyID0gdmFsdWVf cmF3X2FkZHJlc3MgKGNvbXBvbmVudCk7CiArICBvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAodmFs dWVfdHlwZSAod2hvbGUpLCAmYWRkcik7Ci0rICBzZXRfdmFsdWVfYWRkcmVzcyAoY29tcG9uZW50 LCBhZGRyKTsKKysgIGlmIChjb21wb25lbnQtPmx2YWwgIT0gbHZhbF9pbnRlcm5hbHZhcgorKyAg ICAgICYmIGNvbXBvbmVudC0+bHZhbCAhPSBsdmFsX2ludGVybmFsdmFyX2NvbXBvbmVudCkKKysg ICAgc2V0X3ZhbHVlX2FkZHJlc3MgKGNvbXBvbmVudCwgYWRkcik7CiAgfQogIAogIAwKLUBAIC05 MDYsNiArOTMzLDI5IEBAIHNob3dfdmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkp CitAQCAtOTA2LDYgKzkzNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50IGZy b21fdHR5KQogICAgICAgIG51bV9leHBbMV0gPSAnXDAnOwogICAgICB9CiAgfQpAQCAtMjgzNDQs NyArMjkzNDAsNyBAQCBpbmRleCA1ODllMDNiLi42NjAxM2I3IDEwMDY0NAogIAwKICAvKiBJbnRl cm5hbCB2YXJpYWJsZXMuICBUaGVzZSBhcmUgdmFyaWFibGVzIHdpdGhpbiB0aGUgZGVidWdnZXIK ICAgICB0aGF0IGhvbGQgdmFsdWVzIGFzc2lnbmVkIGJ5IGRlYnVnZ2VyIGNvbW1hbmRzLgotQEAg LTEzODEsNiArMTQzMSw0MCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKK0BAIC0xMzgxLDYgKzE0MzMsNDAgQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlv biAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICByZXR1cm4gKCppZm4tPmhhbmRsZXIpIChn ZGJhcmNoLCBsYW5ndWFnZSwgaWZuLT5jb29raWUsIGFyZ2MsIGFyZ3YpOwogIH0KICAKQEAgLTI4 Mzg1LDcgKzI5MzgxLDcgQEAgaW5kZXggNTg5ZTAzYi4uNjYwMTNiNyAxMDA2NDQKICAvKiBUaGUg J2Z1bmN0aW9uJyBjb21tYW5kLiAgVGhpcyBkb2VzIG5vdGhpbmcgLS0gaXQgaXMganVzdCBhCiAg ICAgcGxhY2Vob2xkZXIgdG8gbGV0ICJoZWxwIGZ1bmN0aW9uIE5BTUUiIHdvcmsuICBUaGlzIGlz IGFsc28gdXNlZCBhcwogICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3ViLWNvbW1hbmQg dGhhdCBpcyBjcmVhdGVkIHdoZW4KLUBAIC0xNDI4LDExICsxNTEyLDEwIEBAIHByZXNlcnZlX29u ZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitA QCAtMTQyOCwxMSArMTUxNCwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAq dmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJICAgIGh0YWJfdCBjb3BpZWRfdHlw ZXMpCiAgewogICAgaWYgKFRZUEVfT0JKRklMRSAodmFsdWUtPnR5cGUpID09IG9iamZpbGUpCkBA IC0yODM5OSw3ICsyOTM5NSw3IEBAIGluZGV4IDU4OWUwM2IuLjY2MDEzYjcgMTAwNjQ0CiAgCQkJ CQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTE0NDcsMTMgKzE1MzAsMTMgQEAgcHJlc2Vy dmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCitAQCAtMTQ0NywxMyArMTUzMiwxMyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJu YWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK ICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAgIGlmICh2YXItPnUuaW50ZWdl ci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVnZXIudHlwZSkgPT0gb2JqZmlsZSkK ICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtMjg0MTUsNyArMjk0MTEsNyBAQCBpbmRleCA1ODll MDNiLi42NjAxM2I3IDEwMDY0NAogICAgICAgIGJyZWFrOwogIAogICAgICBjYXNlIElOVEVSTkFM VkFSX1ZBTFVFOgotQEAgLTE4NTUsNiArMTkzOCw4IEBAIHZhbHVlX2NoYW5nZV9lbmNsb3Npbmdf dHlwZSAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB0eXBlICpuZXdfZW5jbF90eXBlKQorQEAg LTE4NTUsNiArMTk0MCw4IEBAIHZhbHVlX2NoYW5nZV9lbmNsb3NpbmdfdHlwZSAoc3RydWN0IHZh bHVlICp2YWwsIHN0cnVjdCB0eXBlICpuZXdfZW5jbF90eXBlKQogICAgICB2YWwtPmNvbnRlbnRz ID0KICAgICAgICAoZ2RiX2J5dGUgKikgeHJlYWxsb2MgKHZhbC0+Y29udGVudHMsIFRZUEVfTEVO R1RIIChuZXdfZW5jbF90eXBlKSk7CiAgCkBAIC0yODQyNCw3ICsyOTQyMCw3IEBAIGluZGV4IDU4 OWUwM2IuLjY2MDEzYjcgMTAwNjQ0CiAgICB2YWwtPmVuY2xvc2luZ190eXBlID0gbmV3X2VuY2xf dHlwZTsKICAgIHJldHVybiB2YWw7CiAgfQotQEAgLTE5MTksNiArMjAwNCw4IEBAIHZhbHVlX3By aW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAorQEAgLTE5MTks NiArMjAwNiw4IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBp bnQgb2Zmc2V0LAogIAkgIG1lbWNweSAodmFsdWVfY29udGVudHNfYWxsX3JhdyAodiksIHZhbHVl X2NvbnRlbnRzX2FsbF9yYXcgKGFyZzEpLAogIAkJICBUWVBFX0xFTkdUSCAodmFsdWVfZW5jbG9z aW5nX3R5cGUgKGFyZzEpKSk7CiAgCX0KQEAgLTI4NDMzLDcgKzI5NDI5LDcgQEAgaW5kZXggNTg5 ZTAzYi4uNjYwMTNiNyAxMDA2NDQKICAgICAgICB2LT50eXBlID0gdHlwZTsKICAgICAgICB2LT5v ZmZzZXQgPSB2YWx1ZV9vZmZzZXQgKGFyZzEpOwogICAgICAgIHYtPmVtYmVkZGVkX29mZnNldCA9 IChvZmZzZXQgKyB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGFyZzEpCi1AQCAtMjE3Nyw2ICsyMjY0 LDQyIEBAIHBhY2tfbG9uZyAoZ2RiX2J5dGUgKmJ1Ziwgc3RydWN0IHR5cGUgKnR5cGUsIExPTkdF U1QgbnVtKQorQEAgLTIxNzcsNiArMjI2Niw0MiBAQCBwYWNrX2xvbmcgKGdkYl9ieXRlICpidWYs IHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIG51bSkKICB9CiAgCiAgCkBAIC0yODQ3Niw3ICsy OTQ3Miw3IEBAIGluZGV4IDU4OWUwM2IuLjY2MDEzYjcgMTAwNjQ0CiAgLyogQ29udmVydCBDIG51 bWJlcnMgaW50byBuZXdseSBhbGxvY2F0ZWQgdmFsdWVzLiAgKi8KICAKICBzdHJ1Y3QgdmFsdWUg KgotQEAgLTIxOTAsNiArMjMxMywxOSBAQCB2YWx1ZV9mcm9tX2xvbmdlc3QgKHN0cnVjdCB0eXBl ICp0eXBlLCBMT05HRVNUIG51bSkKK0BAIC0yMTkwLDYgKzIzMTUsMTkgQEAgdmFsdWVfZnJvbV9s b25nZXN0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pCiAgfQogIAogIApAQCAtMjg0 OTYsNyArMjk0OTIsNyBAQCBpbmRleCA1ODllMDNiLi42NjAxM2I3IDEwMDY0NAogIC8qIENyZWF0 ZSBhIHZhbHVlIHJlcHJlc2VudGluZyBhIHBvaW50ZXIgb2YgdHlwZSBUWVBFIHRvIHRoZSBhZGRy ZXNzCiAgICAgQUREUi4gICovCiAgc3RydWN0IHZhbHVlICoKLUBAIC0yMzQ4LDQgKzI0ODQsOCBA QCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKK0BAIC0yMzQ4LDQgKzI0ODYs OCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKICAgIGFkZF9wcmVmaXhf Y21kICgiZnVuY3Rpb24iLCBub19jbGFzcywgZnVuY3Rpb25fY29tbWFuZCwgXygiXAogIFBsYWNl aG9sZGVyIGNvbW1hbmQgZm9yIHNob3dpbmcgaGVscCBvbiBjb252ZW5pZW5jZSBmdW5jdGlvbnMu IiksCiAgCQkgICZmdW5jdGlvbmxpc3QsICJmdW5jdGlvbiAiLCAwLCAmY21kbGlzdCk7CgpkaWZm IC0tZ2l0IGEvZ2RiLWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0Y2ggYi9nZGItYml0ZmllbGQt Y2hlY2tfdHlwZWRlZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h YTg3YmZiCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0 Y2gKQEAgLTAsMCArMSwxMDEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hl cy8yMDEwLTAxL21zZzAwMDMwLmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gUmU6IFJlZ3Jlc3Npb246 IGZpZWxkIHR5cGUgcHJlc2VydmF0aW9uOiA3LjAgLT4gNy4wLjErSEVBRAorCitPbiBGcmlkYXkg MDEgSmFudWFyeSAyMDEwIDIxOjQ1OjA1IEphbiBLcmF0b2NodmlsIHdyb3RlOgorPiAtUEFTUzog Z2RiLm1pL21pLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRp b25zLnMyLnUyLnUxczEKKz4gK0ZBSUw6IGdkYi5taS9taS12YXItY2hpbGQuZXhwOiBnZXQgY2hp bGRyZW4gb2Ygc3RydWN0X2RlY2xhcmF0aW9ucy5zMi51Mi51MXMxCis+IC1QQVNTOiBnZGIubWkv bWkyLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25zLnMy LnUyLnUxczEKKz4gK0ZBSUw6IGdkYi5taS9taTItdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVu IG9mIHN0cnVjdF9kZWNsYXJhdGlvbnMuczIudTIudTFzMQorPiAtUEFTUzogZ2RiLnB5dGhvbi9w eS1taS5leHA6IGV4YW1pbmUgY29udGFpbmVyIGNoaWxkcmVuPTAsIG5vIHByZXR0eS1wcmludGlu ZworPiArRkFJTDogZ2RiLnB5dGhvbi9weS1taS5leHA6IGV4YW1pbmUgY29udGFpbmVyIGNoaWxk cmVuPTAsIG5vIHByZXR0eS1wcmludGluZworPiAKKz4gZHVlIHRvOgorPiBSZTogUkZBOiB1bmJy ZWFrIHR5cGVkZWZlZCBiaXRmaWVsZAorPiBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAwOS0xMi9tc2cwMDI5NS5odG1sCis+IGNvbW1pdCBmYzg1ZGE0ZWUyYTdjMzJhZmM1 M2IxYjMzNGE0Zjg0ZTJlOWJkODRlCis+IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMDktMTIvbXNnMDAxMDAuaHRtbAorCithdHRhY2hlZCBhIGZpeCBvbiB0b3Agb2YgZXhpc3Rp bmcgSEVBRC4KKworT3JpZ2luYWwgUFIgZ2RiLzEwODg0IHdhcyBhIHJlZ3Jlc3Npb24gNi44IC0+ IDcuMCBkdWUgdG86CitSRkM6IExhenkgYml0ZmllbGRzCitodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAwOS0wNy9tc2cwMDQzNy5odG1sCitodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDA5LTA3L21zZzAwMTQzLmh0bWwKKzA3NDkxYjM0MDlmNmFjZTBiN2E5 YTcwNzc3NWE1NmNlMTBmZWNlMWMKKworTm8gcmVncmVzc2lvbnMgZm9yIEhFQUQgb24ge3g4Nl82 NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4gIFBsdXM6CistRkFJTDogZ2Ri Lm1pL21pLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25z LnMyLnUyLnUxczEKKytQQVNTOiBnZGIubWkvbWktdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVu IG9mIHN0cnVjdF9kZWNsYXJhdGlvbnMuczIudTIudTFzMQorLUZBSUw6IGdkYi5taS9taTItdmFy LWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVuIG9mIHN0cnVjdF9kZWNsYXJhdGlvbnMuczIudTIudTFz MQorK1BBU1M6IGdkYi5taS9taTItdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVuIG9mIHN0cnVj dF9kZWNsYXJhdGlvbnMuczIudTIudTFzMQorLUZBSUw6IGdkYi5weXRob24vcHktbWkuZXhwOiBl eGFtaW5lIGNvbnRhaW5lciBjaGlsZHJlbj0wLCBubyBwcmV0dHktcHJpbnRpbmcKKytQQVNTOiBn ZGIucHl0aG9uL3B5LW1pLmV4cDogZXhhbWluZSBjb250YWluZXIgY2hpbGRyZW49MCwgbm8gcHJl dHR5LXByaW50aW5nCisKK0dvaW5nIHRvIGNoZWNrIGl0IGluIGFsc28gZm9yIGdkYl83XzAtYnJh bmNoIGFmdGVyIGFuIGFwcHJvdmFsLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTAt MDEtMDIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSog dmFsdWUuYyAodmFsdWVfcHJpbWl0aXZlX2ZpZWxkKTogUmVtb3ZlIG9uZSBjaGVja190eXBlZGVm IGNhbGwuCisJTW92ZSBiaXRwb3MgYW5kIGNvbnRhaW5lcl9iaXRzaXplIGluaXRpYWxpemF0aW9u IGFmdGVyCisJYWxsb2NhdGVfdmFsdWVfbGF6eS4gIE5ldyBjb21tZW50IGJlZm9yZSBhY2Nlc3Np bmcgVFlQRV9MRU5HVEguCisKK2dkYi90ZXN0c3VpdGUvCisyMDEwLTAxLTAyICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi5taS92YXItY21kLmMg KGRvX2JpdGZpZWxkX3Rlc3RzKTogQ2hhbmdlICJWLnNoYXJhYmxlIiB0eXBlIHRvCisJInVpbnRf Zm9yX21pX3Rlc3RpbmciLgorCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5taS92YXItY21kLmMK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL3Zhci1jbWQuYworQEAgLTQ5NCw3ICs0OTQsNyBA QCB2b2lkIGRvX2JpdGZpZWxkX3Rlc3RzICgpCisgICAgIG1pX2NyZWF0ZV92YXJvYmogViBkICJj cmVhdGUgdmFyb2JqIGZvciBEYXRhIgorICAgICBtaV9saXN0X3Zhcm9ial9jaGlsZHJlbiAiViIg eworICAgICAgICAgeyJWLmFsbG9jIiAiYWxsb2MiICIwIiAiaW50In0KKy0gICAgICAgIHsiVi5z aGFyYWJsZSIgInNoYXJhYmxlIiAiMCIgInVuc2lnbmVkIGludCJ9CisrICAgICAgICB7IlYuc2hh cmFibGUiICJzaGFyYWJsZSIgIjAiICJ1aW50X2Zvcl9taV90ZXN0aW5nIn0KKyAgICAgfSAibGlz dCBjaGlsZHJlbiBvZiBEYXRhIgorICAgICBtaV9jaGVja192YXJvYmpfdmFsdWUgVi5zaGFyYWJs ZSAzICJhY2Nlc3MgYml0ZmllbGQiCisgICAgIDoqLworLS0tIGEvZ2RiL3ZhbHVlLmMKKysrKyBi L2dkYi92YWx1ZS5jCitAQCAtMTg3Myw3ICsxODczLDYgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxk IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBvZmZzZXQsCisgCisgICBDSEVDS19UWVBFREVGIChh cmdfdHlwZSk7CisgICB0eXBlID0gVFlQRV9GSUVMRF9UWVBFIChhcmdfdHlwZSwgZmllbGRubyk7 CistICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisgCisgICAvKiBIYW5kbGUgcGFja2Vk IGZpZWxkcyAqLworIAorQEAgLTE4ODUsMTAgKzE4ODQsMTQgQEAgdmFsdWVfcHJpbWl0aXZlX2Zp ZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBvZmZzZXQsCisgCSBPdGhlcndpc2UsIGFkanVz dCBvZmZzZXQgdG8gdGhlIGJ5dGUgY29udGFpbmluZyB0aGUgZmlyc3QKKyAJIGJpdC4gIEFzc3Vt ZSB0aGF0IHRoZSBhZGRyZXNzLCBvZmZzZXQsIGFuZCBlbWJlZGRlZCBvZmZzZXQKKyAJIGFyZSBz dWZmaWNpZW50bHkgYWxpZ25lZC4gICovCistICAgICAgaW50IGJpdHBvcyA9IFRZUEVfRklFTERf QklUUE9TIChhcmdfdHlwZSwgZmllbGRubyk7CistICAgICAgaW50IGNvbnRhaW5lcl9iaXRzaXpl ID0gVFlQRV9MRU5HVEggKHR5cGUpICogODsKKysgICAgICBpbnQgYml0cG9zLCBjb250YWluZXJf Yml0c2l6ZTsKKyAKKyAgICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CisrCisr ICAgICAgLyogVFlQRV9MRU5HVEggb2YgVFlQRSBnZXRzIGluaXRpYWxpemVkIGJ5IGFsbG9jYXRl X3ZhbHVlX2xhenkuICAqLworKyAgICAgIGJpdHBvcyA9IFRZUEVfRklFTERfQklUUE9TIChhcmdf dHlwZSwgZmllbGRubyk7CisrICAgICAgY29udGFpbmVyX2JpdHNpemUgPSBUWVBFX0xFTkdUSCAo dHlwZSkgKiA4OworKworICAgICAgIHYtPmJpdHNpemUgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKGFy Z190eXBlLCBmaWVsZG5vKTsKKyAgICAgICBpZiAoKGJpdHBvcyAlIGNvbnRhaW5lcl9iaXRzaXpl KSArIHYtPmJpdHNpemUgPD0gY29udGFpbmVyX2JpdHNpemUKKyAJICAmJiBUWVBFX0xFTkdUSCAo dHlwZSkgPD0gKGludCkgc2l6ZW9mIChMT05HRVNUKSkKK0BAIC0xOTM5LDYgKzE5NDIsOCBAQCB2 YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IG9mZnNldCwKKyAg ICAgICBlbHNlCisgCXsKKyAJICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKworKwkgIC8q IFRZUEVfTEVOR1RIIG9mIFRZUEUgZ2V0cyBpbml0aWFsaXplZCBieSBhbGxvY2F0ZV92YWx1ZS4g ICovCisgCSAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLAorIAkJICB2YWx1ZV9jb250 ZW50c19yYXcgKGFyZzEpICsgb2Zmc2V0LAorIAkJICBUWVBFX0xFTkdUSCAodHlwZSkpOworCgpk aWZmIC0tZ2l0IGEvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtY2xlYW51cC5wYXRjaCBiL2dkYi1iejUy ODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMmE4NDNmYQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejUyODY2OC1zeW1maWxlLWNs ZWFudXAucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDA5LTEwL21zZzAwNTA5Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaCAyLzNdIGZp bmRfc2VwYXJhdGVfZGVidWdfZmlsZSBjbGVhbnVwCisKK0hpLAorCitjdXJyZW50IGNvZGUgd2Fz OgorKiBkaWZmaWN1bHQgdG8gbWFpbnRhaW4gYXMgYSBuZXcgdmFyaWFibGUgcmVxdWlyZWQgeGZy ZWUgb24gbWFueSBwbGFjZXMKKyogd2FzIGNhdXNpbmcgbWVtb3J5IGNvcnJ1cHRpb25zIGR1ZSB0 byBzaWxlbnRseSBtaXNhcHBsaWVkIDNyZCBwYXJ0eSBwYXRjaGVzCisgIGFzIHRoZSBjbG9zZSBj b2RlIGZyYWdtZW50cyB1bmZvcnR1bmF0ZWx5IG1hdGNoIHBhdGNoIGNvbnRleHQKKworCitUaGFu a3MsCitKYW4KKworCitnZGIvCisyMDA5LTEwLTIxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIHN5bWZpbGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19m aWxlKTogSW5pdGlhbGl6ZSBkaXIsIGRlYnVnZmlsZSBhbmQKKwljYW5vbl9uYW1lIHRvIE5VTEwu ICBDaGFuZ2UgYWxsb2NhIHRvIHhtYWxsb2MsIG5ld2x5IGNhbGwgeGZyZWUgZm9yIGl0LgorCU5l dyBsYWJlbCBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGUsIGp1bXAgdG8gaXQgZnJvbSB0aGUgZmFp bHVyZSBwYXRocy4KKworLS0tIGEvZ2RiL3N5bWZpbGUuYworKysrIGIvZ2RiL3N5bWZpbGUuYwor QEAgLTEzMzMsMTEgKzEzMzMsMTAgQEAgc3RhdGljIGNoYXIgKgorIGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgeworICAgYXNlY3Rpb24gKnNlY3Q7 CistICBjaGFyICpiYXNlbmFtZTsKKy0gIGNoYXIgKmRpcjsKKy0gIGNoYXIgKmRlYnVnZmlsZTsK Ky0gIGNoYXIgKm5hbWVfY29weTsKKy0gIGNoYXIgKmNhbm9uX25hbWU7CisrICBjaGFyICpiYXNl bmFtZSwgKm5hbWVfY29weTsKKysgIGNoYXIgKmRpciA9IE5VTEw7CisrICBjaGFyICpkZWJ1Z2Zp bGUgPSBOVUxMOworKyAgY2hhciAqY2Fub25fbmFtZSA9IE5VTEw7CisgICBiZmRfc2l6ZV90eXBl IGRlYnVnbGlua19zaXplOworICAgdW5zaWduZWQgbG9uZyBjcmMzMjsKKyAgIGludCBpOworQEAg LTEzNjYsNyArMTM2NSw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUpCisgICBpZiAoYmFzZW5hbWUgPT0gTlVMTCkKKyAgICAgLyogVGhlcmUncyBu byBzZXBhcmF0ZSBkZWJ1ZyBpbmZvLCBoZW5jZSB0aGVyZSdzIG5vIHdheSB3ZSBjb3VsZAorICAg ICAgICBsb2FkIGl0ID0+IG5vIHdhcm5pbmcuICAqLworLSAgICByZXR1cm4gTlVMTDsKKysgICAg Z290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7CisgCisgICBkaXIgPSB4c3RyZHVwIChvYmpm aWxlLT5uYW1lKTsKKyAKK0BAIC0xMzg4LDI0ICsxMzg3LDE5IEBAIGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICBpZiAoY2Fub25fbmFtZSAmJiBz dHJsZW4gKGNhbm9uX25hbWUpID4gaSkKKyAgICAgaSA9IHN0cmxlbiAoY2Fub25fbmFtZSk7Cisg CistICBkZWJ1Z2ZpbGUgPSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9kaXJlY3RvcnkpICsg MQorLSAgICAgICAgICAgICAgICAgICAgICArIGkKKy0gICAgICAgICAgICAgICAgICAgICAgKyBz dHJsZW4gKERFQlVHX1NVQkRJUkVDVE9SWSkKKy0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJs ZW4gKCIvIikKKy0gICAgICAgICAgICAgICAgICAgICAgKyBzdHJsZW4gKGJhc2VuYW1lKQorLSAg ICAgICAgICAgICAgICAgICAgICArIDEpOworKyAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVu IChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxCisrCQkgICAgICAgKyBpCisrCQkgICAgICAgKyBz dHJsZW4gKERFQlVHX1NVQkRJUkVDVE9SWSkKKysJCSAgICAgICArIHN0cmxlbiAoIi8iKQorKwkJ ICAgICAgICsgc3RybGVuIChiYXNlbmFtZSkKKysJCSAgICAgICArIDEpOworIAorICAgLyogRmly c3QgdHJ5IGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgb3JpZ2luYWwgZmlsZS4gICovCisg ICBzdHJjcHkgKGRlYnVnZmlsZSwgZGlyKTsKKyAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFt ZSk7CisgCisgICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3Jj MzIsIG9iamZpbGUtPm5hbWUpKQorLSAgICB7CistICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKKy0g ICAgICB4ZnJlZSAoZGlyKTsKKy0gICAgICB4ZnJlZSAoY2Fub25fbmFtZSk7CistICAgICAgcmV0 dXJuIHhzdHJkdXAgKGRlYnVnZmlsZSk7CistICAgIH0KKysgICAgZ290byBjbGVhbnVwX3JldHVy bl9kZWJ1Z2ZpbGU7CisgCisgICAvKiBUaGVuIHRyeSBpbiB0aGUgc3ViZGlyZWN0b3J5IG5hbWVk IERFQlVHX1NVQkRJUkVDVE9SWS4gICovCisgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGlyKTsKK0BA IC0xNDE0LDEyICsxNDA4LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKKyAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCisgICBp ZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUt Pm5hbWUpKQorLSAgICB7CistICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKKy0gICAgICB4ZnJlZSAo ZGlyKTsKKy0gICAgICB4ZnJlZSAoY2Fub25fbmFtZSk7CistICAgICAgcmV0dXJuIHhzdHJkdXAg KGRlYnVnZmlsZSk7CistICAgIH0KKysgICAgZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7 CisgCisgICAvKiBUaGVuIHRyeSBpbiB0aGUgZ2xvYmFsIGRlYnVnZmlsZSBkaXJlY3RvcnkuICAq LworICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKK0BAIC0xNDI4 LDEyICsxNDE3LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKKyAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCisgICBpZiAoc2Vw YXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUtPm5hbWUp KQorLSAgICB7CistICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKKy0gICAgICB4ZnJlZSAoZGlyKTsK Ky0gICAgICB4ZnJlZSAoY2Fub25fbmFtZSk7CistICAgICAgcmV0dXJuIHhzdHJkdXAgKGRlYnVn ZmlsZSk7CistICAgIH0KKysgICAgZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7CisgCisg ICAvKiBJZiB0aGUgZmlsZSBpcyBpbiB0aGUgc3lzcm9vdCwgdHJ5IHVzaW5nIGl0cyBiYXNlIHBh dGggaW4gdGhlCisgICAgICBnbG9iYWwgZGVidWdmaWxlIGRpcmVjdG9yeS4gICovCitAQCAtMTQ0 NywyMCArMTQzMSwxNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQorICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCisgICAg ICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpm aWxlLT5uYW1lKSkKKy0JeworLQkgIHhmcmVlIChjYW5vbl9uYW1lKTsKKy0JICB4ZnJlZSAoYmFz ZW5hbWUpOworLQkgIHhmcmVlIChkaXIpOworLQkgIHJldHVybiB4c3RyZHVwIChkZWJ1Z2ZpbGUp OworLQl9CisrCWdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOworICAgICB9CisgICAKKy0g IGlmIChjYW5vbl9uYW1lKQorLSAgICB4ZnJlZSAoY2Fub25fbmFtZSk7CisrICB4ZnJlZSAoZGVi dWdmaWxlKTsKKysgIGRlYnVnZmlsZSA9IE5VTEw7CisgCisrY2xlYW51cF9yZXR1cm5fZGVidWdm aWxlOgorKyAgeGZyZWUgKGNhbm9uX25hbWUpOworICAgeGZyZWUgKGJhc2VuYW1lKTsKKyAgIHhm cmVlIChkaXIpOworLSAgcmV0dXJuIE5VTEw7CisrICByZXR1cm4gZGVidWdmaWxlOworIH0KKyAK KyAKKwoKZGlmZiAtLWdpdCBhL2dkYi1iejUyODY2OC1zeW1maWxlLW11bHRpLnBhdGNoIGIvZ2Ri LWJ6NTI4NjY4LXN5bWZpbGUtbXVsdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZTc3M2YyZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejUyODY2OC1zeW1maWxl LW11bHRpLnBhdGNoCkBAIC0wLDAgKzEsMjcxIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAwOS0xMC9tc2cwMDUwOC5odG1sCitTdWJqZWN0OiBbcGF0Y2ggMy8zXSBk ZWJ1Zy1maWxlLWRpcmVjdG9yeSB3aXRoIG11bHRpcGxlIGNvbXBvbmVudHMKKworSGksCisKK2Zv ciB2YXJpb3VzIHJlYXNvbnMgYGRlYnVnLWZpbGUtZGlyZWN0b3J5JyB3b3VsZCBiZSBzb21ldGlt ZXMgdXNlZnVsIHRvIGhhdmUKK211bHRpcGxlIGNvbXBvbmVudHMgc3VjaCBhcyBgc29saWItc2Vh cmNoLXBhdGgnIGhhcy4KKworSSBmb3VuZCBpdCB1c2VmdWwgbXlzZWxmIGR1cmluZyB2YXJpb3Vz IHNlcGFyYXRlIGRlYnVnaW5mbyB0ZXN0cy9zY3JpcHRzLgorCitJdCB3YXMgcmVxdWVzdGVkIGZv ciB0aGUgQUJSVCBidWdyZXBvcnRpbmcgcHJvamVjdCBhdCB0aGUgcHJlY2VkaW5nIG1haWwgb2Y6 CisJaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL3BpcGVybWFpbC9jcmFzaC1jYXRjaGVyLzIwMDkt T2N0b2Jlci8wMDAwNTQuaHRtbAorCitJdCBzaG91bGQgYmUgYSBiYWNrd2FyZCBjb21wYXRpYmxl IGV4dGVuc2lvbiBhcyBESVJOQU1FX1NFUEFSQVRPUiBzaG91bGQgbmV2ZXIKK2JlIGEgdmFsaWQg cGFydCBvZiBhIHNpbmdsZSBERUJVR19GSUxFX0RJUkVDVE9SWSBjb21wb25lbnQuCisKKworVGhh bmtzLAorSmFuCisKKworZ2RiL2RvYy8KKzIwMDktMTAtMjIgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2RiLnRleGluZm8gKHNldCBkZWJ1Zy1maWxl LWRpcmVjdG9yeSwgc2hvdyBkZWJ1Zy1maWxlLWRpcmVjdG9yeSkKKwkoQXV0by1sb2FkaW5nKTog VXNlIHBsdXJhbCBhbmQgbm90ZSBvbmUgY2FuIHVzZSBtdWx0aXBsZSBjb21wb25lbnRzIG5vdy4K KworZ2RiLworMjAwOS0xMC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorCisJKiBzeW1maWxlLmMgKGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3 IHZhcmlhYmxlIGRlYnVnZGlyLiAgTW92ZQorCXZhcmlhYmxlcyBzaXplLCBzIGFuZCBkYXRhIGlu dG8gYSBuZXcgaW5uZXIgYmxvY2suICBDaGFuZ2UgeG1hbGxvYyBmb3IKKwlhbGxvY2EsIHVzZSBk aXJlY3QgQlVJTERJRC0+U0laRSB0aGVyZSBub3cuICBMb29wIGZvciB0aGUKKwlERUJVR19GSUxF X0RJUkVDVE9SWSBjb21wb25lbnRzLgorCShmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUpOiBOZXcg dmFyaWFibGUgZGVidWdkaXIgYW5kIGRlYnVnZGlyX2VuZC4KKwlMb29wIGZvciB0aGUgREVCVUdf RklMRV9ESVJFQ1RPUlkgY29tcG9uZW50cy4KKwkoX2luaXRpYWxpemVfc3ltZmlsZSk6IEZvciAi ZGVidWctZmlsZS1kaXJlY3RvcnkiIHVzZSBwbHVyYWwgYW5kIG5vdGUKKwlvbmUgY2FuIHVzZSBt dWx0aXBsZSBjb21wb25lbnRzIG5vdy4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMDktMTAtMjIgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2RiLmJhc2Uv c2VwZGVidWcuZXhwOiBOZXcgdGVzdF9kaWZmZXJlbnRfZGlyIGNhbGwgZm9yIG11bHRpcGxlLWRp cnMuCisKKy0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KKysrKyBiL2dkYi9kb2MvZ2RiLnRleGlu Zm8KK0BAIC0xNDA2NiwxMyArMTQwNjYsMTQgQEAgbmFtZSBAdmFsdWV7R0RCTn0gaXMgY3VycmVu dGx5IHVzaW5nLgorIEB0YWJsZSBAY29kZQorIAorIEBraW5kZXggc2V0IGRlYnVnLWZpbGUtZGly ZWN0b3J5CistQGl0ZW0gc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQor LVNldCB0aGUgZGlyZWN0b3J5IHdoaWNoIEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3Igc2VwYXJh dGUgZGVidWdnaW5nCistaW5mb3JtYXRpb24gZmlsZXMgdG8gQHZhcntkaXJlY3Rvcnl9LgorK0Bp dGVtIHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yaWVzfQorK1NldCB0aGUg ZGlyZWN0b3JpZXMgd2hpY2ggQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1 Z2dpbmcKKytpbmZvcm1hdGlvbiBmaWxlcyB0byBAdmFye2RpcmVjdG9yeX0uICBNdWx0aXBsZSBk aXJlY3RvcnkgY29tcG9uZW50cyBjYW4gYmUgc2V0CisrY29uY2F0ZW5hdGluZyB0aGVtIGJ5IGEg ZGlyZWN0b3J5IHNlcGFyYXRvci4KKyAKKyBAa2luZGV4IHNob3cgZGVidWctZmlsZS1kaXJlY3Rv cnkKKyBAaXRlbSBzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5CistU2hvdyB0aGUgZGlyZWN0b3J5 IEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3Igc2VwYXJhdGUgZGVidWdnaW5nCisrU2hvdyB0aGUg ZGlyZWN0b3JpZXMgQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1Z2dpbmcK KyBpbmZvcm1hdGlvbiBmaWxlcy4KKyAKKyBAZW5kIHRhYmxlCitAQCAtMTkzMzYsOCArMTkzMzcs OCBAQCByZWFkYWJsZSwgQHZhbHVle0dEQk59IHdpbGwgZXZhbHVhdGUgaXQgYXMgYSBQeXRob24g c2NyaXB0LgorIAorIElmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5kIGlmIHRoZSBwYXJh bWV0ZXIKKyBAY29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0gaXMgc2V0IChAcHhyZWZ7U2VwYXJh dGUgRGVidWcgRmlsZXN9KSwKKy10aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSB0aGUgZmlsZSBu YW1lZAorLUBmaWxle0B2YXJ7ZGVidWctZmlsZS1kaXJlY3Rvcnl9L0B2YXJ7cmVhbC1uYW1lfX0s IHdoZXJlCisrdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgZm9yIGl0cyBlYWNoIHNlcGFyYXRl ZCBkaXJlY3RvcnkgY29tcG9uZW50CisrQGNvZGV7Y29tcG9uZW50fSB0aGUgZmlsZSBuYW1lZCBA ZmlsZXtAY29kZXtjb21wb25lbnR9L0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCisgQHZhcntyZWFs LW5hbWV9IGlzIHRoZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFtZSwgYXMgZGVzY3JpYmVkIGFib3Zl LgorIAorIEZpbmFsbHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBAdmFsdWV7 R0RCTn0gd2lsbCBsb29rIGZvcgorLS0tIGEvZ2RiL3N5bWZpbGUuYworKysrIGIvZ2RiL3N5bWZp bGUuYworQEAgLTEyMTgsMzUgKzEyMTgsNTkgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFy ICpmaWxlbmFtZSwgc3RydWN0IGJ1aWxkX2lkICpjaGVjaykKKyBzdGF0aWMgY2hhciAqCisgYnVp bGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQpCisgewor LSAgY2hhciAqbGluaywgKnMsICpyZXR2YWwgPSBOVUxMOworLSAgZ2RiX2J5dGUgKmRhdGEgPSBi dWlsZF9pZC0+ZGF0YTsKKy0gIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7CisrICBjaGFy ICpsaW5rLCAqZGVidWdkaXIsICpyZXR2YWwgPSBOVUxMOworIAorICAgLyogREVCVUdfRklMRV9E SVJFQ1RPUlkvLmJ1aWxkLWlkL2FiL2NkZWYgKi8KKy0gIGxpbmsgPSB4bWFsbG9jIChzdHJsZW4g KGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIChzaXplb2YgIi8uYnVpbGQtaWQvIiAtIDEpICsgMQor LQkJICArIDIgKiBzaXplICsgKHNpemVvZiAiLmRlYnVnIiAtIDEpICsgMSk7CistICBzID0gbGlu ayArIHNwcmludGYgKGxpbmssICIlcy8uYnVpbGQtaWQvIiwgZGVidWdfZmlsZV9kaXJlY3Rvcnkp OworLSAgaWYgKHNpemUgPiAwKQorLSAgICB7CistICAgICAgc2l6ZS0tOworLSAgICAgIHMgKz0g c3ByaW50ZiAocywgIiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOworLSAgICB9CistICBpZiAo c2l6ZSA+IDApCistICAgICpzKysgPSAnLyc7CistICB3aGlsZSAoc2l6ZS0tID4gMCkKKy0gICAg cyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CistICBzdHJjcHkg KHMsICIuZGVidWciKTsKKy0KKy0gIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZv ciB0aGUgdXN1YWxseSBub24tZXhpc3RlbnQgZmlsZXMuICAqLworLSAgaWYgKGFjY2VzcyAobGlu aywgRl9PSykgPT0gMCkKKy0gICAgcmV0dmFsID0gbHJlYWxwYXRoIChsaW5rKTsKKy0gIHhmcmVl IChsaW5rKTsKKy0KKy0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChy ZXR2YWwsIGJ1aWxkX2lkKSkKKysgIGxpbmsgPSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9k aXJlY3RvcnkpICsgKHNpemVvZiAiLy5idWlsZC1pZC8iIC0gMSkgKyAxCisrCQkgKyAyICogYnVp bGRfaWQtPnNpemUgKyAoc2l6ZW9mICIuZGVidWciIC0gMSkgKyAxKTsKKysKKysgIC8qIEtlZXAg YmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNUT1JZIGJlaW5n ICIiIHdpbGwKKysgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4gICovCisrCisr ICBkZWJ1Z2RpciA9IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OworKyAgZG8KKyAgICAgeworLSAgICAg IHhmcmVlIChyZXR2YWwpOworLSAgICAgIHJldHZhbCA9IE5VTEw7CisrICAgICAgY2hhciAqcywg KmRlYnVnZGlyX2VuZDsKKysgICAgICBnZGJfYnl0ZSAqZGF0YSA9IGJ1aWxkX2lkLT5kYXRhOwor KyAgICAgIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7CisrCisrICAgICAgd2hpbGUgKCpk ZWJ1Z2RpciA9PSBESVJOQU1FX1NFUEFSQVRPUikKKysJZGVidWdkaXIrKzsKKysKKysgICAgICBk ZWJ1Z2Rpcl9lbmQgPSBzdHJjaHIgKGRlYnVnZGlyLCBESVJOQU1FX1NFUEFSQVRPUik7CisrICAg ICAgaWYgKGRlYnVnZGlyX2VuZCA9PSBOVUxMKQorKwlkZWJ1Z2Rpcl9lbmQgPSAmZGVidWdkaXJb c3RybGVuIChkZWJ1Z2RpcildOworKworKyAgICAgIG1lbWNweSAobGluaywgZGVidWdkaXIsIGRl YnVnZGlyX2VuZCAtIGRlYnVnZGlyKTsKKysgICAgICBzID0gJmxpbmtbZGVidWdkaXJfZW5kIC0g ZGVidWdkaXJdOworKyAgICAgIHMgKz0gc3ByaW50ZiAocywgIi8uYnVpbGQtaWQvIik7CisrICAg ICAgaWYgKHNpemUgPiAwKQorKwl7CisrCSAgc2l6ZS0tOworKwkgIHMgKz0gc3ByaW50ZiAocywg IiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOworKwl9CisrICAgICAgaWYgKHNpemUgPiAwKQor KwkqcysrID0gJy8nOworKyAgICAgIHdoaWxlIChzaXplLS0gPiAwKQorKwlzICs9IHNwcmludGYg KHMsICIlMDJ4IiwgKHVuc2lnbmVkKSAqZGF0YSsrKTsKKysgICAgICBzdHJjcHkgKHMsICIuZGVi dWciKTsKKysKKysgICAgICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZlbiBmb3IgdGhl IHVzdWFsbHkgbm9uLWV4aXN0ZW50IGZpbGVzLiAgKi8KKysgICAgICBpZiAoYWNjZXNzIChsaW5r LCBGX09LKSA9PSAwKQorKwlyZXR2YWwgPSBscmVhbHBhdGggKGxpbmspOworKworKyAgICAgIGlm IChyZXR2YWwgIT0gTlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChyZXR2YWwsIGJ1aWxkX2lkKSkK KysJeworKwkgIHhmcmVlIChyZXR2YWwpOworKwkgIHJldHZhbCA9IE5VTEw7CisrCX0KKysKKysg ICAgICBpZiAocmV0dmFsICE9IE5VTEwpCisrCWJyZWFrOworKworKyAgICAgIGRlYnVnZGlyID0g ZGVidWdkaXJfZW5kOworICAgICB9CisrICB3aGlsZSAoKmRlYnVnZGlyICE9IDApOworIAorICAg cmV0dXJuIHJldHZhbDsKKyB9CitAQCAtMTMzMyw3ICsxMzU3LDcgQEAgc3RhdGljIGNoYXIgKgor IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgewor ICAgYXNlY3Rpb24gKnNlY3Q7CistICBjaGFyICpiYXNlbmFtZSwgKm5hbWVfY29weTsKKysgIGNo YXIgKmJhc2VuYW1lLCAqbmFtZV9jb3B5LCAqZGVidWdkaXI7CisgICBjaGFyICpkaXIgPSBOVUxM OworICAgY2hhciAqZGVidWdmaWxlID0gTlVMTDsKKyAgIGNoYXIgKmNhbm9uX25hbWUgPSBOVUxM OworQEAgLTE0MTAsMjkgKzE0MzQsNTEgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAo ZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCisgICAgIGdvdG8gY2xlYW51cF9yZXR1 cm5fZGVidWdmaWxlOworIAorLSAgLyogVGhlbiB0cnkgaW4gdGhlIGdsb2JhbCBkZWJ1Z2ZpbGUg ZGlyZWN0b3J5LiAgKi8KKy0gIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9y eSk7CistICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKKy0gIHN0cmNhdCAoZGVidWdmaWxlLCBk aXIpOworLSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKKy0KKy0gIGlmIChzZXBhcmF0 ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCist ICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOworKyAgLyogVGhlbiB0cnkgaW4gdGhl IGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3JpZXMuCisrIAorKyAgICAgS2VlcCBiYWNrd2FyZCBj b21wYXRpYmlsaXR5IHNvIHRoYXQgREVCVUdfRklMRV9ESVJFQ1RPUlkgYmVpbmcgIiIgd2lsbAor KyAgICAgY2F1c2UgIi8uLi4iIGxvb2t1cHMuICAqLworIAorLSAgLyogSWYgdGhlIGZpbGUgaXMg aW4gdGhlIHN5c3Jvb3QsIHRyeSB1c2luZyBpdHMgYmFzZSBwYXRoIGluIHRoZQorLSAgICAgZ2xv YmFsIGRlYnVnZmlsZSBkaXJlY3RvcnkuICAqLworLSAgaWYgKGNhbm9uX25hbWUKKy0gICAgICAm JiBzdHJuY21wIChjYW5vbl9uYW1lLCBnZGJfc3lzcm9vdCwgc3RybGVuIChnZGJfc3lzcm9vdCkp ID09IDAKKy0gICAgICAmJiBJU19ESVJfU0VQQVJBVE9SIChjYW5vbl9uYW1lW3N0cmxlbiAoZ2Ri X3N5c3Jvb3QpXSkpCisrICBkZWJ1Z2RpciA9IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OworKyAgZG8K KyAgICAgeworLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7 CistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGNhbm9uX25hbWUgKyBzdHJsZW4gKGdkYl9zeXNy b290KSk7CisrICAgICAgY2hhciAqZGVidWdkaXJfZW5kOworKworKyAgICAgIHdoaWxlICgqZGVi dWdkaXIgPT0gRElSTkFNRV9TRVBBUkFUT1IpCisrCWRlYnVnZGlyKys7CisrCisrICAgICAgZGVi dWdkaXJfZW5kID0gc3RyY2hyIChkZWJ1Z2RpciwgRElSTkFNRV9TRVBBUkFUT1IpOworKyAgICAg IGlmIChkZWJ1Z2Rpcl9lbmQgPT0gTlVMTCkKKysJZGVidWdkaXJfZW5kID0gJmRlYnVnZGlyW3N0 cmxlbiAoZGVidWdkaXIpXTsKKysKKysgICAgICBtZW1jcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIs IGRlYnVnZGlyX2VuZCAtIGRlYnVnZGlyKTsKKysgICAgICBkZWJ1Z2ZpbGVbZGVidWdkaXJfZW5k IC0gZGVidWdkaXJdID0gMDsKKyAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKKysgICAg ICBzdHJjYXQgKGRlYnVnZmlsZSwgZGlyKTsKKyAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFz ZW5hbWUpOworIAorICAgICAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdm aWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCisgCWdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdm aWxlOworKworKyAgICAgIC8qIElmIHRoZSBmaWxlIGlzIGluIHRoZSBzeXNyb290LCB0cnkgdXNp bmcgaXRzIGJhc2UgcGF0aCBpbiB0aGUKKysJIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAg Ki8KKysgICAgICBpZiAoY2Fub25fbmFtZQorKwkgICYmIHN0cm5jbXAgKGNhbm9uX25hbWUsIGdk Yl9zeXNyb290LCBzdHJsZW4gKGdkYl9zeXNyb290KSkgPT0gMAorKwkgICYmIElTX0RJUl9TRVBB UkFUT1IgKGNhbm9uX25hbWVbc3RybGVuIChnZGJfc3lzcm9vdCldKSkKKysJeworKwkgIG1lbWNw eSAoZGVidWdmaWxlLCBkZWJ1Z2RpciwgZGVidWdkaXJfZW5kIC0gZGVidWdkaXIpOworKwkgIGRl YnVnZmlsZVtkZWJ1Z2Rpcl9lbmQgLSBkZWJ1Z2Rpcl0gPSAwOworKwkgIHN0cmNhdCAoZGVidWdm aWxlLCBjYW5vbl9uYW1lICsgc3RybGVuIChnZGJfc3lzcm9vdCkpOworKwkgIHN0cmNhdCAoZGVi dWdmaWxlLCAiLyIpOworKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisrCisrCSAg aWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxl LT5uYW1lKSkKKysJICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOworKwl9CisrCisr ICAgICAgZGVidWdkaXIgPSBkZWJ1Z2Rpcl9lbmQ7CisgICAgIH0KKysgIHdoaWxlICgqZGVidWdk aXIgIT0gMCk7CisgICAKKyAgIHhmcmVlIChkZWJ1Z2ZpbGUpOworICAgZGVidWdmaWxlID0gTlVM TDsKK0BAIC00MTczLDEyICs0MjE5LDEyIEBAIFVzYWdlOiBzZXQgZXh0ZW5zaW9uLWxhbmd1YWdl IC5mb28gYmFyIiksCisgCisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJk ZWJ1Zy1maWxlLWRpcmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCisgCQkJCSAgICAgJmRlYnVnX2Zp bGVfZGlyZWN0b3J5LCBfKCJcCistU2V0IHRoZSBkaXJlY3Rvcnkgd2hlcmUgc2VwYXJhdGUgZGVi dWcgc3ltYm9scyBhcmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCistU2hvdyB0aGUgZGlyZWN0b3J5 IHdoZXJlIHNlcGFyYXRlIGRlYnVnIHN5bWJvbHMgYXJlIHNlYXJjaGVkIGZvci4iKSwgXygiXAor K1NldCB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9scyBhcmUgc2Vh cmNoZWQgZm9yLiIpLCBfKCJcCisrU2hvdyB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUg ZGVidWcgc3ltYm9scyBhcmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCisgU2VwYXJhdGUgZGVidWcg c3ltYm9scyBhcmUgZmlyc3Qgc2VhcmNoZWQgZm9yIGluIHRoZSBzYW1lXG5cCisgZGlyZWN0b3J5 IGFzIHRoZSBiaW5hcnksIHRoZW4gaW4gdGhlIGAiIERFQlVHX1NVQkRJUkVDVE9SWSAiJyBzdWJk aXJlY3RvcnksXG5cCisgYW5kIGxhc3RseSBhdCB0aGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IG9m IHRoZSBiaW5hcnkgd2l0aFxuXAorLXRoZSBnbG9iYWwgZGVidWctZmlsZSBkaXJlY3RvcnkgcHJl cGVuZGVkLiIpLAorK2VhY2ggZ2xvYmFsIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGNvbXBvbmVudCBw cmVwZW5kZWQuIiksCisgCQkJCSAgICAgTlVMTCwKKyAJCQkJICAgICBzaG93X2RlYnVnX2ZpbGVf ZGlyZWN0b3J5LAorIAkJCQkgICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOworLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1Zy5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2VwZGVidWcuZXhwCitAQCAtOTk1LDYgKzk5NSwxMiBAQCBpZiAhW3N0cmluZyBjb21wYXJl ICRidWlsZF9pZF9kZWJ1Z19maWxlbmFtZSAiIl0gdGhlbiB7CisgCisgICAgIHRlc3RfZGlmZmVy ZW50X2RpciBidWlsZC1pZCAiJHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCisgCisrICAgICMg VGVzdCBhbHNvIG11bHRpcGxlIGRpcmVjdG9yaWVzIGNhbiBiZSBzcGVjaWZpZWQuICBXaXRob3V0 IHRoZSBidWlsZC1pZAorKyAgICAjIHJlZmVyZW5jZSBHREIgd291bGQgZmluZCB0aGUgc2VwYXJh dGUgZGVidWcgaW5mbyBqdXN0IGF0IHRoZSBzYW1lCisrICAgICMgbG9jYXRpb24gYXMgdGhlIGV4 ZWN1dGFibGUgZmlsZS4KKysKKysgICAgdGVzdF9kaWZmZXJlbnRfZGlyIG11bHRpcGxlLWRpcnMg Ii9kb2Vzbm90ZXhpc3Q6JHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCisrCisgICAgICMgU3Bh cmUgZGVidWcgZmlsZXMgbWF5IGNvbmZ1c2UgdGVzdHN1aXRlIHJ1bnMgaW4gdGhlIGZ1dHVyZS4K KyAgICAgcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC1mICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtidWls ZF9pZF9kZWJ1Z19maWxlbmFtZX0iCisgfQorCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTI4NjY4LXN5 bWZpbGUtc2VwY3JjLnBhdGNoIGIvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtc2VwY3JjLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4N2U0NWYKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItYno1Mjg2Njgtc3ltZmlsZS1zZXBjcmMucGF0Y2gKQEAgLTAsMCArMSwxNTEgQEAK K2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTEwL21zZzAwNTA3Lmh0 bWwKK1N1YmplY3Q6IFtwYXRjaCAxLzNdIHByaW50IHRoZSAuZGVidWcgZmlsZSBuYW1lIGhhdmlu ZyBDUkMgbWlzbWF0Y2gKKworSGksCisKK3RoaXMgcGF0Y2ggaXMgbGVmdCBhcyBpcyBmcm9tIEFu ZHJldyBDYWduZXkuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAwNS0wNC0wMiAgQW5k cmV3IENhZ25leSAgPGNhZ25leUBnbnUub3JnPgorCisJKiBzeW1maWxlLmMgKHNlcGFyYXRlX2Rl YnVnX2ZpbGVfZXhpc3RzKTogV2hlbiB0aGUgQ1JDcyBtaXNtYXRjaAorCXByaW50IGEgd2Fybmlu Zy4KKwkoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogUGFzcyBpbiB0aGUgb2JqZmlsZSdzIG5h bWUuCisKK2dkYi90ZXN0c3VpdGUvCisyMDA5LTEwLTIxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi5iYXNlL3NlcGRlYnVnLmV4cCAoQ1JDIG1p c21hdGNoIGlzIHJlcG9ydGVkKTogTmV3IHRlc3QuCisJKiBnZGIuYmFzZS9zZXBkZWJ1ZzIuYzog TmV3IGZpbGUuCisKKy0tLSBhL2dkYi9zeW1maWxlLmMKKysrKyBiL2dkYi9zeW1maWxlLmMKK0BA IC0xMjgzLDcgKzEyODMsOCBAQCBnZXRfZGVidWdfbGlua19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgdW5zaWduZWQgbG9uZyAqY3JjMzJfb3V0KQorIH0KKyAKKyBzdGF0aWMgaW50Cist c2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxv bmcgY3JjKQorK3NlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1 bnNpZ25lZCBsb25nIGNyYywKKysJCQkgICAgY29uc3QgY2hhciAqcGFyZW50X25hbWUpCisgewor ICAgdW5zaWduZWQgbG9uZyBmaWxlX2NyYyA9IDA7CisgICBiZmQgKmFiZmQ7CitAQCAtMTMwMyw3 ICsxMzA0LDE1IEBAIHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1l LCB1bnNpZ25lZCBsb25nIGNyYykKKyAKKyAgIGJmZF9jbG9zZSAoYWJmZCk7CisgCistICByZXR1 cm4gY3JjID09IGZpbGVfY3JjOworKyAgaWYgKGNyYyAhPSBmaWxlX2NyYykKKysgICAgeworKyAg ICAgIHdhcm5pbmcgKF8oInRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3VuZCBpbiBcIiVzXCIiCisr CQkgIiBkb2VzIG5vdCBtYXRjaCBcIiVzXCIgKENSQyBtaXNtYXRjaCkuXG4iKSwKKysJICAgICAg IG5hbWUsIHBhcmVudF9uYW1lKTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgcmV0 dXJuIDE7CisgfQorIAorIGNoYXIgKmRlYnVnX2ZpbGVfZGlyZWN0b3J5ID0gTlVMTDsKK0BAIC0x MzU1LDYgKzEzNjQsOCBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQorICAgYmFzZW5hbWUgPSBnZXRfZGVidWdfbGlua19pbmZvIChvYmpmaWxlLCAm Y3JjMzIpOworIAorICAgaWYgKGJhc2VuYW1lID09IE5VTEwpCisrICAgIC8qIFRoZXJlJ3Mgbm8g c2VwYXJhdGUgZGVidWcgaW5mbywgaGVuY2UgdGhlcmUncyBubyB3YXkgd2UgY291bGQKKysgICAg ICAgbG9hZCBpdCA9PiBubyB3YXJuaW5nLiAgKi8KKyAgICAgcmV0dXJuIE5VTEw7CisgCisgICBk aXIgPSB4c3RyZHVwIChvYmpmaWxlLT5uYW1lKTsKK0BAIC0xMzg4LDcgKzEzOTksNyBAQCBmaW5k X3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgc3RyY3B5 IChkZWJ1Z2ZpbGUsIGRpcik7CisgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOworIAor LSAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkKKysg IGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmls ZS0+bmFtZSkpCisgICAgIHsKKyAgICAgICB4ZnJlZSAoYmFzZW5hbWUpOworICAgICAgIHhmcmVl IChkaXIpOworQEAgLTE0MDIsNyArMTQxMyw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKKyAg IHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCistICBpZiAoc2VwYXJhdGVfZGVidWdf ZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIpKQorKyAgaWYgKHNlcGFyYXRlX2RlYnVnX2Zp bGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkKKyAgICAgeworICAg ICAgIHhmcmVlIChiYXNlbmFtZSk7CisgICAgICAgeGZyZWUgKGRpcik7CitAQCAtMTQxNiw3ICsx NDI3LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKKyAgIHN0cmNhdCAoZGVidWdmaWxlLCBkaXIpOworICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJh c2VuYW1lKTsKKyAKKy0gIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxl LCBjcmMzMikpCisrICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwg Y3JjMzIsIG9iamZpbGUtPm5hbWUpKQorICAgICB7CisgICAgICAgeGZyZWUgKGJhc2VuYW1lKTsK KyAgICAgICB4ZnJlZSAoZGlyKTsKK0BAIC0xNDM1LDcgKzE0NDYsNyBAQCBmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgICAgIHN0cmNhdCAoZGVi dWdmaWxlLCAiLyIpOworICAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7CisgCist ICAgICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkK KysgICAgICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIs IG9iamZpbGUtPm5hbWUpKQorIAl7CisgCSAgeGZyZWUgKGNhbm9uX25hbWUpOworIAkgIHhmcmVl IChiYXNlbmFtZSk7CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NlcGRlYnVnLmV4cAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1Zy5leHAKK0BAIC05NTIsNiArOTUy LDIzIEBAIHNldCBkZWJ1Z2ZpbGUgIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0uZGVi dWciCisgdGVzdF9kaWZmZXJlbnRfZGlyIGRlYnVnbGluayAiJHtvYmpkaXJ9LyR7c3ViZGlyfSIg MAorIAorIAorKyMgVGVzdCBDUkMgbWlzbWF0Y2ggaXMgcmVwb3J0ZWQuCisrCisraWYge1tidWls ZF9leGVjdXRhYmxlIHNlcGRlYnVnLmV4cCBzZXBkZWJ1ZzIgc2VwZGVidWcyLmMgZGVidWddICE9 IC0xCisrICAgICYmICFbZ2RiX2dudV9zdHJpcF9kZWJ1ZyAke29iamRpcn0vJHtzdWJkaXJ9L3Nl cGRlYnVnMl19IHsKKysKKysgICAgcmVtb3RlX2V4ZWMgYnVpbGQgImNwICR7ZGVidWdmaWxlfSAk e29iamRpcn0vJHtzdWJkaXJ9Ly5kZWJ1Zy9zZXBkZWJ1ZzIuZGVidWciCisrCisrICAgIGdkYl9l eGl0CisrICAgIGdkYl9zdGFydAorKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKysKKysgICAgc2V0IGVzY2FwZWRvYmpkaXJzdWJkaXIgW3N0cmluZ190b19yZWdleHAg JHtvYmpkaXJ9LyR7c3ViZGlyfV0KKysKKysgICAgZ2RiX3Rlc3QgImZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS9zZXBkZWJ1ZzIiICJ3YXJuaW5nOiB0aGUgZGVidWcgaW5mb3JtYXRpb24gZm91bmQg aW4gXCIke2VzY2FwZWRvYmpkaXJzdWJkaXJ9L1xcLmRlYnVnL3NlcGRlYnVnMlxcLmRlYnVnXCIg ZG9lcyBub3QgbWF0Y2ggXCIke2VzY2FwZWRvYmpkaXJzdWJkaXJ9L3NlcGRlYnVnMlwiIFxcKENS QyBtaXNtYXRjaFxcKVxcLi4qXFwobm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmRcXCkuKiIgIkNS QyBtaXNtYXRjaCBpcyByZXBvcnRlZCIKKyt9CisrCisrCisgIyBOVF9HTlVfQlVJTERfSUQgLyAu bm90ZS5nbnUuYnVpbGQtaWQgdGVzdDoKKyAKKyBzZXQgYnVpbGRfaWRfZGVidWdfZmlsZW5hbWUg W2J1aWxkX2lkX2RlYnVnX2ZpbGVuYW1lX2dldCAkYmluZmlsZV0KKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VwZGVidWcyLmMKK0BAIC0wLDAgKzEsMjIgQEAK KysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKwor KyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytpbnQKKyttYWluICh2 b2lkKQorK3sKKysgIHJldHVybiAwOworK30KKwoKZGlmZiAtLWdpdCBhL2dkYi1iejUzMzE3Ni1m b3J0cmFuLW9tcC1zdGVwLnBhdGNoIGIvZ2RiLWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0ZXAucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzljYWMwZAotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCkBAIC0wLDAgKzEs MTE1IEBACitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTUzMzE3 NiNjNAorCitJIGZpbmQgaXQgYSBidWcgaW4gRFdBUkYgYW5kIGdkYiBiZWhhdmVzIGNvcnJlY3Rs eSBhY2NvcmRpbmcgdG8gaXQuICBGcm9tIHRoZQorY3VycmVudCBEV0FSRidzIHBvaW50IG9mIHZp ZXcgdGhlIGlzIGEgZnVuY3Rpb24gY2FsbCB3aGljaCB5b3Ugc2tpcCBieSAibmV4dCIuCisKK0lm IHlvdSBoaWRlIGFueSAvdXNyL2xpYi9kZWJ1ZyBzdWNoIGFzIHVzaW5nOgorZ2RiIC1ueCAtZXgg J3NldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSAvcXdlJyAtZXggJ2ZpbGUgLi90cGNvbW1vbl9nZm9y dHJhbjQ0JworYW5kIHVzZSAic3RlcCIgY29tbWFuZCBpbnN0ZWFkIG9mICJuZXh0IiB0aGVyZSBp dCB3aWxsIHdvcmsuCisoWW91IG5lZWQgdG8gaGlkZSBkZWJ1Z2luZm8gZnJvbSBsaWJnb21wIGFz IHlvdSB3b3VsZCBzdGVwIGludG8gbGliZ29tcCBzb3VyY2VzCit0byBtYWludGFpbiB0aGUgdGhy ZWFkcyBmb3IgZXhlY3V0aW9uLikKKworVGhlcmUgc2hvdWxkIGJlIHNvbWUgRFdBUkYgZXh0ZW5z aW9uIGZvciBpdCwgY3VycmVudGx5IHRyaWVkIHRvIGRldGVjdAorc3Vic3RyaW5nICIub21wX2Zu LiIgYXMgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgIk1BSU5fXy5vbXBfZm4uMCIgYW5kIGRvIG5v dAorY29uc2lkZXIgc3VjaCBzdWItZnVuY3Rpb24gYXMgYSBza2lwcGFibGUgYnkgIm5leHQiLgor CitBbm90aGVyIHByb2JsZW0gaXMgdGhhdCB3aXRoICJzZXQgc2NoZWR1bGVyLWxvY2tpbmciIGJl aW5nICJvZmYiIChkZWZhdWx0Cit1cHN0cmVhbSkgb3IgInN0ZXAiIChkZWZhdWx0IGluIEYvUkhF TCkgdGhlIHNpbXVsdGFuZW91cyBleGVjdXRpb24gb2YgdGhlCit0aHJlYWRzIGlzIGluY29udmVu aWVudC4gIFNldHRpbmcgaXQgdG8gIm9uIiB3aWxsIGxvY2t1cCB0aGUgZGVidWdnaW5nIGFzIHRo ZQordGhyZWFkcyBuZWVkIHRvIGdldCBzeW5jaHJvbml6ZWQgYXQgc29tZSBwb2ludC4gIFRoaXMg aXMgYSBtb3JlIGdlbmVyYWwKK2RlYnVnZ2luZyBwcm9ibGVtIG9mIEdPTVAgb3V0c2lkZSBvZiB0 aGUgc2NvcGUgb2YgdGhpcyBCdWcuCisKKworCistLS0gLi9nZGIvaW5mcnVuLmMJMjAwOS0xMi0w OSAyMjowMzozMy4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9pbmZydW4uYwkyMDA5LTEyLTA5 IDIyOjI5OjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTM5OTQsNiArMzk5NCwxMiBAQCBpbmZydW46 IG5vdCBzd2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCisgCisgICAgICAgaWYgKGVjcy0+ZXZl bnRfdGhyZWFkLT5zdGVwX292ZXJfY2FsbHMgPT0gU1RFUF9PVkVSX0FMTCkKKyAJeworKwkgIHN0 cnVjdCBzeW1ib2wgKnN0b3BfZm4gPSBmaW5kX3BjX2Z1bmN0aW9uIChzdG9wX3BjKTsKKysKKysJ ICBpZiAoc3RvcF9mbiA9PSBOVUxMCisrCSAgICAgIHx8IHN0cnN0ciAoU1lNQk9MX0xJTktBR0Vf TkFNRSAoc3RvcF9mbiksICIub21wX2ZuLiIpID09IE5VTEwpCisrewkvKiAiLm9tcF9mbi4iICov CisrCisgCSAgLyogV2UncmUgZG9pbmcgYSAibmV4dCIuCisgCisgCSAgICAgTm9ybWFsIChmb3J3 YXJkKSBleGVjdXRpb246IHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlCitAQCAtNDAyMCw2ICs0MDI2 LDcgQEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAorIAorIAkgIGtl ZXBfZ29pbmcgKGVjcyk7CisgCSAgcmV0dXJuOworK30JLyogIi5vbXBfZm4uIiAqLworIAl9Cisg CisgICAgICAgLyogSWYgd2UgYXJlIGluIGEgZnVuY3Rpb24gY2FsbCB0cmFtcG9saW5lIChhIHN0 dWIgYmV0d2VlbiB0aGUKKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAu ZXhwCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDA5LTEyLTA5IDIyOjMxOjA0LjAwMDAwMDAw MCArMDEwMAorQEAgLTAsMCArMSwzMSBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor K3NldCB0ZXN0ZmlsZSAib21wLXN0ZXAiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisr aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmls ZSB7ZGVidWcgZjc3IGFkZGl0aW9uYWxfZmxhZ3M9LWZvcGVubXB9XSB9IHsKKysgICAgcmV0dXJu IC0xCisrfQorKworK2lmICFbcnVudG8gW2dkYl9nZXRfbGluZV9udW1iZXIgInN0YXJ0LWhlcmUi XV0geworKyAgICBwZXJyb3IgIkNvdWxkbid0IHJ1biB0byBzdGFydC1oZXJlIgorKyAgICByZXR1 cm4gMAorK30KKysKKytnZGJfdGVzdCAibmV4dCIgeyFcJG9tcCBwYXJhbGxlbH0gInN0ZXAgY2xv c2VyIgorK2dkYl90ZXN0ICJuZXh0IiB7YVwob21wX2dldF90aHJlYWRfbnVtXChcKSBcKyAxXCkg PSAxfSAic3RlcCBpbnRvIG9tcCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAic3VjY2VzcyJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN1Y2Nlc3MiICIu KnN1Y2Nlc3MuKiIKKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZjkw CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAkyMDA5LTEyLTA5IDIyOjI1OjM1LjAwMDAwMDAwMCAr MDEwMAorQEAgLTAsMCArMSwzMiBAQAorKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyAg ICAgIHVzZSBvbXBfbGliCisrICAgICAgaW50ZWdlciBudGhyZWFkcywgaSwgYSgxMDAwKQorKyAg ICAgIG50aHJlYWRzID0gb21wX2dldF9udW1fdGhyZWFkcygpCisrICAgICAgaWYgKG50aHJlYWRz IC5ndC4gMTAwMCkgY2FsbCBhYm9ydAorKworKyAgICAgIGRvIGkgPSAxLCBudGhyZWFkcworKyAg ICAgICAgICBhKGkpID0gMAorKyAgICAgIGVuZCBkbworKyAgICAgIHByaW50ICosICJzdGFydC1o ZXJlIgorKyEkb21wIHBhcmFsbGVsCisrICAgICAgYShvbXBfZ2V0X3RocmVhZF9udW0oKSArIDEp ID0gMQorKyEkb21wIGVuZCBwYXJhbGxlbAorKyAgICAgIGRvIGkgPSAxLCBudGhyZWFkcworKyAg ICAgICAgICBpZiAoYShpKSAubmUuIDEpIGNhbGwgYWJvcnQKKysgICAgICBlbmQgZG8KKysgICAg ICBwcmludCAqLCAic3VjY2VzcyIKKysgICAgICBlbmQKCmRpZmYgLS1naXQgYS9nZGItYno1Mzg2 MjYtYnBfbG9jYXRpb24tYWNjZWwtYnAtY29uZC5wYXRjaCBiL2dkYi1iejUzODYyNi1icF9sb2Nh dGlvbi1hY2NlbC1icC1jb25kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmU1M2JmM2MKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno1Mzg2MjYtYnBfbG9jYXRpb24t YWNjZWwtYnAtY29uZC5wYXRjaApAQCAtMCwwICsxLDMxNyBAQAoraHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMTIvbXNnMDAxODAuaHRtbAorU3ViamVjdDogW3BhdGNo XSBGaXggYSByZWdyZXNzaW9uIGJ5IG1lIG9uIGJyZWFrcG9pbnQtY29uZC1pbmZjYWxsCisKK0hp LAorCitHREIgaGFzIG5vdyBhIHJlZ3Jlc3Npb24gc2luY2U6CisJUmU6IFtwYXRjaF0gUGVyZm9y bWFuY2Ugb3B0aW1pemUgbGFyZ2UgYnBfbG9jYXRpb24gY291bnQKKwlodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMC9tc2cwMDYzMi5odG1sCisJPQorCTIwMDktMTAt MjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwlQZXJmb3Jt YW5jZSBvcHRpbWl6ZSBsYXJnZSBicF9sb2NhdGlvbiBjb3VudC4KKworb24gYnJlYWtwb2ludHMg d2l0aCBjb25kaXRpb25zIGNhbGxpbmcgaW5mZXJpb3IuCisKK0JyaW5naW5nIHRoZSBjb2RlIGJh Y2sgdG8gdGhlIHN0YXRlIGJlZm9yZSBteSBhY2NlbGVyYXRpb24gcGF0Y2guCisKK1RoZSBjb2Rl IGJlZm9yZSBhbHJlYWR5IGFzc3VtZWQgbm8gYnJlYWtwb2ludHMgb3IgdGhlaXIgYnBfbG9jYXRp b25zIGNhbgorY2hhbmdlIGFjcm9zcyB0aGUgaW5mZXJpb3IgY2FsbCB3aGljaCBzaG91bGQgYmUg dHJ1ZSAtIHRyeWluZyB0byBkbyBzb21lOgorCWJyZWFrIGEgaWYgYigpCisJYnJlYWsgYgorCWNv bW1hbmQgMQorCWRlbGV0ZSAyCisJZW5kCitvciBzaW1pbGFyIGNhbm5vdCB3b3JrIGFzIGluc2lk ZSAiaWYgYigpIiBldmFsdWF0aW9uIG5vIGJyZWFrcG9pbnRzIGNhbiBiZQorYWRkZWQgb3IgcmVt b3ZlZC4KKwordXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IGFsc28gZG9lcyBub3QgcmVtb3Zl ZC9hZGQgYHN0cnVjdCBicF9sb2NhdGlvbidzCit0aGVtc2VsdmVzIGJ1dCBvbmx5IHBvaW50ZXJz IHRvIHRoZW0gaW4gdGhlIGJwX2xvY2F0aW9uIGFycmF5LiAgQXMgdGhlIG5ldworaXRlcmF0aW9u IG5vIGxvbmdlciB1c2VzIHRoZSBicF9sb2NhdGlvbiBhcnJheSBpdCBpcyBubyBsb25nZXIgYSBw cm9ibGVtLgorCitPcmlnaW5hbCBwcm9ibGVtIHdhcyBmb3VuZCBieSBhbmQgZml4ZWQgZGlmZmVy ZW50bHkgYnkgUGhpbCBNdWxkb29uLgorCitObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82 NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251LgorCisKK1RoYW5rcywKK0phbgorCisKK2dk Yi8KKzIwMDktMTItMTMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKworCSogYnJlYWtwb2ludC5jIChicHN0YXRfc3RvcF9zdGF0dXMpOiBJdGVyYXRlIHVzaW5n IEFMTF9CUkVBS1BPSU5UUyBhbmQKKwl0aGUgQi0+TE9DIGxpc3QuICBSZW1vdmUgZ2RiX2Fzc2Vy dCBvbiBCLiAgQ2hhbmdlIGJwX2hhcmR3YXJlX3dhdGNocG9pbnQKKwljb250aW51ZSB0byBicmVh ay4gIFJlbW92ZSB2YXJpYWJsZSB1cGRhdGVfbG9jYXRpb25zLiAgUmVtb3ZlIEhJVF9DT1VOVAor CWluY3JlbWVudCBwcm90ZWN0aW9uIGJ5IGFuIEVOQUJMRV9TVEFURSBjaGVjay4gIElubGluZSB0 aGUgZGVsYXllZAorCXVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCBjYWxsLgorCitnZGIvdGVz dHN1aXRlLworMjAwOS0xMi0xMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorCSAgICBQaGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgorCisJKiBn ZGIuYmFzZS9jb25kYnJlYWsuZXhwOiBQdXQgYnJlYWtwb2ludCBvbiBtYXJrZXIzIGFuZCBtYXJr ZXI0LgorCShicF9sb2NhdGlvbjEzLCBicF9sb2NhdGlvbjE0LCBicF9sb2NhdGlvbjE3LCBicF9s b2NhdGlvbjE4KQorCShtYXJrZXIzX3Byb3RvLCBtYXJrZXI0X3Byb3RvKTogTmV3IHZhcmlhYmxl cy4KKwkoYnJlYWtwb2ludCBpbmZvKTogVXBkYXRlIG91dHB1dC4KKwkocnVuIHVudGlsIGJyZWFr cG9pbnQgYXQgbWFya2VyMywgcnVuIHVudGlsIGJyZWFrcG9pbnQgYXQgbWFya2VyNCk6IE5ldwor CXRlc3RzLgorCitbIEJhY2twb3J0ZWQgZm9yIEYtMTIuICBdCisKKy0tLSAuL2dkYi9icmVha3Bv aW50LmMJMjAwOS0xMi0xNCAwMDoyNTo1NS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9icmVh a3BvaW50LmMJMjAwOS0xMi0xNCAwMDozMjozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMjk4LDkz ICszMjk4LDkzIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoQ09SRV9BRERSIGJwX2FkZHIsIHAKKyAg IC8qIFBvaW50ZXIgdG8gdGhlIGxhc3QgdGhpbmcgaW4gdGhlIGNoYWluIGN1cnJlbnRseS4gICov CisgICBicHN0YXQgYnMgPSByb290X2JzOworICAgaW50IGl4OworLSAgaW50IG5lZWRfcmVtb3Zl X2luc2VydCwgdXBkYXRlX2xvY2F0aW9ucyA9IDA7CisrICBpbnQgbmVlZF9yZW1vdmVfaW5zZXJ0 OworIAorLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYmwsIGJscF90bXApCistICB7CistICAgIGJwc3Rh dCBic19wcmV2ID0gYnM7CisrICAvKiBBTExfQlBfTE9DQVRJT05TIGl0ZXJhdGlvbiB3b3VsZCBi cmVhayBhY3Jvc3MKKysgICAgIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCBwb3NzaWJseSBl eGVjdXRlZCBieQorKyAgICAgYnBzdGF0X2NoZWNrX2JyZWFrcG9pbnRfY29uZGl0aW9ucydzIGlu ZmVyaW9yIGNhbGwuICAqLworIAorLSAgICBiID0gYmwtPm93bmVyOworLSAgICBnZGJfYXNzZXJ0 IChiKTsKKy0gICAgaWYgKCFicmVha3BvaW50X2VuYWJsZWQgKGIpICYmIGItPmVuYWJsZV9zdGF0 ZSAhPSBicF9wZXJtYW5lbnQpCistICAgICAgY29udGludWU7CistCistICAgIC8qIEZvciBoYXJk d2FyZSB3YXRjaHBvaW50cywgd2UgbG9vayBvbmx5IGF0IHRoZSBmaXJzdCBsb2NhdGlvbi4KKy0g ICAgICAgVGhlIHdhdGNocG9pbnRfY2hlY2sgZnVuY3Rpb24gd2lsbCB3b3JrIG9uIGVudGlyZSBl eHByZXNzaW9uLAorLSAgICAgICBub3QgdGhlIGluZGl2aWR1YWwgbG9jYXRpb25zLiAgRm9yIHJl YWQgd2F0Y2hvcGludHMsIHRoZQorLSAgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgZnVuY3Rp b24gaGF2ZSBjaGVja2VkIGFsbCBsb2NhdGlvbnMKKy0gICAgICAgYWxyZWEKKy0gICAgICovCist ICAgIGlmIChiLT50eXBlID09IGJwX2hhcmR3YXJlX3dhdGNocG9pbnQgJiYgYmwgIT0gYi0+bG9j KQorLSAgICAgIGNvbnRpbnVlOworLQorLSAgICBpZiAoIWJwc3RhdF9jaGVja19sb2NhdGlvbiAo YmwsIGJwX2FkZHIpKQorLSAgICAgIGNvbnRpbnVlOworLQorLSAgICAvKiBDb21lIGhlcmUgaWYg aXQncyBhIHdhdGNocG9pbnQsIG9yIGlmIHRoZSBicmVhayBhZGRyZXNzIG1hdGNoZXMgKi8KKy0K Ky0gICAgYnMgPSBicHN0YXRfYWxsb2MgKGJsLCBicyk7CS8qIEFsbG9jIGEgYnBzdGF0IHRvIGV4 cGxhaW4gc3RvcCAqLworLSAgICBnZGJfYXNzZXJ0IChic19wcmV2LT5uZXh0ID09IGJzKTsKKy0K Ky0gICAgLyogQXNzdW1lIHdlIHN0b3AuICBTaG91bGQgd2UgZmluZCB3YXRjaHBvaW50IHRoYXQg aXMgbm90IGFjdHVhbGx5CistICAgICAgIHRyaWdnZXJlZCwgb3IgaWYgY29uZGl0aW9uIG9mIGJy ZWFrcG9pbnQgaXMgZmFsc2UsIHdlJ2xsIHJlc2V0CistICAgICAgICdzdG9wJyB0byAwLiAgKi8K Ky0gICAgYnMtPnN0b3AgPSAxOworLSAgICBicy0+cHJpbnQgPSAxOworKyAgQUxMX0JSRUFLUE9J TlRTIChiKQorKyAgICB7CisrICAgICAgaWYgKCFicmVha3BvaW50X2VuYWJsZWQgKGIpICYmIGIt PmVuYWJsZV9zdGF0ZSAhPSBicF9wZXJtYW5lbnQpCisrCWNvbnRpbnVlOworIAorLSAgICBpZiAo IWJwc3RhdF9jaGVja193YXRjaHBvaW50IChicykpCistICAgICAgeworLQkvKiBFbnN1cmUgYnBz dGF0X2V4cGxhaW5zX3NpZ25hbCBzdGF5cyBmYWxzZSBpZiB0aGlzIEJMIGNvdWxkIG5vdCBiZQor LQkgICB0aGUgY2F1c2Ugb2YgdGhpcyB0cmFwLiAgKi8KKysgICAgICBmb3IgKGJsID0gYi0+bG9j OyBibCAhPSBOVUxMOyBibCA9IGJsLT5uZXh0KQorKwl7CisrCSAgYnBzdGF0IGJzX3ByZXYgPSBi czsKKysKKysJICAvKiBGb3IgaGFyZHdhcmUgd2F0Y2hwb2ludHMsIHdlIGxvb2sgb25seSBhdCB0 aGUgZmlyc3QgbG9jYXRpb24uCisrCSAgICAgVGhlIHdhdGNocG9pbnRfY2hlY2sgZnVuY3Rpb24g d2lsbCB3b3JrIG9uIGVudGlyZSBleHByZXNzaW9uLAorKwkgICAgIG5vdCB0aGUgaW5kaXZpZHVh bCBsb2NhdGlvbnMuICBGb3IgcmVhZCB3YXRjaG9waW50cywgdGhlCisrCSAgICAgd2F0Y2hwb2lu dHNfdHJpZ2dlcmVkIGZ1bmN0aW9uIGhhdmUgY2hlY2tlZCBhbGwgbG9jYXRpb25zCisrCSAgICAg YWxyZWEKKysJICAgKi8KKysJICBpZiAoYi0+dHlwZSA9PSBicF9oYXJkd2FyZV93YXRjaHBvaW50 ICYmIGJsICE9IGItPmxvYykKKysJICAgIGJyZWFrOworIAorLQlnZGJfYXNzZXJ0IChicy0+cHJp bnRfaXQgPT0gcHJpbnRfaXRfbm9vcCk7CistCWdkYl9hc3NlcnQgKCFicy0+c3RvcCk7CistCXhm cmVlIChicyk7CistCWJzID0gYnNfcHJldjsKKy0JYnMtPm5leHQgPSBOVUxMOworLQljb250aW51 ZTsKKy0gICAgICB9CisrCSAgaWYgKCFicHN0YXRfY2hlY2tfbG9jYXRpb24gKGJsLCBicF9hZGRy KSkKKysJICAgIGNvbnRpbnVlOworIAorLSAgICBpZiAoYi0+dHlwZSA9PSBicF90aHJlYWRfZXZl bnQgfHwgYi0+dHlwZSA9PSBicF9vdmVybGF5X2V2ZW50CistCXx8IGItPnR5cGUgPT0gYnBfbG9u Z2ptcF9tYXN0ZXIgfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFzdGVyKQorLSAgICAgIC8q IFdlIGRvIG5vdCBzdG9wIGZvciB0aGVzZS4gICovCistICAgICAgYnMtPnN0b3AgPSAwOworLSAg ICBlbHNlCistICAgICAgYnBzdGF0X2NoZWNrX2JyZWFrcG9pbnRfY29uZGl0aW9ucyAoYnMsIHB0 aWQpOworLSAgCistICAgIGlmIChicy0+c3RvcCkKKy0gICAgICB7CistCWlmIChiLT5lbmFibGVf c3RhdGUgIT0gYnBfZGlzYWJsZWQpCistCSAgKysoYi0+aGl0X2NvdW50KTsKKysJICAvKiBDb21l IGhlcmUgaWYgaXQncyBhIHdhdGNocG9pbnQsIG9yIGlmIHRoZSBicmVhayBhZGRyZXNzIG1hdGNo ZXMgKi8KKyAKKy0JLyogV2Ugd2lsbCBzdG9wIGhlcmUgKi8KKy0JaWYgKGItPmRpc3Bvc2l0aW9u ID09IGRpc3BfZGlzYWJsZSkKKy0JICB7CistCSAgICBpZiAoYi0+ZW5hYmxlX3N0YXRlICE9IGJw X3Blcm1hbmVudCkKKy0JICAgICAgYi0+ZW5hYmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7CistCSAg ICB1cGRhdGVfbG9jYXRpb25zID0gMTsKKy0JICB9CistCWlmIChiLT5zaWxlbnQpCistCSAgYnMt PnByaW50ID0gMDsKKy0JYnMtPmNvbW1hbmRzID0gYi0+Y29tbWFuZHM7CistCWlmIChicy0+Y29t bWFuZHMKKy0JICAgICYmIChzdHJjbXAgKCJzaWxlbnQiLCBicy0+Y29tbWFuZHMtPmxpbmUpID09 IDAKKy0JCXx8ICh4ZGJfY29tbWFuZHMgJiYgc3RyY21wICgiUSIsIGJzLT5jb21tYW5kcy0+bGlu ZSkgPT0gMCkpKQorLQkgIHsKKy0JICAgIGJzLT5jb21tYW5kcyA9IGJzLT5jb21tYW5kcy0+bmV4 dDsKKy0JICAgIGJzLT5wcmludCA9IDA7CistCSAgfQorLQlicy0+Y29tbWFuZHMgPSBjb3B5X2Nv bW1hbmRfbGluZXMgKGJzLT5jb21tYW5kcyk7CistICAgICAgfQorKwkgIGJzID0gYnBzdGF0X2Fs bG9jIChibCwgYnMpOwkvKiBBbGxvYyBhIGJwc3RhdCB0byBleHBsYWluIHN0b3AgKi8KKysJICBn ZGJfYXNzZXJ0IChic19wcmV2LT5uZXh0ID09IGJzKTsKKyAKKy0gICAgLyogUHJpbnQgbm90aGlu ZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250IHN0b3Agb3IgaWYgd2UgZG9udCBwcmludC4gICov CistICAgIGlmIChicy0+c3RvcCA9PSAwIHx8IGJzLT5wcmludCA9PSAwKQorLSAgICAgIGJzLT5w cmludF9pdCA9IHByaW50X2l0X25vb3A7CistICB9CisrCSAgLyogQXNzdW1lIHdlIHN0b3AuICBT aG91bGQgd2UgZmluZCB3YXRjaHBvaW50IHRoYXQgaXMgbm90IGFjdHVhbGx5CisrCSAgICAgdHJp Z2dlcmVkLCBvciBpZiBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBpcyBmYWxzZSwgd2UnbGwgcmVz ZXQKKysJICAgICAnc3RvcCcgdG8gMC4gICovCisrCSAgYnMtPnN0b3AgPSAxOworKwkgIGJzLT5w cmludCA9IDE7CisgCistICAvKiBEZWxheSB0aGlzIGNhbGwgd2hpY2ggd291bGQgYnJlYWsgdGhl IEFMTF9CUF9MT0NBVElPTlMgaXRlcmF0aW9uIGFib3ZlLiAgKi8KKy0gIGlmICh1cGRhdGVfbG9j YXRpb25zKQorLSAgICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDApOworKwkgIGlmICgh YnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJzKSkKKysJICAgIHsKKysJICAgICAgLyogRW5zdXJl IGJwc3RhdF9leHBsYWluc19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3Qg YmUKKysJCSB0aGUgY2F1c2Ugb2YgdGhpcyB0cmFwLiAgKi8KKysKKysJICAgICAgZ2RiX2Fzc2Vy dCAoYnMtPnByaW50X2l0ID09IHByaW50X2l0X25vb3ApOworKwkgICAgICBnZGJfYXNzZXJ0ICgh YnMtPnN0b3ApOworKwkgICAgICB4ZnJlZSAoYnMpOworKwkgICAgICBicyA9IGJzX3ByZXY7Cisr CSAgICAgIGJzLT5uZXh0ID0gTlVMTDsKKysJICAgICAgY29udGludWU7CisrCSAgICB9CisrCisr CSAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3Zlcmxh eV9ldmVudAorKwkgICAgICB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5 cGUgPT0gYnBfZXhjZXB0aW9uX21hc3RlcikKKysJICAgIC8qIFdlIGRvIG5vdCBzdG9wIGZvciB0 aGVzZS4gICovCisrCSAgICBicy0+c3RvcCA9IDA7CisrCSAgZWxzZQorKwkgICAgYnBzdGF0X2No ZWNrX2JyZWFrcG9pbnRfY29uZGl0aW9ucyAoYnMsIHB0aWQpOworKwkKKysJICBpZiAoYnMtPnN0 b3ApCisrCSAgICB7CisrCSAgICAgICsrKGItPmhpdF9jb3VudCk7CisrCisrCSAgICAgIC8qIFdl IHdpbGwgc3RvcCBoZXJlICovCisrCSAgICAgIGlmIChiLT5kaXNwb3NpdGlvbiA9PSBkaXNwX2Rp c2FibGUpCisrCQl7CisrCQkgIGlmIChiLT5lbmFibGVfc3RhdGUgIT0gYnBfcGVybWFuZW50KQor KwkJICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOworKwkJICB1cGRhdGVfZ2xvYmFs X2xvY2F0aW9uX2xpc3QgKDApOworKwkJfQorKwkgICAgICBpZiAoYi0+c2lsZW50KQorKwkJYnMt PnByaW50ID0gMDsKKysJICAgICAgYnMtPmNvbW1hbmRzID0gYi0+Y29tbWFuZHM7CisrCSAgICAg IGlmIChicy0+Y29tbWFuZHMKKysJCSAgJiYgKHN0cmNtcCAoInNpbGVudCIsIGJzLT5jb21tYW5k cy0+bGluZSkgPT0gMAorKwkJICAgICAgfHwgKHhkYl9jb21tYW5kcyAmJiBzdHJjbXAgKCJRIiwg YnMtPmNvbW1hbmRzLT5saW5lKSA9PSAwKSkpCisrCQl7CisrCQkgIGJzLT5jb21tYW5kcyA9IGJz LT5jb21tYW5kcy0+bmV4dDsKKysJCSAgYnMtPnByaW50ID0gMDsKKysJCX0KKysJICAgICAgYnMt PmNvbW1hbmRzID0gY29weV9jb21tYW5kX2xpbmVzIChicy0+Y29tbWFuZHMpOworKwkgICAgfQor KworKwkgIC8qIFByaW50IG5vdGhpbmcgZm9yIHRoaXMgZW50cnkgaWYgd2UgZG9udCBzdG9wIG9y IGlmIHdlIGRvbnQgcHJpbnQuICAqLworKwkgIGlmIChicy0+c3RvcCA9PSAwIHx8IGJzLT5wcmlu dCA9PSAwKQorKwkgICAgYnMtPnByaW50X2l0ID0gcHJpbnRfaXRfbm9vcDsKKysJfQorKyAgICB9 CisgCisgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGJwX2xvY2F0aW9uX3AsIG1vcmlidW5k X2xvY2F0aW9ucywgaXgsIGxvYyk7ICsraXgpCisgICAgIHsKKy0tLSAuL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY29uZGJyZWFrLmV4cAkyMDA5LTAxLTAzIDA2OjU4OjAzLjAwMDAwMDAwMCArMDEw MAorKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb25kYnJlYWsuZXhwCTIwMDktMTItMTQg MDA6Mjc6MjEuMDAwMDAwMDAwICswMTAwCitAQCAtNjgsOCArNjgsMTIgQEAgc2V0IGJwX2xvY2F0 aW9uMSAgW2dkYl9nZXRfbGluZV9udW1iZXIgIgorIHNldCBicF9sb2NhdGlvbjYgIFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCA2IGhlcmUiXQorIHNldCBicF9sb2NhdGlvbjgg IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCA4IGhlcmUiICRzcmNmaWxlMV0K KyBzZXQgYnBfbG9jYXRpb245ICBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQg OSBoZXJlIiAkc3JjZmlsZTFdCisrc2V0IGJwX2xvY2F0aW9uMTMgW2dkYl9nZXRfbGluZV9udW1i ZXIgInNldCBicmVha3BvaW50IDEzIGhlcmUiICRzcmNmaWxlMV0KKytzZXQgYnBfbG9jYXRpb24x NCBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTQgaGVyZSIgJHNyY2ZpbGUx XQorIHNldCBicF9sb2NhdGlvbjE1IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2lu dCAxNSBoZXJlIiAkc3JjZmlsZTFdCisgc2V0IGJwX2xvY2F0aW9uMTYgW2dkYl9nZXRfbGluZV9u dW1iZXIgInNldCBicmVha3BvaW50IDE2IGhlcmUiICRzcmNmaWxlMV0KKytzZXQgYnBfbG9jYXRp b24xNyBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTcgaGVyZSIgJHNyY2Zp bGUxXQorK3NldCBicF9sb2NhdGlvbjE4IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtw b2ludCAxOCBoZXJlIiAkc3JjZmlsZTFdCisgCisgIworICMgdGVzdCBicmVhayBhdCBmdW5jdGlv bgorQEAgLTExMCwxNSArMTE0LDI5IEBAIGdkYl90ZXN0ICJicmVhayBtYXJrZXIyIGlmIChhPT00 MykiIFwKKyAgICAgIkJyZWFrcG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxlMSwgbGluZS4qIgor IAorICMKKysjIENoZWNrIGJyZWFrIGludm9sdmluZyBpbmZlcmlvciBmdW5jdGlvbiBjYWxsLgor KyMgRW5zdXJlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBhZGRpdGlvbmFsIGJyZWFrcG9pbnQgd2l0 aCBoaWdoZXIgVk1BLgorKyMKKytnZGJfdGVzdCAiYnJlYWsgbWFya2VyMyBpZiAobXVsdGlfbGlu ZV9pZl9jb25kaXRpb25hbCgxLDEsMSk9PTApIiBcCisrICAgICJCcmVha3BvaW50LiphdC4qIGZp bGUgLiokc3JjZmlsZTEsIGxpbmUuKiIKKytnZGJfdGVzdCAiYnJlYWsgbWFya2VyNCIgXAorKyAg ICAiQnJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUxLCBsaW5lLioiCisrCisrIworICMg Y2hlY2sgdG8gc2VlIHdoYXQgYnJlYWtwb2ludHMgYXJlIHNldAorICMKKyAKKyBpZiB7JGhwX2FD Q19jb21waWxlcn0geworICAgICBzZXQgbWFya2VyMV9wcm90byAiXFwodm9pZFxcKSIKKyAgICAg c2V0IG1hcmtlcjJfcHJvdG8gIlxcKGludFxcKSIKKysgICAgIyBOb3QgY2hlY2tlZC4KKysgICAg c2V0IG1hcmtlcjNfcHJvdG8gIlxcKGNoYXIgXFwqLCBjaGFyIFxcKlxcKSIKKysgICAgc2V0IG1h cmtlcjRfcHJvdG8gIlxcKGxvbmdcXCkiCisgfSBlbHNlIHsKKyAgICAgc2V0IG1hcmtlcjFfcHJv dG8gIiIKKyAgICAgc2V0IG1hcmtlcjJfcHJvdG8gIiIKKysgICAgc2V0IG1hcmtlcjNfcHJvdG8g IiIKKysgICAgc2V0IG1hcmtlcjRfcHJvdG8gIiIKKyB9CisgCisgZ2RiX3Rlc3QgImluZm8gYnJl YWsiIFwKK0BAIC0xMjksNyArMTQ3LDEwIEBAIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCisgXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1haW4gYXQgLiokc3JjZmls ZTokYnBfbG9jYXRpb24xLioKKyBcW1x0IFxdK3N0b3Agb25seSBpZiBcXCgxPT0xXFwpLioKKyBc WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5LiogaW4gbWFya2VyMiRtYXJrZXIy X3Byb3RvIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb244fCRicF9sb2NhdGlvbjkpLioKKy1c W1x0IFxdK3N0b3Agb25seSBpZiBcXChhPT00M1xcKS4qIiBcCisrXFtcdCBcXStzdG9wIG9ubHkg aWYgXFwoYT09NDNcXCkuKgorK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHku KiBpbiBtYXJrZXIzJG1hcmtlcjNfcHJvdG8gYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjE3 fCRicF9sb2NhdGlvbjE4KS4qCisrXFtcdCBcXStzdG9wIG9ubHkgaWYgXFwobXVsdGlfbGluZV9p Zl9jb25kaXRpb25hbFxcKDEsMSwxXFwpPT0wXFwpLioKKytcWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAga2VlcCB5LiogaW4gbWFya2VyNCRtYXJrZXI0X3Byb3RvIGF0IC4qJHNyY2ZpbGUx OigkYnBfbG9jYXRpb24xM3wkYnBfbG9jYXRpb24xNCkuKiIgXAorICAgICAiYnJlYWtwb2ludCBp bmZvIgorIAorIAorQEAgLTIyMCwzICsyNDEsMjMgQEAgZ2RiX2V4cGVjdCB7CisgCWZhaWwgIih0 aW1lb3V0KSBydW4gdW50aWwgYnJlYWtwb2ludCBhdCBtYXJrZXIyIgorICAgICB9CisgfQorKwor K3NldCB0ZXN0ICJydW4gdW50aWwgYnJlYWtwb2ludCBhdCBtYXJrZXIzIgorK2dkYl90ZXN0X211 bHRpcGxlICJjb250aW51ZSIgJHRlc3QgeworKyAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFr cG9pbnQgXFswLTlcXSssIG1hcmtlcjMgXFwoYT0kaGV4IFwic3RhY2tcIiwgYj0kaGV4IFwidHJh Y2VcIlxcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uMTd8JGJwX2xvY2F0aW9uMTgpLioo JGJwX2xvY2F0aW9uMTd8JGJwX2xvY2F0aW9uMTgpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsK KysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2lu dCBcWzAtOVxdKywgJGhleCBpbiBtYXJrZXIzIFxcKGE9JGhleCBcInN0YWNrXCIsIGI9JGhleCBc InRyYWNlXCJcXCkgYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjE3fCRicF9sb2NhdGlvbjE4 KS4qKCRicF9sb2NhdGlvbjE3fCRicF9sb2NhdGlvbjE4KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAk IiB7CisrCXhmYWlsICR0ZXN0CisrICAgIH0KKyt9CisrCisrc2V0IHRlc3QgInJ1biB1bnRpbCBi cmVha3BvaW50IGF0IG1hcmtlcjQiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkdGVz dCB7CisrICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgbWFya2Vy NCBcXChkPTE3NzYwMTk3NlxcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uMTN8JGJwX2xv Y2F0aW9uMTQpLiooJGJwX2xvY2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpXFtcdCBcXSsuKiRnZGJf cHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiQ29udGludWluZ1xc Li4qQnJlYWtwb2ludCBcWzAtOVxdKywgJGhleCBpbiBtYXJrZXI0IFxcKGQ9MTc3NjAxOTc2XFwp IGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb24xM3wkYnBfbG9jYXRpb24xNCkuKigkYnBfbG9j YXRpb24xM3wkYnBfbG9jYXRpb24xNClcW1x0IFxdKy4qJGdkYl9wcm9tcHQgJCIgeworKwl4ZmFp bCAkdGVzdAorKyAgICB9CisrfQoKZGlmZiAtLWdpdCBhL2dkYi1iejUzOTU5MC1nbnUtaWZ1bmMu cGF0Y2ggYi9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjJmMWI4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYno1Mzk1OTAt Z251LWlmdW5jLnBhdGNoCkBAIC0wLDAgKzEsNTExIEBACitnZGIvCisyMDA5LTExLTI0ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlUcmFuc3BhcmVudCBH TlUtSUZVTkNzIHN1cHBvcnQuCisJKiBlbGZyZWFkLmMgKHJlY29yZF9taW5pbWFsX3N5bWJvbCk6 IEFwcGx5IGFsc28gZm9yIG1zdF90ZXh0X2dudV9pZnVuYy4KKwkoZWxmX3N5bXRhYl9yZWFkKTog U2V0IGFsc28gbXN0X3RleHRfZ251X2lmdW5jLgorCSogZ2RidHlwZXMuYyAoaW5pdF90eXBlKTog U3VwcG9ydCBUWVBFX0ZMQUdfR05VX0lGVU5DLgorCShnZGJ0eXBlc19wb3N0X2luaXQpOiBJbml0 aWFsaXplIGJ1aWx0aW5fZnVuY19mdW5jX3B0ci4KKwkob2JqZmlsZV90eXBlKTogSW5pdGlhbGl6 ZSBub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbC4KKwkqIGdkYnR5cGVzLmggKGVudW0gdHlw ZV9mbGFnX3ZhbHVlIDxUWVBFX0ZMQUdfR05VX0lGVU5DPikKKwkoVFlQRV9HTlVfSUZVTkMsIHN0 cnVjdCBtYWluX3R5cGUgPGZsYWdfZ251X2lmdW5jPikKKwkoc3RydWN0IGJ1aWx0aW5fdHlwZSA8 YnVpbHRpbl9mdW5jX2Z1bmNfcHRyPikKKwkoc3RydWN0IG9iamZpbGVfdHlwZSA8bm9kZWJ1Z190 ZXh0X2dudV9pZnVuY19zeW1ib2w+KTogTmV3LgorCSogaW5mY2FsbC5jIChmaW5kX2Z1bmN0aW9u X2FkZHIgPFRZUEVfR05VX0lGVU5DIChmdHlwZSk+KTogTmV3LgorCSogbWluc3ltcy5jIChsb29r dXBfbWluaW1hbF9zeW1ib2xfdGV4dCwgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wpCisJKGZp bmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQpOiBTdXBwb3J0IGFsc28gbXN0X3RleHRfZ251X2lm dW5jLgorCShpbl9nbnVfaWZ1bmNfc3R1Yik6IE5ldy4KKwkqIHBhcnNlLmMgKHdyaXRlX2V4cF9t c3ltYm9sIDxtc3RfdGV4dF9nbnVfaWZ1bmM+KTogTmV3LgorCSogc29saWItc3ZyNC5jIChzdnI0 X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUpOiBDYWxsIGFsc28KKwlpbl9nbnVfaWZ1bmNfc3R1Yi4K KwkqIHN5bW1pc2MuYyAoZHVtcF9tc3ltYm9scyA8bXN0X3RleHRfZ251X2lmdW5jPik6IE5ldy4K KwkqIHN5bXRhYi5jIChzZWFyY2hfc3ltYm9scyk6IFN1cHBvcnQgYWxzbyBtc3RfdGV4dF9nbnVf aWZ1bmMuCisJKiBzeW10YWIuaCAoZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIDxtc3RfdGV4dF9n bnVfaWZ1bmM+KQorCShpbl9nbnVfaWZ1bmNfc3R1Yik6IE5ldy4KKwkqIGxpbmVzcGVjLmM6IElu Y2x1ZGUgaW5mY2FsbC5oLgorCShtaW5zeW1fZm91bmQgPE1TWU1CT0xfVFlQRSAobXN5bWJvbCkg PT0gbXN0X3RleHRfZ251X2lmdW5jPik6IE5ldy4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMDktMTEt MjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCVRyYW5z cGFyZW50IEdOVS1JRlVOQ3Mgc3VwcG9ydC4KKwkqIGdkYi5iYXNlL2dudS1pZnVuYy1saWIuYywg Z2RiLmJhc2UvZ251LWlmdW5jLmMsCisJZ2RiLmJhc2UvZ251LWlmdW5jLmV4cDogTmV3LgorCitJ bmRleDogZ2RiLTcuMC9nZGIvZWxmcmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmln L2dkYi9lbGZyZWFkLmMJMjAwOS0xMS0yNSAxMDoyNDo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4wL2dkYi9lbGZyZWFkLmMJMjAwOS0xMS0yNSAxMDoyNTo1MC4wMDAwMDAwMDAgKzAxMDAK K0BAIC0xNjgsNyArMTY4LDggQEAgcmVjb3JkX21pbmltYWxfc3ltYm9sIChjaGFyICpuYW1lLCBD T1JFXworIHsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAo b2JqZmlsZSk7CisgCistICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1z dF9maWxlX3RleHQpCisrICBpZiAobXNfdHlwZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1z dF9maWxlX3RleHQKKysgICAgICB8fCBtc190eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKKyAg ICAgYWRkcmVzcyA9IGdkYmFyY2hfc21hc2hfdGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNz KTsKKyAKKyAgIHJldHVybiBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9hbmRfaW5mbworQEAg LTM3Myw3ICszNzQsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZQorIAkgICAgeworIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dF QUspKQorIAkJeworLQkJICBtc190eXBlID0gbXN0X3RleHQ7CisrCQkgIGlmIChzeW0tPmZsYWdz ICYgQlNGX0dOVV9JTkRJUkVDVF9GVU5DVElPTikKKysJCSAgICBtc190eXBlID0gbXN0X3RleHRf Z251X2lmdW5jOworKwkJICBlbHNlCisrCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OworIAkJfQor IAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0g J0wnKQorIAkJICAgICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKK0luZGV4OiBnZGIt Ny4wL2dkYi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmlnL2dkYi9nZGJ0 eXBlcy5jCTIwMDktMTEtMjUgMTA6MjQ6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9n ZGIvZ2RidHlwZXMuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEwMAorQEAgLTE5 MDQsNiArMTkwNCw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmcK KyAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9IDE7CisgICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdf RklYRURfSU5TVEFOQ0UpCisgICAgIFRZUEVfRklYRURfSU5TVEFOQ0UgKHR5cGUpID0gMTsKKysg IGlmIChmbGFncyAmIFRZUEVfRkxBR19HTlVfSUZVTkMpCisrICAgIFRZUEVfR05VX0lGVU5DICh0 eXBlKSA9IDE7CisgCisgICBpZiAobmFtZSkKKyAgICAgVFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2 ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1lKSwKK0BAIC0zNzYyLDYgKzM3NjQsOCBAQCBnZGJ0 eXBlc19wb3N0X2luaXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhCisgICAgID0gbG9va3VwX3BvaW50 ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOworICAgYnVpbHRpbl90eXBlLT5i dWlsdGluX2Z1bmNfcHRyCisgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1bmN0 aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7CisrICBidWlsdGluX3R5cGUt PmJ1aWx0aW5fZnVuY19mdW5jX3B0cgorKyAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGxvb2t1 cF9mdW5jdGlvbl90eXBlIChidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19wdHIpKTsKKyAKKyAg IC8qIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgR0RCIGludGVybmFsIGZ1bmN0aW9uLiAgKi8KKyAg IGJ1aWx0aW5fdHlwZS0+aW50ZXJuYWxfZm4KK0BAIC0zODc4LDYgKzM4ODIsMTEgQEAgb2JqZmls ZV90eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAJCSAiPHRleHQgdmFyaWFibGUsIG5v IGRlYnVnIGluZm8+Iiwgb2JqZmlsZSk7CisgICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5 cGUtPm5vZGVidWdfdGV4dF9zeW1ib2wpCisgICAgID0gb2JqZmlsZV90eXBlLT5idWlsdGluX2lu dDsKKysgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2wKKysgICAg PSBpbml0X3R5cGUgKFRZUEVfQ09ERV9GVU5DLCAxLCBUWVBFX0ZMQUdfR05VX0lGVU5DLAorKwkJ ICI8dGV4dCBnbnUtaWZ1bmMgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+Iiwgb2JqZmlsZSk7Cisr ICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNf c3ltYm9sKQorKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKKyAgIG9i amZpbGVfdHlwZS0+bm9kZWJ1Z19kYXRhX3N5bWJvbAorICAgICA9IGluaXRfdHlwZSAoVFlQRV9D T0RFX0lOVCwKKyAJCSBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwg MCwKK0luZGV4OiBnZGItNy4wL2dkYi9nZGJ0eXBlcy5oCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu MC5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMDktMTEtMjUgMTA6MjQ6NDguMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC9nZGIvZ2RidHlwZXMuaAkyMDA5LTExLTI1IDEwOjI1OjE3LjAwMDAwMDAw MCArMDEwMAorQEAgLTE4Nyw2ICsxODcsNyBAQCBlbnVtIHR5cGVfZmxhZ192YWx1ZQorICAgVFlQ RV9GTEFHX0ZJWEVEX0lOU1RBTkNFID0gKDEgPDwgMTUpLAorICAgVFlQRV9GTEFHX1NUVUJfU1VQ UE9SVEVEID0gKDEgPDwgMTYpLAorICAgVFlQRV9GTEFHX05PVFRFWFQgPSAoMSA8PCAxNyksCisr ICBUWVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwgMTgpLAorIAorICAgLyogVXNlZCBmb3IgZXJy b3ItY2hlY2tpbmcuICAqLworICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAor QEAgLTI5Miw2ICsyOTMsMTIgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKKyAKKyAj ZGVmaW5lIFRZUEVfTk9UVEVYVCh0KQkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3R0ZXh0 KQorIAorKy8qIEN1cnJlbnRseSB1c2VkIG9ubHkgZm9yIFRZUEVfQ09ERV9GVU5DIHdoZXJlIHNw ZWNpZmllcyB0aGUgcmVhbCBmdW5jdGlvbgorKyAgIGFkZHJlc3MgaXMgcmV0dXJuZWQgYnkgdGhp cyBmdW5jdGlvbiBjYWxsLiAgVFlQRV9UQVJHRVRfVFlQRSBkZXRlcm1pbmVzIHRoZQorKyAgIGZp bmFsIHJldHVybmVkIGZ1bmN0aW9uIHR5cGUgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuICAqLwor KworKyNkZWZpbmUgVFlQRV9HTlVfSUZVTkModCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19n bnVfaWZ1bmMpCisrCisgLyogVHlwZSBvd25lci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0 cnVlLCB0aGUgdHlwZSBpcyBvd25lZCBieQorICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBU WVBFX09CSkZJTEUuICBPdGhlcndlaXNlLCB0aGUgdHlwZSBpcworICAgIG93bmVkIGJ5IGFuIGFy Y2hpdGVjdHVyZTsgVFlQRV9PQkpGSUxFIGlzIE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KK0BAIC00 MjcsNiArNDM0LDcgQEAgc3RydWN0IG1haW5fdHlwZQorICAgdW5zaWduZWQgaW50IGZsYWdfdmVj dG9yIDogMTsKKyAgIHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKKyAgIHVu c2lnbmVkIGludCBmbGFnX25vdHRleHQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lm dW5jIDogMTsKKyAgIHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKKyAgIHVu c2lnbmVkIGludCBmbGFnX29iamZpbGVfb3duZWQgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdf ZGlzY2FyZGFibGUgOiAxOworQEAgLTExNDQsNiArMTE1MiwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90 eXBlCisgICAgICAoKikgKCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRl ci4gICovCisgICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKKyAKKysgIC8qIGBwb2lu dGVyIHRvIGZ1bmN0aW9uIHJldHVybmluZyBwb2ludGVyIHRvIGZ1bmN0aW9uIChyZXR1cm5pbmcg dm9pZCknIHR5cGUuCisrICAgICBUaGUgZmluYWwgdm9pZCByZXR1cm4gdHlwZSBpcyBub3Qgc2ln bmlmaWNhbnQgZm9yIGl0LiAgKi8KKysgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfZnVuY19w dHI7CisrCisgCisgICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlwZXMuICAqLworIAorQEAgLTExODYs NiArMTE5OCw3IEBAIHN0cnVjdCBvYmpmaWxlX3R5cGUKKyAKKyAgIC8qIFR5cGVzIHVzZWQgZm9y IHN5bWJvbHMgd2l0aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCisgICBzdHJ1Y3QgdHlwZSAq bm9kZWJ1Z190ZXh0X3N5bWJvbDsKKysgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfZ251X2lm dW5jX3N5bWJvbDsKKyAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOworICAgc3Ry dWN0IHR5cGUgKm5vZGVidWdfdW5rbm93bl9zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1 Z190bHNfc3ltYm9sOworSW5kZXg6IGdkYi03LjAvZ2RiL2luZmNhbGwuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjAub3JpZy9nZGIvaW5mY2FsbC5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIvaW5mY2FsbC5jCTIwMDktMTEtMjUgMTA6MjQ6NTYu MDAwMDAwMDAwICswMTAwCitAQCAtMjg2LDYgKzI4NiwyNyBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIg KHN0cnVjdCB2YWx1ZSAqZnVuY3RpCisgICBlbHNlCisgICAgIGVycm9yIChfKCJJbnZhbGlkIGRh dGEgdHlwZSBmb3IgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLiIpKTsKKyAKKysgIGlmIChUWVBFX0dO VV9JRlVOQyAoZnR5cGUpKQorKyAgICB7CisrICAgICAgc3RydWN0IHR5cGUgKmZ1bmNfZnVuY19w dHI7CisrCisrICAgICAgZnVuYWRkciArPSBnZGJhcmNoX2RlcHJlY2F0ZWRfZnVuY3Rpb25fc3Rh cnRfb2Zmc2V0IChnZGJhcmNoKTsKKysKKysgICAgICAvKiBDYXN0IEZVTkFERFIgdG8gZHJvcCBU WVBFX0dOVV9JRlVOQyBhbmQgYmVpbmcgYWJsZSB0byBjYWxsIGdudS1pZnVuYworKwkgRlVOQURE UiB3aXRob3V0IGNhdXNpbmcgZGVhZGxvY2sgYnkgdGhpcyBibG9jayBvZiBjb2RlLiAgKi8KKysK KysgICAgICBmdW5jX2Z1bmNfcHRyID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9m dW5jX2Z1bmNfcHRyOworKyAgICAgIGZ1bmN0aW9uID0gdmFsdWVfZnJvbV9wb2ludGVyIChmdW5j X2Z1bmNfcHRyLCBmdW5hZGRyKTsKKysKKysgICAgICAvKiBnbnUtaWZ1bmNzIGhhdmUgbm8gYXJn dW1lbnRzLiAgKi8KKysgICAgICBmdW5jdGlvbiA9IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVu Y3Rpb24sIDAsIE5VTEwpOworKworKyAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChm dW5jdGlvbik7CisrCisrICAgICAgLyogVGhpcyBpcyBgaW50JyBhcyB0aGUgcmV0dXJuIHR5cGUg b2YgdGhlIGZpbmFsIGZ1bmN0aW9uLiAgKi8KKysgICAgICB2YWx1ZV90eXBlID0gVFlQRV9UQVJH RVRfVFlQRSAodmFsdWVfdHlwZSk7CisrICAgIH0KKysKKyAgIGlmIChyZXR2YWxfdHlwZSAhPSBO VUxMKQorICAgICAqcmV0dmFsX3R5cGUgPSB2YWx1ZV90eXBlOworICAgcmV0dXJuIGZ1bmFkZHIg KyBnZGJhcmNoX2RlcHJlY2F0ZWRfZnVuY3Rpb25fc3RhcnRfb2Zmc2V0IChnZGJhcmNoKTsKK0lu ZGV4OiBnZGItNy4wL2dkYi9saW5lc3BlYy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmln L2dkYi9saW5lc3BlYy5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC9nZGIvbGluZXNwZWMuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEw MAorQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5jbHVkZSAiaW50ZXJwcy5oIgorICNpbmNsdWRlICJt aS9taS1jbWRzLmgiCisgI2luY2x1ZGUgInRhcmdldC5oIgorKyNpbmNsdWRlICJpbmZjYWxsLmgi CisgCisgLyogV2Ugc2hhcmUgdGhpcyBvbmUgd2l0aCBzeW10YWIuYywgYnV0IGl0IGlzIG5vdCBl eHBvcnRlZCB3aWRlbHkuICovCisgCitAQCAtMTg3NSw2ICsxODc2LDIyIEBAIG1pbnN5bV9mb3Vu ZCAoaW50IGZ1bmZpcnN0bGluZSwgc3RydWN0IG0KKyAgIHBjID0gZ2RiYXJjaF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWVzLnNhbHNbMF0ucGMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X3RhcmdldCk7CisrCisrICAvKiBDYWxsIGdu dS1pZnVuYyB0byByZXNvbHZlIGJyZWFrcG9pbnQgYXQgaXRzIHJldHVybmVkIGZ1bmN0aW9uLiAg Ki8KKysgIGlmIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYykK KysgICAgeworKyAgICAgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfcHRyOworKyAgICAgIHN0cnVj dCB2YWx1ZSAqZnVuY3Rpb247CisrCisrICAgICAgZnVuY19mdW5jX3B0ciA9IGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jX3B0cjsKKysgICAgICBmdW5jdGlvbiA9IHZh bHVlX2Zyb21fcG9pbnRlciAoZnVuY19mdW5jX3B0ciwgcGMpOworKworKyAgICAgIC8qIGdudS1p ZnVuY3MgaGF2ZSBubyBhcmd1bWVudHMuICAqLworKyAgICAgIGZ1bmN0aW9uID0gY2FsbF9mdW5j dGlvbl9ieV9oYW5kIChmdW5jdGlvbiwgMCwgTlVMTCk7CisrCisrICAgICAgcGMgPSB2YWx1ZV9h c19hZGRyZXNzIChmdW5jdGlvbik7CisrICAgIH0KKysKKyAgIGlmIChwYyAhPSB2YWx1ZXMuc2Fs c1swXS5wYykKKyAgICAgdmFsdWVzLnNhbHNbMF0gPSBmaW5kX3BjX3NlY3RfbGluZSAocGMsIE5V TEwsIDApOworIAorSW5kZXg6IGdkYi03LjAvZ2RiL21pbnN5bXMuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjAub3JpZy9nZGIvbWluc3ltcy5jCTIwMDktMTEtMjUgMTA6MjQ6NDcuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC9nZGIvbWluc3ltcy5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAw MDAwMDAwICswMTAwCitAQCAtMzMxLDggKzMzMSw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90 ZXh0IChjb25zdCBjaGFyICoKKyAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNoX25leHQp CisgCSAgICB7CisgCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1i b2wpLCBuYW1lKSA9PSAwICYmCistCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90 ZXh0IHx8CistCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQor KwkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwkJICAgfHwgTVNZTUJP TF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJCSAgIHx8IE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCisgCQl7CisgCQkgIHN3aXRjaCAoTVNZ TUJPTF9UWVBFIChtc3ltYm9sKSkKKyAJCSAgICB7CitAQCAtNjk5LDYgKzcwMCwxNiBAQCBsb29r dXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwCisgeworICAgcmV0dXJuIGxvb2t1 cF9taW5pbWFsX3N5bWJvbF9ieV9wY19zZWN0aW9uIChwYywgTlVMTCk7CisgfQorKworKy8qIFJl dHVybiBub24temVybyBpZmYgUEMgaXMgaW4gZnVuY3Rpb24gaW1wbGVtZW50aW5nIGdudS1pZnVu YyBzZWxlY3Rpb24uICAqLworKworK2ludAorK2luX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIg cGMpCisreworKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0gbG9va3VwX21pbmlt YWxfc3ltYm9sX2J5X3BjIChwYyk7CisrCisrICByZXR1cm4gbXN5bWJvbCAmJiBNU1lNQk9MX1RZ UEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYzsKKyt9CisgDAorIAorIC8qIFJldHVy biBsZWFkaW5nIHN5bWJvbCBjaGFyYWN0ZXIgZm9yIGEgQkZELiBJZiBCRkQgaXMgTlVMTCwKK0BA IC03MzgsNiArNzQ5LDcgQEAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIg KgorICAgc3dpdGNoIChtc190eXBlKQorICAgICB7CisgICAgIGNhc2UgbXN0X3RleHQ6CisrICAg IGNhc2UgbXN0X3RleHRfZ251X2lmdW5jOgorICAgICBjYXNlIG1zdF9maWxlX3RleHQ6CisgICAg IGNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6CisgICAgICAgc2VjdGlvbiA9IFNFQ1RfT0ZGX1RF WFQgKG9iamZpbGUpOworQEAgLTExODQsNyArMTE5Niw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGlu ZV90YXJnZXQgKHN0cnVjdCBmcmEKKyAgICAgeworICAgICAgIEFMTF9NU1lNQk9MUyAob2JqZmls ZSwgbXN5bWJvbCkKKyAgICAgICB7CistCWlmIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1z dF90ZXh0CisrCWlmICgoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwkgICAg fHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCisgCSAgICAm JiBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAorIAkJICAgICAgIFNZTUJP TF9MSU5LQUdFX05BTUUgKHRzeW1ib2wpKSA9PSAwKQorIAkgIHJldHVybiBTWU1CT0xfVkFMVUVf QUREUkVTUyAobXN5bWJvbCk7CitJbmRleDogZ2RiLTcuMC9nZGIvcGFyc2UuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjAub3JpZy9nZGIvcGFyc2UuYwkyMDA5LTExLTI1IDEwOjI0OjQ3LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAvZ2RiL3BhcnNlLmMJMjAwOS0xMS0yNSAxMDoyNjoxNi4w MDAwMDAwMDAgKzAxMDAKK0BAIC01MTcsNiArNTE3LDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChz dHJ1Y3QgbWluaW1hbF9zeW1ib2wKKyAJd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUg KG9iamZpbGUpLT5ub2RlYnVnX3RleHRfc3ltYm9sKTsKKyAgICAgICBicmVhazsKKyAKKysgICAg Y2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpm aWxlX3R5cGUgKG9iamZpbGUpCisrCQkJCQkgICAgICAgLT5ub2RlYnVnX3RleHRfZ251X2lmdW5j X3N5bWJvbCk7CisrICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgbXN0X2RhdGE6CisgICAgIGNh c2UgbXN0X2ZpbGVfZGF0YToKKyAgICAgY2FzZSBtc3RfYnNzOgorSW5kZXg6IGdkYi03LjAvZ2Ri L3NvbGliLXN2cjQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAub3JpZy9nZGIvc29saWItc3Zy NC5jCTIwMDktMTEtMjUgMTA6MjQ6NDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIv c29saWItc3ZyNC5jCTIwMDktMTEtMjUgMTA6MjY6NDEuMDAwMDAwMDAwICswMTAwCitAQCAtMTI0 Miw3ICsxMjQyLDggQEAgc3ZyNF9pbl9keW5zeW1fcmVzb2x2ZV9jb2RlIChDT1JFX0FERFIgcAor IHsKKyAgIHJldHVybiAoKHBjID49IGludGVycF90ZXh0X3NlY3RfbG93ICYmIHBjIDwgaW50ZXJw X3RleHRfc2VjdF9oaWdoKQorIAkgIHx8IChwYyA+PSBpbnRlcnBfcGx0X3NlY3RfbG93ICYmIHBj IDwgaW50ZXJwX3BsdF9zZWN0X2hpZ2gpCistCSAgfHwgaW5fcGx0X3NlY3Rpb24gKHBjLCBOVUxM KSk7CisrCSAgfHwgaW5fcGx0X3NlY3Rpb24gKHBjLCBOVUxMKQorKwkgIHx8IGluX2dudV9pZnVu Y19zdHViIChwYykpOworIH0KKyAKKyAvKiBHaXZlbiBhbiBleGVjdXRhYmxlJ3MgQUJGRCBhbmQg dGFyZ2V0LCBjb21wdXRlIHRoZSBlbnRyeS1wb2ludAorSW5kZXg6IGdkYi03LjAvZ2RiL3N5bW1p c2MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAub3JpZy9nZGIvc3ltbWlzYy5jCTIwMDktMTEt MjUgMTA6MjQ6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIvc3ltbWlzYy5jCTIw MDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCitAQCAtMjg3LDYgKzI4Nyw5IEBAIGR1 bXBfbXN5bWJvbHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKKyAJY2FzZSBtc3RfdGV4dDoK KyAJICBtc190eXBlID0gJ1QnOworIAkgIGJyZWFrOworKwljYXNlIG1zdF90ZXh0X2dudV9pZnVu YzoKKysJICBtc190eXBlID0gJ2knOworKwkgIGJyZWFrOworIAljYXNlIG1zdF9zb2xpYl90cmFt cG9saW5lOgorIAkgIG1zX3R5cGUgPSAnUyc7CisgCSAgYnJlYWs7CitJbmRleDogZ2RiLTcuMC9n ZGIvc3ltdGFiLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLm9yaWcvZ2RiL3N5bXRhYi5jCTIw MDktMTEtMjUgMTA6MjQ6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC9nZGIvc3ltdGFi LmMJMjAwOS0xMS0yNSAxMDoyNDo1Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMTU1LDcgKzMxNTUs NyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51CisgICB7bXN0X2Zp bGVfZGF0YSwgbXN0X3NvbGliX3RyYW1wb2xpbmUsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKKyAg IHN0YXRpYyBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgdHlwZXM0W10KKyAgID0KKy0gIHttc3Rf ZmlsZV9ic3MsIG1zdF90ZXh0LCBtc3RfYWJzLCBtc3RfdW5rbm93bn07CisrICB7bXN0X2ZpbGVf YnNzLCBtc3RfdGV4dF9nbnVfaWZ1bmMsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKKyAgIGVudW0g bWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlOworICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBl IG91cnR5cGUyOworICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUzOworSW5kZXg6 IGdkYi03LjAvZ2RiL3N5bXRhYi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC5vcmlnL2dkYi9z eW10YWIuaAkyMDA5LTExLTI1IDEwOjI0OjQ1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAv Z2RiL3N5bXRhYi5oCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCitAQCAtMjc1 LDYgKzI3NSw4IEBAIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZQorIHsKKyAgIG1zdF91bmtub3du ID0gMCwJCS8qIFVua25vd24gdHlwZSwgdGhlIGRlZmF1bHQgKi8KKyAgIG1zdF90ZXh0LAkJCS8q IEdlbmVyYWxseSBleGVjdXRhYmxlIGluc3RydWN0aW9ucyAqLworKyAgbXN0X3RleHRfZ251X2lm dW5jLAkJLyogRXhlY3V0YWJsZSBjb2RlIHJldHVybmluZyBhZGRyZXNzCisrCQkJCSAgIG9mIGV4 ZWN1dGFibGUgY29kZSAqLworICAgbXN0X2RhdGEsCQkJLyogR2VuZXJhbGx5IGluaXRpYWxpemVk IGRhdGEgKi8KKyAgIG1zdF9ic3MsCQkJLyogR2VuZXJhbGx5IHVuaW5pdGlhbGl6ZWQgZGF0YSAq LworICAgbXN0X2FicywJCQkvKiBHZW5lcmFsbHkgYWJzb2x1dGUgKG5vbnJlbG9jYXRhYmxlKSAq LworQEAgLTExNDksNiArMTE1MSw4IEBAIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxv b2t1cF9taW4KKyAKKyBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBfbWluaW1h bF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUik7CisgCisrZXh0ZXJuIGludCBpbl9nbnVfaWZ1bmNf c3R1YiAoQ09SRV9BRERSIHBjKTsKKysKKyBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sCisg ICAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKENPUkVfQUREUiwgc3RydWN0 IG9ial9zZWN0aW9uICopOworIAorSW5kZXg6IGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nbnUtaWZ1bmMtbGliLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ251LWlmdW5jLWxpYi5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCitA QCAtMCwwICsxLDQ1IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisr CisrI2luY2x1ZGUgPGFzc2VydC5oPgorKworK3R5cGVkZWYgaW50ICgqZmluYWxfdCkgKGludCBh cmcpOworKworK3N0YXRpYyBpbnQKKytmaW5hbCAoaW50IGFyZykKKyt7CisrICByZXR1cm4gYXJn ICsgMTsKKyt9CisrCisrc3RhdGljIHZvbGF0aWxlIGludCBnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQ7 CisrCisrdm9pZAorK2dudV9pZnVuY19wcmUgKHZvaWQpCisreworKyAgYXNzZXJ0ICghZ251X2lm dW5jX2luaXRpYWxpemVkKTsKKyt9CisrCisrZmluYWxfdCBnbnVfaWZ1bmNYICh2b2lkKSBhc20g KCJnbnVfaWZ1bmMiKTsKKythc20gKCIudHlwZSBnbnVfaWZ1bmMsIEBnbnVfaW5kaXJlY3RfZnVu Y3Rpb24iKTsKKysKKytmaW5hbF90CisrZ251X2lmdW5jWCAodm9pZCkKKyt7CisrICBnbnVfaWZ1 bmNfaW5pdGlhbGl6ZWQgPSAxOworKworKyAgcmV0dXJuIGZpbmFsOworK30KK0luZGV4OiBnZGIt Ny4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4w L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMJMjAwOS0xMS0yNSAxMDoyNDo1Ni4w MDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrZXh0ZXJuIGludCBn bnVfaWZ1bmMgKGludCBhcmcpOworK2V4dGVybiB2b2lkIGdudV9pZnVuY19wcmUgKHZvaWQpOwor KworK2ludAorK21haW4gKHZvaWQpCisreworKyAgaW50IGk7CisrCisrICBnbnVfaWZ1bmNfcHJl ICgpOworKyAgCisrICBpID0gZ251X2lmdW5jICgxKTsJLyogYnJlYWstYXQtY2FsbCAqLworKyAg YXNzZXJ0IChpID09IDIpOworKworKyAgZ251X2lmdW5jICgyKTsJLyogYnJlYWstYXQtbmV4dGNh bGwgKi8KKysKKysgIHJldHVybiAwOwkvKiBicmVhay1hdC1leGl0ICovCisrfQorSW5kZXg6IGdk Yi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2Ri LTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAJMjAwOS0xMS0yNSAxMDoy NDo1Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsNzIgQEAKKysjIENvcHlyaWdodCAoQykg MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrCisraWYge1tza2lwX3NobGliX3Rlc3RzXX0geworKyAgICByZXR1cm4g MAorK30KKysKKytzZXQgdGVzdGZpbGUgImdudS1pZnVuYyIKKytzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorKwor K3NldCBsaWJmaWxlICIke3Rlc3RmaWxlfS1saWIiCisrc2V0IGxpYnNyYyAke2xpYmZpbGV9LmMK KytzZXQgbGliX3NvICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJmaWxlfS5zbworKworK3NldCBs aWJfb3B0cyBbbGlzdCBkZWJ1Z10KKytzZXQgZXhlY19vcHRzIFtsaXN0IGRlYnVnIHNobGliPSRs aWJfc29dCisrCisraWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRp cn0vJGxpYnNyYyAkbGliX3NvICRsaWJfb3B0c10gIT0gIiIKKysgICAgIHx8IFtnZGJfY29tcGls ZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRzcmNmaWxlICRiaW5maWxlIGV4ZWN1dGFibGUgJGV4ZWNf b3B0c10gIT0gIiJ9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlIGVpdGhlciAk bGlic3JjIG9yICRzcmNmaWxlLiIKKysgICAgcmV0dXJuIC0xCisrfQorKworKyMgU3RhcnQgd2l0 aCBhIGZyZXNoIGdkYi4KKysKKytjbGVhbl9yZXN0YXJ0ICR0ZXN0ZmlsZQorK2dkYl9sb2FkX3No bGlicyAke2xpYl9zb30KKysKKytpZiAhW3J1bnRvX21haW5dIHRoZW4geworKyAgICBmYWlsICJD YW4ndCBydW4gdG8gbWFpbiIKKysgICAgcmV0dXJuIDE7CisrfQorKworK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1hdC1uZXh0Y2FsbCJdCisrCisrZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LWNhbGwiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJicmVhay1hdC1jYWxsIiAiLipicmVhay1hdC1jYWxsLioiCisrCisr IyBUZXN0IEdEQiB3aWxsIGF1dG9tYXRpY2FsbHkgaW5kaXJlY3QgdGhlIGNhbGwuCisrCisrZ2Ri X3Rlc3QgInAgZ251X2lmdW5jICgzKSIgIiA9IDQiCisrCisrIyBUZXN0IEdEQiB3aWxsIHNraXAg dGhlIGdudV9pZnVuYyByZXNvbHZlciBvbiBmaXJzdCBjYWxsLgorKworK2dkYl90ZXN0ICJzdGVw IiAiXHJcbmZpbmFsIC4qIgorKworKyMgVGVzdCBHREIgd2lsbCBub3QgYnJlYWsgYmVmb3JlIHRo ZSBmaW5hbCBjaG9zZW4gaW1wbGVtZW50YXRpb24uCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImJyZWFrLWF0LW5leHRjYWxsIiAiLipicmVhay1hdC1uZXh0Y2FsbC4qIgorKworK2dk Yl9icmVha3BvaW50ICJnbnVfaWZ1bmMiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg Im5leHRjYWxsIGdudV9pZnVuYyIKKysKKytnZGJfdGVzdCAiZnJhbWUiICIjMCArZmluYWwgXFwo LioiICJuZXh0Y2FsbCBnbnVfaWZ1bmMgc2tpcHBlZCIKCmRpZmYgLS1naXQgYS9nZGItY29yZS1v cGVuLXZkc28td2FybmluZy5wYXRjaCBiL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNWU3MmIKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaApAQCAtMCwwICsxLDgyIEBA CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMC9tc2cwMDE0Mi5o dG1sCitTdWJqZWN0OiBbcGF0Y2hdIEZpeCBHTlUvTGludXggY29yZSBvcGVuOiBDYW4ndCByZWFk IHBhdGhuYW1lIGZvciBsb2FkIG1hcDogIElucHV0L291dHB1dCBlcnJvci4KKworSGksCisKK0dE QiBjdXJyZW50bHkgYWx3YXlzIHByaW50cyBvbiBsb2FkaW5nIGEgY29yZSBmaWxlOgorCXdhcm5p bmc6IENhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRwdXQgZXJyb3Iu CisKK1RoZSBwYXRjaCBpcyBub3QgbmljZSBidXQgaXQgd2FzIFdPTlRGSVhlZCBvbiB0aGUgZ2xp YmMgc2lkZSBpbjoKKwlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDA5LTEw L21zZzAwMDAxLmh0bWwKKworVGhlIHNhbWUgbWVzc2FnZSBpbiBHREIgUFIgODg4MiBhbmQgZ2xp YmMgUFIgMzg3IHdhcyBmb3IgbGQtbGludXguc28uMiBsX25hbWUKK2J1dCB0aGF0IG9uZSBpcyBu b3cgaWdub3JlZCB0aGFua3MgdG8gSUdOT1JFX0ZJUlNUX0xJTktfTUFQX0VOVFJZLgorCitUaGlz IGZpeCBpcyBpbnRlbmRlZCBmb3IgTGludXggc3lzdGVtIHZEU08gbF9uYW1lIHdoaWNoIGlzIGEg c2Vjb25kIGVudHJ5IGluCit0aGUgRFNPIGxpc3QuCisKK1JlZ3Jlc3Npb24gdGVzdGVkIG9uIHt4 ODZfODYseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExMS1saW51eC1nbnUuCisKKworVGhhbmtzLAor SmFuCisKKworZ2RiLworMjAwOS0xMC0wNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorCisJRG8gbm90IHByaW50IGZhbHNlIHdhcm5pbmcgb24gcmVhZGluZyBj b3JlIGZpbGUgd2l0aCB2RFNPIG9uIEdOVS9MaW51eC4KKwkqIHNvbGliLXN2cjQuYyAoc3ZyNF9j dXJyZW50X3Nvcyk6IFN1cHByZXNzIHRoZSB3YXJuaW5nIGlmCisJTUFTVEVSX1NPX0xJU1QgaXMg c3RpbGwgTlVMTC4KKwkqIHNvbGliLmMgKHVwZGF0ZV9zb2xpYl9saXN0KTogTmV3IHZhcmlhYmxl IHNhdmVkX3NvX2xpc3RfaGVhZC4KKwlDb25kaXRpb25hbGx5IHJlc3RhcnQgdGhlIGZ1bmN0aW9u LgorCitbIENvbnRleHQgYmFja3BvcnQuICBdCisKKy0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKKysr KyBiL2dkYi9zb2xpYi1zdnI0LmMKK0BAIC0xMDk3LDggKzEwOTcsMTggQEAgc3ZyNF9jdXJyZW50 X3NvcyAodm9pZCkKKyAJICB0YXJnZXRfcmVhZF9zdHJpbmcgKExNX05BTUUgKG5ldyksICZidWZm ZXIsCisgCQkJICAgICAgU09fTkFNRV9NQVhfUEFUSF9TSVpFIC0gMSwgJmVycmNvZGUpOworIAkg IGlmIChlcnJjb2RlICE9IDApCistCSAgICB3YXJuaW5nIChfKCJDYW4ndCByZWFkIHBhdGhuYW1l IGZvciBsb2FkIG1hcDogJXMuIiksCistCQkgICAgIHNhZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsK KysJICAgIHsKKysJICAgICAgLyogRHVyaW5nIHRoZSBmaXJzdCBldmVyIERTTyBsaXN0IHJlYWRp bmcgc29tZSBzdHJpbmdzIG1heSBiZQorKwkJIHVucmVhZGFibGUgYXMgcmVzaWRpbmcgaW4gdGhl IGxkLnNvIHJlYWRvbmx5IG1lbW9yeSBub3QgYmVpbmcKKysJCSBwcmVzZW50IGluIGEgZHVtcGVk IGNvcmUgZmlsZS4gIERlbGF5IHRoZSBlcnJvciBjaGVjayBhZnRlcgorKwkJIHRoZSBmaXJzdCBw YXNzIG9mIERTTyBsaXN0IHNjYW5uaW5nIHdoZW4gbGQuc28gc2hvdWxkIGJlCisrCQkgYWxyZWFk eSBtYXBwZWQgaW4gYW5kIGFsbCB0aGUgRFNPIGxpc3QgbF9uYW1lIG1lbW9yeSBnZXRzCisrCQkg cmVhZGFibGUuICAqLworKworKwkgICAgICBpZiAobWFzdGVyX3NvX2xpc3QgKCkgIT0gTlVMTCkK KysJCXdhcm5pbmcgKF8oIkNhbid0IHJlYWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiAlcy4iKSwK KysJCQkgc2FmZV9zdHJlcnJvciAoZXJyY29kZSkpOworKwkgICAgfQorIAkgIGVsc2UKKyAJICAg IHsKKyAJICAgICAgc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZDsKKy0tLSBhL2dkYi9zb2xpYi5j CisrKysgYi9nZGIvc29saWIuYworQEAgLTUzOCw2ICs1MzgsNyBAQCB1cGRhdGVfc29saWJfbGlz dCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0KQorICAgc3RydWN0IHRh cmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2gpOworICAgc3RydWN0 IHNvX2xpc3QgKmluZmVyaW9yID0gb3BzLT5jdXJyZW50X3NvcygpOworICAgc3RydWN0IHNvX2xp c3QgKmdkYiwgKipnZGJfbGluazsKKysgIHN0cnVjdCBzb19saXN0ICpzYXZlZF9zb19saXN0X2hl YWQgPSBzb19saXN0X2hlYWQ7CisgCisgICAvKiBXZSBjYW4gcmVhY2ggaGVyZSBkdWUgdG8gY2hh bmdpbmcgc29saWItc2VhcmNoLXBhdGggb3IgdGhlCisgICAgICBzeXNyb290LCBiZWZvcmUgaGF2 aW5nIGFueSBpbmZlcmlvci4gICovCitAQCAtNjY4LDYgKzY2OSwxMiBAQCB1cGRhdGVfc29saWJf bGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0KQorIAkgIG9ic2Vy dmVyX25vdGlmeV9zb2xpYl9sb2FkZWQgKGkpOworIAl9CisgICAgIH0KKysKKysgIC8qIElmIHRo aXMgd2FzIHRoZSB2ZXJ5IGZpcnN0IERTTyBsaXN0IHNjYW4gYW5kIHdlIHBvc3NpYmx5IHJlYWQg aW4gbGQuc28KKysgICAgIHJlY2hlY2sgYWxsIHRoZSBmb3JtZXJseSB1bnJlYWRhYmxlIERTTyBu YW1lcyBzdHJpbmdzLiAgKi8KKysKKysgIGlmIChzYXZlZF9zb19saXN0X2hlYWQgPT0gTlVMTCAm JiBzb19saXN0X2hlYWQgIT0gTlVMTCkKKysgICAgdXBkYXRlX3NvbGliX2xpc3QgKGZyb21fdHR5 LCB0YXJnZXQpOworIH0KKyAKKyAKKwoKZGlmZiAtLWdpdCBhL2dkYi1lbXB0eS1uYW1lc3BhY2Uu cGF0Y2ggYi9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmE4YmFmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZW1wdHktbmFtZXNw YWNlLnBhdGNoCkBAIC0wLDAgKzEsMjA0IEBACitnZGIvCisyMDA5LTEyLTIwICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlGaXggY29tcGF0aWJpbGl0eSB3 aXRoIEcrKy00LjEuCisJKiBkd2FyZjJyZWFkLmMgKHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSk6 IE5ldyB2YXJpYWJsZSBQQVJFTlRfTkFNRS4KKwlJZ25vcmUgcGFyZW50IG5hbWVzcGFjZXMgd2l0 aCBuYW1lICI6OiIuCisJKHBoeXNuYW1lX3ByZWZpeF8xKTogSWdub3JlIG5hbWVzcGFjZXMgd2l0 aCBuYW1lICI6OiIuCisKK2dkYi90ZXN0c3VpdGUvCisyMDA5LTEyLTIwICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGdkYi5kd2FyZjIvZHcyLWVtcHR5 LW5hbWVzcGFjZS5leHAsIGdkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5TOgorCU5ldy4K KworLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQuYworQEAgLTIz NTUsMTEgKzIzNTUsMTggQEAgcGFydGlhbF9kaWVfcGFyZW50X3Njb3BlIChzdHJ1Y3QgcGFydGlh bF9kaWVfaW5mbyAqcGRpLAorICAgICAgIHx8IHBhcmVudC0+dGFnID09IERXX1RBR19pbnRlcmZh Y2VfdHlwZQorICAgICAgIHx8IHBhcmVudC0+dGFnID09IERXX1RBR191bmlvbl90eXBlKQorICAg ICB7CisrICAgICAgY2hhciAqcGFyZW50X25hbWUgPSBwYXJlbnQtPm5hbWU7CisrCisrICAgICAg LyogRysrIDQuMSBwcm9kdWNlZCBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAiOjoi LiAgKi8KKysgICAgICBpZiAocGFyZW50LT50YWcgPT0gRFdfVEFHX25hbWVzcGFjZSAmJiBwYXJl bnRfbmFtZSAhPSBOVUxMCisrICAgICAgICAgICYmIHN0cmNtcCAocGFyZW50X25hbWUsICI6OiIp ID09IDApCisrCXBhcmVudF9uYW1lID0gTlVMTDsKKysKKyAgICAgICBpZiAoZ3JhbmRwYXJlbnRf c2NvcGUgPT0gTlVMTCkKKy0JcGFyZW50LT5zY29wZSA9IHBhcmVudC0+bmFtZTsKKysJcGFyZW50 LT5zY29wZSA9IHBhcmVudF9uYW1lOworICAgICAgIGVsc2UKKyAJcGFyZW50LT5zY29wZSA9IHR5 cGVuYW1lX2NvbmNhdCAoJmN1LT5jb21wX3VuaXRfb2JzdGFjaywgZ3JhbmRwYXJlbnRfc2NvcGUs CistCQkJCQkgcGFyZW50LT5uYW1lLCBjdSk7CisrCQkJCQkgcGFyZW50X25hbWUsIGN1KTsKKyAg ICAgfQorICAgZWxzZSBpZiAocGFyZW50LT50YWcgPT0gRFdfVEFHX2VudW1lcmF0aW9uX3R5cGUp CisgICAgIC8qIEVudW1lcmF0b3JzIHNob3VsZCBub3QgZ2V0IHRoZSBuYW1lIG9mIHRoZSBlbnVt ZXJhdGlvbiBhcyBhIHByZWZpeC4gICovCitAQCAtOTAwOCw2ICs5MDE1LDkgQEAgcGh5c25hbWVf cHJlZml4XzEgKHN0cnVjdCB1aV9maWxlICpidWYsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorIAkg IG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisgCSAgaWYgKG5hbWUgPT0gTlVMTCkKKyAJ ICAgIG5hbWUgPSAiKGFub255bW91cyBuYW1lc3BhY2UpIjsKKysJICAvKiBHKysgNC4xIHByb2R1 Y2VkIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLworKwkgIGVsc2Ug aWYgKHN0cmNtcCAobmFtZSwgIjo6IikgPT0gMCkKKysJICAgIG5hbWUgPSBOVUxMOworIAkgIGJy ZWFrOworIAorIAljYXNlIERXX1RBR19jbGFzc190eXBlOgorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuUworQEAgLTAsMCAr MSwxMDggQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBU ZXN0IEcrKyA0LjEgcHJvZHVjaW5nIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6 OiIuICAqLworKworKwkuZGF0YQorK3ZhcjoJLjRieXRlCTEKKysKKysJLnNlY3Rpb24gLmRlYnVn X2luZm8KKysuTGN1MV9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICovCisrCS40Ynl0ZQkuTGN1MV9l bmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysuTGN1 MV9zdGFydDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLworKwkuNGJ5dGUJLkxh YmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KKysJLmJ5dGUJ NAkJCQkvKiBQb2ludGVyIHNpemUgKi8KKysKKysJLyogQ1UgZGllICovCisrCS51bGViMTI4IDEJ CQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5hc2NpaQkiZmlsZTEudHh0 XDAiCQkJLyogRFdfQVRfbmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyogRFdf QVRfcHJvZHVjZXIgKi8KKysJLmJ5dGUJNAkJCQkvKiBEV19MQU5HX0NfcGx1c19wbHVzIChDKysp ICovCisrCisrLkx0eXBlX2ludDoKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2Jh c2VfdHlwZSAqLworKwkuYXNjaWkJCSJpbnRcMCIJCQkvKiBEV19BVF9uYW1lICovCisrCS5ieXRl CQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5ieXRlCQk1CQkJLyogRFdfQVRfZW5jb2Rp bmcgKi8KKysKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX25hbWVzcGFjZSAqLwor KwkuYXNjaWkJCSI6OlwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysKKysJLnVsZWIxMjgJNwkJCS8q IEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIChsb2NhdGlvbikgKi8KKysJLmFzY2lpCQkidmFyXDAi CQkJLyogRFdfQVRfbmFtZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9u ICovCisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXIJCQkv KiAgIDxhZGRyPiAqLworKzI6CS40Ynl0ZQkJLkx0eXBlX2ludC0uTGN1MV9iZWdpbgkvKiBEV19B VF90eXBlICovCisrCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIERXX1RBR19u YW1lc3BhY2UgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8K KysKKysuTGN1MV9lbmQ6CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1 Z19hYmJyZXYKKysuTGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29k ZSAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0 ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1l ICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4 MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0 cmluZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIx MjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJ LyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUg Ki8KKysJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyog RFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwku dWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8K KysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxl YjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgzOQkJCS8qIERXX1RBR19u YW1lc3BhY2UgKi8KKysJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJ MHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKworKwkudWxlYjEyOAk3CQkJLyogQWJicmV2IGNvZGUgKGxvY2F0aW9u KSAqLworKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCisrCS5ieXRlCQkw CQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8K KysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgyCQkJ LyogRFdfQVRfbG9jYXRpb24gKi8KKysJLnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEg Ki8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJ CS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuZXhwCitA QCAtMCwwICsxLDQzIEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBUZXN0IEcr KyA0LjEgcHJvZHVjaW5nIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuCisr CisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBE V0FSRi0yIGFuZCB1c2UgZ2FzLgorKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5 IHRhcmdldHMuCisraWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KKysgICAgJiYgIVtpc3Rhcmdl dCAqLSotZ251Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KKysgICAgJiYgIVtpc3Rh cmdldCAqLSotb3BlbmJzZCpdCisrICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCisrICAg ICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0geworKyAgICByZXR1cm4gMCAgCisrfQor KworK3NldCB0ZXN0ZmlsZSAiZHcyLWVtcHR5LW5hbWVzcGFjZSIKKytzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5TCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAorKworK2lmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke2V4ZWN1dGFibGV9IiBvYmplY3Qge25vZGVidWd9XSAhPSAiIiB9IHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKKysKKysjIGBwIHZhcicg YmVsb3cgY2FuIHdvcmsgd2l0aG91dCBpZGVudGlmaWVkIERXQVJGIERJRSBqdXN0IGJhc2VkIG9u IGl0cyBFTEYgc3ltYm9sLgorKyMgQ2F0Y2ggaXQgaGVyZSBhcyBgdHlwZSA9IDxkYXRhIHZhcmlh YmxlLCBubyBkZWJ1ZyBpbmZvPicuCisrZ2RiX3Rlc3QgInB0eXBlIHZhciIgInR5cGUgPSBpbnQi CisrCisrZ2RiX3Rlc3QgInAgdmFyIiAiID0gMSIKCmRpZmYgLS1naXQgYS9nZGItZm9sbG93LWNo aWxkLXN0YWxlLXBhcmVudC5wYXRjaCBiL2dkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNjc5MGMKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItZm9sbG93LWNoaWxkLXN0YWxlLXBhcmVudC5wYXRjaApAQCAtMCwwICsx LDI3IEBACitQcm9ibGVtIG9jY3VycyB3aXRoIHB5dGhvbiBhbmQgaXRzIGdldF9jdXJyZW50X2Fy Y2ggKCkgYXMgaXQgc2VsZWN0cworc2VsZWN0ZWRfZnJhbWUgYW5kIGN1cnJlbnRfZnJhbWUgd2hp bGUgc3RpbGwgaW5mZXJpb3JfcHRpZCBpcyB2YWxpZCBmb3IgdGhlCitvcmlnaW5hbCBwYXJlbnQu ICBCdXQgc2luY2UgdGhpcyBwbGFjZSBpdCBpcyBhbHJlYWR5IGF0dGFjaGVkIGFuZCBsYXRlcgor dW53aW5kZXJzIHRyeSB0byBhY2Nlc3MgaXQsIGJyZWFraW5nOgorICAtUEFTUzogZ2RiLnRocmVh ZHMvd2F0Y2hwb2ludC1mb3JrLmV4cDogY2hpbGQ6IHNpbmdsZXRocmVhZGVkOiBicmVha3BvaW50 IGFmdGVyIHRoZSBmaXJzdCBmb3JrCisgIC1QQVNTOiBnZGIudGhyZWFkcy93YXRjaHBvaW50LWZv cmsuZXhwOiBjaGlsZDogc2luZ2xldGhyZWFkZWQ6IHdhdGNocG9pbnQgYWZ0ZXIgdGhlIGZpcnN0 IGZvcmsKKyAgLVBBU1M6IGdkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHA6IGNoaWxkOiBz aW5nbGV0aHJlYWRlZDogYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsKKyAgLVBBU1M6 IGdkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHA6IGNoaWxkOiBzaW5nbGV0aHJlYWRlZDog d2F0Y2hwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsKKyAgLVBBU1M6IGdkYi50aHJlYWRzL3dh dGNocG9pbnQtZm9yay5leHA6IGNoaWxkOiBzaW5nbGV0aHJlYWRlZDogZmluaXNoCisgICtGQUlM OiBnZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuZXhwOiBjaGlsZDogc2luZ2xldGhyZWFkZWQ6 IGJyZWFrcG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsKKyAgK0ZBSUw6IGdkYi50aHJlYWRzL3dh dGNocG9pbnQtZm9yay5leHA6IGNoaWxkOiBzaW5nbGV0aHJlYWRlZDogd2F0Y2hwb2ludCBhZnRl ciB0aGUgZmlyc3QgZm9yaworICArRkFJTDogZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4 cDogY2hpbGQ6IHNpbmdsZXRocmVhZGVkOiBicmVha3BvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9y aworICArRkFJTDogZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cDogY2hpbGQ6IHNpbmds ZXRocmVhZGVkOiB3YXRjaHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yaworICArRkFJTDogZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cDogY2hpbGQ6IHNpbmdsZXRocmVhZGVkOiBmaW5p c2gKKworLS0tIC4vZ2RiL2luZnJ1bi5jCTIwMDktMTItMjEgMjA6MjY6MzAuMDAwMDAwMDAwICsw MTAwCisrKysgLi9nZGIvaW5mcnVuLmMJMjAwOS0xMi0yMSAyMDoyNjoxMS4wMDAwMDAwMDAgKzAx MDAKK0BAIC0zNzUsNiArMzc1LDkgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCSAgfQorIAllbHNl CisgCSAgeworKwkgICAgLyogUG9zc2libHkgcmVmZXJlbmNlZCBQQVJFTlQgaXMgbm8gbG9uZ2Vy IHZhbGlkLiAgKi8KKysJICAgIHJlaW5pdF9mcmFtZV9jYWNoZSAoKTsKKysKKyAJICAgIC8qIFRo aXMgcGVuZGluZyBmb2xsb3cgZm9yayBldmVudCBpcyBub3cgaGFuZGxlZCwgb25lIHdheQorIAkg ICAgICAgb3IgYW5vdGhlci4gIFRoZSBwcmV2aW91cyBzZWxlY3RlZCB0aHJlYWQgbWF5IGJlIGdv bmUKKyAJICAgICAgIGZyb20gdGhlIGxpc3RzIGJ5IG5vdywgYnV0IGlmIGl0IGlzIHN0aWxsIGFy b3VuZCwgbmVlZAoKZGlmZiAtLWdpdCBhL2dkYi1vcnBoYW5yaXBwZXIuYyBiL2dkYi1vcnBoYW5y aXBwZXIuYwppbmRleCAxMTg5ZGY2Li40ODkzZThmIDEwMDY0NAotLS0gYS9nZGItb3JwaGFucmlw cGVyLmMKKysrIGIvZ2RiLW9ycGhhbnJpcHBlci5jCkBAIC0yNzYsMTIgKzI3NiwxNiBAQCBzdGF0 aWMgaW50IHNwYXduIChjaGFyICoqYXJndiwgaW50IHRpbWVvdXQpCiAKICAgYXNzZXJ0IChzaWdu YWxfY2hsZF9oaXQgIT0gMCk7CiAKKyAgLyogRG8gbm90IHVuc2V0IE9fTk9OQkxPQ0sgYXMgYSBz dGFsZSBjaGlsZCAodGhlIHdob2xlIHB1cnBvc2Ugb2YgdGhpcworICAgICBwcm9ncmFtKSBoYXZp bmcgb3BlbiBpdHMgb3V0cHV0IHB0eSB3b3VsZCBibG9jayB1cyBpbiByZWFkX291dC4gICovCisj aWYgMAogICBpID0gZmNudGwgKGFtYXN0ZXIsIEZfU0VURkwsIE9fUkRPTkxZIC8qICFPX05PTkJM T0NLICovKTsKICAgaWYgKGkgIT0gMCkKICAgICB7CiAgICAgICBwZXJyb3IgKCJmY250bCAoYW1h c3RlciwgRl9TRVRGTCwgT19SRE9OTFkgLyogIU9fTk9OQkxPQ0sgKi8pIik7CiAgICAgICBleGl0 IChFWElUX0ZBSUxVUkUpOwogICAgIH0KKyNlbmRpZgogCiAgIHdoaWxlIChyZWFkX291dCAoYW1h c3RlcikpOwogCgpkaWZmIC0tZ2l0IGEvZ2RiLXBwYy1ody13YXRjaHBvaW50LXR3aWNlLnBhdGNo IGIvZ2RiLXBwYy1ody13YXRjaHBvaW50LXR3aWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmUzNjMxNTgKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcHBjLWh3LXdh dGNocG9pbnQtdHdpY2UucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorcGNjIHJlZ3Jlc3Npb24gZnJv bToKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA4LTEyL21zZzAwMTQz Lmh0bWwKKworZ2RiLworMjAwOS0xMi0yMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorCisJKiBicmVha3BvaW50LmMgKHVwZGF0ZV93YXRjaHBvaW50KTogU2V0 IEItPlRZUEUgdG8gYnBfd2F0Y2hwb2ludCBiZWZvcmUKKwljYWxsaW5nIGh3X3dhdGNocG9pbnRf dXNlZF9jb3VudC4KKworLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysrIGIvZ2RiL2JyZWFrcG9p bnQuYworQEAgLTExNTIsNiArMTE1Miw5IEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJl YWtwb2ludCAqYiwgaW50IHJlcGFyc2UpCisgCSAgeworIAkgICAgaW50IGksIG1lbV9jbnQsIG90 aGVyX3R5cGVfdXNlZDsKKyAKKysJICAgIC8qIERvIG5vdCBjb3VudCB3aXRoIEIgdHdpY2UgYmVs b3cuICAqLworKwkgICAgYi0+dHlwZSA9IGJwX3dhdGNocG9pbnQ7CisrCisgCSAgICBpID0gaHdf d2F0Y2hwb2ludF91c2VkX2NvdW50IChicF9oYXJkd2FyZV93YXRjaHBvaW50LAorIAkJCQkJICAm b3RoZXJfdHlwZV91c2VkKTsKKyAJICAgIG1lbV9jbnQgPSBjYW5fdXNlX2hhcmR3YXJlX3dhdGNo cG9pbnQgKHZhbF9jaGFpbik7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJlYWRsaW5lLTYuMC1zaWduYWwu cGF0Y2ggYi9nZGItcmVhZGxpbmUtNi4wLXNpZ25hbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4wODczYmVhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJlYWRsaW5l LTYuMC1zaWduYWwucGF0Y2gKQEAgLTAsMCArMSwzMTIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDA5LTExL21zZzAwNTk2Lmh0bWwKK1N1YmplY3Q6IFtnZGIgRllJ LXBhdGNoXSBjYWxsYmFjay1tb2RlIHJlYWRsaW5lLTYuMCByZWdyZXNzaW9uCisKK0hpIENoZXQs CisKK0ZTRiBHREIgY3VycmVudGx5IHNoaXBzIGJ1bmRsZWQgd2l0aCByZWFkbGluZS01LjIgd2hp Y2ggd29ya3MgZmluZS4KK0J1dCB1c2luZyAtLXdpdGgtc3lzdGVtLXJlYWRsaW5lIGFuZCByZWFk bGluZS02LjAtcGF0Y2hsZXZlbDQgaGFzCithIHJlZ3Jlc3Npb246CisKK3JlYWRsaW5lLTUuMjog UnVuIGBnZGIgLW54IC1xJyBhbmQgdHlwZSBDVFJMLUM6CisoZ2RiKSBRdWl0CisoZ2RiKSBfCisK K3JlYWRsaW5lLTYuMDogUnVuIGBnZGIgLW54IC1xJyBhbmQgdHlwZSBDVFJMLUM6CisoZ2RiKSBf CisgPSBub3RoaW5nIGhhcHBlbnMgKGl0IGdldHMgYnVmZmVyZWQgYW5kIGV4ZWN1dGVkIGxhdGVy KQorCShJdCBkb2VzIGFsc28gRkFJTCBvbiBnZGIuZ2RiL3NlbGZ0ZXN0LmV4cC4pCisKK0l0IGlz IGJlY2F1c2UgR0RCIHdhaXRzIGluIGl0cyBvd24gcG9sbCgpIG1haW5sb29wIGFuZCByZWFkbGlu ZSB1c2VzIHZpYQorcmxfY2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsIGFuZCBybF9jYWxsYmFja19o YW5kbGVyX3JlbW92ZS4gIFRoaXMgd2F5IHRoZQorcmVhZGxpbmUgaW50ZXJuYWwgdmFyaWFibGUg X3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSByZW1haW5zIDAgYW5kIENUUkwtQyBnZXRzCitvbmx5 IHN0b3JlZCB0byBfcmxfY2F1Z2h0X3NpZ25hbCBidXQgbm90IGV4ZWN1dGVkLgorCitTZWVuIGlu IHJsX3NpZ25hbF9oYW5kbGVyIGV2ZW4gaWYgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSBpcyBz ZXQgYW5kCitfcmxfaGFuZGxlX3NpZ25hbCBpcyBjYWxsZWQgdGhlbiB0aGUgc2lnbmFsIGlzIHN0 aWxsIHN0b3JlZCB0bworX3JsX2NhdWdodF9zaWduYWwuICBJbiB0aGUgX3JsX2ludGVycnVwdF9p bW1lZGlhdGVseSBjYXNlIGl0IHNob3VsZCBub3QgYmUKK3N0b3JlZCB3aGVuIGl0IHdhcyBhbHJl YWR5IHByb2Nlc3NlZC4KKworcmxfc2lnbmFsX2hhbmRsZXIgZG9lcyBgX3JsX2ludGVycnVwdF9p bW1lZGlhdGVseSA9IDA7JyAtIHdoaWxlIEkgYW0gbm90IGF3YXJlCitvZiBpdHMgbWVhbmluZyBp dCBicmVha3MgdGhlIG5lc3QtY291bnRpbmcgb2Ygb3RoZXIgcm91dGluZXMgd2hpY2ggZG8KK2Bf cmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5Kys7JyBhbmQgYF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRl bHktLTsnIHBvc3NpYmx5CitjcmVhdGluZyBwcm9ibGVtYXRpYyBgX3JsX2ludGVycnVwdF9pbW1l ZGlhdGVseSA9PSAtMScuCisKK2BfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5JyBpcyBhbiBpbnRl cm5hbCB2YXJpYWJsZSwgaG93IGl0IGNvdWxkIGJlIGFjY2Vzc2VkCitieSBhIHJlYWRsaW5lIGFw cGxpY2F0aW9uPyAoT0ssIG1heWJlIGl0IHNob3VsZCBub3QgYmUgdXNlZC4pCisKK0F0dGFjaGlu ZyBhIGN1cnJlbnQgR0RCLXNpZGUgcGF0Y2ggYnV0IGl0IG11c3QgYWNjZXNzIHJlYWRsaW5lIGlu dGVybmFsCit2YXJpYWJsZSBfcmxfY2F1Z2h0X3NpZ25hbCBhbmQgaXQgaXMgZ2VuZXJhbGx5IGp1 c3QgYSB3b3JrYXJvdW5kLiAgQ291bGQgeW91CitwbGVhc2UgaW5jbHVkZSBzdXBwb3J0IGZvciBz aWduYWxzIGluIHRoaXMgYXN5bmNocm9ub3VzIG1vZGUgaW4gcmVhZGxpbmUtNi4xPworSSBmaW5k IGl0IHdvdWxkIGJlIGVub3VnaCB0byBtYWtlIFJMX0NIRUNLX1NJR05BTFMgcHVibGljPworCisK K0dEQjogTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEy LWxpbnV4LWdudS4KK0J1dCB0aGlzIGlzIG5vdCBhIHBhdGNoIGludGVuZGVkIHRvIGJlIGFjY2Vw dGVkLgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMDktMTEtMjkgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogY29uZmlnLmluLCBjb25maWd1 cmU6IFJlZ2VuZXJhdGUuCisJKiBjb25maWd1cmUuYWMgKGZvciByZWFkbGluZV9lY2hvaW5nX3Ap OiBNb3ZlIGluc2lkZSAkTElCUyBjaGFuZ2UuCisJKGZvciBfcmxfY2F1Z2h0X3NpZ25hbCk6IE5l dy4KKwkqIGV2ZW50LWxvb3AuYzogSW5jbHVkZSByZWFkbGluZS9yZWFkbGluZS5oLgorCShnZGJf ZG9fb25lX2V2ZW50KSBbSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMXTogTmV3LgorCitnZGIv dGVzdHN1aXRlLworMjAwOS0xMS0yOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgorCisJKiBnZGIuZ2RiL3NlbGZ0ZXN0LmV4cCAoYmFja3RyYWNlIHRocm91Z2gg c2lnbmFsIGhhbmRsZXIpOiBNb3ZlIGJlZm9yZQorCVNJR0lOVCBwYXNzLCBkcm9wIHRoZSB0aW1l b3V0IGNhc2UuCisJKHNlbmQgU0lHSU5UIHNpZ25hbCB0byBjaGlsZCBwcm9jZXNzKTogVXNlIGdk Yl90ZXN0LgorCShiYWNrdHJhY2UgdGhyb3VnaCByZWFkbGluZSBoYW5kbGVyKTogTmV3LgorCist LS0gYS9nZGIvY29uZmlnLmluCisrKysgYi9nZGIvY29uZmlnLmluCitAQCAtMzUxLDYgKzM1MSw5 IEBACisgLyogRGVmaW5lIGlmIFB5dGhvbiBpbnRlcnByZXRlciBpcyBiZWluZyBsaW5rZWQgaW4u ICovCisgI3VuZGVmIEhBVkVfUFlUSE9OCisgCisrLyogcmVhZGxpbmUtNi4wIHdvcmthcm91bmQg b2YgYmxvY2tlZCBzaWduYWxzLiAqLworKyN1bmRlZiBIQVZFX1JFQURMSU5FX0NBVUdIVF9TSUdO QUwKKysKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWxwYXRoJyBmdW5jdGlv bi4gKi8KKyAjdW5kZWYgSEFWRV9SRUFMUEFUSAorIAorLS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwor KysrIGIvZ2RiL2NvbmZpZ3VyZS5hYworQEAgLTUzOSwxNyArNTM5LDI1IEBAIGlmIHRlc3QgIiR3 aXRoX3N5c3RlbV9yZWFkbGluZSIgPSB5ZXM7IHRoZW4KKyAgICMgcmVhZGxpbmUtNi4wIHN0YXJ0 ZWQgdG8gdXNlIHRoZSBuYW1lIGBfcmxfZWNob2luZ19wJy4KKyAgICMgYCQoUkVBRExJTkVfRElS KS8nIG9mIGJ1bmRsZWQgcmVhZGxpbmUgd291bGQgbm90IHJlc29sdmUgaW4gY29uZmlndXJlLgor IAorLSAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcmVhZGxpbmVfZWNob2luZ19wXSkKKyAgIHNhdmVf TElCUz0kTElCUworICAgTElCUz0iJExJQlMgJFJFQURMSU5FIgorKyAgQUNfTVNHX0NIRUNLSU5H KFtmb3IgcmVhZGxpbmVfZWNob2luZ19wXSkKKyAgIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJP R1JBTSgsW1tleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKKyAJCQkJICAgIHJldHVybiBy ZWFkbGluZV9lY2hvaW5nX3A7XV0pLAorIAkJIFtSRUFETElORV9FQ0hPSU5HX1A9eWVzXSwKKyAJ CSBbUkVBRExJTkVfRUNIT0lOR19QPW5vCisgCQkgIEFDX0RFRklORShbcmVhZGxpbmVfZWNob2lu Z19wXSwgW19ybF9lY2hvaW5nX3BdLAorIAkJCSAgICBbcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8g dXNlIGRpZmZlcmVudCBuYW1lLl0pXSkKKy0gIExJQlM9IiRzYXZlX0xJQlMiCisgICBBQ19NU0df UkVTVUxUKFskUkVBRExJTkVfRUNIT0lOR19QXSkKKysgIEFDX01TR19DSEVDS0lORyhbZm9yIF9y bF9jYXVnaHRfc2lnbmFsXSkKKysgIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSgsW1tl eHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFsOworKwkJCQkgICAgcmV0dXJuIF9y bF9jYXVnaHRfc2lnbmFsO11dKSwKKysJCSBbUkVBRExJTkVfQ0FVR0hUX1NJR05BTD15ZXMKKysJ CSAgQUNfREVGSU5FKFtIQVZFX1JFQURMSU5FX0NBVUdIVF9TSUdOQUxdLCwKKysJCQkgICAgW3Jl YWRsaW5lLTYuMCB3b3JrYXJvdW5kIG9mIGJsb2NrZWQgc2lnbmFscy5dKV0sCisrCQkgW1JFQURM SU5FX0NBVUdIVF9TSUdOQUw9bm9dKQorKyAgQUNfTVNHX1JFU1VMVChbJFJFQURMSU5FX0NBVUdI VF9TSUdOQUxdKQorKyAgTElCUz0iJHNhdmVfTElCUyIKKyBlbHNlCisgICBSRUFETElORT0nJChS RUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCisgICBSRUFETElORV9ERVBTPSckKFJFQURMSU5F KScKKy0tLSBhL2dkYi9ldmVudC1sb29wLmMKKysrKyBiL2dkYi9ldmVudC1sb29wLmMKK0BAIC0z Nyw2ICszNyw3IEBACisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAjaW5jbHVkZSAiZ2RiX2Fz c2VydC5oIgorICNpbmNsdWRlICJnZGJfc2VsZWN0LmgiCisrI2luY2x1ZGUgInJlYWRsaW5lL3Jl YWRsaW5lLmgiCisgCisgLyogRGF0YSBwb2ludCB0byBwYXNzIHRvIHRoZSBldmVudCBoYW5kbGVy LiAgKi8KKyB0eXBlZGVmIHVuaW9uIGV2ZW50X2RhdGEKK0BAIC00MTEsNiArNDEyLDkgQEAgZ2Ri X2RvX29uZV9ldmVudCAodm9pZCAqZGF0YSkKKyAgIHN0YXRpYyBpbnQgZXZlbnRfc291cmNlX2hl YWQgPSAwOworICAgY29uc3QgaW50IG51bWJlcl9vZl9zb3VyY2VzID0gMzsKKyAgIGludCBjdXJy ZW50ID0gMDsKKysjaWZkZWYgSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMCisrICBleHRlcm4g aW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFsOworKyNlbmRpZgorIAorICAgLyogQW55IGV2 ZW50cyBhbHJlYWR5IHdhaXRpbmcgaW4gdGhlIHF1ZXVlPyAgKi8KKyAgIGlmIChwcm9jZXNzX2V2 ZW50ICgpKQorQEAgLTQ1NSw2ICs0NTksMTYgQEAgZ2RiX2RvX29uZV9ldmVudCAodm9pZCAqZGF0 YSkKKyAgIGlmIChnZGJfd2FpdF9mb3JfZXZlbnQgKDEpIDwgMCkKKyAgICAgcmV0dXJuIC0xOwor IAorKyNpZmRlZiBIQVZFX1JFQURMSU5FX0NBVUdIVF9TSUdOQUwKKysgIGlmIChhc3luY19jb21t YW5kX2VkaXRpbmdfcCAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9DQUxMQkFDSykKKysgICAgICAm JiBfcmxfY2F1Z2h0X3NpZ25hbCkKKysgICAgeworKyAgICAgIC8qIENhbGwgUkxfQ0hFQ0tfU0lH TkFMUyB0aGlzIHdheS4gICovCisrICAgICAgcmxfY2FsbGJhY2tfaGFuZGxlcl9yZW1vdmUgKCk7 CisrICAgICAgcmxfY2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsIChOVUxMLCBpbnB1dF9oYW5kbGVy KTsKKysgICAgfQorKyNlbmRpZgorKworICAgLyogSGFuZGxlIGFueSBuZXcgZXZlbnRzIG9jY3Vy cmVkIHdoaWxlIHdhaXRpbmcuICAqLworICAgaWYgKHByb2Nlc3NfZXZlbnQgKCkpCisgICAgIHJl dHVybiAxOworLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorQEAgLTQ2NCwzMSArNDY0LDQyIEBA IEdEQi4qQ29weXJpZ2h0IFxbMC05XF0rIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLi4q JGdkYl9wcm9tcHQgJCJcCisgCSAgICBmYWlsICIkZGVzY3JpcHRpb24gKHRpbWVvdXQpIgorIAl9 CisgICAgIH0KKy0gICAgCistICAgIHNldCBkZXNjcmlwdGlvbiAic2VuZCBTSUdJTlQgc2lnbmFs IHRvIGNoaWxkIHByb2Nlc3MiCistICAgIHNlbmRfZ2RiICJzaWduYWwgU0lHSU5UXG4iCistICAg IGdkYl9leHBlY3QgeworLQktcmUgIkNvbnRpbnVpbmcgd2l0aCBzaWduYWwgU0lHSU5ULiokZ2Ri X3Byb21wdCAkIiB7CisrCisrICAgICMgZ2V0IGEgc3RhY2sgdHJhY2Ugd2l0aCB0aGUgcG9sbCBm dW5jdGlvbgorKyAgICAjCisrICAgICMgVGhpcyBmYWlscyBvbiBzb21lIGxpbnV4IHN5c3RlbXMg Zm9yIHVua25vd24gcmVhc29ucy4gIE9uIHRoZQorKyAgICAjIHN5c3RlbXMgd2hlcmUgaXQgZmFp bHMsIHNvbWV0aW1lcyBpdCB3b3JrcyBmaW5lIHdoZW4gcnVuIG1hbnVhbGx5LgorKyAgICAjIFRo ZSB0ZXN0c3VpdGUgZmFpbHVyZXMgbWF5IG5vdCBiZSBsaW1pdGVkIHRvIGp1c3QgYW91dCBzeXN0 ZW1zLgorKyAgICBzZXR1cF94ZmFpbCAiaSo4Ni1wYy1saW51eGFvdXQtZ251IgorKyAgICBzZXQg ZGVzY3JpcHRpb24gImJhY2t0cmFjZSB0aHJvdWdoIHNpZ25hbCBoYW5kbGVyIgorKyAgICBnZGJf dGVzdF9tdWx0aXBsZSAiYmFja3RyYWNlIiAkZGVzY3JpcHRpb24geworKwktcmUgIiMwLioocmVh ZHxwb2xsKS4qaW4gbWFpbiBcXCguKlxcKSBhdCAuKmdkYlxcLmMuKiRnZGJfcHJvbXB0ICQiIHsK KyAJICAgIHBhc3MgIiRkZXNjcmlwdGlvbiIKKyAJfQorIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIg eworKwkgICAgIyBPbiB0aGUgYWxwaGEsIHdlIGhpdCB0aGUgaW5mYW1vdXMgcHJvYmxlbSBhYm91 dCBnZGIKKysJICAgICMgYmVpbmcgdW5hYmxlIHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciAobWVu dGlvbmVkIGluCisrCSAgICAjIGdkYi9SRUFETUUpLiAgQXMgaXQgaXMgaW50ZXJtaXR0ZW50LCB0 aGVyZSBpcyBubyB3YXkgdG8KKysJICAgICMgWEZBSUwgaXQgd2hpY2ggd2lsbCBnaXZlIHVzIGFu IFhQQVNTIGlmIHRoZSBwcm9ibGVtIGdvZXMKKysJICAgICMgYXdheS4KKysJICAgIHNldHVwX3hm YWlsICJhbHBoYSotKi1vc2YqIgorIAkgICAgZmFpbCAiJGRlc2NyaXB0aW9uIgorIAl9CistCXRp bWVvdXQgeworLQkgICAgZmFpbCAiJGRlc2NyaXB0aW9uICh0aW1lb3V0KSIKKy0JfQorICAgICB9 CisgICAgIAorLSAgICAjIGdldCBhIHN0YWNrIHRyYWNlCisrICAgIGdkYl90ZXN0ICJzaWduYWwg U0lHSU5UIiAiQ29udGludWluZyB3aXRoIHNpZ25hbCBTSUdJTlQuKiIgXAorKwkgICAgICJzZW5k IFNJR0lOVCBzaWduYWwgdG8gY2hpbGQgcHJvY2VzcyIKKysgICAgCisrICAgICMgZ2V0IGEgc3Rh Y2sgdHJhY2UgYmVpbmcgcmVkZWxpdmVyZWQgYnkgcmVhZGxpbmUKKyAgICAgIworICAgICAjIFRo aXMgZmFpbHMgb24gc29tZSBsaW51eCBzeXN0ZW1zIGZvciB1bmtub3duIHJlYXNvbnMuICBPbiB0 aGUKKyAgICAgIyBzeXN0ZW1zIHdoZXJlIGl0IGZhaWxzLCBzb21ldGltZXMgaXQgd29ya3MgZmlu ZSB3aGVuIHJ1biBtYW51YWxseS4KKyAgICAgIyBUaGUgdGVzdHN1aXRlIGZhaWx1cmVzIG1heSBu b3QgYmUgbGltaXRlZCB0byBqdXN0IGFvdXQgc3lzdGVtcy4KKysgICAgIyBPcHRpb25hbCBzeXN0 ZW0gcmVhZGxpbmUgbWF5IG5vdCBoYXZlIHN5bWJvbHMgdG8gYmUgc2hvd24uCisgICAgIHNldHVw X3hmYWlsICJpKjg2LXBjLWxpbnV4YW91dC1nbnUiCistICAgIHNldCBkZXNjcmlwdGlvbiAiYmFj a3RyYWNlIHRocm91Z2ggc2lnbmFsIGhhbmRsZXIiCistICAgIHNlbmRfZ2RiICJiYWNrdHJhY2Vc biIKKy0gICAgZ2RiX2V4cGVjdCB7CistCS1yZSAiIzAuKihyZWFkfHBvbGwpLippbiBtYWluIFxc KC4qXFwpIGF0IC4qZ2RiXFwuYy4qJGdkYl9wcm9tcHQgJCIgeworKyAgICBzZXQgZGVzY3JpcHRp b24gImJhY2t0cmFjZSB0aHJvdWdoIHJlYWRsaW5lIGhhbmRsZXIiCisrICAgIGdkYl90ZXN0X211 bHRpcGxlICJiYWNrdHJhY2UiICRkZXNjcmlwdGlvbiB7CisrCS1yZSAiIzAuKmdkYl9kb19vbmVf ZXZlbnQuKmluIG1haW4gXFwoLipcXCkgYXQgLipnZGJcXC5jLiokZ2RiX3Byb21wdCAkIiB7Cisg CSAgICBwYXNzICIkZGVzY3JpcHRpb24iCisgCX0KKyAJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsK K0BAIC01MDAsOSArNTEwLDYgQEAgR0RCLipDb3B5cmlnaHQgXFswLTlcXSsgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuLiokZ2RiX3Byb21wdCAkIlwKKyAJICAgIHNldHVwX3hmYWlsICJh bHBoYSotKi1vc2YqIgorIAkgICAgZmFpbCAiJGRlc2NyaXB0aW9uIgorIAl9CistCXRpbWVvdXQg eworLQkgICAgZmFpbCAiJGRlc2NyaXB0aW9uICh0aW1lb3V0KSIKKy0JfQorICAgICB9CisgCisg CistLS0gZ2RiLTcuMC9nZGIvY29uZmlndXJlCTIwMDktMTItMDcgMTg6NTM6MzAuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC14L2dkYi9jb25maWd1cmUJMjAwOS0xMi0wNyAxODo1MzoxNC4w MDAwMDAwMDAgKzAxMDAKK0BAIC05MjAxLDE1ICs5MjAxLDExIEBAIGlmIHRlc3QgIiR3aXRoX3N5 c3RlbV9yZWFkbGluZSIgPSB5ZXM7IHQKKyAgICMgcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNl IHRoZSBuYW1lIGBfcmxfZWNob2luZ19wJy4KKyAgICMgYCQoUkVBRExJTkVfRElSKS8nIG9mIGJ1 bmRsZWQgcmVhZGxpbmUgd291bGQgbm90IHJlc29sdmUgaW4gY29uZmlndXJlLgorIAorLSAgZWNo byAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3AiID4mNQor LWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcC4uLiAkRUNIT19D IiA+JjYKKyAgIHNhdmVfTElCUz0kTElCUworICAgTElCUz0iJExJQlMgJFJFQURMSU5FIgorLSAg Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCistLyogY29uZmRlZnMuaC4gICovCistX0FD RU9GCistY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CistY2F0ID4+Y29uZnRlc3Qu JGFjX2V4dCA8PF9BQ0VPRgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgcmVhZGxpbmVfZWNob2luZ19wIiA+JjUKKyskYXNfZWNob19uICJj aGVja2luZyBmb3IgcmVhZGxpbmVfZWNob2luZ19wLi4uICIgPiY2OyB9CisrICBjYXQgY29uZmRl ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAq LworIAorIGludAorQEAgLTkyMjEsNDUgKzkyMTcsNDUgQEAgZXh0ZXJuIGludCByZWFkbGluZV9l Y2hvaW5nX3A7CisgICByZXR1cm4gMDsKKyB9CisgX0FDRU9GCistcm0gLWYgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdCRhY19leGVleHQKKy1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElO RU5POiBcIiRhY19saW5rXCIiKSA+JjUKKy0gIChldmFsICRhY19saW5rKSAyPmNvbmZ0ZXN0LmVy MQorLSAgYWNfc3RhdHVzPSQ/CistICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0 ZXN0LmVycgorLSAgcm0gLWYgY29uZnRlc3QuZXIxCistICBjYXQgY29uZnRlc3QuZXJyID4mNQor LSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorLSAgKGV4aXQg JGFjX3N0YXR1cyk7IH0gJiYKKy0JIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxh ZyIKKy0JCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKy0gIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CistICAoZXZhbCAkYWNfdHJ5KSAyPiY1Cist ICBhY19zdGF0dXM9JD8KKy0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKKy0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCistCSB7IGFjX3RyeT0ndGVzdCAt cyBjb25mdGVzdCRhY19leGVleHQnCistICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBc IiRhY190cnlcIiIpID4mNQorLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQorLSAgYWNfc3RhdHVzPSQ/ CistICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CistICAoZXhp dCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgorK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i OyB0aGVuIDoKKyAgIFJFQURMSU5FX0VDSE9JTkdfUD15ZXMKKyBlbHNlCistICBlY2hvICIkYXNf bWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFj X2V4dCA+JjUKKysgIFJFQURMSU5FX0VDSE9JTkdfUD1ubworIAorLVJFQURMSU5FX0VDSE9JTkdf UD1ubworKyRhc19lY2hvICIjZGVmaW5lIHJlYWRsaW5lX2VjaG9pbmdfcCBfcmxfZWNob2luZ19w IiA+PmNvbmZkZWZzLmgKKysKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgXAorKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAor KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFE TElORV9FQ0hPSU5HX1AiID4mNQorKyRhc19lY2hvICIkUkVBRExJTkVfRUNIT0lOR19QIiA+JjY7 IH0KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yIF9ybF9jYXVnaHRfc2lnbmFsIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgX3Js X2NhdWdodF9zaWduYWwuLi4gIiA+JjY7IH0KKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCistY2F0ID4+Y29u ZmRlZnMuaCA8PFxfQUNFT0YKKy0jZGVmaW5lIHJlYWRsaW5lX2VjaG9pbmdfcCBfcmxfZWNob2lu Z19wCisraW50CisrbWFpbiAoKQorK3sKKytleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRf c2lnbmFsOworKwkJCQkgICAgcmV0dXJuIF9ybF9jYXVnaHRfc2lnbmFsOworKyAgOworKyAgcmV0 dXJuIDA7CisrfQorIF9BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVu IDoKKysgIFJFQURMSU5FX0NBVUdIVF9TSUdOQUw9eWVzCisrCisrJGFzX2VjaG8gIiNkZWZpbmUg SEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMIC8qKi8iID4+Y29uZmRlZnMuaAorIAorK2Vsc2UK KysgIFJFQURMSU5FX0NBVUdIVF9TSUdOQUw9bm8KKyBmaQorLXJtIC1mIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IFwKKy0gICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu JGFjX2V4dAorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAor KyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9DQVVHSFRfU0lH TkFMIiA+JjUKKyskYXNfZWNobyAiJFJFQURMSU5FX0NBVUdIVF9TSUdOQUwiID4mNjsgfQorICAg TElCUz0iJHNhdmVfTElCUyIKKy0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRSRUFE TElORV9FQ0hPSU5HX1AiID4mNQorLWVjaG8gIiR7RUNIT19UfSRSRUFETElORV9FQ0hPSU5HX1Ai ID4mNgorIGVsc2UKKyAgIFJFQURMSU5FPSckKFJFQURMSU5FX0RJUikvbGlicmVhZGxpbmUuYScK KyAgIFJFQURMSU5FX0RFUFM9JyQoUkVBRExJTkUpJwoKZGlmZiAtLWdpdCBhL2dkYi1yaGVsNS1j b21wYXQucGF0Y2ggYi9nZGItcmhlbDUtY29tcGF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjk3YjI3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmhlbDUtY29t cGF0LnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK2dkYi9saW51eC1uYXQuYzoKKy0gV29ya2Fyb3Vu ZCBSSEVMLTUga2VybmVscyBmb3IgZGV0YWNoaW5nIFNJR1NUT1BwZWQgcHJvY2Vzc2VzIChCWiA0 OTg1OTUpLgorCistLS0gZ2RiLTYuOC9nZGItb3JpZy9zeW1maWxlLmMJMjAwOC0wOC0yMSAwMDow Njo1MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNi44L2dkYi9zeW1maWxlLmMJMjAwOC0wOC0y MSAyMjozMTowMC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xNDU2LDggKzE0NTYsMTAgQEAgZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZQorICAgICAgIC8qIFByZXZlbnQgbG9v cGluZyBvbiBhIHN0cmlwcGVkIC5kZWJ1ZyBmaWxlLiAgKi8KKyAgICAgICBpZiAoYnVpbGRfaWRf bmFtZSAhPSBOVUxMICYmIHN0cmNtcCAoYnVpbGRfaWRfbmFtZSwgb2JqZmlsZS0+bmFtZSkgPT0g MCkKKyAgICAgICAgIHsKKysjaWYgMCAvKiBSSEVMLTUgYmFja3dhcmQgYmVoYXZpb3IgY29tcGF0 aWJpbGl0eS4gICovCisgCSAgd2FybmluZyAoXygiXCIlc1wiOiBzZXBhcmF0ZSBkZWJ1ZyBpbmZv IGZpbGUgaGFzIG5vIGRlYnVnIGluZm8iKSwKKyAJCSAgIGJ1aWxkX2lkX25hbWUpOworKyNlbmRp ZgorIAkgIHhmcmVlIChidWlsZF9pZF9uYW1lKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKGJ1aWxk X2lkX25hbWUgIT0gTlVMTCkKKy0tLSAuL2dkYi9jb3JlbG93LmMJMjAxMC0wMS0wMSAxNjowNDoz NC4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi9jb3JlbG93LmMJMjAxMC0wMS0wMSAxNjowNjoy Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNzcsNyArMjc3LDcgQEAgYWRkX3RvX3RocmVhZF9saXN0 IChiZmQgKmFiZmQsIGFzZWN0aW9uIAorICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZDsJCQkgLyog WWVzLCBtYWtlIGl0IGN1cnJlbnQgKi8KKyB9CisgCistc3RhdGljIGludCBidWlsZF9pZF9jb3Jl X2xvYWRzID0gMTsKKytzdGF0aWMgaW50IGJ1aWxkX2lkX2NvcmVfbG9hZHMgPSAwOworIAorIHN0 YXRpYyB2b2lkCisgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKKy0tLSAuL2dk Yi9zeW1maWxlLmMJMjAxMC0wMS0wMSAxNjowNDozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dk Yi9zeW1maWxlLmMJMjAxMC0wMS0wMSAxNjowNjoxMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMjQ5 LDcgKzEyNDksNyBAQCBzeW1ib2xfZmlsZV9jbGVhciAoaW50IGZyb21fdHR5KQorICNkZWZpbmUg QlVJTERfSURfVkVSQk9TRV9OT05FIDAKKyAjZGVmaW5lIEJVSUxEX0lEX1ZFUkJPU0VfRklMRU5B TUVTIDEKKyAjZGVmaW5lIEJVSUxEX0lEX1ZFUkJPU0VfQklOQVJZX1BBUlNFIDIKKy1zdGF0aWMg aW50IGJ1aWxkX2lkX3ZlcmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX0ZJTEVOQU1FUzsKKytzdGF0 aWMgaW50IGJ1aWxkX2lkX3ZlcmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX05PTkU7Cisgc3RhdGlj IHZvaWQKKyBzaG93X2J1aWxkX2lkX3ZlcmJvc2UgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCisgCQkgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNo YXIgKnZhbHVlKQorLS0tIGdkYi03LjAtb3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOS0xMi0xOSAy MDo1Mzo0Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wL2dkYi9saW51eC1uYXQuYwkyMDA5 LTEyLTE5IDIwOjU1OjAyLjAwMDAwMDAwMCArMDEwMAorQEAgLTE2MDQsOCArMTYwNCwyMiBAQCBH UFQ6IGx3cCAlcyBoYWQgc2lnbmFsICVzLCBidXQgaXQgaXMgaW4gCisgCSpzdGF0dXMgPSBscC0+ c3RhdHVzOworICAgICB9CisgCistICBpZiAoKnN0YXR1cyA9PSAwICYmIEdFVF9QSUQgKGxwLT5w dGlkKSA9PSBwaWRfd2FzX3N0b3BwZWQpCistICAgICpzdGF0dXMgPSBXX1NUT1BDT0RFIChTSUdT VE9QKTsKKysgIC8qIFdvcmthcm91bmQgUkhFTC01IGtlcm5lbCB3aGljaCBoYXMgdW5yZWxpYWJs ZSBQVFJBQ0VfREVUQUNILCBTSUdTVE9QICh0aGF0CisrICAgICBtYW55IFRJRHMgYXJlIGxlZnQg dW5zdG9wcGVkKS4gIFNlZSBSSCBCdWcgNDk2NzMyLiAgKi8KKysgIGlmIChHRVRfUElEIChscC0+ cHRpZCkgPT0gcGlkX3dhc19zdG9wcGVkKQorKyAgICB7CisrICAgICAgaW50IGVycjsKKysKKysg ICAgICBlcnJubyA9IDA7CisrICAgICAgZXJyID0ga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlk KSwgU0lHU1RPUCk7CisrICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKysJeworKwkgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkgICAgICAiU0M6ICBsd3Aga2lsbCAlZCAl c1xuIiwKKysJCQkgICAgICBlcnIsCisrCQkJICAgICAgZXJybm8gPyBzYWZlX3N0cmVycm9yIChl cnJubykgOiAiRVJSTk8tT0siKTsKKysJfQorKyAgICB9CisgCisgICByZXR1cm4gMDsKKyB9Cgpk aWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZmE4YzQKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTAsMCArMSw0MDUgQEAKK1NvbWUgZnVu Y3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBnY2M0NCBhbmQg Z2ZvcnRyYW40NCBhcwordGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUg ZnJvbSBnY2MtNC4xLgorCistLS0gZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5l eHAtb3JpZwkyMDA5LTEyLTIwIDAwOjM4OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCTIwMDktMTItMjAgMDA6NTQ6MTkuMDAwMDAw MDAwICswMTAwCitAQCAtMTYsNyArMTYsMjUgQEAKKyBzZXQgdGVzdGZpbGUgdmxhCisgc2V0IHNy Y2ZpbGUgJHt0ZXN0ZmlsZX0uYworIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KKy1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrIyBUZW1w b3JhcmlseSBwcm92aWRlIGNvbXBpbGVyPWdjYzQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUg YXJvdW5kLgorKworK3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KKytpZiBbYm9hcmRfaW5m byAkYm9hcmQgZXhpc3RzIGNvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfY29tcGlsZXIgW2JvYXJk X2luZm8gJGJvYXJkIGNvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZvIGNvbXBpbGVyCisr fSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9jb21waWxlcl0geworKyAgICB1bnNldCBvbGRfY29t cGlsZXIKKyt9Cisrc2V0X2JvYXJkX2luZm8gY29tcGlsZXIgZ2NjNDQKKysKKytzZXQgZXJyIFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgcXVpZXR9XQorKworK3Vuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIK KytpZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGNv bXBpbGVyICRvbGRfY29tcGlsZXIKKyt9CisrCisraWYgIHsgJGVyciAhPSAiIiB9IHsKKyAgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorICAgICByZXR1cm4gLTEK KyB9CistLS0gZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAt b3JpZwkyMDA5LTEyLTIwIDAwOjM4OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMDktMTItMjAgMDE6MTE6NDcu MDAwMDAwMDAwICswMTAwCitAQCAtMzEsMTAgKzMxLDMwIEBAIGlmIFtnZXRfY29tcGlsZXJfaW5m byAke2JpbmZpbGVfbGlifV0geworICAgICByZXR1cm4gLTEKKyB9CisgCisrIyBUZW1wb3Jhcmls eSBwcm92aWRlIGNvbXBpbGVyPWdjYzQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5k LgorKyMgUkhFTC01IHdvcmthcm91bmQgb2YgaXRzOgorKyMgICBnY2M6IC1zb25hbWU6IGxpbmtl ciBpbnB1dCBmaWxlIHVudXNlZCBiZWNhdXNlIGxpbmtpbmcgbm90IGRvbmUKKysKKytzZXQgYm9h cmQgW3RhcmdldF9pbmZvIG5hbWVdCisraWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBjb21w aWxlcl0geworKyAgICBzZXQgb2xkX2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBjb21waWxl cl0KKysgICAgdW5zZXRfYm9hcmRfaW5mbyBjb21waWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0 cyBvbGRfY29tcGlsZXJdIHsKKysgICAgdW5zZXQgb2xkX2NvbXBpbGVyCisrfQorK3NldF9ib2Fy ZF9pbmZvIGNvbXBpbGVyIGdjYzQ0CisrCisgIyBVc2UgLXNvbmFtZSBzbyB0aGF0IGl0IGlzIGxp c3RlZCB3aXRoICIgPT4gIiBieSBsZGQgYW5kIHRoaXMgdGVzdGNhc2UgbWFrZXMKKyAjIGEgY29w eSBvZiAke2JpbmZpbGVfbGlifSBmb3IgZWFjaCBwcmVsaW5rIHZhcmlhbnQuCisgCistaWYge1tn ZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7Ymlu ZmlsZV9saWJ9IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC1zb25hbWUsJHt0ZXN0 fS5zb11dICE9ICIifSB7Cisrc2V0IGVyciBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBhZGRpdGlv bmFsX2ZsYWdzPS1XbCwtc29uYW1lLCR7dGVzdH0uc29dXQorKworK3Vuc2V0X2JvYXJkX2luZm8g Y29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHNldF9ib2Fy ZF9pbmZvIGNvbXBpbGVyICRvbGRfY29tcGlsZXIKKyt9CisrCisraWYgeyAkZXJyICE9ICIiIH0g eworICAgICByZXR1cm4gLTEKKyB9CisgCitAQCAtNDgzLDkgKzUwMywzMyBAQCBmb3JlYWNoIGxk cHJlbGluayB7Tk8gWUVTfSB7CisgCQkgICAgaWYgeyRiaW5waWUgPT0gIllFUyJ9IHsKKyAJCQls YXBwZW5kIG9wdHMge2FkZGl0aW9uYWxfZmxhZ3M9LWZQSUUgLXBpZX0KKyAJCSAgICB9CistCQkg ICAgaWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdH0uZXhwIFtmaWxlIHRhaWwgJGV4ZWNdICRz cmNmaWxlICRvcHRzXSA9PSAtMX0geworLQkJCWNvbnRpbnVlOworKworKworKwkJICAgICMgVGVt cG9yYXJpbHkgcHJvdmlkZSBjb21waWxlcj1nY2M0NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVl IGFyb3VuZC4KKysJCSAgICAjIFJIRUwtNSB3b3JrYXJvdW5kIG9mIGl0czoKKysJCSAgICAjICAg Z2NjOiAtcnBhdGg6IGxpbmtlciBpbnB1dCBmaWxlIHVudXNlZCBiZWNhdXNlIGxpbmtpbmcgbm90 IGRvbmUKKysJCSAgICAjICAgZ2NjOiAtLWR5bmFtaWMtbGlua2VyOiBsaW5rZXIgaW5wdXQgZmls ZSB1bnVzZWQgYmVjYXVzZSBsaW5raW5nIG5vdCBkb25lCisrCisrCQkgICAgc2V0IGJvYXJkIFt0 YXJnZXRfaW5mbyBuYW1lXQorKwkJICAgIGlmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgY29t cGlsZXJdIHsKKysJCQlzZXQgb2xkX2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBjb21waWxl cl0KKysJCQl1bnNldF9ib2FyZF9pbmZvIGNvbXBpbGVyCisrCQkgICAgfSBlbHNlaWYgW2luZm8g ZXhpc3RzIG9sZF9jb21waWxlcl0geworKwkJCXVuc2V0IG9sZF9jb21waWxlcgorKwkJICAgIH0K KysJCSAgICBzZXRfYm9hcmRfaW5mbyBjb21waWxlciBnY2M0NAorKworKwkJICAgIHNldCBlcnIg W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgW2ZpbGUgdGFpbCAkZXhlY10gJHNyY2ZpbGUg JG9wdHNdCisrCisrCQkgICAgdW5zZXRfYm9hcmRfaW5mbyBjb21waWxlcgorKwkJICAgIGlmIFtp bmZvIGV4aXN0cyBvbGRfY29tcGlsZXJdIHsKKysJCQlzZXRfYm9hcmRfaW5mbyBjb21waWxlciAk b2xkX2NvbXBpbGVyCisgCQkgICAgfQorKworKwkJICAgIGlmIHsgJGVyciA9PSAtMSB9IHsKKysJ CQljb250aW51ZQorKwkJICAgIH0KKysKKyAJCSAgICBpZiB7JGJpbnNlcGRlYnVnID09ICJTRVAi fSB7CisgCQkJZ2RiX2dudV9zdHJpcF9kZWJ1ZyAkZXhlYworIAkJCSMgSnVzdCBhIHNhbml0eSBj aGVjay4gIEFzIGdkYl9nbnVfc3RyaXBfZGVidWcgdXNlcyB0aGUKKy0tLSAuL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAwMDAw MDAwMCArMDEwMAorKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2su ZXhwCTIwMDktMTItMTUgMDU6MjE6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMjAsNyArMjAsMjUg QEAgc2V0IHRlc3RmaWxlICJjb21tb24tYmxvY2siCisgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u ZjkwCisgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorIAorLWlm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CisrIyBUZW1wb3Jh cmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2 YWx1ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFtib2Fy ZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mNzdjb21w aWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2lu Zm8gZjc3Y29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7 CisrICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK30KKytzZXRfYm9hcmRfaW5mbyBmNzdjb21w aWxlciBnZm9ydHJhbjQ0CisrCisrc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWll dH1dCisrCisrdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgorK2lmIFtpbmZvIGV4aXN0cyBv bGRfZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9m Nzdjb21waWxlcgorK30KKysKKytpZiAgeyAkZXJyICE9ICIiIH0geworICAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorICAgICByZXR1cm4gLTEKKyB9CistLS0gLi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAwOS0xMi0xNSAwNTox Mzo1Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdh cmYtc3RyaWRlLmV4cAkyMDA5LTEyLTE1IDA1OjIwOjA3LjAwMDAwMDAwMCArMDEwMAorQEAgLTI3 LDcgKzI3LDI1IEBACisgc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQorIHNldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmY5MAorIAorLWlmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0u ZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3N31dIH0geworKyMgVGVtcG9yYXJp bHkgcHJvdmlkZSBmNzdjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFs dWUgYXJvdW5kLgorKworK3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KKytpZiBbYm9hcmRf aW5mbyAkYm9hcmQgZXhpc3RzIGY3N2NvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfZjc3Y29tcGls ZXIgW2JvYXJkX2luZm8gJGJvYXJkIGY3N2NvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZv IGY3N2NvbXBpbGVyIAorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsK KysgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVyCisrfSAKKytzZXRfYm9hcmRfaW5mbyBmNzdjb21w aWxlciBnZm9ydHJhbjQ0CisrCisrc2V0IGVyciBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjc3fV0KKysKKyt1bnNldF9i b2FyZF9pbmZvIGY3N2NvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0g eworKyAgICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVyCisrfQor KworK2lmICRlcnIgeworICAgICByZXR1cm4gLTEKKyB9CisgCistLS0gLi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMDktMTItMTUgMDU6MTM6NTYuMDAwMDAwMDAwICsw MTAwCisrKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMDktMTIt MTUgMDU6MTc6MjEuMDAwMDAwMDAwICswMTAwCitAQCAtMjUsNyArMjUsMjUgQEAgc2V0IHRlc3Rm aWxlICJkeW5hbWljIgorIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorIHNldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKyAKKy1pZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGY3NyBxdWlldH1dICE9ICIiIH0geworKyMgVGVtcG9yYXJpbHkgcHJvdmlkZSBmNzdj b21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUgYXJvdW5kLgorKwor K3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KKytpZiBbYm9hcmRfaW5mbyAkYm9hcmQgZXhp c3RzIGY3N2NvbXBpbGVyXSB7CisrICAgIHNldCBvbGRfZjc3Y29tcGlsZXIgW2JvYXJkX2luZm8g JGJvYXJkIGY3N2NvbXBpbGVyXQorKyAgICB1bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCisr fSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0geworKyAgICB1bnNldCBvbGRf Zjc3Y29tcGlsZXIKKyt9Cisrc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgZ2ZvcnRyYW40NAor KworK3NldCBlcnIgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0i ICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XQorKworK3Vuc2V0X2Jv YXJkX2luZm8gZjc3Y29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7 CisrICAgIHNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIKKyt9Cisr CisraWYgIHsgJGVyciAhPSAiIiB9IHsKKyAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg JHtzcmNmaWxlfSIKKyAgICAgcmV0dXJuIC0xCisgfQorLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAwOS0xMi0xNSAwNToxMzo1Ni4wMDAwMDAwMDAg KzAxMDAKKysrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhw CTIwMDktMTItMTUgMDU6MjI6MzcuMDAwMDAwMDAwICswMTAwCitAQCAtMjUsMTYgKzI1LDM0IEBA IGlmIFtnZXRfY29tcGlsZXJfaW5mbyBub3QtdXNlZF0geworICAgIHJldHVybiAtMQorIH0KKyAK Ky1pZiAgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJm aWxlfSIgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKy0g ICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNsaWJmaWxlfSIKKy0gICAgcmV0dXJu IC0xCisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5n IHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBu YW1lXQorK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKKysgICAg c2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCisrICAg IHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xk X2Y3N2NvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorIH0KKytzZXRfYm9h cmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0CisgCisgIyBwcmVwYXJlX2Zvcl90ZXN0aW5n IGNhbm5vdCBiZSB1c2VkIGFzIGxpbmtpbmcgd2l0aCAkbGliZmlsZSBjYW5ub3QgYmUgcGFzc2Vk CisgIyBqdXN0IGZvciB0aGUgbGlua2luZyBwaGFzZSAoYW5kIG5vdCB0aGUgc291cmNlIGNvbXBp bGF0aW9uIHBoYXNlKS4gIEFuZCBhbnkKKyAjIHdhcm5pbmdzIG9uIGlnbm9yZWQgJGxpYmZpbGUg YWJvcnQgdGhlIHByb2Nlc3MuCisgCistaWYgIHsgW2dkYl9jb21waWxlIFtsaXN0ICRzcmNkaXIv JHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdICRvYmpkaXIvJHN1YmRp ci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKytzZXQgZXJyMSBb Z2RiX2NvbXBpbGVfc2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJG9i amRpci8kc3ViZGlyLyRsaWJmaWxlIHtkZWJ1ZyBmNzd9XQorK3NldCBlcnIyIFtnZGJfY29tcGls ZSBbbGlzdCAkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGUgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxl XSAkb2JqZGlyLyRzdWJkaXIvJGJpbmZpbGUgZXhlY3V0YWJsZSB7ZGVidWcgZjc3fV0KKysKKyt1 bnNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21w aWxlcl0geworKyAgICBzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVy CisrfQorKworK2lmICB7ICRlcnIxICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSAke3NyY2xpYmZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CisraWYgIHsgJGVycjIg IT0gIiIgfSB7CisgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisg ICAgIHJldHVybiAtMQorIH0KKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxl LmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMDktMTItMTUgMDU6Mjg6NDkuMDAwMDAwMDAw ICswMTAwCitAQCAtMTYsNyArMTYsMjUgQEAKKyBzZXQgdGVzdGZpbGUgIm1vZHVsZSIKKyBzZXQg c3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKKyAKKy1pZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0 ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9XSB9IHsKKysjIFRlbXBv cmFyaWx5IHByb3ZpZGUgZjc3Y29tcGlsZXI9Z2ZvcnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFs IHZhbHVlIGFyb3VuZC4KKysKKytzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCisraWYgW2Jv YXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmNzdjb21waWxlcl0geworKyAgICBzZXQgb2xkX2Y3N2Nv bXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmNzdjb21waWxlcl0KKysgICAgdW5zZXRfYm9hcmRf aW5mbyBmNzdjb21waWxlcgorK30gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJd IHsKKysgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVyCisrfQorK3NldF9ib2FyZF9pbmZvIGY3N2Nv bXBpbGVyIGdmb3J0cmFuNDQKKysKKytzZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0 ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9XQorKworK3Vuc2V0X2JvYXJk X2luZm8gZjc3Y29tcGlsZXIKKytpZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7Cisr ICAgIHNldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyICRvbGRfZjc3Y29tcGlsZXIKKyt9CisrCisr aWYgJGVyciB7CisgICAgIHJldHVybiAtMQorIH0KKyAKKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAor KysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMDktMTItMTUgMDU6 MTg6MTMuMDAwMDAwMDAwICswMTAwCitAQCAtMjMsNyArMjMsMjUgQEAgc2V0IHRlc3RmaWxlICJz dHJpbmciCisgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisgc2V0IGJpbmZpbGUgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorIAorLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcg Zjc3IHF1aWV0fV0gIT0gIiIgfSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVy PWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCisrCisrc2V0IGJv YXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3 Y29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQg Zjc3Y29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKKyt9IGVsc2Vp ZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mNzdjb21w aWxlcgorK30KKytzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0CisrCisrc2V0 IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7Ymlu ZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dCisrCisrdW5zZXRfYm9hcmRfaW5m byBmNzdjb21waWxlcgorK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAg c2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgorK30KKysKKytpZiB7 ICRlcnIgIT0gIiIgfSB7CisgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmls ZX0iCisgICAgIHJldHVybiAtMQorIH0KKy0tLSBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vb21wLXN0ZXAuZXhwLW9yaWcJMjAwOS0xMi0yMCAwOTo0NzowNC4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIw MDktMTItMjAgMDk6NTA6MDYuMDAwMDAwMDAwICswMTAwCitAQCAtMTUsNyArMTUsMjYgQEAKKyAK KyBzZXQgdGVzdGZpbGUgIm9tcC1zdGVwIgorIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAor LWlmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2Zp bGUge2RlYnVnIGY3NyBhZGRpdGlvbmFsX2ZsYWdzPS1mb3Blbm1wfV0gfSB7CisrCisrIyBUZW1w b3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFuNDQgc2F2aW5nIHRoZSBvcmlnaW5h bCB2YWx1ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFti b2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9mNzdj b21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJk X2luZm8gZjc3Y29tcGlsZXIgCisrfSBlbHNlaWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxl cl0geworKyAgICB1bnNldCBvbGRfZjc3Y29tcGlsZXIKKyt9IAorK3NldF9ib2FyZF9pbmZvIGY3 N2NvbXBpbGVyIGdmb3J0cmFuNDQKKysKKytzZXQgZXJyIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmNzcgYWRkaXRpb25h bF9mbGFncz0tZm9wZW5tcH1dCisrCisrdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgorK2lm IFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJkX2luZm8gZjc3 Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgorK30KKysKKytpZiAkZXJyIHsKKyAgICAgcmV0dXJu IC0xCisgfQorIAorLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUu ZXhwCTIwMDktMDEtMDcgMTM6Mzk6MTMuMDAwMDAwMDAwICswMTAwCisrKysgLi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAwOS0xMi0yMCAxMjozNzoxMi4wMDAw MDAwMDAgKzAxMDAKK0BAIC0yNiw3ICsyNiwyNSBAQCBzZXQgdGVzdGZpbGUgImRlcml2ZWQtdHlw ZSIKKyBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKKyBzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisgCistaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcg cXVpZXR9XSAhPSAiIiB9IHsKKysjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjc3Y29tcGlsZXI9Z2Zv cnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KKysKKytzZXQgYm9hcmQg W3RhcmdldF9pbmZvIG5hbWVdCisraWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBmNzdjb21w aWxlcl0geworKyAgICBzZXQgb2xkX2Y3N2NvbXBpbGVyIFtib2FyZF9pbmZvICRib2FyZCBmNzdj b21waWxlcl0KKysgICAgdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgorK30gZWxzZWlmIFtp bmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgdW5zZXQgb2xkX2Y3N2NvbXBpbGVy CisrfQorK3NldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0cmFuNDQKKysKKytzZXQgZXJy IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0KKysKKyt1bnNldF9ib2FyZF9pbmZvIGY3 N2NvbXBpbGVyCisraWYgW2luZm8gZXhpc3RzIG9sZF9mNzdjb21waWxlcl0geworKyAgICBzZXRf Ym9hcmRfaW5mbyBmNzdjb21waWxlciAkb2xkX2Y3N2NvbXBpbGVyCisrfQorKworK2lmIHsgJGVy ciAhPSAiIiB9IHsKKyAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIK KyAgICAgcmV0dXJuIC0xCisgfQorLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJh cnJheS5leHAJMjAwOS0wMS0wNyAxMzozOToxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyAuL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMDktMTItMjAgMTI6Mzg6MDAuMDAw MDAwMDAwICswMTAwCitAQCAtMjYsNyArMjYsMjUgQEAgc2V0IHRlc3RmaWxlICJzdWJhcnJheSIK KyBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mCisgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQorIAorLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0 fV0gIT0gIiIgfSB7CisrIyBUZW1wb3JhcmlseSBwcm92aWRlIGY3N2NvbXBpbGVyPWdmb3J0cmFu NDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJn ZXRfaW5mbyBuYW1lXQorK2lmIFtib2FyZF9pbmZvICRib2FyZCBleGlzdHMgZjc3Y29tcGlsZXJd IHsKKysgICAgc2V0IG9sZF9mNzdjb21waWxlciBbYm9hcmRfaW5mbyAkYm9hcmQgZjc3Y29tcGls ZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKKyt9IGVsc2VpZiBbaW5mbyBl eGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9mNzdjb21waWxlcgorK30K KytzZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlciBnZm9ydHJhbjQ0CisrCisrc2V0IGVyciBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4 ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dCisrCisrdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21w aWxlcgorK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3Y29tcGlsZXJdIHsKKysgICAgc2V0X2JvYXJk X2luZm8gZjc3Y29tcGlsZXIgJG9sZF9mNzdjb21waWxlcgorK30KKysKKytpZiB7ICRlcnIgIT0g IiIgfSB7CisgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisgICAg IHJldHVybiAtMQorIH0KKy0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRl YnVnLmV4cAkyMDA5LTEyLTIwIDEyOjIyOjE4LjAwMDAwMDAwMCArMDEwMAorKysrIC4vZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCTIwMDktMTItMjAgMTI6Mzk6NTMu MDAwMDAwMDAwICswMTAwCitAQCAtMzIsNyArMzIsMjUgQEAgc2V0IGJpbnNoYXJlZGRlYnVnZmls ZSAke29iamRpcn0vJHtzdWJkaQorIAorICMgRklYTUU6IGdjYyBkZXBlbmRlbmN5ICgtV2wsLXNv bmFtZSkuCisgCistaWYgIHsgW2dkYl9jb21waWxlX3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7c3Jjc2hhcmVkZmlsZX0iICIke2JpbnNoYXJlZGZpbGV9IiBbbGlzdCBkZWJ1ZyBhZGRpdGlv bmFsX2ZsYWdzPS1XbCwtc29uYW1lPSR7Ymluc2hhcmVkYmFzZX1dXSAhPSAiIiB9IHsKKysjIFRl bXBvcmFyaWx5IHByb3ZpZGUgY29tcGlsZXI9Z2NjNDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1 ZSBhcm91bmQuCisrCisrc2V0IGJvYXJkIFt0YXJnZXRfaW5mbyBuYW1lXQorK2lmIFtib2FyZF9p bmZvICRib2FyZCBleGlzdHMgY29tcGlsZXJdIHsKKysgICAgc2V0IG9sZF9jb21waWxlciBbYm9h cmRfaW5mbyAkYm9hcmQgY29tcGlsZXJdCisrICAgIHVuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIK Kyt9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHVuc2V0IG9sZF9j b21waWxlcgorK30KKytzZXRfYm9hcmRfaW5mbyBjb21waWxlciBnY2M0NAorKworK3NldCBlcnIg W2dkYl9jb21waWxlX3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jjc2hhcmVkZmlsZX0i ICIke2JpbnNoYXJlZGZpbGV9IiBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtc29u YW1lPSR7Ymluc2hhcmVkYmFzZX1dXQorKworK3Vuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKKytp ZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrICAgIHNldF9ib2FyZF9pbmZvIGNvbXBp bGVyICRvbGRfY29tcGlsZXIKKyt9CisrCisraWYgeyAkZXJyICE9ICIiIH0geworICAgICB1bnRl c3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IGxpYnJhcnkiCisgICAgIHJldHVybiAtMQorIH0K CmRpZmYgLS1naXQgYS9nZGItc3RhYnMtcmVhZF9hcmdzLnBhdGNoIGIvZ2RiLXN0YWJzLXJlYWRf YXJncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTE2OTI0Ci0t LSAvZGV2L251bGwKKysrIGIvZ2RiLXN0YWJzLXJlYWRfYXJncy5wYXRjaApAQCAtMCwwICsxLDcw IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDE0 Mi5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIEZpeCBjcmFzaCByZWFkaW5nIGJyb2tlbiBzdGFicwor CitIaSwKKworc2VlbiB0aGlzIHN0YWJzIGZyb20gdW5rbm93biB2YXJpYW50IG9mIGdjYy00LjEu MjoKKworMTE3NjU4NiBMU1lNICAgMCAgICAgIDE1NCAgICAwMDAwMDAwMCAxNjY4MjA3NiBiYXNp Y19zdHJpbmc8Y2hhcixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ ID46Ol9SZXA6VHQoMCwzNCk9czEyITEsMDIwLCgwLDM1KT14c19SZXBfYmFzZTo7X1NfbWF4X3Np emU6LzIoMCwzNik9aygwLDMwKTpfWk5TczRfUmVwMTFfU19tYXhfc2l6ZUU7X1NfdGVybWluYWw6 LzIoMCwyMik6X1pOU3M0X1JlcDExX1NfdGVybWluYWxFO19TX2VtcHR5X3JlcF9zdG9yYWdlOi8y KDAsMzcpPWFyKDAsMzgpPXIoMCwzOCk7MDswMzc3Nzc3Nzc3Nzc7OzA7MzsoMCwzMCk6X1pOU3M0 X1JlcDIwX1NfZW1wdHlfcmVwX3N0b3JhZ2VFO19TX2VtcHR5X3JlcDo6KDAsMzkpPWYoMCw0MCk9 JigwLDM0KTpfWk5TczRfUmVwMTJfU19lbXB0eV9yZXBFdjsyQT87X01faXNfbGVha2VkOjooMCw0 MSk9IygwLDM0KSwoMCw0Mik9QHM4Oy0xNjssKDAsNDMpPSooMCw0NCk9aygwLDM0KSwoMCwxKTs6 X1pOS1NzNF9SZXAxMl9NX2lzX2xlYWtlZEV2OzJCLjtfTV9pc19zaGFyZWQ6OigwLDQxKTpfWk5L U3M0X1JlcDEyX01faXNfc2hhcmVkRXY7MkIuO19NX3NldF9sZWFrZWQ6OigwLDQ1KT0jKDAsMzQp LCgwLDEpLCgwLDMzKSwoMCwxKTs6X1pOU3M0X1JlcDEzX01fc2V0X2xlYWtlZEV2OzJBLjtfTV9z ZXRfc2hhcmFibGU6OigwLDQ1KTpfWk5TczRfUmVwMTVfTV9zZXRfc2hhcmFibGVFdjsyQS47X01f c2V0X2xlbmd0aF9hbmRfc2hhcmFibGU6OigwLDQ2KT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwoMCwy NSksKDAsMSk7Ol9aTlNzNF9SZXAyNl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlRWo7MkEuO19N X3JlZmRhdGE6OigwLDQ3KT0jKDAsMzQpLCgwLDMpLCgwLDMzKSwoMCwxKTs6X1pOU3M0X1JlcDEw X01fcmVmZGF0YUV2OzJBLjtfTV9ncmFiOjooMCw0OCk9IygwLDM0KSwoMCwzKSwoMCwzMyksKDAs NSksKDAsNSksKDAsMSk7Ol9aTlNzNF9SZXA3X01fZ3JhYkVSS1NhSWNFUzJfOzJBLjtfU19jcmVh dGU6OigwLDQ5KT1mKDAsMzMpOl9aTlNzNF9SZXA5X1NfY3JlYXRlRWpqUktTYUljRTsyQT87X01f ZGlzcG9zZTo6KDAsNTApPSMoMCwzNCksKDAsMSksKDAsMzMpLCgwLDUpLCgwLDEpOzpfWk5TczRf UmVwMTBfTV9kaXNwb3NlRVJLU2FJY0U7MkEuO19NX2Rlc3Ryb3k6OigwLDUxKT0jKDAsMzQpLCgw LDEpLCgwLDMzKSwoMCw1KSwoMCwxKTs6X1pOU3M0X1JlcDEwX01fZGVzdHJveUVSS1NhSWNFOzJB LjtfTV9yZWZjb3B5OjooMCw0Nyk6X1pOU3M0X1JlcDEwX01fcmVmY29weUV2OzJBLjtfTV9jbG9u ZTo6KDAsNTIpPSMoMCwzNCksKDAsMyksKDAsMzMpLCgwLDUpLCgwLDI1KSwoMCwxKTs6X1pOU3M0 X1JlcDhfTV9jbG9uZUVSS1NhSWNFajsyQS47OworCitUaGVyZSBpcyBhIEdEQiBjcmFzaCBhdDoK K19NX2lzX2xlYWtlZDo6KDAsNDEpPSMoMCwzNCksKDAsNDIpPUBzODstMTY7LCgwLDQzKT0qKDAs NDQpPWsoMCwzNCksKDAsMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXl4KKysgWy4uLl0gU29tZSBicm9rZW4gc3RhYnMKKysJIG91dHB1dCBjb250YWluZWQg YCgwLDQxKSwoMCw0Mik9QHM4Oy0xNjssKDAsNDMpLCgwLDEpOycgd2hlcmUgc2hvdWxkCisrCSBo YXZlIGJlZW4gcHJlc2VudCAiOy0xNiwoMCw0MykiIHJlZmVyZW5jZSBpbnN0ZWFkLiAgVGhpcyB3 YXkgdGhlCisrCSBleGNlc3NpdmUgIjsiIG1hcmtlciBwcmVtYXR1cmVseSBzdG9wcyB0aGUgcGFy YW1ldGVycyBwYXJzaW5nLiAgKi8KKworU3RpbGwgSSB3YXMgdW5hYmxlIHRvIHJlcHJvZHVjZSBw cm9kdWNpbmcgc3VjaCBTVEFCUyBvdXRwdXQuCisKK1NvIHRoaXMgcGF0Y2ggZG9lcyBub3QgdHJ5 IHRvIGNvbXBlbnNhdGUgdGhlIC0gcHJlc3VtYWJseSAtIGJ1Z2d5IFNUQUJTIG91dHB1dAorYW5k IHBhcnNlcyBzdWNoIHJlY29yZCBpbmNvcnJlY3RseS4gIEJ1dCBpdCBubyBsb25nZXIgY3Jhc2hl cy4KKworTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgt Z251Cit1c2luZyAtLXRhcmdldF9ib2FyZCB1bml4Ly1nc3RhYnMrLy1tMzIuCisKKworVGhhbmtz LAorSmFuCisKKworZ2RiLworMjAxMC0wMS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorCisJKiBzdGFic3JlYWQuYyAocmVhZF9hcmdzKTogSGFuZGxlIHpl cm8gYXJndW1lbnRzLgorCitnZGIvdGVzdHN1aXRlLworMjAxMC0wMS0wNyAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBnZGIuc3RhYnMvd2VpcmQuZGVm IChhcmdzOTMpOiBOZXcuCisKKy0tLSBhL2dkYi9zdGFic3JlYWQuYworKysrIGIvZ2RiL3N0YWJz cmVhZC5jCitAQCAtNDExMSw3ICs0MTExLDE3IEBAIHJlYWRfYXJncyAoY2hhciAqKnBwLCBpbnQg ZW5kLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50ICpuYXJnc3AsCisgICAgIH0KKyAgICgq cHApKys7CQkJLyogZ2V0IHBhc3QgYGVuZCcgKHRoZSAnOicgY2hhcmFjdGVyKSAqLworIAorLSAg aWYgKFRZUEVfQ09ERSAodHlwZXNbbiAtIDFdKSAhPSBUWVBFX0NPREVfVk9JRCkKKysgIGlmIChu ID09IDApCisrICAgIHsKKysgICAgICAvKiBXZSBzaG91bGQgcmVhZCBhdCBsZWFzdCB0aGUgVEhJ UyBwYXJhbWV0ZXIgaGVyZS4gIFNvbWUgYnJva2VuIHN0YWJzCisrCSBvdXRwdXQgY29udGFpbmVk IGAoMCw0MSksKDAsNDIpPUBzODstMTY7LCgwLDQzKSwoMCwxKTsnIHdoZXJlIHNob3VsZAorKwkg aGF2ZSBiZWVuIHByZXNlbnQgIjstMTYsKDAsNDMpIiByZWZlcmVuY2UgaW5zdGVhZC4gIFRoaXMg d2F5IHRoZQorKwkgZXhjZXNzaXZlICI7IiBtYXJrZXIgcHJlbWF0dXJlbHkgc3RvcHMgdGhlIHBh cmFtZXRlcnMgcGFyc2luZy4gICovCisrCisrICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21w bGFpbnRzLCBfKCJJbnZhbGlkIChlbXB0eSkgbWV0aG9kIGFyZ3VtZW50cyIpKTsKKysgICAgICAq dmFyYXJnc3AgPSAwOworKyAgICB9CisrICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGVzW24gLSAx XSkgIT0gVFlQRV9DT0RFX1ZPSUQpCisgICAgICp2YXJhcmdzcCA9IDE7CisgICBlbHNlCisgICAg IHsKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnN0YWJzL3dlaXJkLmRlZgorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuc3RhYnMvd2VpcmQuZGVmCitAQCAtODgwLDMgKzg4MCw2IEBAIHZhcjM6Cisg LnN0YWJzICJzeW05MjpcICEjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElK S0xNTk9QUVJTVFVWV1hZWltdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+IixOX0xT WU0sMCwwLDAKKyAuc3RhYnMgInR5cGU5Mjp0OTI9XCAhIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6 Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0 dXZ3eHl6e3x9fiIsTl9MU1lNLDAsMCwwCisgLnN0YWJzICJhdHRyOTI6RzM5Mj1AXCAhIyQlJico KSorLC0uLzAxMjM0NTY3ODk6PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltdXl9gYWJj ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+OzEiLE5fR1NZTSwwLDAsIDAKKysKKysjIFNlZSBy ZWFkX2FyZ3MgIkludmFsaWQgKGVtcHR5KSBtZXRob2QgYXJndW1lbnRzIiBlcnJvci4KKysuc3Rh YnMgImFyZ3M5MzpHOTM9IygwLDkzKSwoMCw5Myk9QHM4Oy0xNjssKDAsOTMpLCgwLDkzKTsiLE5f R1NZTSwwLDAsMAoKZGlmZiAtLWdpdCBhL2dkYi1zdGFsZS1yZWxhdGVkX2JyZWFrcG9pbnQucGF0 Y2ggYi9nZGItc3RhbGUtcmVsYXRlZF9icmVha3BvaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjY1Yjk0YzQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItc3RhbGUt cmVsYXRlZF9icmVha3BvaW50LnBhdGNoCkBAIC0wLDAgKzEsMTU0IEBACitodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMi9tc2cwMDM2NC5odG1sCitTdWJqZWN0OiBb cGF0Y2hdIHJlbGF0ZWRfYnJlYWtwb2ludCBzdGFsZSByZWYgY3Jhc2ggZml4CisKK0hpLAorCitn ZXR0aW5nIG9jY2FzaW9uYWwgcmFuZG9tOgorIFBBU1M6IGdkYi50aHJlYWRzL2xvY2FsLXdhdGNo LXdyb25nLXRocmVhZC5leHA6IGxvY2FsIHdhdGNocG9pbnQgc3RpbGwgdHJpZ2dlcnMKKyBQQVNT OiBnZGIudGhyZWFkcy9sb2NhbC13YXRjaC13cm9uZy10aHJlYWQuZXhwOiBsZXQgdGhyZWFkX2Z1 bmN0aW9uMCByZXR1cm4KKyBQQVNTOiBnZGIudGhyZWFkcy9sb2NhbC13YXRjaC13cm9uZy10aHJl YWQuZXhwOiBicmVha3BvaW50IG9uIHRocmVhZF9mdW5jdGlvbjAncyBjYWxsZXIKKy1QQVNTOiBn ZGIudGhyZWFkcy9sb2NhbC13YXRjaC13cm9uZy10aHJlYWQuZXhwOiBsb2NhbCB3YXRjaHBvaW50 IGF1dG9tYXRpY2FsbHkgZGVsZXRlZAorK0VSUk9SOiBQcm9jZXNzIG5vIGxvbmdlciBleGlzdHMK KytVTlJFU09MVkVEOiBnZGIudGhyZWFkcy9sb2NhbC13YXRjaC13cm9uZy10aHJlYWQuZXhwOiBs b2NhbCB3YXRjaHBvaW50IGF1dG9tYXRpY2FsbHkgZGVsZXRlZAorCitJdCBpcyBldmVuIHJlcHJv ZHVjaWJsZSBvbiBIRUFEIHVzaW5nICJpbnB1dCIgZmlsZSBiZWxvdyBhbmQ6CisJdmFsZ3JpbmQg Li4vZ2RiIC1ueCA8aW5wdXQKKworKGdkYikgKGdkYikgQnJlYWtwb2ludCA2IGF0IDB4NDAwNjg1 OiBmaWxlIC4vZ2RiLnRocmVhZHMvbG9jYWwtd2F0Y2gtd3JvbmctdGhyZWFkLmMsIGxpbmUgNDcu CisoZ2RiKSA9PTMxNzU5PT0gSW52YWxpZCB3cml0ZSBvZiBzaXplIDQKKz09MzE3NTk9PSAgICBh dCAweDYwMUExMTogYnBzdGF0X2NoZWNrX2JyZWFrcG9pbnRfY29uZGl0aW9ucyAoYnJlYWtwb2lu dC5jOjM0ODIpCis9PTMxNzU5PT0gICAgYnkgMHg2MDFDNzA6IGJwc3RhdF9zdG9wX3N0YXR1cyAo YnJlYWtwb2ludC5jOjM1OTYpCis9PTMxNzU5PT0gICAgYnkgMHg2NUQyMjg6IGhhbmRsZV9pbmZl cmlvcl9ldmVudCAoaW5mcnVuLmM6MzU4OSkKKz09MzE3NTk9PSAgICBieSAweDY1QTU2Mzogd2Fp dF9mb3JfaW5mZXJpb3IgKGluZnJ1bi5jOjIyODEpCis9PTMxNzU5PT0gICAgYnkgMHg2NTlBQTA6 IHByb2NlZWQgKGluZnJ1bi5jOjE4ODMpCis9PTMxNzU5PT0gICAgYnkgMHg2NTMwMEI6IGNvbnRp bnVlXzEgKGluZmNtZC5jOjY2OCkKKz09MzE3NTk9PSAgICBieSAweDY1MzI4MjogY29udGludWVf Y29tbWFuZCAoaW5mY21kLmM6NzYwKQorPT0zMTc1OT09ICAgIGJ5IDB4NUM1MUQ4OiBkb19jZnVu YyAoY2xpLWRlY29kZS5jOjY3KQorPT0zMTc1OT09ICAgIGJ5IDB4NUM4MjRGOiBjbWRfZnVuYyAo Y2xpLWRlY29kZS5jOjE3MzgpCis9PTMxNzU5PT0gICAgYnkgMHg0ODMzNUE6IGV4ZWN1dGVfY29t bWFuZCAodG9wLmM6NDUwKQorPT0zMTc1OT09ICAgIGJ5IDB4NjcyNzNFOiBjb21tYW5kX2hhbmRs ZXIgKGV2ZW50LXRvcC5jOjUxMSkKKz09MzE3NTk9PSAgICBieSAweDY3MkU1MzogY29tbWFuZF9s aW5lX2hhbmRsZXIgKGV2ZW50LXRvcC5jOjczNikKKz09MzE3NTk9PSAgQWRkcmVzcyAweGJiZGM5 NTAgaXMgMjQwIGJ5dGVzIGluc2lkZSBhIGJsb2NrIG9mIHNpemUgMzM2IGZyZWUnZAorPT0zMTc1 OT09ICAgIGF0IDB4NEEwNEQ3MjogZnJlZSAodmdfcmVwbGFjZV9tYWxsb2MuYzozMjUpCis9PTMx NzU5PT0gICAgYnkgMHg0ODZFNEI6IHhmcmVlICh1dGlscy5jOjEyODYpCis9PTMxNzU5PT0gICAg YnkgMHg2MEJDMzU6IGRlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50LmM6ODcwOCkKKz09MzE3 NTk9PSAgICBieSAweDYwQkRBRjogZGVsZXRlX2NvbW1hbmQgKGJyZWFrcG9pbnQuYzo4NzY1KQor PT0zMTc1OT09ICAgIGJ5IDB4NUM1MUQ4OiBkb19jZnVuYyAoY2xpLWRlY29kZS5jOjY3KQorPT0z MTc1OT09ICAgIGJ5IDB4NUM4MjRGOiBjbWRfZnVuYyAoY2xpLWRlY29kZS5jOjE3MzgpCis9PTMx NzU5PT0gICAgYnkgMHg0ODMzNUE6IGV4ZWN1dGVfY29tbWFuZCAodG9wLmM6NDUwKQorPT0zMTc1 OT09ICAgIGJ5IDB4NjcyNzNFOiBjb21tYW5kX2hhbmRsZXIgKGV2ZW50LXRvcC5jOjUxMSkKKz09 MzE3NTk9PSAgICBieSAweDY3MkU1MzogY29tbWFuZF9saW5lX2hhbmRsZXIgKGV2ZW50LXRvcC5j OjczNikKKz09MzE3NTk9PSAgICBieSAweDY3MkZDRjogZ2RiX3JlYWRsaW5lMiAoZXZlbnQtdG9w LmM6ODE3KQorPT0zMTc1OT09ICAgIGJ5IDB4NjcyNUY3OiBzdGRpbl9ldmVudF9oYW5kbGVyIChl dmVudC10b3AuYzo0MzMpCis9PTMxNzU5PT0gICAgYnkgMHg2NzBDREU6IGhhbmRsZV9maWxlX2V2 ZW50IChldmVudC1sb29wLmM6ODEyKQorPT0zMTc1OT09IAorCitXYXRjaHBvaW50IDQgZGVsZXRl ZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9jayBpbgord2hpY2ggaXRzIGV4 cHJlc3Npb24gaXMgdmFsaWQuCisKKworVGhlcmUgaXMgYWxyZWFkeSBhdXRvbWF0aWMgZGVsZXRp b24gb2YgUkVMQVRFRF9CUkVBS1BPSU5UIGluCittYXBfYnJlYWtwb2ludF9udW1iZXJzIGJ1dCAi ZGVsZXRlIGJyZWFrcG9pbnRzIiAoZm9yIGFsbCB0aGUgYnJlYWtwb2ludHMpCitjYWxscyBkZWxl dGVfYnJlYWtwb2ludCBmcm9tIGRlbGV0ZV9jb21tYW5kIGRpcmVjdGx5IHdpdGhvdXQgY2FsbGlu ZworbWFwX2JyZWFrcG9pbnRfbnVtYmVycyBhbmQgaXQgZG9lcyBub3QgZGVsZXRlIHRoZSBhc3Nv Y2lhdGVkCiticF93YXRjaHBvaW50X3Njb3BlLgorCitJIGZpbmQgdGhlIGF0dGFjaGVkIHBhdGNo IGlzIHJpZ2h0IGZvciBkZWxldGVfYnJlYWtwb2ludCBpdHNlbGYgYXMgc3VjaAorZnVuY3Rpb24g c2hvdWxkIG5vdCBsZWF2ZSBzdGFsZSByZWZlcmVuY2VzIGluIHRoZSBsZWZ0b3ZlciBkYXRhIHN0 cnVjdHVyZXMuCitIb3cgd2VsbCBjb3VsZCBiZSBvdGhlciBjb2RlIGNsZWFuZWQgdXAgd2l0aCB0 aGlzIHBhdGNoIGluIHBsYWNlIEkgaGF2ZSBub3QKK3RhcmdldGVkIGJ5IHRoaXMgcGF0Y2guCisK KworVGhlIGV4aXN0aW5nIGNvZGUgZXhwZWN0cyBhY2Nlc3NpYmlsaXR5IG9mIGZyZWVkIG1lbW9y eSBhbmQgZGlzY3Vzc2VzIHRoZQorY3VycmVudCBzdGFsZSByZWZlcmVuY2VzIHByb2JsZW06CisK K3ZvaWQKK2RlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorWy4uLl0K KyAgLyogSGFzIHRoaXMgYnAgYWxyZWFkeSBiZWVuIGRlbGV0ZWQ/ICBUaGlzIGNhbiBoYXBwZW4g YmVjYXVzZSBtdWx0aXBsZQorICAgICBsaXN0cyBjYW4gaG9sZCBwb2ludGVycyB0byBicCdzLiAg YnBzdGF0IGxpc3RzIGFyZSBlc3BlY2lhbCBjdWxwcml0cy4KKworICAgICBPbmUgZXhhbXBsZSBv ZiB0aGlzIGhhcHBlbmluZyBpcyBhIHdhdGNocG9pbnQncyBzY29wZSBicC4gIFdoZW4gdGhlCisg ICAgIHNjb3BlIGJwIHRyaWdnZXJzLCB3ZSBub3RpY2UgdGhhdCB0aGUgd2F0Y2hwb2ludCBpcyBv dXQgb2Ygc2NvcGUsIGFuZAorICAgICBkZWxldGUgaXQuICBXZSBhbHNvIGRlbGV0ZSBpdHMgc2Nv cGUgYnAuICBCdXQgdGhlIHNjb3BlIGJwIGlzIG1hcmtlZAorICAgICAiYXV0by1kZWxldGluZyIs IGFuZCBpcyBhbHJlYWR5IG9uIGEgYnBzdGF0LiAgVGhhdCBicHN0YXQgaXMgdGhlbgorICAgICBj aGVja2VkIGZvciBhdXRvLWRlbGV0aW5nIGJwJ3MsIHdoaWNoIGFyZSBkZWxldGVkLgorCisgICAg IEEgcmVhbCBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0gbWlnaHQgaW52b2x2ZSByZWZlcmVuY2Ug Y291bnRzIGluIGJwJ3MsCisgICAgIGFuZC9vciBnaXZpbmcgdGhlbSBwb2ludGVycyBiYWNrIHRv IHRoZWlyIHJlZmVyZW5jaW5nIGJwc3RhdCdzLCBhbmQKKyAgICAgdGVhY2hpbmcgZGVsZXRlX2Jy ZWFrcG9pbnQgdG8gb25seSBmcmVlIGEgYnAncyBzdG9yYWdlIHdoZW4gbm8gbW9yZQorICAgICBy ZWZlcmVuY2VzIHdlcmUgZXh0ZW50LiAgQSBjaGVhcGVyIGJhbmRhaWQgd2FzIGNob3Nlbi4gICov CisgIGlmIChicHQtPnR5cGUgPT0gYnBfbm9uZSkKKyAgICByZXR1cm47CitbLi4uXQorICBicHQt PnR5cGUgPSBicF9ub25lOworCisgIHhmcmVlIChicHQpOworfQorCisKK1doaWxlIGZpeGluZyB0 aGlzIHBhcnQgbWF5IGJlIGRpZmZpY3VsdCBJIGZpbmQgdGhlIGF0dGFjaGVkIHBhdGNoIGVhc3kg ZW5vdWdoCitmaXhpbmcgdGhlIElNTyBjdXJyZW50bHkgbW9zdCBjb21tb24gY3Jhc2ggZHVlIHRv IGl0LgorCitObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3Jh MTItbGludXgtZ251LgorCisKK1RoYW5rcywKK0phbgorCisKKyJpbnB1dCI6CitzZXQgaGVpZ2h0 IDAKK3NldCB3aWR0aCAwCitzZXQgY29uZmlybSBubworZmlsZSAuLi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvbG9jYWwtd2F0Y2gtd3JvbmctdGhyZWFkCitzZXQgY2FuLXVzZS1ody13YXRjaHBvaW50 cyAxCiticmVhayBtYWluCitydW4KK2JyZWFrIGxvY2FsLXdhdGNoLXdyb25nLXRocmVhZC5jOjM2 Citjb250aW51ZQorZGVsZXRlIGJyZWFrcG9pbnRzCit3YXRjaCAqbXlwCitjb250aW51ZQorZGVs ZXRlIGJyZWFrcG9pbnRzCitlY2hvIE1BS0Ugd2F0Y2hcbgord2F0Y2ggKm15cCBpZiB0cmlnZ2Vy ICE9IDAKK2VjaG8gTUFLRSBicmVha1xuCiticmVhayBsb2NhbC13YXRjaC13cm9uZy10aHJlYWQu Yzo2MAoraW5mbyBicmVhaworY29udGludWUKK2VjaG8gREVMRVRFIGZpdmVcbgorZGVsZXRlIDUK K3NldCB0cmlnZ2VyPTEKK2NvbnRpbnVlCitzZXQgKm15cD0wCiticmVhayBsb2NhbC13YXRjaC13 cm9uZy10aHJlYWQuYzo0NworY29udGludWUKKworCisKKzIwMDktMTItMjMgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogYnJlYWtwb2ludC5jIChkZWxl dGVfYnJlYWtwb2ludCA8YnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gTlVMTD4pOgorCU5ldy4K KworLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysrIGIvZ2RiL2JyZWFrcG9pbnQuYworQEAgLTg2 NDksNiArODY0OSwxNiBAQCBkZWxldGVfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmJw dCkKKyAgIGlmIChicHQtPnR5cGUgPT0gYnBfbm9uZSkKKyAgICAgcmV0dXJuOworIAorKyAgLyog QXQgbGVhc3QgYXZvaWQgdGhpcyBzdGFsZSByZWZlcmVuY2UgdW50aWwgdGhlIHJlZmVyZW5jZSBj b3VudGluZyBvZgorKyAgICAgYnJlYWtwb2ludHMgZ2V0cyByZXNvbHZlZC4gICovCisrICBpZiAo YnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGdkYl9hc3Nl cnQgKGJwdC0+cmVsYXRlZF9icmVha3BvaW50LT5yZWxhdGVkX2JyZWFrcG9pbnQgPT0gYnB0KTsK KysgICAgICBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9h dF9uZXh0X3N0b3A7CisrICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJl YWtwb2ludCA9IE5VTEw7CisrICAgICAgYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBOVUxMOwor KyAgICB9CisrCisgICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9kZWxldGVkIChicHQtPm51 bWJlcik7CisgCisgICBpZiAoYnJlYWtwb2ludF9jaGFpbiA9PSBicHQpCisKCmRpZmYgLS1naXQg YS9nZGItdGVzdHN1aXRlLXVua25vd24tb3V0cHV0LnBhdGNoIGIvZ2RiLXRlc3RzdWl0ZS11bmtu b3duLW91dHB1dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWRl Y2FjCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXRlc3RzdWl0ZS11bmtub3duLW91dHB1dC5wYXRj aApAQCAtMCwwICsxLDY5IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAwOS0xMi9tc2cwMDQ3My5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIHRlc3RzdWl0ZTogZmFsc2Ug TUkgInVua25vd24gb3V0cHV0IGFmdGVyIHJ1bm5pbmciIHJlZ3Jlc3Npb24KKworSGksCisKK3Ro ZSBhdHRhY2hlZCBwYXRjaCB3aWxsIHR1cm4gdGhlIHJlc3VsdHMgdGhpcyB3YXk6CistS0ZBSUw6 IGdkYi5taS9taS11bnRpbC5leHA6IHVudGlsIGFmdGVyIHdoaWxlIGxvb3AgKHVua25vd24gb3V0 cHV0IGFmdGVyIHJ1bm5pbmcpIChQUk1TOiBnZGIvMjEwNCkKKytLRkFJTDogZ2RiLm1pL21pLXVu dGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUgbG9vcCAoc3RvcHBlZCBhdCB3cm9uZyBwbGFjZSkg KFBSTVM6IGdkYi8yMTA0KQorLVhGQUlMOiBnZGIubWkvbWktd2F0Y2guZXhwOiBzdzogd2F0Y2hw b2ludCB0cmlnZ2VyICh1bmtub3duIG91dHB1dCBhZnRlciBydW5uaW5nKQorK1hGQUlMOiBnZGIu bWkvbWktd2F0Y2guZXhwOiBzdzogd2F0Y2hwb2ludCB0cmlnZ2VyIChzdG9wcGVkIGF0IHdyb25n IHBsYWNlKQorLUtGQUlMOiBnZGIubWkvbWkyLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUg bG9vcCAodW5rbm93biBvdXRwdXQgYWZ0ZXIgcnVubmluZykgKFBSTVM6IGdkYi8yMTA0KQorK0tG QUlMOiBnZGIubWkvbWkyLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUgbG9vcCAoc3RvcHBl ZCBhdCB3cm9uZyBwbGFjZSkgKFBSTVM6IGdkYi8yMTA0KQorLVhGQUlMOiBnZGIubWkvbWkyLXdh dGNoLmV4cDogc3c6IHdhdGNocG9pbnQgdHJpZ2dlciAodW5rbm93biBvdXRwdXQgYWZ0ZXIgcnVu bmluZykKKytYRkFJTDogZ2RiLm1pL21pMi13YXRjaC5leHA6IHN3OiB3YXRjaHBvaW50IHRyaWdn ZXIgKHN0b3BwZWQgYXQgd3JvbmcgcGxhY2UpCisKK1RoaXMgaXMgYSBmaXggb2YgS0ZBSUwta2lu ZCByZWdyZXNzaW9uIGR1ZSB0bzoKK2NvbW1pdCAyNmQwODZkNzQxZmIxYmIwZWVlOWQ1MGUwYmFm YTdjNWUzODgwMjNmCitSZTogW1JGQV0gZml4ICpzdG9wcGVkIGZvciBDTEkgY29tbWFuZHMKK2h0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTAyL21zZzAwMjc4Lmh0bWwK K2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMDIvbXNnMDAwODQuaHRtbAor cGFydDoKK2dkYi90ZXN0c3VpdGUvCisyMDA5LTAyLTE0ICBWbGFkaW1pciBQcnVzICA8dmxhZGlt aXJAY29kZXNvdXJjZXJ5LmNvbT4KKwkqIGxpYi9taS1zdXBwb3J0LmV4cCAobWlfZXhwZWN0X3N0 b3ApOiBBZGp1c3QgdGhlIG9yZGVyIG9mIGZpZWxkcy4KKwkobWlfZXhwZWN0X2ludGVycnVwdCk6 IExpa2V3aXNlLgorCSogZ2RiLm1pL21pLWNsaS5leHA6IENoZWNrIHRoYXQgInN0ZXAiIHJlc3Vs dHMgaW4gcHJvcGVyICpzdG9wcGVkCisJcmVzcG9uc2UuCisKK3JlLXdkaWZmLWVkIGZvciB5b3Vy IGNvbnZlbmllbmNlIGFzOgorICAgIHZlcmJvc2UgLWxvZyAibWlfZXhwZWN0X3N0b3A6IGV4cGVj dGluZzogXFwqc3RvcHBlZCwke3J9JHthfSR7Ym59Wy10aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0 b3BwZWQtdGhyZWFkcz0kYW55LC1dZnJhbWU9XHthZGRyPVwiJGhleFwiLGZ1bmM9XCIkZnVuY1wi LGFyZ3M9JGFyZ3MsZmlsZT1cIiRhbnkkZmlsZVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50 YXh9JGZpbGVcIixsaW5lPVwiJGxpbmVcIlx9JGFmdGVyX3N0b3BwZWR7Kyx0aHJlYWQtaWQ9XCIk ZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55K31cclxuKCR0aHJlYWRfc2VsZWN0ZWRfcmUp PyRwcm9tcHRfcmUiCisJLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1bLXRocmVhZC1pZD1c IiRkZWNpbWFsXCIsc3RvcHBlZC10aHJlYWRzPSRhbnksLV1mcmFtZT1ce2FkZHI9XCIkaGV4XCIs ZnVuYz1cIiRmdW5jXCIsYXJncz0kYXJncyxmaWxlPVwiJGFueSRmaWxlXCIsZnVsbG5hbWU9XCIk e2Z1bGxuYW1lX3N5bnRheH0kZmlsZVwiLGxpbmU9XCIoJGxpbmUpXCJcfSRhZnRlcl9zdG9wcGVk eyssdGhyZWFkLWlkPVwiJGRlY2ltYWxcIixzdG9wcGVkLXRocmVhZHM9JGFueSt9XHJcbigkdGhy ZWFkX3NlbGVjdGVkX3JlKT8kcHJvbXB0X3JlIiB7CisJLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9 JHtibn1bLXRocmVhZC1pZD1cIiRkZWNpbWFsXCIsc3RvcHBlZC10aHJlYWRzPSRhbnksLV1mcmFt ZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxd XH1cXSxmaWxlPVwiJGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxp bmU9XCJcWzAtOVxdKlwiXH1bLSRhbnktXXsrdGhyZWFkLWlkPVwiJGRlY2ltYWxcIixzdG9wcGVk LXRocmVhZHM9JGFueSt9XHJcbiRwcm9tcHRfcmUiIHsKKworRllJIHRoZXJlIGlzOiBzZXQgYW55 ICJcW15cblxdKiIKKworInN0b3BwZWQgYXQgd3JvbmcgcGxhY2UiIGlzIHRoZSByaWdodCBraW5k IG9mIEtGQUlML1hGQUlMICh0ZXN0ZWQKK2djYy00LjEuMi00Ni5lbDVfNC4xLng4Nl82NCBhbmQg Z2NjLTQuNC4yLTIwLmZjMTIueDg2XzY0KSBhcyBkaXNjdXNzZWQKK2luIFBSIGdkYi8yMTA0Lgor CitJbiB0aGUgbGFzdCBjYXNlIHRoZXJlIGlzIG1pc3NpbmcgY29tbWEgKCwpIGFmdGVyIHRoZSBm b3JtZXIgcGF0Y2ggYWJvdmUuCisKKyRhZnRlcl9zdG9wcGVkIHdhcyBJTU8gbWlzc2luZyB0aGVy ZSBldmVuIGJlZm9yZS4gIEl0IGlzIGluIHVzZSBvbmx5IGJ5CitnZGIubWkvbWktc2ltcGxlcnVu LmV4cCBhbmQgZ2RiLm1pL21pMi1zaW1wbGVydW4uZXhwLiAgQWxzbyBmaXhlZCBiZWxvdy4KKwor Tm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4 LWdudS4KKworCitUaGFua3MsCitKYW4KKworCitnZGIvdGVzdHN1aXRlLworMjAwOS0xMi0zMSAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBsaWIvbWkt c3VwcG9ydC5leHAgKG1pX2V4cGVjdF9zdG9wIDxzdG9wcGVkIGF0IHdyb25nIHBsYWNlPik6IElu c2VydAorCW1pc3NpbmcgJGFmdGVyX3N0b3BwZWQgYW5kIGNvbW1hICgsKSBleHBlY3RhdGlvbi4K KworLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKKysrKyBiL2dkYi90ZXN0 c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitAQCAtMTAzOCw3ICsxMDM4LDcgQEAgcHJvYyBtaV9l eHBlY3Rfc3RvcCB7IHJlYXNvbiBmdW5jIGFyZ3MgZmlsZSBsaW5lIGV4dHJhIHRlc3QgfSB7Cisg CSAgICBwYXNzICIkdGVzdCIKKyAgICAgICAgICAgICByZXR1cm4gJGV4cGVjdF9vdXQoMixzdHJp bmcpCisgCX0KKy0JLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1mcmFtZT1ce2FkZHI9XCIk aGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxdXH1cXSxmaWxlPVwi JGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxpbmU9XCJcWzAtOVxd KlwiXH10aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55XHJcbiRwcm9t cHRfcmUiIHsKKysJLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1mcmFtZT1ce2FkZHI9XCIk aGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtcXFxdXH1cXSxmaWxlPVwi JGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwiLGxpbmU9XCJcWzAtOVxd KlwiXH0kYWZ0ZXJfc3RvcHBlZCx0aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFk cz0kYW55XHJcbiRwcm9tcHRfcmUiIHsKKyAgICAgICAgICAgICB2ZXJib3NlIC1sb2cgImdvdCAk ZXhwZWN0X291dChidWZmZXIpIgorIAkgICAgZmFpbCAiJHRlc3QgKHN0b3BwZWQgYXQgd3Jvbmcg cGxhY2UpIgorIAkgICAgcmV0dXJuIC0xCisKCmRpZmYgLS1naXQgYS9nZGItd2F0Y2hwb2ludC1j b25kLWdvbmUucGF0Y2ggYi9nZGItd2F0Y2hwb2ludC1jb25kLWdvbmUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJhNGM3NgotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi13YXRjaHBvaW50LWNvbmQtZ29uZS5wYXRjaApAQCAtMCwwICsxLDIzMSBAQAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMTIvbXNnMDAzOTQuaHRtbAorU3ViamVj dDogW3BhdGNoXSBGaXggd2F0Y2hwb2ludC1hdC1lcGlsb2d1ZSA3LjAgcmVncmVzc2lvbiAoczM5 MHgpCisKK0hpLAorCithdHRhY2hlZCB0ZXN0Y2FzZSByZWdyZXNzZWQgNi44LT43LjAgb24gc29t ZSBzMzkweCBzeXN0ZW1zLgorCitBdCB0aGUgbW9tZW50IFBDIGlzIGF0IGVwaWxvZ3VlIChhZnRl ciBmcmFtZSBwb2ludGVyIGdvdCBkZXN0cm95ZWQgYW5kIFBDIGlzCitzdGlsbCBpbiB0aGUgY2Fs bGVlZCBmdW5jdGlvbikgd2UgbXVzdCBub3QgdHJ5IGFueSB1bndpbmRpbmcgYXMgaXQgY2FuIHRy eSB0bwordW53aW5kIGEgZ2FyYmFnZS4KKworQ29ycmVjdCB3YXkgd291bGQgYmUgdG8gaW1wbGVt ZW50IGVwaWxvZ3VlIHVud2luZGVyIChzdWNoIGFzCithbWQ2NF9lcGlsb2d1ZV9mcmFtZV91bndp bmQgb3IgaTM4Nl9lcGlsb2d1ZV9mcmFtZV91bndpbmQgb25lcykgYnV0IGl0IHdvdWxkCitub3Qg YmUgc28gZWFzeSBvbiBzMzkweCBhcyBpdCB3b3VsZCBuZWVkIGZ1bGwgcHJvbG9ndWUtYW5hbHl6 ZXI6IEFmdGVyIFNQIGdldHMKK3Jlc3RvcmVkIHRoZXJlIGNhbiBiZSB2YXJpb3VzIGluc3RydWN0 aW9ucyBiZWZvcmUgdGhlIGxhc3QganVtcCAtIEdEQiBuZWVkcyB0bworaW50ZXJwcmV0IHRoZSBq dW1wIHRvIGZpbmQgdGhlIHJlZ2lzdGVyIHZhbHVlIHdoZXJlIGl0IGlzIGdvaW5nIHRvIGp1bXAg dG8uCiswMDAwMDA0ODI3OWFhMDljIDxyb3VuZF9hbmRfcmV0dXJuPjoKK1suLi5dCisgIDQ4Mjc5 YWExYjg6IGViIDZmIGYwIGQwIDAwIDA0IGxtZyAgJXI2LCVyMTUsMjA4KCVyMTUpCisgIDQ4Mjc5 YWExYmU6IDUwIDMyIDEwIDAwICAgICAgIHN0ICAgJXIzLDAoJXIyLCVyMSkJIyBTUCAoJXIxNSkg aXMgZ29uZSBob25lCisgIDQ4Mjc5YWExYzI6IGIzIDc0IDAwIDAwICAgICAgIGx6ZXIgJXIwCisg IDQ4Mjc5YWExYzY6IDA3IGY0ICAgICAgICAgICAgIGJyICAgJXI0CQkjICVyNCBpcyB0aGUgdGFy Z2V0CitbLi4uXQorCitKdXN0IGFuIGVhc3kgZml4IGlzIHRvIGJlIG1vcmUgY2FyZWZ1bCBhbmQg ZG8gbm90IHRyeSBhbnkgdW53aW5kaW5nIGlmIHdlIGZpbmQKK1BDIGlzIGluIHRoZSBlcGlsb2d1 ZSAocHJldmlvdXMgaW5zdHJ1Y3Rpb24gbW9kaWZpZXMgU1A9JXIxNSkuCisKK0l0IGlzIGV2ZW4g YSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gYW5kIEkgc2VlIG5vIHJlZ3Jlc3Npb24gcmlzayB0 aGVyZS4KKworVGhlIHNwZWNpZmljIHMzOTB4IGVycm9yIGlzOgorIzAgIHRocm93X2Vycm9yIChl cnJvcj1NRU1PUllfRVJST1IsIGZtdD0weDgwNDI2NzZhICJDYW5ub3QgYWNjZXNzIG1lbW9yeSBh dCBhZGRyZXNzICVzIikgYXQgZXhjZXB0aW9ucy5jOjQxNQorIzEgIGluIG1lbW9yeV9lcnJvciAo c3RhdHVzPTUsIG1lbWFkZHI9MCkgYXQgY29yZWZpbGUuYzoyMjAKKyMyICBpbiByZWFkX21lbW9y eSAobWVtYWRkcj0wLCBteWFkZHI9MHgzZmZmZmM3ZjdmMCAiIiwgbGVuPTgpIGF0IGNvcmVmaWxl LmM6MjM4CisjMyAgaW4gcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAobWVtYWRkcj0wLCBs ZW49OCwgYnl0ZV9vcmRlcj1CRkRfRU5ESUFOX0JJRykgYXQgY29yZWZpbGUuYzozMjEKKyM0ICBp biBzMzkwX2JhY2tjaGFpbl9mcmFtZV91bndpbmRfY2FjaGUgKHRoaXNfZnJhbWU9MHg4MDYwODk1 OCwgaW5mbz0weDgwNjA4YTA4KSBhdCBzMzkwLXRkZXAuYzoxNTI1CisjNSAgaW4gczM5MF9mcmFt ZV91bndpbmRfY2FjaGUgKHRoaXNfZnJhbWU9MHg4MDYwODk1OCwgdGhpc19wcm9sb2d1ZV9jYWNo ZT0weDgwNjA4OTcwKSBhdCBzMzkwLXRkZXAuYzoxNTcyCisjNiAgaW4gczM5MF9mcmFtZV90aGlz X2lkICh0aGlzX2ZyYW1lPTB4ODA2MDg5NTgsIHRoaXNfcHJvbG9ndWVfY2FjaGU9MHg4MDYwODk3 MCwgdGhpc19pZD0weDgwNjA4OWI4KSBhdCBzMzkwLXRkZXAuYzoxNTgzCisjNyAgaW4gZ2V0X2Zy YW1lX2lkIChmaT0weDgwNjA4OTU4KSBhdCBmcmFtZS5jOjMzNQorIzggIGluIGZyYW1lX2ZpbmRf YnlfaWQgKGlkPXtzdGFja19hZGRyID0gNDM5ODA0NDgyNDk1MiwgY29kZV9hZGRyID0gMjE0NzQ4 NDk1Miwgc3BlY2lhbF9hZGRyID0gMCwgc3RhY2tfYWRkcl9wID0gMSwgY29kZV9hZGRyX3AgPSAx LCBzcGVjaWFsX2FkZHJfcCA9IDAsIGlubGluZV9kZXB0aCA9IDB9KSBhdCBmcmFtZS5jOjU4NyAK KyM5ICBpbiB3YXRjaHBvaW50X2NoZWNrIChwPTB4ODA5NWJiYzApIGF0IGJyZWFrcG9pbnQuYzoz MjAzCisjMTAgaW4gY2F0Y2hfZXJyb3JzIChmdW5jPTB4ODAxMjYyYzAgPHdhdGNocG9pbnRfY2hl Y2s+LCBmdW5jX2FyZ3M9MHg4MDk1YmJjMCwgZXJyc3RyaW5nPTB4ODBhMjY0MTAgIkVycm9yIGV2 YWx1YXRpbmcgZXhwcmVzc2lvbiBmb3Igd2F0Y2hwb2ludCAzXG4iLCBtYXNrPTYpIGF0IGV4Y2Vw dGlvbnMuYzo1MTAKKyMxMSBpbiBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnM9MHg4MDk1YmJj MCkgYXQgYnJlYWtwb2ludC5jOjM0MDQKKyMxMiBpbiBicHN0YXRfc3RvcF9zdGF0dXMgKGFzcGFj ZT0weDgwNjFmY2IwLCBicF9hZGRyPTIxNDc0ODUwNDAsIHB0aWQ9e3BpZCA9IDE3MzcyLCBsd3Ag PSAxNzM3MiwgdGlkID0gMH0pIGF0IGJyZWFrcG9pbnQuYzozNTk0CisjMTMgaW4gaGFuZGxlX2lu ZmVyaW9yX2V2ZW50IChlY3M9MHgzZmZmZmM4MDUyMCkgYXQgaW5mcnVuLmM6MzU4OAorCitJIGRp ZCBub3QgYW5hbHl6ZSB3aHkgNi44IGRpZCBub3QgZXJyb3Igb3V0LCB0aGUgR0RCIGNvZGUgaXMg c2ltaWxhciB0aGVyZS4KKworTm8gcmVncmVzc2lvbnMgb246Cit7eDg2XzY0LHg4Nl82NC1tMzIs aTY4Nn0tZmVkb3JhMTItbGludXgtZ251IChDVlMgSEVBRCBHREIpCitzMzkweC1yaGVsNDgtbGlu dXgtZ251IChDVlMgSEVBRCBHREIpCitzMzkwLXJoZWw0OC1saW51eC1nbnUgKENWUyBIRUFEIEdE QikKK3MzOTB4LXJoZWw1NC1saW51eC1nbnUgKEZlZG9yYSAxMiBHREIpCitzMzkwLXJoZWw1NC1s aW51eC1nbnUgKEZlZG9yYSAxMiBHREIpCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAw OS0xMi0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJ KiBicmVha3BvaW50LmMgKHdhdGNocG9pbnRfY2hlY2spOiBDaGVjayB0aGUgY2FsbAorCWdkYmFy Y2hfaW5fZnVuY3Rpb25fZXBpbG9ndWVfcCBiZWZvcmUgY2FsbGluZyBmcmFtZV9maW5kX2J5X2lk LgorCUV4dGVuZCB0aGUgY29tbWVudC4KKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMDktMTItMjUgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2RiLmJhc2Uv d2F0Y2hwb2ludC1jb25kLWdvbmUuZXhwLCBnZGIuYmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS5j LAorCWdkYi5iYXNlL3dhdGNocG9pbnQtY29uZC1nb25lLXN0cmlwcGVkLmM6IE5ldy4KKworLS0t IGEvZ2RiL2JyZWFrcG9pbnQuYworKysrIGIvZ2RiL2JyZWFrcG9pbnQuYworQEAgLTMyMDAsNiAr MzIwMCwxNyBAQCB3YXRjaHBvaW50X2NoZWNrICh2b2lkICpwKQorICAgICAgIHN0cnVjdCBnZGJh cmNoICpmcmFtZV9hcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKKyAgICAgICBDT1JFX0FE RFIgZnJhbWVfcGMgPSBnZXRfZnJhbWVfcGMgKGZyYW1lKTsKKyAKKysgICAgICAvKiBpbl9mdW5j dGlvbl9lcGlsb2d1ZV9wKCkgcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlIGlmIHdlJ3JlIHN0aWxs CisrCSBpbiB0aGUgZnVuY3Rpb24gYnV0IHRoZSBzdGFjayBmcmFtZSBoYXMgYWxyZWFkeSBiZWVu IGludmFsaWRhdGVkLgorKwkgU2luY2Ugd2UgY2FuJ3QgcmVseSBvbiB0aGUgdmFsdWVzIG9mIGxv Y2FsIHZhcmlhYmxlcyBhZnRlciB0aGUKKysJIHN0YWNrIGhhcyBiZWVuIGRlc3Ryb3llZCwgd2Ug YXJlIHRyZWF0aW5nIHRoZSB3YXRjaHBvaW50IGluIHRoYXQKKysJIHN0YXRlIGFzIGBub3QgY2hh bmdlZCcgd2l0aG91dCBmdXJ0aGVyIGNoZWNraW5nLiAgRG9uJ3QgbWFyaworKwkgd2F0Y2hwb2lu dHMgYXMgY2hhbmdlZCBpZiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbiBhbiBlcGlsb2d1ZSAtCisr CSBldmVuIGlmIHRoZXkgYXJlIGluIHNvbWUgb3RoZXIgZnJhbWUsIG91ciB2aWV3IG9mIHRoZSBz dGFjaworKwkgaXMgbGlrZWx5IHRvIGJlIHdyb25nIGFuZCBmcmFtZV9maW5kX2J5X2lkIGNvdWxk IGVycm9yIG91dC4gICovCisrICAgICAgaWYgKGdkYmFyY2hfaW5fZnVuY3Rpb25fZXBpbG9ndWVf cCAoZnJhbWVfYXJjaCwgZnJhbWVfcGMpKQorKwlyZXR1cm4gV1BfVkFMVUVfTk9UX0NIQU5HRUQ7 CisrCisgICAgICAgZnIgPSBmcmFtZV9maW5kX2J5X2lkIChiLT53YXRjaHBvaW50X2ZyYW1lKTsK KyAgICAgICB3aXRoaW5fY3VycmVudF9zY29wZSA9IChmciAhPSBOVUxMKTsKKyAKK0BAIC0zMjE2 LDE3ICszMjI3LDYgQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKKyAJICAgIHdpdGhpbl9j dXJyZW50X3Njb3BlID0gMDsKKyAJfQorIAorLSAgICAgIC8qIGluX2Z1bmN0aW9uX2VwaWxvZ3Vl X3AoKSByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUgaWYgd2UncmUgc3RpbGwKKy0JIGluIHRoZSBm dW5jdGlvbiBidXQgdGhlIHN0YWNrIGZyYW1lIGhhcyBhbHJlYWR5IGJlZW4gaW52YWxpZGF0ZWQu CistCSBTaW5jZSB3ZSBjYW4ndCByZWx5IG9uIHRoZSB2YWx1ZXMgb2YgbG9jYWwgdmFyaWFibGVz IGFmdGVyIHRoZQorLQkgc3RhY2sgaGFzIGJlZW4gZGVzdHJveWVkLCB3ZSBhcmUgdHJlYXRpbmcg dGhlIHdhdGNocG9pbnQgaW4gdGhhdAorLQkgc3RhdGUgYXMgYG5vdCBjaGFuZ2VkJyB3aXRob3V0 IGZ1cnRoZXIgY2hlY2tpbmcuICBEb24ndCBtYXJrCistCSB3YXRjaHBvaW50cyBhcyBjaGFuZ2Vk IGlmIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluIGFuIGVwaWxvZ3VlIC0KKy0JIGV2ZW4gaWYgdGhl eSBhcmUgaW4gc29tZSBvdGhlciBmcmFtZSwgb3VyIHZpZXcgb2YgdGhlIHN0YWNrCistCSBpcyBs aWtlbHkgdG8gYmUgd3JvbmcuICAqLworLSAgICAgIGlmIChnZGJhcmNoX2luX2Z1bmN0aW9uX2Vw aWxvZ3VlX3AgKGZyYW1lX2FyY2gsIGZyYW1lX3BjKSkKKy0JcmV0dXJuIFdQX1ZBTFVFX05PVF9D SEFOR0VEOworLQorICAgICAgIGlmICh3aXRoaW5fY3VycmVudF9zY29wZSkKKyAJLyogSWYgd2Ug ZW5kIHVwIHN0b3BwaW5nLCB0aGUgY3VycmVudCBmcmFtZSB3aWxsIGdldCBzZWxlY3RlZAorIAkg ICBpbiBub3JtYWxfc3RvcC4gIFNvIHRoaXMgY2FsbCB0byBzZWxlY3RfZnJhbWUgd29uJ3QgYWZm ZWN0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9p bnQtY29uZC1nb25lLXN0cmlwcGVkLmMKK0BAIC0wLDAgKzEsMjMgQEAKKysvKiBUaGlzIHRlc3Rj YXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgCisrICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICovCisrCisrdm9pZAorK2p1bXBlciAo dm9pZCAoKmp1bXB0bykgKHZvaWQpKQorK3sKKysgICgqanVtcHRvKSAoKTsKKyt9CistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtY29uZC1nb25l LmMKK0BAIC0wLDAgKzEsMzcgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysgCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAgIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICovCisrCisrZXh0ZXJuIHZvaWQganVtcGVyICh2b2lkICgqanVtcHRvKSAo dm9pZCkpOworKworK3N0YXRpYyB2b2lkCisrZnVuYyAodm9pZCkKKyt7CisrICB2b2xhdGlsZSBp bnQgYzsKKysKKysgIGMgPSA1OworKyAgYyA9IDEwOwkvKiB3YXRjaHBvaW50LWhlcmUgKi8KKysg IGMgPSAyMDsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBqdW1wZXIgKGZ1bmMp OworKworKyAgcmV0dXJuIDA7CisrfQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LWNvbmQtZ29uZS5leHAKK0BAIC0wLDAgKzEsNTEgQEAKKysj IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysKKytzZXQgdGVzdGZpbGUgIndh dGNocG9pbnQtY29uZC1nb25lIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgc3Jj ZmlsZXN0cmlwcGVkICR7dGVzdGZpbGV9LXN0cmlwcGVkLmMKKytzZXQgb2JqZmlsZXN0cmlwcGVk ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tc3RyaXBwZWQubworK3NldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKysjIFdlIG5lZWQgdG8gZ2VuZXJh dGUgYSBmdW5jdGlvbiB3aXRob3V0IERXQVJGIHRvIGNyYXNoIG9sZGVyIEdEQi4KKysjIFN0ZXBw aW5nIGludG8gYSBkeW5hbWljIGZ1bmN0aW9uIHRyYW1wb2xpbmUgb3Igc3RlcHBpbmcgb3V0IG9m IE1BSU4gbWF5IHdvcmsKKysjIGJ1dCBpdCBpcyBub3QgYSByZWxpYWJsZSBGQUlMIGNhc2UuCisr CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZXN0cmlw cGVkfSIgIiR7b2JqZmlsZXN0cmlwcGVkfSIgb2JqZWN0IHt9XSAhPSAiIgorKyAgICAgIHx8IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9ICR7b2JqZmlsZXN0cmlw cGVkfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIGdk Yl9zdXBwcmVzc19lbnRpcmVfZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0 ZXN0cyBpbiB0aGlzIGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGZhaWwuIgorK30KKysKKytjbGVh bl9yZXN0YXJ0ICR7dGVzdGZpbGV9CisrCisrIyBQcm9ibGVtIGRvZXMgbm90IG9jY3VyIG90aGVy d2lzZS4KKytnZGJfdGVzdCAic2V0IGNhbi11c2UtaHctd2F0Y2hwb2ludHMgMCIKKysKKytpZiAh W3J1bnRvX21haW5dIHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ3YXRjaHBvaW50LWhlcmUiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJQbGFjZSB0byBzZXQgdGhlIHdhdGNocG9pbnQiCisrCisrIyBUaGUgY29uZGl0 aW9uIGBjID09IDMwJyBpcyB0aGUgc3ViamVjdCBiZWluZyB0ZXN0ZWQuCisrZ2RiX3Rlc3QgIndh dGNoIGMgaWYgYyA9PSAzMCIgIiIgIlBsYWNlIHRoZSB3YXRjaHBvaW50IgorKworKyMgV2UgbWF5 IHN0YXkgZWl0aGVyIGluIHRoZSBmdW5jdGlvbiBpdHNlbGYgb3Igb25seSBhdCB0aGUgZmlyc3Qg aW5zdHJ1Y3Rpb24gb2YKKysjIGl0cyBjYWxsZXIgZGVwZW5kaW5nIG9uIHRoZSBlcGlsb2d1ZSB1 bndpbmRlciAob3IgdmFsaWQgZXBpbG9ndWUgQ0ZJKSBwcmVzZW5jZS4KKytnZGJfdGVzdCAiZmlu aXNoIiBcCisrCSAiV2F0Y2hwb2ludCAuKiBkZWxldGVkIGJlY2F1c2UgdGhlIHByb2dyYW0gaGFz IGxlZnQgdGhlIGJsb2NrIGluLip3aGljaCBpdHMgZXhwcmVzc2lvbiBpcyB2YWxpZC4uKmluIChq dW1wZXJ8ZnVuYykuKiIgXAorKwkgIkNhdGNoIHRoZSBubyBsb25nZXIgdmFsaWQgd2F0Y2hwb2lu dCIKKwoKZGlmZiAtLWdpdCBhL2dkYi14ODZfNjQtaTM4Ni1zeXNjYWxsLXJlc3RhcnQucGF0Y2gg Yi9nZGIteDg2XzY0LWkzODYtc3lzY2FsbC1yZXN0YXJ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZDZiMTAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIteDg2XzY0 LWkzODYtc3lzY2FsbC1yZXN0YXJ0LnBhdGNoCkBAIC0wLDAgKzEsMTIxIEBACitodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMS9tc2cwMDU5Mi5odG1sCitTdWJqZWN0 OiBbcGF0Y2hdIEZpeCBzeXNjYWxsIHJlc3RhcnRzIGZvciBhbWQ2NC0+aTM4NiBiaWFyY2gKKwor SGksCisKK3Rlc3RlZCBvbmx5IG9uIHJlY2VudCBMaW51eCBrZXJuZWxzLCBpdCBzaG91bGQgYXBw bHkgYWxzbyBvbiB2YW5pbGxhIG9uZXMuCitUaGVyZSB3ZXJlIHZhcmlvdXMgY2hhbmdlcyBvZiB0 aGUga2VybmVscyBiZWhhdmlvciBpbiB0aGUgcGFzdC4KKworRlNGIEdEQiBIRUFEIHN0YXRlOgor a2VybmVsIGRlYnVnZ2VyIGluZmVyaW9yIHN0YXRlCit4ODZfNjQgeDg2XzY0ICAgeDg2XzY0ICAg UEFTUworeDg2XzY0IHg4Nl82NCAgIGkzODYgICAgIEZBSUwgd2l0aG91dCB0aGlzIHBhdGNoLCBQ QVNTIHdpdGggdGhpcyBwYXRjaAoreDg2XzY0IGkzODYgICAgIGkzODYgICAgIFBBU1Mgb24gcmVj ZW50IGtlcm5lbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAoRkFJTDoga2VybmVsLTIuNi4z MS41LTEyNy5mYzEyLng4Nl82NCAtIEZlZG9yYSAxMikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAoUEFTUzoga2VybmVsLTIuNi4zMi0wLjU1LnJjOC5naXQxLmZjMTMueDg2XzY0KQoraTM4NiAg IGkzODYgICAgIGkzODYgICAgIFBBU1MKKworCitDdXJyZW50bHkgZ2RiLmJhc2UvaW50ZXJydXB0 LmV4cCBmYWlscyBvbiBhbWQ2NCBob3N0IHJ1bm5pbmcgdW5kZXIKKy0tdGFyZ2V0X2JvYXJkIHVu aXgvLW0zMiB3aXRoOgorCWNvbnRpbnVlCisJQ29udGludWluZy4KKwlVbmtub3duIGVycm9yIDUx MgorCis8bGludXgvZXJybm8uaD46CisvKgorICogVGhlc2Ugc2hvdWxkIG5ldmVyIGJlIHNlZW4g YnkgdXNlciBwcm9ncmFtcy4gIFRvIHJldHVybiBvbmUgb2YgRVJFU1RBUlQqCisgKiBjb2Rlcywg c2lnbmFsX3BlbmRpbmcoKSBNVVNUIGJlIHNldC4gIE5vdGUgdGhhdCBwdHJhY2UgY2FuIG9ic2Vy dmUgdGhlc2UKKyAqIGF0IHN5c2NhbGwgZXhpdCB0cmFjaW5nLCBidXQgdGhleSB3aWxsIG5ldmVy IGJlIGxlZnQgZm9yIHRoZSBkZWJ1Z2dlZCB1c2VyCisgKiBwcm9jZXNzIHRvIHNlZS4KKyAqLwor I2RlZmluZSBFUkVTVEFSVFNZUyAgICAgNTEyCisKKyJVbmtub3duIGVycm9yIDUxMiIgcHJpbnRl ZCBhYm92ZSBpcyBwcmludGVkIGJ5IHRoZSBpbmZlcmlvciBpdHNlbGYsIG5vdCBieSBHREIuCisK K0l0IGlzIGJlY2F1c2UgR0RCIHJlYWRzIGl0IGFzIDB4ZmZmZmZmZmZmZmZmZmUwMCBidXQgd3Jp dGVzIGl0IGJhY2sgYXMKKzB4ZmZmZmZlMDAuCisrICAgICAgLyogU2lnbi1leHRlbmQgJWVheCBh cyBkdXJpbmcgcmV0dXJuIGZyb20gYSBzeXNjYWxsIGl0IGlzIGJlaW5nIGNoZWNrZWQKKysJIGZv ciAtRVJFU1RBUlQqIHZhbHVlcyAtNTEyIGJlaW5nIGFib3ZlIDB4ZmZmZmZmZmZmZmZmZmUwMDsg dGVzdGVkIGJ5CisrCSBpbnRlcnJ1cHQuZXhwLiAgKi8KKworCitRdW90ZSBvZiBSb2xhbmQgTWNH cmF0aCBmcm9tIElSQzoKKworcm9sYW5kOiBpbiB0aGUgdXNlcl9yZWdzZXQgbW9kZWwsIHRoZXJl IGFyZSA2NC1iaXQgdXNlcl9yZWdzZXQgZmxhdm9ycyBhbmQKKzMyLWJpdCB1c2VyX3JlZ3NldCBm bGF2b3JzLCBzbyBhdCB0aGUga2FiaSBsZXZlbCB0aGUgKGtlcm5lbCkgY2FsbGVyIGNhbiBzYXkK K3doYXQgaXQgbWVhbnM6IGNhbGxzIG9uIHRoZSAzMi1iaXQgdXNlcl9yZWdzZXQgZmxhdm9yIHdp bGwgYmVoYXZlIGFzIGlmIG9uCithIDMyLWJpdCBrZXJuZWwvdXNlcmxhbmQuICBpbiBwdHJhY2Us IHRoZXJlIGlzIG5vIHdheSBmb3IgeDg2XzY0IHB0cmFjZSBjYWxscwordG8gc2F5ICJpIHRoaW5r IG9mIHRoZSBpbmZlcmlvciBhcyBiZWluZyAzMiBiaXRzLCBzbyBhY3QgYWNjb3JkaW5nbHkiICh0 aG8gcHBjCithbmQvb3Igc3BhcmMgaGF2ZSBwdHIKK3JvbGFuZDogYWNlIHJlcXVlc3RzIHRoYXQg ZG8gdGhhdCBpaXJjKQorcm9sYW5kOiBlcmdvIDY0LWJpdCBwdHJhY2UgY2FsbGVycyBtdXN0IGVp dGhlciBzYXZlL3Jlc3RvcmUgZnVsbCA2NC1iaXRzIHNvCit0aGUga2VybmVsJ3Mgc2lnbi1leHRl bnNpb24gY2hvaWNlcyBhcmUgcHJlc2VydmVkLCBvciBlbHNlIGdyb2sgbWFnaWMgd2F5cyB0bwor ZXhwYW5kIHN0b3JlZCAzMi1iaXQgcmVnaXN0ZXIgY29udGVudHMgdG8gNjQtYml0IHZhbHVlcyB0 byBzdHVmZiB2aWEgNjQtYml0CitwdHJhY2UKK1suLi5dCityb2xhbmQ6IHRoZXJlIGlzIGEgIjMy LWJpdC1mbGF2b3JlZCB0YXNrIiwgYnV0IGl0J3Mgbm90IHJlYWxseSB0cnVlIHRoYXQgaXQKK2hh cyAzMi1iaXQgcmVnaXN0ZXJzLiAgdGhlcmUgaXMgbm8gMzItYml0LW9ubHkgdXNlcmxhbmQgY29u ZGl0aW9uLiAgYW55IHRhc2sKK2NhbiBhbHdheXMgbGptcCB0byB0aGUgNjQtYml0IGNvZGUgc2Vn bWVudCBhbmQgcnVuIDY0LWJpdCBpbnNucyBpbmNsdWRpbmcKK2EgNjQtYml0IHN5c2NhbGwKK3Jv bGFuZDogc28gYSA2NC1iaXQgZGVidWdnZXIgc2hvdWxkIHNlZSBhbmQgYmUgYWJsZSB0byBmaWRk bGUgdGhlIGZ1bGwKK3JlZ2lzdGVycy4gIGl0IGNhbiBldmVuIGNoYW5nZSBjcyB2aWEgcHRyYWNl IHRvIGZvcmNlIHRoZSBpbmZlcmlvciBpbnRvCitydW5uaW5nIDMyIG9yIDY0IGJpdCBjb2RlLgor CisKK1NhdmluZyB3aG9sZSA2NGJpdHMgZm9yIGkzODYgdGFyZ2V0cyBvbiB4ODZfNjQgaG9zdHMg ZG9lcyBub3QgbXVjaCBtYXRjaCB0aGUKK0dEQiBhcmNoaXRlY3R1cmUgYXMgYHN0cnVjdCB0eXBl JyBmb3IgdGhlc2UgcmVnaXN0ZXJzIHN0aWxsIHNob3VsZCBiZSAzMmJpdAorZXRjLiAgIFRoZXJl Zm9yZSBwcm92aWRlZCBqdXN0IHRoaXMgZXhjZXB0aW9uLgorCitUaGUgcHJvYmxlbSBpcyByZXBy b2R1Y2libGUgb25seSBpZiBvbmUgZG9lcyBhbiBpbmZlcmlvciBjYWxsIGR1cmluZyB0aGUKK2lu dGVycnVwdGlvbiB0byBkbyBmdWxsIGluZmVyaW9yIHNhdmUvcmVzdG9yZSBmcm9tIEdEQiByZWdj YWNoZS4KKworUmVncmVzc2lvbiB0ZXN0ZWQgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZl ZG9yYTEyLWxpbnV4LWdudS4KKworCitUaGFua3MsCitKYW4KKworCitnZGIvCisyMDA5LTExLTI5 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGFtZDY0 LW5hdC5jIChhbWQ2NF9jb2xsZWN0X25hdGl2ZV9ncmVnc2V0KTogRG8gbm90IHByZS1jbGVhciAl ZWF4LgorCVNpZ24gZXh0ZW5kIGl0IGFmdGVyd2FyZHMuCisKKy0tLSBhL2dkYi9hbWQ2NC1uYXQu YworKysrIGIvZ2RiL2FtZDY0LW5hdC5jCitAQCAtMTMxLDkgKzEzMSw5IEBAIGFtZDY0X2NvbGxl Y3RfbmF0aXZlX2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgICAg IHsKKyAgICAgICBudW1fcmVncyA9IGFtZDY0X25hdGl2ZV9ncmVnc2V0MzJfbnVtX3JlZ3M7Cisg CistICAgICAgLyogTWFrZSBzdXJlICVlYXgsICVlYngsICVlY3gsICVlZHgsICVlc2ksICVlZGks ICVlYnAsICVlc3AgYW5kCisrICAgICAgLyogTWFrZSBzdXJlICVlYngsICVlY3gsICVlZHgsICVl c2ksICVlZGksICVlYnAsICVlc3AgYW5kCisgICAgICAgICAgJWVpcCBnZXQgemVyby1leHRlbmRl ZCB0byA2NCBiaXRzLiAgKi8KKy0gICAgICBmb3IgKGkgPSAwOyBpIDw9IEkzODZfRUlQX1JFR05V TTsgaSsrKQorKyAgICAgIGZvciAoaSA9IEkzODZfRUNYX1JFR05VTTsgaSA8PSBJMzg2X0VJUF9S RUdOVU07IGkrKykKKyAJeworIAkgIGlmIChyZWdudW0gPT0gLTEgfHwgcmVnbnVtID09IGkpCisg CSAgICBtZW1zZXQgKHJlZ3MgKyBhbWQ2NF9uYXRpdmVfZ3JlZ3NldF9yZWdfb2Zmc2V0IChnZGJh cmNoLCBpKSwgMCwgOCk7CitAQCAtMTU5LDQgKzE1OSwyMCBAQCBhbWQ2NF9jb2xsZWN0X25hdGl2 ZV9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorIAkgICAgcmVnY2Fj aGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpLCByZWdzICsgb2Zmc2V0KTsKKyAJfQorICAgICB9 CisrCisrICBpZiAoZ2RiYXJjaF9wdHJfYml0IChnZGJhcmNoKSA9PSAzMikKKysgICAgeworKyAg ICAgIC8qIFNpZ24tZXh0ZW5kICVlYXggYXMgZHVyaW5nIHJldHVybiBmcm9tIGEgc3lzY2FsbCBp dCBpcyBiZWluZyBjaGVja2VkCisrCSBmb3IgLUVSRVNUQVJUKiB2YWx1ZXMgLTUxMiBiZWluZyBh Ym92ZSAweGZmZmZmZmZmZmZmZmZlMDA7IHRlc3RlZCBieQorKwkgaW50ZXJydXB0LmV4cC4gICov CisrCisrICAgICAgaW50IGkgPSBJMzg2X0VBWF9SRUdOVU07CisrCisrICAgICAgaWYgKHJlZ251 bSA9PSAtMSB8fCByZWdudW0gPT0gaSkKKysJeworKwkgIHZvaWQgKnB0ciA9IHJlZ3MgKyBhbWQ2 NF9uYXRpdmVfZ3JlZ3NldF9yZWdfb2Zmc2V0IChnZGJhcmNoLCBpKTsKKysKKysJICAqKGludDY0 X3QgKikgcHRyID0gKihpbnQzMl90ICopIHB0cjsKKysJfQorKyAgICB9CisgfQorCgpkaWZmIC0t Z2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCBkNzMxZDljLi40ZTUxM2U5IDEwMDY0NAot LS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtNCwyMSArNCw0NSBAQAogIyAtLXdpdGgg dXBzdHJlYW06IE5vIEZlZG9yYSBzcGVjaWZpYyBwYXRjaGVzIGdldCBhcHBsaWVkLgogIyAtLXdp dGhvdXQgcHl0aG9uOiBObyBweXRob24gc3VwcG9ydC4KIAorIyBSSEVMLTUgd2FzIHRoZSBsYXN0 IG5vdCBwcm92aWRpbmcgYC9ldGMvcnBtL21hY3Jvcy5kaXN0Jy4KKyVpZiAwJXshP2Rpc3Q6MX0K KyVkZWZpbmUgcmhlbCA1CislZGVmaW5lIGRpc3QgLmVsNQorJWRlZmluZSBlbDUgMQorJWVuZGlm CisjIFJIRUwtNSBCcmV3IGRvZXMgbm90IHNldCAle2VsNX0uCislaWYgIiV7ZGlzdH0iID09ICIu ZWw1IgorIyBSSEVMLTUgcHBjKiBweXRob24gLnNvIGZpbGVzIGFyZSBzaGlwcGVkIG9ubHkgYXMg cHBjIGJ1dCBnZGIgaXMgcHBjNjQgdGhlcmUuCisjIEJyZXcgYnVpbGRzIGl0IGZpbmUgYXMgaXRz IHBwYzY0IGJ1aWxkcm9vdCBoYXMgZnVsbCBwcGM2NCBwYWNrYWdlIHNldC4KKyMgTWFrZSB0aGlz IGNvbmRpdGlvbmFsIHNvIHRoYXQgQnJldy1idWlsdCBHREIgaGFzIG5vIHB5dGhvbiBvbiBhbnkg YXJjaCBidXQKKyMgR0RCIHJlYnVpbHQgb24gbmF0aXZlIG5vbi1wcGM2NCBob3N0IGRvZXMgaGF2 ZSBpdC4KKyVpZiAwJXshP2VsNToxfQorJWRlZmluZSBfd2l0aG91dF9weXRob24gMQorJWVsc2UK KyVpZmFyY2ggcHBjNjQKKyVkZWZpbmUgX3dpdGhvdXRfcHl0aG9uIDEKKyVlbmRpZgorJWVuZGlm CislZGVmaW5lIGVsNSAxCislZW5kaWYKKwogU3VtbWFyeTogQSBHTlUgc291cmNlLWxldmVsIGRl YnVnZ2VyIGZvciBDLCBDKyssIEphdmEgYW5kIG90aGVyIGxhbmd1YWdlcwogTmFtZTogZ2RiJXs/ X3dpdGhfZGVidWc6LWRlYnVnfQogCiAjIFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92 ZXJzaW9uLmluLgotIyBOT1RFOiB0aGUgRlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5N IGZvciBvZmZpY2lhbCByZWxlYXNlcywgbGlrZSA2LjMgCisjIE5PVEU6IHRoZSBGU0YgZ2RiIHZl cnNpb25zIGFyZSBudW1iZXJlZCBOLk0gZm9yIG9mZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMwog IyBhbmQsIHNpbmNlIEphbnVhcnkgMjAwNSwgWC5ZLlouZGF0ZSBmb3IgZGFpbHkgc25hcHNob3Rz LCBsaWtlIDYuMy41MC4yMDA1MDExMiAjIChkYWlseSBzbmFwc2hvdCBmcm9tIG1haWxpbmUpLCBv ciA2LjMuMC4yMDA0MDExMiAoaGVhZCBvZiB0aGUgcmVsZWFzZSBicmFuY2gpLgotVmVyc2lvbjog Ni44LjkxLjIwMDkwOTMwCitWZXJzaW9uOiA3LjAuMQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBj b250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBz dHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVu Y2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDElez9fd2l0aF91cHN0 cmVhbToudXBzdHJlYW19JXs/ZGlzdH0KK1JlbGVhc2U6IDI1JXs/X3dpdGhfdXBzdHJlYW06LnVw c3RyZWFtfSV7ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVi dWdnZXJzCi1Tb3VyY2U6IGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvc25hcHNob3RzL2Jy YW5jaC9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCisjIGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9n ZGIvc25hcHNob3RzL2JyYW5jaC9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCisjIGZ0cDovL3NvdXJj ZXdhcmUub3JnL3B1Yi9nZGIvcmVsZWFzZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgorU291cmNl OiBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3JlbGVhc2VzL2dkYi0le3ZlcnNpb259LnRh ci5iejIKIEJ1aWxkcm9vdDogJShta3RlbXAgLXVkICV7X3RtcHBhdGh9LyV7bmFtZX0tJXt2ZXJz aW9ufS0le3JlbGVhc2V9LVhYWFhYWCkKIFVSTDogaHR0cDovL2dudS5vcmcvc29mdHdhcmUvZ2Ri LwogCkBAIC0zOSwxMSArNjMsMTMgQEAgVVJMOiBodHRwOi8vZ251Lm9yZy9zb2Z0d2FyZS9nZGIv CiBPYnNvbGV0ZXM6IGdkYjY0IDwgNS4zLjkxCiAlZW5kaWYKIAorJWlmIDAleyE/ZWw1OjF9CiAl aWYgMCV7IT9fd2l0aF91cHN0cmVhbToxfQogIyBUaGUgbGFzdCBSYXdoaWRlIHJlbGVhc2Ugd2Fz IChubyBkaXN0IHRhZykgcHN0YWNrLTEuMi03LjIuMgogT2Jzb2xldGVzOiBwc3RhY2sgPCAxLjIt Ny4yLjIuMQogUHJvdmlkZXM6IHBzdGFjayA9IDEuMi03LjIuMi4xCi0lZW5kaWYJIyAwJXshP193 aXRoX3Vwc3RyZWFtOjF9CislZW5kaWYgIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CislZW5kaWYg IyAwJXshP2VsNToxfQogCiAjIEdEQiBwYXRjaGVzIGhhdmUgdGhlIGZvcm1hdCBgZ2RiLTx2ZXJz aW9uPi1iejxyZWQtaGF0LWJ6LSM+LTxkZXNjPi5wYXRjaCcuCiAjIFRoZXkgc2hvdWxkIGJlIGNy ZWF0ZWQgdXNpbmcgcGF0Y2ggbGV2ZWwgMTogZGlmZiAtdXAgLi9nZGIgKG9yIGdkYi02LjMvZ2Ri KS4KQEAgLTU2LDcgKzgyLDcgQEAgU291cmNlMzogZ2RiLWdzdGFjay5tYW4KIAogIyBsaWJzdGRj KysgcHJldHR5IHByaW50ZXJzIGZyb20gR0NDIFNWTiBIRUFEICg0LjUgZXhwZXJpbWVudGFsKS4K ICVkZWZpbmUgbGlic3RkY3h4cHl0aG9uIGxpYnN0ZGMrKy12My1weXRob24tcjE1MTc5OAotU291 cmNlNDogJXtsaWJzdGRjeHhweXRob259LnRhci54egorU291cmNlNDogJXtsaWJzdGRjeHhweXRo b259LnRhci5iejIKIAogIyBXb3JrIGFyb3VuZCBvdXQtb2YtZGF0ZSBkZWphZ251IHRoYXQgZG9l cyBub3QgaGF2ZSBLRkFJTAogUGF0Y2gxOiBnZGItNi4zLXJoLWR1bW15a2ZhaWwtMjAwNDEyMDIu cGF0Y2gKQEAgLTkyLDE0ICsxMTgsMTMgQEAgUGF0Y2gxMTg6IGdkYi02LjMtZ3N0YWNrLTIwMDUw NDExLnBhdGNoCiAKICMgVlNZU0NBTEwgYW5kIFBJRQogUGF0Y2gxMjI6IGdkYi02LjMtdGVzdC1w aWUtMjAwNTAxMDcucGF0Y2gKLVBhdGNoMTI0OiBnZGItNi4zLXBpZS0yMDA1MDExMC5wYXRjaAor UGF0Y2gxMjQ6IGdkYi1hcmNoZXItcGllLnBhdGNoCitQYXRjaDM4OTogZ2RiLWFyY2hlci1waWUt YWRkb25zLnBhdGNoCitQYXRjaDM5NDogZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJs ZWQucGF0Y2gKIAogIyBHZXQgc2VsZnRlc3Qgd29ya2luZyB3aXRoIHNlcC1kZWJ1Zy1pbmZvCiBQ YXRjaDEyNTogZ2RiLTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2gKIAotIyBGaXggZm9yIG5v bi10aHJlYWRlZCB3YXRjaHBvaW50cy4KLVBhdGNoMTI4OiBnZGItNi4zLW5vbnRocmVhZGVkLXdw LTIwMDUwMTE3LnBhdGNoCi0KICMgVGVzdCBzdXBwb3J0IG9mIG11bHRpcGxlIGRlc3RydWN0b3Jz IGp1c3QgbGlrZSBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMKIFBhdGNoMTMzOiBnZGItNi4zLXRlc3Qt ZHRvcmZpeC0yMDA1MDEyMS5wYXRjaAogCkBAIC0xMjUsMTAgKzE1MCw2IEBAIFBhdGNoMTQ1OiBn ZGItNi4zLXRocmVhZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaAogIyBGaXggcHJpbnRp bmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMKIFBhdGNoMTQ4OiBnZGItNi4zLWluaGVyaXRhbmNlLTIw MDUwMzI0LnBhdGNoCiAKLSMgUHJpbnQgYSB3YXJuaW5nIHdoZW4gdGhlIHNlcGFyYXRlIGRlYnVn IGluZm8ncyBDUkMgZG9lc24ndCBtYXRjaC4KLVBhdGNoMTUwOiBnZGItNi4zLXRlc3Qtc2VwY3Jj LTIwMDUwNDAyLnBhdGNoCi1QYXRjaDE1MTogZ2RiLTYuMy1zZXBjcmMtMjAwNTA0MDIucGF0Y2gK LQogIyBEbyBub3QgaXNzdWUgd2FybmluZyBtZXNzYWdlIGFib3V0IGZpcnN0IHBhZ2Ugb2Ygc3Rv cmFnZSBmb3IgaWE2NCBnY29yZQogUGF0Y2gxNTM6IGdkYi02LjMtaWE2NC1nY29yZS1wYWdlMC0y MDA1MDQyMS5wYXRjaAogCkBAIC0yMTksOCArMjQwLDggQEAgUGF0Y2gyMjk6IGdkYi02LjMtYnox NDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoCiAjIFRlc3RjYXNlIGZvciBleGVjKCkgZnJv bSB0aHJlYWRlZCBwcm9ncmFtIChCWiAyMDI2ODkpLgogUGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2 ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCi0jIEJhY2twb3J0ZWQgcG9zdCBnZGIt Ni44LjUwLjIwMDkwOTkxIHNuYXBzaG90IGZpeHVwcy4KLSNQYXRjaDIzMjogZ2RiLTYuOC41MC4y MDA5MDkyMS11cHN0cmVhbS5wYXRjaAorIyBCYWNrcG9ydGVkIHBvc3QgZ2RiLTcuMCBmaXh1cHMu CitQYXRjaDIzMjogZ2RiLTcuMC11cHN0cmVhbS5wYXRjaAogCiAjIFRlc3RjYXNlIGZvciBQUEMg UG93ZXI2L0RGUCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJaIDIzMDAwMCkuCiBQYXRjaDIz NDogZ2RiLTYuNi1iejIzMDAwMC1wb3dlcjYtZGlzYXNzZW1ibHktdGVzdC5wYXRjaApAQCAtMzAx LDggKzMyMiw4IEBAIFBhdGNoMzA5OiBnZGItNi4zLW1hcHBpbmctemVyby1pbm9kZS10ZXN0LnBh dGNoCiAjIFRlc3QgYSBjcmFzaCBvbiBgZm9jdXMgY21kJywgYGZvY3VzIHByZXYnIGNvbW1hbmRz LgogUGF0Y2gzMTE6IGdkYi02LjMtZm9jdXMtY21kLXByZXYtdGVzdC5wYXRjaAogCi0jIFRlc3Qg Y3Jhc2ggb24gYSBzdyB3YXRjaHBvaW50IGNvbmRpdGlvbiBnZXR0aW5nIG91dCBvZiB0aGUgc2Nv cGUuCi1QYXRjaDMxNDogZ2RiLTYuMy13YXRjaHBvaW50LWNvbmQtZ29uZS10ZXN0LnBhdGNoCisj IEZpeCBlcnJvciBvbiBhIHN3IHdhdGNocG9pbnQgYWN0aXZlIGF0IGZ1bmN0aW9uIGVwaWxvZ3Vl IChoaXQgb24gczM5MHgpLgorUGF0Y2gzMTQ6IGdkYi13YXRjaHBvaW50LWNvbmQtZ29uZS5wYXRj aAogCiAjIFRlc3QgdmFyaW91cyBmb3JtcyBvZiB0aHJlYWRzIHRyYWNraW5nIGFjcm9zcyBleGVj KCkgKEJaIDQ0Mjc2NSkuCiBQYXRjaDMxNTogZ2RiLTYuOC1iejQ0Mjc2NS10aHJlYWRlZC1leGVj LXRlc3QucGF0Y2gKQEAgLTM2Nyw1NCArMzg4LDE0NCBAQCBQYXRjaDM3NjogbGlic3RkYysrLXYz LXB5dGhvbi1jb21tb24tcHJlZml4LnBhdGNoCiAjIE5ldyB0ZXN0IGZvciBzdGVwLXJlc3VtZSBi cmVha3BvaW50IHBsYWNlZCBpbiBtdWx0aXBsZSB0aHJlYWRzIGF0IG9uY2UuCiBQYXRjaDM4MTog Z2RiLXNpbXVsdGFuZW91cy1zdGVwLXJlc3VtZS1icmVha3BvaW50LXRlc3QucGF0Y2gKIAotQnVp bGRSZXF1aXJlczogbmN1cnNlcy1kZXZlbCB0ZXhpbmZvIGdldHRleHQgZmxleCBiaXNvbiBleHBh dC1kZXZlbAotUmVxdWlyZXM6IHJlYWRsaW5lCi1CdWlsZFJlcXVpcmVzOiByZWFkbGluZS1kZXZl bAorIyBGaXggR05VL0xpbnV4IGNvcmUgb3BlbjogQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9h ZCBtYXA6IElucHV0L291dHB1dCBlcnJvci4KK1BhdGNoMzgyOiBnZGItY29yZS1vcGVuLXZkc28t d2FybmluZy5wYXRjaAorCisjIFN1cHBvcnQgbXVsdGlwbGUgZGlyZWN0b3JpZXMgZm9yIGBzZXQg ZGVidWctZmlsZS1kaXJlY3RvcnknIChCWiA1Mjg2NjgpLgorUGF0Y2gzODM6IGdkYi1iejUyODY2 OC1zeW1maWxlLXNlcGNyYy5wYXRjaAorUGF0Y2gzODQ6IGdkYi1iejUyODY2OC1zeW1maWxlLWNs ZWFudXAucGF0Y2gKK1BhdGNoMzg1OiBnZGItYno1Mjg2Njgtc3ltZmlsZS1tdWx0aS5wYXRjaAor CisjIFN1cHBvcnQgR05VIElGVU5DcyAtIGluZGlyZWN0IGZ1bmN0aW9ucyAoQlogNTM5NTkwKS4K K1BhdGNoMzg3OiBnZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCisKKyMgRml4IGJwIGNvbmRp dGlvbmFscyBbYnBfbG9jYXRpb24tYWNjZWxdIHJlZ3Jlc3Npb24gKEJaIDUzODYyNikuCitQYXRj aDM4ODogZ2RiLWJ6NTM4NjI2LWJwX2xvY2F0aW9uLWFjY2VsLWJwLWNvbmQucGF0Y2gKKworIyBG aXggY2FsbGJhY2stbW9kZSByZWFkbGluZS02LjAgcmVncmVzc2lvbiBmb3IgQ1RSTC1DLgorUGF0 Y2gzOTA6IGdkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoCisKKyMgRml4IHN5c2NhbGwgcmVz dGFydHMgZm9yIGFtZDY0LT5pMzg2IGJpYXJjaC4KK1BhdGNoMzkxOiBnZGIteDg2XzY0LWkzODYt c3lzY2FsbC1yZXN0YXJ0LnBhdGNoCisKKyMgRml4IHN0ZXBwaW5nIHdpdGggT01QIHBhcmFsbGVs IEZvcnRyYW4gc2VjdGlvbnMgKEJaIDUzMzE3NikuCitQYXRjaDM5MjogZ2RiLWJ6NTMzMTc2LWZv cnRyYW4tb21wLXN0ZXAucGF0Y2gKKworIyBVc2UgZ2ZvcnRyYW40NCB3aGVuIHJ1bm5pbmcgdGhl IHRlc3RzdWl0ZSBvbiBSSEVMLTUuCitQYXRjaDM5MzogZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCisK KyMgRGlzYWJsZSB3YXJuaW5nIG1lc3NhZ2VzIG5ldyBmb3IgZ2RiLTYuOCsgZm9yIFJIRUwtNSBi YWNrd2FyZCBjb21wYXRpYmlsaXR5LgorIyBXb3JrYXJvdW5kIFJIRUwtNSBrZXJuZWxzIGZvciBk ZXRhY2hpbmcgU0lHU1RPUHBlZCBwcm9jZXNzZXMgKEJaIDQ5ODU5NSkuCitQYXRjaDMzNTogZ2Ri LXJoZWw1LWNvbXBhdC5wYXRjaAorCisjIEZpeCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgg RysrIDQuMSBuYW1lc3BhY2VzICI6OiIuCitQYXRjaDM5NTogZ2RiLWVtcHR5LW5hbWVzcGFjZS5w YXRjaAorCisjIEZpeCByZWdyZXNzaW9uIG9uIHJlLXNldHRpbmcgdGhlIHNpbmdsZSBwcGMgd2F0 Y2hwb2ludCBzbG90LgorUGF0Y2gzOTY6IGdkYi1wcGMtaHctd2F0Y2hwb2ludC10d2ljZS5wYXRj aAorCisjIEZpeCByZWdyZXNzaW9uIGJ5IHB5dGhvbiBvbiBpYTY0IGR1ZSB0byBzdGFsZSBjdXJy ZW50IGZyYW1lLgorUGF0Y2gzOTc6IGdkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBhdGNo CisKKyMgdGVzdHN1aXRlOiBGaXggZmFsc2UgTUkgInVua25vd24gb3V0cHV0IGFmdGVyIHJ1bm5p bmciIHJlZ3Jlc3Npb24uCitQYXRjaDM5ODogZ2RiLXRlc3RzdWl0ZS11bmtub3duLW91dHB1dC5w YXRjaAorCisjIEZpeCByZWdyZXNzaW9uIG9mIGdkYi03LjAuMSBub3QgcHJlc2VydmluZyB0eXBl ZGVmIG9mIGEgZmllbGQuCitQYXRjaDM5OTogZ2RiLWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0 Y2gKKworIyBGaXggcmVsYXRlZF9icmVha3BvaW50IHN0YWxlIHJlZiBjcmFzaC4KK1BhdGNoNDAw OiBnZGItc3RhbGUtcmVsYXRlZF9icmVha3BvaW50LnBhdGNoCisKKyMgRml4IGNyYXNoIHJlYWRp bmcgYnJva2VuIHN0YWJzIChpdDM3NzY3MSkuCitQYXRjaDQwMTogZ2RiLXN0YWJzLXJlYWRfYXJn cy5wYXRjaAorCitCdWlsZFJlcXVpcmVzOiBuY3Vyc2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBn ZXR0ZXh0IGZsZXggYmlzb24gZXhwYXQtZGV2ZWwlez9faXNhfQorUmVxdWlyZXM6IHJlYWRsaW5l JXs/X2lzYX0KK0J1aWxkUmVxdWlyZXM6IHJlYWRsaW5lLWRldmVsJXs/X2lzYX0KKyVpZiAwJXsh P2VsNToxfQogIyBkbG9wZW4oKSBubyBsb25nZXIgbWFrZXMgcnBtLWxpYnMgYSBtYW5kYXRvcnkg ZGVwZW5kZW5jeS4KLSNSZXF1aXJlczogcnBtLWxpYnMKLUJ1aWxkUmVxdWlyZXM6IHJwbS1kZXZl bAorI1JlcXVpcmVzOiBycG0tbGlicyV7P19pc2F9CitCdWlsZFJlcXVpcmVzOiBycG0tZGV2ZWwl ez9faXNhfQorJWVuZGlmICMgMCV7IT9lbDU6MX0KK1JlcXVpcmVzOiB6bGliJXs/X2lzYX0KK0J1 aWxkUmVxdWlyZXM6IHpsaWItZGV2ZWwlez9faXNhfQogJWlmIDAleyE/X3dpdGhvdXRfcHl0aG9u OjF9Ci1SZXF1aXJlczogcHl0aG9uLWxpYnMKLUJ1aWxkUmVxdWlyZXM6IHB5dGhvbi1kZXZlbAot IyBUZW1wb3JhcmlseSBiZWZvcmUgaXQgZ2V0cyBtb3ZlZCB0byBsaWJzdGRjKysucnBtCi1CdWls ZFJlcXVpcmVzOiBsaWJzdGRjKysKLSVlbmRpZgkjIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9Cisl aWYgMCV7IT9lbDU6MX0KK1JlcXVpcmVzOiBweXRob24tbGlicyV7P19pc2F9CislZWxzZQorUmVx dWlyZXM6IHB5dGhvbiV7P19pc2F9CislZW5kaWYKK0J1aWxkUmVxdWlyZXM6IHB5dGhvbi1kZXZl bCV7P19pc2F9CisjIFRlbXBvcmFyaWx5IGJlZm9yZSBweXRob24gZmlsZXMgZ2V0IG1vdmVkIHRv IGxpYnN0ZGMrKy5ycG0KKyMgbGlic3RkYysrJXtiaXRzX290aGVyfSBpcyBub3QgcHJlc2VudCBp biBLb2ppLCB0aGUgLnNwZWMgc2NyaXB0IGdlbmVyYXRpbmcKKyMgZ2RiL3B5dGhvbi9saWJzdGRj eHgvIGFsc28gZG9lcyBub3QgZGVwZW5kIG9uIHRoZSAle2JpdHNfb3RoZXJ9IGZpbGVzLgorQnVp bGRSZXF1aXJlczogbGlic3RkYysrJXs/X2lzYX0KKyVlbmRpZiAjIDAleyE/X3dpdGhvdXRfcHl0 aG9uOjF9CiAKICVpZiAwJXs/X3dpdGhfdGVzdHN1aXRlOjF9CisKKyMgRW5zdXJlIHRoZSBkZXZl bCBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZCBmb3IgYm90aCBtdWx0aWxpYiBhcmNoZXMuCislZGVm aW5lIGJpdHNfbG9jYWwgJXs/X2lzYX0KKyVkZWZpbmUgYml0c19vdGhlciAlez9faXNhfQorJWlm YXJjaCBzMzkweAorJWRlZmluZSBiaXRzX290aGVyICgle19faXNhX25hbWV9LTMxKQorJWVsc2Ug IyFzMzkweAorJWlmYXJjaCBwcGMKKyVkZWZpbmUgYml0c19vdGhlciAoJXtfX2lzYV9uYW1lfS02 NCkKKyVlbHNlICMhcHBjCislaWZhcmNoIHNwYXJjNjQgcHBjNjQgczM5MHggeDg2XzY0CislZGVm aW5lIGJpdHNfb3RoZXIgKCV7X19pc2FfbmFtZX0tMzIpCislZW5kaWYgI3NwYXJjNjQgcHBjNjQg czM5MHggeDg2XzY0CislZW5kaWYgIyFwcGMKKyVlbmRpZiAjIXMzOTB4CisKIEJ1aWxkUmVxdWly ZXM6IHNoYXJ1dGlscyBkZWphZ251CiAjIGdjYy1vYmpjKysgaXMgbm90IGNvdmVyZWQgYnkgdGhl IEdEQiB0ZXN0c3VpdGUuCi1CdWlsZFJlcXVpcmVzOiBnY2MgZ2NjLWMrKyBnY2MtZ2ZvcnRyYW4g Z2NjLWphdmEgZ2NjLW9iamMgZnBjIGdsaWJjLXN0YXRpYwotIyBFbnN1cmUgdGhlIGRldmVsIGxp YnJhcmllcyBhcmUgaW5zdGFsbGVkIGZvciBib3RoIG11bHRpbGliIGFyY2hlcy4KLSVkZWZpbmUg bXVsdGlsaWJfNjRfYXJjaHMgc3BhcmM2NCBwcGM2NCBzMzkweCB4ODZfNjQKLSMgQ29waWVkIGZy b20gZ2NjLTQuMS4yLTMyCitCdWlsZFJlcXVpcmVzOiBnY2MgZ2NjLWMrKyBnY2MtZ2ZvcnRyYW4g Z2NjLWphdmEgZ2NjLW9iamMKKyMgQ29waWVkIGZyb20gcHJlbGluay0wLjQuMi0zLmZjMTMuCisl aWZhcmNoICV7aXg4Nn0gYWxwaGEgc3BhcmMgc3BhcmN2OSBzcGFyYzY0IHMzOTAgczM5MHggeDg2 XzY0IHBwYyBwcGM2NAorIyBQcmVsaW5rIGlzIGJyb2tlbiBvbiBzcGFyY3Y5L3NwYXJjNjQuCisl aWZuYXJjaCBzcGFyY3Y5IHNwYXJjNjQKK0J1aWxkUmVxdWlyZXM6IHByZWxpbmsKKyVlbmRpZgor JWVuZGlmCislaWYgMCV7IT9yaGVsOjF9CitCdWlsZFJlcXVpcmVzOiBmcGMKKyVlbmRpZgorJWlm IDAlez9lbDU6MX0KK0J1aWxkUmVxdWlyZXM6IGdjYzQ0IGdjYzQ0LWdmb3J0cmFuCislZW5kaWYK KyMgQ29waWVkIGZyb20gZ2NjLTQuMS4yLTMyLgogJWlmYXJjaCAle2l4ODZ9IHg4Nl82NCBpYTY0 IHBwYyBhbHBoYQogQnVpbGRSZXF1aXJlczogZ2NjLWduYXQKLSVpZmFyY2ggJXttdWx0aWxpYl82 NF9hcmNoc30gcHBjCi1CdWlsZFJlcXVpcmVzOiAle19leGVjX3ByZWZpeH0vbGliNjQvbGliZ25h dC00LjQuc28gJXtfZXhlY19wcmVmaXh9L2xpYi9saWJnbmF0LTQuNC5zbwotJWVuZGlmCitCdWls ZFJlcXVpcmVzOiBsaWJnbmF0JXtiaXRzX2xvY2FsfSBsaWJnbmF0JXtiaXRzX290aGVyfQogJWVu ZGlmCi0laWZhcmNoICV7bXVsdGlsaWJfNjRfYXJjaHN9IHNwYXJjIHNwYXJjdjkgcHBjCi1CdWls ZFJlcXVpcmVzOiAvbGliL2xpYmMuc28uNiAle19leGVjX3ByZWZpeH0vbGliL2xpYmMuc28gL2xp YjY0L2xpYmMuc28uNiAle19leGVjX3ByZWZpeH0vbGliNjQvbGliYy5zbwotQnVpbGRSZXF1aXJl czogL2xpYi9saWJnY2Nfcy5zby4xIC9saWI2NC9saWJnY2Nfcy5zby4xCi1CdWlsZFJlcXVpcmVz OiAle19leGVjX3ByZWZpeH0vbGliL2xpYnN0ZGMrKy5zby42ICV7X2V4ZWNfcHJlZml4fS9saWI2 NC9saWJzdGRjKysuc28uNgotQnVpbGRSZXF1aXJlczogJXtfZXhlY19wcmVmaXh9L2xpYjY0L2xp Ymdjai5zby4xMCAle19leGVjX3ByZWZpeH0vbGliL2xpYmdjai5zby4xMAorQnVpbGRSZXF1aXJl czogZ2xpYmMtZGV2ZWwle2JpdHNfbG9jYWx9IGdsaWJjLWRldmVsJXtiaXRzX290aGVyfQorQnVp bGRSZXF1aXJlczogbGliZ2NjJXtiaXRzX2xvY2FsfSBsaWJnY2Mle2JpdHNfb3RoZXJ9CisjIGxp YnN0ZGMrKy1kZXZlbCBvZiBtYXRjaGluZyBiaXRzIGlzIHJlcXVpcmVkIG9ubHkgZm9yIGcrKyAt c3RhdGljLgorQnVpbGRSZXF1aXJlczogbGlic3RkYysrJXtiaXRzX2xvY2FsfSBsaWJzdGRjKysl e2JpdHNfb3RoZXJ9CitCdWlsZFJlcXVpcmVzOiBsaWJnY2ole2JpdHNfbG9jYWx9IGxpYmdjaiV7 Yml0c19vdGhlcn0KK0J1aWxkUmVxdWlyZXM6IGdsaWJjLXN0YXRpYyV7Yml0c19sb2NhbH0KICMg bXVsdGlsaWIgZ2xpYmMtc3RhdGljIGlzIG9wZW4gQnVnIDQ4ODQ3MjoKLSNCdWlsZFJlcXVpcmVz OiAle19leGVjX3ByZWZpeH0vbGliNjQvbGliYy5hICV7X2V4ZWNfcHJlZml4fS9saWIvbGliYy5h Ci0jIGZvciBnY2MtamF2YToKLUJ1aWxkUmVxdWlyZXM6ICV7X2V4ZWNfcHJlZml4fS9saWI2NC9s aWJ6LnNvICV7X2V4ZWNfcHJlZml4fS9saWIvbGliei5zbwotJWVuZGlmCislaWYgMCV7P2VsNTox fQorQnVpbGRSZXF1aXJlczogZ2xpYmMtc3RhdGljJXtiaXRzX290aGVyfQogJWVuZGlmCisjIGZv ciBnY2MtamF2YSBsaW5rYWdlOgorQnVpbGRSZXF1aXJlczogemxpYi1kZXZlbCV7Yml0c19sb2Nh bH0gemxpYi1kZXZlbCV7Yml0c19vdGhlcn0KK0J1aWxkUmVxdWlyZXM6IHZhbGdyaW5kJXtiaXRz X2xvY2FsfSB2YWxncmluZCV7Yml0c19vdGhlcn0KKworJWVuZGlmICMgMCV7P193aXRoX3Rlc3Rz dWl0ZToxfQogCiAlaWZhcmNoIGlhNjQKKyVpZiAwJXshP2VsNToxfQogQnVpbGRSZXF1aXJlczog bGlidW53aW5kLWRldmVsID49IDAuOTktMC4xLmZyeXNrMjAwNzA0MDVjdnMKIFJlcXVpcmVzOiBs aWJ1bndpbmQgPj0gMC45OS0wLjEuZnJ5c2syMDA3MDQwNWN2cwogJWVsc2UKLSMgUHJlbGluayBp cyBicm9rZW4gb24gc3BhcmN2OS9zcGFyYzY0Ci0laWZuYXJjaCBzcGFyY3Y5IHNwYXJjNjQKLUJ1 aWxkUmVxdWlyZXM6IHByZWxpbmsKK0J1aWxkUmVxdWlyZXM6IGxpYnVud2luZCA+PSAwLjk2LTMK K1JlcXVpcmVzOiBsaWJ1bndpbmQgPj0gMC45Ni0zCiAlZW5kaWYKICVlbmRpZgotIAorCiBSZXF1 aXJlcyhwb3N0KTogL3NiaW4vaW5zdGFsbC1pbmZvCiBSZXF1aXJlcyhwcmV1bik6IC9zYmluL2lu c3RhbGwtaW5mbwogCkBAIC00MjMsNiArNTM0LDcgQEAgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLCBh bGxvd3MgeW91IHRvIGRlYnVnIHByb2dyYW1zIHdyaXR0ZW4gaW4gQywgQysrLAogSmF2YSwgYW5k IG90aGVyIGxhbmd1YWdlcywgYnkgZXhlY3V0aW5nIHRoZW0gaW4gYSBjb250cm9sbGVkIGZhc2hp b24KIGFuZCBwcmludGluZyB0aGVpciBkYXRhLgogCislaWYgMCV7IT9lbDU6MX0KICVwYWNrYWdl IGdkYnNlcnZlcgogU3VtbWFyeTogQSBzdGFuZGFsb25lIHNlcnZlciBmb3IgR0RCICh0aGUgR05V IHNvdXJjZS1sZXZlbCBkZWJ1Z2dlcikKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAg LTQzMyw2ICs1NDUsNyBAQCBKYXZhLCBhbmQgb3RoZXIgbGFuZ3VhZ2VzLCBieSBleGVjdXRpbmcg dGhlbSBpbiBhIGNvbnRyb2xsZWQgZmFzaGlvbgogYW5kIHByaW50aW5nIHRoZWlyIGRhdGEuCiAK IFRoaXMgcGFja2FnZSBwcm92aWRlcyBhIHByb2dyYW0gdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBH REIgb24gYSBkaWZmZXJlbnQgbWFjaGluZSB0aGFuIHRoZSBvbmUgd2hpY2ggaXMgcnVubmluZyB0 aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KKyVlbmRpZiAjIDAleyE/ZWw1OjF9CiAKICVwcmVw CiAKQEAgLTQ0Miw3ICs1NTUsNyBAQCBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBwcm9ncmFtIHRo YXQgYWxsb3dzIHlvdSB0byBydW4gR0RCIG9uIGEgZGlmZmVyZW50IG1hY2hpbgogJXNldHVwIC1x IC1uICV7Z2RiX3NyY30KIAogIyBsaWJzdGRjKysgcHJldHR5IHByaW50ZXJzLgoteHogLWRjICV7 U09VUkNFNH0gfCB0YXIgeGYgLQordGFyIHhqZiAle1NPVVJDRTR9CiAKICMgRmlsZXMgaGF2ZSBg IyA8bnVtYmVyPiA8ZmlsZT4nIHN0YXRlbWVudHMgYnJlYWtpbmcgVlBBVEggLyBmaW5kLWRlYnVn aW5mby5zaCAuCiBybSAtZiBnZGIvYWRhLWV4cC5jIGdkYi9hZGEtbGV4LmMgZ2RiL2MtZXhwLmMg Z2RiL2NwLW5hbWUtcGFyc2VyLmMgZ2RiL2YtZXhwLmMKQEAgLTQ1NSw4ICs1NjgsMTMgQEAgcm0g LWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwog CiAlaWYgMCV7IT9fd2l0aF91cHN0cmVhbToxfQogCi0jcGF0Y2gyMzIgLXAxCislcGF0Y2gyMzIg LXAxCiAlcGF0Y2gzNDkgLXAxCislcGF0Y2gzODMgLXAxCislcGF0Y2gzODQgLXAxCislcGF0Y2gz ODUgLXAxCislcGF0Y2gzODggLXAxCislcGF0Y2gxMjQgLXAxCiAlcGF0Y2gxIC1wMQogJXBhdGNo MyAtcDEKIApAQCAtNDY4LDcgKzU4Niw2IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhw LmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDExOCAtcDEKICVwYXRjaDEyMiAt cDEKICVwYXRjaDEyNSAtcDEKLSVwYXRjaDEyOCAtcDEKICVwYXRjaDEzMyAtcDEKICVwYXRjaDEz NiAtcDEKICVwYXRjaDE0MCAtcDEKQEAgLTQ3Nyw4ICs1OTQsNiBAQCBybSAtZiBnZGIvanYtZXhw LmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gxNDIgLXAx CiAlcGF0Y2gxNDUgLXAxCiAlcGF0Y2gxNDggLXAxCi0lcGF0Y2gxNTAgLXAxCi0lcGF0Y2gxNTEg LXAxCiAlcGF0Y2gxNTMgLXAxCiAlcGF0Y2gxNTcgLXAxCiAlcGF0Y2gxNTggLXAxCkBAIC01NjAs MTUgKzY3NSwzNyBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4 cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gzNzUgLXAxCiAlcGF0Y2gzNzYgLXAxCiAlcGF0Y2gzODEg LXAxCi0lcGF0Y2gxMjQgLXAxCislcGF0Y2gzODIgLXAxCislcGF0Y2gzODcgLXAxCislcGF0Y2gz ODkgLXAxCislcGF0Y2gzOTAgLXAxCislcGF0Y2gzOTEgLXAxCislcGF0Y2gzOTIgLXAxCisjIEFs d2F5cyB2ZXJpZnkgaXRzIGFwcGxpY2FiaWxpdHkuCislcGF0Y2gzOTMgLXAxCislcGF0Y2gzMzUg LXAxCislaWYgMCV7IT9lbDU6MX0KKyVwYXRjaDM5MyAtcDEgLVIKKyVwYXRjaDMzNSAtcDEgLVIK KyVlbmRpZgorJXBhdGNoMzk0IC1wMQorJXBhdGNoMzk1IC1wMQorJXBhdGNoMzk2IC1wMQorJXBh dGNoMzk3IC1wMQorJXBhdGNoMzk4IC1wMQorJXBhdGNoMzk5IC1wMQorJXBhdGNoNDAwIC1wMQor JXBhdGNoNDAxIC1wMQogCiBmaW5kIC1uYW1lICIqLm9yaWciIHwgeGFyZ3Mgcm0gLWYKLSEgZmlu ZCAtbmFtZSAiKi5yZWoiCSMgU2hvdWxkIG5vdCBoYXBwZW4uCishIGZpbmQgLW5hbWUgIioucmVq IiAjIFNob3VsZCBub3QgaGFwcGVuLgogCi0lZW5kaWYJIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9 CislZW5kaWYgIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKICMgQ2hhbmdlIHRoZSB2ZXJzaW9u IHRoYXQgZ2V0cyBwcmludGVkIGF0IEdEQiBzdGFydHVwLCBzbyBpdCBpcyBGZWRvcmEKICMgc3Bl Y2lmaWMuCisjIEZlZG9yYSAoJXt2ZXJzaW9ufS0le3JlbGVhc2V9KQorIyBSZWQgSGF0IEVudGVy cHJpc2UgTGludXggKCV7dmVyc2lvbn0tJXtyZWxlYXNlfSkKIGNhdCA+IGdkYi92ZXJzaW9uLmlu IDw8IF9GT08KIEZlZG9yYSAoJXt2ZXJzaW9ufS0le3JlbGVhc2V9KQogX0ZPTwpAQCAtNjA0LDQ0 ICs3NDEsNTIgQEAgZXhwb3J0IENGTEFHUz0iJFJQTV9PUFRfRkxBR1MiCiBDRkxBR1M9IiRDRkxB R1MgLU8wIC1nZ2RiMiIKICVlbmRpZgogCi0uLi9jb25maWd1cmUJCQkJCQlcCi0JLS1wcmVmaXg9 JXtfcHJlZml4fQkJCQlcCi0JLS1saWJkaXI9JXtfbGliZGlyfQkJCQlcCi0JLS1zeXNjb25mZGly PSV7X3N5c2NvbmZkaXJ9CQkJXAotCS0tbWFuZGlyPSV7X21hbmRpcn0JCQkJXAotCS0taW5mb2Rp cj0le19pbmZvZGlyfQkJCQlcCi0JLS13aXRoLWdkYi1kYXRhZGlyPSV7X2RhdGFkaXJ9L2dkYgkJ XAotCS0td2l0aC1weXRob25kaXI9JXtfZGF0YWRpcn0vZ2RiL3B5dGhvbgkJXAotCS0tZW5hYmxl LWdkYi1idWlsZC13YXJuaW5ncz0sLVduby11bnVzZWQJXAorLi4vY29uZmlndXJlCQkJCQkJCVwK KwktLXByZWZpeD0le19wcmVmaXh9CQkJCQlcCisJLS1saWJkaXI9JXtfbGliZGlyfQkJCQkJXAor CS0tc3lzY29uZmRpcj0le19zeXNjb25mZGlyfQkJCQlcCisJLS1tYW5kaXI9JXtfbWFuZGlyfQkJ CQkJXAorCS0taW5mb2Rpcj0le19pbmZvZGlyfQkJCQkJXAorCS0td2l0aC1nZGItZGF0YWRpcj0l e19kYXRhZGlyfS9nZGIJCQlcCisJLS13aXRoLXB5dGhvbmRpcj0le19kYXRhZGlyfS9nZGIvcHl0 aG9uCQkJXAorCS0tZW5hYmxlLWdkYi1idWlsZC13YXJuaW5ncz0sLVduby11bnVzZWQJCVwKICVp Zm5hcmNoICV7aXg4Nn0gYWxwaGEgaWE2NCBwcGMgczM5MCBzMzkweCB4ODZfNjQgcHBjNjQgc3Bh cmN2OSBzcGFyYzY0Ci0JLS1kaXNhYmxlLXdlcnJvcgkJCQlcCi0lZWxzZSAKKwktLWRpc2FibGUt d2Vycm9yCQkJCQlcCislZWxzZQogJWlmIDAlez9fd2l0aF91cHN0cmVhbToxfQotCS0tZGlzYWJs ZS13ZXJyb3IJCQkJXAorCS0tZGlzYWJsZS13ZXJyb3IJCQkJCVwKICVlbHNlCi0JLS1lbmFibGUt d2Vycm9yCQkJCQlcCisJLS1lbmFibGUtd2Vycm9yCQkJCQkJXAogJWVuZGlmCiAlZW5kaWYKLQkt LXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPS91c3IvbGliL2RlYnVnCVwKLQktLWRpc2FibGUtc2lt CQkJCQlcCi0JLS1kaXNhYmxlLXJwYXRoCQkJCQlcCi0JLS13aXRoLXN5c3RlbS1yZWFkbGluZQkJ CQlcCi0JLS13aXRoLWV4cGF0CQkJCQlcCi0JLS1lbmFibGUtdHVpCQkJCQlcCisJLS13aXRoLXNl cGFyYXRlLWRlYnVnLWRpcj0vdXNyL2xpYi9kZWJ1ZwkJXAorCS0tZGlzYWJsZS1zaW0JCQkJCQlc CisJLS1kaXNhYmxlLXJwYXRoCQkJCQkJXAorCS0td2l0aC1zeXN0ZW0tcmVhZGxpbmUJCQkJCVwK KwktLXdpdGgtZXhwYXQJCQkJCQlcCiskKDogcHBjNjQgaG9zdCBidWlsZCBjcmFzaGVzIG9uIHBw YyB2YXJpYW50IG9mIGxpYmV4cGF0LnNvICkJXAorCS0td2l0aG91dC1saWJleHBhdC1wcmVmaXgJ CQkJXAorCS0tZW5hYmxlLXR1aQkJCQkJCVwKICVpZiAwJXshP193aXRob3V0X3B5dGhvbjoxfQot CS0td2l0aC1weXRob24JCQkJCVwKKwktLXdpdGgtcHl0aG9uCQkJCQkJXAogJWVsc2UKLQktLXdp dGhvdXQtcHl0aG9uCQkJCVwKKwktLXdpdGhvdXQtcHl0aG9uCQkJCQlcCislZW5kaWYKKyQoOiBX b3JrYXJvdW5kIHJwbS5vcmcjNzYsIEJaIDUwODE5MyBvbiByZWNlbnQgT1Nlcy4gKQkJXAorJCg6 IFJIRUwtNSBsaWJycG0gaGFzIGluY29tcGF0aWJsZSBBUEkuICkJCQlcCislaWYgMCV7P2VsNTox fQorCS0td2l0aG91dC1ycG0JCQkJCQlcCislZWxzZQorCS0td2l0aC1ycG09bGlicnBtLnNvLjAJ CQkJCVwKICVlbmRpZgotCS0td2l0aC1ycG09bGlicnBtLnNvLjAJCQkJXAogJWlmYXJjaCBpYTY0 Ci0JLS13aXRoLWxpYnVud2luZAkJCQlcCisJLS13aXRoLWxpYnVud2luZAkJCQkJXAogJWVsc2UK LQktLXdpdGhvdXQtbGlidW53aW5kCQkJCVwKKwktLXdpdGhvdXQtbGlidW53aW5kCQkJCQlcCiAl ZW5kaWYKLQktLWVuYWJsZS02NC1iaXQtYmZkCQkJCVwKKwktLWVuYWJsZS02NC1iaXQtYmZkCQkJ CQlcCiAlaWYgMCV7P193aXRoX2RlYnVnOjF9Ci0JLS1lbmFibGUtc3RhdGljIC0tZGlzYWJsZS1z aGFyZWQgLS1lbmFibGUtZGVidWcJXAorCS0tZW5hYmxlLXN0YXRpYyAtLWRpc2FibGUtc2hhcmVk IC0tZW5hYmxlLWRlYnVnCQlcCiAlZW5kaWYKICVpZmFyY2ggc3BhcmN2OQogCXNwYXJjLSV7X3Zl bmRvcn0tJXtfdGFyZ2V0X29zfSV7P19nbnV9CkBAIC02NTIsNiArNzk3LDggQEAgQ0ZMQUdTPSIk Q0ZMQUdTIC1PMCAtZ2dkYjIiCiBtYWtlICV7P19zbXBfbWZsYWdzfQogbWFrZSAlez9fc21wX21m bGFnc30gaW5mbwogCitncmVwICcjZGVmaW5lIEhBVkVfWkxJQl9IIDEnIGdkYi9jb25maWcuaAor CiAjIENvcHkgdGhlIDxzb3VyY2V0cmVlPi9nZGIvTkVXUyBmaWxlIHRvIHRoZSBkaXJlY3Rvcnkg YWJvdmUgaXQuCiBjcCAkUlBNX0JVSUxEX0RJUi8le2dkYl9zcmN9L2dkYi9ORVdTICRSUE1fQlVJ TERfRElSLyV7Z2RiX3NyY30KIApAQCAtNjY0LDcgKzgxMSw3IEBAIGVjaG8gPT09PT09PT09PT09 PT09PT09PT1URVNUU1VJVEUgRElTQUJMRUQ9PT09PT09PT09PT09PT09PT09PT09PT09CiAlZWxz ZQogZWNobyA9PT09PT09PT09PT09PT09PT09PVRFU1RJTkc9PT09PT09PT09PT09PT09PT09PT09 PT09CiBjZCBnZGIKLWdjYyAtbyAuL29ycGhhbnJpcHBlciAle1NPVVJDRTJ9IC1XYWxsIC1sdXRp bAorZ2NjIC1vIC4vb3JwaGFucmlwcGVyICV7U09VUkNFMn0gLVdhbGwgLWx1dGlsIC1nZ2RiMgog IyBOZWVkIHRvIHVzZSBhIHNpbmdsZSAtLWlnbm9yZSBvcHRpb24sIHNlY29uZCB1c2Ugb3ZlcnJp ZGVzIGZpcnN0LgogIyBObyBgJXs/X3NtcF9tZmxhZ3N9JyBoZXJlIGFzIGl0IG1heSByYWNlLgog IyBXQVJOSU5HOiBjYW4ndCBnZW5lcmF0ZSBhIGNvcmUgZmlsZSAtIGNvcmUgdGVzdHMgc3VwcHJl c3NlZCAtIGNoZWNrIHVsaW1pdApAQCAtNzE5LDEwICs4NjYsMTQgQEAgZ2NjIC1vIC4vb3JwaGFu cmlwcGVyICV7U09VUkNFMn0gLVdhbGwgLWx1dGlsCiAgICMgUnVuIGFsbCB0aGUgc2NoZWR1bGVk IHRlc3RzdWl0ZSBydW5zIGFsc28gaW4gdGhlIFBJRSBtb2RlLgogICAjIFVwc3RyZWFtIEdEQiB3 b3VsZCBsb2NrIHVwIHRoZSB0ZXN0c3VpdGUgcnVuIGZvciB0b28gbG9uZyBvbiBpdHMgZmFpbHVy ZXMuCiAgIENIRUNLPSIkKGVjaG8gJENIRUNLfHNlZCAncyNjaGVjay8vdW5peC9bXiBdKiMmICYv LWZQSUUvLXBpZSNnJykiCi0lZW5kaWYJIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CislZW5kaWYg IyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKLSAgIyBGSVhNRTogVGVtcG9yYXJ5IEYxMiBkaXNh YmxlOiAuL29ycGhhbnJpcHBlcgotICBtYWtlICV7P19zbXBfbWZsYWdzfSAtayAkQ0hFQ0sgfHwg OgorICAuL29ycGhhbnJpcHBlciBtYWtlICV7P19zbXBfbWZsYWdzfSAtayAkQ0hFQ0sgXAorJCg6 IFNlcmlhbGl6ZSB0aGUgb3V0cHV0IHRvIGtlZXAgdGhlIG9yZGVyIGZvciByZWdyZXNzaW9uIGNo ZWNrcy4gKSBcCislaWYgMCV7P2VsNToxfQorICAgIFJVTlRFU1RGTEFHUz0iLS10b29sIGdkYiIg XAorJWVuZGlmCisgICAgfHwgOgogKQogZm9yIHQgaW4gc3VtIGxvZwogZG8KQEAgLTc3MSw3ICs5 MjIsNyBAQCBkb25lCiB0ZXN0ICEgLWUgJFJQTV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZ2RiL3B5 dGhvbi9saWJzdGRjeHgKIGNwIC1hICRSUE1fQlVJTERfRElSLyV7Z2RiX3NyY30vJXtsaWJzdGRj eHhweXRob259L2xpYnN0ZGN4eAlcCiAgICAgICAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9n ZGIvcHl0aG9uL2xpYnN0ZGN4eAotJWVuZGlmCSMgMCV7IT9fd2l0aG91dF9weXRob246MX0KKyVl bmRpZiAjIDAleyE/X3dpdGhvdXRfcHl0aG9uOjF9CiAKICMgUmVtb3ZlIHRoZSBmaWxlcyB0aGF0 IGFyZSBwYXJ0IG9mIGEgZ2RiIGJ1aWxkIGJ1dCB0aGF0IGFyZSBvd25lZCBhbmQKICMgcHJvdmlk ZWQgYnkgb3RoZXIgcGFja2FnZXMuCkBAIC03OTQsOSArOTQ1LDExIEBAIHJtIC1mICRSUE1fQlVJ TERfUk9PVCV7X2luZm9kaXJ9L2RpcgogIyBwc3RhY2sgb2Jzb2xldGlvbgogCiBjcCAtcCAle1NP VVJDRTN9ICRSUE1fQlVJTERfUk9PVCV7X21hbmRpcn0vbWFuMS9nc3RhY2suMQorJWlmIDAleyE/ ZWw1OjF9CiBsbiAtcyBnc3RhY2suMS5neiAkUlBNX0JVSUxEX1JPT1Qle19tYW5kaXJ9L21hbjEv cHN0YWNrLjEuZ3oKIGxuIC1zIGdzdGFjayAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9L3BzdGFj awotJWVuZGlmCSMgMCV7IT9fd2l0aF91cHN0cmVhbToxfQorJWVuZGlmICMgMCV7IT9lbDU6MX0K KyVlbmRpZiAjIDAleyE/X3dpdGhfdXBzdHJlYW06MX0KIAogJWNsZWFuCiBybSAtcmYgJFJQTV9C VUlMRF9ST09UCkBAIC04MDUsMTcgKzk1OCwyNiBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiAj IFRoaXMgc3RlcCBpcyBwYXJ0IG9mIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIFJQTS4gTm90IHRv IGJlIGNvbmZ1c2VkCiAjIHdpdGggdGhlICdtYWtlIGluc3RhbGwgJyBvZiB0aGUgYnVpbGQgKHJw bWJ1aWxkKSBwcm9jZXNzLgogCi0vc2Jpbi9pbnN0YWxsLWluZm8gLS1pbmZvLWRpcj0le19pbmZv ZGlyfSAle19pbmZvZGlyfS9hbm5vdGF0ZS5pbmZvLmd6IHx8IDoKLS9zYmluL2luc3RhbGwtaW5m byAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2dkYi5pbmZvLmd6IHx8IDoKLS9z YmluL2luc3RhbGwtaW5mbyAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2dkYmlu dC5pbmZvLmd6IHx8IDoKLS9zYmluL2luc3RhbGwtaW5mbyAtLWluZm8tZGlyPSV7X2luZm9kaXJ9 ICV7X2luZm9kaXJ9L3N0YWJzLmluZm8uZ3ogfHwgOgorIyBGb3IgLS1leGNsdWRlZG9jczoKK2lm IFsgLWUgJXtfaW5mb2Rpcn0vZ2RiLmluZm8uZ3ogXQordGhlbgorICAvc2Jpbi9pbnN0YWxsLWlu Zm8gLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9hbm5vdGF0ZS5pbmZvLmd6IHx8 IDoKKyAgL3NiaW4vaW5zdGFsbC1pbmZvIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rp cn0vZ2RiLmluZm8uZ3ogfHwgOgorICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1pbmZvLWRpcj0le19p bmZvZGlyfSAle19pbmZvZGlyfS9nZGJpbnQuaW5mby5neiB8fCA6CisgIC9zYmluL2luc3RhbGwt aW5mbyAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L3N0YWJzLmluZm8uZ3ogfHwg OgorZmkKIAogJXByZXVuCi1pZiBbICQxID0gMCBdOyB0aGVuCi0JL3NiaW4vaW5zdGFsbC1pbmZv IC0tZGVsZXRlIC0taW5mby1kaXI9JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vYW5ub3RhdGUuaW5m by5neiB8fCA6Ci0JL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIC0taW5mby1kaXI9JXtfaW5m b2Rpcn0gJXtfaW5mb2Rpcn0vZ2RiLmluZm8uZ3ogfHwgOgotCS9zYmluL2luc3RhbGwtaW5mbyAt LWRlbGV0ZSAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L2dkYmludC5pbmZvLmd6 IHx8IDoKLQkvc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgLS1pbmZvLWRpcj0le19pbmZvZGly fSAle19pbmZvZGlyfS9zdGFicy5pbmZvLmd6IHx8IDoKK2lmIFsgJDEgPSAwIF0KK3RoZW4KKyAg IyBGb3IgLS1leGNsdWRlZG9jczoKKyAgaWYgWyAtZSAle19pbmZvZGlyfS9nZGIuaW5mby5neiBd CisgIHRoZW4KKyAgICAvc2Jpbi9pbnN0YWxsLWluZm8gLS1kZWxldGUgLS1pbmZvLWRpcj0le19p bmZvZGlyfSAle19pbmZvZGlyfS9hbm5vdGF0ZS5pbmZvLmd6IHx8IDoKKyAgICAvc2Jpbi9pbnN0 YWxsLWluZm8gLS1kZWxldGUgLS1pbmZvLWRpcj0le19pbmZvZGlyfSAle19pbmZvZGlyfS9nZGIu aW5mby5neiB8fCA6CisgICAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlIC0taW5mby1kaXI9 JXtfaW5mb2Rpcn0gJXtfaW5mb2Rpcn0vZ2RiaW50LmluZm8uZ3ogfHwgOgorICAgIC9zYmluL2lu c3RhbGwtaW5mbyAtLWRlbGV0ZSAtLWluZm8tZGlyPSV7X2luZm9kaXJ9ICV7X2luZm9kaXJ9L3N0 YWJzLmluZm8uZ3ogfHwgOgorICBmaQogZmkKIAogJWZpbGVzCkBAIC04MjgsMTAgKzk5MCwxMiBA QCBmaQogJXtfbWFuZGlyfS8qL2dkYnR1aS4xKgogJWlmIDAleyE/X3dpdGhfdXBzdHJlYW06MX0K ICV7X2JpbmRpcn0vZ3N0YWNrCi0le19iaW5kaXJ9L3BzdGFjawogJXtfbWFuZGlyfS8qL2dzdGFj ay4xKgorJWlmIDAleyE/ZWw1OjF9Cisle19iaW5kaXJ9L3BzdGFjawogJXtfbWFuZGlyfS8qL3Bz dGFjay4xKgotJWVuZGlmCSMgMCV7IT9fd2l0aF91cHN0cmVhbToxfQorJWVuZGlmICMgMCV7IT9l bDU6MX0KKyVlbmRpZiAjIDAleyE/X3dpdGhfdXBzdHJlYW06MX0KICV7X2RhdGFkaXJ9L2dkYgog JXtfaW5mb2Rpcn0vYW5ub3RhdGUuaW5mbyoKICV7X2luZm9kaXJ9L2dkYi5pbmZvKgpAQCAtODQw LDEzICsxMDA0LDE0OCBAQCBmaQogCiAjIGRvbid0IGluY2x1ZGUgdGhlIGZpbGVzIGluIGluY2x1 ZGUsIHRoZXkgYXJlIHBhcnQgb2YgYmludXRpbHMKIAotJWlmbmFyY2ggc3BhcmN2OSAKKyVpZm5h cmNoIHNwYXJjdjkKKyVpZiAwJXshP2VsNToxfQogJWZpbGVzIGdkYnNlcnZlcgorJWRlZmF0dHIo LSxyb290LHJvb3QpCislZW5kaWYKICV7X2JpbmRpcn0vZ2Ric2VydmVyCiAle19tYW5kaXJ9Lyov Z2Ric2VydmVyLjEqCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBUdWUgSmFuIDEyIDIwMTAgSmFu IEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjEtMjUuZmMxMgor LSBub24tbGlicnBtIG1pc3NpbmcgZGVidWdpbmZvIHl1bWNvbW1hbmQgbm93IHByaW50cyBhbHNv IC0tZGlzYWJsZXJlcG89JyonCisgIHRvIHNhdmUgc29tZSBiYW5kd2lkdGggYnkgeXVtIChSb2Jp biBHcmVlbiwgQlogNTU0MTUyKS4KKworKiBTdW4gSmFuIDEwIDIwMTAgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjEtMjQuZmMxMgorLSB0ZXN0c3VpdGU6 IEJ1aWxkUmVxdWlyZXMgYWxzbyB2YWxncmluZC4KKworKiBGcmkgSmFuICA4IDIwMTAgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLjEtMjMuZmMxMgorLSBX b3JrYXJvdW5kIG1pc3NpbmcgbGlic3RkYysrJSV7Yml0c19vdGhlcn0gaW4gS29qaS4KKworKiBG cmkgSmFuICA4IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IC0gNy4wLjEtMjIuZmMxMgorLSBDb21wbHkgd2l0aCBuZXcgcGFja2FnZSByZXZpZXc6CisgIC0g Rml4IC5zcGVjIFNvdXJjZSBhcyB0aGlzIGlzIG5vdCBhIHNuYXBzaG90IG5vdy4KKyAgLSBDb252 ZXJ0IGFsbCBzcGFjZXMgdG8gdGFicy4KKyAgLSBGaXggbWlzc2luZyAlJWRlZmF0dHIgYXQgJSVm aWxlcyBmb3IgZ2Ric2VydmVyLgorICAtIFJlcGxhY2UgYWxsIGhhcmRjb2RlZC1saWJyYXJ5LXBh dGggYnkgdmFyaWFudHMgb2YgJSV7X2lzYX0uCistIEluY2x1ZGUgJSV7X2lzYX0gZm9yIGFwcHJv cHJpYXRlIFJlcXVpcmVzIGFuZCBCdWlsZFJlcXVpcmVzLgorCisqIFRodSBKYW4gIDcgMjAxMCBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAuMS0yMS5mYzEy CistIFt2bGFdIEZpeCByZWdyZXNzaW9uIG9uIGZpZWxkcyBvZiBzdHJ1Y3RzIGluIGludGVybmFs IHZhcnMgKEJaIDU1MzMzOCkuCistIGFyY2hlci1qYW5rcmF0b2NodmlsLWZlZG9yYTEyIGNvbW1p dDogNmU3Mzk4OGY2NTNiYTk4NmU4NzQyZjIwOGYxN2VjMDg0MjkyY2JkNQorCisqIFRodSBKYW4g IDcgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAu MS0yMC5mYzEyCistIEZpeCBjcmFzaCByZWFkaW5nIGJyb2tlbiBzdGFicyAoaXQzNzc2NzEpLgor CisqIFN1biBKYW4gIDMgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4gLSA3LjAuMS0xOS5mYzEyCistIHRlc3RzdWl0ZTogRml4dXAgZmFsc2UgRkFJTHMgZm9y IGdkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuZXhwLgorCisqIFNhdCBKYW4gIDIgMjAxMCBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAuMS0xOC5mYzEyCistIEZp eCByZWdyZXNzaW9uIG9mIGdkYi03LjAgKGZyb20gNi44KSBjcmFzaGluZyBvbiB0eXBlZGVmZWQg Yml0ZmllbGRzLgorLSBGaXggcmVsYXRlZF9icmVha3BvaW50IHN0YWxlIHJlZiBjcmFzaC4KKwor KiBGcmkgSmFuICAxIDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IC0gNy4wLjEtMTcuZmMxMgorLSBGb3JtYWwgdXBncmFkZSB0byB0aGUgRlNGIEdEQiByZWxl YXNlIGdkYi03LjAuMS4KKyAgLSBGaXggcmVncmVzc2lvbiBvZiBnZGItNy4wLjEgbm90IHByZXNl cnZpbmcgdHlwZWRlZiBvZiBhIGZpZWxkLgorCisqIEZyaSBKYW4gIDEgMjAxMCBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtMTYuZmMxMgorLSBNb3JlIFJI RUwtNSBjb21wYXRpYmlsaXR5IHVwZGF0ZXMuCisgIC0gRGlzYWJsZSB0aGUgYnVpbGQtaWQgc3Vw cG9ydCBieSBkZWZhdWx0LgorICAtIEJ1bmRsZSBiYWNrIGdkYnNlcnZlciB0byB0aGUgYmFzZSBn ZGIgcGFja2FnZS4KKyAgLSBSZW1vdmUgYnVuZGxlZCBwc3RhY2suCisgIC0gRHJvcCB0aGUgQnVp bGRSZXF1aXJlcyBvZiBycG0tZGV2ZWwuCisKKyogRnJpIEphbiAgMSAyMDEwIEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMC0xNS5mYzEyCistIEZpeCBlcnJv ciBvbiBhIHN3IHdhdGNocG9pbnQgYWN0aXZlIGF0IGZ1bmN0aW9uIGVwaWxvZ3VlIChoaXQgb24g czM5MHgpLgorLSB0ZXN0c3VpdGU6IEZpeCBmYWxzZSBNSSAidW5rbm93biBvdXRwdXQgYWZ0ZXIg cnVubmluZyIgcmVncmVzc2lvbi4KKy0gdGVzdHN1aXRlOiBVcGRhdGUgaWE2NC1zaWd0cmFtcC5l eHAgZm9yIHJlY2VudCBHREIuCistIEltcGxlbWVudCBidC1jbG9uZS1zdG9wLmV4cCBmaXggYWxz byBmb3IgaWE2NC4KKy0gdGVzdHN1aXRlOiBVcHN0cmVhbSBjb25kYnJlYWsuZXhwIHJlc3VsdHMg c3RhYmlsaXR5IGZpeCAoRGFuaWVsIEphY29ib3dpdHopLgorCisqIFRodSBEZWMgMjQgMjAwOSBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtMTQuZmMxMgor LSB0ZXN0c3VpdGU6IEZpeCBjb25zdHJ1Y3RvcnRlc3QuZXhwIGFuZCBleHBhbmQtc2Fscy5leHAg Zm9yIGdjYy00LjQuMi0yMC5mYzEyLgorCisqIE1vbiBEZWMgMjEgMjAwOSBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtMTMuZmMxMgorLSBbcGllXSBGaXgg YSByYWNlIGluIHRlc3RjYXNlIGdkYi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFjaC5leHAuCistIEZp eCByZWdyZXNzaW9uIGJ5IHB5dGhvbiBvbiBpYTY0IGR1ZSB0byBzdGFsZSBjdXJyZW50IGZyYW1l LgorLSBEaXNhYmxlIHB5dGhvbiBpZmYgUkhFTC01ICYmIChCcmV3IHx8IHBwYzY0KS4KKworKiBN b24gRGVjIDIxIDIwMDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IC0gNy4wLTEyLmZjMTIKKy0gV29ya2Fyb3VuZCBidWlsZCBvbiBuYXRpdmUgcHBjNjQgaG9zdC4K Ky0gTW9yZSBSSEVMLTUgY29tcGF0aWJpbGl0eSB1cGRhdGVzLgorICAtIERpc2FibGUgd2Fybmlu ZyBtZXNzYWdlcyBuZXcgZm9yIGdkYi02LjgrIGZvciBSSEVMLTUgYmFja3dhcmQgY29tcGF0aWJp bGl0eS4KKyAgLSBXb3JrYXJvdW5kIFJIRUwtNSBrZXJuZWxzIGZvciBkZXRhY2hpbmcgU0lHU1RP UHBlZCBwcm9jZXNzZXMgKEJaIDQ5ODU5NSkuCisgIC0gU2VyaWFsaXplIHRoZSB0ZXN0c3VpdGUg b3V0cHV0IHRvIGtlZXAgdGhlIG9yZGVyIGZvciByZWdyZXNzaW9uIGNoZWNrcy4KKyAgLSBSZS1l bmFibGUgcHl0aG9uIGZvciBhbGwgbm9uLXBwYyogYXJjaGVzLgorICAtIE1vcmUgZ2NjNDQgc3Rh Y2sgZXhjZXB0aW9ucyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSBvbiBSSEVMLTUuCistIEZp eCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggRysrIDQuMSBuYW1lc3BhY2VzICI6OiIuCist IEZpeCByZWdyZXNzaW9uIG9uIHJlLXNldHRpbmcgdGhlIHNpbmdsZSBwcGMgd2F0Y2hwb2ludCBz bG90LgorLSBVcGRhdGUgc25hcHNob3Qgb2YgRlNGIGdkYi03LjAueCBicmFuY2guCisgIC0gQmFj a3BvcnQgZml4IG9mIGRjYWNoZSBpbnZhbGlkYXRpb24gbG9ja2luZyB1cCBHREIgb24gcHBjNjQg dGFyZ2V0cy4KKworKiBGcmkgRGVjIDE4IDIwMDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IC0gNy4wLTExLmZjMTIKKy0gW3BpZV0gRml4IGdlbmVyYWwgcHBjNjQg cmVncmVzc2lvbiBkdWUgdG8gYSBmdW5jdGlvbiBkZXNjcmlwdG9ycyBidWcuCistIFtwaWVdIEZp eCBhbHNvIGtlZXBpbmcgYnJlYWtwb2ludHMgZGlzYWJsZWQgaW4gUElFIG1vZGUuCistIEltcG9y dCB1cHN0cmVhbSA8dGFiPi1jb21wbGV0aW9uIGNyYXNoIGZpeC4KKy0gRHJvcCBzb21lIHVudXNl ZCBwYXRjaGVzIGZyb20gdGhlIHJlcG9zaXRvcnkuCistIE1vcmUgUkhFTC01IGJ1aWxkIGNvbXBh dGliaWxpdHkgdXBkYXRlcy4KKyAgLSBVc2UgZ2ZvcnRyYW40NCB3aGVuIHJ1bm5pbmcgdGhlIHRl c3RzdWl0ZSBvbiBSSEVMLTUuCisgIC0gRGlzYWJsZSBweXRob24gdGhlcmUgZHVlIHRvIGluc3Vm ZmljaWVudCBwcGMgbXVsdGlsaWIuCistIEZpeCBvcnBoYW5yaXBwZXIgaGFuZ3MgYW5kIHRodXMg ZW5hYmxlIGl0IGFnYWluLgorCisqIE1vbiBEZWMgMTQgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtMTAuZmMxMgorLSBNYWtlIGdkYi02LjMtcmgt dGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2ggdG8gYWNjZXB0IGJvdGggUkhFTCBhbmQgRmVkb3Jh IEdEQi4KKy0gQWRqdXN0IEJ1aWxkUmVxdWlyZXMgZm9yIEZlZG9yYS0xMiwgUkhFTC02IGFuZCBS SEVMLTUgYnVpbGRzLgorLSBbdmxhXSBGaXggY29tcGF0aWJpbGl0eSBvZiBkeW5hbWljIGFycmF5 cyB3aXRoIGlGb3J0IChCWiA1MTQyODcpLgorLSBGaXggc3RlcHBpbmcgdGhyb3VnaCBPTVAgcGFy YWxsZWwgRm9ydHJhbiBzZWN0aW9ucyAoQlogNTMzMTc2KS4KKy0gTmV3IGZpeCBvZiBicCBjb25k aXRpb25hbHMgW2JwX2xvY2F0aW9uLWFjY2VsXSByZWdyZXNzaW9uIChCWiA1Mzg2MjYpLgorCisq IE1vbiBEZWMgIDcgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4gLSA3LjAtOS5mYzEyCistIFJlcGxhY2UgdGhlIFBJRSAoUG9zaXRpb24gSW5kZXBkZW50IEV4 ZWN1dGFibGUpIHN1cHBvcnQgcGF0Y2ggYnkgYSBuZXcgb25lLgorLSBEcm9wIGdkYi02LjMtbm9u dGhyZWFkZWQtd3AtMjAwNTAxMTcucGF0Y2ggYXMgZnV6enkgKyByZWR1bmRhbnQuCistIEZpeCBj YWxsYmFjay1tb2RlIHJlYWRsaW5lLTYuMCByZWdyZXNzaW9uIGZvciBDVFJMLUMuCistIEZpeCBz eXNjYWxsIHJlc3RhcnRzIGZvciBhbWQ2NC0+aTM4NiBiaWFyY2guCistIFZhcmlvdXMgdGVzdHN1 aXRlIHJlc3VsdHMgc3RhYmlsaXR5IGZpeGVzLgorLSBGaXggY3Jhc2ggb24gcmVhZGluZyBzdGFi cyBvbiA2NGJpdCAoQlogNTM3ODM3KS4KKy0gYXJjaGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTIg Y29tbWl0OiAxNjI3NmMxYWFkMTM2NmI5MmU2ODdjNzJjYWIzMDE5MjI4MGUxOTA2CistIGFyY2hl ci1qYW5rcmF0b2NodmlsLXBpZS1mZWRvcmExMiBjdDogMmFlNjBiNTE1NmQ0M2FhYmZlNTc1Nzk0 MGVhZjdiNDM3MGZiMDVkMgorCisqIFRodSBEZWMgIDMgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAtOC5mYzEyCistIEZpeCBzbG93bmVzcy9oYW5n IHdoZW4gcHJpbnRpbmcgc29tZSB2YXJpYWJsZXMgKFNhbWkgV2FnaWFhbGxhLCBCWiA1NDEwOTMp LgorLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMiBjb21taXQ6IDY4MTdhODFjZDQxMWFj Yzk1NzlmMDRkY2MxMDVlOWJjZTcyODU5ZmYKKworKiBXZWQgTm92IDI1IDIwMDkgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLTcuZmMxMgorLSBTdXBwb3J0 IEdOVSBJRlVOQ3MgLSBpbmRpcmVjdCBmdW5jdGlvbnMgKEJaIDUzOTU5MCkuCistIEZpeCBicCBj b25kaXRpb25hbHMgW2JwX2xvY2F0aW9uLWFjY2VsXSByZWdyZXNzaW9uIChQaGlsIE11bGRvb24s IEJaIDUzODYyNikuCistIEZpeCBtaXNzZWQgYnJlYWtwb2ludCBsb2NhdGlvbiBbYnBfbG9jYXRp b24tYWNjZWxdIHJlZ3Jlc3Npb24gKHVwc3RyZWFtKS4KKworKiBGcmkgT2N0IDMwIDIwMDkgSmFu IEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLTYKKy0gRml4IG1p c3NpbmcgemxpYi1kZXZlbCBCdWlsZFJlcXVpcmVzIHRvIHN1cHBvcnQgY29tcHJlc3NlZCBEV0FS RiBzZWN0aW9ucy4KKy0gSW5jbHVkZSBwb3N0LTcuMCBGU0YgR0RCIGZpeGVzLgorCisqIEZyaSBP Y3QgMjMgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3 LjAtNQorLSBNYWtlIHRoZSBwYWNrYWdlIGJ1aWxkYWJsZSBvbiBSSEVMLTUvQ2VudE9TLTUgKHdp dGhvdXQgbGlicnBtIHRoZXJlKS4KKy0gYXJjaGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTIgY29t bWl0OiA1YjczZWE2YTBmNzRlNjNkYjNiNTA0NzkyZmMxZDM3ZjU0OGJkZjVjCisKKyogRnJpIE9j dCAyMyAyMDA5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcu MC00CistIEZpeCBycG0gLS1leGNsdWRlZG9jcyAoQlogNTE1OTk4KS4KKworKiBUaHUgT2N0IDIy IDIwMDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4wLTMK Ky0gU3VwcG9ydCBtdWx0aXBsZSBkaXJlY3RvcmllcyBmb3IgYHNldCBkZWJ1Zy1maWxlLWRpcmVj dG9yeScgKEJaIDUyODY2OCkuCisKKyogTW9uIE9jdCAxOSAyMDA5IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMC0yCistIFN5bmMgdGhlIC5zcGVjIHdpdGgg UkhFTC9DZW50T1Mgd2l0aG91dCBFUEVMLCBkbyBub3QgQnVpbGRSZXF1aXJlczogZnBjIHRoZXJl LgorCisqIFdlZCBPY3QgIDcgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4gLSA3LjAtMQorLSBGb3JtYWwgdXBncmFkZSB0byB0aGUgZmluYWwgRlNGIEdEQiBy ZWxlYXNlIGdkYi03LjAuCistIEZpeCBHTlUvTGludXggY29yZSBvcGVuOiBDYW4ndCByZWFkIHBh dGhuYW1lIGZvciBsb2FkIG1hcDogSW5wdXQvb3V0cHV0IGVycm9yLgorLSBhcmNoZXItamFua3Jh dG9jaHZpbC1mZWRvcmExMiBjb21taXQ6IGNlNGVhZDM1NjY1NGI5NTFhNDljYTc4ZDgxZWJmZmY5 NWU3NThiZjUKKworKiBXZWQgU2VwIDMwIDIwMDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IC0gNi44LjkxLjIwMDkwOTMwLTIKKy0gQnVtcCByZWxlYXNlLgorCiAq IFdlZCBTZXAgMzAgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4gLSA2LjguOTEuMjAwOTA5MzAtMQogLSBGaXggYnJva2VuIHB5dGhvbiAiaGVscCgpIiBjb21t YW5kICJtb2R1bGVzIiAoQlogNTI2NTUyKS4KIC0gVXBncmFkZSB0byB0aGUgRlNGIEdEQiBnZGIt Ny4wIHNuYXBzaG90OiA2LjguOTEuMjAwOTA5MzAKQEAgLTEwMDYsNyArMTMwNSw3IEBAIGZpCiAt IEFyY2hlciBiYWNrcG9ydDogYzJkNWM0YTM5YjEwOTk0ZDg2ZDhmMmY5MGRmZWQ3NjllOGYyMTZm MwogICAtIEZpeCBwYXJzaW5nIERXX0FUX2NvbnN0X3ZhbHVlIHVzaW5nIERXX0ZPUk1fc3RyaW5n CiAtIEFyY2hlciBiYWNrcG9ydDogOGQ5YWI2OGZjMDk1NWM5ZGU2MzIwYmVjMjgyMWEyMWUzMjQ0 NjAwZAotICAgICAgICAgICAgICAgICArIGRiNDFlMTFhZTBhM2FlYzcxMjBhZDZjZTg2NDUwZDgz OGFmNzRkZDYKKwkJICsgZGI0MWUxMWFlMGEzYWVjNzEyMGFkNmNlODY0NTBkODM4YWY3NGRkNgog ICAtIEZpeCBGb3J0cmFuIG1vZHVsZXMvbmFtZXNwYWNlcyBwYXJzaW5nIChidXQgbm8gY2hhbmdl IHdhcyB2aXNpYmxlIGluIEYxMSkuCiAtIEFyY2hlciBiYWNrcG9ydDogMDAwZGI4YjdiZmVmODU4 MWVmMDk5Y2NjYTg2ODljZmRkZmVhMWJlOAogICAtIEZpeCAic29tZSBQeXRob24gZXJyb3Igd2hl biBkaXNwbGF5aW5nIHNvbWUgQysrIG9iamVjdHMiIChCWiA1MDQzNTYpLgpAQCAtMTAxNCw3ICsx MzEzLDcgQEAgZmkKIC0gdGVzdHN1aXRlOiBnZGItb3JwaGFucmlwcGVyLmM6IEZpeCB1bmluaXRp YWxpemVkIGB0ZXJtaW9zLmNfbGluZScuCiAtIEZpeCBjcmFzaGVzIGR1ZSB0byAobWlzc2luZykg dmFyb2JqIHJldmFsaWRhdGlvbiwgZm9yIFZMQSAoZm9yIEJaIDM3NzU0MSkuCiAtIEFyY2hlciBi YWNrcG9ydDogNThkY2RhOTRhYzVkNjM5OGY0NzM4MjUwNWU5ZDNkOWQ4NjZkNzliZgotICAgICAg ICAgICAgICAgICArIGYzZGU3YmJkNjU1MzM3ZmU2NzA1YWVhYWZjYzk3MGRlZmYzZGQ1ZDUKKwkJ ICsgZjNkZTdiYmQ2NTUzMzdmZTY3MDVhZWFhZmNjOTcwZGVmZjNkZDVkNQogICAtIEltcGxlbWVu dCBGb3J0cmFuIG1vZHVsZXMgbmFtZXNwYWNlcyAoQlogNDY2MTE4KS4KIC0gRml4IGNyYXNoIGlu IHRoZSBjaGFyc2V0IHN1cHBvcnQuCiAKQEAgLTEwNTUsNyArMTM1NCw3IEBAIGZpCiAtIEFyY2hl ciBiYWNrcG9ydDogYzE0ZDlhYjdlZWY0MzI4MWIyMDUyYzg4NWY4OWQyZGI5NmZiNWY4ZQogICAt IFJldmVydCBhIGNoYW5nZSByZWdyZXNzaW5nOiBnZGIub2JqYy9iYXNpY2NsYXNzLmV4cAogLSBB cmNoZXIgYmFja3BvcnQ6IGViZDY0OWI5NmU2MWExZmI0ODE4MDFiNjVkODI3YmNhOTk4YzY2MzMK LSAgICAgICAgICAgICAgICAgKyAxZjA4MGU4OTc5OTZkNjBhYjdmZGUyMDQyM2UyOTQ3NTEyMTE1 NjY3CisJCSArIDFmMDgwZTg5Nzk5NmQ2MGFiN2ZkZTIwNDIzZTI5NDc1MTIxMTU2NjcKIAkJICsg MTk0ODE5ODcwMmI1MWIzMWQ3OTc5M2ZjNDk0MzRiNTI5YjRlMjQ1ZgogCQkgKyBlMTA3ZmI5Njg3 YmIxZTdmNzQxNzBhYTNkMTljNGE4ZjZlZGJiMTBmCiAJCSArIDFlMDEyYzk5NmUxMjFjYjM1MDUz ZDIzOWE0NmJkNWRjNjViMGNlNjAKQEAgLTE3ODQsODUgKzIwODMsODUgQEAgcHJlbGluayBiYXNl IGFkZHJlc3Nlcy4gIEZpeGVzIEJaIDE3NTA3NSwgQlogMTkwNTQ1LgogKiBGcmkgRGVjIDE2IDIw MDUgSmVzc2UgS2VhdGluZyA8amtlYXRpbmdAcmVkaGF0LmNvbT4KIC0gcmVidWlsdCBmb3IgbmV3 IGdjagogCi0qIFRodSBEZWMgMDEgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRoYXQu Y29tPiAtIDYuMy4wLjAtMS45MworKiBUaHUgRGVjIDAxIDIwMDUgSmVmZiBKb2huc3RvbiA8ampv aG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuOTMKIC0gQnVtcCB1cCByZWxlYXNlIG51bWJl ci4KIAotKiBUaHUgRGVjIDAxIDIwMDUgSmVmZiBKb2huc3Rvbgk8ampvaG5zdG5AcmVkaGF0LmNv bT4gLSA2LjMuMC4wLTEuOTAKKyogVGh1IERlYyAwMSAyMDA1IEplZmYgSm9obnN0b24gPGpqb2hu c3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjkwCiAtIEFkZCBvcHRpb24gdG8gYWxsb3cgYmFj a3RyYWNpbmcgcGFzdCB6ZXJvIHBjIHZhbHVlLgogLSBCdWd6aWxsYSAxNzAyNzUKIAotKiBUdWUg Tm92IDE1IDIwMDUgSmVmZiBKb2huc3Rvbgk8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4w LTEuODkKKyogVHVlIE5vdiAxNSAyMDA1IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5j b20+IC0gNi4zLjAuMC0xLjg5CiAtIEJ1bXAgdXAgcmVsZWFzZSBudW1iZXIuCiAKLSogVHVlIE5v diAxNSAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0x Ljg2CisqIFR1ZSBOb3YgMTUgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29t PiAtIDYuMy4wLjAtMS44NgogLSBGaXggaWE2NCB1c2VyLXNwZWNpZmllZCBTSUdJTEwgaGFuZGxp bmcgZXJyb3IuCiAtIEJ1Z3ppbGxhIDE2NTAzOC4KIAotKiBUdWUgT2N0IDE4IDIwMDUgSmVmZiBK b2huc3Rvbgk8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuODUKKyogVHVlIE9jdCAx OCAyMDA1IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjg1 CiAtIEJ1bXAgdXAgcmVsZWFzZSBudW1iZXIuCiAKLSogVHVlIE9jdCAxOCAyMDA1IEplZmYgSm9o bnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjgyCisqIFR1ZSBPY3QgMTgg MjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS44Mgog LSBNb2RpZnkgYXR0YWNoIHBhdGNoIHRvIGFkZCBtaXNzaW5nIGZjbG9zZS4KIC0gQnVnemlsbGEg MTY2NzEyCiAKLSogVHVlIE9jdCAxMSAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhh dC5jb20+IC0gNi4zLjAuMC0xLjgxCisqIFR1ZSBPY3QgMTEgMjAwNSBKZWZmIEpvaG5zdG9uIDxq am9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS44MQogLSBCdW1wIHVwIHJlbGVhc2UgbnVt YmVyLgogCi0qIFR1ZSBPY3QgMTEgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRoYXQu Y29tPiAtIDYuMy4wLjAtMS43OAorKiBUdWUgT2N0IDExIDIwMDUgSmVmZiBKb2huc3RvbiA8ampv aG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNzgKIC0gU3VwcG9ydCBnZGIgYXR0YWNoaW5n IHRvIGEgc3RvcHBlZCBwcm9jZXNzLgogCi0qIFRodSBTZXAgMjkgMjAwNSBKZWZmIEpvaG5zdG9u CTxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS43NworKiBUaHUgU2VwIDI5IDIwMDUg SmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNzcKIC0gQnVt cCB1cCByZWxlYXNlIG51bWJlci4KIAotKiBUaHUgU2VwIDI5IDIwMDUgSmVmZiBKb2huc3Rvbgk8 ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNzQKKyogVGh1IFNlcCAyOSAyMDA1IEpl ZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjc0CiAtIEZpeCB1 cCBEU08gcmVhZCBsb2dpYyB3aGVuIHByb2Nlc3MgaXMgYXR0YWNoZWQuCiAKLSogTW9uIFNlcCAy NiAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjcz CisqIE1vbiBTZXAgMjYgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAt IDYuMy4wLjAtMS43MwogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgogCi0qIE1vbiBTZXAgMjYg MjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS43MAor KiBNb24gU2VwIDI2IDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2 LjMuMC4wLTEuNzAKIC0gRml4IGZyYW1lIHBvaW50ZXIgY2FsY3VsYXRpb24gZm9yIGlhNjQgc2ln dHJhbXAgZnJhbWUuCiAKLSogVGh1IFNlcCAyMiAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3Ru QHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjY5CisqIFRodSBTZXAgMjIgMjAwNSBKZWZmIEpvaG5z dG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS42OQogLSBCdW1wIHVwIHJlbGVh c2UgbnVtYmVyLgogCi0qIFRodSBTZXAgMjIgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkBy ZWRoYXQuY29tPiAtIDYuMy4wLjAtMS42NgorKiBUaHUgU2VwIDIyIDIwMDUgSmVmZiBKb2huc3Rv biA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNjYKIC0gUmVtb3ZlIGV4dHJhbmVv dXMgeGZyZWUuCiAKLSogV2VkIFNlcCAwNyAyMDA1IEplZmYgSm9obnN0b24JPGpqb2huc3RuQHJl ZGhhdC5jb20+IC0gNi4zLjAuMC0xLjY1CisqIFdlZCBTZXAgMDcgMjAwNSBKZWZmIEpvaG5zdG9u IDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS42NQogLSBCdW1wIHVwIHJlbGVhc2Ug bnVtYmVyLgogCi0qIFdlZCBTZXAgMDcgMjAwNSBKZWZmIEpvaG5zdG9uCTxqam9obnN0bkByZWRo YXQuY29tPiAtIDYuMy4wLjAtMS42MgorKiBXZWQgU2VwIDA3IDIwMDUgSmVmZiBKb2huc3RvbiA8 ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNjIKIC0gUmVhZGQgcmVhZG5ldmVyIG9w dGlvbgogCiAqIFdlZCBKdWwgMjcgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQu Y29tPiAtIDYuMy4wLjAtMS42MQogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKwogKiBUdWUgSnVsIDI2IDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5z dG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNTcKIC0gQnVtcCB1cCByZWxlYXNlIG51bWJlci4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCisKICogVHVlIEp1bCAyNiAyMDA1IEplZmYgSm9obnN0 b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjU0CiAtIEFkZCB0ZXN0Y2FzZSB0 byB2ZXJpZnkgcHJpbnRpbmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMKIC0gQnVnemlsbGEgMTQ2ODM1 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorCiAqIE1vbiBKdWwgMjUgMjAwNSBKZWZmIEpvaG5z dG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYuMy4wLjAtMS41MwogLSBCdW1wIHVwIHJlbGVh c2UgbnVtYmVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwogKiBNb24gSnVsIDI1IDIwMDUg SmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTEuNTAKIC0gRml4 IGJ1ZyB3aXRoIGluZm8gZnJhbWUgYW5kIGN1cnNvciBhZGRyZXNzIG9uIGlhNjQuCiAtIEFkZCB0 ZXN0Y2FzZSB0byB2ZXJpZnkgcHNldWRvLXJlZ2lzdGVycyBjYWxjdWxhdGVkIGZvciBpYTY0IHNp Z3RyYW1wLgogLSBCdWd6aWxsYSAxNjAzMzkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKICog RnJpIEp1bCAyMiAyMDA1IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gNi4z LjAuMC0xLjQ5CiAtIEJ1bXAgdXAgcmVsZWFzZSBudW1iZXIuCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorCiAqIEZyaSBKdWwgMjIgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQu Y29tPiAtIDYuMy4wLjAtMS40NgogLSBGaXggYXR0YWNoaW5nIHRvIDMyLWJpdCBwcm9jZXNzZXMg b24gNjQtYml0IHN5c3RlbXMuCiAtIEJ1Z3ppbGxhIDE2MDI1NAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKwogKiBUaHUgSnVsIDE0IDIwMDUgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0 LmNvbT4gLSA2LjMuMC4wLTEuNDUKIC0gQnVtcCB1cCByZWxlYXNlIG51bWJlci4KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisKICogVGh1IEp1bCAxNCAyMDA1IEplZmYgSm9obnN0b24gPGpqb2hu c3RuQHJlZGhhdC5jb20+IC0gNi4zLjAuMC0xLjQyCiAtIEFkZCB3b3JrLWFyb3VuZCB0byBtYWtl IGlhNjQgZ2NvcmUgd29yayBmYXN0ZXIuCiAtIEJ1Z3ppbGxhIDE0NzQzNgpAQCAtMTg5Myw3ICsy MTkyLDcgQEAgcHJlbGluayBiYXNlIGFkZHJlc3Nlcy4gIEZpeGVzIEJaIDE3NTA3NSwgQlogMTkw NTQ1LgogCiAqIEZyaSBKdW4gMTAgMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQu Y29tPiAtIDYuMy4wLjAtMS4yOAogLSBTZWN1cml0eSBlcnJhdGEgZm9yIGJmZCBhbmQgLmdkYmlu aXQgZmlsZSB1c2FnZQotLSBCdWd6aWxsYSAxNTg2ODAgCistIEJ1Z3ppbGxhIDE1ODY4MAogCiAq IFdlZCBNYXkgMTggMjAwNSBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPiAtIDYu My4wLjAtMS4yNAogLSBCdW1wIHVwIHJlbGVhc2UgbnVtYmVyLgpAQCAtMjA4OCw4ICsyMzg3LDgg QEAgcHJlbGluayBiYXNlIGFkZHJlc3Nlcy4gIEZpeGVzIEJaIDE3NTA3NSwgQlogMTkwNTQ1Lgog LSBFbmFibGUgUFBDIENGSSwgcmVtb3ZlIG1lcmdlZCBwcGMgcGF0Y2hlcy4KIAogKiBXZWQgSmFu IDEyIDIwMDUgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSA2LjMuMC4wLTAu MQotCQkgIEFuZHJldyBDYWduZXkgPGNhZ25leUByZWRoYXQuY29tPgkKLQkJICBKZWZmIEpvaG5z dG9uIDxqam9obnN0bkByZWRoYXQuY29tPgkKKwkJICBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVk aGF0LmNvbT4KKwkJICBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRoYXQuY29tPgogLSBWYXJp b3VzIGZpeGVzIHRvIGNvbXBsZXRlIHRoZSBpbXBvcnQgYW5kIG1lcmdlLgogCiAqIFdlZCBEZWMg MDEgMjAwNCBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNvbT4gLSA2LjMuMC4wCkBAIC0y MTQyLDcgKzI0NDEsNyBAQCBwcmVsaW5rIGJhc2UgYWRkcmVzc2VzLiAgRml4ZXMgQlogMTc1MDc1 LCBCWiAxOTA1NDUuCiAtIEJ1bXAgdXAgcmVsZWFzZSBudW1iZXIKIAogKiBUaHUgTm92IDExIDIw MDQgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAxLjIwMDQwMDYwNy41MQot LSBNb2RpZnkgY29uZmlndXJlIGxpbmUgdG8gbm90IHVzZSBhYnNvbHV0ZSBwYXRocy4gVGhpcyB3 YXMgCistIE1vZGlmeSBjb25maWd1cmUgbGluZSB0byBub3QgdXNlIGFic29sdXRlIHBhdGhzLiBU aGlzIHdhcwogICBjcmVhdGluZyBwcm9ibGVtcyB3aXRoIG1ha2VpbmZvL3RleGluZm8uCiAtIEdl dCByaWQgb2YgbWFrZWluZm8gaGFjay4KIEJ1Z3ppbGxhIDEzNTYzMwpAQCAtMjE4Nyw3ICsyNDg2 LDcgQEAgQnVnemlsbGEgMTM1NjMzCiAqIE1vbiBPY3QgMTAgMjAwNCBBbmRyZXcgQ2FnbmV5IDxj YWduZXlAcmVkaGF0LmNvbT4gLSAxLjIwMDQwMDYwNy4zOQogLSBGaXggY29tbWVudCBidWcgaW4g c2lnc3RlcC5leHAuCiAKLSogVGh1IE9jdCAwNyAyMDA0IEplZmYgSm9obnN0b24JPGpqb2huc3Ru QHJlZGhhdC5jb20+IC0gMS4yMDA0MDA2MDcuMzgKKyogVGh1IE9jdCAwNyAyMDA0IEplZmYgSm9o bnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+IC0gMS4yMDA0MDA2MDcuMzgKIC0gRG8gbm90IGlu dmFsaWRhdGUgY2FjaGVkIHRocmVhZCBpbmZvIHdoZW4gcmVzdW1pbmcgdGhyZWFkcy4KIC0gQnVt cCB1cCByZWxlYXNlIG51bWJlci4KIApAQCAtMjQzOCw3ICsyNzM3LDcgQEAgQnVnemlsbGEgMTM1 NjMzCiAKICogVHVlIE5vdiAxOCAyMDAzIEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5j b20+IC0gMC4yMDAzMTExNy4xCiAtIEltcG9ydCBuZXcgZ2RiIHNuYXBzaG90IGZyb20gbWFpbmxp bmUgRlNGLgotLSBGaXggc29tZSB0ZXN0ZmlsZXMuIAorLSBGaXggc29tZSB0ZXN0ZmlsZXMuCiAt IEFkZCBmaXhlcyBmb3IgZ2NvcmUsIGFuZCBwYXRjaCBmb3IgbGlidW53aW5kIHN1cHBvcnQgb24g aWE2NC4KIC0gQWRkIHRlc3RzIHRvIHNlZSB3aGF0IHZlcnNpb25zIG9mIGdjYywgYmludXRpbHMs IGdsaWJjIGFuZCBrZXJuZWwgd2UKICAgYXJlIHJ1bm5pbmcgd2l0aC4KQEAgLTI1MDQsNyArMjgw Myw3IEBAIHRvIHBvaW50ZXJzIHdoZW4gdGhlIGFkZHJlc3MgaXMgaW4gdGhlICIub3BkIiBzZWN0 aW9uLgogCiAqIFR1ZSBBdWcgMjYgMjAwMyBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNv bT4gLSAwLjIwMDMwNzEwLjI0CiAtIHNraXAgdGhlIHBwYzY0IGFuZCB4ODYtNjQgZnJhbWUgcmVk em9uZS4KLSAKKwogKiBGcmkgQXVnIDIyIDIwMDMgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVk aGF0LmNvbT4gLSAwLjIwMDMwNzEwLjIzCiAtIFJlbGF4IG9uZSB0ZXN0Y2FzZSBpbiBzZWxmdGVz dC5leHAgYSBiaXQuCiAtIEFjY2VwdCBkaWZmZXJlbnQgb3V0cHV0IGFzIHdlbGwgaW4gdGhyZWFk IGJ0IChwbGF0Zm9ybSBkZXBlbmRlbnQpLgpAQCAtMjUyOSwxMCArMjgyOCwxMCBAQCB0byBwb2lu dGVycyB3aGVuIHRoZSBhZGRyZXNzIGlzIGluIHRoZSAiLm9wZCIgc2VjdGlvbi4KIAogKiBUdWUg QXVnIDE5IDIwMDMgSmVmZiBKb2huc3RvbiA8ampvaG5zdG5AcmVkaGF0LmNvbT4gLSAwLjIwMDMw NzEwLjE4CiAtIEZpeCBpYTY0IHBjIHVud2luZGluZyB0byBpbmNsdWRlIHBzciBzbG90LgotIAor CiAqIE1vbiBBdWcgMTggMjAwMyBFbGVuYSBaYW5ub25pIDxlemFubm9uaUByZWRoYXQuY29tPiAt IDAuMjAwMzA3MTAuMTcKIC0gRml4IGluZm8gaW5zdGFsbGF0aW9uIGZvciBhbm5vdGF0ZS50ZXhp LiAoQnVnemlsbGEgMTAyNTIxKQotIAorCiAqIEZyaSBBdWcgMTUgMjAwMyBFbGVuYSBaYW5ub25p IDxlemFubm9uaUByZWRoYXQuY29tPiAtIDAuMjAwMzA3MTAuMTYKIC0gcmV2YW1wIHRscyB0ZXN0 cyBhIGJpdC4KIC0gSGFuZGxlIG5ldyBvdXRwdXQgZnJvbSBnZGIgaW4gcmVsb2NhdGUuZXhwCkBA IC0yNzQzLDcgKzMwNDIsNyBAQCB0byBwb2ludGVycyB3aGVuIHRoZSBhZGRyZXNzIGlzIGluIHRo ZSAiLm9wZCIgc2VjdGlvbi4KIC0gQWRkIHBhdGNoIGZvciAtLWFyZ3Mgd2l0aCB6ZXJvLWxlbmd0 aCBhcmd1bWVudHMuIEZpeCBmb3IgYnVnIDc5ODMzLgogCiAqIFR1ZSBEZWMgMTcgMjAwMiBFbGxp b3QgTGVlIDxzb3B3aXRoQHJlZGhhdC5jb20+IC0gMC4yMDAyMTEyOS40Ci0tIFRoZSBkZWZpbmUg ZGlyZWN0aXZlIHRvIHJwbSBpcyBzaWduaWZpY2FudCBldmVuIGlmIHRoZSBsaW5lIGl0IGlzIAor LSBUaGUgZGVmaW5lIGRpcmVjdGl2ZSB0byBycG0gaXMgc2lnbmlmaWNhbnQgZXZlbiBpZiB0aGUg bGluZSBpdCBpcwogICBpbiBoYXBwZW5zIHRvIHN0YXJ0IHdpdGggYSAnIycgY2hhcmFjdGVyLiBG aXhlZC4KIAogKiBGcmkgRGVjIDEzIDIwMDIgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0 LmNvbT4gLSAwLjIwMDIxMTI5LjMKQEAgLTI3ODUsNyArMzA4NCw3IEBAIHRvIHBvaW50ZXJzIHdo ZW4gdGhlIGFkZHJlc3MgaXMgaW4gdGhlICIub3BkIiBzZWN0aW9uLgogLSBVcGdyYWRlIHBhdGNo ZXMuCiAtIEJ1aWxkIGdkYi9nZGJzZXJ2ZXIgYXMgd2VsbC4KIC0gRGVmaW5lIGFuZCB1c2UgJ2N2 c2RhdGUnLgotLSBEbyAlJXNldHVwIHNwZWNpZnlpbmcgdGhlIHNvdXJjZSBkaXJlY3RvcnkgbmFt ZS4gCistIERvICUlc2V0dXAgc3BlY2lmeWluZyB0aGUgc291cmNlIGRpcmVjdG9yeSBuYW1lLgog LSBEb24ndCBjZCB1cCBvbmUgZGlyIGJlZm9yZSByZW1vdmluZyB0Y2wgYW5kIGZyaWVuZHMuCiAt IENoYW5nZSB0aGUgY29uZmlndXJlIGNvbW1hbmQgdG8gYWxsb3cgZm9yIHRoZSBuZXcgc291cmNl IHRyZWUgbmFtZS4KIC0gRGl0dG8gZm9yIHRoZSBjb3B5IG9mIE5FV1MuCkBAIC0yODU3LDcgKzMx NTYsNyBAQCBHZW5lcmFsIHJldmFtcC4KIC0gVXBkYXRlIHRvIGN1cnJlbnQKIAogKiBXZWQgTWFy IDEzIDIwMDIgVHJvbmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4gNS4xLjkwQ1ZT LTEKLS0gVXBkYXRlIHRvIGN1cnJlbnQgNS4yIGJyYW5jaCAKKy0gVXBkYXRlIHRvIGN1cnJlbnQg NS4yIGJyYW5jaAogCiAqIFRodSBKYW4gMjQgMjAwMiBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRl Z0ByZWRoYXQuY29tPiA1LjEuMS0xCiAtIDUuMS4xCkBAIC0yODc5LDcgKzMxNzgsNyBAQCBHZW5l cmFsIHJldmFtcC4KIC0gQWRkIHBhdGNoIGZyb20gamFrdWJAcmVkaGF0LmNvbSB0byBpbXByb3Zl IGhhbmRsaW5nIG9mIERXQVJGCiAKICogTW9uIE5vdiAxMiAyMDAxIFRyb25kIEVpdmluZCBHbG9t c3JvZCA8dGVnQHJlZGhhdC5jb20+IDUuMC45My0xCi0tIDUuMC45MyAKKy0gNS4wLjkzCiAtIGhh bmRsZSBtaXNzaW5nIGluZm8gcGFnZXMgaW4gcG9zdC9wcmUgc2NyaXB0cwogCiAqIFdlZCBPY3Qg MzEgMjAwMSBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPiA1LjAuOTItMQpA QCAtMjg5MiwxMSArMzE5MSwxMSBAQCBHZW5lcmFsIHJldmFtcC4KICogV2VkIE9jdCAxNyAyMDAx IFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+IDUuMHJoLTE3CiAtIE5ldyBz bmFwc2hvdAogCi0qIFRodSBTZXAgMjcgMjAwMSBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0By ZWRoYXQuY29tPiAKKyogVGh1IFNlcCAyNyAyMDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVn QHJlZGhhdC5jb20+CiAtIE5ldyBzbmFwc2hvdAogCiAqIFdlZCBTZXAgMTIgMjAwMSBUcm9uZCBF aXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPiA1LjByaC0xNgotLSBOZXcgc25hcHNob3Qg CistIE5ldyBzbmFwc2hvdAogCiAqIE1vbiBBdWcgMTMgMjAwMSBUcm9uZCBFaXZpbmQgR2xvbXNy b2QgPHRlZ0ByZWRoYXQuY29tPiA1LjByaC0xNQogLSBEb24ndCBidWlsZHJlcXVpcmUgY29tcGF0 LWdsaWJjICgjNTE2OTApCkBAIC0yOTE0LDcgKzMyMTMsNyBAQCBHZW5lcmFsIHJldmFtcC4KICog RnJpIEp1biAxNSAyMDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAt IE5ldyBzbmFwc2hvdAogLSBBZGQgbmN1cnNlcy1kZXZlbCB0byBidWlsZHByZXJlcQotLSBSZW1v dmUgcGVybCBmcm9tIGJ1aWxkcHJlcmVxLCBhcyBnZGIgY2hhbmdlZCB0aGUgd2F5IAorLSBSZW1v dmUgcGVybCBmcm9tIGJ1aWxkcHJlcmVxLCBhcyBnZGIgY2hhbmdlZCB0aGUgd2F5CiAgIHZlcnNp b24gc3RyaW5ncyBhcmUgZ2VuZXJhdGVkCiAKICogVGh1IEp1biAxNCAyMDAxIFRyb25kIEVpdmlu ZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CkBAIC0yOTI5LDcgKzMyMjgsNyBAQCBHZW5lcmFs IHJldmFtcC4KIC0gS2V2aW4ncyBwYXRjaCBpcyBub3cgcGFydCBvZiBnZGIKIAogKiBNb24gQXBy ICA5IDIwMDEgVHJvbmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KLS0gQWRkIHBh dGNoIGZyb20ga2V2aW5iQHJlZGhhdC5jb20gdG8gZml4IGZsb2F0aW5nIHBvaW50ICsgdGhyZWFk IAorLSBBZGQgcGF0Y2ggZnJvbSBrZXZpbmJAcmVkaGF0LmNvbSB0byBmaXggZmxvYXRpbmcgcG9p bnQgKyB0aHJlYWQKICAgcHJvYmxlbSAoIzI0MzEwKQogLSByZW1vdmUgb2xkIHdvcmthcm91bmRz CiAtIG5ldyBzbmFwc2hvdApAQCAtMzA1Miw3ICszMzUxLDcgQEAgZnJvbSBjb2RlIGZ1c2lvbiBD RC1ST00pLgogKiBUaHUgQXByICAxIDE5OTkgSmVmZiBKb2huc29uIDxqYmpAcmVkaGF0LmNvbT4K IC0gc3BhcmMgd2l0aCAyLjIga2VybmVscyBubyBsb25nZXIgdXNlcyBzdW5vcyBwdHJhY2UgKGRh dmVtKQogCi0qIFN1biBNYXIgMjEgMTk5OSBDcmlzdGlhbiBHYWZ0b24gPGdhZnRvbkByZWRoYXQu Y29tPiAKKyogU3VuIE1hciAyMSAxOTk5IENyaXN0aWFuIEdhZnRvbiA8Z2FmdG9uQHJlZGhhdC5j b20+CiAtIGF1dG8gcmVidWlsZCBpbiB0aGUgbmV3IGJ1aWxkIGVudmlyb25tZW50IChyZWxlYXNl IDMpCiAKICogTW9uIE1hciAgOCAxOTk5IEplZmYgSm9obnNvbiA8amJqQHJlZGhhdC5jb20+Cgpk aWZmIC0tZ2l0IGEvZ2RiY29tcGFyZSBiL2dkYmNvbXBhcmUKaW5kZXggZmNjNWFlNS4uYWJhNDQ5 MyAxMDA3NTUKLS0tIGEvZ2RiY29tcGFyZQorKysgYi9nZGJjb21wYXJlCkBAIC0xLDUgKzEsNSBA QAogIyEgL3Vzci9iaW4vcGVybAotIyAkSWQ6IGdkYmNvbXBhcmUsdiAxLjQgMjAwNy8wNC8yMiAw ODo1MjowOSBqa3JhdG9jaCBFeHAgJAorIyAkSWQ6IGdkYmNvbXBhcmUsdiAxLjUgMjAwOC8wMy8w MSAwODowMTo1NyBqa3JhdG9jaCBFeHAgJAogCiAKIHVzZSBzdHJpY3Q7CgpkaWZmIC0tZ2l0IGEv Z2RicGF0Y2hubyBiL2dkYnBhdGNobm8KaW5kZXggNjZhZmUwMi4uYjM1NTYxOCAxMDA3NTUKLS0t IGEvZ2RicGF0Y2hubworKysgYi9nZGJwYXRjaG5vCkBAIC0xLDUgKzEsNSBAQAogIyEgL2Jpbi9z aAotIyAkSWQkCisjICRJZDogZ2RicGF0Y2hubyx2IDEuMSAyMDA2LzEyLzI5IDIwOjM1OjQzIGpr cmF0b2NoIEV4cCAkCiAjIFByaW50IHRoZSBmaXJzdCB1bnVzZWQgcGF0Y2ggbnVtYmVyIGFjcm9z cyBhbGwgdGhlIGN1cnJlbnQgcGFja2FnZSdzIGJyYW5jaGVzLgogCiBlY2hvICRbMSskKGNhdCAu Li8qLyouc3BlY3xzZWQgLW4gJ3MvXlsjICVdKnBhdGNoXChbMC05XSpcKS4qJC9cMS9wJ3xzb3J0 IC1ybnV8aGVhZCAtbjEpXQoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGUx YTE1ZWQuLjM2NzhkM2MgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwy ICsxLDIgQEAKLTFlM2EyNjA0MGRjZGQzNTc5ZDc1OTY3MDg1ZWI5MmI5ICBsaWJzdGRjKystdjMt cHl0aG9uLXIxNTE3OTgudGFyLnh6Ci03Mjk1MTdjYzhlNmNhNmUyNWNmNGJlMzQzZmZjNGMzZCAg Z2RiLTYuOC45MS4yMDA5MDkzMC50YXIuYnoyCis1M2ViYWRlMzliZmRjMWQwNjc0NGU1MTg4YjY0 MzhiMSAgZ2RiLTcuMC4xLnRhci5iejIKKzc1MDc1NDBjNTBhMWVkZWIyZmMyMmEzN2JjNGEwOGI4 ICBsaWJzdGRjKystdjMtcHl0aG9uLXIxNTE3OTgudGFyLmJ6Mgo=