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: - archer-jankratochvil-fedora12 commit: Date: Sat, 27 Jun 2026 23:54:21 GMT Message-ID: <178260446175.1.15364231502904566212.rpms-gdb-6370c17fdf8f@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 6370c17fdf8f9ed891910ec6e90bdf99e7215f72 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogNjM3MGMxN2ZkZjhmOWVkODkxOTEwZWM2ZTkwYmRmOTllNzIx NWY3MgogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3Jh cHJvamVjdC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMDktMDgtMThUMTk6Mzc6MzUrMDA6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzE4NTMvLTE2IGluIDIgZmlsZShzKQogICAgICAgICAg ICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jLzYzNzBj MTdmZGY4ZjllZDg5MTkxMGVjNmU5MGJkZjk5ZTcyMTVmNzI/YnJhbmNoPWdkYi0xNy4yLXJlYmFz ZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgLSBhcmNoZXItamFua3JhdG9jaHZp bC1mZWRvcmExMiBjb21taXQ6CiAgICA4NTBlM2NiMzhhMjVjYjdmZGZhNGNlZjY2NzYyNmZmYmRl NTFiY2FjCi0gRml4IHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50cy4KCi0tLQpkaWZmIC0tZ2l0IGEv Z2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggMTVjZDdlZC4uMDhjYTRl ZCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBA IC0yLDcgKzIsNyBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hl cgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQK IAogR0lUIHNuYXBzaG90OgotY29tbWl0IDVlMGQxY2M3NGYxMTkzOTFhMmMzYWUyNWVmNTc0OWZj Mjg2NzRmMDYKK2NvbW1pdCA4NTBlM2NiMzhhMjVjYjdmZGZhNGNlZjY2NzYyNmZmYmRlNTFiY2Fj CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci10cm9t ZXktY2FsbC1mcmFtZS1jZmEKQEAgLTI5MCw2ICsyOTAsMTAyIEBAIGluZGV4IDliNWQyYzYuLjYx Njc2YTkgMTAwNjQ0CiAgICBhZGFfb3BfbmFtZSwKICAgIGFkYV9kdW1wX3N1YmV4cF9ib2R5LAog ICAgYWRhX2V2YWx1YXRlX3N1YmV4cAorZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC1uYXQu YyBiL2dkYi9hbWQ2NC1saW51eC1uYXQuYworaW5kZXggN2Q4NDYxYy4uYTZkMzVkNyAxMDA2NDQK Ky0tLSBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5j CitAQCAtMjcwLDYgKzI3MCw4IEBAIGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZF90IHB0aWQsIGlu dCByZWdudW0pCisgICByZXR1cm4gdmFsdWU7CisgfQorIAorKy8qIFNldCBkZWJ1ZyByZWdpc3Rl ciBSRUdOVU0gdG8gVkFMVUUgaW4gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KKysKKyBz dGF0aWMgdm9pZAorIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZF90IHB0aWQsIGludCByZWdudW0s IHVuc2lnbmVkIGxvbmcgdmFsdWUpCisgeworQEAgLTI4Niw2ICsyODgsOCBAQCBhbWQ2NF9saW51 eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQor ICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyByZWdpc3RlciIp KTsKKyB9CisgCisrLyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1Bf TElTVC4gICovCisrCisgc3RhdGljIHZvaWQKKyBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJvbCAo dW5zaWduZWQgbG9uZyBjb250cm9sKQorIHsKK0BAIC0yOTcsNiArMzAxLDggQEAgYW1kNjRfbGlu dXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKKyAgICAgYW1kNjRfbGlu dXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKKyB9CisgCisrLyogU2V0IGFk ZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNU LiAgKi8KKysKKyBzdGF0aWMgdm9pZAorIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVn bnVtLCBDT1JFX0FERFIgYWRkcikKKyB7CitAQCAtMzEwLDE4ICszMTYsNTUgQEAgYW1kNjRfbGlu dXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorICAgICBhbWQ2NF9s aW51eF9kcl9zZXQgKHB0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7CisgfQorIAor Ky8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQcyBv ZiBMV1BfTElTVC4gICovCisrCisgc3RhdGljIHZvaWQKKyBhbWQ2NF9saW51eF9kcl9yZXNldF9h ZGRyIChpbnQgcmVnbnVtKQorIHsKKyAgIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChyZWdudW0s IDApOworIH0KKyAKKysvKiBHZXQgRFJfU1RBVFVTIGZyb20gb25seSB0aGUgb25lIExXUCBvZiBJ TkZFUklPUl9QVElELiAgKi8KKysKKyBzdGF0aWMgdW5zaWduZWQgbG9uZworIGFtZDY0X2xpbnV4 X2RyX2dldF9zdGF0dXMgKHZvaWQpCisgeworICAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAo aW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsKKyB9CisgCisrLyogVW5zZXQgVkFMVUUgYml0cyBp biBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2YgTFdQX0xJU1QuICAqLworKworK3N0YXRpYyB2b2lk CisrYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCisrewor KyAgc3RydWN0IGx3cF9pbmZvICpscDsKKysgIHB0aWRfdCBwdGlkOworKworKyAgQUxMX0xXUFMg KGxwLCBwdGlkKQorKyAgICB7CisrICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKKysgICAgICAK KysgICAgICB2YWx1ZSA9IGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsKKysg ICAgICB2YWx1ZSAmPSB+bWFzazsKKysgICAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERS X1NUQVRVUywgdmFsdWUpOworKyAgICB9CisrfQorKworKy8qIFNlZSBpMzg2X2RyX2xvd190eXBl LmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wK KysgICBvciBhbWQ2NF9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRo ZSByZWdpc3RlciBjYWNoZQorKyAgIChhbWQ2NF9saW51eF9kcikuICAqLworKworK3N0YXRpYyB2 b2lkCisrYW1kNjRfbGludXhfZHJfZGV0YWNoICh2b2lkKQorK3sKKysgIGludCByZWdudW07Cisr CisrICBhbWQ2NF9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0NPTlRST0wsIDApOwor KyAgYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVzICh+MFVMKTsKKysgIGZvciAocmVnbnVtID0g RFJfRklSU1RBRERSOyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJlZ251bSsrKQorKyAgICBhbWQ2 NF9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIHJlZ251bSwgMCk7CisrfQorKworIHN0YXRp YyB2b2lkCisgYW1kNjRfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCisgeworQEAgLTY3 Miw2ICs3MTUsOCBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQgKHZvaWQpCisgICBpMzg2 X2RyX2xvdy5zZXRfYWRkciA9IGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyOworICAgaTM4Nl9kcl9s b3cucmVzZXRfYWRkciA9IGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CisgICBpMzg2X2RyX2xv dy5nZXRfc3RhdHVzID0gYW1kNjRfbGludXhfZHJfZ2V0X3N0YXR1czsKKysgIGkzODZfZHJfbG93 LnVuc2V0X3N0YXR1cyA9IGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKKysgIGkzODZfZHJf bG93LmRldGFjaCA9IGFtZDY0X2xpbnV4X2RyX2RldGFjaDsKKyAgIGkzODZfc2V0X2RlYnVnX3Jl Z2lzdGVyX2xlbmd0aCAoOCk7CisgCisgICAvKiBPdmVycmlkZSB0aGUgR05VL0xpbnV4IGluZmVy aW9yIHN0YXJ0dXAgaG9vay4gICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxv Y2suYwogaW5kZXggMTg4OWVjZC4uMzdmYTM0MiAxMDA2NDQKIC0tLSBhL2dkYi9ibG9jay5jCkBA IC0zNjgsNyArNDY0LDcgQEAgaW5kZXggNTNlNzM3MS4uZDM3M2Y4YSAxMDA2NDQKICsKICAjZW5k aWYgLyogQkxPQ0tfSCAqLwogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJl YWtwb2ludC5jCi1pbmRleCBmMzk0MGUxLi43MDIyMmE0IDEwMDY0NAoraW5kZXggZjM5NDBlMS4u MjM0OWZiYyAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3Bv aW50LmMKIEBAIC01OSw2ICs1OSw3IEBACkBAIC00NzcsNyArNTczLDk3IEBAIGluZGV4IGYzOTQw ZTEuLjcwMjIyYTQgMTAwNjQ0CiAgCXJldHVybjsKICAgICAgICB9CiAgCi1AQCAtODg0Myw2ICs4 ODU2LDIyIEBAIGFsbF90cmFjZXBvaW50cyAoKQorQEAgLTE2OTAsNiArMTcwMyw3IEBAIGRldGFj aF9icmVha3BvaW50cyAoaW50IHBpZCkKKyAgICAgaWYgKGItPmluc2VydGVkKQorICAgICAgIHZh bCB8PSByZW1vdmVfYnJlYWtwb2ludCAoYiwgbWFya19pbnNlcnRlZCk7CisgICB9CisrICB2YWwg fD0gdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cyAoKTsKKyAgIGRvX2NsZWFudXBzIChvbGRfY2hh aW4pOworICAgcmV0dXJuIHZhbDsKKyB9CitAQCAtMTc4MiwxMiArMTc5NiwxNCBAQCByZW1vdmVf YnJlYWtwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykK KyAJcmV0dXJuIHZhbDsKKyAgICAgICBiLT5pbnNlcnRlZCA9IChpcyA9PSBtYXJrX2luc2VydGVk KTsKKyAgICAgfQorLSAgZWxzZSBpZiAoYi0+bG9jX3R5cGUgPT0gYnBfbG9jX2hhcmR3YXJlX3dh dGNocG9pbnQpCisrICAvKiBicF9sb2NfaGFyZHdhcmVfd2F0Y2hwb2ludCB3aXRoIG1hcmtfaW5z ZXJ0ZWQgaXMgYmVpbmcgaGFuZGxlZCBieQorKyAgICAgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50 cy4gICovCisrICBlbHNlIGlmIChiLT5sb2NfdHlwZSA9PSBicF9sb2NfaGFyZHdhcmVfd2F0Y2hw b2ludCAmJiBpcyA9PSBtYXJrX3VuaW5zZXJ0ZWQpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgdmFs dWUgKnY7CisgICAgICAgc3RydWN0IHZhbHVlICpuOworIAorLSAgICAgIGItPmluc2VydGVkID0g KGlzID09IG1hcmtfaW5zZXJ0ZWQpOworKyAgICAgIGItPmluc2VydGVkID0gMDsKKyAgICAgICB2 YWwgPSB0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQgKGItPmFkZHJlc3MsIGItPmxlbmd0aCwgCisg CQkJCSAgICAgIGItPndhdGNocG9pbnRfdHlwZSk7CisgCitAQCAtMjk2MSw4ICsyOTc3LDEyIEBA IGJwc3RhdF9jaGVja19sb2NhdGlvbiAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwgQ09S RV9BRERSIGJwX2FkZHIpCisgCisgLyogSWYgQlMgcmVmZXJzIHRvIGEgd2F0Y2hwb2ludCwgZGV0 ZXJtaW5lIGlmIHRoZSB3YXRjaGVkIHZhbHVlcworICAgIGhhcyBhY3R1YWxseSBjaGFuZ2VkLCBh bmQgd2Ugc2hvdWxkIHN0b3AuICBJZiBub3QsIHNldCBCUy0+c3RvcAorLSAgIHRvIDAuICAqLwor LXN0YXRpYyB2b2lkCisrICAgdG8gMC4KKysgICBSZXR1cm4gMCBmb3Igd2F0Y2hwb2ludHMgd2hp Y2ggY291bGQgbm90IGJlIHRoZSBjYXVzZSBvZiB0aGlzIHRyYXAuCisrICAgSW4gc3VjaCBjYXNl IFBSSU5UX0lUIHdpbGwgYmUgcHJpbnRfaXRfbm9vcCBhbmQgU1RPUCB3aWxsIGJlIDAuCisrICAg T3RoZXJ3aXNlIHJldHVybiAxIGJ1dCBpbiBzdWNoIGNhc2UgaXQgaXMgbm90IGd1YXJhbnRlZWQg d2hldGhlciB0aGlzCisrICAgYnJlYWtwb2ludCBkaWQgb3IgZGlkIG5vdCB0cmlnZ2VyIHRoaXMg dHJhcC4gICovCisrc3RhdGljIGludAorIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQg YnMpCisgeworICAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCA9IGJzLT5icmVha3BvaW50 X2F0OworQEAgLTMwNTEsOCArMzA3MSwxMCBAQCBicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnBz dGF0IGJzKQorIAkgICAgIGFueXRoaW5nIGZvciB0aGlzIHdhdGNocG9pbnQuICAqLworIAkgIGJz LT5wcmludF9pdCA9IHByaW50X2l0X25vb3A7CisgCSAgYnMtPnN0b3AgPSAwOworKwkgIHJldHVy biAwOworIAl9CisgICAgIH0KKysgIHJldHVybiAxOworIH0KKyAKKyAKK0BAIC0zMTU2LDYgKzMx NzgsOCBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKENPUkVfQUREUiBicF9hZGRyLCBwdGlkX3QgcHRp ZCkKKyAKKyAgIEFMTF9CUF9MT0NBVElPTlMgKGJsKQorICAgeworKyAgICBicHN0YXQgYnNfcHJl diA9IGJzOworKworICAgICBiID0gYmwtPm93bmVyOworICAgICBnZGJfYXNzZXJ0IChiKTsKKyAg ICAgaWYgKCFicmVha3BvaW50X2VuYWJsZWQgKGIpICYmIGItPmVuYWJsZV9zdGF0ZSAhPSBicF9w ZXJtYW5lbnQpCitAQCAtMzE3Niw2ICszMjAwLDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChDT1JF X0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCisgICAgIC8qIENvbWUgaGVyZSBpZiBpdCdzIGEg d2F0Y2hwb2ludCwgb3IgaWYgdGhlIGJyZWFrIGFkZHJlc3MgbWF0Y2hlcyAqLworIAorICAgICBi cyA9IGJwc3RhdF9hbGxvYyAoYmwsIGJzKTsJLyogQWxsb2MgYSBicHN0YXQgdG8gZXhwbGFpbiBz dG9wICovCisrICAgIGdkYl9hc3NlcnQgKGJzX3ByZXYtPm5leHQgPT0gYnMpOworIAorICAgICAv KiBBc3N1bWUgd2Ugc3RvcC4gIFNob3VsZCB3ZSBmaW5kIHdhdGNocG9pbnQgdGhhdCBpcyBub3Qg YWN0dWFsbHkKKyAgICAgICAgdHJpZ2dlcmVkLCBvciBpZiBjb25kaXRpb24gb2YgYnJlYWtwb2lu dCBpcyBmYWxzZSwgd2UnbGwgcmVzZXQKK0BAIC0zMTgzLDkgKzMyMDgsMTggQEAgYnBzdGF0X3N0 b3Bfc3RhdHVzIChDT1JFX0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCisgICAgIGJzLT5zdG9w ID0gMTsKKyAgICAgYnMtPnByaW50ID0gMTsKKyAKKy0gICAgYnBzdGF0X2NoZWNrX3dhdGNocG9p bnQgKGJzKTsKKy0gICAgaWYgKCFicy0+c3RvcCkKKy0gICAgICBjb250aW51ZTsKKysgICAgaWYg KCFicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnMpKQorKyAgICAgIHsKKysJLyogRW5zdXJlIGJw c3RhdF9leHBsYWluc19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUK KysJICAgdGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCisrCisrCWdkYl9hc3NlcnQgKGJzLT5w cmludF9pdCA9PSBwcmludF9pdF9ub29wKTsKKysJZ2RiX2Fzc2VydCAoIWJzLT5zdG9wKTsKKysJ eGZyZWUgKGJzKTsKKysJYnMgPSBic19wcmV2OworKwlicy0+bmV4dCA9IE5VTEw7CisrCWNvbnRp bnVlOworKyAgICAgIH0KKyAKKyAgICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8 IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAorIAl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBf bWFzdGVyKQorQEAgLTg4NDMsNiArODg3NywyMiBAQCBhbGxfdHJhY2Vwb2ludHMgKCkKICAgIHJl dHVybiB0cF92ZWM7CiAgfQogIApAQCAtNTAwLDcgKzY4Niw3IEBAIGluZGV4IGYzOTQwZTEuLjcw MjIyYTQgMTAwNjQ0CiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJy ZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhayBjb21tYW5kcy4KICAgICBJdCBpcyBkZWZp bmVkIGFzIGEgbWFjcm8gdG8gcHJldmVudCBkdXBsaWNhdGlvbi4KLUBAIC05MzQ1LDQgKzkzNzQs NSBAQCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMt aW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCitAQCAtOTM0NSw0ICs5Mzk1LDUgQEAgaW5mZXJpb3Ig aW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUg aXMgb2ZmLiIpLAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAg IG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3By b2NlZWQpOwpAQCAtMTAzNjIsNiArMTA1NDgsMjc0IEBAIGluZGV4IDVlNTU1NzMuLjU0MzlhYmEg MTAwNjQ0CiAgIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24KICAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkg YW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAgIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywg YXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkaWZmIC0tZ2l0IGEvZ2RiL2kz ODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYworaW5kZXggOTkxYjI3Zi4uNDEx YjQxYiAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCisrKysgYi9nZGIvaTM4Ni1s aW51eC1uYXQuYworQEAgLTU4Niw2ICs1ODYsOCBAQCBpMzg2X2xpbnV4X3N0b3JlX2luZmVyaW9y X3JlZ2lzdGVycyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKKyAKKyBzdGF0aWMgdW5zaWduZWQg bG9uZyBpMzg2X2xpbnV4X2RyW0RSX0NPTlRST0wgKyAxXTsKKyAKKysvKiBHZXQgZGVidWcgcmVn aXN0ZXIgUkVHTlVNIHZhbHVlIGZyb20gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KKysK KyBzdGF0aWMgdW5zaWduZWQgbG9uZworIGkzODZfbGludXhfZHJfZ2V0IChwdGlkX3QgcHRpZCwg aW50IHJlZ251bSkKKyB7CitAQCAtNjE0LDYgKzYxNiw4IEBAIGkzODZfbGludXhfZHJfZ2V0IChw dGlkX3QgcHRpZCwgaW50IHJlZ251bSkKKyAgIHJldHVybiB2YWx1ZTsKKyB9CisgCisrLyogU2V0 IGRlYnVnIHJlZ2lzdGVyIFJFR05VTSB0byBWQUxVRSBpbiBvbmx5IHRoZSBvbmUgTFdQIG9mIFBU SUQuICAqLworKworIHN0YXRpYyB2b2lkCisgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlk LCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQorIHsKK0BAIC02MzAsNiArNjM0LDgg QEAgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBs b25nIHZhbHVlKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1 ZyByZWdpc3RlciIpKTsKKyB9CisgCisrLyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwg TFdQcyBvZiBMV1BfTElTVC4gICovCisrCisgc3RhdGljIHZvaWQKKyBpMzg2X2xpbnV4X2RyX3Nl dF9jb250cm9sICh1bnNpZ25lZCBsb25nIGNvbnRyb2wpCisgeworQEAgLTY0MSw2ICs2NDcsOCBA QCBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sICh1bnNpZ25lZCBsb25nIGNvbnRyb2wpCisgICAg IGkzODZfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKKyB9CisgCisr LyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9m IExXUF9MSVNULiAgKi8KKysKKyBzdGF0aWMgdm9pZAorIGkzODZfbGludXhfZHJfc2V0X2FkZHIg KGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorIHsKK0BAIC02NTQsMTggKzY2Miw1NSBAQCBp Mzg2X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FERFIgYWRkcikKKyAgICAg aTM4Nl9saW51eF9kcl9zZXQgKHB0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7Cisg fQorIAorKy8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwg TFdQcyBvZiBMV1BfTElTVC4gICovCisrCisgc3RhdGljIHZvaWQKKyBpMzg2X2xpbnV4X2RyX3Jl c2V0X2FkZHIgKGludCByZWdudW0pCisgeworICAgaTM4Nl9saW51eF9kcl9zZXRfYWRkciAocmVn bnVtLCAwKTsKKyB9CisgCisrLyogR2V0IERSX1NUQVRVUyBmcm9tIG9ubHkgdGhlIG9uZSBMV1Ag b2YgSU5GRVJJT1JfUFRJRC4gICovCisrCisgc3RhdGljIHVuc2lnbmVkIGxvbmcKKyBpMzg2X2xp bnV4X2RyX2dldF9zdGF0dXMgKHZvaWQpCisgeworICAgcmV0dXJuIGkzODZfbGludXhfZHJfZ2V0 IChpbmZlcmlvcl9wdGlkLCBEUl9TVEFUVVMpOworIH0KKyAKKysvKiBVbnNldCBWQUxVRSBiaXRz IGluIERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCisrCisrc3RhdGljIHZv aWQKKytpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorK3sK KysgIHN0cnVjdCBsd3BfaW5mbyAqbHA7CisrICBwdGlkX3QgcHRpZDsKKysKKysgIEFMTF9MV1BT IChscCwgcHRpZCkKKysgICAgeworKyAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CisrICAgICAg CisrICAgICAgdmFsdWUgPSBpMzg2X2xpbnV4X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsKKysg ICAgICB2YWx1ZSAmPSB+bWFzazsKKysgICAgICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgRFJf U1RBVFVTLCB2YWx1ZSk7CisrICAgIH0KKyt9CisrCisrLyogU2VlIGkzODZfZHJfbG93X3R5cGUu ZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sCisr ICAgb3IgaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSBy ZWdpc3RlciBjYWNoZQorKyAgIChpMzg2X2xpbnV4X2RyKS4gICovCisrCisrc3RhdGljIHZvaWQK KytpMzg2X2xpbnV4X2RyX2RldGFjaCAodm9pZCkKKyt7CisrICBpbnQgcmVnbnVtOworKworKyAg aTM4Nl9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0NPTlRST0wsIDApOworKyAgaTM4 Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKH4wVUwpOworKyAgZm9yIChyZWdudW0gPSBEUl9GSVJT VEFERFI7IHJlZ251bSA8PSBEUl9MQVNUQUREUjsgcmVnbnVtKyspCisrICAgIGkzODZfbGludXhf ZHJfc2V0IChpbmZlcmlvcl9wdGlkLCByZWdudW0sIDApOworK30KKysKKyBzdGF0aWMgdm9pZAor IGkzODZfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCisgeworQEAgLTgzMiw2ICs4Nzcs OCBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKKyAgIGkzODZfZHJfbG93LnNl dF9hZGRyID0gaTM4Nl9saW51eF9kcl9zZXRfYWRkcjsKKyAgIGkzODZfZHJfbG93LnJlc2V0X2Fk ZHIgPSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CisgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVz ID0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzOworKyAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVz ID0gaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXM7CisrICBpMzg2X2RyX2xvdy5kZXRhY2ggPSBp Mzg2X2xpbnV4X2RyX2RldGFjaDsKKyAgIGkzODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAo NCk7CisgCisgICAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJhY2UgcmVzdW1lIG1ldGhvZC4g ICovCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmMgYi9nZGIvaTM4Ni1uYXQuYworaW5kZXgg YWIxYmQ4YS4uZWUzMzBiOCAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LW5hdC5jCisrKysgYi9nZGIv aTM4Ni1uYXQuYworQEAgLTEzNyw4ICsxMzcsMTEgQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUg aTM4Nl9kcl9sb3c7CisgI2RlZmluZSBJMzg2X0RSX0dFVF9SV19MRU4oaSkgXAorICAgKChkcl9j b250cm9sX21pcnJvciA+PiAoRFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRST0xfU0laRSAqIChp KSkpICYgMHgwZikKKyAKKysvKiBNYXNrIHRoYXQgdGhpcyBJJ3RoIHdhdGNocG9pbnQgaGFzIHRy aWdnZXJlZC4gICovCisrI2RlZmluZSBJMzg2X0RSX1dBVENIX01BU0soaSkJKDEgPDwgKGkpKQor KworIC8qIERpZCB0aGUgd2F0Y2hwb2ludCB3aG9zZSBhZGRyZXNzIGlzIGluIHRoZSBJJ3RoIHJl Z2lzdGVyIGJyZWFrPyAgKi8KKy0jZGVmaW5lIEkzODZfRFJfV0FUQ0hfSElUKGkpCShkcl9zdGF0 dXNfbWlycm9yICYgKDEgPDwgKGkpKSkKKysjZGVmaW5lIEkzODZfRFJfV0FUQ0hfSElUKGkpCShk cl9zdGF0dXNfbWlycm9yICYgSTM4Nl9EUl9XQVRDSF9NQVNLIChpKSkKKyAKKyAvKiBBIG1hY3Jv IHRvIGxvb3Agb3ZlciBhbGwgZGVidWcgcmVnaXN0ZXJzLiAgKi8KKyAjZGVmaW5lIEFMTF9ERUJV R19SRUdJU1RFUlMoaSkJZm9yIChpID0gMDsgaSA8IERSX05BRERSOyBpKyspCitAQCAtMzU4LDYg KzM2MSwxMCBAQCBpMzg2X2luc2VydF9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCB1bnNpZ25lZCBsZW5fcndfYml0cykKKyAgIGkzODZfZHJfbG93LnNldF9hZGRyIChpLCBhZGRy KTsKKyAgIGkzODZfZHJfbG93LnNldF9jb250cm9sIChkcl9jb250cm9sX21pcnJvcik7CisgCisr ICAvKiBPbmx5IGEgc2FuaXR5IGNoZWNrIGZvciBsZWZ0b3ZlciBiaXRzIChzZXQgcG9zc2libHkg b25seSBieSBpbmZlcmlvcikuICAqLworKyAgaWYgKGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cykK KysgICAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzIChJMzg2X0RSX1dBVENIX01BU0sgKGkpKTsK KysKKyAgIHJldHVybiAwOworIH0KKyAKK0BAIC0zODcsNiArMzk0LDExIEBAIGkzODZfcmVtb3Zl X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRz KQorIAkgICAgICBpMzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfY29udHJvbF9taXJyb3IpOwor IAkgICAgICBpZiAoaTM4Nl9kcl9sb3cucmVzZXRfYWRkcikKKyAJCWkzODZfZHJfbG93LnJlc2V0 X2FkZHIgKGkpOworKworKwkgICAgICAvKiBTdGF0dXMgbXVzdCBiZSBhbHJlYWR5IHF1ZXJpZWQg Zm9yIGVhY2ggTFdQLiAgT3RoZXJ3aXNlIGl0IHdpbGwKKysJICAgICAgICAgYmUgbG9zdCBpbiBh bGwtc3RvcCBtb2RlICsgYnJlYWtwb2ludCBhbHdheXMtaW5zZXJ0ZWQgb2ZmLiAgKi8KKysJICAg ICAgaWYgKGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cykKKysJCWkzODZfZHJfbG93LnVuc2V0X3N0 YXR1cyAoSTM4Nl9EUl9XQVRDSF9NQVNLIChpKSk7CisgCSAgICB9CisgCSAgcmV0dmFsID0gMDsK KyAJfQorQEAgLTUyMCw2ICs1MzIsMTcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQorICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCisr LyogU2VlIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICAqLworKworK3N0YXRpYyBpbnQKKytp Mzg2X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBpZiAoaTM4Nl9kcl9sb3cuZGV0 YWNoKQorKyAgICBpMzg2X2RyX2xvdy5kZXRhY2ggKCk7CisrCisrICByZXR1cm4gMDsKKyt9Cisr CisgLyogUmV0dXJuIG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9yeSByZWdpb24gdGhh dCBzdGFydHMgYXQKKyAgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0 ZXMuICAqLworIAorQEAgLTU3NSwyOCArNTk4LDcgQEAgc3RhdGljIGludAorIGkzODZfc3RvcHBl ZF9ieV93YXRjaHBvaW50ICh2b2lkKQorIHsKKyAgIENPUkVfQUREUiBhZGRyID0gMDsKKy0gIHJl dHVybiBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzICgmY3VycmVudF90YXJnZXQsICZhZGRyKTsK Ky19CistCistLyogUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSBpbmZlcmlvciBoYXMgc29tZSBicmVh ay93YXRjaHBvaW50IHRoYXQKKy0gICB0cmlnZ2VyZWQuICAqLworLQorLXN0YXRpYyBpbnQKKy1p Mzg2X3N0b3BwZWRfYnlfaHdicCAodm9pZCkKKy17CistICBpbnQgaTsKKy0KKy0gIGRyX3N0YXR1 c19taXJyb3IgPSBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOworLSAgaWYgKG1haW50X3Nob3df ZHIpCistICAgIGkzODZfc2hvd19kciAoInN0b3BwZWRfYnlfaHdicCIsIDAsIDAsIGh3X2V4ZWN1 dGUpOworLQorLSAgQUxMX0RFQlVHX1JFR0lTVEVSUyhpKQorLSAgICB7CistICAgICAgaWYgKEkz ODZfRFJfV0FUQ0hfSElUIChpKSkKKy0JcmV0dXJuIDE7CistICAgIH0KKy0KKy0gIHJldHVybiAw OworKyAgcmV0dXJuIHRhcmdldF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoJmN1cnJlbnRfdGFyZ2V0 LCAmYWRkcik7CisgfQorIAorIC8qIEluc2VydCBhIGhhcmR3YXJlLWFzc2lzdGVkIGJyZWFrcG9p bnQgYXQgQlBfVEdULT5wbGFjZWRfYWRkcmVzcy4KK0BAIC02OTAsNiArNjkyLDcgQEAgaTM4Nl91 c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorICAgdC0+dG9fc3RvcHBlZF9k YXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworICAgdC0+dG9faW5zZXJ0 X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50OworICAgdC0+dG9fcmVtb3ZlX3dh dGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNo cG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7CisgICB0LT50b19pbnNlcnRfaHdfYnJl YWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7CisgICB0LT50b19yZW1vdmVfaHdf YnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7CisgfQorZGlmZiAtLWdpdCBh L2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKK2luZGV4IGY0OWI5ZjYuLmNkMzE5NTgg MTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1uYXQuaAorKysrIGIvZ2RiL2kzODYtbmF0LmgKK0BAIC00 OSwxNiArNDksMjMgQEAgZXh0ZXJuIHZvaWQgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0 YXJnZXRfb3BzICopOworICAgIGZ1bmN0aW9ucyBhcmU6CisgCisgICAgICAgc2V0X2NvbnRyb2wg ICAgICAgICAgICAgIC0tIHNldCB0aGUgZGVidWcgY29udHJvbCAoRFI3KQorLQkJCQkgIHJlZ2lz dGVyIHRvIGEgZ2l2ZW4gdmFsdWUKKysJCQkJICByZWdpc3RlciB0byBhIGdpdmVuIHZhbHVlIGZv ciBhbGwgTFdQcworIAorICAgICAgIHNldF9hZGRyICAgICAgICAgICAgICAgICAtLSBwdXQgYW4g YWRkcmVzcyBpbnRvIG9uZSBkZWJ1ZworLQkJCQkgIHJlZ2lzdGVyCisrCQkJCSAgcmVnaXN0ZXIg Zm9yIGFsbCBMV1BzCisgCisgICAgICAgcmVzZXRfYWRkciAgICAgICAgICAgICAgIC0tIHJlc2V0 IHRoZSBhZGRyZXNzIHN0b3JlZCBpbgorLQkJCQkgIG9uZSBkZWJ1ZyByZWdpc3RlcgorKwkJCQkg IG9uZSBkZWJ1ZyByZWdpc3RlciBmb3IgYWxsIExXUHMKKyAKKyAgICAgICBnZXRfc3RhdHVzICAg ICAgICAgICAgICAgLS0gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZGVidWcKKy0JCQkJICBzdGF0 dXMgKERSNikgcmVnaXN0ZXIuCisrCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBjdXJy ZW50IExXUAorKworKyAgICAgIHVuc2V0X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUg c3BlY2lmaWVkIGJpdHMgb2YgdGhlIGRlYnVnCisrCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVy IGZvciBhbGwgTFdQcworKworKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVh ciBhbGwgZGVidWcgcmVnaXN0ZXJzIG9mIG9ubHkgdGhlCisrCQkJCSAgSU5GRVJJT1JfUFRJRCB0 YXNrIHdpdGhvdXQgYWZmZWN0aW5nIGFueQorKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KKyAKKyAg ICBBZGRpdGlvbmFsbHksIHRoZSBuYXRpdmUgZmlsZSBzaG91bGQgc2V0IHRoZSBkZWJ1Z19yZWdp c3Rlcl9sZW5ndGgKKyAgICBmaWVsZCB0byA0IG9yIDggZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIg b2YgYnl0ZXMgdXNlZCBmb3IKK0BAIC03MCw2ICs3Nyw4IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190 eXBlCisgICAgIHZvaWQgKCpzZXRfYWRkcikgKGludCwgQ09SRV9BRERSKTsKKyAgICAgdm9pZCAo KnJlc2V0X2FkZHIpIChpbnQpOworICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3N0YXR1cykgKHZv aWQpOworKyAgICB2b2lkICgqdW5zZXRfc3RhdHVzKSAodW5zaWduZWQgbG9uZyk7CisrICAgIHZv aWQgKCpkZXRhY2gpICh2b2lkKTsKKyAgICAgaW50IGRlYnVnX3JlZ2lzdGVyX2xlbmd0aDsKKyAg IH07CisgCitkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCitpbmRleCBl M2VkZGNlLi44OTE3YWM5IDEwMDY0NAorLS0tIGEvZ2RiL2luZnJ1bi5jCisrKysgYi9nZGIvaW5m cnVuLmMKK0BAIC0yNjMwLDYgKzI2MzAsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1 Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKKyAKKyAgICAgICBzdG9wX3BjID0gcmVn Y2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CisgCisrICAg ICAgLyogQ2xlYXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3Rv cCB3aGljaCBjb3VsZAorKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9l eHBsYWluc19zaWduYWwuICAqLworKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+ d3MpOworKworICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdCA9IGJwc3RhdF9z dG9wX3N0YXR1cyAoc3RvcF9wYywgZWNzLT5wdGlkKTsKKyAKKyAgICAgICBlY3MtPnJhbmRvbV9z aWduYWwgPSAhYnBzdGF0X2V4cGxhaW5zX3NpZ25hbCAoZWNzLT5ldmVudF90aHJlYWQtPnN0b3Bf YnBzdGF0KTsKK0BAIC0yNjY3LDYgKzI2NzEsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChz dHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKKyAKKyAgICAgICBzdG9wX3BjID0g cmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CisgCisr ICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMg c3RvcCB3aGljaCBjb3VsZAorKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3Rh dF9leHBsYWluc19zaWduYWwuICAqLworKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVj cy0+d3MpOworKworICAgICAgIC8qIFRoaXMgY2F1c2VzIHRoZSBldmVudHBvaW50cyBhbmQgc3lt Ym9sIHRhYmxlIHRvIGJlIHJlc2V0LgorICAgICAgICAgIE11c3QgZG8gdGhpcyBub3csIGJlZm9y ZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8KKyAgICAgICAgICBzdG9wLiAgKi8KIGRp ZmYgLS1naXQgYS9nZGIvanYtbGFuZy5jIGIvZ2RiL2p2LWxhbmcuYwogaW5kZXggNmI2OGU3ZC4u NTA5NTE4MCAxMDA2NDQKIC0tLSBhL2dkYi9qdi1sYW5nLmMKQEAgLTEwNTA3LDYgKzEwOTYxLDE1 OCBAQCBpbmRleCAzZTk0M2ExLi4zYjg5NTZjIDEwMDY0NAogIAkgICAgYnVpbGRfY2Fub25pY2Fs X2xpbmVfc3BlYyAodmFsdWVzLnNhbHMsIGNvcHksIGNhbm9uaWNhbCk7CiAgCX0KICAgICAgICBy ZXR1cm4gdmFsdWVzOworZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1u YXQuYworaW5kZXggMTMwODg0NC4uZTZmYWQyNCAxMDA2NDQKKy0tLSBhL2dkYi9saW51eC1uYXQu YworKysrIGIvZ2RiL2xpbnV4LW5hdC5jCitAQCAtMTYyOSw2ICsxNjI5LDcgQEAgcmVzdW1lX2Nh bGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpkYXRhKQorICAgICAgIGxwLT5zdG9w cGVkID0gMDsKKyAgICAgICBscC0+c3RlcCA9IDA7CisgICAgICAgbWVtc2V0ICgmbHAtPnNpZ2lu Zm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKysgICAgICBscC0+d2F0Y2hwb2ludF9oaXRf c2V0ID0gMDsKKyAgICAgfQorICAgZWxzZSBpZiAobHAtPnN0b3BwZWQgJiYgZGVidWdfbGludXhf bmF0KQorICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJSQzogTm90IHJlc3Vt aW5nIHNpYmxpbmcgJXMgKGhhcyBwZW5kaW5nKVxuIiwKK0BAIC0xNzY2LDYgKzE3NjcsNyBAQCBs aW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorIAorICAgbGludXhfb3Bz LT50b19yZXN1bWUgKGxpbnV4X29wcywgcHRpZCwgc3RlcCwgc2lnbm8pOworICAgbWVtc2V0ICgm bHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKysgIGxwLT53YXRjaHBvaW50 X2hpdF9zZXQgPSAwOworIAorICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKKyAgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorQEAgLTIxNjQsNiArMjE2Niw3OCBAQCBtYXliZV9jbGVh cl9pZ25vcmVfc2lnaW50IChzdHJ1Y3QgbHdwX2luZm8gKmxwKQorICAgICB9CisgfQorIAorKy8q IEZldGNoIHRoZSBwb3NzaWJsZSB0cmlnZ2VyZWQgZGF0YSB3YXRjaHBvaW50IGluZm8gYW5kIHN0 b3JlIGl0IHRvIExQLgorKyAgIFRoZSBoYXJkd2FyZSBkYXRhIHdhdGNocG9pbnQgdHJpZ2dlciBn ZXRzIGNsZWFyZWQgZHVyaW5nIHRoaXMgZmV0Y2guICAqLworKworK3N0YXRpYyB2b2lkCisrc2F2 ZV9zaWd0cmFwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQorK3sKKysgIHN0cnVjdCBjbGVhbnVwICpv bGRfY2hhaW47CisrCisrICAvKiBsaW51eF9uYXRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgaXMgbm90 IGV2ZW4gaW5zdGFsbGVkIGluIHRoaXMgY2FzZS4gICovCisrICBpZiAobGludXhfb3BzLT50b19z dG9wcGVkX2RhdGFfYWRkcmVzcyA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICBvbGRfY2hh aW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7CisrICBpbmZlcmlvcl9wdGlkID0gbHAtPnB0aWQ7 CisrCisrICBscC0+d2F0Y2hwb2ludF9oaXRfc2V0ID0KKysgICAgbGludXhfb3BzLT50b19zdG9w cGVkX2RhdGFfYWRkcmVzcyAoJmN1cnJlbnRfdGFyZ2V0LCAmbHAtPndhdGNocG9pbnRfaGl0KTsK KysKKysgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworK30KKysKKysvKiBXcmFwIHRhcmdldF9z dG9wcGVkX2RhdGFfYWRkcmVzcyB3aGVyZSB0aGUgR05VL0xpbnV4IG5hdGl2ZSB0YXJnZXQgbWF5 IGJlCisrICAgZGlyZWN0ZWQgYnkgdGhlIHdhdGNocG9pbnQvZGVidWcgcmVnaXN0ZXIgbnVtYmVy LiAgQmFzZSB0aGUgcmVwb3J0ZWQgdmFsdWUKKysgICBvbiB0aGUgdHJpZ2dlcmVkIGRhdGEgYWRk cmVzcyBpbnN0ZWFkLiAgRHVyaW5nIGluZmVyaW9yIHN0b3AgdGhlIGFzc2lnbm1lbnQKKysgICBv ZiB3YXRjaHBvaW50L2RlYnVnIHJlZ2lzdGVycyBtYXkgY2hhbmdlIG1ha2luZyB0aGUgcmVnaXN0 ZXIgbnVtYmVyIHNwZWNpZmljCisrICAgdHJpZ2dlciBpbmZvIHN0YWxlLiAgKi8KKysKKytzdGF0 aWMgaW50CisrbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKKyt7CisrICBzdHJ1Y3QgbHdwX2luZm8gKmxwID0g ZmluZF9sd3BfcGlkIChpbmZlcmlvcl9wdGlkKTsKKysKKysgIGdkYl9hc3NlcnQgKGxwICE9IE5V TEwpOworKworKyAgKmFkZHJfcCA9IGxwLT53YXRjaHBvaW50X2hpdDsKKysKKysgIHJldHVybiBs cC0+d2F0Y2hwb2ludF9oaXRfc2V0OworK30KKysKKysvKiBJbiBgc2V0IGZvbGxvdy1mb3JrLW1v ZGUgY2hpbGQnIHdpdGggbXVsdGl0aHJlYWRlZCBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2gKKysg ICB3YXRjaHBvaW50cyBmcm9tIGFsbCB0aGUgTFdQcy4gIEluIHN1Y2ggY2FzZSBJTkZFUklPUl9Q VElEIHdpbGwgYmUgdGhlCisrICAgbm9uLXRocmVhZGVkIG5ldyBjaGlsZCB3aGlsZSBMV1BfTElT VCB3aWxsIHN0aWxsIGNvbnRhaW4gYWxsIHRoZSB0aHJlYWRzIG9mCisrICAgdGhlIHBhcmVudCBi ZWluZyBkZXRhY2hlZC4gICovCisrCisrc3RhdGljIGludAorK2xpbnV4X25hdF9kZXRhY2hfd2F0 Y2hwb2ludHMgKHZvaWQpCisreworKyAgc3RydWN0IGx3cF9pbmZvICpscDsKKysgIGludCBmb3Vu ZCA9IDAsIHJldHZhbCA9IDA7CisrICBwdGlkX3QgZmlsdGVyID0gcGlkX3RvX3B0aWQgKHB0aWRf Z2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOworKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9 IHNhdmVfaW5mZXJpb3JfcHRpZCAoKTsKKysKKysgIGZvciAobHAgPSBsd3BfbGlzdDsgbHA7IGxw ID0gbHAtPm5leHQpCisrICAgIGlmIChwdGlkX21hdGNoIChscC0+cHRpZCwgZmlsdGVyKSkKKysg ICAgICB7CisrCWluZmVyaW9yX3B0aWQgPSBscC0+cHRpZDsKKysJcmV0dmFsIHw9IGxpbnV4X29w cy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOworKwlmb3VuZCA9IDE7CisrICAgICAgfQorKwor KyAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCisrICBpZiAoIWZvdW5kKQorKyAgICB7Cisr ICAgICAgZ2RiX2Fzc2VydCAoIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOworKworKyAgICAgIHJl dHZhbCB8PSBsaW51eF9vcHMtPnRvX2RldGFjaF93YXRjaHBvaW50cyAoKTsKKysgICAgfQorKwor KyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCisgLyogV2FpdCB1bnRpbCBMUCBpcyBzdG9wcGVkLiAg Ki8KKyAKKyBzdGF0aWMgaW50CitAQCAtMjIxNSw2ICsyMjg5LDggQEAgc3RvcF93YWl0X2NhbGxi YWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpkYXRhKQorIAkgICAgICAvKiBTYXZlIHRo ZSB0cmFwJ3Mgc2lnaW5mbyBpbiBjYXNlIHdlIG5lZWQgaXQgbGF0ZXIuICAqLworIAkgICAgICBz YXZlX3NpZ2luZm8gKGxwKTsKKyAKKysJICAgICAgc2F2ZV9zaWd0cmFwIChscCk7CisrCisgCSAg ICAgIC8qIE5vdyByZXN1bWUgdGhpcyBMV1AgYW5kIGdldCB0aGUgU0lHU1RPUCBldmVudC4gKi8K KyAJICAgICAgZXJybm8gPSAwOworIAkgICAgICBwdHJhY2UgKFBUUkFDRV9DT05ULCBHRVRfTFdQ IChscC0+cHRpZCksIDAsIDApOworQEAgLTI1NzksOSArMjY1NSwxMyBAQCBsaW51eF9uYXRfZmls dGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBzdGF0dXMsIGludCBvcHRpb25zKQorICAgICAgIGFk ZF90aHJlYWQgKGxwLT5wdGlkKTsKKyAgICAgfQorIAorLSAgLyogU2F2ZSB0aGUgdHJhcCdzIHNp Z2luZm8gaW4gY2FzZSB3ZSBuZWVkIGl0IGxhdGVyLiAgKi8KKyAgIGlmIChXSUZTVE9QUEVEIChz dGF0dXMpICYmIFdTVE9QU0lHIChzdGF0dXMpID09IFNJR1RSQVApCistICAgIHNhdmVfc2lnaW5m byAobHApOworKyAgICB7CisrICAgICAgLyogU2F2ZSB0aGUgdHJhcCdzIHNpZ2luZm8gaW4gY2Fz ZSB3ZSBuZWVkIGl0IGxhdGVyLiAgKi8KKysgICAgICBzYXZlX3NpZ2luZm8gKGxwKTsKKysKKysg ICAgICBzYXZlX3NpZ3RyYXAgKGxwKTsKKysgICAgfQorIAorICAgLyogSGFuZGxlIEdOVS9MaW51 eCdzIGV4dGVuZGVkIHdhaXRzdGF0dXMgZm9yIHRyYWNlIGV2ZW50cy4gICovCisgICBpZiAoV0lG U1RPUFBFRCAoc3RhdHVzKSAmJiBXU1RPUFNJRyAoc3RhdHVzKSA9PSBTSUdUUkFQICYmIHN0YXR1 cyA+PiAxNiAhPSAwKQorQEAgLTQ4NzEsNiArNDk1MSwxMCBAQCBsaW51eF9uYXRfYWRkX3Rhcmdl dCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCisgICB0LT50b190aHJlYWRfYWxpdmUgPSBsaW51eF9u YXRfdGhyZWFkX2FsaXZlOworICAgdC0+dG9fcGlkX3RvX3N0ciA9IGxpbnV4X25hdF9waWRfdG9f c3RyOworICAgdC0+dG9faGFzX3RocmVhZF9jb250cm9sID0gdGNfc2NoZWRsb2NrOworKyAgaWYg KGxpbnV4X29wcy0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MpCisrICAgIHQtPnRvX3N0b3BwZWRf ZGF0YV9hZGRyZXNzID0gbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworKyAgaWYgKGxp bnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzKQorKyAgICB0LT50b19kZXRhY2hfd2F0Y2hw b2ludHMgPSBsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzOworIAorICAgdC0+dG9fY2FuX2Fz eW5jX3AgPSBsaW51eF9uYXRfY2FuX2FzeW5jX3A7CisgICB0LT50b19pc19hc3luY19wID0gbGlu dXhfbmF0X2lzX2FzeW5jX3A7CitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5oIGIvZ2RiL2xp bnV4LW5hdC5oCitpbmRleCBkMWVkNmZjLi5mYWY2OGJiIDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4 LW5hdC5oCisrKysgYi9nZGIvbGludXgtbmF0LmgKK0BAIC02Miw2ICs2MiwxMiBAQCBzdHJ1Y3Qg bHdwX2luZm8KKyAgICAgIGJlIHRoZSBhZGRyZXNzIG9mIGEgaGFyZHdhcmUgd2F0Y2hwb2ludC4g ICovCisgICBzdHJ1Y3Qgc2lnaW5mbyBzaWdpbmZvOworIAorKyAgLyogV0FUQ0hQT0lOVF9ISVRf U0VUIGlzIG5vbi16ZXJvIGlmIHRoaXMgTFdQIHN0b3BwZWQgd2l0aCBhIHRyYXAgYW5kIGEgZGF0 YQorKyAgICAgd2F0Y2hwb2ludCBoYXMgYmVlbiBmb3VuZCBhcyB0cmlnZ2VyZWQuICBJbiBzdWNo IGNhc2UgV0FUQ0hQT0lOVF9ISVQKKysgICAgIGNvbnRhaW5zIGRhdGEgYWRkcmVzcyBvZiB0aGUg dHJpZ2dlcmVkIGRhdGEgd2F0Y2hwb2ludC4gICovCisrICB1bnNpZ25lZCB3YXRjaHBvaW50X2hp dF9zZXQgOiAxOworKyAgQ09SRV9BRERSIHdhdGNocG9pbnRfaGl0OworKworICAgLyogTm9uLXpl cm8gaWYgd2UgZXhwZWN0IGEgZHVwbGljYXRlZCBTSUdJTlQuICAqLworICAgaW50IGlnbm9yZV9z aWdpbnQ7CisgCiBkaWZmIC0tZ2l0IGEvZ2RiL20yLWxhbmcuYyBiL2dkYi9tMi1sYW5nLmMKIGlu ZGV4IDg4YzdlNWUuLjJkMGIzY2EgMTAwNjQ0CiAtLS0gYS9nZGIvbTItbGFuZy5jCkBAIC0xMTQw Niw2ICsxMjAxMiw0MyBAQCBpbmRleCBjYmRhOWMzLi5hMDdlNmYyIDEwMDY0NAogK2V4dGVybiB2 b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApOwogKwogICNl bmRpZiAvKiBQQVJTRVJfREVGU19IICovCitkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQu YyBiL2dkYi9wcGMtbGludXgtbmF0LmMKK2luZGV4IDQ3Yjc0YWQuLjIyZmIyZmMgMTAwNjQ0Cist LS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCitAQCAt MTM5MSw2ICsxMzkxLDI0IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIGludCBsZW4sIGludCBydykKKyAgIHJldHVybiAwOworIH0KKyAKKysvKiBTZWUgdGFy Z2V0X2RldGFjaF93YXRjaHBvaW50cy4gIERvIG5vdCB1c2Ugd3JhcHBlcgorKyAgIHBwY19saW51 eF9yZW1vdmVfd2F0Y2hwb2ludCBhcyBpdCB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hl CisrICAgKHNhdmVkX2RhYnJfdmFsdWUpLiAgKi8KKysKKytzdGF0aWMgaW50CisrcHBjX2xpbnV4 X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBwaWRfdCB0aWQ7CisrCisrICB0aWQg PSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQ SURHRVQgKGluZmVyaW9yX3B0aWQpOworKworKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJV R1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDApCisrICAgIHJldHVybiAtMTsKKysgIHJldHVybiAw OworK30KKysKKyBzdGF0aWMgdm9pZAorIHBwY19saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRp ZCkKKyB7CitAQCAtMTY0OCw2ICsxNjY2LDcgQEAgX2luaXRpYWxpemVfcHBjX2xpbnV4X25hdCAo dm9pZCkKKyAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9IHBwY19saW51eF9y ZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQ7CisgICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50 ID0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9p bnRzID0gcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50czsKKyAgIHQtPnRvX3N0b3BwZWRfYnlf d2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19z dG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKKyAg IHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGludXhfd2F0Y2hwb2lu dF9hZGRyX3dpdGhpbl9yYW5nZTsKIGRpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9w cmludGNtZC5jCiBpbmRleCA1ZDhiOTM2Li5mYjBhNDU1IDEwMDY0NAogLS0tIGEvZ2RiL3ByaW50 Y21kLmMKQEAgLTE4OTI4LDExICsxOTU3MSw5NCBAQCBpbmRleCA3NDBkNGUwLi40NjFmZjk1IDEw MDY0NAogIAkJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKICAKICBleHRlcm4gc3Ry dWN0IHN5bXRhYnNfYW5kX2xpbmVzCitkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3Rh cmdldC5jCitpbmRleCA3ZWU0NDRmLi42MzFlNWY4IDEwMDY0NAorLS0tIGEvZ2RiL3RhcmdldC5j CisrKysgYi9nZGIvdGFyZ2V0LmMKK0BAIC0xMjQsNiArMTI0LDggQEAgc3RhdGljIGludCBkZWJ1 Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7CisgCisgc3RhdGlj IGludCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7Cisg Cisrc3RhdGljIGludCBkZWJ1Z190b19kZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpOworKworIHN0 YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ICh2b2lkKTsKKyAKKyBzdGF0 aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAq LCBDT1JFX0FERFIgKik7CitAQCAtNTg0LDYgKzU4Niw3IEBAIHVwZGF0ZV9jdXJyZW50X3Rhcmdl dCAodm9pZCkKKyAgICAgICBJTkhFUklUICh0b19yZW1vdmVfaHdfYnJlYWtwb2ludCwgdCk7Cisg ICAgICAgSU5IRVJJVCAodG9faW5zZXJ0X3dhdGNocG9pbnQsIHQpOworICAgICAgIElOSEVSSVQg KHRvX3JlbW92ZV93YXRjaHBvaW50LCB0KTsKKysgICAgICBJTkhFUklUICh0b19kZXRhY2hfd2F0 Y2hwb2ludHMsIHQpOworICAgICAgIElOSEVSSVQgKHRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzLCB0 KTsKKyAgICAgICBJTkhFUklUICh0b19oYXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50LCB0KTsKKyAg ICAgICBJTkhFUklUICh0b19oYXZlX2NvbnRpbnVhYmxlX3dhdGNocG9pbnQsIHQpOworQEAgLTY5 NCw2ICs2OTcsOSBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZvaWQpCisgICBkZV9mYXVsdCAo dG9fcmVtb3ZlX3dhdGNocG9pbnQsCisgCSAgICAoaW50ICgqKSAoQ09SRV9BRERSLCBpbnQsIGlu dCkpCisgCSAgICByZXR1cm5fbWludXNfb25lKTsKKysgIGRlX2ZhdWx0ICh0b19kZXRhY2hfd2F0 Y2hwb2ludHMsCisrCSAgICAoaW50ICgqKSAodm9pZCkpCisrCSAgICByZXR1cm5femVybyk7Cisg ICBkZV9mYXVsdCAodG9fc3RvcHBlZF9ieV93YXRjaHBvaW50LAorIAkgICAgKGludCAoKikgKHZv aWQpKQorIAkgICAgcmV0dXJuX3plcm8pOworQEAgLTMwOTUsNiArMzEwMSwxOSBAQCBkZWJ1Z190 b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQor ICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCisrc3RhdGljIGludAorK2RlYnVnX3RvX2RldGFjaF93 YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBpbnQgcmV0dmFsOworKworKyAgcmV0dmFsID0gZGVi dWdfdGFyZ2V0LnRvX2RldGFjaF93YXRjaHBvaW50cyAoKTsKKysKKysgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCSAgICAgICJ0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzICgp ID0gJWxkXG4iLAorKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHJldHZhbCk7CisrICByZXR1cm4g cmV0dmFsOworK30KKysKKyBzdGF0aWMgdm9pZAorIGRlYnVnX3RvX3Rlcm1pbmFsX2luaXQgKHZv aWQpCisgeworQEAgLTMzNDIsNiArMzM2MSw3IEBAIHNldHVwX3RhcmdldF9kZWJ1ZyAodm9pZCkK KyAgIGN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV9od19icmVha3BvaW50ID0gZGVidWdfdG9fcmVt b3ZlX2h3X2JyZWFrcG9pbnQ7CisgICBjdXJyZW50X3RhcmdldC50b19pbnNlcnRfd2F0Y2hwb2lu dCA9IGRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50OworICAgY3VycmVudF90YXJnZXQudG9fcmVt b3ZlX3dhdGNocG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludDsKKysgIGN1cnJlbnRf dGFyZ2V0LnRvX2RldGFjaF93YXRjaHBvaW50cyA9IGRlYnVnX3RvX2RldGFjaF93YXRjaHBvaW50 czsKKyAgIGN1cnJlbnRfdGFyZ2V0LnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IGRlYnVnX3Rv X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKKyAgIGN1cnJlbnRfdGFyZ2V0LnRvX3N0b3BwZWRfZGF0 YV9hZGRyZXNzID0gZGVidWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJlc3M7CisgICBjdXJyZW50X3Rh cmdldC50b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlID0gZGVidWdfdG9fd2F0Y2hwb2lu dF9hZGRyX3dpdGhpbl9yYW5nZTsKIGRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmggYi9nZGIvdGFy Z2V0LmgKLWluZGV4IDJjNzQzZTkuLmVmMjk2MTAgMTAwNjQ0CitpbmRleCAyYzc0M2U5Li5kYmJj ZTEyIDEwMDY0NAogLS0tIGEvZ2RiL3RhcmdldC5oCiArKysgYi9nZGIvdGFyZ2V0LmgKLUBAIC0x MTU3LDYgKzExNTcsMjAgQEAgZXh0ZXJuIGludCB0YXJnZXRfc2VhcmNoX21lbW9yeSAoQ09SRV9B RERSIHN0YXJ0X2FkZHIsCitAQCAtMzc2LDYgKzM3Niw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCisg ICAgIGludCAoKnRvX3JlbW92ZV9od19icmVha3BvaW50KSAoc3RydWN0IGdkYmFyY2ggKiwgc3Ry dWN0IGJwX3RhcmdldF9pbmZvICopOworICAgICBpbnQgKCp0b19yZW1vdmVfd2F0Y2hwb2ludCkg KENPUkVfQUREUiwgaW50LCBpbnQpOworICAgICBpbnQgKCp0b19pbnNlcnRfd2F0Y2hwb2ludCkg KENPUkVfQUREUiwgaW50LCBpbnQpOworKyAgICBpbnQgKCp0b19kZXRhY2hfd2F0Y2hwb2ludHMp ICh2b2lkKTsKKyAgICAgaW50ICgqdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50KSAodm9pZCk7Cisg ICAgIGludCB0b19oYXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50OworICAgICBpbnQgdG9faGF2ZV9j b250aW51YWJsZV93YXRjaHBvaW50OworQEAgLTExMjAsNiArMTEyMSwxNSBAQCBleHRlcm4gY2hh ciAqbm9ybWFsX3BpZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKKyAjZGVmaW5lCXRhcmdldF9yZW1v dmVfd2F0Y2hwb2ludChhZGRyLCBsZW4sIHR5cGUpCVwKKyAgICAgICgqY3VycmVudF90YXJnZXQu dG9fcmVtb3ZlX3dhdGNocG9pbnQpIChhZGRyLCBsZW4sIHR5cGUpCisgCisrLyogQ2xlYXIgYWxs IGRlYnVnIHJlZ2lzdGVycyB3aXRob3V0IGFmZmVjdGluZyBhbnkgcmVnaXN0ZXIgY2FjaGVzLiAg RnVuY3Rpb24KKysgICBhY3RzIG9uIElORkVSSU9SX1BUSUQgd2hpY2ggc2hvdWxkIGJlIHRoZSBm b3JrZWQtb2ZmIHByb2Nlc3MsIGVpdGhlciB0aGUKKysgICBub24tdGhyZWFkZWQgY2hpbGQgb25l IG9yIHRoZSB0aHJlYWRlZCBwYXJlbnQgb25lLCBkZXBlbmRpbmcgb24gYHNldAorKyAgIGZvbGxv dy1mb3JrLW1vZGUnLiAgQm90aCB3YXRjaHBvaW50cyBhbmQgaGFyZHdhcmUgYnJlYWtwb2ludHMg Z2V0IHJlbW92ZWQuCisrICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICov CisrCisrI2RlZmluZQl0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzKCkJXAorKyAgICAgKCpjdXJy ZW50X3RhcmdldC50b19kZXRhY2hfd2F0Y2hwb2ludHMpICgpCisrCisgI2RlZmluZSB0YXJnZXRf aW5zZXJ0X2h3X2JyZWFrcG9pbnQoZ2RiYXJjaCwgYnBfdGd0KSBcCisgICAgICAoKmN1cnJlbnRf dGFyZ2V0LnRvX2luc2VydF9od19icmVha3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQorIAorQEAg LTExNTcsNiArMTE2NywyMCBAQCBleHRlcm4gaW50IHRhcmdldF9zZWFyY2hfbWVtb3J5IChDT1JF X0FERFIgc3RhcnRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9O R0VTVCBwYXR0ZXJuX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT1JF X0FERFIgKmZvdW5kX2FkZHJwKTsKICAKQEAgLTE4OTUzLDcgKzE5Njc5LDcgQEAgaW5kZXggMmM3 NDNlOS4uZWYyOTYxMCAxMDA2NDQKICAvKiBDb21tYW5kIGxvZ2dpbmcgZmFjaWxpdHkuICAqLwog IAogICNkZWZpbmUgdGFyZ2V0X2xvZ19jb21tYW5kKHApCQkJCQkJXAotQEAgLTEyNzYsNiArMTI5 MCwxNCBAQCBleHRlcm4gc3RydWN0IHRhcmdldF9vcHMgKmZpbmRfdGFyZ2V0X2JlbmVhdGggKHN0 cnVjdCB0YXJnZXRfb3BzICopOworQEAgLTEyNzYsNiArMTMwMCwxNCBAQCBleHRlcm4gc3RydWN0 IHRhcmdldF9vcHMgKmZpbmRfdGFyZ2V0X2JlbmVhdGggKHN0cnVjdCB0YXJnZXRfb3BzICopOwog IAogIGV4dGVybiBjaGFyICp0YXJnZXRfZ2V0X29zZGF0YSAoY29uc3QgY2hhciAqdHlwZSk7CiAg CkBAIC0yMDUxOSwxNSArMjEyNDUsMTAwIEBAIGluZGV4IDAwMDAwMDAuLjVkYTczNzgKICtnZGJf dGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50 IHRlbXAxIgogK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDc4IHRpbWVzPiIg InNlY29uZDogcHJpbnQgdGVtcDIiCiArZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJlcGVh dHMgNDggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMyIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9jcC1yZWxvY2F0ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1y ZWxvY2F0ZS5leHAKLWluZGV4IDQwOTVjY2YuLjAzYzA3ZDUgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9jcC1yZWxvY2F0ZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L2NwLXJlbG9jYXRlLmV4cAotQEAgLTMwLDcgKzMwLDcgQEAgcHJvYyBnZXRfZnVuY19hZGRyZXNz IHsgZnVuYyB9IHsKLSAgICAgZ2xvYmFsIGdkYl9wcm9tcHQgaGV4CitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3dhdGNocG9pbnQtaHcuYworaW5kZXggOGRhOWFmNS4uZTJkZTUzYSAxMDA2NDQKKy0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody5jCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHcuYworQEAgLTIwLDUgKzIwLDExIEBAIGludCB3YXRj aGVlOworIGludAorIG1haW4gKHZvaWQpCisgeworKyAgdm9sYXRpbGUgaW50IGR1bW15OworKwor KyAgZHVtbXkgPSB3YXRjaGVlOworKyAgZHVtbXkgPSAxOworKyAgZHVtbXkgPSAyOwkvKiBicmVh ay1hdC1leGl0ICovCisrCisgICByZXR1cm4gMDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv d2F0Y2hwb2ludC1ody5leHAKK2luZGV4IGEyYmI3MzEuLmQ3NGQ2YzcgMTAwNjQ0CistLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHcuZXhwCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHcuZXhwCitAQCAtMjEsMTkgKzIxLDEyIEBAIGlmIHso IVtpc3RhcmdldCAiaT84Ni0qLSoiXSAmJiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0KKyAgICAg cmV0dXJuCisgfQogIAotICAgICBzZXQgcmZ1bmMgW3N0cmluZ190b19yZWdleHAgJGZ1bmNdCi0t ICAgIGdkYl90ZXN0X211bHRpcGxlICJwcmludCAnJHtmdW5jfSciICJnZXQgYWRkcmVzcyBvZiAk e2Z1bmN9IiB7Cistc2V0IHRlc3RmaWxlIHdhdGNocG9pbnQtaHcKKy1zZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5jCistc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQor LWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHti aW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKy0gICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorK3NldCB0ZXN0IHdhdGNocG9pbnQtaHcKKytz ZXQgc3JjZmlsZSAke3Rlc3R9LmMKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdH0u ZXhwICR7dGVzdH0gJHtzcmNmaWxlfV0gfSB7CisgICAgIHJldHVybiAtMQorIH0KKyAKKy1nZGJf ZXhpdAorLWdkYl9zdGFydAorLWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgor LWdkYl9sb2FkICR7YmluZmlsZX0KKy0KKyAjIENyZWF0ZSB0aGUgd2F0Y2hwb2ludCBiZWZvcmUg dGhlIGluZmVyaW9yIGdldHMgc3RhcnRlZC4gIE5vdyB0aGUgbmF0aXZlIENQVQorICMgdGFyZ2V0 IGlzIHN0aWxsIG5vdCBhY3RpdmUgYW5kIGl0cyBgdG9fY2FuX3VzZV9od19icmVha3BvaW50JyBp cyBub3QKKyAjIGluc3RhbGxlZCwgdGhlcmVmb3JlIG9ubHkgYSBzb2Z0d2FyZSB3YXRjaHBvaW50 IGdldHMgY3JlYXRlZC4KK0BAIC00MywxMCArMzYsNDAgQEAgZ2RiX3Rlc3QgIndhdGNoIHdhdGNo ZWUiICJhdGNocG9pbnQgMTogd2F0Y2hlZSIKKyAjIGBydW50b19tYWluJyBvciBgcnVudG8gbWFp bicgd291bGQgZGVsZXRlIHRoZSB3YXRjaHBvaW50IGNyZWF0ZWQgYWJvdmUuCisgCisgaWYgeyBb Z2RiX3N0YXJ0X2NtZF0gPCAwIH0geworLSAgICB1bnRlc3RlZCBzdGFydAorKyAgICB1bnRlc3Rl ZCAke3Rlc3R9LmV4cAorICAgICByZXR1cm4gLTEKKyB9CisgZ2RiX3Rlc3QgIiIgIm1haW4gLiog YXQgLioiICJzdGFydCIKKyAKKyAjIENoZWNrIGl0IGlzIHJlYWxseSBhIGBodyctd2F0Y2hwb2lu dC4KKyBnZGJfdGVzdCAiaW5mbyB3YXRjaHBvaW50cyIgIjEgKmh3IHdhdGNocG9pbnQgLiogd2F0 Y2hlZSIKKysKKysjIEJlZm9yZSB0aGUgaW5mZXJpb3IgZ2V0cyBzdGFydGVkIHdlIHdvdWxkIGdl dDoKKysjIAlUYXJnZXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgd2F0 Y2hwb2ludC4KKytnZGJfdGVzdCAiZGVsZXRlIDEiCisrZ2RiX3Rlc3QgInJ3YXRjaCB3YXRjaGVl IgorKworK3NldCBicmVha2xpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LWV4aXQi XQorK2dkYl9icmVha3BvaW50ICRicmVha2xpbmUKKysKKytnZGJfdGVzdCAiY29udGludWUiICJD b250aW51aW5nLlxyXG5IYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgMzogd2F0Y2hlZVxyXG5cclxu VmFsdWUgPSAwXHJcbi4qIgorKworKyMgSGVyZSBzaG91bGQgYmUgbm8gcmVwZWF0ZWQgbm90aWZp Y2F0aW9uIG9mIHRoZSByZWFkIHdhdGNocG9pbnQuCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisr CSAiQ29udGludWluZ1xcLlxbIFxyXG5cXStCcmVha3BvaW50IFxbMC05XF0rLCAuKmJyZWFrLWF0 LWV4aXQuKiIgXAorKwkgImNvbnRpbnVlIHRvIGJyZWFrLWF0LWV4aXQgYWZ0ZXIgcndhdGNoIgor KworK2NsZWFuX3Jlc3RhcnQgJHt0ZXN0fQorKworK2lmICFbcnVudG9fbWFpbl0geworKyAgICB1 bnRlc3RlZCAke3Rlc3R9LmV4cAorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX3Rlc3QgImhi cmVhayAke3NyY2ZpbGV9OiR7YnJlYWtsaW5lfSIgXAorKwkgIkhhcmR3YXJlIGFzc2lzdGVkIGJy ZWFrcG9pbnQgMiBhdCAweFxbMC05YS1mXF0rOiBmaWxlIC4qJHtzcmNmaWxlfSwgbGluZSAke2Jy ZWFrbGluZX1cXC4iIFwKKysJICJoYnJlYWsiCisrCisrZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisr CSAiQ29udGludWluZ1xcLlxbIFxyXG5cXStCcmVha3BvaW50IFxbMC05XF0rLCAuKmJyZWFrLWF0 LWV4aXQuKiIgXAorKwkgImNvbnRpbnVlIHRvIGJyZWFrLWF0LWV4aXQgYWZ0ZXIgaGJyZWFrIgor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cAoraW5kZXggNDA5NWNjZi4uMDNjMDdkNSAx MDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3AtcmVsb2NhdGUuZXhwCitAQCAtMzAsNyArMzAsNyBAQCBw cm9jIGdldF9mdW5jX2FkZHJlc3MgeyBmdW5jIH0geworICAgICBnbG9iYWwgZ2RiX3Byb21wdCBo ZXgKKyAKKyAgICAgc2V0IHJmdW5jIFtzdHJpbmdfdG9fcmVnZXhwICRmdW5jXQorLSAgICBnZGJf dGVzdF9tdWx0aXBsZSAicHJpbnQgJyR7ZnVuY30nIiAiZ2V0IGFkZHJlc3Mgb2YgJHtmdW5jfSIg ewogKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgJHtmdW5jfSIgImdldCBhZGRyZXNzIG9m ICR7ZnVuY30iIHsKICAJLXJlICJcXFwkXFswLTlcXSsgPSBcXHsuKlxcfSAoMHwoJGhleCkgPCR7 cmZ1bmN9PilcW1xyXG5cXSske2dkYl9wcm9tcHR9ICQiIHsKICAJICAgICMgJDEgPSB7aW50ICgp fSAweDI0IDxmdW5jdGlvbl9iYXI+CkBAIC0yNDk2NSw2ICsyNTc3NiwxMDI4IEBAIGluZGV4IDUy MjNmYzguLjAzZTFlYWIgMTAwNjQ0CiAgfQogIAogIGdkYl9weV90ZXN0X211bHRpcGxlICJtdWx0 aS1saW5lIHB5dGhvbiBjb21tYW5kIiBcCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uNGRjMzA4YgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCitAQCAtMCwwICsxLDE3NSBAQAor Ky8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1v ZmYgb2YgYSBwcm9jZXNzLgorKworKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKysgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4g ICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKworK3N0 YXRpYyB2b2lkCisrZGVsYXkgKHZvaWQpCisreworKyAgaW50IGkgPSB1c2xlZXAgKDEwMDAwMDAg LyAxMDApOworKyAgYXNzZXJ0IChpID09IDAgfHwgZXJybm8gPT0gRUlOVFIpOworK30KKysKKysj aWYgZGVmaW5lZCBGT0xMT1dfUEFSRU5UCisrCisrc3RhdGljIHZvaWQKKytmb3Jrb2ZmIChpbnQg bnIpCisreworKyAgcGlkX3QgY2hpbGQsIHBpZF9nb3Q7CisrICBpbnQgZXhpdF9jb2RlID0gNDIg KyBucjsKKysgIGludCBzdGF0dXMsIGk7CisrCisrICBjaGlsZCA9IGZvcmsgKCk7CisrICBzd2l0 Y2ggKGNoaWxkKQorKyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAgYXNzZXJ0ICgwKTsKKysg ICAgY2FzZSAwOgorKyAgICAgIHByaW50ZiAoImNoaWxkJWQ6ICVkXG4iLCBuciwgKGludCkgZ2V0 cGlkICgpKTsKKysgICAgICAvKiBEZWxheSB0byBnZXQgYm90aCB0aGUgImNoaWxkJWQiIGFuZCAi cGFyZW50JWQiIG1lc3NhZ2UgcHJpbnRlZCB3aXRob3V0CisrCSBhIHJhY2UgYnJlYWtpbmcgZXhw ZWN0IGJ5IGl0cyBlbmRsZXNzIHdhaXQgb24gYCRnZGJfcHJvbXB0JCc6CisrCSBCcmVha3BvaW50 IDMsIGJyZWFrcG9pbnQgKCkgYXQgLi4vLi4vLi4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmsuYzozMworKwkgMzMgICAgICB9CisrCSAoZ2RiKSBwYXJlbnQyOiAxNDIy MyAgKi8KKysgICAgICBpID0gc2xlZXAgKDEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysK KysgICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0 ZW4gYnJlYWtwb2ludCkuICAqLworKyAgICAgIHZhcisrOworKyAgICAgIGJyZWFrcG9pbnQgKCk7 CisrCisrICAgICAgX2V4aXQgKGV4aXRfY29kZSk7CisrICAgIGRlZmF1bHQ6CisrICAgICAgcHJp bnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkgY2hpbGQpOworKyAgICAgIC8qIERlbGF5 IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVzc2FnZSBwcmludGVk LCBzZWUKKysJIGFib3ZlLiAgKi8KKysgICAgICBpID0gc2xlZXAgKDEpOworKyAgICAgIGFzc2Vy dCAoaSA9PSAwKTsKKysKKysgICAgICBwaWRfZ290ID0gd2FpdCAoJnN0YXR1cyk7CisrICAgICAg YXNzZXJ0IChwaWRfZ290ID09IGNoaWxkKTsKKysgICAgICBhc3NlcnQgKFdJRkVYSVRFRCAoc3Rh dHVzKSk7CisrICAgICAgYXNzZXJ0IChXRVhJVFNUQVRVUyAoc3RhdHVzKSA9PSBleGl0X2NvZGUp OworKworKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZmFsc2Ug d2F0Y2hwb2ludCByZW1vdmFsKS4gICovCisrICAgICAgYnJlYWtwb2ludCAoKTsKKysgICAgfQor K30KKysKKysjZWxpZiBkZWZpbmVkIEZPTExPV19DSElMRAorKworK3N0YXRpYyB2b2xhdGlsZSBp bnQgdXNyMV9nb3Q7CisrCisrc3RhdGljIHZvaWQKKytoYW5kbGVyX3VzcjEgKGludCBzaWdubykK Kyt7CisrICB1c3IxX2dvdCsrOworK30KKysKKytzdGF0aWMgdm9pZAorK2ZvcmtvZmYgKGludCBu cikKKyt7CisrICBwaWRfdCBjaGlsZDsKKysgIGludCBpLCBsb29wOworKyAgc3RydWN0IHNpZ2Fj dGlvbiBhY3QsIG9sZGFjdDsKKysjaWZkZWYgVEhSRUFECisrICB2b2lkICp0aHJlYWRfcmVzdWx0 OworKyNlbmRpZgorKworKyAgbWVtc2V0ICgmYWN0LCAwLCBzaXplb2YgYWN0KTsKKysgIGFjdC5z YV9mbGFncyA9IFNBX1JFU1RBUlQ7CisrICBhY3Quc2FfaGFuZGxlciA9IGhhbmRsZXJfdXNyMTsK KysgIHNpZ2VtcHR5c2V0ICgmYWN0LnNhX21hc2spOworKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNS MSwgJmFjdCwgJm9sZGFjdCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBjaGlsZCA9IGZv cmsgKCk7CisrICBzd2l0Y2ggKGNoaWxkKQorKyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAg YXNzZXJ0ICgwKTsKKysgICAgZGVmYXVsdDoKKysgICAgICBwcmludGYgKCJwYXJlbnQlZDogJWRc biIsIG5yLCAoaW50KSBjaGlsZCk7CisrCisrICAgICAgLyogU2xlZXAgZm9yIGEgd2hpbGUgdG8g cG9zc2libHkgZ2V0IGluY29ycmVjdGx5IEFUVEFDSF9USFJFQURlZCBieSBHREIKKysJIHRyYWNp bmcgdGhlIGNoaWxkIGZvcmsgd2l0aCBubyBsb25nZXIgdmFsaWQgdGhyZWFkL2x3cCBlbnRyaWVz IG9mIHRoZQorKwkgcGFyZW50LiAgKi8KKysKKysgICAgICBpID0gc2xlZXAgKDIpOworKyAgICAg IGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhl cmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLworKworKyAgICAgIHZhcisr OworKyAgICAgIGJyZWFrcG9pbnQgKCk7CisrCisrI2lmZGVmIFRIUkVBRAorKyAgICAgIC8qIEFu ZCBuZWl0aGVyIGdvdCBjYXVnaHQgb3VyIHRocmVhZC4gICovCisrCisrICAgICAgc3RlcCA9IDk5 OworKyAgICAgIGkgPSBwdGhyZWFkX2pvaW4gKHRocmVhZCwgJnRocmVhZF9yZXN1bHQpOworKyAg ICAgIGFzc2VydCAoaSA9PSAwKTsKKysgICAgICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZv aWQgKikgOTlVTCk7CisrI2VuZGlmCisrCisrICAgICAgLyogQmUgc3VyZSBvdXIgY2hpbGQga25v d3Mgd2UgZGlkIG5vdCBnZXQgY2F1Z2h0IGFib3ZlLiAgKi8KKysKKysgICAgICBpID0ga2lsbCAo Y2hpbGQsIFNJR1VTUjEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAgICAvKiBT bGVlcCBmb3IgYSB3aGlsZSB0byBjaGVjayBHREIncyBgaW5mbyB0aHJlYWRzJyBubyBsb25nZXIg dHJhY2tzIHVzIGluCisrCSB0aGUgY2hpbGQgZm9yay4gICovCisrCisrICAgICAgaSA9IHNsZWVw ICgyKTsKKysgICAgICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICAgICAgX2V4aXQgKDApOworKyAg ICBjYXNlIDA6CisrICAgICAgcHJpbnRmICgiY2hpbGQlZDogJWRcbiIsIG5yLCAoaW50KSBnZXRw aWQgKCkpOworKworKyAgICAgIC8qIExldCB0aGUgcGFyZW50IHNpZ25hbCB1cyBhYm91dCBpdHMg c3VjY2Vzcy4gIEJlIGNhcmVmdWwgb2YgcmFjZXMuICAqLworKworKyAgICAgIGZvciAobG9vcCA9 IDA7IGxvb3AgPCAxMDAwOyBsb29wKyspCisrCXsKKysJICAvKiBQYXJlbnQgZWl0aGVyIGRpZWQg KGFuZCBVU1IxX0dPVCBpcyB6ZXJvKSBvciBpdCBzdWNjZWVkZWQuICAqLworKwkgIGlmIChraWxs IChnZXRwcGlkICgpLCAwKSAhPSAwKQorKwkgICAgYnJlYWs7CisrCSAgLyogUGFyZW50IHN1Y2Nl ZWRlZD8gICovCisrCSAgaWYgKHVzcjFfZ290KQorKwkgICAgYnJlYWs7CisrCisrCSAgZGVsYXkg KCk7CisrCX0KKysgICAgICBhc3NlcnQgKHVzcjFfZ290KTsKKysKKysgICAgICAvKiBXZSBtdXN0 IGdldCBjYXVnaHQgaGVyZSAoYWdhaW5zdCBhIGZhbHNlIHdhdGNocG9pbnQgcmVtb3ZhbCkuICAq LworKworKyAgICAgIGJyZWFrcG9pbnQgKCk7CisrICAgIH0KKysKKysgIGkgPSBzaWdhY3Rpb24g KFNJR1VTUjEsICZvbGRhY3QsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworK30KKysKKysj ZWxzZQorKyMgZXJyb3IgIiFGT0xMT1dfUEFSRU5UICYmICFGT0xMT1dfQ0hJTEQiCisrI2VuZGlm CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmst bXQuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10LmMKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZGFjZmMwCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCitA QCAtMCwwICsxLDE1NyBAQAorKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9p bnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgorKworKyAgIENvcHlyaWdodCAyMDA4 LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAgIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKysgICBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gICovCisrCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRl IDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4K KysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysKKysjaW5jbHVk ZSA8YXNtL3VuaXN0ZC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjZGVmaW5lIGdldHRpZCgp IHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQorKworKy8qIE5vbi1hdG9taWMgYHZhcisrJyBzaG91bGQg bm90IGh1cnQgYXMgd2Ugc3luY2hyb25pemUgdGhlIHRocmVhZHMgYnkgdGhlIFNURVAKKysgICB2 YXJpYWJsZS4gIEhpdC1jb21tZW50cyBuZWVkIHRvIGJlIGR1cGxpY2l0ZSB0aGVyZSB0byBjYXRj aCBib3RoIGF0LXN0b3BzCisrICAgYW5kIGJlaGluZC1zdG9wcywgZGVwZW5kaW5nIG9uIHRoZSB0 YXJnZXQuICAqLworKworK3N0YXRpYyB2b2xhdGlsZSBpbnQgdmFyOworKworK3N0YXRpYyB2b2lk CisrZHVtbXkgKHZvaWQpCisreworK30KKysKKytzdGF0aWMgdm9pZAorK2JyZWFrcG9pbnQgKHZv aWQpCisreworK30KKysKKysvKiBJbmNsdWRlIGhlcmUgdGhlIGZ1bmN0aW9uczoKKysgICBzdGF0 aWMgdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOworKyAgIHN0YXRpYyB2b2lkIGRlbGF5ICh2b2lkKTsg ICovCisrCisrc3RhdGljIHB0aHJlYWRfdCB0aHJlYWQ7Cisrc3RhdGljIHZvbGF0aWxlIGludCBz dGVwOworKyNkZWZpbmUgVEhSRUFECisrCisrI2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay1mb3Jr b2ZmLmMiCisrCisrc3RhdGljIHZvaWQgKgorK3N0YXJ0ICh2b2lkICphcmcpCisreworKyAgaWYg KHN0ZXAgPj0gMykKKysgICAgZ290byBzdGVwXzM7CisrCisrICB3aGlsZSAoc3RlcCAhPSAxKQor KyAgICBkZWxheSAoKTsKKysKKysgIHZhcisrOwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLworKyAg ZHVtbXkgKCk7CS8qIHZhbGlkaXR5LXRocmVhZC1CICovCisrICBzdGVwID0gMjsKKysgIHdoaWxl IChzdGVwICE9IDMpCisrICAgIHsKKysgICAgICBpZiAoc3RlcCA9PSA5OSkKKysJZ290byBzdGVw Xzk5OworKyAgICAgIGRlbGF5ICgpOworKyAgICB9CisrCisrc3RlcF8zOgorKyAgaWYgKHN0ZXAg Pj0gNSkKKysgICAgZ290byBzdGVwXzU7CisrCisrICB2YXIrKzsJLyogYWZ0ZXItZm9yazEtQiAq LworKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsxLUIgKi8KKysgIHN0ZXAgPSA0OworKyAgd2hp bGUgKHN0ZXAgIT0gNSkKKysgICAgeworKyAgICAgIGlmIChzdGVwID09IDk5KQorKwlnb3RvIHN0 ZXBfOTk7CisrICAgICAgZGVsYXkgKCk7CisrICAgIH0KKysKKytzdGVwXzU6CisrICB2YXIrKzsJ LyogYWZ0ZXItZm9yazItQiAqLworKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUIgKi8KKysg IHJldHVybiAodm9pZCAqKSA1VUw7CisrCisrc3RlcF85OToKKysgIC8qIFdlIG11c3Qgbm90IGdl dCBjYXVnaHQgaGVyZSAoYWdhaW5zdCBhIGZvcmdvdHRlbiBicmVha3BvaW50KS4gICovCisrICB2 YXIrKzsKKysgIGJyZWFrcG9pbnQgKCk7CisrICByZXR1cm4gKHZvaWQgKikgOTlVTDsKKyt9Cisr CisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBpbnQgaTsKKysgIHZvaWQgKnRocmVhZF9yZXN1 bHQ7CisrCisrICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7CisrICBwcmludGYgKCJtYWluOiAlZFxu IiwgKGludCkgZ2V0dGlkICgpKTsKKysKKysgIC8qIEdlbmVyYWwgd2F0Y2hwb2ludHMgdmFsaWRp dHkuICAqLworKyAgdmFyKys7CS8qIHZhbGlkaXR5LWZpcnN0ICovCisrICBkdW1teSAoKTsJLyog dmFsaWRpdHktZmlyc3QgKi8KKysKKysgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVM TCwgc3RhcnQsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgdmFyKys7CS8qIHZh bGlkaXR5LXRocmVhZC1BICovCisrICBkdW1teSAoKTsJLyogdmFsaWRpdHktdGhyZWFkLUEgKi8K KysgIHN0ZXAgPSAxOworKyAgd2hpbGUgKHN0ZXAgIT0gMikKKysgICAgZGVsYXkgKCk7CisrCisr ICAvKiBIYXJkd2FyZSB3YXRjaHBvaW50cyBnb3QgZGlzYXJtZWQgaGVyZS4gICovCisrICBmb3Jr b2ZmICgxKTsKKysKKysgIHZhcisrOwkvKiBhZnRlci1mb3JrMS1BICovCisrICBkdW1teSAoKTsJ LyogYWZ0ZXItZm9yazEtQSAqLworKyAgc3RlcCA9IDM7CisrI2lmZGVmIEZPTExPV19DSElMRAor KyAgLyogU3Bhd24gbmV3IHRocmVhZCBhcyBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgY2hpbGQgb2Yg Rk9SSy4gICovCisrICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0aHJlYWQsIE5VTEwsIHN0YXJ0LCBO VUxMKTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysjZW5kaWYKKysgIHdoaWxlIChzdGVwICE9IDQp CisrICAgIGRlbGF5ICgpOworKworKyAgLyogQSBzYW5pdHkgY2hlY2sgZm9yIGRvdWJsZSBoYXJk d2FyZSB3YXRjaHBvaW50cyByZW1vdmFsLiAgKi8KKysgIGZvcmtvZmYgKDIpOworKworKyAgdmFy Kys7CS8qIGFmdGVyLWZvcmsyLUEgKi8KKysgIGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMi1BICov CisrICBzdGVwID0gNTsKKysjaWZkZWYgRk9MTE9XX0NISUxECisrICAvKiBTcGF3biBuZXcgdGhy ZWFkIGFzIGl0IHdhcyBkZWxldGVkIGluIHRoZSBjaGlsZCBvZiBGT1JLLiAgKi8KKysgIGkgPSBw dGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOworKyAgYXNzZXJ0IChp ID09IDApOworKyNlbmRpZgorKworKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkLCAmdGhyZWFk X3Jlc3VsdCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBhc3NlcnQgKHRocmVhZF9yZXN1bHQg PT0gKHZvaWQgKikgNVVMKTsKKysKKysgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjVmNjJlN2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmMKK0BAIC0wLDAgKzEsNTcgQEAKKysvKiBUZXN0IGNh c2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJv Y2Vzcy4KKysKKysgICBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsCisrICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworKworKyNp bmNsdWRlIDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN5cy93 YWl0Lmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKworK3N0 YXRpYyB2b2xhdGlsZSBpbnQgdmFyOworKworK3N0YXRpYyB2b2lkCisrYnJlYWtwb2ludCAodm9p ZCkKKyt7CisrfQorKworKy8qIEluY2x1ZGUgaGVyZSB0aGUgZnVuY3Rpb246CisrICAgc3RhdGlj IHZvaWQgZm9ya29mZiAoaW50IG5yKTsgICovCisrCisrI2luY2x1ZGUgIndhdGNocG9pbnQtZm9y ay1mb3Jrb2ZmLmMiCisrCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBzZXRidWYgKHN0ZG91 dCwgTlVMTCk7CisrICBwcmludGYgKCJtYWluOiAlZFxuIiwgKGludCkgZ2V0cGlkICgpKTsKKysK KysgIC8qIEdlbmVyYWwgd2F0Y2hwb2ludHMgdmFsaWRpdHkuICAqLworKyAgdmFyKys7CisrICAv KiBIYXJkd2FyZSB3YXRjaHBvaW50cyBnb3QgZGlzYXJtZWQgaGVyZS4gICovCisrICBmb3Jrb2Zm ICgxKTsKKysgIC8qIFRoaXMgd2F0Y2hwb2ludCBnb3QgbG9zdCBiZWZvcmUuICAqLworKyAgdmFy Kys7CisrICAvKiBBIHNhbml0eSBjaGVjayBmb3IgZG91YmxlIGhhcmR3YXJlIHdhdGNocG9pbnRz IHJlbW92YWwuICAqLworKyAgZm9ya29mZiAoMik7CisrICB2YXIrKzsKKysKKysgIHJldHVybiAw OworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQt Zm9yay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xZGM5M2FiCistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAK K0BAIC0wLDAgKzEsMTMwIEBACisrIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr IyBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2Zm IG9mIGEgcHJvY2Vzcy4KKysKKytwcm9jIHRlc3Qge3R5cGUgc3ltYm9sfSB7CisrICAgIGdsb2Jh bCBvYmpkaXIgc3ViZGlyIHNyY2RpcgorKworKyAgICBzZXQgdGVzdCB3YXRjaHBvaW50LWZvcmsK KysKKysgICAgZ2xvYmFsIHBmX3ByZWZpeAorKyAgICBzZXQgcHJlZml4X3Rlc3QgJHBmX3ByZWZp eAorKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHR5cGU6IgorKyAgICBzZXQgcHJlZml4X210ICRw Zl9wcmVmaXgKKysKKysgICAgIyBubyB0aHJlYWRzCisrCisrICAgIHNldCBwZl9wcmVmaXggJHBy ZWZpeF9tdAorKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6IgorKworKyAg ICBzZXQgZXhlY3V0YWJsZSAke3Rlc3R9LSR7dHlwZX0KKysgICAgaWYgeyBbZ2RiX2NvbXBpbGUg JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9LmMgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1 dGFibGV9IGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0tRCRzeW1ib2xd XSAhPSAiIiB9IHsKKysJdW50ZXN0ZWQgJHt0ZXN0fS5leHAKKysJcmV0dXJuIC0xCisrICAgIH0K KysgICAgY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQorKworKyAgICBnZGJfdGVzdCAic2hvdyBk ZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNoIHRoZSBjaGlsZCBvZiBhIGZv cmsgaXMgb24uIgorKyAgICBnZGJfdGVzdCAic2V0IGZvbGxvdy1mb3JrLW1vZGUgJHR5cGUiCisr ICAgIGdkYl90ZXN0ICJzaG93IGZvbGxvdy1mb3JrLW1vZGUiICJEZWJ1Z2dlciByZXNwb25zZSB0 byBhIHByb2dyYW0gY2FsbCBvZiBmb3JrIG9yIHZmb3JrIGlzIFwiJHR5cGVcIi4iCisrICAgICMg VGVzdGNhc2UgdXNlcyBpdCBmb3IgdGhlIGBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJyB0eXBlLgor KyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEgbm9zdG9wIG5vcHJpbnQgcGFzcyIKKysKKysg ICAgaWYgeyAhW3J1bnRvX21haW5dIH0gdGhlbiB7CisrCWdkYl9zdXBwcmVzc190ZXN0cworKwly ZXR1cm4KKysgICAgfQorKworKyAgICAjIEluc3RhbGwgdGhlIHdhdGNocG9pbnQgb25seSBhZnRl ciBnZXR0aW5nIGludG8gTUFJTiAtIHdvcmthcm91bmQgc29tZSBQUEMKKysgICAgIyBwcm9ibGVt LgorKyAgICBnZGJfdGVzdCAid2F0Y2ggdmFyIiAiYXRjaHBvaW50IDI6IHZhciIgIlNldCB0aGUg d2F0Y2hwb2ludCIKKysKKysgICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3Qg YmUgbGVmdCBvdmVyIGluIHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCisrICAgIGdkYl9icmVha3Bv aW50ICJicmVha3BvaW50IgorKworKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAi YXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMS4qZm9ya29mZiAq XFwoMVxcKS4qIiAid2F0Y2hwb2ludHMgd29yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBc CisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50IGFmdGVyIHRo ZSBmaXJzdCBmb3JrIgorKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAiYXRjaHBv aW50IDI6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4qZm9ya29mZiAqXFwoMlxc KS4qIiAid2F0Y2hwb2ludCBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNv bnRpbnVlIiBcCisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50 IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAg ICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDIuKk5ldyB2YWx1ZSA9IDMuKnJldHVy biAqMDsiICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3Qg ImNvbnRpbnVlIiAiQ29udGludWluZy4uKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5LiIgImZpbmlz aCIKKysKKysKKysgICAgIyB0aHJlYWRzCisrCisrICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF9t dAorKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAibXVsdGl0aHJlYWRlZDoiCisrCisrICAgIHNldCBl eGVjdXRhYmxlICR7dGVzdH0tbXQtJHt0eXBlfQorKyAgICBpZiB7IFtnZGJfY29tcGlsZV9wdGhy ZWFkcyAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdH0tbXQuYyAke29iamRpcn0vJHtzdWJkaXJ9 LyR7ZXhlY3V0YWJsZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1E JHN5bWJvbF1dICE9ICIiIH0geworKwl1bnRlc3RlZCAke3Rlc3R9LmV4cAorKwlyZXR1cm4gLTEK KysgICAgfQorKyAgICBjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrCisrICAgIGdkYl90ZXN0 ICJzZXQgZm9sbG93LWZvcmstbW9kZSAkdHlwZSIKKysgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZv ciB0aGUgYGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHR5cGUuCisrICAgIGdkYl90ZXN0ICJoYW5k bGUgU0lHVVNSMSBub3N0b3Agbm9wcmludCBwYXNzIgorKworKyAgICBpZiB7ICFbcnVudG9fbWFp bl0gfSB0aGVuIHsKKysJZ2RiX3N1cHByZXNzX3Rlc3RzCisrCXJldHVybgorKyAgICB9CisrCisr ICAgICMgSW5zdGFsbCB0aGUgd2F0Y2hwb2ludCBvbmx5IGFmdGVyIGdldHRpbmcgaW50byBNQUlO IC0gd29ya2Fyb3VuZCBzb21lIFBQQworKyAgICAjIHByb2JsZW0uCisrICAgIGdkYl90ZXN0ICJ3 YXRjaCB2YXIiICJhdGNocG9pbnQgMjogdmFyIiAiU2V0IHRoZSB3YXRjaHBvaW50IgorKworKyAg ICAjIEl0IGlzIG5ldmVyIGhpdCBidXQgaXQgc2hvdWxkIG5vdCBiZSBsZWZ0IG92ZXIgaW4gdGhl IGZvcmsoKWVkLW9mZiBjaGlsZC4KKysgICAgZ2RiX2JyZWFrcG9pbnQgImJyZWFrcG9pbnQiCisr CisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipP bGQgdmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhy ZWFkIHdhdGNocG9pbnRzIHdvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAg ICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFsdWUgPSAyLip2YWxpZGl0 eS10aHJlYWQtQS4qIiAibXVsdGl0aHJlYWRlZCB3YXRjaHBvaW50cyB3b3JrIGF0IEEiCisrICAg IGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFs dWUgPSAyLipOZXcgdmFsdWUgPSAzLip2YWxpZGl0eS10aHJlYWQtQi4qIiAibXVsdGl0aHJlYWRl ZCB3YXRjaHBvaW50cyB3b3JrIGF0IEIiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkg ICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4qIiAiYnJlYWtwb2ludCAoQSkgYWZ0ZXIgdGhl IGZpcnN0IGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9p bnQgMjogdmFyLipPbGQgdmFsdWUgPSAzLipOZXcgdmFsdWUgPSA0LiphZnRlci1mb3JrMS1BLioi ICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250 aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSA0LipOZXcgdmFs dWUgPSA1LiphZnRlci1mb3JrMS1CLioiICJ3YXRjaHBvaW50IEIgYWZ0ZXIgdGhlIGZpcnN0IGZv cmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJyZWFrcG9pbnQgMywgYnJl YWtwb2ludC4qIiAiYnJlYWtwb2ludCAoQSkgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgorKyAgICBn ZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVl ID0gNS4qTmV3IHZhbHVlID0gNi4qYWZ0ZXItZm9yazItQS4qIiAid2F0Y2hwb2ludCBBIGFmdGVy IHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgImF0 Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDYuKk5ldyB2YWx1ZSA9IDcuKmFmdGVyLWZvcmsy LUIuKiIgIndhdGNocG9pbnQgQiBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCisrICAgIGdkYl90ZXN0 ICJjb250aW51ZSIgIkNvbnRpbnVpbmcuLipQcm9ncmFtIGV4aXRlZCBub3JtYWxseS4iICJmaW5p c2giCisrCisrCisrICAgICMgY2xlYW51cAorKworKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhf dGVzdAorK30KKysKKyt0ZXN0IHBhcmVudCBGT0xMT1dfUEFSRU5UCisrCisrIyBPbmx5IEdOVS9M aW51eCBpcyBrbm93biB0byBzdXBwb3J0IGBzZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcuCisr aWYge1tpc3RhcmdldCAiKi0qLWxpbnV4KiJdfSB7CisrICAgIHRlc3QgY2hpbGQgRk9MTE9XX0NI SUxECisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJl YWRzLXJlb3JkZXIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJl b3JkZXIuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjE0ZjQyZDYKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRz LXJlb3JkZXIuYworQEAgLTAsMCArMSwzNjYgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKysKKysjZGVmaW5lIF9HTlVfU09VUkNFCisrI2luY2x1ZGUgPHB0aHJlYWQu aD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUg PGVycm5vLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysj aW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxz aWduYWwuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4K KysKKysjZGVmaW5lIGdldHRpZCgpIHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQorKworKy8qIFRlcm1p bmF0ZSBhbHdheXMgaW4gdGhlIG1haW4gdGFzaywgaXQgY2FuIGxvY2sgdXAgd2l0aCBTSUdTVE9Q cGVkIEdEQgorKyAgIG90aGVyd2lzZS4gICovCisrI2RlZmluZSBUSU1FT1VUIChnZXR0aWQgKCkg PT0gZ2V0cGlkKCkgPyAxMCA6IDE1KQorKworK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgZ2Ric3Rv cF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysKKytz dGF0aWMgcGlkX3QgdGhyZWFkMV90aWQ7Cisrc3RhdGljIHB0aHJlYWRfY29uZF90IHRocmVhZDFf dGlkX2NvbmQgPSBQVEhSRUFEX0NPTkRfSU5JVElBTElaRVI7Cisrc3RhdGljIHB0aHJlYWRfbXV0 ZXhfdCB0aHJlYWQxX3RpZF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFM SVpFUl9OUDsKKysKKytzdGF0aWMgcGlkX3QgdGhyZWFkMl90aWQ7Cisrc3RhdGljIHB0aHJlYWRf Y29uZF90IHRocmVhZDJfdGlkX2NvbmQgPSBQVEhSRUFEX0NPTkRfSU5JVElBTElaRVI7Cisrc3Rh dGljIHB0aHJlYWRfbXV0ZXhfdCB0aHJlYWQyX3RpZF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVD S19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysKKytzdGF0aWMgcHRocmVhZF9tdXRleF90IHRlcm1p bmF0ZV9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysK KytzdGF0aWMgdm9sYXRpbGUgaW50IHRocmVhZDFfcndhdGNoOworK3N0YXRpYyB2b2xhdGlsZSBp bnQgdGhyZWFkMl9yd2F0Y2g7CisrCisrc3RhdGljIGludCB1bnVzZWQxX3J3YXRjaDsKKytzdGF0 aWMgaW50IHVudXNlZDJfcndhdGNoOworKworKy8qIERvIG5vdCB1c2UgYWxhcm0gYXMgaXQgd291 bGQgY3JlYXRlIGEgcHRyYWNlIGV2ZW50IHdoaWNoIHdvdWxkIGhhbmcgdXAgdXMgaWYKKysgKiB3 ZSBhcmUgYmVpbmcgdHJhY2VkIGJ5IEdEQiB3aGljaCB3ZSBzdG9wcGVkIG91cnNlbHZlcy4gICov CisrCisrc3RhdGljIHZvaWQgdGltZWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICptdXRl eCkKKyt7CisrICBpbnQgaTsKKysgIHN0cnVjdCB0aW1lc3BlYyBzdGFydCwgbm93OworKworKyAg aSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJnN0YXJ0KTsKKysgIGFzc2VydCAo aSA9PSAwKTsKKysKKysgIGRvCisrICAgIHsKKysgICAgICBpID0gcHRocmVhZF9tdXRleF90cnls b2NrIChtdXRleCk7CisrICAgICAgaWYgKGkgPT0gMCkKKysJcmV0dXJuOworKyAgICAgIGFzc2Vy dCAoaSA9PSBFQlVTWSk7CisrCisrICAgICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9U T05JQywgJm5vdyk7CisrICAgICAgYXNzZXJ0IChpID09IDApOworKyAgICAgIGFzc2VydCAobm93 LnR2X3NlYyA+PSBzdGFydC50dl9zZWMpOworKyAgICB9CisrICB3aGlsZSAobm93LnR2X3NlYyAt IHN0YXJ0LnR2X3NlYyA8IFRJTUVPVVQpOworKworKyAgZnByaW50ZiAoc3RkZXJyLCAiVGltZWQg b3V0IHdhaXRpbmcgZm9yIGludGVybmFsIGxvY2shXG4iKTsKKysgIGV4aXQgKEVYSVRfRkFJTFVS RSk7CisrfQorKworK3N0YXRpYyB2b2lkICoKKyt0aHJlYWQxX2Z1bmMgKHZvaWQgKnVudXNlZCkK Kyt7CisrICBpbnQgaTsKKysgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7CisrCisrICB0aHJl YWQxX3RpZCA9IGdldHRpZCAoKTsKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFk MV90aWRfY29uZCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICAvKiBCZSBzdXJlIEdEQiBp cyBhbHJlYWR5IHN0b3BwZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLworKyAgdGltZWRfbXV0ZXhf bG9jayAoJmdkYnN0b3BfbXV0ZXgpOworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ri c3RvcF9tdXRleCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICByd2F0Y2hfc3RvcmUgPSB0 aHJlYWQxX3J3YXRjaDsKKysKKysgIC8qIEJlIHN1cmUgdGhlICJUICh0cmFjaW5nIHN0b3ApIiB0 ZXN0IGNhbiBwcm9jZWVkIGZvciBib3RoIHRocmVhZHMuICAqLworKyAgdGltZWRfbXV0ZXhfbG9j ayAoJnRlcm1pbmF0ZV9tdXRleCk7CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJt aW5hdGVfbXV0ZXgpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgcmV0dXJuIE5VTEw7Cisr fQorKworK3N0YXRpYyB2b2lkICoKKyt0aHJlYWQyX2Z1bmMgKHZvaWQgKnVudXNlZCkKKyt7Cisr ICBpbnQgaTsKKysgIHZvbGF0aWxlIGludCByd2F0Y2hfc3RvcmU7CisrCisrICB0aHJlYWQyX3Rp ZCA9IGdldHRpZCAoKTsKKysgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhyZWFkMl90aWRf Y29uZCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICAvKiBCZSBzdXJlIEdEQiBpcyBhbHJl YWR5IHN0b3BwZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLworKyAgdGltZWRfbXV0ZXhfbG9jayAo JmdkYnN0b3BfbXV0ZXgpOworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9t dXRleCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICByd2F0Y2hfc3RvcmUgPSB0aHJlYWQy X3J3YXRjaDsKKysKKysgIC8qIEJlIHN1cmUgdGhlICJUICh0cmFjaW5nIHN0b3ApIiB0ZXN0IGNh biBwcm9jZWVkIGZvciBib3RoIHRocmVhZHMuICAqLworKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRl cm1pbmF0ZV9tdXRleCk7CisrICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5hdGVf bXV0ZXgpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgcmV0dXJuIE5VTEw7CisrfQorKwor K3N0YXRpYyBjb25zdCBjaGFyICoKKytwcm9jX3N0cmluZyAoY29uc3QgY2hhciAqZmlsZW5hbWUs IGNvbnN0IGNoYXIgKmxpbmUpCisreworKyAgRklMRSAqZjsKKysgIHN0YXRpYyBjaGFyIGJ1ZltM SU5FX01BWF07CisrICBzaXplX3QgbGluZV9sZW4gPSBzdHJsZW4gKGxpbmUpOworKworKyAgZiA9 IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKKysgIGlmIChmID09IE5VTEwpCisrICAgIHsKKysgICAg ICBmcHJpbnRmIChzdGRlcnIsICJmb3BlbiAoXCIlc1wiKSBmb3IgXCIlc1wiOiAlc1xuIiwgZmls ZW5hbWUsIGxpbmUsCisrCSAgICAgICBzdHJlcnJvciAoZXJybm8pKTsKKysgICAgICBleGl0IChF WElUX0ZBSUxVUkUpOworKyAgICB9CisrICB3aGlsZSAoZXJybm8gPSAwLCBmZ2V0cyAoYnVmLCBz aXplb2YgKGJ1ZiksIGYpKQorKyAgICB7CisrICAgICAgY2hhciAqczsKKysKKysgICAgICBzID0g c3RyY2hyIChidWYsICdcbicpOworKyAgICAgIGFzc2VydCAocyAhPSBOVUxMKTsKKysgICAgICAq cyA9IDA7CisrCisrICAgICAgaWYgKHN0cm5jbXAgKGJ1ZiwgbGluZSwgbGluZV9sZW4pICE9IDAp CisrCWNvbnRpbnVlOworKworKyAgICAgIGlmIChmY2xvc2UgKGYpKQorKwl7CisrCSAgZnByaW50 ZiAoc3RkZXJyLCAiZmNsb3NlIChcIiVzXCIpIGZvciBcIiVzXCI6ICVzXG4iLCBmaWxlbmFtZSwg bGluZSwKKysJCSAgIHN0cmVycm9yIChlcnJubykpOworKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7 CisrCX0KKysKKysgICAgICByZXR1cm4gJmJ1ZltsaW5lX2xlbl07CisrICAgIH0KKysgIGlmIChl cnJubyAhPSAwKQorKyAgICB7CisrICAgICAgZnByaW50ZiAoc3RkZXJyLCAiZmdldHMgKFwiJXNc IjogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJvciAoZXJybm8pKTsKKysgICAgICBleGl0IChFWElU X0ZBSUxVUkUpOworKyAgICB9CisrICBmcHJpbnRmIChzdGRlcnIsICJcIiVzXCI6IE5vIGxpbmUg XCIlc1wiIGZvdW5kLlxuIiwgZmlsZW5hbWUsIGxpbmUpOworKyAgZXhpdCAoRVhJVF9GQUlMVVJF KTsKKyt9CisrCisrc3RhdGljIHVuc2lnbmVkIGxvbmcKKytwcm9jX3Vsb25nIChjb25zdCBjaGFy ICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbGluZSkKKyt7CisrICBjb25zdCBjaGFyICpzID0gcHJv Y19zdHJpbmcgKGZpbGVuYW1lLCBsaW5lKTsKKysgIGxvbmcgcmV0dmFsOworKyAgY2hhciAqZW5k OworKworKyAgZXJybm8gPSAwOworKyAgcmV0dmFsID0gc3RydG9sIChzLCAmZW5kLCAxMCk7Cisr ICBpZiAocmV0dmFsIDwgMCB8fCByZXR2YWwgPj0gTE9OR19NQVggfHwgKGVuZCAmJiAqZW5kKSkK KysgICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIlwiJXNcIjpcIiVzXCI6ICVsZCwgJXNc biIsIGZpbGVuYW1lLCBsaW5lLCByZXR2YWwsCisrCSAgICAgICBzdHJlcnJvciAoZXJybm8pKTsK KysgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOworKyAgICB9CisrICByZXR1cm4gcmV0dmFsOwor K30KKysKKytzdGF0aWMgdm9pZAorK3N0YXRlX3dhaXQgKHBpZF90IHByb2Nlc3MsIGNvbnN0IGNo YXIgKndhbnRlZCkKKyt7CisrICBjaGFyICpmaWxlbmFtZTsKKysgIGludCBpOworKyAgc3RydWN0 IHRpbWVzcGVjIHN0YXJ0LCBub3c7CisrICBjb25zdCBjaGFyICpzdGF0ZTsKKysKKysgIGkgPSBh c3ByaW50ZiAoJmZpbGVuYW1lLCAiL3Byb2MvJWx1L3N0YXR1cyIsICh1bnNpZ25lZCBsb25nKSBw cm9jZXNzKTsKKysgIGFzc2VydCAoaSA+IDApOworKworKyAgaSA9IGNsb2NrX2dldHRpbWUgKENM T0NLX01PTk9UT05JQywgJnN0YXJ0KTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGRvCisr ICAgIHsKKysgICAgICBzdGF0ZSA9IHByb2Nfc3RyaW5nIChmaWxlbmFtZSwgIlN0YXRlOlx0Iik7 CisrICAgICAgaWYgKHN0cmNtcCAoc3RhdGUsIHdhbnRlZCkgPT0gMCkKKysJeworKwkgIGZyZWUg KGZpbGVuYW1lKTsKKysJICByZXR1cm47CisrCX0KKysKKysgICAgICBpZiAoc2NoZWRfeWllbGQg KCkpCisrCXsKKysJICBwZXJyb3IgKCJzY2hlZF95aWVsZCgpIik7CisrCSAgZXhpdCAoRVhJVF9G QUlMVVJFKTsKKysJfQorKworKyAgICAgIGkgPSBjbG9ja19nZXR0aW1lIChDTE9DS19NT05PVE9O SUMsICZub3cpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysgICAgICBhc3NlcnQgKG5vdy50 dl9zZWMgPj0gc3RhcnQudHZfc2VjKTsKKysgICAgfQorKyAgd2hpbGUgKG5vdy50dl9zZWMgLSBz dGFydC50dl9zZWMgPCBUSU1FT1VUKTsKKysKKysgIGZwcmludGYgKHN0ZGVyciwgIlRpbWVkIG91 dCB3YWl0aW5nIGZvciBQSUQgJWx1IFwiJXNcIiAobm93IGl0IGlzIFwiJXNcIikhXG4iLAorKwkg ICAodW5zaWduZWQgbG9uZykgcHJvY2Vzcywgd2FudGVkLCBzdGF0ZSk7CisrICBleGl0IChFWElU X0ZBSUxVUkUpOworK30KKysKKytzdGF0aWMgdm9sYXRpbGUgcGlkX3QgdHJhY2VyID0gMDsKKytz dGF0aWMgcHRocmVhZF90IHRocmVhZDEsIHRocmVhZDI7CisrCisrc3RhdGljIHZvaWQKKytjbGVh bnVwICh2b2lkKQorK3sKKysgIHByaW50ZiAoIlJlc3VtaW5nIEdEQiBQSUQgJWx1LlxuIiwgKHVu c2lnbmVkIGxvbmcpIHRyYWNlcik7CisrCisrICBpZiAodHJhY2VyKQorKyAgICB7CisrICAgICAg aW50IGk7CisrICAgICAgaW50IHRyYWNlcl9zYXZlID0gdHJhY2VyOworKworKyAgICAgIHRyYWNl ciA9IDA7CisrCisrICAgICAgaSA9IGtpbGwgKHRyYWNlcl9zYXZlLCBTSUdDT05UKTsKKysgICAg ICBhc3NlcnQgKGkgPT0gMCk7CisrICAgIH0KKyt9CisrCisraW50CisrbWFpbiAoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQorK3sKKysgIGludCBpOworKyAgaW50IHN0YW5kYWxvbmUgPSAwOworKwor KyAgaWYgKGFyZ2MgPT0gMiAmJiBzdHJjbXAgKGFyZ3ZbMV0sICItcyIpID09IDApCisrICAgIHN0 YW5kYWxvbmUgPSAxOworKyAgZWxzZQorKyAgICBhc3NlcnQgKGFyZ2MgPT0gMSk7CisrCisrICBz ZXRidWYgKHN0ZG91dCwgTlVMTCk7CisrCisrICB0aW1lZF9tdXRleF9sb2NrICgmZ2Ric3RvcF9t dXRleCk7CisrCisrICB0aW1lZF9tdXRleF9sb2NrICgmdGVybWluYXRlX211dGV4KTsKKysKKysg IGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZDEsIE5VTEwsIHRocmVhZDFfZnVuYywgTlVMTCk7 CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0aHJlYWQy LCBOVUxMLCB0aHJlYWQyX2Z1bmMsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAg aWYgKCFzdGFuZGFsb25lKQorKyAgICB7CisrICAgICAgdHJhY2VyID0gcHJvY191bG9uZyAoIi9w cm9jL3NlbGYvc3RhdHVzIiwgIlRyYWNlclBpZDpcdCIpOworKyAgICAgIGlmICh0cmFjZXIgPT0g MCkKKysJeworKwkgIGZwcmludGYgKHN0ZGVyciwgIlRoZSB0ZXN0Y2FzZSBtdXN0IGJlIHJ1biBi eSBHREIhXG4iKTsKKysJICBleGl0IChFWElUX0ZBSUxVUkUpOworKwl9CisrICAgICAgaWYgKHRy YWNlciAhPSBnZXRwcGlkICgpKQorKwl7CisrCSAgZnByaW50ZiAoc3RkZXJyLCAiVGhlIHRlc3Rj YXNlIHBhcmVudCBtdXN0IGJlIG91ciBHREIgdHJhY2VyIVxuIik7CisrCSAgZXhpdCAoRVhJVF9G QUlMVVJFKTsKKysJfQorKyAgICB9CisrCisrICAvKiBTSUdDT05UIG91ciBkZWJ1Z2dlciBpbiB0 aGUgY2FzZSBvZiBvdXIgY3Jhc2ggYXMgd2Ugd291bGQgZGVhZGxvY2sKKysgICAgIG90aGVyd2lz ZS4gICovCisrCisrICBhdGV4aXQgKGNsZWFudXApOworKworKyAgcHJpbnRmICgiU3RvcHBpbmcg R0RCIFBJRCAlbHUuXG4iLCAodW5zaWduZWQgbG9uZykgdHJhY2VyKTsKKysKKysgIGlmICh0cmFj ZXIpCisrICAgIHsKKysgICAgICBpID0ga2lsbCAodHJhY2VyLCBTSUdTVE9QKTsKKysgICAgICBh c3NlcnQgKGkgPT0gMCk7CisrICAgICAgc3RhdGVfd2FpdCAodHJhY2VyLCAiVCAoc3RvcHBlZCki KTsKKysgICAgfQorKworKyAgdGltZWRfbXV0ZXhfbG9jayAoJnRocmVhZDFfdGlkX211dGV4KTsK KysgIHRpbWVkX211dGV4X2xvY2sgKCZ0aHJlYWQyX3RpZF9tdXRleCk7CisrCisrICAvKiBMZXQg dGhlIHRocmVhZHMgc3RhcnQuICAqLworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ri c3RvcF9tdXRleCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBwcmludGYgKCJXYWl0aW5n IHRpbGwgdGhlIHRocmVhZHMgaW5pdGlhbGl6ZSB0aGVpciBUSURzLlxuIik7CisrCisrICBpZiAo dGhyZWFkMV90aWQgPT0gMCkKKysgICAgeworKyAgICAgIGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAo JnRocmVhZDFfdGlkX2NvbmQsICZ0aHJlYWQxX3RpZF9tdXRleCk7CisrICAgICAgYXNzZXJ0IChp ID09IDApOworKworKyAgICAgIGFzc2VydCAodGhyZWFkMV90aWQgPiAwKTsKKysgICAgfQorKwor KyAgaWYgKHRocmVhZDJfdGlkID09IDApCisrICAgIHsKKysgICAgICBpID0gcHRocmVhZF9jb25k X3dhaXQgKCZ0aHJlYWQyX3RpZF9jb25kLCAmdGhyZWFkMl90aWRfbXV0ZXgpOworKyAgICAgIGFz c2VydCAoaSA9PSAwKTsKKysKKysgICAgICBhc3NlcnQgKHRocmVhZDJfdGlkID4gMCk7CisrICAg IH0KKysKKysgIHByaW50ZiAoIlRocmVhZCAxIFRJRCA9ICVsdSwgdGhyZWFkIDIgVElEID0gJWx1 LCBQSUQgPSAlbHUuXG4iLAorKwkgICh1bnNpZ25lZCBsb25nKSB0aHJlYWQxX3RpZCwgKHVuc2ln bmVkIGxvbmcpIHRocmVhZDJfdGlkLAorKwkgICh1bnNpZ25lZCBsb25nKSBnZXRwaWQgKCkpOwor KworKyAgcHJpbnRmICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGdldCB0cmFwcGVkIGJ5IHRo ZSB3YXRjaHBvaW50cy5cbiIpOworKworKyAgaWYgKHRyYWNlcikKKysgICAgeworKyAgICAgIC8q IHMzOTB4LXVua25vd24tbGludXgtZ251IHdpbGwgZmFpbCB3aXRoICJSIChydW5uaW5nKSIuICAq LworKworKyAgICAgIHN0YXRlX3dhaXQgKHRocmVhZDFfdGlkLCAiVCAodHJhY2luZyBzdG9wKSIp OworKworKyAgICAgIHN0YXRlX3dhaXQgKHRocmVhZDJfdGlkLCAiVCAodHJhY2luZyBzdG9wKSIp OworKyAgICB9CisrCisrICBjbGVhbnVwICgpOworKworKyAgcHJpbnRmICgiSm9pbmluZyB0aGUg dGhyZWFkcy5cbiIpOworKworKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRl X211dGV4KTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgIGkgPSBwdGhyZWFkX2pvaW4gKHRo cmVhZDEsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworKworKyAgaSA9IHB0aHJlYWRfam9p biAodGhyZWFkMiwgTlVMTCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrCisrICBwcmludGYgKCJF eGl0aW5nLlxuIik7CS8qIGJyZWFrLWF0LWV4aXQgKi8KKysKKysgIC8qIEp1c3QgcHJldmVudCBj b21waWxlciBgd2FybmluZzogGyRCIUYbKEJ1bnVzZWRYX3J3YXRjaBskQiFHGyhCIGRlZmluZWQg YnV0IG5vdCB1c2VkJy4gICovCisrICB1bnVzZWQxX3J3YXRjaCA9IDE7CisrICB1bnVzZWQyX3J3 YXRjaCA9IDI7CisrCisrICByZXR1cm4gRVhJVF9TVUNDRVNTOworK30KK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOGY2NTM2NAorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5leHAKK0BAIC0w LDAgKzEsMTAxIEBACisrIyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgorKworKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGVzdCBHREIgY2Fu IGNvcGUgd2l0aCB0d28gd2F0Y2hwb2ludHMgYmVpbmcgaGl0IGJ5IGRpZmZlcmVudCB0aHJlYWRz IGF0IHRoZQorKyMgc2FtZSB0aW1lLCBHREIgcmVwb3J0cyBvbmUgb2YgdGhlbSBhbmQgYWZ0ZXIg ImNvbnRpbnVlIiB0byByZXBvcnQgdGhlIG90aGVyCisrIyBvbmUgR0RCIHNob3VsZCBub3QgYmUg Y29uZnVzZWQgYnkgZGlmZmVyZW50bHkgc2V0IHdhdGNocG9pbnRzIHRoYXQgdGltZS4KKysjIFRo aXMgaXMgdGhlIGdvYWwgb2YgInJlb3JkZXIxIi4gICJyZW9yZGVyMCIgdGVzdHMgdGhlIGJhc2lj IGZ1bmN0aW9uYWxpdHkgb2YKKysjIHR3byB3YXRjaHBvaW50IGJlaW5nIGhpdCBhdCB0aGUgc2Ft ZSB0aW1lLCB3aXRob3V0IHJlb3JkZXJpbmcgdGhlbSBkdXJpbmcgdGhlCisrIyBzdG9wLiAgVGhl IGZvcm1lcmx5IGJyb2tlbiBmdW5jdGlvbmFsaXR5IGlzIGR1ZSB0byB0aGUgYWxsLXN0b3AgbW9k ZSBkZWZhdWx0CisrIyAic2hvdyBicmVha3BvaW50IGFsd2F5cy1pbnNlcnRlZCIgYmVpbmcgIm9m ZiIuICBGb3JtZXJseSB0aGUgcmVtZW1iZXJlZCBoaXQKKysjIGNvdWxkIGJlIGFzc2lnbmVkIGR1 cmluZyBjb250aW51YXRpb24gb2YgYSB0aHJlYWQgd2l0aCBwZW5kaW5nIFNJR1RSQVAgdG8gdGhl CisrIyBkaWZmZXJlbnQvbmV3IHdhdGNocG9pbnQsIGp1c3QgYmFzZWQgb24gdGhlIHdhdGNocG9p bnQvZGVidWcgcmVnaXN0ZXIgbnVtYmVyLgorKworK2lmIHtbdGFyZ2V0X2luZm8gZXhpc3RzIGdk Yixub19oYXJkd2FyZV93YXRjaHBvaW50c10KKysgICAgfHwgIVtpc3RhcmdldCAqLSotbGludXgq XX0geworKyAgICByZXR1cm4gMDsKKyt9CisrCisrc2V0IHRlc3RmaWxlICJ3YXRjaHRocmVhZHMt cmVvcmRlciIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmIHtbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgJHtiaW5maWxlfSBleGVjdXRhYmxlIFtsaXN0 IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWxydF1dICE9ICIiIH0geworKyAgICByZXR1cm4gLTEK Kyt9CisrCisrZm9yZWFjaCByZW9yZGVyIHswIDF9IHsKKysKKysgICAgZ2xvYmFsIHBmX3ByZWZp eAorKyAgICBzZXQgcHJlZml4X3Rlc3QgJHBmX3ByZWZpeAorKyAgICBsYXBwZW5kIHBmX3ByZWZp eCAicmVvcmRlciRyZW9yZGVyOiIKKysKKysgICAgY2xlYW5fcmVzdGFydCAkdGVzdGZpbGUKKysK KysgICAgZ2RiX3Rlc3QgInNldCBjYW4tdXNlLWh3LXdhdGNocG9pbnRzIDEiCisrCisrICAgIGlm ICFbcnVudG9fbWFpbl0geworKwlnZGJfc3VwcHJlc3NfdGVzdHMKKysgICAgfQorKworKyAgICAj IFVzZSAicndhdGNoIiBhcyAid2F0Y2giIHdvdWxkIHJlcG9ydCB0aGUgd2F0Y2hwb2ludCBjaGFu Z2VkIGp1c3QgYmFzZWQgb24gaXRzCisrICAgICMgcmVhZCBtZW1vcnkgdmFsdWUgZHVyaW5nIGEg c3RvcCBieSB1bnJlbGF0ZWQgZXZlbnQuICBXZSBhcmUgaW50ZXJlc3RlZCB0byBub3QKKysgICAg IyB0byBsb3NlIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IHRyaWdnZXIuCisrCisrICAgIGdkYl90 ZXN0ICJyd2F0Y2ggdGhyZWFkMV9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFsw LTlcXSs6IHRocmVhZDFfcndhdGNoIgorKyAgICBnZGJfdGVzdCB7c2V0ICRyd2F0Y2gxPSRicG51 bX0KKysgICAgc2V0IHRlc3QgInJ3YXRjaCB0aHJlYWQyX3J3YXRjaCIKKysgICAgZ2RiX3Rlc3Rf bXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwktcmUgIlRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRo aXMgdHlwZSBvZiBoYXJkd2FyZSB3YXRjaHBvaW50XFwuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJ ICAgICMgcHBjNjQgc3VwcG9ydHMgYXQgbW9zdCAxIGh3IHdhdGNocG9pbnRzLgorKwkgICAgdW5z dXBwb3J0ZWQgJHRlc3QKKysJICAgIHJldHVybgorKwl9CisrCS1yZSAiSGFyZHdhcmUgcmVhZCB3 YXRjaHBvaW50IFxbMC05XF0rOiB0aHJlYWQyX3J3YXRjaFxyXG4kZ2RiX3Byb21wdCAkIiB7Cisr CSAgICBwYXNzICR0ZXN0CisrCX0KKysgICAgfQorKyAgICBnZGJfdGVzdCB7c2V0ICRyd2F0Y2gy PSRicG51bX0KKysgICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFr LWF0LWV4aXQiXQorKworKyAgICAjIFRoZSB3YXRjaHBvaW50cyBjYW4gaGFwcGVuIGluIGFyYml0 cmFyeSBvcmRlciBkZXBlbmRpbmcgb24gcmFuZG9tOgorKyAgICAjIFNFTDogRm91bmQgMiBTSUdU UkFQIGV2ZW50cywgc2VsZWN0aW5nICNbMDFdCisrICAgICMgQXMgR0RCIGNvbnRhaW5zIG5vIHNy YW5kKCkgb24gdGhlIHNwZWNpZmljIGhvc3QvT1MgaXQgd2lsbCBiZWhhdmUgYWx3YXlzIHRoZQor KyAgICAjIHNhbWUuICBTdWNoIG9yZGVyIGNhbm5vdCBiZSBndWFyYW50ZWVkIGZvciBHREIgaW4g Z2VuZXJhbC4KKysKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgIkhhcmR3YXJl IHJlYWQgd2F0Y2hwb2ludCBcWzAtOVxdKzogdGhyZWFkXFsxMlxdX3J3YXRjaFxyXG5cclxuVmFs dWUgPSAwXHJcbjB4XFswLTlhLWZcXSsgaW4gdGhyZWFkXFsxMlxdX2Z1bmMgLioiIFwKKysJICAg ICAiY29udGludWUgYSIKKysKKysgICAgaWYgJHJlb3JkZXIgeworKwlnZGJfdGVzdCB7ZGVsZXRl ICRyd2F0Y2gxfQorKwlnZGJfdGVzdCB7ZGVsZXRlICRyd2F0Y2gyfQorKworKwlnZGJfdGVzdCAi cndhdGNoIHVudXNlZDFfcndhdGNoIiAiSGFyZHdhcmUgcmVhZCB3YXRjaHBvaW50IFxbMC05XF0r OiB1bnVzZWQxX3J3YXRjaCIKKysJZ2RiX3Rlc3QgInJ3YXRjaCB1bnVzZWQyX3J3YXRjaCIgIkhh cmR3YXJlIHJlYWQgd2F0Y2hwb2ludCBcWzAtOVxdKzogdW51c2VkMl9yd2F0Y2giCisrCisrCWdk Yl90ZXN0ICJyd2F0Y2ggdGhyZWFkMV9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQg XFswLTlcXSs6IHRocmVhZDFfcndhdGNoIgorKwlnZGJfdGVzdCAicndhdGNoIHRocmVhZDJfcndh dGNoIiAiSGFyZHdhcmUgcmVhZCB3YXRjaHBvaW50IFxbMC05XF0rOiB0aHJlYWQyX3J3YXRjaCIK KysgICAgfQorKworKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKKysJICAgICAiSGFyZHdhcmUg cmVhZCB3YXRjaHBvaW50IFxbMC05XF0rOiB0aHJlYWRcWzEyXF1fcndhdGNoXHJcblxyXG5WYWx1 ZSA9IDBcclxuMHhcWzAtOWEtZlxdKyBpbiB0aHJlYWRcWzEyXF1fZnVuYyAuKiIgXAorKwkgICAg ICJjb250aW51ZSBiIgorKworKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWst YXQtZXhpdCIgIi4qYnJlYWstYXQtZXhpdC4qIgorKworKyAgICBzZXQgcGZfcHJlZml4ICRwcmVm aXhfdGVzdAorK30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9jcC1zdXBwb3J0LmV4 cCBiL2dkYi90ZXN0c3VpdGUvbGliL2NwLXN1cHBvcnQuZXhwCiBpbmRleCBkYmQyZjU5Li40NGUx YjUxIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvY3Atc3VwcG9ydC5leHAKCmRpZmYg LS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDVhZTAyMDIuLmEyODg2NGEgMTAwNjQ0 Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0xNCw3ICsxNCw3IEBAIFZlcnNpb246 IDYuOC41MC4yMDA5MDgxOAogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRp bmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBh IHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxl IGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDIlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19 JXs/ZGlzdH0KK1JlbGVhc2U6IDMlez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXs/ZGlzdH0K IAogTGljZW5zZTogR1BMdjMrCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC04MjEs NiArODIxLDEwIEBAIGZpCiAlZW5kaWYKIAogJWNoYW5nZWxvZworKiBUdWUgQXVnIDE4IDIwMDkg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNi44LjUwLjIwMDkw ODE4LTMKKy0gYXJjaGVyLWphbmtyYXRvY2h2aWwtZmVkb3JhMTIgY29tbWl0OiA4NTBlM2NiMzhh MjVjYjdmZGZhNGNlZjY2NzYyNmZmYmRlNTFiY2FjCistIEZpeCB0aGUgaGFyZHdhcmUgd2F0Y2hw b2ludHMuCisKICogVHVlIEF1ZyAxOCAyMDA5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPiAtIDYuOC41MC4yMDA5MDgxOC0yCiAtIEZpeCBwYXRjaCBmdXp6IDAuCiAK