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 FSF GDB 7.1.90.20100721 (which is 7.2 pre-release). Date: Sat, 27 Jun 2026 23:54:41 GMT Message-ID: <178260448111.1.10868332494099595621.rpms-gdb-dd46ae6cd02d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: dd46ae6cd02dbc9eb72438ede33b83f57ed40471 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogZGQ0NmFlNmNkMDJkYmM5ZWI3MjQzOGVkZTMz YjgzZjU3ZWQ0MDQ3MQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJv amVjdC5vcmc+CkRhdGUgICA6IDIwMTAtMDctMjFUMjE6MzA6MjArMDA6MDAKU3RhdHMgIDogKzc5 OTYvLTUyMjUyIGluIDEwOCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2pl Y3Qub3JnL3JwbXMvZ2RiL2MvZGQ0NmFlNmNkMDJkYmM5ZWI3MjQzOGVkZTMzYjgzZjU3ZWQ0MDQ3 MT9icmFuY2g9Z2RiLTE3LjItcmViYXNlLWY0NAoKTG9nOgotIFJlYmFzZSB0byBGU0YgR0RCIDcu MS45MC4yMDEwMDcyMSAod2hpY2ggaXMgNy4yIHByZS1yZWxlYXNlKS4KCi0tLQpkaWZmIC0tZ2l0 IGEvLmN2c2lnbm9yZSBiLy5jdnNpZ25vcmUKaW5kZXggNDdjN2NkNi4uNGIwZTRiNCAxMDA2NDQK LS0tIGEvLmN2c2lnbm9yZQorKysgYi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEgQEAKLWdkYi03LjEu dGFyLmJ6MgotbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKK2dkYi03LjEuOTAu MjAxMDA3MjEudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtYXR0YWNoLXNlZS12ZHNvLXRl c3QucGF0Y2ggYi9nZGItNi4zLWF0dGFjaC1zZWUtdmRzby10ZXN0LnBhdGNoCmluZGV4IDU4YTE1 ZGIuLmEwOTIzZjggMTAwNjQ0Ci0tLSBhL2dkYi02LjMtYXR0YWNoLXNlZS12ZHNvLXRlc3QucGF0 Y2gKKysrIGIvZ2RiLTYuMy1hdHRhY2gtc2VlLXZkc28tdGVzdC5wYXRjaApAQCAtMjgsNyArMjgs NyBAQAogK30KIC0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysrIC4v Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gtc2VlLXZkc28uZXhwCTYgSnVsIDIwMDcgMTQ6 MTQ6NDQgLTAwMDAKLUBAIC0wLDAgKzEsNzkgQEAKK0BAIC0wLDAgKzEsNzIgQEAKICsjIENvcHly aWdodCAyMDA3CiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtNDcsMTMgKzQ3LDYgQEAKICsKICsjIFRo aXMgZmlsZSB3YXMgY3JlYXRlZCBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArIyBUaGlzIHRl c3Qgb25seSB3b3JrcyBvbiBMaW51eAogK2lmIHsgIVtpc3RhcmdldCAiKi0qLWxpbnV4LWdudSoi XSB9IHsKICsgICAgcmV0dXJuIDAKCmRpZmYgLS1naXQgYS9nZGItNi4zLWJ0LXBhc3QtemVyby0y MDA1MTIwMS5wYXRjaCBiL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUxMjAxLnBhdGNoCmluZGV4 IDRkNmUyZDguLjExYjk0NmQgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUx MjAxLnBhdGNoCisrKyBiL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUxMjAxLnBhdGNoCkBAIC0x NSwxMSArMTUsMTEgQEAgdGVzdHN1aXRlL2dkYi5iYXNlOgogCiAJUG9ydCB0byBHREItNi43Lgog Ci1JbmRleDogZ2RiLTYuNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NldHNob3cuZXhwCitJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NldHNob3cuZXhw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2V0 c2hvdy5leHAJMjAwNy0wOC0yMyAyMDoxNDoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi43 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2V0c2hvdy5leHAJMjAwNy0xMC0xNSAyMTozNDo1Mi4w MDAwMDAwMDAgKzAyMDAKLUBAIC0xMDYsNiArMTA2LDE2IEBAIGlmIHsgIVt0YXJnZXRfaW5mbyBl eGlzdHMgdXNlX2dkYl9zdHViXSAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAkyMDEwLTA2LTExIDIyOjU2OjA2LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9z ZXRzaG93LmV4cAkyMDEwLTA3LTEyIDEwOjQ2OjA2LjAwMDAwMDAwMCArMDIwMAorQEAgLTk2LDYg Kzk2LDE2IEBAIGlmIHsgIVt0YXJnZXRfaW5mbyBleGlzdHMgdXNlX2dkYl9zdHViXSAKICAgICAg ZGVsZXRlX2JyZWFrcG9pbnRzCiAgICAgIGdkYl90ZXN0ICJydW4iICJTdGFydGluZyBwcm9ncmFt Oi4qZm9vIGJhciBibHVwIGJheiBidWJibGUuKiIgInBhc3NpbmcgYXJncyIKICB9CkBAIC0zNCwx MyArMzQsMTMgQEAgSW5kZXg6IGdkYi02LjcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93 LmV4cAogKyN0ZXN0IHNob3cgYmFja3RyYWNlIHBhc3QtemVyby1wYwogK2dkYl90ZXN0ICJzaG93 IGJhY2t0cmFjZSBwYXN0LXplcm8tcGMiICJXaGV0aGVyIGJhY2t0cmFjZXMgc2hvdWxkIGNvbnRp bnVlIHBhc3QgYSB6ZXJvIHBjIHZhbHVlIGlzIG9mZi4iICJzaG93IGJhY2t0cmFjZSBwYXN0LXpl cm8tcGMgKG9mZikiCiAgI3Rlc3Qgc2V0IGNoZWNrIHJhbmdlIG9uCi0gZ2RiX3Rlc3QgInNldCBj aGVjayByYW5nZSBvbiIgIiIgInNldCBjaGVjayByYW5nZSBvbiIgCisgZ2RiX3Rlc3QgInNldCBj aGVjayByYW5nZSBvbiIgIi4qIiAic2V0IGNoZWNrIHJhbmdlIG9uIiAKICAjdGVzdCBzaG93IGNo ZWNrIHJhbmdlIG9uCi1JbmRleDogZ2RiLTYuNy9nZGIvZnJhbWUuYworSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2ZyYW1lLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi43Lm9yaWcvZ2Ri L2ZyYW1lLmMJMjAwNy0xMC0xMiAyMjozNTo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi43 L2dkYi9mcmFtZS5jCTIwMDctMTAtMTUgMjE6MzQ6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTMz LDYgKzEzMywxNiBAQCBXaGV0aGVyIGJhY2t0cmFjZXMgc2hvdWxkIGNvbnRpbnVlIHBhc3QgCist LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9mcmFtZS5jCTIwMTAtMDctMTIgMTA6MDA6 NTYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZnJhbWUuYwky MDEwLTA3LTEyIDEwOjQ1OjE4LjAwMDAwMDAwMCArMDIwMAorQEAgLTE4NSw2ICsxODUsMTYgQEAg V2hldGhlciBiYWNrdHJhY2VzIHNob3VsZCBjb250aW51ZSBwYXN0IAogIAkJICAgIHZhbHVlKTsK ICB9CiAgCkBAIC01Nyw3ICs1Nyw3IEBAIEluZGV4OiBnZGItNi43L2dkYi9mcmFtZS5jCiAgc3Rh dGljIGludCBiYWNrdHJhY2VfcGFzdF9lbnRyeTsKICBzdGF0aWMgdm9pZAogIHNob3dfYmFja3Ry YWNlX3Bhc3RfZW50cnkgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi1AQCAt MTQ4Myw5ICsxNDkzLDcgQEAgZ2V0X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlz XworQEAgLTE3ODQsOSArMTc5NCw3IEBAIGdldF9wcmV2X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5m byAqdGhpc18KICAgICAgfQogIAogICAgaWYgKHRoaXNfZnJhbWUtPmxldmVsID4gMApAQCAtNjgs NyArNjgsNyBAQCBJbmRleDogZ2RiLTYuNy9nZGIvZnJhbWUuYwogICAgICAgICYmIGdldF9mcmFt ZV90eXBlICh0aGlzX2ZyYW1lKSA9PSBOT1JNQUxfRlJBTUUKICAgICAgICAmJiBnZXRfZnJhbWVf dHlwZSAoZ2V0X25leHRfZnJhbWUgKHRoaXNfZnJhbWUpKSA9PSBOT1JNQUxfRlJBTUUKICAgICAg ICAmJiBnZXRfZnJhbWVfcGMgKHRoaXNfZnJhbWUpID09IDApCi1AQCAtMTg1MCw2ICsxODU4LDE3 IEBAIHRoZSByZXN0IG9mIHRoZSBzdGFjayB0cmFjZS4iKSwKK0BAIC0yMjcxLDYgKzIyNzksMTcg QEAgdGhlIHJlc3Qgb2YgdGhlIHN0YWNrIHRyYWNlLiIpLAogIAkJCSAgICZzZXRfYmFja3RyYWNl X2NtZGxpc3QsCiAgCQkJICAgJnNob3dfYmFja3RyYWNlX2NtZGxpc3QpOwogIAoKZGlmZiAtLWdp dCBhL2dkYi02LjMtYnoxNDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoIGIvZ2RiLTYuMy1i ejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3QucGF0Y2gKaW5kZXggZDMyNWVlMy4uNjQ5NGNkZSAx MDA2NDQKLS0tIGEvZ2RiLTYuMy1iejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3QucGF0Y2gKKysr IGIvZ2RiLTYuMy1iejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3QucGF0Y2gKQEAgLTIxOCw3ICsy MTgsNyBAQCBkaWZmIC11IC1ydU5wIGdkYi02LjMtdW5wYXRjaGVkL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gvcG93ZXJwYy1iY2wtcHJvbG9ndWUuYyBnZAogZGlmZiAtdSAtcnVOcCBnZGItNi4zLXVu cGF0Y2hlZC9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3Bvd2VycGMtYmNsLXByb2xvZ3VlLmV4cCBn ZGItNi4zL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1iY2wtcHJvbG9ndWUuZXhwCiAt LS0gZ2RiLTYuMy11bnBhdGNoZWQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9wb3dlcnBjLWJjbC1w cm9sb2d1ZS5leHAJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKICsrKyBnZGIt Ni4zL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1iY2wtcHJvbG9ndWUuZXhwCTIwMDct MDgtMDIgMTQ6MjE6MjkuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMCwwICsxLDc5IEBACitAQCAtMCww ICsxLDcyIEBACiArIyAgIENvcHlyaWdodCAyMDA2LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTIzOCwxMyArMjM4LDYgQEAgZGlmZiAt dSAtcnVOcCBnZGItNi4zLXVucGF0Y2hlZC9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3Bvd2VycGMt YmNsLXByb2xvZ3VlLmV4cCAKICsjIFRlc3QgdW53aW5kaW5nIGZpeGVzIG9mIHRoZSBQUEMgcGxh dGZvcm0sIHNwZWNpZmljYWxseSBvbiB0aGUgY29waW5nIHdpdGggQkNMCiArIyBqdW1wIG9mIHRo ZSBQSUUgY29kZS4KICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFj ZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKICtpZiAhW2lz dGFyZ2V0ICJwb3dlcnBjKi0qLWxpbnV4KiJdIHRoZW4gewogKyAgICB2ZXJib3NlICJTa2lwcGlu ZyBwb3dlcnBjLWxpbnV4IHByb2xvZ3VlIHRlc3RzLiIKICsgICAgcmV0dXJuCgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuMy1pYTY0LWluZm8tZnJhbWUtZml4LTIwMDUwNzI1LnBhdGNoIGIvZ2RiLTYuMy1p YTY0LWluZm8tZnJhbWUtZml4LTIwMDUwNzI1LnBhdGNoCmluZGV4IDlkNjEzZmQuLjJlYmFiOWUg MTAwNjQ0Ci0tLSBhL2dkYi02LjMtaWE2NC1pbmZvLWZyYW1lLWZpeC0yMDA1MDcyNS5wYXRjaAor KysgYi9nZGItNi4zLWlhNjQtaW5mby1mcmFtZS1maXgtMjAwNTA3MjUucGF0Y2gKQEAgLTQxLDcg KzQxLDcgQEAgdGVzdHN1aXRlOgogKwogLS0tIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC9pYTY0LXNpZ3RyYW1wLmV4cC5maXgJMjAwNS0wNy0yNSAxNjo0Mjo1MC4wMDAwMDAwMDAgLTA0 MDAKICsrKyBnZGItNi4zL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWd0cmFtcC5leHAJ MjAwNS0wNy0yNSAxNjo0MjowMS4wMDAwMDAwMDAgLTA0MDAKLUBAIC0wLDAgKzEsNzMgQEAKK0BA IC0wLDAgKzEsNjMgQEAKICsjICAgQ29weXJpZ2h0IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtNjMsMTYgKzYzLDYgQEAgdGVzdHN1aXRl OgogKwogKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEplZmYgSm9obnN0b24gKGpqb2huc3Ru QHJlZGhhdC5jb20pCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJh Y2VsZXZlbAotK30KLSsKLSsjCi0rIyB0ZXN0IHJ1bm5pbmcgcHJvZ3JhbXMKLSsjCi0rc2V0IHBy bXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogK2lmICFbaXN0YXJnZXQgImlhNjQtKi0qIl0gdGhl biB7CiArICAgIHJldHVybgogK30KCmRpZmYgLS1naXQgYS9nZGItNi4zLWlhNjQtc2lnaWxsLTIw MDUxMTE1LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LXNpZ2lsbC0yMDA1MTExNS5wYXRjaAppbmRleCA1 Yzk0MTYwLi4wN2E2YjQ2IDEwMDY0NAotLS0gYS9nZGItNi4zLWlhNjQtc2lnaWxsLTIwMDUxMTE1 LnBhdGNoCisrKyBiL2dkYi02LjMtaWE2NC1zaWdpbGwtMjAwNTExMTUucGF0Y2gKQEAgLTE2LDcg KzE2LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC9pYTY0LXNpZ2lsbC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuZXhwCTIwMDgtMTItMDIgMjE6MTA6NTcuMDAwMDAw MDAwICswMTAwCi1AQCAtMCwwICsxLDU5IEBACitAQCAtMCwwICsxLDQ5IEBACiArIyAgIENvcHly aWdodCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKQEAgLTM4LDE2ICszOCw2IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWdpbGwuZXhwCiArCiArIyBUaGlzIGZpbGUgd2FzIHdyaXR0 ZW4gYnkgSmVmZiBKb2huc3RvbiAoampvaG5zdG5AcmVkaGF0LmNvbSkKICsKLStpZiAkdHJhY2Vs ZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotKyMKLSsjIHRlc3Qg cnVubmluZyBwcm9ncmFtcwotKyMKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiAr aWYgIVtpc3RhcmdldCAiaWE2NC0qLSoiXSB0aGVuIHsKICsgICAgcmV0dXJuCiArfQoKZGlmZiAt LWdpdCBhL2dkYi02LjMtaW5mZXJpb3Itbm90aWZpY2F0aW9uLTIwMDUwNzIxLnBhdGNoIGIvZ2Ri LTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0Y2gKaW5kZXggNWEwMTRmZi4u YTc4OWIxYiAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3 MjEucGF0Y2gKKysrIGIvZ2RiLTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0 Y2gKQEAgLTM4LDcgKzM4LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9hdHRhY2gtMzIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTYuOC41MC4yMDA4MTEy OC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC0zMi5leHAJMjAwOC0xMi0wNyAxMDowODo1 Mi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMjUyIEBACitAQCAtMCwwICsxLDI0NSBAQAog KyMgQ29weXJpZ2h0IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQpAQCAtNTcsMTMgKzU3LDYgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gtMzIuZXhwCiArIwogKyMgVGhpcyB0ZXN0IHdh cyBiYXNlZCBvbiBhdHRhY2guZXhwIGFuZCBtb2RpZmllZCBmb3IgMzIvNjQgYml0IExpbnV4IHN5 c3RlbXMuICovCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArIyBPbiBIUC1V WCAxMS4wLCB0aGlzIHRlc3QgaXMgY2F1c2luZyBhIHByb2Nlc3MgcnVubmluZyB0aGUgcHJvZ3Jh bQogKyMgImF0dGFjaCIgdG8gYmUgbGVmdCBhcm91bmQgc3Bpbm5pbmcuICBVbnRpbCB3ZSBmaWd1 cmUgb3V0IHdoeSwgSSBhbQogKyMgY29tbWVudGluZyBvdXQgdGhlIHRlc3QgdG8gYXZvaWQgcG9s bHV0aW5nIHRpYW1hdCAob3VyIDExLjAgbmlnaHRseQoKZGlmZiAtLWdpdCBhL2dkYi02LjMtaW5o ZXJpdGFuY2V0ZXN0LTIwMDUwNzI2LnBhdGNoIGIvZ2RiLTYuMy1pbmhlcml0YW5jZXRlc3QtMjAw NTA3MjYucGF0Y2gKaW5kZXggNWYzMzU3MS4uYWI4MTk3NiAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1p bmhlcml0YW5jZXRlc3QtMjAwNTA3MjYucGF0Y2gKKysrIGIvZ2RiLTYuMy1pbmhlcml0YW5jZXRl c3QtMjAwNTA3MjYucGF0Y2gKQEAgLTYyLDcgKzYyLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTA4MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvYjE0NjgzNS5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsrKyBnZGItNi44 LjUwLjIwMDkwODExL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2IxNDY4MzUuZXhwCTIwMDktMDgtMTIg MDY6NTg6MjguMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDU0IEBACitAQCAtMCwwICsxLDQ3 IEBACiArIyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgog KwogKyMgQ29weXJpZ2h0IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC04 NCwxMyArODQsNiBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9iMTQ2ODM1LmV4cAogKyMgQ2hlY2sgdGhhdCBHREIgY2FuIHByb3Blcmx5IHByaW50IGFu IGluaGVyaXRlZCBtZW1iZXIgdmFyaWFibGUKICsjIChCdWd6aWxsYSAxNDY4MzUpCiArCi0raWYg JHRyYWNlbGV2ZWwgewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNf aWQgMAotK3NldCBidWdfaWQgMAotKwogK3NldCB0ZXN0ZmlsZSAiYjE0NjgzNSIKICtzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jYwogK3NldCBzcmNmaWxlMiAke3Rlc3RmaWxlfWIuY2MKCmRpZmYg LS1naXQgYS9nZGItNi4zLWxhcmdlLWNvcmUtMjAwNTEyMDYucGF0Y2ggYi9nZGItNi4zLWxhcmdl LWNvcmUtMjAwNTEyMDYucGF0Y2gKaW5kZXggNmY5NDQwMi4uODc4OWE2YSAxMDA2NDQKLS0tIGEv Z2RiLTYuMy1sYXJnZS1jb3JlLTIwMDUxMjA2LnBhdGNoCisrKyBiL2dkYi02LjMtbGFyZ2UtY29y ZS0yMDA1MTIwNi5wYXRjaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKIAlQb3J0IHRvIEdEQi02Ljcu CiAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLW1lbS5jCitJbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc3ltZmlsZS1tZW0uYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc3ltZmlsZS1tZW0uYwkyMDEwLTAxLTAxIDA4OjMx OjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bWZpbGUt bWVtLmMJMjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL3N5bWZpbGUtbWVtLmMJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLW1lbS5jCTIw MTAtMDctMTIgMTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtNTcsNiArNTcsMTQgQEAKICAj aW5jbHVkZSAiZWxmL2NvbW1vbi5oIgogIApAQCAtNTMsMjAgKzUzLDIwIEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLW1lbS5jCiAgICBpZiAobmJmZCA9PSBOVUxMKQog ICAgICBlcnJvciAoXygiRmFpbGVkIHRvIHJlYWQgYSB2YWxpZCBvYmplY3QgZmlsZSBpbWFnZSBm cm9tIG1lbW9yeS4iKSk7CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0 LmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0xNSAwMzoy MjoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQu YwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAotQEAgLTU5LDcgKzU5LDcgQEAg c3RhdGljIGludCBub3N5bWJvbCAoY2hhciAqLCBDT1JFX0FERFIgKgorLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvdGFyZ2V0LmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwkyMDEwLTA3LTEyIDEw OjQ3OjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGludCBub3N5 bWJvbCAoY2hhciAqLCBDT1JFX0FERFIgKgogIAotIHN0YXRpYyB2b2lkIHRjb21wbGFpbiAodm9p ZCkgQVRUUl9OT1JFVFVSTjsKKyBzdGF0aWMgdm9pZCB0Y29tcGxhaW4gKHZvaWQpIEFUVFJJQlVU RV9OT1JFVFVSTjsKICAKIC1zdGF0aWMgaW50IG5vbWVtb3J5IChDT1JFX0FERFIsIGNoYXIgKiwg aW50LCBpbnQsIHN0cnVjdCB0YXJnZXRfb3BzICopOwogK3N0YXRpYyBMT05HRVNUIG5vbWVtb3J5 IChDT1JFX0FERFIsIGNoYXIgKiwgaW50LCBpbnQsIHN0cnVjdCB0YXJnZXRfb3BzICopOwogIAog IHN0YXRpYyBpbnQgcmV0dXJuX3plcm8gKHZvaWQpOwogIAotQEAgLTQ5NCw3ICs0OTQsNyBAQCB0 YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKHZvaWQpCitAQCAtNTEzLDcgKzUxMyw3IEBAIHRhcmdl dF90ZXJtaW5hbF9pbmZlcmlvciAodm9pZCkKICAgICgqY3VycmVudF90YXJnZXQudG9fdGVybWlu YWxfaW5mZXJpb3IpICgpOwogIH0KICAKQEAgLTc1LDcgKzc1LDcgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3RhcmdldC5jCiAgbm9tZW1vcnkgKENPUkVfQUREUiBtZW1hZGRyLCBj aGFyICpteWFkZHIsIGludCBsZW4sIGludCB3cml0ZSwKICAJICBzdHJ1Y3QgdGFyZ2V0X29wcyAq dCkKICB7Ci1AQCAtNzI2LDcgKzcyNiw3IEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkK K0BAIC03MTgsNyArNzE4LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQogIAkgICAg KHZvaWQgKCopIChzdHJ1Y3QgcmVnY2FjaGUgKikpCiAgCSAgICBub3Byb2Nlc3MpOwogICAgZGVf ZmF1bHQgKGRlcHJlY2F0ZWRfeGZlcl9tZW1vcnksCkBAIC04NCw3ICs4NCw3IEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuYwogIAkgICAgbm9tZW1vcnkpOwogICAgZGVf ZmF1bHQgKHRvX2ZpbGVzX2luZm8sCiAgCSAgICAodm9pZCAoKikgKHN0cnVjdCB0YXJnZXRfb3Bz ICopKQotQEAgLTE0OTcsNyArMTQ5Nyw3IEBAIHRhcmdldF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0 YXJnZXRfb3BzICoKK0BAIC0xNTI2LDcgKzE1MjYsNyBAQCB0YXJnZXRfeGZlcl9wYXJ0aWFsIChz dHJ1Y3QgdGFyZ2V0X29wcyAqCiAgICAgaXQgbWFrZXMgbm8gcHJvZ3Jlc3MsIGFuZCB0aGVuIHJl dHVybiBob3cgbXVjaCB3YXMgdHJhbnNmZXJyZWQpLiAqLwogIAogIGludApAQCAtOTMsNyArOTMs NyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMKICB7CiAgICAvKiBE aXNwYXRjaCB0byB0aGUgdG9wbW9zdCB0YXJnZXQsIG5vdCB0aGUgZmxhdHRlbmVkIGN1cnJlbnRf dGFyZ2V0LgogICAgICAgTWVtb3J5IGFjY2Vzc2VzIGNoZWNrIHRhcmdldC0+dG9faGFzXyhhbGxf KW1lbW9yeSwgYW5kIHRoZQotQEAgLTE1MTMsNyArMTUxMyw3IEBAIHRhcmdldF9yZWFkX21lbW9y eSAoQ09SRV9BRERSIG1lbWFkZHIsIGcKK0BAIC0xNTQyLDcgKzE1NDIsNyBAQCB0YXJnZXRfcmVh ZF9tZW1vcnkgKENPUkVfQUREUiBtZW1hZGRyLCBnCiAgICAgdGhlIHRhcmdldCdzIHN0YWNrLiAg VGhpcyBtYXkgdHJpZ2dlciBkaWZmZXJlbnQgY2FjaGUgYmVoYXZpb3IuICAqLwogIAogIGludApA QCAtMTAyLDcgKzEwMiw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQu YwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRhcmdldCwgbm90IHRoZSBmbGF0 dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAgICBNZW1vcnkgYWNjZXNzZXMgY2hlY2sgdGFyZ2V0 LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQgdGhlCi1AQCAtMTUzMiw3ICsxNTMyLDcgQEAgdGFy Z2V0X3JlYWRfc3RhY2sgKENPUkVfQUREUiBtZW1hZGRyLCBnZAorQEAgLTE1NjEsNyArMTU2MSw3 IEBAIHRhcmdldF9yZWFkX3N0YWNrIChDT1JFX0FERFIgbWVtYWRkciwgZ2QKICAgICBDYWxsZXJz IHRoYXQgY2FuIGRlYWwgd2l0aCBwYXJ0aWFsIHdyaXRlcyBzaG91bGQgY2FsbCB0YXJnZXRfd3Jp dGUuICAqLwogIAogIGludApAQCAtMTExLDcgKzExMSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi90YXJnZXQuYwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRh cmdldCwgbm90IHRoZSBmbGF0dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAgICBNZW1vcnkgYWNj ZXNzZXMgY2hlY2sgdGFyZ2V0LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQgdGhlCi1AQCAtMzA5 OCw4ICszMDk4LDggQEAgZGVidWdfdG9fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhYwor QEAgLTMyMTgsOCArMzIxOCw4IEBAIGRlYnVnX3RvX3ByZXBhcmVfdG9fc3RvcmUgKHN0cnVjdCBy ZWdjYWMKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgInRhcmdldF9wcmVwYXJl X3RvX3N0b3JlICgpXG4iKTsKICB9CiAgCkBAIC0xMjIsNyArMTIyLDcgQEAgSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3RhcmdldC5jCiAgCQkJICAgICAgaW50IHdyaXRlLCBzdHJ1Y3Qg bWVtX2F0dHJpYiAqYXR0cmliLAogIAkJCSAgICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQp CiAgewotQEAgLTMxMDksOCArMzEwOSw4IEBAIGRlcHJlY2F0ZWRfZGVidWdfeGZlcl9tZW1vcnkg KENPUkVfQUREUiAKK0BAIC0zMjI5LDggKzMyMjksOCBAQCBkZXByZWNhdGVkX2RlYnVnX3hmZXJf bWVtb3J5IChDT1JFX0FERFIgCiAgCQkJCQkJYXR0cmliLCB0YXJnZXQpOwogIAogICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtMTMzLDExICsxMzMsMTEgQEAgSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3RhcmdldC5jCiAgCQkgICAgICB3cml0ZSA/ICJ3cml0ZSIg OiAicmVhZCIsIHJldHZhbCk7CiAgCiAgICBpZiAocmV0dmFsID4gMCkKLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90 YXJnZXQuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3RhcmdldC5oCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICsw MTAwCi1AQCAtNDA2LDEwICs0MDYsMTAgQEAgc3RydWN0IHRhcmdldF9vcHMKKy0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL3RhcmdldC5oCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGFyZ2V0LmgJMjAxMC0wNy0x MiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00MTcsMTAgKzQxNywxMCBAQCBzdHJ1Y3Qg dGFyZ2V0X29wcwogICAgICAgICBOT1RFOiBjYWduZXkvMjAwNC0xMC0wMTogVGhpcyBoYXMgYmVl biBlbnRpcmVseSBzdXBlcnNlZWRlZCBieQogICAgICAgICB0b194ZmVyX3BhcnRpYWwgYW5kIGlu ZmVyaW9yIGluaGVyaXRhbmNlLiAgKi8KICAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmgKICAKICAgICAgdm9pZCAoKnRvX2ZpbGVzX2lu Zm8pIChzdHJ1Y3QgdGFyZ2V0X29wcyAqKTsKICAgICAgaW50ICgqdG9faW5zZXJ0X2JyZWFrcG9p bnQpIChzdHJ1Y3QgZ2RiYXJjaCAqLCBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKik7Ci1AQCAtNzg2 LDEyICs3ODYsMTIgQEAgZXh0ZXJuIHZvaWQgdGFyZ2V0X2RjYWNoZV9pbnZhbGlkYXRlICh2bwor QEAgLTgzOCwxMiArODM4LDEyIEBAIGV4dGVybiB2b2lkIHRhcmdldF9kY2FjaGVfaW52YWxpZGF0 ZSAodm8KICAKICBleHRlcm4gaW50IHRhcmdldF9yZWFkX3N0cmluZyAoQ09SRV9BRERSLCBjaGFy ICoqLCBpbnQsIGludCAqKTsKICAKQEAgLTE2OCwxMSArMTY4LDExIEBAIEluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuaAogIAogIC8qIEZldGNoZXMgdGhlIHRhcmdldCdzIG1l bW9yeSBtYXAuICBJZiBvbmUgaXMgZm91bmQgaXQgaXMgc29ydGVkCiAgICAgYW5kIHJldHVybmVk LCBhZnRlciBzb21lIGNvbnNpc3RlbmN5IGNoZWNraW5nLiAgT3RoZXJ3aXNlLCBOVUxMCi1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmMKK0luZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9kY2FjaGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUu b3JpZy9nZGIvZGNhY2hlLmMJMjAxMC0wMS0wMSAwODozMTozMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kY2FjaGUuYwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAw MDAwMDAwMCArMDEwMAotQEAgLTQ2OCwxMCArNDY4LDEwIEBAIGRjYWNoZV9mcmVlIChEQ0FDSEUg KmRjYWNoZSkKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2RjYWNoZS5jCTIwMTAt MDUtMTQgMTk6NTM6MTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvZGNhY2hlLmMJMjAxMC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NjUs MTAgKzQ2NSwxMCBAQCBkY2FjaGVfZnJlZSAoRENBQ0hFICpkY2FjaGUpCiAgICAgTk9URTogVGhp cyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgdG9feGZlcl9wYXJ0aWFsIGludGVyZmFjZSwgaW4gd2hp Y2gKICAgICBwb3NpdGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIExFTiBtZWFuIGZ1cnRoZXIgdHJhbnNm ZXJzIG1heSBiZSBwb3NzaWJsZS4gICovCiAgCkBAIC0xODUsMTAgKzE4NSwxMCBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmMKICB7CiAgICBpbnQgaTsKICAgIGludCBy ZXM7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmgKK0luZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9kY2FjaGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAu MjAxMDAxMTUub3JpZy9nZGIvZGNhY2hlLmgJMjAxMC0wMS0wMSAwODozMTozMC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kY2FjaGUuaAkyMDEwLTAxLTE1IDAz OjIyOjIzLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv ZGNhY2hlLmgJMjAxMC0wMS0wMSAwODozMTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9kY2FjaGUuaAkyMDEwLTA3LTEyIDEwOjQ2OjI0LjAwMDAwMDAwMCAr MDIwMAogQEAgLTM1LDggKzM1LDggQEAgdm9pZCBkY2FjaGVfZnJlZSAoRENBQ0hFICopOwogIAog IC8qIFNpbXBsZSB0byBjYWxsIGZyb20gPHJlbW90ZT5feGZlcl9tZW1vcnkgKi8KQEAgLTIwMCwx MSArMjAwLDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kY2FjaGUuaAogIAog IHZvaWQgZGNhY2hlX3VwZGF0ZSAoRENBQ0hFICpkY2FjaGUsIENPUkVfQUREUiBtZW1hZGRyLCBn ZGJfYnl0ZSAqbXlhZGRyLAogIAkJICAgIGludCBsZW4pOwotSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2V4ZWMuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4ZWMuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZXhlYy5jCTIwMTAt MDEtMTQgMjI6MDE6MjQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvZXhlYy5jCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCi1AQCAtNTc4LDcg KzU3OCw3IEBAIG1hcF92bWFwIChiZmQgKmFiZmQsIGJmZCAqYXJjaCkKKy0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL2V4ZWMuYwkyMDEwLTA1LTE0IDIwOjM1OjExLjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4ZWMuYwkyMDEwLTA3LTEyIDEwOjQ2 OjI0LjAwMDAwMDAwMCArMDIwMAorQEAgLTU3MSw3ICs1NzEsNyBAQCBtYXBfdm1hcCAoYmZkICph YmZkLCBiZmQgKmFyY2gpCiAgfQogIAwKICAKQEAgLTIxMywxMSArMjEzLDExIEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmMKICBzZWN0aW9uX3RhYmxlX3hmZXJfbWVtb3J5 X3BhcnRpYWwgKGdkYl9ieXRlICpyZWFkYnVmLCBjb25zdCBnZGJfYnl0ZSAqd3JpdGVidWYsCiAg CQkJCSAgIFVMT05HRVNUIG9mZnNldCwgTE9OR0VTVCBsZW4sCiAgCQkJCSAgIHN0cnVjdCB0YXJn ZXRfc2VjdGlvbiAqc2VjdGlvbnMsCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGlu dXgtbmF0LmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9saW51eC1uYXQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGludXgtbmF0LmMJMjAx MC0wMS0xNSAwMzoyMjoxNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9saW51eC1uYXQuYwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAotQEAg LTUxMTcsNyArNTExNyw3IEBAIGxpbnV4X3hmZXJfcGFydGlhbCAoc3RydWN0IHRhcmdldF9vcHMg Km8KKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDct MTIgMTA6NDQ6MzYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv bGludXgtbmF0LmMJMjAxMC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC01MTk3 LDcgKzUxOTcsNyBAQCBsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvCiAg I2VuZGlmCiAgICAgICAgaWYgKGl0ZXJhdGVfb3Zlcl9sd3BzIChpYTY0X2xpbnV4X2NoZWNrX3N0 YWNrX3JlZ2lvbiwgJnJhbmdlKSAhPSBOVUxMKQogIAl7IC8qIFRoaXMgcmVnaW9uIGNvbnRhaW5z IGlhNjQgcnNlIHJlZ2lzdGVycywgd2UgaGF2ZSB0byByZS1yZWFkLiAgKi8KQEAgLTIyNiwxMCAr MjI2LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwogIAog IAkgIC8qIFJlLXJlYWQgcmVnaXN0ZXIgc3RhY2sgYXJlYS4gICovCiAgCSAgeHhmZXIgPSBzdXBl cl94ZmVyX3BhcnRpYWwgKG9wcywgb2JqZWN0LCBhbm5leCwKLUluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9yZW1vdGUuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3JlbW90 ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9yZW1vdGUu YwkyMDEwLTAxLTEyIDIyOjQwOjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3JlbW90ZS5jCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCist LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9yZW1vdGUuYwkyMDEwLTA3LTA3IDE4OjE1 OjE2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3JlbW90ZS5j CTIwMTAtMDctMTIgMTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtMjUsNiArMjUsNyBAQAog ICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCiAgI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC0yMzgsNyAr MjM4LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3JlbW90ZS5jCiAgI2luY2x1 ZGUgImluZmVyaW9yLmgiCiAgI2luY2x1ZGUgImJmZC5oIgogICNpbmNsdWRlICJzeW1maWxlLmgi Ci1AQCAtNjE3NSwxMiArNjE3NiwxOSBAQCBoYW5kbGVfbm90aWZpY2F0aW9uIChjaGFyICpidWYs IHNpemVfdCBsCitAQCAtNjUxNSwxMiArNjUxNiwxOSBAQCBoYW5kbGVfbm90aWZpY2F0aW9uIChj aGFyICpidWYsIHNpemVfdCBsCiAgICAgaWYgU0hPVUxEX1dSSVRFIGlzIG5vbnplcm8uICBSZXR1 cm5zIGxlbmd0aCBvZiBkYXRhIHdyaXR0ZW4gb3IKICAgICByZWFkOyAwIGZvciBlcnJvci4gIFRB UkdFVCBpcyB1bnVzZWQuICAqLwogIApAQCAtMjYwLDcgKzI2MCw3IEBAIEluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9yZW1vdGUuYwogIAogICAgc2V0X2dlbmVyYWxfdGhyZWFkIChpbmZl cmlvcl9wdGlkKTsKICAKLUBAIC02MTg5LDcgKzYxOTcsNyBAQCByZW1vdGVfeGZlcl9tZW1vcnkg KENPUkVfQUREUiBtZW1fYWRkciwgCitAQCAtNjUyOSw3ICs2NTM3LDcgQEAgcmVtb3RlX3hmZXJf bWVtb3J5IChDT1JFX0FERFIgbWVtX2FkZHIsIAogICAgZWxzZQogICAgICByZXMgPSByZW1vdGVf cmVhZF9ieXRlcyAobWVtX2FkZHIsIGJ1ZmZlciwgbWVtX2xlbik7CiAgCkBAIC0yNjksMTEgKzI2 OSwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcmVtb3RlLmMKICB9CiAgCiAg LyogU2VuZHMgYSBwYWNrZXQgd2l0aCBjb250ZW50IGRldGVybWluZWQgYnkgdGhlIHByaW50ZiBm b3JtYXQgc3RyaW5nCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcmVtb3RlLXNpbS5j CitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvcmVtb3RlLXNpbS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wMS0w MSAwODozMTo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9y ZW1vdGUtc2ltLmMJMjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC03NTIs MTEgKzc1MiwxNCBAQCBnZGJzaW1fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhY2hlCist LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wNS0xNiAy MzoxMToxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9yZW1v dGUtc2ltLmMJMjAxMC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC03NTksMTEg Kzc1OSwxNCBAQCBnZGJzaW1fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhY2hlCiAgCiAg ICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkLiAqLwogIApAQCAtMjkw LDEwICsyOTAsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3JlbW90ZS1zaW0u YwogICAgLyogSWYgbm8gcHJvZ3JhbSBpcyBydW5uaW5nIHlldCwgdGhlbiBpZ25vcmUgdGhlIHNp bXVsYXRvciBmb3IKICAgICAgIG1lbW9yeS4gIFBhc3MgdGhlIHJlcXVlc3QgZG93biB0byB0aGUg bmV4dCB0YXJnZXQsIGhvcGVmdWxseQogICAgICAgYW4gZXhlYyBmaWxlLiAgKi8KLUluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmgKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9leGVjLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2V4ZWMuaAkyMDEwLTAxLTAxIDA4OjMxOjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2V4ZWMuaAkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEw MAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZXhlYy5oCTIwMTAtMDEtMDEgMDg6 MzE6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5o CTIwMTAtMDctMTIgMTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtNjAsNyArNjAsNyBAQCBl eHRlcm4gaW50IHJlc2l6ZV9zZWN0aW9uX3RhYmxlIChzdHJ1Y3QgCiAgCiAgICAgT25lLCBhbmQg b25seSBvbmUsIG9mIHJlYWRidWYgb3Igd3JpdGVidWYgbXVzdCBiZSBub24tTlVMTC4gICovCgpk aWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2ggYi9nZGItNi4zLXJl YWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCAxMzJmM2JmLi5jMmYwZWE4IDEwMDY0NAotLS0g YS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGItNi4zLXJlYWRuZXZl ci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAKICAgICAgICAgKiBnZGIudGV4 aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAKLUluZGV4OiBnZGIt Ny4wLjkwLjIwMTAwMzA2L2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjkwLjIw MTAwMzA2Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTAzLTA2IDIzOjE5OjEzLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2RvYy9nZGIudGV4aW5mbwky MDEwLTAzLTA2IDIzOjIwOjM1LjAwMDAwMDAwMCArMDEwMAotQEAgLTk5NSw2ICs5OTUsMTIgQEAg UmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQorLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDctMDEgMTk6NDA6MDQuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTAtMDctMTIgMTA6NDE6MTEuMDAwMDAwMDAwICswMjAwCitAQCAtOTk4LDYgKzk5OCwxMiBA QCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRhCiAgdGhlIGRlZmF1bHQs IHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBhcyBpdCBpcyBuZWVkZWQuCiAgVGhp cyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1dHVyZSBvcGVyYXRpb25zIGZhc3Rl ci4KICAKQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIv ZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2RlIE1vZGUgT3B0aW9ucwotSW5k ZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL21haW4uYworSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMDYub3Jp Zy9nZGIvbWFpbi5jCTIwMTAtMDMtMDYgMjM6MjA6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMC45MC4yMDEwMDMwNi9nZGIvbWFpbi5jCTIwMTAtMDMtMDYgMjM6MjA6MzUuMDAwMDAwMDAw ICswMTAwCi1AQCAtMzgyLDYgKzM4Miw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCist LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wNy0xMiAxMDoxNzoy Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9tYWluLmMJMjAx MC0wNy0xMiAxMDo0MTozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zODgsNiArMzg4LDcgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7InhkYiIsIG5vX2FyZ3VtZW50LCAmeGRi X2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2FyZ3VtZW50LCAmZGJ4X2NvbW1hbmRz LCAxfSwKICAgICAgICB7InJlYWRub3ciLCBub19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2Zp bGVzLCAxfSwKQEAgLTQwLDE5ICs0MCwxOSBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9n ZGIvbWFpbi5jCiAgICAgICAgeyJyIiwgbm9fYXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9maWxl cywgMX0sCiAgICAgICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAogICAgICAg IHsicSIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAotQEAgLTEwMzMsNiArMTAzNCw3IEBAIE9w dGlvbnM6XG5cblwKLSAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKK0BAIC05ODAsNiArOTgxLDcg QEAgT3B0aW9uczpcblxuXAorICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCiAgICAt LXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAu XG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmly c3QgYWNjZXNzLlxuXAogKyAgLS1yZWFkbmV2ZXIgICAgICAgIERvIG5vdCByZWFkIHN5bWJvbCBm aWxlcy5cblwKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0t c2U9RklMRSAgICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBm aWxlLlxuXAotSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3N5bWZpbGUuYworSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjAuOTAuMjAxMDAzMDYub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMDMtMDYgMjM6MTk6MTMuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvc3ltZmlsZS5jCTIwMTAt MDMtMDYgMjM6MjA6MzUuMDAwMDAwMDAwICswMTAwCi1AQCAtNzksNiArNzksNyBAQCBzdGF0aWMg dm9pZCBjbGVhcl9zeW10YWJfdXNlcnNfY2xlYW51cCAoCistLS0gZ2RiLTcuMS45MC4yMDEwMDcx MS5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMC0wNi0wMyAwMTowMTowMC4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmMJMjAxMC0wNy0xMiAxMDo0MTox MS4wMDAwMDAwMDAgKzAyMDAKK0BAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5 bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRo aXMgZmlsZSAqLwogIGludCByZWFkbm93X3N5bWJvbF9maWxlczsJLyogUmVhZCBmdWxsIHN5bWJv bHMgaW1tZWRpYXRlbHkgKi8KQEAgLTYwLDMzICs2MCwzNSBAQCBJbmRleDogZ2RiLTcuMC45MC4y MDEwMDMwNi9nZGIvc3ltZmlsZS5jCiAgCiAgLyogRXh0ZXJuYWwgdmFyaWFibGVzIGFuZCBmdW5j dGlvbnMgcmVmZXJlbmNlZC4gKi8KICAKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9k d2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjkwLjIwMTAwMzA2Lm9yaWcvZ2RiL2R3YXJmMnJlYWQu YwkyMDEwLTAzLTA2IDIzOjE5OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAx MDAzMDYvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAzLTA2IDIzOjIwOjU0LjAwMDAwMDAwMCArMDEw MAotQEAgLTUyLDYgKzUyLDcgQEAKLSAjaW5jbHVkZSAiZi1sYW5nLmgiCistLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAx MC0wNy0xMiAxMDo0Mzo1My4wMDAwMDAwMDAgKzAyMDAKK0BAIC01MSw2ICs1MSw3IEBACiAgI2lu Y2x1ZGUgInR5cGVwcmludC5oIgogICNpbmNsdWRlICJqdi1sYW5nLmgiCisgI2luY2x1ZGUgInBz eW1wcml2LmgiCiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTIyMiw3ICsxMjIzLDggQEAgZHdhcmYyX2hhc19p bmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQotIAorQEAgLTExNjEsOCArMTE2Miw5IEBAIGR3 YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICBiZmRfbWFwX292 ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMsIE5VTEwp OworICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0K IC0gIHJldHVybiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmFzZWN0aW9uICE9IE5VTEwKLSsg IHJldHVybiAhcmVhZG5ldmVyX3N5bWJvbF9maWxlcwotKyAgICAgICYmIChkd2FyZjJfcGVyX29i amZpbGUtPmluZm8uYXNlY3Rpb24gIT0gTlVMTAotIAkgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+ YWJicmV2LmFzZWN0aW9uICE9IE5VTEwpOworLQkgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJi cmV2LmFzZWN0aW9uICE9IE5VTEwpOworKyAgcmV0dXJuICghIHJlYWRuZXZlcl9zeW1ib2xfZmls ZXMKKysJICAmJiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmFzZWN0aW9uICE9IE5VTEwKKysJ ICAgICAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYuYXNlY3Rpb24gIT0gTlVMTCkpOwog IH0KICAKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90b3AuaAorIC8qIFdoZW4gbG9h ZGluZyBzZWN0aW9ucywgd2UgY2FuIGVpdGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgor SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC45MC4yMDEwMDMwNi5vcmlnL2dkYi90b3AuaAkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3RvcC5oCTIwMTAtMDMtMDYg MjM6MjA6MzUuMDAwMDAwMDAwICswMTAwCi1AQCAtNjMsNiArNjMsNyBAQCBleHRlcm4gdm9pZCBz ZXRfcHJvbXB0IChjaGFyICopOworLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdG9w LmgJMjAxMC0wNC0wNyAxODo1NDozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi90b3AuaAkyMDEwLTA3LTEyIDEwOjQxOjExLjAwMDAwMDAwMCArMDIwMAorQEAg LTYxLDYgKzYxLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKICAKICAvKiBG cm9tIHJhbmRvbSBwbGFjZXMuICAqLwogIGV4dGVybiBpbnQgcmVhZG5vd19zeW1ib2xfZmlsZXM7 CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaCBiL2dk Yi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKaW5kZXggMjVhMTM1Ny4uNzgzOTIw MCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAorKysg Yi9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCkBAIC0zLDE3ICszLDE3IEBA CiAgICAgICAgICogZ2RiLmdkYi9zZWxmdGVzdC5leHA6IEFkZCBtYXRjaGluZyBvbiBzcGVjaWZp YyBSZWQgSGF0IG9ubHkgdmVyc2lvbgogICAgICAgICBzdHJpbmcuCiAKLUluZGV4OiBnZGItNi44 L2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDA4LTAx LTI2IDE0OjU2OjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDA4LTA3LTE0IDEwOjIzOjUwLjAwMDAwMDAwMCArMDIwMAot QEAgLTM1NCw2ICszNTQsOSBAQCBwcm9jIHRlc3Rfd2l0aF9zZWxmIHsgZXhlY3V0YWJsZSB9IHsK Ky0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0 ZXN0LmV4cAkyMDEwLTA2LTI2IDA4OjQ0OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEwLTA3LTEy IDA5OjU5OjQyLjAwMDAwMDAwMCArMDIwMAorQEAgLTM0Miw2ICszNDIsOSBAQCBwcm9jIHRlc3Rf d2l0aF9zZWxmIHsgZXhlY3V0YWJsZSB9IHsKICAJLXJlICIuXFswLTlcXSsgPSArLisgKzB4Lipc WzAtOS5cXSsuKiRnZGJfcHJvbXB0ICQiIHsKICAJICAgIHBhc3MgInByaW50ZWQgdmVyc2lvbiB3 aXRoIGNhc3QiCiAgCX0KICsJLXJlICIuXFswLTlcXSsgPSAuKEZlZG9yYXxSZWQgSGF0IEVudGVy cHJpc2UgTGludXgpIFxbXFwoXFwpMC05LmEtelxcLVxdKy4qJGdkYl9wcm9tcHQgJCIgewogKwkg ICAgcGFzcyAicHJpbnRlZCB2ZXJzaW9uIEZlZG9yYSBvciBSZWQgSGF0IEVudGVycHJpc2UgTGlu dXggb25seSIKICsJfQotIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJwcmludGVkIHZl cnNpb24iIH0KLSAJdGltZW91dAkJeyBmYWlsICIodGltZW91dCkgcHJpbnRlZCB2ZXJzaW9uIiB9 CiAgICAgIH0KKyAKKyAgICAgZG9fc3RlcHNfYW5kX25leHRzCgpkaWZmIC0tZ2l0IGEvZ2RiLTYu My1zZWN1cml0eS1lcnJhdGEtMjAwNTA2MTAucGF0Y2ggYi9nZGItNi4zLXNlY3VyaXR5LWVycmF0 YS0yMDA1MDYxMC5wYXRjaAppbmRleCA1NTc4NTcwLi4zNzc2NWY5IDEwMDY0NAotLS0gYS9nZGIt Ni4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5wYXRjaAorKysgYi9nZGItNi4zLXNlY3VyaXR5 LWVycmF0YS0yMDA1MDYxMC5wYXRjaApAQCAtMTksMjEgKzE5LDMwIEBAIFByb3Bvc2VkIHVwc3Ry ZWFtIGJ1dCBuZXZlciBjb21taXR0ZWQgdXBzdHJlYW0uCiAgICAgICAgIChzb3VyY2VfY29tbWFu ZCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLiAgQ2hlY2sgcGVybWlzc2lvbnMgaWYKICAgICAgICAg RlJPTV9UVFkgaXMgLTEuCiAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9jbGkvY2xp LWNtZHMuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21kcy5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9jbGkvY2xpLWNtZHMu YwkyMDEwLTAxLTE4IDA3OjI1OjIyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAxMjEvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTAtMDEtMjEgMTU6MTI6MjguMDAwMDAwMDAwICsw MTAwCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlICJvYmpmaWxlcy5oIgorLS0tIGdkYi03 LjEuOTAuMjAxMDA3MjAub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMC0wNS0xNyAyMToyODox Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNt ZHMuYwkyMDEwLTA3LTIxIDIwOjMwOjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM5LDYgKzM5LDcg QEAKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImRpc2FzbS5oIgorICNpbmNsdWRl ICJ0cmFjZXBvaW50LmgiCiArI2luY2x1ZGUgImdkYl9zdGF0LmgiCi0gZXh0ZXJuIHZvaWQgZGlz Y29ubmVjdF9vcl9zdG9wX3RyYWNpbmcgKGludCBmcm9tX3R0eSk7CiAgCiAgI2luY2x1ZGUgInVp LW91dC5oIgotQEAgLTQ4OCw2ICs0ODksMjkgQEAgZmluZF9hbmRfb3Blbl9zY3JpcHQgKGludCBm cm9tX3R0eSwgY2hhcgotIAkgICAgICBmaWxlLCBPX1JET05MWSwgJmZ1bGxfcGF0aG5hbWUpOwot ICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRobmFtZSk7CisgCitAQCAtNDg3LDcgKzQ4 OCw3IEBAIFNjcmlwdCBmaWxlbmFtZSBleHRlbnNpb24gcmVjb2duaXRpb24gaXMKKyAKKyBpbnQK KyBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoY29uc3QgY2hhciAqc2NyaXB0X2ZpbGUsIGludCBzZWFy Y2hfcGF0aCwKKy0JCSAgICAgIEZJTEUgKipzdHJlYW1wLCBjaGFyICoqZnVsbF9wYXRocCkKKysJ CSAgICAgIEZJTEUgKipzdHJlYW1wLCBjaGFyICoqZnVsbF9wYXRocCwgaW50IGZyb21fdHR5KQor IHsKKyAgIGNoYXIgKmZpbGU7CisgICBpbnQgZmQ7CitAQCAtNTEzLDYgKzUxNCwzMiBAQCBmaW5k X2FuZF9vcGVuX3NjcmlwdCAoY29uc3QgY2hhciAqc2NyaXB0CisgICAgICAgcmV0dXJuIDA7Cisg ICAgIH0KICAKICsjaWZkZWYgSEFWRV9HRVRVSUQKICsgIGlmIChmcm9tX3R0eSA9PSAtMSkKQEAg LTQyLDEwICs1MSwxMiBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvY2xpL2NsaS1j bWRzLmMKICsKICsgICAgICBpZiAoZnN0YXQgKGZkLCAmc3RhdGJ1ZikgPCAwKQogKwl7CisrCSAg aW50IHNhdmVfZXJybm8gPSBlcnJubzsKKysKICsJICBjbG9zZSAoZmQpOwotKwkgIC8qIERvIG5v dCBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKSBhcyBGSUxFIGlzIGFsbG9jYXRlZCB0aGVyZS4K LSsJICAgICBwZXJyb3Jfd2l0aF9uYW1lIGNhbGxzIGVycm9yIHdoaWNoIHNob3VsZCBjYWxsIHRo ZSBjbGVhbnVwcy4gICovCi0rCSAgcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7CisrCSAgZG9fY2xl YW51cHMgKG9sZF9jbGVhbnVwcyk7CisrCSAgZXJybm8gPSBzYXZlX2Vycm5vOworKwkgIHJldHVy biAwOwogKwl9CiArICAgICAgaWYgKHN0YXRidWYuc3RfdWlkICE9IGdldHVpZCAoKSB8fCAoc3Rh dGJ1Zi5zdF9tb2RlICYgU19JV09USCkpCiArCXsKQEAgLTUzLDM2ICs2NCwzNyBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvY2xpL2NsaS1jbWRzLmMKICsJICB3YXJuaW5nIChfKCJu b3QgdXNpbmcgdW50cnVzdGVkIGZpbGUgXCIlc1wiIiksIGZpbGUpOwogKwkgIGNsb3NlIChmZCk7 CiArCSAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7CisrCSAgZXJybm8gPSBFUEVSTTsKICsJ ICByZXR1cm4gMDsKICsJfQogKyAgICB9CiArI2VuZGlmCiArCi0gICAvKiBVc2UgdGhlIGZ1bGwg cGF0aCBuYW1lLCBpZiBpdCBpcyBmb3VuZC4gICovCi0gICBpZiAoZnVsbF9wYXRobmFtZSAhPSBO VUxMICYmIGZkICE9IC0xKQotICAgICB7Ci1AQCAtNDk2LDcgKzUyMCw3IEBAIGZpbmRfYW5kX29w ZW5fc2NyaXB0IChpbnQgZnJvbV90dHksIGNoYXIKKyAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51 cHMpOworIAorICAgKnN0cmVhbXAgPSBmZG9wZW4gKGZkLCBGT1BFTl9SVCk7CitAQCAtNTcyLDEz ICs1OTksMTQgQEAgc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCAoY29uc3QgY2hhciAqZgorICAg aWYgKGZpbGUgPT0gTlVMTCB8fCAqZmlsZSA9PSAwKQorICAgICBlcnJvciAoXygic291cmNlIGNv bW1hbmQgcmVxdWlyZXMgZmlsZSBuYW1lIG9mIGZpbGUgdG8gc291cmNlLiIpKTsKICAKLSAgIGlm IChmZCA9PSAtMSkKKy0gIGlmICghZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZpbGUsIHNlYXJjaF9w YXRoLCAmc3RyZWFtLCAmZnVsbF9wYXRoKSkKKysgIGlmICghZmluZF9hbmRfb3Blbl9zY3JpcHQg KGZpbGUsIHNlYXJjaF9wYXRoLCAmc3RyZWFtLCAmZnVsbF9wYXRoLAorKwkJCSAgICAgZnJvbV90 dHkpKQogICAgICB7CisgICAgICAgLyogVGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQsIG9yIHdhcyBv dGhlcndpc2UgaW5hY2Nlc3NpYmxlLgorIAkgSWYgdGhlIHNvdXJjZSBjb21tYW5kIHdhcyBpbnZv a2VkIGludGVyYWN0aXZlbHksIHRocm93IGFuIGVycm9yLgorIAkgT3RoZXJ3aXNlIChlLmcuIGlm IGl0IHdhcyBpbnZva2VkIGJ5IGEgc2NyaXB0KSwgc2lsZW50bHkgaWdub3JlCisgCSB0aGUgZXJy b3IuICAqLwogLSAgICAgIGlmIChmcm9tX3R0eSkKICsgICAgICBpZiAoZnJvbV90dHkgPiAwKQog IAlwZXJyb3Jfd2l0aF9uYW1lIChmaWxlKTsKICAgICAgICBlbHNlCi0gCXsKLUBAIC01NTQsNiAr NTc4LDcgQEAgc291cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21fdHR5KQotICAgZWxz ZQotICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUpOwotIAotKyAgLyogRklMRSBn ZXRzIGZyZWVkIGJ5IGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpLiAgKi8KLSAgIGRvX2NsZWFu dXBzIChvbGRfY2xlYW51cHMpOwotIH0KLSAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5leHAKKyAJcmV0dXJuOworSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4 cAkyMDEwLTAxLTIxIDE1OjExOjE4LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw5OCBAQAor KysrIGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4 cAkyMDEwLTA3LTIwIDIyOjI1OjQwLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSw5MSBAQAog KyMgICBDb3B5cmlnaHQgMjAwNQogKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKQEAgLTEwNSwxMyArMTE3LDYgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAogKwogKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVu IGJ5IEplZmYgSm9obnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+LgogKwotK2lmICR0cmFjZWxl dmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQg MAotK3NldCBidWdfaWQgMAotKwogKyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCiAraWYgW2lz X3JlbW90ZSB0YXJnZXRdIHsKICsgICAgcmV0dXJuCkBAIC0xODEsMTcgKzE4NiwxNyBAQCBJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhw CiArfQogKwogK3JlbW90ZV9leGVjIGJ1aWxkICJybSAuZ2RiaW5pdCIKLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUKK0luZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1w bGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Z2RiaW5pdC5zYW1wbGUJMjAxMC0wMS0yMSAxNToxMToxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4xLjkwLjIwMTAwNzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUJ MjAxMC0wNy0yMCAyMjoyNTo0MC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEgQEAKICtlY2hv ICJcbmluIGdkYmluaXQiCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbWFpbi5jCitJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0yMSAxNToxMTowOS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tYWluLmMJMjAxMC0wMS0y MSAxNToxMToxOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC04MTgsNyArODE4LDcgQEAgRXhjZXNzIGNv bW1hbmQgbGluZSBhcmd1bWVudHMgaWdub3JlZC4gKAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjAu b3JpZy9nZGIvbWFpbi5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMS45MC4yMDEwMDcyMC9nZGIvbWFpbi5jCTIwMTAtMDctMjEgMjA6MDk6MDMuMDAwMDAw MDAwICswMjAwCitAQCAtNzk0LDcgKzc5NCw3IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1l bnRzIGlnbm9yZWQuICgKICAgICAgIGRlYnVnZ2luZyBvciB3aGF0IGRpcmVjdG9yeSB5b3UgYXJl IGluLiAgKi8KICAKICAgIGlmIChob21lX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKQEAg LTIwMCwxMiArMjA1LDM5IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tYWluLmMK ICAKICAgIC8qIE5vdyBwZXJmb3JtIGFsbCB0aGUgYWN0aW9ucyBpbmRpY2F0ZWQgYnkgdGhlIGFy Z3VtZW50cy4gICovCiAgICBpZiAoY2RhcmcgIT0gTlVMTCkKLUBAIC04ODcsNyArODg3LDcgQEAg Q2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjbworQEAgLTg2OCw3ICs4Njgs NyBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvCiAgICAvKiBSZWFk IHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBpc24n dAogICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3VsZCBl eGlzdCwgYWxzbykuICAqLwogICAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5p dCkKIC0gICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmlu aXQsIDAsIFJFVFVSTl9NQVNLX0FMTCk7CiArICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3Vy Y2Vfc2NyaXB0LCBsb2NhbF9nZGJpbml0LCAtMSwgUkVUVVJOX01BU0tfQUxMKTsKICAKLSAgIGZv ciAoaSA9IDA7IGkgPCBuY21kOyBpKyspCi0gICAgIHsKKyAgIC8qIE5vdyB0aGF0IGFsbCAuZ2Ri aW5pdCdzIGhhdmUgYmVlbiByZWFkIGFuZCBhbGwgLWQgb3B0aW9ucyBoYXZlIGJlZW4KKyAgICAg IHByb2Nlc3NlZCwgd2UgY2FuIHJlYWQgYW55IHNjcmlwdHMgbWVudGlvbmVkIGluIFNZTUFSRy4K K0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRv LWxvYWQuYwkyMDEwLTA1LTE3IDIzOjIzOjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEu OTAuMjAxMDA3MjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEwLTA3LTIwIDIyOjI1OjQw LjAwMDAwMDAwMCArMDIwMAorQEAgLTIxOSw3ICsyMTksNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3Jp cHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCisgCX0KKyAKKyAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9v cGVuX3NjcmlwdCAoZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCistCQkJCSAgICAgJnN0cmVhbSwg JmZ1bGxfcGF0aCk7CisrCQkJCSAgICAgJnN0cmVhbSwgJmZ1bGxfcGF0aCwgMSAvKiBmcm9tX3R0 eSAqLyk7CisgCisgICAgICAgLyogSWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kLCB3ZSBzdGlsbCBy ZWNvcmQgdGhlIGZpbGUgaW4gdGhlIGhhc2ggdGFibGUsCisgCSB3ZSBvbmx5IHdhbnQgdG8gcHJp bnQgYW4gZXJyb3IgbWVzc2FnZSBvbmNlLgorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2Ri L2NsaS9jbGktY21kcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMC5vcmln L2dkYi9jbGkvY2xpLWNtZHMuaAkyMDEwLTA1LTAzIDAxOjUyOjE0LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMDctMjAgMjI6 MjU6NDAuMDAwMDAwMDAwICswMjAwCitAQCAtMTI2LDcgKzEyNiw4IEBAIGV4dGVybiB2b2lkIHNv dXJjZV9zY3JpcHQgKGNoYXIgKiwgaW50KTsKKyAvKiBFeHBvcnRlZCB0byBvYmpmaWxlcy5jLiAg Ki8KKyAKKyBleHRlcm4gaW50IGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25zdCBjaGFyICpmaWxl LCBpbnQgc2VhcmNoX3BhdGgsCistCQkJCSBGSUxFICoqc3RyZWFtcCwgY2hhciAqKmZ1bGxfcGF0 aCk7CisrCQkJCSBGSUxFICoqc3RyZWFtcCwgY2hhciAqKmZ1bGxfcGF0aCwKKysJCQkJIGludCBm cm9tX3R0eSk7CisgCisgLyogQ29tbWFuZCB0cmFjaW5nIHN0YXRlLiAgKi8KKyAKCmRpZmYgLS1n aXQgYS9nZGItNi4zLXN0ZXAtdGhyZWFkLWV4aXQtMjAwNTAyMTEtdGVzdC5wYXRjaCBiL2dkYi02 LjMtc3RlcC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCmluZGV4IGZjNzNkOWYuLjEx YzJhNDQgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtc3RlcC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0 LnBhdGNoCisrKyBiL2dkYi02LjMtc3RlcC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNo CkBAIC02Miw3ICs2Miw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3Vp dGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsrKyBnZGItNi44LjUw LjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5leHAJ MjAwOC0xMi0wOCAyMjoyMjoxNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTMwIEBACitA QCAtMCwwICsxLDEyMyBAQAogKyMgVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KICsKICsjIENvcHlyaWdodCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgpAQCAtODMsMTMgKzgzLDYgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmV4cAogKwogKyMgQ2hlY2sg dGhhdCBHREIgY2FuIHN0ZXAgb3ZlciBhIHRocmVhZCBleGl0LgogKwotK2lmICR0cmFjZWxldmVs IHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQg YnVnX2lkIDAKLSsKICtzZXQgdGVzdGZpbGUgInN0ZXAtdGhyZWFkLWV4aXQiCiArc2V0IHNyY2Zp bGUgJHt0ZXN0ZmlsZX0uYwogK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KCmRpZmYgLS1naXQgYS9nZGItNi4zLXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaCBi L2dkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoCmluZGV4IGJjYzQ1NjUuLjUxMzA4 YmMgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoCisrKyBi L2dkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoCkBAIC0xMjksNyArMTI5LDcgQEAg SW5kZXg6IGdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCiArfQogLS0tIGdkYi02LjMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmV4cC5maXgJRnJpIEphbiAyMSAxNzowNzowMiAy MDA1CiArKysgZ2RiLTYuMy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuZXhw CUZyaSBKYW4gMjEgMTc6MDU6MjkgMjAwNQotQEAgLTAsMCArMSwxMzcgQEAKK0BAIC0wLDAgKzEs MTMwIEBACiArIyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgogKwogKyMgQ29weXJpZ2h0IDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCkBAIC0xNTAsMTMgKzE1MCw2IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwog KwogKyMgQ2hlY2sgdGhhdCBHREIgY2FuIGJyZWFrIGF0IG11bHRpcGxlIGZvcm1zIG9mIGNvbnN0 cnVjdG9ycy4KICsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAot K30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlICJj b25zdHJ1Y3RvcnRlc3QiCiArc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKICtzZXQgYmluZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10 ZXN0LW1vdmVkaXItMjAwNTAxMjUucGF0Y2ggYi9nZGItNi4zLXRlc3QtbW92ZWRpci0yMDA1MDEy NS5wYXRjaAppbmRleCBlYjNjZjczLi40YjA1YzEzIDEwMDY0NAotLS0gYS9nZGItNi4zLXRlc3Qt bW92ZWRpci0yMDA1MDEyNS5wYXRjaAorKysgYi9nZGItNi4zLXRlc3QtbW92ZWRpci0yMDA1MDEy NS5wYXRjaApAQCAtMjMsNyArMjMsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL21vdmUtZGlyLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAogKysrIGdkYi02LjguNTAuMjAw ODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9tb3ZlLWRpci5leHAJMjAwOC0xMi0wNyAxMDox MzowMS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsNjcgQEAKK0BAIC0wLDAgKzEsNTcgQEAK ICsjICAgQ29weXJpZ2h0IDIwMDUKICsjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCkBAIC00MSwxNiArNDEsNiBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL21vdmUtZGlyLmV4cAogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICsjIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICAKICsKLSsjIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlv bnMgdG8gdGhpcyBmaWxlIHRvOgotKyMgYnVnLWdkYkBwcmVwLmFpLm1pdC5lZHUKLSsKLStpZiAk dHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStz ZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlICJtb3ZlLWRpciIK ICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0IGluY2ZpbGUgJHt0ZXN0ZmlsZX0uaAoK ZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2ggYi9nZGItNi4zLXRl c3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4IGY5ZDViYjQuLjQ0MGIyODMgMTAwNjQ0Ci0tLSBh L2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKysrIGIvZ2RiLTYuMy10ZXN0LXBpZS0y MDA1MDEwNy5wYXRjaApAQCAtNDM2LDcgKzQzNiw3IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAw MzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTcuMC45 MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDEwLTAzLTA2IDIz OjE5OjMxLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw0MzMgQEAKK0BAIC0wLDAgKzEsNDIz IEBACiArIyAgIENvcHlyaWdodCAxOTk3LCAxOTk5LCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTQ1MywxNiArNDUzLDYgQEAgSW5kZXg6 IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKICsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCiArIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KICsKLSsjIFBsZWFzZSBlbWFpbCBhbnkgYnVn cywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyMgYnVnLWdk YkBwcmVwLmFpLm1pdC5lZHUKLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsJc3RyYWNlICR0 cmFjZWxldmVsCi0rCX0KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArIyBP biBIUC1VWCAxMS4wLCB0aGlzIHRlc3QgaXMgY2F1c2luZyBhIHByb2Nlc3MgcnVubmluZyB0aGUg cHJvZ3JhbQogKyMgImF0dGFjaCIgdG8gYmUgbGVmdCBhcm91bmQgc3Bpbm5pbmcuICBVbnRpbCB3 ZSBmaWd1cmUgb3V0IHdoeSwgSSBhbQogKyMgY29tbWVudGluZyBvdXQgdGhlIHRlc3QgdG8gYXZv aWQgcG9sbHV0aW5nIHRpYW1hdCAob3VyIDExLjAgbmlnaHRseQpAQCAtODc0LDcgKzg2NCw3IEBA IEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKICsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9i cmVhay5leHAJMjAxMC0wMy0wNiAyMzoxOTozMS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEs OTc3IEBACitAQCAtMCwwICsxLDk2NiBAQAogKyMgICBDb3B5cmlnaHQgMTk4OCwgMTk5MCwgMTk5 MSwgMTk5MiwgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKICsjICAgMjAwMCwg MjAwMiwgMjAwMywgMjAwNAogKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAg LTkwMCwxNyArODkwLDYgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2JyZWFrLmV4cAogKwogKyMgVGVzdCB0aGUgc2FtZSBzdHVmZiBidXQgd2l0aCBQ SUUgZXhlY3V0YWJsZXMKICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0 cmFjZWxldmVsCi0rfQotKwotKwotKyMKLSsjIHRlc3QgcnVubmluZyBwcm9ncmFtcwotKyMKLStz ZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlICJicmVhayIKICtz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0IHNyY2ZpbGUxICR7dGVzdGZpbGV9MS5jCkBA IC0xODU2LDcgKzE4MzUsNyBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTAtMDMtMDYgMjM6MTk6MzEuMDAw MDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDI0MyBAQAorQEAgLTAsMCArMSwyMzMgQEAKICsjIENv cHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAy MDAwCiArIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTE4NzQsMTggKzE4 NTMsOCBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUv Y29yZWZpbGUuZXhwCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQogKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAogKwotKyMgUGxlYXNl IGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUg dG86Ci0rIyBidWctZ2RiQHByZXAuYWkubWl0LmVkdQotKwogKyMgVGhpcyBmaWxlIHdhcyB3cml0 dGVuIGJ5IEZyZWQgRmlzaC4gKGZuZkBjeWdudXMuY29tKQogKwotK2lmICR0cmFjZWxldmVsIHRo ZW4gewotKwlzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBi dWdfaWQgMAotKwogKyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCiAraWYgIVtpc25hdGl2ZV0g dGhlbiB7CiArICAgIHJldHVybgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGhyZWFkZWQtd2F0Y2hw b2ludHMyLTIwMDUwMjI1LnBhdGNoIGIvZ2RiLTYuMy10aHJlYWRlZC13YXRjaHBvaW50czItMjAw NTAyMjUucGF0Y2gKaW5kZXggODU5NjM4ZC4uMTg3YTMzZSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy10 aHJlYWRlZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2gKKysrIGIvZ2RiLTYuMy10aHJlYWRl ZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2gKQEAgLTExNCw3ICsxMTQsNyBAQCBJbmRleDog Z2RiLTYuNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkczIuZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw CiArKysgZ2RiLTYuNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJl YWRlZC5leHAJMjAwNi0wNy0xMiAwMTo1NDoyOS4wMDAwMDAwMDAgLTAzMDAKLUBAIC0wLDAgKzEs MTMzIEBACitAQCAtMCwwICsxLDEyNiBAQAogKyMgVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKICsjIENvcHlyaWdodCAyMDA1IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgpAQCAtMTM1LDEzICsxMzUsNiBAQCBJbmRleDogZ2RiLTYuNS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkczIuZXhwCiArCiArIyBDaGVjayB0aGF0 IEdEQiBjYW4gc3VwcG9ydCBtdWx0aXBsZSB3YXRjaHBvaW50cyBhY3Jvc3MgdGhyZWFkcy4KICsK LStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQg cHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArIyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBh IHdhdGNocG9pbnQgaXMgZGV0ZWN0ZWQgaW4gdGhlIHByb3BlciB0aHJlYWQKICsjIHNvIHRoZSB0 ZXN0IGlzIG9ubHkgbWVhbmluZ2Z1bCBvbiBhIHN5c3RlbSB3aXRoIGhhcmR3YXJlIHdhdGNocG9p bnRzLgogK2lmIFt0YXJnZXRfaW5mbyBleGlzdHMgZ2RiLG5vX2hhcmR3YXJlX3dhdGNocG9pbnRz XSB7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRl YnVnaW5mby12Mi5wYXRjaCBiL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1k ZWJ1Z2luZm8tdjIucGF0Y2gKaW5kZXggNmI4NzhhMC4uOTRjMDA3MiAxMDA2NDQKLS0tIGEvZ2Ri LTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaAorKysg Yi9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNo CkBAIC0xNzEsNyArMTcxLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsrKyBnZGItNy4wLjUwLjIwMTAw MTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhwCTIwMTAtMDEtMjggMTI6 NTI6NDguMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDY3IEBACitAQCAtMCwwICsxLDYwIEBA CiArIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CkBAIC0xODcsMTMgKzE4Nyw2IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhwCiArIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQog KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAk dHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0 IHRlc3RmaWxlIGR3Mi1lcnJubwogK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICtzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYu NS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2ggYi9nZGItNi41LWJ6MjE2NzExLWNs b25lLWlzLW91dGVybW9zdC5wYXRjaAppbmRleCBiZDAzOTg1Li5iYjcwMzhmIDEwMDY0NAotLS0g YS9nZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAorKysgYi9nZGItNi41 LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaApAQCAtMjMsMjk2ICsyMyw2IEBAIGlu c3RlYWQuCiAKIAlQb3J0IHRvIEdEQi02LjcuCiAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAy L2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkw ODAyLm9yaWcvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDA5LTA3LTAyIDE5OjI1OjUyLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAu YwkyMDA5LTA4LTAzIDE1OjUwOjA4LjAwMDAwMDAwMCArMDIwMAotQEAgLTIzOCw2ICsyMzgsODAg QEAgYW1kNjRfbGludXhfcmVnaXN0ZXJfcmVnZ3JvdXBfcCAoc3RydWN0IAotIAotIC8qIFNldCB0 aGUgcHJvZ3JhbSBjb3VudGVyIGZvciBwcm9jZXNzIFBUSUQgdG8gUEMuICAqLwotIAotKy8qIERl dGVjdCB0aGUgb3V0ZXJtb3N0IGZyYW1lOyBkdXJpbmcgdW53aW5kIG9mCi0rICAgCSM1ICAweDAw MDAwMDMwNWNlYzY4YzMgaW4gY2xvbmUgKCkgZnJvbSAvbGliNjQvdGxzL2xpYmMuc28uNgotKyAg IGF2b2lkIHRoZSBhZGRpdGlvbmFsIGJvZ3VzIGZyYW1lCi0rICAgCSM2ICAweDAwMDAwMDAwMDAw MDAwMDAgaW4gPz8KLSsgICBXZSBjb21wYXJlIGlmIHRoZSBgbGludXhfY2xvbmVfY29kZScgYmxv Y2sgaXMgX2JlZm9yZV8gdW53b3VuZCBQQy4gICovCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgbGludXhfY2xvbmVfY29kZVtdID0KLSt7Ci0rLyogbGliYy9zeXNkZXBzL3VuaXgvc3lz di9saW51eC94ODZfNjQvY2xvbmUuUyAqLwotKy8qICNpZmRlZiBSRVNFVF9QSUQgKi8KLSsvKiAu Li4gKi8KLSsvKiAJbW92CSRTWVNfaWZ5KGdldHBpZCksICVlYXggKi8KLSsvKiAweGI4LCAweDI3 LCAweDAwLCAweDAwLCAweDAwICovCi0rLyogT1IgKi8KLSsvKiAJbW92CSRTWVNfaWZ5KGdldHBp ZCksICVyYXggKi8KLSsvKiAweDQ4LCAweGM3LCAweGMwLCAweDI3LCAweDAwLCAweDAwLCAweDAw ICovCi0rLyogc28ganVzdDogKi8KLSsgIDB4MjcsIDB4MDAsIDB4MDAsIDB4MDAsCi0rLyogCXN5 c2NhbGwgKi8KLSsgIDB4MGYsIDB4MDUsCi0rLyogCW1vdmwJJWVheCwgJWZzOlBJRCAqLwotKyAg MHg2NCwgMHg4OSwgMHgwNCwgMHgyNSwgMHg5NCwgMHgwMCwgMHgwMCwgMHgwMCwKLSsvKiAJbW92 bAklZWF4LCAlZnM6VElEICovCi0rICAweDY0LCAweDg5LCAweDA0LCAweDI1LCAweDkwLCAweDAw LCAweDAwLCAweDAwLAotKy8qICNlbmRpZiAqLwotKy8qIAl8KiBTZXQgdXAgYXJndW1lbnRzIGZv ciB0aGUgZnVuY3Rpb24gY2FsbC4gICp8ICovCi0rLyogCXBvcHEJJXJheAkJfCogRnVuY3Rpb24g dG8gY2FsbC4gICp8ICovCi0rICAweDU4LAotKy8qIAlwb3BxCSVyZGkJCXwqIEFyZ3VtZW50LiAg KnwgKi8KLSsgIDB4NWYsCi0rLyogCWNhbGwJKiVyYXgkICAgKi8KLSsgIDB4ZmYsIDB4ZDAKLSt9 OwotKwotKyNkZWZpbmUgTElOVVhfQ0xPTkVfTEVOIChzaXplb2YgbGludXhfY2xvbmVfY29kZSkK LSsKLStzdGF0aWMgaW50Ci0rYW1kNjRfbGludXhfY2xvbmVfcnVubmluZyAoc3RydWN0IGZyYW1l X2luZm8gKnRoaXNfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0 aGlzX2ZyYW1lKTsKLSsgIHVuc2lnbmVkIGNoYXIgYnVmW0xJTlVYX0NMT05FX0xFTl07Ci0rCi0r ICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAodGhpc19mcmFtZSwgcGMgLSBMSU5VWF9D TE9ORV9MRU4sIGJ1ZiwKLSsJCQkJIExJTlVYX0NMT05FX0xFTikpCi0rICAgIHJldHVybiAwOwot KwotKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9jbG9uZV9jb2RlLCBMSU5VWF9DTE9ORV9MRU4p ICE9IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBp bnQKLSthbWQ2NF9saW51eF9vdXRlcm1vc3RfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlz X2ZyYW1lKQotK3sKLSsgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7 Ci0rICBjaGFyICpuYW1lOwotKwotKyAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5h bWUsIE5VTEwsIE5VTEwpOwotKwotKyAgLyogSWYgd2UgaGF2ZSBOQU1FLCB3ZSBjYW4gb3B0aW1p emUgdGhlIHNlYXJjaC4KLSsgICAgIGBjbG9uZScgTkFNRSBzdGlsbCBuZWVkcyB0byBoYXZlIHRo ZSBjb2RlIGNoZWNrZWQgYXMgaXRzIG5hbWUgbWF5IGJlCi0rICAgICBwcmVzZW50IGluIHRoZSB1 c2VyIGNvZGUuCi0rICAgICBgX19jbG9uZScgTkFNRSBzaG91bGQgbm90IGJlIHByZXNlbnQgaW4g dGhlIHVzZXIgY29kZSBidXQgaW4gdGhlIGluaXRpYWwKLSsgICAgIHBhcnRzIG9mIHRoZSBgX19j bG9uZScgaW1wbGVtZW50YXRpb24gdGhlIHVud2luZCBzdGlsbCBtYWtlcyBzZW5zZS4KLSsgICAg IE1vcmUgZGV0YWlsZWQgdW53aW5kaW5nIGRlY2lzaW9uIHdvdWxkIGJlIHRvbyBtdWNoIHNlbnNp dGl2ZSB0byBwb3NzaWJsZQotKyAgICAgc3VidGxlIGNoYW5nZXMgaW4gc3BlY2lmaWMgZ2xpYmMg cmV2aXNpb25zLiAgKi8KLSsgIGlmIChuYW1lID09IE5VTEwgfHwgc3RyY21wIChuYW1lLCAiY2xv bmUiKSA9PSAwCi0rICAgICAgfHwgc3RyY21wICgiX19jbG9uZSIsIG5hbWUpID09IDApCi0rICAg IHJldHVybiAoYW1kNjRfbGludXhfY2xvbmVfcnVubmluZyAodGhpc19mcmFtZSkgIT0gMCk7Ci0r Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF93cml0ZV9w YyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQotIHsKLUBAIC0yNzYs NiArMzUwLDggQEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgotICAg dGRlcC0+c2NfcmVnX29mZnNldCA9IGFtZDY0X2xpbnV4X3NjX3JlZ19vZmZzZXQ7Ci0gICB0ZGVw LT5zY19udW1fcmVncyA9IEFSUkFZX1NJWkUgKGFtZDY0X2xpbnV4X3NjX3JlZ19vZmZzZXQpOwot IAotKyAgdGRlcC0+b3V0ZXJtb3N0X2ZyYW1lX3AgPSBhbWQ2NF9saW51eF9vdXRlcm1vc3RfZnJh bWU7Ci0rCi0gICAvKiBHTlUvTGludXggdXNlcyBTVlI0LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMu ICAqLwotICAgc2V0X3NvbGliX3N2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cwotICAgICAoZ2Ri YXJjaCwgc3ZyNF9scDY0X2ZldGNoX2xpbmtfbWFwX29mZnNldHMpOwotSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDIvZ2RiL2FtZDY0LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAu MjAwOTA4MDIub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIwMDktMDctMDIgMTk6MjU6NTIuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvYW1kNjQtdGRlcC5jCTIwMDkt MDgtMDMgMTU6NTA6MDguMDAwMDAwMDAwICswMjAwCi1AQCAtMTczNiwxMSArMTczNiwxNiBAQCBh bWQ2NF9mcmFtZV90aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqCi0gewotICAgc3RydWN0IGFt ZDY0X2ZyYW1lX2NhY2hlICpjYWNoZSA9Ci0gICAgIGFtZDY0X2ZyYW1lX2NhY2hlICh0aGlzX2Zy YW1lLCB0aGlzX2NhY2hlKTsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNo X3RkZXAgKGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKSk7Ci0gCi0gICAvKiBUaGlzIG1hcmtz IHRoZSBvdXRlcm1vc3QgZnJhbWUuICAqLwotICAgaWYgKGNhY2hlLT5iYXNlID09IDApCi0gICAg IHJldHVybjsKLSAKLSsgIC8qIERldGVjdCBPUyBkZXBlbmRlbnQgb3V0ZXJtb3N0IGZyYW1lczsg c3VjaCBhcyBgY2xvbmUnLiAgKi8KLSsgIGlmICh0ZGVwLT5vdXRlcm1vc3RfZnJhbWVfcCAmJiB0 ZGVwLT5vdXRlcm1vc3RfZnJhbWVfcCAodGhpc19mcmFtZSkpCi0rICAgIHJldHVybjsKLSsKLSAg ICgqdGhpc19pZCkgPSBmcmFtZV9pZF9idWlsZCAoY2FjaGUtPmJhc2UgKyAxNiwgY2FjaGUtPnBj KTsKLSB9Ci0gCi0tLS0gZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvaTM4Ni10ZGVwLmMub3JpZwky MDA5LTA4LTEwIDA1OjAyOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4 MTEvZ2RiL2kzODYtdGRlcC5jCTIwMDktMDgtMTEgMTY6MzM6NTEuMDAwMDAwMDAwICswMjAwCi1A QCAtNTQzMiw2ICs1NDMyLDkgQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2lu Zm8gaQotICAgdGRlcC0+c2NfcGNfb2Zmc2V0ID0gLTE7Ci0gICB0ZGVwLT5zY19zcF9vZmZzZXQg PSAtMTsKLSAKLSsgIC8qIFVud2luZGluZyBzdG9wcyBvbiBpMzg2IGF1dG9tYXRpY2FsbHkuICAq LwotKyAgdGRlcC0+b3V0ZXJtb3N0X2ZyYW1lX3AgPSBOVUxMOwotKwotICAgdGRlcC0+cmVjb3Jk X3JlZ21hcCA9IGkzODZfcmVjb3JkX3JlZ21hcDsKLSAKLSAgIC8qIFRoZSBmb3JtYXQgdXNlZCBm b3IgYGxvbmcgZG91YmxlJyBvbiBhbG1vc3QgYWxsIGkzODYgdGFyZ2V0cyBpcwotLS0tIGdkYi02 LjguNTAuMjAwOTA4MTEvZ2RiL2kzODYtdGRlcC5oLm9yaWcJMjAwOS0wOC0xMCAwNTowMjozOS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODExL2dkYi9pMzg2LXRkZXAuaAky MDA5LTA4LTExIDE2OjM0OjA4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyMCw2ICsxMjAsOSBAQCBz dHJ1Y3QgZ2RiYXJjaF90ZGVwCi0gICBpbnQgKCppMzg2X3N5c2VudGVyX3JlY29yZCkgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUpOwotICAgLyogUGFyc2Ugc3lzY2FsbCBhcmdzLiAgKi8KLSAg IGludCAoKmkzODZfc3lzY2FsbF9yZWNvcmQpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsK LSsKLSsgIC8qIERldGVjdCBPUyBkZXBlbmRlbnQgb3V0ZXJtb3N0IGZyYW1lczsgc3VjaCBhcyBg Y2xvbmUnLiAgKi8KLSsgIGludCAoKm91dGVybW9zdF9mcmFtZV9wKSAoc3RydWN0IGZyYW1lX2lu Zm8gKnRoaXNfZnJhbWUpOwotIH07Ci0gCi0gLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAg Ki8KLS0tLSBhL2dkYi9pYTY0LXRkZXAuYwotKysrIGIvZ2RiL2lhNjQtdGRlcC5jCi1AQCAtMjEy Miw2ICsyMTIyLDEzOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCBpYTY0X2Zy YW1lX3Vud2luZCA9Ci0gICBkZWZhdWx0X2ZyYW1lX3NuaWZmZXIKLSB9OwotIAotKy8qIERldGVj dCB0aGUgb3V0ZXJtb3N0IGZyYW1lOyBkdXJpbmcgdW53aW5kIG9mCi0rICAgCSM2ICAweDIwMDAw MDAwMDAzNDcxMDAgaW4gX19jbG9uZTIgKCkgZnJvbSAvbGliL2xpYmMuc28uNi4xCi0rICAgYXZv aWQgdGhlIGFkZGl0aW9uYWwgYm9ndXMgZnJhbWUKLSsgICAJIzcgIDB4MDAwMDAwMDAwMDAwMDAw MCBpbiA/PyAoKSAgKi8KLSsKLStzdGF0aWMgY2hhciBsaW51eF9jbG9uZTJfY29kZVtdID0KLSt7 Ci0rLyogbGliYy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L2Nsb25lMi5TICovCi0rICAw eDA5LCAweDAwLCAweDIwLCAweDEyLCAweDkwLCAweDExLCAweDAwLCAweDQwLAotKyAgMHgyOCwg MHgyMCwgMHgyMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwKLSsvKiAgICAgICAgIHN0 NCBbcjldPXI4ICovCi0rLyogICAgICAgICBzdDQgW3IxMF09cjggKi8KLSsvKiAgICAgICAgIDs7 ICovCi0rLyogI2VuZGlmICovCi0rICAweDAyLCAweDUwLCAweDIxLCAweDQwLCAweDE4LCAweDE0 LCAweDkwLCAweDAyLAotKyAgMHg5MCwgMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw NCwgMHgwMCwKLSsvKiAxOiAgICAgIGxkOCBvdXQxPVtpbjBdLDggICAgICAgIHwqIFJldHJpZXZl IGNvZGUgcG9pbnRlci4gICAgICAgKnwgKi8KLSsvKiAgICAgICAgIG1vdiBvdXQwPWluNCAgICAg ICAgICAgIHwqIFBhc3MgcHJvcGVyIGFyZ3VtZW50IHRvIGZuICp8ICovCi0rLyogICAgICAgICA7 OyAqLwotKyAgMHgxMSwgMHgwOCwgMHgwMCwgMHg0MCwgMHgxOCwgMHgxMCwgMHg2MCwgMHg1MCwK LSsgIDB4MDUsIDB4ODAsIDB4MDMsIDB4MDAsIDB4NjgsIDB4MDAsIDB4ODAsIDB4MTIsCi0rLyog ICAgICAgICBsZDggZ3A9W2luMF0gICAgICAgICAgICB8KiBMb2FkIGZ1bmN0aW9uIGdwLiAgICAg ICAgICAgICp8ICovCi0rLyogICAgICAgICBtb3YgYjY9b3V0MSAqLwotKy8qICAgICAgICAgYnIu Y2FsbC5kcHRrLm1hbnkgcnA9YjYgfCogQ2FsbCBmbihhcmcpIGluIHRoZSBjaGlsZCAgICAqfCAq LwotKy8qICAgICAgICAgOzsgKi8KLSsgIDB4MTAsIDB4NDgsIDB4MDEsIDB4MTAsIDB4MDAsIDB4 MjEsIDB4MTAsIDB4MDAsCi0rICAweGEwLCAweDAwLCAweDQyLCAweDAwLCAweDk4LCAweGRmLCAw eGY3LCAweDViLAotKy8qICAgICAgICAgbW92IG91dDA9cjggICAgICAgICAgICAgfCogQXJndW1l bnQgdG8gX2V4aXQgICAgICAgICAgICAqfCAqLwotKy8qICAgICAgICAgbW92IGdwPWxvYzAgKi8K LSsvKiAgICAgICAgIC5nbG9ibCBISURERU5fSlVNUFRBUkdFVChfZXhpdCkgKi8KLSsvKiAgICAg ICAgIGJyLmNhbGwuZHBudC5tYW55IHJwPUhJRERFTl9KVU1QVEFSR0VUKF9leGl0KSAqLwotKy8q ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCogY2FsbCBfZXhpdCB3aXRoIHJlc3Vs dCBmcm9tIGZuLiAgICAgICp8ICovCi0rICAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAw eDAwLCAweDAwLCAweDAwLAotKyAgMHgwMCwgMHgwMiwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwg MHg4NCwgMHgwMAotKy8qICAgICAgICAgcmV0ICAgICAgICAgICAgICAgICAgICAgfCogTm90IHJl YWNoZWQuICAgICAgICAgKnwgKi8KLSt9OwotKwotKyNkZWZpbmUgTElOVVhfQ0xPTkVfUFJFX1NM T1RTIDMJLyogTnVtYmVyIG9mIHNsb3RzIGJlZm9yZSBQQy4gICovCi0rI2RlZmluZSBMSU5VWF9D TE9ORV9MRU4gKHNpemVvZiBsaW51eF9jbG9uZTJfY29kZSkKLSsKLStzdGF0aWMgaW50Ci0raWE2 NF9saW51eF9jbG9uZTJfcnVubmluZyAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCi0r ewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsKLSsgIGNoYXIg YnVmW0xJTlVYX0NMT05FX0xFTl07Ci0rICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1pbnN5bTsK LSsgIGxvbmcgbG9uZyBpbnN0cjsKLSsKLSsgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5 ICh0aGlzX2ZyYW1lLCBwYyAtIExJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2LAotKwkJCQkgYnVm LCBMSU5VWF9DTE9ORV9MRU4pKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChtZW1jbXAgKGJ1 ZiwgbGludXhfY2xvbmUyX2NvZGUsIExJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2KSAhPSAwKQot KyAgICByZXR1cm4gMDsKLSsKLSsgIC8qIEFkanVzdCB0aGUgZXhwZWN0ZWQgIl9leGl0IiBhZGRy ZXNzLiAgKi8KLSsgIG1pbnN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0ICgiX2V4aXQi LCBOVUxMKTsKLSsgIGlmIChtaW5zeW0gPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBp bnN0ciA9IHNsb3ROX2NvbnRlbnRzICgmbGludXhfY2xvbmUyX2NvZGVbTElOVVhfQ0xPTkVfUFJF X1NMT1RTICogMTZdLCAyKTsKLSsgIGluc3RyICY9IH4oKCgxTCA8PCAyMCkgLSAxKSA8PCAxMyk7 Ci0rICAvKiBBZGRyZXNzIGlzIHJlbGF0aXZlIHRvIHRoZSBqdW1wIGluc3RydWN0aW9uIHNsb3Qs IG5vdCB0aGUgbmV4dCBvbmUuICAqLwotKyAgaW5zdHIgfD0gKCgoU1lNQk9MX1ZBTFVFX0FERFJF U1MgKG1pbnN5bSkgLSAocGMgJiB+MHhmTCkpID4+IDQpCi0rCSAgICAmICgoMUwgPDwgMjApIC0g MSkpIDw8IDEzOwotKyAgcmVwbGFjZV9zbG90Tl9jb250ZW50cyAoJmxpbnV4X2Nsb25lMl9jb2Rl W0xJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2XSwgaW5zdHIsCi0rCQkJICAyKTsKLSsKLSsgIGlm IChtZW1jbXAgKCZidWZbTElOVVhfQ0xPTkVfUFJFX1NMT1RTICogMTZdLAotKyAgICAgICAgICAg ICAgJmxpbnV4X2Nsb25lMl9jb2RlW0xJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2XSwKLSsJICAg ICAgTElOVVhfQ0xPTkVfTEVOIC0gKExJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2KSkgIT0gMCkK LSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludAotK2lh NjRfb3V0ZXJtb3N0X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKLSt7Ci0r ICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKHRoaXNfZnJhbWUpOwotKyAgY2hhciAqbmFt ZTsKLSsKLSsgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1lLCBOVUxMLCBOVUxM KTsKLSsKLSsgIC8qIElmIHdlIGhhdmUgTkFNRSwgd2UgY2FuIG9wdGltaXplIHRoZSBzZWFyY2gu Ci0rICAgICBgY2xvbmUnIE5BTUUgc3RpbGwgbmVlZHMgdG8gaGF2ZSB0aGUgY29kZSBjaGVja2Vk IGFzIGl0cyBuYW1lIG1heSBiZQotKyAgICAgcHJlc2VudCBpbiB0aGUgdXNlciBjb2RlLgotKyAg ICAgYF9fY2xvbmUnIE5BTUUgc2hvdWxkIG5vdCBiZSBwcmVzZW50IGluIHRoZSB1c2VyIGNvZGUg YnV0IGluIHRoZSBpbml0aWFsCi0rICAgICBwYXJ0cyBvZiB0aGUgYF9fY2xvbmUnIGltcGxlbWVu dGF0aW9uIHRoZSB1bndpbmQgc3RpbGwgbWFrZXMgc2Vuc2UuCi0rICAgICBNb3JlIGRldGFpbGVk IHVud2luZGluZyBkZWNpc2lvbiB3b3VsZCBiZSB0b28gbXVjaCBzZW5zaXRpdmUgdG8gcG9zc2li bGUKLSsgICAgIHN1YnRsZSBjaGFuZ2VzIGluIHNwZWNpZmljIGdsaWJjIHJldmlzaW9ucy4gICov Ci0rICBpZiAobmFtZSA9PSBOVUxMIHx8IHN0cmNtcCAobmFtZSwgImNsb25lMiIpID09IDAKLSsg ICAgICB8fCBzdHJjbXAgKCJfX2Nsb25lMiIsIG5hbWUpID09IDApCi0rICAgIHJldHVybiAoaWE2 NF9saW51eF9jbG9uZTJfcnVubmluZyAodGhpc19mcmFtZSkgIT0gMCk7Ci0rCi0rICByZXR1cm4g MDsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYTY0X2Nsb25lMl9mcmFtZV90aGlzX2lkIChzdHJ1 Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCi0rCQkJICAgc3Ry dWN0IGZyYW1lX2lkICp0aGlzX2lkKQotK3sKLSsgIC8qIExlYXZlIHRoZSBkZWZhdWx0IG91dGVy bW9zdCBmcmFtZSBhdCAqVEhJU19JRC4gICovCi0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUg KgotK2lhNjRfY2xvbmUyX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0 aGlzX2ZyYW1lLAotKwkJCQkgdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCi0rewotKyAg cmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHJlZ251bSwgcmVn bnVtKTsKLSt9Ci0rCi0rc3RhdGljIGludAotK2lhNjRfY2xvbmUyX2ZyYW1lX3NuaWZmZXIgKGNv bnN0IHN0cnVjdCBmcmFtZV91bndpbmQgKnNlbGYsCi0rCQkJICAgc3RydWN0IGZyYW1lX2luZm8g KnRoaXNfZnJhbWUsCi0rCQkJICAgdm9pZCAqKnRoaXNfcHJvbG9ndWVfY2FjaGUpCi0rewotKyAg aWYgKGlhNjRfb3V0ZXJtb3N0X2ZyYW1lICh0aGlzX2ZyYW1lKSkKLSsgICAgcmV0dXJuIDE7Ci0r Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQg aWE2NF9jbG9uZTJfZnJhbWVfdW53aW5kID0KLSt7Ci0rICBOT1JNQUxfRlJBTUUsCi0rICAmaWE2 NF9jbG9uZTJfZnJhbWVfdGhpc19pZCwKLSsgICZpYTY0X2Nsb25lMl9mcmFtZV9wcmV2X3JlZ2lz dGVyLAotKyAgTlVMTCwKLSsgICZpYTY0X2Nsb25lMl9mcmFtZV9zbmlmZmVyCi0rfTsKLSsKLSAv KiBTaWduYWwgdHJhbXBvbGluZXMuICAqLwotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzgyNCw2ICsz OTU1LDcgQEAgaWE2NF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3Ry dWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQotICAgc2V0X2dkYmFyY2hfZHVtbXlfaWQgKGdkYmFy Y2gsIGlhNjRfZHVtbXlfaWQpOwotIAotICAgc2V0X2dkYmFyY2hfdW53aW5kX3BjIChnZGJhcmNo LCBpYTY0X3Vud2luZF9wYyk7Ci0rICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJh cmNoLCAmaWE2NF9jbG9uZTJfZnJhbWVfdW53aW5kKTsKLSAjaWZkZWYgSEFWRV9MSUJVTldJTkRf SUE2NF9ICi0gICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlhNjRfbGlidW53aW5kX3NpZ3RyYW1wX2ZyYW1l X3Vud2luZCk7Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL2J0LWNsb25lLXN0b3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAogKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMJMjAwOS0wOC0wMyAxNTo1MDow OC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMzkgQEAKCmRpZmYgLS1naXQgYS9nZGItNi41 LWJ6MjQzODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRlc3QucGF0Y2ggYi9nZGItNi41LWJ6MjQz ODQ1LXN0YWxlLXRlc3Rpbmctem9tYmllLXRlc3QucGF0Y2gKaW5kZXggYWE1MTRjMi4uMWM5YjFm MiAxMDA2NDQKLS0tIGEvZ2RiLTYuNS1iejI0Mzg0NS1zdGFsZS10ZXN0aW5nLXpvbWJpZS10ZXN0 LnBhdGNoCisrKyBiL2dkYi02LjUtYnoyNDM4NDUtc3RhbGUtdGVzdGluZy16b21iaWUtdGVzdC5w YXRjaApAQCAtMSw3ICsxLDcgQEAKIGRpZmYgLXUgLXJ1TnAgZ2RiLTYuMy11bnBhdGNoZWQvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS90cmFjZWZvcmstem9tYmllLmV4cCBnZGItNi4zL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdHJhY2Vmb3JrLXpvbWJpZS5leHAKIC0tLSBnZGItNi4zLXVucGF0Y2hl ZC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3RyYWNlZm9yay16b21iaWUuZXhwCTE5NjktMTItMzEg MTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCiArKysgZ2RiLTYuMy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3RyYWNlZm9yay16b21iaWUuZXhwCTIwMDctMDctMzEgMTM6MDQ6MTIuMDAwMDAwMDAwIC0w NDAwCi1AQCAtMCwwICsxLDgyIEBACitAQCAtMCwwICsxLDc1IEBACiArIyBDb3B5cmlnaHQgMjAw NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0x OCwxMyArMTgsNiBAQCBkaWZmIC11IC1ydU5wIGdkYi02LjMtdW5wYXRjaGVkL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdHJhY2Vmb3JrLXpvbWJpZS5leHAgZ2RiLQogKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICsjIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuICAqLwogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRy YWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogKyMgYXJl IHdlIG9uIGEgdGFyZ2V0IGJvYXJkCiAraWYgW2lzX3JlbW90ZSB0YXJnZXRdIHRoZW4gewogKyAg ICByZXR1cm4gMAoKZGlmZiAtLWdpdCBhL2dkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0 Y2ggYi9nZGItNi41LWR3YXJmLXN0YWNrLW92ZXJmbG93LnBhdGNoCmluZGV4IDQ3NmJhYzIuLjBk MTA3YjMgMTAwNjQ0Ci0tLSBhL2dkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0Y2gKKysr IGIvZ2RiLTYuNS1kd2FyZi1zdGFjay1vdmVyZmxvdy5wYXRjaApAQCAtMTAsMTEgKzEwLDExIEBA IGZvciBnZGIvQ2hhbmdlTG9nOgogCiAJUG9ydCB0byBHREItNi43LgogCi1JbmRleDogZ2RiLTYu Ny9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYy cmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuNy5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAw Ny0xMC0xNSAwMDowODozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi43L2dkYi9kd2FyZjJy ZWFkLmMJMjAwNy0xMC0xNSAyMTo0Mjo0My4wMDAwMDAwMDAgKzAyMDAKLUBAIC05MDcwLDggKzkw NzAsNyBAQCBkd2FyZjJfZnVuZGFtZW50YWxfdHlwZSAoc3RydWN0IG9iamZpbGUgCistLS0gZ2Ri LTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDo0Mzo1 My4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFk LmMJMjAxMC0wNy0xMiAxMDo0OTozMi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMTM4Miw4ICsxMTM4 Miw3IEBAIHJlYWRfc2lnbmF0dXJlZF90eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2IKICAgICBjYWxs ZXJzIHdpbGwgb25seSB3YW50IGEgdmVyeSBiYXNpYyByZXN1bHQgYW5kIHRoaXMgY2FuIGJlY29t ZSBhCiAgICAgY29tcGxhaW50LgogIApAQCAtMjQsNyArMjQsNyBAQCBJbmRleDogZ2RiLTYuNy9n ZGIvZHdhcmYycmVhZC5jCiAgCiAgc3RhdGljIENPUkVfQUREUgogIGRlY29kZV9sb2NkZXNjIChz dHJ1Y3QgZHdhcmZfYmxvY2sgKmJsaywgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtOTA4OCw3 ICs5MDg3LDcgQEAgZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9ibG9jayAqYmxrLAorQEAg LTExMzk5LDcgKzExMzk4LDcgQEAgZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9ibG9jayAq YmxrLAogIAogICAgaSA9IDA7CiAgICBzdGFja2kgPSAwOwpAQCAtMzMsOCArMzMsOCBAQCBJbmRl eDogZ2RiLTYuNy9nZGIvZHdhcmYycmVhZC5jCiAgCiAgICB3aGlsZSAoaSA8IHNpemUpCiAgICAg IHsKLUBAIC05MjcwLDYgKzkyNjksMTYgQEAgZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9i bG9jayAqYmxrLAotIAkJICAgICBkd2FyZl9zdGFja19vcF9uYW1lIChvcCkpOworQEAgLTExNTgx LDYgKzExNTgwLDE2IEBAIGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgZHdhcmZfYmxvY2sgKmJsaywK KyAJCSAgICAgZHdhcmZfc3RhY2tfb3BfbmFtZSAob3AsIDEpKTsKICAJICByZXR1cm4gKHN0YWNr W3N0YWNraV0pOwogIAl9CiArICAgICAgLyogRW5mb3JjZSBtYXhpbXVtIHN0YWNrIGRlcHRoIG9m IHNpemUtMSB0byBhdm9pZCArK3N0YWNraSB3cml0aW5nCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1n Y29yZS1idWZmZXItbGltaXQtdGVzdC5wYXRjaCBiL2dkYi02LjUtZ2NvcmUtYnVmZmVyLWxpbWl0 LXRlc3QucGF0Y2gKaW5kZXggOTQ0MjE5OC4uZGFkNDgzMyAxMDA2NDQKLS0tIGEvZ2RiLTYuNS1n Y29yZS1idWZmZXItbGltaXQtdGVzdC5wYXRjaAorKysgYi9nZGItNi41LWdjb3JlLWJ1ZmZlci1s aW1pdC10ZXN0LnBhdGNoCkBAIC00Miw3ICs0Miw3IEBAIGRpZmYgLXUgLVggL2hvbWUvamtyYXRv Y2gvLmRpZmZpLmxpc3QgLXJ1TnAgZ2RiLTYuNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3Jl CiBkaWZmIC11IC1YIC9ob21lL2prcmF0b2NoLy5kaWZmaS5saXN0IC1ydU5wIGdkYi02LjUvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1leGNlc3NpdmUtbWVtb3J5LmV4cCBnZGItNi41LXVu a25vd24vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1leGNlc3NpdmUtbWVtb3J5LmV4cAog LS0tIGdkYi02LjUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1leGNlc3NpdmUtbWVtb3J5 LmV4cAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAogKysrIGdkYi02LjUtdW5r bm93bi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLWV4Y2Vzc2l2ZS1tZW1vcnkuZXhwCTIw MDgtMDEtMDggMTE6NDc6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDEwMSBAQAorQEAg LTAsMCArMSw5NCBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtNTksMTMgKzU5LDYgQEAgZGlmZiAtdSAtWCAv aG9tZS9qa3JhdG9jaC8uZGlmZmkubGlzdCAtcnVOcCBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZ2NvcmUKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlCiArIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCiArCi0raWYgJHRyYWNl bGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19p ZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlIGdjb3JlLWV4Y2Vzc2l2ZS1tZW1v cnkKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0IHNoZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5zaAoKZGlmZiAtLWdpdCBhL2dkYi02LjUtZ2NvcmUtaTM4 Ni1vbi1hbWQ2NC5wYXRjaCBiL2dkYi02LjUtZ2NvcmUtaTM4Ni1vbi1hbWQ2NC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRhYzEzZS4uMDAwMDAwMAotLS0gYS9nZGItNi41 LWdjb3JlLWkzODYtb24tYW1kNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NDcgKzAsMCBA QAotMjAwNi0xMC0wMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotCSAgICBGdWppdHN1Ci0KLQkqIGFtZDY0LWxpbnV4LW5hdC5jOiBTdXBwb3J0IG5ldyBsaW51 eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvLAotCWxpbnV4X2VsZmNvcmVfd3JpdGVfcHJzdGF0dXMs IGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZy4KLQkoaTM4Nl9saW51eF9ncmVnc2V0MzJfcmVn X29mZnNldCk6IE5ldyBtYXBwaW5nIGZvciBpMzg2IG9uIGFtZDY0LgotCSogZ2NvcmUuYyAoZ2Nv cmVfY3JlYXRlX2NhbGxiYWNrKTogQ29tbWVudCB2ZHNvIExpbnV4IGtlcm5lbCBidWcuCi0JKiBj b25maWd1cmUuYWM6IENoZWNrIGZvciA8c3lzL3VzZXIzMi5oPiwgPHN5cy9wcm9jZnMzMi5oPi4K LQkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KLQkqIGdkYl91c2VyMzIuaCwg Z2RiX3Byb2NmczMyLmg6IERlZmluZSAzMi1iaXQgY29yZSBmaWxlcyBldmVuIGZvcgotCTY0LWJp dCBnZGIsIHByb3ZpZGUgZmFsbGJhY2tzIGZvciA8c3lzL3VzZXIzMi5oPiBhbmQgPHN5cy9wcm9j ZnMzMi5oPi4KLQkqIGxpbnV4LW5hdC5jOiBWaXJ0dWFsaXplIGBlbGZjb3JlXyonIGJ5ICgqYGxp bnV4X2VsZmNvcmVfKicpLgotCShsaW51eF9uYXRfZG9fdGhyZWFkX3JlZ2lzdGVycyk6IExpa2V3 aXNlLgotCShsaW51eF9uYXRfbWFrZV9jb3JlZmlsZV9ub3Rlcyk6IExpa2V3aXNlLgotCSogbGlu dXgtbmF0Lmg6IExpa2V3aXNlLgotCSogTWFrZWZpbGUuaW46IERlcGVuZGVuY2llcyB1cGRhdGVk LgotCi0yMDA3LTEwLTE2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0KLQlQb3J0IHRvIEdEQi02LjcuCi0KLTIwMDgtMDItMjQgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVBvcnQgdG8gR0RCLTYuOHByZS4KLQotSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEw LTAxLTE1IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAw Ci1AQCAtNTEsNiArNTEsOSBAQAotICNpbmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIKLSAjaW5j bHVkZSAiYW1kNjQtbmF0LmgiCi0gI2luY2x1ZGUgImkzODYtbmF0LmgiCi0rI2luY2x1ZGUgImkz ODctdGRlcC5oIgotKyNpbmNsdWRlICJlbGYtYmZkLmgiCi0rI2luY2x1ZGUgImdkYl9wcm9jZnMz Mi5oIgotIAotIC8qIE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVy cyBpbiBHTlUvTGludXggeDg2LTY0Ci0gICAgYHN0cnVjdCB1c2VyJyBmb3JtYXQgYW5kIEdEQidz IHJlZ2lzdGVyIGNhY2hlIGxheW91dC4gICovCi1AQCAtODUsNiArODgsMzUgQEAgc3RhdGljIGlu dCBhbWQ2NF9saW51eF9ncmVnc2V0NjRfcmVnX29mZgotICAgIEdOVS9MaW51eCBpMzg2IHJlZ2lz dGVycyBhcmUgYWxsIDMyLWJpdCwgYnV0IHNpbmNlIHdlJ3JlCi0gICAgbGl0dGxlLWVuZGlhbiB3 ZSBnZXQgYXdheSB3aXRoIHRoYXQuICAqLwotIAotKy8qIFRoaXMgaW5mbyBpcyBub3QgcmV1c2Fi bGUgZnJvbSAiaTM4Ni1saW51eC1uYXQuYyIgYXMgZ2RiIGl0c2VsZiBydW5zIGluCi0rICAgNjQt Yml0IG1vZGUgYW5kIHNvIHB0cmFjZSgyKSBoYXMgNjQtYml0IHN0cnVjdHVyZSBsYXlvdXQuCi0r ICAgSnVzdCB0aGUgY29yZWZpbGUgYmVpbmcgZ2VuZXJhdGVkIGhhcyAzMi1iaXQgbGF5b3V0IHNv IHdlIG5lZWQgdG8gZG8KLSsgICBhIGNvbnZlcnNpb24gc3BlY2lmaWMgdG8gdGhlIGkzODYtb24t YW1kNjQgY29tcGF0aWJpbGl0eSBtb2RlLiAgKi8KLStzdGF0aWMgaW50IGkzODZfbGludXhfZ3Jl Z3NldDMyX3JlZ19vZmZzZXRbXSA9Ci0rewotKyAgNiAqIDQsCQkJLyogJWVheCAqLwotKyAgMSAq IDQsCQkJLyogJWVjeCAqLwotKyAgMiAqIDQsCQkJLyogJWVkeCAqLwotKyAgMCAqIDQsCQkJLyog JWVieCAqLwotKyAgMTUgKiA0LAkJCS8qICVlc3AgKi8KLSsgIDUgKiA0LAkJCS8qICVlYnAgKi8K LSsgIDMgKiA0LAkJCS8qICVlc2kgKi8KLSsgIDQgKiA0LAkJCS8qICVlZGkgKi8KLSsgIDEyICog NCwJCQkvKiAlZWlwICovCi0rICAxNCAqIDQsCQkJLyogJWVmbGFncyAqLwotKyAgMTMgKiA0LAkJ CS8qICVjcyAqLwotKyAgMTYgKiA0LAkJCS8qICVzcyAqLwotKyAgNyAqIDQsCQkJLyogJWRzICov Ci0rICA4ICogNCwJCQkvKiAlZXMgKi8KLSsgIDkgKiA0LAkJCS8qICVmcyAqLwotKyAgMTAgKiA0 LAkJCS8qICVncyAqLwotKyAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotKyAgLTEs IC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotKyAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsIC0xLAotKyAgLTEsCi0rICAxMSAqIDQJCQkvKiAib3JpZ19lYXgiICovCi0rfTsKLSsKLSAv KiBGcm9tIDxzeXMvcmVnLmg+IG9uIEdOVS9MaW51eCBpMzg2LiAgKi8KLSBzdGF0aWMgaW50IGFt ZDY0X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2Zmc2V0W10gPQotIHsKLUBAIC0xMDMsNiArMTM1LDk2 IEBAIHN0YXRpYyBpbnQgYW1kNjRfbGludXhfZ3JlZ3NldDMyX3JlZ19vZmYKLSB9OwotIAwKLSAK LSsvKiBUaGlzIGZ1bmN0aW9ucyBtYWtlIEVMRjMyIDMyLWJpdCBlbGZjb3JlIG5vdGUgc2VjdGlv bnMKLSsgICBvbiBhbWQ2NCBlbnZpcm9ubWVudC4gKi8KLSsKLStzdGF0aWMgY2hhciAqCi0rYW1k NjRfbGludXhfZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICphYmZkLCBjaGFyICpidWYsIGlu dCAqYnVmc2l6LAotKwkJCQkgICAgY29uc3QgY2hhciAqZm5hbWUsIGNvbnN0IGNoYXIgKnBzYXJn cykKLSt7Ci0rICBpZiAoZ2RiYXJjaF9wdHJfYml0ICh0YXJnZXRfZ2RiYXJjaCkgPT0gMzIpCi0r ICAgIHsKLSsgICAgICBpbnQgbm90ZV90eXBlOwotKyAgICAgIGNoYXIgKm5vdGVfbmFtZSA9ICJD T1JFIjsKLSsgICAgICBzdHJ1Y3QgZWxmX3BycHNpbmZvMzIgZGF0YTsKLSsgICAgICBub3RlX3R5 cGUgPSBOVF9QUlBTSU5GTzsKLSsKLSsgICAgICBtZW1zZXQgKCZkYXRhLCAwLCBzaXplb2YgKGRh dGEpKTsKLSsgICAgICBzdHJuY3B5IChkYXRhLnByX2ZuYW1lLCBmbmFtZSwgc2l6ZW9mIChkYXRh LnByX2ZuYW1lKSk7Ci0rICAgICAgc3RybmNweSAoZGF0YS5wcl9wc2FyZ3MsIHBzYXJncywgc2l6 ZW9mIChkYXRhLnByX3BzYXJncykpOwotKyAgICAgIHJldHVybiBlbGZjb3JlX3dyaXRlX25vdGUg KGFiZmQsIGJ1ZiwgYnVmc2l6LAotKwkJCQkgbm90ZV9uYW1lLCBub3RlX3R5cGUsICZkYXRhLCBz aXplb2YgKGRhdGEpKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXR1cm4gZWxmY29yZV93cml0 ZV9wcnBzaW5mbyAoYWJmZCwgYnVmLCBidWZzaXosIGZuYW1lLCBwc2FyZ3MpOwotK30KLSsKLStz dGF0aWMgdm9pZAotK2FtZDY0X2xpbnV4X3NldF9yZWdpc3RlcnMgKGNvbnN0IGdkYl9ieXRlICpn cmVncywgZ2RiX2J5dGUgKmJ1ZikKLSt7Ci0rICBpbnQgaTsKLSsgIC8qIENvcHkgdGhlIGkzODYg cmVnaXN0ZXJzIGluIHRoZSBhbWQ2NCBsYXlvdXQgaW50byBpMzg2IGxheW91dC4gICovCi0rICBm b3IgKGkgPSAwOyBpIDwgSTM4Nl9OVU1fR1JFR1M7IGkrKykKLSsgICAgbWVtY3B5KGJ1ZiArIGkz ODZfbGludXhfZ3JlZ3NldDMyX3JlZ19vZmZzZXRbaV0sCi0rCSAgIGdyZWdzICsgYW1kNjRfbGlu dXhfZ3JlZ3NldDMyX3JlZ19vZmZzZXRbaV0sIDQpOwotKyAgZm9yIChpID0gSTM4Nl9DU19SRUdO VU07IGkgPD0gSTM4Nl9HU19SRUdOVU07IGkrKykKLSsgICAgbWVtY3B5KGJ1ZiArIGkzODZfbGlu dXhfZ3JlZ3NldDMyX3JlZ19vZmZzZXRbaV0sCi0rCSAgIGdyZWdzICsgYW1kNjRfbGludXhfZ3Jl Z3NldDMyX3JlZ19vZmZzZXRbaV0sIDQpOwotK30KLSsKLStzdGF0aWMgY2hhciAqCi0rYW1kNjRf bGludXhfZWxmY29yZV93cml0ZV9wcnN0YXR1cyAoYmZkICphYmZkLCBjaGFyICpidWYsIGludCAq YnVmc2l6LAotKwkJCSAgICAgIGxvbmcgcGlkLCBpbnQgY3Vyc2lnLCBjb25zdCB2b2lkICpncmVn cykKLSt7Ci0rICBpZiAoZ2RiYXJjaF9wdHJfYml0ICh0YXJnZXRfZ2RiYXJjaCkgPT0gMzIpCi0r ICAgIHsKLSsgICAgICBjaGFyICpub3RlX25hbWUgPSAiQ09SRSI7Ci0rICAgICAgc3RydWN0IGVs Zl9wcnN0YXR1czMyIHByc3RhdDsKLSsgICAgICBtZW1zZXQgKCZwcnN0YXQsIDAsIHNpemVvZiAo cHJzdGF0KSk7Ci0rICAgICAgcHJzdGF0LnByX3BpZCA9IHBpZDsKLSsgICAgICBwcnN0YXQucHJf Y3Vyc2lnID0gY3Vyc2lnOwotKyAgICAgIGFtZDY0X2xpbnV4X3NldF9yZWdpc3RlcnMgKGdyZWdz LCAoZ2RiX2J5dGUgKikgJnByc3RhdC5wcl9yZWcpOwotKyAgICAgIHJldHVybiBlbGZjb3JlX3dy aXRlX25vdGUgKGFiZmQsIGJ1ZiwgYnVmc2l6LCBub3RlX25hbWUsCi0rCQkJCSBOVF9QUlNUQVRV UywgJnByc3RhdCwgc2l6ZW9mIChwcnN0YXQpKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXR1 cm4gZWxmY29yZV93cml0ZV9wcnN0YXR1cyAoYWJmZCwgYnVmLCBidWZzaXosIHBpZCwgY3Vyc2ln LCBncmVncyk7Ci0rfQotKwotK3N0YXRpYyBjaGFyICoKLSthbWQ2NF9lbGZjb3JlX3dyaXRlX3By eGZwcmVnMzIgKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwKLSsJCQkJc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSkKLSt7Ci0rICBjaGFyICpub3RlX25hbWUgPSAiTElOVVgiOwot KyAgZWxmX2ZweHJlZ3NldDMyX3QgZnB4cmVnczMyOwotKwotKyAgaTM4N19jb2xsZWN0X2Z4c2F2 ZSAocmVnY2FjaGUsIC0xLCAmZnB4cmVnczMyKTsKLSsgIHJldHVybiBlbGZjb3JlX3dyaXRlX25v dGUoYWJmZCwgYnVmLCBidWZzaXosCi0rCQkJCSAgICAgbm90ZV9uYW1lLCBOVF9QUlhGUFJFRywg JmZweHJlZ3MzMiwKLSsJCQkJICAgICBzaXplb2YoZnB4cmVnczMyKSk7Ci0rfQotKwotK3N0YXRp YyBjaGFyICoKLSthbWQ2NF9saW51eF9lbGZjb3JlX3dyaXRlX3ByZnByZWcgKGJmZCAqYWJmZCwg Y2hhciAqYnVmLAotKwkJCQkgICBpbnQgKmJ1ZnNpeiwgY29uc3Qgdm9pZCAqZnByZWdzLCBpbnQg c2l6ZSwKLSsJCQkJICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKLSt7Ci0rICBpZiAoZ2Ri YXJjaF9wdHJfYml0ICh0YXJnZXRfZ2RiYXJjaCkgPT0gMzIpCi0rICAgIHsKLSsgICAgICBjaGFy ICpub3RlX25hbWUgPSAiQ09SRSI7Ci0rICAgICAgZWxmX2ZwcmVnc2V0MzJfdCBmcHJlZ3MzMjsK LSsgIAotKyAgICAgIGkzODdfY29sbGVjdF9mc2F2ZSAocmVnY2FjaGUsIC0xLCAmZnByZWdzMzIp OwotKyAgICAgIGJ1ZiA9IGVsZmNvcmVfd3JpdGVfbm90ZShhYmZkLCBidWYsIGJ1ZnNpeiwgbm90 ZV9uYW1lLAotKwkJCSAgICAgICBOVF9GUFJFR1NFVCwgJmZwcmVnczMyLCBzaXplb2YoZnByZWdz MzIpKTsKLSsKLSsgICAgICByZXR1cm4gYW1kNjRfZWxmY29yZV93cml0ZV9wcnhmcHJlZzMyIChh YmZkLCBidWYsIGJ1ZnNpeiwgcmVnY2FjaGUpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHJldHVy biBlbGZjb3JlX3dyaXRlX3ByZnByZWcgKGFiZmQsIGJ1ZiwgYnVmc2l6LCBmcHJlZ3MsIHNpemUp OwotK30KLSsKLSsKLSAvKiBUcmFuc2ZlcmluZyB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVy cyBiZXR3ZWVuIEdEQiwgaW5mZXJpb3JzCi0gICAgYW5kIGNvcmUgZmlsZXMuICAqLwotIAotQEAg LTcyNyw2ICs4NDksMTEgQEAgX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0ICh2b2lkKQotICAg dC0+dG9fZmV0Y2hfcmVnaXN0ZXJzID0gYW1kNjRfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0 ZXJzOwotICAgdC0+dG9fc3RvcmVfcmVnaXN0ZXJzID0gYW1kNjRfbGludXhfc3RvcmVfaW5mZXJp b3JfcmVnaXN0ZXJzOwotIAotKyAgLyogVGhpcyBmdW5jdGlvbnMgbWFrZSBlbGZjb3JlIG5vdGUg c2VjdGlvbnMuICovCi0rICBsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvID0gYW1kNjRfbGlu dXhfZWxmY29yZV93cml0ZV9wcnBzaW5mbzsKLSsgIGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJzdGF0 dXMgPSBhbWQ2NF9saW51eF9lbGZjb3JlX3dyaXRlX3Byc3RhdHVzOwotKyAgbGludXhfZWxmY29y ZV93cml0ZV9wcmZwcmVnID0gYW1kNjRfbGludXhfZWxmY29yZV93cml0ZV9wcmZwcmVnOwotKwot ICAgLyogUmVnaXN0ZXIgdGhlIHRhcmdldC4gICovCi0gICBsaW51eF9uYXRfYWRkX3RhcmdldCAo dCk7Ci0gICBsaW51eF9uYXRfc2V0X25ld190aHJlYWQgKHQsIGFtZDY0X2xpbnV4X25ld190aHJl YWQpOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDEtMTUg MDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29u ZmlnLmluCTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCi1AQCAtMTQ5LDYgKzE0 OSw5IEBACi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlbGZfaHAuaD4gaGVhZGVy IGZpbGUuICovCi0gI3VuZGVmIEhBVkVfRUxGX0hQX0gKLSAKLSsvKiBEZWZpbmUgaWYgc3RydWN0 IGVsZl9wcnN0YXR1czMyIGlzIGF2YWlsYWJsZS4gKi8KLSsjdW5kZWYgSEFWRV9FTEZfUFJTVEFU VVMzMgotKwotIC8qIERlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIGhhcyB0aGUgZXRleHQgdmFy aWFibGUuICovCi0gI3VuZGVmIEhBVkVfRVRFWFQKLSAKLUBAIC00OTAsNiArNDkzLDkgQEAKLSAv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wb2xsLmg+IGhlYWRlciBmaWxlLiAq LwotICN1bmRlZiBIQVZFX1NZU19QT0xMX0gKLSAKLSsvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2 ZSB0aGUgPHN5cy9wcm9jZnMzMi5oPiBoZWFkZXIgZmlsZS4gKi8KLSsjdW5kZWYgSEFWRV9TWVNf UFJPQ0ZTMzJfSAotKwotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Byb2Nm cy5oPiBoZWFkZXIgZmlsZS4gKi8KLSAjdW5kZWYgSEFWRV9TWVNfUFJPQ0ZTX0gKLSAKLUBAIC01 MTcsNiArNTIzLDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBl cy5oPiBoZWFkZXIgZmlsZS4gKi8KLSAjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSAotIAotKy8qIERl ZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VzZXIzMi5oPiBoZWFkZXIgZmlsZS4gKi8K LSsjdW5kZWYgSEFWRV9TWVNfVVNFUjMyX0gKLSsKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2 ZSB0aGUgPHN5cy91c2VyLmg+IGhlYWRlciBmaWxlLiAqLwotICN1bmRlZiBIQVZFX1NZU19VU0VS X0gKLSAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEwLTAxLTE1 IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Nv bmZpZ3VyZQkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwMDQzLDYg KzEwMDQzLDI2OCBAQCAkYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mCi0g Ci0gZmkKLSAKLSsKLSsKLStmb3IgYWNfaGVhZGVyIGluIHN5cy91c2VyMzIuaCBzeXMvcHJvY2Zz MzIuaAotK2RvCi0rYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIg fCAkYXNfdHJfc2hgCi0raWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0g c2V0IjsgdGhlbgotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVh ZGVyIiA+JjUKLStlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hP X0MiID4mNgotK2lmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7 IHRoZW4KLSsgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZmkKLStlY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30n YCIgPiY1Ci0rZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2Ai ID4mNgotK2Vsc2UKLSsgICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwotK2VjaG8gIiRhc19t ZTokTElORU5POiBjaGVja2luZyAkYWNfaGVhZGVyIHVzYWJpbGl0eSIgPiY1Ci0rZWNobyAkRUNI T19OICJjaGVja2luZyAkYWNfaGVhZGVyIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLStjYXQg PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSsvKiBjb25mZGVmcy5oLiAgKi8KLStfQUNFT0YK LStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLStjYXQgPj5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCi0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyRhY19pbmNsdWRlc19kZWZh dWx0Ci0rI2luY2x1ZGUgPCRhY19oZWFkZXI+Ci0rX0FDRU9GCi0rcm0gLWYgY29uZnRlc3QuJGFj X29iamV4dAotK2lmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVc IiIpID4mNQotKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXIxCi0rICBhY19zdGF0 dXM9JD8KLSsgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0rICBy bSAtZiBjb25mdGVzdC5lcjEKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsg fSAmJgotKwkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgotKwkJCSB8fCB0 ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwotKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfdHJ5XCIiKSA+JjUKLSsgIChldmFsICRhY190cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0k PwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgKGV4 aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKLSsJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRh Y19vYmpleHQnCi0rICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIp ID4mNQotKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBlY2hvICIk YXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVz KTsgfTsgfTsgdGhlbgotKyAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwotK2Vsc2UKLSsgIGVjaG8g IiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rc2VkICdzL14vfCAvJyBjb25mdGVz dC4kYWNfZXh0ID4mNQotKwotK2FjX2hlYWRlcl9jb21waWxlcj1ubwotK2ZpCi0rcm0gLWYgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK2VjaG8gIiRh c19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQotK2VjaG8gIiR7 RUNIT19UfSRhY19oZWFkZXJfY29tcGlsZXIiID4mNgotKwotKyMgSXMgdGhlIGhlYWRlciBwcmVz ZW50PwotK2VjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyAkYWNfaGVhZGVyIHByZXNlbmNl IiA+JjUKLStlY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UuLi4gJEVD SE9fQyIgPiY2Ci0rY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogY29uZmRlZnMu aC4gICovCi0rX0FDRU9GCi0rY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0rY2F0 ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsj aW5jbHVkZSA8JGFjX2hlYWRlcj4KLStfQUNFT0YKLStpZiB7IChldmFsIGVjaG8gIiRhc19tZTok TElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0rICAoZXZhbCAkYWNf Y3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0rICBhY19zdGF0dXM9JD8KLSsg IGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0rICBybSAtZiBjb25m dGVzdC5lcjEKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9u dWxsOyB0aGVuCi0rICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotKyAgICBhY19jcHBf ZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0rICAgIGFjX2NwcF9lcnI9JGFjX2NwcF9lcnIk YWNfY193ZXJyb3JfZmxhZwotKyAgZWxzZQotKyAgICBhY19jcHBfZXJyPQotKyAgZmkKLStlbHNl Ci0rICBhY19jcHBfZXJyPXllcwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVu Ci0rICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKLStlbHNlCi0rICBlY2hvICIkYXNfbWU6IGZhaWxl ZCBwcm9ncmFtIHdhczoiID4mNQotK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK LSsKLSsgIGFjX2hlYWRlcl9wcmVwcm9jPW5vCi0rZmkKLStybSAtZiBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX2V4dAotK2VjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJf cHJlcHJvYyIgPiY1Ci0rZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKLSsK LSsjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KLStjYXNlICRhY19oZWFkZXJfY29tcGls ZXI6JGFjX2hlYWRlcl9wcmVwcm9jOiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluCi0rICB5ZXM6 bm86ICkKLSsgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjog YWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIg PiY1Ci0rZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUg Y29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQotKyAgICB7IGVj aG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGgg dGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjUKLStlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19o ZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9Ci0rICAg IGFjX2hlYWRlcl9wcmVwcm9jPXllcwotKyAgICA7OwotKyAgbm86eWVzOiogKQotKyAgICB7IGVj aG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5u b3QgYmUgY29tcGlsZWQiID4mNQotK2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjog cHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotKyAgICB7IGVjaG8gIiRhc19t ZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJl cmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKLStlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFk ZXI6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9Ci0r ICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHNlZSB0aGUg QXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiY1Ci0rZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNf aGVhZGVyOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mMjt9Ci0rICAgIHsgZWNo byAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6ICAgICBzZWN0aW9uIFwiUHJl c2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mNQotK2VjaG8gIiRhc19tZTogV0FSTklO RzogJGFjX2hlYWRlcjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGls ZWRcIiIgPiYyO30KLSsgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hl YWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotK2Vj aG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVw cm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0rICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdB Uk5JTkc6ICRhY19oZWFkZXI6IGluIHRoZSBmdXR1cmUsIHRoZSBjb21waWxlciB3aWxsIHRha2Ug cHJlY2VkZW5jZSIgPiY1Ci0rZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBpbiB0 aGUgZnV0dXJlLCB0aGUgY29tcGlsZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UiID4mMjt9Ci0rICAg ICgKLSsgICAgICBjYXQgPDxcX0FTQk9YCi0rIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICMjCi0rIyMgUmVwb3J0IHRoaXMgdG8gdGhlIEFDX1BBQ0tBR0VfTkFN RSBsaXN0cy4gICMjCi0rIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICMjCi0rX0FTQk9YCi0rICAgICkgfAotKyAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklO RzogICAgIC8iID4mMgotKyAgICA7OwotK2VzYWMKLStlY2hvICIkYXNfbWU6JExJTkVOTzogY2hl Y2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQotK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRh Y19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2Ci0raWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFk ZXIrc2V0fVwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19D IiA+JjYKLStlbHNlCi0rICBldmFsICIkYXNfYWNfSGVhZGVyPVwkYWNfaGVhZGVyX3ByZXByb2Mi Ci0rZmkKLStlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNf YWNfSGVhZGVyJ30nYCIgPiY1Ci0rZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2Fj X0hlYWRlcid9J2AiID4mNgotKwotK2ZpCi0raWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNf SGVhZGVyJ30nYCA9IHllczsgdGhlbgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNk ZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCi0rX0FDRU9GCi0r Ci0rZmkKLSsKLStkb25lCi0rCi0rZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBz dHJ1Y3QgZWxmX3Byc3RhdHVzMzIucHJfcmVnIiA+JjUKLStlY2hvICRFQ0hPX04gImNoZWNraW5n IGZvciBzdHJ1Y3QgZWxmX3Byc3RhdHVzMzIucHJfcmVnLi4uICRFQ0hPX0MiID4mNgotK2lmIHRl c3QgIiR7YWNfY3ZfbWVtYmVyX3N0cnVjdF9lbGZfcHJzdGF0dXMzMl9wcl9yZWcrc2V0fSIgPSBz ZXQ7IHRoZW4KLSsgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZWxzZQot KyAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogY29uZmRlZnMuaC4gICovCi0r X0FDRU9GCi0rY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0rY2F0ID4+Y29uZnRl c3QuJGFjX2V4dCA8PF9BQ0VPRgotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsjaW5jbHVkZSA8 c3lzL3Byb2Nmcy5oPgotKwotK2ludAotK21haW4gKCkKLSt7Ci0rc3RhdGljIHN0cnVjdCBlbGZf cHJzdGF0dXMzMiBhY19hZ2dyOwotK2lmIChhY19hZ2dyLnByX3JlZykKLStyZXR1cm4gMDsKLSsg IDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0 Ci0raWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1 Ci0rICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKLSsgIGFjX3N0YXR1cz0kPwot KyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSsgIHJtIC1mIGNv bmZ0ZXN0LmVyMQotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGVjaG8gIiRhc19tZTokTElO RU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0r CSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCi0rCQkJIHx8IHRlc3QgISAt cyBjb25mdGVzdC5lcnInCi0rICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190 cnlcIiIpID4mNQotKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBl Y2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNf c3RhdHVzKTsgfTsgfSAmJgotKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4 dCcKLSsgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0r ICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgIGVjaG8gIiRhc19tZTok TElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9 OyB0aGVuCi0rICBhY19jdl9tZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZz15ZXMK LStlbHNlCi0rICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotK3NlZCAn cy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsKLStjYXQgPmNvbmZ0ZXN0LiRhY19leHQg PDxfQUNFT0YKLSsvKiBjb25mZGVmcy5oLiAgKi8KLStfQUNFT0YKLStjYXQgY29uZmRlZnMuaCA+ PmNvbmZ0ZXN0LiRhY19leHQKLStjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyog ZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0rCi0raW50Ci0r bWFpbiAoKQotK3sKLStzdGF0aWMgc3RydWN0IGVsZl9wcnN0YXR1czMyIGFjX2FnZ3I7Ci0raWYg KHNpemVvZiBhY19hZ2dyLnByX3JlZykKLStyZXR1cm4gMDsKLSsgIDsKLSsgIHJldHVybiAwOwot K30KLStfQUNFT0YKLStybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0raWYgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0rICAoZXZhbCAkYWNfY29t cGlsZSkgMj5jb25mdGVzdC5lcjEKLSsgIGFjX3N0YXR1cz0kPwotKyAgZ3JlcCAtdiAnXiAqKycg Y29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSsgIHJtIC1mIGNvbmZ0ZXN0LmVyMQotKyAgY2F0 IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0rCSB7IGFjX3RyeT0ndGVzdCAt eiAiJGFjX2Nfd2Vycm9yX2ZsYWciCi0rCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCi0r ICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotKyAgKGV2 YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgot KwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSsgIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0rICAoZXZhbCAkYWNfdHJ5KSAy PiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0rICBhY19jdl9t ZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZz15ZXMKLStlbHNlCi0rICBlY2hvICIk YXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotK3NlZCAncy9eL3wgLycgY29uZnRlc3Qu JGFjX2V4dCA+JjUKLSsKLSthY19jdl9tZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3Jl Zz1ubwotK2ZpCi0rcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuJGFjX2V4dAotK2ZpCi0rcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuJGFjX2V4dAotK2ZpCi0rZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFj X2N2X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnIiA+JjUKLStlY2hvICIke0VD SE9fVH0kYWNfY3ZfbWVtYmVyX3N0cnVjdF9lbGZfcHJzdGF0dXMzMl9wcl9yZWciID4mNgotK2lm IHRlc3QgJGFjX2N2X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnID0geWVzOyB0 aGVuCi0rCi0rY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfRUxGX1BS U1RBVFVTMzIgMQotK19BQ0VPRgotKwotK2ZpCi0rCi0gIyBlbGZfaHAuaCBpcyBmb3IgSFAvVVgg NjQtYml0IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQuCi0gIyBGSVhNRToga2V0dGVuaXMvMjAwMzAx MDI6IEluIG1vc3QgY2FzZXMgd2UgaW5jbHVkZSB0aGVzZSAoY3R5cGUuaCwgdGltZS5oKQotICMg dW5jb25kaXRpb25hbGx5LCBzbyB3aGF0J3MgdGhlIHBvaW50IGluIGNoZWNraW5nIHRoZXNlPwot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMDEtMTUg MDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29u ZmlndXJlLmFjCTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCi1AQCAtNzU4LDYg Kzc1OCwxMSBAQCBBQ19TVUJTVChQWVRIT05fQ0ZMQUdTKQotIEFDX0hFQURFUl9ESVJFTlQKLSBB Q19IRUFERVJfU1RBVAotIEFDX0hFQURFUl9TVERDCi0rQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL3Vz ZXIzMi5oIHN5cy9wcm9jZnMzMi5oXSkKLStBQ19DSEVDS19NRU1CRVIoW3N0cnVjdCBlbGZfcHJz dGF0dXMzMi5wcl9yZWddLAotKwkJW0FDX0RFRklORShIQVZFX0VMRl9QUlNUQVRVUzMyLCAxLAot KwkJCSAgIFtEZWZpbmUgaWYgc3RydWN0IGVsZl9wcnN0YXR1czMyIGlzIGF2YWlsYWJsZS4gXSld LAotKwkJW10sIFsjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPl0pCi0gIyBlbGZfaHAuaCBpcyBmb3Ig SFAvVVggNjQtYml0IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQuCi0gIyBGSVhNRToga2V0dGVuaXMv MjAwMzAxMDI6IEluIG1vc3QgY2FzZXMgd2UgaW5jbHVkZSB0aGVzZSAoY3R5cGUuaCwgdGltZS5o KQotICMgdW5jb25kaXRpb25hbGx5LCBzbyB3aGF0J3MgdGhlIHBvaW50IGluIGNoZWNraW5nIHRo ZXNlPwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2djb3JlLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2djb3JlLmMJMjAxMC0wMS0xNSAwMzox Nzo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nY29yZS5j CTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCi1AQCAtMzc2LDYgKzM3NiwxMSBA QCBnY29yZV9jcmVhdGVfY2FsbGJhY2sgKENPUkVfQUREUiB2YWRkciwgCi0gICBhc2VjdGlvbiAq b3NlYzsKLSAgIGZsYWd3b3JkIGZsYWdzID0gU0VDX0FMTE9DIHwgU0VDX0hBU19DT05URU5UUyB8 IFNFQ19MT0FEOwotIAotKyAgLyogU29tZSBMaW51eCBrZXJuZWwgdmVyc2lvbnMgYXJvdW5kIDIu Ni4xNyBoYXZlIGZvciBpMzg2IGluZmVyaW9ycyBydW5uaW5nCi0rICAgICBpbiBjb21wYXRpYmls aXR5IG1vZGUgb24gYW1kNjQga2VybmVsIHRoZWlyIFZTWVNDQUxMIHBhZ2UgKGF0IDB4ZmZmZmUw MDApCi0rICAgICBwcm90ZWN0ZWQgYXMgUldYPT0wMDAgYnkgZGVmYXVsdCBhbmQgZ2RiIGZhaWxz IHRvIHJlYWQgdGhlIGxpYnJhcnkgaGVhZGVyCi0rICAgICB1cG9uIGxvYWRpbmcgdGhlIGNvcmUu ICBUaGlzIGlzIGEgTGludXgga2VybmVsIGJ1ZyBiZWluZyBmaXhlZC4gICovCi0rCi0gICAvKiBJ ZiB0aGUgbWVtb3J5IHNlZ21lbnQgaGFzIG5vIHBlcm1pc3Npb25zIHNldCwgaWdub3JlIGl0LCBv dGhlcndpc2UKLSAgICAgIHdoZW4gd2UgbGF0ZXIgdHJ5IHRvIGFjY2VzcyBpdCBmb3IgcmVhZC93 cml0ZSwgd2UnbGwgZ2V0IGFuIGVycm9yCi0gICAgICBvciBqYW0gdGhlIGtlcm5lbC4gICovCi1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RiX3Byb2NmczMyLmgKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJfcHJvY2ZzMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4 LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMjggQEAKLSsjaWZkZWYgSEFWRV9TWVNfUFJP Q0ZTMzJfSAotKyNpbmNsdWRlIDxzeXMvcHJvY2ZzMzIuaD4KLSsjZWxpZiAhZGVmaW5lZCBIQVZF X0VMRl9QUlNUQVRVUzMyCi0rCi0rLyogQ29weXJpZ2h0IChDKSAyMDA2IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJy YXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsg ICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Us IFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaWZu ZGVmIF9TWVNfUFJPQ0ZTMzJfSAotKyNkZWZpbmUgX1NZU19QUk9DRlMzMl9ICTEKLSsKLSsvKiBU aGlzIGlzIHNvbWV3aGF0IG1vZGVsbGVkIGFmdGVyIHRoZSBmaWxlIG9mIHRoZSBzYW1lIG5hbWUg b24gU1ZSNAotKyAgIHN5c3RlbXMuICBJdCBwcm92aWRlcyBhIGRlZmluaXRpb24gb2YgdGhlIGNv cmUgZmlsZSBmb3JtYXQgZm9yIEVMRgotKyAgIHVzZWQgb24gTGludXguICBJdCBkb2Vzbid0IGhh dmUgYW55dGhpbmcgdG8gZG8gd2l0aCB0aGUgL3Byb2MgZmlsZQotKyAgIHN5c3RlbSwgZXZlbiB0 aG91Z2ggTGludXggaGFzIG9uZS4KLSsKLSsgICBBbnl3YXksIHRoZSB3aG9sZSBwdXJwb3NlIG9m IHRoaXMgZmlsZSBpcyBmb3IgR0RCIGFuZCBHREIgb25seS4KLSsgICBEb24ndCByZWFkIHRvbyBt dWNoIGludG8gaXQuICBEb24ndCB1c2UgaXQgZm9yIGFueXRoaW5nIG90aGVyIHRoYW4KLSsgICBH REIgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy4gICovCi0rCi0rI2luY2x1ZGUg PGZlYXR1cmVzLmg+Ci0rI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBl cy5oPgotKyNpbmNsdWRlICJnZGJfdXNlcjMyLmgiCi0rCi0rLyogV2UgZGVmaW5lIGhlcmUgb25s eSB0aGUgc3ltYm9scyBkaWZmZXJpbmcgZnJvbSB0aGVpciA2NC1iaXQgdmFyaWFudC4gICovCi0r I2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSsKLStfX0JFR0lOX0RFQ0xTCi0rCi0rLyogVHlwZSBm b3IgYSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIuICAqLwotK3R5cGVkZWYgdW5zaWduZWQgaW50 IGVsZl9ncmVnMzJfdDsKLSsKLSsvKiBBbmQgdGhlIHdob2xlIGJ1bmNoIG9mIHRoZW0uICBXZSBj b3VsZCBoYXZlIHVzZWQgYHN0cnVjdAotKyAgIHVzZXJfcmVnc19zdHJ1Y3QnIGRpcmVjdGx5IGlu IHRoZSB0eXBlZGVmLCBidXQgdHJhZGl0aW9uIHNheXMgdGhhdAotKyAgIHRoZSByZWdpc3RlciBz ZXQgaXMgYW4gYXJyYXksIHdoaWNoIGRvZXMgaGF2ZSBzb21lIHBlY3VsaWFyCi0rICAgc2VtYW50 aWNzLCBzbyBsZWF2ZSBpdCB0aGF0IHdheS4gICovCi0rI2RlZmluZSBFTEZfTkdSRUczMiAoc2l6 ZW9mIChzdHJ1Y3QgdXNlcl9yZWdzMzJfc3RydWN0KSAvIHNpemVvZihlbGZfZ3JlZzMyX3QpKQot K3R5cGVkZWYgZWxmX2dyZWczMl90IGVsZl9ncmVnc2V0MzJfdFtFTEZfTkdSRUczMl07Ci0rCi0r LyogUmVnaXN0ZXIgc2V0IGZvciB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSt0 eXBlZGVmIHN0cnVjdCB1c2VyX2ZwcmVnczMyX3N0cnVjdCBlbGZfZnByZWdzZXQzMl90OwotKwot Ky8qIFJlZ2lzdGVyIHNldCBmb3IgdGhlIGV4dGVuZGVkIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVy cy4gIEluY2x1ZGVzCi0rICAgdGhlIFBlbnRpdW0gSUlJIFNTRSByZWdpc3RlcnMgaW4gYWRkaXRp b24gdG8gdGhlIGNsYXNzaWMKLSsgICBmbG9hdGluZy1wb2ludCBzdHVmZi4gICovCi0rdHlwZWRl ZiBzdHJ1Y3QgdXNlcl9mcHhyZWdzMzJfc3RydWN0IGVsZl9mcHhyZWdzZXQzMl90OwotKwotKwot Ky8qIERlZmluaXRpb25zIHRvIGdlbmVyYXRlIEludGVsIFNWUjQtbGlrZSBjb3JlIGZpbGVzLiAg VGhlc2UgbW9zdGx5Ci0rICAgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgU1ZSNCB0eXBlcyB3 aXRoICJlbGZfIiB0YWNrZWQgb24gdGhlCi0rICAgZnJvbnQgdG8gcHJldmVudCBjbGFzaGVzIHdp dGggTGludXggZGVmaW5pdGlvbnMsIGFuZCB0aGUgdHlwZWRlZgotKyAgIGZvcm1zIGhhdmUgYmVl biBhdm9pZGVkLiAgVGhpcyBpcyBtb3N0bHkgbGlrZSB0aGUgU1ZSNCBzdHJ1Y3R1cmUsCi0rICAg YnV0IG1vcmUgTGludXh5LCB3aXRoIHRoaW5ncyB0aGF0IExpbnV4IGRvZXMgbm90IHN1cHBvcnQg YW5kIHdoaWNoCi0rICAgR0RCIGRvZXNuJ3QgcmVhbGx5IHVzZSBleGNsdWRlZC4gICovCi0rCi0r c3RydWN0IHByc3RhdHVzMzJfdGltZXZhbAotKyAgewotKyAgICBpbnQgdHZfc2VjOwotKyAgICBp bnQgdHZfdXNlYzsKLSsgIH07Ci0rCi0rc3RydWN0IGVsZl9wcnN0YXR1czMyCi0rICB7Ci0rICAg IHN0cnVjdCBlbGZfc2lnaW5mbyBwcl9pbmZvOwkJLyogSW5mbyBhc3NvY2lhdGVkIHdpdGggc2ln bmFsLiAgKi8KLSsgICAgc2hvcnQgaW50IHByX2N1cnNpZzsJCS8qIEN1cnJlbnQgc2lnbmFsLiAg Ki8KLSsgICAgdW5zaWduZWQgaW50IHByX3NpZ3BlbmQ7CQkvKiBTZXQgb2YgcGVuZGluZyBzaWdu YWxzLiAgKi8KLSsgICAgdW5zaWduZWQgaW50IHByX3NpZ2hvbGQ7CQkvKiBTZXQgb2YgaGVsZCBz aWduYWxzLiAgKi8KLSsgICAgX19waWRfdCBwcl9waWQ7Ci0rICAgIF9fcGlkX3QgcHJfcHBpZDsK LSsgICAgX19waWRfdCBwcl9wZ3JwOwotKyAgICBfX3BpZF90IHByX3NpZDsKLSsgICAgc3RydWN0 IHByc3RhdHVzMzJfdGltZXZhbCBwcl91dGltZTsJCS8qIFVzZXIgdGltZS4gICovCi0rICAgIHN0 cnVjdCBwcnN0YXR1czMyX3RpbWV2YWwgcHJfc3RpbWU7CQkvKiBTeXN0ZW0gdGltZS4gICovCi0r ICAgIHN0cnVjdCBwcnN0YXR1czMyX3RpbWV2YWwgcHJfY3V0aW1lOwkvKiBDdW11bGF0aXZlIHVz ZXIgdGltZS4gICovCi0rICAgIHN0cnVjdCBwcnN0YXR1czMyX3RpbWV2YWwgcHJfY3N0aW1lOwkv KiBDdW11bGF0aXZlIHN5c3RlbSB0aW1lLiAgKi8KLSsgICAgZWxmX2dyZWdzZXQzMl90IHByX3Jl ZzsJCS8qIEdQIHJlZ2lzdGVycy4gICovCi0rICAgIGludCBwcl9mcHZhbGlkOwkJCS8qIFRydWUg aWYgbWF0aCBjb3BybyBiZWluZyB1c2VkLiAgKi8KLSsgIH07Ci0rCi0rCi0rc3RydWN0IGVsZl9w cnBzaW5mbzMyCi0rICB7Ci0rICAgIGNoYXIgcHJfc3RhdGU7CQkJLyogTnVtZXJpYyBwcm9jZXNz IHN0YXRlLiAgKi8KLSsgICAgY2hhciBwcl9zbmFtZTsJCQkvKiBDaGFyIGZvciBwcl9zdGF0ZS4g ICovCi0rICAgIGNoYXIgcHJfem9tYjsJCQkvKiBab21iaWUuICAqLwotKyAgICBjaGFyIHByX25p Y2U7CQkJLyogTmljZSB2YWwuICAqLwotKyAgICB1bnNpZ25lZCBpbnQgcHJfZmxhZzsJCS8qIEZs YWdzLiAgKi8KLSsgICAgdW5zaWduZWQgc2hvcnQgaW50IHByX3VpZDsKLSsgICAgdW5zaWduZWQg c2hvcnQgaW50IHByX2dpZDsKLSsgICAgaW50IHByX3BpZCwgcHJfcHBpZCwgcHJfcGdycCwgcHJf c2lkOwotKyAgICAvKiBMb3RzIG1pc3NpbmcgKi8KLSsgICAgY2hhciBwcl9mbmFtZVsxNl07CQkJ LyogRmlsZW5hbWUgb2YgZXhlY3V0YWJsZS4gICovCi0rICAgIGNoYXIgcHJfcHNhcmdzW0VMRl9Q UkFSR1NaXTsJLyogSW5pdGlhbCBwYXJ0IG9mIGFyZyBsaXN0LiAgKi8KLSsgIH07Ci0rCi0rCi0r LyogVGhlIHJlc3Qgb2YgdGhpcyBmaWxlIHByb3ZpZGVzIHRoZSB0eXBlcyBmb3IgZW11bGF0aW9u IG9mIHRoZQotKyAgIFNvbGFyaXMgPHByb2Nfc2VydmljZS5oPiBpbnRlcmZhY2VzIHRoYXQgc2hv dWxkIGJlIGltcGxlbWVudGVkIGJ5Ci0rICAgdXNlcnMgb2YgbGlidGhyZWFkX2RiLiAgKi8KLSsK LSsvKiBSZWdpc3RlciBzZXRzLiAgTGludXggaGFzIGRpZmZlcmVudCBuYW1lcy4gICovCi0rdHlw ZWRlZiBlbGZfZ3JlZ3NldF90IHByZ3JlZ3NldDMyX3Q7Ci0rdHlwZWRlZiBlbGZfZnByZWdzZXRf dCBwcmZwcmVnc2V0MzJfdDsKLSsKLSsvKiBQcm9jZXNzIHN0YXR1cyBhbmQgaW5mby4gIEluIHRo ZSBlbmQgd2UgZG8gcHJvdmlkZSB0eXBlZGVmcyBmb3IgdGhlbS4gICovCi0rdHlwZWRlZiBzdHJ1 Y3QgZWxmX3Byc3RhdHVzMzIgcHJzdGF0dXMzMl90OwotK3R5cGVkZWYgc3RydWN0IGVsZl9wcnBz aW5mbzMyIHBycHNpbmZvMzJfdDsKLSsKLStfX0VORF9ERUNMUwotKwotKyNlbmRpZgkvKiBfU1lT X1BST0NGUzMyX0ggKi8KLSsKLSsjZW5kaWYgLyogSEFWRV9TWVNfUFJPQ0ZTMzJfSCAqLwotSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYl91c2VyMzIuaAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYl91c2VyMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAw MDAwMCArMDEwMAotQEAgLTAsMCArMSwxMDggQEAKLSsjaWZkZWYgSEFWRV9TWVNfVVNFUjMyX0gK LSsjaW5jbHVkZSA8c3lzL3VzZXIzMi5oPgotKyNlbHNlCi0rCi0rI2lmZGVmIEhBVkVfU1RESU5U X0gKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rdHlwZWRlZiAgaW50MzJfdCAgZ2RiX2ludDMyX3Q7 Ci0rdHlwZWRlZiB1aW50MzJfdCBnZGJfdWludDMyX3Q7Ci0rI2Vsc2UKLSt0eXBlZGVmICAgc2ln bmVkIGludCBnZGJfdWludDMyX3Q7Ci0rdHlwZWRlZiB1bnNpZ25lZCBpbnQgZ2RiX3VpbnQzMl90 OwotKyNlbmRpZgotKwotKy8qIENvcHlyaWdodCAoQykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4K LSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGlj ZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2lmbmRlZiBf U1lTX1VTRVIzMl9ICi0rI2RlZmluZSBfU1lTX1VTRVIzMl9ICTEKLSsKLSsvKiBUaGVzZSBhcmUg dGhlIDMyLWJpdCB4ODYgc3RydWN0dXJlcy4gICovCi0rCi0rc3RydWN0IHVzZXJfZnByZWdzMzJf c3RydWN0Ci0rewotKyAgaW50MzJfdCBjd2Q7Ci0rICBpbnQzMl90IHN3ZDsKLSsgIGludDMyX3Qg dHdkOwotKyAgaW50MzJfdCBmaXA7Ci0rICBpbnQzMl90IGZjczsKLSsgIGludDMyX3QgZm9vOwot KyAgaW50MzJfdCBmb3M7Ci0rICBpbnQzMl90IHN0X3NwYWNlIFsyMF07Ci0rfTsKLSsKLStzdHJ1 Y3QgdXNlcl9mcHhyZWdzMzJfc3RydWN0Ci0rewotKyAgdW5zaWduZWQgc2hvcnQgaW50IGN3ZDsK LSsgIHVuc2lnbmVkIHNob3J0IGludCBzd2Q7Ci0rICB1bnNpZ25lZCBzaG9ydCBpbnQgdHdkOwot KyAgdW5zaWduZWQgc2hvcnQgaW50IGZvcDsKLSsgIGludDMyX3QgZmlwOwotKyAgaW50MzJfdCBm Y3M7Ci0rICBpbnQzMl90IGZvbzsKLSsgIGludDMyX3QgZm9zOwotKyAgaW50MzJfdCBteGNzcjsK LSsgIGludDMyX3QgcmVzZXJ2ZWQ7Ci0rICBpbnQzMl90IHN0X3NwYWNlWzMyXTsgICAvKiA4KjE2 IGJ5dGVzIGZvciBlYWNoIEZQLXJlZyA9IDEyOCBieXRlcyAqLwotKyAgaW50MzJfdCB4bW1fc3Bh Y2VbMzJdOyAgLyogOCoxNiBieXRlcyBmb3IgZWFjaCBYTU0tcmVnID0gMTI4IGJ5dGVzICovCi0r ICBpbnQzMl90IHBhZGRpbmdbNTZdOwotK307Ci0rCi0rc3RydWN0IHVzZXJfcmVnczMyX3N0cnVj dAotK3sKLSsgIGludDMyX3QgZWJ4OwotKyAgaW50MzJfdCBlY3g7Ci0rICBpbnQzMl90IGVkeDsK LSsgIGludDMyX3QgZXNpOwotKyAgaW50MzJfdCBlZGk7Ci0rICBpbnQzMl90IGVicDsKLSsgIGlu dDMyX3QgZWF4OwotKyAgaW50MzJfdCB4ZHM7Ci0rICBpbnQzMl90IHhlczsKLSsgIGludDMyX3Qg eGZzOwotKyAgaW50MzJfdCB4Z3M7Ci0rICBpbnQzMl90IG9yaWdfZWF4OwotKyAgaW50MzJfdCBl aXA7Ci0rICBpbnQzMl90IHhjczsKLSsgIGludDMyX3QgZWZsYWdzOwotKyAgaW50MzJfdCBlc3A7 Ci0rICBpbnQzMl90IHhzczsKLSt9OwotKwotK3N0cnVjdCB1c2VyMzIKLSt7Ci0rICBzdHJ1Y3Qg dXNlcl9yZWdzMzJfc3RydWN0CXJlZ3M7Ci0rICBpbnQJCQkJdV9mcHZhbGlkOwotKyAgc3RydWN0 IHVzZXJfZnByZWdzMzJfc3RydWN0CWkzODc7Ci0rICB1aW50MzJfdAkJCXVfdHNpemU7Ci0rICB1 aW50MzJfdAkJCXVfZHNpemU7Ci0rICB1aW50MzJfdAkJCXVfc3NpemU7Ci0rICB1aW50MzJfdAkJ CXN0YXJ0X2NvZGU7Ci0rICB1aW50MzJfdAkJCXN0YXJ0X3N0YWNrOwotKyAgaW50MzJfdAkJCXNp Z25hbDsKLSsgIGludAkJCQlyZXNlcnZlZDsKLSsgIHN0cnVjdCB1c2VyX3JlZ3MzMl9zdHJ1Y3Qq CXVfYXIwOwotKyAgc3RydWN0IHVzZXJfZnByZWdzMzJfc3RydWN0Kgl1X2Zwc3RhdGU7Ci0rICB1 aW50MzJfdAkJCW1hZ2ljOwotKyAgY2hhcgkJCQl1X2NvbW0gWzMyXTsKLSsgIGludAkJCQl1X2Rl YnVncmVnIFs4XTsKLSt9OwotKwotKyNlbmRpZgkvKiBfU1lTX1VTRVIzMl9IICovCi0rCi0rI2Vu ZGlmIC8qIEhBVkVfU1lTX1VTRVIzMl9IICovCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvbGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcv Z2RiL2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjA6NDUuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoyMDo1OC4w MDAwMDAwMDAgKzAxMDAKLUBAIC0yMjUsNiArMjI1LDIxIEBAIHN0YXRpYyBMT05HRVNUICgqc3Vw ZXJfeGZlcl9wYXJ0aWFsKSAoc3QKLSAJCQkJICAgICAgY29uc3QgZ2RiX2J5dGUgKiwKLSAJCQkJ ICAgICAgVUxPTkdFU1QsIExPTkdFU1QpOwotIAotKy8qIFRoaXMgZnVuY3Rpb25zIG1ha2UgZWxm Y29yZSBub3RlIHNlY3Rpb25zLgotKyAgIFRoZXkgbWF5IGdldCBvdmVycmlkZW4gYnkgY29kZSBh ZGp1c3RpbmcgZGF0YSBmb3IgbXVsdGktdGFyZ2V0IGJ1aWxkcy4gICovCi0rY2hhciAqKCpsaW51 eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvKQotKyAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKikgPSBlbGZjb3JlX3dyaXRlX3BycHNpbmZvOwotK2NoYXIg KigqbGludXhfZWxmY29yZV93cml0ZV9wcnN0YXR1cykKLSsgIChiZmQgKiwgY2hhciAqLCBpbnQg KiwgbG9uZywgaW50LCBjb25zdCB2b2lkICopID0gZWxmY29yZV93cml0ZV9wcnN0YXR1czsKLStz dGF0aWMgY2hhciAqCi0rbGludXhfZWxmY29yZV93cml0ZV9wcmZwcmVnX2JmZCAoYmZkICphYmZk LCBjaGFyICpidWYsIGludCAqYnVmc2l6LAotKwkJCQkgY29uc3Qgdm9pZCAqZnByZWdzLCBpbnQg c2l6ZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKLSt7Ci0rICByZXR1cm4gZWxmY29yZV93 cml0ZV9wcmZwcmVnIChhYmZkLCBidWYsIGJ1ZnNpeiwgZnByZWdzLCBzaXplKTsKLSt9Ci0rY2hh ciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3ByZnByZWcpIChiZmQgKiwgY2hhciAqLCBpbnQgKiwg Y29uc3Qgdm9pZCAqLCBpbnQsCi0rCQkJICAgc3RydWN0IHJlZ2NhY2hlICopID0gbGludXhfZWxm Y29yZV93cml0ZV9wcmZwcmVnX2JmZDsKLSsKLSBzdGF0aWMgaW50IGRlYnVnX2xpbnV4X25hdDsK LSBzdGF0aWMgdm9pZAotIHNob3dfZGVidWdfbGludXhfbmF0IChzdHJ1Y3QgdWlfZmlsZSAqZmls ZSwgaW50IGZyb21fdHR5LAotQEAgLTQxODcsNyArNDIwMiw3IEBAIGxpbnV4X25hdF9kb190aHJl YWRfcmVnaXN0ZXJzIChiZmQgKm9iZmQKLSAgIGVsc2UKLSAgICAgZmlsbF9ncmVnc2V0IChyZWdj YWNoZSwgJmdyZWdzLCAtMSk7Ci0gCi0tICBub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dy aXRlX3Byc3RhdHVzIChvYmZkLAotKyAgbm90ZV9kYXRhID0gKGNoYXIgKikgbGludXhfZWxmY29y ZV93cml0ZV9wcnN0YXR1cyAob2JmZCwKLSAJCQkJCSAgICAgICBub3RlX2RhdGEsCi0gCQkJCQkg ICAgICAgbm90ZV9zaXplLAotIAkJCQkJICAgICAgIGx3cCwKLUBAIC00MjM3LDEwICs0MjUyLDEw IEBAIGxpbnV4X25hdF9kb190aHJlYWRfcmVnaXN0ZXJzIChiZmQgKm9iZmQKLSAgICAgICBlbHNl Ci0gCWZpbGxfZnByZWdzZXQgKHJlZ2NhY2hlLCAmZnByZWdzLCAtMSk7Ci0gCi0tICAgICAgbm90 ZV9kYXRhID0gKGNoYXIgKikgZWxmY29yZV93cml0ZV9wcmZwcmVnIChvYmZkLAotKyAgICAgIG5v dGVfZGF0YSA9IChjaGFyICopIGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZyAob2JmZCwKLSAJ CQkJCQkgIG5vdGVfZGF0YSwKLSAJCQkJCQkgIG5vdGVfc2l6ZSwKLS0JCQkJCQkgICZmcHJlZ3Ms IHNpemVvZiAoZnByZWdzKSk7Ci0rCQkJCQkJICAmZnByZWdzLCBzaXplb2YgKGZwcmVncyksIHJl Z2NhY2hlKTsKLSAgICAgfQotIAotICAgcmV0dXJuIG5vdGVfZGF0YTsKLUBAIC00NDIzLDkgKzQ0 MzgsOSBAQCBsaW51eF9uYXRfbWFrZV9jb3JlZmlsZV9ub3RlcyAoYmZkICpvYmZkCi0gCQkgICAg ICAgcHNhcmdzX2VuZCAtIHN0cmluZ19lbmQpOwotIAkgICAgfQotIAl9Ci0tICAgICAgbm90ZV9k YXRhID0gKGNoYXIgKikgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwKLS0JCQkJCQkgICBu b3RlX2RhdGEsCi0tCQkJCQkJICAgbm90ZV9zaXplLCBmbmFtZSwgcHNhcmdzKTsKLSsgICAgICBu b3RlX2RhdGEgPSAoY2hhciAqKSBsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvIChvYmZkLCBu b3RlX2RhdGEsCi0rCQkJCQkJCSBub3RlX3NpemUsIGZuYW1lLAotKwkJCQkJCQkgcHNhcmdzKTsK LSAgICAgfQotIAotICAgLyogRHVtcCBpbmZvcm1hdGlvbiBmb3IgdGhyZWFkcy4gICovCi1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmgKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDEtMTUgMDM6MTc6 MDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0 LmgJMjAxMC0wMS0xNSAwMzoyMToyNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNjksMyArMTY5LDEy IEBAIHN0cnVjdCBzaWdpbmZvICpsaW51eF9uYXRfZ2V0X3NpZ2luZm8gKHAKLSAKLSAvKiBDb21w dXRlIGFuZCByZXR1cm4gdGhlIHByb2Nlc3NvciBjb3JlIG9mIGEgZ2l2ZW4gdGhyZWFkLiAgKi8K LSBpbnQgbGludXhfbmF0X2NvcmVfb2ZfdGhyZWFkXzEgKHB0aWRfdCBwdGlkKTsKLSsKLSsvKiBU aGVzZSBmdW5jdGlvbnMgbWFrZSBlbGZjb3JlIG5vdGUgc2VjdGlvbnMuCi0rICAgVGhleSBtYXkg Z2V0IG92ZXJyaWRlbiBieSBjb2RlIGFkanVzdGluZyBkYXRhIGZvciBtdWx0aS10YXJnZXQgYnVp bGRzLiAgKi8KLStleHRlcm4gY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvKQot KyAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0r ZXh0ZXJuIGNoYXIgKigqbGludXhfZWxmY29yZV93cml0ZV9wcnN0YXR1cykKLSsgIChiZmQgKiwg Y2hhciAqLCBpbnQgKiwgbG9uZywgaW50LCBjb25zdCB2b2lkICopOwotK2V4dGVybiBjaGFyICoo KmxpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZykKLSsgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwg Y29uc3Qgdm9pZCAqLCBpbnQsIHN0cnVjdCByZWdjYWNoZSAqKTsKCmRpZmYgLS1naXQgYS9nZGIt Ni41LWlhNjQtbGlidW53aW5kLWxlYWstdGVzdC5wYXRjaCBiL2dkYi02LjUtaWE2NC1saWJ1bndp bmQtbGVhay10ZXN0LnBhdGNoCmluZGV4IDc5YTQ3NTMuLmM3N2M2NzcgMTAwNjQ0Ci0tLSBhL2dk Yi02LjUtaWE2NC1saWJ1bndpbmQtbGVhay10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjUtaWE2NC1s aWJ1bndpbmQtbGVhay10ZXN0LnBhdGNoCkBAIC0zNCw3ICszNCw3IEBAIGRpZmYgLXUgLXJ1cCBn ZGItNi4zLW9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS91bndpbmQtbGVhay5jIGdkYi02LjMv Z2RiL3Rlc3RzCiBkaWZmIC11IC1ydXAgZ2RiLTYuMy1vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdW53aW5kLWxlYWsuZXhwIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS91bndpbmQt bGVhay5leHAKIC0tLSBnZGItNi4zLW9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS91bndpbmQt bGVhay5leHAJMjAwNy0xMi0xOSAxNToxMjo1My4wMDAwMDAwMDAgLTA1MDAKICsrKyBnZGItNi4z L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdW53aW5kLWxlYWsuZXhwCTIwMDctMTItMTkgMTU6MTE6 MzUuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMCwwICsxLDkwIEBACitAQCAtMCwwICsxLDgzIEBACiAr IyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CkBAIC01MSwxMyArNTEsNiBAQCBkaWZmIC11IC1ydXAgZ2RiLTYuMy1vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdW53aW5kLWxlYWsuZXhwIGdkYi02LjMvZ2RiL3RlcwogKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKICsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsg ICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lk IDAKLSsKICtzZXQgdGVzdGZpbGUgdW53aW5kLWxlYWsKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jCiArc2V0IHNoZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5zaAoK ZGlmZiAtLWdpdCBhL2dkYi02LjUtbWlzc2VkLXRyYXAtb24tc3RlcC10ZXN0LnBhdGNoIGIvZ2Ri LTYuNS1taXNzZWQtdHJhcC1vbi1zdGVwLXRlc3QucGF0Y2gKaW5kZXggY2I1NTE5My4uMmY0NDM2 ZCAxMDA2NDQKLS0tIGEvZ2RiLTYuNS1taXNzZWQtdHJhcC1vbi1zdGVwLXRlc3QucGF0Y2gKKysr IGIvZ2RiLTYuNS1taXNzZWQtdHJhcC1vbi1zdGVwLXRlc3QucGF0Y2gKQEAgLTMsNyArMyw3IEBA IEZpeCBoYXMgYmVlbiBjb21taXR0ZWQgdG86CiAKIC0tLSAvZGV2L251bGwJMjAwNy0xMi0xNCAy MDo0NTowOS4xMTMwMzk1MTcgKzAxMDAKICsrKyBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvd2F0Y2hwb2ludC1kdXJpbmctc3RlcC5leHAJMjAwNy0xMi0yNCAxOTo0MjowMC4wMDAwMDAw MDAgKzAxMDAKLUBAIC0wLDAgKzEsNTEgQEAKK0BAIC0wLDAgKzEsNDQgQEAKICsjIENvcHlyaWdo dCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK QEAgLTIwLDEzICsyMCw2IEBAIEZpeCBoYXMgYmVlbiBjb21taXR0ZWQgdG86CiArIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKyMg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gIAogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJh Y2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwog K3NldCB0ZXN0ZmlsZSB3YXRjaHBvaW50LWR1cmluZy1zdGVwCiArc2V0IHNyY2ZpbGUgJHt0ZXN0 ZmlsZX0uYwogK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KCmRp ZmYgLS1naXQgYS9nZGItNi41LXRscy1vZi1zZXBhcmF0ZS1kZWJ1Z2luZm8ucGF0Y2ggYi9nZGIt Ni41LXRscy1vZi1zZXBhcmF0ZS1kZWJ1Z2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGI4MzgwODEuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuNS10bHMtb2Ytc2VwYXJhdGUt ZGVidWdpbmZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRGVwZW5kZW5j eSBvbjogZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5w YXRjaAotCi0KLTIwMDYtMDktMDEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLQotCSogdGFyZ2V0LmMgKHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MpOiBG aXggZm9yIHNlcGFyYXRlIGRlYnVnaW5mby4KLQotCi1kaWZmIC1ydXAgZ2RiLTYuNS5vcmlnL2dk Yi90YXJnZXQuYyBnZGItNi41L2dkYi90YXJnZXQuYwotLS0tIGdkYi02LjUub3JpZy9nZGIvdGFy Z2V0LmMJMjAwNi0wOS0yMCAxNzoxMzozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBnZGItNi41L2dk Yi90YXJnZXQuYwkyMDA2LTA5LTIwIDE3OjE1OjUzLjAwMDAwMDAwMCAtMDQwMAotQEAgLTc2OSw2 ICs3NjksMTIgQEAgdGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoc3RydWN0IG9iagotICAg ICAgIHB0aWRfdCBwdGlkID0gaW5mZXJpb3JfcHRpZDsKLSAgICAgICB2b2xhdGlsZSBzdHJ1Y3Qg Z2RiX2V4Y2VwdGlvbiBleDsKLSAKLSsgICAgICAvKiBSZXNvbHZlOiBDYW5ub3QgZmluZCBzaGFy ZWQgbGlicmFyeQotKwkgYC91c3IvbGliL2RlYnVnL2xpYi9saWIuLi4uc28uZGVidWcnIGluIGR5 bmFtaWMgbGlua2VyJ3MgbG9hZAotKwkgbW9kdWxlIGxpc3QgICovCi0rICAgICAgaWYgKG9iamZp bGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgIT0gTlVMTCkKLSsJb2JqZmlsZSA9 IG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbms7Ci0rCi0gICAgICAgVFJZ X0NBVENIIChleCwgUkVUVVJOX01BU0tfQUxMKQotIAl7Ci0gCSAgQ09SRV9BRERSIGxtX2FkZHI7 CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaCBi L2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKaW5kZXggNzgwOTk0MC4u YTQzMDY2NyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5w YXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCkBAIC01 OCw4ICs1OCwxMCBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0w MS9tc2cwMDUxNy5odG1sCiAJKiBleGVjLmMgKGV4ZWNfZmlsZV9hdHRhY2gpOiBQcmludCBhIG1v cmUgdXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYgdGhlCiAJdXNlciBkaWQgImdkYiBjb3JlIi4KIAot LS0tIC4vZ2RiL2V4Y2VwdGlvbnMuaAkyMDEwLTA0LTExIDIyOjMxOjMwLjAwMDAwMDAwMCArMDIw MAotKysrIC4vZ2RiL2V4Y2VwdGlvbnMuaAkyMDEwLTA0LTExIDIyOjMxOjQ3LjAwMDAwMDAwMCAr MDIwMAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4Y2VwdGlvbnMuaAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZXhjZXB0aW9ucy5oCTIwMTAt MDUtMDMgMDE6NTI6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvZXhjZXB0aW9ucy5oCTIwMTAtMDctMTMgMjI6NTY6MjkuMDAwMDAwMDAwICswMjAwCiBAQCAt NzgsNiArNzgsOSBAQCBlbnVtIGVycm9ycyB7CiAgICAvKiBGZWF0dXJlIGlzIG5vdCBzdXBwb3J0 ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4gICovCiAgICBVTlNVUFBPUlRFRF9FUlJPUiwKQEAgLTcw LDggKzcyLDEwIEBAIEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAx L21zZzAwNTE3Lmh0bWwKICAgIC8qIEFkZCBtb3JlIGVycm9ycyBoZXJlLiAgKi8KICAgIE5SX0VS Uk9SUwogIH07Ci0tLS0gLi9nZGIvZXhlYy5jCTIwMTAtMDQtMTEgMjI6MzE6MzAuMDAwMDAwMDAw ICswMjAwCi0rKysgLi9nZGIvZXhlYy5jCTIwMTAtMDQtMTEgMjI6NDE6MjYuMDAwMDAwMDAwICsw MjAwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wNy0xMiAyMzowNzoz NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmMJMjAx MC0wNy0xMyAyMjo1NjoyOS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0zNCw2ICszNCw3IEBACiAgI2lu Y2x1ZGUgImFyY2gtdXRpbHMuaCIKICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCkBAIC04MCw3ICs4 NCw3IEBAIEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAw NTE3Lmh0bWwKICAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVh ZGxpbmUuaCIKLUBAIC0yNTYsMTIgKzI1NywyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpm aWxlbmFtZSwgaW50IGZyCitAQCAtMjUzLDEyICsyNTQsMjcgQEAgZXhlY19maWxlX2F0dGFjaCAo Y2hhciAqZmlsZW5hbWUsIGludCBmcgogIAogICAgICAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdF9t YXRjaGVzIChleGVjX2JmZCwgYmZkX29iamVjdCwgJm1hdGNoaW5nKSkKICAJewpAQCAtMTExLDgg KzExNSwxMCBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9t c2cwMDUxNy5odG1sCiAgCX0KICAKICAgICAgICAvKiBGSVhNRSAtIFRoaXMgc2hvdWxkIG9ubHkg YmUgcnVuIGZvciBSUzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBwb29yCi0tLS0gLi9nZGIvbWFp bi5jCTIwMTAtMDQtMTEgMjI6MzE6MzAuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvbWFpbi5j CTIwMTAtMDQtMTEgMjI6MzE6NDcuMDAwMDAwMDAwICswMjAwCitJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvbWFpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5v cmlnL2dkYi9tYWluLmMJMjAxMC0wNy0xMiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4xLjkwLjIwMTAwNzExL2dkYi9tYWluLmMJMjAxMC0wNy0xMyAyMjo1ODoyMC4wMDAwMDAw MDAgKzAyMDAKIEBAIC0yNDEsNiArMjQxLDM2IEBAIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAodm9p ZCAqZGF0YSkKICAgIHJldHVybiAxOwogIH0KQEAgLTE1MCw3ICsxNTYsNyBAQCBIdHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAgc3RhdGlj IGludAogIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgewotQEAgLTcwMyw2ICs3MzMsOCBA QCBleHRlcm4gaW50IGdkYnRrX3Rlc3QgKGNoYXIgKik7CitAQCAtNjc4LDYgKzcwOCw4IEBAIGV4 dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKICAJewogIAkgIHN5bWFyZyA9IGFyZ3Zbb3B0 aW5kXTsKICAJICBleGVjYXJnID0gYXJndltvcHRpbmRdOwpAQCAtMTU5LDcgKzE2NSw3IEBAIEh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwK ICAJICBvcHRpbmQrKzsKICAJfQogIAotQEAgLTgzNSwxMCArODY3LDI1IEBAIEV4Y2VzcyBjb21t YW5kIGxpbmUgYXJndW1lbnRzIGlnbm9yZWQuICgKK0BAIC04MTYsMTAgKzg0OCwyNSBAQCBFeGNl c3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpZ25vcmVkLiAoCiAgICAgICAgJiYgc3ltYXJnICE9 IE5VTEwKICAgICAgICAmJiBzdHJjbXAgKGV4ZWNhcmcsIHN5bWFyZykgPT0gMCkKICAgICAgewpA QCAtMTc4LDEzICsxODQsMTMgQEAgSHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTAtMDEvbXNnMDA1MTcuaHRtbAogICAgICAgIC8qIFRoZSBleGVjIGZpbGUgYW5kIHRoZSBz eW1ib2wtZmlsZSBhcmUgdGhlIHNhbWUuICBJZiB3ZSBjYW4ndAogLSAgICAgICAgIG9wZW4gaXQs IGJldHRlciBvbmx5IHByaW50IG9uZSBlcnJvciBtZXNzYWdlLgogLSAgICAgICAgIGNhdGNoX2Nv bW1hbmRfZXJyb3JzIHJldHVybnMgbm9uLXplcm8gb24gc3VjY2VzcyEgKi8KLS0gICAgICBpZiAo Y2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWNfZmlsZV9hdHRhY2gsIGV4ZWNhcmcsICFiYXRjaCwg UkVUVVJOX01BU0tfQUxMKSkKKy0gICAgICBpZiAoY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWNf ZmlsZV9hdHRhY2gsIGV4ZWNhcmcsICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpKQogKwkg b3BlbiBpdCwgYmV0dGVyIG9ubHkgcHJpbnQgb25lIGVycm9yIG1lc3NhZ2UuCiArCSBjYXRjaF9j b21tYW5kX2Vycm9ycyByZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MhCiArCSBEbyBub3QgbG9h ZCBFWEVDQVJHIGFzIGEgc3ltYm9sIGZpbGUgaWYgaXQgaGFzIGJlZW4gYWxyZWFkeSBwcm9jZXNz ZWQKICsJIGFzIGEgY29yZSBmaWxlLiAgKi8KLSsgICAgICBpZiAoY2F0Y2hfY29tbWFuZF9lcnJv cnMgKGZ1bmMsIGV4ZWNhcmcsICFiYXRjaCwgUkVUVVJOX01BU0tfQUxMKQorKyAgICAgIGlmIChj YXRjaF9jb21tYW5kX2Vycm9ycyAoZnVuYywgZXhlY2FyZywgIWJhdGNoX2ZsYWcsIFJFVFVSTl9N QVNLX0FMTCkKICsJICAmJiBjb3JlX2JmZCA9PSBOVUxMKQotIAljYXRjaF9jb21tYW5kX2Vycm9y cyAoc3ltYm9sX2ZpbGVfYWRkX21haW4sIHN5bWFyZywgIWJhdGNoLCBSRVRVUk5fTUFTS19BTEwp OworIAljYXRjaF9jb21tYW5kX2Vycm9ycyAoc3ltYm9sX2ZpbGVfYWRkX21haW4sIHN5bWFyZywg IWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7CiAgICAgIH0KICAgIGVsc2UKCmRpZmYgLS1n aXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUtcnBtLnBhdGNoCmluZGV4IDFhYWUzMzkuLjgyNzE5OTIgMTAwNjQ0Ci0tLSBhL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUt cnBtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2V2ZW50LXRvcC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXZlbnQtdG9wLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2V2ZW50LXRvcC5j CTIwMTAtMDEtMDEgMDg6MzE6MzEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvZXZlbnQtdG9wLmMJMjAxMC0wMS0xNSAxMTo0NToyMC4wMDAwMDAwMDAgKzAxMDAK Ky0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMDYtMjYg MDg6NDQ6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXZl bnQtdG9wLmMJMjAxMC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0zMyw2ICsz Myw3IEBACiAgI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiICAgICAvKiBmb3IgcmVzZXRfY29t bWFuZF9uZXN0X2RlcHRoICovCiAgI2luY2x1ZGUgIm1haW4uaCIKQEAgLTI4LDExICsyOCwxMSBA QCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXZlbnQtdG9wLmMKICAgIC8qIEVhY2gg aW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24gcnVsZXMgb24gZGlzcGxheWluZyB0aGUgY29tbWFuZAog ICAgICAgcHJvbXB0LiAgKi8KICAgIGlmICghY3VycmVudF9pbnRlcnBfZGlzcGxheV9wcm9tcHRf cCAoKSkKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBn ZGItNy4xLjkwLjIwMTAwNzExL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDExOjQzOjMwLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwkyMDEwLTAx LTE1IDExOjQ1OjM0LjAwMDAwMDAwMCArMDEwMAotQEAgLTQwLDYgKzQwLDcgQEAKKy0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDExOjMwOjMwLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2VsZnJlYWQuYwkyMDEw LTA3LTEyIDExOjM3OjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTQyLDYgKzQyLDcgQEAKICAjaW5j bHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJnZGJjbWQuaCIKICAjaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Vs ZnJlYWQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwogIAot QEAgLTExMTksOCArMTEyMCwzNTMgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWls ZF9pZCAqYgorQEAgLTEzNjgsOCArMTM2OSwzNTMgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0 cnVjdCBidWlsZF9pZCAqYgogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC0zOTUsNyArMzk1 LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogICAgIGF2b2lk YW5jZS4gICovCiAgCiAgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIKLUBAIC0xMTc0LDExICsxNTIw LDE3IEBAIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQorQEAgLTE0MjMsMTEgKzE3Njks MTcgQEAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCiAgICAgICAgLyogQWxsIHRoZWly IG1lbW9yeSBjYW1lIGp1c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwogICAg ICAgIG1pc3NpbmdfZmlsZXBhaXJfaGFzaCA9IE5VTEw7CiAgICAgIH0KQEAgLTQxMyw3ICs0MTMs NyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgICBtaXNzaW5n X2ZpbGVwYWlyX2NoYW5nZSAoKTsKICB9CiAgCi1AQCAtMTI0NSwxNCArMTU5NywzNCBAQCBkZWJ1 Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksCitAQCAtMTQ5NCwxNCArMTg0Niwz NCBAQCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksCiAgCiAgICAqc2xv dCA9IG1pc3NpbmdfZmlsZXBhaXI7CiAgCkBAIC00NTUsMTEgKzQ1NSwxMSBAQCBJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgfQogIAogIHN0YXRpYyBjaGFyICoKLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bWZpbGUuaAkyMDEwLTAxLTE1IDExOjQ1 OjIwLjAwMDAwMDAwMCArMDEwMAotQEAgLTM5OCw2ICszOTgsNyBAQCBleHRlcm4gc3RydWN0IGJ1 aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dk Yi9zeW1maWxlLmgJMjAxMC0wNy0xMiAxMTowNjoxOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmgJMjAxMC0wNy0xMiAxMTozNzowNC4wMDAwMDAw MDAgKzAyMDAKK0BAIC01NjgsNiArNTY4LDcgQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVp bGRfaWRfYWRkcl9nZQogIGV4dGVybiBjaGFyICpidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0 IGJ1aWxkX2lkICpidWlsZF9pZCwKICAJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuLCBpbnQgYWRk X2RlYnVnX3N1ZmZpeCk7CiAgZXh0ZXJuIHZvaWQgZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3Qg Y2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpkZWJ1Zyk7CkBAIC00NjcsMTEgKzQ2NywxMSBAQCBJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5oCiAgCiAgLyogRnJvbSBkd2Fy ZjJyZWFkLmMgKi8KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTAx LTE1IDExOjQ1OjIwLjAwMDAwMDAwMCArMDEwMAotQEAgLTEyNDgsNyArMTI0OCw3IEBAIHByb2Mg ZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTA3LTEyIDExOjA1OjU3LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEw LTA3LTEyIDExOjM3OjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTEzNTMsNyArMTM1Myw3IEBAIHBy b2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0 aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtNDgwLDEwICs0ODAsMTAgQEAgSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogICAgICBzZW5k X2dkYiAic2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJ LXJlICIkZ2RiX3Byb21wdCAkIiB7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUw LjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wMS0x NSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAw ICswMTAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21p LXN1cHBvcnQuZXhwCTIwMTAtMDctMTIgMTE6MDU6NTcuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTA3 LTEyIDExOjM3OjA0LjAwMDAwMDAwMCArMDIwMAogQEAgLTIyMSw3ICsyMjEsNyBAQCBwcm9jIGRl ZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIH0KICAgICAgCX0KQEAgLTQ5Mywx MCArNDkzLDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGli L21pLXN1cHBvcnQuZXhwCiAgICAgIHNlbmRfZ2RiICIxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJi b3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiLioxOTAtZ2RiLXNldCBidWls ZC1pZC12ZXJib3NlIDBcclxuMTkwXFxcXmRvbmVcclxuJG1pX2dkYl9wcm9tcHQkIiB7Ci1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdHVpL3R1aS1pbnRlcnAuYworSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wMS0wMSAwODoz MjowNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90dWkvdHVp LWludGVycC5jCTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcu MS45MC4yMDEwMDcxMS5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDUtMTggMDA6MjE6 NDMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdHVpL3R1aS1p bnRlcnAuYwkyMDEwLTA3LTEyIDExOjM3OjA0LjAwMDAwMDAwMCArMDIwMAogQEAgLTMwLDYgKzMw LDcgQEAKICAjaW5jbHVkZSAidHVpL3R1aS5oIgogICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCkBA IC01MDUsNyArNTA1LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3R1aS90dWkt aW50ZXJwLmMKICAKICAvKiBTZXQgdG8gMSB3aGVuIHRoZSBUVUkgbW9kZSBtdXN0IGJlIGFjdGl2 YXRlZCB3aGVuIHdlIGZpcnN0IHN0YXJ0CiAgICAgZ2RiLiAgKi8KLUBAIC0xMjgsNiArMTI5LDgg QEAgdHVpX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKK0BAIC0xNDYsNiArMTQ3LDggQEAgdHVp X2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKICAgICAgICBjaGFyICphX3Byb21wdDsKICAgICAg ICBjaGFyICpnZGJfcHJvbXB0ID0gZ2V0X3Byb21wdCAoKTsKICAKQEAgLTUxNCwxMCArNTE0LDEw IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90dWkvdHVpLWludGVycC5jCiAgICAg ICAgLyogVGVsbCByZWFkbGluZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlzcGxheSBpcyBhbmQgd2hh dCBmdW5jdGlvbgogICAgICAgICAgIGl0IHdpbGwgbmVlZCB0byBjYWxsIGFmdGVyIGEgd2hvbGUg bGluZSBpcyByZWFkLiBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0aGUgZmlyc3QgcHJv bXB0LiAgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9hY2xvY2FsLm00CitJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvYWNsb2NhbC5tNAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDA5LTExLTExIDA1OjQyOjM5 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FjbG9jYWwubTQJ MjAxMC0wMS0xNSAxMTo0NToyMC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9hY2xvY2FsLm00CTIwMTAtMDctMTIgMTE6 Mzc6MDQuMDAwMDAwMDAwICswMjAwCiBAQCAtMTksNiArMTksMTYyIEBAIFlvdSBoYXZlIGFub3Ro ZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEkKICBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1h eSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KICBUbyBkbyBz bywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5 IGBhdXRvcmVjb25mJy5dKV0pCkBAIC02ODEsMTEgKzY4MSwxMSBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvYWNsb2NhbC5tNAogICMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAy MDA1LCAyMDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAj CiAgIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbgotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgorSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlnLmluCTIwMTAtMDEt MTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCi1AQCAtNDIsNiArNDIsOSBAQAorLS0tIGdkYi03 LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDctMDYgMjE6MDM6MTEuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlnLmluCTIwMTAt MDctMTIgMTE6Mzg6MzAuMDAwMDAwMDAwICswMjAwCitAQCAtNDYsNiArNDYsOSBAQAogIC8qIERl ZmluZSB0byBCRkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICovCiAgI3VuZGVmIERFRkFVTFRf QkZEX1ZFQwogIApAQCAtNjk1LDkgKzY5NSw5IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFt IG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVk LiAqLwogICN1bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjIxLDYgKzIyNCw5IEBACi0gLyogRGVmaW5l IGlmIFB5dGhvbiAyLjYgaXMgYmVpbmcgdXNlZC4gKi8KLSAjdW5kZWYgSEFWRV9MSUJQWVRIT04y XzYKK0BAIC0yMzIsNiArMjM1LDkgQEAKKyAvKiBEZWZpbmUgaWYgUHl0aG9uIDIuNyBpcyBiZWlu ZyB1c2VkLiAqLworICN1bmRlZiBIQVZFX0xJQlBZVEhPTjJfNwogIAogKy8qIERlZmluZSBpZiBs aWJycG0gbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwogKyN1bmRlZiBIQVZFX0xJQlJQTQpAQCAt NzA1LDI5ICs3MDUsMjkgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5p bgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwogICN1 bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Nv bmZpZ3VyZQorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZQogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMDEt MTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv Y29uZmlndXJlCTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCi1AQCAtNjc2LDYg KzY3Niw5IEBAIFJFUE9SVF9CVUdTX1RPCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dk Yi9jb25maWd1cmUJMjAxMC0wNy0wNyAxOTozNjozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9jb25maWd1cmUJMjAxMC0wNy0xMiAxMTozODoxNS4wMDAwMDAw MDAgKzAyMDAKK0BAIC02NzksNiArNjc5LDkgQEAgUkVQT1JUX0JVR1NfVE8KICBQS0dWRVJTSU9O CiAgVEFSR0VUX09CUwogIHN1YmRpcnMKICtSUE1fTElCUwogK1JQTV9DRkxBR1MKICtQS0dfQ09O RklHCi0gcHl0aG9uZGlyCi0gR0RCX0RBVEFESVJfUEFUSAogIEdEQl9EQVRBRElSCi1AQCAtODg4 LDYgKzg5MSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCisgREVCVUdESVIKKyBhbV9fZmFz dGRlcENDX0ZBTFNFCitAQCAtOTQ1LDYgKzk0OCw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNr aW5nCisgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKICB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9y ZWxvY2F0ZWRfc291cmNlcwotIHdpdGhfcHl0aG9uZGlyCiArd2l0aF9ycG0KICBlbmFibGVfdGFy Z2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAgLTkyOCw2ICs5MzIs OSBAQCBMREZMQUdTCitAQCAtOTg1LDYgKzk4OSw5IEBAIExERkxBR1MKICBMSUJTCiAgQ1BQRkxB R1MKICBDUFAKQEAgLTczNywxNiArNzM3LDE2IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9jb25maWd1cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTU5Myw2ICsxNjAw LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTY0Niw2ICsxNjUzLDggQEAgT3B0aW9uYWwg UGFja2FnZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCi0gICAt LXdpdGgtcHl0aG9uZGlyICAgICAgICBpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMg cGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiL3B5dGhvbl0KKyAg IC0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRICisgICAgICAgICAgICAgICAgICAgICAgICAg ICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCiArICAt LXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVi dWdpbmZvcyAoeWVzL25vLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxp YnJwbS5zbykKICAgIC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUg dW53aW5kaW5nIHN1cHBvcnQKICAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vy c2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlicmFyeQotQEAgLTE2MjcsNiArMTYzNiw5IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52 aXJvbm1lbnQgdmFyaWFibGVzOgorQEAgLTE2ODEsNiArMTY5MCw5IEBAIFNvbWUgaW5mbHVlbnRp YWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogICAgQ1BQRkxBR1MgICAgQy9DKysvT2JqZWN0aXZl IEMgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZgogICAgICAgICAg ICAgICAgeW91IGhhdmUgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVk ZSBkaXI+CiAgICBDUFAgICAgICAgICBDIHByZXByb2Nlc3NvcgpAQCAtNzU2LDcgKzc1Niw3IEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKICAgIFlBQ0MgICAgICAg IFRoZSBgWWV0IEFub3RoZXIgQyBDb21waWxlcicgaW1wbGVtZW50YXRpb24gdG8gdXNlLiBEZWZh dWx0cyB0bwogICAgICAgICAgICAgICAgdGhlIGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9mOiBg Ymlzb24gLXknLCBgYnlhY2MnLCBgeWFjYycuCiAgICBZRkxBR1MgICAgICBUaGUgbGlzdCBvZiBh cmd1bWVudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBieSBkZWZhdWx0IHRvICRZQUNDLgotQEAgLTY3 NjAsNiArNjc3Miw0ODYgQEAgZWxzZQorQEAgLTc4NzgsNiArNzg5MCw0ODYgQEAgX0FDRU9GCiAg ZmkKICAKICAKQEAgLTEyNDIsMjkwICsxMjQyLDE0IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9jb25maWd1cmUKICsKICAKICAKLSAKLUBAIC0xMDA0MywyNjUgKzEwNTM1LDI1IEBA ICRhc19lY2hvICIjZGVmaW5lIFNURENfSEVBREVSUyAxIiA+PmNvbmYKLSAKLSBmaQotIAotLQot LQotIGZvciBhY19oZWFkZXIgaW4gc3lzL3VzZXIzMi5oIHN5cy9wcm9jZnMzMi5oCi0tZG8KLS1h c19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAK LS1pZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCi0t ICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQotLWVj aG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2Ci0taWYg ZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgotLSAgZWNo byAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElO RU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKLS1lY2hv ICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2Ci0tZWxzZQot LSAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNo ZWNraW5nICRhY19oZWFkZXIgdXNhYmlsaXR5IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5n ICRhY19oZWFkZXIgdXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVm cy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YK LS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tJGFjX2luY2x1ZGVzX2RlZmF1bHQKLS0jaW5jbHVk ZSA8JGFjX2hlYWRlcj4KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYg eyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAo ZXZhbCAkYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3Jl cCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0 LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBc JD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tCSB7IGFj X3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCi0tCQkJIHx8IHRlc3QgISAtcyBjb25m dGVzdC5lcnInCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIp ID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIk YXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVz KTsgfTsgfSAmJgotLQkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0g IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZh bCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVu Ci0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWls ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1 Ci0tCi0tYWNfaGVhZGVyX2NvbXBpbGVyPW5vCi0tZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86 IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hl YWRlcl9jb21waWxlciIgPiY2Ci0tCi0tIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Ci0tZWNobyAi JGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UiID4mNQotLWVjaG8g JEVDSE9fTiAiY2hlY2tpbmcgJGFjX2hlYWRlciBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1j YXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNF T0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4k YWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDwkYWNf aGVhZGVyPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFj X2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3Qu JGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAq KycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAg Y2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0g IGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJl cHJvY193YXJuX2ZsYWcKLS0gICAgYWNfY3BwX2Vycj0kYWNfY3BwX2VyciRhY19jX3dlcnJvcl9m bGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9l cnI9eWVzCi0tZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gIGFjX2hlYWRl cl9wcmVwcm9jPXllcwotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2Fz OiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgYWNfaGVh ZGVyX3ByZXByb2M9bm8KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0 Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUK LS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX3ByZXByb2MiID4mNgotLQotLSMgU28/ICBXaGF0 IGFib3V0IHRoaXMgaGVhZGVyPwotLWNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVy X3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4KLS0gIHllczpubzogKQotLSAgICB7 IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0 aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKLS1lY2hvICIk YXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVq ZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRM SU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIn cyByZXN1bHQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2Vl ZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KLS0gICAgYWNfaGVhZGVyX3By ZXByb2M9eWVzCi0tICAgIDs7Ci0tICBubzp5ZXM6KiApCi0tICAgIHsgZWNobyAiJGFzX21lOiRM SU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxl ZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBj YW5ub3QgYmUgY29tcGlsZWQiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdB Uk5JTkc6ICRhY19oZWFkZXI6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVh ZGVycz8iID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogICAgIGNoZWNr IGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KLS0gICAgeyBlY2hvICIk YXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogc2VlIHRoZSBBdXRvY29uZiBkb2N1 bWVudGF0aW9uIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHNlZSB0 aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJ TkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5u b3QgQmUgQ29tcGlsZWRcIiIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVy OiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQot LSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVk aW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBX QVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJl c3VsdCIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hl YWRlcjogaW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBpbGVyIHdpbGwgdGFrZSBwcmVjZWRlbmNlIiA+ JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IGluIHRoZSBmdXR1cmUsIHRo ZSBjb21waWxlciB3aWxsIHRha2UgcHJlY2VkZW5jZSIgPiYyO30KLS0gICAgKAotLSAgICAgIGNh dCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gIyMKLS0jIyBSZXBvcnQgdGhpcyB0byB0aGUgQUNfUEFDS0FHRV9OQU1FIGxpc3RzLiAgIyMK LS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNC T1gKLS0gICAgKSB8Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYy Ci0tICAgIDs7Ci0tZXNhYwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFj X2hlYWRlciIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAk RUNIT19DIiA+JjYKLS1pZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBz ZXQiOyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UK LS0gIGV2YWwgIiRhc19hY19IZWFkZXI9XCRhY19oZWFkZXJfcHJlcHJvYyIKLS1maQotLWVjaG8g IiRhc19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdg IiA+JjUKLS1lY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIg PiY2Ci0tCi0tZmkKLS1pZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0g eWVzOyB0aGVuCi0rZG8gOgotKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVy XyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAotK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwg IiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZh dWx0IgotK2V2YWwgYXNfdmFsPVwkJGFzX2FjX0hlYWRlcgotKyAgIGlmIHRlc3QgIngkYXNfdmFs IiA9IHgiInllczsgdGhlbiA6Ci0gICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmlu ZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKLSsjZGVmaW5lIGAkYXNf ZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKLSBfQUNFT0YKLSAKLSBmaQot IAotIGRvbmUKLSAKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN0cnVjdCBl bGZfcHJzdGF0dXMzMi5wcl9yZWciID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN0 cnVjdCBlbGZfcHJzdGF0dXMzMi5wcl9yZWcuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHth Y19jdl9tZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZytzZXR9IiA9IHNldDsgdGhl bgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBjYXQg PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YK LS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxzeXMvcHJv Y2ZzLmg+Ci0tCi0taW50Ci0tbWFpbiAoKQotLXsKLS1zdGF0aWMgc3RydWN0IGVsZl9wcnN0YXR1 czMyIGFjX2FnZ3I7Ci0taWYgKGFjX2FnZ3IucHJfcmVnKQotLXJldHVybiAwOwotLSAgOwotLSAg cmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7 IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChl dmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVw IC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3Qu ZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwk PyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0JIHsgYWNf dHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKLS0JCQkgfHwgdGVzdCAhIC1zIGNvbmZ0 ZXN0LmVycicKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikg PiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRh c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMp OyB9OyB9ICYmCi0tCSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAg eyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFs ICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86 IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4K LS0gIGFjX2N2X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnPXllcwotLWVsc2UK LS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAv JyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VP RgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRl c3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29u ZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLS0KLS1pbnQKLS1tYWluICgp Ci0tewotLXN0YXRpYyBzdHJ1Y3QgZWxmX3Byc3RhdHVzMzIgYWNfYWdncjsKLS1pZiAoc2l6ZW9m IGFjX2FnZ3IucHJfcmVnKQotLXJldHVybiAwOwotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9B Q0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19t ZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAy PmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVz dC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRl c3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4m NQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0JIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNf Y193ZXJyb3JfZmxhZyIKLS0JCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKLS0gIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNf dHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8g PSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCi0tCSB7IGFj X3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNf bWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0g IGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMi ID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGFjX2N2X21lbWJlcl9z dHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnPXllcwotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTog ZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0 ID4mNQotLQotLWFjX2N2X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnPW5vCi0t ZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNf ZXh0Ci0tZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC4kYWNfZXh0Ci0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfbWVt YmVyX3N0cnVjdF9lbGZfcHJzdGF0dXMzMl9wcl9yZWciID4mNQotLWVjaG8gIiR7RUNIT19UfSRh Y19jdl9tZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZyIgPiY2Ci0taWYgdGVzdCAk YWNfY3ZfbWVtYmVyX3N0cnVjdF9lbGZfcHJzdGF0dXMzMl9wcl9yZWcgPSB5ZXM7IHRoZW4KLSth Y19mbl9jX2NoZWNrX21lbWJlciAiJExJTkVOTyIgInN0cnVjdCBlbGZfcHJzdGF0dXMzMiIgInBy X3JlZyIgImFjX2N2X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnIiAiI2luY2x1 ZGUgPHN5cy9wcm9jZnMuaD4KLSsiCi0raWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X2Vs Zl9wcnN0YXR1czMyX3ByX3JlZyIgPSB4IiJ5ZXM7IHRoZW4gOgotIAotLWNhdCA+PmNvbmZkZWZz LmggPDxcX0FDRU9GCi0tI2RlZmluZSBIQVZFX0VMRl9QUlNUQVRVUzMyIDEKLS1fQUNFT0YKLSsk YXNfZWNobyAiI2RlZmluZSBIQVZFX0VMRl9QUlNUQVRVUzMyIDEiID4+Y29uZmRlZnMuaAotIAot IGZpCi0gCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlLmFjCisgc3Vi ZGlycz0iJHN1YmRpcnMgZG9jIHRlc3RzdWl0ZSIKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTE1IDAzOjIyOjMxLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTE1IDExOjQ1 OjIwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE1Miw2ICsxNTIsMTk5IEBAIGVsc2UKLSBmaQotIEFD X1NVQlNUKHB5dGhvbmRpcikKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2NvbmZp Z3VyZS5hYwkyMDEwLTA3LTA3IDE5OjM2OjM5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTA3LTEyIDExOjM4OjAyLjAwMDAwMDAw MCArMDIwMAorQEAgLTEwOCw2ICsxMDgsMTk5IEBAIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcmVs b2NhdGVkLXNvdXJjZXMKKyAgICAgICAgICAgICAgIFtSZWxvY2F0ZWQgZGlyZWN0b3J5IGZvciBz b3VyY2UgZmlsZXMuIF0pCisgXSkKICAKICsjIEludGVncmF0aW9uIHdpdGggcnBtIGxpYnJhcnkg dG8gc3VwcG9ydCBtaXNzaW5nIGRlYnVnaW5mbyBzdWdnZXN0aW9ucy4KICsjIC0td2l0aG91dC1y cG06IERpc2FibGUgYW55IHJwbSBzdXBwb3J0LgpAQCAtMTcyMCwxMyArMTQ0NCwxMyBAQCBJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlLmFjCiArICBmaQogK2ZpCiArCi0g CiAgQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKICAKLUluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9hY2luY2x1ZGUubTQKKyAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBh bHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9hY2luY2x1ZGUubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTAxLTA4IDA4OjE2OjQzLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTAxLTE1IDEx OjQ1OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv YWNpbmNsdWRlLm00CTIwMTAtMDUtMjcgMDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAw MDAwMDAwICswMjAwCiBAQCAtMSwzICsxLDUgQEAKICsjIHNlcmlhbCAxCiArCgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUu cGF0Y2gKaW5kZXggNzdiYmM3Zi4uZmYxMzRmMSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBAIC0xLDE5 ICsxLDE4IEBACi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxvdy5jCitJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMC0wMS0wNCAxNTo1Nzo0My4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb3JlbG93LmMJMjAx MC0wMS0xNSAxMToxNDowNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00Niw2ICs0NiwxMCBAQAotICNp bmNsdWRlICJzb2xpYi5oIgorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvY29yZWxv dy5jCTIwMTAtMDUtMTQgMDE6NTM6MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvY29yZWxvdy5jCTIwMTAtMDctMTIgMTE6MDc6MzMuMDAwMDAwMDAwICswMjAw CitAQCAtNDcsNiArNDcsOSBAQAogICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICAjaW5jbHVkZSAi cHJvZ3NwYWNlLmgiCisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiArI2luY2x1ZGUgImF1eHYuaCIK ICsjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgotKyNpbmNsdWRlICJvYmpmaWxlcy5oIgogKyNpbmNs dWRlICJnZGJjbWQuaCIKICAKICAKICAjaWZuZGVmIE9fTEFSR0VGSUxFCi1AQCAtMjkwLDYgKzI5 NCw1MiBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24gCitAQCAtMjg5 LDYgKzI5Miw1MiBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24gCiAg ICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkOwkJCSAvKiBZZXMsIG1ha2UgaXQgY3VycmVudCAqLwog IH0KICAKQEAgLTY2LDcgKzY1LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Nv cmVsb3cuYwogIC8qIFRoaXMgcm91dGluZSBvcGVucyBhbmQgc2V0cyB1cCB0aGUgY29yZSBmaWxl IGJmZC4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBAIC0zODcsNiArNDM3LDEyIEBAIGNvcmVfb3Bl biAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKK0BAIC0zODYsNiArNDM1LDEyIEBAIGNv cmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKICAgIHB1c2hfdGFyZ2V0ICgm Y29yZV9vcHMpOwogICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKICAKQEAgLTc5LDcg Kzc4LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvcmVsb3cuYwogICAgLyog RG8gdGhpcyBiZWZvcmUgYWNrbm93bGVkZ2luZyB0aGUgaW5mZXJpb3IsIHNvIGlmCiAgICAgICBw b3N0X2NyZWF0ZV9pbmZlcmlvciB0aHJvd3MgKGNhbiBoYXBwZW4gZWFzaWxseSBpZiB5b3UncmUg bG9hZGluZwogICAgICAgYSBjb3JlIGZpbGUgd2l0aCB0aGUgd3JvbmcgZXhlYyksIHdlIGFyZW4n dCBsZWZ0IHdpdGggdGhyZWFkcwotQEAgLTkyNSw0ICs5ODEsMTEgQEAgX2luaXRpYWxpemVfY29y ZWxvdyAodm9pZCkKK0BAIC05MjQsNCArOTc5LDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKHZv aWQpCiAgICBpbml0X2NvcmVfb3BzICgpOwogIAogICAgYWRkX3RhcmdldCAoJmNvcmVfb3BzKTsK QEAgLTkxLDExICs5MCwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxv dy5jCiArCQkJICAgTlVMTCwgTlVMTCwgTlVMTCwKICsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0 KTsKICB9Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9jL2dkYi50ZXhpbmZvCitJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0w MS0xNSAwMzoyMzo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLUBA IC0xNDI1OCw2ICsxNDI1OCwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KKy0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA3LTEyIDEwOjU5OjMwLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEwLTA3LTEyIDExOjA1OjU3LjAwMDAwMDAwMCArMDIwMAorQEAgLTE0OTgwLDYgKzE0OTgw LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAKQEAgLTEyMywxMSAr MTIyLDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRleGluZm8K ICBAY2luZGV4IEBjb2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcg bGluayBzZWN0aW9ucwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUg ZXhlY3V0YWJsZSBmaWxlIG5hbWVkCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29s aWItc3ZyNC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc29saWItc3ZyNC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJ MjAxMC0wMS0xNSAwMzoyMjoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9zb2xpYi1zdnI0LmMJMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAK LUBAIC0xMTE2LDkgKzExMTYsNDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKKy0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLTA3LTEyIDEwOjAwOjU2 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3NvbGliLXN2cjQu YwkyMDEwLTA3LTEyIDExOjA1OjU3LjAwMDAwMDAwMCArMDIwMAorQEAgLTExODEsOSArMTE4MSw0 OSBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQogIAkJICAgICBzYWZlX3N0cmVycm9yIChlcnJj b2RlKSk7CiAgCSAgZWxzZQogIAkgICAgewpAQCAtMTgwLDE0ICsxNzksMTQgQEAgSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYwogIAkgICAgfQogIAkgIHhmcmVlIChi dWZmZXIpOwogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYworSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2VsZnJlYWQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTAtMDEtMTUgMDM6MjI6MTMu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCTIw MTAtMDEtMTUgMTE6NDM6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMzYsNiArMzYsMTAgQEAKLSAj aW5jbHVkZSAiZ2RiLXN0YWJzLmgiCi0gI2luY2x1ZGUgImNvbXBsYWludHMuaCIKKy0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDEwOjAwOjU2LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2VsZnJlYWQuYwkyMDEw LTA3LTEyIDExOjMwOjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM4LDYgKzM4LDEwIEBACiAgI2lu Y2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgInBzeW1wcml2LmgiCisgI2luY2x1ZGUgImdk YnR5cGVzLmgiCiArI2luY2x1ZGUgImxpYmJmZC5oIgogKyNpbmNsdWRlICJnZGJjb3JlLmgiCiAr I2luY2x1ZGUgImdkYmNtZC5oIgpAQCAtMTk1LDEwICsxOTQsMTAgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2Vs ZnJlYWQgKHZvaWQpOwogIAotQEAgLTU2Nyw2ICs1NzEsMjAgQEAgZWxmX3N5bXRhYl9yZWFkIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQotIAl9Ci0gICAgIH0KK0BAIC04MTgsMTYgKzgyMiw2NSBA QCByZXNvbHZlX2dudV9pZnVuYyAoY29uc3QgY2hhciAqZnVuY3Rpb25fCisgICByZXR1cm4gMDsK ICB9CisgCiArLyogTG9jYXRlIE5UX0dOVV9CVUlMRF9JRCBhbmQgcmV0dXJuIGl0cyBtYXRjaGlu ZyBkZWJ1ZyBmaWxlbmFtZS4KICsgICBGSVhNRTogTk9URSBkZWNvZGluZyBzaG91bGQgYmUgdW5p ZmllZCB3aXRoIHRoZSBCRkQgY29yZSBub3RlcyBkZWNvZGluZy4gICovCiArCkBAIC0yMTMsMTAg KzIxMiwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiArICBm cHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJWZXJib3NpdHkgbGV2ZWwgb2YgdGhlIGJ1aWxkLWlk IGxvY2F0b3IgaXMgJXMuXG4iKSwKICsJCSAgICB2YWx1ZSk7CiArfQotIAorKwogIHN0cnVjdCBi dWlsZF9pZAogICAgewotQEAgLTU3NCwxMCArNTkyLDQ0IEBAIHN0cnVjdCBidWlsZF9pZAorICAg ICBzaXplX3Qgc2l6ZTsKICAgICAgZ2RiX2J5dGUgZGF0YVsxXTsKICAgIH07CiAgCkBAIC0yNjMs NyArMjYyLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogIHsK ICAgIHN0cnVjdCBidWlsZF9pZCAqcmV0dmFsOwogIAotQEAgLTU5Myw2ICs2NDUsMzQ4IEBAIGJ1 aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKK0BAIC04NDMsNiArODk2LDM0OCBAQCBidWlsZF9p ZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYxMiw3 ICs2MTEsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgLyog UmV0dXJuIGlmIEZJTEVOQU1FIGhhcyBOVF9HTlVfQlVJTERfSUQgbWF0Y2hpbmcgdGhlIENIRUNL IHZhbHVlLiAgKi8KICAKICBzdGF0aWMgaW50Ci1AQCAtNjA3LDcgKzEwMDEsNyBAQCBidWlsZF9p ZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtODU3LDcgKzEyNTIsNyBAQCBi dWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAgICBpZiAoYWJmZCA9PSBO VUxMKQogICAgICByZXR1cm4gMDsKICAKQEAgLTYyMSw3ICs2MjAsNyBAQCBJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgCiAgICBpZiAoZm91bmQgPT0gTlVMTCkKICAg ICAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgaGFzIG5vIGJ1aWxkLWlkLCBmaWxlIHNraXBwZWQi KSwgZmlsZW5hbWUpOwotQEAgLTYyNiwxNCArMTAyMCwxNiBAQCBidWlsZF9pZF92ZXJpZnkgKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtODc0LDE0ICsxMjY5LDE2IEBAIGJ1aWxkX2lkX3Zl cmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHMKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApA QCAtNjQyLDcgKzY0MSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFk LmMKICAKICAgIC8qIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJ TEVfRElSRUNUT1JZIGJlaW5nICIiIHdpbGwKICAgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIg bG9va3Vwcy4gICovCi1AQCAtNjY0LDcgKzEwNjAsMTAgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmls ZW5hbWUgKHN0cnVjdCBidWlsZAorQEAgLTkxMiw3ICsxMzA5LDEwIEBAIGJ1aWxkX2lkX3RvX2Rl YnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKICAJKnMrKyA9ICcvJzsKICAgICAgICB3aGlsZSAo c2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGEr Kyk7CkBAIC02NTQsNyArNjUzLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Vs ZnJlYWQuYwogIAogICAgICAgIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0 aGUgdXN1YWxseSBub24tZXhpc3RlbnQgZmlsZXMuICAqLwogICAgICAgIGlmIChhY2Nlc3MgKGxp bmssIEZfT0spID09IDApCi1AQCAtNjc3LDE3ICsxMDc2LDE4OCBAQCBidWlsZF9pZF90b19kZWJ1 Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtOTI1LDI2ICsxMzI1LDIwMSBAQCBidWlsZF9p ZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCiAgCX0KICAKICAgICAgICBpZiAocmV0 dmFsICE9IE5VTEwpCkBAIC02OTksOSArNjk4LDkgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2VsZnJlYWQuYwogKyAgeGZyZWUgKGxpbmspOwogKyAgeGZyZWUgKGxpbmtfYWxsKTsK ICsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAorKyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCiAr LyogVGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBpcyB1c2VkIG9ubHkgZm9yIHRo ZSBkdXBsaWNpdGUgbWVzc2FnZXMKICsgICAgIFRyeSB0byBpbnN0YWxsIHRoZSBoYXNoIGZpbGUg Li4uCiArICAgYXZvaWRhbmNlLiAgKi8KQEAgLTcyNCw5ICs3MjMsOSBAQCBJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiArCiArICByZXR2YWwgPSBvYnN0YWNrX2FsbG9j ICgmbWlzc2luZ19maWxlcGFpcl9vYnN0YWNrLCBzaXplKTsKICsgIG1lbXNldCAocmV0dmFsLCAw LCBzaXplKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKworICAgcmV0dXJuIHJldHZhbDsKKyB9 CisgCiArc3RhdGljIGhhc2h2YWxfdAogK21pc3NpbmdfZmlsZXBhaXJfaGFzaF9mdW5jIChjb25z dCBzdHJ1Y3QgbWlzc2luZ19maWxlcGFpciAqZWxlbSkKICt7CkBAIC04NDMsMTAgKzg0Miw2IEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKICtmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkJCSAg ICAgY2hhciAqKmJ1aWxkX2lkX2ZpbGVuYW1lX3JldHVybikKICB7Ci0gICBhc2VjdGlvbiAqc2Vj dDsKLSAgIGNoYXIgKmJhc2VuYW1lLCAqbmFtZV9jb3B5LCAqZGVidWdkaXI7Ci1AQCAtNjk5LDEy ICsxMjY5LDE2IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKLSAg IGludCBpOwogICAgc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZDsKICAKIC0gIGJ1aWxkX2lkID0g YnVpbGRfaWRfYmZkX2dldCAob2JqZmlsZS0+b2JmZCk7CkBAIC04NjQsNyArODU5LDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogICAgICAgIHhmcmVlIChidWls ZF9pZCk7CiAgICAgICAgLyogUHJldmVudCBsb29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVnIGZp bGUuICAqLwogICAgICAgIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwgJiYgc3RyY21wIChidWls ZF9pZF9uYW1lLCBvYmpmaWxlLT5uYW1lKSA9PSAwKQotQEAgLTcxNCw3ICsxMjg4LDcgQEAgZmlu ZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgorQEAgLTk1NCw3ICsxNTI5LDcg QEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgogIAkgIHhmcmVlIChi dWlsZF9pZF9uYW1lKTsKICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVM TCkKQEAgLTg3Myw5ICs4NjgsOSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxm cmVhZC5jCiAgICAgIH0KICAgIHJldHVybiBOVUxMOwogIH0KLUBAIC04ODcsOSArMTQ2MSwxMCBA QCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTEzMSw5ICsx NzA2LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAgICAg IGAuZ251X2RlYnVnbGluaycgbWF5IG5vIGxvbmdlciBiZSBwcmVzZW50IHdpdGggYC5ub3RlLmdu dS5idWlsZC1pZCcuICAqLwotICAgZWxzZQorICAgaWYgKCFvYmpmaWxlX2hhc19wYXJ0aWFsX3N5 bWJvbHMgKG9iamZpbGUpKQogICAgICB7CiAtICAgICAgY2hhciAqZGVidWdmaWxlOwogKyAgICAg IGNoYXIgKmRlYnVnZmlsZSwgKmJ1aWxkX2lkX2ZpbGVuYW1lOwpAQCAtODg2LDcgKzg4MSw3IEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKICAKICAgICAgICBpZiAo ZGVidWdmaWxlID09IE5VTEwpCiAgCWRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZV9ieV9kZWJ1Z2xpbmsgKG9iamZpbGUpOwotQEAgLTkwMCw2ICsxNDc1LDEyIEBAIGVsZl9zeW1m aWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKK0BAIC0xMTQ1LDYgKzE3MjEsMTIgQEAg ZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAogIAkgIHN5bWJvbF9maWxl X2FkZF9zZXBhcmF0ZSAoYWJmZCwgc3ltZmlsZV9mbGFncywgb2JqZmlsZSk7CiAgCSAgeGZyZWUg KGRlYnVnZmlsZSk7CiAgCX0KQEAgLTg5OSw3ICs4OTQsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgICAgIH0KICB9CiAgCi1AQCAtMTA3Miw0ICsxNjUzLDE2 IEBAIHZvaWQKK0BAIC0xMzA0LDQgKzE4ODYsMTYgQEAgdm9pZAogIF9pbml0aWFsaXplX2VsZnJl YWQgKHZvaWQpCiAgewogICAgYWRkX3N5bXRhYl9mbnMgKCZlbGZfc3ltX2Zucyk7CkBAIC05MTYs MTMgKzkxMSwxMyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAr CiArICBvYnNlcnZlcl9hdHRhY2hfZXhlY3V0YWJsZV9jaGFuZ2VkIChkZWJ1Z19wcmludF9leGVj dXRhYmxlX2NoYW5nZWQpOwogIH0KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1m aWxlLmgKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTAxLTE1 IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5 bWZpbGUuaAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAotQEAgLTM5Miw2ICsz OTIsMTMgQEAgZXh0ZXJuIGludCBzeW1maWxlX21hcF9vZmZzZXRzX3RvX3NlZ21lbgotIHN0cnVj dCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqZ2V0X3N5bWZpbGVfc2VnbWVudF9kYXRhIChiZmQgKmFi ZmQpOwotIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHN5bWZpbGVfc2Vn bWVudF9kYXRhICpkYXRhKTsKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3N5bWZp bGUuaAkyMDEwLTA1LTA4IDA2OjU4OjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3N5bWZpbGUuaAkyMDEwLTA3LTEyIDExOjA2OjE4LjAwMDAwMDAwMCArMDIw MAorQEAgLTU2Miw2ICs1NjIsMTMgQEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChz dHJ1Y3QgcworIAorIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5jcmVtZW50X3JlYWRpbmdfc3lt dGFiICh2b2lkKTsKICAKICsvKiBidWlsZC1pZCBzdXBwb3J0LiAgKi8KICtzdHJ1Y3QgYnVpbGRf aWQ7CkBAIC05MzQsMTEgKzkyOSwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv c3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKICBleHRlcm4gaW50IGR3YXJm Ml9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMC0wMS0xNSAwMzoyMjoxMy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAJMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjQ4LDYg KzEyNDgsMTYgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDctMTIgMTA6MDA6 NTYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCTIwMTAtMDctMTIgMTE6MDU6NTcuMDAwMDAwMDAwICswMjAwCitAQCAtMTM1 Myw2ICsxMzUzLDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5p bmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtOTU1LDEw ICs5NTAsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAogICAgICByZXR1cm4gMDsKICB9CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJ MjAxMC0wMS0xMiAyMjo0MDoyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMDEtMTUgMTE6MTI6MzMu MDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMDMtMTUgMDQ6NDM6MTMuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4 cAkyMDEwLTA3LTEyIDExOjA1OjU3LjAwMDAwMDAwMCArMDIwMAogQEAgLTIyMSw2ICsyMjEsMTYg QEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9 CkBAIC05NzYsMTMgKzk3MSwxMyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogIAogICAgICBkZXRlY3RfYXN5bmMKICAKLUluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9vYmpmaWxlcy5oCitJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL29iamZpbGVzLmgJMjAxMC0wMS0xNSAxMTox NDo0Mi4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NDAsNiArNDQwLDEwIEBAIHN0cnVjdCBvYmpmaWxl CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTAtMDQtMTQg MTk6MjY6MTEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvb2Jq ZmlsZXMuaAkyMDEwLTA3LTEyIDExOjA3OjA4LjAwMDAwMDAwMCArMDIwMAorQEAgLTQyNiw2ICs0 MjYsMTAgQEAgc3RydWN0IG9iamZpbGUKICAKLSAjZGVmaW5lIE9CSkZfTUFJTiAoMSA8PCA3KQor ICNkZWZpbmUgT0JKRl9VU0VSTE9BREVECSgxIDw8IDMpCS8qIFVzZXIgbG9hZGVkICovCiAgCiAr LyogVGhpcyBmaWxlIHdhcyBsb2FkZWQgYWNjb3JkaW5nIHRvIHRoZSBCVUlMRF9JRF9DT1JFX0xP QURTIHJ1bGVzLiAgKi8KICsKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ6MjI1NzgzLXByZWxpbmst cGF0aC5wYXRjaCBiL2dkYi02LjYtYnoyMjU3ODMtcHJlbGluay1wYXRoLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmM4ODI5Li4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnoy MjU3ODMtcHJlbGluay1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAot aHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjU3 ODMKLQotLS0tIGdkYi02LjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4cC5vcmln CTIwMDgtMDctMTIgMDg6NTY6NDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ByZWxpbmsuZXhwCTIwMDgtMDctMTIgMDg6NTk6NTkuMDAwMDAwMDAw ICswMjAwCi1AQCAtNTUsNyArNTUsNyBAQCBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8kCi0gIyBzaW5nbGUgbmV3IHVucHJlbGlua2VkIGxpYnJhcnkgYWRkcmVzcyB3aXRo b3V0IHdhc3RpbmcgdGhlIGZpcnN0IG9uZS90d28KLSAjIG1lbW9yeSBhcmVhcy4gIFdlIGRvIG5v dCBjYXJlIG9mIHRoZSBlZmZpY2llbmN5IG9mIGxvYWRpbmcgc3VjaCByZXN1bHRpbmcKLSAjIGV4 ZWMtc2hpZWxkIHVuZnJpZW5kbHkgcHJlbGlua2VkIGxpYnJhcnkuCi0taWYge1tjYXRjaCAic3lz dGVtIFwicHJlbGluayAtcU5SIC0tbm8tZXhlYy1zaGllbGQgJHtsaWJmaWxlfVwiIl0gIT0gMH0g ewotK2lmIHtbY2F0Y2ggInN5c3RlbSBcIi91c3Ivc2Jpbi9wcmVsaW5rIC1xTlIgLS1uby1leGVj LXNoaWVsZCAke2xpYmZpbGV9XCIiXSAhPSAwfSB7Ci0gICAgICMgTWF5YmUgd2UgZG9uJ3QgaGF2 ZSBwcmVsaW5rLgotICAgICByZXR1cm4gLTEKLSB9Ci1AQCAtOTYsMTEgKzk2LDExIEBAIGlmIHsg JGZvdW5kID09IDAgIH0gewotICAgICByZXR1cm4gMAotIH0KLSAKLS1pZiB7W2NhdGNoICJzeXN0 ZW0gXCJwcmVsaW5rIC11TiAke2xpYmZpbGV9XCIiXSAhPSAwfSB7Ci0raWYge1tjYXRjaCAic3lz dGVtIFwiL3Vzci9zYmluL3ByZWxpbmsgLXVOICR7bGliZmlsZX1cIiJdICE9IDB9IHsKLSAgICAg dW50ZXN0ZWQgIiR7dGVzdGZpbGV9LnNvIHdhcyBub3QgcHJlbGlua2VkLCBtYXliZSBzeXN0ZW0g bGlicmFyaWVzIGFyZSBub3QgcHJlbGlua2VkPyIKLSAgICAgcmV0dXJuIDAKLSB9Ci0tY2F0Y2gg InN5c3RlbSBcInByZWxpbmsgLXFOUiAtLW5vLWV4ZWMtc2hpZWxkICR7bGliZmlsZX1cIiIKLStj YXRjaCAic3lzdGVtIFwiL3Vzci9zYmluL3ByZWxpbmsgLXFOUiAtLW5vLWV4ZWMtc2hpZWxkICR7 bGliZmlsZX1cIiIKLSAKLSAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIKLSAKCmRpZmYgLS1naXQg YS9nZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2ggYi9nZGItNi42 LWJ6MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2gKaW5kZXggZGUzNGVkNS4uNjg2 YmI5ZCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1iejIyOTUxNy1nY29yZS13aXRob3V0LXRlcm1pbmFs LnBhdGNoCisrKyBiL2dkYi02LjYtYnoyMjk1MTctZ2NvcmUtd2l0aG91dC10ZXJtaW5hbC5wYXRj aApAQCAtNjgsNyArNjgsNyBAQAogK30KIC0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDow MCAtMDAwMAogKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZWJnLmV4cAkyNSBGZWIg MjAwNyAxMjoyMToyMCAtMDAwMAotQEAgLTAsMCArMSwxMjAgQEAKK0BAIC0wLDAgKzEsMTEzIEBA CiArIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CkBAIC05MywxMyArOTMsNiBAQAogKyMgSXQgYWxzbyB0ZXN0cyBhIHJlZ3Jl c3Npb24gd2l0aCBgZ2RiX2djb3JlLnNoJyBiZWluZyBydW4gd2l0aG91dCBpdHMKICsjIGFjY2Vz c2libGUgdGVybWluYWwuCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rCXN0cmFjZSAkdHJh Y2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiAraWYgIVtp bmZvIGV4aXN0cyBHQ09SRV0gewogKyAgICBzZXQgR0NPUkUgIiR7c3JjZGlyfS8uLi9nZGJfZ2Nv cmUuc2giCiArfQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5m by5wYXRjaCBiL2dkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaAppbmRleCAw NzVlMTE4Li42NGJjNjg2IDEwMDY0NAotLS0gYS9nZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0YWNo LWluZm8ucGF0Y2gKKysrIGIvZ2RiLTYuNi1iejIzNTE5Ny1mb3JrLWRldGFjaC1pbmZvLnBhdGNo CkBAIC04Miw3ICs4Miw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmV4cAkyMDEwLTAxLTE1IDAzOjIy OjUyLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw0MyBAQAorQEAgLTAsMCArMSwzNiBAQAog KyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQpAQCAtOTksMTMgKzk5LDYgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5leHAKICsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiArIyBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywgVVNBLgogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNl bGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogK3NldCB0ZXN0 ZmlsZSBmb3JrLWRldGFjaAogK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICtzZXQgYmluZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1n Y29yZTMyLXRlc3QucGF0Y2ggYi9nZGItNi42LWdjb3JlMzItdGVzdC5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggOGU0ZjQ4Zi4uMDAwMDAwMAotLS0gYS9nZGItNi42LWdjb3Jl MzItdGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi1UZXN0IEdDT1JF IG9uIDMyYml0IGluZmVyaW9ycyBvbiA2NGJpdCBwbGF0Zm9ybXMuCi0KLVVOU1VQUE9SVEVEIHJl c3VsdHMgYXJlIHZhbGlkIGZvciBgLW02NCcgb24gMzJiaXQgdGFyZ2V0cy4KLQotCi1JbmRleDog Z2RiLTcuMC41MC4yMDEwMDIwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLmV4cAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAyMDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2djb3JlLmV4cAkyMDEwLTAyLTAxIDE4OjE1OjM2LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjAuNTAuMjAxMDAyMDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS5leHAJMjAxMC0w Mi0wMyAwNjozOTo1NC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yOCw5ICsyOCwxNCBAQCBzZXQgdGVz dGZpbGUgImdjb3JlIgotIHNldCBzcmNmaWxlICAke3Rlc3RmaWxlfS5jCi0gc2V0IGJpbmZpbGUg ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSAKLS1pZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnfV0gIT0gIiIgfSB7Ci0tICAgICB1bnRlc3RlZCBnY29yZS5leHAKLS0gICAgIHJldHVy biAtMQotKyMgYC1zdGF0aWMtbGliZ2NjJyB0byBhdm9pZCBkZXBlbmRlbmN5IG9uIGBsaWJnY2Mu e2kzODYscHBjfScuCi0rZm9yZWFjaCBhZGRpdGlvbmFsX2ZsYWdzIHt7fSB7LW0zMiAtc3RhdGlj LWxpYmdjY30gey1tNjQgLXN0YXRpYy1saWJnY2N9fSB7Ci0rCi0rc2V0IHByZWZpeCAiYXJjaHsk YWRkaXRpb25hbF9mbGFnc306IgotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBh ZGRpdGlvbmFsX2ZsYWdzPSRhZGRpdGlvbmFsX2ZsYWdzXV0gIT0gIiIgfSB7Ci0rICAgICB1bnN1 cHBvcnRlZCAiJHtwcmVmaXh9IGdjb3JlLmV4cCIKLSsgICAgIGNvbnRpbnVlCi0gfQotIAotICMg U3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLUBAIC00NSwyMyArNTAsMjMgQEAgc2VuZF9nZGIgImhl bHAgZ2NvcmVcbiIKLSBnZGJfZXhwZWN0IHsKLSAgICAgLXJlICJVbmRlZmluZWQgY29tbWFuZDog Lmdjb3JlLiokZ2RiX3Byb21wdCAkIiB7Ci0gCSMgZ2NvcmUgY29tbWFuZCBub3Qgc3VwcG9ydGVk IC0tIG5vdGhpbmcgdG8gdGVzdCBoZXJlLgotLQl1bnN1cHBvcnRlZCAiZ2RiIGRvZXMgbm90IHN1 cHBvcnQgZ2NvcmUgb24gdGhpcyB0YXJnZXQiCi0tCXJldHVybiAtMTsKLSsJdW5zdXBwb3J0ZWQg IiR7cHJlZml4fSBnZGIgZG9lcyBub3Qgc3VwcG9ydCBnY29yZSBvbiB0aGlzIHRhcmdldCIKLSsJ Y29udGludWUKLSAgICAgfQotICAgICAtcmUgIlNhdmUgYSBjb3JlIGZpbGUgLiokZ2RiX3Byb21w dCAkIiB7Ci0tCXBhc3MgImhlbHAgZ2NvcmUiCi0rCXBhc3MgIiR7cHJlZml4fSBoZWxwIGdjb3Jl IgotICAgICB9Ci0gICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0tCWZhaWwgImhlbHAgZ2Nv cmUiCi0rCWZhaWwgIiR7cHJlZml4fSBoZWxwIGdjb3JlIgotICAgICB9Ci0gICAgIHRpbWVvdXQg ewotLQlmYWlsICJoZWxwIGdjb3JlICh0aW1lb3V0KSIKLSsJZmFpbCAiJHtwcmVmaXh9IGhlbHAg Z2NvcmUgKHRpbWVvdXQpIgotICAgICB9Ci0gfQotIAotIGlmIHsgISBbIHJ1bnRvX21haW4gXSB9 IHRoZW4gewotLSAgICB1bnRlc3RlZCBnY29yZS5leHAKLS0gICAgcmV0dXJuIC0xCi0rICAgIHVu dGVzdGVkICIke3ByZWZpeH0gZ2NvcmUuZXhwIgotKyAgICBjb250aW51ZQotIH0KLSAKLSBwcm9j IGNhcHR1cmVfY29tbWFuZF9vdXRwdXQgeyBjb21tYW5kIHByZWZpeCB9IHsKLUBAIC02OSw3ICs3 NCw3IEBAIHByb2MgY2FwdHVyZV9jb21tYW5kX291dHB1dCB7IGNvbW1hbmQgcHIKLSAgICAgZ2xv YmFsIGV4cGVjdF9vdXQKLSAKLSAgICAgc2V0IG91dHB1dF9zdHJpbmcgIiIKLS0gICAgZ2RiX3Rl c3RfbXVsdGlwbGUgIiRjb21tYW5kIiAiY2FwdHVyZV9jb21tYW5kX291dHB1dCBmb3IgJGNvbW1h bmQiIHsKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiRjb21tYW5kIiAiJHtwcmVmaXh9IGNhcHR1 cmVfY29tbWFuZF9vdXRwdXQgZm9yICRjb21tYW5kIiB7Ci0gCS1yZSAiJHtjb21tYW5kfVxbXHJc blxdKyR7cHJlZml4fSguKilcW1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7Ci0gCSAgICBzZXQgb3V0 cHV0X3N0cmluZyAkZXhwZWN0X291dCgxLHN0cmluZykKLSAJfQotQEAgLTEwMywyMiArMTA4LDIy IEBAIHNldCBlc2NhcGVkZmlsZW5hbWUgW3N0cmluZ190b19yZWdleHAgJHsKLSAKLSBzZXQgY29y ZV9zdXBwb3J0ZWQgMAotIGdkYl90ZXN0X211bHRpcGxlICJnY29yZSAke29iamRpcn0vJHtzdWJk aXJ9L2djb3JlLnRlc3QiIFwKLS0JInNhdmUgYSBjb3JlZmlsZSIgXAotKwkiJHtwcmVmaXh9IHNh dmUgYSBjb3JlZmlsZSIgXAotIHsKLSAgIC1yZSAiU2F2ZWQgY29yZWZpbGUgJHtlc2NhcGVkZmls ZW5hbWV9XFtcclxuXF0rJGdkYl9wcm9tcHQgJCIgewotLSAgICBwYXNzICJzYXZlIGEgY29yZWZp bGUiCi0rICAgIHBhc3MgIiR7cHJlZml4fSBzYXZlIGEgY29yZWZpbGUiCi0gICAgIGdsb2JhbCBj b3JlX3N1cHBvcnRlZAotICAgICBzZXQgY29yZV9zdXBwb3J0ZWQgMQotICAgfQotICAgLXJlICJD YW4ndCBjcmVhdGUgYSBjb3JlZmlsZVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKLS0gICAgdW5z dXBwb3J0ZWQgInNhdmUgYSBjb3JlZmlsZSIKLSsgICAgdW5zdXBwb3J0ZWQgIiR7cHJlZml4fSBz YXZlIGEgY29yZWZpbGUiCi0gICAgIGdsb2JhbCBjb3JlX3N1cHBvcnRlZAotICAgICBzZXQgY29y ZV9zdXBwb3J0ZWQgMAotICAgfQotIH0KLSAKLSBpZiB7ISRjb3JlX3N1cHBvcnRlZH0gewotLSAg cmV0dXJuIC0xCi0rICAgIGNvbnRpbnVlCi0gfQotIAotICMgTm93IHJlc3RhcnQgZ2RiIGFuZCBs b2FkIHRoZSBjb3JlZmlsZS4KLUBAIC0xMzAsMzEgKzEzNSwzMSBAQCBnZGJfbG9hZCAke2JpbmZp bGV9Ci0gc2VuZF9nZGIgImNvcmUgJHtvYmpkaXJ9LyR7c3ViZGlyfS9nY29yZS50ZXN0XG4iCi0g Z2RiX2V4cGVjdCB7Ci0gICAgIC1yZSAiLiogaXMgbm90IGEgY29yZSBkdW1wOi4qJGdkYl9wcm9t cHQgJCIgewotLQlmYWlsICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSAoYmFkIGZpbGUgZm9y bWF0KSIKLSsJZmFpbCAiJHtwcmVmaXh9IHJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChiYWQg ZmlsZSBmb3JtYXQpIgotIAkjIE5vIHVzZSBwcm9jZWVkaW5nIGZyb20gaGVyZS4KLS0JcmV0dXJu OwkKLSsJY29udGludWUKLSAgICAgfQotICAgICAtcmUgIi4qOiBObyBzdWNoIGZpbGUgb3IgZGly ZWN0b3J5LiokZ2RiX3Byb21wdCAkIiB7Ci0tCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVm aWxlIChmaWxlIG5vdCBmb3VuZCkiCi0rCWZhaWwgIiR7cHJlZml4fSByZS1sb2FkIGdlbmVyYXRl ZCBjb3JlZmlsZSAoZmlsZSBub3QgZm91bmQpIgotIAkjIE5vIHVzZSBwcm9jZWVkaW5nIGZyb20g aGVyZS4KLS0JcmV0dXJuOwkKLSsJY29udGludWUKLSAgICAgfQotICAgICAtcmUgIi4qQ291bGRu J3QgZmluZCAuKiByZWdpc3RlcnMgaW4gY29yZSBmaWxlLiokZ2RiX3Byb21wdCAkIiB7Ci0tCWZh aWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChpbmNvbXBsZXRlIG5vdGUgc2VjdGlvbiki Ci0rCWZhaWwgIiR7cHJlZml4fSByZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSAoaW5jb21wbGV0 ZSBub3RlIHNlY3Rpb24pIgotICAgICB9Ci0gICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5 IC4qJGdkYl9wcm9tcHQgJCIgewotLQlwYXNzICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSIK LSsJcGFzcyAiJHtwcmVmaXh9IHJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIgotICAgICB9Ci0g ICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0tCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNv cmVmaWxlIgotKwlmYWlsICIke3ByZWZpeH0gcmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUiCi0g ICAgIH0KLSAgICAgdGltZW91dCB7Ci0tCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxl ICh0aW1lb3V0KSIKLSsJZmFpbCAiJHtwcmVmaXh9IHJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxl ICh0aW1lb3V0KSIKLSAgICAgfQotIH0KLSAKLSBzZW5kX2dkYiAid2hlcmVcbiIKLS1nZGJfZXhw ZWN0X2xpc3QgIndoZXJlIGluIGNvcmVmaWxlIiAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rZ2RiX2V4 cGVjdF9saXN0ICIke3ByZWZpeH0gd2hlcmUgaW4gY29yZWZpbGUiICIuKiRnZGJfcHJvbXB0ICQi IHsKLSAgICAgIi4qXFtcclxuXF0rIzAgLiogdGVybWluYWxfZnVuYyBcXChcXCkgYXQgIgotICAg ICAiLipcW1xyXG5cXSsjMSAuKiBhcnJheV9mdW5jIFxcKFxcKSBhdCAiCi0gICAgICIuKlxbXHJc blxdKyMyIC4qIGZhY3RvcmlhbF9mdW5jIFxcKHZhbHVlPTFcXCkgYXQgIgotQEAgLTE2OCw2MSAr MTczLDY0IEBAIGdkYl9leHBlY3RfbGlzdCAid2hlcmUgaW4gY29yZWZpbGUiICIuKiQKLSAKLSBz ZXQgcG9zdF9jb3JlZmlsZV9yZWdzIFtjYXB0dXJlX2NvbW1hbmRfb3V0cHV0ICJpbmZvIHJlZ2lz dGVycyIgIiJdCi0gaWYgIVtzdHJpbmcgY29tcGFyZSAkcHJlX2NvcmVmaWxlX3JlZ3MgJHBvc3Rf Y29yZWZpbGVfcmVnc10gdGhlbiB7Ci0tICAgIHBhc3MgImNvcmVmaWxlIHJlc3RvcmVkIGdlbmVy YWwgcmVnaXN0ZXJzIgotKyAgICBwYXNzICIke3ByZWZpeH0gY29yZWZpbGUgcmVzdG9yZWQgZ2Vu ZXJhbCByZWdpc3RlcnMiCi0gfSBlbHNlIHsKLS0gICAgZmFpbCAiY29yZWZpbGUgcmVzdG9yZWQg Z2VuZXJhbCByZWdpc3RlcnMiCi0rICAgIGZhaWwgIiR7cHJlZml4fSBjb3JlZmlsZSByZXN0b3Jl ZCBnZW5lcmFsIHJlZ2lzdGVycyIKLSB9Ci0gCi0gc2V0IHBvc3RfY29yZWZpbGVfYWxscmVncyBb Y2FwdHVyZV9jb21tYW5kX291dHB1dCAiaW5mbyBhbGwtcmVnIiAiIl0KLSBpZiAhW3N0cmluZyBj b21wYXJlICRwcmVfY29yZWZpbGVfYWxscmVncyAkcG9zdF9jb3JlZmlsZV9hbGxyZWdzXSB0aGVu IHsKLS0gICAgcGFzcyAiY29yZWZpbGUgcmVzdG9yZWQgYWxsIHJlZ2lzdGVycyIKLSsgICAgcGFz cyAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGFsbCByZWdpc3RlcnMiCi0gfSBlbHNlIHsK LS0gICAgZmFpbCAiY29yZWZpbGUgcmVzdG9yZWQgYWxsIHJlZ2lzdGVycyIKLSsgICAgZmFpbCAi JHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGFsbCByZWdpc3RlcnMiCi0gfQotIAotIHNldCBw b3N0X2NvcmVmaWxlX2V4dGVybl9hcnJheSBcCi0gCVtjYXB0dXJlX2NvbW1hbmRfb3V0cHV0ICJw cmludCBleHRlcm5fYXJyYXkiICIkcHJpbnRfcHJlZml4Il0KLSBpZiAhW3N0cmluZyBjb21wYXJl ICRwcmVfY29yZWZpbGVfZXh0ZXJuX2FycmF5ICRwb3N0X2NvcmVmaWxlX2V4dGVybl9hcnJheV0g IHsKLS0gICAgcGFzcyAiY29yZWZpbGUgcmVzdG9yZWQgZXh0ZXJuIGFycmF5IgotKyAgICBwYXNz ICIke3ByZWZpeH0gY29yZWZpbGUgcmVzdG9yZWQgZXh0ZXJuIGFycmF5IgotIH0gZWxzZSB7Ci0t ICAgIGZhaWwgImNvcmVmaWxlIHJlc3RvcmVkIGV4dGVybiBhcnJheSIKLSsgICAgZmFpbCAiJHtw cmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGV4dGVybiBhcnJheSIKLSB9Ci0gCi0gc2V0IHBvc3Rf Y29yZWZpbGVfc3RhdGljX2FycmF5IFwKLSAJW2NhcHR1cmVfY29tbWFuZF9vdXRwdXQgInByaW50 IHN0YXRpY19hcnJheSIgIiRwcmludF9wcmVmaXgiXQotIGlmICFbc3RyaW5nIGNvbXBhcmUgJHBy ZV9jb3JlZmlsZV9zdGF0aWNfYXJyYXkgJHBvc3RfY29yZWZpbGVfc3RhdGljX2FycmF5XSAgewot LSAgICBwYXNzICJjb3JlZmlsZSByZXN0b3JlZCBzdGF0aWMgYXJyYXkiCi0rICAgIHBhc3MgIiR7 cHJlZml4fSBjb3JlZmlsZSByZXN0b3JlZCBzdGF0aWMgYXJyYXkiCi0gfSBlbHNlIHsKLS0gICAg ZmFpbCAiY29yZWZpbGUgcmVzdG9yZWQgc3RhdGljIGFycmF5IgotKyAgICBmYWlsICIke3ByZWZp eH0gY29yZWZpbGUgcmVzdG9yZWQgc3RhdGljIGFycmF5IgotIH0KLSAKLSBzZXQgcG9zdF9jb3Jl ZmlsZV91bmluaXRfYXJyYXkgXAotIAlbY2FwdHVyZV9jb21tYW5kX291dHB1dCAicHJpbnQgdW5f aW5pdGlhbGl6ZWRfYXJyYXkiICIkcHJpbnRfcHJlZml4Il0KLSBpZiAhW3N0cmluZyBjb21wYXJl ICRwcmVfY29yZWZpbGVfdW5pbml0X2FycmF5ICRwb3N0X2NvcmVmaWxlX3VuaW5pdF9hcnJheV0g IHsKLS0gICAgcGFzcyAiY29yZWZpbGUgcmVzdG9yZWQgdW4taW5pdGlhbGl6ZWQgYXJyYXkiCi0r ICAgIHBhc3MgIiR7cHJlZml4fSBjb3JlZmlsZSByZXN0b3JlZCB1bi1pbml0aWFsaXplZCBhcnJh eSIKLSB9IGVsc2UgewotLSAgICBmYWlsICJjb3JlZmlsZSByZXN0b3JlZCB1bi1pbml0aWFsaXpl ZCBhcnJheSIKLSsgICAgZmFpbCAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIHVuLWluaXRp YWxpemVkIGFycmF5IgotIH0KLSAKLSBzZXQgcG9zdF9jb3JlZmlsZV9oZWFwX3N0cmluZyBcCi0g CVtjYXB0dXJlX2NvbW1hbmRfb3V0cHV0ICJwcmludCBoZWFwX3N0cmluZyIgIiRwcmludF9wcmVm aXgiXQotIGlmICFbc3RyaW5nIGNvbXBhcmUgJHByZV9jb3JlZmlsZV9oZWFwX3N0cmluZyAkcG9z dF9jb3JlZmlsZV9oZWFwX3N0cmluZ10gIHsKLS0gICAgcGFzcyAiY29yZWZpbGUgcmVzdG9yZWQg aGVhcCBhcnJheSIKLSsgICAgcGFzcyAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGhlYXAg YXJyYXkiCi0gfSBlbHNlIHsKLS0gICAgZmFpbCAiY29yZWZpbGUgcmVzdG9yZWQgaGVhcCBhcnJh eSIKLSsgICAgZmFpbCAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGhlYXAgYXJyYXkiCi0g fQotIAotIHNldCBwb3N0X2NvcmVmaWxlX2xvY2FsX2FycmF5IFwKLSAJW2NhcHR1cmVfY29tbWFu ZF9vdXRwdXQgInByaW50IGFycmF5X2Z1bmM6OmxvY2FsX2FycmF5IiAiJHByaW50X3ByZWZpeCJd Ci0gaWYgIVtzdHJpbmcgY29tcGFyZSAkcHJlX2NvcmVmaWxlX2xvY2FsX2FycmF5ICRwb3N0X2Nv cmVmaWxlX2xvY2FsX2FycmF5XSAgewotLSAgICBwYXNzICJjb3JlZmlsZSByZXN0b3JlZCBzdGFj ayBhcnJheSIKLSsgICAgcGFzcyAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIHN0YWNrIGFy cmF5IgotIH0gZWxzZSB7Ci0tICAgIGZhaWwgImNvcmVmaWxlIHJlc3RvcmVkIHN0YWNrIGFycmF5 IgotKyAgICBmYWlsICIke3ByZWZpeH0gY29yZWZpbGUgcmVzdG9yZWQgc3RhY2sgYXJyYXkiCi0g fQotIAotIHNldCBwb3N0X2NvcmVmaWxlX2JhY2t0cmFjZSBbY2FwdHVyZV9jb21tYW5kX291dHB1 dCAiYmFja3RyYWNlIiAiIl0KLSBpZiAhW3N0cmluZyBjb21wYXJlICRwcmVfY29yZWZpbGVfYmFj a3RyYWNlICRwb3N0X2NvcmVmaWxlX2JhY2t0cmFjZV0gIHsKLS0gICAgcGFzcyAiY29yZWZpbGUg cmVzdG9yZWQgYmFja3RyYWNlIgotKyAgICBwYXNzICIke3ByZWZpeH0gY29yZWZpbGUgcmVzdG9y ZWQgYmFja3RyYWNlIgotIH0gZWxzZSB7Ci0tICAgIGZhaWwgImNvcmVmaWxlIHJlc3RvcmVkIGJh Y2t0cmFjZSIKLSsgICAgZmFpbCAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGJhY2t0cmFj ZSIKLSt9Ci0rCi0rIyAkYWRkaXRpb25hbF9mbGFnczoKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYu Ni1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2ggYi9nZGItNi42LXNjaGVk dWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaAppbmRleCA0NGUwMzE0Li40MjgxMDJj IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5w YXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRj aApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9pbmZydW4u YworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2luZnJ1bi5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTYuOC41MC4yMDA5MDgxMS5vcmlnL2dkYi9pbmZydW4uYwkyMDA5LTA4LTEyIDA2OjU2 OjI5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2luZnJ1bi5j CTIwMDktMDgtMTIgMDc6MTM6MDguMDAwMDAwMDAwICswMjAwCi1AQCAtMTA3NSw3ICsxMDc1LDcg QEAgc3RhdGljIGNvbnN0IGNoYXIgKnNjaGVkdWxlcl9lbnVtc1tdID0geworLS0tIGdkYi03LjEu OTAuMjAxMDA3MTEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0wNy0xMiAxMDowNToyNi4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwkyMDEwLTA3LTEy IDEwOjU4OjU2LjAwMDAwMDAwMCArMDIwMAorQEAgLTE0OTEsNyArMTQ5MSw3IEBAIHN0YXRpYyBj b25zdCBjaGFyICpzY2hlZHVsZXJfZW51bXNbXSA9IHsKICAgIHNjaGVkbG9ja19zdGVwLAogICAg TlVMTAogIH07CkBAIC0xMSwxMCArMTEsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEv Z2RiL2luZnJ1bi5jCiAgc3RhdGljIHZvaWQKICBzaG93X3NjaGVkdWxlcl9tb2RlIChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogIAkJICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgxMS9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29s ZS5leHAJMjAwOS0wOC0xMiAwNjo1NjoyOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUw LjIwMDkwODExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMDktMDgtMTIg MDY6NTg6NDUuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDMuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taS1jb25zb2xlLmV4cAkyMDEwLTA3LTEyIDEwOjU4OjU2LjAwMDAwMDAwMCArMDIwMAogQEAg LTQ3LDYgKzQ3LDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9Lwog IAogIG1pX3J1bl90b19tYWluCkBAIC0yNSwxMCArMjUsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAu MjAwOTA4MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKICAjIE5leHQgb3Zl ciB0aGUgaGVsbG8oKSBjYWxsIHdoaWNoIHdpbGwgcHJvZHVjZSBsb3RzIG9mIG91dHB1dAogIG1p X2dkYl90ZXN0ICIyMjAtZXhlYy1uZXh0IiBcCiAgCSAgICAiMjIwXFxecnVubmluZyhcclxuXFwq cnVubmluZyx0aHJlYWQtaWQ9XCJhbGxcIik/IiBcCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgx MS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAKK0luZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTIt Y29uc29sZS5leHAJMjAwOS0wOC0xMiAwNjo1NjoyOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ni44LjUwLjIwMDkwODExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4cAkyMDA5 LTA4LTEyIDA2OjU4OjQ1LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJMjAxMC0wNS0yNiAyMDox MjoxMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4cAkyMDEwLTA3LTEyIDEwOjU5OjE0LjAwMDAwMDAwMCAr MDIwMAogQEAgLTQ3LDYgKzQ3LDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LwogIAogIG1pX3J1bl90b19tYWluCkBAIC0zNywxMyArMzcsMTMgQEAgSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA4MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCiAr bWlfZ2RiX3Rlc3QgIjIxMC1nZGItc2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIgIjIxMFxcXmRv bmUiICJzZXQgc2NoZWR1bGVyLWxvY2tpbmcgb2ZmIgogKwogICMgTmV4dCBvdmVyIHRoZSBoZWxs bygpIGNhbGwgd2hpY2ggd2lsbCBwcm9kdWNlIGxvdHMgb2Ygb3V0cHV0Ci0gc2VuZF9nZGIgIjIy MC1leGVjLW5leHRcbiIKLSBnZGJfZXhwZWN0IHsKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODEx L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAKKyBnZGJfdGVzdF9tdWx0aXBsZSAiMjIw LWV4ZWMtbmV4dCIgIlN0YXJ0ZWQgc3RlcCBvdmVyIGhlbGxvIiB7CisgICAgIC1yZSAiMjIwXFxe cnVubmluZ1xyXG4oXFwqcnVubmluZyx0aHJlYWQtaWQ9XCJhbGxcIlxyXG4pPyRtaV9nZGJfcHJv bXB0IiB7CitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aS1jbGkuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgxMS5vcmlnL2dkYi90 ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJMjAwOS0wNi0wOSAxOToxMjo0Mi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNs aS5leHAJMjAwOS0wOC0xMiAwNzoxMzozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNzMsNyArMTcz LDcgQEAgbWlfZXhlY3V0ZV90byAiZXhlYy1jb250aW51ZSIgImJyZWFrcG9pbgorLS0tIGdkYi03 LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTAt MDEtMTkgMDk6MDA6MzkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTAtMDctMTIgMTA6NTg6NTYuMDAwMDAw MDAwICswMjAwCitAQCAtMTc2LDcgKzE3Niw3IEBAIG1pX2V4ZWN1dGVfdG8gImV4ZWMtY29udGlu dWUiICJicmVha3BvaW4KICAjIFRlc3QgdGhhdCB0aGUgdG9rZW4gaXMgb3V0cHV0IGV2ZW4gZm9y IENMSSBjb21tYW5kcwogICMgQWxzbyB0ZXN0IHRoYXQgKnN0b3BwZWQgaW5jbHVkZXMgZnJhbWUg aW5mb3JtYXRpb24uCiAgbWlfZ2RiX3Rlc3QgIjM0IG5leHQiIFwKCmRpZmYgLS1naXQgYS9nZGIt Ni42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoIGIvZ2RiLTYu Ni1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAppbmRleCA0ODcz NjA4Li4wZWI4YTQ0IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAt c3ctd2F0Y2hwb2ludHMyLnBhdGNoCisrKyBiL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3Rl cC1zdy13YXRjaHBvaW50czIucGF0Y2gKQEAgLTIxLDExICsyMSwxMSBAQAogCiAJUG9ydCB0byBH REItNi44cHJlLgogCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mZXJpb3IuaAor SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2luZmVyaW9yLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0wMS0xNSAwMzox Njo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZlcmlv ci5oCTIwMTAtMDEtMTUgMDM6MTc6MDcuMDAwMDAwMDAwICswMTAwCi1AQCAtMTg4LDcgKzE4OCwx NSBAQCBleHRlcm4gdm9pZCByZW9wZW5fZXhlY19maWxlICh2b2lkKTsKKy0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZlcmlvci5oCTIwMTAtMDct MTIgMTA6MDQ6MjUuMDAwMDAwMDAwICswMjAwCitAQCAtMTk4LDcgKzE5OCwxNSBAQCBleHRlcm4g dm9pZCByZW9wZW5fZXhlY19maWxlICh2b2lkKTsKICAvKiBUaGUgYHJlc3VtZScgcm91dGluZSBz aG91bGQgb25seSBiZSBjYWxsZWQgaW4gc3BlY2lhbCBjaXJjdW1zdGFuY2VzLgogICAgIE5vcm1h bGx5LCB1c2UgYHByb2NlZWQnLCB3aGljaCBoYW5kbGVzIGEgbG90IG9mIGJvb2trZWVwaW5nLiAg Ki8KICAKQEAgLTQyLDExICs0MiwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv aW5mZXJpb3IuaAogIAogIC8qIEZyb20gbWlzYyBmaWxlcyAqLwogIAotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2luZnJ1bi5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv aW5mcnVuLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2lu ZnJ1bi5jCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvaW5mcnVuLmMJMjAxMC0wMS0xNSAwMzoxNzozMi4wMDAwMDAwMDAgKzAx MDAKLUBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQpOworLS0t IGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0wNy0xMiAxMDowMDo1 Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwky MDEwLTA3LTEyIDEwOjA1OjI2LjAwMDAwMDAwMCArMDIwMAorQEAgLTc2LDcgKzc2LDcgQEAgc3Rh dGljIGludCBmb2xsb3dfZm9yayAodm9pZCk7CiAgc3RhdGljIHZvaWQgc2V0X3NjaGVkbG9ja19m dW5jIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksCiAgCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpjKTsKICAKQEAgLTU1LDcgKzU1LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2luZnJ1bi5jCiAgCiAgc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGlu Z19jYWxsYmFjayAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpkYXRh KTsKLUBAIC0xMzYzLDcgKzEzNjMsNyBAQCBtYXliZV9zb2Z0d2FyZV9zaW5nbGVzdGVwIChzdHJ1 Y3QgZ2RiYXJjCitAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgbWF5YmVfc29mdHdhcmVfc2luZ2xlc3Rl cCAoc3RydWN0IGdkYmFyYwogICAgIFNURVAgbm9uemVybyBpZiB3ZSBzaG91bGQgc3RlcCAoemVy byB0byBjb250aW51ZSBpbnN0ZWFkKS4KICAgICBTSUcgaXMgdGhlIHNpZ25hbCB0byBnaXZlIHRo ZSBpbmZlcmlvciAoemVybyBmb3Igbm9uZSkuICAqLwogIHZvaWQKQEAgLTY0LDcgKzY0LDcgQEAg SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZnJ1bi5jCiAgewogICAgaW50IHNob3Vs ZF9yZXN1bWUgPSAxOwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwcyA9IG1ha2VfY2xl YW51cCAocmVzdW1lX2NsZWFudXBzLCAwKTsKLUBAIC0xMzc2LDEwICsxMzc2LDEyIEBAIHJlc3Vt ZSAoaW50IHN0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcKK0BAIC0xNTYyLDEwICsxNTYyLDEy IEBAIHJlc3VtZSAoaW50IHN0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcKICAgIFFVSVQ7CiAg CiAgICBpZiAoZGVidWdfaW5mcnVuKQpAQCAtNzksOSArNzksOSBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvaW5mcnVuLmMKICsJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiAiUkVTVU1FX1NURVBfTkVFREVEIikpLAogKwkJCXNpZywgdHAtPnRyYXBfZXhwZWN0ZWQpOwog IAotICAgLyogU29tZSB0YXJnZXRzIChlLmcuIFNvbGFyaXMgeDg2KSBoYXZlIGEga2VybmVsIGJ1 ZyB3aGVuIHN0ZXBwaW5nCi0gICAgICBvdmVyIGFuIGluc3RydWN0aW9uIHRoYXQgY2F1c2VzIGEg cGFnZSBmYXVsdCB3aXRob3V0IHRyaWdnZXJpbmcKLUBAIC0xNTAxLDkgKzE1MDMsMTAgQEAgYSBj b21tYW5kIGxpa2UgYHJldHVybicgb3IgYGp1bXAnIHRvIGNvbgorICAgLyogTm9ybWFsbHksIGJ5 IHRoZSB0aW1lIHdlIHJlYWNoIGByZXN1bWUnLCB0aGUgYnJlYWtwb2ludHMgYXJlIGVpdGhlcgor ICAgICAgcmVtb3ZlZCBvciBpbnNlcnRlZCwgYXMgYXBwcm9wcmlhdGUuICBUaGUgZXhjZXB0aW9u IGlzIGlmIHdlJ3JlIHNpdHRpbmcKK0BAIC0xNjc4LDkgKzE2ODAsMTAgQEAgYSBjb21tYW5kIGxp a2UgYHJldHVybicgb3IgYGp1bXAnIHRvIGNvbgogIAkgICAgIGluZGl2aWR1YWxseS4gICovCiAg CSAgcmVzdW1lX3B0aWQgPSBpbmZlcmlvcl9wdGlkOwogIAl9CkBAIC05NCw3ICs5NCw3IEBAIElu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZydW4uYwogIAl7CiAgCSAgLyogVXNlci1z ZXR0YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gKi8K ICAJICByZXN1bWVfcHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtMTcwOSw3ICsxNzEyLDcgQEAg cHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE4ODksNyArMTg5 Miw3IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdHA7CiAgICBDT1JFX0FERFIgcGM7CiAgICBzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqYXNwYWNlOwpAQCAtMTAzLDcgKzEwMyw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9pbmZydW4uYwogIAogICAgLyogSWYgd2UncmUgc3RvcHBlZCBhdCBhIGZvcmsvdmZv cmssIGZvbGxvdyB0aGUgYnJhbmNoIHNldCBieSB0aGUKICAgICAgICJzZXQgZm9sbG93LWZvcmst bW9kZSIgY29tbWFuZDsgb3RoZXJ3aXNlLCB3ZSdsbCBqdXN0IHByb2NlZWQKLUBAIC0xNzQ0LDEz ICsxNzQ3LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BA IC0xOTI0LDEzICsxOTI3LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdl dF9zaWcKICAJICAgYWN0dWFsbHkgYmUgZXhlY3V0aW5nIHRoZSBicmVha3BvaW50IGluc24gYW55 d2F5LgogIAkgICBXZSdsbCBiZSAodW4tKWV4ZWN1dGluZyB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rp b24uICAqLwogIApAQCAtMTE5LDcgKzExOSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9pbmZydW4uYwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKLUBAIC0xNzgxLDEzICsxNzg0 LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0xOTcx LDEzICsxOTc0LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcK ICAJIGlzIHJlcXVpcmVkIGl0IHJldHVybnMgVFJVRSBhbmQgc2V0cyB0aGUgY3VycmVudCB0aHJl YWQgdG8KICAJIHRoZSBvbGQgdGhyZWFkLiAqLwogICAgICAgIGlmIChwcmVwYXJlX3RvX3Byb2Nl ZWQgKHN0ZXApKQpAQCAtMTM1LDcgKzEzNSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9pbmZydW4uYwogICAgICB7CiAgICAgICAgdHAtPnRyYXBfZXhwZWN0ZWQgPSAxOwogICAg ICAgIC8qIElmIGRpc3BsYWNlZCBzdGVwcGluZyBpcyBlbmFibGVkLCB3ZSBjYW4gc3RlcCBvdmVy IHRoZQotQEAgLTE4NzMsOCArMTg3NiwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51 bSB0YXJnZXRfc2lnCitAQCAtMjA2NCw4ICsyMDY3LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBh ZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIC8qIFJlc2V0IHRvIG5vcm1hbCBzdGF0ZS4gICovCiAg ICBpbml0X2luZndhaXRfc3RhdGUgKCk7CiAgCkBAIC0xNTAsNyArMTUwLDcgQEAgSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBXYWl0IGZvciBpdCB0byBz dG9wIChpZiBub3Qgc3RhbmRhbG9uZSkKICAgICAgIGFuZCBpbiBhbnkgY2FzZSBkZWNvZGUgd2h5 IGl0IHN0b3BwZWQsIGFuZCBhY3QgYWNjb3JkaW5nbHkuICAqLwotQEAgLTQ2NTUsMTMgKzQ2NjMs MTggQEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAorQEAgLTQ5MDMs MTMgKzQ5MTEsMTggQEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAog IAogIC8qIElzIHRocmVhZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNpbmdsZS1zdGVwcGluZz8gICov CiAgCkBAIC0xNzQsMTEgKzE3NCwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv aW5mcnVuLmMKICB9CiAgCiAgLyogUmV0dXJucyB0cnVlIGlmIGFueSB0aHJlYWQgKmJ1dCogdGhl IG9uZSBwYXNzZWQgaW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgt bmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4 LW5hdC5jCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoxNzowNy4wMDAwMDAwMDAg KzAxMDAKLUBAIC0yODgzLDcgKzI4ODMsMTAgQEAgY291bnRfZXZlbnRzX2NhbGxiYWNrIChzdHJ1 Y3QgbHdwX2luZm8gKgorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvbGludXgtbmF0 LmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9saW51eC1uYXQuYwkyMDEwLTA3LTEyIDEwOjA0OjI1LjAwMDAwMDAwMCArMDIw MAorQEAgLTI4MjcsNyArMjgyNywxMCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBs d3BfaW5mbyAqCiAgc3RhdGljIGludAogIHNlbGVjdF9zaW5nbGVzdGVwX2x3cF9jYWxsYmFjayAo c3RydWN0IGx3cF9pbmZvICpscCwgdm9pZCAqZGF0YSkKICB7CkBAIC0xOTAsMTAgKzE5MCwxMCBA QCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKICAgICAgcmV0dXJu IDE7CiAgICBlbHNlCiAgICAgIHJldHVybiAwOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2xpbnV4LW5hdC5oCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0 LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5h dC5oCTIwMTAtMDEtMTIgMjI6NDA6MjQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvbGludXgtbmF0LmgJMjAxMC0wMS0xNSAwMzoxNzowNy4wMDAwMDAwMDAgKzAx MDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDYt MTEgMTQ6MTA6MTIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv bGludXgtbmF0LmgJMjAxMC0wNy0xMiAxMDowNDoyNS4wMDAwMDAwMDAgKzAyMDAKIEBAIC01NSw4 ICs1NSw4IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyogSWYgbm9uLXplcm8sIGEgcGVuZGluZyB3 YWl0IHN0YXR1cy4gICovCiAgICBpbnQgc3RhdHVzOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtdGhy ZWFkcy1zdGF0aWMtdGVzdC5wYXRjaCBiL2dkYi02LjYtdGhyZWFkcy1zdGF0aWMtdGVzdC5wYXRj aAppbmRleCBlODc0MWE4Li4yYmFjNzIyIDEwMDY0NAotLS0gYS9nZGItNi42LXRocmVhZHMtc3Rh dGljLXRlc3QucGF0Y2gKKysrIGIvZ2RiLTYuNi10aHJlYWRzLXN0YXRpYy10ZXN0LnBhdGNoCkBA IC0xLDEwICsxLDExIEBACi0tLS0gZ2RiLTYuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0 YXRpY3RocmVhZHMuZXhwLW9yaWcJMjAwNS0wNC0zMCAyMTo1Njo0Ny4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNi42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHAJ MjAwOC0wMS0xMSAxNDozMDoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NCw5ICs0NCwyMSBAQCBn ZGJfbG9hZCAke2JpbmZpbGV9Ci0gZ2RiX3Rlc3QgInNldCBwcmludCBzZXZlbmJpdC1zdHJpbmdz IiAiIgotIAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9zdGF0aWN0aHJlYWRzLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3 MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMuZXhwCTIwMTAt MDYtMDIgMjM6NTM6MjguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMuZXhwCTIwMTAtMDctMTIgMTE6 NDM6MjYuMDAwMDAwMDAwICswMjAwCitAQCAtNDQsNiArNDQsMTggQEAgZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgcHJpbnQgc2V2ZW5iaXQtcworICMgU2VlIGlmIHRoZSBzdGF0aWMgbXVsdGktdGhy ZWFkZWQgcHJvZ3JhbSBydW5zLgogIAotK3J1bnRvX21haW4KKyBydW50b19tYWluCiArCiArIyBT ZWUgaWYgd2UgZ2V0IGV4Y2Vzc2l2ZSBMV1AgdGhlcmUgKHBhdGNoZWQgZ2xpYmMgd2l0aCB1bnBh dGNoZWQgR0RCKToKICsjICogMiBUaHJlYWQgMTM1NjYxNjY0IChMV1AgMzg1NikgIG1haW4gKCkg YXQgdGhyZWFkbG9vcC5jOjQxCkBAIC0xNyw5ICsxOCw2IEBACiArICAgIH0KICt9CiArCi0gIyBT ZWUgaWYgdGhlIHN0YXRpYyBtdWx0aS10aHJlYWRlZCBwcm9ncmFtIHJ1bnMuCi0gCi0tcnVudG9f bWFpbgogIGdkYl90ZXN0ICJicmVhayBzZW1fcG9zdCIKICBzZXQgdGVzdCAiQ29udGludWUgdG8g bWFpbidzIGNhbGwgb2Ygc2VtX3Bvc3QiCiAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAi JHRlc3QiIHsKCmRpZmYgLS1naXQgYS9nZGItNi43LWJ6NDI2NjAwLURXX1RBR19pbnRlcmZhY2Vf dHlwZS10ZXN0LnBhdGNoIGIvZ2RiLTYuNy1iejQyNjYwMC1EV19UQUdfaW50ZXJmYWNlX3R5cGUt dGVzdC5wYXRjaAppbmRleCAyZTM0NGNhLi45ZGM4YTdiIDEwMDY0NAotLS0gYS9nZGItNi43LWJ6 NDI2NjAwLURXX1RBR19pbnRlcmZhY2VfdHlwZS10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjctYno0 MjY2MDAtRFdfVEFHX2ludGVyZmFjZV90eXBlLXRlc3QucGF0Y2gKQEAgLTY0MSw3ICs2NDEsNyBA QCBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwNy0xMi9tc2cwMDM5Ny5o dG1sCiArCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKIC0tLSAvZGV2L251 bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC9pMzg2LWludGVyZmFjZS5leHAJMjIgRGVjIDIwMDcgMTk6MDc6MjggLTAwMDAKLUBAIC0wLDAg KzEsNjYgQEAKK0BAIC0wLDAgKzEsNTkgQEAKICsjIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTY2NSwxMyArNjY1LDYg QEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDctMTIvbXNnMDAzOTcu aHRtbAogKyMgVGVzdCBiYXNpcyByZWNvZ25pemF0aW9uIG9mIERXX1RBR19pbnRlcmZhY2VfdHlw ZS4KICsjIEdDQyBqYXZhX2NsYXNzaWZ5X3JlY29yZCgpIHByb2R1Y2VzIGl0IGlmIHJldHVybnMg UkVDT1JEX0lTX0lOVEVSRkFDRS4KICsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAk dHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiAraWYg eyFbaXN0YXJnZXQgImk/ODYtKi0qIl0gJiYgIVtpc3RhcmdldCAieDg2XzY0LSotKiJdfSB0aGVu IHsKICsgICAgdmVyYm9zZSAiU2tpcHBpbmcgaTM4NiBKYXZhIERXX1RBR19pbnRlcmZhY2VfdHlw ZSB0ZXN0LiIKICsgICAgcmV0dXJuCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy1jaGFyc2lnbi10ZXN0 LnBhdGNoIGIvZ2RiLTYuNy1jaGFyc2lnbi10ZXN0LnBhdGNoCmluZGV4IDJlMjg5YWMuLjc5M2Zm OGEgMTAwNjQ0Ci0tLSBhL2dkYi02LjctY2hhcnNpZ24tdGVzdC5wYXRjaAorKysgYi9nZGItNi43 LWNoYXJzaWduLXRlc3QucGF0Y2gKQEAgLTUyLDcgKzUyLDcgQEAgaHR0cHM6Ly9idWd6aWxsYS5y ZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjQxMjgKICtjaGFyX3UgdV90eXBl ZFtdPSJBIjsKIC0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysrIC4v Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jaGFyc2lnbi5leHAJMjYgSmFuIDIwMDcgMTA6MzI6MDAg LTAwMDAKLUBAIC0wLDAgKzEsNzAgQEAKK0BAIC0wLDAgKzEsNjMgQEAKICsjIENvcHlyaWdodCAy MDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAg LTY5LDEzICs2OSw2IEBAIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93 X2J1Zy5jZ2k/aWQ9MjI0MTI4CiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAogKwotK2lm ICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0 IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogK3NldCB0ZXN0ZmlsZSBjaGFyc2lnbgogK3Nl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVy cy1PMi10ZXN0LnBhdGNoIGIvZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0 LnBhdGNoCmluZGV4IGI4YmE1YjAuLjc2MWQxMGYgMTAwNjQ0Ci0tLSBhL2dkYi02LjctcHBjLWNs b2JiZXJlZC1yZWdpc3RlcnMtTzItdGVzdC5wYXRjaAorKysgYi9nZGItNi43LXBwYy1jbG9iYmVy ZWQtcmVnaXN0ZXJzLU8yLXRlc3QucGF0Y2gKQEAgLTM5LDcgKzM5LDcgQEAgaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDctMDkvbXNnMDAyMjguaHRtbAogK30KIC0tLSAv ZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysrIC4vZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC9wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi5leHAJMyBOb3YgMjAwNyAyMjoyMjoy OCAtMDAwMAotQEAgLTAsMCArMSw2MSBAQAorQEAgLTAsMCArMSw1NCBAQAogKyMgQ29weXJpZ2h0 IDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwogKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK QEAgLTU4LDE2ICs1OCw5IEBAIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDA3LTA5L21zZzAwMjI4Lmh0bWwKICsjCiArIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2Ri IHRlc3RzdWl0ZS4KICsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZl bAotK30KLSsKICsjIFRlc3QgZGlzcGxheWluZyBjYWxsIGNsb2JiZXJlZCByZWdpc3RlcnMgaW4g b3B0aW1pemVkIGJpbmFyaWVzIGZvciBwcGMuCiArIyBHREIgc2hvdWxkIG5vdCBzaG93IGluY29y cmVjdCB2YWx1ZXMuCiArCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogK2lmICFb aXN0YXJnZXQgInBvd2VycGMqLSoiXSB0aGVuIHsKICsgICAgdmVyYm9zZSAiU2tpcHBpbmcgcG93 ZXJwYyogY2FsbCBjbG9iYmVyZWQgcmVnaXN0ZXJzIHRlc3RpbmcuIgogKyAgICByZXR1cm4KCmRp ZmYgLS1naXQgYS9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy1wcmVsaW5rLnBhdGNo IGIvZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMtcHJlbGluay5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M1MTU3Ny4uMDAwMDAwMAotLS0gYS9nZGItNi43LXRl c3RzdWl0ZS1zdGFibGUtcmVzdWx0cy1wcmVsaW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NjggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDMv bXNnMDEwMDYuaHRtbAotU3ViamVjdDogW3BhdGNoIG9yIEZZSV0gdGVzdHN1aXRlOiBGaXggcHJl bGluay5leHAgb24gc3lzdGVtIHcvdW5wcmVsaW5rZWQgIHN5c3RlbSBsaWJzCi0KLUhpLAotCi10 aGlzIGlzIGEgbW9yZSBjb25zZXJ2YXRpdmUgdmFyaWFudCBzdXBlcnNlZGVkIGJ5OgotCVtwYXRj aCA0LzZdIHRlc3RzdWl0ZTogVW5pZnkgdG8gbGliL3ByZWxpbmstc3VwcG9ydC5leHAKLQlodHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cwMTAwMi5odG1sCi13 aGVyZSBnZGIuYmFzZS9wcmVsaW5rLmV4cCBpcyByZXdvcmtlZCBvbiBnZW5lcmljIGxpYi9wcmVs aW5rLXN1cHBvcnQuZXhwLgotCi1JIHByZWZlciB0aGUgW3BhdGNoIDQvNl0gb3ZlciB0aGlzIHBh dGNoIGJ1dCB0aGlzIG1haWwgY2FuIHNlcnZlIGFsc28gYXMgYW4KLWlsbHVzdHJhdGlvbiBvZiB0 aGUgY3VycmVudCBwcm9ibGVtLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSWYgeW91ciBz eXN0ZW0gZm9yIHNvbWUgcmVhc29uIGN1cnJlbnRseSBkb2VzIG5vdCBoYXZlIGFsbCB0aGUgbGli cmFyaWVzCi1wcmVsaW5rZWQgZ2RiLmJhc2UvcHJlbGluay5leHAgd2lsbCBnZXQgVU5SRVNPTFZF RCByYW5kb21seSBhbHNvIGFmZmVjdGluZwotdGVzdHN1aXRlIHJlc3VsdHMgZGlmZi4KLQotQXBw YXJlbnRseSB0aGUgdGVzdGNhc2UgYWxyZWFkeSB0cmllZCB0byBhdm9pZCBhbnkgc3lzdGVtIGxp YnJhcmllcwotZGVwZW5kZW5jaWVzIGJ5ICItbm9kZWZhdWx0bGlicyIuICBCdXQgY3VycmVudGx5 IGl0IGRvZXMgaGFzIG5vdCB3b3JrZWQgdGhhdAotd2F5LgotCi0iLWxtIiBpcyBjb250YWluZWQg YWxyZWFkeSBldmVuIGluIGRlamFnbnUncyBkZWZhdWx0X3RhcmdldF9jb21waWxlIChub3QganVz dAotaW4gZ2RiL3Rlc3RzdWl0ZS9saWIvYWRhLmV4cCkuICBCdXQgSSBkbyBub3Qga25vdyB3aHkg aXQgaXMgdGhlcmUgYW5kIHdoaWNoCi1zeXN0ZW1zIHdvdWxkIGdldCBicm9rZW4gYnkgc29tZSBn bG9iYWwgZ2RiL3Rlc3RzdWl0ZS8gIi1sbSIgcmVtb3ZhbC4KLQotCi1UaGFua3MsCi1KYW4KLQot Ci0yMDEwLTAzLTI5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQlGaXggdGVzdGNhc2UgZmFsc2UgVU5SRVNPTFZFRCBpZiBzeXN0ZW0gbGlicmFyaWVzIGFy ZSBub3QgcHJlbGlua2VkLgotCSogZ2RiLmJhc2UvcHJlbGluay5leHA6IE5ldyB2YXJpYWJsZXMg Y29tcGlsZSwgYm9hcmQsIGVyciBhbmQgbWF0aGxpYi4KLQlTZXQgY2xlYXIgYm9hcmQgbWF0aGxp YiBmb3IgJHtsaWJmaWxlfSBjb21waWxhdGlvbi4KLQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9wcmVsaW5rLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4 cAotQEAgLTQyLDcgKzQyLDI1IEBAIHNldCB0ZXN0ZmlsZSAicHJlbGluayIKLSAKLSBzZXQgbGli c3JjZmlsZSAke3Rlc3RmaWxlfS1saWIuYwotIHNldCBsaWJmaWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0uc28KLS1pZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke2xpYnNyY2ZpbGV9IiAiJHtsaWJmaWxlfSIgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyAiYWRk aXRpb25hbF9mbGFncz0tZnBpYyAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIl1dICE9ICIifSB7Ci0r Ci0rIyBkZWZhdWx0X3RhcmdldF9jb21waWxlIHdvdWxkIG90aGVyd2lzZSBhZGQgIi1sbSIgbWFr aW5nIHRoZSB0ZXN0Y2FzZQotKyMgZGVwZW5kZW50IG9uIHdoZXRoZXIgdGhlIHN5c3RlbSBsaWJy YXJpZXMgYXJlIGFscmVhZHkgcHJlbGlua2VkLgotKyMgcHJlbGluazogQ291bGQgbm90IHNldCAv bGliNjQvbGlibS0yLjExLjEuc28gb3duZXIgb3IgbW9kZTogT3BlcmF0aW9uIG5vdCBwZXJtaXR0 ZWQKLStzZXQgY29tcGlsZSB7Ci0rICAgIGdkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7bGlic3JjZmlsZX0iICIke2xpYmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJhZGRp dGlvbmFsX2ZsYWdzPS1mcGljIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMiXQotK30KLStzZXQgYm9h cmQgW3RhcmdldF9pbmZvIG5hbWVdCi0raWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBtYXRo bGliXSB7Ci0rICAgIHNldCBtYXRobGliIFtib2FyZF9pbmZvICRkZXN0IG1hdGhsaWJdCi0rICAg IHNldF9ib2FyZF9pbmZvIG1hdGhsaWIgIiIKLSsgICAgc2V0IGVyciBbZXZhbCAkY29tcGlsZV0K LSsgICAgc2V0X2JvYXJkX2luZm8gbWF0aGxpYiAkbWF0aGxpYgotK30gZWxzZSB7Ci0rICAgIHNl dF9ib2FyZF9pbmZvIG1hdGhsaWIgIiIKLSsgICAgc2V0IGVyciBbZXZhbCAkY29tcGlsZV0KLSsg ICAgdW5zZXRfYm9hcmRfaW5mbyBtYXRobGliCi0rfQotK2lmIHskZXJyICE9ICIifSB7Ci0gICAg ICMgSWYgY3JlYXRpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5IGZhaWxzLCBtYXliZSB3ZSBkb24ndCBo YXZlIHRoZSByaWdodCB0b29scwotICAgICByZXR1cm4gLTEKLSB9Ci0KCmRpZmYgLS1naXQgYS9n ZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaCBiL2dkYi02LjctdGVzdHN1aXRl LXN0YWJsZS1yZXN1bHRzLnBhdGNoCmluZGV4IDc1ZjY4YjMuLmE0YzE5NWMgMTAwNjQ0Ci0tLSBh L2dkYi02LjctdGVzdHN1aXRlLXN0YWJsZS1yZXN1bHRzLnBhdGNoCisrKyBiL2dkYi02LjctdGVz dHN1aXRlLXN0YWJsZS1yZXN1bHRzLnBhdGNoCkBAIC0yMCw4ICsyMCwxMCBAQCByYW5kb20gRkFJ TDogZ2RiLmJhc2UvYXV4di5leHA6IG1hdGNoaW5nIGF1eHYgZGF0YSBmcm9tIGxpdmUgYW5kIGdj b3JlCiBnZGItNi44LjUwLjIwMDkwMjA5L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5l eHA6CiBmcmFtZXMtaW52YWxpZCBjYW4gaGFwcGVuIGFzeW5jaHJvbm91c2x5LgogCi0tLS0gLi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTEzIEp1biAyMDA2IDA4OjU1OjIyIC0wMDAw CTEuMTAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMJOCBEZWMgMjAwNyAx NjowNDoxMCAtMDAwMAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9maWxlaW8uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTIwMDktMTAtMDEgMTc6Mzk6MTMuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2ZpbGVpby5jCTIwMTAtMDctMTIgMTE6NDE6NDMuMDAwMDAwMDAwICswMjAwCiBAQCAtNTgs NiArNTgsOCBAQCBzeXN0ZW0gKGNvbnN0IGNoYXIgKiBzdHJpbmcpOwogIDEpIEludmFsaWQgc3Ry aW5nL2NvbW1hbmQuIC0gIHJldHVybnMgMTI3LiAgKi8KICBzdGF0aWMgY29uc3QgY2hhciAqc3Ry ZXJybm8gKGludCBlcnIpOwpAQCAtNjksOSArNzEsMTEgQEAgZnJhbWVzLWludmFsaWQgY2FuIGhh cHBlbiBhc3luY2hyb25vdXNseS4KICAgIC8qIERvbid0IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhl IGNhbGxzLiAgVGhleSBwYXJ0bHkgZGVwZW5kIG9uIGVhY2ggb3RoZXIgKi8KICAgIHRlc3Rfb3Bl biAoKTsKICAgIHRlc3Rfd3JpdGUgKCk7Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Zp bGVpby5leHAJMjMgQXVnIDIwMDcgMTg6MTQ6MTYgLTAwMDAJMS4xMgotKysrIC4vZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCTggRGVjIDIwMDcgMTY6MDQ6MTAgLTAwMDAKLUBAIC00 Niw4ICs0Niw4IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CitJbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9maWxlaW8uZXhwCTIwMTAtMDYtMDkgMDA6NTg6MDMuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAx MC0wNy0xMiAxMTo0MjowNy4wMDAwMDAwMDAgKzAyMDAKK0BAIC00Miw4ICs0Miw4IEBAIGlmIFtn ZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CiAgICAgIHJldHVybiAtMTsKICB9CiAgCkBA IC04MiwxNiArODYsMTYgQEAgZnJhbWVzLWludmFsaWQgY2FuIGhhcHBlbiBhc3luY2hyb25vdXNs eS4KICAKICBzZXQgb2xkdGltZW91dCAkdGltZW91dAogIHNldCB0aW1lb3V0IFtleHByICIkdGlt ZW91dCArIDYwIl0KLUBAIC04OCw3ICs4OCw3IEBAIGdkYl90ZXN0IGNvbnRpbnVlIFwKLSAiT3Bl bmluZyBub25leGlzdGFudCBmaWxlIHJldHVybnMgRU5PRU5UIgorQEAgLTg1LDcgKzg1LDcgQEAg Z2RiX3Rlc3QgY29udGludWUgXAorIAorIGdkYl90ZXN0ICJjb250aW51ZSIgIi4qIiAiIgogIAot IHNlbmRfZ2RiICJjb250aW51ZVxuIiA7IGdkYl9leHBlY3QgLXJlICIkZ2RiX3Byb21wdCAkIgog LWNhdGNoICJzeXN0ZW0gXCJjaG1vZCAtZiAtdyBub3dydC5maWxlaW8udGVzdFwiIgogK2NhdGNo ICJzeXN0ZW0gXCJjaG1vZCAtZiAtdyBmaWxlaW8uZGlyL25vd3J0LmZpbGVpby50ZXN0XCIiCiAg CiAgZ2RiX3Rlc3QgY29udGludWUgXAogICJDb250aW51aW5nXFwuLipvcGVuIDU6LipFQUNDRVMk c3RvcF9tc2ciIFwKLUBAIC0yNTIsOCArMjUyLDggQEAgZ2RiX3Rlc3QgY29udGludWUgXAorQEAg LTI1MCw4ICsyNTAsOCBAQCBnZGJfdGVzdCBjb250aW51ZSBcCiAgc2VuZF9nZGIgInF1aXRcbiIK ICBzZW5kX2dkYiAieVxuIgogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUt cHJwc2luZm8ucGF0Y2ggYi9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCmlu ZGV4IDI0OWFhODEuLjg3ZmQyNTUgMTAwNjQ0Ci0tLSBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUt cHJwc2luZm8ucGF0Y2gKKysrIGIvZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRj aApAQCAtMSwxNDYgKzEsMTE4IEBACi1JbmRleDogZ2RiLTcuMS9iZmQvZWxmLWJmZC5oCitJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9iZmQvZWxmLWJmZC5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMS5vcmlnL2JmZC9lbGYtYmZkLmgJMjAxMC0wMi0wOSAxMzoxNDo0Mi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4xL2JmZC9lbGYtYmZkLmgJMjAxMC0wNS0xNiAyMDoyMjozOC4wMDAwMDAw MDAgKzAyMDAKLUBAIC0yMTYwLDcgKzIxNjAsNyBAQCBleHRlcm4gRWxmX0ludGVybmFsX1BoZHIg KiBfYmZkX2VsZl9maW5kCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2JmZC9lbGYtYmZk LmgJMjAxMC0wNi0yNyAwNjowNzo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIw MTAwNzExL2JmZC9lbGYtYmZkLmgJMjAxMC0wNy0xMiAyMzowMDowNC4wMDAwMDAwMDAgKzAyMDAK K0BAIC0yMTcxLDggKzIxNzEsOSBAQCBleHRlcm4gRWxmX0ludGVybmFsX1BoZHIgKiBfYmZkX2Vs Zl9maW5kCisgLyogRXhwb3J0ZWQgaW50ZXJmYWNlIGZvciB3cml0aW5nIGVsZiBjb3JlZmlsZSBu b3Rlcy4gKi8KICBleHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9ub3RlCiAgICAoYmZkICosIGNo YXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCB2b2lkICosIGludCk7CisrI2lu Y2x1ZGUgPHN5cy9wcm9jZnMuaD4KICBleHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9wcnBzaW5m bwogLSAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7 Ci0rICAoYmZkICosIGNoYXIgKiwgaW50ICosIHZvaWQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICopOworKyAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBwcnBzaW5mb190ICopOwog IGV4dGVybiBjaGFyICplbGZjb3JlX3dyaXRlX3Byc3RhdHVzCiAgICAoYmZkICosIGNoYXIgKiwg aW50ICosIGxvbmcsIGludCwgY29uc3Qgdm9pZCAqKTsKICBleHRlcm4gY2hhciAqIGVsZmNvcmVf d3JpdGVfcHN0YXR1cwotSW5kZXg6IGdkYi03LjEvYmZkL2VsZi5jCitJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9iZmQvZWxmLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvYmZkL2Vs Zi5jCTIwMTAtMDItMTggMDE6MDk6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9iZmQv ZWxmLmMJMjAxMC0wNS0xNiAyMDoyNToxNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC04NTQ1LDYgKzg1 NDUsNyBAQCBjaGFyICoKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvYmZkL2VsZi5jCTIw MTAtMDUtMTggMDU6MzE6MDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcx MS9iZmQvZWxmLmMJMjAxMC0wNy0xMiAyMjo1MToxNy4wMDAwMDAwMDAgKzAyMDAKK0BAIC04NTgy LDEzICs4NTgyLDEyIEBAIGVsZmNvcmVfd3JpdGVfbm90ZSAoYmZkICphYmZkLAorICAgcmV0dXJu IGJ1ZjsKKyB9CisgCistI2lmIGRlZmluZWQgKEhBVkVfUFJQU0lORk9fVCkgfHwgZGVmaW5lZCAo SEFWRV9QU0lORk9fVCkKKysjaWYgZGVmaW5lZCAoSEFWRV9QUlBTSU5GT19UKQorIGNoYXIgKgog IGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKGJmZCAgKmFiZmQsCiAgCQkJY2hhciAqYnVmLAogIAkJ CWludCAgKmJ1ZnNpeiwKLSsJCQl2b2lkICppbmZvLAotIAkJCWNvbnN0IGNoYXIgKmZuYW1lLAot IAkJCWNvbnN0IGNoYXIgKnBzYXJncykKKy0JCQljb25zdCBjaGFyICpmbmFtZSwKKy0JCQljb25z dCBjaGFyICpwc2FyZ3MpCisrCQkJY29uc3QgcHJwc2luZm9fdCAqaW5wdXQpCiAgewotQEAgLTg1 NzEsMjYgKzg1NzIsNDAgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKKyAg IGNvbnN0IGNoYXIgKm5vdGVfbmFtZSA9ICJDT1JFIjsKKyAgIGNvbnN0IHN0cnVjdCBlbGZfYmFj a2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7CitAQCAtODU5Niw0 OCArODU5NSw1NSBAQCBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChiZmQgICphYmZkLAorICAgaWYg KGJlZC0+ZWxmX2JhY2tlbmRfd3JpdGVfY29yZV9ub3RlICE9IE5VTEwpCisgICAgIHsKKyAgICAg ICBjaGFyICpyZXQ7CisrICAgICAgY2hhciBmbmFtZVtzaXplb2YgKGlucHV0LT5wcl9mbmFtZSkg KyAxXTsKKysgICAgICBjaGFyIHBzYXJnc1tzaXplb2YgKGlucHV0LT5wcl9wc2FyZ3MpICsgMV07 CisrCisrICAgICAgc3RybmNweSAoZm5hbWUsIGlucHV0LT5wcl9mbmFtZSwgc2l6ZW9mIChpbnB1 dC0+cHJfZm5hbWUpKTsKKysgICAgICBmbmFtZVtzaXplb2YgKGlucHV0LT5wcl9mbmFtZSldID0g MDsKKysgICAgICBzdHJuY3B5IChwc2FyZ3MsIGlucHV0LT5wcl9wc2FyZ3MsIHNpemVvZiAoaW5w dXQtPnByX3BzYXJncykpOworKyAgICAgIHBzYXJnc1tzaXplb2YgKGlucHV0LT5wcl9wc2FyZ3Mp XSA9IDA7CisrCisgICAgICAgcmV0ID0gKCpiZWQtPmVsZl9iYWNrZW5kX3dyaXRlX2NvcmVfbm90 ZSkgKGFiZmQsIGJ1ZiwgYnVmc2l6LAorIAkJCQkJCSBOVF9QUlBTSU5GTywgZm5hbWUsIHBzYXJn cyk7CisgICAgICAgaWYgKHJldCAhPSBOVUxMKQorIAlyZXR1cm4gcmV0OworICAgICB9CisgCist I2lmIGRlZmluZWQgKEhBVkVfUFJQU0lORk8zMl9UKSB8fCBkZWZpbmVkIChIQVZFX1BTSU5GTzMy X1QpCisrI2lmIGRlZmluZWQgKEhBVkVfUFJQU0lORk8zMl9UKQorICAgaWYgKGJlZC0+cy0+ZWxm Y2xhc3MgPT0gRUxGQ0xBU1MzMikKKyAgICAgeworLSNpZiBkZWZpbmVkIChIQVZFX1BTSU5GTzMy X1QpCistICAgICAgcHNpbmZvMzJfdCBkYXRhOworLSAgICAgIGludCBub3RlX3R5cGUgPSBOVF9Q U0lORk87CistI2Vsc2UKKyAgICAgICBwcnBzaW5mbzMyX3QgZGF0YTsKICAgICAgICBpbnQgbm90 ZV90eXBlID0gTlRfUFJQU0lORk87Ci0gI2VuZGlmCistI2VuZGlmCiAgCi0tICAgICAgbWVtc2V0 ICgmZGF0YSwgMCwgc2l6ZW9mIChkYXRhKSk7CisgICAgICAgbWVtc2V0ICgmZGF0YSwgMCwgc2l6 ZW9mIChkYXRhKSk7CiAtICAgICAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5hbWUsIHNpemVv ZiAoZGF0YS5wcl9mbmFtZSkpOwogLSAgICAgIHN0cm5jcHkgKGRhdGEucHJfcHNhcmdzLCBwc2Fy Z3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsgICAgICBpZiAoaW5mbykKLSsJbWVtY3B5 ICgmZGF0YSwgaW5mbywgc2l6ZW9mIChkYXRhKSk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgbWVt c2V0ICgmZGF0YSwgMCwgc2l6ZW9mIChkYXRhKSk7Ci0rCSAgc3RybmNweSAoZGF0YS5wcl9mbmFt ZSwgZm5hbWUsIHNpemVvZiAoZGF0YS5wcl9mbmFtZSkpOwotKwkgIHN0cm5jcHkgKGRhdGEucHJf cHNhcmdzLCBwc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsJfQotKworKyAgICAg IGRhdGEucHJfc3RhdGUgPSBpbnB1dC0+cHJfc3RhdGU7CisrICAgICAgZGF0YS5wcl9zbmFtZSA9 IGlucHV0LT5wcl9zbmFtZTsKKysgICAgICBkYXRhLnByX3pvbWIgPSBpbnB1dC0+cHJfem9tYjsK KysgICAgICBkYXRhLnByX25pY2UgPSBpbnB1dC0+cHJfbmljZTsKKysgICAgICBkYXRhLnByX2Zs YWcgPSBpbnB1dC0+cHJfZmxhZzsKKysgICAgICBkYXRhLnByX3VpZCA9IGlucHV0LT5wcl91aWQ7 CisrICAgICAgZGF0YS5wcl9naWQgPSBpbnB1dC0+cHJfZ2lkOworKyAgICAgIGRhdGEucHJfcGlk ID0gaW5wdXQtPnByX3BpZDsKKysgICAgICBkYXRhLnByX3BwaWQgPSBpbnB1dC0+cHJfcHBpZDsK KysgICAgICBkYXRhLnByX3BncnAgPSBpbnB1dC0+cHJfcGdycDsKKysgICAgICBkYXRhLnByX3Np ZCA9IGlucHV0LT5wcl9zaWQ7CisrICAgICAgQkZEX0FTU0VSVCAoc2l6ZW9mIChkYXRhLnByX2Zu YW1lKSA9PSBzaXplb2YgKGlucHV0LT5wcl9mbmFtZSkpOworKyAgICAgIG1lbWNweSAoZGF0YS5w cl9mbmFtZSwgaW5wdXQtPnByX2ZuYW1lLCBzaXplb2YgKGRhdGEucHJfZm5hbWUpKTsKKysgICAg ICBCRkRfQVNTRVJUIChzaXplb2YgKGRhdGEucHJfcHNhcmdzKSA9PSBzaXplb2YgKGlucHV0LT5w cl9wc2FyZ3MpKTsKKysgICAgICBtZW1jcHkgKGRhdGEucHJfcHNhcmdzLCBpbnB1dC0+cHJfcHNh cmdzLCBzaXplb2YgKGRhdGEucHJfcHNhcmdzKSk7CiAgICAgICAgcmV0dXJuIGVsZmNvcmVfd3Jp dGVfbm90ZSAoYWJmZCwgYnVmLCBidWZzaXosCiAgCQkJCSBub3RlX25hbWUsIG5vdGVfdHlwZSwg JmRhdGEsIHNpemVvZiAoZGF0YSkpOwogICAgICB9CiAgICBlbHNlCiAgI2VuZGlmCiAgICAgIHsK LSsvKiBnZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoIG1pc2FwcGxpY2F0aW9u IGdsdWUuICAqLwotICNpZiBkZWZpbmVkIChIQVZFX1BTSU5GT19UKQotICAgICAgIHBzaW5mb190 IGRhdGE7Ci0rLyogZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaCBtaXNhcHBs aWNhdGlvbiBnbHVlLiAgKi8KLSAgICAgICBpbnQgbm90ZV90eXBlID0gTlRfUFNJTkZPOwotICNl bHNlCi0gICAgICAgcHJwc2luZm9fdCBkYXRhOworLSNpZiBkZWZpbmVkIChIQVZFX1BTSU5GT19U KQorLSAgICAgIHBzaW5mb190IGRhdGE7CistICAgICAgaW50IG5vdGVfdHlwZSA9IE5UX1BTSU5G TzsKKy0jZWxzZQorLSAgICAgIHBycHNpbmZvX3QgZGF0YTsKICAgICAgICBpbnQgbm90ZV90eXBl ID0gTlRfUFJQU0lORk87Ci0gI2VuZGlmCistI2VuZGlmCiAgCiAtICAgICAgbWVtc2V0ICgmZGF0 YSwgMCwgc2l6ZW9mIChkYXRhKSk7CiAtICAgICAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5h bWUsIHNpemVvZiAoZGF0YS5wcl9mbmFtZSkpOwogLSAgICAgIHN0cm5jcHkgKGRhdGEucHJfcHNh cmdzLCBwc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsgICAgICBpZiAoaW5mbykK LSsJbWVtY3B5ICgmZGF0YSwgaW5mbywgc2l6ZW9mIChkYXRhKSk7Ci0rICAgICAgZWxzZQotKwl7 Ci0rCSAgbWVtc2V0ICgmZGF0YSwgMCwgc2l6ZW9mIChkYXRhKSk7Ci0rCSAgc3RybmNweSAoZGF0 YS5wcl9mbmFtZSwgZm5hbWUsIHNpemVvZiAoZGF0YS5wcl9mbmFtZSkpOwotKwkgIHN0cm5jcHkg KGRhdGEucHJfcHNhcmdzLCBwc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsJfQot KwogICAgICAgIHJldHVybiBlbGZjb3JlX3dyaXRlX25vdGUgKGFiZmQsIGJ1ZiwgYnVmc2l6LAot IAkJCQkgbm90ZV9uYW1lLCBub3RlX3R5cGUsICZkYXRhLCBzaXplb2YgKGRhdGEpKTsKKy0JCQkJ IG5vdGVfbmFtZSwgbm90ZV90eXBlLCAmZGF0YSwgc2l6ZW9mIChkYXRhKSk7CisrCQkJCSBub3Rl X25hbWUsIG5vdGVfdHlwZSwgaW5wdXQsIHNpemVvZiAoKmlucHV0KSk7CiAgICAgIH0KLUluZGV4 OiBnZGItNy4xL2dkYi9hbWQ2NC1saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEu b3JpZy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMC0wNS0xNiAyMDoyMjozOC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4xL2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLTA1LTE2IDIwOjIy OjM4LjAwMDAwMDAwMCArMDIwMAotQEAgLTE0MCw2ICsxNDAsNyBAQCBzdGF0aWMgaW50IGFtZDY0 X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2ZmCi0gCi0gc3RhdGljIGNoYXIgKgotIGFtZDY0X2xpbnV4 X2VsZmNvcmVfd3JpdGVfcHJwc2luZm8gKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNp eiwKLSsJCQkJICAgIHZvaWQgKmluZm8sCi0gCQkJCSAgICBjb25zdCBjaGFyICpmbmFtZSwgY29u c3QgY2hhciAqcHNhcmdzKQotIHsKLSAgIGlmIChnZGJhcmNoX3B0cl9iaXQgKHRhcmdldF9nZGJh cmNoKSA9PSAzMikKLUBAIC0xNDksMTQgKzE1MCwyMCBAQCBhbWQ2NF9saW51eF9lbGZjb3JlX3dy aXRlX3BycHNpbmZvIChiZmQgCi0gICAgICAgc3RydWN0IGVsZl9wcnBzaW5mbzMyIGRhdGE7Ci0g ICAgICAgbm90ZV90eXBlID0gTlRfUFJQU0lORk87Ci0gCi0tICAgICAgbWVtc2V0ICgmZGF0YSwg MCwgc2l6ZW9mIChkYXRhKSk7Ci0tICAgICAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5hbWUs IHNpemVvZiAoZGF0YS5wcl9mbmFtZSkpOwotLSAgICAgIHN0cm5jcHkgKGRhdGEucHJfcHNhcmdz LCBwc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsgICAgICBpZiAoaW5mbykKLSsJ bWVtY3B5ICgmZGF0YSwgaW5mbywgc2l6ZW9mIChkYXRhKSk7Ci0rICAgICAgZWxzZQotKwl7Ci0r CSAgbWVtc2V0ICgmZGF0YSwgMCwgc2l6ZW9mIChkYXRhKSk7Ci0rCSAgc3RybmNweSAoZGF0YS5w cl9mbmFtZSwgZm5hbWUsIHNpemVvZiAoZGF0YS5wcl9mbmFtZSkpOwotKwkgIHN0cm5jcHkgKGRh dGEucHJfcHNhcmdzLCBwc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsJfQotKwot ICAgICAgIHJldHVybiBlbGZjb3JlX3dyaXRlX25vdGUgKGFiZmQsIGJ1ZiwgYnVmc2l6LAotIAkJ CQkgbm90ZV9uYW1lLCBub3RlX3R5cGUsICZkYXRhLCBzaXplb2YgKGRhdGEpKTsKLSAgICAgfQot ICAgZWxzZQotLSAgICByZXR1cm4gZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYWJmZCwgYnVmLCBi dWZzaXosIGZuYW1lLCBwc2FyZ3MpOwotKyAgICByZXR1cm4gZWxmY29yZV93cml0ZV9wcnBzaW5m byAoYWJmZCwgYnVmLCBidWZzaXosIGluZm8sIGZuYW1lLCBwc2FyZ3MpOwogIH0KKy0jZW5kaWYJ LyogUFNJTkZPX1Qgb3IgUFJQU0lORk9fVCAqLworKyNlbmRpZgkvKiBQUlBTSU5GT19UICovCiAg Ci0gc3RhdGljIHZvaWQKLUluZGV4OiBnZGItNy4xL2dkYi9mYnNkLW5hdC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9mYnNkLW5hdC5jCTIwMTAtMDEtMDEgMDg6MzE6MzEuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmJzZC1uYXQuYwkyMDEwLTA1LTE2IDIwOjIy OjM4LjAwMDAwMDAwMCArMDIwMAotQEAgLTIxMSw2ICsyMTEsNyBAQCBmYnNkX21ha2VfY29yZWZp bGVfbm90ZXMgKGJmZCAqb2JmZCwgaW50Ci0gCXBzYXJncyA9IHJlY29uY2F0IChwc2FyZ3MsIHBz YXJncywgIiAiLCBnZXRfaW5mZXJpb3JfYXJncyAoKSwgTlVMTCk7Ci0gCi0gICAgICAgbm90ZV9k YXRhID0gZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwgbm90ZV9kYXRhLCBub3RlX3NpemUs Ci0rCQkJCSAgICAgICAgICBOVUxMLAotIAkJCQkJICBmbmFtZSwgcHNhcmdzKTsKLSAgICAgfQot IAotSW5kZXg6IGdkYi03LjEvZ2RiL2xpbnV4LW5hdC5jCisgI2lmIGRlZmluZWQgKEhBVkVfUFJT VEFUVVNfVCkKKyBjaGFyICoKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9saW51eC1u YXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0w NS0xNiAyMDoyMjozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9saW51eC1uYXQu YwkyMDEwLTA1LTE2IDIwOjIyOjM4LjAwMDAwMDAwMCArMDIwMAotQEAgLTU2LDYgKzU2LDcgQEAK LSAjaW5jbHVkZSAidGVybWluYWwuaCIKLSAjaW5jbHVkZSA8c3lzL3Zmcy5oPgotICNpbmNsdWRl ICJzb2xpYi5oIgotKyNpbmNsdWRlICJnZGJfcHJvY2ZzMzIuaCIJLyogZm9yIHN0cnVjdCBlbGZf cHJwc2luZm8zMiAqLwotIAotICNpZm5kZWYgU1BVRlNfTUFHSUMKLSAjZGVmaW5lIFNQVUZTX01B R0lDIDB4MjNjOWI2NGUKLUBAIC0yMjgsNyArMjI5LDcgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBl cl94ZmVyX3BhcnRpYWwpIChzdAotIC8qIFRoaXMgZnVuY3Rpb25zIG1ha2UgZWxmY29yZSBub3Rl IHNlY3Rpb25zLgotICAgIFRoZXkgbWF5IGdldCBvdmVycmlkZW4gYnkgY29kZSBhZGp1c3Rpbmcg ZGF0YSBmb3IgbXVsdGktdGFyZ2V0IGJ1aWxkcy4gICovCi0gY2hhciAqKCpsaW51eF9lbGZjb3Jl X3dyaXRlX3BycHNpbmZvKQotLSAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKikgPSBlbGZjb3JlX3dyaXRlX3BycHNpbmZvOwotKyAgKGJmZCAqLCBjaGFy ICosIGludCAqLCB2b2lkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSA9IGVsZmNvcmVf d3JpdGVfcHJwc2luZm87Ci0gY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3Byc3RhdHVzKQot ICAgKGJmZCAqLCBjaGFyICosIGludCAqLCBsb25nLCBpbnQsIGNvbnN0IHZvaWQgKikgPSBlbGZj b3JlX3dyaXRlX3Byc3RhdHVzOwotIHN0YXRpYyBjaGFyICoKLUBAIC00NTA3LDYgKzQ1MDgsMTU5 IEBAIGxpbnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKKy0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDctMTIgMjM6MDU6MjIuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMJMjAx MC0wNy0xMiAyMjo1NzozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NDY2LDYgKzQ0NjYsMTMxIEBA IGxpbnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKICAgIHJldHVybiBhcmdz Lm5vdGVfZGF0YTsKICB9CiAgCkBAIC0xNTMsNyArMTI1LDcgQEAgSW5kZXg6IGdkYi03LjEvZ2Ri L2xpbnV4LW5hdC5jCiArICAgYmluZm10X2VsZi5jLiAgVW5rbm93biB2YWx1ZXMgYXJlIGZpbGxl ZCB3aXRoIHplcm9lcy4gIFRoZSBzdHJ1Y3R1cmUgaXMKICsgICBtYWxsb2NlZC4gICovCiArCi0r c3RhdGljIHZvaWQqCisrc3RhdGljIGNvbnN0IHBycHNpbmZvX3QgKgogK2ZpbGxfcHJwc2luZm8g KHZvaWQpCiArewogKyAgc3RydWN0IHN0YXQgc2I7CkBAIC0xNzMsNiArMTQ1LDcgQEAgSW5kZXg6 IGdkYi03LjEvZ2RiL2xpbnV4LW5hdC5jCiArICAgICBvYnNvbGV0ZSB0aGVyZSB0byA8bGludXgv c2NoZWQuaD4gVEFTS18qIGNvbnN0YW50cy4gICovCiArICBjb25zdCBjaGFyIHN0YXRlX3N0cmlu Z1tdID0gIlJTRFRaVyI7CiArICBpbnQgc3RhdGVfbnVtOworKyAgc3RhdGljIHBycHNpbmZvX3Qg cmV0dmFsOwogKwogKyAgLyogR2V0IC9wcm9jLyRQSUQvc3RhdC4gICovCiArICBwaWQgPSBwdGlk X2dldF9waWQgKGluZmVyaW9yX3B0aWQpOwpAQCAtMjQ5LDEwOCArMjIyLDYzIEBAIEluZGV4OiBn ZGItNy4xL2dkYi9saW51eC1uYXQuYwogKyAgICAgIHN0YXRlX251bSA9IDA7CiArICAgIH0KICsK LSsjaWYgVUxPTkdfTUFYID4gMHhmZmZmZmZmZlUKLSsgIC8qIFdlIHNraXAgdGhpcyBjb2RlIG9u IDMyLWJpdCBnZGIuICAqLwotKyAgaWYgKGdkYmFyY2hfcHRyX2JpdCAodGFyZ2V0X2dkYmFyY2gp ID09IDY0KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGVsZl9wcnBzaW5mbyAqaW5mbyA9IHh6YWxs b2MgKHNpemVvZiAoKmluZm8pKTsKLSsKLSsgICAgICBpbmZvLT5wcl9zdGF0ZSA9IHN0YXRlX251 bTsKLSsgICAgICBpbmZvLT5wcl9zbmFtZSA9IHByb2Nfc3RhdGVbMF07Ci0rICAgICAgaW5mby0+ cHJfem9tYiA9IChwcm9jX3N0YXRlWzBdID09ICdaJyk7Ci0rICAgICAgaW5mby0+cHJfbmljZSA9 IHByb2NfbmljZTsKLSsgICAgICBpbmZvLT5wcl9mbGFnID0gZmxhZ3M7Ci0rICAgICAgaW5mby0+ cHJfdWlkID0gc2Iuc3RfdWlkOwotKyAgICAgIGluZm8tPnByX2dpZCA9IHNiLnN0X2dpZDsKLSsg ICAgICBpbmZvLT5wcl9waWQgPSBwaWQ7Ci0rICAgICAgaW5mby0+cHJfcHBpZCA9IHByb2NfcHBp ZDsKLSsgICAgICBpbmZvLT5wcl9wZ3JwID0gcHJvY19wZ2lkOwotKyAgICAgIGluZm8tPnByX3Np ZCA9IHByb2Nfc2lkOwotKyAgICAgIHN0cm5jcHkgKGluZm8tPnByX2ZuYW1lLCBwcm9jX2NvbW0s IHNpemVvZiAoaW5mby0+cHJfZm5hbWUpKTsKLSsgICAgICBzdHJuY3B5IChpbmZvLT5wcl9wc2Fy Z3MsIHByb2NfY21kbGluZSwgc2l6ZW9mIChpbmZvLT5wcl9wc2FyZ3MpKTsKLSsKLSsgICAgICBy ZXR1cm4gaW5mbzsKLSsgICAgfQotKyNlbmRpZgotKyAgaWYgKGdkYmFyY2hfcHRyX2JpdCAodGFy Z2V0X2dkYmFyY2gpID09IDMyKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGVsZl9wcnBzaW5mbzMy ICppbmZvID0geHphbGxvYyAoc2l6ZW9mICgqaW5mbykpOwotKwotKyAgICAgIGluZm8tPnByX3N0 YXRlID0gc3RhdGVfbnVtOwotKyAgICAgIGluZm8tPnByX3NuYW1lID0gcHJvY19zdGF0ZVswXTsK LSsgICAgICBpbmZvLT5wcl96b21iID0gKHByb2Nfc3RhdGVbMF0gPT0gJ1onKTsKLSsgICAgICBp bmZvLT5wcl9uaWNlID0gcHJvY19uaWNlOwotKyAgICAgIGluZm8tPnByX2ZsYWcgPSBmbGFnczsK LSsgICAgICBpbmZvLT5wcl91aWQgPSBzYi5zdF91aWQ7Ci0rICAgICAgaW5mby0+cHJfZ2lkID0g c2Iuc3RfZ2lkOwotKyAgICAgIGluZm8tPnByX3BpZCA9IHBpZDsKLSsgICAgICBpbmZvLT5wcl9w cGlkID0gcHJvY19wcGlkOwotKyAgICAgIGluZm8tPnByX3BncnAgPSBwcm9jX3BnaWQ7Ci0rICAg ICAgaW5mby0+cHJfc2lkID0gcHJvY19zaWQ7Ci0rICAgICAgc3RybmNweSAoaW5mby0+cHJfZm5h bWUsIHByb2NfY29tbSwgc2l6ZW9mIChpbmZvLT5wcl9mbmFtZSkpOwotKyAgICAgIHN0cm5jcHkg KGluZm8tPnByX3BzYXJncywgcHJvY19jbWRsaW5lLCBzaXplb2YgKGluZm8tPnByX3BzYXJncykp OwotKwotKyAgICAgIHJldHVybiBpbmZvOwotKyAgICB9CisrICBtZW1zZXQgKCZyZXR2YWwsIDAs IHNpemVvZiAocmV0dmFsKSk7CisrICByZXR2YWwucHJfc3RhdGUgPSBzdGF0ZV9udW07CisrICBy ZXR2YWwucHJfc25hbWUgPSBwcm9jX3N0YXRlWzBdOworKyAgcmV0dmFsLnByX3pvbWIgPSAocHJv Y19zdGF0ZVswXSA9PSAnWicpOworKyAgcmV0dmFsLnByX25pY2UgPSBwcm9jX25pY2U7CisrICBy ZXR2YWwucHJfZmxhZyA9IGZsYWdzOworKyAgcmV0dmFsLnByX3VpZCA9IHNiLnN0X3VpZDsKKysg IHJldHZhbC5wcl9naWQgPSBzYi5zdF9naWQ7CisrICByZXR2YWwucHJfcGlkID0gcGlkOworKyAg cmV0dmFsLnByX3BwaWQgPSBwcm9jX3BwaWQ7CisrICByZXR2YWwucHJfcGdycCA9IHByb2NfcGdp ZDsKKysgIHJldHZhbC5wcl9zaWQgPSBwcm9jX3NpZDsKKysgIHN0cm5jcHkgKHJldHZhbC5wcl9m bmFtZSwgcHJvY19jb21tLCBzaXplb2YgKHJldHZhbC5wcl9mbmFtZSkpOworKyAgc3RybmNweSAo cmV0dmFsLnByX3BzYXJncywgcHJvY19jbWRsaW5lLCBzaXplb2YgKHJldHZhbC5wcl9wc2FyZ3Mp KTsKICsKLSsgIHJldHVybiBOVUxMOworKyAgcmV0dXJuICZyZXR2YWw7CiArfQogKyNlbmRpZgog KwogIC8qIEZpbGxzIHRoZSAidG9fbWFrZV9jb3JlZmlsZV9ub3RlIiB0YXJnZXQgdmVjdG9yLiAg QnVpbGRzIHRoZSBub3RlCiAgICAgc2VjdGlvbiBmb3IgYSBjb3JlZmlsZSwgYW5kIHJldHVybnMg aXQgaW4gYSBtYWxsb2MgYnVmZmVyLiAgKi8KICAKLUBAIC00NTI3LDggKzQ2ODEsMTQgQEAgbGlu dXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAorQEAgLTQ0ODQsMjYgKzQ2MDks MTEgQEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAogIAogICAgaWYg KGdldF9leGVjX2ZpbGUgKDApKQogICAgICB7Ci0rI2lmIGRlZmluZWQgKEhBVkVfUFJQU0lORk9f VCkKLSsgICAgICB2b2lkICpkYXRhID0gZmlsbF9wcnBzaW5mbyAoKTsKLSsjZGVmaW5lIERBVEFQ VFIgZGF0YQotKyNlbHNlCi0rI2RlZmluZSBEQVRBUFRSIE5VTEwKLSAgICAgICBzdHJuY3B5IChm bmFtZSwgc3RycmNociAoZ2V0X2V4ZWNfZmlsZSAoMCksICcvJykgKyAxLCBzaXplb2YgKGZuYW1l KSk7Ci0gICAgICAgc3RybmNweSAocHNhcmdzLCBnZXRfZXhlY19maWxlICgwKSwgc2l6ZW9mIChw c2FyZ3MpKTsKLSsjZW5kaWYKLSAgICAgICBpZiAoZ2V0X2luZmVyaW9yX2FyZ3MgKCkpCi0gCXsK LSAJICBjaGFyICpzdHJpbmdfZW5kOwotQEAgLTQ1NDQsOSArNDcwNCwxNSBAQCBsaW51eF9uYXRf bWFrZV9jb3JlZmlsZV9ub3RlcyAoYmZkICpvYmZkCi0gCQkgICAgICAgcHNhcmdzX2VuZCAtIHN0 cmluZ19lbmQpOwotIAkgICAgfQotIAl9Ci0tICAgICAgbm90ZV9kYXRhID0gKGNoYXIgKikgbGlu dXhfZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwgbm90ZV9kYXRhLAotLQkJCQkJCQkgbm90 ZV9zaXplLCBmbmFtZSwKLSsgICAgICBub3RlX2RhdGEgPSAoY2hhciAqKSBsaW51eF9lbGZjb3Jl X3dyaXRlX3BycHNpbmZvIChvYmZkLAotKwkJCQkJCQkgbm90ZV9kYXRhLCBub3RlX3NpemUsCi0r CQkJCQkJCSBEQVRBUFRSLAotKwkJCQkJCQkgZm5hbWUsCi0gCQkJCQkJCSBwc2FyZ3MpOwotKyNp ZiBkZWZpbmVkIChIQVZFX1BSUFNJTkZPX1QpCi0rICAgICAgeGZyZWUgKERBVEFQVFIpOwotKyNl bmRpZgotKyN1bmRlZiBEQVRBUFRSCistICAgICAgc3RybmNweSAoZm5hbWUsIHN0cnJjaHIgKGdl dF9leGVjX2ZpbGUgKDApLCAnLycpICsgMSwgc2l6ZW9mIChmbmFtZSkpOworLSAgICAgIHN0cm5j cHkgKHBzYXJncywgZ2V0X2V4ZWNfZmlsZSAoMCksIHNpemVvZiAocHNhcmdzKSk7CistICAgICAg aWYgKGdldF9pbmZlcmlvcl9hcmdzICgpKQorLQl7CistCSAgY2hhciAqc3RyaW5nX2VuZDsKKy0J ICBjaGFyICpwc2FyZ3NfZW5kID0gcHNhcmdzICsgc2l6ZW9mIChwc2FyZ3MpOworLQorLQkgIC8q IGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJwc2luZm8gKCkgaGFuZGxlcyB6ZXJvIHVudGVybWluYXRl ZAorLQkgICAgIHN0cmluZ3MgZmluZS4gICovCistCSAgc3RyaW5nX2VuZCA9IG1lbWNociAocHNh cmdzLCAwLCBzaXplb2YgKHBzYXJncykpOworLQkgIGlmIChzdHJpbmdfZW5kICE9IE5VTEwpCist CSAgICB7CistCSAgICAgICpzdHJpbmdfZW5kKysgPSAnICc7CistCSAgICAgIHN0cm5jcHkgKHN0 cmluZ19lbmQsIGdldF9pbmZlcmlvcl9hcmdzICgpLAorLQkJICAgICAgIHBzYXJnc19lbmQgLSBz dHJpbmdfZW5kKTsKKy0JICAgIH0KKy0JfQorKyAgICAgIGNvbnN0IHBycHNpbmZvX3QgKmRhdGEg PSBmaWxsX3BycHNpbmZvICgpOworKworICAgICAgIG5vdGVfZGF0YSA9IChjaGFyICopIGVsZmNv cmVfd3JpdGVfcHJwc2luZm8gKG9iZmQsCisgCQkJCQkJICAgbm90ZV9kYXRhLAorLQkJCQkJCSAg IG5vdGVfc2l6ZSwgZm5hbWUsIHBzYXJncyk7CisrCQkJCQkJICAgbm90ZV9zaXplLCBkYXRhKTsK ICAgICAgfQogIAogICAgLyogRHVtcCBpbmZvcm1hdGlvbiBmb3IgdGhyZWFkcy4gICovCi1JbmRl eDogZ2RiLTcuMS9nZGIvbGludXgtbmF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcv Z2RiL2xpbnV4LW5hdC5oCTIwMTAtMDUtMTYgMjA6MjI6MzcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMS9nZGIvbGludXgtbmF0LmgJMjAxMC0wNS0xNiAyMDoyMjozOC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xNzMsNyArMTczLDcgQEAgaW50IGxpbnV4X25hdF9jb3JlX29mX3RocmVhZF8xIChw dGlkX3QgcAotIC8qIFRoZXNlIGZ1bmN0aW9ucyBtYWtlIGVsZmNvcmUgbm90ZSBzZWN0aW9ucy4K LSAgICBUaGV5IG1heSBnZXQgb3ZlcnJpZGVuIGJ5IGNvZGUgYWRqdXN0aW5nIGRhdGEgZm9yIG11 bHRpLXRhcmdldCBidWlsZHMuICAqLwotIGV4dGVybiBjaGFyICooKmxpbnV4X2VsZmNvcmVfd3Jp dGVfcHJwc2luZm8pCi0tICAoYmZkICosIGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqKTsKLSsgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgdm9pZCAqLCBjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKik7Ci0gZXh0ZXJuIGNoYXIgKigqbGludXhfZWxmY29yZV93cml0ZV9w cnN0YXR1cykKLSAgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgbG9uZywgaW50LCBjb25zdCB2b2lk ICopOwotIGV4dGVybiBjaGFyICooKmxpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZykKLUluZGV4 OiBnZGItNy4xL2dkYi9wcm9jZnMuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3By b2Nmcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9wcm9jZnMuYwkyMDEwLTAy LTE1IDE4OjM1OjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL3Byb2Nmcy5jCTIw MTAtMDUtMTYgMjA6MjI6MzguMDAwMDAwMDAwICswMjAwCi1AQCAtNjE4NCw2ICs2MTg0LDcgQEAg cHJvY2ZzX21ha2Vfbm90ZV9zZWN0aW9uIChiZmQgKm9iZmQsIGludAorLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvcHJvY2ZzLmMJMjAxMC0wNy0wNyAxODoxNToxNi4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9wcm9jZnMuYwkyMDEwLTA3LTEyIDIz OjA1OjIzLjAwMDAwMDAwMCArMDIwMAorQEAgLTU3NzAsNiArNTc3MCw3IEBAIHByb2Nmc19tYWtl X25vdGVfc2VjdGlvbiAoYmZkICpvYmZkLCBpbnQKICAgIG5vdGVfZGF0YSA9IChjaGFyICopIGVs ZmNvcmVfd3JpdGVfcHJwc2luZm8gKG9iZmQsCiAgCQkJCQkgICAgICAgbm90ZV9kYXRhLAogIAkJ CQkJICAgICAgIG5vdGVfc2l6ZSwKCmRpZmYgLS1naXQgYS9nZGItNi44LWJ6NDY2OTAxLWJhY2t0 cmFjZS1mdWxsLXByZWxpbmtlZC5wYXRjaCBiL2dkYi02LjgtYno0NjY5MDEtYmFja3RyYWNlLWZ1 bGwtcHJlbGlua2VkLnBhdGNoCmluZGV4IGY5ZWMzNDkuLjIyMTFmYTMgMTAwNjQ0Ci0tLSBhL2dk Yi02LjgtYno0NjY5MDEtYmFja3RyYWNlLWZ1bGwtcHJlbGlua2VkLnBhdGNoCisrKyBiL2dkYi02 LjgtYno0NjY5MDEtYmFja3RyYWNlLWZ1bGwtcHJlbGlua2VkLnBhdGNoCkBAIC0xLDIwICsxLDUg QEAKIEZpeCByZXNvbHZpbmcgb2YgdmFyaWFibGVzIGF0IGxvY2F0aW9ucyBsaXN0cyBpbiBwcmVs aW5rZWQgbGlicyAoQlogNDY2OTAxKS4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2Ri L2R3YXJmMmxvYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dk Yi9kd2FyZjJsb2MuYwkyMDA5LTA5LTA5IDIwOjA4OjAzLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi02LjguNTAuMjAwOTA5MDkvZ2RiL2R3YXJmMmxvYy5jCTIwMDktMDktMDkgMjA6MTA6MzUuMDAw MDAwMDAwICswMjAwCi1AQCAtNTYsNyArNTYsOSBAQCBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24g KHN0cnVjdCBkd2FyZjJfCi0gICBDT1JFX0FERFIgbG93LCBoaWdoOwotICAgZ2RiX2J5dGUgKmxv Y19wdHIsICpidWZfZW5kOwotICAgaW50IGxlbmd0aDsKLS0gIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChiYXRvbi0+cGVyX2N1KTsKLSsgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlMSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAoYmF0b24tPnBlcl9jdSk7 Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IG9iamZpbGUxLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlCi0rCQkJICAgID8gb2JqZmlsZTEtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgOiBvYmpm aWxlMTsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2Jq ZmlsZSk7Ci0gICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRl ciAoZ2RiYXJjaCk7Ci0gICB1bnNpZ25lZCBpbnQgYWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9h ZGRyX3NpemUgKGJhdG9uLT5wZXJfY3UpOwogSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1sb2NsaXN0LXByZWxpbmtlZC5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKCmRp ZmYgLS1naXQgYS9nZGItNi44LWNvbnN0YW50LXdhdGNocG9pbnRzLnBhdGNoIGIvZ2RiLTYuOC1j b25zdGFudC13YXRjaHBvaW50cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MTU0YzBjNy4uMDAwMDAwMAotLS0gYS9nZGItNi44LWNvbnN0YW50LXdhdGNocG9pbnRzLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLTIwMDgtMDctMTAgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogYnJlYWtwb2ludC5jIChmZXRj aF93YXRjaHBvaW50X3ZhbHVlKTogTmV3IGNvbW1lbnQgb24gdW5yZWFjaGFibGUKLQl2YWx1ZXMu Ci0JKHdhdGNoX2NvbW1hbmRfMSk6IE5ldyB2YXJpYWJsZSBWQUxfQ0hBSU4uICBSZWZ1c2UgY29u c3RhbnQgd2F0Y2hwb2ludHMuCi0JKiBnZGJ0eXBlcy5oIChUWVBFX0NPREVfRlVOQyk6IE5ldyBj b21tZW50IHJlZ2FyZGluZyBwb2ludGVycyB0byBpdC4KLQotMjAwOC0wNy0xMCAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIudGV4aW5mbyAoU2V0 IFdhdGNocG9pbnRzKTogRG9jdW1lbnQgY29uc3RhbnQgdmFsdWUgd2F0Y2hwb2ludHMuCi0KLTIw MDgtMDctMTAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CSogZ2RiLmJhc2Uvd2F0Y2hwb2ludC5leHA6IENhbGwgVEVTVF9DT05TVEFOVF9XQVRDSFBPSU5U LgotCSh0ZXN0X2NvbnN0YW50X3dhdGNocG9pbnQpOiBOZXcgZnVuY3Rpb24uCi0JKHRlc3RfaW5h Y2Nlc3NpYmxlX3dhdGNocG9pbnQpOiBDbGVhbnVwIChkZWxldGUpIHRoZSB3YXRjaHBvaW50Lgot CVRlc3QgYWxzbyBhIGRvdWJsZS1pbmRpcmVjdGlvbiB3YXRjaHBvaW50LgotCWdkYi5iYXNlL3dh dGNocG9pbnQuYyAoZ2xvYmFsX3B0cl9wdHIpOiBOZXcgdmFyaWFibGUuCi0JKGZ1bmM0KTogTmV3 IHRlc3RpbmcgY29kZSBmb3IgR0xPQkFMX1BUUl9QVFIuCi0KLUluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9icmVha3BvaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAxLTE1IDExOjQ2OjI5LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAxLTE1 IDExOjQ5OjQ5LjAwMDAwMDAwMCArMDEwMAotQEAgLTk0Nyw3ICs5NDcsMTUgQEAgaXNfaGFyZHdh cmVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbgotICAgIElmIFZBTF9DSEFJTiBpcyBub24t TlVMTCwgKlZBTF9DSEFJTiB3aWxsIGJlIHJlbGVhc2VkIGZyb20gdGhlCi0gICAgdmFsdWUgY2hh aW4uICBUaGUgY2FsbGVyIG11c3QgZnJlZSB0aGUgdmFsdWVzIGluZGl2aWR1YWxseS4gIElmCi0g ICAgVkFMX0NIQUlOIGlzIE5VTEwsIGFsbCBnZW5lcmF0ZWQgdmFsdWVzIHdpbGwgYmUgbGVmdCBv biB0aGUgdmFsdWUKLS0gICBjaGFpbi4gICovCi0rICAgY2hhaW4uCi0rICAgCi0rICAgSW5mZXJp b3IgdW5yZWFjaGFibGUgdmFsdWVzIHJldHVybjoKLSsgICBJbmZlcmlvciBgaW50ICppbnRwID0g TlVMTDsnIHdpdGggYHdhdGNoICppbnRwJzoKLSsgICAgICpWQUxQIGlzIE5VTEwsICpSRVNVTFRQ IGNvbnRhaW5zIGxhenkgTFZBTF9NRU1PUlkgYWRkcmVzcyAwLCAqVkFMX0NIQUlOCi0rICAgICBj b250YWlucyB0aGUgKlJFU1VMVFAgZWxlbWVudCBhbmQgYWxzbyBJTlRQIGFzIExWQUxfTUVNT1JZ LgotKyAgIEluZmVyaW9yIGBpbnQgKippbnRwcCA9IE5VTEw7JyB3aXRoIGB3YXRjaCAqKmludHBw JzoKLSsgICAgICpWQUxQIGlzIE5VTEwsICpSRVNVTFRQIGlzIE5VTEwsICpWQUxfQ0hBSU4gY29u dGFpbnMgbGF6eSBMVkFMX01FTU9SWQotKyAgICAgYWRkcmVzcyAwIGFuZCBhbHNvIElOVFBQIGFz IExWQUxfTUVNT1JZLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIGZldGNoX3dhdGNocG9pbnRfdmFs dWUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCB2YWx1ZSAqKnZhbHAsCi1AQCAtNzI2 NCw3ICs3MjcyLDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbAot ICAgc3RydWN0IGJyZWFrcG9pbnQgKmIsICpzY29wZV9icmVha3BvaW50ID0gTlVMTDsKLSAgIHN0 cnVjdCBleHByZXNzaW9uICpleHA7Ci0gICBzdHJ1Y3QgYmxvY2sgKmV4cF92YWxpZF9ibG9jazsK LS0gIHN0cnVjdCB2YWx1ZSAqdmFsLCAqbWFyazsKLSsgIHN0cnVjdCB2YWx1ZSAqdmFsLCAqbWFy aywgKnZhbF9jaGFpbjsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLSAgIGNoYXIgKmV4 cF9zdGFydCA9IE5VTEw7Ci0gICBjaGFyICpleHBfZW5kID0gTlVMTDsKLUBAIC03MzUyLDYgKzcz NjAsMjcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbAotICAgZXhw X3ZhbGlkX2Jsb2NrID0gaW5uZXJtb3N0X2Jsb2NrOwotICAgbWFyayA9IHZhbHVlX21hcmsgKCk7 Ci0gICBmZXRjaF93YXRjaHBvaW50X3ZhbHVlIChleHAsICZ2YWwsIE5VTEwsIE5VTEwpOwotKwot KyAgLyogVkFMVUVfTUFSSyBnZXRzIHVzIHRoZSBzYW1lIHZhbHVlIGFzIEZFVENIX1dBVENIUE9J TlRfVkFMVUUncyBWQUxfQ0hBSU4KLSsgICAgIHBhcmFtZXRlci4gIEp1c3QgdGhpcyB3YXkgd2Ug ZG8gbm90IGhhdmUgdG8gVkFMVUVfRlJFRSB0aGUgY2hhaW5lZCBWQUxVRXMKLSsgICAgIG91cnNl bHZlcy4gICovCi0rICBmb3IgKHZhbF9jaGFpbiA9IHZhbHVlX21hcmsgKCk7Ci0rICAgICAgIHZh bF9jaGFpbiAhPSBtYXJrOwotKyAgICAgICB2YWxfY2hhaW4gPSB2YWx1ZV9uZXh0ICh2YWxfY2hh aW4pKQotKyAgICBpZiAoKFZBTFVFX0xWQUwgKHZhbF9jaGFpbikgPT0gbHZhbF9tZW1vcnkKLSsJ ICYmIFRZUEVfQ09ERSAodmFsdWVfdHlwZSAodmFsX2NoYWluKSkgIT0gVFlQRV9DT0RFX0ZVTkMp Ci0rCXx8IFZBTFVFX0xWQUwgKHZhbF9jaGFpbikgPT0gbHZhbF9yZWdpc3RlcikKLSsgICAgICBi cmVhazsKLSsgIGlmICh2YWxfY2hhaW4gPT0gbWFyaykKLSsgICAgewotKyAgICAgIGludCBsZW47 Ci0rICAgICAgCi0rICAgICAgbGVuID0gZXhwX2VuZCAtIGV4cF9zdGFydDsKLSsgICAgICB3aGls ZSAobGVuID4gMCAmJiBpc3NwYWNlIChleHBfc3RhcnRbbGVuIC0gMV0pKQotKwlsZW4tLTsKLSsg ICAgICBlcnJvciAoXygiQ2Fubm90IHdhdGNoIGNvbnN0YW50IHZhbHVlICUuKnMuIiksIGxlbiwg ZXhwX3N0YXJ0KTsKLSsgICAgfQotKyAgLyogQnJlYWsgdGhlIHZhbHVlcyBjaGFpbiBvbmx5IGFm dGVyIGl0cyBjaGVjayBhYm92ZS4gICovCi0gICBpZiAodmFsICE9IE5VTEwpCi0gICAgIHJlbGVh c2VfdmFsdWUgKHZhbCk7Ci0gCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlw ZXMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZ2RidHlw ZXMuaAkyMDEwLTAxLTE1IDAzOjIyOjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAxMTo0OToyNi4wMDAwMDAwMDAgKzAx MDAKLUBAIC03Miw3ICs3MiwyMiBAQCBlbnVtIHR5cGVfY29kZQotICAgICBUWVBFX0NPREVfVU5J T04sCQkvKiBDIHVuaW9uIG9yIFBhc2NhbCB2YXJpYW50IHBhcnQgKi8KLSAgICAgVFlQRV9DT0RF X0VOVU0sCQkvKiBFbnVtZXJhdGlvbiB0eXBlICovCi0gICAgIFRZUEVfQ09ERV9GTEFHUywJCS8q IEJpdCBmbGFncyB0eXBlICovCi0tICAgIFRZUEVfQ09ERV9GVU5DLAkJLyogRnVuY3Rpb24gdHlw ZSAqLwotKwotKyAgICAvKiBGdW5jdGlvbiB0eXBlLiAgSXQgaXMgbm90IGEgcG9pbnRlciB0byBh IGZ1bmN0aW9uLiAgRnVuY3Rpb24gcmVmZXJlbmNlCi0rICAgICAgIGJ5IGl0cyBuYW1lIChzdWNo IGFzIGBwcmludGYnKSBoYXMgdGhpcyB0eXBlLiAgQyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzCi0r ICAgICAgIHRoaXMgZnVuY3Rpb24gdHlwZSB0byBhIHBvaW50ZXIgdG8gZnVuY3Rpb24gZm9yIGFu eSBvcGVyYXRpb24gZXhjZXB0Ci0rICAgICAgIGBzaXplb2YgKGZ1bmN0aW9uX3R5cGUpJyBvciBg JmZ1bmN0aW9uX3R5cGUnICh1bmFyeSAmKS4KLSsgICAgICAgYHNpemVvZiAoZnVuY3Rpb25fdHlw ZSknIGlzIHVuZGVmaW5lZCBpbiBDLiAgQnV0IEdDQyBwcm92aWRlcyBleHRlbnNpb24KLSsgICAg ICAgKGluZm8gJyhnY2MpUG9pbnRlciBBcml0aCcpIGRlZmluaW5nIGl0cyBzaXplIGFzIDEgYnl0 ZS4gIERXQVJGIGRvZXMgbm90Ci0rICAgICAgIGRlZmluZSBpdHMgc2l6ZSBidXQgR0RCIGRlZmlu ZXMgdGhlIHNpemUgdGhlIEdDQyBjb21wYXRpYmxlIHdheSAtIEdEQgotKyAgICAgICBmdW5jdGlv biBNQUtFX0ZVTkNUSU9OX1RZUEUuICBUaGUgYWRkcmVzcyBpdHNlbGYgaXMgbm90IG1vZGlmaWFi bGUuCi0rICAgICAgIEFzIHRoZSBmdW5jdGlvbiB0eXBlIGhhcyBzaXplIDEgYnV0IGl0cyByZWFs IHZhbHVlIGhhcyBgc2l6ZW9mCi0rICAgICAgIChDT1JFX0FERFIpJyB3ZSBjYW5ub3QgdXNlIE5P VF9MVkFMIGNhdGVnb3J5IGJlY2F1c2UgdGhlIGFkZHJlc3Mgd291bGQKLSsgICAgICAgbm90IGZp dCBpbiB0aGUgVkFMVUVfQ09OVEVOVFNfUkFXIGNvbnRhaW5lciBvZiBpdHMgVkFMVUUuICBXZSB1 c2UKLSsgICAgICAgTFZBTF9NRU1PUlkgKGFuZCBpdHMgVkFMVUVfQUREUkVTUyBmaWVsZCkgZm9y IGl0IGJ1dCB3ZSBtdXN0IGJlIGNhcmVmdWwKLSsgICAgICAgaXQgaXMgbm90IGx2YWx1ZSwgaXQg aXMgdGhlIG9ubHkgbm9uLW1vZGlmaWFibGUgTFZBTF9NRU1PUlkuICAqLwotKyAgICBUWVBFX0NP REVfRlVOQywKLSsKLSAgICAgVFlQRV9DT0RFX0lOVCwJCS8qIEludGVnZXIgdHlwZSAqLwotIAot ICAgICAvKiBGbG9hdGluZyB0eXBlLiAgVGhpcyBpcyAqTk9UKiBhIGNvbXBsZXggdHlwZS4gIEJl d2FyZSwgdGhlcmUgYXJlIHBhcnRzCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9j L2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAxMTo0 OToyNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNzIzLDYgKzM3MjMsMTggQEAgVGhpcyBjb21tYW5k IHByaW50cyBhIGxpc3Qgb2Ygd2F0Y2hwb2ludAotIGl0IGlzIHRoZSBzYW1lIGFzIEBjb2Rle2lu Zm8gYnJlYWt9IChAcHhyZWZ7U2V0IEJyZWFrc30pLgotIEBlbmQgdGFibGUKLSAKLStJZiB5b3Ug d2F0Y2ggZm9yIGEgY2hhbmdlIGluIGEgbnVtZXJpY2FsbHkgZW50ZXJlZCBhZGRyZXNzIHlvdSBu ZWVkIHRvCi0rZGVyZWZlcmVuY2UgaXQgYXMgdGhlIGFkZHJlc3MgaXRzZWxmIGlzIGp1c3QgYSBj b25zdGFudCBudW1iZXIgd2hpY2ggd2lsbCBuZXZlcgotK2NoYW5nZS4gIEB2YWx1ZXtHREJOfSBy ZWZ1c2VzIHRvIGNyZWF0ZSBhIHdhdGNocG9pbnQgdGhhdCB3YXRjaGVzCi0rYSBuZXZlci1jaGFu Z2luZyB2YWx1ZToKLSsKLStAc21hbGxleGFtcGxlCi0rKEB2YWx1ZXtHREJQfSkgd2F0Y2ggMHg2 MDA4NTAKLStDYW5ub3Qgd2F0Y2ggY29uc3RhbnQgdmFsdWUgMHg2MDA4NTAuCi0rKEB2YWx1ZXtH REJQfSkgd2F0Y2ggKihpbnQgKikgMHg2MDA4NTAKLStXYXRjaHBvaW50IDE6ICooaW50ICopIDYy OTM1ODQKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotIEB2YWx1ZXtHREJOfSBzZXRzIGEgQGRmbnto YXJkd2FyZSB3YXRjaHBvaW50fSBpZiBwb3NzaWJsZS4gIEhhcmR3YXJlCi0gd2F0Y2hwb2ludHMg ZXhlY3V0ZSB2ZXJ5IHF1aWNrbHksIGFuZCB0aGUgZGVidWdnZXIgcmVwb3J0cyBhIGNoYW5nZSBp bgotIHZhbHVlIGF0IHRoZSBleGFjdCBpbnN0cnVjdGlvbiB3aGVyZSB0aGUgY2hhbmdlIG9jY3Vy cy4gIElmIEB2YWx1ZXtHREJOfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIw MTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmMJMjAwOS0xMi0z MCAxODozMzozNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jCTIwMTAtMDEtMTUgMTE6NDk6MjYuMDAwMDAw MDAwICswMTAwCi1AQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgZm9vIHN0cnVjdDEsIHN0cnVjdDIs ICpwdHIxLCAqcHRyCi0gaW50IGRvcmVhZCA9IDA7Ci0gCi0gY2hhciAqZ2xvYmFsX3B0cjsKLStj aGFyICoqZ2xvYmFsX3B0cl9wdHI7Ci0gCi0gdm9pZCBtYXJrZXIxICgpCi0gewotQEAgLTExOSw2 ICsxMjAsMTAgQEAgZnVuYzQgKCkKLSAgIGJ1ZlswXSA9IDM7Ci0gICBnbG9iYWxfcHRyID0gYnVm OwotICAgYnVmWzBdID0gNzsKLSsgIGJ1ZlsxXSA9IDU7Ci0rICBnbG9iYWxfcHRyX3B0ciA9ICZn bG9iYWxfcHRyOwotKyAgYnVmWzBdID0gOTsKLSsgIGdsb2JhbF9wdHIrKzsKLSB9Ci0gCi0gaW50 IG1haW4gKCkKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvd2F0Y2hwb2ludC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmV4cAkyMDEwLTAxLTAxIDA4OjMy OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LmV4cAkyMDEwLTAxLTE1IDExOjUwOjIxLjAwMDAwMDAwMCAr MDEwMAotQEAgLTY0MSw3ICs2NDEsMjEgQEAgcHJvYyB0ZXN0X3dhdGNocG9pbnRfYW5kX2JyZWFr cG9pbnQge30gewotIAl9Ci0gICAgIH0KLSB9Ci0tICAgIAotKwotK3Byb2MgdGVzdF9jb25zdGFu dF93YXRjaHBvaW50IHt9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsKLSsJZ2RiX3Rlc3Qg IndhdGNoIDUiICJDYW5ub3Qgd2F0Y2ggY29uc3RhbnQgdmFsdWUgNS4iICJudW1iZXIgaXMgY29u c3RhbnQiCi0rCWdkYl90ZXN0ICJ3YXRjaCBtYXJrZXIxIiAiQ2Fubm90IHdhdGNoIGNvbnN0YW50 IHZhbHVlIG1hcmtlcjEuIiBcCi0rCQkgIm1hcmtlcjEgaXMgY29uc3RhbnQiCi0rCWdkYl90ZXN0 ICJ3YXRjaCBjb3VudCArIDYiICIuKmF0Y2hwb2ludCBcWzAtOVxdKzogY291bnQgXFwrIDYiCi0r CWdkYl90ZXN0ICJzZXQgXCRleHByX2JyZWFrcG9pbnRfbnVtYmVyID0gXCRicG51bSIgIiIKLSsJ Z2RiX3Rlc3QgImRlbGV0ZSBcJGV4cHJfYnJlYWtwb2ludF9udW1iZXIiICIiCi0rCWdkYl90ZXN0 ICJ3YXRjaCA3ICsgY291bnQiICIuKmF0Y2hwb2ludCBcWzAtOVxdKzogNyBcXCsgY291bnQiCi0r CWdkYl90ZXN0ICJzZXQgXCRleHByX2JyZWFrcG9pbnRfbnVtYmVyID0gXCRicG51bSIgIiIKLSsJ Z2RiX3Rlc3QgImRlbGV0ZSBcJGV4cHJfYnJlYWtwb2ludF9udW1iZXIiICIiCi0rfQotKwotIHBy b2MgdGVzdF9pbmFjY2Vzc2libGVfd2F0Y2hwb2ludCB7fSB7Ci0gICAgIGdsb2JhbCBnZGJfcHJv bXB0Ci0gCi1AQCAtNjYyLDcgKzY3Niw4IEBAIHByb2MgdGVzdF9pbmFjY2Vzc2libGVfd2F0Y2hw b2ludCB7fSB7Ci0gCX0KLSAKLSAJZ2RiX3Rlc3QgIndhdGNoICpnbG9iYWxfcHRyIiAiLiphdGNo cG9pbnQgXFswLTlcXSs6IFxcKmdsb2JhbF9wdHIiCi0tCWdkYl90ZXN0ICJuZXh0IiAiLipnbG9i YWxfcHRyID0gYnVmLioiCi0rCWdkYl90ZXN0ICJzZXQgXCRnbG9iYWxfcHRyX2JyZWFrcG9pbnRf bnVtYmVyID0gXCRicG51bSIgIiIKLSsJZ2RiX3Rlc3QgIm5leHQiICIuKmdsb2JhbF9wdHIgPSBi dWYuKiIgImdsb2JhbF9wdHIgbmV4dCIKLSAJZ2RiX3Rlc3RfbXVsdGlwbGUgIm5leHQiICJuZXh0 IG92ZXIgcHRyIGluaXQiIHsKLSAJICAgIC1yZSAiLiphdGNocG9pbnQgXFswLTlcXSs6IFxcKmds b2JhbF9wdHJcclxuXHJcbk9sZCB2YWx1ZSA9IC4qXHJcbk5ldyB2YWx1ZSA9IDMgLipcclxuLiok Z2RiX3Byb21wdCAkIiB7Ci0gCQkjIFdlIGNhbiBub3QgdGVzdCBmb3IgPHVua25vd24+IGhlcmUg YmVjYXVzZSBOVUxMIG1heSBiZSByZWFkYWJsZS4KLUBAIC02NzUsNiArNjkwLDI4IEBAIHByb2Mg dGVzdF9pbmFjY2Vzc2libGVfd2F0Y2hwb2ludCB7fSB7Ci0gCQlwYXNzICJuZXh0IG92ZXIgYnVm ZmVyIHNldCIKLSAJICAgIH0KLSAJfQotKwlnZGJfdGVzdCAiZGVsZXRlIFwkZ2xvYmFsX3B0cl9i cmVha3BvaW50X251bWJlciIgIiIKLSsJZ2RiX3Rlc3QgIndhdGNoICoqZ2xvYmFsX3B0cl9wdHIi ICIuKmF0Y2hwb2ludCBcWzAtOVxdKzogXFwqXFwqZ2xvYmFsX3B0cl9wdHIiCi0rCWdkYl90ZXN0 ICJzZXQgXCRnbG9iYWxfcHRyX3B0cl9icmVha3BvaW50X251bWJlciA9IFwkYnBudW0iICIiCi0r CWdkYl90ZXN0ICJuZXh0IiAiLipnbG9iYWxfcHRyX3B0ciA9ICZnbG9iYWxfcHRyLioiICJnbG9h YmxfcHRyX3B0ciBuZXh0IgotKwlnZGJfdGVzdF9tdWx0aXBsZSAibmV4dCIgIm5leHQgb3ZlciBn bG9iYWxfcHRyX3B0ciBpbml0IiB7Ci0rCSAgICAtcmUgIi4qYXRjaHBvaW50IFxbMC05XF0rOiBc XCpcXCpnbG9iYWxfcHRyX3B0clxyXG5cclxuT2xkIHZhbHVlID0gLipcclxuTmV3IHZhbHVlID0g NyAuKlxyXG4uKiRnZGJfcHJvbXB0ICQiIHsKLSsJCSMgV2UgY2FuIG5vdCB0ZXN0IGZvciA8dW5r bm93bj4gaGVyZSBiZWNhdXNlIE5VTEwgbWF5IGJlIHJlYWRhYmxlLgotKwkJIyBUaGlzIHRlc3Qg ZG9lcyByZWx5IG9uICpOVUxMICE9IDcuCi0rCQlwYXNzICJuZXh0IG92ZXIgZ2xvYmFsX3B0cl9w dHIgaW5pdCIKLSsJICAgIH0KLSsJfQotKwlnZGJfdGVzdF9tdWx0aXBsZSAibmV4dCIgIm5leHQg b3ZlciBnbG9iYWxfcHRyX3B0ciBidWZmZXIgc2V0IiB7Ci0rCSAgICAtcmUgIi4qYXRjaHBvaW50 IFxbMC05XF0rOiBcXCpcXCpnbG9iYWxfcHRyX3B0clxyXG5cclxuT2xkIHZhbHVlID0gNyAuKlxy XG5OZXcgdmFsdWUgPSA5IC4qXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotKwkJcGFzcyAibmV4dCBv dmVyIGdsb2JhbF9wdHJfcHRyIGJ1ZmZlciBzZXQiCi0rCSAgICB9Ci0rCX0KLSsJZ2RiX3Rlc3Rf bXVsdGlwbGUgIm5leHQiICJuZXh0IG92ZXIgZ2xvYmFsX3B0cl9wdHIgcG9pbnRlciBhZHZhbmNl IiB7Ci0rCSAgICAtcmUgIi4qYXRjaHBvaW50IFxbMC05XF0rOiBcXCpcXCpnbG9iYWxfcHRyX3B0 clxyXG5cclxuT2xkIHZhbHVlID0gOSAuKlxyXG5OZXcgdmFsdWUgPSA1IC4qXHJcbi4qJGdkYl9w cm9tcHQgJCIgewotKwkJcGFzcyAibmV4dCBvdmVyIGdsb2JhbF9wdHJfcHRyIHBvaW50ZXIgYWR2 YW5jZSIKLSsJICAgIH0KLSsJfQotKwlnZGJfdGVzdCAiZGVsZXRlIFwkZ2xvYmFsX3B0cl9wdHJf YnJlYWtwb2ludF9udW1iZXIiICIiCi0gICAgIH0KLSB9Ci0gICAgIAotQEAgLTg1MSw2ICs4ODgs MTcgQEAgaWYgW2luaXRpYWxpemVdIHRoZW4gewotICAgICB0ZXN0X3dhdGNocG9pbnRfYW5kX2Jy ZWFrcG9pbnQKLSAKLSAgICAgdGVzdF93YXRjaHBvaW50X2luX2JpZ19ibG9iCi0rCi0rICAgICMg U2VlIGFib3ZlLgotKyAgICBpZiBbaXN0YXJnZXQgIm1pcHMtaWR0LSoiXSB0aGVuIHsKLSsJZ2Ri X2V4aXQKLSsJZ2RiX3N0YXJ0Ci0rCWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgotKwlnZGJfbG9hZCAkYmluZmlsZQotKwlpbml0aWFsaXplCi0rICAgIH0KLSsKLSsgICAgdGVz dF9jb25zdGFudF93YXRjaHBvaW50Ci0gfQotIAotICMgUmVzdG9yZSBvbGQgdGltZW91dAoKZGlm ZiAtLWdpdCBhL2dkYi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2ggYi9nZGItNi44LWZv cnRyYW4tdGFnLWNvbnN0YW50LnBhdGNoCmluZGV4IGIzZDczM2IuLjMyODM5ODQgMTAwNjQ0Ci0t LSBhL2dkYi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2gKKysrIGIvZ2RiLTYuOC1mb3J0 cmFuLXRhZy1jb25zdGFudC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcv Z2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDExOjUyOjU5LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDExOjUzOjU3 LjAwMDAwMDAwMCArMDEwMAotQEAgLTI1MjksNiArMjUyOSw3IEBAIHNjYW5fcGFydGlhbF9zeW1i b2xzIChzdHJ1Y3QgcGFydGlhbF9kaWUKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2Ri L2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEyIDIzOjA3OjM1LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjEzOjAyLjAw MDAwMDAwMCArMDIwMAorQEAgLTIyNTEsNiArMjI1MSw3IEBAIHNjYW5fcGFydGlhbF9zeW1ib2xz IChzdHJ1Y3QgcGFydGlhbF9kaWUKICAJICAgICAgYWRkX3BhcnRpYWxfc3VicHJvZ3JhbSAocGRp LCBsb3dwYywgaGlnaHBjLCBuZWVkX3BjLCBjdSk7CiAgCSAgICAgIGJyZWFrOwogIAkgICAgY2Fz ZSBEV19UQUdfdmFyaWFibGU6CkBAIC0xMCw3ICsxMCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKICAJICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6CiAgCSAg ICBjYXNlIERXX1RBR191bmlvbl90eXBlOgogIAkgICAgICBpZiAoIXBkaS0+aXNfZGVjbGFyYXRp b24pCi1AQCAtMjcxOSw2ICsyNzIwLDcgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFy dGlhbF9kaWVfaQorQEAgLTI0NTIsNiArMjQ1Myw3IEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3Ry dWN0IHBhcnRpYWxfZGllX2kKICAJfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIERXX1RBR192 YXJpYWJsZToKQEAgLTE4LDcgKzE4LDE1IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9kd2FyZjJyZWFkLmMKICAgICAgICBpZiAocGRpLT5pc19leHRlcm5hbCkKICAJewogIAkgIC8q IEdsb2JhbCBWYXJpYWJsZS4KLUBAIC00NzcwLDcgKzQ3NzIsOCBAQCBkd2FyZjJfYWRkX2ZpZWxk IChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwCitAQCAtMzI4OSw2ICszMjkxLDcgQEAgZGllX25lZWRz X25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZvICpkaQorICAgICAgIHJldHVybiAxOworIAorICAg ICBjYXNlIERXX1RBR192YXJpYWJsZToKKysgICAgY2FzZSBEV19UQUdfY29uc3RhbnQ6CisgICAg ICAgLyogV2Ugb25seSBuZWVkIHRvIHByZWZpeCAiZ2xvYmFsbHkiIHZpc2libGUgdmFyaWFibGVz LiAgVGhlc2UgaW5jbHVkZQorIAkgYW55IHZhcmlhYmxlIG1hcmtlZCB3aXRoIERXX0FUX2V4dGVy bmFsIG9yIGFueSB2YXJpYWJsZSB0aGF0CisgCSBsaXZlcyBpbiBhIG5hbWVzcGFjZS4gIFtWYXJp YWJsZXMgaW4gYW5vbnltb3VzIG5hbWVzcGFjZXMKK0BAIC00NjM4LDcgKzQ2NDEsOCBAQCBkd2Fy ZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwCiAgCSAgZmlwLT5ub25fcHVibGlj X2ZpZWxkcyA9IDE7CiAgCX0KICAgICAgfQpAQCAtMjgsNyArMzYsNyBAQCBJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCiAgICAgIHsKICAgICAgICAvKiBDKysgc3Rh dGljIG1lbWJlci4gICovCiAgCi1AQCAtNTMzOSw3ICs1MzQyLDggQEAgcmVhZF9zdHJ1Y3R1cmVf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaQorQEAgLTUyNTAsNyArNTI1NCw4IEBAIHJlYWRfc3Ry dWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGkKICAgICAgICB3aGlsZSAoY2hpbGRfZGll ICYmIGNoaWxkX2RpZS0+dGFnKQogIAl7CiAgCSAgaWYgKGNoaWxkX2RpZS0+dGFnID09IERXX1RB R19tZW1iZXIKQEAgLTM4LDcgKzQ2LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2R3YXJmMnJlYWQuYwogIAkgICAgewogIAkgICAgICAvKiBOT1RFOiBjYXJsdG9uLzIwMDItMTEt MDU6IEEgQysrIHN0YXRpYyBkYXRhIG1lbWJlcgogIAkJIHNob3VsZCBiZSBhIERXX1RBR19tZW1i ZXIgdGhhdCBpcyBhIGRlY2xhcmF0aW9uLCBidXQKLUBAIC01NDU5LDYgKzU0NjMsNyBAQCBwcm9j ZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvCitAQCAtNTM5Niw2ICs1NDAxLDcg QEAgcHJvY2Vzc19zdHJ1Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbwogICAgICB7CiAgICAg ICAgaWYgKGNoaWxkX2RpZS0+dGFnID09IERXX1RBR19tZW1iZXIKICAJICB8fCBjaGlsZF9kaWUt PnRhZyA9PSBEV19UQUdfdmFyaWFibGUKQEAgLTQ2LDcgKzU0LDcgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwogIAkgIHx8IGNoaWxkX2RpZS0+dGFnID09IERX X1RBR19pbmhlcml0YW5jZSkKICAJewogIAkgIC8qIERvIG5vdGhpbmcuICAqLwotQEAgLTcxMzQs NiArNzEzOSw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKK0BA IC03MTA5LDYgKzcxMTUsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0 ZSAqCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX3N1YnByb2dyYW0KICAJICAmJiBhYmJy ZXYtPnRhZyAhPSBEV19UQUdfbGV4aWNhbF9ibG9jawogIAkgICYmIGFiYnJldi0+dGFnICE9IERX X1RBR192YXJpYWJsZQpAQCAtNTQsNyArNjIsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX25hbWVzcGFj ZQogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19tb2R1bGUKICAJICAmJiBhYmJyZXYtPnRh ZyAhPSBEV19UQUdfbWVtYmVyKQotQEAgLTcyNDIsNiArNzI0OCw3IEBAIGxvYWRfcGFydGlhbF9k aWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKK0BAIC03MjE3LDYgKzcyMjQsNyBAQCBsb2FkX3Bh cnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqCiAgICAgICAgaWYgKGxvYWRfYWxsCiAg CSAgfHwgYWJicmV2LT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0KICAJICB8fCBhYmJyZXYtPnRh ZyA9PSBEV19UQUdfdmFyaWFibGUKQEAgLTYyLDcgKzcwLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwogIAkgIHx8IGFiYnJldi0+dGFnID09IERXX1RBR19u YW1lc3BhY2UKICAJICB8fCBwYXJ0X2RpZS0+aXNfZGVjbGFyYXRpb24pCiAgCXsKLUBAIC05MDE2 LDYgKzkwMjMsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAor QEAgLTkwNTksNiArOTA2NywxMSBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0CiAgCSAgLyogRG8gbm90IGFkZCB0aGUgc3ltYm9sIHRvIGFueSBsaXN0cy4gIEl0IHdp bGwgYmUgZm91bmQgdmlhCiAgCSAgICAgQkxPQ0tfRlVOQ1RJT04gZnJvbSB0aGUgYmxvY2t2ZWN0 b3IuICAqLwogIAkgIGJyZWFrOwpAQCAtNzIsNSArODAsNSBAQCBJbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCiArCQkJCQkgICAgU1lNQk9MX1RZUEUgKHN5bSksIE5V TEwpOwogKwkgIC8qIFBBU1NUSFJVICovCiAgCWNhc2UgRFdfVEFHX3ZhcmlhYmxlOgorIAljYXNl IERXX1RBR19tZW1iZXI6CiAgCSAgLyogQ29tcGlsYXRpb24gd2l0aCBtaW5pbWFsIGRlYnVnIGlu Zm8gbWF5IHJlc3VsdCBpbiB2YXJpYWJsZXMKLSAJICAgICB3aXRoIG1pc3NpbmcgdHlwZSBlbnRy aWVzLiBDaGFuZ2UgdGhlIG1pc2xlYWRpbmcgYHZvaWQnIHR5cGUKCmRpZmYgLS1naXQgYS9nZGIt YXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaCBiL2dkYi1hcmNoZXItbmV4dC1v dmVyLXRocm93LWN4eC1leGVjLnBhdGNoCmluZGV4IDQxNDA5ZjAuLmNiZDlhMzYgMTAwNjQ0Ci0t LSBhL2dkYi1hcmNoZXItbmV4dC1vdmVyLXRocm93LWN4eC1leGVjLnBhdGNoCisrKyBiL2dkYi1h cmNoZXItbmV4dC1vdmVyLXRocm93LWN4eC1leGVjLnBhdGNoCkBAIC0xLDI1ICsxLDYgQEAKIEFy Y2hlci11cHN0cmVhbWVkOgogaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2FyY2hlci8yMDEwLXEy L21zZzAwMDMxLmh0bWwKIAotLS0tIC4vZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTA1LTI5IDAxOjEy OjMyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTA1LTI5IDAx OjIyOjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTE2NzksMTQgKzE2NzksMTEgQEAgY3JlYXRlX2V4 Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAodm9pZAotICAgICAgIGRlYnVnX2hvb2sgPSBsb29r dXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoIl9VbndpbmRfRGVidWdIb29rIiwgb2JqZmlsZSk7Ci0g ICAgICAgaWYgKGRlYnVnX2hvb2sgIT0gTlVMTCkKLSAJewotLQkgIENPUkVfQUREUiBwYzsKLSAJ ICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKLSAKLS0JICBwYyA9IGZpbmRfZnVuY3Rpb25fc3RhcnRf cGMgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLAotLQkJCQkgICAgICAgU1lNQk9MX1ZBTFVF X0FERFJFU1MgKGRlYnVnX2hvb2spLAotLQkJCQkgICAgICAgU1lNQk9MX09CSl9TRUNUSU9OIChk ZWJ1Z19ob29rKSk7Ci0gCSAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZXRfb2Jq ZmlsZV9hcmNoIChvYmpmaWxlKSwKLS0JCQkJCSAgcGMsIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOwot KwkJCQkJICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZGVidWdfaG9vayksCi0rCQkJCQkgIGJwX2V4 Y2VwdGlvbl9tYXN0ZXIpOwotIAkgIGItPmFkZHJfc3RyaW5nID0geHN0cmR1cCAoIl9VbndpbmRf RGVidWdIb29rIik7Ci0gCSAgYi0+ZW5hYmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7Ci0gCX0KIC0t LSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N4eGV4ZWMuY2MJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKICsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N4eGV4ZWMuY2MJMjAx MC0wNS0yOSAwMToxODo1Ni4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMjUgQEAKCmRpZmYg LS1naXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1h cmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmluZGV4IDVhOWUwYzUuLmU4MWE4 ZGQgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNo CisrKyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDgg KzEsOCBAQAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYworSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDEtMTUgMjE6 MzU6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtw b2ludC5jCTIwMTAtMDEtMTUgMjE6NTE6MjAuMDAwMDAwMDAwICswMTAwCi1AQCAtOTE2Nyw2ICs5 MTY3LDQ5IEBAIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWEKKy0tLSBn ZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTA3LTEyIDIzOjA3 OjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2JyZWFrcG9p bnQuYwkyMDEwLTA3LTEzIDAwOjM4OjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTEwMTU5LDYgKzEw MTU5LDUwIEBAIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWEKICAgIHVw ZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCAoMSk7CiAgfQogIApAQCAtNDksMjYgKzQ5LDI3IEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9icmVha3BvaW50LmMKICsgICAgcXNvcnQg KGJwX2xvY2F0aW9uLCBicF9sb2NhdGlvbl9jb3VudCwgc2l6ZW9mICgqYnBfbG9jYXRpb24pLAog KwkgICBicF9sb2NhdGlvbl9jb21wYXJlKTsKICt9Ci0gCisrCiAgLyogUmVzZXQgYSBicmVha3Bv aW50IGdpdmVuIGl0J3Mgc3RydWN0IGJyZWFrcG9pbnQgKiBCSU5ULgogICAgIFRoZSB2YWx1ZSB3 ZSByZXR1cm4gZW5kcyB1cCBiZWluZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hfZXJyb3Jz LgotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuaAorICAgIFVudXNl ZCBpbiB0aGlzIGNhc2UuICAqLworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2JyZWFr cG9pbnQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYnJl YWtwb2ludC5oCTIwMTAtMDEtMTUgMjE6MzU6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMDEtMTUgMjE6NTA6MTIuMDAwMDAw MDAwICswMTAwCi1AQCAtMTAxNSw0ICsxMDE1LDcgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50 ICpnZXRfdHJhY2Vwb2ludAotICAgIGlzIG5ld2x5IGFsbG9jYXRlZDsgdGhlIGNhbGxlciBzaG91 bGQgZnJlZSB3aGVuIGRvbmUgd2l0aCBpdC4gICovCi0gZXh0ZXJuIFZFQyhicmVha3BvaW50X3Ap ICphbGxfdHJhY2Vwb2ludHMgKHZvaWQpOworLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9n ZGIvYnJlYWtwb2ludC5oCTIwMTAtMDctMTIgMjM6MDc6MzMuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMDctMTMgMDA6Mzc6MzQu MDAwMDAwMDAwICswMjAwCitAQCAtMTA4OCw0ICsxMDg4LDcgQEAgZXh0ZXJuIHZvaWQgY2hlY2tf dHJhY2Vwb2ludF9jb21tYW5kIChjaAorIGV4dGVybiB2b2lkIHN0YXJ0X3JicmVha19icmVha3Bv aW50cyAodm9pZCk7CisgZXh0ZXJuIHZvaWQgZW5kX3JicmVha19icmVha3BvaW50cyAodm9pZCk7 CiAgCiArZXh0ZXJuIHZvaWQgYnJlYWtwb2ludHNfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAogKwkJCQkgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRhKTsKICsKICAjZW5k aWYgLyogIWRlZmluZWQgKEJSRUFLUE9JTlRfSCkgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9vYmpmaWxlcy5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvb2JqZmls ZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvb2JqZmls ZXMuYwkyMDEwLTAxLTE1IDIxOjM1OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL29iamZpbGVzLmMJMjAxMC0wMS0xNSAyMTo1MDo0NS4wMDAwMDAwMDAgKzAx MDAKLUBAIC04NTYsNiArODU2LDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmkKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAx MC0wNS0xNiAwMjo0Njo0Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9vYmpmaWxlcy5jCTIwMTAtMDctMTMgMDA6Mzc6MTkuMDAwMDAwMDAwICswMjAwCitAQCAt ODM0LDYgKzgzNCwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZp CiAgCQkJCW9ial9zZWN0aW9uX2FkZHIgKHMpKTsKICAgICAgfQogIAoKZGlmZiAtLWdpdCBhL2dk Yi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApp bmRleCAwNjBiMTllLi40YmNjNGI0IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMu cGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0xLDggKzEsOCBAQAot SW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu OTAuMjAxMDAzMDYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDMtMDYgMjM6Mjc6MzAuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvZHdhcmYycmVhZC5jCTIw MTAtMDMtMDYgMjM6Mjg6NDMuMDAwMDAwMDAwICswMTAwCi1AQCAtNTkxMCw3ICs1OTEwLDEyIEBA IHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKy0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjI2OjI1LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEw LTA3LTEzIDAwOjM0OjAwLjAwMDAwMDAwMCArMDIwMAorQEAgLTU3MzcsNyArNTczNywxMiBAQCBy ZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgewogICAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cjsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKQEAgLTE2LDcgKzE2LDcgQEAg SW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xvY2F0aW9uLCBjdSk7CiAgICBpZiAoYXR0cikKLUBA IC01OTE5LDYgKzU5MjQsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpk aWUsCitAQCAtNTc0Niw2ICs1NzUxLDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVf aW5mbyAqZGllLAogICAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogICAgICAg ICAgewogICAgICAgICAgICBiYXNlID0gZGVjb2RlX2xvY2Rlc2MgKERXX0JMT0NLIChhdHRyKSwg Y3UpOwpAQCAtMjQsNyArMjQsNyBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvZHdh cmYycmVhZC5jCiAgICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rp b25fb2Zmc2V0IChhdHRyKSkKICAgICAgICAgIHsKLUBAIC01OTgwLDEyICs1OTg2LDE1IEBAIHJl YWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC01ODA3LDEyICs1ODEz LDE1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJICAgICAg ZWxzZQogIAkJZHdhcmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKCk7CiAgCkBA IC00Miw3ICs0Miw3IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9kd2FyZjJyZWFk LmMKICAJICBlbHNlCiAgCSAgICBTRVRfRklFTERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJ TktBR0VfTkFNRSAoc3ltKSk7CiAgCSAgRklFTERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBF IChzeW0pOwotQEAgLTU5OTksNyArNjAwOCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwKK0BAIC01ODI2LDcgKzU4MzUsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAo c3RydWN0IGRpZV9pbmZvICpkaWUsCiAgCiAgICAgICAgc3ltID0gbmV3X3N5bWJvbCAoZGllLCB0 eXBlLCBjdSk7CiAgICAgICAgLyogU1lNQk9MX1ZBTFVFX0FERFJFU1MgbmV2ZXIgZ2V0cyB1c2Vk IGFzIGFsbCBpdHMgZmllbGRzIGFyZSBzdGF0aWMuICAqLwpAQCAtNTEsMTEgKzUxLDExIEBAIElu ZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9kd2FyZjJyZWFkLmMKICAKICAgICAgICBzZXRf ZGllX3R5cGUgKGRpZSwgdHlwZSwgY3UpOwogICAgICB9Ci1JbmRleDogZ2RiLTcuMC45MC4yMDEw MDMwNi9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2dkYnR5 cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjkwLjIwMTAwMzA2Lm9yaWcvZ2RiL2dkYnR5 cGVzLmgJMjAxMC0wMy0wNiAyMzoyNjozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjkw LjIwMTAwMzA2L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDMtMDYgMjM6Mjg6NDMuMDAwMDAwMDAwICsw MTAwCi1AQCAtNDEyLDYgKzQxMiw3IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCist LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDctMTIgMjM6 MDc6MzQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZ2RidHlw ZXMuaAkyMDEwLTA3LTEzIDAwOjM0OjAwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM5NSw2ICszOTUs NyBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIGVudW0gZmllbGRfbG9jX2tpbmQK ICAgIHsKICAgICAgRklFTERfTE9DX0tJTkRfQklUUE9TLAkvKiBiaXRwb3MgKi8KQEAgLTYzLDcg KzYzLDcgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2dkYnR5cGVzLmgKICAgICAg RklFTERfTE9DX0tJTkRfUEhZU0FERFIsCS8qIHBoeXNhZGRyICovCiAgICAgIEZJRUxEX0xPQ19L SU5EX1BIWVNOQU1FCS8qIHBoeXNuYW1lICovCiAgICB9OwotQEAgLTU5MSw2ICs1OTIsNyBAQCBz dHJ1Y3QgbWFpbl90eXBlCitAQCAtNTc3LDYgKzU3OCw3IEBAIHN0cnVjdCBtYWluX3R5cGUKICAJ ICAgaXMgdGhlIGxvY2F0aW9uIChpbiB0aGUgdGFyZ2V0KSBvZiB0aGUgc3RhdGljIGZpZWxkLgog IAkgICBPdGhlcndpc2UsIHBoeXNuYW1lIGlzIHRoZSBtYW5nbGVkIGxhYmVsIG9mIHRoZSBzdGF0 aWMgZmllbGQuICovCiAgCkBAIC03MSw3ICs3MSw3IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAw MzA2L2dkYi9nZGJ0eXBlcy5oCiAgCUNPUkVfQUREUiBwaHlzYWRkcjsKICAJY2hhciAqcGh5c25h bWU7CiAgICAgICAgfQotQEAgLTEwOTEsNiArMTA5Myw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRl X2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC0xMDczLDYgKzEwNzUsNyBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBGSUVMRF9MT0NfS0lORCh0aGlz ZmxkKSAoKHRoaXNmbGQpLmxvY19raW5kKQogICNkZWZpbmUgRklFTERfQklUUE9TKHRoaXNmbGQp ICgodGhpc2ZsZCkubG9jLmJpdHBvcykKICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0 aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzbmFtZSkKQEAgLTc5LDcgKzc5LDcgQEAgSW5kZXg6 IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIEZJRUxEX1NUQVRJ Q19QSFlTQUREUih0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzYWRkcikKICAjZGVmaW5lIFNF VF9GSUVMRF9CSVRQT1ModGhpc2ZsZCwgYml0cG9zKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAo dGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9CSVRQT1MsCQlcCi1AQCAtMTA5OCw2ICsxMTAxLDcg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEwODAsNiAr MTA4Myw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVm aW5lIFNFVF9GSUVMRF9QSFlTTkFNRSh0aGlzZmxkLCBuYW1lKQkJCVwKICAgIChGSUVMRF9MT0Nf S0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJCVwKICAgICBGSUVMRF9T VEFUSUNfUEhZU05BTUUgKHRoaXNmbGQpID0gKG5hbWUpKQpAQCAtODcsNyArODcsNyBAQCBJbmRl eDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgU0VUX0ZJRUxE X1BIWVNBRERSKHRoaXNmbGQsIGFkZHIpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxk KSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlTQURE UiAodGhpc2ZsZCkgPSAoYWRkcikpCi1AQCAtMTExMCw2ICsxMTE0LDcgQEAgZXh0ZXJuIHZvaWQg YWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEwOTIsNiArMTA5Niw3IEBAIGV4dGVy biB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFRZUEVfRklFTERf TE9DX0tJTkQodGhpc3R5cGUsIG4pIEZJRUxEX0xPQ19LSU5EIChUWVBFX0ZJRUxEICh0aGlzdHlw ZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFBPUyh0aGlzdHlwZSwgbikgRklFTERfQklU UE9TIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJ Q19QSFlTTkFNRSh0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNOQU1FIChUWVBFX0ZJRUxE ICh0aGlzdHlwZSwgbikpCkBAIC05NSwxMSArOTUsMTEgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAx MDAzMDYvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERS KHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKFRZUEVfRklFTEQgKHRoaXN0eXBl LCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfQVJUSUZJQ0lBTCh0aGlzdHlwZSwgbikgRklFTERf QVJUSUZJQ0lBTChUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9C SVRTSVpFKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRTSVpFKFRZUEVfRklFTEQodGhpc3R5cGUsbikp Ci1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvanYtbGFuZy5jCitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC45MC4y MDEwMDMwNi5vcmlnL2dkYi9qdi1sYW5nLmMJMjAxMC0wMy0wNiAyMzoxOToxMy4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9qdi1sYW5nLmMJMjAxMC0wMy0wNiAy MzoyODo0My4wMDAwMDAwMDAgKzAxMDAKLUBAIC00MTYsNyArNDE2LDggQEAgamF2YV9saW5rX2Ns YXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvanYtbGFuZy5jCTIwMTAtMDUtMTcgMTk6MTg6MzkuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvanYtbGFuZy5jCTIwMTAtMDctMTMgMDA6MzQ6MDAuMDAw MDAwMDAwICswMjAwCitAQCAtNDA5LDcgKzQwOSw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2QKICAKICAgIGZpZWxkcyA9IE5VTEw7CiAgICBuZmllbGRzLS07CQkJ LyogRmlyc3Qgc2V0IHVwIGR1bW15ICJjbGFzcyIgZmllbGQuICovCkBAIC0xMDksNyArMTA5LDcg QEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2p2LWxhbmcuYwogICAgVFlQRV9GSUVM RF9OQU1FICh0eXBlLCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBUWVBFX0ZJRUxEX1RZUEUgKHR5 cGUsIG5maWVsZHMpID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBTRVRfVFlQRV9GSUVMRF9QUklW QVRFICh0eXBlLCBuZmllbGRzKTsKLUBAIC00NjIsNyArNDYzLDggQEAgamF2YV9saW5rX2NsYXNz X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorQEAgLTQ1Nyw3ICs0NTgsOCBAQCBqYXZhX2xpbmtf Y2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VUX1RZUEVfRklFTERfUFJPVEVD VEVEICh0eXBlLCBpKTsKICAJfQogICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJLyogQUND X1NUQVRJQyAqLwpAQCAtMTE5LDI3ICsxMTksMjcgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAz MDYvZ2RiL2p2LWxhbmcuYwogICAgICAgIGVsc2UKICAJVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUs IGkpID0gOCAqIGJvZmZzZXQ7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAwKQkvKiBGSUVM RF9VTlJFU09MVkVEX0ZMQUcgKi8KLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi92YWx1 ZS5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdmFsdWUuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuOTAuMjAxMDAzMDYub3JpZy9nZGIvdmFsdWUuYwkyMDEwLTAzLTA2IDIzOjE5 OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3ZhbHVlLmMJ MjAxMC0wMy0wNiAyMzoyODo0My4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODk3LDcgKzE4OTcsOCBA QCB2YWx1ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCi0gICBpZiAoVFlQRV9G SUVMRF9MT0NfS0lORCAodHlwZSwgZmllbGRubykgPT0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIp CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi92YWx1ZS5jCTIwMTAtMDctMTIgMjM6 MDc6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdmFsdWUu YwkyMDEwLTA3LTEzIDAwOjM1OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTE5NDMsNyArMTk0Myw4 IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgICAgewotICAg ICAgIHJldHZhbCA9IHZhbHVlX2F0IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLAot LQkJCSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUiAodHlwZSwgZmllbGRubykpOwotKwkJCSBU WVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUiAodHlwZSwgZmllbGRubykKLSsJCQkgICArIChUWVBF X09CSkZJTEUgKHR5cGUpID09IE5VTEwgPyAwIDogQU5PRkZTRVQgKFRZUEVfT0JKRklMRSAodHlw ZSktPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAoVFlQRV9PQkpGSUxFICh0eXBlKSkp KSk7Ci0gICAgIH0KLSAgIGVsc2UKKyAgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUjoK KyAgICAgICByZXR2YWwgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZp ZWxkbm8pLAorLQkJCSAgICAgIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSICh0eXBlLCBmaWVs ZG5vKSk7CisrCQkJICAgICAgVFlQRV9GSUVMRF9TVEFUSUNfUEhZU0FERFIgKHR5cGUsIGZpZWxk bm8pCisrCQkJICAgICAgKyAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMID8gMCA6IEFOT0ZG U0VUIChUWVBFX09CSkZJTEUgKHR5cGUpLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQg KFRZUEVfT0JKRklMRSAodHlwZSkpKSkpOworICAgICAgIGJyZWFrOworICAgICBjYXNlIEZJRUxE X0xPQ19LSU5EX1BIWVNOQU1FOgogICAgICB7Ci1AQCAtMTkyNyw3ICsxOTI4LDggQEAgdmFsdWVf c3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaQorQEAgLTE5NzcsNyArMTk3OCw4IEBA IHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgCX0KICAgICAgICBp ZiAocmV0dmFsICYmIFZBTFVFX0xWQUwgKHJldHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgCVNFVF9G SUVMRF9QSFlTQUREUiAoVFlQRV9GSUVMRCAodHlwZSwgZmllbGRubyksCiAtCQkJICAgIHZhbHVl X2FkZHJlc3MgKHJldHZhbCkpOwogKwkJCSAgICB2YWx1ZV9hZGRyZXNzIChyZXR2YWwpCi0rCQkJ ICAgICAgLSAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMID8gMCA6IEFOT0ZGU0VUIChUWVBF X09CSkZJTEUgKHR5cGUpLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKFRZUEVfT0JK RklMRSAodHlwZSkpKSkpOworKwkJCSAgICAtIChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwg PyAwIDogQU5PRkZTRVQgKFRZUEVfT0JKRklMRSAodHlwZSktPnNlY3Rpb25fb2Zmc2V0cywgU0VD VF9PRkZfVEVYVCAoVFlQRV9PQkpGSUxFICh0eXBlKSkpKSk7CisgICAgICAgYnJlYWs7CiAgICAg IH0KLSAgIHJldHVybiByZXR2YWw7Ci0gfQorICAgICBkZWZhdWx0OgoKZGlmZiAtLWdpdCBhL2dk Yi1hcmNoZXItdmxhLXJlZi1vcHRpbWl6ZWRvdXQucGF0Y2ggYi9nZGItYXJjaGVyLXZsYS1yZWYt b3B0aW1pemVkb3V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjg2YmRh Li4wMDAwMDAwCi0tLSBhL2dkYi1hcmNoZXItdmxhLXJlZi1vcHRpbWl6ZWRvdXQucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotY29tbWl0IGE2ODNiYWM3M2FmNzRhNzU3NTkx NjcyZDg5ZDcyMDE2OWMwYjVlYzkKLUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci1EYXRlOiAgIFRodSBNYXkgMTMgMTg6MDg6MzAgMjAxMCArMDIwMAot Ci0gICAgU3VwcG9ydCBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyBhbiBvcHRpbWl6 ZWQtb3V0IHZhcmlhYmxlLgotICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1 Zy5jZ2k/aWQ9NTkxODc5Ci0KLS0tLSBhL2dkYi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJm MmxvYy5jCi1AQCAtMzgzLDYgKzM4Myw5IEBAIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbCAoc3Ry dWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpkbGxiYXRvbiwKLSAgIHNpemVfdCBzaXplOwotICAg c3RydWN0IHZhbHVlICp2YWw7Ci0gCi0rICBpZiAoIWRsbGJhdG9uKQotKyAgICByZXR1cm4gMDsK LSsKLSAgIGRhdGEgPSBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKGRsbGJhdG9uLCAmc2l6ZSwK LSAJCQkJICAgZ2V0X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0gICBpZiAoZGF0 YSA9PSBOVUxMKQotLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQu YwotQEAgLTExNjkzLDYgKzExNjkzLDExIEBAIGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24g KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIHsKLSAgIHN0 cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqYmF0b247Ci0gCi0rICAvKiBEV19BVF9sb2NhdGlv biBvZiB0aGUgcmVmZXJlbmNlZCBESUUgbWF5IGJlIG1pc3NpbmcgaWYgdGhlIHJlZmVyZW5jZWQK LSsgICAgIHZhcmlhYmxlIGhhcyBiZWVuIG9wdGltaXplZCBvdXQuICAqLwotKyAgaWYgKCFhdHRy KQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSAgIGlmICghKGF0dHJfZm9ybV9pc19zZWN0aW9uX29m ZnNldCAoYXR0cikKLSAJLyogIi5kZWJ1Z19sb2MiIG1heSBub3QgZXhpc3QgYXQgYWxsLCBvciB0 aGUgb2Zmc2V0IG1heSBiZSBvdXRzaWRlCi0gCSAgIHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwg dGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGluIHRoZQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItYm91bmQtbG9jbGlzdC5TCi1AQCAtNTEsNiArNTEsMTcgQEAgdmFyZGF0YToKLSAJLjRi eXRlCQkuTGxlbl92YXItLkxjdTFfYmVnaW4JLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KLSAJLmJ5 dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGllICovCi0gCi0rCS8qIERXX0FUX3VwcGVy X2JvdW5kIGlzIHJlZmVyZW5jaW5nIGFuIG9wdGltaXplZC1vdXQgdmFyaWFibGUuICAqLwotKy5M YXJyYXliX3R5cGU6Ci0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90eXBl ICovCi0rCS40Ynl0ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwot KwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlwZSAqLwotKwku NGJ5dGUJCS5MdWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJ CTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkuNGJ5dGUJCS5MbGVuYl92YXItLkxjdTFf YmVnaW4JLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hp bGRyZW4gb2YgZGllICovCi0rCi0gLkx1aW50X3R5cGU6Ci0gCS51bGViMTI4CTQJCQkvKiBBYmJy ZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSAJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9u YW1lICovCi1AQCAtNjksOSArODAsMjQgQEAgdmFyZGF0YToKLSAJLjRieXRlCQkuTHVpbnRfdHlw ZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0gCS40Ynl0ZQkJLkxsZW5fbG9jbGlzdC0u TGxvY2xpc3QJLyogRFdfQVRfbG9jYXRpb24gKi8KLSAKLSsJLyogb3B0aW1pemVkLW91dCB2YXJp YWJsZSBmb3IgYl9zdHJpbmcuICAqLwotKy5MbGVuYl92YXI6Ci0rCS51bGViMTI4CTcJCQkvKiBB YmJyZXY6IERXX1RBR192YXJpYWJsZSBhcnRpZmljaWFsIG5vIERXX0FUX2xvY2F0aW9uICovCi0r CS5ieXRlCQkxCQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLwotKwkuNGJ5dGUJCS5MdWludF90eXBl LS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSAJLnVsZWIxMjgJNgkJCS8qIEFiYnJl djogRFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCi0gCS5zdHJpbmcJCSJhX3N0cmlu ZyIJCS8qIERXX0FUX25hbWUgKi8KLS0JLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFfYmVnaW4v KiBEV19BVF90eXBlICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERX X0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6 CS5ieXRlCQkzCQkJLyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAg PGFkZHI+ICovCi0rMjoKLSsKLSsJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcg YW4gb3B0aW1pemVkLW91dCB2YXJpYWJsZS4gICovCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6 IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYl9zdHJpbmci CQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAv KiBEV19BVF90eXBlICovCi0gCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8K LSAxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLwotIAkuNGJ5dGUJCXZhcmRhdGEJCQkv KiAgIDxhZGRyPiAqLwotQEAgLTE2NCw2ICsxOTAsMTYgQEAgdmFyZGF0YToKLSAJLmJ5dGUJCTB4 MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSAJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSAK LSsJLnVsZWIxMjgJNwkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MzQJCQkvKiBE V19UQUdfdmFyaWFibGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCi0rCS51 bGViMTI4CTB4MzQJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rCS51bGViMTI4CTB4MGMJCQkv KiBEV19GT1JNX2ZsYWcgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KLSsJ LnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotIAkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLwotIAotIC8qIFN0cmluZyB0YWJsZSAqLwotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAotQEAgLTQ2LDMgKzQ2LDYg QEAgaWYgIVtydW50byAiKm1haW4iXSB7Ci0gCi0gZ2RiX3Rlc3QgInAgYV9zdHJpbmciIHsgPSAi c2VlbiJ9Ci0gZ2RiX3Rlc3QgInB0eXBlIGFfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFs0XF19Ci0r Ci0rZ2RiX3Rlc3QgInAgYl9zdHJpbmciIHsgPSAoMHhbMC05YS1mXSsgKT8ic2Vlbm5vdHNlZW4i fQotK2dkYl90ZXN0ICJwdHlwZSBiX3N0cmluZyIge3R5cGUgPSBjaGFyIFxbXF19CgpkaWZmIC0t Z2l0IGEvZ2RiLWFyY2hlci12bGEtdGVzdC1vb20ucGF0Y2ggYi9nZGItYXJjaGVyLXZsYS10ZXN0 LW9vbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFkNWNhNC4uMDAwMDAw MAotLS0gYS9nZGItYXJjaGVyLXZsYS10ZXN0LW9vbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDIxICswLDAgQEAKLWNvbW1pdCBlYzVhNzc2OWQ1YzA1NTQyZDEyZmMyMWFmYTI1ZjMyMzYwZGI3 ZGU0Ci1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot RGF0ZTogICBXZWQgTWF5IDEyIDIyOjAwOjQ2IDIwMTAgKzAyMDAKLQotICAgIEZpeCBtYl9yZXNl cnZlOgotICAgIAlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTU5 MDYzNQotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwCi1pbmRleCA3MjAz YTQ4Li4yNGE2MDhmIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3Zl cmZsb3cuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAK LUBAIC02Niw3ICs2Niw4IEBAIHByb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKLSAKLSBzZXQg cGFnZXNfZm91bmQgW21lbW9yeV92X3BhZ2VzX2dldF0KLSAKLS1zZXQgbWJfcmVzZXJ2ZSAxMAot KyMgczM5MHggd2l0aCBnbGliYy1kZWJ1Z2luZm8uczM5MHggaW5zdGFsbGVkIHVzZWQgYXBwcm94 LiAxNk1CLgotK3NldCBtYl9yZXNlcnZlIDQwCi0gdmVyYm9zZSAtbG9nICJwYWdlc19mb3VuZCA9 ICRwYWdlc19mb3VuZCwgbWJfcmVzZXJ2ZSA9ICRtYl9yZXNlcnZlIgotIHNldCBrYl9mb3VuZCBb ZXhwciAkcGFnZXNfZm91bmQgKiAkcGFnZXNpemUgLyAxMDI0XQotIHNldCBrYl9wZXJtaXQgW2V4 cHIgJGtiX2ZvdW5kICsgMSAqIDEwMjQgKyAkbWJfcmVzZXJ2ZSAqIDEwMjRdCgpkaWZmIC0tZ2l0 IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggYzliNWM5Yi4uYzE0 YTRiZSAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNo CkBAIC0yLDI4OSArMiw1MyBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVj dEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFn ZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDM5OTk4YzQ5Njk4OGZhYWExNTA5Y2M2YWI3 NmI1YzQ3Nzc2NTliZjQKK2NvbW1pdCAwYmM5YTkzNzI1ZDdhN2JjZjFlMzBmMDcyYTEyY2M1MTg2 ZTQxZGMyCiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKLWFyY2hl ci10cm9tZXktZGVsYXllZC1zeW1maWxlMgotYXJjaGVyLXRyb21leS1weXRob24KLWFyY2hlci1w bXVsZG9vbi1uZXh0LW92ZXItdGhyb3cyCi1hcmNoZXItamFua3JhdG9jaHZpbC1mb3J0cmFuLW1v ZHVsZTIKLWFyY2hlci1qYW5rcmF0b2NodmlsLXdhdGNocG9pbnQyCiBhcmNoZXItamFua3JhdG9j aHZpbC12bGEKLWFyY2hlci1rZWl0aHMtZXhwci1jdW11bGF0aXZlCi0jIHBsdXMgb2xkZXIgYXJj aGVyLWphbmtyYXRvY2h2aWwtaWZ1bmMKK2FyY2hlci1qYW5rcmF0b2NodmlsLXdhdGNocG9pbnQz CithcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYworYXJjaGVyLXBtdWxkb29uLW5leHQtb3Zlci10 aHJvdzIKKyNUT0RPOmFyY2hlci10cm9tZXktcHl0aG9uIChwb3NzaWJseSBvbmx5IGV4dHJhY3Rl ZCBwYXJ0cykKKyNUT0RPOmFyY2hlci10cm9tZXktb3B0aW9uYWwtcHN5bXRhYiAobW9yZSBmcmVz aCBwYXRjaGVzIGFyZSBhdCBnZGItcGF0Y2hlc0ApCisjVE9ETzphcmNoZXItdHJvbWV5LXRocmVh ZGVkLWR3YXJmCiAKIAotZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmls ZS5pbgotaW5kZXggOThmNDJiOS4uZGJmODI3MyAxMDA2NDQKLS0tLSBhL2dkYi9NYWtlZmlsZS5p bgotKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtMTY3LDYgKzE2NywxMiBAQCBUQVJHRVRfU1lT VEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJ TkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKLSAKLSAjIERpZCB0aGUgdXNlciBnaXZl IHVzIGEgLS13aXRoLWdkYi1kYXRhZGlyIG9wdGlvbj8KLStHREJfREFUQURJUl9QQVRIID0gQEdE Ql9EQVRBRElSX1BBVEhACi0rCi0rIyBUaGUgYXJndW1lbnQgdG8gLS13aXRoLXB5dGhvbmRpci4g IElmIG5vdCBnaXZlbiwgdGhpcyBpcwotKyMgR0RCX0RBVEFESVJfUEFUSC9weXRob24uCi0rcHl0 aG9uZGlyID0gQHB5dGhvbmRpckAKLSsKLSBHREJfREFUQURJUiA9IEBHREJfREFUQURJUkAKLSAK LSAjIEhlbHBlciBjb2RlIGZyb20gZ251bGliLgotQEAgLTI2NywyMyArMjczLDM5IEBAIFNVQkRJ Ul9UVUlfQ0ZMQUdTPSBcCi0gIwotIFNVQkRJUl9QWVRIT05fT0JTID0gXAotIAlweXRob24ubyBc Ci0rCXB5LWJsb2NrLm8gXAotKwlweS1icmVha3BvaW50Lm8gXAotIAlweS1jbWQubyBcCi0gCXB5 LWZyYW1lLm8gXAotIAlweS1mdW5jdGlvbi5vIFwKLSsJcHktaG9va3MubyBcCi0rCXB5LWluZmVy aW9yLm8gXAotKwlweS1pbmZ0aHJlYWQubyBcCi0gCXB5LWxhenktc3RyaW5nLm8gXAotIAlweS1v YmpmaWxlLm8gXAotKwlweS1wYXJhbS5vIFwKLSAJcHktcHJldHR5cHJpbnQubyBcCi0rCXB5LXN5 bWJvbC5vIFwKLSsJcHktc3ltdGFiLm8gXAotIAlweS10eXBlLm8gXAotIAlweS11dGlscy5vIFwK LSAJcHktdmFsdWUubwotIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKLSAJcHl0aG9uL3B5dGhvbi5j IFwKLSsJcHl0aG9uL3B5LWJsb2NrLmMgXAotKwlweXRob24vcHktYnJlYWtwb2ludC5jIFwKLSAJ cHl0aG9uL3B5LWNtZC5jIFwKLSAJcHl0aG9uL3B5LWZyYW1lLmMgXAotIAlweXRob24vcHktZnVu Y3Rpb24uYyBcCi0rCXB5dGhvbi9weS1ob29rcy5jIFwKLSsJcHl0aG9uL3B5LWluZmVyaW9yLmMg XAotKwlweXRob24vcHktaW5mdGhyZWFkLmMgXAotIAlweXRob24vcHktbGF6eS1zdHJpbmcuYyBc Ci0gCXB5dGhvbi9weS1vYmpmaWxlLmMgXAotKwlweXRob24vcHktcGFyYW0uYyBcCi0gCXB5dGhv bi9weS1wcmV0dHlwcmludC5jIFwKLSsJcHl0aG9uL3B5LXN5bWJvbC5jIFwKLSsJcHl0aG9uL3B5 LXN5bXRhYi5jIFwKLSAJcHl0aG9uL3B5LXR5cGUuYyBcCi0gCXB5dGhvbi9weS11dGlscy5jIFwK LSAJcHl0aG9uL3B5LXZhbHVlLmMKLUBAIC03NTYsNyArNzc4LDggQEAgY29uZmlnL3JzNjAwMC9u bS1yczYwMDAuaCB0b3AuaCBic2Qta3ZtLmggZ2RiLXN0YWJzLmggcmVnZ3JvdXBzLmggXAotIGFu bm90YXRlLmggc2ltLXJlZ25vLmggZGljdGlvbmFyeS5oIGRmcC5oIG1haW4uaCBmcmFtZS11bndp bmQuaAlcCi0gcmVtb3RlLWZpbGVpby5oIGkzODYtbGludXgtdGRlcC5oIHZheC10ZGVwLmggb2Jq Yy1sYW5nLmggXAotIHNlbnRpbmVsLWZyYW1lLmggYmNhY2hlLmggc3ltZmlsZS5oIHdpbmRvd3Mt dGRlcC5oIGxpbnV4LXRkZXAuaCBcCi0tZ2RiX3VzbGVlcC5oIGppdC5oIHhtbC1zeXNjYWxsLmgg YWRhLW9wZXJhdG9yLmluYyBtaWNyb2JsYXplLXRkZXAuaAotK2dkYl91c2xlZXAuaCBqaXQuaCBw eXRob24vcHl0aG9uLmggcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIFwKLSt4bWwtc3lzY2FsbC5o IGFkYS1vcGVyYXRvci5pbmMgbWljcm9ibGF6ZS10ZGVwLmgKLSAKLSAjIEhlYWRlciBmaWxlcyB0 aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4K LSAKLUBAIC0xMjcwLDYgKzEyOTMsMTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBj b25maWcuc3RhdHVzCi0gCSAgQ09ORklHX0xJTktTPSBcCi0gCSAgJChTSEVMTCkgY29uZmlnLnN0 YXR1cwotIAotKy5nZGJpbml0OiAkKHNyY2RpcikvZ2RiaW5pdC5pbiBjb25maWcuc3RhdHVzCi0r CUNPTkZJR19GSUxFUz0iLmdkYmluaXQ6Z2RiaW5pdC5pbiIgXAotKwkgIENPTkZJR19DT01NQU5E Uz0gXAotKwkgIENPTkZJR19IRUFERVJTPSBcCi0rCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwot KwotIGNvbmZpZy5zdGF0dXM6ICQoc3JjZGlyKS9jb25maWd1cmUgY29uZmlndXJlLnRndCBjb25m aWd1cmUuaG9zdAotIAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjawotIAotQEAgLTE5 NzAsNiArMTk5OSwxNCBAQCBweXRob24ubzogJChzcmNkaXIpL3B5dGhvbi9weXRob24uYwotIAkk KENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weXRob24uYwotIAkk KFBPU1RDT01QSUxFKQotIAotK3B5LWJsb2NrLm86ICQoc3JjZGlyKS9weXRob24vcHktYmxvY2su YwotKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1ibG9j ay5jCi0rCSQoUE9TVENPTVBJTEUpCi0rCi0rcHktYnJlYWtwb2ludC5vOiAkKHNyY2RpcikvcHl0 aG9uL3B5LWJyZWFrcG9pbnQuYwotKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNk aXIpL3B5dGhvbi9weS1icmVha3BvaW50LmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLSBweS1jbWQu bzogJChzcmNkaXIpL3B5dGhvbi9weS1jbWQuYwotIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFH UykgJChzcmNkaXIpL3B5dGhvbi9weS1jbWQuYwotIAkkKFBPU1RDT01QSUxFKQotQEAgLTE5ODIs NiArMjAxOSwxOCBAQCBweS1mdW5jdGlvbi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0aW9u LmMKLSAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktZnVu Y3Rpb24uYwotIAkkKFBPU1RDT01QSUxFKQotIAotK3B5LWhvb2tzLm86ICQoc3JjZGlyKS9weXRo b24vcHktaG9va3MuYwotKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5 dGhvbi9weS1ob29rcy5jCi0rCSQoUE9TVENPTVBJTEUpCi0rCi0rcHktaW5mZXJpb3IubzogJChz cmNkaXIpL3B5dGhvbi9weS1pbmZlcmlvci5jCi0rCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdT KSAkKHNyY2RpcikvcHl0aG9uL3B5LWluZmVyaW9yLmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLStw eS1pbmZ0aHJlYWQubzogJChzcmNkaXIpL3B5dGhvbi9weS1pbmZ0aHJlYWQuYwotKwkkKENPTVBJ TEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1pbmZ0aHJlYWQuYwotKwkk KFBPU1RDT01QSUxFKQotKwotIHB5LWxhenktc3RyaW5nLm86ICQoc3JjZGlyKS9weXRob24vcHkt bGF6eS1zdHJpbmcuYwotIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5 dGhvbi9weS1sYXp5LXN0cmluZy5jCi0gCSQoUE9TVENPTVBJTEUpCi1AQCAtMTk5MCwxMCArMjAz OSwyMiBAQCBweS1vYmpmaWxlLm86ICQoc3JjZGlyKS9weXRob24vcHktb2JqZmlsZS5jCi0gCSQo Q09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LW9iamZpbGUuYwot IAkkKFBPU1RDT01QSUxFKQotIAotK3B5LXBhcmFtLm86ICQoc3JjZGlyKS9weXRob24vcHktcGFy YW0uYwotKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1w YXJhbS5jCi0rCSQoUE9TVENPTVBJTEUpCi0rCi0gcHktcHJldHR5cHJpbnQubzogJChzcmNkaXIp L3B5dGhvbi9weS1wcmV0dHlwcmludC5jCi0gCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAk KHNyY2RpcikvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKLSAJJChQT1NUQ09NUElMRSkKLSAKLStw eS1zeW1ib2wubzogJChzcmNkaXIpL3B5dGhvbi9weS1zeW1ib2wuYwotKwkkKENPTVBJTEUpICQo UFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1zeW1ib2wuYwotKwkkKFBPU1RDT01Q SUxFKQotKwotK3B5LXN5bXRhYi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LXN5bXRhYi5jCi0rCSQo Q09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LXN5bXRhYi5jCi0r CSQoUE9TVENPTVBJTEUpCi0rCi0gcHktdHlwZS5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LXR5cGUu YwotIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS10eXBl LmMKLSAJJChQT1NUQ09NUElMRSkKLUBAIC0yMDA2LDYgKzIwNjcsMzYgQEAgcHktdmFsdWUubzog JChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCi0gCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdT KSAkKHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMKLSAJJChQT1NUQ09NUElMRSkKLSAKLSsjIEFs bCBweXRob24gbGlicmFyeSBmaWxlcywgd2l0aCB0aGUgInB5dGhvbi9saWIiIHN0cmlwcGVkIG9m Zi4KLSsjIE5vdGUgdGhhdCB3ZSBzaG91bGQgb25seSBpbnN0YWxsIGZpbGVzIGluIHRoZSAiZ2Ri IiBtb2R1bGUuCi0rUFlfRklMRVMgPSBnZGIvRnJhbWVJdGVyYXRvci5weSBnZGIvRnJhbWVXcmFw cGVyLnB5IGdkYi9jb21tYW5kL2FsaWFzLnB5IFwKLSsgICAgZ2RiL2NvbW1hbmQvYmFja3RyYWNl LnB5IGdkYi9jb21tYW5kL3JlcXVpcmUucHkgXAotKyAgICBnZGIvY29tbWFuZC9wYWhvbGUucHkg Z2RiL2NvbW1hbmQvdXB0by5weSBnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCi0rICAgIGdkYi9j b21tYW5kL2lnbm9yZV9lcnJvcnMucHkgZ2RiL2NvbW1hbmQvc2F2ZV9icmVha3BvaW50cy5weSBc Ci0rICAgIGdkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkgZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5 IFwKLSsgICAgZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IGdkYi9iYWNrdHJhY2UucHkgZ2RiL19f aW5pdF9fLnB5Ci0rCi0rIyBJbnN0YWxsIHRoZSBQeXRob24gbGlicmFyeS4gIFB5dGhvbiBsaWJy YXJ5IGZpbGVzIGdvIHVuZGVyCi0rIyAkKHB5dGhvbmRpcikuCi0raW5zdGFsbC1weXRob246Ci0r CWZpbGVzPSckKFBZX0ZJTEVTKSc7IGZvciBmaWxlIGluICQkZmlsZXM7IGRvIFwKLSsJICBkaXI9 YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdgOyBcCi0rCSAgJChTSEVMTCkgJChz cmNkaXIpLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQocHl0aG9uZGlyKS8kJGRpcjsgXAot KwkgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvcHl0aG9uL2xpYi8kJGZpbGUgJChERVNURElS KSQocHl0aG9uZGlyKS8kJGZpbGU7IFwKLSsJZG9uZQotKwotKyMgT3RoZXIgcGFja2FnZXMgbWF5 IGhhdmUgdGhlaXIgZmlsZXMgaW5zdGFsbGVkIGluICQocHl0aG9uZGlyKS4KLSt1bmluc3RhbGwt cHl0aG9uOgotKwlmaWxlcz0nJChQWV9GSUxFUyknOyBmb3IgZmlsZSBpbiAkJGZpbGVzOyBkbyBc Ci0rCSAgc2xhc2hkaXI9YGVjaG8gIi8kJGZpbGUiIHwgc2VkICdzLC9bXi9dKiQkLCwnYDsgXAot KwkgIHJtIC1mICQoREVTVERJUikkKHB5dGhvbmRpcikvJCRmaWxlOyBcCi0rCSAgd2hpbGUgdGVz dCAieCQkZmlsZSIgIT0gIngkJHNsYXNoZGlyIjsgZG8gXAotKwkgICAgcm1kaXIgMj4vZGV2L251 bGwgIiQoREVTVERJUikkKHB5dGhvbmRpcikkJHNsYXNoZGlyIjsgXAotKwkgICAgZmlsZT0iJCRz bGFzaGRpciI7IFwKLSsJICAgIHNsYXNoZGlyPWBlY2hvICIkJGZpbGUiIHwgc2VkICdzLC9bXi9d KiQkLCwnYDsgXAotKwkgIGRvbmUgXAotKwlkb25lCi0rCi0gIwotICMgRGVwZW5kZW5jeSB0cmFj a2luZy4gIE1vc3Qgb2YgdGhpcyBpcyBjb25kaXRpb25hbCBvbiBHTlUgTWFrZSBiZWluZwotICMg Zm91bmQgYnkgY29uZmlndXJlOyBpZiBHTlUgTWFrZSBpcyBub3QgZm91bmQsIHdlIGZhbGwgYmFj ayB0byBhCiBkaWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwotaW5k ZXggN2EyZDJjYS4uNGJmNGUzMSAxMDA2NDQKK2luZGV4IDFkNGMzOGIuLmNhZmI4OGUgMTAwNjQ0 CiAtLS0gYS9nZGIvYWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC00NzgxLDE0 ICs0NzgxLDEwIEBAIGFkYV9sb29rdXBfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrMCwKK0BAIC0xMTExNCw2ICsxMTExNCw3IEBAIGFkYV9vcGVyYXRv cl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxl bnAsCiAgCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotIGFkYV9sb29rdXBfc3ltYm9sX25vbmxv Y2FsIChjb25zdCBjaGFyICpuYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpsaW5rYWdlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbikKKyBzdGF0aWMgaW50CisgYWRhX29wZXJhdG9yX2NoZWNrIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorKwkJICAgIGludCAoKnR5cGVfZnVuYykg KHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1 bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCisgCQkgICAgdm9pZCAq ZGF0YSkKICB7Ci0tICBpZiAobGlua2FnZV9uYW1lID09IE5VTEwpCi0tICAgIGxpbmthZ2VfbmFt ZSA9IG5hbWU7Ci0tICByZXR1cm4gYWRhX2xvb2t1cF9zeW1ib2wgKGxpbmthZ2VfbmFtZSwgYmxv Y2tfc3RhdGljX2Jsb2NrIChibG9jayksIGRvbWFpbiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCk7Ci0rICByZXR1cm4gYWRhX2xvb2t1cF9zeW1ib2wgKG5hbWUsIGJsb2NrX3N0 YXRpY19ibG9jayAoYmxvY2spLCBkb21haW4sIE5VTEwpOwotIH0KLSAKLSAKLUBAIC0xMDkzOCw2 ICsxMDkzNCw0MCBAQCBhZGFfb3BlcmF0b3JfbGVuZ3RoIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgcGMsIGludCAqb3BsZW5wLCBpbnQgKmFyZ3NwKQotICAgICB9Ci0gfQorQEAgLTExMTI4 LDEyICsxMTEyOSwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpl eHAsIGludCBwb3MsCisgCWJyZWFrOwogIAotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHBf ZGVzY3JpcHRvciBtZXRob2Qgb3BlcmF0b3JfY2hlY2suICAqLwotKwotK3N0YXRpYyBpbnQKLSth ZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0rCQkg ICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAotKwkJ ICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpk YXRhKSwKLSsJCSAgICB2b2lkICpkYXRhKQotK3sKLSsgIGNvbnN0IHVuaW9uIGV4cF9lbGVtZW50 ICpjb25zdCBlbHRzID0gZXhwLT5lbHRzOwotKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBOVUxMOwot KwotKyAgc3dpdGNoIChlbHRzW3Bvc10ub3Bjb2RlKQotKyAgICB7Ci0rICAgICAgY2FzZSBVTk9Q X0lOX1JBTkdFOgotKyAgICAgIGNhc2UgVU5PUF9RVUFMOgotKwl0eXBlID0gZWx0c1twb3MgKyAx XS50eXBlOwotKwlicmVhazsKLSsKLSsgICAgICBkZWZhdWx0OgorICAgICAgIGRlZmF1bHQ6Cist CXJldHVybiBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoZXhwLCBwb3MsIG9iamZpbGVfZnVuYywg ZGF0YSk7CiArCXJldHVybiBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoZXhwLCBwb3MsIHR5cGVf ZnVuYywgb2JqZmlsZV9mdW5jLAogKwkJCQkJZGF0YSk7Ci0rICAgIH0KLSsKLSsgIC8qIEludm9r ZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24t TlVMTC4gICovCi0rCisgICAgIH0KKyAKKyAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUg YW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCisgCistICBpZiAo dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpCiArICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMgJiYg KCp0eXBlX2Z1bmMpICh0eXBlLCBkYXRhKSkKICsgICAgcmV0dXJuIDE7CiArICBpZiAodHlwZSAm JiBUWVBFX09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwotKyAgICAgICYmICgqb2JqZmls ZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCi0rICAgIHJldHVybiAxOwotKwot KyAgcmV0dXJuIDA7Ci0rfQotKwotIHN0YXRpYyBjaGFyICoKLSBhZGFfb3BfbmFtZSAoZW51bSBl eHBfb3Bjb2RlIG9wY29kZSkKLSB7Ci1AQCAtMTEzMjYsNiArMTEzNTYsNyBAQCBwYXJzZSAodm9p ZCkKLSBzdGF0aWMgY29uc3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGFkYV9leHBfZGVzY3JpcHRv ciA9IHsKLSAgIGFkYV9wcmludF9zdWJleHAsCi0gICBhZGFfb3BlcmF0b3JfbGVuZ3RoLAotKyAg YWRhX29wZXJhdG9yX2NoZWNrLAotICAgYWRhX29wX25hbWUsCi0gICBhZGFfZHVtcF9zdWJleHBf Ym9keSwKLSAgIGFkYV9ldmFsdWF0ZV9zdWJleHAKLWRpZmYgLS1naXQgYS9nZGIvYWxwaGEtbGlu dXgtdGRlcC5jIGIvZ2RiL2FscGhhLWxpbnV4LXRkZXAuYwotaW5kZXggM2M3MWYyZi4uYmJmZTVh MSAxMDA2NDQKLS0tLSBhL2dkYi9hbHBoYS1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9hbHBoYS1s aW51eC10ZGVwLmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgInN5bXRhYi5oIgotICNp bmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAibGlu dXgtdGRlcC5oIgotIAotICNpbmNsdWRlICJhbHBoYS10ZGVwLmgiCi0gCi1AQCAtMjM2LDYgKzIz Nyw5IEBAIGFscGhhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIAotICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29y ZV9zZWN0aW9uCi0gICAgIChnZGJhcmNoLCBhbHBoYV9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3Nl Y3Rpb24pOwotKwotKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Cisg ICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJTEUgKHR5cGUpLCBkYXRhKSkKKyAg ICAgcmV0dXJuIDE7CiAgCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlz c2luZy1wcm90b3R5cGVzLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvYW1kNjQtbGludXgtbmF0LmMg Yi9nZGIvYW1kNjQtbGludXgtbmF0LmMKLWluZGV4IDVjOWU1NTguLjU1YTE4NzMgMTAwNjQ0Citp bmRleCBjMGVkYzEwLi4xN2QzNmI1IDEwMDY0NAogLS0tIGEvZ2RiL2FtZDY0LWxpbnV4LW5hdC5j CiArKysgYi9nZGIvYW1kNjQtbGludXgtbmF0LmMKLUBAIC0zNTAsNiArMzUwLDIwIEBAIGFtZDY0 X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorQEAgLTM3NSw2ICsz NzUsMjAgQEAgYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2sp CiAgICAgIH0KICB9CiAgCkBAIC0zMDUsNyArNjksNyBAQCBpbmRleCA1YzllNTU4Li41NWExODcz IDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfbmV3X3RocmVhZCAocHRpZF90 IHB0aWQpCi1AQCAtNzAyLDYgKzcxNiw3IEBAIF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25hdCAo dm9pZCkKK0BAIC03OTYsNiArODEwLDcgQEAgX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0ICh2 b2lkKQogICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRkciA9IGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2Fk ZHI7CiAgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0gYW1kNjRfbGludXhfZHJfZ2V0X3N0YXR1 czsKICAgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyA9IGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0 YXR1czsKQEAgLTMxMyw2OCArNzcsMTEgQEAgaW5kZXggNWM5ZTU1OC4uNTVhMTg3MyAxMDA2NDQK ICAgIGkzODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAoOCk7CiAgCiAgICAvKiBPdmVycmlk ZSB0aGUgR05VL0xpbnV4IGluZmVyaW9yIHN0YXJ0dXAgaG9vay4gICovCi1kaWZmIC0tZ2l0IGEv Z2RiL2FtZDY0LWxpbnV4LXRkZXAuYyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKLWluZGV4IGMy OGVlZjcuLjAyYzExZTEgMTAwNjQ0Ci0tLS0gYS9nZGIvYW1kNjQtbGludXgtdGRlcC5jCi0rKysg Yi9nZGIvYW1kNjQtbGludXgtdGRlcC5jCi1AQCAtMTQ4MSw2ICsxNDgxLDkgQEAgYW1kNjRfbGlu dXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpCi0gICBhbWQ2NF9saW51eF9yZWNvcmRfdGRlcC5hcmc2ID0gQU1ENjRfUjlfUkVHTlVN OwotIAotICAgdGRlcC0+aTM4Nl9zeXNjYWxsX3JlY29yZCA9IGFtZDY0X2xpbnV4X3N5c2NhbGxf cmVjb3JkOwotKwotKyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0g DAotIAotZGlmZiAtLWdpdCBhL2dkYi9hcm0tbGludXgtdGRlcC5jIGIvZ2RiL2FybS1saW51eC10 ZGVwLmMKLWluZGV4IGFmNDA5ZjYuLjQwNmMwNjYgMTAwNjQ0Ci0tLS0gYS9nZGIvYXJtLWxpbnV4 LXRkZXAuYwotKysrIGIvZ2RiL2FybS1saW51eC10ZGVwLmMKLUBAIC05MTgsNiArOTE4LDkgQEAg YXJtX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sCi0gICBzZXRfZ2Ri YXJjaF9kaXNwbGFjZWRfc3RlcF9mcmVlX2Nsb3N1cmUgKGdkYmFyY2gsCi0gCQkJCQkgICBzaW1w bGVfZGlzcGxhY2VkX3N0ZXBfZnJlZV9jbG9zdXJlKTsKLSAgIHNldF9nZGJhcmNoX2Rpc3BsYWNl ZF9zdGVwX2xvY2F0aW9uIChnZGJhcmNoLCBkaXNwbGFjZWRfc3RlcF9hdF9lbnRyeV9wb2ludCk7 Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwK LSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQ cm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwot ZGlmZiAtLWdpdCBhL2dkYi9heC1nZGIuYyBiL2dkYi9heC1nZGIuYwotaW5kZXggM2UxNTFkZS4u ZGRiY2I2ZSAxMDA2NDQKLS0tLSBhL2dkYi9heC1nZGIuYwotKysrIGIvZ2RiL2F4LWdkYi5jCi1A QCAtMTgxMiw3ICsxODEyLDcgQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVu aW9uIGV4cF9lbGVtZW50ICoqcGMsCi0gCi0gCS8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJv bCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBMT0NfUkVHSVNURVIKLSAJICAgc3ltYm9sIGluc3Rl YWQgb2YgdGhlIExPQ19BUkcgb25lIChpZiBib3RoIGV4aXN0KS4gICovCi0tCXN5bSA9IGxvb2t1 cF9ibG9ja19zeW1ib2wgKGIsIHRoaXNfbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7Ci0rCXN5bSA9 IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIHRoaXNfbmFtZSwgVkFSX0RPTUFJTik7Ci0gCWlmICgh c3ltKQotIAkgIGVycm9yIChfKCJubyBgJXMnIGZvdW5kIiksIHRoaXNfbmFtZSk7Ci0gCiBkaWZm IC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXggNDhhYzIxYi4uMGVjY2Vj YiAxMDA2NDQKK2luZGV4IDQ4YWMyMWIuLmZmY2M5N2YgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2su YwogKysrIGIvZ2RiL2Jsb2NrLmMKLUBAIC0yMjcsOCArMjI3LDkgQEAgYmxvY2tfc2V0X3Njb3Bl IChzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpzY29wZSwKLSAgIEJMT0NLX05BTUVT UEFDRSAoYmxvY2spLT5zY29wZSA9IHNjb3BlOwotIH0KLSAKLS0vKiBUaGlzIHJldHVybnMgdGhl IHVzaW5nIGRpcmVjdGl2ZXMgbGlzdCBhc3NvY2lhdGVkIHdpdGggQkxPQ0ssIGlmCi0tICAgYW55 LiAgKi8KLSsvKiBUaGlzIHJldHVybnMgdGhlIGZpcnN0IHVzaW5nIGRpcmVjdGl2ZXMgYXNzb2Np YXRlZCB3aXRoIEJMT0NLLCBpZgotKyAgIGFueS4gIEVhY2ggQkxPQ0tfTkFNRVNQQUNFKCktPlVT SU5HIGFscmVhZHkgY29udGFpbnMgYWxsIHRoZSBuYW1lc3BhY2VzCi0rICAgaW1wb3J0ZWQgYXQg dGhhdCBjb2RlIHBvaW50IC0gZXZlbiB0aG9zZSBmcm9tIGl0cyBwYXJlbnQgYmxvY2tzLiAgKi8K LSAKLSBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICoKLSBibG9ja191c2luZyAoY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaykKLUBAIC0zMTgsNiArMzE5LDI1IEBAIGFsbG9jYXRlX2Jsb2NrIChzdHJ1Y3Qg b2JzdGFjayAqb2JzdGFjaykKLSAgIEJMT0NLX1NVUEVSQkxPQ0sgKGJsKSA9IE5VTEw7Ci0gICBC TE9DS19ESUNUIChibCkgPSBOVUxMOwotICAgQkxPQ0tfTkFNRVNQQUNFIChibCkgPSBOVUxMOwot KyAgQkxPQ0tfRk9SVFJBTl9VU0UgKGJsKSA9IE5VTEw7CitAQCAtMzIxLDMgKzMyMSwyMSBAQCBh bGxvY2F0ZV9ibG9jayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spCiAgCiAgICByZXR1cm4gYmw7 CiAgfQpAQCAtMzk3LDE1MSArMTA0LDE3NyBAQCBpbmRleCA0OGFjMjFiLi4wZWNjZWNiIDEwMDY0 NAogKyAgcmV0dXJuIFNZTUJPTF9TWU1UQUIgKGZ1bmMpLT5vYmpmaWxlOwogK30KIGRpZmYgLS1n aXQgYS9nZGIvYmxvY2suaCBiL2dkYi9ibG9jay5oCi1pbmRleCA3ZWVkYjZjLi5iMTQ3ODI2IDEw MDY0NAoraW5kZXggN2VlZGI2Yy4uYTUxN2U4MCAxMDA2NDQKIC0tLSBhL2dkYi9ibG9jay5oCiAr KysgYi9nZGIvYmxvY2suaAotQEAgLTk2LDYgKzk2LDE1IEBAIHN0cnVjdCBibG9jawotICAgICBj cGx1c19zcGVjaWZpYzsKLSAgIH0KLSAgIGxhbmd1YWdlX3NwZWNpZmljOwotKwotKyAgLyogRklY TUU6IEl0IHNob3VsZCBiZSBpbiB0aGUgTEFOR1VBR0VfU1BFQ0lGSUMgcmVnaW9uIGJ1dCB0aGUK LSsgICAgIEJMT0NLX05BTUVTUEFDRSBhY2Nlc3NvciBpcyBub3QgcHJvdGVjdGVkIGJ5IHRoZSBD IGxhbmd1YWdlIGNoZWNrLiAgKi8KLSsKLSsgIHN0cnVjdAotKyAgICB7Ci0rICAgICAgc3RydWN0 IGZvcnRyYW5fdXNpbmcgKnVzZTsKLSsgICAgfQotKyAgZm9ydHJhbl9zcGVjaWZpYzsKLSB9Owot IAotICNkZWZpbmUgQkxPQ0tfU1RBUlQoYmwpCQkoYmwpLT5zdGFydGFkZHIKLUBAIC0xMDQsNiAr MTEzLDcgQEAgc3RydWN0IGJsb2NrCi0gI2RlZmluZSBCTE9DS19TVVBFUkJMT0NLKGJsKQkoYmwp LT5zdXBlcmJsb2NrCi0gI2RlZmluZSBCTE9DS19ESUNUKGJsKQkJKGJsKS0+ZGljdAotICNkZWZp bmUgQkxPQ0tfTkFNRVNQQUNFKGJsKSAgIChibCktPmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3Nw ZWNpZmljLm5hbWVzcGFjZQotKyNkZWZpbmUgQkxPQ0tfRk9SVFJBTl9VU0UoYmwpCShibCktPmZv cnRyYW5fc3BlY2lmaWMudXNlCi0gCi0gLyogTWFjcm8gdG8gbG9vcCB0aHJvdWdoIGFsbCBzeW1i b2xzIGluIGEgYmxvY2sgQkwsIGluIG5vIHBhcnRpY3VsYXIKLSAgICBvcmRlci4gIElURVIgaGVs cHMga2VlcCB0cmFjayBvZiB0aGUgaXRlcmF0aW9uLCBhbmQgc2hvdWxkIGJlIGEKLUBAIC0xNjYs NCArMTc2LDYgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2tfZ2xvYmFsX2Jsb2Nr IChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKK0BAIC0xNjYsNCArMTY2LDYgQEAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2tfZ2xvYmFsX2Jsb2NrIChjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrKTsKICAKICBleHRlcm4gc3RydWN0IGJsb2NrICphbGxvY2F0ZV9ibG9jayAoc3Ry dWN0IG9ic3RhY2sgKm9ic3RhY2spOwogIAogK2V4dGVybiBzdHJ1Y3Qgb2JqZmlsZSAqYmxvY2tf b2JqZmlsZSAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jayk7CiArCiAgI2VuZGlmIC8qIEJMT0NL X0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvYmxvY2tmcmFtZS5jIGIvZ2RiL2Jsb2NrZnJhbWUuYwor aW5kZXggMDM0OGJmNC4uZjAxZDBlZSAxMDA2NDQKKy0tLSBhL2dkYi9ibG9ja2ZyYW1lLmMKKysr KyBiL2dkYi9ibG9ja2ZyYW1lLmMKK0BAIC0zOCw2ICszOCw3IEBACisgI2luY2x1ZGUgImJsb2Nr LmgiCisgI2luY2x1ZGUgImlubGluZS1mcmFtZS5oIgorICNpbmNsdWRlICJwc3ltdGFiLmgiCisr I2luY2x1ZGUgImVsZi1iZmQuaCIKKyAKKyAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBsZXhpY2Fs IGJsb2NrIGluIGV4ZWN1dGlvbgorICAgIGluIGEgc3BlY2lmaWVkIHN0YWNrIGZyYW1lLiAgVGhl IGZyYW1lIGFkZHJlc3MgaXMgYXNzdW1lZCB2YWxpZC4KK0BAIC0xNTksNiArMTYwLDcgQEAgc3Rh dGljIENPUkVfQUREUiBjYWNoZV9wY19mdW5jdGlvbl9sb3cgPSAwOworIHN0YXRpYyBDT1JFX0FE RFIgY2FjaGVfcGNfZnVuY3Rpb25faGlnaCA9IDA7Cisgc3RhdGljIGNoYXIgKmNhY2hlX3BjX2Z1 bmN0aW9uX25hbWUgPSAwOworIHN0YXRpYyBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKmNhY2hlX3BjX2Z1 bmN0aW9uX3NlY3Rpb24gPSBOVUxMOworK3N0YXRpYyBpbnQgY2FjaGVfcGNfZnVuY3Rpb25faXNf Z251X2lmdW5jID0gMDsKKyAKKyAvKiBDbGVhciBjYWNoZSwgZS5nLiB3aGVuIHN5bWJvbCB0YWJs ZSBpcyBkaXNjYXJkZWQuICovCisgCitAQCAtMTY5LDYgKzE3MSw3IEBAIGNsZWFyX3BjX2Z1bmN0 aW9uX2NhY2hlICh2b2lkKQorICAgY2FjaGVfcGNfZnVuY3Rpb25faGlnaCA9IDA7CisgICBjYWNo ZV9wY19mdW5jdGlvbl9uYW1lID0gKGNoYXIgKikgMDsKKyAgIGNhY2hlX3BjX2Z1bmN0aW9uX3Nl Y3Rpb24gPSBOVUxMOworKyAgY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5jID0gMDsKKyB9 CisgCisgLyogRmluZHMgdGhlICJmdW5jdGlvbiIgKHRleHQgc3ltYm9sKSB0aGF0IGlzIHNtYWxs ZXIgdGhhbiBQQyBidXQKK0BAIC0xODQsNyArMTg3LDcgQEAgY2xlYXJfcGNfZnVuY3Rpb25fY2Fj aGUgKHZvaWQpCisgCisgLyogQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgbm8gc2VjdGlvbiBhcmd1 bWVudC4gICovCisgCistaW50CisrZW51bSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb25fdHlwZQor IGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09S RV9BRERSICphZGRyZXNzLAorIAkJCSAgQ09SRV9BRERSICplbmRhZGRyKQorIHsKK0BAIC0yMzYs NiArMjM5LDcgQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIg KipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisgCSAgY2FjaGVfcGNfZnVuY3Rpb25faGlnaCA9 IEJMT0NLX0VORCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChmKSk7CisgCSAgY2FjaGVfcGNfZnVuY3Rp b25fbmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKGYpOworIAkgIGNhY2hlX3BjX2Z1bmN0aW9u X3NlY3Rpb24gPSBzZWN0aW9uOworKwkgIGNhY2hlX3BjX2Z1bmN0aW9uX2lzX2dudV9pZnVuYyA9 IFRZUEVfR05VX0lGVU5DIChTWU1CT0xfVFlQRSAoZikpOworIAkgIGdvdG8gcmV0dXJuX2NhY2hl ZF92YWx1ZTsKKyAJfQorICAgICB9CitAQCAtMjU4LDEyICsyNjIsMTMgQEAgZmluZF9wY19wYXJ0 aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJl c3MsCisgCSphZGRyZXNzID0gMDsKKyAgICAgICBpZiAoZW5kYWRkciAhPSBOVUxMKQorIAkqZW5k YWRkciA9IDA7CistICAgICAgcmV0dXJuIDA7CisrICAgICAgcmV0dXJuIEZJTkRfUENfUEFSVElB TF9GVU5DVElPTl9OT1RfRk9VTkQ7CisgICAgIH0KKyAKKyAgIGNhY2hlX3BjX2Z1bmN0aW9uX2xv dyA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKKyAgIGNhY2hlX3BjX2Z1bmN0aW9u X25hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKKyAgIGNhY2hlX3BjX2Z1bmN0 aW9uX3NlY3Rpb24gPSBzZWN0aW9uOworKyAgY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5j ID0gTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7CisgCisgICAv KiBJZiB0aGUgbWluaW1hbCBzeW1ib2wgaGFzIGEgc2l6ZSwgdXNlIGl0IGZvciB0aGUgY2FjaGUu CisgICAgICBPdGhlcndpc2UgdXNlIHRoZSBsZXNzZXIgb2YgdGhlIG5leHQgbWluaW1hbCBzeW1i b2wgaW4gdGhlIHNhbWUKK0BAIC0zMjMsNyArMzI4LDggQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0 aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisgCSpl bmRhZGRyID0gY2FjaGVfcGNfZnVuY3Rpb25faGlnaDsKKyAgICAgfQorIAorLSAgcmV0dXJuIDE7 CisrICByZXR1cm4gY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5jID8gRklORF9QQ19QQVJU SUFMX0ZVTkNUSU9OX0dOVV9JRlVOQworKwkJCQkJOiBGSU5EX1BDX1BBUlRJQUxfRlVOQ1RJT05f Tk9STUFMOworIH0KKyAKKyAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBmcmFtZSBleGVj dXRpbmcgaW5zaWRlIG9mIEJMT0NLLAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9n ZGIvYnJlYWtwb2ludC5jCi1pbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAoraW5kZXggNGFm ZmUwYS4uNTIxMDViNSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9i cmVha3BvaW50LmMKLUBAIC02MSw2ICs2MSw3IEBACi0gI2luY2x1ZGUgInZhbHByaW50LmgiCitA QCAtNjIsNiArNjIsNyBAQAogICNpbmNsdWRlICJqaXQuaCIKICAjaW5jbHVkZSAieG1sLXN5c2Nh bGwuaCIKLSsjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKKyAjaW5jbHVkZSAicGFyc2VyLWRlZnMu aCIKKysjaW5jbHVkZSAicmVnY2FjaGUuaCIKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVz ICovCiAgI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtNjE0LDYgKzYxNSw1MyBA QCBnZXRfYnJlYWtwb2ludCAoaW50IG51bSkKLSB9CitAQCAtOTIsNiArOTMsOSBAQCBzdGF0aWMg dm9pZCBtYXBfYnJlYWtwb2ludF9udW1iZXJzIChjaGFyICosIHZvaWQgKCopIChzdHJ1Y3QgYnJl YWtwb2ludCAqLAogIAotIAwKLSsvKiBTZXQgYnJlYWsgY29uZGl0aW9uIG9mIGJyZWFrcG9pbnQg QiB0byBFWFAuICAqLworIHN0YXRpYyB2b2lkIGlnbm9yZV9jb21tYW5kIChjaGFyICosIGludCk7 CisgCisrc3RhdGljIHZvaWQgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJl YWtwb2ludCAqYiwKKysJCQkJCSBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2Fscyk7CiArCi0r dm9pZAotK3NldF9icmVha3BvaW50X2NvbmRpdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGNo YXIgKmV4cCwgaW50IGZyb21fdHR5KQotK3sKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jID0g Yi0+bG9jOworIHN0YXRpYyBpbnQgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICopOworIAor IHN0YXRpYyB2b2lkIGNsZWFyX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKK0BAIC0xMDYsNiArMTEw LDkgQEAgc3RhdGljIHZvaWQgYnJlYWtfY29tbWFuZF8xIChjaGFyICosIGludCwgaW50KTsKKyAK KyBzdGF0aWMgdm9pZCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKKyAKKytzdGF0aWMg c3RydWN0IGJwX2xvY2F0aW9uICphZGRfbG9jYXRpb25fdG9fYnJlYWtwb2ludCAoc3RydWN0IGJy ZWFrcG9pbnQgKmIsCisrCQkJCQkgICAgIGNvbnN0IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNh bCk7CiArCi0rICBmb3IgKDsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCi0rICAgIHsKLSsgICAgICBp ZiAobG9jLT5jb25kKQotKwl7Ci0rCSAgeGZyZWUgKGxvYy0+Y29uZCk7Ci0rCSAgbG9jLT5jb25k ID0gMDsKLSsJfQotKyAgICB9CisgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIGdkYnRrIHNv dXJjZXMgYW5kIHRodXMgY2FuIG5vdCBiZSBtYWRlIHN0YXRpYy4gICovCisgc3RydWN0IGJyZWFr cG9pbnQgKnNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJ CQkgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lLAorQEAgLTIzMCw2ICsyMzcsMTAgQEAgc3Rh dGljIHZvaWQgZGlzYWJsZV90cmFjZV9jb21tYW5kIChjaGFyICosIGludCk7CisgCisgc3RhdGlj IHZvaWQgdHJhY2VfcGFzc19jb21tYW5kIChjaGFyICosIGludCk7CisgCisrc3RhdGljIHZvaWQg Z251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3BvaW50ICpiKTsKICsKLSsgIGlm IChiLT5jb25kX3N0cmluZyAhPSBOVUxMKQotKyAgICB4ZnJlZSAoYi0+Y29uZF9zdHJpbmcpOwor K3N0YXRpYyB2b2lkIGdudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydWN0IGJyZWFr cG9pbnQgKmIpOwogKwotKyAgaWYgKCpleHAgPT0gMCkKLSsgICAgewotKyAgICAgIGItPmNvbmRf c3RyaW5nID0gTlVMTDsKLSsgICAgICBpZiAoZnJvbV90dHkpCi0rCXByaW50Zl9maWx0ZXJlZCAo XygiQnJlYWtwb2ludCAlZCBub3cgdW5jb25kaXRpb25hbC5cbiIpLCBiLT5udW1iZXIpOwotKyAg ICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICphcmcgPSBleHA7CisgLyogQXNzdW1p bmcgd2UncmUgY3JlYXRpbmcgYSBzdGF0aWMgdHJhY2Vwb2ludCwgZG9lcyBTIGxvb2sgbGlrZSBh CisgICAgc3RhdGljIHRyYWNlcG9pbnQgbWFya2VyIHNwZWMgKCItbSBNQVJLRVJfSUQiKT8gICov CisgI2RlZmluZSBpc19tYXJrZXJfc3BlYyhzKQkJCQkJCVwKK0BAIC0xMjUyLDYgKzEyNjMsMjIg QEAgd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpiKQorIAkg ICAgICAmJiAhaXNfZXhlY3V0aW5nIChpbmZlcmlvcl9wdGlkKSkpOworIH0KKyAKKytzdGF0aWMg dm9pZAorK3dhdGNocG9pbnRfZGVsX2F0X25leHRfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIp CisreworKyAgZ2RiX2Fzc2VydCAoaXNfd2F0Y2hwb2ludCAoYikpOwogKwotKyAgICAgIC8qIEkg ZG9uJ3Qga25vdyBpZiBpdCBtYXR0ZXJzIHdoZXRoZXIgdGhpcyBpcyB0aGUgc3RyaW5nIHRoZSB1 c2VyCi0rCSB0eXBlZCBpbiBvciB0aGUgZGVjb21waWxlZCBleHByZXNzaW9uLiAgKi8KLSsgICAg ICBiLT5jb25kX3N0cmluZyA9IHhzdHJkdXAgKGFyZyk7Ci0rICAgICAgYi0+Y29uZGl0aW9uX25v dF9wYXJzZWQgPSAwOwotKyAgICAgIGZvciAobG9jID0gYi0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+ bmV4dCkKLSsJewotKwkgIGFyZyA9IGV4cDsKLSsJICBsb2MtPmNvbmQgPQotKwkgICAgcGFyc2Vf ZXhwXzEgKCZhcmcsIGJsb2NrX2Zvcl9wYyAobG9jLT5hZGRyZXNzKSwgMCk7Ci0rCSAgaWYgKCph cmcpCi0rCSAgICBlcnJvciAoXygiSnVuayBhdCBlbmQgb2YgZXhwcmVzc2lvbiIpKTsKLSsJfQor KyAgaWYgKGItPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKQorKyAgICB7CisrICAgICAgZ2RiX2Fz c2VydCAoYi0+cmVsYXRlZF9icmVha3BvaW50LT50eXBlID09IGJwX3dhdGNocG9pbnRfc2NvcGUp OworKyAgICAgIGdkYl9hc3NlcnQgKGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVh a3BvaW50ID09IGIpOworKyAgICAgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24g PSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7CisrICAgICAgYi0+cmVsYXRlZF9icmVha3BvaW50LT5y ZWxhdGVkX2JyZWFrcG9pbnQgPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7CisrICAgICAgYi0+cmVs YXRlZF9icmVha3BvaW50ID0gYjsKICsgICAgfQotKwotKyAgYnJlYWtwb2ludHNfY2hhbmdlZCAo KTsKLSsgIG9ic2VydmVyX25vdGlmeV9icmVha3BvaW50X21vZGlmaWVkIChiLT5udW1iZXIpOwor KyAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7CiArfQogKwotIC8qIGNv bmRpdGlvbiBOIEVYUCAtLSBzZXQgYnJlYWsgY29uZGl0aW9uIG9mIGJyZWFrcG9pbnQgTiB0byBF WFAuICAqLworIC8qIEFzc3VtaW5nIHRoYXQgQiBpcyBhIHdhdGNocG9pbnQ6CisgICAgLSBSZXBh cnNlIHdhdGNocG9pbnQgZXhwcmVzc2lvbiwgaWYgUkVQQVJTRSBpcyBub24temVybworICAgIC0g RXZhbHVhdGUgZXhwcmVzc2lvbiBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBCLT52YWwKK0BAIC0x MzA3LDYgKzEzMzQsOCBAQCB1cGRhdGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIs IGludCByZXBhcnNlKQorICAgc3RydWN0IGZyYW1lX2lkIHNhdmVkX2ZyYW1lX2lkOworICAgaW50 IGZyYW1lX3NhdmVkOwogIAotIHN0YXRpYyB2b2lkCi1AQCAtNjM0LDQyICs2ODIsNyBAQCBjb25k aXRpb25fY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gICBBTExfQlJFQUtQT0lO VFMgKGIpCi0gICAgIGlmIChiLT5udW1iZXIgPT0gYm51bSkKLSAgICAgICB7Ci0tCXN0cnVjdCBi cF9sb2NhdGlvbiAqbG9jID0gYi0+bG9jOwotLQlmb3IgKDsgbG9jOyBsb2MgPSBsb2MtPm5leHQp Ci0tCSAgewotLQkgICAgaWYgKGxvYy0+Y29uZCkKLS0JICAgICAgewotLQkJeGZyZWUgKGxvYy0+ Y29uZCk7Ci0tCQlsb2MtPmNvbmQgPSAwOwotLQkgICAgICB9Ci0tCSAgfQotLQlpZiAoYi0+Y29u ZF9zdHJpbmcgIT0gTlVMTCkKLS0JICB4ZnJlZSAoYi0+Y29uZF9zdHJpbmcpOwotLQotLQlpZiAo KnAgPT0gMCkKLS0JICB7Ci0tCSAgICBiLT5jb25kX3N0cmluZyA9IE5VTEw7Ci0tCSAgICBpZiAo ZnJvbV90dHkpCi0tCSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiQnJlYWtwb2ludCAlZCBub3cg dW5jb25kaXRpb25hbC5cbiIpLCBibnVtKTsKLS0JICB9Ci0tCWVsc2UKLS0JICB7Ci0tCSAgICBh cmcgPSBwOwotLQkgICAgLyogSSBkb24ndCBrbm93IGlmIGl0IG1hdHRlcnMgd2hldGhlciB0aGlz IGlzIHRoZSBzdHJpbmcgdGhlIHVzZXIKLS0JICAgICAgIHR5cGVkIGluIG9yIHRoZSBkZWNvbXBp bGVkIGV4cHJlc3Npb24uICAqLwotLQkgICAgYi0+Y29uZF9zdHJpbmcgPSB4c3RyZHVwIChhcmcp OwotLQkgICAgYi0+Y29uZGl0aW9uX25vdF9wYXJzZWQgPSAwOwotLQkgICAgZm9yIChsb2MgPSBi LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotLQkgICAgICB7Ci0tCQlhcmcgPSBwOwotLQkJ bG9jLT5jb25kID0KLS0JCSAgcGFyc2VfZXhwXzEgKCZhcmcsIGJsb2NrX2Zvcl9wYyAobG9jLT5h ZGRyZXNzKSwgMCk7Ci0tCQlpZiAoKmFyZykKLS0JCSAgZXJyb3IgKF8oIkp1bmsgYXQgZW5kIG9m IGV4cHJlc3Npb24iKSk7Ci0tCSAgICAgIH0KLS0JICB9Ci0tCWJyZWFrcG9pbnRzX2NoYW5nZWQg KCk7Ci0tCW9ic2VydmVyX25vdGlmeV9icmVha3BvaW50X21vZGlmaWVkIChiLT5udW1iZXIpOwot KwlzZXRfYnJlYWtwb2ludF9jb25kaXRpb24gKGIsIHAsIGZyb21fdHR5KTsKLSAJcmV0dXJuOwot ICAgICAgIH0KKysgIGdkYl9hc3NlcnQgKGlzX3dhdGNocG9pbnQgKGIpKTsKKysKKyAgIC8qIElm IHRoaXMgaXMgYSBsb2NhbCB3YXRjaHBvaW50LCB3ZSBvbmx5IHdhbnQgdG8gY2hlY2sgaWYgdGhl CisgICAgICB3YXRjaHBvaW50IGZyYW1lIGlzIGluIHNjb3BlIGlmIHRoZSBjdXJyZW50IHRocmVh ZCBpcyB0aGUgdGhyZWFkCisgICAgICB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgd2F0Y2hw b2ludC4gICovCitAQCAtMTUxMCwxMyArMTUzOSw3IEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1 Y3QgYnJlYWtwb2ludCAqYiwgaW50IHJlcGFyc2UpCisgV2F0Y2hwb2ludCAlZCBkZWxldGVkIGJl Y2F1c2UgdGhlIHByb2dyYW0gaGFzIGxlZnQgdGhlIGJsb2NrXG5cCisgaW4gd2hpY2ggaXRzIGV4 cHJlc3Npb24gaXMgdmFsaWQuXG4iKSwKKyAJCSAgICAgICBiLT5udW1iZXIpOworLSAgICAgIGlm IChiLT5yZWxhdGVkX2JyZWFrcG9pbnQpCistCXsKKy0JICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQt PmRpc3Bvc2l0aW9uID0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wOworLQkgIGItPnJlbGF0ZWRfYnJl YWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50ID0gTlVMTDsKKy0JICBiLT5yZWxhdGVkX2JyZWFr cG9pbnQ9IE5VTEw7CistCX0KKy0gICAgICBiLT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25l eHRfc3RvcDsKKysgICAgICB3YXRjaHBvaW50X2RlbF9hdF9uZXh0X3N0b3AgKGIpOworICAgICB9 CiAgCi1AQCAtMTg2OCw2ICsxODgxLDM2IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3Bv aW50IChjaGFyICpmdW5jX25hbWUpCisgICAvKiBSZXN0b3JlIHRoZSBzZWxlY3RlZCBmcmFtZS4g ICovCitAQCAtMjIwMSw2ICsyMjI0LDMzIEBAIGNyZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9i cmVha3BvaW50IChjb25zdCBjaGFyICpmdW5jX25hbWUpCiAgICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKICB9CiAgCkBAIC01NTksMTQgKzI5MiwxMSBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQw IDEwMDY0NAogKyAgICAgIGRlYnVnX2hvb2sgPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAo Il9VbndpbmRfRGVidWdIb29rIiwgb2JqZmlsZSk7CiArICAgICAgaWYgKGRlYnVnX2hvb2sgIT0g TlVMTCkKICsJewotKwkgIENPUkVfQUREUiBwYzsKICsJICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsK ICsKLSsJICBwYyA9IGZpbmRfZnVuY3Rpb25fc3RhcnRfcGMgKGdldF9vYmpmaWxlX2FyY2ggKG9i amZpbGUpLAotKwkJCQkgICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGRlYnVnX2hvb2spLAot KwkJCQkgICAgICAgU1lNQk9MX09CSl9TRUNUSU9OIChkZWJ1Z19ob29rKSk7CiArCSAgYiA9IGNy ZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKSwKLSsJ CQkJCSAgcGMsIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOworKwkJCQkJICBTWU1CT0xfVkFMVUVfQURE UkVTUyAoZGVidWdfaG9vayksCisrCQkJCQkgIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOwogKwkgIGIt PmFkZHJfc3RyaW5nID0geHN0cmR1cCAoIl9VbndpbmRfRGVidWdIb29rIik7CiArCSAgYi0+ZW5h YmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7CiArCX0KQEAgLTU3OCwxNiArMzA4LDE3IEBAIGluZGV4 IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgdm9pZAogIHVwZGF0ZV9icmVha3BvaW50c19hZnRl cl9leGVjICh2b2lkKQogIHsKLUBAIC0xOTA5LDcgKzE5NTIsNyBAQCB1cGRhdGVfYnJlYWtwb2lu dHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0yMjQyLDcgKzIyOTIsOCBAQCB1cGRhdGVfYnJlYWtw b2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgICAgLyogVGhyZWFkIGV2ZW50IGJyZWFrcG9pbnRz IG11c3QgYmUgc2V0IGFuZXcgYWZ0ZXIgYW4gZXhlYygpLAogICAgICAgICBhcyBtdXN0IG92ZXJs YXkgZXZlbnQgYW5kIGxvbmdqbXAgbWFzdGVyIGJyZWFrcG9pbnRzLiAgKi8KICAgICAgaWYgKGIt PnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAot LQl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyKQotKwl8fCBiLT50eXBlID09IGJwX2xv bmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uX21hc3RlcikKKy0JfHwgYi0+ dHlwZSA9PSBicF9sb25nam1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVf bWFzdGVyKQorKwl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0g YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKKysJfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFz dGVyKQogICAgICAgIHsKICAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogIAljb250aW51ZTsKLUBA IC0xOTI0LDcgKzE5NjcsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkK K0BAIC0yMjU3LDcgKzIzMDgsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9p ZCkKICAKICAgICAgLyogTG9uZ2ptcCBhbmQgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludHMgYXJl IGFsc28gbWVhbmluZ2xlc3MKICAgICAgICAgYWZ0ZXIgYW4gZXhlYy4gICovCkBAIC01OTcsMjMg KzMyOCwyNCBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogICAgICAgIHsKICAJZGVs ZXRlX2JyZWFrcG9pbnQgKGIpOwogIAljb250aW51ZTsKLUBAIC0xOTg1LDYgKzIwMjksNyBAQCB1 cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKLSAgIGNyZWF0ZV9sb25nam1wX21h c3Rlcl9icmVha3BvaW50ICgiX2xvbmdqbXAiKTsKK0BAIC0yMzE5LDYgKzIzNzEsNyBAQCB1cGRh dGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rl cl9icmVha3BvaW50ICgic2lnbG9uZ2ptcCIpOwogICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2Jy ZWFrcG9pbnQgKCJfc2lnbG9uZ2ptcCIpOworICAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVy X2JyZWFrcG9pbnQgKCJzdGQ6OnRlcm1pbmF0ZSgpIik7CiArICBjcmVhdGVfZXhjZXB0aW9uX21h c3Rlcl9icmVha3BvaW50ICgpOwogIH0KICAKICBpbnQKLUBAIC0yMDA4LDYgKzIwNTMsNyBAQCBk ZXRhY2hfYnJlYWtwb2ludHMgKGludCBwaWQpCi0gICAgIGlmIChiLT5pbnNlcnRlZCkKLSAgICAg ICB2YWwgfD0gcmVtb3ZlX2JyZWFrcG9pbnRfMSAoYiwgbWFya19pbnNlcnRlZCk7Ci0gICB9CitA QCAtMjM0Niw2ICsyMzk5LDggQEAgZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgcGlkKQorICAgLyog RGV0YWNoIHNpbmdsZS1zdGVwIGJyZWFrcG9pbnRzIGFzIHdlbGwuICAqLworICAgZGV0YWNoX3Np bmdsZV9zdGVwX2JyZWFrcG9pbnRzICgpOworIAogKyAgdmFsIHw9IHRhcmdldF9kZXRhY2hfd2F0 Y2hwb2ludHMgKCk7CisrCiAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKICAgIHJldHVybiB2 YWw7CiAgfQotQEAgLTIxMDcsMTIgKzIxNTMsMTQgQEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3Ry dWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKK0BAIC0yNDQ3LDkgKzI1 MDIsMTEgQEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNl cnRpb25fc3RhdGVfdCBpcykKICAJcmV0dXJuIHZhbDsKICAgICAgICBiLT5pbnNlcnRlZCA9IChp cyA9PSBtYXJrX2luc2VydGVkKTsKICAgICAgfQpAQCAtNjIyLDE1ICszNTQsMTIgQEAgaW5kZXgg OGM5Nzk0OS4uMGI2Njc0MCAxMDA2NDQKICsgICAgIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMu ICAqLwogKyAgZWxzZSBpZiAoYi0+bG9jX3R5cGUgPT0gYnBfbG9jX2hhcmR3YXJlX3dhdGNocG9p bnQgJiYgaXMgPT0gbWFya191bmluc2VydGVkKQogICAgICB7Ci0gICAgICAgc3RydWN0IHZhbHVl ICp2OwotICAgICAgIHN0cnVjdCB2YWx1ZSAqbjsKLSAKIC0gICAgICBiLT5pbnNlcnRlZCA9IChp cyA9PSBtYXJrX2luc2VydGVkKTsKICsgICAgICBiLT5pbnNlcnRlZCA9IDA7Ci0gICAgICAgdmFs ID0gdGFyZ2V0X3JlbW92ZV93YXRjaHBvaW50IChiLT5hZGRyZXNzLCBiLT5sZW5ndGgsIAotIAkJ CQkgICAgICBiLT53YXRjaHBvaW50X3R5cGUpOworICAgICAgIHZhbCA9IHRhcmdldF9yZW1vdmVf d2F0Y2hwb2ludCAoYi0+YWRkcmVzcywgYi0+bGVuZ3RoLAorIAkJCQkgICAgICBiLT53YXRjaHBv aW50X3R5cGUsIGItPm93bmVyLT5jb25kX2V4cCk7CiAgCi1AQCAtMjg5Miw2ICsyOTQwLDEyIEBA IHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKK0BAIC0zMjM3LDYgKzMyOTQsMTIgQEAgcHJp bnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQogICAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7 CiAgICAgICAgYnJlYWs7CiAgCkBAIC02NDMsNyArMzcyLDcgQEAgaW5kZXggOGM5Nzk0OS4uMGI2 Njc0MCAxMDA2NDQKICAgICAgY2FzZSBicF93YXRjaHBvaW50OgogICAgICBjYXNlIGJwX2hhcmR3 YXJlX3dhdGNocG9pbnQ6CiAgICAgICAgYW5ub3RhdGVfd2F0Y2hwb2ludCAoYi0+bnVtYmVyKTsK LUBAIC0yOTc5LDYgKzMwMzMsOCBAQCBwcmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCitAQCAt MzMyNCw2ICszMzg3LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQogICAgICBjYXNl IGJwX25vbmU6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1wX3Jl c3VtZToKQEAgLTY1Miw3ICszODEsNDAgQEAgaW5kZXggOGM5Nzk0OS4uMGI2Njc0MCAxMDA2NDQK ICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3Bl OgogICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtMzM4Myw4ICszNDM5LDEyIEBAIGJwc3Rh dF9jaGVja19sb2NhdGlvbiAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwKK0BAIC0zMzMx LDYgKzMzOTYsOCBAQCBwcmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCisgICAgIGNhc2UgYnBf dHJhY2Vwb2ludDoKKyAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CisgICAgIGNhc2UgYnBf aml0X2V2ZW50OgorKyAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKKysgICAgY2FzZSBi cF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgorICAgICBkZWZhdWx0OgorICAgICAgIHJlc3Vs dCA9IFBSSU5UX1VOS05PV047CisgICAgICAgYnJlYWs7CitAQCAtMzU0OSw2ICszNjE2LDggQEAg d2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKKyAgIGdkYl9hc3NlcnQgKGJzLT5icmVha3BvaW50 X2F0LT5vd25lciAhPSBOVUxMKTsKKyAgIGIgPSBicy0+YnJlYWtwb2ludF9hdC0+b3duZXI7Cisg CisrICBnZGJfYXNzZXJ0IChpc193YXRjaHBvaW50IChiKSk7CisrCisgICAvKiBJZiB0aGlzIGlz IGEgbG9jYWwgd2F0Y2hwb2ludCwgd2Ugb25seSB3YW50IHRvIGNoZWNrIGlmIHRoZQorICAgICAg d2F0Y2hwb2ludCBmcmFtZSBpcyBpbiBzY29wZSBpZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgdGhl IHRocmVhZAorICAgICAgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHdhdGNocG9pbnQuICAq LworQEAgLTM2NTUsMTMgKzM3MjQsNyBAQCB3YXRjaHBvaW50X2NoZWNrICh2b2lkICpwKQorICAg ICAgIHVpX291dF90ZXh0ICh1aW91dCwgIiBkZWxldGVkIGJlY2F1c2UgdGhlIHByb2dyYW0gaGFz IGxlZnQgdGhlIGJsb2NrIGluXG5cCisgd2hpY2ggaXRzIGV4cHJlc3Npb24gaXMgdmFsaWQuXG4i KTsgICAgIAorIAorLSAgICAgIGlmIChiLT5yZWxhdGVkX2JyZWFrcG9pbnQpCistCXsKKy0JICBi LT5yZWxhdGVkX2JyZWFrcG9pbnQtPmRpc3Bvc2l0aW9uID0gZGlzcF9kZWxfYXRfbmV4dF9zdG9w OworLQkgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50ID0gTlVMTDsK Ky0JICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBOVUxMOworLQl9CistICAgICAgYi0+ZGlzcG9z aXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7CisrICAgICAgd2F0Y2hwb2ludF9kZWxfYXRf bmV4dF9zdG9wIChiKTsKKyAKKyAgICAgICByZXR1cm4gV1BfREVMRVRFRDsKKyAgICAgfQorQEAg LTM3MzAsOCArMzc5MywxMiBAQCBicHN0YXRfY2hlY2tfbG9jYXRpb24gKGNvbnN0IHN0cnVjdCBi cF9sb2NhdGlvbiAqYmwsCiAgCiAgLyogSWYgQlMgcmVmZXJzIHRvIGEgd2F0Y2hwb2ludCwgZGV0 ZXJtaW5lIGlmIHRoZSB3YXRjaGVkIHZhbHVlcwogICAgIGhhcyBhY3R1YWxseSBjaGFuZ2VkLCBh bmQgd2Ugc2hvdWxkIHN0b3AuICBJZiBub3QsIHNldCBCUy0+c3RvcApAQCAtNjY2LDggKzQyOCwx OSBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogK3N0YXRpYyBpbnQKICBicHN0YXRf Y2hlY2tfd2F0Y2hwb2ludCAoYnBzdGF0IGJzKQogIHsKLSAgIGNvbnN0IHN0cnVjdCBicF9sb2Nh dGlvbiAqYmwgPSBicy0+YnJlYWtwb2ludF9hdDsKLUBAIC0zNDczLDggKzM1MzMsMTAgQEAgYnBz dGF0X2NoZWNrX3dhdGNocG9pbnQgKGJwc3RhdCBicykKKyAgIGNvbnN0IHN0cnVjdCBicF9sb2Nh dGlvbiAqYmw7CitAQCAtMzg2NSw5ICszOTMyLDcgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQg KGJwc3RhdCBicykKKyAJICAgIGNhc2UgMDoKKyAJICAgICAgLyogRXJyb3IgZnJvbSBjYXRjaF9l cnJvcnMuICAqLworIAkgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIldhdGNocG9pbnQgJWQgZGVs ZXRlZC5cbiIpLCBiLT5udW1iZXIpOworLQkgICAgICBpZiAoYi0+cmVsYXRlZF9icmVha3BvaW50 KQorLQkJYi0+cmVsYXRlZF9icmVha3BvaW50LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25l eHRfc3RvcDsKKy0JICAgICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7 CisrCSAgICAgIHdhdGNocG9pbnRfZGVsX2F0X25leHRfc3RvcCAoYik7CisgCSAgICAgIC8qIFdl J3ZlIGFscmVhZHkgcHJpbnRlZCB3aGF0IG5lZWRzIHRvIGJlIHByaW50ZWQuICAqLworIAkgICAg ICBicy0+cHJpbnRfaXQgPSBwcmludF9pdF9kb25lOworIAkgICAgICBicmVhazsKK0BAIC0zODgx LDggKzM5NDYsMTAgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJwc3RhdCBicykKICAJICAg ICBhbnl0aGluZyBmb3IgdGhpcyB3YXRjaHBvaW50LiAgKi8KICAJICBicy0+cHJpbnRfaXQgPSBw cmludF9pdF9ub29wOwogIAkgIGJzLT5zdG9wID0gMDsKQEAgLTY3OCwxNiArNDUxLDI1IEBAIGlu ZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgfQogIAogIAotQEAgLTM1ODgsNiArMzY1MCw4 IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BA IC0zOTE0LDcgKzM5ODEsNyBAQCBicHN0YXRfY2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChi cHN0YXQgYnMsIHB0aWRfdCBwdGlkKQorIAkgd2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhh dCB3ZSB3aWxsIGhhbmRsZSB0aGUKKyAJIG91dC1vZi1zY29wZSBldmVudC4gIFdlJ2xsIGdldCB0 byB0aGUgd2F0Y2hwb2ludCBuZXh0CisgCSBpdGVyYXRpb24uICAqLworLSAgICAgIGlmIChiLT50 eXBlID09IGJwX3dhdGNocG9pbnRfc2NvcGUpCisrICAgICAgaWYgKGItPnR5cGUgPT0gYnBfd2F0 Y2hwb2ludF9zY29wZSAmJiBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gYikKKyAJYi0+cmVsYXRl ZF9icmVha3BvaW50LT53YXRjaHBvaW50X3RyaWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7 CisgCisgICAgICAgaWYgKGlzX3dhdGNocG9pbnQgKGIpKQorQEAgLTQwNDUsNiArNDExMiw4IEBA IGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKICAKICAg ICAgICBmb3IgKGJsID0gYi0+bG9jOyBibCAhPSBOVUxMOyBibCA9IGJsLT5uZXh0KQogIAl7CiAr CSAgYnBzdGF0IGJzX3ByZXYgPSBiczsKICsKICAJICAvKiBGb3IgaGFyZHdhcmUgd2F0Y2hwb2lu dHMsIHdlIGxvb2sgb25seSBhdCB0aGUgZmlyc3QgbG9jYXRpb24uCi0gCSAgICAgVGhlIHdhdGNo cG9pbnRfY2hlY2sgZnVuY3Rpb24gd2lsbCB3b3JrIG9uIGVudGlyZSBleHByZXNzaW9uLAotIAkg ICAgIG5vdCB0aGUgaW5kaXZpZHVhbCBsb2NhdGlvbnMuICBGb3IgcmVhZCB3YXRjaG9waW50cywg dGhlCi1AQCAtMzYwNSw2ICszNjY5LDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqYXNwYWNlLAorIAkgICAgIFRoZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9u IHdpbGwgd29yayBvbiB0aGUgZW50aXJlIGV4cHJlc3Npb24sCisgCSAgICAgbm90IHRoZSBpbmRp dmlkdWFsIGxvY2F0aW9ucy4gIEZvciByZWFkIHdhdGNocG9pbnRzLCB0aGUKK0BAIC00MDYyLDYg KzQxMzEsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3Bh Y2UsCiAgCSAgLyogQ29tZSBoZXJlIGlmIGl0J3MgYSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJl YWsgYWRkcmVzcyBtYXRjaGVzICovCiAgCiAgCSAgYnMgPSBicHN0YXRfYWxsb2MgKGJsLCBicyk7 CS8qIEFsbG9jIGEgYnBzdGF0IHRvIGV4cGxhaW4gc3RvcCAqLwpAQCAtNjk1LDcgKzQ3Nyw3IEBA IGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgCiAgCSAgLyogQXNzdW1lIHdlIHN0b3Au ICBTaG91bGQgd2UgZmluZCB3YXRjaHBvaW50IHRoYXQgaXMgbm90IGFjdHVhbGx5CiAgCSAgICAg dHJpZ2dlcmVkLCBvciBpZiBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBpcyBmYWxzZSwgd2UnbGwg cmVzZXQKLUBAIC0zNjEyLDEyICszNjc3LDIyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC00MDY5LDEzICs0MTM5LDIzIEBAIGJwc3RhdF9z dG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKICAJICBicy0+c3RvcCA9 IDE7CiAgCSAgYnMtPnByaW50ID0gMTsKICAKQEAgLTcxNiw0NSArNDk4LDEwNyBAQCBpbmRleCA4 Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogKwkgICAgfQogIAogIAkgIGlmIChiLT50eXBlID09IGJw X3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQKLS0JICAgICAgfHwg Yi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlcikKLSsJICAgICAgfHwgYi0+dHlwZSA9PSBicF9s b25nam1wX21hc3RlcgorIAkgICAgICB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyCist CSAgICAgIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIpCisrCSAgICAgIHx8 IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKICsJICAgICAgfHwgYi0+dHlwZSA9 PSBicF9leGNlcHRpb25fbWFzdGVyKQogIAkgICAgLyogV2UgZG8gbm90IHN0b3AgZm9yIHRoZXNl LiAgKi8KICAJICAgIGJzLT5zdG9wID0gMDsKICAJICBlbHNlCi1AQCAtMzgyNiw2ICszOTAxLDcg QEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKLSAgIHN0cnVjdCBicHN0YXRfd2hhdCByZXR2YWw7 CitAQCAtNDE3Niw3ICs0MjU2LDcgQEAgaGFuZGxlX2ppdF9ldmVudCAodm9pZCkKKyAvKiBEZWNp ZGUgd2hhdCBpbmZydW4gbmVlZHMgdG8gZG8gd2l0aCB0aGlzIGJwc3RhdC4gICovCiAgCi0gICBy ZXR2YWwuY2FsbF9kdW1teSA9IDA7Cisgc3RydWN0IGJwc3RhdF93aGF0CistYnBzdGF0X3doYXQg KGJwc3RhdCBicykKKyticHN0YXRfd2hhdCAoYnBzdGF0IGJzX2hlYWQpCisgeworICAgc3RydWN0 IGJwc3RhdF93aGF0IHJldHZhbDsKKyAgIC8qIFdlIG5lZWQgdG8gZGVmZXIgY2FsbGluZyBgc29s aWJfYWRkJywgYXMgYWRkaW5nIG5ldyBzeW1ib2xzCitAQCAtNDE4NCwxMSArNDI2NCwxMyBAQCBi cHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorICAgICAgYW5kIGhlbmNlIG1heSBjbGVhciB1bnByb2Nl c3NlZCBlbnRyaWVzIGluIHRoZSBCUyBjaGFpbi4gICovCisgICBpbnQgc2hsaWJfZXZlbnQgPSAw OworICAgaW50IGppdF9ldmVudCA9IDA7CisrICBicHN0YXQgYnM7CisgCisgICByZXR2YWwubWFp bl9hY3Rpb24gPSBCUFNUQVRfV0hBVF9LRUVQX0NIRUNLSU5HOworICAgcmV0dmFsLmNhbGxfZHVt bXkgPSBTVE9QX05PTkU7CiArICByZXR2YWwuaXNfbG9uZ2ptcCA9IDA7Ci0gICBmb3IgKDsgYnMg IT0gTlVMTDsgYnMgPSBicy0+bmV4dCkKKyAKKy0gIGZvciAoOyBicyAhPSBOVUxMOyBicyA9IGJz LT5uZXh0KQorKyAgZm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQp CiAgICAgIHsKLSAgICAgICBlbnVtIGNsYXNzIGJzX2NsYXNzID0gbm9fZWZmZWN0OwotQEAgLTM4 NzIsMTAgKzM5NDgsMTUgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKLSAJICAgIGJzX2NsYXNz ID0gbm9fZWZmZWN0OworICAgICAgIC8qIEV4dHJhY3QgdGhpcyBCUydzIGFjdGlvbi4gIEFmdGVy IHByb2Nlc3NpbmcgZWFjaCBCUywgd2UgY2hlY2sKKyAJIGlmIGl0cyBhY3Rpb24gb3ZlcnJpZGVz IGFsbCB3ZSd2ZSBzZWVtIHNvIGZhci4gICovCitAQCAtNDI0MiwxMCArNDMyNCwxNSBAQCBicHN0 YXRfd2hhdCAoYnBzdGF0IGJzKQorIAkgICAgfQogIAkgIGJyZWFrOwogIAljYXNlIGJwX2xvbmdq bXA6CiArCWNhc2UgYnBfZXhjZXB0aW9uOgotIAkgIGJzX2NsYXNzID0gbG9uZ19qdW1wOworIAkg IHRoaXNfYWN0aW9uID0gQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FOwogKwkgIHJldHZh bC5pc19sb25nam1wID0gYnMtPmJyZWFrcG9pbnRfYXQtPm93bmVyLT50eXBlID09IGJwX2xvbmdq bXA7CiAgCSAgYnJlYWs7CiAgCWNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CiArCWNhc2UgYnBfZXhj ZXB0aW9uX3Jlc3VtZToKLSAJICBic19jbGFzcyA9IGxvbmdfcmVzdW1lOworIAkgIHRoaXNfYWN0 aW9uID0gQlBTVEFUX1dIQVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUU7CiArCSAgcmV0dmFsLmlzX2xv bmdqbXAKICsJICAgID0gYnMtPmJyZWFrcG9pbnRfYXQtPm93bmVyLT50eXBlID09IGJwX2xvbmdq bXBfcmVzdW1lOwogIAkgIGJyZWFrOwogIAljYXNlIGJwX3N0ZXBfcmVzdW1lOgogIAkgIGlmIChi cy0+c3RvcCkKLUBAIC0zODk4LDYgKzM5NzksNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQot IAljYXNlIGJwX3RocmVhZF9ldmVudDoKK0BAIC00MjYxLDYgKzQzNDgsNyBAQCBicHN0YXRfd2hh dCAoYnBzdGF0IGJzKQogIAljYXNlIGJwX292ZXJsYXlfZXZlbnQ6CiAgCWNhc2UgYnBfbG9uZ2pt cF9tYXN0ZXI6CisgCWNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CiArCWNhc2UgYnBfZXhj ZXB0aW9uX21hc3RlcjoKLSAJICBic19jbGFzcyA9IGJwX25vc3RvcDsKKyAJICB0aGlzX2FjdGlv biA9IEJQU1RBVF9XSEFUX1NJTkdMRTsKICAJICBicmVhazsKICAJY2FzZSBicF9jYXRjaHBvaW50 OgotQEAgLTQwNDIsNiArNDEyNCw4IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChz dHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MzEzLDYgKzQ0MDEsMjAgQEAgYnBzdGF0X3doYXQg KGJwc3RhdCBicykKKyAJICAgICBvdXQgYWxyZWFkeS4gICovCisgCSAgaW50ZXJuYWxfZXJyb3Ig KF9fRklMRV9fLCBfX0xJTkVfXywKKyAJCQkgIF8oImJwc3RhdF93aGF0OiB0cmFjZXBvaW50IGVu Y291bnRlcmVkIikpOworKwkgIGJyZWFrOworKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoK KysJICAvKiBTa2lwIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgYnV0IG90aGVyd2lzZSBub3RoaW5n IGhhcHBlbnMuICBHREIgaXMKKysJICAgICBpbnNlcnRpbmcgbmV3IGJwX2dudV9pZnVuY19yZXNv bHZlcl9yZXR1cm4gYXQgdGhpcyBwb2ludCBidXQKKysJICAgICBicF9nbnVfaWZ1bmNfcmVzb2x2 ZXIgaXMgYmVpbmcga2VwdCB0aGVyZSBhcyBhbm90aGVyCisrCSAgICAgYnBfZ251X2lmdW5jX3Jl c29sdmVyX3JldHVybiBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhlIG1lYW50aW1lLiAgKi8KKysJICB0 aGlzX2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NJTkdMRTsKKysJICBicmVhazsKKysJY2FzZSBicF9n bnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgorKwkgIC8qIFRoZSB3aG9sZSBicF9nbnVfaWZ1bmNf cmVzb2x2ZXIgd2l0aCBpdHMgYXNzb2NpYXRlZAorKwkgICAgIGJwX2dudV9pZnVuY19yZXNvbHZl cl9yZXR1cm4gcmVsYXRlZF9icmVha3BvaW50J3MgaGFzIGJlZW4KKysJICAgICByZXNvbHZlZCBu b3csIGFsbCB0aGVzZSBoZWxwZXIgYnJlYWtwb2ludHMgYXJlIGJlaW5nIHJlbW92ZWQgYW5kCisr CSAgICAgbmV3IGZpbmFsIGJwX2JyZWFrcG9pbnQgaXMgYmVpbmcgcHV0IGF0IHRoZSB0YXJnZXQg bG9jYXRpb24uICAqLworKwkgIGJyZWFrOworIAlkZWZhdWx0OgorIAkgIGludGVybmFsX2Vycm9y IChfX0ZJTEVfXywgX19MSU5FX18sCisgCQkJICBfKCJicHN0YXRfd2hhdDogdW5oYW5kbGVkIGJw dHlwZSAlZCIpLCAoaW50KSBicHR5cGUpOworQEAgLTQzNTAsNiArNDQ1MiwyMyBAQCBicHN0YXRf d2hhdCAoYnBzdGF0IGJzKQorICAgICAgIGhhbmRsZV9qaXRfZXZlbnQgKCk7CisgICAgIH0KKyAK KysgIGZvciAoYnMgPSBic19oZWFkOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQorKyAgICB7 CisrICAgICAgaWYgKGJzLT5icmVha3BvaW50X2F0ID09IE5VTEwpCisrCWNvbnRpbnVlOworKyAg ICAgIGlmIChicy0+YnJlYWtwb2ludF9hdC0+b3duZXIgPT0gTlVMTCkKKysJY29udGludWU7Cisr ICAgICAgc3dpdGNoIChicy0+YnJlYWtwb2ludF9hdC0+b3duZXItPnR5cGUpCisrCXsKKysJY2Fz ZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CisrCSAgZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKGJz LT5icmVha3BvaW50X2F0LT5vd25lcik7CisrCSAgYnJlYWs7CisrCWNhc2UgYnBfZ251X2lmdW5j X3Jlc29sdmVyX3JldHVybjoKKysJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3AgKGJz LT5icmVha3BvaW50X2F0LT5vd25lcik7CisrCSAgYnJlYWs7CisrCX0KKysgICAgfQorKworICAg cmV0dXJuIHJldHZhbDsKKyB9CisgCitAQCAtNDQ2MSw2ICs0NTgwLDggQEAgcHJpbnRfb25lX2Jy ZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICB7YnBfYWNjZXNz X3dhdGNocG9pbnQsICJhY2Mgd2F0Y2hwb2ludCJ9LAogICAgICB7YnBfbG9uZ2ptcCwgImxvbmdq bXAifSwKICAgICAge2JwX2xvbmdqbXBfcmVzdW1lLCAibG9uZ2ptcCByZXN1bWUifSwKQEAgLTc2 MywxNSArNjA3LDIyIEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgICAgIHticF9z dGVwX3Jlc3VtZSwgInN0ZXAgcmVzdW1lIn0sCiAgICAgIHticF93YXRjaHBvaW50X3Njb3BlLCAi d2F0Y2hwb2ludCBzY29wZSJ9LAogICAgICB7YnBfY2FsbF9kdW1teSwgImNhbGwgZHVtbXkifSwK LUBAIC00MDQ5LDYgKzQxMzMsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIsCi0gICAgIHticF90aHJlYWRfZXZlbnQsICJ0aHJlYWQgZXZlbnRz In0sCitAQCAtNDQ3MCwxMSArNDU5MSwxNCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlv biAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgIHticF9vdmVybGF5X2V2ZW50LCAib3Zlcmxh eSBldmVudHMifSwKICAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0ZXIifSwK KyAgICAge2JwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyLCAic3RkOjp0ZXJtaW5hdGUgbWFzdGVyIn0s CiArICAgIHticF9leGNlcHRpb25fbWFzdGVyLCAiZXhjZXB0aW9uIG1hc3RlciJ9LAogICAgICB7 YnBfY2F0Y2hwb2ludCwgImNhdGNocG9pbnQifSwKICAgICAge2JwX3RyYWNlcG9pbnQsICJ0cmFj ZXBvaW50In0sCiAgICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRyYWNlcG9pbnQifSwK LUBAIC00MTczLDYgKzQyNTgsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIsCisgICAgIHticF9zdGF0aWNfdHJhY2Vwb2ludCwgInN0YXRpYyB0 cmFjZXBvaW50In0sCisgICAgIHticF9qaXRfZXZlbnQsICJqaXQgZXZlbnRzIn0sCisrICAgIHti cF9nbnVfaWZ1bmNfcmVzb2x2ZXIsICJnbnUtaWZ1bmMgcmVzb2x2ZXIifSwKKysgICAge2JwX2du dV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sICJnbnUtZnVuYyByZXNvbHZlciByZXR1cm4ifSwKKyAg IH07CisgICAKKyAgIHN0YXRpYyBjaGFyIGJwZW5hYmxlc1tdID0gIm55bm55IjsKK0BAIC00NTk1 LDYgKzQ3MTksOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF9maW5pc2g6CiAgICAgICAgY2FzZSBicF9sb25nam1w OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC03ODAsMTUgKzYzMSwzMSBAQCBp bmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogICAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6 CiAgICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgogICAgICAgIGNhc2UgYnBfY2FsbF9k dW1teToKLUBAIC00MTgwLDYgKzQyNjcsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlv biAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCi0gICAgICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6CitA QCAtNDYwNCwxMCArNDczMCwxMyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAg IGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CisgICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21h c3RlcjoKICsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CiAgICAgICAgY2FzZSBicF90 cmFjZXBvaW50OgogICAgICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50OgorICAgICAgIGNhc2Ug YnBfc3RhdGljX3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6Ci1AQCAtNDgx Niw2ICs0OTA0LDggQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpi cHQpCisrICAgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CisrICAgICAgY2FzZSBicF9n bnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgorIAlpZiAob3B0cy5hZGRyZXNzcHJpbnQpCisgCSAg eworIAkgICAgYW5ub3RhdGVfZmllbGQgKDQpOworQEAgLTQ4ODgsNyArNTAxNyw4IEBAIHVzZXJf c2V0dGFibGVfYnJlYWtwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9pbnQgKmIpCisgCSAgfHwg Yi0+dHlwZSA9PSBicF9jYXRjaHBvaW50CisgCSAgfHwgYi0+dHlwZSA9PSBicF9oYXJkd2FyZV9i cmVha3BvaW50CisgCSAgfHwgaXNfdHJhY2Vwb2ludCAoYikKKy0JICB8fCBpc193YXRjaHBvaW50 IChiKSk7CisrCSAgfHwgaXNfd2F0Y2hwb2ludCAoYikKKysJICB8fCBiLT50eXBlID09IGJwX2du dV9pZnVuY19yZXNvbHZlcik7CisgfQorIAkKKyAvKiBQcmludCBpbmZvcm1hdGlvbiBvbiB1c2Vy IHNldHRhYmxlIGJyZWFrcG9pbnQgKHdhdGNocG9pbnQsIGV0YykKK0BAIC01MzM0LDYgKzU0NjQs OCBAQCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKICAgICAg Y2FzZSBicF9maW5pc2g6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25n am1wX3Jlc3VtZToKQEAgLTc5NywxNSArNjY0LDc2IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAg MTAwNjQ0CiAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgIGNhc2UgYnBfd2F0Y2hwb2lu dF9zY29wZToKICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTQ4MjQsNiArNDkxNCw3IEBA IGFsbG9jYXRlX2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQotICAgICBjYXNl IGJwX292ZXJsYXlfZXZlbnQ6CitAQCAtNTM0NCw2ICs1NDc2LDkgQEAgYWxsb2NhdGVfYnBfbG9j YXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfaml0X2V2ZW50Ogog ICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgorICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVf bWFzdGVyOgorKyAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKKysgICAgY2FzZSBicF9n bnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgogKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6 CiAgICAgICAgbG9jLT5sb2NfdHlwZSA9IGJwX2xvY19zb2Z0d2FyZV9icmVha3BvaW50OwogICAg ICAgIGJyZWFrOwogICAgICBjYXNlIGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQ6Ci1AQCAtNTAxMiw4 ICs1MTAzLDcgQEAgbWFrZV9icmVha3BvaW50X3Blcm1hbmVudCAoc3RydWN0IGJyZWFrcG9pbnQg KmIpCitAQCAtNTQyMCw2ICs1NTU1LDcgQEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9j YXRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorICAgYi0+c3lzY2FsbHNfdG9fYmVfY2F1 Z2h0ID0gTlVMTDsKKyAgIGItPm9wcyA9IE5VTEw7CisgICBiLT5jb25kaXRpb25fbm90X3BhcnNl ZCA9IDA7CisrICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBiOworIAorICAgLyogQWRkIHRoaXMg YnJlYWtwb2ludCB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbgorICAgICAgc28gdGhhdCBhIGxpc3Qg b2YgYnJlYWtwb2ludHMgd2lsbCBjb21lIG91dCBpbiBvcmRlcgorQEAgLTU0MzksNyArNTU3NSw3 IEBAIHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKKyAKKyAvKiBJbml0aWFsaXplIGxvYy0+ZnVuY3Rpb25fbmFtZS4gICovCisgc3Rh dGljIHZvaWQKKy1zZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoc3RydWN0IGJwX2xv Y2F0aW9uICpsb2MpCisrc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKHN0cnVjdCBi cF9sb2NhdGlvbiAqbG9jLCBpbnQgZXhwbGljaXRfbG9jKQorIHsKKyAgIGdkYl9hc3NlcnQgKGxv Yy0+b3duZXIgIT0gTlVMTCk7CisgCitAQCAtNTQ0Nyw4ICs1NTgzLDI5IEBAIHNldF9icmVha3Bv aW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKKyAgICAgICB8 fCBsb2MtPm93bmVyLT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQKKyAgICAgICB8fCBp c190cmFjZXBvaW50IChsb2MtPm93bmVyKSkKKyAgICAgeworLSAgICAgIGZpbmRfcGNfcGFydGlh bF9mdW5jdGlvbiAobG9jLT5hZGRyZXNzLCAmKGxvYy0+ZnVuY3Rpb25fbmFtZSksIAorLQkJCQlO VUxMLCBOVUxMKTsKKysgICAgICBpZiAoZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChsb2MtPmFk ZHJlc3MsICYobG9jLT5mdW5jdGlvbl9uYW1lKSwgTlVMTCwKKysJCQkJICAgIE5VTEwpID09IEZJ TkRfUENfUEFSVElBTF9GVU5DVElPTl9HTlVfSUZVTkMKKysJICAmJiAhZXhwbGljaXRfbG9jKQor Kwl7CisrCSAgc3RydWN0IGJyZWFrcG9pbnQgKmIgPSBsb2MtPm93bmVyOworKworKwkgIGdkYl9h c3NlcnQgKGxvYy0+cHNwYWNlID09IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrCSAgaWYgKHJl c29sdmVfZ251X2lmdW5jIChsb2MtPmZ1bmN0aW9uX25hbWUsICZsb2MtPnJlcXVlc3RlZF9hZGRy ZXNzKSkKKysJICAgIHsKKysJICAgICAgLyogUmVjYWxjdWxhdGUgQUREUkVTUyBiYXNlZCBvbiBu ZXcgUkVRVUVTVEVEX0FERFJFU1MuICAqLworKwkgICAgICBsb2MtPmFkZHJlc3MgPSBhZGp1c3Rf YnJlYWtwb2ludF9hZGRyZXNzIChsb2MtPmdkYmFyY2gsCisrCQkJCQkJCWxvYy0+cmVxdWVzdGVk X2FkZHJlc3MsCisrCQkJCQkJCWItPnR5cGUpOworKwkgICAgfQorKwkgIGVsc2UgaWYgKGItPnR5 cGUgPT0gYnBfYnJlYWtwb2ludCAmJiBiLT5sb2MgPT0gbG9jCisrCSAgICAgICAgICAgJiYgbG9j LT5uZXh0ID09IE5VTEwgJiYgYi0+cmVsYXRlZF9icmVha3BvaW50ID09IGIpCisrCSAgICB7Cisr CSAgICAgIC8qIENyZWF0ZSBvbmx5IHRoZSB3aG9sZSBuZXcgYnJlYWtwb2ludCBvZiB0aGlzIHR5 cGUgYnV0IGRvIG5vdAorKwkJIG1lc3MgbW9yZSBjb21wbGljYXRlZCBicmVha3BvaW50cyB3aXRo IG11bHRpcGxlIGxvY2F0aW9ucy4gICovCisrCSAgICAgIGItPnR5cGUgPSBicF9nbnVfaWZ1bmNf cmVzb2x2ZXI7CisrCSAgICB9CisrCX0KKysKKyAgICAgICBpZiAobG9jLT5mdW5jdGlvbl9uYW1l KQorIAlsb2MtPmZ1bmN0aW9uX25hbWUgPSB4c3RyZHVwIChsb2MtPmZ1bmN0aW9uX25hbWUpOwor ICAgICB9CitAQCAtNTUyMSw3ICs1Njc4LDggQEAgc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKKyAgIGItPmxvYy0+c2VjdGlvbiA9IHNhbC5zZWN0aW9uOworICAg Yi0+bGluZV9udW1iZXIgPSBzYWwubGluZTsKKyAKKy0gIHNldF9icmVha3BvaW50X2xvY2F0aW9u X2Z1bmN0aW9uIChiLT5sb2MpOworKyAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24g KGItPmxvYywKKysJCQkJICAgIHNhbC5leHBsaWNpdF9wYyB8fCBzYWwuZXhwbGljaXRfbGluZSk7 CisgCisgICBicmVha3BvaW50c19jaGFuZ2VkICgpOworIAorQEAgLTU1NDgsOCArNTcwNiw3IEBA IG1ha2VfYnJlYWtwb2ludF9wZXJtYW5lbnQgKHN0cnVjdCBicmVha3BvaW50ICpiKQogIH0KICAK ICAvKiBDYWxsIHRoaXMgcm91dGluZSB3aGVuIHN0ZXBwaW5nIGFuZCBuZXh0aW5nIHRvIGVuYWJs ZSBhIGJyZWFrcG9pbnQKQEAgLTgxNSw3ICs3NDMsNyBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQw IDEwMDY0NAogIAogIHZvaWQKICBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQot QEAgLTUwMjYsMTAgKzUxMTYsMTEgQEAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVh ZCkKK0BAIC01NTYyLDExICs1NzE5LDEyIEBAIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0 aHJlYWQpCiAgICAgICBjbG9uZXMgb2YgdGhvc2UgYW5kIGVuYWJsZSB0aGVtIGZvciB0aGUgcmVx dWVzdGVkIHRocmVhZC4gICovCiAgICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKICAg ICAgaWYgKGItPnBzcGFjZSA9PSBjdXJyZW50X3Byb2dyYW1fc3BhY2UKQEAgLTgyNCwxMiArNzUy LDEzIEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiArCSAgICB8fCBiLT50eXBlID09 IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpKQogICAgICAgIHsKICAJc3RydWN0IGJyZWFrcG9pbnQgKmNs b25lID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKGIpOworIAogLQljbG9uZS0+dHlwZSA9 IGJwX2xvbmdqbXA7CiArCWNsb25lLT50eXBlID0gYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3Rl ciA/IGJwX2xvbmdqbXAgOiBicF9leGNlcHRpb247CiAgCWNsb25lLT50aHJlYWQgPSB0aHJlYWQ7 CiAgICAgICAgfQogIH0KLUBAIC01MDQxLDcgKzUxMzIsNyBAQCBkZWxldGVfbG9uZ2ptcF9icmVh a3BvaW50IChpbnQgdGhyZWFkKQorQEAgLTU1NzgsNyArNTczNiw3IEBAIGRlbGV0ZV9sb25nam1w X2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgKnRlbXA7 CiAgCiAgICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKQEAgLTgzOCw3ICs3NjcsMzMg QEAgaW5kZXggOGM5Nzk0OS4uMGI2Njc0MCAxMDA2NDQKICAgICAgICB7CiAgCWlmIChiLT50aHJl YWQgPT0gdGhyZWFkKQogIAkgIGRlbGV0ZV9icmVha3BvaW50IChiKTsKLUBAIC02MTE2LDYgKzYy MDcsOCBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC02NTk1LDcgKzY3NTMs NyBAQCBjbG9uZV9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcp CisgCisgICBjb3B5ID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKG9yaWct PmdkYmFyY2gsIG9yaWctPnR5cGUpOworICAgY29weS0+bG9jID0gYWxsb2NhdGVfYnBfbG9jYXRp b24gKGNvcHkpOworLSAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGNvcHktPmxv Yyk7CisrICBzZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoY29weS0+bG9jLCAxKTsK KyAKKyAgIGNvcHktPmxvYy0+Z2RiYXJjaCA9IG9yaWctPmxvYy0+Z2RiYXJjaDsKKyAgIGNvcHkt PmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBvcmlnLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzOwor QEAgLTY2OTQsNiArNjg1Miw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQorIAlk b19jbGVhbnVwcyAodWlfb3V0X2NoYWluKTsKKyAJYnJlYWs7CisgICAgICAgY2FzZSBicF9icmVh a3BvaW50OgorKyAgICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgorIAlpZiAodWlfb3V0 X2lzX21pX2xpa2VfcCAodWlvdXQpKQorIAkgIHsKKyAJICAgIHNheV93aGVyZSA9IDA7CitAQCAt NjcwNCw2ICs2ODYzLDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisgCWVsc2UK KyAJICBwcmludGZfZmlsdGVyZWQgKF8oIkJyZWFrcG9pbnQiKSk7CisgCXByaW50Zl9maWx0ZXJl ZCAoXygiICVkIiksIGItPm51bWJlcik7CisrCWlmIChiLT50eXBlID09IGJwX2dudV9pZnVuY19y ZXNvbHZlcikKKysJICBwcmludGZfZmlsdGVyZWQgKF8oIiBhdCBnbnUtaW5kaXJlY3QtZnVuY3Rp b24gcmVzb2x2ZXIiKSk7CisgCXNheV93aGVyZSA9IDE7CisgCWJyZWFrOworICAgICAgIGNhc2Ug YnBfaGFyZHdhcmVfYnJlYWtwb2ludDoKK0BAIC02NzUwLDYgKzY5MTEsOCBAQCBtZW50aW9uIChz dHJ1Y3QgYnJlYWtwb2ludCAqYikKICAgICAgICBjYXNlIGJwX2ZpbmlzaDoKICAgICAgICBjYXNl IGJwX2xvbmdqbXA6CiAgICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKQEAgLTg0NiwxNiAr ODAxLDI3IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiArICAgICAgY2FzZSBicF9l eGNlcHRpb25fcmVzdW1lOgogICAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgICAgY2Fz ZSBicF9jYWxsX2R1bW15OgotICAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKLUBAIC02 MTI0LDYgKzYyMTcsNyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSAgICAgICBj YXNlIGJwX292ZXJsYXlfZXZlbnQ6CisgICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlOgorQEAg LTY3NjAsNiArNjkyMyw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQogICAgICAg IGNhc2UgYnBfaml0X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CisgICAg ICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKKysgICAgICBjYXNlIGJwX2dudV9pZnVu Y19yZXNvbHZlcl9yZXR1cm46CiArICAgICAgY2FzZSBicF9leGNlcHRpb25fbWFzdGVyOgogIAli cmVhazsKICAgICAgICB9CiAgCi1AQCAtNzUwOSw2ICs3NjAzLDcgQEAgc3RydWN0IHVudGlsX2Jy ZWFrX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MKK0BAIC02ODIwLDcgKzY5ODUsOCBAQCBhZGRf bG9jYXRpb25fdG9fYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCisgICBnZGJfYXNz ZXJ0IChsb2MtPnBzcGFjZSAhPSBOVUxMKTsKKyAgIGxvYy0+c2VjdGlvbiA9IHNhbC0+c2VjdGlv bjsKKyAKKy0gIHNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChsb2MpOworKyAgc2V0 X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGxvYywKKysJCQkJICAgIHNhbC0+ZXhwbGlj aXRfcGMgfHwgc2FsLT5leHBsaWNpdF9saW5lKTsKKyAgIHJldHVybiBsb2M7CisgfQorIAwKK0BA IC04MzQ2LDYgKzg1MTIsNyBAQCBzdHJ1Y3QgdW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRp b25fYXJncwogIHsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50OwogICAgc3RydWN0 IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQyOwpAQCAtODYzLDcgKzgyOSw3IEBAIGluZGV4IDhjOTc5 NDkuLjBiNjY3NDAgMTAwNjQ0CiAgfTsKICAKICAvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBi eSBmZXRjaF9pbmZlcmlvcl9ldmVudCB2aWEgdGhlCi1AQCAtNzUyMyw2ICs3NjE4LDcgQEAgdW50 aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKK0BAIC04MzYwLDYgKzg1 MjcsNyBAQCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQogICAg ZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQpOwogICAgaWYgKGEtPmJyZWFrcG9pbnQy KQogICAgICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludDIpOwpAQCAtODcxLDcgKzgz Nyw3IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgfQogIAogIHZvaWQKLUBAIC03 NTM0LDYgKzc2MzAsOCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSwgaW50IGFueXdoZXJlKQorQEAgLTgzNzEsNiArODUzOSw4IEBAIHVudGlsX2JyZWFrX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgICBzdHJ1Y3Qg YnJlYWtwb2ludCAqYnJlYWtwb2ludDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50 MiA9IE5VTEw7CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwpAQCAtODgwLDcgKzg0Niw3 IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgCiAgICBjbGVhcl9wcm9jZWVkX3N0 YXR1cyAoKTsKICAKLUBAIC03NTcyLDYgKzc2NzAsOSBAQCB1bnRpbF9icmVha19jb21tYW5kIChj aGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQorQEAgLTg0MDksNiArODU3OSw5 IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55 d2hlcmUpCiAgCiAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQg KGJyZWFrcG9pbnQpOwogIApAQCAtODkwLDcgKzg1Niw3IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3 NDAgMTAwNjQ0CiAgICAvKiBLZWVwIHdpdGhpbiB0aGUgY3VycmVudCBmcmFtZSwgb3IgaW4gZnJh bWVzIGNhbGxlZCBieSB0aGUgY3VycmVudAogICAgICAgb25lLiAgKi8KICAKLUBAIC03NTg0LDYg Kzc2ODUsMTAgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHks IGludCBhbnl3aGVyZSkKK0BAIC04NDIxLDYgKzg1OTQsMTAgQEAgdW50aWxfYnJlYWtfY29tbWFu ZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKICAJCQkJCSAgICAgIGZy YW1lX3Vud2luZF9jYWxsZXJfaWQgKGZyYW1lKSwKICAJCQkJCSAgICAgIGJwX3VudGlsKTsKICAg ICAgICBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKGJyZWFrcG9pbnQyKTsKQEAgLTkw MSw3ICs4NjcsNyBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogICAgICB9CiAgCiAg ICBwcm9jZWVkICgtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAwKTsKLUBAIC03NjAwLDYgKzc3 MDUsNyBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50 IGFueXdoZXJlKQorQEAgLTg0MzcsNiArODYxNCw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgCiAgICAgICAgYXJncy0+YnJl YWtwb2ludCA9IGJyZWFrcG9pbnQ7CiAgICAgICAgYXJncy0+YnJlYWtwb2ludDIgPSBicmVha3Bv aW50MjsKQEAgLTkwOSw0OCArODc1LDEzNCBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0 NAogIAogICAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgICAgICAgYWRkX2Nv bnRpbnVhdGlvbiAoaW5mZXJpb3JfdGhyZWFkICgpLAotQEAgLTg3OTYsNiArODkwMiw3IEBAIGRl bGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAJICAgICYmIGItPnR5cGUg IT0gYnBfdGhyZWFkX2V2ZW50CitAQCAtOTU2NCwxMiArOTc0MiwyMiBAQCBkZWxldGVfYnJlYWtw b2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKKyAKKyAgIC8qIEF0IGxlYXN0IGF2b2lkIHRo aXMgc3RhbGUgcmVmZXJlbmNlIHVudGlsIHRoZSByZWZlcmVuY2UgY291bnRpbmcgb2YKKyAgICAg IGJyZWFrcG9pbnRzIGdldHMgcmVzb2x2ZWQuICAqLworLSAgaWYgKGJwdC0+cmVsYXRlZF9icmVh a3BvaW50ICE9IE5VTEwpCisrICBpZiAoYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gYnB0KQor ICAgICB7CistICAgICAgZ2RiX2Fzc2VydCAoYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0 ZWRfYnJlYWtwb2ludCA9PSBicHQpOworLSAgICAgIGJwdC0+cmVsYXRlZF9icmVha3BvaW50LT5k aXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKKy0gICAgICBicHQtPnJlbGF0ZWRf YnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50ID0gTlVMTDsKKy0gICAgICBicHQtPnJlbGF0 ZWRfYnJlYWtwb2ludCA9IE5VTEw7CisrICAgICAgaWYgKGJwdC0+dHlwZSA9PSBicF93YXRjaHBv aW50X3Njb3BlKQorKwl3YXRjaHBvaW50X2RlbF9hdF9uZXh0X3N0b3AgKGJwdC0+cmVsYXRlZF9i cmVha3BvaW50KTsKKysgICAgICBlbHNlIGlmIChicHQtPnJlbGF0ZWRfYnJlYWtwb2ludC0+dHlw ZSA9PSBicF93YXRjaHBvaW50X3Njb3BlKQorKwl3YXRjaHBvaW50X2RlbF9hdF9uZXh0X3N0b3Ag KGJwdCk7CisrICAgICAgZWxzZQorKwl7CisrCSAgc3RydWN0IGJyZWFrcG9pbnQgKnJlbGF0ZWQ7 CisrCisrCSAgLyogVW5saW5rIGJwdCBmcm9tIHRoZSBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCBy aW5nLiAgKi8KKysJICBmb3IgKHJlbGF0ZWQgPSBicHQ7IHJlbGF0ZWQtPnJlbGF0ZWRfYnJlYWtw b2ludCAhPSBicHQ7CisrCSAgICAgICByZWxhdGVkID0gcmVsYXRlZC0+cmVsYXRlZF9icmVha3Bv aW50KTsKKysJICByZWxhdGVkLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBicHQtPnJlbGF0ZWRfYnJl YWtwb2ludDsKKysJICBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCA9IGJwdDsKKysJfQorICAgICB9 CisgCisgICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9kZWxldGVkIChicHQtPm51bWJlcik7 CitAQCAtOTY1OCw2ICs5ODQ2LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZy b21fdHR5KQogIAkgICAgJiYgYi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50CiAgCSAgICAmJiBi LT50eXBlICE9IGJwX2xvbmdqbXBfbWFzdGVyCisgCSAgICAmJiBiLT50eXBlICE9IGJwX3N0ZF90 ZXJtaW5hdGVfbWFzdGVyCiArCSAgICAmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIK ICAJICAgICYmIGItPm51bWJlciA+PSAwKQogIAkgIHsKICAJICAgIGJyZWFrc190b19kZWxldGUg PSAxOwotQEAgLTg4MTUsNiArODkyMiw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSkKLSAJCSYmIGItPnR5cGUgIT0gYnBfaml0X2V2ZW50CitAQCAtOTY3OSw2ICs5 ODY4LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkJJiYg Yi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50CiAgCQkmJiBiLT50eXBlICE9IGJwX2xvbmdqbXBf bWFzdGVyCisgCQkmJiBiLT50eXBlICE9IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyCiArCQkmJiBi LT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKICAJCSYmIGItPm51bWJlciA+PSAwKQogIAkg ICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CiAgCSAgfQotQEAgLTkxMjUsNiArOTIzMyw3IEBA IGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAJIHJlc2V0IGxhdGVyIGJ5IGJy ZWFrcG9pbnRfcmVfc2V0LiAgKi8KK0BAIC05ODg3LDYgKzEwMDc3LDkgQEAgdXBkYXRlX2JyZWFr cG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKyAgICAgcmV0dXJuOworIAor ICAgYi0+bG9jID0gTlVMTDsKKysgIHhmcmVlIChiLT5zb3VyY2VfZmlsZSk7CisrICBiLT5zb3Vy Y2VfZmlsZSA9IE5VTEw7CisrICBiLT5saW5lX251bWJlciA9IDA7CisgCisgICBmb3IgKGkgPSAw OyBpIDwgc2Fscy5uZWx0czsgKytpKQorICAgICB7CitAQCAtOTkxMywxMSArMTAxMDYsNyBAQCB1 cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVha3BvaW50ICpiLAorIAkgICAg fQorIAl9CisgCistICAgICAgaWYgKGItPnNvdXJjZV9maWxlICE9IE5VTEwpCistCXhmcmVlIChi LT5zb3VyY2VfZmlsZSk7CistICAgICAgaWYgKHNhbHMuc2Fsc1tpXS5zeW10YWIgPT0gTlVMTCkK Ky0JYi0+c291cmNlX2ZpbGUgPSBOVUxMOworLSAgICAgIGVsc2UKKysgICAgICBpZiAoc2Fscy5z YWxzW2ldLnN5bXRhYiAhPSBOVUxMICYmIGItPnNvdXJjZV9maWxlID09IE5VTEwpCisgCWItPnNv dXJjZV9maWxlID0geHN0cmR1cCAoc2Fscy5zYWxzW2ldLnN5bXRhYi0+ZmlsZW5hbWUpOworIAor ICAgICAgIGlmIChiLT5saW5lX251bWJlciA9PSAwKQorQEAgLTk5OTksNiArMTAxODgsNyBAQCBi cmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCisgICAgIGNhc2UgYnBfdHJhY2Vwb2lu dDoKKyAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CisgICAgIGNhc2UgYnBfc3RhdGljX3Ry YWNlcG9pbnQ6CisrICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgorICAgICAgIC8qIERv IG5vdCBhdHRlbXB0IHRvIHJlLXNldCBicmVha3BvaW50cyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1 cC4gICovCisgICAgICAgaWYgKGItPmVuYWJsZV9zdGF0ZSA9PSBicF9zdGFydHVwX2Rpc2FibGVk KQorIAlyZXR1cm4gMDsKK0BAIC0xMDEzOSw2ICsxMDMyOSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0 X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICBjYXNl IGJwX2xvbmdqbXBfbWFzdGVyOgorICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgog KyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CiAgICAgICAgZGVsZXRlX2JyZWFrcG9pbnQg KGIpOwogICAgICAgIGJyZWFrOwogIAotQEAgLTkxNDcsNiArOTI1Niw4IEBAIGJyZWFrcG9pbnRf cmVfc2V0X29uZSAodm9pZCAqYmludCkKK0BAIC0xMDE2Miw3ICsxMDM1MywxMCBAQCBicmVha3Bv aW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCiAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAg ICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKICsgICAg Y2FzZSBicF9leGNlcHRpb246CiArICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKICAgICAg Y2FzZSBicF9qaXRfZXZlbnQ6CisrICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVy bjoKICAgICAgICBicmVhazsKICAgICAgfQotQEAgLTkxODksNiArOTMwMCw3IEBAIGJyZWFrcG9p bnRfcmVfc2V0ICh2b2lkKQotICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJf bG9uZ2ptcCIpOworIAorQEAgLTEwMjA1LDYgKzEwMzk5LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQg KHZvaWQpCiAgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAi KTsKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsK KyAgIGNyZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgic3RkOjp0ZXJtaW5h dGUoKSIpOwogKyAgY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKICB9CiAg DAogIC8qIFJlc2V0IHRoZSB0aHJlYWQgbnVtYmVyIG9mIHRoaXMgYnJlYWtwb2ludDoKLUBAIC0x MDE4Nyw2ICsxMDI5OSwyMiBAQCBhbGxfdHJhY2Vwb2ludHMgKCkKK0BAIC0xMDMzNCwxMSArMTA1 MjksMjAgQEAgbWFwX2JyZWFrcG9pbnRfbnVtYmVycyAoY2hhciAqYXJncywgdm9pZCAoKmZ1bmN0 aW9uKSAoc3RydWN0IGJyZWFrcG9pbnQgKiwKKyAJICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwg dG1wKQorIAkgICAgaWYgKGItPm51bWJlciA9PSBudW0pCisgCSAgICAgIHsKKy0JCXN0cnVjdCBi cmVha3BvaW50ICpyZWxhdGVkX2JyZWFrcG9pbnQgPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7Cisr CQlzdHJ1Y3QgYnJlYWtwb2ludCAqcmVsYXRlZF9icmVha3BvaW50OworKworIAkJbWF0Y2ggPSAx OworLQkJZnVuY3Rpb24gKGIsIGRhdGEpOworLQkJaWYgKHJlbGF0ZWRfYnJlYWtwb2ludCkKKy0J CSAgZnVuY3Rpb24gKHJlbGF0ZWRfYnJlYWtwb2ludCwgZGF0YSk7CisrCQlyZWxhdGVkX2JyZWFr cG9pbnQgPSBiOworKwkJZG8KKysJCSAgeworKwkJICAgIHN0cnVjdCBicmVha3BvaW50ICpuZXh0 X3JlbGF0ZWRfYjsKKysKKysJCSAgICAvKiBGVU5DVElPTiBjYW4gYmUgYWxzbyBkZWxldGVfYnJl YWtwb2ludC4gICovCisrCQkgICAgbmV4dF9yZWxhdGVkX2IgPSByZWxhdGVkX2JyZWFrcG9pbnQt PnJlbGF0ZWRfYnJlYWtwb2ludDsKKysJCSAgICBmdW5jdGlvbiAocmVsYXRlZF9icmVha3BvaW50 LCBkYXRhKTsKKysJCSAgICByZWxhdGVkX2JyZWFrcG9pbnQgPSBuZXh0X3JlbGF0ZWRfYjsKKysJ CSAgfQorKwkJd2hpbGUgKHJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKTsKKyAJCWJyZWFrOworIAkg ICAgICB9CisgCSAgaWYgKG1hdGNoID09IDApCitAQCAtMTE0MjgsNiArMTE2MzIsMjIgQEAgYWxs X3RyYWNlcG9pbnRzICgpCiAgICByZXR1cm4gdHBfdmVjOwogIH0KICAKQEAgLTk3MywxNCArMTAy NSwxMjIgQEAgaW5kZXggOGM5Nzk0OS4uMGI2Njc0MCAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxw IHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFr IGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBwcmV2ZW50IGR1cGxp Y2F0aW9uLgotQEAgLTEwNzMxLDQgKzEwODU5LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9k ZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAorQEAg LTExNDk3LDYgKzExNzE3LDEwNyBAQCBzYXZlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21f dHR5KQorICAgaGVscF9saXN0IChzYXZlX2NtZGxpc3QsICJzYXZlICIsIC0xLCBnZGJfc3Rkb3V0 KTsKKyB9CisgCisrc3RhdGljIHZvaWQKKytnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoc3RydWN0 IGJyZWFrcG9pbnQgKmIpCisreworKyAgc3RydWN0IGJyZWFrcG9pbnQgKmJfcmV0dXJuOworKyAg c3RydWN0IGZyYW1lX2luZm8gKnByZXZfZnJhbWUgPSBnZXRfcHJldl9mcmFtZSAoZ2V0X2N1cnJl bnRfZnJhbWUgKCkpOworKyAgc3RydWN0IGZyYW1lX2lkIHByZXZfZnJhbWVfaWQgPSBnZXRfc3Rh Y2tfZnJhbWVfaWQgKHByZXZfZnJhbWUpOworKyAgQ09SRV9BRERSIHByZXZfcGMgPSBnZXRfZnJh bWVfcGMgKHByZXZfZnJhbWUpOworKyAgaW50IHRocmVhZF9pZCA9IHBpZF90b190aHJlYWRfaWQg KGluZmVyaW9yX3B0aWQpOworKworKyAgZ2RiX2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXIpOworKworKyAgZm9yIChiX3JldHVybiA9IGItPnJlbGF0ZWRfYnJlYWtwb2lu dDsgYl9yZXR1cm4gIT0gYjsKKysgICAgICAgYl9yZXR1cm4gPSBiX3JldHVybi0+cmVsYXRlZF9i cmVha3BvaW50KQorKyAgICB7CisrICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1cm4tPnR5cGUgPT0g YnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybik7CisrICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1 cm4tPmxvYyAhPSBOVUxMICYmIGJfcmV0dXJuLT5sb2MtPm5leHQgPT0gTlVMTCk7CisrICAgICAg Z2RiX2Fzc2VydCAoZnJhbWVfaWRfcCAoYl9yZXR1cm4tPmZyYW1lX2lkKSk7CisrCisrICAgICAg aWYgKGJfcmV0dXJuLT50aHJlYWQgPT0gdGhyZWFkX2lkCisrCSAgJiYgYl9yZXR1cm4tPmxvYy0+ cmVxdWVzdGVkX2FkZHJlc3MgPT0gcHJldl9wYworKwkgICYmIGZyYW1lX2lkX2VxIChiX3JldHVy bi0+ZnJhbWVfaWQsIHByZXZfZnJhbWVfaWQpKQorKwlicmVhazsKKysgICAgfQorKworKyAgaWYg KGJfcmV0dXJuID09IGIpCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNh bDsKKysKKysgICAgICAvKiBObyBuZWVkIHRvIGNhbGwgZmluZF9wY19saW5lIGZvciBzeW1ib2xz IHJlc29sdmluZyBhcyB0aGlzIGlzIG9ubHkKKysJIGEgaGVscGVyIGJyZWFrcG9pbnRlciBuZXZl ciBzaG93biB0byB0aGUgdXNlci4gICovCisrCisrICAgICAgaW5pdF9zYWwgKCZzYWwpOworKyAg ICAgIHNhbC5wc3BhY2UgPSBjdXJyZW50X2luZmVyaW9yICgpLT5wc3BhY2U7CisrICAgICAgc2Fs LnBjID0gcHJldl9wYzsKKysgICAgICBzYWwuc2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2Fs LnBjKTsKKysgICAgICBzYWwuZXhwbGljaXRfcGMgPSAxOworKyAgICAgIGJfcmV0dXJuID0gc2V0 X21vbWVudGFyeV9icmVha3BvaW50IChnZXRfZnJhbWVfYXJjaCAocHJldl9mcmFtZSksIHNhbCwK KysJCQkJCSAgIHByZXZfZnJhbWVfaWQsCisrCQkJCQkgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJf cmV0dXJuKTsKKysKKysgICAgICAvKiBBZGQgbmV3IGJfcmV0dXJuIHRvIHRoZSByaW5nIGxpc3Qg Yi0+cmVsYXRlZF9icmVha3BvaW50LiAgKi8KKysgICAgICBnZGJfYXNzZXJ0IChiX3JldHVybi0+ cmVsYXRlZF9icmVha3BvaW50ID09IGJfcmV0dXJuKTsKKysgICAgICBiX3JldHVybi0+cmVsYXRl ZF9icmVha3BvaW50ID0gYi0+cmVsYXRlZF9icmVha3BvaW50OworKyAgICAgIGItPnJlbGF0ZWRf YnJlYWtwb2ludCA9IGJfcmV0dXJuOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrZ251 X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKKyt7Cisr ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChnZXRfY3VycmVudF9m cmFtZSAoKSk7CisrICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3R5cGUgPSBidWlsdGluX3R5cGUg KGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfZnVuYzsKKysgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoZnVuY19mdW5jX3R5cGUpOworKyAgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSA9IGdldF90aHJlYWRfcmVnY2FjaGUgKGluZmVyaW9yX3B0aWQpOworKyAgc3Ry dWN0IHZhbHVlICp2YWx1ZTsKKysgIENPUkVfQUREUiByZXNvbHZlZF9hZGRyZXNzLCByZXNvbHZl ZF9wYzsKKysgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOworKyAgc3RydWN0IHN5bXRhYnNf YW5kX2xpbmVzIHNhbHM7CisrCisrICBnZGJfYXNzZXJ0IChiLT50eXBlID09IGJwX2dudV9pZnVu Y19yZXNvbHZlcl9yZXR1cm4pOworKworKyAgdmFsdWUgPSBhbGxvY2F0ZV92YWx1ZSAodmFsdWVf dHlwZSk7CisrICBnZGJhcmNoX3JldHVybl92YWx1ZSAoZ2RiYXJjaCwgZnVuY19mdW5jX3R5cGUs IHZhbHVlX3R5cGUsIHJlZ2NhY2hlLAorKwkJCXZhbHVlX2NvbnRlbnRzX3JhdyAodmFsdWUpLCBO VUxMKTsKKysgIHJlc29sdmVkX2FkZHJlc3MgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWx1ZSk7Cisr ICByZXNvbHZlZF9wYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsCisrCQkJCQkJICAgIHJlc29sdmVkX2FkZHJlc3MsCisrCQkJCQkJICAgICZjdXJyZW50X3Rh cmdldCk7CisrCisrICB3aGlsZSAoYi0+cmVsYXRlZF9icmVha3BvaW50ICE9IGIpCisrICAgIHsK KysgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYl9uZXh0ID0gYi0+cmVsYXRlZF9icmVha3BvaW50 OworKworKyAgICAgIHN3aXRjaCAoYi0+dHlwZSkKKysJeworKwljYXNlIGJwX2dudV9pZnVuY19y ZXNvbHZlcjoKKysJICBicmVhazsKKysJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJu OgorKwkgIGRlbGV0ZV9icmVha3BvaW50IChiKTsKKysJICBicmVhazsKKysJZGVmYXVsdDoKKysJ ICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAorKwkJCSAgXygiaGFuZGxlX2lu ZmVyaW9yX2V2ZW50OiBJbnZhbGlkICIKKysJCQkgICAgImdudS1pbmRpcmVjdC1mdW5jdGlvbiBi cmVha3BvaW50IHR5cGUgJWQiKSwKKysJCQkgIChpbnQpIGItPnR5cGUpOworKwl9CisrICAgICAg YiA9IGJfbmV4dDsKKysgICAgfQorKyAgZ2RiX2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXIpOworKworKyAgZ2RiX2Fzc2VydCAoY3VycmVudF9wcm9ncmFtX3NwYWNlID09 IGItPnBzcGFjZSk7CisrICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChnZGJhcmNoLCBiLT5hZGRy X3N0cmluZywgcmVzb2x2ZWRfcGMpOworKworKyAgc2FsID0gZmluZF9wY19saW5lIChyZXNvbHZl ZF9wYywgMCk7CisrICBzYWxzLm5lbHRzID0gMTsKKysgIHNhbHMuc2FscyA9ICZzYWw7CisrCisr ICBiLT50eXBlID0gYnBfYnJlYWtwb2ludDsKKysgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9u cyAoYiwgc2Fscyk7CisrfQorKworIHZvaWQKKyBfaW5pdGlhbGl6ZV9icmVha3BvaW50ICh2b2lk KQorIHsKK0BAIC0xMjAyMiw0ICsxMjM0Myw1IEBAIGluZmVyaW9yIGluIGFsbC1zdG9wIG1vZGUs IGdkYiBiZWhhdmVzIGFzIGlmIGFsd2F5cy1pbnNlcnRlZCBtb2RlIGlzIG9mZi4iKSwKICAgIGF1 dG9tYXRpY19oYXJkd2FyZV9icmVha3BvaW50cyA9IDE7CiAgCiAgICBvYnNlcnZlcl9hdHRhY2hf YWJvdXRfdG9fcHJvY2VlZCAoYnJlYWtwb2ludF9hYm91dF90b19wcm9jZWVkKTsKICsgIG9ic2Vy dmVyX2F0dGFjaF9tYXJrX3VzZWQgKGJyZWFrcG9pbnRfdHlwZXNfbWFya191c2VkKTsKICB9CiBk aWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuaCBiL2dkYi9icmVha3BvaW50LmgKLWluZGV4IDZi MzczYTMuLjU5YWE0MTIgMTAwNjQ0CitpbmRleCA2ZjVkMDUwLi5kMGMzY2MxIDEwMDY0NAogLS0t IGEvZ2RiL2JyZWFrcG9pbnQuaAogKysrIGIvZ2RiL2JyZWFrcG9pbnQuaAogQEAgLTU2LDYgKzU2 LDEzIEBAIGVudW0gYnB0eXBlCkBAIC05OTcsOSArMTE1Nyw5IEBAIGluZGV4IDZiMzczYTMuLjU5 YWE0MTIgMTAwNjQ0CiAgICAgIC8qIFVzZWQgYnkgd2FpdF9mb3JfaW5mZXJpb3IgZm9yIHN0ZXBw aW5nIG92ZXIgc3Vicm91dGluZSBjYWxscywgZm9yCiAgICAgICAgIHN0ZXBwaW5nIG92ZXIgc2ln bmFsIGhhbmRsZXJzLCBhbmQgZm9yIHNraXBwaW5nIHByb2xvZ3Vlcy4gICovCiAgICAgIGJwX3N0 ZXBfcmVzdW1lLAotQEAgLTExOCw2ICsxMjUsOSBAQCBlbnVtIGJwdHlwZQotIAotICAgICBicF9s b25nam1wX21hc3RlciwKK0BAIC0xMjUsNiArMTMyLDkgQEAgZW51bSBicHR5cGUKKyAgICAgLyog TWFzdGVyIGNvcGllcyBvZiBzdGQ6OnRlcm1pbmF0ZSBicmVha3BvaW50cy4gICovCisgICAgIGJw X3N0ZF90ZXJtaW5hdGVfbWFzdGVyLAogIAogKyAgICAvKiBMaWtlIGJwX2xvbmdqbXBfbWFzdGVy LCBidXQgZm9yIGV4Y2VwdGlvbnMuICAqLwogKyAgICBicF9leGNlcHRpb25fbWFzdGVyLApAQCAt MTAwNywxMCArMTE2NywyMCBAQCBpbmRleCA2YjM3M2EzLi41OWFhNDEyIDEwMDY0NAogICAgICBi cF9jYXRjaHBvaW50LAogIAogICAgICBicF90cmFjZXBvaW50LAotQEAgLTYwMyw2ICs2MTMsMTAg QEAgc3RydWN0IGJwc3RhdF93aGF0CitAQCAtMTMzLDYgKzE0Myw5IEBAIGVudW0gYnB0eXBlCisg CisgICAgIC8qIEV2ZW50IGZvciBKSVQgY29tcGlsZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0 aW9uLiAgKi8KKyAgICAgYnBfaml0X2V2ZW50LAorKworKyAgICBicF9nbnVfaWZ1bmNfcmVzb2x2 ZXIsCisrICAgIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sCisgICB9OworIAorIC8qIFN0 YXRlcyBvZiBlbmFibGVtZW50IG9mIGJyZWFrcG9pbnQuICovCitAQCAtNjUzLDYgKzY2NiwxMCBA QCBzdHJ1Y3QgYnBzdGF0X3doYXQKICAgICAgICAgY29udGludWluZyBmcm9tIGEgY2FsbCBkdW1t eSB3aXRob3V0IHBvcHBpbmcgdGhlIGZyYW1lIGlzIG5vdCBhCiAgICAgICAgIHVzZWZ1bCBvbmUp LiAgKi8KLSAgICAgaW50IGNhbGxfZHVtbXk7CisgICAgIGVudW0gc3RvcF9zdGFja19raW5kIGNh bGxfZHVtbXk7CiArCiArICAgIC8qIFVzZWQgZm9yIEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JF U1VNRS4gIFRydWUgaWYgd2UgYXJlCiArICAgICAgIGhhbmRsaW5nIGEgbG9uZ2ptcCwgZmFsc2Ug aWYgd2UgYXJlIGhhbmRsaW5nIGFuIGV4Y2VwdGlvbi4gICovCkBAIC0xMDE4LDM0NyArMTE4OCwx MSBAQCBpbmRleCA2YjM3M2EzLi41OWFhNDEyIDEwMDY0NAogICAgfTsKICAKICAvKiBUaGUgcG9z c2libGUgcmV0dXJuIHZhbHVlcyBmb3IgcHJpbnRfYnBzdGF0LCBwcmludF9pdF9ub3JtYWwsCi1A QCAtOTg1LDYgKzk5OSw5IEBAIGV4dGVybiBpbnQgY2F0Y2hpbmdfc3lzY2FsbF9udW1iZXIgKGlu dCBzeXNjYWxsX251bWJlcik7Ci0gLyogVGVsbCBhIGJyZWFrcG9pbnQgdG8gYmUgcXVpZXQuICAq LwotIGV4dGVybiB2b2lkIG1ha2VfYnJlYWtwb2ludF9zaWxlbnQgKHN0cnVjdCBicmVha3BvaW50 ICopOwotIAotKy8qIFNldCBicmVhayBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBCIHRvIEVYUC4g ICovCi0rZXh0ZXJuIHZvaWQgc2V0X2JyZWFrcG9pbnRfY29uZGl0aW9uIChzdHJ1Y3QgYnJlYWtw b2ludCAqYiwgY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpOwotKwotIC8qIFJldHVybiBhIHRyYWNl cG9pbnQgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIGlmIGZvdW5kLiAgKi8KLSBleHRlcm4gc3RydWN0 IGJyZWFrcG9pbnQgKmdldF90cmFjZXBvaW50IChpbnQgbnVtKTsKLSAKLWRpZmYgLS1naXQgYS9n ZGIvYy1leHAueSBiL2dkYi9jLWV4cC55Ci1pbmRleCA4NDU3NzFjLi43YTc0ZDdlIDEwMDY0NAot LS0tIGEvZ2RiL2MtZXhwLnkKLSsrKyBiL2dkYi9jLWV4cC55Ci1AQCAtMTg2LDYgKzE4Niw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc3Rva2VuIG9wZXJhdG9yX3N0b2tlbiAoY29uc3QgY2hhciAqKTsKLSAl dG9rZW4gPHRzdmFsPiBTVFJJTkcKLSAldG9rZW4gPHRzdmFsPiBDSEFSCi0gJXRva2VuIDxzc3lt PiBOQU1FIC8qIEJMT0NLTkFNRSBkZWZpbmVkIGJlbG93IHRvIGdpdmUgaXQgaGlnaGVyIHByZWNl ZGVuY2UuICovCi0rJXRva2VuIDxzc3ltPiBVTktOT1dOX0NQUF9OQU1FCi0gJXRva2VuIDx2b2lk dmFsPiBDT01QTEVURQotICV0b2tlbiA8dHN5bT4gVFlQRU5BTUUKLSAldHlwZSA8c3ZhbD4gbmFt ZQotQEAgLTM5MSw2ICszOTIsMzAgQEAgZXhwCToJZXhwICcoJwotIAkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKE9QX0ZVTkNBTEwpOyB9Ci0gCTsKLSAKLStleHAJOglVTktOT1dOX0NQUF9OQU1F ICcoJwotKwkJCXsKLSsKLSsJCQkgLyogVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBiZSBhIGFuIGFy Z3VtZW50IGRlZmluZWQKLSsJCQkgICAgbG9va3VwIGZ1bmN0aW9uIChLb2VuaWcpLiAgKi8KLSsJ CQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9BRExfRlVOQyk7Ci0rCQkJICB3cml0ZV9leHBf ZWx0X2Jsb2NrIChleHByZXNzaW9uX2NvbnRleHRfYmxvY2spOwotKwkJCSAgd3JpdGVfZXhwX2Vs dF9zeW0gKE5VTEwpOyAvKiBQbGFjZSBob2xkZXIgKi8KLSsJCQkgIHdyaXRlX2V4cF9zdHJpbmcg KCQxLnN0b2tlbik7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfQURMX0ZVTkMpOwot KwotKwkJCS8qIFRoaXMgaXMgdG8gc2F2ZSB0aGUgdmFsdWUgb2YgYXJnbGlzdF9sZW4KLSsJCQkg ICBiZWluZyBhY2N1bXVsYXRlZCBieSBhbiBvdXRlciBmdW5jdGlvbiBjYWxsLiAgKi8KLSsKLSsJ CQkgIHN0YXJ0X2FyZ2xpc3QgKCk7Ci0rCQkJfQotKwkJYXJnbGlzdCAnKScJJXByZWMgQVJST1cK LSsJCQl7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfRlVOQ0FMTCk7Ci0rCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSBlbmRfYXJnbGlzdCAoKSk7Ci0rCQkJICB3 cml0ZV9leHBfZWx0X29wY29kZSAoT1BfRlVOQ0FMTCk7Ci0rCQkJfQotKwk7Ci0rCi0gbGN1cmx5 CToJJ3snCi0gCQkJeyBzdGFydF9hcmdsaXN0ICgpOyB9Ci0gCTsKLUBAIC00MTgsNiArNDQzLDI0 IEBAIGV4cCAgICAgOiAgICAgICBleHAgJygnIG5vbmVtcHR5X3R5cGVsaXN0ICcpJyBjb25zdF9v cl92b2xhdGlsZQotIAkJCX0KLSAJOwotIAotKy8qCi0rZXhwICAgICA6ICAgICAgIEJMT0NLTkFN RSAnKCcgbm9uZW1wdHlfdHlwZWxpc3QgJyknCi0rCQkJeyBpbnQgaTsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChUWVBFX0lOU1RBTkNFX0xPT0tVUCk7Ci0rCQkJICB3cml0ZV9leHBfZWx0 X3N5bSAoJDEuc3ltKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChUWVBFX0lOU1RBTkNF X0xPT0tVUCk7Ci0rCi0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRSk7 Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSAkPGl2ZWM+M1swXSk7Ci0r CQkJICBmb3IgKGkgPSAwOyBpIDwgJDxpdmVjPjNbMF07ICsraSkKLSsJCQkgICAgd3JpdGVfZXhw X2VsdF90eXBlICgkPHR2ZWM+M1tpICsgMV0pOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0 KChMT05HRVNUKSAkPGl2ZWM+M1swXSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQ RV9JTlNUQU5DRSk7Ci0rCQkJICBkb19jbGVhbnVwcyAodHlwZWxpc3RfY2xlYW51cCk7Ci0rCQkJ fQotKwk7Ci0rKi8KLSsKLSByY3VybHkJOgknfScKLSAJCQl7ICQkID0gZW5kX2FyZ2xpc3QgKCkg LSAxOyB9Ci0gCTsKLUBAIC03ODUsMTIgKzgyOCwxMyBAQCBxdWFsaWZpZWRfbmFtZToJdHlwZWJh c2UgQ09MT05DT0xPTiBuYW1lCi0gCTsKLSAKLSB2YXJpYWJsZToJcXVhbGlmaWVkX25hbWUKLSsJ fAlDT0xPTkNPTE9OIHF1YWxpZmllZF9uYW1lCi0gCXwJQ09MT05DT0xPTiBuYW1lCi0gCQkJewot IAkJCSAgY2hhciAqbmFtZSA9IGNvcHlfbmFtZSAoJDIpOwotIAkJCSAgc3RydWN0IHN5bWJvbCAq c3ltOwotIAkJCSAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sOwotLQotKwkJCSAgCi0g CQkJICBzeW0gPQotIAkJCSAgICBsb29rdXBfc3ltYm9sIChuYW1lLCAoY29uc3Qgc3RydWN0IGJs b2NrICopIE5VTEwsCi0gCQkJCQkgICBWQVJfRE9NQUlOLCAoaW50ICopIE5VTEwpOwotQEAgLTEy ODYsNiArMTMzMCw3IEBAIG5hbWUJOglOQU1FIHsgJCQgPSAkMS5zdG9rZW47IH0KLSAJfAlCTE9D S05BTUUgeyAkJCA9ICQxLnN0b2tlbjsgfQotIAl8CVRZUEVOQU1FIHsgJCQgPSAkMS5zdG9rZW47 IH0KLSAJfAlOQU1FX09SX0lOVCAgeyAkJCA9ICQxLnN0b2tlbjsgfQotKwl8CVVOS05PV05fQ1BQ X05BTUUgIHsgJCQgPSAkMS5zdG9rZW47IH0JCi0gCXwJb3BlcmF0b3IgeyAkJCA9ICQxOyB9Ci0g CTsKLSAKLUBAIC0xMjk4LDYgKzEzNDMsMTUgQEAgbmFtZV9ub3RfdHlwZW5hbWUgOglOQU1FCi0g ICAgY29udGV4dCB3aGVyZSBvbmx5IGEgbmFtZSBjb3VsZCBvY2N1ciwgdGhpcyBtaWdodCBiZSB1 c2VmdWwuCi0gICAJfAlOQU1FX09SX0lOVAotICAqLwotKyAgCXwJVU5LTk9XTl9DUFBfTkFNRSAK LSsJfAlvcGVyYXRvcgotKwkJCXsKLSsJCQkgICQkLnN0b2tlbiA9ICQxOwotKwkJCSAgJCQuc3lt ID0gbG9va3VwX3N5bWJvbCAoJDEucHRyLAotKwkJCQkJCSAgZXhwcmVzc2lvbl9jb250ZXh0X2Js b2NrLAotKwkJCQkJCSAgVkFSX0RPTUFJTiwKLSsJCQkJCQkgICYkJC5pc19hX2ZpZWxkX29mX3Ro aXMpOwotKwkJCX0KLSAJOwotIAotICUlCi1AQCAtMjAzMyw2ICsyMDg3LDEzIEBAIHN0YXRpYyBp bnQgbGFzdF93YXNfc3RydWN0b3A7Ci0gc3RhdGljIGludAotIHl5bGV4ICh2b2lkKQotIHsKLSsg IC8qIG5hbWVfcHJlZml4IHN0b3JlcyB0aGUgZnVsbCBxdWFsaWZpY2F0aW9uIG9mIGEgdmFyaWFi bGUgdGhhdCBpcwotKyAgICAgc3BlY2lmaWVkIGluIHRoZSBleHByZXNzaW9uLiBJdCBpcyB1c2Vk IHRvIGVsZW1pbmF0ZSBjb25mdXNpb24gCi0rICAgICBkdXJpbmcgbG9va3VwLiovCi0rICBzdGF0 aWMgY2hhciAqbmFtZV9wcmVmaXggPSBOVUxMOwotKyAgc3RhdGljIGludCBuYW1lX3ByZWZpeF9s ZW4gPSAwOwotKyAgc3RhdGljIGludCB0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsgIAotICAgaW50 IGM7Ci0gICBpbnQgbmFtZWxlbjsKLSAgIHVuc2lnbmVkIGludCBpOwotQEAgLTIwNDEsOSArMjEw MiwxOSBAQCB5eWxleCAodm9pZCkKLSAgIGNoYXIgKmNvcHk7Ci0gCi0gICBsYXN0X3dhc19zdHJ1 Y3RvcCA9IDA7Ci0tCi0rICAKLSAgcmV0cnk6Ci0tCi0rICAKLSsgIGlmICh0ZXJtaW5hdGVfcHJl Zml4Ci0rICAgICAgfHwgbGV4cHRyICE9IG5hbWVfcHJlZml4ICsgbmFtZV9wcmVmaXhfbGVuKQot KyAgICB7Ci0rICAgICAgLyogU29tZSB0b2tlbiB3YXMgc2tpcHBlZCwgc28gY2xlYXIgbmFtZV9w cmVmaXguICovCi0rICAgICAgbmFtZV9wcmVmaXggPSBOVUxMOwotKyAgICAgIG5hbWVfcHJlZml4 X2xlbiA9IDA7Ci0rICAgIH0KLSsgICAgCi0rICB0ZXJtaW5hdGVfcHJlZml4ID0gMTsKLSsgIAkg IAkgIAotICAgLyogQ2hlY2sgaWYgdGhpcyBpcyBhIG1hY3JvIGludm9jYXRpb24gdGhhdCB3ZSBu ZWVkIHRvIGV4cGFuZC4gICovCi0gICBpZiAoISBzY2FubmluZ19tYWNyb19leHBhbnNpb24gKCkp Ci0gICAgIHsKLUBAIC0yMDc5LDEwICsyMTUwLDE5IEBAIHl5bGV4ICh2b2lkKQotIAkgICAgJiYg cGFyc2VfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlICE9IGxhbmd1YWdlX2NwbHVzKQotIAkgIGJyZWFr OwotIAotKwlpZiAodG9rZW50YWIyW2ldLnRva2VuID09IENPTE9OQ09MT04pCi0rCSAgewotKwkg ICAgbmFtZV9wcmVmaXhfbGVuICs9IDI7Ci0rCSAgICB0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsJ ICAgIGlmIChuYW1lX3ByZWZpeCA9PSBOVUxMKQotKwkgICAgICBuYW1lX3ByZWZpeCA9IGxleHB0 cjsKLSsJICB9Ci0rCi0gCWxleHB0ciArPSAyOwotIAl5eWx2YWwub3Bjb2RlID0gdG9rZW50YWIy W2ldLm9wY29kZTsKLSAJaWYgKGluX3BhcnNlX2ZpZWxkICYmIHRva2VudGFiMltpXS50b2tlbiA9 PSBBUlJPVykKLSAJICBsYXN0X3dhc19zdHJ1Y3RvcCA9IDE7Ci0rCQotIAlyZXR1cm4gdG9rZW50 YWIyW2ldLnRva2VuOwotICAgICAgIH0KLSAKLUBAIC0yMTExLDYgKzIxOTEsOCBAQCB5eWxleCAo dm9pZCkKLSAgICAgICAgIHJldHVybiAwOwotIAotICAgICBjYXNlICcgJzoKLSsgICAgICBuYW1l X3ByZWZpeF9sZW4rKzsKLSsgICAgICB0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSAgICAgY2FzZSAn XHQnOgotICAgICBjYXNlICdcbic6Ci0gICAgICAgbGV4cHRyKys7Ci1AQCAtMjI2OCwxMSArMjM1 MCwxMyBAQCB5eWxleCAodm9pZCkKLSAgICAgZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciAnJWMn IGluIGV4cHJlc3Npb24uIiwgYyk7Ci0gCi0gICAvKiBJdCdzIGEgbmFtZS4gIFNlZSBob3cgbG9u ZyBpdCBpcy4gICovCi0rICAKLSAgIG5hbWVsZW4gPSAwOwotICAgZm9yIChjID0gdG9rc3RhcnRb bmFtZWxlbl07Ci0gICAgICAgIChjID09ICdfJyB8fCBjID09ICckJyB8fCAoYyA+PSAnMCcgJiYg YyA8PSAnOScpCi0gCXx8IChjID49ICdhJyAmJiBjIDw9ICd6JykgfHwgKGMgPj0gJ0EnICYmIGMg PD0gJ1onKSB8fCBjID09ICc8Jyk7KQotICAgICB7Ci0rICAgIAotICAgICAgIC8qIFRlbXBsYXRl IHBhcmFtZXRlciBsaXN0cyBhcmUgcGFydCBvZiB0aGUgbmFtZS4KLSAJIEZJWE1FOiBUaGlzIG1p c2hhbmRsZXMgYHByaW50ICRhPDQmJiRhPjMnLiAgKi8KLSAKLUBAIC0yMzU3LDE0ICsyNDQxLDMz IEBAIHl5bGV4ICh2b2lkKQotICAgICAgY3VycmVudGx5IGFzIG5hbWVzIG9mIHR5cGVzOyBOQU1F IGZvciBvdGhlciBzeW1ib2xzLgotICAgICAgVGhlIGNhbGxlciBpcyBub3QgY29uc3RyYWluZWQg dG8gY2FyZSBhYm91dCB0aGUgZGlzdGluY3Rpb24uICAqLwotICAgewotKyAgICBjaGFyICp0bXAg PSBjb3B5OwotICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gICAgIGludCBpc19hX2ZpZWxkX29m X3RoaXMgPSAwOwotICAgICBpbnQgaGV4dHlwZTsKLSAKLS0gICAgc3ltID0gbG9va3VwX3N5bWJv bCAoY29weSwgZXhwcmVzc2lvbl9jb250ZXh0X2Jsb2NrLAotKyAgICBpZiAobmFtZV9wcmVmaXgg IT0gTlVMTCkKLSsgICAgICB7Ci0rCXRtcCA9IGFsbG9jYSAobmFtZV9wcmVmaXhfbGVuICsgbmFt ZWxlbiArIDEpOwotKwltZW1jcHkgKHRtcCwgbmFtZV9wcmVmaXgsIG5hbWVfcHJlZml4X2xlbiAr IG5hbWVsZW4pOwotKwl0bXBbbmFtZV9wcmVmaXhfbGVuICsgbmFtZWxlbl0gPSAnXDAnOwotKyAg ICAgIH0KLSsKLSsgICAgc3ltID0gbG9va3VwX3N5bWJvbCAodG1wLCBleHByZXNzaW9uX2NvbnRl eHRfYmxvY2ssCi0gCQkJIFZBUl9ET01BSU4sCi0gCQkJIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5n dWFnZSA9PSBsYW5ndWFnZV9jcGx1cwotIAkJCSA/ICZpc19hX2ZpZWxkX29mX3RoaXMgOiAoaW50 ICopIE5VTEwpOwotKwkJCSAKLSsgICAgLyogS2VlcCB0aGlzIG5hbWUgYXMgdGhlIHByZWZpeCBm b3IgdGhlIG5leHQgbmFtZS4gKi8KLSsgICAgaWYgKHN5bSkKLSsgICAgICB7Ci0rCWlmIChuYW1l X3ByZWZpeCA9PSBOVUxMKQotKwkgIG5hbWVfcHJlZml4ID0gdG9rc3RhcnQ7Ci0rCi0rCW5hbWVf cHJlZml4X2xlbiArPSBuYW1lbGVuOwotKwl0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsgICAgICB9 Ci0rCi0gICAgIC8qIENhbGwgbG9va3VwX3N5bXRhYiwgbm90IGxvb2t1cF9wYXJ0aWFsX3N5bXRh YiwgaW4gY2FzZSB0aGVyZSBhcmUKLSAgICAgICAgbm8gcHN5bXRhYnMgKGNvZmYsIHhjb2ZmLCBv ciBzb21lIGZ1dHVyZSBjaGFuZ2UgdG8gYmxvdyBhd2F5IHRoZQotICAgICAgICBwc3ltdGFicyBv bmNlIG9uY2Ugc3ltYm9scyBhcmUgcmVhZCkuICAqLwotQEAgLTI0MjMsNiArMjUyNiwxMiBAQCB5 eWxleCAodm9pZCkKLSAgICAgeXlsdmFsLnNzeW0uaXNfYV9maWVsZF9vZl90aGlzID0gaXNfYV9m aWVsZF9vZl90aGlzOwotICAgICBpZiAoaW5fcGFyc2VfZmllbGQgJiYgKmxleHB0ciA9PSAnXDAn KQotICAgICAgIHNhd19uYW1lX2F0X2VvZiA9IDE7Ci0rICAgICAgICAKLSsgICAgaWYgKHN5bSA9 PSBOVUxMIAotKyAgICAgICAgJiYgcGFyc2VfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1 YWdlX2NwbHVzCi0rICAgICAgICAmJiAhbG9va3VwX21pbmltYWxfc3ltYm9sICh0bXAsIE5VTEws IE5VTEwpKQotKyAgICAgIHJldHVybiBVTktOT1dOX0NQUF9OQU1FOwotKwotICAgICByZXR1cm4g TkFNRTsKLSAgIH0KLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2MtbGFuZy5jIGIvZ2RiL2MtbGFuZy5j Ci1pbmRleCBkNjIwODgxLi4zNGNiMzRhIDEwMDY0NAotLS0tIGEvZ2RiL2MtbGFuZy5jCi0rKysg Yi9nZGIvYy1sYW5nLmMKLUBAIC0xMTQwLDYgKzExNDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX2MgPQotIHsKLSAgIHByaW50X3N1YmV4cF9z dGFuZGFyZCwKLSAgIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKLSsgIG9wZXJhdG9yX2NoZWNr X3N0YW5kYXJkLAotICAgb3BfbmFtZV9zdGFuZGFyZCwKLSAgIGR1bXBfc3ViZXhwX2JvZHlfc3Rh bmRhcmQsCi0gICBldmFsdWF0ZV9zdWJleHBfYwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmlu dC5jIGIvZ2RiL2MtdHlwZXByaW50LmMKLWluZGV4IGVkOTgzODEuLjMwNjFhYjcgMTAwNjQ0Citp bmRleCA5MjZhZTJmLi5hNTliOTY1IDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsr KyBiL2dkYi9jLXR5cGVwcmludC5jCi1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJjLWxh bmcuaCIKLSAjaW5jbHVkZSAidHlwZXByaW50LmgiCi0gI2luY2x1ZGUgImNwLWFiaS5oIgotKyNp bmNsdWRlICJqdi1sYW5nLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLSAjaW5jbHVk ZSA8ZXJybm8uaD4KLUBAIC00MCw4ICs0MSw2IEBAIHN0YXRpYyB2b2lkIGNwX3R5cGVfcHJpbnRf bWV0aG9kX2FyZ3MgKHN0cnVjdCB0eXBlICptdHlwZSwgY2hhciAqcHJlZml4LAotIAkJCQkgICAg ICAgY2hhciAqdmFyc3RyaW5nLCBpbnQgc3RhdGljcCwKLSAJCQkJICAgICAgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pOwotIAotLXN0YXRpYyB2b2lkIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqKTsKLS0KLSBzdGF0aWMgdm9pZCBjcF90eXBlX3ByaW50 X2Rlcml2YXRpb25faW5mbyAoc3RydWN0IHVpX2ZpbGUgKiwgc3RydWN0IHR5cGUgKik7Ci0gCi0g c3RhdGljIHZvaWQgY190eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi1AQCAtMTk3LDYgKzE5NiwyMyBAQCBjcF90eXBlX3ByaW50 X21ldGhvZF9hcmdzIChzdHJ1Y3QgdHlwZSAqbXR5cGUsIGNoYXIgKnByZWZpeCwgY2hhciAqdmFy c3RyaW5nLAotICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2b2lkIik7Ci0gCi0gICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7Ci0rCi0rICAvKiBGb3Igbm9uLXN0YXRpYyBt ZXRob2RzLCByZWFkIHF1YWxpZmllcnMgZnJvbSB0aGUgdHlwZSBvZgotKyAgICAgVEhJUy4gICov Ci0rICBpZiAoIXN0YXRpY3ApCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZG9tYWluOwot KwotKyAgICAgIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQ RV9DT0RFIChhcmdzWzBdLnR5cGUpID09IFRZUEVfQ09ERV9QVFIpOwotKyAgICAgIGRvbWFpbiA9 IFRZUEVfVEFSR0VUX1RZUEUgKGFyZ3NbMF0udHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfQ09O U1QgKGRvbWFpbikpCi0rCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiBjb25zdCIpOwotKwot KyAgICAgIGlmIChUWVBFX1ZPTEFUSUxFIChkb21haW4pKQotKwlmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICIgdm9sYXRpbGUiKTsKLSsgICAgfQotIH0KLSAKLSAKLUBAIC0zNTMsMTAgKzM2OSwx NCBAQCBjX3R5cGVfcHJpbnRfbW9kaWZpZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLAotIAotIC8qIFByaW50IG91dCB0aGUgYXJndW1lbnRzIG9mIFRZUEUsIHdo aWNoIHNob3VsZCBoYXZlIFRZUEVfQ09ERV9NRVRIT0QKLSAgICBvciBUWVBFX0NPREVfRlVOQywg dG8gU1RSRUFNLiAgQXJ0aWZpY2lhbCBhcmd1bWVudHMsIHN1Y2ggYXMgInRoaXMiCi0tICAgaW4g bm9uLXN0YXRpYyBtZXRob2RzLCBhcmUgZGlzcGxheWVkLiAgKi8KLSsgICBpbiBub24tc3RhdGlj IG1ldGhvZHMsIGFyZSBkaXNwbGF5ZWQgaWYgU0hPV19BUlRJRklDSUFMIGlzCi0rICAgbm9uLXpl cm8uIExBTkdVQUdFIGlzIHRoZSBsYW5ndWFnZSBpbiB3aGljaCBUWVBFIHdhcyBkZWZpbmVkLiAg VGhpcyBpcwotKyAgIGEgbmVjZXNzYXJ5IGV2aWwgc2luY2UgdGhpcyBjb2RlIGlzIHVzZWQgYnkg dGhlIEMsIEMrKywgYW5kIEphdmEKLSsgICBiYWNrZW5kcy4gKi8KLSAKLS1zdGF0aWMgdm9pZAot LWNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSkKLSt2b2lkCi0rY190eXBlX3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLAotKwkJICAgaW50IHNob3dfYXJ0aWZpY2lhbCwgZW51bSBsYW5n dWFnZSBsYW5ndWFnZSkKLSB7Ci0gICBpbnQgaSwgbGVuOwotICAgc3RydWN0IGZpZWxkICphcmdz OwotQEAgLTM2OCwxMyArMzg4LDE5IEBAIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBUWVBF X05GSUVMRFMgKHR5cGUpOyBpKyspCi0gICAgIHsKLSsgICAgICBpZiAoVFlQRV9GSUVMRF9BUlRJ RklDSUFMICh0eXBlLCBpKSAmJiAhc2hvd19hcnRpZmljaWFsKQotKwljb250aW51ZTsKLSsKLSAg ICAgICBpZiAocHJpbnRlZF9hbnkpCi0gCXsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIsICIpOwotIAkgIHdyYXBfaGVyZSAoIiAgICAiKTsKLSAJfQotIAotLSAgICAgIGNfcHJpbnRf dHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOwotKyAg ICAgIGlmIChsYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQotKwlqYXZhX3ByaW50X3R5cGUgKFRZ UEVfRklFTERfVFlQRSAodHlwZSwgaSksICIiLCBzdHJlYW0sIC0xLCAwKTsKLSsgICAgICBlbHNl Ci0rCWNfcHJpbnRfdHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwg LTEsIDApOwotICAgICAgIHByaW50ZWRfYW55ID0gMTsKLSAgICAgfQotIAotQEAgLTU1OCw3ICs1 ODQsMTMgQEAgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKK0BAIC01ODUsNyArNTg1LDEzIEBAIGNfdHlwZV9wcmlu dF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sCiAgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKICAKICAgICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICJbIik7CkBAIC0xMzczLDIxMjUzICsxMjA3LDU0NTQgQEAgaW5k ZXggZWQ5ODM4MS4uMzA2MWFiNyAxMDA2NDQKICAJJiYgIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRf SVNfVU5ERUZJTkVEICh0eXBlKSkKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLAog IAkJCSAgKFRZUEVfTEVOR1RIICh0eXBlKQotQEAgLTU5MSw3ICs2MjMsNyBAQCBjX3R5cGVfcHJp bnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLAotICAgICAgIGlmIChwYXNzZWRfYV9wdHIpCi0gCWZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIikiKTsKLSAgICAgICBpZiAoIWRlbWFuZ2xlZF9hcmdzKQotLQljX3R5cGVfcHJpbnRfYXJn cyAodHlwZSwgc3RyZWFtKTsKLSsJY190eXBlX3ByaW50X2FyZ3MgKHR5cGUsIHN0cmVhbSwgMSwg bGFuZ3VhZ2VfYyk7Ci0gICAgICAgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLCBzaG93LAotIAkJCQkgICBwYXNzZWRfYV9wdHIsIDAp OwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZy ZWFkLmMKLWluZGV4IGJhNDEzYWQuLjQ0Njc2YTggMTAwNjQ0Ci0tLS0gYS9nZGIvY29mZnJlYWQu YwotKysrIGIvZ2RiL2NvZmZyZWFkLmMKLUBAIC0yMTIzLDYgKzIxMjMsNyBAQCBzdGF0aWMgc3Ry dWN0IHN5bV9mbnMgY29mZl9zeW1fZm5zID0KLSAgIGNvZmZfbmV3X2luaXQsCQkvKiBzeW1fbmV3 X2luaXQ6IGluaXQgYW55dGhpbmcgZ2JsIHRvIGVudGlyZSBzeW10YWIgKi8KLSAgIGNvZmZfc3lt ZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3lt X3JlYWQoKSAqLwotICAgY29mZl9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5 bWJvbCBmaWxlIGludG8gc3ltdGFiICovCi0rICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9s cyAqLwotICAgY29mZl9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdp dGggZmlsZSwgY2xlYW51cCAqLwotICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9v ZmZzZXRzOiAgeGxhdGUgZXh0ZXJuYWwgdG8gaW50ZXJuYWwgZm9ybSAqLwotICAgZGVmYXVsdF9z eW1maWxlX3NlZ21lbnRzLAkvKiBzeW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9u IGZyb20KLWRpZmYgLS1naXQgYS9nZGIvY29uZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgotaW5kZXgg ZWJkZTg3Ni4uOTA3YjI3NSAxMDA2NDQKLS0tLSBhL2dkYi9jb25maWcuaW4KLSsrKyBiL2dkYi9j b25maWcuaW4KLUBAIC00NiwxMSArNDYsMTAgQEAKLSAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQu ICovCi0gI3VuZGVmIEVOQUJMRV9OTFMKLSAKLS0vKiBsb29rIGZvciBnbG9iYWwgc2VwYXJhdGUg ZGF0YSBmaWxlcyBpbiB0aGlzIHBhdGggW0RBVEFESVIvZ2RiXSAqLwotKy8qIEdsb2JhbCBkaXJl Y3RvcnkgZm9yIEdEQiBkYXRhIGZpbGVzLiAqLwotICN1bmRlZiBHREJfREFUQURJUgotIAotLS8q IERlZmluZSBpZiB0aGUgZ2RiLWRhdGFkaXIgZGlyZWN0b3J5IHNob3VsZCBiZSByZWxvY2F0ZWQg d2hlbiBHREIgaXMgbW92ZWQuCi0tICAgKi8KLSsvKiBEZWZpbmUgaWYgR0RCIGRhdGFkaXIgc2hv dWxkIGJlIHJlbG9jYXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC4gKi8KLSAjdW5kZWYgR0RCX0RBVEFE SVJfUkVMT0NBVEFCTEUKLSAKLSAvKiBEZWZpbmUgdG8gYmUgYSBzdHJpbmcgbmFtaW5nIHRoZSBk ZWZhdWx0IGhvc3QgY2hhcmFjdGVyIHNldC4gKi8KLUBAIC02NTMsNiArNjUyLDkgQEAKLSAgICAn cHRyZGlmZl90Jy4gKi8KLSAjdW5kZWYgUFRSRElGRl9UX1NVRkZJWAotIAotKy8qIERlZmluZSB0 byBpbnN0YWxsIHBhdGggZm9yIFB5dGhvbiBzb3VyY2VzICovCi0rI3VuZGVmIFBZVEhPTkRJUgot KwotIC8qIFJlbG9jYXRlZCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gKi8KLSAjdW5kZWYg UkVMT0NfU1JDRElSCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1 cmUKLWluZGV4IDE5ODNkMDQuLjhkY2EzN2UgMTAwNzU1Ci0tLS0gYS9nZGIvY29uZmlndXJlCi0r KysgYi9nZGIvY29uZmlndXJlCi1AQCAtNjc2LDYgKzY3Niw4IEBAIFJFUE9SVF9CVUdTX1RPCi0g UEtHVkVSU0lPTgotIFRBUkdFVF9PQlMKLSBzdWJkaXJzCi0rcHl0aG9uZGlyCi0rR0RCX0RBVEFE SVJfUEFUSAotIEdEQl9EQVRBRElSCi0gREVCVUdESVIKLSBhbV9fZmFzdGRlcENDX0ZBTFNFCi1A QCAtODg1LDYgKzg4Nyw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCi0gd2l0aF9zZXBh cmF0ZV9kZWJ1Z19kaXIKLSB3aXRoX2dkYl9kYXRhZGlyCi0gd2l0aF9yZWxvY2F0ZWRfc291cmNl cwotK3dpdGhfcHl0aG9uZGlyCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0X2JmZAot IGVuYWJsZV9nZGJjbGkKLUBAIC0xNTg2LDYgKzE1ODksMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCi0gICAtLXdpdGgtcmVs b2NhdGVkLXNvdXJjZXM9UEFUSAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlj YWxseSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcwotKyAgLS13aXRoLWdkYi1k YXRhZGlyICAgICAgbG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRhdGEgZmlsZXMgaW4gdGhpcyBw YXRoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCi0rICAtLXdpdGgt cHl0aG9uZGlyICAgICAgICBpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiL3B5dGhvbl0KLSAgIC0td2l0 aC1saWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQK LSAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVh ZCBvZiB0aGUgdGVybWNhcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAg LTY4NjYsNiArNjg3Myw3MyBAQCBfQUNFT0YKLSBmaQotIAotIAotKyMgR0RCJ3MgZGF0YWRpciBy ZWxvY2F0aW9uCi0rCi0rZ2RiZGF0YWRpcj0ke2RhdGFkaXJ9L2dkYgotKwotKwotKyMgQ2hlY2sg d2hldGhlciAtLXdpdGgtZ2RiLWRhdGFkaXIgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9n ZGJfZGF0YWRpcitzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2dkYl9kYXRh ZGlyOyBnZGJkYXRhZGlyPSIke3dpdGh2YWx9IgotK2ZpCi0rCi0rCi0rCi0rICB0ZXN0ICJ4JHBy ZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSsgIHRlc3QgIngk ZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLSsgIGFjX2Rl ZmluZV9kaXI9YGV2YWwgZWNobyAkZ2RiZGF0YWRpcmAKLSsgIGFjX2RlZmluZV9kaXI9YGV2YWwg ZWNobyAkYWNfZGVmaW5lX2RpcmAKLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2Rl ZmluZSBHREJfREFUQURJUiAiJGFjX2RlZmluZV9kaXIiCi0rX0FDRU9GCi0rCi0rCi0rCi0raWYg dGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4 JHtwcmVmaXh9JzsgdGhlbgotKyAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KLSsg ICAgdGVzdF9wcmVmaXg9L3Vzci9sb2NhbAotKyAgZWxzZQotKyAgICB0ZXN0X3ByZWZpeD0kcHJl Zml4Ci0rICBmaQotK2Vsc2UKLSsgIHRlc3RfcHJlZml4PSRleGVjX3ByZWZpeAotK2ZpCi0rCi0r Y2FzZSAke2dkYmRhdGFkaXJ9IGluCi0rICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4 fS8iKnxcCi0rICAnJHtleGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8nKikKLSsKLSskYXNf ZWNobyAiI2RlZmluZSBHREJfREFUQURJUl9SRUxPQ0FUQUJMRSAxIiA+PmNvbmZkZWZzLmgKLSsK LSsgIDs7Ci0rZXNhYwotK0dEQl9EQVRBRElSX1BBVEg9JHtnZGJkYXRhZGlyfQotKwotKwotKwot KyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcHl0aG9uZGlyIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIk e3dpdGhfcHl0aG9uZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfcHl0 aG9uZGlyOyBweXRob25kaXI9IiR7d2l0aHZhbH0iCi0rZWxzZQotKyAgcHl0aG9uZGlyPW5vCi0r ZmkKLSsKLSsKLSsjIElmIHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBpdC4gIE90 aGVyd2lzZSwgY29tcHV0ZSBpdCBhdAotKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9zc2libHkt cmVsb2NhdGFibGUgZGF0YWRpci4KLStpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7IHRoZW4K LSsgIHB5dGhvbmRpcj0nJChHREJfREFUQURJUl9QQVRIKS9weXRob24nCi0rZWxzZQotKwotK2Nh dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIFBZVEhPTkRJUiAiJHB5dGhvbmRpciIK LStfQUNFT0YKLSsKLStmaQotKwotKworZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiaW50LnRleGlu Zm8gYi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCitpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0 NAorLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4 aW5mbworQEAgLTIxMDIsNiArMjEwMiwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBo YW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAorIHdlIGNyZWF0ZSBA ZGZue3BhcnRpYWwgc3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCisg c3ltYm9scywgYW5kIG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4g bmVjZXNzYXJ5LgorIAorK0BtZW51CisrKiBTeW1ib2wgUmVhZGluZzo6CisrKiBQYXJ0aWFsIFN5 bWJvbCBUYWJsZXM6OgorKyogVHlwZXM6OgorKyogT2JqZWN0IEZpbGUgRm9ybWF0czo6CisrKiBE ZWJ1Z2dpbmcgRmlsZSBGb3JtYXRzOjoKKysqIEFkZGluZyBhIE5ldyBTeW1ib2wgUmVhZGVyIHRv IEdEQjo6CisrKiBNZW1vcnkgTWFuYWdlbWVudCBmb3IgU3ltYm9sIEZpbGVzOjoKKysqIE1lbW9y eSBNYW5hZ2VtZW50IGZvciBUeXBlczo6CisrQGVuZCBtZW51CiArCisrQG5vZGUgU3ltYm9sIFJl YWRpbmcKKyBAc2VjdGlvbiBTeW1ib2wgUmVhZGluZwogIAorIEBjaW5kZXggc3ltYm9sIHJlYWRp bmcKK0BAIC0yMTk0LDYgKzIyMDYsNyBAQCBzeW10YWIuICBVcG9uIHJldHVybiwgQGNvZGV7cHN0 LT5yZWFkaW59IHNob3VsZCBoYXZlIGJlZW4gc2V0IHRvIDEsIGFuZAorIHplcm8gaWYgdGhlcmUg d2VyZSBubyBzeW1ib2xzIGluIHRoYXQgcGFydCBvZiB0aGUgc3ltYm9sIGZpbGUuCisgQGVuZCB0 YWJsZQogIAotIHN1YmRpcnM9IiRzdWJkaXJzIGRvYyB0ZXN0c3VpdGUiCi1AQCAtOTYwNCw2ICs5 Njc4LDggQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9QWVRIT04gMSIgPj5jb25mZGVmcy5oCi0g ICBDT05GSUdfT0JTPSIkQ09ORklHX09CUyBcJChTVUJESVJfUFlUSE9OX09CUykiCi0gICBDT05G SUdfREVQUz0iJENPTkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUykiCi0gICBDT05GSUdf U1JDUz0iJENPTkZJR19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0rICBDT05GSUdfSU5T VEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgotKyAgQ09ORklHX1VOSU5TVEFM TD0iJENPTkZJR19VTklOU1RBTEwgdW5pbnN0YWxsLXB5dGhvbiIKLSAgIEVOQUJMRV9DRkxBR1M9 IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKKytAbm9kZSBQYXJ0aWFs IFN5bWJvbCBUYWJsZXMKKyBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBUYWJsZXMKICAKLSAgICMg RmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0aG9uLWNv bmZpZyAtLWNmbGFncykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25m aWd1cmUuYWMKLWluZGV4IDZmODczYjUuLjc3OTg1YzggMTAwNjQ0Ci0tLS0gYS9nZGIvY29uZmln dXJlLmFjCi0rKysgYi9nZGIvY29uZmlndXJlLmFjCi1AQCAtMTA4LDYgKzEwOCw1MSBAQCBBU19I RUxQX1NUUklORyhbLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEhdLCBbYXV0b21hdGljYWxs eSByZWxvY2F0ZSB0aGlzIHBhdAotICAgICAgICAgICAgICAgW1JlbG9jYXRlZCBkaXJlY3Rvcnkg Zm9yIHNvdXJjZSBmaWxlcy4gXSkKLSBdKQorIEB2YWx1ZXtHREJOfSBoYXMgdGhyZWUgdHlwZXMg b2Ygc3ltYm9sIHRhYmxlczoKK0BAIC0yMjk1LDYgKzIzMDgsNyBAQCBhbmQgcGFydGlhbCBzeW1i b2wgdGFibGVzIGJlaGluZCBhIHNldCBvZiBmdW5jdGlvbiBwb2ludGVycyBrbm93biBhcworIHRo ZSBAZGZue3F1aWNrIHN5bWJvbCBmdW5jdGlvbnN9LiAgVGhlc2UgYXJlIGRvY3VtZW50ZWQgaW4K KyBAZmlsZXtzeW1maWxlLmh9LgogIAotKyMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCi0rCi0r Z2RiZGF0YWRpcj0ke2RhdGFkaXJ9L2dkYgotKwotK0FDX0FSR19XSVRIKFtnZGItZGF0YWRpcl0s Ci0rICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nZGItZGF0YWRpcl0sCi0rICAgICAgICAgICAg ICAgICAgW2xvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBb REFUQURJUi9nZGJdXSldLCBbZ2RiZGF0YWRpcj0iJHt3aXRodmFsfSJdKQotKwotK0FDX0RFRklO RV9ESVIoR0RCX0RBVEFESVIsIGdkYmRhdGFkaXIsCi0rICAgICAgICAgICAgICBbR2xvYmFsIGRp cmVjdG9yeSBmb3IgR0RCIGRhdGEgZmlsZXMuIF0pCi0rCi0raWYgdGVzdCAieCRleGVjX3ByZWZp eCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhlbgot KyAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KLSsgICAgdGVzdF9wcmVmaXg9L3Vz ci9sb2NhbAotKyAgZWxzZQotKyAgICB0ZXN0X3ByZWZpeD0kcHJlZml4Ci0rICBmaQotK2Vsc2UK LSsgIHRlc3RfcHJlZml4PSRleGVjX3ByZWZpeAotK2ZpCi0rCi0rY2FzZSAke2dkYmRhdGFkaXJ9 IGluCi0rICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCi0rICAnJHtleGVj X3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8nKikKLSsgICAgQUNfREVGSU5FKEdEQl9EQVRBRElS X1JFTE9DQVRBQkxFLCAxLCBbRGVmaW5lIGlmIEdEQiBkYXRhZGlyIHNob3VsZCBiZSByZWxvY2F0 ZWQgd2hlbiBHREIgaXMgbW92ZWQuXSkKLSsgIDs7Ci0rZXNhYwotK0dEQl9EQVRBRElSX1BBVEg9 JHtnZGJkYXRhZGlyfQotK0FDX1NVQlNUKEdEQl9EQVRBRElSX1BBVEgpCi0rCi0rQUNfQVJHX1dJ VEgoW3B5dGhvbmRpcl0sCi0rICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1weXRob25kaXJdLAot KyAgICAgICAgICAgICAgICAgIFtpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0 aCBbREFUQURJUi9nZGIvcHl0aG9uXV0pXSwgW3B5dGhvbmRpcj0iJHt3aXRodmFsfSJdLCBbcHl0 aG9uZGlyPW5vXSkKLSsKLSsjIElmIHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBp dC4gIE90aGVyd2lzZSwgY29tcHV0ZSBpdCBhdAotKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9z c2libHktcmVsb2NhdGFibGUgZGF0YWRpci4KLStpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7 IHRoZW4KLSsgIHB5dGhvbmRpcj0nJChHREJfREFUQURJUl9QQVRIKS9weXRob24nCi0rZWxzZQot KyAgQUNfREVGSU5FX1VOUVVPVEVEKFBZVEhPTkRJUiwgIiRweXRob25kaXIiLAotKyAgICAgIFtE ZWZpbmUgdG8gaW5zdGFsbCBwYXRoIGZvciBQeXRob24gc291cmNlc10pCi0rZmkKLStBQ19TVUJT VChweXRob25kaXIpCi0rCi0rCi0gQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKLSAK LSAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJh dGlvbnMKLUBAIC02NzQsNiArNzE5LDggQEAgaWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iID0g eWVzOyB0aGVuCi0gICBDT05GSUdfT0JTPSIkQ09ORklHX09CUyBcJChTVUJESVJfUFlUSE9OX09C UykiCi0gICBDT05GSUdfREVQUz0iJENPTkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUyki Ci0gICBDT05GSUdfU1JDUz0iJENPTkZJR19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0r ICBDT05GSUdfSU5TVEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgotKyAgQ09O RklHX1VOSU5TVEFMTD0iJENPTkZJR19VTklOU1RBTEwgdW5pbnN0YWxsLXB5dGhvbiIKLSAgIEVO QUJMRV9DRkxBR1M9IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKLSAK LSAgICMgRmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0 aG9uLWNvbmZpZyAtLWNmbGFncykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS50Z3QgYi9n ZGIvY29uZmlndXJlLnRndAotaW5kZXggNjJlNjY4My4uMmI5YmIyZiAxMDA2NDQKLS0tLSBhL2dk Yi9jb25maWd1cmUudGd0Ci0rKysgYi9nZGIvY29uZmlndXJlLnRndAotQEAgLTQwLDcgKzQwLDcg QEAgYWxwaGEqLSotb3NmKikKLSBhbHBoYSotKi1saW51eCopCi0gCSMgVGFyZ2V0OiBMaXR0bGUt ZW5kaWFuIEFscGhhIHJ1bm5pbmcgTGludXgKLSAJZ2RiX3RhcmdldF9vYnM9ImFscGhhLXRkZXAu byBhbHBoYS1tZGVidWctdGRlcC5vIGFscGhhLWxpbnV4LXRkZXAubyBcCi0tCQkJc29saWIubyBz b2xpYi1zdnI0Lm8iCi0rCQkJc29saWIubyBzb2xpYi1zdnI0Lm8gbGludXgtdGRlcC5vIgotIAk7 OwotIGFscGhhKi0qLWZyZWVic2QqIHwgYWxwaGEqLSota2ZyZWVic2QqLWdudSkKLSAJIyBUYXJn ZXQ6IEZyZWVCU0QvYWxwaGEKLUBAIC02Nyw3ICs2Nyw3IEBAIGFscGhhKi0qLSopCi0gYW0zM18y LjAqLSotbGludXgqKQotIAkjIFRhcmdldDogTWF0c3VzaGl0YSBtbjEwMzAwIChBTTMzKSBydW5u aW5nIExpbnV4Ci0gCWdkYl90YXJnZXRfb2JzPSJtbjEwMzAwLXRkZXAubyBtbjEwMzAwLWxpbnV4 LXRkZXAubyBjb3JlbG93Lm8gXAotLQkJCXNvbGliLm8gc29saWItc3ZyNC5vIgotKwkJCXNvbGli Lm8gc29saWItc3ZyNC5vIGxpbnV4LXRkZXAubyIKLSAJOzsKLSAKLSBhcm0qLXdpbmNlLXBlIHwg YXJtKi0qLW1pbmd3MzJjZSopCi1AQCAtMjMzLDcgKzIzMyw3IEBAIGlbMzQ1NjddODYtKi0qKQot IAotIGlhNjQtKi1saW51eCopCi0gCSMgVGFyZ2V0OiBJbnRlbCBJQS02NCBydW5uaW5nIEdOVS9M aW51eAotLQlnZGJfdGFyZ2V0X29icz0iaWE2NC10ZGVwLm8gaWE2NC1saW51eC10ZGVwLm8gXAot KwlnZGJfdGFyZ2V0X29icz0iaWE2NC10ZGVwLm8gaWE2NC1saW51eC10ZGVwLm8gbGludXgtdGRl cC5vIFwKLSAJCQlzb2xpYi5vIHNvbGliLXN2cjQubyBzeW1maWxlLW1lbS5vIgotIAlidWlsZF9n ZGJzZXJ2ZXI9eWVzCi0gCTs7Ci1AQCAtMjYzLDcgKzI2Myw4IEBAIG0zMmMtKi0qKQotIG0zMnIq LSotbGludXgqKQotIAkjIFRhcmdldDogUmVuZXNhcyBNMzJSIHJ1bm5pbmcgR05VL0xpbnV4Ci0g CWdkYl90YXJnZXRfb2JzPSJtMzJyLXRkZXAubyBtMzJyLWxpbnV4LXRkZXAubyByZW1vdGUtbTMy ci1zZGkubyBcCi0tCQkJZ2xpYmMtdGRlcC5vIHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUt bWVtLm8iCi0rCQkJZ2xpYmMtdGRlcC5vIHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVt Lm8gXAotKwkJCWxpbnV4LXRkZXAubyIKLSAJZ2RiX3NpbT0uLi9zaW0vbTMyci9saWJzaW0uYQot IAlidWlsZF9nZGJzZXJ2ZXI9eWVzCi0gCTs7Ci1AQCAtMzE3LDcgKzMxOCw3IEBAIG1pY3JvYmxh emUqLWxpbnV4LSopCi0gCSMgVGFyZ2V0OiBYaWxpbnggTWljcm9CbGF6ZSBydW5uaW5nIExpbnV4 Ci0gCWdkYl90YXJnZXRfb2JzPSJtaWNyb2JsYXplLXRkZXAubyBtaWNyb2JsYXplLWxpbnV4LXRk ZXAubyBtaWNyb2JsYXplLXJvbS5vIFwKLSAJCQltb25pdG9yLm8gZHNyZWMubyBzb2xpYi5vIHNv bGliLXN2cjQubyBjb3JlbG93Lm8gXAotLQkJCXN5bWZpbGUtbWVtLm8iCi0rCQkJc3ltZmlsZS1t ZW0ubyBsaW51eC10ZGVwLm8iCi0gCWdkYl9zaW09Li4vc2ltL21pY3JvYmxhemUvbGlic2ltLmEK LSAJOzsKLSBtaWNyb2JsYXplKi14aWxpbngtKikKLUBAIC0zMzcsNyArMzM4LDggQEAgbWlwcyot c2dpLWlyaXg2KikKLSBtaXBzKi0qLWxpbnV4KikKLSAJIyBUYXJnZXQ6IExpbnV4L01JUFMKLSAJ Z2RiX3RhcmdldF9vYnM9Im1pcHMtdGRlcC5vIG1pcHMtbGludXgtdGRlcC5vIGdsaWJjLXRkZXAu byBcCi0tCQkJY29yZWxvdy5vIHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVtLm8iCi0r CQkJY29yZWxvdy5vIHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVtLm8gXAotKwkJCWxp bnV4LXRkZXAubyIKLSAJZ2RiX3NpbT0uLi9zaW0vbWlwcy9saWJzaW0uYQotIAlidWlsZF9nZGJz ZXJ2ZXI9eWVzCi0gCTs7Ci1AQCAtNDI3LDcgKzQyOSw3IEBAIHNoKi0qLWxpbnV4KikKLSAJIyBU YXJnZXQ6IEdOVS9MaW51eCBTdXBlci1ICi0gCWdkYl90YXJnZXRfb2JzPSJzaC10ZGVwLm8gc2g2 NC10ZGVwLm8gc2gtbGludXgtdGRlcC5vIG1vbml0b3IubyBcCi0gCQkJZHNyZWMubyBzb2xpYi5v IHNvbGliLXN2cjQubyBzeW1maWxlLW1lbS5vIFwKLS0JCQlnbGliYy10ZGVwLm8gY29yZWxvdy5v IgotKwkJCWdsaWJjLXRkZXAubyBjb3JlbG93Lm8gbGludXgtdGRlcC5vIgotIAlnZGJfc2ltPS4u L3NpbS9zaC9saWJzaW0uYQotIAlidWlsZF9nZGJzZXJ2ZXI9eWVzCi0gCTs7Ci1AQCAtNDU1LDcg KzQ1Nyw4IEBAIHNoKikKLSBzcGFyYy0qLWxpbnV4KikKLSAJIyBUYXJnZXQ6IEdOVS9MaW51eCBT UEFSQwotIAlnZGJfdGFyZ2V0X29icz0ic3BhcmMtdGRlcC5vIHNwYXJjLXNvbDItdGRlcC5vIHNv bDItdGRlcC5vIFwKLS0JCQlzcGFyYy1saW51eC10ZGVwLm8gc29saWIubyBzb2xpYi1zdnI0Lm8g c3ltZmlsZS1tZW0ubyIKLSsJCQlzcGFyYy1saW51eC10ZGVwLm8gc29saWIubyBzb2xpYi1zdnI0 Lm8gc3ltZmlsZS1tZW0ubyBcCi0rCQkJbGludXgtdGRlcC5vIgotIAlpZiB0ZXN0ICJ4JGVuYWJs ZV82NF9iaXRfYmZkIiA9ICJ4eWVzIjsgdGhlbgotIAkgICAgIyBUYXJnZXQ6IEdOVS9MaW51eCBV bHRyYVNQQVJDCi0gCSAgICBnZGJfdGFyZ2V0X29icz0ic3BhcmM2NC10ZGVwLm8gc3BhcmM2NC1z b2wyLXRkZXAubyBcCi1AQCAtNDY2LDcgKzQ2OSw3IEBAIHNwYXJjNjQtKi1saW51eCopCi0gCSMg VGFyZ2V0OiBHTlUvTGludXggVWx0cmFTUEFSQwotIAlnZGJfdGFyZ2V0X29icz0ic3BhcmM2NC10 ZGVwLm8gc3BhcmM2NC1zb2wyLXRkZXAubyBzb2wyLXRkZXAubyBcCi0gCQkJc3BhcmM2NC1saW51 eC10ZGVwLm8gc3BhcmMtdGRlcC5vIHNwYXJjLXNvbDItdGRlcC5vIFwKLS0JCQlzcGFyYy1saW51 eC10ZGVwLm8gc29saWIubyBzb2xpYi1zdnI0Lm8iCi0rCQkJc3BhcmMtbGludXgtdGRlcC5vIHNv bGliLm8gc29saWItc3ZyNC5vIGxpbnV4LXRkZXAubyIKLSAJYnVpbGRfZ2Ric2VydmVyPXllcwot IAk7OwotIHNwYXJjKi0qLWZyZWVic2QqIHwgc3BhcmMqLSota2ZyZWVic2QqLWdudSkKLUBAIC02 MDEsNyArNjA0LDggQEAgeDg2XzY0LSotb3BlbmJzZCopCi0geHRlbnNhKi0qLWxpbnV4KikJZ2Ri X3RhcmdldD1saW51eAotIAkjIFRhcmdldDogR05VL0xpbnV4IFh0ZW5zYQotIAlnZGJfdGFyZ2V0 X29icz0ieHRlbnNhLXRkZXAubyB4dGVuc2EtY29uZmlnLm8geHRlbnNhLWxpbnV4LXRkZXAubyBc Ci0tCQkJc29saWIubyBzb2xpYi1zdnI0Lm8gY29yZWxvdy5vIHN5bWZpbGUtbWVtLm8iCi0rCQkJ c29saWIubyBzb2xpYi1zdnI0Lm8gY29yZWxvdy5vIHN5bWZpbGUtbWVtLm8gXAotKwkJCWxpbnV4 LXRkZXAubyIKLSAJYnVpbGRfZ2Ric2VydmVyPXllcwotIAk7OwotIHh0ZW5zYSopCi1kaWZmIC0t Z2l0IGEvZ2RiL2NwLW5hbWUtcGFyc2VyLnkgYi9nZGIvY3AtbmFtZS1wYXJzZXIueQotaW5kZXgg ODFmNmE1ZC4uMDk3ZGI2NSAxMDA2NDQKLS0tLSBhL2dkYi9jcC1uYW1lLXBhcnNlci55Ci0rKysg Yi9nZGIvY3AtbmFtZS1wYXJzZXIueQotQEAgLTM4OSw3ICszODksNyBAQCBmdW5jdGlvbgotIAkJ fAljb2xvbl9leHRfb25seSBmdW5jdGlvbl9hcmdsaXN0IHN0YXJ0X29wdAotIAkJCXsgJCQgPSBm aWxsX2NvbXAgKERFTUFOR0xFX0NPTVBPTkVOVF9UWVBFRF9OQU1FLCAkMSwgJDIuY29tcCk7Ci0g CQkJICBpZiAoJDMpICQkID0gZmlsbF9jb21wIChERU1BTkdMRV9DT01QT05FTlRfTE9DQUxfTkFN RSwgJCQsICQzKTsgfQotLQotKwkJfAljb2xvbl9leHRfb25seQotIAkJfAljb252ZXJzaW9uX29w X25hbWUgc3RhcnRfb3B0Ci0gCQkJeyAkJCA9ICQxLmNvbXA7Ci0gCQkJICBpZiAoJDIpICQkID0g ZmlsbF9jb21wIChERU1BTkdMRV9DT01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQyKTsgfQotZGlm ZiAtLWdpdCBhL2dkYi9jcC1uYW1lc3BhY2UuYyBiL2dkYi9jcC1uYW1lc3BhY2UuYwotaW5kZXgg NWU4OTRkNC4uNjMyNWVhZCAxMDA2NDQKLS0tLSBhL2dkYi9jcC1uYW1lc3BhY2UuYwotKysrIGIv Z2RiL2NwLW5hbWVzcGFjZS5jCi1AQCAtMzQsMTQgKzM0LDE3IEBACi0gI2luY2x1ZGUgImJ1aWxk c3ltLmgiCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUg KGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUs Ci0gCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJCQkJICAgICAgY29u c3QgZG9tYWluX2VudW0gZG9tYWluLAotIAkJCQkJICAgICAgY29uc3QgY2hhciAqc2NvcGUsCi0g CQkJCQkgICAgICBpbnQgc2NvcGVfbGVuKTsKLSAKLStzdGF0aWMgc3RydWN0IHN5bWJvbCAqY3Bf bG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWlu KTsKLSsKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBj aGFyICpuYW1lLAotLQkJCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkgIGNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFp biwKLSAJCQkJCSAgaW50IGFub255bW91c19uYW1lc3BhY2UpOwotQEAgLTExNyw3ICsxMjAsNyBA QCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAq c3ltYm9sKQotIAkJIGFub255bW91cyBuYW1lc3BhY2UuICBTbyBhZGQgc3ltYm9scyBpbiBpdCB0 byB0aGUKLSAJCSBuYW1lc3BhY2UgZ2l2ZW4gYnkgdGhlIHByZXZpb3VzIGNvbXBvbmVudCBpZiB0 aGVyZSBpcwotIAkJIG9uZSwgb3IgdG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UgaWYgdGhlcmUgaXNu J3QuICAqLwotLQkgICAgICBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChkZXN0LCBzcmMsIE5VTEwp OwotKwkgICAgICBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChkZXN0LCBzcmMsIE5VTEwsICIiLCAw KTsKLSAJICAgIH0KLSAJICAvKiBUaGUgIisgMiIgaXMgZm9yIHRoZSAiOjoiLiAgKi8KLSAJICBw cmV2aW91c19jb21wb25lbnQgPSBuZXh0X2NvbXBvbmVudCArIDI7Ci1AQCAtMTMyLDcgKzEzNSw4 IEBAIGNwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9s ICpzeW1ib2wpCi0gICAgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCwgZG9uJ3QgYWRkIGl0IHR3aWNl LiAgKi8KKytAbm9kZSBUeXBlcworIEBzZWN0aW9uIFR5cGVzCiAgCi0gdm9pZAotLWNwX2FkZF91 c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgY29uc3Qg Y2hhciAqYWxpYXMpCi0rY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwg Y29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyICphbGlhcywKLSsJCQljb25zdCBjaGFyICpkZWNs YXJhdGlvbiwgY29uc3QgaW50IGxpbmVfbnVtYmVyKQotIHsKLSAgIHN0cnVjdCB1c2luZ19kaXJl Y3QgKmN1cnJlbnQ7Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXc7Ci1AQCAtMTQ2LDcgKzE1 MCw4IEBAIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNo YXIgKnNyYywgY29uc3QgY2hhciAqYWxpYXMpCi0gCXJldHVybjsKLSAgICAgfQorIEB1bm51bWJl cmVkc3Vic2VjIEZ1bmRhbWVudGFsIFR5cGVzIChlLmcuLCBAY29kZXtGVF9WT0lEfSwgQGNvZGV7 RlRfQk9PTEVBTn0pLgorQEAgLTIzMTcsNiArMjMzMSw3IEBAIHR5cGVzIG1hcCB0byBvbmUgQGNv ZGV7VFlQRV9DT0RFXyp9IHR5cGUsIGFuZCBhcmUgZGlzdGluZ3Vpc2hlZCBieQorIG90aGVyIG1l bWJlcnMgb2YgdGhlIHR5cGUgc3RydWN0LCBzdWNoIGFzIHdoZXRoZXIgdGhlIHR5cGUgaXMgc2ln bmVkCisgb3IgdW5zaWduZWQsIGFuZCBob3cgbWFueSBiaXRzIGl0IHVzZXMuCiAgCi0tICB1c2lu Z19kaXJlY3RpdmVzID0gY3BfYWRkX3VzaW5nIChkZXN0LCBzcmMsIGFsaWFzLCB1c2luZ19kaXJl Y3RpdmVzKTsKLSsgIHVzaW5nX2RpcmVjdGl2ZXMgPSBjcF9hZGRfdXNpbmcgKGRlc3QsIHNyYywg YWxpYXMsIGRlY2xhcmF0aW9uLAotKwkJCQkgICBsaW5lX251bWJlciwgdXNpbmdfZGlyZWN0aXZl cyk7CisrQGFuY2hvcntCdWlsdGluIFR5cGVzfQorIEB1bm51bWJlcmVkc3Vic2VjIEJ1aWx0aW4g VHlwZXMgKGUuZy4sIEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwgQGNvZGV7YnVpbHRpbl90eXBl X2NoYXJ9KS4KICAKLSB9CisgVGhlc2UgYXJlIGluc3RhbmNlcyBvZiB0eXBlIHN0cnVjdHMgdGhh dCByb3VnaGx5IGNvcnJlc3BvbmQgdG8KK0BAIC0yMzMxLDYgKzIzNDYsNyBAQCBvbmx5IG9uZSBp bnN0YW5jZSBleGlzdHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQorIEBj b2Rle1RZUEVfQ09ERV9JTlR9IHR5cGVzIGFzIG5lZWRlZCwgd2l0aCBlYWNoIG9uZSBhc3NvY2lh dGVkIHdpdGgKKyBzb21lIHBhcnRpY3VsYXIgb2JqZmlsZS4KICAKLUBAIC0xOTgsOSArMjAzLDEx IEBAIGNwX2lzX2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKQotIAkgICE9IE5VTEwp OwotIH0KKytAbm9kZSBPYmplY3QgRmlsZSBGb3JtYXRzCisgQHNlY3Rpb24gT2JqZWN0IEZpbGUg Rm9ybWF0cworIEBjaW5kZXggb2JqZWN0IGZpbGUgZm9ybWF0cwogIAotLS8qIENyZWF0ZSBhIG5l dyBzdHJ1Y3QgdXNpbmcgZGlyZWN0IHdoaWNoIGltcG9ydHMgdGhlIG5hbWVzcGFjZSBTUkMgaW50 byB0aGUKLS0gICBzY29wZSBERVNULiAgQUxJQVMgaXMgdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVk IG5hbWVzcGFjZSBpbiB0aGUgY3VycmVudAotLSAgIHNjb3BlLiAgSWYgQUxJQVMgaXMgTlVMTCB0 aGVuIHRoZSBuYW1lc3BhY2UgaXMga25vd24gYnkgaXRzIG9yaWdpbmFsIG5hbWUuCi0rLyogQ3Jl YXRlIGEgbmV3IHN0cnVjdCB1c2luZyBkaXJlY3Qgd2hpY2ggaW1wb3J0cyB0aGUgbmFtZXNwYWNl IFNSQwotKyAgIGludG8gdGhlIHNjb3BlIERFU1QuICBBTElBUyBpcyB0aGUgbmFtZSBvZiB0aGUg aW1wb3J0ZWQgbmFtZXNwYWNlCi0rICAgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBBTElBUyBp cyBOVUxMIHRoZW4gdGhlCi0rICAgbmFtZXNwYWNlIGlzIGtub3duIGJ5IGl0cyBvcmlnaW5hbCBu YW1lLgotKwotICAgIFNldCBpdHMgbmV4dCBtZW1iZXIgaW4gdGhlIGxpbmtlZCBsaXN0IHRvIE5F WFQ7IGFsbG9jYXRlIGFsbCBtZW1vcnkKLSAgICB1c2luZyB4bWFsbG9jLiAgSXQgY29waWVzIHRo ZSBzdHJpbmdzLCBzbyBOQU1FIGNhbiBiZSBhIHRlbXBvcmFyeQotICAgIHN0cmluZy4gICovCi1A QCAtMjA5LDE5ICsyMTYsMjMgQEAgc3RydWN0IHVzaW5nX2RpcmVjdCAqCi0gY3BfYWRkX3VzaW5n IChjb25zdCBjaGFyICpkZXN0LAotICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjLAotICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqYWxpYXMsCi0rICAgICAgICAgICAgICBjb25zdCBjaGFy ICpkZWNsYXJhdGlvbiwKLSsgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlciwKLSAJ ICAgICAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV4dCkKLSB7Ci0gICBzdHJ1Y3QgdXNpbmdfZGly ZWN0ICpyZXR2YWw7CitAQCAtMjQxNiw2ICsyNDMyLDcgQEAgU09NLCB3aGljaCBpcyBhIGNyb3Nz LWxhbmd1YWdlIEFCSSkuCiAgCi0gICByZXR2YWwgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCB1 c2luZ19kaXJlY3QpKTsKLS0gIHJldHZhbC0+aW1wb3J0X3NyYyA9IHNhdmVzdHJpbmcgKHNyYywg c3RybGVuKHNyYykpOwotLSAgcmV0dmFsLT5pbXBvcnRfZGVzdCA9IHNhdmVzdHJpbmcgKGRlc3Qs IHN0cmxlbihkZXN0KSk7Ci0rICByZXR2YWwtPmltcG9ydF9zcmMgPSBzYXZlc3RyaW5nIChzcmMs IHN0cmxlbiAoc3JjKSk7Ci0rICByZXR2YWwtPmltcG9ydF9kZXN0ID0gc2F2ZXN0cmluZyAoZGVz dCwgc3RybGVuIChkZXN0KSk7CisgVGhlIFNPTSByZWFkZXIgaXMgaW4gQGZpbGV7c29tcmVhZC5j fS4KICAKLSAgIGlmIChhbGlhcyAhPSBOVUxMKQotICAgICByZXR2YWwtPmFsaWFzID0gc2F2ZXN0 cmluZyAoYWxpYXMsIHN0cmxlbiAoYWxpYXMpKTsKLSAgIGVsc2UKLSAgICAgcmV0dmFsLT5hbGlh cyA9IE5VTEw7CisrQG5vZGUgRGVidWdnaW5nIEZpbGUgRm9ybWF0cworIEBzZWN0aW9uIERlYnVn Z2luZyBGaWxlIEZvcm1hdHMKICAKLSsgIHJldHZhbC0+ZGVjbGFyYXRpb24gPSBzYXZlc3RyaW5n IChkZWNsYXJhdGlvbiwgc3RybGVuIChkZWNsYXJhdGlvbikpOwotKyAgcmV0dmFsLT5saW5lX251 bWJlciA9IGxpbmVfbnVtYmVyOwotICAgcmV0dmFsLT5uZXh0ID0gbmV4dDsKLSAgIHJldHZhbC0+ c2VhcmNoZWQgPSAwOworIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgY2hhcmFjdGVyaXN0aWNzIG9m IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiB0aGF0CitAQCAtMjQ4Nyw2ICsyNTA0LDcgQEAgRFdBUkYg MyBpcyBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIERXQVJGIDIuCisgQGNpbmRleCBTT00gZGVidWdn aW5nIGluZm8KKyBMaWtlIENPRkYsIHRoZSBTT00gZGVmaW5pdGlvbiBpbmNsdWRlcyBkZWJ1Z2dp bmcgaW5mb3JtYXRpb24uCiAgCi1AQCAtMjM4LDE5ICsyNDksMTAwIEBAIGNwX2FkZF91c2luZyAo Y29uc3QgY2hhciAqZGVzdCwKKytAbm9kZSBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBH REIKKyBAc2VjdGlvbiBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBAdmFsdWV7R0RCTn0K ICAKLSBzdHJ1Y3Qgc3ltYm9sICoKLSBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBj aGFyICpuYW1lLAotLQkJCSAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkgICBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikK LSB7Ci0tICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0rICBzdHJ1Y3Qgc3ltYm9sICpzeW07IAotICAg Y29uc3QgY2hhciAqc2NvcGUgPSBibG9ja19zY29wZSAoYmxvY2spOwotIAotLSAgc3ltID0gbG9v a3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluLCBz Y29wZSwgMCk7Ci0rICBzeW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBibG9jaywg ZG9tYWluLCBzY29wZSwgMCk7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07 Ci0gCi0tICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBs aW5rYWdlX25hbWUsIGJsb2NrLCBkb21haW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEpOwotKyAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlKHNjb3Bl LCBuYW1lLCBibG9jaywgZG9tYWluKTsKLSt9Ci0rCi0rLyogU2VhcmNoZXMgZm9yIE5BTUUgaW4g dGhlIGN1cnJlbnQgbmFtZXNwYWNlLCBhbmQgYnkgYXBwbHlpbmcgcmVsZXZhbnQgaW1wb3J0Ci0r ICAgc3RhdGVtZW50cyBiZWxvbmdpbmcgdG8gQkxPQ0sgYW5kIGl0cyBwYXJlbnRzLiAgU0NPUEUg aXMgdGhlIG5hbWVzcGFjZQotKyAgIHNjb3BlIG9mIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBz ZWFyY2ggaXMgYmVpbmcgZXZhbHVhdGVkLiAgKi8KLSsKLStzdHJ1Y3Qgc3ltYm9sKgotK2NwX2xv b2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpzY29wZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5 bTsKLSsKLSsgIC8qIEZpcnN0LCB0cnkgdG8gZmluZCB0aGUgc3ltYm9sIGluIHRoZSBnaXZlbiBu YW1lc3BhY2UuICAqLwotKyAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNj b3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIGlmICggc3ltICE9IE5VTEwpCi0rICAgIHJl dHVybiBzeW07Ci0rICAgIAotKyAgLyogU2VhcmNoIGZvciBuYW1lIGluIG5hbWVzcGFjZXMgaW1w b3J0ZWQgdG8gdGhpcyBhbmQgcGFyZW50IGJsb2Nrcy4gICovCi0rICB3aGlsZSAoYmxvY2sgIT0g TlVMTCkKLSsgICAgewotKyAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyhzY29w ZSxuYW1lLCBibG9jaywgZG9tYWluLDAsMSk7Ci0rCi0rICAgICAgaWYgKHN5bSkKLSsgICAgICAg IHJldHVybiBzeW07Ci0rCi0rICAgICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLKGJsb2NrKTsK LSsgICAgfQotKwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIExvb2t1cCBOQU1FIGF0IG5h bWVzcGFjZSBzY29wZSAob3IsIGluIEMgdGVybXMsIGluIHN0YXRpYyBhbmQKLSsgICBnbG9iYWwg dmFyaWFibGVzKS4gIFNDT1BFIGlzIHRoZSBuYW1lc3BhY2UgdGhhdCB0aGUgY3VycmVudAotKyAg IGZ1bmN0aW9uIGlzIGRlZmluZWQgd2l0aGluOyBvbmx5IGNvbnNpZGVyIG5hbWVzcGFjZXMgd2hv c2UgbGVuZ3RoCi0rICAgaXMgYXQgbGVhc3QgU0NPUEVfTEVOLiAgT3RoZXIgYXJndW1lbnRzIGFy ZSBhcyBpbgotKyAgIGNwX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwuCi0rCi0rICAgRm9yIGV4YW1w bGUsIGlmIHdlJ3JlIHdpdGhpbiBhIGZ1bmN0aW9uIEE6OkI6OmYgYW5kIGxvb2tpbmcgZm9yIGEK LSsgICBzeW1ib2wgeCwgdGhpcyB3aWxsIGdldCBjYWxsZWQgd2l0aCBOQU1FID0gIngiLCBTQ09Q RSA9ICJBOjpCIiwgYW5kCi0rICAgU0NPUEVfTEVOID0gMC4gIEl0IHRoZW4gY2FsbHMgaXRzZWxm IHdpdGggTkFNRSBhbmQgU0NPUEUgdGhlIHNhbWUsCi0rICAgYnV0IHdpdGggU0NPUEVfTEVOID0g MS4gIEFuZCB0aGVuIGl0IGNhbGxzIGl0c2VsZiB3aXRoIE5BTUUgYW5kCi0rICAgU0NPUEUgdGhl IHNhbWUsIGJ1dCB3aXRoIFNDT1BFX0xFTiA9IDQuICBUaGlzIHRoaXJkIGNhbGwgbG9va3MgZm9y Ci0rICAgIkE6OkI6OngiOyBpZiBpdCBkb2Vzbid0IGZpbmQgaXQsIHRoZW4gdGhlIHNlY29uZCBj YWxsIGxvb2tzIGZvcgotKyAgICJBOjp4IiwgYW5kIGlmIHRoYXQgY2FsbCBmYWlscywgdGhlbiB0 aGUgZmlyc3QgY2FsbCBsb29rcyBmb3IKLSsgICAieCIuICAqLwotKwotK3N0cnVjdCBzeW1ib2wg KgotK2xvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJY29uc3Qg c3RydWN0IGJsb2NrICpibG9jaywKLSsJCQljb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rCQkJ Y29uc3QgY2hhciAqc2NvcGUsCi0rCQkJaW50IHNjb3BlX2xlbikKLSt7Ci0rICBjaGFyICpuYW1l c3BhY2U7CisgQGNpbmRleCBhZGRpbmcgZGVidWdnaW5nIGluZm8gcmVhZGVyCitAQCAtMjUwOSw2 ICsyNTI3LDcgQEAgd2lsbCBvbmx5IGV2ZXIgYmUgaW1wbGVtZW50ZWQgYnkgb25lIG9iamVjdCBm aWxlIGZvcm1hdCBtYXkgYmUgY2FsbGVkCisgZGlyZWN0bHkuICBUaGlzIGludGVyZmFjZSBzaG91 bGQgYmUgZGVzY3JpYmVkIGluIGEgZmlsZQorIEBmaWxle2JmZC9saWJAdmFye3h5en0uaH0sIHdo aWNoIGlzIGluY2x1ZGVkIGJ5IEB2YWx1ZXtHREJOfS4KKyAKKytAbm9kZSBNZW1vcnkgTWFuYWdl bWVudCBmb3IgU3ltYm9sIEZpbGVzCisgQHNlY3Rpb24gTWVtb3J5IE1hbmFnZW1lbnQgZm9yIFN5 bWJvbCBGaWxlcworIAorIE1vc3QgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGxvYWRlZCBzeW1i b2wgZmlsZSBpcyBzdG9yZWQgb24KK0BAIC0yNTIwLDEwICsyNTM5LDQ1IEBAIHJlbGVhc2VkIHdo ZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQgb3IgcmVsb2FkZWQuICBUaGVyZWZvcmUgb25lCisg b2JqZmlsZSBtdXN0IG5vdCByZWZlcmVuY2Ugc3ltYm9sIG9yIHR5cGUgZGF0YSBmcm9tIGFub3Ro ZXIgb2JqZmlsZTsKKyB0aGV5IGNvdWxkIGJlIHVubG9hZGVkIGF0IGRpZmZlcmVudCB0aW1lcy4K KyAKKy1Vc2VyIGNvbnZlbmllbmNlIHZhcmlhYmxlcywgZXQgY2V0ZXJhLCBoYXZlIGFzc29jaWF0 ZWQgdHlwZXMuICBOb3JtYWxseQorLXRoZXNlIHR5cGVzIGxpdmUgaW4gdGhlIGFzc29jaWF0ZWQg b2JqZmlsZS4gIEhvd2V2ZXIsIHdoZW4gdGhlIG9iamZpbGUKKy1pcyB1bmxvYWRlZCwgdGhvc2Ug dHlwZXMgYXJlIGRlZXAgY29waWVkIHRvIGdsb2JhbCBtZW1vcnksIHNvIHRoYXQKKy10aGUgdmFs dWVzIG9mIHRoZSB1c2VyIHZhcmlhYmxlcyBhbmQgaGlzdG9yeSBpdGVtcyBhcmUgbm90IGxvc3Qu CisrQG5vZGUgTWVtb3J5IE1hbmFnZW1lbnQgZm9yIFR5cGVzCisrQHNlY3Rpb24gTWVtb3J5IE1h bmFnZW1lbnQgZm9yIFR5cGVzCisrQGNpbmRleCBtZW1vcnkgbWFuYWdlbWVudCBmb3IgdHlwZXMK ICsKLSsgIGlmIChzY29wZVtzY29wZV9sZW5dICE9ICdcMCcpCi0rICAgIHsKLSsgICAgICAvKiBS ZWN1cnNpdmVseSBzZWFyY2ggZm9yIG5hbWVzIGluIGNoaWxkIG5hbWVzcGFjZXMgZmlyc3QuICAq LworK0BmaW5kZXggVFlQRV9PQkpGSUxFCisrQGNvZGV7VFlQRV9PQkpGSUxFfSBtYWNybyBpbmRp Y2F0ZXMgdGhlIGN1cnJlbnQgbWVtb3J5IG93bmVyIG9mIHRoZSB0eXBlLgorK05vbi1AY29kZXtO VUxMfSB2YWx1ZSBpbmRpY2F0ZXMgaXQgaXMgb3duZWQgYnkgYW4gb2JqZmlsZSAoc3BlY2lmaWNh bGx5IGJ5IGl0cworK29ic3RhY2spIGFuZCBpbiBzdWNoIGNhc2UgdGhlIHR5cGUgcmVtYWlucyB2 YWxpZCB0aWxsIHRoZSBvYmpmaWxlIGlzIHVubG9hZGVkCisrb3IgcmVsb2FkZWQuICBGb3Igc3Vj aCB0eXBlcyB3aXRoIGFuIGFzc29jaWF0ZWQgb2JqZmlsZSBubyByZWZlcmVuY2UgY291bnRpbmcK KytpcyBiZWluZyBtYWRlLgogKwotKyAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsgICAgICBp bnQgbmV3X3Njb3BlX2xlbiA9IHNjb3BlX2xlbjsKKytVc2VyIGNvbnZlbmllbmNlIHZhcmlhYmxl cywgZXQgY2V0ZXJhLCBoYXZlIGFzc29jaWF0ZWQgdHlwZXMuICBOb3JtYWxseSB0aGVzZQorK3R5 cGVzIGxpdmUgaW4gdGhlIGFzc29jaWF0ZWQgb2JqZmlsZS4gIEhvd2V2ZXIsIHdoZW4gdGhlIG9i amZpbGUgaXMgdW5sb2FkZWQsCisrdGhvc2UgdHlwZXMgYXJlIGRlZXAgY29waWVkIHRvIGdsb2Jh bCBtZW1vcnksIHNvIHRoYXQgdGhlIHZhbHVlcyBvZiB0aGUgdXNlcgorK3ZhcmlhYmxlcyBhbmQg aGlzdG9yeSBpdGVtcyBhcmUgbm90IGxvc3QuICBEdXJpbmcgdGhlIGNvcHkgdGhleSB3aWxsIGdl dCB0aGVpcgorK0Bjb2Rle1RZUEVfT0JKRklMRX0gc2V0IHRvIEBjb2Rle05VTEx9IGFuZCBiZWNv bWUgc28tY2FsbGVkIEBkZm57cmVjbGFpbWFibGV9CisrdHlwZXMuCiArCi0rICAgICAgLyogSWYg dGhlIGN1cnJlbnQgc2NvcGUgaXMgZm9sbG93ZWQgYnkgIjo6Iiwgc2tpcCBwYXN0IHRoYXQuICAq LwotKyAgICAgIGlmIChuZXdfc2NvcGVfbGVuICE9IDApCi0rCXsKLSsJICBnZGJfYXNzZXJ0IChz Y29wZVtuZXdfc2NvcGVfbGVuXSA9PSAnOicpOwotKwkgIG5ld19zY29wZV9sZW4gKz0gMjsKLSsJ fQotKyAgICAgIG5ld19zY29wZV9sZW4gKz0gY3BfZmluZF9maXJzdF9jb21wb25lbnQgKHNjb3Bl ICsgbmV3X3Njb3BlX2xlbik7Ci0rICAgICAgc3ltID0gbG9va3VwX25hbWVzcGFjZV9zY29wZSAo bmFtZSwgYmxvY2ssIGRvbWFpbiwgc2NvcGUsIG5ld19zY29wZV9sZW4pOwotKyAgICAgIGlmIChz eW0gIT0gTlVMTCkKLSsJcmV0dXJuIHN5bTsKLSsgICAgfQorK1R5cGVzIHdpdGggbnVsbCBAY29k ZXtUWVBFX09CSkZJTEV9IGNhbiBiZSBlaXRoZXIgcGVybWFuZW50IHR5cGVzCisrKEBweHJlZntC dWlsdGluIFR5cGVzfSkgb3IgcmVjbGFpbWFibGUgdHlwZXMgd2hpY2ggd2lsbCBiZSBkZWFsbG9j YXRlZCBhdCB0aGUKKytmaXJzdCBpZGxlIEB2YWx1ZXtHREJOfSBtb21lbnQgaWYgdGhlIGxhc3Qg b2JqZWN0IHJlZmVyZW5jaW5nIHRoZW0gaXMgcmVtb3ZlZC4KKytQZXJtYW5lbnQgdHlwZXMgYXJl IGFsbG9jYXRlZCBieSB0aGUgZnVuY3Rpb24gQGNvZGV7YWxsb2NfdHlwZX0gKGFuZCBpdHMKKytk ZXJpdmF0aW9ucyBsaWtlIEBjb2Rle2luaXRfdHlwZX0pIHNwZWNpZnlpbmcgb2JqZmlsZSBhcyBA Y29kZXtOVUxMfS4gIFRoZQorK3JlY2xhaW1hYmxlIHR5cGVzIGFyZSBjcmVhdGVkIHRoZSBzYW1l IHdheSBidXQgbW9yZW92ZXIgdGhleSBuZWVkIHRvIGhhdmUKKytAY29kZXt0eXBlX2luaXRfZ3Jv dXB9IGNhbGxlZCB0byBzdGFydCB0aGVpciB0cmFja2luZyBhcyBiZWluZyBwb3NzaWJseQorK2Rl YWxsb2NhdGFibGUuCiArCi0rICAvKiBPa2F5LCB3ZSBkaWRuJ3QgZmluZCBhIG1hdGNoIGluIG91 ciBjaGlsZHJlbiwgc28gbG9vayBmb3IgdGhlCi0rICAgICBuYW1lIGluIHRoZSBjdXJyZW50IG5h bWVzcGFjZS4gICovCisrQGZpbmRleCBmcmVlX2FsbF90eXBlcworK1doZW4gQHZhbHVle0dEQk59 IGdldHMgaWRsZSBpdCBhbHdheXMgY2FsbHMgdGhlIEBjb2Rle2ZyZWVfYWxsX3R5cGVzfSBmdW5j dGlvbgorK3doaWNoIGRlYWxsb2NhdGVzIGFueSB1bnVzZWQgdHlwZXMuICBBbGwgdHlwZXMgY3Vy cmVudGx5IG5vdCBvd25lZCBieSBhbgorK29iamZpbGUgbXVzdCBiZSBtYXJrZWQgYXMgdXNlZCBv biBlYWNoIEBjb2Rle2ZyZWVfYWxsX3R5cGVzfSBjYWxsIGFzIHRoZXkgd291bGQKKytnZXQgZGVh bGxvY2F0ZWQgYXMgdW51c2VkIG90aGVyd2lzZS4KICsKLSsgIG5hbWVzcGFjZSA9IGFsbG9jYSAo c2NvcGVfbGVuICsgMSk7Ci0rICBzdHJuY3B5IChuYW1lc3BhY2UsIHNjb3BlLCBzY29wZV9sZW4p OwotKyAgbmFtZXNwYWNlW3Njb3BlX2xlbl0gPSAnXDAnOwotKyAgcmV0dXJuIGNwX2xvb2t1cF9z eW1ib2xfaW5fbmFtZXNwYWNlIChuYW1lc3BhY2UsIG5hbWUsYmxvY2ssIGRvbWFpbik7Ci0gfQor K0Bjb2Rle2ZyZWVfYWxsX3R5cGVzfSBhdXRvbWF0aWNhbGx5IGNoZWNrcyBmb3IgYW55IGNyb3Nz LXR5cGUgcmVmZXJlbmNlcyBzdWNoCisrYXMgdGhyb3VnaCBAY29kZXtUWVBFX1RBUkdFVF9UWVBF fSwgQGNvZGV7VFlQRV9QT0lOVEVSX1RZUEV9IGV0Yy5AOiBhbmQKKytwcmV2ZW50cyBlYXJseSBk ZWFsbG9jYXRpb24gZm9yIGFueSBzdWNoIGV4aXN0aW5nIHJlZmVyZW5jZXMuICBSZWNsYWltYWJs ZQorK3R5cGVzIG1heSByZWZlcmVuY2UgYW55IG90aGVyIHJlY2xhaW1hYmxlIHR5cGVzIG9yIGV2 ZW4gcGVybWFuZW50IHR5cGVzLiAgQnV0CisrcGVybWFuZW50IHR5cGVzIG11c3Qgbm90IHJlZmVy ZW5jZSByZWNsYWltYWJsZSB0eXBlcyAobm9yIGFuIG9iamZpbGUgYXNzb2NpYXRlZAorK3R5cGUp LgogIAotIC8qIExvb2sgdXAgTkFNRSBpbiB0aGUgQysrIG5hbWVzcGFjZSBOQU1FU1BBQ0UuIE90 aGVyIGFyZ3VtZW50cyBhcmUgYXMgaW4KLUBAIC0yNTgsMjUgKzM1MCwyNCBAQCBjcF9sb29rdXBf c3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAotIAotIHN0YXRpYyBzdHJ1Y3Qgc3lt Ym9sICoKLSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNw YWNlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxv Y2ssCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRv bWFpbikKLSsJCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaywKLSsJCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQot IHsKLSsKLSAgIGlmIChuYW1lc3BhY2VbMF0gPT0gJ1wwJykKLSAgICAgewotLSAgICAgIHJldHVy biBsb29rdXBfc3ltYm9sX2ZpbGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluLCAwKTsKLSsgICAgICByZXR1cm4gbG9v a3VwX3N5bWJvbF9maWxlIChuYW1lLCBibG9jayxkb21haW4sIDApOwotICAgICB9Ci0gICBlbHNl Ci0gICAgIHsKLS0gICAgICBjaGFyICpjb25jYXRlbmF0ZWRfbmFtZSA9IGFsbG9jYSAoc3RybGVu IChuYW1lc3BhY2UpICsgMiArCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cmxlbiAobmFtZSsgMSkpOwotKyAgICAgIGNoYXIgKmNvbmNhdGVuYXRlZF9uYW1lCi0r CT0gYWxsb2NhIChzdHJsZW4gKG5hbWVzcGFjZSkgKyAyICsgc3RybGVuIChuYW1lKSArIDEpOwot ICAgICAgIHN0cmNweSAoY29uY2F0ZW5hdGVkX25hbWUsIG5hbWVzcGFjZSk7Ci0gICAgICAgc3Ry Y2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgIjo6Iik7Ci0gICAgICAgc3RyY2F0IChjb25jYXRlbmF0 ZWRfbmFtZSwgbmFtZSk7Ci0tICAgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uY2F0 ZW5hdGVkX25hbWUsIGxpbmthZ2VfbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBibG9jaywgZG9tYWluLGNwX2lzX2Fub255bW91cyAobmFtZXNwYWNlKSk7Ci0rICAgICAg cmV0dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uY2F0ZW5hdGVkX25hbWUsIGJsb2NrLCBkb21h aW4sCi0rCQkJCWNwX2lzX2Fub255bW91cyAobmFtZXNwYWNlKSk7Ci0gICAgIH0KLSB9CiAgCi1A QCAtMjkxLDkgKzM4MiwxNyBAQCByZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQgKHZvaWQgKmRhdGEp Ci0gfQorIEBub2RlIExhbmd1YWdlIFN1cHBvcnQKK2RpZmYgLS1naXQgYS9nZGIvZG9jL29ic2Vy dmVyLnRleGkgYi9nZGIvZG9jL29ic2VydmVyLnRleGkKK2luZGV4IGUxOWI4ZWQuLjM0M2UxNjAg MTAwNjQ0CistLS0gYS9nZGIvZG9jL29ic2VydmVyLnRleGkKKysrKyBiL2dkYi9kb2Mvb2JzZXJ2 ZXIudGV4aQorQEAgLTIyMyw2ICsyMjMsMTEgQEAgQnl0ZXMgZnJvbSBAdmFye2RhdGF9IHRvIEB2 YXJ7ZGF0YX0gKyBAdmFye2xlbn0gaGF2ZSBiZWVuIHdyaXR0ZW4KKyB0byB0aGUgY3VycmVudCBp bmZlcmlvciBhdCBAdmFye2FkZHJ9LgorIEBlbmQgZGVmdHlwZWZ1bgogIAotIC8qIFNlYXJjaCBm b3IgTkFNRSBieSBhcHBseWluZyBhbGwgaW1wb3J0IHN0YXRlbWVudHMgYmVsb25naW5nCi0tICAg dG8gQkxPQ0sgd2hpY2ggYXJlIGFwcGxpY2FibGUgaW4gU0NPUEUuCi0rICAgdG8gQkxPQ0sgd2hp Y2ggYXJlIGFwcGxpY2FibGUgaW4gU0NPUEUuIElmIERFQ0xBUkFUSU9OX09OTFkgdGhlIHNlYXJj aAotKyAgIGlzIHJlc3RyaWN0ZWQgdG8gdXNpbmcgZGVjbGFyYXRpb25zLgotKyAgIEV4YW1wbGU6 Ci0rCi0rICAgICBuYW1lc3BhY2UgQXsKLSsgICAgICAgaW50IHg7Ci0rICAgICB9Ci0rICAgICB1 c2luZyBBOjp4OwotKwotICAgIElmIFNFQVJDSF9QQVJFTlRTIHRoZSBzZWFyY2ggd2lsbCBpbmNs dWRlIGltcG9ydHMgd2hpY2ggYXJlIGFwcGxpY2FibGUgaW4KLS0gICBwYXJlbnRzIG9mIFNDT1BF LgotKyAgIHBhcmVudHMgb2Ygc2NvcGVzLgotICAgIEV4YW1wbGU6Ci0gCi0gICAgICBuYW1lc3Bh Y2UgQXsKLUBAIC0zMDcsMjYgKzQwNiwzMyBAQCByZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQgKHZv aWQgKmRhdGEpCi0gICAgYW5kIFkgd2lsbCBiZSBjb25zaWRlcmVkLiBJZiBTRUFSQ0hfUEFSRU5U UyBpcyBmYWxzZSBvbmx5IHRoZSBpbXBvcnQgb2YgWQotICAgIGlzIGNvbnNpZGVyZWQuICAqLwot IAotLXN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLStzdHJ1Y3Qgc3ltYm9sICoKLSBjcF9sb29rdXBf c3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21h aW5fZW51bSBkb21haW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2Vh cmNoX3BhcmVudHMpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25f b25seSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWFyY2hfcGFyZW50cykKLSB7 Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjdXJyZW50OwotLSAgc3RydWN0IHN5bWJvbCAqc3lt OwotLSAgaW50IGxlbjsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7Ci0gICBpbnQgZGly ZWN0aXZlX21hdGNoOwotKyAgaW50IGN1cnJlbnRfbGluZTsKLSAgIHN0cnVjdCBjbGVhbnVwICpz ZWFyY2hlZF9jbGVhbnVwOwotIAotLSAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBzeW1ib2wg aW4gdGhlIGdpdmVuIG5hbWVzcGFjZS4gICovCi0tICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2lu X25hbWVzcGFjZSAoc2NvcGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKLS0gIGlmIChzeW0gIT0gTlVM TCkKLSsgIGlmKCFkZWNsYXJhdGlvbl9vbmx5KQotKyAgICAvKiBGaXJzdCwgdHJ5IHRvIGZpbmQg dGhlIHN5bWJvbCBpbiB0aGUgZ2l2ZW4gbmFtZXNwYWNlLiAgKi8KLSsgICAgc3ltID0gY3BfbG9v a3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKLSsK LSsgIGlmICggc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0rICBpZiAoaGFzX3N0 YWNrX2ZyYW1lcyAoKSkKLSsgICAgY3VycmVudF9saW5lID0gZmluZF9wY19saW5lIChnZXRfZnJh bWVfcGMgKGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCkpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwKS5saW5lOwotKyAgZWxzZQotKyAgICBjdXJyZW50 X2xpbmUgPSAwOwotKwotICAgLyogR28gdGhyb3VnaCB0aGUgdXNpbmcgZGlyZWN0aXZlcy4gIElm IGFueSBvZiB0aGVtIGFkZCBuZXcKLSAgICAgIG5hbWVzIHRvIHRoZSBuYW1lc3BhY2Ugd2UncmUg c2VhcmNoaW5nIGluLCBzZWUgaWYgd2UgY2FuIGZpbmQgYQotICAgICAgbWF0Y2ggYnkgYXBwbHlp bmcgdGhlbS4gICovCi1AQCAtMzM1LDcgKzQ0MSwxMCBAQCBjcF9sb29rdXBfc3ltYm9sX2ltcG9y dHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotICAgICAgICBjdXJyZW50ICE9IE5VTEw7Ci0gICAgICAg IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KQotICAgICB7Ci0tICAgICAgbGVuID0gc3RybGVuIChj dXJyZW50LT5pbXBvcnRfZGVzdCk7Ci0rICAKLSsgICAgICAvKiBJZiB0aGUgaW1wb3J0IGRlc3Rp bmF0aW9uIGlzIHRoZSBjdXJyZW50IHNjb3BlIG9yIG9uZSBvZiBpdHMgYW5jZXN0b3JzIHRoZW4K LSsgICAgICAgICBpdCBpcyBhcHBsaWNhYmxlLiAgKi8KLSsgICAgICBpbnQgbGVuID0gc3RybGVu IChjdXJyZW50LT5pbXBvcnRfZGVzdCk7Ci0gICAgICAgZGlyZWN0aXZlX21hdGNoID0gKHNlYXJj aF9wYXJlbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgID8gKHN0cm5jbXAgKHNjb3BlLCBj dXJyZW50LT5pbXBvcnRfZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RybGVuIChjdXJyZW50LT5pbXBvcnRfZGVzdCkpID09IDAKLUBAIC0zNDMsMTMwICs0NTIs NzAgQEAgY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzIChjb25zdCBjaGFyICpzY29wZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHNjb3BlW2xlbl0gPT0gJzonIHx8IHNjb3Bl W2xlbl0gPT0gJ1wwJykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RyY21wIChzY29w ZSwgY3VycmVudC0+aW1wb3J0X2Rlc3QpID09IDApOwotIAotLSAgICAgIC8qIElmIHRoZSBpbXBv cnQgZGVzdGluYXRpb24gaXMgdGhlIGN1cnJlbnQgc2NvcGUgb3Igb25lIG9mIGl0cyBhbmNlc3Rv cnMgdGhlbgotLSAgICAgICAgIGl0IGlzIGFwcGxpY2FibGUuICAqLwotLSAgICAgIGlmIChkaXJl Y3RpdmVfbWF0Y2ggJiYgIWN1cnJlbnQtPnNlYXJjaGVkKQotKyAgICAgIGlmIChkaXJlY3RpdmVf bWF0Y2ggJiYKLSsgICAgICAgICAgY3VycmVudC0+bGluZV9udW1iZXIgPCBjdXJyZW50X2xpbmUg JiYKLSsgICAgICAgICAgIWN1cnJlbnQtPnNlYXJjaGVkKQotIAl7Ci0tCS8qIE1hcmsgdGhpcyBp bXBvcnQgYXMgc2VhcmNoZWQgc28gdGhhdCB0aGUgcmVjdXJzaXZlIGNhbGwgZG9lcyBub3QKLS0g ICAgICAgICAgIHNlYXJjaCBpdCBhZ2Fpbi4gICovCi0tCWN1cnJlbnQtPnNlYXJjaGVkID0gMTsK LS0Jc2VhcmNoZWRfY2xlYW51cCA9IG1ha2VfY2xlYW51cCAocmVzZXRfZGlyZWN0aXZlX3NlYXJj aGVkLCBjdXJyZW50KTsKLS0KLS0JaWYgKGN1cnJlbnQtPmFsaWFzICE9IE5VTEwgJiYgc3RyY21w IChuYW1lLCBjdXJyZW50LT5hbGlhcykgPT0gMCkKLS0JICAvKiBJZiB0aGUgaW1wb3J0IGlzIGNy ZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxpYXMgbWF0Y2hlcyB0aGUKLS0JICAgICBzb3VnaHQg bmFtZS4gIFBhc3MgY3VycmVudC0+aW1wb3J0X3NyYyBhcyB0aGUgTkFNRSB0byBkaXJlY3QgdGhl Ci0tCSAgICAgc2VhcmNoIHRvd2FyZHMgdGhlIGFsaWFzZWQgbmFtZXNwYWNlLiAgKi8KLS0JICB7 Ci0rCSAgY3VycmVudC0+c2VhcmNoZWQgPSAxOwotKwkgIHNlYXJjaGVkX2NsZWFudXAgPSBtYWtl X2NsZWFudXAgKHJlc2V0X2RpcmVjdGl2ZV9zZWFyY2hlZCwgY3VycmVudCk7Ci0rCi0rCSAgLyog SWYgdGhlcmUgaXMgYW4gaW1wb3J0IG9mIGEgc2luZ2xlIGRlY2xhcmF0aW9uLCBjb21wYXJlIHRo ZSBpbXBvcnRlZAotKwkgICAgIGRlY2xhcmF0aW9uIHdpdGggdGhlIHNvdWdodCBvdXQgbmFtZS4g SWYgdGhlcmUgaXMgYSBtYXRjaCBwYXNzCi0rCSAgICAgY3VycmVudC0+aW1wb3J0X3NyYyBhcyBO QU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0aGUKLSsJICAgICBpbXBvcnRl ZCBuYW1lc3BhY2UuICAqLwotKwkgIGlmIChzdHJjbXAgKCIiLCBjdXJyZW50LT5kZWNsYXJhdGlv bikgIT0gMCkKLSsJICAgIHsKLSsJICAgIGlmIChzdHJjbXAgKG5hbWUsIGN1cnJlbnQtPmRlY2xh cmF0aW9uKSA9PSAwKQotKwkgICAgICB7Ci0rCSAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xf aW5fbmFtZXNwYWNlIChjdXJyZW50LT5pbXBvcnRfc3JjLAotKwkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSsJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG9tYWluKTsKLSsJICAgICAgfQorK0BkZWZ0eXBlZnVuIHZvaWQgbWFy a191c2VkICh2b2lkKQorK01hcmsgYW55IHBvc3NpYmx5IHJlY2xhaW1hYmxlIG9iamVjdHMgYXMg dXNlZCBkdXJpbmcgYSBtYXJrLWFuZC1zd2VlcCBnYXJiYWdlCisrY29sbGVjdG9yIHBhc3MuICBD dXJyZW50bHkgb25seSBAY29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4K KytAZW5kIGRlZnR5cGVmdW4KICsKLSsJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKLSsJICAg IGlmIChzeW0pCi0rCSAgICAgIHJldHVybiBzeW07CisgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25v dGlmaWNhdGlvbiAoaW50IEB2YXJ7c29tZWFyZ30pCisgVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZv ciBpbnRlcm5hbCB0ZXN0aW5nLiAgRG8gbm90IHVzZS4gIAorIFNlZSB0ZXN0c3VpdGUvZ2RiLmdk Yi9vYnNlcnZlci5leHAuCitkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBiL2dkYi9kd2Fy ZjJleHByLmMKK2luZGV4IGI5YWUxMDguLjI1NTU5MDggMTAwNjQ0CistLS0gYS9nZGIvZHdhcmYy ZXhwci5jCisrKysgYi9nZGIvZHdhcmYyZXhwci5jCitAQCAtODc1LDYgKzg3NSwxMyBAQCBleGVj dXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCisgCSAgY3R4LT5k d2FyZl9jYWxsIChjdHgsIHJlc3VsdCk7CisgCSAgZ290byBub19wdXNoOworIAorKwljYXNlIERX X09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6CisrCSAgaWYgKGN0eC0+Z2V0X29iamVjdF9hZGRyZXNz ID09IE5VTEwpCisrCSAgICBlcnJvciAoXygiRFdBUkYtMiBleHByZXNzaW9uIGVycm9yOiBEV19P UF9wdXNoX29iamVjdF9hZGRyZXNzIG11c3QgIgorKwkgICAgICAgICAgICJoYXZlIGEgdmFsdWUg dG8gcHVzaC4iKSk7CisrCSAgcmVzdWx0ID0gKGN0eC0+Z2V0X29iamVjdF9hZGRyZXNzKSAoY3R4 LT5iYXRvbik7CisrCSAgYnJlYWs7CiArCi0rCSAgICBjb250aW51ZTsKLSsJICAgIH0KLSsJICAg Ci0rCSAgaWYgKGRlY2xhcmF0aW9uX29ubHkpCi0rCSAgICB7Ci0rCSAgICBjdXJyZW50LT5zZWFy Y2hlZCA9IDA7Ci0rCSAgICBkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKLSsJ ICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwotKwkgIGlmIChjdXJyZW50LT5hbGlhcyAhPSBOVUxM ICYmIHN0cmNtcCAobmFtZSwgY3VycmVudC0+YWxpYXMpID09IDApCi0rCSAgICAvKiBJZiB0aGUg aW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxpYXMgbWF0Y2hlcyB0aGUKLSsJ ICAgICAgIHNvdWdodCBuYW1lLiBQYXNzIGN1cnJlbnQtPmlubmVyIGFzIHRoZSBOQU1FIHRvIGRp cmVjdCB0aGUKLSsJICAgICAgIHNlYXJjaCB0b3dhcmRzIHRoZSBhbGlhc2VkIG5hbWVzcGFjZSAq LwotKwkgICAgewotIAkgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNj b3BlLAotIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQt PmltcG9ydF9zcmMsCi0tCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlua2FnZV9uYW1lLAotIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJsb2NrLAotIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFp bik7Ci0tCSAgfQotLQllbHNlIGlmIChjdXJyZW50LT5hbGlhcyA9PSBOVUxMKQotLQkgIHsKLSsJ ICAgIH0gZWxzZSBpZiAoY3VycmVudC0+YWxpYXMgPT0gTlVMTCl7Ci0gCSAgICAvKiBJZiB0aGlz IGltcG9ydCBzdGF0ZW1lbnQgY3JlYXRlcyBubyBhbGlhcywgcGFzcyBjdXJyZW50LT5pbm5lciBh cwotLSAgICAgICAgICAgICAgIE5BTUVTUEFDRSB0byBkaXJlY3QgdGhlIHNlYXJjaCB0b3dhcmRz IHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UuICAqLwotLQkgICAgc3ltID0gY3BfbG9va3VwX3N5bWJv bF9pbXBvcnRzIChjdXJyZW50LT5pbXBvcnRfc3JjLAotLQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuYW1lLAotLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaW5rYWdlX25hbWUsCi0tCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJs b2NrLAotLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sCi0tCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotLQkgIH0KLS0JY3VycmVudC0+ c2VhcmNoZWQgPSAwOwotLQlkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKLS0K LS0JaWYgKHN5bSAhPSBOVUxMKQotLQkgIHJldHVybiBzeW07Ci0tCX0KLS0gICAgfQotLQotLSAg cmV0dXJuIE5VTEw7Ci0tfQotLQotLSAvKiBTZWFyY2hlcyBmb3IgTkFNRSBpbiB0aGUgY3VycmVu dCBuYW1lc3BhY2UsIGFuZCBieSBhcHBseWluZyByZWxldmFudCBpbXBvcnQKLS0gICAgc3RhdGVt ZW50cyBiZWxvbmdpbmcgdG8gQkxPQ0sgYW5kIGl0cyBwYXJlbnRzLiBTQ09QRSBpcyB0aGUgbmFt ZXNwYWNlIHNjb3BlCi0tICAgIG9mIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBzZWFyY2ggaXMg YmVpbmcgZXZhbHVhdGVkLiAgKi8KLS0KLS1zdHJ1Y3Qgc3ltYm9sKgotLWNwX2xvb2t1cF9zeW1i b2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpzY29wZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqbGlua2FnZV9uYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBkb21haW5fZW51bSBkb21haW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGludCBzZWFyY2hfcGFyZW50cykKLS17Ci0tICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0tCi0tICAv KiBTZWFyY2ggZm9yIG5hbWUgaW4gbmFtZXNwYWNlcyBpbXBvcnRlZCB0byB0aGlzIGFuZCBwYXJl bnQgYmxvY2tzLiAgKi8KLS0gIHdoaWxlIChibG9jayAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAg c3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzIChzY29wZSwgbmFtZSwgbGlua2FnZV9uYW1l LCBibG9jaywgZG9tYWluLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VhcmNoX3BhcmVudHMpOwotLQotLSAgICAgIGlmIChzeW0pCi0tCXJldHVybiBzeW07Ci0tCi0t ICAgICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jayk7Ci0tICAgIH0KLS0KLS0gIHJl dHVybiBOVUxMOwotLX0KLS0KLS0vKiBMb29rdXAgTkFNRSBhdCBuYW1lc3BhY2Ugc2NvcGUgKG9y LCBpbiBDIHRlcm1zLCBpbiBzdGF0aWMgYW5kCi0tICAgZ2xvYmFsIHZhcmlhYmxlcykuICBTQ09Q RSBpcyB0aGUgbmFtZXNwYWNlIHRoYXQgdGhlIGN1cnJlbnQKLS0gICBmdW5jdGlvbiBpcyBkZWZp bmVkIHdpdGhpbjsgb25seSBjb25zaWRlciBuYW1lc3BhY2VzIHdob3NlIGxlbmd0aAotLSAgIGlz IGF0IGxlYXN0IFNDT1BFX0xFTi4gIE90aGVyIGFyZ3VtZW50cyBhcmUgYXMgaW4KLS0gICBjcF9s b29rdXBfc3ltYm9sX25vbmxvY2FsLgotLQotLSAgIEZvciBleGFtcGxlLCBpZiB3ZSdyZSB3aXRo aW4gYSBmdW5jdGlvbiBBOjpCOjpmIGFuZCBsb29raW5nIGZvciBhCi0tICAgc3ltYm9sIHgsIHRo aXMgd2lsbCBnZXQgY2FsbGVkIHdpdGggTkFNRSA9ICJ4IiwgU0NPUEUgPSAiQTo6QiIsIGFuZAot LSAgIFNDT1BFX0xFTiA9IDAuICBJdCB0aGVuIGNhbGxzIGl0c2VsZiB3aXRoIE5BTUUgYW5kIFND T1BFIHRoZSBzYW1lLAotLSAgIGJ1dCB3aXRoIFNDT1BFX0xFTiA9IDEuICBBbmQgdGhlbiBpdCBj YWxscyBpdHNlbGYgd2l0aCBOQU1FIGFuZAotLSAgIFNDT1BFIHRoZSBzYW1lLCBidXQgd2l0aCBT Q09QRV9MRU4gPSA0LiAgVGhpcyB0aGlyZCBjYWxsIGxvb2tzIGZvcgotLSAgICJBOjpCOjp4Ijsg aWYgaXQgZG9lc24ndCBmaW5kIGl0LCB0aGVuIHRoZSBzZWNvbmQgY2FsbCBsb29rcyBmb3IKLS0g ICAiQTo6eCIsIGFuZCBpZiB0aGF0IGNhbGwgZmFpbHMsIHRoZW4gdGhlIGZpcnN0IGNhbGwgbG9v a3MgZm9yCi0tICAgIngiLiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0tbG9va3Vw X25hbWVzcGFjZV9zY29wZSAoY29uc3QgY2hhciAqbmFtZSwKLS0JCQljb25zdCBjaGFyICpsaW5r YWdlX25hbWUsCi0tCQkJY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLS0JCQljb25zdCBkb21h aW5fZW51bSBkb21haW4sCi0tCQkJY29uc3QgY2hhciAqc2NvcGUsCi0tCQkJaW50IHNjb3BlX2xl bikKLS17Ci0tICBjaGFyICpuYW1lc3BhY2U7Ci0tCi0tICBpZiAoc2NvcGVbc2NvcGVfbGVuXSAh PSAnXDAnKQotLSAgICB7Ci0tICAgICAgLyogUmVjdXJzaXZlbHkgc2VhcmNoIGZvciBuYW1lcyBp biBjaGlsZCBuYW1lc3BhY2VzIGZpcnN0LiAgKi8KLSsJICAgICAgIE5BTUVTUEFDRSB0byBkaXJl Y3QgdGhlIHNlYXJjaCB0b3dhcmRzIHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UuICovCi0rCSAgICAg IHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAoY3VycmVudC0+aW1wb3J0X3NyYywKLSsJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotKwkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvbWFpbiwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp OwotKwkgICAgfQotIAotLSAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLS0gICAgICBpbnQgbmV3 X3Njb3BlX2xlbiA9IHNjb3BlX2xlbjsKLSsJICBjdXJyZW50LT5zZWFyY2hlZCA9IDA7Ci0rCSAg ZGlzY2FyZF9jbGVhbnVwcyAoc2VhcmNoZWRfY2xlYW51cCk7Ci0gCi0tICAgICAgLyogSWYgdGhl IGN1cnJlbnQgc2NvcGUgaXMgZm9sbG93ZWQgYnkgIjo6Iiwgc2tpcCBwYXN0IHRoYXQuICAqLwot LSAgICAgIGlmIChuZXdfc2NvcGVfbGVuICE9IDApCi0tCXsKLS0JICBnZGJfYXNzZXJ0IChzY29w ZVtuZXdfc2NvcGVfbGVuXSA9PSAnOicpOwotLQkgIG5ld19zY29wZV9sZW4gKz0gMjsKLSsJICBp ZiAoc3ltICE9IE5VTEwpCi0rCSAgICByZXR1cm4gc3ltOworIAlkZWZhdWx0OgorIAkgIGVycm9y IChfKCJVbmhhbmRsZWQgZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7CiAgCX0K LS0gICAgICBuZXdfc2NvcGVfbGVuICs9IGNwX2ZpbmRfZmlyc3RfY29tcG9uZW50IChzY29wZSAr IG5ld19zY29wZV9sZW4pOwotLSAgICAgIHN5bSA9IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKG5h bWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCi0tCQkJCSAgICBkb21haW4sIHNjb3BlLCBuZXdfc2Nv cGVfbGVuKTsKLS0gICAgICBpZiAoc3ltICE9IE5VTEwpCi0tCXJldHVybiBzeW07Ci0gICAgIH0K LSAKLS0gIC8qIE9rYXksIHdlIGRpZG4ndCBmaW5kIGEgbWF0Y2ggaW4gb3VyIGNoaWxkcmVuLCBz byBsb29rIGZvciB0aGUKLS0gICAgIG5hbWUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLiAgKi8K LS0KLS0gIG5hbWVzcGFjZSA9IGFsbG9jYSAoc2NvcGVfbGVuICsgMSk7Ci0tICBzdHJuY3B5IChu YW1lc3BhY2UsIHNjb3BlLCBzY29wZV9sZW4pOwotLSAgbmFtZXNwYWNlW3Njb3BlX2xlbl0gPSAn XDAnOwotLSAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChuYW1lc3BhY2Us IG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYmxvY2ssIGRvbWFpbik7Ci0rICByZXR1cm4gTlVMTDsKLSB9CitkaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKK2luZGV4IDYxYjhmMDAuLmQ5NGMw M2MgMTAwNjQ0CistLS0gYS9nZGIvZHdhcmYyZXhwci5oCisrKysgYi9nZGIvZHdhcmYyZXhwci5o CitAQCAtMTA4LDkgKzEwOCwxNSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0CisgI2lmIDAK KyAgIC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQuICAqLworIAorKyAgLyogUmV0dXJuIHRoZSBsb2Nh dGlvbiBleHByZXNzaW9uIGZvciB0aGUgZHdhcmYgZXhwcmVzc2lvbgorKyAgICAgc3Vicm91dGlu ZSBpbiB0aGUgZGllIGF0IE9GRlNFVCBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0Lgor KyAgICAgVGhlIHJlc3VsdCBtdXN0IGJlIGxpdmUgdW50aWwgdGhlIGN1cnJlbnQgZXhwcmVzc2lv biBldmFsdWF0aW9uCisrICAgICBpcyBjb21wbGV0ZS4gICovCisrICB1bnNpZ25lZCBjaGFyICoo KmdldF9zdWJyKSAodm9pZCAqYmF0b24sIG9mZl90IG9mZnNldCwgc2l6ZV90ICpsZW5ndGgpOwor KyNlbmRpZgorKworICAgLyogUmV0dXJuIHRoZSBgb2JqZWN0IGFkZHJlc3MnIGZvciBEV19PUF9w dXNoX29iamVjdF9hZGRyZXNzLiAgKi8KKyAgIENPUkVfQUREUiAoKmdldF9vYmplY3RfYWRkcmVz cykgKHZvaWQgKmJhdG9uKTsKKy0jZW5kaWYKICAKLSAvKiBMb29rIHVwIE5BTUUgaW4gQkxPQ0sn cyBzdGF0aWMgYmxvY2sgYW5kIGluIGdsb2JhbCBibG9ja3MuICBJZgotQEAgLTQ3NiwxNyArNTI1 LDE1IEBAIGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCisgICAvKiBU aGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vyc2lvbiwgdmlhIERXX09Q X2NhbGwqLAorICAgICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MsIGV0 Yy4sIGFuZCB0aGUgbWF4aW11bQorZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9k d2FyZjJsb2MuYworaW5kZXggMmE4ZTU1Ny4uYmU3NDQxMiAxMDA2NDQKKy0tLSBhL2dkYi9kd2Fy ZjJsb2MuYworKysrIGIvZ2RiL2R3YXJmMmxvYy5jCitAQCAtNDgsNiArNDgsMTIgQEAgc3RhdGlj IHZvaWQKKyBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5j LCBDT1JFX0FERFIgcGMsCisgCQkJIGNvbnN0IGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAqbGVu Z3RoKTsKICAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0gbG9va3VwX3N5bWJvbF9maWxlIChj b25zdCBjaGFyICpuYW1lLAotLQkJICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCSAg ICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRv bWFpbiwKLSAJCSAgICBpbnQgYW5vbnltb3VzX25hbWVzcGFjZSkKKytzdGF0aWMgc3RydWN0IHZh bHVlICpkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCB0eXBlICp0eXBlLAorKwkJCQkJ ICAgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkJCSAgICAgICBjb25zdCBnZGJf Ynl0ZSAqZGF0YSwKKysJCQkJCSAgICAgICB1bnNpZ25lZCBzaG9ydCBzaXplLAorKwkJCQkJICAg ICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpOworKworIC8qIEEgaGVscGVyIGZ1 bmN0aW9uIGZvciBkZWFsaW5nIHdpdGggbG9jYXRpb24gbGlzdHMuICBHaXZlbiBhCisgICAgc3lt Ym9sIGJhdG9uIChCQVRPTikgYW5kIGEgcGMgdmFsdWUgKFBDKSwgZmluZCB0aGUgYXBwcm9wcmlh dGUKKyAgICBsb2NhdGlvbiBleHByZXNzaW9uLCBzZXQgKkxPQ0VYUFJfTEVOR1RILCBhbmQgcmV0 dXJuIGEgcG9pbnRlcgorQEAgLTEyNyw2ICsxMzMsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRv bgogIHsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7CisgICBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWU7CisgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3U7CisrICAvKiBG cm9tIERXX1RBR192YXJpYWJsZSdzIERXX0FUX2xvY2F0aW9uIChub3QgRFdfVEFHX3R5cGUncwor KyAgICAgRFdfQVRfZGF0YV9sb2NhdGlvbikgZm9yIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3Mu ICAqLworKyAgQ09SRV9BRERSIG9iamVjdF9hZGRyZXNzOworIH07CiAgCi0tICBzeW0gPSBsb29r dXBfc3ltYm9sX3N0YXRpYyAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsg IHN5bSA9IGxvb2t1cF9zeW1ib2xfc3RhdGljIChuYW1lLCBibG9jaywgZG9tYWluKTsKLSAgIGlm IChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLS0KLSAgIGlmIChhbm9ueW1vdXNfbmFt ZXNwYWNlKQotICAgICB7Ci0gICAgICAgLyogU3ltYm9scyBkZWZpbmVkIGluIGFub255bW91cyBu YW1lc3BhY2VzIGhhdmUgZXh0ZXJuYWwgbGlua2FnZQotQEAgLTQ5NiwxMiArNTQzLDExIEBAIGxv b2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICBjb25zdCBzdHJ1Y3Qg YmxvY2sgKmdsb2JhbF9ibG9jayA9IGJsb2NrX2dsb2JhbF9ibG9jayAoYmxvY2spOwotICAgICAg IAotICAgICAgIGlmIChnbG9iYWxfYmxvY2sgIT0gTlVMTCkKLS0Jc3ltID0gbG9va3VwX3N5bWJv bF9hdXhfYmxvY2sgKG5hbWUsIGxpbmthZ2VfbmFtZSwgZ2xvYmFsX2Jsb2NrLAotLQkJCQkgICAg ICAgZG9tYWluKTsKLSsJc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGdsb2Jh bF9ibG9jaywgZG9tYWluKTsKKyAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVh dGVfbG9jX2Rlc2MuICAqLworQEAgLTE5NSwyMyArMjA0LDMzIEBAIGR3YXJmX2V4cHJfZnJhbWVf YmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKKyAgICAgICBz eW1iYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKKyAgICAgICAqc3Rh cnQgPSBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKHN5bWJhdG9uLCBsZW5ndGgsIHBjKTsKICAg ICAgfQotICAgZWxzZQorLSAgZWxzZQorKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAo ZnJhbWVmdW5jKSA9PSAmZHdhcmYyX2xvY2V4cHJfZnVuY3MpCiAgICAgIHsKLS0gICAgICBzeW0g PSBsb29rdXBfc3ltYm9sX2dsb2JhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWlu KTsKLSsgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2dsb2JhbCAobmFtZSwgYmxvY2ssIGRvbWFp bik7Ci0gICAgIH0KKyAgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKnN5bWJhdG9u OwogIAotICAgaWYgKHN5bSAhPSBOVUxMKQotQEAgLTUyMiw2ICs1NjgsNyBAQCBsb29rdXBfc3lt Ym9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgc3ltID0gbG9va3VwX3Bvc3NpYmxl X25hbWVzcGFjZV9zeW1ib2wgKG5hbWUpOwotICAgICAgIGlmIChzeW0gIT0gTlVMTCkKLSAJcmV0 dXJuIHN5bTsKLSsKKyAgICAgICBzeW1iYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJh bWVmdW5jKTsKKy0gICAgICBpZiAoc3ltYmF0b24gIT0gTlVMTCkKKy0JeworLQkgICpsZW5ndGgg PSBzeW1iYXRvbi0+c2l6ZTsKKy0JICAqc3RhcnQgPSBzeW1iYXRvbi0+ZGF0YTsKKy0JfQorLSAg ICAgIGVsc2UKKy0JKnN0YXJ0ID0gTlVMTDsKKysgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiAh PSBOVUxMKTsKKysgICAgICAqc3RhcnQgPSBzeW1iYXRvbi0+ZGF0YTsKKysgICAgICAqbGVuZ3Ro ID0gc3ltYmF0b24tPnNpemU7CiAgICAgIH0KKysgIGVsc2UgaWYgKFNZTUJPTF9DT01QVVRFRF9P UFMgKGZyYW1lZnVuYykgPT0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzKQorKyAgICB7CisrICAgICAg c3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpzeW1iYXRvbjsKKysKKysgICAgICBzeW1iYXRv biA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKKysgICAgICBnZGJfYXNzZXJ0 IChzeW1iYXRvbiA9PSBOVUxMKTsKKysgICAgICAqc3RhcnQgPSBOVUxMOworKyAgICAgICpsZW5n dGggPSAwOwkvKiB1bnVzZWQgKi8KKysgICAgfQorKyAgZWxzZQorKyAgICBpbnRlcm5hbF9lcnJv ciAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgIF8oIlVuc3VwcG9ydGVkIFNZTUJPTF9DT01Q VVRFRF9PUFMgJXAgZm9yIFwiJXNcIiIpLAorKwkJICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKGZy YW1lZnVuYyksCisrCQkgICAgU1lNQk9MX1BSSU5UX05BTUUgKGZyYW1lZnVuYykpOwogIAotICAg cmV0dXJuIE5VTEw7Ci1AQCAtNTUwLDEwICs1OTcsOSBAQCBjcF9sb29rdXBfbmVzdGVkX3R5cGUg KHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSwKLSAKLSAJY29uc3QgY2hhciAqcGFyZW50X25hbWUg PSBUWVBFX1RBR19OQU1FIChwYXJlbnRfdHlwZSk7Ci0gCXN0cnVjdCBzeW1ib2wgKnN5bSA9IGNw X2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChwYXJlbnRfbmFtZSwKLS0JICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZF9uYW1lLAotLQkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwK LS0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJs b2NrLAotLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVkFSX0RPTUFJTik7Ci0rCQkJCQkJCSBuZXN0ZWRfbmFtZSwKLSsJCQkJCQkJIGJsb2NrLAot KwkJCQkJCQkgVkFSX0RPTUFJTik7Ci0gCWlmIChzeW0gPT0gTlVMTCB8fCBTWU1CT0xfQ0xBU1Mg KHN5bSkgIT0gTE9DX1RZUEVERUYpCi0gCSAgcmV0dXJuIE5VTEw7Ci0gCWVsc2UKLUBAIC03OTcs NyArODQzLDcgQEAgY2hlY2tfb25lX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNo YXIgKm5hbWUsIGludCBsZW4sCi0gCi0gICBtZW1jcHkgKG5hbWVfY29weSwgbmFtZSwgbGVuKTsK LSAgIG5hbWVfY29weVtsZW5dID0gJ1wwJzsKLS0gIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wg KGJsb2NrLCBuYW1lX2NvcHksIE5VTEwsIFZBUl9ET01BSU4pOwotKyAgc3ltID0gbG9va3VwX2Js b2NrX3N5bWJvbCAoYmxvY2ssIG5hbWVfY29weSwgVkFSX0RPTUFJTik7Ci0gCi0gICBpZiAoc3lt ID09IE5VTEwpCi0gICAgIHsKLUBAIC04MzgsNyArODg0LDcgQEAgbG9va3VwX3Bvc3NpYmxlX25h bWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgICAgc3RydWN0IHN5bWJvbCAq c3ltOwotIAotICAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGdldF9wb3NzaWJsZV9u YW1lc3BhY2VfYmxvY2sgKG9iamZpbGUpLAotLQkJCQkgbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7 Ci0rCQkJCSBuYW1lLCBWQVJfRE9NQUlOKTsKLSAKLSAgICAgICBpZiAoc3ltICE9IE5VTEwpCi0g CXJldHVybiBzeW07Ci1kaWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuYyBiL2dkYi9jcC1zdXBw b3J0LmMKLWluZGV4IGMzMWZjZmYuLjhjNWQ1NmYgMTAwNjQ0Ci0tLS0gYS9nZGIvY3Atc3VwcG9y dC5jCi0rKysgYi9nZGIvY3Atc3VwcG9ydC5jCi1AQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgdm9p ZCBkZW1hbmdsZWRfbmFtZV9jb21wbGFpbnQgKGNvbnN0IGNoYXIgKm5hbWUpOwotIAotIC8qIEZ1 bmN0aW9ucy92YXJpYWJsZXMgcmVsYXRlZCB0byBvdmVybG9hZCByZXNvbHV0aW9uLiAgKi8KLSAK LS1zdGF0aWMgaW50IHN5bV9yZXR1cm5fdmFsX3NpemU7Ci0rc3RhdGljIGludCBzeW1fcmV0dXJu X3ZhbF9zaXplID0gLTE7Ci0gc3RhdGljIGludCBzeW1fcmV0dXJuX3ZhbF9pbmRleDsKLSBzdGF0 aWMgc3RydWN0IHN5bWJvbCAqKnN5bV9yZXR1cm5fdmFsOwotIAotQEAgLTE5MCw3ICsxOTAsOCBA QCBtYW5nbGVkX25hbWVfdG9fY29tcCAoY29uc3QgY2hhciAqbWFuZ2xlZF9uYW1lLCBpbnQgb3B0 aW9ucywKLSAgIHJldHVybiByZXQ7CisgICBpZiAoKnN0YXJ0ID09IE5VTEwpCisgICAgIGVycm9y IChfKCJDb3VsZCBub3QgZmluZCB0aGUgZnJhbWUgYmFzZSBmb3IgXCIlc1wiLiIpLAorLQkgICBT WU1CT0xfTkFUVVJBTF9OQU1FIChmcmFtZWZ1bmMpKTsKKysJICAgU1lNQk9MX1BSSU5UX05BTUUg KGZyYW1lZnVuYykpOwogIH0KICAKLS0vKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGNv bnRhaW5pbmcgbWV0aG9kIFBIWVNOQU1FLiAgKi8KLSsvKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhl IGNsYXNzIG9yIG5hbWVzcGFjZSBjb250YWluaW5nCi0rICAgZnVuY3Rpb24sIG1ldGhvZCwgb3Ig dmFyaWFibGUgUEhZU05BTUUuICAqLwotIAotIGNoYXIgKgotIGNwX2NsYXNzX25hbWVfZnJvbV9w aHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25hbWUpCi1AQCAtNzExLDYgKzcxMiw4MiBAQCBtYWtl X3N5bWJvbF9vdmVybG9hZF9saXN0IChjb25zdCBjaGFyICpmdW5jX25hbWUsCi0gCi0gICByZXR1 cm4gc3ltX3JldHVybl92YWw7CisgLyogSGVscGVyIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVh dGVfbG9jX2Rlc2MuICBDb21wdXRlcyB0aGUgQ0ZBIGZvcgorQEAgLTI2Myw2ICsyODIsMTU4IEBA IGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBz aXplX3QgZGllX29mZnNldCkKKyAgIHJldHVybiBwZXJfY3VfZHdhcmZfY2FsbCAoY3R4LCBkaWVf b2Zmc2V0LCBkZWJhdG9uLT5wZXJfY3UpOwogIH0KLSsvKiBBZGRzIHRoZSBmdW5jdGlvbiBGVU5D X05BTUUgZnJvbSBOQU1FU1BBQ0UgdG8gdGhlIG92ZXJsb2FkIHNldC4gICovCisgCisrc3RhdGlj IENPUkVfQUREUgorK2R3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3MgKHZvaWQgKmJhdG9uKQorK3sK KysgIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uICpkZWJhdG9uID0gYmF0b247CisrCisrICAvKiBU aGUgbWVzc2FnZSBpcyBzdXBwcmVzc2VkIGluIERXQVJGX0JMT0NLX0VYRUMuICAqLworKyAgaWYg KGRlYmF0b24tPm9iamVjdF9hZGRyZXNzID09IDApCisrICAgIGVycm9yIChfKCJDYW5ub3QgcmVz b2x2ZSBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIGZvciBhIG1pc3Npbmcgb2JqZWN0IikpOwor KworKyAgcmV0dXJuIGRlYmF0b24tPm9iamVjdF9hZGRyZXNzOworK30KKysKKysvKiBBZGRyZXNz IG9mIHRoZSB2YXJpYWJsZSB3ZSBhcmUgY3VycmVudGx5IHJlZmVycmluZyB0by4gIEl0IGlzIHNl dCBmcm9tCisrICAgRFdfVEFHX3ZhcmlhYmxlJ3MgRFdfQVRfbG9jYXRpb24gKG5vdCBEV19UQUdf dHlwZSdzIERXX0FUX2RhdGFfbG9jYXRpb24pIGZvcgorKyAgIERXX09QX3B1c2hfb2JqZWN0X2Fk ZHJlc3MuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIgb2JqZWN0X2FkZHJlc3M7CisrCisrLyog Q2FsbGVycyB1c2Ugb2JqZWN0X2FkZHJlc3Nfc2V0IHdoaWxlIHRoZWlyIGNhbGxlcnMgdXNlIHRo ZSByZXN1bHQgc2V0IHNvIHdlCisrICAgY2Fubm90IHJ1biB0aGUgY2xlYW51cCBhdCB0aGUgbG9j YWwgYmxvY2sgb2Ygb3VyIGRpcmVjdCBjYWxsZXIuICBTdGlsbCB3ZQorKyAgIHNob3VsZCByZXNl dCBPQkpFQ1RfQUREUkVTUyBhdCBsZWFzdCBmb3IgdGhlIG5leHQgR0RCIGNvbW1hbmQuICAqLwog KwogK3N0YXRpYyB2b2lkCi0rbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9uYW1lc3BhY2UgKGNv bnN0IGNoYXIgKmZ1bmNfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZXNwYWNlKQorK29iamVjdF9hZGRyZXNzX2NsZWFudXAgKHZvaWQg KnByZXZfc2F2ZV92b2lkcCkKICt7CisrICBDT1JFX0FERFIgKnByZXZfc2F2ZSA9IHByZXZfc2F2 ZV92b2lkcDsKICsKLSsgIGlmIChuYW1lc3BhY2VbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAg IG1ha2Vfc3ltYm9sX292ZXJsb2FkX2xpc3RfcXVhbGlmaWVkIChmdW5jX25hbWUpOwotKyAgICB9 Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICpjb25jYXRlbmF0ZWRfbmFtZQotKwk9IGFs bG9jYSAoc3RybGVuIChuYW1lc3BhY2UpICsgMiArIHN0cmxlbiAoZnVuY19uYW1lKSArIDEpOwot KyAgICAgIHN0cmNweSAoY29uY2F0ZW5hdGVkX25hbWUsIG5hbWVzcGFjZSk7Ci0rICAgICAgc3Ry Y2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgIjo6Iik7Ci0rICAgICAgc3RyY2F0IChjb25jYXRlbmF0 ZWRfbmFtZSwgZnVuY19uYW1lKTsKLSsgICAgICBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X3F1 YWxpZmllZCAoY29uY2F0ZW5hdGVkX25hbWUpOwotKyAgICB9CisrICBvYmplY3RfYWRkcmVzcyA9 ICpwcmV2X3NhdmU7CisrICB4ZnJlZSAocHJldl9zYXZlKTsKKyt9CisrCisrLyogU2V0IHRoZSBi YXNlIGFkZHJlc3MgLSBEV19BVF9sb2NhdGlvbiAtIG9mIGEgdmFyaWFibGUuICBJdCBpcyBiZWlu ZyBsYXRlcgorKyAgIHVzZWQgdG8gZGVyaXZlIG90aGVyIG9iamVjdCBhZGRyZXNzZXMgYnkgRFdf T1BfcHVzaF9vYmplY3RfYWRkcmVzcy4KKysKKysgICBJdCB3b3VsZCBiZSB1c2VmdWwgdG8gc2Fu aXR5IGNoZWNrIEFERFJFU1MgLSBzdWNoIGFzIGZvciBzb21lIG9iamVjdHMgd2l0aAorKyAgIHVu c2V0IHZhbHVlX3Jhd19hZGRyZXNzIC0gYnV0IHNvbWUgdmFsaWQgYWRkcmVzc2VzIG1heSBiZSB6 ZXJvIChzdWNoIGFzIGZpcnN0CisrICAgb2JqZWN0cyBpbiByZWxvY2F0YWJsZSAubyBmaWxlcyku ICAqLworKworK3ZvaWQKKytvYmplY3RfYWRkcmVzc19zZXQgKENPUkVfQUREUiBhZGRyZXNzKQor K3sKKysgIENPUkVfQUREUiAqcHJldl9zYXZlOworKworKyAgcHJldl9zYXZlID0geG1hbGxvYyAo c2l6ZW9mICpwcmV2X3NhdmUpOworKyAgKnByZXZfc2F2ZSA9IG9iamVjdF9hZGRyZXNzOworKyAg bWFrZV9jbGVhbnVwIChvYmplY3RfYWRkcmVzc19jbGVhbnVwLCBwcmV2X3NhdmUpOworKworKyAg b2JqZWN0X2FkZHJlc3MgPSBhZGRyZXNzOwogK30KICsKLSsvKiBTZWFyY2ggdGhlIG5hbWVzcGFj ZSBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZXNwYWNlIG9mIGFuZCBwdWJsaWMgYmFzZQotKyB0 eXBlcy4gICovCi0rc3RhdGljIHZvaWQgbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9hZGxfbmFt ZXNwYWNlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCQkgICAgIGNvbnN0IGNoYXIgKmZ1bmNf bmFtZSkKKysvKiBFdmFsdWF0ZSBEV0FSRiBleHByZXNzaW9uIGF0IERBVEEgLi4uIERBVEEgKyBT SVpFIHdpdGggaXRzIHJlc3VsdCByZWFkYWJsZQorKyAgIGJ5IGR3YXJmX2V4cHJfZmV0Y2ggKFJF VFZBTCwgMCkuICBGUkFNRSBwYXJhbWV0ZXIgY2FuIGJlIE5VTEwgdG8gY2FsbAorKyAgIGdldF9z ZWxlY3RlZF9mcmFtZSB0byBmaW5kIGl0LiAgUmV0dXJuZWQgZHdhcmZfZXhwcl9jb250ZXh0IGZy ZWVpbmcgaXMKKysgICBwdXNoZWQgb24gdGhlIGNsZWFudXAgY2hhaW4uICAqLworKworK3N0YXRp YyBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICoKKytkd2FyZl9leHByX3ByZXBfY3R4IChzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGNvbnN0IGdkYl9ieXRlICpkYXRhLAorKwkJICAgICBzaXpl X3Qgc2l6ZSwgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQogK3sKLSsgIGNoYXIg Km5hbWVzcGFjZTsKLSsgIGNoYXIgKnR5cGVfbmFtZTsKLSsgIGludCBpLCBwcmVmaXhfbGVuOwor KyAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4OworKyAgc3RydWN0IGR3YXJmX2V4cHJf YmF0b24gYmF0b247CisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfY3Vf b2JqZmlsZSAocGVyX2N1KTsKKysKKysgIGJhdG9uLmZyYW1lID0gZnJhbWU7CisrICBiYXRvbi5w ZXJfY3UgPSBwZXJfY3U7CisrICBiYXRvbi5vYmplY3RfYWRkcmVzcyA9IG9iamVjdF9hZGRyZXNz OworKworKyAgY3R4ID0gbmV3X2R3YXJmX2V4cHJfY29udGV4dCAoKTsKKysgIG1ha2VfY2xlYW51 cF9mcmVlX2R3YXJmX2V4cHJfY29udGV4dCAoY3R4KTsKKysKKysgIGN0eC0+Z2RiYXJjaCA9IGdl dF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKyAgY3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVy X2N1X2FkZHJfc2l6ZSAocGVyX2N1KTsKKysgIGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90 ZXh0X29mZnNldCAocGVyX2N1KTsKKysgIGN0eC0+YmF0b24gPSAmYmF0b247CisrICBjdHgtPnJl YWRfcmVnID0gZHdhcmZfZXhwcl9yZWFkX3JlZzsKKysgIGN0eC0+cmVhZF9tZW0gPSBkd2FyZl9l eHByX3JlYWRfbWVtOworKyAgY3R4LT5nZXRfZnJhbWVfYmFzZSA9IGR3YXJmX2V4cHJfZnJhbWVf YmFzZTsKKysgIGN0eC0+Z2V0X2ZyYW1lX2NmYSA9IGR3YXJmX2V4cHJfZnJhbWVfY2ZhOworKyAg Y3R4LT5nZXRfdGxzX2FkZHJlc3MgPSBkd2FyZl9leHByX3Rsc19hZGRyZXNzOworKyAgY3R4LT5k d2FyZl9jYWxsID0gZHdhcmZfZXhwcl9kd2FyZl9jYWxsOworKyAgY3R4LT5nZXRfb2JqZWN0X2Fk ZHJlc3MgPSBkd2FyZl9leHByX29iamVjdF9hZGRyZXNzOworKworKyAgZHdhcmZfZXhwcl9ldmFs IChjdHgsIGRhdGEsIHNpemUpOworKworKyAgLyogSXQgd2FzIHVzZWQgb25seSBkdXJpbmcgZHdh cmZfZXhwcl9ldmFsLiAgKi8KKysgIGN0eC0+YmF0b24gPSBOVUxMOwogKwotKyAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUiB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9SRUYKLSsgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSkK LSsgICAgcmV0dXJuIG1ha2Vfc3ltYm9sX292ZXJsb2FkX2xpc3RfYWRsX25hbWVzcGFjZSAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZ1bmNfbmFtZSk7CisrICByZXR1cm4gY3R4OworK30KKysKKysv KiBFdmFsdWF0ZSBEV0FSRiBleHByZXNzaW9uIGF0IERMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1 Y2VzIGV4YWN0bHkgb25lCisrICAgQ09SRV9BRERSIHJlc3VsdCBvbiB0aGUgRFdBUkYgc3RhY2sg c3RhY2suICAqLworKworK0NPUkVfQUREUgorK2R3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoc3Ry dWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkbGJhdG9uKQorK3sKKysgIHN0cnVjdCBkd2FyZl9l eHByX2NvbnRleHQgKmN0eDsKKysgIENPUkVfQUREUiByZXR2YWw7CisrICBzdHJ1Y3QgY2xlYW51 cCAqYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKICsKLSsgIHR5cGVf bmFtZSA9IFRZUEVfTkFNRSAodHlwZSk7CisrICBjdHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChn ZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCBkbGJhdG9uLT5kYXRhLAorKwkJCSAgICAgZGxiYXRv bi0+c2l6ZSwgZGxiYXRvbi0+cGVyX2N1KTsKKysgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQor KyAgICBlcnJvciAoXygiRFdfT1BfKnBpZWNlIGlzIHVuc3VwcG9ydGVkIGZvciBEV19GT1JNX2Js b2NrIikpOwogKwotKyAgcHJlZml4X2xlbiA9IGNwX2VudGlyZV9wcmVmaXhfbGVuICh0eXBlX25h bWUpOworKyAgcmV0dmFsID0gZHdhcmZfZXhwcl9mZXRjaCAoY3R4LCAwKTsKICsKLSsgIGlmIChw cmVmaXhfbGVuICE9IDApCisrICBpZiAoY3R4LT5sb2NhdGlvbiA9PSBEV0FSRl9WQUxVRV9SRUdJ U1RFUikKICsgICAgewotKyAgICAgIG5hbWVzcGFjZSA9IGFsbG9jYSAocHJlZml4X2xlbiArIDEp OwotKyAgICAgIHN0cm5jcHkgKG5hbWVzcGFjZSwgdHlwZV9uYW1lLCBwcmVmaXhfbGVuKTsKLSsg ICAgICBuYW1lc3BhY2VbcHJlZml4X2xlbl0gPSAnXDAnOworKyAgICAgIC8qIElubGluZWQgZHdh cmZfZXhwcl9yZWFkX3JlZyBhcyB3ZSBubyBsb25nZXIgaGF2ZSB0aGUgYmF0b24uICovCisrCisr ICAgICAgaW50IGdkYl9yZWdudW0gPSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVtIChjdHgt PmdkYmFyY2gsIHJldHZhbCk7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBidWlsdGluX3R5 cGUgKGN0eC0+Z2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CisrICAgICAgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKICsKLSsgICAgICBtYWtl X3N5bWJvbF9vdmVybG9hZF9saXN0X25hbWVzcGFjZSAoZnVuY19uYW1lLCBuYW1lc3BhY2UpOwor KyAgICAgIHJldHZhbCA9IGFkZHJlc3NfZnJvbV9yZWdpc3RlciAodHlwZSwgZ2RiX3JlZ251bSwg ZnJhbWUpOwogKyAgICB9CiArCi0rICAvKiBDaGVjayBwdWJsaWMgYmFzZSB0eXBlICovCi0rICBp ZiAoVFlQRV9DT0RFKHR5cGUpID09IFRZUEVfQ09ERV9DTEFTUykKLSsgICAgZm9yIChpID0gMDsg aSA8IFRZUEVfTl9CQVNFQ0xBU1NFUyAodHlwZSk7IGkrKykKLSsgICAgICB7Ci0rCWlmIChCQVNF VFlQRV9WSUFfUFVCTElDICh0eXBlLCBpKSkKLSsJICBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0 X2FkbF9uYW1lc3BhY2UgKFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSwKLSsJCQkJCQkgICBmdW5j X25hbWUpOwotKyAgICAgIH0KKysgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKICsKKysgIHJldHVy biByZXR2YWw7CiArfQogKwotKy8qIEFkZHMgdGhlIHRoZSBvdmVybG9hZCBsaXN0IG92ZXJsb2Fk IGNhbmRpZGF0ZXMgZm9yIEZVTkNfTkFNRSBmb3VuZCB0aHJvdWdoCi0rICAgYXJndW1lbnQgZGVw ZW5kZW50IGxvb2t1cC4gICovCisrLyogRXZhbHVhdGUgRFdBUkYgbG9jYXRpb24gbGlzdCBhdCBE TExCQVRPTiBleHBlY3RpbmcgaXQgcHJvZHVjZXMgZXhhY3RseSBvbmUKKysgICBDT1JFX0FERFIg cmVzdWx0IHN0b3JlZCB0byAqQUREUlAgb24gdGhlIERXQVJGIHN0YWNrIHN0YWNrLiAgSWYgdGhl IHJlc3VsdAorKyAgIGNvdWxkIG5vdCBiZSBmb3VuZCByZXR1cm4gemVybyBhbmQga2VlcCAqQURE UlAgdW5jaGFuZ2VkLiAgKi8KICsKLStzdHJ1Y3Qgc3ltYm9sICoqCi0rbWFrZV9zeW1ib2xfb3Zl cmxvYWRfbGlzdF9hZGwgKHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKKytpbnQK Kytkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAq ZGxsYmF0b24sCisrCQkJICBzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSICphZGRycCkKICt7 Ci0rICBpbnQgaTsKKysgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGdldF9zZWxlY3RlZF9m cmFtZSAoTlVMTCk7CisrICBjb25zdCBnZGJfYnl0ZSAqZGF0YTsKKysgIHNpemVfdCBzaXplOwor KyAgc3RydWN0IHZhbHVlICp2YWw7CiArCi0rICBnZGJfYXNzZXJ0IChzeW1fcmV0dXJuX3ZhbF9z aXplICE9IC0xKTsKKysgIGlmICghZGxsYmF0b24pCisrICAgIHJldHVybiAwOworKworKyAgZGF0 YSA9IGZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoZGxsYmF0b24sICZzaXplLAorKwkJCQkgICBn ZXRfZnJhbWVfYWRkcmVzc19pbl9ibG9jayAoZnJhbWUpKTsKKysgIGlmIChkYXRhID09IE5VTEwp CisrICAgIHJldHVybiAwOwogKwotKyAgZm9yIChpID0gMTsgaSA8PSBuYXJnczsgaSsrKQotKyAg ICBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X2FkbF9uYW1lc3BhY2UgKGFyZ190eXBlc1tpIC0g MV0sIGZ1bmNfbmFtZSk7CisrICB2YWwgPSBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHR5cGUs IGZyYW1lLCBkYXRhLCBzaXplLCBkbGxiYXRvbi0+cGVyX2N1KTsKKysgIGlmICh2YWx1ZV9vcHRp bWl6ZWRfb3V0ICh2YWwpKQorKyAgICByZXR1cm4gMDsKICsKLSsgIHJldHVybiBzeW1fcmV0dXJu X3ZhbDsKKysgICphZGRycCA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7CisrICByZXR1cm4gMTsK ICt9CisrCisgc3RydWN0IHBpZWNlX2Nsb3N1cmUKKyB7CisgICAvKiBSZWZlcmVuY2UgY291bnQu ICAqLworQEAgLTg4NywxMCArMTA1OCw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAJCQkgIHN0cnVjdCBk d2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKyB7CisgICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsK Ky0gIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uIGJhdG9uOworICAgc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dCAqY3R4OworLSAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKy0gIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChwZXJfY3UpOworKyAgc3Ry dWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsK ICAKLSAvKiBUaGlzIGFwcGxpZXMgdGhlIHVzaW5nIGRpcmVjdGl2ZXMgdG8gYWRkIG5hbWVzcGFj ZXMgdG8gc2VhcmNoIGluLAotICAgIGFuZCB0aGVuIHNlYXJjaGVzIGZvciBvdmVybG9hZHMgaW4g YWxsIG9mIHRob3NlIG5hbWVzcGFjZXMuICBJdAotQEAgLTczOSwyMCArODE2LDcgQEAgbWFrZV9z eW1ib2xfb3ZlcmxvYWRfbGlzdF91c2luZyAoY29uc3QgY2hhciAqZnVuY19uYW1lLAorICAgaWYg KHNpemUgPT0gMCkKKyAgICAgeworQEAgLTkwMCwyNCArMTA2OSw4IEBAIGR3YXJmMl9ldmFsdWF0 ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK KyAgICAgICByZXR1cm4gcmV0dmFsOwogICAgICB9CiAgCi0gICAvKiBOb3csIGFkZCBuYW1lcyBm b3IgdGhpcyBuYW1lc3BhY2UuICAqLwotLSAgCi0tICBpZiAobmFtZXNwYWNlWzBdID09ICdcMCcp Ci0tICAgIHsKLS0gICAgICBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X3F1YWxpZmllZCAoZnVu Y19uYW1lKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgY2hhciAqY29uY2F0ZW5h dGVkX25hbWUKLS0JPSBhbGxvY2EgKHN0cmxlbiAobmFtZXNwYWNlKSArIDIgKyBzdHJsZW4gKGZ1 bmNfbmFtZSkgKyAxKTsKLS0gICAgICBzdHJjcHkgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lc3Bh Y2UpOwotLSAgICAgIHN0cmNhdCAoY29uY2F0ZW5hdGVkX25hbWUsICI6OiIpOwotLSAgICAgIHN0 cmNhdCAoY29uY2F0ZW5hdGVkX25hbWUsIGZ1bmNfbmFtZSk7Ci0tICAgICAgbWFrZV9zeW1ib2xf b3ZlcmxvYWRfbGlzdF9xdWFsaWZpZWQgKGNvbmNhdGVuYXRlZF9uYW1lKTsKLS0gICAgfQotKyAg bWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9uYW1lc3BhY2UgKGZ1bmNfbmFtZSwgbmFtZXNwYWNl KTsKLSB9CistICBiYXRvbi5mcmFtZSA9IGZyYW1lOworLSAgYmF0b24ucGVyX2N1ID0gcGVyX2N1 OworKyAgY3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9j dSk7CiAgCi0gLyogVGhpcyBkb2VzIHRoZSBidWxrIG9mIHRoZSB3b3JrIG9mIGZpbmRpbmcgb3Zl cmxvYWRlZCBzeW1ib2xzLgotQEAgLTg0MCw5ICs5MDQsOSBAQCByZWFkX2luX3BzeW10YWJzIChj b25zdCBjaGFyICpmdW5jX25hbWUpCi0gICAgIGlmIChwcy0+cmVhZGluKQotICAgICAgIGNvbnRp bnVlOwotIAotLSAgICBpZiAoKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIGZ1bmNfbmFtZSwg TlVMTCwgMSwgVkFSX0RPTUFJTikKLSsgICAgaWYgKChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBz LCBmdW5jX25hbWUsIDEsIFZBUl9ET01BSU4pCi0gCSAhPSBOVUxMKQotLQl8fCAobG9va3VwX3Bh cnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCBOVUxMLCAwLCBWQVJfRE9NQUlOKQotKwl8fCAo bG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCAwLCBWQVJfRE9NQUlOKQotIAkg ICAgIT0gTlVMTCkpCi0gICAgICAgcHN5bXRhYl90b19zeW10YWIgKHBzKTsKLSAgIH0KLWRpZmYg LS1naXQgYS9nZGIvY3Atc3VwcG9ydC5oIGIvZ2RiL2NwLXN1cHBvcnQuaAotaW5kZXggYTZhOWFm MS4uNTdhYTVlNSAxMDA2NDQKLS0tLSBhL2dkYi9jcC1zdXBwb3J0LmgKLSsrKyBiL2dkYi9jcC1z dXBwb3J0LmgKLUBAIC0zOCwyMCArMzgsMjQgQEAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudDsK LSAKLSAvKiBUaGlzIHN0cnVjdCBpcyBkZXNpZ25lZCB0byBzdG9yZSBkYXRhIGZyb20gdXNpbmcg ZGlyZWN0aXZlcy4gIEl0Ci0gICAgc2F5cyB0aGF0IG5hbWVzIGZyb20gbmFtZXNwYWNlIElNUE9S VF9TUkMgc2hvdWxkIGJlIHZpc2libGUgd2l0aGluCi0tICAgbmFtZXNwYWNlIElNUE9SVF9ERVNU LiAgVGhlc2UgZm9ybSBhIGxpbmtlZCBsaXN0OyBORVhUIGlzIHRoZSBuZXh0IGVsZW1lbnQKLS0g ICBvZiB0aGUgbGlzdC4gIElmIHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UgaGFzIGJlZW4gYWxpYXNl ZCwgQUxJQVMgaXMgc2V0IHRvIGEKLS0gICBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGlhcy4g IE90aGVyd2lzZSwgQUxJQVMgaXMgTlVMTC4KLS0gICBFZzoKLS0gICAgICAgbmFtZXNwYWNlIEMg PSBBOjpCOwotKyAgIG5hbWVzcGFjZSBJTVBPUlRfREVTVC4gIFRoZXNlIGZvcm0gYSBsaW5rZWQg bGlzdDsgTkVYVCBpcyB0aGUgbmV4dAotKyAgIGVsZW1lbnQgb2YgdGhlIGxpc3QuICBBTElBUyBp cyBzZXQgdG8gYSBub24gZW1wdHkgc3RyaW5nIGlmIHRoZSBpbXBvcnRlZAotKyAgIG5hbWVzcGFj ZSBoYXMgYmVlbiBhbGlhc2VkLkVnOgotKyAgICAgICBuYW1lc3BhY2UgQz1BOjpCOwotICAgIEFM SUFTID0gIkMiCi0rICAgREVDTEFSQVRJT04gaXMgdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVkIGRl Y2xhcmF0aW9uLCBpZiB0aGlzIGltcG9ydCAKLSsgICBzdGF0ZW1lbnQgcmVwcmVzZW50cyBvbmUu IEVnOgotKyAgICAgICB1c2luZyBBOjp4OwotKyAgIFdoZXJlIHggaXMgdmFyaWFibGUgaW4gbmFt ZXNwYWNlIEEuIGRlY2xhcmF0aW9uIGlzIHNldCB0byB4LiAgCi0gKi8KLSAKLSBzdHJ1Y3QgdXNp bmdfZGlyZWN0Ci0gewotICAgY2hhciAqaW1wb3J0X3NyYzsKLSAgIGNoYXIgKmltcG9ydF9kZXN0 OworLSAgY3R4ID0gbmV3X2R3YXJmX2V4cHJfY29udGV4dCAoKTsKKy0gIG9sZF9jaGFpbiA9IG1h a2VfY2xlYW51cF9mcmVlX2R3YXJmX2V4cHJfY29udGV4dCAoY3R4KTsKIC0KLSAgIGNoYXIgKmFs aWFzOwotKyAgY2hhciAqZGVjbGFyYXRpb247Ci0rICBpbnQgbGluZV9udW1iZXI7Ci0gCi0gICBz dHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXh0OwotIAotQEAgLTY0LDYgKzY4LDcgQEAgc3RydWN0IHVz aW5nX2RpcmVjdAotIAotIGV4dGVybiBjaGFyICpjcF9jYW5vbmljYWxpemVfc3RyaW5nIChjb25z dCBjaGFyICpzdHJpbmcpOwotIAotKwotIGV4dGVybiBjaGFyICpjcF9jbGFzc19uYW1lX2Zyb21f cGh5c25hbWUgKGNvbnN0IGNoYXIgKnBoeXNuYW1lKTsKLSAKLSBleHRlcm4gY2hhciAqbWV0aG9k X25hbWVfZnJvbV9waHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25hbWUpOwotQEAgLTc5LDYgKzg0 LDEwIEBAIGV4dGVybiBjaGFyICpjcF9yZW1vdmVfcGFyYW1zIChjb25zdCBjaGFyICpkZW1hbmds ZWRfbmFtZSk7Ci0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKiptYWtlX3N5bWJvbF9vdmVybG9hZF9s aXN0IChjb25zdCBjaGFyICosCi0gCQkJCQkJICBjb25zdCBjaGFyICopOwotIAotK2V4dGVybiBz dHJ1Y3Qgc3ltYm9sICoqbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9hZGwgKHN0cnVjdCB0eXBl ICoqYXJnX3R5cGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBuYXJncywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpOwotKwotIGV4dGVy biBzdHJ1Y3QgdHlwZSAqY3BfbG9va3VwX3J0dGlfdHlwZSAoY29uc3QgY2hhciAqbmFtZSwKLSAJ CQkJCSBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKLSAKLUBAIC05MCwxMSArOTksMTUgQEAgZXh0ZXJu IGludCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSk7Ci0gCi0gZXh0ZXJu IHZvaWQgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYWxpYXMpOwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFsaWFzLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlcik7 Ci0gCi0gZXh0ZXJuIHN0cnVjdCB1c2luZ19kaXJlY3QgKmNwX2FkZF91c2luZyAoY29uc3QgY2hh ciAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqYWxpYXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqZGVjbGFyYXRpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxpbmVfbnVtYmVyLAotIAkJCQkJICBzdHJ1Y3Qg dXNpbmdfZGlyZWN0ICpuZXh0KTsKLSAKLSBleHRlcm4gdm9pZCBjcF9pbml0aWFsaXplX25hbWVz cGFjZSAodm9pZCk7Ci1AQCAtMTExLDE2ICsxMjQsMjAgQEAgZXh0ZXJuIHZvaWQgY3Bfc2V0X2Js b2NrX3Njb3BlIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsCi0gZXh0ZXJuIHZvaWQgY3Bf c2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJv bCk7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwg KGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkJIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJ CQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCQkgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluKTsKLSAKLStzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMg KGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25fb25seSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWFyY2hfcGFy ZW50cyk7Ci0rCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfbmFtZXNw YWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0tCQkJCQkJICBjb25zdCBjaGFyICpuYW1lLAot LQkJCQkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotLQkJCQkJCSAgY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaywKLS0JCQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLS0JCQkJ CQkgIGNvbnN0IGludCBzZWFyY2hfcGFyZW50cyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2Nr ICpibG9jaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpj cF9sb29rdXBfbmVzdGVkX3R5cGUgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSwKLSAJCQkJCSAg IGNvbnN0IGNoYXIgKm5lc3RlZF9uYW1lLAotZGlmZiAtLWdpdCBhL2dkYi9kYnhyZWFkLmMgYi9n ZGIvZGJ4cmVhZC5jCi1pbmRleCBjOWE1NzU0Li5mYzMzZGEyIDEwMDY0NAotLS0tIGEvZ2RiL2Ri eHJlYWQuYwotKysrIGIvZ2RiL2RieHJlYWQuYwotQEAgLTM1NjUsNiArMzU2NSw3IEBAIHN0YXRp YyBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9mbnMgPQotICAgZGJ4X25ld19pbml0LAkJLyogc3lt X25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCi0gICBkYnhf c3ltZmlsZV9pbml0LAkvKiBzeW1faW5pdDogcmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBz eW1fcmVhZCgpICovCi0gICBkYnhfc3ltZmlsZV9yZWFkLAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBz eW1ib2wgZmlsZSBpbnRvIHN5bXRhYiAqLwotKyAgTlVMTCwJCQkJLyogc3ltX3JlYWRfcHN5bWJv bHMgKi8KLSAgIGRieF9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdp dGggZmlsZSwgY2xlYW51cCAqLwotICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsIC8qIHN5bV9v ZmZzZXRzOiBwYXJzZSB1c2VyJ3Mgb2Zmc2V0cyB0bwotIAkJCSAgICAgIGludGVybmFsIGZvcm0g Ki8KLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwotaW5kZXggMGUzZTA5My4uNjYxYmExOCAxMDA2NDQKLS0tLSBhL2dkYi9kb2MvZ2RiLnRleGlu Zm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xMTU3LDYgKzExNTcsMTYgQEAgZm9y IHJlbW90ZSBkZWJ1Z2dpbmcuCi0gUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9n cmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KLSBAYyBGSVhNRToga2luZ2RvbiB0aGlu a3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCi0gCi0rQGl0ZW0gLVAKLStA Y2luZGV4IEBjb2Rley1QfQotK0BpdGVteCAtLXB5dGhvbgotK0BjaW5kZXggQGNvZGV7LS1weXRo b259Ci0rQ2hhbmdlIGludGVycHJldGF0aW9uIG9mIGNvbW1hbmQgbGluZSBzbyB0aGF0IHRoZSBh cmd1bWVudCBpbW1lZGlhdGVseQotK2ZvbGxvd2luZyB0aGlzIHN3aXRjaCBpcyB0YWtlbiB0byBi ZSB0aGUgbmFtZSBvZiBhIFB5dGhvbiBzY3JpcHQgZmlsZS4KLStUaGlzIG9wdGlvbiBzdG9wcyBv cHRpb24gcHJvY2Vzc2luZzsgc3Vic2VxdWVudCBvcHRpb25zIGFyZSBwYXNzZWQgdG8KLStQeXRo b24gYXMgQGNvZGV7c3lzLmFyZ3Z9LiAgVGhpcyBvcHRpb24gaXMgb25seSBhdmFpbGFibGUgaWYg UHl0aG9uCi0rc2NyaXB0aW5nIHN1cHBvcnQgd2FzIGVuYWJsZWQgd2hlbiBAdmFsdWV7R0RCTn0g d2FzIGNvbmZpZ3VyZWQuCi0rCi0gQGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRoZXNlIGV2 ZW50dWFsbHkKLSBAaXRlbSAtdHVpCi0gQGNpbmRleCBAY29kZXstLXR1aX0KLUBAIC0xOTIxNSw3 ICsxOTIyNSw3IEBAIHVzaW5nIHRoZSBAY29kZXtzY3JpcHQtZXh0ZW5zaW9ufSBzZXR0aW5nLgot IEB0YWJsZSBAY29kZQotIEBraW5kZXggc291cmNlCi0gQGNpbmRleCBleGVjdXRlIGNvbW1hbmRz IGZyb20gYSBmaWxlCi0tQGl0ZW0gc291cmNlIFtAY29kZXstdn1dIEB2YXJ7ZmlsZW5hbWV9Ci0r QGl0ZW0gc291cmNlIFtAY29kZXstdn1dIFtAY29kZXstcH1dIEB2YXJ7ZmlsZW5hbWV9Ci0gRXhl Y3V0ZSB0aGUgY29tbWFuZCBmaWxlIEB2YXJ7ZmlsZW5hbWV9LgotIEBlbmQgdGFibGUKLSAKLUBA IC0xOTQ5Myw4ICsxOTUwMyw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxl OgotIAotIEBzbWFsbGV4YW1wbGUKLSAoQHZhbHVle0dEQlB9KSBweXRob24KLS1UeXBlIHB5dGhv biBzY3JpcHQKLS1FbmQgd2l0aCBhIGxpbmUgc2F5aW5nIGp1c3QgImVuZCIuCi0gPnByaW50IDIz Ci0gPmVuZAotIDIzCi1AQCAtMTk1MDcsNiArMTk1MTUsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0 LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKLSBweXRob24g cHJpbnQtc3RhY2t9OiBpZiBAY29kZXtvbn0sIHRoZSBkZWZhdWx0LCB0aGVuIFB5dGhvbiBzdGFj awotIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uIHN0YWNr IHByaW50aW5nIGlzCi0gZGlzYWJsZWQuCi0rCi0rQGtpbmRleCBtYWludCBzZXQgcHl0aG9uIGF1 dG8tbG9hZAotK0BpdGVtIG1haW50IHNldCBweXRob24gYXV0by1sb2FkCi0rQnkgZGVmYXVsdCwg QHZhbHVle0dEQk59IHdpbGwgYXR0ZW1wdCB0byBhdXRvbWF0aWNhbGx5IGxvYWQgUHl0aG9uCi0r Y29kZSB3aGVuIGFuIG9iamVjdCBmaWxlIGlzIG9wZW5lZC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xs ZWQgdXNpbmcKLStAY29kZXttYWludCBzZXQgcHl0aG9uIGF1dG8tbG9hZH06IGlmIEBjb2Rle29u fSwgdGhlIGRlZmF1bHQsIHRoZW4KLStQeXRob24gYXV0by1sb2FkaW5nIGlzIGVuYWJsZWQ7IGlm IEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uCi0rYXV0by1sb2FkaW5nIGlzIGRpc2FibGVkLgotIEBl bmQgdGFibGUKLSAKLSBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQeXRob24gc2Ny aXB0IGZyb20gdGhlIEB2YWx1ZXtHREJOfQotQEAgLTE5NTI4LDYgKzE5NTQ0LDE0IEBAIGFuZCB0 aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCi0gQGNpbmRleCBweXRob24gYXBpCi0gQGNpbmRleCBw cm9ncmFtbWluZyBpbiBweXRob24KLSAKLStZb3UgY2FuIGdldCBxdWljayBvbmxpbmUgaGVscCBm b3IgQHZhbHVle0dEQk59J3MgUHl0aG9uIEFQSSBieSBpc3N1aW5nCi0rdGhlIGNvbW1hbmQgQHd7 QGtiZHtweXRob24gaGVscCAoZ2RiKX19LgotKwotK0Z1bmN0aW9ucyBhbmQgbWV0aG9kcyB3aGlj aCBoYXZlIHR3byBvciBtb3JlIG9wdGlvbmFsIGFyZ3VtZW50cyBhbGxvdwotK3RoZW0gdG8gYmUg c3BlY2lmaWVkIHVzaW5nIGtleXdvcmQgc3ludGF4LiAgVGhpcyBhbGxvd3MgcGFzc2luZyBzb21l Ci0rb3B0aW9uYWwgYXJndW1lbnRzIHdoaWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1wbGU6Ci0r QHd7QGNvZGV7Z2RiLnNvbWVfZnVuY3Rpb24gKCdmb28nLCBiYXIgPSAxLCBiYXogPSAyKX19Lgot KwotIEBjaW5kZXggcHl0aG9uIHN0ZG91dAotIEBjaW5kZXggcHl0aG9uIHBhZ2luYXRpb24KLSBB dCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5cy5zdGRv dXR9IGFuZAotQEAgLTE5NTQwLDEzICsxOTU2NCwxNyBAQCBzaXR1YXRpb24sIGEgUHl0aG9uIEBj b2Rle0tleWJvYXJkSW50ZXJydXB0fSBleGNlcHRpb24gaXMgdGhyb3duLgotICogQmFzaWMgUHl0 aG9uOjogICAgICAgICAgICAgICAgQmFzaWMgUHl0aG9uIEZ1bmN0aW9ucy4KLSAqIEV4Y2VwdGlv biBIYW5kbGluZzo6Ci0gKiBBdXRvLWxvYWRpbmc6OiAgICAgICAgICAgICAgICBBdXRvbWF0aWNh bGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUuCi0tKiBWYWx1ZXMgRnJvbSBJbmZlcmlvcjo6Ci0rKiBW YWx1ZXMgRnJvbSBJbmZlcmlvcjo6CVB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuCi0g KiBUeXBlcyBJbiBQeXRob246OgkJUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHR5cGVzLgotICog UHJldHR5IFByaW50aW5nOjoJCVByZXR0eS1wcmludGluZyB2YWx1ZXMuCi0gKiBTZWxlY3Rpbmcg UHJldHR5LVByaW50ZXJzOjogICBIb3cgR0RCIGNob29zZXMgYSBwcmV0dHktcHJpbnRlci4KLSsq IEluZmVyaW9ycyBJbiBQeXRob246OgkJUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIGluZmVyaW9y cyAocHJvY2Vzc2VzKQotKyogVGhyZWFkcyBJbiBQeXRob246OiAgICAgICAgICAgQWNjZXNzaW5n IGluZmVyaW9yIHRocmVhZHMgZnJvbSBQeXRob24uCi0gKiBDb21tYW5kcyBJbiBQeXRob246OiAg ICAgICAgICBJbXBsZW1lbnRpbmcgbmV3IGNvbW1hbmRzIGluIFB5dGhvbi4KLSsqIFBhcmFtZXRl cnMgSW4gUHl0aG9uOjogICAgICAgIEFkZGluZyBuZXcgQHZhbHVle0dEQk59IHBhcmFtZXRlcnMu Ci0gKiBGdW5jdGlvbnMgSW4gUHl0aG9uOjogICAgICAgICBXcml0aW5nIG5ldyBjb252ZW5pZW5j ZSBmdW5jdGlvbnMuCi0gKiBPYmpmaWxlcyBJbiBQeXRob246OiAgICAgICAgICBPYmplY3QgZmls ZXMuCi0rKiBCcmVha3BvaW50cyBJbiBQeXRob246OiAgICAgICBNYW5pcHVsYXRpbmcgYnJlYWtw b2ludHMgdXNpbmcgUHl0aG9uLgotICogRnJhbWVzIEluIFB5dGhvbjo6ICAgICAgICAgICAgQWNl c3NpbmcgaW5mZXJpb3Igc3RhY2sgZnJhbWVzIGZyb20gUHl0aG9uLgotICogTGF6eSBTdHJpbmdz IEluIFB5dGhvbjo6ICAgICAgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIGxhenkgc3RyaW5ncy4K LSBAZW5kIG1lbnUKLUBAIC0xOTU3NCw2ICsxOTYwMiwxMiBAQCBjb21tYW5kIGFzIGhhdmluZyBv cmlnaW5hdGVkIGZyb20gdGhlIHVzZXIgaW52b2tpbmcgaXQgaW50ZXJhY3RpdmVseS4KLSBJdCBt dXN0IGJlIGEgYm9vbGVhbiB2YWx1ZS4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIEBjb2Rl e0ZhbHNlfS4KLSBAZW5kIGRlZnVuCi0gCi0rQGZpbmRleCBnZGIuYnJlYWtwb2ludHMKLStAZGVm dW4gYnJlYWtwb2ludHMKLStSZXR1cm4gYSBzZXF1ZW5jZSBob2xkaW5nIGFsbCBvZiBAdmFsdWV7 R0RCTn0ncyBicmVha3BvaW50cy4KLStAeHJlZntCcmVha3BvaW50cyBJbiBQeXRob259LCBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4KLStAZW5kIGRlZnVuCi0rCi0gQGZpbmRleCBnZGIucGFyYW1ldGVy Ci0gQGRlZnVuIHBhcmFtZXRlciBwYXJhbWV0ZXIKLSBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgQHZh bHVle0dEQk59IHBhcmFtZXRlci4gIEB2YXJ7cGFyYW1ldGVyfSBpcyBhCi1AQCAtMTk1OTAsNiAr MTk2MjQsNyBAQCBhIFB5dGhvbiB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSwgYW5kIHJl dHVybmVkLgotIEBkZWZ1biBoaXN0b3J5IG51bWJlcgotIFJldHVybiBhIHZhbHVlIGZyb20gQHZh bHVle0dEQk59J3MgdmFsdWUgaGlzdG9yeSAoQHB4cmVme1ZhbHVlCi0gSGlzdG9yeX0pLiAgQHZh cntudW1iZXJ9IGluZGljYXRlcyB3aGljaCBoaXN0b3J5IGVsZW1lbnQgdG8gcmV0dXJuLgotKwot IElmIEB2YXJ7bnVtYmVyfSBpcyBuZWdhdGl2ZSwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCB0YWtl IGl0cyBhYnNvbHV0ZSB2YWx1ZQotIGFuZCBjb3VudCBiYWNrd2FyZCBmcm9tIHRoZSBsYXN0IGVs ZW1lbnQgKGkuZS4sIHRoZSBtb3N0IHJlY2VudCBlbGVtZW50KSB0bwotIGZpbmQgdGhlIHZhbHVl IHRvIHJldHVybi4gIElmIEB2YXJ7bnVtYmVyfSBpcyB6ZXJvLCB0aGVuIEB2YWx1ZXtHREJOfSB3 aWxsCi1AQCAtMTk2MTQsNiArMTk2NDksMjEgQEAgY29tcHV0ZSB2YWx1ZXMsIGZvciBleGFtcGxl LCBpdCBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhCi0gY29udmVuaWVuY2Ug dmFyaWFibGUgKEBweHJlZntDb252ZW5pZW5jZSBWYXJzfSkgYXMgYSBAY29kZXtnZGIuVmFsdWV9 LgotIEBlbmQgZGVmdW4KLSAKLStAZmluZGV4IGdkYi5wb3N0X2V2ZW50Ci0rQGRlZnVuIHBvc3Rf ZXZlbnQgZXZlbnQKLStQdXQgQHZhcntldmVudH0sIGEgY2FsbGFibGUgb2JqZWN0IHRha2luZyBu byBhcmd1bWVudHMsIGludG8KLStAdmFsdWV7R0RCTn0ncyBpbnRlcm5hbCBldmVudCBxdWV1ZS4g IFRoaXMgY2FsbGFibGUgd2lsbCBiZSBpbnZva2VkIGF0Ci0rc29tZSBsYXRlciBwb2ludCwgZHVy aW5nIEB2YWx1ZXtHREJOfSdzIGV2ZW50IHByb2Nlc3NpbmcuICBFdmVudHMKLStwb3N0ZWQgdXNp bmcgQGNvZGV7cG9zdF9ldmVudH0gd2lsbCBiZSBydW4gaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRo ZXkKLSt3ZXJlIHBvc3RlZDsgaG93ZXZlciwgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgd2hlbiB0 aGV5IHdpbGwgYmUKLStwcm9jZXNzZWQgcmVsYXRpdmUgdG8gb3RoZXIgZXZlbnRzIGluc2lkZSBA dmFsdWV7R0RCTn0uCi0rCi0rQHZhbHVle0dEQk59IGlzIG5vdCB0aHJlYWQtc2FmZS4gIElmIHlv dXIgUHl0aG9uIHByb2dyYW0gdXNlcyBtdWx0aXBsZQotK3RocmVhZHMsIHlvdSBtdXN0IGJlIGNh cmVmdWwgdG8gb25seSBjYWxsIEB2YWx1ZXtHREJOfS1zcGVjaWZpYwotK2Z1bmN0aW9ucyBpbiB0 aGUgbWFpbiBAdmFsdWV7R0RCTn0gdGhyZWFkLiAgQGNvZGV7cG9zdF9ldmVudH0gZW5zdXJlcwot K3RoaXMuCi0rQGVuZCBkZWZ1bgotKwotIEBmaW5kZXggZ2RiLndyaXRlCi0gQGRlZnVuIHdyaXRl IHN0cmluZwotIFByaW50IGEgc3RyaW5nIHRvIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFu ZGFyZCBvdXRwdXQgc3RyZWFtLgotQEAgLTE5NjI4LDYgKzE5Njc4LDExIEBAIEZsdXNoIEB2YWx1 ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLiAgRmx1c2hpbmcKLSBm dW5jdGlvbi4KLSBAZW5kIGRlZnVuCi0gCi0rQGZpbmRleCBnZGIuc29saWJfYWRkcmVzcwotK0Bk ZWZ1biBzb2xpYl9hZGRyZXNzIEB2YXJ7YWRkcmVzc30KLStSZXR1cm4gdGhlIG5hbWUgb2YgdGhl IHNoYXJlZCBsaWJyYXJ5IGhvbGRpbmcgdGhlIGdpdmVuIGFkZHJlc3MsIG9yIE5vbmUuCi0rQGVu ZCBkZWZ1bgotKwotIEBub2RlIEV4Y2VwdGlvbiBIYW5kbGluZwotIEBzdWJzdWJzZWN0aW9uIEV4 Y2VwdGlvbiBIYW5kbGluZwotIEBjaW5kZXggcHl0aG9uIGV4Y2VwdGlvbnMKLUBAIC0xOTg2Niw2 ICsxOTkyMSw5IEBAIG1vZHVsZToKLSBUaGlzIGZ1bmN0aW9uIGxvb2tzIHVwIGEgdHlwZSBieSBu YW1lLiAgQHZhcntuYW1lfSBpcyB0aGUgbmFtZSBvZiB0aGUKLSB0eXBlIHRvIGxvb2sgdXAuICBJ dCBtdXN0IGJlIGEgc3RyaW5nLgotIAotK0lmIEB2YXJ7YmxvY2t9IGlzIGdpdmVuLCB0aGVuIEB2 YXJ7bmFtZX0gaXMgbG9va2VkIHVwIGluIHRoYXQgc2NvcGUuCi0rT3RoZXJ3aXNlLCBpdCBpcyBz ZWFyY2hlZCBmb3IgZ2xvYmFsbHkuCi0rCi0gT3JkaW5hcmlseSwgdGhpcyBmdW5jdGlvbiB3aWxs IHJldHVybiBhbiBpbnN0YW5jZSBvZiBAY29kZXtnZGIuVHlwZX0uCi0gSWYgdGhlIG5hbWVkIHR5 cGUgY2Fubm90IGJlIGZvdW5kLCBpdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4KLSBAZW5kIGRl ZnVuCi1AQCAtMTk5ODgsNyArMjAwNDYsNyBAQCBJZiB0aGUgdHlwZSBkb2VzIG5vdCBoYXZlIGEg dGFyZ2V0LCB0aGlzIG1ldGhvZCB3aWxsIHRocm93IGFuCi0gZXhjZXB0aW9uLgotIEBlbmQgZGVm bWV0aG9kCi0gCi0tQGRlZm1ldGhvZCBUeXBlIHRlbXBsYXRlX2FyZ3VtZW50IG4KLStAZGVmbWV0 aG9kIFR5cGUgdGVtcGxhdGVfYXJndW1lbnQgbiBbYmxvY2tdCi0gSWYgdGhpcyBAY29kZXtnZGIu VHlwZX0gaXMgYW4gaW5zdGFudGlhdGlvbiBvZiBhIHRlbXBsYXRlLCB0aGlzIHdpbGwKLSByZXR1 cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgdGhl Ci0gQHZhcntufXRoIHRlbXBsYXRlIGFyZ3VtZW50LgotQEAgLTE5OTk2LDcgKzIwMDU0LDggQEAg cmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0eXBlIG9m IHRoZQotIElmIHRoaXMgQGNvZGV7Z2RiLlR5cGV9IGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUsIHRo aXMgd2lsbCB0aHJvdyBhbgotIGV4Y2VwdGlvbi4gIE9yZGluYXJpbHksIG9ubHkgQ0B0eysrfSBj b2RlIHdpbGwgaGF2ZSB0ZW1wbGF0ZSB0eXBlcy4KLSAKLS1AdmFye25hbWV9IGlzIHNlYXJjaGVk IGZvciBnbG9iYWxseS4KLStJZiBAdmFye2Jsb2NrfSBpcyBnaXZlbiwgdGhlbiBAdmFye25hbWV9 IGlzIGxvb2tlZCB1cCBpbiB0aGF0IHNjb3BlLgotK090aGVyd2lzZSwgaXQgaXMgc2VhcmNoZWQg Zm9yIGdsb2JhbGx5LgotIEBlbmQgZGVmbWV0aG9kCi0gQGVuZCB0YWJsZQotIAotQEAgLTIwMzUw LDYgKzIwNDA5LDEyMSBAQCBpbXBvcnQgZ2RiLmxpYnN0ZGN4eC52NgotIGdkYi5saWJzdGRjeHgu djYucmVnaXN0ZXJfcHJpbnRlcnMgKGdkYi5jdXJyZW50X29iamZpbGUgKCkpCi0gQGVuZCBzbWFs bGV4YW1wbGUKLSAKLStAbm9kZSBJbmZlcmlvcnMgSW4gUHl0aG9uCi0rQHN1YnN1YnNlY3Rpb24g SW5mZXJpb3JzIEluIFB5dGhvbgotKwotK1Byb2dyYW1zIHdoaWNoIGFyZSBiZWluZyBydW4gdW5k ZXIgQHZhbHVle0dEQk59IGFyZSBjYWxsZWQgaW5mZXJpb3JzCi0rKEBweHJlZntJbmZlcmlvcnMg YW5kIFByb2dyYW1zfSkuICBQeXRob24gc2NyaXB0cyBjYW4gYWNjZXNzCi0raW5mb3JtYXRpb24g YWJvdXQgYW5kIG1hbmlwdWxhdGUgaW5mZXJpb3JzIGNvbnRyb2xsZWQgYnkgQHZhbHVle0dEQk59 Ci0rdmlhIG9iamVjdHMgb2YgdGhlIEBjb2Rle2dkYi5JbmZlcmlvcn0gY2xhc3MuCi0rCi0rVGhl IGZvbGxvd2luZyBpbmZlcmlvci1yZWxhdGVkIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIGluIHRo ZSBAY29kZXtnZGJ9Ci0rbW9kdWxlOgotKwotK0BkZWZ1biBpbmZlcmlvcnMKLStSZXR1cm4gYSB0 dXBsZSBjb250YWluaW5nIGFsbCBpbmZlcmlvciBvYmplY3RzLgotK0BlbmQgZGVmdW4KLSsKLStB IEBjb2Rle2dkYi5JbmZlcmlvcn0gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6 Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGRlZml2YXIgSW5mZXJpb3IgbnVtIAotK0lEIG9mIGluZmVy aW9yLCBhcyBhc3NpZ25lZCBieSBHREIuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2YXIgSW5m ZXJpb3IgcGlkIAotK1Byb2Nlc3MgSUQgb2YgdGhlIGluZmVyaW9yLCBhc3NpZ25lZCBieSB0aGUg dW5kZXJseWluZyBPUy4KLStAZW5kIGRlZml2YXIKLSsKLStAZGVmaXZhciBJbmZlcmlvciB3YXNf YXR0YWNoZWQKLStCb29sZWFuIHNpZ25hbGluZyB3aGV0aGVyIHRoZSBpbmZlcmlvciB3YXMgY3Jl YXRlZCB1c2luZyBgYXR0YWNoJywgb3IKLStzdGFydGVkIGJ5IEB2YWx1ZXtHREJOfSBpdHNlbGYu Ci0rQGVuZCBkZWZpdmFyCi0rQGVuZCB0YWJsZQotKwotK0EgQGNvZGV7Z2RiLkluZmVyaW9yfSBv YmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLSsKLStAdGFibGUgQGNvZGUKLStAZGVm bWV0aG9kIEluZmVyaW9yIHRocmVhZHMgCi0rVGhpcyBtZXRob2QgcmV0dXJucyBhIHR1cGxlIGhv bGRpbmcgYWxsIHRoZSB0aHJlYWRzIHdoaWNoIGFyZSB2YWxpZAotK3doZW4gaXQgaXMgY2FsbGVk LiAgSWYgdGhlcmUgYXJlIG5vIHZhbGlkIHRocmVhZHMsIHRoZSBtZXRob2Qgd2lsbAotK3JldHVy biBhbiBlbXB0eSBsaXN0LgotK0BlbmQgZGVmbWV0aG9kCi0rCi0rQGZpbmRleCBnZGIucmVhZF9t ZW1vcnkKLStAZGVmbWV0aG9kIEluZmVyaW9yIHJlYWRfbWVtb3J5IEB2YXJ7YWRkcmVzc30gQHZh cntsZW5ndGh9Ci0rUmVhZCBAdmFye2xlbmd0aH0gYnl0ZXMgb2YgbWVtb3J5IGZyb20gdGhlIGlu ZmVyaW9yLCBzdGFydGluZyBhdAotK0B2YXJ7YWRkcmVzc30uICBSZXR1cm5zIGEgYnVmZmVyIG9i amVjdCwgd2hpY2ggYmVoYXZlcyBtdWNoIGxpa2UgYW4gYXJyYXkKLStvciBhIHN0cmluZy4gSXQg Y2FuIGJlIG1vZGlmaWVkIGFuZCBnaXZlbiB0byB0aGUgQGNvZGV7Z2RiLndyaXRlX21lbW9yeX0K LStmdW5jdGlvbi4KLStAZW5kIGRlZm1ldGhvZAotKwotK0BmaW5kZXggZ2RiLndyaXRlX21lbW9y eQotK0BkZWZtZXRob2QgSW5mZXJpb3Igd3JpdGVfbWVtb3J5IEB2YXJ7YWRkcmVzc30gQHZhcnti dWZmZXJ9IEBye1t9QHZhcntsZW5ndGh9QHJ7XX0KLStXcml0ZSB0aGUgY29udGVudHMgb2YgQHZh cntidWZmZXJ9IChhIFB5dGhvbiBvYmplY3Qgd2hpY2ggc3VwcG9ydHMgdGhlCi0rYnVmZmVyIHBy b3RvY29sLCBpLmUuLCBhIHN0cmluZywgYW4gYXJyYXkgb3IgdGhlIG9iamVjdCByZXR1cm5lZCBm cm9tCi0rQGNvZGV7Z2RiLnJlYWRfbWVtb3J5fSkgdG8gdGhlIGluZmVyaW9yLCBzdGFydGluZyBh dCBAdmFye2FkZHJlc3N9LgotK0lmIGdpdmVuLCBAdmFye2xlbmd0aH0gZGV0ZXJtaW5lcyB0aGUg bnVtYmVyIG9mIGJ5dGVzIGZyb20gQHZhcntidWZmZXJ9IHRvCi0rYmUgd3JpdHRlbi4KLStAZW5k IGRlZm1ldGhvZAotKwotK0BmaW5kZXggZ2RiLnNlYXJjaF9tZW1vcnkKLStAZGVmbWV0aG9kIElu ZmVyaW9yIHNlYXJjaF9tZW1vcnkgQHZhcnthZGRyZXNzfSBAdmFye2xlbmd0aH0gQHZhcntwYXR0 ZXJufSBAcntbfUB2YXJ7c2l6ZX1AcntdfSBAcntbfUB2YXJ7bWF4X2NvdW50fUBye119Ci0rU2Vh cmNoIGEgcmVnaW9uIG9mIHRoZSBpbmZlcmlvciBtZW1vcnkgc3RhcnRpbmcgYXQgQHZhcnthZGRy ZXNzfSB3aXRoIHRoZQotK2dpdmVuIEB2YXJ7bGVuZ3RofS4gIEB2YXJ7cGF0dGVybn0gY2FuIGJl IGEgc3RyaW5nLCBhIGJ5dGUgYXJyYXksIGEgYnVmZmVyCi0rb2JqZWN0LCBhIG51bWJlciwgYSBA Y29kZXtnZGIuVmFsdWV9IG9iamVjdCAoQHB4cmVme1ZhbHVlcyBGcm9tIEluZmVyaW9yfSkKLStv ciBhIGxpc3Qgb3IgdHVwbGUgd2l0aCBlbGVtZW50cyBpbiBhbnkgY29tYmluYXRpb24gb2YgdGhv c2UgdHlwZXMuICBJZgotK0B2YXJ7c2l6ZX0gaXMgZ2l2ZW4gYW5kIGlzIG5vbi16ZXJvLCBpdCBz cGVjaWZpZXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYQotK1B5dGhvbiBzY2FsYXIgb3IgQGNvZGV7 Z2RiLlZhbHVlfSBpbiB0aGUgc2VhcmNoIHBhdHRlcm4uICBJZiBAdmFye3NpemV9IGlzCi0remVy byBvciBub3Qgc3BlY2lmaWVkLCBpdCBpcyB0YWtlbiBmcm9tIHRoZSB2YWx1ZSdzIHR5cGUgaW4g dGhlIGN1cnJlbnQKLStsYW5ndWFnZS4gIFRoaXMgaXMgdXNlZnVsIHdoZW4gb25lIHdhbnRzIHRv IHNwZWNpZnkgdGhlIHNlYXJjaCBwYXR0ZXJuIGFzCi0rYSBtaXh0dXJlIG9mIHR5cGVzLiAgTm90 ZSB0aGF0IHRoaXMgbWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IGluIHRoZSBjYXNlIG9mCi0rQy1s aWtlIGxhbmd1YWdlcyBhIHNlYXJjaCBmb3IgYW4gdW50eXBlZCAweDQyIHdpbGwgc2VhcmNoIGZv cgotK0BzYW1weyhpbnQpIDB4NDJ9IHdoaWNoIGlzIHR5cGljYWxseSBmb3VyIGJ5dGVzLiAgQHZh cnttYXhfY291bnR9IGlzIHRoZQotK2hpZ2hlc3QgbnVtYmVyIG9mIG1hdGNoZXMgdG8gc2VhcmNo IGZvci4KLStAZW5kIGRlZm1ldGhvZAotK0BlbmQgdGFibGUKLSsKLStAbm9kZSBUaHJlYWRzIElu IFB5dGhvbgotK0BzdWJzdWJzZWN0aW9uIFRocmVhZHMgSW4gUHl0aG9uCi0rCi0rUHl0aG9uIHNj cmlwdHMgY2FuIGFjY2VzcyBpbmZvcm1hdGlvbiBhYm91dCBhbmQgbWFuaXB1bGF0ZSBpbmZlcmlv ciB0aHJlYWRzCi0rY29udHJvbGxlZCBieSBAdmFsdWV7R0RCTn0gdmlhIG9iamVjdHMgb2YgdGhl IEBjb2Rle2dkYi5JbmZlcmlvclRocmVhZH0gY2xhc3MuCi0rCi0rVGhlIGZvbGxvd2luZyBpbmZl cmlvci1yZWxhdGVkIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIGluIHRoZSBAY29kZXtnZGJ9Ci0r bW9kdWxlOgotKwotK0BmaW5kZXggZ2RiLnNlbGVjdGVkX3RocmVhZAotK0BkZWZ1biBzZWxlY3Rl ZF90aHJlYWQKLStUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRocmVhZCBvYmplY3QgZm9yIHRo ZSBzZWxlY3RlZCB0aHJlYWQuICBJZiB0aGVyZQotK2lzIG5vIHNlbGVjdGVkIHRocmVhZCwgdGhp cyB3aWxsIHJldHVybiBAY29kZXtOb25lfS4KLStAZW5kIGRlZnVuCi0rCi0rQSBAY29kZXtnZGIu SW5mZXJpb3JUaHJlYWR9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgotKwot K0B0YWJsZSBAY29kZQotK0BkZWZpdmFyIEluZmVyaW9yVGhyZWFkIG51bSAKLStJRCBvZiB0aGUg dGhyZWFkLCBhcyBhc3NpZ25lZCBieSBHREIuCi0rQGVuZCBkZWZpdmFyCi0rQGVuZCB0YWJsZQot KwotK0EgQGNvZGV7Z2RiLkluZmVyaW9yVGhyZWFkfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcg bWV0aG9kczoKLSsKLStAdGFibGUgQGNvZGUKLStAZGVmbWV0aG9kIEluZmVyaW9yVGhyZWFkIGZy YW1lcwotK1JldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIGZyYW1lcyBpbiB0aGUgdGhyZWFk LgotK0BlbmQgZGVmbWV0aG9kCi0rCi0rQGRlZm1ldGhvZCBJbmZlcmlvclRocmVhZCBuZXdlc3Rf ZnJhbWUKLStSZXR1cm4gdGhlIG5ld2VzdCBmcmFtZSB0aHJlYWQncyBzdGFjay4KLStAZW5kIGRl Zm1ldGhvZAotKwotK0BkZWZtZXRob2QgSW5mZXJpb3JUaHJlYWQgc3dpdGNoX3RvX3RocmVhZCAK LStUaGlzIGNoYW5nZXMgQHZhbHVle0dEQk59J3MgY3VycmVudGx5IHNlbGVjdGVkIHRocmVhZCB0 byB0aGUgb25lIHJlcHJlc2VudGVkCi0rYnkgdGhpcyBvYmplY3QuCi0rQGVuZCBkZWZtZXRob2QK LStAZW5kIHRhYmxlCi0rCi0gQG5vZGUgQ29tbWFuZHMgSW4gUHl0aG9uCi0gQHN1YnN1YnNlY3Rp b24gQ29tbWFuZHMgSW4gUHl0aG9uCi0gCi1AQCAtMjA2MDIsNiArMjA3NzYsMTM1IEBAIHJlZ2lz dHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRoIEB2YWx1ZXtHREJOfS4gIERlcGVuZGluZyBvbiBo b3cgdGhlCi0gUHl0aG9uIGNvZGUgaXMgcmVhZCBpbnRvIEB2YWx1ZXtHREJOfSwgeW91IG1heSBu ZWVkIHRvIGltcG9ydCB0aGUKLSBAY29kZXtnZGJ9IG1vZHVsZSBleHBsaWNpdGx5LgotIAotK0Bu b2RlIFBhcmFtZXRlcnMgSW4gUHl0aG9uCi0rQHN1YnN1YnNlY3Rpb24gUGFyYW1ldGVycyBJbiBQ eXRob24KLSsKLStAY2luZGV4IHBhcmFtZXRlcnMgaW4gcHl0aG9uCi0rQGNpbmRleCBweXRob24g cGFyYW1ldGVycwotK0B0aW5kZXggZ2RiLlBhcmFtZXRlcgotK0B0aW5kZXggUGFyYW1ldGVyCi0r WW91IGNhbiBpbXBsZW1lbnQgbmV3IEB2YWx1ZXtHREJOfSBwYXJhbWV0ZXJzIHVzaW5nIFB5dGhv bi4gIEEgbmV3Ci0rcGFyYW1ldGVyIGlzIGltcGxlbWVudGVkIGFzIGFuIGluc3RhbmNlIG9mIHRo ZSBAY29kZXtnZGIuUGFyYW1ldGVyfQotK2NsYXNzLiAgUGFyYW1ldGVycyBhcmUgZXhwb3NlZCB0 byB0aGUgdXNlciB2aWEgdGhlIEBjb2Rle3NldH0gYW5kCi0rQGNvZGV7c2hvd30gY29tbWFuZHMu Ci0rCi0rQGRlZm1ldGhvZCBQYXJhbWV0ZXIgX19pbml0X18gbmFtZSBAdmFye2NvbW1hbmQtY2xh c3N9IEB2YXJ7cGFyYW1ldGVyLWNsYXNzfSBAcntbfUB2YXJ7ZW51bS1zZXF1ZW5jZX1AcntdfQot K1RoZSBvYmplY3QgaW5pdGlhbGl6ZXIgZm9yIEBjb2Rle1BhcmFtZXRlcn0gcmVnaXN0ZXJzIHRo ZSBuZXcKLStwYXJhbWV0ZXIgd2l0aCBAdmFsdWV7R0RCTn0uICBUaGlzIGluaXRpYWxpemVyIGlz IG5vcm1hbGx5IGludm9rZWQKLStmcm9tIHRoZSBzdWJjbGFzcycgb3duIEBjb2Rle19faW5pdF9f fSBtZXRob2QuCi0rCi0rQHZhcntuYW1lfSBpcyB0aGUgbmFtZSBvZiB0aGUgbmV3IHBhcmFtZXRl ci4gIElmIEB2YXJ7bmFtZX0gY29uc2lzdHMKLStvZiBtdWx0aXBsZSB3b3JkcywgdGhlbiB0aGUg aW5pdGlhbCB3b3JkcyBhcmUgbG9va2VkIGZvciBhcyBwcmVmaXgKLStjb21tYW5kcy4gIEluIHRo aXMgY2FzZSwgaWYgb25lIG9mIHRoZSBwcmVmaXggY29tbWFuZHMgZG9lcyBub3QgZXhpc3QsCi0r YW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KLSsKLStAdmFye2NvbW1hbmQtY2xhc3N9IHNob3VsZCBi ZSBvbmUgb2YgdGhlIEBzYW1we0NPTU1BTkRffSBjb25zdGFudHMKLSsoQHB4cmVme0NvbW1hbmRz IEluIFB5dGhvbn0pLiAgVGhpcyBhcmd1bWVudCB0ZWxscyBAdmFsdWV7R0RCTn0gaG93IHRvCi0r Y2F0ZWdvcml6ZSB0aGUgbmV3IHBhcmFtZXRlciBpbiB0aGUgaGVscCBzeXN0ZW0uCi0rCi0rQHZh cntwYXJhbWV0ZXItY2xhc3N9IHNob3VsZCBiZSBvbmUgb2YgdGhlIEBzYW1we1BBUkFNX30gY29u c3RhbnRzCi0rZGVmaW5lZCBiZWxvdy4gIFRoaXMgYXJndW1lbnQgdGVsbHMgQHZhbHVle0dEQk59 IHRoZSB0eXBlIG9mIHRoZSBuZXcKLStwYXJhbWV0ZXI7IHRoaXMgaW5mb3JtYXRpb24gaXMgdXNl ZCBmb3IgaW5wdXQgdmFsaWRhdGlvbiBhbmQKLStjb21wbGV0aW9uLgotKwotK0lmIEB2YXJ7cGFy YW1ldGVyLWNsYXNzfSBpcyBAY29kZXtQQVJBTV9FTlVNfSwgdGhlbgotK0B2YXJ7ZW51bS1zZXF1 ZW5jZX0gbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MuICBUaGVzZSBzdHJpbmdzCi0rcmVw cmVzZW50IHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBwYXJhbWV0ZXIuCi0rCi0rSWYgQHZh cntwYXJhbWV0ZXItY2xhc3N9IGlzIG5vdCBAY29kZXtQQVJBTV9FTlVNfSwgdGhlbiB0aGUgcHJl c2VuY2UKLStvZiBhIGZvdXJ0aCBhcmd1bWVudCB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbiB0byBi ZSB0aHJvd24uCi0rCi0rVGhlIGhlbHAgdGV4dCBmb3IgdGhlIG5ldyBwYXJhbWV0ZXIgaXMgdGFr ZW4gZnJvbSB0aGUgUHl0aG9uCi0rZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIHRoZSBwYXJhbWV0 ZXIncyBjbGFzcywgaWYgdGhlcmUgaXMgb25lLiAgSWYKLSt0aGVyZSBpcyBubyBkb2N1bWVudGF0 aW9uIHN0cmluZywgYSBkZWZhdWx0IHZhbHVlIGlzIHVzZWQuCi0rQGVuZCBkZWZtZXRob2QKLSsK LStAZGVmaXZhciBQYXJhbWV0ZXIgc2V0X2RvYwotK0lmIHRoaXMgYXR0cmlidXRlIGV4aXN0cywg YW5kIGlzIGEgc3RyaW5nLCB0aGVuIGl0cyB2YWx1ZSBpcyB1c2VkIGFzCi0rdGhlIGhlbHAgdGV4 dCBmb3IgdGhpcyBwYXJhbWV0ZXIncyBAY29kZXtzZXR9IGNvbW1hbmQuICBUaGUgdmFsdWUgaXMK LStleGFtaW5lZCB3aGVuIEBjb2Rle1BhcmFtZXRlci5fX2luaXRfX30gaXMgaW52b2tlZDsgc3Vi c2VxdWVudCBjaGFuZ2VzCi0raGF2ZSBubyBlZmZlY3QuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRl Zml2YXIgUGFyYW1ldGVyIHNob3dfZG9jCi0rSWYgdGhpcyBhdHRyaWJ1dGUgZXhpc3RzLCBhbmQg aXMgYSBzdHJpbmcsIHRoZW4gaXRzIHZhbHVlIGlzIHVzZWQgYXMKLSt0aGUgaGVscCB0ZXh0IGZv ciB0aGlzIHBhcmFtZXRlcidzIEBjb2Rle3Nob3d9IGNvbW1hbmQuICBUaGUgdmFsdWUgaXMKLStl eGFtaW5lZCB3aGVuIEBjb2Rle1BhcmFtZXRlci5fX2luaXRfX30gaXMgaW52b2tlZDsgc3Vic2Vx dWVudCBjaGFuZ2VzCi0raGF2ZSBubyBlZmZlY3QuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2 YXIgUGFyYW1ldGVyIHZhbHVlCi0rVGhlIEBjb2Rle3ZhbHVlfSBhdHRyaWJ1dGUgaG9sZHMgdGhl IHVuZGVybHlpbmcgdmFsdWUgb2YgdGhlCi0rcGFyYW1ldGVyLiAgSXQgY2FuIGJlIHJlYWQgYW5k IGFzc2lnbmVkIHRvIGp1c3QgYXMgYW55IG90aGVyCi0rYXR0cmlidXRlLiAgQHZhbHVle0dEQk59 IGRvZXMgdmFsaWRhdGlvbiB3aGVuIGFzc2lnbm1lbnRzIGFyZSBtYWRlLgotK0BlbmQgZGVmaXZh cgotKwotKwotK1doZW4gYSBuZXcgcGFyYW1ldGVyIGlzIGRlZmluZWQsIGl0cyB0eXBlIG11c3Qg YmUgc3BlY2lmaWVkLiAgVGhlCi0rYXZhaWxhYmxlIHR5cGVzIGFyZSByZXByZXNlbnRlZCBieSBj b25zdGFudHMgZGVmaW5lZCBpbiB0aGUgQGNvZGV7Z2RifQotK21vZHVsZToKLSsKLStAdGFibGUg QGNvZGUKLStAZmluZGV4IFBBUkFNX0JPT0xFQU4KLStAZmluZGV4IGdkYi5QQVJBTV9CT09MRUFO Ci0rQGl0ZW0gUEFSQU1fQk9PTEVBTgotK1RoZSB2YWx1ZSBpcyBhIHBsYWluIGJvb2xlYW4uICBU aGUgUHl0aG9uIGJvb2xlYW4gdmFsdWVzLCBAY29kZXtUcnVlfQotK2FuZCBAY29kZXtGYWxzZX0g YXJlIHRoZSBvbmx5IHZhbGlkIHZhbHVlcy4KLSsKLStAZmluZGV4IFBBUkFNX0FVVE9fQk9PTEVB TgotK0BmaW5kZXggZ2RiLlBBUkFNX0FVVE9fQk9PTEVBTgotK0BpdGVtIFBBUkFNX0FVVE9fQk9P TEVBTgotK1RoZSB2YWx1ZSBoYXMgdGhyZWUgcG9zc2libGUgc3RhdGVzOiB0cnVlLCBmYWxzZSwg YW5kIEBzYW1we2F1dG99LiAgSW4KLStQeXRob24sIHRydWUgYW5kIGZhbHNlIGFyZSByZXByZXNl bnRlZCB1c2luZyBib29sZWFuIGNvbnN0YW50cywgYW5kCi0rQHNhbXB7YXV0b30gaXMgcmVwcmVz ZW50ZWQgdXNpbmcgQGNvZGV7Tm9uZX0uCi0rCi0rQGZpbmRleCBQQVJBTV9VSU5URUdFUgotK0Bm aW5kZXggZ2RiLlBBUkFNX1VJTlRFR0VSCi0rQGl0ZW0gUEFSQU1fVUlOVEVHRVIKLStUaGUgdmFs dWUgaXMgYW4gdW5zaWduZWQgaW50ZWdlci4gIFRoZSB2YWx1ZSBvZiAwIHNob3VsZCBiZQotK2lu dGVycHJldGVkIHRvIG1lYW4gYGB1bmxpbWl0ZWQnJy4KLSsKLStAZmluZGV4IFBBUkFNX0lOVEVH RVIKLStAZmluZGV4IGdkYi5QQVJBTV9JTlRFR0VSCi0rQGl0ZW0gUEFSQU1fSU5URUdFUgotK1Ro ZSB2YWx1ZSBpcyBhIHNpZ25lZCBpbnRlZ2VyLiAgVGhlIHZhbHVlIG9mIDAgc2hvdWxkIGJlIGlu dGVycHJldGVkCi0rdG8gbWVhbiBgYHVubGltaXRlZCcnLgotKwotK0BmaW5kZXggUEFSQU1fU1RS SU5HCi0rQGZpbmRleCBnZGIuUEFSQU1fU1RSSU5HCi0rQGl0ZW0gUEFSQU1fU1RSSU5HCi0rVGhl IHZhbHVlIGlzIGEgc3RyaW5nLiAgV2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgc3RyaW5nLCBl c2NhcGVzIGFyZQotK3RyYW5zbGF0ZWQuCi0rCi0rQGZpbmRleCBQQVJBTV9TVFJJTkdfTk9FU0NB UEUKLStAZmluZGV4IGdkYi5QQVJBTV9TVFJJTkdfTk9FU0NBUEUKLStAaXRlbSBQQVJBTV9TVFJJ TkdfTk9FU0NBUEUKLStUaGUgdmFsdWUgaXMgYSBzdHJpbmcuICBXaGVuIHRoZSB1c2VyIG1vZGlm aWVzIHRoZSBzdHJpbmcsIGVzY2FwZXMgYXJlCi0rcGFzc2VkIHRocm91Z2ggdW50cmFuc2xhdGVk LgotKwotK0BmaW5kZXggUEFSQU1fT1BUSU9OQUxfRklMRU5BTUUKLStAZmluZGV4IGdkYi5QQVJB TV9PUFRJT05BTF9GSUxFTkFNRQotK0BpdGVtIFBBUkFNX09QVElPTkFMX0ZJTEVOQU1FCi0rVGhl IHZhbHVlIGlzIGEgZWl0aGVyIGEgZmlsZW5hbWUgKGEgc3RyaW5nKSwgb3IgQGNvZGV7Tm9uZX0u Ci0rCi0rQGZpbmRleCBQQVJBTV9GSUxFTkFNRQotK0BmaW5kZXggZ2RiLlBBUkFNX0ZJTEVOQU1F Ci0rQGl0ZW0gUEFSQU1fRklMRU5BTUUKLStUaGUgdmFsdWUgaXMgYSBmaWxlbmFtZSAoYSBzdHJp bmcpLgotKwotK0BmaW5kZXggUEFSQU1fWklOVEVHRVIKLStAZmluZGV4IGdkYi5QQVJBTV9aSU5U RUdFUgotK0BpdGVtIFBBUkFNX1pJTlRFR0VSCi0rVGhlIHZhbHVlIGlzIGFuIGludGVnZXIuICBU aGlzIGlzIGxpa2UgQGNvZGV7UEFSQU1fSU5URUdFUn0sIGV4Y2VwdCAwCi0raXMgaW50ZXJwcmV0 ZWQgYXMgaXRzZWxmLgotKwotK0BmaW5kZXggUEFSQU1fRU5VTQotK0BmaW5kZXggZ2RiLlBBUkFN X0VOVU0KLStAaXRlbSBQQVJBTV9FTlVNCi0rVGhlIHZhbHVlIGlzIGEgc3RyaW5nLCB3aGljaCBt dXN0IGJlIG9uZSBvZiBhIGNvbGxlY3Rpb24gc3RyaW5nCi0rY29uc3RhbnRzIHByb3ZpZGVkIHdo ZW4gdGhlIHBhcmFtZXRlciBpcyBjcmVhdGVkLgotK0BlbmQgdGFibGUKLSsKLSBAbm9kZSBGdW5j dGlvbnMgSW4gUHl0aG9uCi0gQHN1YnN1YnNlY3Rpb24gV3JpdGluZyBuZXcgY29udmVuaWVuY2Ug ZnVuY3Rpb25zCi0gCi1AQCAtMjA3MDYsNiArMjEwMDksODIgQEAgd2hpY2ggaXMgdXNlZCB0byBm b3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nfSwgZm9yIG1vcmUKLSBpbmZv cm1hdGlvbi4KLSBAZW5kIGRlZml2YXIKLSAKLStAbm9kZSBCcmVha3BvaW50cyBJbiBQeXRob24K LStAc3Vic3Vic2VjdGlvbiBNYW5pcHVsYXRpbmcgYnJlYWtwb2ludHMgdXNpbmcgUHl0aG9uCi0r Ci0rQGNpbmRleCBicmVha3BvaW50cyBpbiBweXRob24KLStAY2luZGV4IHB5dGhvbiBicmVha3Bv aW50cwotK0B0aW5kZXggZ2RiLkJyZWFrcG9pbnQKLStAdGluZGV4IEJyZWFrcG9pbnQKLStQeXRo b24gY29kZSBjYW4gbWFuaXB1bGF0ZSBicmVha3BvaW50cyB2aWEgdGhlIEBjb2Rle2dkYi5CcmVh a3BvaW50fQotK2NsYXNzLgotKwotK0BkZWZtZXRob2QgQnJlYWtwb2ludCBfX2luaXRfXyBsb2Nh dGlvbgotK0NyZWF0ZSBhIG5ldyBicmVha3BvaW50LiAgQHZhcntsb2NhdGlvbn0gaXMgYSBzdHJp bmcgbmFtaW5nIHRoZQotK2xvY2F0aW9uIG9mIHRoZSBicmVha3BvaW50LiAgVGhlIGNvbnRlbnRz IGNhbiBiZSBhbnkgbG9jYXRpb24KLStyZWNvZ25pemVkIGJ5IHRoZSBAY29kZXticmVha30gY29t bWFuZC4KLStAZW5kIGRlZm1ldGhvZAotKwotK0BkZWZtZXRob2QgQnJlYWtwb2ludCBpc192YWxp ZAotK1JldHVybiBAY29kZXtUcnVlfSBpZiB0aGlzIEBjb2Rle0JyZWFrcG9pbnR9IG9iamVjdCBp cyB2YWxpZCwKLStAY29kZXtGYWxzZX0gb3RoZXJ3aXNlLiAgQSBAY29kZXtCcmVha3BvaW50fSBv YmplY3QgY2FuIGJlY29tZSBpbnZhbGlkCi0raWYgdGhlIHVzZXIgZGVsZXRlcyB0aGUgYnJlYWtw b2ludC4gIEluIHRoaXMgY2FzZSwgdGhlIG9iamVjdCBzdGlsbAotK2V4aXN0cywgYnV0IHRoZSB1 bmRlcmx5aW5nIGJyZWFrcG9pbnQgZG9lcyBub3QuCi0rQGVuZCBkZWZtZXRob2QKLSsKLStAZGVm aXZhciBCcmVha3BvaW50IGVuYWJsZWQKLStUaGlzIGF0dHJpYnV0ZSBpcyBAY29kZXtUcnVlfSBp ZiB0aGUgYnJlYWtwb2ludCBpcyBlbmFibGVkLCBhbmQKLStAY29kZXtGYWxzZX0gb3RoZXJ3aXNl LiAgVGhpcyBhdHRyaWJ1dGUgaXMgd3JpdGFibGUuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2 YXIgQnJlYWtwb2ludCBzaWxlbnQKLStUaGlzIGF0dHJpYnV0ZSBpcyBAY29kZXtUcnVlfSBpZiB0 aGUgYnJlYWtwb2ludCBpcyBzaWxlbnQsIGFuZAotK0Bjb2Rle0ZhbHNlfSBvdGhlcndpc2UuICBU aGlzIGF0dHJpYnV0ZSBpcyB3cml0YWJsZS4KLSsKLStOb3RlIHRoYXQgYSBicmVha3BvaW50IGNh biBhbHNvIGJlIHNpbGVudCBpZiBpdCBoYXMgY29tbWFuZHMgYW5kIHRoZQotK2ZpcnN0IGNvbW1h bmQgaXMgQGNvZGV7c2lsZW50fS4gIFRoaXMgaXMgbm90IHJlcG9ydGVkIGJ5IHRoZQotK0Bjb2Rl e3NpbGVudH0gYXR0cmlidXRlLgotK0BlbmQgZGVmaXZhcgotKwotK0BkZWZpdmFyIEJyZWFrcG9p bnQgdGhyZWFkCi0rSWYgdGhlIGJyZWFrcG9pbnQgaXMgdGhyZWFkLXNwZWNpZmljLCB0aGlzIGF0 dHJpYnV0ZSBob2xkcyB0aGUgdGhyZWFkCi0raWQuICBJZiB0aGUgYnJlYWtwb2ludCBpcyBub3Qg dGhyZWFkLXNwZWNpZmljLCB0aGlzIGF0dHJpYnV0ZSBpcwotK0Bjb2Rle05vbmV9LiAgVGhpcyBh dHRyaWJ1dGUgaXMgd3JpdGFibGUuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2YXIgQnJlYWtw b2ludCBpZ25vcmVfY291bnQKLStUaGlzIGF0dHJpYnV0ZSBob2xkcyB0aGUgaWdub3JlIGNvdW50 IGZvciB0aGUgYnJlYWtwb2ludCwgYW4gaW50ZWdlci4KLStUaGlzIGF0dHJpYnV0ZSBpcyB3cml0 YWJsZS4KLStAZW5kIGRlZml2YXIKLSsKLStAZGVmaXZhciBCcmVha3BvaW50IG51bWJlcgotK1Ro aXMgYXR0cmlidXRlIGhvbGRzIHRoZSBicmVha3BvaW50J3MgbnVtYmVyIC0tIHRoZSBpZGVudGlm aWVyIHVzZWQgYnkKLSt0aGUgdXNlciB0byBtYW5pcHVsYXRlIHRoZSBicmVha3BvaW50LiAgVGhp cyBhdHRyaWJ1dGUgaXMgbm90IHdyaXRhYmxlLgotK0BlbmQgZGVmaXZhcgotKwotK0BkZWZpdmFy IEJyZWFrcG9pbnQgaGl0X2NvdW50Ci0rVGhpcyBhdHRyaWJ1dGUgaG9sZHMgdGhlIGhpdCBjb3Vu dCBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGludGVnZXIuCi0rVGhpcyBhdHRyaWJ1dGUgaXMgd3Jp dGFibGUsIGJ1dCBjdXJyZW50bHkgaXQgY2FuIG9ubHkgYmUgc2V0IHRvIHplcm8uCi0rQGVuZCBk ZWZpdmFyCi0rCi0rQGRlZml2YXIgQnJlYWtwb2ludCBsb2NhdGlvbgotK1RoaXMgYXR0cmlidXRl IGhvbGRzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYnJlYWtwb2ludCwgYXMgc3BlY2lmaWVkIGJ5Ci0r dGhlIHVzZXIuICBJdCBpcyBhIHN0cmluZy4gIFRoaXMgYXR0cmlidXRlIGlzIG5vdCB3cml0YWJs ZS4KLStAZW5kIGRlZml2YXIKLSsKLStAZGVmaXZhciBCcmVha3BvaW50IGNvbmRpdGlvbgotK1Ro aXMgYXR0cmlidXRlIGhvbGRzIHRoZSBjb25kaXRpb24gb2YgdGhlIGJyZWFrcG9pbnQsIGFzIHNw ZWNpZmllZCBieQotK3RoZSB1c2VyLiAgSXQgaXMgYSBzdHJpbmcuICBJZiB0aGVyZSBpcyBubyBj b25kaXRpb24sIHRoaXMgYXR0cmlidXRlJ3MKLSt2YWx1ZSBpcyBAY29kZXtOb25lfS4gIFRoaXMg YXR0cmlidXRlIGlzIHdyaXRhYmxlLgotK0BlbmQgZGVmaXZhcgotKwotK0BkZWZpdmFyIEJyZWFr cG9pbnQgY29tbWFuZHMKLStUaGlzIGF0dHJpYnV0ZSBob2xkcyB0aGUgY29tbWFuZHMgYXR0YWNo ZWQgdG8gdGhlIGJyZWFrcG9pbnQuICBJZgotK3RoZXJlIGFyZSBjb21tYW5kcywgdGhpcyByZXR1 cm5zIGEgc3RyaW5nIGhvbGRpbmcgYWxsIHRoZSBjb21tYW5kcywKLStzZXBhcmF0ZWQgYnkgbmV3 bGluZXMuICBJZiB0aGVyZSBhcmUgbm8gY29tbWFuZHMsIHRoaXMgYXR0cmlidXRlIGlzCi0rQGNv ZGV7Tm9uZX0uICBUaGlzIGF0dHJpYnV0ZSBpcyBub3Qgd3JpdGFibGUuCi0rQGVuZCBkZWZpdmFy Ci0rCi0gQG5vZGUgRnJhbWVzIEluIFB5dGhvbgotIEBzdWJzdWJzZWN0aW9uIEFjZXNzaW5nIGlu ZmVyaW9yIHN0YWNrIGZyYW1lcyBmcm9tIFB5dGhvbi4KLSAKLUBAIC0yMDc3MCw2ICsyMTE0OSwx NCBAQCBmdW5jdGlvbiB0byBhIHN0cmluZy4KLSBSZXR1cm5zIHRoZSBmcmFtZSdzIHJlc3VtZSBh ZGRyZXNzLgotIEBlbmQgZGVmbWV0aG9kCi0gCi0rQGRlZm1ldGhvZCBGcmFtZSBibG9jawotK1Jl dHVybnMgdGhlIGZyYW1lJ3MgY29kZSBibG9jay4gQGMgKEBweHJlZntCbG9jaywsQ29kZSBCbG9j a3MgYW5kIFNjb3Blc30pLgotK0BlbmQgZGVmbWV0aG9kCi0rCi0rQGRlZm1ldGhvZCBGcmFtZSBm dW5jdGlvbgotK1JldHVybnMgdGhlIHN5bWJvbCBmb3IgdGhlIGZ1bmN0aW9uIGNvcnJlc3BvbmRp bmcgdG8gdGhpcyBmcmFtZS4gQGMgKEBweHJlZntTeW1ib2xzIEluIFB5dGhvbn0pLgotK0BlbmQg ZGVmbWV0aG9kCi0rCi0gQGRlZm1ldGhvZCBGcmFtZSBvbGRlcgotIFJldHVybiB0aGUgZnJhbWUg dGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4KLSBAZW5kIGRlZm1ldGhvZAotQEAgLTIwNzc4LDEwICsy MTE2NSwxOCBAQCBSZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMgZnJhbWUuCi0gUmV0 dXJuIHRoZSBmcmFtZSBjYWxsZWQgYnkgdGhpcyBmcmFtZS4KLSBAZW5kIGRlZm1ldGhvZAotIAot K0BkZWZtZXRob2QgRnJhbWUgZmluZF9zYWwKLStSZXR1cm4gdGhlIGZyYW1lJ3Mgc3ltdGFiIGFu ZCBsaW5lIG9iamVjdC4gQGMgKEBweHJlZntTeW10YWJfYW5kX2xpbmUsLCBTeW10YWIgYW5kIGxp bmV9KS4KLStAZW5kIGRlZm1ldGhvZAotKwotIEBkZWZtZXRob2QgRnJhbWUgcmVhZF92YXIgdmFy aWFibGUKLSBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiB2YXJpYWJsZSBpbiB0aGlzIGZy YW1lLiAgQHZhcnt2YXJpYWJsZX0gbXVzdAotIGJlIGEgc3RyaW5nLgotIEBlbmQgZGVmbWV0aG9k Ci0rCi0rQGRlZm1ldGhvZCBGcmFtZSBzZWxlY3QKLStTZXQgdGhpcyBmcmFtZSB0byBiZSB0aGUg dXNlcidzIHNlbGVjdGVkIGZyYW1lLgotK0BlbmQgZGVmbWV0aG9kCi0gQGVuZCB0YWJsZQotIAot IEBub2RlIExhenkgU3RyaW5ncyBJbiBQeXRob24KLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYmlu dC50ZXhpbmZvIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwotaW5kZXggNzc0MTg1NS4uZGYzZmM4 NyAxMDA2NDQKLS0tLSBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2Ri aW50LnRleGluZm8KLUBAIC0yMTA3LDYgKzIxMDcsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVt cHQgdG8gaGFuZGxlIHN5bWJvbHMgaW5jcmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKLSB3ZSBj cmVhdGUgQGRmbntwYXJ0aWFsIHN5bWJvbCB0YWJsZXN9IGNvbnNpc3Rpbmcgb2Ygb25seSBzZWxl Y3RlZAotIHN5bWJvbHMsIGFuZCBvbmx5IGV4cGFuZCB0aGVtIHRvIGZ1bGwgc3ltYm9sIHRhYmxl cyB3aGVuIG5lY2Vzc2FyeS4KKy0gIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9i amZpbGUpOworLSAgY3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVy X2N1KTsKKy0gIGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAocGVyX2N1 KTsKKy0gIGN0eC0+YmF0b24gPSAmYmF0b247CistICBjdHgtPnJlYWRfcmVnID0gZHdhcmZfZXhw cl9yZWFkX3JlZzsKKy0gIGN0eC0+cmVhZF9tZW0gPSBkd2FyZl9leHByX3JlYWRfbWVtOworLSAg Y3R4LT5nZXRfZnJhbWVfYmFzZSA9IGR3YXJmX2V4cHJfZnJhbWVfYmFzZTsKKy0gIGN0eC0+Z2V0 X2ZyYW1lX2NmYSA9IGR3YXJmX2V4cHJfZnJhbWVfY2ZhOworLSAgY3R4LT5nZXRfdGxzX2FkZHJl c3MgPSBkd2FyZl9leHByX3Rsc19hZGRyZXNzOworLSAgY3R4LT5kd2FyZl9jYWxsID0gZHdhcmZf ZXhwcl9kd2FyZl9jYWxsOworLQorLSAgZHdhcmZfZXhwcl9ldmFsIChjdHgsIGRhdGEsIHNpemUp OworICAgaWYgKGN0eC0+bnVtX3BpZWNlcyA+IDApCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgcGll Y2VfY2xvc3VyZSAqYzsKK0BAIC05NTEsNiArMTEwNCwxMSBAQCBkd2FyZjJfZXZhbHVhdGVfbG9j X2Rlc2MgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCisgCSAg ICBDT1JFX0FERFIgYWRkcmVzcyA9IGR3YXJmX2V4cHJfZmV0Y2hfYWRkcmVzcyAoY3R4LCAwKTsK KyAJICAgIGludCBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2ZldGNoX2luX3N0YWNrX21l bW9yeSAoY3R4LCAwKTsKICAKLStAbWVudQotKyogU3ltYm9sIFJlYWRpbmc6OgotKyogUGFydGlh bCBTeW1ib2wgVGFibGVzOjoKLSsqIFR5cGVzOjoKLSsqIE9iamVjdCBGaWxlIEZvcm1hdHM6Ogot KyogRGVidWdnaW5nIEZpbGUgRm9ybWF0czo6Ci0rKiBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRl ciB0byBHREI6OgotKyogTWVtb3J5IE1hbmFnZW1lbnQgZm9yIFN5bWJvbCBGaWxlczo6Ci0rKiBN ZW1vcnkgTWFuYWdlbWVudCBmb3IgVHlwZXM6OgotK0BlbmQgbWVudQorKwkgICAgLyogb2JqZWN0 X2FkZHJlc3Nfc2V0IGNhbGxlZCBoZXJlIGlzIHJlcXVpcmVkIGluIEFMTE9DQVRFX1ZBTFVFJ3MK KysJICAgICAgIENIRUNLX1RZUEVERUYgZm9yIHRoZSBvYmplY3QncyBwb3NzaWJsZQorKwkgICAg ICAgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCisrCSAgICBvYmplY3RfYWRkcmVzc19z ZXQgKGFkZHJlc3MpOwogKwotK0Bub2RlIFN5bWJvbCBSZWFkaW5nCi0gQHNlY3Rpb24gU3ltYm9s IFJlYWRpbmcKLSAKLSBAY2luZGV4IHN5bWJvbCByZWFkaW5nCi1AQCAtMjE5OSw2ICsyMjExLDcg QEAgc3ltdGFiLiAgVXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91bGQgaGF2ZSBi ZWVuIHNldCB0byAxLCBhbmQKLSB6ZXJvIGlmIHRoZXJlIHdlcmUgbm8gc3ltYm9scyBpbiB0aGF0 IHBhcnQgb2YgdGhlIHN5bWJvbCBmaWxlLgotIEBlbmQgdGFibGUKLSAKLStAbm9kZSBQYXJ0aWFs IFN5bWJvbCBUYWJsZXMKLSBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBUYWJsZXMKLSAKLSBAdmFs dWV7R0RCTn0gaGFzIHRocmVlIHR5cGVzIG9mIHN5bWJvbCB0YWJsZXM6Ci1AQCAtMjI5NCw2ICsy MzA3LDcgQEAgYW5kIGFsbCB0aGUgcHN5bWJvbHMgdGhlbXNlbHZlcyBhcmUgYWxsb2NhdGVkIGlu IGEgcGFpciBvZiBsYXJnZSBhcnJheXMKLSBvbiBhbiBvYnN0YWNrLCBzbyB0aGVyZSBpcyBsaXR0 bGUgdG8gYmUgZ2FpbmVkIGJ5IHRyeWluZyB0byBmcmVlIHRoZW0KLSB1bmxlc3MgeW91IHdhbnQg dG8gZG8gYSBsb3QgbW9yZSB3b3JrLgotIAotK0Bub2RlIFR5cGVzCi0gQHNlY3Rpb24gVHlwZXMK LSAKLSBAdW5udW1iZXJlZHN1YnNlYyBGdW5kYW1lbnRhbCBUeXBlcyAoZS5nLiwgQGNvZGV7RlRf Vk9JRH0sIEBjb2Rle0ZUX0JPT0xFQU59KS4KLUBAIC0yMzE2LDYgKzIzMzAsNyBAQCB0eXBlcyBt YXAgdG8gb25lIEBjb2Rle1RZUEVfQ09ERV8qfSB0eXBlLCBhbmQgYXJlIGRpc3Rpbmd1aXNoZWQg YnkKLSBvdGhlciBtZW1iZXJzIG9mIHRoZSB0eXBlIHN0cnVjdCwgc3VjaCBhcyB3aGV0aGVyIHRo ZSB0eXBlIGlzIHNpZ25lZAotIG9yIHVuc2lnbmVkLCBhbmQgaG93IG1hbnkgYml0cyBpdCB1c2Vz LgorIAkgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworIAkgICAgVkFMVUVfTFZB TCAocmV0dmFsKSA9IGx2YWxfbWVtb3J5OworIAkgICAgc2V0X3ZhbHVlX2xhenkgKHJldHZhbCwg MSk7CitAQCAtMjU4NiwxMSArMjc0NCw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAo c3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkgZGxi YXRvbi0+cGVyX2N1KTsKKyB9CiAgCi0rQGFuY2hvcntCdWlsdGluIFR5cGVzfQotIEB1bm51bWJl cmVkc3Vic2VjIEJ1aWx0aW4gVHlwZXMgKGUuZy4sIEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwg QGNvZGV7YnVpbHRpbl90eXBlX2NoYXJ9KS4KKy0vKiBUaGUgc2V0IG9mIGxvY2F0aW9uIGZ1bmN0 aW9ucyB1c2VkIHdpdGggdGhlIERXQVJGLTIgZXhwcmVzc2lvbgorLSAgIGV2YWx1YXRvciBhbmQg bG9jYXRpb24gbGlzdHMuICAqLworKy8qIFRoZSBzZXQgb2YgbG9jYXRpb24gZnVuY3Rpb25zIHVz ZWQgd2l0aCB0aGUgRFdBUkYtMiBsb2NhdGlvbiBsaXN0cy4gICovCisgY29uc3Qgc3RydWN0IHN5 bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7CisgICBsb2NsaXN0X3Jl YWRfdmFyaWFibGUsCisgICBsb2NsaXN0X3JlYWRfbmVlZHNfZnJhbWUsCisgICBsb2NsaXN0X2Rl c2NyaWJlX2xvY2F0aW9uLAorICAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYKKyB9OworKwor K3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK21pc3NpbmdfcmVhZF92YXJpYWJsZSAoc3RydWN0IHN5 bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisreworKyAgc3RydWN0IGR3 YXJmMl9sb2NsaXN0X2JhdG9uICpkbGJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW1i b2wpOworKworKyAgZ2RiX2Fzc2VydCAoZGxiYXRvbiA9PSBOVUxMKTsKKysgIGVycm9yIChfKCJV bmFibGUgdG8gcmVzb2x2ZSB2YXJpYWJsZSBcIiVzXCIiKSwgU1lNQk9MX1BSSU5UX05BTUUgKHN5 bWJvbCkpOworK30KKysKKytzdGF0aWMgaW50CisrbWlzc2luZ19yZWFkX25lZWRzX2ZyYW1lIChz dHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCisreworKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyB2 b2lkCisrbWlzc2luZ19kZXNjcmliZV9sb2NhdGlvbiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBD T1JFX0FERFIgYWRkciwKKysJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorK3sKKysgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgXygiYSB2YXJpYWJsZSB3ZSBhcmUgdW5hYmxlIHRvIHJl c29sdmUiKSk7CisrfQorKworK3N0YXRpYyB2b2lkCisrbWlzc2luZ190cmFjZXBvaW50X3Zhcl9y ZWYgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJ ICAgIHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUpCisrewor KyAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpkbGJhdG9uID0gU1lNQk9MX0xPQ0FUSU9O X0JBVE9OIChzeW1ib2wpOworKworKyAgZ2RiX2Fzc2VydCAoZGxiYXRvbiA9PSBOVUxMKTsKKysg IGVycm9yIChfKCJVbmFibGUgdG8gcmVzb2x2ZSB2YXJpYWJsZSBcIiVzXCIiKSwgU1lNQk9MX1BS SU5UX05BTUUgKHN5bWJvbCkpOworK30KKysKKysvKiBUaGUgc2V0IG9mIGxvY2F0aW9uIGZ1bmN0 aW9ucyB1c2VkIHdpdGggdGhlIERXQVJGLTIgZXZhbHVhdG9yIHdoZW4gd2UgYXJlCisrICAgdW5h YmxlIHRvIHJlc29sdmUgdGhlIHN5bWJvbHMuICAqLworK2NvbnN0IHN0cnVjdCBzeW1ib2xfY29t cHV0ZWRfb3BzIGR3YXJmMl9taXNzaW5nX2Z1bmNzID0geworKyAgbWlzc2luZ19yZWFkX3Zhcmlh YmxlLAorKyAgbWlzc2luZ19yZWFkX25lZWRzX2ZyYW1lLAorKyAgbWlzc2luZ19kZXNjcmliZV9s b2NhdGlvbiwKKysgIG1pc3NpbmdfdHJhY2Vwb2ludF92YXJfcmVmCisrfTsKK2RpZmYgLS1naXQg YS9nZGIvZHdhcmYybG9jLmggYi9nZGIvZHdhcmYybG9jLmgKK2luZGV4IDgyNmJjNDUuLjFlN2Q4 ZGMgMTAwNjQ0CistLS0gYS9nZGIvZHdhcmYybG9jLmgKKysrKyBiL2dkYi9kd2FyZjJsb2MuaAor QEAgLTg2LDUgKzg2LDE0IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbgogIAotIFRoZXNl IGFyZSBpbnN0YW5jZXMgb2YgdHlwZSBzdHJ1Y3RzIHRoYXQgcm91Z2hseSBjb3JyZXNwb25kIHRv Ci1AQCAtMjMzMCw2ICsyMzQ1LDcgQEAgb25seSBvbmUgaW5zdGFuY2UgZXhpc3RzLCB3aGlsZSBA ZmlsZXtjLWxhbmcuY30gYnVpbGRzIGFzIG1hbnkKLSBAY29kZXtUWVBFX0NPREVfSU5UfSB0eXBl cyBhcyBuZWVkZWQsIHdpdGggZWFjaCBvbmUgYXNzb2NpYXRlZCB3aXRoCi0gc29tZSBwYXJ0aWN1 bGFyIG9iamZpbGUuCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3 YXJmMl9sb2NleHByX2Z1bmNzOworIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVk X29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jczsKKytleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9j b21wdXRlZF9vcHMgZHdhcmYyX21pc3NpbmdfZnVuY3M7CisrCisrZXh0ZXJuIHZvaWQgb2JqZWN0 X2FkZHJlc3Nfc2V0IChDT1JFX0FERFIgYWRkcmVzcyk7CisrCisrZXh0ZXJuIENPUkVfQUREUiBk d2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysgIChzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KmRsYmF0b24pOworKworK2V4dGVybiBpbnQgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsIChzdHJ1 Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmRsbGJhdG9uLAorKwkJCQkgICAgIHN0cnVjdCB0eXBl ICp0eXBlLCBDT1JFX0FERFIgKmFkZHJwKTsKICAKLStAbm9kZSBPYmplY3QgRmlsZSBGb3JtYXRz Ci0gQHNlY3Rpb24gT2JqZWN0IEZpbGUgRm9ybWF0cwotIEBjaW5kZXggb2JqZWN0IGZpbGUgZm9y bWF0cworICNlbmRpZiAvKiBkd2FyZjJsb2MuaCAqLworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJy ZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCitpbmRleCAxNjM4MWRlLi5lYzMxY2YxIDEwMDY0NAor LS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQuYworQEAgLTEwODMs NiArMTA4Myw5IEBAIHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChzdHJ1 Y3QgYXR0cmlidXRlICopOwogIAotQEAgLTI0MTUsNiArMjQzMSw3IEBAIFNPTSwgd2hpY2ggaXMg YSBjcm9zcy1sYW5ndWFnZSBBQkkpLgorIHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX2NvbnN0YW50 IChzdHJ1Y3QgYXR0cmlidXRlICopOwogIAotIFRoZSBTT00gcmVhZGVyIGlzIGluIEBmaWxle3Nv bXJlYWQuY30uCisrc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZHdhcmYyX2F0 dHJfdG9fbG9jbGlzdF9iYXRvbgorKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KTsKKysKKyBzdGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0 ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCisgCQkJCQkgc3RydWN0IHN5bWJvbCAqc3ltLAor IAkJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKK0BAIC0xMTEzLDYgKzExMTYsOSBAQCBzdGF0 aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAotK0Bub2RlIERlYnVnZ2lu ZyBGaWxlIEZvcm1hdHMKLSBAc2VjdGlvbiBEZWJ1Z2dpbmcgRmlsZSBGb3JtYXRzCisgc3RhdGlj IHZvaWQgZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAodm9pZCAqKTsKICAKLSBUaGlzIHNlY3Rp b24gZGVzY3JpYmVzIGNoYXJhY3RlcmlzdGljcyBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhh dAotQEAgLTI0ODYsNiArMjUwMyw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBv ZiBEV0FSRiAyLgotIEBjaW5kZXggU09NIGRlYnVnZ2luZyBpbmZvCi0gTGlrZSBDT0ZGLCB0aGUg U09NIGRlZmluaXRpb24gaW5jbHVkZXMgZGVidWdnaW5nIGluZm9ybWF0aW9uLgorK3N0YXRpYyB2 b2lkIGZldGNoX2RpZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5 cGUgKnR5cGUsCisrCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKworIHN0YXRpYyBzdHJ1 Y3QgdHlwZSAqc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwK KyAJCQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICopOwogIAotK0Bub2RlIEFkZGluZyBhIE5ldyBTeW1i b2wgUmVhZGVyIHRvIEdEQgotIEBzZWN0aW9uIEFkZGluZyBhIE5ldyBTeW1ib2wgUmVhZGVyIHRv IEB2YWx1ZXtHREJOfQorQEAgLTExMzIsNiArMTEzOCw5IEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9j bGVhcl9tYXJrcyAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKLSBAY2luZGV4IGFk ZGluZyBkZWJ1Z2dpbmcgaW5mbyByZWFkZXIKLUBAIC0yNTA4LDYgKzI1MjYsNyBAQCB3aWxsIG9u bHkgZXZlciBiZSBpbXBsZW1lbnRlZCBieSBvbmUgb2JqZWN0IGZpbGUgZm9ybWF0IG1heSBiZSBj YWxsZWQKLSBkaXJlY3RseS4gIFRoaXMgaW50ZXJmYWNlIHNob3VsZCBiZSBkZXNjcmliZWQgaW4g YSBmaWxlCi0gQGZpbGV7YmZkL2xpYkB2YXJ7eHl6fS5ofSwgd2hpY2ggaXMgaW5jbHVkZWQgYnkg QHZhbHVle0dEQk59LgorIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIAotK0Bub2RlIE1lbW9yeSBN YW5hZ2VtZW50IGZvciBTeW1ib2wgRmlsZXMKLSBAc2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudCBm b3IgU3ltYm9sIEZpbGVzCisrc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdh cmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbgorKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysKKyAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3 ZSBuZWVkIGZvciBEV0FSRiAyIGRlYnVnZ2luZworICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4g dHJ1ZSBpZiB3ZSBoYXZlIGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLwogIAotIE1vc3QgbWVt b3J5IGFzc29jaWF0ZWQgd2l0aCBhIGxvYWRlZCBzeW1ib2wgZmlsZSBpcyBzdG9yZWQgb24KLUBA IC0yNTE5LDEwICsyNTM4LDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2Fk ZWQgb3IgcmVsb2FkZWQuICBUaGVyZWZvcmUgb25lCi0gb2JqZmlsZSBtdXN0IG5vdCByZWZlcmVu Y2Ugc3ltYm9sIG9yIHR5cGUgZGF0YSBmcm9tIGFub3RoZXIgb2JqZmlsZTsKLSB0aGV5IGNvdWxk IGJlIHVubG9hZGVkIGF0IGRpZmZlcmVudCB0aW1lcy4KK0BAIC01NTMxLDYgKzU1NDAsMjkgQEAg cHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorICAgbmV3X3N5bWJvbCAoZGllLCB0aGlzX3R5cGUsIGN1KTsKKyB9CiAg Ci0tVXNlciBjb252ZW5pZW5jZSB2YXJpYWJsZXMsIGV0IGNldGVyYSwgaGF2ZSBhc3NvY2lhdGVk IHR5cGVzLiAgTm9ybWFsbHkKLS10aGVzZSB0eXBlcyBsaXZlIGluIHRoZSBhc3NvY2lhdGVkIG9i amZpbGUuICBIb3dldmVyLCB3aGVuIHRoZSBvYmpmaWxlCi0taXMgdW5sb2FkZWQsIHRob3NlIHR5 cGVzIGFyZSBkZWVwIGNvcGllZCB0byBnbG9iYWwgbWVtb3J5LCBzbyB0aGF0Ci0tdGhlIHZhbHVl cyBvZiB0aGUgdXNlciB2YXJpYWJsZXMgYW5kIGhpc3RvcnkgaXRlbXMgYXJlIG5vdCBsb3N0Lgot K0Bub2RlIE1lbW9yeSBNYW5hZ2VtZW50IGZvciBUeXBlcwotK0BzZWN0aW9uIE1lbW9yeSBNYW5h Z2VtZW50IGZvciBUeXBlcwotK0BjaW5kZXggbWVtb3J5IG1hbmFnZW1lbnQgZm9yIHR5cGVzCisr LyogQ3JlYXRlIGEgbmV3IGFycmF5IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5 cGUgVFlQRS4KICsKLStAZmluZGV4IFRZUEVfT0JKRklMRQotK0Bjb2Rle1RZUEVfT0JKRklMRX0g bWFjcm8gaW5kaWNhdGVzIHRoZSBjdXJyZW50IG1lbW9yeSBvd25lciBvZiB0aGUgdHlwZS4KLStO b24tQGNvZGV7TlVMTH0gdmFsdWUgaW5kaWNhdGVzIGl0IGlzIG93bmVkIGJ5IGFuIG9iamZpbGUg KHNwZWNpZmljYWxseSBieSBpdHMKLStvYnN0YWNrKSBhbmQgaW4gc3VjaCBjYXNlIHRoZSB0eXBl IHJlbWFpbnMgdmFsaWQgdGlsbCB0aGUgb2JqZmlsZSBpcyB1bmxvYWRlZAotK29yIHJlbG9hZGVk LiAgRm9yIHN1Y2ggdHlwZXMgd2l0aCBhbiBhc3NvY2lhdGVkIG9iamZpbGUgbm8gcmVmZXJlbmNl IGNvdW50aW5nCi0raXMgYmVpbmcgbWFkZS4KKysgICBNdWx0aWRpbWVuc2lvbmFsIGFycmF5cyBh cmUgaW50ZXJuYWxseSByZXByZXNlbnRlZCBhcyBhIHN0YWNrIG9mCisrICAgc2luZ2xlZGltZW5z aW9uYWwgYXJyYXlzIGJlaW5nIHJlZmVyZW5jZWQgYnkgdGhlaXIgVFlQRV9UQVJHRVRfVFlQRS4g ICovCiArCi0rVXNlciBjb252ZW5pZW5jZSB2YXJpYWJsZXMsIGV0IGNldGVyYSwgaGF2ZSBhc3Nv Y2lhdGVkIHR5cGVzLiAgTm9ybWFsbHkgdGhlc2UKLSt0eXBlcyBsaXZlIGluIHRoZSBhc3NvY2lh dGVkIG9iamZpbGUuICBIb3dldmVyLCB3aGVuIHRoZSBvYmpmaWxlIGlzIHVubG9hZGVkLAotK3Ro b3NlIHR5cGVzIGFyZSBkZWVwIGNvcGllZCB0byBnbG9iYWwgbWVtb3J5LCBzbyB0aGF0IHRoZSB2 YWx1ZXMgb2YgdGhlIHVzZXIKLSt2YXJpYWJsZXMgYW5kIGhpc3RvcnkgaXRlbXMgYXJlIG5vdCBs b3N0LiAgRHVyaW5nIHRoZSBjb3B5IHRoZXkgd2lsbCBnZXQgdGhlaXIKLStAY29kZXtUWVBFX09C SkZJTEV9IHNldCB0byBAY29kZXtOVUxMfSBhbmQgYmVjb21lIHNvLWNhbGxlZCBAZGZue3JlY2xh aW1hYmxlfQotK3R5cGVzLgorK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCisrY3JlYXRlX3NpbmdsZV9h cnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlw ZSwKKysJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorK3sKKysgIHR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlw ZSk7CiArCi0rVHlwZXMgd2l0aCBudWxsIEBjb2Rle1RZUEVfT0JKRklMRX0gY2FuIGJlIGVpdGhl ciBwZXJtYW5lbnQgdHlwZXMKLSsoQHB4cmVme0J1aWx0aW4gVHlwZXN9KSBvciByZWNsYWltYWJs ZSB0eXBlcyB3aGljaCB3aWxsIGJlIGRlYWxsb2NhdGVkIGF0IHRoZQotK2ZpcnN0IGlkbGUgQHZh bHVle0dEQk59IG1vbWVudCBpZiB0aGUgbGFzdCBvYmplY3QgcmVmZXJlbmNpbmcgdGhlbSBpcyBy ZW1vdmVkLgotK1Blcm1hbmVudCB0eXBlcyBhcmUgYWxsb2NhdGVkIGJ5IHRoZSBmdW5jdGlvbiBA Y29kZXthbGxvY190eXBlfSAoYW5kIGl0cwotK2Rlcml2YXRpb25zIGxpa2UgQGNvZGV7aW5pdF90 eXBlfSkgc3BlY2lmeWluZyBvYmpmaWxlIGFzIEBjb2Rle05VTEx9LiAgVGhlCi0rcmVjbGFpbWFi bGUgdHlwZXMgYXJlIGNyZWF0ZWQgdGhlIHNhbWUgd2F5IGJ1dCBtb3Jlb3ZlciB0aGV5IG5lZWQg dG8gaGF2ZQotK0Bjb2Rle3R5cGVfaW5pdF9ncm91cH0gY2FsbGVkIHRvIHN0YXJ0IHRoZWlyIHRy YWNraW5nIGFzIGJlaW5nIHBvc3NpYmx5Ci0rZGVhbGxvY2F0YWJsZS4KKysgIC8qIFRoZXNlIGdl bmVyaWMgdHlwZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgZmV0Y2hlZCBieQorKyAgICAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIDxtdWx0aV9mNzdfc3Vic2NyaXB0PidzIGNhbGwgb2YKKysgICAg IHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSBvbmx5IGZvciB0aGUgaW5uZXJtb3N0IGFycmF5IHR5 cGUuICAqLworKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwotK0Bm aW5kZXggZnJlZV9hbGxfdHlwZXMKLStXaGVuIEB2YWx1ZXtHREJOfSBnZXRzIGlkbGUgaXQgYWx3 YXlzIGNhbGxzIHRoZSBAY29kZXtmcmVlX2FsbF90eXBlc30gZnVuY3Rpb24KLSt3aGljaCBkZWFs bG9jYXRlcyBhbnkgdW51c2VkIHR5cGVzLiAgQWxsIHR5cGVzIGN1cnJlbnRseSBub3Qgb3duZWQg YnkgYW4KLStvYmpmaWxlIG11c3QgYmUgbWFya2VkIGFzIHVzZWQgb24gZWFjaCBAY29kZXtmcmVl X2FsbF90eXBlc30gY2FsbCBhcyB0aGV5IHdvdWxkCi0rZ2V0IGRlYWxsb2NhdGVkIGFzIHVudXNl ZCBvdGhlcndpc2UuCisrICAvKiBUaGVzZSBnZW5lcmljIHR5cGUgYXR0cmlidXRlcyBhcmUgY2hl Y2tlZCBmb3IgYWxsb2NhdGVkL2Fzc29jaWF0ZWQKKysgICAgIHZhbGlkaXR5IHdoaWxlIGFjY2Vz c2luZyBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSy4gICovCisrICBmZXRjaF9kaWVfdHlwZV9h dHRycyAoZGllLCByYW5nZV90eXBlLCBjdSk7CiArCi0rQGNvZGV7ZnJlZV9hbGxfdHlwZXN9IGF1 dG9tYXRpY2FsbHkgY2hlY2tzIGZvciBhbnkgY3Jvc3MtdHlwZSByZWZlcmVuY2VzIHN1Y2gKLSth cyB0aHJvdWdoIEBjb2Rle1RZUEVfVEFSR0VUX1RZUEV9LCBAY29kZXtUWVBFX1BPSU5URVJfVFlQ RX0gZXRjLkA6IGFuZAotK3ByZXZlbnRzIGVhcmx5IGRlYWxsb2NhdGlvbiBmb3IgYW55IHN1Y2gg ZXhpc3RpbmcgcmVmZXJlbmNlcy4gIFJlY2xhaW1hYmxlCi0rdHlwZXMgbWF5IHJlZmVyZW5jZSBh bnkgb3RoZXIgcmVjbGFpbWFibGUgdHlwZXMgb3IgZXZlbiBwZXJtYW5lbnQgdHlwZXMuICBCdXQK LStwZXJtYW5lbnQgdHlwZXMgbXVzdCBub3QgcmVmZXJlbmNlIHJlY2xhaW1hYmxlIHR5cGVzIChu b3IgYW4gb2JqZmlsZSBhc3NvY2lhdGVkCi0rdHlwZSkuCi0gCisrICByZXR1cm4gdHlwZTsKKyt9 CisrCisgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBl IERJRSBhbmQgcHV0IGl0IGluCisgICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0 aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKKyAgICBhcnJheXMuICAqLworQEAgLTU1 NDQsNyArNTU3Niw3IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdl X3R5cGUsICppbmRleF90eXBlOworICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7 CisgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOworLSAgaW50IG5kaW0gPSAwOworKyAgaW50IG5k aW0gPSAwLCBpOworICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisgICBjaGFyICpuYW1lOwog IAotIEBub2RlIExhbmd1YWdlIFN1cHBvcnQKLWRpZmYgLS1naXQgYS9nZGIvZG9jL29ic2VydmVy LnRleGkgYi9nZGIvZG9jL29ic2VydmVyLnRleGkKLWluZGV4IGRiM2QxMTQuLjc1OTIwMGYgMTAw NjQ0Ci0tLS0gYS9nZGIvZG9jL29ic2VydmVyLnRleGkKLSsrKyBiL2dkYi9kb2Mvb2JzZXJ2ZXIu dGV4aQotQEAgLTIxMyw2ICsyMTMsMTEgQEAgQnl0ZXMgZnJvbSBAdmFye2RhdGF9IHRvIEB2YXJ7 ZGF0YX0gKyBAdmFye2xlbn0gaGF2ZSBiZWVuIHdyaXR0ZW4KLSB0byB0aGUgY3VycmVudCBpbmZl cmlvciBhdCBAdmFye2FkZHJ9LgotIEBlbmQgZGVmdHlwZWZ1bgorQEAgLTU1OTcsMTcgKzU2Mjks MTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCisgICB0eXBlID0gZWxlbWVudF90eXBlOwogIAotK0BkZWZ0eXBlZnVuIHZvaWQg bWFya191c2VkICh2b2lkKQotK01hcmsgYW55IHBvc3NpYmx5IHJlY2xhaW1hYmxlIG9iamVjdHMg YXMgdXNlZCBkdXJpbmcgYSBtYXJrLWFuZC1zd2VlcCBnYXJiYWdlCi0rY29sbGVjdG9yIHBhc3Mu ICBDdXJyZW50bHkgb25seSBAY29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRl ZC4KLStAZW5kIGRlZnR5cGVmdW4KLSsKLSAgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlmaWNh dGlvbiAoaW50IEB2YXJ7c29tZWFyZ30pCi0gVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBpbnRl cm5hbCB0ZXN0aW5nLiAgRG8gbm90IHVzZS4gIAotIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9vYnNl cnZlci5leHAuCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi1mcmFtZS5jIGIvZ2RiL2R3YXJmMi1m cmFtZS5jCi1pbmRleCA5OTEwMGQ3Li41OTE1MjQ5IDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMi1m cmFtZS5jCi0rKysgYi9nZGIvZHdhcmYyLWZyYW1lLmMKLUBAIC0zOCw2ICszOCw3IEBACi0gCi0g I2luY2x1ZGUgImNvbXBsYWludHMuaCIKLSAjaW5jbHVkZSAiZHdhcmYyLWZyYW1lLmgiCi0rI2lu Y2x1ZGUgImFkZHJtYXAuaCIKLSAKLSBzdHJ1Y3QgY29tcF91bml0OworICAgaWYgKHJlYWRfYXJy YXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCistICAgIHsKKy0gICAgICBp bnQgaSA9IDA7CistCistICAgICAgd2hpbGUgKGkgPCBuZGltKQorLQl0eXBlID0gY3JlYXRlX2Fy cmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOworLSAgICB9CistICBlbHNl CistICAgIHsKKy0gICAgICB3aGlsZSAobmRpbS0tID4gMCkKKy0JdHlwZSA9IGNyZWF0ZV9hcnJh eV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlc1tuZGltXSk7CistICAgIH0KKysgICAgZm9y IChpID0gMDsgaSA8IG5kaW07IGkrKykKKysgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJh eV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKKysgIGVsc2UgLyog KHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFqb3IpICovCisrICAg IGZvciAoaSA9IG5kaW0gLSAxOyBpID49IDA7IGktLSkKKysgICAgICB0eXBlID0gY3JlYXRlX3Np bmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKICAK LUBAIC0xNTgyLDYgKzE1ODMsMTQgQEAgZHdhcmYyX2ZyYW1lX2ZpbmRfZmRlIChDT1JFX0FERFIg KnBjKQotICAgICAgIENPUkVfQUREUiBvZmZzZXQ7Ci0gICAgICAgQ09SRV9BRERSIHNlZWtfcGM7 CisgICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2Ug dGhleSBvY2N1ciBvbgorICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBh ZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQorQEAgLTYwNjEsMjkgKzYwODcsMTE0IEBAIHJl YWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9i amZpbGUpOworICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwg KmNoYXJfdHlwZTsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CistICB1bnNpZ25lZCBpbnQg bGVuZ3RoOworKyAgaW50IGxlbmd0aDsKKysKKysgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUg KG9iamZpbGUpLT5idWlsdGluX2ludDsKKysgIC8qIFJBTkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZy b20gT0JKRklMRSwgbm90IGFzIGEgcGVybWFuZW50IHR5cGUuICAqLworKyAgcmFuZ2VfdHlwZSA9 IGFsbG9jX3R5cGUgKG9iamZpbGUpOworKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFy ZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90 eXBlIChyYW5nZV90eXBlLCBpbmRleF90eXBlLCAwLCAtMSk7CisrCisrICAvKiBDL0MrKyBzaG91 bGQgcHJvYmFibHkgaGF2ZSB0aGUgbG93IGJvdW5kIDAgYnV0IEMvQysrIGRvZXMgbm90IHVzZQor KyAgICAgRFdfVEFHX3N0cmluZ190eXBlLiAgKi8KKysgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90 eXBlKSA9IDE7CiAgCi0rICAgICAgaWYgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXApCisgICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgY3UpOworLSAgaWYgKGF0 dHIpCistICAgIHsKKy0gICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7CisrICBpZiAoYXR0 ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICB7CisrICAgICAgLyogU2VjdXJp dHkgY2hlY2sgZm9yIGEgc2l6ZSBvdmVyZmxvdy4gICovCisrICAgICAgaWYgKERXX0JMT0NLIChh dHRyKS0+c2l6ZSArIDIgPCBEV19CTE9DSyAoYXR0ciktPnNpemUpCisrCVRZUEVfSElHSF9CT1VO RCAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEV4dGVuZCB0aGUgRFdBUkYgYmxvY2sgYnkg YSBuZXcgRFdfT1BfZGVyZWYvRFdfT1BfZGVyZWZfc2l6ZQorKwkgaW5zdHJ1Y3Rpb24gYXMgRFdf QVRfc3RyaW5nX2xlbmd0aCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBsb2NhdGlvbiwgbm90CisrCSBp dHMgdmFsdWUuICAqLworKyAgICAgIGVsc2UKICsJewotKwkgIGlmICghYWRkcm1hcF9maW5kIChv YmpmaWxlLT5xdWlja19hZGRybWFwLCAqcGMpKQotKwkgICAgY29udGludWU7Ci0rCX0KLSsgICAg ICAvKiBGSVhNRTogUmVhZC1pbiBvbmx5IC5kZWJ1Z19mcmFtZS8uZWhfZnJhbWUgd2l0aG91dCAu ZGVidWdfaW5mbz8gICovCi0rICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUp OworKwkgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqbGVuZ3RoX2JhdG9uID0gTlVMTDsK KysJICBzdHJ1Y3QgZHdhcmZfYmxvY2sgKmJsayA9IERXX0JMT0NLIChhdHRyKTsKICsKLSAgICAg ICBmZGVfdGFibGUgPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9mcmFtZV9vYmpmaWxl X2RhdGEpOwotICAgICAgIGlmIChmZGVfdGFibGUgPT0gTlVMTCkKLSAJY29udGludWU7Ci1kaWZm IC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBiL2dkYi9kd2FyZjJleHByLmMKLWluZGV4IGVkMjFl ZGYuLjFiMTBjYjcgMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5jCi0rKysgYi9nZGIvZHdh cmYyZXhwci5jCi1AQCAtODY4LDYgKzg2OCwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCi0gCSAgY3R4LT5pbml0aWFsaXplZCA9IDA7Ci0gCSAg Z290byBub19wdXNoOwotIAotKwljYXNlIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6Ci0rCSAg aWYgKGN0eC0+Z2V0X29iamVjdF9hZGRyZXNzID09IE5VTEwpCi0rCSAgICBlcnJvciAoXygiRFdB UkYtMiBleHByZXNzaW9uIGVycm9yOiBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIG11c3QgIgot KwkgICAgICAgICAgICJoYXZlIGEgdmFsdWUgdG8gcHVzaC4iKSk7Ci0rCSAgcmVzdWx0ID0gKGN0 eC0+Z2V0X29iamVjdF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7Ci0rCSAgYnJlYWs7CisrCSAgLyog VHVybiBhbnkgc2luZ2xlIERXX09QX3JlZyogaW50byBEV19PUF9icmVnKigwKSBidXQgY2xlYXJp bmcKKysJICAgICBEV19PUF9kZXJlZiogaW4gc3VjaCBjYXNlLiAgKi8KICsKLSAJZGVmYXVsdDoK LSAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwg b3ApOwotIAl9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHBy LmgKLWluZGV4IDQzN2NhMzkuLmY3ZmNlOTIgMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5o Ci0rKysgYi9nZGIvZHdhcmYyZXhwci5oCi1AQCAtMTAyLDEwICsxMDIsMTAgQEAgc3RydWN0IGR3 YXJmX2V4cHJfY29udGV4dAotICAgICAgVGhlIHJlc3VsdCBtdXN0IGJlIGxpdmUgdW50aWwgdGhl IGN1cnJlbnQgZXhwcmVzc2lvbiBldmFsdWF0aW9uCi0gICAgICBpcyBjb21wbGV0ZS4gICovCi0g ICB1bnNpZ25lZCBjaGFyICooKmdldF9zdWJyKSAodm9pZCAqYmF0b24sIG9mZl90IG9mZnNldCwg c2l6ZV90ICpsZW5ndGgpOwotKyNlbmRpZgotIAotICAgLyogUmV0dXJuIHRoZSBgb2JqZWN0IGFk ZHJlc3MnIGZvciBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8KLSAgIENPUkVfQUREUiAo KmdldF9vYmplY3RfYWRkcmVzcykgKHZvaWQgKmJhdG9uKTsKLS0jZW5kaWYKLSAKLSAgIC8qIFRo ZSBjdXJyZW50IGRlcHRoIG9mIGR3YXJmIGV4cHJlc3Npb24gcmVjdXJzaW9uLCB2aWEgRFdfT1Bf Y2FsbCosCi0gICAgICBEV19PUF9mYnJlZywgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcywgZXRj LiwgYW5kIHRoZSBtYXhpbXVtCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5jIGIvZ2RiL2R3 YXJmMmxvYy5jCi1pbmRleCAxYzRkMDU3Li4yMGRjYWNkIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJm MmxvYy5jCi0rKysgYi9nZGIvZHdhcmYybG9jLmMKLUBAIC00Niw2ICs0NiwxMiBAQCBzdGF0aWMg dm9pZAotIGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMs IENPUkVfQUREUiBwYywKLSAJCQkgZ2RiX2J5dGUgKipzdGFydCwgc2l6ZV90ICpsZW5ndGgpOwot IAotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKmR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0 IHR5cGUgKnR5cGUsCi0rCQkJCQkgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotKwkJ CQkJICAgICAgIGdkYl9ieXRlICpkYXRhLAotKwkJCQkJICAgICAgIHVuc2lnbmVkIHNob3J0IHNp emUsCi0rCQkJCQkgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSk7CisrCSAg aWYgKGJsay0+c2l6ZSA9PSAxICYmIGJsay0+ZGF0YVswXSA+PSBEV19PUF9yZWcwCisrCSAgICAg ICYmIGJsay0+ZGF0YVswXSA8PSBEV19PUF9yZWczMSkKKysJICAgIGxlbmd0aF9iYXRvbiA9IGR3 YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysJICBlbHNlIGlmIChibGst PnNpemUgPiAxICYmIGJsay0+ZGF0YVswXSA9PSBEV19PUF9yZWd4KQorKwkgICAgeworKwkgICAg ICBVTE9OR0VTVCB1bG9uZ2VzdDsKKysJICAgICAgY29uc3QgZ2RiX2J5dGUgKmVuZDsKICsKLSAv KiBBIGhlbHBlciBmdW5jdGlvbiBmb3IgZGVhbGluZyB3aXRoIGxvY2F0aW9uIGxpc3RzLiAgR2l2 ZW4gYQotICAgIHN5bWJvbCBiYXRvbiAoQkFUT04pIGFuZCBhIHBjIHZhbHVlIChQQyksIGZpbmQg dGhlIGFwcHJvcHJpYXRlCi0gICAgbG9jYXRpb24gZXhwcmVzc2lvbiwgc2V0ICpMT0NFWFBSX0xF TkdUSCwgYW5kIHJldHVybiBhIHBvaW50ZXIKLUBAIC0xMjEsNiArMTI3LDkgQEAgc3RydWN0IGR3 YXJmX2V4cHJfYmF0b24KLSB7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Ci0gICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIC8qIEZyb20gRFdfVEFHX3ZhcmlhYmxlJ3MgRFdfQVRf bG9jYXRpb24gKG5vdCBEV19UQUdfdHlwZSdzCi0rICAgICBEV19BVF9kYXRhX2xvY2F0aW9uKSBm b3IgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCi0rICBDT1JFX0FERFIgb2JqZWN0X2Fk ZHJlc3M7Ci0gfTsKLSAKLSAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVhdGVf bG9jX2Rlc2MuICAqLwotQEAgLTE4OSwyMiArMTk4LDMzIEBAIGR3YXJmX2V4cHJfZnJhbWVfYmFz ZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKLSAgICAgICBzeW1i YXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKLSAgICAgICAqc3RhcnQg PSBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKHN5bWJhdG9uLCBsZW5ndGgsIHBjKTsKKysJICAg ICAgZW5kID0gcmVhZF91bGViMTI4ICgmYmxrLT5kYXRhWzFdLCAmYmxrLT5kYXRhW2Jsay0+c2l6 ZV0sCisrCQkJCSAgJnVsb25nZXN0KTsKKysJICAgICAgaWYgKGVuZCA9PSAmYmxrLT5kYXRhW2Js ay0+c2l6ZV0pCisrCQlsZW5ndGhfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9u IChhdHRyLCBjdSk7CisrCSAgICB9CisrCisrCSAgaWYgKGxlbmd0aF9iYXRvbiA9PSBOVUxMKQor KwkgICAgeworKwkgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpzaXplX2F0dHI7CisrCSAgICAgIGdk Yl9ieXRlICpkYXRhOworKworKwkgICAgICBsZW5ndGhfYmF0b24gPSBvYnN0YWNrX2FsbG9jICgm Y3UtPmNvbXBfdW5pdF9vYnN0YWNrLAorKwkJCQkJICAgIHNpemVvZiAoKmxlbmd0aF9iYXRvbikp OworKwkgICAgICBsZW5ndGhfYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CisrCSAgICAgIGxl bmd0aF9iYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDI7CisrCSAgICAgIGRh dGEgPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAorKwkJCQkgICAgbGVu Z3RoX2JhdG9uLT5zaXplKTsKKysJICAgICAgbGVuZ3RoX2JhdG9uLT5kYXRhID0gZGF0YTsKKysJ ICAgICAgbWVtY3B5IChkYXRhLCBEV19CTE9DSyAoYXR0ciktPmRhdGEsIERXX0JMT0NLIChhdHRy KS0+c2l6ZSk7CisrCisrCSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhl ciB3aXRoIERXX0FUX1NUUklOR19MRU5HVEgKKysJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4g aW50ZWdlciB0byBmZXRjaC4gICovCisrCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOworKwkgICAgICBpZiAoc2l6ZV9hdHRyKQorKwkJewor KwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXplOworKwkJ ICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdID0gRFdfVU5TTkQgKHNpemVfYXR0cik7 CisrCQkgIGlmIChkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdICE9IERXX1VOU05EIChz aXplX2F0dHIpKQorKwkJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJCQkg ICAgICAgXygiRFdfQVRfc3RyaW5nX2xlbmd0aCdzIERXX0FUX2J5dGVfc2l6ZSAiCisrCQkJCSAi aW50ZWdlciBleGNlZWRzIHRoZSBieXRlIHNpemUgc3RvcmFnZSIpKTsKKysJCX0KKysJICAgICAg ZWxzZQorKwkJeworKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJl ZjsKKysJCSAgZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX09QX25vcDsKKysJ CX0KKysJICAgIH0KKysKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtp bmQKKysJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBUWVBFX1JBTkdF X0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247Cisr CSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KICAgICAgfQotLSAgZWxzZQot KyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoZnJhbWVmdW5jKSA9PSAmZHdhcmYyX2xv Y2V4cHJfZnVuY3MpCisgICBlbHNlCiAgICAgIHsKLSAgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24gKnN5bWJhdG9uOworLSAgICAgIC8qIGNoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9z aXplIGF0dHJpYnV0ZSAqLworKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFu dCAoYXR0cikpCisrCXsKKysJICAvKiBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgYSBjb25z dGFudCBhZGRyZXNzIHdoZXJlIHRoZSBsb2NhdGlvbgorKwkgICAgIHNob3VsZCBiZSByZWFkIGZy b20gLSBhdHRyX2Zvcm1faXNfYmxvY2sgaXMgZXhwZWN0ZWQgaW5zdGVhZC4gIFNlZQorKwkgICAg IERXQVJGIGZvciB0aGUgRFdfQVRfU1RSSU5HX0xFTkdUSCB2cy4gRFdfQVRfQllURV9TSVpFIGRp ZmZlcmVuY2UuCisrCSAgICAgKi8KKysJICAvKiBQQVNTVEhSVSAqLworKwl9CiArCi0gICAgICAg c3ltYmF0b24gPSBTWU1CT0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYyk7Ci0tICAgICAgaWYg KHN5bWJhdG9uICE9IE5VTEwpCi0tCXsKLS0JICAqbGVuZ3RoID0gc3ltYmF0b24tPnNpemU7Ci0t CSAgKnN0YXJ0ID0gc3ltYmF0b24tPmRhdGE7Ci0tCX0KLS0gICAgICBlbHNlCi0tCSpzdGFydCA9 IE5VTEw7Ci0rICAgICAgZ2RiX2Fzc2VydCAoc3ltYmF0b24gIT0gTlVMTCk7Ci0rICAgICAgKnN0 YXJ0ID0gc3ltYmF0b24tPmRhdGE7Ci0rICAgICAgKmxlbmd0aCA9IHN5bWJhdG9uLT5zaXplOwor ICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKy0g ICAgICBpZiAoYXR0cikKKy0gICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQg KGF0dHIpOworLSAgICAgICAgfQorKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9j ayAoYXR0cikpCisrCXsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtp bmQKKysJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBUWVBFX1JBTkdF X0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0 dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2Vf dHlwZSkgPSAxOworKwl9CisrICAgICAgZWxzZSBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29u c3RhbnQgKGF0dHIpKQorKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dl dF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKyAgICAgICBlbHNlCistICAgICAgICB7 CistICAgICAgICAgIGxlbmd0aCA9IDE7CistICAgICAgICB9CisrCVRZUEVfSElHSF9CT1VORCAo cmFuZ2VfdHlwZSkgPSAxOwogICAgICB9Ci0rICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BT IChmcmFtZWZ1bmMpID09ICZkd2FyZjJfbWlzc2luZ19mdW5jcykKLSsgICAgewotKyAgICAgIHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqc3ltYmF0b247Ci0rCi0rICAgICAgc3ltYmF0b24g PSBTWU1CT0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYyk7Ci0rICAgICAgZ2RiX2Fzc2VydCAo c3ltYmF0b24gPT0gTlVMTCk7Ci0rICAgICAgKnN0YXJ0ID0gTlVMTDsKLSsgICAgICAqbGVuZ3Ro ID0gMDsJLyogdW51c2VkICovCi0rICAgIH0KLSsgIGVsc2UKLSsgICAgaW50ZXJuYWxfZXJyb3Ig KF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICBfKCJVbnN1cHBvcnRlZCBTWU1CT0xfQ09NUFVU RURfT1BTICVwIGZvciBcIiVzXCIiKSwKLSsJCSAgICBTWU1CT0xfQ09NUFVURURfT1BTIChmcmFt ZWZ1bmMpLAotKwkJICAgIFNZTUJPTF9QUklOVF9OQU1FIChmcmFtZWZ1bmMpKTsKICAKLSAgIGlm ICgqc3RhcnQgPT0gTlVMTCkKLSAgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBmaW5kIHRoZSBmcmFt ZSBiYXNlIGZvciBcIiVzXCIuIiksCi0tCSAgIFNZTUJPTF9OQVRVUkFMX05BTUUgKGZyYW1lZnVu YykpOwotKwkgICBTWU1CT0xfUFJJTlRfTkFNRSAoZnJhbWVmdW5jKSk7Ci0gfQorLSAgaW5kZXhf dHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OworLSAgcmFuZ2VfdHlw ZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBpbmRleF90eXBlLCAxLCBsZW5ndGgpOworICAg Y2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4s IGdkYmFyY2gpOworICAgdHlwZSA9IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBl LCByYW5nZV90eXBlKTsKICAKLSAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0 ZV9sb2NfZGVzYy4gIENvbXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAtMjI3LDYgKzI0NywxNTUgQEAg ZHdhcmZfZXhwcl90bHNfYWRkcmVzcyAodm9pZCAqYmF0b24sIENPUkVfQUREUiBvZmZzZXQpCi0g ICByZXR1cm4gdGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoZGViYXRvbi0+b2JqZmlsZSwg b2Zmc2V0KTsKLSB9CitAQCAtNjMyNiw2MCArNjQzNywxMzYgQEAgcmVhZF9zdWJyYW5nZV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3Qg dHlwZSAqYmFzZV90eXBlOworICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CisgICBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyOworLSAgTE9OR0VTVCBsb3cgPSAwOworLSAgTE9OR0VTVCBoaWdoID0g LTE7CisrICBMT05HRVNUIGxvdzsKKyAgIGNoYXIgKm5hbWU7CisgICBMT05HRVNUIG5lZ2F0aXZl X21hc2s7CiAgCi0rc3RhdGljIENPUkVfQUREUgotK2R3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3Mg KHZvaWQgKmJhdG9uKQotK3sKLSsgIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uICpkZWJhdG9uID0g YmF0b247Ci0rCi0rICAvKiBUaGUgbWVzc2FnZSBpcyBzdXBwcmVzc2VkIGluIERXQVJGX0JMT0NL X0VYRUMuICAqLwotKyAgaWYgKGRlYmF0b24tPm9iamVjdF9hZGRyZXNzID09IDApCi0rICAgIGVy cm9yIChfKCJDYW5ub3QgcmVzb2x2ZSBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIGZvciBhIG1p c3Npbmcgb2JqZWN0IikpOwotKwotKyAgcmV0dXJuIGRlYmF0b24tPm9iamVjdF9hZGRyZXNzOwot K30KLSsKLSsvKiBBZGRyZXNzIG9mIHRoZSB2YXJpYWJsZSB3ZSBhcmUgY3VycmVudGx5IHJlZmVy cmluZyB0by4gIEl0IGlzIHNldCBmcm9tCi0rICAgRFdfVEFHX3ZhcmlhYmxlJ3MgRFdfQVRfbG9j YXRpb24gKG5vdCBEV19UQUdfdHlwZSdzIERXX0FUX2RhdGFfbG9jYXRpb24pIGZvcgotKyAgIERX X09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworICAgYmFzZV90eXBlID0gZGllX3R5cGUgKGRp ZSwgY3UpOworKyAgLyogUHJlc2VydmUgQkFTRV9UWVBFJ3Mgb3JpZ2luYWwgdHlwZSwganVzdCBz ZXQgaXRzIExFTkdUSC4gICovCisrICBjaGVja190eXBlZGVmIChiYXNlX3R5cGUpOworIAorICAg LyogVGhlIGRpZV90eXBlIGNhbGwgYWJvdmUgbWF5IGhhdmUgYWxyZWFkeSBzZXQgdGhlIHR5cGUg Zm9yIHRoaXMgRElFLiAgKi8KKyAgIHJhbmdlX3R5cGUgPSBnZXRfZGllX3R5cGUgKGRpZSwgY3Up OworICAgaWYgKHJhbmdlX3R5cGUpCisgICAgIHJldHVybiByYW5nZV90eXBlOworIAorLSAgaWYg KGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorLSAgICB7CistICAgICAgLyogRk9S VFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KKy0gICAg ICBsb3cgPSAxOworLSAgICB9CisrICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNl dCBmb3IgcmVhbCBiZWxvdy4gICovCisrICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUg KE5VTEwsIGJhc2VfdHlwZSwgMCwgLTEpOwogKwotK3N0YXRpYyBDT1JFX0FERFIgb2JqZWN0X2Fk ZHJlc3M7CisrICBuZWdhdGl2ZV9tYXNrID0gCisrICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9M RU5HVEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKICsKLSsvKiBDYWxsZXJz IHVzZSBvYmplY3RfYWRkcmVzc19zZXQgd2hpbGUgdGhlaXIgY2FsbGVycyB1c2UgdGhlIHJlc3Vs dCBzZXQgc28gd2UKLSsgICBjYW5ub3QgcnVuIHRoZSBjbGVhbnVwIGF0IHRoZSBsb2NhbCBibG9j ayBvZiBvdXIgZGlyZWN0IGNhbGxlci4gIFN0aWxsIHdlCi0rICAgc2hvdWxkIHJlc2V0IE9CSkVD VF9BRERSRVNTIGF0IGxlYXN0IGZvciB0aGUgbmV4dCBHREIgY29tbWFuZC4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStvYmplY3RfYWRkcmVzc19jbGVhbnVwICh2b2lkICpwcmV2X3NhdmVfdm9pZHAp Ci0rewotKyAgQ09SRV9BRERSICpwcmV2X3NhdmUgPSBwcmV2X3NhdmVfdm9pZHA7Ci0rCi0rICBv YmplY3RfYWRkcmVzcyA9ICpwcmV2X3NhdmU7Ci0rICB4ZnJlZSAocHJldl9zYXZlKTsKLSt9Ci0r Ci0rLyogU2V0IHRoZSBiYXNlIGFkZHJlc3MgLSBEV19BVF9sb2NhdGlvbiAtIG9mIGEgdmFyaWFi bGUuICBJdCBpcyBiZWluZyBsYXRlcgotKyAgIHVzZWQgdG8gZGVyaXZlIG90aGVyIG9iamVjdCBh ZGRyZXNzZXMgYnkgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4KLSsKLSsgICBJdCB3b3VsZCBi ZSB1c2VmdWwgdG8gc2FuaXR5IGNoZWNrIEFERFJFU1MgLSBzdWNoIGFzIGZvciBzb21lIG9iamVj dHMgd2l0aAotKyAgIHVuc2V0IHZhbHVlX3Jhd19hZGRyZXNzIC0gYnV0IHNvbWUgdmFsaWQgYWRk cmVzc2VzIG1heSBiZSB6ZXJvIChzdWNoIGFzIGZpcnN0Ci0rICAgb2JqZWN0cyBpbiByZWxvY2F0 YWJsZSAubyBmaWxlcykuICAqLwotKwotK3ZvaWQKLStvYmplY3RfYWRkcmVzc19zZXQgKENPUkVf QUREUiBhZGRyZXNzKQotK3sKLSsgIENPUkVfQUREUiAqcHJldl9zYXZlOwotKwotKyAgcHJldl9z YXZlID0geG1hbGxvYyAoc2l6ZW9mICpwcmV2X3NhdmUpOwotKyAgKnByZXZfc2F2ZSA9IG9iamVj dF9hZGRyZXNzOwotKyAgbWFrZV9jbGVhbnVwIChvYmplY3RfYWRkcmVzc19jbGVhbnVwLCBwcmV2 X3NhdmUpOwotKwotKyAgb2JqZWN0X2FkZHJlc3MgPSBhZGRyZXNzOwotK30KLSsKLSsvKiBFdmFs dWF0ZSBEV0FSRiBleHByZXNzaW9uIGF0IERBVEEgLi4uIERBVEEgKyBTSVpFIHdpdGggaXRzIHJl c3VsdCByZWFkYWJsZQotKyAgIGJ5IGR3YXJmX2V4cHJfZmV0Y2ggKFJFVFZBTCwgMCkuICBGUkFN RSBwYXJhbWV0ZXIgY2FuIGJlIE5VTEwgdG8gY2FsbAotKyAgIGdldF9zZWxlY3RlZF9mcmFtZSB0 byBmaW5kIGl0LiAgUmV0dXJuZWQgZHdhcmZfZXhwcl9jb250ZXh0IGZyZWVpbmcgaXMKLSsgICBw dXNoZWQgb24gdGhlIGNsZWFudXAgY2hhaW4uICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250ZXh0ICoKLStkd2FyZl9leHByX3ByZXBfY3R4IChzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsIGdkYl9ieXRlICpkYXRhLAotKwkJICAgICB1bnNpZ25lZCBzaG9ydCBzaXplLCBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCi0rewotKyAgc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dCAqY3R4OwotKyAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gYmF0b247Ci0rCi0rICBp ZiAoIWZyYW1lKQotKyAgICBmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7Ci0rCi0r ICBiYXRvbi5mcmFtZSA9IGZyYW1lOwotKyAgYmF0b24ub2JqZmlsZSA9IGR3YXJmMl9wZXJfY3Vf b2JqZmlsZSAocGVyX2N1KTsKLSsgIGJhdG9uLm9iamVjdF9hZGRyZXNzID0gb2JqZWN0X2FkZHJl c3M7Ci0rCi0rICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwotKyAgbWFrZV9jbGVh bnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotKwotKyAgY3R4LT5nZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAoYmF0b24ub2JqZmlsZSk7Ci0rICBjdHgtPmFkZHJfc2l6ZSA9IGR3 YXJmMl9wZXJfY3VfYWRkcl9zaXplIChwZXJfY3UpOwotKyAgY3R4LT5iYXRvbiA9ICZiYXRvbjsK LSsgIGN0eC0+cmVhZF9yZWcgPSBkd2FyZl9leHByX3JlYWRfcmVnOwotKyAgY3R4LT5yZWFkX21l bSA9IGR3YXJmX2V4cHJfcmVhZF9tZW07Ci0rICBjdHgtPmdldF9mcmFtZV9iYXNlID0gZHdhcmZf ZXhwcl9mcmFtZV9iYXNlOwotKyAgY3R4LT5nZXRfZnJhbWVfY2ZhID0gZHdhcmZfZXhwcl9mcmFt ZV9jZmE7Ci0rICBjdHgtPmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7 Ci0rICBjdHgtPmdldF9vYmplY3RfYWRkcmVzcyA9IGR3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3M7 Ci0rCi0rICBkd2FyZl9leHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6ZSk7Ci0rCi0rICAvKiBJdCB3 YXMgdXNlZCBvbmx5IGR1cmluZyBkd2FyZl9leHByX2V2YWwuICAqLwotKyAgY3R4LT5iYXRvbiA9 IE5VTEw7Ci0rCi0rICByZXR1cm4gY3R4OwotK30KLSsKLSsvKiBFdmFsdWF0ZSBEV0FSRiBleHBy ZXNzaW9uIGF0IERMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1Y2VzIGV4YWN0bHkgb25lCi0rICAg Q09SRV9BRERSIHJlc3VsdCBvbiB0aGUgRFdBUkYgc3RhY2sgc3RhY2suICAqLwotKwotK0NPUkVf QUREUgotK2R3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9sb2NleHByX2Jh dG9uICpkbGJhdG9uKQotK3sKLSsgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKLSsg IENPUkVfQUREUiByZXR2YWw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190byA9IG1ha2VfY2xl YW51cCAobnVsbF9jbGVhbnVwLCAwKTsKLSsKLSsgIGN0eCA9IGR3YXJmX2V4cHJfcHJlcF9jdHgg KE5VTEwsIGRsYmF0b24tPmRhdGEsIGRsYmF0b24tPnNpemUsCi0rCQkJICAgICBkbGJhdG9uLT5w ZXJfY3UpOwotKyAgaWYgKGN0eC0+bnVtX3BpZWNlcyA+IDApCi0rICAgIGVycm9yIChfKCJEV19P UF8qcGllY2UgaXMgdW5zdXBwb3J0ZWQgZm9yIERXX0ZPUk1fYmxvY2siKSk7Ci0rCi0rICByZXR2 YWwgPSBkd2FyZl9leHByX2ZldGNoIChjdHgsIDApOwotKwotKyAgaWYgKGN0eC0+bG9jYXRpb24g PT0gRFdBUkZfVkFMVUVfUkVHSVNURVIpCisrICAvKiBFeGNsdWRlIGxhbmd1YWdlX2FkYSBmcm9t IGFueSBUWVBFX0RZTkFNSUMgY29uc3RydWN0cyBiZWxvdy4gIEdEQiBBZGEKKysgICAgIHN1cHBv cnRzIGltcGxlbWVudHMgdGhlIGR5bmFtaWMgYm91bmRzIGluIGEgbm9uLURXQVJGIHdheSBhbmQg dGhlCisrICAgICBleGlzdGluZyBEV0FSRiBkeW5hbWljIGJvdW5kcyBhcmUgaW52YWxpZCwgbGVh ZGluZyB0byBtZW1vcnkgYWNjZXNzCisrICAgICBlcnJvcnMuICAqLworIAorLSAgLyogRklYTUU6 IEZvciB2YXJpYWJsZSBzaXplZCBhcnJheXMgZWl0aGVyIG9mIHRoZXNlIGNvdWxkIGJlCistICAg ICBhIHZhcmlhYmxlIHJhdGhlciB0aGFuIGEgY29uc3RhbnQgdmFsdWUuICBXZSdsbCBhbGxvdyBp dCwKKy0gICAgIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgaXQuICAqLworICAgYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CistICBpZiAoYXR0 cikKKy0gICAgbG93ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsK KysgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdl ICE9IGxhbmd1YWdlX2FkYSkKICsgICAgewotKyAgICAgIC8qIElubGluZWQgZHdhcmZfZXhwcl9y ZWFkX3JlZyBhcyB3ZSBubyBsb25nZXIgaGF2ZSB0aGUgYmF0b24uICovCi0rCi0rICAgICAgaW50 IGdkYl9yZWdudW0gPSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVtIChjdHgtPmdkYmFyY2gs IHJldHZhbCk7Ci0rICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBidWlsdGluX3R5cGUgKGN0eC0+ Z2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Ci0rICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKLSsKLSsgICAgICByZXR2YWwgPSBhZGRy ZXNzX2Zyb21fcmVnaXN0ZXIgKHR5cGUsIGdkYl9yZWdudW0sIGZyYW1lKTsKKysgICAgICBUWVBF X1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdB UkZfQkxPQ0s7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdh cmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3Up OworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZvciBz ZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAg Ki8KKysgICAgICBsb3cgPSAwOwogKyAgICB9CisrICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9h dHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAg ICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOworKyAgICAgIHN0cnVjdCBkd2FyZjJfY3Ug KnRhcmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0 cjsKICsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsKLSsgIHJldHVybiByZXR2YWw7Ci0r fQotKwotKy8qIEV2YWx1YXRlIERXQVJGIGxvY2F0aW9uIGxpc3QgYXQgRExMQkFUT04gZXhwZWN0 aW5nIGl0IHByb2R1Y2VzIGV4YWN0bHkgb25lCi0rICAgQ09SRV9BRERSIHJlc3VsdCBzdG9yZWQg dG8gKkFERFJQIG9uIHRoZSBEV0FSRiBzdGFjayBzdGFjay4gIElmIHRoZSByZXN1bHQKLSsgICBj b3VsZCBub3QgYmUgZm91bmQgcmV0dXJuIHplcm8gYW5kIGtlZXAgKkFERFJQIHVuY2hhbmdlZC4g ICovCi0rCi0raW50Ci0rZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsIChzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24gKmRsbGJhdG9uLAotKwkJCSAgc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQURE UiAqYWRkcnApCi0rewotKyAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lID0gZ2V0X3NlbGVjdGVk X2ZyYW1lIChOVUxMKTsKLSsgIGdkYl9ieXRlICpkYXRhOwotKyAgc2l6ZV90IHNpemU7Ci0rICBz dHJ1Y3QgdmFsdWUgKnZhbDsKKysgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jf c2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOworKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9j dS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7CisrICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdh cmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOwogKwotKyAg ZGF0YSA9IGZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoZGxsYmF0b24sICZzaXplLAotKwkJCQkg ICBnZXRfZnJhbWVfYWRkcmVzc19pbl9ibG9jayAoZnJhbWUpKTsKLSsgIGlmIChkYXRhID09IE5V TEwpCi0rICAgIHJldHVybiAwOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkt Pmxvdy5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOworKyAgICAgIFRZUEVf UkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAorKyAg ICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRh cmdldF9jdSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdh cmZfbG9jbGlzdC50eXBlCisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRf Y3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZv ciBzZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5n LiAgKi8KKysgICAgICBsb3cgPSAwOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBp ZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQorKwlsb3cgPSBkd2FyZjJf Z2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOworKyAgICAgIGVsc2UKKysJeworKwkg IGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKysJICAgIHsKKysJICAgICAg LyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8K KysJICAgICAgbG93ID0gMTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIC8q IEFjY29yZGluZyB0byBEV0FSRiB3ZSBzaG91bGQgYXNzdW1lIHRoZSB2YWx1ZSAwIG9ubHkgZm9y CisrCQkgTEFOR1VBR0VfQyBhbmQgTEFOR1VBR0VfQ1BMVVMuICAqLworKwkgICAgICBsb3cgPSAw OworKwkgICAgfQorKwl9CisrICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYm IChsb3cgJiBuZWdhdGl2ZV9tYXNrKSkKKysJbG93IHw9IG5lZ2F0aXZlX21hc2s7CisrICAgICAg VFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpID0gbG93OworKyAgICAgIGlmIChsb3cgPj0gMCkK KysJVFlQRV9VTlNJR05FRCAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisgCisgICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKKy0gIGlmIChhdHRyKQor KyAgaWYgKCFhdHRyIHx8ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3Jt X2lzX2NvbnN0YW50IChhdHRyKQorKwkJJiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCisgICAgIHsK Ky0gICAgICBpZiAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrMSB8fCBpc19yZWZfYXR0ciAo YXR0cikpCistICAgICAgICB7CistICAgICAgICAgIC8qIEdDQyBlbmNvZGVzIGFycmF5cyB3aXRo IHVuc3BlY2lmaWVkIG9yIGR5bmFtaWMgbGVuZ3RoCistICAgICAgICAgICAgIHdpdGggYSBEV19G T1JNX2Jsb2NrMSBhdHRyaWJ1dGUgb3IgYSByZWZlcmVuY2UgYXR0cmlidXRlLgorLSAgICAgICAg ICAgICBGSVhNRTogR0RCIGRvZXMgbm90IHlldCBrbm93IGhvdyB0byBoYW5kbGUgZHluYW1pYwor LSAgICAgICAgICAgICBhcnJheXMgcHJvcGVybHksIHRyZWF0IHRoZW0gYXMgYXJyYXlzIHdpdGgg dW5zcGVjaWZpZWQKKy0gICAgICAgICAgICAgbGVuZ3RoIGZvciBub3cuCistCistICAgICAgICAg ICAgIEZJWE1FOiBqaW1iLzIwMDMtMDktMjI6IEdEQiBkb2VzIG5vdCByZWFsbHkga25vdworLSAg ICAgICAgICAgICBob3cgdG8gaGFuZGxlIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGgKKy0g ICAgICAgICAgICAgZWl0aGVyOyB3ZSBqdXN0IHJlcHJlc2VudCB0aGVtIGFzIHplcm8tbGVuZ3Ro CistICAgICAgICAgICAgIGFycmF5cy4gIENob29zZSBhbiBhcHByb3ByaWF0ZSB1cHBlciBib3Vu ZCBnaXZlbgorLSAgICAgICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJv dmUuICAqLworLSAgICAgICAgICBoaWdoID0gbG93IC0gMTsKKy0gICAgICAgIH0KKy0gICAgICBl bHNlCistICAgICAgICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRy LCAxKTsKKysgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsK KysgICAgICAvKiBJdCBkb2VzIG5vdCBodXJ0IGJ1dCBpdCBpcyBuZWVkbGVzc2x5IGluZWZmZWN0 aXZlIGluIGNoZWNrX3R5cGVkZWYuICAqLworKyAgICAgIGlmIChhdHRyICYmIChhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpIHx8IGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpKQorKyAgICAg IAl7CisrCSAgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChyYW5nZV90eXBlKSA9IDE7 CisrCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KKysgICAgICAvKiBQYXNz IGl0IG5vdyBhcyB0aGUgcmVndWxhciBEV19BVF91cHBlcl9ib3VuZC4gICovCisrICAgIH0KICsK LSsgIHZhbCA9IGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAodHlwZSwgZnJhbWUsIGRhdGEsIHNp emUsIGRsbGJhdG9uLT5wZXJfY3UpOwotKyAgaWYgKHZhbHVlX29wdGltaXplZF9vdXQgKHZhbCkp Ci0rICAgIHJldHVybiAwOworKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRy KSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgVFlQRV9S QU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FS Rl9CTE9DSzsKKysgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdh cmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3Up OworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisrICBlbHNl IGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3Vh Z2VfYWRhKQorKyAgICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOworKyAg ICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVjdCBhdHRy aWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKICsKLSsgICphZGRycCA9IHZhbHVlX2FzX2FkZHJlc3Mg KHZhbCk7Ci0rICByZXR1cm4gMTsKLSt9CisrICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVf cmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKKysgICAgICBnZGJfYXNzZXJ0ICh0 YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOworKyAgICAgIHRhcmdldF9sb2NfYXR0 ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsK ICsKLSBzdHJ1Y3QgcGllY2VfY2xvc3VyZQotIHsKLSAgIC8qIFRoZSBudW1iZXIgb2YgcGllY2Vz IHVzZWQgdG8gZGVzY3JpYmUgdGhpcyB2YXJpYWJsZS4gICovCi1AQCAtNDAxLDQ4ICs1NzAsMzEg QEAgc3RhdGljIHN0cnVjdCBsdmFsX2Z1bmNzIHBpZWNlZF92YWx1ZV9mdW5jcyA9IHsKLSAgICBT SVpFLCB0byBmaW5kIHRoZSBjdXJyZW50IGxvY2F0aW9uIG9mIHZhcmlhYmxlIFZBUiBpbiB0aGUg Y29udGV4dAotICAgIG9mIEZSQU1FLiAgKi8KLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLS1kd2Fy ZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lLAotK2R3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJCQkgIGdkYl9ieXRlICpkYXRhLCB1bnNpZ25l ZCBzaG9ydCBzaXplLAotIAkJCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQot IHsKLSAgIHN0cnVjdCB2YWx1ZSAqcmV0dmFsOwotLSAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24g YmF0b247Ci0gICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7Ci0tICBzdHJ1Y3QgY2xl YW51cCAqb2xkX2NoYWluOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IG1ha2VfY2xl YW51cCAobnVsbF9jbGVhbnVwLCAwKTsKLSAKLSAgIGlmIChzaXplID09IDApCisrICAgICAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9E V0FSRl9MT0NMSVNUOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gu dS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKKysgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlz dF9iYXRvbiAodGFyZ2V0X2xvY19hdHRyLCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVfUkFOR0Vf REFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5cGUKKysgICAgICAgID0g ZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9EWU5BTUlDIChy YW5nZV90eXBlKSA9IDE7CisgICAgIH0KKyAgIGVsc2UKICAgICAgewotLSAgICAgIHJldHZhbCA9 IGFsbG9jYXRlX3ZhbHVlIChTWU1CT0xfVFlQRSAodmFyKSk7Ci0rICAgICAgcmV0dmFsID0gYWxs b2NhdGVfdmFsdWUgKHR5cGUpOwotICAgICAgIFZBTFVFX0xWQUwgKHJldHZhbCkgPSBub3RfbHZh bDsKLSAgICAgICBzZXRfdmFsdWVfb3B0aW1pemVkX291dCAocmV0dmFsLCAxKTsKLSAgICAgICBy ZXR1cm4gcmV0dmFsOworLSAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3Vu dCwgY3UpOworLSAgICAgIGlmIChhdHRyKQorKyAgICAgIExPTkdFU1QgaGlnaDsKKysKKysgICAg ICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQorKwloaWdoID0gZHdh cmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKysgICAgICBlbHNlCisgCXsK Ky0JICBpbnQgY291bnQgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEp OworLQkgIGhpZ2ggPSBsb3cgKyBjb3VudCAtIDE7CisrCSAgVFlQRV9ISUdIX0JPVU5EX1VOREVG SU5FRCAocmFuZ2VfdHlwZSkgPSAxOworKwkgIGhpZ2ggPSBsb3cgLSAxOworIAl9CisrICAgICAg aWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykp CisrCWhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKKysgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdl X3R5cGUpID0gaGlnaDsKICAgICAgfQogIAotLSAgYmF0b24uZnJhbWUgPSBmcmFtZTsKLS0gIGJh dG9uLm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci0tCi0tICBjdHgg PSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwotLSAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVw X2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotLQotLSAgY3R4LT5nZGJhcmNoID0gZ2V0 X29iamZpbGVfYXJjaCAoYmF0b24ub2JqZmlsZSk7Ci0tICBjdHgtPmFkZHJfc2l6ZSA9IGR3YXJm Ml9wZXJfY3VfYWRkcl9zaXplIChwZXJfY3UpOwotLSAgY3R4LT5iYXRvbiA9ICZiYXRvbjsKLS0g IGN0eC0+cmVhZF9yZWcgPSBkd2FyZl9leHByX3JlYWRfcmVnOwotLSAgY3R4LT5yZWFkX21lbSA9 IGR3YXJmX2V4cHJfcmVhZF9tZW07Ci0tICBjdHgtPmdldF9mcmFtZV9iYXNlID0gZHdhcmZfZXhw cl9mcmFtZV9iYXNlOwotLSAgY3R4LT5nZXRfZnJhbWVfY2ZhID0gZHdhcmZfZXhwcl9mcmFtZV9j ZmE7Ci0tICBjdHgtPmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7Ci0r ICBjdHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChmcmFtZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsK LSAKLS0gIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXplKTsKLSAgIGlmIChjdHgtPm51 bV9waWVjZXMgPiAwKQotICAgICB7Ci0gICAgICAgc3RydWN0IHBpZWNlX2Nsb3N1cmUgKmM7Ci0g ICAgICAgc3RydWN0IGZyYW1lX2lkIGZyYW1lX2lkID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7Ci0g Ci0gICAgICAgYyA9IGFsbG9jYXRlX3BpZWNlX2Nsb3N1cmUgKGN0eC0+bnVtX3BpZWNlcywgY3R4 LT5waWVjZXMsIGN0eC0+Z2RiYXJjaCk7Ci0tICAgICAgcmV0dmFsID0gYWxsb2NhdGVfY29tcHV0 ZWRfdmFsdWUgKFNZTUJPTF9UWVBFICh2YXIpLAotLQkJCQkJJnBpZWNlZF92YWx1ZV9mdW5jcywK LS0JCQkJCWMpOwotKyAgICAgIHJldHZhbCA9IGFsbG9jYXRlX2NvbXB1dGVkX3ZhbHVlICh0eXBl LCAmcGllY2VkX3ZhbHVlX2Z1bmNzLCBjKTsKLSAgICAgICBWQUxVRV9GUkFNRV9JRCAocmV0dmFs KSA9IGZyYW1lX2lkOworICAgLyogRHdhcmYtMiBzcGVjaWZpY2F0aW9ucyBleHBsaWNpdGx5IGFs bG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMKK0BAIC02NDIxLDIwICs2NjA4LDQxIEBAIHJl YWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorIAl9CiAgICAgIH0KLSAgIGVsc2UKLUBAIC00NTQsNyArNjA2LDcgQEAgZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKLSAJICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1l KTsKLSAJICAgIENPUkVfQUREUiBkd2FyZl9yZWdudW0gPSBkd2FyZl9leHByX2ZldGNoIChjdHgs IDApOwotIAkgICAgaW50IGdkYl9yZWdudW0gPSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVt IChhcmNoLCBkd2FyZl9yZWdudW0pOwotLQkgICAgcmV0dmFsID0gdmFsdWVfZnJvbV9yZWdpc3Rl ciAoU1lNQk9MX1RZUEUgKHZhciksIGdkYl9yZWdudW0sIGZyYW1lKTsKLSsJICAgIHJldHZhbCA9 IHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHR5cGUsIGdkYl9yZWdudW0sIGZyYW1lKTsKLSAJICB9Ci0g CSAgYnJlYWs7CiAgCi1AQCAtNDYzLDcgKzYxNSwxMiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rl c2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotIAkgICAg Q09SRV9BRERSIGFkZHJlc3MgPSBkd2FyZl9leHByX2ZldGNoIChjdHgsIDApOwotIAkgICAgaW50 IGluX3N0YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5IChjdHgs IDApOworLSAgbmVnYXRpdmVfbWFzayA9CistICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5H VEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKKy0gIGlmICghVFlQRV9VTlNJ R05FRCAoYmFzZV90eXBlKSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykpCistICAgIGxvdyB8PSBu ZWdhdGl2ZV9tYXNrOworLSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdo ICYgbmVnYXRpdmVfbWFzaykpCistICAgIGhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKKysgIC8qIERX X0FUX2JpdF9zdHJpZGUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkIGFzIHdlIGNvdW50IGluIGJ5 dGVzLiAgKi8KKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwg Y3UpOworKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFu Z3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5E X0RXQVJGX0JMT0NLOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVf c3RyaWRlLnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRv biAoYXR0ciwgY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAg ICB9CisrICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3Vh Z2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJn ZXRfZGllOworKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAg IHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKICAKLS0JICAgIHJldHZhbCA9IGFs bG9jYXRlX3ZhbHVlIChTWU1CT0xfVFlQRSAodmFyKSk7Ci0rCSAgICAvKiBvYmplY3RfYWRkcmVz c19zZXQgY2FsbGVkIGhlcmUgaXMgcmVxdWlyZWQgaW4gQUxMT0NBVEVfVkFMVUUncwotKwkgICAg ICAgQ0hFQ0tfVFlQRURFRiBmb3IgdGhlIG9iamVjdCdzIHBvc3NpYmxlCi0rCSAgICAgICBEV19P UF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8KLSsJICAgIG9iamVjdF9hZGRyZXNzX3NldCAoYWRk cmVzcyk7Ci0rCi0rCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0gCSAgICBW QUxVRV9MVkFMIChyZXR2YWwpID0gbHZhbF9tZW1vcnk7Ci0gCSAgICBzZXRfdmFsdWVfbGF6eSAo cmV0dmFsLCAxKTsKLSAJICAgIGlmIChpbl9zdGFja19tZW1vcnkpCi1AQCAtNDc4LDEwICs2MzUs MTAgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJICAgIGJmZF9ieXRlICpjb250ZW50czsKLSAJICAgIHNp emVfdCBuID0gY3R4LT5hZGRyX3NpemU7Ci0gCi0tCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1 ZSAoU1lNQk9MX1RZUEUgKHZhcikpOwotKwkgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHR5 cGUpOwotIAkgICAgY29udGVudHMgPSB2YWx1ZV9jb250ZW50c19yYXcgKHJldHZhbCk7Ci0tCSAg ICBpZiAobiA+IFRZUEVfTEVOR1RIIChTWU1CT0xfVFlQRSAodmFyKSkpCi0tCSAgICAgIG4gPSBU WVBFX0xFTkdUSCAoU1lNQk9MX1RZUEUgKHZhcikpOwotKwkgICAgaWYgKG4gPiBUWVBFX0xFTkdU SCAodHlwZSkpCi0rCSAgICAgIG4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCSAgICBzdG9yZV91 bnNpZ25lZF9pbnRlZ2VyIChjb250ZW50cywgbiwKLSAJCQkJICAgIGdkYmFyY2hfYnl0ZV9vcmRl ciAoY3R4LT5nZGJhcmNoKSwKLSAJCQkJICAgIHZhbHVlKTsKLUBAIC00OTMsMTAgKzY1MCwxMCBA QCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLAotIAkgICAgYmZkX2J5dGUgKmNvbnRlbnRzOwotIAkgICAgc2l6ZV90 IG4gPSBjdHgtPmxlbjsKLSAKLS0JICAgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlIChTWU1CT0xf VFlQRSAodmFyKSk7Ci0rCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0gCSAg ICBjb250ZW50cyA9IHZhbHVlX2NvbnRlbnRzX3JhdyAocmV0dmFsKTsKLS0JICAgIGlmIChuID4g VFlQRV9MRU5HVEggKFNZTUJPTF9UWVBFICh2YXIpKSkKLS0JICAgICAgbiA9IFRZUEVfTEVOR1RI IChTWU1CT0xfVFlQRSAodmFyKSk7Ci0rCSAgICBpZiAobiA+IFRZUEVfTEVOR1RIICh0eXBlKSkK LSsJICAgICAgbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAJICAgIG1lbWNweSAoY29udGVudHMs IGN0eC0+ZGF0YSwgbik7Ci0gCSAgfQotIAkgIGJyZWFrOwotQEAgLTcyMCw4ICs4NzcsOCBAQCBs b2NleHByX3JlYWRfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQotIHsKLSAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZGxiYXRv biA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltYm9sKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdmFs OwotLSAgdmFsID0gZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzeW1ib2wsIGZyYW1lLCBkbGJh dG9uLT5kYXRhLCBkbGJhdG9uLT5zaXplLAotLQkJCQkgIGRsYmF0b24tPnBlcl9jdSk7Ci0rICB2 YWwgPSBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKFNZTUJPTF9UWVBFIChzeW1ib2wpLCBmcmFt ZSwgZGxiYXRvbi0+ZGF0YSwKLSsJCQkJICBkbGJhdG9uLT5zaXplLCBkbGJhdG9uLT5wZXJfY3Up OworLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxv dywgaGlnaCk7CisrICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGll LCBhdHRyLCAmdGFyZ2V0X2N1KTsKKysgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZp bGUgPT0gY3UtPm9iamZpbGUpOworKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRy ICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKICAKLSAgIHJldHVybiB2 YWw7Ci0gfQotQEAgLTg0NCw3ICsxMDAxLDcgQEAgbG9jbGlzdF9yZWFkX3ZhcmlhYmxlIChzdHJ1 Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgICAgICBzZXRf dmFsdWVfb3B0aW1pemVkX291dCAodmFsLCAxKTsKLSAgICAgfQotICAgZWxzZQotLSAgICB2YWwg PSBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN5bWJvbCwgZnJhbWUsIGRhdGEsIHNpemUsCi0r ICAgIHZhbCA9IGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoU1lNQk9MX1RZUEUgKHN5bWJvbCks IGZyYW1lLCBkYXRhLCBzaXplLAotIAkJCQkgICAgZGxiYXRvbi0+cGVyX2N1KTsKKy0gIC8qIE1h cmsgYXJyYXlzIHdpdGggZHluYW1pYyBsZW5ndGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5z cGVjaWZpZWQKKy0gICAgIGxlbmd0aC4gIEdEQiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0 IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVudGVkIGF0CistICAgICBsZWFzdCBhbGxvdyBhY2Nlc3Np bmcgdGhlIGFycmF5IGVsZW1lbnRzLiAgKi8KKy0gIGlmIChhdHRyICYmIGF0dHItPmZvcm0gPT0g RFdfRk9STV9ibG9jazEpCistICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5 cGUpID0gMTsKKysgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlk ZS5raW5kCisrICAgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKKysgICAg ICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xp c3QubG9jbGlzdAorKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJn ZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90 eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUKKysgICAgICAgID0gZGllX3R5 cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90 eXBlKSA9IDE7CisrICAgIH0KKysgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0 YW50IChhdHRyKSkKKysgICAgeworKyAgICAgIFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUp ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKysgICAgICBpZiAo VFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPT0gMCkKKysJY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLAorKwkJICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1 cHBvcnRlZCB2YWx1ZSAwIikpOworKyAgICB9CiAgCi0gICByZXR1cm4gdmFsOwotQEAgLTg2OCw3 ICsxMDI1LDcgQEAgc3RhdGljIGludAotIGxvY2xpc3RfZGVzY3JpYmVfbG9jYXRpb24gKHN0cnVj dCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSB7Ci0gICAvKiBGSVhN RTogQ291bGQgcHJpbnQgdGhlIGVudGlyZSBsaXN0IG9mIGxvY2F0aW9ucy4gICovCi0tICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICJhIHZhcmlhYmxlIHdpdGggbXVsdGlwbGUgbG9jYXRpb25z Iik7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIF8oImEgdmFyaWFibGUgd2l0aCBtdWx0 aXBsZSBsb2NhdGlvbnMiKSk7Ci0gICByZXR1cm4gMTsKKyAgIG5hbWUgPSBkd2FyZjJfbmFtZSAo ZGllLCBjdSk7CisgICBpZiAobmFtZSkKK0BAIC04NzE0LDEwICs4OTIyLDEyIEBAIHZhcl9kZWNv ZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwK KyAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVtb3J5IGxvY2F0 aW9uIGlzCisgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9jaywgZXRjLiku ICBUaGVuIGFnYWluLCBpdCBtaWdodAorICAgICAgbm90IGJlIHdvcnRod2hpbGUuICBJJ20gYXNz dW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKKy0gICAgIG9yIG1lbW9yeSBu dW1iZXJzIHNob3cgbWUgb3RoZXJ3aXNlLiAgKi8KKysgICAgIG9yIG1lbW9yeSBudW1iZXJzIHNo b3cgbWUgb3RoZXJ3aXNlLgorKyAgICAgCisrICAgICBTWU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVy cmlkZW4gYnkgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KKyAKKy0gIGR3YXJmMl9z eW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7CisgICBTWU1CT0xfQ0xBU1MgKHN5 bSkgPSBMT0NfQ09NUFVURUQ7CisrICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKGF0dHIs IHN5bSwgY3UpOwogIH0KICAKLUBAIC04ODQsMTYgKzEwNDEsNTYgQEAgbG9jbGlzdF90cmFjZXBv aW50X3Zhcl9yZWYgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCisgLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZp Z3VyZSBvdXQgaWYgd2UgbmVlZAorQEAgLTg3NDgsNiArODk1OCw4IEBAIG5ld19zeW1ib2wgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCisgCQkJCQkgICAgIHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOworICAgICAgIE9CSlNUQVQg KG9iamZpbGUsIG5fc3ltcysrKTsKKyAgICAgICBtZW1zZXQgKHN5bSwgMCwgc2l6ZW9mIChzdHJ1 Y3Qgc3ltYm9sKSk7CisrICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNr aW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLworKyAgICAgIFNZTUJPTF9DT01Q VVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7CisgCisgICAgICAgLyogQ2Fj aGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBh bnkpLiAgKi8KKyAgICAgICBTWU1CT0xfTEFOR1VBR0UgKHN5bSkgPSBjdS0+bGFuZ3VhZ2U7CitA QCAtOTM3OSw2ICs5NTkxLDkgQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICAgIGJyZWFrOworICAgICB9CiAgCi0gICBkYXRh ID0gZmluZF9sb2NhdGlvbl9leHByZXNzaW9uIChkbGJhdG9uLCAmc2l6ZSwgYXgtPnNjb3BlKTsK LSAgIGlmIChkYXRhID09IE5VTEwpCi0tICAgIGVycm9yIChfKCJWYXJpYWJsZSBcIiVzXCIgaXMg bm90IGF2YWlsYWJsZS4iKSwgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltYm9sKSk7Ci0rICAgIGVy cm9yIChfKCJWYXJpYWJsZSBcIiVzXCIgaXMgbm90IGF2YWlsYWJsZS4iKSwgU1lNQk9MX1BSSU5U X05BTUUgKHN5bWJvbCkpOworKyAgaWYgKHRoaXNfdHlwZSkKKysgICAgZmluYWxpemVfdHlwZSAo dGhpc190eXBlKTsKKysKKyAgIHJldHVybiB0aGlzX3R5cGU7CisgfQogIAotICAgZHdhcmYyX3Ry YWNlcG9pbnRfdmFyX3JlZiAoc3ltYm9sLCBnZGJhcmNoLCBheCwgdmFsdWUsIGRhdGEsIHNpemUp OworQEAgLTExOTgzLDY3ICsxMjE5OCwxMDIgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1 Y3QgYXR0cmlidXRlICphdHRyKQorICAgICB9CiAgfQogIAotLS8qIFRoZSBzZXQgb2YgbG9jYXRp b24gZnVuY3Rpb25zIHVzZWQgd2l0aCB0aGUgRFdBUkYtMiBleHByZXNzaW9uCi0tICAgZXZhbHVh dG9yIGFuZCBsb2NhdGlvbiBsaXN0cy4gICovCi0rLyogVGhlIHNldCBvZiBsb2NhdGlvbiBmdW5j dGlvbnMgdXNlZCB3aXRoIHRoZSBEV0FSRi0yIGxvY2F0aW9uIGxpc3RzLiAgKi8KLSBjb25zdCBz dHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKLSAgIGxv Y2xpc3RfcmVhZF92YXJpYWJsZSwKLSAgIGxvY2xpc3RfcmVhZF9uZWVkc19mcmFtZSwKLSAgIGxv Y2xpc3RfZGVzY3JpYmVfbG9jYXRpb24sCi0gICBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZgot IH07Cistc3RhdGljIHZvaWQKKy1kd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKKy0JCQkgICAgIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorKy8qIENvbnZlcnQgRFdfQkxPQ0sgaW50byBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24uICBBVFRSIG11c3QgYmUgYSBEV19CTE9DSworKyAgIGF0dHJpYnV0ZSB0eXBlLiAg Ki8KICsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLSttaXNzaW5nX3JlYWRfdmFyaWFibGUgKHN0 cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotK3sKLSsgIHN0 cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZGxiYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRP TiAoc3ltYm9sKTsKKytzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICoKKytkd2Fy ZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKKyB7CistICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChh dHRyKQorLSAgICAgIC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhl IG9mZnNldCBtYXkgYmUgb3V0c2lkZQorLQkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJv dWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCistCSBvdGhlciBicmFuY2guICAqLworLSAgICAg ICYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpCistICAg IHsKKy0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOworKyAgc3RydWN0 IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKKyAKKy0gICAgICBiYXRvbiA9IG9ic3RhY2tf YWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorLQkJCSAgICAgc2l6ZW9mIChz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKKy0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3Ut PnBlcl9jdTsKKy0gICAgICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKKysgIGdkYl9hc3Nl cnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpOworIAorLSAgICAgIGR3YXJmMl9yZWFkX3Nl Y3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKy0JCQkgICAmZHdhcmYyX3Blcl9v YmpmaWxlLT5sb2MpOworKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywgc2l6ZW9mICgqYmF0b24pKTsKKysgIGJhdG9uLT5wZXJfY3UgPSBjdS0+ cGVyX2N1OworKyAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7CisgCistICAgICAgLyogV2Ug ZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3 ZQorLQkgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBvZiB0aGUgc2VjdGlvbi4gICovCistICAgICAg YmF0b24tPnNpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmxvYy5zaXplIC0gRFdfVU5TTkQgKGF0 dHIpOworLSAgICAgIGJhdG9uLT5kYXRhID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVy ICsgRFdfVU5TTkQgKGF0dHIpOworLSAgICAgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFz ZV9hZGRyZXNzOworLSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQorLQljb21wbGFpbnQg KCZzeW1maWxlX2NvbXBsYWludHMsCistCQkgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91 dCBzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOworKyAgLyogTm90ZSB0aGF0IHdl J3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKKysgICAgIGhlcmUsIG5v dCB0aGUgYWN0dWFsIGRhdGEuICBXZSdyZSBzdGlsbCBwb2ludGluZyBpbnRvIHRoZQorKyAgICAg aW5mb19idWZmZXIgZm9yIFNZTSdzIG9iamZpbGU7IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNl CisrICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhp cyBtYXkKKysgICAgIG5lZWQgdG8gY2hhbmdlLiAgKi8KKysgIGJhdG9uLT5zaXplID0gRFdfQkxP Q0sgKGF0dHIpLT5zaXplOworKyAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7 CisrICBnZGJfYXNzZXJ0IChiYXRvbi0+c2l6ZSA9PSAwIHx8IGJhdG9uLT5kYXRhICE9IE5VTEwp OwogKwotKyAgZ2RiX2Fzc2VydCAoZGxiYXRvbiA9PSBOVUxMKTsKLSsgIGVycm9yIChfKCJVbmFi bGUgdG8gcmVzb2x2ZSB2YXJpYWJsZSBcIiVzXCIiKSwgU1lNQk9MX1BSSU5UX05BTUUgKHN5bWJv bCkpOworKyAgcmV0dXJuIGJhdG9uOwogK30KLSsKLStzdGF0aWMgaW50Ci0rbWlzc2luZ19yZWFk X25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCisgCisrc3RhdGljIHN0cnVjdCBk d2FyZjJfbG9jbGlzdF9iYXRvbiAqCisrZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiArewotKyAgcmV0dXJu IDA7Ci0rfQorKyAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbjsKICsKLStzdGF0 aWMgaW50Ci0rbWlzc2luZ19kZXNjcmliZV9sb2NhdGlvbiAoc3RydWN0IHN5bWJvbCAqc3ltYm9s LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgXygiYSB2YXJpYWJsZSB3ZSBhcmUgdW5hYmxlIHRvIHJlc29sdmUiKSk7Ci0rICByZXR1cm4g MTsKLSt9CisrICAvKiBEV19BVF9sb2NhdGlvbiBvZiB0aGUgcmVmZXJlbmNlZCBESUUgbWF5IGJl IG1pc3NpbmcgaWYgdGhlIHJlZmVyZW5jZWQKKysgICAgIHZhcmlhYmxlIGhhcyBiZWVuIG9wdGlt aXplZCBvdXQuICAqLworKyAgaWYgKCFhdHRyKQorKyAgICByZXR1cm4gTlVMTDsKICsKLStzdGF0 aWMgdm9pZAotK21pc3NpbmdfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1i b2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCSAgICBzdHJ1Y3QgYWdlbnRfZXhwciAq YXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKQotK3sKLSsgIHN0cnVjdCBkd2FyZjJfbG9jbGlz dF9iYXRvbiAqZGxiYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltYm9sKTsKKysgIGR3 YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKysJCSAgICAg ICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwogKwotKyAgZ2RiX2Fzc2VydCAoZGxiYXRvbiA9 PSBOVUxMKTsKLSsgIGVycm9yIChfKCJVbmFibGUgdG8gcmVzb2x2ZSB2YXJpYWJsZSBcIiVzXCIi KSwgU1lNQk9MX1BSSU5UX05BTUUgKHN5bWJvbCkpOwotK30KKysgIGlmICghKGF0dHJfZm9ybV9p c19zZWN0aW9uX29mZnNldCAoYXR0cikKKysJLyogIi5kZWJ1Z19sb2MiIG1heSBub3QgZXhpc3Qg YXQgYWxsLCBvciB0aGUgb2Zmc2V0IG1heSBiZSBvdXRzaWRlCisrCSAgIHRoZSBzZWN0aW9uLiAg SWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGluIHRoZQorKwkgICBvdGhlciBi cmFuY2guICAqLworKwkmJiBEV19VTlNORCAoYXR0cikgPCBkd2FyZjJfcGVyX29iamZpbGUtPmxv Yy5zaXplKSkKKysgICAgcmV0dXJuIE5VTEw7CiArCi0rLyogVGhlIHNldCBvZiBsb2NhdGlvbiBm dW5jdGlvbnMgdXNlZCB3aXRoIHRoZSBEV0FSRi0yIGV2YWx1YXRvciB3aGVuIHdlIGFyZQotKyAg IHVuYWJsZSB0byByZXNvbHZlIHRoZSBzeW1ib2xzLiAgKi8KLStjb25zdCBzdHJ1Y3Qgc3ltYm9s X2NvbXB1dGVkX29wcyBkd2FyZjJfbWlzc2luZ19mdW5jcyA9IHsKLSsgIG1pc3NpbmdfcmVhZF92 YXJpYWJsZSwKLSsgIG1pc3NpbmdfcmVhZF9uZWVkc19mcmFtZSwKLSsgIG1pc3NpbmdfZGVzY3Jp YmVfbG9jYXRpb24sCi0rICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgotK307Ci1kaWZmIC0t Z2l0IGEvZ2RiL2R3YXJmMmxvYy5oIGIvZ2RiL2R3YXJmMmxvYy5oCi1pbmRleCBmYTBiZDExLi4z NTM1YzFmIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMmxvYy5oCi0rKysgYi9nZGIvZHdhcmYybG9j LmgKLUBAIC03Miw1ICs3MiwxNCBAQCBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24KLSAKLSBl eHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2V4cHJfZnVu Y3M7Ci0gZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2Ns aXN0X2Z1bmNzOwotK2V4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2Fy ZjJfbWlzc2luZ19mdW5jczsKKysgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxl LT5vYmpmaWxlX29ic3RhY2ssCisrCQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2Jh dG9uKSk7CisrICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQgKGJh dG9uLT5wZXJfY3UpOwogKwotK2V4dGVybiB2b2lkIG9iamVjdF9hZGRyZXNzX3NldCAoQ09SRV9B RERSIGFkZHJlc3MpOworKyAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24g bGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3ZQorKyAgICAgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBv ZiB0aGUgc2VjdGlvbi4gICovCisrICBiYXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+ bG9jLnNpemUgLSBEV19VTlNORCAoYXR0cik7CisrICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJf b2JqZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKKysgIGJhdG9uLT5iYXNlX2Fk ZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOworKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCisr ICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJICAgICAgIF8oIkxvY2F0aW9u IGxpc3QgdXNlZCB3aXRob3V0IHNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CiAr Ci0rZXh0ZXJuIENPUkVfQUREUiBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsgIChzdHJ1Y3Qg ZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24pOworKyAgcmV0dXJuIGJhdG9uOworK30KICsK LStleHRlcm4gaW50IGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9sb2Ns aXN0X2JhdG9uICpkbGxiYXRvbiwKLSsJCQkJICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9B RERSICphZGRycCk7Ci0gCi0gI2VuZGlmIC8qIGR3YXJmMmxvYy5oICovCi1kaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IGEwNWM5NDYuLjk0NTI4 NDQgMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5j Ci1AQCAtNDgsNiArNDgsMTAgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImJs b2NrLmgiCi0gI2luY2x1ZGUgImFkZHJtYXAuaCIKLSsjaW5jbHVkZSAiYmxvY2suaCIKLSsjaW5j bHVkZSAiZi1sYW5nLmgiCi0rI2luY2x1ZGUgInR5cGVwcmludC5oIgotKyNpbmNsdWRlICJqdi1s YW5nLmgiCi0gCi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIK LUBAIC05Niw3ICsxMDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWJuYW1lc19oZWFkZXIKLSBfUFVC TkFNRVNfSEVBREVSOwotICNkZWZpbmUgX0FDVFVBTF9QVUJOQU1FU19IRUFERVJfU0laRSAxMwot IAotLS8qIC5kZWJ1Z19wdWJuYW1lcyBoZWFkZXIKLSsvKiAuZGVidWdfYXJhbmdlcyBoZWFkZXIK LSAgICBCZWNhdXNlIG9mIGFsaWdubWVudCBjb25zdHJhaW50cywgdGhpcyBzdHJ1Y3R1cmUgaGFz IHBhZGRpbmcgYW5kIGNhbm5vdAotICAgIGJlIG1hcHBlZCBkaXJlY3RseSBvbnRvIHRoZSBiZWdp bm5pbmcgb2YgdGhlIC5kZWJ1Z19pbmZvIHNlY3Rpb24uICAqLwotIHR5cGVkZWYgc3RydWN0IGFy YW5nZXNfaGVhZGVyCi1AQCAtMTUzLDcgKzE1NywxMCBAQCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbwotICAgYXNlY3Rpb24gKmFzZWN0aW9uOwotICAgZ2RiX2J5dGUgKmJ1ZmZlcjsKLSAgIGJm ZF9zaXplX3R5cGUgc2l6ZTsKLS0gIGludCB3YXNfbW1hcHBlZDsKLSsgIC8qIEEgZnVuY3Rpb24g dG8gY2FsbCB0byBkZWFsbG9jYXRlIEJVRkZFUi4gIElmIE5VTEwsIG5vCi0rICAgICBkZWFsbG9j YXRpb24gaXMgbmVlZGVkLiAgQSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlIGlzIHBhc3NlZCBh cwotKyAgICAgdGhlIG9ubHkgYXJndW1lbnQuICAqLwotKyAgdm9pZCAoKmRlc3RydWN0b3IpIChz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqKTsKLSB9OwotIAotIHN0cnVjdCBkd2FyZjJfcGVy X29iamZpbGUKLUBAIC0zMzMsNiArMzQwLDE5IEBAIHN0cnVjdCBkd2FyZjJfY3UKLSAgICAgIERJ RXMgZm9yIG5hbWVzcGFjZXMsIHdlIGRvbid0IG5lZWQgdG8gdHJ5IHRvIGluZmVyIHRoZW0KLSAg ICAgIGZyb20gbWFuZ2xlZCBuYW1lcy4gICovCi0gICB1bnNpZ25lZCBpbnQgaGFzX25hbWVzcGFj ZV9pbmZvIDogMTsKKysvKiBTWU0gbWF5IGdldCBpdHMgU1lNQk9MX0NMQVNTIG92ZXJyaWRlbiBv biBpbnZhbGlkIEFUVFIgY29udGVudC4gICovCiArCi0rICAvKiBGaWVsZHMgYXJlIHZhbGlkIGFj Y29yZGluZyB0byB0aGUgTEFOR1VBR0UgZmllbGQuICAqLwotKyAgdW5pb24KKytzdGF0aWMgdm9p ZAorK2R3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg c3RydWN0IHN5bWJvbCAqc3ltLAorKwkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrewor KyAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpsb2NsaXN0X2JhdG9uOworKworKyAgbG9j bGlzdF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKGF0dHIsIGN1KTsKKysg IGlmIChsb2NsaXN0X2JhdG9uKQogKyAgICB7Ci0rICAgICAgLyogbGFuZ3VhZ2VfZm9ydHJhbiAq LwotKyAgICAgIHN0cnVjdAotKyAgICAgICAgewotKwkgIC8qIE1vZHVsZSBuYW1lcyBpbXBvcnRl ZCB0byB0aGUgYmxvY2sgYmVpbmcgY3VycmVudGx5IHJlYWQgaW4uICAqLwotKwkgIHN0cnVjdCBm b3J0cmFuX3VzaW5nICp1c2U7Ci0rCX0KLSsgICAgICBmb3J0cmFuOworICAgICAgIFNZTUJPTF9D T01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX2xvY2xpc3RfZnVuY3M7CistICAgICAgU1lNQk9M X0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gYmF0b247CisrICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JB VE9OIChzeW0pID0gbG9jbGlzdF9iYXRvbjsKICsgICAgfQotKyAgbGFuZ3VhZ2Vfc3BlY2lmaWM7 Ci0gfTsKLSAKLSAvKiBQZXJzaXN0ZW50IGRhdGEgaGVsZCBmb3IgYSBjb21waWxhdGlvbiB1bml0 LCBldmVuIHdoZW4gbm90Ci1AQCAtNDg3LDggKzUwNyw3IEBAIHN0cnVjdCBwYXJ0aWFsX2RpZV9p bmZvCi0gICAgIHVuc2lnbmVkIGludCBoYXNfYnl0ZV9zaXplIDogMTsKLSAKLSAgICAgLyogVGhl IG5hbWUgb2YgdGhpcyBESUUuICBOb3JtYWxseSB0aGUgdmFsdWUgb2YgRFdfQVRfbmFtZSwgYnV0 Ci0tICAgICAgIHNvbWV0aW1lcyBEV19UQUdfTUlQU19saW5rYWdlX25hbWUgb3IgYSBzdHJpbmcg Y29tcHV0ZWQgaW4gc29tZQotLSAgICAgICBvdGhlciBmYXNoaW9uLiAgKi8KLSsgICAgICAgc29t ZXRpbWVzIGEgZGVmYXVsdCBuYW1lIGZvciB1bm5hbWVkIERJRXMuICAqLwotICAgICBjaGFyICpu YW1lOwotIAotICAgICAvKiBUaGUgc2NvcGUgdG8gcHJlcGVuZCB0byBvdXIgY2hpbGRyZW4uICBU aGlzIGlzIGdlbmVyYWxseQotQEAgLTc4OCw3ICs4MDcsOCBAQCBzdGF0aWMgdm9pZCBzY2FuX3Bh cnRpYWxfc3ltYm9scyAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKiwKLSBzdGF0aWMgdm9pZCBh ZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICosCi0gCQkJCXN0cnVj dCBkd2FyZjJfY3UgKik7Ci0gCi0tc3RhdGljIGludCBwZGlfbmVlZHNfbmFtZXNwYWNlIChlbnVt IGR3YXJmX3RhZyB0YWcpOwotK3N0YXRpYyBnZGJfYnl0ZSAqcmVhZF9jb21wX3VuaXRfaGVhZCAo c3RydWN0IGNvbXBfdW5pdF9oZWFkICosIGdkYl9ieXRlICosCi0rCQkJCSAgICAgIGJmZCAqKTsK LSAKLSBzdGF0aWMgdm9pZCBhZGRfcGFydGlhbF9uYW1lc3BhY2UgKHN0cnVjdCBwYXJ0aWFsX2Rp ZV9pbmZvICpwZGksCi0gCQkJCSAgIENPUkVfQUREUiAqbG93cGMsIENPUkVfQUREUiAqaGlnaHBj LAotQEAgLTgxMyw2ICs4MzMsMTAgQEAgc3RhdGljIHZvaWQgZHdhcmYyX3BzeW10YWJfdG9fc3lt dGFiIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKik7Ci0gCi0gc3RhdGljIHZvaWQgcHN5bXRhYl90 b19zeW10YWJfMSAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICopOworKyAgZWxzZSBpZiAoYXR0cl9m b3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgeworKyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMg KHN5bSkgPSAmZHdhcmYyX2xvY2V4cHJfZnVuY3M7CisrICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JB VE9OIChzeW0pID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworICAg ICB9CisgICBlbHNlCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KmJhdG9uOworKyAgICAgIGR3YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJs b2NhdGlvbiBkZXNjcmlwdGlvbiIsCisrCQkJCQkgICAgIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5 bSkpOwogIAotK3N0YXRpYyB2b2lkIGR3YXJmMl9yZWFkX3NlY3Rpb25fMSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCi0rCQkJCSAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLAotKwkJCQkgICBz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbyk7Ci0rCi0gc3RhdGljIHZvaWQgZHdhcmYy X3JlYWRfYWJicmV2cyAoYmZkICphYmZkLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CistICAgICAg YmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0J CQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7CistICAgICAgYmF0 b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CistICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9j dSk7CisrICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJP TF9DT01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwogIAotIHN0YXRpYyB2b2lkIGR3YXJmMl9mcmVl X2FiYnJldl90YWJsZSAodm9pZCAqKTsKLUBAIC05ODQsMTcgKzEwMDgsMjUgQEAgc3RhdGljIHZv aWQgZHdhcmYyX2F0dGFjaF9mbl9maWVsZHNfdG9fdHlwZSAoc3RydWN0IGZpZWxkX2luZm8gKiwK LSAKLSBzdGF0aWMgdm9pZCBwcm9jZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZv ICosIHN0cnVjdCBkd2FyZjJfY3UgKik7CistICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAo YXR0cikpCistCXsKKy0JICAvKiBOb3RlIHRoYXQgd2UncmUganVzdCBjb3B5aW5nIHRoZSBibG9j aydzIGRhdGEgcG9pbnRlcgorLQkgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFsIGRhdGEuICBXZSdy ZSBzdGlsbCBwb2ludGluZyBpbnRvIHRoZQorLQkgICAgIGluZm9fYnVmZmVyIGZvciBTWU0ncyBv YmpmaWxlOyByaWdodCBub3cgd2UgbmV2ZXIgcmVsZWFzZQorLQkgICAgIHRoYXQgYnVmZmVyLCBi dXQgd2hlbiB3ZSBkbyBjbGVhbiB1cCBwcm9wZXJseSB0aGlzIG1heQorLQkgICAgIG5lZWQgdG8g Y2hhbmdlLiAgKi8KKy0JICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKKy0J ICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKy0JfQorLSAgICAgIGVsc2UK Ky0JeworLQkgIGR3YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJsb2NhdGlv biBkZXNjcmlwdGlvbiIsCistCQkJCQkJIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkpOworLQkg IGJhdG9uLT5zaXplID0gMDsKKy0JICBiYXRvbi0+ZGF0YSA9IE5VTEw7CistCX0KKysgICAgICBT WU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOworKyAgICAg IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IE5VTEw7CiAgCi0tc3RhdGljIGNvbnN0IGNo YXIgKmRldGVybWluZV9jbGFzc19uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLS0JCQkJCSBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci0tCi0gc3RhdGljIHZvaWQgcmVhZF9jb21tb25fYmxvY2sg KHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworLSAgICAgIFNZTUJPTF9D T01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX2xvY2V4cHJfZnVuY3M7CistICAgICAgU1lNQk9M X0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gYmF0b247CisrICAgICAgLyogRm9yIGZ1bmN0aW9ucyBh IG1pc3NpbmcgRFdfQVRfZnJhbWVfYmFzZSBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgdGhlCisrCSB3 aG9sZSBmdW5jdGlvbiBkZWZpbml0aW9uLCBvbmx5IGl0cyBmcmFtZSBiYXNlIHJlc29sdmluZy4g ICovCisrICAgICAgaWYgKGF0dHItPm5hbWUgPT0gRFdfQVRfbG9jYXRpb24pCisrCVNZTUJPTF9D TEFTUyAoc3ltKSA9IExPQ19PUFRJTUlaRURfT1VUOworICAgICB9CisgfQogIAotIHN0YXRpYyB2 b2lkIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqKTsKK0BAIC0xMjM3Miw2ICsxMjYyMiwzMSBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0 IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKKyAgIHJldHVybiBvZnNfbGhz LT5vZmZzZXQgPT0gb2ZzX3Jocy0+b2Zmc2V0OworIH0KICAKLStzdGF0aWMgdm9pZCByZWFkX2lt cG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICop OworKy8qIEZpbGwgaW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2FibGUgZm9yIHR5cGUgRElF cy4gICovCiArCi0gc3RhdGljIHZvaWQgcmVhZF9tb2R1bGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci0gCi0gc3RhdGljIHZvaWQgcmVhZF9pbXBvcnRfc3Rh dGVtZW50IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSAKLStz dGF0aWMgc3RydWN0IHR5cGUgKnJlYWRfbW9kdWxlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LAotKwkJCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Cisrc3RhdGljIHZvaWQKKytmZXRj aF9kaWVfdHlwZV9hdHRycyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBl LAorKwkJICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKICsKLStzdGF0aWMgdm9pZCByZWFkX2ZvcnRyYW5faW1wb3J0ZWRfbW9kdWxlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwKLSsJCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKyAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKKysgIGlm IChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICBUWVBFX0RBVEFfTE9DQVRJT05fRFdB UkZfQkxPQ0sgKHR5cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwKKysJ CQkJCQkJCQkgIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RBVEFfTE9DQVRJT05fSVNfQURE UiAodHlwZSkpOwogKwotK3N0YXRpYyB2b2lkIHJlYWRfZm9ydHJhbl9pbXBvcnRlZF9kZWNsYXJh dGlvbiAoc3RydWN0IGRpZV9pbmZvICpkaWUsCi0rCQkJCQkgICAgICAgc3RydWN0IGR3YXJmMl9j dSAqY3UpOworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3Up OworKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrICAgIFRZUEVfQUxMT0NBVEVE ICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdk Yl9hc3NlcnQgKCFUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKTsKICsKLSBzdGF0aWMgY29uc3Qg Y2hhciAqbmFtZXNwYWNlX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAotIAkJCQkgICBpbnQg KmlzX2Fub255bW91cywgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSAKLUBAIC0xMDI4LDcgKzEwNjAs OCBAQCBzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfZnVsbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVh ZGVyX3NwZWNzICpyZWFkZXIsCi0gCi0gc3RhdGljIHZvaWQgcHJvY2Vzc19kaWUgKHN0cnVjdCBk aWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotIAotLXN0YXRpYyBjaGFyICpkd2FyZjJf bGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLStz dGF0aWMgY2hhciAqZm9ydHJhbl9tb2R1bGVfbGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwKLSsJCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotIAotIHN0YXRpYyBjaGFyICpk d2FyZjJfY2Fub25pY2FsaXplX25hbWUgKGNoYXIgKiwgc3RydWN0IGR3YXJmMl9jdSAqLAotIAkJ CQkgICAgICAgc3RydWN0IG9ic3RhY2sgKik7Ci1AQCAtMTExNCw2ICsxMTQ3LDkgQEAgc3RhdGlj IGludCBhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7Ci0g Ci0gc3RhdGljIGludCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7 Ci0gCi0rc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZHdhcmYyX2F0dHJfdG9f bG9jbGlzdF9iYXRvbgotKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KTsKKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBj dSk7CisrICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgVFlQRV9BU1NPQ0lB VEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysg IGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSk7CisrfQogKwotIHN0YXRp YyB2b2lkIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0 ciwKLSAJCQkJCSBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0gCQkJCQkgc3RydWN0IGR3YXJmMl9jdSAq Y3UpOwotQEAgLTExNDQsNiArMTE4MCw5IEBAIHN0YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91 bml0cyAodm9pZCk7CisgLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQ RS4gIFNhdmUgaXQgaW4gQ1UncyBoYXNoCisgICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNv bnZlbmllbmNlLCByZXR1cm4gVFlQRS4KICAKLSBzdGF0aWMgdm9pZCBmcmVlX29uZV9jYWNoZWRf Y29tcF91bml0ICh2b2lkICopOworQEAgLTEyMzk1LDYgKzEyNjcwLDggQEAgc2V0X2RpZV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorIHsKKyAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqc2xvdCwgb2Zz OwogIAotK3N0YXRpYyB2b2lkIGZldGNoX2RpZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsCi0rCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwor KyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwotIHN0YXRpYyBzdHJ1 Y3QgdHlwZSAqc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwK LSAJCQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotIAotQEAgLTExNjMsMjIgKzEyMDIsMzEgQEAg c3RhdGljIHZvaWQgZHdhcmYyX2NsZWFyX21hcmtzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICopOwotIAotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworICAgLyogRm9yIEFkYSB0eXBlcywgbWFr ZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKKyAgICAgIGluaXRp YWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJl CisgICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNp ZmljIGFyZWEgaXMKK2RpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwor aW5kZXggOGMwMDkzOC4uNGFhMWYzZiAxMDA2NDQKKy0tLSBhL2dkYi9lbGZyZWFkLmMKKysrKyBi L2dkYi9lbGZyZWFkLmMKK0BAIC0zNyw2ICszNyw3IEBACisgI2luY2x1ZGUgImNvbXBsYWludHMu aCIKKyAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKKyAjaW5jbHVkZSAicHN5bXByaXYuaCIKKysjaW5j bHVkZSAiZ2RidHlwZXMuaCIKICAKLStzdGF0aWMgdm9pZCBkZXN0cm95X3NlY3Rpb24gKHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKTsKLSsKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uCi0rICAoc3RydWN0IGF0 dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotKwotIC8qIFRyeSB0byBsb2Nh dGUgdGhlIHNlY3Rpb25zIHdlIG5lZWQgZm9yIERXQVJGIDIgZGVidWdnaW5nCi0gICAgaW5mb3Jt YXRpb24gYW5kIHJldHVybiB0cnVlIGlmIHdlIGhhdmUgZW5vdWdoIHRvIGRvIHNvbWV0aGluZy4g ICovCisgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAgCi0gaW50Ci0g ZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BAIC0xODAsNyArMTgx LDggQEAgcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZV9s ZW4sIGludCBjb3B5X25hbWUsCiAgewotLSAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZGF0 YTsKLS0KLS0gIC8qIEluaXRpYWxpemUgcGVyLW9iamZpbGUgc3RhdGUuICAqLwotLSAgZGF0YSA9 IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmRhdGEp KTsKLS0gIG1lbXNldCAoZGF0YSwgMCwgc2l6ZW9mICgqZGF0YSkpOwotLSAgc2V0X29iamZpbGVf ZGF0YSAob2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXksIGRhdGEpOwotLSAgZHdhcmYy X3Blcl9vYmpmaWxlID0gZGF0YTsKLSsgIGR3YXJmMl9wZXJfb2JqZmlsZSA9IG9iamZpbGVfZGF0 YSAob2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXkpOwotKyAgaWYgKCFkd2FyZjJfcGVy X29iamZpbGUpCi0rICAgIHsKLSsgICAgICAvKiBJbml0aWFsaXplIHBlci1vYmpmaWxlIHN0YXRl LiAgKi8KLSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkYXRhCi0rCT0gb2JzdGFj a19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqZGF0YSkpOwotKyAg ICAgIG1lbXNldCAoZGF0YSwgMCwgc2l6ZW9mICgqZGF0YSkpOwotKyAgICAgIHNldF9vYmpmaWxl X2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5LCBkYXRhKTsKLSsgICAgICBk d2FyZjJfcGVyX29iamZpbGUgPSBkYXRhOwotIAotLSAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChv YmpmaWxlLT5vYmZkLCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zLCBOVUxMKTsKLS0gIHJldHVybiAo ZGF0YS0+aW5mby5hc2VjdGlvbiAhPSBOVUxMICYmIGRhdGEtPmFiYnJldi5hc2VjdGlvbiAhPSBO VUxMKTsKLSsgICAgICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGR3YXJm Ml9sb2NhdGVfc2VjdGlvbnMsIE5VTEwpOwotKyAgICB9Ci0rICByZXR1cm4gKGR3YXJmMl9wZXJf b2JqZmlsZS0+aW5mby5hc2VjdGlvbiAhPSBOVUxMCi0rCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxl LT5hYmJyZXYuYXNlY3Rpb24gIT0gTlVMTCk7Ci0gfQotIAotIC8qIFdoZW4gbG9hZGluZyBzZWN0 aW9ucywgd2UgY2FuIGVpdGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgotQEAgLTEyNzEs MTAgKzEzMTksMTMgQEAgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlv biAqc2VjdHAsIHZvaWQgKmlnbm9yZV9wdHIpCi0gfQorICAgc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAKLSAvKiBEZWNvbXByZXNzIGEgc2Vj dGlvbiB0aGF0IHdhcyBjb21wcmVzc2VkIHVzaW5nIHpsaWIuICBTdG9yZSB0aGUKLS0gICBkZWNv bXByZXNzZWQgYnVmZmVyLCBhbmQgaXRzIHNpemUsIGluIE9VVEJVRiBhbmQgT1VUU0laRS4gICov Ci0rICAgZGVjb21wcmVzc2VkIGJ1ZmZlciwgYW5kIGl0cyBzaXplLCBpbiBPVVRCVUYgYW5kIE9V VFNJWkUuICBUaGUKLSsgICByZXN1bHQgaXMgYWxsb2NhdGVkIG9uIE9CU1RBQ0s7IGlmIE9CU1RB Q0sgaXMgTlVMTCwgeG1hbGxvYyBpcwotKyAgIHVzZWQuICAqLworLSAgaWYgKG1zX3R5cGUgPT0g bXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0KQorKyAgaWYgKG1zX3R5cGUgPT0g bXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0CisrICAgICAgfHwgbXNfdHlwZSA9 PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCisgICAgIGFkZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3RleHRf YWRkcmVzcyAoZ2RiYXJjaCwgYWRkcmVzcyk7CiAgCi0gc3RhdGljIHZvaWQKLS16bGliX2RlY29t cHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwK LSt6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVj dCBvYnN0YWNrICpvYnN0YWNrLAotKwkJCSBhc2VjdGlvbiAqc2VjdHAsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIGdkYl9ieXRlICoqb3V0YnVmLCBiZmRfc2l6ZV90eXBlICpvdXRzaXplKQot IHsKLSAgIGJmZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7Ci1AQCAtMTI5MSw2ICsxMzQyLDcgQEAg emxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBhc2VjdGlv biAqc2VjdHAsCi0gICB6X3N0cmVhbSBzdHJtOwotICAgaW50IHJjOwotICAgaW50IGhlYWRlcl9z aXplID0gMTI7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkID0gTlVMTDsKLSAKLSAgIGlmIChiZmRf c2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCi0gICAgICAgfHwgYmZk X2JyZWFkIChjb21wcmVzc2VkX2J1ZmZlciwgY29tcHJlc3NlZF9zaXplLCBhYmZkKSAhPSBjb21w cmVzc2VkX3NpemUpCi1AQCAtMTMyMCw4ICsxMzcyLDEzIEBAIHpsaWJfZGVjb21wcmVzc19zZWN0 aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAotICAgc3RybS5h dmFpbF9pbiA9IGNvbXByZXNzZWRfc2l6ZSAtIGhlYWRlcl9zaXplOwotICAgc3RybS5uZXh0X2lu ID0gKEJ5dGVmKikgY29tcHJlc3NlZF9idWZmZXIgKyBoZWFkZXJfc2l6ZTsKLSAgIHN0cm0uYXZh aWxfb3V0ID0gdW5jb21wcmVzc2VkX3NpemU7Ci0tICB1bmNvbXByZXNzZWRfYnVmZmVyID0gb2Jz dGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICBpZiAob2JzdGFj aykKLSsgICAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2MgKG9ic3RhY2ssIHVu Y29tcHJlc3NlZF9zaXplKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHVuY29tcHJlc3NlZF9i dWZmZXIgPSB4bWFsbG9jICh1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICAgICAgb2xkID0gbWFrZV9j bGVhbnVwICh4ZnJlZSwgdW5jb21wcmVzc2VkX2J1ZmZlcik7Ci0rICAgIH0KLSAgIHJjID0gaW5m bGF0ZUluaXQgKCZzdHJtKTsKLSAgIHdoaWxlIChzdHJtLmF2YWlsX2luID4gMCkKLSAgICAgewot QEAgLTEzNDIsMjYgKzEzOTksMTc2IEBAIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAotICAgICBlcnJvciAoXygiRHdhcmYg RXJyb3I6IGNvbmNsdWRpbmcgRFdBUkYgdW5jb21wcmVzc2lvbiBpbiAnJXMnOiAlZCIpLAotICAg ICAgICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKLSAKLSsgIGlmIChvbGQpCi0r ICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZCk7Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0g ICAqb3V0YnVmID0gdW5jb21wcmVzc2VkX2J1ZmZlcjsKLSAgICpvdXRzaXplID0gdW5jb21wcmVz c2VkX3NpemU7Ci0gI2VuZGlmCisgICByZXR1cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2xf ZnVsbCAobmFtZSwgbmFtZV9sZW4sIGNvcHlfbmFtZSwgYWRkcmVzcywKK0BAIC0zODgsNyArMzkw LDEwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBl LAorIAkgICAgeworIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dF QUspKQorIAkJeworLQkJICBtc190eXBlID0gbXN0X3RleHQ7CisrCQkgIGlmIChzeW0tPmZsYWdz ICYgQlNGX0dOVV9JTkRJUkVDVF9GVU5DVElPTikKKysJCSAgICBtc190eXBlID0gbXN0X3RleHRf Z251X2lmdW5jOworKwkJICBlbHNlCisrCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OworIAkJfQor IAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0g J0wnKQorIAkJICAgICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKK0BAIC01NjksNiAr NTc0LDI1MCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQg dHlwZSwKKyAgICAgfQogIH0KICAKLS0vKiBSZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgc2VjdGlv biBTRUNUUCBmcm9tIG9iamVjdCBmaWxlIHNwZWNpZmllZCBieQotLSAgIE9CSkZJTEUsIHN0b3Jl IGluZm8gYWJvdXQgdGhlIHNlY3Rpb24gaW50byBJTkZPLgotLSAgIElmIHRoZSBzZWN0aW9uIGlz IGNvbXByZXNzZWQsIHVuY29tcHJlc3MgaXQgYmVmb3JlIHJldHVybmluZy4gICovCi0rLyogQSBj bGVhbnVwIHRoYXQgY2FsbHMgZGVzdHJveV9zZWN0aW9uLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAot LWR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyAqaW5mbykKLStkZXN0cm95X3NlY3Rpb25fY2xlYW51cCAodm9pZCAq YXJnKQotK3sKLSsgIGRlc3Ryb3lfc2VjdGlvbiAoYXJnKTsKLSt9CisrLyogRklYTUU6IERlbGF5 IGl0IHRocm91Z2ggZWxmX3N5bV9mbnMuICAqLworKworK3N0YXRpYyB2b2lkCisrZWxmX3JlbF9w bHRfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzeW1ib2wgKipkeW5fc3ltYm9sX3Rh YmxlKQorK3sKKysgIGJmZCAqb2JmZCA9IG9iamZpbGUtPm9iZmQ7CisrICBjb25zdCBzdHJ1Y3Qg ZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKG9iZmQpOworKyAg YXNlY3Rpb24gKnBsdCwgKnJlbHBsdCwgKmdvdF9wbHQ7CisrICB1bnNpZ25lZCB1OworKyAgaW50 IHBsdF9lbGZfaWR4OworKyAgYmZkX3NpemVfdHlwZSByZWxvY19jb3VudCwgcmVsb2M7CisrICBj aGFyICpzdHJpbmdfYnVmZmVyID0gTlVMTDsKKysgIHNpemVfdCBzdHJpbmdfYnVmZmVyX3NpemUg PSAwOworKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7CisrICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWls dGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOworKyAgc2l6ZV90IHB0cl9zaXpl ID0gVFlQRV9MRU5HVEggKHB0cl90eXBlKTsKKysKKysgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9k ZWJ1Z19vYmpmaWxlX2JhY2tsaW5rKQorKyAgICByZXR1cm47CiArCi0rLyogUmVhZCB0aGUgLmRl YnVnX2FyYW5nZXMgc2VjdGlvbiBhbmQgY29uc3RydWN0IGFuIGFkZHJlc3MgbWFwLiAgKi8KKysg IHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIpOworKyAgaWYgKHBs dCA9PSBOVUxMKQorKyAgICByZXR1cm47CisrICBwbHRfZWxmX2lkeCA9IGVsZl9zZWN0aW9uX2Rh dGEgKHBsdCktPnRoaXNfaWR4OwogKwotK3ZvaWQKLStkd2FyZjJfY3JlYXRlX3F1aWNrX2FkZHJt YXAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGNoYXIgKmFyYW5nZXNfYnVmZmVy LCAqYXJhbmdlc19wdHI7Ci0rICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwotKyAgQ09SRV9B RERSIGJhc2VhZGRyOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZDsKLSsgIHN0cnVjdCBvYnN0YWNr IHRlbXBfb2JzdGFjazsKLSsgIHN0cnVjdCBhZGRybWFwICptdXRhYmxlX21hcDsKLSsKLSsgIGlm ICghZHdhcmYyX3Blcl9vYmpmaWxlLT5hcmFuZ2VzLmFzZWN0aW9uKQorKyAgZ290X3BsdCA9IGJm ZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLmdvdC5wbHQiKTsKKysgIGlmIChnb3RfcGx0 ID09IE5VTEwpCiArICAgIHJldHVybjsKICsKLSsgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZp bGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOworKyAgLyogVGhp cyBzZWFyY2ggYWxnb3JpdGhtIGlzIGZyb20gX2JmZF9lbGZfY2Fub25pY2FsaXplX2R5bmFtaWNf cmVsb2MuICAqLworKyAgZm9yIChyZWxwbHQgPSBvYmZkLT5zZWN0aW9uczsgcmVscGx0ICE9IE5V TEw7IHJlbHBsdCA9IHJlbHBsdC0+bmV4dCkKKysgICAgaWYgKGVsZl9zZWN0aW9uX2RhdGEgKHJl bHBsdCktPnRoaXNfaGRyLnNoX2luZm8gPT0gcGx0X2VsZl9pZHgKKysJJiYgKGVsZl9zZWN0aW9u X2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTAorKwkgICAgfHwgZWxm X3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfdHlwZSA9PSBTSFRfUkVMQSkpCisr ICAgICAgYnJlYWs7CisrICBpZiAocmVscGx0ID09IE5VTEwpCisrICAgIHJldHVybjsKICsKLSsg IGR3YXJmMl9yZWFkX3NlY3Rpb25fMSAob2JqZmlsZSwgTlVMTCwgJmR3YXJmMl9wZXJfb2JqZmls ZS0+YXJhbmdlcyk7Ci0rICBhcmFuZ2VzX2J1ZmZlciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YXJh bmdlcy5idWZmZXI7Ci0rICBhcmFuZ2VzX3B0ciA9IGFyYW5nZXNfYnVmZmVyOwotKyAgb2xkID0g bWFrZV9jbGVhbnVwIChkZXN0cm95X3NlY3Rpb25fY2xlYW51cCwgJmR3YXJmMl9wZXJfb2JqZmls ZS0+YXJhbmdlcyk7CisrICBpZiAoISBiZWQtPnMtPnNsdXJwX3JlbG9jX3RhYmxlIChvYmZkLCBy ZWxwbHQsIGR5bl9zeW1ib2xfdGFibGUsIFRSVUUpKQorKyAgICByZXR1cm47CiArCi0rICBvYnN0 YWNrX2luaXQgKCZ0ZW1wX29ic3RhY2spOwotKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAo JnRlbXBfb2JzdGFjayk7Ci0rICBtdXRhYmxlX21hcCA9IGFkZHJtYXBfY3JlYXRlX211dGFibGUg KCZ0ZW1wX29ic3RhY2spOworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50 X2NvbnRlbnRzLCAmc3RyaW5nX2J1ZmZlcik7CiArCi0rICB3aGlsZSAoKGFyYW5nZXNfcHRyIC0g YXJhbmdlc19idWZmZXIpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5hcmFuZ2VzLnNpemUpCisrICBy ZWxvY19jb3VudCA9IHJlbHBsdC0+c2l6ZSAvIGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRo aXNfaGRyLnNoX2VudHNpemU7CisrICBmb3IgKHJlbG9jID0gMDsgcmVsb2MgPCByZWxvY19jb3Vu dDsgcmVsb2MrKykKICsgICAgewotKyAgICAgIHN0cnVjdCBjb21wX3VuaXRfaGVhZCBjdV9oZWFk ZXI7Ci0rICAgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQsIHNlZ21lbnRfc2l6ZSwgZGVsdGE7 Ci0rICAgICAgTE9OR0VTVCBpbmZvX29mZnNldDsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1IGN1 OwotKyAgICAgIGNoYXIgKmVuZF9wdHI7Ci0rCi0rICAgICAgY3VfaGVhZGVyLmluaXRpYWxfbGVu Z3RoX3NpemUgPSAwOwotKyAgICAgIGVuZF9wdHIgPSBhcmFuZ2VzX3B0cjsKLSsgICAgICBhcmFu Z2VzX3B0ciA9IHJlYWRfY29tcF91bml0X2hlYWQgKCZjdV9oZWFkZXIsIGFyYW5nZXNfcHRyLCBh YmZkKTsKLSsgICAgICBlbmRfcHRyICs9IGN1X2hlYWRlci5pbml0aWFsX2xlbmd0aF9zaXplICsg Y3VfaGVhZGVyLmxlbmd0aDsKLSsKLSsgICAgICAvKiBTYW5pdHkgY2hlY2suICAqLwotKyAgICAg IGlmIChlbmRfcHRyIC0gYXJhbmdlc19wdHIgPj0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hcmFuZ2Vz LnNpemUpCi0rCXsKLSsJICBkb19jbGVhbnVwcyAob2xkKTsKLSsJICBjb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsCi0rCQkgICAgIF8oImFyYW5nZXMgZW50cnkgcnVucyBvZmYgZW5kIG9m IGAuZGVidWdfYXJhbmdlcycgc2VjdGlvbiwgaWdub3JlZCIpKTsKLSsJICByZXR1cm47Ci0rCX0K LSsgICAgICBpZiAoY3VfaGVhZGVyLmFkZHJfc2l6ZSA9PSAwKQotKwl7Ci0rCSAgZG9fY2xlYW51 cHMgKG9sZCk7Ci0rCSAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgICBf KCJhcmFuZ2VzIGVudHJ5IGhhcyB6ZXJvIGFkZHJfc2l6ZSwgaWdub3JlZCIpKTsKLSsJICByZXR1 cm47Ci0rCX0KKysgICAgICBjb25zdCBjaGFyICpuYW1lLCAqbmFtZV9nb3RfcGx0OworKyAgICAg IHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKKysgICAgICBDT1JFX0FERFIgYWRkcmVzczsK KysgICAgICBjb25zdCBjaGFyICpzdWZmaXggPSAiQGdvdC5wbHQiOworKyAgICAgIHNpemVfdCBz dWZmaXhfbGVuID0gc3RybGVuIChzdWZmaXgpOworKyAgICAgIHNpemVfdCBuYW1lX2xlbjsKICsK LSsgICAgICBzZWdtZW50X3NpemUgPSByZWFkXzFfYnl0ZSAoYWJmZCwgYXJhbmdlc19wdHIpOwot KyAgICAgIGFyYW5nZXNfcHRyICs9IDE7CisrICAgICAgbmFtZSA9IGJmZF9hc3ltYm9sX25hbWUg KCpyZWxwbHQtPnJlbG9jYXRpb25bcmVsb2NdLnN5bV9wdHJfcHRyKTsKKysgICAgICBuYW1lX2xl biA9IHN0cmxlbiAobmFtZSk7CisrICAgICAgYWRkcmVzcyA9IHJlbHBsdC0+cmVsb2NhdGlvblty ZWxvY10uYWRkcmVzczsKICsKLSsgICAgICAvKiBBbGlnbiB0aGUgcG9pbnRlciB0byB0d2ljZSB0 aGUgcG9pbnRlciBzaXplLiAgSSBkaWRuJ3Qgc2VlCi0rCSB0aGlzIGluIHRoZSBzcGVjIGJ1dCBp dCBhcHBlYXJzIHRvIGJlIHJlcXVpcmVkLiAgKi8KLSsgICAgICBkZWx0YSA9IChhcmFuZ2VzX3B0 ciAtIGFyYW5nZXNfYnVmZmVyKSAlICgyICogY3VfaGVhZGVyLmFkZHJfc2l6ZSk7Ci0rICAgICAg ZGVsdGEgPSAoMiAqIGN1X2hlYWRlci5hZGRyX3NpemUgLSBkZWx0YSkgJSAoMiAqIGN1X2hlYWRl ci5hZGRyX3NpemUpOwotKyAgICAgIGFyYW5nZXNfcHRyICs9IGRlbHRhOworKyAgICAgIC8qIERv ZXMgdGhlIHBvaW50ZXIgcmVzaWRlIGluIHRoZSAuZ290LnBsdCBzZWN0aW9uPyAgKi8KKysgICAg ICBpZiAoIShiZmRfZ2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3RfcGx0KSA8PSBhZGRyZXNzCisr ICAgICAgICAgICAgJiYgYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlvbl92bWEgKG9iZmQsIGdvdF9w bHQpCisrCQkJICsgYmZkX2dldF9zZWN0aW9uX3NpemUgKGdvdF9wbHQpKSkKKysJY29udGludWU7 CiArCi0rICAgICAgbWVtc2V0ICgmY3UsIDAsIHNpemVvZiAoY3UpKTsKLSsgICAgICBjdS5oZWFk ZXIuYWRkcl9zaXplID0gY3VfaGVhZGVyLmFkZHJfc2l6ZTsKKysgICAgICAvKiBXZSBjYW5ub3Qg Y2hlY2sgaWYgTkFNRSBpcyBhIHJlZmVyZW5jZSB0byBtc3RfdGV4dF9nbnVfaWZ1bmMgYXMgaW4K KysJIE9CSkZJTEUgdGhlIHN5bWJvbCBpcyB1bmRlZmluZWQgYW5kIHRoZSBvYmpmaWxlIGhhdmlu ZyBOQU1FIGRlZmluZWQKKysJIG1heSBub3QgeWV0IGhhdmUgYmVlbiBsb2FkZWQuICAqLwogKwot KyAgICAgIHdoaWxlICgxKQorKyAgICAgIGlmIChzdHJpbmdfYnVmZmVyX3NpemUgPCBuYW1lX2xl biArIHN1ZmZpeF9sZW4pCiArCXsKLSsJICBDT1JFX0FERFIgYWRkcmVzcywgbGVuZ3RoOwotKwot KwkgIGFkZHJlc3MgPSByZWFkX2FkZHJlc3MgKGFiZmQsIGFyYW5nZXNfcHRyLCAmY3UsICZieXRl c19yZWFkKTsKLSsJICBhcmFuZ2VzX3B0ciArPSBieXRlc19yZWFkOworKwkgIHN0cmluZ19idWZm ZXJfc2l6ZSA9IDIgKiAobmFtZV9sZW4gKyBzdWZmaXhfbGVuKTsKKysJICBzdHJpbmdfYnVmZmVy ID0geHJlYWxsb2MgKHN0cmluZ19idWZmZXIsIHN0cmluZ19idWZmZXJfc2l6ZSk7CisrCX0KKysg ICAgICBtZW1jcHkgKHN0cmluZ19idWZmZXIsIG5hbWUsIG5hbWVfbGVuKTsKKysgICAgICBtZW1j cHkgKCZzdHJpbmdfYnVmZmVyW25hbWVfbGVuXSwgc3VmZml4LCBzdWZmaXhfbGVuKTsKICsKLSsJ ICBsZW5ndGggPSByZWFkX2FkZHJlc3MgKGFiZmQsIGFyYW5nZXNfcHRyLCAmY3UsICZieXRlc19y ZWFkKTsKLSsJICBhcmFuZ2VzX3B0ciArPSBieXRlc19yZWFkOworKyAgICAgIG1zeW0gPSByZWNv cmRfbWluaW1hbF9zeW1ib2wgKHN0cmluZ19idWZmZXIsIG5hbWVfbGVuICsgc3VmZml4X2xlbiwg MSwKKysJCQkJICAgIGFkZHJlc3MsIG1zdF9zbG90X2dvdF9wbHQsIGdvdF9wbHQsCisrCQkJCSAg ICBvYmpmaWxlKTsKKysgICAgICBpZiAobXN5bSkKKysJTVNZTUJPTF9TSVpFIChtc3ltKSA9IHB0 cl9zaXplOworKyAgICB9CiArCi0rCSAgaWYgKGFkZHJlc3MgPT0gMCAmJiBsZW5ndGggPT0gMCkK LSsJICAgIGJyZWFrOworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworK30KICsKLSsJICBpZiAo bGVuZ3RoID09IDApCi0rCSAgICB7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChvbGQpOwotKwkgICAg ICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJIF8oImFyYW5nZXMgZW50cnkg aGFzIHplcm8gbGVuZ3RoLCBpZ25vcmVkIikpOwotKwkgICAgICByZXR1cm47Ci0rCSAgICB9Cisr LyogRnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgZm9yIHBvc3NpYmx5IGNyZWF0ZWQgZHVwbGljaXRp ZXMgaW4gdGhlIGNhY2hlLgorKyAgIENoZWNrIGl0IGJ5IHJlc29sdmVfZ251X2lmdW5jX2J5X2Nh Y2hlIGZpcnN0LiAgKi8KICsKLSsJICBhZGRyZXNzICs9IGJhc2VhZGRyOworK3N0YXRpYyBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKgorK2dudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkIChj b25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAorKwkJCQkgIENPUkVfQUREUiBmdW5jdGlvbl9hZGRy ZXNzKQorK3sKKysgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSwgKm1zeW1fbmV3OworKyAg YXNlY3Rpb24gKnNlY3Q7CisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIGNoYXIgKmZ1 bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndDsKICsKLSsJICBhZGRybWFwX3NldF9lbXB0eSAobXV0 YWJsZV9tYXAsIGFkZHJlc3MsIGFkZHJlc3MgKyBsZW5ndGggLSAxLAotKwkJCSAgICAgb2JqZmls ZSk7Ci0rCX0KKysgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKGZ1bmN0aW9u X2FkZHJlc3MpOworKyAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgcmV0dXJuIE5VTEw7CisrICBp ZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9uX2FkZHJlc3MpCisrICAg IHJldHVybiBOVUxMOworKyAgLyogbWluaW1hbCBzeW1ib2xzIGhhdmUgYWx3YXlzIFNZTUJPTF9P QkpfU0VDVElPTiBub24tTlVMTC4gICovCisrICBzZWN0ID0gU1lNQk9MX09CSl9TRUNUSU9OICht c3ltKS0+dGhlX2JmZF9zZWN0aW9uOworKyAgb2JqZmlsZSA9IFNZTUJPTF9PQkpfU0VDVElPTiAo bXN5bSktPm9iamZpbGU7CisrCisrICAvKiBJZiAucGx0IGp1bXBzIGJhY2sgdG8gLnBsdCB0aGUg c3ltYm9sIGlzIHN0aWxsIGRlZmVycmVkIGZvciBsYXRlcgorKyAgICAgcmVzb2x1dGlvbiBhbmQg aXQgaGFzIG5vIHVzZSBmb3IgR0RCLiAgQmVzaWRlcyAiLnRleHQiIHRoaXMgc3ltYm9sIGNhbgor KyAgICAgcmVzaWRlIGFsc28gaW4gIi5vcGQiIGZvciBwcGM2NCBmdW5jdGlvbiBkZXNjcmlwdG9y LiAgKi8KKysgIGlmIChzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChvYmpmaWxlLT5vYmZk LCBzZWN0KSwgIi5wbHQiKSA9PSAwKQorKyAgICByZXR1cm4gTlVMTDsKICsKLSsgICAgICAvKiBT b21lIG9sZGVyIHZlcnNpb25zIG9mIEdDQyBpbmNvcnJlY3RseSBzdGFydGVkIHRoZSBhcmFuZ2UK LSsJIHdpdGggYSAoMCwwKSBwYWlyLiAgSWYgd2UgZW5jb3VudGVyIGFueSBvZGRpdHkgd2hpbGUg cmVhZGluZwotKwkgdGhlIHNlY3Rpb24sIGp1c3QgYWJhbmRvbiB0aGUgYXR0ZW1wdDsgZmFsbGlu ZyBiYWNrIHRvIHRoZQotKwkgc2xvd2VyIGNvZGUgaXMgYWx3YXlzIHNhZmUuICAqLwotKyAgICAg IGlmIChhcmFuZ2VzX3B0ciAhPSBlbmRfcHRyKQotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZCk7 Ci0rCSAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgICBfKCJhcmFuZ2Vz IGVudHJ5IGVuZHMgZWFybHksIGlnbm9yZWQiKSk7Ci0rCSAgcmV0dXJuOwotKwl9Ci0rICAgIH0K KysgIGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlv bl9uYW1lKQorKwkJCQkJKyBzdHJsZW4gKCJAZ251LWlmdW5jLXRndCIpICsgMSk7CisrICBzcHJp bnRmIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QsICIlc0BnbnUtaWZ1bmMtdGd0IiwgZnVu Y3Rpb25fbmFtZSk7CisrCisrICAvKiBDcmVhdGUgbmV3IGFsaWFzICJAZ251LWlmdW5jLXRndCIg Zm9yIE1TWU0uICAqLworKyAgbXN5bV9uZXcgPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGZ1bmN0 aW9uX25hbWVfZ251X2lmdW5jX3RndCwKKysJCQkJICAgIHN0cmxlbiAoZnVuY3Rpb25fbmFtZV9n bnVfaWZ1bmNfdGd0KSwgMSwKKysJCQkJICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSwK KysJCQkJICAgIE1TWU1CT0xfVFlQRSAobXN5bSksIHNlY3QsIG9iamZpbGUpOworKyAgLyogU2hv dWxkIG5vdCBoYXBwZW4uICAqLworKyAgaWYgKG1zeW1fbmV3ID09IE5VTEwpCisrICAgIHJldHVy biAwOwogKwotKyAgb2JqZmlsZS0+cXVpY2tfYWRkcm1hcCA9IGFkZHJtYXBfY3JlYXRlX2ZpeGVk IChtdXRhYmxlX21hcCwKLSsJCQkJCQkgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rICBk b19jbGVhbnVwcyAob2xkKTsKKysgIC8qIG9iamZpbGUtPm1zeW1ib2xzIGFycmF5IGlzIGFscmVh ZHkgYWxsb2NhdGVkIG9uIG9ic3RhY2sgYW5kIGl0IGNhbm5vdCBiZQorKyAgICAgZWFzaWx5IGV4 dGVuZGVkLiAgVGhlcmVmb3JlIDx0YWI+LWNvbXBsZXRpb24gb24gc3ltYm9sIG5hbWVzIHdpbGwg bmV2ZXIKKysgICAgIHNob3cgdGhlIEBnbnUtaWZ1bmMtdGd0IHN5bWJvbC4gIExpbmsgaXQgYXQg bGVhc3QgdG8gdGhlIGhhc2ggdGFibGUgc28KKysgICAgIHRoYXQgcmVzb2x2ZV9nbnVfaWZ1bmNf YnlfY2FjaGUgY2FuIGZpbmQgaXQuICAqLworKyAgYWRkX21pbnN5bV90b19oYXNoX3RhYmxlICht c3ltX25ldywgb2JqZmlsZS0+bXN5bWJvbF9oYXNoKTsKKysgICAgCisrICBNU1lNQk9MX1NJWkUg KG1zeW1fbmV3KSA9IE1TWU1CT0xfU0laRSAobXN5bSk7CisrICByZXR1cm4gbXN5bV9uZXc7CiAr fQogKwotKy8qIEZyZWUgYSBzZWN0aW9uIGJ1ZmZlciBhbGxvY2F0ZWQgd2l0aCB4bWFsbG9jLiAg Ki8KKysvKiBDaGVjayBmaXJzdCB0aGUgY2FjaGUgaWYgaXQgLSB1bmxpa2VseSAtIGhhcyBub3Qg YmVlbiBwb3B1bGF0ZWQgc2luY2UKKysgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgaGFzIGJlZW4g Y3JlYXRlZC4gIGdudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkCisrICAgY291bGQgY3Jl YXRlIGEgZHVwbGljYXRlIHN5bWJvbCBvdGhlcndpc2UuICAqLwogKwotK3N0YXRpYyB2b2lkCi0r eGZyZWVfc2VjdGlvbl9idWZmZXIgKHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQor K3ZvaWQKKytnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Y29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJCQlDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVz cykKICt7Ci0rICB4ZnJlZSAoaW5mby0+YnVmZmVyKTsKLSt9CisrICBzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKm1zeW07CiArCi0rLyogSWYgc2VjdGlvbiBkZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1h cHBlZCwgbXVubWFwIGl0IG5vdy4gICovCisrICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlf Y2FjaGUgKGZ1bmN0aW9uX25hbWUpOworKyAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgZ251X2lm dW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQgKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX2FkZHJl c3MpOworKyAgZWxzZSBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9u X2FkZHJlc3MpCisrICAgIHsKKysgICAgICAvKiBUaGlzIGNhc2UgaW5kaWNhdGVzIGJ1Z2d5IGlu ZmVyaW9yIHByb2dyYW0uICBHREIgd291bGQgbmVlZCB0byB1cGRhdGUKKysJIGl0cyBNU1lNIGNh Y2hlIHN5bWJvbCBmb3IgZnVuY3Rpb25fYWRkcmVzcy4gIEFueXdheSBGVU5DVElPTl9OQU1FIGlz CisrCSBuZXZlciBub3JtYWxseSBmb3VuZCBpbiB0aGUgY2FzZSBhcyBpbiBzdWNoIGNhc2Ugbm8K KysJIGJwX2dudV9pZnVuY19yZXNvbHZlciB3b3VsZCBiZSBjcmVhdGVkIGluIHRoZSBmaXJzdCBw bGFjZS4gICovCiArCi0rc3RhdGljIHZvaWQKLSttdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVj dCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQotK3sKLSsjaWZkZWYgSEFWRV9NTUFQCi0rICBp bnRwdHJfdCBiZWdpbiA9IChpbnRwdHJfdCkgaW5mby0+YnVmZmVyOwotKyAgaW50cHRyX3QgbWFw X2JlZ2luID0gYmVnaW4gJiB+KHBhZ2VzaXplIC0gMSk7Ci0rICBzaXplX3QgbWFwX2xlbmd0aCA9 IGluZm8tPnNpemUgKyBiZWdpbiAtIG1hcF9iZWdpbjsKLSsgIGdkYl9hc3NlcnQgKG11bm1hcCAo KHZvaWQgKikgbWFwX2JlZ2luLCBtYXBfbGVuZ3RoKSA9PSAwKTsKLSsjZWxzZQotKyAgLyogV2l0 aG91dCBIQVZFX01NQVAsIHdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHRvIGJlZ2luIHdpdGguICAq LwotKyAgZ2RiX2Fzc2VydCAoMCk7Ci0rI2VuZGlmCisrICAgICAgd2FybmluZyAoXygiZ251LWlu ZGlyZWN0LWZ1bmN0aW9uIFwiJXNcIiBoYXMgY2hhbmdlZCBpdHMgcmVzb2x2ZWQgIgorKwkJICJm dW5jdGlvbl9hZGRyZXNzIGZyb20gJXMgdG8gJXM7IEdEQiBpcyB1c2luZyB0aGUgZm9ybWVyIG9u ZSIpLAorKwkgICAgICAgZnVuY3Rpb25fbmFtZSwgcGFkZHJlc3MgKGdkYmFyY2gsIFNZTUJPTF9W QUxVRV9BRERSRVNTIChtc3ltKSksCisrCSAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgZnVuY3Rp b25fYWRkcmVzcykpOworKyAgICB9CiArfQogKwotKy8qIFJlYWQgdGhlIGNvbnRlbnRzIG9mIHRo ZSBzZWN0aW9uIGF0IE9GRlNFVCBhbmQgb2Ygc2l6ZSBTSVpFIGZyb20KLSsgICB0aGUgb2JqZWN0 IGZpbGUgc3BlY2lmaWVkIGJ5IE9CSkZJTEUgaW50byBPQlNUQUNLIGFuZCBzdG9yZSBpdCBpbnRv Ci0rICAgSU5GTy4gIElmIE9CU1RBQ0sgaXMgTlVMTCwgeG1hbGxvYyBpcyB1c2VkIGluc3RlYWQu ICBJZiB0aGUgc2VjdGlvbgotKyAgIGlzIGNvbXByZXNzZWQsIHVuY29tcHJlc3MgaXQgYmVmb3Jl IHJldHVybmluZy4gICovCisrc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCisrcmVzb2x2 ZV9nbnVfaWZ1bmNfYnlfZ290IChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lKQorK3sKKysgIGNo YXIgKmZ1bmN0aW9uX25hbWVfZ290X3BsdDsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwog KwotK3N0YXRpYyB2b2lkCi0rZHdhcmYyX3JlYWRfc2VjdGlvbl8xIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLSsJCSAgICAgICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywKLSsJCSAgICAgICBz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKLSB7Ci0gICBiZmQgKmFiZmQgPSBvYmpm aWxlLT5vYmZkOwotICAgYXNlY3Rpb24gKnNlY3RwID0gaW5mby0+YXNlY3Rpb247Ci0gICBnZGJf Ynl0ZSAqYnVmLCAqcmV0YnVmOwotICAgdW5zaWduZWQgY2hhciBoZWFkZXJbNF07Ci0rICBzdHJ1 Y3QgY2xlYW51cCAqb2xkID0gTlVMTDsKLSAKLSAgIGluZm8tPmJ1ZmZlciA9IE5VTEw7Ci0tICBp bmZvLT53YXNfbW1hcHBlZCA9IDA7Ci0rICBpbmZvLT5kZXN0cnVjdG9yID0gMDsKLSAKLSAgIGlm IChpbmZvLT5hc2VjdGlvbiA9PSBOVUxMIHx8IGluZm8tPnNpemUgPT0gMCkKLSAgICAgcmV0dXJu OwotQEAgLTEzNzQsNyArMTU4MSw3IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKLSAgICAgICAv KiBVcG9uIGRlY29tcHJlc3Npb24sIHVwZGF0ZSB0aGUgYnVmZmVyIGFuZCBpdHMgc2l6ZS4gICov Ci0gICAgICAgaWYgKHN0cm5jbXAgKGhlYWRlciwgIlpMSUIiLCBzaXplb2YgKGhlYWRlcikpID09 IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChvYmpm aWxlLCBzZWN0cCwgJmluZm8tPmJ1ZmZlciwKLSsgICAgICAgICAgemxpYl9kZWNvbXByZXNzX3Nl Y3Rpb24gKG9iamZpbGUsIG9ic3RhY2ssIHNlY3RwLCAmaW5mby0+YnVmZmVyLAotIAkJCQkgICAm aW5mby0+c2l6ZSk7Ci0gICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLUBAIC0xMzk3LDcg KzE2MDQsNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCi0gCi0gICAgICAgaWYgKHJldGJ1ZiAh PSBNQVBfRkFJTEVEKQotIAl7Ci0tCSAgaW5mby0+d2FzX21tYXBwZWQgPSAxOwotKwkgIGluZm8t PmRlc3RydWN0b3IgPSBtdW5tYXBfc2VjdGlvbl9idWZmZXI7Ci0gCSAgaW5mby0+YnVmZmVyID0g cmV0YnVmICsgKHNlY3RwLT5maWxlcG9zICYgKHBhZ2VzaXplIC0gMSkpIDsKLSAJICByZXR1cm47 Ci0gCX0KLUBAIC0xNDA1LDggKzE2MTIsMTUgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQotICNl bmRpZgotIAotICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90LWNvbXBy ZXNzZWQgc2VjdGlvbi4gICovCi0tICBpbmZvLT5idWZmZXIgPSBidWYKLS0gICAgPSBvYnN0YWNr X2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5zaXplKTsKLSsgIGlmIChv YnN0YWNrKQotKyAgICBidWYgPSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBpbmZvLT5zaXplKTsK LSsgIGVsc2UKKysgIGZ1bmN0aW9uX25hbWVfZ290X3BsdCA9IGFsbG9jYSAoc3RybGVuIChmdW5j dGlvbl9uYW1lKSArIHN0cmxlbiAoIkBnb3QucGx0IikKKysJCQkJICArIDEpOworKyAgc3ByaW50 ZiAoZnVuY3Rpb25fbmFtZV9nb3RfcGx0LCAiJXNAZ290LnBsdCIsIGZ1bmN0aW9uX25hbWUpOwor KworKyAgQUxMX1BTUEFDRV9PQkpGSUxFUyAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBvYmpmaWxl KQogKyAgICB7Ci0rICAgICAgYnVmID0geG1hbGxvYyAoaW5mby0+c2l6ZSk7Ci0rICAgICAgb2xk ID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYnVmKTsKLSsgICAgICBpbmZvLT5kZXN0cnVjdG9yID0g eGZyZWVfc2VjdGlvbl9idWZmZXI7CisrICAgICAgYmZkICpvYmZkID0gb2JqZmlsZS0+b2JmZDsK KysgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7CisrICAg ICAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRp bl9kYXRhX3B0cjsKKysgICAgICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRyX3R5 cGUpOworKyAgICAgIENPUkVfQUREUiBwb2ludGVyX2FkZHJlc3MsIGZ1bmN0aW9uX2FkZHJlc3M7 CisrICAgICAgYXNlY3Rpb24gKnBsdDsKKysgICAgICBnZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChw dHJfc2l6ZSk7CisrICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOworKworKyAgICAg IG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ290X3BsdCwgTlVM TCwgb2JqZmlsZSk7CisrICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKKysJY29udGludWU7CisrICAg ICAgaWYgKE1TWU1CT0xfVFlQRSAobXN5bSkgIT0gbXN0X3Nsb3RfZ290X3BsdCkKKysJY29udGlu dWU7CisrICAgICAgcG9pbnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0p OworKworKyAgICAgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIp OworKyAgICAgIGlmIChwbHQgPT0gTlVMTCkKKysJY29udGludWU7CisrCisrICAgICAgaWYgKE1T WU1CT0xfU0laRSAobXN5bSkgIT0gcHRyX3NpemUpCisrCWNvbnRpbnVlOworKyAgICAgIGlmICh0 YXJnZXRfcmVhZF9tZW1vcnkgKHBvaW50ZXJfYWRkcmVzcywgYnVmLCBwdHJfc2l6ZSkgIT0gMCkK KysJY29udGludWU7CisrICAgICAgZnVuY3Rpb25fYWRkcmVzcyA9IGV4dHJhY3RfdHlwZWRfYWRk cmVzcyAoYnVmLCBwdHJfdHlwZSk7CisrCisrICAgICAgbXN5bSA9IGdudV9pZnVuY19yZWNvcmRf Y2FjaGVfdW5jaGVja2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9hZGRyZXNzKTsKKysgICAg ICBpZiAobXN5bSA9PSBOVUxMKQorKwljb250aW51ZTsKKysgICAgICByZXR1cm4gbXN5bTsKICsg ICAgfQotKyAgaW5mby0+YnVmZmVyID0gYnVmOwotIAotICAgLyogV2hlbiBkZWJ1Z2dpbmcgLm8g ZmlsZXMsIHdlIG1heSBuZWVkIHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUKLSAgICAgIGh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAwMTM2Lmh0bWwgLgot QEAgLTE0MTUsNiArMTYyOSw4IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKLSAgIHJldGJ1ZiA9 IHN5bWZpbGVfcmVsb2NhdGVfZGVidWdfc2VjdGlvbiAob2JqZmlsZSwgc2VjdHAsIGJ1Zik7Ci0g ICBpZiAocmV0YnVmICE9IE5VTEwpCi0gICAgIHsKLSsgICAgICBpZiAob2xkKQotKwlkaXNjYXJk X2NsZWFudXBzIChvbGQpOwotICAgICAgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZjsKLSAgICAgICBy ZXR1cm47Ci0gICAgIH0KLUBAIC0xNDIzLDYgKzE2MzksMTkgQEAgZHdhcmYyX3JlYWRfc2VjdGlv biAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpp bmZvKQotICAgICAgIHx8IGJmZF9icmVhZCAoYnVmLCBpbmZvLT5zaXplLCBhYmZkKSAhPSBpbmZv LT5zaXplKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENhbid0IHJlYWQgRFdBUkYgZGF0 YSBmcm9tICclcyciKSwKLSAJICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwogKwotKyAgaWYg KG9sZCkKLSsgICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkKTsKKysgIHJldHVybiBOVUxMOwogK30K ICsKLSsvKiBSZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgc2VjdGlvbiBTRUNUUCBmcm9tIG9iamVj dCBmaWxlIHNwZWNpZmllZCBieQotKyAgIE9CSkZJTEUsIHN0b3JlIGluZm8gYWJvdXQgdGhlIHNl Y3Rpb24gaW50byBJTkZPLgotKyAgIElmIHRoZSBzZWN0aW9uIGlzIGNvbXByZXNzZWQsIHVuY29t cHJlc3MgaXQgYmVmb3JlIHJldHVybmluZy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkd2FyZjJf cmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8gKmluZm8pCisrc3RydWN0IG1pbmltYWxfc3ltYm9sICoKKytyZXNvbHZlX2dudV9p ZnVuY19ieV9jYWNoZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSkKICt7Ci0rICBkd2FyZjJf cmVhZF9zZWN0aW9uXzEgKG9iamZpbGUsICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIGluZm8p OwotIH0KLSAKLSAvKiBGaWxsIGluIFNFQ1RQLCBCVUZQIGFuZCBTSVpFUCB3aXRoIHNlY3Rpb24g aW5mbywgZ2l2ZW4gT0JKRklMRSBhbmQKLUBAIC0yMDcwLDYgKzIyOTksMjkgQEAgYnVpbGRfdHlw ZV9wc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gCQkJICBwcm9jZXNzX3R5cGVf Y29tcF91bml0LCBvYmpmaWxlKTsKLSB9Ci0gCi0rLyogQSBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQg Y2xlYXJzIGFuIG9iamZpbGUncyBwc3ltdGFicy4gIFRoZXJlIGFyZQotKyAgIHR3byBjYXNlcyB0 byBjb25zaWRlci4gIElmIHdlIGFyZSByZWFkaW5nIHN5bWJvbHMgZGlyZWN0bHksIHRoZW4gb24K LSsgICBhIGZhaWx1cmUgdGhlIG9iamZpbGUgd2lsbCBiZSBkZXN0cm95ZWQuICBJbiB0aGlzIGNh c2UsIGNsZWFyaW5nCi0rICAgdGhlIHBzeW10YWJzIGlzIGZpbmUgLS0gYSBsaXR0bGUgd2FzdGVk IHRpbWUsIGJ1dCBub3RoaW5nIHNlcmlvdXMuCi0rICAgSWYgd2UgYXJlIHJlYWRpbmcgc3ltYm9s cyBsYXppbHksIHRoZW4gaXQgaXMgdG9vIGxhdGUgdG8gZGVzdHJveQotKyAgIHRoZSBvYmpmaWxl LiAgSW5zdGVhZCB3ZSBqdXN0IG1ha2UgaXQgbG9vayBsaWtlIHRoZSBvYmpmaWxlIGhhcyBubwot KyAgIHBzeW10YWJzLiAgKi8KKysgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndDsK ICsKLStzdGF0aWMgdm9pZAotK2RvX2NsZWFyX3BzeW10YWJzICh2b2lkICphcmcpCi0rewotKyAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBhcmc7Ci0rCi0rICBvYmpmaWxlLT5wc3ltdGFic19h ZGRybWFwID0gTlVMTDsKLSsgIG9iamZpbGUtPnBzeW10YWJzID0gTlVMTDsKLSsgIGJjYWNoZV94 ZnJlZSAob2JqZmlsZS0+cHN5bWJvbF9jYWNoZSk7Ci0rICBvYmpmaWxlLT5wc3ltYm9sX2NhY2hl ID0gYmNhY2hlX3htYWxsb2MgKCk7Ci0rICB4ZnJlZSAob2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xz Lmxpc3QpOwotKyAgbWVtc2V0ICgmb2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLCAwLCBzaXplb2Yg KG9iamZpbGUtPmdsb2JhbF9wc3ltYm9scykpOwotKyAgeGZyZWUgKG9iamZpbGUtPnN0YXRpY19w c3ltYm9scy5saXN0KTsKLSsgIG1lbXNldCAoJm9iamZpbGUtPnN0YXRpY19wc3ltYm9scywgMCwg c2l6ZW9mIChvYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMpKTsKKysgIGZ1bmN0aW9uX25hbWVfZ251 X2lmdW5jX3RndCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9uYW1lKQorKwkJCQkJKyBzdHJs ZW4gKCJAZ251LWlmdW5jLXRndCIpICsgMSk7CisrICBzcHJpbnRmIChmdW5jdGlvbl9uYW1lX2du dV9pZnVuY190Z3QsICIlc0BnbnUtaWZ1bmMtdGd0IiwgZnVuY3Rpb25fbmFtZSk7CisrCisrICBy ZXR1cm4gbG9va3VwX21pbmltYWxfc3ltYm9sIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3Qs IE5VTEwsIE5VTEwpOwogK30KICsKLSAvKiBCdWlsZCB0aGUgcGFydGlhbCBzeW1ib2wgdGFibGUg YnkgZG9pbmcgYSBxdWljayBwYXNzIHRocm91Z2ggdGhlCi0gICAgLmRlYnVnX2luZm8gYW5kIC5k ZWJ1Z19hYmJyZXYgc2VjdGlvbnMuICAqLwotIAotQEAgLTIwODAsNyArMjMzMiw3IEBAIGR3YXJm Ml9idWlsZF9wc3ltdGFic19oYXJkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgIG1t YXAoKSAgb24gYXJjaGl0ZWN0dXJlcyB0aGF0IHN1cHBvcnQgaXQuIChGSVhNRSkgKi8KLSAgIGJm ZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7Ci0gICBnZGJfYnl0ZSAqaW5mb19wdHI7Ci0tICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190bzsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvLCAqY2xlYXJf cHN5bXRhYnM7Ci0gCi0gICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZm ZXI7Ci0gCi1AQCAtMjA5NCw2ICsyMzQ2LDcgQEAgZHdhcmYyX2J1aWxkX3BzeW10YWJzX2hhcmQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIAotICAgb2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1h cCA9Ci0gICAgIGFkZHJtYXBfY3JlYXRlX211dGFibGUgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2spOwotKyAgY2xlYXJfcHN5bXRhYnMgPSBtYWtlX2NsZWFudXAgKGRvX2NsZWFyX3BzeW10YWJz LCBvYmpmaWxlKTsKLSAKLSAgIC8qIFNpbmNlIHRoZSBvYmplY3RzIHdlJ3JlIGV4dHJhY3Rpbmcg ZnJvbSAuZGVidWdfaW5mbyB2YXJ5IGluCi0gICAgICBsZW5ndGgsIG9ubHkgdGhlIGluZGl2aWR1 YWwgZnVuY3Rpb25zIHRvIGV4dHJhY3QgdGhlbSAobGlrZQotQEAgLTIxMjMsNiArMjM3Niw3IEBA IGR3YXJmMl9idWlsZF9wc3ltdGFic19oYXJkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAJ CQkJCSAgICBkd2FyZjJfcGVyX29iamZpbGUtPmluZm8uc2l6ZSk7Ci0gICAgIH0KLSAKLSsgIGRp c2NhcmRfY2xlYW51cHMgKGNsZWFyX3BzeW10YWJzKTsKLSAgIG9iamZpbGUtPnBzeW10YWJzX2Fk ZHJtYXAgPSBhZGRybWFwX2NyZWF0ZV9maXhlZCAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCwK LSAJCQkJCQkgICAgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0gCi1AQCAtMjM4OSwxMSAr MjY0MywxOCBAQCBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9p bmZvICpwZGksCi0gICAgICAgfHwgcGFyZW50LT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUKLSAg ICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfZW51bWVyYXRpb25fdHlwZSkKLSAgICAgewot KyAgICAgIGNoYXIgKnBhcmVudF9uYW1lID0gcGFyZW50LT5uYW1lOworK2ludAorK3Jlc29sdmVf Z251X2lmdW5jIChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBDT1JFX0FERFIgKmZ1bmN0aW9u X2FkZHJlc3NwKQorK3sKKysgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKICsKLSsgICAg ICAvKiBHKysgNC4xIHByb2R1Y2VkIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6 OiIuICAqLwotKyAgICAgIGlmIChwYXJlbnQtPnRhZyA9PSBEV19UQUdfbmFtZXNwYWNlICYmIHBh cmVudF9uYW1lICE9IE5VTEwKLSsgICAgICAgICAgJiYgc3RyY21wIChwYXJlbnRfbmFtZSwgIjo6 IikgPT0gMCkKLSsJcGFyZW50X25hbWUgPSBOVUxMOworKyAgbXN5bSA9IHJlc29sdmVfZ251X2lm dW5jX2J5X2NhY2hlIChmdW5jdGlvbl9uYW1lKTsKKysgIGlmIChtc3ltICE9IE5VTEwpCisrICAg IHsKKysgICAgICAqZnVuY3Rpb25fYWRkcmVzc3AgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5 bSk7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KICsKLSAgICAgICBpZiAoZ3JhbmRwYXJlbnRf c2NvcGUgPT0gTlVMTCkKLS0JcGFyZW50LT5zY29wZSA9IHBhcmVudC0+bmFtZTsKLSsJcGFyZW50 LT5zY29wZSA9IHBhcmVudF9uYW1lOwotICAgICAgIGVsc2UKLSAJcGFyZW50LT5zY29wZSA9IHR5 cGVuYW1lX2NvbmNhdCAoJmN1LT5jb21wX3VuaXRfb2JzdGFjaywgZ3JhbmRwYXJlbnRfc2NvcGUs Ci0tCQkJCQkgcGFyZW50LT5uYW1lLCBjdSk7Ci0rCQkJCQkgcGFyZW50X25hbWUsIGN1KTsKLSAg ICAgfQotICAgZWxzZSBpZiAocGFyZW50LT50YWcgPT0gRFdfVEFHX2VudW1lcmF0b3IpCi0gICAg IC8qIEVudW1lcmF0b3JzIHNob3VsZCBub3QgZ2V0IHRoZSBuYW1lIG9mIHRoZSBlbnVtZXJhdGlv biBhcyBhIHByZWZpeC4gICovCi1AQCAtMjQwNSw3ICsyNjY2LDcgQEAgcGFydGlhbF9kaWVfcGFy ZW50X3Njb3BlIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLAotIAkgaWdub3JpbmcgdGhl bS4gICovCi0gICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotIAkJIF8oInVu aGFuZGxlZCBjb250YWluaW5nIERJRSB0YWcgJWQgZm9yIERJRSBhdCAlZCIpLAotLQkJIHBhcmVu dC0+dGFnLCBwZGktPm9mZnNldCk7Ci0rCQkgcGFyZW50LT50YWcsIHJlYWxfcGRpLT5vZmZzZXQp OwotICAgICAgIHBhcmVudC0+c2NvcGUgPSBncmFuZHBhcmVudF9zY29wZTsKLSAgICAgfQotIAot QEAgLTI0MjAsMTIgKzI2ODEsMjIgQEAgcGFydGlhbF9kaWVfZnVsbF9uYW1lIChzdHJ1Y3QgcGFy dGlhbF9kaWVfaW5mbyAqcGRpLAotIAkJICAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIHsK LSAgIGNoYXIgKnBhcmVudF9zY29wZTsKLSsgIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpyZWFs X3BkaTsKLSAKLS0gIHBhcmVudF9zY29wZSA9IHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAocGRp LCBjdSk7Ci0tICBpZiAocGFyZW50X3Njb3BlID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwot LSAgZWxzZQotKyAgLyogV2UgbmVlZCB0byBsb29rIGF0IG91ciBwYXJlbnQgRElFOyBpZiB3ZSBo YXZlIGEgRFdfQVRfc3BlY2lmaWNhdGlvbiwKLSsgICAgIHRoZW4gdGhpcyBtZWFucyB0aGUgcGFy ZW50IG9mIHRoZSBzcGVjaWZpY2F0aW9uIERJRS4KLSsgICAgIHBhcnRpYWxfZGllX3BhcmVudF9z Y29wZSBkb2VzIHRoaXMgbG9vcCBhbHNvLCBidXQgd2UgZG8gaXQgaGVyZQotKyAgICAgc2luY2Ug d2UgbmVlZCB0byBleGFtaW5lIHJlYWxfcGRpLT5wYXJlbnQgb3Vyc2VsdmVzLiAgKi8KKysgIG1z eW0gPSByZXNvbHZlX2dudV9pZnVuY19ieV9nb3QgKGZ1bmN0aW9uX25hbWUpOworKyAgaWYgKG1z eW0gIT0gTlVMTCkKKysgICAgeworKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9W QUxVRV9BRERSRVNTIChtc3ltKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQogKwotKyAgcmVh bF9wZGkgPSBwZGk7Ci0rICB3aGlsZSAocmVhbF9wZGktPmhhc19zcGVjaWZpY2F0aW9uKQotKyAg ICByZWFsX3BkaSA9IGZpbmRfcGFydGlhbF9kaWUgKHJlYWxfcGRpLT5zcGVjX29mZnNldCwgY3Up OworKyAgcmV0dXJuIDA7CisrfQogKwotKyAgcGFyZW50X3Njb3BlID0gcGFydGlhbF9kaWVfcGFy ZW50X3Njb3BlIChyZWFsX3BkaSwgY3UpOwotKyAgaWYgKHBhcmVudF9zY29wZSAhPSBOVUxMKQot ICAgICByZXR1cm4gdHlwZW5hbWVfY29uY2F0IChOVUxMLCBwYXJlbnRfc2NvcGUsIHBkaS0+bmFt ZSwgY3UpOworIHN0cnVjdCBidWlsZF9pZAorICAgeworICAgICBzaXplX3Qgc2l6ZTsKK0BAIC03 OTcsNiArMTA0Niw4IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBpbnQgc3ltZmlsZV9mbGFncykKKyAJICAgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3Ig KCkpKTsKKyAKKyAgICAgICBlbGZfc3ltdGFiX3JlYWQgKG9iamZpbGUsIFNUX0RZTkFNSUMsIGR5 bnN5bWNvdW50LCBkeW5fc3ltYm9sX3RhYmxlLCAwKTsKICsKLSsgIHJldHVybiBOVUxMOwotIH0K KysgICAgICBlbGZfcmVsX3BsdF9yZWFkIChvYmpmaWxlLCBkeW5fc3ltYm9sX3RhYmxlKTsKKyAg ICAgfQogIAotIHN0YXRpYyB2b2lkCi1AQCAtMjQ0MSwxMiArMjcxMiw5IEBAIGFkZF9wYXJ0aWFs X3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCisgICAvKiBBZGQgc3ludGhldGljIHN5bWJvbHMgLSBmb3IgaW5zdGFuY2UsIG5hbWVzIGZv ciBhbnkgUExUIGVudHJpZXMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZh bC5jCitpbmRleCBmZjE3YzM0Li43YjllODcxIDEwMDY0NAorLS0tIGEvZ2RiL2V2YWwuYworKysr IGIvZ2RiL2V2YWwuYworQEAgLTQ0LDYgKzQ0LDcgQEAKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIK KyAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJ3cmFwcGVyLmgiCisrI2lu Y2x1ZGUgImR3YXJmMmxvYy5oIgogIAotICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+ c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7CisgI2luY2x1ZGUgImdk Yl9hc3NlcnQuaCIKICAKLS0gIGlmIChwZGlfbmVlZHNfbmFtZXNwYWNlIChwZGktPnRhZykpCi0t ICAgIHsKLS0gICAgICBhY3R1YWxfbmFtZSA9IHBhcnRpYWxfZGllX2Z1bGxfbmFtZSAocGRpLCBj dSk7Ci0tICAgICAgaWYgKGFjdHVhbF9uYW1lKQotLQlidWlsdF9hY3R1YWxfbmFtZSA9IDE7Ci0t ICAgIH0KLSsgIGFjdHVhbF9uYW1lID0gcGFydGlhbF9kaWVfZnVsbF9uYW1lIChwZGksIGN1KTsK LSsgIGlmIChhY3R1YWxfbmFtZSkKLSsgICAgYnVpbHRfYWN0dWFsX25hbWUgPSAxOwotIAotICAg aWYgKGFjdHVhbF9uYW1lID09IE5VTEwpCi0gICAgIGFjdHVhbF9uYW1lID0gcGRpLT5uYW1lOwot QEAgLTI1NDMsNiArMjgxMSwxMyBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFs X2RpZV9pbmZvICpwZGksIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkJCSAgICZvYmpmaWxlLT5n bG9iYWxfcHN5bWJvbHMsCi0gCQkJICAgMCwgKENPUkVfQUREUikgMCwgY3UtPmxhbmd1YWdlLCBv YmpmaWxlKTsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBEV19UQUdfbW9kdWxlOgotKyAgICAg IGFkZF9wc3ltYm9sX3RvX2xpc3QgKGFjdHVhbF9uYW1lLCBzdHJsZW4gKGFjdHVhbF9uYW1lKSwK LSsJCQkgICBidWlsdF9hY3R1YWxfbmFtZSwKLSsJCQkgICBNT0RVTEVfRE9NQUlOLCBMT0NfU1RB VElDLAotKwkJCSAgICZvYmpmaWxlLT5nbG9iYWxfcHN5bWJvbHMsCi0rCQkJICAgMCwgKENPUkVf QUREUikgMCwgY3UtPmxhbmd1YWdlLCBvYmpmaWxlKTsKLSsgICAgICBicmVhazsKLSAgICAgY2Fz ZSBEV19UQUdfY2xhc3NfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfaW50ZXJmYWNlX3R5cGU6Ci0g ICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotQEAgLTI1ODYsNDkgKzI4NjEsMTAgQEAg YWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKLSAgICAgICBicmVhazsKLSAgICAgfQorQEAgLTc4OCw2ICs3ODksNyBA QCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAg IGludCBzYXZlX3BvczE7CisgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CisgICBj aGFyICpmdW5jdGlvbl9uYW1lID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47 CiAgCi0tICAvKiBDaGVjayB0byBzZWUgaWYgd2Ugc2hvdWxkIHNjYW4gdGhlIG5hbWUgZm9yIHBv c3NpYmxlIG5hbWVzcGFjZQotLSAgICAgaW5mby4gIE9ubHkgZG8gdGhpcyBpZiB0aGlzIGlzIEMr KywgaWYgd2UgZG9uJ3QgaGF2ZSBuYW1lc3BhY2UKLS0gICAgIGRlYnVnZ2luZyBpbmZvIGluIHRo ZSBmaWxlLCBpZiB0aGUgcHN5bSBpcyBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlCi0tICAgICAob3Ro ZXJ3aXNlIHdlJ2xsIGhhdmUgcHN5bSA9PSBOVUxMKSwgYW5kIGlmIHdlIGFjdHVhbGx5IGhhZCBh Ci0tICAgICBtYW5nbGVkIG5hbWUgdG8gYmVnaW4gd2l0aC4gICovCi0tCi0tICAvKiBGSVhNRSBk cm93LzIwMDQtMDItMjI6IFdoeSBkb24ndCB3ZSBkbyB0aGlzIGZvciBjbGFzc2VzLCBpLmUuIHRo ZQotLSAgICAgY2FzZXMgd2hpY2ggZG8gbm90IHNldCBQU1lNIGFib3ZlPyAgKi8KLS0KLS0gIGlm IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKLS0gICAgICAmJiBjdS0+aGFzX25hbWVz cGFjZV9pbmZvID09IDAKLS0gICAgICAmJiBwc3ltICE9IE5VTEwKLS0gICAgICAmJiBTWU1CT0xf Q1BMVVNfREVNQU5HTEVEX05BTUUgKHBzeW0pICE9IE5VTEwpCi0tICAgIGNwX2NoZWNrX3Bvc3Np YmxlX25hbWVzcGFjZV9zeW1ib2xzIChTWU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKHBzeW0p LAotLQkJCQkJIG9iamZpbGUpOwotLQotICAgaWYgKGJ1aWx0X2FjdHVhbF9uYW1lKQotICAgICB4 ZnJlZSAoYWN0dWFsX25hbWUpOwotIH0KKyAgIHBjID0gKCpwb3MpKys7CisgICBvcCA9IGV4cC0+ ZWx0c1twY10ub3Bjb2RlOworQEAgLTE3NzIsNiArMTc3NCw4IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgICAgICByZXR1cm4gdmFsdWVf emVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKyAJCQkJIG5v dF9sdmFsKTsKKyAJICAgIH0KKysJICBlbHNlIGlmIChUWVBFX0dOVV9JRlVOQyAoZnR5cGUpKQor KwkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVlIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX1RBUkdF VF9UWVBFIChmdHlwZSkpKTsKKyAJICBlbHNlIGlmIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkp CisgCSAgICByZXR1cm4gYWxsb2NhdGVfdmFsdWUgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKSk7 CisgCSAgZWxzZQorQEAgLTE3OTgsNiArMTgwMiw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogIAotLS8qIERldGVybWluZSB3aGV0aGVyIGEg ZGllIG9mIHR5cGUgVEFHIGxpdmluZyBpbiBhIEMrKyBjbGFzcyBvcgotLSAgIG5hbWVzcGFjZSBu ZWVkcyB0byBoYXZlIHRoZSBuYW1lIG9mIHRoZSBzY29wZSBwcmVwZW5kZWQgdG8gdGhlCi0tICAg bmFtZSBsaXN0ZWQgaW4gdGhlIGRpZS4gICovCi0tCi0tc3RhdGljIGludAotLXBkaV9uZWVkc19u YW1lc3BhY2UgKGVudW0gZHdhcmZfdGFnIHRhZykKLS17Ci0tICBzd2l0Y2ggKHRhZykKLS0gICAg ewotLSAgICBjYXNlIERXX1RBR19uYW1lc3BhY2U6Ci0tICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6 Ci0tICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0tICAgIGNhc2UgRFdfVEFHX2ludGVyZmFj ZV90eXBlOgotLSAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLS0gICAgY2FzZSBEV19U QUdfdW5pb25fdHlwZToKLS0gICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLS0gICAg Y2FzZSBEV19UQUdfZW51bWVyYXRvcjoKLS0gICAgICByZXR1cm4gMTsKLS0gICAgZGVmYXVsdDoK LS0gICAgICByZXR1cm4gMDsKLS0gICAgfQotLX0KLS0KLSAvKiBSZWFkIGEgcGFydGlhbCBkaWUg Y29ycmVzcG9uZGluZyB0byBhIG5hbWVzcGFjZTsgYWxzbywgYWRkIGEgc3ltYm9sCi0gICAgY29y cmVzcG9uZGluZyB0byB0aGF0IG5hbWVzcGFjZSB0byB0aGUgc3ltYm9sIHRhYmxlLiAgTkFNRVNQ QUNFIGlzCi0gICAgdGhlIG5hbWUgb2YgdGhlIGVuY2xvc2luZyBuYW1lc3BhY2UuICAqLwotQEAg LTI2NTYsMTIgKzI4OTIsMTIgQEAgc3RhdGljIHZvaWQKLSBhZGRfcGFydGlhbF9tb2R1bGUgKHN0 cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksIENPUkVfQUREUiAqbG93cGMsCi0gCQkgICAgQ09S RV9BRERSICpoaWdocGMsIGludCBuZWVkX3BjLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0t ICAvKiBOb3cgc2NhbiBwYXJ0aWFsIHN5bWJvbHMgaW4gdGhhdCBtb2R1bGUuCi0rICAvKiBBZGQg YSBzeW1ib2wgZm9yIHRoZSBtb2R1bGUuICAqLworICAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0 aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLworICAgICAgIGFyZzEgPSBldmFs dWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7CisrICAgICAgb2xkX2No YWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKyAgICAgIG9iamVjdF9hZGRy ZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKyAgICAgICB0eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworICAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5 cGUpOwogIAotLSAgICAgRklYTUU6IFN1cHBvcnQgdGhlIHNlcGFyYXRlIEZvcnRyYW4gbW9kdWxl IG5hbWVzcGFjZXMuICAqLwotKyAgYWRkX3BhcnRpYWxfc3ltYm9sIChwZGksIGN1KTsKK0BAIC0x ODE4LDYgKzE4MjQsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpl eHBlY3RfdHlwZSwKKyAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCSAgICB9Cisg CX0gCisrICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCi0tICBpZiAocGRpLT5oYXNf Y2hpbGRyZW4pCi0tICAgIHNjYW5fcGFydGlhbF9zeW1ib2xzIChwZGktPmRpZV9jaGlsZCwgbG93 cGMsIGhpZ2hwYywgbmVlZF9wYywgY3UpOwotKyAgLyogUGFydGlhbCBzeW1ib2xzIGluIHRoYXQg bW9kdWxlIGFyZSBub3Qgc2Nhbm5lZCBhcyB0aGV5IGFyZSBuZXZlciBnbG9iYWxseQotKyAgICAg dmlzaWJsZS4gIFRoZXkgZ2V0IGltcG9ydGVkIHRvIHRoZSBzcGVjaWZpYyBzY29wZXMgb24gdGhl IGZ1bGwgcmVhZC4gICovCi0gfQorICAgICAgIHN3aXRjaCAoY29kZSkKKyAJeworQEAgLTIyNTQs MTMgKzIyNjEsMTkgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCisgICAgICAgeworIAlpbnQgc3Vic2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJ TVNdOworIAlpbnQgYXJyYXlfc2l6ZV9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKKysJaW50IGJ5 dGVfc3RyaWRlX2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworIAlpbnQgbmRpbWVuc2lvbnMgPSAx LCBpOworIAlzdHJ1Y3QgdHlwZSAqdG1wX3R5cGU7CisgCWludCBvZmZzZXRfaXRlbTsJLyogVGhl IGFycmF5IG9mZnNldCB3aGVyZSB0aGUgaXRlbSBsaXZlcyAqLworKwlDT1JFX0FERFIgb2Zmc2V0 X2J5dGU7CS8qIGJ5dGVfc3RyaWRlIGJhc2VkIG9mZnNldCAgKi8KKysJdW5zaWduZWQgZWxlbWVu dF9zaXplOwogIAotIC8qIFJlYWQgYSBwYXJ0aWFsIGRpZSBjb3JyZXNwb25kaW5nIHRvIGEgc3Vi cHJvZ3JhbSBhbmQgY3JlYXRlIGEgcGFydGlhbAotQEAgLTI3MzksNyArMjk3NSw2IEBAIGd1ZXNz X3N0cnVjdHVyZV9uYW1lIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqc3RydWN0X3BkaSwKLSAJ IGNvdWxkIGZpeCB0aGlzIGJ5IG9ubHkgdXNpbmcgdGhlIGRlbWFuZ2xlZCBuYW1lIHRvIGdldCB0 aGUKLSAJIHByZWZpeCAoYnV0IHNlZSBjb21tZW50IGluIHJlYWRfc3RydWN0dXJlX3R5cGUpLiAg Ki8KKyAJaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKKyAJICBlcnJvciAoXygiVG9vIG1h bnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMpOwogIAot LSAgICAgIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpjaGlsZF9wZGkgPSBzdHJ1Y3RfcGRpLT5k aWVfY2hpbGQ7Ci0gICAgICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnJlYWxfcGRpOworKwlv bGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7CisrCW9iamVjdF9hZGRy ZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKysKKyAJdG1wX3R5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CisgCW5kaW1lbnNpb25zID0gY2FsY19mNzdf YXJyYXlfZGltcyAodHlwZSk7CiAgCi0gICAgICAgLyogSWYgdGhpcyBESUUgKHRoaXMgRElFJ3Mg c3BlY2lmaWNhdGlvbiwgaWYgYW55KSBoYXMgYSBwYXJlbnQsIHRoZW4KLUBAIC0yNzUyLDI3ICsy OTg3LDYgQEAgZ3Vlc3Nfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpz dHJ1Y3RfcGRpLAorQEAgLTIyOTAsNiArMjMwMyw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVy Ym91bmQgKHRtcF90eXBlKTsKKyAJICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBf dHlwZSk7CiAgCi0gICAgICAgaWYgKHJlYWxfcGRpLT5kaWVfcGFyZW50ICE9IE5VTEwpCi0gCXJl dHVybjsKLS0KLS0gICAgICB3aGlsZSAoY2hpbGRfcGRpICE9IE5VTEwpCi0tCXsKLS0JICBpZiAo Y2hpbGRfcGRpLT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0pCi0tCSAgICB7Ci0tCSAgICAgIGNo YXIgKmFjdHVhbF9jbGFzc19uYW1lCi0tCQk9IGxhbmd1YWdlX2NsYXNzX25hbWVfZnJvbV9waHlz bmFtZSAoY3UtPmxhbmd1YWdlX2RlZm4sCi0tCQkJCQkJICAgICBjaGlsZF9wZGktPm5hbWUpOwot LQkgICAgICBpZiAoYWN0dWFsX2NsYXNzX25hbWUgIT0gTlVMTCkKLS0JCXsKLS0JCSAgc3RydWN0 X3BkaS0+bmFtZQotLQkJICAgID0gb2JzYXZlc3RyaW5nIChhY3R1YWxfY2xhc3NfbmFtZSwKLS0J CQkJICAgIHN0cmxlbiAoYWN0dWFsX2NsYXNzX25hbWUpLAotLQkJCQkgICAgJmN1LT5vYmpmaWxl LT5vYmpmaWxlX29ic3RhY2spOwotLQkJICB4ZnJlZSAoYWN0dWFsX2NsYXNzX25hbWUpOwotLQkJ fQotLQkgICAgICBicmVhazsKLS0JICAgIH0KLS0KLS0JICBjaGlsZF9wZGkgPSBjaGlsZF9wZGkt PmRpZV9zaWJsaW5nOwotLQl9Ci0gICAgIH0KLSB9CisrCSAgICBieXRlX3N0cmlkZV9hcnJheVtu YXJncyAtIGkgLSAxXSA9CisrCQkJCQlUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0bXBf dHlwZSk7CisrCisgCSAgICBhcnJheV9zaXplX2FycmF5W25hcmdzIC0gaSAtIDFdID0gdXBwZXIg LSBsb3dlciArIDE7CiAgCi1AQCAtMzMyNSw2ICszNTM5LDE0IEBAIHByb2Nlc3NfZGllIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgIGNhc2UgRFdfVEFH X2ltcG9ydGVkX2RlY2xhcmF0aW9uOgotICAgICBjYXNlIERXX1RBR19pbXBvcnRlZF9tb2R1bGU6 Ci0gICAgICAgcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8gPSAxOwotKyAgICAgIGlmIChj dS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKLSsJewotKwkgIGlmIChkaWUtPnRhZyA9 PSBEV19UQUdfaW1wb3J0ZWRfZGVjbGFyYXRpb24pCi0rCSAgICByZWFkX2ZvcnRyYW5faW1wb3J0 ZWRfZGVjbGFyYXRpb24gKGRpZSwgY3UpOwotKwkgIGVsc2UKLSsJICAgIHJlYWRfZm9ydHJhbl9p bXBvcnRlZF9tb2R1bGUgKGRpZSwgY3UpOwotKwkgIGJyZWFrOwotKwl9Ci0gICAgICAgaWYgKGRp ZS0+Y2hpbGQgIT0gTlVMTCAmJiAoZGllLT50YWcgPT0gRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0 aW9uCi0gCQkJCSB8fCBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfZm9ydHJhbikpCi0gCWNvbXBs YWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiVGFnICclcycgaGFzIHVuZXhwZWN0ZWQgY2hp bGRyZW4iKSwKLUBAIC0zMzM3LDQyICszNTU5LDE4MyBAQCBwcm9jZXNzX2RpZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICB9Ci0gfQorIAkgICAgLyog WmVyby1ub3JtYWxpemUgc3Vic2NyaXB0cyBzbyB0aGF0IG9mZnNldHRpbmcgd2lsbCB3b3JrLiAq LworQEAgLTIzMDgsMTMgKzIzMjQsMjUgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCSAgICAgIHRtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKKyAJICB9CiAgCi0rLyogQSBoZWxwZXIgZnVu Y3Rpb24gZm9yIGR3YXJmMl9jb21wdXRlX25hbWUgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIERJ RQotKyAgIG5lZWRzIHRvIGhhdmUgdGhlIG5hbWUgb2YgdGhlIHNjb3BlIHByZXBlbmRlZCB0byB0 aGUgbmFtZSBsaXN0ZWQgaW4gdGhlCi0rICAgZGllLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZGll X25lZWRzX25hbWVzcGFjZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQotK3sKLSsgIHN3aXRjaCAoZGllLT50YWcpCi0rICAgIHsKLSsgICAgY2FzZSBEV19UQUdf bmFtZXNwYWNlOgotKyAgICBjYXNlIERXX1RBR190eXBlZGVmOgotKyAgICBjYXNlIERXX1RBR19j bGFzc190eXBlOgotKyAgICBjYXNlIERXX1RBR19pbnRlcmZhY2VfdHlwZToKLSsgICAgY2FzZSBE V19UQUdfc3RydWN0dXJlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci0rICAg IGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0 b3I6Ci0rICAgIGNhc2UgRFdfVEFHX3N1YnByb2dyYW06Ci0rICAgIGNhc2UgRFdfVEFHX21lbWJl cjoKLSsgICAgICByZXR1cm4gMTsKLSsKLSsgICAgY2FzZSBEV19UQUdfdmFyaWFibGU6Ci0rICAg ICAgewotKwlzdHJ1Y3QgYXR0cmlidXRlICphdHRyOworKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dl dF91cHBlcmJvdW5kIC8gZjc3X2dldF9sb3dlcmJvdW5kIGNhbGxzIGFib3ZlLiAgKi8KKysJZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7CiArCi0rCS8qIFdlIG9ubHkgbmVlZCB0byBwcmVmaXggImds b2JhbGx5IiB2aXNpYmxlIHZhcmlhYmxlcy4gIFRoZXNlIGluY2x1ZGUKLSsJICAgYW55IHZhcmlh YmxlIG1hcmtlZCB3aXRoIERXX0FUX2V4dGVybmFsIG9yIGFueSB2YXJpYWJsZSB0aGF0Ci0rCSAg IGxpdmVzIGluIGEgbmFtZXNwYWNlLiAgW1ZhcmlhYmxlcyBpbiBhbm9ueW1vdXMgbmFtZXNwYWNl cwotKwkgICByZXF1aXJlIHByZWZpeGluZywgYnV0IHRoZXkgYXJlIG5vdCBEV19BVF9leHRlcm5h bC5dICAqLworIAkvKiBOb3cgbGV0IHVzIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGZvciB0aGlzIGl0 ZW0gKi8KKyAKKy0Jb2Zmc2V0X2l0ZW0gPSBzdWJzY3JpcHRfYXJyYXlbbmRpbWVuc2lvbnMgLSAx XTsKKysJb2Zmc2V0X2l0ZW0gPSAwOworKwlvZmZzZXRfYnl0ZSA9IDA7CiArCi0rCWlmIChkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9zcGVjaWZpY2F0aW9uLCBjdSkpCisrCWZvciAoaSA9IG5kaW1l bnNpb25zIC0gMTsgaSA+PSAwOyAtLWkpCiArCSAgewotKwkgICAgc3RydWN0IGR3YXJmMl9jdSAq c3BlY19jdSA9IGN1OwotKwkgICAgcmV0dXJuIGRpZV9uZWVkc19uYW1lc3BhY2UgKGRpZV9zcGVj aWZpY2F0aW9uIChkaWUsICZzcGVjX2N1KSwKLSsJCQkJCXNwZWNfY3UpOworKwkgICAgb2Zmc2V0 X2l0ZW0gKj0gYXJyYXlfc2l6ZV9hcnJheVtpXTsKKysJICAgIGlmIChieXRlX3N0cmlkZV9hcnJh eVtpXSA9PSAwKQorKwkgICAgICBvZmZzZXRfaXRlbSArPSBzdWJzY3JpcHRfYXJyYXlbaV07Cisr CSAgICBlbHNlCisrCSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNjcmlwdF9hcnJheVtpXSAqIGJ5 dGVfc3RyaWRlX2FycmF5W2ldOwogKwkgIH0KLSsKLSsJLyogQSB2YXJpYWJsZSBpbiBhIGxleGlj YWwgYmxvY2sgb2Ygc29tZSBraW5kIGRvZXMgbm90IG5lZWQKLSsJICAgYSBuYW1lc3BhY2UsIGV2 ZW4gdGhvdWdoIGluIEMrKyBzdWNoIHZhcmlhYmxlcyBtYXkgYmUKLSsJICAgZXh0ZXJuYWwgYW5k IGhhdmUgYSBtYW5nbGVkIG5hbWUuICAqLwotKwlpZiAoZGllLT5wYXJlbnQtPnRhZyA9PSBEV19U QUdfbGV4aWNhbF9ibG9jawotKwkgICAgfHwgZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdfdHJ5 X2Jsb2NrCi0rCSAgICB8fCBkaWUtPnBhcmVudC0+dGFnID09IERXX1RBR19jYXRjaF9ibG9jaykK LSsJICByZXR1cm4gMDsKLSsKLSsJYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4dGVy bmFsLCBjdSk7Ci0rCWlmIChhdHRyIHx8IGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX25hbWVz cGFjZSkKLSsJICByZXR1cm4gMTsKLSsKLSsJcmV0dXJuIDA7Ci0rICAgICAgfQotKwotKyAgICBk ZWZhdWx0OgotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rfQotKwotKy8qIENvbXB1dGUgdGhl IGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIERJRSBpbiBDVS4gIElmIFBIWVNOQU1FIGlzIG5vbnpl cm8sCi0rICAgY29tcHV0ZSB0aGUgcGh5c25hbWUgZm9yIHRoZSBvYmplY3QsIHdoaWNoIGluY2x1 ZGUgYSBtZXRob2QncwotKyAgIGZvcm1hbCBwYXJhbWV0ZXJzIChDKysvSmF2YSkgYW5kIHJldHVy biB0eXBlIChKYXZhKS4KLSsKLSsgICBUaGUgcmVzdWx0IGlzIGFsbG9jYXRlZCBvbiB0aGUgb2Jq ZmlsZV9vYnN0YWNrIGFuZCBjYW5vbmljYWxpemVkLiAgKi8KLSsKLStzdGF0aWMgY29uc3QgY2hh ciAqCi0rZHdhcmYyX2NvbXB1dGVfbmFtZSAoY2hhciAqbmFtZSwgc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotKwkJICAgICBpbnQgcGh5c25hbWUpCi0rewotKyAg aWYgKG5hbWUgPT0gTlVMTCkKLSsgICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKLSsK LSsgIC8qIFRoZXNlIGFyZSB0aGUgb25seSBsYW5ndWFnZXMgd2Uga25vdyBob3cgdG8gcXVhbGlm eSBuYW1lcyBpbi4gICovCi0rICBpZiAobmFtZSAhPSBOVUxMCi0rICAgICAgJiYgKGN1LT5sYW5n dWFnZSA9PSBsYW5ndWFnZV9jcGx1cyB8fCBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkp Ci0rICAgIHsKLSsgICAgICBpZiAoZGllX25lZWRzX25hbWVzcGFjZSAoZGllLCBjdSkpCisgCist CWZvciAoaSA9IG5kaW1lbnNpb25zIC0gMTsgaSA+IDA7IC0taSkKKy0JICBvZmZzZXRfaXRlbSA9 CistCSAgICBhcnJheV9zaXplX2FycmF5W2kgLSAxXSAqIG9mZnNldF9pdGVtICsgc3Vic2NyaXB0 X2FycmF5W2kgLSAxXTsKKysJZWxlbWVudF9zaXplID0gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VU X1RZUEUgKHRtcF90eXBlKSk7CisrCW9mZnNldF9ieXRlICs9IG9mZnNldF9pdGVtICogZWxlbWVu dF9zaXplOworIAorIAkvKiBMZXQgdXMgbm93IHBsYXkgYSBkaXJ0eSB0cmljazogd2Ugd2lsbCB0 YWtlIGFyZzEgCisgCSAgIHdoaWNoIGlzIGEgdmFsdWUgbm9kZSBwb2ludGluZyB0byB0aGUgdG9w bW9zdCBsZXZlbAorQEAgLTIzMjQsNyArMjM1Miw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgICByZXR1cm5zIHRoZSBjb3JyZWN0IHR5 cGUgdmFsdWUgKi8KKyAKKyAJZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAoYXJnMSwgdG1wX3R5 cGUpOworLQlyZXR1cm4gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcmcxLCBvZmZzZXRfaXRl bSwgMCk7CisrCXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFyZzEsIG9mZnNldF9i eXRlKTsKKyAgICAgICB9CisgCisgICAgIGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6CitAQCAtMjU1 OCwxNCArMjU4NiwyMiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpl eHBlY3RfdHlwZSwKKyAgICAgICBpZiAoZXhwZWN0X3R5cGUgJiYgVFlQRV9DT0RFIChleHBlY3Rf dHlwZSkgPT0gVFlQRV9DT0RFX1BUUikKKyAJZXhwZWN0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBF IChjaGVja190eXBlZGVmIChleHBlY3RfdHlwZSkpOworICAgICAgIGFyZzEgPSBldmFsdWF0ZV9z dWJleHAgKGV4cGVjdF90eXBlLCBleHAsIHBvcywgbm9zaWRlKTsKKysgICAgICBvbGRfY2hhaW4g PSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7CisrICAgICAgb2JqZWN0X2FkZHJlc3Nf c2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOworICAgICAgIHR5cGUgPSBjaGVja190eXBl ZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX01FVEhPRFBUUgorIAkgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X01FTUJFUlBUUikKKyAJZXJyb3IgKF8oIkF0dGVtcHQgdG8gZGVyZWZlcmVuY2UgcG9pbnRlciB0 byBtZW1iZXIgd2l0aG91dCBhbiBvYmplY3QiKSk7CisgICAgICAgaWYgKG5vc2lkZSA9PSBFVkFM X1NLSVApCistCWdvdG8gbm9zaWRlcmV0OwogKwl7Ci0rCSAgbG9uZyBsZW5ndGg7Ci0rCSAgY2hh ciAqcHJlZml4OwotKwkgIHN0cnVjdCB1aV9maWxlICpidWY7Ci0rCi0rCSAgcHJlZml4ID0gZGV0 ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7Ci0rCSAgYnVmID0gbWVtX2ZpbGVvcGVuICgpOwotKwkg IGlmICgqcHJlZml4ICE9ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGNoYXIgKnByZWZpeGVkX25h bWUgPSB0eXBlbmFtZV9jb25jYXQgKE5VTEwsIHByZWZpeCwgbmFtZSwgY3UpOwotKwkgICAgICBm cHV0c191bmZpbHRlcmVkIChwcmVmaXhlZF9uYW1lLCBidWYpOwotKwkgICAgICB4ZnJlZSAocHJl Zml4ZWRfbmFtZSk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgZnB1dHNfdW5maWx0ZXJlZCAo bmFtZSA/IG5hbWUgOiAiIiwgYnVmKTsKLSsKLSsJICAvKiBGb3IgSmF2YSBhbmQgQysrIG1ldGhv ZHMsIGFwcGVuZCBmb3JtYWwgcGFyYW1ldGVyIHR5cGUKLSsJICAgICBpbmZvcm1hdGlvbiwgaWYg UEhZU05BTUUuICAqLwotKwotKwkgIGlmIChwaHlzbmFtZSAmJiBkaWUtPnRhZyA9PSBEV19UQUdf c3VicHJvZ3JhbQotKwkgICAgICAmJiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCi0r CQkgIHx8IGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKSkKKysJICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKKysJICBnb3RvIG5vc2lkZXJldDsKKysJfQorICAgICAgIGlmICh1bm9wX3Vz ZXJfZGVmaW5lZF9wIChvcCwgYXJnMSkpCistCXJldHVybiB2YWx1ZV94X3Vub3AgKGFyZzEsIG9w LCBub3NpZGUpOworKwl7CisrCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgcmV0dXJu IHZhbHVlX3hfdW5vcCAoYXJnMSwgb3AsIG5vc2lkZSk7CisrCX0KKyAgICAgICBlbHNlIGlmIChu b3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCisgCXsKKyAJICB0eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworQEAgLTI1NzQsMTIgKzI2MTAsMTggQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCSAgLyog SW4gQyB5b3UgY2FuIGRlcmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUgMXN0IGVsdC4gICov CisgCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisgCSAgICAp CistCSAgICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkJ ICAgICAgIGx2YWxfbWVtb3J5KTsKICsJICAgIHsKLSsJICAgICAgc3RydWN0IHR5cGUgKnR5cGUg PSByZWFkX3R5cGVfZGllIChkaWUsIGN1KTsKLSsKLSsJICAgICAgY190eXBlX3ByaW50X2FyZ3Mg KHR5cGUsIGJ1ZiwgMCwgY3UtPmxhbmd1YWdlKTsKLSsKLSsJICAgICAgaWYgKGN1LT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9qYXZhKQotKwkJewotKwkJICAvKiBGb3IgamF2YSwgd2UgbXVzdCBhcHBl bmQgdGhlIHJldHVybiB0eXBlIHRvIG1ldGhvZAotKwkJICAgICBuYW1lcy4gKi8KLSsJCSAgaWYg KGRpZS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQotKwkJICAgIGphdmFfcHJpbnRfdHlwZSAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSksICIiLCBidWYsCi0rCQkJCSAgICAgMCwgMCk7Ci0rCQl9 Ci0rCSAgICAgIGVsc2UgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKLSsJCXsK LSsJCSAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkgPiAwCi0rCQkgICAgICAmJiBUWVBFX0ZJRUxE X0FSVElGSUNJQUwgKHR5cGUsIDApCi0rCQkgICAgICAmJiBUWVBFX0NPTlNUIChUWVBFX1RBUkdF VF9UWVBFIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSkpCi0rCQkgICAgZnB1dHNfdW5maWx0 ZXJlZCAoIiBjb25zdCIsIGJ1Zik7Ci0rCQl9CisrCSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hh aW4pOworKwkgICAgICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSks CisrCQkJCSBsdmFsX21lbW9yeSk7CiArCSAgICB9Ci0rCi0rCSAgbmFtZSA9IHVpX2ZpbGVfb2Jz YXZlc3RyaW5nIChidWYsICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCQkgICAg ICAgJmxlbmd0aCk7Ci0rCSAgdWlfZmlsZV9kZWxldGUgKGJ1Zik7Ci0rCi0rCSAgaWYgKGN1LT5s YW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKKyAJICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9JTlQpCistCSAgICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4g aW50LiAgKi8KKy0JICAgIHJldHVybiB2YWx1ZV96ZXJvIChidWlsdGluX3R5cGUgKGV4cC0+Z2Ri YXJjaCktPmJ1aWx0aW5faW50LAorLQkJCSAgICAgICBsdmFsX21lbW9yeSk7CiArCSAgICB7Ci0r CSAgICAgIGNoYXIgKmNuYW1lCi0rCQk9IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAobmFtZSwg Y3UsCi0rCQkJCQkgICAgJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2spOwotKwkgICAgICBp ZiAoY25hbWUgIT0gTlVMTCkKLSsJCW5hbWUgPSBjbmFtZTsKKysJICAgICAgZG9fY2xlYW51cHMg KG9sZF9jaGFpbik7CisrCSAgICAgIC8qIEdEQiBhbGxvd3MgZGVyZWZlcmVuY2luZyBhbiBpbnQu ICAqLworKwkgICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFy Y2gpLT5idWlsdGluX2ludCwKKysJCQkJIGx2YWxfbWVtb3J5KTsKICsJICAgIH0KKyAJICBlbHNl CisgCSAgICBlcnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50 ZXIgdmFsdWUuIikpOworIAl9CitAQCAtMjU4OSw5ICsyNjMxLDE0IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgZG8uICAibG9uZyBsb25n IiB2YXJpYWJsZXMgYXJlIHJhcmUgZW5vdWdoIHRoYXQKKyAJIEJVSUxUSU5fVFlQRV9MT05HRVNU IHdvdWxkIHNlZW0gdG8gYmUgYSBtaXN0YWtlLiAgKi8KKyAgICAgICBpZiAoVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfSU5UKQorLQlyZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90 eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKy0JCQkgICAgICAoQ09SRV9BRERSKSB2 YWx1ZV9hc19hZGRyZXNzIChhcmcxKSk7CistICAgICAgcmV0dXJuIHZhbHVlX2luZCAoYXJnMSk7 CisrCXsKKysJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysJICByZXR1cm4gdmFsdWVfYXRf bGF6eSAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJKENP UkVfQUREUikgdmFsdWVfYXNfYWRkcmVzcyAoYXJnMSkpOwogKwl9Ci0rICAgIH0KLSsKLSsgIHJl dHVybiBuYW1lOwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9m IERJRSwgYmFzZWQgb24gaXRzIERXX0FUX25hbWUuCi0gICAgSWYgc2NvcGUgcXVhbGlmaWVycyBh cmUgYXBwcm9wcmlhdGUgdGhleSB3aWxsIGJlIGFkZGVkLiAgVGhlIHJlc3VsdAotICAgIHdpbGwg YmUgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlX29ic3RhY2ssIG9yIE5VTEwgaWYgdGhlIERJRSBk b2VzCi0tICAgbm90IGhhdmUgYSBuYW1lLiAgKi8KLSsgICBub3QgaGF2ZSBhIG5hbWUuICBOQU1F IG1heSBlaXRoZXIgYmUgZnJvbSBhIHByZXZpb3VzIGNhbGwgdG8KLSsgICBkd2FyZjJfbmFtZSBv ciBOVUxMLgotKwotKyAgIFRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgYmUgY2Fub25pY2FsaXplZCAo aWYgQysrL0phdmEpLiAqLworKyAgICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFyZzEpOworKyAgICAg IGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIHJldHVybiBhcmcxOwogIAotIHN0YXRp YyBjb25zdCBjaGFyICoKLS1kd2FyZjJfZnVsbF9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rZHdhcmYyX2Z1bGxfbmFtZSAoY2hhciAqbmFtZSwgc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICBjYXNlIFVOT1Bf QUREUjoKKyAgICAgICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVt YmVycy4gICovCitAQCAtMjkzMyw3ICsyOTgwLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29l cmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewotLSAgc3RydWN0IGF0dHJpYnV0ZSAq YXR0cjsKLS0gIGNoYXIgKnByZWZpeCwgKm5hbWU7Ci0tICBzdHJ1Y3QgdWlfZmlsZSAqYnVmID0g TlVMTDsKLSsgIHJldHVybiBkd2FyZjJfY29tcHV0ZV9uYW1lIChuYW1lLCBkaWUsIGN1LCAwKTsK LSt9Ci0gCi0tICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotLSAgaWYgKCFuYW1lKQot LSAgICByZXR1cm4gTlVMTDsKLSsvKiBDb25zdHJ1Y3QgYSBwaHlzbmFtZSBmb3IgdGhlIGdpdmVu IERJRSBpbiBDVS4gIE5BTUUgbWF5IGVpdGhlciBiZQotKyAgIGZyb20gYSBwcmV2aW91cyBjYWxs IHRvIGR3YXJmMl9uYW1lIG9yIE5VTEwuICBUaGUgcmVzdWx0IHdpbGwgYmUKLSsgICBhbGxvY2F0 ZWQgb24gdGVoIG9iamZpbGVfb2Jqc3RhY2sgb3IgTlVMTCBpZiB0aGUgRElFIGRvZXMgbm90IGhh dmUgYQotKyAgIG5hbWUuCi0gCi0tICAvKiBUaGVzZSBhcmUgdGhlIG9ubHkgbGFuZ3VhZ2VzIHdl IGtub3cgaG93IHRvIHF1YWxpZnkgbmFtZXMgaW4uICAqLwotLSAgaWYgKGN1LT5sYW5ndWFnZSAh PSBsYW5ndWFnZV9jcGx1cwotLSAgICAgICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9qYXZh KQotLSAgICByZXR1cm4gbmFtZTsKLS0KLS0gIC8qIElmIG5vIHByZWZpeCBpcyBuZWNlc3Nhcnkg Zm9yIHRoaXMgdHlwZSBvZiBESUUsIHJldHVybiB0aGUKLS0gICAgIHVucXVhbGlmaWVkIG5hbWUu ICBUaGUgb3RoZXIgdGhyZWUgdGFncyBsaXN0ZWQgY291bGQgYmUgaGFuZGxlZAotLSAgICAgaW4g cGRpX25lZWRzX25hbWVzcGFjZSwgYnV0IHRoYXQgcmVxdWlyZXMgYnJvYWRlciBjaGFuZ2VzLiAg Ki8KLS0gIGlmICghcGRpX25lZWRzX25hbWVzcGFjZSAoZGllLT50YWcpCi0tICAgICAgJiYgZGll LT50YWcgIT0gRFdfVEFHX3N1YnByb2dyYW0KLS0gICAgICAmJiBkaWUtPnRhZyAhPSBEV19UQUdf dmFyaWFibGUKLS0gICAgICAmJiBkaWUtPnRhZyAhPSBEV19UQUdfbWVtYmVyKQotLSAgICByZXR1 cm4gbmFtZTsKLS0KLS0gIHByZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOwotLSAg aWYgKCpwcmVmaXggIT0gJ1wwJykKLS0gICAgbmFtZSA9IHR5cGVuYW1lX2NvbmNhdCAoJmN1LT5v YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHByZWZpeCwKLS0JCQkgICAgbmFtZSwgY3UpOwotKyAg IFRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgYmUgY2Fub25pY2FsaXplZCAoaWYgQysrL0phdmEpLiAg Ki8KLSAKLS0gIHJldHVybiBuYW1lOwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStkd2FyZjJfcGh5 c25hbWUgKGNoYXIgKm5hbWUsIHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKLSt7Ci0rICByZXR1cm4gZHdhcmYyX2NvbXB1dGVfbmFtZSAobmFtZSwgZGllLCBjdSwg MSk7Ci0rfQotKwotKy8qIFJlYWQgdGhlIGdpdmVuIERJRSdzIERXX0FUX2RlY2xfbGluZSBudW1i ZXIuICBSZXR1cm4gLTEgaWYgaW4gY2FzZSBvZiBhbgotKyAgIGVycm9yLiAgKi8KLSsKLStzdGF0 aWMgaW50Ci0rZHdhcmYyX3JlYWRfZGVjbF9saW5lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgc3RydWN0IGF0dHJpYnV0ZSAqbGluZV9hdHRyOwot KwotKyAgbGluZV9hdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGVjbF9saW5lLCBjdSk7 Ci0rICBpZiAobGluZV9hdHRyKQotKyAgICByZXR1cm4gRFdfVU5TTkQgKGxpbmVfYXR0cik7Ci0r Ci0rICByZXR1cm4gLTE7Ci0gfQorICAgZW51bSBleHBfb3Bjb2RlIG9wOworICAgaW50IHBjOwor LSAgc3RydWN0IHZhbHVlICp2YWw7CisrICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IE5VTEw7CisgICBz dHJ1Y3Qgc3ltYm9sICp2YXI7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKICAKLSAvKiBSZWFkIHRo ZSBpbXBvcnQgc3RhdGVtZW50IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gZGllIGFuZCByZWNvcmQg aXQuICAqLwotQEAgLTMzODUsMTEgKzM3NDgsMTUgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgZHdh cmYyX2N1ICppbXBvcnRlZF9jdTsKLSAgIGNvbnN0IGNoYXIgKmltcG9ydGVkX25hbWU7Ci0gICBj b25zdCBjaGFyICppbXBvcnRlZF9uYW1lX3ByZWZpeDsKLS0gIGNoYXIgKmltcG9ydF9hbGlhczsK LS0KLS0gIGNvbnN0IGNoYXIgKmltcG9ydF9wcmVmaXg7Ci0gICBjaGFyICpjYW5vbmljYWxfbmFt ZTsKLS0KLSsgIGNvbnN0IGNoYXIgKmltcG9ydF9hbGlhczsKLSsgIGNvbnN0IGNoYXIgKmltcG9y dGVkX2RlY2xhcmF0aW9uID0gIiI7Ci0rICBjb25zdCBjaGFyICppbXBvcnRfcHJlZml4OwotKyAg Ci0rICBpbnQgbGluZV9udW1iZXIgPSAtMTsKLSsgIAotKyAgaW50IGlzX2Fub255bW91cyA9IDA7 Ci0rICAKLSAgIGltcG9ydF9hdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfaW1wb3J0LCBj dSk7Ci0gICBpZiAoaW1wb3J0X2F0dHIgPT0gTlVMTCkKK0BAIC0yOTQ0LDEyICsyOTkxLDE3IEBA IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAog ICAgICB7Ci1AQCAtMzQzOSwxOSArMzgwNiwyNSBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgfQorICAgICBj YXNlIE9QX1ZBUl9WQUxVRToKKyAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7 CisrICAgICAgLyogYWRkcmVzc19vZl92YXJpYWJsZSB3aWxsIGNhbGwgb2JqZWN0X2FkZHJlc3Nf c2V0IGZvciBjaGVja190eXBlZGVmLgorKwkgQ2FsbCBpdCBvbmx5IGlmIHJlcXVpcmVkIGFzIGl0 IGNhbiBlcnJvci1vdXQgb24gVkFSIGluIHJlZ2lzdGVyLiAgKi8KKysgICAgICBpZiAoVFlQRV9E WU5BTUlDIChTWU1CT0xfVFlQRSAodmFyKSkpCisrCXZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUg KHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOworICAgICAgIHR5cGUgPSBjaGVja190eXBl ZGVmIChTWU1CT0xfVFlQRSAodmFyKSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX0FSUkFZCisgCSAgJiYgQ0FTVF9JU19DT05WRVJTSU9OIChleHAtPmxhbmd1YWdl X2RlZm4pKQorIAl7CisgCSAgKCpwb3MpICs9IDQ7CistCSAgdmFsID0gYWRkcmVzc19vZl92YXJp YWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7CisrCSAgaWYgKCF2YWwpCisrCSAg ICB2YWwgPSBhZGRyZXNzX29mX3ZhcmlhYmxlICh2YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJsb2Nr KTsKKyAJICByZXR1cm4gdmFsdWVfY2FzdCAobG9va3VwX3BvaW50ZXJfdHlwZSAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkpLAorIAkJCSAgICAgdmFsKTsKKyAJfQorQEAgLTMwMDEsOSArMzA1Mywx MyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX3NpemVvZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50ICpwb3MpCiAgCi0gICAvKiBGaWd1cmUgb3V0IHRoZSBsb2NhbCBuYW1lIGFmdGVyIGltcG9y dC4gICovCi0tICBpbXBvcnRfYWxpYXMgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rICBpbXBv cnRfYWxpYXMgPSBkd2FyZjJfbmFtZShkaWUsIGN1KTsKKyAgICAgY2FzZSBPUF9WQVJfVkFMVUU6 CisgICAgICAgKCpwb3MpICs9IDQ7CistICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFNZTUJP TF9UWVBFIChleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2wpKTsKKy0gICAgICByZXR1cm4KKy0JdmFs dWVfZnJvbV9sb25nZXN0IChzaXplX3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkp OworKyAgICAgIC8qIFdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgcmVhZF92YXJfdmFsdWUgYnV0IHRo ZSBvYmplY3QgZXZhbHVhdGlvbiBtYXkKKysJIG5lZWQgdG8gaGF2ZSBleGVjdXRlZCBvYmplY3Rf YWRkcmVzc19zZXQgd2hpY2ggbmVlZHMgdmFsaWQKKysJIFNZTUJPTF9WQUxVRV9BRERSRVNTIG9m IHRoZSBzeW1ib2wuICBTdGlsbCBWQUxVRSByZXR1cm5lZCBieQorKwkgcmVhZF92YXJfdmFsdWUg d2UgbGVmdCBhcyBsYXp5LiAgKi8KKysgICAgICB0eXBlID0gdmFsdWVfdHlwZSAocmVhZF92YXJf dmFsdWUgKGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbCwKKysJCQkJCWRlcHJlY2F0ZWRfc2FmZV9n ZXRfc2VsZWN0ZWRfZnJhbWUgKCkpKTsKKysgICAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0 IChzaXplX3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOwogIAotLSAgLyogRmln dXJlIG91dCB3aGVyZSB0aGUgc3RhdGVtZW50IGlzIGJlaW5nIGltcG9ydGVkIHRvLiAgKi8KLSsg IAotKyAgLyogRGV0ZXJtaW5lIHRoZSBsaW5lIG51bWJlciBhdCB3aGljaCB0aGUgaW1wb3J0IHdh cyBtYWRlICovCi0rICBsaW5lX251bWJlciA9IGR3YXJmMl9yZWFkX2RlY2xfbGluZShkaWUsIGN1 KTsKLSsgIAotKyAgLyogRmlndXJlIG91dCB3aGVyZSB0aGUgc3RhdGVtZW50IGlzIGJlaW5nIGlt cG9ydGVkIHRvICovCi0gICBpbXBvcnRfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBj dSk7CisgICAgIGRlZmF1bHQ6CisgICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZ UEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7CitkaWZmIC0tZ2l0IGEvZ2Ri L2YtbGFuZy5oIGIvZ2RiL2YtbGFuZy5oCitpbmRleCBmNWJiODJkLi4yOWNmNWJhIDEwMDY0NAor LS0tIGEvZ2RiL2YtbGFuZy5oCisrKysgYi9nZGIvZi1sYW5nLmgKK0BAIC0yOCw2ICsyOCwxMCBA QCBleHRlcm4gdm9pZCBmX2Vycm9yIChjaGFyICopOwkvKiBEZWZpbmVkIGluIGYtZXhwLnkgKi8K KyBleHRlcm4gdm9pZCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICosIGNvbnN0IGNoYXIgKiwg c3RydWN0IHVpX2ZpbGUgKiwgaW50LAorIAkJCSAgaW50KTsKICAKLSAgIC8qIEZpZ3VyZSBvdXQg d2hhdCB0aGUgc2NvcGUgb2YgdGhlIGltcG9ydGVkIGRpZSBpcyBhbmQgcHJlcGVuZCBpdAotICAg ICAgdG8gdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVkIGRpZS4gICovCi0gICBpbXBvcnRlZF9uYW1l X3ByZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGltcG9ydGVkX2RpZSwgaW1wb3J0ZWRfY3UpOwot LQotLSAgaWYgKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpID4gMCkKLS0gICAgewotLSAg ICAgIGNhbm9uaWNhbF9uYW1lID0gYWxsb2NhIChzdHJsZW4gKGltcG9ydGVkX25hbWVfcHJlZml4 KQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDIgKyBzdHJsZW4gKGltcG9ydGVk X25hbWUpICsgMSk7Ci0rICAKLSsgIGlmKGltcG9ydGVkX2RpZS0+dGFnICE9IERXX1RBR19uYW1l c3BhY2UpewotKyAgICBpbXBvcnRlZF9kZWNsYXJhdGlvbiA9IGltcG9ydGVkX25hbWU7Ci0rICAg IGNhbm9uaWNhbF9uYW1lID0gKGNoYXIqKWltcG9ydGVkX25hbWVfcHJlZml4OwotKyAgfWVsc2V7 Ci0rICAgIGlmKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpID4gMCl7Ci0rICAgICAgY2Fu b25pY2FsX25hbWUgPSBhbGxvY2EgKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiAr IHN0cmxlbiAoaW1wb3J0ZWRfbmFtZSkgKyAxKTsKLSAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9u YW1lLCBpbXBvcnRlZF9uYW1lX3ByZWZpeCk7Ci0gICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFt ZSwgIjo6Iik7Ci0gICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgaW1wb3J0ZWRfbmFtZSk7 Ci1AQCAtMzQ2MSwxMCArMzgzNCwxMyBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBjYW5vbmljYWxfbmFt ZSA9IGFsbG9jYSAoc3RybGVuIChpbXBvcnRlZF9uYW1lKSArIDEpOwotICAgICAgIHN0cmNweSAo Y2Fub25pY2FsX25hbWUsIGltcG9ydGVkX25hbWUpOwotICAgICB9CisrZXh0ZXJuIGNvbnN0IGNo YXIgKmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0KKysgIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CisrZXh0ZXJuIHZvaWQgZl9v YmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7Cisr CisgZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUg KiwgaW50LCBDT1JFX0FERFIsCisgCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAorIAkJCWNvbnN0 IHN0cnVjdCB2YWx1ZSAqLAorZGlmZiAtLWdpdCBhL2dkYi9mLXR5cGVwcmludC5jIGIvZ2RiL2Yt dHlwZXByaW50LmMKK2luZGV4IGQzNWEyNTUuLmRlYzgxZDUgMTAwNjQ0CistLS0gYS9nZGIvZi10 eXBlcHJpbnQuYworKysrIGIvZ2RiL2YtdHlwZXByaW50LmMKK0BAIC0zMiw3ICszMiw3IEBACisg I2luY2x1ZGUgImdkYmNvcmUuaCIKKyAjaW5jbHVkZSAidGFyZ2V0LmgiCisgI2luY2x1ZGUgImYt bGFuZy5oIgogLQotKyAgfQotKyAgCi0gICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3VzaW5n IChpbXBvcnRfcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fu b25pY2FsX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRf YWxpYXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRlZF9kZWNs YXJhdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVy LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfZGlyZWN0aXZlcyk7 Ci0gfQorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgor ICNpbmNsdWRlIDxlcnJuby5oPgogIAotQEAgLTM3MzQsNiArNDExMCwxNCBAQCBpbmhlcml0X2Fi c3RyYWN0X2RpZXMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CitAQCAtNDksNiArNDksMzQgQEAgdm9pZCBmX3R5 cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICos Cisgdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUg KiwgaW50LCBpbnQpOworIAwKICAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9h YnN0cmFjdF9vcmlnaW4sIGN1KTsKLSsgIAotKyAgLyogR0NDIDQuMyBpbmNvcnJlY3RseSB1c2Vz IERXX0FUX3NwZWNpZmljYXRpb24gdG8gaW5kaWNhdGUgZGllIGluaGVyaXRlbmNlCi0rICAgICBp biB0aGUgY2FzZSBvZiBpbXBvcnQgc3RhdGVtZW50cy4gVGhlIGZvbGxvd2luZyBpcyB0byBhY2Nv bW1vZGF0ZSAKLSsgICAgIHRoYXQuICAqLwotKyAgaWYoIWF0dHIpewotKyAgICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpOwotKyAgfQotKyAgCi0gICBp ZiAoIWF0dHIpCi0gICAgIHJldHVybjsKKytjb25zdCBjaGFyICoKKytmX29iamVjdF9hZGRyZXNz X2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkJCSAg ICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKKyt7CisrICBjb25zdCBjaGFyICptc2c7CisrCisr ICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSk7CisrICBpZiAobXNn ICE9IE5VTEwpCisrICAgIHsKKysgICAgICAvKiBBc3N1bWluZyB0aGUgY29udGVudCBwcmludGVk IHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4gICovCisrICAgICAgZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7CisrICAgIH0KKysKKysgIHJldHVybiBtc2c7 CisrfQorKworK3ZvaWQKKytmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHN0 cnVjdCB0eXBlICp0eXBlKQorK3sKKysgIGNvbnN0IGNoYXIgKm1zZzsKKysKKysgIG1zZyA9IG9i amVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKTsKKysgIGlmIChtc2cgIT0gTlVMTCkK KysgICAgeworKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNzIGl0IGJlY2F1c2UgdGhlICVz LiIpLCBfKG1zZykpOworKyAgICB9CisrfQorKworIC8qIExFVkVMIGlzIHRoZSBkZXB0aCB0byBp bmRlbnQgbGluZXMgYnkuICAqLwogIAotQEAgLTM4MzIsNiArNDIxNiw3IEBAIHJlYWRfZnVuY19z Y29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgY2hh ciAqbmFtZTsKLSAgIENPUkVfQUREUiBiYXNlYWRkcjsKLSAgIHN0cnVjdCBibG9jayAqYmxvY2s7 Ci0rICB1bnNpZ25lZCBkaWVfY2hpbGRyZW4gPSAwOwotICAgaW50IGlubGluZWRfZnVuYyA9IChk aWUtPnRhZyA9PSBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKTsKLSAKLSAgIGlmIChpbmxpbmVk X2Z1bmMpCi1AQCAtMzg1MCwxMyArNDIzNSwyMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAKLSAgIGJhc2VhZGRyID0gQU5P RkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkp OwotIAotLSAgbmFtZSA9IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotKyAgbmFtZSA9 IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKLSAKLSAgIC8qIElnbm9yZSBmdW5jdGlvbnMgd2l0aCBt aXNzaW5nIG9yIGVtcHR5IG5hbWVzIGFuZCBmdW5jdGlvbnMgd2l0aAotICAgICAgbWlzc2luZyBv ciBpbnZhbGlkIGxvdyBhbmQgaGlnaCBwYyBhdHRyaWJ1dGVzLiAgKi8KLS0gIGlmIChuYW1lID09 IE5VTEwgfHwgIWR3YXJmMl9nZXRfcGNfYm91bmRzIChkaWUsICZsb3dwYywgJmhpZ2hwYywgY3Us IE5VTEwpKQotKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCAhZHdhcmYyX2dldF9wY19ib3VuZHMgKGRp ZSwgJmxvd3BjLCAmaGlnaHBjLCBjdSwgTlVMTCkpewotKyAgICAvKiBleHBsb3JlIGFic3RyYWN0 IG9yaWdpbnMgaWYgcHJlc2VudC4gVGhleSBtaWdodCBjb250YWluIHVzZWZ1bCBpbmZvcm1hdGlv bgotKyAgICAgc3VjaCBhcyBpbXBvcnQgc3RhdGVtZW50cy4gKi8KLSsgICAgY2hpbGRfZGllID0g ZGllLT5jaGlsZDsKLSsgICAgd2hpbGUgKGNoaWxkX2RpZSAmJiBjaGlsZF9kaWUtPnRhZykKLSsg ICAgICB7Ci0rCWNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwotKwlkaWVfY2hp bGRyZW4rKzsKLSsgICAgICB9Ci0rICAgIGluaGVyaXRfYWJzdHJhY3RfZGllcyhkaWUsIGN1KTsK LSAgICAgcmV0dXJuOwotLQotKyAgfQotKyAgCi0gICBsb3dwYyArPSBiYXNlYWRkcjsKLSAgIGhp Z2hwYyArPSBiYXNlYWRkcjsKKyB2b2lkCitAQCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5cGUg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sCisgICBlbnVtIHR5cGVfY29kZSBjb2RlOworICAgaW50IGRlbWFuZ2xlZF9hcmdz OwogIAotQEAgLTM4ODMsMTQgKzQyNzgsMTkgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrICBpZiAoZl9vYmplY3RfYWRkcmVz c19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQorKyAg ICByZXR1cm47CisrCisgICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93LCBs ZXZlbCk7CisgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAgIGlmICgodmFyc3RyaW5nICE9 IE5VTEwgJiYgKnZhcnN0cmluZyAhPSAnXDAnKQorQEAgLTE2NSw2ICsxOTYsOSBAQCBmX3R5cGVf cHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLAogIAotICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmbG9jYWxfc3ltYm9sczsKKyAgIFFV SVQ7CiAgCi0tICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQotKyAgc3dpdGNoIChjdS0+bGFuZ3Vh Z2UpCisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfVFlQRURFRikKKysgICAg Q0hFQ0tfVFlQRURFRiAodHlwZSk7CisrCisgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCiAg ICAgIHsKLS0gICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwotLSAgICAgIHdoaWxlIChjaGls ZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCi0tCXsKLS0JICBwcm9jZXNzX2RpZSAoY2hpbGRfZGll LCBjdSk7Ci0tCSAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7Ci0tCX0KLSsg ICAgY2FzZSBsYW5ndWFnZV9mb3J0cmFuOgotKyAgICAgIGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5m b3J0cmFuLnVzZSA9IE5VTEw7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KKyAgICAgY2FzZSBUWVBF X0NPREVfQVJSQVk6CitkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHBy aW50LmMKK2luZGV4IDg1ZjY5OGQuLjJmNzJiOTcgMTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmlu dC5jCisrKysgYi9nZGIvZi12YWxwcmludC5jCitAQCAtNTQsMTUgKzU0LDE3IEBAIGludCBmNzdf YXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07CisgLyogVGhlIGZvbGxv d2luZyBtYWNybyBnaXZlcyB1cyB0aGUgc2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUg CisgICAgbiBpcyAxIGJhc2VkLiAqLworIAorLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdf YXJyYXlfb2Zmc2V0X3RibFtuXVsxXSkKKysjZGVmaW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19h cnJheV9vZmZzZXRfdGJsW25dWzFdKQorIAorLS8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhl IG9mZnNldCBmb3Igcm93IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworKy8qIFRoZSBmb2xsb3dp bmcgZ2l2ZXMgdXMgdGhlIGVsZW1lbnQgc2l6ZSBmb3Igcm93IG4gd2hlcmUgbiBpcyAxLWJhc2Vk LiAqLworIAorLSNkZWZpbmUgRjc3X0RJTV9PRkZTRVQobikgKGY3N19hcnJheV9vZmZzZXRfdGJs W25dWzBdKQorKyNkZWZpbmUgRjc3X0RJTV9CWVRFX1NUUklERShuKSAoZjc3X2FycmF5X29mZnNl dF90Ymxbbl1bMF0pCisgCisgaW50CisgZjc3X2dldF9sb3dlcmJvdW5kIChzdHJ1Y3QgdHlwZSAq dHlwZSkKKyB7CisrICBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHR5cGUp OwogKwotKyAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLSsgIHdoaWxlIChjaGlsZF9kaWUgJiYg Y2hpbGRfZGllLT50YWcpCi0rICAgIHsKLSsgICAgICBwcm9jZXNzX2RpZSAoY2hpbGRfZGllLCBj dSk7Ci0rICAgICAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7Ci0rICAgICAg ZGllX2NoaWxkcmVuKys7CisgICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklO RUQgKHR5cGUpKQorICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5IG5vdCBiZSAnKicgaW4g Rjc3IikpOworIAorQEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVj dCB0eXBlICp0eXBlKQorIGludAorIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5 cGUpCisgeworKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsK KysKKyAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCisg ICAgIHsKKy0gICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFu ZHMuICBBc3N1bWUgdGhhdAorLQkgdXBwZXJfYm91bmQgPT0gbG93ZXJfYm91bmQgc28gdGhhdCB3 ZSBzaG93IGF0IGxlYXN0IDEgZWxlbWVudC4KKy0JIElmIHRoZSB1c2VyIHdhbnRzIHRvIHNlZSBt b3JlIGVsZW1lbnRzLCBsZXQgaGltIG1hbnVhbGx5IGFzayBmb3IgJ2VtCistCSBhbmQgd2UnbGwg c3Vic2NyaXB0IHRoZSBhcnJheSBhbmQgc2hvdyBoaW0uICAqLworKyAgICAgIC8qIFdlIGhhdmUg YW4gYXNzdW1lZCBzaXplIGFycmF5IG9uIG91ciBoYW5kcy4gIEFzIHR5cGVfbGVuZ3RoX2dldAor KwkgYWxyZWFkeSBhc3N1bWVzIGEgbGVuZ3RoIHplcm8gb2YgYXJyYXlzIHdpdGggdW5kZXJmaW5l ZCBib3VuZHMgVkFMQUREUgorKwkgcGFzc2VkIHRvIHRoZSBGb3J0cmFuIGZ1bmN0aW9ucyBkb2Vz IG5vdCBjb250YWluZWQgdGhlIHJlYWwgaW5mZXJpb3IKKysJIG1lbW9yeSBjb250ZW50LiAgVXNl ciBzaG91bGQgcmVxdWVzdCBwcmludGluZyBvZiBzcGVjaWZpYyBhcnJheQorKwkgZWxlbWVudHMg aW5zdGVhZC4gICovCisgCistICAgICAgcmV0dXJuIGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSk7 CisrICAgICAgcmV0dXJuIGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSkgLSAxOwogICAgICB9CiAg Ci0gICBpbmhlcml0X2Fic3RyYWN0X2RpZXMgKGRpZSwgY3UpOwotQEAgLTM5MDYsNiArNDMwNiwx MyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKLSAJCQlkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KSwKLSAJCQlwcm9jZXNzaW5n X2hhc19uYW1lc3BhY2VfaW5mbyk7CisgICByZXR1cm4gVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9W QUxVRSAodHlwZSk7CitAQCAtMTM0LDI0ICsxMzksMjkgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50 X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQor ICAgICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7CisgICAgICAgbG93 ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKICAKLSsgIHN3aXRjaCAoY3UtPmxh bmd1YWdlKQotKyAgICB7Ci0rICAgIGNhc2UgbGFuZ3VhZ2VfZm9ydHJhbjoKLSsgICAgICBCTE9D S19GT1JUUkFOX1VTRSAoYmxvY2spID0gY3UtPmxhbmd1YWdlX3NwZWNpZmljLmZvcnRyYW4udXNl OwotKyAgICAgIGJyZWFrOwotKyAgICB9CistICAgICAgRjc3X0RJTV9TSVpFIChuZGltZW4pID0g dXBwZXIgLSBsb3dlciArIDE7CisrICAgICAgRjc3X0RJTV9DT1VOVCAobmRpbWVuKSA9IHVwcGVy IC0gbG93ZXIgKyAxOwogKwotICAgLyogSWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywgcmVjb3Jk IHRoZW0uICAqLwotICAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxvY2ssIGJh c2VhZGRyLCBjdSk7Ci0gICAKLUBAIC00NTI0LDcgKzQ5MzEsNyBAQCBkd2FyZjJfYWRkX2ZpZWxk IChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLSAJcmV0dXJu OworKyAgICAgIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPQorKyAgICAgICAgVFlQRV9B UlJBWV9CWVRFX1NUUklERV9WQUxVRSAodG1wX3R5cGUpOworIAorICAgICAgIHRtcF90eXBlID0g VFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpOworICAgICAgIG5kaW1lbisrOworICAgICB9CiAg Ci0gICAgICAgLyogR2V0IHBoeXNpY2FsIG5hbWUuICAqLwotLSAgICAgIHBoeXNuYW1lID0gZHdh cmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7Ci0rICAgICAgcGh5c25hbWUgPSAoY2hhciAqKSBk d2FyZjJfcGh5c25hbWUgKGZpZWxkbmFtZSwgZGllLCBjdSk7CistICAvKiBOb3cgd2UgbXVsdGlw bHkgZWx0bGVuIGJ5IGFsbCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKKysgIC8qIE5v dyB3ZSBtdWx0aXBseSBlbHRsZW4gYnkgYWxsIHRoZSBCWVRFX1NUUklERXMsIHNvIHRoYXQgbGF0 ZXIgd2UKKyAgICAgIGNhbiBwcmludCBvdXQgYXJyYXkgZWxlbWVudHMgY29ycmVjdGx5LiAgVXAg dGlsbCBub3cgd2UgCistICAgICBrbm93IGFuIG9mZnNldCB0byBhcHBseSB0byBnZXQgdGhlIGl0 ZW0gYnV0IHdlIGFsc28gCisrICAgICBrbm93IGFuIGVsdGxlbiB0byBhcHBseSB0byBnZXQgdGhl IGl0ZW0gYnV0IHdlIGFsc28KKyAgICAgIGhhdmUgdG8ga25vdyBob3cgbXVjaCB0byBhZGQgdG8g Z2V0IHRvIHRoZSBuZXh0IGl0ZW0gKi8KICAKLSAgICAgICAvKiBUaGUgbmFtZSBpcyBhbHJlYWR5 IGFsbG9jYXRlZCBhbG9uZyB3aXRoIHRoaXMgb2JqZmlsZSwgc28gd2UgZG9uJ3QKLSAJIG5lZWQg dG8gZHVwbGljYXRlIGl0IGZvciB0aGUgdHlwZS4gICovCi1AQCAtNDY4Niw3ICs1MDkzLDcgQEAg ZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVf aW5mbyAqZGllLAotICAgICByZXR1cm47CisgICBuZGltZW4tLTsKKyAgIGVsdGxlbiA9IFRZUEVf TEVOR1RIICh0bXBfdHlwZSk7CistICBGNzdfRElNX09GRlNFVCAobmRpbWVuKSA9IGVsdGxlbjsK KysgIGlmIChGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID09IDApCisrICAgIEY3N19ESU1f QllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRsZW47CisgICB3aGlsZSAoLS1uZGltZW4gPiAwKQor ICAgICB7CistICAgICAgZWx0bGVuICo9IEY3N19ESU1fU0laRSAobmRpbWVuICsgMSk7CistICAg ICAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CisrICAgICAgZWx0bGVuICo9IEY3 N19ESU1fQ09VTlQgKG5kaW1lbiArIDEpOworKyAgICAgIGlmIChGNzdfRElNX0JZVEVfU1RSSURF IChuZGltZW4pID09IDApCisrCUY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRsZW47 CisgICAgIH0KKyB9CiAgCi0gICAvKiBHZXQgdGhlIG1hbmdsZWQgbmFtZS4gICovCi0tICBwaHlz bmFtZSA9IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotKyAgcGh5c25hbWUgPSAoY2hh ciAqKSBkd2FyZjJfcGh5c25hbWUgKGZpZWxkbmFtZSwgZGllLCBjdSk7CitAQCAtMTcyLDM0ICsx ODIsMzQgQEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3Ry dWN0IHR5cGUgKnR5cGUsCiAgCi0gICAvKiBMb29rIHVwIG1lbWJlciBmdW5jdGlvbiBuYW1lIGlu IGZpZWxkbGlzdC4gICovCi0gICBmb3IgKGkgPSAwOyBpIDwgZmlwLT5uZm5maWVsZHM7IGkrKykK LUBAIC00OTkzLDE0ICs1NDAwLDE4IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBpZiAoY3UtPmxhbmd1YWdl ID09IGxhbmd1YWdlX2NwbHVzCi0gCSAgfHwgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEp CisgICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQorICAgICB7CistICAgICAgZm9yIChpID0gMDsg KGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7 IGkrKykKKysgICAgICBmb3IgKGkgPSAwOyAoaSA8IEY3N19ESU1fQ09VTlQgKG5zcykgJiYgKCpl bHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7IGkrKykKICAJewotLQkgIGNvbnN0IGNoYXIgKm5l d19wcmVmaXggPSBkZXRlcm1pbmVfY2xhc3NfbmFtZSAoZGllLCBjdSk7Ci0tCSAgVFlQRV9UQUdf TkFNRSAodHlwZSkgPSAoY2hhciAqKSBuZXdfcHJlZml4OwotKwkgIFRZUEVfVEFHX05BTUUgKHR5 cGUpID0gKGNoYXIgKikgZHdhcmYyX2Z1bGxfbmFtZSAobmFtZSwgZGllLCBjdSk7Ci0rCSAgaWYg KGRpZS0+dGFnID09IERXX1RBR19zdHJ1Y3R1cmVfdHlwZQotKwkgICAgICB8fCBkaWUtPnRhZyA9 PSBEV19UQUdfY2xhc3NfdHlwZSkKLSsJICAgIFRZUEVfTkFNRSAodHlwZSkgPSBUWVBFX1RBR19O QU1FICh0eXBlKTsKKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOworIAkgIGY3 N19wcmludF9hcnJheV8xIChuc3MgKyAxLCBuZGltZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksCistCQkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAorLQkJ CSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobnNzKSwKKysJCQkgICAgIHZhbGFk ZHIgKyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAobnNzKSwKKysJCQkgICAgIGFkZHJlc3MgKyBp ICogRjc3X0RJTV9CWVRFX1NUUklERSAobnNzKSwKKyAJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSwg dmFsLCBvcHRpb25zLCBlbHRzKTsKKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIp OwogIAl9Ci0gICAgICAgZWxzZQorLSAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9t YXggJiYgaSA8IEY3N19ESU1fU0laRSAobnNzKSkgCisrICAgICAgaWYgKCplbHRzID49IG9wdGlv bnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSkKKyAJZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiLi4uIik7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIGZv ciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnBy aW50X21heDsKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSAmJiAo KmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OworIAkgICBpKyssICgqZWx0cykrKykKICAJewot IAkgIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpm aWxlLCBzbwotIAkgICAgIHdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGl0IGZvciB0aGUgdHlw ZS4gICovCi0tCSAgVFlQRV9UQUdfTkFNRSAodHlwZSkgPSBuYW1lOwotKwkgIFRZUEVfVEFHX05B TUUgKHR5cGUpID0gKGNoYXIgKikgbmFtZTsKLSsJICBpZiAoZGllLT50YWcgPT0gRFdfVEFHX2Ns YXNzX3R5cGUpCi0rCSAgICBUWVBFX05BTUUgKHR5cGUpID0gVFlQRV9UQUdfTkFNRSAodHlwZSk7 CisgCSAgdmFsX3ByaW50IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKKy0JCSAgICAgdmFsYWRk ciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAorKwkJICAgICB2YWxhZGRyICsg aSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKKyAJCSAgICAgMCwKKy0JCSAg ICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAorKwkJICAgICBh ZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKKyAJCSAgICAg c3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOworIAorLQkg IGlmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkKKysJICBpZiAoaSAhPSAoRjc3X0RJ TV9DT1VOVCAobnNzKSAtIDEpKQorIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCAi KTsKKyAKKyAJICBpZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCistCSAgICAg ICYmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkpCisrCSAgICAgICYmIChpICE9IChG NzdfRElNX0NPVU5UIChuc3MpIC0gMSkpKQorIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiLi4uIik7CiAgCX0KICAgICAgfQorQEAgLTI1Niw2ICsyNjYsOSBAQCBmX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRf b2Zmc2V0LAorICAgQ09SRV9BRERSIGFkZHI7CisgICBpbnQgaW5kZXg7CiAgCi1AQCAtNTIxOSw3 ICs1NjMwLDcgQEAgcmVhZF9lbnVtZXJhdGlvbl90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICB0eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0g Ci0gICBUWVBFX0NPREUgKHR5cGUpID0gVFlQRV9DT0RFX0VOVU07Ci0tICBuYW1lID0gZHdhcmYy X2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci0rICBuYW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAoTlVMTCwg ZGllLCBjdSk7Ci0gICBpZiAobmFtZSAhPSBOVUxMKQotICAgICBUWVBFX1RBR19OQU1FICh0eXBl KSA9IChjaGFyICopIG5hbWU7CisrICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3By aW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQorKyAgICByZXR1cm4gMDsKKysK KyAgIENIRUNLX1RZUEVERUYgKHR5cGUpOworICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQor ICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKK2luZGV4 IGUwY2ExMmMuLmRlNjMxMWEgMTAwNjQ0CistLS0gYS9nZGIvZmluZHZhci5jCisrKysgYi9nZGIv ZmluZHZhci5jCitAQCAtMzUsNiArMzUsNyBAQAorICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKyAj aW5jbHVkZSAiYmxvY2suaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKysjaW5jbHVkZSAiZHdh cmYybG9jLmgiCiAgCi1AQCAtNTI0NCw1MSArNTY1NSw2IEBAIHJlYWRfZW51bWVyYXRpb25fdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgcmV0dXJu IHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7Ci0gfQorIC8qIEJhc2ljIGJ5dGUtc3dhcHBp bmcgcm91dGluZXMuICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9ucyByZXR1cm4gYQorICAgIGhvc3Qt Zm9ybWF0IGludGVnZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNo IGlzCitAQCAtNDAxLDI3ICs0MDIsMTYgQEAgc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHN0cnVj dCBzeW1ib2wgKnN5bSkKKyAvKiBHaXZlbiBhIHN0cnVjdCBzeW1ib2wgZm9yIGEgdmFyaWFibGUs CisgICAgYW5kIGEgc3RhY2sgZnJhbWUgaWQsIHJlYWQgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJs ZQorICAgIGFuZCByZXR1cm4gYSAocG9pbnRlciB0byBhKSBzdHJ1Y3QgdmFsdWUgY29udGFpbmlu ZyB0aGUgdmFsdWUuIAorLSAgIElmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQsIHJldHVy biBhIHplcm8gcG9pbnRlci4gICovCisrICAgSWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSBmb3Vu ZCwgcmV0dXJuIGEgemVybyBwb2ludGVyLgorKyAgIFdlIGhhdmUgdG8gZmlyc3QgZmluZCB0aGUg YWRkcmVzcyBvZiB0aGUgdmFyaWFibGUgYmVmb3JlIGFsbG9jYXRpbmcgc3RydWN0CisrICAgdmFs dWUgdG8gcmV0dXJuIGFzIGl0cyBzaXplIG1heSBkZXBlbmQgb24gRFdfT1BfUFVTSF9PQkpFQ1Rf QUREUkVTUyBwb3NzaWJseQorKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLwogIAotLS8qIERldGVy bWluZSB0aGUgbmFtZSBvZiB0aGUgdHlwZSByZXByZXNlbnRlZCBieSBESUUsIHdoaWNoIHNob3Vs ZCBiZQotLSAgIGEgbmFtZWQgQysrIG9yIEphdmEgY29tcG91bmQgdHlwZS4gIFJldHVybiB0aGUg bmFtZSBpbiBxdWVzdGlvbiwKLS0gICBhbGxvY2F0ZWQgb24gdGhlIG9iamZpbGUgb2JzdGFjay4g ICovCi0tCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWRldGVybWluZV9jbGFzc19uYW1lIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0tewotLSAgY29uc3QgY2hh ciAqbmV3X3ByZWZpeCA9IE5VTEw7Cisgc3RydWN0IHZhbHVlICoKKyByZWFkX3Zhcl92YWx1ZSAo c3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgeworLSAgc3Ry dWN0IHZhbHVlICp2OworICAgc3RydWN0IHR5cGUgKnR5cGUgPSBTWU1CT0xfVFlQRSAodmFyKTsK KyAgIENPUkVfQUREUiBhZGRyOworLSAgaW50IGxlbjsKIC0KLS0gIC8qIElmIHdlIGRvbid0IGhh dmUgbmFtZXNwYWNlIGRlYnVnIGluZm8sIGd1ZXNzIHRoZSBuYW1lIGJ5IHRyeWluZwotLSAgICAg dG8gZGVtYW5nbGUgdGhlIG5hbWVzIG9mIG1lbWJlcnMsIGp1c3QgbGlrZSB3ZSBkaWQgaW4KLS0g ICAgIGd1ZXNzX3N0cnVjdHVyZV9uYW1lLiAgKi8KLS0gIGlmICghcHJvY2Vzc2luZ19oYXNfbmFt ZXNwYWNlX2luZm8pCistICBpZiAoU1lNQk9MX0NMQVNTICh2YXIpID09IExPQ19DT01QVVRFRAor LSAgICAgIHx8IFNZTUJPTF9DTEFTUyAodmFyKSA9PSBMT0NfUkVHSVNURVIpCistICAgIC8qIFRo ZXNlIGNhc2VzIGRvIG5vdCB1c2UgVi4gICovCistICAgIHYgPSBOVUxMOworLSAgZWxzZQogLSAg ICB7Ci0tICAgICAgc3RydWN0IGRpZV9pbmZvICpjaGlsZDsKLS0KLS0gICAgICBmb3IgKGNoaWxk ID0gZGllLT5jaGlsZDsKLS0JICAgY2hpbGQgIT0gTlVMTCAmJiBjaGlsZC0+dGFnICE9IDA7Ci0t CSAgIGNoaWxkID0gc2libGluZ19kaWUgKGNoaWxkKSkKLS0JewotLQkgIGlmIChjaGlsZC0+dGFn ID09IERXX1RBR19zdWJwcm9ncmFtKQotLQkgICAgewotLQkgICAgICBjaGFyICpwaHlzX3ByZWZp eAotLQkJPSBsYW5ndWFnZV9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGN1LT5sYW5ndWFnZV9k ZWZuLAotLQkJCQkJCSAgICAgZHdhcmYyX2xpbmthZ2VfbmFtZQotLQkJCQkJCSAgICAgKGNoaWxk LCBjdSkpOwotLQotLQkgICAgICBpZiAocGh5c19wcmVmaXggIT0gTlVMTCkKLS0JCXsKLS0JCSAg bmV3X3ByZWZpeAotLQkJICAgID0gb2JzYXZlc3RyaW5nIChwaHlzX3ByZWZpeCwgc3RybGVuIChw aHlzX3ByZWZpeCksCi0tCQkJCSAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0t CQkgIHhmcmVlIChwaHlzX3ByZWZpeCk7Ci0tCQkgIGJyZWFrOwotLQkJfQotLQkgICAgfQotLQl9 CistICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKy0gICAgICBWQUxVRV9MVkFMICh2 KSA9IGx2YWxfbWVtb3J5OwkvKiBUaGUgbW9zdCBsaWtlbHkgcG9zc2liaWxpdHkuICAqLwogLSAg ICB9CiAtCi0tICBpZiAobmV3X3ByZWZpeCA9PSBOVUxMKQotLSAgICBuZXdfcHJlZml4ID0gZHdh cmYyX2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci0tCi0tICByZXR1cm4gbmV3X3ByZWZpeDsKLS19Ci0t Ci0gLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgZGllIHdoaWNoIGJlZ2lucyBhbiBlbnVtZXJhdGlv biwgcHJvY2VzcyBhbGwKLSAgICB0aGUgZGllcyB0aGF0IGRlZmluZSB0aGUgbWVtYmVycyBvZiB0 aGUgZW51bWVyYXRpb24sIGFuZCBjcmVhdGUgdGhlCi0gICAgc3ltYm9sIGZvciB0aGUgZW51bWVy YXRpb24gdHlwZS4KLUBAIC01MzY2LDYgKzU3MzIsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9z Y29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgbmV3 X3N5bWJvbCAoZGllLCB0aGlzX3R5cGUsIGN1KTsKLSB9Ci0gCi0rLyogQ3JlYXRlIGEgbmV3IGFy cmF5IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUgVFlQRS4KLSsKLSsgICBN dWx0aWRpbWVuc2lvbmFsIGFycmF5cyBhcmUgaW50ZXJuYWxseSByZXByZXNlbnRlZCBhcyBhIHN0 YWNrIG9mCi0rICAgc2luZ2xlZGltZW5zaW9uYWwgYXJyYXlzIGJlaW5nIHJlZmVyZW5jZWQgYnkg dGhlaXIgVFlQRV9UQVJHRVRfVFlQRS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoKLStj cmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0 eXBlICpyYW5nZV90eXBlLAotKwkJCSAgICAgICBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0 eXBlLCByYW5nZV90eXBlKTsKLSsKLSsgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBhdHRyaWJ1dGVz IG5lZWQgdG8gYmUgZmV0Y2hlZCBieQotKyAgICAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIDxt dWx0aV9mNzdfc3Vic2NyaXB0PidzIGNhbGwgb2YKLSsgICAgIHZhbHVlX3N1YnNjcmlwdGVkX3J2 YWx1ZSBvbmx5IGZvciB0aGUgaW5uZXJtb3N0IGFycmF5IHR5cGUuICAqLwotKyAgZmV0Y2hfZGll X3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwotKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBl IGF0dHJpYnV0ZXMgYXJlIGNoZWNrZWQgZm9yIGFsbG9jYXRlZC9hc3NvY2lhdGVkCi0rICAgICB2 YWxpZGl0eSB3aGlsZSBhY2Nlc3NpbmcgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0suICAqLwot KyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgcmFuZ2VfdHlwZSwgY3UpOwotKwotKyAgcmV0 dXJuIHR5cGU7Ci0rfQotKwotIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19U QUdfYXJyYXlfdHlwZSBESUUgYW5kIHB1dCBpdCBpbgotICAgIHRoZSBESUUncyB0eXBlIGZpZWxk LiAgRm9yIG5vdywgdGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCi0gICAgYXJyYXlz LiAgKi8KLUBAIC01Mzc5LDcgKzU3NjgsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCB0eXBlICplbGVtZW50 X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKLSAgIHN0cnVjdCB0eXBlICoqcmFuZ2Vf dHlwZXMgPSBOVUxMOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIGludCBuZGltID0g MDsKLSsgIGludCBuZGltID0gMCwgaTsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotICAg Y2hhciAqbmFtZTsKKy0gIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKICAKLUBAIC01NDI2LDE2 ICs1ODE1LDExIEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQotICAgdHlwZSA9IGVsZW1lbnRfdHlwZTsKKyAgIGlmIChzeW1ib2xf cmVhZF9uZWVkc19mcmFtZSAodmFyKSkKKyAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOworQEAgLTQy OSwzMyArNDE5LDQzIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgIHN3aXRjaCAoU1lNQk9MX0NMQVNTICh2YXIpKQorICAg ICB7CisgICAgIGNhc2UgTE9DX0NPTlNUOgorLSAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFj ayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KKy0gICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAodmFs dWVfY29udGVudHNfcmF3ICh2KSwgbGVuLAorLQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdl dF90eXBlX2FyY2ggKHR5cGUpKSwKKy0JCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFy KSk7CistICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKy0gICAgICByZXR1cm4gdjsK KysgICAgICB7CisrCS8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAg Ki8KKysJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKwlWQUxVRV9M VkFMICh2KSA9IG5vdF9sdmFsOworKwlzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVu dHNfcmF3ICh2KSwgVFlQRV9MRU5HVEggKHR5cGUpLAorKwkJCSAgICAgIGdkYmFyY2hfYnl0ZV9v cmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpLAorKwkJCSAgICAgIChMT05HRVNUKSBTWU1CT0xf VkFMVUUgKHZhcikpOworKwlyZXR1cm4gdjsKKysgICAgICB9CiAgCi0gICBpZiAocmVhZF9hcnJh eV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKLS0gICAgewotLSAgICAgIGlu dCBpID0gMDsKLS0gICAgICB3aGlsZSAoaSA8IG5kaW0pCi0tCXR5cGUgPSBjcmVhdGVfYXJyYXlf dHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlwZXNbaSsrXSk7Ci0tICAgIH0KLS0gIGVsc2UKLS0g ICAgewotLSAgICAgIHdoaWxlIChuZGltLS0gPiAwKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5 cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW25kaW1dKTsKLS0gICAgfQotKyAgICBmb3IgKGkg PSAwOyBpIDwgbmRpbTsgaSsrKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2Rp bWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOwotKyAgZWxzZSAvKiAocmVh ZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX3Jvd19tYWpvcikgKi8KLSsgICAgZm9y IChpID0gbmRpbSAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xl X2FycmF5X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworICAgICBj YXNlIExPQ19MQUJFTDoKKy0gICAgICAvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0 IGZvcm1hdC4gICovCistICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQorLQl7CistCSAgQ09S RV9BRERSIGFkZHIKKy0JICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xfVkFM VUVfQUREUkVTUyAodmFyKSwKKy0JCQkJCVNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7CisrICAg ICAgeworKwkvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCisr CXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKysJVkFMVUVfTFZBTCAo dikgPSBub3RfbHZhbDsKKysJaWYgKG92ZXJsYXlfZGVidWdnaW5nKQorKwkgIHsKKysJICAgIENP UkVfQUREUiBhZGRyCisrCSAgICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xf VkFMVUVfQUREUkVTUyAodmFyKSwKKysJCQkJCSAgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsK ICAKLSAgIC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBlcyAobGlr ZSB0aGV5IG9jY3VyIG9uCi0gICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0 IGFkZHMgYW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCi1AQCAtNTYyNCw3ICs2MDA4LDcgQEAgcmVh ZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSAgICAgICBpZiAoaXNfYW5vbnltb3VzKQotIAl7Ci0gCSAgY29uc3QgY2hhciAqcHJldmlvdXNf cHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7Ci0tCSAgY3BfYWRkX3VzaW5nX2Rp cmVjdGl2ZSAocHJldmlvdXNfcHJlZml4LCBUWVBFX05BTUUgKHR5cGUpLCBOVUxMKTsKLSsJICBj cF9hZGRfdXNpbmdfZGlyZWN0aXZlIChwcmV2aW91c19wcmVmaXgsIFRZUEVfTkFNRSAodHlwZSks IE5VTEwsICIiLCBkd2FyZjJfcmVhZF9kZWNsX2xpbmUoZGllLCBjdSkpOwotIAl9Ci0gICAgIH0K Ky0JICBzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLCBh ZGRyKTsKKy0JfQorLSAgICAgIGVsc2UKKy0Jc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29u dGVudHNfcmF3ICh2KSwgdHlwZSwKKy0JCQkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFy KSk7CistICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKy0gICAgICByZXR1cm4gdjsK KysJICAgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUs IGFkZHIpOworKwkgIH0KKysJZWxzZQorKwkgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2Nv bnRlbnRzX3JhdyAodiksIHR5cGUsCisrCQkJCVNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpKTsK KysJcmV0dXJuIHY7CisrICAgICAgfQogIAotQEAgLTU2NDAsMjAgKzYwMjQsMTU1IEBAIHJlYWRf bmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ICAgIH0KLSB9CisgICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgorLSAgICAgIG1lbWNweSAodmFs dWVfY29udGVudHNfcmF3ICh2KSwgU1lNQk9MX1ZBTFVFX0JZVEVTICh2YXIpLCBsZW4pOworLSAg ICAgIFZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CistICAgICAgcmV0dXJuIHY7CisrICAgICAg eworKwlzdHJ1Y3QgdmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCVZBTFVFX0xW QUwgKHYpID0gbm90X2x2YWw7CisrCW1lbWNweSAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgU1lN Qk9MX1ZBTFVFX0JZVEVTICh2YXIpLAorKwkJVFlQRV9MRU5HVEggKHR5cGUpKTsKKysJcmV0dXJu IHY7CisrICAgICAgfQogIAotLS8qIFJlYWQgYSBGb3J0cmFuIG1vZHVsZS4gICovCi0rLyogUmVh ZCBhIEZvcnRyYW4gbW9kdWxlIGFzIGdsb2JhbCBzeW1ib2wgd2hpY2ggY2FuIGJlIGxhdGVyIGxv b2tlZCB1cCBieQotKyAgIGZfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCisgICAgIGNhc2Ug TE9DX1NUQVRJQzoKKyAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCitAQCAtNDk2LDEyICs0 OTYsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOwogIAotIHN0YXRpYyB2b2lkCi0gcmVhZF9tb2R1 bGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBz dHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICBzdHJ1Y3QgdHlwZSAq dHlwZTsKLSsKLSsgIHR5cGUgPSByZWFkX21vZHVsZV90eXBlIChkaWUsIGN1KTsKLSsKLSsgIGlm ICh0eXBlKQotKyAgICBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKLSt9Ci0rCi0rLyogUmVh ZCBhIEZvcnRyYW4gbW9kdWxlIGFzIHR5cGUuCi0rCi0rICAgTW9kdWxlcyBwcmVzZW50IG9ubHkg YXMgZGVjbGFyYXRpb25zIC0gYmVpbmcgdXNlZCBvbmx5IGZvciBEV19BVF9pbXBvcnQgb2YKLSsg ICBEV19UQUdfaW1wb3J0ZWRfbW9kdWxlIC0gYXJlIGlnbm9yZWQgaGVyZS4gIFRoZXkgYXJlIHJl YWQgaW4gb25seSBpbiBmb3JtIG9mCi0rICAgdGhlIG1vZHVsZSBuYW1lIGJ5IHJlYWRfZm9ydHJh bl9pbXBvcnRlZF9tb2R1bGUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rcmVhZF9t b2R1bGVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQot K3sKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZpbGU7Ci0rICBzdHJ1Y3Qg ZGllX2luZm8gKmNoaWxkX2RpZTsKLSsgIHN0cnVjdCB0eXBlICp0eXBlOwotKyAgY2hhciAqbW9k dWxlX25hbWU7Ci0rICBzdHJ1Y3QgY29udGV4dF9zdGFjayAqbmV3OwotKyAgc3RydWN0IHBlbmRp bmcgKnNhdmVfZmlsZV9zeW1ib2xzOwotKyAgc3RydWN0IHBlbmRpbmcgKnNhdmVfZ2xvYmFsX3N5 bWJvbHM7Ci0rICBzdHJ1Y3QgcGVuZGluZyAqKnNhdmVfbGlzdF9pbl9zY29wZTsKLSsKLSsgIGlm IChkaWVfaXNfZGVjbGFyYXRpb24gKGRpZSwgY3UpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsg IG1vZHVsZV9uYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotKyAgaWYgKCFtb2R1bGVfbmFt ZSkKLSsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJEV19UQUdfbW9kdWxl IGhhcyBubyBuYW1lLCBvZmZzZXQgMHgleCIpLAotKyAgICAgICAgICAgICAgIGRpZS0+b2Zmc2V0 KTsKLSsgIHR5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9NT0RVTEUsIDAsIDAsIG1vZHVsZV9u YW1lLCBvYmpmaWxlKTsKLSsKLSsgIC8qIENyZWF0ZSBhIGNvbnRleHQgZm9yIHJlYWRpbmcgdGhl IG1vZHVsZSB2YXJpYWJsZXMuICAqLwotKwotKyAgbmV3ID0gcHVzaF9jb250ZXh0ICgwLCAwKTsK KyAgICAgY2FzZSBMT0NfQkxPQ0s6CistICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQorLQlz ZXRfdmFsdWVfYWRkcmVzcyAodiwgc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCistCSAgKEJMT0NL X1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZh cikpKTsKKy0gICAgICBlbHNlCistCXNldF92YWx1ZV9hZGRyZXNzICh2LCBCTE9DS19TVEFSVCAo U1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSk7CistICAgICAgcmV0dXJuIHY7CisrICAgICAgewor KyAgICAgICAgQ09SRV9BRERSIGFkZHI7CisrCXN0cnVjdCB2YWx1ZSAqdjsKICsKLSsgIHNhdmVf ZmlsZV9zeW1ib2xzID0gZmlsZV9zeW1ib2xzOwotKyAgZmlsZV9zeW1ib2xzID0gTlVMTDsKLSsg IHNhdmVfZ2xvYmFsX3N5bWJvbHMgPSBnbG9iYWxfc3ltYm9sczsKLSsgIGdsb2JhbF9zeW1ib2xz ID0gTlVMTDsKLSsgIHNhdmVfbGlzdF9pbl9zY29wZSA9IGN1LT5saXN0X2luX3Njb3BlOworKwlp ZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCisrCSAgYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVz cworKwkgICAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xf T0JKX1NFQ1RJT04gKHZhcikpOworKwllbHNlCisrCSAgYWRkciA9IEJMT0NLX1NUQVJUIChTWU1C T0xfQkxPQ0tfVkFMVUUgKHZhcikpOworKwkvKiBBRERSIGlzIHNldCBoZXJlIGZvciBBTExPQ0FU RV9WQUxVRSdzIENIRUNLX1RZUEVERUYgZm9yCisrCSAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJl c3MuICAqLworKwlvYmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOworKwl2ID0gYWxsb2NhdGVfdmFs dWUgKHR5cGUpOworKwlWQUxVRV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OworKwlzZXRfdmFsdWVf YWRkcmVzcyAodiwgYWRkcik7CisrCXJldHVybiB2OworKyAgICAgIH0KKyAKKyAgICAgY2FzZSBM T0NfUkVHSVNURVI6CisgICAgIGNhc2UgTE9DX1JFR1BBUk1fQUREUjoKK0BAIC01MjAsNyArNTMx LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQorIAkgICAgICBlcnJvciAoXygiVmFsdWUgb2YgcmVnaXN0ZXIgdmFyaWFibGUg bm90IGF2YWlsYWJsZS4iKSk7CiAgCi0tICAvKiBGSVhNRTogU3VwcG9ydCB0aGUgc2VwYXJhdGUg Rm9ydHJhbiBtb2R1bGUgbmFtZXNwYWNlcy4gICovCi0rICAvKiBQcm9jZXNzIHRoZSBjaGlsZCBE SUVzLiAgKi8KKyAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwpOworLQkgICAg VkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKyAJICB9CisgCWVsc2UKKyAJICB7CitAQCAt NTYzLDE4ICs1NzMsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOwogIAotKyAgY2hpbGRfZGllID0g ZGllLT5jaGlsZDsKLSAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCi0gICAg IHsKLSsgICAgICAvKiBBbnkgRFdfVEFHX3N1YnByb2dyYW0gd2lsbCByZXNldCBMSVNUX0lOX1ND T1BFIHRvIExPQ0FMX1NZTUJPTFMuICAqLwotKyAgICAgIGN1LT5saXN0X2luX3Njb3BlID0gJmds b2JhbF9zeW1ib2xzOworICAgICBjYXNlIExPQ19PUFRJTUlaRURfT1VUOgorLSAgICAgIFZBTFVF X0xWQUwgKHYpID0gbm90X2x2YWw7CistICAgICAgc2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHYs IDEpOworLSAgICAgIHJldHVybiB2OworKyAgICAgIHsKKysgICAgICAgIHN0cnVjdCB2YWx1ZSAq diA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICsKLSAgICAgICBwcm9jZXNzX2RpZSAoY2hpbGRf ZGllLCBjdSk7Ci0gICAgICAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7Cisr CVZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CisrCXNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2 LCAxKTsKKysJcmV0dXJuIHY7CisrICAgICAgfQorIAorICAgICBkZWZhdWx0OgorICAgICAgIGVy cm9yIChfKCJDYW5ub3QgbG9vayB1cCB2YWx1ZSBvZiBhIGJvdGNoZWQgc3ltYm9sLiIpKTsKKyAg ICAgICBicmVhazsKICAgICAgfQorIAorLSAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOwor LSAgc2V0X3ZhbHVlX2xhenkgKHYsIDEpOworLSAgcmV0dXJuIHY7CisrICB7CisrICAgIHN0cnVj dCB2YWx1ZSAqdjsKICsKLSsgIC8qIEZpbmlzaCB0aGlzIG1vZHVsZSBhbmQgcmVzdG9yZSB0aGUg Y29udGV4dC4gICovCi0rCi0rICBUWVBFX01PRFVMRV9CTE9DSyAodHlwZSkgPSBmaW5pc2hfYmxv Y2sgKE5VTEwsICZnbG9iYWxfc3ltYm9scywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmV3LT5vbGRfYmxvY2tzLCAwLCAwLCBvYmpmaWxlKTsKKysgICAgLyog QUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVGIGZvcgor KyAgICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTLiAgKi8KKysgICAgb2JqZWN0X2FkZHJl c3Nfc2V0IChhZGRyKTsKKysgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKysgICAgVkFM VUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKysgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFk ZHIpOwogKwotKyAgaWYgKGZpbGVfc3ltYm9scykKLSsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9j b21wbGFpbnRzLCBfKCJEV19UQUdfbW9kdWxlIGNvbnRhaW5zIHN0YXRpYyBzeW1ib2xzIikpOwot KyAgaWYgKGxvY2FsX3N5bWJvbHMpCi0rICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50 cywgXygiRFdfVEFHX21vZHVsZSBjb250YWlucyBsb2NhbCBzeW1ib2xzIikpOwotKyAgaWYgKHBh cmFtX3N5bWJvbHMpCi0rICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiRFdf VEFHX21vZHVsZSBjb250YWlucyBmdW5jdGlvbiAiCi0rCQkJCSAgICAgICJwYXJhbWV0ZXJzIikp OworKyAgICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7CiArCi0rICBmaWxlX3N5bWJvbHMgPSBzYXZl X2ZpbGVfc3ltYm9sczsKLSsgIGdsb2JhbF9zeW1ib2xzID0gc2F2ZV9nbG9iYWxfc3ltYm9sczsK LSsgIGN1LT5saXN0X2luX3Njb3BlID0gc2F2ZV9saXN0X2luX3Njb3BlOworKyAgICByZXR1cm4g djsKKysgIH0KKyB9CisgCisgLyogSW5zdGFsbCBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHJlZ2lz dGVyIHZhbHVlcy4gICovCitAQCAtNjExLDEwICs2MzYsMTEgQEAgc3RydWN0IHZhbHVlICoKKyB2 YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0 X2ZyYW1lX2FyY2ggKGZyYW1lKTsKKy0gIHN0cnVjdCB0eXBlICp0eXBlMSA9IGNoZWNrX3R5cGVk ZWYgKHR5cGUpOworICAgc3RydWN0IHZhbHVlICp2OworIAorLSAgaWYgKGdkYmFyY2hfY29udmVy dF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUxKSkKKysgIHR5cGUgPSBjaGVja190 eXBlZGVmICh0eXBlKTsKICsKLSsgIHBvcF9jb250ZXh0ICgpOworKyAgaWYgKGdkYmFyY2hfY29u dmVydF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQorICAgICB7CisgICAgICAg LyogVGhlIElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5pbmcgdGhl CisgICAgICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0IG1pZ2h0 IG5lZWQgdG8KK0BAIC02MjgsNyArNjU0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0 IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAg ICBWQUxVRV9GUkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAgICAgICBWQUxV RV9SRUdOVU0gKHYpID0gcmVnbnVtOworICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUg KGdkYmFyY2gsCistCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlMSwgdmFsdWVfY29udGVudHNfcmF3 ICh2KSk7CisrCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlLCB2YWx1ZV9jb250ZW50c19yYXcgKHYp KTsKKyAgICAgfQorICAgZWxzZQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnRocmVhZC5o IGIvZ2RiL2dkYnRocmVhZC5oCitpbmRleCBjZDI0ZWFmLi45NjM4MzY4IDEwMDY0NAorLS0tIGEv Z2RiL2dkYnRocmVhZC5oCisrKysgYi9nZGIvZ2RidGhyZWFkLmgKK0BAIC02Niw2ICs2Niw5IEBA IHN0cnVjdCB0aHJlYWRfaW5mbworICAgLyogU3RlcC1yZXN1bWUgb3IgbG9uZ2ptcC1yZXN1bWUg YnJlYWtwb2ludC4gICovCisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqc3RlcF9yZXN1bWVfYnJlYWtw b2ludDsKKyAKKysgIC8qIEV4Y2VwdGlvbi1yZXN1bWUgYnJlYWtwb2ludC4gICovCisrICBzdHJ1 Y3QgYnJlYWtwb2ludCAqZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50OwogKwotKyAgc2V0X2Rp ZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKKyAgIC8qIFJhbmdlIHRvIHNpbmdsZSBzdGVwIHdpdGhp bi4KKyAKKyAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9uZCB0byBhIHNpbmdsZS1zdGVw IHNpZ25hbCBieSBjb250aW51aW5nCitAQCAtMTg1LDYgKzE4OCwxMCBAQCBzdHJ1Y3QgdGhyZWFk X2luZm8KKyAgIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaGFzIGJlZW4gZXhwbGljaXRseSByZXF1 ZXN0ZWQgdG8gc3RvcC4gICovCisgICBpbnQgc3RvcF9yZXF1ZXN0ZWQ7CisgCisrICAvKiBUaGUg aW5pdGlhdGluZyBmcmFtZSBvZiBhIG5leHRpbmcgb3BlcmF0aW9uLCB1c2VkIGZvciBkZWNpZGlu ZworKyAgICAgd2hpY2ggZXhjZXB0aW9ucyB0byBpbnRlcmNlcHQuICAqLworKyAgc3RydWN0IGZy YW1lX2lkIGluaXRpYXRpbmdfZnJhbWU7CiArCi0rICByZXR1cm4gdHlwZTsKLSt9CisgICAvKiBQ cml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1lbnRhdGlvbi4gICov CisgICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKKyAKK0BAIC0yMjEsNiAr MjI4LDkgQEAgZXh0ZXJuIHZvaWQgZGVsZXRlX3RocmVhZF9zaWxlbnQgKHB0aWRfdCk7CisgLyog RGVsZXRlIGEgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRoZSB0aHJlYWQgZGF0YWJhc2Uu ICovCisgZXh0ZXJuIHZvaWQgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0 aHJlYWRfaW5mbyAqKTsKKyAKKysvKiBEZWxldGUgYW4gZXhjZXB0aW9uX3Jlc3VtZV9icmVha3Bv aW50IGZyb20gdGhlIHRocmVhZCBkYXRhYmFzZS4gKi8KKytleHRlcm4gdm9pZCBkZWxldGVfZXhj ZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CiArCi0rLyog SW1wb3J0IGEgRm9ydHJhbiBtb2R1bGUuICBPbmx5IHN0b3JlIHRoZSBtb2R1bGUgbmFtZSBmb3Ig aXRzIGxhdGVyIGxvb2t1cCBieQotKyAgIGZfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCisg LyogVHJhbnNsYXRlIHRoZSBpbnRlZ2VyIHRocmVhZCBpZCAoR0RCJ3MgaG9tZWdyb3duIGlkLCBu b3QgdGhlIHN5c3RlbSdzKQorICAgIGludG8gYSAicGlkIiAod2hpY2ggbWF5IGJlIG92ZXJsb2Fk ZWQgd2l0aCBleHRyYSB0aHJlYWQgaW5mb3JtYXRpb24pLiAgKi8KKyBleHRlcm4gcHRpZF90IHRo cmVhZF9pZF90b19waWQgKGludCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIv Z2RidHlwZXMuYworaW5kZXggNDQzZjZmNy4uZDg1MmExNCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0 eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYworQEAgLTM5LDYgKzM5LDkgQEAKKyAjaW5jbHVk ZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAjaW5jbHVkZSAiaGFzaHRh Yi5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorKyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisr I2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorIAorIC8qIEZsb2F0Zm9ybWF0IHBhaXJzLiAgKi8K K0BAIC0xMjMsNiArMTI2LDExIEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0 IGZpZWxkICosIGludCwgaW50KTsKKyBzdGF0aWMgdm9pZCBkdW1wX2ZuX2ZpZWxkbGlzdHMgKHN0 cnVjdCB0eXBlICosIGludCk7Cisgc3RhdGljIHZvaWQgcHJpbnRfY3BsdXNfc3R1ZmYgKHN0cnVj dCB0eXBlICosIGludCk7CisgCisrLyogVGhlIGhhc2ggdGFibGUgaG9sZGluZyBhbGwgZGlzY2Fy ZGFibGUgYHN0cnVjdCB0eXBlIConIHJlZmVyZW5jZXMuICAqLworK3N0YXRpYyBodGFiX3QgdHlw ZV9kaXNjYXJkYWJsZV90YWJsZTsKKysKKysvKiBDdXJyZW50IHR5cGVfZGlzY2FyZGFibGVfY2hl Y2sgcGFzcyB1c2VkIGZvciBUWVBFX0RJU0NBUkRBQkxFX0FHRS4gICovCisrc3RhdGljIGludCB0 eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OworIAorIC8qIEFsbG9jYXRlIGEgbmV3IE9CSkZJ TEUtYXNzb2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBk ZWZhdWx0cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCitAQCAt MTUzLDYgKzE2MSwzOSBAQCBhbGxvY190eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAg IHJldHVybiB0eXBlOworIH0KKyAKKysvKiBEZWNsYXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24g bmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMuCisrICAgWW91IG11c3Qg Y2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0 IFRZUEUgZnJvbQorKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KICsKICtzdGF0aWMgdm9pZAot K3JlYWRfZm9ydHJhbl9pbXBvcnRlZF9tb2R1bGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKKytzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAoc3RydWN0IHR5cGUg KnR5cGUpCiArewotKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLSsg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rICBzdHJ1Y3QgZGllX2luZm8gKm1vZHVsZV9kaWU7 Ci0rICBjaGFyICptb2R1bGVfbmFtZTsKLSsgIHN0cnVjdCBmb3J0cmFuX3VzaW5nICp1c2U7Cisr ICB2b2lkICoqc2xvdDsKICsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9pbXBv cnQsIGN1KTsKLSsgIGlmIChhdHRyID09IE5VTEwpCi0rICAgIHJldHVybjsKKysgIGdkYl9hc3Nl cnQgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7CiArCi0rICBtb2R1bGVfZGllID0gZm9sbG93 X2RpZV9yZWYgKGRpZSwgYXR0ciwgJmN1KTsKLSsgIG1vZHVsZV9uYW1lID0gZHdhcmYyX25hbWUg KG1vZHVsZV9kaWUsIGN1KTsKLSsgIGlmIChtb2R1bGVfbmFtZSA9PSBOVUxMKQotKyAgICB7Ci0r ICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJIF8oIkltcG9ydGVkIERJ RSBhdCBvZmZzZXQgMHgleCBoYXMgbm8gbmFtZSIpLCBkaWUtPm9mZnNldCk7Ci0rICAgICAgcmV0 dXJuOwotKyAgICB9CisrICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7CisrICBUWVBFX0RJ U0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwogKwot KyAgLyogRm9ydHJhbiBkb2VzIG5vdCBhbGxvdyBhbnkgZHVwbGljaXR5IGJldHdlZW4gbG9jYWwg YW5kIGFueSBvZiB0aGUgaW1wb3J0ZWQKLSsgICAgIHN5bWJvbHMuICBUaGVyZWZvcmUgdGhlIG9y ZGVyIG9mIHRoZSBVU0Ugc3RhdGVtZW50cyBpcyBub3QgcG9ydGFudC4KLSsgICAgIGdmb3J0cmFu IHByaW50czoKLSsgICAgIEVycm9yOiBOYW1lICdYJyBhdCAoMSkgaXMgYW4gYW1iaWd1b3VzIHJl ZmVyZW5jZSB0byAnWCcgZnJvbSBtb2R1bGUgJ1knICAqLwotKwotKyAgdXNlID0gb2JzdGFja19h bGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqdXNlKQotKwkJCQkJCSAg KyBzdHJsZW4gKG1vZHVsZV9uYW1lKSk7Ci0rICBzdHJjcHkgKHVzZS0+bW9kdWxlX25hbWUsIG1v ZHVsZV9uYW1lKTsKLSsgIGdkYl9hc3NlcnQgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0 cmFuKTsKLSsgIHVzZS0+bmV4dCA9IGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZTsK LSsgIGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZSA9IHVzZTsKKysgIHNsb3QgPSBo dGFiX2ZpbmRfc2xvdCAodHlwZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlwZSwgSU5TRVJUKTsKKysg IGdkYl9hc3NlcnQgKCEqc2xvdCk7CisrICAqc2xvdCA9IHR5cGU7CiArfQogKwotKy8qIEltcG9y dCBhIHNpbmdsZSBGb3J0cmFuIGRlY2xhcmF0aW9uIGFuZCBwb3NzaWJseSByZW5hbWUgaXQuICAq LworKy8qIEFsbG9jYXRlIGEgbmV3IHR5cGUgbGlrZSBhbGxvY190eXBlIGJ1dCBwcmVzZXJ2ZSBm b3IgaXQgdGhlIGRpc2NhcmRhYmlsaXR5CisrICAgc3RhdGUgb2YgUEFSRU5UX1RZUEUuICAqLwog KwotK3N0YXRpYyB2b2lkCi0rcmVhZF9mb3J0cmFuX2ltcG9ydGVkX2RlY2xhcmF0aW9uIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrc3RhdGljIHN0cnVjdCB0 eXBlICoKKythbGxvY190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQog K3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rICBzdHJ1Y3QgZGllX2luZm8gKmltcG9y dGVkX2RpZTsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsgIGNoYXIgKnJlbmFtZSA9IGR3YXJm Ml9uYW1lIChkaWUsIGN1KTsKKysgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVf Y29weSAocGFyZW50X3R5cGUpOwogKwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X2ltcG9ydCwgY3UpOwotKyAgaWYgKGF0dHIgPT0gTlVMTCkKKysgIGlmIChUWVBFX0RJU0NBUkRB QkxFIChwYXJlbnRfdHlwZSkpCisrICAgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlw ZSk7CisrCisrICByZXR1cm4gbmV3X3R5cGU7CisrfQorKworIC8qIEFsbG9jYXRlIGEgbmV3IEdE QkFSQ0gtYXNzb2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29t ZSBkZWZhdWx0cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCisg ICAgb24gdGhlIGhlYXAuICAqLworQEAgLTI3OCw3ICszMTksNyBAQCBtYWtlX3BvaW50ZXJfdHlw ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKKyAKKyAgIGlmICh0 eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBv bmUuICAqLworICAgICB7CistICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOwor KyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOworICAgICAgIGlmICh0 eXBlcHRyKQorIAkqdHlwZXB0ciA9IG50eXBlOworICAgICB9CitAQCAtMzU1LDcgKzM5Niw3IEBA IG1ha2VfcmVmZXJlbmNlX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5 cGVwdHIpCisgCisgICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xs IG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KKyAgICAgeworLSAgICAgIG50eXBlID0gYWxsb2Nf dHlwZV9jb3B5ICh0eXBlKTsKKysgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFyZW50ICh0 eXBlKTsKKyAgICAgICBpZiAodHlwZXB0cikKKyAJKnR5cGVwdHIgPSBudHlwZTsKKyAgICAgfQor QEAgLTcyNiw2ICs3NjcsNyBAQCBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3Vs dF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAgICAgVFlQRV9aQUxMT0MgKHJlc3Vs dF90eXBlLCBzaXplb2YgKHN0cnVjdCByYW5nZV9ib3VuZHMpKTsKKyAgIFRZUEVfTE9XX0JPVU5E IChyZXN1bHRfdHlwZSkgPSBsb3dfYm91bmQ7CisgICBUWVBFX0hJR0hfQk9VTkQgKHJlc3VsdF90 eXBlKSA9IGhpZ2hfYm91bmQ7CisrICBUWVBFX0JZVEVfU1RSSURFIChyZXN1bHRfdHlwZSkgPSAw OworIAorICAgaWYgKGxvd19ib3VuZCA+PSAwKQorICAgICBUWVBFX1VOU0lHTkVEIChyZXN1bHRf dHlwZSkgPSAxOworQEAgLTgyNSwyNiArODY3LDQ1IEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1 Y3QgdHlwZSAqcmVzdWx0X3R5cGUsCisgCisgICBUWVBFX0NPREUgKHJlc3VsdF90eXBlKSA9IFRZ UEVfQ09ERV9BUlJBWTsKKyAgIFRZUEVfVEFSR0VUX1RZUEUgKHJlc3VsdF90eXBlKSA9IGVsZW1l bnRfdHlwZTsKKy0gIGlmIChnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93X2Jv dW5kLCAmaGlnaF9ib3VuZCkgPCAwKQorLSAgICBsb3dfYm91bmQgPSBoaWdoX2JvdW5kID0gMDsK Ky0gIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7CistICAvKiBCZSBjYXJlZnVsIHdoZW4g c2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKKy0gICAgIGVtcHR5 IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2Jv dW5kLgorLSAgICAgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVy by4gICovCistICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCkKKy0gICAgVFlQRV9MRU5HVEgg KHJlc3VsdF90eXBlKSA9IDA7CistICBlbHNlCistICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlw ZSkgPQorLSAgICAgIFRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBs b3dfYm91bmQgKyAxKTsKKyAgIFRZUEVfTkZJRUxEUyAocmVzdWx0X3R5cGUpID0gMTsKKyAgIFRZ UEVfRklFTERTIChyZXN1bHRfdHlwZSkgPQorICAgICAoc3RydWN0IGZpZWxkICopIFRZUEVfWkFM TE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKKyAgIFRZUEVfSU5ERVhf VFlQRSAocmVzdWx0X3R5cGUpID0gcmFuZ2VfdHlwZTsKKyAgIFRZUEVfVlBUUl9GSUVMRE5PIChy ZXN1bHRfdHlwZSkgPSAtMTsKKyAKKy0gIC8qIFRZUEVfRkxBR19UQVJHRVRfU1RVQiB3aWxsIHRh a2UgY2FyZSBvZiB6ZXJvIGxlbmd0aCBhcnJheXMgKi8KKysgIC8qIERXQVJGIGJsb2NrcyBtYXkg ZGVwZW5kIG9uIHJ1bnRpbWUgaW5mb3JtYXRpb24gbGlrZQorKyAgICAgRFdfT1BfUFVTSF9PQkpF Q1RfQUREUkVTUyBub3QgYmVpbmcgYXZhaWxhYmxlIGR1cmluZyB0aGUKKysgICAgIENSRUFURV9B UlJBWV9UWVBFIHRpbWUuICAqLworKyAgaWYgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkt Pmxvdy5raW5kICE9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQKKysgICAgICB8fCBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05T VEFOVAorKyAgICAgIHx8IFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCisr ICAgICAgfHwgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCisrICAgICAg fHwgZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91 bmQpIDwgMCkKICsgICAgewotKyAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywK LSsJCSBfKCJGb3J0cmFuIERXX1RBR19pbXBvcnRlZF9kZWNsYXJhdGlvbiBpcyBtaXNzaW5nICIK LSsJCSAgICJEV19BVF9pbXBvcnQgYXQgb2Zmc2V0IDB4JXgiKSwgZGllLT5vZmZzZXQpOwotKyAg ICAgIHJldHVybjsKKysgICAgICBsb3dfYm91bmQgPSAwOworKyAgICAgIGhpZ2hfYm91bmQgPSAt MTsKICsgICAgfQotKyAgaW1wb3J0ZWRfZGllID0gZm9sbG93X2RpZV9yZWYgKGRpZSwgYXR0ciwg JmN1KTsKICsKLSsgIHN5bSA9IG5ld19zeW1ib2wgKGltcG9ydGVkX2RpZSwgTlVMTCwgY3UpOwor KyAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxlbmd0aC4gIEFkYSBhcnJh eXMgY2FuIGJlCisrICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGlnaF9ib3VuZCBiZWluZyBz bWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KKysgICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBhcnJh eSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICBUWVBFX1RBUkdFVF9TVFVCIG5lZWRzIHRvCisrICAg ICBiZSBjaGVja2VkIGFzIGl0IG1heSBoYXZlIGRlcGVuZGVuY2llcyBvbiBEV0FSRiBibG9ja3Mg ZGVwZW5kaW5nIG9uCisrICAgICBydW50aW1lIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGUgZHVy aW5nIHRoZSBDUkVBVEVfQVJSQVlfVFlQRSB0aW1lLiAgKi8KKysgIGlmIChoaWdoX2JvdW5kIDwg bG93X2JvdW5kIHx8IFRZUEVfVEFSR0VUX1NUVUIgKGVsZW1lbnRfdHlwZSkpCisrICAgIFRZUEVf TEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOworKyAgZWxzZQorKyAgICB7CisrICAgICAgQ0hFQ0tf VFlQRURFRiAoZWxlbWVudF90eXBlKTsKKysgICAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUp ID0KKysJVFlQRV9MRU5HVEggKGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3Vu ZCArIDEpOworKyAgICB9CiArCi0rICBpZiAoc3ltICYmIHJlbmFtZSkKLSsgICAgU1lNQk9MX0NQ TFVTX0RFTUFOR0xFRF9OQU1FIChzeW0pID0gcmVuYW1lOworICAgaWYgKFRZUEVfTEVOR1RIIChy ZXN1bHRfdHlwZSkgPT0gMCkKKy0gICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0g MTsKKysgICAgeworKyAgICAgIC8qIFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBmb3Ig c3BlY2lmaWMgaW5zdGFuY2VzIGJ5CisrCSBDSEVDS19UWVBFREVGLiAgKi8KKysgICAgICBUWVBF X1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOworKyAgICB9CisgCisgICByZXR1cm4gcmVz dWx0X3R5cGU7CisgfQorQEAgLTEzNTMsNiArMTQxNCwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxh aW50ICh2b2lkKQorICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJzdHViIHR5 cGUgaGFzIE5VTEwgbmFtZSIpKTsKICB9CiAgCi0gLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBu YW1lc3BhY2UgcmVwcmVzZW50ZWQgYnkgRElFLiAgU2V0Ci1AQCAtNTgxOCwyOSArNjMzNywxMTUg QEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJj aCAob2JqZmlsZSk7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90 eXBlLCAqY2hhcl90eXBlOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIHVuc2lnbmVk IGludCBsZW5ndGg7Ci0rICBpbnQgbGVuZ3RoOworKy8qIENhbGN1bGF0ZSB0aGUgbWVtb3J5IGxl bmd0aCBvZiBhcnJheSBUWVBFLgogKwotKyAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2Jq ZmlsZSktPmJ1aWx0aW5faW50OwotKyAgLyogUkFOR0VfVFlQRSBpcyBhbGxvY2F0ZWQgZnJvbSBP QkpGSUxFLCBub3QgYXMgYSBwZXJtYW5lbnQgdHlwZS4gICovCi0rICByYW5nZV90eXBlID0gYWxs b2NfdHlwZSAob2JqZmlsZSk7Ci0rICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNl dCBmb3IgcmVhbCBiZWxvdy4gICovCi0rICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUg KHJhbmdlX3R5cGUsIGluZGV4X3R5cGUsIDAsIC0xKTsKKysgICBUQVJHRVRfVFlQRSBzaG91bGQg YmUgc2V0IHRvIGBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSknIGFzCisr ICAgYSBwZXJmb3JtYW5jZSBoaW50LiAgRmVlbCBmcmVlIHRvIHBhc3MgTlVMTC4gIFNldCBGVUxM X1NQQU4gdG8gcmV0dXJuIHRoZQorKyAgIHNpemUgaW5jbC4gdGhlIHBvc3NpYmxlIHBhZGRpbmcg b2YgdGhlIGxhc3QgZWxlbWVudCAtIGl0IG1heSBkaWZmZXIgZnJvbSB0aGUKKysgICBjbGVhcmVk IEZVTExfU1BBTiByZXR1cm4gdmFsdWUgKHRoZSBleHBlY3RlZCBTSVpFT0YpIGZvciBub24temVy bworKyAgIFRZUEVfQllURV9TVFJJREUgdmFsdWVzLiAgKi8KICsKLSsgIC8qIEMvQysrIHNob3Vs ZCBwcm9iYWJseSBoYXZlIHRoZSBsb3cgYm91bmQgMCBidXQgQy9DKysgZG9lcyBub3QgdXNlCi0r ICAgICBEV19UQUdfc3RyaW5nX3R5cGUuICAqLwotKyAgVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5 cGUpID0gMTsKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9zdHJpbmdfbGVu Z3RoLCBjdSk7Ci0tICBpZiAoYXR0cikKLS0gICAgewotLSAgICAgIGxlbmd0aCA9IERXX1VOU05E IChhdHRyKTsKLSsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrc3Rh dGljIExPTkdFU1QKKyt0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg dHlwZSAqdGFyZ2V0X3R5cGUsIGludCBmdWxsX3NwYW4pCisreworKyAgc3RydWN0IHR5cGUgKnJh bmdlX3R5cGU7CisrICBMT05HRVNUIGJ5dGVfc3RyaWRlID0gMDsJLyogYD0gMCcgZm9yIGEgZmFs c2UgR0NDIHdhcm5pbmcuICAqLworKyAgTE9OR0VTVCBjb3VudCwgZWxlbWVudF9zaXplLCByZXR2 YWw7CisrCisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkKKysgICAg ICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcpCisrICAgIHJldHVybiBU WVBFX0xFTkdUSCAodHlwZSk7CisrCisrICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JP VU5EIGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCisrICAgICBGb3J0cmFu IGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBj YW4gYmUKKysgICAgIHplcm8tbGVuZ3RoLiAgKi8KKysgIGlmIChvYmplY3RfYWRkcmVzc19kYXRh X25vdF92YWxpZCAodHlwZSkpCisrICAgIHJldHVybiAwOworKworKyAgcmFuZ2VfdHlwZSA9IFRZ UEVfSU5ERVhfVFlQRSAodHlwZSk7CisrICBpZiAoVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChy YW5nZV90eXBlKQorKyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5 cGUpKQorKyAgICByZXR1cm4gMDsKKysgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90 eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7CisrICAvKiBJdCBtYXkgaGFw cGVuIGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAg Ki8KKysgIGlmIChjb3VudCA8IDApCisrICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVz IGhhcyBpbnZhbGlkIGJvdW5kcyAlcy4uJXMiKSwKKysJICAgICBUWVBFX05BTUUgKHR5cGUpLCBw bG9uZ2VzdCAoVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKKysJICAgICBwbG9uZ2VzdCAo VFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSkpOworKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9l cyBub3QgaGFuZGxlIGNvdW50ID09IDAgcmlnaHQuICAqLworKyAgaWYgKGNvdW50IDw9IDApCisr ICAgIHJldHVybiAwOworKyAgaWYgKGZ1bGxfc3BhbiB8fCBjb3VudCA+IDEpCiArICAgIHsKLSsg ICAgICAvKiBTZWN1cml0eSBjaGVjayBmb3IgYSBzaXplIG92ZXJmbG93LiAgKi8KLSsgICAgICBp ZiAoRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgMiA8IERXX0JMT0NLIChhdHRyKS0+c2l6ZSkKLSsJ VFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgICAgLyogRXh0ZW5kIHRoZSBE V0FSRiBibG9jayBieSBhIG5ldyBEV19PUF9kZXJlZi9EV19PUF9kZXJlZl9zaXplCi0rCSBpbnN0 cnVjdGlvbiBhcyBEV19BVF9zdHJpbmdfbGVuZ3RoIHNwZWNpZmllcyB0aGUgbGVuZ3RoIGxvY2F0 aW9uLCBub3QKLSsJIGl0cyB2YWx1ZS4gICovCi0rICAgICAgZWxzZQotKwl7Ci0rCSAgc3RydWN0 IGR3YXJmMl9sb2NleHByX2JhdG9uICpsZW5ndGhfYmF0b24gPSBOVUxMOwotKwkgIHN0cnVjdCBk d2FyZl9ibG9jayAqYmxrID0gRFdfQkxPQ0sgKGF0dHIpOworKyAgICAgIC8qIFdlIGRvIG5vdCB1 c2UgVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRSAodHlwZSkgaGVyZSBhcyB3ZSB3YW50IHRv CisrICAgICAgICAgZm9yY2UgRlVMTF9TUEFOIHRvIDEuICAqLworKyAgICAgIGJ5dGVfc3RyaWRl ID0gVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSk7CisrICAgICAgaWYgKGJ5dGVfc3RyaWRl ID09IDApCisrICAgICAgICB7CisrCSAgaWYgKHRhcmdldF90eXBlID09IE5VTEwpCisrCSAgICB0 YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKysJ ICBieXRlX3N0cmlkZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEpOwor Kwl9CisrICAgIH0KICsKLSsJICAvKiBUdXJuIGFueSBzaW5nbGUgRFdfT1BfcmVnKiBpbnRvIERX X09QX2JyZWcqKDApIGJ1dCBjbGVhcmluZwotKwkgICAgIERXX09QX2RlcmVmKiBpbiBzdWNoIGNh c2UuICAqLworKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkg bGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAorKyAgICAgZXhjZWVkcyBVSU5UX01BWC4gIFRo ZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAsCisrICAgICAoVUxPTkdFU1QpIHgg PT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0ZWNobmljYWxseSBub3QgZ3VhcmFu dGVlZAorKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZSAoYmVjYXVzZSBpdCB3b3VsZCBi ZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAorKyAgICAgd2l0aCBpdHMgaGlnaC1vcmRlciBiaXQg b24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMKKysgICAg IGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQt bG93X2JvdW5kKzEKKysgICAgIG92ZXJmbG93cywgaXQgb3ZlcmZsb3dzIHRvIDAuICBXZSBtdXN0 IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8KKysgICAgIGluY3JlYXNlIHRoZSBy ZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VT VC4KKysgICAgICovCiArCi0rCSAgaWYgKGJsay0+c2l6ZSA9PSAxICYmIGJsay0+ZGF0YVswXSA+ PSBEV19PUF9yZWcwCi0rCSAgICAgICYmIGJsay0+ZGF0YVswXSA8PSBEV19PUF9yZWczMSkKLSsJ ICAgIGxlbmd0aF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1 KTsKLSsJICBlbHNlIGlmIChibGstPnNpemUgPiAxICYmIGJsay0+ZGF0YVswXSA9PSBEV19PUF9y ZWd4KQotKwkgICAgewotKwkgICAgICBVTE9OR0VTVCB1bG9uZ2VzdDsKLSsJICAgICAgZ2RiX2J5 dGUgKmVuZDsKKysgIGlmIChmdWxsX3NwYW4pCisrICAgIHsKKysgICAgICByZXR2YWwgPSBjb3Vu dCAqIGJ5dGVfc3RyaWRlOworKyAgICAgIGlmIChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50 ICE9IGJ5dGVfc3RyaWRlIHx8IHJldHZhbCA+IFVJTlRfTUFYKQorKwlyZXR2YWwgPSAwOworKyAg ICAgIHJldHVybiByZXR2YWw7CisrICAgIH0KKysgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQor KyAgICB0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsKKysgIGVsZW1lbnRfc2l6ZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEws IDEpOworKyAgcmV0dmFsID0gKGNvdW50IC0gMSkgKiBieXRlX3N0cmlkZSArIGVsZW1lbnRfc2l6 ZTsKKysgIGlmIChyZXR2YWwgPCBlbGVtZW50X3NpemUKKysgICAgICB8fCAoYnl0ZV9zdHJpZGUg IT0gMAorKyAgICAgICAgICAmJiAocmV0dmFsIC0gZWxlbWVudF9zaXplKSAvIGJ5dGVfc3RyaWRl ICE9IGNvdW50IC0gMSkKKysgICAgICB8fCByZXR2YWwgPiBVSU5UX01BWCkKKysgICAgcmV0dmFs ID0gMDsKKysgIHJldHVybiByZXR2YWw7CisrfQogKwotKwkgICAgICBlbmQgPSByZWFkX3VsZWIx MjggKCZibGstPmRhdGFbMV0sICZibGstPmRhdGFbYmxrLT5zaXplXSwKLSsJCQkJICAmdWxvbmdl c3QpOwotKwkgICAgICBpZiAoZW5kID09ICZibGstPmRhdGFbYmxrLT5zaXplXSkKLSsJCWxlbmd0 aF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsJICAg IH0KKysvKiBQcmVwYXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4g IEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uCisrICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZ TkFNSUMgZmxhZy4gICovCiArCi0rCSAgaWYgKGxlbmd0aF9iYXRvbiA9PSBOVUxMKQotKwkgICAg ewotKwkgICAgICBzdHJ1Y3QgYXR0cmlidXRlICpzaXplX2F0dHI7Cisrdm9pZAorK2ZpbmFsaXpl X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK3sKKysgIGludCBpOwogKwotKwkgICAgICBsZW5n dGhfYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAotKwkJCQkJ ICAgIHNpemVvZiAoKmxlbmd0aF9iYXRvbikpOwotKwkgICAgICBsZW5ndGhfYmF0b24tPnBlcl9j dSA9IGN1LT5wZXJfY3U7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChh dHRyKS0+c2l6ZSArIDI7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+ZGF0YSA9IG9ic3RhY2tfYWxs b2MgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssCi0rCQkJCQkJICBsZW5ndGhfYmF0b24tPnNpemUp OwotKwkgICAgICBtZW1jcHkgKGxlbmd0aF9iYXRvbi0+ZGF0YSwgRFdfQkxPQ0sgKGF0dHIpLT5k YXRhLAotKwkJICAgICAgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKTsKKysgIGZvciAoaSA9IDA7IGkg PCBUWVBFX05GSUVMRFMgKHR5cGUpOyArK2kpCisrICAgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5 cGUsIGkpICYmIFRZUEVfRFlOQU1JQyAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkpCisrICAg ICAgYnJlYWs7CiArCi0rCSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhl ciB3aXRoIERXX0FUX1NUUklOR19MRU5HVEgKLSsJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4g aW50ZWdlciB0byBmZXRjaC4gICovCi0rCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwotKwkgICAgICBpZiAoc2l6ZV9hdHRyKQotKwkJewot KwkJICBsZW5ndGhfYmF0b24tPmRhdGFbRFdfQkxPQ0sgKGF0dHIpLT5zaXplXSA9IERXX09QX2Rl cmVmX3NpemU7Ci0rCQkgIGxlbmd0aF9iYXRvbi0+ZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUg KyAxXSA9Ci0rCQkJCQkJCSAgIERXX1VOU05EIChzaXplX2F0dHIpOwotKwkJICBpZiAobGVuZ3Ro X2JhdG9uLT5kYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdCi0rCQkgICAgICAhPSBEV19V TlNORCAoc2l6ZV9hdHRyKSkKLSsJCSAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMs Ci0rCQkJICAgICAgIF8oIkRXX0FUX3N0cmluZ19sZW5ndGgncyBEV19BVF9ieXRlX3NpemUgIgot KwkJCQkgImludGVnZXIgZXhjZWVkcyB0aGUgYnl0ZSBzaXplIHN0b3JhZ2UiKSk7Ci0rCQl9Ci0r CSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgbGVuZ3RoX2JhdG9uLT5kYXRhW0RXX0JMT0NLIChhdHRy KS0+c2l6ZV0gPSBEV19PUF9kZXJlZjsKLSsJCSAgbGVuZ3RoX2JhdG9uLT5kYXRhW0RXX0JMT0NL IChhdHRyKS0+c2l6ZSArIDFdID0gRFdfT1Bfbm9wOwotKwkJfQotKwkgICAgfQotKwotKwkgIFRZ UEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZAotKwkgICAgPSBSQU5HRV9CT1VO RF9LSU5EX0RXQVJGX0JMT0NLOwotKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhp Z2gudS5kd2FyZl9ibG9jayA9IGxlbmd0aF9iYXRvbjsKLSsJICBUWVBFX0RZTkFNSUMgKHJhbmdl X3R5cGUpID0gMTsKLSsJfQotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICAvKiBjaGVj ayBmb3IgdGhlIERXX0FUX2J5dGVfc2l6ZSBhdHRyaWJ1dGUgKi8KLSsgICAgICBpZiAoYXR0ciAm JiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQotKwl7Ci0rCSAgLyogV2UgY3VycmVudGx5 IGRvIG5vdCBzdXBwb3J0IGEgY29uc3RhbnQgYWRkcmVzcyB3aGVyZSB0aGUgbG9jYXRpb24KLSsJ ICAgICBzaG91bGQgYmUgcmVhZCBmcm9tIC0gYXR0cl9mb3JtX2lzX2Jsb2NrIGlzIGV4cGVjdGVk IGluc3RlYWQuICBTZWUKLSsJICAgICBEV0FSRiBmb3IgdGhlIERXX0FUX1NUUklOR19MRU5HVEgg dnMuIERXX0FUX0JZVEVfU0laRSBkaWZmZXJlbmNlLgotKwkgICAgICovCi0rCSAgLyogUEFTU1RI UlUgKi8KLSsJfQorKyAgLyogRklYTUU6IGNwbHVzX3N0dWZmIGlzIGlnbm9yZWQgaGVyZS4gICov CisrICBpZiAoaSA8IFRZUEVfTkZJRUxEUyAodHlwZSkKKysgICAgICB8fCAoVFlQRV9WUFRSX0JB U0VUWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkp KQorKyAgICAgIHx8IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkpCisrICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAxOwor K30KICsKLSAgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zaXplLCBj dSk7Ci0tICAgICAgaWYgKGF0dHIpCi0tICAgICAgICB7Ci0tICAgICAgICAgIGxlbmd0aCA9IERX X1VOU05EIChhdHRyKTsKLS0gICAgICAgIH0KLSsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpKQotKwl7Ci0rCSAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ aGlnaC5raW5kCi0rCSAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7Ci0rCSAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3 YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsJICBUWVBFX0RZTkFNSUMg KHJhbmdlX3R5cGUpID0gMTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3Jt X2lzX2NvbnN0YW50IChhdHRyKSkKLSsJVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGR3 YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0gICAgICAgZWxzZQotLSAg ICAgICAgewotLSAgICAgICAgICBsZW5ndGggPSAxOwotLSAgICAgICAgfQotKwlUWVBFX0hJR0hf Qk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKLSAgICAgfQotIAotLSAgaW5kZXhfdHlwZSA9IG9iamZp bGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OwotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9y YW5nZV90eXBlIChOVUxMLCBpbmRleF90eXBlLCAxLCBsZW5ndGgpOwotICAgY2hhcl90eXBlID0g bGFuZ3VhZ2Vfc3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwot ICAgdHlwZSA9IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBl KTsKKyAvKiBBZGRlZCBieSBCcnlhbiBCb3JlaGFtLCBLZXdpbGwsIFN1biBTZXAgMTcgMTg6MDc6 MTcgMTk4OS4KICAKLUBAIC01OTQwLDExICs2NTQ1LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAq Ci0gcmVhZF90eXBlZGVmIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLS0gIHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0gICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgIHN0 cnVjdCB0eXBlICp0aGlzX3R5cGU7Ci0gCi0tICBuYW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAoZGll LCBjdSk7Ci0rICBuYW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAoTlVMTCwgZGllLCBjdSk7Ci0gICB0 aGlzX3R5cGUgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9UWVBFREVGLCAwLAotIAkJCSBUWVBFX0ZM QUdfVEFSR0VUX1NUVUIsIE5VTEwsIG9iamZpbGUpOwotICAgVFlQRV9OQU1FICh0aGlzX3R5cGUp ID0gKGNoYXIgKikgbmFtZTsKLUBAIC02MDQ4LDggKzY2NTIsNyBAQCByZWFkX3N1YnJhbmdlX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVj dCB0eXBlICpiYXNlX3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKLSAgIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBMT05HRVNUIGxvdyA9IDA7Ci0tICBMT05HRVNUIGhpZ2gg PSAtMTsKLSsgIExPTkdFU1QgbG93OwotICAgY2hhciAqbmFtZTsKLSAgIExPTkdFU1QgbmVnYXRp dmVfbWFzazsKLSAgIAotQEAgLTYwNjMsNDkgKzY2NjYsMTU3IEBAIHJlYWRfc3VicmFuZ2VfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkJICAgICAw LCBOVUxMLCBjdS0+b2JqZmlsZSk7CisgICAgSWYgdGhpcyBpcyBhIHN0dWJiZWQgc3RydWN0IChp LmUuIGRlY2xhcmVkIGFzIHN0cnVjdCBmb28gKiksIHNlZSBpZgorQEAgLTE0ODYsNTIgKzE2NDYs MzYgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgICAgICB9CiAgICAg IH0KICAKLS0gIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKLS0gICAgeyAK LS0gICAgICAvKiBGT1JUUkFOIGltcGxpZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2 ZW4uICAqLwotLSAgICAgIGxvdyA9IDE7Ci0tICAgIH0KLSsgIC8qIExPV19CT1VORCBhbmQgSElH SF9CT1VORCBhcmUgc2V0IGZvciByZWFsIGJlbG93LiAgKi8KLSsgIHJhbmdlX3R5cGUgPSBjcmVh dGVfcmFuZ2VfdHlwZSAoTlVMTCwgYmFzZV90eXBlLCAwLCAtMSk7Ci0rCi0rICBuZWdhdGl2ZV9t YXNrID0gCi0rICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBU QVJHRVRfQ0hBUl9CSVQgLSAxKTsKLSAKLS0gIC8qIEZJWE1FOiBGb3IgdmFyaWFibGUgc2l6ZWQg YXJyYXlzIGVpdGhlciBvZiB0aGVzZSBjb3VsZCBiZQotLSAgICAgYSB2YXJpYWJsZSByYXRoZXIg dGhhbiBhIGNvbnN0YW50IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCi0tICAgICBidXQgd2UgZG9u J3Qga25vdyBob3cgdG8gaGFuZGxlIGl0LiAgKi8KLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotLSAgaWYgKGF0dHIpCi0tICAgIGxvdyA9IGR3YXJm Ml9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICBpZiAoYXR0ciAmJiBhdHRy X2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKyAg ICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2Jsb2NrID0KLSsJ CQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBF X0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICAvKiBGb3Igc2V0dGluZyBhIGRlZmF1 bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlzc2luZy4gICovCi0rICAgICAgbG93 ID0gMDsKLSsgICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikpCist ICBpZiAoVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkpCisrICAvKiBjb3B5X3R5cGVfcmVjdXJzaXZl IGF1dG9tYXRpY2FsbHkgbWFrZXMgdGhlIHJlc3VsdGluZyB0eXBlIGNvbnRhaW5pbmcgb25seQor KyAgICAgY29uc3RhbnQgdmFsdWVzIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVu Y3Rpb24uICAqLworKyAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCiArICAgIHsKLSsgICAgICBz dHJ1Y3QgZGllX2luZm8gKnRhcmdldF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFy Z2V0X2N1ID0gY3U7Ci0rICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwor KyAgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXM7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGVfb2xk ID0gdHlwZTsKICsKLSsgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChk aWUsIGF0dHIsICZ0YXJnZXRfY3UpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2Jq ZmlsZSA9PSBjdS0+b2JqZmlsZSk7Ci0rICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0 dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOworKyAgICAgIGNvcGll ZF90eXBlcyA9IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoTlVMTCk7CisrICAgICAgdHlwZSA9 IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90eXBlcyk7CisrICAgICAgaHRhYl9k ZWxldGUgKGNvcGllZF90eXBlcyk7CiArCi0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90 eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7Ci0rICAgICAg VFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0 Ci0rICAgICAgICA9IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHRhcmdldF9sb2NfYXR0 ciwgdGFyZ2V0X2N1KTsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cu dS5kd2FyZl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRh cmdldF9jdSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgICAg LyogRm9yIHNldHRpbmcgYSBkZWZhdWx0IGlmIERXX0FUX1VQUEVSX0JPVU5EIHdvdWxkIGJlIG1p c3NpbmcuICAqLwotKyAgICAgIGxvdyA9IDA7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAg ICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCWxvdyA9IGR3 YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICAgICAgZWxzZQotKwl7 Ci0rCSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQotKwkgICAgewotKwkg ICAgICAvKiBGT1JUUkFOIGltcGxpZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4u ICAqLwotKwkgICAgICBsb3cgPSAxOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAg ICAgLyogQWNjb3JkaW5nIHRvIERXQVJGIHdlIHNob3VsZCBhc3N1bWUgdGhlIHZhbHVlIDAgb25s eSBmb3IKLSsJCSBMQU5HVUFHRV9DIGFuZCBMQU5HVUFHRV9DUExVUy4gICovCi0rCSAgICAgIGxv dyA9IDA7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlw ZSkgJiYgKGxvdyAmIG5lZ2F0aXZlX21hc2spKQotKwlsb3cgfD0gbmVnYXRpdmVfbWFzazsKLSsg ICAgICBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkgPSBsb3c7Ci0rICAgICAgaWYgKGxvdyA+ PSAwKQotKwlUWVBFX1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgZ2RiX2Fzc2Vy dCAoVFlQRV9EWU5BTUlDICh0eXBlKSA9PSAwKTsKICsgICAgfQorKworKyAgaWYgKFRZUEVfVEFS R0VUX1NUVUIgKHR5cGUpIHx8IFRZUEVfRFlOQU1JQyAodHlwZSkpCisgICAgIHsKKy0gICAgICBz dHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKKyAgICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUg PSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CiAgCi0gICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQot LSAgICB7ICAgICAgIAotLSAgICAgIGlmIChhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sxKQot LSAgICAgICAgewotLSAgICAgICAgICAvKiBHQ0MgZW5jb2RlcyBhcnJheXMgd2l0aCB1bnNwZWNp ZmllZCBvciBkeW5hbWljIGxlbmd0aAotLSAgICAgICAgICAgICB3aXRoIGEgRFdfRk9STV9ibG9j azEgYXR0cmlidXRlLgotLSAgICAgICAgICAgICBGSVhNRTogR0RCIGRvZXMgbm90IHlldCBrbm93 IGhvdyB0byBoYW5kbGUgZHluYW1pYwotLSAgICAgICAgICAgICBhcnJheXMgcHJvcGVybHksIHRy ZWF0IHRoZW0gYXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQKLS0gICAgICAgICAgICAgbGVuZ3Ro IGZvciBub3cuCisrICAgICAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCisrCVRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpID0gdGFyZ2V0X3R5cGU7CisgICAgICAgaWYgKFRZUEVfU1RVQiAodGFyZ2V0 X3R5cGUpIHx8IFRZUEVfVEFSR0VUX1NUVUIgKHRhcmdldF90eXBlKSkKKyAJeworIAkgIC8qIEVt cHR5LiAgKi8KKyAJfQorICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX0FSUkFZCistCSAgICAgICAmJiBUWVBFX05GSUVMRFMgKHR5cGUpID09IDEKKy0JICAgICAg ICYmIChUWVBFX0NPREUgKHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpKQorLQkJ ICAgPT0gVFlQRV9DT0RFX1JBTkdFKSkKKysJICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX1NUUklORykKKyAJeworIAkgIC8qIE5vdyByZWNvbXB1dGUgdGhlIGxlbmd0aCBv ZiB0aGUgYXJyYXkgdHlwZSwgYmFzZWQgb24gaXRzCistCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRz IGFuZCB0aGUgdGFyZ2V0IHR5cGUncyBsZW5ndGguCistCSAgICAgV2F0Y2ggb3V0IGZvciBBZGEg bnVsbCBBZGEgYXJyYXlzIHdoZXJlIHRoZSBoaWdoIGJvdW5kCistCSAgICAgaXMgc21hbGxlciB0 aGFuIHRoZSBsb3cgYm91bmQuICovCistCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBF X0xPV19CT1VORCAocmFuZ2VfdHlwZSk7CistCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0g VFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKTsKKy0JICBVTE9OR0VTVCBsZW47CiAtCi0tICAg ICAgICAgICAgIEZJWE1FOiBqaW1iLzIwMDMtMDktMjI6IEdEQiBkb2VzIG5vdCByZWFsbHkga25v dwotLSAgICAgICAgICAgICBob3cgdG8gaGFuZGxlIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5n dGgKLS0gICAgICAgICAgICAgZWl0aGVyOyB3ZSBqdXN0IHJlcHJlc2VudCB0aGVtIGFzIHplcm8t bGVuZ3RoCi0tICAgICAgICAgICAgIGFycmF5cy4gIENob29zZSBhbiBhcHByb3ByaWF0ZSB1cHBl ciBib3VuZCBnaXZlbgotLSAgICAgICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0 ZWQgYWJvdmUuICAqLwotLSAgICAgICAgICBoaWdoID0gbG93IC0gMTsKLS0gICAgICAgIH0KLSsg IGlmICghYXR0ciB8fCAoIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgIWF0dHJfZm9ybV9p c19jb25zdGFudCAoYXR0cikKLSsJCSYmICFpc19yZWZfYXR0ciAoYXR0cikpKQotKyAgICB7Ci0r ICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7Ci0rICAgICAg LyogSXQgZG9lcyBub3QgaHVydCBidXQgaXQgaXMgbmVlZGxlc3NseSBpbmVmZmVjdGl2ZSBpbiBj aGVja190eXBlZGVmLiAgKi8KLSsgICAgICBpZiAoYXR0ciAmJiAoYXR0cl9mb3JtX2lzX2Jsb2Nr IChhdHRyKSB8fCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKSkKLSsgICAgICAJewotKwkg IFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAocmFuZ2VfdHlwZSkgPSAxOwotKwkgIFRZ UEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKwl9Ci0rICAgICAgLyogUGFzcyBpdCBub3cg YXMgdGhlIHJlZ3VsYXIgRFdfQVRfdXBwZXJfYm91bmQuICAqLwotKyAgICB9CistCSAgaWYgKGhp Z2hfYm91bmQgPCBsb3dfYm91bmQpCistCSAgICBsZW4gPSAwOworLQkgIGVsc2UKKy0JICAgIHsK Ky0JICAgICAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVu Z3RoIHRvIGJlIDAKKy0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29k ZSBiZWxvdyBhc3N1bWVzCistCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCAr IFVMT05HRVNUX01BWCArIDEsCistCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRl ZWQgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZQorLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRy dWUgaWYgeCB3ZXJlIHVuc2lnbmVkIHdpdGggaXRzCistCQkgaGlnaC1vcmRlciBiaXQgb24pLiBJ dCB1c2VzIHRoZSBmYWN0IHRoYXQKKy0JCSBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcyBhbHdheXMg cmVwcmVzZW50YWJsZSBpbgorLQkJIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93 X2JvdW5kKzEgb3ZlcmZsb3dzLAorLQkJIGl0IG92ZXJmbG93cyB0byAwLiAgV2UgbXVzdCBjaGFu Z2UgdGhlc2UgdGVzdHMgaWYgd2UgCistCQkgZGVjaWRlIHRvIGluY3JlYXNlIHRoZSByZXByZXNl bnRhdGlvbiBvZiBUWVBFX0xFTkdUSAorLQkJIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNU LiAqLworLQkgICAgICBVTE9OR0VTVCB1bG93ID0gbG93X2JvdW5kLCB1aGlnaCA9IGhpZ2hfYm91 bmQ7CistCSAgICAgIFVMT05HRVNUIHRsZW4gPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOwor LQorLQkgICAgICBsZW4gPSB0bGVuICogKHVoaWdoIC0gdWxvdyArIDEpOworLQkgICAgICBpZiAo dGxlbiA9PSAwIHx8IChsZW4gLyB0bGVuIC0gMSArIHVsb3cpICE9IHVoaWdoIAorLQkJICB8fCBs ZW4gPiBVSU5UX01BWCkKKy0JCWxlbiA9IDA7CistCSAgICB9CistCSAgVFlQRV9MRU5HVEggKHR5 cGUpID0gbGVuOworKwkgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0eXBl J3MgbGVuZ3RoLiAgKi8KKysJICBUWVBFX0xFTkdUSCAodHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQg KHR5cGUsIHRhcmdldF90eXBlLCAwKTsKKyAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7 CisgCX0KKyAgICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5H RSkKK0BAIC0xNTM5LDkgKzE2ODMsMTIgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5 cGUpCisgCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsK KyAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7CisgCX0KKysgICAgICBUWVBFX0RZTkFN SUMgKHR5cGUpID0gMDsKKyAgICAgfQogKwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Js b2NrIChhdHRyKSkKKyAgIC8qIENhY2hlIFRZUEVfTEVOR1RIIGZvciBmdXR1cmUgdXNlLiAgKi8K KyAgIFRZUEVfTEVOR1RIIChvcmlnX3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOworKworICAg cmV0dXJuIHR5cGU7CisgfQorIAorQEAgLTE4MTEsNiArMTk1OCw4IEBAIGluaXRfdHlwZSAoZW51 bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmd0aCwgaW50IGZsYWdzLAorICAgICBUWVBFX05PVFRF WFQgKHR5cGUpID0gMTsKKyAgIGlmIChmbGFncyAmIFRZUEVfRkxBR19GSVhFRF9JTlNUQU5DRSkK KyAgICAgVFlQRV9GSVhFRF9JTlNUQU5DRSAodHlwZSkgPSAxOworKyAgaWYgKGZsYWdzICYgVFlQ RV9GTEFHX0dOVV9JRlVOQykKKysgICAgVFlQRV9HTlVfSUZVTkMgKHR5cGUpID0gMTsKKyAKKyAg IGlmIChuYW1lKQorICAgICBUWVBFX05BTUUgKHR5cGUpID0gb2JzYXZlc3RyaW5nIChuYW1lLCBz dHJsZW4gKG5hbWUpLAorQEAgLTMwMDYsMzMgKzMxNTUsNDIgQEAgdHlwZV9wYWlyX2VxIChjb25z dCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCisgfQorIAorIC8qIEFsbG9j YXRlIHRoZSBoYXNoIHRhYmxlIHVzZWQgYnkgY29weV90eXBlX3JlY3Vyc2l2ZSB0byB3YWxrCist ICAgdHlwZXMgd2l0aG91dCBkdXBsaWNhdGVzLiAgV2UgdXNlIE9CSkZJTEUncyBvYnN0YWNrLCBi ZWNhdXNlCistICAgT0JKRklMRSBpcyBhYm91dCB0byBiZSBkZWxldGVkLiAgKi8KKysgICB0eXBl cyB3aXRob3V0IGR1cGxpY2F0ZXMuICAgKi8KKyAKKyBodGFiX3QKKyBjcmVhdGVfY29waWVkX3R5 cGVzX2hhc2ggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKy0gIHJldHVybiBodGFiX2Ny ZWF0ZV9hbGxvY19leCAoMSwgdHlwZV9wYWlyX2hhc2gsIHR5cGVfcGFpcl9lcSwKKy0JCQkgICAg ICAgTlVMTCwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgICAgaGFzaHRhYl9v YnN0YWNrX2FsbG9jYXRlLAorLQkJCSAgICAgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwor KyAgaWYgKG9iamZpbGUgPT0gTlVMTCkKICsgICAgewotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAo cmFuZ2VfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7Ci0r ICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrID0K LSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBU WVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgICAvKiBOVUxMIE9CSkZJTEUgaXMg Zm9yIFRZUEVfRFlOQU1JQyB0eXBlcyBhbHJlYWR5IGNvbnRhaW5lZCBpbgorKwkgT0JKRklMRV9N QUxMT0MgbWVtb3J5LCBzdWNoIGFzIHRob3NlIGZyb20gVkFMVUVfSElTVE9SWV9DSEFJTi4gIFRh YmxlCisrCSBlbGVtZW50IGVudHJpZXMgZ2V0IGFsbG9jYXRlZCBieSB4bWFsbG9jIC0gc28gdXNl IHhmcmVlLiAgKi8KKysgICAgICByZXR1cm4gaHRhYl9jcmVhdGUgKDEsIHR5cGVfcGFpcl9oYXNo LCB0eXBlX3BhaXJfZXEsIHhmcmVlKTsKICsgICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19y ZWZfYXR0ciAoYXR0cikpCisrICBlbHNlCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8g KnRhcmdldF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7Ci0r ICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwotKwotKyAgICAgIHRhcmdl dF9kaWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7Ci0r ICAgICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKLSsg ICAgICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9j YXRpb24sIHRhcmdldF9jdSk7Ci0rCi0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBl KS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOwotKyAgICAgIFRZ UEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QK LSsgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRy LCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gu dS5kd2FyZl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRh cmdldF9jdSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0K LSsgIGVsc2UKLSsgICAgewotKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFu dCAoYXR0cikpCi0rCXsKLSsJICBMT05HRVNUIGhpZ2g7Ci0rCi0rCSAgaGlnaCA9IGR3YXJmMl9n ZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rCSAgaWYgKCFUWVBFX1VOU0lHTkVE IChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCi0rCSAgICBoaWdoIHw9IG5l Z2F0aXZlX21hc2s7Ci0rCSAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGhpZ2g7Ci0r CX0KLSAgICAgICBlbHNlCi0tICAgICAgICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50 X3ZhbHVlIChhdHRyLCAxKTsKLSsJewotKwkgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJh bmdlX3R5cGUpID0gMTsKLSsJICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gbG93IC0g MTsKLSsJfQotICAgICB9Ci0gCi0tICBuZWdhdGl2ZV9tYXNrID0gCi0tICAgIChMT05HRVNUKSAt MSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKLS0g IGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykp Ci0tICAgIGxvdyB8PSBuZWdhdGl2ZV9tYXNrOwotLSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNl X3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCi0tICAgIGhpZ2ggfD0gbmVnYXRpdmVf bWFzazsKLSsgIC8qIERXX0FUX2JpdF9zdHJpZGUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkIGFz IHdlIGNvdW50IGluIGJ5dGVzLiAgKi8KLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19B VF9ieXRlX3N0cmlkZSwgY3UpOwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChh dHRyKSkKLSsgICAgewotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVf c3RyaWRlLmtpbmQKLSsgICAgICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Js b2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsg ICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgfQotKyAgZWxzZSBpZiAo YXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2lu Zm8gKnRhcmdldF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7 Ci0rICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwotIAotLSAgcmFuZ2Vf dHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7Ci0r ICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFy Z2V0X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9i amZpbGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGll LCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKLSsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEg KHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rICAgICAgICA9IFJBTkdFX0JPVU5EX0tJ TkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5i eXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBkd2FyZjJfYXR0 cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Ci0rICAgICAg VFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0 LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7Ci0rICAg ICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0 dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsgICAgewotKyAgICAgIFRZUEVf QllURV9TVFJJREUgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVl IChhdHRyLCAwKTsKLSsgICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPT0g MCkKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgXygiRm91bmQgRFdf QVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1cHBvcnRlZCB2YWx1ZSAwIikpOworKyAgICAgIC8qIFVz ZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0 ZWQuICBUYWJsZQorKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAt IHNvIHVzZSB4ZnJlZS4gICovCisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgx LCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAorKwkJCQkgICB4ZnJlZSwgJm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjaywKKysJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRlLAorKwkJ CQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwogKyAgICB9Ci0gCi0gICBuYW1lID0gZHdh cmYyX25hbWUgKGRpZSwgY3UpOwotICAgaWYgKG5hbWUpCi1AQCAtNjU2NCw2ICs3Mjc1LDcgQEAg bG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5dGUg KmluZm9fcHRyLAotIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19sZXhpY2FsX2Jsb2NrCi0g CSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX3ZhcmlhYmxlCi0gCSAgJiYgYWJicmV2LT50YWcg IT0gRFdfVEFHX25hbWVzcGFjZQotKwkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19tb2R1bGUK LSAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbWVtYmVyKQotIAl7Ci0gCSAgLyogT3RoZXJ3 aXNlIHdlIHNraXAgdG8gdGhlIG5leHQgc2libGluZywgaWYgYW55LiAgKi8KLUBAIC02NzcyLDcg Kzc0ODQsOCBAQCByZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFy dF9kaWUsCi0gCSAgICB9Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgRFdfQVRfTUlQU19saW5rYWdlX25h bWU6Ci0tCSAgcGFydF9kaWUtPm5hbWUgPSBEV19TVFJJTkcgKCZhdHRyKTsKLSsJICBpZiAoY3Ut Pmxhbmd1YWdlID09IGxhbmd1YWdlX2FkYSkKLSsJICAgIHBhcnRfZGllLT5uYW1lID0gRFdfU1RS SU5HICgmYXR0cik7Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgRFdfQVRfbG93X3BjOgotIAkgIGhhc19s b3dfcGNfYXR0ciA9IDE7Ci1AQCAtNjk3MCw3ICs3NjgzLDggQEAgZml4dXBfcGFydGlhbF9kaWUg KHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKLSAgIC8qIElmIHdlIGZvdW5kIGEg cmVmZXJlbmNlIGF0dHJpYnV0ZSBhbmQgdGhlIERJRSBoYXMgbm8gbmFtZSwgdHJ5Ci0gICAgICB0 byBmaW5kIGEgbmFtZSBpbiB0aGUgcmVmZXJyZWQgdG8gRElFLiAgKi8KLSAKLS0gIGlmIChwYXJ0 X2RpZS0+bmFtZSA9PSBOVUxMICYmIHBhcnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbikKLSsgIGlm IChwYXJ0X2RpZS0+aGFzX3NwZWNpZmljYXRpb24KLSsgICAgICAmJiAocGFydF9kaWUtPm5hbWUg PT0gTlVMTCB8fCAhcGFydF9kaWUtPmlzX2V4dGVybmFsKSkKLSAgICAgewotICAgICAgIHN0cnVj dCBwYXJ0aWFsX2RpZV9pbmZvICpzcGVjX2RpZTsKLSAKLUBAIC04MzEyLDEwICs5MDI2LDEyIEBA IHZhcl9kZWNvZGVfbG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1i b2wgKnN5bSwKLSAgICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVt b3J5IGxvY2F0aW9uIGlzCi0gICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9j aywgZXRjLikuICBUaGVuIGFnYWluLCBpdCBtaWdodAotICAgICAgbm90IGJlIHdvcnRod2hpbGUu ICBJJ20gYXNzdW1pbmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKLS0gICAgIG9y IG1lbW9yeSBudW1iZXJzIHNob3cgbWUgb3RoZXJ3aXNlLiAgKi8KLSsgICAgIG9yIG1lbW9yeSBu dW1iZXJzIHNob3cgbWUgb3RoZXJ3aXNlLgotKyAgICAgCi0rICAgICBTWU1CT0xfQ0xBU1MgbWF5 IGdldCBvdmVycmlkZW4gYnkgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KLSAKLS0g IGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7Ci0gICBTWU1CT0xf Q0xBU1MgKHN5bSkgPSBMT0NfQ09NUFVURUQ7Ci0rICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0 ZWQgKGF0dHIsIHN5bSwgY3UpOwogIH0KICAKLSAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBEV0FS RiBpbmZvcm1hdGlvbiBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCi1AQCAtODMzNywyMSAr OTA1MywyNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorLS8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAg Y29weSkgVFlQRSwgaWYgaXQgaXMgYXNzb2NpYXRlZCB3aXRoCistICAgT0JKRklMRS4gIFJldHVy biBhIG5ldyB0eXBlIGFsbG9jYXRlZCB1c2luZyBtYWxsb2MsIGEgc2F2ZWQgdHlwZSBpZgorLSAg IHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyksIG9yIFRZ UEUgaWYgaXQgaXMKKy0gICBub3QgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLworKy8qIEEg aGVscGVyIGZvciBjb3B5X3R5cGVfcmVjdXJzaXZlLiAgVGhpcyBkb2VzIGFsbCB0aGUgd29yay4g IE9CSkZJTEUgaXMgdXNlZAorKyAgIG9ubHkgZm9yIGFuIGFzc2VydGlvbiBjaGVja2luZy4gICov CiAgCi0gICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNF Q1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKKy1zdHJ1Y3QgdHlwZSAqCistY29weV90eXBlX3JlY3Vy c2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAorLQkJICAgICBzdHJ1Y3QgdHlwZSAqdHlw ZSwKKy0JCSAgICAgaHRhYl90IGNvcGllZF90eXBlcykKKytzdGF0aWMgc3RydWN0IHR5cGUgKgor K2NvcHlfdHlwZV9yZWN1cnNpdmVfMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAorKwkJICAg ICAgIHN0cnVjdCB0eXBlICp0eXBlLAorKwkJICAgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCisg eworICAgc3RydWN0IHR5cGVfcGFpciAqc3RvcmVkLCBwYWlyOworICAgdm9pZCAqKnNsb3Q7Cisg ICBzdHJ1Y3QgdHlwZSAqbmV3X3R5cGU7CiAgCi0tICBpZiAoZGllLT50YWcgIT0gRFdfVEFHX25h bWVzcGFjZSkKLS0gICAgbmFtZSA9IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotLSAg ZWxzZQotLSAgICBuYW1lID0gVFlQRV9OQU1FICh0eXBlKTsKLS0KLSsgIG5hbWUgPSBkd2FyZjJf bmFtZSAoZGllLCBjdSk7Ci0gICBpZiAobmFtZSkKLSAgICAgewotKyAgICAgIGNvbnN0IGNoYXIg KmxpbmthZ2VuYW1lOwotKwotICAgICAgIHN5bSA9IChzdHJ1Y3Qgc3ltYm9sICopIG9ic3RhY2tf YWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0gCQkJCQkgICAgIHNpemVvZiAoc3Ry dWN0IHN5bWJvbCkpOwotICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKLSAgICAg ICBtZW1zZXQgKHN5bSwgMCwgc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sKSk7Ci0rICAgICAgLyogU29t ZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFs aWRpdHkuICAqLwotKyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX21p c3NpbmdfZnVuY3M7CistICBpZiAoISBUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpKQorKyAgaWYg KCEgVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSAmJiAhVFlQRV9EWU5BTUlDICh0eXBlKSkKKyAg ICAgcmV0dXJuIHR5cGU7CiAgCi0gICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFu ZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KLSAgICAgICBTWU1CT0xf TEFOR1VBR0UgKHN5bSkgPSBjdS0+bGFuZ3VhZ2U7Ci0tICAgICAgU1lNQk9MX1NFVF9OQU1FUyAo c3ltLCBuYW1lLCBzdHJsZW4gKG5hbWUpLCAwLCBvYmpmaWxlKTsKLSsgICAgICBsaW5rYWdlbmFt ZSA9IGR3YXJmMl9waHlzbmFtZSAobmFtZSwgZGllLCBjdSk7Ci0rICAgICAgU1lNQk9MX1NFVF9O QU1FUyAoc3ltLCBsaW5rYWdlbmFtZSwgc3RybGVuIChsaW5rYWdlbmFtZSksIDAsIG9iamZpbGUp OwotKyAgICAgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKLSsJewotKwkg IFNZTUJPTF9DUExVU19ERU1BTkdMRURfTkFNRSAoc3ltKSA9IFNZTUJPTF9MSU5LQUdFX05BTUUg KHN5bSk7Ci0rCSAgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSA9IGZvcnRyYW5fbW9kdWxlX2xp bmthZ2VfbmFtZSAoZGllLCBjdSk7Ci0rCX0KKyAgIC8qIFRoaXMgdHlwZSBzaG91bGRuJ3QgYmUg cG9pbnRpbmcgdG8gYW55IHR5cGVzIGluIG90aGVyIG9iamZpbGVzOworQEAgLTMwNDcsOCArMzIw NSwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAg IG5ld190eXBlID0gYWxsb2NfdHlwZV9hcmNoIChnZXRfdHlwZV9hcmNoICh0eXBlKSk7CiAgCi0g ICAgICAgLyogRGVmYXVsdCBhc3N1bXB0aW9ucy4KLSAgICAgICAgICBVc2UgdGhlIHBhc3NlZCB0 eXBlIG9yIGRlY29kZSBpdCBmcm9tIHRoZSBkaWUuICAqLwotQEAgLTg0NTEsNyArOTE3MywyNCBA QCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBz eW0sIGN1KTsKLSAJICAgICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5h bCwgY3UpOwotIAkgICAgICBpZiAoYXR0cjIgJiYgKERXX1VOU05EIChhdHRyMikgIT0gMCkpCi0t CQlhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKLSsJCXsKLSsJCSAg c3RydWN0IHBlbmRpbmcgKipsaXN0X3RvX2FkZDsKLSsKLSsJCSAgLyogV29ya2Fyb3VuZCBnZm9y dHJhbiBQUiBkZWJ1Zy80MDA0MCAtIGl0IHVzZXMKLSsJCSAgICAgRFdfQVRfbG9jYXRpb24gZm9y IHZhcmlhYmxlcyBpbiAtZlBJQyBsaWJyYXJpZXMgd2hpY2ggbWF5Ci0rCQkgICAgIGdldCBvdmVy cmlkZW4gYnkgb3RoZXIgbGlicmFyaWVzL2V4ZWN1dGFibGUgYW5kIGdldAotKwkJICAgICBhIGRp ZmZlcmVudCBhZGRyZXNzLiAgUmVzb2x2ZSBpdCBieSAuZHluc3ltIGluc3RlYWQuICAqLwotKwot KwkJICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4gJiYgZGllLT5wYXJlbnQK LSsJCSAgICAgICYmIGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX21vZHVsZSkKLSsJCSAgICBT WU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfVU5SRVNPTFZFRDsKLSsKLSsJCSAgLyogQSB2YXJpYWJs ZSB3aXRoIERXX0FUX2V4dGVybmFsIGlzIG5ldmVyIHN0YXRpYywgYnV0IGl0Ci0rCQkgICAgIG1h eSBiZSBibG9jay1zY29wZWQuICAqLwotKwkJICBsaXN0X3RvX2FkZCA9IChjdS0+bGlzdF9pbl9z Y29wZSA9PSAmZmlsZV9zeW1ib2xzCi0rCQkJCSA/ICZnbG9iYWxfc3ltYm9scyA6IGN1LT5saXN0 X2luX3Njb3BlKTsKLSsJCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGxpc3RfdG9fYWRkKTsK LSsJCX0KLSAJICAgICAgZWxzZQotIAkJYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0 X2luX3Njb3BlKTsKLSAJICAgIH0KLUBAIC04NTc2LDcgKzkzMTUsOCBAQCBuZXdfc3ltYm9sIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQotIAkgIH0KLSAJICBicmVhazsKLSAJY2FzZSBEV19UQUdfdHlwZWRlZjoKLS0JICBTWU1C T0xfTElOS0FHRV9OQU1FIChzeW0pID0gKGNoYXIgKikgZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBj dSk7Ci0rCSAgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKQotKwkgICAgPSAoY2hhciAqKSBkd2Fy ZjJfZnVsbF9uYW1lIChuYW1lLCBkaWUsIGN1KTsKLSAJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBM T0NfVFlQRURFRjsKLSAJICBTWU1CT0xfRE9NQUlOIChzeW0pID0gVkFSX0RPTUFJTjsKLSAJICBh ZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgY3UtPmxpc3RfaW5fc2NvcGUpOwotQEAgLTg1ODgsNyAr OTMyOCw4IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0s IGN1LT5saXN0X2luX3Njb3BlKTsKLSAJICBicmVhazsKLSAJY2FzZSBEV19UQUdfZW51bWVyYXRv cjoKLS0JICBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pID0gKGNoYXIgKikgZHdhcmYyX2Z1bGxf bmFtZSAoZGllLCBjdSk7Ci0rCSAgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKQotKwkgICAgPSAo Y2hhciAqKSBkd2FyZjJfZnVsbF9uYW1lIChuYW1lLCBkaWUsIGN1KTsKLSAJICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfY29uc3RfdmFsdWUsIGN1KTsKLSAJICBpZiAoYXR0cikKLSAJ ICAgIHsKLUBAIC04NjEyLDYgKzkzNTMsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAJICBTWU1C T0xfQ0xBU1MgKHN5bSkgPSBMT0NfVFlQRURFRjsKLSAJICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5 bSwgJmdsb2JhbF9zeW1ib2xzKTsKLSAJICBicmVhazsKLSsJY2FzZSBEV19UQUdfbW9kdWxlOgot KwkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19TVEFUSUM7Ci0rCSAgU1lNQk9MX0RPTUFJTiAo c3ltKSA9IE1PRFVMRV9ET01BSU47Ci0rCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sICZnbG9i YWxfc3ltYm9scyk7Ci0rCSAgYnJlYWs7Ci0gCWRlZmF1bHQ6Ci0gCSAgLyogTm90IGEgdGFnIHdl IHJlY29nbml6ZS4gIEhvcGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwotIAkgICAgIHRyYXNo IGRhdGEsIGJ1dCBzaW5jZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1AQCAt ODYyNSw4ICs5MzcxLDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICAvKiBGb3IgdGhlIGJl bmVmaXQgb2Ygb2xkIHZlcnNpb25zIG9mIEdDQywgY2hlY2sgZm9yIGFub255bW91cwotIAkgbmFt ZXNwYWNlcyBiYXNlZCBvbiB0aGUgZGVtYW5nbGVkIG5hbWUuICAqLwotICAgICAgIGlmICghcHJv Y2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8KLS0JICAmJiBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3Vh Z2VfY3BsdXMKLS0JICAmJiBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9NSVBTX2xpbmthZ2VfbmFt ZSwgY3UpICE9IE5VTEwpCi0rCSAgJiYgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQot IAljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoc3ltKTsKLSAgICAgfQotICAgcmV0 dXJuIChzeW0pOwotQEAgLTg5MzgsMTIgKzk2ODMsMTggQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICBjYXNlIERXX1RBR19u YW1lc3BhY2U6Ci0gICAgICAgdGhpc190eXBlID0gcmVhZF9uYW1lc3BhY2VfdHlwZSAoZGllLCBj dSk7Ci0gICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRFdfVEFHX21vZHVsZToKLSsgICAgICB0aGlz X3R5cGUgPSByZWFkX21vZHVsZV90eXBlIChkaWUsIGN1KTsKLSsgICAgICBicmVhazsKLSAgICAg ZGVmYXVsdDoKLSAgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oInVuZXhw ZWN0ZWQgdGFnIGluIHJlYWRfdHlwZV9kaWU6ICclcyciKSwKLSAJCSBkd2FyZl90YWdfbmFtZSAo ZGllLT50YWcpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQorICAgLyogV2UgbXVzdCBhZGQgdGhl IG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCistICAgICB3 ZSBlbmNvdW50ZXIgdGhpcyB0eXBlIGFnYWluIGR1cmluZyBhIHJlY3Vyc2l2ZSBjYWxsIGJlbG93 LiAgKi8KKy0gIHN0b3JlZCA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2ssIHNpemVvZiAoc3RydWN0IHR5cGVfcGFpcikpOworKyAgICAgd2UgZW5jb3VudGVyIHRoaXMg dHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gIE1lbW9yeSBjb3VsZAor KyAgICAgYmUgYWxsb2NhdGVkIGZyb20gT0JKRklMRSBpbiB0aGUgY2FzZSB3ZSB3aWxsIGJlIHJl bW92aW5nIE9CSkZJTEUsIHRoaXMKKysgICAgIG9wdGltaXphdGlvbiBpcyBtaXNzZWQgYW5kIHhm cmVlIGlzIGNhbGxlZCBmb3IgaXQgZnJvbSBDT1BJRURfVFlQRVMuICAqLworKyAgc3RvcmVkID0g eG1hbGxvYyAoc2l6ZW9mICgqc3RvcmVkKSk7CisgICBzdG9yZWQtPm9sZCA9IHR5cGU7CisgICBz dG9yZWQtPm5ldyA9IG5ld190eXBlOworICAgKnNsb3QgPSBzdG9yZWQ7CitAQCAtMzA1OSw2ICsz MjE5LDE5IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor ICAgVFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOworICAgVFlQRV9PV05FUiAobmV3 X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKLSsgIGlmICh0aGlzX3R5 cGUpCi0rICAgIGZpbmFsaXplX3R5cGUgKHRoaXNfdHlwZSk7CisrICAvKiBUWVBFX01BSU5fVFlQ RSBtZW1vcnkgY29weSBhYm92ZSByZXdyb3RlIHRoZSBUWVBFX0RJU0NBUkRBQkxFIGZsYWcgc28g d2UKKysgICAgIG5lZWQgdG8gaW5pdGlhbGl6ZSBpdCBhZ2Fpbi4gIEFuZCBldmVuIGlmIFRZUEUg d2FzIGFscmVhZHkgZGlzY2FyZGFibGUKKysgICAgIE5FV19UWVBFIHNvIGZhciBpcyBub3QgcmVn aXN0ZXJlZCBpbiBUWVBFX0RJU0NBUkRBQkxFX1RBQkxFLiAgKi8KKysgIFRZUEVfRElTQ0FSREFC TEUgKG5ld190eXBlKSA9IDA7CisrICBzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAobmV3X3R5cGUp OwogKwotICAgcmV0dXJuIHRoaXNfdHlwZTsKLSB9Ci0gCi1AQCAtOTAxMSw2ICs5NzYyLDEwIEBA IGRldGVybWluZV9wcmVmaXggKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKLSAgICAgICBjYXNlIERXX1RBR19uYW1lc3BhY2U6Ci0gCXBhcmVudF90eXBlID0gcmVh ZF90eXBlX2RpZSAocGFyZW50LCBjdSk7Ci0gCS8qIFdlIGdpdmUgYSBuYW1lIHRvIGV2ZW4gYW5v bnltb3VzIG5hbWVzcGFjZXMuICAqLwotKwotKwkvKiBHKysgNC4xIHByb2R1Y2VkIERXX1RBR19u YW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLwotKwlpZiAoc3RyY21wIChUWVBFX1RB R19OQU1FIChwYXJlbnRfdHlwZSksICI6OiIpID09IDApCi0rCSAgcmV0dXJuICIiOwotIAlyZXR1 cm4gVFlQRV9UQUdfTkFNRSAocGFyZW50X3R5cGUpOwotICAgICAgIGNhc2UgRFdfVEFHX2NsYXNz X3R5cGU6Ci0gICAgICAgY2FzZSBEV19UQUdfaW50ZXJmYWNlX3R5cGU6Ci1AQCAtOTAyNSw3ICs5 NzgwLDcgQEAgZGV0ZXJtaW5lX3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotIAkgICAgIFNvIGl0IGRvZXMgbm90IG5lZWQgYSBwcmVmaXguICAqLwot IAkgIHJldHVybiAiIjsKLSAgICAgICBkZWZhdWx0OgotLQlyZXR1cm4gZGV0ZXJtaW5lX3ByZWZp eCAocGFyZW50LCBjdSk7Ci0rICAgICAgICByZXR1cm4gZGV0ZXJtaW5lX3ByZWZpeCAocGFyZW50 LCBjdSk7Ci0gICAgICAgfQotIH0KLSAKLUBAIC05MDc4LDE3ICs5ODMzLDM3IEBAIHNpYmxpbmdf ZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSkKLSAgIHJldHVybiBkaWUtPnNpYmxpbmc7Ci0gfQot IAotLS8qIEdldCBsaW5rYWdlIG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5vdCBmb3Vu ZC4gICovCi0rLyogUmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgLnN5bXRhYiBuYW1lIGZvciBz eW1ib2xzIGNvbnRhaW5lZCBpbiBGb3J0cmFuCi0rICAgbW9kdWxlcy4gIFJldHVybiBEV0FSRjJf TkFNRSBvdGhlcndpc2UuICAqLwotIAotIHN0YXRpYyBjaGFyICoKLS1kd2FyZjJfbGlua2FnZV9u YW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rZm9ydHJh bl9tb2R1bGVfbGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gewotLSAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSsgIGNoYXIgKm5hbWU7 CisrICAvKiBQcmUtY2xlYXIgdGhlIGZpZWxkcyBwcm9jZXNzZWQgYnkgZGVsZXRlX21haW5fdHlw ZS4gIElmIERXQVJGIGJsb2NrCisrICAgICBldmFsdWF0aW9ucyBiZWxvdyBjYWxsIGVycm9yIHdl IHdvdWxkIGxlYXZlIGFuIHVuZnJlZWFibGUgVFlQRS4gICovCisrICBUWVBFX1RBUkdFVF9UWVBF IChuZXdfdHlwZSkgPSBOVUxMOworKyAgVFlQRV9WUFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSBO VUxMOworKyAgVFlQRV9ORklFTERTIChuZXdfdHlwZSkgPSAwOworKyAgVFlQRV9GSUVMRFMgKG5l d190eXBlKSA9IE5VTEw7CiArCi0rICBnZGJfYXNzZXJ0IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3Vh Z2VfZm9ydHJhbik7CisgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkKKyAgICAgVFlQRV9OQU1FIChu ZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsKKyAgIGlmIChUWVBFX1RBR19O QU1FICh0eXBlKSkKK0BAIC0zMDY3LDEyICszMjQwLDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5 cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7CisgICBUWVBFX0xFTkdUSCAobmV3X3R5 cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOworIAorKyAgaWYgKFRZUEVfQUxMT0NBVEVEIChuZXdf dHlwZSkpCisrICAgIHsKKysgICAgICBnZGJfYXNzZXJ0ICghVFlQRV9OT1RfQUxMT0NBVEVEIChu ZXdfdHlwZSkpOwogKwotKyAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKKysgICAgICBp ZiAoIWR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoVFlQRV9BTExPQ0FURUQgKG5ld190eXBlKSkp CisrICAgICAgICBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSA9IDE7CisrICAgICAgVFlQ RV9BTExPQ0FURUQgKG5ld190eXBlKSA9IE5VTEw7CisrICAgIH0KICsKLSsgIGlmIChuYW1lICYm IGRpZS0+cGFyZW50ICYmIGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX21vZHVsZSkKKysgIGlm IChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkKICsgICAgewotKyAgICAgIGNoYXIgKm1vZHVs ZV9uYW1lID0gZHdhcmYyX25hbWUgKGRpZS0+cGFyZW50LCBjdSk7CisrICAgICAgZ2RiX2Fzc2Vy dCAoIVRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSk7CiArCi0rICAgICAgaWYgKG1vZHVs ZV9uYW1lKQotKwl7Ci0rCSAgY2hhciAqcmV0dmFsOwotIAotLSAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0tICBpZiAoYXR0ciAmJiBEV19T VFJJTkcgKGF0dHIpKQotLSAgICByZXR1cm4gRFdfU1RSSU5HIChhdHRyKTsKLS0gIHJldHVybiBk d2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rCSAgLyogYF9fbW9kdWxlbmFtZV9NT0RfdmFyaWFibGVu YW1lMCcuICAqLwotKwkgIHJldHZhbCA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLAotKwkJCQkgIDIgKyBzdHJsZW4gKG1vZHVsZV9uYW1lKSArIDUgKyBzdHJs ZW4gKG5hbWUpCi0rCQkJCSAgKyAxKTsKLSsJICBzcHJpbnRmIChyZXR2YWwsICJfXyVzX01PRF8l cyIsIG1vZHVsZV9uYW1lLCBuYW1lKTsKKysgICAgICBpZiAoIWR3YXJmX2xvY2V4cHJfYmF0b25f ZXZhbCAoVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpKQorKyAgICAgICAgVFlQRV9OT1RfQVNT T0NJQVRFRCAobmV3X3R5cGUpID0gMTsKKysgICAgICBUWVBFX0FTU09DSUFURUQgKG5ld190eXBl KSA9IE5VTEw7CisrICAgIH0KICsKLSsJICByZXR1cm4gcmV0dmFsOworKyAgaWYgKCFUWVBFX0RB VEFfTE9DQVRJT05fSVNfQUREUiAobmV3X3R5cGUpCisrICAgICAgJiYgVFlQRV9EQVRBX0xPQ0FU SU9OX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkpCisrICAgIHsKKysgICAgICBpZiAoVFlQRV9OT1Rf QUxMT0NBVEVEIChuZXdfdHlwZSkKKysgICAgICAgICAgfHwgVFlQRV9OT1RfQVNTT0NJQVRFRCAo bmV3X3R5cGUpKQorKwlUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSA9 IE5VTEw7CisrICAgICAgZWxzZQorKwl7CisrCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIg KG5ld190eXBlKSA9IDE7CisrCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKG5ld190eXBlKSA9 IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAorKwkJCQkgICAgKFRZUEVfREFUQV9MT0NBVElPTl9E V0FSRl9CTE9DSyAobmV3X3R5cGUpKTsKICsJfQogKyAgICB9CiArCi0rICByZXR1cm4gbmFtZTsK LSB9CisgICAvKiBDb3B5IHRoZSBmaWVsZHMuICAqLworICAgaWYgKFRZUEVfTkZJRUxEUyAodHlw ZSkpCisgICAgIHsKKyAgICAgICBpbnQgaSwgbmZpZWxkczsKICAKLSAvKiBHZXQgbmFtZSBvZiBh IGRpZSwgcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLUBAIC0xMTQzNiw2NCArMTIyMTEs OTQgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQorKyAg ICAgIC8qIFRZUEVfQ09ERV9SQU5HRSB1c2VzIFRZUEVfUkFOR0VfREFUQSBvZiB0aGUgdW5pb24g d2l0aCBUWVBFX0ZJRUxEUy4gICovCisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBl KSAhPSBUWVBFX0NPREVfUkFOR0UpOworKworICAgICAgIG5maWVsZHMgPSBUWVBFX05GSUVMRFMg KHR5cGUpOworKyAgICAgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0gbmZpZWxkczsKKyAgICAg ICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxk KTsKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQorIAl7CitAQCAtMzA4MSw4 ICszMjkwLDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CisgCSAgVFlQRV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJ WkUgKHR5cGUsIGkpOworIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQorIAkgICAg VFlQRV9GSUVMRF9UWVBFIChuZXdfdHlwZSwgaSkKKy0JICAgICAgPSBjb3B5X3R5cGVfcmVjdXJz aXZlIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAorLQkJCQkgICAgIGNvcGll ZF90eXBlcyk7CisrCSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLCBUWVBF X0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAorKwkJCQkgICAgICAgY29waWVkX3R5cGVzKTsKKyAJICBp ZiAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSkKKyAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3 X3R5cGUsIGkpID0gCisgCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkp OworQEAgLTMxMDksMjQgKzMzMTgsMTY2IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAorIAl9CiAgICAgIH0KLSB9CiAgCi0rLyogQ29udmVydCBEV19CTE9D SyBpbnRvIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbi4gIEFUVFIgbXVzdCBiZSBhIERXX0JM T0NLCi0rICAgYXR0cmlidXRlIHR5cGUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xv Y2V4cHJfYmF0b24gKgotK2R3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbiAqYmF0b247Ci0rCi0rICBnZGJfYXNzZXJ0IChhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpKTsKKysgIC8qIEJvdGggRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0sgYW5kIFRZ UEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCB3ZXJlCisrICAgICBwb3NzaWJseSBjb252ZXJ0 ZWQuICAqLworKyAgVFlQRV9EWU5BTUlDIChuZXdfdHlwZSkgPSAwOwogKwotKyAgYmF0b24gPSBv YnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqYmF0 b24pKTsKLSsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotKyAgZ2RiX2Fzc2VydCAoYmF0 b24tPnBlcl9jdSk7CisgICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJvdW5kcyBpbmZv cm1hdGlvbi4gKi8KKy0gIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkK KysgIGlmIChUWVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCisgICAgIHsK KyAgICAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9IHhtYWxsb2MgKHNpemVvZiAoc3Ry dWN0IHJhbmdlX2JvdW5kcykpOworICAgICAgICpUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9 ICpUWVBFX1JBTkdFX0RBVEEgKHR5cGUpOwogKwotKyAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3Qg Y29weWluZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKLSsgICAgIGhlcmUsIG5vdCB0aGUgYWN0 dWFsIGRhdGEuICBXZSdyZSBzdGlsbCBwb2ludGluZyBpbnRvIHRoZQotKyAgICAgaW5mb19idWZm ZXIgZm9yIFNZTSdzIG9iamZpbGU7IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNlCi0rICAgICB0 aGF0IGJ1ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLSsg ICAgIG5lZWQgdG8gY2hhbmdlLiAgKi8KLSsgIGJhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIp LT5zaXplOwotKyAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0rICBnZGJf YXNzZXJ0IChiYXRvbi0+c2l6ZSA9PSAwIHx8IGJhdG9uLT5kYXRhICE9IE5VTEwpOworKyAgICAg IHN3aXRjaCAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kKQorKwl7CisrCWNh c2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9C T1VORF9LSU5EX0RXQVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0 b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVk IHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9B TExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4K KysJICAgICAqLworKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBF X05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVz ICgpKQorKwkgICAgeworKwkgICAgICAvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0 IGhvdyB0byBmaW5kIHRoZSBsYW5ndWFnZT8gICovCisrCSAgICAgIFRZUEVfTE9XX0JPVU5EIChu ZXdfdHlwZSkgPSAwOworKwkgICAgICBUWVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBl KSA9IDE7CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBl KSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAorKwkJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdf dHlwZSktPmxvdy51LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBl KS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIGJyZWFrOworKwlj YXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKKysJICB7CisrCSAgICBDT1JFX0FE RFIgYWRkcjsKICsKLSsgIHJldHVybiBiYXRvbjsKKysJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgICAgaXQg aXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgorKwkgICAg ICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFs aWQgZm9yIFRZUEUuCisrCSAgICAgICAqLworKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVE IChuZXdfdHlwZSkKKysJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBl KSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpCisrCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRv bl9ldmFsCisrCQkgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9j bGlzdC5sb2NsaXN0LAorKwkJICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy51LmR3 YXJmX2xvY2xpc3QudHlwZSwgJmFkZHIpKQorKwkgICAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5 cGUpID0gYWRkcjsKKysJICAgIGVsc2UKKysJICAgICAgeworKwkJLyogV2Ugc2hvdWxkIHNldCAx IGZvciBGb3J0cmFuIGJ1dCBob3cgdG8gZmluZCB0aGUgbGFuZ3VhZ2U/ICAqLworKwkJVFlQRV9M T1dfQk9VTkQgKG5ld190eXBlKSA9IDA7CisrCQlUWVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5l d190eXBlKSA9IDE7CisrCSAgICAgIH0KKysJICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUp LT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7CisrCSAgfQorKwkgIGJyZWFr OworKwl9CisrCisrICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGln aC5raW5kKQorKwl7CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKKysJICBicmVh azsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3Qg ZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkg ICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4K KysJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5v dCB2YWxpZCBmb3IgVFlQRS4KKysJICAgICAqLworKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQg KG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwg ISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAgeworKwkgICAgICBUWVBFX0hJR0hfQk9VTkQg KG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkgICAgICBUWVBF X0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOworKwkgICAgfQorKwkgIGVsc2UK KysJICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9l dmFsCisrCQkJICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC51LmR3YXJm X2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFO R0VfQk9VTkRfS0lORF9DT05TVEFOVDsKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9L SU5EX0RXQVJGX0xPQ0xJU1Q6CisrCSAgeworKwkgICAgQ09SRV9BRERSIGFkZHI7CisrCisrCSAg ICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9i amZpbGUgc28KKysJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkg Q0hFQ0tfVFlQRURFRi4KKysJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1Rf QVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgorKwkgICAgICAgKi8KKysJICAgIGlm ICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCisrCSAgICAgICAgJiYgISBUWVBFX05P VF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgJiYgaGFzX3N0YWNrX2ZyYW1lcyAoKQorKwkgICAgICAg ICYmIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAorKwkJICAgICAgKFRZUEVfUkFOR0VfREFUQSAo bmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0LAorKwkJICAgICAgIFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC50eXBlLAorKwkJICAg ICAgICZhZGRyKSkKKysJICAgICAgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgPSBhZGRyOwor KwkgICAgZWxzZQorKwkgICAgICB7CisrCQlUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZ UEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkJVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5F RCAobmV3X3R5cGUpID0gMTsKKysJICAgICAgfQorKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdf dHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7CisrCSAgfQorKwkg IGJyZWFrOworKwl9CisrCisrICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBl KS0+Ynl0ZV9zdHJpZGUua2luZCkKKysJeworKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RB TlQ6CisrCSAgYnJlYWs7CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzoKKysJ ICAvKiBgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9i amZpbGUgc28KKysJICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBtYWRlIGNvbnN0YW50IGJ5IENI RUNLX1RZUEVERUYuCisrCSAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NP Q0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCisrCSAgICAgKi8KKysJICBpZiAoVFlQRV9O T1RfQUxMT0NBVEVEIChuZXdfdHlwZSkgfHwgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUp CisrCSAgICAgIHx8ICEgaGFzX3N0YWNrX2ZyYW1lcyAoKSkKKysJICAgIFRZUEVfQllURV9TVFJJ REUgKG5ld190eXBlKSA9IDA7CisrCSAgZWxzZQorKwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3 X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJKFRZUEVfUkFOR0VfREFUQSAo bmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RB VEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKwkgICAgPSBSQU5HRV9CT1VORF9LSU5E X0NPTlNUQU5UOworKwkgIGJyZWFrOworKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9D TElTVDoKKysJICB7CisrCSAgICBDT1JFX0FERFIgYWRkciA9IDA7CisrCisrCSAgICAvKiBgc3Ry dWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28K KysJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQ RURFRi4KKysJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRF RCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgorKwkgICAgICAgKi8KKysJICAgIGlmICghIFRZUEVf Tk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCisrCQkmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5l d190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAgICBkd2FyZl9sb2NsaXN0X2Jh dG9uX2V2YWwKKysJICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJp ZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCisrCQlUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBl KS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUsCisrCQkmYWRkcik7CisrCSAgICBU WVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBhZGRyOworKwkgICAgVFlQRV9SQU5HRV9EQVRB IChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQKKysJICAgICAgPSBSQU5HRV9CT1VORF9LSU5E X0NPTlNUQU5UOworKwkgIH0KKysJICBicmVhazsKKysJfQorKworKyAgICAgIC8qIENvbnZlcnQg VFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIGludG8gYSByZWd1bGFyIGJvdW5kLiAgKi8K KysgICAgICBpZiAoVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChuZXdfdHlwZSkpCisr CXsKKysJICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdf dHlwZSkKKysJCQkJICAgICAgICsgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkg IFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAobmV3X3R5cGUpID0gMDsKKysJfQorICAg ICB9CisgCisgICAvKiBDb3B5IHBvaW50ZXJzIHRvIG90aGVyIHR5cGVzLiAgKi8KKyAgIGlmIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSkKKyAgICAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUp ID0gCistICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgCistCQkJICAgVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksCistCQkJICAgY29waWVkX3R5cGVzKTsKKysgICAgICBjb3B5X3R5 cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIAorKwkJCSAgICAgVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSksCisrCQkJICAgICBjb3BpZWRfdHlwZXMpOworICAgaWYgKFRZUEVfVlBUUl9CQVNFVFlQRSAo dHlwZSkpCisgICAgIFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUpID0gCistICAgICAgY29w eV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwKKy0JCQkgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5 cGUpLAorLQkJCSAgIGNvcGllZF90eXBlcyk7CisrICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZV8x IChvYmpmaWxlLAorKwkJCSAgICAgVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSwKKysJCQkgICAg IGNvcGllZF90eXBlcyk7CisgICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMu CisgCisgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1z cGVjaWZpYyBiaXRzIGxpa2UKK0BAIC0zMTQzLDYgKzM0OTQsMTcgQEAgY29weV90eXBlX3JlY3Vy c2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgICByZXR1cm4gbmV3X3R5cGU7CisgfQor IAorKy8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRS4gIFJldHVybiBhIG5ldyB0 eXBlIGFsbG9jYXRlZCB1c2luZworKyAgIG1hbGxvYywgYSBzYXZlZCB0eXBlIGlmIHdlIGhhdmUg YWxyZWFkeSB2aXNpdGVkIFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyksCisrICAgb3IgVFlQRSBp ZiBpdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLworKworK3N0cnVjdCB0eXBl ICoKKytjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCSAgICAgaHRh Yl90IGNvcGllZF90eXBlcykKKyt7CisrICByZXR1cm4gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChU WVBFX09CSkZJTEUgKHR5cGUpLCB0eXBlLCBjb3BpZWRfdHlwZXMpOwogK30KICsKLStzdGF0aWMg c3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICoKLStkd2FyZjJfYXR0cl90b19sb2NsaXN0X2Jh dG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAvKiBN YWtlIGEgY29weSBvZiB0aGUgZ2l2ZW4gVFlQRSwgZXhjZXB0IHRoYXQgdGhlIHBvaW50ZXIgJiBy ZWZlcmVuY2UKKyAgICB0eXBlcyBhcmUgbm90IHByZXNlcnZlZC4KKyAgICAKK0BAIC0zMTY1LDYg KzM1MjcsMTk5IEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCisgICByZXR1 cm4gbmV3X3R5cGU7CisgfQorIAorKy8qIENhbGxiYWNrIHR5cGUgZm9yIG1haW5fdHlwZV9jcmF3 bC4gICovCisrdHlwZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jhd2xfaXRlcikgKHN0cnVjdCB0eXBl ICp0eXBlLCB2b2lkICpkYXRhKTsKKysKKysvKiBJdGVyYXRlIGFsbCBtYWluX3R5cGUgc3RydWN0 dXJlcyByZWFjaGFibGUgdGhyb3VnaCBhbnkgYHN0cnVjdCB0eXBlIConIGZyb20KKysgICBUWVBF LiAgSVRFUiB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciBvbmUgdHlwZSBvZiBlYWNoIG1haW5fdHlw ZSwgdXNlCisrICAgVFlQRV9DSEFJTiB0cmF2ZXJzYWwgdG8gZmluZCBhbGwgdGhlIHR5cGUgaW5z dGFuY2VzLiAgSVRFUiBpcyBiZWluZyBjYWxsZWQKKysgICBmb3IgZWFjaCBtYWluX3R5cGUgZm91 bmQuICBJVEVSIHJldHVybnMgbm9uLXplcm8gaWYgbWFpbl90eXBlX2NyYXdsIHNob3VsZAorKyAg IGRlcHRoLWZpcnN0IGVudGVyIHRoZSBzcGVjaWZpYyB0eXBlLiAgSVRFUiBtdXN0IHByb3ZpZGUg c29tZSBkZXRlY3Rpb24gZm9yCisrICAgcmVlbnRlcmluZyB0aGUgc2FtZSBtYWluX3R5cGUgYXMg dGhpcyBmdW5jdGlvbiB3b3VsZCBvdGhlcndpc2UgZW5kbGVzc2x5CisrICAgbG9vcC4gICovCisr Cisrc3RhdGljIHZvaWQKKyttYWluX3R5cGVfY3Jhd2wgKHN0cnVjdCB0eXBlICp0eXBlLCBtYWlu X3R5cGVfY3Jhd2xfaXRlciBpdGVyLCB2b2lkICpkYXRhKQogK3sKLSsgIHN0cnVjdCBkd2FyZjJf bG9jbGlzdF9iYXRvbiAqYmF0b247CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyOworKyAgaW50 IGk7CiArCi0rICBpZiAoIShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCi0rCS8q ICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUg b3V0c2lkZQotKwkgICB0aGUgc2VjdGlvbi4gIElmIHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNv bXBsYWludCBpbiB0aGUKLSsJICAgb3RoZXIgYnJhbmNoLiAgKi8KLSsJJiYgRFdfVU5TTkQgKGF0 dHIpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSkpCi0rICAgIHJldHVybiBOVUxMOwor KyAgaWYgKCF0eXBlKQorKyAgICByZXR1cm47CiArCi0rICBiYXRvbiA9IG9ic3RhY2tfYWxsb2Mg KCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCSBzaXplb2YgKHN0cnVjdCBkd2Fy ZjJfbG9jbGlzdF9iYXRvbikpOwotKyAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rICBn ZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKKysgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAo dHlwZSkgPT0gTlVMTCk7CiArCi0rICAvKiBXZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBsb2Nh dGlvbiBsaXN0IGlzLCBidXQgbWFrZSBzdXJlIHdlCi0rICAgICBkb24ndCBydW4gb2ZmIHRoZSBl ZGdlIG9mIHRoZSBzZWN0aW9uLiAgKi8KLSsgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9vYmpm aWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKLSsgIGJhdG9uLT5kYXRhID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIpOwotKyAgYmF0b24tPmJh c2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7Ci0rICBpZiAoY3UtPmJhc2Vfa25vd24gPT0g MCkKLSsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkgICAgICAgXygiTG9j YXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIp KTsKKysgIC8qIGBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUnIGhhbmRsaW5nIGlzIHVuc3VwcG9y dGVkIGJ5IHRoaXMgZnVuY3Rpb24uICAqLworKyAgZ2RiX2Fzc2VydCAoKFRZUEVfQ09ERSAodHlw ZSkgIT0gVFlQRV9DT0RFX1NUUlVDVAorKwkgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBU WVBFX0NPREVfVU5JT04pCisrCSAgICAgIHx8ICFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOwog KwotKyAgcmV0dXJuIGJhdG9uOworKyAgaWYgKCEoKml0ZXIpICh0eXBlLCBkYXRhKSkKKysgICAg cmV0dXJuOworKworKyAgLyogSXRlcmF0ZSBhbGwgdGhlIHR5cGUgaW5zdGFuY2VzIG9mIHRoaXMg bWFpbl90eXBlLiAgKi8KKysgIHR5cGVfaXRlciA9IHR5cGU7CisrICBkbworKyAgICB7CisrICAg ICAgZ2RiX2Fzc2VydCAoVFlQRV9NQUlOX1RZUEUgKHR5cGVfaXRlcikgPT0gVFlQRV9NQUlOX1RZ UEUgKHR5cGUpKTsKKysKKysgICAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfUE9JTlRFUl9UWVBF ICh0eXBlKSwgaXRlciwgZGF0YSk7CisrICAgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1JFRkVS RU5DRV9UWVBFICh0eXBlKSwgaXRlciwgZGF0YSk7CisrCisrICAgICAgdHlwZV9pdGVyID0gVFlQ RV9DSEFJTiAodHlwZV9pdGVyKTsKKysgICAgfQorKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBl KTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpKyspCisrICAg IG1haW5fdHlwZV9jcmF3bCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgaXRlciwgZGF0YSk7 CisrCisrICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBpdGVyLCBk YXRhKTsKKysgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSwgaXRl ciwgZGF0YSk7CiArfQogKwotKy8qIFNZTSBtYXkgZ2V0IGl0cyBTWU1CT0xfQ0xBU1Mgb3ZlcnJp ZGVuIG9uIGludmFsaWQgQVRUUiBjb250ZW50LiAgKi8KKysvKiBBIGhlbHBlciBmb3IgZGVsZXRl X3R5cGUgd2hpY2ggZGVsZXRlcyBhIG1haW5fdHlwZSBhbmQgdGhlIHRoaW5ncyB0byB3aGljaAor KyAgIGl0IHJlZmVycy4gIFRZUEUgaXMgYSB0eXBlIHdob3NlIG1haW5fdHlwZSB3ZSB3aXNoIHRv IGRlc3Ryb3kuICAqLwogKwotIHN0YXRpYyB2b2lkCi0gZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1 dGVkIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0gCQkJICAg ICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25f b2Zmc2V0IChhdHRyKQotLSAgICAgIC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFs bCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotLQkgdGhlIHNlY3Rpb24uICBJZiBzbywg ZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCi0tCSBvdGhlciBicmFuY2guICAq LwotLSAgICAgICYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNp emUpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwot LQotLSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29i c3RhY2ssCi0tCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbikpOwot LSAgICAgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotLSAgICAgIGdkYl9hc3NlcnQgKGJh dG9uLT5wZXJfY3UpOwotLQotLSAgICAgIC8qIFdlIGRvbid0IGtub3cgaG93IGxvbmcgdGhlIGxv Y2F0aW9uIGxpc3QgaXMsIGJ1dCBtYWtlIHN1cmUgd2UKLS0JIGRvbid0IHJ1biBvZmYgdGhlIGVk Z2Ugb2YgdGhlIHNlY3Rpb24uICAqLwotLSAgICAgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9v YmpmaWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKLS0gICAgICBiYXRvbi0+ZGF0YSA9 IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKLS0gICAg ICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKLS0gICAgICBpZiAoY3Ut PmJhc2Vfa25vd24gPT0gMCkKLS0JY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotLQkJ ICAgXygiTG9jYXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBh ZGRyZXNzLiIpKTsKLSsgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlzdF9iYXRv bjsKLSAKLSsgIGxvY2xpc3RfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uIChh dHRyLCBjdSk7Ci0rICBpZiAobG9jbGlzdF9iYXRvbikKKytzdGF0aWMgdm9pZAorK2RlbGV0ZV9t YWluX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK3sKKysgIGludCBpOworKworKyAgZ2RiX2Fz c2VydCAoVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpOworKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpG SUxFICh0eXBlKSA9PSBOVUxMKTsKKysKKysgIHhmcmVlIChUWVBFX05BTUUgKHR5cGUpKTsKKysg IHhmcmVlIChUWVBFX1RBR19OQU1FICh0eXBlKSk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgVFlQ RV9ORklFTERTICh0eXBlKTsgKytpKQogKyAgICB7Ci0gICAgICAgU1lNQk9MX0NPTVBVVEVEX09Q UyAoc3ltKSA9ICZkd2FyZjJfbG9jbGlzdF9mdW5jczsKLS0gICAgICBTWU1CT0xfTE9DQVRJT05f QkFUT04gKHN5bSkgPSBiYXRvbjsKLSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkg PSBsb2NsaXN0X2JhdG9uOworKyAgICAgIHhmcmVlIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkp KTsKKysKKysgICAgICBpZiAoVFlQRV9GSUVMRF9MT0NfS0lORCAodHlwZSwgaSkgPT0gRklFTERf TE9DX0tJTkRfUEhZU05BTUUpCisrCXhmcmVlIChUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSAo dHlwZSwgaSkpOwogKyAgICB9Ci0rICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp KQotKyAgICB7Ci0rICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9j ZXhwcl9mdW5jczsKLSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJf YXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAg ewotLSAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247Ci0rICAgICAgZHdh cmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2NvbXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9u IiwKLSsJCQkJCSAgICAgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7Ci0gCi0tICAgICAgYmF0 b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLS0JCQkg ICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7Ci0tICAgICAgYmF0b24t PnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0tICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7 Ci0rICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9D T01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwotIAotLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpKQotLQl7Ci0tCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUg YmxvY2sncyBkYXRhIHBvaW50ZXIKLS0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAg V2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKLS0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lN J3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKLS0JICAgICB0aGF0IGJ1ZmZl ciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLS0JICAgICBuZWVk IHRvIGNoYW5nZS4gICovCi0tCSAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7 Ci0tCSAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0tCX0KLS0gICAgICBl bHNlCi0tCXsKLS0JICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9j YXRpb24gZGVzY3JpcHRpb24iLAotLQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsK LS0JICBiYXRvbi0+c2l6ZSA9IDA7Ci0tCSAgYmF0b24tPmRhdGEgPSBOVUxMOwotLQl9Ci0tICAg ICAgCi0tICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9m dW5jczsKLS0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsKLSsgICAg ICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOwotKyAg ICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IE5VTEw7CisrICB4ZnJlZSAoVFlQRV9G SUVMRFMgKHR5cGUpKTsKICsKLSsgICAgICAvKiBGb3IgZnVuY3Rpb25zIGEgbWlzc2luZyBEV19B VF9mcmFtZV9iYXNlIGRvZXMgbm90IG9wdGltaXplIG91dCB0aGUKLSsJIHdob2xlIGZ1bmN0aW9u IGRlZmluaXRpb24sIG9ubHkgaXRzIGZyYW1lIGJhc2UgcmVzb2x2aW5nLiAgKi8KLSsgICAgICBp ZiAoYXR0ci0+bmFtZSA9PSBEV19BVF9sb2NhdGlvbikKLSsJU1lNQk9MX0NMQVNTIChzeW0pID0g TE9DX09QVElNSVpFRF9PVVQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTE3ODEsNiArMTI1ODYsMzEg QEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAq aXRlbV9yaHMpCi0gICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0ID09IG9mc19yaHMtPm9mZnNldDsK LSB9Ci0gCi0rLyogRmlsbCBpbiBnZW5lcmljIGF0dHJpYnV0ZXMgYXBwbGljYWJsZSBmb3IgdHlw ZSBESUVzLiAgKi8KKysgIGdkYl9hc3NlcnQgKCFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOwor KworKyAgeGZyZWUgKFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7CisrfQorKworKy8qIERlbGV0ZSBh bGwgdGhlIGluc3RhbmNlcyBvbiBUWVBFX0NIQUlOIG9mIFRZUEUsIGluY2x1ZGluZyB0aGVpciBy ZWZlcmVuY2VkCisrICAgbWFpbl90eXBlLiAgVFlQRSBtdXN0IGJlIGEgcmVjbGFpbWFibGUgdHlw ZSAtIG5laXRoZXIgcGVybWFuZW50IG5vciBvYmpmaWxlCisrICAgYXNzb2NpYXRlZC4gICovCiAr CiArc3RhdGljIHZvaWQKLStmZXRjaF9kaWVfdHlwZV9hdHRycyAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLAotKwkJICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisr ZGVsZXRlX3R5cGVfY2hhaW4gKHN0cnVjdCB0eXBlICp0eXBlKQogK3sKLSsgIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHI7CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyLCAqdHlwZV9pdGVyX3RvX2Zy ZWU7CiArCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwg Y3UpOwotKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgIFRZUEVfREFUQV9M T0NBVElPTl9EV0FSRl9CTE9DSyAodHlwZSkgPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9u IChhdHRyLAotKwkJCQkJCQkJCSAgY3UpOwotKyAgZ2RiX2Fzc2VydCAoIVRZUEVfREFUQV9MT0NB VElPTl9JU19BRERSICh0eXBlKSk7CisrICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0 eXBlKSk7CisrICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwogKwot KyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOwotKyAgaWYg KGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9 IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQg KCFUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKTsKKysgIGRlbGV0ZV9tYWluX3R5cGUgKHR5cGUp OwogKwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Fzc29jaWF0ZWQsIGN1KTsK LSsgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICBUWVBFX0FTU09DSUFURUQg KHR5cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKyAgZ2Ri X2Fzc2VydCAoIVRZUEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKTsKKysgIHR5cGVfaXRlciA9IHR5 cGU7CisrICBkbworKyAgICB7CisrICAgICAgdHlwZV9pdGVyX3RvX2ZyZWUgPSB0eXBlX2l0ZXI7 CisrICAgICAgdHlwZV9pdGVyID0gVFlQRV9DSEFJTiAodHlwZV9pdGVyKTsKKysgICAgICB4ZnJl ZSAodHlwZV9pdGVyX3RvX2ZyZWUpOworKyAgICB9CisrICB3aGlsZSAodHlwZV9pdGVyICE9IHR5 cGUpOwogK30KICsKLSAvKiBTZXQgdGhlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIERJRSB0byBUWVBF LiAgU2F2ZSBpdCBpbiBDVSdzIGhhc2gKLSAgICB0YWJsZSBpZiBuZWNlc3NhcnkuICBGb3IgY29u dmVuaWVuY2UsIHJldHVybiBUWVBFLiAgKi8KLSAKLUBAIC0xMTc4OSw2ICsxMjYxOSw4IEBAIHNl dF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAq KnNsb3QsIG9mczsKLSAKLSsgIGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHR5cGUsIGN1KTsK KysvKiBIYXNoIGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8KICsKLSAg IC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNpZmljIGRhdGEg aXMgYWx3YXlzCi0gICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0KS4gIFRoZXJl IGFyZSBhIGZldyB0eXBlcyB3aGVyZQotICAgICAgd2Ugc2hvdWxkIG5vdCBiZSBkb2luZyBzbywg YmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVhIGlzCi1AQCAtMTE5NDQsMjMgKzEyNzc2LDEz IEBAIHNob3dfZHdhcmYyX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotICAgY21kX3No b3dfbGlzdCAoc2hvd19kd2FyZjJfY21kbGlzdCwgZnJvbV90dHksICIiKTsKLSB9Ci0gCi0tLyog SWYgc2VjdGlvbiBkZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1hcHBlZCwgbXVubWFwIGl0IG5vdy4g ICovCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZGVzdHJveSBhIGRlYnVnIHNlY3Rpb24uICAq LwotIAotIHN0YXRpYyB2b2lkCi0tbXVubWFwX3NlY3Rpb25fYnVmZmVyIChzdHJ1Y3QgZHdhcmYy X3NlY3Rpb25faW5mbyAqaW5mbykKLStkZXN0cm95X3NlY3Rpb24gKHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICppbmZvKQotIHsKLS0gIGlmIChpbmZvLT53YXNfbW1hcHBlZCkKLS0gICAgewot LSNpZmRlZiBIQVZFX01NQVAKLS0gICAgICBpbnRwdHJfdCBiZWdpbiA9IChpbnRwdHJfdCkgaW5m by0+YnVmZmVyOwotLSAgICAgIGludHB0cl90IG1hcF9iZWdpbiA9IGJlZ2luICYgfihwYWdlc2l6 ZSAtIDEpOwotLSAgICAgIHNpemVfdCBtYXBfbGVuZ3RoID0gaW5mby0+c2l6ZSArIGJlZ2luIC0g bWFwX2JlZ2luOwotLSAgICAgIGdkYl9hc3NlcnQgKG11bm1hcCAoKHZvaWQgKikgbWFwX2JlZ2lu LCBtYXBfbGVuZ3RoKSA9PSAwKTsKLS0jZWxzZQotLSAgICAgIC8qIFdpdGhvdXQgSEFWRV9NTUFQ LCB3ZSBzaG91bGQgbmV2ZXIgYmUgaGVyZSB0byBiZWdpbiB3aXRoLiAgKi8KLS0gICAgICBnZGJf YXNzZXJ0ICgwKTsKLS0jZW5kaWYKLS0gICAgfQotKyAgaWYgKGluZm8tPmRlc3RydWN0b3IpCi0r ICAgICgqaW5mby0+ZGVzdHJ1Y3RvcikgKGluZm8pOwotIH0KLSAKLSAvKiBtdW5tYXAgZGVidWcg c2VjdGlvbnMgZm9yIE9CSkZJTEUsIGlmIG5lY2Vzc2FyeS4gICovCi1AQCAtMTE5NjksMTUgKzEy NzkxLDE1IEBAIHN0YXRpYyB2b2lkCi0gZHdhcmYyX3Blcl9vYmpmaWxlX2ZyZWUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCB2b2lkICpkKQotIHsKLSAgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZp bGUgKmRhdGEgPSBkOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+aW5mbyk7Ci0t ICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5hYmJyZXYpOwotLSAgbXVubWFwX3NlY3Rp b25fYnVmZmVyICgmZGF0YS0+bGluZSk7Ci0tICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRh LT5zdHIpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bWFjaW5mbyk7Ci0tICBt dW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5yYW5nZXMpOwotLSAgbXVubWFwX3NlY3Rpb25f YnVmZmVyICgmZGF0YS0+bG9jKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZy YW1lKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKLSsgIGRl c3Ryb3lfc2VjdGlvbiAoJmRhdGEtPmluZm8pOwotKyAgZGVzdHJveV9zZWN0aW9uICgmZGF0YS0+ YWJicmV2KTsKLSsgIGRlc3Ryb3lfc2VjdGlvbiAoJmRhdGEtPmxpbmUpOwotKyAgZGVzdHJveV9z ZWN0aW9uICgmZGF0YS0+c3RyKTsKLSsgIGRlc3Ryb3lfc2VjdGlvbiAoJmRhdGEtPm1hY2luZm8p OwotKyAgZGVzdHJveV9zZWN0aW9uICgmZGF0YS0+cmFuZ2VzKTsKLSsgIGRlc3Ryb3lfc2VjdGlv biAoJmRhdGEtPmxvYyk7Ci0rICBkZXN0cm95X3NlY3Rpb24gKCZkYXRhLT5mcmFtZSk7Ci0rICBk ZXN0cm95X3NlY3Rpb24gKCZkYXRhLT5laF9mcmFtZSk7Ci0gfQotIAotIHZvaWQgX2luaXRpYWxp emVfZHdhcmYyX3JlYWQgKHZvaWQpOwotZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9nZGIv ZWxmcmVhZC5jCi1pbmRleCA5YTJhMWUzLi43MmIxZDEzIDEwMDY0NAotLS0tIGEvZ2RiL2VsZnJl YWQuYwotKysrIGIvZ2RiL2VsZnJlYWQuYwotQEAgLTE3OSw3ICsxNzksOCBAQCByZWNvcmRfbWlu aW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lX2xlbiwgaW50IGNvcHlfbmFt ZSwKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9i amZpbGUpOwotIAotLSAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3Rf ZmlsZV90ZXh0KQotKyAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3Rf ZmlsZV90ZXh0Ci0rICAgICAgfHwgbXNfdHlwZSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0gICAg IGFkZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3RleHRfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcmVzcyk7 Ci0gCi0gICByZXR1cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2xfZnVsbCAobmFtZSwgbmFt ZV9sZW4sIGNvcHlfbmFtZSwgYWRkcmVzcywKLUBAIC0zODgsNyArMzg5LDEwIEBAIGVsZl9zeW10 YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAotIAkgICAgewotIAkg ICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dFQUspKQotIAkJewotLQkJ ICBtc190eXBlID0gbXN0X3RleHQ7Ci0rCQkgIGlmIChzeW0tPmZsYWdzICYgQlNGX0dOVV9JTkRJ UkVDVF9GVU5DVElPTikKLSsJCSAgICBtc190eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOwotKwkJ ICBlbHNlCi0rCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OwotIAkJfQotIAkgICAgICBlbHNlIGlm ICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQotIAkJICAgICAg IHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKLUBAIC04NzksMjAgKzg4MywxMyBAQCBlbGZf c3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3Mp Ci0gCQkJCXN0cl9zZWN0LT5maWxlcG9zLAotIAkJCQliZmRfc2VjdGlvbl9zaXplIChhYmZkLCBz dHJfc2VjdCkpOwotICAgICB9Ci0tICBpZiAoZHdhcmYyX2hhc19pbmZvIChvYmpmaWxlKSkKLS0g ICAgewotLSAgICAgIC8qIERXQVJGIDIgc2VjdGlvbnMgKi8KLS0gICAgICBkd2FyZjJfYnVpbGRf cHN5bXRhYnMgKG9iamZpbGUpOwotLSAgICB9Ci0tCi0tICAvKiBGSVhNRToga2V0dGVuaXMvMjAw MzA1MDQ6IFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUgaW50ZWdyYXRlZCB3aXRoCi0tICAgICBkd2Fy ZjJyZWFkLmMgaW4gYSBiZXR0ZXIgd2F5LiAgKi8KLS0gIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZv IChvYmpmaWxlKTsKLSAKLSsgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQotKyAgICBk d2FyZjJfY3JlYXRlX3F1aWNrX2FkZHJtYXAgKG9iamZpbGUpOwotICAgLyogSWYgdGhlIGZpbGUg aGFzIGl0cyBvd24gc3ltYm9sIHRhYmxlcyBpdCBoYXMgbm8gc2VwYXJhdGUgZGVidWcgaW5mby4K LSAgICAgIGAuZHluc3ltJy9gLnN5bXRhYicgZ28gdG8gTVNZTUJPTFMsIGAuZGVidWdfaW5mbycg Z29lcyB0byBTWU1UQUJTL1BTWU1UQUJTLgotICAgICAgYC5nbnVfZGVidWdsaW5rJyBtYXkgbm8g bG9uZ2VyIGJlIHByZXNlbnQgd2l0aCBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCi0tICBpZiAo IW9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkpCi0rICBlbHNlCi0gICAgIHsK LSAgICAgICBjaGFyICpkZWJ1Z2ZpbGU7Ci0gCi1AQCAtOTEwLDYgKzkwNywyMCBAQCBlbGZfc3lt ZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0g ICAgIH0KLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStyZWFkX3BzeW1zIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKKytzdGF0aWMgaGFzaHZhbF90CisrdHlwZV9kaXNjYXJkYWJsZV9oYXNoIChjb25z dCB2b2lkICpwKQogK3sKLSsgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQotKyAgICB7 Ci0rICAgICAgLyogRFdBUkYgMiBzZWN0aW9ucyAqLwotKyAgICAgIGR3YXJmMl9idWlsZF9wc3lt dGFicyAob2JqZmlsZSk7Ci0rICAgIH0KKysgIGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlID0gcDsK ICsKLSsgIC8qIEZJWE1FOiBrZXR0ZW5pcy8yMDAzMDUwNDogVGhpcyBzdGlsbCBuZWVkcyB0byBi ZSBpbnRlZ3JhdGVkIHdpdGgKLSsgICAgIGR3YXJmMnJlYWQuYyBpbiBhIGJldHRlciB3YXkuICAq LwotKyAgZHdhcmYyX2J1aWxkX2ZyYW1lX2luZm8gKG9iamZpbGUpOworKyAgcmV0dXJuIGh0YWJf aGFzaF9wb2ludGVyIChUWVBFX01BSU5fVFlQRSAodHlwZSkpOwogK30KICsKLSAvKiBUaGlzIGNs ZWFucyB1cCB0aGUgb2JqZmlsZSdzIGRlcHJlY2F0ZWRfc3ltX3N0YWJfaW5mbyBwb2ludGVyLCBh bmQKLSAgICB0aGUgY2hhaW4gb2Ygc3RhYl9zZWN0aW9uX2luZm8ncywgdGhhdCBtaWdodCBiZSBk YW5nbGluZyBmcm9tCi0gICAgaXQuICAqLwotQEAgLTEwNTIsNiArMTA2Myw3IEBAIHN0YXRpYyBz dHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9Ci0gICBlbGZfbmV3X2luaXQsCQkJLyogc3ltX25l d19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCi0gICBlbGZfc3lt ZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3lt X3JlYWQoKSAqLwotICAgZWxmX3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3lt Ym9sIGZpbGUgaW50byBzeW10YWIgKi8KLSsgIHJlYWRfcHN5bXMsCQkJLyogc3ltX3JlYWRfcHN5 bWJvbHMgKi8KLSAgIGVsZl9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVk IHdpdGggZmlsZSwgY2xlYW51cCAqLwotICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5 bV9vZmZzZXRzOiAgVHJhbnNsYXRlIGV4dC4gdG8gaW50LiByZWxvY2F0aW9uICovCi0gICBlbGZf c3ltZmlsZV9zZWdtZW50cywJCS8qIHN5bV9zZWdtZW50czogR2V0IHNlZ21lbnQgaW5mb3JtYXRp b24gZnJvbQotZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCBlMmNl ZWE3Li4xYmNiNGE3IDEwMDY0NAotLS0tIGEvZ2RiL2V2YWwuYwotKysrIGIvZ2RiL2V2YWwuYwot QEAgLTQzLDYgKzQzLDcgQEAKLSAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKLSAjaW5jbHVkZSAi b2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotKyNpbmNsdWRlICJkd2Fy ZjJsb2MuaCIKLSAKLSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotIAotQEAgLTY5Niw2ICs2OTcs NyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK LSAgIGxvbmcgbWVtX29mZnNldDsKLSAgIHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotICAgaW50 IHNhdmVfcG9zMTsKLSsgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0gICBzdHJ1Y3Qgc3lt Ym9sICpmdW5jdGlvbiA9IE5VTEw7Ci0gICBjaGFyICpmdW5jdGlvbl9uYW1lID0gTlVMTDsKLSAK LUBAIC03MzEsNiArNzMzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlw ZSAqZXhwZWN0X3R5cGUsCi0gICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fZGVjZmxvYXQgKGV4cC0+ ZWx0c1twYyArIDFdLnR5cGUsCi0gCQkJCSAgZXhwLT5lbHRzW3BjICsgMl0uZGVjZmxvYXRjb25z dCk7Ci0gCi0rICAgIGNhc2UgT1BfQURMX0ZVTkM6Ci0gICAgIGNhc2UgT1BfVkFSX1ZBTFVFOgot ICAgICAgICgqcG9zKSArPSAzOwotICAgICAgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQotQEAg LTEzMzQsNyArMTMzNyw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmV4cGVjdF90eXBlLAotICAgICAgIGFyZ3ZlYyA9IChzdHJ1Y3QgdmFsdWUgKiopIGFsbG9jYSAo c2l6ZW9mIChzdHJ1Y3QgdmFsdWUgKikgKiAobmFyZ3MgKyAzKSk7Ci0gICAgICAgaWYgKG9wID09 IFNUUlVDVE9QX01FTUJFUiB8fCBvcCA9PSBTVFJVQ1RPUF9NUFRSKQotIAl7Ci0tCSAgbmFyZ3Mr KzsKLSAJICAvKiBGaXJzdCwgZXZhbHVhdGUgdGhlIHN0cnVjdHVyZSBpbnRvIGFyZzIgKi8KLSAJ ICBwYzIgPSAoKnBvcykrKzsKLSAKLUBAIC0xMzU4LDIxICsxMzYwLDQwIEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAotIAkgIGFyZzEgPSBl dmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0gCi0tCSAgaWYg KFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpKQotLQkgICAgICAh PSBUWVBFX0NPREVfTUVUSE9EUFRSKQotLQkgICAgZXJyb3IgKF8oIk5vbi1wb2ludGVyLXRvLW1l bWJlciB2YWx1ZSB1c2VkIGluIHBvaW50ZXItdG8tbWVtYmVyICIKLS0JCSAgICAgImNvbnN0cnVj dCIpKTsKLS0KLS0JICBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKQotKwkg IHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0rCSAgc3dpdGNoIChU WVBFX0NPREUgKHR5cGUpKQotIAkgICAgewotLQkgICAgICBzdHJ1Y3QgdHlwZSAqbWV0aG9kX3R5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0tCSAgICAgIGFyZzEgPSB2 YWx1ZV96ZXJvIChtZXRob2RfdHlwZSwgbm90X2x2YWwpOwotKwkgICAgY2FzZSBUWVBFX0NPREVf TUVUSE9EUFRSOgotKwkgICAgICBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RT KQotKwkJYXJnMSA9IHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBub3RfbHZh bCk7Ci0rCSAgICAgIGVsc2UKLSsJCWFyZzEgPSBjcGx1c19tZXRob2RfcHRyX3RvX3ZhbHVlICgm YXJnMiwgYXJnMSk7CisrLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHR5cGVfZGlzY2FyZGFibGVf dGFibGUuICAqLwogKwotKwkgICAgICAvKiBOb3csIHNheSB3aGljaCBhcmd1bWVudCB0byBzdGFy dCBldmFsdWF0aW5nIGZyb20gKi8KLSsJICAgICAgbmFyZ3MrKzsKLSsJICAgICAgdGVtID0gMjsK LSsJICAgICAgYXJndmVjWzFdID0gYXJnMjsKLSsJICAgICAgYnJlYWs7Cisrc3RhdGljIGludAor K3R5cGVfZGlzY2FyZGFibGVfZXF1YWwgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisr eworKyAgY29uc3Qgc3RydWN0IHR5cGUgKmxlZnQgPSBhOworKyAgY29uc3Qgc3RydWN0IHR5cGUg KnJpZ2h0ID0gYjsKICsKLSsJICAgIGNhc2UgVFlQRV9DT0RFX01FTUJFUlBUUjoKLSsJICAgICAg LyogTm93LCBjb252ZXJ0IHRoZXNlIHZhbHVlcyB0byBhbiBhZGRyZXNzLiAgKi8KLSsJICAgICAg YXJnMiA9IHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfRE9NQUlOX1RZUEUg KHR5cGUpKSwKLSsJCQkJIGFyZzIpOworKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBFIChsZWZ0KSA9 PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOworK30KICsKLSsJICAgICAgbWVtX29mZnNldCA9IHZh bHVlX2FzX2xvbmcgKGFyZzEpOworKy8qIEEgaGVscGVyIGZvciB0eXBlX21hcmtfdXNlZC4gICov CiArCi0rCSAgICAgIGFyZzEgPSB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxvb2t1cF9wb2ludGVyX3R5 cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSwKLSsJCQkJCSB2YWx1ZV9hc19sb25nIChhcmcy KSArIG1lbV9vZmZzZXQpOwotKwkgICAgICBhcmcxID0gdmFsdWVfaW5kIChhcmcxKTsKLSsJICAg ICAgdGVtID0gMTsKLSsJICAgICAgYnJlYWs7Cisrc3RhdGljIGludAorK3R5cGVfbWFya191c2Vk X2NyYXdsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqdW51c2VkKQorK3sKKysgIGlmICghVFlQ RV9ESVNDQVJEQUJMRSAodHlwZSkpCisrICAgIHJldHVybiAwOwogKwotKwkgICAgZGVmYXVsdDoK LSsJICAgICAgZXJyb3IgKF8oIk5vbi1wb2ludGVyLXRvLW1lbWJlciB2YWx1ZSB1c2VkIGluIHBv aW50ZXItdG8tbWVtYmVyICIKLSsJCSAgICAgICAiY29uc3RydWN0IikpOwotIAkgICAgfQotLQkg IGVsc2UKLS0JICAgIGFyZzEgPSBjcGx1c19tZXRob2RfcHRyX3RvX3ZhbHVlICgmYXJnMiwgYXJn MSk7Ci0gCi0tCSAgLyogTm93LCBzYXkgd2hpY2ggYXJndW1lbnQgdG8gc3RhcnQgZXZhbHVhdGlu ZyBmcm9tICovCi0tCSAgdGVtID0gMjsKLSsJICBhcmd2ZWNbMF0gPSBhcmcxOwotIAl9Ci0gICAg ICAgZWxzZSBpZiAob3AgPT0gU1RSVUNUT1BfU1RSVUNUIHx8IG9wID09IFNUUlVDVE9QX1BUUikK LSAJewotQEAgLTE0MTIsNiArMTQzMywxNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJICAvKiBOb3csIHNheSB3aGljaCBhcmd1bWVudCB0 byBzdGFydCBldmFsdWF0aW5nIGZyb20gKi8KLSAJICB0ZW0gPSAyOwotIAl9Ci0rICAgICAgZWxz ZSBpZiAob3AgPT0gT1BfQURMX0ZVTkMpCi0rICAgICAgICB7Ci0rICAgICAgICAgIC8qIFNhdmUg dGhlIGZ1bmN0aW9uIHBvc2l0aW9uIGFuZCBtb3ZlIHBvcyBzbyB0aGF0IHRoZSBhcmd1bWVudHMK LSsgICAgICAgICAgICAgY2FuIGJlIGV2YWx1YXRlZC4gKi8KLSsgICAgICAgICAgaW50IGZ1bmNf bmFtZV9sZW47Ci0rICAgICAgICAgIHNhdmVfcG9zMSA9ICpwb3M7Ci0rICAgICAgICAgIHRlbSA9 IDE7Ci0rCi0rICAgICAgICAgIGZ1bmNfbmFtZV9sZW4gPSBsb25nZXN0X3RvX2ludCAoZXhwLT5l bHRzW3NhdmVfcG9zMSArIDNdLmxvbmdjb25zdCk7Ci0rICAgICAgICAgICgqcG9zKSArPSA2ICsg QllURVNfVE9fRVhQX0VMRU0gKGZ1bmNfbmFtZV9sZW4gKyAxKTsKLSsgICAgICAgIH0KLSAgICAg ICBlbHNlIGlmIChvcCA9PSBPUF9TQ09QRQotIAkgICAgICAgJiYgb3ZlcmxvYWRfcmVzb2x1dGlv bgotIAkgICAgICAgJiYgKGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3Vh Z2VfY3BsdXMpKQotQEAgLTE0MzMsOSArMTQ2NSw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9OQU1FU1BBQ0UpCi0gCSAgICB7Ci0gCSAgICAgIGZ1bmN0aW9uID0gY3BfbG9v a3VwX3N5bWJvbF9uYW1lc3BhY2UgKFRZUEVfVEFHX05BTUUgKHR5cGUpLAotLQkJCQkJCSAgICAg bmFtZSwgTlVMTCwKLSsJCQkJCQkgICAgIG5hbWUsCi0gCQkJCQkJICAgICBnZXRfc2VsZWN0ZWRf YmxvY2sgKDApLAotLQkJCQkJCSAgICAgVkFSX0RPTUFJTiwgMSk7Ci0rCQkJCQkJICAgICBWQVJf RE9NQUlOKTsKLSAJICAgICAgaWYgKGZ1bmN0aW9uID09IE5VTEwpCi0gCQllcnJvciAoXygiTm8g c3ltYm9sIFwiJXNcIiBpbiBuYW1lc3BhY2UgXCIlc1wiLiIpLCAKLSAJCSAgICAgICBuYW1lLCBU WVBFX1RBR19OQU1FICh0eXBlKSk7Ci1AQCAtMTQ4NCw2ICsxNTE2LDMzIEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotICAgICAgIC8qIHNpZ25h bCBlbmQgb2YgYXJnbGlzdCAqLwotICAgICAgIGFyZ3ZlY1t0ZW1dID0gMDsKLSAKLSsgICAgICBp ZiAob3AgPT0gT1BfQURMX0ZVTkMpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHN0cnVjdCBzeW1i b2wgKnN5bXA7Ci0rICAgICAgICAgIGNoYXIgKmZ1bmNfbmFtZTsKLSsgICAgICAgICAgaW50ICBu YW1lX2xlbjsKLSsgICAgICAgICAgaW50IHN0cmluZ19wYyA9IHNhdmVfcG9zMSArIDM7Ci0rCi0r ICAgICAgICAgIC8qIEV4dHJhY3QgdGhlIGZ1bmN0aW9uIG5hbWUuICAqLwotKyAgICAgICAgICBu YW1lX2xlbiA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbc3RyaW5nX3BjXS5sb25nY29uc3Qp OwotKyAgICAgICAgICBmdW5jX25hbWUgPSAoY2hhciAqKSBhbGxvY2EgKG5hbWVfbGVuICsgMSk7 Ci0rICAgICAgICAgIHN0cmNweSAoZnVuY19uYW1lLCAmZXhwLT5lbHRzW3N0cmluZ19wYyArIDFd LnN0cmluZyk7Ci0rCi0rICAgICAgICAgIC8qIFByZXBhcmUgbGlzdCBvZiBhcmd1bWVudCB0eXBl cyBmb3Igb3ZlcmxvYWQgcmVzb2x1dGlvbiAqLwotKyAgICAgICAgICBhcmdfdHlwZXMgPSAoc3Ry dWN0IHR5cGUgKiopIGFsbG9jYSAobmFyZ3MgKiAoc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSkpOwot KyAgICAgICAgICBmb3IgKGl4ID0gMTsgaXggPD0gbmFyZ3M7IGl4KyspCi0rICAgICAgICAgICAg YXJnX3R5cGVzW2l4IC0gMV0gPSB2YWx1ZV90eXBlIChhcmd2ZWNbaXhdKTsKLSsKLSsgICAgICAg ICAgZmluZF9vdmVybG9hZF9tYXRjaCAoYXJnX3R5cGVzLCBuYXJncywgZnVuY19uYW1lLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIG5vdCBtZXRob2QgKi8gLCAwIC8qIHN0 cmljdCBtYXRjaCAqLyAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5V TEwgLyogcGFzcyBOVUxMIHN5bWJvbCBzaW5jZSBzeW1ib2wgaXMgdW5rbm93biAqLyAsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZzeW1wLCBOVUxMKTsKLSsKLSsgICAg ICAgICAgLyogTm93IGZpeCB0aGUgZXhwcmVzc2lvbiBiZWluZyBldmFsdWF0ZWQgKi8KLSsgICAg ICAgICAgZXhwLT5lbHRzW3NhdmVfcG9zMSArIDJdLnN5bWJvbCA9IHN5bXA7Ci0rICAgICAgICAg IGFyZ3ZlY1swXSA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsICZzYXZlX3Bv czEsIG5vc2lkZSk7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgaWYgKG9wID09IFNUUlVDVE9QX1NU UlVDVCB8fCBvcCA9PSBTVFJVQ1RPUF9QVFIKLSAJICB8fCAob3AgPT0gT1BfU0NPUEUgJiYgZnVu Y3Rpb25fbmFtZSAhPSBOVUxMKSkKLSAJewotQEAgLTE1NTIsOCArMTYxMSw3IEBAIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAl9Ci0gICAgICAg ZWxzZSBpZiAob3AgPT0gU1RSVUNUT1BfTUVNQkVSIHx8IG9wID09IFNUUlVDVE9QX01QVFIpCi0g CXsKLS0JICBhcmd2ZWNbMV0gPSBhcmcyOwotLQkgIGFyZ3ZlY1swXSA9IGFyZzE7Ci0rCSAgLyog UG9pbnRlciB0byBtZW1iZXIuICBhcmd2ZWMgaXMgYWxyZWFkeSBzZXQgdXAuICAqLwotIAl9Ci0g ICAgICAgZWxzZSBpZiAob3AgPT0gT1BfVkFSX1ZBTFVFIHx8IChvcCA9PSBPUF9TQ09QRSAmJiBm dW5jdGlvbiAhPSBOVUxMKSkKLSAJewotQEAgLTE2NTMsNiArMTcxMSw4IEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAotICAgICAgIC8qIEZp cnN0IGRldGVybWluZSB0aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotICAg ICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7 Ci0rICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAg ICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAg ICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGNvZGUg PSBUWVBFX0NPREUgKHR5cGUpOwotIAotQEAgLTE2NzMsNiArMTczMyw3IEBAIGV2YWx1YXRlX3N1 YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICBjb2RlID0g VFlQRV9DT0RFICh0eXBlKTsKLSAJICAgIH0KLSAJfSAKLSsgICAgICBkb19jbGVhbnVwcyAob2xk X2NoYWluKTsKLSAKLSAgICAgICBzd2l0Y2ggKGNvZGUpCi0gCXsKLUBAIC0xODM0LDYgKzE4OTUs MjYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs Ci0gICAgICAgeGZyZWUgKGV4cGVjdF90eXBlKTsKLSAgICAgICByZXR1cm4gYXJnMTsKLSAKLSsg ICAgY2FzZSBUWVBFX0lOU1RBTkNFX0xPT0tVUDoKLSsgICAgICB7Ci0rCWludCBpOwotKwlzdHJ1 Y3Qgc3ltYm9sICpzeW07Ci0rCXN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotKwkoKnBvcykgKz0g MzsKLSsJYXJnX3R5cGVzID0gKHN0cnVjdCB0eXBlICoqKSBhbGxvY2EgKFRZUEVfTkZJRUxEUyAo ZXhwZWN0X3R5cGUpCi0rCQkJCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7Ci0rCWZv ciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKGV4cGVjdF90eXBlKTsgKytpKQotKwkgIGFyZ190 eXBlc1tpXSA9IFRZUEVfRklFTERfVFlQRSAoZXhwZWN0X3R5cGUsIGkpOwotKwkodm9pZCkgZmlu ZF9vdmVybG9hZF9tYXRjaCAoYXJnX3R5cGVzLCBUWVBFX05GSUVMRFMgKGV4cGVjdF90eXBlKSwK LSsJCQkJICAgIE5VTEwgLyogbm8gbmVlZCBmb3IgbmFtZSAqLywKLSsJCQkJICAgIDAgLyogbm90 IG1ldGhvZCAqLywKLSsJCQkJICAgIDAgLyogc3RyaWN0IG1hdGNoICovLAotKwkJCQkgICAgTlVM TCwgZXhwLT5lbHRzW3BjICsgMV0uc3ltYm9sLCBOVUxMLAotKwkJCQkgICAgJnN5bSwgTlVMTCk7 Ci0rCWkgPSAwOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKKysgIGlmIChUWVBFX0RJU0NBUkRB QkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKKysgICAgcmV0 dXJuIDA7CiArCi0gICAgIGNhc2UgQklOT1BfQ09OQ0FUOgotICAgICAgIGFyZzEgPSBldmFsdWF0 ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0gICAgICAgYXJnMiA9 IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLUBAIC0y MTA1LDEzICsyMTg2LDE5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmV4cGVjdF90eXBlLAotICAgICAgIHsKLSAJaW50IHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJB Tl9ESU1TXTsKLSAJaW50IGFycmF5X3NpemVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0rCWlu dCBieXRlX3N0cmlkZV9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLSAJaW50IG5kaW1lbnNpb25z ID0gMSwgaTsKLSAJc3RydWN0IHR5cGUgKnRtcF90eXBlOwotIAlpbnQgb2Zmc2V0X2l0ZW07CS8q IFRoZSBhcnJheSBvZmZzZXQgd2hlcmUgdGhlIGl0ZW0gbGl2ZXMgKi8KLSsJQ09SRV9BRERSIG9m ZnNldF9ieXRlOwkvKiBieXRlX3N0cmlkZSBiYXNlZCBvZmZzZXQgICovCi0rCXVuc2lnbmVkIGVs ZW1lbnRfc2l6ZTsKLSAKLSAJaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLSAJICBlcnJv ciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFO X0RJTVMpOwotIAotKwlvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7 Ci0rCW9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKysgIFRZ UEVfRElTQ0FSREFCTEVfQUdFICh0eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7 CiArCi0gCXRtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotIAlu ZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOwotIAotQEAgLTIxNDEsNiAr MjIyOCw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAotIAkgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKLSAJICAg IGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7Ci0gCi0rCSAgICBieXRlX3N0 cmlkZV9hcnJheVtuYXJncyAtIGkgLSAxXSA9Ci0rCQkJCQlUWVBFX0FSUkFZX0JZVEVfU1RSSURF X1ZBTFVFICh0bXBfdHlwZSk7CisrICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KKysg IHJldHVybiAxOworK30KICsKLSAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBpIC0gMV0g PSB1cHBlciAtIGxvd2VyICsgMTsKLSAKLSAJICAgIC8qIFplcm8tbm9ybWFsaXplIHN1YnNjcmlw dHMgc28gdGhhdCBvZmZzZXR0aW5nIHdpbGwgd29yay4gKi8KLUBAIC0yMTU5LDEzICsyMjQ5LDI1 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAot IAkgICAgICB0bXBfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90 eXBlKSk7Ci0gCSAgfQotIAotKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8g Zjc3X2dldF9sb3dlcmJvdW5kIGNhbGxzIGFib3ZlLiAgKi8KLSsJZG9fY2xlYW51cHMgKG9sZF9j aGFpbik7CisrLyogTWFyayBUWVBFIGFuZCBpdHMgY29ubmVjdGVkIHR5cGVzIGFzIHVzZWQgaW4g dGhpcyBmcmVlX2FsbF90eXBlcyBwYXNzLiAgKi8KICsKLSAJLyogTm93IGxldCB1cyBjYWxjdWxh dGUgdGhlIG9mZnNldCBmb3IgdGhpcyBpdGVtICovCi0gCi0tCW9mZnNldF9pdGVtID0gc3Vic2Ny aXB0X2FycmF5W25kaW1lbnNpb25zIC0gMV07Ci0rCW9mZnNldF9pdGVtID0gMDsKLSsJb2Zmc2V0 X2J5dGUgPSAwOworK3ZvaWQKKyt0eXBlX21hcmtfdXNlZCAoc3RydWN0IHR5cGUgKnR5cGUpCisr eworKyAgaWYgKHR5cGUgPT0gTlVMTCkKKysgICAgcmV0dXJuOwogKwotKwlmb3IgKGkgPSBuZGlt ZW5zaW9ucyAtIDE7IGkgPj0gMDsgLS1pKQotKwkgIHsKLSsJICAgIG9mZnNldF9pdGVtICo9IGFy cmF5X3NpemVfYXJyYXlbaV07Ci0rCSAgICBpZiAoYnl0ZV9zdHJpZGVfYXJyYXlbaV0gPT0gMCkK LSsJICAgICAgb2Zmc2V0X2l0ZW0gKz0gc3Vic2NyaXB0X2FycmF5W2ldOwotKwkgICAgZWxzZQot KwkgICAgICBvZmZzZXRfYnl0ZSArPSBzdWJzY3JpcHRfYXJyYXlbaV0gKiBieXRlX3N0cmlkZV9h cnJheVtpXTsKLSsJICB9Ci0gCi0tCWZvciAoaSA9IG5kaW1lbnNpb25zIC0gMTsgaSA+IDA7IC0t aSkKLS0JICBvZmZzZXRfaXRlbSA9Ci0tCSAgICBhcnJheV9zaXplX2FycmF5W2kgLSAxXSAqIG9m ZnNldF9pdGVtICsgc3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKLSsJZWxlbWVudF9zaXplID0gVFlQ RV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7Ci0rCW9mZnNldF9ieXRlICs9 IG9mZnNldF9pdGVtICogZWxlbWVudF9zaXplOwotIAotIAkvKiBMZXQgdXMgbm93IHBsYXkgYSBk aXJ0eSB0cmljazogd2Ugd2lsbCB0YWtlIGFyZzEgCi0gCSAgIHdoaWNoIGlzIGEgdmFsdWUgbm9k ZSBwb2ludGluZyB0byB0aGUgdG9wbW9zdCBsZXZlbAotQEAgLTIxNzUsNyArMjI3Nyw3IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICBy ZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgdmFsdWUgKi8KLSAKLSAJZGVwcmVjYXRlZF9zZXRfdmFs dWVfdHlwZSAoYXJnMSwgdG1wX3R5cGUpOwotLQlyZXR1cm4gdmFsdWVfc3Vic2NyaXB0ZWRfcnZh bHVlIChhcmcxLCBvZmZzZXRfaXRlbSwgMCk7Ci0rCXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9y dmFsdWUgKGFyZzEsIG9mZnNldF9ieXRlKTsKLSAgICAgICB9Ci0gCi0gICAgIGNhc2UgQklOT1Bf TE9HSUNBTF9BTkQ6Ci1AQCAtMjQwOSwxNCArMjUxMSwyMiBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAgICAgICBpZiAoZXhwZWN0X3R5cGUg JiYgVFlQRV9DT0RFIChleHBlY3RfdHlwZSkgPT0gVFlQRV9DT0RFX1BUUikKLSAJZXhwZWN0X3R5 cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChjaGVja190eXBlZGVmIChleHBlY3RfdHlwZSkpOwotICAg ICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKGV4cGVjdF90eXBlLCBleHAsIHBvcywgbm9zaWRl KTsKLSsgICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0r ICAgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOwotICAg ICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0gICAgICAgaWYg KFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRFBUUgotIAkgIHx8IFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX01FTUJFUlBUUikKLSAJZXJyb3IgKF8oIkF0dGVtcHQgdG8g ZGVyZWZlcmVuY2UgcG9pbnRlciB0byBtZW1iZXIgd2l0aG91dCBhbiBvYmplY3QiKSk7Ci0gICAg ICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi0tCWdvdG8gbm9zaWRlcmV0OwotKwl7Ci0rCSAg ZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgZ290byBub3NpZGVyZXQ7Ci0rCX0KLSAgICAg ICBpZiAodW5vcF91c2VyX2RlZmluZWRfcCAob3AsIGFyZzEpKQotLQlyZXR1cm4gdmFsdWVfeF91 bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsKLSsJewotKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4p OwotKwkgIHJldHVybiB2YWx1ZV94X3Vub3AgKGFyZzEsIG9wLCBub3NpZGUpOwotKwl9Ci0gICAg ICAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKQotIAl7Ci0gCSAg dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKLUBAIC0yNDI1LDEyICsy NTM1LDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAotIAkgIC8qIEluIEMgeW91IGNhbiBkZXJlZmVyZW5jZSBhbiBhcnJheSB0byBnZXQgdGhl IDFzdCBlbHQuICAqLwotIAkgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9B UlJBWQotIAkgICAgKQotLQkgICAgcmV0dXJuIHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpLAotLQkJCSAgICAgICBsdmFsX21lbW9yeSk7Ci0rCSAgICB7Ci0rCSAgICAgIGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOwotKwkgICAgICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSksCi0rCQkJCSBsdmFsX21lbW9yeSk7Ci0rCSAgICB9Ci0gCSAgZWxzZSBp ZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQotLQkgICAgLyogR0RCIGFsbG93 cyBkZXJlZmVyZW5jaW5nIGFuIGludC4gICovCi0tCSAgICByZXR1cm4gdmFsdWVfemVybyAoYnVp bHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKLS0JCQkgICAgICAgbHZhbF9t ZW1vcnkpOwotKwkgICAgewotKwkgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsJICAg ICAgLyogR0RCIGFsbG93cyBkZXJlZmVyZW5jaW5nIGFuIGludC4gICovCi0rCSAgICAgIHJldHVy biB2YWx1ZV96ZXJvIChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAot KwkJCQkgbHZhbF9tZW1vcnkpOwotKwkgICAgfQotIAkgIGVsc2UKLSAJICAgIGVycm9yIChfKCJB dHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iKSk7Ci0gCX0K LUBAIC0yNDQwLDkgKzI1NTYsMTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg dHlwZSAqZXhwZWN0X3R5cGUsCi0gCSBkby4gICJsb25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFy ZSBlbm91Z2ggdGhhdAotIAkgQlVJTFRJTl9UWVBFX0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBh IG1pc3Rha2UuICAqLwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9J TlQpCi0tCXJldHVybiB2YWx1ZV9hdF9sYXp5IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCkt PmJ1aWx0aW5faW50LAotLQkJCSAgICAgIChDT1JFX0FERFIpIHZhbHVlX2FzX2FkZHJlc3MgKGFy ZzEpKTsKLS0gICAgICByZXR1cm4gdmFsdWVfaW5kIChhcmcxKTsKLSsJewotKwkgIGRvX2NsZWFu dXBzIChvbGRfY2hhaW4pOwotKwkgIHJldHVybiB2YWx1ZV9hdF9sYXp5IChidWlsdGluX3R5cGUg KGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAotKwkJCQkoQ09SRV9BRERSKSB2YWx1ZV9hc19h ZGRyZXNzIChhcmcxKSk7Ci0rCX0KLSsgICAgICBhcmcxID0gdmFsdWVfaW5kIChhcmcxKTsKLSsg ICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgICAgICByZXR1cm4gYXJnMTsKLSAKLSAg ICAgY2FzZSBVTk9QX0FERFI6Ci0gICAgICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBw b2ludGVyIHRvIG1lbWJlcnMuICAqLwotQEAgLTI3NzcsNyArMjg5OCw3IEBAIGV2YWx1YXRlX3N1 YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIHsKLSAgIGVudW0g ZXhwX29wY29kZSBvcDsKLSAgIGludCBwYzsKLS0gIHN0cnVjdCB2YWx1ZSAqdmFsOwotKyAgc3Ry dWN0IHZhbHVlICp2YWwgPSBOVUxMOwotICAgc3RydWN0IHN5bWJvbCAqdmFyOwotICAgc3RydWN0 IHR5cGUgKnR5cGU7Ci0gCi1AQCAtMjc4OCwxMiArMjkwOSwxNyBAQCBldmFsdWF0ZV9zdWJleHBf d2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAgICAgewotICAgICBjYXNl IE9QX1ZBUl9WQUxVRToKLSAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7Ci0r ICAgICAgLyogYWRkcmVzc19vZl92YXJpYWJsZSB3aWxsIGNhbGwgb2JqZWN0X2FkZHJlc3Nfc2V0 IGZvciBjaGVja190eXBlZGVmLgotKwkgQ2FsbCBpdCBvbmx5IGlmIHJlcXVpcmVkIGFzIGl0IGNh biBlcnJvci1vdXQgb24gVkFSIGluIHJlZ2lzdGVyLiAgKi8KLSsgICAgICBpZiAoVFlQRV9EWU5B TUlDIChTWU1CT0xfVFlQRSAodmFyKSkpCi0rCXZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZh ciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwotICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVm IChTWU1CT0xfVFlQRSAodmFyKSk7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX0FSUkFZCi0gCSAgJiYgQ0FTVF9JU19DT05WRVJTSU9OKQotIAl7Ci0gCSAgKCpwb3Mp ICs9IDQ7Ci0tCSAgdmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMg KyAxXS5ibG9jayk7Ci0rCSAgaWYgKCF2YWwpCi0rCSAgICB2YWwgPSBhZGRyZXNzX29mX3Zhcmlh YmxlICh2YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJsb2NrKTsKLSAJICByZXR1cm4gdmFsdWVfY2Fz dCAobG9va3VwX3BvaW50ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAotIAkJCSAg ICAgdmFsKTsKLSAJfQotQEAgLTI4NDUsOSArMjk3MSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfZm9y X3NpemVvZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCi0gCi0gICAgIGNhc2Ug T1BfVkFSX1ZBTFVFOgotICAgICAgICgqcG9zKSArPSA0OwotLSAgICAgIHR5cGUgPSBjaGVja190 eXBlZGVmIChTWU1CT0xfVFlQRSAoZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sKSk7Ci0tICAgICAg cmV0dXJuCi0tCXZhbHVlX2Zyb21fbG9uZ2VzdCAoc2l6ZV90eXBlLCAoTE9OR0VTVCkgVFlQRV9M RU5HVEggKHR5cGUpKTsKLSsgICAgICAvKiBXZSBkbyBub3QgbmVlZCB0byBjYWxsIHJlYWRfdmFy X3ZhbHVlIGJ1dCB0aGUgb2JqZWN0IGV2YWx1YXRpb24gbWF5Ci0rCSBuZWVkIHRvIGhhdmUgZXhl Y3V0ZWQgb2JqZWN0X2FkZHJlc3Nfc2V0IHdoaWNoIG5lZWRzIHZhbGlkCi0rCSBTWU1CT0xfVkFM VUVfQUREUkVTUyBvZiB0aGUgc3ltYm9sLiAgU3RpbGwgVkFMVUUgcmV0dXJuZWQgYnkKLSsJIHJl YWRfdmFyX3ZhbHVlIHdlIGxlZnQgYXMgbGF6eS4gICovCi0rICAgICAgdHlwZSA9IHZhbHVlX3R5 cGUgKHJlYWRfdmFyX3ZhbHVlIChleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2wsCi0rCQkJCQlkZXBy ZWNhdGVkX3NhZmVfZ2V0X3NlbGVjdGVkX2ZyYW1lICgpKSk7Ci0rICAgICAgcmV0dXJuIHZhbHVl X2Zyb21fbG9uZ2VzdCAoc2l6ZV90eXBlLCAoTE9OR0VTVCkgVFlQRV9MRU5HVEggKHR5cGUpKTsK LSAKLSAgICAgZGVmYXVsdDoKLSAgICAgICB2YWwgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQ RSwgZXhwLCBwb3MsIEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKTsKLWRpZmYgLS1naXQgYS9nZGIv ZXhwcHJpbnQuYyBiL2dkYi9leHBwcmludC5jCi1pbmRleCBlMzc4ODMxLi40NWRlZmZlIDEwMDY0 NAotLS0tIGEvZ2RiL2V4cHByaW50LmMKLSsrKyBiL2dkYi9leHBwcmludC5jCi1AQCAtODE2LDYg KzgxNiw4IEBAIG9wX25hbWVfc3RhbmRhcmQgKGVudW0gZXhwX29wY29kZSBvcGNvZGUpCi0gICAg ICAgcmV0dXJuICJPUF9UWVBFIjsKLSAgICAgY2FzZSBPUF9MQUJFTEVEOgotICAgICAgIHJldHVy biAiT1BfTEFCRUxFRCI7Ci0rICAgIGNhc2UgT1BfQURMX0ZVTkM6Ci0rICAgICAgcmV0dXJuICJP UF9BRExfRlVOQyI7Ci0gICAgIH0KLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4cHJlc3Npb24u aCBiL2dkYi9leHByZXNzaW9uLmgKLWluZGV4IGNhMjE2Y2YuLjZiZTBiMWUgMTAwNjQ0Ci0tLS0g YS9nZGIvZXhwcmVzc2lvbi5oCi0rKysgYi9nZGIvZXhwcmVzc2lvbi5oCi1AQCAtOTUsNiArOTUs MTEgQEAgZW51bSBleHBfb3Bjb2RlCi0gICAgICAgIFRZUEVfSU5TVEFOQ0UgbnVtX3R5cGVzIHR5 cGUwIC4uLiB0eXBlTiBudW1fdHlwZXMgVFlQRV9JTlNUQU5DRSAgKi8KLSAgICAgVFlQRV9JTlNU QU5DRSwKLSAKLSsgICAgLyogVFlQRV9JTlNUQU5DRV9MT09LVVAgaXMgdXNlZCB3aGVuIHRoZSB1 c2VyIHNwZWNpZmllcyBhIHNwZWNpZmljCi0rICAgICAgIHR5cGUgaW5zdGFudGlhdGlvbiBvZiBh IGZ1bmN0aW9uIChub3QgYSBtZXRob2QpLiBJbiB0aGlzIGNhc2UsCi0rICAgICAgIHdlIG11c3Qg dG9zcyB0aGUgcmVzdWx0cyBvZiB0aGUgcGFyc2VyIGFuZCBtYW51YWxseSBkbyB0aGUgbG9va3Vw LiAqLwotKyAgICBUWVBFX0lOU1RBTkNFX0xPT0tVUCwKLSsKLSAgICAgLyogZW5kIG9mIEMrKy4g ICovCi0gCi0gICAgIC8qIEZvciBNb2R1bGEtMiBpbnRlZ2VyIGRpdmlzaW9uIERJViAqLwotQEAg LTM0Nyw2ICszNTIsMTAgQEAgZW51bSBleHBfb3Bjb2RlCi0gICAgICAgIFRoZW4gY29tZXMgYW5v dGhlciBPUF9ERUNGTE9BVC4gICovCi0gICAgIE9QX0RFQ0ZMT0FULAotIAotKyAgICAvKiBPUF9B RExfRlVOQyBzcGVjaWZpZXMgdGhhdCB0aGUgYXJndW1lbnQgaXMgdG8gYmUgbG9va2VkIHVwIGlu IGFuCi0rICAgICAgIEFyZ3VtZW50IERlcGVuZGVudCBtYW5uZXIgKEtvZW5pZyBsb29rdXApICov Ci0rICAgIE9QX0FETF9GVU5DLAotKwotICAgICAgLyogRmlyc3QgZXh0ZW5zaW9uIG9wZXJhdG9y LiAgSW5kaXZpZHVhbCBsYW5ndWFnZSBtb2R1bGVzIGRlZmluZQotIAlleHRyYSBvcGVyYXRvcnMg aW4gKi5pbmMgaW5jbHVkZSBmaWxlcyBiZWxvdyBhbHdheXMgc3RhcnRpbmcgd2l0aAotIAludW1i ZXJpbmcgYXQgT1BfRVhURU5ERUQwOgotQEAgLTQ1MSw0ICs0NjAsNSBAQCBleHRlcm4gY2hhciAq b3Bfc3RyaW5nIChlbnVtIGV4cF9vcGNvZGUpOwotIGV4dGVybiB2b2lkIGR1bXBfcmF3X2V4cHJl c3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICosIGNoYXIgKik7Ci0g ZXh0ZXJuIHZvaWQgZHVtcF9wcmVmaXhfZXhwcmVzc2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKiwg c3RydWN0IHVpX2ZpbGUgKik7Ci0gCi0rCi0gI2VuZGlmIC8qICFkZWZpbmVkIChFWFBSRVNTSU9O X0gpICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi1pbmRleCBi OTE0YjQ5Li43OGFlZjJmIDEwMDY0NAotLS0tIGEvZ2RiL2YtbGFuZy5jCi0rKysgYi9nZGIvZi1s YW5nLmMKLUBAIC0zMSw2ICszMSw4IEBACi0gI2luY2x1ZGUgImYtbGFuZy5oIgotICNpbmNsdWRl ICJ2YWxwcmludC5oIgotICNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJibG9jay5oIgot KyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi0gCi0gLyogRm9sbG93aW5nIGlzIGR1YmlvdXMg c3R1ZmYgdGhhdCBoYWQgYmVlbiBpbiB0aGUgeGNvZmYgcmVhZGVyLiAqLwotQEAgLTMwNiw2ICsz MDgsNDYgQEAgZl9sYW5ndWFnZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot ICAgbGFpLT5ib29sX3R5cGVfZGVmYXVsdCA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zMjsK LSB9Ci0gCi0rLyogRmluZCBpZiBOQU1FIGlzIG5vdCBjb250YWluZWQgaW4gYW55IG9mIHRoZSBG b3J0cmFuIG1vZHVsZXMgaW1wb3J0ZWQgYnkgdGhlCi0rICAgRm9ydHJhbiBVU0Ugc3RhdGVtZW50 LgorKyAgaWYgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSkKKysgICAgcmV0dXJuOworKworKyAg bWFpbl90eXBlX2NyYXdsICh0eXBlLCB0eXBlX21hcmtfdXNlZF9jcmF3bCwgTlVMTCk7CisrfQog KwotKyAgIEFzIEZvcnRyYW4gaGFzIG5vIG5lc3RlZCBibG9ja3Mgc3VjaCBsb29rdXAgY2FuIGJl IHByb2Nlc3NlZCBmcm9tCi0rICAgbG9va3VwX3N5bWJvbF9ub25sb2NhbCAtIHdoZW4gbm8gbG9j YWwgYmxvY2tzIGNvdWxkIHNhdGlzZnkgdGhlIGxvb2t1cC4gICovCisrLyogQSB0cmF2ZXJzZSBj YWxsYmFjayBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSB3aGljaCByZW1vdmVzIGFueQorKyAg IHR5cGVfZGlzY2FyZGFibGUgd2hvc2UgcmVmZXJlbmNlIGNvdW50IGlzIG5vdyB6ZXJvICh1bnVz ZWQgbGluaykuICAqLwogKwotK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLStmX2xvb2t1cF9zeW1i b2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJICBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAotKwkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQorK3N0YXRpYyBpbnQKKyt0 eXBlX2Rpc2NhcmRhYmxlX3JlbW92ZSAodm9pZCAqKnNsb3QsIHZvaWQgKnVudXNlZCkKICt7Ci0r ICBpZiAoYmxvY2spCisrICBzdHJ1Y3QgdHlwZSAqdHlwZSA9ICpzbG90OworKworKyAgZ2RiX2Fz c2VydCAoVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpOworKworKyAgaWYgKFRZUEVfRElTQ0FSREFC TEVfQUdFICh0eXBlKSAhPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50KQogKyAgICB7Ci0r ICAgICAgc3RydWN0IGZvcnRyYW5fdXNpbmcgKnVzZTsKKysgICAgICBkZWxldGVfdHlwZV9jaGFp biAodHlwZSk7CiArCi0rICAgICAgZm9yICh1c2UgPSBCTE9DS19GT1JUUkFOX1VTRSAoYmxvY2sp OyB1c2U7IHVzZSA9IHVzZS0+bmV4dCkKLSsJewotKwkgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsJ ICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsJICBzdHJ1Y3Qgc3ltYm9sICpyZXR2YWw7CisrICAgICAg aHRhYl9jbGVhcl9zbG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCBzbG90KTsKKysgICAgfQog KwotKwkgIHN5bSA9IGxvb2t1cF9zeW1ib2xfZ2xvYmFsICh1c2UtPm1vZHVsZV9uYW1lLCBibG9j aywgTU9EVUxFX0RPTUFJTik7CisrICByZXR1cm4gMTsKKyt9CiArCi0rCSAgLyogTW9kdWxlIG5h bWUgbG9va3VwIHNob3VsZCBub3QgZmFpbCB3aXRoIGNvcnJlY3QgZGVidWcgaW5mby4gICovCi0r CSAgaWYgKHN5bSA9PSBOVUxMKQotKwkgICAgY29udGludWU7CisrLyogRnJlZSBhbGwgdGhlIHJl Y2xhaW1hYmxlIHR5cGVzIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhbmQgdGhhdCBoYXZlCisr ICAgY3VycmVudGx5IHplcm8gcmVmZXJlbmNlIGNvdW50ZXIuCisrCisrICAgVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgYWZ0ZXIgZWFjaCBjb21tYW5kLCBzdWNjZXNzZnVsIG9yIG5vdC4gIFVzZSB0 aGlzCisrICAgY2xlYW51cCBvbmx5IGluIHRoZSBHREIgaWRsZSBzdGF0ZSBhcyBHREIgb25seSBt YXJrcyB0aG9zZSB0eXBlcyB1c2VkIGJ5CisrICAgZ2xvYmFsbHkgdHJhY2tlZCBvYmplY3RzICh3 aXRoIG5vIGF1dG92YXJpYWJsZSByZWZlcmVuY2VzIHRyYWNraW5nKS4gICovCiArCi0rCSAgdHlw ZSA9IFNZTUJPTF9UWVBFIChzeW0pOwotKwkgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX01PRFVMRSk7Ci0rCSAgZ2RiX2Fzc2VydCAoVFlQRV9NT0RVTEVfQkxPQ0sg KHR5cGUpICE9IE5VTEwpOworK3ZvaWQKKytmcmVlX2FsbF90eXBlcyAodm9pZCkKKyt7CisrICAv KiBNYXJrIGEgbmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJlIHZp c2l0ZWQgYWZ0ZXIgZWFjaAorKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxlIGVu dHJpZXMgYWxyZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCisrICAgICB2YWx1ZS4gICovCisr ICB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7CiArCi0rCSAgcmV0dmFsID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoVFlQRV9NT0RVTEVfQkxPQ0sgKHR5cGUpLCBuYW1lLCBkb21haW4p OwotKwkgIGlmIChyZXR2YWwpCi0rCSAgICByZXR1cm4gcmV0dmFsOwotKwl9Ci0rICAgIH0KKysg IG9ic2VydmVyX25vdGlmeV9tYXJrX3VzZWQgKCk7CiArCi0rICByZXR1cm4gYmFzaWNfbG9va3Vw X3N5bWJvbF9ub25sb2NhbCAobmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICBodGFiX3RyYXZlcnNl ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCB0eXBlX2Rpc2NhcmRhYmxlX3JlbW92ZSwgTlVMTCk7 CiArfQotKwotIC8qIFRoaXMgaXMgZGVjbGFyZWQgaW4gYy1sYW5nLmggYnV0IGl0IGlzIHNpbGx5 IHRvIGltcG9ydCB0aGF0IGZpbGUgZm9yIHdoYXQKLSAgICBpcyBhbHJlYWR5IGp1c3QgYSBoYWNr LiAqLwotIGV4dGVybiBpbnQgY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB1 aV9maWxlICosCi1AQCAtMzMzLDcgKzM3NSw3IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZu IGZfbGFuZ3VhZ2VfZGVmbiA9Ci0gICBjX3ZhbHVlX3ByaW50LAkJLyogRklYTUUgKi8KLSAgIE5V TEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIHNraXBfdHJhbXBvbGluZSAqLwotICAgTlVMTCwg ICAgICAgICAgICAgICAgICAgIAkvKiBuYW1lX29mX3RoaXMgKi8KLS0gIGJhc2ljX2xvb2t1cF9z eW1ib2xfbm9ubG9jYWwsCS8qIGxvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKi8KLSsgIGZfbG9va3Vw X3N5bWJvbF9ub25sb2NhbCwJLyogbG9va3VwX3N5bWJvbF9ub25sb2NhbCAqLwotICAgYmFzaWNf bG9va3VwX3RyYW5zcGFyZW50X3R5cGUsLyogbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKi8KLSAg IE5VTEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIHN5bWJvbCBkZW1hbmdsZXIgKi8KLSAgIE5V TEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIGNsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAqLwot ZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAotaW5kZXggYjk4YzU1Ni4u YzY4Mzc5YSAxMDA2NDQKLS0tLSBhL2dkYi9mLWxhbmcuaAotKysrIGIvZ2RiL2YtbGFuZy5oCi1A QCAtMjgsNiArMjgsMTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5l ZCBpbiBmLWV4cC55ICovCi0gZXh0ZXJuIHZvaWQgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAq LCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGludCwKLSAJCQkgIGludCk7CiAgCi0rZXh0ZXJu IGNvbnN0IGNoYXIgKmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0K LSsgIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci0rZXh0ZXJu IHZvaWQgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAq dHlwZSk7Ci0rCi0gZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3Qg Z2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCi0gCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAot IAkJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwotQEAgLTEyNSwzICsxMjks MTAgQEAgc3RydWN0IGJ1aWx0aW5fZl90eXBlCi0gLyogUmV0dXJuIHRoZSBGb3J0cmFuIHR5cGUg dGFibGUgZm9yIHRoZSBzcGVjaWZpZWQgYXJjaGl0ZWN0dXJlLiAgKi8KLSBleHRlcm4gY29uc3Qg c3RydWN0IGJ1aWx0aW5fZl90eXBlICpidWlsdGluX2ZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpOworIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhcmNoaXRlY3R1cmUt c3BlY2lmaWMgdHlwZXMuICAqLwogIAotKy8qIExpc3Qgb2YgbW9kdWxlIG5hbWVzIGJlaW5nIGlt cG9ydGVkIGJ5IGEgYmxvY2sgdGhvdWdoIEJMT0NLX0ZPUlRSQU5fVVNFLiAgKi8KLSsKLStzdHJ1 Y3QgZm9ydHJhbl91c2luZwotKyAgewotKyAgICBzdHJ1Y3QgZm9ydHJhbl91c2luZyAqbmV4dDsK LSsgICAgY2hhciBtb2R1bGVfbmFtZVsxXTsKLSsgIH07Ci1kaWZmIC0tZ2l0IGEvZ2RiL2YtdHlw ZXByaW50LmMgYi9nZGIvZi10eXBlcHJpbnQuYwotaW5kZXggMDMzMjkzMi4uNmU4NjY4YyAxMDA2 NDQKLS0tLSBhL2dkYi9mLXR5cGVwcmludC5jCi0rKysgYi9nZGIvZi10eXBlcHJpbnQuYwotQEAg LTMyLDcgKzMyLDcgQEAKLSAjaW5jbHVkZSAiZ2RiY29yZS5oIgotICNpbmNsdWRlICJ0YXJnZXQu aCIKLSAjaW5jbHVkZSAiZi1sYW5nLmgiCi0tCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotICNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi1AQCAtNDksNiAr NDksMzQgQEAgdm9pZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICos IHN0cnVjdCB1aV9maWxlICosCi0gdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUg Kiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwotIAwKLSAKLStjb25zdCBjaGFyICoKLStm X29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAq dHlwZSwKLSsJCQkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBjb25zdCBj aGFyICptc2c7Ci0rCi0rICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlw ZSk7Ci0rICBpZiAobXNnICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBBc3N1bWluZyB0aGUg Y29udGVudCBwcmludGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4gICovCi0r ICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7Ci0rICAgIH0KLSsK LSsgIHJldHVybiBtc2c7Ci0rfQotKwotK3ZvaWQKLStmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFs aWRfb3JfZXJyb3IgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGNvbnN0IGNoYXIgKm1zZzsK LSsKLSsgIG1zZyA9IG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKTsKLSsgIGlm IChtc2cgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNzIGl0 IGJlY2F1c2UgdGhlICVzLiIpLCBfKG1zZykpOwotKyAgICB9Ci0rfQotKwotIC8qIExFVkVMIGlz IHRoZSBkZXB0aCB0byBpbmRlbnQgbGluZXMgYnkuICAqLwotIAotIHZvaWQKLUBAIC01OCw2ICs4 Niw5IEBAIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNoYXIgKnZhcnN0cmluZywg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgIGVudW0gdHlwZV9jb2RlIGNvZGU7Ci0gICBpbnQg ZGVtYW5nbGVkX2FyZ3M7CitAQCAtMzUxMSw2ICs0MDY2LDggQEAgZ2RidHlwZXNfcG9zdF9pbml0 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChi dWlsdGluX3R5cGUtPmJ1aWx0aW5fdm9pZCk7CisgICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVu Y19wdHIKKyAgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChsb29rdXBfZnVuY3Rpb25fdHlwZSAo YnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpKTsKKysgIGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9m dW5jX2Z1bmMKKysgICAgPSBsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBlLT5idWls dGluX2Z1bmNfcHRyKTsKICAKLSsgIGlmIChmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJp bnRfdG9fc3RyZWFtICh0eXBlLCBzdHJlYW0pICE9IE5VTEwpCi0rICAgIHJldHVybjsKKyAgIC8q IFRoaXMgdHlwZSByZXByZXNlbnRzIGEgR0RCIGludGVybmFsIGZ1bmN0aW9uLiAgKi8KKyAgIGJ1 aWx0aW5fdHlwZS0+aW50ZXJuYWxfZm4KK0BAIC0zNjI0LDYgKzQxODEsMTggQEAgb2JqZmlsZV90 eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAJCSAiPHRleHQgdmFyaWFibGUsIG5vIGRl YnVnIGluZm8+Iiwgb2JqZmlsZSk7CisgICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUt Pm5vZGVidWdfdGV4dF9zeW1ib2wpCisgICAgID0gb2JqZmlsZV90eXBlLT5idWlsdGluX2ludDsK KysgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2wKKysgICAgPSBp bml0X3R5cGUgKFRZUEVfQ09ERV9GVU5DLCAxLCBUWVBFX0ZMQUdfR05VX0lGVU5DLAorKwkJICI8 dGV4dCBnbnUtaW5kaXJlY3QtZnVuY3Rpb24gdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+IiwKKysJ CSBvYmpmaWxlKTsKKysgIFRZUEVfVEFSR0VUX1RZUEUgKG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190 ZXh0X2dudV9pZnVuY19zeW1ib2wpCisrICAgID0gb2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRf c3ltYm9sOworKyAgb2JqZmlsZV90eXBlLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sCisrICAgID0g aW5pdF90eXBlIChUWVBFX0NPREVfUFRSLCBnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSAvIDgs IDAsCisrCQkgIjx0ZXh0IGZyb20ganVtcCBzbG90IGluIC5nb3QucGx0LCBubyBkZWJ1ZyBpbmZv PiIsCisrCQkgb2JqZmlsZSk7CisrICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5v ZGVidWdfZ290X3BsdF9zeW1ib2wpCisrICAgID0gb2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRf c3ltYm9sOworICAgb2JqZmlsZV90eXBlLT5ub2RlYnVnX2RhdGFfc3ltYm9sCisgICAgID0gaW5p dF90eXBlIChUWVBFX0NPREVfSU5ULAorIAkJIGdkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCkgLyBI T1NUX0NIQVJfQklULCAwLAorQEAgLTM2NzgsNiArNDI0NywxMSBAQCB2b2lkCisgX2luaXRpYWxp emVfZ2RidHlwZXMgKHZvaWQpCisgeworICAgZ2RidHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0YV9y ZWdpc3Rlcl9wb3N0X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7CiArCi0gICBmX3R5cGVfcHJp bnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93LCBsZXZlbCk7Ci0gICBjb2RlID0gVFlQRV9DT0RF ICh0eXBlKTsKLSAgIGlmICgodmFyc3RyaW5nICE9IE5VTEwgJiYgKnZhcnN0cmluZyAhPSAnXDAn KQotQEAgLTE2NSw2ICsxOTYsOSBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotIAotICAgUVVJVDsKLSAKLSsg IGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9UWVBFREVGKQotKyAgICBDSEVDS19U WVBFREVGICh0eXBlKTsKKysgIHR5cGVfZGlzY2FyZGFibGVfdGFibGUgPSBodGFiX2NyZWF0ZV9h bGxvYyAoMjAsIHR5cGVfZGlzY2FyZGFibGVfaGFzaCwKKysJCQkJCSAgICAgdHlwZV9kaXNjYXJk YWJsZV9lcXVhbCwgTlVMTCwKKysJCQkJCSAgICAgeGNhbGxvYywgeGZyZWUpOwogKwotICAgc3dp dGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZ OgotZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCi1pbmRl eCA5YmQzNjQwLi5mNTJiODU4IDEwMDY0NAotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysrIGIv Z2RiL2YtdmFscHJpbnQuYwotQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNl dF90YmxbTUFYX0ZPUlRSQU5fRElNUyArIDFdWzJdOwotIC8qIFRoZSBmb2xsb3dpbmcgbWFjcm8g Z2l2ZXMgdXMgdGhlIHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdoZXJlIAotICAgIG4gaXMg MSBiYXNlZC4gKi8KKyAgIG9iamZpbGVfdHlwZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRh ICgpOwogIAotLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtu XVsxXSkKLSsjZGVmaW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25d WzFdKQorICAgYWRkX3NldHNob3dfemludGVnZXJfY21kICgib3ZlcmxvYWQiLCBub19jbGFzcywg Jm92ZXJsb2FkX2RlYnVnLCBfKCJcCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIv Z2RidHlwZXMuaAoraW5kZXggMDg1MjcwZS4uY2IyYjg4ZSAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0 eXBlcy5oCisrKysgYi9nZGIvZ2RidHlwZXMuaAorQEAgLTE3MSw2ICsxNzEsNyBAQCBlbnVtIHR5 cGVfZmxhZ192YWx1ZQorICAgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFID0gKDEgPDwgMTUpLAor ICAgVFlQRV9GTEFHX1NUVUJfU1VQUE9SVEVEID0gKDEgPDwgMTYpLAorICAgVFlQRV9GTEFHX05P VFRFWFQgPSAoMSA8PCAxNyksCisrICBUWVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwgMTgpLAog IAotLS8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIG9mZnNldCBmb3Igcm93IG4gd2hlcmUg biBpcyAxLWJhc2VkLiAqLwotKy8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIGVsZW1lbnQg c2l6ZSBmb3Igcm93IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworICAgLyogVXNlZCBmb3IgZXJy b3ItY2hlY2tpbmcuICAqLworICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAor QEAgLTIxNCw2ICsyMTUsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKICAKLS0j ZGVmaW5lIEY3N19ESU1fT0ZGU0VUKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkKLSsj ZGVmaW5lIEY3N19ESU1fQllURV9TVFJJREUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBd KQorICNkZWZpbmUgVFlQRV9UQVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFn X3RhcmdldF9zdHViKQogIAotIGludAotIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUg KnR5cGUpCi0gewotKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBl KTsKKysvKiBUeXBlIG5lZWRzIHRvIGJlIGV2YWx1YXRlZCBvbiBlYWNoIENIRUNLX1RZUEVERUYg YW5kIGl0cyByZXN1bHRzIG11c3Qgbm90IGJlCisrICAgc3RpY2t5LiAgKi8KICsKLSAgIGlmIChU WVBFX0FSUkFZX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCi0gICAgIGVycm9yIChf KCJMb3dlciBib3VuZCBtYXkgbm90IGJlICcqJyBpbiBGNzciKSk7Ci0gCi1AQCAtNzIsMTQgKzc0 LDE3IEBAIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gaW50Ci0gZjc3 X2dldF91cHBlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSB7Ci0rICBmX29iamVjdF9hZGRy ZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHR5cGUpOworKyNkZWZpbmUgVFlQRV9EWU5BTUlDKHQp CQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2R5bmFtaWMpCiArCi0gICBpZiAoVFlQRV9BUlJB WV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQotICAgICB7Ci0tICAgICAgLyogV2Ug aGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXkgb24gb3VyIGhhbmRzLiAgQXNzdW1lIHRoYXQKLS0J IHVwcGVyX2JvdW5kID09IGxvd2VyX2JvdW5kIHNvIHRoYXQgd2Ugc2hvdyBhdCBsZWFzdCAxIGVs ZW1lbnQuCi0tCSBJZiB0aGUgdXNlciB3YW50cyB0byBzZWUgbW9yZSBlbGVtZW50cywgbGV0IGhp bSBtYW51YWxseSBhc2sgZm9yICdlbQotLQkgYW5kIHdlJ2xsIHN1YnNjcmlwdCB0aGUgYXJyYXkg YW5kIHNob3cgaGltLiAgKi8KLSsgICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJh eSBvbiBvdXIgaGFuZHMuICBBcyB0eXBlX2xlbmd0aF9nZXQKLSsJIGFscmVhZHkgYXNzdW1lcyBh IGxlbmd0aCB6ZXJvIG9mIGFycmF5cyB3aXRoIHVuZGVyZmluZWQgYm91bmRzIFZBTEFERFIKLSsJ IHBhc3NlZCB0byB0aGUgRm9ydHJhbiBmdW5jdGlvbnMgZG9lcyBub3QgY29udGFpbmVkIHRoZSBy ZWFsIGluZmVyaW9yCi0rCSBtZW1vcnkgY29udGVudC4gIFVzZXIgc2hvdWxkIHJlcXVlc3QgcHJp bnRpbmcgb2Ygc3BlY2lmaWMgYXJyYXkKLSsJIGVsZW1lbnRzIGluc3RlYWQuICAqLwotIAotLSAg ICAgIHJldHVybiBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOwotKyAgICAgIHJldHVybiBmNzdf Z2V0X2xvd2VyYm91bmQgKHR5cGUpIC0gMTsKLSAgICAgfQorIC8qIFN0YXRpYyB0eXBlLiAgSWYg dGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAorICAqIGEgc3RhdGljIG1v ZGlmaWVyLgorICAqIE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMg ZGF0YSBtZW1iZXJzCitAQCAtMjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxh Z192YWx1ZQogIAotICAgcmV0dXJuIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfVkFMVUUgKHR5cGUp OwotQEAgLTEzNSwyNCArMTQwLDI5IEBAIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJs IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSAgICAgICB1cHBl ciA9IGY3N19nZXRfdXBwZXJib3VuZCAodG1wX3R5cGUpOwotICAgICAgIGxvd2VyID0gZjc3X2dl dF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CisgI2RlZmluZSBUWVBFX05PVFRFWFQodCkJCShUWVBF X01BSU5fVFlQRSAodCktPmZsYWdfbm90dGV4dCkKICAKLS0gICAgICBGNzdfRElNX1NJWkUgKG5k aW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKLSsgICAgICBGNzdfRElNX0NPVU5UIChuZGltZW4p ID0gdXBwZXIgLSBsb3dlciArIDE7CisrLyogVXNlZCBvbmx5IGZvciBUWVBFX0NPREVfRlVOQyB3 aGVyZSBpdCBzcGVjaWZpZXMgdGhlIHJlYWwgZnVuY3Rpb24KKysgICBhZGRyZXNzIGlzIHJldHVy bmVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FsbC4gIFRZUEVfVEFSR0VUX1RZUEUgZGV0ZXJtaW5lcyB0 aGUKKysgICBmaW5hbCByZXR1cm5lZCBmdW5jdGlvbiB0eXBlIHRvIGJlIHByZXNlbnRlZCB0byB1 c2VyLiAgKi8KICsKLSsgICAgICBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0KLSsgICAg ICAgIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHRtcF90eXBlKTsKLSAKLSAgICAgICB0 bXBfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKTsKLSAgICAgICBuZGltZW4rKzsK LSAgICAgfQotIAotLSAgLyogTm93IHdlIG11bHRpcGx5IGVsdGxlbiBieSBhbGwgdGhlIG9mZnNl dHMsIHNvIHRoYXQgbGF0ZXIgd2UgCi0rICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0bGVuIGJ5IGFs bCB0aGUgQllURV9TVFJJREVzLCBzbyB0aGF0IGxhdGVyIHdlCi0gICAgICBjYW4gcHJpbnQgb3V0 IGFycmF5IGVsZW1lbnRzIGNvcnJlY3RseS4gIFVwIHRpbGwgbm93IHdlIAotLSAgICAga25vdyBh biBvZmZzZXQgdG8gYXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNvIAotKyAgICAga25v dyBhbiBlbHRsZW4gdG8gYXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNvCi0gICAgICBo YXZlIHRvIGtub3cgaG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBpdGVtICovCi0g Ci0gICBuZGltZW4tLTsKLSAgIGVsdGxlbiA9IFRZUEVfTEVOR1RIICh0bXBfdHlwZSk7Ci0tICBG NzdfRElNX09GRlNFVCAobmRpbWVuKSA9IGVsdGxlbjsKLSsgIGlmIChGNzdfRElNX0JZVEVfU1RS SURFIChuZGltZW4pID09IDApCi0rICAgIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBl bHRsZW47Ci0gICB3aGlsZSAoLS1uZGltZW4gPiAwKQotICAgICB7Ci0tICAgICAgZWx0bGVuICo9 IEY3N19ESU1fU0laRSAobmRpbWVuICsgMSk7Ci0tICAgICAgRjc3X0RJTV9PRkZTRVQgKG5kaW1l bikgPSBlbHRsZW47Ci0rICAgICAgZWx0bGVuICo9IEY3N19ESU1fQ09VTlQgKG5kaW1lbiArIDEp OwotKyAgICAgIGlmIChGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID09IDApCi0rCUY3N19E SU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRsZW47Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTcy LDM0ICsxODIsMzQgQEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9u cywgc3RydWN0IHR5cGUgKnR5cGUsCi0gCi0gICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQotICAg ICB7Ci0tICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCplbHRz KSA8IG9wdGlvbnMtPnByaW50X21heCk7IGkrKykKLSsgICAgICBmb3IgKGkgPSAwOyAoaSA8IEY3 N19ESU1fQ09VTlQgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7IGkrKykK LSAJewotIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiggIik7Ci0gCSAgZjc3X3ByaW50 X2FycmF5XzEgKG5zcyArIDEsIG5kaW1lbnNpb25zLCBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwK LS0JCQkgICAgIHZhbGFkZHIgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5zcyksCi0tCQkJICAgICBh ZGRyZXNzICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAotKwkJCSAgICAgdmFsYWRkciArIGkg KiBGNzdfRElNX0JZVEVfU1RSSURFIChuc3MpLAotKwkJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdf RElNX0JZVEVfU1RSSURFIChuc3MpLAotIAkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25z LCBlbHRzKTsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOwotIAl9Ci0tICAg ICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChu c3MpKSAKLSsgICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdf RElNX0NPVU5UIChuc3MpKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLSAg ICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0la RSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OwotKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9t YXg7Ci0gCSAgIGkrKywgKCplbHRzKSsrKQotIAl7Ci0gCSAgdmFsX3ByaW50IChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwKLS0JCSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRp bWVuc2lvbnMpLAotKwkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5k aW1lbnNpb25zKSwKLSAJCSAgICAgMCwKLS0JCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09G RlNFVCAobmRpbWVuc2lvbnMpLAotKwkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9T VFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBj dXJyZW50X2xhbmd1YWdlKTsKLSAKLS0JICBpZiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0g MSkpCi0rCSAgaWYgKGkgIT0gKEY3N19ESU1fQ09VTlQgKG5zcykgLSAxKSkKLSAJICAgIGZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7Ci0gCi0gCSAgaWYgKCgqZWx0cyA9PSBvcHRpb25z LT5wcmludF9tYXggLSAxKQotLQkgICAgICAmJiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0g MSkpKQotKwkgICAgICAmJiAoaSAhPSAoRjc3X0RJTV9DT1VOVCAobnNzKSAtIDEpKSkKLSAJICAg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwotIAl9Ci0gICAgIH0KLUBAIC0yNTMs NiArMjYzLDkgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKLSAgIENPUkVfQUREUiBhZGRyOwotICAg aW50IGluZGV4OwotIAotKyAgaWYgKGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90 b19zdHJlYW0gKHR5cGUsIHN0cmVhbSkgIT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7CisrI2RlZmlu ZSBUWVBFX0dOVV9JRlVOQyh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2dudV9pZnVuYykK ICsKLSAgIENIRUNLX1RZUEVERUYgKHR5cGUpOwotICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUp KQotICAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2ZpbmRjbWQuYyBiL2dkYi9maW5kY21kLmMKLWlu ZGV4IGM3NTIzMTYuLmRmMjY4N2MgMTAwNjQ0Ci0tLS0gYS9nZGIvZmluZGNtZC5jCi0rKysgYi9n ZGIvZmluZGNtZC5jCi1AQCAtMjcsNyArMjcsNyBAQAotIAotIC8qIENvcGllZCBmcm9tIGJmZF9w dXRfYml0cy4gICovCisgLyogVHlwZSBvd25lci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0 cnVlLCB0aGUgdHlwZSBpcyBvd25lZCBieQorICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBU WVBFX09CSkZJTEUuICBPdGhlcndlaXNlLCB0aGUgdHlwZSBpcworICAgIG93bmVkIGJ5IGFuIGFy Y2hpdGVjdHVyZTsgVFlQRV9PQkpGSUxFIGlzIE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KK0BAIC0y ODUsNiArMjk3LDQ4IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCi0tc3RhdGlj IHZvaWQKLSt2b2lkCi0gcHV0X2JpdHMgKGJmZF91aW50NjRfdCBkYXRhLCBjaGFyICpidWYsIGlu dCBiaXRzLCBiZmRfYm9vbGVhbiBiaWdfcCkKLSB7Ci0gICBpbnQgaTsKLUBAIC00NSw2ICs0NSw0 MSBAQCBwdXRfYml0cyAoYmZkX3VpbnQ2NF90IGRhdGEsIGNoYXIgKmJ1ZiwgaW50IGJpdHMsIGJm ZF9ib29sZWFuIGJpZ19wKQotICAgICB9Ci0gfQorICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFT Uyh0KSAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQogIAotKy8qIEFs bG9jYXRlcyBhIGJ1ZmZlciBpbiAqUEFUVEVSTl9CVUYsIHdpdGggYSBoYXJkLWNvZGVkIGluaXRp YWwgc2l6ZSB3aGljaAotKyAgIHdpbGwgYmUgcmV0dXJuZWQgaW4gKlBBVFRFUk5fQlVGX1NJWkUu ICpQQVRURVJOX0JVRl9FTkQgcG9pbnRzIHRvIHRoZSBzYW1lCi0rICAgcGxhY2UgYXMgKlBBVFRF Uk5fQlVGLCBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBpbml0aWFsbHkgZW1wdHkuICAq LworKy8qIERlZmluZSB0aGlzIHR5cGUgYXMgYmVpbmcgcmVjbGFpbWFibGUgZHVyaW5nIGZyZWVf YWxsX3R5cGVzLiAgVHlwZSBpcworKyAgIHJlcXVpcmVkIHRvIGJlIGhhdmUgVFlQRV9PQkpGSUxF IHNldCB0byBOVUxMLiAgU2V0dGluZyB0aGlzIGZsYWcgcmVxdWlyZXMKKysgICBpbml0aWFsaXpp bmcgVFlQRV9ESVNDQVJEQUJMRV9BR0UsIHNlZSBhbGxvY190eXBlX2Rpc2NhcmRhYmxlLiAgKi8K ICsKLSt2b2lkCi0rYWxsb2NhdGVfcGF0dGVybl9idWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1Ziwg Y2hhciAqKnBhdHRlcm5fYnVmX2VuZCwKLSsJCQkgVUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUp Ci0rewotKyNkZWZpbmUgSU5JVElBTF9QQVRURVJOX0JVRl9TSVpFIDEwMAotKyAgKnBhdHRlcm5f YnVmX3NpemUgPSBJTklUSUFMX1BBVFRFUk5fQlVGX1NJWkU7Ci0rICAqcGF0dGVybl9idWYgPSB4 bWFsbG9jICgqcGF0dGVybl9idWZfc2l6ZSk7Ci0rICAqcGF0dGVybl9idWZfZW5kID0gKnBhdHRl cm5fYnVmOwotK30KKysjZGVmaW5lIFRZUEVfRElTQ0FSREFCTEUodCkJKFRZUEVfTUFJTl9UWVBF ICh0KS0+ZmxhZ19kaXNjYXJkYWJsZSkKICsKLSsvKiBHcm93cyAqUEFUVEVSTl9CVUYgYnkgYSBm YWN0b3Igb2YgdHdvIGlmIGl0J3Mgbm90IGxhcmdlIGVub3VnaCB0byBob2xkCi0rICAgVkFMX0JZ VEVTIG1vcmUgYnl0ZXMgIG9yIGEgNjQtYml0IHZhbHVlLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgot KyAgICpQQVRURVJOX0JVRl9FTkQgaXMgdXBkYXRlZCBhcyBuZWNlc3NhcnkuICAqLworKy8qIE1h cmtlciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJrX3VzZWQgYnkg dGhpcworKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGluZyBwYXNzLiAg Q3VycmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCisrICAgYnkgVFlQRV9ESVNDQVJEQUJMRV9BR0Vf Q1VSUkVOVC4gICovCiArCi0rdm9pZAotK2luY3JlYXNlX3BhdHRlcm5fYnVmZmVyIChjaGFyICoq cGF0dGVybl9idWYsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJIFVMT05HRVNUICpwYXR0 ZXJuX2J1Zl9zaXplLCBpbnQgdmFsX2J5dGVzKQotK3sKLSsgICAgLyogS2VlcCBpdCBzaW1wbGUg YW5kIGFzc3VtZSBzaXplID09ICdnJyB3aGVuIHdhdGNoaW5nIGZvciB3aGVuIHdlCi0rICAgICAg IG5lZWQgdG8gZ3JvdyB0aGUgcGF0dGVybiBidWYuICAqLwotKyAgICBpZiAoKCpwYXR0ZXJuX2J1 Zl9lbmQgLSAqcGF0dGVybl9idWYgKyBtYXggKHZhbF9ieXRlcywgc2l6ZW9mIChpbnQ2NF90KSkp Ci0rCT4gKnBhdHRlcm5fYnVmX3NpemUpCi0rICAgICAgewotKwlzaXplX3QgY3VycmVudF9vZmZz ZXQgPSAqcGF0dGVybl9idWZfZW5kIC0gKnBhdHRlcm5fYnVmOworKyNkZWZpbmUgVFlQRV9ESVND QVJEQUJMRV9BR0UodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kaXNjYXJkYWJsZV9hZ2Up CiArCi0rCSpwYXR0ZXJuX2J1Zl9zaXplICo9IDI7Ci0rCSpwYXR0ZXJuX2J1ZiA9IHhyZWFsbG9j ICgqcGF0dGVybl9idWYsICpwYXR0ZXJuX2J1Zl9zaXplKTsKLSsJKnBhdHRlcm5fYnVmX2VuZCA9 ICpwYXR0ZXJuX2J1ZiArIGN1cnJlbnRfb2Zmc2V0OwotKyAgICAgIH0KLSt9CisrLyogSXMgSElH SF9CT1VORCBhIGxvdy1ib3VuZCByZWxhdGl2ZSBjb3VudCAoMSkgb3IgdGhlIGhpZ2ggYm91bmQg aXRzZWxmICgwKT8gICovCiArCi0gLyogU3Vicm91dGluZSBvZiBmaW5kX2NvbW1hbmQgdG8gc2lt cGxpZnkgaXQuCi0gICAgUGFyc2UgdGhlIGFyZ3VtZW50cyBvZiB0aGUgImZpbmQiIGNvbW1hbmQu ICAqLwotIAotQEAgLTYxLDggKzk2LDcgQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBV TE9OR0VTVCAqbWF4X2NvdW50cCwKLSAgIGNoYXIgKnBhdHRlcm5fYnVmOwotICAgLyogQ3VycmVu dCBzaXplIG9mIHNlYXJjaCBwYXR0ZXJuIGJ1ZmZlci4KLSAgICAgIFdlIHJlYWxsb2Mgc3BhY2Ug YXMgbmVlZGVkLiAgKi8KLS0jZGVmaW5lIElOSVRJQUxfUEFUVEVSTl9CVUZfU0laRSAxMDAKLS0g IFVMT05HRVNUIHBhdHRlcm5fYnVmX3NpemUgPSBJTklUSUFMX1BBVFRFUk5fQlVGX1NJWkU7Ci0r ICBVTE9OR0VTVCBwYXR0ZXJuX2J1Zl9zaXplOwotICAgLyogUG9pbnRlciB0byBvbmUgcGFzdCB0 aGUgbGFzdCBpbi11c2UgcGFydCBvZiBwYXR0ZXJuX2J1Zi4gICovCi0gICBjaGFyICpwYXR0ZXJu X2J1Zl9lbmQ7Ci0gICBVTE9OR0VTVCBwYXR0ZXJuX2xlbjsKLUBAIC03NSw4ICsxMDksNyBAQCBw YXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291bnRwLAotICAgaWYg KGFyZ3MgPT0gTlVMTCkKLSAgICAgZXJyb3IgKF8oIk1pc3Npbmcgc2VhcmNoIHBhcmFtZXRlcnMu IikpOwotIAotLSAgcGF0dGVybl9idWYgPSB4bWFsbG9jIChwYXR0ZXJuX2J1Zl9zaXplKTsKLS0g IHBhdHRlcm5fYnVmX2VuZCA9IHBhdHRlcm5fYnVmOwotKyAgYWxsb2NhdGVfcGF0dGVybl9idWZm ZXIgKCZwYXR0ZXJuX2J1ZiwgJnBhdHRlcm5fYnVmX2VuZCwgJnBhdHRlcm5fYnVmX3NpemUpOwot ICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZw YXR0ZXJuX2J1Zik7Ci0gCi0gICAvKiBHZXQgc2VhcmNoIGdyYW51bGFyaXR5IGFuZC9vciBtYXgg Y291bnQgaWYgc3BlY2lmaWVkLgotQEAgLTE3MywxNiArMjA2LDggQEAgcGFyc2VfZmluZF9hcmdz IChjaGFyICphcmdzLCBVTE9OR0VTVCAqbWF4X2NvdW50cCwKLSAgICAgICB2ID0gcGFyc2VfdG9f Y29tbWFfYW5kX2V2YWwgKCZzKTsKLSAgICAgICB2YWxfYnl0ZXMgPSBUWVBFX0xFTkdUSCAodmFs dWVfdHlwZSAodikpOwotIAotLSAgICAgIC8qIEtlZXAgaXQgc2ltcGxlIGFuZCBhc3N1bWUgc2l6 ZSA9PSAnZycgd2hlbiB3YXRjaGluZyBmb3Igd2hlbiB3ZQotLQkgbmVlZCB0byBncm93IHRoZSBw YXR0ZXJuIGJ1Zi4gICovCi0tICAgICAgaWYgKChwYXR0ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1 ZiArIG1heCAodmFsX2J5dGVzLCBzaXplb2YgKGludDY0X3QpKSkKLS0JICA+IHBhdHRlcm5fYnVm X3NpemUpCi0tCXsKLS0JICBzaXplX3QgY3VycmVudF9vZmZzZXQgPSBwYXR0ZXJuX2J1Zl9lbmQg LSBwYXR0ZXJuX2J1ZjsKLS0JICBwYXR0ZXJuX2J1Zl9zaXplICo9IDI7Ci0tCSAgcGF0dGVybl9i dWYgPSB4cmVhbGxvYyAocGF0dGVybl9idWYsIHBhdHRlcm5fYnVmX3NpemUpOwotLQkgIHBhdHRl cm5fYnVmX2VuZCA9IHBhdHRlcm5fYnVmICsgY3VycmVudF9vZmZzZXQ7Ci0tCX0KLSsgICAgICBp bmNyZWFzZV9wYXR0ZXJuX2J1ZmZlciAoJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9idWZfZW5kLAot KwkJCSAgICAgICAmcGF0dGVybl9idWZfc2l6ZSwgdmFsX2J5dGVzKTsKLSAKLSAgICAgICBpZiAo c2l6ZSAhPSAnXDAnKQotIAl7Ci1AQCAtMjM3LDYgKzI2Miw0NSBAQCBwYXJzZV9maW5kX2FyZ3Mg KGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291bnRwLAotICAgZGlzY2FyZF9jbGVhbnVwcyAo b2xkX2NsZWFudXBzKTsKLSB9Ci0gCi0rLyogRHJpdmVzIHRhcmdldF9zZWFyY2hfbWVtb3J5IHRv IHN3ZWVwIHRocm91Z2ggdGhlIHNwZWNpZmllZCBzZWFyY2ggc3BhY2UsCi0rICAgcG9zc2libHkg aW4gc2V2ZXJhbCBpdGVyYXRpb25zICh3aXRoIG9uZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gZm9y IGVhY2gKLSsgICBpdGVyYXRpb24pLiAgKlNUQVJUX0FERFIgaXMgdGhlIGFkZHJlc3Mgd2hlcmUg dGhlIHNlYXJjaCBzdGFydHMsIGFuZCBpcwotKyAgIHVwZGF0ZWQgdG8gdGhlIG5leHQgc3RhcnRp bmcgYWRkcmVzcyB0byBjb250aW51ZSB0aGUgc2VhcmNoLgotKyAgICpTRUFSQ0hfU1BBQ0VfTEVO IGlzIHRoZSBhbW91bnQgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCwgYW5kIGlzCi0r ICAgdXBkYXRlZCBmb3IgdGhlIG5leHQgaXRlcmF0aW9uLiBQQVRURVJOX0JVRiBob2xkcyB0aGUg cGF0dGVybiB0byBiZSBzZWFyY2hlZAotKyAgIGZvciwgUEFUVEVSTl9MRU4gaXMgdGhlIHNpemUg b2YgdGhlIHBhdHRlcm4gaW4gYnl0ZXMuICBJZiBhIG1hdGNoIGlzIGZvdW5kLAotKyAgIGl0J3Mg YWRkcmVzcyBpcyBwdXQgaW4gKkZPVU5EX0FERFIuCisrI2RlZmluZSBUWVBFX1JBTkdFX0hJR0hf Qk9VTkRfSVNfQ09VTlQocmFuZ2VfdHlwZSkgXAorKyAgKFRZUEVfTUFJTl9UWVBFIChyYW5nZV90 eXBlKS0+ZmxhZ19yYW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50KQogKwotKyAgIFJldHVybnMgMSBp ZiBmb3VuZCwgMCBpZiBub3QgZm91bmQsIGFuZCAtMSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgcmVx dWlyaW5nCi0rICAgaGFsdGluZyBvZiB0aGUgc2VhcmNoIChlLmcuIG1lbW9yeSByZWFkIGVycm9y KS4gICovCisrLyogTm90IGFsbG9jYXRlZC4gIFRZUEVfQUxMT0NBVEVEKHQpIG11c3QgYmUgTlVM TCBpbiBzdWNoIGNhc2UuICBJZiB0aGlzIGZsYWcKKysgICBpcyB1bnNldCBhbmQgVFlQRV9BTExP Q0FURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFsbG9jYXRlZC4gIElmIHRoaXMKKysg ICBmbGFnIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0 cyBEV0FSRiBibG9jaworKyAgIGRldGVybWluZXMgdGhlIGFjdHVhbCBhbGxvY2F0aW9uIHN0YXRl LiAgKi8KICsKLStpbnQKLStzZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgKnN0YXJ0X2FkZHIsIFVM T05HRVNUICpzZWFyY2hfc3BhY2VfbGVuLAotKwkgICAgICAgY29uc3QgY2hhciAqcGF0dGVybl9i dWYsIFVMT05HRVNUIHBhdHRlcm5fbGVuLAotKwkgICAgICAgQ09SRV9BRERSICpmb3VuZF9hZGRy KQotK3sKLSsgIC8qIE9mZnNldCBmcm9tIHN0YXJ0IG9mIHRoaXMgaXRlcmF0aW9uIHRvIHRoZSBu ZXh0IGl0ZXJhdGlvbi4gICovCi0rICBVTE9OR0VTVCBuZXh0X2l0ZXJfaW5jcjsKLSsgIGludCBm b3VuZDsKLSsgICAgCi0rICBmb3VuZCA9IHRhcmdldF9zZWFyY2hfbWVtb3J5ICgqc3RhcnRfYWRk ciwgKnNlYXJjaF9zcGFjZV9sZW4sCi0rCQkJCXBhdHRlcm5fYnVmLCBwYXR0ZXJuX2xlbiwgZm91 bmRfYWRkcik7Ci0rICBpZiAoZm91bmQgPD0gMCkKLSsgICAgcmV0dXJuIGZvdW5kOworKyNkZWZp bmUgVFlQRV9OT1RfQUxMT0NBVEVEKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfbm90X2Fs bG9jYXRlZCkKICsKLSsgIC8qIEJlZ2luIG5leHQgaXRlcmF0aW9uIGF0IG9uZSBieXRlIHBhc3Qg dGhpcyBtYXRjaC4gICovCi0rICBuZXh0X2l0ZXJfaW5jciA9ICgqZm91bmRfYWRkciAtICpzdGFy dF9hZGRyKSArIDE7CisrLyogTm90IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVz dCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElmIHRoaXMgZmxhZworKyAgIGlzIHVuc2V0IGFuZCBU WVBFX0FTU09DSUFURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJ ZgorKyAgIHRoaXMgZmxhZyBpcyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBO VUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCisrICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29j aWF0aW9uIHN0YXRlLiAgKi8KICsKLSsgIC8qIEZvciByb2J1c3RuZXNzLCB3ZSBkb24ndCBsZXQg c2VhcmNoX3NwYWNlX2xlbiBnbyAtdmUgaGVyZS4gICovCi0rICBpZiAoKnNlYXJjaF9zcGFjZV9s ZW4gPj0gbmV4dF9pdGVyX2luY3IpCi0rICAgICpzZWFyY2hfc3BhY2VfbGVuIC09IG5leHRfaXRl cl9pbmNyOwotKyAgZWxzZQotKyAgICAqc2VhcmNoX3NwYWNlX2xlbiA9IDA7Ci0rICAqc3RhcnRf YWRkciArPSBuZXh0X2l0ZXJfaW5jcjsKKysjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFURUQodCkJ KFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3RfYXNzb2NpYXRlZCkKICsKLSsgIHJldHVybiBm b3VuZDsKLSt9CisrLyogQWRkcmVzcyBvZiB0aGUgYWN0dWFsIGRhdGEgYXMgZm9yIERXX0FUX2Rh dGFfbG9jYXRpb24uICBJdHMgZHdhcmYgYmxvY2sgbXVzdAorKyAgIG5vdCBiZSBldmFsdWF0ZWQg dW5sZXNzIGJvdGggVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFy ZQorKyAgIGZhbHNlLiAgSWYgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgc2V0IHRoZW4gVFlQ RV9EQVRBX0xPQ0FUSU9OX0FERFIgdmFsdWUKKysgICBpcyB0aGUgYWN0dWFsIGRhdGEgYWRkcmVz cyB2YWx1ZS4gIElmIHVuc2V0IGFuZAorKyAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9D SyBpcyBOVUxMIHRoZW4gdGhlIHZhbHVlIGlzIHRoZSBub3JtYWwKKysgICB2YWx1ZV9yYXdfYWRk cmVzcy4gIElmIHVuc2V0IGFuZCBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgaXMgbm90 IE5VTEwKKysgICB0aGVuIGl0cyBEV0FSRiBibG9jayBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgZGF0 YSBhZGRyZXNzLiAgKi8KICsKLSBzdGF0aWMgdm9pZAotIGZpbmRfY29tbWFuZCAoY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQotIHsKLUBAIC0yNjcsMTIgKzMzMSwxMSBAQCBmaW5kX2NvbW1hbmQg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIHdoaWxlIChzZWFyY2hfc3BhY2VfbGVuID49 IHBhdHRlcm5fbGVuCi0gCSAmJiBmb3VuZF9jb3VudCA8IG1heF9jb3VudCkKLSAgICAgewotLSAg ICAgIC8qIE9mZnNldCBmcm9tIHN0YXJ0IG9mIHRoaXMgaXRlcmF0aW9uIHRvIHRoZSBuZXh0IGl0 ZXJhdGlvbi4gICovCi0tICAgICAgVUxPTkdFU1QgbmV4dF9pdGVyX2luY3I7Ci0gICAgICAgQ09S RV9BRERSIGZvdW5kX2FkZHI7Ci0tICAgICAgaW50IGZvdW5kID0gdGFyZ2V0X3NlYXJjaF9tZW1v cnkgKHN0YXJ0X2FkZHIsIHNlYXJjaF9zcGFjZV9sZW4sCi0tCQkJCQlwYXR0ZXJuX2J1ZiwgcGF0 dGVybl9sZW4sICZmb3VuZF9hZGRyKTsKLSsgICAgICBpbnQgZm91bmQ7Ci0gCi0rICAgICAgZm91 bmQgPSBzZWFyY2hfbWVtb3J5ICgmc3RhcnRfYWRkciwgJnNlYXJjaF9zcGFjZV9sZW4sIHBhdHRl cm5fYnVmLAotKwkJCSAgICAgcGF0dGVybl9sZW4sICZmb3VuZF9hZGRyKTsKLSAgICAgICBpZiAo Zm91bmQgPD0gMCkKLSAJYnJlYWs7CisrI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQURE Uih0KSBcCisrICAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RhdGFfbG9jYXRpb25faXNfYWRk cikKKysKKyAvKiBDb25zdGFudCB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25k aW5nIHR5cGUgaGFzIGEKKyAgKiBjb25zdCBtb2RpZmllci4KKyAgKi8KK0BAIC0zODksMTEgKzQ0 MywxOSBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgICB1bnNpZ25lZCBpbnQgZmxhZ192ZWN0b3IgOiAx OworICAgdW5zaWduZWQgaW50IGZsYWdfc3R1Yl9zdXBwb3J0ZWQgOiAxOworICAgdW5zaWduZWQg aW50IGZsYWdfbm90dGV4dCA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19nbnVfaWZ1bmMgOiAx OworICAgdW5zaWduZWQgaW50IGZsYWdfZml4ZWRfaW5zdGFuY2UgOiAxOworICAgdW5zaWduZWQg aW50IGZsYWdfb2JqZmlsZV9vd25lZCA6IDE7CisgICAvKiBUcnVlIGlmIHRoaXMgdHlwZSB3YXMg ZGVjbGFyZWQgd2l0aCAiY2xhc3MiIHJhdGhlciB0aGFuCisgICAgICAic3RydWN0Ii4gICovCisg ICB1bnNpZ25lZCBpbnQgZmxhZ19kZWNsYXJlZF9jbGFzcyA6IDE7CisrICB1bnNpZ25lZCBpbnQg ZmxhZ19kaXNjYXJkYWJsZSA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZV9h Z2UgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZHluYW1pYyA6IDE7CisrICB1bnNpZ25lZCBp bnQgZmxhZ19yYW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50IDogMTsKKysgIHVuc2lnbmVkIGludCBm bGFnX25vdF9hbGxvY2F0ZWQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfbm90X2Fzc29jaWF0 ZWQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZGF0YV9sb2NhdGlvbl9pc19hZGRyIDogMTsK ICAKLUBAIC0yODAsMTYgKzM0Myw2IEBAIGZpbmRfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQotICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIlxuIik7Ci0gICAgICAgKytmb3VuZF9j b3VudDsKLSAgICAgICBsYXN0X2ZvdW5kX2FkZHIgPSBmb3VuZF9hZGRyOwotLQotLSAgICAgIC8q IEJlZ2luIG5leHQgaXRlcmF0aW9uIGF0IG9uZSBieXRlIHBhc3QgdGhpcyBtYXRjaC4gICovCi0t ICAgICAgbmV4dF9pdGVyX2luY3IgPSAoZm91bmRfYWRkciAtIHN0YXJ0X2FkZHIpICsgMTsKLS0K LS0gICAgICAvKiBGb3Igcm9idXN0bmVzcywgd2UgZG9uJ3QgbGV0IHNlYXJjaF9zcGFjZV9sZW4g Z28gLXZlIGhlcmUuICAqLwotLSAgICAgIGlmIChzZWFyY2hfc3BhY2VfbGVuID49IG5leHRfaXRl cl9pbmNyKQotLQlzZWFyY2hfc3BhY2VfbGVuIC09IG5leHRfaXRlcl9pbmNyOwotLSAgICAgIGVs c2UKLS0Jc2VhcmNoX3NwYWNlX2xlbiA9IDA7Ci0tICAgICAgc3RhcnRfYWRkciArPSBuZXh0X2l0 ZXJfaW5jcjsKLSAgICAgfQorICAgLyogQSBkaXNjcmltaW5hbnQgdGVsbGluZyB1cyB3aGljaCBm aWVsZCBvZiB0aGUgdHlwZV9zcGVjaWZpYyB1bmlvbgorICAgICAgaXMgYmVpbmcgdXNlZCBmb3Ig dGhpcyB0eXBlLCBpZiBhbnkuICAqLworQEAgLTQ2Nyw2ICs1MjksMjAgQEAgc3RydWN0IG1haW5f dHlwZQogIAotICAgLyogUmVjb3JkIGFuZCBwcmludCB0aGUgcmVzdWx0cy4gICovCi1kaWZmIC0t Z2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IGUxMTdhOGUuLjZiZDM3 MjQgMTAwNjQ0Ci0tLS0gYS9nZGIvZmluZHZhci5jCi0rKysgYi9nZGIvZmluZHZhci5jCi1AQCAt MzUsNiArMzUsNyBAQAotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSAjaW5jbHVkZSAiYmxvY2su aCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgICBz dHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CiAgCi0gLyogQmFzaWMgYnl0ZS1zd2FwcGluZyByb3V0 aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVybiBhCi0gICAgaG9zdC1mb3JtYXQg aW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2VyIGF0IEFERFIgd2hpY2ggaXMKLUBA IC0zOTcsMjcgKzM5OCwxNiBAQCBzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAoc3RydWN0IHN5bWJv bCAqc3ltKQotIC8qIEdpdmVuIGEgc3RydWN0IHN5bWJvbCBmb3IgYSB2YXJpYWJsZSwKLSAgICBh bmQgYSBzdGFjayBmcmFtZSBpZCwgcmVhZCB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlCi0gICAg YW5kIHJldHVybiBhIChwb2ludGVyIHRvIGEpIHN0cnVjdCB2YWx1ZSBjb250YWluaW5nIHRoZSB2 YWx1ZS4gCi0tICAgSWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSBmb3VuZCwgcmV0dXJuIGEgemVy byBwb2ludGVyLiAgKi8KLSsgICBJZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1 cm4gYSB6ZXJvIHBvaW50ZXIuCi0rICAgV2UgaGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRyZXNz IG9mIHRoZSB2YXJpYWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QKLSsgICB2YWx1ZSB0byBy ZXR1cm4gYXMgaXRzIHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNT IHBvc3NpYmx5Ci0rICAgdXNlZCBieSBpdHMgdHlwZS4gICovCisrICAvKiBGb3IgRFdfQVRfZGF0 YV9sb2NhdGlvbi4gICovCisrICB1bmlvbgorKyAgICB7CisrICAgICAgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKKysgICAgICBDT1JFX0FERFIgYWRkcjsKKysgICAg fQorKyAgZGF0YV9sb2NhdGlvbjsKKysKKysgIC8qIEZvciBEV19BVF9hbGxvY2F0ZWQuICAqLwor KyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICphbGxvY2F0ZWQ7CisrCisrICAvKiBGb3Ig RFdfQVRfYXNzb2NpYXRlZC4gICovCisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFz c29jaWF0ZWQ7CisrCisgICAvKiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNj cmlwdGlvbiBvZiBlYWNoIGZpZWxkLgorICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5 cGVzLCB0aGVyZSBpcyBvbmUgImZpZWxkIiwKKyAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFp biB0eXBlIG9mIHRoZSBzZXQgb3IgYXJyYXkuCitAQCAtNTQwLDEzICs2MTYsMzQgQEAgc3RydWN0 IG1haW5fdHlwZQogIAotIHN0cnVjdCB2YWx1ZSAqCi0gcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLS0gIHN0cnVjdCB2YWx1 ZSAqdjsKLSAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7Ci0gICBDT1JF X0FERFIgYWRkcjsKLS0gIGludCBsZW47CisgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMKKyAgICAg eworKyAgICAgIHN0cnVjdAorKwl7CisrCSAgdW5pb24KKysJICAgIHsKKysJICAgICAgTE9OR0VT VCBjb25zdGFudDsKKysJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9i bG9jazsKKysJICAgICAgc3RydWN0CisrCQl7CisrCQkgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9i YXRvbiAqbG9jbGlzdDsKKysJCSAgc3RydWN0IHR5cGUgKnR5cGU7CisrCQl9CisrCSAgICAgIGR3 YXJmX2xvY2xpc3Q7CisrCSAgICB9CisrCSAgdTsKKysJICBlbnVtIHJhbmdlX2JvdW5kX2tpbmQK KysJICAgIHsKKysJICAgICAgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVCwKKysJICAgICAgUkFO R0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSywKKysJICAgICAgUkFOR0VfQk9VTkRfS0lORF9EV0FS Rl9MT0NMSVNUCisrCSAgICB9CisrCSAga2luZDsKKysJfQorICAgICAgIC8qIExvdyBib3VuZCBv ZiByYW5nZS4gKi8KIC0KLS0gIGlmIChTWU1CT0xfQ0xBU1MgKHZhcikgPT0gTE9DX0NPTVBVVEVE Ci0tICAgICAgfHwgU1lNQk9MX0NMQVNTICh2YXIpID09IExPQ19SRUdJU1RFUikKLS0gICAgLyog VGhlc2UgY2FzZXMgZG8gbm90IHVzZSBWLiAgKi8KLS0gICAgdiA9IE5VTEw7Ci0tICBlbHNlCi0t ICAgIHsKLS0gICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotLSAgICAgIFZBTFVFX0xW QUwgKHYpID0gbHZhbF9tZW1vcnk7CS8qIFRoZSBtb3N0IGxpa2VseSBwb3NzaWJpbGl0eS4gICov Ci0tICAgIH0KKy0gICAgICBMT05HRVNUIGxvdzsKIC0KLS0gIGxlbiA9IFRZUEVfTEVOR1RIICh0 eXBlKTsKKysgICAgICBsb3csCisgICAgICAgLyogSGlnaCBib3VuZCBvZiByYW5nZS4gKi8KKy0K Ky0gICAgICBMT05HRVNUIGhpZ2g7CisrICAgICAgaGlnaCwKKysgICAgICAvKiBCeXRlIHN0cmlk ZSBvZiByYW5nZS4gKi8KKysgICAgICBieXRlX3N0cmlkZTsKICAKLSAgIGlmIChzeW1ib2xfcmVh ZF9uZWVkc19mcmFtZSAodmFyKSkKLSAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAgLTQyNSwz MiArNDE1LDQwIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKLSAgIHN3aXRjaCAoU1lNQk9MX0NMQVNTICh2YXIpKQotICAgICB7 Ci0gICAgIGNhc2UgTE9DX0NPTlNUOgotLSAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBp biB0YXJnZXQgZm9ybWF0LiAgKi8KLS0gICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVf Y29udGVudHNfcmF3ICh2KSwgbGVuLAotLQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90 eXBlX2FyY2ggKHR5cGUpKSwKLS0JCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7 Ci0tICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICByZXR1cm4gdjsKLSsg ICAgICB7Ci0rCS8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8K LSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKwlWQUxVRV9MVkFM ICh2KSA9IG5vdF9sdmFsOwotKwlzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNf cmF3ICh2KSwgVFlQRV9MRU5HVEggKHR5cGUpLAotKwkJCSAgICAgIGdkYmFyY2hfYnl0ZV9vcmRl ciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpLAotKwkJCSAgICAgIChMT05HRVNUKSBTWU1CT0xfVkFM VUUgKHZhcikpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9CisgICAgICAgLyogRmxhZ3MgaW5kaWNh dGluZyB3aGV0aGVyIHRoZSB2YWx1ZXMgb2YgbG93IGFuZCBoaWdoIGFyZQorICAgICAgICAgIHZh bGlkLiAgV2hlbiB0cnVlLCB0aGUgcmVzcGVjdGl2ZSByYW5nZSB2YWx1ZSBpcworQEAgLTg4OSw5 ICs5ODYsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlw ZSAqKTsKKyAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5w b2ludGVyX3R5cGUKKyAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlz dHlwZSktPnJlZmVyZW5jZV90eXBlCisgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhp c3R5cGUpLT5jaGFpbgorLS8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYgdHlw ZSwgeW91IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmLgorLSAgIEJ1dCBjaGVja190eXBlZGVm IGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRiB0eXBlLAorLSAgIHNvIHlv dSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92 YWx1ZQorKy8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYsIEFSUkFZIG9yIFNU UklORyB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsCisrICAgY2hlY2tfdHlwZWRlZi4gIEJ1dCBjaGVj a190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRgorKyAgIHR5 cGUsIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBh bGxvY2F0ZV92YWx1ZQorICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxV RV9UWVBFIChYKSkgaXMgc2FmZS4gICovCisgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkg KHRoaXN0eXBlKS0+bGVuZ3RoCisgLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9D T0RFX1RZUEVERUYsIHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCitAQCAtODk5LDExICs5OTYsMTYg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7Cisg I2RlZmluZSBUWVBFX0NPREUodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29k ZQorICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlw ZSktPm5maWVsZHMKKyAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQ RSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMKKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElP Tl9EV0FSRl9CTE9DSyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9s b2NhdGlvbi5kd2FyZl9ibG9jaworKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIodGhp c3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmRhdGFfbG9jYXRpb24uYWRkcgorKyNk ZWZpbmUgVFlQRV9BTExPQ0FURUQodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSkt PmFsbG9jYXRlZAorKyNkZWZpbmUgVFlQRV9BU1NPQ0lBVEVEKHRoaXN0eXBlKSBUWVBFX01BSU5f VFlQRSAodGhpc3R5cGUpLT5hc3NvY2lhdGVkCiAgCi0gICAgIGNhc2UgTE9DX0xBQkVMOgotLSAg ICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KLS0gICAg ICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCi0tCXsKLS0JICBDT1JFX0FERFIgYWRkcgotLQkgICAg PSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAot LQkJCQkJU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsKLS0JICBzdG9yZV90eXBlZF9hZGRyZXNz ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLCBhZGRyKTsKLS0JfQotLSAgICAgIGVsc2UK LS0Jc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKLS0J CQkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSk7Ci0tICAgICAgVkFMVUVfTFZBTCAo dikgPSBub3RfbHZhbDsKLS0gICAgICByZXR1cm4gdjsKLSsgICAgICB7Ci0rCS8qIFB1dCB0aGUg Y29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KLSsJc3RydWN0IHZhbHVlICp2ID0g YWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotKwlp ZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCi0rCSAgewotKwkgICAgQ09SRV9BRERSIGFkZHIKLSsJICAg ICAgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIp LAotKwkJCQkJICBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotKwkgICAgc3RvcmVfdHlwZWRf YWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwgYWRkcik7Ci0rCSAgfQotKwll bHNlCi0rCSAgc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlw ZSwKLSsJCQkJU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHZhcikpOwotKwlyZXR1cm4gdjsKLSsgICAg ICB9CisgI2RlZmluZSBUWVBFX0lOREVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBl LCAwKQorICNkZWZpbmUgVFlQRV9SQU5HRV9EQVRBKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0 aGlzdHlwZSktPmZsZHNfYm5kcy5ib3VuZHMKKy0jZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdl X3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93CistI2RlZmluZSBUWVBFX0hJ R0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoCisr I2RlZmluZSBUWVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2Vf dHlwZSktPmxvdy51LmNvbnN0YW50CisrI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlw ZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoLnUuY29uc3RhbnQKKysjZGVmaW5l IFRZUEVfQllURV9TVFJJREUocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUp LT5ieXRlX3N0cmlkZS51LmNvbnN0YW50CisgI2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklO RUQocmFuZ2VfdHlwZSkgXAorICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3Vu ZGVmaW5lZAorICNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBc CitAQCAtOTIwLDcgKzEwMjIsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydWN0IHR5cGUgKik7CisgICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUo KGFycmF5dHlwZSkpKSkKICAKLSAgICAgY2FzZSBMT0NfQ09OU1RfQllURVM6Ci0gICAgICAgewot LQltZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFy KSwgbGVuKTsKLSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotIAlW QUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotKwltZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAo diksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwKLSsJCVRZUEVfTEVOR1RIICh0eXBlKSk7Ci0g CXJldHVybiB2OwotICAgICAgIH0KKyAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfVkFM VUUoYXJyYXl0eXBlKSBcCistICAgKFRZUEVfTE9XX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJy YXl0eXBlKSkpKQorKyAgVFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBl KSkKKysKKysvKiBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkp IHdpdGggYSBmYWxsYmFjayB0byB0aGUKKysgICBlbGVtZW50IHNpemUgaWYgbm8gc3BlY2lmaWMg c3RyaWRlIHZhbHVlIGlzIGtub3duLiAgKi8KKysjZGVmaW5lIFRZUEVfQVJSQVlfQllURV9TVFJJ REVfVkFMVUUoYXJyYXl0eXBlKQkJXAorKyAgKFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhf VFlQRSAoYXJyYXl0eXBlKSkgPT0gMAlcCisrICAgPyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRf VFlQRSAoYXJyYXl0eXBlKSkJCVwKKysgICA6IFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhf VFlQRSAoYXJyYXl0eXBlKSkpCiAgCi1AQCAtNDkyLDEyICs0OTAsMjMgQEAgcmVhZF92YXJfdmFs dWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAg IGJyZWFrOworIC8qIEMrKyAqLwogIAotICAgICBjYXNlIExPQ19CTE9DSzoKLS0gICAgICBpZiAo b3ZlcmxheV9kZWJ1Z2dpbmcpCi0tCXNldF92YWx1ZV9hZGRyZXNzICh2LCBzeW1ib2xfb3Zlcmxh eWVkX2FkZHJlc3MKLS0JICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSks IFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSkpOwotLSAgICAgIGVsc2UKLS0Jc2V0X3ZhbHVlX2Fk ZHJlc3MgKHYsIEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpKTsKLS0gICAg ICByZXR1cm4gdjsKLSsgICAgICB7Ci0rICAgICAgICBDT1JFX0FERFIgYWRkcjsKLSsJc3RydWN0 IHZhbHVlICp2OwotKwotKwlpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCi0rCSAgYWRkciA9IHN5bWJv bF9vdmVybGF5ZWRfYWRkcmVzcwotKwkgICAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFM VUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotKwllbHNlCi0rCSAgYWRkciA9 IEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpOwotKwkvKiBBRERSIGlzIHNl dCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENIRUNLX1RZUEVERUYgZm9yCi0rCSAgIERXX09Q X3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLwotKwlvYmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOwot Kwl2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKwlWQUxVRV9MVkFMICh2KSA9IGx2YWxfbWVt b3J5OwotKwlzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7Ci0rCXJldHVybiB2OwotKyAgICAg IH0KK0BAIC0xMTQxLDYgKzEyNTAsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQorICAgICAgKCop ICgpIGNhbiBzZXJ2ZXIgYXMgYSBnZW5lcmljIGZ1bmN0aW9uIHBvaW50ZXIuICAqLworICAgc3Ry dWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19wdHI7CiAgCi0gICAgIGNhc2UgTE9DX1JFR0lTVEVSOgot ICAgICBjYXNlIExPQ19SRUdQQVJNX0FERFI6Ci1AQCAtNTE2LDcgKzUyNSw2IEBAIHJlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAJ ICAgICAgZXJyb3IgKF8oIlZhbHVlIG9mIHJlZ2lzdGVyIHZhcmlhYmxlIG5vdCBhdmFpbGFibGUu IikpOworKyAgLyogYGZ1bmN0aW9uIHJldHVybmluZyBwb2ludGVyIHRvIGZ1bmN0aW9uIChyZXR1 cm5pbmcgdm9pZCknIHR5cGUuCisrICAgICBUaGUgZmluYWwgdm9pZCByZXR1cm4gdHlwZSBpcyBu b3Qgc2lnbmlmaWNhbnQgZm9yIGl0LiAgKi8KKysgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNf ZnVuYzsKKysKICAKLSAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwpOwotLQkg ICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSAJICB9Ci0gCWVsc2UKLSAJICB7Ci1A QCAtNTU5LDE4ICs1NjcsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAgIGJyZWFrOworICAgLyogU3BlY2lhbC1w dXJwb3NlIHR5cGVzLiAgKi8KICAKLSAgICAgY2FzZSBMT0NfT1BUSU1JWkVEX09VVDoKLS0gICAg ICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotLSAgICAgIHNldF92YWx1ZV9vcHRpbWl6ZWRf b3V0ICh2LCAxKTsKLS0gICAgICByZXR1cm4gdjsKLSsgICAgICB7Ci0rICAgICAgICBzdHJ1Y3Qg dmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0rCi0rCVZBTFVFX0xWQUwgKHYpID0g bm90X2x2YWw7Ci0rCXNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2LCAxKTsKLSsJcmV0dXJuIHY7 Ci0rICAgICAgfQorQEAgLTExODEsNiArMTI5NCw4IEBAIHN0cnVjdCBvYmpmaWxlX3R5cGUKICAK LSAgICAgZGVmYXVsdDoKLSAgICAgICBlcnJvciAoXygiQ2Fubm90IGxvb2sgdXAgdmFsdWUgb2Yg YSBib3RjaGVkIHN5bWJvbC4iKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KKyAgIC8qIFR5cGVz IHVzZWQgZm9yIHN5bWJvbHMgd2l0aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCisgICBzdHJ1 Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X3N5bWJvbDsKKysgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Rl eHRfZ251X2lmdW5jX3N5bWJvbDsKKysgIHN0cnVjdCB0eXBlICpub2RlYnVnX2dvdF9wbHRfc3lt Ym9sOworICAgc3RydWN0IHR5cGUgKm5vZGVidWdfZGF0YV9zeW1ib2w7CisgICBzdHJ1Y3QgdHlw ZSAqbm9kZWJ1Z191bmtub3duX3N5bWJvbDsKKyAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Rsc19z eW1ib2w7CitAQCAtMTMyOCw2ICsxNDQzLDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRl X2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCisgCQkJCSAgICAgICBz dHJ1Y3QgdHlwZSAqKTsKKyBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90 eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7CiAgCi0tICBzZXRfdmFsdWVfYWRkcmVzcyAo diwgYWRkcik7Ci0tICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7Ci0tICByZXR1cm4gdjsKLSsgIHsK LSsgICAgc3RydWN0IHZhbHVlICp2OworK2V4dGVybiBDT1JFX0FERFIgdHlwZV9yYW5nZV9hbnlf ZmllbGRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJCQkJCWludCBmaWVs ZG5vKTsKICsKLSsgICAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBD SEVDS19UWVBFREVGIGZvcgotKyAgICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTLiAgKi8K LSsgICAgb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRyKTsKLSsgICAgdiA9IGFsbG9jYXRlX3ZhbHVl ICh0eXBlKTsKLSsgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSsgICAgc2V0X3Zh bHVlX2FkZHJlc3MgKHYsIGFkZHIpOworK2V4dGVybiBpbnQgdHlwZV9yYW5nZV9oaWdoX2JvdW5k X2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7CiArCi0rICAgIHNldF92YWx1ZV9s YXp5ICh2LCAxKTsKKytleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291bnRfYm91bmRfaW50ZXJuYWwg KHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKICsKLSsgICAgcmV0dXJuIHY7Ci0rICB9Ci0gfQor K2V4dGVybiBDT1JFX0FERFIgdHlwZV9yYW5nZV9ieXRlX3N0cmlkZV9pbnRlcm5hbCAoc3RydWN0 IHR5cGUgKnJhbmdlX3R5cGUsCisrCQkJCQkJICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlKTsK KysKKytleHRlcm4gdm9pZCBmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrCisg ZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB0eXBlICosCisgCQkJCQlzdHJ1Y3QgdHlwZSAqKTsKKyBleHRlcm4gc3RydWN0IHR5cGUg Kmxvb2t1cF9zdHJpbmdfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOworQEAg LTEzNzAsNiArMTQ5Nyw4IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKLSAvKiBJbnN0YWxsIGRlZmF1bHQgYXR0cmlidXRl cyBmb3IgcmVnaXN0ZXIgdmFsdWVzLiAgKi8KLUBAIC02MDcsMTAgKzYzMCwxMSBAQCBzdHJ1Y3Qg dmFsdWUgKgotIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVn bnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotLSAgc3RydWN0IHR5cGUgKnR5cGUxID0g Y2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0gICBzdHJ1Y3QgdmFsdWUgKnY7CisgZXh0ZXJuIGludCBp c191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKICAKLS0g IGlmIChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkp Ci0rICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisrZXh0ZXJuIHZvaWQgdHlwZV9tYXJr X3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKTsKICsKLSsgIGlmIChnZGJhcmNoX2NvbnZlcnRfcmVn aXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlKSkKLSAgICAgewotICAgICAgIC8qIFRoZSBJ U0EvQUJJIG5lZWQgdG8gc29tZXRoaW5nIHdlaXJkIHdoZW4gb2J0YWluaW5nIHRoZQotICAgICAg ICAgIHNwZWNpZmllZCB2YWx1ZSBmcm9tIHRoaXMgcmVnaXN0ZXIuICBJdCBtaWdodCBuZWVkIHRv Ci1AQCAtNjI0LDcgKzY0OCw3IEBAIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0 eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAgICAgVkFMVUVf RlJBTUVfSUQgKHYpID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7Ci0gICAgICAgVkFMVUVfUkVHTlVN ICh2KSA9IHJlZ251bTsKLSAgICAgICBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJhcmNo LAotLQkJCQkgZnJhbWUsIHJlZ251bSwgdHlwZTEsIHZhbHVlX2NvbnRlbnRzX3JhdyAodikpOwot KwkJCQkgZnJhbWUsIHJlZ251bSwgdHlwZSwgdmFsdWVfY29udGVudHNfcmF3ICh2KSk7Ci0gICAg IH0KLSAgIGVsc2UKLSAgICAgewotZGlmZiAtLWdpdCBhL2dkYi9mcnYtbGludXgtdGRlcC5jIGIv Z2RiL2Zydi1saW51eC10ZGVwLmMKLWluZGV4IGMwNTFhNGQuLjViMDcwNjMgMTAwNjQ0Ci0tLS0g YS9nZGIvZnJ2LWxpbnV4LXRkZXAuYwotKysrIGIvZ2RiL2Zydi1saW51eC10ZGVwLmMKLUBAIC0z Miw2ICszMiw3IEBACi0gI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgotICNpbmNsdWRlICJyZWdz ZXQuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgi CisgLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAqLworIAorICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2 KSAoKGJ2KS0+cmFua1swXSkKK0BAIC0xNDMyLDEwICsxNTYxLDExIEBAIGV4dGVybiB2b2lkIG1h aW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKKyAKKyBleHRlcm4gaHRhYl90IGNy ZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIAorLWV4 dGVybiBzdHJ1Y3QgdHlwZSAqY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCistCQkJCQkgc3RydWN0IHR5cGUgKnR5cGUsCisrZXh0ZXJuIHN0cnVjdCB0eXBlICpj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAJCQkJCSBodGFiX3QgY29w aWVkX3R5cGVzKTsKKyAKKyBleHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZSAoY29uc3Qgc3Ry dWN0IHR5cGUgKnR5cGUpOwogIAotIC8qIERlZmluZSB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGFu IEZSLVYgaW5zdHJ1Y3Rpb24uICAqLwotIHN0YXRpYyBjb25zdCBpbnQgZnJ2X2luc3RyX3NpemUg PSA0OwotQEAgLTQ4Niw3ICs0ODcsMjEgQEAgZnJ2X2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2Vj dGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICByZXR1cm4gTlVMTDsKKytleHRlcm4g dm9pZCBmcmVlX2FsbF90eXBlcyAodm9pZCk7CisrCisgI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8K K2RpZmYgLS1naXQgYS9nZGIvaTM4Ni1saW51eC1uYXQuYyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5j CitpbmRleCA0ZmNlMWFjLi4xNDRhODk5IDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbGludXgtbmF0 LmMKKysrKyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCitAQCAtNzQ3LDYgKzc0NywyMSBAQCBpMzg2 X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorICAgICB9CiAgfQog IAotLQwKLStzdGF0aWMgQ09SRV9BRERSCi0rZnJ2X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkJICAgICAgQ09SRV9BRERSIGFk ZHIsCi0rCQkJCSAgICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKQotK3sKLSsgIENPUkVfQURE UiBwYyA9IGZydl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwgdGFy Zyk7Ci0rICBDT1JFX0FERFIgcmVzb2x2ZWQ7CisrLyogU2VlIGkzODZfZHJfbG93X3R5cGUuZGV0 YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sCisrICAg b3IgaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSByZWdp c3RlciBjYWNoZQorKyAgIChpMzg2X2xpbnV4X2RyKS4gICovCiArCi0rICByZXNvbHZlZCA9IGxp bnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKGdkYmFyY2gsIGFkZHIsIHBjKTsKLSsgIGlm IChyZXNvbHZlZCAhPSBwYykKLSsgICAgcGMgPSBmcnZfY29udmVydF9mcm9tX2Z1bmNfcHRyX2Fk ZHIgKGdkYmFyY2gsIHJlc29sdmVkLCB0YXJnKTsKKytzdGF0aWMgdm9pZAorK2kzODZfbGludXhf ZHJfZGV0YWNoICh2b2lkKQorK3sKKysgIGludCByZWdudW07CiArCi0rICByZXR1cm4gcGM7Cisr ICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgRFJfQ09OVFJPTCwgMCk7CisrICBp Mzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAofjBVTCk7CisrICBmb3IgKHJlZ251bSA9IERSX0ZJ UlNUQUREUjsgcmVnbnVtIDw9IERSX0xBU1RBRERSOyByZWdudW0rKykKKysgICAgaTM4Nl9saW51 eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIHJlZ251bSwgMCk7CiArfQogKwogIHN0YXRpYyB2b2lk Ci0gZnJ2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoKQorIGkzODZfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCiAg ewotQEAgLTQ5NCw2ICs1MDksMTAgQEAgZnJ2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJj aF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgZnJhbWVfdW53aW5kX2Fw cGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJmZydl9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQp OyAKLSAgIHNldF9nZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoZ2RiYXJjaCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJ2X2xpbnV4X3JlZ3NldF9m cm9tX2NvcmVfc2VjdGlvbik7Ci0rCi0rICBpZiAoZnJ2X2FiaSAoZ2RiYXJjaCkgPT0gRlJWX0FC SV9GRFBJQykKLSsgICAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdk YmFyY2gsCi0rCQkJCQkgIGZydl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0g fQorQEAgLTk3Niw2ICs5OTEsNyBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkK KyAgIGkzODZfZHJfbG93LnJlc2V0X2FkZHIgPSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7Cisg ICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzOworICAg aTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXM7Cisr ICBpMzg2X2RyX2xvdy5kZXRhY2ggPSBpMzg2X2xpbnV4X2RyX2RldGFjaDsKKyAgIGkzODZfc2V0 X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAoNCk7CiAgCi0gc3RhdGljIGVudW0gZ2RiX29zYWJpCi1k aWZmIC0tZ2l0IGEvZ2RiL2Zydi10ZGVwLmMgYi9nZGIvZnJ2LXRkZXAuYwotaW5kZXggYTM4ZWM4 ZS4uYjg4NTZhOSAxMDA2NDQKLS0tLSBhL2dkYi9mcnYtdGRlcC5jCi0rKysgYi9nZGIvZnJ2LXRk ZXAuYwotQEAgLTExNjksNyArMTE2OSw3IEBAIGZpbmRfZnVuY19kZXNjciAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIENPUkVfQUREUiBlbnRyeV9wb2ludCkKLSAgIHJldHVybiBkZXNjcjsKKyAg IC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHB0cmFjZSByZXN1bWUgbWV0aG9kLiAgKi8KK2RpZmYg LS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCitpbmRleCBlYWEzNjQ0Li4w OTIxYzdlIDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbmF0LmMKKysrKyBiL2dkYi9pMzg2LW5hdC5j CitAQCAtNTMzLDYgKzUzMywxNyBAQCBpMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIg YWRkciwgaW50IGxlbiwgaW50IHR5cGUsCisgICByZXR1cm4gcmV0dmFsOwogIH0KICAKLS1zdGF0 aWMgQ09SRV9BRERSCi0rQ09SRV9BRERSCi0gZnJ2X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRy IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKLSB7Ci1kaWZmIC0t Z2l0IGEvZ2RiL2Zydi10ZGVwLmggYi9nZGIvZnJ2LXRkZXAuaAotaW5kZXggMjVjYzljNC4uOTVk NWZlNSAxMDA2NDQKLS0tLSBhL2dkYi9mcnYtdGRlcC5oCi0rKysgYi9nZGIvZnJ2LXRkZXAuaAot QEAgLTExOCwzICsxMTgsNiBAQCBDT1JFX0FERFIgZnJ2X2ZldGNoX29iamZpbGVfbGlua19tYXAg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSBzdHJ1Y3QgdGFyZ2V0X3NvX29wczsKLSBleHRl cm4gc3RydWN0IHRhcmdldF9zb19vcHMgZnJ2X3NvX29wczsKLSAKLStDT1JFX0FERFIgZnJ2X2Nv bnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkJ CSAgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKLWRp ZmYgLS1naXQgYS9nZGIvZ2RiaW5pdC5pbiBiL2dkYi9nZGJpbml0LmluCi1pbmRleCBmZmI3ZjUz Li5hMmU3ZTk0IDEwMDY0NAotLS0tIGEvZ2RiL2dkYmluaXQuaW4KLSsrKyBiL2dkYi9nZGJpbml0 LmluCi1AQCAtMSw1ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBm b3IgZGVidWdnaW5nIGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBhbmQg InJlcXVpcmUiIGNvbW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRo Ci0rZ2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCi0rZ2RiLnB5 dGhvbmxpYmRpciA9IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGlyICsg Jy9nZGInXQotK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKLStlbmQKLStzb3VyY2Ug QHNyY2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKKysvKiBTZWUgdGFyZ2V0X2RldGFj aF93YXRjaHBvaW50cy4gICovCiArCi0gc2V0IGNvbXBsYWludHMgMQotIAotIGIgaW50ZXJuYWxf ZXJyb3IKLWRpZmYgLS1naXQgYS9nZGIvZ2RidGhyZWFkLmggYi9nZGIvZ2RidGhyZWFkLmgKLWlu ZGV4IGNkMjRlYWYuLjExOWFmN2QgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RidGhyZWFkLmgKLSsrKyBi L2dkYi9nZGJ0aHJlYWQuaAotQEAgLTE4NSw2ICsxODUsMTAgQEAgc3RydWN0IHRocmVhZF9pbmZv Ci0gICAvKiBUcnVlIGlmIHRoaXMgdGhyZWFkIGhhcyBiZWVuIGV4cGxpY2l0bHkgcmVxdWVzdGVk IHRvIHN0b3AuICAqLwotICAgaW50IHN0b3BfcmVxdWVzdGVkOwotIAotKyAgLyogVGhlIGluaXRp YXRpbmcgZnJhbWUgb2YgYSBuZXh0aW5nIG9wZXJhdGlvbiwgdXNlZCBmb3IgZGVjaWRpbmcKLSsg ICAgIHdoaWNoIGV4Y2VwdGlvbnMgdG8gaW50ZXJjZXB0LiAgKi8KLSsgIHN0cnVjdCBmcmFtZV9p ZCBpbml0aWF0aW5nX2ZyYW1lOworK3N0YXRpYyBpbnQKKytpMzg2X2RldGFjaF93YXRjaHBvaW50 cyAodm9pZCkKKyt7CisrICBpZiAoaTM4Nl9kcl9sb3cuZGV0YWNoKQorKyAgICBpMzg2X2RyX2xv dy5kZXRhY2ggKCk7CiArCi0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZl Y3RvciBpbXBsZW1lbnRhdGlvbi4gICovCi0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAq cHJpdmF0ZTsKLSAKLUBAIC0yNTcsNiArMjYxLDkgQEAgZXh0ZXJuIHN0cnVjdCB0aHJlYWRfaW5m byAqYW55X2xpdmVfdGhyZWFkX29mX3Byb2Nlc3MgKGludCBwaWQpOwotIC8qIENoYW5nZSB0aGUg cHRpZCBvZiB0aHJlYWQgT0xEX1BUSUQgdG8gTkVXX1BUSUQuICAqLwotIHZvaWQgdGhyZWFkX2No YW5nZV9wdGlkIChwdGlkX3Qgb2xkX3B0aWQsIHB0aWRfdCBuZXdfcHRpZCk7Ci0gCi0rLyogUHJ1 bmUgZGVhZCB0aHJlYWRzIGZyb20gdGhlIGxpc3Qgb2YgdGhyZWFkcy4gICovCi0rZXh0ZXJuIHZv aWQgcHJ1bmVfdGhyZWFkcyAodm9pZCk7CisrICByZXR1cm4gMDsKKyt9CiArCi0gLyogSXRlcmF0 b3IgZnVuY3Rpb24gdG8gY2FsbCBhIHVzZXItcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24KLSAg ICBvbmNlIGZvciBlYWNoIGtub3duIHRocmVhZC4gICovCi0gdHlwZWRlZiBpbnQgKCp0aHJlYWRf Y2FsbGJhY2tfZnVuYykgKHN0cnVjdCB0aHJlYWRfaW5mbyAqLCB2b2lkICopOwotZGlmZiAtLWdp dCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2RiL2dkYnR5cGVzLmMKLWluZGV4IDQ2ODQ2YzQuLjk1YmNj YTQgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RidHlwZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBA IC0zOSw2ICszOSw5IEBACi0gI2luY2x1ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJnZGJfYXNz ZXJ0LmgiCi0gI2luY2x1ZGUgImhhc2h0YWIuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSsj aW5jbHVkZSAiZHdhcmYyZXhwci5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKKyAvKiBS ZXR1cm4gbm9uLXplcm8gaWYgd2UgY2FuIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB0aGF0IHN0YXJ0 cyBhdAorICAgIGFkZHJlc3MgQUREUiBhbmQgd2hvc2UgbGVuZ3RoIGlzIExFTiBieXRlcy4gICov CiAgCi0gLyogRmxvYXRmb3JtYXQgcGFpcnMuICAqLwotQEAgLTExOSw2ICsxMjIsMjQgQEAgc3Rh dGljIHZvaWQgcHJpbnRfYXJnX3R5cGVzIChzdHJ1Y3QgZmllbGQgKiwgaW50LCBpbnQpOwotIHN0 YXRpYyB2b2lkIGR1bXBfZm5fZmllbGRsaXN0cyAoc3RydWN0IHR5cGUgKiwgaW50KTsKLSBzdGF0 aWMgdm9pZCBwcmludF9jcGx1c19zdHVmZiAoc3RydWN0IHR5cGUgKiwgaW50KTsKK0BAIC02ODUs NiArNjk2LDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQor ICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNz OworICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50Owor ICAgdC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OworKyAg dC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7CisgICB0 LT50b19pbnNlcnRfaHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7Cisg ICB0LT50b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7 CisgfQorZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKK2luZGV4 IDczMTdlN2QuLmVhOTE0YTUgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1uYXQuaAorKysrIGIvZ2Ri L2kzODYtbmF0LmgKK0BAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRj aHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKik7CisgICAgICAgdW5zZXRfc3RhdHVzICAgICAg ICAgICAgIC0tIHVuc2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKKyAJCQkJICBz dGF0dXMgKERSNikgcmVnaXN0ZXIgZm9yIGFsbCBMV1BzCiAgCi0rLyogQSByZWZlcmVuY2UgY291 bnQgc3RydWN0dXJlIGZvciB0aGUgdHlwZSByZWZlcmVuY2UgY291bnQgbWFwLiAgRWFjaAotKyAg IHR5cGUgaW4gYSBoaWVyYXJjaHkgb2YgdHlwZXMgaXMgbWFwcGVkIHRvIHRoZSBzYW1lIHJlZmVy ZW5jZQotKyAgIGNvdW50LiAgKi8KLStzdHJ1Y3QgdHlwZV9yZWZjX2VudHJ5Ci0rewotKyAgLyog T25lIHR5cGUgaW4gdGhlIGhpZXJhcmNoeS4gIEVhY2ggdHlwZSBpbiB0aGUgaGllcmFyY2h5IGdl dHMgaXRzCi0rICAgICBvd24gc2xvdC4gICovCi0rICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsKLSsg IC8qIEEgcG9pbnRlciB0byB0aGUgc2hhcmVkIHJlZmVyZW5jZSBjb3VudC4gICovCi0rICBpbnQg KnJlZmM7Ci0rfTsKLSsKLSsvKiBUaGUgaGFzaCB0YWJsZSBob2xkaW5nIGFsbCBkaXNjYXJkYWJs ZSBgc3RydWN0IHR5cGUgKicgcmVmZXJlbmNlcy4gICovCi0rc3RhdGljIGh0YWJfdCB0eXBlX2Rp c2NhcmRhYmxlX3RhYmxlOworKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVh ciBhbGwgZGVidWcgcmVnaXN0ZXJzIG9mIG9ubHkgdGhlCisrCQkJCSAgSU5GRVJJT1JfUFRJRCB0 YXNrIHdpdGhvdXQgYWZmZWN0aW5nIGFueQorKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KICsKLSsv KiBDdXJyZW50IHR5cGVfZGlzY2FyZGFibGVfY2hlY2sgcGFzcyB1c2VkIGZvciBUWVBFX0RJU0NB UkRBQkxFX0FHRS4gICovCi0rc3RhdGljIGludCB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50 OworICAgIEFkZGl0aW9uYWxseSwgdGhlIG5hdGl2ZSBmaWxlIHNob3VsZCBzZXQgdGhlIGRlYnVn X3JlZ2lzdGVyX2xlbmd0aAorICAgIGZpZWxkIHRvIDQgb3IgOCBkZXBlbmRpbmcgb24gdGhlIG51 bWJlciBvZiBieXRlcyB1c2VkIGZvcgorICAgIGRldWJnIHJlZ2lzdGVycy4gICovCitAQCAtNzMs NiArNzcsNyBAQCBzdHJ1Y3QgaTM4Nl9kcl9sb3dfdHlwZQorICAgICB2b2lkICgqcmVzZXRfYWRk cikgKGludCk7CisgICAgIHVuc2lnbmVkIGxvbmcgKCpnZXRfc3RhdHVzKSAodm9pZCk7CisgICAg IHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsKKysgICAgdm9pZCAoKmRldGFj aCkgKHZvaWQpOworICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoOworICAgfTsKICAKLSAv KiBBbGxvY2F0ZSBhIG5ldyBPQkpGSUxFLWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZp bGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0 dXJlIGlzIGFsbG9jYXRlZAotQEAgLTE0OSw2ICsxNzAsMzkgQEAgYWxsb2NfdHlwZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCi0gICByZXR1cm4gdHlwZTsKK2RpZmYgLS1naXQgYS9nZGIvaW5m Y2FsbC5jIGIvZ2RiL2luZmNhbGwuYworaW5kZXggMGM5YTNhZi4uOTU3ZWMxZCAxMDA2NDQKKy0t LSBhL2dkYi9pbmZjYWxsLmMKKysrKyBiL2dkYi9pbmZjYWxsLmMKK0BAIC0yMjUsNiArMjI1LDU2 IEBAIHZhbHVlX2FyZ19jb2VyY2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFs dWUgKmFyZywKKyAgIHJldHVybiB2YWx1ZV9jYXN0ICh0eXBlLCBhcmcpOwogIH0KICAKLSsvKiBE ZWNsYXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkg ZnJlZV9hbGxfdHlwZXMuCi0rICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcg ZWFjaCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxs b2NhdGVkLiAgKi8KKysvKiBDYWxsIGdudS1pZnVuYyAoU1RUX0dOVV9JRlVOQyAtIGEgZnVuY3Rp b24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEgcmVhbAorKyAgIGZ1bmN0aW9uIHRvIGNhbGwpLiAg UEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlvbiBlbnRyeS4gIEZ1bmN0aW9uIHJldHVybnMKKysg ICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkIGZ1bmN0aW9uIHRvIGNh bGwuICBJZiBSRVRWQUxfVFlQRVAKKysgICBpcyBub3QgTlVMTCBmaWxsIGluICpSRVRWQUxfVFlQ RVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkCisrICAgZnVuY3Rp b24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9UWVBFUCBpbnRhY3QgaWYgdGhlIHJldHVybiB0eXBl IGNvdWxkIG5vdCBiZQorKyAgIGZvdW5kLiAgKi8KICsKLStzdGF0aWMgdm9pZAotK3NldF90eXBl X2FzX2Rpc2NhcmRhYmxlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKytzdGF0aWMgQ09SRV9BRERSCisr Z251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMp CiArewotKyAgdm9pZCAqKnNsb3Q7CisrICBjaGFyICpuYW1lX2F0X3BjOworKyAgQ09SRV9BRERS IHN0YXJ0X2F0X3BjLCBhZGRyZXNzOworKyAgc3RydWN0IHR5cGUgKmZ1bmNfZnVuY190eXBlID0g YnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1bmM7CisrICBzdHJ1Y3QgdmFs dWUgKmZ1bmN0aW9uLCAqYWRkcmVzc192YWw7CiArCi0rICBnZGJfYXNzZXJ0ICghVFlQRV9ESVND QVJEQUJMRSAodHlwZSkpOworKyAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZu YW1lX2F0X3BjLCAmc3RhcnRfYXRfcGMsIE5VTEwpCisrICAgICAgJiYgc3RhcnRfYXRfcGMgPT0g cGMpCisrICAgIHsKKysgICAgICBpZiAocmVzb2x2ZV9nbnVfaWZ1bmMgKG5hbWVfYXRfcGMsICZh ZGRyZXNzKSkKKysJcmV0dXJuIGFkZHJlc3M7CisrICAgIH0KKysgIGVsc2UKKysgICAgbmFtZV9h dF9wYyA9IE5VTEw7CiArCi0rICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7Ci0rICBUWVBF X0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50Owor KyAgZnVuY3Rpb24gPSBhbGxvY2F0ZV92YWx1ZSAoZnVuY19mdW5jX3R5cGUpOworKyAgc2V0X3Zh bHVlX2FkZHJlc3MgKGZ1bmN0aW9uLCBwYyk7CiArCi0rICBzbG90ID0gaHRhYl9maW5kX3Nsb3Qg KHR5cGVfZGlzY2FyZGFibGVfdGFibGUsIHR5cGUsIElOU0VSVCk7Ci0rICBnZGJfYXNzZXJ0ICgh KnNsb3QpOwotKyAgKnNsb3QgPSB0eXBlOwotK30KKysgIC8qIGdudS1pZnVuY3MgaGF2ZSBubyBh cmd1bWVudHMuICBGVU5DVElPTiBpcyB0aGUgZnVuY3Rpb24gZW50cnkgYWRkcmVzcworKyAgICAg d2hpbGUgQUREUkVTUyBpcyBhIHBvc3NpYmxlIGZ1bmN0aW9uIGRlc2NyaXB0b3IuLiAgKi8KKysg IGFkZHJlc3NfdmFsID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChmdW5jdGlvbiwgMCwgTlVMTCk7 CisrICBhZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAoYWRkcmVzc192YWwpOwogKwotKy8qIEFs bG9jYXRlIGEgbmV3IHR5cGUgbGlrZSBhbGxvY190eXBlIGJ1dCBwcmVzZXJ2ZSBmb3IgaXQgdGhl IGRpc2NhcmRhYmlsaXR5Ci0rICAgc3RhdGUgb2YgUEFSRU5UX1RZUEUuICAqLworKyAgaWYgKG5h bWVfYXRfcGMpCisrICAgIGdudV9pZnVuY19yZWNvcmRfY2FjaGUgKGdkYmFyY2gsIG5hbWVfYXRf cGMsIGFkZHJlc3MpOworKworKyAgcmV0dXJuIGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKGdkYmFyY2gsIGFkZHJlc3MsICZjdXJyZW50X3RhcmdldCk7CisrfQogKwogK3N0YXRp YyBzdHJ1Y3QgdHlwZSAqCi0rYWxsb2NfdHlwZV9hc19wYXJlbnQgKHN0cnVjdCB0eXBlICpwYXJl bnRfdHlwZSkKKytmaW5kX2Z1bmN0aW9uX3JldHVybl90eXBlIChDT1JFX0FERFIgcGMpCiArewot KyAgc3RydWN0IHR5cGUgKm5ld190eXBlID0gYWxsb2NfdHlwZV9jb3B5IChwYXJlbnRfdHlwZSk7 CisrICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CiArCi0rICBp ZiAoVFlQRV9ESVNDQVJEQUJMRSAocGFyZW50X3R5cGUpKQotKyAgICBzZXRfdHlwZV9hc19kaXNj YXJkYWJsZSAobmV3X3R5cGUpOworKyAgaWYgKHN5bSAhPSBOVUxMICYmIEJMT0NLX1NUQVJUIChT WU1CT0xfQkxPQ0tfVkFMVUUgKHN5bSkpID09IHBjCisrICAgICAgJiYgU1lNQk9MX1RZUEUgKHN5 bSkgIT0gTlVMTCkKKysgICAgcmV0dXJuIFRZUEVfVEFSR0VUX1RZUEUgKFNZTUJPTF9UWVBFIChz eW0pKTsKICsKLSsgIHJldHVybiBuZXdfdHlwZTsKKysgIHJldHVybiBOVUxMOwogK30KICsKLSAv KiBBbGxvY2F0ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZp bGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0 dXJlIGlzIGFsbG9jYXRlZAotICAgIG9uIHRoZSBoZWFwLiAgKi8KLUBAIC0yNzQsNyArMzI4LDcg QEAgbWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5 cGVwdHIpCisgLyogRGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0dXJu IHR5cGUgZnJvbSBpdHMgdmFsdWUuCisgICAgQ2FsbHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rpb24g aXMgbm90IHZhbGlkIGZvciBjYWxsaW5nLiAgKi8KICAKLSAgIGlmICh0eXBlcHRyID09IDAgfHwg KnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLworQEAgLTIz Myw3ICsyODMsNiBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24s IHN0cnVjdCB0eXBlICoqcmV0dmFsX3R5cGUpCisgeworICAgc3RydWN0IHR5cGUgKmZ0eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKKyAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAoZnR5cGUpOworLSAgZW51bSB0eXBlX2NvZGUgY29k ZSA9IFRZUEVfQ09ERSAoZnR5cGUpOworICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBOVUxM OworICAgQ09SRV9BRERSIGZ1bmFkZHI7CisgCitAQCAtMjQxLDI0ICsyOTAsMzQgQEAgZmluZF9m dW5jdGlvbl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZh bF90eXBlKQorICAgICAgcGFydCBvZiBpdC4gICovCisgCisgICAvKiBEZXRlcm1pbmUgYWRkcmVz cyB0byBjYWxsLiAgKi8KKy0gIGlmIChjb2RlID09IFRZUEVfQ09ERV9GVU5DIHx8IGNvZGUgPT0g VFlQRV9DT0RFX01FVEhPRCkKKy0gICAgeworLSAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNz IChmdW5jdGlvbik7CistICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBl KTsKKy0gICAgfQorLSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQorKyAgaWYgKFRZ UEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisrICAgICAgfHwgVFlQRV9DT0RFIChm dHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKysgICAgZnVuYWRkciA9IHZhbHVlX2FkZHJlc3Mg KGZ1bmN0aW9uKTsKKysgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9Q VFIpCiAgICAgIHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAg ICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVw dHIpCi0gCSp0eXBlcHRyID0gbnR5cGU7CisgICAgICAgZnVuYWRkciA9IHZhbHVlX2FzX2FkZHJl c3MgKGZ1bmN0aW9uKTsKKyAgICAgICBmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VU X1RZUEUgKGZ0eXBlKSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09E RV9GVU5DCisgCSAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKysJ ZnVuYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1 bmFkZHIsCisrCQkJCQkJICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKKysgICAgfQorKyAgaWYgKFRZ UEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisrICAgICAgfHwgVFlQRV9DT0RFIChm dHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKysgICAgeworKyAgICAgIHZhbHVlX3R5cGUgPSBU WVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7CisrCisrICAgICAgaWYgKFRZUEVfR05VX0lGVU5DIChm dHlwZSkpCisgCXsKKy0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKKy0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKKy0JICB2 YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOworKwkgIGZ1bmFkZHIgPSBnbnVf aWZ1bmNfcmVzb2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7CisrCisrCSAgLyogU2tpcCBxdWVyeWlu ZyB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCisrCSAgICAg YXNrZWQgZm9yLiAgKi8KKysJICBpZiAocmV0dmFsX3R5cGUpCisrCSAgICB2YWx1ZV90eXBlID0g ZmluZF9mdW5jdGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7CisgCX0KICAgICAgfQotQEAgLTM1 MSw3ICs0MDUsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IHR5cGUgKip0eXBlcHRyKQorLSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfSU5UKQor KyAgZWxzZSBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKKyAgICAgewor ICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlvbnMgbGFja2luZyBkZWJ1Z2dpbmcg aW5mby4KKyAgICAgICAgICBUaGVpciB2YWx1ZXMgYXJlIGNoYXJhY3RlcnMgc2luY2UgdGhlaXIg YWRkcmVzc2VzIGFyZSBjaGFyICovCitkaWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2lu ZmNtZC5jCitpbmRleCBjNGNkYjA2Li5kMjEzZjZhIDEwMDY0NAorLS0tIGEvZ2RiL2luZmNtZC5j CisrKysgYi9nZGIvaW5mY21kLmMKK0BAIC04MjIsNyArODIyLDcgQEAgbmV4dGlfY29tbWFuZCAo Y2hhciAqY291bnRfc3RyaW5nLCBpbnQgZnJvbV90dHkpCisgICBzdGVwXzEgKDEsIDEsIGNvdW50 X3N0cmluZyk7CisgfQogIAotICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAwKQkv KiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCistc3RhdGljIHZvaWQKKyt2b2lkCisg ZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpCisgeworICAgaW50 IHRocmVhZCA9ICogKGludCAqKSBhcmc7CitAQCAtODYyLDEwICs4NjIsMTMgQEAgc3RlcF8xIChp bnQgc2tpcF9zdWJyb3V0aW5lcywgaW50IHNpbmdsZV9pbnN0LCBjaGFyICpjb3VudF9zdHJpbmcp CisgCisgICBpZiAoIXNpbmdsZV9pbnN0IHx8IHNraXBfc3Vicm91dGluZXMpCQkvKiBsZWF2ZSBz aSBjb21tYW5kIGFsb25lICovCiAgICAgIHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29w eSAodHlwZSk7Ci0rICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0g ICAgICAgaWYgKHR5cGVwdHIpCi0gCSp0eXBlcHRyID0gbnR5cGU7CisrICAgICAgc3RydWN0IHRo cmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKKysKKyAgICAgICBpZiAoaW5fdGhy ZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQorICAJdGhyZWFkID0gcGlkX3RvX3RocmVhZF9pZCAo aW5mZXJpb3JfcHRpZCk7CisgCisgICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFk KTsKKysgICAgICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJl bnRfZnJhbWUgKCkpOworIAorICAgICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBfYnJl YWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKICAgICAgfQotQEAgLTcyMyw2ICs3NzcsNyBAQCBj cmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAq aW5kZXhfdHlwZSwKLSAgICAgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVj dCByYW5nZV9ib3VuZHMpKTsKLSAgIFRZUEVfTE9XX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBsb3df Ym91bmQ7Ci0gICBUWVBFX0hJR0hfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGhpZ2hfYm91bmQ7Ci0r ICBUWVBFX0JZVEVfU1RSSURFIChyZXN1bHRfdHlwZSkgPSAwOworQEAgLTEyMTksNiArMTIyMiwx NSBAQCBzaWduYWxfY29tbWFuZCAoY2hhciAqc2lnbnVtX2V4cCwgaW50IGZyb21fdHR5KQorICAg cHJvY2VlZCAoKENPUkVfQUREUikgLTEsIG91cnNpZywgMCk7CisgfQogIAotICAgaWYgKGxvd19i b3VuZCA+PSAwKQotICAgICBUWVBFX1VOU0lHTkVEIChyZXN1bHRfdHlwZSkgPSAxOwotQEAgLTgy MiwyNiArODc3LDQ1IEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5 cGUsCisrLyogQSBjb250aW51YXRpb24gY2FsbGJhY2sgZm9yIHVudGlsX25leHRfY29tbWFuZC4g ICovCisrCisrc3RhdGljIHZvaWQKKyt1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiAodm9pZCAqYXJn KQorK3sKKysgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBhcmc7CisrICBkZWxldGVfbG9uZ2pt cF9icmVha3BvaW50ICh0cC0+bnVtKTsKKyt9CisrCisgLyogUHJvY2VlZCB1bnRpbCB3ZSByZWFj aCBhIGRpZmZlcmVudCBzb3VyY2UgbGluZSB3aXRoIHBjIGdyZWF0ZXIgdGhhbgorICAgIG91ciBj dXJyZW50IG9uZSBvciBleGl0IHRoZSBmdW5jdGlvbi4gIFdlIHNraXAgY2FsbHMgaW4gYm90aCBj YXNlcy4KICAKLSAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwot ICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOwotLSAgaWYg KGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5k KSA8IDApCi0tICAgIGxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOwotLSAgQ0hFQ0tfVFlQRURF RiAoZWxlbWVudF90eXBlKTsKLS0gIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJh eSBsZW5ndGguICBBZGEgYXJyYXlzIGNhbiBiZQotLSAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhl IGhpZ2hfYm91bmQgYmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCi0tICAgICBJbiBz dWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KLS0gIGlmICho aWdoX2JvdW5kIDwgbG93X2JvdW5kKQotLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0g MDsKLS0gIGVsc2UKLS0gICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0tICAgICAgVFlQ RV9MRU5HVEggKGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwot ICAgVFlQRV9ORklFTERTIChyZXN1bHRfdHlwZSkgPSAxOwotICAgVFlQRV9GSUVMRFMgKHJlc3Vs dF90eXBlKSA9Ci0gICAgIChzdHJ1Y3QgZmllbGQgKikgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBl LCBzaXplb2YgKHN0cnVjdCBmaWVsZCkpOwotICAgVFlQRV9JTkRFWF9UWVBFIChyZXN1bHRfdHlw ZSkgPSByYW5nZV90eXBlOwotICAgVFlQRV9WUFRSX0ZJRUxETk8gKHJlc3VsdF90eXBlKSA9IC0x OworQEAgLTEyMzUsNiArMTI0Nyw4IEBAIHVudGlsX25leHRfY29tbWFuZCAoaW50IGZyb21fdHR5 KQorICAgc3RydWN0IHN5bWJvbCAqZnVuYzsKKyAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2Fs OworICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKKysgIGlu dCB0aHJlYWQgPSB0cC0+bnVtOworKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKICAKLS0g IC8qIFRZUEVfRkxBR19UQVJHRVRfU1RVQiB3aWxsIHRha2UgY2FyZSBvZiB6ZXJvIGxlbmd0aCBh cnJheXMgKi8KLSsgIC8qIERXQVJGIGJsb2NrcyBtYXkgZGVwZW5kIG9uIHJ1bnRpbWUgaW5mb3Jt YXRpb24gbGlrZQotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBub3QgYmVpbmcgYXZh aWxhYmxlIGR1cmluZyB0aGUKLSsgICAgIENSRUFURV9BUlJBWV9UWVBFIHRpbWUuICAqLwotKyAg aWYgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kICE9IFJBTkdFX0JPVU5E X0tJTkRfQ09OU1RBTlQKLSsgICAgICB8fCBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5o aWdoLmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZUEVfTE9X X0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCi0rICAgICAgfHwgVFlQRV9ISUdIX0JPVU5E X1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCi0rICAgICAgfHwgZ2V0X2Rpc2NyZXRlX2JvdW5kcyAo cmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKLSsgICAgewotKyAgICAg IGxvd19ib3VuZCA9IDA7Ci0rICAgICAgaGlnaF9ib3VuZCA9IC0xOwotKyAgICB9CisgICBjbGVh cl9wcm9jZWVkX3N0YXR1cyAoKTsKKyAgIHNldF9zdGVwX2ZyYW1lICgpOworQEAgLTEyNzAsNyAr MTI4NCwxOSBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAKKyAgIHRwLT5z dGVwX211bHRpID0gMDsJCS8qIE9ubHkgb25lIGNhbGwgdG8gcHJvY2VlZCAqLworIAorKyAgc2V0 X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0g Z2V0X2ZyYW1lX2lkIChmcmFtZSk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGRlbGV0 ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiArCi0rICAvKiBCZSBjYXJl ZnVsIHdoZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSsg ICAgIGVtcHR5IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0 aGUgbG93X2JvdW5kLgotKyAgICAgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91 bGQgYmUgemVyby4gIFRZUEVfVEFSR0VUX1NUVUIgbmVlZHMgdG8KLSsgICAgIGJlIGNoZWNrZWQg YXMgaXQgbWF5IGhhdmUgZGVwZW5kZW5jaWVzIG9uIERXQVJGIGJsb2NrcyBkZXBlbmRpbmcgb24K LSsgICAgIHJ1bnRpbWUgaW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIENSRUFU RV9BUlJBWV9UWVBFIHRpbWUuICAqLwotKyAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQgfHwg VFlQRV9UQVJHRVRfU1RVQiAoZWxlbWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3Vs dF90eXBlKSA9IDA7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBDSEVDS19UWVBFREVGIChlbGVt ZW50X3R5cGUpOwotKyAgICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPQotKwlUWVBFX0xF TkdUSCAoZWxlbWVudF90eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0rICAg IH0KKyAgIHByb2NlZWQgKChDT1JFX0FERFIpIC0xLCBUQVJHRVRfU0lHTkFMX0RFRkFVTFQsIDEp OwogKwotICAgaWYgKFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPT0gMCkKLS0gICAgVFlQRV9U QVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKKysgIGlmICh0YXJnZXRfY2FuX2FzeW5jX3Ag KCkgJiYgaXNfcnVubmluZyAoaW5mZXJpb3JfcHRpZCkpCiArICAgIHsKLSsgICAgICAvKiBUaGUg cmVhbCBzaXplIHdpbGwgYmUgY29tcHV0ZWQgZm9yIHNwZWNpZmljIGluc3RhbmNlcyBieQotKwkg Q0hFQ0tfVFlQRURFRi4gICovCi0rICAgICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUp ID0gMTsKKysgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIGFkZF9j b250aW51YXRpb24gKHRwLCB1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiwgdHAsIE5VTEwpOwogKyAg ICB9Ci0gCi0gICByZXR1cm4gcmVzdWx0X3R5cGU7CisrICBlbHNlCisrICAgIGRvX2NsZWFudXBz IChvbGRfY2hhaW4pOwogIH0KLUBAIC0xMzM3LDYgKzE0MTEsMTA1IEBAIHN0dWJfbm9uYW1lX2Nv bXBsYWludCAodm9pZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1 YiB0eXBlIGhhcyBOVUxMIG5hbWUiKSk7CisgCisgc3RhdGljIHZvaWQKK0BAIC0xNDYzLDYgKzE0 ODksNyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKKyAgIGlmIChi cyAhPSBOVUxMICYmIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKKyAgICAgb2JzZXJ2ZXJfbm90aWZ5 X25vcm1hbF9zdG9wIChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7CisgICBkZWxldGVfYnJlYWtw b2ludCAoYS0+YnJlYWtwb2ludCk7CisrICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbmZl cmlvcl90aHJlYWQgKCktPm51bSk7CiAgfQogIAotKy8qIENhbGN1bGF0ZSB0aGUgbWVtb3J5IGxl bmd0aCBvZiBhcnJheSBUWVBFLgotKwotKyAgIFRBUkdFVF9UWVBFIHNob3VsZCBiZSBzZXQgdG8g YGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKScgYXMKLSsgICBhIHBlcmZv cm1hbmNlIGhpbnQuICBGZWVsIGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0IEZVTExfU1BBTiB0byBy ZXR1cm4gdGhlCi0rICAgc2l6ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFkZGluZyBvZiB0aGUgbGFz dCBlbGVtZW50IC0gaXQgbWF5IGRpZmZlciBmcm9tIHRoZQotKyAgIGNsZWFyZWQgRlVMTF9TUEFO IHJldHVybiB2YWx1ZSAodGhlIGV4cGVjdGVkIFNJWkVPRikgZm9yIG5vbi16ZXJvCi0rICAgVFlQ RV9CWVRFX1NUUklERSB2YWx1ZXMuICAqLworIHN0YXRpYyB2b2lkCitAQCAtMTU0Niw2ICsxNTcz LDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKKyAgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgICBzdHJ1Y3QgZmluaXNoX2NvbW1hbmRfY29udGlu dWF0aW9uX2FyZ3MgKmNhcmdzOworKyAgaW50IHRocmVhZCA9IHRwLT5udW07CisgCisgICBzYWwg PSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsKKyAgIHNhbC5wYyA9IGdl dF9mcmFtZV9wYyAoZnJhbWUpOworQEAgLTE1NTYsNiArMTU4NCwxMCBAQCBmaW5pc2hfZm9yd2Fy ZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAK KyAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2lu dCk7CisgCisrICBzZXRfbG9uZ2ptcF9icmVha3BvaW50ICh0aHJlYWQpOworKyAgdHAtPmluaXRp YXRpbmdfZnJhbWUgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKysgIG1ha2VfY2xlYW51cCAoZGVs ZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKICsKLStzdGF0aWMgTE9O R0VTVAotK3R5cGVfbGVuZ3RoX2dldCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICp0 YXJnZXRfdHlwZSwgaW50IGZ1bGxfc3BhbikKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlw ZTsKLSsgIExPTkdFU1QgYnl0ZV9zdHJpZGUgPSAwOwkvKiBgPSAwJyBmb3IgYSBmYWxzZSBHQ0Mg d2FybmluZy4gICovCi0rICBMT05HRVNUIGNvdW50LCBlbGVtZW50X3NpemUsIHJldHZhbDsKKyAg IHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCA9IDE7ICAgIC8qIFdlIHdhbnQgc3RvcF9yZWdpc3RlcnMs IHBsZWFzZS4uLiAgKi8KKyAgIGNhcmdzID0geG1hbGxvYyAoc2l6ZW9mICgqY2FyZ3MpKTsKKyAK K2RpZmYgLS1naXQgYS9nZGIvaW5mZXJpb3IuaCBiL2dkYi9pbmZlcmlvci5oCitpbmRleCA1YWJl YzY4Li5lMzA5Mjc3IDEwMDY0NAorLS0tIGEvZ2RiL2luZmVyaW9yLmgKKysrKyBiL2dkYi9pbmZl cmlvci5oCitAQCAtMjkxLDYgKzI5MSw4IEBAIGV4dGVybiB2b2lkIGludGVycnVwdF90YXJnZXRf Y29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KTsKKyAKKyBleHRlcm4gdm9pZCBpbnRl cnJ1cHRfdGFyZ2V0XzEgKGludCBhbGxfdGhyZWFkcyk7CisgCisrZXh0ZXJuIHZvaWQgZGVsZXRl X2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpOwogKwotKyAgaWYgKFRZUEVf Q09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgJiYgVFlQRV9DT0RFICh0eXBl KSAhPSBUWVBFX0NPREVfU1RSSU5HKQotKyAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpOwor IGV4dGVybiB2b2lkIGRldGFjaF9jb21tYW5kIChjaGFyICosIGludCk7CisgCisgZXh0ZXJuIHZv aWQgbm90aWNlX25ld19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7CitkaWZmIC0tZ2l0IGEv Z2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCitpbmRleCA1N2YyYWI4Li41NzYyYTdmIDEwMDY0 NAorLS0tIGEvZ2RiL2luZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC00NSw2ICs0NSw4 IEBACisgI2luY2x1ZGUgImxhbmd1YWdlLmgiCisgI2luY2x1ZGUgInNvbGliLmgiCisgI2luY2x1 ZGUgIm1haW4uaCIKKysjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgorKyNpbmNsdWRlICJibG9jay5o IgorICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisgI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgor ICNpbmNsdWRlICJldmVudC10b3AuaCIKK0BAIC0zNjcsNiArMzY5LDcgQEAgZm9sbG93X2Zvcmsg KHZvaWQpCisgICAgICBwYXJlbnQgdGhyZWFkIHN0cnVjdHVyZSdzIHJ1biBjb250cm9sIHJlbGF0 ZWQgZmllbGRzLCBub3QganVzdCB0aGVzZS4KKyAgICAgIEluaXRpYWxpemVkIHRvIGF2b2lkICJt YXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB3YXJuaW5ncyBmcm9tIGdjYy4gICovCisgICBzdHJ1 Y3QgYnJlYWtwb2ludCAqc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7CisrICBzdHJ1Y3Qg YnJlYWtwb2ludCAqZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKKyAgIENPUkVf QUREUiBzdGVwX3JhbmdlX3N0YXJ0ID0gMDsKKyAgIENPUkVfQUREUiBzdGVwX3JhbmdlX2VuZCA9 IDA7CisgICBzdHJ1Y3QgZnJhbWVfaWQgc3RlcF9mcmFtZV9pZCA9IHsgMCB9OworQEAgLTQxOSw2 ICs0MjIsOCBAQCBmb2xsb3dfZm9yayAodm9pZCkKKyAJICAgIHN0ZXBfcmFuZ2Vfc3RhcnQgPSB0 cC0+c3RlcF9yYW5nZV9zdGFydDsKKyAJICAgIHN0ZXBfcmFuZ2VfZW5kID0gdHAtPnN0ZXBfcmFu Z2VfZW5kOworIAkgICAgc3RlcF9mcmFtZV9pZCA9IHRwLT5zdGVwX2ZyYW1lX2lkOworKwkgICAg ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50CisrCSAgICAgID0gY2xvbmVfbW9tZW50YXJ5X2Jy ZWFrcG9pbnQgKHRwLT5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQpOworIAorIAkgICAgLyog Rm9yIG5vdywgZGVsZXRlIHRoZSBwYXJlbnQncyBzciBicmVha3BvaW50LCBvdGhlcndpc2UsCisg CSAgICAgICBwYXJlbnQvY2hpbGQgc3IgYnJlYWtwb2ludHMgYXJlIGNvbnNpZGVyZWQgZHVwbGlj YXRlcywKK0BAIC00MjksNiArNDM0LDcgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCSAgICB0cC0+ c3RlcF9yYW5nZV9zdGFydCA9IDA7CisgCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSAwOworIAkg ICAgdHAtPnN0ZXBfZnJhbWVfaWQgPSBudWxsX2ZyYW1lX2lkOworKwkgICAgZGVsZXRlX2V4Y2Vw dGlvbl9yZXN1bWVfYnJlYWtwb2ludCAodHApOworIAkgIH0KKyAKKyAJcGFyZW50ID0gaW5mZXJp b3JfcHRpZDsKK0BAIC00NzAsNiArNDc2LDggQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCQkgICAg dHAtPnN0ZXBfcmFuZ2Vfc3RhcnQgPSBzdGVwX3JhbmdlX3N0YXJ0OworIAkJICAgIHRwLT5zdGVw X3JhbmdlX2VuZCA9IHN0ZXBfcmFuZ2VfZW5kOworIAkJICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0g c3RlcF9mcmFtZV9pZDsKKysJCSAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50Cisr CQkgICAgICA9IGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKKyAJCSAgfQorIAkJZWxzZQor IAkJICB7CitAQCAtNTIzLDYgKzUzMSw5IEBAIGZvbGxvd19pbmZlcmlvcl9yZXNldF9icmVha3Bv aW50cyAodm9pZCkKKyAgIGlmICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCkKKyAgICAgYnJl YWtwb2ludF9yZV9zZXRfdGhyZWFkICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCk7CisgCisr ICBpZiAodHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKKysgICAgYnJlYWtwb2ludF9y ZV9zZXRfdGhyZWFkICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKKysKKyAgIC8q IFJlaW5zZXJ0IGFsbCBicmVha3BvaW50cyBpbiB0aGUgY2hpbGQuICBUaGUgdXNlciBtYXkgaGF2 ZSBzZXQKKyAgICAgIGJyZWFrcG9pbnRzIGFmdGVyIGNhdGNoaW5nIHRoZSBmb3JrLCBpbiB3aGlj aCBjYXNlIHRob3NlCisgICAgICB3ZXJlIG5ldmVyIHNldCBpbiB0aGUgY2hpbGQsIGJ1dCBvbmx5 IGluIHRoZSBwYXJlbnQuICBUaGlzIG1ha2VzCitAQCAtNzYwLDYgKzc3MSw3IEBAIGZvbGxvd19l eGVjIChwdGlkX3QgcGlkLCBjaGFyICpleGVjZF9wYXRobmFtZSkKKyAgIC8qIElmIHRoZXJlIHdh cyBvbmUsIGl0J3MgZ29uZSBub3cuICBXZSBjYW5ub3QgdHJ1bHkgc3RlcC10by1uZXh0CisgICAg ICBzdGF0ZW1lbnQgdGhyb3VnaCBhbiBleGVjKCkuICovCisgICB0aC0+c3RlcF9yZXN1bWVfYnJl YWtwb2ludCA9IE5VTEw7CisrICB0aC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVM TDsKKyAgIHRoLT5zdGVwX3JhbmdlX3N0YXJ0ID0gMDsKKyAgIHRoLT5zdGVwX3JhbmdlX2VuZCA9 IDA7CisgCitAQCAtMjE5MCw2ICsyMjAyLDggQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVz dW1lX2JyZWFrcG9pbnRfYXRfc2FsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkJCQkg IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc3Jfc2FsLAorIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lk IHNyX2lkKTsKKyBzdGF0aWMgdm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAo c3RydWN0IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsKKytzdGF0aWMgdm9pZCBjaGVja19leGNlcHRp b25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKKysJCQkJICAgIHN0 cnVjdCBmcmFtZV9pbmZvICosIHN0cnVjdCBzeW1ib2wgKik7CisgCisgc3RhdGljIHZvaWQgc3Rv cF9zdGVwcGluZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOworIHN0YXRp YyB2b2lkIHByZXBhcmVfdG9fd2FpdCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICpl Y3MpOworQEAgLTIzMTMsNiArMjMyNyw3IEBAIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50 X2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKmluZm8sIHZvaWQgKmRhdGEpCisgICAgIHJl dHVybiAwOworIAorICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOworKyAg ZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoaW5mbyk7CisgICByZXR1cm4gMDsK KyB9CisgCitAQCAtMjMzNyw2ICsyMzUyLDcgQEAgZGVsZXRlX3N0ZXBfdGhyZWFkX3N0ZXBfcmVz dW1lX2JyZWFrcG9pbnQgKHZvaWQpCisgICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGlu ZmVyaW9yX3RocmVhZCAoKTsKKyAKKyAgICAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2lu dCAodHApOworKyAgICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsK KyAgICAgfQorICAgZWxzZQorICAgICAvKiBJbiBhbGwtc3RvcCBtb2RlLCBkZWxldGUgYWxsIHN0 ZXAtcmVzdW1lIGFuZCBsb25nam1wLXJlc3VtZQorQEAgLTMyNDEsNiArMzI1NywxMCBAQCBoYW5k bGVfaW5mZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQor IAorICAgICAgIHN0b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hl IChlY3MtPnB0aWQpKTsKKyAKKysgICAgICAvKiBDbGVhciBXQVRDSFBPSU5UX1RSSUdHRVJFRCB2 YWx1ZXMgZnJvbSBwcmV2aW91cyBzdG9wIHdoaWNoIGNvdWxkCisrCSBjb25mdXNlIGJwc3RhdF9z dG9wX3N0YXR1cyBhbmQgYnBzdGF0X2V4cGxhaW5zX3NpZ25hbC4gICovCisrICAgICAgd2F0Y2hw b2ludHNfdHJpZ2dlcmVkICgmZWNzLT53cyk7CiArCi0rICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQ RV9ISUdIX0JPVU5EIGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCi0rICAg ICBGb3J0cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQg c28gdGhleSBjYW4gYmUKLSsgICAgIHplcm8tbGVuZ3RoLiAgKi8KLSsgIGlmIChvYmplY3RfYWRk cmVzc19kYXRhX25vdF92YWxpZCAodHlwZSkpCi0rICAgIHJldHVybiAwOworICAgICAgIGVjcy0+ ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdAorIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3Jl Z2NhY2hlX2FzcGFjZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAorIAkJCSAgICAgIHN0b3Bf cGMsIGVjcy0+cHRpZCk7CitAQCAtMzMyOCw2ICszMzQ4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9l dmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCisgCisgICAgICAgc3Rv cF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkp OworIAorKyAgICAgIC8qIENsZWFyIFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHBy ZXZpb3VzIHN0b3Agd2hpY2ggY291bGQKKysJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFu ZCBicHN0YXRfZXhwbGFpbnNfc2lnbmFsLiAgKi8KKysgICAgICB3YXRjaHBvaW50c190cmlnZ2Vy ZWQgKCZlY3MtPndzKTsKICsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUp OwotKyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkKLSsgICAgICB8 fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKLSsgICAgcmV0dXJuIDA7 Ci0rICBjb3VudCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VO RCAocmFuZ2VfdHlwZSkgKyAxOwotKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Igd3JvbmcgRFdBUkYg YW5ub3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCi0rICBpZiAoY291bnQgPCAw KQotKyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52YWxpZCBib3VuZHMg JXMuLiVzIiksCi0rCSAgICAgVFlQRV9OQU1FICh0eXBlKSwgcGxvbmdlc3QgKFRZUEVfTE9XX0JP VU5EIChyYW5nZV90eXBlKSksCi0rCSAgICAgcGxvbmdlc3QgKFRZUEVfSElHSF9CT1VORCAocmFu Z2VfdHlwZSkpKTsKLSsgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBjb3VudCA9 PSAwIHJpZ2h0LiAgKi8KLSsgIGlmIChjb3VudCA8PSAwKQotKyAgICByZXR1cm4gMDsKLSsgIGlm IChmdWxsX3NwYW4gfHwgY291bnQgPiAxKQotKyAgICB7Ci0rICAgICAgLyogV2UgZG8gbm90IHVz ZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBoZXJlIGFzIHdlIHdhbnQgdG8K LSsgICAgICAgICBmb3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCi0rICAgICAgYnl0ZV9zdHJpZGUg PSBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKLSsgICAgICBpZiAoYnl0ZV9zdHJpZGUg PT0gMCkKLSsgICAgICAgIHsKLSsJICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKLSsJICAgIHRh cmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKwkg IGJ5dGVfc3RyaWRlID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRfdHlwZSwgTlVMTCwgMSk7Ci0r CX0KLSsgICAgfQotKwotKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUg YXJyYXkgbGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAotKyAgICAgZXhjZWVkcyBVSU5UX01B WC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAsCi0rICAgICAoVUxPTkdF U1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0ZWNobmljYWxseSBub3Qg Z3VhcmFudGVlZAotKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZSAoYmVjYXVzZSBpdCB3 b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAotKyAgICAgd2l0aCBpdHMgaGlnaC1vcmRl ciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMK LSsgICAgIGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hf Ym91bmQtbG93X2JvdW5kKzEKLSsgICAgIG92ZXJmbG93cywgaXQgb3ZlcmZsb3dzIHRvIDAuICBX ZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8KLSsgICAgIGluY3JlYXNl IHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVuc2lnbmVkIGludCB0byBV TE9OR0VTVC4KLSsgICAgICovCisgICAgICAgLyogRG8gd2hhdGV2ZXIgaXMgbmVjZXNzYXJ5IHRv IHRoZSBwYXJlbnQgYnJhbmNoIG9mIHRoZSB2Zm9yay4gICovCisgICAgICAgaGFuZGxlX3Zmb3Jr X2NoaWxkX2V4ZWNfb3JfZXhpdCAoMSk7CisgCitAQCAtNDA3NiwyMyArNDEwMCwzMyBAQCBwcm9j ZXNzX2V2ZW50X3N0b3BfdGVzdDoKKyAKKyAJZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBwaW5nX292 ZXJfYnJlYWtwb2ludCA9IDE7CisgCistCWlmICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRf cCAoZ2RiYXJjaCkKKy0JICAgIHx8ICFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldCAoZ2RiYXJj aCwgZnJhbWUsICZqbXBfYnVmX3BjKSkKKysJaWYgKHdoYXQuaXNfbG9uZ2ptcCkKKyAJICB7Cist CSAgICBpZiAoZGVidWdfaW5mcnVuKQorLQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csICJcCisrCSAgICBpZiAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFy Y2gpCisrCQl8fCAhZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQgKGdkYmFyY2gsCisrCQkJCQkJ ZnJhbWUsICZqbXBfYnVmX3BjKSkKKysJICAgICAgeworKwkJaWYgKGRlYnVnX2luZnJ1bikKKysJ CSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAorIGluZnJ1bjogQlBTVEFUX1dI QVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsK Ky0JICAgIGtlZXBfZ29pbmcgKGVjcyk7CistCSAgICByZXR1cm47CistCSAgfQorKwkJa2VlcF9n b2luZyAoZWNzKTsKKysJCXJldHVybjsKKysJICAgICAgfQorIAorLQkvKiBXZSdyZSBnb2luZyB0 byByZXBsYWNlIHRoZSBjdXJyZW50IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQKKy0JICAgd2l0aCBh IGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLworLQlkZWxldGVfc3RlcF9yZXN1bWVfYnJl YWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOworKwkgICAgLyogV2UncmUgZ29pbmcgdG8gcmVw bGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3VtZSBicmVha3BvaW50CisrCSAgICAgICB3aXRoIGEg bG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludC4gICovCisrCSAgICBkZWxldGVfc3RlcF9yZXN1bWVf YnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOworIAorLQkvKiBJbnNlcnQgYSBicmVha3Bv aW50IGF0IHJlc3VtZSBhZGRyZXNzLiAgKi8KKy0JaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFr cG9pbnQgKGdkYmFyY2gsIGptcF9idWZfcGMpOworKwkgICAgLyogSW5zZXJ0IGEgYnJlYWtwb2lu dCBhdCByZXN1bWUgYWRkcmVzcy4gICovCisrCSAgICBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJl YWtwb2ludCAoZ2RiYXJjaCwgam1wX2J1Zl9wYyk7CisrCSAgfQorKwllbHNlCisrCSAgeworKwkg ICAgc3RydWN0IHN5bWJvbCAqZnVuYyA9IGdldF9mcmFtZV9mdW5jdGlvbiAoZnJhbWUpOworIAor KwkgICAgaWYgKGZ1bmMpCisrCSAgICAgIGNoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgKGVjcywgZnJh bWUsIGZ1bmMpOworKwkgIH0KKyAJa2VlcF9nb2luZyAoZWNzKTsKKyAJcmV0dXJuOworIAorQEAg LTQxMDEsOCArNDEzNSw1MiBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VN RSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CisgCSAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLAorIAkJCSAgICAgICJpbmZydW46IEJQU1RBVF9XSEFUX0NMRUFSX0xP TkdKTVBfUkVTVU1FXG4iKTsKKyAKKy0JZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7CistCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVh a3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CisrCWlmICh3aGF0LmlzX2xvbmdqbXApCisrCSAg eworKwkgICAgZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFr cG9pbnQgIT0gTlVMTCk7CisrCSAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNz LT5ldmVudF90aHJlYWQpOworKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIC8qIFRoZXJlIGFy ZSBzZXZlcmFsIGNhc2VzIHRvIGNvbnNpZGVyLgogKwotKyAgaWYgKGZ1bGxfc3BhbikKLSsgICAg ewotKyAgICAgIHJldHZhbCA9IGNvdW50ICogYnl0ZV9zdHJpZGU7Ci0rICAgICAgaWYgKGNvdW50 ID09IDAgfHwgcmV0dmFsIC8gY291bnQgIT0gYnl0ZV9zdHJpZGUgfHwgcmV0dmFsID4gVUlOVF9N QVgpCi0rCXJldHZhbCA9IDA7Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotKyAgaWYg KHRhcmdldF90eXBlID09IE5VTEwpCi0rICAgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKyAgZWxlbWVudF9zaXplID0gdHlwZV9sZW5ndGhf Z2V0ICh0YXJnZXRfdHlwZSwgTlVMTCwgMSk7Ci0rICByZXR2YWwgPSAoY291bnQgLSAxKSAqIGJ5 dGVfc3RyaWRlICsgZWxlbWVudF9zaXplOwotKyAgaWYgKHJldHZhbCA8IGVsZW1lbnRfc2l6ZQot KyAgICAgIHx8IChieXRlX3N0cmlkZSAhPSAwCi0rICAgICAgICAgICYmIChyZXR2YWwgLSBlbGVt ZW50X3NpemUpIC8gYnl0ZV9zdHJpZGUgIT0gY291bnQgLSAxKQotKyAgICAgIHx8IHJldHZhbCA+ IFVJTlRfTUFYKQotKyAgICByZXR2YWwgPSAwOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9CisrCSAg ICAgICAxLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcyBj YXNlCisrCSAgICAgICB3ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgZ29u ZSB0b28gZmFyLgogKwotKy8qIFByZXBhcmUgVFlQRSBhZnRlciBiZWluZyByZWFkIGluIGJ5IHRo ZSBiYWNrZW5kLiAgQ3VycmVudGx5IHRoaXMgZnVuY3Rpb24KLSsgICBvbmx5IHByb3BhZ2F0ZXMg dGhlIFRZUEVfRFlOQU1JQyBmbGFnLiAgKi8KKysJICAgICAgIDIuIFRoZSBpbml0aWF0aW5nIGZy YW1lIGV4aXN0cywgYW5kIGlzIHRoZSBzYW1lIGFzIHRoZQorKwkgICAgICAgY3VycmVudCBmcmFt ZS4gIFdlIHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgorKwkgICAgICAgY2F1 Z2h0LgogKwotK3ZvaWQKLStmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0r ICBpbnQgaTsKKysJICAgICAgIDMuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4aXN0cyBhbmQgaXMg ZGlmZmVyZW50IGZyb20KKysJICAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgVGhpcyBtZWFucyB0 aGUgZXhjZXB0aW9uIGhhcyBiZWVuCisrCSAgICAgICBjYXVnaHQgYmVuZWF0aCB0aGUgaW5pdGlh dGluZyBmcmFtZSwgc28ga2VlcCBnb2luZy4gICovCisrCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAq aW5pdF9mcmFtZQorKwkgICAgICA9IGZyYW1lX2ZpbmRfYnlfaWQgKGVjcy0+ZXZlbnRfdGhyZWFk LT5pbml0aWF0aW5nX2ZyYW1lKTsKICsKLSsgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMg KHR5cGUpOyArK2kpCi0rICAgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpICYmIFRZUEVf RFlOQU1JQyAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkpCi0rICAgICAgYnJlYWs7CisrCSAg ICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3Bv aW50ICE9IE5VTEwpOworKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAo ZWNzLT5ldmVudF90aHJlYWQpOwogKwotKyAgLyogRklYTUU6IGNwbHVzX3N0dWZmIGlzIGlnbm9y ZWQgaGVyZS4gICovCi0rICBpZiAoaSA8IFRZUEVfTkZJRUxEUyAodHlwZSkKLSsgICAgICB8fCAo VFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVlBUUl9CQVNF VFlQRSAodHlwZSkpKQotKyAgICAgIHx8IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSAmJiBUWVBF X0RZTkFNSUMgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkpCi0rICAgIFRZUEVfRFlOQU1JQyAo dHlwZSkgPSAxOwotK30KKysJICAgIGlmIChpbml0X2ZyYW1lKQorKwkgICAgICB7CisrCQlzdHJ1 Y3QgZnJhbWVfaWQgY3VycmVudF9pZAorKwkJICA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRf ZnJhbWUgKCkpOworKwkJaWYgKGZyYW1lX2lkX2VxIChjdXJyZW50X2lkLAorKwkJCQkgZWNzLT5l dmVudF90aHJlYWQtPmluaXRpYXRpbmdfZnJhbWUpKQorKwkJICB7CisrCQkgICAgLyogQ2FzZSAy LiAgRmFsbCB0aHJvdWdoLiAgKi8KKysJCSAgfQorKwkJZWxzZQorKwkJICB7CisrCQkgICAgLyog Q2FzZSAzLiAgKi8KKysJCSAgICBrZWVwX2dvaW5nIChlY3MpOworKwkJICAgIHJldHVybjsKKysJ CSAgfQorKwkgICAgICB9CiArCi0gLyogQWRkZWQgYnkgQnJ5YW4gQm9yZWhhbSwgS2V3aWxsLCBT dW4gU2VwIDE3IDE4OjA3OjE3IDE5ODkuCisrCSAgICAvKiBGb3IgQ2FzZXMgMSBhbmQgMiwgcmVt b3ZlIHRoZSBzdGVwLXJlc3VtZSBicmVha3BvaW50LAorKwkgICAgICAgaWYgaXQgZXhpc3RzLiAg Ki8KKysJICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVh ZCk7CisrCSAgfQogIAotICAgIElmIHRoaXMgaXMgYSBzdHViYmVkIHN0cnVjdCAoaS5lLiBkZWNs YXJlZCBhcyBzdHJ1Y3QgZm9vICopLCBzZWUgaWYKLUBAIC0xNDY4LDUxICsxNjQxLDM2IEBAIGNo ZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgICAgICAgfQotICAgICB9CisgCWVj cy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAxOworIAlwcmludF9zdG9wX3JlYXNvbiAoRU5E X1NURVBQSU5HX1JBTkdFLCAwKTsKK0BAIC01MDcwLDYgKzUxNDgsOTcgQEAgaW5zZXJ0X2xvbmdq bXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIg cGMpCisgICAgIHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMsIGJw X2xvbmdqbXBfcmVzdW1lKTsKKyB9CiAgCi0tICBpZiAoVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkp Ci0rICAvKiBjb3B5X3R5cGVfcmVjdXJzaXZlIGF1dG9tYXRpY2FsbHkgbWFrZXMgdGhlIHJlc3Vs dGluZyB0eXBlIGNvbnRhaW5pbmcgb25seQotKyAgICAgY29uc3RhbnQgdmFsdWVzIGV4cGVjdGVk IGJ5IHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uICAqLwotKyAgaWYgKFRZUEVfRFlOQU1J QyAodHlwZSkpCisrLyogSW5zZXJ0IGFuIGV4Y2VwdGlvbiByZXN1bWUgYnJlYWtwb2ludC4gIFRQ IGlzIHRoZSB0aHJlYWQgdGhyb3dpbmcKKysgICB0aGUgZXhjZXB0aW9uLiAgVGhlIGJsb2NrIEIg aXMgdGhlIGJsb2NrIG9mIHRoZSB1bndpbmRlciBkZWJ1ZyBob29rCisrICAgZnVuY3Rpb24uICBG UkFNRSBpcyB0aGUgZnJhbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCB0byB0aGlzCisrICAg ZnVuY3Rpb24uICBTWU0gaXMgdGhlIHN5bWJvbCBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQgaG9s ZGluZyB0aGUKKysgICB0YXJnZXQgUEMgb2YgdGhlIGV4Y2VwdGlvbi4gICovCisrCisrc3RhdGlj IHZvaWQKKytpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFk X2luZm8gKnRwLAorKwkJCQkgICAgc3RydWN0IGJsb2NrICpiLAorKwkJCQkgICAgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lLAorKwkJCQkgICAgc3RydWN0IHN5bWJvbCAqc3ltKQorK3sKKysgIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisrCisrICAvKiBXZSB3YW50IHRvIGlnbm9yZSBlcnJvcnMg aGVyZS4gICovCisrICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKICsgICAgewotKyAg ICAgIGh0YWJfdCBjb3BpZWRfdHlwZXM7Ci0rICAgICAgc3RydWN0IHR5cGUgKnR5cGVfb2xkID0g dHlwZTsKKysgICAgICBzdHJ1Y3Qgc3ltYm9sICp2c3ltOworKyAgICAgIHN0cnVjdCB2YWx1ZSAq dmFsdWU7CisrICAgICAgQ09SRV9BRERSIGhhbmRsZXI7CisrICAgICAgc3RydWN0IGJyZWFrcG9p bnQgKmJwOwogKwotKyAgICAgIGNvcGllZF90eXBlcyA9IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFz aCAoTlVMTCk7Ci0rICAgICAgdHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGll ZF90eXBlcyk7Ci0rICAgICAgaHRhYl9kZWxldGUgKGNvcGllZF90eXBlcyk7CisrICAgICAgdnN5 bSA9IGxvb2t1cF9zeW1ib2wgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSksIGIsIFZBUl9ET01B SU4sIE5VTEwpOworKyAgICAgIHZhbHVlID0gcmVhZF92YXJfdmFsdWUgKHZzeW0sIGZyYW1lKTsK KysgICAgICAvKiBJZiB0aGUgdmFsdWUgd2FzIG9wdGltaXplZCBvdXQsIHJldmVydCB0byB0aGUg b2xkIGJlaGF2aW9yLiAgKi8KKysgICAgICBpZiAoISB2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWx1 ZSkpCisrCXsKKysJICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwogKwotKyAg ICAgIGdkYl9hc3NlcnQgKFRZUEVfRFlOQU1JQyAodHlwZSkgPT0gMCk7CisrCSAgaWYgKGRlYnVn X2luZnJ1bikKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJImlu ZnJ1bjogZXhjZXB0aW9uIHJlc3VtZSBhdCAlbHhcbiIsCisrCQkJCSh1bnNpZ25lZCBsb25nKSBo YW5kbGVyKTsKKysKKysJICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2V0 X2ZyYW1lX2FyY2ggKGZyYW1lKSwKKysJCQkJCSAgICAgICBoYW5kbGVyLCBicF9leGNlcHRpb25f cmVzdW1lKTsKKysJICBicC0+dGhyZWFkID0gdHAtPm51bTsKKysJICBpbmZlcmlvcl90aHJlYWQg KCktPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IGJwOworKwl9CiArICAgIH0KKyt9CiAr Ci0rICBpZiAoVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkK LSAgICAgewotLSAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotICAgICAgIHN0cnVjdCB0 eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsKLSAKLSsgICAgICBpZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKLSsJVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkgPSB0YXJnZXRfdHlwZTsKLSAgICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlw ZSkgfHwgVFlQRV9UQVJHRVRfU1RVQiAodGFyZ2V0X3R5cGUpKQotIAl7Ci0gCSAgLyogRW1wdHku ICAqLwotIAl9Ci0gICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf QVJSQVkKLS0JICAgICAgICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQotLQkgICAgICAgJiYg KFRZUEVfQ09ERSAocmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCi0tCQkgICA9 PSBUWVBFX0NPREVfUkFOR0UpKQotKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfU1RSSU5HKQotIAl7Ci0gCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRo ZSBhcnJheSB0eXBlLCBiYXNlZCBvbiBpdHMKLS0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5k IHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4KLS0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxs IEFkYSBhcnJheXMgd2hlcmUgdGhlIGhpZ2ggYm91bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4g dGhlIGxvdyBib3VuZC4gKi8KLS0JICBjb25zdCBMT05HRVNUIGxvd19ib3VuZCA9IFRZUEVfTE9X X0JPVU5EIChyYW5nZV90eXBlKTsKLS0JICBjb25zdCBMT05HRVNUIGhpZ2hfYm91bmQgPSBUWVBF X0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpOwotLQkgIFVMT05HRVNUIGxlbjsKLS0KLS0JICBpZiAo aGlnaF9ib3VuZCA8IGxvd19ib3VuZCkKLS0JICAgIGxlbiA9IDA7Ci0tCSAgZWxzZSB7Ci0tCSAg ICAvKiBGb3Igbm93LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8g YmUgMAotLQkgICAgICAgaWYgaXRzIGxlbmd0aCBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUg YmVsb3cgYXNzdW1lcwotLQkgICAgICAgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAt eCArIFVMT05HRVNUX01BWCArIDEsCi0tCSAgICAgICB3aGljaCBpcyB0ZWNobmljYWxseSBub3Qg Z3VhcmFudGVlZCBieSBDLCBidXQgaXMgdXN1YWxseSB0cnVlCi0tCSAgICAgICAoYmVjYXVzZSBp dCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZCB3aXRoIGl0cwotLQkgICAgICAgaGln aC1vcmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQKLS0JICAgICAgIGhpZ2hfYm91 bmQtbG93X2JvdW5kIGlzIGFsd2F5cyByZXByZXNlbnRhYmxlIGluCi0tCSAgICAgICBVTE9OR0VT VCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92ZXJmbG93cywKLS0JICAgICAg IGl0IG92ZXJmbG93cyB0byAwLiAgV2UgbXVzdCBjaGFuZ2UgdGhlc2UgdGVzdHMgaWYgd2UgCi0t CSAgICAgICBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVfTEVO R1RICi0tCSAgICAgICBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gKi8KLS0JICAgIFVM T05HRVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3VuZDsKLS0JICAgIFVMT05H RVNUIHRsZW4gPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOwotLQotLQkgICAgbGVuID0gdGxl biAqICh1aGlnaCAtIHVsb3cgKyAxKTsKLS0JICAgIGlmICh0bGVuID09IDAgfHwgKGxlbiAvIHRs ZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCi0tCQl8fCBsZW4gPiBVSU5UX01BWCkKLS0JICAgICAg bGVuID0gMDsKLS0JICB9Ci0tCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gbGVuOwotKwkgICAgIG51 bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0eXBlJ3MgbGVuZ3RoLiAgKi8KLSsJICBU WVBFX0xFTkdUSCAodHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQgKHR5cGUsIHRhcmdldF90eXBlLCAw KTsKLSAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7Ci0gCX0KLSAgICAgICBlbHNlIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLUBAIC0xNTIwLDkgKzE2Nzgs MTIgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCi0gCSAgVFlQRV9MRU5HVEgg KHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKLSAJICBUWVBFX1RBUkdFVF9TVFVC ICh0eXBlKSA9IDA7Ci0gCX0KLSsgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMDsKLSAgICAg fQorKy8qIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2Vw dGVkLiAgQ2hlY2sgdG8KKysgICBzZWUgd2hldGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRp b24gaXMgb2YgaW50ZXJlc3QsIGFuZCBpZiBzbywKKysgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3Vt ZSBicmVha3BvaW50IHRoZXJlLiAgKi8KICsKLSAgIC8qIENhY2hlIFRZUEVfTEVOR1RIIGZvciBm dXR1cmUgdXNlLiAgKi8KLSAgIFRZUEVfTEVOR1RIIChvcmlnX3R5cGUpID0gVFlQRV9MRU5HVEgg KHR5cGUpOworK3N0YXRpYyB2b2lkCisrY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4 ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MsCisrCQkJc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l LCBzdHJ1Y3Qgc3ltYm9sICpmdW5jKQorK3sKKysgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CiAr Ci0gICByZXR1cm4gdHlwZTsKLSB9Ci0gCi1AQCAtMTc5MSw2ICsxOTUyLDggQEAgaW5pdF90eXBl IChlbnVtIHR5cGVfY29kZSBjb2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3MsCi0gICAgIFRZUEVf Tk9UVEVYVCAodHlwZSkgPSAxOwotICAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0ZJWEVEX0lOU1RB TkNFKQotICAgICBUWVBFX0ZJWEVEX0lOU1RBTkNFICh0eXBlKSA9IDE7Ci0rICBpZiAoZmxhZ3Mg JiBUWVBFX0ZMQUdfR05VX0lGVU5DKQotKyAgICBUWVBFX0dOVV9JRlVOQyAodHlwZSkgPSAxOwot IAotICAgaWYgKG5hbWUpCi0gICAgIFRZUEVfTkFNRSAodHlwZSkgPSBvYnNhdmVzdHJpbmcgKG5h bWUsIHN0cmxlbiAobmFtZSksCi1AQCAtMTgxNSw2ICsxOTc4LDcgQEAgaW5pdF90eXBlIChlbnVt IHR5cGVfY29kZSBjb2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3MsCi0gICAgICAgICBUWVBFX1NQ RUNJRklDX0ZJRUxEICh0eXBlKSA9IFRZUEVfU1BFQ0lGSUNfQ0FMTElOR19DT05WRU5USU9OOwot ICAgICAgICAgYnJlYWs7Ci0gICAgIH0KKysgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxM KQorKyAgICB7CisrICAgICAgc3RydWN0IGJsb2NrICpiOworKyAgICAgIHN0cnVjdCBkaWN0X2l0 ZXJhdG9yIGl0ZXI7CisrICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOworKyAgICAgIGludCBhcmdu byA9IDA7CiArCi0gICByZXR1cm4gdHlwZTsKLSB9Ci0gCi1AQCAtMjk5MiwzMyArMzE1Niw0MiBA QCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3Jo cykKLSB9Ci0gCi0gLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVf cmVjdXJzaXZlIHRvIHdhbGsKLS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2Ug T0JKRklMRSdzIG9ic3RhY2ssIGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRl bGV0ZWQuICAqLwotKyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJf dAotIGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0g ewotLSAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlw ZV9wYWlyX2VxLAotLQkJCSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAot LQkJCSAgICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29i c3RhY2tfZGVhbGxvY2F0ZSk7Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAg ICAgLyogTlVMTCBPQkpGSUxFIGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250 YWluZWQgaW4KLSsJIE9CSkZJTEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZB TFVFX0hJU1RPUllfQ0hBSU4uICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0 ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3Jl YXRlICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsg IGVsc2UKLSsgICAgewotKyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBP QkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVz IGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0 dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2Vx LAotKwkJCQkgICB4ZnJlZSwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFz aHRhYl9vYnN0YWNrX2FsbG9jYXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUp OworKyAgICAgIC8qIFRoZSBleGNlcHRpb24gYnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVjaWZp YyBicmVha3BvaW50IG9uCisrCSB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJlZCBh czoKKysJIAorKwkgdm9pZCBfVW53aW5kX0RlYnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpoYW5k bGVyKTsKKysJIAorKwkgVGhlIENGQSBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRvIHdo aWNoIGNvbnRyb2wgaXMKKysJIGFib3V0IHRvIGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBpcyB0 aGUgZGVzdGluYXRpb24gUEMuCisrCSAKKysJIFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQgYSB0 ZW1wb3JhcnkgYnJlYWtwb2ludCBhdCBIQU5ETEVSLgorKwkgVGhpcyBpcyBub3QgZXh0cmVtZWx5 IGVmZmljaWVudCBidXQgaXQgYXZvaWRzIGlzc3VlcyBpbiBnZGIKKysJIHdpdGggY29tcHV0aW5n IHRoZSBEV0FSRiBDRkEsIGFuZCBpdCBhbHNvIHdvcmtzIGV2ZW4gaW4gd2VpcmQKKysJIGNhc2Vz IHN1Y2ggYXMgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCisrCSBo YW5kbGVyLiAgKi8KKysKKysgICAgICBiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKKysg ICAgICBBTExfQkxPQ0tfU1lNQk9MUyAoYiwgaXRlciwgc3ltKQorKwl7CisrCSAgaWYgKCFTWU1C T0xfSVNfQVJHVU1FTlQgKHN5bSkpCisrCSAgICBjb250aW51ZTsKKysKKysJICBpZiAoYXJnbm8g PT0gMCkKKysJICAgICsrYXJnbm87CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICBpbnNlcnRf ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCwKKysJCQkJCQkg IGIsIGZyYW1lLCBzeW0pOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQogKyAgICB9Ci0g fQotIAotLS8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRSwgaWYgaXQgaXMgYXNz b2NpYXRlZCB3aXRoCi0tICAgT0JKRklMRS4gIFJldHVybiBhIG5ldyB0eXBlIGFsbG9jYXRlZCB1 c2luZyBtYWxsb2MsIGEgc2F2ZWQgdHlwZSBpZgotLSAgIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVk IFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyksIG9yIFRZUEUgaWYgaXQgaXMKLS0gICBub3QgYXNz b2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLwotKy8qIEEgaGVscGVyIGZvciBjb3B5X3R5cGVfcmVj dXJzaXZlLiAgVGhpcyBkb2VzIGFsbCB0aGUgd29yay4gIE9CSkZJTEUgaXMgdXNlZAotKyAgIG9u bHkgZm9yIGFuIGFzc2VydGlvbiBjaGVja2luZy4gICovCi0gCi0tc3RydWN0IHR5cGUgKgotLWNv cHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKLS0JCSAgICAgc3Ry dWN0IHR5cGUgKnR5cGUsCi0tCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCi0rc3RhdGljIHN0 cnVjdCB0eXBlICoKLStjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCAKLSsJCSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgICBodGFiX3QgY29w aWVkX3R5cGVzKQorK30KKysKKyBzdGF0aWMgdm9pZAorIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBl eGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogIHsKLSAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0 b3JlZCwgcGFpcjsKLSAgIHZvaWQgKipzbG90OwotICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwot IAotLSAgaWYgKCEgVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JK RklMRV9PV05FRCAodHlwZSkgJiYgIVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0 eXBlOwotIAotICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlw ZXMgaW4gb3RoZXIgb2JqZmlsZXM7Ci1AQCAtMzAzMyw4ICszMjA2LDEwIEBAIGNvcHlfdHlwZV9y ZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBhbGxvY190 eXBlX2FyY2ggKGdldF90eXBlX2FyY2ggKHR5cGUpKTsKLSAKLSAgIC8qIFdlIG11c3QgYWRkIHRo ZSBuZXcgdHlwZSB0byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQotLSAgICAg d2UgZW5jb3VudGVyIHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxv dy4gICovCi0tICBzdG9yZWQgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLCBzaXplb2YgKHN0cnVjdCB0eXBlX3BhaXIpKTsKLSsgICAgIHdlIGVuY291bnRlciB0aGlz IHR5cGUgYWdhaW4gZHVyaW5nIGEgcmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQK LSsgICAgIGJlIGFsbG9jYXRlZCBmcm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSBy ZW1vdmluZyBPQkpGSUxFLCB0aGlzCi0rICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4 ZnJlZSBpcyBjYWxsZWQgZm9yIGl0IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KLSsgIHN0b3JlZCA9 IHhtYWxsb2MgKHNpemVvZiAoKnN0b3JlZCkpOwotICAgc3RvcmVkLT5vbGQgPSB0eXBlOwotICAg c3RvcmVkLT5uZXcgPSBuZXdfdHlwZTsKLSAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMwNDUsNiAr MzIyMCwxOSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK LSAgIFRZUEVfT0JKRklMRV9PV05FRCAobmV3X3R5cGUpID0gMDsKLSAgIFRZUEVfT1dORVIgKG5l d190eXBlKS5nZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7CitkaWZmIC0tZ2l0IGEvZ2Ri L2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCitpbmRleCA5M2FkZmNkLi4zNDQxMmE2IDEw MDY0NAorLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCisrKysgYi9nZGIvbGludXgtbmF0LmMKK0BAIC0y NTg3LDYgKzI1ODcsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKKyAgIHJldHVybiBscC0+c3RvcHBl ZF9kYXRhX2FkZHJlc3NfcDsKKyB9CiAgCi0rICAvKiBUWVBFX01BSU5fVFlQRSBtZW1vcnkgY29w eSBhYm92ZSByZXdyb3RlIHRoZSBUWVBFX0RJU0NBUkRBQkxFIGZsYWcgc28gd2UKLSsgICAgIG5l ZWQgdG8gaW5pdGlhbGl6ZSBpdCBhZ2Fpbi4gIEFuZCBldmVuIGlmIFRZUEUgd2FzIGFscmVhZHkg ZGlzY2FyZGFibGUKLSsgICAgIE5FV19UWVBFIHNvIGZhciBpcyBub3QgcmVnaXN0ZXJlZCBpbiBU WVBFX0RJU0NBUkRBQkxFX1RBQkxFLiAgKi8KLSsgIFRZUEVfRElTQ0FSREFCTEUgKG5ld190eXBl KSA9IDA7Ci0rICBzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAobmV3X3R5cGUpOworKy8qIEluIGBz ZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgd2l0aCBtdWx0aXRocmVhZGVkIHBhcmVudCB3ZSBu ZWVkIHRvIGRldGFjaAorKyAgIHdhdGNocG9pbnRzIGZyb20gYWxsIHRoZSBMV1BzLiAgSW4gc3Vj aCBjYXNlIElORkVSSU9SX1BUSUQgd2lsbCBiZSB0aGUKKysgICBub24tdGhyZWFkZWQgbmV3IGNo aWxkIHdoaWxlIExXUF9MSVNUIHdpbGwgc3RpbGwgY29udGFpbiBhbGwgdGhlIHRocmVhZHMgb2YK KysgICB0aGUgcGFyZW50IGJlaW5nIGRldGFjaGVkLiAgKi8KICsKLSsgIC8qIFByZS1jbGVhciB0 aGUgZmllbGRzIHByb2Nlc3NlZCBieSBkZWxldGVfbWFpbl90eXBlLiAgSWYgRFdBUkYgYmxvY2sK LSsgICAgIGV2YWx1YXRpb25zIGJlbG93IGNhbGwgZXJyb3Igd2Ugd291bGQgbGVhdmUgYW4gdW5m cmVlYWJsZSBUWVBFLiAgKi8KLSsgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IE5VTEw7 Ci0rICBUWVBFX1ZQVFJfQkFTRVRZUEUgKG5ld190eXBlKSA9IE5VTEw7Ci0rICBUWVBFX05GSUVM RFMgKG5ld190eXBlKSA9IDA7Ci0rICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gTlVMTDsKKytz dGF0aWMgaW50CisrbGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBz dHJ1Y3QgbHdwX2luZm8gKmxwOworKyAgaW50IGZvdW5kID0gMCwgcmV0dmFsID0gMDsKKysgIHB0 aWRfdCBmaWx0ZXIgPSBwaWRfdG9fcHRpZCAocHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7 CisrICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOwog KwotICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCi0gICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0g eHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7Ci0gICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkp Ci1AQCAtMzA1MywxMiArMzI0MSw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKLSAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9IFRZUEVf SU5TVEFOQ0VfRkxBR1MgKHR5cGUpOwotICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9IFRZUEVf TEVOR1RIICh0eXBlKTsKLSAKLSsgIGlmIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKQotKyAg ICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpKTsK KysgIGZvciAobHAgPSBsd3BfbGlzdDsgbHA7IGxwID0gbHAtPm5leHQpCisrICAgIGlmIChwdGlk X21hdGNoIChscC0+cHRpZCwgZmlsdGVyKSkKKysgICAgICB7CisrCWluZmVyaW9yX3B0aWQgPSBs cC0+cHRpZDsKKysJcmV0dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgp OworKwlmb3VuZCA9IDE7CisrICAgICAgfQogKwotKyAgICAgIGlmICghZHdhcmZfbG9jZXhwcl9i YXRvbl9ldmFsIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKSkKLSsgICAgICAgIFRZUEVfTk9U X0FMTE9DQVRFRCAobmV3X3R5cGUpID0gMTsKLSsgICAgICBUWVBFX0FMTE9DQVRFRCAobmV3X3R5 cGUpID0gTlVMTDsKLSsgICAgfQorKyAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiArCi0rICBp ZiAoVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCisrICBpZiAoIWZvdW5kKQogKyAgICB7Ci0r ICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSk7CisrICAg ICAgZ2RiX2Fzc2VydCAoIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOwogKwotKyAgICAgIGlmICgh ZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkpCi0r ICAgICAgICBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSAxOwotKyAgICAgIFRZUEVf QVNTT0NJQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgICByZXR2YWwgfD0gbGludXhfb3Bz LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7CiArICAgIH0KICsKLSsgIGlmICghVFlQRV9EQVRB X0xPQ0FUSU9OX0lTX0FERFIgKG5ld190eXBlKQotKyAgICAgICYmIFRZUEVfREFUQV9MT0NBVElP Tl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpKQotKyAgICB7Ci0rICAgICAgaWYgKFRZUEVfTk9UX0FM TE9DQVRFRCAobmV3X3R5cGUpCi0rICAgICAgICAgIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5l d190eXBlKSkKLSsJVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkgPSBO VUxMOwotKyAgICAgIGVsc2UKLSsJewotKwkgIFRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSIChu ZXdfdHlwZSkgPSAxOwotKwkgIFRZUEVfREFUQV9MT0NBVElPTl9BRERSIChuZXdfdHlwZSkgPSBk d2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkJICAgIChUWVBFX0RBVEFfTE9DQVRJT05fRFdB UkZfQkxPQ0sgKG5ld190eXBlKSk7Ci0rCX0KLSsgICAgfQorKyAgcmV0dXJuIHJldHZhbDsKKyt9 CiArCi0gICAvKiBDb3B5IHRoZSBmaWVsZHMuICAqLwotICAgaWYgKFRZUEVfTkZJRUxEUyAodHlw ZSkpCi0gICAgIHsKLSAgICAgICBpbnQgaSwgbmZpZWxkczsKKyAvKiBXYWl0IHVudGlsIExQIGlz IHN0b3BwZWQuICAqLwogIAotKyAgICAgIC8qIFRZUEVfQ09ERV9SQU5HRSB1c2VzIFRZUEVfUkFO R0VfREFUQSBvZiB0aGUgdW5pb24gd2l0aCBUWVBFX0ZJRUxEUy4gICovCi0rICAgICAgZ2RiX2Fz c2VydCAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfUkFOR0UpOwotKwotICAgICAgIG5m aWVsZHMgPSBUWVBFX05GSUVMRFMgKHR5cGUpOwotKyAgICAgIFRZUEVfTkZJRUxEUyAobmV3X3R5 cGUpID0gbmZpZWxkczsKLSAgICAgICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gWENBTExPQyAo bmZpZWxkcywgc3RydWN0IGZpZWxkKTsKLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsg aSsrKQotIAl7Ci1AQCAtMzA2Nyw4ICszMjkxLDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCSAgVFlQRV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwg aSkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGkpOwotIAkgIGlmIChUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIGkpKQotIAkgICAgVFlQRV9GSUVMRF9UWVBFIChuZXdfdHlwZSwgaSkKLS0JICAg ICAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUs IGkpLAotLQkJCQkgICAgIGNvcGllZF90eXBlcyk7Ci0rCSAgICAgID0gY29weV90eXBlX3JlY3Vy c2l2ZV8xIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAotKwkJCQkgICAgICAg Y29waWVkX3R5cGVzKTsKLSAJICBpZiAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSkKLSAJICAg IFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUsIGkpID0gCi0gCSAgICAgIHhzdHJkdXAgKFRZUEVf RklFTERfTkFNRSAodHlwZSwgaSkpOwotQEAgLTMwOTUsMjQgKzMzMTksMTY2IEBAIGNvcHlfdHlw ZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAl9Cisgc3RhdGljIGludAor QEAgLTU2MDYsNiArNTYzOSw4IEBAIGxpbnV4X25hdF9hZGRfdGFyZ2V0IChzdHJ1Y3QgdGFyZ2V0 X29wcyAqdCkKKyAgIHQtPnRvX3RocmVhZF9hZGRyZXNzX3NwYWNlID0gbGludXhfbmF0X3RocmVh ZF9hZGRyZXNzX3NwYWNlOworICAgdC0+dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gbGludXhf bmF0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNz ID0gbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworKyAgaWYgKGxpbnV4X29wcy0+dG9f ZGV0YWNoX3dhdGNocG9pbnRzKQorKyAgICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBsaW51 eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzOworIAorICAgdC0+dG9fY2FuX2FzeW5jX3AgPSBsaW51 eF9uYXRfY2FuX2FzeW5jX3A7CisgICB0LT50b19pc19hc3luY19wID0gbGludXhfbmF0X2lzX2Fz eW5jX3A7CitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuYyBiL2dkYi9saW51eC10ZGVwLmMK K2luZGV4IDA3ZmQ2N2MuLjI1MjQyNTAgMTAwNjQ0CistLS0gYS9nZGIvbGludXgtdGRlcC5jCisr KysgYi9nZGIvbGludXgtdGRlcC5jCitAQCAtMjMsNiArMjMsOCBAQAorICNpbmNsdWRlICJhdXh2 LmgiCisgI2luY2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCisrI2lu Y2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUgImluZmNhbGwuaCIKKyAKKyAvKiBUaGlzIGZ1bmN0 aW9uIGlzIHN1aXRhYmxlIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3QKKyAgICBleHRlbmQv b3ZlcnJpZGUgdGhlIHN0YW5kYXJkIHNpZ2luZm8gc3RydWN0dXJlLiAgKi8KK2RpZmYgLS1naXQg YS9nZGIvbWkvbWktY21kLXZhci5jIGIvZ2RiL21pL21pLWNtZC12YXIuYworaW5kZXggMzEwYWRl OS4uZDg3MTBhMSAxMDA2NDQKKy0tLSBhL2dkYi9taS9taS1jbWQtdmFyLmMKKysrKyBiL2dkYi9t aS9taS1jbWQtdmFyLmMKK0BAIC03MDIsNyArNzAyLDYgQEAgbWlfY21kX3Zhcl91cGRhdGUgKGNo YXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICAgICAgfQorICAgZWxzZQorICAg ICB7CistICAgICAgLyogR2V0IHZhcm9iaiBoYW5kbGUsIGlmIGEgdmFsaWQgdmFyIG9iaiBuYW1l IHdhcyBzcGVjaWZpZWQgKi8KKyAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0 X2hhbmRsZSAobmFtZSk7CiAgCi0rICAvKiBCb3RoIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NL IGFuZCBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgd2VyZQotKyAgICAgcG9zc2libHkg Y29udmVydGVkLiAgKi8KLSsgIFRZUEVfRFlOQU1JQyAobmV3X3R5cGUpID0gMDsKKyAgICAgICB2 YXJvYmpfdXBkYXRlX29uZSAodmFyLCBwcmludF92YWx1ZXMsIDEgLyogZXhwbGljaXQgKi8pOwor ZGlmZiAtLWdpdCBhL2dkYi9taW5zeW1zLmMgYi9nZGIvbWluc3ltcy5jCitpbmRleCBjYjQ1NDVj Li45MmQ0MDI3IDEwMDY0NAorLS0tIGEvZ2RiL21pbnN5bXMuYworKysrIGIvZ2RiL21pbnN5bXMu YworQEAgLTMzNyw4ICszMzcsOSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoY29uc3Qg Y2hhciAqbmFtZSwgc3RydWN0IG9iamZpbGUgKm9iamYpCisgCSAgICAgICBtc3ltYm9sID0gbXN5 bWJvbC0+aGFzaF9uZXh0KQorIAkgICAgeworIAkgICAgICBpZiAoc3RyY21wIChTWU1CT0xfTElO S0FHRV9OQU1FIChtc3ltYm9sKSwgbmFtZSkgPT0gMCAmJgorLQkJICAoTVNZTUJPTF9UWVBFICht c3ltYm9sKSA9PSBtc3RfdGV4dCB8fAorLQkJICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBt c3RfZmlsZV90ZXh0KSkKKysJCSAgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQK KysJCSAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jCisr CQkgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQorIAkJewor IAkJICBzd2l0Y2ggKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkpCisgCQkgICAgeworQEAgLTcwMCw2 ICs3MDEsMTYgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcGMpCisg ICByZXR1cm4gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKHBjLCBOVUxMKTsK KyB9CisgCisrLyogUmV0dXJuIG5vbi16ZXJvIGlmZiBQQyBpcyBpbiBmdW5jdGlvbiBpbXBsZW1l bnRpbmcgZ251LWlmdW5jIHNlbGVjdGlvbi4gICovCiArCi0gICAvKiBGb3IgcmFuZ2UgdHlwZXMs IGNvcHkgdGhlIGJvdW5kcyBpbmZvcm1hdGlvbi4gKi8KLS0gIGlmIChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9SQU5HRSkKLSsgIGlmIChUWVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBF X0NPREVfUkFOR0UpCi0gICAgIHsKLSAgICAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9 IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwotICAgICAgICpUWVBFX1JB TkdFX0RBVEEgKG5ld190eXBlKSA9ICpUWVBFX1JBTkdFX0RBVEEgKHR5cGUpOworK2ludAorK2lu X2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpCisreworKyAgc3RydWN0IG1pbmltYWxfc3lt Ym9sICptc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChwYyk7CiArCi0rICAg ICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LmtpbmQpCi0rCXsKLSsJ Y2FzZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdF X0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9i YXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0 ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9U X0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBF LgotKwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZ UEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFt ZXMgKCkpCi0rCSAgICB7Ci0rCSAgICAgIC8qIFdlIHNob3VsZCBzZXQgMSBmb3IgRm9ydHJhbiBi dXQgaG93IHRvIGZpbmQgdGhlIGxhbmd1YWdlPyAgKi8KLSsJICAgICAgVFlQRV9MT1dfQk9VTkQg KG5ld190eXBlKSA9IDA7Ci0rCSAgICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5 cGUpID0gMTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5 cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCi0rCQkJCShUWVBFX1JBTkdFX0RBVEEgKG5l d190eXBlKS0+bG93LnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5 cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgYnJlYWs7Ci0r CWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJICAgIENPUkVf QUREUiBhZGRyOwotKwotKwkgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbicgaXMg dG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgICBpdCBpcyBleHBlY3RlZCB0byBi ZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAgICAgICBUWVBFX05PVF9BTExP Q0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KLSsJ ICAgICAgICovCi0rCSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKQotKwkg ICAgICAgICYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19zdGFja19m cmFtZXMgKCkKLSsJICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJCSAgKFRZ UEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0r CQkgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50eXBl LCAmYWRkcikpCi0rCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBhZGRyOwotKwkg ICAgZWxzZQotKwkgICAgICB7Ci0rCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0 IGhvdyB0byBmaW5kIHRoZSBsYW5ndWFnZT8gICovCi0rCQlUWVBFX0xPV19CT1VORCAobmV3X3R5 cGUpID0gMDsKLSsJCVRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJ ICAgICAgfQotKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kID0gUkFO R0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAg ICBzd2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQpCi0rCXsKLSsJ Y2FzZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdF X0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9i YXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0 ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9U X0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBF LgotKwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZ UEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFt ZXMgKCkpCi0rCSAgICB7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQ RV9MT1dfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORF9VTkRF RklORUQgKG5ld190eXBlKSA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9ISUdI X0JPVU5EIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkgICAgICAg KFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZ UEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NP TlNUQU5UOwotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElT VDoKLSsJICB7Ci0rCSAgICBDT1JFX0FERFIgYWRkcjsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdh cmYyX2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAg ICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgot KwkgICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBu b3QgdmFsaWQgZm9yIFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxM T0NBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5l d190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpCi0rCSAgICAgICAgJiYgZHdhcmZfbG9jbGlz dF9iYXRvbl9ldmFsCi0rCQkgICAgICAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gu dS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQkgICAgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdf dHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkgICAgICAgJmFkZHIpKQotKwkg ICAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IGFkZHI7Ci0rCSAgICBlbHNlCi0rCSAg ICAgIHsKLSsJCVRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5l d190eXBlKSAtIDE7Ci0rCQlUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAx OwotKwkgICAgICB9Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5k ID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KKysg IHJldHVybiBtc3ltYm9sICYmIE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251 X2lmdW5jOworK30KICsKLSsgICAgICBzd2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUp LT5ieXRlX3N0cmlkZS5raW5kKQotKwl7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFO VDoKLSsJICBicmVhazsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkg IC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2Jq ZmlsZSBzbwotKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hF Q0tfVFlQRURFRi4KLSsJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09D SUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05P VF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkK LSsJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQotKwkgICAgVFlQRV9CWVRFX1NUUklE RSAobmV3X3R5cGUpID0gMDsKLSsJICBlbHNlCi0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdf dHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkoVFlQRV9SQU5HRV9EQVRBIChu ZXdfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFU QSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rCSAgICA9IFJBTkdFX0JPVU5EX0tJTkRf Q09OU1RBTlQ7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NM SVNUOgotKwkgIHsKLSsJICAgIENPUkVfQUREUiBhZGRyID0gMDsKKyAvKiBGaW5kIHRoZSBtaW5p bWFsIHN5bWJvbCBuYW1lZCBOQU1FLCBhbmQgcmV0dXJuIGJvdGggdGhlIG1pbnN5bQorICAgIHN0 cnVjdCBhbmQgaXRzIG9iamZpbGUuICBUaGlzIG9ubHkgY2hlY2tzIHRoZSBsaW5rYWdlIG5hbWUu ICBTZXRzCisgICAgKk9CSkZJTEVfUCBhbmQgcmV0dXJucyB0aGUgbWluaW1hbCBzeW1ib2wsIGlm IGl0IGlzIGZvdW5kLiAgSWYgaXQKK0BAIC03NjksNiArNzgwLDcgQEAgcHJpbV9yZWNvcmRfbWlu aW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBhZGRyZXNzLAorICAgc3dp dGNoIChtc190eXBlKQorICAgICB7CisgICAgIGNhc2UgbXN0X3RleHQ6CisrICAgIGNhc2UgbXN0 X3RleHRfZ251X2lmdW5jOgorICAgICBjYXNlIG1zdF9maWxlX3RleHQ6CisgICAgIGNhc2UgbXN0 X3NvbGliX3RyYW1wb2xpbmU6CisgICAgICAgc2VjdGlvbiA9IFNFQ1RfT0ZGX1RFWFQgKG9iamZp bGUpOworQEAgLTEyMzUsNyArMTI0Nyw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQg KHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgQ09SRV9BRERSIHBjKQorICAgICB7CisgICAgICAg QUxMX01TWU1CT0xTIChvYmpmaWxlLCBtc3ltYm9sKQorICAgICAgIHsKKy0JaWYgKE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKKysJaWYgKChNU1lNQk9MX1RZUEUgKG1zeW1ib2wp ID09IG1zdF90ZXh0CisrCSAgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0 X2dudV9pZnVuYykKKyAJICAgICYmIHN0cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJv bCksCisgCQkgICAgICAgU1lNQk9MX0xJTktBR0VfTkFNRSAodHN5bWJvbCkpID09IDApCisgCSAg cmV0dXJuIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKK2RpZmYgLS1naXQgYS9nZGIv cC1sYW5nLmMgYi9nZGIvcC1sYW5nLmMKK2luZGV4IDA4NzM4YWMuLjY0ZDJlOWYgMTAwNjQ0Cist LS0gYS9nZGIvcC1sYW5nLmMKKysrKyBiL2dkYi9wLWxhbmcuYworQEAgLTIyMiw3ICsyMjIsMTEg QEAgcGFzY2FsX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAq dHlwZSwKKyAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CisgICBpbnQgaW5fcXVv dGVzID0gMDsKKyAgIGludCBuZWVkX2NvbW1hID0gMDsKKy0gIGludCB3aWR0aCA9IFRZUEVfTEVO R1RIICh0eXBlKTsKKysgIGludCB3aWR0aDsKKysKKysgIC8qIFByZXNlcnZlIFRZUEUncyBvcmln aW5hbCB0eXBlLCBqdXN0IHNldCBpdHMgTEVOR1RILiAgKi8KKysgIGNoZWNrX3R5cGVkZWYgKHR5 cGUpOworKyAgd2lkdGggPSBUWVBFX0xFTkdUSCAodHlwZSk7CisgCisgICAvKiBJZiB0aGUgc3Ry aW5nIHdhcyBub3QgdHJ1bmNhdGVkIGR1ZSB0byBgc2V0IHByaW50IGVsZW1lbnRzJywgYW5kCisg ICAgICB0aGUgbGFzdCBieXRlIG9mIGl0IGlzIGEgbnVsbCwgd2UgZG9uJ3QgcHJpbnQgdGhhdCwg aW4gdHJhZGl0aW9uYWwgQworZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMgYi9nZGIvcC12 YWxwcmludC5jCitpbmRleCA0ZDM5YmVkLi5kMGRkZWJjIDEwMDY0NAorLS0tIGEvZ2RiL3AtdmFs cHJpbnQuYworKysrIGIvZ2RiL3AtdmFscHJpbnQuYworQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5j bHVkZSAicC1sYW5nLmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJjcC1zdXBw b3J0LmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAwKKyAKKyAKK0BAIC02OCw4ICs2OSwy NyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCisgICBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlOworICAgTE9OR0VTVCB2YWw7Cisg ICBDT1JFX0FERFIgYWRkcjsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKyAgc3RydWN0 IHR5cGUgKnNhdmVkX3R5cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBh ZGRyZXNzOworKyAgCisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDAp OworKyAgdHlwZSA9IG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7Cisr ICBpZiAodHlwZSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVj dF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKKysgICAgICBn ZGJfZmx1c2ggKHN0cmVhbSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAg IHJldHVybiAwOworKyAgICB9CisrICBpZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRyZXNzKQorKyAg ICB7CisrICAgICAgc2l6ZV90IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKyAKKy0gIENI RUNLX1RZUEVERUYgKHR5cGUpOworKyAgICAgIHZhbGFkZHIgPSB4bWFsbG9jIChsZW5ndGgpOwor KyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIChnZGJfYnl0ZSAqKSB2YWxhZGRyKTsKKysgICAg ICByZWFkX21lbW9yeSAoYWRkcmVzcywgKGdkYl9ieXRlICopIHZhbGFkZHIsIGxlbmd0aCk7Cisr ICAgIH0KKyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKKyAgICAgeworICAgICBjYXNlIFRZ UEVfQ09ERV9BUlJBWToKK0BAIC0xMjUsOCArMTQ1LDkgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorIAkJeworIAkJICBpID0g MDsKKyAJCX0KKy0JICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzICh0eXBlLCB2YWxhZGRy ICsgZW1iZWRkZWRfb2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sCistCQkJCQlyZWN1cnNlLCBvcmln aW5hbF92YWx1ZSwgb3B0aW9ucywgaSk7CisrCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50 cyAoc2F2ZWRfdHlwZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwKKysJCQkJCXNhdmVkX2Fk ZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwKKysJCQkJCW9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBp KTsKKyAJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAifSIpOworIAkgICAgfQorIAkg IGJyZWFrOworQEAgLTE2NCw2ICsxODUsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgCSAgLyogVHJ5IHRvIHByaW50IHdo YXQgZnVuY3Rpb24gaXQgcG9pbnRzIHRvLiAgKi8KKyAJICBwcmludF9hZGRyZXNzX2RlbWFuZ2xl IChnZGJhcmNoLCBhZGRyLCBzdHJlYW0sIGRlbWFuZ2xlKTsKKyAJICAvKiBSZXR1cm4gdmFsdWUg aXMgaXJyZWxldmFudCBleGNlcHQgZm9yIHN0cmluZyBwb2ludGVycy4gICovCisrCSAgZG9fY2xl YW51cHMgKGJhY2tfdG8pOworIAkgIHJldHVybiAoMCk7CisgCX0KKyAKK0BAIC0yNTIsNiArMjc0 LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAorICAgICAgIC8qIFJldHVybiBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVk LCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nCisgCSAnXDAnIGlmIHdlIHJlYWNoZWQgdGhlIGVu ZC4gIHZhbF9wcmludF9zdHJpbmcgdGFrZXMgY2FyZSBpbmNsdWRpbmcKKyAJIHRoZSB0ZXJtaW5h dGluZyAnXDAnIGlmIG5lY2Vzc2FyeS4gICovCisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OworICAgICAgIHJldHVybiBpOworIAorICAgICAgIGJyZWFrOworQEAgLTU1NCw2ICs1NzcsNyBA QCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCisgICAgICAgZXJyb3IgKF8oIkludmFsaWQgcGFzY2FsIHR5cGUgY29kZSAlZCBpbiBz eW1ib2wgdGFibGUuIiksIFRZUEVfQ09ERSAodHlwZSkpOworICAgICB9CisgICBnZGJfZmx1c2gg KHN0cmVhbSk7CisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisgICByZXR1cm4gKDApOworIH0K KyAMCitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYworaW5kZXggYzg4NWM2 YS4uY2JmOWM2NSAxMDA2NDQKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysgYi9nZGIvcGFyc2UuYwor QEAgLTQ4Nyw5ICs0ODcsMjEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5 bWJvbCAqbXN5bWJvbCkKKyAgIHBjID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRk ciAoZ2RiYXJjaCwgYWRkciwgJmN1cnJlbnRfdGFyZ2V0KTsKKyAgIGlmIChwYyAhPSBhZGRyKQor ICAgICB7CisrICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICppZnVuY19tc3ltID0gbG9va3Vw X21pbmltYWxfc3ltYm9sX2J5X3BjIChwYyk7CiArCi0rCSAgICAvKiBgc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KLSsJICAgICAgIGl0 IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAg ICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZh bGlkIGZvciBUWVBFLgotKwkgICAgICAgKi8KLSsJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRF RCAobmV3X3R5cGUpCi0rCQkmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBo YXNfc3RhY2tfZnJhbWVzICgpKQotKwkgICAgICBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJ ICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9s b2NsaXN0LmxvY2xpc3QsCi0rCQlUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJp ZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkmYWRkcik7Ci0rCSAgICBUWVBFX0JZVEVfU1RS SURFIChuZXdfdHlwZSkgPSBhZGRyOwotKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSkt PmJ5dGVfc3RyaWRlLmtpbmQKLSsJICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwot KwkgIH0KLSsJICBicmVhazsKLSsJfQorICAgICAgIC8qIEluIHRoaXMgY2FzZSwgYXNzdW1lIHdl IGhhdmUgYSBjb2RlIHN5bWJvbCBpbnN0ZWFkIG9mCisgCSBhIGRhdGEgc3ltYm9sLiAgKi8KKy0g ICAgICB0eXBlID0gbXN0X3RleHQ7CiArCi0rICAgICAgLyogQ29udmVydCBUWVBFX1JBTkdFX0hJ R0hfQk9VTkRfSVNfQ09VTlQgaW50byBhIHJlZ3VsYXIgYm91bmQuICAqLwotKyAgICAgIGlmIChU WVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSkKKysgICAgICBpZiAoaWZ1 bmNfbXN5bSAhPSBOVUxMICYmIE1TWU1CT0xfVFlQRSAoaWZ1bmNfbXN5bSkgPT0gbXN0X3RleHRf Z251X2lmdW5jCisrCSAgJiYgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGlmdW5jX21zeW0pID09IHBj KQogKwl7Ci0rCSAgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgPSBUWVBFX0xPV19CT1VORCAo bmV3X3R5cGUpCi0rCQkJCSAgICAgICArIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpIC0gMTsK LSsJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9IDA7CisrCSAg LyogQSBmdW5jdGlvbiBkZXNjcmlwdG9yIGhhcyBiZWVuIHJlc29sdmVkIGJ1dCBQQyBpcyBzdGls bCBpbiB0aGUKKysJICAgICBnbnUtaWZ1bmMgcmVzb2x2ZXIgYm9keSAoc3VjaCBhcyBiZWNhdXNl IGluZmVyaW9yIGRvZXMgbm90IHJ1biB0bworKwkgICAgIGJlIGFibGUgdG8gY2FsbCBpdCkuICAq LworKwkgIHR5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7CiArCX0KKysgICAgICBlbHNlCisrCXR5 cGUgPSBtc3RfdGV4dDsKKyAgICAgICBzZWN0aW9uID0gTlVMTDsKKyAgICAgICBhZGRyID0gcGM7 CiAgICAgIH0KK0BAIC01MjEsNiArNTMzLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3Qg bWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCisgICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpm aWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3RleHRfc3ltYm9sKTsKKyAgICAgICBicmVhazsK ICAKLSAgIC8qIENvcHkgcG9pbnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKQotICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAK LS0gICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLCAKLS0JCQkgICBUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwKLS0JCQkgICBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGNvcHlfdHlwZV9y ZWN1cnNpdmVfMSAob2JqZmlsZSwgCi0rCQkJICAgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwK LSsJCQkgICAgIGNvcGllZF90eXBlcyk7Ci0gICBpZiAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBl KSkKLSAgICAgVFlQRV9WUFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5 cGVfcmVjdXJzaXZlIChvYmpmaWxlLAotLQkJCSAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSks Ci0tCQkJICAgY29waWVkX3R5cGVzKTsKLSsgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9i amZpbGUsCi0rCQkJICAgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLAotKwkJCSAgICAgY29w aWVkX3R5cGVzKTsKLSAgIC8qIE1heWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KLSAK LSAgICAgIE5PVEUgZHJvdy8yMDA1LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNp ZmljIGJpdHMgbGlrZQotQEAgLTMxMzAsNiArMzQ5NiwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0r LyogUmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUg YWxsb2NhdGVkIHVzaW5nCi0rICAgbWFsbG9jLCBhIHNhdmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJl YWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwKLSsgICBvciBUWVBFIGlmIGl0 IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICovCisrICAgIGNhc2UgbXN0X3RleHRf Z251X2lmdW5jOgorKyAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpm aWxlKQorKwkJCQkJICAgICAgIC0+bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2wpOworKyAg ICAgIGJyZWFrOwogKwotK3N0cnVjdCB0eXBlICoKLStjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1 Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgaHRhYl90IGNvcGllZF90eXBlcykKLSt7Ci0rICByZXR1 cm4gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChUWVBFX09CSkZJTEUgKHR5cGUpLCB0eXBlLCBjb3Bp ZWRfdHlwZXMpOwotK30KKyAgICAgY2FzZSBtc3RfZGF0YToKKyAgICAgY2FzZSBtc3RfZmlsZV9k YXRhOgorICAgICBjYXNlIG1zdF9ic3M6CitAQCAtNTI4LDYgKzU0NSwxMCBAQCB3cml0ZV9leHBf bXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQorICAgICAgIHdyaXRlX2V4 cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z19kYXRhX3N5bWJvbCk7 CisgICAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgbXN0X3Nsb3RfZ290X3BsdDoKKysgICAgICB3 cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfZ290X3Bs dF9zeW1ib2wpOworKyAgICAgIGJyZWFrOwogKwotIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZl biBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQotICAgIHR5cGVzIGFy ZSBub3QgcHJlc2VydmVkLgotICAgIAotQEAgLTMxNTIsNiArMzUyOSwyMTEgQEAgY29weV90eXBl IChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIHJldHVybiBuZXdfdHlwZTsKKyAgICAgZGVm YXVsdDoKKyAgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkt Pm5vZGVidWdfdW5rbm93bl9zeW1ib2wpOworICAgICAgIGJyZWFrOworQEAgLTE0MTIsNiArMTQz Myw3IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxFICp4LCBjb25zdCBjaGFyICp5LCAuLi4pCisgCisg aW50Cisgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwb3MsCisrCQkJIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpk YXRhKSwKKyAJCQkgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CisgCQkJCQkgICAgICB2b2lkICpkYXRhKSwKKyAJCQkgdm9pZCAqZGF0YSkKK0BAIC0xNDUzLDcg KzE0NzUsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBvcywKKyAJICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZWx0c1twb3MgKyAyICsgYXJn XS50eXBlOworIAkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5 cGUpOworIAorLQkgICAgaWYgKG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBk YXRhKSkKKysJICAgIGlmIChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVu YykgKG9iamZpbGUsIGRhdGEpKQorIAkgICAgICByZXR1cm4gMTsKKyAJICB9CisgICAgICAgfQor QEAgLTE0NzEsNyArMTQ5Myw4IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorIAorIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2 YXJpYWJsZSBpdHNlbGYgaXMgcGxhY2VkLgorIAkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJv bCkgbWF5IGJlIE5VTEwuICAqLworLQlpZiAoKCpvYmpmaWxlX2Z1bmMpIChTWU1CT0xfU1lNVEFC IChzeW1ib2wpLT5vYmpmaWxlLCBkYXRhKSkKKysJaWYgKG9iamZpbGVfZnVuYworKwkgICAgJiYg KCpvYmpmaWxlX2Z1bmMpIChTWU1CT0xfU1lNVEFCIChzeW1ib2wpLT5vYmpmaWxlLCBkYXRhKSkK KyAJICByZXR1cm4gMTsKKyAKKyAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSBpcyBwbGFjZWQgdGhl IGNvZGUgdG91Y2hpbmcgdGhlIHZhcmlhYmxlLiAgKi8KK0BAIC0xNDg0LDI0ICsxNTA3LDI3IEBA IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9z LAorIAorICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JKRklMRSBpZiB0aGV5 IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KKyAKKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklM RSAodHlwZSkKKysgIGlmICh0eXBlICYmIHR5cGVfZnVuYyAmJiAoKnR5cGVfZnVuYykgKHR5cGUs IGRhdGEpKQorKyAgICByZXR1cm4gMTsKKysgIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlw ZSkgJiYgb2JqZmlsZV9mdW5jCisgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJ TEUgKHR5cGUpLCBkYXRhKSkKKyAgICAgcmV0dXJuIDE7CistICBpZiAob2JqZmlsZSAmJiAoKm9i amZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQorKyAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9m dW5jICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgICAgIHJldHVybiAxOwor IAorICAgcmV0dXJuIDA7CiAgfQogIAotKy8qIENhbGxiYWNrIHR5cGUgZm9yIG1haW5fdHlwZV9j cmF3bC4gICovCi0rdHlwZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jhd2xfaXRlcikgKHN0cnVjdCB0 eXBlICp0eXBlLCB2b2lkICpkYXRhKTsKLSsKLSsjaWYgMAotKwotKy8qIEFsbG9jYXRlIGEgaGFz aCB0YWJsZSB3aGljaCBpcyB1c2VkIHdoZW4gZnJlZWluZyBhIHN0cnVjdCB0eXBlLiAgKi8KLSsK LStzdGF0aWMgaHRhYl90Ci0rY3JlYXRlX2RlbGV0ZWRfdHlwZXNfaGFzaCAodm9pZCkKLSt7Ci0r ICByZXR1cm4gaHRhYl9jcmVhdGUgKDEsIGh0YWJfaGFzaF9wb2ludGVyLCBodGFiX2VxX3BvaW50 ZXIsIE5VTEwpOworLS8qIENhbGwgT0JKRklMRV9GVU5DIGZvciBhbnkgVFlQRSBhbmQgT0JKRklM RSBmb3VuZCBiZWluZyByZWZlcmVuY2VkIGJ5IEVYUC4KKy0gICBUaGUgZnVuY3Rpb25zIGFyZSBu ZXZlciBjYWxsZWQgd2l0aCBOVUxMIE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBhbgor LSAgIGFyYml0cmFyeSBjYWxsZXIgc3VwcGxpZWQgREFUQSBwb2ludGVyLiAgSWYgYW55IG9mIHRo ZSBmdW5jdGlvbnMgcmV0dXJucworLSAgIG5vbi16ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhlcikg bm9uLXplcm8gdmFsdWUgaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8KKy0gICB0aGUgY2FsbGVy LiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQgYWZ0ZXIgaXRlcmF0aW5nIHRocm91Z2ggd2hv bGUgRVhQLgorLSAgICovCisrLyogQ2FsbCBUWVBFX0ZVTkMgYW5kIE9CSkZJTEVfRlVOQyBmb3Ig YW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcKKysgICByZWZlcmVuY2VkIGJ5IEVYUC4g IFRoZSBmdW5jdGlvbnMgYXJlIG5ldmVyIGNhbGxlZCB3aXRoIE5VTEwgVFlQRSBvciBOVUxMCisr ICAgT0JKRklMRS4gIEZ1bmN0aW9ucyBnZXQgcGFzc2VkIGFuIGFyYml0cmFyeSBjYWxsZXIgc3Vw cGxpZWQgREFUQSBwb2ludGVyLgorKyAgIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMg bm9uLXplcm8gdmFsdWUgdGhlbiAoYW55IG90aGVyKSBub24temVybworKyAgIHZhbHVlIGlzIGlt bWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybyBpcyByZXR1 cm5lZAorKyAgIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4gICovCisgCisgc3Rh dGljIGludAorIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkgICAgIGlu dCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJICAgICBp bnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSks CisgCSAgICAgdm9pZCAqZGF0YSkKKyB7CitAQCAtMTUxNiw3ICsxNTQyLDkgQEAgZXhwX2l0ZXJh dGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCisgICAgICAgcG9zID0gZW5kcG9zIC0gb3Bs ZW47CisgICAgICAgaWYgKGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfZXhwX2Rlc2MtPm9wZXJhdG9y X2NoZWNrIChleHAsIHBvcywKKy0JCQkJCQkJICAgb2JqZmlsZV9mdW5jLCBkYXRhKSkKKysJCQkJ CQkJICAgdHlwZV9mdW5jLAorKwkJCQkJCQkgICBvYmpmaWxlX2Z1bmMsCisrCQkJCQkJCSAgIGRh dGEpKQorIAlyZXR1cm4gMTsKKyAKKyAgICAgICBlbmRwb3MgPSBwb3M7CitAQCAtMTU0Nyw3ICsx NTc1LDI2IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKyAgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRl X2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCk7CisgCistICByZXR1cm4gZXhwX2l0ZXJh dGUgKGV4cCwgZXhwX3VzZXNfb2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKKysgIHJldHVybiBleHBf aXRlcmF0ZSAoZXhwLCBOVUxMLCBleHBfdXNlc19vYmpmaWxlX2l0ZXIsIG9iamZpbGUpOwogK30K ICsKLSsjZW5kaWYKLSsKLSsvKiBJdGVyYXRlIGFsbCBtYWluX3R5cGUgc3RydWN0dXJlcyByZWFj aGFibGUgdGhyb3VnaCBhbnkgYHN0cnVjdCB0eXBlIConIGZyb20KLSsgICBUWVBFLiAgSVRFUiB3 aWxsIGJlIGNhbGxlZCBvbmx5IGZvciBvbmUgdHlwZSBvZiBlYWNoIG1haW5fdHlwZSwgdXNlCi0r ICAgVFlQRV9DSEFJTiB0cmF2ZXJzYWwgdG8gZmluZCBhbGwgdGhlIHR5cGUgaW5zdGFuY2VzLiAg SVRFUiBpcyBiZWluZyBjYWxsZWQKLSsgICBmb3IgZWFjaCBtYWluX3R5cGUgZm91bmQuICBJVEVS IHJldHVybnMgbm9uLXplcm8gaWYgbWFpbl90eXBlX2NyYXdsIHNob3VsZAotKyAgIGRlcHRoLWZp cnN0IGVudGVyIHRoZSBzcGVjaWZpYyB0eXBlLiAgSVRFUiBtdXN0IHByb3ZpZGUgc29tZSBkZXRl Y3Rpb24gZm9yCi0rICAgcmVlbnRlcmluZyB0aGUgc2FtZSBtYWluX3R5cGUgYXMgdGhpcyBmdW5j dGlvbiB3b3VsZCBvdGhlcndpc2UgZW5kbGVzc2x5Ci0rICAgbG9vcC4gICovCisrLyogSGVscGVy IGZvciBleHBfdHlwZXNfbWFya191c2VkLiAgKi8KICsKLStzdGF0aWMgdm9pZAotK21haW5fdHlw ZV9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3bF9pdGVyIGl0ZXIsIHZv aWQgKmRhdGEpCisrc3RhdGljIGludAorK2V4cF90eXBlc19tYXJrX3VzZWRfaXRlciAoc3RydWN0 IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKICt7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVy OwotKyAgaW50IGk7Ci0rCi0rICBpZiAoIXR5cGUpCi0rICAgIHJldHVybjsKKysgIHR5cGVfbWFy a191c2VkICh0eXBlKTsKICsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0g TlVMTCk7CisrICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KKysgIHJldHVybiAwOwor K30KICsKLSsgIC8qIGBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUnIGhhbmRsaW5nIGlzIHVuc3Vw cG9ydGVkIGJ5IHRoaXMgZnVuY3Rpb24uICAqLwotKyAgZ2RiX2Fzc2VydCAoKFRZUEVfQ09ERSAo dHlwZSkgIT0gVFlQRV9DT0RFX1NUUlVDVAotKwkgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAh PSBUWVBFX0NPREVfVU5JT04pCi0rCSAgICAgIHx8ICFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkp OworKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSB0eXBlIGNvbnRhaW5lZCBpbiBFWFAu ICAqLwogKwotKyAgaWYgKCEoKml0ZXIpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuOworK3Zv aWQKKytleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQorK3sKKysg IGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19tYXJrX3VzZWRfaXRlciwgTlVMTCwgTlVMTCk7 CisgfQorIAorIHZvaWQKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJz ZXItZGVmcy5oCitpbmRleCBiYjc5YWUxLi5mYmJkNjAwIDEwMDY0NAorLS0tIGEvZ2RiL3BhcnNl ci1kZWZzLmgKKysrKyBiL2dkYi9wYXJzZXItZGVmcy5oCitAQCAtMTk0LDYgKzE5NCw4IEBAIGV4 dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Np b24gKiwgaW50LCBpbnQgKiwKKyAJCQkJICAgICAgaW50ICopOworIAorIGV4dGVybiBpbnQgb3Bl cmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisr CQkJCSAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkJCQkgICAg ICB2b2lkICpkYXRhKSwKKyAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykKKyAJCQkJICAgICAg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKKyAJCQkJICAgIHZvaWQgKmRh dGEpOworQEAgLTI4NSw2ICsyODcsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKKyAgICAgICAg dmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhl cndpc2UgemVybworICAgICAgICBzaG91bGQgYmUgcmV0dXJuZWQuICAqLworICAgICBpbnQgKCpv cGVyYXRvcl9jaGVjaykgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisrCQkJICAg aW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJCSAg IGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJCXZv aWQgKmRhdGEpLAorIAkJCSAgIHZvaWQgKmRhdGEpOworQEAgLTMyMyw0ICszMjYsOCBAQCBleHRl cm4gdm9pZCBwYXJzZXJfZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLikgQVRUUklC VVRFX1BSSU5URiAoMiwgMyk7CisgCisgZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCisrZXh0ZXJu IGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSk7CiArCi0rICAvKiBJdGVyYXRlIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMg b2YgdGhpcyBtYWluX3R5cGUuICAqLwotKyAgdHlwZV9pdGVyID0gdHlwZTsKLSsgIGRvCi0rICAg IHsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBFX01BSU5fVFlQRSAodHlwZV9pdGVyKSA9PSBUWVBF X01BSU5fVFlQRSAodHlwZSkpOworK2V4dGVybiB2b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0 cnVjdCBleHByZXNzaW9uICpleHApOwogKwotKyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9Q T0lOVEVSX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsgICAgICBtYWluX3R5cGVfY3Jhd2wg KFRZUEVfUkVGRVJFTkNFX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKKyAjZW5kaWYgLyogUEFS U0VSX0RFRlNfSCAqLworZGlmZiAtLWdpdCBhL2dkYi9wcGMtbGludXgtbmF0LmMgYi9nZGIvcHBj LWxpbnV4LW5hdC5jCitpbmRleCBlOGQ5NmY2Li44YmYwOTdjIDEwMDY0NAorLS0tIGEvZ2RiL3Bw Yy1saW51eC1uYXQuYworKysrIGIvZ2RiL3BwYy1saW51eC1uYXQuYworQEAgLTIwMTAsNiArMjAx MCwyNCBAQCBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQg bGVuLCBpbnQgcncsCisgICByZXR1cm4gcmV0OworIH0KKyAKKysvKiBTZWUgdGFyZ2V0X2RldGFj aF93YXRjaHBvaW50cy4gIERvIG5vdCB1c2Ugd3JhcHBlcgorKyAgIHBwY19saW51eF9yZW1vdmVf d2F0Y2hwb2ludCBhcyBpdCB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hlCisrICAgKHNh dmVkX2RhYnJfdmFsdWUpLiAgKi8KICsKLSsgICAgICB0eXBlX2l0ZXIgPSBUWVBFX0NIQUlOICh0 eXBlX2l0ZXIpOwotKyAgICB9Ci0rICB3aGlsZSAodHlwZV9pdGVyICE9IHR5cGUpOworK3N0YXRp YyBpbnQKKytwcGNfbGludXhfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorK3sKKysgIHBpZF90 IHRpZDsKICsKLSsgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpKyspCi0r ICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgaXRlciwgZGF0 YSk7CisrICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQor KyAgICB0aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOwogKwotKyAgbWFpbl90eXBlX2NyYXds IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgaXRlciwgZGF0YSk7Ci0rICBtYWluX3R5cGVfY3Jh d2wgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOworKyAgaWYgKHB0cmFj ZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDApCisrICAgIHJldHVy biAtMTsKKysgIHJldHVybiAwOwogK30KICsKLSsvKiBBIGhlbHBlciBmb3IgZGVsZXRlX3R5cGUg d2hpY2ggZGVsZXRlcyBhIG1haW5fdHlwZSBhbmQgdGhlIHRoaW5ncyB0byB3aGljaAotKyAgIGl0 IHJlZmVycy4gIFRZUEUgaXMgYSB0eXBlIHdob3NlIG1haW5fdHlwZSB3ZSB3aXNoIHRvIGRlc3Ry b3kuICAqLworIHN0YXRpYyB2b2lkCisgcHBjX2xpbnV4X25ld190aHJlYWQgKHB0aWRfdCBwdGlk KQorIHsKK0BAIC0yMzQ5LDYgKzIzNjcsNyBAQCBfaW5pdGlhbGl6ZV9wcGNfbGludXhfbmF0ICh2 b2lkKQorICAgdC0+dG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50ID0gcHBjX2xpbnV4X3Jl Z2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX2luc2VydF93YXRjaHBvaW50ID0g cHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50OworICAgdC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQg PSBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQ7CisrICB0LT50b19kZXRhY2hfd2F0Y2hwb2lu dHMgPSBwcGNfbGludXhfZGV0YWNoX3dhdGNocG9pbnRzOworICAgdC0+dG9fc3RvcHBlZF9ieV93 YXRjaHBvaW50ID0gcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3N0 b3BwZWRfZGF0YV9hZGRyZXNzID0gcHBjX2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworICAg dC0+dG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9IHBwY19saW51eF93YXRjaHBvaW50 X2FkZHJfd2l0aGluX3JhbmdlOworZGlmZiAtLWdpdCBhL2dkYi9wcmludGNtZC5jIGIvZ2RiL3By aW50Y21kLmMKK2luZGV4IDVmZmEwOTkuLjU4ZDljNzkgMTAwNjQ0CistLS0gYS9nZGIvcHJpbnRj bWQuYworKysrIGIvZ2RiL3ByaW50Y21kLmMKK0BAIC05NzEsNiArOTcxLDExIEBAIHByaW50X2Nv bW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKKyAgIGVsc2UK KyAgICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDApOworIAorKyAgLyogRG8gbm90IHRy eSB0byBPQkpFQ1RfQUREUkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdlIGFyZSBpbnRlcmVzdGVk IGluIHRoZQorKyAgICAgc291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFzIGZvdW5kIGJ5 IFJFQURfVkFSX1ZBTFVFLiAgVGhlIHZhbHVlIGhlcmUKKysgICAgIGNhbiBiZSBhbHJlYWR5IGEg Y2FsY3VsYXRlZCBleHByZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IKKysgICAgIERX X09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLwogKwotK3N0YXRpYyB2b2lkCi0rZGVsZXRlX21h aW5fdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAgaW50IGk7CisgICBpZiAodm9pZHBy aW50IHx8ICh2YWwgJiYgdmFsdWVfdHlwZSAodmFsKSAmJgorIAkJICAgIFRZUEVfQ09ERSAodmFs dWVfdHlwZSAodmFsKSkgIT0gVFlQRV9DT0RFX1ZPSUQpKQorICAgICB7CitAQCAtMTQ3MSw2ICsx NDc2LDIyIEBAIHhfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCisgCXNldF9pbnRl cm5hbHZhciAobG9va3VwX2ludGVybmFsdmFyICgiX18iKSwgbGFzdF9leGFtaW5lX3ZhbHVlKTsK KyAgICAgfQorIH0KICsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKTsK LSsgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7CisrLyogQ2FsbCB0 eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3Vy Y2UgZmlsZS4gICovCiArCi0rICB4ZnJlZSAoVFlQRV9OQU1FICh0eXBlKSk7Ci0rICB4ZnJlZSAo VFlQRV9UQUdfTkFNRSAodHlwZSkpOworK3N0YXRpYyB2b2lkCisrcHJpbnRfdHlwZXNfbWFya191 c2VkICh2b2lkKQorK3sKKysgIHN0cnVjdCBkaXNwbGF5ICpkOwogKwotKyAgZm9yIChpID0gMDsg aSA8IFRZUEVfTkZJRUxEUyAodHlwZSk7ICsraSkKLSsgICAgewotKyAgICAgIHhmcmVlIChUWVBF X0ZJRUxEX05BTUUgKHR5cGUsIGkpKTsKKysgIGlmIChsYXN0X2V4YW1pbmVfdmFsdWUpCisrICAg IHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChsYXN0X2V4YW1pbmVfdmFsdWUpKTsKICsKLSsg ICAgICBpZiAoVFlQRV9GSUVMRF9MT0NfS0lORCAodHlwZSwgaSkgPT0gRklFTERfTE9DX0tJTkRf UEhZU05BTUUpCi0rCXhmcmVlIChUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodHlwZSwgaSkp OwotKyAgICB9Ci0rICB4ZnJlZSAoVFlQRV9GSUVMRFMgKHR5cGUpKTsKKysgIGZvciAoZCA9IGRp c3BsYXlfY2hhaW47IGQ7IGQgPSBkLT5uZXh0KQorKyAgICBpZiAoZC0+ZXhwKQorKyAgICAgIGV4 cF90eXBlc19tYXJrX3VzZWQgKGQtPmV4cCk7CisrfQogKwotKyAgZ2RiX2Fzc2VydCAoIUhBVkVf Q1BMVVNfU1RSVUNUICh0eXBlKSk7CisgDAorIAorIC8qIEFkZCBhbiBleHByZXNzaW9uIHRvIHRo ZSBhdXRvLWRpc3BsYXkgY2hhaW4uCitAQCAtMjg2OSw0ICsyODkwLDYgQEAgU2hvdyBwcmludGlu ZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5V TEwsCisgICBhZGRfY29tICgiZXZhbCIsIG5vX2NsYXNzLCBldmFsX2NvbW1hbmQsIF8oIlwKKyBD b252ZXJ0IFwicHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBh cmduIHRvXG5cCisgYSBjb21tYW5kIGxpbmUsIGFuZCBjYWxsIGl0LiIpKTsKICsKLSsgIHhmcmVl IChUWVBFX01BSU5fVFlQRSAodHlwZSkpOwotK30KKysgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3Vz ZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24v cHktdHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKK2luZGV4IGI5MDEyNTUuLjRmZjE4ZTUg MTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYworKysrIGIvZ2RiL3B5dGhvbi9weS10 eXBlLmMKK0BAIC0yNyw2ICsyNyw4IEBACisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1 ZGUgIm9iamZpbGVzLmgiCisgI2luY2x1ZGUgImxhbmd1YWdlLmgiCisrI2luY2x1ZGUgIm9ic2Vy dmVyLmgiCisrI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAKKyB0eXBlZGVmIHN0cnVjdCBweXR5 X3R5cGVfb2JqZWN0CisgeworQEAgLTM1LDExICszNywxNyBAQCB0eXBlZGVmIHN0cnVjdCBweXR5 X3R5cGVfb2JqZWN0CisgCisgICAvKiBJZiBhIFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0 aCBhbiBvYmpmaWxlLCBpdCBpcyBrZXB0IG9uIGEKKyAgICAgIGRvdWJseS1saW5rZWQgbGlzdCwg cm9vdGVkIGluIHRoZSBvYmpmaWxlLiAgVGhpcyBsZXRzIHVzIGNvcHkgdGhlCistICAgICB1bmRl cmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4gICovCisrICAg ICB1bmRlcmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4KICsK LSsvKiBEZWxldGUgYWxsIHRoZSBpbnN0YW5jZXMgb24gVFlQRV9DSEFJTiBvZiBUWVBFLCBpbmNs dWRpbmcgdGhlaXIgcmVmZXJlbmNlZAotKyAgIG1haW5fdHlwZS4gIFRZUEUgbXVzdCBiZSBhIHJl Y2xhaW1hYmxlIHR5cGUgLSBuZWl0aGVyIHBlcm1hbmVudCBub3Igb2JqZmlsZQotKyAgIGFzc29j aWF0ZWQuICAqLworKyAgICAgV2l0aCBOVUxMIG9iamZpbGUgVHlwZSBzdGlsbCBjYW4gYmUgZG91 Ymx5LWxpbmtlZCBpbiB0aGUgbGlzdAorKyAgICAgUFlUWV9PQkpFQ1RTX0RJU0NBUkRBQkxFLiAg Ki8KKyAgIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0ICpwcmV2OworICAgc3RydWN0IHB5dHlfdHlw ZV9vYmplY3QgKm5leHQ7CisgfSB0eXBlX29iamVjdDsKKyAKKysvKiBGaXJzdCBlbGVtZW50IG9m IGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIFRZUEVfRElTQ0FSREFCTEUgVHlwZXMuICAqLworK3N0 YXRpYyB0eXBlX29iamVjdCAqcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOwogKworIHN0YXRpYyBQ eVR5cGVPYmplY3QgdHlwZV9vYmplY3RfdHlwZTsKKyAKKyAvKiBBIEZpZWxkIG9iamVjdC4gICov CitAQCAtNjE4LDggKzYyNiw1OSBAQCB0eXB5X3N0ciAoUHlPYmplY3QgKnNlbGYpCisgCisgDAor IAorKy8qIEtleSBhc3NvY2lhdGVkIHdpdGggZWFjaCBvYmpmaWxlIHBvaW50aW5nIHRvIHRoZSBm aXJzdCBlbGVtZW50IG9mCisrICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgVHlwZXMgYXNzb2Np YXRlZCB3aXRoIHRoaXMgb2JqZmlsZS4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxl X2RhdGEgKnR5cHlfb2JqZmlsZV9kYXRhX2tleTsKKyAKKysvKiBMaW5rIFRZUEVfT0JKIHRvIGl0 cyBhcHByb3ByaWF0ZSBsaXN0LiAgRWl0aGVyIHRvIGl0cyBvYmpmaWxlIGFzc29jaWF0ZWQgb25l CisrICAgb3IgYXQgbGVhc3QgdG8gdGhlIGdsb2JhbCBsaXN0IGZvciBUWVBFX0RJU0NBUkRBQkxF IFR5cGVzLiAgUGVybWFuZW50IHR5cGVzCisrICAgZG8gbm90IGdldCBsaW5rZWQgYW55d2hlcmUu ICAqLwogK3N0YXRpYyB2b2lkCi0rZGVsZXRlX3R5cGVfY2hhaW4gKHN0cnVjdCB0eXBlICp0eXBl KQorK3R5cHlfbGluayAodHlwZV9vYmplY3QgKnR5cGVfb2JqKQogK3sKLSsgIHN0cnVjdCB0eXBl ICp0eXBlX2l0ZXIsICp0eXBlX2l0ZXJfdG9fZnJlZTsKLSsKLSsgIGdkYl9hc3NlcnQgKFRZUEVf RElTQ0FSREFCTEUgKHR5cGUpKTsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkg PT0gTlVMTCk7CisrICB0eXBlX29iai0+cHJldiA9IE5VTEw7CiArCi0rICBkZWxldGVfbWFpbl90 eXBlICh0eXBlKTsKKysgIGlmICh0eXBlX29iai0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGVf b2JqLT50eXBlKSkKKysgICAgeworKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQ RV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7CiArCi0rICB0eXBlX2l0ZXIgPSB0eXBlOwotKyAg ZG8KKysgICAgICB0eXBlX29iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9v YmpmaWxlX2RhdGFfa2V5KTsKKysgICAgICBpZiAodHlwZV9vYmotPm5leHQpCisrCXR5cGVfb2Jq LT5uZXh0LT5wcmV2ID0gdHlwZV9vYmo7CisrICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmls ZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iaik7CisrICAgIH0KKysgIGVsc2UgaWYg KHR5cGVfb2JqLT50eXBlICYmIFRZUEVfRElTQ0FSREFCTEUgKHR5cGVfb2JqLT50eXBlKSkKICsg ICAgewotKyAgICAgIHR5cGVfaXRlcl90b19mcmVlID0gdHlwZV9pdGVyOwotKyAgICAgIHR5cGVf aXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVfaXRlcik7Ci0rICAgICAgeGZyZWUgKHR5cGVfaXRlcl90 b19mcmVlKTsKKysgICAgICB0eXBlX29iai0+bmV4dCA9IHB5dHlfb2JqZWN0c19kaXNjYXJkYWJs ZTsKKysgICAgICBpZiAodHlwZV9vYmotPm5leHQpCisrCXR5cGVfb2JqLT5uZXh0LT5wcmV2ID0g dHlwZV9vYmo7CisrICAgICAgcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID0gdHlwZV9vYmo7CiAr ICAgIH0KLSsgIHdoaWxlICh0eXBlX2l0ZXIgIT0gdHlwZSk7CisrICBlbHNlCisrICAgIHR5cGVf b2JqLT5uZXh0ID0gTlVMTDsKICt9CiArCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNj YXJkYWJsZV90YWJsZS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlzY2FyZGFi bGVfaGFzaCAoY29uc3Qgdm9pZCAqcCkKKysvKiBVbmxpbmsgVFlQRV9PQkogZnJvbSBpdHMgY3Vy cmVudCBsaXN0LiAgUGVybWFuZW50IHR5cGVzIGFyZSBub3QgbGlua2VkCisrICAgYW55d2hlcmUg YW5kIHRoaXMgZnVuY3Rpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGVtLiAgKi8KKytzdGF0aWMgdm9p ZAorK3R5cHlfdW5saW5rICh0eXBlX29iamVjdCAqdHlwZV9vYmopCiArewotKyAgY29uc3Qgc3Ry dWN0IHR5cGUgKnR5cGUgPSBwOworKyAgaWYgKHR5cGVfb2JqLT5wcmV2KQorKyAgICB0eXBlX29i ai0+cHJldi0+bmV4dCA9IHR5cGVfb2JqLT5uZXh0OworKyAgZWxzZSBpZiAodHlwZV9vYmotPnR5 cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSkpCisrICAgIHsKKysgICAgICAvKiBN dXN0IHJlc2V0IGhlYWQgb2YgbGlzdC4gICovCisrICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGUgPSBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKTsKICsKLSsgIHJldHVybiBodGFiX2hh c2hfcG9pbnRlciAoVFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsKLSt9CisrICAgICAgc2V0X29iamZp bGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7 CisrICAgIH0KKysgIGVsc2UgaWYgKHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9PSB0eXBlX29i aikKKysgICAgcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID0gdHlwZV9vYmotPm5leHQ7CiArCi0r LyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHR5cGVfZGlzY2FyZGFibGVfdGFibGUuICAqLworKyAg aWYgKHR5cGVfb2JqLT5uZXh0KQorKyAgICB0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVfb2Jq LT5wcmV2OworK30KICsKLStzdGF0aWMgaW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29u c3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVm dCA9IGE7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJuIFRZ UEVfTUFJTl9UWVBFIChsZWZ0KSA9PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsKLSsv KiBBIGhlbHBlciBmb3IgdHlwZV9tYXJrX3VzZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBl X21hcmtfdXNlZF9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKLSt7Ci0r ICBpZiAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlm IChUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3Vy cmVudCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkg PSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwotKwotKyAgLyogQ29udGludWUgdGhlIHRy YXZlcnNhbC4gICovCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogTWFyayBUWVBFIGFuZCBpdHMg Y29ubmVjdGVkIHR5cGVzIGFzIHVzZWQgaW4gdGhpcyBmcmVlX2FsbF90eXBlcyBwYXNzLiAgKi8K LSsKLSt2b2lkCi0rdHlwZV9tYXJrX3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGlm ICh0eXBlID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmICghVFlQRV9ESVNDQVJEQUJM RSAodHlwZSkpCi0rICAgIHJldHVybjsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAodHlwZSwgdHlw ZV9tYXJrX3VzZWRfY3Jhd2wsIE5VTEwpOwotK30KLSsKLSsvKiBBIHRyYXZlcnNlIGNhbGxiYWNr IGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlIHdoaWNoIHJlbW92ZXMgYW55Ci0rICAgdHlwZV9k aXNjYXJkYWJsZSB3aG9zZSByZWZlcmVuY2UgY291bnQgaXMgbm93IHplcm8gKHVudXNlZCBsaW5r KS4gICovCi0rCi0rc3RhdGljIGludAotK3R5cGVfZGlzY2FyZGFibGVfcmVtb3ZlICh2b2lkICoq c2xvdCwgdm9pZCAqdW51c2VkKQotK3sKLSsgIHN0cnVjdCB0eXBlICp0eXBlID0gKnNsb3Q7Ci0r Ci0rICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0rICBpZiAoVFlQ RV9ESVNDQVJEQUJMRV9BR0UgKHR5cGUpICE9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQp Ci0rICAgIHsKLSsgICAgICBkZWxldGVfdHlwZV9jaGFpbiAodHlwZSk7Ci0rCi0rICAgICAgaHRh Yl9jbGVhcl9zbG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCBzbG90KTsKLSsgICAgfQotKwot KyAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIEZyZWUgYWxsIHRoZSByZWNsYWltYWJsZSB0eXBlcyB0 aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQgYW5kIHRoYXQgaGF2ZQotKyAgIGN1cnJlbnRseSB6ZXJv IHJlZmVyZW5jZSBjb3VudGVyLgotKwotKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVy IGVhY2ggY29tbWFuZCwgc3VjY2Vzc2Z1bCBvciBub3QuICBVc2UgdGhpcwotKyAgIGNsZWFudXAg b25seSBpbiB0aGUgR0RCIGlkbGUgc3RhdGUgYXMgR0RCIG9ubHkgbWFya3MgdGhvc2UgdHlwZXMg dXNlZCBieQotKyAgIGdsb2JhbGx5IHRyYWNrZWQgb2JqZWN0cyAod2l0aCBubyBhdXRvdmFyaWFi bGUgcmVmZXJlbmNlcyB0cmFja2luZykuICAqLwotKwotK3ZvaWQKLStmcmVlX2FsbF90eXBlcyAo dm9pZCkKLSt7Ci0rICAvKiBNYXJrIGEgbmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUg ZW50cmllcyB3ZXJlIHZpc2l0ZWQgYWZ0ZXIgZWFjaAotKyAgICAgcGFzcyB0aGVyZSBjYW5ub3Qg YmUgYW55IHN0YWxlIGVudHJpZXMgYWxyZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCi0rICAg ICB2YWx1ZS4gICovCi0rICB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7Ci0rCi0r ICBvYnNlcnZlcl9ub3RpZnlfbWFya191c2VkICgpOwotKwotKyAgaHRhYl90cmF2ZXJzZSAodHlw ZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30K KyBzdGF0aWMgdm9pZAorIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHZvaWQgKmRhdHVtKQorIHsKK0BAIC02MzcsMTIgKzY5NiwxMyBAQCBzYXZlX29iamZpbGVf dHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKKyAgICAgeworICAg ICAgIHR5cGVfb2JqZWN0ICpuZXh0ID0gb2JqLT5uZXh0OwogIAotIC8qIEhlbHBlciBmdW5jdGlv bnMgdG8gaW5pdGlhbGl6ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHlwZXMuICAqLworLSAgICAg IGh0YWJfZW1wdHkgKGNvcGllZF90eXBlcyk7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpG SUxFIChvYmotPnR5cGUpID09IG9iamZpbGUpOworKyAgICAgIHR5cHlfdW5saW5rIChvYmopOwog IAotQEAgLTM0NzUsNiArNDA1Nyw4IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpCi0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5i dWlsdGluX3ZvaWQpOwotICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCi0gICAgID0g bG9va3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+ YnVpbHRpbl92b2lkKSk7Ci0rICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCi0rICAg ID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7 CistICAgICAgb2JqLT50eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgb2JqLT50 eXBlLCBjb3BpZWRfdHlwZXMpOworKyAgICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNp dmUgKG9iai0+dHlwZSwgY29waWVkX3R5cGVzKTsKICAKLSAgIC8qIFRoaXMgdHlwZSByZXByZXNl bnRzIGEgR0RCIGludGVybmFsIGZ1bmN0aW9uLiAgKi8KLSAgIGJ1aWx0aW5fdHlwZS0+aW50ZXJu YWxfZm4KLUBAIC0zNTg4LDYgKzQxNzIsMTEgQEAgb2JqZmlsZV90eXBlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKLSAJCSAiPHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+Iiwgb2JqZmls ZSk7Ci0gICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1i b2wpCi0gICAgID0gb2JqZmlsZV90eXBlLT5idWlsdGluX2ludDsKLSsgIG9iamZpbGVfdHlwZS0+ bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2wKLSsgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09E RV9GVU5DLCAxLCBUWVBFX0ZMQUdfR05VX0lGVU5DLAotKwkJICI8dGV4dCBnbnUtaWZ1bmMgdmFy aWFibGUsIG5vIGRlYnVnIGluZm8+Iiwgb2JqZmlsZSk7Ci0rICBUWVBFX1RBUkdFVF9UWVBFIChv YmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKQotKyAgICA9IG9iamZp bGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSAgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19k YXRhX3N5bWJvbAotICAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwKLSAJCSBnZGJhcmNo X2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKLUBAIC0zNjQyLDYgKzQyMzEs MTEgQEAgdm9pZAotIF9pbml0aWFsaXplX2dkYnR5cGVzICh2b2lkKQorLSAgICAgIG9iai0+bmV4 dCA9IE5VTEw7CistICAgICAgb2JqLT5wcmV2ID0gTlVMTDsKKysgICAgICBnZGJfYXNzZXJ0IChU WVBFX09CSkZJTEUgKG9iai0+dHlwZSkgPT0gTlVMTCk7CisrICAgICAgdHlweV9saW5rIChvYmop OworIAorICAgICAgIG9iaiA9IG5leHQ7CisgICAgIH0KK0BAIC02NTMsNDIgKzcxMywyNSBAQCBz YXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkK KyB9CisgCisgc3RhdGljIHZvaWQKKy1zZXRfdHlwZSAodHlwZV9vYmplY3QgKm9iaiwgc3RydWN0 IHR5cGUgKnR5cGUpCisrdHlweV9kZWFsbG9jIChQeU9iamVjdCAqb2JqKQogIHsKLSAgIGdkYnR5 cGVzX2RhdGEgPSBnZGJhcmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0 X2luaXQpOwotKwotKyAgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSA9IGh0YWJfY3JlYXRlX2FsbG9j ICgyMCwgdHlwZV9kaXNjYXJkYWJsZV9oYXNoLAotKwkJCQkJICAgICB0eXBlX2Rpc2NhcmRhYmxl X2VxdWFsLCBOVUxMLAotKwkJCQkJICAgICB4Y2FsbG9jLCB4ZnJlZSk7CistICBvYmotPnR5cGUg PSB0eXBlOworLSAgb2JqLT5wcmV2ID0gTlVMTDsKKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklM RSAodHlwZSkpCistICAgIHsKKy0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVf T0JKRklMRSAodHlwZSk7CisrICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3Qg Kikgb2JqOworIAorLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlw eV9vYmpmaWxlX2RhdGFfa2V5KTsKKy0gICAgICBpZiAob2JqLT5uZXh0KQorLQlvYmotPm5leHQt PnByZXYgPSBvYmo7CistICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpm aWxlX2RhdGFfa2V5LCBvYmopOworLSAgICB9CistICBlbHNlCistICAgIG9iai0+bmV4dCA9IE5V TEw7CisrICB0eXB5X3VubGluayAodHlwZV9vYmopOwogKwotICAgb2JqZmlsZV90eXBlX2RhdGEg PSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CisrICB0eXBlX29iai0+b2JfdHlwZS0+dHBfZnJl ZSAob2JqKTsKKyB9CiAgCi0gICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIs IG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsIF8oIlwKLWRpZmYgLS1naXQgYS9nZGIvZ2RidHlw ZXMuaCBiL2dkYi9nZGJ0eXBlcy5oCi1pbmRleCA2NDNmYTAzLi5lZmU1NTEyIDEwMDY0NAotLS0t IGEvZ2RiL2dkYnR5cGVzLmgKLSsrKyBiL2dkYi9nZGJ0eXBlcy5oCi1AQCAtMTM4LDYgKzEzOCw4 IEBAIGVudW0gdHlwZV9jb2RlCisrLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVz IHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCisgc3RhdGljIHZvaWQK Ky10eXB5X2RlYWxsb2MgKFB5T2JqZWN0ICpvYmopCisrdHlweV90eXBlc19tYXJrX3VzZWQgKHZv aWQpCisgeworLSAgdHlwZV9vYmplY3QgKnR5cGUgPSAodHlwZV9vYmplY3QgKikgb2JqOworLQor LSAgaWYgKHR5cGUtPnByZXYpCistICAgIHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0Owor LSAgZWxzZSBpZiAodHlwZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQorLSAg ICB7CistICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLworLSAgICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKTsKKy0KKy0gICAg ICBpZiAob2JqZmlsZSkKKy0Jc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxl X2RhdGFfa2V5LCB0eXBlLT5uZXh0KTsKKy0gICAgfQorLSAgaWYgKHR5cGUtPm5leHQpCistICAg IHR5cGUtPm5leHQtPnByZXYgPSB0eXBlLT5wcmV2OworKyAgdHlwZV9vYmplY3QgKnR5cGVfb2Jq OwogIAotICAgICBUWVBFX0NPREVfREVDRkxPQVQsCQkvKiBEZWNpbWFsIGZsb2F0aW5nIHBvaW50 LiAgKi8KKy0gIHR5cGUtPm9iX3R5cGUtPnRwX2ZyZWUgKHR5cGUpOworKyAgZm9yICh0eXBlX29i aiA9IHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKKysgICAgICAgdHlwZV9vYmogIT0gTlVMTDsK KysgICAgICAgdHlwZV9vYmogPSB0eXBlX29iai0+bmV4dCkKKysgICAgdHlwZV9tYXJrX3VzZWQg KHR5cGVfb2JqLT50eXBlKTsKKyB9CiAgCi0rICAgIFRZUEVfQ09ERV9NT0RVTEUsCQkvKiBGb3J0 cmFuIG1vZHVsZS4gICovCi0rCi0gICAgIC8qIEludGVybmFsIGZ1bmN0aW9uIHR5cGUuICAqLwot ICAgICBUWVBFX0NPREVfSU5URVJOQUxfRlVOQ1RJT04KLSAgIH07Ci1AQCAtMTcxLDYgKzE3Myw3 IEBAIGVudW0gdHlwZV9mbGFnX3ZhbHVlCi0gICBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UgPSAo MSA8PCAxNSksCi0gICBUWVBFX0ZMQUdfU1RVQl9TVVBQT1JURUQgPSAoMSA8PCAxNiksCi0gICBU WVBFX0ZMQUdfTk9UVEVYVCA9ICgxIDw8IDE3KSwKLSsgIFRZUEVfRkxBR19HTlVfSUZVTkMgPSAo MSA8PCAxOCksCisgLyogQ3JlYXRlIGEgbmV3IFR5cGUgcmVmZXJyaW5nIHRvIFRZUEUuICAqLwor QEAgLTY5OSw3ICs3NDIsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5 cGUpCiAgCi0gICAvKiBVc2VkIGZvciBlcnJvci1jaGVja2luZy4gICovCi0gICBUWVBFX0ZMQUdf TUlOID0gVFlQRV9GTEFHX1VOU0lHTkVECi1AQCAtMjE0LDYgKzIxNywxMSBAQCBlbnVtIHR5cGVf aW5zdGFuY2VfZmxhZ192YWx1ZQorICAgdHlwZV9vYmogPSBQeU9iamVjdF9OZXcgKHR5cGVfb2Jq ZWN0LCAmdHlwZV9vYmplY3RfdHlwZSk7CisgICBpZiAodHlwZV9vYmopCistICAgIHNldF90eXBl ICh0eXBlX29iaiwgdHlwZSk7CisrICAgIHsKKysgICAgICB0eXBlX29iai0+dHlwZSA9IHR5cGU7 CisrICAgICAgdHlweV9saW5rICh0eXBlX29iaik7CisrICAgIH0KICAKLSAjZGVmaW5lIFRZUEVf VEFSR0VUX1NUVUIodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ190YXJnZXRfc3R1YikKKyAg IHJldHVybiAoUHlPYmplY3QgKikgdHlwZV9vYmo7CisgfQorQEAgLTc3Myw2ICs4MTksOCBAQCBn ZGJweV9pbml0aWFsaXplX3R5cGVzICh2b2lkKQogIAotKy8qIFR5cGUgbmVlZHMgdG8gYmUgZXZh bHVhdGVkIG9uIGVhY2ggQ0hFQ0tfVFlQRURFRiBhbmQgaXRzIHJlc3VsdHMgbXVzdCBub3QgYmUK LSsgICBzdGlja3kuICAqLwotKwotKyNkZWZpbmUgVFlQRV9EWU5BTUlDKHQpCQkoVFlQRV9NQUlO X1RZUEUgKHQpLT5mbGFnX2R5bmFtaWMpCisgICBQeV9JTkNSRUYgKCZmaWVsZF9vYmplY3RfdHlw ZSk7CisgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJGaWVsZCIsIChQeU9iamVj dCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOwogKwotIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBp cyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAotICAqIGEgc3RhdGljIG1vZGlmaWVy LgotICAqIE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBt ZW1iZXJzCi1AQCAtMjcxLDYgKzI3OSwxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1 ZQorKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAodHlweV90eXBlc19tYXJrX3VzZWQpOwor IH0KICAKLSAjZGVmaW5lIFRZUEVfTk9UVEVYVCh0KQkJKFRZUEVfTUFJTl9UWVBFICh0KS0+Zmxh Z19ub3R0ZXh0KQorIAwKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIv cHl0aG9uL3B5LXZhbHVlLmMKK2luZGV4IDIwMjQwMjEuLmU4YmUxMmQgMTAwNjQ0CistLS0gYS9n ZGIvcHl0aG9uL3B5LXZhbHVlLmMKKysrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYworQEAgLTI1 LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKKyAjaW5jbHVkZSAiZGZwLmgiCisg I2luY2x1ZGUgInZhbHByaW50LmgiCisrI2luY2x1ZGUgIm9ic2VydmVyLmgiCiAgCi0rLyogQ3Vy cmVudGx5IHVzZWQgb25seSBmb3IgVFlQRV9DT0RFX0ZVTkMgd2hlcmUgc3BlY2lmaWVzIHRoZSBy ZWFsIGZ1bmN0aW9uCi0rICAgYWRkcmVzcyBpcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGNh bGwuICBUWVBFX1RBUkdFVF9UWVBFIGRldGVybWluZXMgdGhlCi0rICAgZmluYWwgcmV0dXJuZWQg ZnVuY3Rpb24gdHlwZSB0byBiZSBwcmVzZW50ZWQgdG8gdXNlci4gICovCi0rCi0rI2RlZmluZSBU WVBFX0dOVV9JRlVOQyh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2dudV9pZnVuYykKLSsK LSAvKiBUeXBlIG93bmVyLiAgSWYgVFlQRV9PQkpGSUxFX09XTkVEIGlzIHRydWUsIHRoZSB0eXBl IGlzIG93bmVkIGJ5Ci0gICAgdGhlIG9iamZpbGUgcmV0cmlldmVkIGFzIFRZUEVfT0JKRklMRS4g IE90aGVyd2Vpc2UsIHRoZSB0eXBlIGlzCi0gICAgb3duZWQgYnkgYW4gYXJjaGl0ZWN0dXJlOyBU WVBFX09CSkZJTEUgaXMgTlVMTCBpbiB0aGlzIGNhc2UuICAqLwotQEAgLTI4NSw2ICsyOTksNDgg QEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKKyAjaWZkZWYgSEFWRV9QWVRIT04KICAK LSAjZGVmaW5lIFRZUEVfREVDTEFSRURfQ0xBU1ModCkgKFRZUEVfTUFJTl9UWVBFICh0KS0+Zmxh Z19kZWNsYXJlZF9jbGFzcykKK0BAIC0xMDY3LDYgKzEwNjgsMTcgQEAgZ2RicHlfaXNfdmFsdWVf b2JqZWN0IChQeU9iamVjdCAqb2JqKQorICAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAob2Jq LCAmdmFsdWVfb2JqZWN0X3R5cGUpOworIH0KICAKLSsvKiBEZWZpbmUgdGhpcyB0eXBlIGFzIGJl aW5nIHJlY2xhaW1hYmxlIGR1cmluZyBmcmVlX2FsbF90eXBlcy4gIFR5cGUgaXMKLSsgICByZXF1 aXJlZCB0byBiZSBoYXZlIFRZUEVfT0JKRklMRSBzZXQgdG8gTlVMTC4gIFNldHRpbmcgdGhpcyBm bGFnIHJlcXVpcmVzCi0rICAgaW5pdGlhbGl6aW5nIFRZUEVfRElTQ0FSREFCTEVfQUdFLCBzZWUg YWxsb2NfdHlwZV9kaXNjYXJkYWJsZS4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxF KHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZGlzY2FyZGFibGUpCi0rCi0rLyogTWFya2Vy IHRoaXMgdHlwZSBoYXMgYmVlbiB2aXNpdGVkIGJ5IHRoZSB0eXBlX21hcmtfdXNlZCBieSB0aGlz Ci0rICAgbWFyay1hbmQtc3dlZXAgdHlwZXMgZ2FyYmFnZSBjb2xsZWN0aW5nIHBhc3MuICBDdXJy ZW50IHBhc3MgaXMgcmVwcmVzZW50ZWQKLSsgICBieSBUWVBFX0RJU0NBUkRBQkxFX0FHRV9DVVJS RU5ULiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfRElTQ0FSREFCTEVfQUdFKHQpCShUWVBFX01BSU5f VFlQRSAodCktPmZsYWdfZGlzY2FyZGFibGVfYWdlKQorKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQg Zm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZpbGUuICAqLwog KwotKy8qIElzIEhJR0hfQk9VTkQgYSBsb3ctYm91bmQgcmVsYXRpdmUgY291bnQgKDEpIG9yIHRo ZSBoaWdoIGJvdW5kIGl0c2VsZiAoMCk/ICAqLworK3N0YXRpYyB2b2lkCisrcHl0aG9uX3R5cGVz X21hcmtfdXNlZCAodm9pZCkKKyt7CisrICB2YWx1ZV9vYmplY3QgKml0ZXI7CiArCi0rI2RlZmlu ZSBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQocmFuZ2VfdHlwZSkgXAotKyAgKFRZUEVf TUFJTl9UWVBFIChyYW5nZV90eXBlKS0+ZmxhZ19yYW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50KQor KyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQp CisrICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChpdGVyLT52YWx1ZSkpOworK30KICsK LSsvKiBOb3QgYWxsb2NhdGVkLiAgVFlQRV9BTExPQ0FURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1 Y2ggY2FzZS4gIElmIHRoaXMgZmxhZwotKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0 KSBpcyBOVUxMIHRoZW4gdGhlIHR5cGUgaXMgYWxsb2NhdGVkLiAgSWYgdGhpcwotKyAgIGZsYWcg aXMgdW5zZXQgYW5kIFRZUEVfQUxMT0NBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJG IGJsb2NrCi0rICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gc3RhdGUuICAqLwor IHZvaWQKKyBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKKyB7CitAQCAtMTA3Nyw2ICsx MDg5LDggQEAgZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCisgICBQeU1vZHVsZV9BZGRP YmplY3QgKGdkYl9tb2R1bGUsICJWYWx1ZSIsIChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5 cGUpOworIAorICAgdmFsdWVzX2luX3B5dGhvbiA9IE5VTEw7CiArCi0rI2RlZmluZSBUWVBFX05P VF9BTExPQ0FURUQodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3RfYWxsb2NhdGVkKQot KwotKy8qIE5vdCBhc3NvY2lhdGVkLiAgVFlQRV9BU1NPQ0lBVEVEKHQpIG11c3QgYmUgTlVMTCBp biBzdWNoIGNhc2UuICBJZiB0aGlzIGZsYWcKLSsgICBpcyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lB VEVEKHQpIGlzIE5VTEwgdGhlbiB0aGUgdHlwZSBpcyBhc3NvY2lhdGVkLiAgSWYKLSsgICB0aGlz IGZsYWcgaXMgdW5zZXQgYW5kIFRZUEVfQVNTT0NJQVRFRCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0 cyBEV0FSRiBibG9jawotKyAgIGRldGVybWluZXMgdGhlIGFjdHVhbCBhc3NvY2lhdGlvbiBzdGF0 ZS4gICovCi0rCi0rI2RlZmluZSBUWVBFX05PVF9BU1NPQ0lBVEVEKHQpCShUWVBFX01BSU5fVFlQ RSAodCktPmZsYWdfbm90X2Fzc29jaWF0ZWQpCi0rCi0rLyogQWRkcmVzcyBvZiB0aGUgYWN0dWFs IGRhdGEgYXMgZm9yIERXX0FUX2RhdGFfbG9jYXRpb24uICBJdHMgZHdhcmYgYmxvY2sgbXVzdAot KyAgIG5vdCBiZSBldmFsdWF0ZWQgdW5sZXNzIGJvdGggVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBU WVBFX05PVF9BU1NPQ0lBVEVEIGFyZQotKyAgIGZhbHNlLiAgSWYgVFlQRV9EQVRBX0xPQ0FUSU9O X0lTX0FERFIgc2V0IHRoZW4gVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgdmFsdWUKLSsgICBpcyB0 aGUgYWN0dWFsIGRhdGEgYWRkcmVzcyB2YWx1ZS4gIElmIHVuc2V0IGFuZAotKyAgIFRZUEVfREFU QV9MT0NBVElPTl9EV0FSRl9CTE9DSyBpcyBOVUxMIHRoZW4gdGhlIHZhbHVlIGlzIHRoZSBub3Jt YWwKLSsgICB2YWx1ZV9yYXdfYWRkcmVzcy4gIElmIHVuc2V0IGFuZCBUWVBFX0RBVEFfTE9DQVRJ T05fRFdBUkZfQkxPQ0sgaXMgbm90IE5VTEwKLSsgICB0aGVuIGl0cyBEV0FSRiBibG9jayBkZXRl cm1pbmVzIHRoZSBhY3R1YWwgZGF0YSBhZGRyZXNzLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfREFU QV9MT0NBVElPTl9JU19BRERSKHQpIFwKLSsgIChUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZGF0 YV9sb2NhdGlvbl9pc19hZGRyKQotKwotIC8qIENvbnN0YW50IHR5cGUuICBJZiB0aGlzIGlzIHNl dCwgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSBoYXMgYQotICAqIGNvbnN0IG1vZGlmaWVyLgotICAq LwotQEAgLTM0Miw4ICszOTgsNyBAQCBlbnVtIGZpZWxkX2xvY19raW5kCi0gICB7Ci0gICAgIEZJ RUxEX0xPQ19LSU5EX0JJVFBPUywJLyogYml0cG9zICovCi0gICAgIEZJRUxEX0xPQ19LSU5EX1BI WVNBRERSLAkvKiBwaHlzYWRkciAqLwotLSAgICBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJLyog cGh5c25hbWUgKi8KLS0gICAgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0sJLyogZHdhcmZfYmxv Y2sgKi8KLSsgICAgRklFTERfTE9DX0tJTkRfUEhZU05BTUUJLyogcGh5c25hbWUgKi8KLSAgIH07 CisrICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChweXRob25fdHlwZXNfbWFya191c2VkKTsK KyB9CiAgCi0gLyogQSBkaXNjcmltaW5hbnQgdG8gZGV0ZXJtaW5lIHdoaWNoIGZpZWxkIGluIHRo ZSBtYWluX3R5cGUudHlwZV9zcGVjaWZpYwotQEAgLTM5MCwxMSArNDQ1LDE5IEBAIHN0cnVjdCBt YWluX3R5cGUKLSAgIHVuc2lnbmVkIGludCBmbGFnX3ZlY3RvciA6IDE7Ci0gICB1bnNpZ25lZCBp bnQgZmxhZ19zdHViX3N1cHBvcnRlZCA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19ub3R0ZXh0 IDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2dudV9pZnVuYyA6IDE7Ci0gICB1bnNpZ25lZCBp bnQgZmxhZ19maXhlZF9pbnN0YW5jZSA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpmaWxl X293bmVkIDogMTsKLSAgIC8qIFRydWUgaWYgdGhpcyB0eXBlIHdhcyBkZWNsYXJlZCB3aXRoICJj bGFzcyIgcmF0aGVyIHRoYW4KLSAgICAgICJzdHJ1Y3QiLiAgKi8KLSAgIHVuc2lnbmVkIGludCBm bGFnX2RlY2xhcmVkX2NsYXNzIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2Rpc2NhcmRhYmxl IDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2Rpc2NhcmRhYmxlX2FnZSA6IDE7Ci0rICB1bnNp Z25lZCBpbnQgZmxhZ19keW5hbWljIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX3JhbmdlX2hp Z2hfYm91bmRfaXNfY291bnQgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfbm90X2FsbG9jYXRl ZCA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxhZ19ub3RfYXNzb2NpYXRlZCA6IDE7Ci0rICB1bnNp Z25lZCBpbnQgZmxhZ19kYXRhX2xvY2F0aW9uX2lzX2FkZHIgOiAxOworIAwKK2RpZmYgLS1naXQg YS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYworaW5kZXggMWYxMzVkNC4uNDg5 ODM4ZCAxMDA2NDQKKy0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKKysrKyBiL2dkYi9zb2xpYi1zdnI0 LmMKK0BAIC0xMjc4LDcgKzEyNzgsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUgKENP UkVfQUREUiBwYykKKyAJICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCisg CSAgfHwgKHBjID49IGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cKKyAJICAgICAgJiYgcGMgPCBp bmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCkKKy0JICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5V TEwpKTsKKysJICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpCisrCSAgfHwgaW5fZ251X2lm dW5jX3N0dWIgKHBjKSk7CisgfQogIAotICAgLyogQSBkaXNjcmltaW5hbnQgdGVsbGluZyB1cyB3 aGljaCBmaWVsZCBvZiB0aGUgdHlwZV9zcGVjaWZpYyB1bmlvbgotICAgICAgaXMgYmVpbmcgdXNl ZCBmb3IgdGhpcyB0eXBlLCBpZiBhbnkuICAqLwotQEAgLTQ2NSw2ICs1MjgsMjAgQEAgc3RydWN0 IG1haW5fdHlwZQorIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQsIGNv bXB1dGUgdGhlIGVudHJ5LXBvaW50CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bW1pc2MuYyBiL2dkYi9z eW1taXNjLmMKK2luZGV4IDYyZTZiOTcuLjAwZGM2MTMgMTAwNjQ0CistLS0gYS9nZGIvc3ltbWlz Yy5jCisrKysgYi9nZGIvc3ltbWlzYy5jCitAQCAtMjYyLDYgKzI2Miw5IEBAIGR1bXBfbXN5bWJv bHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgdWlfZmlsZSAqb3V0ZmlsZSkKKyAJ Y2FzZSBtc3RfdGV4dDoKKyAJICBtc190eXBlID0gJ1QnOworIAkgIGJyZWFrOworKwljYXNlIG1z dF90ZXh0X2dudV9pZnVuYzoKKysJICBtc190eXBlID0gJ2knOworKwkgIGJyZWFrOworIAljYXNl IG1zdF9zb2xpYl90cmFtcG9saW5lOgorIAkgIG1zX3R5cGUgPSAnUyc7CisgCSAgYnJlYWs7Citk aWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5jIGIvZ2RiL3N5bXRhYi5jCitpbmRleCA5NDcyYzI0Li41 NjFlZTUwIDEwMDY0NAorLS0tIGEvZ2RiL3N5bXRhYi5jCisrKysgYi9nZGIvc3ltdGFiLmMKK0BA IC0yOTE0LDcgKzI5MTQsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5f ZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAorICAgc3RhdGljIGVudW0gbWlu aW1hbF9zeW1ib2xfdHlwZSB0eXBlczNbXQorICAgICA9IHttc3RfZmlsZV9kYXRhLCBtc3Rfc29s aWJfdHJhbXBvbGluZSwgbXN0X2FicywgbXN0X3Vua25vd259OworICAgc3RhdGljIGVudW0gbWlu aW1hbF9zeW1ib2xfdHlwZSB0eXBlczRbXQorLSAgICA9IHttc3RfZmlsZV9ic3MsIG1zdF90ZXh0 LCBtc3RfYWJzLCBtc3RfdW5rbm93bn07CisrICAgID0ge21zdF9maWxlX2JzcywgbXN0X3RleHRf Z251X2lmdW5jLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07CisgICBlbnVtIG1pbmltYWxfc3ltYm9s X3R5cGUgb3VydHlwZTsKKyAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMjsKKyAg IGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsKK2RpZmYgLS1naXQgYS9nZGIvc3lt dGFiLmggYi9nZGIvc3ltdGFiLmgKK2luZGV4IGJlZGMxMGEuLmY1ZGRjYjEgMTAwNjQ0CistLS0g YS9nZGIvc3ltdGFiLmgKKysrKyBiL2dkYi9zeW10YWIuaAorQEAgLTI3Nyw2ICsyNzcsOSBAQCBl bnVtIG1pbmltYWxfc3ltYm9sX3R5cGUKKyB7CisgICBtc3RfdW5rbm93biA9IDAsCQkvKiBVbmtu b3duIHR5cGUsIHRoZSBkZWZhdWx0ICovCisgICBtc3RfdGV4dCwJCQkvKiBHZW5lcmFsbHkgZXhl Y3V0YWJsZSBpbnN0cnVjdGlvbnMgKi8KKysgIG1zdF90ZXh0X2dudV9pZnVuYywJCS8qIEV4ZWN1 dGFibGUgY29kZSByZXR1cm5pbmcgYWRkcmVzcworKwkJCQkgICBvZiBleGVjdXRhYmxlIGNvZGUg Ki8KKysgIG1zdF9zbG90X2dvdF9wbHQsCisgICBtc3RfZGF0YSwJCQkvKiBHZW5lcmFsbHkgaW5p dGlhbGl6ZWQgZGF0YSAqLworICAgbXN0X2JzcywJCQkvKiBHZW5lcmFsbHkgdW5pbml0aWFsaXpl ZCBkYXRhICovCisgICBtc3RfYWJzLAkJCS8qIEdlbmVyYWxseSBhYnNvbHV0ZSAobm9ucmVsb2Nh dGFibGUpICovCitAQCAtOTE3LDExICs5MjAsMjUgQEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmZp bmRfcGNfc2VjdF9mdW5jdGlvbiAoQ09SRV9BRERSLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKik7CiAg Ci0gICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CisgLyogbG9va3VwIGZ1bmN0aW9uIGZyb20g YWRkcmVzcywgcmV0dXJuIG5hbWUsIHN0YXJ0IGFkZHIgYW5kIGVuZCBhZGRyICovCiAgCi0rICAv KiBGb3IgRFdfQVRfZGF0YV9sb2NhdGlvbi4gICovCi0rICB1bmlvbgotKyAgICB7Ci0rICAgICAg c3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKLSsgICAgICBDT1JFX0FE RFIgYWRkcjsKLSsgICAgfQotKyAgZGF0YV9sb2NhdGlvbjsKKy1leHRlcm4gaW50IGZpbmRfcGNf cGFydGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSLCBjaGFyICoqLCBDT1JFX0FERFIgKiwKKy0JCQkJ ICAgICBDT1JFX0FERFIgKik7CisrZXh0ZXJuIGVudW0gZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9u X3R5cGUKKysgIHsKKysgICAgRklORF9QQ19QQVJUSUFMX0ZVTkNUSU9OX05PVF9GT1VORCA9IDAs CisrICAgIEZJTkRfUENfUEFSVElBTF9GVU5DVElPTl9OT1JNQUwsCisrICAgIEZJTkRfUENfUEFS VElBTF9GVU5DVElPTl9HTlVfSUZVTkMKKysgIH0gZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChD T1JFX0FERFIsIGNoYXIgKiosIENPUkVfQUREUiAqLCBDT1JFX0FERFIgKik7CisgCisgZXh0ZXJu IHZvaWQgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpOworIAorK2V4dGVybiBpbnQgcmVz b2x2ZV9nbnVfaWZ1bmMgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCisrCQkJICAgICAgQ09S RV9BRERSICpmdW5jdGlvbl9hZGRyZXNzcCk7CiArCi0rICAvKiBGb3IgRFdfQVRfYWxsb2NhdGVk LiAgKi8KLSsgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYWxsb2NhdGVkOworK2V4dGVy biBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlCisrICAo Y29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSk7CiArCi0rICAvKiBGb3IgRFdfQVRfYXNzb2NpYXRl ZC4gICovCi0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFzc29jaWF0ZWQ7CisrZXh0 ZXJuIHZvaWQgZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CisrCQkJCSAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAorKwkJCQkgICAgQ09SRV9BRERS IGZ1bmN0aW9uX2FkZHJlc3MpOwogKwotICAgLyogRm9yIHN0cnVjdHVyZSBhbmQgdW5pb24gdHlw ZXMsIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBmaWVsZC4KLSAgICAgIEZvciBzZXQgYW5kIHBhc2Nh bCBhcnJheSB0eXBlcywgdGhlcmUgaXMgb25lICJmaWVsZCIsCi0gICAgICB3aG9zZSB0eXBlIGlz IHRoZSBkb21haW4gdHlwZSBvZiB0aGUgc2V0IG9yIGFycmF5LgotQEAgLTUwMSwxMiArNTc4LDYg QEAgc3RydWN0IG1haW5fdHlwZQotIAotIAlDT1JFX0FERFIgcGh5c2FkZHI7Ci0gCWNoYXIgKnBo eXNuYW1lOwotLQotLQkvKiBUaGUgZmllbGQgbG9jYXRpb24gY2FuIGJlIGNvbXB1dGVkIGJ5IGV2 YWx1YXRpbmcgdGhlIGZvbGxvd2luZyBEV0FSRgotLQkgICBibG9jay4gIFRoaXMgY2FuIGJlIHVz ZWQgaW4gRm9ydHJhbiB2YXJpYWJsZS1sZW5ndGggYXJyYXlzLCBmb3IKLS0JICAgaW5zdGFuY2Uu ICAqLwotLQotLQlzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmX2Jsb2NrOwotICAg ICAgIH0KLSAgICAgICBsb2M7Ci0gCi1AQCAtNTQ0LDEzICs2MTUsMzQgQEAgc3RydWN0IG1haW5f dHlwZQotIAotICAgICBzdHJ1Y3QgcmFuZ2VfYm91bmRzCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QK LSsJewotKwkgIHVuaW9uCi0rCSAgICB7Ci0rCSAgICAgIExPTkdFU1QgY29uc3RhbnQ7Ci0rCSAg ICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7Ci0rCSAgICAgIHN0 cnVjdAotKwkJewotKwkJICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3Q7Ci0r CQkgIHN0cnVjdCB0eXBlICp0eXBlOwotKwkJfQotKwkgICAgICBkd2FyZl9sb2NsaXN0OwotKwkg ICAgfQotKwkgIHU7Ci0rCSAgZW51bSByYW5nZV9ib3VuZF9raW5kCi0rCSAgICB7Ci0rCSAgICAg IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQsCi0rCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdB UkZfQkxPQ0ssCi0rCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVAotKwkgICAg fQotKwkgIGtpbmQ7Ci0rCX0KLSAgICAgICAvKiBMb3cgYm91bmQgb2YgcmFuZ2UuICovCi0tCi0t ICAgICAgTE9OR0VTVCBsb3c7Ci0tCi0rICAgICAgbG93LAotICAgICAgIC8qIEhpZ2ggYm91bmQg b2YgcmFuZ2UuICovCi0tCi0tICAgICAgTE9OR0VTVCBoaWdoOwotKyAgICAgIGhpZ2gsCi0rICAg ICAgLyogQnl0ZSBzdHJpZGUgb2YgcmFuZ2UuICovCi0rICAgICAgYnl0ZV9zdHJpZGU7Ci0gCi0g ICAgICAgLyogRmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YWx1ZXMgb2YgbG93IGFuZCBo aWdoIGFyZQotICAgICAgICAgIHZhbGlkLiAgV2hlbiB0cnVlLCB0aGUgcmVzcGVjdGl2ZSByYW5n ZSB2YWx1ZSBpcwotQEAgLTYwMiw2ICs2OTQsOSBAQCBzdHJ1Y3QgbWFpbl90eXBlCi0gICAgICAg IHN1cHBvcnRpbmcgbXVsdGlwbGUgQUJJcy4gIFJpZ2h0IG5vdyB0aGlzIGlzIG9ubHkgZmV0Y2hl ZCBmcm9tCi0gICAgICAgIHRoZSBEd2FyZi0yIERXX0FUX2NhbGxpbmdfY29udmVudGlvbiBhdHRy aWJ1dGUuICAqLwotICAgICB1bnNpZ25lZCBjYWxsaW5nX2NvbnZlbnRpb247Ci0rCi0rICAgIC8q IEZvciBUWVBFX0NPREVfTU9EVUxFLCB0aGUgbGlzdCBvZiBzeW1ib2xzIGNvbnRhaW5lZCBpbiB0 aGUgbW9kdWxlLiAgKi8KLSsgICAgc3RydWN0IGJsb2NrICptb2R1bGVfYmxvY2s7Ci0gICB9IHR5 cGVfc3BlY2lmaWM7Ci0gfTsKLSAKLUBAIC04MzgsMTMgKzkzMyw2IEBAIHN0cnVjdCBjcGx1c19z dHJ1Y3RfdHlwZQotICAgICBpbnQgaXNfZHluYW1pYyA6IDI7Ci0gICB9OworIC8qIGxvb2t1cCBw YXJ0aWFsIHN5bWJvbCB0YWJsZSBieSBhZGRyZXNzIGFuZCBzZWN0aW9uICovCiAgCi0tLyogU3Ry dWN0IHVzZWQgaW4gY29tcHV0aW5nIHZpcnR1YWwgYmFzZSBsaXN0ICovCi0tc3RydWN0IHZiYXNl Ci0tICB7Ci0tICAgIHN0cnVjdCB0eXBlICp2YmFzZXR5cGU7CS8qIHBvaW50ZXIgdG8gdmlydHVh bCBiYXNlICovCi0tICAgIHN0cnVjdCB2YmFzZSAqbmV4dDsJCS8qIG5leHQgaW4gY2hhaW4gKi8K LS0gIH07Ci0tCi0gLyogU3RydWN0IHVzZWQgZm9yIHJhbmtpbmcgYSBmdW5jdGlvbiBmb3Igb3Zl cmxvYWQgcmVzb2x1dGlvbiAqLwotIHN0cnVjdCBiYWRuZXNzX3ZlY3RvcgotICAgewotQEAgLTg5 OSw5ICs5ODcsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3Qg dHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUp LT5wb2ludGVyX3R5cGUKLSAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0 aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCi0gI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAo dGhpc3R5cGUpLT5jaGFpbgotLS8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYg dHlwZSwgeW91IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmLgotLSAgIEJ1dCBjaGVja190eXBl ZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRiB0eXBlLAotLSAgIHNv IHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0 ZV92YWx1ZQotKy8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYsIEFSUkFZIG9y IFNUUklORyB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsCi0rICAgY2hlY2tfdHlwZWRlZi4gIEJ1dCBj aGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRgotKyAg IHR5cGUsIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5j ZSBhbGxvY2F0ZV92YWx1ZQotICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChW QUxVRV9UWVBFIChYKSkgaXMgc2FmZS4gICovCi0gI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlw ZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCi0gLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQ RV9DT0RFX1RZUEVERUYsIHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCi1AQCAtOTEwLDExICs5OTgs MTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7 Ci0gI2RlZmluZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBl KS0+bmZpZWxkcwotICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBF KHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwotICNkZWZpbmUgVFlQRV9URU1QTEFURV9BUkdT KHRoaXN0eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+dGVtcGxhdGVfYXJncwot KyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLKHRoaXN0eXBlKSBUWVBFX01B SU5fVFlQRSAodGhpc3R5cGUpLT5kYXRhX2xvY2F0aW9uLmR3YXJmX2Jsb2NrCi0rI2RlZmluZSBU WVBFX0RBVEFfTE9DQVRJT05fQUREUih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBl KS0+ZGF0YV9sb2NhdGlvbi5hZGRyCi0rI2RlZmluZSBUWVBFX0FMTE9DQVRFRCh0aGlzdHlwZSkg VFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+YWxsb2NhdGVkCi0rI2RlZmluZSBUWVBFX0FTU09D SUFURUQodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFzc29jaWF0ZWQKKyBl eHRlcm4gc3RydWN0IHN5bXRhYiAqZmluZF9wY19zZWN0X3N5bXRhYl92aWFfcGFydGlhbCAoQ09S RV9BRERSLAorQEAgLTk5Niw2ICsxMDEzLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX25hbWUKICAKLSAjZGVmaW5lIFRZUEVfSU5E RVhfVFlQRSh0eXBlKSBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApCi0gI2RlZmluZSBUWVBFX1JB TkdFX0RBVEEodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmJv dW5kcwotLSNkZWZpbmUgVFlQRV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRB KHJhbmdlX3R5cGUpLT5sb3cKLS0jZGVmaW5lIFRZUEVfSElHSF9CT1VORChyYW5nZV90eXBlKSBU WVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmhpZ2gKLSsjZGVmaW5lIFRZUEVfTE9XX0JPVU5E KHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93LnUuY29uc3RhbnQK LSsjZGVmaW5lIFRZUEVfSElHSF9CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFu Z2VfdHlwZSktPmhpZ2gudS5jb25zdGFudAotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERShyYW5n ZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLnUuY29uc3Rh bnQKLSAjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCi0gICAg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3dfdW5kZWZpbmVkCi0gI2RlZmluZSBUWVBF X0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKLUBAIC05MzEsNyArMTAyNCwxNCBA QCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAg ICAoVFlQRV9ISUdIX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQorIGV4dGVy biBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoQ09S RV9BRERSKTsKICAKLSAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfVkFMVUUoYXJyYXl0 eXBlKSBcCi0tICAgKFRZUEVfTE9XX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkp KQotKyAgVFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkKKytleHRl cm4gaW50IGluX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpOwogKwotKy8qIFRZUEVfQllU RV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkgd2l0aCBhIGZhbGxiYWNrIHRv IHRoZQotKyAgIGVsZW1lbnQgc2l6ZSBpZiBubyBzcGVjaWZpYyBzdHJpZGUgdmFsdWUgaXMga25v d24uICAqLwotKyNkZWZpbmUgVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRShhcnJheXR5cGUp CQlcCi0rICAoVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSA9 PSAwCVwKLSsgICA/IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheXR5cGUpKQkJ XAotKyAgIDogVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSkK LSAKLSAvKiBDKysgKi8KLSAKLUBAIC05NTksNiArMTA1OSw3IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICNkZWZpbmUgVFlQRV9HTkFUX1NQ RUNJRklDKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMu Z25hdF9zdHVmZgotICNkZWZpbmUgVFlQRV9ERVNDUklQVElWRV9UWVBFKHRoaXN0eXBlKSBUWVBF X0dOQVRfU1BFQ0lGSUModGhpc3R5cGUpLT5kZXNjcmlwdGl2ZV90eXBlCi0gI2RlZmluZSBUWVBF X0NBTExJTkdfQ09OVkVOVElPTih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT50 eXBlX3NwZWNpZmljLmNhbGxpbmdfY29udmVudGlvbgotKyNkZWZpbmUgVFlQRV9NT0RVTEVfQkxP Q0sodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlwZV9zcGVjaWZpYy5tb2R1 bGVfYmxvY2sKLSAjZGVmaW5lIFRZUEVfQkFTRUNMQVNTKHRoaXN0eXBlLGluZGV4KSBUWVBFX0ZJ RUxEX1RZUEUodGhpc3R5cGUsIGluZGV4KQotICNkZWZpbmUgVFlQRV9OX0JBU0VDTEFTU0VTKHRo aXN0eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+bl9iYXNlY2xhc3NlcwotICNk ZWZpbmUgVFlQRV9CQVNFQ0xBU1NfTkFNRSh0aGlzdHlwZSxpbmRleCkgVFlQRV9GSUVMRF9OQU1F KHRoaXN0eXBlLCBpbmRleCkKLUBAIC05NzcsNyArMTA3OCw2IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICNkZWZpbmUgRklFTERfQklUUE9T KHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmJpdHBvcykKLSAjZGVmaW5lIEZJRUxEX1NUQVRJQ19Q SFlTTkFNRSh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzbmFtZSkKLSAjZGVmaW5lIEZJRUxE X1NUQVRJQ19QSFlTQUREUih0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzYWRkcikKLS0jZGVm aW5lIEZJRUxEX0RXQVJGX0JMT0NLKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmR3YXJmX2Jsb2Nr KQotICNkZWZpbmUgU0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAotICAgKEZJ RUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKLSAgICBG SUVMRF9CSVRQT1MgKHRoaXNmbGQpID0gKGJpdHBvcykpCi1AQCAtOTg3LDkgKzEwODcsNiBAQCBl eHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVm aW5lIFNFVF9GSUVMRF9QSFlTQUREUih0aGlzZmxkLCBhZGRyKQkJCVwKLSAgIChGSUVMRF9MT0Nf S0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUiwJCVwKLSAgICBGSUVMRF9T VEFUSUNfUEhZU0FERFIgKHRoaXNmbGQpID0gKGFkZHIpKQotLSNkZWZpbmUgU0VUX0ZJRUxEX0RX QVJGX0JMT0NLKHRoaXNmbGQsIGFkZHIpCQkJXAotLSAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxk KSA9IEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLLAlcCi0tICAgRklFTERfRFdBUkZfQkxPQ0sg KHRoaXNmbGQpID0gKGFkZHIpKQotICNkZWZpbmUgRklFTERfQVJUSUZJQ0lBTCh0aGlzZmxkKSAo KHRoaXNmbGQpLmFydGlmaWNpYWwpCi0gI2RlZmluZSBGSUVMRF9CSVRTSVpFKHRoaXNmbGQpICgo dGhpc2ZsZCkuYml0c2l6ZSkKLSAKLUBAIC0xMDAwLDcgKzEwOTcsNiBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfRklF TERfQklUUE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZUEVfRklFTEQgKHRoaXN0eXBl LCBuKSkKLSAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXN0eXBlLCBuKSBG SUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKLSAjZGVmaW5l IFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZ U0FERFIgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKLS0jZGVmaW5lIFRZUEVfRklFTERfRFdB UkZfQkxPQ0sodGhpc3R5cGUsIG4pIEZJRUxEX0RXQVJGX0JMT0NLIChUWVBFX0ZJRUxEICh0aGlz dHlwZSwgbikpCi0gI2RlZmluZSBUWVBFX0ZJRUxEX0FSVElGSUNJQUwodGhpc3R5cGUsIG4pIEZJ RUxEX0FSVElGSUNJQUwoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKLSAjZGVmaW5lIFRZUEVfRklF TERfQklUU0laRSh0aGlzdHlwZSwgbikgRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRoaXN0eXBl LG4pKQotICNkZWZpbmUgVFlQRV9GSUVMRF9QQUNLRUQodGhpc3R5cGUsIG4pIChGSUVMRF9CSVRT SVpFKFRZUEVfRklFTEQodGhpc3R5cGUsbikpIT0wKQotQEAgLTExMzksNiArMTIzNSwxMCBAQCBz dHJ1Y3QgYnVpbHRpbl90eXBlCi0gICAgICAoKikgKCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMg ZnVuY3Rpb24gcG9pbnRlci4gICovCi0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsK KyBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICoKKyAgICAgbG9va3VwX21pbmltYWxfc3lt Ym9sX2FuZF9vYmpmaWxlIChjb25zdCBjaGFyICosCisgCQkJCSAgICAgICBzdHJ1Y3Qgb2JqZmls ZSAqKik7CitkaWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3RhcmdldC5jCitpbmRleCA4 NjJkZjRlLi5hOGYxYmRkIDEwMDY0NAorLS0tIGEvZ2RiL3RhcmdldC5jCisrKysgYi9nZGIvdGFy Z2V0LmMKK0BAIC0xMjMsNiArMTIzLDggQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfd2F0 Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCwKKyBzdGF0aWMgaW50IGRlYnVnX3RvX3JlbW92 ZV93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50LAorIAkJCQkgICAgICAgc3RydWN0IGV4 cHJlc3Npb24gKik7CiAgCi0rICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVu Y3Rpb24gKHJldHVybmluZyB2b2lkKScgdHlwZS4KLSsgICAgIFRoZSBmaW5hbCB2b2lkIHJldHVy biB0eXBlIGlzIG5vdCBzaWduaWZpY2FudCBmb3IgaXQuICAqLwotKyAgc3RydWN0IHR5cGUgKmJ1 aWx0aW5fZnVuY19mdW5jOworK3N0YXRpYyBpbnQgZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRz ICh2b2lkKTsKICsKKyBzdGF0aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAo dm9pZCk7CiAgCi0gICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlwZXMuICAqLwotIAotQEAgLTExNzks NiArMTI3OSw3IEBAIHN0cnVjdCBvYmpmaWxlX3R5cGUKLSAKLSAgIC8qIFR5cGVzIHVzZWQgZm9y IHN5bWJvbHMgd2l0aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCi0gICBzdHJ1Y3QgdHlwZSAq bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSsgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfZ251X2lm dW5jX3N5bWJvbDsKLSAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOwotICAgc3Ry dWN0IHR5cGUgKm5vZGVidWdfdW5rbm93bl9zeW1ib2w7Ci0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1 Z190bHNfc3ltYm9sOwotQEAgLTEzMzMsNiArMTQzNCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUg KmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkg ICAgICAgc3RydWN0IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfYXJyYXlf cmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOworIHN0YXRpYyBpbnQgZGVidWdf dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAq KTsKK0BAIC02MDYsNiArNjA4LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQorICAg ICAgIElOSEVSSVQgKHRvX3JlbW92ZV9od19icmVha3BvaW50LCB0KTsKKyAgICAgICBJTkhFUklU ICh0b19pbnNlcnRfd2F0Y2hwb2ludCwgdCk7CisgICAgICAgSU5IRVJJVCAodG9fcmVtb3ZlX3dh dGNocG9pbnQsIHQpOworKyAgICAgIElOSEVSSVQgKHRvX2RldGFjaF93YXRjaHBvaW50cywgdCk7 CisgICAgICAgSU5IRVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOworICAgICAgIElO SEVSSVQgKHRvX2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQpOworICAgICAgIElOSEVSSVQg KHRvX2hhdmVfY29udGludWFibGVfd2F0Y2hwb2ludCwgdCk7CitAQCAtNzM5LDYgKzc0Miw5IEBA IHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKKyAgIGRlX2ZhdWx0ICh0b19yZW1vdmVfd2F0 Y2hwb2ludCwKKyAJICAgIChpbnQgKCopIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhw cmVzc2lvbiAqKSkKKyAJICAgIHJldHVybl9taW51c19vbmUpOworKyAgZGVfZmF1bHQgKHRvX2Rl dGFjaF93YXRjaHBvaW50cywKKysJICAgIChpbnQgKCopICh2b2lkKSkKKysJICAgIHJldHVybl96 ZXJvKTsKKyAgIGRlX2ZhdWx0ICh0b19zdG9wcGVkX2J5X3dhdGNocG9pbnQsCisgCSAgICAoaW50 ICgqKSAodm9pZCkpCisgCSAgICByZXR1cm5femVybyk7CitAQCAtMzQ0MSw2ICszNDQ3LDE5IEBA IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHR5cGUsCisgICByZXR1cm4gcmV0dmFsOworIH0KICAKLStleHRlcm4gQ09SRV9BRERSIHR5cGVf cmFuZ2VfYW55X2ZpZWxkX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkJ CQlpbnQgZmllbGRubyk7Ci0rCi0rZXh0ZXJuIGludCB0eXBlX3JhbmdlX2hpZ2hfYm91bmRfaW50 ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKKytzdGF0aWMgaW50CisrZGVidWdfdG9f ZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorK3sKKysgIGludCByZXR2YWw7CiArCi0rZXh0ZXJu IGludCB0eXBlX3JhbmdlX2NvdW50X2JvdW5kX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2Vf dHlwZSk7CisrICByZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzICgp OwogKwotK2V4dGVybiBDT1JFX0FERFIgdHlwZV9yYW5nZV9ieXRlX3N0cmlkZV9pbnRlcm5hbCAo c3RydWN0IHR5cGUgKnJhbmdlX3R5cGUsCi0rCQkJCQkJICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90 eXBlKTsKLSsKLStleHRlcm4gdm9pZCBmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSk7 Ci0rCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBl ICosIHN0cnVjdCB0eXBlICosCi0gCQkJCQlzdHJ1Y3QgdHlwZSAqKTsKLSBleHRlcm4gc3RydWN0 IHR5cGUgKmxvb2t1cF9zdHJpbmdfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQp OwotQEAgLTEzNzUsNiArMTQ4OCw4IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChz dHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKLSAKLSBleHRlcm4gaW50IGlzX3VuaXF1ZV9h bmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwotIAotK2V4dGVybiB2b2lk IHR5cGVfbWFya191c2VkIChzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rCi0gLyogT3ZlcmxvYWQgcmVz b2x1dGlvbiAqLwotIAotICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+cmFua1swXSkK LUBAIC0xNDM3LDEwICsxNTUyLDExIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5 cGUgKGNoYXIgKiwgaW50KTsKLSAKLSBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNf aGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotIAotLWV4dGVybiBzdHJ1Y3QgdHlwZSAq Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCQkgc3Ry dWN0IHR5cGUgKnR5cGUsCi0rZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGVfcmVjdXJzaXZl IChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJCQkJCSBodGFiX3QgY29waWVkX3R5cGVzKTsKLSAKLSBl eHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpOwot IAotK2V4dGVybiB2b2lkIGZyZWVfYWxsX3R5cGVzICh2b2lkKTsKLSsKLSAjZW5kaWYgLyogR0RC VFlQRVNfSCAqLwotZGlmZiAtLWdpdCBhL2dkYi9nbnUtdjMtYWJpLmMgYi9nZGIvZ251LXYzLWFi aS5jCi1pbmRleCA1MzIxNDAxLi5iMTg4MmEyIDEwMDY0NAotLS0tIGEvZ2RiL2dudS12My1hYmku YwotKysrIGIvZ2RiL2dudS12My1hYmkuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAi ZGVtYW5nbGUuaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAidmFscHJpbnQu aCIKLSsjaW5jbHVkZSAiYy1sYW5nLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAj aW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTQ1NiwxMCArNDU3LDggQEAgZ251djNfZmluZF9t ZXRob2RfaW4gKHN0cnVjdCB0eXBlICpkb21haW4sIENPUkVfQUREUiB2b2Zmc2V0LAotIAkJICAg ICAgTE9OR0VTVCBhZGp1c3RtZW50KQotIHsKLSAgIGludCBpOwotLSAgY29uc3QgY2hhciAqcGh5 c25hbWU7Ci0gCi0gICAvKiBTZWFyY2ggdGhpcyBjbGFzcyBmaXJzdC4gICovCi0tICBwaHlzbmFt ZSA9IE5VTEw7Ci0gICBpZiAoYWRqdXN0bWVudCA9PSAwKQotICAgICB7Ci0gICAgICAgaW50IGxl bjsKLUBAIC01ODcsMTUgKzU4NiwyNCBAQCBnbnV2M19wcmludF9tZXRob2RfcHRyIChjb25zdCBn ZGJfYnl0ZSAqY29udGVudHMsCi0gCXsKLSAJICBjaGFyICpkZW1hbmdsZWRfbmFtZSA9IGNwbHVz X2RlbWFuZ2xlIChwaHlzbmFtZSwKLSAJCQkJCQkgRE1HTF9BTlNJIHwgRE1HTF9QQVJBTVMpOwot LQkgIGlmIChkZW1hbmdsZWRfbmFtZSAhPSBOVUxMKQotKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIiZ2aXJ0dWFsICIpOwotKwkgIGlmIChkZW1hbmdsZWRfbmFtZSA9PSBOVUxMKQotKwkg ICAgZnB1dHNfZmlsdGVyZWQgKHBoeXNuYW1lLCBzdHJlYW0pOwotKwkgIGVsc2UKLSAJICAgIHsK LS0JICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJnZpcnR1YWwgIik7Ci0gCSAgICAg IGZwdXRzX2ZpbHRlcmVkIChkZW1hbmdsZWRfbmFtZSwgc3RyZWFtKTsKLSAJICAgICAgeGZyZWUg KGRlbWFuZ2xlZF9uYW1lKTsKLS0JICAgICAgcmV0dXJuOwotIAkgICAgfQotKwkgIHJldHVybjsK LSAJfQotICAgICB9Ci0rICBlbHNlIGlmIChwdHJfdmFsdWUgIT0gMCkKLSsgICAgewotKyAgICAg IC8qIEZvdW5kIGEgbm9uLXZpcnR1YWwgZnVuY3Rpb246IHByaW50IG91dCB0aGUgdHlwZS4gICov Ci0rICAgICAgZnB1dHNfZmlsdGVyZWQgKCIoIiwgc3RyZWFtKTsKLSsgICAgICBjX3ByaW50X3R5 cGUgKHR5cGUsICIiLCBzdHJlYW0sIC0xLCAwKTsKLSsgICAgICBmcHV0c19maWx0ZXJlZCAoIikg Iiwgc3RyZWFtKTsKLSsgICAgfQotIAotICAgLyogV2UgZGlkbid0IGZpbmQgaXQ7IHByaW50IHRo ZSByYXcgZGF0YS4gICovCi0gICBpZiAodmJpdCkKLWRpZmYgLS1naXQgYS9nZGIvaHBwYS1saW51 eC10ZGVwLmMgYi9nZGIvaHBwYS1saW51eC10ZGVwLmMKLWluZGV4IGViZmMyZjUuLmU0MDEwNWIg MTAwNjQ0Ci0tLS0gYS9nZGIvaHBwYS1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9ocHBhLWxpbnV4 LXRkZXAuYwotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1 ZGUgInJlZ2NhY2hlLmgiCi0gI2luY2x1ZGUgImhwcGEtdGRlcC5oIgotKyNpbmNsdWRlICJsaW51 eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAKLUBAIC01MTMsNyArNTE0 LDIxIEBAIGhwcGFfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKLSAKLSAgIHJldHVybiBOVUxMOwotIH0KLS0MCi0rCi0rc3RhdGljIENPUkVf QUREUgotK2hwcGEzMl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgc3RydWN0IHRh cmdldF9vcHMgKnRhcmcpCi0rewotKyAgQ09SRV9BRERSIHBjID0gaHBwYTMyX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCB0YXJnKTsKLSsgIENPUkVfQUREUiByZXNv bHZlZDsKLSsKLSsgIHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAo Z2RiYXJjaCwgYWRkciwgcGMpOwotKyAgaWYgKHJlc29sdmVkICE9IHBjKQotKyAgICBwYyA9IGhw cGEzMl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcmVzb2x2ZWQsIHRhcmcp OwotKwotKyAgcmV0dXJuIHBjOwotK30KLSAKLSAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4gICov Ci0gZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9ocHBhX2xpbnV4X3Rk ZXA7Ci1AQCAtNTU1LDYgKzU3MCwxMCBAQCBocHBhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2Ri YXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgLyogRW5hYmxlIFRM UyBzdXBwb3J0LiAgKi8KLSAgIHNldF9nZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRy ZXNzIChnZGJhcmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN2cjRfZmV0Y2hfb2JqZmlsZV9saW5rX21hcCk7Ci0rCi0rICBpZiAodGRlcC0+Ynl0ZXNf cGVyX2FkZHJlc3MgPT0gNCkKLSsgICAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgKGdkYmFyY2gsCi0rCQkJCSAgICAgICBocHBhMzJfbGludXhfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIpOwotIH0KLSAKLSB2b2lkCi1kaWZmIC0tZ2l0IGEvZ2RiL2hwcGEtdGRlcC5j IGIvZ2RiL2hwcGEtdGRlcC5jCi1pbmRleCBhMDY2NWVmLi4zNDdmYmU0IDEwMDY0NAotLS0tIGEv Z2RiL2hwcGEtdGRlcC5jCi0rKysgYi9nZGIvaHBwYS10ZGVwLmMKLUBAIC0xMjQ3LDcgKzEyNDcs NyBAQCBocHBhNjRfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IHR5cGUgKmZ1bmNfdHlwZSwKLSB9Ci0gDAotIAotLXN0YXRpYyBDT1JFX0FERFIKLStDT1JFX0FE RFIKLSBocHBhMzJfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBDT1JFX0FERFIgYWRkciwKLSAJCQkJICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcp Ci0gewotZGlmZiAtLWdpdCBhL2dkYi9ocHBhLXRkZXAuaCBiL2dkYi9ocHBhLXRkZXAuaAotaW5k ZXggZTJkODc1Mi4uYzYyNjYzNyAxMDA2NDQKLS0tLSBhL2dkYi9ocHBhLXRkZXAuaAotKysrIGIv Z2RiL2hwcGEtdGRlcC5oCi1AQCAtMjQ2LDQgKzI0Niw4IEBAIGV4dGVybiBpbnQgaHBwYV9pbl9z b2xpYl9jYWxsX3RyYW1wb2xpbmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAkJCQkJICBD T1JFX0FERFIgcGMsIGNoYXIgKm5hbWUpOwotIGV4dGVybiBDT1JFX0FERFIgaHBwYV9za2lwX3Ry YW1wb2xpbmVfY29kZSAoc3RydWN0IGZyYW1lX2luZm8gKiwgQ09SRV9BRERSIHBjKTsKLSAKLStl eHRlcm4gQ09SRV9BRERSIGhwcGEzMl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkJICAgIENPUkVfQUREUiBhZGRyLAotKwkJCQkJCSAg ICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZyk7Ci0rCi0gI2VuZGlmICAvKiBocHBhLXRkZXAuaCAq LwotZGlmZiAtLWdpdCBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0 LmMKLWluZGV4IGZmODM3ZjIuLjE3MTA0ODcgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1saW51eC1u YXQuYwotKysrIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKLUBAIC02OTYsNiArNjk2LDIxIEBAIGkz ODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCi0gICAgIH0KLSB9 Ci0gCi0rLyogU2VlIGkzODZfZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVy cyBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sCi0rICAgb3IgaTM4Nl9saW51eF9kcl9yZXNldF9h ZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQotKyAgIChpMzg2X2xp bnV4X2RyKS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX2RldGFjaCAodm9p ZCkKLSt7Ci0rICBpbnQgcmVnbnVtOwotKwotKyAgaTM4Nl9saW51eF9kcl9zZXQgKGluZmVyaW9y X3B0aWQsIERSX0NPTlRST0wsIDApOwotKyAgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKH4w VUwpOwotKyAgZm9yIChyZWdudW0gPSBEUl9GSVJTVEFERFI7IHJlZ251bSA8PSBEUl9MQVNUQURE UjsgcmVnbnVtKyspCi0rICAgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCByZWdu dW0sIDApOwotK30KKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCSAgICAg ICJ0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzICgpID0gJWxkXG4iLAorKwkJICAgICAgKHVuc2ln bmVkIGxvbmcpIHJldHZhbCk7CisrICByZXR1cm4gcmV0dmFsOworK30KICsKICBzdGF0aWMgdm9p ZAotIGkzODZfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCi0gewotQEAgLTg2OCw2ICs4 ODMsNyBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKLSAgIGkzODZfZHJfbG93 LnJlc2V0X2FkZHIgPSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7Ci0gICBpMzg2X2RyX2xvdy5n ZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzOwotICAgaTM4Nl9kcl9sb3cudW5z ZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXM7Ci0rICBpMzg2X2RyX2xvdy5k ZXRhY2ggPSBpMzg2X2xpbnV4X2RyX2RldGFjaDsKLSAgIGkzODZfc2V0X2RlYnVnX3JlZ2lzdGVy X2xlbmd0aCAoNCk7Ci0gCi0gICAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJhY2UgcmVzdW1l IG1ldGhvZC4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRlcC5jIGIvZ2RiL2kz ODYtbGludXgtdGRlcC5jCi1pbmRleCA1YWNkMjI5Li5hZWMxNzM2IDEwMDY0NAotLS0tIGEvZ2Ri L2kzODYtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMKLUBAIC03OTgs NiArNzk4LDkgQEAgaTM4Nl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZv LCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaTM4Nl9saW51eF9nZXRfc3lzY2FsbF9udW1iZXIpOwotIAotICAgc2V0X2dkYmFyY2hf Z2V0X3NpZ2luZm9fdHlwZSAoZ2RiYXJjaCwgbGludXhfZ2V0X3NpZ2luZm9fdHlwZSk7Ci0rCi0r ICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJ CSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRl IGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotZGlmZiAt LWdpdCBhL2dkYi9pMzg2LW5hdC5jIGIvZ2RiL2kzODYtbmF0LmMKLWluZGV4IGZhMGNjZTYuLjQy ZGZkMWMgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuYwotKysrIGIvZ2RiL2kzODYtbmF0LmMK LUBAIC01MjcsNiArNTI3LDE3IEBAIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSkKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotKy8qIFNl ZSB0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0raTM4Nl9k ZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpCi0rewotKyAgaWYgKGkzODZfZHJfbG93LmRldGFjaCkK LSsgICAgaTM4Nl9kcl9sb3cuZGV0YWNoICgpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIC8q IFJldHVybiBub24temVybyBpZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3Rh cnRzIGF0Ci0gICAgYWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAg Ki8KLSAKLUBAIC02NzksNiArNjkwLDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0 YXJnZXRfb3BzICp0KQotICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3Bw ZWRfZGF0YV9hZGRyZXNzOwotICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2Vy dF93YXRjaHBvaW50OwotICAgdC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93 YXRjaHBvaW50OwotKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0 Y2hwb2ludHM7Ci0gICB0LT50b19pbnNlcnRfaHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3 X2JyZWFrcG9pbnQ7Ci0gICB0LT50b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3Zl X2h3X2JyZWFrcG9pbnQ7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kz ODYtbmF0LmgKLWluZGV4IDczMTdlN2QuLmVhOTE0YTUgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1u YXQuaAotKysrIGIvZ2RiL2kzODYtbmF0LmgKLUBAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9p ZCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gICAgICAgdW5z ZXRfc3RhdHVzICAgICAgICAgICAgIC0tIHVuc2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUg ZGVidWcKLSAJCQkJICBzdGF0dXMgKERSNikgcmVnaXN0ZXIgZm9yIGFsbCBMV1BzCi0gCi0rICAg ICAgZGV0YWNoICAgICAgICAgICAgICAgICAgIC0tIGNsZWFyIGFsbCBkZWJ1ZyByZWdpc3RlcnMg b2Ygb25seSB0aGUKLSsJCQkJICBJTkZFUklPUl9QVElEIHRhc2sgd2l0aG91dCBhZmZlY3Rpbmcg YW55Ci0rCQkJCSAgcmVnaXN0ZXIgY2FjaGVzLgotKwotICAgIEFkZGl0aW9uYWxseSwgdGhlIG5h dGl2ZSBmaWxlIHNob3VsZCBzZXQgdGhlIGRlYnVnX3JlZ2lzdGVyX2xlbmd0aAotICAgIGZpZWxk IHRvIDQgb3IgOCBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIGZvcgotICAg IGRldWJnIHJlZ2lzdGVycy4gICovCi1AQCAtNzMsNiArNzcsNyBAQCBzdHJ1Y3QgaTM4Nl9kcl9s b3dfdHlwZQotICAgICB2b2lkICgqcmVzZXRfYWRkcikgKGludCk7Ci0gICAgIHVuc2lnbmVkIGxv bmcgKCpnZXRfc3RhdHVzKSAodm9pZCk7Ci0gICAgIHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNp Z25lZCBsb25nKTsKLSsgICAgdm9pZCAoKmRldGFjaCkgKHZvaWQpOwotICAgICBpbnQgZGVidWdf cmVnaXN0ZXJfbGVuZ3RoOwotICAgfTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvaWE2NC1saW51eC10 ZGVwLmMgYi9nZGIvaWE2NC1saW51eC10ZGVwLmMKLWluZGV4IGIxMmYyODIuLjhkZGIyNGEgMTAw NjQ0Ci0tLS0gYS9nZGIvaWE2NC1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9pYTY0LWxpbnV4LXRk ZXAuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAib3NhYmkuaCIKLSAjaW5jbHVkZSAi c29saWItc3ZyNC5oIgotICNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAibGludXgtdGRl cC5oIgotIAotIC8qIFRoZSBzaWd0cmFtcCBjb2RlIGlzIGluIGEgbm9uLXJlYWRhYmxlIChleGVj dXRhYmxlLW9ubHkpIHJlZ2lvbgotICAgIG9mIG1lbW9yeSBjYWxsZWQgdGhlIGBgZ2F0ZSBwYWdl JycuICBUaGUgYWRkcmVzc2VzIGluIHF1ZXN0aW9uCi1AQCAtMTM5LDYgKzE0MCw5IEBAIGlhNjRf bGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpCi0gICAvKiBFbmFibGUgVExTIHN1cHBvcnQuICAqLwotICAgc2V0X2dkYmFyY2hf ZmV0Y2hfdGxzX2xvYWRfbW9kdWxlX2FkZHJlc3MgKGdkYmFyY2gsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZyNF9mZXRjaF9vYmpmaWxlX2xpbmtfbWFw KTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNo LAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIC8q IFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICov Ci1kaWZmIC0tZ2l0IGEvZ2RiL2luZmNhbGwuYyBiL2dkYi9pbmZjYWxsLmMKLWluZGV4IGU2NDI4 OTQuLjZhYzk1Y2MgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mY2FsbC5jCi0rKysgYi9nZGIvaW5mY2Fs bC5jCi1AQCAtMjUyLDkgKzI1MiwxNyBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1 ZSAqZnVuY3Rpb24sIHN0cnVjdCB0eXBlICoqcmV0dmFsX3R5cGUpCi0gICAgICAgaWYgKFRZUEVf Q09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0gCSAgfHwgVFlQRV9DT0RFIChmdHlwZSkg PT0gVFlQRV9DT0RFX01FVEhPRCkKLSAJewotLQkgIGZ1bmFkZHIgPSBnZGJhcmNoX2NvbnZlcnRf ZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBmdW5hZGRyLAotLQkJCQkJCQkmY3VycmVudF90 YXJnZXQpOwotLQkgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7Ci0rCSAg Q09SRV9BRERSIGZ1bmFkZHIyOwotKwotKwkgIGZ1bmFkZHIyID0gZ2RiYXJjaF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKLSsJCQkJCQkJICZjdXJyZW50X3Rh cmdldCk7Ci0rCi0rCSAgLyogSWYgVFlQRV9HTlVfSUZVTkMgaXMgY3VycmVudGx5IG5vdCByZXNv bHZhYmxlIGtlZXAgaXRzIHR5cGUuICAqLwotKwkgIGlmIChmdW5hZGRyMiAhPSBmdW5hZGRyIHx8 ICFUWVBFX0dOVV9JRlVOQyAoZnR5cGUpKQotKwkgICAgewotKwkgICAgICBmdW5hZGRyID0gZnVu YWRkcjI7Ci0rCSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7Ci0r CSAgICB9Ci0gCX0KLSAgICAgfQotICAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfSU5UKQot ZGlmZiAtLWdpdCBhL2dkYi9pbmZjbWQuYyBiL2dkYi9pbmZjbWQuYwotaW5kZXggMjljZjQyNy4u MGVjNTk4ZSAxMDA2NDQKLS0tLSBhL2dkYi9pbmZjbWQuYwotKysrIGIvZ2RiL2luZmNtZC5jCi1A QCAtODA4LDcgKzgwOCw3IEBAIG5leHRpX2NvbW1hbmQgKGNoYXIgKmNvdW50X3N0cmluZywgaW50 IGZyb21fdHR5KQotICAgc3RlcF8xICgxLCAxLCBjb3VudF9zdHJpbmcpOwotIH0KLSAKLS1zdGF0 aWMgdm9pZAotK3ZvaWQKLSBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQg KmFyZykKKyBkZWJ1Z190b190ZXJtaW5hbF9pbml0ICh2b2lkKQogIHsKLSAgIGludCB0aHJlYWQg PSAqIChpbnQgKikgYXJnOwotQEAgLTg0OCwxMCArODQ4LDEzIEBAIHN0ZXBfMSAoaW50IHNraXBf c3Vicm91dGluZXMsIGludCBzaW5nbGVfaW5zdCwgY2hhciAqY291bnRfc3RyaW5nKQotIAotICAg aWYgKCFzaW5nbGVfaW5zdCB8fCBza2lwX3N1YnJvdXRpbmVzKQkJLyogbGVhdmUgc2kgY29tbWFu ZCBhbG9uZSAqLwotICAgICB7Ci0rICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVy aW9yX3RocmVhZCAoKTsKLSsKLSAgICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0 aWQpKQotICAJdGhyZWFkID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7Ci0gCi0g ICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKLSsgICAgICB0cC0+aW5pdGlh dGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwotIAotICAg ICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhy ZWFkKTsKLSAgICAgfQotQEAgLTEyMDAsNiArMTIwMywxNSBAQCBzaWduYWxfY29tbWFuZCAoY2hh ciAqc2lnbnVtX2V4cCwgaW50IGZyb21fdHR5KQotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEs IG91cnNpZywgMCk7Ci0gfQotIAotKy8qIEEgY29udGludWF0aW9uIGNhbGxiYWNrIGZvciB1bnRp bF9uZXh0X2NvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rdW50aWxfbmV4dF9jb250aW51 YXRpb24gKHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gYXJnOwot KyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAodHAtPm51bSk7Ci0rfQotKwotIC8qIFByb2Nl ZWQgdW50aWwgd2UgcmVhY2ggYSBkaWZmZXJlbnQgc291cmNlIGxpbmUgd2l0aCBwYyBncmVhdGVy IHRoYW4KLSAgICBvdXIgY3VycmVudCBvbmUgb3IgZXhpdCB0aGUgZnVuY3Rpb24uICBXZSBza2lw IGNhbGxzIGluIGJvdGggY2FzZXMuCi0gCi1AQCAtMTIxNiw2ICsxMjI4LDggQEAgdW50aWxfbmV4 dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwotICAgc3Ry dWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0gICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5m ZXJpb3JfdGhyZWFkICgpOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07Ci0rICBzdHJ1Y3QgY2xl YW51cCAqb2xkX2NoYWluOwotIAotICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7Ci0gICBzZXRf c3RlcF9mcmFtZSAoKTsKLUBAIC0xMjUxLDcgKzEyNjUsMTkgQEAgdW50aWxfbmV4dF9jb21tYW5k IChpbnQgZnJvbV90dHkpCitAQCAtMzY4OCw2ICszNzA3LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVn ICh2b2lkKQorICAgY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1 Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludDsKKyAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93 YXRjaHBvaW50ID0gZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQ7CisgICBjdXJyZW50X3Rhcmdl dC50b19yZW1vdmVfd2F0Y2hwb2ludCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OworKyAg Y3VycmVudF90YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzID0gZGVidWdfdG9fZGV0YWNoX3dh dGNocG9pbnRzOworICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0g ZGVidWdfdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50OworICAgY3VycmVudF90YXJnZXQudG9fc3Rv cHBlZF9kYXRhX2FkZHJlc3MgPSBkZWJ1Z190b19zdG9wcGVkX2RhdGFfYWRkcmVzczsKKyAgIGN1 cnJlbnRfdGFyZ2V0LnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193 YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlOworZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBi L2dkYi90YXJnZXQuaAoraW5kZXggM2M4YzAxNy4uZTk1MDNkZSAxMDA2NDQKKy0tLSBhL2dkYi90 YXJnZXQuaAorKysrIGIvZ2RiL3RhcmdldC5oCitAQCAtNDMzLDYgKzQzMyw3IEBAIHN0cnVjdCB0 YXJnZXRfb3BzCisgICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0 XyogbWFjcm9zLiAgKi8KKyAgICAgaW50ICgqdG9fcmVtb3ZlX3dhdGNocG9pbnQpIChDT1JFX0FE RFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKKyAgICAgaW50ICgqdG9faW5zZXJ0 X3dhdGNocG9pbnQpIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsK KysgICAgaW50ICgqdG9fZGV0YWNoX3dhdGNocG9pbnRzKSAodm9pZCk7CiAgCi0gICB0cC0+c3Rl cF9tdWx0aSA9IDA7CQkvKiBPbmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KKyAgICAgaW50ICgq dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50KSAodm9pZCk7CisgICAgIGludCB0b19oYXZlX3N0ZXBw YWJsZV93YXRjaHBvaW50OworQEAgLTEzMTYsNiArMTMxNywxNSBAQCBleHRlcm4gY2hhciAqbm9y bWFsX3BpZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKKyAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0 Y2hwb2ludChhZGRyLCBsZW4sIHR5cGUsIGNvbmQpIFwKKyAgICAgICgqY3VycmVudF90YXJnZXQu dG9fcmVtb3ZlX3dhdGNocG9pbnQpIChhZGRyLCBsZW4sIHR5cGUsIGNvbmQpCiAgCi0rICBzZXRf bG9uZ2ptcF9icmVha3BvaW50ICh0aHJlYWQpOwotKyAgdHAtPmluaXRpYXRpbmdfZnJhbWUgPSBn ZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSsgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoZGVsZXRl X2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKKysvKiBDbGVhciBhbGwgZGVi dWcgcmVnaXN0ZXJzIHdpdGhvdXQgYWZmZWN0aW5nIGFueSByZWdpc3RlciBjYWNoZXMuICBGdW5j dGlvbgorKyAgIGFjdHMgb24gSU5GRVJJT1JfUFRJRCB3aGljaCBzaG91bGQgYmUgdGhlIGZvcmtl ZC1vZmYgcHJvY2VzcywgZWl0aGVyIHRoZQorKyAgIG5vbi10aHJlYWRlZCBjaGlsZCBvbmUgb3Ig dGhlIHRocmVhZGVkIHBhcmVudCBvbmUsIGRlcGVuZGluZyBvbiBgc2V0CisrICAgZm9sbG93LWZv cmstbW9kZScuICBCb3RoIHdhdGNocG9pbnRzIGFuZCBoYXJkd2FyZSBicmVha3BvaW50cyBnZXQg cmVtb3ZlZC4KKysgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLiAgKi8KICsK LSAgIHByb2NlZWQgKChDT1JFX0FERFIpIC0xLCBUQVJHRVRfU0lHTkFMX0RFRkFVTFQsIDEpOwor KyNkZWZpbmUJdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cygpCVwKKysgICAgICgqY3VycmVudF90 YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzKSAoKQogKwotKyAgaWYgKHRhcmdldF9jYW5fYXN5 bmNfcCAoKSAmJiBpc19ydW5uaW5nIChpbmZlcmlvcl9wdGlkKSkKLSsgICAgewotKyAgICAgIGRp c2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgYWRkX2NvbnRpbnVhdGlvbiAodHAs IHVudGlsX25leHRfY29udGludWF0aW9uLCB0cCwgTlVMTCk7Ci0rICAgIH0KLSsgIGVsc2UKLSsg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTQy OCw2ICsxNDU0LDcgQEAgZmluaXNoX2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCi0g ICBpZiAoYnMgIT0gTlVMTCAmJiB0cC0+cHJvY2VlZF90b19maW5pc2gpCi0gICAgIG9ic2VydmVy X25vdGlmeV9ub3JtYWxfc3RvcCAoYnMsIDEgLyogcHJpbnQgZnJhbWUgKi8pOwotICAgZGVsZXRl X2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQpOwotKyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2lu dCAoaW5mZXJpb3JfdGhyZWFkICgpLT5udW0pOwotIH0KKyAjZGVmaW5lIHRhcmdldF9pbnNlcnRf aHdfYnJlYWtwb2ludChnZGJhcmNoLCBicF90Z3QpIFwKKyAgICAgICgqY3VycmVudF90YXJnZXQu dG9faW5zZXJ0X2h3X2JyZWFrcG9pbnQpIChnZGJhcmNoLCBicF90Z3QpCiAgCi0gc3RhdGljIHZv aWQKLUBAIC0xNTExLDYgKzE1MzgsNyBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAq ZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgIHN0cnVjdCBicmVha3BvaW50 ICpicmVha3BvaW50OwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAgIHN0cnVjdCBm aW5pc2hfY29tbWFuZF9jb250aW51YXRpb25fYXJncyAqY2FyZ3M7Ci0rICBpbnQgdGhyZWFkID0g dHAtPm51bTsKLSAKLSAgIHNhbCA9IGZpbmRfcGNfbGluZSAoZ2V0X2ZyYW1lX3BjIChmcmFtZSks IDApOwotICAgc2FsLnBjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7Ci1AQCAtMTUyMSw2ICsxNTQ5 LDEwIEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lKQotIAotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9i cmVha3BvaW50IChicmVha3BvaW50KTsKLSAKLSsgIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRo cmVhZCk7Ci0rICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwot KyAgbWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJl YWQpOwotKwotICAgdHAtPnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9w X3JlZ2lzdGVycywgcGxlYXNlLi4uICAqLwotICAgY2FyZ3MgPSB4bWFsbG9jIChzaXplb2YgKCpj YXJncykpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9pbmZlcmlvci5oIGIvZ2RiL2luZmVyaW9yLmgK LWluZGV4IGU1NTdkNmMuLmQ0YWUxZGYgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mZXJpb3IuaAotKysr IGIvZ2RiL2luZmVyaW9yLmgKLUBAIC0yNzUsNiArMjc1LDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJy dXB0X3RhcmdldF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOwotIAotIGV4dGVy biB2b2lkIGludGVycnVwdF90YXJnZXRfMSAoaW50IGFsbF90aHJlYWRzKTsKLSAKLStleHRlcm4g dm9pZCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZyk7Ci0rCi0g ZXh0ZXJuIHZvaWQgZGV0YWNoX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLSAKLSBleHRlcm4gdm9p ZCBub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QsIGludCwgaW50KTsKLWRpZmYgLS1naXQgYS9n ZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKLWluZGV4IDlhNWMzYTguLmVkMmY1MzAgMTAwNjQ0 Ci0tLS0gYS9nZGIvaW5mcnVuLmMKLSsrKyBiL2dkYi9pbmZydW4uYwotQEAgLTQ1LDYgKzQ1LDgg QEAKLSAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKLSAjaW5jbHVkZSAic29saWIuaCIKLSAjaW5jbHVk ZSAibWFpbi5oIgotKyNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCi0rI2luY2x1ZGUgImJsb2NrLmgi Ci0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAibWkvbWktY29tbW9uLmgiCi0g I2luY2x1ZGUgImV2ZW50LXRvcC5oIgotQEAgLTIwMjQsNiArMjAyNiw4IEBAIHN0YXRpYyB2b2lk IGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCi0gCQkJCQkJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNyX3NhbCwKLSAJCQkJCQkg IHN0cnVjdCBmcmFtZV9pZCBzcl9pZCk7Ci0gc3RhdGljIHZvaWQgaW5zZXJ0X2xvbmdqbXBfcmVz dW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7Ci0rc3RhdGljIHZv aWQgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRl ICosCi0rCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qgc3ltYm9sICopOwotIAot IHN0YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0 ZSAqZWNzKTsKLSBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBleGVjdXRpb25f Y29udHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC0yOTcxLDYgKzI5NzUsMTAgQEAgaGFuZGxlX2luZmVy aW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSAKLSAgICAg ICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5w dGlkKSk7Ci0gCi0rICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZy b20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3VsZAotKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0 dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLwotKyAgICAgIHdhdGNocG9pbnRzX3Ry aWdnZXJlZCAoJmVjcy0+d3MpOwotKwotICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jw c3RhdAotIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0X2N1 cnJlbnRfcmVnY2FjaGUgKCkpLAotIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRpZCk7Ci1AQCAt MzA1NSw2ICszMDYzLDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlv bl9jb250cm9sX3N0YXRlICplY3MpCi0gCi0gICAgICAgc3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRf cGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOwotIAotKyAgICAgIC8qIENsZWFy IFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Agd2hpY2ggY291 bGQKLSsJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhwbGFpbnNfc2ln bmFsLiAgKi8KLSsgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndzKTsKLSsKLSAg ICAgICAvKiBEbyB3aGF0ZXZlciBpcyBuZWNlc3NhcnkgdG8gdGhlIHBhcmVudCBicmFuY2ggb2Yg dGhlIHZmb3JrLiAgKi8KLSAgICAgICBoYW5kbGVfdmZvcmtfY2hpbGRfZXhlY19vcl9leGl0ICgx KTsKLSAKLUBAIC0zNzkzLDIzICszODA1LDMzIEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0Ogot IAotIAllY3MtPmV2ZW50X3RocmVhZC0+c3RlcHBpbmdfb3Zlcl9icmVha3BvaW50ID0gMTsKLSAK LS0JaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQotLQkgICAgfHwg IWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBmcmFtZSwgJmptcF9idWZfcGMp KQotKwlpZiAod2hhdC5pc19sb25nam1wKQotIAkgIHsKLS0JICAgIGlmIChkZWJ1Z19pbmZydW4p Ci0tCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKLSsJICAgIGlmICgh Z2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkKLSsJCXx8ICFnZGJhcmNoX2dl dF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwKLSsJCQkJCQlmcmFtZSwgJmptcF9idWZfcGMpKQot KwkgICAgICB7Ci0rCQlpZiAoZGVidWdfaW5mcnVuKQotKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csICJcCi0gaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUg KCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOwotLQkgICAga2VlcF9nb2luZyAoZWNz KTsKLS0JICAgIHJldHVybjsKLS0JICB9Ci0rCQlrZWVwX2dvaW5nIChlY3MpOwotKwkJcmV0dXJu OwotKwkgICAgICB9Ci0gCi0tCS8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQg c3RlcC1yZXN1bWUgYnJlYWtwb2ludAotLQkgICB3aXRoIGEgbG9uZ2ptcC1yZXN1bWUgYnJlYWtw b2ludC4gICovCi0tCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3Ro cmVhZCk7Ci0rCSAgICAvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBjdXJyZW50IHN0ZXAt cmVzdW1lIGJyZWFrcG9pbnQKLSsJICAgICAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVha3Bv aW50LiAgKi8KLSsJICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50 X3RocmVhZCk7Ci0gCi0tCS8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3Mu ICAqLwotLQlpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2RiYXJjaCwgam1wX2J1 Zl9wYyk7Ci0rCSAgICAvKiBJbnNlcnQgYSBicmVha3BvaW50IGF0IHJlc3VtZSBhZGRyZXNzLiAg Ki8KLSsJICAgIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBf YnVmX3BjKTsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5j ID0gZ2V0X2ZyYW1lX2Z1bmN0aW9uIChmcmFtZSk7Ci0gCi0rCSAgICBpZiAoZnVuYykKLSsJICAg ICAgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoZWNzLCBmcmFtZSwgZnVuYyk7Ci0rCSAgfQotIAlr ZWVwX2dvaW5nIChlY3MpOwotIAlyZXR1cm47Ci0gCi1AQCAtMzgyMSw2ICszODQzLDUzIEBAIGlu ZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2pt cF90YXJnZXQpXG4iKTsKLSAJZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVz dW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7Ci0gCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50 IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0gCi0rCWlmICghd2hhdC5pc19sb25nam1wKQotKwkgIHsK LSsJICAgIC8qIFRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHRvIGNvbnNpZGVyLgotKwkgICAgICAg Ci0rCSAgICAgICAxLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4g dGhpcyBjYXNlCi0rCSAgICAgICB3ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBo YXMgZ29uZSB0b28gZmFyLgotKwkgICAgICAgCi0rCSAgICAgICAyLiBUaGUgaW5pdGlhdGluZyBm cmFtZSBleGlzdHMsIGFuZCBpcyB0aGUgc2FtZSBhcyB0aGUKLSsJICAgICAgIGN1cnJlbnQgZnJh bWUuCi0rCSAgICAgICAKLSsJICAgICAgIDIuMS4gSWYgd2UgYXJlIHN0ZXBwaW5nLCBkZWZlciB0 byB0aGUgc3RlcHBpbmcgbG9naWMuCi0rCSAgICAgICAKLSsJICAgICAgIDIuMi4gT3RoZXJ3aXNl LCB3ZSBhcmUgbm90IHN0ZXBwaW5nLCBzbyB3ZSBhcmUgZG9pbmcgYQotKwkgICAgICAgImZpbmlz aCIgYW5kIHdlIGhhdmUgcmVhY2hlZCB0aGUgY2FsbGluZyBmcmFtZS4gIFNvLAotKwkgICAgICAg c3RvcC4KLSsJICAgICAgIAotKwkgICAgICAgMy4gVGhlIGluaXRpYXRpbmcgZnJhbWUgZXhpc3Rz IGFuZCBpcyBkaWZmZXJlbnQgZnJvbQotKwkgICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBUaGlz IG1lYW5zIHRoZSBleGNlcHRpb24gaGFzIGJlZW4KLSsJICAgICAgIGNhdWdodCBiZW5lYXRoIHRo ZSBpbml0aWF0aW5nIGZyYW1lLCBzbyBrZWVwIGdvaW5nLiAgKi8KLSsJICAgIHN0cnVjdCBmcmFt ZV9pbmZvICppbml0X2ZyYW1lCi0rCSAgICAgID0gZnJhbWVfZmluZF9ieV9pZCAoZWNzLT5ldmVu dF90aHJlYWQtPmluaXRpYXRpbmdfZnJhbWUpOwotKwkgICAgaWYgKGluaXRfZnJhbWUpCi0rCSAg ICAgIHsKLSsJCXN0cnVjdCBmcmFtZV9pZCBjdXJyZW50X2lkCi0rCQkgID0gZ2V0X2ZyYW1lX2lk IChnZXRfY3VycmVudF9mcmFtZSAoKSk7Ci0rCQlpZiAoZnJhbWVfaWRfZXEgKGN1cnJlbnRfaWQs Ci0rCQkJCSBlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSkpCi0rCQkgIHsKLSsJ CSAgICBpZiAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmFuZ2Vfc3RhcnQpCi0rCQkgICAgICB7 Ci0rCQkJLyogQ2FzZSAyLjEuICAqLwotKwkJCWJyZWFrOwotKwkJICAgICAgfQotKwkJICAgIGVs c2UKLSsJCSAgICAgIHsKLSsJCQkvKiBDYXNlIDIuMjogZmFsbCB0aHJvdWdoLiAgKi8KLSsJCSAg ICAgIH0KLSsJCSAgfQotKwkJZWxzZQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAzLiAgKi8KLSsJ CSAgICBrZWVwX2dvaW5nIChlY3MpOwotKwkJICAgIHJldHVybjsKLSsJCSAgfQotKwkgICAgICB9 Ci0rCSAgfQotKwotIAllY3MtPmV2ZW50X3RocmVhZC0+c3RvcF9zdGVwID0gMTsKLSAJcHJpbnRf c3RvcF9yZWFzb24gKEVORF9TVEVQUElOR19SQU5HRSwgMCk7Ci0gCXN0b3Bfc3RlcHBpbmcgKGVj cyk7Ci1AQCAtNDg0MCw2ICs0OTA5LDk2IEBAIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQotICAgICBzZXRfbW9t ZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMgKGdkYmFyY2gsIHBjLCBicF9sb25nam1wX3Jlc3VtZSk7 Ci0gfQotIAotKy8qIEluc2VydCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFrcG9pbnQuICBUUCBp cyB0aGUgdGhyZWFkIHRocm93aW5nCi0rICAgdGhlIGV4Y2VwdGlvbi4gIFRoZSBibG9jayBCIGlz IHRoZSBibG9jayBvZiB0aGUgdW53aW5kZXIgZGVidWcgaG9vawotKyAgIGZ1bmN0aW9uLiAgRlJB TUUgaXMgdGhlIGZyYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNhbGwgdG8gdGhpcwotKyAgIGZ1 bmN0aW9uLiAgU1lNIGlzIHRoZSBzeW1ib2wgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGhvbGRp bmcgdGhlCi0rICAgdGFyZ2V0IFBDIG9mIHRoZSBleGNlcHRpb24uICAqLwotKwotK3N0YXRpYyB2 b2lkCi0raW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9p bmZvICp0cCwKLSsJCQkJICAgIHN0cnVjdCBibG9jayAqYiwKLSsJCQkJICAgIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwKLSsJCQkJICAgIHN0cnVjdCBzeW1ib2wgKnN5bSkKLSt7Ci0rICBzdHJ1 Y3QgZ2RiX2V4Y2VwdGlvbiBlOwotKwotKyAgLyogV2Ugd2FudCB0byBpZ25vcmUgZXJyb3JzIGhl cmUuICAqLwotKyAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAg ICBzdHJ1Y3Qgc3ltYm9sICp2c3ltOwotKyAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7Ci0rICAg ICAgQ09SRV9BRERSIGhhbmRsZXI7Ci0rICAgICAgc3RydWN0IGJyZWFrcG9pbnQgKmJwOwotKwot KyAgICAgIHZzeW0gPSBsb29rdXBfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pLCBi LCBWQVJfRE9NQUlOLCBOVUxMKTsKLSsgICAgICB2YWx1ZSA9IHJlYWRfdmFyX3ZhbHVlICh2c3lt LCBmcmFtZSk7Ci0rICAgICAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbHVlKTsKLSsK LSsgICAgICAvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBjdXJyZW50IHN0ZXAtcmVzdW1l IGJyZWFrcG9pbnQKLSsJIHdpdGggYW4gZXhjZXB0aW9uLXJlc3VtZSBicmVha3BvaW50LiAgKi8K LSsgICAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAodHApOwotKwotKyAgICAgIGlm IChkZWJ1Z19pbmZydW4pCi0rCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkg ICAgImluZnJ1bjogZXhjZXB0aW9uIHJlc3VtZSBhdCAlbHhcbiIsCi0rCQkJICAgICh1bnNpZ25l ZCBsb25nKSBoYW5kbGVyKTsKLSsKLSsgICAgICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2lu dF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJCSAgIGhhbmRsZXIsIGJwX2V4 Y2VwdGlvbl9yZXN1bWUpOwotKyAgICAgIGluZmVyaW9yX3RocmVhZCAoKS0+c3RlcF9yZXN1bWVf YnJlYWtwb2ludCA9IGJwOwotKyAgICB9Ci0rfQotKwotKy8qIFRoaXMgaXMgY2FsbGVkIHdoZW4g YW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2VwdGVkLiAgQ2hlY2sgdG8KLSsgICBzZWUgd2hl dGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRpb24gaXMgb2YgaW50ZXJlc3QsIGFuZCBpZiBz bywKLSsgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50IHRoZXJlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK2NoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgKHN0cnVjdCBleGVjdXRpb25f Y29udHJvbF9zdGF0ZSAqZWNzLAotKwkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgc3RydWN0 IHN5bWJvbCAqZnVuYykKLSt7Ci0rICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOwotKwotKyAgVFJZ X0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYmxvY2sg KmI7Ci0rICAgICAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgICAgICBzdHJ1Y3Qgc3lt Ym9sICpzeW07Ci0rICAgICAgaW50IGFyZ25vID0gMDsKLSsKLSsgICAgICAvKiBUaGUgZXhjZXB0 aW9uIGJyZWFrcG9pbnQgaXMgYSB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2ludCBvbgotKwkgdGhl IHVud2luZGVyJ3MgZGVidWcgaG9vaywgZGVjbGFyZWQgYXM6Ci0rCSAKLSsJIHZvaWQgX1Vud2lu ZF9EZWJ1Z0hvb2sgKHZvaWQgKmNmYSwgdm9pZCAqaGFuZGxlcik7Ci0rCSAKLSsJIFRoZSBDRkEg YXJndW1lbnQgaW5kaWNhdGVzIHRoZSBmcmFtZSB0byB3aGljaCBjb250cm9sIGlzCi0rCSBhYm91 dCB0byBiZSB0cmFuc2ZlcnJlZC4gIEhBTkRMRVIgaXMgdGhlIGRlc3RpbmF0aW9uIFBDLgotKwkg Ci0rCSBXZSBpZ25vcmUgdGhlIENGQSBhbmQgc2V0IGEgdGVtcG9yYXJ5IGJyZWFrcG9pbnQgYXQg SEFORExFUi4KLSsJIFRoaXMgaXMgbm90IGV4dHJlbWVseSBlZmZpY2llbnQgYnV0IGl0IGF2b2lk cyBpc3N1ZXMgaW4gZ2RiCi0rCSB3aXRoIGNvbXB1dGluZyB0aGUgRFdBUkYgQ0ZBLCBhbmQgaXQg YWxzbyB3b3JrcyBldmVuIGluIHdlaXJkCi0rCSBjYXNlcyBzdWNoIGFzIHRocm93aW5nIGFuIGV4 Y2VwdGlvbiBmcm9tIGluc2lkZSBhIHNpZ25hbAotKwkgaGFuZGxlci4gICovCi0rCi0rICAgICAg YiA9IFNZTUJPTF9CTE9DS19WQUxVRSAoZnVuYyk7Ci0rICAgICAgQUxMX0JMT0NLX1NZTUJPTFMg KGIsIGl0ZXIsIHN5bSkKLSsJewotKwkgIGlmICghU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQot KwkgICAgY29udGludWU7Ci0rCi0rCSAgaWYgKGFyZ25vID09IDApCi0rCSAgICArK2FyZ25vOwot KwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtw b2ludCAoZWNzLT5ldmVudF90aHJlYWQsCi0rCQkJCQkJICBiLCBmcmFtZSwgc3ltKTsKLSsJICAg ICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZAotIHN0 b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotIHsKLWRp ZmYgLS1naXQgYS9nZGIvanYtbGFuZy5jIGIvZ2RiL2p2LWxhbmcuYwotaW5kZXggMjRiNjY3My4u MjJlZDk2MCAxMDA2NDQKLS0tLSBhL2dkYi9qdi1sYW5nLmMKLSsrKyBiL2dkYi9qdi1sYW5nLmMK LUBAIC0xMTIxLDYgKzExMjEsNyBAQCBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IgZXhwX2Rl c2NyaXB0b3JfamF2YSA9Ci0gewotICAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkLAotICAgb3BlcmF0 b3JfbGVuZ3RoX3N0YW5kYXJkLAotKyAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQsCi0gICBvcF9u YW1lX3N0YW5kYXJkLAotICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKLSAgIGV2YWx1YXRl X3N1YmV4cF9qYXZhCi1kaWZmIC0tZ2l0IGEvZ2RiL2xhbmd1YWdlLmggYi9nZGIvbGFuZ3VhZ2Uu aAotaW5kZXggNGY3OGEyOC4uZTAwOTZmNSAxMDA2NDQKLS0tLSBhL2dkYi9sYW5ndWFnZS5oCi0r KysgYi9nZGIvbGFuZ3VhZ2UuaAotQEAgLTI1OCw3ICsyNTgsNiBAQCBzdHJ1Y3QgbGFuZ3VhZ2Vf ZGVmbgotICAgICAgICB2YXJpYWJsZXMuICAqLwotIAotICAgICBzdHJ1Y3Qgc3ltYm9sICooKmxh X2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwpIChjb25zdCBjaGFyICosCi0tCQkJCQkJIGNvbnN0IGNo YXIgKiwKLSAJCQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICosCi0gCQkJCQkJIGNvbnN0IGRvbWFp bl9lbnVtKTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvbGluZXNwZWMuYyBiL2dkYi9saW5lc3BlYy5j Ci1pbmRleCA3NWE3NGUyLi5lYzRkNTY5IDEwMDY0NAotLS0tIGEvZ2RiL2xpbmVzcGVjLmMKLSsr KyBiL2dkYi9saW5lc3BlYy5jCi1AQCAtNDAsNiArNDAsNyBAQAotICNpbmNsdWRlICJpbnRlcnBz LmgiCi0gI2luY2x1ZGUgIm1pL21pLWNtZHMuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0rI2lu Y2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAKLSAvKiBXZSBzaGFyZSB0aGlzIG9uZSB3aXRoIHN5bXRh Yi5jLCBidXQgaXQgaXMgbm90IGV4cG9ydGVkIHdpZGVseS4gKi8KLSAKLUBAIC01MCw4ICs1MSw2 IEBAIGV4dGVybiBjaGFyICpvcGVyYXRvcl9jaGFycyAoY2hhciAqLCBjaGFyICoqKTsKLSBzdGF0 aWMgdm9pZCBpbml0aWFsaXplX2RlZmF1bHRzIChzdHJ1Y3Qgc3ltdGFiICoqZGVmYXVsdF9zeW10 YWIsCi0gCQkJCSBpbnQgKmRlZmF1bHRfbGluZSk7Ci0gCi0tc3RhdGljIHZvaWQgc2V0X2ZsYWdz IChjaGFyICphcmcsIGludCAqaXNfcXVvdGVkLCBjaGFyICoqcGFyZW5fcG9pbnRlcik7Ci0tCi0g c3RhdGljIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBkZWNvZGVfaW5kaXJlY3QgKGNoYXIgKiph cmdwdHIpOwotIAotIHN0YXRpYyBjaGFyICpsb2NhdGVfZmlyc3RfaGFsZiAoY2hhciAqKmFyZ3B0 ciwgaW50ICppc19xdW90ZV9lbmNsb3NlZCk7Ci1AQCAtMzEzLDEwICszMTIsNyBAQCBhZGRfbWF0 Y2hpbmdfbWV0aG9kcyAoaW50IG1ldGhvZF9jb3VudGVyLCBzdHJ1Y3QgdHlwZSAqdCwKLSAJCQkJ ICAgTlVMTCwgVkFSX0RPTUFJTiwKLSAJCQkJICAgbGFuZ3VhZ2UsCi0gCQkJCSAgIChpbnQgKikg TlVMTCk7Ci0tICAgICAgLyogU2VlIFBSMTA5NjYuICBSZW1vdmUgY2hlY2sgb24gc3ltYm9sIGRv bWFpbiBhbmQgY2xhc3Mgd2hlbgotLQkgd2Ugc3RvcCB1c2luZyAoYmFkKSBsaW5rYWdlIG5hbWVz IG9uIGNvbnN0cnVjdG9ycy4gICovCi0tICAgICAgaWYgKHN5bV9hcnJbaTFdICYmIChTWU1CT0xf RE9NQUlOIChzeW1fYXJyW2kxXSkgPT0gVkFSX0RPTUFJTgotLQkJCSAgJiYgU1lNQk9MX0NMQVNT IChzeW1fYXJyW2kxXSkgPT0gTE9DX0JMT0NLKSkKLSsgICAgICBpZiAoc3ltX2FycltpMV0pCi0g CWkxKys7Ci0gICAgICAgZWxzZQotIAl7Ci1AQCAtNjMxLDYgKzYyNywzNyBAQCBTZWUgc2V0L3No b3cgbXVsdGlwbGUtc3ltYm9sLiIpKTsKLSAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7 Ci0gICByZXR1cm4gcmV0dXJuX3ZhbHVlczsKLSB9Ci0rCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24g Zm9yIGRlY29kZV9saW5lXzEgYW5kIGZyaWVuZHMgd2hpY2ggc2tpcHMgUAotKyAgIHBhc3QgYW55 IG1ldGhvZCBvdmVybG9hZCBpbmZvcm1hdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIFAsIGUuZy4s Ci0rICAgIihjb25zdCBzdHJ1Y3QgZm9vICopIi4KLSsKLSsgICBUaGlzIGZ1bmN0aW9uIGFzc3Vt ZXMgdGhhdCBQIGhhcyBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIHRvIGNvbnRhaW4KLSsgICBvdmVy bG9hZCBpbmZvcm1hdGlvbiwgYW5kIGl0IHdpbGwgYXNzZXJ0IGlmICpQICE9ICcoJy4gICovCi0r c3RhdGljIGNoYXIgKgotK2ZpbmRfbWV0aG9kX292ZXJsb2FkX2VuZCAoY2hhciAqcCkKLSt7Ci0r ICBpbnQgZGVwdGggPSAwOwotKwotKyAgZ2RiX2Fzc2VydCAoKnAgPT0gJygnKTsKLSsKLSsgIHdo aWxlICgqcCkKLSsgICAgewotKyAgICAgIGlmICgqcCA9PSAnKCcpCi0rCSsrZGVwdGg7Ci0rICAg ICAgZWxzZSBpZiAoKnAgPT0gJyknKQotKwl7Ci0rCSAgaWYgKC0tZGVwdGggPT0gMCkKLSsJICAg IHsKLSsJICAgICAgKytwOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICAgICsr cDsKLSsgICAgfQotKwotKyAgcmV0dXJuIHA7Ci0rfQotIAwKLSAvKiBUaGUgcGFyc2VyIG9mIGxp bmVzcGVjIGl0c2VsZi4gKi8KLSAKLUBAIC02OTEsMTggKzcxOCwxNyBAQCBkZWNvZGVfbGluZV8x IChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0 X3N5bXRhYiwKLSAgIHN0cnVjdCBzeW10YWIgKmZpbGVfc3ltdGFiID0gTlVMTDsKLSAKLSAgIGNo YXIgKmNvcHk7Ci0tICAvKiBUaGlzIGlzIE5VTEwgaWYgdGhlcmUgYXJlIG5vIHBhcmVucyBpbiAq QVJHUFRSLCBvciBhIHBvaW50ZXIgdG8KLS0gICAgIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzIGlm IHRoZXJlIGFyZSBwYXJlbnMuICAqLwotLSAgY2hhciAqcGFyZW5fcG9pbnRlcjsKLSAgIC8qIFRo aXMgc2F5cyB3aGV0aGVyIG9yIG5vdCBzb21ldGhpbmcgaW4gKkFSR1BUUiBpcyBxdW90ZWQgd2l0 aAotICAgICAgY29tcGxldGVyX3F1b3RlcyAoaS5lLiB3aXRoIHNpbmdsZSBxdW90ZXMpLiAgKi8K LSAgIGludCBpc19xdW90ZWQ7Ci0tICAvKiBJcyBwYXJ0IG9mICpBUkdQVFIgaXMgZW5jbG9zZWQg aW4gZG91YmxlIHF1b3Rlcz8gICovCi0rICAvKiBJcyAqQVJHUFRSIGlzIGVuY2xvc2VkIGluIGRv dWJsZSBxdW90ZXM/ICAqLwotICAgaW50IGlzX3F1b3RlX2VuY2xvc2VkOwotICAgaW50IGlzX29i amNfbWV0aG9kID0gMDsKLSAgIGNoYXIgKnNhdmVkX2FyZyA9ICphcmdwdHI7Ci0gICAvKiBJZiBJ U19RVU9URUQsIHRoZSBlbmQgb2YgdGhlIHF1b3RlZCBiaXQuICAqLwotICAgY2hhciAqZW5kX3F1 b3RlID0gTlVMTDsKLSsgIC8qIFRoZSAiZmlyc3QgaGFsZiIgb2YgdGhlIGxpbmVzcGVjLiAgKi8K LSsgIGNoYXIgKmZpcnN0X2hhbGY7Ci0gCi0gICBpZiAobm90X2ZvdW5kX3B0cikKLSAgICAgKm5v dF9mb3VuZF9wdHIgPSAwOwotQEAgLTcxNiwxMiArNzQyLDkgQEAgZGVjb2RlX2xpbmVfMSAoY2hh ciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgc3RydWN0IHN5bXRhYiAqZGVmYXVsdF9zeW10 YWIsCi0gICBpZiAoKiphcmdwdHIgPT0gJyonKQotICAgICByZXR1cm4gZGVjb2RlX2luZGlyZWN0 IChhcmdwdHIpOwotIAotLSAgLyogU2V0IHZhcmlvdXMgZmxhZ3MuICAncGFyZW5fcG9pbnRlcicg aXMgaW1wb3J0YW50IGZvciBvdmVybG9hZAotLSAgICAgY2hlY2tpbmcsIHdoZXJlIHdlIGFsbG93 IHRoaW5ncyBsaWtlOgotLSAgICAgICAgKGdkYikgYnJlYWsgYzo6ZihpbnQpCi0tICAqLwotLQot LSAgc2V0X2ZsYWdzICgqYXJncHRyLCAmaXNfcXVvdGVkLCAmcGFyZW5fcG9pbnRlcik7Ci0rICBp c19xdW90ZWQgPSAoKmFyZ3B0cgotKwkgICAgICAgJiYgc3RyY2hyIChnZXRfZ2RiX2NvbXBsZXRl cl9xdW90ZV9jaGFyYWN0ZXJzICgpLAotKwkJCSAgKiphcmdwdHIpICE9IE5VTEwpOwotICAgaWYg KGlzX3F1b3RlZCkKLSAgICAgZW5kX3F1b3RlID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotIAot QEAgLTczNCwxNSArNzU3LDEyIEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBm dW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAotICAgICAgd2lsbCBw b2ludCB0byAiIi4gSWYgdGhpcyBpcyBhIEMrKyBuYW1lLCBsaWtlICJBOjpCOjpmb28iLCBwIHdp bGwKLSAgICAgIHBvaW50IHRvICI6OkI6OmZvbyIuIEFyZ3B0ciBpcyBub3QgY2hhbmdlZCBieSB0 aGlzIGNhbGwuICAqLwotIAotLSAgcCA9IGxvY2F0ZV9maXJzdF9oYWxmIChhcmdwdHIsICZpc19x dW90ZV9lbmNsb3NlZCk7Ci0rICBmaXJzdF9oYWxmID0gcCA9IGxvY2F0ZV9maXJzdF9oYWxmIChh cmdwdHIsICZpc19xdW90ZV9lbmNsb3NlZCk7Ci0gCi0gICAvKiBDaGVjayBpZiB0aGlzIGlzIGFu IE9iamVjdGl2ZS1DIG1ldGhvZCAoYW55dGhpbmcgdGhhdCBzdGFydHMgd2l0aAotICAgICAgYSAn Kycgb3IgJy0nIGFuZCBhICdbJykuICAqLwotICAgaWYgKGlzX29iamNfbWV0aG9kX2Zvcm1hdCAo cCkpCi0tICAgIHsKLS0gICAgICBpc19vYmpjX21ldGhvZCA9IDE7Ci0tICAgICAgcGFyZW5fcG9p bnRlciAgPSBOVUxMOyAvKiBKdXN0IGEgY2F0ZWdvcnkgbmFtZS4gIElnbm9yZSBpdC4gICovCi0t ICAgIH0KLSsgICAgaXNfb2JqY19tZXRob2QgPSAxOwotIAotICAgLyogQ2hlY2sgaWYgdGhlIHN5 bWJvbCBjb3VsZCBiZSBhbiBPYmplY3RpdmUtQyBzZWxlY3Rvci4gICovCi0gCi1AQCAtNzU0LDkg Kzc3NCw2IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUs IHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAotICAgICAgIHJldHVybiB2YWx1ZXM7Ci0g ICB9Ci0gCi0tICBpZiAoaXNfcXVvdGVkKQotLSAgICAqYXJncHRyID0gKmFyZ3B0ciArIDE7Ci0t Ci0gICAvKiBEb2VzIGl0IGxvb2sgbGlrZSB0aGVyZSBhY3R1YWxseSB3ZXJlIHR3byBwYXJ0cz8g ICovCi0gCi0gICBpZiAocFswXSA9PSAnOicgfHwgcFswXSA9PSAnLicpCi1AQCAtNzcwLDY3ICs3 ODcsNDggQEAgZGVjb2RlX2xpbmVfMSAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwg c3RydWN0IHN5bXRhYiAqZGVmYXVsdF9zeW10YWIsCi0gCQotICAgICAgIGlmIChwWzBdID09ICcu JyB8fCBwWzFdID09ICc6JykKLSAJewotLQkgIGlmIChwYXJlbl9wb2ludGVyID09IE5VTEwpCi0t CSAgICByZXR1cm4gZGVjb2RlX2NvbXBvdW5kIChhcmdwdHIsIGZ1bmZpcnN0bGluZSwgY2Fub25p Y2FsLAotKwkgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyB2YWx1ZXM7Ci0rCi0rCSAgaWYgKGlz X3F1b3RlX2VuY2xvc2VkKQotKwkgICAgKytzYXZlZF9hcmc7Ci0rCSAgdmFsdWVzID0gZGVjb2Rl X2NvbXBvdW5kIChhcmdwdHIsIGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsLAotIAkJCQkgICAgc2F2 ZWRfYXJnLCBwLCBub3RfZm91bmRfcHRyKTsKLS0JICAvKiBPdGhlcndpc2UsIGZhbGwgdGhyb3Vn aCB0byBkZWNvZGVfdmFyaWFibGUgYmVsb3cuICAqLwotKwkgIGlmIChpc19xdW90ZWQgJiYgKiph cmdwdHIgPT0gJ1wnJykKLSsJICAgICphcmdwdHIgPSAqYXJncHRyICsgMTsKLSsJICByZXR1cm4g dmFsdWVzOwotIAl9Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAgLyogTm8sIHRoZSBmaXJzdCBwYXJ0 IGlzIGEgZmlsZW5hbWU7IHNldCBmaWxlX3N5bXRhYiB0byBiZSB0aGF0IGZpbGUncwotLQkgICAg IHN5bXRhYi4gIEFsc28sIG1vdmUgYXJncHRyIHBhc3QgdGhlIGZpbGVuYW1lLiAgKi8KLSAKLS0J ICBmaWxlX3N5bXRhYiA9IHN5bXRhYl9mcm9tX2ZpbGVuYW1lIChhcmdwdHIsIHAsIGlzX3F1b3Rl X2VuY2xvc2VkLAotLQkJCQkJICAgICAgbm90X2ZvdW5kX3B0cik7Ci0rICAgICAgLyogTm8sIHRo ZSBmaXJzdCBwYXJ0IGlzIGEgZmlsZW5hbWU7IHNldCBmaWxlX3N5bXRhYiB0byBiZSB0aGF0IGZp bGUncwotKwkgc3ltdGFiLiAgQWxzbywgbW92ZSBhcmdwdHIgcGFzdCB0aGUgZmlsZW5hbWUuICAq LwotIAotLQkgIC8qIENoZWNrIGZvciBzaW5nbGUgcXVvdGVzIG9uIHRoZSBub24tZmlsZW5hbWUg cGFydC4gICovCi0tCSAgaWYgKCFpc19xdW90ZWQpCi0tCSAgICB7Ci0tCSAgICAgIGlzX3F1b3Rl ZCA9ICgqKmFyZ3B0cgotLQkJCSAgICYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVf Y2hhcmFjdGVycyAoKSwKLS0JCQkJICAgICAgKiphcmdwdHIpICE9IE5VTEwpOwotLQkgICAgICBp ZiAoaXNfcXVvdGVkKQotLQkJZW5kX3F1b3RlID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotLQkg ICAgfQotLQl9Ci0tICAgIH0KLS0jaWYgMAotLSAgLyogTm8gb25lIHJlYWxseSBzZWVtcyB0byBr bm93IHdoeSB0aGlzIHdhcyBhZGRlZC4gSXQgY2VydGFpbmx5Ci0tICAgICBicmVha3MgdGhlIGNv bW1hbmQgbGluZSwgdGhvdWdoLCB3aGVuZXZlciB0aGUgcGFzc2VkCi0tICAgICBuYW1lIGlzIG9m IHRoZSBmb3JtIENsYXNzTmFtZTo6TWV0aG9kLiBUaGlzIGJpdCBvZiBjb2RlCi0tICAgICBzaW5n bGVzIG91dCB0aGUgY2xhc3MgbmFtZSwgYW5kIGlmIGZ1bmZpcnN0bGluZSBpcyBzZXQgKGZvcgot LSAgICAgZXhhbXBsZSwgeW91IGFyZSBzZXR0aW5nIGEgYnJlYWtwb2ludCBhdCB0aGlzIGZ1bmN0 aW9uKSwKLS0gICAgIHlvdSBnZXQgYW4gZXJyb3IuIFRoaXMgZGlkIG5vdCBvY2N1ciB3aXRoIGVh cmxpZXIKLS0gICAgIHZlcmlvbnMsIHNvIEkgYW0gaWZkZWYnaW5nIHRoaXMgb3V0LiAzLzI5Lzk5 ICovCi0tICBlbHNlCi0tICAgIHsKLS0gICAgICAvKiBDaGVjayBpZiB3aGF0IHdlIGhhdmUgdGls bCBub3cgaXMgYSBzeW1ib2wgbmFtZSAqLwotKyAgICAgIGZpbGVfc3ltdGFiID0gc3ltdGFiX2Zy b21fZmlsZW5hbWUgKGFyZ3B0ciwgcCwgaXNfcXVvdGVfZW5jbG9zZWQsCi0rCQkJCQkgIG5vdF9m b3VuZF9wdHIpOwotIAotLSAgICAgIC8qIFdlIG1heSBiZSBsb29raW5nIGF0IGEgdGVtcGxhdGUg aW5zdGFudGlhdGlvbiBzdWNoCi0tICAgICAgICAgYXMgImZvbzxpbnQ+Ii4gIENoZWNrIGhlcmUg d2hldGhlciB3ZSBrbm93IGFib3V0IGl0LAotLSAgICAgICAgIGluc3RlYWQgb2YgZmFsbGluZyB0 aHJvdWdoIHRvIHRoZSBjb2RlIGJlbG93IHdoaWNoCi0tICAgICAgICAgaGFuZGxlcyBvcmRpbmFy eSBmdW5jdGlvbiBuYW1lcywgYmVjYXVzZSB0aGF0IGNvZGUKLS0gICAgICAgICBkb2Vzbid0IGxp a2Ugc2VlaW5nICc8JyBhbmQgJz4nIGluIGEgbmFtZSAtLSB0aGUKLS0gICAgICAgICBza2lwX3F1 b3RlZCBjYWxsIGRvZXNuJ3QgZ28gcGFzdCB0aGVtLiAgU28gc2VlIGlmIHdlCi0tICAgICAgICAg Y2FuIGZpZ3VyZSBpdCBvdXQgcmlnaHQgbm93LiAqLwotLQotLSAgICAgIGNvcHkgPSAoY2hhciAq KSBhbGxvY2EgKHAgLSAqYXJncHRyICsgMSk7Ci0tICAgICAgbWVtY3B5IChjb3B5LCAqYXJncHRy LCBwIC0gKmFyZ3B0cik7Ci0tICAgICAgY29weVtwIC0gKmFyZ3B0cl0gPSAnXDAwMCc7Ci0tICAg ICAgc3ltID0gbG9va3VwX3N5bWJvbCAoY29weSwgMCwgVkFSX0RPTUFJTiwgMCk7Ci0tICAgICAg aWYgKHN5bSkKLSsgICAgICAvKiBDaGVjayBmb3Igc2luZ2xlIHF1b3RlcyBvbiB0aGUgbm9uLWZp bGVuYW1lIHBhcnQuICAqLwotKyAgICAgIGlmICghaXNfcXVvdGVkKQotIAl7Ci0tCSAgKmFyZ3B0 ciA9ICgqcCA9PSAnXCcnKSA/IHAgKyAxIDogcDsKLS0JICByZXR1cm4gc3ltYm9sX2ZvdW5kIChm dW5maXJzdGxpbmUsIGNhbm9uaWNhbCwgY29weSwgc3ltLCBOVUxMKTsKLSsJICBpc19xdW90ZWQg PSAoKiphcmdwdHIKLSsJCSAgICAgICAmJiBzdHJjaHIgKGdldF9nZGJfY29tcGxldGVyX3F1b3Rl X2NoYXJhY3RlcnMgKCksCi0rCQkJCSAgKiphcmdwdHIpICE9IE5VTEwpOwotKwkgIGlmIChpc19x dW90ZWQpCi0rCSAgICBlbmRfcXVvdGUgPSBza2lwX3F1b3RlZCAoKmFyZ3B0cik7Ci0gCX0KLS0g ICAgICAvKiBPdGhlcndpc2UgZmFsbCBvdXQgZnJvbSBoZXJlIGFuZCBnbyB0byBmaWxlL2xpbmUg c3BlYwotLSAgICAgICAgIHByb2Nlc3NpbmcsIGV0Yy4gKi8KLSAgICAgfQotLSNlbmRpZgotIAot ICAgLyogZmlsZV9zeW10YWIgaXMgc3BlY2lmaWVkIGZpbGUncyBzeW10YWIsIG9yIDAgaWYgbm8g ZmlsZSBzcGVjaWZpZWQuCi0gICAgICBhcmcgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBmaWxlIG5h bWUuICAqLwotIAotKyAgLyogSWYgdGhlIGZpbGVuYW1lIHdhcyBxdW90ZWQsIHdlIG11c3QgcmUt Y2hlY2sgdGhlIHF1b3RhdGlvbi4gICovCi0rCi0rICBpZiAoZW5kX3F1b3RlID09IGZpcnN0X2hh bGYgJiYgKmVuZF9xdW90ZSE9ICdcMCcpCi0rICAgIHsKLSsgICAgICBpc19xdW90ZWQgPSAoKiph cmdwdHIKLSsJCSAgICYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVy cyAoKSwKLSsJCQkgICAgICAqKmFyZ3B0cikgIT0gTlVMTCk7Ci0rICAgICAgaWYgKGlzX3F1b3Rl ZCkKLSsJZW5kX3F1b3RlID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotKyAgICB9Ci0rCi0gICAv KiBDaGVjayB3aGV0aGVyIGFyZyBpcyBhbGwgZGlnaXRzIChhbmQgc2lnbikuICAqLwotIAotICAg cSA9ICphcmdwdHI7Ci1AQCAtODYxLDEwICs4NTksNiBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoq YXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwK LSAgICAgICAvKiBhbGxvdyB3b3JkIHNlcGFyYXRvcnMgaW4gbWV0aG9kIG5hbWVzIGZvciBPYmot QyAqLwotICAgICAgIHAgPSBza2lwX3F1b3RlZF9jaGFycyAoKmFyZ3B0ciwgTlVMTCwgIiIpOwot ICAgICB9Ci0tICBlbHNlIGlmIChwYXJlbl9wb2ludGVyICE9IE5VTEwpCi0tICAgIHsKLS0gICAg ICBwID0gcGFyZW5fcG9pbnRlciArIDE7Ci0tICAgIH0KLSAgIGVsc2UKLSAgICAgewotICAgICAg IHAgPSBza2lwX3F1b3RlZCAoKmFyZ3B0cik7Ci1AQCAtODc0LDYgKzg2OCwxNCBAQCBkZWNvZGVf bGluZV8xIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpk ZWZhdWx0X3N5bXRhYiwKLSAgIGlmICgqcCA9PSAnPCcpCi0gICAgIHAgPSBmaW5kX3RlbXBsYXRl X25hbWVfZW5kIChwKTsKLSAKLSsgIC8qIEtlZXAgbWV0aG9kIG92ZXJsb2FkIGluZm9ybWF0aW9u LiAgKi8KLSsgIGlmICgqcCA9PSAnKCcpCi0rICAgIHAgPSBmaW5kX21ldGhvZF9vdmVybG9hZF9l bmQgKHApOwotKwotKyAgLyogTWFrZSBzdXJlIHdlIGtlZXAgaW1wb3J0YW50IGtld29yZHMgbGlr ZSAiY29uc3QiICovCi0rICBpZiAoc3RybmNtcCAocCwgIiBjb25zdCIsIDYpID09IDApCi0rICAg IHAgKz0gNjsKLSsKLSAgIGNvcHkgPSAoY2hhciAqKSBhbGxvY2EgKHAgLSAqYXJncHRyICsgMSk7 Ci0gICBtZW1jcHkgKGNvcHksICphcmdwdHIsIHAgLSAqYXJncHRyKTsKLSAgIGNvcHlbcCAtICph cmdwdHJdID0gJ1wwJzsKLUBAIC05MjEsMTAgKzkyMyw5IEBAIGRlY29kZV9saW5lXzEgKGNoYXIg KiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFi LAotICAgIGZ1bmN0aW9uIGlzIHBhc3NlZCBBUkdQVFIgYXMgYW4gYXJndW1lbnQsIGl0IG1vZGlm aWVzIHdoYXQgQVJHUFRSCi0gICAgcG9pbnRzIHRvOyB0eXBpY2FsbHksIGl0IGFkdmFuY2VzICpB UkdQVFIgcGFzdCB3aGF0ZXZlciBzdWJzdHJpbmcKLSAgICBpdCBoYXMganVzdCBsb29rZWQgYXQu ICAoSWYgaXQgZG9lc24ndCBtb2RpZnkgKkFSR1BUUiwgdGhlbiB0aGUKLS0gICBmdW5jdGlvbiBn ZXRzIHBhc3NlZCAqQVJHUFRSIGluc3RlYWQsIHdoaWNoIGlzIHRoZW4gY2FsbGVkIEFSRzogc2Vl Ci0tICAgc2V0X2ZsYWdzLCBmb3IgZXhhbXBsZS4pICBBbHNvLCBmdW5jdGlvbnMgdGhhdCByZXR1 cm4gYSBzdHJ1Y3QKLS0gICBzeW10YWJzX2FuZF9saW5lcyBtYXkgbW9kaWZ5IENBTk9OSUNBTCwg YXMgaW4gdGhlIGRlc2NyaXB0aW9uIG9mCi0tICAgZGVjb2RlX2xpbmVfMS4KLSsgICBmdW5jdGlv biBnZXRzIHBhc3NlZCAqQVJHUFRSIGluc3RlYWQsIHdoaWNoIGlzIHRoZW4gY2FsbGVkIEFSRy4p Ci0rICAgQWxzbywgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEgc3RydWN0IHN5bXRhYnNfYW5kX2xp bmVzIG1heSBtb2RpZnkKLSsgICBDQU5PTklDQUwsIGFzIGluIHRoZSBkZXNjcmlwdGlvbiBvZiBk ZWNvZGVfbGluZV8xLgotIAotICAgIElmIGEgZnVuY3Rpb24gcmV0dXJucyBhIHN0cnVjdCBzeW10 YWJzX2FuZF9saW5lcywgdGhlbiB0aGF0IHN0cnVjdAotICAgIHdpbGwgaW1tZWRpYXRlbHkgbWFr ZSBpdHMgd2F5IHVwIHRoZSBjYWxsIGNoYWluIHRvIGJlIHJldHVybmVkIGJ5Ci1AQCAtOTUxLDQ0 ICs5NTIsNiBAQCBpbml0aWFsaXplX2RlZmF1bHRzIChzdHJ1Y3Qgc3ltdGFiICoqZGVmYXVsdF9z eW10YWIsIGludCAqZGVmYXVsdF9saW5lKQotICAgICB9Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0t c2V0X2ZsYWdzIChjaGFyICphcmcsIGludCAqaXNfcXVvdGVkLCBjaGFyICoqcGFyZW5fcG9pbnRl cikKLS17Ci0tICBjaGFyICppaTsKLS0gIGludCBoYXNfaWYgPSAwOwotLQotLSAgLyogJ2hhc19p ZicgaXMgZm9yIHRoZSBzeW50YXg6Ci0tICAgICAgICAoZ2RiKSBicmVhayBmb28gaWYgKGE9PWIp Ci0tICAqLwotLSAgaWYgKChpaSA9IHN0cnN0ciAoYXJnLCAiIGlmICIpKSAhPSBOVUxMIHx8Ci0t ICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJcdGlmICIpKSAhPSBOVUxMIHx8Ci0tICAgICAgKGlp ID0gc3Ryc3RyIChhcmcsICIgaWZcdCIpKSAhPSBOVUxMIHx8Ci0tICAgICAgKGlpID0gc3Ryc3Ry IChhcmcsICJcdGlmXHQiKSkgIT0gTlVMTCB8fAotLSAgICAgIChpaSA9IHN0cnN0ciAoYXJnLCAi IGlmKCIpKSAhPSBOVUxMIHx8Ci0tICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJcdGlmKCAiKSkg IT0gTlVMTCkKLS0gICAgaGFzX2lmID0gMTsKLS0gIC8qIFRlbXBvcmFyaWx5IHphcCBvdXQgImlm IChjb25kaXRpb24pIiB0byBub3QgY29uZnVzZSB0aGUKLS0gICAgIHBhcmVudGhlc2lzLWNoZWNr aW5nIGNvZGUgYmVsb3cuICBUaGlzIGlzIHVuZG9uZSBiZWxvdy4gRG8gbm90Ci0tICAgICBjaGFu Z2UgaWkhISAgKi8KLS0gIGlmIChoYXNfaWYpCi0tICAgIHsKLS0gICAgICAqaWkgPSAnXDAnOwot LSAgICB9Ci0tCi0tICAqaXNfcXVvdGVkID0gKCphcmcKLS0JCSYmIHN0cmNociAoZ2V0X2dkYl9j b21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAoKSwKLS0JCQkgICAqYXJnKSAhPSBOVUxMKTsKLS0K LS0gICpwYXJlbl9wb2ludGVyID0gc3RyY2hyIChhcmcsICcoJyk7Ci0tICBpZiAoKnBhcmVuX3Bv aW50ZXIgIT0gTlVMTCkKLS0gICAgKnBhcmVuX3BvaW50ZXIgPSBzdHJyY2hyICgqcGFyZW5fcG9p bnRlciwgJyknKTsKLS0KLS0gIC8qIE5vdyB0aGF0IHdlJ3JlIHNhZmVseSBwYXN0IHRoZSBwYXJl bl9wb2ludGVyIGNoZWNrLCBwdXQgYmFjayAiIGlmCi0tICAgICAoY29uZGl0aW9uKSIgc28gb3V0 ZXIgbGF5ZXJzIGNhbiBzZWUgaXQuICAqLwotLSAgaWYgKGhhc19pZikKLS0gICAgKmlpID0gJyAn OwotLX0KLS0KLSAMCi0gCi0gLyogRGVjb2RlIGFyZyBvZiB0aGUgZm9ybSAqUEMuICAqLwotQEAg LTEwNTksNyArMTAyMiwxNCBAQCBsb2NhdGVfZmlyc3RfaGFsZiAoY2hhciAqKmFyZ3B0ciwgaW50 ICppc19xdW90ZV9lbmNsb3NlZCkKLSAgICAgICBwKys7Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAg KmlzX3F1b3RlX2VuY2xvc2VkID0gMDsKLSsgICAgewotKyAgICAgICppc19xdW90ZV9lbmNsb3Nl ZCA9IDA7Ci0rICAgICAgaWYgKHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFj dGVycyAoKSwgKnApKQotKwl7Ci0rCSAgKysoKmFyZ3B0cik7Ci0rCSAgKytwOwotKwl9Ci0rICAg IH0KLSAgIGZvciAoOyAqcDsgcCsrKQotICAgICB7Ci0gICAgICAgaWYgKHBbMF0gPT0gJzwnKQot QEAgLTEwODgsOCArMTA1OCw5IEBAIGxvY2F0ZV9maXJzdF9oYWxmIChjaGFyICoqYXJncHRyLCBp bnQgKmlzX3F1b3RlX2VuY2xvc2VkKQotICAgICAgIGlmIChwWzBdID09ICcuJyAmJiBzdHJjaHIg KHAsICc6JykgPT0gTlVMTCkKLSAJewotIAkgIC8qIEphdmEgcXVhbGlmaWVkIG1ldGhvZC4gIEZp bmQgdGhlICpsYXN0KiAnLicsIHNpbmNlIHRoZQotLQkgICAgIG90aGVycyBhcmUgcGFja2FnZSBx dWFsaWZpZXJzLiAgKi8KLS0JICBmb3IgKHAxID0gcDsgKnAxOyBwMSsrKQotKwkgICAgIG90aGVy cyBhcmUgcGFja2FnZSBxdWFsaWZpZXJzLiAgU3RvcCBhdCBhbnkgb3BlbiBwYXJlbnRoZXNpcwot KwkgICAgIHdoaWNoIG1pZ2h0IHByb3ZpZGUgb3ZlcmxvYWQgaW5mb3JtYXRpb24uICAqLwotKwkg IGZvciAocDEgPSBwOyAqcDEgJiYgKnAxICE9ICcoJzsgcDErKykKLSAJICAgIHsKLSAJICAgICAg aWYgKCpwMSA9PSAnLicpCi0gCQlwID0gcDE7Ci1AQCAtMTI0MSw2ICsxMjEyLDcgQEAgZGVjb2Rl X2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9u aWNhbCwKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bV9jbGFzczsKLSAgIHN0cnVjdCBzeW1ib2wgKipz eW1fYXJyOwotICAgc3RydWN0IHR5cGUgKnQ7Ci0rICBjaGFyICpzYXZlZF9qYXZhX2FyZ3B0ciA9 IE5VTEw7Ci0gCi0gICAvKiBGaXJzdCBjaGVjayBmb3IgImdsb2JhbCIgbmFtZXNwYWNlIHNwZWNp ZmljYXRpb24sIG9mIHRoZSBmb3JtCi0gICAgICAiOjpmb28iLiAgSWYgZm91bmQsIHNraXAgb3Zl ciB0aGUgY29sb25zIGFuZCBqdW1wIHRvIG5vcm1hbAotQEAgLTEyODksNyArMTI2MSw4IEBAIGRl Y29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipj YW5vbmljYWwsCi0gICAgICAgLyogUEFTUzI6IHAyLT4iOjpmdW4iLCBwLT4iOmZ1biIgKi8KLSAK LSAgICAgICAvKiBNb3ZlIHBvaW50ZXIgYWhlYWQgdG8gbmV4dCBkb3VibGUtY29sb24uICAqLwot LSAgICAgIHdoaWxlICgqcCAmJiAocFswXSAhPSAnICcpICYmIChwWzBdICE9ICdcdCcpICYmIChw WzBdICE9ICdcJycpKQotKyAgICAgIHdoaWxlICgqcCAmJiAocFswXSAhPSAnICcpICYmIChwWzBd ICE9ICdcdCcpICYmIChwWzBdICE9ICdcJycpCi0rCSAgICAgJiYgKCpwICE9ICcoJykpCi0gCXsK LSAJICBpZiAoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMp Ci0gCSAgICBwICs9IGNwX3ZhbGlkYXRlX29wZXJhdG9yIChwKTsKLUBAIC0xMzY3LDggKzEzNDAs MTAgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBj aGFyICoqKmNhbm9uaWNhbCwKLSAgICAgICBlbHNlCi0gCXsKLSAJICAvKiBBdCB0aGlzIHBvaW50 IGFyZ3B0ci0+ImZ1biIuICAqLwotKwkgIGNoYXIgKmE7Ci0gCSAgcCA9ICphcmdwdHI7Ci0tCSAg d2hpbGUgKCpwICYmICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcsJyAmJiAqcCAh PSAnOicpCi0rCSAgd2hpbGUgKCpwICYmICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9 ICcsJyAmJiAqcCAhPSAnOicKLSsJCSAmJiAqcCAhPSAnKCcpCi0gCSAgICBwKys7Ci0gCSAgLyog QXQgdGhpcyBwb2ludCBwLT4iIi4gIFN0cmluZyBlbmRlZC4gICovCi0gCSAgLyogTm9wZSwgQysr IG9wZXJhdG9ycyBjb3VsZCBoYXZlIHNwYWNlcyBpbiB0aGVtCi1AQCAtMTM4MCw2ICsxMzU1LDQy IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hh ciAqKipjYW5vbmljYWwsCi0gCSAgICAgIC8qIFRoZSBhYm92ZSBsb29wIGhhcyBhbHJlYWR5IHN3 YWxsb3dlZCAib3BlcmF0b3IiLiAgKi8KLSAJICAgICAgcCArPSBjcF92YWxpZGF0ZV9vcGVyYXRv ciAocCAtIDgpIC0gODsKLSAJICAgIH0KLSsKLSsJICAvKiBLZWVwIGFueSB0ZW1wbGF0ZSBwYXJh bWV0ZXJzICovCi0rCSAgaWYgKCpwID09ICc8JykKLSsJICAgIHAgPSBmaW5kX3RlbXBsYXRlX25h bWVfZW5kIChwKTsKLSsKLSsJICAvKiBLZWVwIG1ldGhvZCBvdmVybG9hZCBpbmZvcm1hdGlvbi4g ICovCi0rCSAgYSA9IHN0cmNociAocCwgJygnKTsKLSsJICBpZiAoYSAhPSBOVUxMKQotKwkgICAg cCA9IGZpbmRfbWV0aG9kX292ZXJsb2FkX2VuZCAoYSk7Ci0rCi0rCSAgLyogTWFrZSBzdXJlIHdl IGtlZXAgaW1wb3J0YW50IGtld29yZHMgbGlrZSAiY29uc3QiICovCi0rCSAgaWYgKHN0cm5jbXAg KHAsICIgY29uc3QiLCA2KSA9PSAwKQotKwkgICAgcCArPSA2OwotKwotKwkgIC8qIEphdmEgbWF5 IGFwcGVuZCB0eXBlbmFtZXMsICBzbyBhc3N1bWUgdGhhdCBpZiB0aGVyZSBpcwotKwkgICAgIGFu eXRoaW5nIGVsc2UgbGVmdCBpbiAqYXJncHRyLCBpdCBtdXN0IGJlIGEgdHlwZW5hbWUuICAqLwot KwkgIGlmICgqcCAmJiBjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9q YXZhKQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsJICAgICAgcDIgPSBw OwotKwkgICAgICB3aGlsZSAoKnAyKQotKwkJKytwMjsKLSsJICAgICAgY29weSA9IChjaGFyICop IGFsbG9jYSAocDIgLSBwICsgMSk7Ci0rCSAgICAgIG1lbWNweSAoY29weSwgcCwgcDIgLSBwKTsK LSsJICAgICAgY29weVtwMiAtIHBdID0gJ1wwJzsKLSsJICAgICAgdHlwZSA9IGxvb2t1cF90eXBl bmFtZSAoY3VycmVudF9sYW5ndWFnZSwgZ2V0X2N1cnJlbnRfYXJjaCAoKSwKLSsJCQkJICAgICAg Y29weSwgTlVMTCwgMSk7Ci0rCSAgICAgIGlmICh0eXBlICE9IE5VTEwpCi0rCQl7Ci0rCQkgIC8q IFNhdmUgdGhlIGxvY2F0aW9uIG9mIHRoaXMganVzdCBpbiBjYXNlIHRoaXMKLSsJCSAgICAgbWV0 aG9kL3R5cGUgY29tYmluYXRpb24gaXNuJ3QgYWN0dWFsbHkgZGVmaW5lZC4KLSsJCSAgICAgSXQg d2lsbCBiZSBjaGVja2VkIGxhdGVyLiAgKi8KLSsJCSAgc2F2ZWRfamF2YV9hcmdwdHIgPSBwOwot KwkJICBwID0gcDI7Ci0rCQl9Ci0rCSAgICB9Ci0gCX0KLSAKLSAgICAgICAvKiBBbGxvY2F0ZSBv dXIgb3duIGNvcHkgb2YgdGhlIHN1YnN0cmluZyBiZXR3ZWVuIGFyZ3B0ciBhbmQKLUBAIC0xNDA4 LDkgKzE0MTksMjYgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmly c3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwKLSAJIGhlcmUsIHdlIHJldHVybi4gSWYgbm90LCBh bmQgd2UgYXJlIGF0IHRoZSBhbmQgb2YgdGhlIHN0cmluZywKLSAJIHdlJ2xsIGxvb2t1cCB0aGUg d2hvbGUgc3RyaW5nIGluIHRoZSBzeW1ib2wgdGFibGVzLiAgKi8KLSAKLS0gICAgICByZXR1cm4g ZmluZF9tZXRob2QgKGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsLCBzYXZlZF9hcmcsCi0tCQkJICBj b3B5LCB0LCBzeW1fY2xhc3MsIG5vdF9mb3VuZF9wdHIpOwotLQotKyAgICAgIHZhbHVlcyA9IGZp bmRfbWV0aG9kIChmdW5maXJzdGxpbmUsIGNhbm9uaWNhbCwgc2F2ZWRfYXJnLAotKwkJCSAgICBj b3B5LCB0LCBzeW1fY2xhc3MsIG5vdF9mb3VuZF9wdHIpOwotKyAgICAgIGlmIChzYXZlZF9qYXZh X2FyZ3B0ciAhPSBOVUxMICYmIHZhbHVlcy5uZWx0cyA9PSAxKQotKwl7Ci0rCSAgLyogVGhlIHVz ZXIgc3BlY2lmaWVkIGEgc3BlY2lmaWMgcmV0dXJuIHR5cGUgZm9yIGEgamF2YSBtZXRob2QuCi0r CSAgICAgRG91YmxlLWNoZWNrIHRoYXQgaXQgcmVhbGx5IGlzIHRoZSBvbmUgdGhlIHVzZXIgc3Bl Y2lmaWVkLgotKwkgICAgIFtUaGlzIGlzIGEgbmVjZXNzYXJ5IGV2aWwgYmVjYXVzZSBzdHJjbXBf aXdfb3JkZXJlZCBzdG9wcwotKwkgICAgIGNvbXBhcmlzb25zIHRvbyBwcmVtYXR1cmVseS5dICAq LwotKwkgIHN5bSA9IGZpbmRfcGNfc2VjdF9mdW5jdGlvbiAodmFsdWVzLnNhbHNbMF0ucGMsCi0r CQkJCSAgICAgICB2YWx1ZXMuc2Fsc1swXS5zZWN0aW9uKTsKLSsJICAvKiBXZSBqdXN0IGZvdW5k IGEgU0FMLCB3ZSBoYWQgYmV0dGVyIGJlIGFibGUgdG8gZ28gYmFja3dhcmRzISAgKi8KLSsJICBn ZGJfYXNzZXJ0IChzeW0gIT0gTlVMTCk7Ci0rCSAgaWYgKHN0cmNtcF9pdyAoU1lNQk9MX0xJTktB R0VfTkFNRSAoc3ltKSwgc2F2ZWRfYXJnKSAhPSAwKQotKwkgICAgewotKwkgICAgICB4ZnJlZSAo dmFsdWVzLnNhbHMpOwotKwkgICAgICBlcnJvciAoXygidGhlIGNsYXNzIGAlcycgZG9lcyBub3Qg aGF2ZSBhbnkgbWV0aG9kIGluc3RhbmNlIG5hbWVkICVzXG4iKSwKLSsJCSAgICAgU1lNQk9MX1BS SU5UX05BTUUgKHN5bV9jbGFzcyksIGNvcHkpOwotKwkgICAgfQotKwl9Ci0rICAgICAgcmV0dXJu IHZhbHVlczsKLSAgICAgfSAvKiBFbmQgaWYgc3ltYm9sIGZvdW5kICovCi0gCi0gCi1AQCAtMTUz NCw4ICsxNTYyLDM5IEBAIGZpbmRfbWV0aG9kIChpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNh bm9uaWNhbCwgY2hhciAqc2F2ZWRfYXJnLAotICAgICB9Ci0gICBpZiAoaTEgPiAwKQotICAgICB7 Ci0tICAgICAgLyogVGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBmaWVsZCB3aXRoIHRoYXQgbmFtZQot LQkgKG92ZXJsb2FkZWQpLiAgQXNrIHRoZSB1c2VyIHdoaWNoIG9uZSB0byB1c2UuICAqLwotKyAg ICAgIC8qIElmIHdlIHdlcmUgZ2l2ZW4gYSBzcGVjaWZpYyBvdmVybG9hZCBpbnN0YW5jZSwgdXNl IHRoYXQKLSsJIChvciBlcnJvciBpZiBubyBtYXRjaGVzIHdlcmUgZm91bmQpLiAgT3RoZXJ3aXNl IGFzayB0aGUgdXNlcgotKwkgd2hpY2ggb25lIHRvIHVzZS4gICovCi0rICAgICAgaWYgKHN0cmNo ciAoc2F2ZWRfYXJnLCAnKCcpICE9IE5VTEwpCi0rCXsKLSsJICBpbnQgaTsKLSsJICBmb3IgKGkg PSAwOyBpIDwgaTE7ICsraSkKLSsJICAgIHsKLSsJICAgICAgY2hhciAqbmFtZSA9IHNhdmVkX2Fy ZzsKLSsJICAgICAgY2hhciAqY2Fub24gPSBjcF9jYW5vbmljYWxpemVfc3RyaW5nIChuYW1lKTsK LSsJICAgICAgaWYgKGNhbm9uICE9IE5VTEwpCi0rCQluYW1lID0gY2Fub247Ci0rCi0rCSAgICAg IGlmIChzdHJjbXBfaXcgKG5hbWUsIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bV9hcnJbaV0pKSA9 PSAwKQotKwkJewotKwkJICB2YWx1ZXMuc2FscyA9IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICop Ci0rCQkgICAgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lKSk7Ci0rCQkg IHZhbHVlcy5uZWx0cyA9IDE7Ci0rCQkgIHZhbHVlcy5zYWxzWzBdID0gZmluZF9mdW5jdGlvbl9z dGFydF9zYWwgKHN5bV9hcnJbaV0sCi0rCQkJCQkJCSAgICBmdW5maXJzdGxpbmUpOwotKwkJICBp ZiAoY2Fub24pCi0rCQkgICAgeGZyZWUgKGNhbm9uKTsKLSsJCSAgcmV0dXJuIHZhbHVlczsKLSsJ CX0KLSsKLSsJICAgICAgaWYgKGNhbm9uKQotKwkJeGZyZWUgKGNhbm9uKTsKLSsJICAgIH0KLSsK LSsJICBlcnJvciAoXygidGhlIGNsYXNzIGAlcycgZG9lcyBub3QgaGF2ZSBhbnkgbWV0aG9kIGlu c3RhbmNlIG5hbWVkICVzXG4iKSwKLSsJCSBTWU1CT0xfUFJJTlRfTkFNRSAoc3ltX2NsYXNzKSwg Y29weSk7Ci0rCX0KLSsKLSAgICAgICByZXR1cm4gZGVjb2RlX2xpbmVfMiAoc3ltX2FyciwgaTEs IGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsKTsKLSAgICAgfQotICAgZWxzZQotQEAgLTE1NzcsNyAr MTYzNiw4IEBAIHN5bXRhYl9mcm9tX2ZpbGVuYW1lIChjaGFyICoqYXJncHRyLCBjaGFyICpwLCBp bnQgaXNfcXVvdGVfZW5jbG9zZWQsCi0gICBjb3B5ID0gKGNoYXIgKikgYWxsb2NhIChwIC0gKmFy Z3B0ciArIDEpOwotICAgbWVtY3B5IChjb3B5LCAqYXJncHRyLCBwIC0gKmFyZ3B0cik7Ci0gICAv KiBJdCBtYXkgaGF2ZSB0aGUgZW5kaW5nIHF1b3RlIHJpZ2h0IGFmdGVyIHRoZSBmaWxlIG5hbWUu ICAqLwotLSAgaWYgKGlzX3F1b3RlX2VuY2xvc2VkICYmIGNvcHlbcCAtICphcmdwdHIgLSAxXSA9 PSAnIicpCi0rICBpZiAoKGlzX3F1b3RlX2VuY2xvc2VkICYmIGNvcHlbcCAtICphcmdwdHIgLSAx XSA9PSAnIicpCi0rICAgICAgfHwgY29weVtwIC0gKmFyZ3B0ciAtIDFdID09ICdcJycpCi0gICAg IGNvcHlbcCAtICphcmdwdHIgLSAxXSA9IDA7Ci0gICBlbHNlCi0gICAgIGNvcHlbcCAtICphcmdw dHJdID0gMDsKLUBAIC0xODQwLDcgKzE5MDAsNyBAQCBzeW1ib2xfZm91bmQgKGludCBmdW5maXJz dGxpbmUsIGNoYXIgKioqY2Fub25pY2FsLCBjaGFyICpjb3B5LAotIAl7Ci0gCSAgc3RydWN0IGJs b2NrdmVjdG9yICpidiA9IEJMT0NLVkVDVE9SIChTWU1CT0xfU1lNVEFCIChzeW0pKTsKLSAJICBz dHJ1Y3QgYmxvY2sgKmIgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIFNUQVRJQ19CTE9DSyk7Ci0t CSAgaWYgKGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIE5VTEwsIFZBUl9ET01BSU4pICE9 IE5VTEwpCi0rCSAgaWYgKGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIFZBUl9ET01BSU4p ICE9IE5VTEwpCi0gCSAgICBidWlsZF9jYW5vbmljYWxfbGluZV9zcGVjICh2YWx1ZXMuc2Fscywg Y29weSwgY2Fub25pY2FsKTsKLSAJfQotICAgICAgIHJldHVybiB2YWx1ZXM7Ci1kaWZmIC0tZ2l0 IGEvZ2RiL2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCBlNTVkOTU4Li5lNDFl ZDc0IDEwMDY0NAotLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCi0rKysgYi9nZGIvbGludXgtbmF0LmMK LUBAIC0yNjE4LDYgKzI2MTgsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKLSAgIHJldHVybiBscC0+ c3RvcHBlZF9kYXRhX2FkZHJlc3NfcDsKLSB9Ci0gCi0rLyogSW4gYHNldCBmb2xsb3ctZm9yay1t b2RlIGNoaWxkJyB3aXRoIG11bHRpdGhyZWFkZWQgcGFyZW50IHdlIG5lZWQgdG8gZGV0YWNoCi0r ICAgd2F0Y2hwb2ludHMgZnJvbSBhbGwgdGhlIExXUHMuICBJbiBzdWNoIGNhc2UgSU5GRVJJT1Jf UFRJRCB3aWxsIGJlIHRoZQotKyAgIG5vbi10aHJlYWRlZCBuZXcgY2hpbGQgd2hpbGUgTFdQX0xJ U1Qgd2lsbCBzdGlsbCBjb250YWluIGFsbCB0aGUgdGhyZWFkcyBvZgotKyAgIHRoZSBwYXJlbnQg YmVpbmcgZGV0YWNoZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLStsaW51eF9uYXRfZGV0YWNoX3dh dGNocG9pbnRzICh2b2lkKQotK3sKLSsgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0rICBpbnQgZm91 bmQgPSAwLCByZXR2YWwgPSAwOwotKyAgcHRpZF90IGZpbHRlciA9IHBpZF90b19wdGlkIChwdGlk X2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKLSsgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4g PSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7Ci0rCi0rICBmb3IgKGxwID0gbHdwX2xpc3Q7IGxwOyBs cCA9IGxwLT5uZXh0KQotKyAgICBpZiAocHRpZF9tYXRjaCAobHAtPnB0aWQsIGZpbHRlcikpCi0r ICAgICAgewotKwlpbmZlcmlvcl9wdGlkID0gbHAtPnB0aWQ7Ci0rCXJldHZhbCB8PSBsaW51eF9v cHMtPnRvX2RldGFjaF93YXRjaHBvaW50cyAoKTsKLSsJZm91bmQgPSAxOwotKyAgICAgIH0KLSsK LSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwotKyAgaWYgKCFmb3VuZCkKLSsgICAgewot KyAgICAgIGdkYl9hc3NlcnQgKCFpc19sd3AgKGluZmVyaW9yX3B0aWQpKTsKLSsKLSsgICAgICBy ZXR2YWwgfD0gbGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0rICAgIH0KLSsK LSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotIC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBlZC4g ICovCi0gCi0gc3RhdGljIGludAotQEAgLTU1ODQsNiArNTYxNyw4IEBAIGxpbnV4X25hdF9hZGRf dGFyZ2V0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKLSAgIHQtPnRvX3RocmVhZF9hZGRyZXNzX3Nw YWNlID0gbGludXhfbmF0X3RocmVhZF9hZGRyZXNzX3NwYWNlOwotICAgdC0+dG9fc3RvcHBlZF9i eV93YXRjaHBvaW50ID0gbGludXhfbmF0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKLSAgIHQtPnRv X3N0b3BwZWRfZGF0YV9hZGRyZXNzID0gbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzOwot KyAgaWYgKGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzKQotKyAgICB0LT50b19kZXRh Y2hfd2F0Y2hwb2ludHMgPSBsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzOwotIAotICAgdC0+ dG9fY2FuX2FzeW5jX3AgPSBsaW51eF9uYXRfY2FuX2FzeW5jX3A7Ci0gICB0LT50b19pc19hc3lu Y19wID0gbGludXhfbmF0X2lzX2FzeW5jX3A7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAu YyBiL2dkYi9saW51eC10ZGVwLmMKLWluZGV4IDA3ZmQ2N2MuLjAyYjIzNDIgMTAwNjQ0Ci0tLS0g YS9nZGIvbGludXgtdGRlcC5jCi0rKysgYi9nZGIvbGludXgtdGRlcC5jCi1AQCAtMjMsNiArMjMs OCBAQAotICNpbmNsdWRlICJhdXh2LmgiCi0gI2luY2x1ZGUgInRhcmdldC5oIgotICNpbmNsdWRl ICJlbGYvY29tbW9uLmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0rI2luY2x1ZGUgImluZmNhbGwu aCIKLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIGZvciBhcmNoaXRlY3R1cmVzIHRo YXQgZG9uJ3QKLSAgICBleHRlbmQvb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIHNpZ2luZm8gc3RydWN0 dXJlLiAgKi8KLUBAIC0xNTIsMyArMTU0LDQzIEBAIGxpbnV4X2hhc19zaGFyZWRfYWRkcmVzc19z cGFjZSAodm9pZCkKLSAKLSAgIHJldHVybiB0YXJnZXRfaXNfdWNsaW51eDsKLSB9Ci0rCi0rLyog Q2FsbCBnbnUtaWZ1bmMgdG8gcmVzb2x2ZSBicmVha3BvaW50IGF0IGl0cyByZXR1cm5lZCBmdW5j dGlvbi4gICovCi0rCi0rQ09SRV9BRERSCi0rbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0 ciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBmdW5jX3B0ciwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDT1JFX0FERFIgcGMpCi0rewotKyAgc3RydWN0IHR5 cGUgKmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5j X2Z1bmM7Ci0rICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7Ci0rICBzdHJ1Y3QgdmFs dWUgKmZ1bmN0aW9uLCAqYWRkcmVzczsKLSsKLSsgIGlmICghdGFyZ2V0X2hhc19leGVjdXRpb24p Ci0rICAgIHJldHVybiBwYzsKLSsKLSsgIG1zeW1ib2wgPSBsb29rdXBfbWluaW1hbF9zeW1ib2xf YnlfcGMgKGZ1bmNfcHRyKTsKLSsgIGlmIChtc3ltYm9sID09IE5VTEwpCi0rICAgIHJldHVybiBw YzsKLSsgIGlmIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpICE9IG1zdF90ZXh0X2dudV9pZnVuYykK LSsgICAgcmV0dXJuIHBjOwotKwotKyAgLyogTm90IGF0IHRoZSBnbnUtaWZ1bmMgZW50cnkgcG9p bnQ/ICAqLwotKyAgaWYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKSAhPSBmdW5jX3B0 cikKLSsgICAgcmV0dXJuIHBjOwotKwotKyAgZnVuY3Rpb24gPSBhbGxvY2F0ZV92YWx1ZSAoZnVu Y19mdW5jX3R5cGUpOwotKyAgc2V0X3ZhbHVlX2FkZHJlc3MgKGZ1bmN0aW9uLCBwYyk7Ci0rCi0r ICAvKiBnbnUtaWZ1bmNzIGhhdmUgbm8gYXJndW1lbnRzLiAgRlVOQ1RJT04gaXMgdGhlIGNvZGUg aW5zdHJ1Y3Rpb24gYWRkcmVzcwotKyAgICAgd2hpbGUgQUREUkVTUyBpcyBhIGZ1bmN0aW9uIGRl c2NyaXB0b3IuICAqLwotKyAgYWRkcmVzcyA9IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rp b24sIDAsIE5VTEwpOwotKwotKyAgcmV0dXJuIHZhbHVlX2FzX2FkZHJlc3MgKGFkZHJlc3MpOwot K30KLSsKLStDT1JFX0FERFIKLStsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyLAotKwkJCQkgIHN0cnVjdCB0YXJn ZXRfb3BzICp0YXJnKQotK3sKLSsgIHJldHVybiBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRf cHRyIChnZGJhcmNoLCBhZGRyLCBhZGRyKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LXRk ZXAuaCBiL2dkYi9saW51eC10ZGVwLmgKLWluZGV4IGE4YjUyMmIuLjI4MjE5MGUgMTAwNjQ0Ci0t LS0gYS9nZGIvbGludXgtdGRlcC5oCi0rKysgYi9nZGIvbGludXgtdGRlcC5oCi1AQCAtMjIsNCAr MjIsMTEgQEAKLSAKLSBzdHJ1Y3QgdHlwZSAqbGludXhfZ2V0X3NpZ2luZm9fdHlwZSAoc3RydWN0 IGdkYmFyY2ggKik7Ci0gCi0rQ09SRV9BRERSIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9w dHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCQkJICAgQ09SRV9BRERSIGZ1bmNfcHRy LCBDT1JFX0FERFIgcGMpOwotKwotK0NPUkVfQUREUiBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkgICAgQ09SRV9BRERSIGFk ZHIsCi0rCQkJCQkgICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpOwotKwotICNlbmRpZiAvKiBs aW51eC10ZGVwLmggKi8KLWRpZmYgLS1naXQgYS9nZGIvbTItbGFuZy5jIGIvZ2RiL20yLWxhbmcu YwotaW5kZXggODBlOWJmOS4uMzA1Nzc3NCAxMDA2NDQKLS0tLSBhL2dkYi9tMi1sYW5nLmMKLSsr KyBiL2dkYi9tMi1sYW5nLmMKLUBAIC0zNTYsNiArMzU2LDcgQEAgY29uc3Qgc3RydWN0IGV4cF9k ZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX21vZHVsYTIgPQotIHsKLSAgIHByaW50X3N1YmV4cF9z dGFuZGFyZCwKLSAgIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKLSsgIG9wZXJhdG9yX2NoZWNr X3N0YW5kYXJkLAotICAgb3BfbmFtZV9zdGFuZGFyZCwKLSAgIGR1bXBfc3ViZXhwX2JvZHlfc3Rh bmRhcmQsCi0gICBldmFsdWF0ZV9zdWJleHBfbW9kdWxhMgotZGlmZiAtLWdpdCBhL2dkYi9tMzJy LWxpbnV4LXRkZXAuYyBiL2dkYi9tMzJyLWxpbnV4LXRkZXAuYwotaW5kZXggNjgwNDYwOS4uMmNi MWJmOSAxMDA2NDQKLS0tLSBhL2dkYi9tMzJyLWxpbnV4LXRkZXAuYwotKysrIGIvZ2RiL20zMnIt bGludXgtdGRlcC5jCi1AQCAtMzAsNiArMzAsNyBAQAotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgi Ci0gCi0gI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKLSsjaW5jbHVkZSAibGludXgtdGRlcC5oIgot ICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCi0gI2luY2x1ZGUgInN5bXRhYi5oIgotIAotQEAgLTQy Miw2ICs0MjMsOSBAQCBtMzJyX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGlu Zm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgLyogRW5hYmxlIFRMUyBzdXBwb3J0LiAg Ki8KLSAgIHNldF9nZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRyZXNzIChnZGJhcmNo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2cjRfZmV0 Y2hfb2JqZmlsZV9saW5rX21hcCk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVu Y19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNz aW5nLXByb3RvdHlwZXMuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9tYWNob3JlYWQuYyBiL2dkYi9t YWNob3JlYWQuYwotaW5kZXggYTgxMGJiMi4uYjQxNjk3MCAxMDA2NDQKLS0tLSBhL2dkYi9tYWNo b3JlYWQuYwotKysrIGIvZ2RiL21hY2hvcmVhZC5jCi1AQCAtODQyLDYgKzg0Miw3IEBAIHN0YXRp YyBzdHJ1Y3Qgc3ltX2ZucyBtYWNob19zeW1fZm5zID0gewotICAgbWFjaG9fbmV3X2luaXQsICAg ICAgICAgICAgICAgLyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUg c3ltdGFiICovCi0gICBtYWNob19zeW1maWxlX2luaXQsICAgICAgICAgICAvKiBzeW1faW5pdDog cmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICBtYWNob19zeW1m aWxlX3JlYWQsICAgICAgICAgICAvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8g c3ltdGFiICovCi0rICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLwotICAgbWFjaG9f c3ltZmlsZV9maW5pc2gsICAgICAgICAgLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxl LCBjbGVhbnVwICovCi0gICBtYWNob19zeW1maWxlX29mZnNldHMsICAgICAgICAvKiBzeW1fb2Zm c2V0czogIHhsYXRlIGV4dGVybmFsIHRvIGludGVybmFsIGZvcm0gKi8KLSAgIGRlZmF1bHRfc3lt ZmlsZV9zZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBm cm9tCi1kaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKLWluZGV4IGUyNjEzNDgu LjkyYzYzYTcgMTAwNjQ0Ci0tLS0gYS9nZGIvbWFpbi5jCi0rKysgYi9nZGIvbWFpbi5jCi1AQCAt NDAsNiArNDAsNyBAQAotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0gI2luY2x1ZGUgIm1haW4uaCIK LSAKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJzb3VyY2UuaCIKLSAK LSAvKiBJZiBub256ZXJvLCBkaXNwbGF5IHRpbWUgdXNhZ2UgYm90aCBhdCBzdGFydHVwIGFuZCBm b3IgZWFjaCBjb21tYW5kLiAgKi8KLUBAIC0yNTksNiArMjYwLDggQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKLSAgIGNoYXIgKmNkYXJnID0gTlVMTDsKLSAgIGNoYXIgKnR0eWFyZyA9IE5V TEw7Ci0gCi0rICBpbnQgcHl0aG9uX3NjcmlwdCA9IDA7Ci0rCi0gICAvKiBUaGVzZSBhcmUgc3Rh dGljIHNvIHRoYXQgd2UgY2FuIHRha2UgdGhlaXIgYWRkcmVzcyBpbiBhbiBpbml0aWFsaXplci4g ICovCi0gICBzdGF0aWMgaW50IHByaW50X2hlbHA7Ci0gICBzdGF0aWMgaW50IHByaW50X3ZlcnNp b247Ci1AQCAtNDM0LDEwICs0MzcsMTQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAg ICAgICB7ImFyZ3MiLCBub19hcmd1bWVudCwgJnNldF9hcmdzLCAxfSwKLSAgICAgICB7ImwiLCBy ZXF1aXJlZF9hcmd1bWVudCwgMCwgJ2wnfSwKLSAgICAgICB7InJldHVybi1jaGlsZC1yZXN1bHQi LCBub19hcmd1bWVudCwgJnJldHVybl9jaGlsZF9yZXN1bHQsIDF9LAotKyNpZiBIQVZFX1BZVEhP TgotKyAgICAgIHsicHl0aG9uIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCi0rICAgICAgeyJQIiwg bm9fYXJndW1lbnQsIDAsICdQJ30sCi0rI2VuZGlmCi0gICAgICAgezAsIG5vX2FyZ3VtZW50LCAw LCAwfQotICAgICB9OwotIAotLSAgICB3aGlsZSAoMSkKLSsgICAgd2hpbGUgKCFweXRob25fc2Ny aXB0KQotICAgICAgIHsKLSAJaW50IG9wdGlvbl9pbmRleDsKLSAKLUBAIC00NTUsNiArNDYyLDkg QEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAJICBjYXNlIDA6Ci0gCSAgICAvKiBMb25n IG9wdGlvbiB0aGF0IGp1c3Qgc2V0cyBhIGZsYWcuICAqLwotIAkgICAgYnJlYWs7Ci0rCSAgY2Fz ZSAnUCc6Ci0rCSAgICBweXRob25fc2NyaXB0ID0gMTsKLSsJICAgIGJyZWFrOwotIAkgIGNhc2Ug T1BUX1NFOgotIAkgICAgc3ltYXJnID0gb3B0YXJnOwotIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsK LUBAIC02NDEsNyArNjUxLDMxIEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKLSAK LSAgIC8qIE5vdyB0aGF0IGdkYl9pbml0IGhhcyBjcmVhdGVkIHRoZSBpbml0aWFsIGluZmVyaW9y LCB3ZSdyZSBpbiBwb3NpdGlvbgotICAgICAgdG8gc2V0IGFyZ3MgZm9yIHRoYXQgaW5mZXJpb3Iu ICAqLwotLSAgaWYgKHNldF9hcmdzKQotKyAgaWYgKHB5dGhvbl9zY3JpcHQpCi0rICAgIHsKLSsg ICAgICAvKiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYSBweXRob24gc2NyaXB0IHRvIGV2YWx1YXRl LCBhbmQKLSsJIHN1YnNlcXVlbnQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCBm b3IKLSsJIHByb2Nlc3NpbmcgdGhlcmUuICAqLwotKyAgICAgIGlmIChvcHRpbmQgPj0gYXJnYykK LSsJewotKwkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKLSsJCQkgICAgICBfKCIl czogUHl0aG9uIHNjcmlwdCBmaWxlIG5hbWUgcmVxdWlyZWRcbiIpLAotKwkJCSAgICAgIGFyZ3Zb MF0pOwotKwkgIGV4aXQgKDEpOwotKwl9Ci0rCi0rICAgICAgLyogRklYTUU6IHNob3VsZCBoYW5k bGUgaW5mZXJpb3IgSS9PIGludGVsbGlnZW50bHkgaGVyZS4KLSsJIEUuZy4sIHNob3VsZCBiZSBw b3NzaWJsZSB0byBydW4gZ2RiIGluIHBpcGVsaW5lIGFuZCBoYXZlCi0rCSBQeXRob24gKGFuZCBn ZGIpIG91dHB1dCBnbyB0byBzdGRlcnIgb3IgZmlsZTsgYW5kIGlmIGEKLSsJIHByb21wdCBpcyBu ZWVkZWQsIG9wZW4gdGhlIHR0eS4gICovCi0rICAgICAgcXVpZXQgPSAxOwotKyAgICAgIC8qIEZJ WE1FOiBzaG91bGQgcmVhZCAuZ2RiaW5pdCBpZiwgYW5kIG9ubHkgaWYsIGEgcHJvbXB0IGlzCi0r CSByZXF1ZXN0ZWQgYnkgdGhlIHNjcmlwdC4gIFRob3VnaC4uLiBtYXliZSB0aGlzIGlzIG5vdAot KwkgaWRlYWw/ICAqLwotKyAgICAgIC8qIEZJWE1FOiBsaWtld2lzZSwgcmVhZGluZyBpbiBoaXN0 b3J5LiAgKi8KLSsgICAgICBpbmhpYml0X2dkYmluaXQgPSAxOwotKyAgICB9Ci0rICBlbHNlIGlm IChzZXRfYXJncykKLSAgICAgewotICAgICAgIC8qIFRoZSByZW1haW5pbmcgb3B0aW9ucyBhcmUg dGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGZvciB0aGUKLSAJIGluZmVyaW9yLiAgVGhlIGZpcnN0 IG9uZSBpcyB0aGUgc3ltL2V4ZWMgZmlsZSwgYW5kIHRoZSByZXN0Ci1AQCAtODY3LDcgKzkwMSw4 IEBAIENhbid0IGF0dGFjaCB0byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY29yZSBmaWxlIGF0IHRo ZSBzYW1lIHRpbWUuIikpOwotICAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRo ZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuIHJlYWQu ICovCi0tICBpbml0X2hpc3RvcnkgKCk7Ci0rICBpZiAoIXB5dGhvbl9zY3JpcHQpCi0rICAgIGlu aXRfaGlzdG9yeSAoKTsKLSAKLSAgIGlmIChiYXRjaCkKLSAgICAgewotQEAgLTg5NiwxMyArOTMx LDI1IEBAIENhbid0IGF0dGFjaCB0byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY29yZSBmaWxlIGF0 IHRoZSBzYW1lIHRpbWUuIikpOwotICNlbmRpZgotICAgICB9Ci0gCi0tICAvKiBOT1RFOiBjYWdu ZXkvMTk5OS0xMS0wNzogVGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QKLS0gICAg IG1vdmluZyB0aGlzIGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2NvbW1hbmRf bG9vcCgpCi0tICAgICBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUgbWFpbiB0 aGluZyBob2xkaW5nIGJhY2sgdGhhdAotLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgpIC0g aGFzIGJlZW4gZWxpbWluYXRlZC4gKi8KLS0gIHdoaWxlICgxKQotKyNpZiBIQVZFX1BZVEhPTgot KyAgaWYgKHB5dGhvbl9zY3JpcHQpCi0gICAgIHsKLS0gICAgICBjYXRjaF9lcnJvcnMgKGNhcHR1 cmVkX2NvbW1hbmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rICAgICAgZXh0ZXJu IGludCBwYWdpbmF0aW9uX2VuYWJsZWQ7Ci0rICAgICAgcGFnaW5hdGlvbl9lbmFibGVkID0gMDsK LSsgICAgICBydW5fcHl0aG9uX3NjcmlwdCAoYXJnYyAtIG9wdGluZCwgJmFyZ3Zbb3B0aW5kXSk7 Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsjZW5kaWYKLSsgICAgewotKyAg ICAgIC8qIE5PVEU6IGNhZ25leS8xOTk5LTExLTA3OiBUaGVyZSBpcyBwcm9iYWJseSBubyByZWFz b24gZm9yIG5vdAotKwkgbW92aW5nIHRoaXMgbG9vcCBhbmQgdGhlIGNvZGUgZm91bmQgaW4gY2Fw dHVyZWRfY29tbWFuZF9sb29wKCkKLSsJIGludG8gdGhlIGNvbW1hbmRfbG9vcCgpIHByb3Blci4g IFRoZSBtYWluIHRoaW5nIGhvbGRpbmcgYmFjayB0aGF0Ci0rCSBjaGFuZ2UgLSBTRVRfVE9QX0xF VkVMKCkgLSBoYXMgYmVlbiBlbGltaW5hdGVkLiAqLwotKyAgICAgIHdoaWxlICgxKQotKwl7Ci0r CSAgY2F0Y2hfZXJyb3JzIChjYXB0dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFT S19BTEwpOwotKwl9Ci0gICAgIH0KLSAgIC8qIE5vIGV4aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1 aXRfY29tbWFuZC4gICovCi0gfQotQEAgLTkzNCw3ICs5ODEsMTIgQEAgcHJpbnRfZ2RiX2hlbHAg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gVGhp cyBpcyB0aGUgR05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKLSAgICAgZ2RiIFtvcHRpb25zXSBb ZXhlY3V0YWJsZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBb b3B0aW9uc10gLS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1c blxuXAotKyAgICBnZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9y LWFyZ3VtZW50cyAuLi5dXG4iKSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRz X3VuZmlsdGVyZWQgKF8oIlwKLSsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlw dC1maWxlIFtzY3JpcHQtYXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCi0gT3B0aW9uczpcblxuXAotICIpLCBzdHJlYW0pOwot ICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotQEAgLTk3Miw3ICsxMDI0LDEzIEBAIE9wdGlvbnM6 XG5cblwKLSAgIC0tbncJCSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCi0g ICAtLW54ICAgICAgICAgICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7Ci0gICBmcHV0c191 bmZpbHRlcmVkIChnZGJpbml0LCBzdHJlYW0pOwotLSAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZp bGUuXG5cCi0rICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5cbiIpLCBzdHJlYW0pOwotKyNp ZiBIQVZFX1BZVEhPTgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotKyAgLS1weXRob24sIC1Q ICAgICAgIEZvbGxvd2luZyBhcmd1bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmlu Z1xuXAotKyAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHNjcmlw dC5cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotICAg LS1xdWlldCAgICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVw LlxuXAotICAgLS1yZWFkbm93ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZp cnN0IGFjY2Vzcy5cblwKLSAiKSwgc3RyZWFtKTsKLWRpZmYgLS1naXQgYS9nZGIvbWFpbnQuYyBi L2dkYi9tYWludC5jCi1pbmRleCA0MzE2ZDY2Li5mZThhMDY5IDEwMDY0NAotLS0tIGEvZ2RiL21h aW50LmMKLSsrKyBiL2dkYi9tYWludC5jCi1AQCAtOTE0LDQgKzkxNCwxMiBAQCBXaGVuIGVuYWJs ZWQgR0RCIGlzIHByb2ZpbGVkLiIpLAotIAkJCSAgIHNob3dfbWFpbnRlbmFuY2VfcHJvZmlsZV9w LAotIAkJCSAgICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwKLSAJCQkgICAmbWFpbnRlbmFuY2Vf c2hvd19jbWRsaXN0KTsKLSsgIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoImdkYl9kYXRhZGly IiwgY2xhc3NfbWFpbnRlbmFuY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdkYl9k YXRhZGlyLCBfKCJTZXQgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIF8oIlNob3cgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIF8oIlwKLStXaGVuIHNldCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRo IHRvIHNlYXJjaCBmb3IgZGF0YSBmaWxlcy4iKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWludGVuYW5jZV9z ZXRfY21kbGlzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hv d19jbWRsaXN0KTsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9t aS9taS1jbWQtdmFyLmMKLWluZGV4IGIyMjc0MTEuLjNiOTMyZjAgMTAwNjQ0Ci0tLS0gYS9nZGIv bWkvbWktY21kLXZhci5jCi0rKysgYi9nZGIvbWkvbWktY21kLXZhci5jCi1AQCAtNjk3LDcgKzY5 Nyw2IEBAIG1pX2NtZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50 IGFyZ2MpCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIC8qIEdldCB2YXJvYmogaGFu ZGxlLCBpZiBhIHZhbGlkIHZhciBvYmogbmFtZSB3YXMgc3BlY2lmaWVkICovCi0gICAgICAgc3Ry dWN0IHZhcm9iaiAqdmFyID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUpOwotIAotICAgICAgIHZh cm9ial91cGRhdGVfb25lICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7Ci1k aWZmIC0tZ2l0IGEvZ2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5jIGIvZ2RiL21pY3JvYmxhemUt bGludXgtdGRlcC5jCi1pbmRleCBhNjkxYjYyLi5kNjc5NTE2IDEwMDY0NAotLS0tIGEvZ2RiL21p Y3JvYmxhemUtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMK LUBAIC0zNSw2ICszNSw3IEBACi0gI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKLSAjaW5jbHVkZSAi ZnJhbWUtdW53aW5kLmgiCi0gI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCi0rI2luY2x1ZGUgImxp bnV4LXRkZXAuaCIKLSAKLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTMzLDYgKzEzNCw5IEBAIG1pY3Jv YmxhemVfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKLSAgIC8qIFRy YW1wb2xpbmVzLiAgKi8KLSAgIHRyYW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gs Ci0gCQkJCSZtaWNyb2JsYXplX2xpbnV4X3NpZ2hhbmRsZXJfdHJhbXBfZnJhbWUpOwotKwotKyAg c2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkg IGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gCi0gdm9pZAotZGlmZiAt LWdpdCBhL2dkYi9taW5zeW1zLmMgYi9nZGIvbWluc3ltcy5jCi1pbmRleCAyODdmOWRlLi4xZmUw ZmJlIDEwMDY0NAotLS0tIGEvZ2RiL21pbnN5bXMuYwotKysrIGIvZ2RiL21pbnN5bXMuYwotQEAg LTMzMSw4ICszMzEsOSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IG9iamZpbGUgKm9iamYpCi0gCSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+ aGFzaF9uZXh0KQotIAkgICAgewotIAkgICAgICBpZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9O QU1FIChtc3ltYm9sKSwgbmFtZSkgPT0gMCAmJgotLQkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9s KSA9PSBtc3RfdGV4dCB8fAotLQkJICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmls ZV90ZXh0KSkKLSsJCSAgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJCSAg IHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jCi0rCQkgICB8 fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQotIAkJewotIAkJICBz d2l0Y2ggKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkpCi0gCQkgICAgewotQEAgLTY5NCw2ICs2OTUs MTYgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcGMpCi0gICByZXR1 cm4gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKHBjLCBOVUxMKTsKLSB9Ci0g Ci0rLyogUmV0dXJuIG5vbi16ZXJvIGlmZiBQQyBpcyBpbiBmdW5jdGlvbiBpbXBsZW1lbnRpbmcg Z251LWlmdW5jIHNlbGVjdGlvbi4gICovCi0rCi0raW50Ci0raW5fZ251X2lmdW5jX3N0dWIgKENP UkVfQUREUiBwYykKLSt7Ci0rICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPSBsb29r dXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKLSsKLSsgIHJldHVybiBtc3ltYm9sICYmIE1T WU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jOwotK30KLSsKLSAvKiBG aW5kIHRoZSBtaW5pbWFsIHN5bWJvbCBuYW1lZCBOQU1FLCBhbmQgcmV0dXJuIGJvdGggdGhlIG1p bnN5bQotICAgIHN0cnVjdCBhbmQgaXRzIG9iamZpbGUuICBUaGlzIG9ubHkgY2hlY2tzIHRoZSBs aW5rYWdlIG5hbWUuICBTZXRzCi0gICAgKk9CSkZJTEVfUCBhbmQgcmV0dXJucyB0aGUgbWluaW1h bCBzeW1ib2wsIGlmIGl0IGlzIGZvdW5kLiAgSWYgaXQKLUBAIC03NjMsNiArNzc0LDcgQEAgcHJp bV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBhZGRy ZXNzLAotICAgc3dpdGNoIChtc190eXBlKQotICAgICB7Ci0gICAgIGNhc2UgbXN0X3RleHQ6Ci0r ICAgIGNhc2UgbXN0X3RleHRfZ251X2lmdW5jOgotICAgICBjYXNlIG1zdF9maWxlX3RleHQ6Ci0g ICAgIGNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6Ci0gICAgICAgc2VjdGlvbiA9IFNFQ1RfT0ZG X1RFWFQgKG9iamZpbGUpOwotQEAgLTEyMjgsNyArMTI0MCw4IEBAIGZpbmRfc29saWJfdHJhbXBv bGluZV90YXJnZXQgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgQ09SRV9BRERSIHBjKQotICAg ICB7Ci0gICAgICAgQUxMX01TWU1CT0xTIChvYmpmaWxlLCBtc3ltYm9sKQotICAgICAgIHsKLS0J aWYgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJaWYgKChNU1lNQk9MX1RZ UEUgKG1zeW1ib2wpID09IG1zdF90ZXh0Ci0rCSAgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wp ID09IG1zdF90ZXh0X2dudV9pZnVuYykKLSAJICAgICYmIHN0cmNtcCAoU1lNQk9MX0xJTktBR0Vf TkFNRSAobXN5bWJvbCksCi0gCQkgICAgICAgU1lNQk9MX0xJTktBR0VfTkFNRSAodHN5bWJvbCkp ID09IDApCi0gCSAgcmV0dXJuIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKLWRpZmYg LS1naXQgYS9nZGIvbWlwcy1saW51eC10ZGVwLmMgYi9nZGIvbWlwcy1saW51eC10ZGVwLmMKLWlu ZGV4IDU5MjRiMzAuLjI5NTcwMjQgMTAwNjQ0Ci0tLS0gYS9nZGIvbWlwcy1saW51eC10ZGVwLmMK LSsrKyBiL2dkYi9taXBzLWxpbnV4LXRkZXAuYwotQEAgLTM4LDYgKzM4LDcgQEAKLSAjaW5jbHVk ZSAidGFyZ2V0LWRlc2NyaXB0aW9ucy5oIgotICNpbmNsdWRlICJtaXBzLWxpbnV4LXRkZXAuaCIK LSAjaW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0g c3RhdGljIHN0cnVjdCB0YXJnZXRfc29fb3BzIG1pcHNfc3ZyNF9zb19vcHM7Ci0gCi1AQCAtMTIy Miw2ICsxMjIzLDkgQEAgbWlwc19saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBp bmZvLAotIAl0ZGVzY19udW1iZXJlZF9yZWdpc3RlciAoZmVhdHVyZSwgdGRlc2NfZGF0YSwgTUlQ U19SRVNUQVJUX1JFR05VTSwKLSAJCQkJICJyZXN0YXJ0Iik7Ci0gICAgIH0KLSsKLSsgIHNldF9n ZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51 eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90 b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1kaWZmIC0tZ2l0IGEv Z2RiL21pcHNyZWFkLmMgYi9nZGIvbWlwc3JlYWQuYwotaW5kZXggMDkzMzEzZS4uOTE0NGQwMCAx MDA2NDQKLS0tLSBhL2dkYi9taXBzcmVhZC5jCi0rKysgYi9nZGIvbWlwc3JlYWQuYwotQEAgLTM5 NCw2ICszOTQsNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgZWNvZmZfc3ltX2ZucyA9Ci0gICBt aXBzY29mZl9uZXdfaW5pdCwJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8g ZW50aXJlIHN5bXRhYiAqLwotICAgbWlwc2NvZmZfc3ltZmlsZV9pbml0LAkvKiBzeW1faW5pdDog cmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICBtaXBzY29mZl9z eW1maWxlX3JlYWQsCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIg Ki8KLSsgIE5VTEwsCQkJCS8qIHN5bV9yZWFkX3BzeW1ib2xzICovCi0gICBtaXBzY29mZl9zeW1m aWxlX2ZpbmlzaCwJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICov Ci0gICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6IGR1bW15IEZJWE1F IHRpbCBpbXBsZW0gc3ltIHJlbG9jICovCi0gICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8q IHN5bV9zZWdtZW50czogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbQotZGlmZiAtLWdpdCBh L2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYyBiL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYwotaW5k ZXggZDQ2MDJhNC4uN2JiYTcwNyAxMDA2NDQKLS0tLSBhL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAu YwotKysrIGIvZ2RiL21uMTAzMDAtbGludXgtdGRlcC5jCi1AQCAtMzIsNiArMzIsNyBAQAotICNp bmNsdWRlICJmcmFtZS5oIgotICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCi0gI2luY2x1ZGUgInRy YW1wLWZyYW1lLmgiCi0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLSAKLSAjaW5jbHVkZSA8c3Rk bGliLmg+Ci0gCi1AQCAtNzE4LDYgKzcxOSw5IEBAIGFtMzNfbGludXhfaW5pdF9vc2FiaSAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBnZGJpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSAKLSAg IHRyYW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZhbTMzX2xpbnV4X3NpZ2Zy YW1lKTsKLSAgIHRyYW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZhbTMzX2xp bnV4X3J0X3NpZ2ZyYW1lKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRk cik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3Npbmct cHJvdG90eXBlcy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL29iamMtbGFuZy5jIGIvZ2RiL29iamMt bGFuZy5jCi1pbmRleCBhMDUwZjE1Li4wNGQxZjFjIDEwMDY0NAotLS0tIGEvZ2RiL29iamMtbGFu Zy5jCi0rKysgYi9nZGIvb2JqYy1sYW5nLmMKLUBAIC0xMTc4LDE2ICsxMTc4LDYgQEAgZmluZF9t ZXRob2RzIChzdHJ1Y3Qgc3ltdGFiICpzeW10YWIsIGNoYXIgdHlwZSwKLSAKLSAJICBRVUlUOwot IAotLQkgIC8qIFRoZSBtaW5pbWFsIHN5bWJvbCBtaWdodCBwb2ludCB0byBhIGZ1bmN0aW9uIGRl c2NyaXB0b3I7Ci0tCSAgICAgcmVzb2x2ZSBpdCB0byB0aGUgYWN0dWFsIGNvZGUgYWRkcmVzcyBp bnN0ZWFkLiAgKi8KLS0JICBwYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIg KGdkYmFyY2gsIHBjLAotLQkJCQkJCSAgICZjdXJyZW50X3RhcmdldCk7Ci0tCi0tCSAgaWYgKHN5 bXRhYikKLS0JICAgIGlmIChwYyA8IEJMT0NLX1NUQVJUIChibG9jaykgfHwgcGMgPj0gQkxPQ0tf RU5EIChibG9jaykpCi0tCSAgICAgIC8qIE5vdCBpbiB0aGUgc3BlY2lmaWVkIHN5bXRhYi4gICov Ci0tCSAgICAgIGNvbnRpbnVlOwotLQotIAkgIHN5bW5hbWUgPSBTWU1CT0xfTkFUVVJBTF9OQU1F IChtc3ltYm9sKTsKLSAJICBpZiAoc3ltbmFtZSA9PSBOVUxMKQotIAkgICAgY29udGludWU7Ci1A QCAtMTIyMyw2ICsxMjEzLDE3IEBAIGZpbmRfbWV0aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFi LCBjaGFyIHR5cGUsCi0gCSAgICAgICgobnNlbGVjdG9yID09IE5VTEwpIHx8IChzdHJjbXAgKHNl bGVjdG9yLCBuc2VsZWN0b3IpICE9IDApKSkKLSAJICAgIGNvbnRpbnVlOwotIAotKwkgIC8qIFRo ZSBtaW5pbWFsIHN5bWJvbCBtaWdodCBwb2ludCB0byBhIGZ1bmN0aW9uIGRlc2NyaXB0b3I7Ci0r CSAgICAgcmVzb2x2ZSBpdCB0byB0aGUgYWN0dWFsIGNvZGUgYWRkcmVzcyBpbnN0ZWFkLiAgRGVs YXkgdGhlIGNhbGwgYXMKLSsJICAgICBpdHMgcmVzb2x1dGlvbiBtYXkgYmUgZXhwZW5zaXZlLiAg Ki8KLSsJICBwYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs IHBjLAotKwkJCQkJCSAgICZjdXJyZW50X3RhcmdldCk7Ci0rCi0rCSAgaWYgKHN5bXRhYikKLSsJ ICAgIGlmIChwYyA8IEJMT0NLX1NUQVJUIChibG9jaykgfHwgcGMgPj0gQkxPQ0tfRU5EIChibG9j aykpCi0rCSAgICAgIC8qIE5vdCBpbiB0aGUgc3BlY2lmaWVkIHN5bXRhYi4gICovCi0rCSAgICAg IGNvbnRpbnVlOwotKwotIAkgIHN5bSA9IGZpbmRfcGNfZnVuY3Rpb24gKHBjKTsKLSAJICBpZiAo c3ltICE9IE5VTEwpCi0gCSAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmMgYi9nZGIv b2JqZmlsZXMuYwotaW5kZXggYzI3NjNjMi4uNWQ2MjAyMCAxMDA2NDQKLS0tLSBhL2dkYi9vYmpm aWxlcy5jCi0rKysgYi9nZGIvb2JqZmlsZXMuYwotQEAgLTc5Miw2ICs3OTIsMTAgQEAgb2JqZmls ZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZz ZXRzICpuZXdfb2Zmc2V0cykKLSAgICAgfQotICAgfQotIAotKyAgaWYgKG9iamZpbGUtPnF1aWNr X2FkZHJtYXApCi0rICAgIGFkZHJtYXBfcmVsb2NhdGUgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXAs Ci0rCQkgICAgICBBTk9GRlNFVCAoZGVsdGEsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKSk7Ci0r Ci0gICB7Ci0gICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW07Ci0gCi1AQCAtOTE3LDcg KzkyMSw3IEBAIG9iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1 Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKLSBpbnQKLSBvYmpmaWxlX2hhc19wYXJ0 aWFsX3N5bWJvbHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsKLS0gIHJldHVybiBvYmpm aWxlLT5wc3ltdGFicyAhPSBOVUxMOwotKyAgcmV0dXJuIG9iamZpbGUtPnBzeW10YWJzICE9IE5V TEwgfHwgb2JqZmlsZS0+cXVpY2tfYWRkcm1hcDsKLSB9Ci0gCi0gLyogUmV0dXJuIG5vbi16ZXJv IGlmIE9CSkZJTEUgaGFzIGZ1bGwgc3ltYm9scy4gICovCi1AQCAtOTU3LDYgKzk2MSwyMCBAQCBo YXZlX3BhcnRpYWxfc3ltYm9scyAodm9pZCkKLSAgICAgaWYgKG9iamZpbGVfaGFzX3BhcnRpYWxf c3ltYm9scyAob2ZwKSkKLSAgICAgICByZXR1cm4gMTsKLSAgIH0KLSsKLSsgIC8qIFRyeSBhZ2Fp biwgYWZ0ZXIgcmVhZGluZyBwYXJ0aWFsIHN5bWJvbHMuICBXZSBkbyB0aGlzIGluIHR3bwotKyAg ICAgcGFzc2VzIGJlY2F1c2Ugb2JqZmlsZXMgYXJlIGFsd2F5cyBhZGRlZCB0byB0aGUgaGVhZCBv ZiB0aGUgbGlzdCwKLSsgICAgIGFuZCB0aGVyZSBtaWdodCBiZSBhIGxhdGVyIG9iamZpbGUgZm9y IHdoaWNoIHdlJ3ZlIGFscmVhZHkgcmVhZAotKyAgICAgcGFydGlhbCBzeW1ib2xzLiAgKi8KLSsg IEFMTF9PQkpGSUxFUyAob2ZwKQotKyAgewotKyAgICByZXF1aXJlX3BhcnRpYWxfc3ltYm9scyAo b2ZwKTsKLSsgICAgaWYgKG9mcC0+cHN5bXRhYnMgIT0gTlVMTCkKLSsgICAgICB7Ci0rCXJldHVy biAxOwotKyAgICAgIH0KLSsgIH0KLSsKLSAgIHJldHVybiAwOwotIH0KLSAKLWRpZmYgLS1naXQg YS9nZGIvb2JqZmlsZXMuaCBiL2dkYi9vYmpmaWxlcy5oCi1pbmRleCBjNjg5NjIyLi5lYjNhZTEw IDEwMDY0NAotLS0tIGEvZ2RiL29iamZpbGVzLmgKLSsrKyBiL2dkYi9vYmpmaWxlcy5oCi1AQCAt MjEzLDYgKzIxMywxMSBAQCBzdHJ1Y3Qgb2JqZmlsZQotIAotICAgICBzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKnBzeW10YWJzOwotIAotKyAgICAvKiBBbiBhZGRyZXNzIG1hcCB0aGF0IGNhbiBiZSB1 c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGFuCi0rICAgICAgIGFkZHJlc3MgY29tZXMgZnJv bSB0aGlzIG9iamZpbGUuICBUaGlzIGNhbiBiZSBOVUxMLiAgKi8KLSsKLSsgICAgc3RydWN0IGFk ZHJtYXAgKnF1aWNrX2FkZHJtYXA7Ci0rCi0gICAgIC8qIE1hcCBhZGRyZXNzZXMgdG8gdGhlIGVu dHJpZXMgb2YgUFNZTVRBQlMuICBJdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCB0bwotICAgICAg ICBoYXZlIGEgbWFwIHBlciB0aGUgd2hvbGUgcHJvY2VzcyBidXQgQUREUk1BUCBjYW5ub3Qgc2Vs ZWN0aXZlbHkgcmVtb3ZlCi0gICAgICAgIGl0cyBpdGVtcyBkdXJpbmcgRlJFRV9PQkpGSUxFLiAg VGhpcyBtYXBwaW5nIGlzIGFscmVhZHkgcHJlc2VudCBldmVuIGZvcgotQEAgLTQyNiw2ICs0MzEs MTUgQEAgc3RydWN0IG9iamZpbGUKLSAKLSAjZGVmaW5lIE9CSkZfVVNFUkxPQURFRAkoMSA8PCAz KQkvKiBVc2VyIGxvYWRlZCAqLwotIAotKy8qIFNldCBpZiB3ZSBoYXZlIHRyaWVkIHRvIHJlYWQg cGFydGlhbCBzeW10YWJzIGZvciB0aGlzIG9iamZpbGUuCi0rICAgVGhpcyBpcyB1c2VkIHRvIGFs bG93IGxhenkgcmVhZGluZyBvZiBwYXJ0aWFsIHN5bXRhYnMuICAqLwotKwotKyNkZWZpbmUgT0JK Rl9TWU1UQUJTX1JFQUQgKDEgPDwgNikKLSsKLSsvKiBUaGlzIGZsYWcgaXMgc2V0IGZvciB0aGUg bWFpbiBvYmpmaWxlLiAgKi8KLSsKLSsjZGVmaW5lIE9CSkZfTUFJTiAoMSA8PCA3KQotKwotIC8q IFRoZSBvYmplY3QgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBydW50aW1lIGNvbW1vbiBtaW5pbWFs IHN5bWJvbHMKLSAgICBmb3IgU3VuT1M0LiBOb3RlIHRoYXQgdGhpcyBvYmpmaWxlIGhhcyBubyBh c3NvY2lhdGVkIEJGRC4gICovCi0gCi1AQCAtNjA2LDYgKzYyMCwxMyBAQCBleHRlcm4gdm9pZCBn ZGJfYmZkX3VucmVmIChzdHJ1Y3QgYmZkICphYmZkKTsKLSAgIEFMTF9PQkpGSUxFUyAob2JqZmls ZSkJIFwKLSAgICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUsIHApCi0gCi0rLyogTGlr ZSBBTExfUFNZTVRBQlMsIGJ1dCBlbnN1cmUgdGhhdCBwYXJ0aWFsIHN5bWJvbHMgaGF2ZSBiZWVu IHJlYWQKLSsgICBiZWZvcmUgZXhhbWluaW5nIHRoZSBvYmpmaWxlLiAgKi8KLSsKLSsjZGVmaW5l IEFMTF9QU1lNVEFCU19SRVFVSVJFRChvYmpmaWxlLCBwKQkJCVwKLSsgIEFMTF9PQkpGSUxFUyAo b2JqZmlsZSkJCQkJCVwKLSsgICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKHJlcXVpcmVfcGFydGlh bF9zeW1ib2xzIChvYmpmaWxlKSwgcCkKLSsKLSAjZGVmaW5lIEFMTF9QU1BBQ0VfUFNZTVRBQlMo c3MsIG9iamZpbGUsIHApCQlcCi0gICBBTExfUFNQQUNFX09CSkZJTEVTIChzcywgb2JqZmlsZSkJ CQlcCi0gICAgIEFMTF9PQkpGSUxFX1BTWU1UQUJTIChvYmpmaWxlLCBwKQotZGlmZiAtLWdpdCBh L2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKLWluZGV4IGFhYmM0NjEuLmUyYWI4ZDkgMTAwNjQ0 Ci0tLS0gYS9nZGIvcGFyc2UuYwotKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC02Miw2ICs2Miw3IEBA IGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9zdGFuZGFyZCA9Ci0g ICB7Ci0gICAgIHByaW50X3N1YmV4cF9zdGFuZGFyZCwKLSAgICAgb3BlcmF0b3JfbGVuZ3RoX3N0 YW5kYXJkLAotKyAgICBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCwKLSAgICAgb3BfbmFtZV9zdGFu ZGFyZCwKLSAgICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKLSAgICAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkCi1AQCAtNTIzLDYgKzUyNCwxMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3Ry dWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAo b2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z190ZXh0X3N5bWJvbCk7Ci0gICAgICAgYnJl YWs7Ci0gCi0rICAgIGNhc2UgbXN0X3RleHRfZ251X2lmdW5jOgotKyAgICAgIHdyaXRlX2V4cF9l bHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKQotKwkJCQkJICAgICAgIC0+bm9kZWJ1Z190 ZXh0X2dudV9pZnVuY19zeW1ib2wpOwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIG1zdF9k YXRhOgotICAgICBjYXNlIG1zdF9maWxlX2RhdGE6Ci0gICAgIGNhc2UgbXN0X2JzczoKLUBAIC04 NTMsNiArODU5LDEwIEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Np b24gKmV4cHIsIGludCBlbmRwb3MsCi0gICAgICAgYXJncyA9IDE7Ci0gICAgICAgYnJlYWs7Ci0g Ci0rICAgIGNhc2UgVFlQRV9JTlNUQU5DRV9MT09LVVA6Ci0rICAgICAgb3BsZW4gPSAzOwotKyAg ICAgIGJyZWFrOwotKwotICAgICBjYXNlIE9QX09CSkNfTVNHQ0FMTDoJLyogT2JqZWN0aXZlIEMg bWVzc2FnZSAobWV0aG9kKSBjYWxsICovCi0gICAgICAgb3BsZW4gPSA0OwotICAgICAgIGFyZ3Mg PSAxICsgbG9uZ2VzdF90b19pbnQgKGV4cHItPmVsdHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsK LUBAIC04ODksNiArODk5LDEzIEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cHIsIGludCBlbmRwb3MsCi0gICAgICAgYXJncyA9IDE7Ci0gICAgICAgYnJl YWs7Ci0gCi0rICAgIGNhc2UgT1BfQURMX0ZVTkM6Ci0rICAgICAgb3BsZW4gPSBsb25nZXN0X3Rv X2ludCAoZXhwci0+ZWx0c1tlbmRwb3MgLSAyXS5sb25nY29uc3QpOwotKyAgICAgIG9wbGVuID0g NCArIEJZVEVTX1RPX0VYUF9FTEVNIChvcGxlbiArIDEpOwotKyAgICAgIG9wbGVuKys7Ci0rICAg ICAgb3BsZW4rKzsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBPUF9MQUJFTEVEOgotICAg ICBjYXNlIFNUUlVDVE9QX1NUUlVDVDoKLSAgICAgY2FzZSBTVFJVQ1RPUF9QVFI6Ci1AQCAtMTM3 Myw2ICsxMzkwLDE1MSBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwg Li4uKQotICAgdmFfZW5kIChhcmdzKTsKLSB9Ci0gCi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhl IGV4cF9kZXNjcmlwdG9yIG1ldGhvZCBvcGVyYXRvcl9jaGVjay4gICovCi0rCi0raW50Ci0rb3Bl cmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0r CQkJIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKLSsJ CQkgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCQkg ICAgICB2b2lkICpkYXRhKSwKLSsJCQkgdm9pZCAqZGF0YSkKLSt7Ci0rICBjb25zdCB1bmlvbiBl eHBfZWxlbWVudCAqY29uc3QgZWx0cyA9IGV4cC0+ZWx0czsKLSsgIHN0cnVjdCB0eXBlICp0eXBl ID0gTlVMTDsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gTlVMTDsKLSsKLSsgIC8qIEV4 dGVuZGVkIG9wZXJhdG9ycyBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkgaGFuZGxlZCBieSBleHBf ZGVzY3JpcHRvcgotKyAgICAgaXRlcmF0ZSBtZXRob2Qgb2YgaXRzIHNwZWNpZmljIGxhbmd1YWdl LiAgKi8KLSsgIGdkYl9hc3NlcnQgKGVsdHNbcG9zXS5vcGNvZGUgPCBPUF9FWFRFTkRFRDApOwot KwotKyAgLyogVHJhY2sgdGhlIGNhbGxlcnMgb2Ygd3JpdGVfZXhwX2VsdF90eXBlIGZvciB0aGlz IHRhYmxlLiAgKi8KLSsKLSsgIHN3aXRjaCAoZWx0c1twb3NdLm9wY29kZSkKLSsgICAgewotKyAg ICBjYXNlIEJJTk9QX1ZBTDoKLSsgICAgY2FzZSBPUF9DT01QTEVYOgotKyAgICBjYXNlIE9QX0RF Q0ZMT0FUOgotKyAgICBjYXNlIE9QX0RPVUJMRToKLSsgICAgY2FzZSBPUF9MT05HOgotKyAgICBj YXNlIE9QX1NDT1BFOgotKyAgICBjYXNlIE9QX1RZUEU6Ci0rICAgIGNhc2UgVU5PUF9DQVNUOgot KyAgICBjYXNlIFVOT1BfTUFYOgotKyAgICBjYXNlIFVOT1BfTUVNVkFMOgotKyAgICBjYXNlIFVO T1BfTUlOOgotKyAgICAgIHR5cGUgPSBlbHRzW3BvcyArIDFdLnR5cGU7Ci0rICAgICAgYnJlYWs7 Ci0rCi0rICAgIGNhc2UgVU5PUF9NRU1WQUxfVExTOgotKyAgICAgIG9iamZpbGUgPSBlbHRzW3Bv cyArIDFdLm9iamZpbGU7Ci0rICAgICAgdHlwZSA9IGVsdHNbcG9zICsgMl0udHlwZTsKLSsgICAg ICBicmVhazsKLSsKLSsgICAgY2FzZSBPUF9WQVJfVkFMVUU6Ci0rICAgICAgewotKwljb25zdCBz dHJ1Y3QgYmxvY2sgKmNvbnN0IGJsb2NrID0gZWx0c1twb3MgKyAxXS5ibG9jazsKLSsJY29uc3Qg c3RydWN0IHN5bWJvbCAqY29uc3Qgc3ltYm9sID0gZWx0c1twb3MgKyAyXS5zeW1ib2w7Ci0rCWNv bnN0IHN0cnVjdCBvYmpfc2VjdGlvbiAqY29uc3Qgc2VjdGlvbiA9IFNZTUJPTF9PQkpfU0VDVElP TiAoc3ltYm9sKTsKLSsKLSsJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRz ZWxmIGlzIHBsYWNlZC4KLSsJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBO VUxMLiAgKi8KLSsJaWYgKG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKFNZTUJPTF9T WU1UQUIgKHN5bWJvbCktPm9iamZpbGUsIGRhdGEpKQotKwkgIHJldHVybiAxOwotKwotKwkvKiBD aGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFi bGUuICAqLwotKwlvYmpmaWxlID0gYmxvY2tfb2JqZmlsZSAoYmxvY2spOwotKwotKwl0eXBlID0g U1lNQk9MX1RZUEUgKHN5bWJvbCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0r Ci0rICAvKiBJbnZva2UgY2FsbGJhY2tzIGZvciBUWVBFIGFuZCBPQkpGSUxFIGlmIHRoZXkgd2Vy ZSBzZXQgYXMgbm9uLU5VTEwuICAqLwotKwotKyAgaWYgKHR5cGUgJiYgdHlwZV9mdW5jICYmICgq dHlwZV9mdW5jKSAodHlwZSwgZGF0YSkpCi0rICAgIHJldHVybiAxOwotKyAgaWYgKHR5cGUgJiYg VFlQRV9PQkpGSUxFICh0eXBlKSAmJiBvYmpmaWxlX2Z1bmMKLSsgICAgICAmJiAoKm9iamZpbGVf ZnVuYykgKFRZUEVfT0JKRklMRSAodHlwZSksIGRhdGEpKQotKyAgICByZXR1cm4gMTsKLSsgIGlm IChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRh dGEpKQotKyAgICByZXR1cm4gMTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBDYWxsIFRZ UEVfRlVOQyBhbmQgT0JKRklMRV9GVU5DIGZvciBhbnkgVFlQRSBhbmQgT0JKRklMRSBmb3VuZCBi ZWluZwotKyAgIHJlZmVyZW5jZWQgYnkgRVhQLiAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2Fs bGVkIHdpdGggTlVMTCBUWVBFIG9yIE5VTEwKLSsgICBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBw YXNzZWQgYW4gYXJiaXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuCi0rICAgSWYg YW55IG9mIHRoZSBmdW5jdGlvbnMgcmV0dXJucyBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3Ro ZXIpIG5vbi16ZXJvCi0rICAgdmFsdWUgaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNh bGxlci4gIE90aGVyd2lzZSB6ZXJvIGlzIHJldHVybmVkCi0rICAgYWZ0ZXIgaXRlcmF0aW5nIHRo cm91Z2ggd2hvbGUgRVhQLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZXhwX2l0ZXJhdGUgKHN0cnVj dCBleHByZXNzaW9uICpleHAsCi0rCSAgICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUg KnR5cGUsIHZvaWQgKmRhdGEpLAotKwkgICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKLSsJICAgICB2b2lkICpkYXRhKQotK3sKLSsg IGludCBlbmRwb3M7Ci0rICBjb25zdCB1bmlvbiBleHBfZWxlbWVudCAqY29uc3QgZWx0cyA9IGV4 cC0+ZWx0czsKLSsKLSsgIGZvciAoZW5kcG9zID0gZXhwLT5uZWx0czsgZW5kcG9zID4gMDsgKQot KyAgICB7Ci0rICAgICAgaW50IHBvcywgYXJncywgb3BsZW4gPSAwOwotKwotKyAgICAgIGV4cC0+ bGFuZ3VhZ2VfZGVmbi0+bGFfZXhwX2Rlc2MtPm9wZXJhdG9yX2xlbmd0aCAoZXhwLCBlbmRwb3Ms Ci0rCQkJCQkJCSZvcGxlbiwgJmFyZ3MpOwotKyAgICAgIGdkYl9hc3NlcnQgKG9wbGVuID4gMCk7 Ci0rCi0rICAgICAgcG9zID0gZW5kcG9zIC0gb3BsZW47Ci0rICAgICAgaWYgKGV4cC0+bGFuZ3Vh Z2VfZGVmbi0+bGFfZXhwX2Rlc2MtPm9wZXJhdG9yX2NoZWNrIChleHAsIHBvcywgdHlwZV9mdW5j LAotKwkJCQkJCQkgICBvYmpmaWxlX2Z1bmMsIGRhdGEpKQotKwlyZXR1cm4gMTsKLSsKLSsgICAg ICBlbmRwb3MgPSBwb3M7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBIZWxw ZXIgZm9yIGV4cF91c2VzX29iamZpbGUuICAqLwotKwotK3N0YXRpYyBpbnQKLStleHBfdXNlc19v YmpmaWxlX2l0ZXIgKHN0cnVjdCBvYmpmaWxlICpleHBfb2JqZmlsZSwgdm9pZCAqb2JqZmlsZV92 b2lkcCkKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IG9iamZpbGVfdm9pZHA7Ci0r Ci0rICByZXR1cm4gZXhwX29iamZpbGUgPT0gb2JqZmlsZTsKLSt9Ci0rCi0rLyogUmV0dXJuIDEg aWYgRVhQIHVzZXMgT0JKRklMRSAoYW5kIHdpbGwgYmVjb21lIGRhbmdsaW5nIHdoZW4gT0JKRklM RQotKyAgIGlzIHVubG9hZGVkKSwgb3RoZXJ3aXNlIHJldHVybiAwLiAgKi8KLSsKLStpbnQKLStl eHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKLSt7Ci0rICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVMTCwgZXhwX3VzZXNf b2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBleHBfdHlwZXNf bWFya191c2VkLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVy IChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqdW51c2VkKQotK3sKLSsgIHR5cGVfbWFya191c2Vk ICh0eXBlKTsKLSsKLSsgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0dXJu IDA7Ci0rfQotKwotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFIGNvbnRhaW5l ZCBpbiBFWFAuICAqLwotKwotK3ZvaWQKLStleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwKQotK3sKLSsgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19tYXJrX3Vz ZWRfaXRlciwgTlVMTCwgTlVMTCk7Ci0rfQotKwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9wYXJzZSAo dm9pZCkKLSB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlci1kZWZzLmggYi9nZGIvcGFyc2VyLWRl ZnMuaAotaW5kZXggYzRlYjFhMC4uMmE0M2ZlMyAxMDA2NDQKLS0tLSBhL2dkYi9wYXJzZXItZGVm cy5oCi0rKysgYi9nZGIvcGFyc2VyLWRlZnMuaAotQEAgLTE5Miw2ICsxOTIsMTMgQEAgZXh0ZXJu IHZvaWQgb3BlcmF0b3JfbGVuZ3RoIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLCBp bnQgKik7Ci0gCi0gZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLCBpbnQgKik7Ci0gCi0rZXh0ZXJuIGludCBvcGVyYXRv cl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkJ ICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCQkJCSAgICAgIHZv aWQgKmRhdGEpLAotKwkJCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKQotKwkJCQkgICAgICAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAotKwkJCQkgICAgdm9pZCAqZGF0YSk7 Ci0rCi0gZXh0ZXJuIGNoYXIgKm9wX25hbWVfc3RhbmRhcmQgKGVudW0gZXhwX29wY29kZSk7Ci0g Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpmb2xsb3dfdHlwZXMgKHN0cnVjdCB0eXBlICopOwotQEAg LTI3MCw2ICsyNzcsMjAgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCi0gICAgICAgIHRoZSBudW1i ZXIgb2Ygc3ViZXhwcmVzc2lvbnMgaXQgdGFrZXMuICAqLwotICAgICB2b2lkICgqb3BlcmF0b3Jf bGVuZ3RoKSAoc3RydWN0IGV4cHJlc3Npb24qLCBpbnQsIGludCosIGludCAqKTsKLSAKLSsgICAg LyogQ2FsbCBUWVBFX0ZVTkMgYW5kIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJ TEUgZm91bmQgYmVpbmcKLSsgICAgICAgcmVmZXJlbmNlZCBieSB0aGUgc2luZ2xlIG9wZXJhdG9y IG9mIEVYUCBhdCBwb3NpdGlvbiBQT1MuICBPcGVyYXRvcgotKyAgICAgICBwYXJhbWV0ZXJzIGFy ZSBsb2NhdGVkIGF0IHBvc2l0aXZlIChQT1MgKyBudW1iZXIpIG9mZnNldHMgaW4gRVhQLgotKyAg ICAgICBUaGUgZnVuY3Rpb25zIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2l0aCBOVUxMIFRZUEUg b3IgTlVMTCBPQkpGSUxFLgotKyAgICAgICBGdW5jdGlvbnMgc2hvdWxkIGdldCBwYXNzZWQgYW4g YXJiaXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuCi0rICAgICAgIElmIGFueSBv ZiB0aGUgZnVuY3Rpb25zIHJldHVybnMgbm9uLXplcm8gdmFsdWUgdGhlbiAoYW55IG90aGVyKSBu b24temVybwotKyAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8g dGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCi0rICAgICAgIHNob3VsZCBiZSByZXR1cm5lZC4g ICovCi0rICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50IHBvcywKLSsJCQkgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9p ZCAqZGF0YSksCi0rCQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCi0rCQkJCQkJdm9pZCAqZGF0YSksCi0rCQkJICAgdm9pZCAqZGF0YSk7Ci0rCi0gICAg IC8qIE5hbWUgb2YgdGhpcyBvcGVyYXRvciBmb3IgZHVtcGluZyBwdXJwb3Nlcy4gICovCi0gICAg IGNoYXIgKigqb3BfbmFtZSkgKGVudW0gZXhwX29wY29kZSk7Ci0gCi1AQCAtMzAyLDQgKzMyMyw4 IEBAIGV4dGVybiB2b2lkIHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24g KiwgaW50ICosCi0gCi0gZXh0ZXJuIHZvaWQgcGFyc2VyX2ZwcmludGYgKEZJTEUgKiwgY29uc3Qg Y2hhciAqLCAuLi4pIEFUVFJfRk9STUFUIChwcmludGYsIDIgLDMpOwotIAotK2V4dGVybiBpbnQg ZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUg Km9iamZpbGUpOwotKwotK2V4dGVybiB2b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBl eHByZXNzaW9uICpleHApOwotKwotICNlbmRpZiAvKiBQQVJTRVJfREVGU19IICovCi1kaWZmIC0t Z2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLWluZGV4IDEw ZmY3M2QuLjViNjhmNTYgMTAwNjQ0Ci0tLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCi0rKysgYi9n ZGIvcHBjLWxpbnV4LW5hdC5jCi1AQCAtMTM5MSw2ICsxMzkxLDI0IEBAIHBwY19saW51eF9yZW1v dmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydykKLSAgIHJldHVy biAwOwotIH0KLSAKLSsvKiBTZWUgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cy4gIERvIG5vdCB1 c2Ugd3JhcHBlcgotKyAgIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCBhcyBpdCB3b3VsZCBt b2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hlCi0rICAgKHNhdmVkX2RhYnJfdmFsdWUpLiAgKi8KLSsK LStzdGF0aWMgaW50Ci0rcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKLSt7Ci0r ICBwaWRfdCB0aWQ7Ci0rCi0rICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOwotKyAgaWYg KHRpZCA9PSAwKQotKyAgICB0aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOwotKwotKyAgaWYg KHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDApCi0rICAg IHJldHVybiAtMTsKLSsgIHJldHVybiAwOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHBwY19saW51 eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKLSB7Ci1AQCAtMTY0OCw2ICsxNjY2LDcgQEAgX2lu aXRpYWxpemVfcHBjX2xpbnV4X25hdCAodm9pZCkKLSAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdf d2F0Y2hwb2ludCA9IHBwY19saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQ7Ci0gICB0 LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKLSAg IHQtPnRvX3JlbW92ZV93YXRjaHBvaW50ID0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50Owot KyAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50 czsKLSAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5 X3dhdGNocG9pbnQ7Ci0gICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9z dG9wcGVkX2RhdGFfYWRkcmVzczsKLSAgIHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFu Z2UgPSBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZTsKLWRpZmYgLS1naXQg YS9nZGIvcHBjLWxpbnV4LXRkZXAuYyBiL2dkYi9wcGMtbGludXgtdGRlcC5jCi1pbmRleCBmYWU1 YWIyLi45NGY5OTNlIDEwMDY0NAotLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKLSsrKyBiL2dk Yi9wcGMtbGludXgtdGRlcC5jCi1AQCAtNDgsNiArNDgsNyBAQAotICNpbmNsdWRlICJhcmNoLXV0 aWxzLmgiCi0gI2luY2x1ZGUgInNwdS10ZGVwLmgiCi0gI2luY2x1ZGUgInhtbC1zeXNjYWxsLmgi Ci0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLSAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAw L3Bvd2VycGMtMzJsLmMiCi0gI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWFsdGl2 ZWMzMmwuYyIKLUBAIC02NzIsOCArNjczLDE5IEBAIHBwYzY0X2xpbnV4X2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgICByZXMgPSBiZmRf Z2V0X3NlY3Rpb25fY29udGVudHMgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0aW9uLAotIAkJCQkg ICAgICAmYnVmLCBhZGRyIC0gcy0+YWRkciwgOCk7Ci0gICAgICAgaWYgKHJlcyAhPSAwKQotLQly ZXR1cm4gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIDgsIGJ5dGVfb3JkZXIpCi0tCQkt IGJmZF9zZWN0aW9uX3ZtYSAocy0+YmZkLCBzLT50aGVfYmZkX3NlY3Rpb24pICsgcy0+YWRkcjsK LSsJewotKwkgIENPUkVfQUREUiBwYywgcmVzb2x2ZWQ7Ci0rCSAgCi0rCSAgcGMgPSBleHRyYWN0 X3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgOCwgYnl0ZV9vcmRlcikKLSsJICAgICAgIC0gYmZkX3Nl Y3Rpb25fdm1hIChzLT5iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikgKyBzLT5hZGRyOwotKwotKwkg IHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRk ciwgcGMpOwotKwkgIGlmIChyZXNvbHZlZCAhPSBwYykKLSsJICAgIHBjID0gcHBjNjRfbGludXhf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLAotKwkJCQkJCQkg dGFyZyk7Ci0rCi0rCSAgcmV0dXJuIHBjOwotKwl9Ci0gICAgfQotIAotICAgcmV0dXJuIGFkZHI7 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwotaW5kZXggYzhj YjM1Yy4uMThkYWU5ZSAxMDA2NDQKLS0tLSBhL2dkYi9wcmludGNtZC5jCi0rKysgYi9nZGIvcHJp bnRjbWQuYwotQEAgLTQ2LDcgKzQ2LDYgQEAKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNp bmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJzb2xpc3QuaCIKLS0jaW5jbHVkZSAic29s aWIuaCIKLSAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKLSAjaW5jbHVkZSAiY2hhcnNldC5oIgot ICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi1AQCAtOTQxLDYgKzk0MCwxMSBAQCBwcmludF9jb21t YW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCi0gICBlbHNlCi0g ICAgIHZhbCA9IGFjY2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKLSAKLSsgIC8qIERvIG5vdCB0cnkg dG8gT0JKRUNUX0FERFJFU1NfU0VUIGhlcmUgYW55dGhpbmcuICBXZSBhcmUgaW50ZXJlc3RlZCBp biB0aGUKLSsgICAgIHNvdXJjZSB2YXJpYWJsZSBiYXNlIGFkZHJlc3NlcyBhcyBmb3VuZCBieSBS RUFEX1ZBUl9WQUxVRS4gIFRoZSB2YWx1ZSBoZXJlCi0rICAgICBjYW4gYmUgYWxyZWFkeSBhIGNh bGN1bGF0ZWQgZXhwcmVzc2lvbiBhZGRyZXNzIGluYXBwcm9wcmlhdGUgZm9yCi0rICAgICBEV19P UF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8KLSsKLSAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAm JiB2YWx1ZV90eXBlICh2YWwpICYmCi0gCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwp KSAhPSBUWVBFX0NPREVfVk9JRCkpCi0gICAgIHsKLUBAIC0xNDM3LDYgKzE0NDEsMjIgQEAgeF9j b21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKLSAJc2V0X2ludGVybmFsdmFyIChsb29r dXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwotICAgICB9Ci0gfQot KwotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20g dGhpcyBHREIgc291cmNlIGZpbGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHJpbnRfdHlwZXNf bWFya191c2VkICh2b2lkKQotK3sKLSsgIHN0cnVjdCBkaXNwbGF5ICpkOwotKwotKyAgaWYgKGxh c3RfZXhhbWluZV92YWx1ZSkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGxhc3Rf ZXhhbWluZV92YWx1ZSkpOwotKwotKyAgZm9yIChkID0gZGlzcGxheV9jaGFpbjsgZDsgZCA9IGQt Pm5leHQpCi0rICAgIGlmIChkLT5leHApCi0rICAgICAgZXhwX3R5cGVzX21hcmtfdXNlZCAoZC0+ ZXhwKTsKLSt9Ci0rCi0gDAotIAotIC8qIEFkZCBhbiBleHByZXNzaW9uIHRvIHRoZSBhdXRvLWRp c3BsYXkgY2hhaW4uCi1AQCAtMTg1OSw1MSArMTg3OSw2IEBAIGRpc2FibGVfZGlzcGxheV9jb21t YW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0gICAgICAgfQotIH0KLSAKLS0vKiBSZXR1 cm4gMSBpZiBEIHVzZXMgU09MSUIgKGFuZCB3aWxsIGJlY29tZSBkYW5nbGluZyB3aGVuIFNPTElC Ci0tICAgaXMgdW5sb2FkZWQpLCBvdGhlcndpc2UgcmV0dXJuIDAuICAqLwotLQotLXN0YXRpYyBp bnQKLS1kaXNwbGF5X3VzZXNfc29saWJfcCAoY29uc3Qgc3RydWN0IGRpc3BsYXkgKmQsCi0tCQkg ICAgICBjb25zdCBzdHJ1Y3Qgc29fbGlzdCAqc29saWIpCi0tewotLSAgaW50IGVuZHBvczsKLS0g IHN0cnVjdCBleHByZXNzaW9uICpjb25zdCBleHAgPSBkLT5leHA7Ci0tICBjb25zdCB1bmlvbiBl eHBfZWxlbWVudCAqY29uc3QgZWx0cyA9IGV4cC0+ZWx0czsKLS0KLS0gIGlmIChkLT5ibG9jayAh PSBOVUxMCi0tICAgICAgJiYgZC0+cHNwYWNlID09IHNvbGliLT5wc3BhY2UKLS0gICAgICAmJiBz b2xpYl9jb250YWluc19hZGRyZXNzX3AgKHNvbGliLCBkLT5ibG9jay0+c3RhcnRhZGRyKSkKLS0g ICAgcmV0dXJuIDE7Ci0tCi0tICBmb3IgKGVuZHBvcyA9IGV4cC0+bmVsdHM7IGVuZHBvcyA+IDA7 ICkKLS0gICAgewotLSAgICAgIGludCBpLCBhcmdzLCBvcGxlbiA9IDA7Ci0tCi0tICAgICAgZXhw LT5sYW5ndWFnZV9kZWZuLT5sYV9leHBfZGVzYy0+b3BlcmF0b3JfbGVuZ3RoIChleHAsIGVuZHBv cywKLS0JCQkJCQkJJm9wbGVuLCAmYXJncyk7Ci0tICAgICAgZ2RiX2Fzc2VydCAob3BsZW4gPiAw KTsKLS0KLS0gICAgICBpID0gZW5kcG9zIC0gb3BsZW47Ci0tICAgICAgaWYgKGVsdHNbaV0ub3Bj b2RlID09IE9QX1ZBUl9WQUxVRSkKLS0JewotLQkgIGNvbnN0IHN0cnVjdCBibG9jayAqY29uc3Qg YmxvY2sgPSBlbHRzW2kgKyAxXS5ibG9jazsKLS0JICBjb25zdCBzdHJ1Y3Qgc3ltYm9sICpjb25z dCBzeW1ib2wgPSBlbHRzW2kgKyAyXS5zeW1ib2w7Ci0tCi0tCSAgaWYgKGJsb2NrICE9IE5VTEwK LS0JICAgICAgJiYgc29saWJfY29udGFpbnNfYWRkcmVzc19wIChzb2xpYiwKLS0JCQkJCSAgIGJs b2NrLT5zdGFydGFkZHIpKQotLQkgICAgcmV0dXJuIDE7Ci0tCi0tCSAgLyogU1lNQk9MX09CSl9T RUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KLS0JICBpZiAoU1lNQk9MX1NZTVRBQiAo c3ltYm9sKS0+b2JqZmlsZSA9PSBzb2xpYi0+b2JqZmlsZSkKLS0JICAgIHJldHVybiAxOwotLQl9 Ci0tICAgICAgZW5kcG9zIC09IG9wbGVuOwotLSAgICB9Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0t Ci0gLyogZGlzcGxheV9jaGFpbiBpdGVtcyBwb2ludCB0byBibG9ja3MgYW5kIGV4cHJlc3Npb25z LiAgU29tZSBleHByZXNzaW9ucyBpbgotICAgIHR1cm4gbWF5IHBvaW50IHRvIHN5bWJvbHMuCi0g ICAgQm90aCBzeW1ib2xzIGFuZCBibG9ja3MgYXJlIG9ic3RhY2tfYWxsb2MnZCBvbiBvYmpmaWxl X3N0YWNrLCBhbmQgYXJlCi1AQCAtMTkxNSwxOCArMTg5MCwyMCBAQCBkaXNwbGF5X3VzZXNfc29s aWJfcCAoY29uc3Qgc3RydWN0IGRpc3BsYXkgKmQsCi0gc3RhdGljIHZvaWQKLSBjbGVhcl9kYW5n bGluZ19kaXNwbGF5X2V4cHJlc3Npb25zIChzdHJ1Y3Qgc29fbGlzdCAqc29saWIpCi0gewotKyAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBzb2xpYi0+b2JqZmlsZTsKLSAgIHN0cnVjdCBkaXNw bGF5ICpkOwotLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBOVUxMOwotIAotLSAgZm9yIChk ID0gZGlzcGxheV9jaGFpbjsgZDsgZCA9IGQtPm5leHQpCi0tICAgIHsKLS0gICAgICBpZiAoZC0+ ZXhwICYmIGRpc3BsYXlfdXNlc19zb2xpYl9wIChkLCBzb2xpYikpCi0tCXsKLS0JICB4ZnJlZSAo ZC0+ZXhwKTsKLS0JICBkLT5leHAgPSBOVUxMOwotLQkgIGQtPmJsb2NrID0gTlVMTDsKLS0JfQot LSAgICB9Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBmb3Ig KGQgPSBkaXNwbGF5X2NoYWluOyBkICE9IE5VTEw7IGQgPSBkLT5uZXh0KQotKyAgICBpZiAoYmxv Y2tfb2JqZmlsZSAoZC0+YmxvY2spID09IG9iamZpbGUKLSsJfHwgKGQtPmV4cCAmJiBleHBfdXNl c19vYmpmaWxlIChkLT5leHAsIG9iamZpbGUpKSkKLSsgICAgICB7Ci0rCXhmcmVlIChkLT5leHAp OwotKwlkLT5leHAgPSBOVUxMOwotKwlkLT5ibG9jayA9IE5VTEw7Ci0rICAgICAgfQotIH0KLSAM Ci0gCi1AQCAtMjgxMSw0ICsyNzg4LDYgQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5h bWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCi0gCQkJICAgTlVMTCwK LSAJCQkgICBzaG93X3ByaW50X3N5bWJvbF9maWxlbmFtZSwKLSAJCQkgICAmc2V0cHJpbnRsaXN0 LCAmc2hvd3ByaW50bGlzdCk7Ci0rCi0rICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmlu dF90eXBlc19tYXJrX3VzZWQpOwotIH0KLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv RnJhbWVJdGVyYXRvci5weSBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5Ci1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTY1NDU0NgotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKLUBAIC0wLDAgKzEs MzMgQEAKLSsjIEl0ZXJhdG9yIG92ZXIgZnJhbWVzLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4 LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KLSsKLStjbGFzcyBGcmFtZUl0ZXJhdG9yOgotKyAgICAiIiJBbiBpdGVy YXRvciB0aGF0IGl0ZXJhdGVzIG92ZXIgZnJhbWVzLiIiIgotKwotKyAgICBkZWYgX19pbml0X18g KHNlbGYsIGZyYW1lKToKLSsgICAgICAgICJJbml0aWFsaXplIGEgRnJhbWVJdGVyYXRvci4gIEZS QU1FIGlzIHRoZSBzdGFydGluZyBmcmFtZS4iCi0rICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWUK LSsKLSsgICAgZGVmIF9faXRlcl9fIChzZWxmKToKLSsgICAgICAgIHJldHVybiBzZWxmCi0rCi0r ICAgIGRlZiBuZXh0IChzZWxmKToKLSsgICAgICAgIHJlc3VsdCA9IHNlbGYuZnJhbWUKLSsgICAg ICAgIGlmIHJlc3VsdCBpcyBOb25lOgotKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24K LSsgICAgICAgIHNlbGYuZnJhbWUgPSByZXN1bHQub2xkZXIgKCkKLSsgICAgICAgIHJldHVybiBy ZXN1bHQKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5IGIv Z2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLmI3OTBhNTQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24v bGliL2dkYi9GcmFtZVdyYXBwZXIucHkKLUBAIC0wLDAgKzEsMTEyIEBACi0rIyBXcmFwcGVyIEFQ SSBmb3IgZnJhbWVzLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStpbXBvcnQgZ2RiCi0rCi0rIyBGSVhNRTogYXJndWFibHkgYWxsIHRoaXMgc2hvdWxkIGJlIG9u IEZyYW1lIHNvbWVob3cuCi0rY2xhc3MgRnJhbWVXcmFwcGVyOgotKyAgICBkZWYgX19pbml0X18g KHNlbGYsIGZyYW1lKToKLSsgICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZTsKLSsKLSsgICAgZGVm IHdyaXRlX3N5bWJvbCAoc2VsZiwgc3RyZWFtLCBzeW0sIGJsb2NrKToKLSsgICAgICAgIGlmIGxl biAoc3ltLmxpbmthZ2VfbmFtZSk6Ci0rICAgICAgICAgICAgbnN5bSwgaXNfZmllbGRfb2ZfdGhp cyA9IGdkYi5sb29rdXBfc3ltYm9sIChzeW0ubGlua2FnZV9uYW1lLCBibG9jaykKLSsgICAgICAg ICAgICBpZiBuc3ltLmFkZHJfY2xhc3MgIT0gZ2RiLlNZTUJPTF9MT0NfUkVHSVNURVI6Ci0rICAg ICAgICAgICAgICAgIHN5bSA9IG5zeW0KLSsKLSsgICAgICAgIHN0cmVhbS53cml0ZSAoc3ltLnBy aW50X25hbWUgKyAiPSIpCi0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgdmFsID0gc2VsZi5y ZWFkX3ZhciAoc3ltKQotKyAgICAgICAgICAgIGlmIHZhbCAhPSBOb25lOgotKyAgICAgICAgICAg ICAgICB2YWwgPSBzdHIgKHZhbCkKLSsgICAgICAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8g aGF2ZSBhIG1vcmUgcHJlY2lzZSBleGNlcHRpb24gaGVyZS4KLSsgICAgICAgIGV4Y2VwdCBSdW50 aW1lRXJyb3IsIHRleHQ6Ci0rICAgICAgICAgICAgdmFsID0gdGV4dAotKyAgICAgICAgaWYgdmFs ID09IE5vbmU6Ci0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiPz8/IikKLSsgICAgICAgIGVs c2U6Ci0rICAgICAgICAgICAgc3RyZWFtLndyaXRlIChzdHIgKHZhbCkpCi0rCi0rICAgIGRlZiBw cmludF9mcmFtZV9sb2NhbHMgKHNlbGYsIHN0cmVhbSwgZnVuYyk6Ci0rICAgICAgICBpZiBub3Qg ZnVuYzoKLSsgICAgICAgICAgICByZXR1cm4KLSsKLSsgICAgICAgIGZpcnN0ID0gVHJ1ZQotKyAg ICAgICAgYmxvY2sgPSBmdW5jLnZhbHVlCi0rCi0rICAgICAgICBmb3Igc3ltIGluIGJsb2NrOgot KyAgICAgICAgICAgIGlmIHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAgICAgICAgICAgY29udGlu dWU7Ci0rCi0rICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBibG9j aykKLSsgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCdcbicpCi0rCi0rICAgIGRlZiBwcmludF9m cmFtZV9hcmdzIChzZWxmLCBzdHJlYW0sIGZ1bmMpOgotKyAgICAgICAgaWYgbm90IGZ1bmM6Ci0r ICAgICAgICAgICAgcmV0dXJuCi0rCi0rICAgICAgICBmaXJzdCA9IFRydWUKLSsgICAgICAgIGJs b2NrID0gZnVuYy52YWx1ZQotKwotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAg ICAgICBpZiBub3Qgc3ltLmlzX2FyZ3VtZW50OgotKyAgICAgICAgICAgICAgICBjb250aW51ZTsK LSsKLSsgICAgICAgICAgICBpZiBub3QgZmlyc3Q6Ci0rICAgICAgICAgICAgICAgIHN0cmVhbS53 cml0ZSAoIiwgIikKLSsKLSsgICAgICAgICAgICBzZWxmLndyaXRlX3N5bWJvbCAoc3RyZWFtLCBz eW0sIGJsb2NrKQotKyAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKLSsKLSsgICAgIyBGSVhNRTog dGhpcyBzaG91bGQgcHJvYmFibHkganVzdCBiZSBhIG1ldGhvZCBvbiBnZGIuRnJhbWUuCi0rICAg ICMgQnV0IHRoZW4gd2UgbmVlZCBzdHJlYW0gd3JhcHBlcnMuCi0rICAgIGRlZiBkZXNjcmliZSAo c2VsZiwgc3RyZWFtLCBmdWxsKToKLSsgICAgICAgIGlmIHNlbGYudHlwZSAoKSA9PSBnZGIuRFVN TVlfRlJBTUU6Ci0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiIDxmdW5jdGlvbiBjYWxsZWQg ZnJvbSBnZGI+XG4iKQotKyAgICAgICAgZWxpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLlNJR1RSQU1Q X0ZSQU1FOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiA8c2lnbmFsIGhhbmRsZXIgY2Fs bGVkPlxuIikKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgc2FsID0gc2VsZi5maW5kX3Nh bCAoKQotKyAgICAgICAgICAgIHBjID0gc2VsZi5wYyAoKQotKyAgICAgICAgICAgIG5hbWUgPSBz ZWxmLm5hbWUgKCkKLSsgICAgICAgICAgICBpZiBub3QgbmFtZToKLSsgICAgICAgICAgICAgICAg bmFtZSA9ICI/PyIKLSsgICAgICAgICAgICBpZiBwYyAhPSBzYWwucGMgb3Igbm90IHNhbC5zeW10 YWI6Ci0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiAweCUwOHggaW4iICUgcGMpCi0r ICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiICIgKyBuYW1lICsgIiAoIikKLSsKLSsgICAgICAg ICAgICBmdW5jID0gc2VsZi5mdW5jdGlvbiAoKQotKyAgICAgICAgICAgIHNlbGYucHJpbnRfZnJh bWVfYXJncyAoc3RyZWFtLCBmdW5jKQotKwotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiki KQotKwotKyAgICAgICAgICAgIGlmIHNhbC5zeW10YWIgYW5kIHNhbC5zeW10YWIuZmlsZW5hbWU6 Ci0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiBhdCAiICsgc2FsLnN5bXRhYi5maWxl bmFtZSkKLSsgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiOiIgKyBzdHIgKHNhbC5saW5l KSkKLSsKLSsgICAgICAgICAgICBpZiBub3Qgc2VsZi5uYW1lICgpIG9yIChub3Qgc2FsLnN5bXRh YiBvciBub3Qgc2FsLnN5bXRhYi5maWxlbmFtZSk6Ci0rICAgICAgICAgICAgICAgIGxpYiA9IGdk Yi5zb2xpYl9hZGRyZXNzIChwYykKLSsgICAgICAgICAgICAgICAgaWYgbGliOgotKyAgICAgICAg ICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiIGZyb20gIiArIGxpYikKLSsKLSsgICAgICAgICAg ICBzdHJlYW0ud3JpdGUgKCJcbiIpCi0rCi0rICAgICAgICAgICAgaWYgZnVsbDoKLSsgICAgICAg ICAgICAgICAgc2VsZi5wcmludF9mcmFtZV9sb2NhbHMgKHN0cmVhbSwgZnVuYykKLSsKLSsgICAg ZGVmIF9fZ2V0YXR0cl9fIChzZWxmLCBuYW1lKToKLSsgICAgICAgIHJldHVybiBnZXRhdHRyIChz ZWxmLmZyYW1lLCBuYW1lKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9fX2luaXRf Xy5weSBiL2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmIzNzVjNjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRo b24vbGliL2dkYi9fX2luaXRfXy5weQotQEAgLTAsMCArMSwxOSBAQAotKyMgU3RhcnR1cCBjb2Rl LgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIExvYWQgdGhlIHJlcXVp cmUgY29tbWFuZCBieSBkZWZhdWx0LgotK2ltcG9ydCBnZGIuY29tbWFuZC5yZXF1aXJlCi1kaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weSBiL2dkYi9weXRob24vbGli L2dkYi9iYWNrdHJhY2UucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4y YmFhYjVmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNl LnB5Ci1AQCAtMCwwICsxLDQyIEBACi0rIyBGaWx0ZXJpbmcgYmFja3RyYWNlLgotKwotKyMgQ29w eXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0raW1wb3J0IGl0ZXJ0b29s cwotKwotKyMgT3VyIG9ubHkgZXhwb3J0cy4KLStfX2FsbF9fID0gWydwdXNoX2ZyYW1lX2ZpbHRl cicsICdjcmVhdGVfZnJhbWVfZmlsdGVyJ10KLSsKLStmcmFtZV9maWx0ZXIgPSBOb25lCi0rCi0r ZGVmIHB1c2hfZnJhbWVfZmlsdGVyIChjb25zdHJ1Y3Rvcik6Ci0rICAgICIiIlJlZ2lzdGVyIGEg bmV3IGJhY2t0cmFjZSBmaWx0ZXIgY2xhc3Mgd2l0aCB0aGUgJ2JhY2t0cmFjZScgY29tbWFuZC4K LStUaGUgZmlsdGVyIHdpbGwgYmUgcGFzc2VkIGFuIGl0ZXJhdG9yIGFzIGFuIGFyZ3VtZW50LiAg VGhlIGl0ZXJhdG9yCi0rd2lsbCByZXR1cm4gZ2RiLkZyYW1lLWxpa2Ugb2JqZWN0cy4gIFRoZSBm aWx0ZXIgc2hvdWxkIGluIHR1cm4gYWN0IGFzCi0rYW4gaXRlcmF0b3IgcmV0dXJuaW5nIHN1Y2gg b2JqZWN0cy4iIiIKLSsgICAgZ2xvYmFsIGZyYW1lX2ZpbHRlcgotKyAgICBpZiBmcmFtZV9maWx0 ZXIgPT0gTm9uZToKLSsgICAgICAgIGZyYW1lX2ZpbHRlciA9IGNvbnN0cnVjdG9yCi0rICAgIGVs c2U6Ci0rICAgICAgICBmcmFtZV9maWx0ZXIgPSBsYW1iZGEgaXRlcmF0b3I6IGNvbnN0cnVjdG9y IChmcmFtZV9maWx0ZXIgKGl0ZXJhdG9yKSkKLSsKLStkZWYgY3JlYXRlX2ZyYW1lX2ZpbHRlciAo aXRlcik6Ci0rICAgIGdsb2JhbCBmcmFtZV9maWx0ZXIKLSsgICAgaWYgZnJhbWVfZmlsdGVyIGlz IE5vbmU6Ci0rICAgICAgICByZXR1cm4gaXRlcgotKyAgICByZXR1cm4gZnJhbWVfZmlsdGVyIChp dGVyKQotKwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL19faW5pdF9f LnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvX19pbml0X18ucHkKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9fX2luaXRfXy5weQotQEAgLTAsMCArMSBAQAotKwot ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2FsaWFzLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxpYXMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi45NmI2NjE4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9hbGlhcy5weQotQEAgLTAsMCArMSw1OSBAQAotKyMgQWxpYXMgY29tbWFuZC4K LSsKLSsjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotKwotK2Ns YXNzIEFsaWFzSW1wbGVtZW50YXRpb24gKGdkYi5Db21tYW5kKToKLSsgICAgZGVmIF9faW5pdF9f IChzZWxmLCBuYW1lLCByZWFsLCBkb2MpOgotKyAgICAgICAgIyBIYXZlIHRvIHNldCBfX2RvY19f IGJlZm9yZSB0aGUgc3VwZXIgaW5pdCBjYWxsLgotKyAgICAgICAgIyBJdCB3b3VsZCBiZSBuaWNl IGlmIGdkYidzIGhlbHAgbG9va2VkIHVwIF9fZG9jX18gZHluYW1pY2FsbHkuCi0rICAgICAgICBz ZWxmLl9fZG9jX18gPSBkb2MKLSsgICAgICAgICMgTm90ZTogbm8gZ29vZCB3YXkgdG8gY29tcGxl dGUgOigKLSsgICAgICAgIHN1cGVyIChBbGlhc0ltcGxlbWVudGF0aW9uLCBzZWxmKS5fX2luaXRf XyAobmFtZSwgZ2RiLkNPTU1BTkRfTk9ORSkKLSsgICAgICAgIHNlbGYucmVhbCA9IHJlYWwKLSsK LSsgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsgICAgICAgIGdkYi5leGVj dXRlIChzZWxmLnJlYWwgKyAnICcgKyBhcmcsIGZyb21fdHR5KQotKwotK2NsYXNzIEFsaWFzQ29t bWFuZCAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJBbGlhcyBvbmUgY29tbWFuZCB0byBhbm90aGVy LgotK0luIHRoZSBzaW1wbGVzdCBmb3JtLCB0aGUgZmlyc3Qgd29yZCBpcyB0aGUgbmFtZSBvZiB0 aGUgYWxpYXMsIGFuZAotK3RoZSByZW1haW5pbmcgd29yZHMgYXJlIHRoZSB0aGUgZXhwYW5zaW9u LgotK0FuICc9JyBieSBpdHNlbGYgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGEgbXVsdGktd29yZCBh bGlhczsgd29yZHMKLStiZWZvcmUgdGhlICc9JyBhcmUgdGhlIG5hbWUgb2YgdGhlIG5ldyBjb21t YW5kLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgIyBDb21wbGV0 aW9uIGlzIG5vdCBxdWl0ZSByaWdodCBoZXJlLgotKyAgICAgICAgc3VwZXIgKEFsaWFzQ29tbWFu ZCwgc2VsZikuX19pbml0X18gKCJhbGlhcyIsIGdkYi5DT01NQU5EX05PTkUsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX0NPTU1BTkQp Ci0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2Vs Zi5kb250X3JlcGVhdCAoKQotKyAgICAgICAgIyBXaXRob3V0IHNvbWUgZm9ybSBvZiBxdW90aW5n IHdlIGNhbid0IGFsaWFzIGEgbXVsdGktd29yZAotKyAgICAgICAgIyBjb21tYW5kIHRvIGFub3Ro ZXIgY29tbWFuZC4KLSsgICAgICAgIGFyZ3MgPSBhcmcuc3BsaXQoKQotKyAgICAgICAgdHJ5Ogot KyAgICAgICAgICAgIHN0YXJ0ID0gYXJncy5pbmRleCAoJz0nKQotKyAgICAgICAgICAgIGVuZCA9 IHN0YXJ0ICsgMQotKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0rICAgICAgICAgICAgc3Rh cnQgPSAxCi0rICAgICAgICAgICAgZW5kID0gMQotKyAgICAgICAgdGFyZ2V0ID0gIiAiLmpvaW4o YXJnc1tlbmQ6XSkKLSsgICAgICAgIEFsaWFzSW1wbGVtZW50YXRpb24gKCIgIi5qb2luIChhcmdz WzA6c3RhcnRdKSwgdGFyZ2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMg Y29tbWFuZCBpcyBhbiBhbGlhcyBmb3IgJyVzJy4iICUgdGFyZ2V0KQotKwotK0FsaWFzQ29tbWFu ZCgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5 IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWM5YTUyNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci1AQCAtMCwwICsxLDEwNiBAQAot KyMgTmV3IGJhY2t0cmFjZSBjb21tYW5kLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0raW1wb3J0IGdkYi5iYWNrdHJhY2UKLStpbXBvcnQg aXRlcnRvb2xzCi0rZnJvbSBnZGIuRnJhbWVJdGVyYXRvciBpbXBvcnQgRnJhbWVJdGVyYXRvcgot K2Zyb20gZ2RiLkZyYW1lV3JhcHBlciBpbXBvcnQgRnJhbWVXcmFwcGVyCi0raW1wb3J0IHN5cwot KwotK2NsYXNzIFJldmVyc2VCYWNrdHJhY2VQYXJhbWV0ZXIgKGdkYi5QYXJhbWV0ZXIpOgotKyAg ICAiIiJUaGUgbmV3LWJhY2t0cmFjZSBjb21tYW5kIGNhbiBzaG93IGJhY2t0cmFjZXMgaW4gJ3Jl dmVyc2UnIG9yZGVyLgotK1RoaXMgbWVhbnMgdGhhdCB0aGUgaW5uZXJtb3N0IGZyYW1lIHdpbGwg YmUgcHJpbnRlZCBsYXN0LgotK05vdGUgdGhhdCByZXZlcnNlIGJhY2t0cmFjZXMgYXJlIG1vcmUg ZXhwZW5zaXZlIHRvIGNvbXB1dGUuIiIiCi0rCi0rICAgIHNldF9kb2MgPSAiRW5hYmxlIG9yIGRp c2FibGUgcmV2ZXJzZSBiYWNrdHJhY2VzLiIKLSsgICAgc2hvd19kb2MgPSAiU2hvdyB3aGV0aGVy IGJhY2t0cmFjZXMgd2lsbCBiZSBwcmludGVkIGluIHJldmVyc2Ugb3JkZXIuIgotKwotKyAgICBk ZWYgX19pbml0X18oc2VsZik6Ci0rICAgICAgICBnZGIuUGFyYW1ldGVyLl9faW5pdF9fIChzZWxm LCAicmV2ZXJzZS1iYWNrdHJhY2UiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2RiLkNPTU1BTkRfU1RBQ0ssIGdkYi5QQVJBTV9CT09MRUFOKQotKyAgICAgICAgIyBEZWZhdWx0 IHRvIGNvbXBhdGliaWxpdHkgd2l0aCBnZGIuCi0rICAgICAgICBzZWxmLnZhbHVlID0gRmFsc2UK LSsKLStjbGFzcyBGaWx0ZXJpbmdCYWNrdHJhY2UgKGdkYi5Db21tYW5kKToKLSsgICAgIiIiUHJp bnQgYmFja3RyYWNlIG9mIGFsbCBzdGFjayBmcmFtZXMsIG9yIGlubmVybW9zdCBDT1VOVCBmcmFt ZXMuCi0rV2l0aCBhIG5lZ2F0aXZlIGFyZ3VtZW50LCBwcmludCBvdXRlcm1vc3QgLUNPVU5UIGZy YW1lcy4KLStVc2Ugb2YgdGhlICdmdWxsJyBxdWFsaWZpZXIgYWxzbyBwcmludHMgdGhlIHZhbHVl cyBvZiB0aGUgbG9jYWwgdmFyaWFibGVzLgotK1VzZSBvZiB0aGUgJ3JhdycgcXVhbGlmaWVyIGF2 b2lkcyBhbnkgZmlsdGVyaW5nIGJ5IGxvYWRhYmxlIG1vZHVsZXMuCi0rIiIiCi0rCi0rICAgIGRl ZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIG5vdCB3b3JraW5n IHF1aXRlIHdlbGwgZW5vdWdoIHRvIHJlcGxhY2UKLSsgICAgICAgICMgImJhY2t0cmFjZSIgeWV0 LgotKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18gKHNlbGYsICJuZXctYmFja3RyYWNlIiwg Z2RiLkNPTU1BTkRfU1RBQ0spCi0rICAgICAgICBzZWxmLnJldmVyc2UgPSBSZXZlcnNlQmFja3Ry YWNlUGFyYW1ldGVyKCkKLSsKLSsgICAgZGVmIHJldmVyc2VfaXRlciAoc2VsZiwgaXRlcik6Ci0r ICAgICAgICByZXN1bHQgPSBbXQotKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKLSsgICAgICAg ICAgICByZXN1bHQuYXBwZW5kIChpdGVtKQotKyAgICAgICAgcmVzdWx0LnJldmVyc2UoKQotKyAg ICAgICAgcmV0dXJuIHJlc3VsdAotKwotKyAgICBkZWYgZmluYWxfbiAoc2VsZiwgaXRlciwgeCk6 Ci0rICAgICAgICByZXN1bHQgPSBbXQotKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKLSsgICAg ICAgICAgICByZXN1bHQuYXBwZW5kIChpdGVtKQotKyAgICAgICAgcmV0dXJuIHJlc3VsdFt4Ol0K LSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBpID0g MAotKyAgICAgICAgY291bnQgPSAwCi0rICAgICAgICBmaWx0ZXIgPSBUcnVlCi0rICAgICAgICBm dWxsID0gRmFsc2UKLSsKLSsgICAgICAgIGZvciB3b3JkIGluIGFyZy5zcGxpdCAoIiAiKToKLSsg ICAgICAgICAgICBpZiB3b3JkID09ICcnOgotKyAgICAgICAgICAgICAgICBjb250aW51ZQotKyAg ICAgICAgICAgIGVsaWYgd29yZCA9PSAncmF3JzoKLSsgICAgICAgICAgICAgICAgZmlsdGVyID0g RmFsc2UKLSsgICAgICAgICAgICBlbGlmIHdvcmQgPT0gJ2Z1bGwnOgotKyAgICAgICAgICAgICAg ICBmdWxsID0gVHJ1ZQotKyAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgIGNvdW50 ID0gaW50ICh3b3JkKQotKwotKyAgICAgICAgIyBGSVhNRTogcHJvdmlkZSBvcHRpb24gdG8gc3Rh cnQgYXQgc2VsZWN0ZWQgZnJhbWUKLSsgICAgICAgICMgSG93ZXZlciwgc2hvdWxkIHN0aWxsIG51 bWJlciBhcyBpZiBzdGFydGluZyBmcm9tIG5ld2VzdAotKwluZXdlc3RfZnJhbWUgPSBnZGIuc2Vs ZWN0ZWRfdGhyZWFkICgpLm5ld2VzdF9mcmFtZSAoKQotKyAgICAgICAgaXRlciA9IGl0ZXJ0b29s cy5pbWFwIChGcmFtZVdyYXBwZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZy YW1lSXRlcmF0b3IgKG5ld2VzdF9mcmFtZSkpCi0rICAgICAgICBpZiBmaWx0ZXI6Ci0rICAgICAg ICAgICAgaXRlciA9IGdkYi5iYWNrdHJhY2UuY3JlYXRlX2ZyYW1lX2ZpbHRlciAoaXRlcikKLSsK LSsgICAgICAgICMgTm93IHdyYXAgaW4gYW4gaXRlcmF0b3IgdGhhdCBudW1iZXJzIHRoZSBmcmFt ZXMuCi0rICAgICAgICBpdGVyID0gaXRlcnRvb2xzLml6aXAgKGl0ZXJ0b29scy5jb3VudCAoMCks IGl0ZXIpCi0rCi0rICAgICAgICAjIFJldmVyc2UgaWYgdGhlIHVzZXIgd2FudGVkIHRoYXQuCi0r ICAgICAgICBpZiBzZWxmLnJldmVyc2UudmFsdWU6Ci0rICAgICAgICAgICAgaXRlciA9IHNlbGYu cmV2ZXJzZV9pdGVyIChpdGVyKQotKwotKyAgICAgICAgIyBFeHRyYWN0IHN1Yi1yYW5nZSB1c2Vy IHdhbnRzLgotKyAgICAgICAgaWYgY291bnQgPCAwOgotKyAgICAgICAgICAgIGl0ZXIgPSBzZWxm LmZpbmFsX24gKGl0ZXIsIGNvdW50KQotKyAgICAgICAgZWxpZiBjb3VudCA+IDA6Ci0rICAgICAg ICAgICAgaXRlciA9IGl0ZXJ0b29scy5pc2xpY2UgKGl0ZXIsIDAsIGNvdW50KQotKwotKyAgICAg ICAgZm9yIHBhaXIgaW4gaXRlcjoKLSsgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlICgiIyUt MmQiICUgcGFpclswXSkKLSsgICAgICAgICAgICBwYWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0 LCBmdWxsKQotKwotK0ZpbHRlcmluZ0JhY2t0cmFjZSgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weSBiL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi42ZmE0OGZmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29t bWFuZC9pZ25vcmVfZXJyb3JzLnB5Ci1AQCAtMCwwICsxLDM3IEBACi0rIyBJZ25vcmUgZXJyb3Jz IGluIHVzZXIgY29tbWFuZHMuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot K2ltcG9ydCBnZGIKLSsKLStjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29tbWFuZCk6 Ci0rICAgICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVycm9ycy4K LStPbmx5IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCi0rVGhpcyBpcyBwcmltYXJp bHkgdXNlZnVsIGluIHNjcmlwdHMuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0r ICAgICAgICBzdXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJpZ25v cmUtZXJyb3JzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkK LSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICB0cnk6 Ci0rICAgICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJvbV90dHkpCi0rICAgICAgICBleGNl cHQ6Ci0rICAgICAgICAgICAgcGFzcwotKwotK0lnbm9yZUVycm9yc0NvbW1hbmQgKCkKLWRpZmYg LS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkgYi9nZGIvcHl0aG9u L2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi4yMWEwYmYwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9wYWhvbGUucHkKLUBAIC0wLDAgKzEsNzUgQEAKLSsjIHBhaG9sZSBjb21tYW5kIGZv ciBnZGIKLSsKLSsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0 IGdkYgotKwotK2NsYXNzIFBhaG9sZSAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJTaG93IHRoZSBo b2xlcyBpbiBhIHN0cnVjdHVyZS4KLStUaGlzIGNvbW1hbmQgdGFrZXMgYSBzaW5nbGUgYXJndW1l bnQsIGEgdHlwZSBuYW1lLgotK0l0IHByaW50cyB0aGUgdHlwZSBhbmQgZGlzcGxheXMgY29tbWVu dHMgc2hvd2luZyB3aGVyZSBob2xlcyBhcmUuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2Vs Zik6Ci0rICAgICAgICBzdXBlciAoUGFob2xlLCBzZWxmKS5fX2luaXRfXyAoInBhaG9sZSIsIGdk Yi5DT01NQU5EX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2RiLkNPTVBMRVRFX1NZTUJPTCkKLSsKLSsgICAgZGVmIHBhaG9sZSAoc2VsZiwgdHlwZSwgbGV2 ZWwsIG5hbWUpOgotKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotKyAgICAgICAgICAgIG5hbWUg PSAnJwotKyAgICAgICAgdGFnID0gdHlwZS50YWcKLSsgICAgICAgIGlmIHRhZyBpcyBOb25lOgot KyAgICAgICAgICAgIHRhZyA9ICcnCi0rICAgICAgICBwcmludCAnJXNzdHJ1Y3QgJXMgeycgJSAo JyAnICogKDIgKiBsZXZlbCksIHRhZykKLSsgICAgICAgIGJpdHBvcyA9IDAKLSsgICAgICAgIGZv ciBmaWVsZCBpbiB0eXBlLmZpZWxkcyAoKToKLSsgICAgICAgICAgICAjIFNraXAgc3RhdGljIGZp ZWxkcy4KLSsgICAgICAgICAgICBpZiBub3QgaGFzYXR0ciAoZmllbGQsICgnYml0cG9zJykpOgot KyAgICAgICAgICAgICAgICBjb250aW51ZQotKwotKyAgICAgICAgICAgIGZ0eXBlID0gZmllbGQu dHlwZS5zdHJpcF90eXBlZGVmcygpCi0rCi0rICAgICAgICAgICAgaWYgYml0cG9zICE9IGZpZWxk LmJpdHBvczoKLSsgICAgICAgICAgICAgICAgaG9sZSA9IGZpZWxkLmJpdHBvcyAtIGJpdHBvcwot KyAgICAgICAgICAgICAgICBwcmludCAnICAvKiBYWFggJWQgYml0IGhvbGUsIHRyeSB0byBwYWNr ICovJyAlIGhvbGUKLSsgICAgICAgICAgICAgICAgYml0cG9zID0gZmllbGQuYml0cG9zCi0rICAg ICAgICAgICAgaWYgZmllbGQuYml0c2l6ZSA+IDA6Ci0rICAgICAgICAgICAgICAgIGZpZWxkc2l6 ZSA9IGZpZWxkLmJpdHNpemUKLSsgICAgICAgICAgICBlbHNlOgotKyAgICAgICAgICAgICAgICAj IFRBUkdFVF9DSEFSX0JJVCBoZXJlLi4uCi0rICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IDgg KiBmdHlwZS5zaXplb2YKLSsKLSsgICAgICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVAotKyAgICAg ICAgICAgIHByaW50ICcgLyogJTNkICUzZCAqLycgJSAoaW50IChiaXRwb3MgLyA4KSwgaW50IChm aWVsZHNpemUgLyA4KSksCi0rICAgICAgICAgICAgYml0cG9zID0gYml0cG9zICsgZmllbGRzaXpl Ci0rCi0rICAgICAgICAgICAgaWYgZnR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoK LSsgICAgICAgICAgICAgICAgc2VsZi5wYWhvbGUgKGZ0eXBlLCBsZXZlbCArIDEsIGZpZWxkLm5h bWUpCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgcHJpbnQgJyAnICogKDIg KyAyICogbGV2ZWwpLAotKyAgICAgICAgICAgICAgICBwcmludCAnJXMgJXMnICUgKHN0ciAoZnR5 cGUpLCBmaWVsZC5uYW1lKQotKwotKyAgICAgICAgcHJpbnQgJyAnICogKDE0ICsgMiAqIGxldmVs KSwKLSsgICAgICAgIHByaW50ICd9ICVzJyAlIG5hbWUKLSsKLSsgICAgZGVmIGludm9rZSAoc2Vs ZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICB0eXBlID0gZ2RiLmxvb2t1cF90eXBlIChhcmcp Ci0rICAgICAgICB0eXBlID0gdHlwZS5zdHJpcF90eXBlZGVmcyAoKQotKyAgICAgICAgaWYgdHlw ZS5jb2RlICE9IGdkYi5UWVBFX0NPREVfU1RSVUNUOgotKyAgICAgICAgICAgIHJhaXNlIFR5cGVF cnJvciwgJyVzIGlzIG5vdCBhIHN0cnVjdCB0eXBlJyAlIGFyZwotKyAgICAgICAgcHJpbnQgJyAn ICogMTQsCi0rICAgICAgICBzZWxmLnBhaG9sZSAodHlwZSwgMCwgJycpCi0rCi0rUGFob2xlKCkK LWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5IGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLjFmYmMxZTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkKLUBAIC0wLDAgKzEsNTcgQEAKLSsjIERlbWFuZC1s b2FkaW5nIGNvbW1hbmRzLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsj Ci0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K LSsKLStpbXBvcnQgZ2RiCi0raW1wb3J0IG9zCi0rCi0rY2xhc3MgUmVxdWlyZUNvbW1hbmQgKGdk Yi5Db21tYW5kKToKLSsgICAgIiIiUHJlZml4IGNvbW1hbmQgZm9yIHJlcXVpcmluZyBmZWF0dXJl cy4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChSZXF1 aXJlQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJyZXF1aXJlIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX1NVUFBPUlQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVf Tk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRy dWUpCi0rCi0rY2xhc3MgUmVxdWlyZVN1YmNvbW1hbmQgKGdkYi5Db21tYW5kKToKLSsgICAgIiIi RGVtYW5kLWxvYWQgYSBjb21tYW5kIGJ5IG5hbWUuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAo c2VsZiwgbmFtZSk6Ci0rICAgICAgICBzZWxmLl9fZG9jX18gPSAiRGVtYW5kLWxvYWQgYSAlcyBi eSBuYW1lLiIgJSBuYW1lCi0rICAgICAgICBzdXBlciAoUmVxdWlyZVN1YmNvbW1hbmQsIHNlbGYp Ll9faW5pdF9fICgicmVxdWlyZSAlcyIgJSBuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCkKLSsgICAgICAg IHNlbGYubmFtZSA9IG5hbWUKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0 eSk6Ci0rICAgICAgICBmb3IgY21kIGluIGFyZy5zcGxpdCgpOgotKyAgICAgICAgICAgIGV4ZWMg KCdpbXBvcnQgZ2RiLicgKyBzZWxmLm5hbWUgKyAnLicgKyBjbWQsIGdsb2JhbHMgKCkpCi0rCi0r ICAgIGRlZiBjb21wbGV0ZSAoc2VsZiwgdGV4dCwgd29yZCk6Ci0rICAgICAgICBkaXIgPSBnZGIu cHl0aG9uZGlyICsgJy9nZGIvJyArIHNlbGYubmFtZQotKyAgICAgICAgcmVzdWx0ID0gW10KLSsg ICAgICAgIGZvciBmaWxlIGluIG9zLmxpc3RkaXIoZGlyKToKLSsgICAgICAgICAgICBpZiBub3Qg ZmlsZS5zdGFydHN3aXRoICh3b3JkKSBvciBub3QgZmlsZS5lbmRzd2l0aCAoJy5weScpOgotKyAg ICAgICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgICAgIGZlYXR1cmUgPSBmaWxlWzA6LTNd Ci0rICAgICAgICAgICAgaWYgZmVhdHVyZSA9PSAncmVxdWlyZScgb3IgZmVhdHVyZSA9PSAnX19p bml0X18nOgotKyAgICAgICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgICAgIHJlc3VsdC5h cHBlbmQgKGZlYXR1cmUpCi0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0rCi0rUmVxdWlyZUNvbW1h bmQoKQotK1JlcXVpcmVTdWJjb21tYW5kKCJjb21tYW5kIikKLStSZXF1aXJlU3ViY29tbWFuZCgi ZnVuY3Rpb24iKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3NhdmVf YnJlYWtwb2ludHMucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9zYXZlX2JyZWFrcG9p bnRzLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjE0MzE4NwotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvc2F2ZV9icmVha3Bv aW50cy5weQotQEAgLTAsMCArMSw2NSBAQAotKyMgU2F2ZSBicmVha3BvaW50cy4KLSsKLSsjIENv cHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rZnJvbSBfX2Z1dHVyZV9fIGltcG9y dCB3aXRoX3N0YXRlbWVudAotK2ltcG9ydCBnZGIKLSsKLStjbGFzcyBTYXZlUHJlZml4Q29tbWFu ZCAoZ2RiLkNvbW1hbmQpOgotKyAgIlByZWZpeCBjb21tYW5kIGZvciBzYXZpbmcgdGhpbmdzLiIK LSsKLSsgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgIHN1cGVyIChTYXZlUHJlZml4Q29tbWFu ZCwgc2VsZikuX19pbml0X18gKCJzYXZlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsIFRydWUpCi0r Ci0rY2xhc3MgU2F2ZUJyZWFrcG9pbnRzQ29tbWFuZCAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJT YXZlIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRzIHRvIGEgZmlsZS4KLStUaGlzIGNvbW1hbmQgdGFr ZXMgYSBzaW5nbGUgYXJndW1lbnQsIGEgZmlsZSBuYW1lLgotK1RoZSBicmVha3BvaW50cyBjYW4g YmUgcmVzdG9yZWQgdXNpbmcgdGhlICdzb3VyY2UnIGNvbW1hbmQuIiIiCi0rCi0rICAgIGRlZiBf X2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAoU2F2ZUJyZWFrcG9pbnRzQ29tbWFuZCwg c2VsZikuX19pbml0X18gKCJzYXZlIGJyZWFrcG9pbnRzIiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2RiLkNPTVBMRVRFX0ZJTEVOQU1FKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZy b21fdHR5KToKLSsgICAgICAgIHNlbGYuZG9udF9yZXBlYXQgKCkKLSsgICAgICAgIGJwcyA9IGdk Yi5icmVha3BvaW50cyAoKQotKyAgICAgICAgaWYgYnBzIGlzIE5vbmU6Ci0rICAgICAgICAgICAg cmFpc2UgUnVudGltZUVycm9yLCAnTm8gYnJlYWtwb2ludHMgdG8gc2F2ZScKLSsgICAgICAgIHdp dGggb3BlbiAoYXJnLnN0cmlwICgpLCAndycpIGFzIGY6Ci0rICAgICAgICAgICAgZm9yIGJwIGlu IGJwczoKLSsgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgImJyZWFrIiwgYnAubG9jYXRpb24s Ci0rICAgICAgICAgICAgICAgIGlmIGJwLnRocmVhZCBpcyBub3QgTm9uZToKLSsgICAgICAgICAg ICAgICAgICAgIHByaW50ID4+IGYsICIgdGhyZWFkIiwgYnAudGhyZWFkLAotKyAgICAgICAgICAg ICAgICBpZiBicC5jb25kaXRpb24gaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgICAgICAgICBw cmludCA+PiBmLCAiIGlmIiwgYnAuY29uZGl0aW9uLAotKyAgICAgICAgICAgICAgICBwcmludCA+ PiBmCi0rICAgICAgICAgICAgICAgIGlmIG5vdCBicC5lbmFibGVkOgotKyAgICAgICAgICAgICAg ICAgICAgcHJpbnQgPj4gZiwgImRpc2FibGUgJGJwbnVtIgotKyAgICAgICAgICAgICAgICAjIE5v dGU6IHdlIGRvbid0IHNhdmUgdGhlIGlnbm9yZSBjb3VudDsgdGhlcmUgZG9lc24ndAotKyAgICAg ICAgICAgICAgICAjIHNlZW0gdG8gYmUgbXVjaCBwb2ludC4KLSsgICAgICAgICAgICAgICAgY29t bWFuZHMgPSBicC5jb21tYW5kcwotKyAgICAgICAgICAgICAgICBpZiBjb21tYW5kcyBpcyBub3Qg Tm9uZToKLSsgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICJjb21tYW5kcyIKLSsgICAg ICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IENPTU1BTkRTIGhhcyBhIHRyYWlsaW5nIG5ld2xp bmUuCi0rICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCBjb21tYW5kcywKLSsgICAgICAg ICAgICAgICAgICAgIHByaW50ID4+IGYsICJlbmQiCi0rICAgICAgICAgICAgICAgIHByaW50ID4+ IGYKLSsKLStTYXZlUHJlZml4Q29tbWFuZCAoKQotK1NhdmVCcmVha3BvaW50c0NvbW1hbmQgKCkK LWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLmZhZjU0ZWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL3VwdG8ucHkKLUBAIC0wLDAgKzEsMTI5IEBACi0rIyB1cHRvIGNvbW1hbmQuCi0r Ci0rIyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStpbXBvcnQg cmUKLStmcm9tIGdkYi5GcmFtZUl0ZXJhdG9yIGltcG9ydCBGcmFtZUl0ZXJhdG9yCi0rZnJvbSBn ZGIuRnJhbWVXcmFwcGVyIGltcG9ydCBGcmFtZVdyYXBwZXIKLSsKLStjbGFzcyBVcHRvUHJlZml4 IChnZGIuQ29tbWFuZCk6Ci0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBl ciAoVXB0b1ByZWZpeCwgc2VsZikuX19pbml0X18gKCJ1cHRvIiwgZ2RiLkNPTU1BTkRfU1RBQ0ss Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IFRy dWUpCi0rCi0rY2xhc3MgVXB0b0ltcGxlbWVudGF0aW9uIChnZGIuQ29tbWFuZCk6Ci0rICAgIGRl ZiBfX2luaXRfXyAoc2VsZiwgc3ViY29tbWFuZCk6Ci0rICAgICAgICBzdXBlciAoVXB0b0ltcGxl bWVudGF0aW9uLCBzZWxmKS5fX2luaXRfXyAoInVwdG8gIiArIHN1YmNvbW1hbmQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRf U1RBQ0spCi0rCi0rICAgIGRlZiBzZWFyY2ggKHNlbGYpOgotKyAgICAgICAgc2F2ZWQgPSBnZGIu c2VsZWN0ZWRfZnJhbWUgKCkKLSsgICAgICAgIGl0ZXIgPSBGcmFtZUl0ZXJhdG9yIChzYXZlZCkK LSsgICAgICAgIGZvdW5kID0gRmFsc2UKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBmb3Ig ZnJhbWUgaW4gaXRlcjoKLSsgICAgICAgICAgICAgICAgZnJhbWUuc2VsZWN0ICgpCi0rICAgICAg ICAgICAgICAgIHRyeToKLSsgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZmlsdGVyIChmcmFt ZSk6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlciA9IEZyYW1lV3JhcHBlciAoZnJh bWUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlci5kZXNjcmliZSAoc3lzLnN0ZG91 dCwgRmFsc2UpCi0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0rICAgICAgICAgICAg ICAgIGV4Y2VwdDoKLSsgICAgICAgICAgICAgICAgICAgIHBhc3MKLSsgICAgICAgIGV4Y2VwdDoK LSsgICAgICAgICAgICBwYXNzCi0rICAgICAgICBzYXZlZC5zZWxlY3QgKCkKLSsgICAgICAgIHJh aXNlIFJ1bnRpbWVFcnJvciwgJ0NvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgZnJhbWUnCi0rCi0r ICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5yeCA9 IHJlLmNvbXBpbGUgKGFyZykKLSsgICAgICAgIHNlbGYuc2VhcmNoICgpCi0rCi0rY2xhc3MgVXB0 b1N5bWJvbENvbW1hbmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6Ci0rICAgICIiIlNlbGVjdCBhbmQg cHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBzeW1ib2wuCi0rVGhlIGFy Z3VtZW50IGlzIGEgcmVndWxhciBleHByZXNzaW9uLiAgVGhpcyBjb21tYW5kIG1vdmVzIHVwIHRo ZQotK3N0YWNrLCBzdG9wcGluZyBhdCB0aGUgZmlyc3QgZnJhbWUgd2hvc2Ugc3ltYm9sIG1hdGNo ZXMgdGhlIHJlZ3VsYXIKLStleHByZXNzaW9uLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNl bGYpOgotKyAgICAgICAgc3VwZXIgKFVwdG9TeW1ib2xDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAo InN5bWJvbCIpCi0rCi0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIG5h bWUgPSBmcmFtZS5uYW1lICgpCi0rICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgotKyAgICAg ICAgICAgIGlmIHNlbGYucnguc2VhcmNoIChuYW1lKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAg ICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotK2NsYXNzIFVwdG9T b3VyY2VDb21tYW5kIChVcHRvSW1wbGVtZW50YXRpb24pOgotKyAgICAiIiJTZWxlY3QgYW5kIHBy aW50IHNvbWUgY2FsbGluZyBzdGFjayBmcmFtZSwgYmFzZWQgb24gc291cmNlIGZpbGUuCi0rVGhl IGFyZ3VtZW50IGlzIGEgcmVndWxhciBleHByZXNzaW9uLiAgVGhpcyBjb21tYW5kIG1vdmVzIHVw IHRoZQotK3N0YWNrLCBzdG9wcGluZyBhdCB0aGUgZmlyc3QgZnJhbWUgd2hvc2Ugc291cmNlIGZp bGUgbmFtZSBtYXRjaGVzIHRoZQotK3JlZ3VsYXIgZXhwcmVzc2lvbi4iIiIKLSsKLSsgICAgZGVm IF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChVcHRvU291cmNlQ29tbWFuZCwgc2Vs ZikuX19pbml0X18gKCJzb3VyY2UiKQotKwotKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6 Ci0rICAgICAgICBuYW1lID0gZnJhbWUuZmluZF9zYWwgKCkuc3ltdGFiLmZpbGVuYW1lCi0rICAg ICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIGlmIHNlbGYucnguc2VhcmNo IChuYW1lKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAg ICAgIHJldHVybiBGYWxzZQotKwotK2NsYXNzIFVwdG9PYmplY3RDb21tYW5kIChVcHRvSW1wbGVt ZW50YXRpb24pOgotKyAgICAiIiJTZWxlY3QgYW5kIHByaW50IHNvbWUgY2FsbGluZyBzdGFjayBm cmFtZSwgYmFzZWQgb24gb2JqZWN0IGZpbGUuCi0rVGhlIGFyZ3VtZW50IGlzIGEgcmVndWxhciBl eHByZXNzaW9uLiAgVGhpcyBjb21tYW5kIG1vdmVzIHVwIHRoZQotK3N0YWNrLCBzdG9wcGluZyBh dCB0aGUgZmlyc3QgZnJhbWUgd2hvc2Ugb2JqZWN0IGZpbGUgbmFtZSBtYXRjaGVzIHRoZQotK3Jl Z3VsYXIgZXhwcmVzc2lvbi4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAg ICAgIHN1cGVyIChVcHRvT2JqZWN0Q29tbWFuZCwgc2VsZikuX19pbml0X18gKCJvYmplY3QiKQot KwotKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6Ci0rICAgICAgICBuYW1lID0gZnJhbWUu ZmluZF9zYWwgKCkuc3ltdGFiLm9iamZpbGUuZmlsZW5hbWUKLSsgICAgICAgIGlmIG5hbWUgaXMg bm90IE5vbmU6Ci0rICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBO b25lOgotKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNl Ci0rCi0rY2xhc3MgVXB0b1doZXJlQ29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKLSsgICAg IiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIGV4 cHJlc3Npb24uCi0rVGhlIGFyZ3VtZW50IGlzIGFuIGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQg bW92ZXMgdXAgdGhlIHN0YWNrLAotK3BhcnNpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Np b24gaW4gZWFjaCBmcmFtZS4gIFRoaXMgc3RvcHMgd2hlbgotK3RoZSBleHByZXNzaW9uIGV2YWx1 YXRlcyB0byBhIG5vbi16ZXJvICh0cnVlKSB2YWx1ZS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9f IChzZWxmKToKLSsgICAgICAgIHN1cGVyIChVcHRvV2hlcmVDb21tYW5kLCBzZWxmKS5fX2luaXRf XyAoIndoZXJlIikKLSsKLSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAg dHJ5OgotKyAgICAgICAgICAgIGlmIGdkYi5wYXJzZV9hbmRfZXZhbCAoc2VsZi5leHByZXNzaW9u KToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIGV4Y2VwdDoKLSsgICAg ICAgICAgICBwYXNzCi0rICAgICAgICByZXR1cm4gRmFsc2UKLSsKLSsgICAgZGVmIGludm9rZSAo c2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBzZWxmLmV4cHJlc3Npb24gPSBhcmcKLSsg ICAgICAgIHNlbGYuc2VhcmNoICgpCi0rCi0rVXB0b1ByZWZpeCAoKQotK1VwdG9TeW1ib2xDb21t YW5kICgpCi0rVXB0b1NvdXJjZUNvbW1hbmQgKCkKLStVcHRvT2JqZWN0Q29tbWFuZCAoKQotK1Vw dG9XaGVyZUNvbW1hbmQgKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rp b24vX19pbml0X18ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vX19pbml0X18ucHkK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vX19pbml0X18ucHkKLUBAIC0w LDAgKzEgQEAKLSsKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2Fs bGVyX2lzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weQotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJiOWM1YzcKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKLUBAIC0wLDAg KzEsNTggQEAKLSsjIENhbGxlci1pcyBmdW5jdGlvbnMuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIw MDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgcmUKLSsKLStjbGFzcyBDYWxsZXJJ cyAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxpbmcgZnVu Y3Rpb24ncyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5nLgotK1RoaXMgZnVuY3Rpb24gdGFrZXMg b25lIG9yIHR3byBhcmd1bWVudHMuCi0rVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9m IGEgZnVuY3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKLStuYW1lIGlzIGVxdWFsIHRv IHRoaXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgotK1RoZSBvcHRpb25h bCBzZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFt ZXMKLSt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1 bHQgaXMgMS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVy IChDYWxsZXJJcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfaXMiKQotKwotKyAgICBkZWYgaW52 b2tlIChzZWxmLCBuYW1lLCBuZnJhbWVzID0gMSk6Ci0rICAgICAgICBmcmFtZSA9IGdkYi5zZWxl Y3RlZF9mcmFtZSAoKQotKyAgICAgICAgd2hpbGUgbmZyYW1lcyA+IDA6Ci0rICAgICAgICAgICAg ZnJhbWUgPSBmcmFtZS5vbGRlciAoKQotKyAgICAgICAgICAgIG5mcmFtZXMgPSBuZnJhbWVzIC0g MQotKyAgICAgICAgcmV0dXJuIGZyYW1lLm5hbWUgKCkgPT0gbmFtZS5zdHJpbmcgKCkKLSsKLStj bGFzcyBDYWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24pOgotKyAgICAiIiJSZXR1cm4gVHJ1ZSBp ZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmluZy4KLStUaGlzIGZ1 bmN0aW9uIHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRzLgotK1RoZSBmaXJzdCBhcmd1bWVudCBp cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncwotK25hbWUg aXMgbWF0Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZS4K LStUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVuY3Rpb24gaG93IG1h bnkgc3RhY2sgZnJhbWVzCi0rdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlv bi4gIFRoZSBkZWZhdWx0IGlzIDEuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0r ICAgICAgICBzdXBlciAoQ2FsbGVyTWF0Y2hlcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfbWF0 Y2hlcyIpCi0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKLSsg ICAgICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAgICB3aGlsZSBuZnJh bWVzID4gMDoKLSsgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCi0rICAgICAgICAg ICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAxCi0rICAgICAgICByZXR1cm4gcmUubWF0Y2ggKG5hbWUu c3RyaW5nICgpLCBmcmFtZS5uYW1lICgpKSBpcyBub3QgTm9uZQotKwotK0NhbGxlcklzKCkKLStD YWxsZXJNYXRjaGVzKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24v aW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kZWJiM2JiCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLUBAIC0wLDAg KzEsNDcgQEAKLSsjIEluLXNjb3BlIGZ1bmN0aW9uLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgSW5TY29wZSAoZ2RiLkZ1bmN0aW9u KToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZlbiB2YXJpYWJsZXMgb3IgbWFj cm9zIGFyZSBpbiBzY29wZS4KLStUYWtlcyBvbmUgYXJndW1lbnQgZm9yIGVhY2ggdmFyaWFibGUg bmFtZSB0byBiZSBjaGVja2VkLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKwlz dXBlciAoSW5TY29wZSwgc2VsZikuX19pbml0X18gKCJpbl9zY29wZSIpCi0rCi0rICAgIGRlZiBp bnZva2UgKHNlbGYsICp2YXJzKToKLSsgICAgICAgIGlmIGxlbiAodmFycykgPT0gMDoKLSsJICAg IHJhaXNlIFR5cGVFcnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIK LSsKLSsgICAgICAgICMgZ2RiLlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1 dCBpbiBhIG1hcC4KLSsJIyBDb252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KLSsJd2FudGVkID0gc2V0 IChtYXAgKGxhbWJkYSB4OiB4LnN0cmluZyAoKSwgdmFycykpCi0rCWZvdW5kID0gc2V0ICgpCi0r CWJsb2NrID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLmJsb2NrICgpCi0rCXdoaWxlIGJsb2NrOgot KwkgICAgZm9yIHN5bSBpbiBibG9jazoKLSsJCWlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlz X2NvbnN0YW50Ci0rCQkgICAgICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxl KToKLSsJCSAgICBpZiBzeW0ubmFtZSBpbiB3YW50ZWQ6Ci0rCQkJZm91bmQuYWRkIChzeW0ubmFt ZSkKLSsKLSsJICAgIGJsb2NrID0gYmxvY2suc3VwZXJibG9jawotKwotKwlyZXR1cm4gd2FudGVk ID09IGZvdW5kCi0rCi0rSW5TY29wZSAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktYmxv Y2suYyBiL2dkYi9weXRob24vcHktYmxvY2suYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjgwMTllOWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vcHktYmxv Y2suYwotQEAgLTAsMCArMSwyNjUgQEAKLSsvKiBQeXRob24gaW50ZXJmYWNlIHRvIGJsb2Nrcy4K LSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRl ICJibG9jay5oIgotKyNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCi0rI2luY2x1ZGUgInN5bXRhYi5o IgotKyNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0r ICBQeU9iamVjdF9IRUFECi0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotK30gYmxvY2tfb2JqZWN0 OwotKwotK3R5cGVkZWYgc3RydWN0IHsKLSsgIFB5T2JqZWN0X0hFQUQKLSsgIHN0cnVjdCBkaWN0 aW9uYXJ5ICpkaWN0OwotKyAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgIGludCBpbml0 aWFsaXplZF9wOwotK30gYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3Q7Ci0rCi0rc3RhdGljIFB5 VHlwZU9iamVjdCBibG9ja19zeW1zX2l0ZXJhdG9yX29iamVjdF90eXBlOwotKwotK3N0YXRpYyBQ eU9iamVjdCAqCi0rYmxweV9pdGVyIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBibG9ja19zeW1z X2l0ZXJhdG9yX29iamVjdCAqYmxvY2tfaXRlcl9vYmo7Ci0rCi0rICBibG9ja19pdGVyX29iaiA9 IFB5T2JqZWN0X05ldyAoYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3QsCi0rCQkJICAgICZibG9j a19zeW1zX2l0ZXJhdG9yX29iamVjdF90eXBlKTsKLSsgIGlmIChibG9ja19pdGVyX29iaiA9PSBO VUxMKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19NZW1vcnlFcnJvciwK LSsJCSAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIGl0ZXJhdG9yIG9iamVjdC4iKTsKLSsgICAg ICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgYmxvY2tfaXRlcl9vYmotPmRpY3QgPSBCTE9D S19ESUNUICgoKGJsb2NrX29iamVjdCAqKSBzZWxmKS0+YmxvY2spOwotKyAgYmxvY2tfaXRlcl9v YmotPmluaXRpYWxpemVkX3AgPSAwOwotKwotKyAgcmV0dXJuIChQeU9iamVjdCAqKSBibG9ja19p dGVyX29iajsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStibHB5X2dldF9zdGFydCAoUHlP YmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgYmxvY2tfb2JqZWN0ICpzZWxmX2Js b2NrID0gKGJsb2NrX29iamVjdCAqKSBzZWxmOwotKwotKyAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5z aWduZWRMb25nTG9uZyAoQkxPQ0tfU1RBUlQgKHNlbGZfYmxvY2stPmJsb2NrKSk7Ci0rfQotKwot K3N0YXRpYyBQeU9iamVjdCAqCi0rYmxweV9nZXRfZW5kIChQeU9iamVjdCAqc2VsZiwgdm9pZCAq Y2xvc3VyZSkKLSt7Ci0rICBibG9ja19vYmplY3QgKnNlbGZfYmxvY2sgPSAoYmxvY2tfb2JqZWN0 ICopIHNlbGY7Ci0rCi0rICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nIChCTE9D S19FTkQgKHNlbGZfYmxvY2stPmJsb2NrKSk7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0r YmxweV9nZXRfZnVuY3Rpb24gKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsg IGJsb2NrX29iamVjdCAqc2VsZl9ibG9jayA9IChibG9ja19vYmplY3QgKikgc2VsZjsKLSsgIHN0 cnVjdCBzeW1ib2wgKnN5bTsKLSsKLSsgIHN5bSA9IEJMT0NLX0ZVTkNUSU9OIChzZWxmX2Jsb2Nr LT5ibG9jayk7Ci0rICBpZiAoc3ltKQotKyAgICByZXR1cm4gc3ltYm9sX3RvX3N5bWJvbF9vYmpl Y3QgKHN5bSk7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0 ICoKLStibHB5X2dldF9zdXBlcmJsb2NrIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkK LSt7Ci0rICBibG9ja19vYmplY3QgKnNlbGZfYmxvY2sgPSAoYmxvY2tfb2JqZWN0ICopIHNlbGY7 Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotKwotKyAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NL IChzZWxmX2Jsb2NrLT5ibG9jayk7Ci0rICBpZiAoYmxvY2spCi0rICAgIHJldHVybiBibG9ja190 b19ibG9ja19vYmplY3QgKGJsb2NrKTsKLSsKLSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLStQ eU9iamVjdCAqCi0rYmxvY2tfdG9fYmxvY2tfb2JqZWN0IChzdHJ1Y3QgYmxvY2sgKmJsb2NrKQot K3sKLSsgIGJsb2NrX29iamVjdCAqYmxvY2tfb2JqOwotKwotKyAgYmxvY2tfb2JqID0gUHlPYmpl Y3RfTmV3IChibG9ja19vYmplY3QsICZibG9ja19vYmplY3RfdHlwZSk7Ci0rICBpZiAoYmxvY2tf b2JqID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9y eUVycm9yLCAiQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIG9iamVjdC4iKTsKLSsgICAgICByZXR1 cm4gTlVMTDsKLSsgICAgfQotKwotKyAgYmxvY2tfb2JqLT5ibG9jayA9IGJsb2NrOwotKwotKyAg cmV0dXJuIChQeU9iamVjdCAqKSBibG9ja19vYmo7Ci0rfQotKwotK3N0cnVjdCBibG9jayAqCi0r YmxvY2tfb2JqZWN0X3RvX2Jsb2NrIChQeU9iamVjdCAqb2JqKQotK3sKLSsgIGlmICghIFB5T2Jq ZWN0X1R5cGVDaGVjayAob2JqLCAmYmxvY2tfb2JqZWN0X3R5cGUpKQotKyAgICByZXR1cm4gTlVM TDsKLSsgIHJldHVybiAoKGJsb2NrX29iamVjdCAqKSBvYmopLT5ibG9jazsKLSt9Ci0rCi0rc3Rh dGljIFB5T2JqZWN0ICoKLStibHB5X2Jsb2NrX3N5bXNfaXRlciAoUHlPYmplY3QgKnNlbGYpCi0r ewotKyAgcmV0dXJuIHNlbGY7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYmxweV9ibG9j a19zeW1zX2l0ZXJuZXh0IChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBibG9ja19zeW1zX2l0ZXJh dG9yX29iamVjdCAqaXRlcl9vYmogPSAoYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3QgKikgc2Vs ZjsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsKLSsgIGlmICghaXRlcl9vYmotPmluaXRpYWxp emVkX3ApCi0rICAgIHsKLSsgICAgICBzeW0gPSBkaWN0X2l0ZXJhdG9yX2ZpcnN0IChpdGVyX29i ai0+ZGljdCwgICYoaXRlcl9vYmotPml0ZXIpKTsKLSsgICAgICBpdGVyX29iai0+aW5pdGlhbGl6 ZWRfcCA9IDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgc3ltID0gZGljdF9pdGVyYXRvcl9uZXh0 ICgmKGl0ZXJfb2JqLT5pdGVyKSk7Ci0rCi0rICByZXR1cm4gKHN5bSA9PSBOVUxMKT8gTlVMTCA6 IHN5bWJvbF90b19zeW1ib2xfb2JqZWN0IChzeW0pOwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIGlu bmVybW9zdCBsZXhpY2FsIGJsb2NrIGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCBwYyB2YWx1ZSwK LSsgICBvciAwIGlmIHRoZXJlIGlzIG5vbmUuICAqLwotKwotK1B5T2JqZWN0ICoKLStnZGJweV9i bG9ja19mb3JfcGMgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICB1bnNp Z25lZCBQWV9MT05HX0xPTkcgcGM7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotKyAgUHlPYmpl Y3QgKnN5bV9vYmo7Ci0rCi0rICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJLIiwgJnBj KSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBibG9jayA9IGJsb2NrX2Zvcl9wYyAocGMpOwot KyAgaWYgKGJsb2NrKQotKyAgICByZXR1cm4gYmxvY2tfdG9fYmxvY2tfb2JqZWN0IChibG9jayk7 Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rdm9pZAotK2dkYnB5X2luaXRpYWxpemVf YmxvY2tzICh2b2lkKQotK3sKLSsgIGJsb2NrX29iamVjdF90eXBlLnRwX25ldyA9IFB5VHlwZV9H ZW5lcmljTmV3OwotKyAgaWYgKFB5VHlwZV9SZWFkeSAoJmJsb2NrX29iamVjdF90eXBlKSA8IDAp Ci0rICAgIHJldHVybjsKLSsKLSsgIGJsb2NrX3N5bXNfaXRlcmF0b3Jfb2JqZWN0X3R5cGUudHBf bmV3ID0gUHlUeXBlX0dlbmVyaWNOZXc7Ci0rICBpZiAoUHlUeXBlX1JlYWR5ICgmYmxvY2tfc3lt c19pdGVyYXRvcl9vYmplY3RfdHlwZSkgPCAwKQotKyAgICByZXR1cm47Ci0rCi0rICBQeV9JTkNS RUYgKCZibG9ja19vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1 bGUsICJCbG9jayIsIChQeU9iamVjdCAqKSAmYmxvY2tfb2JqZWN0X3R5cGUpOwotKwotKyAgUHlf SU5DUkVGICgmYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9B ZGRPYmplY3QgKGdkYl9tb2R1bGUsICJCbG9ja0l0ZXJhdG9yIiwKLSsJCSAgICAgIChQeU9iamVj dCAqKSAmYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3RfdHlwZSk7Ci0rfQotKwotKwwKLSsKLStz dGF0aWMgUHlHZXRTZXREZWYgYmxvY2tfb2JqZWN0X2dldHNldFtdID0gewotKyAgeyAic3RhcnQi LCBibHB5X2dldF9zdGFydCwgTlVMTCwgIlN0YXJ0IGFkZHJlc3Mgb2YgdGhlIGJsb2NrLiIsIE5V TEwgfSwKLSsgIHsgImVuZCIsIGJscHlfZ2V0X2VuZCwgTlVMTCwgIkVuZCBhZGRyZXNzIG9mIHRo ZSBibG9jay4iLCBOVUxMIH0sCi0rICB7ICJmdW5jdGlvbiIsIGJscHlfZ2V0X2Z1bmN0aW9uLCBO VUxMLAotKyAgICAiU3ltYm9sIHRoYXQgbmFtZXMgdGhlIGJsb2NrLCBvciBOb25lLiIsIE5VTEwg fSwKLSsgIHsgInN1cGVyYmxvY2siLCBibHB5X2dldF9zdXBlcmJsb2NrLCBOVUxMLAotKyAgICAi QmxvY2sgY29udGFpbmluZyB0aGUgYmxvY2ssIG9yIE5vbmUuIiwgTlVMTCB9LAotKyAgeyBOVUxM IH0gIC8qIFNlbnRpbmVsICovCi0rfTsKLSsKLStQeVR5cGVPYmplY3QgYmxvY2tfb2JqZWN0X3R5 cGUgPSB7Ci0rICBQeU9iamVjdF9IRUFEX0lOSVQgKE5VTEwpCi0rICAwLAkJCQkgIC8qb2Jfc2l6 ZSovCi0rICAiZ2RiLkJsb2NrIiwJCQkgIC8qdHBfbmFtZSovCi0rICBzaXplb2YgKGJsb2NrX29i amVjdCksCSAgLyp0cF9iYXNpY3NpemUqLwotKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXplKi8KLSsg IDAsCQkJCSAgLyp0cF9kZWFsbG9jKi8KLSsgIDAsCQkJCSAgLyp0cF9wcmludCovCi0rICAwLAkJ CQkgIC8qdHBfZ2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfc2V0YXR0ciovCi0rICAwLAkJCQkg IC8qdHBfY29tcGFyZSovCi0rICAwLAkJCQkgIC8qdHBfcmVwciovCi0rICAwLAkJCQkgIC8qdHBf YXNfbnVtYmVyKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5jZSovCi0rICAwLAkJCQkgIC8q dHBfYXNfbWFwcGluZyovCi0rICAwLAkJCQkgIC8qdHBfaGFzaCAqLwotKyAgMCwJCQkJICAvKnRw X2NhbGwqLwotKyAgMCwJCQkJICAvKnRwX3N0ciovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8q LwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIq LwotKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0lURVIsICAvKnRwX2Zs YWdzKi8KLSsgICJHREIgYmxvY2sgb2JqZWN0IiwJCSAgLyogdHBfZG9jICovCi0rICAwLAkJCQkg IC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0rICAwLAkJCQkg IC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICov Ci0rICBibHB5X2l0ZXIsCQkJICAvKiB0cF9pdGVyICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXJu ZXh0ICovCi0rICAwLAkJCQkgIC8qIHRwX21ldGhvZHMgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWVt YmVycyAqLwotKyAgYmxvY2tfb2JqZWN0X2dldHNldAkJICAvKiB0cF9nZXRzZXQgKi8KLSt9Owot KwotK3N0YXRpYyBQeVR5cGVPYmplY3QgYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3RfdHlwZSA9 IHsKLSsgIFB5T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXplKi8K LSsgICJnZGIuQmxvY2tJdGVyYXRvciIsCQkgIC8qdHBfbmFtZSovCi0rICBzaXplb2YgKGJsb2Nr X3N5bXNfaXRlcmF0b3Jfb2JqZWN0KSwJICAgICAgLyp0cF9iYXNpY3NpemUqLwotKyAgMCwJCQkJ ICAvKnRwX2l0ZW1zaXplKi8KLSsgIDAsCQkJCSAgLyp0cF9kZWFsbG9jKi8KLSsgIDAsCQkJCSAg Lyp0cF9wcmludCovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBf c2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCi0rICAwLAkJCQkgIC8qdHBfcmVw ciovCi0rICAwLAkJCQkgIC8qdHBfYXNfbnVtYmVyKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19zZXF1 ZW5jZSovCi0rICAwLAkJCQkgIC8qdHBfYXNfbWFwcGluZyovCi0rICAwLAkJCQkgIC8qdHBfaGFz aCAqLwotKyAgMCwJCQkJICAvKnRwX2NhbGwqLwotKyAgMCwJCQkJICAvKnRwX3N0ciovCi0rICAw LAkJCQkgIC8qdHBfZ2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHJvKi8KLSsgIDAs CQkJCSAgLyp0cF9hc19idWZmZXIqLwotKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFH U19IQVZFX0lURVIsICAvKnRwX2ZsYWdzKi8KLSsgICJHREIgYmxvY2sgc3ltcyBpdGVyYXRvciBv YmplY3QiLAkgICAgICAvKiB0cF9kb2MgKi8KLSsgIDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8K LSsgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUg Ki8KLSsgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSsgIGJscHlfYmxvY2tfc3lt c19pdGVyLAkJICAvKiB0cF9pdGVyICovCi0rICBibHB5X2Jsb2NrX3N5bXNfaXRlcm5leHQsCSAg LyogdHBfaXRlcm5leHQgKi8KLSsgIDAJCQkJICAvKiB0cF9tZXRob2RzICovCi0rfTsKLWRpZmYg LS1naXQgYS9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBiL2dkYi9weXRob24vcHktYnJlYWtw b2ludC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzgzMzg1ZQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMKLUBAIC0wLDAgKzEs NjY2IEBACi0rLyogUHl0aG9uIGludGVyZmFjZSB0byBicmVha3BvaW50cwotKwotKyAgIENvcHly aWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgInZhbHVl LmgiCi0rI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAicHl0aG9uLWludGVybmFs LmgiCi0rI2luY2x1ZGUgImNoYXJzZXQuaCIKLSsjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgotKyNp bmNsdWRlICJnZGJjbWQuaCIKLSsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0rI2luY2x1ZGUgIm9i c2VydmVyLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAibGFuZ3VhZ2Uu aCIKLSsKLSsvKiBGcm9tIGJyZWFrcG9pbnQuYy4gICovCi0rZXh0ZXJuIHN0cnVjdCBicmVha3Bv aW50ICpicmVha3BvaW50X2NoYWluOwotKwotKwotK3R5cGVkZWYgc3RydWN0IGJyZWFrcG9pbnRf b2JqZWN0IGJyZWFrcG9pbnRfb2JqZWN0OwotKwotK3N0YXRpYyBQeVR5cGVPYmplY3QgYnJlYWtw b2ludF9vYmplY3RfdHlwZTsKLSsKLSsvKiBBIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB2ZWN0b3Ig b2YgYnJlYWtwb2ludCBvYmplY3RzLiAgRWFjaAotKyAgIGJyZWFrcG9pbnQgaGFzIGEgbnVtYmVy LiAgQSBicmVha3BvaW50IGlzIHZhbGlkIGlmIGl0cyBzbG90IGluIHRoaXMKLSsgICB2ZWN0b3Ig aXMgbm9uLW51bGwuICBXaGVuIGEgYnJlYWtwb2ludCBpcyBkZWxldGVkLCB3ZSBkcm9wIG91cgot KyAgIHJlZmVyZW5jZSB0byBpdCBhbmQgemVybyBpdHMgc2xvdDsgdGhpcyBpcyBob3cgd2UgbGV0 IHRoZSBQeXRob24KLSsgICBvYmplY3QgaGF2ZSBhIGxpZmV0aW1lIHdoaWNoIGlzIGluZGVwZW5k ZW50IGZyb20gdGhhdCBvZiB0aGUgZ2RiCi0rICAgYnJlYWtwb2ludC4gICovCi0rc3RhdGljIGJy ZWFrcG9pbnRfb2JqZWN0ICoqYnBweV9icmVha3BvaW50czsKLSsKLSsvKiBOdW1iZXIgb2Ygc2xv dHMgaW4gYnBweV9icmVha3BvaW50cy4gICovCi0rc3RhdGljIGludCBicHB5X3Nsb3RzOwotKwot Ky8qIE51bWJlciBvZiBsaXZlIGJyZWFrcG9pbnRzLiAgKi8KLStzdGF0aWMgaW50IGJwcHlfbGl2 ZTsKLSsKLSsvKiBWYXJpYWJsZXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIGJldHdlZW4gdGhl IEJyZWFrcG9pbnQKLSsgICBjb25zdHJ1Y3RvciBhbmQgdGhlIGJyZWFrcG9pbnQtY3JlYXRlZCBo b29rIGZ1bmN0aW9uLiAgKi8KLStzdGF0aWMgYnJlYWtwb2ludF9vYmplY3QgKmJwcHlfcGVuZGlu Z19vYmplY3Q7Ci0rCi0rc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0Ci0rewotKyAgUHlPYmplY3Rf SEVBRAotKwotKyAgLyogVGhlIGJyZWFrcG9pbnQgbnVtYmVyIGFjY29yZGluZyB0byBnZGIuICAq LwotKyAgaW50IG51bWJlcjsKLSsKLSsgIC8qIFRoZSBnZGIgYnJlYWtwb2ludCBvYmplY3QsIG9y IE5VTEwgaWYgdGhlIGJyZWFrcG9pbnQgaGFzIGJlZW4KLSsgICAgIGRlbGV0ZWQuICAqLwotKyAg c3RydWN0IGJyZWFrcG9pbnQgKmJwOwotK307Ci0rCi0rLyogRXZhbHVhdGUgdG8gdHJ1ZSBpZiB0 aGUgYnJlYWtwb2ludCBOVU0gaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rI2RlZmlu ZSBCUFBZX1ZBTElEX1AoTnVtKQkJCVwKLSsgICAgKChOdW0pID49IDAJCQkJCVwKLSsgICAgICYm IChOdW0pIDwgYnBweV9zbG90cwkJCVwKLSsgICAgICYmIGJwcHlfYnJlYWtwb2ludHNbTnVtXSAh PSBOVUxMKQotKwotKy8qIFJlcXVpcmUgdGhhdCBCUkVBS1BPSU5UIGJlIGEgdmFsaWQgYnJlYWtw b2ludCBJRDsgdGhyb3cgYSBQeXRob24KLSsgICBleGNlcHRpb24gaWYgaXQgaXMgaW52YWxpZC4g ICovCi0rI2RlZmluZSBCUFBZX1JFUVVJUkVfVkFMSUQoQnJlYWtwb2ludCkJCQkJCVwKLSsgICAg ZG8gewkJCQkJCQkJXAotKyAgICAgIGlmICghIEJQUFlfVkFMSURfUCAoKEJyZWFrcG9pbnQpLT5u dW1iZXIpKQkJCVwKLSsJcmV0dXJuIFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAi YnJlYWtwb2ludCAlZCBpcyBpbnZhbGlkIiwgXAotKwkJCSAgICAgKEJyZWFrcG9pbnQpLT5udW1i ZXIpOwkJCVwKLSsgICAgfSB3aGlsZSAoMCkKLSsKLSsvKiBSZXF1aXJlIHRoYXQgQlJFQUtQT0lO VCBiZSBhIHZhbGlkIGJyZWFrcG9pbnQgSUQ7IHRocm93IGEgUHl0aG9uCi0rICAgZXhjZXB0aW9u IGlmIGl0IGlzIGludmFsaWQuICBUaGlzIG1hY3JvIGlzIGZvciB1c2UgaW4gc2V0dGVyIGZ1bmN0 aW9ucy4gICovCi0rI2RlZmluZSBCUFBZX1NFVF9SRVFVSVJFX1ZBTElEKEJyZWFrcG9pbnQpCQkJ CVwKLSsgICAgZG8gewkJCQkJCQkJXAotKyAgICAgIGlmICghIEJQUFlfVkFMSURfUCAoKEJyZWFr cG9pbnQpLT5udW1iZXIpKQkJCVwKLSsgICAgICAgIHsJCQkJCQkJCVwKLSsJICBQeUVycl9Gb3Jt YXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImJyZWFrcG9pbnQgJWQgaXMgaW52YWxpZCIsIFwKLSsJ CQkoQnJlYWtwb2ludCktPm51bWJlcik7CQkJCVwKLSsJICByZXR1cm4gLTE7CQkJCQkJCVwKLSsJ fQkJCQkJCQkJXAotKyAgICB9IHdoaWxlICgwKQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB3aGlj aCBjaGVja3MgdGhlIHZhbGlkaXR5IG9mIGEgYnJlYWtwb2ludCBvYmplY3QuICAqLwotK3N0YXRp YyBQeU9iamVjdCAqCi0rYnBweV9pc192YWxpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICph cmdzKQotK3sKLSsgIGlmICgoKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGYpLT5icCkKLSsgICAg UHlfUkVUVVJOX1RSVUU7Ci0rICBQeV9SRVRVUk5fRkFMU0U7Ci0rfQotKwotKy8qIFB5dGhvbiBm dW5jdGlvbiB0byB0ZXN0IHdoZXRoZXIgb3Igbm90IHRoZSBicmVha3BvaW50IGlzIGVuYWJsZWQu ICAqLwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYnBweV9nZXRfZW5hYmxlZCAoUHlPYmplY3QgKnNl bGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgaWYgKCEgKChicmVha3BvaW50X29iamVjdCAqKSBz ZWxmKS0+YnApCi0rICAgIFB5X1JFVFVSTl9GQUxTRTsKLSsgIC8qIE5vdCBjbGVhciB3aGF0IHdl IHJlYWxseSB3YW50IGhlcmUuICAqLwotKyAgaWYgKCgoYnJlYWtwb2ludF9vYmplY3QgKikgc2Vs ZiktPmJwLT5lbmFibGVfc3RhdGUgPT0gYnBfZW5hYmxlZCkKLSsgICAgUHlfUkVUVVJOX1RSVUU7 Ci0rICBQeV9SRVRVUk5fRkFMU0U7Ci0rfQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB0byB0ZXN0 IHdoZXRoZXIgb3Igbm90IHRoZSBicmVha3BvaW50IGlzIHNpbGVudC4gICovCi0rc3RhdGljIFB5 T2JqZWN0ICoKLSticHB5X2dldF9zaWxlbnQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJl KQotK3sKLSsgIEJQUFlfUkVRVUlSRV9WQUxJRCAoKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGYp OwotKyAgaWYgKCgoYnJlYWtwb2ludF9vYmplY3QgKikgc2VsZiktPmJwLT5zaWxlbnQpCi0rICAg IFB5X1JFVFVSTl9UUlVFOwotKyAgUHlfUkVUVVJOX0ZBTFNFOwotK30KLSsKLSsvKiBQeXRob24g ZnVuY3Rpb24gdG8gc2V0IHRoZSBlbmFibGVkIHN0YXRlIG9mIGEgYnJlYWtwb2ludC4gICovCi0r c3RhdGljIGludAotK2JwcHlfc2V0X2VuYWJsZWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq bmV3dmFsdWUsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgYnJlYWtwb2ludF9vYmplY3QgKnNlbGZf YnAgPSAoYnJlYWtwb2ludF9vYmplY3QgKikgc2VsZjsKLSsgIGludCBjbXA7Ci0rCi0rICBCUFBZ X1NFVF9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKLSsKLSsgIGlmIChuZXd2YWx1ZSA9PSBOVUxM KQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsICJjYW5u b3QgZGVsZXRlIGBlbmFibGVkJyBhdHRyaWJ1dGUiKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAg IH0KLSsgIGVsc2UgaWYgKCEgUHlCb29sX0NoZWNrIChuZXd2YWx1ZSkpCi0rICAgIHsKLSsgICAg ICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1R5cGVFcnJvciwKLSsJCSAgICAgICAidGhlIHZhbHVl IG9mIGBlbmFibGVkJyBtdXN0IGJlIGEgYm9vbGVhbiIpOwotKyAgICAgIHJldHVybiAtMTsKLSsg ICAgfQotKwotKyAgY21wID0gUHlPYmplY3RfSXNUcnVlIChuZXd2YWx1ZSk7Ci0rICBpZiAoY21w IDwgMCkKLSsgICAgcmV0dXJuIC0xOwotKyAgZWxzZSBpZiAoY21wID09IDEpCi0rICAgIGVuYWJs ZV9icmVha3BvaW50IChzZWxmX2JwLT5icCk7Ci0rICBlbHNlIAotKyAgICBkaXNhYmxlX2JyZWFr cG9pbnQgKHNlbGZfYnAtPmJwKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBQeXRob24gZnVu Y3Rpb24gdG8gc2V0IHRoZSAnc2lsZW50JyBzdGF0ZSBvZiBhIGJyZWFrcG9pbnQuICAqLwotK3N0 YXRpYyBpbnQKLSticHB5X3NldF9zaWxlbnQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmV3 dmFsdWUsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgYnJlYWtwb2ludF9vYmplY3QgKnNlbGZfYnAg PSAoYnJlYWtwb2ludF9vYmplY3QgKikgc2VsZjsKLSsgIGludCBjbXA7Ci0rCi0rICBCUFBZX1NF VF9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKLSsKLSsgIGlmIChuZXd2YWx1ZSA9PSBOVUxMKQot KyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3Qg ZGVsZXRlIGBzaWxlbnQnIGF0dHJpYnV0ZSIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQot KyAgZWxzZSBpZiAoISBQeUJvb2xfQ2hlY2sgKG5ld3ZhbHVlKSkKLSsgICAgewotKyAgICAgIFB5 RXJyX1NldFN0cmluZyAoUHlFeGNfVHlwZUVycm9yLAotKwkJICAgICAgICJ0aGUgdmFsdWUgb2Yg YHNpbGVudCcgbXVzdCBiZSBhIGJvb2xlYW4iKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0K LSsKLSsgIGNtcCA9IFB5T2JqZWN0X0lzVHJ1ZSAobmV3dmFsdWUpOwotKyAgaWYgKGNtcCA8IDAp Ci0rICAgIHJldHVybiAtMTsKLSsgIGVsc2UKLSsgICAgc2VsZl9icC0+YnAtPnNpbGVudCA9IGNt cDsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBQeXRob24gZnVuY3Rpb24gdG8gc2V0IHRo ZSB0aHJlYWQgb2YgYSBicmVha3BvaW50LiAgKi8KLStzdGF0aWMgaW50Ci0rYnBweV9zZXRfdGhy ZWFkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5ld3ZhbHVlLCB2b2lkICpjbG9zdXJlKQot K3sKLSsgIGJyZWFrcG9pbnRfb2JqZWN0ICpzZWxmX2JwID0gKGJyZWFrcG9pbnRfb2JqZWN0ICop IHNlbGY7Ci0rICBpbnQgaWQ7Ci0rCi0rICBCUFBZX1NFVF9SRVFVSVJFX1ZBTElEIChzZWxmX2Jw KTsKLSsKLSsgIGlmIChuZXd2YWx1ZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0 U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIGB0aHJlYWQnIGF0dHJpYnV0 ZSIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKyAgZWxzZSBpZiAoUHlJbnRfQ2hlY2sg KG5ld3ZhbHVlKSkKLSsgICAgewotKyAgICAgIGlkID0gKGludCkgUHlJbnRfQXNMb25nIChuZXd2 YWx1ZSk7Ci0rICAgICAgaWYgKCEgdmFsaWRfdGhyZWFkX2lkIChpZCkpCi0rCXsKLSsJICBQeUVy cl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgdGhyZWFkIGlkIik7Ci0r CSAgcmV0dXJuIC0xOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKG5ld3ZhbHVlID09IFB5X05v bmUpCi0rICAgIGlkID0gLTE7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJp bmcgKFB5RXhjX1R5cGVFcnJvciwKLSsJCSAgICAgICAidGhlIHZhbHVlIG9mIGB0aHJlYWQnIG11 c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0r Ci0rICBzZWxmX2JwLT5icC0+dGhyZWFkID0gaWQ7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0r LyogUHl0aG9uIGZ1bmN0aW9uIHRvIHNldCB0aGUgaWdub3JlIGNvdW50IG9mIGEgYnJlYWtwb2lu dC4gICovCi0rc3RhdGljIGludAotK2JwcHlfc2V0X2lnbm9yZV9jb3VudCAoUHlPYmplY3QgKnNl bGYsIFB5T2JqZWN0ICpuZXd2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBicmVha3BvaW50 X29iamVjdCAqc2VsZl9icCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxmOwotKyAgbG9uZyB2 YWx1ZTsKLSsKLSsgIEJQUFlfU0VUX1JFUVVJUkVfVkFMSUQgKHNlbGZfYnApOwotKwotKyAgaWYg KG5ld3ZhbHVlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhj X1R5cGVFcnJvciwKLSsJCSAgICAgICAiY2Fubm90IGRlbGV0ZSBgaWdub3JlX2NvdW50JyBhdHRy aWJ1dGUiKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKCEgUHlJbnRf Q2hlY2sgKG5ld3ZhbHVlKSkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNf VHlwZUVycm9yLAotKwkJICAgICAgICJ0aGUgdmFsdWUgb2YgYGlnbm9yZV9jb3VudCcgbXVzdCBi ZSBhbiBpbnRlZ2VyIik7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICB2YWx1ZSA9 IFB5SW50X0FzTG9uZyAobmV3dmFsdWUpOwotKyAgaWYgKHZhbHVlIDwgMCkKLSsgICAgdmFsdWUg PSAwOwotKyAgc2V0X2lnbm9yZV9jb3VudCAoc2VsZl9icC0+bnVtYmVyLCAoaW50KSB2YWx1ZSwg MCk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUHl0aG9uIGZ1bmN0aW9uIHRvIHNldCB0 aGUgaGl0IGNvdW50IG9mIGEgYnJlYWtwb2ludC4gICovCi0rc3RhdGljIGludAotK2JwcHlfc2V0 X2hpdF9jb3VudCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuZXd2YWx1ZSwgdm9pZCAqY2xv c3VyZSkKLSt7Ci0rICBicmVha3BvaW50X29iamVjdCAqc2VsZl9icCA9IChicmVha3BvaW50X29i amVjdCAqKSBzZWxmOwotKwotKyAgQlBQWV9TRVRfUkVRVUlSRV9WQUxJRCAoc2VsZl9icCk7Ci0r Ci0rICBpZiAobmV3dmFsdWUgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmlu ZyAoUHlFeGNfVHlwZUVycm9yLCAiY2Fubm90IGRlbGV0ZSBgaGl0X2NvdW50JyBhdHRyaWJ1dGUi KTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKCEgUHlJbnRfQ2hlY2sg KG5ld3ZhbHVlKSB8fCBQeUludF9Bc0xvbmcgKG5ld3ZhbHVlKSAhPSAwKQotKyAgICB7Ci0rICAg ICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSsJCSAgICAgICAidGhl IHZhbHVlIG9mIGBoaXRfY291bnQnIG11c3QgYmUgemVybyIpOwotKyAgICAgIHJldHVybiAtMTsK LSsgICAgfQotKwotKyAgc2VsZl9icC0+YnAtPmhpdF9jb3VudCA9IDA7Ci0rCi0rICByZXR1cm4g MDsKLSt9Ci0rCi0rLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUgbG9jYXRpb24gb2YgYSBi cmVha3BvaW50LiAgKi8KLStzdGF0aWMgUHlPYmplY3QgKgotK2JwcHlfZ2V0X2xvY2F0aW9uIChQ eU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBjaGFyICpzdHI7Ci0rCi0rICBC UFBZX1JFUVVJUkVfVkFMSUQgKChicmVha3BvaW50X29iamVjdCAqKSBzZWxmKTsKLSsgIHN0ciA9 ICgoYnJlYWtwb2ludF9vYmplY3QgKikgc2VsZiktPmJwLT5hZGRyX3N0cmluZzsKLSsgIC8qIEZJ WE1FOiB3YXRjaHBvaW50cz8gIHRyYWNlcG9pbnRzPyAgKi8KLSsgIGlmICghIHN0cikKLSsgICAg c3RyID0gIiI7Ci0rICByZXR1cm4gUHlTdHJpbmdfRGVjb2RlIChzdHIsIHN0cmxlbiAoc3RyKSwg aG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKLSt9Ci0rCi0rLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdl dCB0aGUgY29uZGl0aW9uIGV4cHJlc3Npb24gb2YgYSBicmVha3BvaW50LiAgKi8KLStzdGF0aWMg UHlPYmplY3QgKgotK2JwcHlfZ2V0X2NvbmRpdGlvbiAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNs b3N1cmUpCi0rewotKyAgY2hhciAqc3RyOwotKyAgQlBQWV9SRVFVSVJFX1ZBTElEICgoYnJlYWtw b2ludF9vYmplY3QgKikgc2VsZik7Ci0rCi0rICBzdHIgPSAoKGJyZWFrcG9pbnRfb2JqZWN0ICop IHNlbGYpLT5icC0+Y29uZF9zdHJpbmc7Ci0rICBpZiAoISBzdHIpCi0rICAgIFB5X1JFVFVSTl9O T05FOwotKyAgcmV0dXJuIFB5U3RyaW5nX0RlY29kZSAoc3RyLCBzdHJsZW4gKHN0ciksIGhvc3Rf Y2hhcnNldCAoKSwgTlVMTCk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSticHB5X3NldF9jb25kaXRp b24gKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmV3dmFsdWUsIHZvaWQgKmNsb3N1cmUpCi0r ewotKyAgY2hhciAqZXhwOwotKyAgYnJlYWtwb2ludF9vYmplY3QgKnNlbGZfYnAgPSAoYnJlYWtw b2ludF9vYmplY3QgKikgc2VsZjsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4 Y2VwdDsKLSsKLSsgIEJQUFlfU0VUX1JFUVVJUkVfVkFMSUQgKHNlbGZfYnApOwotKwotKyAgaWYg KG5ld3ZhbHVlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhj X1R5cGVFcnJvciwgImNhbm5vdCBkZWxldGUgYGNvbmRpdGlvbicgYXR0cmlidXRlIik7Ci0rICAg ICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rICBlbHNlIGlmIChuZXd2YWx1ZSA9PSBQeV9Ob25lKQot KyAgICBleHAgPSAiIjsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGV4cCA9IHB5dGhvbl9zdHJp bmdfdG9faG9zdF9zdHJpbmcgKG5ld3ZhbHVlKTsKLSsgICAgICBpZiAoZXhwID09IE5VTEwpCi0r CXJldHVybiAtMTsKLSsgICAgfQotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNL X0FMTCkKLSsgICAgewotKyAgICAgIHNldF9icmVha3BvaW50X2NvbmRpdGlvbiAoc2VsZl9icC0+ YnAsIGV4cCwgMCk7Ci0rICAgIH0KLSsgIEdEQl9QWV9TRVRfSEFORExFX0VYQ0VQVElPTiAoZXhj ZXB0KTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBQeXRob24gZnVuY3Rpb24gdG8gZ2V0 IHRoZSBjb21tYW5kcyBhdHRhY2hlZCB0byBhIGJyZWFrcG9pbnQuICAqLwotK3N0YXRpYyBQeU9i amVjdCAqCi0rYnBweV9nZXRfY29tbWFuZHMgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJl KQotK3sKLSsgIGJyZWFrcG9pbnRfb2JqZWN0ICpzZWxmX2JwID0gKGJyZWFrcG9pbnRfb2JqZWN0 ICopIHNlbGY7Ci0rICBsb25nIGxlbmd0aDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0 aW9uIGV4Y2VwdDsKLSsgIHN0cnVjdCB1aV9maWxlICpzdHJpbmdfZmlsZTsKLSsgIHN0cnVjdCBj bGVhbnVwICpjaGFpbjsKLSsgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rICBjaGFyICpjbWRzdHI7Ci0r Ci0rICBCUFBZX1JFUVVJUkVfVkFMSUQgKHNlbGZfYnApOwotKwotKyAgaWYgKCEgc2VsZl9icC0+ YnAtPmNvbW1hbmRzKQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsKLSsgIHN0cmluZ19maWxlID0g bWVtX2ZpbGVvcGVuICgpOwotKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUg KHN0cmluZ19maWxlKTsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwp Ci0rICAgIHsKLSsgICAgICAvKiBGSVhNRTogdGhpcyBjYW4gZmFpbC4gIE1heWJlIHdlIG5lZWQg dG8gYmUgbWFraW5nIGEgbmV3Ci0rCSB1aV9vdXQgb2JqZWN0IGhlcmU/ICAqLwotKyAgICAgIHVp X291dF9yZWRpcmVjdCAodWlvdXQsIHN0cmluZ19maWxlKTsKLSsgICAgICBwcmludF9jb21tYW5k X2xpbmVzICh1aW91dCwgc2VsZl9icC0+YnAtPmNvbW1hbmRzLCAwKTsKLSsgICAgICB1aV9vdXRf cmVkaXJlY3QgKHVpb3V0LCBOVUxMKTsKLSsgICAgfQotKyAgY21kc3RyID0gdWlfZmlsZV94c3Ry ZHVwIChzdHJpbmdfZmlsZSwgJmxlbmd0aCk7Ci0rICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAo ZXhjZXB0KTsKLSsKLSsgIHJlc3VsdCA9IFB5U3RyaW5nX0RlY29kZSAoY21kc3RyLCBzdHJsZW4g KGNtZHN0ciksIGhvc3RfY2hhcnNldCAoKSwgTlVMTCk7Ci0rICBkb19jbGVhbnVwcyAoY2hhaW4p OwotKyAgeGZyZWUgKGNtZHN0cik7Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsvKiBQeXRo b24gZnVuY3Rpb24gdG8gZ2V0IHRoZSBicmVha3BvaW50J3MgbnVtYmVyLiAgKi8KLStzdGF0aWMg UHlPYmplY3QgKgotK2JwcHlfZ2V0X251bWJlciAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1 cmUpCi0rewotKyAgYnJlYWtwb2ludF9vYmplY3QgKnNlbGZfYnAgPSAoYnJlYWtwb2ludF9vYmpl Y3QgKikgc2VsZjsKLSsKLSsgIEJQUFlfUkVRVUlSRV9WQUxJRCAoc2VsZl9icCk7Ci0rCi0rICBy ZXR1cm4gUHlJbnRfRnJvbUxvbmcgKHNlbGZfYnAtPm51bWJlcik7Ci0rfQotKwotKy8qIFB5dGhv biBmdW5jdGlvbiB0byBnZXQgdGhlIGJyZWFrcG9pbnQncyB0aHJlYWQgSUQuICAqLwotK3N0YXRp YyBQeU9iamVjdCAqCi0rYnBweV9nZXRfdGhyZWFkIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xv c3VyZSkKLSt7Ci0rICBicmVha3BvaW50X29iamVjdCAqc2VsZl9icCA9IChicmVha3BvaW50X29i amVjdCAqKSBzZWxmOwotKwotKyAgQlBQWV9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKLSsKLSsg IGlmIChzZWxmX2JwLT5icC0+dGhyZWFkID09IC0xKQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsK LSsgIHJldHVybiBQeUludF9Gcm9tTG9uZyAoc2VsZl9icC0+YnAtPnRocmVhZCk7Ci0rfQotKwot Ky8qIFB5dGhvbiBmdW5jdGlvbiB0byBnZXQgdGhlIGJyZWFrcG9pbnQncyBoaXQgY291bnQuICAq LwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYnBweV9nZXRfaGl0X2NvdW50IChQeU9iamVjdCAqc2Vs Ziwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBicmVha3BvaW50X29iamVjdCAqc2VsZl9icCA9IChi cmVha3BvaW50X29iamVjdCAqKSBzZWxmOwotKwotKyAgQlBQWV9SRVFVSVJFX1ZBTElEIChzZWxm X2JwKTsKLSsKLSsgIHJldHVybiBQeUludF9Gcm9tTG9uZyAoc2VsZl9icC0+YnAtPmhpdF9jb3Vu dCk7Ci0rfQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB0byBnZXQgdGhlIGJyZWFrcG9pbnQncyBp Z25vcmUgY291bnQuICAqLwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYnBweV9nZXRfaWdub3JlX2Nv dW50IChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBicmVha3BvaW50X29i amVjdCAqc2VsZl9icCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxmOwotKwotKyAgQlBQWV9S RVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKLSsKLSsgIHJldHVybiBQeUludF9Gcm9tTG9uZyAoc2Vs Zl9icC0+YnAtPmlnbm9yZV9jb3VudCk7Ci0rfQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB0byBj cmVhdGUgYSBuZXcgYnJlYWtwb2ludC4gICovCi0rc3RhdGljIFB5T2JqZWN0ICoKLSticHB5X25l dyAoUHlUeXBlT2JqZWN0ICpzdWJ0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJn cykKLSt7Ci0rICBQeU9iamVjdCAqcmVzdWx0OwotKyAgY2hhciAqc3BlYzsKLSsgIHZvbGF0aWxl IHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIC8qIEZJWE1FOiBhbGxvdyBjb25k aXRpb24sIHRocmVhZCwgdGVtcG9yYXJ5LCAuLi4gPyAqLwotKyAgaWYgKCEgUHlBcmdfUGFyc2VU dXBsZSAoYXJncywgInMiLCAmc3BlYykpCi0rICAgIHJldHVybiBOVUxMOwotKyAgcmVzdWx0ID0g c3VidHlwZS0+dHBfYWxsb2MgKHN1YnR5cGUsIDApOwotKyAgaWYgKCEgcmVzdWx0KQotKyAgICBy ZXR1cm4gTlVMTDsKLSsgIGJwcHlfcGVuZGluZ19vYmplY3QgPSAoYnJlYWtwb2ludF9vYmplY3Qg KikgcmVzdWx0OwotKyAgYnBweV9wZW5kaW5nX29iamVjdC0+bnVtYmVyID0gLTE7Ci0rICBicHB5 X3BlbmRpbmdfb2JqZWN0LT5icCA9IE5VTEw7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVU VVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgc2V0X2JyZWFrcG9pbnQgKHB5dGhvbl9nZGJh cmNoLCBzcGVjLCBOVUxMLCAwLCAwLCAtMSwgMCwKLSsJCSAgICAgIEFVVE9fQk9PTEVBTl9UUlVF LCAxKTsKLSsgICAgfQotKyAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKyAgICB7Ci0rICAgICAg c3VidHlwZS0+dHBfZnJlZSAocmVzdWx0KTsKLSsgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChl eGNlcHQucmVhc29uID09IFJFVFVSTl9RVUlUCi0rCQkJICAgICA/IFB5RXhjX0tleWJvYXJkSW50 ZXJydXB0IDogUHlFeGNfUnVudGltZUVycm9yLAotKwkJCSAgICAgIiVzIiwgZXhjZXB0Lm1lc3Nh Z2UpOwotKyAgICB9Ci0rCi0rICBCUFBZX1JFUVVJUkVfVkFMSUQgKChicmVha3BvaW50X29iamVj dCAqKSByZXN1bHQpOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rDAotKwotKy8qIFN0YXRp YyBmdW5jdGlvbiB0byByZXR1cm4gYSB0dXBsZSBob2xkaW5nIGFsbCBicmVha3BvaW50cy4gICov Ci0rCi0rUHlPYmplY3QgKgotK2dkYnB5X2JyZWFrcG9pbnRzIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MpCi0rewotKyAgUHlPYmplY3QgKnJlc3VsdDsKLSsKLSsgIGlmIChicHB5X2xp dmUgPT0gMCkKLSsgICAgUHlfUkVUVVJOX05PTkU7Ci0rCi0rICByZXN1bHQgPSBQeVR1cGxlX05l dyAoYnBweV9saXZlKTsKLSsgIGlmIChyZXN1bHQpCi0rICAgIHsKLSsgICAgICBpbnQgaSwgb3V0 ID0gMDsKLSsgICAgICBmb3IgKGkgPSAwOyBvdXQgPCBicHB5X2xpdmU7ICsraSkKLSsJewotKwkg IGlmICghIGJwcHlfYnJlYWtwb2ludHNbaV0pCi0rCSAgICBjb250aW51ZTsKLSsJICBQeV9JTkNS RUYgKGJwcHlfYnJlYWtwb2ludHNbaV0pOwotKwkgIFB5VHVwbGVfU2V0SXRlbSAocmVzdWx0LCBv dXQsIChQeU9iamVjdCAqKSBicHB5X2JyZWFrcG9pbnRzW2ldKTsKLSsJICArK291dDsKLSsJfQot KyAgICB9Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsMCi0rCi0rLyogRXZlbnQgY2FsbGJh Y2sgZnVuY3Rpb25zLiAgKi8KLSsKLSsvKiBDYWxsYmFjayB0aGF0IGlzIHVzZWQgd2hlbiBhIGJy ZWFrcG9pbnQgaXMgY3JlYXRlZC4gIFRoaXMgZnVuY3Rpb24KLSsgICB3aWxsIGNyZWF0ZSBhIG5l dyBQeXRob24gYnJlYWtwb2ludCBvYmplY3QuICAqLwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfYnJl YWtwb2ludF9jcmVhdGVkIChpbnQgbnVtKQotK3sKLSsgIGJyZWFrcG9pbnRfb2JqZWN0ICpuZXdi cDsKLSsgIHN0cnVjdCBicmVha3BvaW50ICpicDsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVw OwotKwotKyAgaWYgKG51bSA8IDApCi0rICAgIHJldHVybjsKLSsKLSsgIGZvciAoYnAgPSBicmVh a3BvaW50X2NoYWluOyBicDsgYnAgPSBicC0+bmV4dCkKLSsgICAgaWYgKGJwLT5udW1iZXIgPT0g bnVtKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKCEgYnApCi0rICAgIHJldHVybjsKLSsKLSsgIGlm IChudW0gPj0gYnBweV9zbG90cykKLSsgICAgewotKyAgICAgIGludCBvbGQgPSBicHB5X3Nsb3Rz OwotKyAgICAgIGJwcHlfc2xvdHMgPSBicHB5X3Nsb3RzICogMiArIDEwOwotKyAgICAgIGJwcHlf YnJlYWtwb2ludHMKLSsJPSAoYnJlYWtwb2ludF9vYmplY3QgKiopIHhyZWFsbG9jIChicHB5X2Jy ZWFrcG9pbnRzLAotKwkJCQkJICAgKGJwcHlfc2xvdHMKLSsJCQkJCSAgICAqIHNpemVvZiAoYnJl YWtwb2ludF9vYmplY3QgKikpKTsKLSsgICAgICBtZW1zZXQgKCZicHB5X2JyZWFrcG9pbnRzW29s ZF0sIDAsCi0rCSAgICAgIChicHB5X3Nsb3RzIC0gb2xkKSAqIHNpemVvZiAoUHlPYmplY3QgKikp OwotKyAgICB9Ci0rCi0rICArK2JwcHlfbGl2ZTsKLSsKLSsgIGNsZWFudXAgPSBlbnN1cmVfcHl0 aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7Ci0rCi0rICBp ZiAoYnBweV9wZW5kaW5nX29iamVjdCkKLSsgICAgewotKyAgICAgIG5ld2JwID0gYnBweV9wZW5k aW5nX29iamVjdDsKLSsgICAgICBicHB5X3BlbmRpbmdfb2JqZWN0ID0gTlVMTDsKLSsgICAgfQot KyAgZWxzZQotKyAgICBuZXdicCA9IFB5T2JqZWN0X05ldyAoYnJlYWtwb2ludF9vYmplY3QsICZi cmVha3BvaW50X29iamVjdF90eXBlKTsKLSsgIGlmIChuZXdicCkKLSsgICAgewotKyAgICAgIFB5 T2JqZWN0ICpob29rZm47Ci0rCi0rICAgICAgbmV3YnAtPm51bWJlciA9IG51bTsKLSsgICAgICBu ZXdicC0+YnAgPSBicDsKLSsgICAgICBicHB5X2JyZWFrcG9pbnRzW251bV0gPSBuZXdicDsKLSsK LSsgICAgICBob29rZm4gPSBnZGJweV9nZXRfaG9va19mdW5jdGlvbiAoIm5ld19icmVha3BvaW50 Iik7Ci0rICAgICAgaWYgKGhvb2tmbikKLSsJewotKwkgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rCSAg cmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyAoaG9va2ZuLCBuZXdicCwgTlVM TCk7Ci0rCSAgaWYgKHJlc3VsdCkKLSsJICAgIHsKLSsJICAgICAgUHlfREVDUkVGIChyZXN1bHQp OwotKwkgICAgfQotKwkgIFB5X0RFQ1JFRiAoaG9va2ZuKTsKLSsJfQotKyAgICB9Ci0rCi0rICAv KiBKdXN0IGlnbm9yZSBlcnJvcnMgaGVyZS4gICovCi0rICBQeUVycl9DbGVhciAoKTsKLSsKLSsg IGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSt9Ci0rCi0rLyogQ2FsbGJhY2sgdGhhdCBpcyB1c2Vk IHdoZW4gYSBicmVha3BvaW50IGlzIGRlbGV0ZWQuICBUaGlzIHdpbGwKLSsgICBpbnZhbGlkYXRl IHRoZSBjb3JyZXNwb25kaW5nIFB5dGhvbiBvYmplY3QuICAqLwotK3N0YXRpYyB2b2lkCi0rZ2Ri cHlfYnJlYWtwb2ludF9kZWxldGVkIChpbnQgbnVtKQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwOwotKwotKyAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9h cmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsgIGlmIChCUFBZX1ZBTElEX1AgKG51bSkpCi0r ICAgIHsKLSsgICAgICBicHB5X2JyZWFrcG9pbnRzW251bV0tPmJwID0gTlVMTDsKLSsgICAgICBQ eV9ERUNSRUYgKGJwcHlfYnJlYWtwb2ludHNbbnVtXSk7Ci0rICAgICAgYnBweV9icmVha3BvaW50 c1tudW1dID0gTlVMTDsKLSsgICAgICAtLWJwcHlfbGl2ZTsKLSsgICAgfQotKyAgZG9fY2xlYW51 cHMgKGNsZWFudXApOwotK30KLSsKLSsMCi0rCi0rLyogSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGJy ZWFrcG9pbnQgY29kZS4gICovCi0rdm9pZAotK2dkYnB5X2luaXRpYWxpemVfYnJlYWtwb2ludHMg KHZvaWQpCi0rewotKyAgYnJlYWtwb2ludF9vYmplY3RfdHlwZS50cF9uZXcgPSBicHB5X25ldzsK LSsgIGlmIChQeVR5cGVfUmVhZHkgKCZicmVha3BvaW50X29iamVjdF90eXBlKSA8IDApCi0rICAg IHJldHVybjsKLSsKLSsgIFB5X0lOQ1JFRiAoJmJyZWFrcG9pbnRfb2JqZWN0X3R5cGUpOwotKyAg UHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiQnJlYWtwb2ludCIsCi0rCQkgICAgICAo UHlPYmplY3QgKikgJmJyZWFrcG9pbnRfb2JqZWN0X3R5cGUpOwotKwotKyAgb2JzZXJ2ZXJfYXR0 YWNoX2JyZWFrcG9pbnRfY3JlYXRlZCAoZ2RicHlfYnJlYWtwb2ludF9jcmVhdGVkKTsKLSsgIG9i c2VydmVyX2F0dGFjaF9icmVha3BvaW50X2RlbGV0ZWQgKGdkYnB5X2JyZWFrcG9pbnRfZGVsZXRl ZCk7Ci0rfQotKwotKwwKLSsKLStzdGF0aWMgUHlHZXRTZXREZWYgYnJlYWtwb2ludF9vYmplY3Rf Z2V0c2V0W10gPSB7Ci0rICB7ICJlbmFibGVkIiwgYnBweV9nZXRfZW5hYmxlZCwgYnBweV9zZXRf ZW5hYmxlZCwKLSsgICAgIkJvb2xlYW4gdGVsbGluZyB3aGV0aGVyIHRoZSBicmVha3BvaW50IGlz IGVuYWJsZWQuIiwgTlVMTCB9LAotKyAgeyAic2lsZW50IiwgYnBweV9nZXRfc2lsZW50LCBicHB5 X3NldF9zaWxlbnQsCi0rICAgICJCb29sZWFuIHRlbGxpbmcgd2hldGhlciB0aGUgYnJlYWtwb2lu dCBpcyBzaWxlbnQuIiwgTlVMTCB9LAotKyAgeyAidGhyZWFkIiwgYnBweV9nZXRfdGhyZWFkLCBi cHB5X3NldF90aHJlYWQsCi0rICAgICJUaHJlYWQgSUQgZm9yIHRoZSBicmVha3BvaW50LlxuXAot K0lmIHRoZSB2YWx1ZSBpcyBhIHRocmVhZCBJRCAoaW50ZWdlciksIHRoZW4gdGhpcyBpcyBhIHRo cmVhZC1zcGVjaWZpYyBicmVha3BvaW50LlxuXAotK0lmIHRoZSB2YWx1ZSBpcyBOb25lLCB0aGVu IHRoaXMgYnJlYWtwb2ludCBub3QgdGhyZWFkLXNwZWNpZmljLlxuXAotK05vIG90aGVyIHR5cGUg b2YgdmFsdWUgY2FuIGJlIHVzZWQuIiwgTlVMTCB9LAotKyAgeyAiaWdub3JlX2NvdW50IiwgYnBw eV9nZXRfaWdub3JlX2NvdW50LCBicHB5X3NldF9pZ25vcmVfY291bnQsCi0rICAgICJOdW1iZXIg b2YgdGltZXMgdGhpcyBicmVha3BvaW50IHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNvbnRpbnVl ZC4iLAotKyAgICBOVUxMIH0sCi0rICB7ICJudW1iZXIiLCBicHB5X2dldF9udW1iZXIsIE5VTEws Ci0rICAgICJCcmVha3BvaW50J3MgbnVtYmVyIGFzc2lnbmVkIGJ5IEdEQi4iLCBOVUxMIH0sCi0r ICB7ICJoaXRfY291bnQiLCBicHB5X2dldF9oaXRfY291bnQsIGJwcHlfc2V0X2hpdF9jb3VudCwK LSsgICAgIk51bWJlciBvZiB0aW1lcyB0aGUgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQuXG5cCi0r Q2FuIGJlIHNldCB0byB6ZXJvIHRvIGNsZWFyIHRoZSBjb3VudC4gTm8gb3RoZXIgdmFsdWUgaXMg dmFsaWRcblwKLSt3aGVuIHNldHRpbmcgdGhpcyBwcm9wZXJ0eS4iLCBOVUxMIH0sCi0rICB7ICJs b2NhdGlvbiIsIGJwcHlfZ2V0X2xvY2F0aW9uLCBOVUxMLAotKyAgICAiTG9jYXRpb24gb2YgdGhl IGJyZWFrcG9pbnQsIGFzIHNwZWNpZmllZCBieSB0aGUgdXNlci4iLCBOVUxMfSwKLSsgIHsgImNv bmRpdGlvbiIsIGJwcHlfZ2V0X2NvbmRpdGlvbiwgYnBweV9zZXRfY29uZGl0aW9uLAotKyAgICAi Q29uZGl0aW9uIG9mIHRoZSBicmVha3BvaW50LCBhcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsXAot K29yIE5vbmUgaWYgbm8gY29uZGl0aW9uIHNldC4ifSwKLSsgIHsgImNvbW1hbmRzIiwgYnBweV9n ZXRfY29tbWFuZHMsIE5VTEwsCi0rICAgICJDb21tYW5kcyBvZiB0aGUgYnJlYWtwb2ludCwgYXMg c3BlY2lmaWVkIGJ5IHRoZSB1c2VyLiJ9LAotKyAgeyBOVUxMIH0gIC8qIFNlbnRpbmVsLiAgKi8K LSt9OwotKwotK3N0YXRpYyBQeU1ldGhvZERlZiBicmVha3BvaW50X29iamVjdF9tZXRob2RzW10g PQotK3sKLSsgIHsgImlzX3ZhbGlkIiwgYnBweV9pc192YWxpZCwgTUVUSF9OT0FSR1MsCi0rICAg ICJSZXR1cm4gdHJ1ZSBpZiB0aGlzIGJyZWFrcG9pbnQgaXMgdmFsaWQsIGZhbHNlIGlmIG5vdC4i IH0sCi0rICB7IE5VTEwgfSAvKiBTZW50aW5lbC4gICovCi0rfTsKLSsKLStzdGF0aWMgUHlUeXBl T2JqZWN0IGJyZWFrcG9pbnRfb2JqZWN0X3R5cGUgPQotK3sKLSsgIFB5T2JqZWN0X0hFQURfSU5J VCAoTlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIuQnJlYWtwb2ludCIsCQkg IC8qdHBfbmFtZSovCi0rICBzaXplb2YgKGJyZWFrcG9pbnRfb2JqZWN0KSwJICAvKnRwX2Jhc2lj c2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfaXRlbXNpemUqLwotKyAgMCwJCQkJICAvKnRwX2RlYWxs b2MqLwotKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRyKi8K LSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9jb21wYXJlKi8KLSsg IDAsCQkJCSAgLyp0cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLwotKyAgMCwJ CQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5nKi8KLSsg IDAsCQkJCSAgLyp0cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBfY2FsbCovCi0rICAwLAkJCQkg IC8qdHBfc3RyKi8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRybyovCi0rICAwLAkJCQkgIC8qdHBf c2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX2FzX2J1ZmZlciovCi0rICBQeV9UUEZMQUdTX0RF RkFVTFQsCQkgIC8qdHBfZmxhZ3MqLwotKyAgIkdEQiBicmVha3BvaW50IG9iamVjdCIsCSAgLyog dHBfZG9jICovCi0rICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8qIHRw X2NsZWFyICovCi0rICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkgIC8q IHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsgIDAsCQkJ CSAgLyogdHBfaXRlcm5leHQgKi8KLSsgIGJyZWFrcG9pbnRfb2JqZWN0X21ldGhvZHMsCSAgLyog dHBfbWV0aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICBicmVha3BvaW50 X29iamVjdF9nZXRzZXQJICAvKiB0cF9nZXRzZXQgKi8KLSt9OwotZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vcHktY21kLmMgYi9nZGIvcHl0aG9uL3B5LWNtZC5jCi1pbmRleCBhZTQ2MmQ5Li5kZDM2 NGRmIDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9weS1jbWQuYwotKysrIGIvZ2RiL3B5dGhvbi9w eS1jbWQuYwotQEAgLTQ5LDggKzQ5LDcgQEAgc3RhdGljIHN0cnVjdCBjbWRweV9jb21wbGV0ZXIg Y29tcGxldGVyc1tdID0KLSAKLSAjZGVmaW5lIE5fQ09NUExFVEVSUyAoc2l6ZW9mIChjb21wbGV0 ZXJzKSAvIHNpemVvZiAoY29tcGxldGVyc1swXSkpCi0gCi0tLyogQSBnZGIgY29tbWFuZC4gIEZv ciB0aGUgdGltZSBiZWluZyBvbmx5IG9yZGluYXJ5IGNvbW1hbmRzIChub3QKLS0gICBzZXQvc2hv dyBjb21tYW5kcykgYXJlIGFsbG93ZWQuICAqLwotKy8qIEEgZ2RiIGNvbW1hbmQuICAqLwotIHN0 cnVjdCBjbWRweV9vYmplY3QKLSB7Ci0gICBQeU9iamVjdF9IRUFECi1AQCAtMjYzLDEwICsyNjIs MTMgQEAgY21kcHlfY29tcGxldGVyIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY29tbWFuZCwg Y2hhciAqdGV4dCwgY2hhciAqd29yZCkKLSAgICAqQkFTRV9MSVNUIGlzIHNldCB0byB0aGUgZmlu YWwgcHJlZml4IGNvbW1hbmQncyBsaXN0IG9mCi0gICAgKnN1Yi1jb21tYW5kcy4KLSAgICAKLSsg ICBTVEFSVF9MSVNUIGlzIHRoZSBsaXN0IGluIHdoaWNoIHRoZSBzZWFyY2ggc3RhcnRzLgotKyAg IAotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgeG1hbGxvYygpZCBuYW1lIG9mIHRoZSBu ZXcgY29tbWFuZC4gIE9uCi0gICAgZXJyb3Igc2V0cyB0aGUgUHl0aG9uIGVycm9yIGFuZCByZXR1 cm5zIE5VTEwuICAqLwotLXN0YXRpYyBjaGFyICoKLS1wYXJzZV9jb21tYW5kX25hbWUgKGNoYXIg KnRleHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCkKLStjaGFyICoKLStn ZGJweV9wYXJzZV9jb21tYW5kX25hbWUgKGNoYXIgKnRleHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICoqKmJhc2VfbGlzdCwKLSsJCQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqc3RhcnRf bGlzdCkKLSB7Ci0gICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqZWx0OwotICAgaW50IGxlbiA9 IHN0cmxlbiAodGV4dCk7Ci1AQCAtMjk5LDcgKzMwMSw3IEBAIHBhcnNlX2NvbW1hbmRfbmFtZSAo Y2hhciAqdGV4dCwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioqYmFzZV9saXN0KQotICAgICA7 Ci0gICBpZiAoaSA8IDApCi0gICAgIHsKLS0gICAgICAqYmFzZV9saXN0ID0gJmNtZGxpc3Q7Ci0r ICAgICAgKmJhc2VfbGlzdCA9IHN0YXJ0X2xpc3Q7Ci0gICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg ICAgfQotIAotQEAgLTMwOCw3ICszMTAsNyBAQCBwYXJzZV9jb21tYW5kX25hbWUgKGNoYXIgKnRl eHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCkKLSAgIHByZWZpeF90ZXh0 W2kgKyAxXSA9ICdcMCc7Ci0gCi0gICB0ZXh0ID0gcHJlZml4X3RleHQ7Ci0tICBlbHQgPSBsb29r dXBfY21kXzEgKCZ0ZXh0LCBjbWRsaXN0LCBOVUxMLCAxKTsKLSsgIGVsdCA9IGxvb2t1cF9jbWRf MSAoJnRleHQsICpzdGFydF9saXN0LCBOVUxMLCAxKTsKLSAgIGlmICghZWx0IHx8IGVsdCA9PSAo c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKikgLTEpCi0gICAgIHsKLSAgICAgICBQeUVycl9Gb3Jt YXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgXygiY291bGQgbm90IGZpbmQgY29tbWFuZCBwcmVmaXgg JXMiKSwKLUBAIC0zOTksNyArNDAxLDcgQEAgY21kcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCi0gICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0g Ci0tICBjbWRfbmFtZSA9IHBhcnNlX2NvbW1hbmRfbmFtZSAobmFtZSwgJmNtZF9saXN0KTsKLSsg IGNtZF9uYW1lID0gZ2RicHlfcGFyc2VfY29tbWFuZF9uYW1lIChuYW1lLCAmY21kX2xpc3QsICZj bWRsaXN0KTsKLSAgIGlmICghIGNtZF9uYW1lKQotICAgICByZXR1cm4gLTE7Ci0gCi1kaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weS1mcmFtZS5jIGIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCi1pbmRl eCAzMzRiYWQ5Li41MjQzNTNkIDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCi0r KysgYi9nZGIvcHl0aG9uL3B5LWZyYW1lLmMKLUBAIC0yMDIsMTAgKzIwMiw1OSBAQCBmcmFweV9w YyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgcmV0dXJuIFB5TG9uZ19Gcm9t VW5zaWduZWRMb25nTG9uZyAocGMpOwotIH0KLSAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIu RnJhbWUuYmxvY2sgKHNlbGYpIC0+IGdkYi5CbG9jay4KLSsgICBSZXR1cm5zIHRoZSBmcmFtZSdz IGNvZGUgYmxvY2suICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZnJhcHlfYmxvY2sgKFB5 T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWU7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrID0gTlVMTDsKLSsgIHZvbGF0aWxlIHN0cnVj dCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5f TUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBGUkFQWV9SRVFVSVJFX1ZBTElEICgoZnJhbWVfb2Jq ZWN0ICopIHNlbGYsIGZyYW1lKTsKLSsKLSsgICAgICBibG9jayA9IGJsb2NrX2Zvcl9wYyAoZ2V0 X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0rICAgIH0KLSsgIEdEQl9QWV9IQU5E TEVfRVhDRVBUSU9OIChleGNlcHQpOwotKwotKyAgaWYgKGJsb2NrKQotKyAgICByZXR1cm4gYmxv Y2tfdG9fYmxvY2tfb2JqZWN0IChibG9jayk7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0r Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLkZyYW1lLmZ1bmN0aW9uIChzZWxmKSAtPiBn ZGIuU3ltYm9sLgotKyAgIFJldHVybnMgdGhlIHN5bWJvbCBmb3IgdGhlIGZ1bmN0aW9uIGNvcnJl c3BvbmRpbmcgdG8gdGhpcyBmcmFtZS4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStmcmFw eV9mdW5jdGlvbiAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIHN0cnVj dCBzeW1ib2wgKnN5bSA9IE5VTEw7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Ci0rICB2 b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4 Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgRlJBUFlfUkVRVUlSRV9WQUxJ RCAoKGZyYW1lX29iamVjdCAqKSBzZWxmLCBmcmFtZSk7Ci0rCi0rICAgICAgc3ltID0gZmluZF9w Y19mdW5jdGlvbiAoZ2V0X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0rICAgIH0K LSsgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOwotKwotKyAgaWYgKHN5bSkKLSsg ICAgcmV0dXJuIHN5bWJvbF90b19zeW1ib2xfb2JqZWN0IChzeW0pOwotKwotKyAgUHlfUkVUVVJO X05PTkU7Ci0rfQotKwotIC8qIENvbnZlcnQgYSBmcmFtZV9pbmZvIHN0cnVjdCB0byBhIFB5dGhv biBGcmFtZSBvYmplY3QuCi0gICAgU2V0cyBhIFB5dGhvbiBleGNlcHRpb24gYW5kIHJldHVybnMg TlVMTCBvbiBlcnJvci4gICovCi0gCi0tc3RhdGljIGZyYW1lX29iamVjdCAqCi0rUHlPYmplY3Qg KgotIGZyYW1lX2luZm9fdG9fZnJhbWVfb2JqZWN0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUp Ci0gewotICAgZnJhbWVfb2JqZWN0ICpmcmFtZV9vYmo7Ci1AQCAtMjM1LDcgKzI4NCw3IEBAIGZy YW1lX2luZm9fdG9fZnJhbWVfb2JqZWN0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gCi0g ICBmcmFtZV9vYmotPmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotIAotLSAgcmV0 dXJuIGZyYW1lX29iajsKLSsgIHJldHVybiAoUHlPYmplY3QgKikgZnJhbWVfb2JqOwotIH0KLSAK LSAvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuRnJhbWUub2xkZXIgKHNlbGYpIC0+IGdkYi5GcmFt ZS4KLUBAIC0yOTYsNyArMzQ1LDMwIEBAIGZyYXB5X25ld2VyIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MpCi0gICByZXR1cm4gbmV4dF9vYmo7Ci0gfQotIAotLS8qIEltcGxlbWVudGF0 aW9uIG9mIGdkYi5GcmFtZS5yZWFkX3Zhcl92YWx1ZSAoc2VsZiwgdmFyaWFibGUpIC0+IGdkYi5W YWx1ZS4KLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuRnJhbWUuZmluZF9zYWwgKHNlbGYpIC0+ IGdkYi5TeW10YWJfYW5kX2xpbmUuCi0rICAgUmV0dXJucyB0aGUgZnJhbWUncyBzeW10YWIgYW5k IGxpbmUuICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZnJhcHlfZmluZF9zYWwgKFB5T2Jq ZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWU7Ci0rICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBn ZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsgIFB5T2JqZWN0ICpzYWxfb2JqID0gTlVMTDsgICAvKiBJ bml0aWFsaXplIHRvIGFwcGVhc2UgZ2NjIHdhcm5pbmcuICAqLwotKwotKyAgVFJZX0NBVENIIChl eGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIEZSQVBZX1JFUVVJUkVfVkFM SUQgKChmcmFtZV9vYmplY3QgKikgc2VsZiwgZnJhbWUpOwotKwotKyAgICAgIGZpbmRfZnJhbWVf c2FsIChmcmFtZSwgJnNhbCk7Ci0rICAgICAgc2FsX29iaiA9IHN5bXRhYl9hbmRfbGluZV90b19z YWxfb2JqZWN0IChzYWwpOwotKyAgICB9Ci0rICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhj ZXB0KTsKLSsKLSsgIHJldHVybiBzYWxfb2JqOwotK30KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBv ZiBnZGIuRnJhbWUucmVhZF92YXIgKHNlbGYsIHZhcmlhYmxlKSAtPiBnZGIuVmFsdWUuCi0gICAg UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHZhcmlhYmxlIGluIHRoaXMgZnJhbWUuICBU aGUgYXJndW1lbnQgbXVzdCBiZQotICAgIGEgc3RyaW5nLiAgUmV0dXJucyBOb25lIGlmIEdEQiBj YW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgdmFyaWFibGUuICAqLwotIAotQEAgLTMxMiw3ICszODQs OSBAQCBmcmFweV9yZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAg aWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiTyIsICZzeW1fb2JqKSkKLSAgICAgcmV0dXJu IE5VTEw7Ci0gCi0tICBpZiAoZ2RicHlfaXNfc3RyaW5nIChzeW1fb2JqKSkKLSsgIGlmIChQeU9i amVjdF9UeXBlQ2hlY2sgKHN5bV9vYmosICZzeW1ib2xfb2JqZWN0X3R5cGUpKQotKyAgICB2YXIg PSBzeW1ib2xfb2JqZWN0X3RvX3N5bWJvbCAoc3ltX29iaik7Ci0rICBlbHNlIGlmIChnZGJweV9p c19zdHJpbmcgKHN5bV9vYmopKQotICAgICB7Ci0gICAgICAgY2hhciAqdmFyX25hbWU7Ci0gICAg ICAgc3RydWN0IGJsb2NrICpibG9jayA9IE5VTEw7Ci1AQCAtMzY1LDYgKzQzOSwyNSBAQCBmcmFw eV9yZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgUHlfUkVUVVJO X05PTkU7Ci0gfQotIAotKy8qIFNlbGVjdCB0aGlzIGZyYW1lLiAgKi8KLSsKLStzdGF0aWMgUHlP YmplY3QgKgotK2ZyYXB5X3NlbGVjdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQot K3sKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmaTsKLSsgIGZyYW1lX29iamVjdCAqZnJhbWUgPSAo ZnJhbWVfb2JqZWN0ICopIHNlbGY7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBl eGNlcHQ7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7 Ci0rICAgICAgRlJBUFlfUkVRVUlSRV9WQUxJRCAoZnJhbWUsIGZpKTsKLSsgICAgICBzZWxlY3Rf ZnJhbWUgKGZpKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7 Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0gLyogSW1wbGVtZW50YXRpb24gb2YgZ2Ri LnNlbGVjdGVkX2ZyYW1lICgpIC0+IGdkYi5GcmFtZS4KLSAgICBSZXR1cm5zIHRoZSBzZWxlY3Rl ZCBmcmFtZSBvYmplY3QuICAqLwotIAotQEAgLTM3Miw3ICs0NjUsNyBAQCBQeU9iamVjdCAqCi0g Z2RicHlfc2VsZWN0ZWRfZnJhbWUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSB7 Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Ci0tICBmcmFtZV9vYmplY3QgKmZyYW1lX29i aiA9IE5VTEw7ICAgLyogSW5pdGlhbGl6ZSB0byBhcHBlYXNlIGdjYyB3YXJuaW5nLiAgKi8KLSsg IFB5T2JqZWN0ICpmcmFtZV9vYmogPSBOVUxMOyAgIC8qIEluaXRpYWxpemUgdG8gYXBwZWFzZSBn Y2Mgd2FybmluZy4gICovCi0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7 Ci0gCi0gICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotQEAgLTM4Miw3ICs0 NzUsNyBAQCBnZGJweV9zZWxlY3RlZF9mcmFtZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICph cmdzKQotICAgICB9Ci0gICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSAKLS0g IHJldHVybiAoUHlPYmplY3QgKikgZnJhbWVfb2JqOwotKyAgcmV0dXJuIGZyYW1lX29iajsKLSB9 Ci0gCi0gLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLnN0b3BfcmVhc29uX3N0cmluZyAoSW50ZWdl cikgLT4gU3RyaW5nLgotQEAgLTQ4NCwxNSArNTc3LDI2IEBAIFJldHVybiB0aGUgcmVhc29uIHdo eSBpdCdzIG5vdCBwb3NzaWJsZSB0byBmaW5kIGZyYW1lcyBvbGRlciB0aGFuIHRoaXMuIiB9LAot ICAgeyAicGMiLCBmcmFweV9wYywgTUVUSF9OT0FSR1MsCi0gICAgICJwYyAoKSAtPiBMb25nLlxu XAotIFJldHVybiB0aGUgZnJhbWUncyByZXN1bWUgYWRkcmVzcy4iIH0sCi0rICB7ICJibG9jayIs IGZyYXB5X2Jsb2NrLCBNRVRIX05PQVJHUywKLSsgICAgImJsb2NrICgpIC0+IGdkYi5CbG9jay5c blwKLStSZXR1cm4gdGhlIGZyYW1lJ3MgY29kZSBibG9jay4iIH0sCi0rICB7ICJmdW5jdGlvbiIs IGZyYXB5X2Z1bmN0aW9uLCBNRVRIX05PQVJHUywKLSsgICAgImZ1bmN0aW9uICgpIC0+IGdkYi5T eW1ib2wuXG5cCi0rUmV0dXJucyB0aGUgc3ltYm9sIGZvciB0aGUgZnVuY3Rpb24gY29ycmVzcG9u ZGluZyB0byB0aGlzIGZyYW1lLiIgfSwKLSAgIHsgIm9sZGVyIiwgZnJhcHlfb2xkZXIsIE1FVEhf Tk9BUkdTLAotICAgICAib2xkZXIgKCkgLT4gZ2RiLkZyYW1lLlxuXAotIFJldHVybiB0aGUgZnJh bWUgdGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4iIH0sCi0gICB7ICJuZXdlciIsIGZyYXB5X25ld2Vy LCBNRVRIX05PQVJHUywKLSAgICAgIm5ld2VyICgpIC0+IGdkYi5GcmFtZS5cblwKLSBSZXR1cm4g dGhlIGZyYW1lIGNhbGxlZCBieSB0aGlzIGZyYW1lLiIgfSwKLSsgIHsgImZpbmRfc2FsIiwgZnJh cHlfZmluZF9zYWwsIE1FVEhfTk9BUkdTLAotKyAgICAiZmluZF9zYWwgKCkgLT4gZ2RiLlN5bXRh Yl9hbmRfbGluZS5cblwKLStSZXR1cm4gdGhlIGZyYW1lJ3Mgc3ltdGFiIGFuZCBsaW5lLiIgfSwK LSAgIHsgInJlYWRfdmFyIiwgZnJhcHlfcmVhZF92YXIsIE1FVEhfVkFSQVJHUywKLSAgICAgInJl YWRfdmFyICh2YXJpYWJsZSkgLT4gZ2RiLlZhbHVlLlxuXAotIFJldHVybiB0aGUgdmFsdWUgb2Yg dGhlIHZhcmlhYmxlIGluIHRoaXMgZnJhbWUuIiB9LAotKyAgeyAic2VsZWN0IiwgZnJhcHlfc2Vs ZWN0LCBNRVRIX05PQVJHUywKLSsgICAgIlNlbGVjdCB0aGlzIGZyYW1lIGFzIHRoZSB1c2VyJ3Mg Y3VycmVudCBmcmFtZS4iIH0sCi0gICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi0gfTsKLSAKLWRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWhvb2tzLmMgYi9nZGIvcHl0aG9uL3B5LWhvb2tzLmMK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMzE0MGJjCi0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvcHl0aG9uL3B5LWhvb2tzLmMKLUBAIC0wLDAgKzEsNTAgQEAKLSsvKiBO b3RpZmljYXRpb25zIGZyb20gZ2RiIHRvIFB5dGhvbgotKwotKyAgIENvcHlyaWdodCAoQykgMjAw OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCi0rI2lu Y2x1ZGUgImNoYXJzZXQuaCIKLSsjaW5jbHVkZSAicHl0aG9uLmgiCi0rI2luY2x1ZGUgInB5dGhv bi1pbnRlcm5hbC5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotKwotK1B5T2JqZWN0ICoKLStn ZGJweV9nZXRfaG9va19mdW5jdGlvbiAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICBQeU9iamVj dCAqaG9va3M7Ci0rICBQeU9iamVjdCAqcmVzdWx0OwotKwotKyAgaWYgKCEgUHlPYmplY3RfSGFz QXR0clN0cmluZyAoZ2RiX21vZHVsZSwgImhvb2tzIikpCi0rICAgIHJldHVybiBOVUxMOwotKyAg aG9va3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nIChnZGJfbW9kdWxlLCAiaG9va3MiKTsKLSsg IGlmICghIGhvb2tzKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIC8qIFRoZSBjYXN0IGlzIGJlY2F1 c2UgdGhlIFB5dGhvbiBmdW5jdGlvbiBkb2Vzbid0IGRlY2xhcmUgY29uc3QgYXJndW1lbnQuCi0r ICAgICBUaGlzIGlzIGEgcHJvYmxlbSBpbiBQeXRob24gdmVyc2lvbiAyLjQsIGJ1dCBub3QgaW4g Mi41LiAgKi8KLSsgIGlmICghIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKGhvb2tzLCAoY2hhciAq KSBuYW1lKSkKLSsgICAgewotKyAgICAgIFB5X0RFQ1JFRiAoaG9va3MpOwotKyAgICAgIHJldHVy biBOVUxMOwotKyAgICB9Ci0rICAvKiBUaGUgY2FzdCBpcyBiZWNhdXNlIHRoZSBQeXRob24gZnVu Y3Rpb24gZG9lc24ndCBkZWNsYXJlIGNvbnN0IGFyZ3VtZW50LgotKyAgICAgVGhpcyBpcyBhIHBy b2JsZW0gaW4gUHl0aG9uIHZlcnNpb24gMi40LCBidXQgbm90IGluIDIuNS4gICovCi0rICByZXN1 bHQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nIChob29rcywgKGNoYXIgKikgbmFtZSk7Ci0rICBQ eV9ERUNSRUYgKGhvb2tzKTsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vcHktaW5mZXJpb3IuYyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmIyNTlhYjUKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwotQEAgLTAsMCArMSw5MzQgQEAKLSsvKiBQeXRo b24gaW50ZXJmYWNlIHRvIGluZmVyaW9ycy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDksIDIw MTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K LSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1 ZGUgImdkYmNvcmUuaCIKLSsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0rI2luY2x1ZGUgImluZmVy aW9yLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5h bC5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImxhbmd1YWdlLmgiCi0r Ci0rc3RydWN0IHRocmVhZGxpc3RfZW50cnkgewotKyAgdGhyZWFkX29iamVjdCAqdGhyZWFkX29i ajsKLSsgIHN0cnVjdCB0aHJlYWRsaXN0X2VudHJ5ICpuZXh0OwotK307Ci0rCi0rdHlwZWRlZiBz dHJ1Y3QKLSt7Ci0rICBQeU9iamVjdF9IRUFECi0rCi0rICAvKiBUaGUgaW5mZXJpb3Igd2UgcmVw cmVzZW50LiAgKi8KLSsgIHN0cnVjdCBpbmZlcmlvciAqaW5mZXJpb3I7Ci0rCi0rICAvKiB0aHJl YWRfb2JqZWN0IGluc3RhbmNlcyB1bmRlciB0aGlzIGluZmVyaW9yLiAgVGhpcyBsaXN0IG93bnMg YSByZWZlcmVuY2UKLSsgICAgIHRvIGVhY2ggb2JqZWN0IGl0IGNvbnRhaW5zLiAqLwotKyAgc3Ry dWN0IHRocmVhZGxpc3RfZW50cnkgKnRocmVhZHM7Ci0rCi0rICAvKiBOdW1iZXIgb2YgdGhyZWFk cyBpbiB0aGUgbGlzdC4gICovCi0rICBpbnQgbnRocmVhZHM7Ci0rfSBpbmZlcmlvcl9vYmplY3Q7 Ci0rCi0rc3RhdGljIFB5VHlwZU9iamVjdCBpbmZlcmlvcl9vYmplY3RfdHlwZTsKLSsKLSt0eXBl ZGVmIHN0cnVjdCB7Ci0rICBQeU9iamVjdF9IRUFECi0rICB2b2lkICpidWZmZXI7Ci0rCi0rICAv KiBUaGVzZSBhcmUga2VwdCBqdXN0IGZvciBtYnB5X3N0ci4gICovCi0rICBDT1JFX0FERFIgYWRk cjsKLSsgIENPUkVfQUREUiBsZW5ndGg7Ci0rfSBtZW1idWZfb2JqZWN0OwotKwotK3N0YXRpYyBQ eVR5cGVPYmplY3QgbWVtYnVmX29iamVjdF90eXBlOwotKwotKy8qIFJlcXVpcmUgdGhhdCBJTkZF UklPUiBiZSBhIHZhbGlkIGluZmVyaW9yIElELiAgKi8KLSsjZGVmaW5lIElORlBZX1JFUVVJUkVf VkFMSUQoSW5mZXJpb3IpCQkJCVwKLSsgIGRvIHsJCQkJCQkJCVwKLSsgICAgaWYgKCFJbmZlcmlv ci0+aW5mZXJpb3IpCQkJCQlcCi0rICAgICAgewkJCQkJCQkJXAotKwlQeUVycl9TZXRTdHJpbmcg KFB5RXhjX1J1bnRpbWVFcnJvciwJCQlcCi0rCQkJICJpbmZlcmlvciBubyBsb25nZXIgZXhpc3Rz Iik7CSAgICAgICAgXAotKwlyZXR1cm4gTlVMTDsJCQkJCQlcCi0rICAgICAgfQkJCQkJCQkJXAot KyAgfSB3aGlsZSAoMCkKLSsKLStzdHJ1Y3QgaW5mbGlzdF9lbnRyeSB7Ci0rICBpbmZlcmlvcl9v YmplY3QgKmluZl9vYmo7Ci0rICBzdHJ1Y3QgaW5mbGlzdF9lbnRyeSAqbmV4dDsKLSt9OwotKwot KwwKLSsKLSsvKiBJbmZlcmlvciBvYmplY3RzIGxpc3QuICAqLwotKwotKy8qIExpc3QgY29udGFp bmluZyBpbmZlcmlvcl9vYmplY3RzLiAgVGhpcyBsaXN0IG93bnMgYSByZWZlcmVuY2UgdG8gZWFj aAotKyAgIG9iamVjdCBpdCBjb250YWlucy4gICovCi0rc3RhdGljIHN0cnVjdCBpbmZsaXN0X2Vu dHJ5ICpnZGJweV9pbmZlcmlvcl9saXN0OwotKwotK3N0YXRpYyBpbnQgbmluZmVyaW9yczsKLSsK LSsKLSsvKiBBbiBvYnNlcnZlciBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVu IGFuIGluZmVyaW9yIGhhcwotKyAgIGJlZW4gY3JlYXRlZC4gIENyZWF0ZXMgYSBjb3JyZXNwb25k aW5nIFB5dGhvbiBvYmplY3QgZm9yIHRoZSBpbmZlcmlvcgotKyAgIGFuZCBhZGRzIGl0IHRvIHRo ZSBsaXN0LiAgKi8KLStzdGF0aWMgdm9pZAotK2FkZF9pbmZlcmlvcl9vYmplY3QgKGludCBwaWQp Ci0rewotKyAgc3RydWN0IGluZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAocGlkKTsK LSsgIGluZmVyaW9yX29iamVjdCAqaW5mX29iajsKLSsgIHN0cnVjdCBpbmZsaXN0X2VudHJ5ICpl bnRyeTsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwotKyAgaWYgKCFpbmYpCi0rICAg IHsKLSsgICAgICB3YXJuaW5nIChfKCJDYW4ndCBjcmVhdGUgUHl0aG9uIEluZmVyaW9yIG9iamVj dC4iKSk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAvKiBXaGlsZSBjcmVhdGluZyBu ZXcgaW5mZXJpb3Igbm8gaW5mZXJpb3IgdGhyZWFkIGlzIGF2YWlsYWJsZS4gIFRoZXJlZm9yZQot KyAgICAgZ2V0X2N1cnJlbnRfYXJjaCBoYXMgbm8gdmFsaWQgY3VycmVudCBmcmFtZSAoYW5kIGl0 IHdvdWxkIGNyYXNoKS4gICovCi0rCi0rICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKHRh cmdldF9nZGJhcmNoLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsKLSsgIGluZl9vYmogPSBQeU9iamVj dF9OZXcgKGluZmVyaW9yX29iamVjdCwgJmluZmVyaW9yX29iamVjdF90eXBlKTsKLSsgIGlmICgh aW5mX29iaikKLSsgICAgewotKyAgICAgIHdhcm5pbmcgKF8oIkNhbid0IGNyZWF0ZSBQeXRob24g SW5mZXJpb3Igb2JqZWN0LiIpKTsKLSsgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKLSsgICAg ICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBp bmZfb2JqLT5pbmZlcmlvciA9IGluZjsKLSsgIGluZl9vYmotPnRocmVhZHMgPSBOVUxMOwotKyAg aW5mX29iai0+bnRocmVhZHMgPSAwOwotKwotKyAgZW50cnkgPSB4bWFsbG9jIChzaXplb2YgKHN0 cnVjdCBpbmZsaXN0X2VudHJ5KSk7Ci0rICBlbnRyeS0+aW5mX29iaiA9IGluZl9vYmo7Ci0rICBl bnRyeS0+bmV4dCA9IGdkYnB5X2luZmVyaW9yX2xpc3Q7Ci0rCi0rICBnZGJweV9pbmZlcmlvcl9s aXN0ID0gZW50cnk7Ci0rCi0rICBuaW5mZXJpb3JzKys7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xl YW51cCk7Ci0rfQotKwotKy8qIEFuIG9ic2VydmVyIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMg Y2FsbGVkIHdoZW4gYW4gaW5mZXJpb3IgaGFzCi0rICAgYmVlbiBkZWxldGVkLiAgUmVtb3ZlcyB0 aGUgY29ycmVzcG9uZGluZyBQeXRob24gb2JqZWN0IGZyb20gdGhlCi0rICAgaW5mZXJpb3IgbGlz dCwgYW5kIHJlbW92ZXMgdGhlIGxpc3QncyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4gICovCi0r c3RhdGljIHZvaWQKLStkZWxldGVfaW5mZXJpb3Jfb2JqZWN0IChpbnQgcGlkKQotK3sKLSsgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgc3RydWN0IGluZmxpc3RfZW50cnkgKippbmZfZW50 cnksICppbmZfdG1wOwotKyAgc3RydWN0IHRocmVhZGxpc3RfZW50cnkgKnRoX2VudHJ5LCAqdGhf dG1wOwotKwotKyAgLyogRmluZCBpbmZlcmlvcl9vYmplY3QgZm9yIHRoZSBnaXZlbiBQSUQuICAq LwotKyAgZm9yIChpbmZfZW50cnkgPSAmZ2RicHlfaW5mZXJpb3JfbGlzdDsgKmluZl9lbnRyeSAh PSBOVUxMOwotKyAgICAgICBpbmZfZW50cnkgPSAmKCppbmZfZW50cnkpLT5uZXh0KQotKyAgICBp ZiAoKCppbmZfZW50cnkpLT5pbmZfb2JqLT5pbmZlcmlvci0+cGlkID09IHBpZCkKLSsgICAgICBi cmVhazsKLSsKLSsgIGlmICghKmluZl9lbnRyeSkKLSsgICAgcmV0dXJuOwotKwotKyAgY2xlYW51 cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1 YWdlKTsKLSsKLSsgIGluZl90bXAgPSAqaW5mX2VudHJ5OwotKyAgaW5mX3RtcC0+aW5mX29iai0+ aW5mZXJpb3IgPSBOVUxMOwotKwotKyAgLyogRGVhbGxvY2F0ZSB0aHJlYWRzIGxpc3QuICAqLwot KyAgZm9yICh0aF9lbnRyeSA9IGluZl90bXAtPmluZl9vYmotPnRocmVhZHM7IHRoX2VudHJ5ICE9 IE5VTEw7KQotKyAgICB7Ci0rICAgICAgUHlfREVDUkVGICh0aF9lbnRyeS0+dGhyZWFkX29iaik7 Ci0rCi0rICAgICAgdGhfdG1wID0gdGhfZW50cnk7Ci0rICAgICAgdGhfZW50cnkgPSB0aF9lbnRy eS0+bmV4dDsKLSsgICAgICB4ZnJlZSAodGhfdG1wKTsKLSsgICAgfQotKwotKyAgaW5mX3RtcC0+ aW5mX29iai0+bnRocmVhZHMgPSAwOwotKwotKyAgKmluZl9lbnRyeSA9ICgqaW5mX2VudHJ5KS0+ bmV4dDsKLSsgIFB5X0RFQ1JFRiAoaW5mX3RtcC0+aW5mX29iaik7Ci0rICB4ZnJlZSAoaW5mX3Rt cCk7Ci0rCi0rICBuaW5mZXJpb3JzLS07Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0r fQotKwotKy8qIEZpbmRzIHRoZSBQeXRob24gSW5mZXJpb3Igb2JqZWN0IGZvciB0aGUgZ2l2ZW4g cGlkLiAgUmV0dXJucyBhIGJvcnJvd2VkCi0rICAgcmVmZXJlbmNlLiAgKi8KLStQeU9iamVjdCAq Ci0rZmluZF9pbmZlcmlvcl9vYmplY3QgKGludCBwaWQpCi0rewotKyAgc3RydWN0IGluZmxpc3Rf ZW50cnkgKnA7Ci0rCi0rICBmb3IgKHAgPSBnZGJweV9pbmZlcmlvcl9saXN0OyBwICE9IE5VTEw7 IHAgPSBwLT5uZXh0KQotKyAgICBpZiAocC0+aW5mX29iai0+aW5mZXJpb3ItPnBpZCA9PSBwaWQp Ci0rICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBwLT5pbmZfb2JqOwotKwotKyAgcmV0dXJuIE5V TEw7Ci0rfQotKwotKy8qIEZpbmRzIHRoZSBQeXRob24gSW5mZXJpb3JUaHJlYWQgb2JqZWN0IGZv ciB0aGUgZ2l2ZW4gcHRpZC4gIFJldHVybnMgYQotKyAgIGJvcnJvd2VkIHJlZmVyZW5jZS4gICov Ci0rdGhyZWFkX29iamVjdCAqCi0rZmluZF90aHJlYWRfb2JqZWN0IChwdGlkX3QgcHRpZCkKLSt7 Ci0rICBpbnQgcGlkOwotKyAgc3RydWN0IGluZmxpc3RfZW50cnkgKnA7Ci0rICBzdHJ1Y3QgdGhy ZWFkbGlzdF9lbnRyeSAqcTsKLSsKLSsgIHBpZCA9IFBJREdFVCAocHRpZCk7Ci0rICBmb3IgKHAg PSBnZGJweV9pbmZlcmlvcl9saXN0OyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQotKyAgICBpZiAo cC0+aW5mX29iai0+aW5mZXJpb3ItPnBpZCA9PSBwaWQpCi0rICAgICAgZm9yIChxID0gcC0+aW5m X29iai0+dGhyZWFkczsgcSAhPSBOVUxMOyBxID0gcS0+bmV4dCkKLSsJaWYgKHB0aWRfZXF1YWwg KHEtPnRocmVhZF9vYmotPnRocmVhZC0+cHRpZCwgcHRpZCkpCi0rCSAgcmV0dXJuIHEtPnRocmVh ZF9vYmo7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rDAotKwotKy8qIEluZmVyaW9yIG9i amVjdC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSthZGRfdGhyZWFkX29iamVjdCAoc3RydWN0IHRo cmVhZF9pbmZvICp0cCkKLSt7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSsgIHRocmVh ZF9vYmplY3QgKnRocmVhZF9vYmo7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZl9vYmo7Ci0rICBz dHJ1Y3QgdGhyZWFkbGlzdF9lbnRyeSAqZW50cnk7Ci0rCi0rICAvKiBOb3RlIHRoYXQgdGhlIGFy Y2ggZG9lcyBub3QgbWF0dGVyIGhlcmUsIGJlY2F1c2Ugd2UgY2FuJ3QgcnVuCi0rICAgICBhcmJp dHJhcnkgUHl0aG9uIGNvZGUuICBDYWxsaW5nIGdldF9jdXJyZW50X2FyY2ggaGVyZSB3aWxsCi0r ICAgICBjcmFzaC4gICovCi0rICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKHRhcmdldF9n ZGJhcmNoLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsKLSsgIHRocmVhZF9vYmogPSBjcmVhdGVfdGhy ZWFkX29iamVjdCAodHApOwotKyAgaWYgKCF0aHJlYWRfb2JqKQotKyAgICB7Ci0rICAgICAgd2Fy bmluZyAoXygiQ2FuJ3QgY3JlYXRlIFB5dGhvbiBJbmZlcmlvclRocmVhZCBvYmplY3QuIikpOwot KyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVw KTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGluZl9vYmogPSAoaW5mZXJpb3Jfb2Jq ZWN0ICopIHRocmVhZF9vYmotPmluZl9vYmo7Ci0rCi0rICBlbnRyeSA9IHhtYWxsb2MgKHNpemVv ZiAoc3RydWN0IHRocmVhZGxpc3RfZW50cnkpKTsKLSsgIGVudHJ5LT50aHJlYWRfb2JqID0gdGhy ZWFkX29iajsKLSsgIGVudHJ5LT5uZXh0ID0gaW5mX29iai0+dGhyZWFkczsKLSsKLSsgIGluZl9v YmotPnRocmVhZHMgPSBlbnRyeTsKLSsgIGluZl9vYmotPm50aHJlYWRzKys7Ci0rCi0rICBkb19j bGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZGVsZXRlX3RocmVhZF9v YmplY3QgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAsIGludCBpZ25vcmUpCi0rewotKyAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXA7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZl9vYmo7Ci0rICB0aHJl YWRfb2JqZWN0ICp0aHJlYWRfb2JqOwotKyAgc3RydWN0IHRocmVhZGxpc3RfZW50cnkgKiplbnRy eSwgKnRtcDsKLSsKLSsgIGluZl9vYmogPSAoaW5mZXJpb3Jfb2JqZWN0ICopIGZpbmRfaW5mZXJp b3Jfb2JqZWN0IChQSURHRVQodHAtPnB0aWQpKTsKLSsgIGlmICghaW5mX29iaikKLSsgICAgcmV0 dXJuOwotKwotKyAgLyogRmluZCB0aHJlYWQgZW50cnkgaW4gaXRzIGluZmVyaW9yJ3MgdGhyZWFk X2xpc3QuICAqLwotKyAgZm9yIChlbnRyeSA9ICZpbmZfb2JqLT50aHJlYWRzOyAqZW50cnkgIT0g TlVMTDsgZW50cnkgPSAmKCplbnRyeSktPm5leHQpCi0rICAgIGlmICgoKmVudHJ5KS0+dGhyZWFk X29iai0+dGhyZWFkID09IHRwKQotKyAgICAgIGJyZWFrOwotKwotKyAgaWYgKCEqZW50cnkpCi0r ICAgIHJldHVybjsKLSsKLSsgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJl bnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7Ci0rCi0rICB0bXAgPSAqZW50cnk7Ci0rICB0 bXAtPnRocmVhZF9vYmotPnRocmVhZCA9IE5VTEw7Ci0rCi0rICAqZW50cnkgPSAoKmVudHJ5KS0+ bmV4dDsKLSsgIGluZl9vYmotPm50aHJlYWRzLS07Ci0rCi0rICBQeV9ERUNSRUYgKHRtcC0+dGhy ZWFkX29iaik7Ci0rICB4ZnJlZSAodG1wKTsKLSsKLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVw KTsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStpbmZweV90aHJlYWRzIChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgdGhyZWFkbGlz dF9lbnRyeSAqZW50cnk7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZl9vYmogPSAoaW5mZXJpb3Jf b2JqZWN0ICopIHNlbGY7Ci0rICBQeU9iamVjdCAqdHVwbGU7Ci0rCi0rICBJTkZQWV9SRVFVSVJF X1ZBTElEIChpbmZfb2JqKTsKLSsKLSsKLSsgIHR1cGxlID0gUHlUdXBsZV9OZXcgKGluZl9vYmot Pm50aHJlYWRzKTsKLSsgIGlmICghdHVwbGUpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyog VGhlIGxpc3QgaXMgaW4gcmV2ZXJzZSBvcmRlciBvZiB0aHJlYWQgYWdlIChpLmUuLCBuZXdlc3Qg Y29tZXMgZmlyc3QpLAotKyAgICAgaXMgdGhpcyBhIHByb2JsZW0/ICAqLwotKyAgZm9yIChpID0g MCwgZW50cnkgPSBpbmZfb2JqLT50aHJlYWRzOyBpIDwgaW5mX29iai0+bnRocmVhZHM7Ci0rICAg ICAgIGkrKywgZW50cnkgPSBlbnRyeS0+bmV4dCkKLSsgICAgewotKyAgICAgIFB5X0lOQ1JFRiAo ZW50cnktPnRocmVhZF9vYmopOwotKyAgICAgIFB5VHVwbGVfU0VUX0lURU0gKHR1cGxlLCBpLCAo UHlPYmplY3QgKikgZW50cnktPnRocmVhZF9vYmopOwotKyAgICB9Ci0rCi0rICByZXR1cm4gdHVw bGU7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0raW5mcHlfZ2V0X251bSAoUHlPYmplY3Qg KnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgaW5mZXJpb3Jfb2JqZWN0ICppbmYgPSAoaW5m ZXJpb3Jfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICBJTkZQWV9SRVFVSVJFX1ZBTElEIChpbmYpOwot KwotKyAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyAoaW5mLT5pbmZlcmlvci0+bnVtKTsKLSt9Ci0r Ci0rc3RhdGljIFB5T2JqZWN0ICoKLStpbmZweV9nZXRfcGlkIChQeU9iamVjdCAqc2VsZiwgdm9p ZCAqY2xvc3VyZSkKLSt7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZiA9IChpbmZlcmlvcl9vYmpl Y3QgKikgc2VsZjsKLSsKLSsgIElORlBZX1JFUVVJUkVfVkFMSUQgKGluZik7Ci0rCi0rICByZXR1 cm4gUHlMb25nX0Zyb21Mb25nIChpbmYtPmluZmVyaW9yLT5waWQpOwotK30KLSsKLStzdGF0aWMg UHlPYmplY3QgKgotK2luZnB5X2dldF93YXNfYXR0YWNoZWQgKFB5T2JqZWN0ICpzZWxmLCB2b2lk ICpjbG9zdXJlKQotK3sKLSsgIGluZmVyaW9yX29iamVjdCAqaW5mID0gKGluZmVyaW9yX29iamVj dCAqKSBzZWxmOwotKyAgSU5GUFlfUkVRVUlSRV9WQUxJRCAoaW5mKTsKLSsgIGlmIChpbmYtPmlu ZmVyaW9yLT5hdHRhY2hfZmxhZykKLSsgICAgUHlfUkVUVVJOX1RSVUU7Ci0rICBQeV9SRVRVUk5f RkFMU0U7Ci0rfQotKwotKwwKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuaW5mZXJpb3Jz ICgpIC0+IChnZGIuSW5mZXJpb3IsIC4uLikuCi0rICAgUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGlu ZmVyaW9ycy4gICovCi0rCi0rUHlPYmplY3QgKgotK2dkYnB5X2luZmVyaW9ycyAoUHlPYmplY3Qg KnVudXNlZCwgUHlPYmplY3QgKnVudXNlZDIpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgaW5m bGlzdF9lbnRyeSAqZW50cnk7Ci0rICBQeU9iamVjdCAqdHVwbGU7Ci0rCi0rICB0dXBsZSA9IFB5 VHVwbGVfTmV3IChuaW5mZXJpb3JzKTsKLSsgIGlmICghdHVwbGUpCi0rICAgIHJldHVybiBOVUxM OwotKwotKyAgLyogVGhlIGxpc3QgaXMgaW4gcmV2ZXJzZSBvcmRlciBvZiBpbmZlcmlvciBhZ2Ug KGkuZS4sIG5ld2VzdCBjb21lcyBmaXJzdCksCi0rICAgICBpcyB0aGlzIGEgcHJvYmxlbT8gICov Ci0rICBmb3IgKGkgPSAwLCBlbnRyeSA9IGdkYnB5X2luZmVyaW9yX2xpc3Q7Ci0rICAgICAgIGkg PCBuaW5mZXJpb3JzOwotKyAgICAgICBpKyssIGVudHJ5ID0gZW50cnktPm5leHQpCi0rICAgIHsK LSsgICAgICBQeV9JTkNSRUYgKGVudHJ5LT5pbmZfb2JqKTsKLSsgICAgICBQeVR1cGxlX1NFVF9J VEVNICh0dXBsZSwgaSwgKFB5T2JqZWN0ICopIGVudHJ5LT5pbmZfb2JqKTsKLSsgICAgfQotKwot KyAgcmV0dXJuIHR1cGxlOwotK30KLSsKLSsMCi0rCi0rLyogTWVtYnVmIGFuZCBtZW1vcnkgbWFu aXB1bGF0aW9uLiAgKi8KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIucmVhZF9tZW1vcnkg KGFkZHJlc3MsIGxlbmd0aCkuCi0rICAgUmV0dXJucyBhIFB5dGhvbiBidWZmZXIgb2JqZWN0IHdp dGggTEVOR1RIIGJ5dGVzIG9mIHRoZSBpbmZlcmlvcidzIG1lbW9yeQotKyAgIGF0IEFERFJFU1Mu IEJvdGggYXJndW1lbnRzIGFyZSBpbnRlZ2Vycy4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoK LStpbmZweV9yZWFkX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sK LSsgIGludCBlcnJvciA9IDA7Ci0rICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOwotKyAgdm9pZCAq YnVmZmVyID0gTlVMTDsKLSsgIG1lbWJ1Zl9vYmplY3QgKm1lbWJ1Zl9vYmo7Ci0rICBQeU9iamVj dCAqYWRkcl9vYmosICpsZW5ndGhfb2JqOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwot KyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwotKyAgaWYgKCEgUHlB cmdfUGFyc2VUdXBsZSAoYXJncywgIk9PIiwgJmFkZHJfb2JqLCAmbGVuZ3RoX29iaikpCi0rICAg IHJldHVybiBOVUxMOwotKwotKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51 cCwgTlVMTCk7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAg ICB7Ci0rICAgICAgaWYgKCFnZXRfYWRkcl9mcm9tX3B5dGhvbiAoYWRkcl9vYmosICZhZGRyKQot KwkgIHx8ICFnZXRfYWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsK LSsJICBlcnJvciA9IDE7Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBidWZmZXIgPSB4bWFs bG9jIChsZW5ndGgpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1ZmZlcik7Ci0rCi0r ICAgICAgcmVhZF9tZW1vcnkgKGFkZHIsIGJ1ZmZlciwgbGVuZ3RoKTsKLSsgICAgfQotKyAgR0RC X1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0rCi0rICBpZiAoZXJyb3IpCi0rICAgIHsK LSsgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAg ICB9Ci0rCi0rICBtZW1idWZfb2JqID0gUHlPYmplY3RfTmV3IChtZW1idWZfb2JqZWN0LCAmbWVt YnVmX29iamVjdF90eXBlKTsKLSsgIGlmIChtZW1idWZfb2JqID09IE5VTEwpCi0rICAgIHsKLSsg ICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9yLAotKwkJICAgICAgICJDb3Vs ZCBub3QgYWxsb2NhdGUgbWVtb3J5IGJ1ZmZlciBvYmplY3QuIik7Ci0rICAgICAgZG9fY2xlYW51 cHMgKGNsZWFudXBzKTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgZGlzY2Fy ZF9jbGVhbnVwcyAoY2xlYW51cHMpOwotKwotKyAgbWVtYnVmX29iai0+YnVmZmVyID0gYnVmZmVy OwotKyAgbWVtYnVmX29iai0+YWRkciA9IGFkZHI7Ci0rICBtZW1idWZfb2JqLT5sZW5ndGggPSBs ZW5ndGg7Ci0rCi0rICByZXR1cm4gUHlCdWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdCAoKFB5T2Jq ZWN0ICopIG1lbWJ1Zl9vYmosIDAsCi0rCQkJCSAgICAgICBQeV9FTkRfT0ZfQlVGRkVSKTsKLSt9 Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLndyaXRlX21lbW9yeSAoYWRkcmVzcywgYnVm ZmVyIFssIGxlbmd0aF0pLgotKyAgIFdyaXRlcyB0aGUgY29udGVudHMgb2YgQlVGRkVSIChhIFB5 dGhvbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgcmVhZCBidWZmZXIKLSsgICBwcm90b2NvbCkgYXQg QUREUkVTUyBpbiB0aGUgaW5mZXJpb3IncyBtZW1vcnkuICBXcml0ZSBMRU5HVEggYnl0ZXMgZnJv bQotKyAgIEJVRkZFUiwgb3IgaXRzIGVudGlyZSBjb250ZW50cyBpZiB0aGUgYXJndW1lbnQgaXMg bm90IHByb3ZpZGVkLiAgVGhlCi0rICAgZnVuY3Rpb24gcmV0dXJucyBub3RoaW5nLiAgKi8KLSsK LStzdGF0aWMgUHlPYmplY3QgKgotK2luZnB5X3dyaXRlX21lbW9yeSAoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIGludCBidWZfbGVuLCBlcnJvciA9IDA7Ci0rICBjb25z dCBjaGFyICpidWZmZXI7Ci0rICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOwotKyAgUHlPYmplY3Qg KmFkZHJfb2JqLCAqbGVuZ3RoX29iaiA9IE5VTEw7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4 Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiT3Mj fE8iLCAmYWRkcl9vYmosICZidWZmZXIsICZidWZfbGVuLAotKwkJCSAgJmxlbmd0aF9vYmopKQot KyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19B TEwpCi0rICAgIHsKLSsgICAgICBpZiAoIWdldF9hZGRyX2Zyb21fcHl0aG9uIChhZGRyX29iaiwg JmFkZHIpKQotKwl7Ci0rCSAgZXJyb3IgPSAxOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgICAgCi0r ICAgICAgaWYgKCFsZW5ndGhfb2JqKQotKwlsZW5ndGggPSBidWZfbGVuOwotKyAgICAgIGVsc2Ug aWYgKCFnZXRfYWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJ ICBlcnJvciA9IDE7Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICB3cml0ZV9tZW1vcnkgKGFk ZHIsIGJ1ZmZlciwgbGVuZ3RoKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04g KGV4Y2VwdCk7Ci0rCi0rICBpZiAoZXJyb3IpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgUHlf UkVUVVJOX05PTkU7Ci0rfQotKwotKy8qIERlc3RydWN0b3Igb2YgTWVtYnVmIG9iamVjdHMuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rbWJweV9kZWFsbG9jIChQeU9iamVjdCAqc2VsZikKLSt7Ci0r ICB4ZnJlZSAoKChtZW1idWZfb2JqZWN0ICopIHNlbGYpLT5idWZmZXIpOwotKyAgc2VsZi0+b2Jf dHlwZS0+dHBfZnJlZSAoc2VsZik7Ci0rfQotKwotKy8qIFJldHVybiBhIGRlc2NyaXB0aW9uIG9m IHRoZSBNZW1idWYgb2JqZWN0LiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK21icHlfc3Ry IChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1l bWJ1Zl9vYmplY3QgKikgc2VsZjsKLSsKLSsgIHJldHVybiBQeVN0cmluZ19Gcm9tRm9ybWF0ICgi bWVtb3J5IGJ1ZmZlciBmb3IgYWRkcmVzcyAlcywgJXMgYnl0ZXMgbG9uZyIsCi0rCQkJICAgICAg cGFkZHJlc3MgKHB5dGhvbl9nZGJhcmNoLCBtZW1idWZfb2JqLT5hZGRyKSwKLSsJCQkgICAgICBw dWxvbmdlc3QgKG1lbWJ1Zl9vYmotPmxlbmd0aCkpOwotK30KLSsKLStzdGF0aWMgUHlfc3NpemVf dAotK2dldF9yZWFkX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc2VnbWVudCwg dm9pZCAqKnB0cnB0cikKLSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1 Zl9vYmplY3QgKikgc2VsZjsKLSsKLSsgIGlmIChzZWdtZW50KQotKyAgICB7Ci0rICAgICAgUHlF cnJfU2V0U3RyaW5nIChQeUV4Y19TeXN0ZW1FcnJvciwKLSsJCSAgICAgICAiVGhlIG1lbW9yeSBi dWZmZXIgc3VwcG9ydHMgb25seSBvbmUgc2VnbWVudC4iKTsKLSsgICAgICByZXR1cm4gLTE7Ci0r ICAgIH0KLSsKLSsgICpwdHJwdHIgPSBtZW1idWZfb2JqLT5idWZmZXI7Ci0rCi0rICByZXR1cm4g bWVtYnVmX29iai0+bGVuZ3RoOwotK30KLSsKLStzdGF0aWMgUHlfc3NpemVfdAotK2dldF93cml0 ZV9idWZmZXIgKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IHNlZ21lbnQsIHZvaWQgKipwdHJw dHIpCi0rewotKyAgcmV0dXJuIGdldF9yZWFkX2J1ZmZlciAoc2VsZiwgc2VnbWVudCwgcHRycHRy KTsKLSt9Ci0rCi0rc3RhdGljIFB5X3NzaXplX3QKLStnZXRfc2VnX2NvdW50IChQeU9iamVjdCAq c2VsZiwgUHlfc3NpemVfdCAqbGVucCkKLSt7Ci0rICBpZiAobGVucCkKLSsgICAgKmxlbnAgPSAo KG1lbWJ1Zl9vYmplY3QgKikgc2VsZiktPmxlbmd0aDsKLSsKLSsgIHJldHVybiAxOwotK30KLSsK LStzdGF0aWMgUHlfc3NpemVfdAotK2dldF9jaGFyX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5 X3NzaXplX3Qgc2VnbWVudCwgY2hhciAqKnB0cnB0cikKLSt7Ci0rICB2b2lkICpwdHIgPSBOVUxM OwotKyAgUHlfc3NpemVfdCByZXQ7Ci0rCi0rICByZXQgPSBnZXRfcmVhZF9idWZmZXIgKHNlbGYs IHNlZ21lbnQsICZwdHIpOwotKyAgKnB0cnB0ciA9IChjaGFyICopIHB0cjsKLSsKLSsgIHJldHVy biByZXQ7Ci0rfQotKwotKy8qIEFkZHMgR0RCIHZhbHVlIFYgdG8gdGhlIHBhdHRlcm4gYnVmZmVy IGluICpQQVRURVJOX0JVRi4gIElmIFNJWkUgaXMgbm90IHplcm8sCi0rICAgaXQgc3BlY2lmaWVz IHRoZSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBWIHRvIGNvcHkgdG8gKlBBVFRFUk5fQlVGLiAgVGhl Ci0rICAgZnVuY3Rpb24gaW5jcmVhc2VzIHRoZSBzaXplIG9mICpQQVRURVJOX0JVRiBhcyBuZWNl c3NhcnksIGFkanVzdGluZwotKyAgICpQQVRURVJOX0JVRl9FTkQgYW5kICpQQVRURVJOX0JVRl9T SVpFIGluIHRoZSBwcm9jZXNzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2FkZF92YWx1ZV9wYXR0 ZXJuIChzdHJ1Y3QgdmFsdWUgKnYsIGludCBzaXplLCBjaGFyICoqcGF0dGVybl9idWYsCi0rCQkg ICBjaGFyICoqcGF0dGVybl9idWZfZW5kLCBVTE9OR0VTVCAqcGF0dGVybl9idWZfc2l6ZSkKLSt7 Ci0rICBpbnQgdmFsX2J5dGVzOwotKwotKyAgaWYgKHNpemUpCi0rICAgIHsKLSsgICAgICBMT05H RVNUIHggPSB2YWx1ZV9hc19sb25nICh2KTsKLSsKLSsgICAgICBpZiAoc2l6ZSA9PSAxKQotKwkq KCpwYXR0ZXJuX2J1Zl9lbmQpKysgPSB4OwotKyAgICAgIGVsc2UKLSsJewotKwkgIHB1dF9iaXRz ICh4LCAqcGF0dGVybl9idWZfZW5kLCBzaXplICogOCwKLSsJCSAgICBnZGJhcmNoX2J5dGVfb3Jk ZXIgKHB5dGhvbl9nZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRyk7Ci0rCSAgKnBhdHRlcm5fYnVm X2VuZCArPSBzaXplOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UKLSsgICB7Ci0rICAgICB2YWxfYnl0 ZXMgPSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodikpOwotKwotKyAgICAgaW5jcmVhc2VfcGF0 dGVybl9idWZmZXIgKHBhdHRlcm5fYnVmLCBwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgcGF0 dGVybl9idWZfc2l6ZSwgdmFsX2J5dGVzKTsKLSsKLSsgICAgIG1lbWNweSAoKnBhdHRlcm5fYnVm X2VuZCwgdmFsdWVfY29udGVudHNfcmF3ICh2KSwgdmFsX2J5dGVzKTsKLSsgICAgICpwYXR0ZXJu X2J1Zl9lbmQgKz0gdmFsX2J5dGVzOwotKyAgIH0KLSt9Ci0rCi0rLyogVGhpcyBmdW5jdGlvbiBk b2VzIHRoZSBhY3R1YWwgd29yayBvZiBjb25zdHJ1Y3RpbmcgdGhlIHBhdHRlcm4gYnVmZmVyIGZy b20KLSsgICBPQkouICBJZiBPQkogaXMgYW4gb2JqZWN0IHdoaWNoIGltcGxlbWVudHMgdGhlIHJl YWQgYnVmZmVyIHByb3RvY29sIChzdWNoCi0rICAgYXMgYSBzdHJpbmcsIGEgYnl0ZSBhcnJheSBv ciBnZGIuTWVtYnVmKSwgdGhlbiBpdHMgY29udGVudHMgYXJlIGRpcmVjdGx5Ci0rICAgY29waWVk IHRvICpQQVRURVJOX0JVRi4gIElmIGl0IGlzIGEgbGlzdCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlz IHJlY3Vyc2l2ZWx5Ci0rICAgY2FsbGVkIGZvciBlYWNoIG9mIGl0cyBlbGVtZW50cy4gIElmIE9C SiBpcyBhbiBvYmplY3Qgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZAotKyAgIHRvIGEgR0RCIHZhbHVl LCB0aGVuIHRoZSBjb250ZW50cyBvZiB0aGUgdmFsdWUgYXJlIGNvcGllZCB0byBQQVRURVJOX0JV Ri4KLSsgICBJZiBTSVpFIGlzIGRpZmZlcmVudCB0aGFuIHplcm8sIHRoZW4gaXQgbGltaXRzIHRo ZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2gKLSsgICBhcmUgY29waWVkIHRvIHRoZSBidWZmZXIgaW4g Y2FzZSBPQkogaXMgY29udmVydGVkIHRvIGEgR0RCIHZhbHVlLiAgVGhhdAotKyAgIG1lYW5zIHRo YXQgU0laRSBpbmZsdWVuY2VzIG9ubHkgUHl0aG9uIHNjYWxhcnMgYW5kIGdkYi5WYWx1ZSBvYmpl Y3RzLgotKyAgIFRoZSBmdW5jdGlvbiBpbmNyZWFzZXMgdGhlIHNpemUgb2YgKlBBVFRFUk5fQlVG IGFzIG5lY2Vzc2FyeSwgYWRqdXN0aW5nCi0rICAgKlBBVFRFUk5fQlVGX0VORCBhbmQgKlBBVFRF Uk5fQlVGX1NJWkUgaW4gdGhlIHByb2Nlc3MuCi0rCi0rICAgUmV0dXJucyAxIG9uIHN1Y2Nlc3Mg b3IgMCBvbiBmYWlsdXJlLCB3aXRoIGEgUHl0aG9uIGV4Y2VwdGlvbiBzZXQuICBUaGlzCi0rICAg ZnVuY3Rpb24gY2FuIGFsc28gdGhyb3cgR0RCIGV4Y2VwdGlvbnMuICAqLwotKwotK3N0YXRpYyBp bnQKLSthZGRfcGF0dGVybl9lbGVtZW50IChQeU9iamVjdCAqb2JqLCBpbnQgc2l6ZSwgY2hhciAq KnBhdHRlcm5fYnVmLAotKwkJICAgICBjaGFyICoqcGF0dGVybl9idWZfZW5kLCBVTE9OR0VTVCAq cGF0dGVybl9idWZfc2l6ZSkKLSt7Ci0rICBpZiAoUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyIChv YmopKQotKyAgICB7Ci0rICAgICAgLyogSGFuZGxlIHN0cmluZywgVW5pY29kZSBzdHJpbmcsIGJ5 dGUgYXJyYXksIGdkYi5NZW1idWYgYW5kIGFueSBvdGhlcgotKyAgICAgICAgIG9iamVjdCBpbXBs ZW1lbnRpbmcgdGhlIGJ1ZmZlciBwcm90b2NvbC4gIFRoZSBTSVpFIHBhcmFtZXRlciBpcwotKwkg aWdub3JlZCBpbiB0aGlzIGNhc2UuICAqLwotKwotKyAgICAgIFB5X3NzaXplX3QgdmFsX2J5dGVz OwotKyAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlcjsKLSsKLSsgICAgICBpZiAoUHlPYmplY3RfQXNS ZWFkQnVmZmVyIChvYmosICZidWZmZXIsICZ2YWxfYnl0ZXMpID09IC0xKQotKwlyZXR1cm4gMDsK LSsKLSsgICAgICBpbmNyZWFzZV9wYXR0ZXJuX2J1ZmZlciAocGF0dGVybl9idWYsIHBhdHRlcm5f YnVmX2VuZCwKLSsJCQkgICAgICAgcGF0dGVybl9idWZfc2l6ZSwgdmFsX2J5dGVzKTsKLSsKLSsg ICAgICBtZW1jcHkgKCpwYXR0ZXJuX2J1Zl9lbmQsIGJ1ZmZlciwgdmFsX2J5dGVzKTsKLSsgICAg ICAqcGF0dGVybl9idWZfZW5kICs9IHZhbF9ieXRlczsKLSsgICAgfQotKyAgZWxzZSBpZiAoZ2Ri cHlfaXNfdmFsdWVfb2JqZWN0IChvYmopKQotKyAgICBhZGRfdmFsdWVfcGF0dGVybiAodmFsdWVf b2JqZWN0X3RvX3ZhbHVlIChvYmopLCBzaXplLCBwYXR0ZXJuX2J1ZiwKLSsJCSAgICAgICBwYXR0 ZXJuX2J1Zl9lbmQsIHBhdHRlcm5fYnVmX3NpemUpOwotKyAgZWxzZSBpZiAoUHlTZXF1ZW5jZV9D aGVjayAob2JqKSkKLSsgICAgewotKyAgICAgIC8qIEhhbmRsZSBsaXN0cyBhbmQgdHVwbGVzLiAg Ki8KLSsKLSsgICAgICBQeV9zc2l6ZV90IGksIG51bV9vYmpzOwotKwotKyAgICAgIG51bV9vYmpz ID0gUHlTZXF1ZW5jZV9TaXplIChvYmopOwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fb2Jq czsgaSsrKQotKwlpZiAoIWFkZF9wYXR0ZXJuX2VsZW1lbnQgKFB5U2VxdWVuY2VfR2V0SXRlbSAo b2JqLCBpKSwgc2l6ZSwKLSsJCQkJICBwYXR0ZXJuX2J1ZiwgcGF0dGVybl9idWZfZW5kLAotKwkJ CQkgIHBhdHRlcm5fYnVmX3NpemUpKQotKwkgIHJldHVybiAwOwotKyAgICB9Ci0rICBlbHNlCi0r ICAgIHsKLSsgICAgICAvKiBTZWUgaWYgd2UgY2FuIGNvbnZlcnQgZnJvbSBhIFB5dGhvbiBvYmpl Y3QgdG8gYSBHREIgdmFsdWUuICAqLwotKwotKyAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IGNvbnZl cnRfdmFsdWVfZnJvbV9weXRob24gKG9iaik7Ci0rCi0rICAgICAgaWYgKHYpCi0rCWFkZF92YWx1 ZV9wYXR0ZXJuICh2LCBzaXplLCBwYXR0ZXJuX2J1ZiwgcGF0dGVybl9idWZfZW5kLAotKwkJCSAg IHBhdHRlcm5fYnVmX3NpemUpOwotKyAgICAgIGVsc2UKLSsJcmV0dXJuIDA7Ci0rICAgIH0KLSsK LSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBDb25zdHJ1Y3RzIHRoZSBzZWFyY2ggcGF0dGVybiBm cm9tIE9CSiwgcHV0dGluZyBpdCBpbiAqUEFUVEVSTl9CVUZQLCBhbmQgaXRzCi0rICAgc2l6ZSBp biAqUEFUVEVSTl9MRU5QLiAgU2VlIHRoZSBmdW5jdGlvbiBhZGRfcGF0dGVybl9lbGVtZW50IHRv IGxlYXJuIGhvdwotKyAgIHRoZSBzZWFyY2ggcGF0dGVybiBpcyBvYnRhaW5lZCBmcm9tIE9CSi4K LSsKLSsgICBSZXR1cm5zIDEgb24gc3VjY2VzcyBvciAwIG9uIGZhaWx1cmUsIHdpdGggYSBQeXRo b24gZXhjZXB0aW9uIHNldC4gIFRoaXMKLSsgICBmdW5jdGlvbiBjYW4gYWxzbyB0aHJvdyBHREIg ZXhjZXB0aW9ucy4gICovCi0rCi0rc3RhdGljIGludAotK2dldF9zZWFyY2hfcGF0dGVybiAoUHlP YmplY3QgKm9iaiwgaW50IHNpemUsIGNoYXIgKipwYXR0ZXJuX2J1ZnAsCi0rCQkgICAgVUxPTkdF U1QgKnBhdHRlcm5fbGVucCkKLSt7Ci0rICAvKiBCdWZmZXIgdG8gaG9sZCB0aGUgc2VhcmNoIHBh dHRlcm4uICAqLwotKyAgY2hhciAqcGF0dGVybl9idWY7Ci0rICAvKiBDdXJyZW50IHNpemUgb2Yg c2VhcmNoIHBhdHRlcm4gYnVmZmVyLgotKyAgICAgV2UgcmVhbGxvYyBzcGFjZSBhcyBuZWVkZWQu ICAqLwotKyAgVUxPTkdFU1QgcGF0dGVybl9idWZfc2l6ZTsKLSsgIC8qIFBvaW50ZXIgdG8gb25l IHBhc3QgdGhlIGxhc3QgaW4tdXNlIHBhcnQgb2YgcGF0dGVybl9idWYuICAqLwotKyAgY2hhciAq cGF0dGVybl9idWZfZW5kOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwczsKLSsKLSsg IGFsbG9jYXRlX3BhdHRlcm5fYnVmZmVyICgmcGF0dGVybl9idWYsICZwYXR0ZXJuX2J1Zl9lbmQs ICZwYXR0ZXJuX2J1Zl9zaXplKTsKLSsgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoZnJl ZV9jdXJyZW50X2NvbnRlbnRzLCAmcGF0dGVybl9idWYpOwotKwotKyAgaWYgKCFhZGRfcGF0dGVy bl9lbGVtZW50IChvYmosIHNpemUsICZwYXR0ZXJuX2J1ZiwgJnBhdHRlcm5fYnVmX2VuZCwKLSsJ CQkgICAgJnBhdHRlcm5fYnVmX3NpemUpKQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKG9s ZF9jbGVhbnVwcyk7Ci0rCi0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgICpwYXR0ZXJu X2J1ZnAgPSBwYXR0ZXJuX2J1ZjsKLSsgICpwYXR0ZXJuX2xlbnAgPSBwYXR0ZXJuX2J1Zl9lbmQg LSBwYXR0ZXJuX2J1ZjsKLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7Ci0r Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YKLSsgICBnZGIuc2Vh cmNoX21lbW9yeSAoYWRkcmVzcywgbGVuZ3RoLCBwYXR0ZXJuIFssIHNpemVdIFssIG1heF9jb3Vu dF0pLgotKyAgIFRoZSB0aGlyZCBhcmd1bWVudCBtYXkgYmUgZWl0aGVyIGEgcGF0dGVybiwgb3Ig YSBsaXN0IG9yIHR1cHBsZSBvZiBwYXR0ZXJucwotKyAgIHRvIGJlIHNlYXJjaGVkLiAgU2l6ZSBp cyB0aGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIHNlYXJjaCBxdWVyeSB2YWx1ZSwgZWl0aGVyCi0r ICAgMSwgMiwgNCBvciA4LiAgUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGFkZHJlc3NlcyB3aGVyZSBt YXRjaGVzIHdlcmUgZm91bmQuICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0raW5mcHlfc2Vh cmNoX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cp Ci0rewotKyAgaW50IHNpemUgPSAwOwotKyAgdW5zaWduZWQgaW50IGZvdW5kX2NvdW50ID0gMDsK LSsgIGxvbmcgbWF4X2NvdW50ID0gMDsKLSsgIENPUkVfQUREUiBzdGFydF9hZGRyLCBsZW5ndGg7 Ci0rICBjaGFyICpwYXR0ZXJuX2J1ZjsKLSsgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyAi YWRkcmVzcyIsICJsZW5ndGgiLCAicGF0dGVybiIsICJzaXplIiwKLSsJCQkgICAgICAibWF4X2Nv dW50IiwgTlVMTCB9OwotKyAgVUxPTkdFU1QgcGF0dGVybl9sZW4sIHNlYXJjaF9zcGFjZV9sZW47 Ci0rICBQeU9iamVjdCAqcGF0dGVybiwgKmxpc3QgPSBOVUxMLCAqc3RhcnRfYWRkcl9vYmosICps ZW5ndGhfb2JqOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwot KyAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIChhcmdzLCBrdywgIk9PT3xpbCIs IGtleXdvcmRzLAotKwkJCQkgICAgICZzdGFydF9hZGRyX29iaiwgJmxlbmd0aF9vYmosICZwYXR0 ZXJuLAotKwkJCQkgICAgICZzaXplLCAmbWF4X2NvdW50KSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0r Ci0rICBpZiAoIW1heF9jb3VudCkKLSsgICAgbWF4X2NvdW50ID0gTE9OR19NQVg7Ci0rCi0rICBp ZiAoc2l6ZSAhPSAwICYmIHNpemUgIT0gMSAmJiBzaXplICE9IDIgJiYgc2l6ZSAhPSA0ICYmIHNp emUgIT0gOCkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfVmFsdWVFcnJv ciwgImludmFsaWQgcGF0dGVybiBzaXplIik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0K LSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAg ICBpZiAoZ2V0X2FkZHJfZnJvbV9weXRob24gKHN0YXJ0X2FkZHJfb2JqLCAmc3RhcnRfYWRkcikK LSsJICAmJiBnZXRfYWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsK LSsJICBpZiAoIWxlbmd0aCkKLSsJICAgIHsKLSsJICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4 Y19WYWx1ZUVycm9yLCAiZW1wdHkgc2VhcmNoIHJhbmdlIik7Ci0rCSAgICAgIGJyZWFrOwotKwkg ICAgfQotKwkgIC8qIFdhdGNoIGZvciBvdmVyZmxvd3MuICAqLwotKwkgIGVsc2UgaWYgKGxlbmd0 aCA+IENPUkVfQUREUl9NQVgKLSsJCSAgIHx8IChzdGFydF9hZGRyICsgbGVuZ3RoIC0gMSkgPCBz dGFydF9hZGRyKQotKwkgICAgewotKwkgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1ZhbHVl RXJyb3IsICJzZWFyY2ggcmFuZ2UgdG9vIGxhcmdlIik7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAg fQotKwotKwkgIHNlYXJjaF9zcGFjZV9sZW4gPSBsZW5ndGg7Ci0rCi0rCSAgaWYgKGdldF9zZWFy Y2hfcGF0dGVybiAocGF0dGVybiwgc2l6ZSwgJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9sZW4pKQot KwkgICAgewotKwkgICAgICAvKiBBbnkgY2xlYW51cHMgZ2V0IGF1dG9tYXRpY2FsbHkgZXhlY3V0 ZWQgb24gYW4gZXhjZXB0aW9uLiAgKi8KLSsJICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBz ID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGF0dGVybl9idWYpOwotKwotKwkgICAgICBsaXN0ID0g UHlMaXN0X05ldyAoMCk7Ci0rCi0rCSAgICAgIHdoaWxlIChzZWFyY2hfc3BhY2VfbGVuID49IHBh dHRlcm5fbGVuICYmIGZvdW5kX2NvdW50IDwgbWF4X2NvdW50KQotKwkJewotKwkJICBDT1JFX0FE RFIgZm91bmRfYWRkcjsKLSsJCSAgaW50IGZvdW5kOwotKwotKwkJICBmb3VuZCA9IHNlYXJjaF9t ZW1vcnkgKCZzdGFydF9hZGRyLCAmc2VhcmNoX3NwYWNlX2xlbiwKLSsJCQkJCSBwYXR0ZXJuX2J1 ZiwgcGF0dGVybl9sZW4sICZmb3VuZF9hZGRyKTsKLSsJCSAgaWYgKGZvdW5kIDw9IDApCi0rCQkg ICAgYnJlYWs7Ci0rCi0rCQkgIFB5TGlzdF9BcHBlbmQgKGxpc3QsIFB5TG9uZ19Gcm9tVW5zaWdu ZWRMb25nIChmb3VuZF9hZGRyKSk7Ci0rCQkgICsrZm91bmRfY291bnQ7Ci0rCQl9Ci0rCi0rCSAg ICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgR0RC X1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0rCi0rICByZXR1cm4gbGlzdDsKLSt9Ci0r Ci0rDAotKwotK3ZvaWQKLStnZGJweV9pbml0aWFsaXplX2luZmVyaW9yICh2b2lkKQotK3sKLSsg IGlmIChQeVR5cGVfUmVhZHkgKCZpbmZlcmlvcl9vYmplY3RfdHlwZSkgPCAwKQotKyAgICByZXR1 cm47Ci0rCi0rICBQeV9JTkNSRUYgKCZpbmZlcmlvcl9vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVs ZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJJbmZlcmlvciIsCi0rCQkgICAgICAoUHlPYmplY3Qg KikgJmluZmVyaW9yX29iamVjdF90eXBlKTsKLSsKLSsgIGdkYnB5X2luZmVyaW9yX2xpc3QgPSBO VUxMOwotKyAgbmluZmVyaW9ycyA9IDA7Ci0rCi0rICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3Jf YXBwZWFyZWQgKGFkZF9pbmZlcmlvcl9vYmplY3QpOwotKyAgb2JzZXJ2ZXJfYXR0YWNoX2luZmVy aW9yX2V4aXQgKGRlbGV0ZV9pbmZlcmlvcl9vYmplY3QpOwotKyAgb2JzZXJ2ZXJfYXR0YWNoX25l d190aHJlYWQgKGFkZF90aHJlYWRfb2JqZWN0KTsKLSsgIG9ic2VydmVyX2F0dGFjaF90aHJlYWRf ZXhpdCAoZGVsZXRlX3RocmVhZF9vYmplY3QpOwotKwotKyAgaWYgKFB5VHlwZV9SZWFkeSAoJm1l bWJ1Zl9vYmplY3RfdHlwZSkgPCAwKQotKyAgICByZXR1cm47Ci0rCi0rICBQeV9JTkNSRUYgKCZt ZW1idWZfb2JqZWN0X3R5cGUpOwotKyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAi TWVtYnVmIiwgKFB5T2JqZWN0ICopICZtZW1idWZfb2JqZWN0X3R5cGUpOwotK30KLSsKLSsMCi0r Ci0rc3RhdGljIFB5R2V0U2V0RGVmIGluZmVyaW9yX29iamVjdF9nZXRzZXRbXSA9Ci0rewotKyAg eyAibnVtIiwgaW5mcHlfZ2V0X251bSwgTlVMTCwgIklEIG9mIGluZmVyaW9yLCBhcyBhc3NpZ25l ZCBieSBHREIuIiwgTlVMTCB9LAotKyAgeyAicGlkIiwgaW5mcHlfZ2V0X3BpZCwgTlVMTCwgIlBJ RCBvZiBpbmZlcmlvciwgYXMgYXNzaWduZWQgYnkgdGhlIE9TLiIsCi0rICAgIE5VTEwgfSwKLSsg IHsgIndhc19hdHRhY2hlZCIsIGluZnB5X2dldF93YXNfYXR0YWNoZWQsIE5VTEwsCi0rICAgICJU cnVlIGlmIHRoZSBpbmZlcmlvciB3YXMgY3JlYXRlZCB1c2luZyAnYXR0YWNoJy4iLCBOVUxMIH0s Ci0rCi0rICB7IE5VTEwgfQotK307Ci0rCi0rc3RhdGljIFB5TWV0aG9kRGVmIGluZmVyaW9yX29i amVjdF9tZXRob2RzW10gPQotK3sKLSsgIHsgInRocmVhZHMiLCBpbmZweV90aHJlYWRzLCBNRVRI X05PQVJHUywKLSsgICAgIlJldHVybiBhbGwgdGhlIHRocmVhZHMgb2YgdGhpcyBpbmZlcmlvci4i IH0sCi0rCi0rICB7ICJyZWFkX21lbW9yeSIsIGluZnB5X3JlYWRfbWVtb3J5LCBNRVRIX1ZBUkFS R1MsCi0rICAgICJyZWFkX21lbW9yeSAoYWRkcmVzcywgbGVuZ3RoKSAtPiBidWZmZXJcblwKLStS ZXR1cm4gYSBidWZmZXIgb2JqZWN0IGZvciByZWFkaW5nIGZyb20gdGhlIGluZmVyaW9yJ3MgbWVt b3J5LiIgfSwKLSsgIHsgIndyaXRlX21lbW9yeSIsIGluZnB5X3dyaXRlX21lbW9yeSwgTUVUSF9W QVJBUkdTLAotKyAgICAid3JpdGVfbWVtb3J5IChhZGRyZXNzLCBidWZmZXIgWywgbGVuZ3RoXSlc blwKLStXcml0ZSB0aGUgZ2l2ZW4gYnVmZmVyIG9iamVjdCB0byB0aGUgaW5mZXJpb3IncyBtZW1v cnkuIiB9LAotKyAgeyAic2VhcmNoX21lbW9yeSIsIChQeUNGdW5jdGlvbikgaW5mcHlfc2VhcmNo X21lbW9yeSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSsgICAgInNlYXJjaF9tZW1v cnkgKGFkZHJlc3MsIGxlbmd0aCwgcGF0dGVybiBbLCBzaXplXSBbLCBtYXhfY291bnRdKSAtPiBs aXN0XG5cCi0rUmV0dXJuIGEgbGlzdCB3aXRoIHRoZSBhZGRyZXNzZXMgd2hlcmUgbWF0Y2hlcyB3 ZXJlIGZvdW5kLiIgfSwKLSsKLSsgIHsgTlVMTCB9Ci0rfTsKLSsKLStzdGF0aWMgUHlUeXBlT2Jq ZWN0IGluZmVyaW9yX29iamVjdF90eXBlID0KLSt7Ci0rICBQeU9iamVjdF9IRUFEX0lOSVQgKE5V TEwpCi0rICAwLAkJCQkgIC8qIG9iX3NpemUgKi8KLSsgICJnZGIuSW5mZXJpb3IiLAkJICAvKiB0 cF9uYW1lICovCi0rICBzaXplb2YgKGluZmVyaW9yX29iamVjdCksCSAgLyogdHBfYmFzaWNzaXpl ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZW1zaXplICovCi0rICAwLAkJCQkgIC8qIHRwX2RlYWxs b2MgKi8KLSsgIDAsCQkJCSAgLyogdHBfcHJpbnQgKi8KLSsgIDAsCQkJCSAgLyogdHBfZ2V0YXR0 ciAqLwotKyAgMCwJCQkJICAvKiB0cF9zZXRhdHRyICovCi0rICAwLAkJCQkgIC8qIHRwX2NvbXBh cmUgKi8KLSsgIDAsCQkJCSAgLyogdHBfcmVwciAqLwotKyAgMCwJCQkJICAvKiB0cF9hc19udW1i ZXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSsgIDAsCQkJCSAgLyogdHBf YXNfbWFwcGluZyAqLwotKyAgMCwJCQkJICAvKiB0cF9oYXNoICAqLwotKyAgMCwJCQkJICAvKiB0 cF9jYWxsICovCi0rICAwLAkJCQkgIC8qIHRwX3N0ciAqLwotKyAgMCwJCQkJICAvKiB0cF9nZXRh dHRybyAqLwotKyAgMCwJCQkJICAvKiB0cF9zZXRhdHRybyAqLwotKyAgMCwJCQkJICAvKiB0cF9h c19idWZmZXIgKi8KLSsgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9JVEVS LCAgLyogdHBfZmxhZ3MgKi8KLSsgICJHREIgaW5mZXJpb3Igb2JqZWN0IiwJICAvKiB0cF9kb2Mg Ki8KLSsgIDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfY2xlYXIg Ki8KLSsgIDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSsgIDAsCQkJCSAgLyogdHBfd2Vh a2xpc3RvZmZzZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRlciAqLwotKyAgMCwJCQkJICAvKiB0 cF9pdGVybmV4dCAqLwotKyAgaW5mZXJpb3Jfb2JqZWN0X21ldGhvZHMsCSAgLyogdHBfbWV0aG9k cyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICBpbmZlcmlvcl9vYmplY3RfZ2V0 c2V0LAkgIC8qIHRwX2dldHNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9iYXNlICovCi0rICAwLAkJ CQkgIC8qIHRwX2RpY3QgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3JfZ2V0ICovCi0rICAwLAkJ CQkgIC8qIHRwX2Rlc2NyX3NldCAqLwotKyAgMCwJCQkJICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0r ICAwLAkJCQkgIC8qIHRwX2luaXQgKi8KLSsgIDAJCQkJICAvKiB0cF9hbGxvYyAqLwotK307Ci0r Ci0rDAotKwotKy8qIFB5dGhvbiBkb2Vzbid0IHByb3ZpZGUgYSBkZWNlbnQgd2F5IHRvIGdldCBj b21wYXRpYmlsaXR5IGhlcmUuICAqLwotKyNpZiBIQVZFX0xJQlBZVEhPTjJfNAotKyNkZWZpbmUg Q0hBUkJVRkZFUlBST0NfTkFNRSBnZXRjaGFyYnVmZmVycHJvYwotKyNlbHNlCi0rI2RlZmluZSBD SEFSQlVGRkVSUFJPQ19OQU1FIGNoYXJidWZmZXJwcm9jCi0rI2VuZGlmCi0rCi0rc3RhdGljIFB5 QnVmZmVyUHJvY3MgYnVmZmVyX3Byb2NzID0gewotKyAgZ2V0X3JlYWRfYnVmZmVyLAotKyAgZ2V0 X3dyaXRlX2J1ZmZlciwKLSsgIGdldF9zZWdfY291bnQsCi0rICAvKiBUaGUgY2FzdCBoZXJlIHdv cmtzIGFyb3VuZCBhIGRpZmZlcmVuY2UgYmV0d2VlbiBQeXRob24gMi40IGFuZAotKyAgICAgUHl0 aG9uIDIuNS4gICovCi0rICAoQ0hBUkJVRkZFUlBST0NfTkFNRSkgZ2V0X2NoYXJfYnVmZmVyCi0r fTsKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IG1lbWJ1Zl9vYmplY3RfdHlwZSA9IHsKLSsgIFB5 T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIu TWVtYnVmIiwJCQkgIC8qdHBfbmFtZSovCi0rICBzaXplb2YgKG1lbWJ1Zl9vYmplY3QpLAkgIC8q dHBfYmFzaWNzaXplKi8KLSsgIDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCi0rICBtYnB5X2RlYWxs b2MsCQkJICAvKnRwX2RlYWxsb2MqLwotKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJ CSAgLyp0cF9nZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAg Lyp0cF9jb21wYXJlKi8KLSsgIDAsCQkJCSAgLyp0cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9h c19udW1iZXIqLwotKyAgMCwJCQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0 cF9hc19tYXBwaW5nKi8KLSsgIDAsCQkJCSAgLyp0cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBf Y2FsbCovCi0rICBtYnB5X3N0ciwJCQkgIC8qdHBfc3RyKi8KLSsgIDAsCQkJCSAgLyp0cF9nZXRh dHRybyovCi0rICAwLAkJCQkgIC8qdHBfc2V0YXR0cm8qLwotKyAgJmJ1ZmZlcl9wcm9jcywJCSAg Lyp0cF9hc19idWZmZXIqLwotKyAgUHlfVFBGTEFHU19ERUZBVUxULAkJICAvKnRwX2ZsYWdzKi8K LSsgICJHREIgbWVtb3J5IGJ1ZmZlciBvYmplY3QiLCAJICAvKnRwX2RvYyovCi0rICAwLAkJCQkg IC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0rICAwLAkJCQkg IC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICov Ci0rICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRlcm5leHQgKi8K LSsgIDAsCQkJCSAgLyogdHBfbWV0aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICov Ci0rICAwLAkJCQkgIC8qIHRwX2dldHNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9iYXNlICovCi0r ICAwLAkJCQkgIC8qIHRwX2RpY3QgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3JfZ2V0ICovCi0r ICAwLAkJCQkgIC8qIHRwX2Rlc2NyX3NldCAqLwotKyAgMCwJCQkJICAvKiB0cF9kaWN0b2Zmc2V0 ICovCi0rICAwLAkJCQkgIC8qIHRwX2luaXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfYWxsb2MgKi8K LSsgIFB5VHlwZV9HZW5lcmljTmV3CQkgIC8qIHRwX25ldyAqLwotK307Ci1kaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9weS1pbmZ0aHJlYWQuYyBiL2dkYi9weXRob24vcHktaW5mdGhyZWFkLmMKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMWU0ZWFiCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvcHl0aG9uL3B5LWluZnRocmVhZC5jCi1AQCAtMCwwICsxLDI4NSBAQAotKy8q IFB5dGhvbiBpbnRlcmZhY2UgdG8gaW5mZXJpb3IgdGhyZWFkcy4KLSsKLSsgICBDb3B5cmlnaHQg KEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0r I2luY2x1ZGUgImdkYnRocmVhZC5oIgotKyNpbmNsdWRlICJpbmZlcmlvci5oIgotKyNpbmNsdWRl ICJweXRob24taW50ZXJuYWwuaCIKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IHRocmVhZF9vYmpl Y3RfdHlwZTsKLSsKLSsvKiBSZXF1aXJlIHRoYXQgSU5GRVJJT1IgYmUgYSB2YWxpZCBpbmZlcmlv ciBJRC4gICovCi0rI2RlZmluZSBUSFBZX1JFUVVJUkVfVkFMSUQoVGhyZWFkKQkJCQlcCi0rICBk byB7CQkJCQkJCQlcCi0rICAgIGlmICghVGhyZWFkLT50aHJlYWQpCQkJCQlcCi0rICAgICAgewkJ CQkJCQkJXAotKwlQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwJCQlcCi0rCQkJ ICJ0aHJlYWQgbm8gbG9uZ2VyIGV4aXN0cyIpOwkgICAgICAgIFwKLSsJcmV0dXJuIE5VTEw7CQkJ CQkJXAotKyAgICAgIH0JCQkJCQkJCVwKLSsgIH0gd2hpbGUgKDApCi0rCi0rDAotKwotK3RocmVh ZF9vYmplY3QgKgotK2NyZWF0ZV90aHJlYWRfb2JqZWN0IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRw KQotK3sKLSsgIHRocmVhZF9vYmplY3QgKnRocmVhZF9vYmo7Ci0rICAKLSsgIHRocmVhZF9vYmog PSBQeU9iamVjdF9OZXcgKHRocmVhZF9vYmplY3QsICZ0aHJlYWRfb2JqZWN0X3R5cGUpOwotKyAg aWYgKCF0aHJlYWRfb2JqKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIHRocmVhZF9vYmotPnRo cmVhZCA9IHRwOwotKyAgdGhyZWFkX29iai0+aW5mX29iaiA9IGZpbmRfaW5mZXJpb3Jfb2JqZWN0 IChQSURHRVQgKHRwLT5wdGlkKSk7Ci0rICBQeV9JTkNSRUYgKHRocmVhZF9vYmotPmluZl9vYmop OwotKwotKyAgcmV0dXJuIHRocmVhZF9vYmo7Ci0rfQotKwotKwwKLSsKLStzdGF0aWMgdm9pZAot K3RocHlfZGVhbGxvYyAoUHlPYmplY3QgKnNlbGYpCi0rewotKyAgUHlfREVDUkVGICgoKHRocmVh ZF9vYmplY3QgKikgc2VsZiktPmluZl9vYmopOwotKyAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSAo c2VsZik7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rdGhweV9nZXRfbnVtIChQeU9iamVj dCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICB0aHJlYWRfb2JqZWN0ICp0aHJlYWRfb2Jq ID0gKHRocmVhZF9vYmplY3QgKikgc2VsZjsKLSsKLSsgIFRIUFlfUkVRVUlSRV9WQUxJRCAodGhy ZWFkX29iaik7Ci0rCi0rICByZXR1cm4gUHlMb25nX0Zyb21Mb25nICh0aHJlYWRfb2JqLT50aHJl YWQtPm51bSk7Ci0rfQotKwotKwwKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBJbmZlcmlvci5m cmFtZXMgKCkgLT4gKGdkYi5GcmFtZSwgLi4uKS4KLSsgICBSZXR1cm5zIGEgdHVwbGUgb2YgYWxs IGZyYW1lIG9iamVjdHMuICAqLwotK1B5T2JqZWN0ICoKLSt0aHB5X2ZyYW1lcyAoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIGludCByZXN1bHQgPSAwOwotKyAgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lOwotKyAgUHlPYmplY3QgKmZyYW1lX29iajsKLSsgIFB5T2JqZWN0 ICpsaXN0LCAqdHVwbGU7Ci0rICB0aHJlYWRfb2JqZWN0ICp0aHJlYWRfb2JqID0gKHRocmVhZF9v YmplY3QgKikgc2VsZjsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgdm9sYXRpbGUg c3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwotKyAgVEhQWV9SRVFVSVJFX1ZBTElEICh0 aHJlYWRfb2JqKTsKLSsKLSsgIGxpc3QgPSBQeUxpc3RfTmV3ICgwKTsKLSsgIGlmIChsaXN0ID09 IE5VTEwpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9y LCAiQ291bGQgbm90IGFsbG9jYXRlIGZyYW1lcyBsaXN0LiIpOwotKyAgICAgIHJldHVybiBOVUxM OwotKyAgICB9Ci0rCi0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3Jlc3RvcmVfY3VycmVudF90 aHJlYWQgKCk7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAg ICB7Ci0rICAgICAgc3dpdGNoX3RvX3RocmVhZCAodGhyZWFkX29iai0+dGhyZWFkLT5wdGlkKTsK LSsKLSsgICAgICBmb3IgKGZyYW1lID0gZ2V0X2N1cnJlbnRfZnJhbWUgKCk7IGZyYW1lOyBmcmFt ZSA9IGdldF9wcmV2X2ZyYW1lIChmcmFtZSkpCi0rCXsKLSsJICBmcmFtZV9vYmogPSBmcmFtZV9p bmZvX3RvX2ZyYW1lX29iamVjdCAoZnJhbWUpOwotKwkgIGlmIChmcmFtZV9vYmogPT0gTlVMTCkK LSsJICAgIHsKLSsJICAgICAgUHlfREVDUkVGIChsaXN0KTsKLSsJICAgICAgbGlzdCA9IE5VTEw7 Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwotKwkgIFB5TGlzdF9BcHBlbmQgKGxpc3QsIGZy YW1lX29iaik7Ci0rCX0KLSsgICAgfQotKyAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKyAgICB7 Ci0rICAgICAgUHlfREVDUkVGIChsaXN0KTsKLSsgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChl eGNlcHQucmVhc29uID09IFJFVFVSTl9RVUlUCi0rCQkJICAgPyBQeUV4Y19LZXlib2FyZEludGVy cnVwdCA6IFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJCQkgICAiJXMiLCBleGNlcHQubWVzc2FnZSk7 Ci0rICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSsKLSsgIGlmIChsaXN0KQot KyAgICB7Ci0rICAgICAgdHVwbGUgPSBQeUxpc3RfQXNUdXBsZSAobGlzdCk7Ci0rICAgICAgUHlf REVDUkVGIChsaXN0KTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB0dXBsZSA9IE5VTEw7Ci0rCi0r ICByZXR1cm4gdHVwbGU7Ci0rfQotKwotKy8qIEltcGxlbWVudGF0aW9uIG9mIEluZmVyaW9yVGhy ZWFkLm5ld2VzdF9mcmFtZSAoKSAtPiBnZGIuRnJhbWUuCi0rICAgUmV0dXJucyB0aGUgbmV3ZXN0 IGZyYW1lIG9iamVjdC4gICovCi0rUHlPYmplY3QgKgotK3RocHlfbmV3ZXN0X2ZyYW1lIChQeU9i amVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewotKyAgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lOwotKyAgUHlPYmplY3QgKmZyYW1lX29iaiA9IE5VTEw7ICAgLyogSW5pdGlhbGl6ZSB0byBh cHBlYXNlIGdjYyB3YXJuaW5nLiAgKi8KLSsgIHRocmVhZF9vYmplY3QgKnRocmVhZF9vYmogPSAo dGhyZWFkX29iamVjdCAqKSBzZWxmOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rICB2 b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBUSFBZX1JFUVVJUkVf VkFMSUQgKHRocmVhZF9vYmopOwotKwotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9yZXN0b3Jl X2N1cnJlbnRfdGhyZWFkICgpOwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNL X0FMTCkKLSsgICAgewotKyAgICAgIHN3aXRjaF90b190aHJlYWQgKHRocmVhZF9vYmotPnRocmVh ZC0+cHRpZCk7Ci0rCi0rICAgICAgZnJhbWUgPSBnZXRfY3VycmVudF9mcmFtZSAoKTsKLSsgICAg ICBmcmFtZV9vYmogPSBmcmFtZV9pbmZvX3RvX2ZyYW1lX29iamVjdCAoZnJhbWUpOwotKyAgICB9 Ci0rICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsKLSsgIGRvX2NsZWFudXBz IChjbGVhbnVwKTsKLSsKLSsgIHJldHVybiBmcmFtZV9vYmo7Ci0rfQotKwotKy8qIEltcGxlbWVu dGF0aW9uIG9mIEluZmVyaW9yVGhyZWFkLnN3aXRjaCAoKS4KLSsgICBNYWtlcyB0aGlzIHRoZSBH REIgc2VsZWN0ZWQgdGhyZWFkLiAgKi8KLStzdGF0aWMgUHlPYmplY3QgKgotK3RocHlfc3dpdGNo IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewotKyAgdGhyZWFkX29iamVjdCAq dGhyZWFkX29iaiA9ICh0aHJlYWRfb2JqZWN0ICopIHNlbGY7Ci0rICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsg IFRIUFlfUkVRVUlSRV9WQUxJRCAodGhyZWFkX29iaik7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2Vw dCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgc3dpdGNoX3RvX3RocmVhZCAodGhy ZWFkX29iai0+dGhyZWFkLT5wdGlkKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJ T04gKGV4Y2VwdCk7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rDAotKwotKy8qIElt cGxlbWVudGF0aW9uIG9mIGdkYi5zZWxlY3RlZF90aHJlYWQgKCkgLT4gZ2RiLkluZmVyaW9yVGhy ZWFkLgotKyAgIFJldHVybnMgdGhlIHNlbGVjdGVkIHRocmVhZCBvYmplY3QuICAqLwotK1B5T2Jq ZWN0ICoKLStnZGJweV9zZWxlY3RlZF90aHJlYWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAq YXJncykKLSt7Ci0rICBQeU9iamVjdCAqdGhyZWFkX29iajsKLSsgIAotKyAgdGhyZWFkX29iaiA9 IChQeU9iamVjdCAqKSBmaW5kX3RocmVhZF9vYmplY3QgKGluZmVyaW9yX3B0aWQpOwotKyAgaWYg KHRocmVhZF9vYmopCi0rICAgIHsKLSsgICAgICBQeV9JTkNSRUYgKHRocmVhZF9vYmopOwotKyAg ICAgIHJldHVybiB0aHJlYWRfb2JqOwotKyAgICB9Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9 Ci0rCi0rDAotKwotK3ZvaWQKLStnZGJweV9pbml0aWFsaXplX3RocmVhZCAodm9pZCkKLSt7Ci0r ICBpZiAoUHlUeXBlX1JlYWR5ICgmdGhyZWFkX29iamVjdF90eXBlKSA8IDApCi0rICAgIHJldHVy bjsKLSsKLSsgIFB5X0lOQ1JFRiAoJnRocmVhZF9vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9B ZGRPYmplY3QgKGdkYl9tb2R1bGUsICJJbmZlcmlvclRocmVhZCIsCi0rCQkgICAgICAoUHlPYmpl Y3QgKikgJnRocmVhZF9vYmplY3RfdHlwZSk7Ci0rfQotKwotKwwKLSsKLStzdGF0aWMgUHlHZXRT ZXREZWYgdGhyZWFkX29iamVjdF9nZXRzZXRbXSA9Ci0rewotKyAgeyAibnVtIiwgdGhweV9nZXRf bnVtLCBOVUxMLCAiSUQgb2YgdGhlIHRocmVhZCwgYXMgYXNzaWduZWQgYnkgR0RCLiIsIE5VTEwg fSwKLSsKLSsgIHsgTlVMTCB9Ci0rfTsKLSsKLStzdGF0aWMgUHlNZXRob2REZWYgdGhyZWFkX29i amVjdF9tZXRob2RzW10gPQotK3sKLSsgIHsgImZyYW1lcyIsIHRocHlfZnJhbWVzLCBNRVRIX05P QVJHUywKLSsgICAgImZyYW1lcyAoKSAtPiAoZ2RiLkZyYW1lLCAuLi4pXG5cCi0rUmV0dXJuIGEg dHVwbGUgY29udGFpbmluZyBhbGwgZnJhbWVzIGluIHRoZSB0aHJlYWQuIiB9LAotKyAgeyAibmV3 ZXN0X2ZyYW1lIiwgdGhweV9uZXdlc3RfZnJhbWUsIE1FVEhfTk9BUkdTLAotKyAgICAibmV3ZXN0 X2ZyYW1lICgpIC0+IGdkYi5GcmFtZVxuXAotK1JldHVybiB0aGUgbmV3ZXN0IGZyYW1lIGluIHRo ZSB0aHJlYWQuIiB9LAotKyAgeyAic3dpdGNoIiwgdGhweV9zd2l0Y2gsIE1FVEhfTk9BUkdTLAot KyAgICAic3dpdGNoICgpXG5cCi0rTWFrZXMgdGhpcyB0aGUgR0RCIHNlbGVjdGVkIHRocmVhZC4i IH0sCi0rCi0rICB7IE5VTEwgfQotK307Ci0rCi0rc3RhdGljIFB5VHlwZU9iamVjdCB0aHJlYWRf b2JqZWN0X3R5cGUgPQotK3sKLSsgIFB5T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkKLSsgIDAsCQkJ CSAgLypvYl9zaXplKi8KLSsgICJnZGIuSW5mZXJpb3JUaHJlYWQiLAkJICAvKnRwX25hbWUqLwot KyAgc2l6ZW9mICh0aHJlYWRfb2JqZWN0KSwJICAvKnRwX2Jhc2ljc2l6ZSovCi0rICAwLAkJCQkg IC8qdHBfaXRlbXNpemUqLwotKyAgdGhweV9kZWFsbG9jLAkJCSAgLyp0cF9kZWFsbG9jKi8KLSsg IDAsCQkJCSAgLyp0cF9wcmludCovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciovCi0rICAwLAkJ CQkgIC8qdHBfc2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCi0rICAwLAkJCQkg IC8qdHBfcmVwciovCi0rICAwLAkJCQkgIC8qdHBfYXNfbnVtYmVyKi8KLSsgIDAsCQkJCSAgLyp0 cF9hc19zZXF1ZW5jZSovCi0rICAwLAkJCQkgIC8qdHBfYXNfbWFwcGluZyovCi0rICAwLAkJCQkg IC8qdHBfaGFzaCAqLwotKyAgMCwJCQkJICAvKnRwX2NhbGwqLwotKyAgMCwJCQkJICAvKnRwX3N0 ciovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHJv Ki8KLSsgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIqLwotKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwg UHlfVFBGTEFHU19IQVZFX0lURVIsICAvKnRwX2ZsYWdzKi8KLSsgICJHREIgdGhyZWFkIG9iamVj dCIsCQkgIC8qIHRwX2RvYyAqLwotKyAgMCwJCQkJICAvKiB0cF90cmF2ZXJzZSAqLwotKyAgMCwJ CQkJICAvKiB0cF9jbGVhciAqLwotKyAgMCwJCQkJICAvKiB0cF9yaWNoY29tcGFyZSAqLwotKyAg MCwJCQkJICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9pdGVyICov Ci0rICAwLAkJCQkgIC8qIHRwX2l0ZXJuZXh0ICovCi0rICB0aHJlYWRfb2JqZWN0X21ldGhvZHMs CSAgLyogdHBfbWV0aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICB0aHJl YWRfb2JqZWN0X2dldHNldCwJCSAgLyogdHBfZ2V0c2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Jh c2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGljdCAqLwotKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9n ZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3Jfc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Rp Y3RvZmZzZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfaW5pdCAqLwotKyAgMAkJCQkgIC8qIHRwX2Fs bG9jICovCi0rfTsKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LW1lbWJ1Zi5jIGIvZ2RiL3B5 dGhvbi9weS1tZW1idWYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdi YzI5NGMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vcHktbWVtYnVmLmMKLUBAIC0w LDAgKzEsMjY4IEBACi0rLyogUHl0aG9uIGludGVyZmFjZSB0byB0aGUgaW5mZXJpb3IgbWVtb3J5 LgotKwotKyAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0r I2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAiZ2RiY29yZS5oIgotKyNpbmNsdWRl ICJweXRob24taW50ZXJuYWwuaCIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICBQeU9iamVjdF9I RUFECi0rICB2b2lkICpidWZmZXI7Ci0rCi0rICAvKiBUaGVzZSBhcmUga2VwdCBqdXN0IGZvciBt YnB5X3N0ci4gICovCi0rICBDT1JFX0FERFIgYWRkcjsKLSsgIENPUkVfQUREUiBsZW5ndGg7Ci0r fSBtZW1idWZfb2JqZWN0OwotKwotK3N0YXRpYyBQeVR5cGVPYmplY3QgbWVtYnVmX29iamVjdF90 eXBlOwotKwotKy8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi5yZWFkX21lbW9yeSAoYWRkcmVzcywg bGVuZ3RoKS4KLSsgICBSZXR1cm5zIGEgUHl0aG9uIGJ1ZmZlciBvYmplY3Qgd2l0aCBMRU5HVEgg Ynl0ZXMgb2YgdGhlIGluZmVyaW9yJ3MgbWVtb3J5Ci0rICAgYXQgQUREUkVTUy4gQm90aCBhcmd1 bWVudHMgYXJlIGludGVnZXJzLiAgKi8KLSsKLStQeU9iamVjdCAqCi0rZ2RicHlfcmVhZF9tZW1v cnkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBpbnQgZXJyb3IgPSAw OwotKyAgQ09SRV9BRERSIGFkZHIsIGxlbmd0aDsKLSsgIHZvaWQgKmJ1ZmZlciA9IE5VTEw7Ci0r ICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqOwotKyAgUHlPYmplY3QgKmFkZHJfb2JqLCAqbGVu Z3RoX29iajsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IE5VTEw7Ci0rICB2b2xhdGls ZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1 cGxlIChhcmdzLCAiT08iLCAmYWRkcl9vYmosICZsZW5ndGhfb2JqKSkKLSsgICAgcmV0dXJuIE5V TEw7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0r ICAgICAgaWYgKCFnZXRfYWRkcl9mcm9tX3B5dGhvbiAoYWRkcl9vYmosICZhZGRyKQotKwkgIHx8 ICFnZXRfYWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJICBl cnJvciA9IDE7Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBidWZmZXIgPSB4bWFsbG9jIChs ZW5ndGgpOwotKyAgICAgIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYnVmZmVyKTsK LSsKLSsgICAgICByZWFkX21lbW9yeSAoYWRkciwgYnVmZmVyLCBsZW5ndGgpOwotKyAgICB9Ci0r ICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsKLSsgIGlmIChlcnJvcikKLSsg ICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBkaXNjYXJkX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0rCi0r ICBtZW1idWZfb2JqID0gUHlPYmplY3RfTmV3IChtZW1idWZfb2JqZWN0LCAmbWVtYnVmX29iamVj dF90eXBlKTsKLSsgIGlmIChtZW1idWZfb2JqID09IE5VTEwpCi0rICAgIHsKLSsgICAgICB4ZnJl ZSAoYnVmZmVyKTsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9yLAot KwkJICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGJ1ZmZlciBvYmplY3QuIik7Ci0r ICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIG1lbWJ1Zl9vYmotPmJ1ZmZlciA9IGJ1 ZmZlcjsKLSsgIG1lbWJ1Zl9vYmotPmFkZHIgPSBhZGRyOwotKyAgbWVtYnVmX29iai0+bGVuZ3Ro ID0gbGVuZ3RoOwotKwotKyAgcmV0dXJuIFB5QnVmZmVyX0Zyb21SZWFkV3JpdGVPYmplY3QgKChQ eU9iamVjdCAqKSBtZW1idWZfb2JqLCAwLAotKwkJCQkgICAgICAgUHlfRU5EX09GX0JVRkZFUik7 Ci0rfQotKwotKy8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi53cml0ZV9tZW1vcnkgKGFkZHJlc3Ms IGJ1ZmZlciBbLCBsZW5ndGhdKS4KLSsgICBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIEJVRkZFUiAo YSBQeXRob24gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIHJlYWQgYnVmZmVyCi0rICAgcHJvdG9jb2wp IGF0IEFERFJFU1MgaW4gdGhlIGluZmVyaW9yJ3MgbWVtb3J5LiAgV3JpdGUgTEVOR1RIIGJ5dGVz IGZyb20KLSsgICBCVUZGRVIsIG9yIGl0cyBlbnRpcmUgY29udGVudHMgaWYgdGhlIGFyZ3VtZW50 IGlzIG5vdCBwcm92aWRlZC4gIFRoZQotKyAgIGZ1bmN0aW9uIHJldHVybnMgbm90aGluZy4gICov Ci0rCi0rUHlPYmplY3QgKgotK2dkYnB5X3dyaXRlX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKQotK3sKLSsgIGludCBidWZfbGVuLCBlcnJvciA9IDA7Ci0rICBjb25zdCBj aGFyICpidWZmZXI7Ci0rICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOwotKyAgUHlPYmplY3QgKmFk ZHJfb2JqLCAqbGVuZ3RoX29iaiA9IE5VTEw7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2Vw dGlvbiBleGNlcHQ7Ci0rCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiT3MjfE8i LCAmYWRkcl9vYmosICZidWZmZXIsICZidWZfbGVuLAotKwkJCSAgJmxlbmd0aF9vYmopKQotKyAg ICByZXR1cm4gTlVMTDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwp Ci0rICAgIHsKLSsgICAgICBpZiAoIWdldF9hZGRyX2Zyb21fcHl0aG9uIChhZGRyX29iaiwgJmFk ZHIpKQotKwl7Ci0rCSAgZXJyb3IgPSAxOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgICAgCi0rICAg ICAgaWYgKCFsZW5ndGhfb2JqKQotKwlsZW5ndGggPSBidWZfbGVuOwotKyAgICAgIGVsc2UgaWYg KCFnZXRfYWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJICBl cnJvciA9IDE7Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICB3cml0ZV9tZW1vcnkgKGFkZHIs IGJ1ZmZlciwgbGVuZ3RoKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4 Y2VwdCk7Ci0rCi0rICBpZiAoZXJyb3IpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgUHlfUkVU VVJOX05PTkU7Ci0rfQotKwotKy8qIERlc3RydWN0b3Igb2YgTWVtYnVmIG9iamVjdHMuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rbWJweV9kZWFsbG9jIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICB4 ZnJlZSAoKChtZW1idWZfb2JqZWN0ICopIHNlbGYpLT5idWZmZXIpOwotKyAgc2VsZi0+b2JfdHlw ZS0+dHBfZnJlZSAoc2VsZik7Ci0rfQotKwotKy8qIFJldHVybiBhIGRlc2NyaXB0aW9uIG9mIHRo ZSBNZW1idWYgb2JqZWN0LiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK21icHlfc3RyIChQ eU9iamVjdCAqc2VsZikKLSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1 Zl9vYmplY3QgKikgc2VsZjsKLSsKLSsgIHJldHVybiBQeVN0cmluZ19Gcm9tRm9ybWF0ICgibWVt b3J5IGJ1ZmZlciBmb3IgYWRkcmVzcyAlcywgJXMgYnl0ZXMgbG9uZyIsCi0rCQkJICAgICAgcGFk ZHJlc3MgKG1lbWJ1Zl9vYmotPmFkZHIpLAotKwkJCSAgICAgIHB1bG9uZ2VzdCAobWVtYnVmX29i ai0+bGVuZ3RoKSk7Ci0rfQotKwotK3N0YXRpYyBQeV9zc2l6ZV90Ci0rZ2V0X3JlYWRfYnVmZmVy IChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBzZWdtZW50LCB2b2lkICoqcHRycHRyKQotK3sK LSsgIG1lbWJ1Zl9vYmplY3QgKm1lbWJ1Zl9vYmogPSAobWVtYnVmX29iamVjdCAqKSBzZWxmOwot KwotKyAgaWYgKHNlZ21lbnQpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhj X1N5c3RlbUVycm9yLAotKwkJICAgICAgICJUaGUgbWVtb3J5IGJ1ZmZlciBzdXBwb3J0cyBvbmx5 IG9uZSBzZWdtZW50LiIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgKnB0cnB0 ciA9IG1lbWJ1Zl9vYmotPmJ1ZmZlcjsKLSsKLSsgIHJldHVybiBtZW1idWZfb2JqLT5sZW5ndGg7 Ci0rfQotKwotK3N0YXRpYyBQeV9zc2l6ZV90Ci0rZ2V0X3dyaXRlX2J1ZmZlciAoUHlPYmplY3Qg KnNlbGYsIFB5X3NzaXplX3Qgc2VnbWVudCwgdm9pZCAqKnB0cnB0cikKLSt7Ci0rICByZXR1cm4g Z2V0X3JlYWRfYnVmZmVyIChzZWxmLCBzZWdtZW50LCBwdHJwdHIpOwotK30KLSsKLStzdGF0aWMg UHlfc3NpemVfdAotK2dldF9zZWdfY291bnQgKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90ICps ZW5wKQotK3sKLSsgIGlmIChsZW5wKQotKyAgICAqbGVucCA9ICgobWVtYnVmX29iamVjdCAqKSBz ZWxmKS0+bGVuZ3RoOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBQeV9zc2l6ZV90 Ci0rZ2V0X2NoYXJfYnVmZmVyIChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBzZWdtZW50LCBj aGFyICoqcHRycHRyKQotK3sKLSsgIHZvaWQgKnB0ciA9IE5VTEw7Ci0rICBQeV9zc2l6ZV90IHJl dDsKLSsKLSsgIHJldCA9IGdldF9yZWFkX2J1ZmZlciAoc2VsZiwgc2VnbWVudCwgJnB0cik7Ci0r ICAqcHRycHRyID0gKGNoYXIgKikgcHRyOwotKwotKyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyog UHl0aG9uIGRvZXNuJ3QgcHJvdmlkZSBhIGRlY2VudCB3YXkgdG8gZ2V0IGNvbXBhdGliaWxpdHkg aGVyZS4gICovCi0rI2lmIEhBVkVfTElCUFlUSE9OMl80Ci0rI2RlZmluZSBDSEFSQlVGRkVSUFJP Q19OQU1FIGdldGNoYXJidWZmZXJwcm9jCi0rI2Vsc2UKLSsjZGVmaW5lIENIQVJCVUZGRVJQUk9D X05BTUUgY2hhcmJ1ZmZlcnByb2MKLSsjZW5kaWYKLSsKLStzdGF0aWMgUHlCdWZmZXJQcm9jcyBi dWZmZXJfcHJvY3MgPSB7Ci0rICBnZXRfcmVhZF9idWZmZXIsCi0rICBnZXRfd3JpdGVfYnVmZmVy LAotKyAgZ2V0X3NlZ19jb3VudCwKLSsgIC8qIFRoZSBjYXN0IGhlcmUgd29ya3MgYXJvdW5kIGEg ZGlmZmVyZW5jZSBiZXR3ZWVuIFB5dGhvbiAyLjQgYW5kCi0rICAgICBQeXRob24gMi41LiAgKi8K LSsgIChDSEFSQlVGRkVSUFJPQ19OQU1FKSBnZXRfY2hhcl9idWZmZXIKLSt9OwotKwotK3N0YXRp YyBQeVR5cGVPYmplY3QgbWVtYnVmX29iamVjdF90eXBlID0gewotKyAgUHlPYmplY3RfSEVBRF9J TklUIChOVUxMKQotKyAgMCwJCQkJICAvKm9iX3NpemUqLwotKyAgImdkYi5NZW1idWYiLAkJCSAg Lyp0cF9uYW1lKi8KLSsgIHNpemVvZiAobWVtYnVmX29iamVjdCksCSAgLyp0cF9iYXNpY3NpemUq LwotKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXplKi8KLSsgIG1icHlfZGVhbGxvYywJCQkgIC8qdHBf ZGVhbGxvYyovCi0rICAwLAkJCQkgIC8qdHBfcHJpbnQqLwotKyAgMCwJCQkJICAvKnRwX2dldGF0 dHIqLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHIqLwotKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUq LwotKyAgMCwJCQkJICAvKnRwX3JlcHIqLwotKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCi0r ICAwLAkJCQkgIC8qdHBfYXNfc2VxdWVuY2UqLwotKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcq LwotKyAgMCwJCQkJICAvKnRwX2hhc2ggKi8KLSsgIDAsCQkJCSAgLyp0cF9jYWxsKi8KLSsgIG1i cHlfc3RyLAkJCSAgLyp0cF9zdHIqLwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHJvKi8KLSsgIDAs CQkJCSAgLyp0cF9zZXRhdHRybyovCi0rICAmYnVmZmVyX3Byb2NzLAkJICAvKnRwX2FzX2J1ZmZl ciovCi0rICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxhZ3MqLwotKyAgIkdEQiBtZW1v cnkgYnVmZmVyIG9iamVjdCIsIAkgIC8qdHBfZG9jKi8KLSsgIDAsCQkJCSAgLyogdHBfdHJhdmVy c2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfcmljaGNv bXBhcmUgKi8KLSsgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSsgIDAsCQkJCSAg LyogdHBfaXRlciAqLwotKyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAqLwotKyAgMCwJCQkJICAv KiB0cF9tZXRob2RzICovCi0rICAwLAkJCQkgIC8qIHRwX21lbWJlcnMgKi8KLSsgIDAsCQkJCSAg LyogdHBfZ2V0c2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Jhc2UgKi8KLSsgIDAsCQkJCSAgLyog dHBfZGljdCAqLwotKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQgKi8KLSsgIDAsCQkJCSAgLyog dHBfZGVzY3Jfc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSsgIDAsCQkJ CSAgLyogdHBfaW5pdCAqLwotKyAgMCwJCQkJICAvKiB0cF9hbGxvYyAqLwotKyAgUHlUeXBlX0dl bmVyaWNOZXcJCSAgLyogdHBfbmV3ICovCi0rfTsKLSsKLSt2b2lkCi0rZ2RicHlfaW5pdGlhbGl6 ZV9tZW1idWYgKHZvaWQpCi0rewotKyAgaWYgKFB5VHlwZV9SZWFkeSAoJm1lbWJ1Zl9vYmplY3Rf dHlwZSkgPCAwKQotKyAgICByZXR1cm47Ci0rCi0rICBQeV9JTkNSRUYgKCZtZW1idWZfb2JqZWN0 X3R5cGUpOwotKyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiTWVtYnVmIiwgKFB5 T2JqZWN0ICopICZtZW1idWZfb2JqZWN0X3R5cGUpOwotK30KLWRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5LXBhcmFtLmMgYi9nZGIvcHl0aG9uL3B5LXBhcmFtLmMKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi4xZjU5MWE4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0 aG9uL3B5LXBhcmFtLmMKLUBAIC0wLDAgKzEsNjA2IEBACi0rLyogZ2RiIHBhcmFtZXRlcnMgaW1w bGVtZW50ZWQgaW4gUHl0aG9uCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rCi0r I2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiZXhjZXB0 aW9ucy5oIgotKyNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAiY2hhcnNl dC5oIgotKyNpbmNsdWRlICJnZGJjbWQuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIK LSsjaW5jbHVkZSAiY29tcGxldGVyLmgiCi0rCi0rLyogUGFyYW1ldGVyIGNvbnN0YW50cyBhbmQg dGhlaXIgdmFsdWVzLiAgKi8KLStzdHJ1Y3QgcGFybV9jb25zdGFudAotK3sKLSsgIGNoYXIgKm5h bWU7Ci0rICBpbnQgdmFsdWU7Ci0rfTsKLSsKLStzdHJ1Y3QgcGFybV9jb25zdGFudCBwYXJtX2Nv bnN0YW50c1tdID0KLSt7Ci0rICB7ICJQQVJBTV9CT09MRUFOIiwgdmFyX2Jvb2xlYW4gfSwKLSsg IHsgIlBBUkFNX0FVVE9fQk9PTEVBTiIsIHZhcl9hdXRvX2Jvb2xlYW4gfSwKLSsgIHsgIlBBUkFN X1VJTlRFR0VSIiwgdmFyX3VpbnRlZ2VyIH0sCi0rICB7ICJQQVJBTV9JTlRFR0VSIiwgdmFyX2lu dGVnZXIgfSwKLSsgIHsgIlBBUkFNX1NUUklORyIsIHZhcl9zdHJpbmcgfSwKLSsgIHsgIlBBUkFN X1NUUklOR19OT0VTQ0FQRSIsIHZhcl9zdHJpbmdfbm9lc2NhcGUgfSwKLSsgIHsgIlBBUkFNX09Q VElPTkFMX0ZJTEVOQU1FIiwgdmFyX29wdGlvbmFsX2ZpbGVuYW1lIH0sCi0rICB7ICJQQVJBTV9G SUxFTkFNRSIsIHZhcl9maWxlbmFtZSB9LAotKyAgeyAiUEFSQU1fWklOVEVHRVIiLCB2YXJfemlu dGVnZXIgfSwKLSsgIHsgIlBBUkFNX0VOVU0iLCB2YXJfZW51bSB9LAotKyAgeyBOVUxMLCAwIH0K LSt9OwotKwotKy8qIEEgdW5pb24gdGhhdCBjYW4gaG9sZCBhbnl0aGluZyBkZXNjcmliZWQgYnkg ZW51bSB2YXJfdHlwZXMuICAqLwotK3VuaW9uIHBhcm1weV92YXJpYWJsZQotK3sKLSsgIC8qIEhv bGQgYW4gaW50ZWdlciB2YWx1ZSwgZm9yIGJvb2xlYW4gYW5kIGludGVnZXIgdHlwZXMuICAqLwot KyAgaW50IGludHZhbDsKLSsKLSsgIC8qIEhvbGQgYW4gYXV0b19ib29sZWFuLiAgKi8KLSsgIGVu dW0gYXV0b19ib29sZWFuIGF1dG9ib29sdmFsOwotKwotKyAgLyogSG9sZCBhbiB1bnNpZ25lZCBp bnRlZ2VyIHZhbHVlLCBmb3IgdWludGVnZXIuICAqLwotKyAgdW5zaWduZWQgaW50IHVpbnR2YWw7 Ci0rCi0rICAvKiBIb2xkIGEgc3RyaW5nLCBmb3IgdGhlIHZhcmlvdXMgc3RyaW5nIHR5cGVzLiAg Ki8KLSsgIGNoYXIgKnN0cmluZ3ZhbDsKLSsKLSsgIC8qIEhvbGQgYSBzdHJpbmcsIGZvciBlbnVt cy4gICovCi0rICBjb25zdCBjaGFyICpjc3RyaW5ndmFsOwotK307Ci0rCi0rLyogQSBnZGIgcGFy YW1ldGVyLiAgKi8KLStzdHJ1Y3QgcGFybXB5X29iamVjdAotK3sKLSsgIFB5T2JqZWN0X0hFQUQK LSsKLSsgIC8qIFRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIuICAqLwotKyAgZW51bSB2YXJfdHlw ZXMgdHlwZTsKLSsKLSsgIC8qIFRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiAgKi8KLSsgIHVu aW9uIHBhcm1weV92YXJpYWJsZSB2YWx1ZTsKLSsKLSsgIC8qIEZvciBhbiBlbnVtIGNvbW1hbmQs IHRoZSBwb3NzaWJsZSB2YWx1ZXMuICBUaGUgdmVjdG9yIGlzCi0rICAgICBhbGxvY2F0ZWQgd2l0 aCB4bWFsbG9jLCBhcyBpcyBlYWNoIGVsZW1lbnQuICBJdCBpcwotKyAgICAgTlVMTC10ZXJtaW5h dGVkLiAgKi8KLSsgIGNvbnN0IGNoYXIgKiplbnVtZXJhdGlvbjsKLSt9OwotKwotK3R5cGVkZWYg c3RydWN0IHBhcm1weV9vYmplY3QgcGFybXB5X29iamVjdDsKLSsKLStzdGF0aWMgUHlUeXBlT2Jq ZWN0IHBhcm1weV9vYmplY3RfdHlwZTsKLSsKLSsvKiBTb21lIGhhbmR5IHN0cmluZyBjb25zdGFu dHMuICAqLwotK3N0YXRpYyBQeU9iamVjdCAqc2V0X2RvY19jc3Q7Ci0rc3RhdGljIFB5T2JqZWN0 ICpzaG93X2RvY19jc3Q7Ci0rCi0rDAotKwotKy8qIEdldCBhbiBhdHRyaWJ1dGUuICAqLwotK3N0 YXRpYyBQeU9iamVjdCAqCi0rZ2V0X2F0dHIgKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphdHRy X25hbWUpCi0rewotKyAgaWYgKFB5U3RyaW5nX0NoZWNrIChhdHRyX25hbWUpCi0rICAgICAgJiYg ISBzdHJjbXAgKFB5U3RyaW5nX0FzU3RyaW5nIChhdHRyX25hbWUpLCAidmFsdWUiKSkKLSsgICAg ewotKyAgICAgIHBhcm1weV9vYmplY3QgKnNlbGYgPSAocGFybXB5X29iamVjdCAqKSBvYmo7Ci0r ICAgICAgcmV0dXJuIGdkYnB5X3BhcmFtZXRlcl92YWx1ZSAoc2VsZi0+dHlwZSwgJnNlbGYtPnZh bHVlKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyIChvYmos IGF0dHJfbmFtZSk7Ci0rfQotKwotKy8qIFNldCBhIHBhcmFtZXRlciB2YWx1ZSBmcm9tIGEgUHl0 aG9uIHZhbHVlLiAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEKLSsgICBvbiBmYWlsdXJlLiAgKi8K LStzdGF0aWMgaW50Ci0rc2V0X3BhcmFtZXRlcl92YWx1ZSAocGFybXB5X29iamVjdCAqc2VsZiwg UHlPYmplY3QgKnZhbHVlKQotK3sKLSsgIGludCBjbXA7Ci0rCi0rICBzd2l0Y2ggKHNlbGYtPnR5 cGUpCi0rICAgIHsKLSsgICAgY2FzZSB2YXJfc3RyaW5nOgotKyAgICBjYXNlIHZhcl9zdHJpbmdf bm9lc2NhcGU6Ci0rICAgIGNhc2UgdmFyX29wdGlvbmFsX2ZpbGVuYW1lOgotKyAgICBjYXNlIHZh cl9maWxlbmFtZToKLSsgICAgICBpZiAoISBnZGJweV9pc19zdHJpbmcgKHZhbHVlKQotKwkgICYm IChzZWxmLT50eXBlID09IHZhcl9maWxlbmFtZQotKwkgICAgICB8fCB2YWx1ZSAhPSBQeV9Ob25l KSkKLSsJewotKwkgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLCAic3RyaW5n IHJlcXVpcmVkIik7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0rICAgICAgaWYgKHNlbGYtPnZhbHVl LnN0cmluZ3ZhbCkKLSsJeGZyZWUgKHNlbGYtPnZhbHVlLnN0cmluZ3ZhbCk7Ci0rICAgICAgaWYg KHZhbHVlID09IFB5X05vbmUpCi0rCXsKLSsJICBpZiAoc2VsZi0+dHlwZSA9PSB2YXJfb3B0aW9u YWxfZmlsZW5hbWUpCi0rCSAgICBzZWxmLT52YWx1ZS5zdHJpbmd2YWwgPSB4c3RyZHVwICgiIik7 Ci0rCSAgZWxzZQotKwkgICAgc2VsZi0+dmFsdWUuc3RyaW5ndmFsID0gTlVMTDsKLSsJfQotKyAg ICAgIGVsc2UKLSsJc2VsZi0+dmFsdWUuc3RyaW5ndmFsID0gcHl0aG9uX3N0cmluZ190b19ob3N0 X3N0cmluZyAodmFsdWUpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIHZhcl9lbnVtOgot KyAgICAgIHsKLSsJaW50IGk7Ci0rCWNoYXIgKnN0cjsKLSsKLSsJaWYgKCEgZ2RicHlfaXNfc3Ry aW5nICh2YWx1ZSkpCi0rCSAgewotKwkgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1l RXJyb3IsICJzdHJpbmcgcmVxdWlyZWQiKTsKLSsJICAgIHJldHVybiAtMTsKLSsJICB9Ci0rCi0r CXN0ciA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKHZhbHVlKTsKLSsJZm9yIChpID0g MDsgc2VsZi0+ZW51bWVyYXRpb25baV07ICsraSkKLSsJICBpZiAoISBzdHJjbXAgKHNlbGYtPmVu dW1lcmF0aW9uW2ldLCBzdHIpKQotKwkgICAgYnJlYWs7Ci0rCXhmcmVlIChzdHIpOwotKwlpZiAo ISBzZWxmLT5lbnVtZXJhdGlvbltpXSkKLSsJICB7Ci0rCSAgICBQeUVycl9TZXRTdHJpbmcgKFB5 RXhjX1J1bnRpbWVFcnJvciwKLSsJCQkgICAgICJ2YWx1ZSBtdXN0IGJlIG1lbWJlciBvZiBlbnVt ZXJhdGlvbiIpOwotKwkgICAgcmV0dXJuIC0xOwotKwkgIH0KLSsJc2VsZi0+dmFsdWUuY3N0cmlu Z3ZhbCA9IHNlbGYtPmVudW1lcmF0aW9uW2ldOwotKwlicmVhazsKLSsgICAgICB9Ci0rCi0rICAg IGNhc2UgdmFyX2Jvb2xlYW46Ci0rICAgICAgaWYgKCEgUHlCb29sX0NoZWNrICh2YWx1ZSkpCi0r CXsKLSsJICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwgImJvb2xlYW4gcmVx dWlyZWQiKTsKLSsJICByZXR1cm4gLTE7Ci0rCX0KLSsgICAgICBjbXAgPSBQeU9iamVjdF9Jc1Ry dWUgKHZhbHVlKTsKLSsgICAgICBpZiAoY21wIDwgMCkgCi0rCSAgcmV0dXJuIC0xOwotKyAgICAg IHNlbGYtPnZhbHVlLmludHZhbCA9IGNtcDsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2 YXJfYXV0b19ib29sZWFuOgotKyAgICAgIGlmICghIFB5Qm9vbF9DaGVjayAodmFsdWUpICYmIHZh bHVlICE9IFB5X05vbmUpCi0rCXsKLSsJICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVF cnJvciwKLSsJCQkgICAiYm9vbGVhbiBvciBOb25lIHJlcXVpcmVkIik7Ci0rCSAgcmV0dXJuIC0x OwotKwl9Ci0rCi0rICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCi0rCXNlbGYtPnZhbHVlLmF1 dG9ib29sdmFsID0gQVVUT19CT09MRUFOX0FVVE87Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgY21w ID0gUHlPYmplY3RfSXNUcnVlICh2YWx1ZSk7Ci0rCSAgaWYgKGNtcCA8IDAgKQotKwkgICAgcmV0 dXJuIC0xOwkgIAotKwkgIGlmIChjbXAgPT0gMSkKLSsJICAgIHNlbGYtPnZhbHVlLmF1dG9ib29s dmFsID0gQVVUT19CT09MRUFOX1RSVUU7Ci0rCSAgZWxzZSAKLSsJICAgIHNlbGYtPnZhbHVlLmF1 dG9ib29sdmFsID0gQVVUT19CT09MRUFOX0ZBTFNFOwotKwotKwkgIGJyZWFrOwotKwl9Ci0rCi0r ICAgIGNhc2UgdmFyX2ludGVnZXI6Ci0rICAgIGNhc2UgdmFyX3ppbnRlZ2VyOgotKyAgICBjYXNl IHZhcl91aW50ZWdlcjoKLSsgICAgICB7Ci0rCWxvbmcgbDsKLSsJaW50IG9rOwotKwotKwlpZiAo ISBQeUludF9DaGVjayAodmFsdWUpKQotKwkgIHsKLSsJICAgIFB5RXJyX1NldFN0cmluZyAoUHlF eGNfUnVudGltZUVycm9yLCAidmFsdWUgbXVzdCBiZSBpbnRlZ2VyIik7Ci0rCSAgICByZXR1cm4g LTE7Ci0rCSAgfQotKwotKwlsID0gUHlJbnRfQXNMb25nICh2YWx1ZSk7Ci0rCWlmIChzZWxmLT50 eXBlID09IHZhcl91aW50ZWdlcikKLSsJICB7Ci0rCSAgICBvayA9IChsID49IDAgJiYgbCA8PSBV SU5UX01BWCk7Ci0rCSAgICBpZiAobCA9PSAwKQotKwkgICAgICBsID0gVUlOVF9NQVg7Ci0rCSAg fQotKwllbHNlIGlmIChzZWxmLT50eXBlID09IHZhcl9pbnRlZ2VyKQotKwkgIHsKLSsJICAgIG9r ID0gKGwgPj0gSU5UX01JTiAmJiBsIDw9IElOVF9NQVgpOwotKwkgICAgaWYgKGwgPT0gMCkKLSsJ ICAgICAgbCA9IElOVF9NQVg7Ci0rCSAgfQotKwllbHNlCi0rCSAgb2sgPSAobCA+PSBJTlRfTUlO ICYmIGwgPD0gSU5UX01BWCk7Ci0rCi0rCWlmICghIG9rKQotKwkgIHsKLSsJICAgIFB5RXJyX1Nl dFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLCAicmFuZ2UgZXhjZWVkZWQiKTsKLSsJICAgIHJl dHVybiAtMTsKLSsJICB9Ci0rCi0rCXNlbGYtPnZhbHVlLmludHZhbCA9IChpbnQpIGw7Ci0rCWJy ZWFrOwotKyAgICAgIH0KLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBQeUVycl9TZXRTdHJpbmcg KFB5RXhjX1J1bnRpbWVFcnJvciwgInByb2dyYW1tZXIgZXJyb3I6IHVuaGFuZGxlZCB0eXBlIik7 Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyog U2V0IGFuIGF0dHJpYnV0ZS4gICovCi0rc3RhdGljIGludAotK3NldF9hdHRyIChQeU9iamVjdCAq b2JqLCBQeU9iamVjdCAqYXR0cl9uYW1lLCBQeU9iamVjdCAqdmFsKQotK3sKLSsgIGlmIChQeVN0 cmluZ19DaGVjayAoYXR0cl9uYW1lKQotKyAgICAgICYmICEgc3RyY21wIChQeVN0cmluZ19Bc1N0 cmluZyAoYXR0cl9uYW1lKSwgInZhbHVlIikpCi0rICAgIHsKLSsgICAgICBpZiAoIXZhbCkKLSsJ ewotKwkgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLAotKwkJCSAgICJjYW5u b3QgZGVsZXRlIGEgcGFyYW1ldGVyJ3MgdmFsdWUiKTsKLSsJICByZXR1cm4gLTE7Ci0rCX0KLSsg ICAgICByZXR1cm4gc2V0X3BhcmFtZXRlcl92YWx1ZSAoKHBhcm1weV9vYmplY3QgKikgb2JqLCB2 YWwpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY1NldEF0dHIgKG9iaiwg YXR0cl9uYW1lLCB2YWwpOwotK30KLSsKLSsMCi0rCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdGhh dCBkaXNwYXRjaGVzIHRvIHRoZSBhcHByb3ByaWF0ZSBhZGRfc2V0c2hvdwotKyAgIGZ1bmN0aW9u LiAgKi8KLStzdGF0aWMgdm9pZAotK2FkZF9zZXRzaG93X2dlbmVyaWMgKGludCBwYXJtY2xhc3Ms IGVudW0gY29tbWFuZF9jbGFzcyBjbWRjbGFzcywKLSsJCSAgICAgY2hhciAqY21kX25hbWUsIHBh cm1weV9vYmplY3QgKnNlbGYsCi0rCQkgICAgIGNoYXIgKnNldF9kb2MsIGNoYXIgKnNob3dfZG9j LCBjaGFyICpoZWxwX2RvYywKLSsJCSAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzZXRf bGlzdCwKLSsJCSAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzaG93X2xpc3QpCi0rewot KyAgc3dpdGNoIChwYXJtY2xhc3MpCi0rICAgIHsKLSsgICAgY2FzZSB2YXJfYm9vbGVhbjoKLSsg ICAgICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLCAmc2VsZi0+ dmFsdWUuaW50dmFsLAotKwkJCSAgICAgICBzZXRfZG9jLCBzaG93X2RvYywgaGVscF9kb2MsCi0r CQkJICAgICAgIE5VTEwsIE5VTEwsIHNldF9saXN0LCBzaG93X2xpc3QpOwotKyAgICAgIGJyZWFr OwotKwotKyAgICBjYXNlIHZhcl9hdXRvX2Jvb2xlYW46Ci0rICAgICAgYWRkX3NldHNob3dfYXV0 b19ib29sZWFuX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLAotKwkJCQkgICAgJnNlbGYtPnZhbHVl LmF1dG9ib29sdmFsLAotKwkJCQkgICAgc2V0X2RvYywgc2hvd19kb2MsIGhlbHBfZG9jLAotKwkJ CQkgICAgTlVMTCwgTlVMTCwgc2V0X2xpc3QsIHNob3dfbGlzdCk7Ci0rICAgICAgYnJlYWs7Ci0r Ci0rICAgIGNhc2UgdmFyX3VpbnRlZ2VyOgotKyAgICAgIGFkZF9zZXRzaG93X3VpbnRlZ2VyX2Nt ZCAoY21kX25hbWUsIGNtZGNsYXNzLCAmc2VsZi0+dmFsdWUudWludHZhbCwKLSsJCQkJc2V0X2Rv Yywgc2hvd19kb2MsIGhlbHBfZG9jLAotKwkJCQlOVUxMLCBOVUxMLCBzZXRfbGlzdCwgc2hvd19s aXN0KTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfaW50ZWdlcjoKLSsgICAgICBh ZGRfc2V0c2hvd19pbnRlZ2VyX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLCAmc2VsZi0+dmFsdWUu aW50dmFsLAotKwkJCSAgICAgICBzZXRfZG9jLCBzaG93X2RvYywgaGVscF9kb2MsCi0rCQkJICAg ICAgIE5VTEwsIE5VTEwsIHNldF9saXN0LCBzaG93X2xpc3QpOwotKyAgICAgIGJyZWFrOwotKwot KyAgICBjYXNlIHZhcl9zdHJpbmc6Ci0rICAgICAgYWRkX3NldHNob3dfc3RyaW5nX2NtZCAoY21k X25hbWUsIGNtZGNsYXNzLCAmc2VsZi0+dmFsdWUuc3RyaW5ndmFsLAotKwkJCSAgICAgIHNldF9k b2MsIHNob3dfZG9jLCBoZWxwX2RvYywKLSsJCQkgICAgICBOVUxMLCBOVUxMLCBzZXRfbGlzdCwg c2hvd19saXN0KTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfc3RyaW5nX25vZXNj YXBlOgotKyAgICAgIGFkZF9zZXRzaG93X3N0cmluZ19ub2VzY2FwZV9jbWQgKGNtZF9uYW1lLCBj bWRjbGFzcywKLSsJCQkJICAgICAgICZzZWxmLT52YWx1ZS5zdHJpbmd2YWwsCi0rCQkJCSAgICAg ICBzZXRfZG9jLCBzaG93X2RvYywgaGVscF9kb2MsCi0rCQkJCSAgICAgICBOVUxMLCBOVUxMLCBz ZXRfbGlzdCwgc2hvd19saXN0KTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfb3B0 aW9uYWxfZmlsZW5hbWU6Ci0rICAgICAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21k IChjbWRfbmFtZSwgY21kY2xhc3MsCi0rCQkJCQkgJnNlbGYtPnZhbHVlLnN0cmluZ3ZhbCwKLSsJ CQkJCSBzZXRfZG9jLCBzaG93X2RvYywgaGVscF9kb2MsCi0rCQkJCQkgTlVMTCwgTlVMTCwgc2V0 X2xpc3QsIHNob3dfbGlzdCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgdmFyX2ZpbGVu YW1lOgotKyAgICAgIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoY21kX25hbWUsIGNtZGNsYXNz LCAmc2VsZi0+dmFsdWUuc3RyaW5ndmFsLAotKwkJCQlzZXRfZG9jLCBzaG93X2RvYywgaGVscF9k b2MsCi0rCQkJCU5VTEwsIE5VTEwsIHNldF9saXN0LCBzaG93X2xpc3QpOwotKyAgICAgIGJyZWFr OwotKwotKyAgICBjYXNlIHZhcl96aW50ZWdlcjoKLSsgICAgICBhZGRfc2V0c2hvd196aW50ZWdl cl9jbWQgKGNtZF9uYW1lLCBjbWRjbGFzcywgJnNlbGYtPnZhbHVlLmludHZhbCwKLSsJCQkJc2V0 X2RvYywgc2hvd19kb2MsIGhlbHBfZG9jLAotKwkJCQlOVUxMLCBOVUxMLCBzZXRfbGlzdCwgc2hv d19saXN0KTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfZW51bToKLSsgICAgICBh ZGRfc2V0c2hvd19lbnVtX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLCBzZWxmLT5lbnVtZXJhdGlv biwKLSsJCQkgICAgJnNlbGYtPnZhbHVlLmNzdHJpbmd2YWwsCi0rCQkJICAgIHNldF9kb2MsIHNo b3dfZG9jLCBoZWxwX2RvYywKLSsJCQkgICAgTlVMTCwgTlVMTCwgc2V0X2xpc3QsIHNob3dfbGlz dCk7Ci0rICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgdmFsdWUsIGp1c3QgaW4gY2FzZS4gICovCi0r ICAgICAgc2VsZi0+dmFsdWUuY3N0cmluZ3ZhbCA9IHNlbGYtPmVudW1lcmF0aW9uWzBdOwotKyAg ICAgIGJyZWFrOwotKyAgICB9Ci0rfQotKwotKy8qIEEgaGVscGVyIHdoaWNoIGNvbXB1dGVzIGVu dW0gdmFsdWVzLiAgUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24KLSsgICBlcnJvci4gICovCi0r c3RhdGljIGludAotK2NvbXB1dGVfZW51bV92YWx1ZXMgKHBhcm1weV9vYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICplbnVtX3ZhbHVlcykKLSt7Ci0rICBQeV9zc2l6ZV90IHNpemUsIGk7Ci0rCi0rICBp ZiAoISBlbnVtX3ZhbHVlcykKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNf UnVudGltZUVycm9yLAotKwkJICAgICAgICJlbnVtZXJhdGlvbiByZXF1aXJlZCBmb3IgUEFSQU1f RU5VTSIpOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAoISBQeVNlcXVlbmNl X0NoZWNrIChlbnVtX3ZhbHVlcykpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5 RXhjX1J1bnRpbWVFcnJvciwgImVudW1lcmF0aW9uIGlzIG5vdCBhIHNlcXVlbmNlIik7Ci0rICAg ICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHNpemUgPSBQeVNlcXVlbmNlX1NpemUgKGVudW1f dmFsdWVzKTsKLSsgIGlmIChzaXplIDwgMCkKLSsgICAgcmV0dXJuIDA7Ci0rICBpZiAoc2l6ZSA9 PSAwKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3Is ICJlbXB0eSBlbnVtZXJhdGlvbiIpOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICBz ZWxmLT5lbnVtZXJhdGlvbiA9IHhtYWxsb2MgKChzaXplICsgMSkgKiBzaXplb2YgKGNoYXIgKikp OwotKyAgbWVtc2V0IChzZWxmLT5lbnVtZXJhdGlvbiwgMCwgKHNpemUgKyAxKSAqIHNpemVvZiAo Y2hhciAqKSk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotKyAgICB7Ci0rICAg ICAgUHlPYmplY3QgKml0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0gKGVudW1fdmFsdWVzLCBpKTsK LSsgICAgICBpZiAoISBpdGVtKQotKwlyZXR1cm4gMDsKLSsgICAgICBpZiAoISBnZGJweV9pc19z dHJpbmcgKGl0ZW0pKQotKwl7Ci0rCSAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJy b3IsICJlbnVtZXJhdGlvbiBpdGVtIG5vdCBhIHN0cmluZyIpOwotKwkgIHJldHVybiAwOwotKwl9 Ci0rICAgICAgc2VsZi0+ZW51bWVyYXRpb25baV0gPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3Ry aW5nIChpdGVtKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIEEgaGVscGVy IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSBkb2N1bWVudGF0aW9uIHN0cmluZyBmb3IgYW4KLSsg ICBvYmplY3QuICAqLwotK3N0YXRpYyBjaGFyICoKLStnZXRfZG9jX3N0cmluZyAoUHlPYmplY3Qg Km9iamVjdCwgUHlPYmplY3QgKmF0dHIpCi0rewotKyAgY2hhciAqcmVzdWx0ID0gTlVMTDsKLSsg IGlmIChQeU9iamVjdF9IYXNBdHRyIChvYmplY3QsIGF0dHIpKQotKyAgICB7Ci0rICAgICAgUHlP YmplY3QgKmRzX29iaiA9IFB5T2JqZWN0X0dldEF0dHIgKG9iamVjdCwgYXR0cik7Ci0rICAgICAg aWYgKGRzX29iaiAmJiBnZGJweV9pc19zdHJpbmcgKGRzX29iaikpCi0rCXJlc3VsdCA9IHB5dGhv bl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGRzX29iaik7Ci0rICAgIH0KLSsgIGlmICghIHJlc3Vs dCkKLSsgICAgcmVzdWx0ID0geHN0cmR1cCAoIlRoaXMgY29tbWFuZCBpcyBub3QgZG9jdW1lbnRl ZC4iKTsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKy8qIE9iamVjdCBpbml0aWFsaXplcjsg c2V0cyB1cCBnZGItc2lkZSBzdHJ1Y3R1cmVzIGZvciBjb21tYW5kLgotKwotKyAgIFVzZTogX19p bml0X18oTkFNRSwgQ01EQ0xBU1MsIFBBUk1DTEFTUywgW0VOVU1dKQotKwotKyAgIE5BTUUgaXMg dGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlci4gIEl0IG1heSBjb25zaXN0IG9mIG11bHRpcGxlCi0r ICAgd29yZHMsIGluIHdoaWNoIGNhc2UgdGhlIGZpbmFsIHdvcmQgaXMgdGhlIG5hbWUgb2YgdGhl IG5ldyBjb21tYW5kLAotKyAgIGFuZCBlYXJsaWVyIHdvcmRzIG11c3QgYmUgcHJlZml4IGNvbW1h bmRzLgotKwotKyAgIENNRENMQVNTIGlzIHRoZSBraW5kIG9mIGNvbW1hbmQuICBJdCBzaG91bGQg YmUgb25lIG9mIHRoZSBDT01NQU5EXyoKLSsgICBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgZ2Ri IG1vZHVsZS4KLSsKLSsgICBQQVJNQ0xBU1MgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlci4g IEl0IHNob3VsZCBiZSBvbmUgb2YgdGhlCi0rICAgUEFSQU1fKiBjb25zdGFudHMgZGVmaW5lZCBp biB0aGUgZ2RiIG1vZHVsZS4KLSsKLSsgICBJZiBQQVJNQ0xBU1MgaXMgUEFSQU1fRU5VTSwgdGhl biB0aGUgZmluYWwgYXJndW1lbnQgc2hvdWxkIGJlIGEKLSsgICBjb2xsZWN0aW9uIG9mIHN0cmlu Z3MuICBUaGVzZSBzdHJpbmdzIGFyZSB0aGUgdmFsaWQgdmFsdWVzIGZvciB0aGlzCi0rICAgcGFy YW1ldGVyLgotKwotKyAgIFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgcGFyYW1ldGVyIGlzIHRh a2VuIGZyb20gdGhlIGRvYyBzdHJpbmcKLSsgICBmb3IgdGhlIHB5dGhvbiBjbGFzcy4KLSsgICAK LSsqLwotK3N0YXRpYyBpbnQKLStwYXJtcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0 ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLSt7Ci0rICBwYXJtcHlfb2JqZWN0ICpvYmogPSAocGFy bXB5X29iamVjdCAqKSBzZWxmOwotKyAgY2hhciAqbmFtZTsKLSsgIGNoYXIgKnNldF9kb2MsICpz aG93X2RvYywgKmRvYzsKLSsgIGNoYXIgKmNtZF9uYW1lOwotKyAgaW50IHBhcm1jbGFzcywgY21k dHlwZTsKLSsgIFB5T2JqZWN0ICplbnVtX3ZhbHVlcyA9IE5VTEw7Ci0rICBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqY21kX2xpc3Q7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKnNldF9s aXN0LCAqKnNob3dfbGlzdDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2Vw dDsKLSsKLSsgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJzaWl8TyIsICZuYW1lLCAm Y21kdHlwZSwgJnBhcm1jbGFzcywKLSsJCQkgICZlbnVtX3ZhbHVlcykpCi0rICAgIHJldHVybiAt MTsKLSsKLSsgIGlmIChjbWR0eXBlICE9IG5vX2NsYXNzICYmIGNtZHR5cGUgIT0gY2xhc3NfcnVu Ci0rICAgICAgJiYgY21kdHlwZSAhPSBjbGFzc192YXJzICYmIGNtZHR5cGUgIT0gY2xhc3Nfc3Rh Y2sKLSsgICAgICAmJiBjbWR0eXBlICE9IGNsYXNzX2ZpbGVzICYmIGNtZHR5cGUgIT0gY2xhc3Nf c3VwcG9ydAotKyAgICAgICYmIGNtZHR5cGUgIT0gY2xhc3NfaW5mbyAmJiBjbWR0eXBlICE9IGNs YXNzX2JyZWFrcG9pbnQKLSsgICAgICAmJiBjbWR0eXBlICE9IGNsYXNzX3RyYWNlICYmIGNtZHR5 cGUgIT0gY2xhc3Nfb2JzY3VyZQotKyAgICAgICYmIGNtZHR5cGUgIT0gY2xhc3NfbWFpbnRlbmFu Y2UpCi0rICAgIHsKLSsgICAgICBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImlu dmFsaWQgY29tbWFuZCBjbGFzcyBhcmd1bWVudCIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAg fQotKwotKyAgaWYgKHBhcm1jbGFzcyAhPSB2YXJfYm9vbGVhbiAmJiBwYXJtY2xhc3MgIT0gdmFy X2F1dG9fYm9vbGVhbgotKyAgICAgICYmIHBhcm1jbGFzcyAhPSB2YXJfdWludGVnZXIgJiYgcGFy bWNsYXNzICE9IHZhcl9pbnRlZ2VyCi0rICAgICAgJiYgcGFybWNsYXNzICE9IHZhcl9zdHJpbmcg JiYgcGFybWNsYXNzICE9IHZhcl9zdHJpbmdfbm9lc2NhcGUKLSsgICAgICAmJiBwYXJtY2xhc3Mg IT0gdmFyX29wdGlvbmFsX2ZpbGVuYW1lICYmIHBhcm1jbGFzcyAhPSB2YXJfZmlsZW5hbWUKLSsg ICAgICAmJiBwYXJtY2xhc3MgIT0gdmFyX3ppbnRlZ2VyICYmIHBhcm1jbGFzcyAhPSB2YXJfZW51 bSkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLCAi aW52YWxpZCBwYXJhbWV0ZXIgY2xhc3MgYXJndW1lbnQiKTsKLSsgICAgICByZXR1cm4gLTE7Ci0r ICAgIH0KLSsKLSsgIGlmIChlbnVtX3ZhbHVlcyAmJiBwYXJtY2xhc3MgIT0gdmFyX2VudW0pCi0r ICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJCSAg ICAgICAib25seSBQQVJBTV9FTlVNIGFjY2VwdHMgYSBmb3VydGggYXJndW1lbnQiKTsKLSsgICAg ICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGlmIChwYXJtY2xhc3MgPT0gdmFyX2VudW0pCi0rICAg IHsKLSsgICAgICBpZiAoISBjb21wdXRlX2VudW1fdmFsdWVzIChvYmosIGVudW1fdmFsdWVzKSkK LSsJcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICBvYmotPnR5cGUgPSAoZW51bSB2YXJfdHlwZXMp IHBhcm1jbGFzczsKLSsgIG1lbXNldCAoJm9iai0+dmFsdWUsIDAsIHNpemVvZiAob2JqLT52YWx1 ZSkpOwotKyAgb2JqLT5lbnVtZXJhdGlvbiA9IE5VTEw7Ci0rCi0rICBjbWRfbmFtZSA9IGdkYnB5 X3BhcnNlX2NvbW1hbmRfbmFtZSAobmFtZSwgJnNldF9saXN0LCAmc2V0bGlzdCk7Ci0rICBpZiAo ISBjbWRfbmFtZSkKLSsgICAgcmV0dXJuIC0xOwotKyAgeGZyZWUgKGNtZF9uYW1lKTsKLSsgIGNt ZF9uYW1lID0gZ2RicHlfcGFyc2VfY29tbWFuZF9uYW1lIChuYW1lLCAmc2hvd19saXN0LCAmc2hv d2xpc3QpOwotKyAgaWYgKCEgY21kX25hbWUpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIC8qIEZJ WE1FOiB0aGVyZSBpcyBubyB3YXkgdG8gcmVnaXN0ZXIgYSBkZXN0cnVjdG9yIGZ1bmN0aW9uIGZv cgotKyAgICAgc2V0L3Nob3cgY29tbWFuZHMuICBTbywgdGhlc2UgYXJlIGxlYWtlZC4gICovCi0r ICBzZXRfZG9jID0gZ2V0X2RvY19zdHJpbmcgKHNlbGYsIHNldF9kb2NfY3N0KTsKLSsgIHNob3df ZG9jID0gZ2V0X2RvY19zdHJpbmcgKHNlbGYsIHNob3dfZG9jX2NzdCk7Ci0rICBkb2MgPSBnZXRf ZG9jX3N0cmluZyAoc2VsZiwgZ2RicHlfZG9jX2NzdCk7Ci0rCi0rICBQeV9JTkNSRUYgKHNlbGYp OwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAg ICAgIGFkZF9zZXRzaG93X2dlbmVyaWMgKHBhcm1jbGFzcywgKGVudW0gY29tbWFuZF9jbGFzcykg Y21kdHlwZSwKLSsJCQkgICBjbWRfbmFtZSwgb2JqLAotKwkJCSAgIHNldF9kb2MsIHNob3dfZG9j LAotKwkJCSAgIGRvYywgc2V0X2xpc3QsIHNob3dfbGlzdCk7Ci0rICAgIH0KLSsgIGlmIChleGNl cHQucmVhc29uIDwgMCkKLSsgICAgewotKyAgICAgIHhmcmVlIChjbWRfbmFtZSk7Ci0rICAgICAg eGZyZWUgKHNldF9kb2MpOwotKyAgICAgIHhmcmVlIChzaG93X2RvYyk7Ci0rICAgICAgeGZyZWUg KGRvYyk7Ci0rICAgICAgUHlfREVDUkVGIChzZWxmKTsKLSsgICAgICBQeUVycl9Gb3JtYXQgKGV4 Y2VwdC5yZWFzb24gPT0gUkVUVVJOX1FVSVQKLSsJCSAgICA/IFB5RXhjX0tleWJvYXJkSW50ZXJy dXB0IDogUHlFeGNfUnVudGltZUVycm9yLAotKwkJICAgICIlcyIsIGV4Y2VwdC5tZXNzYWdlKTsK LSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLSsKLSsMCi0rCi0r LyogSW5pdGlhbGl6ZSB0aGUgJ3BhcmFtZXRlcnMnIG1vZHVsZS4gICovCi0rdm9pZAotK2dkYnB5 X2luaXRpYWxpemVfcGFyYW1ldGVycyAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGlmIChQ eVR5cGVfUmVhZHkgKCZwYXJtcHlfb2JqZWN0X3R5cGUpIDwgMCkKLSsgICAgcmV0dXJuOwotKwot KyAgc2V0X2RvY19jc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nICgic2V0X2RvYyIpOwotKyAgaWYg KCEgc2V0X2RvY19jc3QpCi0rICAgIHJldHVybjsKLSsgIHNob3dfZG9jX2NzdCA9IFB5U3RyaW5n X0Zyb21TdHJpbmcgKCJzaG93X2RvYyIpOwotKyAgaWYgKCEgc2hvd19kb2NfY3N0KQotKyAgICBy ZXR1cm47Ci0rCi0rICBmb3IgKGkgPSAwOyBwYXJtX2NvbnN0YW50c1tpXS5uYW1lOyArK2kpCi0r ICAgIHsKLSsgICAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsCi0r CQkJCSAgIHBhcm1fY29uc3RhbnRzW2ldLm5hbWUsCi0rCQkJCSAgIHBhcm1fY29uc3RhbnRzW2ld LnZhbHVlKSA8IDApCi0rCXJldHVybjsKLSsgICAgfQotKwotKyAgUHlfSU5DUkVGICgmcGFybXB5 X29iamVjdF90eXBlKTsKLSsgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlBhcmFt ZXRlciIsCi0rCQkgICAgICAoUHlPYmplY3QgKikgJnBhcm1weV9vYmplY3RfdHlwZSk7Ci0rfQot KwotKwwKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IHBhcm1weV9vYmplY3RfdHlwZSA9Ci0rewot KyAgUHlPYmplY3RfSEVBRF9JTklUIChOVUxMKQotKyAgMCwJCQkJICAvKm9iX3NpemUqLwotKyAg ImdkYi5QYXJhbWV0ZXIiLAkJICAvKnRwX25hbWUqLwotKyAgc2l6ZW9mIChwYXJtcHlfb2JqZWN0 KSwJICAvKnRwX2Jhc2ljc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfaXRlbXNpemUqLwotKyAgMCwJ CQkJICAvKnRwX2RlYWxsb2MqLwotKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJCSAg Lyp0cF9nZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0 cF9jb21wYXJlKi8KLSsgIDAsCQkJCSAgLyp0cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19u dW1iZXIqLwotKyAgMCwJCQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0cF9h c19tYXBwaW5nKi8KLSsgIDAsCQkJCSAgLyp0cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBfY2Fs bCovCi0rICAwLAkJCQkgIC8qdHBfc3RyKi8KLSsgIGdldF9hdHRyLAkJCSAgLyp0cF9nZXRhdHRy byovCi0rICBzZXRfYXR0ciwJCQkgIC8qdHBfc2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX2Fz X2J1ZmZlciovCi0rICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAv KnRwX2ZsYWdzKi8KLSsgICJHREIgcGFyYW1ldGVyIG9iamVjdCIsCSAgLyogdHBfZG9jICovCi0r ICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0r ICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0 b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRl cm5leHQgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWV0aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9t ZW1iZXJzICovCi0rICAwLAkJCQkgIC8qIHRwX2dldHNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9i YXNlICovCi0rICAwLAkJCQkgIC8qIHRwX2RpY3QgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3Jf Z2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Rlc2NyX3NldCAqLwotKyAgMCwJCQkJICAvKiB0cF9k aWN0b2Zmc2V0ICovCi0rICBwYXJtcHlfaW5pdCwJCQkgIC8qIHRwX2luaXQgKi8KLSsgIDAsCQkJ CSAgLyogdHBfYWxsb2MgKi8KLSsgIFB5VHlwZV9HZW5lcmljTmV3CQkgIC8qIHRwX25ldyAqLwot K307Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jIGIvZ2RiL3B5dGhv bi9weS1wcmV0dHlwcmludC5jCi1pbmRleCA0NTRhYTVhLi45OTkxZjEzIDEwMDY0NAotLS0tIGEv Z2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCi0rKysgYi9nZGIvcHl0aG9uL3B5LXByZXR0eXBy aW50LmMKLUBAIC0xNDMsMTAgKzE0MywxNSBAQCBwcmV0dHlfcHJpbnRfb25lX3ZhbHVlIChQeU9i amVjdCAqcHJpbnRlciwgc3RydWN0IHZhbHVlICoqb3V0X3ZhbHVlKQotIAkgIGlmICghIGdkYnB5 X2lzX3N0cmluZyAocmVzdWx0KSAmJiAhIGdkYnB5X2lzX2xhenlfc3RyaW5nIChyZXN1bHQpKQot IAkgICAgewotIAkgICAgICAqb3V0X3ZhbHVlID0gY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAo cmVzdWx0KTsKLS0JICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotLQkJKm91dF92YWx1ZSA9 IE5VTEw7Ci0tCSAgICAgIFB5X0RFQ1JFRiAocmVzdWx0KTsKLS0JICAgICAgcmVzdWx0ID0gTlVM TDsKLSsgCSAgICAgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKLSsgCQkqb3V0X3ZhbHVlID0gTlVM TDsKLSsJICAgICAgZWxzZQotKwkJLyogV2UgbXVzdCBpbmNyZW1lbnQgdGhlIHZhbHVlJ3MgcmVm Y291bnQsIGJlY2F1c2Ugd2UKLSsJCSAgIGFyZSBhYm91dCB0byBkZWNyZWYgUkVTVUxULCBhbmQg dGhpcyBtYXkgcmVzdWx0IGluCi0rCQkgICB0aGUgdmFsdWUgYmVpbmcgZGVzdHJveWVkLiAgKi8K LSsJCXZhbHVlX2luY3JlZiAoKm91dF92YWx1ZSk7Ci0rIAkgICAgICBQeV9ERUNSRUYgKHJlc3Vs dCk7Ci0rIAkgICAgICByZXN1bHQgPSBOVUxMOwotIAkgICAgfQotIAl9Ci0gICAgIH0KLUBAIC02 MDUsMTQgKzYxMCw3IEBAIGdkYnB5X2dldF92YXJvYmpfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB2 YWx1ZSAqdmFsdWUpCi0gewotICAgUHlPYmplY3QgKnZhbF9vYmo7Ci0gICBQeU9iamVjdCAqcHJl dHR5X3ByaW50ZXIgPSBOVUxMOwotLSAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhj ZXB0OwotIAotLSAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLS0gICAgewot LSAgICAgIHZhbHVlID0gdmFsdWVfY29weSAodmFsdWUpOwotLSAgICB9Ci0tICBHREJfUFlfSEFO RExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLS0gIAotICAgdmFsX29iaiA9IHZhbHVlX3RvX3ZhbHVl X29iamVjdCAodmFsdWUpOwotICAgaWYgKCEgdmFsX29iaikKLSAgICAgcmV0dXJuIE5VTEw7Ci1k aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1zeW1ib2wuYyBiL2dkYi9weXRob24vcHktc3ltYm9s LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wM2Q0M2MxCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvcHl0aG9uL3B5LXN5bWJvbC5jCi1AQCAtMCwwICsxLDMzNiBAQAot Ky8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gc3ltYm9scy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIw MDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJibG9jay5oIgotKyNpbmNs dWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImZyYW1lLmgiCi0rI2luY2x1ZGUgInN5bXRh Yi5oIgotKyNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7 Ci0rICBQeU9iamVjdF9IRUFECi0rICBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2w7Ci0rfSBzeW1ib2xf b2JqZWN0OwotKwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rc3ltcHlfc3RyIChQeU9iamVjdCAq c2VsZikKLSt7Ci0rICBpbnQgcmV0OwotKyAgY2hhciAqczsKLSsgIFB5T2JqZWN0ICpyZXN1bHQ7 Ci0rCi0rICByZXQgPSBhc3ByaW50ZiAoJnMsICJzeW1ib2wgZm9yICVzIiwKLSsJCSAgU1lNQk9M X1BSSU5UX05BTUUgKCgoc3ltYm9sX29iamVjdCAqKSBzZWxmKS0+c3ltYm9sKSk7Ci0rICBpZiAo cmV0IDwgMCkKLSsgICAgUHlfUkVUVVJOX05PTkU7Ci0rCi0rICByZXN1bHQgPSBQeVN0cmluZ19G cm9tU3RyaW5nIChzKTsKLSsgIHhmcmVlIChzKTsKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQot KwotK3N0YXRpYyBQeU9iamVjdCAqCi0rc3ltcHlfZ2V0X3ZhbHVlIChQeU9iamVjdCAqc2VsZiwg dm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzZWxmX3N5bSA9IChzeW1ib2xf b2JqZWN0ICopIHNlbGY7Ci0rCi0rICBzd2l0Y2ggKFNZTUJPTF9DTEFTUyAoc2VsZl9zeW0tPnN5 bWJvbCkpCi0rICAgIHsKLSsgICAgY2FzZSBMT0NfQkxPQ0s6Ci0rICAgICAgcmV0dXJuIGJsb2Nr X3RvX2Jsb2NrX29iamVjdCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChzZWxmX3N5bS0+c3ltYm9sKSk7 Ci0rICAgIH0KLSsKLSsgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJv ciwKLSsJCSAgICJTeW1ib2wgdHlwZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBQeXRob24gc2NyaXB0 cy4iKTsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5 X2dldF9zeW10YWIgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIHN5bWJv bF9vYmplY3QgKnNlbGZfc3ltID0gKHN5bWJvbF9vYmplY3QgKikgc2VsZjsKLSsKLSsgIHJldHVy biBzeW10YWJfdG9fc3ltdGFiX29iamVjdCAoU1lNQk9MX1NZTVRBQiAoc2VsZl9zeW0tPnN5bWJv bCkpOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2dldF9uYW1lIChQeU9iamVj dCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzZWxmX3N5bSA9 IChzeW1ib2xfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICByZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmlu ZyAoU1lNQk9MX05BVFVSQUxfTkFNRSAoc2VsZl9zeW0tPnN5bWJvbCkpOwotK30KLSsKLStzdGF0 aWMgUHlPYmplY3QgKgotK3N5bXB5X2dldF9saW5rYWdlX25hbWUgKFB5T2JqZWN0ICpzZWxmLCB2 b2lkICpjbG9zdXJlKQotK3sKLSsgIHN5bWJvbF9vYmplY3QgKnNlbGZfc3ltID0gKHN5bWJvbF9v YmplY3QgKikgc2VsZjsKLSsKLSsgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nIChTWU1CT0xf TElOS0FHRV9OQU1FIChzZWxmX3N5bS0+c3ltYm9sKSk7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVj dCAqCi0rc3ltcHlfZ2V0X3ByaW50X25hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJl KQotK3sKLSsgIHN5bWJvbF9vYmplY3QgKnNlbGZfc3ltID0gKHN5bWJvbF9vYmplY3QgKikgc2Vs ZjsKLSsKLSsgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nIChTWU1CT0xfUFJJTlRfTkFNRSAo c2VsZl9zeW0tPnN5bWJvbCkpOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2dl dF9hZGRyX2NsYXNzIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW1i b2xfb2JqZWN0ICpzZWxmX3N5bSA9IChzeW1ib2xfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICByZXR1 cm4gUHlJbnRfRnJvbUxvbmcgKFNZTUJPTF9DTEFTUyAoc2VsZl9zeW0tPnN5bWJvbCkpOwotK30K LSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2lzX2FyZ3VtZW50IChQeU9iamVjdCAqc2Vs Ziwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzZWxmX3N5bSA9IChzeW1i b2xfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICByZXR1cm4gUHlCb29sX0Zyb21Mb25nIChTWU1CT0xf SVNfQVJHVU1FTlQgKHNlbGZfc3ltLT5zeW1ib2wpKTsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0 ICoKLStzeW1weV9pc19jb25zdGFudCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0r ewotKyAgc3ltYm9sX29iamVjdCAqc2VsZl9zeW0gPSAoc3ltYm9sX29iamVjdCAqKSBzZWxmOwot KyAgZW51bSBhZGRyZXNzX2NsYXNzIGNsYXNzID0gU1lNQk9MX0NMQVNTIChzZWxmX3N5bS0+c3lt Ym9sKTsKLSsKLSsgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcgKGNsYXNzID09IExPQ19DT05TVCB8 fCBjbGFzcyA9PSBMT0NfQ09OU1RfQllURVMpOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgot K3N5bXB5X2lzX2Z1bmN0aW9uIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0r ICBzeW1ib2xfb2JqZWN0ICpzZWxmX3N5bSA9IChzeW1ib2xfb2JqZWN0ICopIHNlbGY7Ci0rICBl bnVtIGFkZHJlc3NfY2xhc3MgY2xhc3MgPSBTWU1CT0xfQ0xBU1MgKHNlbGZfc3ltLT5zeW1ib2wp OwotKwotKyAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyAoY2xhc3MgPT0gTE9DX0JMT0NLKTsKLSt9 Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStzeW1weV9pc192YXJpYWJsZSAoUHlPYmplY3QgKnNl bGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgc3ltYm9sX29iamVjdCAqc2VsZl9zeW0gPSAoc3lt Ym9sX29iamVjdCAqKSBzZWxmOwotKyAgZW51bSBhZGRyZXNzX2NsYXNzIGNsYXNzID0gU1lNQk9M X0NMQVNTIChzZWxmX3N5bS0+c3ltYm9sKTsKLSsKLSsgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcg KCFTWU1CT0xfSVNfQVJHVU1FTlQgKHNlbGZfc3ltLT5zeW1ib2wpCi0rICAgICAgJiYgKGNsYXNz ID09IExPQ19MT0NBTCB8fCBjbGFzcyA9PSBMT0NfUkVHSVNURVIgfHwgY2xhc3MgPT0gTE9DX1NU QVRJQwotKwkgIHx8IGNsYXNzID09IExPQ19DT01QVVRFRCB8fCBjbGFzcyA9PSBMT0NfT1BUSU1J WkVEX09VVCkpOwotK30KLSsKLStQeU9iamVjdCAqCi0rc3ltYm9sX3RvX3N5bWJvbF9vYmplY3Qg KHN0cnVjdCBzeW1ib2wgKnN5bSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzeW1fb2JqOwotKwot KyAgc3ltX29iaiA9IFB5T2JqZWN0X05ldyAoc3ltYm9sX29iamVjdCwgJnN5bWJvbF9vYmplY3Rf dHlwZSk7Ci0rICBpZiAoc3ltX29iaiA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0 U3RyaW5nIChQeUV4Y19NZW1vcnlFcnJvciwgIkNvdWxkIG5vdCBhbGxvY2F0ZSBzeW1ib2wgb2Jq ZWN0LiIpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICBzeW1fb2JqLT5zeW1i b2wgPSBzeW07Ci0rCi0rICByZXR1cm4gKFB5T2JqZWN0ICopIHN5bV9vYmo7Ci0rfQotKwotK3N0 cnVjdCBzeW1ib2wgKgotK3N5bWJvbF9vYmplY3RfdG9fc3ltYm9sIChQeU9iamVjdCAqb2JqKQot K3sKLSsgIGlmICghIFB5T2JqZWN0X1R5cGVDaGVjayAob2JqLCAmc3ltYm9sX29iamVjdF90eXBl KSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICByZXR1cm4gKChzeW1ib2xfb2JqZWN0ICopIG9iaikt PnN5bWJvbDsKLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YKLSsgICBnZGIubG9va3VwX3N5 bWJvbCAobmFtZSBbLCBibG9ja10gWywgZG9tYWluXSkgLT4gKHN5bWJvbCwgaXNfZmllbGRfb2Zf dGhpcykKLSsgICBBIHR1cGxlIHdpdGggMiBlbGVtZW50cyBpcyBhbHdheXMgcmV0dXJuZWQuICBU aGUgZmlyc3QgaXMgdGhlIHN5bWJvbAotKyAgIG9iamVjdCBvciBOb25lLCB0aGUgc2Vjb25kIGlz IGEgYm9vbGVhbiB3aXRoIHRoZSB2YWx1ZSBvZgotKyAgIGlzX2FfZmllbGRfb2ZfdGhpcyAoc2Vl IGNvbW1lbnQgaW4gbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSkuICAqLwotKwotK1B5T2JqZWN0 ICpnZGJweV9sb29rdXBfc3ltYm9sIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5 T2JqZWN0ICprdykKLSt7Ci0rICBpbnQgZG9tYWluID0gVkFSX0RPTUFJTiwgaXNfYV9maWVsZF9v Zl90aGlzID0gMDsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBzdGF0aWMgY2hhciAqa2V5d29y ZHNbXSA9IHsgIm5hbWUiLCAiYmxvY2siLCAiZG9tYWluIiwgTlVMTCB9OwotKyAgc3RydWN0IHN5 bWJvbCAqc3ltYm9sOwotKyAgUHlPYmplY3QgKmJsb2NrX29iaiA9IE5VTEwsICpyZXRfdHVwbGUs ICpzeW1fb2JqLCAqYm9vbF9vYmo7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrID0gTlVMTDsKLSsK LSsgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyAoYXJncywga3csICJzfE8haSIs IGtleXdvcmRzLCAmbmFtZSwKLSsJCQkJICAgICAmYmxvY2tfb2JqZWN0X3R5cGUsICZibG9ja19v YmosICZkb21haW4pKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIGlmIChibG9ja19vYmopCi0r ICAgIGJsb2NrID0gYmxvY2tfb2JqZWN0X3RvX2Jsb2NrIChibG9ja19vYmopOwotKyAgZWxzZQot KyAgICB7Ci0rICAgICAgc3RydWN0IGZyYW1lX2luZm8gKnNlbGVjdGVkX2ZyYW1lOwotKyAgICAg IHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgICAgICBUUllfQ0FU Q0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKwl7Ci0rCSAgc2VsZWN0ZWRfZnJhbWUgID0g Z2V0X3NlbGVjdGVkX2ZyYW1lIChfKCJObyBmcmFtZSBzZWxlY3RlZC4iKSk7Ci0rCSAgYmxvY2sg PSBibG9ja19mb3JfcGMgKGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrIChzZWxlY3RlZF9mcmFt ZSkpOwotKwl9Ci0rICAgICAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0rICAg IH0KLSsKLSsgIHN5bWJvbCA9IGxvb2t1cF9zeW1ib2wgKG5hbWUsIGJsb2NrLCBkb21haW4sICZp c19hX2ZpZWxkX29mX3RoaXMpOwotKwotKyAgcmV0X3R1cGxlID0gUHlUdXBsZV9OZXcgKDIpOwot KyAgaWYgKCFyZXRfdHVwbGUpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhj X01lbW9yeUVycm9yLCAiQ291bGQgbm90IGFsbG9jYXRlIHR1cGxlIG9iamVjdC4iKTsKLSsgICAg ICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgaWYgKHN5bWJvbCkKLSsgICAgewotKyAgICAg IHN5bV9vYmogPSBzeW1ib2xfdG9fc3ltYm9sX29iamVjdCAoc3ltYm9sKTsKLSsgICAgICBpZiAo IXN5bV9vYmopCi0rCXsKLSsJICBQeV9ERUNSRUYgKHJldF90dXBsZSk7Ci0rCSAgcmV0dXJuIE5V TEw7Ci0rCX0KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3ltX29iaiA9IFB5X05v bmU7Ci0rICAgICAgUHlfSU5DUkVGIChQeV9Ob25lKTsKLSsgICAgfQotKyAgUHlUdXBsZV9TRVRf SVRFTSAocmV0X3R1cGxlLCAwLCBzeW1fb2JqKTsKLSsKLSsgIGJvb2xfb2JqID0gaXNfYV9maWVs ZF9vZl90aGlzPyBQeV9UcnVlIDogUHlfRmFsc2U7Ci0rICBQeV9JTkNSRUYgKGJvb2xfb2JqKTsK LSsgIFB5VHVwbGVfU0VUX0lURU0gKHJldF90dXBsZSwgMSwgYm9vbF9vYmopOwotKwotKyAgcmV0 dXJuIHJldF90dXBsZTsKLSt9Ci0rCi0rdm9pZAotK2dkYnB5X2luaXRpYWxpemVfc3ltYm9scyAo dm9pZCkKLSt7Ci0rICBpZiAoUHlUeXBlX1JlYWR5ICgmc3ltYm9sX29iamVjdF90eXBlKSA8IDAp Ci0rICAgIHJldHVybjsKLSsKLSsgIC8qIEZJWE1FOiBUaGVzZSB3b3VsZCBwcm9iYWJseSBiZSBi ZXN0IGV4cG9zZWQgYXMgY2xhc3MgYXR0cmlidXRlcyBvZiBTeW1ib2wsCi0rICAgICBidXQgSSBk b24ndCBrbm93IGhvdyB0byBkbyBpdCBleGNlcHQgYnkgbWVzc2luZyB3aXRoIHRoZSB0eXBlJ3Mg ZGljdGlvbmFyeS4KLSsgICAgIFRoYXQgc2VlbXMgdG9vIG1lc3N5LiAgKi8KLSsgIC8qIEZJWE1F IDI6IFNvbWUgb2YgdGhlc2Ugd2VyZSByZW1vdmVkIGZyb20gR0RCIHNpbmNlIEkgZmlyc3Qgd3Jv dGUgdGhpcyBjb2RlLAotKyAgICAgc28gaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSBub3QgdG8g ZXhwb3NlIHRoZW0gdG8gUHl0aG9uLiAgKi8KLSsgIFB5TW9kdWxlX0FkZEludENvbnN0YW50IChn ZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19VTkRFRiIsIExPQ19VTkRFRik7Ci0rICBQeU1vZHVsZV9B ZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwgIlNZTUJPTF9MT0NfQ09OU1QiLCBMT0NfQ09OU1Qp OwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfTE9DX1NU QVRJQyIsIExPQ19TVEFUSUMpOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1 bGUsICJTWU1CT0xfTE9DX1JFR0lTVEVSIiwgTE9DX1JFR0lTVEVSKTsKLSsgIFB5TW9kdWxlX0Fk ZEludENvbnN0YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19BUkciLCBMT0NfQVJHKTsKLSsg IFB5TW9kdWxlX0FkZEludENvbnN0YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19SRUZfQVJH IiwgTE9DX1JFRl9BUkcpOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUs ICJTWU1CT0xfTE9DX0xPQ0FMIiwgTE9DX0xPQ0FMKTsKLSsgIFB5TW9kdWxlX0FkZEludENvbnN0 YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19UWVBFREVGIiwgTE9DX1RZUEVERUYpOwotKyAg UHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfTE9DX0xBQkVMIiwg TE9DX0xBQkVMKTsKLSsgIFB5TW9kdWxlX0FkZEludENvbnN0YW50IChnZGJfbW9kdWxlLCAiU1lN Qk9MX0xPQ19CTE9DSyIsIExPQ19CTE9DSyk7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAo Z2RiX21vZHVsZSwgIlNZTUJPTF9MT0NfQ09OU1RfQllURVMiLAotKwkJCSAgIExPQ19DT05TVF9C WVRFUyk7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwgIlNZTUJPTF9M T0NfVU5SRVNPTFZFRCIsIExPQ19VTlJFU09MVkVEKTsKLSsgIFB5TW9kdWxlX0FkZEludENvbnN0 YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19PUFRJTUlaRURfT1VUIiwKLSsJCQkgICBMT0Nf T1BUSU1JWkVEX09VVCk7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwg IlNZTUJPTF9MT0NfQ09NUFVURUQiLCBMT0NfQ09NUFVURUQpOwotKyAgUHlNb2R1bGVfQWRkSW50 Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfTE9DX1JFR1BBUk1fQUREUiIsCi0rCQkJICAg TE9DX1JFR1BBUk1fQUREUik7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVs ZSwgIlNZTUJPTF9VTkRFRl9ET01BSU4iLCBVTkRFRl9ET01BSU4pOwotKyAgUHlNb2R1bGVfQWRk SW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfVkFSX0RPTUFJTiIsIFZBUl9ET01BSU4p OwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfU1RSVUNU X0RPTUFJTiIsIFNUUlVDVF9ET01BSU4pOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdk Yl9tb2R1bGUsICJTWU1CT0xfTEFCRUxfRE9NQUlOIiwgTEFCRUxfRE9NQUlOKTsKLSsgIFB5TW9k dWxlX0FkZEludENvbnN0YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX1ZBUklBQkxFU19ET01BSU4i LAotKwkJCSAgIFZBUklBQkxFU19ET01BSU4pOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQg KGdkYl9tb2R1bGUsICJTWU1CT0xfRlVOQ1RJT05TX0RPTUFJTiIsCi0rCQkJICAgRlVOQ1RJT05T X0RPTUFJTik7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwgIlNZTUJP TF9UWVBFU19ET01BSU4iLCBUWVBFU19ET01BSU4pOwotKwotKyAgUHlfSU5DUkVGICgmc3ltYm9s X29iamVjdF90eXBlKTsKLSsgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlN5bWJv bCIsIChQeU9iamVjdCAqKSAmc3ltYm9sX29iamVjdF90eXBlKTsKLSt9Ci0rCi0rDAotKwotK3N0 YXRpYyBQeUdldFNldERlZiBzeW1ib2xfb2JqZWN0X2dldHNldFtdID0gewotKyAgeyAidmFsdWUi LCBzeW1weV9nZXRfdmFsdWUsIE5VTEwsICJWYWx1ZSBvZiB0aGUgc3ltYm9sLiIsIE5VTEwgfSwK LSsgIHsgInN5bXRhYiIsIHN5bXB5X2dldF9zeW10YWIsIE5VTEwsCi0rICAgICJTeW1ib2wgdGFi bGUgaW4gd2hpY2ggdGhlIHN5bWJvbCBhcHBlYXJzLiIsIE5VTEwgfSwKLSsgIHsgIm5hbWUiLCBz eW1weV9nZXRfbmFtZSwgTlVMTCwKLSsgICAgIk5hbWUgb2YgdGhlIHN5bWJvbCwgYXMgaXQgYXBw ZWFycyBpbiB0aGUgc291cmNlIGNvZGUuIiwgTlVMTCB9LAotKyAgeyAibGlua2FnZV9uYW1lIiwg c3ltcHlfZ2V0X2xpbmthZ2VfbmFtZSwgTlVMTCwKLSsgICAgIk5hbWUgb2YgdGhlIHN5bWJvbCwg YXMgdXNlZCBieSB0aGUgbGlua2VyIChpLmUuLCBtYXkgYmUgbWFuZ2xlZCkuIiwgTlVMTCB9LAot KyAgeyAicHJpbnRfbmFtZSIsIHN5bXB5X2dldF9wcmludF9uYW1lLCBOVUxMLAotKyAgICAiTmFt ZSBvZiB0aGUgc3ltYm9sIGluIGEgZm9ybSBzdWl0YWJsZSBmb3Igb3V0cHV0LlxuXAotK1RoaXMg aXMgZWl0aGVyIG5hbWUgb3IgbGlua2FnZV9uYW1lLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUg dXNlciBhc2tlZCBHREJcblwKLSt0byBkaXNwbGF5IGRlbWFuZ2xlZCBvciBtYW5nbGVkIG5hbWVz LiIsIE5VTEwgfSwKLSsgIHsgImFkZHJfY2xhc3MiLCBzeW1weV9nZXRfYWRkcl9jbGFzcywgTlVM TCwgIkFkZHJlc3MgY2xhc3Mgb2YgdGhlIHN5bWJvbC4iIH0sCi0rICB7ICJpc19hcmd1bWVudCIs IHN5bXB5X2lzX2FyZ3VtZW50LCBOVUxMLAotKyAgICAiVHJ1ZSBpZiB0aGUgc3ltYm9sIGlzIGFu IGFyZ3VtZW50IG9mIGEgZnVuY3Rpb24uIiB9LAotKyAgeyAiaXNfY29uc3RhbnQiLCBzeW1weV9p c19jb25zdGFudCwgTlVMTCwKLSsgICAgIlRydWUgaWYgdGhlIHN5bWJvbCBpcyBhIGNvbnN0YW50 LiIgfSwKLSsgIHsgImlzX2Z1bmN0aW9uIiwgc3ltcHlfaXNfZnVuY3Rpb24sIE5VTEwsCi0rICAg ICJUcnVlIGlmIHRoZSBzeW1ib2wgaXMgYSBmdW5jdGlvbiBvciBtZXRob2QuIiB9LAotKyAgeyAi aXNfdmFyaWFibGUiLCBzeW1weV9pc192YXJpYWJsZSwgTlVMTCwKLSsgICAgIlRydWUgaWYgdGhl IHN5bWJvbCBpcyBhIHZhcmlhYmxlLiIgfSwKLSsgIHsgTlVMTCB9ICAvKiBTZW50aW5lbCAqLwot K307Ci0rCi0rUHlUeXBlT2JqZWN0IHN5bWJvbF9vYmplY3RfdHlwZSA9IHsKLSsgIFB5T2JqZWN0 X0hFQURfSU5JVCAoTlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIuU3ltYm9s IiwJCQkgIC8qdHBfbmFtZSovCi0rICBzaXplb2YgKHN5bWJvbF9vYmplY3QpLAkgIC8qdHBfYmFz aWNzaXplKi8KLSsgIDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfZGVh bGxvYyovCi0rICAwLAkJCQkgIC8qdHBfcHJpbnQqLwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHIq LwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHIqLwotKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLwot KyAgMCwJCQkJICAvKnRwX3JlcHIqLwotKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCi0rICAw LAkJCQkgIC8qdHBfYXNfc2VxdWVuY2UqLwotKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLwot KyAgMCwJCQkJICAvKnRwX2hhc2ggKi8KLSsgIDAsCQkJCSAgLyp0cF9jYWxsKi8KLSsgIHN5bXB5 X3N0ciwJCQkgIC8qdHBfc3RyKi8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRybyovCi0rICAwLAkJ CQkgIC8qdHBfc2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX2FzX2J1ZmZlciovCi0rICBQeV9U UEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxhZ3MqLwotKyAgIkdEQiBzeW1ib2wgb2JqZWN0IiwJ CSAgLyogdHBfZG9jICovCi0rICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkg IC8qIHRwX2NsZWFyICovCi0rICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJ CQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsg IDAsCQkJCSAgLyogdHBfaXRlcm5leHQgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWV0aG9kcyAqLwot KyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICBzeW1ib2xfb2JqZWN0X2dldHNldAkJICAv KiB0cF9nZXRzZXQgKi8KLSt9OwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktc3ltdGFiLmMg Yi9nZGIvcHl0aG9uL3B5LXN5bXRhYi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uODMwZTU4NgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9weS1zeW10YWIu YwotQEAgLTAsMCArMSwzMjIgQEAKLSsvKiBQeXRob24gaW50ZXJmYWNlIHRvIHN5bWJvbCB0YWJs ZXMuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgImRlZnMuaCIK LSsjaW5jbHVkZSAiY2hhcnNldC5oIgotKyNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAi c291cmNlLmgiCi0rI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgotKwotK3R5cGVkZWYgc3Ry dWN0IHsKLSsgIFB5T2JqZWN0X0hFQUQKLSsgIHN0cnVjdCBzeW10YWIgKnN5bXRhYjsKLSt9IHN5 bXRhYl9vYmplY3Q7Ci0rCi0rc3RhdGljIFB5VHlwZU9iamVjdCBzeW10YWJfb2JqZWN0X3R5cGU7 Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgewotKyAgUHlPYmplY3RfSEVBRAotKyAgc3ltdGFiX29iamVj dCAqc3ltdGFiOwotKyAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsOwotK30gc2FsX29iamVj dDsKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IHNhbF9vYmplY3RfdHlwZTsKLSsKLSsKLStzdGF0 aWMgUHlPYmplY3QgKgotK3N0cHlfc3RyIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBpbnQgcmV0 OwotKyAgY2hhciAqczsKLSsgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rCi0rICByZXQgPSBhc3ByaW50 ZiAoJnMsICJzeW1ib2wgdGFibGUgZm9yICVzIiwKLSsJCSAgKChzeW10YWJfb2JqZWN0ICopIHNl bGYpLT5zeW10YWItPmZpbGVuYW1lKTsKLSsgIGlmIChyZXQgPCAwKQotKyAgICBQeV9SRVRVUk5f Tk9ORTsKLSsKLSsgIHJlc3VsdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKHMpOwotKyAgeGZyZWUg KHMpOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStz dHB5X2dldF9maWxlbmFtZSAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAg c3ltdGFiX29iamVjdCAqc2VsZl9zeW10YWIgPSAoc3ltdGFiX29iamVjdCAqKSBzZWxmOwotKyAg UHlPYmplY3QgKnN0cl9vYmo7Ci0rCi0rICAvKiBGSVhNRTogQ2FuIHN5bXRhYi0+ZmlsZW5hbWUg cmVhbGx5IGJlIE5VTEw/ICAqLwotKyAgaWYgKHNlbGZfc3ltdGFiLT5zeW10YWItPmZpbGVuYW1l KQotKyAgICBzdHJfb2JqID0gUHlTdHJpbmdfRGVjb2RlIChzZWxmX3N5bXRhYi0+c3ltdGFiLT5m aWxlbmFtZSwKLSsJCQkgICAgICAgc3RybGVuIChzZWxmX3N5bXRhYi0+c3ltdGFiLT5maWxlbmFt ZSksCi0rCQkJICAgICAgIGhvc3RfY2hhcnNldCAoKSwgTlVMTCk7Ci0rICBlbHNlCi0rICAgIHsK LSsgICAgICBzdHJfb2JqID0gUHlfTm9uZTsKLSsgICAgICBQeV9JTkNSRUYgKFB5X05vbmUpOwot KyAgICB9Ci0rCi0rICByZXR1cm4gc3RyX29iajsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoK LStzdHB5X2dldF9vYmpmaWxlIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0r ICBzeW10YWJfb2JqZWN0ICpzZWxmX3N5bXRhYiA9IChzeW10YWJfb2JqZWN0ICopIHNlbGY7Ci0r ICBQeU9iamVjdCAqcmVzdWx0ID0gb2JqZmlsZV90b19vYmpmaWxlX29iamVjdCAoc2VsZl9zeW10 YWItPnN5bXRhYi0+b2JqZmlsZSk7Ci0rICBQeV9JTkNSRUYgKHJlc3VsdCk7Ci0rICByZXR1cm4g cmVzdWx0OwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N0cHlfZnVsbG5hbWUgKFB5T2Jq ZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBjaGFyICpmdWxsbmFtZTsKLSsKLSsg IGZ1bGxuYW1lID0gc3ltdGFiX3RvX2Z1bGxuYW1lICgoKHN5bXRhYl9vYmplY3QgKikgc2VsZikt PnN5bXRhYik7Ci0rICBpZiAoZnVsbG5hbWUpCi0rICAgIHJldHVybiBQeVN0cmluZ19EZWNvZGUg KGZ1bGxuYW1lLCBzdHJsZW4gKGZ1bGxuYW1lKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKLSsK LSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3NhbHB5X3N0 ciAoUHlPYmplY3QgKnNlbGYpCi0rewotKyAgaW50IHJldDsKLSsgIGNoYXIgKnMsICpmaWxlbmFt ZTsKLSsgIHNhbF9vYmplY3QgKnNhbF9vYmo7Ci0rICBQeU9iamVjdCAqcmVzdWx0OwotKwotKyAg c2FsX29iaiA9IChzYWxfb2JqZWN0ICopIHNlbGY7Ci0rICBmaWxlbmFtZSA9IChzYWxfb2JqLT5z eW10YWIgPT0gKHN5bXRhYl9vYmplY3QgKikgUHlfTm9uZSk/ICI8dW5rbm93bj4iIDoKLSsJCQkJ CSAgIHNhbF9vYmotPnN5bXRhYi0+c3ltdGFiLT5maWxlbmFtZTsKLSsgIHJldCA9IGFzcHJpbnRm ICgmcywgInN5bWJvbCBhbmQgbGluZSBmb3IgJXMsIGxpbmUgJWQiLCBmaWxlbmFtZSwKLSsJCSAg c2FsX29iai0+c2FsLT5saW5lKTsKLSsgIGlmIChyZXQgPCAwKQotKyAgICBQeV9SRVRVUk5fTk9O RTsKLSsKLSsgIHJlc3VsdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKHMpOwotKyAgeGZyZWUgKHMp OwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStzYWxw eV9nZXRfcGMgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIHJldHVybiBQ eUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcgKCgoc2FsX29iamVjdCAqKSBzZWxmKS0+c2FsLT5w Yyk7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rc2FscHlfZ2V0X2xpbmUgKFB5T2JqZWN0 ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVk TG9uZ0xvbmcgKCgoc2FsX29iamVjdCAqKSBzZWxmKS0+c2FsLT5saW5lKTsKLSt9Ci0rCi0rc3Rh dGljIFB5T2JqZWN0ICoKLStzYWxweV9nZXRfc3ltdGFiIChQeU9iamVjdCAqc2VsZiwgdm9pZCAq Y2xvc3VyZSkKLSt7Ci0rICBzYWxfb2JqZWN0ICpzZWxmX3NhbCA9IChzYWxfb2JqZWN0ICopIHNl bGY7Ci0rCi0rICBQeV9JTkNSRUYgKHNlbGZfc2FsLT5zeW10YWIpOwotKwotKyAgcmV0dXJuIChQ eU9iamVjdCAqKSBzZWxmX3NhbC0+c3ltdGFiOwotK30KLSsKLStzdGF0aWMgdm9pZCAKLStzYWxw eV9kZWFsbG9jIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBzYWxfb2JqZWN0ICpzZWxmX3NhbCA9 IChzYWxfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICBQeV9ERUNSRUYgKHNlbGZfc2FsLT5zeW10YWIp OwotKyAgeGZyZWUgKHNlbGZfc2FsLT5zYWwpOwotKyAgc2VsZl9zYWwtPm9iX3R5cGUtPnRwX2Zy ZWUgKHNlbGYpOwotK30KLSsKLStQeU9iamVjdCAqCi0rc3ltdGFiX2FuZF9saW5lX3RvX3NhbF9v YmplY3QgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKQotK3sKLSsgIHNhbF9vYmplY3QgKnNh bF9vYmo7Ci0rICBzeW10YWJfb2JqZWN0ICpzeW10YWJfb2JqOwotKwotKyAgc2FsX29iaiA9IFB5 T2JqZWN0X05ldyAoc2FsX29iamVjdCwgJnNhbF9vYmplY3RfdHlwZSk7Ci0rICBpZiAoc2FsX29i aiA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19NZW1vcnlF cnJvciwKLSsJCSAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIFN5bXRhYl9hbmRfbGluZSBvYmpl Y3QuIik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIGlmIChzYWwuc3ltdGFi KQotKyAgICB7Ci0rICAgICAgc3ltdGFiX29iaiA9IChzeW10YWJfb2JqZWN0ICopIHN5bXRhYl90 b19zeW10YWJfb2JqZWN0IChzYWwuc3ltdGFiKTsKLSsgICAgICBpZiAoc3ltdGFiX29iaiA9PSBO VUxMKQotKwl7Ci0rCSAgUHlfREVDUkVGIChzYWxfb2JqKTsKLSsJICByZXR1cm4gTlVMTDsKLSsJ fQotKwotKyAgICAgIHN5bXRhYl9vYmotPnN5bXRhYiA9IHNhbC5zeW10YWI7Ci0rICAgIH0KLSsg IGVsc2UKLSsgICAgewotKyAgICAgIHN5bXRhYl9vYmogPSAoc3ltdGFiX29iamVjdCAqKSBQeV9O b25lOwotKyAgICAgIFB5X0lOQ1JFRiAoUHlfTm9uZSk7Ci0rICAgIH0KLSsKLSsgIHNhbF9vYmot PnNhbCA9IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICopCi0rCQkJCSAgICB4bWFsbG9jIChzaXpl b2YgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUpKTsKLSsgICooc2FsX29iai0+c2FsKSA9IHNhbDsK LSsgIHNhbF9vYmotPnN5bXRhYiA9IHN5bXRhYl9vYmo7Ci0rCi0rICByZXR1cm4gKFB5T2JqZWN0 ICopIHNhbF9vYmo7Ci0rfQotKwotK1B5T2JqZWN0ICoKLStzeW10YWJfdG9fc3ltdGFiX29iamVj dCAoc3RydWN0IHN5bXRhYiAqc3ltdGFiKQotK3sKLSsgIHN5bXRhYl9vYmplY3QgKnN5bXRhYl9v Ymo7Ci0rICAKLSsgIHN5bXRhYl9vYmogPSBQeU9iamVjdF9OZXcgKHN5bXRhYl9vYmplY3QsICZz eW10YWJfb2JqZWN0X3R5cGUpOwotKyAgaWYgKHN5bXRhYl9vYmogPT0gTlVMTCkKLSsgICAgewot KyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfTWVtb3J5RXJyb3IsCi0rCSAgIkNvdWxkIG5v dCBhbGxvY2F0ZSBTeW10YWIgb2JqZWN0LiIpOwotKwotKyAgICAgIHJldHVybiBOVUxMOwotKyAg ICB9Ci0rCi0rICBzeW10YWJfb2JqLT5zeW10YWIgPSBzeW10YWI7Ci0rCi0rICByZXR1cm4gKFB5 T2JqZWN0ICopIHN5bXRhYl9vYmo7Ci0rfQotKwotK3ZvaWQKLStnZGJweV9pbml0aWFsaXplX3N5 bXRhYnMgKHZvaWQpCi0rewotKyAgc3ltdGFiX29iamVjdF90eXBlLnRwX25ldyA9IFB5VHlwZV9H ZW5lcmljTmV3OwotKyAgaWYgKFB5VHlwZV9SZWFkeSAoJnN5bXRhYl9vYmplY3RfdHlwZSkgPCAw KQotKyAgICByZXR1cm47Ci0rCi0rICBzYWxfb2JqZWN0X3R5cGUudHBfbmV3ID0gUHlUeXBlX0dl bmVyaWNOZXc7Ci0rICBpZiAoUHlUeXBlX1JlYWR5ICgmc2FsX29iamVjdF90eXBlKSA8IDApCi0r ICAgIHJldHVybjsKLSsKLSsgIFB5X0lOQ1JFRiAoJnN5bXRhYl9vYmplY3RfdHlwZSk7Ci0rICBQ eU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJTeW10YWIiLCAoUHlPYmplY3QgKikgJnN5 bXRhYl9vYmplY3RfdHlwZSk7Ci0rCi0rICBQeV9JTkNSRUYgKCZzYWxfb2JqZWN0X3R5cGUpOwot KyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiU3ltdGFiX2FuZF9saW5lIiwKLSsJ CSAgICAgIChQeU9iamVjdCAqKSAmc2FsX29iamVjdF90eXBlKTsKLSt9Ci0rCi0rDAotKwotK3N0 YXRpYyBQeUdldFNldERlZiBzeW10YWJfb2JqZWN0X2dldHNldFtdID0gewotKyAgeyAiZmlsZW5h bWUiLCBzdHB5X2dldF9maWxlbmFtZSwgTlVMTCwKLSsgICAgIlRoZSBzeW1ib2wgdGFibGUncyBz b3VyY2UgZmlsZW5hbWUuIiwgTlVMTCB9LAotKyAgeyAib2JqZmlsZSIsIHN0cHlfZ2V0X29iamZp bGUsIE5VTEwsICJUaGUgc3ltdGFiJ3Mgb2JqZmlsZS4iLAotKyAgICBOVUxMIH0sCi0rICB7TlVM TH0gIC8qIFNlbnRpbmVsICovCi0rfTsKLSsKLStzdGF0aWMgUHlNZXRob2REZWYgc3ltdGFiX29i amVjdF9tZXRob2RzW10gPSB7Ci0rICB7ICJmdWxsbmFtZSIsIHN0cHlfZnVsbG5hbWUsIE1FVEhf Tk9BUkdTLAotKyAgICAiUmV0dXJuIHRoZSBzeW10YWIncyBmdWxsIHNvdXJjZSBmaWxlbmFtZS4i IH0sCi0rICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi0rfTsKLSsKLStzdGF0aWMgUHlUeXBlT2Jq ZWN0IHN5bXRhYl9vYmplY3RfdHlwZSA9IHsKLSsgIFB5T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkK LSsgIDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIuU3ltdGFiIiwJCQkgIC8qdHBfbmFtZSov Ci0rICBzaXplb2YgKHN5bXRhYl9vYmplY3QpLAkgIC8qdHBfYmFzaWNzaXplKi8KLSsgIDAsCQkJ CSAgLyp0cF9pdGVtc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfZGVhbGxvYyovCi0rICAwLAkJCQkg IC8qdHBfcHJpbnQqLwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLwotKyAgMCwJCQkJICAvKnRw X3NldGF0dHIqLwotKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLwotKyAgMCwJCQkJICAvKnRwX3Jl cHIqLwotKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCi0rICAwLAkJCQkgIC8qdHBfYXNfc2Vx dWVuY2UqLwotKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLwotKyAgMCwJCQkJICAvKnRwX2hh c2ggKi8KLSsgIDAsCQkJCSAgLyp0cF9jYWxsKi8KLSsgIHN0cHlfc3RyLAkJCSAgLyp0cF9zdHIq LwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRybyov Ci0rICAwLAkJCQkgIC8qdHBfYXNfYnVmZmVyKi8KLSsgIFB5X1RQRkxBR1NfREVGQVVMVCwJCSAg Lyp0cF9mbGFncyovCi0rICAiR0RCIHN5bXRhYiBvYmplY3QiLAkJICAvKiB0cF9kb2MgKi8KLSsg IDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KLSsg IDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSsgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3Rv ZmZzZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRlciAqLwotKyAgMCwJCQkJICAvKiB0cF9pdGVy bmV4dCAqLwotKyAgc3ltdGFiX29iamVjdF9tZXRob2RzLAkgIC8qIHRwX21ldGhvZHMgKi8KLSsg IDAsCQkJCSAgLyogdHBfbWVtYmVycyAqLwotKyAgc3ltdGFiX29iamVjdF9nZXRzZXQJCSAgLyog dHBfZ2V0c2V0ICovCi0rfTsKLSsKLStzdGF0aWMgUHlHZXRTZXREZWYgc2FsX29iamVjdF9nZXRz ZXRbXSA9IHsKLSsgIHsgInN5bXRhYiIsIHNhbHB5X2dldF9zeW10YWIsIE5VTEwsICJTeW10YWIg b2JqZWN0LiIsIE5VTEwgfSwKLSsgIHsgInBjIiwgc2FscHlfZ2V0X3BjLCBOVUxMLCAiUmV0dXJu IHRoZSBzeW10YWJfYW5kX2xpbmUncyBwYy4iLCBOVUxMIH0sCi0rICB7ICJsaW5lIiwgc2FscHlf Z2V0X2xpbmUsIE5VTEwsCi0rICAgICJSZXR1cm4gdGhlIHN5bXRhYl9hbmRfbGluZSdzIGxpbmUu IiwgTlVMTCB9LAotKyAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotK307Ci0rCi0rc3RhdGljIFB5 VHlwZU9iamVjdCBzYWxfb2JqZWN0X3R5cGUgPSB7Ci0rICBQeU9iamVjdF9IRUFEX0lOSVQgKE5V TEwpCi0rICAwLAkJCQkgIC8qb2Jfc2l6ZSovCi0rICAiZ2RiLlN5bXRhYl9hbmRfbGluZSIsCSAg Lyp0cF9uYW1lKi8KLSsgIHNpemVvZiAoc2FsX29iamVjdCksCQkgIC8qdHBfYmFzaWNzaXplKi8K LSsgIDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCi0rICBzYWxweV9kZWFsbG9jLAkJICAvKnRwX2Rl YWxsb2MqLwotKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRy Ki8KLSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9jb21wYXJlKi8K LSsgIDAsCQkJCSAgLyp0cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLwotKyAg MCwJCQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5nKi8K LSsgIDAsCQkJCSAgLyp0cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBfY2FsbCovCi0rICBzYWxw eV9zdHIsCQkJICAvKnRwX3N0ciovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8qLwotKyAgMCwJ CQkJICAvKnRwX3NldGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIqLwotKyAgUHlf VFBGTEFHU19ERUZBVUxULAkJICAvKnRwX2ZsYWdzKi8KLSsgICJHREIgc3ltdGFiX2FuZF9saW5l IG9iamVjdCIsCSAgLyogdHBfZG9jICovCi0rICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCi0r ICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0rICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICov Ci0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0 ZXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRlcm5leHQgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWV0 aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICBzYWxfb2JqZWN0X2dldHNl dAkJICAvKiB0cF9nZXRzZXQgKi8KLSt9OwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdHlw ZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLWluZGV4IGE5N2MxMjUuLmFjMzY2YmIgMTAwNjQ0 Ci0tLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYwotKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMK LUBAIC0yNyw2ICsyNyw4IEBACi0gI2luY2x1ZGUgImRlbWFuZ2xlLmgiCi0gI2luY2x1ZGUgIm9i amZpbGVzLmgiCi0gI2luY2x1ZGUgImxhbmd1YWdlLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgi Ci0rI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVf b2JqZWN0Ci0gewotQEAgLTM1LDExICszNywxNyBAQCB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVf b2JqZWN0Ci0gCi0gICAvKiBJZiBhIFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBv YmpmaWxlLCBpdCBpcyBrZXB0IG9uIGEKLSAgICAgIGRvdWJseS1saW5rZWQgbGlzdCwgcm9vdGVk IGluIHRoZSBvYmpmaWxlLiAgVGhpcyBsZXRzIHVzIGNvcHkgdGhlCi0tICAgICB1bmRlcmx5aW5n IHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4gICovCi0rICAgICB1bmRl cmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4KLSsKLSsgICAg IFdpdGggTlVMTCBvYmpmaWxlIFR5cGUgc3RpbGwgY2FuIGJlIGRvdWJseS1saW5rZWQgaW4gdGhl IGxpc3QKLSsgICAgIFBZVFlfT0JKRUNUU19ESVNDQVJEQUJMRS4gICovCi0gICBzdHJ1Y3QgcHl0 eV90eXBlX29iamVjdCAqcHJldjsKLSAgIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0ICpuZXh0Owot IH0gdHlwZV9vYmplY3Q7Ci0gCi0rLyogRmlyc3QgZWxlbWVudCBvZiBhIGRvdWJseS1saW5rZWQg bGlzdCBvZiBUWVBFX0RJU0NBUkRBQkxFIFR5cGVzLiAgKi8KLStzdGF0aWMgdHlwZV9vYmplY3Qg KnB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKLSsKLSBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVf b2JqZWN0X3R5cGU7Ci0gCi0gLyogQSBGaWVsZCBvYmplY3QuICAqLwotQEAgLTQzNCw3ICs0NDIs NyBAQCB0eXB5X2dldF9zaXplb2YgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotIH0K LSAKLSBzdGF0aWMgc3RydWN0IHR5cGUgKgotLXR5cHlfbG9va3VwX3R5cGVuYW1lIChjaGFyICp0 eXBlX25hbWUpCi0rdHlweV9sb29rdXBfdHlwZW5hbWUgKGNoYXIgKnR5cGVfbmFtZSwgc3RydWN0 IGJsb2NrICpibG9jaykKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IE5VTEw7Ci0gICB2b2xh dGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci1AQCAtNDQ4LDcgKzQ1Niw3IEBAIHR5 cHlfbG9va3VwX3R5cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCi0gCXR5cGUgPSBsb29rdXBfZW51 bSAodHlwZV9uYW1lICsgNSwgTlVMTCk7Ci0gICAgICAgZWxzZQotIAl0eXBlID0gbG9va3VwX3R5 cGVuYW1lIChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoLAotLQkJCQl0eXBlX25hbWUs IE5VTEwsIDApOwotKwkJCQl0eXBlX25hbWUsIGJsb2NrLCAwKTsKLSAgICAgfQotICAgaWYgKGV4 Y2VwdC5yZWFzb24gPCAwKQotICAgICB7Ci1AQCAtNDYyLDcgKzQ3MCw4IEBAIHR5cHlfbG9va3Vw X3R5cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCi0gfQotIAotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAq Ci0tdHlweV9sb29rdXBfdHlwZSAoc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZGVtYW5nbGVk KQotK3R5cHlfbG9va3VwX3R5cGUgKHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRlbWFuZ2xl ZCwKLSsJCSAgc3RydWN0IGJsb2NrICpibG9jaykKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsK LSAgIGNoYXIgKnR5cGVfbmFtZTsKLUBAIC00NzcsNyArNDg2LDcgQEAgdHlweV9sb29rdXBfdHlw ZSAoc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZGVtYW5nbGVkKQotICAgICAgIHx8IGRlbWFu Z2xlZF90eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9DT05TVAotICAgICAgIHx8IGRlbWFuZ2xl ZF90eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9WT0xBVElMRSkKLSAgICAgewotLSAgICAgIHR5 cGUgPSB0eXB5X2xvb2t1cF90eXBlIChkZW1hbmdsZWQtPnUuc19iaW5hcnkubGVmdCk7Ci0rICAg ICAgdHlwZSA9IHR5cHlfbG9va3VwX3R5cGUgKGRlbWFuZ2xlZC0+dS5zX2JpbmFyeS5sZWZ0LCBi bG9jayk7Ci0gICAgICAgaWYgKCEgdHlwZSkKLSAJcmV0dXJuIE5VTEw7Ci0gCi1AQCAtNDk1LDcg KzUwNCw3IEBAIHR5cHlfbG9va3VwX3R5cGUgKHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRl bWFuZ2xlZCkKLSAgICAgfQotIAotICAgdHlwZV9uYW1lID0gY3BfY29tcF90b19zdHJpbmcgKGRl bWFuZ2xlZCwgMTApOwotLSAgdHlwZSA9IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0eXBlX25hbWUp OwotKyAgdHlwZSA9IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0eXBlX25hbWUsIGJsb2NrKTsKLSAg IHhmcmVlICh0eXBlX25hbWUpOwotIAotICAgcmV0dXJuIHR5cGU7Ci1AQCAtNTA5LDEwICs1MTgs MjMgQEAgdHlweV90ZW1wbGF0ZV9hcmd1bWVudCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICph cmdzKQotICAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZGVtYW5nbGVkOwotICAgY29uc3Qg Y2hhciAqZXJyOwotICAgc3RydWN0IHR5cGUgKmFyZ3R5cGU7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJs b2NrID0gTlVMTDsKLSsgIFB5T2JqZWN0ICpibG9ja19vYmogPSBOVUxMOwotIAotLSAgaWYgKCEg UHlBcmdfUGFyc2VUdXBsZSAoYXJncywgImkiLCAmYXJnbm8pKQotKyAgaWYgKCEgUHlBcmdfUGFy c2VUdXBsZSAoYXJncywgIml8TyIsICZhcmdubywgJmJsb2NrX29iaikpCi0gICAgIHJldHVybiBO VUxMOwotIAotKyAgaWYgKGJsb2NrX29iaikKLSsgICAgewotKyAgICAgIGJsb2NrID0gYmxvY2tf b2JqZWN0X3RvX2Jsb2NrIChibG9ja19vYmopOwotKyAgICAgIGlmICghIGJsb2NrKQotKwl7Ci0r CSAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsCi0rCQkJICAgInNlY29uZCBh cmd1bWVudCBtdXN0IGJlIGJsb2NrIik7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsgICAgfQot KwotICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotICAgaWYgKFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX1JFRikKLSAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKTsKLUBAIC01NTUsNyArNTc3LDcgQEAgdHlweV90ZW1wbGF0ZV9hcmd1 bWVudCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgICAgIHJldHVybiBOVUxM OwotICAgICB9Ci0gCi0tICBhcmd0eXBlID0gdHlweV9sb29rdXBfdHlwZSAoZGVtYW5nbGVkLT51 LnNfYmluYXJ5LmxlZnQpOwotKyAgYXJndHlwZSA9IHR5cHlfbG9va3VwX3R5cGUgKGRlbWFuZ2xl ZC0+dS5zX2JpbmFyeS5sZWZ0LCBibG9jayk7Ci0gICBpZiAoISBhcmd0eXBlKQotICAgICByZXR1 cm4gTlVMTDsKLSAKLUBAIC01OTcsOCArNjE5LDU5IEBAIHR5cHlfc3RyIChQeU9iamVjdCAqc2Vs ZikKLSAKLSAMCi0gCi0rLyogS2V5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamZpbGUgcG9pbnRp bmcgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YKLSsgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBU eXBlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmpmaWxlLiAgKi8KLSBzdGF0aWMgY29uc3Qgc3Ry dWN0IG9iamZpbGVfZGF0YSAqdHlweV9vYmpmaWxlX2RhdGFfa2V5OwotIAotKy8qIExpbmsgVFlQ RV9PQkogdG8gaXRzIGFwcHJvcHJpYXRlIGxpc3QuICBFaXRoZXIgdG8gaXRzIG9iamZpbGUgYXNz b2NpYXRlZCBvbmUKLSsgICBvciBhdCBsZWFzdCB0byB0aGUgZ2xvYmFsIGxpc3QgZm9yIFRZUEVf RElTQ0FSREFCTEUgVHlwZXMuICBQZXJtYW5lbnQgdHlwZXMKLSsgICBkbyBub3QgZ2V0IGxpbmtl ZCBhbnl3aGVyZS4gICovCi0rc3RhdGljIHZvaWQKLSt0eXB5X2xpbmsgKHR5cGVfb2JqZWN0ICp0 eXBlX29iaikKLSt7Ci0rICB0eXBlX29iai0+cHJldiA9IE5VTEw7Ci0rCi0rICBpZiAodHlwZV9v YmotPnR5cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSkpCi0rICAgIHsKLSsgICAg ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUp OwotKwotKyAgICAgIHR5cGVfb2JqLT5uZXh0ID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5 X29iamZpbGVfZGF0YV9rZXkpOwotKyAgICAgIGlmICh0eXBlX29iai0+bmV4dCkKLSsJdHlwZV9v YmotPm5leHQtPnByZXYgPSB0eXBlX29iajsKLSsgICAgICBzZXRfb2JqZmlsZV9kYXRhIChvYmpm aWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXksIHR5cGVfb2JqKTsKLSsgICAgfQotKyAgZWxzZSBp ZiAodHlwZV9vYmotPnR5cGUgJiYgVFlQRV9ESVNDQVJEQUJMRSAodHlwZV9vYmotPnR5cGUpKQot KyAgICB7Ci0rICAgICAgdHlwZV9vYmotPm5leHQgPSBweXR5X29iamVjdHNfZGlzY2FyZGFibGU7 Ci0rICAgICAgaWYgKHR5cGVfb2JqLT5uZXh0KQotKwl0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5 cGVfb2JqOwotKyAgICAgIHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9IHR5cGVfb2JqOwotKyAg ICB9Ci0rICBlbHNlCi0rICAgIHR5cGVfb2JqLT5uZXh0ID0gTlVMTDsKLSt9Ci0rCi0rLyogVW5s aW5rIFRZUEVfT0JKIGZyb20gaXRzIGN1cnJlbnQgbGlzdC4gIFBlcm1hbmVudCB0eXBlcyBhcmUg bm90IGxpbmtlZAotKyAgIGFueXdoZXJlIGFuZCB0aGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qg b24gdGhlbS4gICovCi0rc3RhdGljIHZvaWQKLSt0eXB5X3VubGluayAodHlwZV9vYmplY3QgKnR5 cGVfb2JqKQotK3sKLSsgIGlmICh0eXBlX29iai0+cHJldikKLSsgICAgdHlwZV9vYmotPnByZXYt Pm5leHQgPSB0eXBlX29iai0+bmV4dDsKLSsgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZ UEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAgICAgLyogTXVzdCByZXNl dCBoZWFkIG9mIGxpc3QuICAqLwotKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQ RV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7Ci0rCi0rICAgICAgc2V0X29iamZpbGVfZGF0YSAo b2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7Ci0rICAgIH0K LSsgIGVsc2UgaWYgKHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9PSB0eXBlX29iaikKLSsgICAg cHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID0gdHlwZV9vYmotPm5leHQ7Ci0rCi0rICBpZiAodHlw ZV9vYmotPm5leHQpCi0rICAgIHR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmotPnByZXY7 Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCi0gewotQEAgLTYxNiwxMiArNjg5LDEzIEBAIHNhdmVf b2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQotICAg ICB7Ci0gICAgICAgdHlwZV9vYmplY3QgKm5leHQgPSBvYmotPm5leHQ7Ci0gCi0tICAgICAgaHRh Yl9lbXB0eSAoY29waWVkX3R5cGVzKTsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUg KG9iai0+dHlwZSkgPT0gb2JqZmlsZSk7Ci0rICAgICAgdHlweV91bmxpbmsgKG9iaik7Ci0gCi0t ICAgICAgb2JqLT50eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgb2JqLT50eXBl LCBjb3BpZWRfdHlwZXMpOwotKyAgICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUg KG9iai0+dHlwZSwgY29waWVkX3R5cGVzKTsKLSAKLS0gICAgICBvYmotPm5leHQgPSBOVUxMOwot LSAgICAgIG9iai0+cHJldiA9IE5VTEw7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxF IChvYmotPnR5cGUpID09IE5VTEwpOwotKyAgICAgIHR5cHlfbGluayAob2JqKTsKLSAKLSAgICAg ICBvYmogPSBuZXh0OwotICAgICB9Ci1AQCAtNjMyLDQxICs3MDYsMjUgQEAgc2F2ZV9vYmpmaWxl X3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCi0gfQotIAotIHN0 YXRpYyB2b2lkCi0tc2V0X3R5cGUgKHR5cGVfb2JqZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0eXBl KQotK3R5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKLSB7Ci0tICBvYmotPnR5cGUgPSB0eXBl OwotLSAgb2JqLT5wcmV2ID0gTlVMTDsKLS0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlw ZSkpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklM RSAodHlwZSk7Ci0rICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2Jq OwotIAotLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpm aWxlX2RhdGFfa2V5KTsKLS0gICAgICBpZiAob2JqLT5uZXh0KQotLQlvYmotPm5leHQtPnByZXYg PSBvYmo7Ci0tICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2Rh dGFfa2V5LCBvYmopOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0r ICB0eXB5X3VubGluayAodHlwZV9vYmopOwotKwotKyAgdHlwZV9vYmotPm9iX3R5cGUtPnRwX2Zy ZWUgKG9iaik7Ci0gfQotIAotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyBy ZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZpbGUuICAqLwotIHN0YXRpYyB2b2lkCi0t dHlweV9kZWFsbG9jIChQeU9iamVjdCAqb2JqKQotK3R5cHlfdHlwZXNfbWFya191c2VkICh2b2lk KQotIHsKLS0gIHR5cGVfb2JqZWN0ICp0eXBlID0gKHR5cGVfb2JqZWN0ICopIG9iajsKLS0KLS0g IGlmICh0eXBlLT5wcmV2KQotLSAgICB0eXBlLT5wcmV2LT5uZXh0ID0gdHlwZS0+bmV4dDsKLS0g IGVsc2UgaWYgKHR5cGUtPnR5cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKSkKLS0gICAg ewotLSAgICAgIC8qIE11c3QgcmVzZXQgaGVhZCBvZiBsaXN0LiAgKi8KLS0gICAgICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZS0+dHlwZSk7Ci0tICAgICAgaWYg KG9iamZpbGUpCi0tCXNldF9vYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRh X2tleSwgdHlwZS0+bmV4dCk7Ci0tICAgIH0KLS0gIGlmICh0eXBlLT5uZXh0KQotLSAgICB0eXBl LT5uZXh0LT5wcmV2ID0gdHlwZS0+cHJldjsKLSsgIHR5cGVfb2JqZWN0ICp0eXBlX29iajsKLSAK LS0gIHR5cGUtPm9iX3R5cGUtPnRwX2ZyZWUgKHR5cGUpOwotKyAgZm9yICh0eXBlX29iaiA9IHB5 dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKLSsgICAgICAgdHlwZV9vYmogIT0gTlVMTDsKLSsgICAg ICAgdHlwZV9vYmogPSB0eXBlX29iai0+bmV4dCkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHR5cGVf b2JqLT50eXBlKTsKLSB9Ci0gCi0gLyogQ3JlYXRlIGEgbmV3IFR5cGUgcmVmZXJyaW5nIHRvIFRZ UEUuICAqLwotQEAgLTY3Nyw3ICs3MzUsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0 IHR5cGUgKnR5cGUpCi0gCi0gICB0eXBlX29iaiA9IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3Qs ICZ0eXBlX29iamVjdF90eXBlKTsKLSAgIGlmICh0eXBlX29iaikKLS0gICAgc2V0X3R5cGUgKHR5 cGVfb2JqLCB0eXBlKTsKLSsgICAgewotKyAgICAgIHR5cGVfb2JqLT50eXBlID0gdHlwZTsKLSsg ICAgICB0eXB5X2xpbmsgKHR5cGVfb2JqKTsKLSsgICAgfQotIAotICAgcmV0dXJuIChQeU9iamVj dCAqKSB0eXBlX29iajsKLSB9Ci1AQCAtNjk2LDE0ICs3NTcsMjggQEAgdHlwZV9vYmplY3RfdG9f dHlwZSAoUHlPYmplY3QgKm9iaikKLSBQeU9iamVjdCAqCi0gZ2RicHlfbG9va3VwX3R5cGUgKFB5 T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQotIHsKLS0gIHN0YXRp YyBjaGFyICprZXl3b3Jkc1tdID0geyAibmFtZSIsIE5VTEwgfTsKLSsgIHN0YXRpYyBjaGFyICpr ZXl3b3Jkc1tdID0geyAibmFtZSIsICJibG9jayIsIE5VTEwgfTsKLSAgIGNoYXIgKnR5cGVfbmFt ZSA9IE5VTEw7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IE5VTEw7Ci0rICBQeU9iamVjdCAqYmxv Y2tfb2JqID0gTlVMTDsKLSsgIHN0cnVjdCBibG9jayAqYmxvY2sgPSBOVUxMOwotIAotLSAgaWYg KCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIChhcmdzLCBrdywgInMiLCBrZXl3b3Jkcywg JnR5cGVfbmFtZSkpCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgKGFyZ3Ms IGt3LCAic3xPIiwga2V5d29yZHMsCi0rCQkJCSAgICAgJnR5cGVfbmFtZSwgJmJsb2NrX29iaikp Ci0gICAgIHJldHVybiBOVUxMOwotIAotLSAgdHlwZSA9IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0 eXBlX25hbWUpOwotKyAgaWYgKGJsb2NrX29iaikKLSsgICAgewotKyAgICAgIGJsb2NrID0gYmxv Y2tfb2JqZWN0X3RvX2Jsb2NrIChibG9ja19vYmopOwotKyAgICAgIGlmICghIGJsb2NrKQotKwl7 Ci0rCSAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsCi0rCQkJICAgIidibG9j aycgYXJndW1lbnQgbXVzdCBiZSBhIEJsb2NrIik7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsg ICAgfQotKwotKyAgdHlwZSA9IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0eXBlX25hbWUsIGJsb2Nr KTsKLSAgIGlmICghIHR5cGUpCi0gICAgIHJldHVybiBOVUxMOwotIAotQEAgLTczNyw2ICs4MTIs OCBAQCBnZGJweV9pbml0aWFsaXplX3R5cGVzICh2b2lkKQotIAotICAgUHlfSU5DUkVGICgmZmll bGRfb2JqZWN0X3R5cGUpOwotICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiRmll bGQiLCAoUHlPYmplY3QgKikgJmZpZWxkX29iamVjdF90eXBlKTsKLSsKLSsgIG9ic2VydmVyX2F0 dGFjaF9tYXJrX3VzZWQgKHR5cHlfdHlwZXNfbWFya191c2VkKTsKLSB9Ci0gCi0gDAotZGlmZiAt LWdpdCBhL2dkYi9weXRob24vcHktdXRpbHMuYyBiL2dkYi9weXRob24vcHktdXRpbHMuYwotaW5k ZXggNGNjZjk3Zi4uODdjZGU3MyAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHktdXRpbHMuYwot KysrIGIvZ2RiL3B5dGhvbi9weS11dGlscy5jCi1AQCAtMTksNiArMTksNyBAQAotIAotICNpbmNs dWRlICJkZWZzLmgiCi0gI2luY2x1ZGUgImNoYXJzZXQuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIK LSAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCi0gCi0gCi1AQCAtMjE5LDMgKzIyMCw0OCBA QCBnZGJweV9pc19zdHJpbmcgKFB5T2JqZWN0ICpvYmopCi0gewotICAgcmV0dXJuIFB5U3RyaW5n X0NoZWNrIChvYmopIHx8IFB5VW5pY29kZV9DaGVjayAob2JqKTsKLSB9Ci0rCi0rLyogQ29udmVy dHMgT0JKIHRvIGEgQ09SRV9BRERSIHZhbHVlLgotKwotKyAgIFJldHVybnMgMSBvbiBzdWNjZXNz IG9yIDAgb24gZmFpbHVyZSwgd2l0aCBhIFB5dGhvbiBleGNlcHRpb24gc2V0LiAgVGhpcwotKyAg IGZ1bmN0aW9uIGNhbiBhbHNvIHRocm93IEdEQiBleGNlcHRpb25zLiAgKi8KLSsKLStpbnQKLStn ZXRfYWRkcl9mcm9tX3B5dGhvbiAoUHlPYmplY3QgKm9iaiwgQ09SRV9BRERSICphZGRyKQotK3sK LSsgIGlmIChnZGJweV9pc192YWx1ZV9vYmplY3QgKG9iaikpCi0rICAgICphZGRyID0gdmFsdWVf YXNfYWRkcmVzcyAodmFsdWVfb2JqZWN0X3RvX3ZhbHVlIChvYmopKTsKLSsgIGVsc2UgaWYgKFB5 TG9uZ19DaGVjayAob2JqKSkKLSsgICAgewotKyAgICAgIC8qIEFzc3VtZSBDT1JFX0FERFIgY29y cmVzcG9uZHMgdG8gdW5zaWduZWQgbG9uZy4gICovCi0rICAgICAgKmFkZHIgPSBQeUxvbmdfQXNV bnNpZ25lZExvbmcgKG9iaik7Ci0rICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpICE9IE5VTEwp Ci0rCXJldHVybiAwOwotKyAgICB9Ci0rICBlbHNlIGlmIChQeUludF9DaGVjayAob2JqKSkKLSsg ICAgewotKyAgICAgIGxvbmcgdmFsOwotKwotKyAgICAgIC8qIEFzc3VtZSBDT1JFX0FERFIgY29y cmVzcG9uZHMgdG8gdW5zaWduZWQgbG9uZy4gICovCi0rICAgICAgdmFsID0gUHlJbnRfQXNMb25n IChvYmopOwotKwotKyAgICAgIGlmICh2YWwgPj0gMCkKLSsJKmFkZHIgPSB2YWw7Ci0rICAgICAg ZWxzZQotKyAgICAgIHsKLSsJLyogSWYgbm8gZXJyb3Igb2N1cnJlZCwgVkFMIGlzIGluZGVlZCBu ZWdhdGl2ZS4gICovCi0rCWlmIChQeUVycl9PY2N1cnJlZCAoKSAhPSBOVUxMKQotKwkgIHJldHVy biAwOwotKwotKwlQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBh ZGRyZXNzIik7Ci0rCXJldHVybiAwOwotKyAgICAgIH0KLSsgICAgfQotKyAgZWxzZQotKyAgICB7 Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIHR5cGUg Zm9yIGFkZHJlc3MiKTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgcmV0dXJuIDE7 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRob24vcHkt dmFsdWUuYwotaW5kZXggYTc5MjgxOS4uYmRhYzgwZSAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24v cHktdmFsdWUuYwotKysrIGIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCi1AQCAtMjUsNiArMjUsNyBA QAotICNpbmNsdWRlICJsYW5ndWFnZS5oIgotICNpbmNsdWRlICJkZnAuaCIKLSAjaW5jbHVkZSAi dmFscHJpbnQuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAKLSAjaWZkZWYgSEFWRV9QWVRI T04KLSAKLUBAIC00Myw2ICs0NCwxMCBAQAotIC8qIFB5dGhvbidzIGxvbmcgdHlwZSBjb3JyZXNw b25kcyB0byBDJ3MgbG9uZyBsb25nIHR5cGUuICAqLwotICNkZWZpbmUgYnVpbHRpbl90eXBlX3B5 bG9uZyBidWlsdGluX3R5cGUgKHB5dGhvbl9nZGJhcmNoKS0+YnVpbHRpbl9sb25nX2xvbmcKLSAK LSsvKiBQeXRob24ncyBsb25nIHR5cGUgY29ycmVzcG9uZHMgdG8gQydzIGxvbmcgbG9uZyB0eXBl LiAgVW5zaWduZWQgdmVyc2lvbi4gICovCi0rI2RlZmluZSBidWlsdGluX3R5cGVfdXB5bG9uZyBi dWlsdGluX3R5cGUgXAotKyAgKHB5dGhvbl9nZGJhcmNoKS0+YnVpbHRpbl91bnNpZ25lZF9sb25n X2xvbmcKLSsKLSAjZGVmaW5lIGJ1aWx0aW5fdHlwZV9weWJvb2wgXAotICAgbGFuZ3VhZ2VfYm9v bF90eXBlIChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoKQotIAotQEAgLTk0NSw3ICs5 NTAsMzQgQEAgY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAoUHlPYmplY3QgKm9iaikKLSAJewot IAkgIExPTkdFU1QgbCA9IFB5TG9uZ19Bc0xvbmdMb25nIChvYmopOwotIAotLQkgIGlmICghIFB5 RXJyX09jY3VycmVkICgpKQotKwkgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKLSsJICAgIHsKLSsJ ICAgICAgLyogSWYgdGhlIGVycm9yIHdhcyBhbiBvdmVyZmxvdywgd2UgY2FuIHRyeSBjb252ZXJ0 aW5nIHRvCi0rCSAgICAgICAgIFVMT05HRVNUIGluc3RlYWQuICAqLwotKwkgICAgICBpZiAoUHlF cnJfRXhjZXB0aW9uTWF0Y2hlcyAoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCi0rCQl7Ci0rCQkgIFB5 T2JqZWN0ICpldHlwZSwgKmV2YWx1ZSwgKmV0cmFjZWJhY2ssICp6ZXJvOwotKwotKwkJICBQeUVy cl9GZXRjaCAoJmV0eXBlLCAmZXZhbHVlLCAmZXRyYWNlYmFjayk7Ci0rCQkgIHplcm8gPSBQeUlu dF9Gcm9tTG9uZyAoMCk7Ci0rCi0rCQkgIC8qIENoZWNrIHdoZXRoZXIgb2JqIGlzIHBvc2l0aXZl LiAgKi8KLSsJCSAgaWYgKFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCAob2JqLCB6ZXJvLCBQeV9H VCkgPiAwKQotKwkJICAgIHsKLSsJCSAgICAgIFVMT05HRVNUIHVsOwotKwotKwkJICAgICAgdWwg PSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nIChvYmopOwotKwkJICAgICAgaWYgKCEgUHlFcnJf T2NjdXJyZWQgKCkpCi0rCQkJdmFsdWUgPSB2YWx1ZV9mcm9tX3Vsb25nZXN0IChidWlsdGluX3R5 cGVfdXB5bG9uZywgdWwpOwotKwkJICAgIH0KLSsJCSAgZWxzZQotKwkJICAgIC8qIFRoZXJlJ3Mg bm90aGluZyB3ZSBjYW4gZG8uICAqLwotKwkJICAgIFB5RXJyX1Jlc3RvcmUgKGV0eXBlLCBldmFs dWUsIGV0cmFjZWJhY2spOwotKwotKwkJICBQeV9ERUNSRUYgKHplcm8pOwotKwkJfQotKwkgICAg fQotKwkgIGVsc2UKLSAJICAgIHZhbHVlID0gdmFsdWVfZnJvbV9sb25nZXN0IChidWlsdGluX3R5 cGVfcHlsb25nLCBsKTsKLSAJfQotICAgICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sgKG9iaikp Ci1AQCAtMTAxMSw2ICsxMDQzLDI1IEBAIGdkYnB5X2hpc3RvcnkgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncykKLSAgIHJldHVybiB2YWx1ZV90b192YWx1ZV9vYmplY3QgKHJlc192YWwp OwotIH0KLSAKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNl ZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3B5dGhv bl90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0rewotKyAgdmFsdWVfb2JqZWN0ICppdGVyOwotKwot KyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQp Ci0rICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChpdGVyLT52YWx1ZSkpOwotK30KLSsK LSsvKiBSZXR1cm5zIDEgaW4gT0JKIGlzIGEgZ2RiLlZhbHVlIG9iamVjdCwgMCBvdGhlcndpc2Uu ICAqLwotKwotK2ludAotK2dkYnB5X2lzX3ZhbHVlX29iamVjdCAoUHlPYmplY3QgKm9iaikKLSt7 Ci0rICByZXR1cm4gUHlPYmplY3RfVHlwZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7 Ci0rfQotKwotIHZvaWQKLSBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKLSB7Ci1AQCAt MTAyMSw2ICsxMDcyLDggQEAgZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCi0gICBQeU1v ZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJWYWx1ZSIsIChQeU9iamVjdCAqKSAmdmFsdWVf b2JqZWN0X3R5cGUpOwotIAotICAgdmFsdWVzX2luX3B5dGhvbiA9IE5VTEw7Ci0rCi0rICBvYnNl cnZlcl9hdHRhY2hfbWFya191c2VkIChweXRob25fdHlwZXNfbWFya191c2VkKTsKLSB9Ci0gCi0g DAotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmggYi9nZGIvcHl0aG9u L3B5dGhvbi1pbnRlcm5hbC5oCi1pbmRleCAxYmZhNzAwLi41MmY5YjM5IDEwMDY0NAotLS0tIGEv Z2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAotKysrIGIvZ2RiL3B5dGhvbi9weXRob24taW50 ZXJuYWwuaAotQEAgLTYxLDM2ICs2MSw3OSBAQCB0eXBlZGVmIGludCBQeV9zc2l6ZV90OwotICNk ZWZpbmUgUHlFdmFsX1JlbGVhc2VMb2NrKCkgMAotICNlbmRpZgotIAotKyNpbmNsdWRlICJjb21t YW5kLmgiCi0rCi0rc3RydWN0IGJsb2NrOwotK3N0cnVjdCBzeW1ib2w7Ci0rc3RydWN0IHN5bXRh Yl9hbmRfbGluZTsKLSBzdHJ1Y3QgdmFsdWU7Ci0gc3RydWN0IGxhbmd1YWdlX2RlZm47Ci0gCi0g ZXh0ZXJuIFB5T2JqZWN0ICpnZGJfbW9kdWxlOwotK2V4dGVybiBQeVR5cGVPYmplY3QgYmxvY2tf b2JqZWN0X3R5cGU7Ci0gZXh0ZXJuIFB5VHlwZU9iamVjdCB2YWx1ZV9vYmplY3RfdHlwZTsKLStl eHRlcm4gUHlUeXBlT2JqZWN0IHN5bWJvbF9vYmplY3RfdHlwZTsKLSsKLSsvKiBVc2VkIGluIHB5 dGhvbi1pbmZlcmlvci5jLiAgKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIFB5T2JqZWN0X0hF QUQKLSsKLSsgIC8qIFRoZSB0aHJlYWQgd2UgcmVwcmVzZW50LiAgKi8KLSsgIHN0cnVjdCB0aHJl YWRfaW5mbyAqdGhyZWFkOwotKwotKyAgLyogVGhlIEluZmVyaW9yIG9iamVjdCB0byB3aGljaCB0 aGlzIHRocmVhZCBiZWxvbmdzLiAgKi8KLSsgIFB5T2JqZWN0ICppbmZfb2JqOwotK30gdGhyZWFk X29iamVjdDsKLSAKLSBQeU9iamVjdCAqZ2RicHlfaGlzdG9yeSAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKTsKLStQeU9iamVjdCAqZ2RicHlfYnJlYWtwb2ludHMgKFB5T2JqZWN0ICos IFB5T2JqZWN0ICopOwotIFB5T2JqZWN0ICpnZGJweV9mcmFtZV9zdG9wX3JlYXNvbl9zdHJpbmcg KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwotK1B5T2JqZWN0ICpnZGJweV9sb29rdXBfc3ltYm9s IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7Ci0gUHlPYmpl Y3QgKmdkYnB5X3NlbGVjdGVkX2ZyYW1lIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp OwotK1B5T2JqZWN0ICpnZGJweV9ibG9ja19mb3JfcGMgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncyk7Ci0gUHlPYmplY3QgKmdkYnB5X2xvb2t1cF90eXBlIChQeU9iamVjdCAqc2VsZiwg UHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7Ci0gUHlPYmplY3QgKmdkYnB5X2NyZWF0ZV9s YXp5X3N0cmluZ19vYmplY3QgKENPUkVfQUREUiBhZGRyZXNzLCBsb25nIGxlbmd0aCwKLSAJCQkJ CSAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rUHlPYmplY3Qg KmdkYnB5X2luZmVyaW9ycyAoUHlPYmplY3QgKnVudXNlZCwgUHlPYmplY3QgKnVudXNlZDIpOwot K1B5T2JqZWN0ICpnZGJweV9zZWxlY3RlZF90aHJlYWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncyk7Ci0gCi0rUHlPYmplY3QgKnN5bXRhYl9hbmRfbGluZV90b19zYWxfb2JqZWN0IChz dHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7Ci0rUHlPYmplY3QgKnN5bXRhYl90b19zeW10YWJf b2JqZWN0IChzdHJ1Y3Qgc3ltdGFiICpzeW10YWIpOwotK1B5T2JqZWN0ICpzeW1ib2xfdG9fc3lt Ym9sX29iamVjdCAoc3RydWN0IHN5bWJvbCAqc3ltKTsKLStQeU9iamVjdCAqYmxvY2tfdG9fYmxv Y2tfb2JqZWN0IChzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKLSBQeU9iamVjdCAqdmFsdWVfdG9fdmFs dWVfb2JqZWN0IChzdHJ1Y3QgdmFsdWUgKnYpOwotIFB5T2JqZWN0ICp0eXBlX3RvX3R5cGVfb2Jq ZWN0IChzdHJ1Y3QgdHlwZSAqKTsKLSBQeU9iamVjdCAqb2JqZmlsZV90b19vYmpmaWxlX29iamVj dCAoc3RydWN0IG9iamZpbGUgKik7Ci0rUHlPYmplY3QgKmZyYW1lX2luZm9fdG9fZnJhbWVfb2Jq ZWN0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpOwotK3RocmVhZF9vYmplY3QgKmNyZWF0ZV90 aHJlYWRfb2JqZWN0IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKTsKLSt0aHJlYWRfb2JqZWN0ICpm aW5kX3RocmVhZF9vYmplY3QgKHB0aWRfdCBwdGlkKTsKLStQeU9iamVjdCAqZmluZF9pbmZlcmlv cl9vYmplY3QgKGludCBwaWQpOwotIAotIFB5T2JqZWN0ICpvYmpmcHlfZ2V0X3ByaW50ZXJzIChQ eU9iamVjdCAqLCB2b2lkICopOwotIAotK3N0cnVjdCBibG9jayAqYmxvY2tfb2JqZWN0X3RvX2Js b2NrIChQeU9iamVjdCAqb2JqKTsKLStzdHJ1Y3Qgc3ltYm9sICpzeW1ib2xfb2JqZWN0X3RvX3N5 bWJvbCAoUHlPYmplY3QgKm9iaik7Ci0gc3RydWN0IHZhbHVlICp2YWx1ZV9vYmplY3RfdG9fdmFs dWUgKFB5T2JqZWN0ICpzZWxmKTsKLSBzdHJ1Y3QgdmFsdWUgKmNvbnZlcnRfdmFsdWVfZnJvbV9w eXRob24gKFB5T2JqZWN0ICpvYmopOwotIHN0cnVjdCB0eXBlICp0eXBlX29iamVjdF90b190eXBl IChQeU9iamVjdCAqb2JqKTsKLSAKLStQeU9iamVjdCAqZ2RicHlfZ2V0X2hvb2tfZnVuY3Rpb24g KGNvbnN0IGNoYXIgKik7Ci0rCi0gdm9pZCBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCk7 Ci0rdm9pZCBnZGJweV9pbml0aWFsaXplX2JyZWFrcG9pbnRzICh2b2lkKTsKLSB2b2lkIGdkYnB5 X2luaXRpYWxpemVfZnJhbWVzICh2b2lkKTsKLSt2b2lkIGdkYnB5X2luaXRpYWxpemVfc3ltdGFi cyAodm9pZCk7Ci0gdm9pZCBnZGJweV9pbml0aWFsaXplX2NvbW1hbmRzICh2b2lkKTsKLSt2b2lk IGdkYnB5X2luaXRpYWxpemVfc3ltYm9scyAodm9pZCk7Ci0gdm9pZCBnZGJweV9pbml0aWFsaXpl X3R5cGVzICh2b2lkKTsKLSt2b2lkIGdkYnB5X2luaXRpYWxpemVfYmxvY2tzICh2b2lkKTsKLSB2 b2lkIGdkYnB5X2luaXRpYWxpemVfZnVuY3Rpb25zICh2b2lkKTsKLSB2b2lkIGdkYnB5X2luaXRp YWxpemVfb2JqZmlsZSAodm9pZCk7Ci0gdm9pZCBnZGJweV9pbml0aWFsaXplX2xhenlfc3RyaW5n ICh2b2lkKTsKLSt2b2lkIGdkYnB5X2luaXRpYWxpemVfcGFyYW1ldGVycyAodm9pZCk7Ci0rdm9p ZCBnZGJweV9pbml0aWFsaXplX3RocmVhZCAodm9pZCk7Ci0rdm9pZCBnZGJweV9pbml0aWFsaXpl X2luZmVyaW9yICh2b2lkKTsKLSAKLSBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3B5X2Rl Y3JlZiAoUHlPYmplY3QgKnB5KTsKLSAKLUBAIC0xMDAsNiArMTQzLDEyIEBAIHN0cnVjdCBjbGVh bnVwICplbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gZXh0ZXJu IHN0cnVjdCBnZGJhcmNoICpweXRob25fZ2RiYXJjaDsKLSBleHRlcm4gY29uc3Qgc3RydWN0IGxh bmd1YWdlX2RlZm4gKnB5dGhvbl9sYW5ndWFnZTsKLSAKLStjaGFyICpnZGJweV9wYXJzZV9jb21t YW5kX25hbWUgKGNoYXIgKnRleHQsCi0rCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJh c2VfbGlzdCwKLSsJCQkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzdGFydF9saXN0KTsKLSsK LStQeU9iamVjdCAqZ2RicHlfcGFyYW1ldGVyX3ZhbHVlIChlbnVtIHZhcl90eXBlcywgdm9pZCAq KTsKLSsKLSAvKiBVc2UgdGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8gdGhyb3cgdGhlIGFwcHJv cHJpYXRlIFB5dGhvbgotICAgIGV4Y2VwdGlvbi4gICovCi0gI2RlZmluZSBHREJfUFlfSEFORExF X0VYQ0VQVElPTihFeGNlcHRpb24pCQkJCVwKLUBAIC0xMTAsNiArMTU5LDE5IEBAIGV4dGVybiBj b25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG9uX2xhbmd1YWdlOwotIAkJCSAgICAgIiVz IiwgRXhjZXB0aW9uLm1lc3NhZ2UpOwkJCVwKLSAgICAgfSB3aGlsZSAoMCkKLSAKLSsvKiBVc2Ug dGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8gdGhyb3cgdGhlIGFwcHJvcHJpYXRlIFB5dGhvbgot KyAgIGV4Y2VwdGlvbi4gIFRoaXMgbWFjcm8gaXMgZm9yIHVzZSBpbnNpZGUgc2V0dGVyIGZ1bmN0 aW9ucy4gICovCi0rI2RlZmluZSBHREJfUFlfU0VUX0hBTkRMRV9FWENFUFRJT04oRXhjZXB0aW9u KQkJCQlcCi0rICAgIGRvIHsJCQkJCQkJCVwKLSsgICAgICBpZiAoRXhjZXB0aW9uLnJlYXNvbiA8 IDApCQkJCQkJXAotKyAgICAgICAgewkJCQkJCQkJXAotKwkgIFB5RXJyX0Zvcm1hdCAoRXhjZXB0 aW9uLnJlYXNvbiA9PSBSRVRVUk5fUVVJVAkJCVwKLSsJCQk/IFB5RXhjX0tleWJvYXJkSW50ZXJy dXB0IDogUHlFeGNfUnVudGltZUVycm9yLCBcCi0rCQkJIiVzIiwgRXhjZXB0aW9uLm1lc3NhZ2Up OwkJCVwKLSsJICByZXR1cm4gLTE7CQkJCQkJCVwKLSsJfQkJCQkJCQkJXAotKyAgICB9IHdoaWxl ICgwKQotKwotIAotIHZvaWQgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpOwotIAotQEAgLTEyNSwx NyArMTg3LDIyIEBAIGdkYl9ieXRlICpnZGJweV9leHRyYWN0X2xhenlfc3RyaW5nIChQeU9iamVj dCAqc3RyaW5nLAotIAkJCQkgICAgIHN0cnVjdCB0eXBlICoqc3RyX3R5cGUsIAotIAkJCQkgICAg IGxvbmcgKmxlbmd0aCwgY2hhciAqKmVuY29kaW5nKTsKLSAKLStpbnQgZ2RicHlfaXNfdmFsdWVf b2JqZWN0IChQeU9iamVjdCAqb2JqKTsKLSsKLSAvKiBOb3RlIHRoYXQgdGhlc2UgYXJlIGRlY2xh cmVkIGhlcmUsIGFuZCBub3QgaW4gcHl0aG9uLmggd2l0aCB0aGUKLSAgICBvdGhlciBwcmV0dHkt cHJpbnRlciBmdW5jdGlvbnMsIGJlY2F1c2UgdGhleSByZWZlciB0byBQeU9iamVjdC4gICovCi0g UHlPYmplY3QgKmFwcGx5X3Zhcm9ial9wcmV0dHlfcHJpbnRlciAoUHlPYmplY3QgKnByaW50X29i aiwKLSAJCQkJICAgICAgIHN0cnVjdCB2YWx1ZSAqKnJlcGxhY2VtZW50KTsKLSBQeU9iamVjdCAq Z2RicHlfZ2V0X3Zhcm9ial9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHZhbHVlICp2YWx1ZSk7Ci0r UHlPYmplY3QgKmdkYnB5X2luc3RhbnRpYXRlX3ByaW50ZXIgKFB5T2JqZWN0ICpjb25zLCBQeU9i amVjdCAqdmFsdWUpOwotIGNoYXIgKmdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKFB5T2JqZWN0ICpw cmludGVyKTsKLSBQeU9iamVjdCAqZ2RicHlfZGVmYXVsdF92aXN1YWxpemVyIChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotIAotLWV4dGVybiBQeU9iamVjdCAqZ2RicHlfZG9jX2Nz dDsKLSBleHRlcm4gUHlPYmplY3QgKmdkYnB5X2NoaWxkcmVuX2NzdDsKLSBleHRlcm4gUHlPYmpl Y3QgKmdkYnB5X3RvX3N0cmluZ19jc3Q7Ci0gZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9kaXNwbGF5 X2hpbnRfY3N0OwotK2V4dGVybiBQeU9iamVjdCAqZ2RicHlfZG9jX2NzdDsKLSsKLStpbnQgZ2V0 X2FkZHJfZnJvbV9weXRob24gKFB5T2JqZWN0ICpvYmosIENPUkVfQUREUiAqYWRkcik7Ci0gCi0g I2VuZGlmIC8qIEdEQl9QWVRIT05fSU5URVJOQUxfSCAqLwotZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vcHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCi1pbmRleCAyOTM4NmM5Li4xOTVkYWNl IDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYwotKysrIGIvZ2RiL3B5dGhvbi9weXRo b24uYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSAidmFsdWUuaCIKLSAjaW5jbHVkZSAi bGFuZ3VhZ2UuaCIKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJldmVudC1s b29wLmgiCi0gCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi1AQCAtNDYsMTAgKzQ3LDE3IEBAIHN0 YXRpYyBpbnQgZ2RicHlfYXV0b19sb2FkID0gMTsKLSAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUu aCIKLSAjaW5jbHVkZSAiY2hhcnNldC5oIgotICNpbmNsdWRlICJ0b3AuaCIKLSsjaW5jbHVkZSAi c29saWIuaCIKLSAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCi0rI2luY2x1ZGUgImxpbmVz cGVjLmgiCi0rI2luY2x1ZGUgInN5bXRhYi5oIgotKyNpbmNsdWRlICJzb3VyY2UuaCIKLSAjaW5j bHVkZSAidmVyc2lvbi5oIgotKyNpbmNsdWRlICJpbmZlcmlvci5oIgotKyNpbmNsdWRlICJnZGJ0 aHJlYWQuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgImdkYnRocmVhZC5oIgot KyNpbmNsdWRlICJldmVudC10b3AuaCIKLSAKLSBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9k c1tdOwotIAotQEAgLTE5NywxMCArMjA1LDEwIEBAIHB5dGhvbl9jb21tYW5kIChjaGFyICphcmcs IGludCBmcm9tX3R0eSkKLSAgICBOVUxMIChhbmQgc2V0IGEgUHl0aG9uIGV4Y2VwdGlvbikgb24g ZXJyb3IuICBIZWxwZXIgZnVuY3Rpb24gZm9yCi0gICAgZ2V0X3BhcmFtZXRlci4gICovCi0gCi0t c3RhdGljIFB5T2JqZWN0ICoKLS1wYXJhbWV0ZXJfdG9fcHl0aG9uIChzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqY21kKQotK1B5T2JqZWN0ICoKLStnZGJweV9wYXJhbWV0ZXJfdmFsdWUgKGVudW0g dmFyX3R5cGVzIHR5cGUsIHZvaWQgKnZhcikKLSB7Ci0tICBzd2l0Y2ggKGNtZC0+dmFyX3R5cGUp Ci0rICBzd2l0Y2ggKHR5cGUpCi0gICAgIHsKLSAgICAgY2FzZSB2YXJfc3RyaW5nOgotICAgICBj YXNlIHZhcl9zdHJpbmdfbm9lc2NhcGU6Ci1AQCAtMjA4LDcgKzIxNiw3IEBAIHBhcmFtZXRlcl90 b19weXRob24gKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQpCi0gICAgIGNhc2UgdmFyX2Zp bGVuYW1lOgotICAgICBjYXNlIHZhcl9lbnVtOgotICAgICAgIHsKLS0JY2hhciAqc3RyID0gKiAo Y2hhciAqKikgY21kLT52YXI7Ci0rCWNoYXIgKnN0ciA9ICogKGNoYXIgKiopIHZhcjsKLSAJaWYg KCEgc3RyKQotIAkgIHN0ciA9ICIiOwotIAlyZXR1cm4gUHlTdHJpbmdfRGVjb2RlIChzdHIsIHN0 cmxlbiAoc3RyKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKLUBAIC0yMTYsNyArMjI0LDcgQEAg cGFyYW1ldGVyX3RvX3B5dGhvbiAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZCkKLSAKLSAg ICAgY2FzZSB2YXJfYm9vbGVhbjoKLSAgICAgICB7Ci0tCWlmICgqIChpbnQgKikgY21kLT52YXIp Ci0rCWlmICgqIChpbnQgKikgdmFyKQotIAkgIFB5X1JFVFVSTl9UUlVFOwotIAllbHNlCi0gCSAg UHlfUkVUVVJOX0ZBTFNFOwotQEAgLTIyNCw3ICsyMzIsNyBAQCBwYXJhbWV0ZXJfdG9fcHl0aG9u IChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kKQotIAotICAgICBjYXNlIHZhcl9hdXRvX2Jv b2xlYW46Ci0gICAgICAgewotLQllbnVtIGF1dG9fYm9vbGVhbiBhYiA9ICogKGVudW0gYXV0b19i b29sZWFuICopIGNtZC0+dmFyOwotKwllbnVtIGF1dG9fYm9vbGVhbiBhYiA9ICogKGVudW0gYXV0 b19ib29sZWFuICopIHZhcjsKLSAJaWYgKGFiID09IEFVVE9fQk9PTEVBTl9UUlVFKQotIAkgIFB5 X1JFVFVSTl9UUlVFOwotIAllbHNlIGlmIChhYiA9PSBBVVRPX0JPT0xFQU5fRkFMU0UpCi1AQCAt MjM0LDE1ICsyNDIsMTUgQEAgcGFyYW1ldGVyX3RvX3B5dGhvbiAoc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKmNtZCkKLSAgICAgICB9Ci0gCi0gICAgIGNhc2UgdmFyX2ludGVnZXI6Ci0tICAgICAg aWYgKCgqIChpbnQgKikgY21kLT52YXIpID09IElOVF9NQVgpCi0rICAgICAgaWYgKCgqIChpbnQg KikgdmFyKSA9PSBJTlRfTUFYKQotIAlQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAvKiBGYWxsIHRo cm91Z2guICAqLwotICAgICBjYXNlIHZhcl96aW50ZWdlcjoKLS0gICAgICByZXR1cm4gUHlMb25n X0Zyb21Mb25nICgqIChpbnQgKikgY21kLT52YXIpOwotKyAgICAgIHJldHVybiBQeUxvbmdfRnJv bUxvbmcgKCogKGludCAqKSB2YXIpOwotIAotICAgICBjYXNlIHZhcl91aW50ZWdlcjoKLSAgICAg ICB7Ci0tCXVuc2lnbmVkIGludCB2YWwgPSAqICh1bnNpZ25lZCBpbnQgKikgY21kLT52YXI7Ci0r CXVuc2lnbmVkIGludCB2YWwgPSAqICh1bnNpZ25lZCBpbnQgKikgdmFyOwotIAlpZiAodmFsID09 IFVJTlRfTUFYKQotIAkgIFB5X1JFVFVSTl9OT05FOwotIAlyZXR1cm4gUHlMb25nX0Zyb21VbnNp Z25lZExvbmcgKHZhbCk7Ci1AQCAtMjgwLDcgKzI4OCw3IEBAIGdkYnB5X3BhcmFtZXRlciAoUHlP YmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotIAotICAgaWYgKCEgY21kLT52YXIpCi0gICAg IHJldHVybiBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImAlcycgaXMgbm90IGEg cGFyYW1ldGVyIiwgYXJnKTsKLS0gIHJldHVybiBwYXJhbWV0ZXJfdG9fcHl0aG9uIChjbWQpOwot KyAgcmV0dXJuIGdkYnB5X3BhcmFtZXRlcl92YWx1ZSAoY21kLT52YXJfdHlwZSwgY21kLT52YXIp OwotIH0KLSAKLSAvKiBBIFB5dGhvbiBmdW5jdGlvbiB3aGljaCBldmFsdWF0ZXMgYSBzdHJpbmcg dXNpbmcgdGhlIGdkYiBDTEkuICAqLwotQEAgLTMyMyw2ICszMzEsMTA1IEBAIGV4ZWN1dGVfZ2Ri X2NvbW1hbmQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSAgIFB5X1JFVFVSTl9O T05FOwotIH0KLSAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuc29saWJfYWRkcmVzcyAoTG9u ZykgLT4gU3RyaW5nLgotKyAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5 IGhvbGRpbmcgYSBnaXZlbiBhZGRyZXNzLCBvciBOb25lLiAgKi8KLSsKLStzdGF0aWMgUHlPYmpl Y3QgKgotK2dkYnB5X3NvbGliX2FkZHJlc3MgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn cykKLSt7Ci0rICB1bnNpZ25lZCBsb25nIGxvbmcgcGM7Ci0rICBjaGFyICpzb25hbWU7Ci0rICBQ eU9iamVjdCAqc3RyX29iajsKLSsKLSsgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgIksi LCAmcGMpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIHNvbmFtZSA9IHNvbGliX25hbWVfZnJv bV9hZGRyZXNzIChjdXJyZW50X3Byb2dyYW1fc3BhY2UsIHBjKTsKLSsgIGlmIChzb25hbWUpCi0r ICAgIHN0cl9vYmogPSBQeVN0cmluZ19EZWNvZGUgKHNvbmFtZSwgc3RybGVuIChzb25hbWUpLCBo b3N0X2NoYXJzZXQgKCksIE5VTEwpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RyX29iaiA9 IFB5X05vbmU7Ci0rICAgICAgUHlfSU5DUkVGIChQeV9Ob25lKTsKLSsgICAgfQotKwotKyAgcmV0 dXJuIHN0cl9vYmo7Ci0rfQotKwotKy8qIEEgUHl0aG9uIGZ1bmN0aW9uIHdoaWNoIGlzIGEgd3Jh cHBlciBmb3IgZGVjb2RlX2xpbmVfMS4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStnZGJw eV9kZWNvZGVfbGluZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIHN0 cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzID0geyBOVUxMLCAwIH07IC8qIEluaXRpYWxpemUg dG8gYXBwZWFzZSBnY2MuICAqLwotKyAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0rICBj aGFyICphcmcgPSBOVUxMOwotKyAgaW50IGZyZWVfc2FscyA9IDAsIGk7Ci0rICBQeU9iamVjdCAq cmVzdWx0ID0gTlVMTDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsK LSsKLSsgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJ8cyIsICZhcmcpKQotKyAgICBy ZXR1cm4gTlVMTDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0r ICAgIHsKLSsgICAgICBpZiAoYXJnKQotKwl7Ci0rCSAgY2hhciAqY29weTsKLSsKLSsJICBhcmcg PSBzdHJkdXAgKGFyZyk7Ci0rCSAgY29weSA9IGFyZzsKLSsKLSsJICBzYWxzID0gZGVjb2RlX2xp bmVfMSAoJmNvcHksIDAsIDAsIDAsIDAsIDApOwotKwkgIGZyZWVfc2FscyA9IDE7Ci0rCX0KLSsg ICAgICBlbHNlCi0rCXsKLSsJICBzZXRfZGVmYXVsdF9zb3VyY2Vfc3ltdGFiX2FuZF9saW5lICgp OwotKwkgIHNhbCA9IGdldF9jdXJyZW50X3NvdXJjZV9zeW10YWJfYW5kX2xpbmUgKCk7Ci0rCSAg c2Fscy5zYWxzID0gJnNhbDsKLSsJICBzYWxzLm5lbHRzID0gMTsKLSsJfQotKyAgICB9Ci0rICBp ZiAoYXJnKQotKyAgICB4ZnJlZSAoYXJnKTsKLSsKLSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkK LSsgICAgewotKyAgICAgIGlmIChmcmVlX3NhbHMpCi0rCXhmcmVlIChzYWxzLnNhbHMpOwotKyAg ICAgIC8qIFdlIGtub3cgdGhpcyB3aWxsIGFsd2F5cyB0aHJvdy4gICovCi0rICAgICAgR0RCX1BZ X0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0rICAgIH0KLSsKLSsgIGlmIChzYWxzLm5lbHRz KQotKyAgICB7Ci0rICAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcgKHNhbHMubmVsdHMpOwotKyAg ICAgIGZvciAoaSA9IDA7IGkgPCBzYWxzLm5lbHRzOyArK2kpCi0rCXsKLSsJICBQeU9iamVjdCAq b2JqOwotKwkgIGNoYXIgKnN0cjsKLSsKLSsJICBvYmogPSBzeW10YWJfYW5kX2xpbmVfdG9fc2Fs X29iamVjdCAoc2Fscy5zYWxzW2ldKTsKLSsJICBpZiAoISBvYmopCi0rCSAgICB7Ci0rCSAgICAg IFB5X0RFQ1JFRiAocmVzdWx0KTsKLSsJICAgICAgcmVzdWx0ID0gTlVMTDsKLSsJICAgICAgYnJl YWs7Ci0rCSAgICB9Ci0rCi0rCSAgUHlUdXBsZV9TZXRJdGVtIChyZXN1bHQsIGksIG9iaik7Ci0r CX0KLSsgICAgfQotKwotKyAgaWYgKGZyZWVfc2FscykKLSsgICAgeGZyZWUgKHNhbHMuc2Fscyk7 Ci0rCi0rICBpZiAocmVzdWx0KQotKyAgICByZXR1cm4gcmVzdWx0OwotKyAgUHlfUkVUVVJOX05P TkU7Ci0rfQotKwotIC8qIFBhcnNlIGEgc3RyaW5nIGFuZCBldmFsdWF0ZSBpdCBhcyBhbiBleHBy ZXNzaW9uLiAgKi8KLSBzdGF0aWMgUHlPYmplY3QgKgotIGdkYnB5X3BhcnNlX2FuZF9ldmFsIChQ eU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi1AQCAtMzYxLDYgKzQ2OCwxMTQgQEAgc291 cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY2hhciAqZmlsZSkKLSAKLSAMCi0gCi0r LyogUG9zdGluZyBhbmQgaGFuZGxpbmcgZXZlbnRzLiAgKi8KLSsKLSsvKiBBIHNpbmdsZSBldmVu dC4gICovCi0rc3RydWN0IGdkYnB5X2V2ZW50Ci0rewotKyAgLyogVGhlIFB5dGhvbiBldmVudC4g IFRoaXMgaXMganVzdCBhIGNhbGxhYmxlIG9iamVjdC4gICovCi0rICBQeU9iamVjdCAqZXZlbnQ7 Ci0rICAvKiBUaGUgbmV4dCBldmVudC4gICovCi0rICBzdHJ1Y3QgZ2RicHlfZXZlbnQgKm5leHQ7 Ci0rfTsKLSsKLSsvKiBBbGwgcGVuZGluZyBldmVudHMuICAqLwotK3N0YXRpYyBzdHJ1Y3QgZ2Ri cHlfZXZlbnQgKmdkYnB5X2V2ZW50X2xpc3Q7Ci0rLyogVGhlIGZpbmFsIGxpbmsgb2YgdGhlIGV2 ZW50IGxpc3QuICAqLwotK3N0YXRpYyBzdHJ1Y3QgZ2RicHlfZXZlbnQgKipnZGJweV9ldmVudF9s aXN0X2VuZDsKLSsKLSsvKiBXZSB1c2UgYSBmaWxlIGhhbmRsZXIsIGFuZCBub3QgYW4gYXN5bmMg aGFuZGxlciwgc28gdGhhdCB3ZSBjYW4KLSsgICB3YWtlIHVwIHRoZSBtYWluIHRocmVhZCBldmVu IHdoZW4gaXQgaXMgYmxvY2tlZCBpbiBwb2xsKCkuICAqLwotK3N0YXRpYyBpbnQgZ2RicHlfZXZl bnRfZmRzWzJdOwotKwotKy8qIFRoZSBmaWxlIGhhbmRsZXIgY2FsbGJhY2suICBUaGlzIHJlYWRz IGZyb20gdGhlIGludGVybmFsIHBpcGUsIGFuZAotKyAgIHRoZW4gcHJvY2Vzc2VzIHRoZSBQeXRo b24gZXZlbnQgcXVldWUuICBUaGlzIHdpbGwgYWx3YXlzIGJlIHJ1biBpbgotKyAgIHRoZSBtYWlu IGdkYiB0aHJlYWQuICAqLwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfcnVuX2V2ZW50cyAoaW50IGVy ciwgZ2RiX2NsaWVudF9kYXRhIGlnbm9yZSkKLSt7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51 cDsKLSsgIGNoYXIgYnVmZmVyWzEwMF07Ci0rICBpbnQgcjsKLSsKLSsgIGNsZWFudXAgPSBlbnN1 cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7Ci0r Ci0rICAvKiBKdXN0IHJlYWQgd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIG9uIHRoZSBmZC4gIEl0IGlz IHJlbGF0aXZlbHkKLSsgICAgIGhhcm1sZXNzIGlmIHRoZXJlIGFyZSBhbnkgYnl0ZXMgbGVmdCBv dmVyLiAgKi8KLSsgIHIgPSByZWFkIChnZGJweV9ldmVudF9mZHNbMF0sIGJ1ZmZlciwgc2l6ZW9m IChidWZmZXIpKTsKLSsKLSsgIHdoaWxlIChnZGJweV9ldmVudF9saXN0KQotKyAgICB7Ci0rICAg ICAgLyogRGlzcGF0Y2hpbmcgdGhlIGV2ZW50IG1pZ2h0IHB1c2ggYSBuZXcgZWxlbWVudCBvbnRv IHRoZSBldmVudAotKwkgbG9vcCwgc28gd2UgdXBkYXRlIGhlcmUgImF0b21pY2FsbHkgZW5vdWdo Ii4gICovCi0rICAgICAgc3RydWN0IGdkYnB5X2V2ZW50ICppdGVtID0gZ2RicHlfZXZlbnRfbGlz dDsKLSsgICAgICBnZGJweV9ldmVudF9saXN0ID0gZ2RicHlfZXZlbnRfbGlzdC0+bmV4dDsKLSsg ICAgICBpZiAoZ2RicHlfZXZlbnRfbGlzdCA9PSBOVUxMKQotKwlnZGJweV9ldmVudF9saXN0X2Vu ZCA9ICZnZGJweV9ldmVudF9saXN0OwotKwotKyAgICAgIC8qIElnbm9yZSBlcnJvcnMuICAqLwot KyAgICAgIFB5T2JqZWN0X0NhbGxPYmplY3QgKGl0ZW0tPmV2ZW50LCBOVUxMKTsKLSsKLSsgICAg ICBQeV9ERUNSRUYgKGl0ZW0tPmV2ZW50KTsKLSsgICAgICB4ZnJlZSAoaXRlbSk7Ci0rICAgIH0K LSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSt9Ci0rCi0rLyogU3VibWl0IGFuIGV2ZW50 IHRvIHRoZSBnZGIgdGhyZWFkLiAgKi8KLStzdGF0aWMgUHlPYmplY3QgKgotK2dkYnB5X3Bvc3Rf ZXZlbnQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBzdHJ1Y3QgZ2Ri cHlfZXZlbnQgKmV2ZW50OwotKyAgUHlPYmplY3QgKmZ1bmM7Ci0rICBpbnQgd2FrZXVwOwotKwot KyAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiTyIsICZmdW5jKSkKLSsgICAgcmV0dXJu IE5VTEw7Ci0rCi0rICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2sgKGZ1bmMpKQotKyAgICB7Ci0rICAg ICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsICJQb3N0ZWQgZXZlbnQgaXMg bm90IGNhbGxhYmxlIik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIFB5X0lO Q1JFRiAoZnVuYyk7Ci0rCi0rICAvKiBGcm9tIGhlcmUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZnVu Y3Rpb24sIHdlIGhhdmUgdGhlIEdJTCwgc28gd2UKLSsgICAgIGNhbiBvcGVyYXRlIG9uIG91ciBn bG9iYWwgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhvdXQgd29ycnlpbmcuICAqLwotKyAgd2FrZXVwID0g Z2RicHlfZXZlbnRfbGlzdCA9PSBOVUxMOwotKwotKyAgZXZlbnQgPSBYTkVXIChzdHJ1Y3QgZ2Ri cHlfZXZlbnQpOwotKyAgZXZlbnQtPmV2ZW50ID0gZnVuYzsKLSsgIGV2ZW50LT5uZXh0ID0gTlVM TDsKLSsgICpnZGJweV9ldmVudF9saXN0X2VuZCA9IGV2ZW50OwotKyAgZ2RicHlfZXZlbnRfbGlz dF9lbmQgPSAmZXZlbnQtPm5leHQ7Ci0rCi0rICAvKiBXYWtlIHVwIGdkYiB3aGVuIG5lZWRlZC4g ICovCi0rICBpZiAod2FrZXVwKQotKyAgICB7Ci0rICAgICAgY2hhciBjID0gJ3EnOwkJLyogQW55 dGhpbmcuICovCi0rICAgICAgaWYgKHdyaXRlIChnZGJweV9ldmVudF9mZHNbMV0sICZjLCAxKSAh PSAxKQotKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyAoUHlFeGNfSU9FcnJvcik7 Ci0rICAgIH0KLSsKLSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLSsvKiBJbml0aWFsaXplIHRo ZSBQeXRob24gZXZlbnQgaGFuZGxlci4gICovCi0rc3RhdGljIHZvaWQKLStnZGJweV9pbml0aWFs aXplX2V2ZW50cyAodm9pZCkKLSt7Ci0rICBpZiAoIXBpcGUgKGdkYnB5X2V2ZW50X2ZkcykpCi0r ICAgIHsKLSsgICAgICBnZGJweV9ldmVudF9saXN0X2VuZCA9ICZnZGJweV9ldmVudF9saXN0Owot KyAgICAgIGFkZF9maWxlX2hhbmRsZXIgKGdkYnB5X2V2ZW50X2Zkc1swXSwgZ2RicHlfcnVuX2V2 ZW50cywgTlVMTCk7Ci0rICAgIH0KLSt9Ci0rCi0rDAotKwotIC8qIFByaW50aW5nLiAgKi8KLSAK LSAvKiBBIHB5dGhvbiBmdW5jdGlvbiB0byB3cml0ZSBhIHNpbmdsZSBzdHJpbmcgdXNpbmcgZ2Ri J3MgZmlsdGVyZWQKLUBAIC0zOTcsNiArNjEyLDU1IEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lk KQotIAotIAwKLSAKLSsvKiBTY3JpcHQgaW50ZXJmYWNlLiAgKi8KLSsKLSsvKiBUcnVlIGlmICdn ZGIgLVAnIHdhcyB1c2VkLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgcnVubmlu Z19weXRob25fc2NyaXB0OwotKwotKy8qIFRydWUgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiBhIGNh bGwgdG8gJ2dkYi5jbGknLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgaW5fY2xp OwotKwotKy8qIEVudGVyIHRoZSBjb21tYW5kIGxvb3AuICAqLwotKwotK3N0YXRpYyBQeU9iamVj dCAqCi0rZ2RicHlfY2xpIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCi0r ewotKyAgaWYgKCEgcnVubmluZ19weXRob25fc2NyaXB0IHx8IGluX2NsaSkKLSsgICAgcmV0dXJu IFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGludm9rZSBDTEkgcmVj dXJzaXZlbHkiKTsKLSsKLSsgIGluX2NsaSA9IDE7Ci0rICBjbGlfY29tbWFuZF9sb29wICgpOwot KyAgaW5fY2xpID0gMDsKLSsKLSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLSsvKiBTZXQgdXAg dGhlIFB5dGhvbiBhcmd1bWVudCB2ZWN0b3IgYW5kIGV2YWx1YXRlIGEgc2NyaXB0LiAgVGhpcyBp cwotKyAgIHVzZWQgdG8gaW1wbGVtZW50ICdnZGIgLVAnLiAgKi8KLSsKLSt2b2lkCi0rcnVuX3B5 dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBGSUxFICppbnB1dDsK LSsKLSsgIC8qIFdlIG5ldmVyIGZyZWUgdGhpcywgc2luY2Ugd2UgcGxhbiB0byBleGl0IGF0IHRo ZSBlbmQuICAqLwotKyAgZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1 cnJlbnRfbGFuZ3VhZ2UpOwotKwotKyAgcnVubmluZ19weXRob25fc2NyaXB0ID0gMTsKLSsgIFB5 U3lzX1NldEFyZ3YgKGFyZ2MgLSAxLCBhcmd2ICsgMSk7Ci0rICBpbnB1dCA9IGZvcGVuIChhcmd2 WzBdLCAiciIpOwotKyAgaWYgKCEgaW5wdXQpCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRl cnIsICJjb3VsZCBub3Qgb3BlbiAlczogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9yIChlcnJubykp OwotKyAgICAgIGV4aXQgKDEpOwotKyAgICB9Ci0rICBQeVJ1bl9TaW1wbGVGaWxlIChpbnB1dCwg YXJndlswXSk7Ci0rICBmY2xvc2UgKGlucHV0KTsKLSsgIGV4aXQgKDApOwotK30KLSsKLSsMCi0r Ci0gLyogVGhlICJjdXJyZW50IiBvYmpmaWxlLiAgVGhpcyBpcyBzZXQgd2hlbiBnZGIgZGV0ZWN0 cyB0aGF0IGEgbmV3Ci0gICAgb2JqZmlsZSBoYXMgYmVlbiBsb2FkZWQuICBJdCBpcyBvbmx5IHNl dCBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgY2FsbAotICAgIHRvIGdkYnB5X25ld19vYmpmaWxlOyBp dCBpcyBOVUxMIGF0IG90aGVyIHRpbWVzLiAgKi8KLUBAIC02NDAsMTQgKzkwNCwyOCBAQCBFbmFi bGVzIG9yIGRpc2FibGVzIGF1dG8tbG9hZGluZyBvZiBQeXRob24gY29kZSB3aGVuIGFuIG9iamVj dCBpcyBvcGVuZWQuIiksCi0gICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudCAoZ2RiX21vZHVs ZSwgIlZFUlNJT04iLCAoY2hhciopIHZlcnNpb24pOwotICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29u c3RhbnQgKGdkYl9tb2R1bGUsICJIT1NUX0NPTkZJRyIsIChjaGFyKikgaG9zdF9uYW1lKTsKLSAg IFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50IChnZGJfbW9kdWxlLCAiVEFSR0VUX0NPTkZJRyIs IChjaGFyKikgdGFyZ2V0X25hbWUpOwotKyNpZmRlZiBQWVRIT05ESVIKLSsgIFB5TW9kdWxlX0Fk ZFN0cmluZ0NvbnN0YW50IChnZGJfbW9kdWxlLCAicHl0aG9uZGlyIiwgUFlUSE9ORElSKTsKLSsj ZWxzZQotKyAgaWYgKGdkYl9kYXRhZGlyKQotKyAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFu dCAoZ2RiX21vZHVsZSwgImRhdGFkaXIiLCBnZGJfZGF0YWRpcik7Ci0rI2VuZGlmCi0gCi0gICBn ZGJweV9pbml0aWFsaXplX3ZhbHVlcyAoKTsKLSsgIGdkYnB5X2luaXRpYWxpemVfYnJlYWtwb2lu dHMgKCk7Ci0gICBnZGJweV9pbml0aWFsaXplX2ZyYW1lcyAoKTsKLSsgIGdkYnB5X2luaXRpYWxp emVfc3ltdGFicyAoKTsKLSAgIGdkYnB5X2luaXRpYWxpemVfY29tbWFuZHMgKCk7Ci0rICBnZGJw eV9pbml0aWFsaXplX3N5bWJvbHMgKCk7Ci0rICBnZGJweV9pbml0aWFsaXplX2Jsb2NrcyAoKTsK LSAgIGdkYnB5X2luaXRpYWxpemVfZnVuY3Rpb25zICgpOwotICAgZ2RicHlfaW5pdGlhbGl6ZV90 eXBlcyAoKTsKLSsgIGdkYnB5X2luaXRpYWxpemVfcGFyYW1ldGVycyAoKTsKLSAgIGdkYnB5X2lu aXRpYWxpemVfb2JqZmlsZSAoKTsKLSAgIGdkYnB5X2luaXRpYWxpemVfbGF6eV9zdHJpbmcgKCk7 Ci0rICBnZGJweV9pbml0aWFsaXplX3RocmVhZCAoKTsKLSsgIGdkYnB5X2luaXRpYWxpemVfaW5m ZXJpb3IgKCk7Ci0rICBnZGJweV9pbml0aWFsaXplX2V2ZW50cyAoKTsKLSAKLSAgIFB5UnVuX1Np bXBsZVN0cmluZyAoImltcG9ydCBnZGIiKTsKLSAgIFB5UnVuX1NpbXBsZVN0cmluZyAoImdkYi5w cmV0dHlfcHJpbnRlcnMgPSBbXSIpOwotQEAgLTY4Myw2ICs5NjEsMTUgQEAgY2xhc3MgR2RiT3V0 cHV0RmlsZTpcblwKLSBcblwKLSBzeXMuc3RkZXJyID0gR2RiT3V0cHV0RmlsZSgpXG5cCi0gc3lz LnN0ZG91dCA9IEdkYk91dHB1dEZpbGUoKVxuXAotK2lmIGhhc2F0dHIgKGdkYiwgJ2RhdGFkaXIn KTpcblwKLSsgIGdkYi5weXRob25kaXIgPSBnZGIuZGF0YWRpciArICcvcHl0aG9uJ1xuXAotK2lm IGhhc2F0dHIgKGdkYiwgJ3B5dGhvbmRpcicpOlxuXAotKyAgc3lzLnBhdGguaW5zZXJ0KDAsIGdk Yi5weXRob25kaXIpXG5cCi0rICBnZGIuX19wYXRoX18gPSBbZ2RiLnB5dGhvbmRpciArICcvZ2Ri J11cblwKLSsgIGZyb20gb3MucGF0aCBpbXBvcnQgZXhpc3RzXG5cCi0rICBpcHkgPSBnZGIucHl0 aG9uZGlyICsgJy9nZGIvX19pbml0X18ucHknXG5cCi0rICBpZiBleGlzdHMgKGlweSk6XG5cCi0r ICAgIGV4ZWNmaWxlIChpcHkpXG5cCi0gIik7Ci0gCi0gICAvKiBSZWxlYXNlIHRoZSBHSUwgd2hp bGUgZ2RiIHJ1bnMuICAqLwotQEAgLTcwMiw5ICs5ODksMTQgQEAgc3RhdGljIFB5TWV0aG9kRGVm IEdkYk1ldGhvZHNbXSA9Ci0gICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCi0gICB7 ICJleGVjdXRlIiwgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTLAotICAgICAiRXhl Y3V0ZSBhIGdkYiBjb21tYW5kIiB9LAotKyAgeyAiY2xpIiwgZ2RicHlfY2xpLCBNRVRIX05PQVJH UywKLSsgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAotICAgeyAicGFyYW1ldGVyIiwgZ2RicHlf cGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJSZXR1cm4gYSBnZGIgcGFyYW1ldGVyJ3Mg dmFsdWUiIH0sCi0gCi0rICB7ICJicmVha3BvaW50cyIsIGdkYnB5X2JyZWFrcG9pbnRzLCBNRVRI X05PQVJHUywKLSsgICAgIlJldHVybiBhIHR1cGxlIG9mIGFsbCBicmVha3BvaW50IG9iamVjdHMi IH0sCi0rCi0gICB7ICJkZWZhdWx0X3Zpc3VhbGl6ZXIiLCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6 ZXIsIE1FVEhfVkFSQVJHUywKLSAgICAgIkZpbmQgdGhlIGRlZmF1bHQgdmlzdWFsaXplciBmb3Ig YSBWYWx1ZS4iIH0sCi0gCi1AQCAtNzI1LDExICsxMDE3LDM5IEBAIFJldHVybiBhIHN0cmluZyBl eHBsYWluaW5nIHVud2luZCBzdG9wIHJlYXNvbi4iIH0sCi0gICAgICJsb29rdXBfdHlwZSAobmFt ZSBbLCBibG9ja10pIC0+IHR5cGVcblwKLSBSZXR1cm4gYSBUeXBlIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGdpdmVuIG5hbWUuIiB9LAotIAotKyAgeyAibG9va3VwX3N5bWJvbCIsIChQeUNGdW5jdGlv bikgZ2RicHlfbG9va3VwX3N5bWJvbCwKLSsgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JE UywKLSsgICAgImxvb2t1cF9zeW1ib2wgKG5hbWUgWywgYmxvY2tdIFssIGRvbWFpbl0pIC0+IChz eW1ib2wsIGlzX2ZpZWxkX29mX3RoaXMpXG5cCi0rUmV0dXJuIGEgdHVwbGUgd2l0aCB0aGUgc3lt Ym9sIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5hbWUgKG9yIE5vbmUpIGFuZFxuXAotK2Eg Ym9vbGVhbiBpbmRpY2F0aW5nIGlmIG5hbWUgaXMgYSBmaWVsZCBvZiB0aGUgY3VycmVudCBpbXBs aWVkIGFyZ3VtZW50XG5cCi0rYHRoaXMnICh3aGVuIHRoZSBjdXJyZW50IGxhbmd1YWdlIGlzIG9i amVjdC1vcmllbnRlZCkuIiB9LAotKyAgeyAic29saWJfYWRkcmVzcyIsIGdkYnB5X3NvbGliX2Fk ZHJlc3MsIE1FVEhfVkFSQVJHUywKLSsgICAgInNvbGliX2FkZHJlc3MgKExvbmcpIC0+IFN0cmlu Zy5cblwKLStSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGhvbGRpbmcgYSBn aXZlbiBhZGRyZXNzLCBvciBOb25lLiIgfSwKLSsKLSsgIHsgImJsb2NrX2Zvcl9wYyIsIGdkYnB5 X2Jsb2NrX2Zvcl9wYywgTUVUSF9WQVJBUkdTLAotKyAgICAiUmV0dXJuIHRoZSBibG9jayBjb250 YWluaW5nIHRoZSBnaXZlbiBwYyB2YWx1ZSwgb3IgTm9uZS4iIH0sCi0rCi0rICB7ICJkZWNvZGVf bGluZSIsIGdkYnB5X2RlY29kZV9saW5lLCBNRVRIX1ZBUkFSR1MsCi0rICAgICJEZWNvZGUgYSBz dHJpbmcgYXJndW1lbnQgdGhlIHdheSB0aGF0ICdicmVhaycgb3IgJ2VkaXQnIGRvZXMuXG5cCi0r UmV0dXJuIGEgdHVwbGUgaG9sZGluZyB0aGUgZmlsZSBuYW1lIChvciBOb25lKSBhbmQgbGluZSBu dW1iZXIgKG9yIE5vbmUpLlxuXAotK05vdGU6IG1heSBsYXRlciBjaGFuZ2UgdG8gcmV0dXJuIGFu IG9iamVjdC4iIH0sCi0rCi0rICB7ICJzZWxlY3RlZF90aHJlYWQiLCBnZGJweV9zZWxlY3RlZF90 aHJlYWQsIE1FVEhfTk9BUkdTLAotKyAgICAic2VsZWN0ZWRfdGhyZWFkICgpIC0+IGdkYi5JbmZl cmlvclRocmVhZC5cblwKLStSZXR1cm4gdGhlIHNlbGVjdGVkIHRocmVhZCBvYmplY3QuIiB9LAot KyAgeyAiaW5mZXJpb3JzIiwgZ2RicHlfaW5mZXJpb3JzLCBNRVRIX05PQVJHUywKLSsgICAgImlu ZmVyaW9ycyAoKSAtPiAoZ2RiLkluZmVyaW9yLCAuLi4pLlxuXAotK1JldHVybiBhIHR1cGxlIGNv bnRhaW5pbmcgYWxsIGluZmVyaW9ycy4iIH0sCi0rCi0gICB7ICJwYXJzZV9hbmRfZXZhbCIsIGdk YnB5X3BhcnNlX2FuZF9ldmFsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJwYXJzZV9hbmRfZXZhbCAo U3RyaW5nKSAtPiBWYWx1ZS5cblwKLSBQYXJzZSBTdHJpbmcgYXMgYW4gZXhwcmVzc2lvbiwgZXZh bHVhdGUgaXQsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIFZhbHVlLiIKLSAgIH0sCi0gCi0r ICB7ICJwb3N0X2V2ZW50IiwgZ2RicHlfcG9zdF9ldmVudCwgTUVUSF9WQVJBUkdTLAotKyAgICAi UG9zdCBhbiBldmVudCBpbnRvIGdkYidzIGV2ZW50IGxvb3AuIiB9LAotKwotICAgeyAid3JpdGUi LCBnZGJweV93cml0ZSwgTUVUSF9WQVJBUkdTLAotICAgICAiV3JpdGUgYSBzdHJpbmcgdXNpbmcg Z2RiJ3MgZmlsdGVyZWQgc3RyZWFtLiIgfSwKLSAgIHsgImZsdXNoIiwgZ2RicHlfZmx1c2gsIE1F VEhfTk9BUkdTLAotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmggYi9nZGIvcHl0aG9u L3B5dGhvbi5oCi1pbmRleCA1ZDkzZjY3Li4xYTViOWE4IDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhv bi9weXRob24uaAotKysrIGIvZ2RiL3B5dGhvbi9weXRob24uaAotQEAgLTI2LDYgKzI2LDggQEAg dm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGlu ZSAqKTsKLSAKLSB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNoYXIg KmZpbGUpOwotIAotK3ZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJn dik7Ci0rCi0gaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAotIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQs IENPUkVfQUREUiBhZGRyZXNzLAotIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCByZWN1cnNlLAotZGlmZiAtLWdpdCBhL2dkYi9zY20tbGFuZy5jIGIvZ2RiL3NjbS1sYW5nLmMK LWluZGV4IDU4OThhYWQuLjIzZTVmMjIgMTAwNjQ0Ci0tLS0gYS9nZGIvc2NtLWxhbmcuYwotKysr IGIvZ2RiL3NjbS1sYW5nLmMKLUBAIC0yMzEsNiArMjMxLDcgQEAgY29uc3Qgc3RydWN0IGV4cF9k ZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX3NjbSA9Ci0gewotICAgcHJpbnRfc3ViZXhwX3N0YW5k YXJkLAotICAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkLAotKyAgb3BlcmF0b3JfY2hlY2tfc3Rh bmRhcmQsCi0gICBvcF9uYW1lX3N0YW5kYXJkLAotICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFy ZCwKLSAgIGV2YWx1YXRlX2V4cAotZGlmZiAtLWdpdCBhL2dkYi9zY20tdmFscHJpbnQuYyBiL2dk Yi9zY20tdmFscHJpbnQuYwotaW5kZXggMWU4ZDQ4ZS4uOTUxODVkNCAxMDA2NDQKLS0tLSBhL2dk Yi9zY20tdmFscHJpbnQuYwotKysrIGIvZ2RiL3NjbS12YWxwcmludC5jCi1AQCAtNjIsOSArNjIs OSBAQCBzY21faW5mZXJpb3JfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIHZhbHVl LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotICAgICB7Ci0gICAgICAgLyogWFhYOiBTaG91bGQg d2UgY2FjaGUgdGhlc2Ugc3ltYm9scz8gICovCi0gICAgICAgZ2RiX291dHB1dF9zeW0gPQotLQls b29rdXBfc3ltYm9sX2dsb2JhbCAoImdkYl9vdXRwdXQiLCBOVUxMLCBOVUxMLCBWQVJfRE9NQUlO KTsKLSsJbG9va3VwX3N5bWJvbF9nbG9iYWwgKCJnZGJfb3V0cHV0IiwgTlVMTCwgVkFSX0RPTUFJ Tik7Ci0gICAgICAgZ2RiX291dHB1dF9sZW5fc3ltID0KLS0JbG9va3VwX3N5bWJvbF9nbG9iYWwg KCJnZGJfb3V0cHV0X2xlbmd0aCIsIE5VTEwsIE5VTEwsIFZBUl9ET01BSU4pOwotKwlsb29rdXBf c3ltYm9sX2dsb2JhbCAoImdkYl9vdXRwdXRfbGVuZ3RoIiwgTlVMTCwgVkFSX0RPTUFJTik7Ci0g Ci0gICAgICAgaWYgKChnZGJfb3V0cHV0X3N5bSA9PSBOVUxMKSB8fCAoZ2RiX291dHB1dF9sZW5f c3ltID09IE5VTEwpKQotIAlyZXQgPSAtMTsKLWRpZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRl cC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYwotaW5kZXggZGE0MTM3Yi4uZTNmY2IxYSAxMDA2NDQK LS0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLUBA IC0yNSw2ICsyNSw3IEBACi0gCi0gI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKLSAjaW5jbHVkZSAi c2gtdGRlcC5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gI2RlZmluZSBSRUdTeDE2 KGJhc2UpIFwKLSAgIHsoYmFzZSksICAgICAgMH0sIFwKLUBAIC04OSw2ICs5MCw5IEBAIHNoX2xp bnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKQotICAgICAgIHRkZXAtPmNvcmVfZ3JlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVf cmVnbWFwICopZ3JlZ3NfdGFibGU7Ci0gICAgICAgdGRlcC0+Y29yZV9mcHJlZ21hcCA9IChzdHJ1 Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZnByZWdzX3RhYmxlOwotICAgICB9Ci0rCi0rICBzZXRf Z2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGlu dXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJv dG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotZGlmZiAtLWdpdCBh L2dkYi9zb2xpYi1kYXJ3aW4uYyBiL2dkYi9zb2xpYi1kYXJ3aW4uYwotaW5kZXggM2M3MDA4OS4u MGVlN2Q4NSAxMDA2NDQKLS0tLSBhL2dkYi9zb2xpYi1kYXJ3aW4uYwotKysrIGIvZ2RiL3NvbGli LWRhcndpbi5jCi1AQCAtNDA4LDcgKzQwOCw2IEBAIGRhcndpbl9yZWxvY2F0ZV9zZWN0aW9uX2Fk ZHJlc3NlcyAoc3RydWN0IHNvX2xpc3QgKnNvLAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLSBk YXJ3aW5fbG9va3VwX2xpYl9zeW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot IAkJCSAgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwK LSAJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICByZXR1cm4gTlVMTDsKLWRp ZmYgLS1naXQgYS9nZGIvc29saWItc3B1LmMgYi9nZGIvc29saWItc3B1LmMKLWluZGV4IDk0YTc3 ZmIuLjdlYTY4ZDIgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3B1LmMKLSsrKyBiL2dkYi9zb2xp Yi1zcHUuYwotQEAgLTMyNiwxNiArMzI2LDEzIEBAIHNwdV9iZmRfb3BlbiAoY2hhciAqcGF0aG5h bWUpCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotIHNwdV9sb29rdXBfbGliX3N5bWJvbCAoY29u c3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwK LS0JCSAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgICAgY29uc3QgZG9t YWluX2VudW0gZG9tYWluKQotIHsKLSAgIGlmIChiZmRfZ2V0X2FyY2ggKG9iamZpbGUtPm9iZmQp ID09IGJmZF9hcmNoX3NwdSkKLS0gICAgcmV0dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21f b2JqZmlsZSAob2JqZmlsZSwgbmFtZSwgbGlua2FnZV9uYW1lLAotLQkJCQkJICAgICAgZG9tYWlu KTsKLSsgICAgcmV0dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAob2JqZmls ZSwgbmFtZSwgZG9tYWluKTsKLSAKLSAgIGlmIChzdnI0X3NvX29wcy5sb29rdXBfbGliX2dsb2Jh bF9zeW1ib2wgIT0gTlVMTCkKLS0gICAgcmV0dXJuIHN2cjRfc29fb3BzLmxvb2t1cF9saWJfZ2xv YmFsX3N5bWJvbCAob2JqZmlsZSwgbmFtZSwgbGlua2FnZV9uYW1lLAotLQkJCQkJCSBkb21haW4p OwotKyAgICByZXR1cm4gc3ZyNF9zb19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChvYmpm aWxlLCBuYW1lLCBkb21haW4pOwotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotZGlmZiAtLWdpdCBh L2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCi1pbmRleCA4ZWRjODg5Li41ZWEx Nzc5IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLXN2cjQuYwotKysrIGIvZ2RiL3NvbGliLXN2cjQu YwotQEAgLTEyNDEsNyArMTI0MSw4IEBAIHN2cjRfaW5fZHluc3ltX3Jlc29sdmVfY29kZSAoQ09S RV9BRERSIHBjKQotIAkgICAmJiBwYyA8IGluZm8tPmludGVycF90ZXh0X3NlY3RfaGlnaCkKLSAJ ICB8fCAocGMgPj0gaW5mby0+aW50ZXJwX3BsdF9zZWN0X2xvdwotIAkgICAgICAmJiBwYyA8IGlu Zm8tPmludGVycF9wbHRfc2VjdF9oaWdoKQotLQkgIHx8IGluX3BsdF9zZWN0aW9uIChwYywgTlVM TCkpOwotKwkgIHx8IGluX3BsdF9zZWN0aW9uIChwYywgTlVMTCkKLSsJICB8fCBpbl9nbnVfaWZ1 bmNfc3R1YiAocGMpKTsKLSB9Ci0gCi0gLyogR2l2ZW4gYW4gZXhlY3V0YWJsZSdzIEFCRkQgYW5k IHRhcmdldCwgY29tcHV0ZSB0aGUgZW50cnktcG9pbnQKLUBAIC0yMDM4LDcgKzIwMzksNiBAQCBz dHJ1Y3QgdGFyZ2V0X3NvX29wcyBzdnI0X3NvX29wczsKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAq Ci0gZWxmX2xvb2t1cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK LSAJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAotLQkJICAgICAgIGNvbnN0IGNoYXIgKmxpbmth Z2VfbmFtZSwKLSAJCSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgYmZk ICphYmZkOwotQEAgLTIwNTYsOCArMjA1Niw3IEBAIGVsZl9sb29rdXBfbGliX3N5bWJvbCAoY29u c3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gICBpZiAoYWJmZCA9PSBOVUxMIHx8IHNjYW5f ZHludGFnIChEVF9TWU1CT0xJQywgYWJmZCwgTlVMTCkgIT0gMSkKLSAgICAgcmV0dXJuIE5VTEw7 Ci0gCi0tICByZXR1cm4gbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlCi0tCQkob2Jq ZmlsZSwgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgcmV0dXJuIGxvb2t1cF9nbG9i YWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKLSB9Ci0gCi0g ZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliOyAvKiAt V21pc3NpbmctcHJvdG90eXBlcyAqLwotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi5jIGIvZ2RiL3Nv bGliLmMKLWluZGV4IDg0MmIyN2MuLmFjMWM0MDcgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWIuYwot KysrIGIvZ2RiL3NvbGliLmMKLUBAIC0xMTU0LDEzICsxMTU0LDEyIEBAIHNob3dfYXV0b19zb2xp Yl9hZGQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0gc3RydWN0IHN5bWJv bCAqCi0gc29saWJfZ2xvYmFsX2xvb2t1cCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUs Ci0gCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2Vf bmFtZSwKLSAJCSAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLSAgIHN0cnVjdCB0 YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoKTsKLSAKLSAgIGlm IChvcHMtPmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAhPSBOVUxMKQotLSAgICByZXR1cm4gb3Bz LT5sb29rdXBfbGliX2dsb2JhbF9zeW1ib2wgKG9iamZpbGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwg ZG9tYWluKTsKLSsgICAgcmV0dXJuIG9wcy0+bG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChvYmpm aWxlLCBuYW1lLCBkb21haW4pOwotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotZGlmZiAtLWdpdCBh L2dkYi9zb2xpc3QuaCBiL2dkYi9zb2xpc3QuaAotaW5kZXggNTczZjczNi4uNTFiZmNlOSAxMDA2 NDQKLS0tLSBhL2dkYi9zb2xpc3QuaAotKysrIGIvZ2RiL3NvbGlzdC5oCi1AQCAtMTE3LDcgKzEx Nyw2IEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCi0gICAgIC8qIEhvb2sgZm9yIGxvb2tpbmcgdXAg Z2xvYmFsIHN5bWJvbHMgaW4gYSBsaWJyYXJ5LXNwZWNpZmljIHdheS4gICovCi0gICAgIHN0cnVj dCBzeW1ib2wgKiAoKmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCkgKGNvbnN0IHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotIAkJCQkJCSBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJCSBjb25zdCBj aGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkJIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0g Ci0gICAgIC8qIEdpdmVuIHR3byBzb19saXN0IG9iamVjdHMsIG9uZSBmcm9tIHRoZSBHREIgdGhy ZWFkIGxpc3QKLUBAIC0xNTcsNyArMTU2LDYgQEAgZXh0ZXJuIHN0cnVjdCB0YXJnZXRfc29fb3Bz ICpjdXJyZW50X3RhcmdldF9zb19vcHM7Ci0gLyogSGFuZGxlciBmb3IgbGlicmFyeS1zcGVjaWZp YyBnbG9iYWwgc3ltYm9sIGxvb2t1cCBpbiBzb2xpYi5jLiAgKi8KLSBzdHJ1Y3Qgc3ltYm9sICpz b2xpYl9nbG9iYWxfbG9va3VwIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJ ICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUs Ci0gCQkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAotICNlbmRpZgotZGlmZiAt LWdpdCBhL2dkYi9zb21yZWFkLmMgYi9nZGIvc29tcmVhZC5jCi1pbmRleCAzZDkzYzVlLi5hOTQz ODA2IDEwMDY0NAotLS0tIGEvZ2RiL3NvbXJlYWQuYwotKysrIGIvZ2RiL3NvbXJlYWQuYwotQEAg LTQzMiw2ICs0MzIsNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgc29tX3N5bV9mbnMgPQotICAg c29tX25ld19pbml0LAkJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50 aXJlIHN5bXRhYiAqLwotICAgc29tX3N5bWZpbGVfaW5pdCwJCS8qIHN5bV9pbml0OiByZWFkIGlu aXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KLSAgIHNvbV9zeW1maWxlX3JlYWQs CQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCi0rICBOVUxM LAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLwotICAgc29tX3N5bWZpbGVfZmluaXNoLAkJLyog c3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCi0gICBzb21fc3ltZmls ZV9vZmZzZXRzLAkJLyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9j YXRpb24gKi8KLSAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBH ZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCi1kaWZmIC0tZ2l0IGEvZ2RiL3NwYXJjLWxpbnV4 LXRkZXAuYyBiL2dkYi9zcGFyYy1saW51eC10ZGVwLmMKLWluZGV4IGQ2NWRiNmMuLmU5MWMwYmYg MTAwNjQ0Ci0tLS0gYS9nZGIvc3BhcmMtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvc3BhcmMtbGlu dXgtdGRlcC5jCi1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJzeW10YWIuaCIKLSAjaW5j bHVkZSAidHJhZC1mcmFtZS5oIgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRl ICJsaW51eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgInNwYXJjLXRkZXAuaCIKLSAKLUBAIC0yNzks NiArMjgwLDkgQEAgc3BhcmMzMl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBp bmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSAgIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJz IChnZGJhcmNoKTsKLSAKLSAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChnZGJhcmNoLCBzcGFyY19s aW51eF93cml0ZV9wYyk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp OwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXBy b3RvdHlwZXMuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYyBiL2dk Yi9zcGFyYzY0LWxpbnV4LXRkZXAuYwotaW5kZXggOGI3ZTkwOC4uNGRlNmQ5YyAxMDA2NDQKLS0t LSBhL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYwotKysrIGIvZ2RiL3NwYXJjNjQtbGludXgtdGRl cC5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlICJzeW10YWIuaCIKLSAjaW5jbHVkZSAi dHJhZC1mcmFtZS5oIgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51 eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgInNwYXJjNjQtdGRlcC5oIgotIAotQEAgLTI0NCw2ICsy NDUsOSBAQCBzcGFyYzY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8s IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgdGRlcC0+c3RlcF90cmFwID0gc3BhcmM2NF9s aW51eF9zdGVwX3RyYXA7Ci0gCi0gICBzZXRfZ2RiYXJjaF93cml0ZV9wYyAoZ2RiYXJjaCwgc3Bh cmM2NF9saW51eF93cml0ZV9wYyk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVu Y19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIpOwotIH0KLSAMCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NwdS10ZGVwLmMgYi9nZGIvc3B1 LXRkZXAuYwotaW5kZXggYzZkYjhkYy4uNzM1OWI1MCAxMDA2NDQKLS0tLSBhL2dkYi9zcHUtdGRl cC5jCi0rKysgYi9nZGIvc3B1LXRkZXAuYwotQEAgLTE4NDEsNyArMTg0MSw3IEBAIHNwdV9jYXRj aF9zdGFydCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICAgICAgc3RydWN0IHN5bWJvbCAq c3ltOwotICAgICAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOwotIAotLSAgICAgIHN5bSA9 IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCAibWFpbiIsIE5VTEwsIFZBUl9ET01BSU4pOwot KyAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCAibWFpbiIsIFZBUl9ET01B SU4pOwotICAgICAgIGlmIChzeW0pCi0gCXsKLSAJICBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3lt LCBvYmpmaWxlKTsKLWRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCi1pbmRl eCAyY2FmOWQyLi43YWRjMzk5IDEwMDY0NAotLS0tIGEvZ2RiL3N0YWNrLmMKLSsrKyBiL2dkYi9z dGFjay5jCi1AQCAtMTMwOSwyNCArMTMwOSwyNCBAQCBiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFy ICpjb3VudF9leHAsIGludCBzaG93X2xvY2FscywgaW50IGZyb21fdHR5KQotICAgZWxzZQotICAg ICBjb3VudCA9IC0xOwotIAotLSAgaWYgKGluZm9fdmVyYm9zZSkKLS0gICAgewotLSAgICAgIHN0 cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHM7Ci0tCi0tICAgICAgLyogUmVhZCBpbiBzeW1ib2xzIGZv ciBhbGwgb2YgdGhlIGZyYW1lcy4gIE5lZWQgdG8gZG8gdGhpcyBpbiBhCi0tICAgICAgICAgc2Vw YXJhdGUgcGFzcyBzbyB0aGF0ICJSZWFkaW5nIGluIHN5bWJvbHMgZm9yIHh4eCIgbWVzc2FnZXMK LS0gICAgICAgICBkb24ndCBzY3JldyB1cCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYmFja3RyYWNl LiAgQWxzbyBpZgotLSAgICAgICAgIHBlb3BsZSBoYXZlIHN0cm9uZyBvcGluaW9ucyBhZ2FpbnN0 IHJlYWRpbmcgc3ltYm9scyBmb3IKLS0gICAgICAgICBiYWNrdHJhY2UgdGhpcyBtYXkgaGF2ZSB0 byBiZSBhbiBvcHRpb24uICAqLwotLSAgICAgIGkgPSBjb3VudDsKLS0gICAgICBmb3IgKGZpID0g dHJhaWxpbmc7IGZpICE9IE5VTEwgJiYgaS0tOyBmaSA9IGdldF9wcmV2X2ZyYW1lIChmaSkpCi0t CXsKLS0JICBRVUlUOwotLQkgIHBzID0gZmluZF9wY19wc3ltdGFiIChnZXRfZnJhbWVfYWRkcmVz c19pbl9ibG9jayAoZmkpKTsKLS0JICBpZiAocHMpCi0tCSAgICBQU1lNVEFCX1RPX1NZTVRBQiAo cHMpOyAvKiBGb3JjZSBzeW1zIHRvIGNvbWUgaW4uICAqLwotLQl9Ci0tICAgIH0KLSsgIHsKLSsg ICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwczsKLSsKLSsgICAgLyogUmVhZCBpbiBzeW1ib2xz IGZvciBhbGwgb2YgdGhlIGZyYW1lcy4gIE5lZWQgdG8gZG8gdGhpcwotKyAgICAgICB1bmNvbmRp dGlvbmFsbHkgdG8gZW5zdXJlIHRoYXQgcHN5bWJvbHMgYXJlIHJlYWQuICBBbHNvIG5lZWQgdG8K LSsgICAgICAgZG8gdGhpcyBpbiBhIHNlcGFyYXRlIHBhc3Mgc28gdGhhdCAiUmVhZGluZyBpbiBz eW1ib2xzIGZvciB4eHgiCi0rICAgICAgIG1lc3NhZ2VzIGRvbid0IHNjcmV3IHVwIHRoZSBhcHBl YXJhbmNlIG9mIHRoZSBiYWNrdHJhY2UuICBBbHNvCi0rICAgICAgIGlmIHBlb3BsZSBoYXZlIHN0 cm9uZyBvcGluaW9ucyBhZ2FpbnN0IHJlYWRpbmcgc3ltYm9scyBmb3IKLSsgICAgICAgYmFja3Ry YWNlIHRoaXMgbWF5IGhhdmUgdG8gYmUgYW4gb3B0aW9uLiAgKi8KLSsgICAgaSA9IGNvdW50Owot KyAgICBmb3IgKGZpID0gdHJhaWxpbmc7IGZpICE9IE5VTEwgJiYgaS0tOyBmaSA9IGdldF9wcmV2 X2ZyYW1lIChmaSkpCi0rICAgICAgewotKwlRVUlUOwotKwlwcyA9IGZpbmRfcGNfcHN5bXRhYiAo Z2V0X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZpKSk7Ci0rCWlmIChpbmZvX3ZlcmJvc2UgJiYg cHMpCi0rCSAgUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsgLyogRm9yY2Ugc3ltcyB0byBjb21lIGlu LiAgKi8KLSsgICAgICB9Ci0rICB9Ci0gCi0gICBmb3IgKGkgPSAwLCBmaSA9IHRyYWlsaW5nOyBm aSAmJiBjb3VudC0tOyBpKyssIGZpID0gZ2V0X3ByZXZfZnJhbWUgKGZpKSkKLSAgICAgewotZGlm ZiAtLWdpdCBhL2dkYi9zeW1maWxlLmMgYi9nZGIvc3ltZmlsZS5jCi1pbmRleCA4NzA1NDIwLi4x NmY5NmExIDEwMDY0NAotLS0tIGEvZ2RiL3N5bWZpbGUuYwotKysrIGIvZ2RiL3N5bWZpbGUuYwot QEAgLTk2OCwxMyArOTY4LDE2IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNl dHMgKGJmZCAqYWJmZCwKLSAgIC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byBidXJwIGlmIHdlJ2Qg YmUKLSAgICAgIGludGVyYWN0aXZlbHkgd2lwaW5nIG91dCBhbnkgZXhpc3Rpbmcgc3ltYm9scy4g ICovCi0gCi0tICBpZiAoKGhhdmVfZnVsbF9zeW1ib2xzICgpIHx8IGhhdmVfcGFydGlhbF9zeW1i b2xzICgpKQotLSAgICAgICYmIChhZGRfZmxhZ3MgJiBTWU1GSUxFX01BSU5MSU5FKQotKyAgaWYg KChhZGRfZmxhZ3MgJiBTWU1GSUxFX01BSU5MSU5FKQotKyAgICAgICYmIChoYXZlX2Z1bGxfc3lt Ym9scyAoKSB8fCBoYXZlX3BhcnRpYWxfc3ltYm9scyAoKSkKLSAgICAgICAmJiBmcm9tX3R0eQot KyAgICAgICYmIChoYXZlX2Z1bGxfc3ltYm9scyAoKSB8fCBoYXZlX3BhcnRpYWxfc3ltYm9scyAo KSkKLSAgICAgICAmJiAhcXVlcnkgKF8oIkxvYWQgbmV3IHN5bWJvbCB0YWJsZSBmcm9tIFwiJXNc Ij8gIiksIG5hbWUpKQotICAgICBlcnJvciAoXygiTm90IGNvbmZpcm1lZC4iKSk7Ci0gCi0gICBv YmpmaWxlID0gYWxsb2NhdGVfb2JqZmlsZSAoYWJmZCwgZmxhZ3MpOwotKyAgaWYgKGFkZF9mbGFn cyAmIFNZTUZJTEVfTUFJTkxJTkUpCi0rICAgIG9iamZpbGUtPmZsYWdzIHw9IE9CSkZfTUFJTjsK LSAgIGRpc2NhcmRfY2xlYW51cHMgKG15X2NsZWFudXBzKTsKLSAKLSAgIC8qIFdlIGVpdGhlciBj cmVhdGVkIGEgbmV3IG1hcHBlZCBzeW1ib2wgdGFibGUsIG1hcHBlZCBhbiBleGlzdGluZwotQEAg LTEwMDEsNiArMTAwNCw4IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMg KGJmZCAqYWJmZCwKLSAKLSAgIGlmICgoZmxhZ3MgJiBPQkpGX1JFQUROT1cpIHx8IHJlYWRub3df c3ltYm9sX2ZpbGVzKQotICAgICB7Ci0rICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKG9i amZpbGUpOwotKwotICAgICAgIGlmIChmcm9tX3R0eSB8fCBpbmZvX3ZlcmJvc2UpCi0gCXsKLSAJ ICBwcmludGZfdW5maWx0ZXJlZCAoXygiZXhwYW5kaW5nIHRvIGZ1bGwgc3ltYm9scy4uLiIpKTsK LUBAIC0yMzIzLDYgKzIzMjgsNyBAQCByZXJlYWRfc3ltYm9scyAodm9pZCkKLSAJICBvYmpmaWxl LT5zeW10YWJzID0gTlVMTDsKLSAJICBvYmpmaWxlLT5wc3ltdGFicyA9IE5VTEw7Ci0gCSAgb2Jq ZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCA9IE5VTEw7Ci0rCSAgb2JqZmlsZS0+cXVpY2tfYWRkcm1h cCA9IE5VTEw7Ci0gCSAgb2JqZmlsZS0+ZnJlZV9wc3ltdGFicyA9IE5VTEw7Ci0gCSAgb2JqZmls ZS0+Y3BfbmFtZXNwYWNlX3N5bXRhYiA9IE5VTEw7Ci0gCSAgb2JqZmlsZS0+bXN5bWJvbHMgPSBO VUxMOwotQEAgLTIzMzMsNiArMjMzOSw4IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQotIAkgIG1l bXNldCAoJm9iamZpbGUtPm1zeW1ib2xfZGVtYW5nbGVkX2hhc2gsIDAsCi0gCQkgIHNpemVvZiAo b2JqZmlsZS0+bXN5bWJvbF9kZW1hbmdsZWRfaGFzaCkpOwotIAotKwkgIG9iamZpbGUtPmZsYWdz ICY9IH5PQkpGX1NZTVRBQlNfUkVBRDsKLSsKLSAJICBvYmpmaWxlLT5wc3ltYm9sX2NhY2hlID0g YmNhY2hlX3htYWxsb2MgKCk7Ci0gCSAgb2JqZmlsZS0+bWFjcm9fY2FjaGUgPSBiY2FjaGVfeG1h bGxvYyAoKTsKLSAJICBvYmpmaWxlLT5maWxlbmFtZV9jYWNoZSA9IGJjYWNoZV94bWFsbG9jICgp OwotZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCi1pbmRleCBmZTk1 MjU1Li4wNzU2MTBiIDEwMDY0NAotLS0tIGEvZ2RiL3N5bWZpbGUuaAotKysrIGIvZ2RiL3N5bWZp bGUuaAotQEAgLTE0MSw2ICsxNDEsMTIgQEAgc3RydWN0IHN5bV9mbnMKLSAKLSAgIHZvaWQgKCpz eW1fcmVhZCkgKHN0cnVjdCBvYmpmaWxlICosIGludCk7Ci0gCi0rICAvKiBSZWFkIHRoZSBwYXJ0 aWFsIHN5bWJvbHMgZm9yIGFuIG9iamZpbGUuICBUaGlzIG1heSBiZSBOVUxMLCBpbgotKyAgICAg d2hpY2ggY2FzZSBnZGIgYXNzdW1lcyB0aGF0IHN5bV9yZWFkIGFscmVhZHkgcmVhZCB0aGUgcGFy dGlhbAotKyAgICAgc3ltYm9scy4gICovCi0rCi0rICB2b2lkICgqc3ltX3JlYWRfcHN5bWJvbHMp IChzdHJ1Y3Qgb2JqZmlsZSAqKTsKLSsKLSAgIC8qIENhbGxlZCB3aGVuIHdlIGFyZSBmaW5pc2hl ZCB3aXRoIGFuIG9iamZpbGUuICBTaG91bGQgZG8gYWxsCi0gICAgICBjbGVhbnVwIHRoYXQgaXMg c3BlY2lmaWMgdG8gdGhlIG9iamVjdCBmaWxlIGZvcm1hdCBmb3IgdGhlCi0gICAgICBwYXJ0aWN1 bGFyIG9iamZpbGUuICAqLwotQEAgLTMzMCw4ICszMzYsNyBAQCBleHRlcm4gaW50IGF1dG9fc29s aWJfbGltaXQ7Ci0gCi0gZXh0ZXJuIHZvaWQgc2V0X2luaXRpYWxfbGFuZ3VhZ2UgKHZvaWQpOwot IAotLWV4dGVybiBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKmFsbG9jYXRlX3BzeW10YWIgKGNvbnN0 IGNoYXIgKiwKLS0JCQkJCQlzdHJ1Y3Qgb2JqZmlsZSAqKTsKLStleHRlcm4gc3RydWN0IHBhcnRp YWxfc3ltdGFiICphbGxvY2F0ZV9wc3ltdGFiIChjb25zdCBjaGFyICosIHN0cnVjdCBvYmpmaWxl ICopOwotIAotIGV4dGVybiB2b2lkIGRpc2NhcmRfcHN5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3lt dGFiICopOwotIAotQEAgLTQwMiw3ICs0MDcsNyBAQCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50 X2RhdGEgKHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqZGF0YSk7Ci0gLyogRnJvbSBkd2Fy ZjJyZWFkLmMgKi8KLSAKLSBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZp bGUgKik7Ci0tCi0rZXh0ZXJuIHZvaWQgZHdhcmYyX2NyZWF0ZV9xdWlja19hZGRybWFwIChzdHJ1 Y3Qgb2JqZmlsZSAqKTsKLSBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKHN0cnVj dCBvYmpmaWxlICopOwotIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChzdHJ1 Y3Qgb2JqZmlsZSAqKTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1p c2MuYwotaW5kZXggMWYzZWI5ZS4uM2ZmMjM5YSAxMDA2NDQKLS0tLSBhL2dkYi9zeW1taXNjLmMK LSsrKyBiL2dkYi9zeW1taXNjLmMKLUBAIC0yOTQsNiArMjk0LDkgQEAgZHVtcF9tc3ltYm9scyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCB1aV9maWxlICpvdXRmaWxlKQotIAljYXNl IG1zdF90ZXh0OgotIAkgIG1zX3R5cGUgPSAnVCc7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgbXN0X3Rl eHRfZ251X2lmdW5jOgotKwkgIG1zX3R5cGUgPSAnaSc7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgbXN0 X3NvbGliX3RyYW1wb2xpbmU6Ci0gCSAgbXNfdHlwZSA9ICdTJzsKLSAJICBicmVhazsKLUBAIC0x MTQzLDcgKzExNDYsNyBAQCBtYWludGVuYW5jZV9jaGVja19zeW10YWJzIChjaGFyICppZ25vcmUs IGludCBmcm9tX3R0eSkKLSAgICAgd2hpbGUgKGxlbmd0aC0tKQotICAgICAgIHsKLSAJc3ltID0g bG9va3VwX2Jsb2NrX3N5bWJvbCAoYiwgU1lNQk9MX0xJTktBR0VfTkFNRSAoKnBzeW0pLAotLQkJ CQkgICBOVUxMLCBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotKwkJCQkgICBTWU1CT0xfRE9NQUlO ICgqcHN5bSkpOwotIAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICBwcmludGZfZmlsdGVyZWQgKCJT dGF0aWMgc3ltYm9sIGAiKTsKLUBAIC0xMTYwLDcgKzExNjMsNyBAQCBtYWludGVuYW5jZV9jaGVj a19zeW10YWJzIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkKLSAgICAgd2hpbGUgKGxlbmd0 aC0tKQotICAgICAgIHsKLSAJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYiwgU1lNQk9MX0xJ TktBR0VfTkFNRSAoKnBzeW0pLAotLQkJCQkgICBOVUxMLCBTWU1CT0xfRE9NQUlOICgqcHN5bSkp OwotKwkJCQkgICBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotIAlpZiAoIXN5bSkKLSAJICB7Ci0g CSAgICBwcmludGZfZmlsdGVyZWQgKCJHbG9iYWwgc3ltYm9sIGAiKTsKLWRpZmYgLS1naXQgYS9n ZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IGFmNGU1MDEuLjk1MzdkYWUgMTAwNjQ0 Ci0tLS0gYS9nZGIvc3ltdGFiLmMKLSsrKyBiL2dkYi9zeW10YWIuYwotQEAgLTQyLDYgKzQyLDcg QEAKLSAjaW5jbHVkZSAiYWRhLWxhbmcuaCIKLSAjaW5jbHVkZSAicC1sYW5nLmgiCi0gI2luY2x1 ZGUgImFkZHJtYXAuaCIKLSsjaW5jbHVkZSAiY3Atc3VwcG9ydC5oIgotIAotICNpbmNsdWRlICJo YXNodGFiLmgiCi0gCi1AQCAtODUsNyArODYsNiBAQCBzdGF0aWMgaW50IGZpbmRfbGluZV9jb21t b24gKHN0cnVjdCBsaW5ldGFibGUgKiwgaW50LCBpbnQgKik7Ci0gY2hhciAqb3BlcmF0b3JfY2hh cnMgKGNoYXIgKnAsIGNoYXIgKiplbmQpOwotIAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29r dXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCSBjb25zdCBjaGFyICpsaW5r YWdlX25hbWUsCi0gCQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCSBjb25z dCBkb21haW5fZW51bSBkb21haW4sCi0gCQkJCQkgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSwKLUBA IC05MywyMCArOTMsMTkgQEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfYXV4 IChjb25zdCBjaGFyICpuYW1lLAotIAotIHN0YXRpYwotIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9z eW1ib2xfYXV4X2xvY2FsIChjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJY29uc3QgY2hhciAqbGlu a2FnZV9uYW1lLAotIAkJCQkJY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLS0JCQkJCWNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0rCQkJCQljb25zdCBkb21haW5fZW51bSBkb21haW4sCi0r CQkJCQllbnVtIGxhbmd1YWdlIGxhbmd1YWdlLAotKwkJCQkJaW50ICppc19hX2ZpZWxkX29mX3Ro aXMpOwotIAotIHN0YXRpYwotIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfYXV4X3N5bXRh YnMgKGludCBibG9ja19pbmRleCwKLSAJCQkJCSAgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCSAg Y29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJICBjb25zdCBkb21haW5fZW51bSBkb21h aW4pOwotIAotIHN0YXRpYwotIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfYXV4X3BzeW10 YWJzIChpbnQgYmxvY2tfaW5kZXgsCi0gCQkJCQkgICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJ ICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKTsKLSAKLSBzdGF0aWMgaW50IGZpbGVfbWF0Y2hlcyAoY2hhciAqLCBjaGFyICoqLCBp bnQpOwotQEAgLTI3MSw3ICsyNzAsNyBAQCBsb29rdXBfcGFydGlhbF9zeW10YWIgKGNvbnN0IGNo YXIgKm5hbWUpCi0gICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbF9wYXRoKTsKLSAgICAg fQotIAotLSAgQUxMX1BTWU1UQUJTIChvYmpmaWxlLCBwc3QpCi0rICBBTExfUFNZTVRBQlNfUkVR VUlSRUQgKG9iamZpbGUsIHBzdCkKLSAgIHsKLSAgICAgaWYgKEZJTEVOQU1FX0NNUCAobmFtZSwg cHN0LT5maWxlbmFtZSkgPT0gMCkKLSAgICAgICB7Ci1AQCAtNDE0LDcgKzQxMyw4IEBAIHN5bWJv bF9pbml0X2xhbmd1YWdlX3NwZWNpZmljIChzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5 bWJvbCwKLSAgIGdzeW1ib2wtPmxhbmd1YWdlID0gbGFuZ3VhZ2U7Ci0gICBpZiAoZ3N5bWJvbC0+ bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKLSAgICAgICB8fCBnc3ltYm9sLT5sYW5ndWFnZSA9 PSBsYW5ndWFnZV9qYXZhCi0tICAgICAgfHwgZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf b2JqYykKLSsgICAgICB8fCBnc3ltYm9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9vYmpjCi0rICAg ICAgfHwgZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKLSAgICAgewotICAg ICAgIGdzeW1ib2wtPmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9u YW1lID0gTlVMTDsKLSAgICAgfQotQEAgLTQ5OCw3ICs0OTgsNyBAQCBzeW1ib2xfZmluZF9kZW1h bmdsZWRfbmFtZSAoc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wsCi0gICAgICAg fHwgZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfYXV0bykKLSAgICAgewotICAgICAgIGRl bWFuZ2xlZCA9Ci0tICAgICAgICBjcGx1c19kZW1hbmdsZSAobWFuZ2xlZCwgRE1HTF9QQVJBTVMg fCBETUdMX0FOU0kpOwotKyAgICAgICAgY3BsdXNfZGVtYW5nbGUgKG1hbmdsZWQsIERNR0xfUEFS QU1TIHwgRE1HTF9BTlNJIHwgRE1HTF9WRVJCT1NFKTsKLSAgICAgICBpZiAoZGVtYW5nbGVkICE9 IE5VTEwpCi0gCXsKLSAJICBnc3ltYm9sLT5sYW5ndWFnZSA9IGxhbmd1YWdlX2NwbHVzOwotQEAg LTY5NSw2ICs2OTUsNyBAQCBzeW1ib2xfbmF0dXJhbF9uYW1lIChjb25zdCBzdHJ1Y3QgZ2VuZXJh bF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCkKLSAgICAgY2FzZSBsYW5ndWFnZV9jcGx1czoKLSAgICAg Y2FzZSBsYW5ndWFnZV9qYXZhOgotICAgICBjYXNlIGxhbmd1YWdlX29iamM6Ci0rICAgIGNhc2Ug bGFuZ3VhZ2VfZm9ydHJhbjoKLSAgICAgICBpZiAoZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMu Y3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWUgIT0gTlVMTCkKLSAJcmV0dXJuIGdzeW1ib2wt Pmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lOwotICAgICAg IGJyZWFrOwotQEAgLTcyMCw2ICs3MjEsNyBAQCBzeW1ib2xfZGVtYW5nbGVkX25hbWUgKGNvbnN0 IHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sKQotICAgICBjYXNlIGxhbmd1YWdl X2NwbHVzOgotICAgICBjYXNlIGxhbmd1YWdlX2phdmE6Ci0gICAgIGNhc2UgbGFuZ3VhZ2Vfb2Jq YzoKLSsgICAgY2FzZSBsYW5ndWFnZV9mb3J0cmFuOgotICAgICAgIGlmIChnc3ltYm9sLT5sYW5n dWFnZV9zcGVjaWZpYy5jcGx1c19zcGVjaWZpYy5kZW1hbmdsZWRfbmFtZSAhPSBOVUxMKQotIAly ZXR1cm4gZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVk X25hbWU7Ci0gICAgICAgYnJlYWs7Ci1AQCAtOTMxLDcgKzkzMywxMyBAQCBmaW5kX3BjX3NlY3Rf cHN5bXRhYiAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCi0gICAg ICB0aGFuIHRoZSBsYXRlciB1c2VkIFRFWFRMT1cvVEVYVEhJR0ggb25lLiAgKi8KLSAKLSAgIEFM TF9PQkpGSUxFUyAob2JqZmlsZSkKLS0gICAgaWYgKG9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXAg IT0gTlVMTCkKLSsgIHsKLSsgICAgaWYgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXApCi0rICAgICAg ewotKwlpZiAoIWFkZHJtYXBfZmluZCAob2JqZmlsZS0+cXVpY2tfYWRkcm1hcCwgcGMpKQotKwkg IGNvbnRpbnVlOwotKyAgICAgIH0KLSsgICAgaWYgKHJlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChv YmpmaWxlKS0+cHN5bXRhYnNfYWRkcm1hcCAhPSBOVUxMKQotICAgICAgIHsKLSAJc3RydWN0IHBh cnRpYWxfc3ltdGFiICpwc3Q7Ci0gCi1AQCAtOTY0LDYgKzk3Miw3IEBAIGZpbmRfcGNfc2VjdF9w c3ltdGFiIChDT1JFX0FERFIgcGMsIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlvbikKLSAJICAg IHJldHVybiBwc3Q7Ci0gCSAgfQotICAgICAgIH0KLSsgIH0KLSAKLSAgIC8qIEV4aXN0aW5nIFBT WU1UQUJTX0FERFJNQVAgbWFwcGluZyBpcyBwcmVzZW50IGV2ZW4gZm9yIFBBUlRJQUxfU1lNVEFC cwotICAgICAgd2hpY2ggc3RpbGwgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGZ1bGwgU1lNVEFCcyBy ZWFkLiAgQnV0IGl0IGlzIG5vdAotQEAgLTEyMzEsNiArMTI0MCwyMiBAQCBmaXh1cF9wc3ltYm9s X3NlY3Rpb24gKHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqcHN5bSwgc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gICByZXR1cm4gcHN5bTsKLSB9Ci0gCi0rLyogRW5zdXJlIHRoYXQgdGhlIHBhcnRp YWwgc3ltYm9scyBmb3IgT0JKRklMRSBoYXZlIGJlZW4gbG9hZGVkLiAgVGhpcwotKyAgIGZ1bmN0 aW9uIGFsd2F5cyByZXR1cm5zIGl0cyBhcmd1bWVudCwgYXMgYSBjb252ZW5pZW5jZS4gICovCi0r Ci0rc3RydWN0IG9iamZpbGUgKgotK3JlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKLSt7Ci0rICBpZiAoKG9iamZpbGUtPmZsYWdzICYgT0JKRl9TWU1UQUJT X1JFQUQpID09IDApCi0rICAgIHsKLSsgICAgICBvYmpmaWxlLT5mbGFncyB8PSBPQkpGX1NZTVRB QlNfUkVBRDsKLSsKLSsgICAgICBpZiAob2JqZmlsZS0+c2YtPnN5bV9yZWFkX3BzeW1ib2xzKQot KwkoKm9iamZpbGUtPnNmLT5zeW1fcmVhZF9wc3ltYm9scykgKG9iamZpbGUpOwotKyAgICB9Ci0r ICByZXR1cm4gb2JqZmlsZTsKLSt9Ci0rCi0gLyogRmluZCB0aGUgZGVmaW5pdGlvbiBmb3IgYSBz cGVjaWZpZWQgc3ltYm9sIG5hbWUgTkFNRQotICAgIGluIGRvbWFpbiBET01BSU4sIHZpc2libGUg ZnJvbSBsZXhpY2FsIGJsb2NrIEJMT0NLLgotICAgIFJldHVybnMgdGhlIHN0cnVjdCBzeW1ib2wg cG9pbnRlciwgb3IgemVybyBpZiBubyBzeW1ib2wgaXMgZm91bmQuCi1AQCAtMTI1NywxMCArMTI4 MiwxNCBAQCBsb29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIHsKLSAgIGNoYXIgKmRlbWFuZ2xlZF9uYW1lID0gTlVM TDsKLSAgIGNvbnN0IGNoYXIgKm1vZGlmaWVkX25hbWUgPSBOVUxMOwotLSAgY29uc3QgY2hhciAq bWFuZ2xlZF9uYW1lID0gTlVMTDsKLSAgIHN0cnVjdCBzeW1ib2wgKnJldHVybnZhbDsKLSAgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwot IAotKyAgaWYoc3RybmNtcChuYW1lLCAiOjoiLCAyKSA9PSAwKXsvKiB0aGlzIG11c3QgYmUgYSBn bG9iYWwgbmFtZSAqLwotKyAgICBuYW1lID0gbmFtZSsyOwotKyAgICBibG9jayA9IE5VTEw7Ci0r ICB9Ci0rICAKLSAgIG1vZGlmaWVkX25hbWUgPSBuYW1lOwotIAotICAgLyogSWYgd2UgYXJlIHVz aW5nIEMrKyBvciBKYXZhLCBkZW1hbmdsZSB0aGUgbmFtZSBiZWZvcmUgZG9pbmcgYSBsb29rdXAs IHNvCi1AQCAtMTI3MCw3ICsxMjk5LDYgQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29u c3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAgICAgICBkZW1hbmds ZWRfbmFtZSA9IGNwbHVzX2RlbWFuZ2xlIChuYW1lLCBETUdMX0FOU0kgfCBETUdMX1BBUkFNUyk7 Ci0gICAgICAgaWYgKGRlbWFuZ2xlZF9uYW1lKQotIAl7Ci0tCSAgbWFuZ2xlZF9uYW1lID0gbmFt ZTsKLSAJICBtb2RpZmllZF9uYW1lID0gZGVtYW5nbGVkX25hbWU7Ci0gCSAgbWFrZV9jbGVhbnVw ICh4ZnJlZSwgZGVtYW5nbGVkX25hbWUpOwotIAl9Ci1AQCAtMTI5Miw3ICsxMzIwLDYgQEAgbG9v a3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaywKLSAJCSAgICAgIAkJICAgICAgIERNR0xfQU5TSSB8IERNR0xfUEFSQU1TIHwg RE1HTF9KQVZBKTsKLSAgICAgICBpZiAoZGVtYW5nbGVkX25hbWUpCi0gCXsKLS0JICBtYW5nbGVk X25hbWUgPSBuYW1lOwotIAkgIG1vZGlmaWVkX25hbWUgPSBkZW1hbmdsZWRfbmFtZTsKLSAJICBt YWtlX2NsZWFudXAgKHhmcmVlLCBkZW1hbmdsZWRfbmFtZSk7Ci0gCX0KLUBAIC0xMzExLDggKzEz MzgsOCBAQCBsb29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotICAgICAgIG1vZGlmaWVkX25hbWUgPSBjb3B5OwotICAg ICB9Ci0gCi0tICByZXR1cm52YWwgPSBsb29rdXBfc3ltYm9sX2F1eCAobW9kaWZpZWRfbmFtZSwg bWFuZ2xlZF9uYW1lLCBibG9jaywKLS0JCQkJIGRvbWFpbiwgbGFuZywgaXNfYV9maWVsZF9vZl90 aGlzKTsKLSsgIHJldHVybnZhbCA9IGxvb2t1cF9zeW1ib2xfYXV4IChtb2RpZmllZF9uYW1lLCBi bG9jaywgZG9tYWluLCBsYW5nLAotKwkJCQkgaXNfYV9maWVsZF9vZl90aGlzKTsKLSAgIGRvX2Ns ZWFudXBzIChjbGVhbnVwKTsKLSAKLSAgIHJldHVybiByZXR1cm52YWw7Ci1AQCAtMTMzNiw5ICsx MzYzLDkgQEAgbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaywKLSAgICB3ZWxsLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0t bG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2Vf bmFtZSwKLS0JCSAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbiwKLS0JCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsIGludCAqaXNfYV9maWVsZF9v Zl90aGlzKQotK2xvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1 Y3QgYmxvY2sgKmJsb2NrLAotKwkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLCBlbnVtIGxh bmd1YWdlIGxhbmd1YWdlLAotKwkJICAgaW50ICppc19hX2ZpZWxkX29mX3RoaXMpCi0gewotICAg c3RydWN0IHN5bWJvbCAqc3ltOwotICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdk ZWY7Ci1AQCAtMTM1NCw1NiArMTM4MSwxOSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hh ciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotICAgLyogU2VhcmNoIHNwZWNpZmll ZCBibG9jayBhbmQgaXRzIHN1cGVyaW9ycy4gIERvbid0IHNlYXJjaAotICAgICAgU1RBVElDX0JM T0NLIG9yIEdMT0JBTF9CTE9DSy4gICovCi0gCi0tICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9s b2NhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1 cF9zeW1ib2xfYXV4X2xvY2FsIChuYW1lLCBibG9jaywgZG9tYWluLCBsYW5ndWFnZSwgaXNfYV9m aWVsZF9vZl90aGlzKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAK LS0gIC8qIElmIHJlcXVlc3RlZCB0byBkbyBzbyBieSB0aGUgY2FsbGVyIGFuZCBpZiBhcHByb3By aWF0ZSBmb3IgTEFOR1VBR0UsCi0tICAgICBjaGVjayB0byBzZWUgaWYgTkFNRSBpcyBhIGZpZWxk IG9mIGB0aGlzJy4gKi8KLS0KLS0gIGxhbmdkZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1YWdlKTsK LS0KLS0gIGlmIChsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2ZpZWxk X29mX3RoaXMgIT0gTlVMTAotLSAgICAgICYmIGJsb2NrICE9IE5VTEwpCi0tICAgIHsKLS0gICAg ICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBOVUxMOwotLSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAq ZnVuY3Rpb25fYmxvY2sgPSBibG9jazsKLS0gICAgICAvKiAndGhpcycgaXMgb25seSBkZWZpbmVk IGluIHRoZSBmdW5jdGlvbidzIGJsb2NrLCBzbyBmaW5kIHRoZQotLQkgZW5jbG9zaW5nIGZ1bmN0 aW9uIGJsb2NrLiAgKi8KLS0gICAgICBmb3IgKDsgZnVuY3Rpb25fYmxvY2sgJiYgIUJMT0NLX0ZV TkNUSU9OIChmdW5jdGlvbl9ibG9jayk7Ci0tCSAgIGZ1bmN0aW9uX2Jsb2NrID0gQkxPQ0tfU1VQ RVJCTE9DSyAoZnVuY3Rpb25fYmxvY2spKTsKLS0KLS0gICAgICBpZiAoZnVuY3Rpb25fYmxvY2sg JiYgIWRpY3RfZW1wdHkgKEJMT0NLX0RJQ1QgKGZ1bmN0aW9uX2Jsb2NrKSkpCi0tCXN5bSA9IGxv b2t1cF9ibG9ja19zeW1ib2wgKGZ1bmN0aW9uX2Jsb2NrLCBsYW5nZGVmLT5sYV9uYW1lX29mX3Ro aXMsCi0tCQkJCSAgIE5VTEwsIFZBUl9ET01BSU4pOwotLSAgICAgIGlmIChzeW0pCi0tCXsKLS0J ICBzdHJ1Y3QgdHlwZSAqdCA9IHN5bS0+dHlwZTsKLS0KLS0JICAvKiBJJ20gbm90IHJlYWxseSBz dXJlIHRoYXQgdHlwZSBvZiB0aGlzIGNhbiBldmVyCi0tCSAgICAgYmUgdHlwZWRlZmVkOyBqdXN0 IGJlIHNhZmUuICAqLwotLQkgIENIRUNLX1RZUEVERUYgKHQpOwotLQkgIGlmIChUWVBFX0NPREUg KHQpID09IFRZUEVfQ09ERV9QVFIKLS0JICAgICAgfHwgVFlQRV9DT0RFICh0KSA9PSBUWVBFX0NP REVfUkVGKQotLQkgICAgdCA9IFRZUEVfVEFSR0VUX1RZUEUgKHQpOwotLQotLQkgIGlmIChUWVBF X0NPREUgKHQpICE9IFRZUEVfQ09ERV9TVFJVQ1QKLS0JICAgICAgJiYgVFlQRV9DT0RFICh0KSAh PSBUWVBFX0NPREVfVU5JT04pCi0tCSAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJyb3I6IGAlcycg aXMgbm90IGFuIGFnZ3JlZ2F0ZSIpLAotLQkJICAgbGFuZ2RlZi0+bGFfbmFtZV9vZl90aGlzKTsK LS0KLS0JICBpZiAoY2hlY2tfZmllbGQgKHQsIG5hbWUpKQotLQkgICAgewotLQkgICAgICAqaXNf YV9maWVsZF9vZl90aGlzID0gMTsKLS0JICAgICAgcmV0dXJuIE5VTEw7Ci0tCSAgICB9Ci0tCX0K LS0gICAgfQotKyAgLyogdGhpcyBzeW1ib2wgd2FzIGZvdW5kIHRvIGJlIGEgbWVtYmVyIHZhcmlh YmxlCi0rICAgICBkbyBub3QgcGVyZm9ybSB0aGUgZ2xvYmFsIHNlYXJjaC4gKi8KLSsgIGlmIChp c19hX2ZpZWxkX29mX3RoaXMgJiYgKmlzX2FfZmllbGRfb2ZfdGhpcykKLSsgICAgcmV0dXJuIE5V TEw7Ci0gCi0gICAvKiBOb3cgZG8gd2hhdGV2ZXIgaXMgYXBwcm9wcmlhdGUgZm9yIExBTkdVQUdF IHRvIGxvb2sKLSAgICAgIHVwIHN0YXRpYyBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4gICovCi0tCi0t ICBzeW0gPSBsYW5nZGVmLT5sYV9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChuYW1lLCBsaW5rYWdl X25hbWUsIGJsb2NrLCBkb21haW4pOwotKyAgbGFuZ2RlZiA9IGxhbmd1YWdlX2RlZiAobGFuZ3Vh Z2UpOwotKyAgc3ltID0gbGFuZ2RlZi0+bGFfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAobmFtZSwg YmxvY2ssIGRvbWFpbik7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0g Ci1AQCAtMTQxMywxMSArMTQwMywxMSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotICAgICAgZGVzaXJlZCBuYW1lIGFzIGEg ZmlsZS1sZXZlbCBzdGF0aWMsIHRoZW4gZG8gcHN5bXRhYi10by1zeW10YWIKLSAgICAgIGNvbnZl cnNpb24gb24gdGhlIGZseSBhbmQgcmV0dXJuIHRoZSBmb3VuZCBzeW1ib2wuICovCi0gCi0tICBz eW0gPSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUsIGxpbmth Z2VfbmFtZSwgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKFNU QVRJQ19CTE9DSywgbmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0 dXJuIHN5bTsKLSAKLS0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChTVEFUSUNf QkxPQ0ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1i b2xfYXV4X3BzeW10YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUsIGRvbWFpbik7Ci0gICBpZiAoc3lt ICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi1AQCAtMTQyOCwzMCArMTQxOCw4MSBAQCBs b29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9u YW1lLAotICAgIERvbid0IHNlYXJjaCBTVEFUSUNfQkxPQ0sgb3IgR0xPQkFMX0JMT0NLLiAgKi8K LSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0tbG9va3VwX3N5bWJvbF9hdXhfbG9jYWwgKGNv bnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLS0JCQkgY29uc3Qgc3Ry dWN0IGJsb2NrICpibG9jaywKLS0JCQkgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotK2xvb2t1 cF9zeW1ib2xfYXV4X2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAotKwkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4sIGVudW0gbGFuZ3VhZ2UgbGFu Z3VhZ2UsCi0rCQkJIGludCAqaXNfYV9maWVsZF9vZl90aGlzKQotIHsKLSAgIHN0cnVjdCBzeW1i b2wgKnN5bTsKLS0gIGNvbnN0IHN0cnVjdCBibG9jayAqc3RhdGljX2Jsb2NrID0gYmxvY2tfc3Rh dGljX2Jsb2NrIChibG9jayk7Ci0rICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmdsb2JhbF9ibG9jayA9 IGJsb2NrX2dsb2JhbF9ibG9jayAoYmxvY2spOwotKyAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9j a19pdGVyYXRvciA9IGJsb2NrOwotKyAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdk ZWY7Ci0rCi0rICBsYW5nZGVmID0gbGFuZ3VhZ2VfZGVmIChsYW5ndWFnZSk7Ci0gCi0gICAvKiBD aGVjayBpZiBlaXRoZXIgbm8gYmxvY2sgaXMgc3BlY2lmaWVkIG9yIGl0J3MgYSBnbG9iYWwgYmxv Y2suICAqLwotIAotLSAgaWYgKHN0YXRpY19ibG9jayA9PSBOVUxMKQotKyAgaWYgKGdsb2JhbF9i bG9jayA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIHdoaWxlIChibG9jayAhPSBz dGF0aWNfYmxvY2spCi0rICB3aGlsZSAoYmxvY2tfaXRlcmF0b3IgIT0gZ2xvYmFsX2Jsb2NrKQot ICAgICB7Ci0tICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGxpbmth Z2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7Ci0rCi0rICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9h dXhfYmxvY2sgKG5hbWUsIGJsb2NrX2l0ZXJhdG9yLCBkb21haW4pOwotKwotICAgICAgIGlmIChz eW0gIT0gTlVMTCkKLSAJcmV0dXJuIHN5bTsKLSsgICAgCi0rICAgICAgaWYgKGxhbmd1YWdlID09 IGxhbmd1YWdlX2NwbHVzICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgc3ltID0gY3BfbG9va3Vw X3N5bWJvbF9pbXBvcnRzIChibG9ja19zY29wZSAoYmxvY2tfaXRlcmF0b3IpLCBuYW1lLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX2l0ZXJhdG9yLCBk b21haW4sIDEsIDEpOwotIAotLSAgICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2spICE9IE5V TEwgJiYgYmxvY2tfaW5saW5lZF9wIChibG9jaykpCi0tCWJyZWFrOwotLSAgICAgIGJsb2NrID0g QkxPQ0tfU1VQRVJCTE9DSyAoYmxvY2spOwotKyAgICAgICAgICBpZiAoc3ltICE9IE5VTEwpCi0r ICAgICAgICAgICAgcmV0dXJuIHN5bTsKLSsgICAgICAgIH0KLSsKLSsgICAgICBpZiAobGFuZ2Rl Zi0+bGFfbmFtZV9vZl90aGlzICE9IE5VTEwgJiYgaXNfYV9maWVsZF9vZl90aGlzICE9IE5VTEwK LSsJICAmJiBCTE9DS19GVU5DVElPTiAoYmxvY2tfaXRlcmF0b3IpKQotKyAgICAgICAgewotKyAg ICAgICAgICBpZiAoIWRpY3RfZW1wdHkgKEJMT0NLX0RJQ1QgKGJsb2NrX2l0ZXJhdG9yKSkpCi0r ICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YmxvY2tfaXRlcmF0b3IsCi0rCQkJCQkgbGFuZ2RlZi0+bGFfbmFtZV9vZl90aGlzLAotKwkJCQkJ IFZBUl9ET01BSU4pOwotKwotKwotKyAgICAgICAgICAgICAgaWYgKHN5bSkKLSsgICAgICAgICAg ICAgICAgewotKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB0eXBlICp0ID0gc3ltLT50eXBlOwot KwotKyAgICAgICAgICAgICAgICAgIC8qIEknbSBub3QgcmVhbGx5IHN1cmUgdGhhdCB0eXBlIG9m IHRoaXMgY2FuIGV2ZXIKLSsgICAgICAgICAgICAgICAgICAgICBiZSB0eXBlZGVmZWQ7IGp1c3Qg YmUgc2FmZS4gICovCi0rICAgICAgICAgICAgICAgICAgQ0hFQ0tfVFlQRURFRiAodCk7Ci0rICAg ICAgICAgICAgICAgICAgaWYgKFRZUEVfQ09ERSAodCkgPT0gVFlQRV9DT0RFX1BUUgotKyAgICAg ICAgICAgICAgICAgICAgICB8fCBUWVBFX0NPREUgKHQpID09IFRZUEVfQ09ERV9SRUYpCi0rICAg ICAgICAgICAgICAgICAgICAgIHQgPSBUWVBFX1RBUkdFVF9UWVBFICh0KTsKLSsKLSsgICAgICAg ICAgICAgICAgICBpZiAoVFlQRV9DT0RFICh0KSAhPSBUWVBFX0NPREVfU1RSVUNUCi0rICAgICAg ICAgICAgICAgICAgICAgICYmIFRZUEVfQ09ERSAodCkgIT0gVFlQRV9DT0RFX1VOSU9OKQotKyAg ICAgICAgICAgICAgICAgICAgZXJyb3IgKF8oIkludGVybmFsIGVycm9yOiBgJXMnIGlzIG5vdCBh biBhZ2dyZWdhdGUiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBsYW5nZGVmLT5sYV9uYW1l X29mX3RoaXMpOwotKwotKyAgICAgICAgICAgICAgICAgIGlmIChjaGVja19maWVsZCAodCwgbmFt ZSkpCi0rICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICppc19h X2ZpZWxkX29mX3RoaXMgPSAxOwotKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsK LSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAg IH0KLSsgICAgICAgIH0KLSsKLSsgICAgICBpZiAoQkxPQ0tfRlVOQ1RJT04gKGJsb2NrX2l0ZXJh dG9yKSAhPSBOVUxMICYmIGJsb2NrX2lubGluZWRfcCAoYmxvY2tfaXRlcmF0b3IpKQotKyAgICAg ICAgYnJlYWs7Ci0rCi0rICAgICAgYmxvY2tfaXRlcmF0b3IgPSBCTE9DS19TVVBFUkJMT0NLIChi bG9ja19pdGVyYXRvcik7Ci0gICAgIH0KLSAKLS0gIC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGVkZ2Ug b2YgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgZmluZGluZyBhIHJlc3VsdC4gICovCi0rICAvKiBXZSd2 ZSByZWFjaGVkIHRoZSBnbG9iYWwgYmxvY2sgd2l0aG91dCBmaW5kaW5nIGEgcmVzdWx0LiAgKi8K LSAKLSAgIHJldHVybiBOVUxMOwotIH0KLUBAIC0xNDg1LDEzICsxNTI2LDEyIEBAIGxvb2t1cF9v YmpmaWxlX2Zyb21fYmxvY2sgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spCi0gICAgYmxvY2tf Zm91bmQgYXBwcm9wcmlhdGVseS4gICovCi0gCi0gc3RydWN0IHN5bWJvbCAqCi0tbG9va3VwX3N5 bWJvbF9hdXhfYmxvY2sgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFt ZSwKLS0JCQkgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLStsb29rdXBfc3ltYm9sX2F1eF9i bG9jayAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkg Y29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSAK LS0gIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUs IGRvbWFpbik7Ci0rICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9t YWluKTsKLSAgIGlmIChzeW0pCi0gICAgIHsKLSAgICAgICBibG9ja19mb3VuZCA9IGJsb2NrOwot QEAgLTE1MDcsNyArMTU0Nyw2IEBAIGxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gc3RydWN0IHN5bWJvbCAqCi0gbG9v a3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFp bl9vYmpmaWxlLAotIAkJCQkgICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkgICBjb25zdCBjaGFy ICpsaW5rYWdlX25hbWUsCi0gCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0g ICBjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLUBAIC0xNTI2LDcgKzE1NjUsNyBAQCBs b29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpt YWluX29iamZpbGUsCi0gICAgICAgICB7Ci0gICAgICAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMp OwotICAgICAgICAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NL KTsKLS0gICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGxp bmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJv bCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0gICAgICAgICAgIGlmIChzeW0pCi0gICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgYmxvY2tfZm91bmQgPSBibG9jazsKLUBAIC0xNTM1LDE2ICsx NTc0LDE2IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0 IG9iamZpbGUgKm1haW5fb2JqZmlsZSwKLSAgICAgICAgIH0KLSAKLSAgICAgICAvKiBOb3cgZ28g dGhyb3VnaCBwc3ltdGFicy4gICovCi0rICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKChz dHJ1Y3Qgb2JqZmlsZSAqKSBvYmpmaWxlKTsKLSAgICAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAo b2JqZmlsZSwgcHMpCi0gICAgICAgICB7Ci0gICAgICAgICAgIGlmICghcHMtPnJlYWRpbgotLSAg ICAgICAgICAgICAgJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgbGlua2FnZV9u YW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBkb21haW4p KQotKyAgICAgICAgICAgICAgJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgMSwg ZG9tYWluKSkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBzID0gUFNZTVRBQl9UT19T WU1UQUIgKHBzKTsKLSAgICAgICAgICAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotICAgICAg ICAgICAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7Ci0t ICAgICAgICAgICAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgbGlu a2FnZV9uYW1lLCBkb21haW4pOwotKyAgICAgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0gICAgICAgICAgICAgICByZXR1cm4gZml4dXBf c3ltYm9sX3NlY3Rpb24gKHN5bSwgKHN0cnVjdCBvYmpmaWxlICopb2JqZmlsZSk7Ci0gICAgICAg ICAgICAgfQotICAgICAgICAgfQotQEAgLTE1NTksOCArMTU5OCw3IEBAIGxvb2t1cF9nbG9iYWxf c3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwK LSAgICBzdGF0aWMgc3ltYm9scy4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotLWxv b2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLS0JCQkgICBjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0rbG9va3VwX3N5bWJvbF9hdXhf c3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAkJCSAgIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci1AQCAtMTU3 Myw3ICsxNjExLDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4 LAotICAgewotICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKLSAgICAgYmxvY2sgPSBCTE9DS1ZF Q1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgICAgc3ltID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0gICAgIGlmIChzeW0pCi0g ICAgICAgewotIAlibG9ja19mb3VuZCA9IGJsb2NrOwotQEAgLTE1OTEsNyArMTYyOSw2IEBAIGxv b2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLSAKLSBzdGF0aWMgc3Ry dWN0IHN5bWJvbCAqCi0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRl eCwgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAot IAkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAq c3ltOwotQEAgLTE2MDIsMTYgKzE2MzksMTUgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMg KGludCBibG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKLSAgIHN0cnVjdCBzeW10YWIgKnM7 Ci0gICBjb25zdCBpbnQgcHN5bXRhYl9pbmRleCA9IChibG9ja19pbmRleCA9PSBHTE9CQUxfQkxP Q0sgPyAxIDogMCk7Ci0gCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQotKyAgQUxMX1BT WU1UQUJTX1JFUVVJUkVEIChvYmpmaWxlLCBwcykKLSAgIHsKLSAgICAgaWYgKCFwcy0+cmVhZGlu Ci0tCSYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0J CQkJICBwc3ltdGFiX2luZGV4LCBkb21haW4pKQotKwkmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wg KHBzLCBuYW1lLCBwc3ltdGFiX2luZGV4LCBkb21haW4pKQotICAgICAgIHsKLSAJcyA9IFBTWU1U QUJfVE9fU1lNVEFCIChwcyk7Ci0gCWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotIAlibG9jayA9IEJM T0NLVkVDVE9SX0JMT0NLIChidiwgYmxvY2tfaW5kZXgpOwotLQlzeW0gPSBsb29rdXBfYmxvY2tf c3ltYm9sIChibG9jaywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKwlzeW0gPSBsb29r dXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSAJaWYgKCFzeW0pCi0gCSAg ewotIAkgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJl c29ydCB0cnkKLUBAIC0xNjI4LDcgKzE2NjQsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFi cyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAkgICAgYmxvY2sgPSBCTE9D S1ZFQ1RPUl9CTE9DSyAoYnYsCi0gCQkJCSAgICAgICBibG9ja19pbmRleCA9PSBHTE9CQUxfQkxP Q0sgPwotIAkJCQkgICAgICAgU1RBVElDX0JMT0NLIDogR0xPQkFMX0JMT0NLKTsKLS0JICAgIHN5 bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFp bik7Ci0rCSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWlu KTsKLSAJICAgIGlmICghc3ltKQotIAkgICAgICBlcnJvciAoXygiSW50ZXJuYWw6ICVzIHN5bWJv bCBgJXMnIGZvdW5kIGluICVzIHBzeW10YWIgYnV0IG5vdCBpbiBzeW10YWIuXG4lcyBtYXkgYmUg YW4gaW5saW5lZCBmdW5jdGlvbiwgb3IgbWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cbihpZiBh IHRlbXBsYXRlLCB0cnkgc3BlY2lmeWluZyBhbiBpbnN0YW50aWF0aW9uOiAlczx0eXBlPikuIiks Ci0gCQkgICAgIGJsb2NrX2luZGV4ID09IEdMT0JBTF9CTE9DSyA/ICJnbG9iYWwiIDogInN0YXRp YyIsCi1AQCAtMTY0Nyw3ICsxNjgzLDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGlu dCBibG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKLSAKLSBzdHJ1Y3Qgc3ltYm9sICoKLSBi YXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAotLQkJCSAgICAg IGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAotIAkJCSAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci1AQCAtMTY4 MSwxMSArMTcxNiwxMSBAQCBiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFy ICpuYW1lLAotICAgICAgdGhhbiB0aGF0IG9uZSwgc28gSSBkb24ndCB0aGluayB3ZSBzaG91bGQg d29ycnkgYWJvdXQgdGhhdCBmb3IKLSAgICAgIG5vdy4gICovCi0gCi0tICBzeW0gPSBsb29rdXBf c3ltYm9sX3N0YXRpYyAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHN5 bSA9IGxvb2t1cF9zeW1ib2xfc3RhdGljIChuYW1lLCBibG9jaywgZG9tYWluKTsKLSAgIGlmIChz eW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAKLS0gIHJldHVybiBsb29rdXBfc3ltYm9s X2dsb2JhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHJldHVybiBs b29rdXBfc3ltYm9sX2dsb2JhbCAobmFtZSwgYmxvY2ssIGRvbWFpbik7Ci0gfQotIAotIC8qIExv b2t1cCBhIHN5bWJvbCBpbiB0aGUgc3RhdGljIGJsb2NrIGFzc29jaWF0ZWQgdG8gQkxPQ0ssIGlm IHRoZXJlCi1AQCAtMTY5MywxNCArMTcyOCwxMyBAQCBiYXNpY19sb29rdXBfc3ltYm9sX25vbmxv Y2FsIChjb25zdCBjaGFyICpuYW1lLAotIAotIHN0cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9zeW1i b2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLAotLQkJICAgICAgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAotIAkJICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCSAgICAgIGNv bnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBjb25zdCBzdHJ1Y3QgYmxvY2sgKnN0YXRp Y19ibG9jayA9IGJsb2NrX3N0YXRpY19ibG9jayAoYmxvY2spOwotIAotICAgaWYgKHN0YXRpY19i bG9jayAhPSBOVUxMKQotLSAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUs IGxpbmthZ2VfbmFtZSwgc3RhdGljX2Jsb2NrLCBkb21haW4pOwotKyAgICByZXR1cm4gbG9va3Vw X3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIHN0YXRpY19ibG9jaywgZG9tYWluKTsKLSAgIGVsc2UK LSAgICAgcmV0dXJuIE5VTEw7Ci0gfQotQEAgLTE3MTAsNyArMTc0NCw2IEBAIGxvb2t1cF9zeW1i b2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLAotIAotIHN0cnVjdCBzeW1ib2wgKgotIGxvb2t1 cF9zeW1ib2xfZ2xvYmFsIChjb25zdCBjaGFyICpuYW1lLAotLQkJICAgICAgY29uc3QgY2hhciAq bGlua2FnZV9uYW1lLAotIAkJICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCSAg ICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci1AQCAtMTcyMCwxNSArMTc1MywxNSBA QCBsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKLSAgIC8qIENhbGwgbGli cmFyeS1zcGVjaWZpYyBsb29rdXAgcHJvY2VkdXJlLiAgKi8KLSAgIG9iamZpbGUgPSBsb29rdXBf b2JqZmlsZV9mcm9tX2Jsb2NrIChibG9jayk7Ci0gICBpZiAob2JqZmlsZSAhPSBOVUxMKQotLSAg ICBzeW0gPSBzb2xpYl9nbG9iYWxfbG9va3VwIChvYmpmaWxlLCBuYW1lLCBsaW5rYWdlX25hbWUs IGRvbWFpbik7Ci0rICAgIHN5bSA9IHNvbGliX2dsb2JhbF9sb29rdXAgKG9iamZpbGUsIG5hbWUs IGRvbWFpbik7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0tICBz eW0gPSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUsIGxpbmth Z2VfbmFtZSwgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKEdM T0JBTF9CTE9DSywgbmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0 dXJuIHN5bTsKLSAKLS0gIHJldHVybiBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoR0xPQkFM X0JMT0NLLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0rICByZXR1cm4gbG9va3VwX3N5 bWJvbF9hdXhfcHN5bXRhYnMgKEdMT0JBTF9CTE9DSywgbmFtZSwgZG9tYWluKTsKLSB9Ci0gCi0g aW50Ci1AQCAtMTc1MiwxNCArMTc4NSwxMSBAQCBzeW1ib2xfbWF0Y2hlc19kb21haW4gKGVudW0g bGFuZ3VhZ2Ugc3ltYm9sX2xhbmd1YWdlLAotIH0KLSAKLSAvKiBMb29rLCBpbiBwYXJ0aWFsX3N5 bXRhYiBQU1QsIGZvciBzeW1ib2wgd2hvc2UgbmF0dXJhbCBuYW1lIGlzIE5BTUUuCi0tICAgSWYg TElOS0FHRV9OQU1FIGlzIG5vbi1OVUxMLCBjaGVjayBpbiBhZGRpdGlvbiB0aGF0IHRoZSBzeW1i b2wncwotLSAgIGxpbmthZ2UgbmFtZSBtYXRjaGVzIGl0LiAgQ2hlY2sgdGhlIGdsb2JhbCBzeW1i b2xzIGlmIEdMT0JBTCwgdGhlCi0tICAgc3RhdGljIHN5bWJvbHMgaWYgbm90ICovCi0rICAgQ2hl Y2sgdGhlIGdsb2JhbCBzeW1ib2xzIGlmIEdMT0JBTCwgdGhlIHN0YXRpYyBzeW1ib2xzIGlmIG5v dC4gKi8KLSAKLSBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKgotIGxvb2t1cF9wYXJ0aWFsX3N5bWJv bCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAg ICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLCBpbnQgZ2xvYmFsLAotLQkJICAgICAgIGRvbWFp bl9lbnVtIGRvbWFpbikKLSsJCSAgICAgICBpbnQgZ2xvYmFsLCBkb21haW5fZW51bSBkb21haW4p Ci0gewotICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICp0ZW1wOwotICAgc3RydWN0IHBhcnRpYWxf c3ltYm9sICoqc3RhcnQsICoqcHN5bTsKLUBAIC0xODExLDkgKzE4NDEsNyBAQCBsb29rdXBfcGFy dGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpuYW1l LAotIAlpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJmYWlsZWQgaW50ZXJu YWwgY29uc2lzdGVuY3kgY2hlY2siKSk7Ci0gCi0gICAgICAgd2hpbGUgKHRvcCA8PSByZWFsX3Rv cAotLQkgICAgICYmIChsaW5rYWdlX25hbWUgIT0gTlVMTAotLQkJID8gc3RyY21wIChTWU1CT0xf TElOS0FHRV9OQU1FICgqdG9wKSwgbGlua2FnZV9uYW1lKSA9PSAwCi0tCQkgOiBTWU1CT0xfTUFU Q0hFU19TRUFSQ0hfTkFNRSAoKnRvcCxuYW1lKSkpCi0rCSAgICAgJiYgU1lNQk9MX01BVENIRVNf U0VBUkNIX05BTUUgKCp0b3AsIG5hbWUpKQotIAl7Ci0gCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2Rv bWFpbiAoU1lNQk9MX0xBTkdVQUdFICgqdG9wKSwKLSAJCQkJICAgICBTWU1CT0xfRE9NQUlOICgq dG9wKSwgZG9tYWluKSkKLUBAIC0xODMwLDE1ICsxODU4LDkgQEAgbG9va3VwX3BhcnRpYWxfc3lt Ym9sIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAg ICBmb3IgKHBzeW0gPSBzdGFydDsgcHN5bSA8IHN0YXJ0ICsgbGVuZ3RoOyBwc3ltKyspCi0gCXsK LSAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKCpwc3ltKSwK LS0JCQkJICAgICBTWU1CT0xfRE9NQUlOICgqcHN5bSksIGRvbWFpbikpCi0tCSAgICB7Ci0tCSAg ICAgIGlmIChsaW5rYWdlX25hbWUgIT0gTlVMTAotLQkJICA/IHN0cmNtcCAoU1lNQk9MX0xJTktB R0VfTkFNRSAoKnBzeW0pLCBsaW5rYWdlX25hbWUpID09IDAKLS0JCSAgOiBTWU1CT0xfTUFUQ0hF U19TRUFSQ0hfTkFNRSAoKnBzeW0sIG5hbWUpKQotLQkJewotLQkJICByZXR1cm4gKCpwc3ltKTsK LS0JCX0KLS0JICAgIH0KLSsJCQkJICAgICBTWU1CT0xfRE9NQUlOICgqcHN5bSksIGRvbWFpbikK LSsJICAgICAgJiYgU1lNQk9MX01BVENIRVNfU0VBUkNIX05BTUUgKCpwc3ltLCBuYW1lKSkKLSsJ ICAgIHJldHVybiAoKnBzeW0pOwotIAl9Ci0gICAgIH0KLSAKLUBAIC0xODgwLDIyICsxOTAyLDI1 IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQotICAg ewotICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKLSAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9C TE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7Ci0tICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wg KGJsb2NrLCBuYW1lLCBOVUxMLCBTVFJVQ1RfRE9NQUlOKTsKLSsgICAgc3ltID0gbG9va3VwX2Js b2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOwotICAgICBpZiAoc3ltICYm ICFUWVBFX0lTX09QQVFVRSAoU1lNQk9MX1RZUEUgKHN5bSkpKQotICAgICAgIHsKLSAJcmV0dXJu IFNZTUJPTF9UWVBFIChzeW0pOwotICAgICAgIH0KLSAgIH0KLSAKLS0gIEFMTF9QU1lNVEFCUyAo b2JqZmlsZSwgcHMpCi0rICAvKiBGSVhNRTogLmRlYnVnX3B1Ym5hbWVzIHNob3VsZCBiZSByZWFk IGluLgotKyAgICAgCi0rICAgICBPbmUgbWF5IGFsc28gdHJ5IHRvIHRoZSBmaXJzdCBwYXNzIHdp dGhvdXQgdGhlIHJlcXVpcmVfcGFydGlhbF9zeW1ib2xzCi0rICAgICBjYWxsIGJ1dCB0aGF0IHdv dWxkIGJlaGF2ZSBub25kZXRlcm1pbmlzdGljYWxseS4gICovCi0rICBBTExfUFNZTVRBQlNfUkVR VUlSRUQgKG9iamZpbGUsIHBzKQotICAgewotLSAgICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3Vw X3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgTlVMTCwKLS0JCQkJCSAgICAgIDEsIFNUUlVDVF9E T01BSU4pKQotKyAgICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChw cywgbmFtZSwgMSwgU1RSVUNUX0RPTUFJTikpCi0gICAgICAgewotIAlzID0gUFNZTVRBQl9UT19T WU1UQUIgKHBzKTsKLSAJYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0gCWJsb2NrID0gQkxPQ0tWRUNU T1JfQkxPQ0sgKGJ2LCBHTE9CQUxfQkxPQ0spOwotLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9s IChibG9jaywgbmFtZSwgTlVMTCwgU1RSVUNUX0RPTUFJTik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9j a19zeW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJaWYgKCFzeW0pCi0gCSAg ewotIAkgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJl c29ydAotQEAgLTE5MDQsNyArMTkyOSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBl IChjb25zdCBjaGFyICpuYW1lKQotIAkgICAgICogdGhlIHBzeW10YWIgZ2V0cyBpdCB3cm9uZyBp biBzb21lIGNhc2VzLgotIAkgICAgICovCi0gCSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NL IChidiwgU1RBVElDX0JMT0NLKTsKLS0JICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJs b2NrLCBuYW1lLCBOVUxMLCBTVFJVQ1RfRE9NQUlOKTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9j a19zeW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJICAgIGlmICghc3ltKQot IAkgICAgICBlcnJvciAoXygiSW50ZXJuYWw6IGdsb2JhbCBzeW1ib2wgYCVzJyBmb3VuZCBpbiAl cyBwc3ltdGFiIGJ1dCBub3QgaW4gc3ltdGFiLlxuXAotICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1 bmN0aW9uLCBvciBtYXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5MjgsMjEgKzE5 NTMsMjYgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUp Ci0gICB7Ci0gICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotICAgICBibG9jayA9IEJMT0NLVkVD VE9SX0JMT0NLIChidiwgU1RBVElDX0JMT0NLKTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYmxvY2ssIG5hbWUsIE5VTEwsIFNUUlVDVF9ET01BSU4pOwotKyAgICBzeW0gPSBsb29r dXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJTik7Ci0gICAgIGlmIChz eW0gJiYgIVRZUEVfSVNfT1BBUVVFIChTWU1CT0xfVFlQRSAoc3ltKSkpCi0gICAgICAgewotIAly ZXR1cm4gU1lNQk9MX1RZUEUgKHN5bSk7Ci0gICAgICAgfQotICAgfQotIAotLSAgQUxMX1BTWU1U QUJTIChvYmpmaWxlLCBwcykKLSsgIC8qIEZJWE1FOiBTb21ldGhpbmcgbGlrZSAuZGVidWdfcHVi bmFtZXMgY29udGFpbmluZyBhbHNvIHN0YXRpYyBzeW1ib2xzCi0rICAgICBzaG91bGQgYmUgcmVh ZCBpbi4gIENvbXBpbGVyIG5lZWRzIHRvIGJlIHRhdWdodCB0byBnZW5lcmF0ZSBpdCBmaXJzdC4K LSsgICAgIAotKyAgICAgT25lIG1heSBhbHNvIHRyeSB0byB0aGUgZmlyc3QgcGFzcyB3aXRob3V0 IHRoZSByZXF1aXJlX3BhcnRpYWxfc3ltYm9scwotKyAgICAgY2FsbCBidXQgdGhhdCB3b3VsZCBi ZWhhdmUgbm9uZGV0ZXJtaW5pc3RpY2FsbHkuICAqLwotKyAgQUxMX1BTWU1UQUJTX1JFUVVJUkVE IChvYmpmaWxlLCBwcykKLSAgIHsKLS0gICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0 aWFsX3N5bWJvbCAocHMsIG5hbWUsIE5VTEwsIDAsIFNUUlVDVF9ET01BSU4pKQotKyAgICBpZiAo IXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgMCwgU1RSVUNU X0RPTUFJTikpCi0gICAgICAgewotIAlzID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSAJYnYg PSBCTE9DS1ZFQ1RPUiAocyk7Ci0gCWJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBTVEFU SUNfQkxPQ0spOwotLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgTlVM TCwgU1RSVUNUX0RPTUFJTik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBu YW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJaWYgKCFzeW0pCi0gCSAgewotIAkgICAgLyogVGhpcyBz aG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydAotQEAgLTE5NTEsNyAr MTk4MSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1l KQotIAkgICAgICogdGhlIHBzeW10YWIgZ2V0cyBpdCB3cm9uZyBpbiBzb21lIGNhc2VzLgotIAkg ICAgICovCi0gCSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NL KTsKLS0JICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBOVUxMLCBT VFJVQ1RfRE9NQUlOKTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBu YW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJICAgIGlmICghc3ltKQotIAkgICAgICBlcnJvciAoXygi SW50ZXJuYWw6IHN0YXRpYyBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBwc3ltdGFiIGJ1dCBub3Qg aW4gc3ltdGFiLlxuXAotICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBtYXkgYmUg YSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5NzYsOSArMjAwNiwyMyBAQCBmaW5kX21haW5f cHN5bXRhYiAodm9pZCkKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0OwotICAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGU7Ci0gCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzdCkKLSsg IEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSsgIHsKLSsgICAgaWYgKChvYmpmaWxlLT5mbGFncyAm IE9CSkZfTUFJTikgPT0gMCkKLSsgICAgICBjb250aW51ZTsKLSsgICAgcmVxdWlyZV9wYXJ0aWFs X3N5bWJvbHMgKG9iamZpbGUpOwotKyAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwg cHN0KQotKyAgICB7Ci0rICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWlu X25hbWUgKCksIDEsIFZBUl9ET01BSU4pKQotKwl7Ci0rCSAgcmV0dXJuIHBzdDsKLSsJfQotKyAg ICB9Ci0rICB9Ci0rCi0rICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzdCkKLSAg IHsKLS0gICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWluX25hbWUgKCksIE5V TEwsIDEsIFZBUl9ET01BSU4pKQotKyAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3Qs IG1haW5fbmFtZSAoKSwgMSwgVkFSX0RPTUFJTikpCi0gICAgICAgewotIAlyZXR1cm4gKHBzdCk7 Ci0gICAgICAgfQotQEAgLTE5OTYsMTQgKzIwNDAsMTAgQEAgZmluZF9tYWluX3BzeW10YWIgKHZv aWQpCi0gICAgc2VhcmNoIG9uIHRoZSBzeW1ib2xzLiAgRWFjaCBzeW1ib2wgd2hpY2ggaXMgbWFy a2VkIGFzIGJlaW5nIGEgT2JqQy9DKysKLSAgICBzeW1ib2wgKGxhbmd1YWdlX2NwbHVzIG9yIGxh bmd1YWdlX29iamMgc2V0KSBoYXMgYm90aCB0aGUgZW5jb2RlZCBhbmQKLSAgICBub24tZW5jb2Rl ZCBuYW1lcyB0ZXN0ZWQgZm9yIGEgbWF0Y2guCi0tCi0tICAgSWYgTElOS0FHRV9OQU1FIGlzIG5v bi1OVUxMLCB2ZXJpZnkgdGhhdCBhbnkgc3ltYm9sIHdlIGZpbmQgaGFzIHRoaXMKLS0gICBwYXJ0 aWN1bGFyIG1hbmdsZWQgbmFtZS4KLSAqLwotIAotIHN0cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9i bG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUs Ci0tCQkgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCSAgICAgY29uc3QgZG9tYWlu X2VudW0gZG9tYWluKQotIHsKLSAgIHN0cnVjdCBkaWN0X2l0ZXJhdG9yIGl0ZXI7Ci1AQCAtMjAx Niw5ICsyMDU2LDcgQEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywgY29uc3QgY2hhciAqbmFtZSwKLSAJICAgc3ltID0gZGljdF9pdGVyX25hbWVfbmV4dCAo bmFtZSwgJml0ZXIpKQotIAl7Ci0gCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9M X0xBTkdVQUdFIChzeW0pLAotLQkJCQkgICAgIFNZTUJPTF9ET01BSU4gKHN5bSksIGRvbWFpbikK LS0JICAgICAgJiYgKGxpbmthZ2VfbmFtZSAhPSBOVUxMCi0tCQkgID8gc3RyY21wIChTWU1CT0xf TElOS0FHRV9OQU1FIChzeW0pLCBsaW5rYWdlX25hbWUpID09IDAgOiAxKSkKLSsJCQkJICAgICBT WU1CT0xfRE9NQUlOIChzeW0pLCBkb21haW4pKQotIAkgICAgcmV0dXJuIHN5bTsKLSAJfQotICAg ICAgIHJldHVybiBOVUxMOwotQEAgLTIwMzgsOSArMjA3Niw3IEBAIGxvb2t1cF9ibG9ja19zeW1i b2wgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsCi0gCSAgIHN5 bSA9IGRpY3RfaXRlcl9uYW1lX25leHQgKG5hbWUsICZpdGVyKSkKLSAJewotIAkgIGlmIChzeW1i b2xfbWF0Y2hlc19kb21haW4gKFNZTUJPTF9MQU5HVUFHRSAoc3ltKSwKLS0JCQkJICAgICBTWU1C T0xfRE9NQUlOIChzeW0pLCBkb21haW4pCi0tCSAgICAgICYmIChsaW5rYWdlX25hbWUgIT0gTlVM TAotLQkJICA/IHN0cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSwgbGlua2FnZV9uYW1l KSA9PSAwIDogMSkpCi0rCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoc3ltKSwgZG9tYWluKSkKLSAJ ICAgIHsKLSAJICAgICAgc3ltX2ZvdW5kID0gc3ltOwotIAkgICAgICBpZiAoIVNZTUJPTF9JU19B UkdVTUVOVCAoc3ltKSkKLUBAIC0zMjAxLDcgKzMyMzcsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hh ciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAot ICAge21zdF9maWxlX2RhdGEsIG1zdF9zb2xpYl90cmFtcG9saW5lLCBtc3RfYWJzLCBtc3RfdW5r bm93bn07Ci0gICBzdGF0aWMgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIHR5cGVzNFtdCi0gICA9 Ci0tICB7bXN0X2ZpbGVfYnNzLCBtc3RfdGV4dCwgbXN0X2FicywgbXN0X3Vua25vd259OwotKyAg e21zdF9maWxlX2JzcywgbXN0X3RleHRfZ251X2lmdW5jLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07 Ci0gICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTsKLSAgIGVudW0gbWluaW1hbF9z eW1ib2xfdHlwZSBvdXJ0eXBlMjsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBl MzsKLUBAIC0zMjYyLDcgKzMyOTgsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBk b21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAotICAgICAgbWF0Y2hp bmcgdGhlIHJlZ2V4cC4gIFRoYXQgd2F5IHdlIGRvbid0IGhhdmUgdG8gcmVwcm9kdWNlIGFsbCBv ZgotICAgICAgdGhlIG1hY2hpbmVyeSBiZWxvdy4gKi8KLSAKLS0gIEFMTF9QU1lNVEFCUyAob2Jq ZmlsZSwgcHMpCi0rICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQotICAgewot ICAgICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKipib3VuZCwgKipnYm91bmQsICoqc2JvdW5kOwot ICAgICBpbnQga2VlcF9nb2luZyA9IDE7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2Ri L3N5bXRhYi5oCi1pbmRleCAxNjdkZmU4Li4yZjg4ZTkzIDEwMDY0NAotLS0tIGEvZ2RiL3N5bXRh Yi5oCi0rKysgYi9nZGIvc3ltdGFiLmgKLUBAIC0yODAsNiArMjgwLDggQEAgZW51bSBtaW5pbWFs X3N5bWJvbF90eXBlCi0gewotICAgbXN0X3Vua25vd24gPSAwLAkJLyogVW5rbm93biB0eXBlLCB0 aGUgZGVmYXVsdCAqLwotICAgbXN0X3RleHQsCQkJLyogR2VuZXJhbGx5IGV4ZWN1dGFibGUgaW5z dHJ1Y3Rpb25zICovCi0rICBtc3RfdGV4dF9nbnVfaWZ1bmMsCQkvKiBFeGVjdXRhYmxlIGNvZGUg cmV0dXJuaW5nIGFkZHJlc3MKLSsJCQkJICAgb2YgZXhlY3V0YWJsZSBjb2RlICovCi0gICBtc3Rf ZGF0YSwJCQkvKiBHZW5lcmFsbHkgaW5pdGlhbGl6ZWQgZGF0YSAqLwotICAgbXN0X2JzcywJCQkv KiBHZW5lcmFsbHkgdW5pbml0aWFsaXplZCBkYXRhICovCi0gICBtc3RfYWJzLAkJCS8qIEdlbmVy YWxseSBhYnNvbHV0ZSAobm9ucmVsb2NhdGFibGUpICovCi1AQCAtMzk2LDcgKzM5OCwxMCBAQCB0 eXBlZGVmIGVudW0gZG9tYWluX2VudW1fdGFnCi0gICBGVU5DVElPTlNfRE9NQUlOLAotIAotICAg LyogQWxsIGRlZmluZWQgdHlwZXMgKi8KLS0gIFRZUEVTX0RPTUFJTgotKyAgVFlQRVNfRE9NQUlO LAotKwotKyAgLyogRm9ydHJhbiBtb2R1bGUuICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0 ZS4gICovCi0rICBNT0RVTEVfRE9NQUlOCi0gfQotIGRvbWFpbl9lbnVtOwotIAotQEAgLTk5NCw3 ICs5OTksNiBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbCAoY29uc3QgY2hh ciAqLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKLSAgICB0aGF0IGNhbid0IHRoaW5rIG9mIGFueXRo aW5nIGJldHRlciB0byBkby4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xv b2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKiwKLS0JCQkJCQkgICAgY29uc3QgY2hh ciAqLAotIAkJCQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKLSAJCQkJCQkgICAgY29uc3Qg ZG9tYWluX2VudW0pOwotIAotQEAgLTEwMDUsNyArMTAwOSw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3lt Ym9sICpiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICosCi0gICAgaXMg b25lOyBkbyBub3RoaW5nIGlmIEJMT0NLIGlzIE5VTEwgb3IgYSBnbG9iYWwgYmxvY2suICAqLwot IAotIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29uc3QgY2hh ciAqbmFtZSwKLS0JCQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkgICAg Y29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCSAgICBjb25zdCBkb21haW5fZW51bSBk b21haW4pOwotIAotQEAgLTEwMTMsNyArMTAxNiw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICps b29rdXBfc3ltYm9sX3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKLSAgICBuZWNlc3NhcnkpLiAg Ki8KLSAKLSBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0 IGNoYXIgKm5hbWUsCi0tCQkJCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJ ICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJCQkgICAgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluKTsKLSAKLUBAIC0xMDIyLDIxICsxMDI0LDE4IEBAIGV4dGVybiBzdHJ1Y3Qgc3lt Ym9sICpsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKLSAgICB3aWxsIGZp eCB1cCB0aGUgc3ltYm9sIGlmIG5lY2Vzc2FyeS4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1i b2wgKmxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICAg ICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg YmxvY2sgKmJsb2NrLAotIAkJCQkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0g Ci0gLyogTG9va3VwIGEgcGFydGlhbCBzeW1ib2wuICAqLwotIAotIGV4dGVybiBzdHJ1Y3QgcGFy dGlhbF9zeW1ib2wgKmxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFi ICosCi0tCQkJCQkJICAgICBjb25zdCBjaGFyICosCi0gCQkJCQkJICAgICBjb25zdCBjaGFyICos IGludCwKLSAJCQkJCQkgICAgIGRvbWFpbl9lbnVtKTsKLSAKLSAvKiBsb29rdXAgYSBzeW1ib2wg YnkgbmFtZSwgd2l0aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBz eW1ib2wgKmxvb2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqLCBjb25zdCBj aGFyICosCi0tCQkJCQkgICBjb25zdCBjaGFyICosCi0gCQkJCQkgICBjb25zdCBkb21haW5fZW51 bSk7Ci0gCi0gLyogbG9va3VwIGEgW3N0cnVjdCwgdW5pb24sIGVudW1dIGJ5IG5hbWUsIHdpdGhp biBhIHNwZWNpZmllZCBibG9jayAqLwotQEAgLTEwNjYsNiArMTA2NSw4IEBAIGV4dGVybiB2b2lk IGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKTsKLSAKLSAvKiBmcm9tIHN5bXRhYi5jOiAq LwotIAotK3N0cnVjdCBvYmpmaWxlICpyZXF1aXJlX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IG9i amZpbGUgKik7Ci0rCi0gLyogbG9va3VwIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGJ5IGZpbGVuYW1l ICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqbG9va3VwX3BhcnRpYWxfc3lt dGFiIChjb25zdCBjaGFyICopOwotQEAgLTExNTksNiArMTE2MCw4IEBAIGV4dGVybiBzdHJ1Y3Qg bWluaW1hbF9zeW1ib2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19uYW1lCi0gCi0gZXh0 ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChD T1JFX0FERFIpOwotIAotK2V4dGVybiBpbnQgaW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBw Yyk7Ci0rCi0gZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCi0gICAgIGxvb2t1cF9taW5p bWFsX3N5bWJvbF9hbmRfb2JqZmlsZSAoY29uc3QgY2hhciAqLAotIAkJCQkgICAgICAgc3RydWN0 IG9iamZpbGUgKiopOwotQEAgLTEzNzIsNyArMTM3NSw2IEBAIGV4dGVybiAvKmNvbnN0ICovIGNo YXIgKm1haW5fbmFtZSAodm9pZCk7Ci0gLyogQ2hlY2sgZ2xvYmFsIHN5bWJvbHMgaW4gb2JqZmls ZS4gICovCi0gc3RydWN0IHN5bWJvbCAqbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxl IChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCQkgIGNvbnN0IGNoYXIgKm5h bWUsCi0tCQkJCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkJICBjb25zdCBk b21haW5fZW51bSBkb21haW4pOwotIAotIGV4dGVybiBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMK LWRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKLWluZGV4IGU2NjU5Yzku LmVhYmQ5ZmMgMTAwNjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0LmMKLSsrKyBiL2dkYi90YXJnZXQuYwot QEAgLTEyMCw2ICsxMjAsOCBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50 IChDT1JFX0FERFIsIGludCwgaW50KTsKLSAKLSBzdGF0aWMgaW50IGRlYnVnX3RvX3JlbW92ZV93 YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50KTsKLSAKLStzdGF0aWMgaW50IGRlYnVnX3Rv X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCk7Ci0rCi0gc3RhdGljIGludCBkZWJ1Z190b19zdG9w cGVkX2J5X3dhdGNocG9pbnQgKHZvaWQpOwotIAotIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBl ZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKLUBAIC01 ODMsNiArNTg1LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotICAgICAgIElOSEVS SVQgKHRvX3JlbW92ZV9od19icmVha3BvaW50LCB0KTsKLSAgICAgICBJTkhFUklUICh0b19pbnNl cnRfd2F0Y2hwb2ludCwgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9fcmVtb3ZlX3dhdGNocG9pbnQs IHQpOwotKyAgICAgIElOSEVSSVQgKHRvX2RldGFjaF93YXRjaHBvaW50cywgdCk7Ci0gICAgICAg SU5IRVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOwotICAgICAgIElOSEVSSVQgKHRv X2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX2hhdmVf Y29udGludWFibGVfd2F0Y2hwb2ludCwgdCk7Ci1AQCAtNzEwLDYgKzcxMyw5IEBAIHVwZGF0ZV9j dXJyZW50X3RhcmdldCAodm9pZCkKLSAgIGRlX2ZhdWx0ICh0b19yZW1vdmVfd2F0Y2hwb2ludCwK LSAJICAgIChpbnQgKCopIChDT1JFX0FERFIsIGludCwgaW50KSkKLSAJICAgIHJldHVybl9taW51 c19vbmUpOwotKyAgZGVfZmF1bHQgKHRvX2RldGFjaF93YXRjaHBvaW50cywKLSsJICAgIChpbnQg KCopICh2b2lkKSkKLSsJICAgIHJldHVybl96ZXJvKTsKLSAgIGRlX2ZhdWx0ICh0b19zdG9wcGVk X2J5X3dhdGNocG9pbnQsCi0gCSAgICAoaW50ICgqKSAodm9pZCkpCi0gCSAgICByZXR1cm5femVy byk7Ci1AQCAtMzI3Nyw2ICszMjgzLDE5IEBAIGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUpCi0gICByZXR1cm4gcmV0dmFsOwotIH0K LSAKLStzdGF0aWMgaW50Ci0rZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQotK3sK LSsgIGludCByZXR2YWw7Ci0rCi0rICByZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9fZGV0YWNoX3dh dGNocG9pbnRzICgpOwotKwotKyAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJ ICAgICAgInRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMgKCkgPSAlbGRcbiIsCi0rCQkgICAgICAo dW5zaWduZWQgbG9uZykgcmV0dmFsKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotIHN0YXRp YyB2b2lkCi0gZGVidWdfdG9fdGVybWluYWxfaW5pdCAodm9pZCkKLSB7Ci1AQCAtMzUyNCw2ICsz NTQzLDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQotICAgY3VycmVudF90YXJnZXQudG9f cmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludDsKLSAg IGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0gZGVidWdfdG9faW5zZXJ0X3dh dGNocG9pbnQ7Ci0gICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2ludCA9IGRlYnVn X3RvX3JlbW92ZV93YXRjaHBvaW50OwotKyAgY3VycmVudF90YXJnZXQudG9fZGV0YWNoX3dhdGNo cG9pbnRzID0gZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzOwotICAgY3VycmVudF90YXJnZXQu dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gZGVidWdfdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50 OwotICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBkZWJ1Z190b19z dG9wcGVkX2RhdGFfYWRkcmVzczsKLSAgIGN1cnJlbnRfdGFyZ2V0LnRvX3dhdGNocG9pbnRfYWRk cl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlOwot ZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQuaAotaW5kZXggNzEwM2FiMi4u NzQxYjJlNSAxMDA2NDQKLS0tLSBhL2dkYi90YXJnZXQuaAotKysrIGIvZ2RiL3RhcmdldC5oCi1A QCAtNDIyLDYgKzQyMiw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCi0gICAgIGludCAoKnRvX3JlbW92 ZV9od19icmVha3BvaW50KSAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZv ICopOwotICAgICBpbnQgKCp0b19yZW1vdmVfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBp bnQpOwotICAgICBpbnQgKCp0b19pbnNlcnRfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBp bnQpOwotKyAgICBpbnQgKCp0b19kZXRhY2hfd2F0Y2hwb2ludHMpICh2b2lkKTsKLSAgICAgaW50 ICgqdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50KSAodm9pZCk7Ci0gICAgIGludCB0b19oYXZlX3N0 ZXBwYWJsZV93YXRjaHBvaW50OwotICAgICBpbnQgdG9faGF2ZV9jb250aW51YWJsZV93YXRjaHBv aW50OwotQEAgLTEyNzQsNiArMTI3NSwxNSBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19z dHIgKHB0aWRfdCBwdGlkKTsKLSAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludChhZGRy LCBsZW4sIHR5cGUpCVwKLSAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dhdGNocG9p bnQpIChhZGRyLCBsZW4sIHR5cGUpCi0gCi0rLyogQ2xlYXIgYWxsIGRlYnVnIHJlZ2lzdGVycyB3 aXRob3V0IGFmZmVjdGluZyBhbnkgcmVnaXN0ZXIgY2FjaGVzLiAgRnVuY3Rpb24KLSsgICBhY3Rz IG9uIElORkVSSU9SX1BUSUQgd2hpY2ggc2hvdWxkIGJlIHRoZSBmb3JrZWQtb2ZmIHByb2Nlc3Ms IGVpdGhlciB0aGUKLSsgICBub24tdGhyZWFkZWQgY2hpbGQgb25lIG9yIHRoZSB0aHJlYWRlZCBw YXJlbnQgb25lLCBkZXBlbmRpbmcgb24gYHNldAotKyAgIGZvbGxvdy1mb3JrLW1vZGUnLiAgQm90 aCB3YXRjaHBvaW50cyBhbmQgaGFyZHdhcmUgYnJlYWtwb2ludHMgZ2V0IHJlbW92ZWQuCi0rICAg UmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICovCi0rCi0rI2RlZmluZQl0YXJn ZXRfZGV0YWNoX3dhdGNocG9pbnRzKCkJXAotKyAgICAgKCpjdXJyZW50X3RhcmdldC50b19kZXRh Y2hfd2F0Y2hwb2ludHMpICgpCi0rCi0gI2RlZmluZSB0YXJnZXRfaW5zZXJ0X2h3X2JyZWFrcG9p bnQoZ2RiYXJjaCwgYnBfdGd0KSBcCi0gICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF9o d19icmVha3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQotIAotQEAgLTEzMTQsNiArMTMyNCwyMCBA QCBleHRlcm4gaW50IHRhcmdldF9zZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgc3RhcnRfYWRkciwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9OR0VTVCBwYXR0ZXJuX2xlbiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT1JFX0FERFIgKmZvdW5kX2FkZHJw KTsKLSAKLSsvKiBVdGlsaXR5IGZ1bmN0aW9ucyB3aGljaCBjYW4gYmUgdXNlZCBieSBzZWFyY2hf bWVtb3J5IGltcGxlbWVudGF0aW9ucy4gICovCi0rCi0rdm9pZCBhbGxvY2F0ZV9wYXR0ZXJuX2J1 ZmZlciAoY2hhciAqKnBhdHRlcm5fYnVmcCwgY2hhciAqKnBhdHRlcm5fYnVmX2VuZCwKLSsJCQkg ICAgICBVTE9OR0VTVCAqcGF0dGVybl9idWZfc2l6ZSk7Ci0rCi0rdm9pZCBpbmNyZWFzZV9wYXR0 ZXJuX2J1ZmZlciAoY2hhciAqKnBhdHRlcm5fYnVmcCwgY2hhciAqKnBhdHRlcm5fYnVmX2VuZCwK LSsJCQkgICAgICBVTE9OR0VTVCAqcGF0dGVybl9idWZfc2l6ZSwgaW50IHZhbF9ieXRlcyk7Ci0r Ci0raW50IHNlYXJjaF9tZW1vcnkgKENPUkVfQUREUiAqc3RhcnRfYWRkciwgVUxPTkdFU1QgKnNl YXJjaF9zcGFjZV9sZW4sCi0rCQkgICBjb25zdCBjaGFyICpwYXR0ZXJuX2J1ZiwgVUxPTkdFU1Qg cGF0dGVybl9sZW4sCi0rCQkgICBDT1JFX0FERFIgKmZvdW5kX2FkZHIpOwotKwotK3ZvaWQgcHV0 X2JpdHMgKGJmZF91aW50NjRfdCBkYXRhLCBjaGFyICpidWYsIGludCBiaXRzLCBiZmRfYm9vbGVh biBiaWdfcCk7Ci0rCi0gLyogVHJhY2Vwb2ludC1yZWxhdGVkIG9wZXJhdGlvbnMuICAqLwotIAot ICNkZWZpbmUgdGFyZ2V0X3RyYWNlX2luaXQoKSBcCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjgzZmFhZjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCi1AQCAtMCwwICsxLDQ1NyBAQAotKwkuZmls ZQkieDg2XzY0LXZsYS1wb2ludGVyLmMiCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHBy b2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJv Z2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2Jp dHMKLSsuTGRlYnVnX2xpbmUwOgotKwkudGV4dAotKy5MdGV4dDA6Ci0rLmdsb2JsIGZvbwotKwku dHlwZQlmb28sIEBmdW5jdGlvbgotK2ZvbzoKLSsuTEZCMjoKLSsJLmZpbGUgMSAieDg2XzY0LXZs YS1wb2ludGVyLmMiCi0rCS5sb2MgMSAyMiAwCi0rCXB1c2hxCSVyYnAKLSsuTENGSTA6Ci0rCW1v dnEJJXJzcCwgJXJicAotKy5MQ0ZJMToKLSsJc3VicQkkNjQsICVyc3AKLSsuTENGSTI6Ci0rCW1v dmwJJWVkaSwgLTM2KCVyYnApCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJJXJzcCwgJXJheAotKwlt b3ZxCSVyYXgsIC00OCglcmJwKQotKwkubG9jIDEgMjMgMAotKwltb3ZsCS0zNiglcmJwKSwgJWVk eAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCXN1YnEJJDEsICVyYXgKLSsJbW92cQklcmF4LCAtMjQo JXJicCkKLSsJLmxvYyAxIDI0IDAKLSsJbW92c2xxCSVlZHgsJXJheAotKwlhZGRxCSQxNSwgJXJh eAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJ c3VicQklcmF4LCAlcnNwCi0rCW1vdnEJJXJzcCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVyYnAp LCAlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwgJXJh eAotKwltb3ZxCSVyYXgsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwltb3Zx CSVyYXgsIC0xNiglcmJwKQotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQwLCAtNCglcmJwKQotKwlq bXAJLkwyCi0rLkwzOgotKwkubG9jIDEgMjggMAotKwltb3ZsCS00KCVyYnApLCAlZXNpCi0rCW1v dmwJLTQoJXJicCksICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0rCW1vdnEJLTE2KCVyYnApLCAl cmR4Ci0rCW1vdnNscQklZXNpLCVyYXgKLSsJbW92YgklY2wsICglcmR4LCVyYXgpCi0rCS5sb2Mg MSAyNyAwCi0rCWFkZGwJJDEsIC00KCVyYnApCi0rLkwyOgotKwltb3ZsCS00KCVyYnApLCAlZWF4 Ci0rCWNtcGwJLTM2KCVyYnApLCAlZWF4Ci0rCWpsCS5MMwotKwkubG9jIDEgMzAgMAotKwkuZ2xv YmwJYnJlYWtfaGVyZQotK2JyZWFrX2hlcmU6Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmF4Ci0rCW1v dmIJJDAsICglcmF4KQotKwltb3ZxCS00OCglcmJwKSwgJXJzcAotKwkubG9jIDEgMzEgMAotKwls ZWF2ZQotKwlyZXQKLSsuTEZFMjoKLSsJLnNpemUJZm9vLCAuLWZvbwotKwkuc2VjdGlvbgkuZGVi dWdfZnJhbWUsIiIsQHByb2diaXRzCi0rLkxmcmFtZTA6Ci0rCS5sb25nCS5MRUNJRTAtLkxTQ0lF MAotKy5MU0NJRTA6Ci0rCS5sb25nCTB4ZmZmZmZmZmYKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJ IiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLmJ5dGUJ MHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxl YjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUwOgotKy5MU0ZERTA6Ci0rCS5sb25nCS5MRUZE RTAtLkxBU0ZERTAKLSsuTEFTRkRFMDoKLSsJLmxvbmcJLkxmcmFtZTAKLSsJLnF1YWQJLkxGQjIK LSsJLnF1YWQJLkxGRTItLkxGQjIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgot KwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4 MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVs ZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMDoKLSsJLnNlY3Rpb24JLmVoX2ZyYW1lLCJh IixAcHJvZ2JpdHMKLSsuTGZyYW1lMToKLSsJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCi0rLkxTQ0lF MToKLSsJLmxvbmcJMHgwCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJ6UiIKLSsJLnVsZWIxMjgg MHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLnVsZWIxMjggMHgxCi0rCS5ieXRl CTB4MwotKwkuYnl0ZQkweGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0 ZQkweDkwCi0rCS51bGViMTI4IDB4MQotKwkuYWxpZ24gOAotKy5MRUNJRTE6Ci0rLkxTRkRFMToK LSsJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQotKy5MQVNGREUxOgotKwkubG9uZwkuTEFTRkRFMS0u TGZyYW1lMQotKwkubG9uZwkuTEZCMgotKwkubG9uZwkuTEZFMi0uTEZCMgotKwkudWxlYjEyOCAw eDAKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVs ZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJ LmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGln biA4Ci0rLkxFRkRFMToKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xv YywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgotKwkucXVhZAkuTEZCMi0u THRleHQwCi0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3 NwotKwkuc2xlYjEyOCA4Ci0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMS0u THRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCAxNgotKwkucXVh ZAkuTENGSTEtLkx0ZXh0MAotKwkucXVhZAkuTEZFMi0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJ LmJ5dGUJMHg3NgotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0rCS5z ZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxkZWJ1Z19yZWxhdGl2ZToKLSsJLmxvbmcJLkxkZWJ1Z19l bmQgLSAuTGRlYnVnX3N0YXJ0Ci0rLkxkZWJ1Z19zdGFydDoKLSsJLnZhbHVlCTB4MgotKwkubG9u ZwkuTGRlYnVnX2FiYnJldjAKLSsJLmJ5dGUJMHg4Ci0rCS51bGViMTI4IDB4MQotKwkubG9uZwku TEFTRjIKLSsJLmJ5dGUJMHgxCi0rCS5sb25nCS5MQVNGMwotKwkubG9uZwkuTEFTRjQKLSsJLnF1 YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MAotKwkubG9uZwkuTGRlYnVnX2xpbmUwCi0rCS51 bGViMTI4IDB4MgotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwkiZm9vIgotKwkuYnl0ZQkweDEKLSsJ LmJ5dGUJMHgxNgotKwkuYnl0ZQkweDEKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxGRTIKLSsJ LmxvbmcJLkxMU1QwCi0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0rCS51 bGViMTI4IDB4MwotKwkubG9uZwkuTEFTRjUKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTUKLSsJ LmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmJ5dGUJMHgyCi0rCS5ieXRl CTB4OTEKLSsJLnNsZWIxMjggLTUyCi0rLkx0YWdfcG9pbnRlcjoKLSsJLnVsZWIxMjggMHg0Ci0r CS5ieXRlCTB4OAkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlw ZSAtIC5kZWJ1Z19pbmZvCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjggMHg1CS8qIEFiYnJl diBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmxvbmcJLkxBU0YwCi0rCS5ieXRl CTB4MQotKwkuYnl0ZQkweDE4Ci0rI2lmIDEKLSsJLmxvbmcJLkx0YWdfcG9pbnRlciAtIC5kZWJ1 Z19pbmZvCi0rI2Vsc2UKLSsJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5cGVkZWYgaW5k aXJlY3Rpb24uICAqLwotKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KLSsj ZW5kaWYKLSsJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLwotKwku Ynl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMzIKLSsjaWYgMAotKwkuYnl0ZQkw eDYJLyogRFdfT1BfZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAq LwotKyNlbmRpZgotKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwot KwkudWxlYjEyOCAweDYKLSsJLnN0cmluZwkiaSIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTkK LSsJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmJ5dGUJMHgyCi0rCS5i eXRlCTB4OTEKLSsJLnNsZWIxMjggLTIwCi0rCS5ieXRlCTB4MAotKy5MdHlwZV9pbnQ6Ci0rCS51 bGViMTI4IDB4NwotKwkuYnl0ZQkweDQKLSsJLmJ5dGUJMHg1Ci0rCS5zdHJpbmcJImludCIKLSsu THRhZ19hcnJheV90eXBlOgotKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdf VEFHX2FycmF5X3R5cGUpICovCi0rCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2 ZQotKwkubG9uZwkuTHR5cGVfdWxvbmcgLSAuTGRlYnVnX3JlbGF0aXZlCS8qIERXX0FUX3NpYmxp bmc6IERXX0ZPUk1fcmVmNCAqLwotKzE6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1f YmxvY2sxOiBzdGFydCAqLwotKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0aCAqLwotKzM6Ci0rCS5i eXRlCTB4OTcJLyogRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLwotKyNpZiAxCi0rCS5ieXRl CTB4NgkvKiBEV19PUF9kZXJlZiAqLwotKyNlbHNlCi0rCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9w ICovCi0rI2VuZGlmCi0rMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6 IGVuZCAqLwotKwkudWxlYjEyOCAweDkKLSsJLmxvbmcJLkx0eXBlX2NoYXIgLSAuTGRlYnVnX3Jl bGF0aXZlCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkweDMKLSsJLmJ5 dGUJMHg5MQotKwkuc2xlYjEyOCAtNDAKLSsJLmJ5dGUJMHg2Ci0rCS5ieXRlCTB4MAotKy5MdHlw ZV91bG9uZzoKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4OAotKwkuYnl0ZQkweDcKLSsuTHR5 cGVfY2hhcjoKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDYKLSsJLmxv bmcJLkxBU0YxCi0rCS5ieXRlCTB4MAotKy5MZGVidWdfZW5kOgotKwkuc2VjdGlvbgkuZGVidWdf YWJicmV2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDExCi0rCS5ieXRlCTB4MQotKwku dWxlYjEyOCAweDI1Ci0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4 IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MWIKLSsJ LnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4 IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTAKLSsJLnVsZWIxMjggMHg2Ci0r CS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4MmUK LSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4M2YKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4 IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNwotKwkudWxlYjEy OCAweGMKLSsJLnVsZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMgot KwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHg0MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIx MjggMHgxCi0rCS51bGViMTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxl YjEyOCAweDMKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJ LnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4 IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwot KwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHg0CS8qIC5MdGFnX3BvaW50ZXIgYWJicmV2ICovCi0rCS51bGViMTI4IDB4 MGYJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgw YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS5i eXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg1Ci0rCS51bGViMTI4IDB4MzQKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgz YQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVs ZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAw eGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIxMjgg MHgzNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4OAotKwkudWxl YjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4 YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51 bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NwotKwku dWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhi Ci0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxl YjEyOCAweDgKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDgJLyogQWJi cmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS51bGViMTI4IDB4MQotKwku Ynl0ZQkweDEKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4 MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MQkvKiBEV19BVF9zaWJsaW5nICov Ci0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4NTAJLyog RFdfQVRfZGF0YV9sb2NhdGlvbiAqLwotKwkudWxlYjEyOCAweGEJLyogRFdfRk9STV9ibG9jazEg Ki8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDkKLSsJLnVsZWIxMjgg MHgyMQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51 bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MmYKLSsJLnVsZWIx MjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS51bGVi MTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwku dWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJvZ2JpdHMKLSsJLmxv bmcJMHgxNgotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJLmxvbmcJMHhh OAotKwkubG9uZwkweDJkCi0rCS5zdHJpbmcJImZvbyIKLSsJLmxvbmcJMHgwCi0rCS5zZWN0aW9u CS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJjCi0rCS52YWx1ZQkweDIK LSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHgwCi0rCS52YWx1 ZQkweDAKLSsJLnZhbHVlCTB4MAotKwkucXVhZAkuTHRleHQwCi0rCS5xdWFkCS5MZXRleHQwLS5M dGV4dDAKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfc3RyLCJN UyIsQHByb2diaXRzLDEKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImFycmF5IgotKy5MQVNGNToKLSsJ LnN0cmluZwkic2l6ZSIKLSsuTEFTRjM6Ci0rCS5zdHJpbmcJIng4Nl82NC12bGEtcG9pbnRlci5j IgotKy5MQVNGNjoKLSsJLnN0cmluZwkiYXJyYXlfdCIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJImNo YXIiCi0rLkxBU0Y0OgotKwkuc3RyaW5nCSJnZGIuYXJjaCIKLSsuTEFTRjI6Ci0rCS5zdHJpbmcJ IkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuaWRlbnQJIkdDQzog KEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0rCS5zZWN0aW9uCS5ub3Rl LkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtcG9pbnRlci5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmZlMmM4 ZjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS1wb2ludGVyLmMKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KLSsKLSsjaWYgMAotKwotK3ZvaWQKLStmb28gKGludCBzaXplKQotK3sKLSsg IHR5cGVkZWYgY2hhciBhcnJheV90W3NpemVdOwotKyAgYXJyYXlfdCBhcnJheTsKLSsgIGludCBp OwotKwotKyAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKLSsgICAgYXJyYXlbaV0gPSBpOwot KwotKyAgYXJyYXlbMF0gPSAwOwkvKiBicmVhay1oZXJlICovCi0rfQotKwotKyNlbHNlCi0rCi0r aW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0 dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQy NDNjZjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLmV4cAotQEAgLTAsMCArMSw2NiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgotKwotK2lmICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKLSsgICAgdmVyYm9z ZSAiU2tpcHBpbmcgb3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwIHRlc3QgbWFk ZSBvbmx5IGZvciB4ODZfNjQuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlIHg4 Nl82NC12bGEtcG9pbnRlcgotK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCi0rc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KLStzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9LWZvby5vCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj YXNtZmlsZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICB1bnRl c3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30K LStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jp bm9iamZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsg ICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYgIVtydW50b19tYWlu XSB7Ci0rICAgIHVudGVzdGVkIHg4Nl82NC12bGEtcG9pbnRlcgotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUg PSBjaGFyIFxcKFxcKlxcKVxcXFt2YXJpYWJsZVxcXF0iICJmaXJzdDogd2hhdGlzIGFycmF5Igot K2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFsyNlxcXF0i ICJmaXJzdDogcHR5cGUgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBl ID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyAqYXJyYXkiCi0rZ2RiX3Rlc3QgInB0 eXBlICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgKmFycmF5 IgotKwotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAw MSciCi0rZ2RiX3Rlc3QgInAgKCphcnJheSlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAy JyIKLStnZGJfdGVzdCAicCAoKmFycmF5KVxbM1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMn IgotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFs0XF0iICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCci Ci0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rl c3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFt2YXJpYWJsZVxcXF0i ICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0g Y2hhciBcXChcXCpcXClcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLSsKLStnZGJf dGVzdCAid2hhdGlzICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdo YXRpcyAqYXJyYXkiCi0rZ2RiX3Rlc3QgInB0eXBlICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3 OFxcXF0iICJzZWNvbmQ6IHB0eXBlICphcnJheSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS10eXBlZGVmLWZvby5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uNjZmN2EzOQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMKLUBAIC0wLDAgKzEsNDU1IEBACi0rCS5maWxl CSJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIKLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJv Z2JpdHMKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9n Yml0cwotKy5MZGVidWdfaW5mbzA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19saW5lLCIiLEBwcm9nYml0 cwotKy5MZGVidWdfbGluZTA6Ci0rCS50ZXh0Ci0rLkx0ZXh0MDoKLSsuZ2xvYmwgZm9vCi0rCS50 eXBlCWZvbywgQGZ1bmN0aW9uCi0rZm9vOgotKy5MRkIyOgotKwkuZmlsZSAxICJ4ODZfNjQtdmxh LXR5cGVkZWYuYyIKLSsJLmxvYyAxIDIyIDAKLSsJcHVzaHEJJXJicAotKy5MQ0ZJMDoKLSsJbW92 cQklcnNwLCAlcmJwCi0rLkxDRkkxOgotKwlzdWJxCSQ2NCwgJXJzcAotKy5MQ0ZJMjoKLSsJbW92 bAklZWRpLCAtMzYoJXJicCkKLSsJLmxvYyAxIDIyIDAKLSsJbW92cQklcnNwLCAlcmF4Ci0rCW1v dnEJJXJheCwgLTQ4KCVyYnApCi0rCS5sb2MgMSAyMyAwCi0rCW1vdmwJLTM2KCVyYnApLCAlZWR4 Ci0rCW1vdnNscQklZWR4LCVyYXgKLSsJc3VicQkkMSwgJXJheAotKwltb3ZxCSVyYXgsIC0yNCgl cmJwKQotKwkubG9jIDEgMjQgMAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4 Ci0rCWFkZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwgJXJheAotKwlz dWJxCSVyYXgsICVyc3AKLSsJbW92cQklcnNwLCAtNTYoJXJicCkKLSsJbW92cQktNTYoJXJicCks ICVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJc2hycQkkNCwgJXJheAotKwlzYWxxCSQ0LCAlcmF4 Ci0rCW1vdnEJJXJheCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVyYnApLCAlcmF4Ci0rCW1vdnEJ JXJheCwgLTE2KCVyYnApCi0rCS5sb2MgMSAyNyAwCi0rCW1vdmwJJDAsIC00KCVyYnApCi0rCWpt cAkuTDIKLSsuTDM6Ci0rCS5sb2MgMSAyOCAwCi0rCW1vdmwJLTQoJXJicCksICVlc2kKLSsJbW92 bAktNCglcmJwKSwgJWVheAotKwltb3ZsCSVlYXgsICVlY3gKLSsJbW92cQktMTYoJXJicCksICVy ZHgKLSsJbW92c2xxCSVlc2ksJXJheAotKwltb3ZiCSVjbCwgKCVyZHgsJXJheCkKLSsJLmxvYyAx IDI3IDAKLSsJYWRkbAkkMSwgLTQoJXJicCkKLSsuTDI6Ci0rCW1vdmwJLTQoJXJicCksICVlYXgK LSsJY21wbAktMzYoJXJicCksICVlYXgKLSsJamwJLkwzCi0rCS5sb2MgMSAzMCAwCi0rCS5nbG9i bAlicmVha19oZXJlCi0rYnJlYWtfaGVyZToKLSsJbW92cQktMTYoJXJicCksICVyYXgKLSsJbW92 YgkkMCwgKCVyYXgpCi0rCW1vdnEJLTQ4KCVyYnApLCAlcnNwCi0rCS5sb2MgMSAzMSAwCi0rCWxl YXZlCi0rCXJldAotKy5MRkUyOgotKwkuc2l6ZQlmb28sIC4tZm9vCi0rCS5zZWN0aW9uCS5kZWJ1 Z19mcmFtZSwiIixAcHJvZ2JpdHMKLSsuTGZyYW1lMDoKLSsJLmxvbmcJLkxFQ0lFMC0uTFNDSUUw Ci0rLkxTQ0lFMDoKLSsJLmxvbmcJMHhmZmZmZmZmZgotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwki IgotKwkudWxlYjEyOCAweDEKLSsJLnNsZWIxMjggLTgKLSsJLmJ5dGUJMHgxMAotKwkuYnl0ZQkw eGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDkwCi0rCS51bGVi MTI4IDB4MQotKwkuYWxpZ24gOAotKy5MRUNJRTA6Ci0rLkxTRkRFMDoKLSsJLmxvbmcJLkxFRkRF MC0uTEFTRkRFMAotKy5MQVNGREUwOgotKwkubG9uZwkuTGZyYW1lMAotKwkucXVhZAkuTEZCMgot KwkucXVhZAkuTEZFMi0uTEZCMgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkwLS5MRkIyCi0r CS5ieXRlCTB4ZQotKwkudWxlYjEyOCAweDEwCi0rCS5ieXRlCTB4ODYKLSsJLnVsZWIxMjggMHgy Ci0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTEtLkxDRkkwCi0rCS5ieXRlCTB4ZAotKwkudWxl YjEyOCAweDYKLSsJLmFsaWduIDgKLSsuTEVGREUwOgotKwkuc2VjdGlvbgkuZWhfZnJhbWUsImEi LEBwcm9nYml0cwotKy5MZnJhbWUxOgotKwkubG9uZwkuTEVDSUUxLS5MU0NJRTEKLSsuTFNDSUUx OgotKwkubG9uZwkweDAKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJInpSIgotKwkudWxlYjEyOCAw eDEKLSsJLnNsZWIxMjggLTgKLSsJLmJ5dGUJMHgxMAotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJ MHgzCi0rCS5ieXRlCTB4YwotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRl CTB4OTAKLSsJLnVsZWIxMjggMHgxCi0rCS5hbGlnbiA4Ci0rLkxFQ0lFMToKLSsuTFNGREUxOgot KwkubG9uZwkuTEVGREUxLS5MQVNGREUxCi0rLkxBU0ZERTE6Ci0rCS5sb25nCS5MQVNGREUxLS5M ZnJhbWUxCi0rCS5sb25nCS5MRkIyCi0rCS5sb25nCS5MRkUyLS5MRkIyCi0rCS51bGViMTI4IDB4 MAotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkwLS5MRkIyCi0rCS5ieXRlCTB4ZQotKwkudWxl YjEyOCAweDEwCi0rCS5ieXRlCTB4ODYKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAotKwku bG9uZwkuTENGSTEtLkxDRkkwCi0rCS5ieXRlCTB4ZAotKwkudWxlYjEyOCAweDYKLSsJLmFsaWdu IDgKLSsuTEVGREUxOgotKwkudGV4dAotKy5MZXRleHQwOgotKwkuc2VjdGlvbgkuZGVidWdfbG9j LCIiLEBwcm9nYml0cwotKy5MZGVidWdfbG9jMDoKLSsuTExTVDA6Ci0rCS5xdWFkCS5MRkIyLS5M dGV4dDAKLSsJLnF1YWQJLkxDRkkwLS5MdGV4dDAKLSsJLnZhbHVlCTB4MgotKwkuYnl0ZQkweDc3 Ci0rCS5zbGViMTI4IDgKLSsJLnF1YWQJLkxDRkkwLS5MdGV4dDAKLSsJLnF1YWQJLkxDRkkxLS5M dGV4dDAKLSsJLnZhbHVlCTB4MgotKwkuYnl0ZQkweDc3Ci0rCS5zbGViMTI4IDE2Ci0rCS5xdWFk CS5MQ0ZJMS0uTHRleHQwCi0rCS5xdWFkCS5MRkUyLS5MdGV4dDAKLSsJLnZhbHVlCTB4MgotKwku Ynl0ZQkweDc2Ci0rCS5zbGViMTI4IDE2Ci0rCS5xdWFkCTB4MAotKwkucXVhZAkweDAKLSsJLnNl Y3Rpb24JLmRlYnVnX2luZm8KLSsJLmxvbmcJLkxkZWJ1Z19lbmQgLSAuTGRlYnVnX3N0YXJ0Ci0r LkxkZWJ1Z19zdGFydDoKLSsJLnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2FiYnJldjAKLSsJ LmJ5dGUJMHg4Ci0rCS51bGViMTI4IDB4MQotKwkubG9uZwkuTEFTRjIKLSsJLmJ5dGUJMHgxCi0r CS5sb25nCS5MQVNGMwotKwkubG9uZwkuTEFTRjQKLSsJLnF1YWQJLkx0ZXh0MAotKwkucXVhZAku TGV0ZXh0MAotKwkubG9uZwkuTGRlYnVnX2xpbmUwCi0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkw eDEKLSsJLnN0cmluZwkiZm9vIgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxNgotKwkuYnl0ZQkw eDEKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxGRTIKLSsJLmxvbmcJLkxMU1QwCi0rCS5sb25n CTB4ODMKLSsJLnVsZWIxMjggMHgzCi0rCS5sb25nCS5MQVNGNQotKwkuYnl0ZQkweDEKLSsJLmJ5 dGUJMHgxNQotKwkubG9uZwkweDgzCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGVi MTI4IC01MgotKy5MdGFnX3R5cGVkZWY6Ci0rCS51bGViMTI4IDB4NAotKwkubG9uZwkuTEFTRjYK LSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTcKLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5k ZWJ1Z19pbmZvCi0rCS51bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1IChEV19UQUdfdmFy aWFibGUpICovCi0rCS5sb25nCS5MQVNGMAotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxOAotKyNp ZiAxCi0rCS5sb25nCS5MdGFnX3R5cGVkZWYgLSAuZGVidWdfaW5mbwotKyNlbHNlCi0rCS8qIERl YnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAgKi8KLSsJLmxvbmcJ Lkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCi0rI2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0 aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEK LSsJLnNsZWIxMjggLTMyCi0rI2lmIDAKLSsJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCi0r I2Vsc2UKLSsJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KLSsjZW5kaWYKLSsJLyogRFdfQVRf bG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg2Ci0rCS5zdHJp bmcJImkiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE5Ci0rCS5sb25nCTB4ODMKLSsJLmJ5dGUJ MHgyCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTIwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEy OCAweDcKLSsJLmJ5dGUJMHg0Ci0rCS5ieXRlCTB4NQotKwkuc3RyaW5nCSJpbnQiCi0rLkx0YWdf YXJyYXlfdHlwZToKLSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19h cnJheV90eXBlKSAqLwotKwkubG9uZwkweGEwICsgKDJmIC0gMWYpCS8qIERXX0FUX3R5cGU6IERX X0ZPUk1fcmVmNCAqLwotKwkubG9uZwkweDlkICsgKDJmIC0gMWYpCS8qIERXX0FUX3NpYmxpbmc6 IERXX0ZPUk1fcmVmNCAqLwotKzE6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxv Y2sxOiBzdGFydCAqLwotKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0aCAqLwotKzM6Ci0rCS5ieXRl CTB4OTcJLyogRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLwotKwkuYnl0ZQkweDYJLyogRFdf T1BfZGVyZWYgKi8KLSsyOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTog ZW5kICovCi0rCS51bGViMTI4IDB4OQotKwkubG9uZwkweDlkICsgKDJiIC0gMWIpCS8qIERXX0FU X3R5cGU6IERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwkuc2xl YjEyOCAtNDAKLSsJLmJ5dGUJMHg2Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGEKLSsJLmJ5 dGUJMHg4Ci0rCS5ieXRlCTB4NwotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRl CTB4NgotKwkubG9uZwkuTEFTRjEKLSsJLmJ5dGUJMHgwCi0rLkxkZWJ1Z19lbmQ6Ci0rCS5zZWN0 aW9uCS5kZWJ1Z19hYmJyZXYKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTEKLSsJLmJ5 dGUJMHgxCi0rCS51bGViMTI4IDB4MjUKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MTMK LSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIx MjggMHgxYgotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEK LSsJLnVsZWIxMjggMHgxMgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMAotKwkudWxl YjEyOCAweDYKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDIKLSsJLnVs ZWIxMjggMHgyZQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHgzZgotKwkudWxlYjEyOCAweGMK LSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4OAotKwkudWxlYjEyOCAweDNhCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDI3 Ci0rCS51bGViMTI4IDB4YwotKwkudWxlYjEyOCAweDExCi0rCS51bGViMTI4IDB4MQotKwkudWxl YjEyOCAweDEyCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDQwCi0rCS51bGViMTI4IDB4 NgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJ MHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDUKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxl YjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMHgxNgotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDNhCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5 Ci0rCS51bGViMTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAw eDUKLSsJLnVsZWIxMjggMHgzNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGVi MTI4IDB4ZQotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNi Ci0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVs ZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4NgotKwkudWxlYjEyOCAweDM0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMK LSsJLnVsZWIxMjggMHg4Ci0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgx MwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgw Ci0rCS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkg Ki8KLSsJLnVsZWIxMjggMHgxCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDQ5CS8qIERXX0FU X3R5cGUgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgg MHgxCS8qIERXX0FUX3NpYmxpbmcgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQg Ki8KLSsJLnVsZWIxMjggMHg1MAkvKiBEV19BVF9kYXRhX2xvY2F0aW9uICovCi0rCS51bGViMTI4 IDB4YQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4OQotKwkudWxlYjEyOCAweDIxCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDQ5 CS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KLSsJ LnVsZWIxMjggMHgyZgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweGEKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDI0Ci0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4 M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLmJ5 dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3B1Ym5h bWVzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDE2Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxk ZWJ1Z19pbmZvMAotKwkubG9uZwkweGE4Ci0rCS5sb25nCTB4MmQKLSsJLnN0cmluZwkiZm9vIgot KwkubG9uZwkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCi0rCS5s b25nCTB4MmMKLSsJLnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2luZm8wCi0rCS5ieXRlCTB4 OAotKwkuYnl0ZQkweDAKLSsJLnZhbHVlCTB4MAotKwkudmFsdWUJMHgwCi0rCS5xdWFkCS5MdGV4 dDAKLSsJLnF1YWQJLkxldGV4dDAtLkx0ZXh0MAotKwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0r CS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQotKy5MQVNGMDoKLSsJLnN0cmlu ZwkiYXJyYXkiCi0rLkxBU0Y1OgotKwkuc3RyaW5nCSJzaXplIgotKy5MQVNGMzoKLSsJLnN0cmlu ZwkieDg2XzY0LXZsYS10eXBlZGVmLmMiCi0rLkxBU0Y2OgotKwkuc3RyaW5nCSJhcnJheV90Igot Ky5MQVNGMToKLSsJLnN0cmluZwkiY2hhciIKLSsuTEFTRjQ6Ci0rCS5zdHJpbmcJImdkYi5hcmNo IgotKy5MQVNGMjoKLSsJLnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4z LjItNykiCi0rCS5pZGVudAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMu Mi03KSIKLSsJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uYjgwOWM0ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwotQEAgLTAsMCArMSw0MyBAQAotKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAg Q29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwot KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpZiAwCi0rCi0rdm9pZAot K2ZvbyAoaW50IHNpemUpCi0rewotKyAgdHlwZWRlZiBjaGFyIGFycmF5X3Rbc2l6ZV07Ci0rICBh cnJheV90IGFycmF5OwotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsr KQotKyAgICBhcnJheVtpXSA9IGk7Ci0rCi0rICBhcnJheVswXSA9IDA7CS8qIGJyZWFrLWhlcmUg Ki8KLSt9Ci0rCi0rI2Vsc2UKLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGZvbyAoMjYp OwotKyAgZm9vICg3OCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uYjA1NDExZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCi1AQCAtMCwwICsxLDY0IEBA Ci0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUZXN0IERXX0FUX2RhdGFfbG9jYXRp b24gYWNjZXNzZWQgdGhyb3VnaCBEV19UQUdfdHlwZWRlZiBpbnRlcm1lZGlhdGUuCi0rCi0raWYg IVtpc3RhcmdldCAieDg2XzY0LSotKiJdIHRoZW4gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBv dmVyIGdkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4 Nl82NC4iCi0rICAgIHJldHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUgeDg2XzY0LXZsYS10eXBl ZGVmCi0rc2V0IHNyY2FzbWZpbGUgJHt0ZXN0ZmlsZX0tZm9vLlMKLStzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQot K3NldCBiaW5vYmpmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZm9vLm8KLStp ZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNhc21maWxlfSIgIiR7 Ymlub2JqZmlsZX0iIG9iamVjdCB7fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotK2lmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9ICR7Ymlub2JqZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStn ZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAgdW50 ZXN0ZWQgeDg2XzY0LXZsYS10eXBlZGVmCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJl YWtwb2ludCAiYnJlYWtfaGVyZSIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJl YWtfaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3QiICJm aXJzdDogd2hhdGlzIGFycmF5IgotKwotK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBj aGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgInAgYXJy YXlcWzFcXSIgIlxcJFxbMC05XF0gPSAxICdcXFxcMDAxJyIKLStnZGJfdGVzdCAicCBhcnJheVxb MlxdIiAiXFwkXFswLTlcXSA9IDIgJ1xcXFwwMDInIgotK2dkYl90ZXN0ICJwIGFycmF5XFszXF0i ICJcXCRcWzAtOVxdID0gMyAnXFxcXDAwMyciCi0rZ2RiX3Rlc3QgInAgYXJyYXlcWzRcXSIgIlxc JFxbMC05XF0gPSA0ICdcXFxcMDA0JyIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi YnJlYWtfaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3Qi ICJzZWNvbmQ6IHdoYXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBl ID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2FycmF5aWR4LmMKLWluZGV4IGVjYzMyODkuLmY3OWFkNDAgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YXJyYXlpZHguYwotQEAgLTE3LDYgKzE3LDEzIEBACi0gCi0gaW50IGFycmF5W10gPSB7MSwgMiwg MywgNH07Ci0gCi0rI2lmZGVmIF9fR05VQ19fCi0rc3RydWN0Ci0rICB7Ci0rICAgIGludCBhWzBd OwotKyAgfSB1bmJvdW5kOwotKyNlbmRpZgotKwotIGludAotIG1haW4gKHZvaWQpCi0gewotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLWluZGV4IDBlZjZjNGIuLjMzMGVkODcgMTAwNjQ0 Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLUBAIC01OSw0ICs1OSwxMiBAQCBnZGJfdGVz dCAicHJpbnQgYXJyYXkiIFwKLSAgICAgICAgICAiXFx7XFxcWzBcXFxdID0gMSwgXFxcWzFcXFxd ID0gMiwgXFxcWzJcXFxdID0gMywgXFxcWzNcXFxdID0gNFxcfSIgXAotICAgICAgICAgICJQcmlu dCBhcnJheSB3aXRoIGFycmF5LWluZGV4ZXMgb24iCi0gCi0tCi0rc2V0IHRlc3QgInAgdW5ib3Vu ZC5hID09ICZ1bmJvdW5kLmFcWzBcXSIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7 Ci0rICAgIC1yZSAiID0gMVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAg fQotKyAgICAtcmUgIk5vIHN5bWJvbCBcInVuYm91bmRcIiBpbiBjdXJyZW50IGNvbnRleHQuXHJc biRnZGJfcHJvbXB0ICQiIHsKLSsJdW5zdXBwb3J0ZWQgIiR0ZXN0IChubyBHQ0MpIgotKyAgICB9 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMDRjZTk5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwotQEAgLTAsMCArMSw1NCBAQAotKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAg Q29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwot KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQu aD4KLSsKLSt0eXBlZGVmIGludCAoKmZpbmFsX3QpIChpbnQgYXJnKTsKLSsKLStzdGF0aWMgaW50 Ci0raW5pdF9zdHViIChpbnQgYXJnKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMg aW50Ci0rZmluYWwgKGludCBhcmcpCi0rewotKyAgcmV0dXJuIGFyZyArIDE7Ci0rfQotKwotK3N0 YXRpYyB2b2xhdGlsZSBpbnQgZ251X2lmdW5jX2luaXRpYWxpemVkOwotKwotK3ZvaWQKLStnbnVf aWZ1bmNfcHJlICh2b2lkKQotK3sKLSsgIGFzc2VydCAoIWdudV9pZnVuY19pbml0aWFsaXplZCk7 Ci0rCi0rICBnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQgPSAxOwotK30KLSsKLStmaW5hbF90IGdudV9p ZnVuY1ggKHZvaWQpIGFzbSAoImdudV9pZnVuYyIpOwotK2FzbSAoIi50eXBlIGdudV9pZnVuYywg QGdudV9pbmRpcmVjdF9mdW5jdGlvbiIpOwotKwotK2ZpbmFsX3QKLStnbnVfaWZ1bmNYICh2b2lk KQotK3sKLSsgIGlmICghZ251X2lmdW5jX2luaXRpYWxpemVkKQotKyAgICByZXR1cm4gaW5pdF9z dHViOwotKyAgZWxzZQotKyAgICByZXR1cm4gZmluYWw7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2du dS1pZnVuYy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTRhODIzZAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwot QEAgLTAsMCArMSwzNiBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLStleHRlcm4gaW50IGdudV9pZnVuYyAoaW50IGFy Zyk7Ci0rZXh0ZXJuIHZvaWQgZ251X2lmdW5jX3ByZSAodm9pZCk7Ci0rCi0raW50Ci0rbWFpbiAo dm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGdudV9pZnVuY19wcmUgKCk7Ci0rICAKLSsgIGkg PSBnbnVfaWZ1bmMgKDEpOwkvKiBicmVhay1hdC1jYWxsICovCi0rICBhc3NlcnQgKGkgPT0gMik7 Ci0rCi0rICBnbnVfaWZ1bmMgKDIpOwkvKiBicmVhay1hdC1uZXh0Y2FsbCAqLwotKwotKyAgcmV0 dXJuIDA7CS8qIGJyZWFrLWF0LWV4aXQgKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1 bmMuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNGIzYWM0MQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCi1A QCAtMCwwICsxLDExNSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiB7 W3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0Zmls ZSAiZ251LWlmdW5jIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0rc2V0IGxpYmZpbGUgIiR7dGVzdGZp bGV9LWxpYiIKLStzZXQgbGlic3JjICR7bGliZmlsZX0uYwotK3NldCBsaWJfc28gJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke2xpYmZpbGV9LnNvCi0rCi0rc2V0IGxpYl9ub2RlYnVnX3NvX2Jhc2UgJHts aWJmaWxlfS1ub2RlYnVnLnNvCi0rc2V0IGxpYl9ub2RlYnVnX3NvICR7b2JqZGlyfS8ke3N1YmRp cn0vJHtsaWJfbm9kZWJ1Z19zb19iYXNlfQotKwotKyMge2RlYnVnfSBwcm92aWRlcyBEV0FSRiBz eW1ib2wgZ251X2lmdW5jWCBjb25mdXNpbmcgdGhlIEVMRiBzeW1ib2wKLSsjIGdudV9pZnVuYyBk dXJpbmcgYWRkcmVzcy0+c3ltYm9sIHJlc29sdXRpb24gZm9yIHByaW50aW5nIHRoZSBzeW1ib2wu Ci0rIyBTdGlsbCB3ZSBuZWVkIGl0IGhlcmUgZm9yICJzdGVwInBpbmcgaW50byB0aGUgZnVuY3Rp b24uCi0rc2V0IGxpYl9vcHRzIFtsaXN0IGRlYnVnXQotK3NldCBsaWJfbm9kZWJ1Z19vcHRzIFts aXN0XQotK3NldCBleGVjX29wdHMgW2xpc3QgZGVidWcgc2hsaWI9JGxpYl9zb10KLSsKLStpZiBb Z2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r aWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJf c28gJGxpYl9vcHRzXSAhPSAiIgotKyAgICAgfHwgW2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1 YmRpcn0vJHNyY2ZpbGUgJGJpbmZpbGUgZXhlY3V0YWJsZSAkZXhlY19vcHRzXSAhPSAiIn0gewot KyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUgZWl0aGVyICRsaWJzcmMgb3IgJHNyY2Zp bGUuIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgot KwotK2NsZWFuX3Jlc3RhcnQgJHRlc3RmaWxlCi0rZ2RiX2xvYWRfc2hsaWJzICR7bGliX3NvfQot KwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIGZhaWwgIkNhbid0IHJ1biB0byBtYWlu IgotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rIyBUaGUgImlmIiBjb25kaXRpb24gaXMgYXJ0aWZp Y2FsIHRvIHRlc3QgcmVncmVzc2lvbiBvZiBhIGZvcm1hdCBwYXRjaC4KLStnZGJfYnJlYWtwb2lu dCAiW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LW5leHRjYWxsIl0gaWYgaSAmJiBnbnVf aWZ1bmMgKGkpICE9IDQyIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJicmVhay1hdC1jYWxsIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstYXQt Y2FsbCIgIi4qYnJlYWstYXQtY2FsbC4qIgotKwotKyMgVGVzdCBHREIgd2lsbCBhdXRvbWF0aWNh bGx5IGluZGlyZWN0IHRoZSBjYWxsLgotKwotK2dkYl90ZXN0ICJwIGdudV9pZnVuYyAoMykiICIg PSA0IgotKwotKyMgVGVzdCBHREIgd2lsbCBza2lwIHRoZSBnbnVfaWZ1bmMgcmVzb2x2ZXIgb24g Zmlyc3QgY2FsbC4KLSsKLStnZGJfdGVzdCAic3RlcCIgIlxyXG5maW5hbCAuKiIKLSsKLSsjIFRl c3QgR0RCIHdpbGwgbm90IGJyZWFrIGJlZm9yZSB0aGUgZmluYWwgY2hvc2VuIGltcGxlbWVudGF0 aW9uLgotKwotKyMgQWxzbyB0ZXN0IGEgZm9ybWF0IHBhdGNoIHJlZ3Jlc3Npb246Ci0rIyBDb250 aW51aW5nLgotKyMgRXJyb3IgaW4gdGVzdGluZyBicmVha3BvaW50IGNvbmRpdGlvbjoKLSsjIEF0 dGVtcHQgdG8gdGFrZSBhZGRyZXNzIG9mIHZhbHVlIG5vdCBsb2NhdGVkIGluIG1lbW9yeS4KLSsj IAotKyMgQnJlYWtwb2ludCAyLCBtYWluICgpIGF0IC4vZ2RiLmJhc2UvZ251LWlmdW5jLmM6MzMK LSsKLStnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLlxyXG5cclxuQnJlYWtwb2ludCAu KiAoYXR8aW4pIC4qYnJlYWstYXQtbmV4dGNhbGwuKiIgXAotKwkgImNvbnRpbnVlIHRvIGJyZWFr LWF0LW5leHRjYWxsIgotKwotK2dkYl9icmVha3BvaW50ICJnbnVfaWZ1bmMiCi0rCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5leHRjYWxsIGdudV9pZnVuYyIKLSsKLStnZGJfdGVzdCAi ZnJhbWUiICIjMCArKDB4XFswLTlhLWZcXSsgaW4gKyk/ZmluYWwgXFwoLioiICJuZXh0Y2FsbCBn bnVfaWZ1bmMgc2tpcHBlZCIKLSsKLSsKLSsjIENvbXBhcmUgdGhlIHR3byBkaWZmZXJlbnQgYWRk cmVzc2VzOgotKwotK2dkYl90ZXN0ICJwIGdudV9pZnVuYyIgIiA9IHs8dGV4dCB2YXJpYWJsZSwg bm8gZGVidWcgaW5mbz59IDB4XFswLTlhLWZcXSsgPGZpbmFsPiIgInAgZ251X2lmdW5jIGV4ZWN1 dGluZyIKLStnZGJfdGVzdCAiaW5mbyBzeW0gZ251X2lmdW5jIiAiZmluYWwgaW4gc2VjdGlvbiAu KiIgImluZm8gc3ltIGdudV9pZnVuYyBleGVjdXRpbmciCi0rCi0rc2V0IHRlc3QgImluZm8gYWRk ciBnbnVfaWZ1bmMiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUg IlN5bWJvbCBcImdudV9pZnVuY1wiIGlzIGF0ICgweFxbMC05YS1mXF0rKSBpbiAuKiRnZGJfcHJv bXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0ICJpbmZvIHN5bSAk ZXhwZWN0X291dCgxLHN0cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3lt IDxnbnVfaWZ1bmMtYWRkcmVzcz4iCi0rCi0rIyA8KmdudV9pZnVuYz4gd291bGQgYmUgYW4gaW5j b3JyZWN0IHJlc29sdXRpb24gZnJvbSBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZS4KLSsjIFdlIGRv IG5vdCB1c2Uge2RlYnVnfSBidWlsZCBvcHRpb24gZm9yIHRoaXMgcHVycG9zZS4KLSsKLStpZiB7 IFtnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRsaWJzcmMgJGxpYl9ub2Rl YnVnX3NvICRsaWJfbm9kZWJ1Z19vcHRzXSAhPSAiIn0gewotKyAgICB1bnRlc3RlZCAiQ291bGQg bm90IGNvbXBpbGUgZWl0aGVyICRsaWJzcmMuIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xl YW5fcmVzdGFydCAkbGliX25vZGVidWdfc29fYmFzZQotKwotK2dkYl90ZXN0ICJwIGdudV9pZnVu YyIgIiA9IHs8dGV4dCBnbnUtaWZ1bmMgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAweFxbMC05 YS1mXF0rIDxnbnVfaWZ1bmM+IiAicCBnbnVfaWZ1bmMgbm90IGV4ZWN1dGluZyB3aXRob3V0IGRl YnVnIgotK2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1bmMiICJnbnVfaWZ1bmMgaW4gc2VjdGlv biAuKiIgImluZm8gc3ltIGdudV9pZnVuYyBub3QgZXhlY3V0aW5nIHdpdGhvdXQgZGVidWciCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRk cmVzcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVz cy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWViN2I4NQotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQt YWRkcmVzcy5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCi0rCi0rc3RydWN0IHsKLSsgIGludCBmaWVsZDsKLSt9IHN0YXRpY3N0cnVjdCA9 IHsgMSB9OwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFy LWZpZWxkLWFkZHJlc3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXIt ZmllbGQtYWRkcmVzcy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42 ZDgyZTczCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVy bmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAotQEAgLTAsMCArMSwyNiBAQAotKyMgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0IGludGVybmFsLXZhci1maWVsZC1hZGRyZXNzCi0r c2V0IGJpbmZpbGUgJHt0ZXN0fS54Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7dGVzdH0uYyIgIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHtiaW5maWxlfSIgb2JqZWN0 IHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0 IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRiaW5maWxl Ci0rCi0rZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQotK2dkYl90ZXN0 IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLW92ZXJmbG93LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVy Zmxvdy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzVkNWVlMAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwot QEAgLTAsMCArMSwzMCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAq KmFyZ3YpCi0rewotKyAgaW50IGFycmF5W2FyZ2NdOwotKwotKyAgYXJyYXlbMF0gPSBhcnJheVsw XTsKLSsKLSsgIGFib3J0ICgpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLW92ZXJmbG93LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjcyMDNhNDgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLW92ZXJmbG93LmV4cAotQEAgLTAsMCArMSwxMDggQEAKLSsjIENvcHlyaWdodCAyMDA4IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLSsjIFdlIGNvdWxkIGNyYXNoIGluOgotKyMgIzAgIGJsb2NrX2xpbmthZ2VfZnVu Y3Rpb24gKGJsPTB4MCkgYXQgLi4vLi4vZ2RiL2Jsb2NrLmM6NjkKLSsjICMxICBpbiBkd2FyZl9i bG9ja19nZXRfZnJhbWVfYmFzZSAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzo5Nwot KyMgICA5NwkgIGZyYW1lZnVuYyA9IGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGdldF9mcmFtZV9i bG9jayAoZnJhbWUsIE5VTEwpKTsKLSsjICMyICBpbiBleGVjdXRlX3N0YWNrX29wICguLi4pIGF0 IC4uLy4uL2dkYi9kd2FyZjJleHByLmM6NDk2Ci0rIyAjMyAgaW4gZHdhcmZfYmxvY2tfZXhlY19j b3JlICgpIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjE1NgotKyMgIzQgIGR3YXJmX2Jsb2Nr X2V4ZWMgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6MjA2Ci0rIyAjNSAgaW4gcmFu Z2VfdHlwZV9jb3VudF9ib3VuZF9pbnRlcm5hbCAoLi4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMu YzoxNDMwCi0rIyAjNiAgaW4gY3JlYXRlX2FycmF5X3R5cGUgKC4uLikgYXQgLi4vLi4vZ2RiL2dk YnR5cGVzLmM6ODQwCi0rIyAuLi4KLSsjICMyMSBpbiBwc3ltdGFiX3RvX3N5bXRhYiAoLi4uKSBh dCAuLi8uLi9nZGIvc3ltZmlsZS5jOjI5MgotKyMgLi4uCi0rIyAjMjkgaW4gYmFja3RyYWNlX2Nv bW1hbmRfMSAoKSBhdCAuLi8uLi9nZGIvc3RhY2suYzoxMjczCi0rCi0rc2V0IHRlc3RmaWxlIHZs YS1vdmVyZmxvdwotK3NldCBzaGZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1n ZGIuc2gKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAi IiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IGYgW29wZW4gInxnZXRjb25mIFBBR0VTSVpFIiAiciJd Ci0rZ2V0cyAkZiBwYWdlc2l6ZQotK2Nsb3NlICRmCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQK LStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZp bGV9Ci0rCi0rc2V0IHBpZF9vZl9nZGIgW2V4cF9waWQgLWkgW2JvYXJkX2luZm8gaG9zdCBmaWxl aWRdXQotKwotK2lmIHsgW3J1bnRvX21haW5dIDwgMCB9IHsKLSsgICAgdW50ZXN0ZWQgdmxhLW92 ZXJmbG93Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEdldCB0aGUgR0RCIG1lbW9yeSBzaXpl IHdoZW4gd2Ugc3RheSBhdCBtYWluLgotKwotK3Byb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsK LSsgICAgZ2xvYmFsIHBpZF9vZl9nZGIgcGFnZXNpemUKLSsgICAgc2V0IGZkIFtvcGVuICIvcHJv Yy8kcGlkX29mX2dkYi9zdGF0bSJdCi0rICAgIGdldHMgJGZkIGxpbmUKLSsgICAgY2xvc2UgJGZk Ci0rICAgICMgbnVtYmVyIG9mIHBhZ2VzIG9mIHZpcnR1YWwgbWVtb3J5Ci0rICAgIHNjYW4gJGxp bmUgIiVkIiBkcnMKLSsgICAgcmV0dXJuICRkcnMKLSt9Ci0rCi0rc2V0IHBhZ2VzX2ZvdW5kIFtt ZW1vcnlfdl9wYWdlc19nZXRdCi0rCi0rc2V0IG1iX3Jlc2VydmUgMTAKLSt2ZXJib3NlIC1sb2cg InBhZ2VzX2ZvdW5kID0gJHBhZ2VzX2ZvdW5kLCBtYl9yZXNlcnZlID0gJG1iX3Jlc2VydmUiCi0r c2V0IGtiX2ZvdW5kIFtleHByICRwYWdlc19mb3VuZCAqICRwYWdlc2l6ZSAvIDEwMjRdCi0rc2V0 IGtiX3Blcm1pdCBbZXhwciAka2JfZm91bmQgKyAxICogMTAyNCArICRtYl9yZXNlcnZlICogMTAy NF0KLSt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kID0gJGtiX2ZvdW5kLCBrYl9wZXJtaXQgPSAka2Jf cGVybWl0IgotKwotKyMgQ3JlYXRlIHRoZSB1bGltaXQgd3JhcHBlci4KLStzZXQgZiBbb3BlbiAk c2hmaWxlICJ3Il0KLStwdXRzICRmICIjISAvYmluL3NoIgotK3B1dHMgJGYgInVsaW1pdCAtdiAk a2JfcGVybWl0IgotK3B1dHMgJGYgImV4ZWMgJEdEQiBcIlwkQFwiIgotK2Nsb3NlICRmCi0rcmVt b3RlX2V4ZWMgaG9zdCAiY2htb2QgK3ggJHNoZmlsZSIKLSsKLStnZGJfZXhpdAotK3NldCBHREJv bGQgJEdEQgotK3NldCBHREIgIiRzaGZpbGUiCi0rZ2RiX3N0YXJ0Ci0rc2V0IEdEQiAkR0RCb2xk Ci0rCi0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHti aW5maWxlfQotKwotK3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3Qg ZmlsZWlkXV0KLSsKLSsjIENoZWNrIHRoZSBzaXplIGFnYWluIGFmdGVyIHRoZSBzZWNvbmQgcnVu LgotKyMgV2UgbXVzdCBub3Qgc3RvcCBpbiBtYWluIGFzIGl0IHdvdWxkIGNhY2hlIGBhcnJheScg YW5kIG5ldmVyIGNyYXNoIGxhdGVyLgotKwotK2dkYl9ydW5fY21kCi0rCi0rdmVyYm9zZSAtbG9n ICJrYl9mb3VuZCBiZWZvcmUgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICog JHBhZ2VzaXplIC8gMTAyNF0iCi0rCi0rZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVjZWl2ZWQgc2ln bmFsIFNJR0FCUlQsIEFib3J0ZWQuLioiICJFbnRlciBhYm9ydCgpIgotKwotK3ZlcmJvc2UgLWxv ZyAia2JfZm91bmQgaW4gYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBh Z2VzaXplIC8gMTAyNF0iCi0rCi0rIyBgYWJvcnQnIGNhbiBnZXQgZXhwcmVzc2VkIGFzIGAqX19H SV9hYm9ydCcuCi0rZ2RiX3Rlc3QgImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4g XFwoLioiICJCYWNrdHJhY2UgYWZ0ZXIgYWJvcnQoKSIKLSsKLSt2ZXJib3NlIC1sb2cgImtiX2Zv dW5kIGluIGJ0IGFmdGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRw YWdlc2l6ZSAvIDEwMjRdIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uZTFmM2VkMQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEuYwotQEAgLTAsMCArMSw1NSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDggRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSt2b2lkCi0rbWFy a2VyICh2b2lkKQotK3sKLSt9Ci0rCi0rdm9pZAotK2JhciAoY2hhciAqYSwgY2hhciAqYiwgY2hh ciAqYywgaW50IHNpemUpCi0rewotKyAgbWVtc2V0IChhLCAnMScsIHNpemUpOwotKyAgbWVtc2V0 IChiLCAnMicsIHNpemUpOwotKyAgbWVtc2V0IChjLCAnMycsIDQ4KTsKLSt9Ci0rCi0rdm9pZAot K2ZvbyAoaW50IHNpemUpCi0rewotKyAgY2hhciB0ZW1wMVtzaXplXTsKLSsgIGNoYXIgdGVtcDNb NDhdOwotKwotKyAgdGVtcDFbc2l6ZSAtIDFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1w MltzaXplXTsKLSsKLSsgICAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCBzaXplKTsKLSsKLSsg ICAgbWFya2VyICgpOwkvKiBicmVhay1oZXJlICovCi0rICB9Ci0rfQotKwotK2ludAotK21haW4g KHZvaWQpCi0rewotKyAgZm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30K LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3ZsYS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li41ZGE3Mzc4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS5leHAKLUBAIC0wLDAgKzEsNjIgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStz ZXQgdGVzdGZpbGUgdmxhCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2Rl YnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJv Z3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQot KwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB2bGEKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJl Il0KLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStnZGJf dGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0 OiB3aGF0aXMgdGVtcDEiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMiIgInR5cGUgPSBjaGFyIFxc XFt2YXJpYWJsZVxcXF0iICJmaXJzdDogd2hhdGlzIHRlbXAyIgotK2dkYl90ZXN0ICJ3aGF0aXMg dGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMyIKLSsK LStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6 IHB0eXBlIHRlbXAxIgotK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFsy NlxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDIiCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlw ZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVzdCAi cCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyAyNiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDEi Ci0rZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAnMicgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6 IHByaW50IHRlbXAyIgotK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRp bWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMyIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiYnJlYWstaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIg XFxcW3ZhcmlhYmxlXFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0ICJ3aGF0 aXMgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMg dGVtcDIiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0i ICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0eXBl ID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMSIKLStnZGJfdGVzdCAicHR5 cGUgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMiIK LStnZGJfdGVzdCAicHR5cGUgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAic2Vjb25k OiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyA3 OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAxIgotK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0g JzInIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDIiCi0rZ2RiX3Rlc3Qg InAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1w MyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9NYWtlZmlsZS5pbiBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL01ha2VmaWxlLmluCi1pbmRleCBkNzgyNThlLi4xNzc0MjQ0IDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvTWFrZWZpbGUuaW4KLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL01ha2VmaWxlLmluCi1AQCAtNCw3ICs0LDcgQEAgc3JjZGlyID0gQHNyY2Rp ckAKLSBFWEVDVVRBQkxFUyA9IGFtYmlndW91cyBhbm5vdGEyIGFub24tdW5pb24gY3BsdXNmdW5j cyBjdHRpYWRkIFwKLSAJZGVyaXZhdGlvbiBpbmhlcml0IGxvY2FsIG1lbWJlci1wdHIgbWV0aG9k IG1pc2MgXAotICAgICAgICAgb3ZlcmxvYWQgb3ZsZGJyZWFrIHJlZi10eXAgcmVmLXR5cDIgdGVt cGxhdGVzIHVzZXJkZWYgdmlydGZ1bmMgbmFtZXNwYWNlIFwKLS0JcmVmLXR5cGVzIHJlZi1wYXJh bXMgbWV0aG9kMiBwcjk1OTQgZ2RiMjQ5NSB2aXJ0ZnVuYzIgcHI5MDY3IFwKLSsJcmVmLXR5cGVz IHJlZi1wYXJhbXMgbWV0aG9kMiBwcjk1OTQgZ2RiMjQ5NSBnZGI5NTkzIHZpcnRmdW5jMiBwcjkw NjcgXAotIAlwcjEwNzIKLSAKLSBhbGwgaW5mbyBpbnN0YWxsLWluZm8gZHZpIGluc3RhbGwgdW5p bnN0YWxsIGluc3RhbGxjaGVjayBjaGVjazoKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9jcC1yZWxvY2F0ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxvY2F0ZS5l eHAKLWluZGV4IGY4MWEyMTIuLjMwZDM2MmEgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9jcC1yZWxvY2F0ZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9j YXRlLmV4cAotQEAgLTMwLDcgKzMwLDcgQEAgcHJvYyBnZXRfZnVuY19hZGRyZXNzIHsgZnVuYyB9 IHsKLSAgICAgZ2xvYmFsIGdkYl9wcm9tcHQgaGV4Ci0gCi0gICAgIHNldCByZnVuYyBbc3RyaW5n X3RvX3JlZ2V4cCAkZnVuY10KLS0gICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICcke2Z1bmN9 JyIgImdldCBhZGRyZXNzIG9mICR7ZnVuY30iIHsKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInBy aW50ICR7ZnVuY30iICJnZXQgYWRkcmVzcyBvZiAke2Z1bmN9IiB7Ci0gCS1yZSAiXFxcJFxbMC05 XF0rID0gXFx7LipcXH0gKDB8KCRoZXgpIDwke3JmdW5jfT4pXFtcclxuXF0rJHtnZGJfcHJvbXB0 fSAkIiB7Ci0gCSAgICAjICQxID0ge2ludCAoKX0gMHgyNCA8ZnVuY3Rpb25fYmFyPgotIAkgICAg IyBCdXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGF0IHplcm8sIHRoZSBuYW1lIG1heSBiZSBvbWl0dGVk LgotQEAgLTEzMCw3ICsxMzAsNyBAQCBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmls ZX0gMCAtcyAke2Z1bmMxX3NlY30gMHgxMDAwMCAtcyAke2Z1bmMyX3NlY30gMAotIAkieSIKLSAK LSAjIE1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYWRkcmVzc2VzIHdlcmUgdXBkYXRlZC4KLS1nZGJf dGVzdCAiYnJlYWsgKickZnVuYzFfbmFtZSciIFwKLStnZGJfdGVzdCAiYnJlYWsgKiRmdW5jMV9u YW1lIiBcCi0gICAgICJCcmVha3BvaW50ICRkZWNpbWFsIGF0IDB4MS4uLi46IGZpbGUgLioiCi0t Z2RiX3Rlc3QgImJyZWFrIConJGZ1bmMyX25hbWUnIiBcCi0rZ2RiX3Rlc3QgImJyZWFrICokZnVu YzJfbmFtZSIgXAotICAgICAiQnJlYWtwb2ludCAkZGVjaW1hbCBhdCAweDIuLi4uOiBmaWxlIC4q IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwZXhwcnMuY2MgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9jcGV4cHJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uMmJjYTRjZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av Y3BleHBycy5jYwotQEAgLTAsMCArMSw0MzEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5LCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIENvbnRyaWJ1dGVkIGJ5 IFJlZCBIYXQsIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBLZWl0aCBTZWl0ei4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgICBQbGVhc2UgZW1haWwgYW55IGJ1 Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKLSsgICBidWct Z2RiQGdudS5vcmcgICovCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxpb3N0 cmVhbT4KLSsKLSsvLyBGb3J3YXJkIGRlY2xzCi0rY2xhc3MgYmFzZTsKLStjbGFzcyBkZXJpdmVk OwotKwotKy8vIEEgc2ltcGxlIHRlbXBsYXRlIHdpdGggc3BlY2lhbGl6YXRpb25zCi0rdGVtcGxh dGUgPHR5cGVuYW1lIFQ+Ci0rY2xhc3MgdGNsYXNzCi0rewotK3B1YmxpYzoKLSsgIHZvaWQgZG9f c29tZXRoaW5nICgpIHsgfSAvLyB0Y2xhc3M8VD46OmRvX3NvbWV0aGluZwotK307Ci0rCi0rdGVt cGxhdGUgPD4KLSt2b2lkIHRjbGFzczxjaGFyPjo6ZG9fc29tZXRoaW5nICgpIHsgfSAvLyB0Y2xh c3M8Y2hhcj46OmRvX3NvbWV0aGluZwotKwotK3RlbXBsYXRlIDw+Ci0rdm9pZCB0Y2xhc3M8aW50 Pjo6ZG9fc29tZXRoaW5nICgpIHsgfSAvLyB0Y2xhc3M8aW50Pjo6ZG9fc29tZXRoaW5nCi0rCi0r dGVtcGxhdGU8PgotK3ZvaWQgdGNsYXNzPGxvbmc+Ojpkb19zb21ldGhpbmcgKCkgeyB9IC8vIHRj bGFzczxsb25nPjo6ZG9fc29tZXRoaW5nCi0rCi0rdGVtcGxhdGU8PgotK3ZvaWQgdGNsYXNzPHNo b3J0Pjo6ZG9fc29tZXRoaW5nICgpIHsgfSAvLyB0Y2xhc3M8c2hvcnQ+Ojpkb19zb21ldGhpbmcK LSsKLSsvLyBBIHNpbXBsZSB0ZW1wbGF0ZSB3aXRoIG11bHRpcGxlIHRlbXBsYXRlIHBhcmFtZXRl cnMKLSt0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQywgY2xhc3MgRCwgY2xhc3Mg RT4KLSt2b2lkIGZsdWJiZXIgKHZvaWQpIC8vIGZsdWJiZXIKLSt7Ci0rICBBIGE7Ci0rICBCIGI7 Ci0rICBDIGM7Ci0rICBEIGQ7Ci0rICBFIGU7Ci0rCi0rICArK2E7Ci0rICArK2I7Ci0rICArK2M7 Ci0rICArK2Q7Ci0rICArK2U7Ci0rfQotKwotKy8vIFNvbWUgY29udHJpdmVkIHBvbGljaWVzCi0r dGVtcGxhdGUgPGNsYXNzIFQ+Ci0rc3RydWN0IG9wZXJhdGlvbl8xCi0rewotKyAgc3RhdGljIHZv aWQgZnVuY3Rpb24gKHZvaWQpIHsgfSAvLyBvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb24KLSt9Owot KwotK3RlbXBsYXRlIDxjbGFzcyBUPgotK3N0cnVjdCBvcGVyYXRpb25fMgotK3sKLSsgIHN0YXRp YyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzI8VD46OmZ1bmN0aW9uCi0r fTsKLSsKLSt0ZW1wbGF0ZSA8Y2xhc3MgVD4KLStzdHJ1Y3Qgb3BlcmF0aW9uXzMKLSt7Ci0rICBz dGF0aWMgdm9pZCBmdW5jdGlvbiAodm9pZCkgeyB9IC8vIG9wZXJhdGlvbl8zPFQ+OjpmdW5jdGlv bgotK307Ci0rCi0rdGVtcGxhdGUgPGNsYXNzIFQ+Ci0rc3RydWN0IG9wZXJhdGlvbl80Ci0rewot KyAgc3RhdGljIHZvaWQgZnVuY3Rpb24gKHZvaWQpIHsgfSAvLyBvcGVyYXRpb25fNDxUPjo6ZnVu Y3Rpb24KLSt9OwotKwotKy8vIEEgcG9saWN5LWJhc2VkIGNsYXNzIHcvIGFuZCB3L28gZGVmYXVs dCBwb2xpY3kKLSt0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotK2NsYXNzIHBvbGlj eSA6IHB1YmxpYyBQb2xpY3kKLSt7Ci0rcHVibGljOgotKyAgcG9saWN5IChUIG9iaikgOiBvYmpf IChvYmopIHsgfSAvLyBwb2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5Ci0rCi0rcHJpdmF0ZToKLSsg IFQgb2JqXzsKLSt9OwotKwotK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3kgPSBvcGVy YXRpb25fMTxUPiA+Ci0rY2xhc3MgcG9saWN5ZCA6IHB1YmxpYyBQb2xpY3kKLSt7Ci0rcHVibGlj OgotKyAgcG9saWN5ZCAoVCBvYmopIDogb2JqXyAob2JqKSB7IH0gLy8gcG9saWN5ZDxULCBQb2xp Y3k+Ojpwb2xpY3lkCi0rICB+cG9saWN5ZCAodm9pZCkgeyB9IC8vIHBvbGljeWQ8VCwgUG9saWN5 Pjo6fnBvbGljeWQKLSsKLStwcml2YXRlOgotKyAgVCBvYmpfOwotK307Ci0rCi0rdHlwZWRlZiBw b2xpY3k8aW50LCBvcGVyYXRpb25fMTx2b2lkKj4gPiBwb2xpY3kxOwotK3R5cGVkZWYgcG9saWN5 PGludCwgb3BlcmF0aW9uXzI8dm9pZCo+ID4gcG9saWN5MjsKLSt0eXBlZGVmIHBvbGljeTxpbnQs IG9wZXJhdGlvbl8zPHZvaWQqPiA+IHBvbGljeTM7Ci0rdHlwZWRlZiBwb2xpY3k8aW50LCBvcGVy YXRpb25fNDx2b2lkKj4gPiBwb2xpY3k0OwotKwotK3R5cGVkZWYgcG9saWN5ZDxpbnQ+IHBvbGlj eWQxOwotK3R5cGVkZWYgcG9saWN5ZDxsb25nPiBwb2xpY3lkMjsKLSt0eXBlZGVmIHBvbGljeWQ8 Y2hhcj4gcG9saWN5ZDM7Ci0rdHlwZWRlZiBwb2xpY3lkPGJhc2U+IHBvbGljeWQ0OwotK3R5cGVk ZWYgcG9saWN5ZDx0Y2xhc3M8aW50PiA+IHBvbGljeWQ1OwotKwotK2NsYXNzIGZsdWZmIHsgfTsK LStzdGF0aWMgZmx1ZmYgKmdfZmx1ZmYgPSBuZXcgZmx1ZmYgKCk7Ci0rCi0rY2xhc3MgYmFzZQot K3sKLStwcm90ZWN0ZWQ6Ci0rICBpbnQgZm9vXzsKLSsKLStwdWJsaWM6Ci0rICBiYXNlICh2b2lk KSA6IGZvb18gKDQyKSB7IH0gLy8gYmFzZTo6YmFzZSh2b2lkKQotKyAgYmFzZSAoaW50IGZvbykg OiBmb29fIChmb28pIHsgfSAvLyBiYXNlOjpiYXNlKGludCkKLSsgIH5iYXNlICh2b2lkKSB7IH0g Ly8gYmFzZTo6fmJhc2UKLSsKLSsgIC8vIFNvbWUgb3ZlcmxvYWRlZCBtZXRob2RzCi0rICBpbnQg b3ZlcmxvYWQgKHZvaWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0gLy8gYmFzZTo6b3ZlcmxvYWQodm9p ZCkgY29uc3QKLSsgIGludCBvdmVybG9hZCAoaW50IGkpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8g YmFzZTo6b3ZlcmxvYWQoaW50KSBjb25zdAotKyAgaW50IG92ZXJsb2FkIChzaG9ydCBzKSBjb25z dCB7IHJldHVybiAyOyB9IC8vIGJhc2U6Om92ZXJsb2FkKHNob3J0KSBjb25zdAotKyAgaW50IG92 ZXJsb2FkIChsb25nIGwpIGNvbnN0IHsgcmV0dXJuIDM7IH0gLy8gYmFzZTo6b3ZlcmxvYWQobG9u ZykgY29uc3QKLSsgIGludCBvdmVybG9hZCAoY2hhciogYSkgY29uc3QgeyByZXR1cm4gNDsgfSAv LyBiYXNlOjpvdmVybG9hZChjaGFyKikgY29uc3QKLSsgIGludCBvdmVybG9hZCAoYmFzZSYgYikg Y29uc3QgeyByZXR1cm4gNTsgfSAvLyBiYXNlOjpvdmVybG9hZChiYXNlJikgY29uc3QKLSsKLSsg IC8vIE9wZXJhdG9ycwotKyAgaW50IG9wZXJhdG9yKyAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8g YmFzZTo6b3BlcmF0b3IrCi0rICB7IHJldHVybiBmb29fICsgby5mb29fOyB9Ci0rCi0rICBiYXNl IG9wZXJhdG9yKysgKHZvaWQpIC8vIGJhc2U6Om9wZXJhdG9yKysKLSsgIHsgKytmb29fOyByZXR1 cm4gKnRoaXM7IH0KLSsKLSsgIGJhc2Ugb3BlcmF0b3IrPShiYXNlIGNvbnN0JiBvKSAvLyBiYXNl OjpvcGVyYXRvcis9Ci0rICB7IGZvb18gKz0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KLSsKLSsg IGludCBvcGVyYXRvci0gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yLQot KyAgeyByZXR1cm4gZm9vXyAtIG8uZm9vXzsgfQotKwotKyAgYmFzZSBvcGVyYXRvci0tICh2b2lk KSAvLyBiYXNlOjpvcGVyYXRvci0tCi0rICB7IC0tZm9vXzsgcmV0dXJuICp0aGlzOyB9Ci0rCi0r ICBiYXNlIG9wZXJhdG9yLT0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yLT0KLSsg IHsgZm9vXyAtPSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yKiAo YmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IqCi0rICB7IHJldHVybiBmb29f ICogby5mb29fOyB9Ci0rCi0rICBiYXNlIG9wZXJhdG9yKj0gKGJhc2UgY29uc3QmIG8pIC8vIGJh c2U6Om9wZXJhdG9yKj0KLSsgIHsgZm9vXyAqPSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKwot KyAgaW50IG9wZXJhdG9yLyAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3Iv Ci0rICB7IHJldHVybiBmb29fIC8gby5mb29fOyB9Ci0rCi0rICBiYXNlIG9wZXJhdG9yLz0gKGJh c2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yLz0KLSsgIHsgZm9vXyAvPSBvLmZvb187IHJl dHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yJSAoYmFzZSBjb25zdCYgbykgY29uc3Qg Ly8gYmFzZTo6b3BlcmF0b3IlCi0rICB7IHJldHVybiBmb29fICUgby5mb29fOyB9Ci0rICAKLSsg IGJhc2Ugb3BlcmF0b3IlPSAoYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3IlPQotKyAg eyBmb29fICU9IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yPCAo YmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3I8Ci0rICB7IHJldHVybiBmb29f IDwgby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yPD0gKGJhc2UgY29uc3QmIG8pIGNvbnN0 IC8vIGJhc2U6Om9wZXJhdG9yPD0KLSsgIHsgcmV0dXJuIGZvb18gPD0gby5mb29fOyB9Ci0rCi0r ICBib29sIG9wZXJhdG9yPiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3I+ Ci0rICB7IHJldHVybiBmb29fID4gby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yPj0gKGJh c2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPj0KLSsgIHsgcmV0dXJuIGZvb18g Pj0gby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yIT0gKGJhc2UgY29uc3QmIG8pIGNvbnN0 IC8vIGJhc2U6Om9wZXJhdG9yIT0KLSsgIHsgcmV0dXJuIGZvb18gIT0gby5mb29fOyB9Ci0rCi0r ICBib29sIG9wZXJhdG9yPT0gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9y PT0KLSsgIHsgcmV0dXJuIGZvb18gPT0gby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yISAo dm9pZCkgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IhCi0rICB7IHJldHVybiAhZm9vXzsgfQotKwot KyAgYm9vbCBvcGVyYXRvciYmIChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRv ciYmCi0rICB7IHJldHVybiBmb29fICYmIG8uZm9vXzsgfQotKwotKyAgYm9vbCBvcGVyYXRvcnx8 IChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcnx8Ci0rICB7IHJldHVybiBm b29fIHx8IG8uZm9vXzsgfQotKwotKyAgaW50IG9wZXJhdG9yPDwgKGludCB2YWx1ZSkgY29uc3Qg Ly8gYmFzZTo6b3BlcmF0b3I8PAotKyAgeyByZXR1cm4gZm9vXyAgPDwgdmFsdWU7IH0KLSsKLSsg IGJhc2Ugb3BlcmF0b3I8PD0gKGludCB2YWx1ZSkgLy8gYmFzZTo6b3BlcmF0b3I8PD0KLSsgIHsg Zm9vXyA8PD0gdmFsdWU7IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yPj4gKGlu dCB2YWx1ZSkgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3I+PgotKyAgeyByZXR1cm4gZm9vXyAgPj4g dmFsdWU7IH0KLSsKLSsgIGJhc2Ugb3BlcmF0b3I+Pj0gKGludCB2YWx1ZSkgLy8gYmFzZTo6b3Bl cmF0b3I+Pj0KLSsgIHsgZm9vXyA+Pj0gdmFsdWU7IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50 IG9wZXJhdG9yfiAodm9pZCkgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3J+Ci0rICB7IHJldHVybiB+ Zm9vXzsgfQotKwotKyAgaW50IG9wZXJhdG9yJiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFz ZTo6b3BlcmF0b3ImCi0rICB7IHJldHVybiBmb29fICYgby5mb29fOyB9Ci0rCi0rICBiYXNlIG9w ZXJhdG9yJj0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yJj0KLSsgIHsgZm9vXyAm PSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yfCAoYmFzZSBjb25z dCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3J8Ci0rICB7IHJldHVybiBmb29fIHwgby5mb29f OyB9Ci0rCi0rICBiYXNlIG9wZXJhdG9yfD0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJh dG9yfD0KLSsgIHsgZm9vXyB8PSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKyAgCi0rICBpbnQg b3BlcmF0b3JeIChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcl4KLSsgIHsg cmV0dXJuIGZvb18gXiBvLmZvb187IH0KLSsKLSsgIGJhc2Ugb3BlcmF0b3JePSAoYmFzZSBjb25z dCYgbykgLy8gYmFzZTo6b3BlcmF0b3JePQotKyAgeyBmb29fIF49IG8uZm9vXzsgcmV0dXJuICp0 aGlzOyB9Ci0rCi0rICBiYXNlIG9wZXJhdG9yPSAoYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3Bl cmF0b3I9Ci0rICB7IGZvb18gPSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKwotKyAgdm9pZCBv cGVyYXRvcigpICh2b2lkKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcigpCi0rICB7IHJldHVybjsg fQotKwotKyAgaW50IG9wZXJhdG9yW10gKGludCBpZHgpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9y W10KLSsgIHsgcmV0dXJuIGlkeDsgfQotKwotKyAgdm9pZCogb3BlcmF0b3IgbmV3IChzaXplX3Qg c2l6ZSkgdGhyb3cgKCkgLy8gYmFzZTo6b3BlcmF0b3IgbmV3Ci0rICB7IHJldHVybiBtYWxsb2Mg KHNpemUpOyB9Ci0rCi0rICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcHRyKSAvLyBiYXNl OjpvcGVyYXRvciBkZWxldGUKLSsgIHsgZnJlZSAocHRyKTsgfQotKwotKyAgdm9pZCogb3BlcmF0 b3IgbmV3W10gKHNpemVfdCBzaXplKSB0aHJvdyAoKSAvLyBiYXNlOjpvcGVyYXRvciBuZXdbXQot KyAgeyByZXR1cm4gbWFsbG9jIChzaXplKTsgfQotKwotKyAgdm9pZCBvcGVyYXRvciBkZWxldGVb XSAodm9pZCogcHRyKSAvLyBiYXNlOjpvcGVyYXRvciBkZWxldGVbXQotKyAgeyBmcmVlIChwdHIp OyB9Ci0rCi0rICBiYXNlIGNvbnN0KiBvcGVyYXRvci0+ICh2b2lkKSBjb25zdCAvLyBiYXNlOjpv cGVhcnRvci0+Ci0rICB7IHJldHVybiB0aGlzOyB9Ci0rCi0rICBpbnQgb3BlcmF0b3ItPiogKGJh c2UgY29uc3QmIGIpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yLT4qCi0rICB7ICByZXR1cm4gZm9v XyAqIGIuZm9vXzsgfQotKwotKyAgb3BlcmF0b3IgY2hhciogKCkgY29uc3QgeyByZXR1cm4gY29u c3RfY2FzdDxjaGFyKj4gKCJoZWxsbyIpOyB9IC8vIGJhc2U6Om9wZXJhdG9yIGNoYXIqCi0rICBv cGVyYXRvciBpbnQgKCkgY29uc3QgeyByZXR1cm4gMjE7IH0gLy8gYmFzZTo6b3BlcmF0b3IgaW50 Ci0rICBvcGVyYXRvciBmbHVmZiogKCkgY29uc3QgeyByZXR1cm4gbmV3IGZsdWZmICgpOyB9IC8v IGJhc2U6Om9wZXJhdG9yIGZsdWZmKgotKyAgb3BlcmF0b3IgZmx1ZmYqKiAoKSBjb25zdCB7IHJl dHVybiAmZ19mbHVmZjsgfSAvLyBiYXNlOjpvcGVyYXRvciBmbHVmZioqCi0rfTsKLSsKLStjbGFz cyBiYXNlMSA6IHB1YmxpYyB2aXJ0dWFsIGJhc2UKLSt7Ci0rcHVibGljOgotKyAgYmFzZTEgKHZv aWQpIDogZm9vXyAoMjEpIHsgfSAvLyBiYXNlMTo6YmFzZTEodm9pZCkKLSsgIGJhc2UxIChpbnQg YSkgOiBmb29fKGEpIHsgfSAvLyBiYXNlMTo6YmFzZTEoaW50KQotKyAgdm9pZCBhX2Z1bmN0aW9u ICh2b2lkKSBjb25zdCB7IH0gLy8gYmFzZTE6OmFfZnVuY3Rpb24KLSsKLStwcm90ZWN0ZWQ6Ci0r ICBpbnQgZm9vXzsKLSt9OwotKwotK2NsYXNzIGJhc2UyIDogcHVibGljIHZpcnR1YWwgYmFzZQot K3sKLStwdWJsaWM6Ci0rICBiYXNlMiAoKSA6IGZvb18gKDMpIHsgfSAvLyBiYXNlMjo6YmFzZTIK LSsKLStwcm90ZWN0ZWQ6Ci0rICB2b2lkIGFfZnVuY3Rpb24gKHZvaWQpIGNvbnN0IHsgfSAvLyBi YXNlMjo6YV9mdW5jdGlvbgotKyAgaW50IGZvb187Ci0rfTsKLSsKLStjbGFzcyBkZXJpdmVkIDog cHVibGljIGJhc2UxLCBwdWJsaWMgYmFzZTIKLSt7Ci0rICBwdWJsaWM6Ci0rICBkZXJpdmVkKHZv aWQpIDogZm9vXyAoNCkgeyB9IC8vIGRlcml2ZWQ6OmRlcml2ZWQKLSsgIHZvaWQgYV9mdW5jdGlv biAodm9pZCkgY29uc3QgLy8gZGVyaXZlZDo6YV9mdW5jdGlvbgotKyAgeyAKLSsgICAgdGhpcy0+ YmFzZTE6OmFfZnVuY3Rpb24gKCk7Ci0rICAgIHRoaXMtPmJhc2UyOjphX2Z1bmN0aW9uICgpOwot KyAgfQotKwotKyAgcHJvdGVjdGVkOgotKyAgaW50IGZvb187Ci0rfTsKLSsKLStpbnQKLSttYWlu IChpbnQgYXJnYywgY2hhciogYXJndltdKSAvLyBtYWluCi0reyAvLyBtYWluCi0rICBkZXJpdmVk IGQ7Ci0rICB2b2lkIChkZXJpdmVkOjoqcGZ1bmMpICh2b2lkKSBjb25zdCA9ICZkZXJpdmVkOjph X2Z1bmN0aW9uOwotKyAgKGQuKnBmdW5jKSAoKTsKLSsKLSsgIGJhc2UgYSAoMSksIGIgKDMpLCBj ICg4KTsKLSsgICh2b2lkKSBhLm92ZXJsb2FkICgpOwotKyAgKHZvaWQpIGEub3ZlcmxvYWQgKHN0 YXRpY19jYXN0PGludD4gKDApKTsKLSsgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxz aG9ydD4gKDApKTsKLSsgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxsb25nPiAoMCkp OwotKyAgKHZvaWQpIGEub3ZlcmxvYWQgKHN0YXRpY19jYXN0PGNoYXIqPiAoMCkpOwotKyAgKHZv aWQpIGEub3ZlcmxvYWQgKGEpOwotKwotKyAgaW50IHI7Ci0rICByID0gYiArIGM7Ci0rICArK2E7 Ci0rICBhICs9IGI7Ci0rICByID0gYiAtIGM7Ci0rICAtLWE7Ci0rICBhIC09IGI7Ci0rICByID0g YiAqIGM7Ci0rICBhICo9IGI7Ci0rICByID0gYiAvIGM7Ci0rICBhIC89IGI7Ci0rICByID0gYiAl IGM7Ci0rICBhICU9IGI7Ci0rICBib29sIHggPSAoYiA8IGMpOwotKyAgeCA9IChiIDw9IGMpOwot KyAgeCA9IChiID4gYyk7Ci0rICB4ID0gKGIgPj0gYyk7Ci0rICB4ID0gKGIgIT0gYyk7Ci0rICB4 ID0gKGIgPT0gYyk7Ci0rICB4ID0gKCFiKTsKLSsgIHggPSAoYiAmJiBjKTsKLSsgIHggPSAoYiB8 fCBjKTsKLSsgIHIgPSBiIDw8IDI7Ci0rICBhIDw8PSAxOwotKyAgciA9IGIgPj4gMjsKLSsgIGEg Pj49IDE7Ci0rICByID0gfmI7Ci0rICByID0gYiAmIGM7Ci0rICBhICY9IGM7Ci0rICByID0gYiB8 IGM7Ci0rICBhIHw9IGM7Ci0rICByID0gYiBeIGM7Ci0rICBhIF49IGM7Ci0rICBhID0gYzsKLSsg IGEgKCk7Ci0rICBpbnQgaSA9IGFbM107Ci0rICBkZXJpdmVkKiBmID0gbmV3IGRlcml2ZWQgKCk7 Ci0rICBkZXJpdmVkKiBnID0gbmV3IGRlcml2ZWRbM107Ci0rICBkZWxldGUgZjsKLSsgIGRlbGV0 ZVtdIGc7Ci0rICBhLT5vdmVybG9hZCAoKTsKLSsgIHIgPSBhLT4qYjsKLSsKLSsgIHRjbGFzczxj aGFyPiBjaGFyX3RjbGFzczsKLSsgIHRjbGFzczxpbnQ+IGludF90Y2xhc3M7Ci0rICB0Y2xhc3M8 c2hvcnQ+IHNob3J0X3RjbGFzczsKLSsgIHRjbGFzczxsb25nPiBsb25nX3RjbGFzczsKLSsgIHRj bGFzczxiYXNlPiBiYXNlX3RjbGFzczsKLSsgIGNoYXJfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsK LSsgIGludF90Y2xhc3MuZG9fc29tZXRoaW5nICgpOwotKyAgc2hvcnRfdGNsYXNzLmRvX3NvbWV0 aGluZyAoKTsKLSsgIGxvbmdfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsKLSsgIGJhc2VfdGNsYXNz LmRvX3NvbWV0aGluZyAoKTsKLSsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBpbnQ+ ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBpbnQsIHNob3J0PiAoKTsKLSsgIGZsdWJi ZXI8aW50LCBpbnQsIGludCwgaW50LCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGlu dCwgaW50LCBjaGFyPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgc2hvcnQsIGludD4g KCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBzaG9ydD4gKCk7Ci0rICBmbHVi YmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQs IGludCwgc2hvcnQsIGNoYXI+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBp bnQ+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBzaG9ydD4gKCk7Ci0rICBm bHViYmVyPGludCwgaW50LCBpbnQsIGxvbmcsIGxvbmc+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGlu dCwgaW50LCBsb25nLCBjaGFyPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwg aW50PiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgc2hvcnQ+ICgpOwotKyAg Zmx1YmJlcjxpbnQsIGludCwgaW50LCBjaGFyLCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBp bnQsIGludCwgY2hhciwgY2hhcj4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBzaG9ydCwgaW50 LCBpbnQ+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgc2hvcnQ+ICgpOwot KyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGlu dCwgaW50LCBzaG9ydCwgaW50LCBjaGFyPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIHNob3J0 LCBzaG9ydCwgaW50PiAoKTsKLSsgIGZsdWJiZXI8c2hvcnQsIGludCwgc2hvcnQsIGludCwgc2hv cnQ+ICgpOwotKyAgZmx1YmJlcjxsb25nLCBzaG9ydCwgbG9uZywgc2hvcnQsIGxvbmc+ICgpOwot KwotKyAgcG9saWN5MSBwMSAoMSk7Ci0rICBwMS5mdW5jdGlvbiAoKTsKLSsgIHBvbGljeTIgcDIg KDIpOwotKyAgcDIuZnVuY3Rpb24gKCk7Ci0rICBwb2xpY3kzIHAzICgzKTsKLSsgIHAzLmZ1bmN0 aW9uICgpOwotKyAgcG9saWN5NCBwNCAoNCk7Ci0rICBwNC5mdW5jdGlvbiAoKTsKLSsKLSsgIHBv bGljeWQxIHBkMSAoNSk7Ci0rICBwZDEuZnVuY3Rpb24gKCk7Ci0rICBwb2xpY3lkMiBwZDIgKDYp OwotKyAgcGQyLmZ1bmN0aW9uICgpOwotKyAgcG9saWN5ZDMgcGQzICg3KTsKLSsgIHBkMy5mdW5j dGlvbiAoKTsKLSsgIHBvbGljeWQ0IHBkNCAoZCk7Ci0rICBwZDQuZnVuY3Rpb24gKCk7Ci0rICBw b2xpY3lkNSBwZDUgKGludF90Y2xhc3MpOwotKyAgcGQ1LmZ1bmN0aW9uICgpOwotKwotKyAgYmFz ZTEgYjEgKDMpOwotKwotKyAgciA9IGE7Ci0rICBjaGFyKiBzdHIgPSBhOwotKyAgZmx1ZmYqIGZs cCA9IGE7Ci0rICBmbHVmZioqIGZscHAgPSBhOwotK30KLSsKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9jcGV4cHJzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwZXhwcnMu ZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjA3NDc2MwotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BleHBycy5leHAKLUBAIC0wLDAg KzEsNzI0IEBACi0rIyBjcGV4cHJzLmV4cCAtIEMrKyBleHByZXNzaW9ucyB0ZXN0cwotKyMKLSsj IENvcHlyaWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKyMKLSsjIENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQsIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBL ZWl0aCBTZWl0ei4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCi0rCi0rIyBBIGhlbHBlciBwcm9j IHdoaWNoIHNldHMgYSBicmVha3BvaW50IGF0IEZVTkMgYW5kIGF0dGVtcHRzIHRvCi0rIyBydW4g dG8gdGhlIGJyZWFrcG9pbnQuCi0rcHJvYyB0ZXN0X2JyZWFrcG9pbnQge2Z1bmN9IHsKLSsgICAg Z2xvYmFsIERFQwotKwotKyAgICAjIFJlc3RhcnQgZXZlcnkgdGltZQotKyAgICBpZiB7IVtydW50 b19tYWluXX0gewotKwlwZXJyb3IgImNvdWxkIG5vdCBydW4gdG8gbWFpbiB3aGVuIGF0dGVtcHRp bmcgdG8gYnJlYWsgYXQgJGZ1bmMiCi0rICAgIH0gZWxzZSB7Ci0rCWdkYl9icmVha3BvaW50ICIk ZnVuYyIKLSsJc2V0IGkgW2V4cHIge1tzdHJpbmcgbGFzdCA6ICRmdW5jXSArIDF9XQotKwlzZXQg ZWZ1bmMgW3N0cmluZ190b19yZWdleHAgW3N0cmluZyByYW5nZSAkZnVuYyAkaSBlbmRdXQotKwln ZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICJDb250aW51aW5nLlxyXG5cclxuQnJlYWtwb2lu dCAkREVDKywuKiRlZnVuYy4qIiBcCi0rCSAgICAiY29udGludWUgdG8gJGZ1bmMiCi0rICAgIH0K LSt9Ci0rCi0rIyBBZGQgYSBmdW5jdGlvbiB0byB0aGUgbGlzdCBvZiB0ZXN0ZWQgZnVuY3Rpb25z Ci0rIyBGVU5DIGlzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiAod2hpY2ggd2lsbCBiZSBwYXNz ZWQgdG8gZ2RiIGNvbW1hbmRzKQotKyMgVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24s IGFzIGV4cGVjdGVkIGZyb20gdGhlICJwcmludCIgY29tbWFuZAotKyMgUFJJTlQgaXMgdGhlIG5h bWUgb2YgdGhlIGZ1bmN0aW9uLCBhcyBleHBlY3RlZCByZXN1bHQgb2YgdGhlIHByaW50IGNvbW1h bmQKLSsjICAqT1IqICItIiwgaW5kaWNhdGluZyB0aGF0IEZVTkMgc2hvdWxkIGJlIHVzZWQgKG5l ZWRlZCBmb3IgdmlydHVhbC9pbmhlcml0ZWQKLSsjICAgZnVuY3MpCi0rIyBMU1QgaXMgZWl0aGVy IHRoZSBleHBlY3RlZCByZXN1bHQgb2YgdGhlIGxpc3QgY29tbWFuZCAodGhlIGNvbW1lbnQgZnJv bQotKyMgIHRoZSBzb3VyY2UgY29kZSkgKk9SKiAiLSIsIGluIHdoaWNoIGNhc2UgRlVOQyB3aWxs IGJlIHVzZWQKLSsjCi0rIyBVc2FnZToKLSsjIGFkZCBOQU1FIFRZUEUgUFJJTlQgTFNUCi0rIyBh ZGQgTkFNRSBUWVBFIFBSSU5UIC0KLStwcm9jIGFkZCB7ZnVuYyB0eXBlIHByaW50IGxzdH0gewot KyAgICBnbG9iYWwgYWxsX2Z1bmN0aW9ucyBDT05WQVIgQUREUgotKwotKyAgICBzZXQgYWxsX2Z1 bmN0aW9ucygkZnVuYyx0eXBlKSAkdHlwZQotKyAgICBpZiB7JHByaW50ID09ICItIn0gewotKwlz ZXQgcHJpbnQgJGZ1bmMKLSsgICAgfQotKwotKyAgICAjIEFuIGV4Y2VwdGlvbjogc2luY2UgZ2Ri IGNhbm9uaWNhbGl6ZXMgQysrIG91dHB1dCwKLSsgICAgIyAiKHZvaWQpIiBtdXN0IGJlIG11dGF0 ZWQgdG8gIigpIi4KLSsgICAgcmVnc3ViIHtcKHZvaWRcKX0gJHByaW50IHsoKX0gcHJpbnQKLSsK LSsgICAgc2V0IGFsbF9mdW5jdGlvbnMoJGZ1bmMscHJpbnQpIFwKLSsJIiRDT05WQVIgPSB7W3N0 cmluZ190b19yZWdleHAgJHR5cGVdfSAkQUREUiA8W3N0cmluZ190b19yZWdleHAgJHByaW50XS4q PiIKLSsgICAgaWYgeyRsc3QgPT0gIi0ifSB7Ci0rCXNldCBsc3QgIiRmdW5jIgotKyAgICB9Ci0r ICAgIHNldCBhbGxfZnVuY3Rpb25zKCRmdW5jLGxpc3QpICIuKi8vIFtzdHJpbmdfdG9fcmVnZXhw ICRsc3RdIgotK30KLSsKLStwcm9jIGdldCB7ZnVuYyBjbWR9IHsKLSsgICAgZ2xvYmFsIGFsbF9m dW5jdGlvbnMKLSsgICAgcmV0dXJuICRhbGxfZnVuY3Rpb25zKCRmdW5jLCRjbWQpCi0rfQotKwot KyMgUmV0dXJucyBhIGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgZm9yIGEgZ2l2ZW4gY29tbWFuZAot K3Byb2MgZ2V0X2Z1bmN0aW9ucyB7Y21kfSB7Ci0rICAgIGdsb2JhbCBhbGxfZnVuY3Rpb25zCi0r ICAgIHNldCByZXN1bHQge30KLSsgICAgZm9yZWFjaCBpIFthcnJheSBuYW1lcyBhbGxfZnVuY3Rp b25zICosJGNtZF0gewotKwlpZiB7JGFsbF9mdW5jdGlvbnMoJGkpICE9ICIifSB7Ci0rCSAgICBz ZXQgaWR4IFtzdHJpbmcgbGFzdCAsICRpXQotKwkgICAgaWYgeyRpZHggIT0gLTF9IHsKLSsJCWxh cHBlbmQgcmVzdWx0IFtzdHJpbmcgcmFuZ2UgJGkgMCBbZXhwciB7JGlkeCAtIDF9XV0KLSsJICAg IH0KLSsJfQotKyAgICB9Ci0rCi0rICAgIHJldHVybiBbbHNvcnQgJHJlc3VsdF0KLSt9Ci0rCi0r IyBTb21lIGNvbnZlbmllbmNlIHZhcmlhYmxlcyBmb3IgdGhpcyB0ZXN0Ci0rc2V0IERFQyB7WzAt OV19OyAjIGEgZGVjaW1hbCBudW1iZXIKLStzZXQgSEVYIHtbMC05YS1mQS1GXX07ICMgYSBoZXhp ZGVjaW1hbCBudW1iZXIKLStzZXQgQ09OVkFSICJcXFwkJERFQysiOyAjIGNvbnZlbmllbmNlIHZh cmlhYmxlIHJlZ2V4cAotK3NldCBBRERSICIweCRIRVgrIjsgIyBhZGRyZXNzCi0rCi0rIyBBbiBh cnJheSBvZiBmdW5jdGlvbnMvbWV0aG9kcyB0aGF0IHdlIGFyZSB0ZXN0aW5nLi4uCi0rIyBFYWNo IGVsZW1lbnQgY29uc2lzdHMgaXMgaW5kZXhlZCBieSBOQU1FLENPTU1BTkQsIHdoZXJlCi0rIyBO QU1FIGlzIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBDT01NQU5EIGlzIHRoZSBnZGIgY29tbWFuZCB0 aGF0Ci0rIyB3ZSBhcmUgdGVzdGluZy4gVGhlIHZhbHVlIG9mIHRoZSBhcnJheSBmb3IgYW55IGlu ZGV4IHBhaXIgaXMKLSsjIHRoZSBleHBlY3RlZCByZXN1bHQgb2YgcnVubmluZyBDT01NQU5EIHdp dGggdGhlIE5BTUUgYXMgYXJndW1lbnQuCi0rCi0rIyBUaGUgYXJyYXkgaG9sZGluZyBhbGwgZnVu Y3Rpb25zL21ldGhvZHMgdG8gdGVzdC4gVmFsaWQgc3ViaW5kZXhlcwotKyMgYXJlIChub25lIG5l ZWQgY2hhcmFjdGVyIGVzY2FwaW5nIC0tICJhZGQiIHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQpOgot KwotKyMgYWRkIG5hbWUgdHlwZSBwcmludF9uYW1lIGxpc3QKLSsjIE5BTUUsdHlwZTogdmFsdWUg aXMgdHlwZSBvZiBmdW5jdGlvbiAKLSsjIE5BTUUscHJpbnQ6IHZhbHVlIGlzIHByaW50IG5hbWUg b2YgZnVuY3Rpb24gKGNhcmVmdWwgdy9pbmhlcml0ZWQvdmlydHVhbCEpCi0rIyBOQU1FLGxpc3Q6 IHZhbHVlIGlzIGNvbW1lbnQgaW4gc291cmNlIGNvZGUgb24gZmlyc3QgbGluZSBvZiBmdW5jdGlv bgotKyMgICAod2l0aG91dCB0aGUgbGVhZGluZyAiLy8iKQotK2FycmF5IHNldCBhbGxfZnVuY3Rp b25zIHt9Ci0rCi0rIyAiTm9ybWFsIiBmdW5jdGlvbnMvbWV0aG9kcwotK2FkZCB7bWFpbn0gXAot KyAgICB7aW50IChpbnQsIGNoYXIgKiopfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtkZXJp dmVkOjphX2Z1bmN0aW9ufSBcCi0rICAgIHt2b2lkIChjb25zdCBkZXJpdmVkICogY29uc3QpfSBc Ci0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlMTo6YV9mdW5jdGlvbn0gXAotKyAgICB7dm9p ZCAoY29uc3QgYmFzZTEgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2Uy OjphX2Z1bmN0aW9ufSBcCi0rICAgIHt2b2lkIChjb25zdCBiYXNlMiAqIGNvbnN0KX0gXAotKyAg ICAtIFwKLSsgICAgLQotKwotKyMgQ29uc3RydWN0b3JzCi0rCi0rIyBPbiB0YXJnZXRzIHVzaW5n IHRoZSBBUk0gRUFCSSwgdGhlIGNvbnN0cnVjdG9yIGlzIGV4cGVjdGVkIHRvIHJldHVybgotKyMg InRoaXMiLgotK3Byb2MgY3RvciB7IHR5cGUgYXJnbGlzdCB9IHsKLSsgICAgaWYgeyBbaXN0YXJn ZXQgYXJtKi0qZWFiaSpdIH0gewotKwlzZXQgcmV0ICIkdHlwZSAqIgotKyAgICB9IGVsc2Ugewot KwlzZXQgcmV0ICJ2b2lkICIKLSsgICAgfQotKyAgICBpZiB7ICRhcmdsaXN0ICE9ICIiIH0gewot KwlzZXQgYXJnbGlzdCAiLCAkYXJnbGlzdCIKLSsgICAgfQotKyAgICByZXR1cm4gIiR7cmV0fSgk dHlwZSAqIGNvbnN0JGFyZ2xpc3QpIgotK30KLSsKLSthZGQge2Rlcml2ZWQ6OmRlcml2ZWR9IFwK LSsgICAgW2N0b3IgZGVyaXZlZCAiIl0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTE6 OmJhc2UxKHZvaWQpfSBcCi0rICAgIFtjdG9yIGJhc2UxICJjb25zdCB2b2lkICoqIGNvbnN0Il0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTE6OmJhc2UxKGludCl9IFwKLSsgICAgW2N0 b3IgYmFzZTEgImludCJdIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2UyOjpiYXNlMn0g XAotKyAgICBbY3RvciBiYXNlMiAiY29uc3Qgdm9pZCAqKiBjb25zdCJdIFwKLSsgICAgLSBcCi0r ICAgIC0KLSthZGQge2Jhc2U6OmJhc2Uodm9pZCl9IFwKLSsgICAgW2N0b3IgYmFzZSAiIl0gXAot KyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6YmFzZShpbnQpfSBcCi0rICAgIFtjdG9yIGJh c2UgImludCJdIFwKLSsgICAgLSBcCi0rICAgIC0KLSsKLSsjIERlc3RydWN0b3JzCi0rCi0rIyBP biB0YXJnZXRzIHVzaW5nIHRoZSBBUk0gRUFCSSwgc29tZSBkZXN0cnVjdG9ycyBhcmUgZXhwZWN0 ZWQKLSsjIHRvIHJldHVybiAidGhpcyIuICBPdGhlcnMgYXJlIHZvaWQuICBGb3IgaW50ZXJuYWwg cmVhc29ucywKLSsjIEdDQyByZXR1cm5zIHZvaWQgKiBpbnN0ZWFkIG9mICR0eXBlICo7IFJlYWxW aWV3IGFwcGVhcnMgdG8gZG8KLSsjIHRoZSBzYW1lLgotK3Byb2MgZHRvciB7IHR5cGUgfSB7Ci0r ICAgIGlmIHsgW2lzdGFyZ2V0IGFybSotKmVhYmkqXSB9IHsKLSsJc2V0IHJldCAidm9pZCAqIgot KyAgICB9IGVsc2UgewotKwlzZXQgcmV0ICJ2b2lkICIKLSsgICAgfQotKyAgICByZXR1cm4gIiR7 cmV0fSgkdHlwZSAqIGNvbnN0KSIKLSt9Ci0rCi0rYWRkIHtiYXNlOjp+YmFzZX0gXAotKyAgICBb ZHRvciBiYXNlXSBcCi0rICAgIC0gXAotKyAgICAtCi0rCi0rIyBPdmVybG9hZGVkIG1ldGhvZHMg KGFsbCBhcmUgY29uc3QgLS0gd2UgdHJ5IHRvIHVzZSB0aGUgdm9pZAotKyMgbWV0aG9kIHdpdGgg YW5kIHdpdGhvdXQgc3BlY2lmeWluZyAiY29uc3QiKQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQodm9p ZCl9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAg e2Jhc2U6Om92ZXJsb2FkKHZvaWQpIGNvbnN0fQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQodm9pZCkg Y29uc3R9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsg ICAge2Jhc2U6Om92ZXJsb2FkKHZvaWQpIGNvbnN0fQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQoaW50 KSBjb25zdH0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAg LSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om92ZXJsb2FkKHNob3J0KSBjb25zdH0gXAotKyAgICB7 aW50IChjb25zdCBiYXNlICogY29uc3QsIHNob3J0KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2Fk ZCB7YmFzZTo6b3ZlcmxvYWQobG9uZykgY29uc3R9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAq IGNvbnN0LCBsb25nKX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQo Y2hhciopIGNvbnN0fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgY2hhciAqKX0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQoYmFzZSYpIGNvbnN0fSBc Ci0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsg ICAgLQotKwotKyMgT3BlcmF0b3JzCi0rYWRkIHtiYXNlOjpvcGVyYXRvcit9IFwKLSsgICAge2lu dCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAt Ci0rYWRkIHtiYXNlOjpvcGVyYXRvcisrfSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3QpfSBc Ci0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcis9fSBcCi0rICAgIHtiYXNl IChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQg e2Jhc2U6Om9wZXJhdG9yLX0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0 IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yLS19IFwK LSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jh c2U6Om9wZXJhdG9yLT19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAm KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IqfSBcCi0rICAgIHtp bnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAg LQotK2FkZCB7YmFzZTo6b3BlcmF0b3IqPX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBj b25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvci99 IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAg IC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvci89fSBcCi0rICAgIHtiYXNlIChiYXNl ICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6 Om9wZXJhdG9yJX0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2Ug Jil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yJT19IFwKLSsgICAg e2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQot K2FkZCB7YmFzZTo6b3BlcmF0b3I8fSBcCi0rICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3Qs IGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9y PD19IFwKLSsgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAot KyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I+fSBcCi0rICAgIHtib29sIChj b25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSth ZGQge2Jhc2U6Om9wZXJhdG9yPj19IFwKLSsgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwg Y29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3Ih PX0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0r ICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcj09fSBcCi0rICAgIHtib29sIChj b25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSth ZGQge2Jhc2U6Om9wZXJhdG9yIX0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0KX0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3ImJn0gXAotKyAgICB7Ym9v bCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAt Ci0rYWRkIHtiYXNlOjpvcGVyYXRvcnx8fSBcCi0rICAgIHtib29sIChjb25zdCBiYXNlICogY29u c3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJh dG9yPDx9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIC0g XAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcjw8PX0gXAotKyAgICB7YmFzZSAoYmFzZSAq IGNvbnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcj4+ fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsg ICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I+Pj19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25z dCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3J+fSBcCi0r ICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQg e2Jhc2U6Om9wZXJhdG9yJn0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0 IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yJj19IFwK LSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsg ICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3J8fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBj b25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3Bl cmF0b3J8PX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0r ICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcl59IFwKLSsgICAge2ludCAoY29u c3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRk IHtiYXNlOjpvcGVyYXRvcl49fSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJh c2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yPX0gXAotKyAg ICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAt Ci0rYWRkIHtiYXNlOjpvcGVyYXRvcigpfSBcCi0rICAgIHt2b2lkIChjb25zdCBiYXNlICogY29u c3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcltdfSBcCi0rICAg IHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2Fk ZCB7YmFzZTo6b3BlcmF0b3IgbmV3fSBcCi0rICAgIHt2b2lkICooc2l6ZV90KX0gXAotKyAgICAt IFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IgZGVsZXRlfSBcCi0rICAgIHt2b2lkICh2 b2lkICopfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBuZXdbXX0g XAotKyAgICB7dm9pZCAqKHNpemVfdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6 Om9wZXJhdG9yIGRlbGV0ZVtdfSBcCi0rICAgIHt2b2lkICh2b2lkICopfSBcCi0rICAgIC0gXAot KyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBjaGFyKn0gXAotKyAgICB7Y2hhciAqKGNvbnN0 IGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9y IGZsdWZmKn0gXAotKyAgICB7Zmx1ZmYgKihjb25zdCBiYXNlICogY29uc3QpfSBcCi0rICAgIC0g XAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBmbHVmZioqfSBcCi0rICAgIHtmbHVmZiAq Kihjb25zdCBiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpv cGVyYXRvciBpbnR9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAt IFwKLSsgICAgLQotKwotKyMgVGVtcGxhdGVzCi0rYWRkIHt0Y2xhc3M8Y2hhcj46OmRvX3NvbWV0 aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGNoYXI+ICogY29uc3QpfSBcCi0rICAgIC0gXAot KyAgICAtCi0rYWRkIHt0Y2xhc3M8aW50Pjo6ZG9fc29tZXRoaW5nfSBcCi0rICAgIHt2b2lkICh0 Y2xhc3M8aW50PiAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7dGNsYXNzPGxv bmc+Ojpkb19zb21ldGhpbmd9IFwKLSsgICAge3ZvaWQgKHRjbGFzczxsb25nPiAqIGNvbnN0KX0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7dGNsYXNzPHNob3J0Pjo6ZG9fc29tZXRoaW5nfSBc Ci0rICAgIHt2b2lkICh0Y2xhc3M8c2hvcnQ+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAt Ci0rYWRkIHt0Y2xhc3M8YmFzZT46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNz PGJhc2U+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwg aW50LCBpbnQsIGludCwgaW50Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0r ICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBzaG9ydD59IFwK LSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHVi YmVyPGludCwgaW50LCBpbnQsIGludCwgbG9uZz59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0r ICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwg Y2hhcj59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0r YWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBpbnQ+fSBcCi0rICAgIHt2b2lkICh2 b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlcgotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwg aW50LCBzaG9ydCwgc2hvcnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsg ICAgZmx1YmJlcgotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgbG9uZz59IFwK LSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHVi YmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBjaGFyPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwK LSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9u ZywgaW50Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIK LSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgc2hvcnQ+fSBcCi0rICAgIHt2b2lk ICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlcgotK2FkZCB7Zmx1YmJlcjxpbnQsIGlu dCwgaW50LCBsb25nLCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0r ICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgY2hhcj59IFwK LSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHVi YmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGludD59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0r ICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIs IHNob3J0Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIK LSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgbG9uZz59IFwKLSsgICAge3ZvaWQg KHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50 LCBpbnQsIGNoYXIsIGNoYXI+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsg ICAgZmx1YmJlcgotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgaW50Pn0gXAot KyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge2ZsdWJi ZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwK LSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBp bnQsIGxvbmc+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJl cgotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgY2hhcj59IFwKLSsgICAge3Zv aWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwg aW50LCBzaG9ydCwgc2hvcnQsIGludD59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0g XAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPHNob3J0LCBpbnQsIHNob3J0LCBpbnQsIHNo b3J0Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSth ZGQge2ZsdWJiZXI8bG9uZywgc2hvcnQsIGxvbmcsIHNob3J0LCBsb25nPn0gXAotKyAgICB7dm9p ZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge3RjbGFzczxiYXNlPjo6 ZG9fc29tZXRoaW5nfSBcCi0rICAgIHt2b2lkICh0Y2xhc3M8YmFzZT4gKiBjb25zdCl9IFwKLSsg ICAgLSBcCi0rICAgIHt0Y2xhc3M8VD46OmRvX3NvbWV0aGluZ30KLSthZGQge3BvbGljeTE6OnBv bGljeX0gXAotKyAgICBbY3RvciAicG9saWN5PGludCwgb3BlcmF0aW9uXzE8dm9pZCo+ID4iICJp bnQiXSBcCi0rICAgIHtwb2xpY3k8aW50LCBvcGVyYXRpb25fMTx2b2lkKj4gPjo6cG9saWN5fSBc Ci0rICAgIHtwb2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5fQotK2FkZCB7cG9saWN5Mjo6cG9saWN5 fSBcCi0rICAgIFtjdG9yICJwb2xpY3k8aW50LCBvcGVyYXRpb25fMjx2b2lkKj4gPiIgaW50XSBc Ci0rICAgIHtwb2xpY3k8aW50LCBvcGVyYXRpb25fMjx2b2lkKj4gPjo6cG9saWN5fSBcCi0rICAg IHtwb2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5fQotK2FkZCB7cG9saWN5Mzo6cG9saWN5fSBcCi0r ICAgIFtjdG9yICJwb2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPiIgImludCJdIFwKLSsg ICAge3BvbGljeTxpbnQsIG9wZXJhdGlvbl8zPHZvaWQqPiA+Ojpwb2xpY3l9IFwKLSsgICAge3Bv bGljeTxULCBQb2xpY3k+Ojpwb2xpY3l9Ci0rYWRkIHtwb2xpY3k0Ojpwb2xpY3l9IFwKLSsgICAg W2N0b3IgInBvbGljeTxpbnQsIG9wZXJhdGlvbl80PHZvaWQqPiA+IiAiaW50Il0gXAotKyAgICB7 cG9saWN5PGludCwgb3BlcmF0aW9uXzQ8dm9pZCo+ID46OnBvbGljeX0gXAotKyAgICB7cG9saWN5 PFQsIFBvbGljeT46OnBvbGljeX0KLSthZGQge3BvbGljeTE6OmZ1bmN0aW9ufSBcCi0rICAgIHt2 b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAg ICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5Mjo6ZnVuY3Rpb259IFwK LSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25fMjx2b2lkKj46OmZ1bmN0aW9u fSBcCi0rICAgIHtvcGVyYXRpb25fMjxUPjo6ZnVuY3Rpb259Ci0rYWRkIHtwb2xpY3kzOjpmdW5j dGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJhdGlvbl8zPHZvaWQqPjo6 ZnVuY3Rpb259IFwKLSsgICAge29wZXJhdGlvbl8zPFQ+OjpmdW5jdGlvbn0KLSthZGQge3BvbGlj eTQ6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzQ8 dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzQ8VD46OmZ1bmN0aW9ufQotK2Fk ZCB7cG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPjo6cG9saWN5ZH0gXAotKyAgICBbY3Rv ciAicG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPiIgImludCJdIFwKLSsgICAgLSBcCi0r ICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkMTo6cG9saWN5 ZH0gXAotKyAgICBbY3RvciAicG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPiIgImludCJd IFwKLSsgICAge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46OnBvbGljeWR9IFwKLSsg ICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8aW50LCBvcGVy YXRpb25fMTxpbnQ+ID46On5wb2xpY3lkfSBcCi0rICAgIFtkdG9yICJwb2xpY3lkPGludCwgb3Bl cmF0aW9uXzE8aW50PiA+Il0gXAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6 fnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkMTo6fnBvbGljeWR9IFwKLSsgICAgW2R0b3IgInBvbGlj eWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID4iXSBcCi0rICAgIHtwb2xpY3lkPGludCwgb3BlcmF0 aW9uXzE8aW50PiA+Ojp+cG9saWN5ZH0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9s aWN5ZH0KLSthZGQge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6cG9saWN5ZH0g XAotKyAgICBbY3RvciAicG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+IiAibG9uZyJd IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRkIHtw b2xpY3lkMjo6cG9saWN5ZH0gXAotKyAgICBbY3RvciAicG9saWN5ZDxsb25nLCBvcGVyYXRpb25f MTxsb25nPiA+IiAibG9uZyJdIFwKLSsgICAge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9u Zz4gPjo6cG9saWN5ZH0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfQotK2Fk ZCB7cG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+Ojp+cG9saWN5ZH0gXAotKyAgICBb ZHRvciAicG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+Il0gXAotKyAgICAtIFwKLSsg ICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkMjo6fnBvbGlj eWR9IFwKLSsgICAgW2R0b3IgInBvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPiJdIFwK LSsgICAge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6fnBvbGljeWR9IFwKLSsg ICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkPGNoYXIsIG9w ZXJhdGlvbl8xPGNoYXI+ID46OnBvbGljeWR9IFwKLSsgICAgW2N0b3IgInBvbGljeWQ8Y2hhciwg b3BlcmF0aW9uXzE8Y2hhcj4gPiIgImNoYXIiXSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxU LCBQb2xpY3k+Ojpwb2xpY3lkfQotK2FkZCB7cG9saWN5ZDM6OnBvbGljeWR9IFwKLSsgICAgW2N0 b3IgInBvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiIgImNoYXIiXSBcCi0rICAgIHtw b2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID46OnBvbGljeWR9IFwKLSsgICAge3BvbGlj eWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8 Y2hhcj4gPjo6fnBvbGljeWR9IFwKLSsgICAgW2R0b3IgInBvbGljeWQ8Y2hhciwgb3BlcmF0aW9u XzE8Y2hhcj4gPiJdIFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xp Y3lkfQotK2FkZCB7cG9saWN5ZDM6On5wb2xpY3lkfSBcCi0rICAgIFtkdG9yICJwb2xpY3lkPGNo YXIsIG9wZXJhdGlvbl8xPGNoYXI+ID4iXSBcCi0rICAgIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlv bl8xPGNoYXI+ID46On5wb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xp Y3lkfQotK2FkZCB7cG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+Ojpwb2xpY3lkfSBc Ci0rICAgIFtjdG9yICJwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4iICJiYXNlIl0g XAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0KLSthZGQge3Bv bGljeWQ0Ojpwb2xpY3lkfSBcCi0rICAgIFtjdG9yICJwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8x PGJhc2U+ID4iICJiYXNlIl0gXAotKyAgICB7cG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNl PiA+Ojpwb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRk IHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46On5wb2xpY3lkfSBcCi0rICAgIFtk dG9yICJwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4iXSBcCi0rICAgIC0gXAotKyAg ICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQge3BvbGljeWQ0Ojp+cG9saWN5 ZH0gXAotKyAgICBbZHRvciAicG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+Il0gXAot KyAgICB7cG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+Ojp+cG9saWN5ZH0gXAotKyAg ICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8dGNsYXNzPGlu dD4sIG9wZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID4gPjo6cG9saWN5ZH0gXAotKyAgICBbY3RvciAi cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+IiAidGNsYXNz PGludD4iXSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfQot K2FkZCB7cG9saWN5ZDU6OnBvbGljeWR9IFwKLSsgICAgW2N0b3IgInBvbGljeWQ8dGNsYXNzPGlu dD4sIG9wZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID4gPiIgInRjbGFzczxpbnQ+Il0gXAotKyAgICB7 cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojpwb2xpY3lk fSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkPHRj bGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46On5wb2xpY3lkfSBcCi0rICAg IFtkdG9yICJwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID4i XSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQg e3BvbGljeWQ1Ojp+cG9saWN5ZH0gXAotKyAgICBbZHRvciAicG9saWN5ZDx0Y2xhc3M8aW50Piwg b3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Il0gXAotKyAgICB7cG9saWN5ZDx0Y2xhc3M8aW50 Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojp+cG9saWN5ZH0gXAotKyAgICB7cG9saWN5 ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxp bnQ+ID46OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9u XzE8aW50Pjo6ZnVuY3Rpb259XAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufQotK2Fk ZCB7cG9saWN5ZDE6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3Bl cmF0aW9uXzE8aW50Pjo6ZnVuY3Rpb259IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlv bn0KLSthZGQge3BvbGljeWQyOjpmdW5jdGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsg ICAge29wZXJhdGlvbl8xPGxvbmc+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46 OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+OjpmdW5j dGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJhdGlvbl8xPGNoYXI+Ojpm dW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5 ZDM6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8 Y2hhcj46OmZ1bmN0aW9ufSBcCi0rICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259Ci0rYWRk IHtwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46OmZ1bmN0aW9ufSBcCi0rICAgIHt2 b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8YmFzZT46OmZ1bmN0aW9ufSBcCi0rICAg IHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259Ci0rYWRkIHtwb2xpY3lkNDo6ZnVuY3Rpb259IFwK LSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25fMTxiYXNlPjo6ZnVuY3Rpb259 IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0KLSthZGQge3BvbGljeWQ8dGNsYXNz PGludD4sIG9wZXJhdGlvbl8xPHRjbGFzczxpbnQ+ID4gPjo6ZnVuY3Rpb259IFwKLSsgICAge3Zv aWQgKHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+OjpmdW5jdGlvbn0g XAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5ZDU6OmZ1bmN0 aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8dGNsYXNzPGlu dD4gPjo6ZnVuY3Rpb259IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0KLSsKLSsj IFN0YXJ0IHRoZSB0ZXN0Ci0raWYgeyR0cmFjZWxldmVsfSB7Ci0rICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAotK30KLSsKLStpZiB7W3NraXBfY3BsdXNfdGVzdHNdfSB7IGNvbnRpbnVlIH0KLSsKLSsj Ci0rIyB0ZXN0IHJ1bm5pbmcgcHJvZ3JhbXMKLSsjCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdf aWQgMAotKwotK3NldCB0ZXN0ZmlsZSAiY3BleHBycyIKLStzZXQgc3JjZmlsZSAiJHt0ZXN0Zmls ZX0uY2MiCi0rc2V0IGJpbmZpbGUgW2ZpbGUgam9pbiAkb2JqZGlyICRzdWJkaXIgJHRlc3RmaWxl XQotKwotK2lmICB7W2dkYl9jb21waWxlIFtmaWxlIGpvaW4gJHNyY2RpciAkc3ViZGlyICRzcmNm aWxlXSAkYmluZmlsZSBcCi0rCSAgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0r ICAgIHVudGVzdGVkICIkdGVzdGZpbGUuZXhwIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYg e1tnZXRfY29tcGlsZXJfaW5mbyAkYmluZmlsZSAiYysrIl19IHsKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgW2ZpbGUg am9pbiAkc3JjZGlyICRzdWJkaXJdCi0rZ2RiX2xvYWQgJGJpbmZpbGUKLSsKLStpZiB7IVtydW50 b19tYWluXX0gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IgotKyAg ICBjb250aW51ZQotK30KLSsKLSsjIFNldCB0aGUgbGlzdHNpemUgdG8gb25lLiBUaGlzIHdpbGwg aGVscCB3aXRoIHRlc3RpbmcgImxpc3QiLgotK2dkYl90ZXN0ICJzZXQgbGlzdHNpemUgMSIKLSsK LSsjICJwcmludCBNRVRIT0QiCi0rZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rpb25zIHByaW50XSB7 Ci0rICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSIgW2dldCAkbmFtZSBwcmludF0gInByaW50ICRu YW1lIgotK30KLSsKLSsjICJsaXN0IE1FVEhPRCIKLStmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlv bnMgbGlzdF0gewotKyAgICBnZGJfdGVzdCAibGlzdCAkbmFtZSIgW2dldCAkbmFtZSBsaXN0XSAi bGlzdCAkbmFtZSIKLSt9Ci0rCi0rIyBSdW5uaW5nIHRvIGJyZWFrcG9pbnQgLS0gdXNlIGFueSBm dW5jdGlvbiB3ZSBjYW4gImxpc3QiCi0rZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rpb25zIGxpc3Rd IHsKLSsgICAgIyBTa2lwICJtYWluIiwgc2luY2UgdGVzdF9icmVha3BvaW50IHVzZXMgaXQKLSsg ICAgaWYge1tzdHJpbmcgY29tcGFyZSAkbmFtZSAibWFpbiJdICE9IDB9IHsKLSsJdGVzdF9icmVh a3BvaW50ICRuYW1lCi0rICAgIH0KLSt9Ci0rCi0rZ2RiX2V4aXQKLStyZXR1cm4gMAotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuY2MgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9jcGx1c2Z1bmNzLmNjCi1pbmRleCBmNGY3OGE2Li4xMWRiYTA2IDEwMDY0NAotLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYwotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYwotQEAgLTE5NSw2ICsxOTUsMTIgQEAgY2hhciAqCWRtX3R5 cGVfY2hhcl9zdGFyIChjaGFyICogcCkJCXsgcmV0dXJuIHA7IH0KLSBpbnQJZG1fdHlwZV9mb29f cmVmIChmb28gJiBmb28pCQl7IHJldHVybiBmb28uaWZvbzsgfQotIGludCAqCWRtX3R5cGVfaW50 X3N0YXIgKGludCAqIHApCQl7IHJldHVybiBwOyB9Ci0gbG9uZyAqCWRtX3R5cGVfbG9uZ19zdGFy IChsb25nICogcCkJCXsgcmV0dXJuIHA7IH0KLStpbnQJZG1fdHlwZV9zaG9ydCAoc2hvcnQgaSkJ CQl7IHJldHVybiBpOyB9Ci0raW50CWRtX3R5cGVfbG9uZyAobG9uZyBpKQkJCXsgcmV0dXJuIGk7 IH0KLSBpbnQJZG1fdHlwZV91bnNpZ25lZF9pbnQgKHVuc2lnbmVkIGludCBpKQl7IHJldHVybiBp OyB9Ci0raW50CWRtX3R5cGVfdW5zaWduZWRfc2hvcnQgKHVuc2lnbmVkIHNob3J0IGkpCXsgcmV0 dXJuIGk7IH0KLStpbnQJZG1fdHlwZV91bnNpZ25lZF9sb25nICh1bnNpZ25lZCBsb25nIGkpCXsg cmV0dXJuIGk7IH0KLSBpbnQJZG1fdHlwZV92b2lkICh2b2lkKQkJCXsgcmV0dXJuIDA7IH0KLSB2 b2lkICoJZG1fdHlwZV92b2lkX3N0YXIgKHZvaWQgKiBwKQkJeyByZXR1cm4gcDsgfQotK3R5cGVk ZWYgaW50IG15aW50OwotK2ludAlkbV90eXBlX3R5cGVkZWYgKG15aW50IGkpCQl7IHJldHVybiBp OyB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAotaW5kZXggZjMyMjU4Ni4uNDQzYWY3 YSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuZXhwCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAotQEAgLTY2LDkgKzY2LDI1IEBA IHNldCBkbV90eXBlX3Vuc2lnbmVkX2ludAkidW5zaWduZWQiCi0gc2V0IGRtX3R5cGVfdm9pZAkJ InZvaWQiCi0gc2V0IGRtX3R5cGVfdm9pZF9zdGFyCQkidm9pZCoiCi0gCi0rIyBTb21lIG90aGVy IHZhZ2FyaWVzIG9mIEdEQidzIHR5cGUgcHJpbnRpbmcgbWFjaGluZXJ5LiAgVGhlIGludGVnZXIg dHlwZXMKLSsjIG1heSBoYXZlIHVuc2lnbmVkIGJlZm9yZSBvciBhZnRlciB0aGVpciBsZW5ndGgs IGFuZCBtYXkgaGF2ZSAiaW50IgotKyMgYXBwZW5kZWQuICBUaGUgY2hhciogY29udmVyc2lvbiBv cGVyYXRvciBtYXkgaGF2ZSBuYW1lICJjaGFyKiIgZXZlbiBpZgotKyMgdGhlIHR5cGUgaXMgImNo YXIgKiIsIGJlY2F1c2UgdGhlIG5hbWUgY29tZXMgZnJvbSB0aGUgZGVidWcgaW5mb3JtYXRpb24K LSsjIGFuZCB0aGUgdHlwZSBmcm9tIEdEQi4gIEZ1bmN0aW9uIHR5cGVzIG1heSBub3Qgc2VlIHRo cm91Z2ggdHlwZWRlZnMuCi0rCi0rc2V0IGRtX3R5cGVfc2hvcnQJCSJzaG9ydCIKLStzZXQgZG1f dHlwZV9sb25nCQkibG9uZyIKLStzZXQgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAkidW5zaWduZWQg c2hvcnQiCi0rc2V0IGRtX3R5cGVfdW5zaWduZWRfbG9uZwkidW5zaWduZWQgbG9uZyIKLStzZXQg ZG1fb3BlcmF0b3JfY2hhcl9zdGFyCSJjaGFyKiIKLStzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFy X3F1b3RlZAkiY2hhclxcKiIKLStzZXQgZG1fdHlwZV90eXBlZGVmCQkwCi0rCi0gcHJvYyBwcm9i ZV9kZW1hbmdsZXIgeyB9IHsKLSAgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSAgICAgZ2xvYmFsIGRt X29wZXJhdG9yX2NvbW1hCi0rICAgIGdsb2JhbCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIKLSsgICAg Z2xvYmFsIGRtX29wZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVf Y2hhcl9zdGFyCi0gICAgIGdsb2JhbCBkbV90eXBlX2NoYXJfc3Rhcl9xdW90ZWQKLSAgICAgZ2xv YmFsIGRtX3R5cGVfZm9vX3JlZgotQEAgLTc3LDYgKzkzLDExIEBAIHByb2MgcHJvYmVfZGVtYW5n bGVyIHsgfSB7Ci0gICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2ludAotICAgICBnbG9iYWwg ZG1fdHlwZV92b2lkCi0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgotKyAgICBnbG9iYWwg ZG1fdHlwZV9zaG9ydAotKyAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAotKyAgICBn bG9iYWwgZG1fdHlwZV9sb25nCi0rICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcKLSsg ICAgZ2xvYmFsIGRtX3R5cGVfdHlwZWRlZgotIAotICAgICBzZW5kX2dkYiAicHJpbnQgJmZvbzo6 b3BlcmF0b3IsKGZvbyYpXG4iCi0gICAgIGdkYl9leHBlY3QgewotQEAgLTk3LDYgKzExOCwyNiBA QCBwcm9jIHByb2JlX2RlbWFuZ2xlciB7IH0gewotIAl9Ci0gICAgIH0KLSAKLSsgICAgc2VuZF9n ZGIgInByaW50ICZmb286Om9wZXJhdG9yIGNoYXIqKCRkbV90eXBlX3ZvaWQpXG4iCi0rICAgIGdk Yl9leHBlY3QgewotKwktcmUgIi4qZm9vOjpvcGVyYXRvciBjaGFyIFxcKlxcKHZvaWRcXCkuKlxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIHYyIGRlbWFuZ2xlciBvciBHREIgdHlwZSBwcmlu dGVyCi0rCSAgICBzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyICJjaGFyICoiCi0rCSAgICBzZXQg ZG1fb3BlcmF0b3JfY2hhcl9zdGFyX3F1b3RlZCAiY2hhciBcXCoiCi0rCSAgICBwYXNzICJkZXRl Y3QgZG1fb3BlcmF0b3JfY2hhcl9zdGFyIgotKwl9Ci0rCS1yZSAiLipmb286Om9wZXJhdG9yIGNo YXJcXCpcXChcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIHYzIGRlbWFuZ2xlcgot KwkgICAgcGFzcyAiZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3RhciIKLSsJfQotKwktcmUgIi4q JGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3Rh ciIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVjdCBkbV9vcGVyYXRvcl9jaGFy X3N0YXIiCi0rCX0KLSsgICAgfQotKwotICAgICBzZW5kX2dkYiAicHJpbnQgJmRtX3R5cGVfY2hh cl9zdGFyXG4iCi0gICAgIGdkYl9leHBlY3QgewotIAktcmUgIi4qZG1fdHlwZV9jaGFyX3N0YXJc XChjaGFyIFxcKlxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLUBAIC0xNjYsNiArMjA3LDExIEBA IHByb2MgcHJvYmVfZGVtYW5nbGVyIHsgfSB7Ci0gCSAgICAjIHYzIGRlbWFuZ2xlcgotIAkgICAg cGFzcyAiZGV0ZWN0IGRtX3R5cGVfbG9uZ19zdGFyIgotIAl9Ci0rCS1yZSAiLipkbV90eXBlX2xv bmdfc3RhclxcKGxvbmcgaW50IFxcKlxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMg R0NDIHYzIGFuZCBHREIncyB0eXBlIHByaW50ZXIKLSsJICAgIHNldCBkbV90eXBlX2xvbmdfc3Rh ciAibG9uZyBpbnQgKiIKLSsJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX2xvbmdfc3RhciIKLSsJ fQotIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotIAkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVf bG9uZ19zdGFyIgotIAl9Ci1AQCAtMjMwLDYgKzI3NiwxMDEgQEAgcHJvYyBwcm9iZV9kZW1hbmds ZXIgeyB9IHsKLSAJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3ZvaWRfc3RhciAodGltZW91dCki Ci0gCX0KLSAgICAgfQotKwotKyAgICBzZW5kX2dkYiAicHJpbnQgJmRtX3R5cGVfc2hvcnRcbiIK LSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBlX3Nob3J0XFwoc2hvcnRcXCkuKlxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJzCi0rCSAgICBw YXNzICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV9zaG9ydFxc KHNob3J0IGludFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgR0RCIHR5cGUgcHJp bnRlcgotKwkgICAgc2V0IGRtX3R5cGVfc2hvcnQgInNob3J0IGludCIKLSsJICAgIHBhc3MgImRl dGVjdCBkbV90eXBlX3Nob3J0IgotKwl9Ci0rCS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rCSAg ICBmYWlsICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZh aWwgImRldGVjdCBkbV90eXBlX3Nob3J0ICh0aW1lb3V0KSIKLSsJfQotKyAgICB9Ci0rCi0rICAg IHNlbmRfZ2RiICJwcmludCAmZG1fdHlwZV91bnNpZ25lZF9zaG9ydFxuIgotKyAgICBnZGJfZXhw ZWN0IHsKLSsJLXJlICIuKmRtX3R5cGVfdW5zaWduZWRfc2hvcnRcXCh1bnNpZ25lZCBzaG9ydFxc KS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgdjIgYW5kIHYzIGRlbWFuZ2xlcnMKLSsJ ICAgIHBhc3MgImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgotKwl9Ci0rCS1yZSAiLipk bV90eXBlX3Vuc2lnbmVkX3Nob3J0XFwoc2hvcnQgdW5zaWduZWQgaW50XFwpLipcclxuJGdkYl9w cm9tcHQgJCIgewotKwkgICAgIyBHREIgdHlwZSBwcmludGVyCi0rCSAgICBzZXQgZG1fdHlwZV91 bnNpZ25lZF9zaG9ydCAic2hvcnQgdW5zaWduZWQgaW50IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRt X3R5cGVfdW5zaWduZWRfc2hvcnQiCi0rCX0KLSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSsJ ICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgotKwl9Ci0rCXRpbWVvdXQg ewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQgKHRpbWVvdXQpIgot Kwl9Ci0rICAgIH0KLSsKLSsgICAgc2VuZF9nZGIgInByaW50ICZkbV90eXBlX2xvbmdcbiIKLSsg ICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBlX2xvbmdcXChsb25nXFwpLipcclxuJGdk Yl9wcm9tcHQgJCIgewotKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycwotKwkgICAgcGFzcyAi ZGV0ZWN0IGRtX3R5cGVfbG9uZyIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV9sb25nXFwobG9uZyBp bnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIEdEQiB0eXBlIHByaW50ZXIKLSsJ ICAgIHNldCBkbV90eXBlX2xvbmcgImxvbmcgaW50IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5 cGVfbG9uZyIKLSsJfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAiZGV0 ZWN0IGRtX3R5cGVfbG9uZyIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVjdCBk bV90eXBlX2xvbmcgKHRpbWVvdXQpIgotKwl9Ci0rICAgIH0KLSsKLSsgICAgc2VuZF9nZGIgInBy aW50ICZkbV90eXBlX3Vuc2lnbmVkX2xvbmdcbiIKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAi LipkbV90eXBlX3Vuc2lnbmVkX2xvbmdcXCh1bnNpZ25lZCBsb25nXFwpLipcclxuJGdkYl9wcm9t cHQgJCIgewotKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycwotKwkgICAgcGFzcyAiZGV0ZWN0 IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV91bnNpZ25lZF9s b25nXFwobG9uZyB1bnNpZ25lZCBpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAj IEdEQiB0eXBlIHByaW50ZXIKLSsJICAgIHNldCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcgImxvbmcg dW5zaWduZWQgaW50IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIK LSsJfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5 cGVfdW5zaWduZWRfbG9uZyIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVjdCBk bV90eXBlX3Vuc2lnbmVkX2xvbmcgKHRpbWVvdXQpIgotKwl9Ci0rICAgIH0KLSsKLSsgICAgc2Vu ZF9nZGIgInByaW50ICZkbV90eXBlX3R5cGVkZWZcbiIKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1y ZSAiLipkbV90eXBlX3R5cGVkZWZcXChpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAg ICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJzCi0rCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV90eXBl ZGVmIgotKwl9Ci0rCS1yZSAiLipkbV90eXBlX3R5cGVkZWZcXChteWludFxcKS4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJICAgICMgR0RCIHR5cGUgcHJpbnRlcgotKwkgICAgc2V0IGRtX3R5cGVf dHlwZWRlZiAxCi0rCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV90eXBlZGVmIgotKwl9Ci0rCS1y ZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV90eXBlZGVm IgotKwl9Ci0rCXRpbWVvdXQgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdHlwZWRlZiAo dGltZW91dCkiCi0rCX0KLSsgICAgfQotIH0KLSAKLSAjCi1AQCAtMzUxLDggKzQ5Miw5IEBAIHBy b2MgcHJpbnRfYWRkciB7IG5hbWUgfSB7Ci0gCi0gcHJvYyB0ZXN0X2xvb2t1cF9vcGVyYXRvcl9m dW5jdGlvbnMge30gewotICAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY29tbWEKLSsgICAgZ2xvYmFs IGRtX29wZXJhdG9yX2NoYXJfc3RhcgotICAgICBnbG9iYWwgZG1fdHlwZV9jaGFyX3N0YXIKLS0g ICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyX3F1b3RlZAotKyAgICBnbG9iYWwgZG1fb3BlcmF0 b3JfY2hhcl9zdGFyX3F1b3RlZAotICAgICBnbG9iYWwgZG1fdHlwZV9mb29fcmVmCi0gICAgIGds b2JhbCBkbV90eXBlX3ZvaWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCi1AQCAtNDEw LDggKzU1Miw4IEBAIHByb2MgdGVzdF9sb29rdXBfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKLSAK LSAgICAgaW5mb19mdW5jICJvcGVyYXRvciBpbnQoIgkiaW50IGZvbzo6b3BlcmF0b3IgaW50KCRk bV90eXBlX3ZvaWQpOyIKLSAgICAgaW5mb19mdW5jICJvcGVyYXRvcigpKCIJInZvaWQgZm9vOjpv cGVyYXRvcigpKCRkbV90eXBlX2Zvb19yZWYpOyIKLS0gICAgaW5mb19mdW5jICJvcGVyYXRvciAk ZG1fdHlwZV9jaGFyX3N0YXJfcXVvdGVkXCgiIFwKLS0JCQkJImNoYXIgKmZvbzo6b3BlcmF0b3Ig JGRtX3R5cGVfY2hhcl9zdGFyXCgkZG1fdHlwZV92b2lkKTsiCi0rICAgIGluZm9fZnVuYyAib3Bl cmF0b3IgJGRtX29wZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWRcKCIgXAotKwkJCQkiY2hhciAqZm9v OjpvcGVyYXRvciAkZG1fb3BlcmF0b3JfY2hhcl9zdGFyXCgkZG1fdHlwZV92b2lkKTsiCi0gCi0g fQotIAotQEAgLTQyNiw2ICs1NjgsNyBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rp b25zIHt9IHsKLSAgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50Ci0gICAgIGdsb2JhbCBk bV90eXBlX3ZvaWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCi0rICAgIGdsb2JhbCBk bV9vcGVyYXRvcl9jaGFyX3N0YXIKLSAKLSAgICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvcioo JGRtX3R5cGVfZm9vX3JlZikiCi0gICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IlKCRkbV90 eXBlX2Zvb19yZWYpIgotQEAgLTQ3OSw3ICs2MjIsNyBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0 b3JfZnVuY3Rpb25zIHt9IHsKLSAgICAgfQotIAotICAgICBwcmludF9hZGRyICJmb286Om9wZXJh dG9yIGludCgkZG1fdHlwZV92b2lkKSIKLS0gICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciAk ZG1fdHlwZV9jaGFyX3N0YXJcKCRkbV90eXBlX3ZvaWQpIgotKyAgICBwcmludF9hZGRyICJmb286 Om9wZXJhdG9yICRkbV9vcGVyYXRvcl9jaGFyX3N0YXJcKCRkbV90eXBlX3ZvaWQpIgotIH0KLSAK LSAjCi1AQCAtNDg5LDE3ICs2MzIsMjEgQEAgcHJvYyB0ZXN0X3BhZGRyX29wZXJhdG9yX2Z1bmN0 aW9ucyB7fSB7Ci0gcHJvYyB0ZXN0X3BhZGRyX292ZXJsb2FkZWRfZnVuY3Rpb25zIHt9IHsKLSAg ICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50Ci0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWQK LSsgICAgZ2xvYmFsIGRtX3R5cGVfc2hvcnQKLSsgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRf c2hvcnQKLSsgICAgZ2xvYmFsIGRtX3R5cGVfbG9uZwotKyAgICBnbG9iYWwgZG1fdHlwZV91bnNp Z25lZF9sb25nCi0gCi0gICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV92b2lk KSIKLSAgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGNoYXIpIgotICAgICBwcmludF9hZGRy ICJvdmVybG9hZDFhcmcoc2lnbmVkIGNoYXIpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFh cmcodW5zaWduZWQgY2hhcikiCi0tICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyhzaG9ydCki Ci0tICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyh1bnNpZ25lZCBzaG9ydCkiCi0rICAgIHBy aW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV9zaG9ydCkiCi0rICAgIHByaW50X2FkZHIg Im92ZXJsb2FkMWFyZygkZG1fdHlwZV91bnNpZ25lZF9zaG9ydCkiCi0gICAgIHByaW50X2FkZHIg Im92ZXJsb2FkMWFyZyhpbnQpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoJGRtX3R5 cGVfdW5zaWduZWRfaW50KSIKLS0gICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGxvbmcpIgot LSAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcodW5zaWduZWQgbG9uZykiCi0rICAgIHByaW50 X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV9sb25nKSIKLSsgICAgcHJpbnRfYWRkciAib3Zl cmxvYWQxYXJnKCRkbV90eXBlX3Vuc2lnbmVkX2xvbmcpIgotICAgICBwcmludF9hZGRyICJvdmVy bG9hZDFhcmcoZmxvYXQpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoZG91YmxlKSIK LSAKLUBAIC01MjIsMTcgKzY2OSwzMSBAQCBwcm9jIHRlc3RfcGFkZHJfaGFpcnlfZnVuY3Rpb25z IHt9IHsKLSAgICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyCi0gICAgIGdsb2JhbCBkbV90eXBl X2ludF9zdGFyCi0gICAgIGdsb2JhbCBkbV90eXBlX2xvbmdfc3RhcgotKyAgICBnbG9iYWwgZG1f dHlwZV90eXBlZGVmCi0gCi0gICAgIHByaW50X2FkZHJfMiAiaGFpcnlmdW5jMSIgImhhaXJ5ZnVu YzEoaW50KSIKLS0gICAgcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihpbnQg KCopKCRkbV90eXBlX2NoYXJfc3RhcikpIgotLSAgICBwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzMi ICJoYWlyeWZ1bmMzKGludCAoKikoc2hvcnQgKCopKCRkbV90eXBlX2xvbmdfc3RhcikpKSIKLS0g ICAgcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmM0IiAiaGFpcnlmdW5jNChpbnQgKCopKHNob3J0ICgq KSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkiCi0tCi0tICAgICMgZ2RiLWduYXRzIGJ1ZyBnZGIvMTk6 Ci0tICAgICMgImdkYiB2MyBkZW1hbmdsZXIgZmFpbHMgb24gaGFpcnlmdW5jNSBoYWlyeWZ1bmM2 IGhhaXJ5ZnVuYzciCi0tICAgIHByaW50X2FkZHJfMl9rZmFpbCAiaGFpcnlmdW5jNSIgImhhaXJ5 ZnVuYzUoaW50ICgqKCopKCRkbV90eXBlX2NoYXJfc3RhcikpKGxvbmcpKSIgImhhaXJ5ZnVuYzUo aW50ICgqKShsb25nKSAoKikoY2hhciopKSIgImdkYi8xOSIKLS0gICAgcHJpbnRfYWRkcl8yX2tm YWlsICJoYWlyeWZ1bmM2IiAiaGFpcnlmdW5jNihpbnQgKCooKikoJGRtX3R5cGVfaW50X3N0YXIp KShsb25nKSkiICJoYWlyeWZ1bmM2KGludCAoKikobG9uZykgKCopKGludCopKSIgImdkYi8xOSIK LS0gICAgcHJpbnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM3IiAiaGFpcnlmdW5jNyhpbnQgKCoo KikoaW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkobG9uZykpIiAiaGFpcnlmdW5jNyhpbnQg KCopKGxvbmcpICgqKShpbnQgKCopKGNoYXIqKSkpIiAiZ2RiLzE5IgotKwotKyAgICBpZiB7JGRt X3R5cGVfdHlwZWRlZiA9PSAwfSB7Ci0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jMiIgImhhaXJ5 ZnVuYzIoaW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSIKLSsJcHJpbnRfYWRkcl8yICJoYWly eWZ1bmMzIiAiaGFpcnlmdW5jMyhpbnQgKCopKHNob3J0ICgqKSgkZG1fdHlwZV9sb25nX3N0YXIp KSkiCi0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jNCIgImhhaXJ5ZnVuYzQoaW50ICgqKShzaG9y dCAoKikoJGRtX3R5cGVfY2hhcl9zdGFyKSkpIgotKwotKwkjIGdkYi1nbmF0cyBidWcgZ2RiLzE5 OgotKwkjICJnZGIgdjMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUgaGFpcnlmdW5jNiBo YWlyeWZ1bmM3IgotKwlwcmludF9hZGRyXzJfa2ZhaWwgImhhaXJ5ZnVuYzUiICJoYWlyeWZ1bmM1 KGludCAoKigqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKShsb25nKSkiICJoYWlyeWZ1bmM1KGludCAo KikobG9uZykgKCopKGNoYXIqKSkiICJnZGIvMTkiCi0rCXByaW50X2FkZHJfMl9rZmFpbCAiaGFp cnlmdW5jNiIgImhhaXJ5ZnVuYzYoaW50ICgqKCopKCRkbV90eXBlX2ludF9zdGFyKSkobG9uZykp IiAiaGFpcnlmdW5jNihpbnQgKCopKGxvbmcpICgqKShpbnQqKSkiICJnZGIvMTkiCi0rCXByaW50 X2FkZHJfMl9rZmFpbCAiaGFpcnlmdW5jNyIgImhhaXJ5ZnVuYzcoaW50ICgqKCopKGludCAoKiko JGRtX3R5cGVfY2hhcl9zdGFyKSkpKGxvbmcpKSIgImhhaXJ5ZnVuYzcoaW50ICgqKShsb25nKSAo KikoaW50ICgqKShjaGFyKikpKSIgImdkYi8xOSIKLSsgICAgfSBlbHNlIHsKLSsJcHJpbnRfYWRk cl8yICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihQRlBjX2kpIgotKwlwcmludF9hZGRyXzIgImhh aXJ5ZnVuYzMiICJoYWlyeWZ1bmMzKFBGUEZQbF9zX2kpIgotKwlwcmludF9hZGRyXzIgImhhaXJ5 ZnVuYzQiICJoYWlyeWZ1bmM0KFBGUEZQY19zX2kpIgotKwotKwkjIGdkYi1nbmF0cyBidWcgZ2Ri LzE5OgotKwkjICJnZGIgdjMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUgaGFpcnlmdW5j NiBoYWlyeWZ1bmM3IgotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzUiICJoYWlyeWZ1bmM1KFBG UGNfUEZsX2kpIgotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzYiICJoYWlyeWZ1bmM2KFBGUGlf UEZsX2kpIgotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzciICJoYWlyeWZ1bmM3KFBGUEZQY19p X1BGbF9pKSIKLSsgICAgfQotIH0KLSAKLSBwcm9jIGRvX3Rlc3RzIHt9IHsKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jdHRpLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N0 dGkuZXhwCi1pbmRleCA0NTRjNmY0Li44Zjg4YWQ3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvY3R0aS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N0dGkuZXhwCi1A QCAtODUsMTEgKzg1LDYgQEAgZ2RiX3Rlc3QgInByaW50IGMiICJcXCRcWzAtOVxdKyA9IDE5NCAu KiIKLSBnZGJfdGVzdCAicHJpbnQgZiIgIlxcJFxbMC05XF0rID0gOSIKLSBnZGJfdGVzdCAicHJp bnQgaSIgIlxcJFxbMC05XF0rID0gNCIKLSAKLS0jIFRPRE86IHRoaXMgbmVlZHMgbW9yZSB3b3Jr IGJlZm9yZSBhY3R1YWxseSBkZXBsb3lpbmcgaXQuCi0tIyBTbyBiYWlsIG91dCBoZXJlLgotLQot LWlmIHsgWyB0ZXN0X2NvbXBpbGVyX2luZm8gZ2NjLSpdIH0gdGhlbiB7IGNvbnRpbnVlIH0KLS0K LSBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgYWRkPGludD4oMiwyKSIgInByaW50IGFkZDxpbnQ+ KDIsMikiIHsKLSAgICAgLXJlICJcXCRcWzAtOVxdKyA9IDRcclxuJGdkYl9wcm9tcHQgJCIgewot IAlwYXNzICJwcmludCBhZGQ8aW50PigyLDIpIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2V4Y2VwdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leGNlcHRpb24uZXhw Ci1pbmRleCA0Nzg5MGYxLi4wM2M4ODQ3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvZXhjZXB0aW9uLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhjZXB0aW9uLmV4 cAotQEAgLTE0Niw3ICsxNDYsOSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1l IHsKLSAKLSBzZXQgbmFtZSAiYmFja3RyYWNlIGFmdGVyIGZpcnN0IHRocm93IgotIGdkYl90ZXN0 X211bHRpcGxlICJiYWNrdHJhY2UiICRuYW1lIHsKLS0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9 KCRoZXggaW4gfClfX2N4YV90aHJvdy4qI1xbMC05XF0rJHt3c30kaGV4IGluIGZvbyBcXChpPTIw XFwpIGF0IC4qJHtzcmNmaWxlfTpcWzAtOVxdK1xyXG4jXFswLTlcXSske3dzfSRoZXggaW4gbWFp biBcXCguKlxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuJGdkYl9wcm9tcHQgJCIgewot KyAgICAtcmUgIi4qI1xbMC05XF0rLipcW1xbOjw6XF1cXV9fY3hhX3Rocm93XFtcWzo+OlxdXF0u KiNcWzAtOVxdKyR7d3N9JGhleCBpbiBmb28gXFwoaT0yMFxcKSBhdCAuKiR7c3JjZmlsZX06XFsw LTlcXStcclxuI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLioke3NyY2Zp bGV9OlxbMC05XF0rXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBFaXRoZXIgX19jeHhhYml2MTo6 X19jeGFfdGhyb3cgb3IgX19jeGFfdGhyb3cgY2FuIGJlIHByaW50ZWQKLSsJIyBkZXBlbmRpbmcg b24gZGVidWcgaW5mbyBwcmVzZW5jZS4KLSAJcGFzcyAkbmFtZQotICAgICB9Ci0gfQotQEAgLTE2 OCw3ICsxNzAsNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1lIHsKLSAKLSBz ZXQgbmFtZSAiYmFja3RyYWNlIGFmdGVyIGZpcnN0IGNhdGNoIgotIGdkYl90ZXN0X211bHRpcGxl ICJiYWNrdHJhY2UiICRuYW1lIHsKLS0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4g fClfX2N4YV9iZWdpbl9jYXRjaC4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkg YXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIC1yZSAiLioj XFswLTlcXSsuKlxbXFs6PDpcXVxdX19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05 XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4k Z2RiX3Byb21wdCAkIiB7Ci0gCXBhc3MgJG5hbWUKLSAgICAgfQotIH0KLUBAIC0xOTAsNyArMTky LDcgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkbmFtZSB7Ci0gCi0gc2V0IG5hbWUg ImJhY2t0cmFjZSBhZnRlciBzZWNvbmQgdGhyb3ciCi0gZ2RiX3Rlc3RfbXVsdGlwbGUgImJhY2t0 cmFjZSIgJG5hbWUgewotLSAgICAtcmUgIi4qI1xbMC05XF0rJHt3c30oJGhleCBpbiB8KV9fY3hh X3Rocm93LiojXFswLTlcXSske3dzfSRoZXggaW4gZm9vIFxcKGk9MjBcXCkgYXQgLioke3NyY2Zp bGV9OlxbMC05XF0rXHJcbiNcWzAtOVxdKyR7d3N9JGhleCBpbiBtYWluIFxcKC4qXFwpIGF0IC4q JHtzcmNmaWxlfTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIC1yZSAiLiojXFsw LTlcXSsuKlxbXFs6PDpcXVxdX19jeGFfdGhyb3dcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30k aGV4IGluIGZvbyBcXChpPTIwXFwpIGF0IC4qJHtzcmNmaWxlfTpcWzAtOVxdK1xyXG4jXFswLTlc XSske3dzfSRoZXggaW4gbWFpbiBcXCguKlxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxu JGdkYl9wcm9tcHQgJCIgewotIAlwYXNzICRuYW1lCi0gICAgIH0KLSB9Ci1AQCAtMjEyLDcgKzIx NCw3IEBAIGdkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgJG5hbWUgewotIAotIHNldCBuYW1l ICJiYWNrdHJhY2UgYWZ0ZXIgc2Vjb25kIGNhdGNoIgotIGdkYl90ZXN0X211bHRpcGxlICJiYWNr dHJhY2UiICRuYW1lIHsKLS0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClfX2N4 YV9iZWdpbl9jYXRjaC4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiok c3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIC1yZSAiLiojXFswLTlc XSsuKlxbXFs6PDpcXVxdX19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3 c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3By b21wdCAkIiB7Ci0gCXBhc3MgJG5hbWUKLSAgICAgfQotIH0KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBh bmQtc2Fscy5leHAKLWluZGV4IDI1ZWM0YTkuLmU0ZmQ1OWIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L2V4cGFuZC1zYWxzLmV4cAotQEAgLTQ2LDcgKzQ2LDcgQEAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImNhbGxlciIgIi4qY2FsbGVyLWxpbmUuKiIKLSAKLSAjIFRlc3QgR0RCIGNhdWdodCB0 aGlzIHJldHVybiBjYWxsIGFuZCBub3QgdGhlIG5leHQgb25lIHRocm91Z2ggQjo6QigpCi0gZ2Ri X3Rlc3QgImJ0IiBcCi0tCSAiIzAgXFteXHJcblxdKiBBIFxbXlxyXG5cXSpcclxuIzEgXFteXHJc blxdKiBtYWluIFxbXlxyXG5cXSoiIFwKLSsJICIjMCBcW15cclxuXF0qIChBOjopP0EgXFteXHJc blxdKlxyXG4jMSBcW15cclxuXF0qIG1haW4gXFteXHJcblxdKiIgXAotIAkgImJ0IGZyb20gQSIK LSAKLSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibmV4dCBjYWxsZXIgZnVuYyIgIi4qZnVu Yy1saW5lLioiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi43ODNjOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9nZGI5NTkzLmNjCi1AQCAtMCwwICsxLDE4MCBAQAotKy8qIFRoaXMgdGVzdGNhc2Ug aXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDgs IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rICAgKi8KLSsjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rCi0r dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSsKLStjbGFzcyBOZXh0T3ZlclRocm93RGVyaXZhdGVzCi0r ewotKwotK3B1YmxpYzoKLSsKLSsKLSsgIC8vIFNpbmdsZSB0aHJvdyBhbiBleGNlcHRpb24gaW4g dGhpcyBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rpb24xKCkgCi0rICB7Ci0rICAgIHRocm93IDIw OwotKyAgfQotKwotKyAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGluIGFub3RoZXIgZnVuY3Rpb24u Ci0rICB2b2lkIGZ1bmN0aW9uMigpIAotKyAgewotKyAgICBmdW5jdGlvbjEoKTsKLSsgIH0KLSsK LSsgIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9uLCBidXQgaGFuZGxl IGl0Ci0rICAvLyBsb2NhbGx5LgotKyAgdm9pZCBmdW5jdGlvbjMgKCkgCi0rICB7Ci0rICAgIHsK LSsgICAgICB0cnkKLSsJewotKwkgIGZ1bmN0aW9uMSAoKTsKLSsJfQotKyAgICAgIGNhdGNoICgu Li4pIAotKwl7Ci0rCSAgY291dCA8PCAiQ2F1Z2h0IGFuZCBoYW5kbGVkIGZ1bmN0aW9uMSBleGNl cHRpb24iIDw8IGVuZGw7Ci0rCX0KLSsgICAgfQotKyAgfQotKwotKyAgdm9pZCByZXRocm93ICgp Ci0rICB7Ci0rICAgIHRyeQotKyAgICAgIHsKLSsJZnVuY3Rpb24xICgpOwotKyAgICAgIH0KLSsg ICAgY2F0Y2ggKC4uLikKLSsgICAgICB7Ci0rCXRocm93OwotKyAgICAgIH0KLSsgIH0KLSsKLSsg IHZvaWQgZmluaXNoICgpCi0rICB7Ci0rICAgIC8vIFdlIHVzZSB0aGlzIHRvIHRlc3QgdGhhdCBh ICJmaW5pc2giIGhlcmUgZG9lcyBub3QgZW5kIHVwIGluCi0rICAgIC8vIHRoaXMgZnJhbWUsIGJ1 dCBpbiB0aGUgb25lIGFib3ZlLgotKyAgICB0cnkKLSsgICAgICB7Ci0rCWZ1bmN0aW9uMSAoKTsK LSsgICAgICB9Ci0rICAgIGNhdGNoIChpbnQgeCkKLSsgICAgICB7Ci0rICAgICAgfQotKyAgICBm dW5jdGlvbjEgKCk7CQkvLyBtYXJrZXIgZm9yIHVudGlsCi0rICB9Ci0rCi0rICB2b2lkIHVudGls ICgpCi0rICB7Ci0rICAgIGZ1bmN0aW9uMSAoKTsKLSsgICAgZnVuY3Rpb24xICgpOwkJLy8gdW50 aWwgaGVyZQotKyAgfQotKwotK307Ci0rTmV4dE92ZXJUaHJvd0Rlcml2YXRlcyBuZXh0X2Nhc2Vz OwotKwotKwotK2ludCBtYWluICgpIAotK3sgCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRf Y2FzZXMuZnVuY3Rpb24xICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAg ICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2Fz ZXMuZnVuY3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAg Ly8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICB0cnkKLSsgICAgewotKyAgICAgIC8vIFRoaXMgaXMg ZHVwbGljYXRlZCBzbyB3ZSBjYW4gbmV4dCBvdmVyIG9uZSBidXQgc3RlcCBpbnRvCi0rICAgICAg Ly8gYW5vdGhlci4KLSsgICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMiAoKTsKLSsgICAgfQotKyAg Y2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsgICAgfQotKwotKyAgbmV4 dF9jYXNlcy5mdW5jdGlvbjMgKCk7Ci0rCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2Fz ZXMucmV0aHJvdyAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8v IERpc2NhcmQKLSsgICAgfQotKwotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICAvLyBBbm90aGVyIGR1 cGxpY2F0ZSBzbyB3ZSBjYW4gdGVzdCAiZmluaXNoIi4KLSsgICAgICBuZXh0X2Nhc2VzLmZ1bmN0 aW9uMiAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8vIERpc2Nh cmQKLSsgICAgfQotKwotKyAgLy8gQW5vdGhlciB0ZXN0IGZvciAiZmluaXNoIi4KLSsgIHRyeQot KyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy5maW5pc2ggKCk7Ci0rICAgIH0KLSsgIGNhdGNoICgu Li4pCi0rICAgIHsKLSsgICAgfQotKwotKyAgLy8gVGVzdCBvZiAidW50aWwiLgotKyAgdHJ5Ci0r ICAgIHsKLSsgICAgICBuZXh0X2Nhc2VzLmZpbmlzaCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4u LikKLSsgICAgewotKyAgICB9Ci0rCi0rICAvLyBUZXN0IG9mICJ1bnRpbCIgd2l0aCBhbiBhcmd1 bWVudC4KLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKLSsgICAg fQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0rCi0rICAvLyBUZXN0IG9mICJhZHZh bmNlIi4KLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKLSsgICAg fQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0rfQotKwotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2Ri OTU5My5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZTlhZWZmCi0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAotQEAg LTAsMCArMSwxODUgQEAKLSsjIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsKLStp ZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK2lm IHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IHBybXNfaWQgOTU5 MwotK3NldCBidWdfaWQgMAotKwotK3NldCB0ZXN0ZmlsZSAiZ2RiOTU5MyIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jYwotK3NldCBiaW5maWxlICRvYmpkaXIvJHN1YmRpci8kdGVzdGZpbGUK LSsKLSsjIENyZWF0ZSBhbmQgc291cmNlIHRoZSBmaWxlIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRp b24gYWJvdXQgdGhlIGNvbXBpbGVyCi0rIyB1c2VkIHRvIGNvbXBpbGUgdGhlIHRlc3QgY2FzZS4K LStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfSAiYysrIl0gewotKyAgICB1bnRlc3Rl ZCBnZGI5NTkzLmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rIyBTb21lIHRhcmdldHMgY2FuJ3QgZG8gZnVuY3Rpb24gY2FsbHMs IHNvIGRvbid0IGV2ZW4gYm90aGVyIHdpdGggdGhpcwotKyMgdGVzdC4KLStpZiBbdGFyZ2V0X2lu Zm8gZXhpc3RzIGdkYixjYW5ub3RfY2FsbF9mdW5jdGlvbnNdIHsKLSsgICAgc2V0dXBfeGZhaWwg IiotKi0qIiA5NTkzCi0rICAgIGZhaWwgIlRoaXMgdGFyZ2V0IGNhbiBub3QgY2FsbCBmdW5jdGlv bnMiCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwot K2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1h aW4iCi0rICAgIGNvbnRpbnVlCi0rfSAKLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhlIG5l ZWRlZCB1bndpbmRlciBob29rcy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRpcGxlICJwcmlu dCBfVW53aW5kX0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7Ci0rICAgIC1y ZSAiPSAuKl9VbndpbmRfRGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICJj aGVjayBmb3IgdW53aW5kZXIgaG9vayIKLSsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBp biBjdXJyZW50IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBQYXNzIHRoZSB0ZXN0 IHNvIHdlIGRvbid0IGdldCBib2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KLSsJcGFzcyAiY2hl Y2sgZm9yIHVud2luZGVyIGhvb2siCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9 IHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMg U2VlIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9OTU5Mwot KwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICAgIm5l eHQgb3ZlciBhIHRocm93IDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2Fz ZXMuZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggMSIKLSsKLStnZGJfdGVzdCAi bmV4dCIgXAotKyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJv dyAyIgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4q IiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDIiCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIu KmZ1bmN0aW9uMSgpLioiIFwKLSsgICJzdGVwIGludG8gZnVuY3Rpb24yIDEiCi0rCi0rZ2RiX3Rl c3QgIm5leHQiIFwKLSsgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgICAibmV4dCBvdmVyIGEg dGhyb3cgMyIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlv bjMuKiIgXAotKyAgIm5leHQgcGFzdCBjYXRjaCAzIgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0r ICAiLipuZXh0X2Nhc2VzLnJldGhyb3cuKiIgXAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgNCIK LSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgIm5leHQg b3ZlciBhIHJldGhyb3ciCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMu ZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IGFmdGVyIGEgcmV0aHJvdyIKLSsKLStnZGJfdGVzdCAi c3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xKCkuKiIgXAotKyAgInN0ZXAgaW50byBmdW5jdGlvbjIg MiIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAi ZmluaXNoIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZmluaXNo ICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNCIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAot KyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGludG8gZmluaXNoIG1ldGhvZCIKLSsK LStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNo IDIiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioi IFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNSIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4q ZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGludG8gZmluaXNoLCBmb3IgdW50aWwiCi0rCi0r Z2RiX3Rlc3QgInVudGlsIiBcCi0rICAiLipjYXRjaCAuaW50IHguKiIgXAotKyAgInVudGlsIHdp dGggbm8gYXJndW1lbnQgMSIKLSsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFy a2VyIGZvciB1bnRpbCIgJHRlc3RmaWxlLmNjXQotKwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIg XAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNiIKLSsKLStn ZGJfdGVzdCAidW50aWwiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJ1bnRpbCB3aXRo IG5vIGFyZ3VtZW50IDIiCi0rCi0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgInVudGls IGhlcmUiICR0ZXN0ZmlsZS5jY10KLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9j YXNlcy51bnRpbCAoKS4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDYiCi0rCi0rZ2RiX3Rlc3Qg InN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0rICAic3RlcCBpbnRvIHVudGlsIgot KwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAg InVudGlsLW92ZXItdGhyb3ciCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2Fz ZXMudW50aWwgKCkuKiIgXAotKyAgIm5leHQgcGFzdCBjYXRjaCA3IgotKwotK2dkYl90ZXN0ICJz dGVwIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAgInN0ZXAgaW50byB1bnRpbCwgZm9y IGFkdmFuY2UiCi0rCi0rZ2RiX3Rlc3QgImFkdmFuY2UgJGxpbmUiIFwKLSsgICIuKmNhdGNoICgu Li4pLioiIFwKLSsgICJhZHZhbmNlLW92ZXItdGhyb3ciCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbS1zdGF0aWMuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tLXN0YXRpYy5j YwotaW5kZXggMmEwYjYxYy4uN2Y5OTdlZiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL20tc3RhdGljLmNjCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tLXN0YXRpYy5jYwot QEAgLTE1LDYgKzE1LDEyIEBAIHByb3RlY3RlZDoKLSAKLSBwdWJsaWM6Ci0gICBnbnVfb2JqXzEo YW50aXF1aXRpZXMgYSwgbG9uZyBsKSB7fQotKwotKyAgbG9uZyBtZXRob2QgKCkKLSsgIHsKLSsg ICAgc3RhdGljIGJvb2wgc3ZhciA9IHRydWU7Ci0rICAgIHJldHVybiBrZXkyOwotKyAgfQotIH07 Ci0gCi0gY29uc3QgYm9vbCBnbnVfb2JqXzE6OnRlc3Q7Ci1AQCAtNzAsNSArNzYsOCBAQCBpbnQg bWFpbigpCi0gCi0gICB0ZXN0NC5kdW1teSA9IHRlc3Q0LmVsc2V3aGVyZTsKLSAgIHRlc3Q0LmR1 bW15ID0gMDsKLS0gIHJldHVybiB0ZXN0NC5kdW1teTsJLy8gYnJlYWtwb2ludDogY29uc3RydWN0 cy1kb25lCi0rCi0rICB0ZXN0MS5tZXRob2QgKCk7IC8vIGJyZWFrcG9pbnQ6IGNvbnN0cnVjdHMt ZG9uZQotKwotKyAgcmV0dXJuIHRlc3Q0LmR1bW15OwotIH0KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9tLXN0YXRpYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tLXN0YXRp Yy5leHAKLWluZGV4IGYyMDc0NjIuLjdiNGUwY2EgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9tLXN0YXRpYy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGlj LmV4cAotQEAgLTEzMiw1ICsxMzIsMTAgQEAgZ2RiX3Rlc3QgInByaW50IHRlc3Q0Lm5vd2hlcmUi ICJmaWVsZCBub3doZXJlIGlzIG5vbmV4aXN0ZW50IG9yIGhhcyBiZWVuIG9wdGltaXMKLSAjIHRo YXQgR0RCJ3MgY3VycmVudCBiZWhhdmlvciBpbiBzdWNoIHNpdHVhdGlvbnMgaXMgZWl0aGVyIGNv bnNpc3RlbnQKLSAjIGFjcm9zcyBwbGF0Zm9ybXMgb3Igb3B0aW1hbCwgc28gSSdtIG5vdCBpbmNs dWRpbmcgb25lIG5vdy4KLSAKLSsjIFN0ZXAgaW50byB0ZXN0MS5tZXRob2QgYW5kIGV4YW1pbmUg dGhlIG1ldGhvZC1zY29wZWQgc3RhdGljLgotKyMgVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBm b3IgUFIgOTcwOC4KLStnZGJfdGVzdCAic3RlcCIgImdudV9vYmpfMTo6bWV0aG9kLioiCi0rZ2Ri X3Rlc3QgInByaW50IHN2YXIiICIgPSB0cnVlIgotKwotIGdkYl9leGl0Ci0gcmV0dXJuIDAKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmNjIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5jYwotaW5kZXggZmZmZmI0Yy4uYjQwNmE1OSAxMDA2NDQK LS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MKLUBAIC0xMzgsNiArMTM4LDcgQEAgY2xhc3MgRGlh bW9uZCA6IHB1YmxpYyBQYWRkaW5nLCBwdWJsaWMgTGVmdCwgcHVibGljIFJpZ2h0Ci0gewotIHB1 YmxpYzoKLSAgIHZpcnR1YWwgaW50IHZnZXRfYmFzZSAoKTsKLSsgIGludCAoKmZ1bmNfcHRyKSAo aW50KTsKLSB9OwotIAotIGludCBEaWFtb25kOjp2Z2V0X2Jhc2UgKCkKLUBAIC0xNDUsNiArMTQ2 LDEyIEBAIGludCBEaWFtb25kOjp2Z2V0X2Jhc2UgKCkKLSAgIHJldHVybiB0aGlzLT5MZWZ0Ojp4 ICsgMjAwMDsKLSB9Ci0gCi0raW50Ci0rZnVuYyAoaW50IHgpCi0rewotKyAgcmV0dXJuIDE5ICsg eDsKLSt9Ci0rCi0gaW50IG1haW4gKCkKLSB7Ci0gICBBIGE7Ci1AQCAtMTYyLDYgKzE2OSw3IEBA IGludCBtYWluICgpCi0gICBpbnQgKERpYW1vbmQ6OipyaWdodF92cG1mKSAoKTsKLSAgIGludCAo QmFzZTo6KmJhc2VfdnBtZikgKCk7Ci0gICBpbnQgRGlhbW9uZDo6KmRpYW1vbmRfcG1pOwotKyAg aW50ICgqIERpYW1vbmQ6OipkaWFtb25kX3BmdW5jX3B0cikgKGludCk7Ci0gCi0gICBQTUkgbnVs bF9wbWk7Ci0gICBQTUYgbnVsbF9wbWY7Ci1AQCAtMTc5LDYgKzE4Nyw3IEBAIGludCBtYWluICgp Ci0gCi0gICBkaWFtb25kLkxlZnQ6OnggPSA3NzsKLSAgIGRpYW1vbmQuUmlnaHQ6OnggPSA4ODsK LSsgIGRpYW1vbmQuZnVuY19wdHIgPSBmdW5jOwotIAotICAgLyogU29tZSB2YWxpZCBwb2ludGVy IHRvIG1lbWJlcnMgZnJvbSBhIGJhc2UgY2xhc3MuICAqLwotICAgbGVmdF9wbWYgPSAoaW50IChE aWFtb25kOjoqKSAoKSkgKGludCAoTGVmdDo6KikgKCkpICgmQmFzZTo6Z2V0X3gpOwotQEAgLTE5 MywxMSArMjAyLDE5IEBAIGludCBtYWluICgpCi0gICAvKiBBIHBvaW50ZXIgdG8gZGF0YSBtZW1i ZXIgZnJvbSBhIGJhc2UgY2xhc3MuICAqLwotICAgZGlhbW9uZF9wbWkgPSAoaW50IERpYW1vbmQ6 OiopIChpbnQgTGVmdDo6KikgJkJhc2U6Ong7Ci0gCi0rICAvKiBBIHBvaW50ZXIgdG8gZGF0YSBt ZW1iZXIsIHdoZXJlIHRoZSBtZW1iZXIgaXMgaXRzZWxmIGEgcG9pbnRlciB0bwotKyAgICAgYSBm dW5jdGlvbi4gICovCi0rICBkaWFtb25kX3BmdW5jX3B0ciA9IChpbnQgKCogRGlhbW9uZDo6Kikg KGludCkpICZEaWFtb25kOjpmdW5jX3B0cjsKLSsKLSAgIG51bGxfcG1pID0gTlVMTDsKLSAgIG51 bGxfcG1mID0gTlVMTDsKLSAKLSAgIHBtaSA9IE5VTEw7IC8qIEJyZWFrcG9pbnQgMSBoZXJlLiAg Ki8KLSAKLSsgIC8vIEludmFsaWQgKHVzZXMgZGlhbW9uZF9wZnVuY19wdHIgYXMgYSBmdW5jdGlv bik6Ci0rICAvLyBkaWFtb25kLipkaWFtb25kX3BmdW5jX3B0ciAoMjApOwotKyAgKGRpYW1vbmQu KmRpYW1vbmRfcGZ1bmNfcHRyKSAoMjApOwotKwotICAgayA9IChhLipwbWYpKDMpOwotIAotICAg cG1pID0gJkE6OmpqOwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1w dHIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAKLWluZGV4IDY4MzJm M2IuLmJhZjA4ZDcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRy LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAKLUBAIC0zOTAs NiArMzkwLDMzIEBAIGdkYl90ZXN0X211bHRpcGxlICJwcmludCAoKGludCkgcG1pKSA9PSAoKGNo YXIgKikgJmEuaiAtIChjaGFyICopICYgYSkiICRuYW1lIHsKLSAgICAgfQotIH0KLSAKLSsjIENo ZWNrIHBvaW50ZXJzIHRvIGRhdGEgbWVtYmVycywgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgcG9pbnRl cnMgdG8KLSsjIGZ1bmN0aW9ucy4gIFRoZXNlIGJlaGF2ZSBsaWtlIGRhdGEgbWVtYmVycywgbm90 IGxpa2UgcG9pbnRlcnMgdG8KLSsjIG1lbWJlciBmdW5jdGlvbnMuCi0rCi0rZ2RiX3Rlc3QgInB0 eXBlIGRpYW1vbmRfcGZ1bmNfcHRyIiBcCi0rICAgICJ0eXBlID0gaW50IFxcKFxcKkRpYW1vbmQ6 OlxcKlxcKVxcKGludFxcKSIKLSsKLStnZGJfdGVzdCAicHR5cGUgZGlhbW9uZC4qZGlhbW9uZF9w ZnVuY19wdHIiIFwKLSsgICAgInR5cGUgPSBpbnQgXFwoXFwqXFwpXFwoaW50XFwpIgotKwotKyMg VGhpcyBvbmUgaXMgaW52YWxpZDsgKCkgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gLiosIHNvIGl0 IHRyaWVzIHRvCi0rIyBjYWxsIHRoZSBtZW1iZXIgcG9pbnRlciBhcyBhIG5vcm1hbCBwb2ludGVy LXRvLWZ1bmN0aW9uLgotKwotK2dkYl90ZXN0ICJwcmludCBkaWFtb25kLipkaWFtb25kX3BmdW5j X3B0ciAoMjApIiBcCi0rICAgICJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZnVuY3Rpb24gdG8gYmUg Y2FsbGVkLiIKLSsKLSsjIFdpdGggcGFyZW50aGVzZXMsIGl0IGlzIHZhbGlkLgotKwotK2dkYl90 ZXN0ICJwcmludCAoZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19wdHIpICgyMCkiIFwKLSsgICAgIiR2 aG4gPSAzOSIKLSsKLSsjIE1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBpbnRlcnByZXQgdGhpcyBh cyBlaXRoZXIgYSBtZW1iZXIgcG9pbnRlcgotKyMgY2FsbCBvciBhIG1lbWJlciBmdW5jdGlvbiBj YWxsLgotKwotK2dkYl90ZXN0ICJwcmludCBkaWFtb25kLmZ1bmNfcHRyICgyMCkiIFwKLSsgICAg IiR2aG4gPSAzOSIKLSsKLSAjID09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIyBwb2ludGVy IHRvIG1lbWJlciBmdW5jdGlvbgotICMgPT09PT09PT09PT09PT09PT09PT09PT09PT0KLUBAIC00 MjAsNyArNDQ3LDcgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInB0eXBlIHBtZiIgJG5hbWUgewotIAot IHNldCBuYW1lICJwcmludCBwbWYiCi0gZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IHBtZiIgJG5h bWUgewotLSAgICAtcmUgIiR2aG4gPSAkaGV4IDxBOjpiYXJcXChpbnRcXCk+XHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsgICAgLXJlICIkdmhuID0gXFwoaW50IFxcKEE6OlxcKlxcKVxcKEEgXFwqLCBp bnRcXClcXCkgJGhleCA8QTo6YmFyXFwoaW50XFwpPlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0gCXBh c3MgJG5hbWUKLSAgICAgfQotICAgICAtcmUgIiR2aG4gPSAuKm5vdCBzdXBwb3J0ZWQgd2l0aCBI UCBhQ0MuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci1AQCAtNjA4LDYgKzYzNSw5IEBAIGdkYl90ZXN0 X211bHRpcGxlICJwcmludCAoYS4qcG1mKSgzKSIgJG5hbWUgewotICAgICB9Ci0gfQotIAotK2dk Yl90ZXN0ICJwdHlwZSBhLipwbWYiICJ0eXBlID0gaW50IFxcKEEgXFwqLCBpbnRcXCkiCi0rZ2Ri X3Rlc3QgInB0eXBlIChhLipwbWYpKDMpIiAidHlwZSA9IGludCIKLSsKLSAjIFByaW50IG91dCBh IHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgd2hpY2ggcmVxdWlyZXMgbG9va2luZyBpbnRvCi0gIyBh IGJhc2UgY2xhc3MuCi0gZ2RiX3Rlc3QgInByaW50IGRpYW1vbmRfcG1pIiAiJHZobiA9ICZCYXNl Ojp4IgotQEAgLTY1OCw1ICs2ODgsNSBAQCBnZGJfdGVzdCAicHJpbnQgbnVsbF9wbWkgPSAmQTo6 aiIgIiR2aG4gPSAmQTo6aiIKLSBnZGJfdGVzdCAicHJpbnQgbnVsbF9wbWkgPSAwIiAiJHZobiA9 IE5VTEwiCi0gCi0gZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mIiAiJHZobiA9IE5VTEwiCi0tZ2Ri X3Rlc3QgInByaW50IG51bGxfcG1mID0gJkE6OmZvbyIgIiR2aG4gPSAkaGV4IDxBOjpmb28gP1xc KGludFxcKT4iCi0rZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0gJkE6OmZvbyIgIiR2aG4gPSBc XChpbnQgXFwoQTo6XFwqXFwpXFwoQSBcXCosIGludFxcKVxcKSAkaGV4IDxBOjpmb28gP1xcKGlu dFxcKT4iCi0gZ2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0gMCIgIiR2aG4gPSBOVUxMIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1rb2VuaWcuY2MgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Uta29lbmlnLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uM2MzMGNiMgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlLWtvZW5pZy5jYwotQEAgLTAsMCArMSwyMzIgQEAKLStuYW1l c3BhY2UgQQotK3sKLSsgIGNsYXNzIEMKLSsgIHsKLSsgIHB1YmxpYzoKLSsgICAgc3RhdGljIGNv bnN0IGludCB4ID0gMTE7Ci0rICB9OwotKwotKyAgaW50Ci0rICBmaXJzdCAoQyBjKQotKyAgewot KyAgICByZXR1cm4gMTE7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIGZpcnN0IChpbnQgYSwgQyBjKQot KyAgewotKyAgICByZXR1cm4gMjI7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIHNlY29uZCAoaW50IGEs IGludCBiLCBDIGNjLCBpbnQgYywgaW50IGQpCi0rICB7Ci0rICAgIHJldHVybiAzMzsKLSsgIH0K LSsKLSt9Ci0rCi0rc3RydWN0IEIKLSt7Ci0rICBBOjpDIGM7Ci0rfTsKLSsKLSsvLy0tLS0tLS0t LS0tLQotKwotK25hbWVzcGFjZSBFCi0rewotKyAgY2xhc3MgT3t9OwotKyAgaW50IGZvbyAoTyBv KXtyZXR1cm4gMTsgfQotKyAgaW50IGZvbyAoTyBvLCBPIG8yKXtyZXR1cm4gMjsgfQotKyAgaW50 IGZvbyAoTyBvLCBPIG8yLCBpbnQgaSl7cmV0dXJuIDM7IH0KLSt9Ci0rCi0rbmFtZXNwYWNlIEYK LSt7Ci0rICBjbGFzcyBPe307Ci0rICBpbnQgZm9vICggICAgICAgTyBmbywgOjpFOjpPIGVvKXsg cmV0dXJuIDQ7fQotKyAgaW50IGZvbyAoaW50IGksIE8gZm8sIDo6RTo6TyBlbyl7IHJldHVybiA1 O30KLSt9Ci0rCi0rbmFtZXNwYWNlIEcKLSt7Ci0rICBjbGFzcyBPe307Ci0rICBpbnQgZm9vIChP IGdvLCA6OkY6Ok8gZm8sIDo6RTo6TyBlbyl7IHJldHVybiA2OyB9Ci0rfQotKwotKy8vLS0tLS0t LS0tLS0tCi0rCi0rbmFtZXNwYWNlIEgKLSt7Ci0rICBjbGFzcyBPe307Ci0rICBpbnQgZm9vIChP KXsgcmV0dXJuIDc7fQotK30KLSsKLStuYW1lc3BhY2UgSQotK3sKLSsgIGNsYXNzIE86IHB1Ymxp YyBIOjpPIHt9OwotKyAgY2xhc3MgWDogSDo6T3t9OwotK30KLSsKLSsvLy0tLS0tLS0tLS0tLQot KwotK25hbWVzcGFjZSBKCi0rewotKyAgdW5pb24gVXt9OwotKyAgc3RydWN0IFN7fTsKLSsgIGVu dW0gRXt9OwotKwotKyAgY2xhc3MgQXsKLSsgIHB1YmxpYzoKLSsgICAgY2xhc3MgQnt9OwotKyAg fTsKLSsKLSsgIGNsYXNzIEN7fTsKLSsKLSsgIGludCBmb28gKFUpeyByZXR1cm4gODt9Ci0rICBp bnQgZm9vIChTKXsgcmV0dXJuIDk7fQotKyAgaW50IGZvbyAoRSl7IHJldHVybiAxMDt9Ci0rICBp bnQgZm9vIChBOjpCKXsgcmV0dXJuIDExO30KLSsgIGludCBmb28gKEEqKXsgcmV0dXJuIDEyO30K LSsgIGludCBmb28gKEEqKil7IHJldHVybiAxMzt9Ci0rICBpbnQgZm9vIChDW10peyByZXR1cm4g MTQ7fQotKwotK30KLSsvLy0tLS0tLS0tLS0tLQotKwotK25hbWVzcGFjZSBLewotKyAgY2xhc3Mg T3t9OwotKwotKyAgaW50IGZvbyhPLCBpbnQpewotKyAgICByZXR1cm4gMTU7Ci0rICB9Ci0rCi0r ICBpbnQgYmFyKE8sIGludCl7Ci0rICAgIHJldHVybiAxNTsKLSsgIH0KLSt9Ci0rCi0raW50IGZv byhLOjpPLCBmbG9hdCl7Ci0rICByZXR1cm4gMTY7Ci0rfQotKwotK2ludCBiYXIoSzo6TywgaW50 KXsKLSsgIHJldHVybiAxNjsKLSt9Ci0rLy8tLS0tLS0tLS0tLS0KLSsKLStuYW1lc3BhY2UgTCB7 Ci0rICBuYW1lc3BhY2UgQXsKLSsgICAgbmFtZXNwYWNlIEJ7Ci0rICAgIGNsYXNzIE8ge307Ci0r Ci0rICAgIGludCBmb28gKE8pewotKyAgICAgIHJldHVybiAxNzsKLSsgICAgfQotKwotKyAgICB9 Ci0rICB9Ci0rfQotKwotKy8vLS0tLS0tLS0tLS0tCi0rCi0rbmFtZXNwYWNlIE0gewotKyAgY2xh c3MgT3sKLSsgIHB1YmxpYzoKLSsgICAgaW50IG9wZXJhdG9yPT0gKGludCl7Ci0rICAgICAgcmV0 dXJuIDE4OwotKyAgICB9Ci0rCi0rICAgIGludCBvcGVyYXRvcj09IChmbG9hdCl7Ci0rICAgICAg cmV0dXJuIDE5OwotKyAgICB9Ci0rCi0rICAgIGludCBvcGVyYXRvcisgKGZsb2F0KXsKLSsgICAg ICByZXR1cm4gMjI7Ci0rICAgIH0KLSsKLSsgIH07Ci0rCi0rICBpbnQgb3BlcmF0b3IhPSAoTywg aW50KXsKLSsgICAgcmV0dXJuIDIwOwotKyAgfQotKwotKyAgaW50IG9wZXJhdG9yIT0gKE8sIGRv dWJsZSl7Ci0rICAgIHJldHVybiAyMTsKLSsgIH0KLSsKLSsgIGludCBvcGVyYXRvcisgKE8sIGlu dCl7Ci0rICAgIHJldHVybiAyMzsKLSsgIH0KLSsKLSsgIGludCBvcGVyYXRvcisrIChPKXsKLSsg ICAgcmV0dXJuIDI0OwotKyAgfQotKwotK30KLSsvLy0tLS0tLS0tLS0tLQotK2ludAotK21haW4g KCkKLSt7Ci0rICBBOjpDIGM7Ci0rICBCIGI7Ci0rCi0rICBBOjpmaXJzdCAoYyk7Ci0rICBmaXJz dCAoMCwgYyk7Ci0rICBzZWNvbmQgKDAsIDAsIGMsIDAsIDApOwotKyAgQTo6Zmlyc3QgKGIuYyk7 Ci0rCi0rICBFOjpPIGVvOwotKyAgRjo6TyBmbzsKLSsgIEc6Ok8gZ287Ci0rCi0rICBmb28gKGVv KTsKLSsgIGZvbyAoZW8sIGVvKTsKLSsgIGZvbyAoZW8sIGVvLCAxKTsKLSsgIGZvbyAoZm8sIGVv KTsKLSsgIGZvbyAoMSAgLGZvLCBlbyk7Ci0rICBmb28gKGdvLCBmbywgZW8pOwotKwotKyAgSTo6 TyBpbzsKLSsgIEk6OlggaXg7Ci0rCi0rICBmb28gKGlvKTsKLSsvL2ZvbyAoaXgpOwotKwotKyAg Sjo6VSBqdTsKLSsgIEo6OlMganM7Ci0rICBKOjpFIGplOwotKyAgSjo6QTo6QiBqYWI7Ci0rICBK OjpBICpqYXA7Ci0rICBKOjpBICoqamFwcDsKLSsgIEo6OkMgamNhWzNdOwotKwotKyAgZm9vIChq dSk7Ci0rICBmb28gKGpzKTsKLSsgIGZvbyAoamUpOwotKyAgZm9vIChqYWIpOwotKyAgZm9vIChq YXApOwotKyAgZm9vIChqYXBwKTsKLSsgIGZvbyAoamNhKTsKLSsKLSsgIEs6Ok8ga287Ci0rICBm b28gKGtvLCAxKTsKLSsgIGZvbyAoa28sIDEuMGYpOwotKyAgLy9iYXIoa28sMSk7Ci0rCi0rICBM OjpBOjpCOjpPIGxhYm87Ci0rICBmb28gKGxhYm8pOwotKwotKyAgTTo6TyBvOwotKyAgbyA9PSA1 OwotKyAgbyA9PSA1LjBmOwotKyAgbyAhPSA1OwotKyAgbyAhPSA1LjBmOwotKyAgbyArIDU7Ci0r ICBvICsgNS4wZjsKLSsKLSsgIHJldHVybiBmaXJzdCAoMCwgYykgKyBmb28gKGVvKSArCi0rICAg ICAgICAgZm9vIChlbywgZW8pICsgZm9vIChlbywgZW8sIDEpICArCi0rICAgICAgICAgZm9vIChm bywgZW8pICsgZm9vICgxICAsZm8sIGVvKSArCi0rICAgICAgICAgZm9vIChnbywgZm8sIGVvKTsK LSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLWtvZW5pZy5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Uta29lbmlnLmV4cAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmM3M2UyMzkKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1rb2VuaWcuZXhwCi1AQCAtMCwwICsxLDEx MiBAQAotKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmICR0cmFjZWxldmVsIHRoZW4g ewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBi dWdfaWQgMAotKwotK3NldCB0ZXN0ZmlsZSBuYW1lc3BhY2Uta29lbmlnCi0rc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uY2MKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0i ICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50 ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStn ZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9 Ci0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsKLStp ZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVh a3BvaW50IG1haW4iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotKyMgVGVzdCB0aGF0IGtvZW5pZyBs b29rdXAgZmluZHMgY29ycmVjdCBmdW5jdGlvbgotK2dkYl90ZXN0ICJwIGZpcnN0KGMpIiAiPSAx MSIKLSsKLSsjIENoYW5nZSB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYW5kIHBvc2l0aW9uIG9m Ci0rIyB0aGUgcXVhbGlmeWluZyBwYXJhbWV0ZXIKLStnZGJfdGVzdCAicCBzZWNvbmQoMCwwLGMs MCwwKSIgIj0gMzMiCi0rCi0rIyBUZXN0IHRoYXQga29lbmlnIGxvb2t1cCBmaW5kcyBjb3JyZWN0 IGZ1bmN0aW9uCi0rIyBldmVuIGlmIGl0IGlzIG92ZXJsb2FkZWQKLStnZGJfdGVzdCAicCBmaXJz dCgwLGMpIiAiPSAyMiIKLSsKLSsjIFRlc3QgdGhhdCBrb2VuaWcgbG9va3VwIGZpbmRzIGNvcnJl Y3QgZnVuY3Rpb24KLSsjIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIGV4cHJlc3Npb24KLStnZGJf dGVzdCAicCBmaXJzdChiLmMpIiAiPSAxMSIKLSsKLSsjIHRlc3QgdGhhdCByZXNvbHV0aW9ucyBj YW4gYmUgbWFkZSBhY3Jvc3MgbmFtZXNwYWNlcwotK2dkYl90ZXN0ICJwIGZvbyhlbykiICAgICAg ICAgIj0gMSIKLStnZGJfdGVzdCAicCBmb28oZW8sIGVvKSIgICAgICI9IDIiCi0rZ2RiX3Rlc3Qg InAgZm9vKGVvLCBlbywgMSkiICAiPSAzIgotK2dkYl90ZXN0ICJwIGZvbyhmbywgZW8pIiAgICAg Ij0gNCIKLStnZGJfdGVzdCAicCBmb28oMSAsZm8sIGVvKSIgICI9IDUiCi0rZ2RiX3Rlc3QgInAg Zm9vKGdvLCBmbywgZW8pIiAiPSA2IgotKwotKyN0ZXN0IHRoYXQgZ2RiIGZhaWxzIGdyYWNlZnVs bHkKLStnZGJfdGVzdCAicCBmYWtlKGVvKSIgIk5vIHN5bWJvbCBcImZha2VcIiBpbiBjdXJyZW50 IGNvbnRleHQuIgotKwotKyN0ZXN0IHRoYXQgbmFtZXNwYWNlcyBvZiBiYXNlIGNsYXNzZXMgYXJl IHNlYXJjaGVkCi0rZ2RiX3Rlc3QgInAgZm9vKGlvKSIgIj0gNyIKLStnZGJfdGVzdCAicCBmb28o aXgpIiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gZm9vIHRvIGFueSBvdmVybG9hZGVkIGluc3Rh bmNlIgotKwotKyN0ZXN0IGZvciBvdGhlciB0eXBlcwotK2dkYl90ZXN0ICJwIGZvbyhqdSkiICI9 IDgiCi0rZ2RiX3Rlc3QgInAgZm9vKGpzKSIgIj0gOSIKLStnZGJfdGVzdCAicCBmb28oamUpIiAi PSAxMCIKLSsKLSsjdGVzdCBmb3IgY2xhc3MgbWVtYmVycwotK3NldHVwX3hmYWlsICIqLSotKiIK LStnZGJfdGVzdCAicCBmb28oamFiKSIgIj0gMTEiCi0rCi0rZ2RiX3Rlc3QgInAgZm9vKGphcCki ICI9IDEyIgotK2dkYl90ZXN0ICJwIGZvbyhqYXBwKSIgIj0gMTMiCi0rZ2RiX3Rlc3QgInAgZm9v KGpjYSkiICI9IDE0IgotKwotKyN0ZXN0IG92ZXJsb2FkIHJlc29sdXRpb24KLStnZGJfdGVzdCAi cCBmb28oa28sMSkiICI9IDE1IgotK2dkYl90ZXN0ICJwIGZvbyhrbywxLjBmKSIgIj0gMTYiCi0r c2V0dXBfeGZhaWwgIiotKi0qIgotK2dkYl90ZXN0ICJwIGJhcihrbywxKSIgIj0gLTEiCi0rCi0r I3Rlc3QgbG9va3VwIG9mIG9iamVjdHMgYmVsb25naW5nIHRvIG5lc3RlZCBuYW1lc3BhY2VzCi0r Z2RiX3Rlc3QgInAgZm9vKGxhYm8pIiAiPSAxNyIKLSsKLSsjIHRlc3QgbG9va3VwIG9mIG5hbWVz cGFjZSB1c2VyLWRlZmluZWQgb3BlcmF0b3JzCi0rIyBhbmQgb3ZlcmxvYWQgcmVzb2x1dGlvbjoK LSsKLSsjIHdpdGhpbiBjbGFzcwotK2dkYl90ZXN0ICJwIG8gPT0gNSIgIj0gMTgiCi0rZ2RiX3Rl c3QgInAgbyA9PSA1LjBmIiAiPSAxOSIKLSsKLSsjIHdpdGhpbiBuYW1lc3BhY2UKLStnZGJfdGVz dCAicCBvICE9IDUiICI9IDIwIgotK2dkYl90ZXN0ICJwIG8gIT0gNS4wZiIgIj0gMjEiCi0rCi0r IyBhY3Jvc3MgbmFtZXNwYWNlIGFuZCBjbGFzcwotK2dkYl90ZXN0ICJwIG8gKyA1LjBmIiAiPSAy MiIKLStnZGJfdGVzdCAicCBvICsgNSIgIj0gMjMiCi0rCi0rZ2RiX3Rlc3QgInAgbysrIiAiPSAy NCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbXVsdGlwbGUt aW1wb3J0cy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBsZS1pbXBv cnRzLmNjCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBv aW50ZXItZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1m b28uUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjZiMTgwZDYKK2luZGV4 IDAwMDAwMDAuLjgzZmFhZjYKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmNjCi1AQCAtMCwwICsxLDIwIEBACi0rbmFt ZXNwYWNlIEEgewotKyAgaW50IHggPSAxMTsKLSsgIG5hbWVzcGFjZXsKLSsgICAgaW50IHh4ID0g MjI7Ci0rICB9Ci0rfQotKwotK3VzaW5nIG5hbWVzcGFjZSBBOwotKwotK25hbWVzcGFjZXsKLSsg IGludCB4eHggPSAzMzsKLSt9OwotKwotK2ludCBtYWluKCkKLSt7Ci0rICB4OwotKyAgeHg7Ci0r ICB4eHg7Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbmFtZXNwYWNlLW11bHRpcGxlLWltcG9ydHMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlLW11bHRpcGxlLWltcG9ydHMuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworQEAgLTAsMCArMSw0NTcgQEAKKysJLmZpbGUJ Ing4Nl82NC12bGEtcG9pbnRlci5jIgorKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9n Yml0cworKy5MZGVidWdfYWJicmV2MDoKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2di aXRzCisrLkxkZWJ1Z19pbmZvMDoKKysJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRz CisrLkxkZWJ1Z19saW5lMDoKKysJLnRleHQKKysuTHRleHQwOgorKy5nbG9ibCBmb28KKysJLnR5 cGUJZm9vLCBAZnVuY3Rpb24KKytmb286CisrLkxGQjI6CisrCS5maWxlIDEgIng4Nl82NC12bGEt cG9pbnRlci5jIgorKwkubG9jIDEgMjIgMAorKwlwdXNocQklcmJwCisrLkxDRkkwOgorKwltb3Zx CSVyc3AsICVyYnAKKysuTENGSTE6CisrCXN1YnEJJDY0LCAlcnNwCisrLkxDRkkyOgorKwltb3Zs CSVlZGksIC0zNiglcmJwKQorKwkubG9jIDEgMjIgMAorKwltb3ZxCSVyc3AsICVyYXgKKysJbW92 cQklcmF4LCAtNDgoJXJicCkKKysJLmxvYyAxIDIzIDAKKysJbW92bAktMzYoJXJicCksICVlZHgK KysJbW92c2xxCSVlZHgsJXJheAorKwlzdWJxCSQxLCAlcmF4CisrCW1vdnEJJXJheCwgLTI0KCVy YnApCisrCS5sb2MgMSAyNCAwCisrCW1vdnNscQklZWR4LCVyYXgKKysJYWRkcQkkMTUsICVyYXgK KysJYWRkcQkkMTUsICVyYXgKKysJc2hycQkkNCwgJXJheAorKwlzYWxxCSQ0LCAlcmF4CisrCXN1 YnEJJXJheCwgJXJzcAorKwltb3ZxCSVyc3AsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwg JXJheAorKwlhZGRxCSQxNSwgJXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgK KysJbW92cQklcmF4LCAtNTYoJXJicCkKKysJbW92cQktNTYoJXJicCksICVyYXgKKysJbW92cQkl cmF4LCAtMTYoJXJicCkKKysJLmxvYyAxIDI3IDAKKysJbW92bAkkMCwgLTQoJXJicCkKKysJam1w CS5MMgorKy5MMzoKKysJLmxvYyAxIDI4IDAKKysJbW92bAktNCglcmJwKSwgJWVzaQorKwltb3Zs CS00KCVyYnApLCAlZWF4CisrCW1vdmwJJWVheCwgJWVjeAorKwltb3ZxCS0xNiglcmJwKSwgJXJk eAorKwltb3ZzbHEJJWVzaSwlcmF4CisrCW1vdmIJJWNsLCAoJXJkeCwlcmF4KQorKwkubG9jIDEg MjcgMAorKwlhZGRsCSQxLCAtNCglcmJwKQorKy5MMjoKKysJbW92bAktNCglcmJwKSwgJWVheAor KwljbXBsCS0zNiglcmJwKSwgJWVheAorKwlqbAkuTDMKKysJLmxvYyAxIDMwIDAKKysJLmdsb2Js CWJyZWFrX2hlcmUKKyticmVha19oZXJlOgorKwltb3ZxCS0xNiglcmJwKSwgJXJheAorKwltb3Zi CSQwLCAoJXJheCkKKysJbW92cQktNDgoJXJicCksICVyc3AKKysJLmxvYyAxIDMxIDAKKysJbGVh dmUKKysJcmV0CisrLkxGRTI6CisrCS5zaXplCWZvbywgLi1mb28KKysJLnNlY3Rpb24JLmRlYnVn X2ZyYW1lLCIiLEBwcm9nYml0cworKy5MZnJhbWUwOgorKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAK KysuTFNDSUUwOgorKwkubG9uZwkweGZmZmZmZmZmCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSIi CisrCS51bGViMTI4IDB4MQorKwkuc2xlYjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS5ieXRlCTB4 YworKwkudWxlYjEyOCAweDcKKysJLnVsZWIxMjggMHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIx MjggMHgxCisrCS5hbGlnbiA4CisrLkxFQ0lFMDoKKysuTFNGREUwOgorKwkubG9uZwkuTEVGREUw LS5MQVNGREUwCisrLkxBU0ZERTA6CisrCS5sb25nCS5MZnJhbWUwCisrCS5xdWFkCS5MRkIyCisr CS5xdWFkCS5MRkUyLS5MRkIyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJ LmJ5dGUJMHhlCisrCS51bGViMTI4IDB4MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIK KysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGVi MTI4IDB4NgorKwkuYWxpZ24gOAorKy5MRUZERTA6CisrCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIs QHByb2diaXRzCisrLkxmcmFtZTE6CisrCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQorKy5MU0NJRTE6 CisrCS5sb25nCTB4MAorKwkuYnl0ZQkweDEKKysJLnN0cmluZwkielIiCisrCS51bGViMTI4IDB4 MQorKwkuc2xlYjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkw eDMKKysJLmJ5dGUJMHhjCisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJ MHg5MAorKwkudWxlYjEyOCAweDEKKysJLmFsaWduIDgKKysuTEVDSUUxOgorKy5MU0ZERTE6Cisr CS5sb25nCS5MRUZERTEtLkxBU0ZERTEKKysuTEFTRkRFMToKKysJLmxvbmcJLkxBU0ZERTEtLkxm cmFtZTEKKysJLmxvbmcJLkxGQjIKKysJLmxvbmcJLkxGRTItLkxGQjIKKysJLnVsZWIxMjggMHgw CisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGVi MTI4IDB4MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5s b25nCS5MQ0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24g OAorKy5MRUZERTE6CisrCS50ZXh0CisrLkxldGV4dDA6CisrCS5zZWN0aW9uCS5kZWJ1Z19sb2Ms IiIsQHByb2diaXRzCisrLkxkZWJ1Z19sb2MwOgorKy5MTFNUMDoKKysJLnF1YWQJLkxGQjItLkx0 ZXh0MAorKwkucXVhZAkuTENGSTAtLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcK KysJLnNsZWIxMjggOAorKwkucXVhZAkuTENGSTAtLkx0ZXh0MAorKwkucXVhZAkuTENGSTEtLkx0 ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJ LkxDRkkxLS5MdGV4dDAKKysJLnF1YWQJLkxGRTItLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5i eXRlCTB4NzYKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2Vj dGlvbgkuZGVidWdfaW5mbworKy5MZGVidWdfcmVsYXRpdmU6CisrCS5sb25nCS5MZGVidWdfZW5k IC0gLkxkZWJ1Z19zdGFydAorKy5MZGVidWdfc3RhcnQ6CisrCS52YWx1ZQkweDIKKysJLmxvbmcJ LkxkZWJ1Z19hYmJyZXYwCisrCS5ieXRlCTB4OAorKwkudWxlYjEyOCAweDEKKysJLmxvbmcJLkxB U0YyCisrCS5ieXRlCTB4MQorKwkubG9uZwkuTEFTRjMKKysJLmxvbmcJLkxBU0Y0CisrCS5xdWFk CS5MdGV4dDAKKysJLnF1YWQJLkxldGV4dDAKKysJLmxvbmcJLkxkZWJ1Z19saW5lMAorKwkudWxl YjEyOCAweDIKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJImZvbyIKKysJLmJ5dGUJMHgxCisrCS5i eXRlCTB4MTYKKysJLmJ5dGUJMHgxCisrCS5xdWFkCS5MRkIyCisrCS5xdWFkCS5MRkUyCisrCS5s b25nCS5MTFNUMAorKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQorKwkudWxl YjEyOCAweDMKKysJLmxvbmcJLkxBU0Y1CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE1CisrCS5s b25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCisrCS5ieXRlCTB4MgorKwkuYnl0ZQkw eDkxCisrCS5zbGViMTI4IC01MgorKy5MdGFnX3BvaW50ZXI6CisrCS51bGViMTI4IDB4NAorKwku Ynl0ZQkweDgJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5sb25nCS5MdGFnX2FycmF5X3R5cGUg LSAuZGVidWdfaW5mbwkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4IDB4NQkvKiBBYmJyZXYg TnVtYmVyOiA1IChEV19UQUdfdmFyaWFibGUpICovCisrCS5sb25nCS5MQVNGMAorKwkuYnl0ZQkw eDEKKysJLmJ5dGUJMHgxOAorKyNpZiAxCisrCS5sb25nCS5MdGFnX3BvaW50ZXIgLSAuZGVidWdf aW5mbworKyNlbHNlCisrCS8qIERlYnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGly ZWN0aW9uLiAgKi8KKysJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCisrI2Vu ZGlmCisrCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KKysJLmJ5 dGUJMHgzCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTMyCisrI2lmIDAKKysJLmJ5dGUJMHg2 CS8qIERXX09QX2RlcmVmICovCisrI2Vsc2UKKysJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8K KysjZW5kaWYKKysJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJ LnVsZWIxMjggMHg2CisrCS5zdHJpbmcJImkiCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE5Cisr CS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCisrCS5ieXRlCTB4MgorKwkuYnl0 ZQkweDkxCisrCS5zbGViMTI4IC0yMAorKwkuYnl0ZQkweDAKKysuTHR5cGVfaW50OgorKwkudWxl YjEyOCAweDcKKysJLmJ5dGUJMHg0CisrCS5ieXRlCTB4NQorKwkuc3RyaW5nCSJpbnQiCisrLkx0 YWdfYXJyYXlfdHlwZToKKysJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RB R19hcnJheV90eXBlKSAqLworKwkubG9uZwkuTHR5cGVfY2hhciAtIC5MZGVidWdfcmVsYXRpdmUK KysJLmxvbmcJLkx0eXBlX3Vsb25nIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF9zaWJsaW5n OiBEV19GT1JNX3JlZjQgKi8KKysxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Js b2NrMTogc3RhcnQgKi8KKysJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KKyszOgorKwkuYnl0 ZQkweDk3CS8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KKysjaWYgMQorKwkuYnl0ZQkw eDYJLyogRFdfT1BfZGVyZWYgKi8KKysjZWxzZQorKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAq LworKyNlbmRpZgorKzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBl bmQgKi8KKysJLnVsZWIxMjggMHg5CisrCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxh dGl2ZQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KKysJLmJ5dGUJMHgzCisrCS5ieXRl CTB4OTEKKysJLnNsZWIxMjggLTQwCisrCS5ieXRlCTB4NgorKwkuYnl0ZQkweDAKKysuTHR5cGVf dWxvbmc6CisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDgKKysJLmJ5dGUJMHg3CisrLkx0eXBl X2NoYXI6CisrCS51bGViMTI4IDB4YgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHg2CisrCS5sb25n CS5MQVNGMQorKwkuYnl0ZQkweDAKKysuTGRlYnVnX2VuZDoKKysJLnNlY3Rpb24JLmRlYnVnX2Fi YnJldgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMQorKwkuYnl0ZQkweDEKKysJLnVs ZWIxMjggMHgyNQorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAw eGIKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDFiCisrCS51 bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAw eDEyCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEwCisrCS51bGViMTI4IDB4NgorKwku Ynl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweDJlCisr CS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDNmCisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAw eDMKKysJLnVsZWIxMjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjcKKysJLnVsZWIxMjgg MHhjCisrCS51bGViMTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTIKKysJ LnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4NDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4 IDB4MQorKwkudWxlYjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIx MjggMHgzCisrCS51bGViMTI4IDB4NQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51 bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAw eDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJ LnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisr CS51bGViMTI4IDB4NAkvKiAuTHRhZ19wb2ludGVyIGFiYnJldiAqLworKwkudWxlYjEyOCAweDBm CS8qIERXX1RBR19wb2ludGVyX3R5cGUgKi8KKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MGIK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkuYnl0 ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NQorKwkudWxlYjEyOCAweDM0CisrCS5i eXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGVi MTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhh CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4IDB4 MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLnVsZWIx MjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIK KysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4MgorKwkudWxl YjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDcKKysJLnVs ZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4Ygor KwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIx MjggMHg4CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg4CS8qIEFiYnJl diBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLworKwkudWxlYjEyOCAweDEKKysJLmJ5 dGUJMHgxCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOCAweDEz CS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAqLwor KwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDUwCS8qIERX X0FUX2RhdGFfbG9jYXRpb24gKi8KKysJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sxICov CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg5CisrCS51bGViMTI4IDB4 MjEKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwkudWxl YjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDJmCisrCS51bGViMTI4 IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwkudWxlYjEy OCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJ LnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJLnVs ZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS5i eXRlCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCisrCS5sb25n CTB4MTYKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisrCS5sb25nCTB4YTgK KysJLmxvbmcJMHgyZAorKwkuc3RyaW5nCSJmb28iCisrCS5sb25nCTB4MAorKwkuc2VjdGlvbgku ZGVidWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgyYworKwkudmFsdWUJMHgyCisr CS5sb25nCS5MZGVidWdfaW5mbzAKKysJLmJ5dGUJMHg4CisrCS5ieXRlCTB4MAorKwkudmFsdWUJ MHgwCisrCS52YWx1ZQkweDAKKysJLnF1YWQJLkx0ZXh0MAorKwkucXVhZAkuTGV0ZXh0MC0uTHRl eHQwCisrCS5xdWFkCTB4MAorKwkucXVhZAkweDAKKysJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMi LEBwcm9nYml0cywxCisrLkxBU0YwOgorKwkuc3RyaW5nCSJhcnJheSIKKysuTEFTRjU6CisrCS5z dHJpbmcJInNpemUiCisrLkxBU0YzOgorKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIK KysuTEFTRjY6CisrCS5zdHJpbmcJImFycmF5X3QiCisrLkxBU0YxOgorKwkuc3RyaW5nCSJjaGFy IgorKy5MQVNGNDoKKysJLnN0cmluZwkiZ2RiLmFyY2giCisrLkxBU0YyOgorKwkuc3RyaW5nCSJH TlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKKysJLmlkZW50CSJHQ0M6IChH TlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgorKwkuc2VjdGlvbgkubm90ZS5H TlUtc3RhY2ssIiIsQHByb2diaXRzCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXBvaW50ZXIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS1wb2ludGVyLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNGJiOWY4 CitpbmRleCAwMDAwMDAwLi5mZTJjOGY3CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uYW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5leHAKLUBAIC0wLDAgKzEsNDkg QEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMK LSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsK LSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVn X2lkIDAKLSsKLStzZXQgdGVzdGZpbGUgbmFtZXNwYWNlLW11bHRpcGxlLWltcG9ydHMKLStzZXQg c3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewot KyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVy biAtMQotK30KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmMKK0BAIC0wLDAgKzEsNDMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgogKwotKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKyAgIENvcHlyaWdo dCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotK2dkYl9leGl0Ci0rZ2Ri X3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQg JHtiaW5maWxlfQorKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0rIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIHRlc3QgcHJpbnRpbmcgb2Yg bmFtZXNwYWNlIGltcG9ydGVkIHdpdGhpbgotKyMgdGhlIGZ1bmN0aW9uLgorKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCiArCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KKysgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICsKLStnZGJfdGVzdCAicHJpbnQgeCIgIlxc JFxbMC05XF0uKiA9IDExIgotK2dkYl90ZXN0ICJwcmludCB4eCIgIlxcJFxbMC05XF0uKiA9IDIy IgotK2dkYl90ZXN0ICJwcmludCB4eHgiICJcXCRcWzAtOVxdLiogPSAzMyIKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45NzIzZjg3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MKLUBAIC0wLDAg KzEsMzYgQEAKLStuYW1lc3BhY2UgQQotK3sKLSsgIG5hbWVzcGFjZSBCCi0rICB7Ci0rICAgIGlu dCBhYiA9IDExOwotKyAgfQotK30KKysjaWYgMAogKwotK25hbWVzcGFjZSBDCisrdm9pZAorK2Zv byAoaW50IHNpemUpCiArewotKyAgbmFtZXNwYWNlIEQKLSsgIHsKLSsgICAgdXNpbmcgbmFtZXNw YWNlIEE6OkI7CisrICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKKysgIGFycmF5X3QgYXJy YXk7CisrICBpbnQgaTsKICsKLSsgICAgaW50Ci0rICAgIHNlY29uZCgpCi0rICAgIHsKLSsgICAg ICBhYjsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgfQorKyAgZm9yIChpID0gMDsgaSA8 IHNpemU7IGkrKykKKysgICAgYXJyYXlbaV0gPSBpOwogKwotKyAgaW50Ci0rICBmaXJzdCgpCi0r ICB7Ci0rICAgIC8vYWI7Ci0rICAgIHJldHVybiBEOjpzZWNvbmQoKTsKLSsgIH0KKysgIGFycmF5 WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwogK30KICsKKysjZWxzZQorKwogK2ludAotK21haW4o KQorK21haW4gKHZvaWQpCiArewotKyAgLy9hYjsKLSsgIHJldHVybiBDOjpmaXJzdCgpOworKyAg Zm9vICgyNik7CisrICBmb28gKDc4KTsKKysgIHJldHVybiAwOwogK30KLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5lc3RlZC1pbXBvcnRzLmV4cAorKworKyNlbmRpZgor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cAogbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQyNzlmYjUKK2luZGV4IDAwMDAwMDAuLmQy NDNjZjEKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFj ZS1uZXN0ZWQtaW1wb3J0cy5leHAKLUBAIC0wLDAgKzEsNTcgQEAKLSsjIENvcHlyaWdodCAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCitAQCAtMCwwICsxLDY2IEBACisrIyBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQpAQCAtMjI2MzQsOTggKzY2NjksNTc0IEBAIGluZGV4IDAwMDAwMDAu LmQyNzlmYjUKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStpZiAkdHJhY2VsZXZl bCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCisraWYgIVtpc3RhcmdldCAieDg2XzY0 LSotKiJdIHRoZW4geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5hcmNoL3g4Nl82 NC12bGEtcG9pbnRlci5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCisrICAgIHJldHVy bgogK30KICsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0rc2V0IHRlc3RmaWxl IG5hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCisr c2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtcG9pbnRlcgorK3NldCBzcmNhc21maWxlICR7dGVzdGZp bGV9LWZvby5TCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwogK3NldCBiaW5maWxlICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMr K31dICE9ICIiIH0geworK3NldCBiaW5vYmpmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0tZm9vLm8KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNhc21maWxlfSIgIiR7Ymlub2JqZmlsZX0iIG9iamVjdCB7fV0gIT0gIiIgfSB7CisrICAgIHVu dGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisr fQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9ICR7 Ymlub2JqZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewog KyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCiArICAgIHJldHVy biAtMQogK30KLSsKLSsjIEdldCB0aGluZ3Mgc3RhcnRlZC4KICsKICtnZGJfZXhpdAogK2dkYl9z dGFydAogK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgogK2dkYl9sb2FkICR7 YmluZmlsZX0KICsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRv IGJyZWFrcG9pbnQgbWFpbiIKLSsgICAgY29udGludWUKKytpZiAhW3J1bnRvX21haW5dIHsKKysg ICAgdW50ZXN0ZWQgeDg2XzY0LXZsYS1wb2ludGVyCisrICAgIHJldHVybiAtMQogK30KICsKLStn ZGJfdGVzdCAicHJpbnQgYWIiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKytn ZGJfYnJlYWtwb2ludCAiYnJlYWtfaGVyZSIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiYnJlYWtfaGVyZSIKKysKKytnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGNoYXIg XFwoXFwqXFwpXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgYXJyYXkiCisrZ2RiX3Rl c3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwpXFxcWzI2XFxcXSIgImZpcnN0 OiBwdHlwZSBhcnJheSIKKysKKytnZGJfdGVzdCAid2hhdGlzICphcnJheSIgInR5cGUgPSBjaGFy IFxcXFsyNlxcXF0iICJmaXJzdDogd2hhdGlzICphcnJheSIKKytnZGJfdGVzdCAicHR5cGUgKmFy cmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlwZSAqYXJyYXkiCiArCi0r IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLStnZGJfYnJlYWtw b2ludCBDOjpmaXJzdAotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJDOjpmaXJzdCIKKytn ZGJfdGVzdCAicCAoKmFycmF5KVxbMVxdIiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgorK2dk Yl90ZXN0ICJwICgqYXJyYXkpXFsyXF0iICJcXCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCisrZ2Ri X3Rlc3QgInAgKCphcnJheSlcWzNcXSIgIlxcJFxbMC05XF0gPSAzICdcXFxcMDAzJyIKKytnZGJf dGVzdCAicCAoKmFycmF5KVxbNFxdIiAiXFwkXFswLTlcXSA9IDQgJ1xcXFwwMDQnIgogKwotK2dk Yl90ZXN0ICJwcmludCBhYiIgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuIgotK2dk Yl90ZXN0ICJwcmludCBDOjpEOjphYiIgIj0gMTEiCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImJyZWFrX2hlcmUiCiArCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLStnZGJfYnJlYWtwb2ludCBDOjpEOjpzZWNvbmQKLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiQzo6RDo6c2Vjb25kIgorK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBl ID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgYXJyYXki CisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwpXFxcWzc4XFxc XSIgInNlY29uZDogcHR5cGUgYXJyYXkiCiArCi0rZ2RiX3Rlc3QgInByaW50IGFiIiAiPSAxMSIK LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5j YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uby1pbXBvcnRzLmNjCisrZ2RiX3Rl c3QgIndoYXRpcyAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiB3aGF0 aXMgKmFycmF5IgorK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhc XFxdIiAic2Vjb25kOiBwdHlwZSAqYXJyYXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNo L3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjY2ZjdhMzkKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS10eXBlZGVmLWZvby5TCitAQCAtMCwwICsxLDQ1NSBAQAorKwkuZmlsZQki eDg2XzY0LXZsYS10eXBlZGVmLmMiCisrCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2di aXRzCisrLkxkZWJ1Z19hYmJyZXYwOgorKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJvZ2Jp dHMKKysuTGRlYnVnX2luZm8wOgorKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMK KysuTGRlYnVnX2xpbmUwOgorKwkudGV4dAorKy5MdGV4dDA6CisrLmdsb2JsIGZvbworKwkudHlw ZQlmb28sIEBmdW5jdGlvbgorK2ZvbzoKKysuTEZCMjoKKysJLmZpbGUgMSAieDg2XzY0LXZsYS10 eXBlZGVmLmMiCisrCS5sb2MgMSAyMiAwCisrCXB1c2hxCSVyYnAKKysuTENGSTA6CisrCW1vdnEJ JXJzcCwgJXJicAorKy5MQ0ZJMToKKysJc3VicQkkNjQsICVyc3AKKysuTENGSTI6CisrCW1vdmwJ JWVkaSwgLTM2KCVyYnApCisrCS5sb2MgMSAyMiAwCisrCW1vdnEJJXJzcCwgJXJheAorKwltb3Zx CSVyYXgsIC00OCglcmJwKQorKwkubG9jIDEgMjMgMAorKwltb3ZsCS0zNiglcmJwKSwgJWVkeAor Kwltb3ZzbHEJJWVkeCwlcmF4CisrCXN1YnEJJDEsICVyYXgKKysJbW92cQklcmF4LCAtMjQoJXJi cCkKKysJLmxvYyAxIDI0IDAKKysJbW92c2xxCSVlZHgsJXJheAorKwlhZGRxCSQxNSwgJXJheAor KwlhZGRxCSQxNSwgJXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJc3Vi cQklcmF4LCAlcnNwCisrCW1vdnEJJXJzcCwgLTU2KCVyYnApCisrCW1vdnEJLTU2KCVyYnApLCAl cmF4CisrCWFkZHEJJDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgKKysJc2FscQkkNCwgJXJheAor Kwltb3ZxCSVyYXgsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwltb3ZxCSVy YXgsIC0xNiglcmJwKQorKwkubG9jIDEgMjcgMAorKwltb3ZsCSQwLCAtNCglcmJwKQorKwlqbXAJ LkwyCisrLkwzOgorKwkubG9jIDEgMjggMAorKwltb3ZsCS00KCVyYnApLCAlZXNpCisrCW1vdmwJ LTQoJXJicCksICVlYXgKKysJbW92bAklZWF4LCAlZWN4CisrCW1vdnEJLTE2KCVyYnApLCAlcmR4 CisrCW1vdnNscQklZXNpLCVyYXgKKysJbW92YgklY2wsICglcmR4LCVyYXgpCisrCS5sb2MgMSAy NyAwCisrCWFkZGwJJDEsIC00KCVyYnApCisrLkwyOgorKwltb3ZsCS00KCVyYnApLCAlZWF4Cisr CWNtcGwJLTM2KCVyYnApLCAlZWF4CisrCWpsCS5MMworKwkubG9jIDEgMzAgMAorKwkuZ2xvYmwJ YnJlYWtfaGVyZQorK2JyZWFrX2hlcmU6CisrCW1vdnEJLTE2KCVyYnApLCAlcmF4CisrCW1vdmIJ JDAsICglcmF4KQorKwltb3ZxCS00OCglcmJwKSwgJXJzcAorKwkubG9jIDEgMzEgMAorKwlsZWF2 ZQorKwlyZXQKKysuTEZFMjoKKysJLnNpemUJZm9vLCAuLWZvbworKwkuc2VjdGlvbgkuZGVidWdf ZnJhbWUsIiIsQHByb2diaXRzCisrLkxmcmFtZTA6CisrCS5sb25nCS5MRUNJRTAtLkxTQ0lFMAor Ky5MU0NJRTA6CisrCS5sb25nCTB4ZmZmZmZmZmYKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJIiIK KysJLnVsZWIxMjggMHgxCisrCS5zbGViMTI4IC04CisrCS5ieXRlCTB4MTAKKysJLmJ5dGUJMHhj CisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxlYjEy OCAweDEKKysJLmFsaWduIDgKKysuTEVDSUUwOgorKy5MU0ZERTA6CisrCS5sb25nCS5MRUZERTAt LkxBU0ZERTAKKysuTEFTRkRFMDoKKysJLmxvbmcJLkxmcmFtZTAKKysJLnF1YWQJLkxGQjIKKysJ LnF1YWQJLkxGRTItLkxGQjIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgorKwku Ynl0ZQkweGUKKysJLnVsZWIxMjggMHgxMAorKwkuYnl0ZQkweDg2CisrCS51bGViMTI4IDB4Mgor KwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkxLS5MQ0ZJMAorKwkuYnl0ZQkweGQKKysJLnVsZWIx MjggMHg2CisrCS5hbGlnbiA4CisrLkxFRkRFMDoKKysJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixA cHJvZ2JpdHMKKysuTGZyYW1lMToKKysJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCisrLkxTQ0lFMToK KysJLmxvbmcJMHgwCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJ6UiIKKysJLnVsZWIxMjggMHgx CisrCS5zbGViMTI4IC04CisrCS5ieXRlCTB4MTAKKysJLnVsZWIxMjggMHgxCisrCS5ieXRlCTB4 MworKwkuYnl0ZQkweGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkw eDkwCisrCS51bGViMTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTE6CisrLkxTRkRFMToKKysJ LmxvbmcJLkxFRkRFMS0uTEFTRkRFMQorKy5MQVNGREUxOgorKwkubG9uZwkuTEFTRkRFMS0uTGZy YW1lMQorKwkubG9uZwkuTEZCMgorKwkubG9uZwkuTEZFMi0uTEZCMgorKwkudWxlYjEyOCAweDAK KysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgorKwkuYnl0ZQkweGUKKysJLnVsZWIx MjggMHgxMAorKwkuYnl0ZQkweDg2CisrCS51bGViMTI4IDB4MgorKwkuYnl0ZQkweDQKKysJLmxv bmcJLkxDRkkxLS5MQ0ZJMAorKwkuYnl0ZQkweGQKKysJLnVsZWIxMjggMHg2CisrCS5hbGlnbiA4 CisrLkxFRkRFMToKKysJLnRleHQKKysuTGV0ZXh0MDoKKysJLnNlY3Rpb24JLmRlYnVnX2xvYywi IixAcHJvZ2JpdHMKKysuTGRlYnVnX2xvYzA6CisrLkxMU1QwOgorKwkucXVhZAkuTEZCMi0uTHRl eHQwCisrCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3Nwor Kwkuc2xlYjEyOCA4CisrCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCisrCS5xdWFkCS5MQ0ZJMS0uTHRl eHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3NworKwkuc2xlYjEyOCAxNgorKwkucXVhZAku TENGSTEtLkx0ZXh0MAorKwkucXVhZAkuTEZFMi0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5 dGUJMHg3NgorKwkuc2xlYjEyOCAxNgorKwkucXVhZAkweDAKKysJLnF1YWQJMHgwCisrCS5zZWN0 aW9uCS5kZWJ1Z19pbmZvCisrCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAorKy5M ZGVidWdfc3RhcnQ6CisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCisrCS5i eXRlCTB4OAorKwkudWxlYjEyOCAweDEKKysJLmxvbmcJLkxBU0YyCisrCS5ieXRlCTB4MQorKwku bG9uZwkuTEFTRjMKKysJLmxvbmcJLkxBU0Y0CisrCS5xdWFkCS5MdGV4dDAKKysJLnF1YWQJLkxl dGV4dDAKKysJLmxvbmcJLkxkZWJ1Z19saW5lMAorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHgx CisrCS5zdHJpbmcJImZvbyIKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTYKKysJLmJ5dGUJMHgx CisrCS5xdWFkCS5MRkIyCisrCS5xdWFkCS5MRkUyCisrCS5sb25nCS5MTFNUMAorKwkubG9uZwkw eDgzCisrCS51bGViMTI4IDB4MworKwkubG9uZwkuTEFTRjUKKysJLmJ5dGUJMHgxCisrCS5ieXRl CTB4MTUKKysJLmxvbmcJMHg4MworKwkuYnl0ZQkweDIKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEy OCAtNTIKKysuTHRhZ190eXBlZGVmOgorKwkudWxlYjEyOCAweDQKKysJLmxvbmcJLkxBU0Y2Cisr CS5ieXRlCTB4MQorKwkuYnl0ZQkweDE3CisrCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVi dWdfaW5mbworKwkudWxlYjEyOCAweDUJLyogQWJicmV2IE51bWJlcjogNSAoRFdfVEFHX3Zhcmlh YmxlKSAqLworKwkubG9uZwkuTEFTRjAKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTgKKysjaWYg MQorKwkubG9uZwkuTHRhZ190eXBlZGVmIC0gLmRlYnVnX2luZm8KKysjZWxzZQorKwkvKiBEZWJ1 Z2dpbmcgb25seTogU2tpcCB0aGUgdHlwZWRlZiBpbmRpcmVjdGlvbi4gICovCisrCS5sb25nCS5M dGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlv bjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisr CS5zbGViMTI4IC0zMgorKyNpZiAwCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKyNl bHNlCisrCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCisrI2VuZGlmCisrCS8qIERXX0FUX2xv Y2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogZW5kICovCisrCS51bGViMTI4IDB4NgorKwkuc3RyaW5n CSJpIgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHgxOQorKwkubG9uZwkweDgzCisrCS5ieXRlCTB4 MgorKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC0yMAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjgg MHg3CisrCS5ieXRlCTB4NAorKwkuYnl0ZQkweDUKKysJLnN0cmluZwkiaW50IgorKy5MdGFnX2Fy cmF5X3R5cGU6CisrCS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJy YXlfdHlwZSkgKi8KKysJLmxvbmcJMHhhMCArICgyZiAtIDFmKQkvKiBEV19BVF90eXBlOiBEV19G T1JNX3JlZjQgKi8KKysJLmxvbmcJMHg5ZCArICgyZiAtIDFmKQkvKiBEV19BVF9zaWJsaW5nOiBE V19GT1JNX3JlZjQgKi8KKysxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2Nr MTogc3RhcnQgKi8KKysJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KKyszOgorKwkuYnl0ZQkw eDk3CS8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KKysJLmJ5dGUJMHg2CS8qIERXX09Q X2RlcmVmICovCisrMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVu ZCAqLworKwkudWxlYjEyOCAweDkKKysJLmxvbmcJMHg5ZCArICgyYiAtIDFiKQkvKiBEV19BVF90 eXBlOiBEV19GT1JNX3JlZjQgKi8KKysJLmJ5dGUJMHgzCisrCS5ieXRlCTB4OTEKKysJLnNsZWIx MjggLTQwCisrCS5ieXRlCTB4NgorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhhCisrCS5ieXRl CTB4OAorKwkuYnl0ZQkweDcKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkw eDYKKysJLmxvbmcJLkxBU0YxCisrCS5ieXRlCTB4MAorKy5MZGVidWdfZW5kOgorKwkuc2VjdGlv bgkuZGVidWdfYWJicmV2CisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDExCisrCS5ieXRl CTB4MQorKwkudWxlYjEyOCAweDI1CisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDEzCisr CS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4 IDB4MWIKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisr CS51bGViMTI4IDB4MTIKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTAKKysJLnVsZWIx MjggMHg2CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgyCisrCS51bGVi MTI4IDB4MmUKKysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4M2YKKysJLnVsZWIxMjggMHhjCisr CS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEy OCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgyNwor KwkudWxlYjEyOCAweGMKKysJLnVsZWIxMjggMHgxMQorKwkudWxlYjEyOCAweDEKKysJLnVsZWIx MjggMHgxMgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHg0MAorKwkudWxlYjEyOCAweDYK KysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTMKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4 MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHg1CisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisr CS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIx MjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwku Ynl0ZQkweDAKKysJLnVsZWIxMjggMHg0CisrCS51bGViMTI4IDB4MTYKKysJLmJ5dGUJMHgwCisr CS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEy OCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQor KwkudWxlYjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg1 CisrCS51bGViMTI4IDB4MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEy OCAweGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgor KwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGVi MTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxl YjEyOCAweDYKKysJLnVsZWIxMjggMHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisr CS51bGViMTI4IDB4OAorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEy OCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMK KysJLnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgw CisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisr CS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAor KwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICov CisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90 eXBlICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4IDB4 MQkvKiBEV19BVF9zaWJsaW5nICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICov CisrCS51bGViMTI4IDB4NTAJLyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLworKwkudWxlYjEyOCAw eGEJLyogRFdfRk9STV9ibG9jazEgKi8KKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxl YjEyOCAweDkKKysJLnVsZWIxMjggMHgyMQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg0OQkv KiBEV19BVF90eXBlICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51 bGViMTI4IDB4MmYKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJ LnVsZWIxMjggMHhhCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJLmJ5 dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgyNAorKwku Ynl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNl CisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS5ieXRl CTB4MAorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1l cywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgxNgorKwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVi dWdfaW5mbzAKKysJLmxvbmcJMHhhOAorKwkubG9uZwkweDJkCisrCS5zdHJpbmcJImZvbyIKKysJ LmxvbmcJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cworKwkubG9u ZwkweDJjCisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19pbmZvMAorKwkuYnl0ZQkweDgK KysJLmJ5dGUJMHgwCisrCS52YWx1ZQkweDAKKysJLnZhbHVlCTB4MAorKwkucXVhZAkuTHRleHQw CisrCS5xdWFkCS5MZXRleHQwLS5MdGV4dDAKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwku c2VjdGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKKysuTEFTRjA6CisrCS5zdHJpbmcJ ImFycmF5IgorKy5MQVNGNToKKysJLnN0cmluZwkic2l6ZSIKKysuTEFTRjM6CisrCS5zdHJpbmcJ Ing4Nl82NC12bGEtdHlwZWRlZi5jIgorKy5MQVNGNjoKKysJLnN0cmluZwkiYXJyYXlfdCIKKysu TEFTRjE6CisrCS5zdHJpbmcJImNoYXIiCisrLkxBU0Y0OgorKwkuc3RyaW5nCSJnZGIuYXJjaCIK KysuTEFTRjI6CisrCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4y LTcpIgorKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjIt NykiCisrCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLmQxYzY4YWIKK2luZGV4IDAwMDAwMDAuLmI4MDljNGUKIC0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uby1pbXBvcnRzLmNj Ci1AQCAtMCwwICsxLDM3IEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtdHlwZWRlZi5jCitAQCAtMCwwICsxLDQzIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLStuYW1lc3BhY2UgQQotK3sKLSsgIGludCBf YSA9IDExOworKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgogKwotKyAgbmFtZXNwYWNlIEJ7CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsK LSsgICAgaW50IGFiID0gMjI7CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLSsgICAgbmFt ZXNwYWNlIEN7CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rICAgICAg aW50IGFiYyA9IDMzOworKyNpZiAwCiArCi0rICAgICAgaW50IHNlY29uZCgpewotKyAgICAgICAg cmV0dXJuIDA7Ci0rICAgICAgfQorK3ZvaWQKKytmb28gKGludCBzaXplKQorK3sKKysgIHR5cGVk ZWYgY2hhciBhcnJheV90W3NpemVdOworKyAgYXJyYXlfdCBhcnJheTsKKysgIGludCBpOwogKwot KyAgICB9CisrICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorKyAgICBhcnJheVtpXSA9IGk7 CiArCi0rICAgIGludCBmaXJzdCgpewotKyAgICAgIF9hOwotKyAgICAgIGFiOwotKyAgICAgIEM6 OmFiYzsKLSsgICAgICByZXR1cm4gQzo6c2Vjb25kKCk7Ci0rICAgIH0KLSsgIH0KKysgIGFycmF5 WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwogK30KICsKKysjZWxzZQogKwogK2ludAotK21haW4o KQorK21haW4gKHZvaWQpCiArewotKyAgQTo6X2E7Ci0rICBBOjpCOjphYjsKLSsgIEE6OkI6OkM6 OmFiYzsKLSsgIHJldHVybiBBOjpCOjpmaXJzdCgpOworKyAgZm9vICgyNik7CisrICBmb28gKDc4 KTsKKysgIHJldHVybiAwOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9u YW1lc3BhY2Utbm8taW1wb3J0cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Ut bm8taW1wb3J0cy5leHAKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtdHlwZWRlZi5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li5lNTA4MTAzCitpbmRleCAwMDAwMDAwLi5iMDU0MTFlCiAtLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5leHAKLUBAIC0wLDAgKzEs NzYgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCitAQCAt MCwwICsxLDY0IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjI3NDAsNDMxICs3 MjUxLDIwNCBAQCBpbmRleCAwMDAwMDAwLi5lNTA4MTAzCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZl bAotK30KKysjIFRlc3QgRFdfQVRfZGF0YV9sb2NhdGlvbiBhY2Nlc3NlZCB0aHJvdWdoIERXX1RB R190eXBlZGVmIGludGVybWVkaWF0ZS4KICsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAw CisraWYgIVtpc3RhcmdldCAieDg2XzY0LSotKiJdIHRoZW4geworKyAgICB2ZXJib3NlICJTa2lw cGluZyBvdmVyIGdkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAgdGVzdCBtYWRlIG9ubHkg Zm9yIHg4Nl82NC4iCisrICAgIHJldHVybgorK30KICsKLStzZXQgdGVzdGZpbGUgbmFtZXNwYWNl LW5vLWltcG9ydHMKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYworK3NldCB0ZXN0ZmlsZSB4 ODZfNjQtdmxhLXR5cGVkZWYKKytzZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUworK3Nl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsK KytzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCisr aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIk e2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKytpZiAgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogKyAgICByZXR1cm4gLTEKICt9Ci0rCi0r IyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCiArCiArZ2RiX2V4aXQKICtnZGJfc3RhcnQKICtnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKICtnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0r IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLStpZiAhW3J1bnRv X21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1h aW4iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl90ZXN0ICJwcmludCBBOjpfYSIgIj0gMTEi Ci0rZ2RiX3Rlc3QgInByaW50IEE6OkI6OmFiIiAiPSAyMiIKLStnZGJfdGVzdCAicHJpbnQgQTo6 Qjo6Qzo6YWJjIiAiPSAzMyIKLSsKLStnZGJfdGVzdCAicHJpbnQgX2EiICJObyBzeW1ib2wgLiog aW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAicHJpbnQgYWIiICJObyBzeW1ib2wgLiog aW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAicHJpbnQgYWJjIiAiTm8gc3ltYm9sIC4q IGluIGN1cnJlbnQgY29udGV4dC4iCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLStnZGJfYnJlYWtwb2ludCBBOjpCOjpmaXJzdAotK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJBOjpCOjpmaXJzdCIKLSsKLStnZGJfdGVzdCAicHJpbnQgQTo6X2Ei ICI9IDExIgotK2dkYl90ZXN0ICJwcmludCBBOjpCOjphYiIgIj0gMjIiCi0rZ2RiX3Rlc3QgInBy aW50IEE6OkI6OkM6OmFiYyIgIj0gMzMiCi0rCi0rZ2RiX3Rlc3QgInByaW50IF9hIiAiPSAxMSIK LStnZGJfdGVzdCAicHJpbnQgYWIiICI9IDIyIgotK2dkYl90ZXN0ICJwcmludCBDOjphYmMiICI9 IDMzIgotKwotK2dkYl90ZXN0ICJwcmludCBhYmMiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBj b250ZXh0LiIKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotK2dkYl9icmVha3BvaW50IEE6OkI6OkM6OnNlY29uZAotK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJBOjpCOjpDOjpzZWNvbmQiCi0rCi0rZ2RiX3Rlc3QgInByaW50IEE6Ol9hIiAiPSAx MSIKLStnZGJfdGVzdCAicHJpbnQgQTo6Qjo6YWIiICI9IDIyIgotK2dkYl90ZXN0ICJwcmludCBB OjpCOjpDOjphYmMiICI9IDMzIgotKwotK2dkYl90ZXN0ICJwcmludCBfYSIgIj0gMTEiCi0rZ2Ri X3Rlc3QgInByaW50IGFiIiAiPSAyMiIKLStnZGJfdGVzdCAicHJpbnQgYWJjIiAiPSAzMyIKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmNjIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5jYwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ2ZDRjMTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUuY2MKLUBAIC0wLDAgKzEsNDcg QEAKLStuYW1lc3BhY2UgQXsKLSsgIGludCBheCA9IDk7CisraWYgIVtydW50b19tYWluXSB7Cisr ICAgIHVudGVzdGVkIHg4Nl82NC12bGEtdHlwZWRlZgorKyAgICByZXR1cm4gLTEKICt9CiArCi0r bmFtZXNwYWNlIEJ7Ci0rICB1c2luZyBuYW1lc3BhY2UgQTsKLSt9CisrZ2RiX2JyZWFrcG9pbnQg ImJyZWFrX2hlcmUiCiArCi0rbmFtZXNwYWNlIEN7Ci0rICB1c2luZyBuYW1lc3BhY2UgQjsKLSt9 CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCiArCi0rdXNpbmcgbmFt ZXNwYWNlIEM7CisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmly c3Q6IHdoYXRpcyBhcnJheSIKICsKLSsvLy0tLS0tLS0tLS0tLS0tLQotK25hbWVzcGFjZSBEewot KyAgdXNpbmcgbmFtZXNwYWNlIEQ7Ci0rICBpbnQgZHggPSA5OTsKLSt9Ci0rdXNpbmcgbmFtZXNw YWNlIEQ7CisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIg ImZpcnN0OiBwdHlwZSBhcnJheSIKICsKLSsvLy0tLS0tLS0tLS0tLS0tLQotK25hbWVzcGFjZXsK LSsgIG5hbWVzcGFjZXsKLSsgICAgaW50IHh4ID0gOTk5OwotKyAgfQotK30KKytnZGJfdGVzdCAi cCBhcnJheVxbMVxdIiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgorK2dkYl90ZXN0ICJwIGFy cmF5XFsyXF0iICJcXCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCisrZ2RiX3Rlc3QgInAgYXJyYXlc WzNcXSIgIlxcJFxbMC05XF0gPSAzICdcXFxcMDAzJyIKKytnZGJfdGVzdCAicCBhcnJheVxbNFxd IiAiXFwkXFswLTlcXSA9IDQgJ1xcXFwwMDQnIgogKwotKy8vLS0tLS0tLS0tLS0tLS0tCi0rbmFt ZXNwYWNlIEV7Ci0rICBpbnQgZXggPSA5OTk5OwotK30KKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiYnJlYWtfaGVyZSIKICsKLStuYW1lc3BhY2UgRnsKLSsgIG5hbWVzcGFjZSBGRSA9IEU7 Ci0rfQorK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gYXJyYXlfdCIgInNlY29uZDog d2hhdGlzIGFycmF5IgogKwotK25hbWVzcGFjZSBHewotKyAgbmFtZXNwYWNlIEdGID0gRjsKLSt9 CisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29u ZDogcHR5cGUgYXJyYXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCitpbmRleCBlY2MzMjg5 Li5mNzlhZDQwIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5j CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKK0BAIC0xNyw2ICsxNywx MyBAQAorIAorIGludCBhcnJheVtdID0gezEsIDIsIDMsIDR9OworIAorKyNpZmRlZiBfX0dOVUNf XworK3N0cnVjdAorKyAgeworKyAgICBpbnQgYVswXTsKKysgIH0gdW5ib3VuZDsKKysjZW5kaWYK ICsKLSsvLy0tLS0tLS0tLS0tLS0tLS0KLStpbnQgbWFpbigpewotKyAgdXNpbmcgbmFtZXNwYWNl IEQ7Ci0rICBuYW1lc3BhY2UgR1ggPSBHOwotKyAgcmV0dXJuIGF4ICsgZHggKyB4eCArIEc6OkdG OjpGRTo6ZXg7CisgaW50CisgbWFpbiAodm9pZCkKKyB7CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmV4cAoraW5kZXggM2EzMzYxOC4uZjJlMTFkZCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fy cmF5aWR4LmV4cAorQEAgLTU3LDQgKzU3LDEyIEBAIGdkYl90ZXN0ICJwcmludCBhcnJheSIgXAor ICAgICAgICAgICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBcXFxbMlxcXF0gPSAz LCBcXFxbM1xcXF0gPSA0XFx9IiBcCisgICAgICAgICAgIlByaW50IGFycmF5IHdpdGggYXJyYXkt aW5kZXhlcyBvbiIKKyAKKy0KKytzZXQgdGVzdCAicCB1bmJvdW5kLmEgPT0gJnVuYm91bmQuYVxb MFxdIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICIgPSAxXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiTm8gc3lt Ym9sIFwidW5ib3VuZFwiIGluIGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgewor Kwl1bnN1cHBvcnRlZCAiJHRlc3QgKG5vIEdDQykiCisrICAgIH0KICt9Ci1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmV4cAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n bnUtaWZ1bmMtbGliLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41NTQz NzU3CitpbmRleCAwMDAwMDAwLi42ODA1MzBhCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmV4cAotQEAgLTAsMCArMSw3NSBAQAot KyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n bnUtaWZ1bmMtbGliLmMKK0BAIC0wLDAgKzEsMzMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewot KyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9CisrICAgQ29weXJpZ2h0IDIwMDksIDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdf aWQgMAorKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0rc2V0IHRlc3RmaWxlIG5h bWVzcGFjZS1yZWN1cnNpdmUKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0 ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KKysgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgogKwotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7Ci0rICAgIHJldHVybiAt MTsKLSt9CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCisrZXh0ZXJuIHZv bGF0aWxlIGludCBnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQ7CisrZXh0ZXJuIGludCBpbml0X3N0dWIg KGludCBhcmcpOworK2V4dGVybiBpbnQgZmluYWwgKGludCBhcmcpOwogKwotKyMgR2V0IHRoaW5n cyBzdGFydGVkLgorK3R5cGVkZWYgaW50ICgqZmluYWxfdCkgKGludCBhcmcpOwogKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Z2RiX2xvYWQgJHtiaW5maWxlfQorK2FzbSAoIi50eXBlIGdudV9pZnVuYywgQGdudV9pbmRpcmVj dF9mdW5jdGlvbiIpOwogKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAi Y291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKLSsgICAgY29udGludWUKKytmaW5hbF90 CisrZ251X2lmdW5jICh2b2lkKQorK3sKKysgIGlmICghIGdudV9pZnVuY19pbml0aWFsaXplZCkK KysgICAgcmV0dXJuIGluaXRfc3R1YjsKKysgIGVsc2UKKysgICAgcmV0dXJuIGZpbmFsOwogK30K LSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgdGVz dCBwcmludGluZyBmcm9tIG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvCi0rIyBpbXBvcnRlZCBuYW1l c3BhY2UKLSsKLStnZGJfdGVzdCAicHJpbnQgYXgiICI9IDkiCi0rCi0rIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIHRlc3QgdGhhdCBnZGIgY2FuIHByaW50 IHdpdGhvdXQgZmFsbGluZyAKLSsjIGludG8gc2VhcmNoIGxvb3AKLSsKLStnZGJfdGVzdCAicHJp bnQgZHgiICI9IDk5IgotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCi0rIyB0ZXN0IHByaW50aW5nIGZyb20gbmFtZXNwYWNlIGltcG9ydGVkIGludG8KLSsj IGltcG9ydGVkIG5hbWVzcGFjZSB3aGVyZSBpbXBvcnRzIGFyZSBpbXBsaWNpdAotKyMgYW5vbnlt b3VzIG5hbWVzcGFjZSBpbXBvcnRzLgotKwotK2dkYl90ZXN0ICJwcmludCB4eCIgIj0gOTk5Igot KwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0 IHByaW50aW5nIHVzaW5nIHJlY3Vyc2l2ZSBuYW1lc3BhY2UKLSsjIGFsaWFzZXMuCi0rCi0rc2V0 dXBfa2ZhaWwgImdkYi8xMDU0MSIgIiotKi0qIgotK2dkYl90ZXN0ICJwdHlwZSBHOjpHRiIgIj0g bmFtZXNwYWNlIEYiCi0rCi0rc2V0dXBfa2ZhaWwgImdkYi8xMDU0MSIgIiotKi0qIgotK2dkYl90 ZXN0ICJwcmludCBHOjpHRjo6RkU6OmV4IiAiPSA5OTk5IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmNjIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuY2MKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nbnUtaWZ1bmMuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE3 M2U0OWIKK2luZGV4IDAwMDAwMDAuLjEwNjI3MWYKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmNjCi1AQCAtMCww ICsxLDkzIEBACi0raW50IGE7Ci0raW50IGI7Ci0raW50IGM7Ci0raW50IGQ7Ci0raW50IGU7Ci0r aW50IGY7Ci0raW50IGc7Ci0raW50IGg7Ci0raW50IGk7Ci0raW50IGo7Ci0raW50IGs7Ci0raW50 IGw7Ci0raW50IG07Ci0raW50IG47Ci0raW50IG87Ci0raW50IHA7Ci0raW50IHE7Ci0raW50IHI7 Ci0raW50IHM7Ci0raW50IHQ7Ci0raW50IHU7Ci0raW50IHY7Ci0raW50IHc7Ci0raW50IHg7Ci0r aW50IHk7Ci0raW50IHo7Ci0rCi0rbmFtZXNwYWNlIEEKLSt7Ci0rICBpbnQgeHl6OwotKwotKyAg dXNpbmcgOjphOwotKyAgdXNpbmcgOjpiOwotKyAgdXNpbmcgOjpjOwotKyAgdXNpbmcgOjpkOwot KyAgdXNpbmcgOjplOwotKyAgdXNpbmcgOjpmOwotKyAgdXNpbmcgOjpnOwotKyAgdXNpbmcgOjpo OwotKyAgdXNpbmcgOjppOwotKyAgdXNpbmcgOjpqOwotKyAgdXNpbmcgOjprOwotKyAgdXNpbmcg OjpsOwotKyAgdXNpbmcgOjptOwotKyAgdXNpbmcgOjpuOwotKyAgdXNpbmcgOjpvOwotKyAgdXNp bmcgOjpwOwotKyAgdXNpbmcgOjpxOwotKyAgdXNpbmcgOjpyOwotKyAgdXNpbmcgOjpzOwotKyAg dXNpbmcgOjp0OwotKyAgdXNpbmcgOjp1OwotKyAgdXNpbmcgOjp2OwotKyAgdXNpbmcgOjp3Owot KyAgdXNpbmcgOjp4OwotKyAgdXNpbmcgOjp5OwotKyAgdXNpbmcgOjp6OworKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYworQEAgLTAsMCArMSw2MSBAQAorKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rfQorKyAgIENv cHlyaWdodCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotK3Vz aW5nIEE6OmE7Ci0rdXNpbmcgQTo6YjsKLSt1c2luZyBBOjpjOwotK3VzaW5nIEE6OmQ7Ci0rdXNp bmcgQTo6ZTsKLSt1c2luZyBBOjpmOwotK3VzaW5nIEE6Omc7Ci0rdXNpbmcgQTo6aDsKLSt1c2lu ZyBBOjppOwotK3VzaW5nIEE6Omo7Ci0rdXNpbmcgQTo6azsKLSt1c2luZyBBOjpsOwotK3VzaW5n IEE6Om07Ci0rdXNpbmcgQTo6bjsKLSt1c2luZyBBOjpvOwotK3VzaW5nIEE6OnA7Ci0rdXNpbmcg QTo6cTsKLSt1c2luZyBBOjpyOwotK3VzaW5nIEE6OnM7Ci0rdXNpbmcgQTo6dDsKLSt1c2luZyBB Ojp1OwotK3VzaW5nIEE6OnY7Ci0rdXNpbmcgQTo6dzsKLSt1c2luZyBBOjp4OwotK3VzaW5nIEE6 Onk7Ci0rdXNpbmcgQTo6ejsKLSsKLSt1c2luZyBuYW1lc3BhY2UgQTsKLSsKLStpbnQgbWFpbiAo KQotK3sKLSsgIHJldHVybiAwOwotK30KLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRp b25zLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRp b25zLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmYyMmExNGUKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3Mt ZGVjbGFyYXRpb25zLmV4cAotQEAgLTAsMCArMSw1MCBAQAotKyMgQ29weXJpZ2h0IDIwMDggRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVs Ci0rfQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotK3NldCBwcm1zX2lk IDAKLStzZXQgYnVnX2lkIDAKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CiArCi0rc2V0IHRlc3RmaWxl IG5hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u Y2MKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKKytpbnQKKytpbml0X3N0 dWIgKGludCBhcmcpCisreworKyAgcmV0dXJuIDA7CiArfQogKwotK2lmIFtnZXRfY29tcGlsZXJf aW5mbyAke2JpbmZpbGV9XSB7Ci0rICAgIHJldHVybiAtMTsKKytpbnQKKytmaW5hbCAoaW50IGFy ZykKKyt7CisrICByZXR1cm4gYXJnICsgMTsKICt9CiArCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQu CisrLyogTWFrZSBkaWZmZXJlbnRpYXRpb24gb2YgaG93IHRoZSBnbnVfaWZ1bmMgY2FsbCByZXNv bHZlcyBiZWZvcmUgYW5kIGFmdGVyCisrICAgY2FsbGluZyBnbnVfaWZ1bmNfcHJlLiAgVGhpcyBl bnN1cmVzIHRoZSByZXNvbHZlZCBmdW5jdGlvbiBhZGRyZXNzIGlzIG5vdAorKyAgIGJlaW5nIGNh Y2hlZCBhbnl3aGVyZSBmb3IgdGhlIGRlYnVnZ2luZyBwdXJwb3Nlcy4gICovCiArCi0rZ2RiX2V4 aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStn ZGJfbG9hZCAke2JpbmZpbGV9Cisrdm9sYXRpbGUgaW50IGdudV9pZnVuY19pbml0aWFsaXplZDsK ICsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IG1haW4iCi0rICAgIGNvbnRpbnVlCisrc3RhdGljIHZvaWQKKytnbnVfaWZ1 bmNfcHJlICh2b2lkKQorK3sKKysgIGFzc2VydCAoIWdudV9pZnVuY19pbml0aWFsaXplZCk7Cisr CisrICBnbnVfaWZ1bmNfaW5pdGlhbGl6ZWQgPSAxOwogK30KICsKLSsjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCB0aGF0IHRoZSBzZWFyY2ggY2Fu IGZhaWwgZWZmaWNpZW50bHkgCisrZXh0ZXJuIGludCBnbnVfaWZ1bmMgKGludCBhcmcpOwogKwot K2dkYl90ZXN0ICJwcmludCBmYWtleCIgIk5vIHN5bWJvbCBcImZha2V4XCIgaW4gY3VycmVudCBj b250ZXh0LiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utc3Ry ZXNzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy5jYwotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmYzNDA4M2UKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuY2MKLUBAIC0wLDAgKzEs NjAgQEAKLSsKLStuYW1lc3BhY2UgQXsgaW50IHg7IH0KLStuYW1lc3BhY2UgQnsgaW50IHg7IH0K LStuYW1lc3BhY2UgQ3sgaW50IHg7IH0KLStuYW1lc3BhY2UgRHsgaW50IHg7IH0KLStuYW1lc3Bh Y2UgRXsgaW50IHg7IH0KLStuYW1lc3BhY2UgRnsgaW50IHg7IH0KLStuYW1lc3BhY2UgR3sgaW50 IHg7IH0KLStuYW1lc3BhY2UgSHsgaW50IHg7IH0KLStuYW1lc3BhY2UgSXsgaW50IHg7IH0KLStu YW1lc3BhY2UgSnsgaW50IHg7IH0KLStuYW1lc3BhY2UgS3sgaW50IHg7IH0KLStuYW1lc3BhY2Ug THsgaW50IHg7IH0KLStuYW1lc3BhY2UgTXsgaW50IHg7IH0KLStuYW1lc3BhY2UgTnsgaW50IHg7 IH0KLStuYW1lc3BhY2UgT3sgaW50IHg7IH0KLStuYW1lc3BhY2UgUHsgaW50IHg7IH0KLStuYW1l c3BhY2UgUXsgaW50IHg7IH0KLStuYW1lc3BhY2UgUnsgaW50IHg7IH0KLStuYW1lc3BhY2UgU3sg aW50IHg7IH0KLStuYW1lc3BhY2UgVHsgaW50IHg7IH0KLStuYW1lc3BhY2UgVXsgaW50IHg7IH0K LStuYW1lc3BhY2UgVnsgaW50IHg7IH0KLStuYW1lc3BhY2UgV3sgaW50IHg7IH0KLStuYW1lc3Bh Y2UgWHsgaW50IHg7IH0KLStuYW1lc3BhY2UgWXsgaW50IHg7IH0KLStuYW1lc3BhY2UgWnsgaW50 IHg7IH0KLSsKLSsKLStpbnQgbWFpbigpewotKwotKyAgdXNpbmcgbmFtZXNwYWNlIEE7Ci0rICB1 c2luZyBuYW1lc3BhY2UgQjsKLSsgIHVzaW5nIG5hbWVzcGFjZSBDOwotKyAgdXNpbmcgbmFtZXNw YWNlIEQ7Ci0rICB1c2luZyBuYW1lc3BhY2UgRTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBGOwotKyAg dXNpbmcgbmFtZXNwYWNlIEc7Ci0rICB1c2luZyBuYW1lc3BhY2UgSDsKLSsgIHVzaW5nIG5hbWVz cGFjZSBJOwotKyAgdXNpbmcgbmFtZXNwYWNlIEo7Ci0rICB1c2luZyBuYW1lc3BhY2UgSzsKLSsg IHVzaW5nIG5hbWVzcGFjZSBMOwotKyAgdXNpbmcgbmFtZXNwYWNlIE07Ci0rICB1c2luZyBuYW1l c3BhY2UgTjsKLSsgIHVzaW5nIG5hbWVzcGFjZSBPOwotKyAgdXNpbmcgbmFtZXNwYWNlIFA7Ci0r ICB1c2luZyBuYW1lc3BhY2UgUTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBSOwotKyAgdXNpbmcgbmFt ZXNwYWNlIFM7Ci0rICB1c2luZyBuYW1lc3BhY2UgVDsKLSsgIHVzaW5nIG5hbWVzcGFjZSBVOwot KyAgdXNpbmcgbmFtZXNwYWNlIFY7Ci0rICB1c2luZyBuYW1lc3BhY2UgVzsKLSsgIHVzaW5nIG5h bWVzcGFjZSBYOwotKyAgdXNpbmcgbmFtZXNwYWNlIFk7Ci0rICB1c2luZyBuYW1lc3BhY2UgWjsK KytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIGludCBpOwogKwotKyAgcmV0dXJuIDA7CisrICBn bnVfaWZ1bmNfcHJlICgpOworKyAgCisrICBpID0gZ251X2lmdW5jICgxKTsJLyogYnJlYWstYXQt Y2FsbCAqLworKyAgYXNzZXJ0IChpID09IDIpOworKworKyAgZ251X2lmdW5jICgyKTsJLyogYnJl YWstYXQtbmV4dGNhbGwgKi8KKysKKysgIHJldHVybiAwOwkvKiBicmVhay1hdC1leGl0ICovCiAr fQotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1l c3BhY2Utc3RyZXNzLmV4cAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251 LWlmdW5jLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAogbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE4MDY1MjMKK2luZGV4IDAwMDAwMDAuLjhl Y2Y1NTgKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFj ZS1zdHJlc3MuZXhwCi1AQCAtMCwwICsxLDUwIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251 LWlmdW5jLmV4cAorQEAgLTAsMCArMSwxMTAgQEAKKysjIENvcHlyaWdodCAoQykgMjAwOSwgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQpAQCAtMjMxNzksNjM4ICs3NDYzLDM3NyBAQCBpbmRleCAwMDAwMDAwLi4xODA2 NTIzCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhl biB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK2lmIHtbc2tpcF9zaGxpYl90ZXN0c119IHsK KysgICAgcmV0dXJuIDAKICt9CiArCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwot K3NldCB0ZXN0ZmlsZSBuYW1lc3BhY2Utc3RyZXNzCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u Y2MKKytzZXQgdGVzdGZpbGUgImdudS1pZnVuYyIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5j CiArc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysKKytzZXQgbGliZmlsZSAiJHt0ZXN0ZmlsZX0tbGli IgorK3NldCBsaWJzcmMgJHtsaWJmaWxlfS5jCisrc2V0IGxpYl9zbyAke29iamRpcn0vJHtzdWJk aXJ9LyR7bGliZmlsZX0uc28KKysKKysjIFdlIG5lZWQgRFdBUkYgZm9yIHRoZSAiZmluYWwiIGZ1 bmN0aW9uIGFzIHdlICJzdGVwIiBpbnRvIHRoZSBmdW5jdGlvbiBhbmQgR0RCCisrIyB3b3VsZCBz dGVwLW92ZXIgdGhlICJmaW5hbCIgZnVuY3Rpb24gaWYgdGhlcmUgd291bGQgYmUgbm8gbGluZSBu dW1iZXIgZGVidWcKKysjIGluZm9ybWF0aW9uIChEV0FSRikgYXZhaWxhYmxlLgorKyMKKysjIFdl IG11c3Qgbm90IGhhdmUgRFdBUkYgZm9yIHRoZSAiZ251X2lmdW5jIiBmdW5jdGlvbiBhcyBEV0FS RiBoYXMgbm8gd2F5IHRvCisrIyBleHByZXNzIHRoZSBnbnUtaWZ1bmMgdHlwZSBhbmQgaXQgd291 bGQgYmUgY29uc2lkZXJlZCBhcyBhIHJlZ3VsYXIgZnVuY3Rpb24KKysjIGR1ZSB0byBEV0FSRiBi eSBHREIuICBJbiBFTEYgZ251LWlmdW5jIGlzIGV4cHJlc3NlZCBieSB0aGUgU1RUX0dOVV9JRlVO QyB0eXBlLgorKyMKKysjIEJvdGggZnVuY3Rpb25zIG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUgc2hh cmVkIGxpYnJhcnkgZmlsZSBidXQKKysjIGdkYl9jb21waWxlX3NobGliIGhhcyBubyB3YXkgdG8g c3BlY2lmeSBzb3VyY2Utc3BlY2lmaWMgY29tcGlsYXRpb24gb3B0aW9ucy4KKysjCisrIyBUaGVy ZWZvcmUgJGxpYmZpbGUgY29udGFpbnMgb25seSB0aGUgZ251LWlmdW5jIGZ1bmN0aW9uIHdpdGgg bm8gRFdBUkYKKysjIHJlZmVyZW5jaW5nIGFsbCB0aGUgb3RoZXIgcGFydHMgZnJvbSB0aGUgbWFp biBleGVjdXRhYmxlIHdpdGggRFdBUkYuCisrCisrc2V0IGxpYl9vcHRzIHt9Cisrc2V0IGV4ZWNf b3B0cyBbbGlzdCBkZWJ1ZyBzaGxpYj0kbGliX3NvXQorKworK2lmIFtnZXRfY29tcGlsZXJfaW5m byAke2JpbmZpbGV9XSB7CiArICAgIHJldHVybiAtMQogK30KICsKLStpZiBbZ2V0X2NvbXBpbGVy X2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTE7CisraWYgeyBbZ2RiX2NvbXBpbGVf c2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfc28gJGxpYl9vcHRzXSAhPSAi IgorKyAgICAgfHwgW2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHNyY2ZpbGUgJGJp bmZpbGUgZXhlY3V0YWJsZSAkZXhlY19vcHRzXSAhPSAiIn0geworKyAgICB1bnRlc3RlZCAiQ291 bGQgbm90IGNvbXBpbGUgZWl0aGVyICRsaWJzcmMgb3IgJHNyY2ZpbGUuIgorKyAgICByZXR1cm4g LTEKICt9CiArCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrIyBTdGFydCB3aXRoIGEgZnJlc2gg Z2RiLgogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQorK2NsZWFuX3Jlc3RhcnQgJHRlc3Rm aWxlCisrZ2RiX2xvYWRfc2hsaWJzICR7bGliX3NvfQogKwogK2lmICFbcnVudG9fbWFpbl0gdGhl biB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKLSsgICAg Y29udGludWUKKysgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCisrICAgIHJldHVybiAxOwog K30KICsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMg VGVzdCB0aGF0IHRoZSBzZWFyY2ggY2FuIGZhaWwgZWZmaWNpZW50bHkgCi0rCi0rZ2RiX3Rlc3Qg InByaW50IHkiICJObyBzeW1ib2wgXCJ5XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvbmFtZXNwYWNlLmV4cAotaW5kZXggNDM2MmZkOC4uZjdjZmQ1NyAxMDA2NDQKLS0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL25hbWVzcGFjZS5leHAKLUBAIC0yNCw2ICsyNCw3IEBACi0gIyBmb3IgbmFtZXNwYWNl cy4KLSAjIE5vdGU6IEFzIG9mIDIwMDAtMDYtMDMsIHRoZXkgcGFzc2VkIHVuZGVyIGcrKyAtIGRq YgotIAotK2xvYWRfbGliICJjcC1zdXBwb3J0LmV4cCIKLSAKLSBpZiAkdHJhY2VsZXZlbCB0aGVu IHsKLSAgICAgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotQEAgLTI0MSwxMSArMjQyLDE2IEBAIGdk Yl90ZXN0ICJwdHlwZSBFIiAidHlwZSA9IG5hbWVzcGFjZSBDOjpEOjpFIgotIGdkYl90ZXN0ICJw dHlwZSBDQ2xhc3MiICJ0eXBlID0gKGNsYXNzIEM6OkNDbGFzcyBce1xyXG4gIHB1YmxpYzp8c3Ry dWN0IEM6OkNDbGFzcyBceylcclxuICAgIGludCB4O1xyXG5cfSIKLSBnZGJfdGVzdCAicHR5cGUg Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgInR5cGUgPSAoY2xhc3MgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFz cyBce1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHspXHJcbiAg ICBpbnQgeTtcclxuXH0iCi0gZ2RiX3Rlc3QgInB0eXBlIE5lc3RlZENsYXNzIiAiTm8gc3ltYm9s IFwiTmVzdGVkQ2xhc3NcIiBpbiBjdXJyZW50IGNvbnRleHQuIgotLXNldHVwX2tmYWlsICJnZGIv MTQ0OCIgIiotKi0qIgotLWdkYl90ZXN0ICJwdHlwZSA6OkM6OkNDbGFzcyIgInR5cGUgPSBjbGFz cyBDOjpDQ2xhc3MgXHtcclxuICBwdWJsaWM6XHJcbiAgICBpbnQgeDtcclxuXH0iCi0tc2V0dXBf a2ZhaWwgImdkYi8xNDQ4IiAiKi0qLSoiCi0tZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6Q0NsYXNzOjpO ZXN0ZWRDbGFzcyIgInR5cGUgPSBjbGFzcyBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIFx7XHJcbiAg cHVibGljOlxyXG4gICAgaW50IHk7XHJcblx9IgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiot Ki0qIgotK2NwX3Rlc3RfcHR5cGVfY2xhc3MgXAotKwkicHR5cGUgOjpDOjpDQ2xhc3MiICIiICJj bGFzcyIgIkM6OkNDbGFzcyIgXAotKwl7Ci0rCSAgICB7IGZpZWxkIHB1YmxpYyAiaW50IHg7IiB9 Ci0rCX0KLStjcF90ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6Qzo6Q0NsYXNzOjpOZXN0 ZWRDbGFzcyIgIiIgImNsYXNzIiAiQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgXAotKwl7Ci0rCSAg ICB7IGZpZWxkIHB1YmxpYyAiaW50IHk7IiB9Ci0rCX0KLSBnZGJfdGVzdCAicHR5cGUgOjpDOjpO ZXN0ZWRDbGFzcyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQ1wi LiIKLSBnZGJfdGVzdCAicHR5cGUgQzo6Q0NsYXNzIiAiTm8gc3ltYm9sIFwiQ0NsYXNzXCIgaW4g bmFtZXNwYWNlIFwiQzo6Q1wiLiIKLSBnZGJfdGVzdCAicHR5cGUgQzo6Q0NsYXNzOjpOZXN0ZWRD bGFzcyIgIk5vIHR5cGUgXCJDQ2xhc3NcIiB3aXRoaW4gY2xhc3Mgb3IgbmFtZXNwYWNlIFwiQzo6 Q1wiLiIKLUBAIC0yNTUsOCArMjYxLDExIEBAIGdkYl90ZXN0ICJwdHlwZSBDOjpOZXN0ZWRDbGFz cyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wiCi0gCi0g Z2RiX3Rlc3QgInByaW50IGNPdGhlckZpbGUiICJcXCRcWzAtOVxdLiogPSAzMTYiCi0gZ2RiX3Rl c3QgInB0eXBlIE90aGVyRmlsZUNsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpPdGhlckZpbGVDbGFz cyBce1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6Ok90aGVyRmlsZUNsYXNzIFx7KVxyXG4gICAgaW50 IHo7XHJcblx9IgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgotLWdkYl90ZXN0ICJw dHlwZSA6OkM6Ok90aGVyRmlsZUNsYXNzIiAidHlwZSA9IGNsYXNzIEM6Ok90aGVyRmlsZUNsYXNz IFx7XHJcbiAgcHVibGljOlxyXG4gICAgaW50IHo7XHJcblx9IgotK2NwX3Rlc3RfcHR5cGVfY2xh c3MgXAotKwkicHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgIiIgImNsYXNzIiAiQzo6T3RoZXJG aWxlQ2xhc3MiIFwKLSsJewotKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB6OyIgfQotKwl9Ci0g Z2RiX3Rlc3QgInB0eXBlIEM6Ok90aGVyRmlsZUNsYXNzIiAiTm8gc3ltYm9sIFwiT3RoZXJGaWxl Q2xhc3NcIiBpbiBuYW1lc3BhY2UgXCJDOjpDXCIuIgotIAotICMgU29tZSBhbm9ueW1vdXMgbmFt ZXNwYWNlIHRlc3RzLgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25zdXNpbmcu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbnN1c2luZy5leHAKLWluZGV4IDcyYTYxNmUuLmZk OTlmODcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uc3VzaW5nLmV4cAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbnN1c2luZy5leHAKLUBAIC0zMCw3ICszMCw3IEBAIGlm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSBcCi0gfQotIAotIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZp bGV9XSB7Ci0tICAgIHJldHVybiAtMQotKyAgICByZXR1cm4gLTE7Ci0gfQotIAotIAotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL292ZXJsb2FkLmV4cAotaW5kZXggYWU4ZmQyNi4uODI5MTAyMiAxMDA2NDQKLS0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3Avb3ZlcmxvYWQuZXhwCi1AQCAtNzQsMTIgKzc0LDEyIEBAIHNldCByZV9tZXRob2RzCSIk e3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKTsiCi0gc2V0IHJl X21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChjaGFyXFwpOyIK LSBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHNp Z25lZCBjaGFyXFwpOyIKLSBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92 ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCk7IgotLXNldCByZV9tZXRob2RzCSIke3JlX21l dGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCk7IgotLXNldCByZV9tZXRob2Rz CSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgc2hvcnRcXCk7 IgotK3NldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwo c2hvcnQoIGludCk/XFwpOyIKLStzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50 IG92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBzaG9ydHxzaG9ydCB1bnNpZ25lZCkoIGludCk/XFwp OyIKLSBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xc KGludFxcKTsiCi0gc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9h ZDFhcmdcXCh1bnNpZ25lZCBpbnRcXCk7IgotLXNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9 JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwobG9uZ1xcKTsiCi0tc2V0IHJlX21ldGhvZHMJIiR7cmVf bWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpOyIKLStzZXQg cmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKGxvbmcoIGlu dCk/XFwpOyIKLStzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2Fk MWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKTsiCi0gc2V0IHJl X21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChmbG9hdFxcKTsi Ci0gc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChk b3VibGVcXCk7IgotIHNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3Zlcmxv YWRmbmFyZ1xcKCh2b2lkfClcXCk7IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L292bGRicmVhay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmxkYnJlYWsuZXhwCi1pbmRl eCA1YjA2YjMxLi4zZTQ3Yzc3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3Zs ZGJyZWFrLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3ZsZGJyZWFrLmV4cAotQEAg LTEyNywxMCArMTI3LDI0IEBAIHByb2Mgc2V0X2JwX292ZXJsb2FkZWQge25hbWUgZXhwZWN0ZWRt ZW51IG15Y2hvaWNlIGJwbnVtYmVyIGxpbmVudW1iZXJ9IHsKLSB9Ci0gCi0gIyBUaGlzIGlzIHRo ZSBleHBlY3RlZCBtZW51IGZvciBvdmVybG9hZDFhcmcuCi0tIyBOb3RlIHRoZSBhcmcgdHlwZSB2 YXJpYXRpb25zIG9uIGxpbmVzIDYgYW5kIDEzLgotKyMgTm90ZSB0aGUgYXJnIHR5cGUgdmFyaWF0 aW9ucyBmb3Igdm9pZCBhbmQgaW50ZWdlciB0eXBlcy4KLSAjIFRoaXMgYWNjb21tb2RhdGVzIGRp ZmZlcmVudCB2ZXJzaW9ucyBvZiBnKysuCi0gCi0tc2V0IG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxb MFxcXF0gY2FuY2VsXHJcblxcXFsxXFxcXSBhbGxcclxuXFxcWzJcXFxdIGZvbzo6b3ZlcmxvYWQx YXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZToxMjFcclxuXFxcWzNcXFxdIGZvbzo6b3Zlcmxv YWQxYXJnXFwoZmxvYXRcXCkgYXQuKiRzcmNmaWxlOjEyMFxyXG5cXFxbNFxcXF0gZm9vOjpvdmVy bG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpIGF0Liokc3JjZmlsZToxMTlcclxuXFxcWzVcXFxd IGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHJcblxcXFs2XFxc XSBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBpbnR8dW5zaWduZWQpXFwpIGF0Liokc3Jj ZmlsZToxMTdcclxuXFxcWzdcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoaW50XFwpIGF0Liokc3Jj ZmlsZToxMTZcclxuXFxcWzhcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgc2hvcnRc XCkgYXQuKiRzcmNmaWxlOjExNVxyXG5cXFxbOVxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9y dFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHJcblxcXFsxMFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1 bnNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNcclxuXFxcWzExXFxcXSBmb286Om92ZXJs b2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJcclxuXFxcWzEyXFxcXSBm b286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyXG5cXFxbMTNcXFxd IGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6MTEwXHJcbj4gJCIK LStzZXQgICAgbWVudV9vdmVybG9hZDFhcmcgIlxcXFswXFxcXSBjYW5jZWxcclxuIgotK2FwcGVu ZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzFcXFxdIGFsbFxyXG4iCi0rYXBwZW5kIG1lbnVfb3Zl cmxvYWQxYXJnICJcXFxbMlxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChkb3VibGVcXCkgYXQuKiRz cmNmaWxlOjEyMVxyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbM1xcXF0gZm9v OjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHJcbiIKLSthcHBlbmQg bWVudV9vdmVybG9hZDFhcmcgIlxcXFs0XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25l ZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHJcbiIKLSth cHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs1XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGxv bmcoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMThcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2Fk MWFyZyAiXFxcWzZcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIGludHx1bnNpZ25l ZClcXCkgYXQuKiRzcmNmaWxlOjExN1xyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJc XFxbN1xcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNmaWxlOjExNlxyXG4i Ci0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbOFxcXF0gZm9vOjpvdmVybG9hZDFhcmdc XCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6 MTE1XHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs5XFxcXSBmb286Om92ZXJs b2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE0XHJcbiIKLSthcHBlbmQg bWVudV9vdmVybG9hZDFhcmcgIlxcXFsxMFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25l ZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFy ZyAiXFxcWzExXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3Jj ZmlsZToxMTJcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzEyXFxcXSBmb286 Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyXG4iCi0rYXBwZW5kIG1l bnVfb3ZlcmxvYWQxYXJnICJcXFxbMTNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxc KSBhdC4qJHNyY2ZpbGU6MTEwXHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIj4gJCIK LSAKLSAjIFNldCBtdWx0aXBsZS1zeW1ib2xzIHRvICJhc2siLCB0byBhbGxvdyB1cyB0byB0ZXN0 IHRoZSB1c2UKLSAjIG9mIHRoZSBtdWx0aXBsZS1jaG9pY2UgbWVudSB3aGVuIGJyZWFraW5nIG9u IGFuIG92ZXJsb2FkZWQgbWV0aG9kLgotQEAgLTE1NywxNyArMTcxLDE3IEBAIHNldF9icF9vdmVy bG9hZGVkICJmb286Om92ZXJsb2FkMWFyZyIgIiRtZW51X292ZXJsb2FkMWFyZyIgMTMgICAxMyAx MTAKLSAKLSBnZGJfdGVzdCAiaW5mbyBicmVhayIgXAotICAgICAiTnVtICAgICBUeXBlXFtcdCBc XStEaXNwIEVuYiBBZGRyZXNzXFtcdCBcXStXaGF0LioKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluIGF0Liokc3JjZmlsZTo0 OVxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxb XHQgXF0raW4gbWFpbihcXCgofHZvaWQpXFwpKT8gYXQuKiRzcmNmaWxlOjQ5XHIKLSBcW1x0IFxd K2JyZWFrcG9pbnQgYWxyZWFkeSBoaXQgMSB0aW1lXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xc KGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaWdu ZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVu c2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExM1xyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFr cG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdc XChzaG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVu c2lnbmVkIHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVccgotK1xbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJn XFwoc2hvcnQoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTRccgotK1xbMC05XF0rXFtcdCBcXSti cmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQx YXJnXFwoKHVuc2lnbmVkIHNob3J0fHNob3J0IHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNm aWxlOjExNVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0r JGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNmaWxlOjEx NlxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxb XHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5zaWduZWQgaW50KVxcKSBh dC4qJHNyY2ZpbGU6MTE3XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5 XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmdcXCkgYXQuKiRz cmNmaWxlOjExOFxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQg XF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpIGF0 Liokc3JjZmlsZToxMTlccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlc W1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZyggaW50KT9cXCkg YXQuKiRzcmNmaWxlOjExOFxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAg eVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgbG9u Z3xsb25nIHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOVxyCi0gXFswLTlcXStc W1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpv dmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKLSBcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKGRvdWJsZVxcKSBhdC4qJHNyY2ZpbGU6MTIxXHIKLSBcWzAtOVxdK1xbXHQgXF0r YnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2Fk MWFyZ1xcKCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjExMCIgXAotQEAgLTIxNSwxNyArMjI5LDE3 IEBAIGdkYl9leHBlY3QgewotIAotIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCi0gICAgICJOdW0g ICAgIFR5cGVcW1x0IFxdK0Rpc3AgRW5iIEFkZHJlc3NcW1x0IFxdK1doYXQuKgotLVxbMC05XF0r XFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIG1haW4g YXQuKiRzcmNmaWxlOjQ5XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5 XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluKFxcKCh8dm9pZClcXCkpPyBhdC4qJHNyY2ZpbGU6 NDlccgotIFxbXHQgXF0rYnJlYWtwb2ludCBhbHJlYWR5IGhpdCAxIHRpbWVccgotIFxbMC05XF0r XFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6 b3ZlcmxvYWQxYXJnXFwoY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTExXHIKLSBcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJccgotIFxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwodW5zaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEzXHIKLS1cWzAtOVxd K1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286 Om92ZXJsb2FkMWFyZ1xcKHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTRccgotLVxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwodW5zaWduZWQgc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjExNVxyCi0rXFswLTlc XStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9v OjpvdmVybG9hZDFhcmdcXChzaG9ydCggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNFxyCi0rXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQp P1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAg a2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGludFxcKSBh dC4qJHNyY2ZpbGU6MTE2XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5 XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZHx1bnNp Z25lZCBpbnQpXFwpIGF0Liokc3JjZmlsZToxMTdccgotLVxbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo bG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2ln bmVkIGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOVxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9p bnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChs b25nKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xc KCh1bnNpZ25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE5 XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtc dCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGZsb2F0XFwpIGF0Liokc3JjZmlsZToxMjBccgot IFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxd K2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZToxMjFccgotIFxb MC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2lu IGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6MTEwIiBcCi1AQCAt Mjk2LDEyICszMTAsMTIgQEAgZ2RiX3Rlc3QgImluZm8gYnJlYWsiIFwKLSAgICAgIk51bSAgICAg VHlwZVxbXHQgXF0rRGlzcCBFbmIgQWRkcmVzc1xbXHQgXF0rV2hhdC4qCi0gXFswLTlcXStcW1x0 IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVy bG9hZDFhcmdcXChkb3VibGVcXCkgYXQuKiRzcmNmaWxlOjEyMVxyCi0gXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJl YWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFy Z1xcKHVuc2lnbmVkIGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOVxyCi0tXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXChsb25nXFwpIGF0Liokc3JjZmlsZToxMThccgotK1xbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJn XFwoKHVuc2lnbmVkIGxvbmd8bG9uZyB1bnNpZ25lZCkoIGludCk/XFwpIGF0Liokc3JjZmlsZTox MTlccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhc W1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZyggaW50KT9cXCkgYXQuKiRzcmNmaWxl OjExOFxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5zaWduZWQgaW50KVxc KSBhdC4qJHNyY2ZpbGU6MTE3XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2Vl cCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGludFxcKSBhdC4q JHNyY2ZpbGU6MTE2XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtc dCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwp IGF0Liokc3JjZmlsZToxMTVccgotLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVw IHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCkgYXQu KiRzcmNmaWxlOjExNFxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxb XHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8 c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHIKLStcWzAtOVxdK1xb XHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92 ZXJsb2FkMWFyZ1xcKHNob3J0KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKLSBcWzAtOVxd K1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286 Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExM1xyCi0gXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHIKLSBc WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStp biBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcmVhbGNwcC5jYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL3JlYWxjcHAuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44ZTRm NzJhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9yZWFsY3BwLmNj Ci1AQCAtMCwwICsxLDQwOSBAQAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8aW9z dHJlYW0+Ci0rCi0rLy8gRm9yd2FyZCBkZWNscwotK2NsYXNzIGJhc2U7Ci0rY2xhc3MgZGVyaXZl ZDsKKysjIFRoZSAiaWYiIGNvbmRpdGlvbiBpcyBhcnRpZmljYWwgdG8gdGVzdCByZWdyZXNzaW9u IG9mIGEgZm9ybWVyIHBhdGNoLgorK2dkYl9icmVha3BvaW50ICJbZ2RiX2dldF9saW5lX251bWJl ciAiYnJlYWstYXQtbmV4dGNhbGwiXSBpZiBpICYmIGdudV9pZnVuYyAoaSkgIT0gNDIiCiArCi0r Ly8gQSBzaW1wbGUgdGVtcGxhdGUgd2l0aCBzcGVjaWFsaXphdGlvbnMKLSt0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4KLStjbGFzcyB0Y2xhc3MKLSt7Ci0rcHVibGljOgotKyAgdm9pZCBkb19zb21ldGhp bmcgKCkgeyB9IC8vIHRjbGFzczxUPjo6ZG9fc29tZXRoaW5nCi0rfTsKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstYXQtY2FsbCJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImJyZWFrLWF0LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwuKiIKICsKLSt0ZW1w bGF0ZSA8PgotK3ZvaWQgdGNsYXNzPGNoYXI+Ojpkb19zb21ldGhpbmcgKCkgeyB9IC8vIHRjbGFz czxjaGFyPjo6ZG9fc29tZXRoaW5nCisrIyBUZXN0IEdEQiB3aWxsIGF1dG9tYXRpY2FsbHkgaW5k aXJlY3QgdGhlIGNhbGwuCiArCi0rdGVtcGxhdGUgPD4KLSt2b2lkIHRjbGFzczxpbnQ+Ojpkb19z b21ldGhpbmcgKCkgeyB9IC8vIHRjbGFzczxpbnQ+Ojpkb19zb21ldGhpbmcKKytnZGJfdGVzdCAi cCBnbnVfaWZ1bmMgKDMpIiAiID0gNCIKICsKLSt0ZW1wbGF0ZTw+Ci0rdm9pZCB0Y2xhc3M8bG9u Zz46OmRvX3NvbWV0aGluZyAoKSB7IH0gLy8gdGNsYXNzPGxvbmc+Ojpkb19zb21ldGhpbmcKKysj IFRlc3QgR0RCIHdpbGwgc2tpcCB0aGUgZ251X2lmdW5jIHJlc29sdmVyIG9uIGZpcnN0IGNhbGwu CiArCi0rdGVtcGxhdGU8PgotK3ZvaWQgdGNsYXNzPHNob3J0Pjo6ZG9fc29tZXRoaW5nICgpIHsg fSAvLyB0Y2xhc3M8c2hvcnQ+Ojpkb19zb21ldGhpbmcKKytnZGJfdGVzdCAic3RlcCIgIlxyXG5m aW5hbCAuKiIKICsKLSsvLyBBIHNpbXBsZSB0ZW1wbGF0ZSB3aXRoIG11bHRpcGxlIHRlbXBsYXRl IHBhcmFtZXRlcnMKLSt0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQywgY2xhc3Mg RCwgY2xhc3MgRT4KLSt2b2lkIGZsdWJiZXIgKHZvaWQpIC8vIGZsdWJiZXIKLSt7Ci0rICBBIGE7 Ci0rICBCIGI7Ci0rICBDIGM7Ci0rICBEIGQ7Ci0rICBFIGU7Ci0rCi0rICArK2E7Ci0rICArK2I7 Ci0rICArK2M7Ci0rICArK2Q7Ci0rICArK2U7Ci0rfQorKyMgVGVzdCBHREIgd2lsbCBub3QgYnJl YWsgYmVmb3JlIHRoZSBmaW5hbCBjaG9zZW4gaW1wbGVtZW50YXRpb24uCiArCi0rLy8gU29tZSBj b250cml2ZWQgcG9saWNpZXMKLSt0ZW1wbGF0ZSA8Y2xhc3MgVD4KLStzdHJ1Y3Qgb3BlcmF0aW9u XzEKLSt7Ci0rICBzdGF0aWMgdm9pZCBmdW5jdGlvbiAodm9pZCkgeyB9IC8vIG9wZXJhdGlvbl8x PFQ+OjpmdW5jdGlvbgotK307CisrIyBBbHNvIHRlc3QgYSBmb3JtZXIgcGF0Y2ggcmVncmVzc2lv bjoKKysjIENvbnRpbnVpbmcuCisrIyBFcnJvciBpbiB0ZXN0aW5nIGJyZWFrcG9pbnQgY29uZGl0 aW9uOgorKyMgQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4g bWVtb3J5LgorKyMgCisrIyBCcmVha3BvaW50IDIsIG1haW4gKCkgYXQgLi9nZGIuYmFzZS9nbnUt aWZ1bmMuYzozMwogKwotK3RlbXBsYXRlIDxjbGFzcyBUPgotK3N0cnVjdCBvcGVyYXRpb25fMgot K3sKLSsgIHN0YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzI8VD46 OmZ1bmN0aW9uCi0rfTsKKytnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLlxyXG5cclxu QnJlYWtwb2ludCAuKiAoYXR8aW4pIC4qYnJlYWstYXQtbmV4dGNhbGwuKiIgXAorKwkgImNvbnRp bnVlIHRvIGJyZWFrLWF0LW5leHRjYWxsIgogKwotK3RlbXBsYXRlIDxjbGFzcyBUPgotK3N0cnVj dCBvcGVyYXRpb25fMwotK3sKLSsgIHN0YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8g b3BlcmF0aW9uXzM8VD46OmZ1bmN0aW9uCi0rfTsKKytnZGJfYnJlYWtwb2ludCAiZ251X2lmdW5j IgogKwotK3RlbXBsYXRlIDxjbGFzcyBUPgotK3N0cnVjdCBvcGVyYXRpb25fNAotK3sKLSsgIHN0 YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzQ8VD46OmZ1bmN0aW9u Ci0rfTsKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibmV4dGNhbGwgZ251X2lmdW5jIgog KwotKy8vIEEgcG9saWN5LWJhc2VkIGNsYXNzIHcvIGFuZCB3L28gZGVmYXVsdCBwb2xpY3kKLSt0 ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotK2NsYXNzIHBvbGljeSA6IHB1YmxpYyBQ b2xpY3kKLSt7Ci0rcHVibGljOgotKyAgcG9saWN5IChUIG9iaikgOiBvYmpfIChvYmopIHsgfSAv LyBwb2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5CisrZ2RiX3Rlc3QgImZyYW1lIiAiIzAgKygweFxb MC05YS1mXF0rIGluICspP2ZpbmFsIFxcKC4qIiAibmV4dGNhbGwgZ251X2lmdW5jIHNraXBwZWQi CiArCi0rcHJpdmF0ZToKLSsgIFQgb2JqXzsKLSt9OwogKwotK3RlbXBsYXRlIDxjbGFzcyBULCBj bGFzcyBQb2xpY3kgPSBvcGVyYXRpb25fMTxUPiA+Ci0rY2xhc3MgcG9saWN5ZCA6IHB1YmxpYyBQ b2xpY3kKLSt7Ci0rcHVibGljOgotKyAgcG9saWN5ZCAoVCBvYmopIDogb2JqXyAob2JqKSB7IH0g Ly8gcG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkCi0rICB+cG9saWN5ZCAodm9pZCkgeyB9IC8v IHBvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWQKKysjIENoZWNrIGFueSBjb21tYW5kcyBub3Qg ZG9pbmcgYW4gaW5mZXJpb3IgY2FsbCBzdGlsbCBjb21wdXRlIHdpdGggYWRkcmVzcyBvZgorKyMg dGhlIGdudS1pZnVuYyByZXNvbHZlci4KICsKLStwcml2YXRlOgotKyAgVCBvYmpfOwotK307Cisr Z2RiX3Rlc3QgInAgZ251X2lmdW5jIiAiID0gezx0ZXh0IGdudS1pbmRpcmVjdC1mdW5jdGlvbiB2 YXJpYWJsZSwgbm8gZGVidWcgaW5mbz59IDB4XFswLTlhLWZcXSsgPGdudV9pZnVuYz4iICJwIGdu dV9pZnVuYyBleGVjdXRpbmciCisrZ2RiX3Rlc3QgImluZm8gc3ltIGdudV9pZnVuYyIgImdudV9p ZnVuYyBpbiBzZWN0aW9uIC4qIiAiaW5mbyBzeW0gZ251X2lmdW5jIGV4ZWN1dGluZyIKICsKLSt0 eXBlZGVmIHBvbGljeTxpbnQsIG9wZXJhdGlvbl8xPHZvaWQqPiA+IHBvbGljeTE7Ci0rdHlwZWRl ZiBwb2xpY3k8aW50LCBvcGVyYXRpb25fMjx2b2lkKj4gPiBwb2xpY3kyOwotK3R5cGVkZWYgcG9s aWN5PGludCwgb3BlcmF0aW9uXzM8dm9pZCo+ID4gcG9saWN5MzsKLSt0eXBlZGVmIHBvbGljeTxp bnQsIG9wZXJhdGlvbl80PHZvaWQqPiA+IHBvbGljeTQ7Cisrc2V0IHRlc3QgImluZm8gYWRkciBn bnVfaWZ1bmMiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIlN5 bWJvbCBcImdudV9pZnVuY1wiIGlzIGF0ICgweFxbMC05YS1mXF0rKSBpbiAuKiRnZGJfcHJvbXB0 ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorK2dkYl90ZXN0ICJpbmZvIHN5bSAkZXhw ZWN0X291dCgxLHN0cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIDxn bnVfaWZ1bmMtYWRkcmVzcz4iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9p bnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRl cm5hbC12YXItZmllbGQtYWRkcmVzcy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uZWViN2I4NQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCitAQCAtMCwwICsxLDIwIEBACisrLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSt0eXBlZGVm IHBvbGljeWQ8aW50PiBwb2xpY3lkMTsKLSt0eXBlZGVmIHBvbGljeWQ8bG9uZz4gcG9saWN5ZDI7 Ci0rdHlwZWRlZiBwb2xpY3lkPGNoYXI+IHBvbGljeWQzOwotK3R5cGVkZWYgcG9saWN5ZDxiYXNl PiBwb2xpY3lkNDsKLSt0eXBlZGVmIHBvbGljeWQ8dGNsYXNzPGludD4gPiBwb2xpY3lkNTsKKysg ICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLStjbGFz cyBmbHVmZiB7IH07Ci0rc3RhdGljIGZsdWZmICpnX2ZsdWZmID0gbmV3IGZsdWZmICgpOworKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0rY2xhc3MgYmFzZQotK3sKLStwcm90ZWN0 ZWQ6Ci0rICBpbnQgZm9vXzsKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwotK3B1YmxpYzoK LSsgIGJhc2UgKHZvaWQpIDogZm9vXyAoNDIpIHsgfSAvLyBiYXNlOjpiYXNlKHZvaWQpCi0rICBi YXNlIChpbnQgZm9vKSA6IGZvb18gKGZvbykgeyB9IC8vIGJhc2U6OmJhc2UoaW50KQotKyAgfmJh c2UgKHZvaWQpIHsgfSAvLyBiYXNlOjp+YmFzZQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwogKwotKyAgLy8gU29tZSBvdmVybG9hZGVkIG1ldGhvZHMKLSsgIGludCBvdmVybG9h ZCAodm9pZCkgY29uc3QgeyByZXR1cm4gMDsgfSAvLyBiYXNlOjpvdmVybG9hZCh2b2lkKSBjb25z dAotKyAgaW50IG92ZXJsb2FkIChpbnQgaSkgY29uc3QgeyByZXR1cm4gMTsgfSAvLyBiYXNlOjpv dmVybG9hZChpbnQpIGNvbnN0Ci0rICBpbnQgb3ZlcmxvYWQgKHNob3J0IHMpIGNvbnN0IHsgcmV0 dXJuIDI7IH0gLy8gYmFzZTo6b3ZlcmxvYWQoc2hvcnQpIGNvbnN0Ci0rICBpbnQgb3ZlcmxvYWQg KGxvbmcgbCkgY29uc3QgeyByZXR1cm4gMzsgfSAvLyBiYXNlOjpvdmVybG9hZChsb25nKSBjb25z dAotKyAgaW50IG92ZXJsb2FkIChjaGFyKiBhKSBjb25zdCB7IHJldHVybiA0OyB9IC8vIGJhc2U6 Om92ZXJsb2FkKGNoYXIqKSBjb25zdAotKyAgaW50IG92ZXJsb2FkIChiYXNlJiBiKSBjb25zdCB7 IHJldHVybiA1OyB9IC8vIGJhc2U6Om92ZXJsb2FkKGJhc2UmKSBjb25zdAorK3N0cnVjdCB7Cisr ICBpbnQgZmllbGQ7CisrfSBzdGF0aWNzdHJ1Y3QgPSB7IDEgfTsKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNmQ4MmU3MworLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAK K0BAIC0wLDAgKzEsMjYgQEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwotKyAgLy8gT3BlcmF0b3JzCi0rICBpbnQgb3BlcmF0b3IrIChiYXNlIGNv bnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcisKLSsgIHsgcmV0dXJuIGZvb18gKyBvLmZv b187IH0KKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rICBiYXNlIG9wZXJhdG9y KysgKHZvaWQpIC8vIGJhc2U6Om9wZXJhdG9yKysKLSsgIHsgKytmb29fOyByZXR1cm4gKnRoaXM7 IH0KKytzZXQgdGVzdCBpbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcworK3NldCBiaW5maWxlICR7 dGVzdH0ueAorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9 LmMiICIke29iamRpcn0vJHtzdWJkaXJ9LyR7YmluZmlsZX0iIG9iamVjdCB7ZGVidWd9XSAhPSAi IiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAg ICByZXR1cm4gLTEKKyt9CiArCi0rICBiYXNlIG9wZXJhdG9yKz0oYmFzZSBjb25zdCYgbykgLy8g YmFzZTo6b3BlcmF0b3IrPQotKyAgeyBmb29fICs9IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9Cisr Y2xlYW5fcmVzdGFydCAkYmluZmlsZQogKwotKyAgaW50IG9wZXJhdG9yLSAoYmFzZSBjb25zdCYg bykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3ItCi0rICB7IHJldHVybiBmb29fIC0gby5mb29fOyB9 CisrZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQorK2dkYl90ZXN0IHtw ICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLW92ZXJmbG93LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxv dy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYzVkNWVlMAorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYworQEAg LTAsMCArMSwzMCBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCi0rICBiYXNlIG9wZXJhdG9yLS0gKHZvaWQpIC8vIGJhc2U6Om9wZXJhdG9y LS0KLSsgIHsgLS1mb29fOyByZXR1cm4gKnRoaXM7IH0KKysgICBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsgIGJhc2Ugb3BlcmF0b3ItPSAoYmFzZSBj b25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3ItPQotKyAgeyBmb29fIC09IG8uZm9vXzsgcmV0dXJu ICp0aGlzOyB9CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLSsgIGludCBvcGVy YXRvciogKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yKgotKyAgeyByZXR1 cm4gZm9vXyAqIG8uZm9vXzsgfQorKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rICBiYXNl IG9wZXJhdG9yKj0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yKj0KLSsgIHsgZm9v XyAqPSBvLmZvb187IHJldHVybiAqdGhpczsgfQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwogKwotKyAgaW50IG9wZXJhdG9yLyAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFz ZTo6b3BlcmF0b3IvCi0rICB7IHJldHVybiBmb29fIC8gby5mb29fOyB9CisrI2luY2x1ZGUgPHN0 ZGxpYi5oPgogKwotKyAgYmFzZSBvcGVyYXRvci89IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpv cGVyYXRvci89Ci0rICB7IGZvb18gLz0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KKytpbnQKKytt YWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgaW50IGFycmF5W2FyZ2NdOwogKwot KyAgaW50IG9wZXJhdG9yJSAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3Il Ci0rICB7IHJldHVybiBmb29fICUgby5mb29fOyB9Ci0rICAKLSsgIGJhc2Ugb3BlcmF0b3IlPSAo YmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3IlPQotKyAgeyBmb29fICU9IG8uZm9vXzsg cmV0dXJuICp0aGlzOyB9CisrICBhcnJheVswXSA9IGFycmF5WzBdOwogKwotKyAgYm9vbCBvcGVy YXRvcjwgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPAotKyAgeyByZXR1 cm4gZm9vXyA8IG8uZm9vXzsgfQorKyAgYWJvcnQgKCk7CiArCi0rICBib29sIG9wZXJhdG9yPD0g KGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPD0KLSsgIHsgcmV0dXJuIGZv b18gPD0gby5mb29fOyB9CisrICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEtb3ZlcmZsb3cuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjRh NjA4ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3Zl cmZsb3cuZXhwCitAQCAtMCwwICsxLDEwOSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rICBib29sIG9wZXJhdG9yPiAoYmFzZSBjb25zdCYg bykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3I+Ci0rICB7IHJldHVybiBmb29fID4gby5mb29fOyB9 CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr IworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgYm9vbCBvcGVyYXRvcj49IChi YXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcj49Ci0rICB7IHJldHVybiBmb29f ID49IG8uZm9vXzsgfQorKyMgV2UgY291bGQgY3Jhc2ggaW46CisrIyAjMCAgYmxvY2tfbGlua2Fn ZV9mdW5jdGlvbiAoYmw9MHgwKSBhdCAuLi8uLi9nZGIvYmxvY2suYzo2OQorKyMgIzEgIGluIGR3 YXJmX2Jsb2NrX2dldF9mcmFtZV9iYXNlICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5j Ojk3CisrIyAgIDk3CSAgZnJhbWVmdW5jID0gYmxvY2tfbGlua2FnZV9mdW5jdGlvbiAoZ2V0X2Zy YW1lX2Jsb2NrIChmcmFtZSwgTlVMTCkpOworKyMgIzIgIGluIGV4ZWN1dGVfc3RhY2tfb3AgKC4u LikgYXQgLi4vLi4vZ2RiL2R3YXJmMmV4cHIuYzo0OTYKKysjICMzICBpbiBkd2FyZl9ibG9ja19l eGVjX2NvcmUgKCkgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6MTU2CisrIyAjNCAgZHdhcmZf YmxvY2tfZXhlYyAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoyMDYKKysjICM1ICBp biByYW5nZV90eXBlX2NvdW50X2JvdW5kX2ludGVybmFsICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0 eXBlcy5jOjE0MzAKKysjICM2ICBpbiBjcmVhdGVfYXJyYXlfdHlwZSAoLi4uKSBhdCAuLi8uLi9n ZGIvZ2RidHlwZXMuYzo4NDAKKysjIC4uLgorKyMgIzIxIGluIHBzeW10YWJfdG9fc3ltdGFiICgu Li4pIGF0IC4uLy4uL2dkYi9zeW1maWxlLmM6MjkyCisrIyAuLi4KKysjICMyOSBpbiBiYWNrdHJh Y2VfY29tbWFuZF8xICgpIGF0IC4uLy4uL2dkYi9zdGFjay5jOjEyNzMKICsKLSsgIGJvb2wgb3Bl cmF0b3IhPSAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IhPQotKyAgeyBy ZXR1cm4gZm9vXyAhPSBvLmZvb187IH0KKytzZXQgdGVzdGZpbGUgdmxhLW92ZXJmbG93Cisrc2V0 IHNoZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5zaAorK3NldCBzcmNm aWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmls ZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRl c3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30K ICsKLSsgIGJvb2wgb3BlcmF0b3I9PSAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3Bl cmF0b3I9PQotKyAgeyByZXR1cm4gZm9vXyA9PSBvLmZvb187IH0KKytzZXQgZiBbb3BlbiAifGdl dGNvbmYgUEFHRVNJWkUiICJyIl0KKytnZXRzICRmIHBhZ2VzaXplCisrY2xvc2UgJGYKICsKLSsg IGJvb2wgb3BlcmF0b3IhICh2b2lkKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvciEKLSsgIHsgcmV0 dXJuICFmb29fOyB9CisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rICBib29sIG9wZXJh dG9yJiYgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yJiYKLSsgIHsgcmV0 dXJuIGZvb18gJiYgby5mb29fOyB9Cisrc2V0IHBpZF9vZl9nZGIgW2V4cF9waWQgLWkgW2JvYXJk X2luZm8gaG9zdCBmaWxlaWRdXQogKwotKyAgYm9vbCBvcGVyYXRvcnx8IChiYXNlIGNvbnN0JiBv KSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcnx8Ci0rICB7IHJldHVybiBmb29fIHx8IG8uZm9vXzsg fQorK2lmIHsgW3J1bnRvX21haW5dIDwgMCB9IHsKKysgICAgdW50ZXN0ZWQgdmxhLW92ZXJmbG93 CisrICAgIHJldHVybiAtMQorK30KICsKLSsgIGludCBvcGVyYXRvcjw8IChpbnQgdmFsdWUpIGNv bnN0IC8vIGJhc2U6Om9wZXJhdG9yPDwKLSsgIHsgcmV0dXJuIGZvb18gIDw8IHZhbHVlOyB9Cisr IyBHZXQgdGhlIEdEQiBtZW1vcnkgc2l6ZSB3aGVuIHdlIHN0YXkgYXQgbWFpbi4KICsKLSsgIGJh c2Ugb3BlcmF0b3I8PD0gKGludCB2YWx1ZSkgLy8gYmFzZTo6b3BlcmF0b3I8PD0KLSsgIHsgZm9v XyA8PD0gdmFsdWU7IHJldHVybiAqdGhpczsgfQorK3Byb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9 IHsKKysgICAgZ2xvYmFsIHBpZF9vZl9nZGIgcGFnZXNpemUKKysgICAgc2V0IGZkIFtvcGVuICIv cHJvYy8kcGlkX29mX2dkYi9zdGF0bSJdCisrICAgIGdldHMgJGZkIGxpbmUKKysgICAgY2xvc2Ug JGZkCisrICAgICMgbnVtYmVyIG9mIHBhZ2VzIG9mIHZpcnR1YWwgbWVtb3J5CisrICAgIHNjYW4g JGxpbmUgIiVkIiBkcnMKKysgICAgcmV0dXJuICRkcnMKKyt9CiArCi0rICBpbnQgb3BlcmF0b3I+ PiAoaW50IHZhbHVlKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcj4+Ci0rICB7IHJldHVybiBmb29f ICA+PiB2YWx1ZTsgfQorK3NldCBwYWdlc19mb3VuZCBbbWVtb3J5X3ZfcGFnZXNfZ2V0XQogKwot KyAgYmFzZSBvcGVyYXRvcj4+PSAoaW50IHZhbHVlKSAvLyBiYXNlOjpvcGVyYXRvcj4+PQotKyAg eyBmb29fID4+PSB2YWx1ZTsgcmV0dXJuICp0aGlzOyB9CisrIyBzMzkweCB3aXRoIGdsaWJjLWRl YnVnaW5mby5zMzkweCBpbnN0YWxsZWQgdXNlZCBhcHByb3guIDE2TUIuCisrc2V0IG1iX3Jlc2Vy dmUgNDAKKyt2ZXJib3NlIC1sb2cgInBhZ2VzX2ZvdW5kID0gJHBhZ2VzX2ZvdW5kLCBtYl9yZXNl cnZlID0gJG1iX3Jlc2VydmUiCisrc2V0IGtiX2ZvdW5kIFtleHByICRwYWdlc19mb3VuZCAqICRw YWdlc2l6ZSAvIDEwMjRdCisrc2V0IGtiX3Blcm1pdCBbZXhwciAka2JfZm91bmQgKyAxICogMTAy NCArICRtYl9yZXNlcnZlICogMTAyNF0KKyt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kID0gJGtiX2Zv dW5kLCBrYl9wZXJtaXQgPSAka2JfcGVybWl0IgogKwotKyAgaW50IG9wZXJhdG9yfiAodm9pZCkg Y29uc3QgLy8gYmFzZTo6b3BlcmF0b3J+Ci0rICB7IHJldHVybiB+Zm9vXzsgfQorKyMgQ3JlYXRl IHRoZSB1bGltaXQgd3JhcHBlci4KKytzZXQgZiBbb3BlbiAkc2hmaWxlICJ3Il0KKytwdXRzICRm ICIjISAvYmluL3NoIgorK3B1dHMgJGYgInVsaW1pdCAtdiAka2JfcGVybWl0IgorK3B1dHMgJGYg ImV4ZWMgJEdEQiBcIlwkQFwiIgorK2Nsb3NlICRmCisrcmVtb3RlX2V4ZWMgaG9zdCAiY2htb2Qg K3ggJHNoZmlsZSIKICsKLSsgIGludCBvcGVyYXRvciYgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8v IGJhc2U6Om9wZXJhdG9yJgotKyAgeyByZXR1cm4gZm9vXyAmIG8uZm9vXzsgfQorK2dkYl9leGl0 Cisrc2V0IEdEQm9sZCAkR0RCCisrc2V0IEdEQiAiJHNoZmlsZSIKKytnZGJfc3RhcnQKKytzZXQg R0RCICRHREJvbGQKICsKLSsgIGJhc2Ugb3BlcmF0b3ImPSAoYmFzZSBjb25zdCYgbykgLy8gYmFz ZTo6b3BlcmF0b3ImPQotKyAgeyBmb29fICY9IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQog KwotKyAgaW50IG9wZXJhdG9yfCAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0 b3J8Ci0rICB7IHJldHVybiBmb29fIHwgby5mb29fOyB9Cisrc2V0IHBpZF9vZl9nZGIgW2V4cF9w aWQgLWkgW2JvYXJkX2luZm8gaG9zdCBmaWxlaWRdXQogKwotKyAgYmFzZSBvcGVyYXRvcnw9IChi YXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvcnw9Ci0rICB7IGZvb18gfD0gby5mb29fOyBy ZXR1cm4gKnRoaXM7IH0KLSsgIAotKyAgaW50IG9wZXJhdG9yXiAoYmFzZSBjb25zdCYgbykgY29u c3QgLy8gYmFzZTo6b3BlcmF0b3JeCi0rICB7IHJldHVybiBmb29fIF4gby5mb29fOyB9CisrIyBD aGVjayB0aGUgc2l6ZSBhZ2FpbiBhZnRlciB0aGUgc2Vjb25kIHJ1bi4KKysjIFdlIG11c3Qgbm90 IHN0b3AgaW4gbWFpbiBhcyBpdCB3b3VsZCBjYWNoZSBgYXJyYXknIGFuZCBuZXZlciBjcmFzaCBs YXRlci4KICsKLSsgIGJhc2Ugb3BlcmF0b3JePSAoYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3Bl cmF0b3JePQotKyAgeyBmb29fIF49IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrZ2RiX3J1bl9j bWQKICsKLSsgIGJhc2Ugb3BlcmF0b3I9IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRv cj0KLSsgIHsgZm9vXyA9IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrdmVyYm9zZSAtbG9nICJr Yl9mb3VuZCBiZWZvcmUgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBh Z2VzaXplIC8gMTAyNF0iCiArCi0rICB2b2lkIG9wZXJhdG9yKCkgKHZvaWQpIGNvbnN0IC8vIGJh c2U6Om9wZXJhdG9yKCkKLSsgIHsgcmV0dXJuOyB9CisrZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVj ZWl2ZWQgc2lnbmFsIFNJR0FCUlQsIEFib3J0ZWQuLioiICJFbnRlciBhYm9ydCgpIgogKwotKyAg aW50IG9wZXJhdG9yW10gKGludCBpZHgpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yW10KLSsgIHsg cmV0dXJuIGlkeDsgfQorK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQgaW4gYWJvcnQoKSA9IFtleHBy IFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAyNF0iCiArCi0rICB2b2lkKiBv cGVyYXRvciBuZXcgKHNpemVfdCBzaXplKSB0aHJvdyAoKSAvLyBiYXNlOjpvcGVyYXRvciBuZXcK LSsgIHsgcmV0dXJuIG1hbGxvYyAoc2l6ZSk7IH0KKysjIGBhYm9ydCcgY2FuIGdldCBleHByZXNz ZWQgYXMgYCpfX0dJX2Fib3J0Jy4KKytnZGJfdGVzdCAiYnQiICJpbiBcW14gXF0qYWJvcnQgXFwo LiogaW4gbWFpbiBcXCguKiIgIkJhY2t0cmFjZSBhZnRlciBhYm9ydCgpIgogKwotKyAgdm9pZCBv cGVyYXRvciBkZWxldGUgKHZvaWQqIHB0cikgLy8gYmFzZTo6b3BlcmF0b3IgZGVsZXRlCi0rICB7 IGZyZWUgKHB0cik7IH0KKyt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0IGFmdGVyIGFib3J0 KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTFmM2Vk MQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYworQEAg LTAsMCArMSw1NSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCi0rICB2b2lkKiBvcGVyYXRvciBuZXdbXSAoc2l6ZV90IHNpemUpIHRocm93 ICgpIC8vIGJhc2U6Om9wZXJhdG9yIG5ld1tdCi0rICB7IHJldHVybiBtYWxsb2MgKHNpemUpOyB9 CisrICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0r ICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdICh2b2lkKiBwdHIpIC8vIGJhc2U6Om9wZXJhdG9yIGRl bGV0ZVtdCi0rICB7IGZyZWUgKHB0cik7IH0KKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgogKwotKyAgYmFzZSBjb25zdCogb3BlcmF0b3ItPiAodm9pZCkgY29uc3QgLy8gYmFzZTo6b3Bl YXJ0b3ItPgotKyAgeyByZXR1cm4gdGhpczsgfQorKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAr Ci0rICBpbnQgb3BlcmF0b3ItPiogKGJhc2UgY29uc3QmIGIpIGNvbnN0IC8vIGJhc2U6Om9wZXJh dG9yLT4qCi0rICB7ICByZXR1cm4gZm9vXyAqIGIuZm9vXzsgfQorKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwogKwotKyAgb3BlcmF0b3IgY2hhciogKCkgY29uc3QgeyByZXR1cm4g Y29uc3RfY2FzdDxjaGFyKj4gKCJoZWxsbyIpOyB9IC8vIGJhc2U6Om9wZXJhdG9yIGNoYXIqCi0r ICBvcGVyYXRvciBpbnQgKCkgY29uc3QgeyByZXR1cm4gMjE7IH0gLy8gYmFzZTo6b3BlcmF0b3Ig aW50Ci0rICBvcGVyYXRvciBmbHVmZiogKCkgY29uc3QgeyByZXR1cm4gbmV3IGZsdWZmICgpOyB9 IC8vIGJhc2U6Om9wZXJhdG9yIGZsdWZmKgotKyAgb3BlcmF0b3IgZmx1ZmYqKiAoKSBjb25zdCB7 IHJldHVybiAmZ19mbHVmZjsgfSAvLyBiYXNlOjpvcGVyYXRvciBmbHVmZioqCi0rfTsKKysjaW5j bHVkZSA8c3RyaW5nLmg+CiArCi0rY2xhc3MgYmFzZTEgOiBwdWJsaWMgdmlydHVhbCBiYXNlCisr dm9pZAorK21hcmtlciAodm9pZCkKICt7Ci0rcHVibGljOgotKyAgYmFzZTEgKHZvaWQpIDogZm9v XyAoMjEpIHsgfSAvLyBiYXNlMTo6YmFzZTEodm9pZCkKLSsgIGJhc2UxIChpbnQgYSkgOiBmb29f KGEpIHsgfSAvLyBiYXNlMTo6YmFzZTEoaW50KQotKyAgdm9pZCBhX2Z1bmN0aW9uICh2b2lkKSBj b25zdCB7IH0gLy8gYmFzZTE6OmFfZnVuY3Rpb24KKyt9CiArCi0rcHJvdGVjdGVkOgotKyAgaW50 IGZvb187Ci0rfTsKKyt2b2lkCisrYmFyIChjaGFyICphLCBjaGFyICpiLCBjaGFyICpjLCBpbnQg c2l6ZSkKKyt7CisrICBtZW1zZXQgKGEsICcxJywgc2l6ZSk7CisrICBtZW1zZXQgKGIsICcyJywg c2l6ZSk7CisrICBtZW1zZXQgKGMsICczJywgNDgpOworK30KICsKLStjbGFzcyBiYXNlMiA6IHB1 YmxpYyB2aXJ0dWFsIGJhc2UKKyt2b2lkCisrZm9vIChpbnQgc2l6ZSkKICt7Ci0rcHVibGljOgot KyAgYmFzZTIgKCkgOiBmb29fICgzKSB7IH0gLy8gYmFzZTI6OmJhc2UyCisrICBjaGFyIHRlbXAx W3NpemVdOworKyAgY2hhciB0ZW1wM1s0OF07CiArCi0rcHJvdGVjdGVkOgotKyAgdm9pZCBhX2Z1 bmN0aW9uICh2b2lkKSBjb25zdCB7IH0gLy8gYmFzZTI6OmFfZnVuY3Rpb24KLSsgIGludCBmb29f OwotK307CisrICB0ZW1wMVtzaXplIC0gMV0gPSAnXDAnOworKyAgeworKyAgICBjaGFyIHRlbXAy W3NpemVdOwogKwotK2NsYXNzIGRlcml2ZWQgOiBwdWJsaWMgYmFzZTEsIHB1YmxpYyBiYXNlMgot K3sKLSsgIHB1YmxpYzoKLSsgIGRlcml2ZWQodm9pZCkgOiBmb29fICg0KSB7IH0gLy8gZGVyaXZl ZDo6ZGVyaXZlZAotKyAgdm9pZCBhX2Z1bmN0aW9uICh2b2lkKSBjb25zdCAvLyBkZXJpdmVkOjph X2Z1bmN0aW9uCi0rICB7IAotKyAgICB0aGlzLT5iYXNlMTo6YV9mdW5jdGlvbiAoKTsKLSsgICAg dGhpcy0+YmFzZTI6OmFfZnVuY3Rpb24gKCk7Ci0rICB9CisrICAgIGJhciAodGVtcDEsIHRlbXAy LCB0ZW1wMywgc2l6ZSk7CiArCi0rICBwcm90ZWN0ZWQ6Ci0rICBpbnQgZm9vXzsKLSt9OworKyAg ICBtYXJrZXIgKCk7CS8qIGJyZWFrLWhlcmUgKi8KKysgIH0KKyt9CiArCiAraW50Ci0rbWFpbiAo aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgLy8gbWFpbgotK3sgLy8gbWFpbgotKyAgZGVyaXZlZCBk OwotKyAgdm9pZCAoZGVyaXZlZDo6KnBmdW5jKSAodm9pZCkgY29uc3QgPSAmZGVyaXZlZDo6YV9m dW5jdGlvbjsKLSsgIChkLipwZnVuYykgKCk7Ci0rCi0rICBiYXNlIGEgKDEpLCBiICgzKSwgYyAo OCk7Ci0rICAodm9pZCkgYS5vdmVybG9hZCAoKTsKLSsgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0 aWNfY2FzdDxpbnQ+ICgwKSk7Ci0rICAodm9pZCkgYS5vdmVybG9hZCAoc3RhdGljX2Nhc3Q8c2hv cnQ+ICgwKSk7Ci0rICAodm9pZCkgYS5vdmVybG9hZCAoc3RhdGljX2Nhc3Q8bG9uZz4gKDApKTsK LSsgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxjaGFyKj4gKDApKTsKLSsgICh2b2lk KSBhLm92ZXJsb2FkIChhKTsKLSsKLSsgIGludCByOwotKyAgciA9IGIgKyBjOwotKyAgKythOwot KyAgYSArPSBiOwotKyAgciA9IGIgLSBjOwotKyAgLS1hOwotKyAgYSAtPSBiOwotKyAgciA9IGIg KiBjOwotKyAgYSAqPSBiOwotKyAgciA9IGIgLyBjOwotKyAgYSAvPSBiOwotKyAgciA9IGIgJSBj OwotKyAgYSAlPSBiOwotKyAgYm9vbCB4ID0gKGIgPCBjKTsKLSsgIHggPSAoYiA8PSBjKTsKLSsg IHggPSAoYiA+IGMpOwotKyAgeCA9IChiID49IGMpOwotKyAgeCA9IChiICE9IGMpOwotKyAgeCA9 IChiID09IGMpOwotKyAgeCA9ICghYik7Ci0rICB4ID0gKGIgJiYgYyk7Ci0rICB4ID0gKGIgfHwg Yyk7Ci0rICByID0gYiA8PCAyOwotKyAgYSA8PD0gMTsKLSsgIHIgPSBiID4+IDI7Ci0rICBhID4+ PSAxOwotKyAgciA9IH5iOwotKyAgciA9IGIgJiBjOwotKyAgYSAmPSBjOwotKyAgciA9IGIgfCBj OwotKyAgYSB8PSBjOwotKyAgciA9IGIgXiBjOwotKyAgYSBePSBjOwotKyAgYSA9IGM7Ci0rICBh ICgpOwotKyAgaW50IGkgPSBhWzNdOwotKyAgZGVyaXZlZCogZiA9IG5ldyBkZXJpdmVkICgpOwot KyAgZGVyaXZlZCogZyA9IG5ldyBkZXJpdmVkWzNdOwotKyAgZGVsZXRlIGY7Ci0rICBkZWxldGVb XSBnOwotKyAgYS0+b3ZlcmxvYWQgKCk7Ci0rICByID0gYS0+KmI7Ci0rCi0rICB0Y2xhc3M8Y2hh cj4gY2hhcl90Y2xhc3M7Ci0rICB0Y2xhc3M8aW50PiBpbnRfdGNsYXNzOwotKyAgdGNsYXNzPHNo b3J0PiBzaG9ydF90Y2xhc3M7Ci0rICB0Y2xhc3M8bG9uZz4gbG9uZ190Y2xhc3M7Ci0rICB0Y2xh c3M8YmFzZT4gYmFzZV90Y2xhc3M7Ci0rICBjaGFyX3RjbGFzcy5kb19zb21ldGhpbmcgKCk7Ci0r ICBpbnRfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsKLSsgIHNob3J0X3RjbGFzcy5kb19zb21ldGhp bmcgKCk7Ci0rICBsb25nX3RjbGFzcy5kb19zb21ldGhpbmcgKCk7Ci0rICBiYXNlX3RjbGFzcy5k b19zb21ldGhpbmcgKCk7Ci0rCi0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgaW50PiAo KTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBzaG9ydD4gKCk7Ci0rICBmbHViYmVy PGludCwgaW50LCBpbnQsIGludCwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQs IGludCwgY2hhcj4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBpbnQ+ICgp OwotKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgc2hvcnQ+ICgpOwotKyAgZmx1YmJl cjxpbnQsIGludCwgaW50LCBzaG9ydCwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBp bnQsIHNob3J0LCBjaGFyPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgaW50 PiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgc2hvcnQ+ICgpOwotKyAgZmx1 YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQs IGludCwgbG9uZywgY2hhcj4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGlu dD4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIHNob3J0PiAoKTsKLSsgIGZs dWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50 LCBpbnQsIGNoYXIsIGNoYXI+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwg aW50PiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0PiAoKTsKLSsg IGZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIGxvbmc+ICgpOwotKyAgZmx1YmJlcjxpbnQs IGludCwgc2hvcnQsIGludCwgY2hhcj4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBzaG9ydCwg c2hvcnQsIGludD4gKCk7Ci0rICBmbHViYmVyPHNob3J0LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0 PiAoKTsKLSsgIGZsdWJiZXI8bG9uZywgc2hvcnQsIGxvbmcsIHNob3J0LCBsb25nPiAoKTsKLSsK LSsgIHBvbGljeTEgcDEgKDEpOwotKyAgcDEuZnVuY3Rpb24gKCk7Ci0rICBwb2xpY3kyIHAyICgy KTsKLSsgIHAyLmZ1bmN0aW9uICgpOwotKyAgcG9saWN5MyBwMyAoMyk7Ci0rICBwMy5mdW5jdGlv biAoKTsKLSsgIHBvbGljeTQgcDQgKDQpOwotKyAgcDQuZnVuY3Rpb24gKCk7Ci0rCi0rICBwb2xp Y3lkMSBwZDEgKDUpOwotKyAgcGQxLmZ1bmN0aW9uICgpOwotKyAgcG9saWN5ZDIgcGQyICg2KTsK LSsgIHBkMi5mdW5jdGlvbiAoKTsKLSsgIHBvbGljeWQzIHBkMyAoNyk7Ci0rICBwZDMuZnVuY3Rp b24gKCk7Ci0rICBwb2xpY3lkNCBwZDQgKGQpOwotKyAgcGQ0LmZ1bmN0aW9uICgpOwotKyAgcG9s aWN5ZDUgcGQ1IChpbnRfdGNsYXNzKTsKLSsgIHBkNS5mdW5jdGlvbiAoKTsKLSsKLSsgIGJhc2Ux IGIxICgzKTsKLSsKLSsgIHIgPSBhOwotKyAgY2hhciogc3RyID0gYTsKLSsgIGZsdWZmKiBmbHAg PSBhOwotKyAgZmx1ZmYqKiBmbHBwID0gYTsKKyttYWluICh2b2lkKQorK3sKKysgIGZvbyAoMjYp OworKyAgZm9vICg3OCk7CisrICByZXR1cm4gMDsKICt9Ci0rCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvcmVhbGNwcC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9yZWFsY3Bw LmV4cAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjRlOTJlNzUKK2luZGV4IDAwMDAwMDAuLjVkYTczNzgKIC0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3JlYWxjcHAuZXhwCi1AQCAtMCwwICsxLDg5MSBAQAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCitAQCAtMCwwICsxLDYyIEBACiAr IyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CkBAIC0yMzgyNiw5NTMgKzc4NDksMjQ2IEBAIGluZGV4IDAwMDAwMDAuLjRlOTJl NzUKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgotKwotKyMjIwotKyMKLSsjIFNPTUUgSU1QT1JUQU5UIE5P VEVTCi0rIwotKyMjIwotKwotKyMgVGhlICJpbmZvIGZ1bmMiIHRlc3RzIGhlcmUgYXJlbid0IGNv bXBsZXRlLiBJJ3ZlIGNvbW1lbnRlZCB0aGVtCi0rIyBvdXQgZm9yIG5vdy4KLSsKLSsjIEEgaGVs cGVyIHByb2Mgd2hpY2ggc2V0cyBhIGJyZWFrcG9pbnQgYXQgRlVOQyBhbmQgYXR0ZW1wdHMgdG8K LSsjIHJ1biB0byB0aGUgYnJlYWtwb2ludC4KLStwcm9jIHRlc3RfYnJlYWtwb2ludCB7ZnVuY30g ewotKyAgICBnbG9iYWwgREVDCi0rCi0rICAgICMgUmVzdGFydCBldmVyeSB0aW1lCi0rICAgIGlm IHshW3J1bnRvX21haW5dfSB7Ci0rCXBlcnJvciAiY291bGQgbm90IHJ1biB0byBtYWluIHdoZW4g YXR0ZW1wdGluZyB0byBicmVhayBhdCAkZnVuYyIKLSsJY29udGludWUKLSsgICAgfSBlbHNlIHsK LSsJZ2RiX2JyZWFrcG9pbnQgIiRmdW5jIgotKwlzZXQgaSBbZXhwciB7W3N0cmluZyBsYXN0IDog JGZ1bmNdICsgMX1dCi0rCXNldCBlZnVuYyBbZXNjYXBlIFtzdHJpbmcgcmFuZ2UgJGZ1bmMgJGkg ZW5kXV0KLSsJZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAiQ29udGludWluZy5cclxuXHJc bkJyZWFrcG9pbnQgJERFQyssLiokZWZ1bmMuKiIgXAotKwkgICAgImNvbnRpbnVlIHRvICRmdW5j IgotKyAgICB9Cisrc2V0IHRlc3RmaWxlIHZsYQorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMK KytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQogK30KICsKLSsjIEVzY2FwZSBleHBl Y3QtcmVzZXJ2ZWQgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nCi0rcHJvYyBlc2NhcGUge3N0cmlu Z30gewotKyAgICByZWdzdWIgLWFsbCB7XCp9ICRzdHJpbmcge1wqfSBzdHJpbmcKLSsgICAgcmVn c3ViIC1hbGwge1wofSAkc3RyaW5nIHtcKH0gc3RyaW5nCi0rICAgIHJlZ3N1YiAtYWxsIHtcKX0g JHN0cmluZyB7XCl9IHN0cmluZwotKyAgICByZWdzdWIgLWFsbCB7XF19ICRzdHJpbmcge1xdfSBz dHJpbmcKLSsgICAgcmVnc3ViIC1hbGwge1xbfSAkc3RyaW5nIHtcW30gc3RyaW5nCi0rICAgIHJl Z3N1YiAtYWxsIHtcK30gJHN0cmluZyB7XCt9IHN0cmluZwotKyAgICByZWdzdWIgLWFsbCB7XF59 ICRzdHJpbmcge1xefSBzdHJpbmcKLSsgICAgcmVnc3ViIC1hbGwge1whfSAkc3RyaW5nIHtcIX0g c3RyaW5nCi0rICAgIHJldHVybiAkc3RyaW5nCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9Cisr CisraWYgIVtydW50b19tYWluXSB7CisrICAgIHVudGVzdGVkIHZsYQorKyAgICByZXR1cm4gLTEK ICt9CiArCi0rIyBBZGQgYSBmdW5jdGlvbiB0byB0aGUgbGlzdCBvZiB0ZXN0ZWQgZnVuY3Rpb25z Ci0rIyBGVU5DIGlzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiAod2hpY2ggd2lsbCBiZSBwYXNz ZWQgdG8gZ2RiIGNvbW1hbmRzKQotKyMgVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24s IGFzIGV4cGVjdGVkIGZyb20gdGhlICJwcmludCIgY29tbWFuZAotKyMgUFJJTlQgaXMgdGhlIG5h bWUgb2YgdGhlIGZ1bmN0aW9uLCBhcyBleHBlY3RlZCByZXN1bHQgb2YgdGhlIHByaW50IGNvbW1h bmQKLSsjICAqT1IqICItIiwgaW5kaWNhdGluZyB0aGF0IEZVTkMgc2hvdWxkIGJlIHVzZWQgKG5l ZWRlZCBmb3IgdmlydHVhbC9pbmhlcml0ZWQKLSsjICAgZnVuY3MpCi0rIyBMU1QgaXMgZWl0aGVy IHRoZSBleHBlY3RlZCByZXN1bHQgb2YgdGhlIGxpc3QgY29tbWFuZCAodGhlIGNvbW1lbnQgZnJv bQotKyMgIHRoZSBzb3VyY2UgY29kZSkgKk9SKiAiLSIsIGluIHdoaWNoIGNhc2UgRlVOQyB3aWxs IGJlIHVzZWQKLSsjIElORiBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IG9mICJpbmZvIGZ1bmMiCi0r IwotKyMgSWYgYW55IG9mIFBSSU5ULCBMU1QsIG9yIElORiBpcyAiIiwgdGhlIHRlc3Qgd2lsbCBi ZSBza2lwcGVkCi0rIwotKyMgVXNhZ2U6Ci0rIyBhZGQgTkFNRSBUWVBFIFBSSU5UIExTVCBJTkZP Ci0rIyBhZGQgTkFNRSBUWVBFIFBSSU5UIC0gSU5GTwotK3Byb2MgYWRkIHtmdW5jIHR5cGUgcHJp bnQgbHN0IGluZn0gewotKyAgICBnbG9iYWwgYWxsX2Z1bmN0aW9ucyBDT05WQVIgQUREUgotKwot KyAgICBzZXQgYWxsX2Z1bmN0aW9ucygkZnVuYyx0eXBlKSAkdHlwZQotKyAgICBpZiB7JHByaW50 ID09ICItIn0gewotKwlzZXQgcHJpbnQgJGZ1bmMKLSsgICAgfQorK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KICsKLSsgICAgIyBBbiBleGNlcHRpb246 IHNpbmNlIGdkYiBjYW5vbmljYWxpemVzIEMrKyBvdXRwdXQsCi0rICAgICMgIih2b2lkKSIgbXVz dCBiZSBtdXRhdGVkIHRvICIoKSIuCi0rICAgIHNldCBwcmludCBbcmVnc3ViIHtcKHZvaWRcKX0g JHByaW50IHsoKX1dCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCiAr Ci0rICAgIHNldCBhbGxfZnVuY3Rpb25zKCRmdW5jLHByaW50KSBcCi0rCSIkQ09OVkFSID0ge1tl c2NhcGUgJHR5cGVdfSAkQUREUiA8W2VzY2FwZSAkcHJpbnRdLio+IgotKyAgICBpZiB7JGxzdCA9 PSAiLSJ9IHsKLSsJc2V0IGxzdCAiJGZ1bmMiCi0rICAgIH0KLSsgICAgc2V0IGFsbF9mdW5jdGlv bnMoJGZ1bmMsbGlzdCkgIi4qLy8gW2VzY2FwZSAkbHN0XSIKLSsgICAgc2V0IGFsbF9mdW5jdGlv bnMoJGZ1bmMsaW5mb19mdW5jKSAkaW5mCi0rfQorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0 eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMSIKKytnZGJf dGVzdCAid2hhdGlzIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0 OiB3aGF0aXMgdGVtcDIiCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxc XFs0OFxcXF0iICJmaXJzdDogd2hhdGlzIHRlbXAzIgogKwotK3Byb2MgZ2V0IHtmdW5jIGNtZH0g ewotKyAgICBnbG9iYWwgYWxsX2Z1bmN0aW9ucwotKyAgICByZXR1cm4gJGFsbF9mdW5jdGlvbnMo JGZ1bmMsJGNtZCkKLSt9CisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxc WzI2XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1wMSIKKytnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0 eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJw dHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMi CiArCi0rIyBSZXR1cm5zIGEgbGlzdCBvZiBmdW5jdGlvbiBuYW1lcyBmb3IgYSBnaXZlbiBjb21t YW5kCi0rcHJvYyBnZXRfZnVuY3Rpb25zIHtjbWR9IHsKLSsgICAgZ2xvYmFsIGFsbF9mdW5jdGlv bnMKLSsgICAgc2V0IHJlc3VsdCB7fQotKyAgICBmb3JlYWNoIGkgW2FycmF5IG5hbWVzIGFsbF9m dW5jdGlvbnMgKiwkY21kXSB7Ci0rCWlmIHskYWxsX2Z1bmN0aW9ucygkaSkgIT0gIiJ9IHsKLSsJ ICAgIHNldCBpZHggW3N0cmluZyBsYXN0ICwgJGldCi0rCSAgICBpZiB7JGlkeCAhPSAtMX0gewot KwkJbGFwcGVuZCByZXN1bHQgW3N0cmluZyByYW5nZSAkaSAwIFtleHByIHskaWR4IC0gMX1dXQot KwkgICAgfQotKwl9Ci0rICAgIH0KKytnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0 cyAyNiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDEiCisrZ2RiX3Rlc3QgInAgdGVtcDIiICIg PSAnMicgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAyIgorK2dkYl90ZXN0 ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgImZpcnN0OiBwcmludCB0ZW1w MyIKICsKLSsgICAgcmV0dXJuIFtsc29ydCAkcmVzdWx0XQotK30KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiYnJlYWstaGVyZSIKICsKLSsjIFNvbWUgY29udmVuaWVuY2UgdmFyaWFibGVz IGZvciB0aGlzIHRlc3QKLStzZXQgREVDIHtbMC05XX07ICMgYSBkZWNpbWFsIG51bWJlcgotK3Nl dCBIRVgge1swLTlhLWZBLUZdfTsgIyBhIGhleGlkZWNpbWFsIG51bWJlcgotK3NldCBDT05WQVIg IlxcXCQkREVDKyI7ICMgY29udmVuaWVuY2UgdmFyaWFibGUgcmVnZXhwCi0rc2V0IEFERFIgIjB4 JEhFWCsiOyAjIGFkZHJlc3MKLSsKLSsjIEFuIGFycmF5IG9mIGZ1bmN0aW9ucy9tZXRob2RzIHRo YXQgd2UgYXJlIHRlc3RpbmcuLi4KLSsjIEVhY2ggZWxlbWVudCBjb25zaXN0cyBpcyBpbmRleGVk IGJ5IE5BTUUsQ09NTUFORCwgd2hlcmUKLSsjIE5BTUUgaXMgdGhlIGZ1bmN0aW9uIG5hbWUgYW5k IENPTU1BTkQgaXMgdGhlIGdkYiBjb21tYW5kIHRoYXQKLSsjIHdlIGFyZSB0ZXN0aW5nLiBUaGUg dmFsdWUgb2YgdGhlIGFycmF5IGZvciBhbnkgaW5kZXggcGFpciBpcwotKyMgdGhlIGV4cGVjdGVk IHJlc3VsdCBvZiBydW5uaW5nIENPTU1BTkQgd2l0aCB0aGUgTkFNRSBhcyBhcmd1bWVudC4KLSsj IElmIHRoZSB2YWx1ZSBpcyBibGFuaywgdGhlIHRlc3Qgd2lsbCBiZSBza2lwcGVkIGZvciB0aGUg Z2l2ZW4gZnVuY3Rpb24uCi0rCi0rIyBUaGUgYXJyYXkgaG9sZGluZyBhbGwgZnVuY3Rpb25zL21l dGhvZHMgdG8gdGVzdC4gVmFsaWQgc3ViaW5kZXhlcwotKyMgYXJlIChub25lIG5lZWQgY2hhcmFj dGVyIGVzY2FwaW5nIC0tICJhZGQiIHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQpOgotKwotKyMgYWRk IG5hbWUgdHlwZSBwcmludF9uYW1lIGxpc3QgaW5mb19mdW5jCi0rIyBOQU1FLHR5cGU6IHZhbHVl IGlzIHR5cGUgb2YgZnVuY3Rpb24gCi0rIyBOQU1FLHByaW50OiB2YWx1ZSBpcyBwcmludCBuYW1l IG9mIGZ1bmN0aW9uIChjYXJlZnVsIHcvaW5oZXJpdGVkL3ZpcnR1YWwhKQotKyMgTkFNRSxsaXN0 OiB2YWx1ZSBpcyBjb21tZW50IGluIHNvdXJjZSBjb2RlIG9uIGZpcnN0IGxpbmUgb2YgZnVuY3Rp b24KLSsjICAgKHdpdGhvdXQgdGhlIGxlYWRpbmcgIi8vIikKLSsjIE5BTUUsaW5mb19mdW5jOiB2 YWx1ZSBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IG9mICJpbmZvIGZ1bmMiCi0rYXJyYXkgc2V0IGFs bF9mdW5jdGlvbnMge30KLSsKLSsjICJOb3JtYWwiIGZ1bmN0aW9ucy9tZXRob2RzCi0rYWRkIHtt YWlufSBcCi0rICAgIHtpbnQgKGludCwgY2hhciAqKil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAot KyAgICB7aW50IG1haW4oaW50LCBjaGFyICoqKTt9Ci0rYWRkIHtkZXJpdmVkOjphX2Z1bmN0aW9u fSBcCi0rICAgIHt2b2lkIChjb25zdCBkZXJpdmVkICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAg ICAtIFwKLSsgICAge3ZvaWQgZGVyaXZlZDo6YV9mdW5jdGlvbigpO30KLSthZGQge2Jhc2UxOjph X2Z1bmN0aW9ufSBcCi0rICAgIHt2b2lkIChjb25zdCBiYXNlMSAqIGNvbnN0KX0gXAotKyAgICAt IFwKLSsgICAgLSBcCi0rICAgIHt2b2lkIGJhc2UxOjphX2Z1bmN0aW9uKCk7fQotK2FkZCB7YmFz ZTI6OmFfZnVuY3Rpb259IFwKLSsgICAge3ZvaWQgKGNvbnN0IGJhc2UyICogY29uc3QpfSBcCi0r ICAgIC0gXAotKyAgICAtIFwKLSsgICAge3ZvaWQgYmFzZTI6OmFfZnVuY3Rpb24oKTt9Ci0rCi0r IyBDb25zdHJ1Y3RvcnMKLSthZGQge2Rlcml2ZWQ6OmRlcml2ZWR9IFwKLSsgICAge3ZvaWQgKGRl cml2ZWQgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICB7dm9pZCBkZXJpdmVk OjpkZXJpdmVkKCk7fQotK2FkZCB7YmFzZTE6OmJhc2UxKHZvaWQpfSBcCi0rICAgIHt2b2lkIChi YXNlMSAqIGNvbnN0LCBjb25zdCB2b2lkICoqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBc Ci0rICAgIHt2b2lkIGJhc2UxOjpiYXNlMSgpO30KLSthZGQge2Jhc2UxOjpiYXNlMShpbnQpfSBc Ci0rICAgIHt2b2lkIChiYXNlMSAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtIFwK LSsgICAge3ZvaWQgYmFzZTE6OmJhc2UxKGludCk7fQotK2FkZCB7YmFzZTI6OmJhc2UyfSBcCi0r ICAgIHt2b2lkIChiYXNlMiAqIGNvbnN0LCBjb25zdCB2b2lkICoqIGNvbnN0KX0gXAotKyAgICAt IFwKLSsgICAgLSBcCi0rICAgIHt2b2lkIGJhc2UyOjpiYXNlMigpO30KLSthZGQge2Jhc2U6OmJh c2Uodm9pZCl9IFwKLSsgICAge3ZvaWQgKGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAg IC0gXAotKyAgICB7dm9pZCBiYXNlOjpiYXNlKCk7fQotK2FkZCB7YmFzZTo6YmFzZShpbnQpfSBc Ci0rICAgIHt2b2lkIChiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAot KyAgICB7dm9pZCBiYXNlOjpiYXNlKCk7fQotKwotKyMgRGVzdHJ1Y3RvcnMKLSthZGQge2Jhc2U6 On5iYXNlfSBcCi0rICAgIHt2b2lkIChiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAt IFwKLSsgICAge3ZvaWQgYmFzZTo6fmJhc2UoKTt9Ci0rCi0rIyBPdmVybG9hZGVkIG1ldGhvZHMg KGFsbCBhcmUgY29uc3QgLS0gd2UgdHJ5IHRvIHVzZSB0aGUgdm9pZAotKyMgbWV0aG9kIHdpdGgg YW5kIHdpdGhvdXQgc3BlY2lmeWluZyAiY29uc3QiKQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQodm9p ZCl9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAg e2Jhc2U6Om92ZXJsb2FkKHZvaWQpIGNvbnN0fSBcCi0rICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQo KSBjb25zdDt9Ci0rYWRkIHtiYXNlOjpvdmVybG9hZCh2b2lkKSBjb25zdH0gXAotKyAgICB7aW50 IChjb25zdCBiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICB7YmFzZTo6b3ZlcmxvYWQo dm9pZCkgY29uc3R9IFwKLSsgICAge2ludCBiYXNlOjpvdmVybG9hZCgpIGNvbnN0O30KLSthZGQg e2Jhc2U6Om92ZXJsb2FkKGludCkgY29uc3R9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNv bnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAge2ludCBiYXNlOjpvdmVybG9h ZChpbnQpIGNvbnN0O30KLSthZGQge2Jhc2U6Om92ZXJsb2FkKHNob3J0KSBjb25zdH0gXAotKyAg ICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIHNob3J0KX0gXAotKyAgICAtIFwKLSsgICAgLSBc Ci0rICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQoc2hvcnQpIGNvbnN0O30KLSthZGQge2Jhc2U6Om92 ZXJsb2FkKGxvbmcpIGNvbnN0fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgbG9u Zyl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICB7aW50IGJhc2U6Om92ZXJsb2FkKGxvbmcp IGNvbnN0O30KLSthZGQge2Jhc2U6Om92ZXJsb2FkKGNoYXIqKSBjb25zdH0gXAotKyAgICB7aW50 IChjb25zdCBiYXNlICogY29uc3QsIGNoYXIgKil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAg ICB7aW50IGJhc2U6Om92ZXJsb2FkKGNoYXIgKikgY29uc3Q7fQotK2FkZCB7YmFzZTo6b3Zlcmxv YWQoYmFzZSYpIGNvbnN0fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgYmFzZSAm KX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQoYmFzZSAm KSBjb25zdDt9Ci0rCi0rIyBPcGVyYXRvcnMKLSthZGQge2Jhc2U6Om9wZXJhdG9yK30gXAotKyAg ICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0r ICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcisrfSBcCi0rICAgIHtiYXNlIChi YXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6 b3BlcmF0b3IrPX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBc Ci0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3ItfSBcCi0r ICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwK LSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yLS19IFwKLSsgICAge2Jhc2Ug KGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNl OjpvcGVyYXRvci09fSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9 IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcip9IFwK LSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IqPX0gXAotKyAgICB7YmFz ZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsg ICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IvfSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBj b25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQg e2Jhc2U6Om9wZXJhdG9yLz19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFz ZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9y JX0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsg ICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciU9fSBcCi0rICAg IHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0g XAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcjx9IFwKLSsgICAge2Jvb2wgKGNvbnN0IGJh c2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0K LSthZGQge2Jhc2U6Om9wZXJhdG9yPD19IFwKLSsgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25z dCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jh c2U6Om9wZXJhdG9yPn0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBi YXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0 b3I+PX0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBc Ci0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IhPX0gXAot KyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I9PX0gXAotKyAgICB7Ym9v bCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAt IFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IhfSBcCi0rICAgIHtib29sIChjb25zdCBi YXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6 b3BlcmF0b3ImJn0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNl ICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3J8 fH0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0r ICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I8PH0gXAotKyAg ICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAot KyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcjw8PX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNv bnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3Bl cmF0b3I+Pn0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAg LSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcj4+PX0gXAotKyAgICB7 YmFzZSAoYmFzZSAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQot K2FkZCB7YmFzZTo6b3BlcmF0b3J+fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCl9 IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciZ9IFwK LSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3ImPX0gXAotKyAgICB7YmFz ZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsg ICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3J8fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBj b25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQg e2Jhc2U6Om9wZXJhdG9yfD19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFz ZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9y Xn0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsg ICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcl49fSBcCi0rICAg IHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0g XAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcj19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBj b25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQg e2Jhc2U6Om9wZXJhdG9yKCl9IFwKLSsgICAge3ZvaWQgKGNvbnN0IGJhc2UgKiBjb25zdCl9IFwK LSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcltdfSBcCi0r ICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAgLSBc Ci0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yIG5ld30gXAotKyAgICB7dm9pZCAqKHNpemVf dCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBk ZWxldGV9IFwKLSsgICAge3ZvaWQgKHZvaWQgKil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAg ICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBuZXdbXX0gXAotKyAgICB7dm9pZCAqKHNpemVfdCl9 IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBkZWxl dGVbXX0gXAotKyAgICB7dm9pZCAodm9pZCAqKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAg IC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yIGNoYXIqfSBcCi0rICAgIHtjaGFyICooY29uc3QgYmFz ZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9w ZXJhdG9yIGZsdWZmKn0gXAotKyAgICB7Zmx1ZmYgKihjb25zdCBiYXNlICogY29uc3QpfSBcCi0r ICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IgZmx1ZmYqKn0g XAotKyAgICB7Zmx1ZmYgKiooY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAg LSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yIGludH0gXAotKyAgICB7aW50IChjb25z dCBiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotKwotKyMgVGVt cGxhdGVzCi0rYWRkIHt0Y2xhc3M8Y2hhcj46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAo dGNsYXNzPGNoYXI+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2Fk ZCB7dGNsYXNzPGludD46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGludD4g KiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHt0Y2xhc3M8bG9u Zz46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGxvbmc+ICogY29uc3QpfSBc Ci0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7dGNsYXNzPHNob3J0Pjo6ZG9fc29t ZXRoaW5nfSBcCi0rICAgIHt2b2lkICh0Y2xhc3M8c2hvcnQ+ICogY29uc3QpfSBcCi0rICAgIC0g XAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7dGNsYXNzPGJhc2U+Ojpkb19zb21ldGhpbmd9IFwK LSsgICAge3ZvaWQgKHRjbGFzczxiYXNlPiAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBc Ci0rICAgIC0KLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBpbnQ+fSBcCi0rICAg IHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQg e2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBzaG9ydD59IFwKLSsgICAge3ZvaWQgKHZvaWQp fSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQs IGludCwgaW50LCBpbnQsIGxvbmc+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwK LSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50 LCBjaGFyPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIg XAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBpbnQ+fSBcCi0r ICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSth ZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgc2hvcnQsIHNob3J0Pn0gXAotKyAgICB7dm9pZCAo dm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVy PGludCwgaW50LCBpbnQsIHNob3J0LCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsg ICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBp bnQsIHNob3J0LCBjaGFyPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAg IGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGxvbmcsIGlu dD59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsg ICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBzaG9ydD59IFwKLSsgICAg e3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7 Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9 IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwg aW50LCBpbnQsIGxvbmcsIGNoYXI+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwK LSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hh ciwgaW50Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIg XAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIHNob3J0Pn0gXAot KyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0r YWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGxvbmc+fSBcCi0rICAgIHt2b2lkICh2 b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8 aW50LCBpbnQsIGludCwgY2hhciwgY2hhcj59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAg IC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hv cnQsIGludCwgaW50Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZs dWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBzaG9ydCwgaW50LCBzaG9y dD59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsg ICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgbG9uZz59IFwKLSsgICAg e3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7 Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgY2hhcj59IFwKLSsgICAge3ZvaWQgKHZvaWQp fSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQs IGludCwgc2hvcnQsIHNob3J0LCBpbnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAt IFwKLSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8c2hvcnQsIGludCwgc2hv cnQsIGludCwgc2hvcnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAg Zmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8bG9uZywgc2hvcnQsIGxvbmcsIHNob3J0 LCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIg XAotKyAgICAtCi0rYWRkIHt0Y2xhc3M8YmFzZT46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9p ZCAodGNsYXNzPGJhc2U+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICB7dGNsYXNzPFQ+Ojpk b19zb21ldGhpbmd9IFwKLSsgICAgLQotK2FkZCB7cG9saWN5MTo6cG9saWN5fSBcCi0rICAgIHt2 b2lkIChwb2xpY3k8aW50LCBvcGVyYXRpb25fMTx2b2lkKj4gPiAqIGNvbnN0LCBpbnQpfSBcCi0r ICAgIHtwb2xpY3k8aW50LCBvcGVyYXRpb25fMTx2b2lkKj4gPjo6cG9saWN5fSBcCi0rICAgIHtw b2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5fSBcCi0rICAgIC0KLSthZGQge3BvbGljeTI6OnBvbGlj eX0gXAotKyAgICB7dm9pZCAocG9saWN5PGludCwgb3BlcmF0aW9uXzI8dm9pZCo+ID4gKiBjb25z dCwgaW50KX0gXAotKyAgICB7cG9saWN5PGludCwgb3BlcmF0aW9uXzI8dm9pZCo+ID46OnBvbGlj eX0gXAotKyAgICB7cG9saWN5PFQsIFBvbGljeT46OnBvbGljeX0gXAotKyAgICAtCi0rYWRkIHtw b2xpY3kzOjpwb2xpY3l9IFwKLSsgICAge3ZvaWQgKHBvbGljeTxpbnQsIG9wZXJhdGlvbl8zPHZv aWQqPiA+ICogY29uc3QsIGludCl9IFwKLSsgICAge3BvbGljeTxpbnQsIG9wZXJhdGlvbl8zPHZv aWQqPiA+Ojpwb2xpY3l9IFwKLSsgICAge3BvbGljeTxULCBQb2xpY3k+Ojpwb2xpY3l9IFwKLSsg ICAgLQotK2FkZCB7cG9saWN5NDo6cG9saWN5fSBcCi0rICAgIHt2b2lkIChwb2xpY3k8aW50LCBv cGVyYXRpb25fNDx2b2lkKj4gPiAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIHtwb2xpY3k8aW50LCBv cGVyYXRpb25fNDx2b2lkKj4gPjo6cG9saWN5fSBcCi0rICAgIHtwb2xpY3k8VCwgUG9saWN5Pjo6 cG9saWN5fSBcCi0rICAgIC0KLSthZGQge3BvbGljeTE6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lk ICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7 b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeTI6OmZ1bmN0 aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzI8dm9pZCo+Ojpm dW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzI8VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSth ZGQge3BvbGljeTM6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3Bl cmF0aW9uXzM8dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzM8VD46OmZ1bmN0 aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeTQ6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2 b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzQ8dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7b3Bl cmF0aW9uXzQ8VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8aW50LCBvcGVy YXRpb25fMTxpbnQ+ID46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8aW50LCBvcGVy YXRpb25fMTxpbnQ+ID4gKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8 VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkMTo6cG9saWN5ZH0g XAotKyAgICB7dm9pZCAocG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPiAqIGNvbnN0LCBp bnQpfSBcCi0rICAgIHtwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+Ojpwb2xpY3lkfSBc Ci0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9s aWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPjo6fnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBv bGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID4gKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAg IHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQx Ojp+cG9saWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4g PiAqIGNvbnN0KX0gXAotKyAgICB7cG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPjo6fnBv bGljeWR9IFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwKLSsgICAgLQot K2FkZCB7cG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+Ojpwb2xpY3lkfSBcCi0rICAg IHt2b2lkIChwb2xpY3lkPGxvbmcsIG9wZXJhdGlvbl8xPGxvbmc+ID4gKiBjb25zdCwgbG9uZyl9 IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKLSsgICAg LQotK2FkZCB7cG9saWN5ZDI6OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8bG9uZywg b3BlcmF0aW9uXzE8bG9uZz4gPiAqIGNvbnN0LCBsb25nKX0gXAotKyAgICB7cG9saWN5ZDxsb25n LCBvcGVyYXRpb25fMTxsb25nPiA+Ojpwb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGlj eT46OnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxs b25nPiA+Ojp+cG9saWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxsb25nLCBvcGVyYXRpb25f MTxsb25nPiA+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+ Ojp+cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkMjo6fnBvbGljeWR9IFwKLSsgICAg e3ZvaWQgKHBvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPiAqIGNvbnN0KX0gXAotKyAg ICB7cG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+Ojp+cG9saWN5ZH0gXAotKyAgICB7 cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPGNo YXIsIG9wZXJhdGlvbl8xPGNoYXI+ID46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8 Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiAqIGNvbnN0LCBjaGFyKX0gXAotKyAgICAtIFwKLSsg ICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lk Mzo6cG9saWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFy PiA+ICogY29uc3QsIGNoYXIpfSBcCi0rICAgIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNo YXI+ID46OnBvbGljeWR9IFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAot KyAgICAtCi0rYWRkIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID46On5wb2xpY3lk fSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID4gKiBjb25z dCl9IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBcCi0r ICAgIC0KLSthZGQge3BvbGljeWQzOjp+cG9saWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxj aGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+ICogY29uc3QpfSBcCi0rICAgIHtwb2xpY3lkPGNoYXIs IG9wZXJhdGlvbl8xPGNoYXI+ID46On5wb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGlj eT46On5wb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8 YmFzZT4gPjo6cG9saWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxiYXNlLCBvcGVyYXRpb25f MTxiYXNlPiA+ICogY29uc3QsIGJhc2UpfSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQ b2xpY3k+Ojpwb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ0Ojpwb2xpY3lkfSBcCi0r ICAgIHt2b2lkIChwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4gKiBjb25zdCwgYmFz ZSl9IFwKLSsgICAge3BvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPjo6cG9saWN5ZH0g XAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3Bv bGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPjo6fnBvbGljeWR9IFwKLSsgICAge3ZvaWQg KHBvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPiAqIGNvbnN0KX0gXAotKyAgICAtIFwK LSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9s aWN5ZDQ6On5wb2xpY3lkfSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8x PGJhc2U+ID4gKiBjb25zdCl9IFwKLSsgICAge3BvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFz ZT4gPjo6fnBvbGljeWR9IFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwK LSsgICAgLQotK2FkZCB7cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGlu dD4gPiA+Ojpwb2xpY3lkfSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVy YXRpb25fMTx0Y2xhc3M8aW50PiA+ID4gKiBjb25zdCwgdGNsYXNzPGludD4pfSBcCi0rICAgIC0g XAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3Bv bGljeWQ1Ojpwb2xpY3lkfSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVy YXRpb25fMTx0Y2xhc3M8aW50PiA+ID4gKiBjb25zdCwgdGNsYXNzPGludD4pfSBcCi0rICAgIHtw b2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46OnBvbGljeWR9 IFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtw b2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46On5wb2xpY3lk fSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8 aW50PiA+ID4gKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46 On5wb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ1Ojp+cG9saWN5ZH0gXAotKyAgICB7 dm9pZCAocG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICog Y29uc3QpfSBcCi0rICAgIHtwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8 aW50PiA+ID46On5wb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lk fSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46OmZ1bmN0 aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8aW50Pjo6ZnVu Y3Rpb259XAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQg e3BvbGljeWQxOjpmdW5jdGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJh dGlvbl8xPGludD46OmZ1bmN0aW9ufSBcCi0rICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259 IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDI6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lk KX0gXAotKyAgICB7b3BlcmF0aW9uXzE8bG9uZz46OmZ1bmN0aW9ufSBcCi0rICAgIHtvcGVyYXRp b25fMTxUPjo6ZnVuY3Rpb259IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDxjaGFyLCBvcGVyYXRp b25fMTxjaGFyPiA+OjpmdW5jdGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29w ZXJhdGlvbl8xPGNoYXI+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0 aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQzOjpmdW5jdGlvbn0gXAotKyAgICB7dm9pZCAo dm9pZCl9IFwKLSsgICAge29wZXJhdGlvbl8xPGNoYXI+OjpmdW5jdGlvbn0gXAotKyAgICB7b3Bl cmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8YmFzZSwgb3Bl cmF0aW9uXzE8YmFzZT4gPjo6ZnVuY3Rpb259IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAg IHtvcGVyYXRpb25fMTxiYXNlPjo6ZnVuY3Rpb259IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+Ojpm dW5jdGlvbn0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkNDo6ZnVuY3Rpb259IFwKLSsgICAge3Zv aWQgKHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25fMTxiYXNlPjo6ZnVuY3Rpb259IFwKLSsgICAg e29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPHRjbGFz czxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46OmZ1bmN0aW9ufSBcCi0rICAgIHt2 b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPjo6ZnVuY3Rpb259 IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAotKyAgICAtCi0rYWRkIHtwb2xp Y3lkNTo6ZnVuY3Rpb259IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25f MTx0Y2xhc3M8aW50PiA+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0 aW9ufSBcCi0rICAgIC0KLSsjIFRoZSBiZWxvdyB0ZXN0IGRlZmF1bHQgdGVtcGxhdGUgYXJndW1l bnRzCi0rYWRkIHtwb2xpY3lkPGludD46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8 aW50LCBvcGVyYXRpb25fMTxpbnQ+ID4gKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAg e3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPGxv bmc+Ojpwb2xpY3lkfSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPGxvbmcsIG9wZXJhdGlvbl8xPGxv bmc+ID4gKiBjb25zdCwgbG9uZyl9IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGlj eT46OnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDxjaGFyPjo6cG9saWN5ZH0gXAot KyAgICB7dm9pZCAocG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+ICogY29uc3QsIGNo YXIpfSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCi0r ICAgIC0KLSthZGQge3BvbGljeWQ8YmFzZT46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGlj eWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPiAqIGNvbnN0LCBiYXNlKX0gXAotKyAgICAtIFwK LSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xp Y3lkPHRjbGFzczxpbnQ+ID46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8dGNsYXNz PGludD4gPiwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICogY29uc3QsIGludCl9IFwKLSsg ICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKLSsgICAgLQotKwot KyMgU3RhcnQgdGhlIHRlc3QKLStpZiB7JHRyYWNlbGV2ZWx9IHsKLSsgICAgc3RyYWNlICR0cmFj ZWxldmVsCi0rfQorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbdmFy aWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDEiCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1w MiIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMiIK KytnZGJfdGVzdCAid2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29u ZDogd2hhdGlzIHRlbXAzIgogKwotK2lmIHtbc2tpcF9jcGx1c190ZXN0c119IHsgY29udGludWUg fQorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNv bmQ6IHB0eXBlIHRlbXAxIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxc XFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIg InR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAzIgogKwotKyMKLSsj IHRlc3QgcnVubmluZyBwcm9ncmFtcwotKyMKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAw CisrZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25k OiBwcmludCB0ZW1wMSIKKytnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0 aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgorK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMn IDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMiCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dk Yjk1OTMuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43ODNjOTYyCist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNjCitAQCAt MCwwICsxLDE4MCBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCi0rc2V0IHRlc3RmaWxlICJyZWFsY3BwIgotK3NldCBzcmNmaWxlICIke3Rl c3RmaWxlfS5jYyIKLStzZXQgYmluZmlsZSBbZmlsZSBqb2luICRvYmpkaXIgJHN1YmRpciAkdGVz dGZpbGVdCisrICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCi0raWYgIHtbZ2RiX2NvbXBpbGUgW2ZpbGUgam9pbiAkc3JjZGlyICRzdWJkaXIg JHNyY2ZpbGVdICRiaW5maWxlIFwKLSsJICBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9 IHsKLSsgICAgdW50ZXN0ZWQgIiR0ZXN0ZmlsZS5leHAiCi0rICAgIHJldHVybiAtMQotK30KKysg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwotK2lmIHtbZ2V0X2NvbXBpbGVyX2luZm8g JGJpbmZpbGUgImMrKyJdfSB7Ci0rICAgIHJldHVybiAtMQotK30KKysgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIg W2ZpbGUgam9pbiAkc3JjZGlyICRzdWJkaXJdCi0rZ2RiX2xvYWQgJGJpbmZpbGUKKysgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyAgICovCisrI2luY2x1ZGUgPGlvc3RyZWFtPgorKwor K3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisrCisrY2xhc3MgTmV4dE92ZXJUaHJvd0Rlcml2YXRlcwor K3sKKysKKytwdWJsaWM6CisrCisrCisrICAvLyBTaW5nbGUgdGhyb3cgYW4gZXhjZXB0aW9uIGlu IHRoaXMgZnVuY3Rpb24uCisrICB2b2lkIGZ1bmN0aW9uMSgpIAorKyAgeworKyAgICB0aHJvdyAy MDsKKysgIH0KKysKKysgIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9u LgorKyAgdm9pZCBmdW5jdGlvbjIoKSAKKysgIHsKKysgICAgZnVuY3Rpb24xKCk7CisrICB9Cisr CisrICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbiwgYnV0IGhhbmRs ZSBpdAorKyAgLy8gbG9jYWxseS4KKysgIHZvaWQgZnVuY3Rpb24zICgpIAorKyAgeworKyAgICB7 CisrICAgICAgdHJ5CisrCXsKKysJICBmdW5jdGlvbjEgKCk7CisrCX0KKysgICAgICBjYXRjaCAo Li4uKSAKKysJeworKwkgIGNvdXQgPDwgIkNhdWdodCBhbmQgaGFuZGxlZCBmdW5jdGlvbjEgZXhj ZXB0aW9uIiA8PCBlbmRsOworKwl9CisrICAgIH0KKysgIH0KKysKKysgIHZvaWQgcmV0aHJvdyAo KQorKyAgeworKyAgICB0cnkKKysgICAgICB7CisrCWZ1bmN0aW9uMSAoKTsKKysgICAgICB9Cisr ICAgIGNhdGNoICguLi4pCisrICAgICAgeworKwl0aHJvdzsKKysgICAgICB9CisrICB9CisrCisr ICB2b2lkIGZpbmlzaCAoKQorKyAgeworKyAgICAvLyBXZSB1c2UgdGhpcyB0byB0ZXN0IHRoYXQg YSAiZmluaXNoIiBoZXJlIGRvZXMgbm90IGVuZCB1cCBpbgorKyAgICAvLyB0aGlzIGZyYW1lLCBi dXQgaW4gdGhlIG9uZSBhYm92ZS4KKysgICAgdHJ5CisrICAgICAgeworKwlmdW5jdGlvbjEgKCk7 CisrICAgICAgfQorKyAgICBjYXRjaCAoaW50IHgpCisrICAgICAgeworKyAgICAgIH0KKysgICAg ZnVuY3Rpb24xICgpOwkJLy8gbWFya2VyIGZvciB1bnRpbAorKyAgfQorKworKyAgdm9pZCB1bnRp bCAoKQorKyAgeworKyAgICBmdW5jdGlvbjEgKCk7CisrICAgIGZ1bmN0aW9uMSAoKTsJCS8vIHVu dGlsIGhlcmUKKysgIH0KICsKLSsjIFNldCB0aGUgbGlzdHNpemUgdG8gb25lLiBUaGlzIHdpbGwg aGVscCB3aXRoIHRlc3RpbmcgImxpc3QiLgotK2dkYl90ZXN0ICJzZXQgbGlzdHNpemUgMSIKKyt9 OworK05leHRPdmVyVGhyb3dEZXJpdmF0ZXMgbmV4dF9jYXNlczsKICsKLSsjICJwcmludCBNRVRI T0QiCi0rZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rpb25zIHByaW50XSB7Ci0rICAgIGdkYl90ZXN0 ICJwcmludCAkbmFtZSIgW2dldCAkbmFtZSBwcmludF0gInByaW50ICRuYW1lIgotK30KICsKLSsj ICJsaXN0IE1FVEhPRCIKLStmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgbGlzdF0gewotKyAg ICBnZGJfdGVzdCAibGlzdCAkbmFtZSIgW2dldCAkbmFtZSBsaXN0XSAibGlzdCAkbmFtZSIKLSt9 CisraW50IG1haW4gKCkgCisreyAKKysgIHRyeQorKyAgICB7CisrICAgICAgbmV4dF9jYXNlcy5m dW5jdGlvbjEgKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBE aXNjYXJkCisrICAgIH0KICsKLSsjIFJ1bm5pbmcgdG8gYnJlYWtwb2ludCAtLSB1c2UgYW55IGZ1 bmN0aW9uIHdlIGNhbiAibGlzdCIKLStmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgbGlzdF0g ewotKyAgICAjIFNraXAgIm1haW4iLCBzaW5jZSB0ZXN0X2JyZWFrcG9pbnQgdXNlcyBpdAotKyAg ICBpZiB7W3N0cmluZyBjb21wYXJlICRuYW1lICJtYWluIl0gIT0gMH0gewotKwl0ZXN0X2JyZWFr cG9pbnQgJG5hbWUKKysgIHRyeQorKyAgICB7CisrICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIg KCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJkCiAr ICAgIH0KLSt9CiArCi0rIyAiaW5mbyBmdW5jIE1FVEhPRCIKLStpZiB7ZmFsc2V9IHsKLStmb3Jl YWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgImluZm9fZnVuYyJdIHsKLSsgICAgcmVnc3ViIC1hbGwg e1wqfSAkbmFtZSB7XCp9IG4KLSsgICAgcmVnc3ViIC1hbGwge1xefSAkbiB7XF59IG4KLSsgICAg cmVnc3ViIC1hbGwge1xdfSAkbiB7XF19IG4KLSsgICAgcmVnc3ViIC1hbGwge1xbfSAkbiB7XFt9 IG4KLSsgICAgZ2RiX3Rlc3QgImluZm8gZnVuYyAkbiIgW2dldCAkbmFtZSBpbmZvX2Z1bmNdICJp bmZvIGZ1bmMgJG5hbWUiCi0rfQotK30KKysgIHRyeQorKyAgICB7CisrICAgICAgLy8gVGhpcyBp cyBkdXBsaWNhdGVkIHNvIHdlIGNhbiBuZXh0IG92ZXIgb25lIGJ1dCBzdGVwIGludG8KKysgICAg ICAvLyBhbm90aGVyLgorKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOworKyAgICB9Cisr ICBjYXRjaCAoLi4uKQorKyAgICB7CisrICAgICAgLy8gRGlzY2FyZAorKyAgICB9CiArCi0rIyBX aGF0IG9mIHRoZXNlIGlzIG5vdCBjb3ZlcmVkIGJ5IGFib3ZlPwotKyMgb3BlcmF0b3Itc3BlY2lm aWMgdGVzdHMgKCdwIGEgKyBiJywgJ3ByaW50IGNvdXQgPDwgImhlbGxvIicsIGV0YykKLSsjIG92 ZXJsb2FkZWQgb3BlcmF0b3JzICYgY3RvcnMKLSsjIG9wZXJhdG9yIG5hbWVzIHdpdGggc3BhY2Vz IGluIHRoZW0gKG90aGVyIHRoYW4gZGVsZXRlIGFuZCBuZXcpCi0rIyBwdHlwZSBvZiBjbGFzc2Vz L3RlbXBsYXRlcwotKyMgYmFja3RyYWNlcwotKyMgcHJpbnRpbmcgZGF0YSBtZW1iZXJzCi0rIyBj YXRjaGluZywgdGhyb3dpbmcgZXhjZXB0aW9ucwotKyMgU1RMIChlc3AgY29udGFpbmVycyBhbmQg aXRlcmF0b3JzKQotKyMgaW5oZXJpdGFuY2UgdGVzdHMKLSsjIGNvbXBsZXRpb24gc2NvcGluZwor KyAgbmV4dF9jYXNlcy5mdW5jdGlvbjMgKCk7CiArCi0rZ2RiX2V4aXQKLStyZXR1cm4gMAotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvdy5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9zaGFkb3cuZXhwCi1pbmRleCAxZTVlODBiLi40MGMzNWE0IDEwMDY0NAotLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc2hhZG93LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3Avc2hhZG93LmV4cAotQEAgLTg1LDUgKzg1LDQgQEAgZ2RiX3Rlc3QgInByaW50IHgiICI9IDU1 IiAiUHJpbnQgbG9jYWwgeCBub3QgbmFtZXNwYWNlIHgiCi0gZ2RiX2JyZWFrcG9pbnQgW2dkYl9n ZXRfbGluZV9udW1iZXIgIm1hcmtlcjUiXQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJt YXJrZXI1IgotIAotLXNldHVwX2tmYWlsICJnZGIvNzkzNiIgIiotKi0qIgotIGdkYl90ZXN0ICJw cmludCB4IiAiPSAxMSIgIlByaW50IGltcG9ydGVkIG5hbWVzcGFjZSB4IgotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L3NoYWRvd2luZy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjZkOWMy ZjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5j YwotQEAgLTAsMCArMSw0OCBAQAotK25hbWVzcGFjZSBBCi0rewotKyAgaW50IHggPSAxMTsKLSt9 CisrICB0cnkKKysgICAgeworKyAgICAgIG5leHRfY2FzZXMucmV0aHJvdyAoKTsKKysgICAgfQor KyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgIC8vIERpc2NhcmQKKysgICAgfQogKwotK2lu dCB4ID0gMjI7Ci0raW50IHkgPSAwOworKyAgdHJ5CisrICAgIHsKKysgICAgICAvLyBBbm90aGVy IGR1cGxpY2F0ZSBzbyB3ZSBjYW4gdGVzdCAiZmluaXNoIi4KKysgICAgICBuZXh0X2Nhc2VzLmZ1 bmN0aW9uMiAoKTsKKysgICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgIC8vIERp c2NhcmQKKysgICAgfQogKwotK2NsYXNzIEIKLSt7Ci0rcHVibGljOgotKyAgaW50IHg7CisrICAv LyBBbm90aGVyIHRlc3QgZm9yICJmaW5pc2giLgorKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0 X2Nhc2VzLmZpbmlzaCAoKTsKKysgICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICB9 CiArCi0rICBpbnQKLSsgIGZ1bmMoKQotKyAgewotKyAgICB4ID0gMzM7Ci0rICAgIHkrPXg7IC8v IG1hcmtlcjEKKysgIC8vIFRlc3Qgb2YgInVudGlsIi4KKysgIHRyeQorKyAgICB7CisrICAgICAg bmV4dF9jYXNlcy5maW5pc2ggKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysg ICAgfQogKwotKyAgICAgIHsKLSsgICAgICAgIGludCB4ID0gNDQ7Ci0rICAgICAgICB5Kz14OyAv LyBtYXJrZXIyCi0rCi0rICAgICAgICAgIHsKLSsgICAgICAgICAgICBpbnQgeCA9IDU1OwotKyAg ICAgICAgICAgIHkrPXg7IC8vIG1hcmtlcjMKLSsKLSsgICAgICAgICAgICAgIHsKLSsgICAgICAg ICAgICAgICAgaW50IHogPSB4OyAvL3ByZXZlbnQgZ2NjIGZyb20gb3B0aW1pemluZyBhd2F5IHRo aXMgc2NvcGUKLSsgICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEE7Ci0rICAgICAgICAg ICAgICAgIHkrPXg7IC8vIG1hcmtlcjQKLSsKLSsgICAgICAgICAgICAgICAgdXNpbmcgQTo6eDsK LSsgICAgICAgICAgICAgICAgeSs9eDsgLy8gbWFya2VyNQotKyAgICAgICAgICAgICAgICAKLSsg ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMtPng7Ci0rICAgICAgICAgICAgICB9Ci0rICAgICAg ICAgIH0KLSsgICAgICB9Ci0rICB9Ci0rfTsKKysgIC8vIFRlc3Qgb2YgInVudGlsIiB3aXRoIGFu IGFyZ3VtZW50LgorKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLnVudGlsICgpOwor KyAgICB9CisrICBjYXRjaCAoLi4uKQorKyAgICB7CisrICAgIH0KICsKLStpbnQKLSttYWluKCkK LSt7Ci0rICBCIHRoZUI7Ci0rICByZXR1cm4gdGhlQi5mdW5jKCk7CisrICAvLyBUZXN0IG9mICJh ZHZhbmNlIi4KKysgIHRyeQorKyAgICB7CisrICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKKysg ICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICB9CiArfQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9z aGFkb3dpbmcuZXhwCisrCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5 My5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAogbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLjY5MjJlZWQKK2luZGV4IDAwMDAwMDAuLjNkYWQ3Y2EKIC0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5leHAKLUBA IC0wLDAgKzEsOTEgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAKK0BAIC0wLDAg KzEsMTgyIEBACisrIyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjQ3ODcsMjYg KzgxMDMsMzYgQEAgaW5kZXggMDAwMDAwMC4uNjkyMmVlZAogKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgogKworKwogK2lmICR0cmFjZWxldmVsIHRoZW4gewogKyAgICBzdHJhY2UgJHRyYWNl bGV2ZWwKICt9CiArCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAorK2lmIHsgW3NraXBf Y3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9CiArCi0rc2V0IHRlc3RmaWxlIHNoYWRvd2luZwor K3NldCB0ZXN0ZmlsZSAiZ2RiOTU5MyIKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotK3Nl dCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1 dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSB0ZXN0IHByb2dyYW0iCisrc2V0IGJpbmZpbGUgJG9iamRpci8kc3ViZGlyLyR0ZXN0Zmls ZQorKworKyMgQ3JlYXRlIGFuZCBzb3VyY2UgdGhlIGZpbGUgdGhhdCBwcm92aWRlcyBpbmZvcm1h dGlvbiBhYm91dCB0aGUgY29tcGlsZXIKKysjIHVzZWQgdG8gY29tcGlsZSB0aGUgdGVzdCBjYXNl LgorK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9ICJjKysiXSB7CisrICAgIHVudGVz dGVkIGdkYjk1OTMuZXhwCiArICAgIHJldHVybiAtMQogK30KICsKLStpZiBbZ2V0X2NvbXBpbGVy X2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTE7CisraWYgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGMrK31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAorKyAgICBy ZXR1cm4gLTEKICt9CiArCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrIyBTb21lIHRhcmdldHMg Y2FuJ3QgZG8gZnVuY3Rpb24gY2FsbHMsIHNvIGRvbid0IGV2ZW4gYm90aGVyIHdpdGggdGhpcwor KyMgdGVzdC4KKytpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixjYW5ub3RfY2FsbF9mdW5jdGlv bnNdIHsKKysgICAgc2V0dXBfeGZhaWwgIiotKi0qIiA5NTkzCisrICAgIGZhaWwgIlRoaXMgdGFy Z2V0IGNhbiBub3QgY2FsbCBmdW5jdGlvbnMiCisrICAgIGNvbnRpbnVlCisrfQogKwogK2dkYl9l eGl0CiArZ2RiX3N0YXJ0CkBAIC0yNDgxNCwzMDMgKzgxNDAsMTQyIEBAIGluZGV4IDAwMDAwMDAu LjY5MjJlZWQKICtnZGJfbG9hZCAke2JpbmZpbGV9CiArCiAraWYgIVtydW50b19tYWluXSB0aGVu IHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWluIgorKyAgICBw ZXJyb3IgImNvdWxkbid0IHJ1biB0byBtYWluIgogKyAgICBjb250aW51ZQotK30KLSsKLSsjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGlu ZyBvZiBjbGFzcyB2YXJpYWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGdsb2JhbCB2YXJpYWJs ZQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIxIl0KLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyMSIKLSsKLStnZGJfdGVzdCAicHJpbnQg eCIgIj0gMzMiICJQcmludCBjbGFzcyB4IHNoYWRvd2luZyBnbG9iYWwgeCIKLSsKLSsKLSsjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGlu ZyBsb2NhbCB2YXJpYWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGNsYXNzIHZhcmlhYmxlCi0r Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1hcmtlcjIiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJtYXJrZXIyIgotKwotK2dkYl90ZXN0ICJwcmludCB4IiAi PSA0NCIgIlByaW50IGxvY2FsIHggc2hhZG93aW5nIGNsYXNzIHgiCi0rCi0rIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgaW5uZXIgc2NvcGUgeCBp cyBwcmludGVkIG5vdCBvdXRlciBzY29wZQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJtYXJrZXIzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2Vy MyIKLSsKLStnZGJfdGVzdCAicHJpbnQgeCIgIj0gNTUiICJQcmludCBpbm5lciBzY29wZSB4Igot KwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0 IHByaW50aW5nIGxvY2FsIHZhcmlhYmxlIGlzIG5vdCBzaGFkb3dlZAotKyMgYnkgbmFtZXNwYWNl IHZhcmlhYmxlCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1hcmtl cjQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJtYXJrZXI0IgotKwotK2dkYl90ZXN0 ICJwcmludCB4IiAiPSA1NSIgIlByaW50IGxvY2FsIHggbm90IG5hbWVzcGFjZSB4IgotKwotKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0IGltcG9y dGVkIG5hbWVzcGFjZSBlbGVtZW50IGlzIHByaW50ZWQKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAibWFya2VyNSJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg Im1hcmtlcjUiCi0rCi0raWYgW3Rlc3RfY29tcGlsZXJfaW5mbyBnY2MtNC0zLSpdIHRoZW4geyBz ZXR1cF94ZmFpbCAqLSotKiB9CisrfSAKICsKLStnZGJfdGVzdCAicHJpbnQgeCIgIj0gMTEiICJQ cmludCBpbXBvcnRlZCBuYW1lc3BhY2UgeCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC91c2VyZGVmLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdXNlcmRlZi5jYwotaW5kZXgg MzM4YzU4YS4uNTZhNzM1ZiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJk ZWYuY2MKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuY2MKLUBAIC0zMTEsNiAr MzExLDExIEBAIHB1YmxpYzoKLSAgIGludCB6OwotIH07Ci0gCi0rYm9vbCBvcGVyYXRvcj09IChj b25zdCBNZW1iZXIgJm0xLCBjb25zdCBNZW1iZXIgJm0yKQotK3sKLSsgIHJldHVybiBtMS56ID09 IG0yLno7CisrIyBTZWUgd2hldGhlciB3ZSBoYXZlIHRoZSBuZWVkZWQgdW53aW5kZXIgaG9va3Mu Cisrc2V0IG9rIDEKKytnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9EZWJ1Z0hvb2si ICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayIgeworKyAgICAtcmUgIj0gLipfVW53aW5kX0RlYnVn SG9vay4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhv b2siCisrICAgIH0KKysgICAgLXJlICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0Llxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9n dXMgZmFpbHMgaW4gdGhlIHJlc3VsdHMuCisrCXBhc3MgImNoZWNrIGZvciB1bndpbmRlciBob29r IgorKwlzZXQgb2sgMAorKyAgICB9CisrfQorK2lmIHshJG9rfSB7CisrICAgIHVudGVzdGVkIGdk Yjk1OTMuZXhwCisrICAgIHJldHVybiAtMQogK30KICsKLSBjbGFzcyBDb250YWluZXIKLSB7Ci0g cHVibGljOgotQEAgLTMzMCw4ICszMzUsMTIgQEAgaW50IG1haW4gKHZvaWQpCi0gIEExIHR3byg0 LDUpOwotICBBMSB0aHJlZSgwLDApOwotICBDb250YWluZXIgYzsKLSsgTWVtYmVyIG1lbTEsIG1l bTI7Ci0gIGludCB2YWw7Ci0gIAotKyBtZW0xLnogPSA1OwotKyBtZW0yLnogPSA3OwotKwotICBt YXJrZXIxKCk7IC8vIG1hcmtlcjEtcmV0dXJucy1oZXJlCi0gIGNvdXQgPDwgb25lOyAvLyBtYXJr ZXIxLXJldHVybnMtaGVyZQotICBjb3V0IDw8IHR3bzsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC91c2VyZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhw Ci1pbmRleCAyYmJmOTVlLi4yNWNhZGU3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvdXNlcmRlZi5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhwCi1A QCAtMTEzLDYgKzExMyw3IEBAIGdkYl90ZXN0ICJwcmludCBvbmUgPiB0d28iICJcXFwkXFswLTlc XSogPSAwXFtcclxuXF0iCi0gZ2RiX3Rlc3QgInByaW50IG9uZSA+PSB0d28iICJcXFwkXFswLTlc XSogPSAwXFtcclxuXF0iCi0gCi0gZ2RiX3Rlc3QgInByaW50IG9uZSA9PSB0d28iICJcXFwkXFsw LTlcXSogPSAwXFtcclxuXF0iCi0rZ2RiX3Rlc3QgInByaW50IG9uZS5vcGVyYXRvcj09ICh0d28p IiAiXFxcJFxbMC05XF0qID0gMFxbXHJcblxdIgotIAotIGdkYl90ZXN0ICJwcmludCBvbmUgIT0g dHdvIiAiXFxcJFxbMC05XF0qID0gMVxbXHJcblxdIgotIAotQEAgLTE1NSw1ICsxNTYsOCBAQCBn ZGJfdGVzdCAicHJpbnQgKmMiICJcXFwkXFswLTlcXSogPSBcXChNZW1iZXIgJlxcKSBAJGhleDog e3ogPSAuKn0iCi0gZ2RiX3Rlc3QgInByaW50ICYqYyIgIlxcXCRcWzAtOVxdKiA9IFxcKE1lbWJl ciBcXCpcXCkgJGhleCIKLSBnZGJfdGVzdCAicHR5cGUgJipjIiAidHlwZSA9IChzdHJ1Y3R8Y2xh c3MpIE1lbWJlciB7KFxbXHJcbiBcXStwdWJsaWM6KT9cW1xyXG4gXF0raW50IHo7XFtcclxuXF0r fSAmXFwqIgotIAotK2dkYl90ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0yKSIgIiA9 IGZhbHNlIgotK2dkYl90ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0xKSIgIiA9IHRy dWUiCi0rCi0gZ2RiX2V4aXQKLSByZXR1cm4gMAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItYXJhbmdlcy5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1h cmFuZ2VzLlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kNWI5Y2E1Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5nZXMu UwotQEAgLTAsMCArMSwxNDAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgU2VlIGh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9OTU5MwogKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICAgIi4qY2F0Y2ggKC4uLikuKiIg XAorKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgMSIKICsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCisr ICAibmV4dCBwYXN0IGNhdGNoIDEiCiArCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgICAi bmV4dCBvdmVyIGEgdGhyb3cgMiIKICsKLSsvKiBUZXN0IC5kZWJ1Z19hcmFuZ2VzIGNvbnRhaW5p bmcgemVybyBhZGRyZXNzX3NpemUuICAqLworK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0 X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCisrICAibmV4dCBwYXN0IGNhdGNoIDIiCiArCi0rLyogRHVt bXkgZnVuY3Rpb24gdG8gcHJvdmlkZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IuICAqLworK2dkYl90 ZXN0ICJzdGVwIiBcCisrICAiLipmdW5jdGlvbjEoKS4qIiBcCisrICAic3RlcCBpbnRvIGZ1bmN0 aW9uMiAxIgogKwotKwkudGV4dAotKy5MYmVnaW5fdGV4dDE6Ci0rCS5nbG9ibCBtYWluCi0rCS50 eXBlIG1haW4sICVmdW5jdGlvbgotK21haW46Ci0rLkxiZWdpbl9tYWluOgotKwkuaW50IDAKLSsu TGVuZF9tYWluOgotKwkuc2l6ZSBtYWluLCAuLW1haW4KLSsuTGVuZF90ZXh0MToKKytnZGJfdGVz dCAibmV4dCIgXAorKyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAgICJuZXh0IG92ZXIgYSB0 aHJvdyAzIgogKwotKy8qIERlYnVnIGluZm9ybWF0aW9uICovCisrZ2RiX3Rlc3QgIm5leHQiIFwK KysgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24zLioiIFwKKysgICJuZXh0IHBhc3QgY2F0Y2ggMyIK ICsKLSsJLnNlY3Rpb24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVy ICovCi0rCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBp bGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVy c2lvbiAqLwotKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2 IHNlY3Rpb24gKi8KLSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KKytnZGJfdGVzdCAi bmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5yZXRocm93LioiIFwKKysgICAgIm5leHQgb3ZlciBh IHRocm93IDQiCiArCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjog RFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuNGJ5dGUJLkxlbmRfdGV4dDEJCQkvKiBEV19BVF9o aWdoX3BjICovCi0rCS40Ynl0ZQkuTGJlZ2luX3RleHQxCQkJLyogRFdfQVRfbG93X3BjICovCi0r CS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBD IDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMQkJCQkvKiBEV19BVF9s YW5ndWFnZSAoQykgKi8KKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIg XAorKyAgIm5leHQgb3ZlciBhIHJldGhyb3ciCiArCi0rCS8qIG1haW4gKi8KLSsJLnVsZWIxMjgJ MgkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19B VF9leHRlcm5hbCAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2RlY2xfZmlsZSAqLwotKwkuYnl0 ZQkJMgkJCS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuYXNjaWkJCSJtYWluXDAiCQkvKiBEV19B VF9uYW1lICovCi0rCS40Ynl0ZQkJLkx0eXBlX2ludC0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBl ICovCi0rCS40Ynl0ZQkJLkxiZWdpbl9tYWluCS8qIERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJ CS5MZW5kX21haW4JCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9m cmFtZV9iYXNlOiBsZW5ndGggKi8KLSsJLmJ5dGUJCTB4NTUJCQkvKiBEV19BVF9mcmFtZV9iYXNl OiBEV19PUF9yZWc1ICovCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMuZnVu Y3Rpb24yLioiIFwKKysgICJuZXh0IGFmdGVyIGEgcmV0aHJvdyIKICsKLSsuTHR5cGVfaW50Ogot KwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5hc2NpaQkJ ImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTQJCQkvKiBEV19BVF9ieXRlX3Np emUgKi8KLSsJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLworK2dkYl90ZXN0ICJzdGVw IiBcCisrICAiLipmdW5jdGlvbjEoKS4qIiBcCisrICAic3RlcCBpbnRvIGZ1bmN0aW9uMiAyIgog KwotKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworK2dkYl90ZXN0ICJm aW5pc2giIFwKKysgICIuKmNhdGNoICguLi4pLioiIFwKKysgICJmaW5pc2ggMSIKICsKLSsuTGN1 MV9lbmQ6CisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioi IFwKKysgICJuZXh0IHBhc3QgY2F0Y2ggNCIKICsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNl Y3Rpb24gLmRlYnVnX2FiYnJldgotKy5MYWJicmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8q IEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0 ICovCi0rCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MTIJCQkv KiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwot KwkudWxlYjEyOAkweDExCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8q IERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51 bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBE V19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwot KwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJ LyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAiLipm dW5jdGlvbjEgKCkuKiIgXAorKyAgInN0ZXAgaW50byBmaW5pc2ggbWV0aG9kIgogKwotKwkudWxl YjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyZQkJCS8qIERXX1RBR19z dWJwcm9ncmFtICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4 CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkudWxlYjEyOAkweGMJCQkvKiBEV19GT1JN X2ZsYWcgKi8KLSsJLnVsZWIxMjgJMHgzYQkJCS8qIERXX0FUX2RlY2xfZmlsZSAqLwotKwkudWxl YjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4M2IJCQkvKiBEV19B VF9kZWNsX2xpbmUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwku dWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZP Uk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGVi MTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FU X2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIx MjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9S TV9hZGRyICovCi0rCS51bGViMTI4CTB4NDAJCQkvKiBEV19BVF9mcmFtZV9iYXNlICovCi0rCS51 bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrZ2RiX3Rlc3QgImZp bmlzaCIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgImZpbmlzaCAyIgogKwotKwkudWxl YjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19i YXNlX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJ MHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5j b2RpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwor K2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLmZpbmlzaCAoKS4qIiBcCisrICAi bmV4dCBwYXN0IGNhdGNoIDUiCiArCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0r CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrZ2RiX3Rlc3QgInN0ZXAiIFwKKysgICIu KmZ1bmN0aW9uMSAoKS4qIiBcCisrICAic3RlcCBpbnRvIGZpbmlzaCwgZm9yIHVudGlsIgogKwot Ky8qIGFyYW5nZXMgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FyYW5nZXMKLSsJLmxvbmcJ LkxhcmFuZ2VzX2VuZCAtIDFmCi0rMToKLSsJLjJieXRlCTIJCQkJLyogYXJhbmdlcyBWZXJzaW9u ICovCi0rCS40Ynl0ZQkuTGN1MV9iZWdpbiAtIC5kZWJ1Z19pbmZvCS8qIE9mZnNldCBpbnRvIC5k ZWJ1Z19pbmZvIHNlY3Rpb24gKi8KLSsJLyogVGhlIEdEQiBjcmFzaGVyIGlzIHRoaXMgemVybyB2 YWx1ZS4gICovCi0rCS5ieXRlCQkwCQkJLyogYXJhbmdlcyBhZGRyZXNzX3NpemUgKi8KLSsJLmJ5 dGUJCTAJCQkvKiBhcmFuZ2VzIHNlZ21lbnRfc2l6ZSAqLwotKwotKy5MYXJhbmdlc19lbmQ6Ci1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5leHAKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi4zOTYzMmQ1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5nZXMuZXhwCi1AQCAtMCwwICsxLDQwIEBACi0rIyBD b3B5cmlnaHQgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKytnZGJfdGVzdCAidW50aWwiIFwKKysgICIuKmZ1bmN0aW9uMSAoKS4qIiBc CisrICAidW50aWwgd2l0aCBubyBhcmd1bWVudCAxIgogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKytzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyIGZvciB1bnRp bCIgJHRlc3RmaWxlLmNjXQogKwotKyMgVGVzdCAuZGVidWdfYXJhbmdlcyBjb250YWluaW5nIHpl cm8gYWRkcmVzc19zaXplLgorK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAorKyAgIi4qZnVuY3Rp b24xICgpLioiIFwKKysgICJuZXh0IHBhc3QgY2F0Y2ggNiIKICsKLSsjIFRoaXMgdGVzdCBjYW4g b25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMu Ci0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtp c3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0K LSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dl cnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9CisrZ2RiX3Rlc3QgInVudGlsIiBc CisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAidW50aWwgd2l0aCBubyBhcmd1bWVudCAyIgog KwotK3NldCB0ZXN0ZmlsZSAiZHcyLWFyYW5nZXMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u UwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytzZXQgbGlu ZSBbZ2RiX2dldF9saW5lX251bWJlciAidW50aWwgaGVyZSIgJHRlc3RmaWxlLmNjXQogKwotK2lm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7bm9kZWJ1Z31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9 CisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMudW50aWwgKCkuKiIgXAorKyAg Im5leHQgcGFzdCBjYXRjaCA2IgogKwotK2NsZWFuX3Jlc3RhcnQgJHRlc3RmaWxlCisrZ2RiX3Rl c3QgInN0ZXAiIFwKKysgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCisrICAic3RlcCBpbnRvIHVudGls IgorKworK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAor KyAgInVudGlsLW92ZXItdGhyb3ciCisrCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRf Y2FzZXMudW50aWwgKCkuKiIgXAorKyAgIm5leHQgcGFzdCBjYXRjaCA3IgorKworK2dkYl90ZXN0 ICJzdGVwIiBcCisrICAiLipmdW5jdGlvbjEgKCkuKiIgXAorKyAgInN0ZXAgaW50byB1bnRpbCwg Zm9yIGFkdmFuY2UiCiArCi0rIyBGYWlsZWQgZ2RiX2xvYWQgd291bGQgYWJvcnQgdGhlIHRlc3Rj YXNlIGV4ZWN1dGlvbiBlYXJsaWVyLgotK3Bhc3MgImZpbGUgbG9hZGVkIgorK2dkYl90ZXN0ICJh ZHZhbmNlICRsaW5lIiBcCisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAiYWR2YW5jZS1vdmVy LXRocm93IgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQt bG9jbGlzdC5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMK IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MzUzNjk4CitpbmRleCAwMDAw MDAwLi43ZmIwMGVhCiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwotQEAgLTAsMCArMSwxNzYgQEAKK0BAIC0wLDAgKzEsMjEy IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K ICsKICsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAg LTI1MTY0LDYgKzgzMjksMTcgQEAgaW5kZXggMDAwMDAwMC4uOTM1MzY5OAogKwkuNGJ5dGUJCS5M bGVuX3Zhci0uTGN1MV9iZWdpbgkvKiBEV19BVF91cHBlcl9ib3VuZCAqLwogKwkuYnl0ZQkJMAkJ CS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBkaWUgKi8KICsKKysJLyogRFdfQVRfdXBwZXJfYm91bmQg aXMgcmVmZXJlbmNpbmcgYW4gb3B0aW1pemVkLW91dCB2YXJpYWJsZS4gICovCisrLkxhcnJheWJf dHlwZToKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2FycmF5X3R5cGUgKi8KKysJ LjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCisrCS51 bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90eXBlICovCisrCS40Ynl0ZQkJ Lkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMAkJCS8q IERXX0FUX2xvd2VyX2JvdW5kICovCisrCS40Ynl0ZQkJLkxsZW5iX3Zhci0uTGN1MV9iZWdpbgkv KiBEV19BVF91cHBlcl9ib3VuZCAqLworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBv ZiBkaWUgKi8KKysKICsuTHVpbnRfdHlwZToKICsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjogRFdf VEFHX2Jhc2VfdHlwZSAqLwogKwkuNGJ5dGUJCS5MdWludF9zdHIJCS8qIERXX0FUX25hbWUgKi8K QEAgLTI1MTgyLDkgKzgzNTgsMjQgQEAgaW5kZXggMDAwMDAwMC4uOTM1MzY5OAogKwkuNGJ5dGUJ CS5MdWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KICsJLjRieXRlCQkuTGxl bl9sb2NsaXN0LS5MbG9jbGlzdAkvKiBEV19BVF9sb2NhdGlvbiAqLwogKworKwkvKiBvcHRpbWl6 ZWQtb3V0IHZhcmlhYmxlIGZvciBiX3N0cmluZy4gICovCisrLkxsZW5iX3ZhcjoKKysJLnVsZWIx MjgJNwkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgbm8gRFdfQVRfbG9j YXRpb24gKi8KKysJLmJ5dGUJCTEJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCisrCS40Ynl0ZQkJ Lkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwogKwkudWxlYjEyOAk2 CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgRFdfRk9STV9zdHJpbmcgKi8KICsJLnN0cmlu ZwkJImFfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJCS5MYXJyYXlfdHlwZS0u TGN1MV9iZWdpbi8qIERXX0FUX3R5cGUgKi8KKysJLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFf YmVnaW4gLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0 aW9uICovCisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXJk YXRhCQkJLyogICA8YWRkcj4gKi8KKysyOgorKworKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyBy ZWZlcmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KKysJLnVsZWIxMjgJNgkJ CS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCisrCS5zdHJpbmcJ CSJiX3N0cmluZyIJCS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTGFycmF5Yl90eXBlLS5M Y3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KICsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9s b2NhdGlvbiAqLwogKzE6CS5ieXRlCQkzCQkJLyogICBEV19PUF9hZGRyICovCiArCS40Ynl0ZQkJ dmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCkBAIC0yNTI3Nyw2ICs4NDY4LDE2IEBAIGluZGV4IDAw MDAwMDAuLjkzNTM2OTgKICsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KICsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KICsKKysJLnVsZWIxMjgJNwkJCS8qIEFiYnJldiBjb2Rl ICovCisrCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KKysJLmJ5dGUJCTB4 MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MzQJCQkvKiBEV19BVF9hcnRpZmlj aWFsICovCisrCS51bGViMTI4CTB4MGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KKysJLnVsZWIxMjgJ MHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVm NCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwogKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwogKy8q IFN0cmluZyB0YWJsZSAqLwpAQCAtMjUyODksMTAgKzg0OTAsMTAgQEAgaW5kZXggMDAwMDAwMC4u OTM1MzY5OAogKwkuc3RyaW5nCQkidW5zaWduZWQgaW50IgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uMjhkYjAwNQoraW5kZXggMDAwMDAwMC4uNWRiZWQzZgogLS0tIC9kZXYvbnVs bAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAot QEAgLTAsMCArMSw0OCBAQAorQEAgLTAsMCArMSw1MSBAQAogKyMgQ29weXJpZ2h0IDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjUzNDEs MTY5ICs4NTQyLDkgQEAgaW5kZXggMDAwMDAwMC4uMjhkYjAwNQogKwogK2dkYl90ZXN0ICJwIGFf c3RyaW5nIiB7ID0gInNlZW4ifQogK2dkYl90ZXN0ICJwdHlwZSBhX3N0cmluZyIge3R5cGUgPSBj aGFyIFxbNFxdfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1w dHktbmFtZXNwYWNlLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVz cGFjZS5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2IwM2ZmMQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1l c3BhY2UuUwotQEAgLTAsMCArMSwxMDggQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLSsKLSsvKiBUZXN0IEcrKyA0LjEgcHJvZHVjaW5nIERXX1RBR19uYW1lc3BhY2Ug d2l0aCBEV19BVF9uYW1lICI6OiIuICAqLwotKwotKwkuZGF0YQotK3ZhcjoJLjRieXRlCTEKLSsK LSsJLnNlY3Rpb24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICov Ci0rCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0 aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lv biAqLwotKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNl Y3Rpb24gKi8KLSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGll ICovCi0rCS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0r CS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBD IDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJNAkJCQkvKiBEV19MQU5H X0NfcGx1c19wbHVzIChDKyspICovCi0rCi0rLkx0eXBlX2ludDoKLSsJLnVsZWIxMjgJMgkJCS8q IEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYXNjaWkJCSJpbnRcMCIJCQkvKiBEV19B VF9uYW1lICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCQk1 CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdf VEFHX25hbWVzcGFjZSAqLwotKwkuYXNjaWkJCSI6OlwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsK LSsJLnVsZWIxMjgJNwkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIChsb2NhdGlvbikgKi8K LSsJLmFzY2lpCQkidmFyXDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJ CS8qIERXX0FUX2xvY2F0aW9uICovCi0rMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8K LSsJLjRieXRlCQl2YXIJCQkvKiAgIDxhZGRyPiAqLwotKzI6CS40Ynl0ZQkJLkx0eXBlX2ludC0u TGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNo aWxkcmVuIG9mIERXX1RBR19uYW1lc3BhY2UgKi8KLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2Yg Y2hpbGRyZW4gb2YgQ1UgKi8KLSsKLSsuTGN1MV9lbmQ6Ci0rCi0rLyogQWJicmV2IHRhYmxlICov Ci0rCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKLSsuTGFiYnJldjFfYmVnaW46Ci0rCS51bGViMTI4 CTEJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBp bGVfdW5pdCAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkw eDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5n ICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkw eDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFu Z3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwot KwotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJCS8q IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJ LnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19G T1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJ LnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyog RFdfQVRfZW5jb2RpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJ MHgzOQkJCS8qIERXX1RBR19uYW1lc3BhY2UgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRy ZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJ CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAk3CQkJLyogQWJi cmV2IGNvZGUgKGxvY2F0aW9uKSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3Zhcmlh YmxlICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJ CS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8K LSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHhhCQkJ LyogRFdfRk9STV9ibG9jazEgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8K LSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNw YWNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNlLmV4 cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFhOGRhMTYKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNl LmV4cAotQEAgLTAsMCArMSw0MyBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMg VGVzdCBHKysgNC4xIHByb2R1Y2luZyBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAi OjoiLgotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1 cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KLSsjIEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9m IGxpa2VseSB0YXJnZXRzLgotK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCi0rICAgICYmICFb aXN0YXJnZXQgKi0qLWdudSpdCi0rICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCi0rICAgICYm ICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQotKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkq XQotKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKLSsgICAgcmV0dXJuIDAg IAotK30KLSsKLStzZXQgdGVzdGZpbGUgImR3Mi1lbXB0eS1uYW1lc3BhY2UiCi0rc2V0IHNyY2Zp bGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9LngKLSsKLStpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7b2JqZGly fS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfSIgb2JqZWN0IHtub2RlYnVnfV0gIT0gIiIgfSB7Ci0r ICAgIHJldHVybiAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCi0rCi0rIyBg cCB2YXInIGJlbG93IGNhbiB3b3JrIHdpdGhvdXQgaWRlbnRpZmllZCBEV0FSRiBESUUganVzdCBi YXNlZCBvbiBpdHMgRUxGIHN5bWJvbC4KLSsjIENhdGNoIGl0IGhlcmUgYXMgYHR5cGUgPSA8ZGF0 YSB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4nLgotK2dkYl90ZXN0ICJwdHlwZSB2YXIiICJ0eXBl ID0gaW50IgogKwotK2dkYl90ZXN0ICJwIHZhciIgIiA9IDEiCisrZ2RiX3Rlc3QgInAgYl9zdHJp bmciIHsgPSAoMHhbMC05YS1mXSsgKT8ic2Vlbm5vdHNlZW4ifQorK2dkYl90ZXN0ICJwdHlwZSBi X3N0cmluZyIge3R5cGUgPSBjaGFyIFxbXF19CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJpcHBlZC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uMWYwMmQ5MApA QCAtMjYxMTgsMjMyICs5MTU5LDYgQEAgaW5kZXggMDAwMDAwMC4uMGY0MzU2NAogKyAgaWYgKHgg KDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5uZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkg Y2FsbCBhYm9ydAogKyAgaWYgKHggKDMsIDEpIC5uZS4gMTApIGNhbGwgYWJvcnQKICtlbmQKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5m OTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5mOTAKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42MzY5ZDM0Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5mOTAK LUBAIC0wLDAgKzEsMjggQEAKLSshIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEgCi0rISBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyEgCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rbW9k dWxlIGxpYgotKyAgICAgICAgaW50ZWdlciA6OiB2YXJfaSA9IDEKLStjb250YWlucwotKyAgICAg ICAgc3Vicm91dGluZSBsaWJfZnVuYwotKyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMSkgY2FsbCBh Ym9ydAotKyAgICAgICAgdmFyX2kgPSAyCi0rICAgICAgICBlbmQgc3Vicm91dGluZSBsaWJfZnVu YwotK2VuZCBtb2R1bGUgbGliCi0rCi0rbW9kdWxlIGxpYm1hbnkKLSsgICAgICAgIGludGVnZXIg OjogdmFyX2ogPSAzCi0rICAgICAgICBpbnRlZ2VyIDo6IHZhcl9rID0gNAotK2VuZCBtb2R1bGUg bGlibWFueQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1t b2R1bGUtbWFpbi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxl LW1haW4uZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGU2M2E2NQot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1v ZHVsZS1tYWluLmY5MAotQEAgLTAsMCArMSwyMyBAQAotKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rISAKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rISAKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rISAKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLSsgICAgICAgIHVzZSBsaWIKLSsJdXNlIGxpYm1hbnksIG9ubHk6IHZhcl9qCi0r ICAgICAgICBpZiAodmFyX2kgLm5lLiAxKSBjYWxsIGFib3J0Ci0rCWNhbGwgbGliX2Z1bmMKLSsg ICAgICAgIGlmICh2YXJfaSAubmUuIDIpIGNhbGwgYWJvcnQKLSsgICAgICAgIGlmICh2YXJfaiAu bmUuIDMpIGNhbGwgYWJvcnQKLSsgICAgICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAg ICEgaS1pcy0yCi0rZW5kCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9s aWJyYXJ5LW1vZHVsZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9k dWxlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRiNGVhNGMKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1 bGUuZXhwCi1AQCAtMCwwICsxLDUzIEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0r c2V0IHRlc3RmaWxlICJsaWJyYXJ5LW1vZHVsZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS1t YWluLmY5MAotK3NldCBzcmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5mOTAKLStzZXQgbGliZmls ZSAke3Rlc3RmaWxlfS1saWIuc28KLStzZXQgYmluZmlsZSAke3Rlc3RmaWxlfQotKwotKyMgUmVx dWlyZWQgZm9yIC1mUElDIGJ5IGdkYl9jb21waWxlX3NobGliLgotK2lmIFtnZXRfY29tcGlsZXJf aW5mbyBub3QtdXNlZF0gewotKyAgIHdhcm5pbmcgIkNvdWxkIG5vdCBnZXQgY29tcGlsZXIgaW5m byIKLSsgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlX3NobGliICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjbGliZmlsZX0iICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZSB7 ZGVidWcgZjc3fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7 c3JjbGliZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIHByZXBhcmVfZm9yX3Rlc3Rp bmcgY2Fubm90IGJlIHVzZWQgYXMgbGlua2luZyB3aXRoICRsaWJmaWxlIGNhbm5vdCBiZSBwYXNz ZWQKLSsjIGp1c3QgZm9yIHRoZSBsaW5raW5nIHBoYXNlIChhbmQgbm90IHRoZSBzb3VyY2UgY29t cGlsYXRpb24gcGhhc2UpLiAgQW5kIGFueQotKyMgd2FybmluZ3Mgb24gaWdub3JlZCAkbGliZmls ZSBhYm9ydCB0aGUgcHJvY2Vzcy4KLSsKLStpZiAgeyBbZ2RiX2NvbXBpbGUgW2xpc3QgJHNyY2Rp ci8kc3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZV0gJG9iamRpci8kc3Vi ZGlyLyRiaW5maWxlIGV4ZWN1dGFibGUge2RlYnVnIGY3N31dICE9ICIiIH0gewotKyAgICB1bnRl c3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgotKyAgICByZXR1cm4gLTEKLSt9Ci0r Ci0rY2xlYW5fcmVzdGFydCAkYmluZmlsZQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsK LSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNv bnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpLWlz LTIiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJpLWlzLTIiICIuKmktaXMtMi4qIgot K2dkYl90ZXN0ICJwcmludCB2YXJfaSIgIiA9IDIiCi0rZ2RiX3Rlc3QgInByaW50IHZhcl9qIiAi ID0gMyIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2siICJObyBzeW1ib2wgXCJ2YXJfa1wiIGluIGN1 cnJlbnQgY29udGV4dFxcLiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L21vZHVsZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKLWluZGV4 IDBhY2NlNGYuLjVlMTAzNGYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L21vZHVsZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAot QEAgLTE1LDIxICsxNSw0MSBAQAotIAotIHNldCB0ZXN0ZmlsZSAibW9kdWxlIgotIHNldCBzcmNm aWxlICR7dGVzdGZpbGV9LmY5MAotLXNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KLSAKLS1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dICE9ICIi IH0gewotLSAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgotK2lmIHsg W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2Rl YnVnIGY3N31dIH0gewotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0tZ2RiX2V4aXQKLS1nZGJfc3Rh cnQKLS1nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLS1nZGJfbG9hZCAke2Jp bmZpbGV9Ci0tCi0gaWYgIVtydW50byBNQUlOX19dIHRoZW4gewotICAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKLSAgICAgY29udGludWUKLSB9Ci0gCi0tZ2Ri X3Rlc3QgInByaW50IGkiICIgPSA0MiIKLSsjIERvIG5vdCB1c2Ugc2ltcGxlIHNpbmdsZS1sZXR0 ZXIgbmFtZXMgYXMgR0RCIHdvdWxkIHBpY2sgdXAgZm9yIGV4cGVjdGVkbHkKLSsjIG5vbmV4aXN0 aW5nIHN5bWJvbHMgc29tZSBzdGF0aWMgdmFyaWFibGVzIGZyb20gc3lzdGVtIGxpYnJhcmllcyBk ZWJ1Z2luZm9zLgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpLWlz LTEiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJpLWlzLTEiICIuKmktaXMtMS4qIgot K2dkYl90ZXN0ICJwcmludCB2YXJfaSIgIiA9IDEiICJwcmludCB2YXJfaSB2YWx1ZSAxIgotKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpLWlzLTIiXQotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJpLWlzLTIiICIuKmktaXMtMi4qIgotK2dkYl90ZXN0ICJwcmlu dCB2YXJfaSIgIiA9IDIiICJwcmludCB2YXJfaSB2YWx1ZSAyIgotKwotK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJhLWItYy1kIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiYS1iLWMtZCIgIi4qYS1iLWMtZC4qIgotK2dkYl90ZXN0ICJwcmludCB2YXJfYSIgIk5v IHN5bWJvbCBcInZhcl9hXCIgaW4gY3VycmVudCBjb250ZXh0XFwuIgotK2dkYl90ZXN0ICJwcmlu dCB2YXJfYiIgIiA9IDExIgotK2dkYl90ZXN0ICJwcmludCB2YXJfYyIgIk5vIHN5bWJvbCBcInZh cl9jXCIgaW4gY3VycmVudCBjb250ZXh0XFwuIgotK2dkYl90ZXN0ICJwcmludCB2YXJfZCIgIiA9 IDEyIgotK2dkYl90ZXN0ICJwcmludCB2YXJfaSIgIiA9IDE0IiAicHJpbnQgdmFyX2kgdmFsdWUg MTQiCi0rCi0rIyBCcmVha3BvaW50IHdvdWxkIHdvcmsgaW4gbGFuZ3VhZ2UgImMiLgotK2dkYl90 ZXN0ICJzaG93IGxhbmd1YWdlIiB7VGhlIGN1cnJlbnQgc291cmNlIGxhbmd1YWdlIGlzICIoYXV0 bzsgY3VycmVudGx5ICk/Zm9ydHJhbiIufQotKwotKyMgZ2NjLTQuNC4yOiBUaGUgbWFpbiBwcm9n cmFtIGlzIGFsd2F5cyBNQUlOX18gaW4gLnN5bXRhYiBzbyAicnVudG8iIGFib3ZlCi0rIyB3b3Jr cy4gIEJ1dCBEV0FSRiBEV19UQUdfc3VicHJvZ3JhbSBjb250YWlucyB0aGUgbmFtZSBzcGVjaWZp ZWQgYnkKLSsjIHRoZSAicHJvZ3JhbSIgRm9ydHJhbiBzdGF0ZW1lbnQuCi0raWYgW2dkYl9icmVh a3BvaW50ICJtb2R1bGUiXSB7Ci0rICAgIHBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCBtb2R1 bGUiCi0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5 MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MAotaW5kZXggODFlZjM3Ni4u YTg0MjhjYiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5 MAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZjkwCi1AQCAtMTMsMTAg KzEzLDM5IEBACi0gISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0tbW9kdWxlIG1vZAot LSAgICAgICAgaW50ZWdlciA6OiBpID0gNDIKLS1lbmQgbW9kdWxlIG1vZAotK21vZHVsZSBtb2Qx Ci0rICAgICAgICBpbnRlZ2VyIDo6IHZhcl9pID0gMQotK2VuZCBtb2R1bGUgbW9kMQotIAotLSAg ICAgICAgdXNlIG1vZAotLSAgICAgICAgcHJpbnQgKiwgaQotK21vZHVsZSBtb2QyCi0rICAgICAg ICBpbnRlZ2VyIDo6IHZhcl9pID0gMgotK2VuZCBtb2R1bGUgbW9kMgotKwotK21vZHVsZSBtb2Rt YW55Ci0rICAgICAgICBpbnRlZ2VyIDo6IHZhcl9hID0gMTAsIHZhcl9iID0gMTEsIHZhcl9jID0g MTIsIHZhcl9pID0gMTQKLStlbmQgbW9kdWxlIG1vZG1hbnkKLSsKLSsgICAgICAgIHN1YnJvdXRp bmUgc3ViMQotKyAgICAgICAgdXNlIG1vZDEKLSsgICAgICAgIGlmICh2YXJfaSAubmUuIDEpIGNh bGwgYWJvcnQKLSsgICAgICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAgICAgICAgICAg ISBpLWlzLTEKLSsgICAgICAgIGVuZAotKwotKyAgICAgICAgc3Vicm91dGluZSBzdWIyCi0rICAg ICAgICB1c2UgbW9kMgotKyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMikgY2FsbCBhYm9ydAotKyAg ICAgICAgdmFyX2kgPSB2YXJfaSAgICAgICAgICAgICAgICAgICAgICAgICAhIGktaXMtMgotKyAg ICAgICAgZW5kCi0rCi0rICAgICAgICBwcm9ncmFtIG1vZHVsZQotKwotKyAgICAgICAgdXNlIG1v ZG1hbnksIG9ubHk6IHZhcl9iLCB2YXJfZCA9PiB2YXJfYywgdmFyX2kKLSsKLSsgICAgICAgIGNh bGwgc3ViMQotKyAgICAgICAgY2FsbCBzdWIyCi0rCi0rICAgICAgICBpZiAodmFyX2IgLm5lLiAx MSkgY2FsbCBhYm9ydAotKyAgICAgICAgaWYgKHZhcl9kIC5uZS4gMTIpIGNhbGwgYWJvcnQKLSsg ICAgICAgIGlmICh2YXJfaSAubmUuIDE0KSBjYWxsIGFib3J0Ci0rICAgICAgICB2YXJfYiA9IHZh cl9iICAgICAgICAgICAgICAgICAgICAgICAgICEgYS1iLWMtZAotIGVuZAogZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAu LmIxMTIwYzMKQEAgLTI2NDUyLDY0ICs5MjY3LDEyIEBAIGluZGV4IDAwMDAwMDAuLjIyNmRjNWQK ICsgIGggPSAnaCcKICsgIGNhbGwgZm9vIChnLCBoKQogK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2Vs ZnRlc3QuZXhwCi1pbmRleCA5ZTc4N2YwLi41Y2ExNWQ1IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3Nl bGZ0ZXN0LmV4cAotQEAgLTk1LDYgKzk1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9 IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHR0eWFyZyBpbml0aWFsaXphdGlvbiIK LSAJCXNldCBjb21tYW5kICJzdGVwIgotIAkgICAgfQotKwkgICAgLXJlICIuKnB5dGhvbl9zY3Jp cHQgPSAwLiokZ2RiX3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBw eXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAg ICB9Ci0gCSAgICAtcmUgIi4qdGltZV9hdF9zdGFydHVwID0gZ2V0X3J1bl90aW1lLiokZ2RiX3By b21wdCAkIiB7Ci0gCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBnZXRfcnVuX3RpbWUgYW5k IGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptYWluLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmph dmEvam1haW4uZXhwCi1pbmRleCBhYjk1MjQ3Li45ODE0OTIxIDEwMDY0NAotLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuamF2YS9qbWFpbi5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEv am1haW4uZXhwCi1AQCAtNjUsNyArNjUsNyBAQCBnZGJfdGVzdCAiYnJlYWsgam1haW4ubWFpbiIg IiR7YnBtYWlufSIKLSAKLSAjIENoZWNrIHRoYXQgYSBmdWxseSBxdWFsaWZpZWQgIm1haW4iIHdv cmtzLgotIGdkYl9sb2FkICIke2JpbmZpbGV9IgotLXNldCBjbWQgImJyZWFrIFwnJHt0ZXN0Zmls ZX0ubWFpbihqYXZhLmxhbmcuU3RyaW5nXFtcXSlcJyIKLStzZXQgY21kICJicmVhayAke3Rlc3Rm aWxlfS5tYWluKGphdmEubGFuZy5TdHJpbmdcW1xdKSIKLSBzZXQgbXNnICRjbWQKLSBnZGJfdGVz dF9tdWx0aXBsZSAkY21kICRtc2cgewotICAgICAtcmUgIiR7YnBtYWlufVxyXG4kZ2RiX3Byb21w dCAkIiB7Ci1AQCAtNzksNyArNzksNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRtc2cgewot IAlnZGJfdGVzdCAibiIgIiIgIiIKLSAKLSAJIyBDaGVjayBhZ2FpbiB3aXRoIGEgbWV0aG9kIHNp Z25hdHVyZSBhdCB0aGUgZW5kLgotLQlzZXQgY21kICJicmVhayBcJyR7dGVzdGZpbGV9Lm1haW4o amF2YS5sYW5nLlN0cmluZ1xbXF0pdm9pZFwnIgotKwlzZXQgY21kICJicmVhayAke3Rlc3RmaWxl fS5tYWluKGphdmEubGFuZy5TdHJpbmdcW1xdKXZvaWQiCi0gCXNldCBtc2cgJGNtZAotIAlnZGJf dGVzdF9tdWx0aXBsZSAkY21kICRtc2cgewotIAkgICAgLXJlICIke2JwbWFpbn1cclxuJGdkYl9w cm9tcHQgJCIgewotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAKLWluZGV4IDZmNzE4OGQuLmUzYWI2 NTcgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmV4cAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbWlzYy5leHAKLUBAIC03MSw4ICs3MSw4IEBAIGlmICFb c2V0X2xhbmdfamF2YV0gdGhlbiB7Ci0gICAgICMgc2lnbmF0dXJlLgotICAgICBydW50b19tYWlu Ci0gICAgIHNldCBmdW5jdGlvbiAiJHt0ZXN0ZmlsZX0ubWFpbihqYXZhLmxhbmcuU3RyaW5nXFtc XSkiCi0tICAgIGdkYl9icmVha3BvaW50ICJcJyRmdW5jdGlvblwnIiB7IGFsbG93LXBlbmRpbmcg fQotLSAgICBnZGJfYnJlYWtwb2ludCAiXCcke2Z1bmN0aW9ufXZvaWRcJyIgeyBhbGxvdy1wZW5k aW5nIH0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgIiRmdW5jdGlvbiIgeyBhbGxvdy1wZW5kaW5nIH0K LSsgICAgZ2RiX2JyZWFrcG9pbnQgIiR7ZnVuY3Rpb259dm9pZCIgeyBhbGxvdy1wZW5kaW5nIH0K LSAgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgJGZ1bmN0aW9uCi0gCi0gICAgIHNlbmRf Z2RiICJwdHlwZSBqbWlzY1xuIiAgIAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmph dmEvam5wZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwCiBuZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTcxMzkxZQoraW5kZXggMDAwMDAwMC4uNTVhYTgw ZAogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAot QEAgLTAsMCArMSw3NyBAQAorQEAgLTAsMCArMSw3NCBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjY1Mzks OSArOTMwMiw2IEBAIGluZGV4IDAwMDAwMDAuLmU3MTM5MWUKICsgICAgcmV0dXJuIC0xCiArfQog KwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKICsjIFN0YXJ0IHdpdGggYSBmcmVz aCBnZGIuCiArCiArZ2RiX2V4aXQKQEAgLTI2NjMxLDIxICs5MzkxLDYgQEAgaW5kZXggMDAwMDAw MC4uMzUyNDgzMAogKyAgICAgIH0KICsgIH0KICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuamF2YS9qcHJpbnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qcHJpbnQuZXhw Ci1pbmRleCAyOWRiZjRiLi40NDdjYTczIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu amF2YS9qcHJpbnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pwcmludC5leHAK LUBAIC03MCw4ICs3MCw4IEBAIGlmICFbc2V0X2xhbmdfamF2YV0gdGhlbiB7Ci0gICAgICMgc2ln bmF0dXJlLgotICAgICBydW50b19tYWluCi0gICAgIHNldCBmdW5jdGlvbiAiJHt0ZXN0ZmlsZX0u bWFpbihqYXZhLmxhbmcuU3RyaW5nXFtcXSkiCi0tICAgIGdkYl9icmVha3BvaW50ICJcJyRmdW5j dGlvblwnIiB7IGFsbG93LXBlbmRpbmcgfQotLSAgICBnZGJfYnJlYWtwb2ludCAiXCcke2Z1bmN0 aW9ufXZvaWRcJyIgeyBhbGxvdy1wZW5kaW5nIH0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgIiRmdW5j dGlvbiIgeyBhbGxvdy1wZW5kaW5nIH0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgIiR7ZnVuY3Rpb259 dm9pZCIgeyBhbGxvdy1wZW5kaW5nIH0KLSAgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg JGZ1bmN0aW9uCi0gCi0gICAgIGdkYl90ZXN0ICJwIGp2Y2xhc3MuYWRkcHJpbnQoNCw1LDYpIiAi c3VtIGlzIDE1XHJcbi4qIiAidW5hbWJpZ3VvdXMgc3RhdGljIGNhbGwiCiBkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAogaW5kZXggMDAwMDAwMC4uNzI5ZjQ1NwpAQCAtMjY4MjgsMjQ3ICs5NTczLDE0IEBA IGluZGV4IDAwMDAwMDAuLmU0OGQ1MjAKICsgIHByb2dyYW0gbWFpbgogKyAgY2FsbCBmICgnZm9v JykKICsgIGVuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKLWluZGV4IDJhM2VkMGQu LmZmNWRlMzMgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY21kLmV4 cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKLUBAIC0yMCwzNiAr MjAsMTUgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAot IH0KLSAKLS0jIFVzYWdlOiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7 SU5QVVQgUkVTVUxUfS4uLgotLSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9m IG11bHRpcGxlIGxpbmVzIG9mIGlucHV0LgotLSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVU LCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VMVC4KLS0jIFN1Y2NlZWQgaWYgYWxsIHJlc3Vs dHMgYXJlIHNlZW47IGZhaWwgb3RoZXJ3aXNlLgotLXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUg e25hbWUgYXJnc30gewotLSAgICBnbG9iYWwgZ2RiX3Byb21wdAotLSAgICBmb3JlYWNoIHtpbnB1 dCByZXN1bHR9ICRhcmdzIHsKLS0JaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1l IC0gJGlucHV0IiB7Ci0tCSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2Ri X3Byb21wdCB8ICo+KSQiIHsKLS0JCXBhc3MgIiRuYW1lIC0gJGlucHV0IgotLQkgICAgfQotLQl9 XX0gewotLQkgICAgcmV0dXJuIDEKLS0JfQotLSAgICB9Ci0tICAgIHJldHVybiAwCi0tfQotLQot ICMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSAKLSBnZGJfZXhpdAotIGdkYl9zdGFydAotIGdk Yl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIAotLWdkYl90ZXN0X211bHRpcGxl ICJweXRob24gcHJpbnQgJ2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7 Ci0tICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3Vw cG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0g ICAgfQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXt9Ci0raWYgIVtweXRob25fc3VwcG9ydGVk XSB0aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsg IHJldHVybiAtMQotIH0KLSAKLSAjIFRlc3QgYSBzaW1wbGUgY29tbWFuZC4KLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWZyYW1lLmV4cAotaW5kZXggODZmZTY2MC4uNGM3Mjk1ZiAxMDA2NDQKLS0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLUBAIC0yMCw0MCArMjAsMjggQEAgaWYgJHRy YWNlbGV2ZWwgdGhlbiB7Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAKLSsjIFN0YXJ0 IHdpdGggYSBmcmVzaCBnZGIuCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSsKLStpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRo ZW4gewotKyAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgotKyAgcmV0 dXJuIC0xCi0rfQotKwotIHNldCB0ZXN0ZmlsZSAicHktZnJhbWUiCi0gc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYwotIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K LSsKLSBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSAgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLSMg UnVuIGEgY29tbWFuZCBpbiBHREIsIGFuZCByZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4 Y2VwdGlvbiBpcyB0aHJvd24uCi0tIyBJZiByZXBvcnRfcGFzcyBpcyB0cnVlLCByZXBvcnQgYSBw YXNzIGlmIG5vIGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0tcHJvYyBnZGJfcHlfdGVzdF9zaWxlbnRf Y21kIHtjbWQgbmFtZSByZXBvcnRfcGFzc30gewotLSAgZ2xvYmFsIGdkYl9wcm9tcHQKLS0KLS0g IGdkYl90ZXN0X211bHRpcGxlICRjbWQgJG5hbWUgewotLSAgICAgIC1yZSAiVHJhY2ViYWNrLiok Z2RiX3Byb21wdCAkIiAgeyBmYWlsICRuYW1lIH0KLS0gICAgICAtcmUgIiRnZGJfcHJvbXB0ICQi CSAgICAgIHsgaWYgJHJlcG9ydF9wYXNzIHsgcGFzcyAkbmFtZSB9IH0KLS0gIH0KLS19Ci0tCi0t IyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotLQotLWdkYl9leGl0Ci0tZ2RiX3N0YXJ0Ci0tZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQot IAotLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgJ2hlbGxvLCB3b3JsZCEnIiAidmVy aWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9t cHQgJCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIK LS0gICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXt9Ci0t fQotLQotICMgVGhlIGZvbGxvd2luZyB0ZXN0cyByZXF1aXJlIGV4ZWN1dGlvbi4KLSAKLSBpZiAh W3J1bnRvX21haW5dIHRoZW4gewotQEAgLTY1LDE5ICs1MywyMCBAQCBnZGJfYnJlYWtwb2ludCAi ZjIiCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrcG9pbnQgYXQgZjIiCi0gZ2Ri X3Rlc3QgInVwIiAiIiAiIgotIAotLWdkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMSA9 IGdkYi5zZWxlY3RlZF9mcmFtZSAoKSIgImdldCBzZWNvbmQgZnJhbWUiIDAKLS1nZGJfcHlfdGVz dF9zaWxlbnRfY21kICJweXRob24gZjAgPSBmMS5uZXdlciAoKSIgImdldCBmaXJzdCBmcmFtZSIg MAotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmcmFtZXMgPSBnZGIuc2VsZWN0ZWRf dGhyZWFkICgpLmZyYW1lcyAoKSIgImdldCBmcmFtZXMgbGlzdCIgMQotK2dkYl90ZXN0ICJweXRo b24gcHJpbnQgZnJhbWVzIiAiXFwoPGdkYi5GcmFtZSBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpc XVxdKz4sIDxnZGIuRnJhbWUgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+LCA8Z2RiLkZy YW1lIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPlxcKSIgInZlcmlmeSBmcmFtZXMgbGlz dCIKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZjAgPSBmcmFtZXNcWzBcXSIgImdl dCBmaXJzdCBmcmFtZSIgMAotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMSA9IGZy YW1lc1xbMVxdIiAiZ2V0IHNlY29uZCBmcmFtZSIgMAotIAotIGdkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjEiICIgPSBGYWxzZSIgInRlc3QgZXF1YWxpdHkgY29tcGFy aXNvbiAoZmFsc2UpIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0g ZjAiICIgPSBUcnVlIiAidGVzdCBlcXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKLS1nZGJfdGVz dCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYxIiAiID0gVHJ1ZSIgInRlc3QgaW5l cXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKLS1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1 bHQgPScsIGYwICE9IGYwIiAiID0gRmFsc2UiICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAo ZmFsc2UpIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQg KCkiICIgPSBUcnVlIiAidGVzdCBGcmFtZS5pc192YWxpZCIKLSBnZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwLm5hbWUgKCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKLSBn ZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1B TF9GUkFNRSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLnR5cGUiCi0gZ2RiX3Rlc3QgInB5dGhvbiBw cmludCAncmVzdWx0ID0nLCBmMC51bndpbmRfc3RvcF9yZWFzb24gKCkgPT0gZ2RiLkZSQU1FX1VO V0lORF9OT19SRUFTT04iICIgPSBUcnVlIiAidGVzdCBGcmFtZS50eXBlIgotIGdkYl90ZXN0ICJw eXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLmZyYW1lX3N0b3BfcmVhc29uX3N0cmluZyAoZ2Ri LkZSQU1FX1VOV0lORF9JTk5FUl9JRCkiICIgPSBwcmV2aW91cyBmcmFtZSBpbm5lciB0byB0aGlz IGZyYW1lIFxcKGNvcnJ1cHQgc3RhY2tcXD9cXCkiICJ0ZXN0IGdkYi5mcmFtZV9zdG9wX3JlYXNv bl9zdHJpbmciCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5wYyAoKSIg IiA9IFxbMC05XF0rIiAidGVzdCBGcmFtZS5wYyIKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwLmZ1bmN0aW9uICgpIiAiID0gc3ltYm9sIGZvciBmMiIgInRlc3QgRnJhbWUu ZnVuY3Rpb24iCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5vbGRlciAo KSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLm9sZGVyIgotIGdkYl90ZXN0ICJweXRob24g cHJpbnQgJ3Jlc3VsdCA9JywgZjEubmV3ZXIgKCkgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBGcmFt ZS5uZXdlciIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFy ICgndmFyaWFibGVfd2hpY2hfc3VyZWx5X2RvZXNudF9leGlzdCcpIiBcCi1AQCAtODUsNCArNzQs NyBAQCBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFy aWFibGVfd2hpY2hfc3VyZWx5X2RvZXNudF9leAotICAgInRlc3QgRnJhbWUucmVhZF92YXIgLSBl cnJvciIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgn YScpIiAiID0gMSIgInRlc3QgRnJhbWUucmVhZF92YXIgLSBzdWNjZXNzIgotIAotK2dkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX3RocmVhZCAoKS5uZXdlc3Rf ZnJhbWUgKCkgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBnZGIubmV3ZXN0X2ZyYW1lIgotIGdkYl90 ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYx IiAiID0gVHJ1ZSIgInRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1lIgotKwotK2dkYl90ZXN0ICJweXRo b24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAw eFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1mdW5jdGlvbi5leHAKLWluZGV4IDQ2MTI5NWQuLmVhMzM1OTYgMTAwNjQ0Ci0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhwCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhwCi1AQCAtMjAsMzYgKzIwLDE1IEBA IGlmICR0cmFjZWxldmVsIHRoZW4gewotICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSB9Ci0gCi0t IyBVc2FnZTogZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgTkFNRSBJTlBVVCBSRVNVTFQge0lOUFVUIFJF U1VMVH0uLi4KLS0jIFJ1biBhIHRlc3QgbmFtZWQgTkFNRSwgY29uc2lzdGluZyBvZiBtdWx0aXBs ZSBsaW5lcyBvZiBpbnB1dC4KLS0jIEFmdGVyIGVhY2ggaW5wdXQgbGluZSBJTlBVVCwgc2VhcmNo IGZvciByZXN1bHQgbGluZSBSRVNVTFQuCi0tIyBTdWNjZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBz ZWVuOyBmYWlsIG90aGVyd2lzZS4KLS1wcm9jIGdkYl9weV90ZXN0X211bHRpcGxlIHtuYW1lIGFy Z3N9IHsKLS0gICAgZ2xvYmFsIGdkYl9wcm9tcHQKLS0gICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0 fSAkYXJncyB7Ci0tCWlmIHtbZ2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1 dCIgewotLQkgICAgLXJlICJcW1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQg fCAqPikkIiB7Ci0tCQlwYXNzICIkbmFtZSAtICRpbnB1dCIKLS0JICAgIH0KLS0JfV19IHsKLS0J ICAgIHJldHVybiAxCi0tCX0KLS0gICAgfQotLSAgICByZXR1cm4gMAotLX0KLS0KLSAjIFN0YXJ0 IHdpdGggYSBmcmVzaCBnZGIuCi0gCi0gZ2RiX2V4aXQKLSBnZGJfc3RhcnQKLSBnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSAKLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9u IHByaW50ICdoZWxsbywgd29ybGQhJyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAt cmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAi cHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0g ICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQotK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7 Ci0rICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4g LTEKLSB9Ci0gCi0gZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgImlucHV0IGNvbnZlbmllbmNlIGZ1bmN0 aW9uIiBcCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZmVyaW9y LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuYwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBiNDgyOTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5jCi1AQCAtMCwwICsxLDQ5IEBACi0r I2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRp bnQuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2RlZmluZSBDSFVOS19TSVpFIDE2MDAw IC8qIHNhbWUgYXMgZmluZGNtZC5jJ3MgKi8KLSsjZGVmaW5lIEJVRl9TSVpFICgyICogQ0hVTktf U0laRSkgLyogYXQgbGVhc3QgdHdvIGNodW5rcyAqLwotKwotK3N0YXRpYyBpbnQ4X3QgaW50OF9z ZWFyY2hfYnVmWzEwMF07Ci0rc3RhdGljIGludDE2X3QgaW50MTZfc2VhcmNoX2J1ZlsxMDBdOwot K3N0YXRpYyBpbnQzMl90IGludDMyX3NlYXJjaF9idWZbMTAwXTsKLStzdGF0aWMgaW50NjRfdCBp bnQ2NF9zZWFyY2hfYnVmWzEwMF07Ci0rCi0rc3RhdGljIGNoYXIgKnNlYXJjaF9idWY7Ci0rc3Rh dGljIGludCBzZWFyY2hfYnVmX3NpemU7Ci0rCi0rc3RhdGljIGludCB4OwotKwotKwotK2ludCBm MiAoaW50IGEpCi0rewotKyAgY2hhciAqc3RyID0gImhlbGxvLCB0ZXN0c3VpdGUiOwotKwotKyAg cHV0cyAoc3RyKTsJLyogQnJlYWsgaGVyZS4gICovCi0rCi0rICByZXR1cm4gKythOwotK30KLSsK LStpbnQgZjEgKGludCBhLCBpbnQgYikKLSt7Ci0rICByZXR1cm4gZjIoYSkgKyBiOwotK30KLSsK LStzdGF0aWMgdm9pZAotK2luaXRfYnVmcyAoKQotK3sKLSsgIHNlYXJjaF9idWZfc2l6ZSA9IEJV Rl9TSVpFOwotKyAgc2VhcmNoX2J1ZiA9IG1hbGxvYyAoc2VhcmNoX2J1Zl9zaXplKTsKLSsgIGlm IChzZWFyY2hfYnVmID09IE5VTEwpCi0rICAgIGV4aXQgKDEpOwotKyAgbWVtc2V0IChzZWFyY2hf YnVmLCAneCcsIHNlYXJjaF9idWZfc2l6ZSk7Ci0rfQotKwotK2ludCBtYWluIChpbnQgYXJnYywg Y2hhciAqYXJndltdKQotK3sKLSsgIGluaXRfYnVmcyAoKTsKLSsKLSsgIHJldHVybiBmMSAoMSwg Mik7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlv ci5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuZXhwCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5wYXNjYWwvYXJyYXlzLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjcxOWIxNzgKK2luZGV4IDAwMDAwMDAuLmNjYzZlMWUKIC0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5leHAKLUBAIC0wLDAgKzEsMjAx IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAorQEAgLTAsMCAr MSwxMDQgQEAKKysjIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKyMKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK QEAgLTI3MDgyLDQxOCArOTU5NCwxODMgQEAgaW5kZXggMDAwMDAwMC4uNzE5YjE3OAogKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdE QiB0ZXN0c3VpdGUuICBJdCB0ZXN0cyB0aGUgbWVjaGFuaXNtCi0rIyBleHBvc2luZyBpbmZlcmlv cnMgdG8gUHl0aG9uLgotKwogK2lmICR0cmFjZWxldmVsIHRoZW4gewogKyAgICBzdHJhY2UgJHRy YWNlbGV2ZWwKICt9CiArCi0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgorK2xvYWRfbGliICJw YXNjYWwuZXhwIgogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCisrc2V0IHRlc3RmaWxlICJhcnJheXMiCisrc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0ucGFzCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfSRFWEVFWFQKICsKLStpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4gewotKyAgdW5zdXBw b3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgorKyMgVGhlc2UgdGVzdHMgb25seSB3 b3JrIHdpdGggZnBjLCB1c2luZyB0aGUgLWd3MyBjb21waWxlLW9wdGlvbgorK3Bhc2NhbF9pbml0 CisraWYgeyAkcGFzY2FsX2NvbXBpbGVyX2lzX2ZwYyAhPSAxIH0gewogKyAgcmV0dXJuIC0xCiAr fQogKwotK3NldCB0ZXN0ZmlsZSAicHktaW5mZXJpb3IiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLStp ZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9sb2Fk ICR7YmluZmlsZX0KLSsKLSsjIFRoZSBmb2xsb3dpbmcgdGVzdHMgcmVxdWlyZSBleGVjdXRpb24u Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1h aW4iCi0rICAgIHJldHVybiAwCi0rfQotKwotK3J1bnRvIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJC cmVhayBoZXJlLiJdCi0rCi0rIyBUZXN0IGJhc2ljIGdkYi5JbmZlcmlvciBhdHRyaWJ1dGVzIGFu ZCBtZXRob2RzLgotKwotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBpbmZlcmlvcnMg PSBnZGIuaW5mZXJpb3JzICgpIiAiZ2V0IGluZmVyaW9ycyBsaXN0IiAxCi0rZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCBpbmZlcmlvcnMiICJcXCg8Z2RiLkluZmVyaW9yIG9iamVjdCBhdCAweFxbXFs6 eGRpZ2l0OlxdXF0rPixcXCkiICJ2ZXJpZnkgaW5mZXJpb3JzIGxpc3QiCi0rZ2RiX3B5X3Rlc3Rf c2lsZW50X2NtZCAicHl0aG9uIGkwID0gaW5mZXJpb3JzXFswXF0iICJnZXQgZmlyc3QgaW5mZXJp b3IiIDAKLSsKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGkwID09IGluZmVy aW9yc1xbMFxdIiAiID0gVHJ1ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSkiCi0r Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBpMC5udW0iICIgPSBcWzAtOVxdKyIg InRlc3QgSW5mZXJpb3IubnVtIgotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9Jywg aTAucGlkIiAiID0gXFswLTlcXSsiICJ0ZXN0IEluZmVyaW9yLnBpZCIKLStnZGJfdGVzdCAicHl0 aG9uIHByaW50ICdyZXN1bHQgPScsIGkwLndhc19hdHRhY2hlZCIgIiA9IEZhbHNlIiAidGVzdCBJ bmZlcmlvci53YXNfYXR0YWNoZWQiCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBpMC50aHJlYWRz ICgpIiAiXFwoPGdkYi5JbmZlcmlvclRocmVhZCBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxd Kz4sXFwpIiAidGVzdCBJbmZlcmlvci50aHJlYWRzIgotKwotKyMgVGVzdCBtZW1vcnkgcmVhZCBh bmQgd3JpdGUgb3BlcmF0aW9ucy4KLSsKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24g YWRkciA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ3N0cicpIiBcCi0rICAicmVh ZCBzdHIgYWRkcmVzcyIgMAotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBzdHIgPSBn ZGIuaW5mZXJpb3JzKClcWzBcXS5yZWFkX21lbW9yeSAoYWRkciwgNSkiIFwKLSsgICJyZWFkIHN0 ciBjb250ZW50cyIgMQotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBzdHJcWzFcXSA9 ICdhJyIgImNoYW5nZSBzdHIiIDAKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZ2Ri LmluZmVyaW9ycygpXFswXF0ud3JpdGVfbWVtb3J5IChhZGRyLCBzdHIpIiBcCi0rICAid3JpdGUg c3RyIiAxCi0rZ2RiX3Rlc3QgInByaW50IHN0ciIgIiA9IDB4XFtcWzp4ZGlnaXQ6XF1cXSsgXCJo YWxsbywgdGVzdHN1aXRlXCIiIFwKLSsgICJlbnN1cmUgc3RyIHdhcyBjaGFuZ2VkIGluIHRoZSBp bmZlcmlvciIKLSsKLSsjIFRlc3QgbWVtb3J5IHNlYXJjaC4KLSsKLStzZXQgaGV4X251bWJlciB7 MHhbMC05YS1mQS1GXVswLTlhLWZBLUZdKn0KLStzZXQgZGVjX251bWJlciB7WzAtOV0rfQotK3Nl dCBoaXN0b3J5X3ByZWZpeCB7WyRdWzAtOV0qID0gfQotK3NldCBuZXdsaW5lIHtbXHJcbl0rfQot K3NldCBwYXR0ZXJuX25vdF9mb3VuZCAiJHtuZXdsaW5lfS5dIgotK3NldCBvbmVfcGF0dGVybl9m b3VuZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TF0iCi0rc2V0IHR3b19wYXR0ZXJuc19mb3Vu ZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TCwgJHtkZWNfbnVtYmVyfUxdIgotKwotKyMgVGVz dCBzdHJpbmcgcGF0dGVybi4KLSsKLStnZGJfdGVzdCAic2V0ICooaW50MzJfdCopICZpbnQ4X3Nl YXJjaF9idWZcWzEwXF0gPSAweDYxNjE2MTYxIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hf YnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50OF9zZWFyY2hfYnVmJyki ICIiICIiCi0rZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBzZWFyY2hfYnVmLmFkZHJlc3MiICIi ICIiCi0rZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IHNlYXJjaF9idWYudHlwZS5zaXplb2YiICIiICIi Ci0rCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1v cnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgJ2FhYScpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91 bmR9IiAiZmluZCBzdHJpbmcgcGF0dGVybiIKLSsKLSsjIFRlc3Qgbm90IGZpbmRpbmcgcGF0dGVy biBiZWNhdXNlIHNlYXJjaCByYW5nZSB0b28gc21hbGwsIHdpdGgKLSsjIHBvdGVudGlhbCBmaW5k IGF0IHRoZSBlZGdlIG9mIHRoZSByYW5nZS4KLSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmlu ZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgMTArMywgJ2FhYWEnKSIg XAotKyAgIiR7cGF0dGVybl9ub3RfZm91bmR9IiAicGF0dGVybiBub3QgZm91bmQgYXQgZW5kIG9m IHJhbmdlIgotKwotKyMgSW5jcmVhc2UgdGhlIHNlYXJjaCByYW5nZSBieSAxIGFuZCB3ZSBzaG91 bGQgZmluZCB0aGUgcGF0dGVybi4KLSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9y cygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgMTArMysxLCBcWydhJywgJ2EnLCAn YScsICdhJ1xdKSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAicGF0dGVybiBmb3VuZCBh dCBlbmQgb2YgcmFuZ2UiCi0rCi0rIyBUZXN0IG1heC1jb3VudCB3aXRoIHNpemUsIHdpdGggZGlm ZmVyZW50IHBhcmFtZXRlciBwb3NpdGlvbgotKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5m ZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIFxbMHg2MSwg MHg2MVxdLCAxLCAxKSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAic2l6ZSA9IDEsIG1h eF9jb3VudCA9IDEiCi0rCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxd LnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIDEsIDIp IiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAic2l6ZSA9IDEsIG1heF9jb3VudCA9IDIs IG5vcm1hbCBvcmRlcmluZyIKLSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygp XFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwg c2l6ZSA9IDEsIG1heF9jb3VudCA9IDIpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAi c2l6ZSA9IDEsIG1heF9jb3VudCA9IDIsIG5vcm1hbCBvcmRlcmluZywgd2l0aCBrZXl3b3JkcyIK LSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9y eSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwgbWF4X2NvdW50ID0gMiwgc2l6 ZSA9IDEpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAic2l6ZSA9IDEsIG1heF9jb3Vu dCA9IDIsIGludmVydGVkIG9yZGVyaW5nIgotKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5m ZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIFxbJ2EnLCAn YSdcXSwgbWF4X2NvdW50ID0gMikiIFwKLSsgICIke3R3b19wYXR0ZXJuc19mb3VuZH0iICJtYXhf Y291bnQgPSAyLCB3aXRoIGtleXdvcmQiCi0rCi0rIyBUZXN0IDE2LWJpdCBwYXR0ZXJuLgotKwot K2dkYl90ZXN0ICJzZXQgaW50MTZfc2VhcmNoX2J1ZlxbMTBcXSA9IDB4MTIzNCIgIiIgIiIKLStn ZGJfdGVzdCAicHkgc2VhcmNoX2J1ZiA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAo J2ludDE2X3NlYXJjaF9idWYnKSIgIiIgIiIKLStnZGJfdGVzdCAicHkgc3RhcnRfYWRkciA9IHNl YXJjaF9idWYuYWRkcmVzcyIgIiIgIiIKLStnZGJfdGVzdCAicHkgbGVuZ3RoID0gc2VhcmNoX2J1 Zi50eXBlLnNpemVvZiIgIiIgIiIKLStnZGJfdGVzdCAicHkgcGF0dGVybiA9IGdkYi5wYXJzZV9h bmRfZXZhbCAoJyhpbnQxNl90KSAweDEyMzQnKSIgIiIgIiIKLSsKLStnZGJfdGVzdCAicHkgcHJp bnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3Ro LCAweDEyMzQsIDIpIiBcCi0rICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDE2LWJpdCBw YXR0ZXJuLCB3aXRoIHB5dGhvbiBwYXR0ZXJuIgotKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIu aW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIHBhdHRl cm4pIiBcCi0rICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDE2LWJpdCBwYXR0ZXJuLCB3 aXRoIHZhbHVlIHBhdHRlcm4iCi0rCi0rIyBUZXN0IDMyLWJpdCBwYXR0ZXJuLgotKwotK2dkYl90 ZXN0ICJzZXQgaW50MzJfc2VhcmNoX2J1ZlxbMTBcXSA9IDB4MTIzNDU2NzgiICIiICIiCi0rZ2Ri X3Rlc3QgInB5IHNlYXJjaF9idWYgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdp bnQzMl9zZWFyY2hfYnVmJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBzZWFy Y2hfYnVmLmFkZHJlc3MiICIiICIiCi0rZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IHNlYXJjaF9idWYu dHlwZS5zaXplb2YiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHBhdHRlcm4gPSBnZGIucGFyc2VfYW5k X2V2YWwgKCcoaW50MzJfdCkgMHgxMjM0NTY3OCcpIiAiIiAiIgotKwotK2dkYl90ZXN0ICJweSBw cmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5n dGgsIDB4MTIzNDU2NzgsIDQpIiBcCi0rICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDMy LWJpdCBwYXR0ZXJuLCB3aXRoIHB5dGhvbiBwYXR0ZXJuIgotK2dkYl90ZXN0ICJweSBwcmludCBn ZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIHBh dHRlcm4pIiBcCi0rICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDMyLWJpdCBwYXR0ZXJu LCB3aXRoIHZhbHVlIHBhdHRlcm4iCi0rCi0rIyBUZXN0IDY0LWJpdCBwYXR0ZXJuLgotKwotK2dk Yl90ZXN0ICJzZXQgaW50NjRfc2VhcmNoX2J1ZlxbMTBcXSA9IDB4ZmVkY2JhOTg3NjU0MzIxMExM IiAiIiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgp LnJlYWRfdmFyICgnaW50NjRfc2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFy dF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNzIiAiIiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGgg PSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAiIiAiIgotK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0g Z2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDY0X3QpIDB4ZmVkY2JhOTg3NjU0MzIxMExMJykiICIi ICIiCi0rCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9t ZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgMHhmZWRjYmE5ODc2NTQzMjEwLCA4KSIgXAotKyAg IiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCBweXRob24g cGF0dGVybiIKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNo X21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBwYXR0ZXJuKSIgXAotKyAgIiR7b25lX3BhdHRl cm5fZm91bmR9IiAiZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgotKwot KyMgVGVzdCBtaXhlZC1zaXplZCBwYXR0ZXJucy4KLSsKLStnZGJfdGVzdCAic2V0ICooaW50OF90 KikgJnNlYXJjaF9idWZcWzEwXF0gPSAweDYyIiAiIiAiIgotK2dkYl90ZXN0ICJzZXQgKihpbnQx Nl90KikgJnNlYXJjaF9idWZcWzExXF0gPSAweDYzNjMiICIiICIiCi0rZ2RiX3Rlc3QgInNldCAq KGludDMyX3QqKSAmc2VhcmNoX2J1ZlxbMTNcXSA9IDB4NjQ2NDY0NjQiICIiICIiCi0rZ2RiX3Rl c3QgInB5IHNlYXJjaF9idWYgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdzZWFy Y2hfYnVmJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBzZWFyY2hfYnVmXFsw XF0uYWRkcmVzcyIgIiIgIiIKLStnZGJfdGVzdCAicHkgcGF0dGVybjEgPSBnZGIucGFyc2VfYW5k X2V2YWwgKCcoaW50OF90KSAweDYyJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHBhdHRlcm4yID0g Z2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDE2X3QpIDB4NjM2MycpIiAiIiAiIgotK2dkYl90ZXN0 ICJweSBwYXR0ZXJuMyA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJyhpbnQzMl90KSAweDY0NjQ2NDY0 JykiICIiICIiCi0rCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNl YXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIDEwMCwgXFtwYXR0ZXJuMSwgcGF0dGVybjIsIHBhdHRl cm4zXF0pIiBcCi0rICAgICIke29uZV9wYXR0ZXJuX2ZvdW5kfSIgImZpbmQgbWl4ZWQtc2l6ZWQg cGF0dGVybiIKLSsKLSsjIFRlc3Qgc2VhcmNoIHNwYW5uaW5nIGEgbGFyZ2UgcmFuZ2UsIGluIHRo ZSBwYXJ0aWN1bGFyIGNhc2Ugb2YgbmF0aXZlCi0rIyB0YXJnZXRzLCB0ZXN0IHRoZSBzZWFyY2gg c3Bhbm5pbmcgbXVsdGlwbGUgY2h1bmtzLgotKyMgUmVtb3RlIHRhcmdldHMgbWF5IGltcGxlbWVu dCB0aGUgc2VhcmNoIGRpZmZlcmVudGx5LgotKwotK3NldCBDSFVOS19TSVpFIDE2MDAwIDsKLSsK LStnZGJfdGVzdCAic2V0ICooaW50MzJfdCopICZzZWFyY2hfYnVmXFswKiR7Q0hVTktfU0laRX0r MTAwXF0gPSAweDEyMzQ1Njc4IiAiIiAiIgotK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNl YXJjaF9idWZcWzEqJHtDSFVOS19TSVpFfSsxMDBcXSA9IDB4MTIzNDU2NzgiICIiICIiCi0rZ2Ri X3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdz ZWFyY2hfYnVmJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IGdkYi5zZWxlY3RlZF9m cmFtZSAoKS5yZWFkX3ZhciAoJ3NlYXJjaF9idWZfc2l6ZScpIiAiIiAiIgotKwotK2dkYl90ZXN0 ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRy LCBsZW5ndGgsIDB4MTIzNDU2NzgsIDQpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAi c2VhcmNoIHNwYW5uaW5nIGxhcmdlIHJhbmdlIgotKwotKyMgRm9yIG5hdGl2ZSB0YXJnZXRzLCB0 ZXN0IGEgcGF0dGVybiBzdHJhZGRsaW5nIGEgY2h1bmsgYm91bmRhcnkuCi0rCi0raWYgW2lzbmF0 aXZlXSB7Ci0rICAgIGdkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWyR7Q0hV TktfU0laRX0tMVxdID0gMHhmZGI5NzUzMSIgIiIgIiIKLSsKLSsgICAgZ2RiX3Rlc3QgInB5IHBy aW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0 aCwgMHhmZGI5NzUzMSwgNCkiIFwKLSsgICAgICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5k IHBhdHRlcm4gc3RyYWRkbGluZyBjaHVuayBib3VuZGFyeSIKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVhZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWluZnRocmVhZC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uMjJlYjlmMgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWluZnRocmVhZC5jCi1AQCAtMCwwICsxLDE0IEBACi0raW50IGYyIChpbnQgYSkKLSt7Ci0r ICByZXR1cm4gKythOwotK30KLSsKLStpbnQgZjEgKGludCBhLCBpbnQgYikKLSt7Ci0rICByZXR1 cm4gZjIoYSkgKyBiOwotK30KLSsKLStpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK LSt7Ci0rICByZXR1cm4gZjEgKDEsIDIpOworKyMgRGV0ZWN0IGlmIHRoZSBmcGMgdmVyc2lvbiBp cyBiZWxvdyAyLjMuMAorK3NldCBmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5 cyAxCisraWYgeyAoJGZwY3ZlcnNpb25fbWFqb3IgPCAyKSB8fCAoICgkZnBjdmVyc2lvbl9tYWpv ciA9PSAyKSAmJiAoJGZwY3ZlcnNpb25fbWlub3IgPCAzKSl9ICB7CisrICBzZXQgZnBjX2dlbmVy YXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgMAogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktaW5mdGhyZWFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1pbmZ0aHJlYWQuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uZTlkMThiNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWluZnRocmVhZC5leHAKLUBAIC0wLDAgKzEsNTggQEAKLSsjIENvcHlyaWdodCAoQykgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCiArCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4g IEl0IHRlc3RzIHRoZSBtZWNoYW5pc20KLSsjIGV4cG9zaW5nIGluZmVyaW9yIHRocmVhZHMgdG8g UHl0aG9uLgogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2 ZWwKKytpZiB7W2dkYl9jb21waWxlX3Bhc2NhbCAiLWd3MyAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIF1dICE9ICIiIH0g eworKyAgcmV0dXJuIC0xCiArfQogKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSsKICtn ZGJfZXhpdAogK2dkYl9zdGFydAogK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgorK2dkYl9sb2FkICR7YmluZmlsZX0KKytzZXQgYnBfbG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJzZXQgYnJlYWtwb2ludCAxIGhlcmUiXQorK3NldCBicF9sb2NhdGlvbjIgW2dkYl9n ZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDIgaGVyZSJdCiArCi0raWYgIVtweXRob25f c3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNh YmxlZCIKLSsgIHJldHVybiAtMQotK30KICsKLStzZXQgdGVzdGZpbGUgInB5LWluZnRocmVhZCIK LStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQorK2lmIHsgW2dkYl9icmVha3BvaW50ICR7c3JjZmlsZX06JHticF9s b2NhdGlvbjF9XSB9IHsKKysgICAgcGFzcyAic2V0dGluZyBicmVha3BvaW50IDEiCisrfQorK2lm IHsgW2dkYl9icmVha3BvaW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjJ9XSB9IHsKKysgICAg cGFzcyAic2V0dGluZyBicmVha3BvaW50IDIiCisrfQogKwotK2lmIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtk ZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Zp bGV9IgorKyMgVmVyaWZ5IHRoYXQgInN0YXJ0IiBsYW5kcyBpbnNpZGUgdGhlIHJpZ2h0IHByb2Nl ZHVyZS4KKytpZiB7IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7CisrICAgIHVudGVzdGVkIHN0YXJ0 CiArICAgIHJldHVybiAtMQogK30KICsKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrZ2RiX3Rlc3Qg IiIgIi4qIGF0IC4qJHtzcmNmaWxlfS4qIiAic3RhcnQiCiArCi0rIyBUaGUgZm9sbG93aW5nIHRl c3RzIHJlcXVpcmUgZXhlY3V0aW9uLgorK2dkYl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjok e2JwX2xvY2F0aW9uMX0uKiIgIkdvaW5nIHRvIGZpcnN0IGJyZWFrcG9pbnQiCiArCi0raWYgIVty dW50b19tYWluXSB0aGVuIHsKLSsgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCi0rICAgIHJl dHVybiAwCi0rfQorK2dkYl90ZXN0ICJwcmludCBTdGF0QXJySW50IiAiLiogPSBcXHs1MCwgNTEs IDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxXFx9IiAiUHJpbnQgc3RhdGlj IGFycmF5IG9mIGludGVnZXIgdHlwZSIKKytnZGJfdGVzdCAicHJpbnQgU3RhdEFyckludF8iICIu KiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0i ICJQcmludCBzdGF0aWMgYXJyYXkgb2YgaW50ZWdlciIKICsKLStydW50byBbZ2RiX2dldF9saW5l X251bWJlciAiQnJlYWsgaGVyZS4iXQotKwotKyMgVGVzdCBiYXNpYyBnZGIuSW5mZXJpb3IgYXR0 cmlidXRlcyBhbmQgbWV0aG9kcy4KLSsKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24g dDAgPSBnZGIuc2VsZWN0ZWRfdGhyZWFkICgpIiAidGVzdCBnZGIuc2VsZWN0ZWRfdGhyZWFkIiAx Ci0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCB0MCIgIlxcPGdkYi5JbmZlcmlvclRocmVhZCBvYmpl Y3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4iICJ2ZXJpZnkgSW5mZXJpb3JUaHJlYWQgb2JqZWN0 IgotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgdDAubnVtIiAiID0gXFswLTlc XSsiICJ0ZXN0IEluZmVyaW9yLm51bSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktcHJldHR5cHJpbnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXBy ZXR0eXByaW50LmV4cAotaW5kZXggMjYyNjg5NS4uY2QwZDdlNyAxMDA2NDQKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKLUBAIC0yNywxMiArMjcsMjAgQEAgc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotICMgU3RhcnQgd2l0aCBh IGZyZXNoIGdkYi4KLSBnZGJfZXhpdAotIGdkYl9zdGFydAotLWdkYl90ZXN0X211bHRpcGxlICJw eXRob24gcHJpbnQgJ2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0t ICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9y dGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAg fQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXt9Ci0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0 aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJl dHVybiAtMQotK30KKytnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHticF9sb2NhdGlv bjJ9LioiICJHb2luZyB0byBzZWNvbmQgYnJlYWtwb2ludCIKICsKLSsjIFJ1biBhIGNvbW1hbmQg aW4gR0RCLCBhbmQgcmVwb3J0IGEgZmFpbHVyZSBpZiBhIFB5dGhvbiBleGNlcHRpb24gaXMgdGhy b3duLgotKyMgSWYgcmVwb3J0X3Bhc3MgaXMgdHJ1ZSwgcmVwb3J0IGEgcGFzcyBpZiBubyBleGNl cHRpb24gaXMgdGhyb3duLgotK3Byb2MgZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCB7Y21kIG5hbWUg cmVwb3J0X3Bhc3N9IHsKLSsgIGdsb2JhbCBnZGJfcHJvbXB0CisrZ2RiX3Rlc3QgInByaW50IFN0 YXRBcnJDaGFyIiAiLiogPSAnYWJjZGVmZ2hpamtsJyIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBj aGFyIgorK2dkYl90ZXN0ICJwcmludCBTdGF0MmRBcnJJbnQiICIuKiA9IFxce1xcezAsIDEsIDIs IDMsIDRcXH0sIFxcezEsIDIsIDMsIDQsIDVcXH0sIFxcezIsIDMsIDQsIDUsIDZcXH0sIFxcezMs IDQsIDUsIDYsIDdcXH0sIFxcezQsIDUsIDYsIDcsIDhcXH0sIFxcezUsIDYsIDcsIDgsIDlcXH0s IFxcezYsIDcsIDgsIDksIDEwXFx9LCBcXHs3LCA4LCA5LCAxMCwgMTFcXH0sIFxcezgsIDksIDEw LCAxMSwgMTJcXH0sIFxcezksIDEwLCAxMSwgMTIsIDEzXFx9LCBcXHsxMCwgMTEsIDEyLCAxMywg MTRcXH0sIFxcezExLCAxMiwgMTMsIDE0LCAxNVxcfVxcfSIgIlByaW50IHN0YXRpYyAyLWRpbWVu c2lvbmFsIGFycmF5IG9mIGludGVnZXIiCiArCi0rICBnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRu YW1lIHsKLSsgICAgICAtcmUgIlRyYWNlYmFjay4qJGdkYl9wcm9tcHQgJCIgIHsgZmFpbCAkbmFt ZSB9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIgkgICAgICB7IGlmICRyZXBvcnRfcGFzcyB7 IHBhc3MgJG5hbWUgfSB9Ci0rICB9Ci0gfQotIAotICMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFu ZCByZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJvd24uCi1AQCAt MTA1LDYgKzExMyw4IEBAIHByb2MgcnVuX2xhbmdfdGVzdHMge2xhbmd9IHsKLSAgICAgZ2RiX3Rl c3QgInByaW50IGVzdHJpbmciICJcImVtYmVkZGVkIHhcXFxcMjAxXFxcXDIwMlxcXFwyMDNcXFxc MjA0XCIiCi0gICAgIGdkYl90ZXN0ICJwcmludCBjIiAiID0gY29udGFpbmVyIFwiY29udGFpbmVy XCIgd2l0aCAyIGVsZW1lbnRzID0geyRubCAqLjAuID0gMjMsJG5sICouMS4gPSA3MiRubH0iCi0g Ci0rICAgIGdkYl90ZXN0ICJwcmludCBudWxsc3RyIiAiUnVudGltZUVycm9yOiBFcnJvciByZWFk aW5nIHN0cmluZyBmcm9tIGluZmVyaW9yLioiCisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9m b3JfZHluYW1pY19hcnJheXMgPT0gMH0geworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgorK30KKytn ZGJfdGVzdCAicHJpbnQgRHluQXJySW50IiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1MywgNTQsIDU1 LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MlxcfSIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2Yg aW50ZWdlciB0eXBlIgorK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJy YXlzID09IDB9IHsKKysgIHNldHVwX3hmYWlsICIqLSotKiIKKyt9CisrZ2RiX3Rlc3QgInByaW50 IER5bkFyckludF8iICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgs IDU5LCA2MCwgNjEsIDYyXFx9IiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBpbnRlZ2VyIgogKwot ICAgICBnZGJfdGVzdCAiY29udGludWUiICJQcm9ncmFtIGV4aXRlZCBub3JtYWxseVwuIgotIAot ICAgICByZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAke3JlbW90ZV9weXRob25fZmlsZX0KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdGVtcGxhdGUuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXRlbXBsYXRlLmV4cAotaW5kZXggNzEzYWQ1Zi4uNWQxN2Iy NiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10ZW1wbGF0ZS5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10ZW1wbGF0ZS5leHAKLUBAIC0yMCw2 ICsyMCwxNyBAQCBpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSAgICAgc3RyYWNlICR0cmFjZWxldmVs Ci0gfQotIAotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KKytpZiB7ICRmcGNfZ2VuZXJhdGVz X2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFpbCAiKi0qLSoi CisrfQorK2dkYl90ZXN0ICJwcmludCBzIiAiLiogPSAndGVzdCcjMCdzdHJpbmcnIiAiUHJpbnQg c3RyaW5nIGNvbnRhaW5pbmcgbnVsbC1jaGFyIgogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0r Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisraWYgeyAkZnBjX2dlbmVyYXRl c19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0geworKyAgc2V0dXBfeGZhaWwgIiotKi0q IgorK30KKytnZGJfdGVzdCAicHJpbnQgRHluQXJyU3RyIiAiLiogPSBcXHsnZHN0cjAnLCAnZHN0 cjEnLCAnZHN0cjInLCAnZHN0cjMnLCAnZHN0cjQnLCAnZHN0cjUnLCAnZHN0cjYnLCAnZHN0cjcn LCAnZHN0cjgnLCAnZHN0cjknLCAnZHN0cjEwJywgJ2RzdHIxMScsICdkc3RyMTInXFx9IiAiUHJp bnQgZHluYW1pYyBhcnJheSBvZiBzdHJpbmciCiArCi0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0 aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJl dHVybiAtMQorK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09 IDB9IHsKKysgIHNldHVwX3hmYWlsICIqLSotKiIKICt9CisrZ2RiX3Rlc3QgInByaW50IFN0YXRB cnJTdHIiICIuKiA9IFxceydzdHIwJywgJ3N0cjEnLCAnc3RyMicsICdzdHIzJywgJ3N0cjQnLCAn c3RyNScsICdzdHI2JywgJ3N0cjcnLCAnc3RyOCcsICdzdHI5JywgJ3N0cjEwJywgJ3N0cjExJywg J3N0cjEyJ1xcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBzdHJpbmciCiArCi0gc2V0IHRlc3Rm aWxlICJweS10ZW1wbGF0ZSIKLSBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotIHNldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLUBAIC0yOSwyMCArNDAsNiBAQCBp ZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSBcCi0gICAgIHJldHVybiAtMQotIH0KLSAKLS0jIFN0YXJ0IHdpdGgg YSBmcmVzaCBnZGIuCi0tCi0tZ2RiX2V4aXQKLS1nZGJfc3RhcnQKLS1nZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKLS0KLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50 IDIzIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAibm90IHN1cHBvcnRlZC4q JGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBk aXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAtcmUgIiRnZGJfcHJvbXB0 ICQiCXt9Ci0tfQotLQotIHByb2MgdGVzdF90ZW1wbGF0ZV9hcmcge3R5cGV9IHsKLSAgICAgZ2xv YmFsIHRlc3RmaWxlIHNyY2RpciBzdWJkaXIgc3JjZmlsZSBiaW5maWxlCi0gICAgIGlmIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBc Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLWluZGV4IGQ5ODBhM2QuLjZhNzU1 OTUgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCi1AQCAtMzA3LDYgKzMw NywxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30gewotICAgICAicHJpbnQgdmFs dWUncyB0eXBlIgotIH0KLSAKLSsjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBjYXN0IGZhaWx1cmUu ICBUaGUgYnVnIHdhcyB0aGF0IGlmIHdlIGNhc3QgYQotKyMgdmFsdWUgdG8gaXRzIG93biB0eXBl LCBnZGIgY291bGQgY3Jhc2guICBUaGlzIGhhcHBlbmVkIGJlY2F1c2Ugd2UKLSsjIGNvdWxkIGVu ZCB1cCBkb3VibGUtZnJlZWluZyBhIHN0cnVjdCB2YWx1ZS4KLStwcm9jIHRlc3RfY2FzdF9yZWdy ZXNzaW9uIHt9IHsKLSsgIGdkYl90ZXN0ICJweXRob24gdiA9IGdkYi5WYWx1ZSg1KSIgIiIgImNy ZWF0ZSB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgotKyAgZ2RiX3Rlc3QgInB5dGhvbiB2ID0gdi5jYXN0 KHYudHlwZSkiICIiICJjYXN0IHZhbHVlIGZvciBjYXN0IHRlc3QiCi0rICBnZGJfdGVzdCAicHl0 aG9uIHByaW50IHYiICI1IiAicHJpbnQgdmFsdWUgZm9yIGNhc3QgdGVzdCIKKytpZiB7ICRmcGNf Z2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFp bCAiKi0qLSoiCiArfQorK2dkYl90ZXN0ICJwcmludCBEeW5BcnJDaGFyIiAiLiogPSAnYWJjZGVm Z2hpamtsbSciICJQcmludCBkeW5hbWljIGFycmF5IG9mIGNoYXIiCiArCi0gIyBSZWdyZXNzaW9u IHRlc3QgZm9yIGludmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0 Ci0gIyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBh bGxvd2luZyBhCi0gIyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtMzkyLDE2 ICs0MDEsMjMgQEAgcHJvYyB0ZXN0X3BhcnNlX2FuZF9ldmFsIHt9IHsKLSBnZGJfZXhpdAotIGdk Yl9zdGFydAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotLWdkYl9sb2Fk ICR7YmluZmlsZX0KLSAKLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywg d29ybGQhJyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAtcmUgIm5vdCBzdXBwb3J0 ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQg aXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0gICAgLXJlICIkZ2RiX3By b21wdCAkIgl7fQotK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7Ci0rICB1bnN1cHBvcnRl ZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4gLTEKLSB9Ci0gCi0rc2V0 IHRlc3RmaWxlICJweS12YWx1ZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJp bmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2Fs L2FycmF5cy5wYXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yOTU2MDJk CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBh cworQEAgLTAsMCArMSw4MiBAQAorK3sKKysgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0g IiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAg IHJldHVybiAtMQorKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICt9CiArCi0rZ2RiX2xvYWQgJHtiaW5maWxl fQorK3Byb2dyYW0gYXJyYXlzOworKworK3skbW9kZSBvYmpmcGN9eyRoK30KKysKKyt1c2VzIHN5 c3V0aWxzOworKworK3R5cGUgVFN0YXRBcnJJbnQ9IGFycmF5WzAuLjExXSBvZiBpbnRlZ2VyOwor KyAgICAgVER5bkFyckludD0gYXJyYXkgb2YgaW50ZWdlcjsKKysgICAgIFRTdGF0QXJyU3RyPSBh cnJheVswLi4xMl0gb2Ygc3RyaW5nOworKyAgICAgVER5bkFyclN0cj0gYXJyYXkgb2Ygc3RyaW5n OworKyAgICAgVER5bkFyckNoYXIgPSBhcnJheSBvZiBjaGFyOworKyAgICAgVFN0YXRBcnJDaGFy ID0gYXJyYXkgWzAuLjExXSBvZiBjaGFyOworKworKyAgICAgVFN0YXQyZEFyckludCA9IGFycmF5 WzAuLjExLDAuLjRdIG9mIGludGVnZXI7CiArCi0gdGVzdF92YWx1ZV9jcmVhdGlvbgotIHRlc3Rf dmFsdWVfbnVtZXJpY19vcHMKLSB0ZXN0X3ZhbHVlX2Jvb2xlYW4KLUBAIC00MTksNiArNDM1LDcg QEAgaWYgIVtydW50b19tYWluXSB0aGVuIHsKLSB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCi0gdGVz dF9sYXp5X3N0cmluZ3MKLSB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoCi0rdGVzdF9jYXN0X3JlZ3Jl c3Npb24KLSAKLSAjIFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkgdG8g dGVzdCBlaXRoZXIgQyBvciBDKysKLSAjIHZhbHVlcy4gCisrdmFyIFN0YXRBcnJJbnQ6IFRTdGF0 QXJySW50OworKyAgICBTdGF0QXJySW50XzogQXJyYXlbMC4uMTFdIG9mIGludGVnZXI7CisrICAg IER5bkFyckludDogIFREeW5BcnJJbnQ7CisrICAgIER5bkFyckludF86IEFycmF5IG9mIGludGVn ZXI7CisrICAgIFN0YXRBcnJTdHI6IFRTdGF0QXJyU3RyOworKyAgICBEeW5BcnJTdHI6IFREeW5B cnJTdHI7CisrICAgIFN0YXRBcnJDaGFyOiBUU3RhdEFyckNoYXI7CisrICAgIER5bkFyckNoYXI6 IFREeW5BcnJDaGFyOworKworKyAgICBTdGF0MmRBcnJJbnQ6IFRTdGF0MmRBcnJJbnQ7CisrCisr ICAgIHM6IHN0cmluZzsKKysJCisrICAgIGksaiA6IGludGVnZXI7CisrCisrYmVnaW4KKysgIGZv ciBpIDo9IDAgdG8gMTEgZG8KKysgICAgYmVnaW4KKysgICAgU3RhdEFyckludFtpXTo9IGkrNTA7 CisrICAgIFN0YXRBcnJJbnRfW2ldOj0gaSs1MDsKKysgICAgU3RhdEFyckNoYXJbaV06PSBjaHIo b3JkKCdhJykraSk7CisrICAgIGZvciBqIDo9IDAgdG8gNCBkbworKyAgICAgIFN0YXQyZEFycklu dFtpLGpdOj1pK2o7CisrICAgIGVuZDsKKysgIHdyaXRlbG4oU3RhdEFyckludF9bMF0pOworKyAg d3JpdGVsbihTdGF0QXJySW50WzBdKTsgeyBzZXQgYnJlYWtwb2ludCAxIGhlcmUgfQorKyAgd3Jp dGVsbihTdGF0QXJyQ2hhclswXSk7CisrICB3cml0ZWxuKFN0YXQyZEFyckludFswLDBdKTsKKysK KysgIHNldGxlbmd0aChEeW5BcnJJbnQsMTMpOworKyAgc2V0bGVuZ3RoKER5bkFyckludF8sMTMp OworKyAgc2V0bGVuZ3RoKER5bkFyclN0ciwxMyk7CisrICBzZXRsZW5ndGgoRHluQXJyQ2hhciwx Myk7CisrICBmb3IgaSA6PSAwIHRvIDEyIGRvCisrICAgIGJlZ2luCisrICAgIER5bkFyckludFtp XTo9IGkrNTA7CisrICAgIER5bkFyckludF9baV06PSBpKzUwOworKyAgICBEeW5BcnJDaGFyW2ld Oj0gY2hyKG9yZCgnYScpK2kpOworKyAgICBTdGF0QXJyU3RyW2ldOj0nc3RyJytpbnR0b3N0cihp KTsKKysgICAgRHluQXJyU3RyW2ldOj0nZHN0cicraW50dG9zdHIoaSk7CisrICAgIGVuZDsKKysg IHdyaXRlbG4oRHluQXJySW50X1sxXSk7CisrICB3cml0ZWxuKER5bkFyckludFsxXSk7IAorKyAg d3JpdGVsbihEeW5BcnJTdHJbMV0pOyAKKysgIHdyaXRlbG4oU3RhdEFyclN0clsxXSk7CisrICB3 cml0ZWxuKER5bkFyckNoYXJbMV0pOworKworKyAgcyA6PSAndGVzdCcjMCdzdHJpbmcnOworKyAg d3JpdGVsbihzKTsgeyBzZXQgYnJlYWtwb2ludCAyIGhlcmUgfQorK2VuZC4KIGRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMKIG5ldyBm aWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi40ZGMzMDhiCkBAIC0yODAzNywxMjEgKzEw MzE0LDc3IEBAIGluZGV4IDAwMDAwMDAuLjFkYzkzYWIKICtpZiB7W2lzdGFyZ2V0ICIqLSotbGlu dXgqIl19IHsKICsgICAgdGVzdCBjaGlsZCBGT0xMT1dfQ0hJTEQKICt9Ci1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9saWIvY3Atc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9jcC1z dXBwb3J0LmV4cAotaW5kZXggNmZiZWU4NC4uMTE4OWNmZCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0 c3VpdGUvbGliL2NwLXN1cHBvcnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9jcC1zdXBw b3J0LmV4cAotQEAgLTIyMiw3ICsyMjIsNyBAQCBwcm9jIGNwX3Rlc3RfcHR5cGVfY2xhc3MgeyBp bl9jb21tYW5kIGluX3Rlc3RuYW1lIGluX2tleSBpbl90YWcgaW5fY2xhc3NfdGFibGUgewotIAot ICAgICBzZXQgcGFyc2Vfb2theSAwCi0gICAgIGdkYl90ZXN0X211bHRpcGxlICIkaW5fY29tbWFu ZCIgIiRpbl90ZXN0bmFtZSAvLyBwYXJzZSBmYWlsZWQiIHsKLS0JLXJlICJ0eXBlID0gKHN0cnVj dHxjbGFzcykke3dzb3B0fShcW0EtWmEtejAtOV9cXSopJHt3c29wdH0oKDpcW15ce1xdKik/KSR7 d3NvcHR9XHsoLiopXH0ke3dzb3B0fShcW15cclxuXF0qKVxbXHJcblxdKyRnZGJfcHJvbXB0ICQi IHsKLSsJLXJlICJ0eXBlID0gKHN0cnVjdHxjbGFzcykke3dzb3B0fShcW0EtWmEtejAtOV86XF0q KSR7d3NvcHR9KCg6XFteXHtcXSopPykke3dzb3B0fVx7KC4qKVx9JHt3c29wdH0oXFteXHJcblxd KilcW1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7Ci0gCSAgICBzZXQgcGFyc2Vfb2theSAgICAgICAg ICAxCi0gCSAgICBzZXQgYWN0dWFsX2tleSAgICAgICAgICAkZXhwZWN0X291dCgxLHN0cmluZykK LSAJICAgIHNldCBhY3R1YWxfdGFnICAgICAgICAgICRleHBlY3Rfb3V0KDIsc3RyaW5nKQotQEAg LTIzMSw2ICsyMzEsNyBAQCBwcm9jIGNwX3Rlc3RfcHR5cGVfY2xhc3MgeyBpbl9jb21tYW5kIGlu X3Rlc3RuYW1lIGluX2tleSBpbl90YWcgaW5fY2xhc3NfdGFibGUgewotIAkgICAgc2V0IGFjdHVh bF90YWlsICAgICAgICAgJGV4cGVjdF9vdXQoNixzdHJpbmcpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9saWIvcGFzY2FsLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKK2lu ZGV4IDk2OTFiYzEuLjEzZWE4YjUgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNj YWwuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCitAQCAtMzcsNiArMzcs OSBAQCBwcm9jIHBhc2NhbF9pbml0IHt9IHsKKyAgICAgZ2xvYmFsIHBhc2NhbF9jb21waWxlcl9p c19mcGMKKyAgICAgZ2xvYmFsIGdwY19jb21waWxlcgorICAgICBnbG9iYWwgZnBjX2NvbXBpbGVy CisrICAgIGdsb2JhbCBmcGN2ZXJzaW9uX21ham9yCisrICAgIGdsb2JhbCBmcGN2ZXJzaW9uX21p bm9yCisrICAgIGdsb2JhbCBmcGN2ZXJzaW9uX3JlbGVhc2UKKyAgICAgZ2xvYmFsIGVudgorICAK KyAgICAgaWYgeyAkcGFzY2FsX2luaXRfZG9uZSA9PSAxIH0geworQEAgLTY0LDYgKzY3LDIwIEBA IHByb2MgcGFzY2FsX2luaXQge30geworIAkgICAgc2V0IHBhc2NhbF9jb21waWxlcl9pc19mcGMg MQorIAkgICAgdmVyYm9zZSAtbG9nICJGcmVlIFBhc2NhbCBjb21waWxlciBmb3VuZCIKICAJfQot ICAgICB9Ci0rICAgIAotICAgICBpZiB7ICEgJHBhcnNlX29rYXkgfSB0aGVuIHsgcmV0dXJuIH0K LSAKLSAgICAgIyBDaGVjayB0aGUgYWN0dWFsIGtleS4gIEl0IHdvdWxkIGJlIG5pY2UgdG8gcmVx dWlyZSB0aGF0IGl0IG1hdGNoCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4 cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLWluZGV4IDYyNzk0MWQuLjFmOWIyMjggMTAw NjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCi1AQCAtMjcsNiArMjcsNyBAQCBpZiB7JHRvb2wgPT0gIiJ9IHsKLSB9Ci0g Ci0gbG9hZF9saWIgbGliZ2xvc3MuZXhwCi0rbG9hZF9saWIgcHl0aG9uLXN1cHBvcnQuZXhwCi0g Ci0gZ2xvYmFsIEdEQgotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1z dXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmI4ZTk4MzYKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAotQEAgLTAsMCArMSw1MyBA QAotK2dsb2JhbCBweXRob25fc3VwcG9ydGVkX3NhdmVkCi0rCi0rIyBSZXR1cm4gMSBpZiBQeXRo b24gc2NyaXB0aW5nIGlzIHN1cHBvcnRlZCBpbiBHREIsIDAgaWYgbm90LgotK3Byb2MgcHl0aG9u X3N1cHBvcnRlZCB7IH0gewotKyAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsgIGdsb2JhbCBweXRob25f c3VwcG9ydGVkX3NhdmVkCi0rCi0rICBpZiBbaW5mbyBleGlzdHMgcHl0aG9uX3N1cHBvcnRlZF9z YXZlZF0gewotKyAgICAgIHZlcmJvc2UgInB5dGhvbl9zdXBwb3J0ZWQ6ICByZXR1cm5pbmcgc2F2 ZWQgJHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQiIDIKLSsgICAgICByZXR1cm4gJHB5dGhvbl9zdXBw b3J0ZWRfc2F2ZWQKLSsgIH0KLSsKLSsgIGdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQg J2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0rICAgIC1yZSAibm90 IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotKyAgICAgIHJldHVybiBbc2V0IHB5dGhvbl9z dXBwb3J0ZWRfc2F2ZWQgMF0KLSsgICAgfQotKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXsKLSsg ICAgICByZXR1cm4gW3NldCBweXRob25fc3VwcG9ydGVkX3NhdmVkIDFdCi0rICAgIH0KLSsgIH0K LSsKLSsgIHJldHVybiBbc2V0IHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQgMF0KLSt9Ci0rCi0rIyBS dW4gYSBjb21tYW5kIGluIEdEQiwgYW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQeXRob24gZXhj ZXB0aW9uIGlzIHRocm93bi4KLSsjIElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJlcG9ydCBhIHBh c3MgaWYgbm8gZXhjZXB0aW9uIGlzIHRocm93bi4KLStwcm9jIGdkYl9weV90ZXN0X3NpbGVudF9j bWQge2NtZCBuYW1lIHJlcG9ydF9wYXNzfSB7Ci0rICBnbG9iYWwgZ2RiX3Byb21wdAogKwotKyAg Z2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkbmFtZSB7Ci0rICAgICAgLXJlICJUcmFjZWJhY2suKiRn ZGJfcHJvbXB0ICQiICB7IGZhaWwgJG5hbWUgfQotKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJ ICAgICAgeyBpZiAkcmVwb3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQotKyAgfQotK30KLSsKLSsj IFVzYWdlOiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVT VUxUfS4uLgotKyMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxl IGxpbmVzIG9mIGlucHV0LgotKyMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2gg Zm9yIHJlc3VsdCBsaW5lIFJFU1VMVC4KLSsjIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNl ZW47IGZhaWwgb3RoZXJ3aXNlLgotK3Byb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJn c30gewotKyAgICBnbG9iYWwgZ2RiX3Byb21wdAotKwotKyAgICBmb3JlYWNoIHtpbnB1dCByZXN1 bHR9ICRhcmdzIHsKLSsJaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlu cHV0IiB7Ci0rCSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21w dCB8ICo+KSQiIHsKLSsJCXBhc3MgIiRuYW1lIC0gJGlucHV0IgorKwkjIERldGVjdCB0aGUgZnBj LXZlcnNpb24KKysJaWYgeyAkcGFzY2FsX2NvbXBpbGVyX2lzX2ZwYyA9PSAxIH0geworKwkgICAg c2V0IGZwY3ZlcnNpb25fbWFqb3IgMQorKwkgICAgc2V0IGZwY3ZlcnNpb25fbWlub3IgMAorKwkg ICAgc2V0IGZwY3ZlcnNpb25fcmVsZWFzZSAwCisrCSAgICBzZXQgZnBjdmVyc2lvbiBbIHJlbW90 ZV9leGVjIGhvc3QgJGZwY19jb21waWxlciAiLWlWIiBdIAorKwkgICAgaWYgW3JlZ2V4cCB7Lioo WzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLj99ICRmcGN2ZXJzaW9uXSB7CisrICAgICAgICAg ICAgICByZWdzdWIgey4qKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/XG4/Lj99ICRmcGN2 ZXJzaW9uIHtcMX0gZnBjdmVyc2lvbl9tYWpvcgorKyAgICAgICAgICAgICAgcmVnc3ViIHsuKihb MC05XSspXC4oWzAtOV0rKVwuKFswLTldKykuP1xuPy4/fSAkZnBjdmVyc2lvbiB7XDJ9IGZwY3Zl cnNpb25fbWlub3IKKysgICAgICAgICAgICAgIHJlZ3N1YiB7LiooWzAtOV0rKVwuKFswLTldKylc LihbMC05XSspLj9cbj8uP30gJGZwY3ZlcnNpb24ge1wzfSBmcGN2ZXJzaW9uX3JlbGVhc2UKICsJ ICAgIH0KLSsJfV19IHsKLSsJICAgIHJldHVybiAxCisrICAgICAgICAgICAgdmVyYm9zZSAtbG9n ICJGcmVlcGFzY2FsIHZlcnNpb246ICRmcGN2ZXJzaW9uX21ham9yLiRmcGN2ZXJzaW9uX21pbm9y LiRmcGN2ZXJzaW9uX3JlbGVhc2UiCiArCX0KLSsgICAgfQotKyAgICByZXR1cm4gMAotK30KKyAg ICAgfQorICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCisgfSAgIAogZGlmZiAtLWdpdCBhL2dk Yi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwotaW5kZXggMTZhMjA3Yy4uYzNjZmYwNiAxMDA2NDQK K2luZGV4IDJmZGM3ZjkuLjJhNWQwZjEgMTAwNjQ0CiAtLS0gYS9nZGIvdGhyZWFkLmMKICsrKyBi L2dkYi90aHJlYWQuYwotQEAgLTYxLDcgKzYxLDYgQEAgc3RhdGljIGludCB0aHJlYWRfYWxpdmUg KHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsKLSBzdGF0aWMgdm9pZCBpbmZvX3RocmVhZHNfY29tbWFu ZCAoY2hhciAqLCBpbnQpOwotIHN0YXRpYyB2b2lkIHRocmVhZF9hcHBseV9jb21tYW5kIChjaGFy ICosIGludCk7Ci0gc3RhdGljIHZvaWQgcmVzdG9yZV9jdXJyZW50X3RocmVhZCAocHRpZF90KTsK LS1zdGF0aWMgdm9pZCBwcnVuZV90aHJlYWRzICh2b2lkKTsKLSAKLSAvKiBGcm9udGVuZCB2aWV3 IG9mIHRoZSB0aHJlYWQgc3RhdGUuICBQb3NzaWJsZSBleHRlbnNpb25zOiBzdGVwcGluZywKLSAg ICBmaW5pc2hpbmcsIHVudGlsKGxpbmcpLC4uLiAgKi8KLUBAIC01MTcsNyArNTE2LDcgQEAgdGhy ZWFkX2FsaXZlIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQotICAgcmV0dXJuIDE7CitAQCAtOTAs NiArOTAsMTYgQEAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRf aW5mbyAqdHApCisgICAgIH0KICB9CiAgCi0tc3RhdGljIHZvaWQKICt2b2lkCi0gcHJ1bmVfdGhy ZWFkcyAodm9pZCkKKytkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRwKQorK3sKKysgIGlmICh0cCAmJiB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9i cmVha3BvaW50KQorKyAgICB7CisrICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKHRwLT5leGNlcHRp b25fcmVzdW1lX2JyZWFrcG9pbnQpOworKyAgICAgIHRwLT5leGNlcHRpb25fcmVzdW1lX2JyZWFr cG9pbnQgPSBOVUxMOworKyAgICB9CisrfQorKworIHN0YXRpYyB2b2lkCisgY2xlYXJfdGhyZWFk X2luZmVyaW9yX3Jlc291cmNlcyAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKICB7Ci0gICBzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRwLCAqbmV4dDsKK0BAIC0xMDMsNiArMTEzLDEyIEBAIGNsZWFyX3Ro cmVhZF9pbmZlcmlvcl9yZXNvdXJjZXMgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCisgICAgICAg dHAtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOworICAgICB9CisgCisrICBpZiAodHAt PmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKKysgICAgeworKyAgICAgIHRwLT5leGNlcHRp b25fcmVzdW1lX2JyZWFrcG9pbnQtPmRpc3Bvc2l0aW9uID0gZGlzcF9kZWxfYXRfbmV4dF9zdG9w OworKyAgICAgIHRwLT5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOworKyAgICB9 CisrCisgICBicHN0YXRfY2xlYXIgKCZ0cC0+c3RvcF9icHN0YXQpOworIAorICAgZGlzY2FyZF9h bGxfaW50ZXJtZWRpYXRlX2NvbnRpbnVhdGlvbnNfdGhyZWFkICh0cCk7CiBkaWZmIC0tZ2l0IGEv Z2RiL3RvcC5jIGIvZ2RiL3RvcC5jCi1pbmRleCA5MGU4ZjFlLi40ODllMjRhIDEwMDY0NAoraW5k ZXggOTM0NDdmZS4uZDY4NzVhNyAxMDA2NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3Rv cC5jCiBAQCAtMzM3LDYgKzMzNyw3IEBAIHZvaWQKQEAgLTI4MjE5LDExNiArMTA0NTIsMTMgQEAg aW5kZXggY2U5ZjU1MS4uNWY5ZDczOSAxMDA2NDQKICB9CiAgCiAgc3RhdGljIHZvaWQKLWRpZmYg LS1naXQgYS9nZGIvdHlwZXByaW50LmggYi9nZGIvdHlwZXByaW50LmgKLWluZGV4IDdkN2U2YmMu LjZlZTY1Y2YgMTAwNjQ0Ci0tLS0gYS9nZGIvdHlwZXByaW50LmgKLSsrKyBiL2dkYi90eXBlcHJp bnQuaAotQEAgLTIwLDEwICsyMCwxMyBAQAotICNpZm5kZWYgVFlQRVBSSU5UX0gKLSAjZGVmaW5l IFRZUEVQUklOVF9ICi0gCi0rZW51bSBsYW5ndWFnZTsKLSBzdHJ1Y3QgdWlfZmlsZTsKLSAKLSB2 b2lkIHByaW50X3R5cGVfc2NhbGFyIChzdHJ1Y3QgdHlwZSAqIHR5cGUsIExPTkdFU1QsIHN0cnVj dCB1aV9maWxlICopOwotIAotIHZvaWQgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1 Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi0gCQkJCSAgaW50LCBpbnQpOwotKwot K3ZvaWQgY190eXBlX3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICos IGludCwgZW51bSBsYW5ndWFnZSk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvZ2RiL3VpLWZpbGUu YyBiL2dkYi91aS1maWxlLmMKLWluZGV4IGU2YWFmOTMuLjE3NjBiNGMgMTAwNjQ0Ci0tLS0gYS9n ZGIvdWktZmlsZS5jCi0rKysgYi9nZGIvdWktZmlsZS5jCi1AQCAtMjIsNiArMjIsNyBAQAotIAot ICNpbmNsdWRlICJkZWZzLmgiCi0gI2luY2x1ZGUgInVpLWZpbGUuaCIKLSsjaW5jbHVkZSAiZ2Ri X29ic3RhY2suaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotICNpbmNsdWRlICJnZGJfc2Vs ZWN0LmgiCi0gCi1AQCAtMjY0LDcgKzI2NSw3IEBAIHNldF91aV9maWxlX2RhdGEgKHN0cnVjdCB1 aV9maWxlICpmaWxlLCB2b2lkICpkYXRhLAotIH0KLSAKLSAvKiB1aV9maWxlIHV0aWxpdHkgZnVu Y3Rpb24gZm9yIGNvbnZlcnRpbmcgYSBgYHN0cnVjdCB1aV9maWxlJycgaW50bwotLSAgIGEgbWVt b3J5IGJ1ZmZlcicnLiAqLwotKyAgIGEgbWVtb3J5IGJ1ZmZlci4gKi8KLSAKLSBzdHJ1Y3QgYWNj dW11bGF0ZWRfdWlfZmlsZQotIHsKLUBAIC0yOTgsNiArMjk5LDIzIEBAIHVpX2ZpbGVfeHN0cmR1 cCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGxvbmcgKmxlbmd0aCkKLSAgICAgKmxlbmd0aCA9IGFj Yy5sZW5ndGg7Ci0gICByZXR1cm4gYWNjLmJ1ZmZlcjsKLSB9Ci0rCi0rc3RhdGljIHZvaWQKLStk b191aV9maWxlX29ic2F2ZXN0cmluZyAodm9pZCAqY29udGV4dCwgY29uc3QgY2hhciAqYnVmZmVy LCBsb25nIGxlbmd0aCkKLSt7Ci0rICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayA9IChzdHJ1Y3Qg b2JzdGFjayAqKSBjb250ZXh0OwotKyAgb2JzdGFja19ncm93IChvYnN0YWNrLCBidWZmZXIsIGxl bmd0aCk7Ci0rfQotKwotK2NoYXIgKgotK3VpX2ZpbGVfb2JzYXZlc3RyaW5nIChzdHJ1Y3QgdWlf ZmlsZSAqZmlsZSwgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssCi0rCQkgICAgICBsb25nICpsZW5n dGgpCi0rewotKyAgdWlfZmlsZV9wdXQgKGZpbGUsIGRvX3VpX2ZpbGVfb2JzYXZlc3RyaW5nLCBv YnN0YWNrKTsKLSsgICpsZW5ndGggPSBvYnN0YWNrX29iamVjdF9zaXplIChvYnN0YWNrKTsKLSsg IG9ic3RhY2tfMWdyb3cgKG9ic3RhY2ssICdcMCcpOwotKyAgcmV0dXJuIG9ic3RhY2tfZmluaXNo IChvYnN0YWNrKTsKLSt9Ci0gDAotIC8qIEEgcHVyZSBtZW1vcnkgYmFzZWQgYGBzdHJ1Y3QgdWlf ZmlsZScnIHRoYXQgY2FuIGJlIHVzZWQgYW4gb3V0cHV0Ci0gICAgYnVmZmVyLiBUaGUgYnVmZmVy cyBhY2N1bXVsYXRlZCBjb250ZW50cyBhcmUgYXZhaWxhYmxlIHZpYQotZGlmZiAtLWdpdCBhL2dk Yi91aS1maWxlLmggYi9nZGIvdWktZmlsZS5oCi1pbmRleCA2MTU1Njk5Li5iYjk0ZjRiIDEwMDY0 NAotLS0tIGEvZ2RiL3VpLWZpbGUuaAotKysrIGIvZ2RiL3VpLWZpbGUuaAotQEAgLTIwLDYgKzIw LDcgQEAKLSAjaWZuZGVmIFVJX0ZJTEVfSAotICNkZWZpbmUgVUlfRklMRV9ICi0gCi0rc3RydWN0 IG9ic3RhY2s7Ci0gc3RydWN0IHVpX2ZpbGU7Ci0gCi0gLyogQ3JlYXRlIGEgZ2VuZXJpYyB1aV9m aWxlIG9iamVjdCB3aXRoIG51bGwgbWV0aG9kcy4gKi8KLUBAIC03OCw3ICs3OSwxMCBAQCBleHRl cm4gdm9pZCB1aV9maWxlX3B1dCAoc3RydWN0IHVpX2ZpbGUgKnNyYywgdWlfZmlsZV9wdXRfbWV0 aG9kX2Z0eXBlICp3cml0ZSwgdgotICAgIG1pbnVzIHRoYXQgYXBwZW5kZWQgTlVMLiAqLwotIGV4 dGVybiBjaGFyICp1aV9maWxlX3hzdHJkdXAgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBsb25nICps ZW5ndGgpOwotIAotLQotKy8qIFNpbWlsYXIgdG8gdWlfZmlsZV94c3RyZHVwLCBidXQgcmV0dXJu IGEgbmV3IHN0cmluZyBhbGxvY2F0ZWQgb24KLSsgICBPQlNUQUNLLiAgKi8KLStleHRlcm4gY2hh ciAqdWlfZmlsZV9vYnNhdmVzdHJpbmcgKHN0cnVjdCB1aV9maWxlICpmaWxlLAotKwkJCQkgICBz dHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgbG9uZyAqbGVuZ3RoKTsKLSAKLSBleHRlcm4gbG9uZyB1 aV9maWxlX3JlYWQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBjaGFyICpidWYsIGxvbmcgbGVuZ3Ro X2J1Zik7Ci0gCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYwot aW5kZXggOWY5MWY0ZS4uNzUzOTI3ZiAxMDA2NDQKK2luZGV4IDBjNDA5MDUuLmE3ODE2MzYgMTAw NjQ0CiAtLS0gYS9nZGIvdmFsYXJpdGguYwogKysrIGIvZ2RiL3ZhbGFyaXRoLmMKLUBAIC0zMSw2 ICszMSw3IEBACi0gI2luY2x1ZGUgImRmcC5oIgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1 ZGUgImluZmNhbGwuaCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotIAotIC8qIERlZmluZSB3 aGV0aGVyIG9yIG5vdCB0aGUgQyBvcGVyYXRvciAnLycgdHJ1bmNhdGVzIHRvd2FyZHMgemVybyBm b3IKLSAgICBkaWZmZXJlbnRseSBzaWduZWQgb3BlcmFuZHMgKHRydW5jYXRpb24gZGlyZWN0aW9u IGlzIHVuZGVmaW5lZCBpbiBDKS4gKi8KLUBAIC0xNDYsNyArMTQ3LDYgQEAgYW4gaW50ZWdlciBu b3IgYSBwb2ludGVyIG9mIHRoZSBzYW1lIHR5cGUuIikpOwotIHN0cnVjdCB2YWx1ZSAqCi0gdmFs dWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4KQotIHsKLS0g IHN0cnVjdCB2YWx1ZSAqYm91bmQ7Ci0gICBpbnQgY19zdHlsZSA9IGN1cnJlbnRfbGFuZ3VhZ2Ut PmNfc3R5bGVfYXJyYXlzOwotICAgc3RydWN0IHR5cGUgKnRhcnJheTsKLSAKIEBAIC0xNjEsMTIg KzE2MSwyNiBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIExPTkdFU1Qg aW5kZXgpCi0gICAgICAgZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd2VyYm91 bmQsICZ1cHBlcmJvdW5kKTsKICAKKyAgICAgICBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90 eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpOwogICAgICAgIGlmIChWQUxVRV9MVkFMIChh cnJheSkgIT0gbHZhbF9tZW1vcnkpCiAtCXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUg KGFycmF5LCBpbmRleCwgbG93ZXJib3VuZCk7CiArCXsKQEAgLTI4MzU1LDcgKzEwNDg1LDcgQEAg aW5kZXggOWY5MWY0ZS4uNzUzOTI3ZiAxMDA2NDQKICAJICAvKiBFbWl0IHdhcm5pbmcgdW5sZXNz IHdlIGhhdmUgYW4gYXJyYXkgb2YgdW5rbm93biBzaXplLgogIAkgICAgIEFuIGFycmF5IG9mIHVu a25vd24gc2l6ZSBoYXMgbG93ZXJib3VuZCAwIGFuZCB1cHBlcmJvdW5kIC0xLiAgKi8KICAJICBp ZiAodXBwZXJib3VuZCA+IC0xKQotQEAgLTE4NSwzMyArMTk5LDM3IEBAIHZhbHVlX3N1YnNjcmlw dCAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBpbmRleCkKK0BAIC0xODUsMzQgKzE5OSwz NyBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIExPTkdFU1QgaW5kZXgp CiAgICAgIGVycm9yIChfKCJub3QgYW4gYXJyYXkgb3Igc3RyaW5nIikpOwogIH0KICAKQEAgLTI4 Mzc4LDcgKzEwNTA4LDggQEAgaW5kZXggOWY5MWY0ZS4uNzUzOTI3ZiAxMDA2NDQKIC0gIHVuc2ln bmVkIGludCBlbHRfb2ZmcyA9IGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93 ZXJib3VuZCk7CiAgICBzdHJ1Y3QgdmFsdWUgKnY7CiAgCi0tICBpZiAoaW5kZXggPCBsb3dlcmJv dW5kIHx8IGVsdF9vZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSkKKy0gIGlmIChpbmRl eCA8IGxvd2VyYm91bmQgfHwgKCFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAo YXJyYXlfdHlwZSkKKy0JCQkgICAgICYmIGVsdF9vZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90 eXBlKSkpCiAtICAgIGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOwogKyAgLyog RG8gbm90IGNoZWNrIFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSBhcyB3ZSBtYXkgaGF2ZSBiZWVu IGdpdmVuIHRoZQogKyAgICAgaW5uZXJtb3N0IGRpbWVuc2lvbiBvZiBhIG11bHRpLWRpbWVuc2lv bmFsIEZvcnRyYW4gYXJyYXkgd2hlcmUgaXRzIGxlbmd0aApAQCAtMjg0MDQsOTcgKzEwNTM1LDE5 IEBAIGluZGV4IDlmOTFmNGUuLjc1MzkyN2YgMTAwNjQ0CiAgICByZXR1cm4gdjsKICB9CiAgCi1A QCAtMzE4LDYgKzMzNiw2OCBAQCB1bm9wX3VzZXJfZGVmaW5lZF9wIChlbnVtIGV4cF9vcGNvZGUg b3AsIHN0cnVjdCB2YWx1ZSAqYXJnMSkKLSAgICAgfQotIH0KLSAKLSsvKiBUcnkgdG8gZmluZCBP UEVSQVRPUiBhcyB0aHJvdWdoIGFyZ3VtZW50IGRlcGVuZGVudCBsb29rdXAuICAqLwotKwotK3N0 YXRpYyBzdHJ1Y3QgdmFsdWUgKgotK3ZhbHVlX3VzZXJfZGVmaW5lZF9hZGxfb3AgKHN0cnVjdCB2 YWx1ZSAqKmFyZ3MsIGludCBuYXJncywgY2hhciAqb3BlcmF0b3IpCi0rewotKwotKyAgc3RydWN0 IHN5bWJvbCAqc3ltcDsKLSsgIHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotKyAgaW50IGk7Ci0r Ci0rICAvKiBUaGlzIGZ1bmN0aW9uLCBpZiBmb3VuZCwgd2lsbCBub3QgYmUgYSBtZW1iZXIgZnVu Y3Rpb24KLSsgICAgIGFuZCBkb2VzIG5vdCBleHBlY3QgYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBh cmd1bWVudAotKyAgICAgcmF0aGVyIHRoZSBleHBsaWNpdCBzdHJ1Y3R1cmUuICAqLwotKyAgYXJn c1swXSA9IHZhbHVlX2luZCAoYXJnc1swXSk7Ci0rCi0rICBhcmdfdHlwZXMgPSAoc3RydWN0IHR5 cGUgKiopYWxsb2NhIChuYXJncyAqIChzaXplb2YgKHN0cnVjdCB0eXBlICopKSk7Ci0rICAvKiBQ cmVwYXJlIGxpc3Qgb2YgYXJndW1lbnQgdHlwZXMgZm9yIG92ZXJsb2FkIHJlc29sdXRpb24gKi8K LSsgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQotKyAgICBhcmdfdHlwZXMgW2ldID0gdmFs dWVfdHlwZSAoYXJncyBbaV0pOwotKwotKyAgZmluZF9vdmVybG9hZF9tYXRjaCAoYXJnX3R5cGVz LCBuYXJncywgb3BlcmF0b3IsIDAgLyogbm90IG1ldGhvZCAqLywKLSsgICAgICAgICAgICAgICAg ICAgICAgIDAgLyogc3RyaWN0IG1hdGNoICovLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCAvKiBwYXNzIE5VTEwgc3ltYm9sIHNpbmNlIHN5bWJvbCBpcyB1bmtub3duICovLAot KyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnN5bXAsIE5VTEwpOwotKwotKyAgaWYgKHN5 bXApCi0rICAgIHJldHVybiB2YWx1ZV9vZl92YXJpYWJsZSAoc3ltcCwgMCk7Ci0rCi0rICByZXR1 cm4gTlVMTDsKLSt9Ci0rCi0rLyogTG9va3VwIHVzZXIgZGVmaW5lZCBvcGVyYXRvciBOQU1FLiBG aXJzdCB0cnkgdG8gZmluZCBpdCBhcyBhIG1lbWJlcgotKyAgIG9mIHRoZSBzdHJ1Y3QgQVJHUFsw XS4gSWYgbm90IGZvdW5kIHRyeSB0byBmaW5kIHRoZSBvcGVyYXRvciB0aHJvdWdoCi0rICAgYXJn dW1lbnQgZGVwZW5kZW50IGxvb2t1cC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0r dmFsdWVfdXNlcl9kZWZpbmVkX29wIChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBzdHJ1Y3QgdmFsdWUg KiphcmdzLCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0aWNf bWVtZnVuY3AsIGludCBuYXJncykKLSt7Ci0rICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdCA9IE5VTEw7 Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBUUllfQ0FU Q0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfRVJST1IpCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSB2 YWx1ZV9zdHJ1Y3RfZWx0IChhcmdwLCBhcmdzLCBuYW1lLCBzdGF0aWNfbWVtZnVuY3AsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSIpOwotKyAgICB9Ci0rCi0r ICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rICAgIHsKLSsKLSsgICAgICBpZiAoY3VycmVudF9s YW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0rICAgICAgICAvKiBUcnkg QURMLiAgKi8KLSsgICAgICAgIHJlc3VsdCA9IHZhbHVlX3VzZXJfZGVmaW5lZF9hZGxfb3AgKGFy Z3MsIG5hcmdzLCBuYW1lKTsKLSsKLSsgICAgICBpZiAoIXJlc3VsdCkKLSsgICAgICAgIGVycm9y ICgiJXMiLCBleGNlcHQubWVzc2FnZSk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0r fQorQEAgLTI5Miw2ICszMDksMTAgQEAgaW50CisgYmlub3BfdXNlcl9kZWZpbmVkX3AgKGVudW0g ZXhwX29wY29kZSBvcCwKKyAJCSAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0IHZhbHVl ICphcmcyKQorIHsKKysgIC8qIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCB1c2VyIGRlZmluZWQg b3BzIGZvciBkeW5hbWljIHR5cGVzLiAgKi8KKysgIGlmIChUWVBFX0RZTkFNSUMgKHZhbHVlX3R5 cGUgKGFyZzEpKSB8fCBUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFyZzIpKSkKKysgICAgcmV0 dXJuIDA7CiArCi0gLyogV2Uga25vdyBlaXRoZXIgYXJnMSBvciBhcmcyIGlzIGEgc3RydWN0dXJl LCBzbyB0cnkgdG8gZmluZCB0aGUgcmlnaHQKLSAgICB1c2VyIGRlZmluZWQgZnVuY3Rpb24uICBD cmVhdGUgYW4gYXJndW1lbnQgdmVjdG9yIHRoYXQgY2FsbHMgCi0gICAgYXJnMS5vcGVyYXRvciBA IChhcmcxLGFyZzIpIGFuZCByZXR1cm4gdGhhdCB2YWx1ZSAod2hlcmUgJ0AnIGlzIGFueQotQEAg LTQ1OCw3ICs1MzgsOCBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVj dCB2YWx1ZSAqYXJnMiwgZW51bSBleHBfb3Bjb2RlIG9wLAotICAgICAgIGVycm9yIChfKCJJbnZh bGlkIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWVkLiIpKTsKLSAgICAgfQotIAotLSAgYXJndmVj WzBdID0gdmFsdWVfc3RydWN0X2VsdCAoJmFyZzEsIGFyZ3ZlYyArIDEsIHRzdHIsICZzdGF0aWNf bWVtZnVuY3AsICJzdHJ1Y3R1cmUiKTsKLSsgIGFyZ3ZlY1swXSA9IHZhbHVlX3VzZXJfZGVmaW5l ZF9vcCAoJmFyZzEsIGFyZ3ZlYyArIDEsIHRzdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZzdGF0aWNfbWVtZnVuY3AsIDIpOwotIAotICAgaWYgKGFyZ3ZlY1swXSkK LSAgICAgewotQEAgLTU1NSw3ICs2MzYsOCBAQCB2YWx1ZV94X3Vub3AgKHN0cnVjdCB2YWx1ZSAq YXJnMSwgZW51bSBleHBfb3Bjb2RlIG9wLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0gICAgICAgZXJy b3IgKF8oIkludmFsaWQgdW5hcnkgb3BlcmF0aW9uIHNwZWNpZmllZC4iKSk7Ci0gICAgIH0KLSAK LS0gIGFyZ3ZlY1swXSA9IHZhbHVlX3N0cnVjdF9lbHQgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3Ry LCAmc3RhdGljX21lbWZ1bmNwLCAic3RydWN0dXJlIik7Ci0rICBhcmd2ZWNbMF0gPSB2YWx1ZV91 c2VyX2RlZmluZWRfb3AgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3RyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmc3RhdGljX21lbWZ1bmNwLCAxKTsKKyAgIHJldHVybiBi aW5vcF90eXBlc191c2VyX2RlZmluZWRfcCAob3AsIHZhbHVlX3R5cGUgKGFyZzEpLCB2YWx1ZV90 eXBlIChhcmcyKSk7CisgfQogIAotICAgaWYgKGFyZ3ZlY1swXSkKLSAgICAgewogZGlmZiAtLWdp dCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotaW5kZXggYjk0YzQxMS4uOTg3NWY5NiAx MDA2NDQKK2luZGV4IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMK ICsrKyBiL2dkYi92YWxvcHMuYwogQEAgLTM4LDYgKzM4LDcgQEAKQEAgLTI4NTA1LDE2ICsxMDU1 OCw3IEBAIGluZGV4IGI5NGM0MTEuLjk4NzVmOTYgMTAwNjQ0CiAgCiAgI2luY2x1ZGUgPGVycm5v Lmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0zOTcsOCArMzk4LDYgQEAgdmFsdWVf Y2FzdCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnMikKLSAJICBuZXdfbGVu Z3RoID0gdmFsX2xlbmd0aCAvIGVsZW1lbnRfbGVuZ3RoOwotIAkgIGlmICh2YWxfbGVuZ3RoICUg ZWxlbWVudF9sZW5ndGggIT0gMCkKLSAJICAgIHdhcm5pbmcgKF8oImFycmF5IGVsZW1lbnQgdHlw ZSBzaXplIGRvZXMgbm90IGRpdmlkZSBvYmplY3Qgc2l6ZSBpbiBjYXN0IikpOwotLQkgIC8qIEZJ WE1FLXR5cGUtYWxsb2NhdGlvbjogbmVlZCBhIHdheSB0byBmcmVlIHRoaXMgdHlwZSB3aGVuCi0t CSAgICAgd2UgYXJlIGRvbmUgd2l0aCBpdC4gICovCi0gCSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9y YW5nZV90eXBlICgoc3RydWN0IHR5cGUgKikgTlVMTCwKLSAJCQkJCSAgVFlQRV9UQVJHRVRfVFlQ RSAocmFuZ2VfdHlwZSksCi0gCQkJCQkgIGxvd19ib3VuZCwKLUBAIC04NDUsNiArODQ0LDY0IEBA IHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUsIGVudW0gbHZhbF90eXBlIGx2KQorQEAgLTg1 OCw2ICs4NTksNjUgQEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51bSBsdmFsX3R5 cGUgbHYpCiAgICByZXR1cm4gdmFsOwogIH0KICAKQEAgLTI4NTQyLDE0ICsxMDU4NiwxNSBAQCBp bmRleCBiOTRjNDExLi45ODc1Zjk2IDEwMDY0NAogKyAgcmV0dXJuIE5VTEw7CiArfQogKwotKy8q IFJldHVybiBub24temVybyBpZiB0aGUgdmFyaWFibGUgaXMgdmFsaWQuICBJZiBpdCBpcyB2YWxp ZCB0aGUgZnVuY3Rpb24KLSsgICBtYXkgc3RvcmUgdGhlIGRhdGEgYWRkcmVzcyAoRFdfQVRfREFU QV9MT0NBVElPTikgb2YgVFlQRSBhdCAqQUREUkVTU19SRVRVUk4uCi0rICAgWW91IG11c3Qgc2V0 ICpBRERSRVNTX1JFVFVSTiBmcm9tIHZhbHVlX3Jhd19hZGRyZXNzIChWQUwpIGJlZm9yZSBjYWxs aW5nIHRoaXMKLSsgICBmdW5jdGlvbi4gIElmIG5vIERXX0FUX0RBVEFfTE9DQVRJT04gaXMgcHJl c2VudCBmb3IgVFlQRSB0aGUgYWRkcmVzcyBhdAotKyAgICpBRERSRVNTX1JFVFVSTiBpcyBsZWZ0 IHVuY2hhbmdlZC4gIEFERFJFU1NfUkVUVVJOIG11c3Qgbm90IGJlIE5VTEwsIHVzZQorKy8qIFJl dHVybiBub24tTlVMTCBjaGVja190eXBlZGVmIHJlc3VsdCBvbiBUWVBFIGlmIHRoZSB2YXJpYWJs ZSBpcyB2YWxpZC4gIElmCisrICAgaXQgaXMgdmFsaWQgdGhlIGZ1bmN0aW9uIG1heSBzdG9yZSB0 aGUgZGF0YSBhZGRyZXNzIChEV19BVF9EQVRBX0xPQ0FUSU9OKSBvZgorKyAgIFRZUEUgYXQgKkFE RFJFU1NfUkVUVVJOLiAgWW91IG11c3Qgc2V0ICpBRERSRVNTX1JFVFVSTiBmcm9tCisrICAgdmFs dWVfcmF3X2FkZHJlc3MgKFZBTCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIElmIG5v CisrICAgRFdfQVRfREFUQV9MT0NBVElPTiBpcyBwcmVzZW50IGZvciBUWVBFIHRoZSBhZGRyZXNz IGF0ICpBRERSRVNTX1JFVFVSTiBpcworKyAgIGxlZnQgdW5jaGFuZ2VkLiAgQUREUkVTU19SRVRV Uk4gbXVzdCBub3QgYmUgTlVMTCwgdXNlCiArICAgb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFs aWQgKCkgZm9yIGp1c3QgdGhlIGRhdGEgdmFsaWRpdHkgY2hlY2suICAqLwogKwotK2ludAorK3N0 cnVjdCB0eXBlICoKICtvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAoc3RydWN0IHR5cGUgKnR5cGUs IENPUkVfQUREUiAqYWRkcmVzc19yZXR1cm4pCiArewogKyAgZ2RiX2Fzc2VydCAoYWRkcmVzc19y ZXR1cm4gIT0gTlVMTCk7CkBAIC0yODU2NCw3ICsxMDYwOSw3IEBAIGluZGV4IGI5NGM0MTEuLjk4 NzVmOTYgMTAwNjQ0CiArICAgIHsKICsgICAgICAvKiBEbyBub3QgdHJ5IHRvIGV2YWx1YXRlIERX X0FUX2RhdGFfbG9jYXRpb24gYXMgaXQgbWF5IGV2ZW4gY3Jhc2gKICsJIChpdCB3b3VsZCBqdXN0 IHJldHVybiB0aGUgdmFsdWUgemVybyBpbiB0aGUgZ2ZvcnRyYW4gY2FzZSkuICAqLwotKyAgICAg IHJldHVybiAwOworKyAgICAgIHJldHVybiBOVUxMOwogKyAgICB9CiArCiArICBpZiAoVFlQRV9E QVRBX0xPQ0FUSU9OX0lTX0FERFIgKHR5cGUpKQpAQCAtMjg1NzMsMTMgKzEwNjE4LDEzIEBAIGlu ZGV4IGI5NGM0MTEuLjk4NzVmOTYgMTAwNjQ0CiArICAgICphZGRyZXNzX3JldHVybgogKyAgICAg ID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxP Q0sgKHR5cGUpKTsKICsKLSsgIHJldHVybiAxOworKyAgcmV0dXJuIHR5cGU7CiArfQogKwogIC8q IEhlbHBlciBmdW5jdGlvbiBmb3IgdmFsdWVfYXQsIHZhbHVlX2F0X2xhenksIGFuZCB2YWx1ZV9h dF9sYXp5X3N0YWNrLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKLUBAIC05MzYsMTUg Kzk5MywyMSBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKK0BAIC05NTYs MTUgKzEwMTYsMjEgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAg IH0KICAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIHsK QEAgLTI4NjA4LDcgKzEwNjUzLDcgQEAgaW5kZXggYjk0YzQxMS4uOTg3NWY5NiAxMDA2NDQKICAJ fQogICAgICB9CiAgICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfcmVnaXN0ZXIp Ci1AQCAtMTM1Miw3ICsxNDE1LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1i b2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQorQEAgLTEzNzQsNyArMTQ0MCwxOCBAQCBhZGRyZXNz X29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKICAgIGlm ICgoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQog ICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAg LTI4NjI1LDEwICsxMDY3MCwxMCBAQCBpbmRleCBiOTRjNDExLi45ODc1Zjk2IDEwMDY0NAogKwl9 CiArCiArICAgICAgYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisgCiAgICAgICAgcmV0dXJu IHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwog ICAgICB9Ci0gCi1AQCAtMTQ1OCw2ICsxNTMyLDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNDgx LDYgKzE1NTgsNyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0 IHZhbHVlICphcmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAo dmFsdWVfdHlwZSAoYXJnMSkpOwpAQCAtMjg2MzYsNyArMTA2ODEsNyBAQCBpbmRleCBiOTRjNDEx Li45ODc1Zjk2IDEwMDY0NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRo aW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMgbm90 IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xNDY3 LDggKzE1NDIsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCitA QCAtMTQ5MCw4ICsxNTY4LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICph cmcxKQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBlcnJv ciAoXygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVt b3J5LiIpKTsKICAKQEAgLTI4NjUwLDE4MyArMTA2OTUsMTkgQEAgaW5kZXggYjk0YzQxMS4uOTg3 NWY5NiAxMDA2NDQKICB9CiAgCiAgLyogR2l2ZW4gYSB2YWx1ZSB3aGljaCBpcyBhIGZ1bmN0aW9u LCByZXR1cm4gYSB2YWx1ZSB3aGljaCBpcyBhIHBvaW50ZXIKLUBAIC0yMzM2LDcgKzI0MTUsNyBA QCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5hcmdz LAotICAgaW50IGJvZmZzZXQ7Ci0gICBpbnQgaXg7Ci0gICBpbnQgc3RhdGljX29mZnNldDsKLS0g IHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAg Km9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLSAKLSAg IGNvbnN0IGNoYXIgKm9ial90eXBlX25hbWUgPSBOVUxMOwotICAgY2hhciAqZnVuY19uYW1lID0g TlVMTDsKLUBAIC0yMzQ2LDEyICsyNDI1LDI1IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVj dCB0eXBlICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCi0gICBpZiAobWV0aG9kKQotICAgICB7Ci0g ICAgICAgZ2RiX2Fzc2VydCAob2JqKTsKLSsKLSsgICAgICAvKiBPQkogbWF5IGJlIGEgcG9pbnRl ciB2YWx1ZSByYXRoZXIgdGhhbiB0aGUgb2JqZWN0IGl0c2VsZi4gICovCi0rICAgICAgb2JqID0g Y29lcmNlX3JlZiAob2JqKTsKLSsgICAgICB3aGlsZSAoVFlQRV9DT0RFIChjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlIChvYmopKSkgPT0gVFlQRV9DT0RFX1BUUikKLSsJb2JqID0gY29lcmNlX3Jl ZiAodmFsdWVfaW5kIChvYmopKTsKLSAgICAgICBvYmpfdHlwZV9uYW1lID0gVFlQRV9OQU1FICh2 YWx1ZV90eXBlIChvYmopKTsKLS0gICAgICAvKiBIYWNrOiBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgb2Z0ZW4gcGFzc2VzIGluIGEgcG9pbnRlcgotLSAgICAgICAgIHZhbHVlIHJhdGhlciB0aGFu IHRoZSBvYmplY3QgaXRzZWxmLCBzbyB0cnkgYWdhaW4uICAqLwotLSAgICAgIGlmICgoIW9ial90 eXBlX25hbWUgfHwgISpvYmpfdHlwZV9uYW1lKSAKLS0JICAmJiAoVFlQRV9DT0RFICh2YWx1ZV90 eXBlIChvYmopKSA9PSBUWVBFX0NPREVfUFRSKSkKLS0Jb2JqX3R5cGVfbmFtZSA9IFRZUEVfTkFN RSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdWVfdHlwZSAob2JqKSkpOwotKwotKyAgICAgIC8qIEZp cnN0IGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBhIGRhdGEgbWVtYmVyLCBlLmcuIGEgcG9pbnRlciB0 bwotKwkgYSBmdW5jdGlvbi4gICovCi0rICAgICAgaWYgKFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAob2JqKSkpID09IFRZUEVfQ09ERV9TVFJVQ1QpCi0rCXsKLSsJICAqdmFs cCA9IHNlYXJjaF9zdHJ1Y3RfZmllbGQgKG5hbWUsIG9iaiwgMCwKLSsJCQkJICAgICAgIGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKG9iaikpLCAwKTsKLSsJICBpZiAoKnZhbHApCi0rCSAgICB7 Ci0rCSAgICAgICpzdGF0aWNwID0gMTsKLSsJICAgICAgcmV0dXJuIDA7Ci0rCSAgICB9Ci0rCX0K LSAKLSAgICAgICBmbnNfcHRyID0gdmFsdWVfZmluZF9vbG9hZF9tZXRob2RfbGlzdCAoJnRlbXAs IG5hbWUsIAotIAkJCQkJICAgICAgMCwgJm51bV9mbnMsIAotQEAgLTIzNzEsMjMgKzI0NjMsNDUg QEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBuYXJn cywKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgY29uc3QgY2hhciAqcXVhbGlmaWVk X25hbWUgPSBTWU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKGZzeW0pOwotKyAgICAgIGNvbnN0 IGNoYXIgKnF1YWxpZmllZF9uYW1lID0gTlVMTDsKLSAKLS0gICAgICAvKiBJZiB3ZSBoYXZlIGEg QysrIG5hbWUsIHRyeSB0byBleHRyYWN0IGp1c3QgdGhlIGZ1bmN0aW9uCi0tCSBwYXJ0LiAgKi8K LS0gICAgICBpZiAocXVhbGlmaWVkX25hbWUpCi0tCWZ1bmNfbmFtZSA9IGNwX2Z1bmNfbmFtZSAo cXVhbGlmaWVkX25hbWUpOwotLQotLSAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBDKysgbmFtZSwg dGhpcyBtdXN0IGJlIGEgQy1zdHlsZSBmdW5jdGlvbi4KLS0JIEp1c3QgcmV0dXJuIHRoZSBzYW1l IHN5bWJvbC4gIERvIHRoZSBzYW1lIGlmIGNwX2Z1bmNfbmFtZQotLQkgZmFpbHMgZm9yIHNvbWUg cmVhc29uLiAgKi8KLSsgICAgICBpZiAoZnN5bSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgcXVh bGlmaWVkX25hbWUgPSBTWU1CT0xfTkFUVVJBTF9OQU1FIChmc3ltKTsKLSsKLSsgICAgICAgICAg LyogSWYgd2UgaGF2ZSBhIGZ1bmN0aW9uIHdpdGggYSBDKysgbmFtZSwgdHJ5IHRvIGV4dHJhY3Qg anVzdAotKwkgICAgIHRoZSBmdW5jdGlvbiBwYXJ0LiAgRG8gbm90IHRyeSB0aGlzIGZvciBub24t ZnVuY3Rpb25zIChlLmcuCi0rCSAgICAgZnVuY3Rpb24gcG9pbnRlcnMpLiAgKi8KLSsgICAgICAg ICAgaWYgKHF1YWxpZmllZF9uYW1lCi0rICAgICAgICAgICAgICAmJiBUWVBFX0NPREUgKGNoZWNr X3R5cGVkZWYgKFNZTUJPTF9UWVBFIChmc3ltKSkpID09IFRZUEVfQ09ERV9GVU5DKQotKyAgICAg ICAgICAgIHsKLSsgICAgICAgICAgICAgIGZ1bmNfbmFtZSA9IGNwX2Z1bmNfbmFtZSAocXVhbGlm aWVkX25hbWUpOwotKwotKyAgICAgICAgICAgICAgLyogSWYgY3BfZnVuY19uYW1lIGRpZCBub3Qg cmVtb3ZlIGFueXRoaW5nLCB0aGUgbmFtZSBvZiB0aGUKLSsJICAgICAgICAgc3ltYm9sIGRpZCBu b3QgaW5jbHVkZSBzY29wZSBvciBhcmd1bWVudCB0eXBlcyAtIGl0IHdhcwotKwkgICAgICAgICBw cm9iYWJseSBhIEMtc3R5bGUgZnVuY3Rpb24uICAqLwotKyAgICAgICAgICAgICAgaWYgKGZ1bmNf bmFtZSAmJiBzdHJjbXAgKGZ1bmNfbmFtZSwgcXVhbGlmaWVkX25hbWUpID09IDApCi0rICAgICAg ICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICB4ZnJlZSAoZnVuY19uYW1lKTsKLSsgICAg ICAgICAgICAgICAgICBmdW5jX25hbWUgPSBOVUxMOwotKyAgICAgICAgICAgICAgICB9Ci0rICAg ICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIHsKLSsgICAgICAg ICAgZnVuY19uYW1lID0gKGNoYXIgKikgbmFtZTsKLSsgICAgICAgICAgcXVhbGlmaWVkX25hbWUg PSBuYW1lOwotKyAgICAgICAgfQotKyAgICAgIAotKyAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBD KysgbmFtZSwgdGhpcyBtdXN0IGJlIGEgQy1zdHlsZSBmdW5jdGlvbiBvcgotKwkgbm90IGEgZnVu Y3Rpb24gYXQgYWxsLiAgSnVzdCByZXR1cm4gdGhlIHNhbWUgc3ltYm9sLiAgRG8gdGhlCi0rCSBz YW1lIGlmIGNwX2Z1bmNfbmFtZSBmYWlscyBmb3Igc29tZSByZWFzb24uICAqLwotICAgICAgIGlm IChmdW5jX25hbWUgPT0gTlVMTCkKLSAgICAgICAgIHsKLSAJICAqc3ltcCA9IGZzeW07Ci0gICAg ICAgICAgIHJldHVybiAwOwotICAgICAgICAgfQotIAotLSAgICAgIG9sZF9jbGVhbnVwcyA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIGZ1bmNfbmFtZSk7Ci0gICAgICAgbWFrZV9jbGVhbnVwICh4ZnJl ZSwgb2xvYWRfc3ltcyk7Ci0gICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgb2xvYWRfY2hhbXBf YnYpOwotIAotQEAgLTIzOTgsOCArMjUxMiwxMSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1 Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5hcmdzLAotIAkJCQkJCSZvbG9hZF9jaGFtcF9idik7 Ci0gICAgIH0KLSAKLS0gIC8qIENoZWNrIGhvdyBiYWQgdGhlIGJlc3QgbWF0Y2ggaXMuICAqLwot KyAgLyogRGlkIHdlIGZpbmQgYSBtYXRjaCA/ICAqLwotKyAgaWYgKG9sb2FkX2NoYW1wID09IC0x KQotKyAgICBlcnJvciAoIk5vIHN5bWJvbCBcIiVzXCIgaW4gY3VycmVudCBjb250ZXh0LiIsIG5h bWUpOwotIAotKyAgLyogQ2hlY2sgaG93IGJhZCB0aGUgYmVzdCBtYXRjaCBpcy4gICovCi0gICBt YXRjaF9xdWFsaXR5ID0KLSAgICAgY2xhc3NpZnlfb2xvYWRfbWF0Y2ggKG9sb2FkX2NoYW1wX2J2 LCBuYXJncywKLSAJCQkgIG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwKLUBA IC0yNDU2LDggKzI1NzMsOCBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFy Z190eXBlcywgaW50IG5hcmdzLAotIAl9Ci0gICAgICAgKm9ianAgPSB0ZW1wOwotICAgICB9Ci0t ICBpZiAob2xkX2NsZWFudXBzICE9IE5VTEwpCi0tICAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51 cHMpOwotKwotKyAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7Ci0gCi0gICBzd2l0Y2ggKG1h dGNoX3F1YWxpdHkpCi0gICAgIHsKLUBAIC0yNTY1LDYgKzI2ODIsMTIgQEAgZmluZF9vbG9hZF9j aGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBuYXJncywK LSAgIG5ld19uYW1lc3BhY2VbbmFtZXNwYWNlX2xlbl0gPSAnXDAnOwotICAgbmV3X29sb2FkX3N5 bXMgPSBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0IChmdW5jX25hbWUsCi0gCQkJCQkgICAgICBu ZXdfbmFtZXNwYWNlKTsKLSsKLSsgIC8qIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZGVlcGVzc3Qg bGV2ZWwgcGVyZm9ybSBhcmd1bWVudAotKyAgICAgZGV0ZXJtaW5lZCBsb29rdXAuICAqLwotKyAg aWYgKCFzZWFyY2hlZF9kZWVwZXIpCi0rICAgIG1ha2Vfc3ltYm9sX292ZXJsb2FkX2xpc3RfYWRs IChhcmdfdHlwZXMsIG5hcmdzLCBmdW5jX25hbWUpOwotKwotICAgd2hpbGUgKG5ld19vbG9hZF9z eW1zW251bV9mbnNdKQotICAgICArK251bV9mbnM7Ci0gCi1AQCAtMjU5Nyw3ICsyNzIwLDYgQEAg ZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMs IGludCBuYXJncywKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgZ2RiX2Fzc2VydCAo bmV3X29sb2FkX2NoYW1wICE9IC0xKTsKLSAgICAgICAqb2xvYWRfc3ltcyA9IG5ld19vbG9hZF9z eW1zOwotICAgICAgICpvbG9hZF9jaGFtcCA9IG5ld19vbG9hZF9jaGFtcDsKLSAgICAgICAqb2xv YWRfY2hhbXBfYnYgPSBuZXdfb2xvYWRfY2hhbXBfYnY7Ci1AQCAtMzExNyw5ICszMjM5LDkgQEAg dmFsdWVfbWF5YmVfbmFtZXNwYWNlX2VsdCAoY29uc3Qgc3RydWN0IHR5cGUgKmN1cnR5cGUsCi0g ICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdDsKLSAKLS0gIHN5 bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2VfbmFtZSwgbmFtZSwgTlVM TCwKLS0JCQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCksIAotLQkJCQkgICAgVkFSX0RPTUFJ TiwgMSk7Ci0rICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZShuYW1lc3BhY2VfbmFt ZSwgbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWxlY3Rl ZF9ibG9jayAoMCksIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSX0RP TUFJTik7Ci0gCi0gICBpZiAoc3ltID09IE5VTEwpCi0gICAgIHJldHVybiBOVUxMOwotQEAgLTMy NjEsNyArMzM4Myw3IEBAIHZhbHVlX29mX2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29t cGxhaW4pCi0gCi0gICAvKiBDYWxsaW5nIGxvb2t1cF9ibG9ja19zeW1ib2wgaXMgbmVjZXNzYXJ5 IHRvIGdldCB0aGUgTE9DX1JFR0lTVEVSCi0gICAgICBzeW1ib2wgaW5zdGVhZCBvZiB0aGUgTE9D X0FSRyBvbmUgKGlmIGJvdGggZXhpc3QpLiAgKi8KLS0gIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1i b2wgKGIsIG5hbWUsIE5VTEwsIFZBUl9ET01BSU4pOwotKyAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYiwgbmFtZSwgVkFSX0RPTUFJTik7Ci0gICBpZiAoc3ltID09IE5VTEwpCi0gICAgIHsK LSAgICAgICBpZiAoY29tcGxhaW4pCi1AQCAtMzMxNSw4ICszNDM3LDYgQEAgdmFsdWVfc2xpY2Ug KHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKLSAgICAgICB8 fCBsb3dib3VuZCArIGxlbmd0aCAtIDEgPiB1cHBlcmJvdW5kKQotICAgICBlcnJvciAoXygic2xp Y2Ugb3V0IG9mIHJhbmdlIikpOwotIAotLSAgLyogRklYTUUtdHlwZS1hbGxvY2F0aW9uOiBuZWVk IGEgd2F5IHRvIGZyZWUgdGhpcyB0eXBlIHdoZW4gd2UgYXJlCi0tICAgICBkb25lIHdpdGggaXQu ICAqLwotICAgc2xpY2VfcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlICgoc3RydWN0IHR5 cGUgKikgTlVMTCwKLSAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAotIAkJCQkJ bG93Ym91bmQsIAogZGlmZiAtLWdpdCBhL2dkYi92YWxwcmludC5jIGIvZ2RiL3ZhbHByaW50LmMK LWluZGV4IDNmMjFhZTQuLjliMTViMWEgMTAwNjQ0CitpbmRleCBhZDYyNjhlLi5mYjBlZjdhIDEw MDY0NAogLS0tIGEvZ2RiL3ZhbHByaW50LmMKICsrKyBiL2dkYi92YWxwcmludC5jCi1AQCAtMjM2 LDcgKzIzNiw2IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM2LDYg KzM2LDcgQEAKKyAjaW5jbHVkZSAiZGZwLmgiCisgI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIK KyAjaW5jbHVkZSAiYWRhLWxhbmcuaCIKKysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgCisgI2lu Y2x1ZGUgPGVycm5vLmg+CisgCitAQCAtMjM3LDcgKzIzOCw2IEBAIHNjYWxhcl90eXBlX3AgKHN0 cnVjdCB0eXBlICp0eXBlKQogICAgICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6CiAgICAgIGNhc2Ug VFlQRV9DT0RFX1VOSU9OOgogICAgICBjYXNlIFRZUEVfQ09ERV9TRVQ6CkBAIC0yODgzNCw5MiAr MTA3MTUsOTggQEAgaW5kZXggM2YyMWFlNC4uOWIxNWIxYSAxMDA2NDQKICAgICAgY2FzZSBUWVBF X0NPREVfQklUU1RSSU5HOgogICAgICAgIHJldHVybiAwOwogICAgICBkZWZhdWx0OgotQEAgLTEx NTQsNiArMTE1Myw3IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorQEAgLTExNDIsNiArMTE0Miw3IEBAIHZhbF9w cmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLAorIHsKKyAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CisgICB1bnNp Z25lZCBsZW47CisrICBzdHJ1Y3QgdHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7CisgICBzdHJ1Y3Qg dHlwZSAqZWx0dHlwZSwgKmluZGV4X3R5cGU7CisgICB1bnNpZ25lZCBlbHRsZW47CisgICAvKiBQ b3NpdGlvbiBvZiB0aGUgYXJyYXkgZWxlbWVudCB3ZSBhcmUgZXhhbWluaW5nIHRvIHNlZQorQEAg LTExNTAsOSArMTE1MSwzMyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKKyAgIC8qIE51bWJlciBvZiByZXBldGl0 aW9ucyB3ZSBoYXZlIGRldGVjdGVkIHNvIGZhci4gICovCisgICB1bnNpZ25lZCBpbnQgcmVwczsK KyAgIExPTkdFU1QgbG93X2JvdW5kX2luZGV4ID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNr X3RvOworKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNzOworKyAgCisrICBiYWNr X3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKyAgdHlwZSA9IG9iamVjdF9h ZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7CisrICBpZiAoIXR5cGUpCisrICAgIHsK KysgICAgICBmcHV0c19maWx0ZXJlZCAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5 cGUpLCBzdHJlYW0pOworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1 cm47CisrICAgIH0KKysgIGlmIChhZGRyZXNzICE9IHNhdmVkX2FkZHJlc3MpCisrICAgIHsKKysg ICAgICBzaXplX3QgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5cGUpOworIAorLSAgZWx0dHlwZSA9 IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOworLSAgZWx0bGVuID0gVFlQRV9MRU5HVEggKGNoZWNr X3R5cGVkZWYgKGVsdHR5cGUpKTsKKysgICAgICB2YWxhZGRyID0geG1hbGxvYyAobGVuZ3RoKTsK KysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCAoZ2RiX2J5dGUgKikgdmFsYWRkcik7CisrICAg ICAgcmVhZF9tZW1vcnkgKGFkZHJlc3MsIChnZGJfYnl0ZSAqKSB2YWxhZGRyLCBsZW5ndGgpOwor KyAgICB9CisrCisrICAvKiBTa2lwIHR5cGVkZWZzIGJ1dCBkbyBub3QgcmVzb2x2ZSBUWVBFX0RZ TkFNSUMuICAqLworKyAgZWx0dHlwZSA9IHNhdmVkX3R5cGU7CisrICB3aGlsZSAoVFlQRV9DT0RF IChlbHR0eXBlKSA9PSBUWVBFX0NPREVfVFlQRURFRikKKysgICAgZWx0dHlwZSA9IFRZUEVfVEFS R0VUX1RZUEUgKGVsdHR5cGUpOworKyAgZWx0dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGVsdHR5 cGUpOworKworKyAgZWx0bGVuID0gVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRSAodHlwZSk7 CisgICBpbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsKICAKLSAgIGZvciAoOyBp IDwgbGVuICYmIHRoaW5nc19wcmludGVkIDwgb3B0aW9ucy0+cHJpbnRfbWF4OyBpKyspCisgICAv KiBDb21wdXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5LiAgT24gbW9zdCBh cnJheXMsCitAQCAtMTE2MCw5ICsxMTg1LDYgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgICAgICBpcyBzaW1w bHkgdGhlIHNpemUgb2YgdGhlIGFycmF5IGRpdmlkZWQgYnkgdGhlIHNpemUgb2YgdGhlIGVsZW1l bnRzLgorICAgICAgQnV0IGZvciBhcnJheXMgb2YgZWxlbWVudHMgd2hvc2Ugc2l6ZSBpcyB6ZXJv LCB3ZSBuZWVkIHRvIGxvb2sgYXQKKyAgICAgIHRoZSBib3VuZHMuICAqLworLSAgaWYgKGVsdGxl biAhPSAwKQorLSAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSkgLyBlbHRsZW47CistICBlbHNl CiAgICAgIHsKLSsgICAgICBzaXplX3QgZWx0X29mZnNldCA9IGkgKiBlbHRsZW47Ci0gICAgICAg aWYgKGkgIT0gMCkKLSAJewotIAkgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9hcnJheXMpCi1A QCAtMTE3Myw3ICsxMTczLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gICAgICAgcmVwMSA9IGkgKyAxOwot ICAgICAgIHJlcHMgPSAxOwotICAgICAgIHdoaWxlICgocmVwMSA8IGxlbikgJiYKLS0JICAgICAh bWVtY21wICh2YWxhZGRyICsgaSAqIGVsdGxlbiwgdmFsYWRkciArIHJlcDEgKiBlbHRsZW4sIGVs dGxlbikpCi0rCSAgICAgIW1lbWNtcCAodmFsYWRkciArIGVsdF9vZmZzZXQsIHZhbGFkZHIgKyBy ZXAxICogZWx0bGVuLCBlbHRsZW4pKQotIAl7Ci0gCSAgKytyZXBzOwotIAkgICsrcmVwMTsKKyAg ICAgICBMT05HRVNUIGxvdywgaGk7CisgCitAQCAtMTIzNiw2ICsxMjU4LDggQEAgdmFsX3ByaW50 X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCisgICAgIHsKKyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAg ICAgfQorKworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworIH0KKyAKKyAvKiBSZWFkIExFTiBi eXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0aGUKIGRp ZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCBhNDYyZWU0Li45Njhj ZGY0IDEwMDY0NAoraW5kZXggZDU1MjQwMi4uYjEwMjY5YyAxMDA2NDQKIC0tLSBhL2dkYi92YWx1 ZS5jCiArKysgYi9nZGIvdmFsdWUuYwotQEAgLTM3LDggKzM3LDEwIEBACi0gI2luY2x1ZGUgImJs b2NrLmgiCi0gI2luY2x1ZGUgImRmcC5oIgorQEAgLTM5LDYgKzM5LDcgQEAKICAjaW5jbHVkZSAi b2JqZmlsZXMuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKICAjaW5jbHVkZSAidmFs cHJpbnQuaCIKICAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKICsjaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKICAKICAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgogIAotQEAgLTE3MCw2ICsxNzIs MTQgQEAgc3RydWN0IHZhbHVlCi0gICAgICB0YWtlbiBvZmYgdGhpcyBsaXN0LiAgKi8KLSAgIHN0 cnVjdCB2YWx1ZSAqbmV4dDsKLSAKLSsgIC8qIFRoZSByZWZlcmVuY2UgY291bnQuICBBIHZhbHVl IHRoYXQgaXMgc3RpbGwgb24gdGhlIGBhbGxfdmFsdWVzJwotKyAgICAgbGlzdCB3aWxsIGhhdmUg YSByZWZlcmVuY2UgY291bnQgb2YgMC4gIEEgY2FsbCB0byBgcmVsZWFzZV92YWx1ZScKLSsgICAg IHdpbGwgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgKGFuZCByZW1vdmUgdGhlIHZhbHVl IGZyb20gdGhlCi0rICAgICBsaXN0LCB0aGUgZmlyc3QgdGltZSkuICBBIGNhbGwgdG8gYHZhbHVl X2ZyZWUnIHdpbGwgZGVjcmVtZW50IHRoZQotKyAgICAgcmVmZXJlbmNlIGNvdW50LCBhbmQgd2ls bCBmcmVlIHRoZSB2YWx1ZSB3aGVuIHRoZXJlIGFyZSBubyBtb3JlCi0rICAgICByZWZlcmVuY2Vz LiAgKi8KLSsgIGludCByZWZjb3VudDsKLSsKLSAgIC8qIFJlZ2lzdGVyIG51bWJlciBpZiB0aGUg dmFsdWUgaXMgZnJvbSBhIHJlZ2lzdGVyLiAgKi8KLSAgIHNob3J0IHJlZ251bTsKLSAKLUBAIC02 MzEsNiArNjQxLDEzIEBAIHZhbHVlX2ZyZWUgKHN0cnVjdCB2YWx1ZSAqdmFsKQotICAgICAgIGlm ICh2YWwtPnBhcmVudCAhPSBOVUxMKQotIAl2YWx1ZV9mcmVlICh2YWwtPnBhcmVudCk7Ci0gCi0r I2lmIDAKLSsgICAgICAvKiBXZSBuZWVkIHR5cGUgR0MgaW5zdGVhZC4gIFRoaXMgY2FuIGZhaWwg d2hlbiBhbiBvYmpmaWxlIGlzCi0rCSByZWNsYWltZWQgYW5kIHRoZW4gYSB2YWx1ZSBpcyBsYXRl ciBmcmVlZC4gICovCi0rICAgICAgdHlwZV9kZWNyZWYgKHZhbC0+dHlwZSk7Ci0rICAgICAgdHlw ZV9kZWNyZWYgKHZhbC0+ZW5jbG9zaW5nX3R5cGUpOwotKyNlbmRpZgotKwotICAgICAgIGlmIChW QUxVRV9MVkFMICh2YWwpID09IGx2YWxfY29tcHV0ZWQpCi0gCXsKLSAJICBzdHJ1Y3QgbHZhbF9m dW5jcyAqZnVuY3MgPSB2YWwtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOwotQEAgLTczNSw2ICs3 NTIsNyBAQCB2YWx1ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKLSAgICAgdmFsID0gYWxsb2Nh dGVfdmFsdWVfbGF6eSAoZW5jbF90eXBlKTsKLSAgIGVsc2UKLSAgICAgdmFsID0gYWxsb2NhdGVf dmFsdWUgKGVuY2xfdHlwZSk7Ci0rCi0gICB2YWwtPnR5cGUgPSBhcmctPnR5cGU7Ci0gICBWQUxV RV9MVkFMICh2YWwpID0gVkFMVUVfTFZBTCAoYXJnKTsKLSAgIHZhbC0+bG9jYXRpb24gPSBhcmct PmxvY2F0aW9uOwotQEAgLTc3MCwxMiArNzg4LDE1IEBAIHZhbHVlX2NvcHkgKHN0cnVjdCB2YWx1 ZSAqYXJnKQotIHZvaWQKLSBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFs dWUgKmNvbXBvbmVudCwgc3RydWN0IHZhbHVlICp3aG9sZSkKK0BAIC04MjgsMTIgKzgyOSwxNSBA QCB2b2lkCisgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21w b25lbnQsCisgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp3aG9sZSkKICB7CiArICBDT1JF X0FERFIgYWRkcjsKICsKLSAgIGlmIChWQUxVRV9MVkFMICh3aG9sZSkgPT0gbHZhbF9pbnRlcm5h bHZhcikKKyAgIGlmICh3aG9sZS0+bHZhbCA9PSBsdmFsX2ludGVybmFsdmFyKQogICAgICBWQUxV RV9MVkFMIChjb21wb25lbnQpID0gbHZhbF9pbnRlcm5hbHZhcl9jb21wb25lbnQ7CiAgICBlbHNl Ci0gICAgIFZBTFVFX0xWQUwgKGNvbXBvbmVudCkgPSBWQUxVRV9MVkFMICh3aG9sZSk7CisgICAg IFZBTFVFX0xWQUwgKGNvbXBvbmVudCkgPSB3aG9sZS0+bHZhbDsKICAKICAgIGNvbXBvbmVudC0+ bG9jYXRpb24gPSB3aG9sZS0+bG9jYXRpb247CiArCi0gICBpZiAoVkFMVUVfTFZBTCAod2hvbGUp ID09IGx2YWxfY29tcHV0ZWQpCisgICBpZiAod2hvbGUtPmx2YWwgPT0gbHZhbF9jb21wdXRlZCkK ICAgICAgewogICAgICAgIHN0cnVjdCBsdmFsX2Z1bmNzICpmdW5jcyA9IHdob2xlLT5sb2NhdGlv bi5jb21wdXRlZC5mdW5jczsKLUBAIC03ODMsNiArODA0LDEyIEBAIHNldF92YWx1ZV9jb21wb25l bnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LCBzdHJ1Y3QgdmFsdWUgKndob2xl KQorQEAgLTg0MSw2ICs4NDUsMTIgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3Ry dWN0IHZhbHVlICpjb21wb25lbnQsCiAgICAgICAgaWYgKGZ1bmNzLT5jb3B5X2Nsb3N1cmUpCiAg ICAgICAgICBjb21wb25lbnQtPmxvY2F0aW9uLmNvbXB1dGVkLmNsb3N1cmUgPSBmdW5jcy0+Y29w eV9jbG9zdXJlICh3aG9sZSk7CiAgICAgIH0KQEAgLTI4OTMyLDcgKzEwODE5LDcgQEAgaW5kZXgg YTQ2MmVlNC4uOTY4Y2RmNCAxMDA2NDQKICB9CiAgCiAgDAotQEAgLTkxMyw2ICs5NDAsMjkgQEAg c2hvd192YWx1ZXMgKGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkKK0BAIC05NzMsNiArOTgz LDI5IEBAIHNob3dfdmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAgICAgICAg bnVtX2V4cFsxXSA9ICdcMCc7CiAgICAgIH0KICB9CkBAIC0yODk2Miw3ICsxMDg0OSw3IEBAIGlu ZGV4IGE0NjJlZTQuLjk2OGNkZjQgMTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlhYmxlcy4g IFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2 YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMTM4OCw2ICsxNDM4LDQw IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAg LTE0NTEsNiArMTQ4NCw0MCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKICAgIHJldHVybiAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gsIGxhbmd1YWdl LCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQogIApAQCAtMjkwMDMsNyArMTA4OTAsNyBA QCBpbmRleCBhNDYyZWU0Li45NjhjZGY0IDEwMDY0NAogIC8qIFRoZSAnZnVuY3Rpb24nIGNvbW1h bmQuICBUaGlzIGRvZXMgbm90aGluZyAtLSBpdCBpcyBqdXN0IGEKICAgICBwbGFjZWhvbGRlciB0 byBsZXQgImhlbHAgZnVuY3Rpb24gTkFNRSIgd29yay4gIFRoaXMgaXMgYWxzbyB1c2VkIGFzCiAg ICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdWItY29tbWFuZCB0aGF0IGlzIGNyZWF0ZWQg d2hlbgotQEAgLTE0MzUsMTEgKzE1MTksMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3Qg dmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0xNDk4LDExICsxNTY1 LDEwIEBAIHByZXNlcnZlX29uZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCiAgCQkgICAgaHRhYl90IGNvcGllZF90eXBlcykKICB7CiAgICBpZiAo VFlQRV9PQkpGSUxFICh2YWx1ZS0+dHlwZSkgPT0gb2JqZmlsZSkKQEAgLTI5MDE3LDcgKzEwOTA0 LDcgQEAgaW5kZXggYTQ2MmVlNC4uOTY4Y2RmNCAxMDA2NDQKICAJCQkJCQkgY29waWVkX3R5cGVz KTsKICB9CiAgCi1AQCAtMTQ1NCwxMyArMTUzNywxMyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2 YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BA IC0xNTE3LDEzICsxNTgzLDEzIEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGlu dGVybmFsdmFyICp2YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgICBjYXNlIElOVEVS TkFMVkFSX0lOVEVHRVI6CiAgICAgICAgaWYgKHZhci0+dS5pbnRlZ2VyLnR5cGUgJiYgVFlQRV9P QkpGSUxFICh2YXItPnUuaW50ZWdlci50eXBlKSA9PSBvYmpmaWxlKQogIAl2YXItPnUuaW50ZWdl ci50eXBlCkBAIC0yOTAzMyw3MCArMTA5MjAsMzMgQEAgaW5kZXggYTQ2MmVlNC4uOTY4Y2RmNCAx MDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBA IC0yMTkyLDYgKzIyNzUsNDIgQEAgcGFja19sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1Y3QgdHlw ZSAqdHlwZSwgTE9OR0VTVCBudW0pCi0gfQotIAotIAotKy8qIFBhY2sgTlVNIGludG8gQlVGIHVz aW5nIGEgdGFyZ2V0IGZvcm1hdCBvZiBUWVBFLiAgKi8KLSsKLSt2b2lkCi0rcGFja191bnNpZ25l ZF9sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgVUxPTkdFU1QgbnVtKQot K3sKLSsgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChn ZXRfdHlwZV9hcmNoICh0eXBlKSk7Ci0rICBpbnQgbGVuOwotKwotKyAgdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHR5cGUpOwotKyAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOworQEAgLTIzODcsNyAr MjQ1MywyNCBAQCB2YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2RiX2J5dGUgKmRlYykKKyBzdHJ1Y3QgdmFsdWUgKgorIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1 ZSAqYXJnKQorIHsKKy0gIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlX2FyZ190bXAgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKKysgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlX2Fy Z190bXA7CiArCi0rICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCisrICBpZiAoVFlQRV9EWU5B TUlDICh2YWx1ZV90eXBlIChhcmcpKSkKICsgICAgewotKyAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6 Ci0rICAgIGNhc2UgVFlQRV9DT0RFX0NIQVI6Ci0rICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06Ci0r ICAgIGNhc2UgVFlQRV9DT0RFX0ZMQUdTOgotKyAgICBjYXNlIFRZUEVfQ09ERV9CT09MOgotKyAg ICBjYXNlIFRZUEVfQ09ERV9SQU5HRToKLSsgICAgY2FzZSBUWVBFX0NPREVfTUVNQkVSUFRSOgot KyAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgbGVuLCBieXRlX29yZGVyLCBudW0p OwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIFRZUEVfQ09ERV9SRUY6Ci0rICAgIGNhc2Ug VFlQRV9DT0RFX1BUUjoKLSsgICAgICBzdG9yZV90eXBlZF9hZGRyZXNzIChidWYsIHR5cGUsIChD T1JFX0FERFIpIG51bSk7Ci0rICAgICAgYnJlYWs7CisrICAgICAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKyAgICAgIENPUkVf QUREUiBhZGRyZXNzOwogKwotKyAgICBkZWZhdWx0OgotKyAgICAgIGVycm9yIChfKCJcCi0rVW5l eHBlY3RlZCB0eXBlICglZCkgZW5jb3VudGVyZWQgZm9yIHVuc2lnbmVkIGludGVnZXIgY29uc3Rh bnQuIiksCi0rCSAgICAgVFlQRV9DT0RFICh0eXBlKSk7CisrICAgICAgdmFsdWVfdHlwZV9hcmdf dG1wID0gdmFsdWVfdHlwZSAoYXJnKTsKKysgICAgICBhZGRyZXNzID0gdmFsdWVfcmF3X2FkZHJl c3MgKGFyZyk7CisrICAgICAgdmFsdWVfdHlwZV9hcmdfdG1wID0gb2JqZWN0X2FkZHJlc3NfZ2V0 X2RhdGEgKHZhbHVlX3R5cGVfYXJnX3RtcCwKKysJCQkJCQkgICAgJmFkZHJlc3MpOworKyAgICAg IGlmICghIHZhbHVlX3R5cGVfYXJnX3RtcCkKKysJZXJyb3IgKF8oIkF0dGVtcHQgdG8gY29lcmNl IG5vbi12YWxpZCB2YWx1ZS4iKSk7CisrICAgICAgYXJnID0gdmFsdWVfYXRfbGF6eSAodmFsdWVf dHlwZV9hcmdfdG1wLCBhZGRyZXNzKTsKKysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwog KyAgICB9Ci0rfQotKwotKwotIC8qIENvbnZlcnQgQyBudW1iZXJzIGludG8gbmV3bHkgYWxsb2Nh dGVkIHZhbHVlcy4gICovCi0gCi0gc3RydWN0IHZhbHVlICoKLUBAIC0yMjA1LDYgKzIzMjQsMTkg QEAgdmFsdWVfZnJvbV9sb25nZXN0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pCi0g fQotIAorKyAgZWxzZQorKyAgICB2YWx1ZV90eXBlX2FyZ190bXAgPSBjaGVja190eXBlZGVmICh2 YWx1ZV90eXBlIChhcmcpKTsKICAKLSsvKiBDb252ZXJ0IEMgdW5zaWduZWQgbnVtYmVycyBpbnRv IG5ld2x5IGFsbG9jYXRlZCB2YWx1ZXMuICAqLwotKwotK3N0cnVjdCB2YWx1ZSAqCi0rdmFsdWVf ZnJvbV91bG9uZ2VzdCAoc3RydWN0IHR5cGUgKnR5cGUsIFVMT05HRVNUIG51bSkKLSt7Ci0rICBz dHJ1Y3QgdmFsdWUgKnZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsKLSsgIHBhY2tfdW5z aWduZWRfbG9uZyAodmFsdWVfY29udGVudHNfcmF3ICh2YWwpLCB0eXBlLCBudW0pOwotKwotKyAg cmV0dXJuIHZhbDsKLSt9Ci0rCi0rCi0gLyogQ3JlYXRlIGEgdmFsdWUgcmVwcmVzZW50aW5nIGEg cG9pbnRlciBvZiB0eXBlIFRZUEUgdG8gdGhlIGFkZHJlc3MKLSAgICBBRERSLiAgKi8KLSBzdHJ1 Y3QgdmFsdWUgKgotQEAgLTIzNjMsNCArMjQ5NSw4IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5p dGlhbGl6ZWQuIikpOworICAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZV9hcmdfdG1wKSA9PSBU WVBFX0NPREVfUkVGKQorICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX1RBUkdFVF9UWVBF ICh2YWx1ZV90eXBlX2FyZ190bXApLAorQEAgLTI0ODUsNCArMjU2OCw4IEBAIFZBUklBQkxFIGlz IGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIs IG5vX2NsYXNzLCBmdW5jdGlvbl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBm b3Igc2hvd2luZyBoZWxwIG9uIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0 aW9ubGlzdCwgImZ1bmN0aW9uICIsIDAsICZjbWRsaXN0KTsKQEAgLTI5MTA2LDI3ICsxMDk1Niwy MSBAQCBpbmRleCBhNDYyZWU0Li45NjhjZGY0IDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21h cmtfdXNlZCAodmFsdWVfdHlwZXNfbWFya191c2VkKTsKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3Zh bHVlLmggYi9nZGIvdmFsdWUuaAotaW5kZXggMWYyMDg2ZS4uZGQ1MDNhZCAxMDA2NDQKK2luZGV4 IDEyY2JjMGEuLmE1MDhiZjYgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3Zh bHVlLmgKLUBAIC0zNDIsMTEgKzM0MiwxNiBAQCBleHRlcm4gTE9OR0VTVCB1bnBhY2tfZmllbGRf YXNfbG9uZyAoc3RydWN0IHR5cGUgKnR5cGUsCi0gZXh0ZXJuIHZvaWQgcGFja19sb25nIChnZGJf Ynl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pOwotIAotIGV4dGVybiBz dHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fbG9uZ2VzdCAoc3RydWN0IHR5cGUgKnR5cGUsIExPTkdF U1QgbnVtKTsKLStleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX3Vsb25nZXN0IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgVUxPTkdFU1QgbnVtKTsKLSBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9mcm9tX3BvaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7Ci0gZXh0 ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBE T1VCTEVTVCBudW0pOworQEAgLTM3Miw2ICszNzIsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAq dmFsdWVfZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0pOwogIGV4 dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBl LAogIAkJCQkJICBjb25zdCBnZGJfYnl0ZSAqZGVjYnl0ZXMpOwogIAogK2V4dGVybiBjb25zdCBj aGFyICpvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAoc3RydWN0IHR5cGUgKnR5cGUpOwot K2V4dGVybiBpbnQgb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHN0cnVjdCB0eXBlICp0eXBlLAot KwkJCQkgICAgQ09SRV9BRERSICphZGRyZXNzX3JldHVybik7CisrZXh0ZXJuIHN0cnVjdCB0eXBl ICpvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJCQkgICAg IENPUkVfQUREUiAqYWRkcmVzc19yZXR1cm4pOwogKwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZh bHVlX2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1 Y3QgdmFsdWUgKnZhbHVlX2F0X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRk cik7CiAgCi1AQCAtNjk0LDcgKzY5OSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Fs bG9jYXRlX3NwYWNlX2luX2luZmVyaW9yIChpbnQpOworQEAgLTcyOSw3ICs3MzMsNyBAQCBleHRl cm4gc3RydWN0IHZhbHVlICp2YWx1ZV9hbGxvY2F0ZV9zcGFjZV9pbl9pbmZlcmlvciAoaW50KTsK ICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwg aW50IGNvbXBsYWluKTsKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zdWJzY3JpcHRl ZF9ydmFsdWUgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCkBAIC0yOTEzNiw3ICsxMDk4MCw3IEBAIGlu ZGV4IDFmMjA4NmUuLmRkNTAzYWQgMTAwNjQ0CiAgLyogVXNlciBmdW5jdGlvbiBoYW5kbGVyLiAg Ki8KICAKIGRpZmYgLS1naXQgYS9nZGIvdmFyb2JqLmMgYi9nZGIvdmFyb2JqLmMKLWluZGV4IGI0 YjI0NjEuLjNhN2E4ODQgMTAwNjQ0CitpbmRleCBiOWI4ZTkxLi5hODFkMjVjIDEwMDY0NAogLS0t IGEvZ2RiL3Zhcm9iai5jCiArKysgYi9nZGIvdmFyb2JqLmMKIEBAIC0yNiw2ICsyNiw4IEBACkBA IC0yOTE0OCwzNyArMTA5OTIsMyBAQCBpbmRleCBiNGIyNDYxLi4zYTdhODg0IDEwMDY0NAogIAog ICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLWRpZmYg LS1naXQgYS9nZGIveGNvZmZyZWFkLmMgYi9nZGIveGNvZmZyZWFkLmMKLWluZGV4IGFjZDdiNTAu LjA5MjlhMzMgMTAwNjQ0Ci0tLS0gYS9nZGIveGNvZmZyZWFkLmMKLSsrKyBiL2dkYi94Y29mZnJl YWQuYwotQEAgLTMwMzAsNiArMzAzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyB4Y29mZl9z eW1fZm5zID0KLSAgIHhjb2ZmX25ld19pbml0LAkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRo aW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCi0gICB4Y29mZl9zeW1maWxlX2luaXQsCQkvKiBz eW1faW5pdDogcmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICB4 Y29mZl9pbml0aWFsX3NjYW4sCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8g c3ltdGFiICovCi0rICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLwotICAgeGNvZmZf c3ltZmlsZV9maW5pc2gsCQkvKiBzeW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFu dXAgKi8KLSAgIHhjb2ZmX3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6IHhsYXRlIG9m ZnNldHMgZXh0LT5pbnQgZm9ybSAqLwotICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBz eW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KLWRpZmYgLS1naXQgYS9n ZGIveHRlbnNhLWxpbnV4LXRkZXAuYyBiL2dkYi94dGVuc2EtbGludXgtdGRlcC5jCi1pbmRleCA2 NjdkOWIzLi4wZDg2MjE5IDEwMDY0NAotLS0tIGEvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMKLSsr KyBiL2dkYi94dGVuc2EtbGludXgtdGRlcC5jCi1AQCAtMjIsNiArMjIsNyBAQAotIAotICNpbmNs dWRlICJzb2xpYi1zdnI0LmgiCi0gI2luY2x1ZGUgInN5bXRhYi5oIgotKyNpbmNsdWRlICJsaW51 eC10ZGVwLmgiCi0gCi0gLyogT1Mgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gb2YgZ2RiYXJjaC4g ICovCi0gCi1AQCAtMzAsNiArMzEsOSBAQCB4dGVuc2FfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBn ZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gewotICAgc2V0X3Nv bGliX3N2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cwotICAgICAoZ2RiYXJjaCwgc3ZyNF9pbHAz Ml9mZXRjaF9saW5rX21hcF9vZmZzZXRzKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJv bV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVu Y19wdHJfYWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAt V21pc3NpbmctcHJvdG90eXBlcy4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTQxODY2LXJ3YXRj aC1iZWZvcmUtcnVuLnBhdGNoIGIvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNo CmluZGV4IDM3YmQwMDEuLmY0ODViMmYgMTAwNjQ0Ci0tLSBhL2dkYi1iejU0MTg2Ni1yd2F0Y2gt YmVmb3JlLXJ1bi5wYXRjaAorKysgYi9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0 Y2gKQEAgLTEsMjYgKzEsMjAgQEAKLS0tLSBhL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCi0r KysgYi9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxMC0wNS0yOCAyMDo1 MDozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWcv aTM4Ni9saW51eDY0Lm1oCTIwMTAtMDctMTMgMTk6MDI6NTQuMDAwMDAwMDAwICswMjAwCiBAQCAt Miw3ICsyLDcgQEAKICBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBcCiAg CWkzODYtbmF0Lm8gYW1kNjQtbmF0Lm8gYW1kNjQtbGludXgtbmF0Lm8gbGludXgtbmF0Lm8gXAog IAlwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBsaW51eC1mb3JrLm8KIC1OQVRfRklM RT0gY29uZmlnL25tLWxpbnV4LmgKICtOQVRfRklMRT0gbm0tbGludXg2NC5oCisgTkFUX0NERVBT ID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0CiAgCiAgIyBUaGUgZHluYW1pY2FsbHkgbG9h ZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLSAjIGdkYiBl eGVjdXRhYmxlLgotLS0tIGEvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgKLSsrKyBiL2dkYi9j b25maWcvaTM4Ni9ubS1saW51eC5oCi1AQCAtMjksNCArMjksNyBAQAotICNkZWZpbmUgRklMTF9G UFhSRUdTRVQKLSAjZW5kaWYKLSAKLSsvKiBSZWQgSGF0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg d2l0aCBnZGItNi44LiAgKi8KLSsjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2hhcmR3YXJlX3dhdGNo cG9pbnQodHlwZSwgY250LCBvdCkgMQotKwotICNlbmRpZiAvKiBubS1saW51eC5oICovCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCitJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCTIwMTAtMDct MTMgMTk6MDI6MjguMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDI4IEBACiArLyogTmF0aXZl IHN1cHBvcnQgZm9yIEdOVS9MaW51eCBhbWQ2NC4KICsKQEAgLTUwLDkgKzQ0LDExIEBACiArI2Rl ZmluZSB0YXJnZXRfY2FuX3VzZV9oYXJkd2FyZV93YXRjaHBvaW50KHR5cGUsIGNudCwgb3QpIDEK ICsKICsjZW5kaWYgLyogTk1fTElOVVg2NF9IICovCi0tLS0gYS9nZGIvdGFyZ2V0LmgKLSsrKyBi L2dkYi90YXJnZXQuaAotQEAgLTEyNTcsOCArMTI1NywxMCBAQCBleHRlcm4gY2hhciAqbm9ybWFs X3BpZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi90YXJnZXQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv dGFyZ2V0LmgJMjAxMC0wNy0xMiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi90YXJnZXQuaAkyMDEwLTA3LTEzIDE5OjAyOjI4LjAwMDAwMDAwMCAr MDIwMAorQEAgLTEyOTgsOCArMTI5OCwxMCBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19z dHIgKHB0aWRfdCBwCiAgICAgYnBfaGFyZHdhcmVfYnJlYWtwb2ludC4gIENOVCBpcyB0aGUgbnVt YmVyIG9mIHN1Y2ggd2F0Y2hwb2ludHMgdXNlZCBzbyBmYXIKICAgICAoaW5jbHVkaW5nIHRoaXMg b25lPykuICBPVEhFUlRZUEUgaXMgd2hvIGtub3dzIHdoYXQuLi4gICovCiAgCkBAIC02Myw4ICs1 OSwxMCBAQAogIAogICNkZWZpbmUgdGFyZ2V0X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludChh ZGRyLCBsZW4pIFwKICAgICAgKCpjdXJyZW50X3RhcmdldC50b19yZWdpb25fb2tfZm9yX2h3X3dh dGNocG9pbnQpIChhZGRyLCBsZW4pCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3dhdGNocG9pbnQtaHctYmVmb3JlLXJ1bi5leHAKK0luZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVu LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS93YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCTIwMTAtMDctMTMgMTk6MDI6MjguMDAwMDAw MDAwICswMjAwCiBAQCAtMCwwICsxLDQwIEBACiArIyBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItYno1NjI3NjMt cHJldHR5LXByaW50LTJkLXZlY3RvcnMtcHJlcmVxLnBhdGNoIGIvZ2RiLWJ6NTYyNzYzLXByZXR0 eS1wcmludC0yZC12ZWN0b3JzLXByZXJlcS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggM2NjMWUxNy4uMDAwMDAwMAotLS0gYS9nZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJk LXZlY3RvcnMtcHJlcmVxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDI3ICswLDAgQEAKLWNv bW1pdCBlNWVhOGQwMjYwMTVjMmEwYzc3NzQ3ODhiNDI1OTE0ODU3ZGUxZmZiCi1BdXRob3I6IHBt dWxkb29uIDxwbXVsZG9vbj4KLURhdGU6ICAgV2VkIEFwciAxNCAxMjowMjo0MiAyMDEwICswMDAw Ci0KLSAgICAyMDEwLTA0LTE0ICBQaGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgot ICAgIAotICAgIAlQUiBweXRob24vMTEzODEKLSAgICAKLSAgICAJKiBweXRob24vcHktcHJldHR5 cHJpbnQuYyAocHJldHR5X3ByaW50X29uZV92YWx1ZSk6IFRlc3QgZm9yCi0gICAgCVB5X05vbmUu Ci0gICAgCShwcmludF9zdHJpbmdfcmVwcik6IFRlc3QgZm9yIFB5X05vbmUuICBTZXQgZmxhZ3Mg YWNjb3JkaW5nbHkuCi0gICAgCVJldHVybiB2YWx1ZSBkZXBlbmRpbmcgb24gcmV0dXJuIHR5cGUu Ci0gICAgCShwcmludF9jaGlsZHJlbik6IFRha2UgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIg ZGF0YSB3YXMgcHJpbnRlZAotICAgIAliZWZvcmUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkLiAg QWx0ZXIgb3V0cHV0IGFjY29yZGluZ2x5LgotICAgIAkoYXBwbHlfdmFsX3ByZXR0eV9wcmludGVy KTogQ2FwdHVyZSByZXR1cm4gdmFsdWUgZnJvbQotICAgIAlwcmludF9zdHJpbmdfcmVwciBhbmQg cGFzcyB0byBwcmludF9jaGlsZHJlbi4KLSAgICAKLSAgICAyMDEwLTA0LTE0ICBQaGlsIE11bGRv b24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotICAgIAotICAgIAkqIGdkYi5weXRob24vcHktcHJl dHR5cHJpbnQucHkgKE5vU3RyaW5nQ29udGFpbmVyUHJpbnRlcik6IE5ldyBwcmludGVyLgotICAg IAkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQuYzogQWRkIGp1c3RjaGlsZHJlbiBzdHJ1Y3Qs IHR5cGVkZWZzLgotICAgIAkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwOiBOZXcgdGVz dCBmb3IgdG9fc3RyaW5nIHJldHVybmluZyBOb25lLgotICAgIAkqIGdkYi5weXRob24vcHktbWku ZXhwOiBOZXcgdGVzdCBmb3IgdG9fc3RyaW5nIHJldHVybmluZyBOb25lLgotICAgIAotICAgIDIw MTAtMDQtMTQgIFBoaWwgTXVsZG9vbiAgPHBtdWxkb29uQHJlZGhhdC5jb20+Ci0gICAgCi0gICAg CSogZ2RiLnRleGluZm8gKFByZXR0eSBQcmludGluZyk6IERvY3VtZW50IGJlaGF2aW91ciB3aGVu IHRvX3N0cmluZwotICAgIAlyZXR1cm5zIE5vbmUuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMj IyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEsMTYgQEAKLSsyMDEwLTA0LTE0ICBQaGlsIE11 bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotKwotKwlQUiBweXRob24vMTEzODEKLSsKLSsJ KiBweXRob24vcHktcHJldHR5cHJpbnQuYyAocHJldHR5X3ByaW50X29uZV92YWx1ZSk6IFRlc3Qg Zm9yCi0rCVB5X05vbmUuCi0rCShwcmludF9zdHJpbmdfcmVwcik6IFRlc3QgZm9yIFB5X05vbmUu ICBTZXQgZmxhZ3MgYWNjb3JkaW5nbHkuCi0rCVJldHVybiB2YWx1ZSBkZXBlbmRpbmcgb24gcmV0 dXJuIHR5cGUuCi0rCShwcmludF9jaGlsZHJlbik6IFRha2UgYSB2YWx1ZSBpbmRpY2F0aW5nIHdo ZXRoZXIgZGF0YSB3YXMgcHJpbnRlZAotKwliZWZvcmUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVk LiAgQWx0ZXIgb3V0cHV0IGFjY29yZGluZ2x5LgotKwkoYXBwbHlfdmFsX3ByZXR0eV9wcmludGVy KTogQ2FwdHVyZSByZXR1cm4gdmFsdWUgZnJvbQotKwlwcmludF9zdHJpbmdfcmVwciBhbmQgcGFz cyB0byBwcmludF9jaGlsZHJlbi4KLSsKLSAyMDEwLTA0LTEzICBNYXJrIEtldHRlbmlzICA8a2V0 dGVuaXNAZ251Lm9yZz4KLSAKLSAJUFIgY29yZWZpbGVzLzExNDgxCi0jIyMgYS9nZGIvZG9jL0No YW5nZUxvZwotIyMjIGIvZ2RiL2RvYy9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTAt MDQtMTQgIFBoaWwgTXVsZG9vbiAgPHBtdWxkb29uQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRl eGluZm8gKFByZXR0eSBQcmludGluZyk6IERvY3VtZW50IGJlaGF2aW91ciB3aGVuIHRvX3N0cmlu ZwotKwlyZXR1cm5zIE5vbmUuCi0rCi0gMjAxMC0wNC0wOSAgU3RhbiBTaGVicyAgPHN0YW5AY29k ZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoZ2RiL21pIFRyYWNlcG9pbnQgQ29t bWFuZHMpIDwtdHJhY2Utc3RhdHVzPjoKLUluZGV4OiBnZGItNy4xL2dkYi9kb2MvZ2RiLnRleGlu Zm8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEw LTA2LTMwIDAzOjIyOjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2RvYy9nZGIu dGV4aW5mbwkyMDEwLTA2LTMwIDAzOjIyOjIwLjAwMDAwMDAwMCArMDIwMAotQEAgLTIwMzQ0LDYg KzIwMzQ0LDkgQEAgdGhlIHJlc3VsdGluZyB2YWx1ZS4gIEFnYWluLCB0aGlzIG1heSByZQotIHBy ZXR0eS1wcmludGVyLiAgUHl0aG9uIHNjYWxhcnMgKGludGVnZXJzLCBmbG9hdHMsIGFuZCBib29s ZWFucykgYW5kCi0gc3RyaW5ncyBhcmUgY29udmVydGlibGUgdG8gQGNvZGV7Z2RiLlZhbHVlfTsg b3RoZXIgdHlwZXMgYXJlIG5vdC4KLSAKLStGaW5hbGx5LCBpZiB0aGlzIG1ldGhvZCByZXR1cm5z IEBjb2Rle05vbmV9IHRoZW4gbm8gZnVydGhlciBvcGVyYXRpb25zCi0rYXJlIHBlZm9ybWVkIGlu IHRoaXMgbWV0aG9kIGFuZCBub3RoaW5nIGlzIHByaW50ZWQuCi0rCi0gSWYgdGhlIHJlc3VsdCBp cyBub3Qgb25lIG9mIHRoZXNlIHR5cGVzLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgotIEBlbmQg ZGVmb3AKLSAKLUluZGV4OiBnZGItNy4xL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAx MC0wNi0zMCAwMzoyMjowMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9weXRob24v cHktcHJldHR5cHJpbnQuYwkyMDEwLTA2LTMwIDAzOjIzOjM4LjAwMDAwMDAwMCArMDIwMAotQEAg LTEyNSw5ICsxMjUsMTIgQEAgZmluZF9wcmV0dHlfcHJpbnRlciAoUHlPYmplY3QgKnZhbHVlKQot IAotIC8qIFByZXR0eS1wcmludCBhIHNpbmdsZSB2YWx1ZSwgdmlhIHRoZSBwcmludGVyIG9iamVj dCBQUklOVEVSLgotICAgIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nLCBhIFB5T2Jq ZWN0IGNvbnRhaW5pbmcgdGhlIHN0cmluZwotLSAgIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlLCBp ZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlLAotLSAgICpPVVRfVkFMVUUgaXMgc2V0IHRv IHRoZSB2YWx1ZSwgYW5kIE5VTEwgaXMgcmV0dXJuZWQuICBPbiBlcnJvciwKLS0gICAqT1VUX1ZB TFVFIGlzIHNldCB0byBOVUxMLCBhbmQgTlVMTCBpcyByZXR1cm5lZC4gICovCi0rICAgaXMgcmV0 dXJuZWQuICBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBQeV9OT05FIHRoYXQgbWVhbnMgdGhlIHBy ZXR0eQotKyAgIHByaW50ZXIgcmV0dXJuZWQgdGhlIFB5dGhvbiBOb25lIGFzIGEgdmFsdWUuICBP dGhlcndpc2UsIGlmIHRoZQotKyAgIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSwgICpPVVRfVkFM VUUgaXMgc2V0IHRvIHRoZSB2YWx1ZSwgYW5kIE5VTEwKLSsgICBpcyByZXR1cm5lZC4gIE9uIGVy cm9yLCAqT1VUX1ZBTFVFIGlzIHNldCB0byBOVUxMLCBhbmQgTlVMTCBpcwotKyAgIHJldHVybmVk LiAgKi8KLSsKLSBzdGF0aWMgUHlPYmplY3QgKgotIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5 T2JqZWN0ICpwcmludGVyLCBzdHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCi0gewotQEAgLTE0MCw3 ICsxNDMsOCBAQCBwcmV0dHlfcHJpbnRfb25lX3ZhbHVlIChQeU9iamVjdCAqcHJpbnRlCi0gICAg ICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MgKHByaW50ZXIsIGdkYnB5X3Rv X3N0cmluZ19jc3QsIE5VTEwpOwotICAgICAgIGlmIChyZXN1bHQpCi0gCXsKLS0JICBpZiAoISBn ZGJweV9pc19zdHJpbmcgKHJlc3VsdCkgJiYgISBnZGJweV9pc19sYXp5X3N0cmluZyAocmVzdWx0 KSkKLSsJICBpZiAoISBnZGJweV9pc19zdHJpbmcgKHJlc3VsdCkgJiYgISBnZGJweV9pc19sYXp5 X3N0cmluZyAocmVzdWx0KSAgCi0rCSAgICAgICYmIHJlc3VsdCAhPSBQeV9Ob25lKQotIAkgICAg ewotIAkgICAgICAqb3V0X3ZhbHVlID0gY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAocmVzdWx0 KTsKLSAgCSAgICAgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKLUBAIC0xODQsOCArMTg4LDExIEBA IGdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKFB5T2JqZWN0ICpwcmludGUKLSB9Ci0gCi0gLyogSGVs cGVyIGZvciBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgd2hpY2ggY2FsbHMgdG9fc3RyaW5nIGFu ZAotLSAgIGZvcm1hdHMgdGhlIHJlc3VsdC4gICovCi0tc3RhdGljIHZvaWQKLSsgICBmb3JtYXRz IHRoZSByZXN1bHQuICBJZiB0aGUgdmFsdWUgcmV0dXJuZCBpcyBQeV9Ob25lLCBub3RoaW5nIGlz Ci0rICAgcHJpbnRlZCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSAxOyBpbiBhbGwgb3RoZXIg Y2FzZXMgZGF0YSBpcwotKyAgIHByaW50ZWQgYXMgZ2l2ZW4gYnkgdGhlIHByZXR0eSBwcmludGVy IGFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLgotKyovCi0rc3RhdGljIGludAotIHByaW50X3N0 cmluZ19yZXByIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QgY2hhciAqaGludCwKLSAJCSAgIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAotIAkJICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1AQCAtMTk0LDUyICsyMDEsNTggQEAgcHJpbnRf c3RyaW5nX3JlcHIgKFB5T2JqZWN0ICpwcmludGVyLCBjbwotIHsKLSAgIHN0cnVjdCB2YWx1ZSAq cmVwbGFjZW1lbnQgPSBOVUxMOwotICAgUHlPYmplY3QgKnB5X3N0ciA9IE5VTEw7Ci0rICBpbnQg aXNfcHlfbm9uZSA9IDA7Ci0gCi0gICBweV9zdHIgPSBwcmV0dHlfcHJpbnRfb25lX3ZhbHVlIChw cmludGVyLCAmcmVwbGFjZW1lbnQpOwotICAgaWYgKHB5X3N0cikKLSAgICAgewotLSAgICAgIGdk Yl9ieXRlICpvdXRwdXQgPSBOVUxMOwotLSAgICAgIGxvbmcgbGVuZ3RoOwotLSAgICAgIHN0cnVj dCB0eXBlICp0eXBlOwotLSAgICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLS0gICAgICBQeU9i amVjdCAqc3RyaW5nID0gTlVMTDsKLS0gICAgICBpbnQgaXNfbGF6eTsKLS0gICAgICAKLS0gICAg ICBpc19sYXp5ID0gZ2RicHlfaXNfbGF6eV9zdHJpbmcgKHB5X3N0cik7Ci0tICAgICAgaWYgKGlz X2xhenkpCi0tCW91dHB1dCA9IGdkYnB5X2V4dHJhY3RfbGF6eV9zdHJpbmcgKHB5X3N0ciwgJnR5 cGUsICZsZW5ndGgsICZlbmNvZGluZyk7Ci0rICAgICAgaWYgKHB5X3N0ciA9PSBQeV9Ob25lKQot Kwlpc19weV9ub25lID0gMTsKLSAgICAgICBlbHNlCi0gCXsKLS0JICBzdHJpbmcgPSBweXRob25f c3RyaW5nX3RvX3RhcmdldF9weXRob25fc3RyaW5nIChweV9zdHIpOwotLQkgIGlmIChzdHJpbmcp Ci0rCSAgZ2RiX2J5dGUgKm91dHB1dCA9IE5VTEw7Ci0rCSAgbG9uZyBsZW5ndGg7Ci0rCSAgc3Ry dWN0IHR5cGUgKnR5cGU7Ci0rCSAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotKwkgIFB5T2JqZWN0 ICpzdHJpbmcgPSBOVUxMOwotKwkgIGludCBpc19sYXp5OwotKwotKwkgIGlzX2xhenkgPSBnZGJw eV9pc19sYXp5X3N0cmluZyAocHlfc3RyKTsKLSsJICBpZiAoaXNfbGF6eSkKLSsJICAgIG91dHB1 dCA9IGdkYnB5X2V4dHJhY3RfbGF6eV9zdHJpbmcgKHB5X3N0ciwgJnR5cGUsICZsZW5ndGgsICZl bmNvZGluZyk7Ci0rCSAgZWxzZQotIAkgICAgewotLQkgICAgICBvdXRwdXQgPSBQeVN0cmluZ19B c1N0cmluZyAoc3RyaW5nKTsKLS0JICAgICAgbGVuZ3RoID0gUHlTdHJpbmdfU2l6ZSAoc3RyaW5n KTsKLS0JICAgICAgdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fY2hhcjsK LSsJICAgICAgc3RyaW5nID0gcHl0aG9uX3N0cmluZ190b190YXJnZXRfcHl0aG9uX3N0cmluZyAo cHlfc3RyKTsKLSsJICAgICAgaWYgKHN0cmluZykKLSsJCXsKLSsJCSAgb3V0cHV0ID0gUHlTdHJp bmdfQXNTdHJpbmcgKHN0cmluZyk7Ci0rCQkgIGxlbmd0aCA9IFB5U3RyaW5nX1NpemUgKHN0cmlu Zyk7Ci0rCQkgIHR5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2NoYXI7Ci0r CQl9Ci0rCSAgICAgIGVsc2UKLSsJCWdkYnB5X3ByaW50X3N0YWNrICgpOwotKwkgICAgICAKLSsJ ICAgIH0KLSsJCi0rCSAgaWYgKG91dHB1dCkKLSsJICAgIHsKLSsJICAgICAgaWYgKGlzX2xhenkg fHwgKGhpbnQgJiYgIXN0cmNtcCAoaGludCwgInN0cmluZyIpKSkKLSsJCUxBX1BSSU5UX1NUUklO RyAoc3RyZWFtLCB0eXBlLCBvdXRwdXQsIGxlbmd0aCwgZW5jb2RpbmcsCi0rCQkJCSAwLCBvcHRp b25zKTsKLSsJICAgICAgZWxzZQotKwkJZnB1dHNfZmlsdGVyZWQgKG91dHB1dCwgc3RyZWFtKTsK LSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICBnZGJweV9wcmludF9zdGFjayAoKTsKLSAJICAKLS0J fQotLSAgICAgIAotLSAgICAgIGlmIChvdXRwdXQpCi0tCXsKLS0JICBpZiAoaXNfbGF6eSB8fCAo aGludCAmJiAhc3RyY21wIChoaW50LCAic3RyaW5nIikpKQotLQkgICAgTEFfUFJJTlRfU1RSSU5H IChzdHJlYW0sIHR5cGUsIG91dHB1dCwgbGVuZ3RoLCBlbmNvZGluZywKLS0JCQkgICAgIDAsIG9w dGlvbnMpOwotKwkgIGlmIChzdHJpbmcpCi0rCSAgICBQeV9ERUNSRUYgKHN0cmluZyk7Ci0gCSAg ZWxzZQotLQkgICAgZnB1dHNfZmlsdGVyZWQgKG91dHB1dCwgc3RyZWFtKTsKLS0JfQotLSAgICAg IGVsc2UKLS0JZ2RicHlfcHJpbnRfc3RhY2sgKCk7Ci0tICAgICAgCi0tICAgICAgaWYgKHN0cmlu ZykKLS0JUHlfREVDUkVGIChzdHJpbmcpOwotLSAgICAgIGVsc2UKLS0JeGZyZWUgKG91dHB1dCk7 Ci0rCSAgICB4ZnJlZSAob3V0cHV0KTsKLSAgICAgICAKLS0gICAgICB4ZnJlZSAoZW5jb2Rpbmcp OwotLSAgICAgIFB5X0RFQ1JFRiAocHlfc3RyKTsKLSsJICB4ZnJlZSAoZW5jb2RpbmcpOwotKwkg IFB5X0RFQ1JFRiAocHlfc3RyKTsKLSsJfQotICAgICB9Ci0gICBlbHNlIGlmIChyZXBsYWNlbWVu dCkKLSAgICAgewotQEAgLTI1MCw2ICsyNjMsOCBAQCBwcmludF9zdHJpbmdfcmVwciAoUHlPYmpl Y3QgKnByaW50ZXIsIGNvCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgZ2RicHlfcHJpbnRfc3RhY2sg KCk7Ci0rCi0rICByZXR1cm4gaXNfcHlfbm9uZTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0z MjgsMTIgKzM0MywxNCBAQCBwdXNoX2R1bW15X3B5dGhvbl9mcmFtZSAoKQotIH0KLSAKLSAvKiBI ZWxwZXIgZm9yIGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciB0aGF0IGZvcm1hdHMgY2hpbGRyZW4g b2YgdGhlCi0tICAgcHJpbnRlciwgaWYgYW55IGV4aXN0LiAgKi8KLSsgICBwcmludGVyLCBpZiBh bnkgZXhpc3QuICBJZiBpc19weV9ub25lIGlzIHRydWUsIHRoZW4gbm90aGluZyBoYXMKLSsgICBi ZWVuIHByaW50ZWQgYnkgdG9fc3RyaW5nLCBhbmQgZm9ybWF0IG91dHB1dCBhY2NvcmRpbmdseS4g Ki8KLSBzdGF0aWMgdm9pZAotIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29u c3QgY2hhciAqaGludCwKLSAJCXN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAot IAkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi0tCQljb25zdCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZ3VhZ2UpCi0rCQljb25zdCBzdHJ1Y3QgbGFuZ3VhZ2Vf ZGVmbiAqbGFuZ3VhZ2UsCi0rCQlpbnQgaXNfcHlfbm9uZSkKLSB7Ci0gICBpbnQgaXNfbWFwLCBp c19hcnJheSwgZG9uZV9mbGFnLCBwcmV0dHk7Ci0gICB1bnNpZ25lZCBpbnQgaTsKLUBAIC00MTMs NyArNDMwLDEzIEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKLSAJ IDIuIEFycmF5cy4gIEFsd2F5cyBwcmludCBhICIsIi4KLSAJIDMuIE90aGVyLiAgQWx3YXlzIHBy aW50IGEgIiwiLiAgKi8KLSAgICAgICBpZiAoaSA9PSAwKQotLQlmcHV0c19maWx0ZXJlZCAoIiA9 IHsiLCBzdHJlYW0pOwotKwl7Ci0rICAgICAgICAgaWYgKGlzX3B5X25vbmUpCi0rICAgICAgICAg ICBmcHV0c19maWx0ZXJlZCAoInsiLCBzdHJlYW0pOwotKyAgICAgICAgIGVsc2UKLSsgICAgICAg ICAgIGZwdXRzX2ZpbHRlcmVkICgiID0geyIsIHN0cmVhbSk7Ci0rICAgICAgIH0KLSsKLSAgICAg ICBlbHNlIGlmICghIGlzX21hcCB8fCBpICUgMiA9PSAwKQotIAlmcHV0c19maWx0ZXJlZCAocHJl dHR5ID8gIiwiIDogIiwgIiwgc3RyZWFtKTsKLSAKLUBAIC01MzcsNyArNTYwLDcgQEAgYXBwbHlf dmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdAotICAgY2hhciAqaGludCA9IE5VTEw7 Ci0gICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Ci0gICBpbnQgcmVzdWx0ID0gMDsKLS0KLSsg IGludCBpc19weV9ub25lID0gMDsKLSAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdk YmFyY2gsIGxhbmd1YWdlKTsKLSAKLSAgIC8qIEluc3RhbnRpYXRlIHRoZSBwcmludGVyLiAgKi8K LUBAIC01NjIsOSArNTg1LDExIEBAIGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5 cGUgKnQKLSAgIG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmaGludCk7Ci0g Ci0gICAvKiBQcmludCB0aGUgc2VjdGlvbiAqLwotLSAgcHJpbnRfc3RyaW5nX3JlcHIgKHByaW50 ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgbGFuZ3VhZ2UsCi0tCQkgICAgIGdk YmFyY2gpOwotLSAgcHJpbnRfY2hpbGRyZW4gKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJz ZSwgb3B0aW9ucywgbGFuZ3VhZ2UpOwotKyAgaXNfcHlfbm9uZSA9IHByaW50X3N0cmluZ19yZXBy IChwcmludGVyLCBoaW50LCBzdHJlYW0sIHJlY3Vyc2UsCi0rCQkJCSAgb3B0aW9ucywgbGFuZ3Vh Z2UsIGdkYmFyY2gpOwotKyAgcHJpbnRfY2hpbGRyZW4gKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwg cmVjdXJzZSwgb3B0aW9ucywgbGFuZ3VhZ2UsCi0rCQkgIGlzX3B5X25vbmUpOwotKwotICAgcmVz dWx0ID0gMTsKLSAKLSAKLUluZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1taS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LW1pLmV4cAkyMDEwLTAxLTE0IDA5OjAzOjM3LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pLmV4cAkyMDEwLTA2LTMwIDAz OjIyOjIwLjAwMDAwMDAwMCArMDIwMAotQEAgLTYxLDYgKzYxLDE2IEBAIG1pX2xpc3RfdmFyb2Jq X2NoaWxkcmVuIGNvbnRhaW5lciB7Ci0gCi0gbWlfZGVsZXRlX3Zhcm9iaiBjb250YWluZXIgImRl bGV0ZSB2YXJvYmoiCi0gCi0rbWlfY3JlYXRlX2R5bmFtaWNfdmFyb2JqIG5zY29udCBuc3R5cGUg XAotKyAgImNyZWF0ZSBuc2NvbnQgdmFyb2JqLCBubyBwcmV0dHktcHJpbnRpbmciCi0rCi0rbWlf bGlzdF92YXJvYmpfY2hpbGRyZW4gbnNjb250IHsKLSsgIHsgbnNjb250LmxlbiBsZW4gMCBpbnQg fQotKyAgeyBuc2NvbnQuZWxlbWVudHMgZWxlbWVudHMgMSAiaW50IC4iIH0KLSt9ICJleGFtaW5l IG5zY29udCBjaGlsZHJlbj0wLCBubyBwcmV0dHktcHJpbnRpbmciCi0rCi0rbWlfZGVsZXRlX3Zh cm9iaiBuc2NvbnQgImRlbGV0ZSB2YXJvYmoiCi0rCi0gbWlfZ2RiX3Rlc3QgIi1lbmFibGUtcHJl dHR5LXByaW50aW5nIiAiIgotIAotIG1pX2NyZWF0ZV92YXJvYmpfY2hlY2tlZCBzdHJpbmcgc3Ry aW5nXzEgXAotQEAgLTIzOSw0ICsyNDksMjkgQEAgbWlfY29udGludWVfdG9fbGluZSBcCi0gCi0g bWlfdmFyb2JqX3VwZGF0ZV93aXRoX3R5cGVfY2hhbmdlIGNvbnRhaW5lciBpbnQgMCAidXBkYXRl IGFmdGVyIHR5cGUgY2hhbmdlIgotIAotKwotK21pX2NvbnRpbnVlX3RvX2xpbmUgXAotKyAgICBb Z2RiX2dldF9saW5lX251bWJlciB7YnJlYWsgdG8gaW5zcGVjdCBzdHJ1Y3QgYW5kIHVuaW9ufSAk e3Rlc3RmaWxlfS5jXSBcCi0rICAgICJzdGVwIHRvIG91dGVyIGJyZWFrcG9pbnQiCi0rCi0rbWlf Y3JlYXRlX2R5bmFtaWNfdmFyb2JqIG5zY29udCBuc3R5cGUgXAotKyAgImNyZWF0ZSBuc3R5cGUg dmFyb2JqIgotKwotK21pX2xpc3RfdmFyb2JqX2NoaWxkcmVuIG5zY29udCB7Ci0rICAgIHsge25z Y29udC5cWzBcXX0ge1xbMFxdfSAwIGludCB9Ci0rICAgIHsge25zY29udC5cWzFcXX0ge1xbMVxd fSAwIGludCB9Ci0rfSAibGlzdCBjaGlsZHJlbiBhZnRlciBzZXR0aW5nIHVwZGF0ZSByYW5nZSIK LSsKLSttaV9nZGJfdGVzdCAiLXZhci1zZXQtdmlzdWFsaXplciBuc2NvbnQgTm9uZSIgXAotKyAg IlxcXmRvbmUiIFwKLSsgICJjbGVhciB2aXN1YWxpemVyIgotKwotK21pX2dkYl90ZXN0ICItdmFy LXVwZGF0ZSBuc2NvbnQiIFwKLSsgICJcXF5kb25lLGNoYW5nZWxpc3Q9XFxcW1xcXF0iIFwKLSsg ICJ2YXJvYmogdXBkYXRlIGFmdGVyIGNsZWFyaW5nIgotKwotK21pX2dkYl90ZXN0ICItdmFyLXNl dC12aXN1YWxpemVyIG5zY29udCBnZGIuZGVmYXVsdF92aXN1YWxpemVyIiBcCi0rICAiXFxeZG9u ZSIgXAotKyAgImNob29zZSBkZWZhdWx0IHZpc3VhbGl6ZXIiCi0rCi0gcmVtb3RlX2ZpbGUgaG9z dCBkZWxldGUgJHtyZW1vdGVfcHl0aG9uX2ZpbGV9Ci1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDEwLTAxLTE0 IDA5OjAzOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMC0wNi0zMCAwMzoyMjoyMC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xMTksNiArMTE5LDE1IEBAIHR5cGVkZWYgc3RydWN0IHN0cmluZ19yZXByCi0gCi0g LyogVGhpcyBsZXRzIHVzIGF2b2lkIG1hbGxvYy4gICovCi0gaW50IGFycmF5WzEwMF07Ci0raW50 IG5hcnJheVsxMF07Ci0rCi0rc3RydWN0IGp1c3RjaGlsZHJlbgotK3sKLSsgIGludCBsZW47Ci0r ICBpbnQgKmVsZW1lbnRzOwotK307Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QganVzdGNoaWxkcmVuIG5v c3RyaW5nX3R5cGU7Ci0gCi0gc3RydWN0IGNvbnRhaW5lcgotIHsKLUBAIC0xOTYsNyArMjA1LDkg QEAgbWFpbiAoKQotICAgY29uc3Qgc3RydWN0IHN0cmluZ19yZXByIGNzdHJpbmcgPSB7IHsgImNv bnN0IHN0cmluZyIgfSB9OwotICAgLyogQ2xlYXJpbmcgYnkgYmVpbmcgYHN0YXRpYycgY291bGQg aW52b2tlIGFuIG90aGVyIEdEQiBDKysgYnVnLiAgKi8KLSAgIHN0cnVjdCBudWxsc3RyIG51bGxz dHI7Ci0tCi0rICBub3N0cmluZ190eXBlIG5zdHlwZTsKLSsgIG5zdHlwZS5lbGVtZW50cyA9IG5h cnJheTsKLSsgIG5zdHlwZS5sZW4gPSAwOwotIAotICAgaW5pdF9zcygmc3MsIDEsIDIpOwotICAg aW5pdF9zcyhzc2ErMCwgMywgNCk7Ci1AQCAtMjQ5LDUgKzI2MCw5IEBAIG1haW4gKCkKLSAgIGRv X25vdGhpbmcgKCk7Ci0gI2VuZGlmCi0gCi0rICBuc3R5cGUuZWxlbWVudHNbMF0gPSA3OwotKyAg bnN0eXBlLmVsZW1lbnRzWzFdID0gNDI7Ci0rICBuc3R5cGUubGVuID0gMjsKLSsgIAotICAgcmV0 dXJuIDA7ICAgICAgLyogYnJlYWsgdG8gaW5zcGVjdCBzdHJ1Y3QgYW5kIHVuaW9uICovCi0gfQot SW5kZXg6IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4 cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktcHJldHR5cHJpbnQuZXhwCTIwMTAtMDYtMzAgMDM6MjI6MDIuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCTIw MTAtMDYtMzAgMDM6MjQ6MTQuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE1LDYgKzExNSw3IEBAIHBy b2MgcnVuX2xhbmdfdGVzdHMge2xhbmd9IHsKLSAKLSAgICAgZ2RiX3Rlc3QgInByaW50IG51bGxz dHIiICJSdW50aW1lRXJyb3I6IEVycm9yIHJlYWRpbmcgc3RyaW5nIGZyb20gaW5mZXJpb3IuKiIK LSAKLSsgICAgZ2RiX3Rlc3QgInByaW50IG5zdHlwZSIgIiA9IHskbmwgKi4wLiA9IDcsJG5sICou MS4gPSA0MiRubH0iCi0gICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIlByb2dyYW0gZXhpdGVkIG5v cm1hbGx5XC4iCi0gCi0gICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICR7cmVtb3RlX3B5dGhv bl9maWxlfQotSW5kZXg6IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0 eXByaW50LnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1wcmV0dHlwcmludC5weQkyMDEwLTAxLTE0IDA5OjAzOjM3LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50 LnB5CTIwMTAtMDYtMzAgMDM6MjI6MjAuMDAwMDAwMDAwICswMjAwCi1AQCAtNTMsNiArNTMsMzMg QEAgY2xhc3MgQ29udGFpbmVyUHJpbnRlcjoKLSAgICAgZGVmIGNoaWxkcmVuKHNlbGYpOgotICAg ICAgICAgcmV0dXJuIHNlbGYuX2l0ZXJhdG9yKHNlbGYudmFsWydlbGVtZW50cyddLCBzZWxmLnZh bFsnbGVuJ10pCi0gCi0rIyBUZXN0IGEgcHJpbnRlciB3aGVyZSB0b19zdHJpbmcgaXMgTm9uZQot K2NsYXNzIE5vU3RyaW5nQ29udGFpbmVyUHJpbnRlcjoKLSsgICAgY2xhc3MgX2l0ZXJhdG9yOgot KyAgICAgICAgZGVmIF9faW5pdF9fIChzZWxmLCBwb2ludGVyLCBsZW4pOgotKyAgICAgICAgICAg IHNlbGYuc3RhcnQgPSBwb2ludGVyCi0rICAgICAgICAgICAgc2VsZi5wb2ludGVyID0gcG9pbnRl cgotKyAgICAgICAgICAgIHNlbGYuZW5kID0gcG9pbnRlciArIGxlbgotKwotKyAgICAgICAgZGVm IF9faXRlcl9fKHNlbGYpOgotKyAgICAgICAgICAgIHJldHVybiBzZWxmCi0rCi0rICAgICAgICBk ZWYgbmV4dChzZWxmKToKLSsgICAgICAgICAgICBpZiBzZWxmLnBvaW50ZXIgPT0gc2VsZi5lbmQ6 Ci0rICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSsgICAgICAgICAgICByZXN1 bHQgPSBzZWxmLnBvaW50ZXIKLSsgICAgICAgICAgICBzZWxmLnBvaW50ZXIgPSBzZWxmLnBvaW50 ZXIgKyAxCi0rICAgICAgICAgICAgcmV0dXJuICgnWyVkXScgJSBpbnQgKHJlc3VsdCAtIHNlbGYu c3RhcnQpLCByZXN1bHQuZGVyZWZlcmVuY2UoKSkKLSsKLSsgICAgZGVmIF9faW5pdF9fKHNlbGYs IHZhbCk6Ci0rICAgICAgICBzZWxmLnZhbCA9IHZhbAotKwotKyAgICBkZWYgdG9fc3RyaW5nKHNl bGYpOgotKyAgICAgICAgcmV0dXJuIE5vbmUKLSsKLSsgICAgZGVmIGNoaWxkcmVuKHNlbGYpOgot KyAgICAgICAgcmV0dXJuIHNlbGYuX2l0ZXJhdG9yKHNlbGYudmFsWydlbGVtZW50cyddLCBzZWxm LnZhbFsnbGVuJ10pCi0rCi0gY2xhc3MgcHBfczoKLSAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZh bCk6Ci0gICAgICAgICBzZWxmLnZhbCA9IHZhbAotQEAgLTE5MCw4ICsyMTcsMTAgQEAgZGVmIHJl Z2lzdGVyX3ByZXR0eV9wcmludGVycyAoKToKLSAgICAgIyBib3RoIHRoZSBDIGFuZCBDKysgY2Fz ZXMuCi0gICAgIHByZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCdec3RydWN0IHN0cmlu Z19yZXByJCcpXSA9IHN0cmluZ19wcmludAotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5j b21waWxlICgnXnN0cnVjdCBjb250YWluZXIkJyldID0gQ29udGFpbmVyUHJpbnRlcgotKyAgICBw cmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxlICgnXnN0cnVjdCBqdXN0Y2hpbGRyZW4kJyld ID0gTm9TdHJpbmdDb250YWluZXJQcmludGVyCi0gICAgIHByZXR0eV9wcmludGVyc19kaWN0W3Jl LmNvbXBpbGUgKCdec3RyaW5nX3JlcHIkJyldID0gc3RyaW5nX3ByaW50Ci0gICAgIHByZXR0eV9w cmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCdeY29udGFpbmVyJCcpXSA9IENvbnRhaW5lclByaW50 ZXIKLSsgICAgcHJldHR5X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSAoJ15qdXN0Y2hpbGRyZW4k JyldID0gTm9TdHJpbmdDb250YWluZXJQcmludGVyCi0gICAgIAotICAgICBwcmV0dHlfcHJpbnRl cnNfZGljdFtyZS5jb21waWxlICgnXnN0cnVjdCBucyQnKV0gID0gcHBfbnMKLSAgICAgcHJldHR5 X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSAoJ15ucyQnKV0gID0gcHBfbnMKCmRpZmYgLS1naXQg YS9nZGItYno1NjI5NzUtc3RkLXRlcm1pbmF0ZS1kb3VibGUtZnJlZS5wYXRjaCBiL2dkYi1iejU2 Mjk3NS1zdGQtdGVybWluYXRlLWRvdWJsZS1mcmVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBhNTRjNTUwLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU2Mjk3NS1zdGQtdGVybWlu YXRlLWRvdWJsZS1mcmVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAyL21zZzAwNjI1Lmh0bWwK LVN1YmplY3Q6IFJGQzogZml4IGJ1ZyB3aXRoIHN0ZDo6dGVybWluYXRlIGhhbmRsZXIKLQotSSB3 b3VsZCBhcHByZWNpYXRlIGNvbW1lbnRzIG9uIHRoaXMgcGF0Y2guCi0KLVRoaXMgY29tZXMgZnJv bSBhbiBhdXRvbWF0aWNhbGx5LXJlcG9ydGVkIGJ1ZyBpbiB0aGUgUmVkIEhhdCBidWd6aWxsYToK LQotICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTc1 Ci0KLWNhbGxfZnVuY3Rpb25fYnlfaGFuZCBpbnN0YWxscyBhIG1vbWVudGFyeSBicmVha3BvaW50 IG9uIHN0ZDo6dGVybWluYXRlLAotYW5kIHRoZW4gZGVsZXRlcyBpdCBsYXRlci4gIEhvd2V2ZXIs IHRoaXMgY2FuIGNhdXNlIGEgZG91YmxlIGRlbGV0aW9uIG9mCi10aGUgYnJlYWtwb2ludC4gIElu IHRoZSBidWcsIHRoZSBjYWxsZWQgZnVuY3Rpb24gaXMgZGxvcGVuLCB3aGljaCBjYXVzZXMKLWdk YiB0byBlbnRlciBzb2xpYl9hZGQsIHdoaWNoIGNhbGxzIGJyZWFrcG9pbnRfcmVfc2V0LCBkZWxl dGluZyB0aGUKLW1vbWVudGFyeSBicmVha3BvaW50LgotCi1UaGlzIGZpeCB3b3JrcyBieSBjcmVh dGluZyB0aGUgbW9tZW50YXJ5IGJyZWFrcG9pbnQgd2l0aCBhbiBpbnRlcm5hbAotYnJlYWtwb2lu dCBudW1iZXIsIGFuZCB0aGVuIHRyeWluZyB0byBkZWxldGUgdGhlIGJyZWFrcG9pbnQgYnkgbnVt YmVyLgotCi1UaGlzIGJ1ZyBkb2VzIG5vdCBhbHdheXMgbWFuaWZlc3QgaW4gYSBjcmFzaC4gIElu IGZhY3QsIEkgY291bGRuJ3QgbWFrZQotaXQgY3Jhc2ggaGVyZSwgYnV0IEkgY291bGQgb2JzZXJ2 ZSB0aGUgcHJvYmxlbSB1bmRlciB2YWxncmluZC4KLQotQnVpbHQgYW5kIHJlZ3Rlc3RlZCBvbiB4 ODYtNjQgKGNvbXBpbGUgZmFybSkuICBJIGFsc28gbWFudWFsbHkgdmVyaWZpZWQKLWl0IHVzaW5n IHZhbGdyaW5kLgotCi1JIHRoaW5rIHRoaXMgcGF0Y2ggaXMgbWlsZGx5IHVnbHksIGR1ZSB0byB0 aGUgaW50cm9kdWN0aW9uIG9mCi1zZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGNfd2l0aF9u dW1iZXIuICBIb3dldmVyLCBpbiB0aGUgYWJzZW5jZSBvZgotY29tbWVudHMsIEkgcGxhbiB0byBj aGVjayBpdCBpbiBhZnRlciBhIHJlYXNvbmFibGUgd2FpdGluZyBwZXJpb2QuCi0KLVRvbQotCi0y MDEwLTAyLTI1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0KLQkqIGluZmNhbGwu YyAoZG9fZGVsZXRlX2JyZWFrcG9pbnRfYnlfbnVtYmVyKTogTmV3IGZ1bmN0aW9uLgotCShjYWxs X2Z1bmN0aW9uX2J5X2hhbmQpOiBSZWZlciB0byBtb21lbnRhcnkgYnJlYWtwb2ludCBieSBudW1i ZXIuCi0JKiBicmVha3BvaW50LmggKHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193aXRo X251bWJlcik6Ci0JRGVjbGFyZS4KLQkqIGJyZWFrcG9pbnQuYyAoc2V0X21vbWVudGFyeV9icmVh a3BvaW50X2F0X3BjX3dpdGhfbnVtYmVyKTogTmV3Ci0JZnVuY3Rpb24uCi0KLUluZGV4OiBnZGIt Ny4wLjkwLjIwMTAwMzEyL2dkYi9icmVha3BvaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4w LjkwLjIwMTAwMzEyLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAzLTEyIDE0OjU0OjI2LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMTIvZ2RiL2JyZWFrcG9pbnQuYwky MDEwLTAzLTEyIDE0OjU0OjUzLjAwMDAwMDAwMCArMDEwMAotQEAgLTYxMTUsNiArNjExNSwyMCBA QCBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMgKHN0cnVjdCBnCi0gCi0gICByZXR1cm4g c2V0X21vbWVudGFyeV9icmVha3BvaW50IChnZGJhcmNoLCBzYWwsIG51bGxfZnJhbWVfaWQsIHR5 cGUpOwotIH0KLSsKLSsvKiBMaWtlIHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYywgYnV0 IGVuc3VyZSB0aGF0IHRoZSBuZXcKLSsgICBicmVha3BvaW50IGhhcyBhIG51bWJlci4gICovCi0r Ci0rc3RydWN0IGJyZWFrcG9pbnQgKgotK3NldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193 aXRoX251bWJlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkgICAgQ09SRV9BRERS IHBjLAotKwkJCQkJICAgIGVudW0gYnB0eXBlIHR5cGUpCi0rewotKyAgc3RydWN0IGJyZWFrcG9p bnQgKnJlc3VsdCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMs Ci0rCQkJCQkJCSAgICAgIHR5cGUpOwotKyAgcmVzdWx0LT5udW1iZXIgPSBpbnRlcm5hbF9icmVh a3BvaW50X251bWJlci0tOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0gDAotIAotIC8qIFRlbGwg dGhlIHVzZXIgd2UgaGF2ZSBqdXN0IHNldCBhIGJyZWFrcG9pbnQgQi4gICovCi1JbmRleDogZ2Ri LTcuMC45MC4yMDEwMDMxMi9nZGIvYnJlYWtwb2ludC5oCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC45MC4yMDEwMDMxMi5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMC0wMy0xMiAxNDo1NDoyNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzEyL2dkYi9icmVha3BvaW50LmgJ MjAxMC0wMy0xMiAxNDo1NDo1My4wMDAwMDAwMDAgKzAxMDAKLUBAIC03NzQsNiArNzc0LDkgQEAg ZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICpzZXRfbW9tZW50YXJ5XwotIGV4dGVybiBzdHJ1Y3Qg YnJlYWtwb2ludCAqc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjCi0gICAoc3RydWN0IGdk YmFyY2ggKiwgQ09SRV9BRERSIHBjLCBlbnVtIGJwdHlwZSB0eXBlKTsKLSAKLStleHRlcm4gc3Ry dWN0IGJyZWFrcG9pbnQgKnNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193aXRoX251bWJl cgotKyAgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUiBwYywgZW51bSBicHR5cGUgdHlwZSk7 Ci0rCi0gZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICpjbG9uZV9tb21lbnRhcnlfYnJlYWtwb2lu dCAoc3RydWN0IGJyZWFrcG9pbnQgKmJwa3QpOwotIAotIGV4dGVybiB2b2lkIHNldF9pZ25vcmVf Y291bnQgKGludCwgaW50LCBpbnQpOwotSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMTIvZ2RiL2lu ZmNhbGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMTIub3JpZy9nZGIvaW5m Y2FsbC5jCTIwMTAtMDMtMTIgMTQ6NTQ6MjYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC45 MC4yMDEwMDMxMi9nZGIvaW5mY2FsbC5jCTIwMTAtMDMtMTIgMTQ6NTU6MTkuMDAwMDAwMDAwICsw MTAwCi1AQCAtNDEwLDYgKzQxMCwxOCBAQCBydW5faW5mZXJpb3JfY2FsbCAoc3RydWN0IHRocmVh ZF9pbmZvICpjCi0gICByZXR1cm4gZTsKLSB9Ci0gCi0rLyogQSBjbGVhbnVwIGZ1bmN0aW9uIHRo YXQgZGVsZXRlcyBhIGJyZWFrcG9pbnQsIGlmIGl0IHN0aWxsIGV4aXN0cywKLSsgICBnaXZlbiB0 aGUgYnJlYWtwb2ludCdzIG51bWJlci4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkb19kZWxldGVf YnJlYWtwb2ludF9ieV9udW1iZXIgKHZvaWQgKmFyZykKLSt7Ci0rICBpbnQgKm51bSA9IGFyZzsK LSsgIHN0cnVjdCBicmVha3BvaW50ICpicCA9IGdldF9icmVha3BvaW50ICgqbnVtKTsKLSsgIGlm IChicCkKLSsgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGJwKTsKLSt9Ci0rCi0gLyogQWxsIHRoaXMg c3R1ZmYgd2l0aCBhIGR1bW15IGZyYW1lIG1heSBzZWVtIHVubmVjZXNzYXJpbHkgY29tcGxpY2F0 ZWQKLSAgICAod2h5IG5vdCBqdXN0IHNhdmUgcmVnaXN0ZXJzIGluIEdEQj8pLiAgVGhlIHB1cnBv c2Ugb2YgcHVzaGluZyBhIGR1bW15Ci0gICAgZnJhbWUgd2hpY2ggbG9va3MganVzdCBsaWtlIGEg cmVhbCBmcmFtZSBpcyBzbyB0aGF0IGlmIHlvdSBjYWxsIGEKLUBAIC00NDcsNyArNDU5LDggQEAg Y2FsbF9mdW5jdGlvbl9ieV9oYW5kIChzdHJ1Y3QgdmFsdWUgKmZ1bgotICAgc3RydWN0IGNsZWFu dXAgKmFyZ3NfY2xlYW51cDsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLSAgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoOwotLSAgc3RydWN0IGJyZWFrcG9pbnQgKnRlcm1pbmF0ZV9icCA9 IE5VTEw7Ci0rICBpbnQgdGVybWluYXRlX2JwX251bSA9IDA7Ci0rICBDT1JFX0FERFIgdGVybWlu YXRlX2JwX2FkZHIgPSAwOwotICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICp0bTsKLSAgIHN0cnVj dCBjbGVhbnVwICp0ZXJtaW5hdGVfYnBfY2xlYW51cCA9IE5VTEw7Ci0gICBwdGlkX3QgY2FsbF90 aHJlYWRfcHRpZDsKLUBAIC03NjUsOCArNzc4LDEzIEBAIGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAo c3RydWN0IHZhbHVlICpmdW4KLSAgICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICp0bSA9IGxv b2t1cF9taW5pbWFsX3N5bWJvbCAgKCJzdGQ6OnRlcm1pbmF0ZSgpIiwKLSAJCQkJCQkJICAgTlVM TCwgTlVMTCk7Ci0gICAgICAgIGlmICh0bSAhPSBOVUxMKQotLQkgICB0ZXJtaW5hdGVfYnAgPSBz ZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMKLSsJIHsKLSsJICAgc3RydWN0IGJyZWFrcG9p bnQgKmJwOwotKwkgICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193aXRoX251 bWJlcgotIAkgICAgIChnZGJhcmNoLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAodG0pLCAgYnBfYnJl YWtwb2ludCk7Ci0rCSAgIHRlcm1pbmF0ZV9icF9udW0gPSBicC0+bnVtYmVyOwotKwkgICB0ZXJt aW5hdGVfYnBfYWRkciA9IGJwLT5sb2MtPmFkZHJlc3M7Ci0rCSB9Ci0gICAgICB9Ci0gCi0gICAv KiBFdmVyeXRoaW5nJ3MgcmVhZHksIHB1c2ggYWxsIHRoZSBpbmZvIG5lZWRlZCB0byByZXN0b3Jl IHRoZQotQEAgLTc4MCw4ICs3OTgsOSBAQCBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2 YWx1ZSAqZnVuCi0gICBkaXNjYXJkX2NsZWFudXBzIChpbmZfc3RhdHVzX2NsZWFudXApOwotIAot ICAgLyogUmVnaXN0ZXIgYSBjbGVhbi11cCBmb3IgdW53aW5kX29uX3Rlcm1pbmF0aW5nX2V4Y2Vw dGlvbl9icmVha3BvaW50LiAgKi8KLS0gIGlmICh0ZXJtaW5hdGVfYnApCi0tICAgIHRlcm1pbmF0 ZV9icF9jbGVhbnVwID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50ICh0ZXJtaW5hdGVf YnApOwotKyAgaWYgKHRlcm1pbmF0ZV9icF9udW0gIT0gMCkKLSsgICAgdGVybWluYXRlX2JwX2Ns ZWFudXAgPSBtYWtlX2NsZWFudXAgKGRvX2RlbGV0ZV9icmVha3BvaW50X2J5X251bWJlciwKLSsJ CQkJCSAmdGVybWluYXRlX2JwX251bSk7Ci0gCi0gICAvKiAtIFNOSVAgLSBTTklQIC0gU05JUCAt IFNOSVAgLSBTTklQIC0gU05JUCAtIFNOSVAgLSBTTklQIC0gU05JUCAtCi0gICAgICBJZiB5b3Un cmUgbG9va2luZyB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIGR1bW15LWZyYW1lcywgdGhlbgot QEAgLTk0Nyw5ICs5NjYsOSBAQCBXaGVuIHRoZSBmdW5jdGlvbiBpcyBkb25lIGV4ZWN1dGluZywg R0RCCi0gCQkgaW4gYW4gaW5mZXJpb3IgZnVuY3Rpb24gY2FsbC4gUmV3aW5kLCBhbmQgd2FybiB0 aGUKLSAJCSB1c2VyLiAgKi8KLSAKLS0JICAgICAgaWYgKHRlcm1pbmF0ZV9icCAhPSBOVUxMCi0r CSAgICAgIGlmICh0ZXJtaW5hdGVfYnBfbnVtICE9IDAKLSAJCSAgJiYgKGluZmVyaW9yX3RocmVh ZCAoKS0+c3RvcF9icHN0YXQtPmJyZWFrcG9pbnRfYXQtPmFkZHJlc3MKLS0JCSAgICAgID09IHRl cm1pbmF0ZV9icC0+bG9jLT5hZGRyZXNzKSkKLSsJCSAgICAgID09IHRlcm1pbmF0ZV9icF9hZGRy KSkKLSAJCXsKLSAJCSAgLyogV2UgbXVzdCBnZXQgYmFjayB0byB0aGUgZnJhbWUgd2Ugd2VyZSBi ZWZvcmUgdGhlCi0gCQkgICAgIGR1bW15IGNhbGwuICAqLwotQEAgLTk5OCw3ICsxMDE3LDcgQEAg V2hlbiB0aGUgZnVuY3Rpb24gaXMgZG9uZSBleGVjdXRpbmcsIEdEQgotIAotICAgLyogSWYgd2Ug Z2V0IGhlcmUgYW5kIHRoZSBzdGQ6OnRlcm1pbmF0ZSgpIGJyZWFrcG9pbnQgaGFzIGJlZW4gc2V0 LAotICAgICAgaXQgaGFzIHRvIGJlIGNsZWFuZWQgbWFudWFsbHkuICAqLwotLSAgaWYgKHRlcm1p bmF0ZV9icCkKLSsgIGlmICh0ZXJtaW5hdGVfYnBfbnVtICE9IDApCi0gICAgIGRvX2NsZWFudXBz ICh0ZXJtaW5hdGVfYnBfY2xlYW51cCk7Ci0gCi0gICAvKiBJZiB3ZSBnZXQgaGVyZSB0aGUgY2Fs bGVkIEZVTkNUSU9OIHJhbiB0byBjb21wbGV0aW9uLAoKZGlmZiAtLWdpdCBhL2dkYi1iejU3MDYz NS1wcmV0dHlwcmludC1kb2MxLnBhdGNoIGIvZ2RiLWJ6NTcwNjM1LXByZXR0eXByaW50LWRvYzEu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOTEwZjQuLjAwMDAwMDAKLS0t IGEvZ2RiLWJ6NTcwNjM1LXByZXR0eXByaW50LWRvYzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw0MCArMCwwIEBACi1SRkE6IHVwZGF0ZSBgcHJpbnQnIGRvY3MKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMjM2Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDMvbXNnMDAwNDguaHRtbAotCi0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTAvMDMvMDEgMTc6MTk6MjIJMS4xMDE3Ci0jIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTAvMDMvMDUgMjA6MDE6MjEJMS4xMDE4Ci0jIyAtMSwzICsxLDggQEAKLSsy MDEwLTAzLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRl eGluZm8gKERhdGEpOiBMaW5rIHRvIHByZXR0eS1wcmludGluZy4KLSsJKE91dHB1dCBGb3JtYXRz KTogTGlrZXdpc2UuICBDb3JyZWN0IHRleHQuCi0rCi0gMjAxMC0wMy0wMSAgRGFuaWVsIEphY29i b3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoVHlwZXMp OiBEZXNjcmliZSA8c3RydWN0PiBhbmQgPGZsYWdzPi4KLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEwLzAzLzAxIDE3OjE5OjIyCTEuNjc2Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMC8wMy8wNSAyMDowMToyMQkxLjY3NwotQEAgLTY2NjEsNyArNjY2MSw4IEBACi0gY29t bWFuZCAoYWJicmV2aWF0ZWQgQGNvZGV7cH0pLCBvciBpdHMgc3lub255bSBAY29kZXtpbnNwZWN0 fS4gIEl0Ci0gZXZhbHVhdGVzIGFuZCBwcmludHMgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24g b2YgdGhlIGxhbmd1YWdlIHlvdXIKLSBwcm9ncmFtIGlzIHdyaXR0ZW4gaW4gKEBweHJlZntMYW5n dWFnZXMsICxVc2luZyBAdmFsdWV7R0RCTn0gd2l0aAotLURpZmZlcmVudCBMYW5ndWFnZXN9KS4K LStEaWZmZXJlbnQgTGFuZ3VhZ2VzfSkuICBJdCBtYXkgYWxzbyBwcmludCB0aGUgZXhwcmVzc2lv biB1c2luZyBhCi0rUHl0aG9uLWJhc2VkIHByZXR0eS1wcmludGVyIChAcHhyZWZ7UHJldHR5IFBy aW50aW5nfSkuCi0gCi0gQHRhYmxlIEBjb2RlCi0gQGl0ZW0gcHJpbnQgQHZhcntleHByfQotQEAg LTcxNTksOCArNzE2MCwxMCBAQAotIEBpdGVtIHIKLSBAY2luZGV4IHJhdyBwcmludGluZwotIFBy aW50IHVzaW5nIHRoZSBAc2FtcHtyYXd9IGZvcm1hdHRpbmcuICBCeSBkZWZhdWx0LCBAdmFsdWV7 R0RCTn0gd2lsbAotLXVzZSBhIHR5cGUtc3BlY2lmaWMgcHJldHR5LXByaW50ZXIuICBUaGUgQHNh bXB7cn0gZm9ybWF0IGJ5cGFzc2VzIGFueQotLXByZXR0eS1wcmludGVyIHdoaWNoIG1pZ2h0IGV4 aXN0IGZvciB0aGUgdmFsdWUncyB0eXBlLgotK3VzZSBhIFB5dGhvbi1iYXNlZCBwcmV0dHktcHJp bnRlciwgaWYgb25lIGlzIGF2YWlsYWJsZSAoQHB4cmVme1ByZXR0eQotK1ByaW50aW5nfSkuICBU aGlzIHR5cGljYWxseSByZXN1bHRzIGluIGEgaGlnaGVyLWxldmVsIGRpc3BsYXkgb2YgdGhlCi0r dmFsdWUncyBjb250ZW50cy4gIFRoZSBAc2FtcHtyfSBmb3JtYXQgYnlwYXNzZXMgYW55IFB5dGhv bgotK3ByZXR0eS1wcmludGVyIHdoaWNoIG1pZ2h0IGV4aXN0LgotIEBlbmQgdGFibGUKLSAKLSBG b3IgZXhhbXBsZSwgdG8gcHJpbnQgdGhlIHByb2dyYW0gY291bnRlciBpbiBoZXggKEBweHJlZntS ZWdpc3RlcnN9KSwgdHlwZQoKZGlmZiAtLWdpdCBhL2dkYi1iejU3MDYzNS1wcmV0dHlwcmludC1k b2MyLnBhdGNoIGIvZ2RiLWJ6NTcwNjM1LXByZXR0eXByaW50LWRvYzIucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNzZmZTEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTcwNjM1 LXByZXR0eXByaW50LWRvYzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAot UmU6IFtwYXRjaF0gZG9jLXB5dGhvbjogUHJldHR5IFByaW50aW5nIHNwbGl0IHVzZXIgLyBkZXZl bG9wZXIKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA0L21zZzAw NzU3Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDQvbXNnMDAy MjEuaHRtbAotCi1bIEJhY2twb3J0ZWQgZm9yIEZlZG9yYS4gIF0KLQotIyMjIHNyYy9nZGIvZG9j L0NoYW5nZUxvZwkyMDEwLzA0LzIyIDA0OjA5OjI1CTEuMTA1MwotIyMjIHNyYy9nZGIvZG9jL0No YW5nZUxvZwkyMDEwLzA0LzIyIDE2OjMyOjQzCTEuMTA1NAotIyMgLTEsMyArMSwxNCBAQAotKzIw MTAtMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsK LSsJKiBnZGIudGV4aW5mbyAoRGF0YSk6IE5ldyBAbWVudSByZWZlcmVuY2UgdG8gUHJldHR5IFBy aW50aW5nLgotKwkoUHl0aG9uIEFQSSk6IENoYW5nZSB0aGUgcmVmZXJlbmNlIHRvIFByZXR0eSBQ cmludGluZyBBUEkuCi0rCShQcmV0dHkgUHJpbnRpbmcpOiBNb3ZlIHRoZSB1c2VyIHBhcnQgdW5k ZXIgdGhlIERhdGEgbm9kZS4gIFJlZm9ybWF0Ci0rCXRoZSBzYW1wbGUgb3V0cHV0IHRvIDcyIGNv bHVtbnMuICBDcmVhdGUgYSBuZXcgcmVmZXJlbmNlIHRvIFByZXR0eQotKwlQcmludGluZyBBUEku ICBSZW5hbWUgdGhlIEFQSSBwYXJ0IC4uLgotKwkoUHJldHR5IFByaW50aW5nIEFQSSk6IFRvIGEg bmV3IG5vZGUgbmFtZS4KLSsJKFNlbGVjdGluZyBQcmV0dHktUHJpbnRlcnMsIFByb2dzcGFjZXMg SW4gUHl0aG9uLCBPYmpmaWxlcyBJbiBQeXRob24pCi0rCShHREIvTUkgVmFyaWFibGUgT2JqZWN0 cyk6IENoYW5nZSByZWZlcmVuY2VzIHRvIFByZXR0eSBQcmludGluZyBBUEkuCi0rCi0gMjAxMC0w NC0yMSAgU3RhbiBTaGVicyAgPHN0YW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBnZGIudGV4 aW5mbyAoVHJhY2Vwb2ludCBBY3Rpb25zKTogTWVudGlvbiBzeW5vbnlteSBvZiBhY3Rpb25zCi0t LS0gZ2RiLTcuMS9nZGIvZG9jL2dkYi50ZXhpbmZvLm9yaWcJMjAxMC0wNC0yMiAxOTowODozMC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNC0y MiAxOToxMDo0MS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02NzI3LDYgKzY3MjcsNyBAQCBUYWJsZX0u Ci0gKiBNZW1vcnk6OiAgICAgICAgICAgICAgICAgICAgICBFeGFtaW5pbmcgbWVtb3J5Ci0gKiBB dXRvIERpc3BsYXk6OiAgICAgICAgICAgICAgICBBdXRvbWF0aWMgZGlzcGxheQotICogUHJpbnQg U2V0dGluZ3M6OiAgICAgICAgICAgICAgUHJpbnQgc2V0dGluZ3MKLSsqIFByZXR0eSBQcmludGlu Zzo6ICAgICAgICAgICAgIFB5dGhvbiBwcmV0dHkgcHJpbnRpbmcKLSAqIFZhbHVlIEhpc3Rvcnk6 OiAgICAgICAgICAgICAgIFZhbHVlIGhpc3RvcnkKLSAqIENvbnZlbmllbmNlIFZhcnM6OiAgICAg ICAgICAgIENvbnZlbmllbmNlIHZhcmlhYmxlcwotICogUmVnaXN0ZXJzOjogICAgICAgICAgICAg ICAgICAgUmVnaXN0ZXJzCi1AQCAtNzg5Nyw2ICs3ODk4LDQyIEBAIERvIG5vdCBwcmV0dHkgcHJp bnQgQ0B0eysrfSB2aXJ0dWFsIGZ1bmMKLSBTaG93IHdoZXRoZXIgQ0B0eysrfSB2aXJ0dWFsIGZ1 bmN0aW9uIHRhYmxlcyBhcmUgcHJldHR5IHByaW50ZWQsIG9yIG5vdC4KLSBAZW5kIHRhYmxlCi0g Ci0rQG5vZGUgUHJldHR5IFByaW50aW5nCi0rQHNlY3Rpb24gUHJldHR5IFByaW50aW5nCi0rCi0r QHZhbHVle0dEQk59IHByb3ZpZGVzIGEgbWVjaGFuaXNtIHRvIGFsbG93IHByZXR0eS1wcmludGlu ZyBvZiB2YWx1ZXMgdXNpbmcKLStQeXRob24gY29kZS4gIEl0IGdyZWF0bHkgc2ltcGxpZmllcyB0 aGUgZGlzcGxheSBvZiBjb21wbGV4IG9iamVjdHMuICBUaGlzCi0rbWVjaGFuaXNtIHdvcmtzIGZv ciBib3RoIE1JIGFuZCB0aGUgQ0xJLgotKwotK0ZvciBleGFtcGxlLCBoZXJlIGlzIGhvdyBhIENA dHsrK30gQGNvZGV7c3RkOjpzdHJpbmd9IGxvb2tzIHdpdGhvdXQgYQotK3ByZXR0eS1wcmludGVy OgotKwotK0BzbWFsbGV4YW1wbGUKLSsoQHZhbHVle0dEQlB9KSBwcmludCBzCi0rJDEgPSBAewot KyAgc3RhdGljIG5wb3MgPSA0Mjk0OTY3Mjk1LCAKLSsgIF9NX2RhdGFwbHVzID0gQHsKLSsgICAg PHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiA9IEB7Ci0rICAgICAgPF9fZ251X2N4eDo6bmV3X2FsbG9j YXRvcjxjaGFyPj4gPSBAewotKyAgICAgICAgPE5vIGRhdGEgZmllbGRzPkB9LCA8Tm8gZGF0YSBm aWVsZHM+Ci0rICAgICAgQH0sCi0rICAgIG1lbWJlcnMgb2Ygc3RkOjpiYXNpY19zdHJpbmc8Y2hh ciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwKLSsgICAgICBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+ OjpfQWxsb2NfaGlkZXI6Ci0rICAgIF9NX3AgPSAweDgwNGEwMTQgImFiY2QiCi0rICBAfQotK0B9 Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStXaXRoIGEgcHJldHR5LXByaW50ZXIgZm9yIEBjb2Rl e3N0ZDo6c3RyaW5nfSBvbmx5IHRoZSBjb250ZW50cyBhcmUgcHJpbnRlZDoKLSsKLStAc21hbGxl eGFtcGxlCi0rKEB2YWx1ZXtHREJQfSkgcHJpbnQgcwotKyQyID0gImFiY2QiCi0rQGVuZCBzbWFs bGV4YW1wbGUKLSsKLStGb3IgaW1wbGVtZW50aW5nIHByZXR0eSBwcmludGVycyBmb3IgbmV3IHR5 cGVzIHlvdSBzaG91bGQgcmVhZCB0aGUgUHl0aG9uIEFQSQotK2RldGFpbHMgKEBweHJlZntQcmV0 dHkgUHJpbnRpbmcgQVBJfSkuCi0rCi0gQG5vZGUgVmFsdWUgSGlzdG9yeQotIEBzZWN0aW9uIFZh bHVlIEhpc3RvcnkKLSAKLUBAIC0xOTYwOCw4ICsxOTY0NSw4IEBAIHNpdHVhdGlvbiwgYSBQeXRo b24gQGNvZGV7S2V5Ym9hcmRJbnRlcnIKLSAqIEV4Y2VwdGlvbiBIYW5kbGluZzo6Ci0gKiBBdXRv LWxvYWRpbmc6OiAgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNv ZGUuCi0gKiBWYWx1ZXMgRnJvbSBJbmZlcmlvcjo6CVB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiB2 YWx1ZXMuCi0tKiBUeXBlcyBJbiBQeXRob246OgkJUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHR5 cGVzLgotLSogUHJldHR5IFByaW50aW5nOjoJCVByZXR0eS1wcmludGluZyB2YWx1ZXMuCi0rKiBU eXBlcyBJbiBQeXRob246OiAgICAgICAgICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgdHlw ZXMuCi0rKiBQcmV0dHkgUHJpbnRpbmcgQVBJOjogICAgICAgICBQcmV0dHktcHJpbnRpbmcgdmFs dWVzLgotICogU2VsZWN0aW5nIFByZXR0eS1QcmludGVyczo6ICAgSG93IEdEQiBjaG9vc2VzIGEg cHJldHR5LXByaW50ZXIuCi0gKiBJbmZlcmlvcnMgSW4gUHl0aG9uOjoJCVB5dGhvbiByZXByZXNl bnRhdGlvbiBvZiBpbmZlcmlvcnMgKHByb2Nlc3NlcykKLSAqIFRocmVhZHMgSW4gUHl0aG9uOjog ICAgICAgICAgIEFjY2Vzc2luZyBpbmZlcmlvciB0aHJlYWRzIGZyb20gUHl0aG9uLgotQEAgLTIw MjQxLDM3ICsyMDI3OCwxMCBAQCBBIGZ1bmN0aW9uIGludGVybmFsIHRvIEB2YWx1ZXtHREJOfS4g IFRoCi0gY29udmVuaWVuY2UgZnVuY3Rpb25zLgotIEBlbmQgdGFibGUKLSAKLS1Abm9kZSBQcmV0 dHkgUHJpbnRpbmcKLS1Ac3Vic3Vic2VjdGlvbiBQcmV0dHkgUHJpbnRpbmcKLS0KLS1AdmFsdWV7 R0RCTn0gcHJvdmlkZXMgYSBtZWNoYW5pc20gdG8gYWxsb3cgcHJldHR5LXByaW50aW5nIG9mIHZh bHVlcwotLXVzaW5nIFB5dGhvbiBjb2RlLiAgVGhlIHByZXR0eS1wcmludGVyIEFQSSBhbGxvd3Mg YXBwbGljYXRpb24tc3BlY2lmaWMKLS1jb2RlIHRvIGdyZWF0bHkgc2ltcGxpZnkgdGhlIGRpc3Bs YXkgb2YgY29tcGxleCBvYmplY3RzLiAgVGhpcwotLW1lY2hhbmlzbSB3b3JrcyBmb3IgYm90aCBN SSBhbmQgdGhlIENMSS4KLS0KLS1Gb3IgZXhhbXBsZSwgaGVyZSBpcyBob3cgYSBDQHR7Kyt9IEBj b2Rle3N0ZDo6c3RyaW5nfSBsb29rcyB3aXRob3V0IGEKLS1wcmV0dHktcHJpbnRlcjoKLStAbm9k ZSBQcmV0dHkgUHJpbnRpbmcgQVBJCi0rQHN1YnN1YnNlY3Rpb24gUHJldHR5IFByaW50aW5nIEFQ SQotIAotLUBzbWFsbGV4YW1wbGUKLS0oQHZhbHVle0dEQlB9KSBwcmludCBzCi0tJDEgPSBAewot LSAgc3RhdGljIG5wb3MgPSA0Mjk0OTY3Mjk1LCAKLS0gIF9NX2RhdGFwbHVzID0gQHsKLS0gICAg PHN0ZDo6YWxsb2NhdG9yPGNoYXI+PiA9IEB7Ci0tICAgICAgPF9fZ251X2N4eDo6bmV3X2FsbG9j YXRvcjxjaGFyPj4gPSBAezxObyBkYXRhIGZpZWxkcz5AfSwgPE5vIGRhdGEgZmllbGRzPkB9LCAK LS0gICAgbWVtYmVycyBvZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRz PGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+OjpfQWxsb2NfaGlkZXI6IAotLSAgICBfTV9w ID0gMHg4MDRhMDE0ICJhYmNkIgotLSAgQH0KLS1AfQotLUBlbmQgc21hbGxleGFtcGxlCi0tCi0t QWZ0ZXIgYSBwcmV0dHktcHJpbnRlciBmb3IgQGNvZGV7c3RkOjpzdHJpbmd9IGhhcyBiZWVuIGlu c3RhbGxlZCwgb25seQotLXRoZSBjb250ZW50cyBhcmUgcHJpbnRlZDoKLS0KLS1Ac21hbGxleGFt cGxlCi0tKEB2YWx1ZXtHREJQfSkgcHJpbnQgcwotLSQyID0gImFiY2QiCi0tQGVuZCBzbWFsbGV4 YW1wbGUKLStBbiBleGFtcGxlIG91dHB1dCBpcyBwcm92aWRlZCAoQHB4cmVme1ByZXR0eSBQcmlu dGluZ30pLgotIAotIEEgcHJldHR5LXByaW50ZXIgaXMganVzdCBhbiBvYmplY3QgdGhhdCBob2xk cyBhIHZhbHVlIGFuZCBpbXBsZW1lbnRzIGEKLSBzcGVjaWZpYyBpbnRlcmZhY2UsIGRlZmluZWQg aGVyZS4KLUBAIC0yMDM1OSw3ICsyMDM2OSw3IEBAIGF0dHJpYnV0ZS4KLSAKLSBBIGZ1bmN0aW9u IG9uIG9uZSBvZiB0aGVzZSBsaXN0cyBpcyBwYXNzZWQgYSBzaW5nbGUgQGNvZGV7Z2RiLlZhbHVl fQotIGFyZ3VtZW50IGFuZCBzaG91bGQgcmV0dXJuIGEgcHJldHR5LXByaW50ZXIgb2JqZWN0IGNv bmZvcm1pbmcgdG8gdGhlCi0taW50ZXJmYWNlIGRlZmluaXRpb24gYWJvdmUgKEBweHJlZntQcmV0 dHkgUHJpbnRpbmd9KS4gIElmIGEgZnVuY3Rpb24KLStpbnRlcmZhY2UgZGVmaW5pdGlvbiBhYm92 ZSAoQHB4cmVme1ByZXR0eSBQcmludGluZyBBUEl9KS4gIElmIGEgZnVuY3Rpb24KLSBjYW5ub3Qg Y3JlYXRlIGEgcHJldHR5LXByaW50ZXIgZm9yIHRoZSB2YWx1ZSwgaXQgc2hvdWxkIHJldHVybgot IEBjb2Rle05vbmV9LgotIAotQEAgLTIwNDM2LDcgKzIwNDQ2LDcgQEAgcHJpbnRlcnMgd2l0aCBh IHNwZWNpZmljIG9iamZpbGUsIEB2YWx1ZQotIHByaW50ZXJzIGZvciB0aGUgc3BlY2lmaWMgdmVy c2lvbiBvZiB0aGUgbGlicmFyeSB1c2VkIGJ5IGVhY2gKLSBpbmZlcmlvci4KLSAKLS1UbyBjb250 aW51ZSB0aGUgQGNvZGV7c3RkOjpzdHJpbmd9IGV4YW1wbGUgKEBweHJlZntQcmV0dHkgUHJpbnRp bmd9KSwKLStUbyBjb250aW51ZSB0aGUgQGNvZGV7c3RkOjpzdHJpbmd9IGV4YW1wbGUgKEBweHJl ZntQcmV0dHkgUHJpbnRpbmcgQVBJfSksCi0gdGhpcyBjb2RlIG1pZ2h0IGFwcGVhciBpbiBAY29k ZXtnZGIubGlic3RkY3h4LnY2fToKLSAKLSBAc21hbGxleGFtcGxlCi1AQCAtMjEwNDgsNyArMjEw NTgsNyBAQCBUaGUgQGNvZGV7cHJldHR5X3ByaW50ZXJzfSBhdHRyaWJ1dGUgaXMgCi0gdXNlZCB0 byBsb29rIHVwIHByZXR0eS1wcmludGVycy4gIEEgQGNvZGV7VmFsdWV9IGlzIHBhc3NlZCB0byBl YWNoCi0gZnVuY3Rpb24gaW4gb3JkZXI7IGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05v bmV9LCB0aGVuIHRoZQotIHNlYXJjaCBjb250aW51ZXMuICBPdGhlcndpc2UsIHRoZSByZXR1cm4g dmFsdWUgc2hvdWxkIGJlIGFuIG9iamVjdAotLXdoaWNoIGlzIHVzZWQgdG8gZm9ybWF0IHRoZSB2 YWx1ZS4gIEB4cmVme1ByZXR0eSBQcmludGluZ30sIGZvciBtb3JlCi0rd2hpY2ggaXMgdXNlZCB0 byBmb3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nIEFQSX0sIGZvciBtb3Jl Ci0gaW5mb3JtYXRpb24uCi0gQGVuZCBkZWZpdmFyCi0gCi1AQCAtMjQ4NzUsNyArMjQ4ODUsNyBA QCB0aGVuIHRoaXMgYXR0cmlidXRlIHdpbGwgbm90IGJlIHByZXNlbnQuCi0gQGl0ZW0gZGlzcGxh eWhpbnQKLSBBIGR5bmFtaWMgdmFyb2JqIGNhbiBzdXBwbHkgYSBkaXNwbGF5IGhpbnQgdG8gdGhl IGZyb250IGVuZC4gIFRoZQotIHZhbHVlIGNvbWVzIGRpcmVjdGx5IGZyb20gdGhlIFB5dGhvbiBw cmV0dHktcHJpbnRlciBvYmplY3QncwotLUBjb2Rle2Rpc3BsYXlfaGludH0gbWV0aG9kLiAgQHhy ZWZ7UHJldHR5IFByaW50aW5nfS4KLStAY29kZXtkaXNwbGF5X2hpbnR9IG1ldGhvZC4gIEB4cmVm e1ByZXR0eSBQcmludGluZyBBUEl9LgotIEBlbmQgdGFibGUKLSAKLSBUeXBpY2FsIG91dHB1dCB3 aWxsIGxvb2sgbGlrZSB0aGlzOgotQEAgLTI1MDQ3LDcgKzI1MDU3LDcgQEAgVGhlIHJlc3VsdCBt YXkgaGF2ZSBpdHMgb3duIGF0dHJpYnV0ZXM6Ci0gQGl0ZW0gZGlzcGxheWhpbnQKLSBBIGR5bmFt aWMgdmFyb2JqIGNhbiBzdXBwbHkgYSBkaXNwbGF5IGhpbnQgdG8gdGhlIGZyb250IGVuZC4gIFRo ZQotIHZhbHVlIGNvbWVzIGRpcmVjdGx5IGZyb20gdGhlIFB5dGhvbiBwcmV0dHktcHJpbnRlciBv YmplY3QncwotLUBjb2Rle2Rpc3BsYXlfaGludH0gbWV0aG9kLiAgQHhyZWZ7UHJldHR5IFByaW50 aW5nfS4KLStAY29kZXtkaXNwbGF5X2hpbnR9IG1ldGhvZC4gIEB4cmVme1ByZXR0eSBQcmludGlu ZyBBUEl9LgotIAotIEBpdGVtIGhhc19tb3JlCi0gVGhpcyBpcyBhbiBpbnRlZ2VyIGF0dHJpYnV0 ZSB3aGljaCBpcyBub256ZXJvIGlmIHRoZXJlIGFyZSBjaGlsZHJlbgotQEAgLTI1NDExLDcgKzI1 NDIxLDcgQEAgc2luZ2xlIGFyZ3VtZW50LiAgQHZhbHVle0dEQk59IHdpbGwgY2FsbAotIHRoZSB2 YXJvYmogQHZhcntuYW1lfSBhcyBhbiBhcmd1bWVudCAodGhpcyBpcyBkb25lIHNvIHRoYXQgdGhl IHNhbWUKLSBQeXRob24gcHJldHR5LXByaW50aW5nIGNvZGUgY2FuIGJlIHVzZWQgZm9yIGJvdGgg dGhlIENMSSBhbmQgTUkpLgotIFdoZW4gY2FsbGVkLCB0aGlzIG9iamVjdCBtdXN0IHJldHVybiBh biBvYmplY3Qgd2hpY2ggY29uZm9ybXMgdG8gdGhlCi0tcHJldHR5LXByaW50aW5nIGludGVyZmFj ZSAoQHB4cmVme1ByZXR0eSBQcmludGluZ30pLgotK3ByZXR0eS1wcmludGluZyBpbnRlcmZhY2Ug KEBweHJlZntQcmV0dHkgUHJpbnRpbmcgQVBJfSkuCi0gCi0gVGhlIHByZS1kZWZpbmVkIGZ1bmN0 aW9uIEBjb2Rle2dkYi5kZWZhdWx0X3Zpc3VhbGl6ZXJ9IG1heSBiZSB1c2VkIHRvCi0gc2VsZWN0 IGEgdmlzdWFsaXplciBieSBmb2xsb3dpbmcgdGhlIGJ1aWx0LWluIHByb2Nlc3MKCmRpZmYgLS1n aXQgYS9nZGItYno1NzQ0ODMtZGlzcGxheS1zZXBkZWJ1Zy5wYXRjaCBiL2dkYi1iejU3NDQ4My1k aXNwbGF5LXNlcGRlYnVnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGRk ZmE3Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU3NDQ4My1kaXNwbGF5LXNlcGRlYnVnLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTAtMDQvbXNnMDAwNTUuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggZGFu Z2xpbmcgZGlzcGxheXMgaW4gc2VwYXJhdGUgZGVidWcKLQotWyBCYWNrcG9ydGVkLiAgXQotCi1I aSwKLQotZ2RiLmJhc2Uvc29saWItZGlzcGxheS5leHAgdXNpbmcgX3NlcGFyYXRlXyBkZWJ1ZyBp bmZvOgotMzogY19nbG9iYWwgPSBnZGJ0eXBlcy5jOjEzNjk6IGludGVybmFsLWVycm9yOiBjaGVj a190eXBlZGVmOiBBc3NlcnRpb24gYHR5cGUnIGZhaWxlZC4KLUEgcHJvYmxlbSBpbnRlcm5hbCB0 byBHREIgaGFzIGJlZW4gZGV0ZWN0ZWQsCi0KLVRoaXMgcHJvYmxlbSB3YXMgZml4ZWQgYmVmb3Jl IGJ5OgotCVtwYXRjaCAxLzhdIFR5cGVzIEdDIFt1bmxvYWRpbmcgb2JzZXJ2ZXJdCi0JaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMDUvbXNnMDA1NDQuaHRtbAotCVJl OiBbcGF0Y2ggMy84XSBUeXBlcyBHQyBbZGlzcGxheV91c2VzX3NvbGliX3AgdG8gZXhwX2l0ZXJh dGVdCi0JaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMDcvbXNnMDAw NTQuaHRtbAotCi1idXQgYXMgdGhhdCBwYXRjaHNldCBpcyBzdGlsbCBub3QgaW4gcHJvdmlkaW5n IHRoaXMgdGVtcG9yYXJ5IGZpeHVwIGluc3RlYWQuCi0KLU9uZSBtYXkgb25seSBhZGRyZXNzIHRo YXQgZ2RiLmJhc2Uvc29saWItZGlzcGxheS5leHAgd2FzIHRlc3Rpbmcgc3ltYm9sCi1pbi1vYmpm aWxlIHdoaWxlIG5vdyBpdCB0ZXN0cyBvbmx5IHN5bWJvbCBpbi1zZXBkZWJ1Zy1vYmpmaWxlIGFu ZCBubyBsb25nZXIKLXRoZSBpbi1vYmpmaWxlIGNhc2UuICBJIGZpbmQgdGhlIGluLXNlcGRlYnVn LW9iamZpbGUgYXMgYSBzdXBlcnNldCBvZgotaW4tb2JqZmlsZSB0ZXN0IGJ1dCBJIGNhbiByZXdv cmsgaXQgaWYgYW55b25lcyBhZGRyZXNzZXMgdGhpcyB0ZXN0IGNoYW5nZS4KLQotTm8gcmVncmVz c2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4KLQot Ci1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTA0LTAzICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIHByaW50Y21kLmMgKGRpc3BsYXlfdXNlc19z b2xpYl9wKTogQ2hlY2sgYWxzbwotCVNFUEFSQVRFX0RFQlVHX09CSkZJTEUuCi0KLWdkYi90ZXN0 c3VpdGUvCi0yMDEwLTA0LTAzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0KLQkqIGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwIChzcGxpdCBzb2xpYik6IE5l dy4KLQotLS0tIGEvZ2RiL3ByaW50Y21kLmMKLSsrKyBiL2dkYi9wcmludGNtZC5jCi1AQCAtMTg0 NSw3ICsxODQ1LDEwIEBAIGNsZWFyX2RhbmdsaW5nX2Rpc3BsYXlfZXhwcmVzc2lvbnMgKHN0cnUK LSAKLSAgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQgIT0gTlVMTDsgZCA9IGQtPm5leHQpCi0g ICAgIGlmIChibG9ja19vYmpmaWxlIChkLT5ibG9jaykgPT0gb2JqZmlsZQotLQl8fCAoZC0+ZXhw ICYmIGV4cF91c2VzX29iamZpbGUgKGQtPmV4cCwgb2JqZmlsZSkpKQotKwl8fCAoZC0+ZXhwICYm IGV4cF91c2VzX29iamZpbGUgKGQtPmV4cCwgb2JqZmlsZSkpCi0rCXx8IChvYmpmaWxlLT5zZXBh cmF0ZV9kZWJ1Z19vYmpmaWxlCi0rCSAgICAmJiAoYmxvY2tfb2JqZmlsZSAoZC0+YmxvY2spID09 IG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUKLSsJCXx8IChkLT5leHAgJiYgZXhwX3Vz ZXNfb2JqZmlsZSAoZC0+ZXhwLCBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlKSkpKSkK LSAgICAgICB7Ci0gCXhmcmVlIChkLT5leHApOwotIAlkLT5leHAgPSBOVUxMOwotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cAotQEAgLTUzLDYgKzUzLDEzIEBAIGlmIHsgW2dk Yl9jb21waWxlX3NobGliICR7c3JjZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9ICRsaWJfZmxhZ3Nd ICE9ICIiCi0gICByZXR1cm4gLTEKLSB9Ci0gCi0rc2V0IHRlc3QgInNwbGl0IHNvbGliIgotK2lm IHtbZ2RiX2dudV9zdHJpcF9kZWJ1ZyAkYmluZmlsZV9saWJdICE9IDB9IHsKLSsgICAgZmFpbCAk dGVzdAotK30gZWxzZSB7Ci0rICAgIHBhc3MgJHRlc3QKLSt9Ci0rCi0gZ2RiX2V4aXQKLSBnZGJf c3RhcnQKLSBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLQoKZGlmZiAtLWdp dCBhL2dkYi1iejU3NTI5Mi1kZWxheWVkLXBoeXNuYW1lLnBhdGNoIGIvZ2RiLWJ6NTc1MjkyLWRl bGF5ZWQtcGh5c25hbWUucGF0Y2gKaW5kZXggNzcwZDUyZC4uNWU2NTk3NCAxMDA2NDQKLS0tIGEv Z2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUucGF0Y2gKKysrIGIvZ2RiLWJ6NTc1MjkyLWRl bGF5ZWQtcGh5c25hbWUucGF0Y2gKQEAgLTksOSArOSwxMSBAQCBOZWl0aGVyIGl0cyBvYnN0YWNr LWxlYWsucGF0Y2ggbm9yCiAJaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTAtMDUvbXNnMDAyNzEuaHRtbAogaXMgbmVlZGVkIGFzIHRoZSBsaW5rZWQgbGlzdCBpcyB1c2Vk IGluc3RlYWQuCiAKLS0tLSAuL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNS0xMyAxODoyNjoyMi4w MDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNS0xMyAxODo0NTow NC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNTEsNiArMjUxLDI4IEBAIHN0cnVjdCBjb21wX3VuaXRf aGVhZAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAt MDctMTMgMDA6MzQ6MDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMTMgMjI6MjU6MTguMDAwMDAwMDAwICswMjAwCitAQCAt MjE2LDYgKzIxNiwyOCBAQCBzdHJ1Y3QgY29tcF91bml0X2hlYWQKICAgIHVuc2lnbmVkIGludCBm aXJzdF9kaWVfb2Zmc2V0OwogIH07CiAgCkBAIC00MCw3ICs0Miw3IEBAIGlzIG5lZWRlZCBhcyB0 aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogIC8qIEludGVybmFsIHN0YXRlIHdoZW4g ZGVjb2RpbmcgYSBwYXJ0aWN1bGFyIGNvbXBpbGF0aW9uIHVuaXQuICAqLwogIHN0cnVjdCBkd2Fy ZjJfY3UKICB7Ci1AQCAtMzI5LDYgKzM1MSwxMCBAQCBzdHJ1Y3QgZHdhcmYyX2N1CitAQCAtMjk0 LDYgKzMxNiwxMCBAQCBzdHJ1Y3QgZHdhcmYyX2N1CiAgICAvKiBIZWFkZXIgZGF0YSBmcm9tIHRo ZSBsaW5lIHRhYmxlLCBkdXJpbmcgZnVsbCBzeW1ib2wgcHJvY2Vzc2luZy4gICovCiAgICBzdHJ1 Y3QgbGluZV9oZWFkZXIgKmxpbmVfaGVhZGVyOwogIApAQCAtNTEsNyArNTMsNyBAQCBpcyBuZWVk ZWQgYXMgdGhlIGxpbmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAgIC8qIE1hcmsgdXNlZCB3 aGVuIHJlbGVhc2luZyBjYWNoZWQgZGllcy4gICovCiAgICB1bnNpZ25lZCBpbnQgbWFyayA6IDE7 CiAgCi1AQCAtMTIwOCw2ICsxMjM0LDkgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9zZWN0aW9uIChz dHJ1Y3QgZHdhcgorQEAgLTExNDIsNiArMTE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0 X2RpZV90eXBlIChzdHJ1Y3QKICBzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpk d2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uCiAgICAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg c3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIApAQCAtNjEsNyArNjMsNyBAQCBpcyBuZWVkZWQgYXMg dGhlIGxpbmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAvKiBUcnkgdG8gbG9jYXRlIHRoZSBz ZWN0aW9ucyB3ZSBuZWVkIGZvciBEV0FSRiAyIGRlYnVnZ2luZwogICAgIGluZm9ybWF0aW9uIGFu ZCByZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLwogIAot QEAgLTM0MzUsNiArMzQ2NCw1OCBAQCBsb2FkX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYy X3Blcl9jCitAQCAtMzEzNyw2ICszMTY2LDU4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVj dCBkd2FyZjJfcGVyX2MKICAgIGRpc2NhcmRfY2xlYW51cHMgKGZyZWVfY3VfY2xlYW51cCk7CiAg fQogIApAQCAtMTIwLDggKzEyMiw4IEBAIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMg dXNlZCBpbnN0ZWFkLgogIC8qIEdlbmVyYXRlIGZ1bGwgc3ltYm9sIGluZm9ybWF0aW9uIGZvciBQ U1QgYW5kIENVLCB3aG9zZSBESUVzIGhhdmUKICAgICBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8g bWVtb3J5LiAgKi8KICAKLUBAIC0zNDQ3LDcgKzM1MjgsNyBAQCBwcm9jZXNzX2Z1bGxfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX3BlCi0gICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOworQEAg LTMxNDgsNyArMzIyOSw3IEBAIHByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJf cGUKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcHN0LT5vYmpmaWxlOwogICAgQ09SRV9B RERSIGxvd3BjLCBoaWdocGM7CiAgICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7CiAtICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190bzsKQEAgLTEyOSw3ICsxMzEsNyBAQCBpcyBuZWVkZWQgYXMgdGhlIGxp bmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAgIENPUkVfQUREUiBiYXNlYWRkcjsKICAKICAg IGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZf VEVYVCAob2JqZmlsZSkpOwotQEAgLTM0NTcsMTEgKzM1MzgsMjIgQEAgcHJvY2Vzc19mdWxsX2Nv bXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZQorQEAgLTMxNTgsMTEgKzMyMzksMjIgQEAgcHJvY2Vz c19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZQogIAogICAgY3UtPmxpc3RfaW5fc2Nv cGUgPSAmZmlsZV9zeW1ib2xzOwogIApAQCAtMTUyLDcgKzE1NCw3IEBAIGlzIG5lZWRlZCBhcyB0 aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogICAgLyogU29tZSBjb21waWxlcnMgZG9u J3QgZGVmaW5lIGEgRFdfQVRfaGlnaF9wYyBhdHRyaWJ1dGUgZm9yIHRoZQogICAgICAgY29tcGls YXRpb24gdW5pdC4gIElmIHRoZSBEV19BVF9oaWdoX3BjIGlzIG1pc3NpbmcsIHN5bnRoZXNpemUK ICAgICAgIGl0LCBieSBzY2FubmluZyB0aGUgRElFJ3MgYmVsb3cgdGhlIGNvbXBpbGF0aW9uIHVu aXQuICAqLwotQEAgLTUwOTMsNyArNTE4NSw2IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1 Y3QgZmllbGRfaW5mbyAKK0BAIC00ODU0LDcgKzQ5NDYsNiBAQCBkd2FyZjJfYWRkX21lbWJlcl9m biAoc3RydWN0IGZpZWxkX2luZm8gCiAgICBpbnQgaTsKICAgIHN0cnVjdCBmbl9maWVsZCAqZm5w OwogICAgY2hhciAqZmllbGRuYW1lOwpAQCAtMTYwLDcgKzE2Miw3IEBAIGlzIG5lZWRlZCBhcyB0 aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogICAgc3RydWN0IG5leHRmbmZpZWxkICpu ZXdfZm5maWVsZDsKICAgIHN0cnVjdCB0eXBlICp0aGlzX3R5cGU7CiAgCi1AQCAtNTEwNSw5ICs1 MTk2LDYgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAorQEAgLTQ4 NjYsOSArNDk1Nyw2IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAK ICAgIGlmIChmaWVsZG5hbWUgPT0gTlVMTCkKICAgICAgcmV0dXJuOwogIApAQCAtMTcwLDcgKzE3 Miw3IEBAIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogICAg LyogTG9vayB1cCBtZW1iZXIgZnVuY3Rpb24gbmFtZSBpbiBmaWVsZGxpc3QuICAqLwogICAgZm9y IChpID0gMDsgaSA8IGZpcC0+bmZuZmllbGRzOyBpKyspCiAgICAgIHsKLUBAIC01MTMzLDcgKzUy MjEsNyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCitAQCAtNDg5 NCw3ICs0OTgyLDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAog ICAgICAgIGZscC0+bmFtZSA9IGZpZWxkbmFtZTsKICAgICAgICBmbHAtPmxlbmd0aCA9IDA7CiAg ICAgICAgZmxwLT5oZWFkID0gTlVMTDsKQEAgLTE3OSw3ICsxODEsNyBAQCBpcyBuZWVkZWQgYXMg dGhlIGxpbmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAgICAgfQogIAogICAgLyogQ3JlYXRl IGEgbmV3IG1lbWJlciBmdW5jdGlvbiBmaWVsZCBhbmQgY2hhaW4gaXQgdG8gdGhlIGZpZWxkIGxp c3QKLUBAIC01MTQ3LDkgKzUyMzUsMTkgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBm aWVsZF9pbmZvIAorQEAgLTQ5MDgsOSArNDk5NiwxOSBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAo c3RydWN0IGZpZWxkX2luZm8gCiAgCiAgICAvKiBGaWxsIGluIHRoZSBtZW1iZXIgZnVuY3Rpb24g ZmllbGQgaW5mby4gICovCiAgICBmbnAgPSAmbmV3X2ZuZmllbGQtPmZuZmllbGQ7CkBAIC0yMDIs NyArMjA0LDcgQEAgaXMgbmVlZGVkIGFzIHRoZSBsaW5rZWQgbGlzdCBpcyB1c2VkIGluc3RlYWQu CiAgICBmbnAtPnR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKICAgIHRoaXNfdHlwZSA9IHJl YWRfdHlwZV9kaWUgKGRpZSwgY3UpOwogICAgaWYgKHRoaXNfdHlwZSAmJiBUWVBFX0NPREUgKHRo aXNfdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCi1AQCAtNTE3NSw3ICs1MjczLDcgQEAgZHdhcmYy X2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAorQEAgLTQ5MzYsNyArNTAzNCw3IEBA IGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKICAgICAgfQogICAgZWxz ZQogICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIm1lbWJlciBmdW5jdGlv biB0eXBlIG1pc3NpbmcgZm9yICclcyciKSwKQEAgLTIxMSw3ICsyMTMsNyBAQCBpcyBuZWVkZWQg YXMgdGhlIGxpbmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAKICAgIC8qIEdldCBmY29udGV4 dCBmcm9tIERXX0FUX2NvbnRhaW5pbmdfdHlwZSBpZiBwcmVzZW50LiAgKi8KICAgIGlmIChkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9jb250YWluaW5nX3R5cGUsIGN1KSAhPSBOVUxMKQotQEAgLTc1 MDAsNyArNzU5OCw5IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoK K0BAIC03MzE1LDcgKzc0MTMsOSBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJf Ynl0ZSAqCiAgCQkgICAgICB8fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19pbnRlcmZhY2VfdHlw ZQogIAkJICAgICAgfHwgbGFzdF9kaWUtPnRhZyA9PSBEV19UQUdfc3RydWN0dXJlX3R5cGUKICAJ CSAgICAgIHx8IGxhc3RfZGllLT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUpKQpAQCAtMjIyLDgg KzIyNCwxMCBAQCBpcyBuZWVkZWQgYXMgdGhlIGxpbmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4K ICAJCSAgJiYgKGxhc3RfZGllLT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0KICAJCSAgICAgIHx8 IGxhc3RfZGllLT50YWcgPT0gRFdfVEFHX2xleGljYWxfYmxvY2spKSkpCiAgCXsKLS0tLSAuL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LlMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAw MDAwMDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LlMJMjAx MC0wNS0xMyAxODozOTowMC4wMDAwMDAwMDAgKzAyMDAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LlMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LlMJMjAxMC0wNy0x MyAyMjoyNDo0OC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMzU1IEBACiArLyogQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC01ODAsOCArNTg0 LDEwIEBAIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogKy5M QVNGNDoKICsJLnN0cmluZwkiR05VIEMrKyA0LjQuMiIKICsJLmlkZW50CSJHQ0M6IChHTlUpIDQu NC4yIgotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhwCTE5NzAtMDEt MDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvcHIxMTQ2NS5leHAJMjAxMC0wNS0xMyAxODozOTowMC4wMDAwMDAwMDAgKzAyMDAKK0luZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LmV4 cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L3ByMTE0NjUuZXhwCTIwMTAtMDctMTMgMjI6MjQ6NDguMDAwMDAwMDAwICswMjAwCiBAQCAtMCww ICsxLDM5IEBACiArIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICsKCmRpZmYgLS1naXQgYS9nZGItYno1NzUyOTItdm9pZC13b3JrYXJvdW5kLnBhdGNoIGIv Z2RiLWJ6NTc1MjkyLXZvaWQtd29ya2Fyb3VuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNGQ1YTkzNC4uMDAwMDAwMAotLS0gYS9nZGItYno1NzUyOTItdm9pZC13b3JrYXJv dW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg3ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAxMDM5Lmh0bWwKLVN1YmplY3Q6IFtw YXRjaF0gRml4IGNyYXNoIG9uIE5VTEwgZnVuY3Rpb24ncyBUWVBFX0ZJRUxEX1RZUEUKLQotSGks Ci0KLXNlZW4gb25lIHBvc3NpYmlsaXR5IG9mIGEgY3Jhc2guCi0KLSMwICBjX3ByaW50X3R5cGUg KHR5cGU9MHgwLCAuLi4pCi0jMSAgaW4gY190eXBlX3ByaW50X2FyZ3MgKHR5cGU9MHhmY2ViODkw LAotCi0oVGhlIHJlYWwgcmVhc29uIG9mIGEgcmVwb3J0ZWQgR0RCIGNyYXNoIHdhcyBkaWZmZXJl bnQsIHRob3VnaC4pCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0wMy0zMCAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGNyYXNoIG9u IHJlYWRpbmcgd3JvbmcgZnVuY3Rpb24gZGVjbGFyYXRpb24gRFdBUkYuCi0JKiBkd2FyZjJyZWFk LmMgKHJlYWRfc3Vicm91dGluZV90eXBlKTogTmV3IHZhcmlhYmxlIHZvaWRfdHlwZS4KLQlQcmUt ZmlsbCBhbGwgVFlQRV9GSUVMRF9UWVBFcy4gIE1vdmUgbnBhcmFtcyBhbmQgaXBhcmFtcyBpbml0 aWFsaXphdGlvbgotCW1vcmUgY2xvc2UgdG8gdGhlaXIgdXNlLgotCi1nZGIvdGVzdHN1aXRlLwot MjAxMC0wMy0zMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot Ci0JKiBnZGIuZHdhcmYyL2R3Mi1iYWQtcGFyYW1ldGVyLXR5cGUuZXhwLAotCWdkYi5kd2FyZjIv ZHcyLWJhZC1wYXJhbWV0ZXItdHlwZS5TOiBOZXcuCi0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMK LSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC01OTM4LDEzICs1OTM4LDE0IEBAIHJlYWRfc3Vi cm91dGluZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up Ci0gICAKLSAgIGlmIChkaWUtPmNoaWxkICE9IE5VTEwpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3Qg dHlwZSAqdm9pZF90eXBlID0gb2JqZmlsZV90eXBlIChjdS0+b2JqZmlsZSktPmJ1aWx0aW5fdm9p ZDsKLSAgICAgICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZTsKLS0gICAgICBpbnQgbnBhcmFt cyA9IDA7Ci0tICAgICAgaW50IGlwYXJhbXMgPSAwOwotKyAgICAgIGludCBucGFyYW1zLCBpcGFy YW1zOwotIAotICAgICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycy4KLSAgICAg ICAgICBGSVhNRTogR0RCIGN1cnJlbnRseSBpZ25vcmVzIHZhcmFyZyBmdW5jdGlvbnMsIGJ1dCBr bm93cyBhYm91dAotICAgICAgICAgIHZhcmFyZyBtZW1iZXIgZnVuY3Rpb25zLiAgKi8KLSsgICAg ICBucGFyYW1zID0gMDsKLSAgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwotICAgICAgIHdo aWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCi0gCXsKLUBAIC01OTYwLDYgKzU5NjEs MTIgQEAgcmVhZF9zdWJyb3V0aW5lX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKLSAgICAgICBUWVBFX0ZJRUxEUyAoZnR5cGUpID0gKHN0cnVjdCBmaWVs ZCAqKQotIAlUWVBFX1pBTExPQyAoZnR5cGUsIG5wYXJhbXMgKiBzaXplb2YgKHN0cnVjdCBmaWVs ZCkpOwotIAotKyAgICAgIC8qIFRZUEVfRklFTERfVFlQRSBtdXN0IG5ldmVyIGJlIE5VTEwuICBQ cmUtZmlsbCB0aGUgYXJyYXkgdG8gZW5zdXJlIGl0Ci0rCSBldmVuIGlmIHdlIGVycm9yIG91dCBk dXJpbmcgdGhlIHBhcmFtZXRlcnMgcmVhZGluZyBiZWxvdy4gICovCi0rICAgICAgZm9yIChpcGFy YW1zID0gMDsgaXBhcmFtcyA8IG5wYXJhbXM7IGlwYXJhbXMrKykKLSsJVFlQRV9GSUVMRF9UWVBF IChmdHlwZSwgaXBhcmFtcykgPSB2b2lkX3R5cGU7Ci0rCi0rICAgICAgaXBhcmFtcyA9IDA7Ci0g ICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLSAgICAgICB3aGlsZSAoY2hpbGRfZGllICYm IGNoaWxkX2RpZS0+dGFnKQotIAl7Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWJhZC1wYXJhbWV0ZXItdHlwZS5TCi1AQCAtMCwwICsxLDczIEBACi0r LyogQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKwkuc2VjdGlvbgkuZGVi dWdfaW5mbwotK2RlYnVnX3N0YXJ0OgotKwkubG9uZwlkZWJ1Z19lbmQgLSAxZgkvKiBMZW5ndGgg b2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvICovCi0rMToKLSsJLjJieXRlCTB4MwkvKiBEV0FSRiB2 ZXJzaW9uIG51bWJlciAqLwotKwkubG9uZwkuTGRlYnVnX2FiYnJldjAJLyogT2Zmc2V0IEludG8g QWJicmV2LiBTZWN0aW9uICovCi0rCS5ieXRlCTB4NAkvKiBQb2ludGVyIFNpemUgKGluIGJ5dGVz KSAqLwotKwkudWxlYjEyOCAweDEJLyogKERJRSAoMHhiKSBEV19UQUdfY29tcGlsZV91bml0KSAq LwotKwkuYXNjaWkgIkdOVSBDIDQuNC4zXDAiCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRl CTB4MQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkuYXNjaWkgIjEuY1wwIgkvKiBEV19BVF9uYW1l ICovCi0rCS51bGViMTI4IDB4NAkvKiAoRElFICgweDNjKSBEV19UQUdfc3VicHJvZ3JhbSkgKi8K LSsJLmFzY2lpICJmXDAiCS8qIERXX0FUX25hbWUgKi8KLSsvKiBWYWx1ZSAwIHdvdWxkIHJlcXVp cmUgaGFzX3NlY3Rpb25fYXRfemVybyAhPSAwICh3aGljaCBpcyB0cnVlLCB0aG91Z2gpLiAgKi8K LSsJLmxvbmcJMQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLmxvbmcJMgkvKiBEV19BVF9oaWdoX3Bj ICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9wcm90b3R5cGVkICovCi0rCS51bGViMTI4IDB4NQkv KiAoRElFICgweDQyKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikgKi8KLSsvKiBJbnZhbGlkIHZh bHVlLiAgKi8KLSsJLmxvbmcJMHgwCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJMHgwCS8qIGVu ZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgzYyAqLwotKwkuYnl0ZQkweDAJLyogZW5kIG9mIGNoaWxk cmVuIG9mIERJRSAweGIgKi8KLStkZWJ1Z19lbmQ6Ci0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJy ZXYKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS51bGViMTI4IDB4MQkvKiAoYWJicmV2IGNvZGUpICov Ci0rCS51bGViMTI4IDB4MTEJLyogKFRBRzogRFdfVEFHX2NvbXBpbGVfdW5pdCkgKi8KLSsJLmJ5 dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDI1CS8qIChEV19BVF9w cm9kdWNlcikgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJLnVs ZWIxMjggMHgxMwkvKiAoRFdfQVRfbGFuZ3VhZ2UpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdf Rk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxl YjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgw Ci0rCS51bGViMTI4IDB4NAkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4MmUJLyog KFRBRzogRFdfVEFHX3N1YnByb2dyYW0pICovCi0rCS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95 ZXMgKi8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJ LyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMp ICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDEy CS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikg Ki8KLSsJLnVsZWIxMjggMHgyNwkvKiAoRFdfQVRfcHJvdG90eXBlZCkgKi8KLSsJLnVsZWIxMjgg MHhjCS8qIChEV19GT1JNX2ZsYWcpICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVs ZWIxMjggMHg1CS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHg1CS8qIChUQUc6IERX X1RBR19mb3JtYWxfcGFyYW1ldGVyKSAqLwotKwkuYnl0ZQkweDAJLyogRFdfY2hpbGRyZW5fbm8g Ki8KLSsJLnVsZWIxMjggMHg0OQkvKiAoRFdfQVRfdHlwZSkgKi8KLSsJLnVsZWIxMjggMHgxMwkv KiAoRFdfRk9STV9yZWY0KSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4 MAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1iYWQt cGFyYW1ldGVyLXR5cGUuZXhwCi1AQCAtMCwwICsxLDQ0IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2gg c3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcg b2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYg IVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAg JiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFi aSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4g MCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLWJhZC1wYXJhbWV0ZXItdHlwZSIKLStzZXQg c3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3Nl dCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotKwotKyMgRmlyc3Qg dHJ5IHJlZmVyZW5jaW5nIERXX0FUX2ZyYW1lX2Jhc2Ugd2hpY2ggaXMgbm90IGRlZmluZWQuCi0r aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xl YW5fcmVzdGFydCAkZXhlY3V0YWJsZQotKwotKyMgVGhlIGZpcnN0IGFjY2VzcyAoYXMgd2UgZG8g bm90IHVzZSAtcmVhZG5vdykgcHJpbnRzIHNvbWU6Ci0rIyBEd2FyZiBFcnJvcjogQ2Fubm90IGZp bmQgRElFIGF0IDB4MCByZWZlcmVuY2VkIGZyb20gRElFIGF0IDB4MjkgW2luIG1vZHVsZSAuLi5d Ci0rZ2RiX3Rlc3QgInB0eXBlIGYiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGYiCi0rZ2RiX3Rlc3Qg InAgNSIgIiA9IDUiICJpcyBhbGl2ZSIKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejU3ODI1MC1hdngt MDFvZjEwLnBhdGNoIGIvZ2RiLWJ6NTc4MjUwLWF2eC0wMW9mMTAucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDkwZmRjMGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTc4MjUwLWF2 eC0wMW9mMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMzICswLDAgQEAKLVsgQmFja3Bv cnRlZC4gIF0KLQotY29tbWl0IGQ0NTRiNzUyOWE1ZTYxMzRhY2U4NTQxYjM0MWQwNzk1MzRmMjA2 MmEKLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6ICAgTW9uIE1h ciAxIDE1OjMzOjI5IDIwMTAgKzAwMDAKLQotICAgIEVuYWJsZSBYTUwgdGFyZ2V0IGRlc2NyaXB0 aW9ucyBmb3IgeDg2LgotICAgIAotICAgIGdkYi8KLSAgICAKLSAgICAyMDEwLTAzLTAxICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gICAgCi0gICAgCSogYW1kNjQtbGludXgtbmF0 LmMgKEFNRDY0X0xJTlVYX1VTRVI2NF9DUyk6IE5ldy4KLSAgICAJKGFtZDY0X2xpbnV4X3JlYWRf ZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSAgICAJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25h dCk6IFNldCB0b19yZWFkX2Rlc2NyaXB0aW9uIHRvCi0gICAgCWFtZDY0X2xpbnV4X3JlYWRfZGVz Y3JpcHRpb24uCi0gICAgCi0gICAgCSogYW1kNjQtbGludXgtdGRlcC5jOiBJbmNsdWRlICJmZWF0 dXJlcy9pMzg2L2FtZDY0LWxpbnV4LmMiLgotICAgIAkoYW1kNjRfbGludXhfcmVnaXN0ZXJfbmFt ZSk6IFJlbW92ZWQuCi0gICAgCShhbWQ2NF9saW51eF9yZWdpc3Rlcl90eXBlKTogTGlrZXdpc2Uu Ci0gICAgCShhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0gICAgCShh bWQ2NF9saW51eF9pbml0X2FiaSk6IFNldCB0YXJnZXQgZGVzY3JpcHRpb24gdG8KLSAgICAJdGRl c2NfYW1kNjRfbGludXggaWYgbmVlZGVkLiAgU3VwcG9ydCBvcmlnX3JheCBpbiB0YXJnZXQKLSAg ICAJZGVzY3JpcHRpb24uICBEb24ndCBjYWxsIHNldF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUgbm9y Ci0gICAgCXNldF9nZGJhcmNoX3JlZ2lzdGVyX3R5cGUuICBDYWxsCi0gICAgCXNldF9nZGJhcmNo X2NvcmVfcmVhZF9kZXNjcmlwdGlvbi4KLSAgICAJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X3Rk ZXApOiBDYWxsCi0gICAgCWluaXRpYWxpemVfdGRlc2NfYW1kNjRfbGludXguCi0gICAgCi0gICAg CSogYW1kNjQtbGludXgtdGRlcC5oICh0ZGVzY19hbWQ2NF9saW51eCk6IE5ldy4KLSAgICAKLSAg ICAJKiBhbWQ2NC10ZGVwLmM6ICBJbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LmMiLgotICAg IAkoYW1kNjRfcmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmVkLgotICAgIAkoYW1kNjRfcmVnaXN0ZXJf bmFtZSk6IExpa2V3aXNlLgotICAgIAkoYW1kNjRfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgot ICAgIAkoYW1kNjRfaW5pdF9hYmkpOiAgU2V0IG51bV9jb3JlX3JlZ3MgYW5kIHJlZ2lzdGVyX25h bWVzLiAgU2V0Ci0gICAgCXRhcmdldCBkZXNjcmlwdGlvbiB0byB0ZGVzY19hbWQ2NCBpZiBuZWVk ZWQuICBEb24ndCBjYWxsCi0gICAgCXNldF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUgbm9yIHNldF9n ZGJhcmNoX3JlZ2lzdGVyX3R5cGUuCi0gICAgCShfaW5pdGlhbGl6ZV9hbWQ2NF90ZGVwKTogTmV3 LgotICAgIAotICAgIAkqIGkzODYtbGludXgtbmF0LmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlw dGlvbik6IE5ldy4KLSAgICAJKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0KTogU2V0IHRvX3Jl YWRfZGVzY3JpcHRpb24gdG8KLSAgICAJaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uLgotICAg IAotICAgIAkqIGkzODYtbGludXgtdGRlcC5jOiBJbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYt bGludXguYyIuCi0gICAgCShpMzg2X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmVkLgotICAg IAkoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0gICAgCShpMzg2X2xp bnV4X3JlYWRfZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSAgICAJKGkzODZfbGludXhfaW5pdF9h YmkpOiBEb24ndCBjYWxsIHNldF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUuCi0gICAgCVNldCB0YXJn ZXQgZGVzY3JpcHRpb24gdG8gdGRlc2NfaTM4Nl9saW51eCBpZiBuZWVkZWQuICBTdXBwb3J0Ci0g ICAgCW9yaWdfZWF4LiAgU2V0IHJlZ2lzdGVyX3JlZ2dyb3VwX3AuICBDYWxsCi0gICAgCXNldF9n ZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbi4KLSAgICAJKF9pbml0aWFsaXplX2kzODZfbGlu dXhfdGRlcCk6IENhbGwgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X2xpbnV4LgotICAgIAotICAgIAkq IGkzODYtbGludXgtdGRlcC5oICh0ZGVzY19pMzg2X2xpbnV4KTogTmV3LgotICAgIAotICAgIAkq IGkzODYtbnRvLXRkZXAuYyAoaTM4Nm50b19yZWdzZXRfaWQpOiBSZXBsYWNlIEkzODZfTlVNX0ZS RUdTCi0gICAgCXdpdGggSTM4N19OVU1fUkVHUy4KLSAgICAKLSAgICAJKiBpMzg2LXRkZXAuYzog SW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LmMiLgotICAgIAkoaTM4Nl9yZWdpc3Rlcl9uYW1l cyk6IE1ha2UgaXQgY29uc3QuCi0gICAgCShpMzg2X21teF9uYW1lcyk6IExpa2V3aXNlLgotICAg IAkoaTM4Nl9udW1fcmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmVkLgotICAgIAkoaTM4Nl9yZWdpc3Rl cl9uYW1lKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X2VmbGFnc190eXBlKTogTGlrZXdpc2UuCi0g ICAgCShpMzg2X214Y3NyX3R5cGUpOiBMaWtld2lzZS4KLSAgICAJKGkzODZfc3NlX3R5cGUpOiBM aWtld2lzZS4KLSAgICAJKGkzODZfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgotICAgIAkoaTM4 N19leHRfdHlwZSk6IENhbGwgdGRlc2NfZmluZF90eXBlIGluc3RlYWQgb2YgYXJjaF9mbG9hdF90 eXBlLgotICAgIAkoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk6IE5ldy4KLSAgICAJKGkzODZf cHNldWRvX3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSAgICAJKGkzODZfbW14X3R5cGUpOiBN YWtlIGl0IHN0YXRpYy4KLSAgICAJKGkzODZfZ2RiYXJjaF9pbml0KTogQ2hlY2sgYXJjaC4gIFJl cGxhY2UgSTM4Nl9OVU1fRlJFR1Mgd2l0aAotICAgIAlJMzg3X05VTV9SRUdTLiAgU2V0IG51bV9j b3JlX3JlZ3MgYW5kIHJlZ2lzdGVyX25hbWVzLiAgRG9uJ3QKLSAgICAJY2FsbCBzZXRfZ2RiYXJj aF9yZWdpc3Rlcl9uYW1lIG5vciBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl90eXBlLgotICAgIAlTZXQg cmVnaXN0ZXJfcmVnZ3JvdXBfcC4gIFNldCB0YXJnZXQgZGVzY3JpcHRpb24gdG8gdGRlc2NfaTM4 NgotICAgIAlpZiBuZWVkZWQuICBDYWxsIHNldF90ZGVzY19wc2V1ZG9fcmVnaXN0ZXJfdHlwZSwK LSAgICAJc2V0X3RkZXNjX3BzZXVkb19yZWdpc3Rlcl9uYW1lIGFuZCB0ZGVzY191c2VfcmVnaXN0 ZXJzLgotICAgIAkoX2luaXRpYWxpemVfaTM4Nl90ZGVwKTogQ2FsbCBpbml0aWFsaXplX3RkZXNj X2kzODYuCi0gICAgCWluaXRpYWxpemVfdGRlc2NfeDg2XzY0LgotICAgIAotICAgIAkqIGkzODYt dGRlcC5oIChnZGJhcmNoX3RkZXApOiBSZW1vdmUgaTM4Nl9lZmxhZ3NfdHlwZSwKLSAgICAJaTM4 Nl9teGNzcl90eXBlIGFuZCBpMzg2X3NzZV90eXBlLiAgQWRkIG51bV9jb3JlX3JlZ3MsCi0gICAg CXJlZ2lzdGVyX25hbWVzLCB0ZGVzYyBhbmQgcmVnaXN0ZXJfcmVnZ3JvdXBfcC4KLSAgICAJKEkz ODZfTlVNX0ZSRUdTKTogUmVtb3ZlZC4KLSAgICAJKGkzODZfZWZsYWdzX3R5cGUpOiBMaWtld2lz ZS4KLSAgICAJKGkzODZfbXhjc3JfdHlwZSk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9tbXhfdHlw ZSk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9zc2VfdHlwZSk6IExpa2V3aXNlLgotICAgIAkoaTM4 Nl9yZWdpc3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X3JlZ251bSk6IEFkZCBJMzg2 X01YQ1NSX1JFR05VTS4KLSAgICAJKEkzODZfU1NFX05VTV9SRUdTKTogRGVmaW5lZCB3aXRoIEkz ODZfTVhDU1JfUkVHTlVNLgotICAgIAotICAgIAkqIGkzODctdGRlcC5oIChJMzg3X05VTV9SRUdT KTogTmV3LgotICAgIAotICAgIAkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWxpbnV4LmRhdDogR2Vu ZXJhdGVkLgotICAgIAkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LmRhdDogTGlrZXdpc2UuCi0gICAg CSogcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWxpbnV4LmRhdDogTGlrZXdpc2UuCi0gICAgCSogcmVn Zm9ybWF0cy9pMzg2L2FtZDY0LmRhdDogTGlrZXdpc2UuCi0gICAgCi0gICAgCSogcmVnZm9ybWF0 cy9yZWctaTM4Ni1saW51eC5kYXQ6IFJlbW92ZWQuCi0gICAgCSogcmVnZm9ybWF0cy9yZWctaTM4 Ni5kYXQ6IExpa2V3aXNlLgotICAgIAkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1saW51eC5kYXQ6 IExpa2V3aXNlLgotICAgIAkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC5kYXQ6IExpa2V3aXNlLgot ICAgIAotICAgIGdkYi9nZGJzZXJ2ZXIvCi0gICAgCi0gICAgMjAxMC0wMy0wMSAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotICAgIAotICAgIAkqIE1ha2VmaWxlLmluIChjbGVhbik6 IFJlcGxhY2UgcmVnLWkzODYuYywgcmVnLXg4Ni02NC5jLAotICAgIAlyZWctaTM4Ni1saW51eC5j IGFuZCByZWcteDg2LTY0LWxpbnV4LmMgd2l0aCBpMzg2LmMsIGFtZDY0LmMsCi0gICAgCWkzODYt bGludXguYyBhbmQgYW1kNjQtbGludXguYy4KLSAgICAJKHJlZy1pMzg2Lm8pOiBSZW1vdmVkLgot ICAgIAkocmVnLWkzODYuYyk6IExpa2V3aXNlLgotICAgIAkocmVnLWkzODYtbGludXgubyk6IExp a2V3aXNlLgotICAgIAkocmVnLWkzODYtbGludXguYyk6IExpa2V3aXNlLgotICAgIAkocmVnLXg4 Ni02NC5vKTogTGlrZXdpc2UuCi0gICAgCShyZWcteDg2LTY0LmMpOiBMaWtld2lzZS4KLSAgICAJ KHJlZy14ODYtNjQtbGludXgubyk6IExpa2V3aXNlLgotICAgIAkocmVnLXg4Ni02NC1saW51eC5j KTogTGlrZXdpc2UuCi0gICAgCShpMzg2Lm8pOiBOZXcuCi0gICAgCShpMzg2LmMpOiBMaWtld2lz ZS4KLSAgICAJKGkzODYtbGludXgubyk6IExpa2V3aXNlLgotICAgIAkoaTM4Ni1saW51eC5jKTog TGlrZXdpc2UuCi0gICAgCShhbWQ2NC5vKTogTGlrZXdpc2UuCi0gICAgCShhbWQ2NC5jKTogTGlr ZXdpc2UuCi0gICAgCShhbWQ2NC1saW51eC5vKTogTGlrZXdpc2UuCi0gICAgCShhbWQ2NC1saW51 eC5jKTogTGlrZXdpc2UuCi0gICAgCi0gICAgCSogY29uZmlndXJlLnNydiAoc3J2X2kzODZfcmVn b2JqKTogTmV3LgotICAgIAkoc3J2X2kzODZfbGludXhfcmVnb2JqKTogTGlrZXdpc2UuCi0gICAg CShzcnZfYW1kNjRfcmVnb2JqKTogTGlrZXdpc2UuCi0gICAgCShzcnZfYW1kNjRfbGludXhfcmVn b2JqKTogTGlrZXdpc2UuCi0gICAgCShzcnZfaTM4Nl8zMmJpdF94bWxmaWxlcyk6IExpa2V3aXNl LgotICAgIAkoc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMpOiBMaWtld2lzZS4KLSAgICAJKHNydl9p Mzg2X3htbGZpbGVzKTogTGlrZXdpc2UuCi0gICAgCShzcnZfYW1kNjRfeG1sZmlsZXMpOiBMaWtl d2lzZS4KLSAgICAJKHNydl9pMzg2X2xpbnV4X3htbGZpbGVzKTogTGlrZXdpc2UuCi0gICAgCShz cnZfYW1kNjRfbGludXhfeG1sZmlsZXMpOiBMaWtld2lzZS4KLSAgICAJKGlbMzQ1NjddODYtKi1j eWd3aW4qKTogU2V0IHNydl9yZWdvYmogdG8gJHNydl9pMzg2X3JlZ29iai4gIFNldAotICAgIAlz cnZfeG1sZmlsZXMgdG8gJHNydl9pMzg2X3htbGZpbGVzLgotICAgIAkoaVszNDU2N104Ni0qLW1p bmd3MzJjZSopOiBMaWtld2lzZS4KLSAgICAJKGlbMzQ1NjddODYtKi1taW5ndyopOiBMaWtld2lz ZS4KLSAgICAJKGlbMzQ1NjddODYtKi1udG8qKTogTGlrZXdpc2UuCi0gICAgCShpWzM0NTY3XTg2 LSotbGludXgqKTogU2V0IHNydl9yZWdvYmogdG8gJHNydl9pMzg2X2xpbnV4X3JlZ29iagotICAg IAlhbmQgJHNydl9hbWQ2NF9saW51eF9yZWdvYmouICBTZXQgc3J2X3htbGZpbGVzIHRvCi0gICAg CSRzcnZfaTM4Nl9saW51eF94bWxmaWxlcyBhbmQgJHNydl9hbWQ2NF9saW51eF94bWxmaWxlcy4K LSAgICAJKHg4Nl82NC0qLWxpbnV4Kik6IExpa2V3aXNlLgotICAgIAotICAgIAkqIGxpbnV4LXg4 Ni1sb3cuYyAoaW5pdF9yZWdpc3RlcnNfeDg2XzY0X2xpbnV4KTogUmVtb3ZlZC4KLSAgICAJKGlu aXRfcmVnaXN0ZXJzX2FtZDY0X2xpbnV4KTogTmV3LgotICAgIAkoeDg2X2FyY2hfc2V0dXApOiBS ZXBsYWNlIGluaXRfcmVnaXN0ZXJzX3g4Nl82NF9saW51eCB3aXRoCi0gICAgCWluaXRfcmVnaXN0 ZXJzX2FtZDY0X2xpbnV4LgotICAgIAotICAgIGdkYi90ZXN0c3VpdGUvCi0gICAgCi0gICAgMjAx MC0wMy0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotICAgIAotICAgIAkqIGdk Yi54bWwvdGRlc2MtcmVncy5leHAgKGFyY2hpdGVjdHVyZSk6IE5ldy4gIFNldCBpdCBmb3IgeDg2 LgotICAgIAkobG9hZF9kZXNjcmlwdGlvbik6IFNldCBhcmNoaXRlY3R1cmUgaWYgZGVmaW5lZC4K LQotLS0tIC4vZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjA6MjQ6NTEuMDAwMDAw MDAwICswMjAwCi0rKysgLi9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMC0wNC0wMyAyMDo1OTo1 Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC04MTcsNiArODE3LDM5IEBAIGFtZDY0X2xpbnV4X3NpZ2lu Zm9fZml4dXAgKHN0cnVjdCBzaWdpbmYKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIEdldCBM aW51eC94ODYgdGFyZ2V0IGRlc2NyaXB0aW9uIGZyb20gcnVubmluZyB0YXJnZXQuCi0rCi0rICAg VmFsdWUgb2YgQ1Mgc2VnbWVudCByZWdpc3RlcjoKLSsgICAgIDEuIDY0Yml0IHByb2Nlc3M6IDB4 MzMuCi0rICAgICAyLiAzMmJpdCBwcm9jZXNzOiAweDIzLgotKyAqLwotKwotKyNkZWZpbmUgQU1E NjRfTElOVVhfVVNFUjY0X0NTCTB4MzMKLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9k ZXNjICoKLSthbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgdGFyZ2V0X29wcyAq b3BzKQotK3sKLSsgIHVuc2lnbmVkIGxvbmcgY3M7Ci0rICBpbnQgdGlkOwotKwotKyAgLyogR05V L0xpbnV4IExXUCBJRCdzIGFyZSBwcm9jZXNzIElEJ3MuICAqLwotKyAgdGlkID0gVElER0VUIChp bmZlcmlvcl9wdGlkKTsKLSsgIGlmICh0aWQgPT0gMCkKLSsgICAgdGlkID0gUElER0VUIChpbmZl cmlvcl9wdGlkKTsgLyogTm90IGEgdGhyZWFkZWQgcHJvZ3JhbS4gICovCi0rCi0rICAvKiBHZXQg Q1MgcmVnaXN0ZXIuICAqLwotKyAgZXJybm8gPSAwOwotKyAgY3MgPSBwdHJhY2UgKFBUUkFDRV9Q RUVLVVNFUiwgdGlkLAotKwkgICAgICAgb2Zmc2V0b2YgKHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0 LCBjcyksIDApOwotKyAgaWYgKGVycm5vICE9IDApCi0rICAgIHBlcnJvcl93aXRoX25hbWUgKF8o IkNvdWxkbid0IGdldCBDUyByZWdpc3RlciIpKTsKLSsKLSsgIGlmIChjcyA9PSBBTUQ2NF9MSU5V WF9VU0VSNjRfQ1MpCi0rICAgIHJldHVybiB0ZGVzY19hbWQ2NF9saW51eDsKLSsgIGVsc2UKLSsg ICAgcmV0dXJuIHRkZXNjX2kzODZfbGludXg7Ci0rfQotKwotIC8qIFByb3ZpZGUgYSBwcm90b3R5 cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi0gdm9pZCBfaW5pdGlhbGl6 ZV9hbWQ2NF9saW51eF9uYXQgKHZvaWQpOwotIAotQEAgLTg2MSw2ICs4OTQsOCBAQCBfaW5pdGlh bGl6ZV9hbWQ2NF9saW51eF9uYXQgKHZvaWQpCi0gICBsaW51eF9lbGZjb3JlX3dyaXRlX3Byc3Rh dHVzID0gYW1kNjRfbGludXhfZWxmY29yZV93cml0ZV9wcnN0YXR1czsKLSAgIGxpbnV4X2VsZmNv cmVfd3JpdGVfcHJmcHJlZyA9IGFtZDY0X2xpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZzsKLSAK LSsgIHQtPnRvX3JlYWRfZGVzY3JpcHRpb24gPSBhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9u OwotKwotICAgLyogUmVnaXN0ZXIgdGhlIHRhcmdldC4gICovCi0gICBsaW51eF9uYXRfYWRkX3Rh cmdldCAodCk7Ci0gICBsaW51eF9uYXRfc2V0X25ld190aHJlYWQgKHQsIGFtZDY0X2xpbnV4X25l d190aHJlYWQpOwotLS0tIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEwLTA0LTAzIDIwOjI0 OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEwLTA0 LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM3LDYgKzM3LDggQEAKLSAjaW5jbHVk ZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJ4bWwtc3lzY2FsbC5oIgotIAotKyNpbmNsdWRl ICJmZWF0dXJlcy9pMzg2L2FtZDY0LWxpbnV4LmMiCi0rCi0gLyogVGhlIHN5c2NhbGwncyBYTUwg ZmlsZW5hbWUgZm9yIGkzODYuICAqLwotICNkZWZpbmUgWE1MX1NZU0NBTExfRklMRU5BTUVfQU1E NjQgInN5c2NhbGxzL2FtZDY0LWxpbnV4LnhtbCIKLSAKLUBAIC0yMzQsMjYgKzIzNiw2IEBAIHN0 YXRpYyBpbnQgYW1kNjRfbGludXhfc2NfcmVnX29mZnNldFtdID0KLSAgIC0xCQkJCS8qICVncyAq LwotIH07Ci0gCi0tLyogUmVwbGFjZW1lbnQgcmVnaXN0ZXIgZnVuY3Rpb25zIHdoaWNoIGtub3cg YWJvdXQgJW9yaWdfcmF4LiAgKi8KLS0KLS1zdGF0aWMgY29uc3QgY2hhciAqCi0tYW1kNjRfbGlu dXhfcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWcpCi0tewot LSAgaWYgKHJlZyA9PSBBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0pCi0tICAgIHJldHVybiAi b3JpZ19yYXgiOwotLQotLSAgcmV0dXJuIGFtZDY0X3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJl Zyk7Ci0tfQotLQotLXN0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0tYW1kNjRfbGludXhfcmVnaXN0ZXJf dHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWcpCi0tewotLSAgaWYgKHJlZyA9 PSBBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0pCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUg KGdkYmFyY2gpLT5idWlsdGluX2ludDY0OwotLQotLSAgcmV0dXJuIGFtZDY0X3JlZ2lzdGVyX3R5 cGUgKGdkYmFyY2gsIHJlZyk7Ci0tfQotLQotIHN0YXRpYyBpbnQKLSBhbWQ2NF9saW51eF9yZWdp c3Rlcl9yZWdncm91cF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKLSAJ CQkJIHN0cnVjdCByZWdncm91cCAqZ3JvdXApCi1AQCAtMTMzNCwxMCArMTMxNiwzMiBAQCBhbWQ2 NF9saW51eF9yZWNvcmRfc2lnbmFsIChzdHJ1Y3QgZ2RiYXJjCi0gICByZXR1cm4gMDsKLSB9Ci0g Ci0rLyogR2V0IExpbnV4L3g4NiB0YXJnZXQgZGVzY3JpcHRpb24gZnJvbSBjb3JlIGR1bXAuICAq LwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKgotK2FtZDY0X2xpbnV4X2Nv cmVfcmVhZF9kZXNjcmlwdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCSAgc3Ry dWN0IHRhcmdldF9vcHMgKnRhcmdldCwKLSsJCQkJICBiZmQgKmFiZmQpCi0rewotKyAgYXNlY3Rp b24gKnNlY3Rpb24gPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5yZWcyIik7Ci0r Ci0rICBpZiAoc2VjdGlvbiA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIExp bnV4L3g4Ni02NC4gICovCi0rICByZXR1cm4gdGRlc2NfYW1kNjRfbGludXg7Ci0rfQotKwotIHN0 YXRpYyB2b2lkCi0gYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5m bywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gewotICAgc3RydWN0IGdkYmFyY2hfdGRlcCAq dGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rl c2MgKnRkZXNjID0gaW5mby50YXJnZXRfZGVzYzsKLSsgIHN0cnVjdCB0ZGVzY19hcmNoX2RhdGEg KnRkZXNjX2RhdGEgPSAodm9pZCAqKSBpbmZvLnRkZXBfaW5mbzsKLSsgIGNvbnN0IHN0cnVjdCB0 ZGVzY19mZWF0dXJlICpmZWF0dXJlOwotKyAgaW50IHZhbGlkX3A7Ci0rCi0rICBnZGJfYXNzZXJ0 ICh0ZGVzY19kYXRhKTsKLSAKLSAgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IGFtZDY0X2xp bnV4X2dyZWdzZXRfcmVnX29mZnNldDsKLSAgIHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3MgPSBBUlJB WV9TSVpFIChhbWQ2NF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXQpOwotQEAgLTEzNDUsNiArMTM0 OSwyMyBAQCBhbWQ2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCi0gCi0gICBh bWQ2NF9pbml0X2FiaSAoaW5mbywgZ2RiYXJjaCk7Ci0gCi0rICAvKiBSZXNlcnZlIGEgbnVtYmVy IGZvciBvcmlnX3JheC4gICovCi0rICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgQU1E NjRfTElOVVhfTlVNX1JFR1MpOwotKwotKyAgaWYgKCEgdGRlc2NfaGFzX3JlZ2lzdGVycyAodGRl c2MpKQotKyAgICB0ZGVzYyA9IHRkZXNjX2FtZDY0X2xpbnV4OwotKyAgdGRlcC0+dGRlc2MgPSB0 ZGVzYzsKLSsKLSsgIGZlYXR1cmUgPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNjLCAib3JnLmdu dS5nZGIuaTM4Ni5saW51eCIpOwotKyAgaWYgKGZlYXR1cmUgPT0gTlVMTCkKLSsgICAgcmV0dXJu OwotKwotKyAgdmFsaWRfcCA9IHRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0dXJlLCB0ZGVz Y19kYXRhLAotKwkJCQkgICAgIEFNRDY0X0xJTlVYX09SSUdfUkFYX1JFR05VTSwKLSsJCQkJICAg ICAib3JpZ19yYXgiKTsKLSsgIGlmICghdmFsaWRfcCkKLSsgICAgcmV0dXJuOwotKwotICAgdGRl cC0+c2lndHJhbXBfcCA9IGFtZDY0X2xpbnV4X3NpZ3RyYW1wX3A7Ci0gICB0ZGVwLT5zaWdjb250 ZXh0X2FkZHIgPSBhbWQ2NF9saW51eF9zaWdjb250ZXh0X2FkZHI7Ci0gICB0ZGVwLT5zY19yZWdf b2Zmc2V0ID0gYW1kNjRfbGludXhfc2NfcmVnX29mZnNldDsKLUBAIC0xMzU4LDEwICsxMzc5LDgg QEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgotIAotICAgLyogQWRk IHRoZSAlb3JpZ19yYXggcmVnaXN0ZXIgdXNlZCBmb3Igc3lzY2FsbCByZXN0YXJ0aW5nLiAgKi8K LSAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChnZGJhcmNoLCBhbWQ2NF9saW51eF93cml0ZV9wYyk7 Ci0tICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgQU1ENjRfTElOVVhfTlVNX1JFR1Mp OwotLSAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgYW1kNjRfbGludXhfcmVn aXN0ZXJfbmFtZSk7Ci0tICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBhbWQ2 NF9saW51eF9yZWdpc3Rlcl90eXBlKTsKLS0gIHNldF9nZGJhcmNoX3JlZ2lzdGVyX3JlZ2dyb3Vw X3AgKGdkYmFyY2gsIGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOwotKwotKyAgdGRl cC0+cmVnaXN0ZXJfcmVnZ3JvdXBfcCA9IGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3VwX3A7 Ci0gCi0gICAvKiBGdW5jdGlvbnMgZm9yICdjYXRjaCBzeXNjYWxsJy4gICovCi0gICBzZXRfeG1s X3N5c2NhbGxfZmlsZV9uYW1lIChYTUxfU1lTQ0FMTF9GSUxFTkFNRV9BTUQ2NCk7Ci1AQCAtMTM3 NSw2ICsxMzk0LDkgQEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgot ICAgLyogR05VL0xpbnV4IHVzZXMgU1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KLSAg IHNldF9nZGJhcmNoX3NraXBfdHJhbXBvbGluZV9jb2RlIChnZGJhcmNoLCBmaW5kX3NvbGliX3Ry YW1wb2xpbmVfdGFyZ2V0KTsKLSAKLSsgIHNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlv biAoZ2RiYXJjaCwKLSsJCQkJICAgICBhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24p OwotKwotICAgLyogRGlzcGxhY2VkIHN0ZXBwaW5nLiAgKi8KLSAgIHNldF9nZGJhcmNoX2Rpc3Bs YWNlZF9zdGVwX2NvcHlfaW5zbiAoZ2RiYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYW1kNjRfZGlzcGxhY2VkX3N0ZXBfY29weV9pbnNuKTsKLUBAIC0xNTcx LDQgKzE1OTMsNyBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF90ZGVwICh2b2lkKQotIHsKLSAg IGdkYmFyY2hfcmVnaXN0ZXJfb3NhYmkgKGJmZF9hcmNoX2kzODYsIGJmZF9tYWNoX3g4Nl82NCwK LSAJCQkgIEdEQl9PU0FCSV9MSU5VWCwgYW1kNjRfbGludXhfaW5pdF9hYmkpOwotKwotKyAgLyog SW5pdGlhbGl6ZSB0aGUgTGludXggdGFyZ2V0IGRlc2NyaXB0aW9uICAqLwotKyAgaW5pdGlhbGl6 ZV90ZGVzY19hbWQ2NF9saW51eCAoKTsKLSB9Ci0tLS0gLi9nZGIvYW1kNjQtbGludXgtdGRlcC5o CTIwMTAtMDEtMDEgMDg6MzE6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvYW1kNjQtbGlu dXgtdGRlcC5oCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzEsNiAr MzEsOSBAQAotIC8qIFRvdGFsIG51bWJlciBvZiByZWdpc3RlcnMgZm9yIEdOVS9MaW51eC4gICov Ci0gI2RlZmluZSBBTUQ2NF9MSU5VWF9OVU1fUkVHUyAoQU1ENjRfTElOVVhfT1JJR19SQVhfUkVH TlVNICsgMSkKLSAKLSsvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24uICAqLwotK2V4dGVybiBz dHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2xpbnV4OwotKwotIC8qIEVudW0gdGhhdCBk ZWZpbmVzIHRoZSBzeXNjYWxsIGlkZW50aWZpZXJzIGZvciBhbWQ2NCBsaW51eC4KLSAgICBVc2Vk IGZvciBwcm9jZXNzIHJlY29yZC9yZXBsYXksIHRoZXNlIHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRv Ci0gICAgYSBnZGItY2Fub25pY2FsIHNldCBvZiBzeXNjYWxsIGlkcyBpbiBsaW51eC1yZWNvcmQu Yy4gICovCi0tLS0gLi9nZGIvYW1kNjQtdGRlcC5jCTIwMTAtMDQtMDMgMjA6MjQ6NTEuMDAwMDAw MDAwICswMjAwCi0rKysgLi9nZGIvYW1kNjQtdGRlcC5jCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAw MDAwMDAwICswMjAwCi1AQCAtNDIsNiArNDIsOCBAQAotICNpbmNsdWRlICJhbWQ2NC10ZGVwLmgi Ci0gI2luY2x1ZGUgImkzODctdGRlcC5oIgotIAotKyNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2Ft ZDY0LmMiCi0rCi0gLyogTm90ZSB0aGF0IHRoZSBBTUQ2NCBhcmNoaXRlY3R1cmUgd2FzIHByZXZp b3VzbHkga25vd24gYXMgeDg2LTY0LgotICAgIFRoZSBsYXR0ZXIgaXMgKGZvcmV2ZXIpIGVuZ3Jh dmVkIGludG8gdGhlIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBhcwotICAgIHJldHVybmVkIGJ5IGNv bmZpZy5ndWVzcywgYW5kIHVzZWQgYXMgdGhlIG5hbWUgZm9yIHRoZSBBTUQ2NCBwb3J0Ci1AQCAt ODMsNDcgKzg1LDYgQEAgc3RhdGljIGludCBhbWQ2NF9kdW1teV9jYWxsX2ludGVnZXJfcmVncwot ICAgOQkJCQkvKiAlcjkgKi8KLSB9OwotIAotLS8qIFJldHVybiB0aGUgbmFtZSBvZiByZWdpc3Rl ciBSRUdOVU0uICAqLwotLQotLWNvbnN0IGNoYXIgKgotLWFtZDY0X3JlZ2lzdGVyX25hbWUgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotLXsKLS0gIGlmIChyZWdudW0gPj0g MCAmJiByZWdudW0gPCBBTUQ2NF9OVU1fUkVHUykKLS0gICAgcmV0dXJuIGFtZDY0X3JlZ2lzdGVy X25hbWVzW3JlZ251bV07Ci0tCi0tICByZXR1cm4gTlVMTDsKLS19Ci0tCi0tLyogUmV0dXJuIHRo ZSBHREIgdHlwZSBvYmplY3QgZm9yIHRoZSAic3RhbmRhcmQiIGRhdGEgdHlwZSBvZiBkYXRhIGlu Ci0tICAgcmVnaXN0ZXIgUkVHTlVNLiAqLwotLQotLXN0cnVjdCB0eXBlICoKLS1hbWQ2NF9yZWdp c3Rlcl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKLS17Ci0tICBp ZiAocmVnbnVtID49IEFNRDY0X1JBWF9SRUdOVU0gJiYgcmVnbnVtIDw9IEFNRDY0X1JESV9SRUdO VU0pCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDY0Owot LSAgaWYgKHJlZ251bSA9PSBBTUQ2NF9SQlBfUkVHTlVNIHx8IHJlZ251bSA9PSBBTUQ2NF9SU1Bf UkVHTlVNKQotLSAgICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRh X3B0cjsKLS0gIGlmIChyZWdudW0gPj0gQU1ENjRfUjhfUkVHTlVNICYmIHJlZ251bSA8PSBBTUQ2 NF9SMTVfUkVHTlVNKQotLSAgICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRp bl9pbnQ2NDsKLS0gIGlmIChyZWdudW0gPT0gQU1ENjRfUklQX1JFR05VTSkKLS0gICAgcmV0dXJu IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19wdHI7Ci0tICBpZiAocmVnbnVt ID09IEFNRDY0X0VGTEFHU19SRUdOVU0pCi0tICAgIHJldHVybiBpMzg2X2VmbGFnc190eXBlIChn ZGJhcmNoKTsKLS0gIGlmIChyZWdudW0gPj0gQU1ENjRfQ1NfUkVHTlVNICYmIHJlZ251bSA8PSBB TUQ2NF9HU19SRUdOVU0pCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWls dGluX2ludDMyOwotLSAgaWYgKHJlZ251bSA+PSBBTUQ2NF9TVDBfUkVHTlVNICYmIHJlZ251bSA8 PSBBTUQ2NF9TVDBfUkVHTlVNICsgNykKLS0gICAgcmV0dXJuIGkzODdfZXh0X3R5cGUgKGdkYmFy Y2gpOwotLSAgaWYgKHJlZ251bSA+PSBBTUQ2NF9GQ1RSTF9SRUdOVU0gJiYgcmVnbnVtIDw9IEFN RDY0X0ZDVFJMX1JFR05VTSArIDcpCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gp LT5idWlsdGluX2ludDMyOwotLSAgaWYgKHJlZ251bSA+PSBBTUQ2NF9YTU0wX1JFR05VTSAmJiBy ZWdudW0gPD0gQU1ENjRfWE1NMF9SRUdOVU0gKyAxNSkKLS0gICAgcmV0dXJuIGkzODZfc3NlX3R5 cGUgKGdkYmFyY2gpOwotLSAgaWYgKHJlZ251bSA9PSBBTUQ2NF9NWENTUl9SRUdOVU0pCi0tICAg IHJldHVybiBpMzg2X214Y3NyX3R5cGUgKGdkYmFyY2gpOwotLQotLSAgaW50ZXJuYWxfZXJyb3Ig KF9fRklMRV9fLCBfX0xJTkVfXywgXygiaW52YWxpZCByZWdudW0iKSk7Ci0tfQotLQotIC8qIERX QVJGIFJlZ2lzdGVyIE51bWJlciBNYXBwaW5nIGFzIGRlZmluZWQgaW4gdGhlIFN5c3RlbSBWIHBz QUJJLAotICAgIHNlY3Rpb24gMy42LiAgKi8KLSAKLUBAIC0yMTU4LDExICsyMTE5LDE5IEBAIHZv aWQKLSBhbWQ2NF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJj aF90ZGVwIChnZGJhcmNoKTsKLSsgIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2MgPSBp bmZvLnRhcmdldF9kZXNjOwotIAotICAgLyogQU1ENjQgZ2VuZXJhbGx5IHVzZXMgYGZ4c2F2ZScg aW5zdGVhZCBvZiBgZnNhdmUnIGZvciBzYXZpbmcgaXRzCi0gICAgICBmbG9hdGluZy1wb2ludCBy ZWdpc3RlcnMuICAqLwotICAgdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0ID0gSTM4N19TSVpFT0ZfRlhT QVZFOwotIAotKyAgaWYgKCEgdGRlc2NfaGFzX3JlZ2lzdGVycyAodGRlc2MpKQotKyAgICB0ZGVz YyA9IHRkZXNjX2FtZDY0OwotKyAgdGRlcC0+dGRlc2MgPSB0ZGVzYzsKLSsKLSsgIHRkZXAtPm51 bV9jb3JlX3JlZ3MgPSBBTUQ2NF9OVU1fR1JFR1MgKyBJMzg3X05VTV9SRUdTOwotKyAgdGRlcC0+ cmVnaXN0ZXJfbmFtZXMgPSBhbWQ2NF9yZWdpc3Rlcl9uYW1lczsKLSsKLSAgIC8qIEFNRDY0IGhh cyBhbiBGUFUgYW5kIDE2IFNTRSByZWdpc3RlcnMuICAqLwotICAgdGRlcC0+c3QwX3JlZ251bSA9 IEFNRDY0X1NUMF9SRUdOVU07Ci0gICB0ZGVwLT5udW1feG1tX3JlZ3MgPSAxNjsKLUBAIC0yMTc4 LDggKzIxNDcsNiBAQCBhbWQ2NF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvCi0g ICBzZXRfZ2RiYXJjaF9sb25nX2RvdWJsZV9iaXQgKGdkYmFyY2gsIDEyOCk7Ci0gCi0gICBzZXRf Z2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgQU1ENjRfTlVNX1JFR1MpOwotLSAgc2V0X2dkYmFy Y2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgYW1kNjRfcmVnaXN0ZXJfbmFtZSk7Ci0tICBzZXRf Z2RiYXJjaF9yZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBhbWQ2NF9yZWdpc3Rlcl90eXBlKTsKLSAK LSAgIC8qIFJlZ2lzdGVyIG51bWJlcnMgb2YgdmFyaW91cyBpbXBvcnRhbnQgcmVnaXN0ZXJzLiAg Ki8KLSAgIHNldF9nZGJhcmNoX3NwX3JlZ251bSAoZ2RiYXJjaCwgQU1ENjRfUlNQX1JFR05VTSk7 IC8qICVyc3AgKi8KLUBAIC0yMjQxLDYgKzIyMDgsMTUgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVj dCBnZGJhcmNoX2luZm8gaW5mbwotIAotICAgc2V0X2dkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0 IChnZGJhcmNoLCBhbWQ2NF9nZXRfbG9uZ2ptcF90YXJnZXQpOwotIH0KLSsKLSsvKiBQcm92aWRl IGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotK3ZvaWQg X2luaXRpYWxpemVfYW1kNjRfdGRlcCAodm9pZCk7Ci0rCi0rdm9pZAotK19pbml0aWFsaXplX2Ft ZDY0X3RkZXAgKHZvaWQpCi0rewotKyAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NCAoKTsKLSt9Ci0g DAotIAotIC8qIFRoZSA2NC1iaXQgRlhTQVZFIGZvcm1hdCBkaWZmZXJzIGZyb20gdGhlIDMyLWJp dCBmb3JtYXQgaW4gdGhlCi0tLS0gLi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTAtMDEt MDQgMTY6MDM6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL01ha2VmaWxl LmluCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjAzLDkgKzIwMyw5 IEBAIGNsZWFuOgotIAlybSAtZiAqLm8gJHtBRERfRklMRVN9ICp+Ci0gCXJtIC1mIHZlcnNpb24u YwotIAlybSAtZiBnZGJzZXJ2ZXIkKEVYRUVYVCkgZ2RicmVwbGF5JChFWEVFWFQpIGNvcmUgbWFr ZS5sb2cKLS0Jcm0gLWYgcmVnLWFybS5jIHJlZy1pMzg2LmMgcmVnLWlhNjQuYyByZWctbTMyci5j IHJlZy1tNjhrLmMKLS0Jcm0gLWYgcmVnLXNoLmMgcmVnLXNwYXJjLmMgcmVnLXNwdS5jIHJlZy14 ODYtNjQuYyByZWctaTM4Ni1saW51eC5jCi0tCXJtIC1mIHJlZy1jcmlzLmMgcmVnLWNyaXN2MzIu YyByZWcteDg2LTY0LWxpbnV4LmMgcmVnLXh0ZW5zYS5jCi0rCXJtIC1mIHJlZy1hcm0uYyBpMzg2 LmMgcmVnLWlhNjQuYyByZWctbTMyci5jIHJlZy1tNjhrLmMKLSsJcm0gLWYgcmVnLXNoLmMgcmVn LXNwYXJjLmMgcmVnLXNwdS5jIGFtZDY0LmMgaTM4Ni1saW51eC5jCi0rCXJtIC1mIHJlZy1jcmlz LmMgcmVnLWNyaXN2MzIuYyBhbWQ2NC1saW51eC5jIHJlZy14dGVuc2EuYwotIAlybSAtZiBhcm0t d2l0aC1pd21teHQuYwotIAlybSAtZiBhcm0td2l0aC12ZnB2Mi5jIGFybS13aXRoLXZmcHYzLmMg YXJtLXdpdGgtbmVvbi5jCi0gCXJtIC1mIG1pcHMtbGludXguYyBtaXBzNjQtbGludXguYwotQEAg LTM0NSwxMiArMzQ1LDEyIEBAIHJlZy1jcmlzLmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9y ZWcKLSByZWctY3Jpc3YzMi5vIDogcmVnLWNyaXN2MzIuYyAkKHJlZ2RlZl9oKQotIHJlZy1jcmlz djMyLmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWctY3Jpc3YzMi5kYXQgJChyZWdkYXRf c2gpCi0gCSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWct Y3Jpc3YzMi5kYXQgcmVnLWNyaXN2MzIuYwotLXJlZy1pMzg2Lm8gOiByZWctaTM4Ni5jICQocmVn ZGVmX2gpCi0tcmVnLWkzODYuYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL3JlZy1pMzg2LmRh dCAkKHJlZ2RhdF9zaCkKLS0JJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdm b3JtYXRzL3JlZy1pMzg2LmRhdCByZWctaTM4Ni5jCi0tcmVnLWkzODYtbGludXgubyA6IHJlZy1p Mzg2LWxpbnV4LmMgJChyZWdkZWZfaCkKLS1yZWctaTM4Ni1saW51eC5jIDogJChzcmNkaXIpLy4u L3JlZ2Zvcm1hdHMvcmVnLWkzODYtbGludXguZGF0ICQocmVnZGF0X3NoKQotLQkkKFNIRUxMKSAk KHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvcmVnLWkzODYtbGludXguZGF0IHJl Zy1pMzg2LWxpbnV4LmMKLStpMzg2Lm8gOiBpMzg2LmMgJChyZWdkZWZfaCkKLStpMzg2LmMgOiAk KHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2kzODYuZGF0ICQocmVnZGF0X3NoKQotKwkkKFNI RUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LmRhdCBp Mzg2LmMKLStpMzg2LWxpbnV4Lm8gOiBpMzg2LWxpbnV4LmMgJChyZWdkZWZfaCkKLStpMzg2LWxp bnV4LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2kzODYtbGludXguZGF0ICQocmVn ZGF0X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMv aTM4Ni9pMzg2LWxpbnV4LmRhdCBpMzg2LWxpbnV4LmMKLSByZWctaWE2NC5vIDogcmVnLWlhNjQu YyAkKHJlZ2RlZl9oKQotIHJlZy1pYTY0LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWct aWE2NC5kYXQgJChyZWdkYXRfc2gpCi0gCSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2Rpcikv Li4vcmVnZm9ybWF0cy9yZWctaWE2NC5kYXQgcmVnLWlhNjQuYwotQEAgLTQzMiwxMiArNDMyLDEy IEBAIHJlZy1zcGFyYzY0LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy8KLSByZWctc3B1Lm8g OiByZWctc3B1LmMgJChyZWdkZWZfaCkKLSByZWctc3B1LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9y bWF0cy9yZWctc3B1LmRhdCAkKHJlZ2RhdF9zaCkKLSAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQo c3JjZGlyKS8uLi9yZWdmb3JtYXRzL3JlZy1zcHUuZGF0IHJlZy1zcHUuYwotLXJlZy14ODYtNjQu byA6IHJlZy14ODYtNjQuYyAkKHJlZ2RlZl9oKQotLXJlZy14ODYtNjQuYyA6ICQoc3JjZGlyKS8u Li9yZWdmb3JtYXRzL3JlZy14ODYtNjQuZGF0ICQocmVnZGF0X3NoKQotLQkkKFNIRUxMKSAkKHJl Z2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvcmVnLXg4Ni02NC5kYXQgcmVnLXg4Ni02 NC5jCi0tcmVnLXg4Ni02NC1saW51eC5vIDogcmVnLXg4Ni02NC1saW51eC5jICQocmVnZGVmX2gp Ci0tcmVnLXg4Ni02NC1saW51eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvcmVnLXg4Ni02 NC1saW51eC5kYXQgJChyZWdkYXRfc2gpCi0tCSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2Rp cikvLi4vcmVnZm9ybWF0cy9yZWcteDg2LTY0LWxpbnV4LmRhdCByZWcteDg2LTY0LWxpbnV4LmMK LSthbWQ2NC5vIDogYW1kNjQuYyAkKHJlZ2RlZl9oKQotK2FtZDY0LmMgOiAkKHNyY2RpcikvLi4v cmVnZm9ybWF0cy9pMzg2L2FtZDY0LmRhdCAkKHJlZ2RhdF9zaCkKLSsJJChTSEVMTCkgJChyZWdk YXRfc2gpICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvYW1kNjQuZGF0IGFtZDY0LmMKLSth bWQ2NC1saW51eC5vIDogYW1kNjQtbGludXguYyAkKHJlZ2RlZl9oKQotK2FtZDY0LWxpbnV4LmMg OiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWxpbnV4LmRhdCAkKHJlZ2RhdF9z aCkKLSsJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYv YW1kNjQtbGludXguZGF0IGFtZDY0LWxpbnV4LmMKLSByZWcteHRlbnNhLm8gOiByZWcteHRlbnNh LmMgJChyZWdkZWZfaCkKLSByZWcteHRlbnNhLmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9y ZWcteHRlbnNhLmRhdCAkKHJlZ2RhdF9zaCkKLSAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3Jj ZGlyKS8uLi9yZWdmb3JtYXRzL3JlZy14dGVuc2EuZGF0IHJlZy14dGVuc2EuYwotLS0tIC4vZ2Ri L2dkYnNlcnZlci9jb25maWd1cmUuc3J2CTIwMTAtMDEtMDQgMTY6MDM6MDAuMDAwMDAwMDAwICsw MTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYJMjAxMC0wNC0wMyAyMDo1OTo1 Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMiw2ICsyMiwxOCBAQAotICMgRGVmYXVsdCBob3N0aW9f bGFzdF9lcnJvciBpbXBsZW1lbnRhdGlvbgotIHNydl9ob3N0aW9fZXJyX29ianM9Imhvc3Rpby1l cnJuby5vIgotIAotK3Nydl9pMzg2X3JlZ29iaj1pMzg2Lm8KLStzcnZfaTM4Nl9saW51eF9yZWdv Ymo9aTM4Ni1saW51eC5vCi0rc3J2X2FtZDY0X3JlZ29iaj1hbWQ2NC5vCi0rc3J2X2FtZDY0X2xp bnV4X3JlZ29iaj1hbWQ2NC1saW51eC5vCi0rCi0rc3J2X2kzODZfMzJiaXRfeG1sZmlsZXM9Imkz ODYvMzJiaXQtY29yZS54bWwgaTM4Ni8zMmJpdC1zc2UueG1sIgotK3Nydl9pMzg2XzY0Yml0X3ht bGZpbGVzPSJpMzg2LzY0Yml0LWNvcmUueG1sIGkzODYvNjRiaXQtc3NlLnhtbCIKLStzcnZfaTM4 Nl94bWxmaWxlcz0iaTM4Ni9pMzg2LnhtbCAkc3J2X2kzODZfMzJiaXRfeG1sZmlsZXMiCi0rc3J2 X2FtZDY0X3htbGZpbGVzPSJpMzg2L2FtZDY0LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMi Ci0rc3J2X2kzODZfbGludXhfeG1sZmlsZXM9ImkzODYvaTM4Ni1saW51eC54bWwgaTM4Ni8zMmJp dC1saW51eC54bWwgJHNydl9pMzg2XzMyYml0X3htbGZpbGVzIgotK3Nydl9hbWQ2NF9saW51eF94 bWxmaWxlcz0iaTM4Ni9hbWQ2NC1saW51eC54bWwgaTM4Ni82NGJpdC1saW51eC54bWwgJHNydl9p Mzg2XzY0Yml0X3htbGZpbGVzIgotKwotICMgSW5wdXQgaXMgdGFrZW4gZnJvbSB0aGUgIiR7dGFy Z2V0fSIgdmFyaWFibGUuCi0gCi0gY2FzZSAiJHt0YXJnZXR9IiBpbgotQEAgLTYwLDEyICs3Miwx NSBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi0gCQkJ c3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLSAJCQk7OwotLSAgaVszNDU2N104Ni0qLWN5Z3dpbiop CXNydl9yZWdvYmo9cmVnLWkzODYubwotKyAgaVszNDU2N104Ni0qLWN5Z3dpbiopCXNydl9yZWdv Ymo9IiRzcnZfaTM4Nl9yZWdvYmoiCi0gCQkJc3J2X3RndG9iaj0iaTM4Ni1sb3cubyB3aW4zMi1s b3cubyB3aW4zMi1pMzg2LWxvdy5vIgotKwkJCXNydl94bWxmaWxlcz0iJHNydl9pMzg2X3htbGZp bGVzIgotIAkJCTs7Ci0tICBpWzM0NTY3XTg2LSotbGludXgqKQlzcnZfcmVnb2JqPXJlZy1pMzg2 LWxpbnV4Lm8KLSsgIGlbMzQ1NjddODYtKi1saW51eCopCXNydl9yZWdvYmo9IiRzcnZfaTM4Nl9s aW51eF9yZWdvYmoiCi0rCQkJc3J2X3htbGZpbGVzPSIkc3J2X2kzODZfbGludXhfeG1sZmlsZXMi Ci0gCQkJaWYgdGVzdCAiJGdkYl9jdl9pMzg2X2lzX3g4Nl82NCIgPSB5ZXMgOyB0aGVuCi0tCQkJ ICAgIHNydl9yZWdvYmo9InJlZy14ODYtNjQtbGludXgubyAkc3J2X3JlZ29iaiIKLSsJCQkgICAg c3J2X3JlZ29iaj0iJHNydl9yZWdvYmogJHNydl9hbWQ2NF9saW51eF9yZWdvYmoiCi0rCQkJICAg IHNydl94bWxmaWxlcz0iJHtzcnZfeG1sZmlsZXN9ICRzcnZfYW1kNjRfbGludXhfeG1sZmlsZXMi Ci0gCQkJZmkKLSAJCQlzcnZfdGd0b2JqPSJsaW51eC1sb3cubyBsaW51eC14ODYtbG93Lm8gaTM4 Ni1sb3cubyBpMzg3LWZwLm8iCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi1AQCAtNzMsMjAg Kzg4LDIzIEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KLSAJCQlzcnZfbGludXhfdGhyZWFkX2RiPXll cwotIAkJCTs7Ci0gICBpWzM0NTY3XTg2LSotbWluZ3czMmNlKikKLS0JCQlzcnZfcmVnb2JqPXJl Zy1pMzg2Lm8KLSsJCQlzcnZfcmVnb2JqPSIkc3J2X2kzODZfcmVnb2JqIgotIAkJCXNydl90Z3Rv Ymo9ImkzODYtbG93Lm8gd2luMzItbG93Lm8gd2luMzItaTM4Ni1sb3cubyIKLSAJCQlzcnZfdGd0 b2JqPSIke3Nydl90Z3RvYmp9IHdpbmNlY29tcGF0Lm8iCi0rCQkJc3J2X3htbGZpbGVzPSIkc3J2 X2kzODZfeG1sZmlsZXMiCi0gCQkJIyBob3N0aW9fbGFzdF9lcnJvciBpbXBsZW1lbnRhdGlvbiBp cyBpbiB3aW4zMi1sb3cuYwotIAkJCXNydl9ob3N0aW9fZXJyX29ianM9IiIKLSAJCQlzcnZfbWlu Z3c9eWVzCi0gCQkJc3J2X21pbmd3Y2U9eWVzCi0gCQkJOzsKLS0gIGlbMzQ1NjddODYtKi1taW5n dyopCXNydl9yZWdvYmo9cmVnLWkzODYubwotKyAgaVszNDU2N104Ni0qLW1pbmd3KikJc3J2X3Jl Z29iaj0iJHNydl9pMzg2X3JlZ29iaiIKLSAJCQlzcnZfdGd0b2JqPSJpMzg2LWxvdy5vIHdpbjMy LWxvdy5vIHdpbjMyLWkzODYtbG93Lm8iCi0rCQkJc3J2X3htbGZpbGVzPSIkc3J2X2kzODZfeG1s ZmlsZXMiCi0gCQkJc3J2X21pbmd3PXllcwotIAkJCTs7Ci0tICBpWzM0NTY3XTg2LSotbnRvKikJ c3J2X3JlZ29iaj1yZWctaTM4Ni5vCi0rICBpWzM0NTY3XTg2LSotbnRvKikJc3J2X3JlZ29iaj0i JHNydl9pMzg2X3JlZ29iaiIKLSAJCQlzcnZfdGd0b2JqPSJudG8tbG93Lm8gbnRvLXg4Ni1sb3cu byIKLSsJCQlzcnZfeG1sZmlsZXM9IiRzcnZfaTM4Nl94bWxmaWxlcyIKLSAJCQlzcnZfcW54PSJ5 ZXMiCi0gCQkJOzsKLSAgIGlhNjQtKi1saW51eCopCXNydl9yZWdvYmo9cmVnLWlhNjQubwotQEAg LTIwNiw4ICsyMjQsOSBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICBzcHUqLSotKikJCXNydl9y ZWdvYmo9cmVnLXNwdS5vCi0gCQkJc3J2X3RndG9iaj0ic3B1LWxvdy5vIgotIAkJCTs7Ci0tICB4 ODZfNjQtKi1saW51eCopCXNydl9yZWdvYmo9InJlZy14ODYtNjQtbGludXgubyByZWctaTM4Ni1s aW51eC5vIgotKyAgeDg2XzY0LSotbGludXgqKQlzcnZfcmVnb2JqPSIkc3J2X2FtZDY0X2xpbnV4 X3JlZ29iaiAkc3J2X2kzODZfbGludXhfcmVnb2JqIgotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxv dy5vIGxpbnV4LXg4Ni1sb3cubyBpMzg2LWxvdy5vIGkzODctZnAubyIKLSsJCQlzcnZfeG1sZmls ZXM9IiRzcnZfaTM4Nl9saW51eF94bWxmaWxlcyAkc3J2X2FtZDY0X2xpbnV4X3htbGZpbGVzIgot IAkJCXNydl9saW51eF91c3JyZWdzPXllcyAjIFRoaXMgaXMgZm9yIGkzODYgcHJvZ3MuCi0gCQkJ c3J2X2xpbnV4X3JlZ3NldHM9eWVzCi0gCQkJc3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLS0tLSAu L2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAw MDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuYwkyMDEwLTA0LTAz IDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTI3LDEwICsyNywxMCBAQAotIAotICNpbmNs dWRlICJnZGJfcHJvY19zZXJ2aWNlLmgiCi0gCi0tLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRl ZCBmaWxlIHJlZy1pMzg2LWxpbnV4LmMuICAqLwotKy8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0 ZWQgZmlsZSBpMzg2LWxpbnV4LmMuICAqLwotIHZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51 eCAodm9pZCk7Ci0tLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHJlZy14ODYtNjQt bGludXguYy4gICovCi0tdm9pZCBpbml0X3JlZ2lzdGVyc194ODZfNjRfbGludXggKHZvaWQpOwot Ky8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBhbWQ2NC1saW51eC5jLiAgKi8KLSt2 b2lkIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2xpbnV4ICh2b2lkKTsKLSAKLSAjaW5jbHVkZSA8c3lz L3JlZy5oPgotICNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci1AQCAtNzkyLDcgKzc5Miw3IEBAIHg4 Nl9hcmNoX3NldHVwICh2b2lkKQotICAgICB9Ci0gICBlbHNlIGlmICh1c2VfNjRiaXQpCi0gICAg IHsKLS0gICAgICBpbml0X3JlZ2lzdGVyc194ODZfNjRfbGludXggKCk7Ci0rICAgICAgaW5pdF9y ZWdpc3RlcnNfYW1kNjRfbGludXggKCk7Ci0gCi0gICAgICAgLyogQW1kNjQgZG9lc24ndCBoYXZl IEhBVkVfTElOVVhfVVNSUkVHUy4gICovCi0gICAgICAgdGhlX2xvd190YXJnZXQubnVtX3JlZ3Mg PSAtMTsKLS0tLSAuL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjA6MjQ6NTEuMDAw MDAwMDAwICswMjAwCi0rKysgLi9nZGIvaTM4Ni1saW51eC1uYXQuYwkyMDEwLTA0LTAzIDIwOjU5 OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTg2OCw2ICs4NjgsMTQgQEAgaTM4Nl9saW51eF9jaGls ZF9wb3N0X3N0YXJ0dXBfaW5mZXJpb3IgKAotICAgc3VwZXJfcG9zdF9zdGFydHVwX2luZmVyaW9y IChwdGlkKTsKLSB9Ci0gCi0rLyogR2V0IExpbnV4L3g4NiB0YXJnZXQgZGVzY3JpcHRpb24gZnJv bSBydW5uaW5nIHRhcmdldC4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVz YyAqCi0raTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3Bz KQotK3sKLSsgIHJldHVybiB0ZGVzY19pMzg2X2xpbnV4OwotK30KLSsKLSB2b2lkCi0gX2luaXRp YWxpemVfaTM4Nl9saW51eF9uYXQgKHZvaWQpCi0gewotQEAgLTg5Nyw2ICs5MDUsOCBAQCBfaW5p dGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKLSAgIHQtPnRvX2ZldGNoX3JlZ2lzdGVycyA9 IGkzODZfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzOwotICAgdC0+dG9fc3RvcmVfcmVn aXN0ZXJzID0gaTM4Nl9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnM7Ci0gCi0rICB0LT50 b19yZWFkX2Rlc2NyaXB0aW9uID0gaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uOwotKwotICAg LyogUmVnaXN0ZXIgdGhlIHRhcmdldC4gICovCi0gICBsaW51eF9uYXRfYWRkX3RhcmdldCAodCk7 Ci0gICBsaW51eF9uYXRfc2V0X25ld190aHJlYWQgKHQsIGkzODZfbGludXhfbmV3X3RocmVhZCk7 Ci0tLS0gLi9nZGIvaTM4Ni1saW51eC10ZGVwLmMJMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAw MDAgKzAyMDAKLSsrKyAuL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwkyMDEwLTA0LTAzIDIwOjU5OjUy LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ2LDYgKzQ2LDggQEAKLSAjaW5jbHVkZSAibGludXgtcmVj b3JkLmgiCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotKyNpbmNsdWRlICJmZWF0dXJlcy9pMzg2 L2kzODYtbGludXguYyIKLSsKLSAvKiBTdXBwb3J0ZWQgcmVnaXN0ZXIgbm90ZSBzZWN0aW9ucy4g ICovCi0gc3RhdGljIHN0cnVjdCBjb3JlX3JlZ3NldF9zZWN0aW9uIGkzODZfbGludXhfcmVnc2V0 X3NlY3Rpb25zW10gPQotIHsKLUBAIC01NSwxOCArNTcsNiBAQCBzdGF0aWMgc3RydWN0IGNvcmVf cmVnc2V0X3NlY3Rpb24gaTM4Nl9sCi0gICB7IE5VTEwsIDAgfQotIH07Ci0gCi0tLyogUmV0dXJu IHRoZSBuYW1lIG9mIHJlZ2lzdGVyIFJFRy4gICovCi0tCi0tc3RhdGljIGNvbnN0IGNoYXIgKgot LWkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBy ZWcpCi0tewotLSAgLyogRGVhbCB3aXRoIHRoZSBleHRyYSAib3JpZ19lYXgiIHBzZXVkbyByZWdp c3Rlci4gICovCi0tICBpZiAocmVnID09IEkzODZfTElOVVhfT1JJR19FQVhfUkVHTlVNKQotLSAg ICByZXR1cm4gIm9yaWdfZWF4IjsKLS0KLS0gIHJldHVybiBpMzg2X3JlZ2lzdGVyX25hbWUgKGdk YmFyY2gsIHJlZyk7Ci0tfQotLQotIC8qIFJldHVybiBub24temVybywgd2hlbiB0aGUgcmVnaXN0 ZXIgaXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIKLSAgICBncm91cC4gIFB1dCB0aGUg TElOVVhfT1JJR19FQVggcmVnaXN0ZXIgaW4gdGhlIHN5c3RlbSBncm91cC4gICovCi0gc3RhdGlj IGludAotQEAgLTU3MCwyMSArNTYwLDU3IEBAIHN0YXRpYyBpbnQgaTM4Nl9saW51eF9zY19yZWdf b2Zmc2V0W10gPQotICAgMCAqIDQJCQkJLyogJWdzICovCi0gfTsKLSAKLSsvKiBHZXQgTGludXgv eDg2IHRhcmdldCBkZXNjcmlwdGlvbiBmcm9tIGNvcmUgZHVtcC4gICovCi0rCi0rc3RhdGljIGNv bnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqCi0raTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRp b24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCQkgIHN0cnVjdCB0YXJnZXRfb3BzICp0 YXJnZXQsCi0rCQkJCSAgYmZkICphYmZkKQotK3sKLSsgIGFzZWN0aW9uICpzZWN0aW9uID0gYmZk X2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsICIucmVnMiIpOwotKwotKyAgaWYgKHNlY3Rpb24g PT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAvKiBMaW51eC9pMzg2LiAgKi8KLSsg IHJldHVybiB0ZGVzY19pMzg2X2xpbnV4OwotK30KLSsKLSBzdGF0aWMgdm9pZAotIGkzODZfbGlu dXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpCi0gewotICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAo Z2RiYXJjaCk7Ci0rICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjID0gaW5mby50YXJn ZXRfZGVzYzsKLSsgIHN0cnVjdCB0ZGVzY19hcmNoX2RhdGEgKnRkZXNjX2RhdGEgPSAodm9pZCAq KSBpbmZvLnRkZXBfaW5mbzsKLSsgIGNvbnN0IHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJl OwotKyAgaW50IHZhbGlkX3A7Ci0rCi0rICBnZGJfYXNzZXJ0ICh0ZGVzY19kYXRhKTsKLSAKLSAg IC8qIEdOVS9MaW51eCB1c2VzIEVMRi4gICovCi0gICBpMzg2X2VsZl9pbml0X2FiaSAoaW5mbywg Z2RiYXJjaCk7Ci0gCi0tICAvKiBTaW5jZSB3ZSBoYXZlIHRoZSBleHRyYSAib3JpZ19lYXgiIHJl Z2lzdGVyIG9uIEdOVS9MaW51eCwgd2UgaGF2ZQotLSAgICAgdG8gYWRqdXN0IGEgZmV3IHRoaW5n cy4gICovCi0rICAvKiBSZXNlcnZlIGEgbnVtYmVyIGZvciBvcmlnX2VheC4gICovCi0rICBzZXRf Z2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgSTM4Nl9MSU5VWF9OVU1fUkVHUyk7Ci0rCi0rICBp ZiAoISB0ZGVzY19oYXNfcmVnaXN0ZXJzICh0ZGVzYykpCi0rICAgIHRkZXNjID0gdGRlc2NfaTM4 Nl9saW51eDsKLSsgIHRkZXAtPnRkZXNjID0gdGRlc2M7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2Nf ZmluZF9mZWF0dXJlICh0ZGVzYywgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKLSsgIGlmIChm ZWF0dXJlID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIHZhbGlkX3AgPSB0ZGVzY19udW1i ZXJlZF9yZWdpc3RlciAoZmVhdHVyZSwgdGRlc2NfZGF0YSwKLSsJCQkJICAgICBJMzg2X0xJTlVY X09SSUdfRUFYX1JFR05VTSwKLSsJCQkJICAgICAib3JpZ19lYXgiKTsKLSsgIGlmICghdmFsaWRf cCkKLSsgICAgcmV0dXJuOwotIAotKyAgLyogQWRkIHRoZSAlb3JpZ19lYXggcmVnaXN0ZXIgdXNl ZCBmb3Igc3lzY2FsbCByZXN0YXJ0aW5nLiAgKi8KLSAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChn ZGJhcmNoLCBpMzg2X2xpbnV4X3dyaXRlX3BjKTsKLS0gIHNldF9nZGJhcmNoX251bV9yZWdzIChn ZGJhcmNoLCBJMzg2X0xJTlVYX05VTV9SRUdTKTsKLS0gIHNldF9nZGJhcmNoX3JlZ2lzdGVyX25h bWUgKGdkYmFyY2gsIGkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSk7Ci0tICBzZXRfZ2RiYXJjaF9y ZWdpc3Rlcl9yZWdncm91cF9wIChnZGJhcmNoLCBpMzg2X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3Vw X3ApOwotKwotKyAgdGRlcC0+cmVnaXN0ZXJfcmVnZ3JvdXBfcCA9IGkzODZfbGludXhfcmVnaXN0 ZXJfcmVnZ3JvdXBfcDsKLSAKLSAgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IGkzODZfbGlu dXhfZ3JlZ3NldF9yZWdfb2Zmc2V0OwotICAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IEFSUkFZ X1NJWkUgKGkzODZfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0KTsKLUBAIC03ODMsNiArODA5LDkg QEAgaTM4Nl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbwotICAgLyogSW5zdGFs bCBzdXBwb3J0ZWQgcmVnaXN0ZXIgbm90ZSBzZWN0aW9ucy4gICovCi0gICBzZXRfZ2RiYXJjaF9j b3JlX3JlZ3NldF9zZWN0aW9ucyAoZ2RiYXJjaCwgaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMp OwotIAotKyAgc2V0X2dkYmFyY2hfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIChnZGJhcmNoLAotKwkJ CQkgICAgIGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTsKLSsKLSAgIC8qIERpc3Bs YWNlZCBzdGVwcGluZy4gICovCi0gICBzZXRfZ2RiYXJjaF9kaXNwbGFjZWRfc3RlcF9jb3B5X2lu c24gKGdkYmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp bXBsZV9kaXNwbGFjZWRfc3RlcF9jb3B5X2luc24pOwotQEAgLTgxMSw0ICs4NDAsNyBAQCBfaW5p dGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXAgKHZvaWQpCi0gewotICAgZ2RiYXJjaF9yZWdpc3Rlcl9v c2FiaSAoYmZkX2FyY2hfaTM4NiwgMCwgR0RCX09TQUJJX0xJTlVYLAotIAkJCSAgaTM4Nl9saW51 eF9pbml0X2FiaSk7Ci0rCi0rICAvKiBJbml0aWFsaXplIHRoZSBMaW51eCB0YXJnZXQgZGVzY3Jp cHRpb24gICovCi0rICBpbml0aWFsaXplX3RkZXNjX2kzODZfbGludXggKCk7Ci0gfQotLS0tIC4v Z2RiL2kzODYtbGludXgtdGRlcC5oCTIwMTAtMDEtMDEgMDg6MzE6MzQuMDAwMDAwMDAwICswMTAw Ci0rKysgLi9nZGIvaTM4Ni1saW51eC10ZGVwLmgJMjAxMC0wNC0wMyAyMDo1OTo1Mi4wMDAwMDAw MDAgKzAyMDAKLUBAIC0zNSw0ICszNSw3IEBACi0gLyogVG90YWwgbnVtYmVyIG9mIHJlZ2lzdGVy cyBmb3IgR05VL0xpbnV4LiAgKi8KLSAjZGVmaW5lIEkzODZfTElOVVhfTlVNX1JFR1MgKEkzODZf TElOVVhfT1JJR19FQVhfUkVHTlVNICsgMSkKLSAKLSsvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRp b24uICAqLwotK2V4dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbGludXg7Ci0r Ci0gI2VuZGlmIC8qIGkzODYtbGludXgtdGRlcC5oICovCi0tLS0gLi9nZGIvaTM4Ni1udG8tdGRl cC5jCTIwMTAtMDEtMDEgMDg6MzE6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvaTM4Ni1u dG8tdGRlcC5jCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTIyLDcg KzEyMiw3IEBAIGkzODZudG9fcmVnc2V0X2lkIChpbnQgcmVnbm8pCi0gICAgIHJldHVybiBOVE9f UkVHX0VORDsKLSAgIGVsc2UgaWYgKHJlZ25vIDwgSTM4Nl9OVU1fR1JFR1MpCi0gICAgIHJldHVy biBOVE9fUkVHX0dFTkVSQUw7Ci0tICBlbHNlIGlmIChyZWdubyA8IEkzODZfTlVNX0dSRUdTICsg STM4Nl9OVU1fRlJFR1MpCi0rICBlbHNlIGlmIChyZWdubyA8IEkzODZfTlVNX0dSRUdTICsgSTM4 N19OVU1fUkVHUykKLSAgICAgcmV0dXJuIE5UT19SRUdfRkxPQVQ7Ci0gICBlbHNlIGlmIChyZWdu byA8IEkzODZfU1NFX05VTV9SRUdTKQotICAgICByZXR1cm4gTlRPX1JFR19GTE9BVDsgLyogV2Ug c3RvcmUgeG1tIHJlZ2lzdGVycyBpbiBmeHNhdmVfYXJlYS4gICovCi0tLS0gLi9nZGIvaTM4Ni10 ZGVwLmMJMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9pMzg2 LXRkZXAuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTU0LDkgKzU0 LDExIEBACi0gI2luY2x1ZGUgInJlY29yZC5oIgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSsj aW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LmMiCi0rCi0gLyogUmVnaXN0ZXIgbmFtZXMuICAq LwotIAotLXN0YXRpYyBjaGFyICppMzg2X3JlZ2lzdGVyX25hbWVzW10gPQotK3N0YXRpYyBjb25z dCBjaGFyICppMzg2X3JlZ2lzdGVyX25hbWVzW10gPQotIHsKLSAgICJlYXgiLCAgICJlY3giLCAg ICAiZWR4IiwgICAiZWJ4IiwKLSAgICJlc3AiLCAgICJlYnAiLCAgICAiZXNpIiwgICAiZWRpIiwK LUBAIC03MSwxMSArNzMsOSBAQCBzdGF0aWMgY2hhciAqaTM4Nl9yZWdpc3Rlcl9uYW1lc1tdID0K LSAgICJteGNzciIKLSB9OwotIAotLXN0YXRpYyBjb25zdCBpbnQgaTM4Nl9udW1fcmVnaXN0ZXJf bmFtZXMgPSBBUlJBWV9TSVpFIChpMzg2X3JlZ2lzdGVyX25hbWVzKTsKLS0KLSAvKiBSZWdpc3Rl ciBuYW1lcyBmb3IgTU1YIHBzZXVkby1yZWdpc3RlcnMuICAqLwotIAotLXN0YXRpYyBjaGFyICpp Mzg2X21teF9uYW1lc1tdID0KLStzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl9tbXhfbmFtZXNbXSA9 Ci0gewotICAgIm1tMCIsICJtbTEiLCAibW0yIiwgIm1tMyIsCi0gICAibW00IiwgIm1tNSIsICJt bTYiLCAibW03IgotQEAgLTE0NywxNiArMTQ3LDExIEBAIGkzODZfZnBjX3JlZ251bV9wIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXIKLSAKLSAvKiBSZXR1cm4gdGhlIG5hbWUgb2YgcmVnaXN0ZXIgUkVH TlVNLiAgKi8KLSAKLS1jb25zdCBjaGFyICoKLS1pMzg2X3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotK3N0YXRpYyBjb25zdCBjaGFyICoKLStpMzg2 X3BzZXVkb19yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251 bSkKLSB7Ci0tICBpZiAoaTM4Nl9tbXhfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0tICAg IHJldHVybiBpMzg2X21teF9uYW1lc1tyZWdudW0gLSBJMzg3X01NMF9SRUdOVU0gKGdkYmFyY2hf dGRlcCAoZ2RiYXJjaCkpXTsKLS0KLS0gIGlmIChyZWdudW0gPj0gMCAmJiByZWdudW0gPCBpMzg2 X251bV9yZWdpc3Rlcl9uYW1lcykKLS0gICAgcmV0dXJuIGkzODZfcmVnaXN0ZXJfbmFtZXNbcmVn bnVtXTsKLS0KLS0gIHJldHVybiBOVUxMOwotKyAgZ2RiX2Fzc2VydCAoaTM4Nl9tbXhfcmVnbnVt X3AgKGdkYmFyY2gsIHJlZ251bSkpOwotKyAgcmV0dXJuIGkzODZfbW14X25hbWVzW3JlZ251bSAt IEkzODdfTU0wX1JFR05VTSAoZ2RiYXJjaF90ZGVwIChnZGJhcmNoKSldOwotIH0KLSAKLSAvKiBD b252ZXJ0IGEgZGJ4IHJlZ2lzdGVyIG51bWJlciBSRUcgdG8gdGhlIGFwcHJvcHJpYXRlIHJlZ2lz dGVyCi1AQCAtMjExMiw4NyArMjEwNywyMiBAQCBpMzg2X3JldHVybl92YWx1ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyCi0gfQotIAwKLSAKLS0vKiBDb25zdHJ1Y3QgdHlwZXMgZm9yIElTQS1zcGVj aWZpYyByZWdpc3RlcnMuICAqLwotLXN0cnVjdCB0eXBlICoKLS1pMzg2X2VmbGFnc190eXBlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLS17Ci0tICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVw ID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLS0KLS0gIGlmICghdGRlcC0+aTM4Nl9lZmxhZ3Nf dHlwZSkKLS0gICAgewotLSAgICAgIHN0cnVjdCB0eXBlICp0eXBlOwotLQotLSAgICAgIHR5cGUg PSBhcmNoX2ZsYWdzX3R5cGUgKGdkYmFyY2gsICJidWlsdGluX3R5cGVfaTM4Nl9lZmxhZ3MiLCA0 KTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAwLCAiQ0YiKTsKLS0gICAg ICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxLCBOVUxMKTsKLS0gICAgICBhcHBlbmRf ZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAyLCAiUEYiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlw ZV9mbGFnICh0eXBlLCA0LCAiQUYiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0 eXBlLCA2LCAiWkYiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA3LCAi U0YiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA4LCAiVEYiKTsKLS0g ICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA5LCAiSUYiKTsKLS0gICAgICBhcHBl bmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxMCwgIkRGIik7Ci0tICAgICAgYXBwZW5kX2ZsYWdz X3R5cGVfZmxhZyAodHlwZSwgMTEsICJPRiIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2Zs YWcgKHR5cGUsIDE0LCAiTlQiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBl LCAxNiwgIlJGIik7Ci0tICAgICAgYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTcsICJW TSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDE4LCAiQUMiKTsKLS0g ICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxOSwgIlZJRiIpOwotLSAgICAgIGFw cGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDIwLCAiVklQIik7Ci0tICAgICAgYXBwZW5kX2Zs YWdzX3R5cGVfZmxhZyAodHlwZSwgMjEsICJJRCIpOwotLQotLSAgICAgIHRkZXAtPmkzODZfZWZs YWdzX3R5cGUgPSB0eXBlOwotLSAgICB9Ci0tCi0tICByZXR1cm4gdGRlcC0+aTM4Nl9lZmxhZ3Nf dHlwZTsKLS19Ci0tCi0tc3RydWN0IHR5cGUgKgotLWkzODZfbXhjc3JfdHlwZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gpCi0tewotLSAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCk7Ci0tCi0tICBpZiAoIXRkZXAtPmkzODZfbXhjc3JfdHlwZSkKLS0g ICAgewotLSAgICAgIHN0cnVjdCB0eXBlICp0eXBlOwotLQotLSAgICAgIHR5cGUgPSBhcmNoX2Zs YWdzX3R5cGUgKGdkYmFyY2gsICJidWlsdGluX3R5cGVfaTM4Nl9teGNzciIsIDQpOwotLSAgICAg IGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDAsICJJRSIpOwotLSAgICAgIGFwcGVuZF9m bGFnc190eXBlX2ZsYWcgKHR5cGUsIDEsICJERSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBl X2ZsYWcgKHR5cGUsIDIsICJaRSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5 cGUsIDMsICJPRSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDQsICJV RSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDUsICJQRSIpOwotLSAg ICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDYsICJEQVoiKTsKLS0gICAgICBhcHBl bmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA3LCAiSU0iKTsKLS0gICAgICBhcHBlbmRfZmxhZ3Nf dHlwZV9mbGFnICh0eXBlLCA4LCAiRE0iKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFn ICh0eXBlLCA5LCAiWk0iKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAx MCwgIk9NIik7Ci0tICAgICAgYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTEsICJVTSIp OwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDEyLCAiUE0iKTsKLS0gICAg ICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxNSwgIkZaIik7Ci0tCi0tICAgICAgdGRl cC0+aTM4Nl9teGNzcl90eXBlID0gdHlwZTsKLS0gICAgfQotLQotLSAgcmV0dXJuIHRkZXAtPmkz ODZfbXhjc3JfdHlwZTsKLS19Ci0tCi0gc3RydWN0IHR5cGUgKgotIGkzODdfZXh0X3R5cGUgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAg PSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotIAotICAgaWYgKCF0ZGVwLT5pMzg3X2V4dF90eXBl KQotLSAgICB0ZGVwLT5pMzg3X2V4dF90eXBlCi0tICAgICAgPSBhcmNoX2Zsb2F0X3R5cGUgKGdk YmFyY2gsIC0xLCAiYnVpbHRpbl90eXBlX2kzODdfZXh0IiwKLS0JCQkgZmxvYXRmb3JtYXRzX2kz ODdfZXh0KTsKLSsgICAgewotKyAgICAgIHRkZXAtPmkzODdfZXh0X3R5cGUgPSB0ZGVzY19maW5k X3R5cGUgKGdkYmFyY2gsICJpMzg3X2V4dCIpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRkZXAtPmkz ODdfZXh0X3R5cGUgIT0gTlVMTCk7Ci0rICAgIH0KLSAKLSAgIHJldHVybiB0ZGVwLT5pMzg3X2V4 dF90eXBlOwotIH0KLSAKLSAvKiBDb25zdHJ1Y3QgdmVjdG9yIHR5cGUgZm9yIE1NWCByZWdpc3Rl cnMuICAqLwotLXN0cnVjdCB0eXBlICoKLStzdGF0aWMgc3RydWN0IHR5cGUgKgotIGkzODZfbW14 X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3Rk ZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotQEAgLTIyMzMsODQgKzIxNjMsMTQg QEAgaTM4Nl9tbXhfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICByZXR1cm4gdGRl cC0+aTM4Nl9tbXhfdHlwZTsKLSB9Ci0gCi0tc3RydWN0IHR5cGUgKgotLWkzODZfc3NlX3R5cGUg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotLXsKLS0gIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRk ZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotLQotLSAgaWYgKCF0ZGVwLT5pMzg2X3NzZV90 eXBlKQotLSAgICB7Ci0tICAgICAgY29uc3Qgc3RydWN0IGJ1aWx0aW5fdHlwZSAqYnQgPSBidWls dGluX3R5cGUgKGdkYmFyY2gpOwotLQotLSAgICAgIC8qIFRoZSB0eXBlIHdlJ3JlIGJ1aWxkaW5n IGlzIHRoaXM6ICovCi0tI2lmIDAKLS0gICAgICB1bmlvbiBfX2dkYl9idWlsdGluX3R5cGVfdmVj MTI4aQotLSAgICAgIHsKLS0gICAgICAgIGludDEyOF90IHVpbnQxMjg7Ci0tICAgICAgICBpbnQ2 NF90IHYyX2ludDY0WzJdOwotLSAgICAgICAgaW50MzJfdCB2NF9pbnQzMls0XTsKLS0gICAgICAg IGludDE2X3QgdjhfaW50MTZbOF07Ci0tICAgICAgICBpbnQ4X3QgdjE2X2ludDhbMTZdOwotLSAg ICAgICAgZG91YmxlIHYyX2RvdWJsZVsyXTsKLS0gICAgICAgIGZsb2F0IHY0X2Zsb2F0WzRdOwot LSAgICAgIH07Ci0tI2VuZGlmCi0tCi0tICAgICAgc3RydWN0IHR5cGUgKnQ7Ci0tCi0tICAgICAg dCA9IGFyY2hfY29tcG9zaXRlX3R5cGUgKGdkYmFyY2gsCi0tCQkJICAgICAgICJfX2dkYl9idWls dGluX3R5cGVfdmVjMTI4aSIsIFRZUEVfQ09ERV9VTklPTik7Ci0tICAgICAgYXBwZW5kX2NvbXBv c2l0ZV90eXBlX2ZpZWxkICh0LCAidjRfZmxvYXQiLAotLQkJCQkgICBpbml0X3ZlY3Rvcl90eXBl IChidC0+YnVpbHRpbl9mbG9hdCwgNCkpOwotLSAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9m aWVsZCAodCwgInYyX2RvdWJsZSIsCi0tCQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWls dGluX2RvdWJsZSwgMikpOwotLSAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwg InYxNl9pbnQ4IiwKLS0JCQkJICAgaW5pdF92ZWN0b3JfdHlwZSAoYnQtPmJ1aWx0aW5faW50OCwg MTYpKTsKLS0gICAgICBhcHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGQgKHQsICJ2OF9pbnQxNiIs Ci0tCQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGluX2ludDE2LCA4KSk7Ci0tICAg ICAgYXBwZW5kX2NvbXBvc2l0ZV90eXBlX2ZpZWxkICh0LCAidjRfaW50MzIiLAotLQkJCQkgICBp bml0X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRpbl9pbnQzMiwgNCkpOwotLSAgICAgIGFwcGVuZF9j b21wb3NpdGVfdHlwZV9maWVsZCAodCwgInYyX2ludDY0IiwKLS0JCQkJICAgaW5pdF92ZWN0b3Jf dHlwZSAoYnQtPmJ1aWx0aW5faW50NjQsIDIpKTsKLS0gICAgICBhcHBlbmRfY29tcG9zaXRlX3R5 cGVfZmllbGQgKHQsICJ1aW50MTI4IiwgYnQtPmJ1aWx0aW5faW50MTI4KTsKLS0KLS0gICAgICBU WVBFX1ZFQ1RPUiAodCkgPSAxOwotLSAgICAgIFRZUEVfTkFNRSAodCkgPSAiYnVpbHRpbl90eXBl X3ZlYzEyOGkiOwotLSAgICAgIHRkZXAtPmkzODZfc3NlX3R5cGUgPSB0OwotLSAgICB9Ci0tCi0t ICByZXR1cm4gdGRlcC0+aTM4Nl9zc2VfdHlwZTsKLS19Ci0tCi0gLyogUmV0dXJuIHRoZSBHREIg dHlwZSBvYmplY3QgZm9yIHRoZSAic3RhbmRhcmQiIGRhdGEgdHlwZSBvZiBkYXRhIGluCi0tICAg cmVnaXN0ZXIgUkVHTlVNLiAgUGVyaGFwcyAlZXNpIGFuZCAlZWRpIHNob3VsZCBnbyBoZXJlLCBi dXQKLS0gICBwb3RlbnRpYWxseSB0aGV5IGNvdWxkIGJlIHVzZWQgZm9yIHRoaW5ncyBvdGhlciB0 aGFuIGFkZHJlc3MuICAqLwotKyAgIHJlZ2lzdGVyIFJFR05VTS4gKi8KLSAKLSBzdGF0aWMgc3Ry dWN0IHR5cGUgKgotLWkzODZfcmVnaXN0ZXJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IGludCByZWdudW0pCi0raTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfdHlwZSAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIGludCByZWdudW0pCi0gewotLSAgaWYgKHJlZ251bSA9PSBJMzg2X0VJUF9SRUdO VU0pCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfcHRy OwotLQotLSAgaWYgKHJlZ251bSA9PSBJMzg2X0VGTEFHU19SRUdOVU0pCi0tICAgIHJldHVybiBp Mzg2X2VmbGFnc190eXBlIChnZGJhcmNoKTsKLS0KLS0gIGlmIChyZWdudW0gPT0gSTM4Nl9FQlBf UkVHTlVNIHx8IHJlZ251bSA9PSBJMzg2X0VTUF9SRUdOVU0pCi0tICAgIHJldHVybiBidWlsdGlu X3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotLQotLSAgaWYgKGkzODZfZnBfcmVn bnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0tICAgIHJldHVybiBpMzg3X2V4dF90eXBlIChnZGJh cmNoKTsKLS0KLS0gIGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLS0g ICAgcmV0dXJuIGkzODZfbW14X3R5cGUgKGdkYmFyY2gpOwotLQotLSAgaWYgKGkzODZfc3NlX3Jl Z251bV9wIChnZGJhcmNoLCByZWdudW0pKQotLSAgICByZXR1cm4gaTM4Nl9zc2VfdHlwZSAoZ2Ri YXJjaCk7Ci0tCi0tICBpZiAocmVnbnVtID09IEkzODdfTVhDU1JfUkVHTlVNIChnZGJhcmNoX3Rk ZXAgKGdkYmFyY2gpKSkKLS0gICAgcmV0dXJuIGkzODZfbXhjc3JfdHlwZSAoZ2RiYXJjaCk7Ci0t Ci0tICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQ7Ci0rICBnZGJf YXNzZXJ0IChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0rICByZXR1cm4g aTM4Nl9tbXhfdHlwZSAoZ2RiYXJjaCk7Ci0gfQotIAotIC8qIE1hcCBhIGNvb2tlZCByZWdpc3Rl ciBvbnRvIGEgcmF3IHJlZ2lzdGVyIG9yIG1lbW9yeS4gIEZvciB0aGUgaTM4NiwKLUBAIC0yNzYx LDcgKzI2MjEsNyBAQCBpMzg2X2dvMzJfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gCi0g Ci0gICAvKiBESkdQUCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTU0UgcmVnaXN0ZXJzLiAgKi8KLSAg IHRkZXAtPm51bV94bW1fcmVncyA9IDA7Ci0tICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJj aCwgSTM4Nl9OVU1fR1JFR1MgKyBJMzg2X05VTV9GUkVHUyk7Ci0rICBzZXRfZ2RiYXJjaF9udW1f cmVncyAoZ2RiYXJjaCwgSTM4Nl9OVU1fR1JFR1MgKyBJMzg3X05VTV9SRUdTKTsKLSAKLSAgIC8q IE5hdGl2ZSBjb21waWxlciBpcyBHQ0MsIHdoaWNoIHVzZXMgdGhlIFNWUjQgcmVnaXN0ZXIgbnVt YmVyaW5nCi0gICAgICBldmVuIGluIENPRkYgYW5kIFNUQUJTLiAgU2VlIHRoZSBjb21tZW50IGlu IGkzODZfZ2RiYXJjaF9pbml0LAotQEAgLTU2MjMsMTIgKzU0ODMsNTAgQEAgaTM4Nl9mYXN0X3Ry YWNlcG9pbnRfdmFsaWRfYXQgKHN0cnVjdCBnZAotICAgcmV0dXJuIDE7Ci0gfQotIAotK3N0YXRp YyBpbnQKLStpMzg2X3ZhbGlkYXRlX3RkZXNjX3AgKHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAs Ci0rCQkgICAgICAgc3RydWN0IHRkZXNjX2FyY2hfZGF0YSAqdGRlc2NfZGF0YSkKLSt7Ci0rICBj b25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjID0gdGRlcC0+dGRlc2M7Ci0rICBjb25zdCBz dHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZV9jb3JlLCAqZmVhdHVyZV92ZWN0b3I7Ci0rICBp bnQgaSwgbnVtX3JlZ3MsIHZhbGlkX3A7Ci0rCi0rICBpZiAoISB0ZGVzY19oYXNfcmVnaXN0ZXJz ICh0ZGVzYykpCi0rICAgIHJldHVybiAwOwotKwotKyAgLyogR2V0IGNvcmUgcmVnaXN0ZXJzLiAg Ki8KLSsgIGZlYXR1cmVfY29yZSA9IHRkZXNjX2ZpbmRfZmVhdHVyZSAodGRlc2MsICJvcmcuZ251 LmdkYi5pMzg2LmNvcmUiKTsKLSsKLSsgIC8qIEdldCBTU0UgcmVnaXN0ZXJzLiAgKi8KLSsgIGZl YXR1cmVfdmVjdG9yID0gdGRlc2NfZmluZF9mZWF0dXJlICh0ZGVzYywgIm9yZy5nbnUuZ2RiLmkz ODYuc3NlIik7Ci0rCi0rICBpZiAoZmVhdHVyZV9jb3JlID09IE5VTEwgfHwgZmVhdHVyZV92ZWN0 b3IgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICB2YWxpZF9wID0gMTsKLSsKLSsgIG51 bV9yZWdzID0gdGRlcC0+bnVtX2NvcmVfcmVnczsKLSsgIGZvciAoaSA9IDA7IGkgPCBudW1fcmVn czsgaSsrKQotKyAgICB2YWxpZF9wICY9IHRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0dXJl X2NvcmUsIHRkZXNjX2RhdGEsIGksCi0rCQkJCQl0ZGVwLT5yZWdpc3Rlcl9uYW1lc1tpXSk7Ci0r Ci0rICAvKiBOZWVkIHRvIGluY2x1ZGUgJW14Y3NyLCBzbyBhZGQgb25lLiAgKi8KLSsgIG51bV9y ZWdzICs9IHRkZXAtPm51bV94bW1fcmVncyArIDE7Ci0rICBmb3IgKDsgaSA8IG51bV9yZWdzOyBp KyspCi0rICAgIHZhbGlkX3AgJj0gdGRlc2NfbnVtYmVyZWRfcmVnaXN0ZXIgKGZlYXR1cmVfdmVj dG9yLCB0ZGVzY19kYXRhLCBpLAotKwkJCQkJdGRlcC0+cmVnaXN0ZXJfbmFtZXNbaV0pOwotKwot KyAgcmV0dXJuIHZhbGlkX3A7Ci0rfQotKwotIAwKLSBzdGF0aWMgc3RydWN0IGdkYmFyY2ggKgot IGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJh cmNoX2xpc3QgKmFyY2hlcykKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOwotICAg c3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0rICBzdHJ1Y3QgdGRlc2NfYXJjaF9kYXRhICp0ZGVz Y19kYXRhOwotKyAgY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzYzsKLSAKLSAgIC8qIElm IHRoZXJlIGlzIGFscmVhZHkgYSBjYW5kaWRhdGUsIHVzZSBpdC4gICovCi0gICBhcmNoZXMgPSBn ZGJhcmNoX2xpc3RfbG9va3VwX2J5X2luZm8gKGFyY2hlcywgJmluZm8pOwotQEAgLTU2OTksMTIg KzU1OTcsNiBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gICAg ICBhbGlnbm1lbnQuICAqLwotICAgc2V0X2dkYmFyY2hfbG9uZ19kb3VibGVfYml0IChnZGJhcmNo LCA5Nik7Ci0gCi0tICAvKiBUaGUgZGVmYXVsdCBBQkkgaW5jbHVkZXMgZ2VuZXJhbC1wdXJwb3Nl IHJlZ2lzdGVycywgCi0tICAgICBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMsIGFuZCB0aGUgU1NF IHJlZ2lzdGVycy4gICovCi0tICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgSTM4Nl9T U0VfTlVNX1JFR1MpOwotLSAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgaTM4 Nl9yZWdpc3Rlcl9uYW1lKTsKLS0gIHNldF9nZGJhcmNoX3JlZ2lzdGVyX3R5cGUgKGdkYmFyY2gs IGkzODZfcmVnaXN0ZXJfdHlwZSk7Ci0tCi0gICAvKiBSZWdpc3RlciBudW1iZXJzIG9mIHZhcmlv dXMgaW1wb3J0YW50IHJlZ2lzdGVycy4gICovCi0gICBzZXRfZ2RiYXJjaF9zcF9yZWdudW0gKGdk YmFyY2gsIEkzODZfRVNQX1JFR05VTSk7IC8qICVlc3AgKi8KLSAgIHNldF9nZGJhcmNoX3BjX3Jl Z251bSAoZ2RiYXJjaCwgSTM4Nl9FSVBfUkVHTlVNKTsgLyogJWVpcCAqLwotQEAgLTU3NzUsMTEg KzU2NjcsNiBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gCi0g ICBzZXRfZ2RiYXJjaF9mcmFtZV9hcmdzX3NraXAgKGdkYmFyY2gsIDgpOwotIAotLSAgLyogV2ly ZSBpbiB0aGUgTU1YIHJlZ2lzdGVycy4gICovCi0tICBzZXRfZ2RiYXJjaF9udW1fcHNldWRvX3Jl Z3MgKGdkYmFyY2gsIGkzODZfbnVtX21teF9yZWdzKTsKLS0gIHNldF9nZGJhcmNoX3BzZXVkb19y ZWdpc3Rlcl9yZWFkIChnZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTsKLS0gIHNl dF9nZGJhcmNoX3BzZXVkb19yZWdpc3Rlcl93cml0ZSAoZ2RiYXJjaCwgaTM4Nl9wc2V1ZG9fcmVn aXN0ZXJfd3JpdGUpOwotLQotICAgc2V0X2dkYmFyY2hfcHJpbnRfaW5zbiAoZ2RiYXJjaCwgaTM4 Nl9wcmludF9pbnNuKTsKLSAKLSAgIHNldF9nZGJhcmNoX2R1bW15X2lkIChnZGJhcmNoLCBpMzg2 X2R1bW15X2lkKTsKLUBAIC01Nzg4LDcgKzU2NzUsNyBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBpCi0gCi0gICAvKiBBZGQgdGhlIGkzODYgcmVnaXN0ZXIgZ3JvdXBz LiAgKi8KLSAgIGkzODZfYWRkX3JlZ2dyb3VwcyAoZ2RiYXJjaCk7Ci0tICBzZXRfZ2RiYXJjaF9y ZWdpc3Rlcl9yZWdncm91cF9wIChnZGJhcmNoLCBpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOwot KyAgdGRlcC0+cmVnaXN0ZXJfcmVnZ3JvdXBfcCA9IGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcDsK LSAKLSAgIC8qIEhlbHBlciBmb3IgZnVuY3Rpb24gYXJndW1lbnQgaW5mb3JtYXRpb24uICAqLwot ICAgc2V0X2dkYmFyY2hfZmV0Y2hfcG9pbnRlcl9hcmd1bWVudCAoZ2RiYXJjaCwgaTM4Nl9mZXRj aF9wb2ludGVyX2FyZ3VtZW50KTsKLUBAIC01ODA2LDkgKzU2OTMsNDkgQEAgaTM4Nl9nZGJhcmNo X2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotIAotICAgZnJhbWVfYmFzZV9zZXRfZGVmYXVs dCAoZ2RiYXJjaCwgJmkzODZfZnJhbWVfYmFzZSk7Ci0gCi0rICAvKiBXaXJlIGluIHRoZSBNTVgg cmVnaXN0ZXJzLiAgKi8KLSsgIHNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncyAoZ2RiYXJjaCwg aTM4Nl9udW1fbW14X3JlZ3MpOwotKyAgc2V0X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVyX3JlYWQg KGdkYmFyY2gsIGkzODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOwotKyAgc2V0X2dkYmFyY2hfcHNl dWRvX3JlZ2lzdGVyX3dyaXRlIChnZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk7 Ci0rCi0rICBzZXRfdGRlc2NfcHNldWRvX3JlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIGkzODZfcHNl dWRvX3JlZ2lzdGVyX3R5cGUpOwotKyAgc2V0X3RkZXNjX3BzZXVkb19yZWdpc3Rlcl9uYW1lIChn ZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTsKLSsKLSsgIC8qIFRoZSBkZWZhdWx0 IEFCSSBpbmNsdWRlcyBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLCAKLSsgICAgIGZsb2F0aW5n LXBvaW50IHJlZ2lzdGVycywgYW5kIHRoZSBTU0UgcmVnaXN0ZXJzLiAgKi8KLSsgIHNldF9nZGJh cmNoX251bV9yZWdzIChnZGJhcmNoLCBJMzg2X1NTRV9OVU1fUkVHUyk7Ci0rCi0rICAvKiBHZXQg dGhlIHg4NiB0YXJnZXQgZGVzY3JpcHRpb24gZnJvbSBJTkZPLiAgKi8KLSsgIHRkZXNjID0gaW5m by50YXJnZXRfZGVzYzsKLSsgIGlmICghIHRkZXNjX2hhc19yZWdpc3RlcnMgKHRkZXNjKSkKLSsg ICAgdGRlc2MgPSB0ZGVzY19pMzg2OwotKyAgdGRlcC0+dGRlc2MgPSB0ZGVzYzsKLSsKLSsgIHRk ZXAtPm51bV9jb3JlX3JlZ3MgPSBJMzg2X05VTV9HUkVHUyArIEkzODdfTlVNX1JFR1M7Ci0rICB0 ZGVwLT5yZWdpc3Rlcl9uYW1lcyA9IGkzODZfcmVnaXN0ZXJfbmFtZXM7Ci0rCi0rICB0ZGVzY19k YXRhID0gdGRlc2NfZGF0YV9hbGxvYyAoKTsKLSsKLSAgIC8qIEhvb2sgaW4gQUJJLXNwZWNpZmlj IG92ZXJyaWRlcywgaWYgdGhleSBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4gICovCi0rICBpbmZvLnRk ZXBfaW5mbyA9ICh2b2lkICopIHRkZXNjX2RhdGE7Ci0gICBnZGJhcmNoX2luaXRfb3NhYmkgKGlu Zm8sIGdkYmFyY2gpOwotIAotKyAgLyogVGFyZ2V0IGRlc2NyaXB0aW9uIG1heSBiZSBjaGFuZ2Vk LiAgKi8KLSsgIHRkZXNjID0gdGRlcC0+dGRlc2M7Ci0rCi0rICBpZiAoIWkzODZfdmFsaWRhdGVf dGRlc2NfcCAodGRlcCwgdGRlc2NfZGF0YSkpCi0rICAgIHsKLSsgICAgICB0ZGVzY19kYXRhX2Ns ZWFudXAgKHRkZXNjX2RhdGEpOwotKyAgICAgIHhmcmVlICh0ZGVwKTsKLSsgICAgICBnZGJhcmNo X2ZyZWUgKGdkYmFyY2gpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICB0ZGVz Y191c2VfcmVnaXN0ZXJzIChnZGJhcmNoLCB0ZGVzYywgdGRlc2NfZGF0YSk7Ci0rCi0rICAvKiBP dmVycmlkZSBnZGJhcmNoX3JlZ2lzdGVyX3JlZ2dyb3VwX3Agc2V0IGluIHRkZXNjX3VzZV9yZWdp c3RlcnMuICAqLwotKyAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfcmVnZ3JvdXBfcCAoZ2RiYXJjaCwg dGRlcC0+cmVnaXN0ZXJfcmVnZ3JvdXBfcCk7Ci0rCi0gICAvKiBIb29rIGluIHRoZSBsZWdhY3kg cHJvbG9ndWUtYmFzZWQgdW53aW5kZXJzIGxhc3QgKGZhbGxiYWNrKS4gICovCi0gICBmcmFtZV91 bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmaTM4Nl9zaWd0cmFtcF9mcmFtZV91bndp bmQpOwotICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJmkzODZfZnJh bWVfdW53aW5kKTsKLUBAIC01ODg1LDQgKzU4MTIsNyBAQCBpcyBcImRlZmF1bHRcIi4iKSwKLSAK LSAgIC8qIEluaXRpYWxpemUgdGhlIGkzODYtc3BlY2lmaWMgcmVnaXN0ZXIgZ3JvdXBzLiAgKi8K LSAgIGkzODZfaW5pdF9yZWdncm91cHMgKCk7Ci0rCi0rICAvKiBJbml0aWFsaXplIHRoZSBzdGFu ZGFyZCB0YXJnZXQgZGVzY3JpcHRpb25zLiAgKi8KLSsgIGluaXRpYWxpemVfdGRlc2NfaTM4NiAo KTsKLSB9Ci0tLS0gLi9nZGIvaTM4Ni10ZGVwLmgJMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAw MDAgKzAyMDAKLSsrKyAuL2dkYi9pMzg2LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAw MDAwMCArMDIwMAotQEAgLTExOCw5ICsxMTgsMjEgQEAgc3RydWN0IGdkYmFyY2hfdGRlcAotICAg ICAgb2YgTU1YIHN1cHBvcnQuICAqLwotICAgaW50IG1tMF9yZWdudW07Ci0gCi0rICAvKiBOdW1i ZXIgb2YgY29yZSByZWdpc3RlcnMuICAqLwotKyAgaW50IG51bV9jb3JlX3JlZ3M7Ci0rCi0gICAv KiBOdW1iZXIgb2YgU1NFIHJlZ2lzdGVycy4gICovCi0gICBpbnQgbnVtX3htbV9yZWdzOwotIAot KyAgLyogUmVnaXN0ZXIgbmFtZXMuICAqLwotKyAgY29uc3QgY2hhciAqKnJlZ2lzdGVyX25hbWVz OwotKwotKyAgLyogVGFyZ2V0IGRlc2NyaXB0aW9uLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCB0YXJn ZXRfZGVzYyAqdGRlc2M7Ci0rCi0rICAvKiBSZWdpc3RlciBncm91cCBmdW5jdGlvbi4gICovCi0r ICBjb25zdCB2b2lkICpyZWdpc3Rlcl9yZWdncm91cF9wOwotKwotICAgLyogT2Zmc2V0IG9mIHNh dmVkIFBDIGluIGptcF9idWYuICAqLwotICAgaW50IGpiX3BjX29mZnNldDsKLSAKLUBAIC0xNDcs MTAgKzE1OSw3IEBAIHN0cnVjdCBnZGJhcmNoX3RkZXAKLSAgIGludCBzY19zcF9vZmZzZXQ7Ci0g Ci0gICAvKiBJU0Etc3BlY2lmaWMgZGF0YSB0eXBlcy4gICovCi0tICBzdHJ1Y3QgdHlwZSAqaTM4 Nl9lZmxhZ3NfdHlwZTsKLS0gIHN0cnVjdCB0eXBlICppMzg2X214Y3NyX3R5cGU7Ci0gICBzdHJ1 Y3QgdHlwZSAqaTM4Nl9tbXhfdHlwZTsKLS0gIHN0cnVjdCB0eXBlICppMzg2X3NzZV90eXBlOwot ICAgc3RydWN0IHR5cGUgKmkzODdfZXh0X3R5cGU7Ci0gCi0gICAvKiBQcm9jZXNzIHJlY29yZC9y ZXBsYXkgdGFyZ2V0LiAgKi8KLUBAIC0xOTksNyArMjA4LDggQEAgZW51bSBpMzg2X3JlZ251bQot ICAgSTM4Nl9FU19SRUdOVU0sCQkvKiAlZXMgKi8KLSAgIEkzODZfRlNfUkVHTlVNLAkJLyogJWZz ICovCi0gICBJMzg2X0dTX1JFR05VTSwJCS8qICVncyAqLwotLSAgSTM4Nl9TVDBfUkVHTlVNCQkv KiAlc3QoMCkgKi8KLSsgIEkzODZfU1QwX1JFR05VTSwJCS8qICVzdCgwKSAqLwotKyAgSTM4Nl9N WENTUl9SRUdOVU0gPSA0MAkvKiAlbXhjc3IgKi8gCi0gfTsKLSAKLSAvKiBSZWdpc3RlciBudW1i ZXJzIG9mIFJFQ09SRF9SRUdNQVAuICAqLwotQEAgLTIzMywyMCArMjQzLDE0IEBAIGVudW0gcmVj b3JkX2kzODZfcmVnbnVtCi0gfTsKLSAKLSAjZGVmaW5lIEkzODZfTlVNX0dSRUdTCTE2Ci0tI2Rl ZmluZSBJMzg2X05VTV9GUkVHUwkxNgotICNkZWZpbmUgSTM4Nl9OVU1fWFJFR1MgIDkKLSAKLS0j ZGVmaW5lIEkzODZfU1NFX05VTV9SRUdTCShJMzg2X05VTV9HUkVHUyArIEkzODZfTlVNX0ZSRUdT IFwKLS0JCQkJICsgSTM4Nl9OVU1fWFJFR1MpCi0rI2RlZmluZSBJMzg2X1NTRV9OVU1fUkVHUwko STM4Nl9NWENTUl9SRUdOVU0gKyAxKQotIAotIC8qIFNpemUgb2YgdGhlIGxhcmdlc3QgcmVnaXN0 ZXIuICAqLwotICNkZWZpbmUgSTM4Nl9NQVhfUkVHSVNURVJfU0laRQkxNgotIAotIC8qIFR5cGVz IGZvciBpMzg2LXNwZWNpZmljIHJlZ2lzdGVycy4gICovCi0tZXh0ZXJuIHN0cnVjdCB0eXBlICpp Mzg2X2VmbGFnc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0tZXh0ZXJuIHN0cnVj dCB0eXBlICppMzg2X214Y3NyX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKLS1leHRl cm4gc3RydWN0IHR5cGUgKmkzODZfbW14X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsK LS1leHRlcm4gc3RydWN0IHR5cGUgKmkzODZfc3NlX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKTsKLSBleHRlcm4gc3RydWN0IHR5cGUgKmkzODdfZXh0X3R5cGUgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoKTsKLSAKLSAvKiBTZWdtZW50IHNlbGVjdG9ycy4gICovCi1AQCAtMjY2LDkgKzI3 MCw2IEBAIGV4dGVybiBDT1JFX0FERFIgaTM4Nl9za2lwX21haW5fcHJvbG9ndWUKLSAvKiBSZXR1 cm4gd2hldGhlciB0aGUgVEhJU19GUkFNRSBjb3JyZXNwb25kcyB0byBhIHNpZ3RyYW1wIHJvdXRp bmUuICAqLwotIGV4dGVybiBpbnQgaTM4Nl9zaWd0cmFtcF9wIChzdHJ1Y3QgZnJhbWVfaW5mbyAq dGhpc19mcmFtZSk7Ci0gCi0tLyogUmV0dXJuIHRoZSBuYW1lIG9mIHJlZ2lzdGVyIFJFR05VTS4g ICovCi0tZXh0ZXJuIGNoYXIgY29uc3QgKmkzODZfcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFy Y2ggKiBnZGJhcmNoLCBpbnQgcmVnbnVtKTsKLS0KLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgUkVH TlVNIGlzIGEgbWVtYmVyIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXAuICAqLwotIGV4dGVybiBpbnQg aTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJl Z251bSwKLSAJCQkJICAgICBzdHJ1Y3QgcmVnZ3JvdXAgKmdyb3VwKTsKLS0tLSAuL2dkYi9pMzg3 LXRkZXAuaAkyMDEwLTAxLTAxIDA4OjMxOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2kz ODctdGRlcC5oCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjcsNiAr MjcsOSBAQCBzdHJ1Y3QgcmVnY2FjaGU7Ci0gc3RydWN0IHR5cGU7Ci0gc3RydWN0IHVpX2ZpbGU7 Ci0gCi0rLyogTnVtYmVyIG9mIGkzODcgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSsj ZGVmaW5lIEkzODdfTlVNX1JFR1MJMTYKLSsKLSAjZGVmaW5lIEkzODdfU1QwX1JFR05VTSh0ZGVw KSAoKHRkZXApLT5zdDBfcmVnbnVtKQotICNkZWZpbmUgSTM4N19OVU1fWE1NX1JFR1ModGRlcCkg KCh0ZGVwKS0+bnVtX3htbV9yZWdzKQotICNkZWZpbmUgSTM4N19NTTBfUkVHTlVNKHRkZXApICgo dGRlcCktPm1tMF9yZWdudW0pCi0tLS0gLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWxpbnV4 LmRhdAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3JlZ2Zv cm1hdHMvaTM4Ni9hbWQ2NC1saW51eC5kYXQJMjAxMC0wNC0wMyAyMDo1OTo1Mi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0wLDAgKzEsNjIgQEAKLSsjIERPIE5PVCBFRElUOiBnZW5lcmF0ZWQgZnJvbSBp Mzg2L2FtZDY0LWxpbnV4LnhtbAotK25hbWU6YW1kNjRfbGludXgKLSt4bWx0YXJnZXQ6YW1kNjQt bGludXgueG1sCi0rZXhwZWRpdGU6cmJwLHJzcCxyaXAKLSs2NDpyYXgKLSs2NDpyYngKLSs2NDpy Y3gKLSs2NDpyZHgKLSs2NDpyc2kKLSs2NDpyZGkKLSs2NDpyYnAKLSs2NDpyc3AKLSs2NDpyOAot KzY0OnI5Ci0rNjQ6cjEwCi0rNjQ6cjExCi0rNjQ6cjEyCi0rNjQ6cjEzCi0rNjQ6cjE0Ci0rNjQ6 cjE1Ci0rNjQ6cmlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSszMjpzcwotKzMyOmRzCi0rMzI6ZXMK LSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3QxCi0rODA6c3QyCi0rODA6c3QzCi0rODA6 c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6ZmN0cmwKLSszMjpmc3RhdAotKzMy OmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9zZWcKLSszMjpmb29mZgotKzMyOmZv cAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1tMgotKzEyODp4bW0zCi0rMTI4OnhtbTQK LSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcKLSsxMjg6eG1tOAotKzEyODp4bW05Ci0r MTI4OnhtbTEwCi0rMTI4OnhtbTExCi0rMTI4OnhtbTEyCi0rMTI4OnhtbTEzCi0rMTI4OnhtbTE0 Ci0rMTI4OnhtbTE1Ci0rMzI6bXhjc3IKLSs2NDpvcmlnX3JheAotLS0tIC4vZ2RiL3JlZ2Zvcm1h dHMvaTM4Ni9hbWQ2NC5kYXQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi9yZWdmb3JtYXRzL2kzODYvYW1kNjQuZGF0CTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAw MDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDYxIEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVk IGZyb20gaTM4Ni9hbWQ2NC54bWwKLStuYW1lOmFtZDY0Ci0reG1sdGFyZ2V0OmFtZDY0LnhtbAot K2V4cGVkaXRlOnJicCxyc3AscmlwCi0rNjQ6cmF4Ci0rNjQ6cmJ4Ci0rNjQ6cmN4Ci0rNjQ6cmR4 Ci0rNjQ6cnNpCi0rNjQ6cmRpCi0rNjQ6cmJwCi0rNjQ6cnNwCi0rNjQ6cjgKLSs2NDpyOQotKzY0 OnIxMAotKzY0OnIxMQotKzY0OnIxMgotKzY0OnIxMwotKzY0OnIxNAotKzY0OnIxNQotKzY0OnJp cAotKzMyOmVmbGFncwotKzMyOmNzCi0rMzI6c3MKLSszMjpkcwotKzMyOmVzCi0rMzI6ZnMKLSsz MjpncwotKzgwOnN0MAotKzgwOnN0MQotKzgwOnN0MgotKzgwOnN0MwotKzgwOnN0NAotKzgwOnN0 NQotKzgwOnN0NgotKzgwOnN0NwotKzMyOmZjdHJsCi0rMzI6ZnN0YXQKLSszMjpmdGFnCi0rMzI6 ZmlzZWcKLSszMjpmaW9mZgotKzMyOmZvc2VnCi0rMzI6Zm9vZmYKLSszMjpmb3AKLSsxMjg6eG1t MAotKzEyODp4bW0xCi0rMTI4OnhtbTIKLSsxMjg6eG1tMwotKzEyODp4bW00Ci0rMTI4OnhtbTUK LSsxMjg6eG1tNgotKzEyODp4bW03Ci0rMTI4OnhtbTgKLSsxMjg6eG1tOQotKzEyODp4bW0xMAot KzEyODp4bW0xMQotKzEyODp4bW0xMgotKzEyODp4bW0xMwotKzEyODp4bW0xNAotKzEyODp4bW0x NQotKzMyOm14Y3NyCi0tLS0gLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYtbGludXguZGF0CTE5 NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9p Mzg2L2kzODYtbGludXguZGF0CTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1A QCAtMCwwICsxLDQ2IEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVkIGZyb20gaTM4Ni9pMzg2 LWxpbnV4LnhtbAotK25hbWU6aTM4Nl9saW51eAotK3htbHRhcmdldDppMzg2LWxpbnV4LnhtbAot K2V4cGVkaXRlOmVicCxlc3AsZWlwCi0rMzI6ZWF4Ci0rMzI6ZWN4Ci0rMzI6ZWR4Ci0rMzI6ZWJ4 Ci0rMzI6ZXNwCi0rMzI6ZWJwCi0rMzI6ZXNpCi0rMzI6ZWRpCi0rMzI6ZWlwCi0rMzI6ZWZsYWdz Ci0rMzI6Y3MKLSszMjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3Qw Ci0rODA6c3QxCi0rODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0r ODA6c3Q3Ci0rMzI6ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZp b2ZmCi0rMzI6Zm9zZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEK LSsxMjg6eG1tMgotKzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0r MTI4OnhtbTcKLSszMjpteGNzcgotKzMyOm9yaWdfZWF4Ci0tLS0gLi9nZGIvcmVnZm9ybWF0cy9p Mzg2L2kzODYuZGF0CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9n ZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYuZGF0CTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAw ICswMjAwCi1AQCAtMCwwICsxLDQ1IEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVkIGZyb20g aTM4Ni9pMzg2LnhtbAotK25hbWU6aTM4NgotK3htbHRhcmdldDppMzg2LnhtbAotK2V4cGVkaXRl OmVicCxlc3AsZWlwCi0rMzI6ZWF4Ci0rMzI6ZWN4Ci0rMzI6ZWR4Ci0rMzI6ZWJ4Ci0rMzI6ZXNw Ci0rMzI6ZWJwCi0rMzI6ZXNpCi0rMzI6ZWRpCi0rMzI6ZWlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MK LSszMjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3Qx Ci0rODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0r MzI6ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6 Zm9zZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1t MgotKzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcK LSszMjpteGNzcgotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvcmVnLWkzODYtbGludXguZGF0CTIwMDkt MDctMjAgMjA6NTE6NDIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9yZWct aTM4Ni1saW51eC5kYXQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0x LDQ2ICswLDAgQEAKLS1uYW1lOmkzODZfbGludXgKLS14bWxhcmNoOmkzODYKLS1vc2FiaTpHTlUv TGludXgKLS1leHBlZGl0ZTplYnAsZXNwLGVpcAotLTMyOmVheAotLTMyOmVjeAotLTMyOmVkeAot LTMyOmVieAotLTMyOmVzcAotLTMyOmVicAotLTMyOmVzaQotLTMyOmVkaQotLTMyOmVpcAotLTMy OmVmbGFncwotLTMyOmNzCi0tMzI6c3MKLS0zMjpkcwotLTMyOmVzCi0tMzI6ZnMKLS0zMjpncwot LTgwOnN0MAotLTgwOnN0MQotLTgwOnN0MgotLTgwOnN0MwotLTgwOnN0NAotLTgwOnN0NQotLTgw OnN0NgotLTgwOnN0NwotLTMyOmZjdHJsCi0tMzI6ZnN0YXQKLS0zMjpmdGFnCi0tMzI6ZmlzZWcK LS0zMjpmaW9mZgotLTMyOmZvc2VnCi0tMzI6Zm9vZmYKLS0zMjpmb3AKLS0xMjg6eG1tMAotLTEy ODp4bW0xCi0tMTI4OnhtbTIKLS0xMjg6eG1tMwotLTEyODp4bW00Ci0tMTI4OnhtbTUKLS0xMjg6 eG1tNgotLTEyODp4bW03Ci0tMzI6bXhjc3IKLS0zMjpvcmlnX2VheAotLS0tIC4vZ2RiL3JlZ2Zv cm1hdHMvcmVnLWkzODYuZGF0CTIwMDgtMDItMjggMDY6NTQ6MTAuMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvcmVnZm9ybWF0cy9yZWctaTM4Ni5kYXQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAw MDAwMDAgKzAxMDAKLUBAIC0xLDQ0ICswLDAgQEAKLS1uYW1lOmkzODYKLS14bWxhcmNoOmkzODYK LS1leHBlZGl0ZTplYnAsZXNwLGVpcAotLTMyOmVheAotLTMyOmVjeAotLTMyOmVkeAotLTMyOmVi eAotLTMyOmVzcAotLTMyOmVicAotLTMyOmVzaQotLTMyOmVkaQotLTMyOmVpcAotLTMyOmVmbGFn cwotLTMyOmNzCi0tMzI6c3MKLS0zMjpkcwotLTMyOmVzCi0tMzI6ZnMKLS0zMjpncwotLTgwOnN0 MAotLTgwOnN0MQotLTgwOnN0MgotLTgwOnN0MwotLTgwOnN0NAotLTgwOnN0NQotLTgwOnN0Ngot LTgwOnN0NwotLTMyOmZjdHJsCi0tMzI6ZnN0YXQKLS0zMjpmdGFnCi0tMzI6ZmlzZWcKLS0zMjpm aW9mZgotLTMyOmZvc2VnCi0tMzI6Zm9vZmYKLS0zMjpmb3AKLS0xMjg6eG1tMAotLTEyODp4bW0x Ci0tMTI4OnhtbTIKLS0xMjg6eG1tMwotLTEyODp4bW00Ci0tMTI4OnhtbTUKLS0xMjg6eG1tNgot LTEyODp4bW03Ci0tMzI6bXhjc3IKLS0tLSAuL2dkYi9yZWdmb3JtYXRzL3JlZy14ODYtNjQtbGlu dXguZGF0CTIwMDktMDctMjAgMjA6NTE6NDIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvcmVn Zm9ybWF0cy9yZWcteDg2LTY0LWxpbnV4LmRhdAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw MCArMDEwMAotQEAgLTEsNjIgKzAsMCBAQAotLW5hbWU6eDg2XzY0X2xpbnV4Ci0teG1sYXJjaDpp Mzg2Ong4Ni02NAotLW9zYWJpOkdOVS9MaW51eAotLWV4cGVkaXRlOnJicCxyc3AscmlwCi0tNjQ6 cmF4Ci0tNjQ6cmJ4Ci0tNjQ6cmN4Ci0tNjQ6cmR4Ci0tNjQ6cnNpCi0tNjQ6cmRpCi0tNjQ6cmJw Ci0tNjQ6cnNwCi0tNjQ6cjgKLS02NDpyOQotLTY0OnIxMAotLTY0OnIxMQotLTY0OnIxMgotLTY0 OnIxMwotLTY0OnIxNAotLTY0OnIxNQotLTY0OnJpcAotLTMyOmVmbGFncwotLTMyOmNzCi0tMzI6 c3MKLS0zMjpkcwotLTMyOmVzCi0tMzI6ZnMKLS0zMjpncwotLTgwOnN0MAotLTgwOnN0MQotLTgw OnN0MgotLTgwOnN0MwotLTgwOnN0NAotLTgwOnN0NQotLTgwOnN0NgotLTgwOnN0NwotLTMyOmZj dHJsCi0tMzI6ZnN0YXQKLS0zMjpmdGFnCi0tMzI6ZmlzZWcKLS0zMjpmaW9mZgotLTMyOmZvc2Vn Ci0tMzI6Zm9vZmYKLS0zMjpmb3AKLS0xMjg6eG1tMAotLTEyODp4bW0xCi0tMTI4OnhtbTIKLS0x Mjg6eG1tMwotLTEyODp4bW00Ci0tMTI4OnhtbTUKLS0xMjg6eG1tNgotLTEyODp4bW03Ci0tMTI4 OnhtbTgKLS0xMjg6eG1tOQotLTEyODp4bW0xMAotLTEyODp4bW0xMQotLTEyODp4bW0xMgotLTEy ODp4bW0xMwotLTEyODp4bW0xNAotLTEyODp4bW0xNQotLTMyOm14Y3NyCi0tNjQ6b3JpZ19yYXgK LS0tLSAuL2dkYi9yZWdmb3JtYXRzL3JlZy14ODYtNjQuZGF0CTIwMDQtMDEtMTAgMTM6NTI6NDEu MDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9yZWcteDg2LTY0LmRhdAkxOTcw LTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNTkgKzAsMCBAQAotLW5hbWU6 eDg2XzY0Ci0tZXhwZWRpdGU6cmJwLHJzcCxyaXAKLS02NDpyYXgKLS02NDpyYngKLS02NDpyY3gK LS02NDpyZHgKLS02NDpyc2kKLS02NDpyZGkKLS02NDpyYnAKLS02NDpyc3AKLS02NDpyOAotLTY0 OnI5Ci0tNjQ6cjEwCi0tNjQ6cjExCi0tNjQ6cjEyCi0tNjQ6cjEzCi0tNjQ6cjE0Ci0tNjQ6cjE1 Ci0tNjQ6cmlwCi0tMzI6ZWZsYWdzCi0tMzI6Y3MKLS0zMjpzcwotLTMyOmRzCi0tMzI6ZXMKLS0z MjpmcwotLTMyOmdzCi0tODA6c3QwCi0tODA6c3QxCi0tODA6c3QyCi0tODA6c3QzCi0tODA6c3Q0 Ci0tODA6c3Q1Ci0tODA6c3Q2Ci0tODA6c3Q3Ci0tMzI6ZmN0cmwKLS0zMjpmc3RhdAotLTMyOmZ0 YWcKLS0zMjpmaXNlZwotLTMyOmZpb2ZmCi0tMzI6Zm9zZWcKLS0zMjpmb29mZgotLTMyOmZvcAot LTEyODp4bW0wCi0tMTI4OnhtbTEKLS0xMjg6eG1tMgotLTEyODp4bW0zCi0tMTI4OnhtbTQKLS0x Mjg6eG1tNQotLTEyODp4bW02Ci0tMTI4OnhtbTcKLS0xMjg6eG1tOAotLTEyODp4bW05Ci0tMTI4 OnhtbTEwCi0tMTI4OnhtbTExCi0tMTI4OnhtbTEyCi0tMTI4OnhtbTEzCi0tMTI4OnhtbTE0Ci0t MTI4OnhtbTE1Ci0tMzI6bXhjc3IKLS0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLnhtbC90ZGVzYy1y ZWdzLmV4cAkyMDEwLTAyLTE2IDIyOjI2OjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rl c3RzdWl0ZS9nZGIueG1sL3RkZXNjLXJlZ3MuZXhwCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAw MDAwICswMjAwCi1AQCAtMjUsNiArMjUsNyBAQCBnZGJfc3RhcnQKLSAKLSBzZXQgY29yZS1yZWdz ICIiCi0gc2V0IHJlZ2RpciAiIgotK3NldCBhcmNoaXRlY3R1cmUgIiIKLSBzd2l0Y2ggLWdsb2Ig LS0gW2lzdGFyZ2V0XSB7Ci0gICAgICIqYXJtLSotKiIgewotICAgICAgICAgc2V0IGNvcmUtcmVn cyB7YXJtLWNvcmUueG1sfQotQEAgLTU1LDYgKzU2LDE2IEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0 YXJnZXRdIHsKLSAJdW5zdXBwb3J0ZWQgInJlZ2lzdGVyIHRlc3RzIgotIAlyZXR1cm4gMAotICAg ICB9Ci0rICAgICJpPzg2LSotKiIgewotKwlzZXQgYXJjaGl0ZWN0dXJlICJpMzg2IgotKwlzZXQg cmVnZGlyICJpMzg2LyIKLSsgICAgICAgIHNldCBjb3JlLXJlZ3MgezMyYml0LWNvcmUueG1sIDMy Yml0LXNzZS54bWx9Ci0rICAgIH0KLSsgICAgIng4Nl82NC0qLSoiIHsKLSsJc2V0IGFyY2hpdGVj dHVyZSAiaTM4Njp4ODYtNjQiCi0rCXNldCByZWdkaXIgImkzODYvIgotKyAgICAgICAgc2V0IGNv cmUtcmVncyB7NjRiaXQtY29yZS54bWwgNjRiaXQtc3NlLnhtbH0KLSsgICAgfQotIH0KLSAKLSAj IElmIG5vIGNvcmUgcmVnaXN0ZXJzIHdlcmUgc3BlY2lmaWVkLCBhc3N1bWUgdGhpcyB0YXJnZXQg ZG9lcyBub3QKLUBAIC04OSwxMiArMTAwLDE2IEBAIHByb2MgbG9hZF9kZXNjcmlwdGlvbiB7IGZp bGUgZXJybXNnIH0gewotICAgICBnbG9iYWwgc3ViZGlyCi0gICAgIGdsb2JhbCBnZGJfcHJvbXB0 Ci0gICAgIGdsb2JhbCBjb3JlLXJlZ3MKLSsgICAgZ2xvYmFsIGFyY2hpdGVjdHVyZQotIAotICAg ICBmaWxlIGRlbGV0ZSAiJHN1YmRpci9yZWdzLnhtbCIKLSAgICAgc2V0IGlmZCBbb3BlbiAiJHNy Y2Rpci8kc3ViZGlyLyRmaWxlIiByXQotICAgICBzZXQgb2ZkIFtvcGVuICIkc3ViZGlyL3JlZ3Mu eG1sIiB3XQotICAgICB3aGlsZSB7W2dldHMgJGlmZCBsaW5lXSA+PSAwfSB7Ci0gCWlmIHtbcmVn ZXhwIHs8eGk6aW5jbHVkZSBocmVmPSJjb3JlLXJlZ3MueG1sIi8+fSAkbGluZV19IHsKLSsJICAg IGlmIHshIFtzdHJpbmcgZXF1YWwgJHthcmNoaXRlY3R1cmV9ICIiXX0gewotKwkJcHV0cyAkb2Zk ICIgIDxhcmNoaXRlY3R1cmU+JHthcmNoaXRlY3R1cmV9PC9hcmNoaXRlY3R1cmU+IgotKwkgICAg fQotIAkgICAgZm9yZWFjaCBzcmMgJHtjb3JlLXJlZ3N9IHsKLSAJCXB1dHMgJG9mZCAiICA8eGk6 aW5jbHVkZSBocmVmPVwiJHNyY1wiLz4iCi0gCSAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTc4 MjUwLWF2eC0wMm9mMTAucGF0Y2ggYi9nZGItYno1NzgyNTAtYXZ4LTAyb2YxMC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJhZjA1NS4uMDAwMDAwMAotLS0gYS9nZGItYno1 NzgyNTAtYXZ4LTAyb2YxMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1MSArMCwwIEBACi1b IEJhY2twb3J0ZWQuICBdCi0KLWNvbW1pdCBjYjkyOGM2N2M5MGNmYjViYmIwNjM2ZDkxODU1Yjk1 ZTUxYWQyNzVkCi1BdXRob3I6IERhbmllbCBKYWNvYm93aXR6IDxkYW5AZGViaWFuLm9yZz4KLURh dGU6ICAgTW9uIE1hciAxIDE3OjE5OjIxIDIwMTAgKzAwMDAKLQotICAgIAkqIGdkYnR5cGVzLmMg KGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZF9yYXcpOiBOZXcuCi0gICAgCShhcHBlbmRfY29t cG9zaXRlX3R5cGVfZmllbGRfYWxpZ25lZCk6IFVzZSB0aGUgbmV3IGZ1bmN0aW9uLgotICAgIAkq IGdkYnR5cGVzLmggKGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZF9yYXcpOiBEZWNsYXJlLgot ICAgIAkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAoc3RydWN0IHRkZXNjX3R5cGVfZmllbGQpOiBB ZGQgc3RhcnQgYW5kIGVuZC4KLSAgICAJKHN0cnVjdCB0ZGVzY190eXBlX2ZsYWcpOiBOZXcgdHlw ZS4KLSAgICAJKHN0cnVjdCB0ZGVzY190eXBlKTogQWRkIFRERVNDX1RZUEVfU1RSVUNUIGFuZCBU REVTQ19UWVBFX0ZMQUdTIHRvCi0gICAgCWtpbmQuICBBZGQgc2l6ZSB0byB1LnUuICBBZGQgdS5m IGZvciBmbGFncy4KLSAgICAJKHRkZXNjX2dkYl90eXBlKTogSGFuZGxlIFRERVNDX1RZUEVfU1RS VUNUIGFuZCBUREVTQ19UWVBFX0ZMQUdTLgotICAgIAkodGRlc2NfZnJlZV90eXBlKTogTGlrZXdp c2UuCi0gICAgCSh0ZGVzY19jcmVhdGVfc3RydWN0LCB0ZGVzY19zZXRfc3RydWN0X3NpemUsIHRk ZXNjX2NyZWF0ZV9mbGFncyk6IE5ldy4KLSAgICAJKHRkZXNjX2FkZF9maWVsZCk6IEhhbmRsZSBU REVTQ19UWVBFX1NUUlVDVC4KLSAgICAJKHRkZXNjX2FkZF9iaXRmaWVsZCwgdGRlc2NfYWRkX2Zs YWcpOiBOZXcuCi0gICAgCSogdGFyZ2V0LWRlc2NyaXB0aW9ucy5oICh0ZGVzY19jcmVhdGVfc3Ry dWN0LCB0ZGVzY19zZXRfc3RydWN0X3NpemUpCi0gICAgCSh0ZGVzY19jcmVhdGVfZmxhZ3MsIHRk ZXNjX2FkZF9iaXRmaWVsZCwgdGRlc2NfYWRkX2ZsYWcpOiBEZWNsYXJlLgotICAgIAkqIHhtbC10 ZGVzYy5jIChzdHJ1Y3QgdGRlc2NfcGFyc2luZ19kYXRhKTogUmVuYW1lIGN1cnJlbnRfdW5pb24g dG8KLSAgICAJY3VycmVudF90eXBlLiAgQWRkIGN1cnJlbnRfdHlwZV9zaXplIGFuZCBjdXJyZW50 X3R5cGVfaXNfZmxhZ3MuCi0gICAgCSh0ZGVzY19zdGFydF91bmlvbik6IENsZWFyIHRoZSBuZXcg ZmllbGRzLgotICAgIAkodGRlc2Nfc3RhcnRfc3RydWN0LCB0ZGVzY19zdGFydF9mbGFncyk6IE5l dy4KLSAgICAJKHRkZXNjX3N0YXJ0X2ZpZWxkKTogSGFuZGxlIHN0cnVjdCBmaWVsZHMsIGluY2x1 ZGluZyBiaXRmaWVsZHMuCi0gICAgCShmaWVsZF9hdHRyaWJ1dGVzKTogTWFrZSB0eXBlIG9wdGlv bmFsLiAgQWRkIHN0YXJ0IGFuZCBlbmQuCi0gICAgCSh1bmlvbl9jaGlsZHJlbik6IFJlbmFtZSB0 byBzdHJ1Y3RfdW5pb25fY2hpbGRyZW4uCi0gICAgCSh1bmlvbl9hdHRyaWJ1dGVzKTogUmVuYW1l IHRvIHN0cnVjdF91bmlvbl9hdHRyaWJ1dGVzLiAgQWRkIG9wdGlvbmFsCi0gICAgCXNpemUuCi0g ICAgCShmbGFnc19hdHRyaWJ1dGVzKTogTmV3LgotICAgIAkoZmVhdHVyZV9jaGlsZHJlbik6IEFk ZCBzdHJ1Y3QgYW5kIGZsYWdzLgotICAgIAkqIGZlYXR1cmVzL2dkYi10YXJnZXQuZHRkOiBBZGQg ZmxhZ3MgYW5kIHN0cnVjdCB0byBmZWF0dXJlcy4KLSAgICAJTWFrZSBmaWVsZCB0eXBlIG9wdGlv bmFsLiAgQWRkIGZpZWxkIHN0YXJ0IGFuZCBlbmQuCi0gICAgCi0gICAgCWRvYy8KLSAgICAJKiBn ZGIudGV4aW5mbyAoVHlwZXMpOiBEZXNjcmliZSA8c3RydWN0PiBhbmQgPGZsYWdzPi4KLSAgICAK LSAgICAJdGVzdHN1aXRlLwotICAgIAkqIGdkYi54bWwvZXh0cmEtcmVncy54bWw6IEFkZCBzdHJ1 Y3QxLCBzdHJ1Y3QyLCBhbmQgZmxhZ3MKLSAgICAJdHlwZXMuICBBZGQgc3RydWN0cmVnLCBiaXRm aWVsZHMsIGFuZCBmbGFncyByZWdpc3RlcnMuCi0gICAgCSogZ2RiLnhtbC90ZGVzYy1yZWdzLmV4 cDogVGVzdCBzdHJ1Y3RyZWcgYW5kIGJpdGZpZWxkcwotICAgIAlyZWdpc3RlcnMuCi0KLS0tLSBn ZGItNy4xLXAwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNC0wMyAyMTow NDoxMy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMzExNSw2ICszMzExNSw0NyBAQCBlYWNoIG9mIHdo aWNoIGhhcyBhIEB2YXJ7bmFtZX0gYW5kIGEgQHZhCi0gPC91bmlvbj4KLSBAZW5kIHNtYWxsZXhh bXBsZQotIAotK0BjaW5kZXggPHN0cnVjdD4KLStJZiBhIHJlZ2lzdGVyJ3MgdmFsdWUgaXMgY29t cG9zZWQgZnJvbSBzZXZlcmFsIHNlcGFyYXRlIHZhbHVlcywgZGVmaW5lCi0raXQgd2l0aCBhIHN0 cnVjdHVyZSB0eXBlLiAgVGhlcmUgYXJlIHR3byBmb3JtcyBvZiB0aGUgQHNhbXB7PHN0cnVjdD59 Ci0rZWxlbWVudDsgYSBAc2FtcHs8c3RydWN0Pn0gZWxlbWVudCBtdXN0IGVpdGhlciBjb250YWlu IG9ubHkgYml0ZmllbGRzCi0rb3IgY29udGFpbiBubyBiaXRmaWVsZHMuICBJZiB0aGUgc3RydWN0 dXJlIGNvbnRhaW5zIG9ubHkgYml0ZmllbGRzLAotK2l0cyB0b3RhbCBzaXplIGluIGJ5dGVzIG11 c3QgYmUgc3BlY2lmaWVkLCBlYWNoIGJpdGZpZWxkIG11c3QgaGF2ZSBhbgotK2V4cGxpY2l0IHN0 YXJ0IGFuZCBlbmQsIGFuZCBiaXRmaWVsZHMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYW4K LStpbnRlZ2VyIHR5cGUuICBUaGUgZmllbGQncyBAdmFye3N0YXJ0fSBzaG91bGQgYmUgbGVzcyB0 aGFuIG9yCi0rZXF1YWwgdG8gaXRzIEB2YXJ7ZW5kfSwgYW5kIHplcm8gcmVwcmVzZW50cyB0aGUg bGVhc3Qgc2lnbmlmaWNhbnQgYml0LgotKwotK0BzbWFsbGV4YW1wbGUKLSs8c3RydWN0IGlkPSJA dmFye2lkfSIgc2l6ZT0iQHZhcntzaXplfSI+Ci0rICA8ZmllbGQgbmFtZT0iQHZhcntuYW1lfSIg c3RhcnQ9IkB2YXJ7c3RhcnR9IiBlbmQ9IkB2YXJ7ZW5kfSIvPgotKyAgQGRvdHN7fQotKzwvc3Ry dWN0PgotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rSWYgdGhlIHN0cnVjdHVyZSBjb250YWlucyBu byBiaXRmaWVsZHMsIHRoZW4gZWFjaCBmaWVsZCBoYXMgYW4KLStleHBsaWNpdCB0eXBlLCBhbmQg bm8gaW1wbGljaXQgcGFkZGluZyBpcyBhZGRlZC4KLSsKLStAc21hbGxleGFtcGxlCi0rPHN0cnVj dCBpZD0iQHZhcntpZH0iPgotKyAgPGZpZWxkIG5hbWU9IkB2YXJ7bmFtZX0iIHR5cGU9IkB2YXJ7 dHlwZX0iLz4KLSsgIEBkb3Rze30KLSs8L3N0cnVjdD4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwot K0BjaW5kZXggPGZsYWdzPgotK0lmIGEgcmVnaXN0ZXIncyB2YWx1ZSBpcyBhIHNlcmllcyBvZiBz aW5nbGUtYml0IGZsYWdzLCBkZWZpbmUgaXQgd2l0aAotK2EgZmxhZ3MgdHlwZS4gIFRoZSBAc2Ft cHs8ZmxhZ3M+fSBlbGVtZW50IGhhcyBhbiBleHBsaWNpdCBAdmFye3NpemV9Ci0rYW5kIGNvbnRh aW5zIG9uZSBvciBtb3JlIEBzYW1wezxmaWVsZD59IGVsZW1lbnRzLiAgRWFjaCBmaWVsZCBoYXMg YQotK0B2YXJ7bmFtZX0sIGEgQHZhcntzdGFydH0sIGFuZCBhbiBAdmFye2VuZH0uICBPbmx5IHNp bmdsZS1iaXQgZmxhZ3MKLSthcmUgc3VwcG9ydGVkLgotKwotK0BzbWFsbGV4YW1wbGUKLSs8Zmxh Z3MgaWQ9IkB2YXJ7aWR9IiBzaXplPSJAdmFye3NpemV9Ij4KLSsgIDxmaWVsZCBuYW1lPSJAdmFy e25hbWV9IiBzdGFydD0iQHZhcntzdGFydH0iIGVuZD0iQHZhcntlbmR9Ii8+Ci0rICBAZG90c3t9 Ci0rPC9mbGFncz4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwotIEBzdWJzZWN0aW9uIFJlZ2lzdGVy cwotIEBjaW5kZXggPHJlZz4KLSAKLS0tLSBnZGItNy4xLXAwL2dkYi9mZWF0dXJlcy9nZGItdGFy Z2V0LmR0ZAkyMDEwLTAxLTAxIDA4OjMxOjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEv Z2RiL2ZlYXR1cmVzL2dkYi10YXJnZXQuZHRkCTIwMTAtMDQtMDMgMjE6MDQ6MTMuMDAwMDAwMDAw ICswMjAwCi1AQCAtMTksNyArMTksOCBAQAotIAotIDwhRUxFTUVOVCBjb21wYXRpYmxlCSgjUENE QVRBKT4KLSAKLS08IUVMRU1FTlQgZmVhdHVyZQkoKHZlY3RvciB8IHVuaW9uKSosIHJlZyopPgot KzwhRUxFTUVOVCBmZWF0dXJlCi0rCSgodmVjdG9yIHwgZmxhZ3MgfCBzdHJ1Y3QgfCB1bmlvbiAp KiwgcmVnKik+Ci0gPCFBVFRMSVNUIGZlYXR1cmUKLSAJbmFtZQkJSUQJI1JFUVVJUkVEPgotIAot QEAgLTM5LDYgKzQwLDE2IEBACi0gCXR5cGUJCUNEQVRBCSNSRVFVSVJFRAotIAljb3VudAkJQ0RB VEEJI1JFUVVJUkVEPgotIAotKzwhRUxFTUVOVCBmbGFncwkJKGZpZWxkKyk+Ci0rPCFBVFRMSVNU IGZsYWdzCi0rCWlkCQlDREFUQQkjUkVRVUlSRUQKLSsJc2l6ZQkJQ0RBVEEJI1JFUVVJUkVEPgot KwotKzwhRUxFTUVOVCBzdHJ1Y3QJKGZpZWxkKyk+Ci0rPCFBVFRMSVNUIHN0cnVjdAotKwlpZAkJ Q0RBVEEJI1JFUVVJUkVECi0rCXNpemUJCUNEQVRBCSNJTVBMSUVEPgotKwotIDwhRUxFTUVOVCB1 bmlvbgkJKGZpZWxkKyk+Ci0gPCFBVFRMSVNUIHVuaW9uCi0gCWlkCQlDREFUQQkjUkVRVUlSRUQ+ Ci1AQCAtNDYsNyArNTcsOSBAQAotIDwhRUxFTUVOVCBmaWVsZAkJRU1QVFk+Ci0gPCFBVFRMSVNU IGZpZWxkCi0gCW5hbWUJCUNEQVRBCSNSRVFVSVJFRAotLQl0eXBlCQlDREFUQQkjUkVRVUlSRUQ+ Ci0rCXR5cGUJCUNEQVRBCSNJTVBMSUVECi0rCXN0YXJ0CQlDREFUQQkjSU1QTElFRAotKwllbmQJ CUNEQVRBCSNJTVBMSUVEPgotIAotIDwhRU5USVRZICUgeGluY2x1ZGUgU1lTVEVNICJ4aW5jbHVk ZS5kdGQiPgotICV4aW5jbHVkZTsKLS0tLSBnZGItNy4xLXAwL2dkYi9nZGJ0eXBlcy5jCTIwMTAt MDQtMDMgMjA6MjQ6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvZ2RidHlwZXMu YwkyMDEwLTA0LTAzIDIxOjA0OjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTM3OTgsMTAgKzM3OTgs MTEgQEAgYXJjaF9jb21wb3NpdGVfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYgotIH0KLSAKLSAv KiBBZGQgbmV3IGZpZWxkIHdpdGggbmFtZSBOQU1FIGFuZCB0eXBlIEZJRUxEIHRvIGNvbXBvc2l0 ZSB0eXBlIFQuCi0tICAgQUxJR05NRU5UIChpZiBub24temVybykgc3BlY2lmaWVzIHRoZSBtaW5p bXVtIGZpZWxkIGFsaWdubWVudC4gICovCi0tdm9pZAotLWFwcGVuZF9jb21wb3NpdGVfdHlwZV9m aWVsZF9hbGlnbmVkIChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAqbmFtZSwKLS0JCQkJICAgICBzdHJ1 Y3QgdHlwZSAqZmllbGQsIGludCBhbGlnbm1lbnQpCi0rICAgRG8gbm90IHNldCB0aGUgZmllbGQn cyBwb3NpdGlvbiBvciBhZGp1c3QgdGhlIHR5cGUncyBsZW5ndGg7Ci0rICAgdGhlIGNhbGxlciBz aG91bGQgZG8gc28uICBSZXR1cm4gdGhlIG5ldyBmaWVsZC4gICovCi0rc3RydWN0IGZpZWxkICoK LSthcHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGRfcmF3IChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAq bmFtZSwKLSsJCQkJIHN0cnVjdCB0eXBlICpmaWVsZCkKLSB7Ci0gICBzdHJ1Y3QgZmllbGQgKmY7 Ci0gICBUWVBFX05GSUVMRFMgKHQpID0gVFlQRV9ORklFTERTICh0KSArIDE7Ci1AQCAtMzgxMSw2 ICszODEyLDE2IEBAIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZF9hbGlnbmVkIChzdHIKLSAg IG1lbXNldCAoZiwgMCwgc2l6ZW9mIGZbMF0pOwotICAgRklFTERfVFlQRSAoZlswXSkgPSBmaWVs ZDsKLSAgIEZJRUxEX05BTUUgKGZbMF0pID0gbmFtZTsKLSsgIHJldHVybiBmOwotK30KLSsKLSsv KiBBZGQgbmV3IGZpZWxkIHdpdGggbmFtZSBOQU1FIGFuZCB0eXBlIEZJRUxEIHRvIGNvbXBvc2l0 ZSB0eXBlIFQuCi0rICAgQUxJR05NRU5UIChpZiBub24temVybykgc3BlY2lmaWVzIHRoZSBtaW5p bXVtIGZpZWxkIGFsaWdubWVudC4gICovCi0rdm9pZAotK2FwcGVuZF9jb21wb3NpdGVfdHlwZV9m aWVsZF9hbGlnbmVkIChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAqbmFtZSwKLSsJCQkJICAgICBzdHJ1 Y3QgdHlwZSAqZmllbGQsIGludCBhbGlnbm1lbnQpCi0rewotKyAgc3RydWN0IGZpZWxkICpmID0g YXBwZW5kX2NvbXBvc2l0ZV90eXBlX2ZpZWxkX3JhdyAodCwgbmFtZSwgZmllbGQpOwotICAgaWYg KFRZUEVfQ09ERSAodCkgPT0gVFlQRV9DT0RFX1VOSU9OKQotICAgICB7Ci0gICAgICAgaWYgKFRZ UEVfTEVOR1RIICh0KSA8IFRZUEVfTEVOR1RIIChmaWVsZCkpCi0tLS0gZ2RiLTcuMS1wMC9nZGIv Z2RidHlwZXMuaAkyMDEwLTA0LTAzIDIwOjI0OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjEvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wNC0wMyAyMTowNDoxMy4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xMzk1LDYgKzEzOTUsOCBAQCBleHRlcm4gdm9pZCBhcHBlbmRfY29tcG9zaXRlX3R5cGVfZmll bGRfCi0gCQkJCQkJIGNoYXIgKm5hbWUsCi0gCQkJCQkJIHN0cnVjdCB0eXBlICpmaWVsZCwKLSAJ CQkJCQkgaW50IGFsaWdubWVudCk7Ci0rc3RydWN0IGZpZWxkICphcHBlbmRfY29tcG9zaXRlX3R5 cGVfZmllbGRfcmF3IChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAqbmFtZSwKLSsJCQkJCSAgICAgICBz dHJ1Y3QgdHlwZSAqZmllbGQpOwotIAotIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gY29uc3RydWN0 IGEgYml0IGZsYWdzIHR5cGUuICBBbiBpbml0aWFsbHkgZW1wdHkKLSAgICB0eXBlIGlzIGNyZWF0 ZWQgdXNpbmcgYXJjaF9mbGFnX3R5cGUoKS4gIEZsYWdzIGFyZSB0aGVuIGFkZGVkIHVzaW5nCi0t LS0gZ2RiLTcuMS1wMC9nZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5jCTIwMTAtMDItMTAgMTk6NDU6 MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5j CTIwMTAtMDQtMDMgMjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtOTAsOSArOTAsMTcgQEAg dHlwZWRlZiBzdHJ1Y3QgdGRlc2NfdHlwZV9maWVsZAotIHsKLSAgIGNoYXIgKm5hbWU7Ci0gICBz dHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZTsKLSsgIGludCBzdGFydCwgZW5kOwotIH0gdGRlc2NfdHlw ZV9maWVsZDsKLSBERUZfVkVDX08odGRlc2NfdHlwZV9maWVsZCk7Ci0gCi0rdHlwZWRlZiBzdHJ1 Y3QgdGRlc2NfdHlwZV9mbGFnCi0rewotKyAgY2hhciAqbmFtZTsKLSsgIGludCBzdGFydDsKLSt9 IHRkZXNjX3R5cGVfZmxhZzsKLStERUZfVkVDX08odGRlc2NfdHlwZV9mbGFnKTsKLSsKLSB0eXBl ZGVmIHN0cnVjdCB0ZGVzY190eXBlCi0gewotICAgLyogVGhlIG5hbWUgb2YgdGhpcyB0eXBlLiAg Ki8KLUBAIC0xMjMsNyArMTMxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgdGRlc2NfdHlwZQotIAotICAg ICAvKiBUeXBlcyBkZWZpbmVkIGJ5IGEgdGFyZ2V0IGZlYXR1cmUuICAqLwotICAgICBUREVTQ19U WVBFX1ZFQ1RPUiwKLS0gICAgVERFU0NfVFlQRV9VTklPTgotKyAgICBUREVTQ19UWVBFX1NUUlVD VCwKLSsgICAgVERFU0NfVFlQRV9VTklPTiwKLSsgICAgVERFU0NfVFlQRV9GTEFHUwotICAgfSBr aW5kOwotIAotICAgLyogS2luZC1zcGVjaWZpYyBkYXRhLiAgKi8KLUBAIC0xMzYsMTEgKzE0Niwx OSBAQCB0eXBlZGVmIHN0cnVjdCB0ZGVzY190eXBlCi0gICAgICAgaW50IGNvdW50OwotICAgICB9 IHY7Ci0gCi0tICAgIC8qIFVuaW9uIHR5cGUuICAqLwotKyAgICAvKiBTdHJ1Y3Qgb3IgdW5pb24g dHlwZS4gICovCi0gICAgIHN0cnVjdAotICAgICB7Ci0gICAgICAgVkVDKHRkZXNjX3R5cGVfZmll bGQpICpmaWVsZHM7Ci0rICAgICAgTE9OR0VTVCBzaXplOwotICAgICB9IHU7Ci0rCi0rICAgIC8q IEZsYWdzIHR5cGUuICAqLwotKyAgICBzdHJ1Y3QKLSsgICAgewotKyAgICAgIFZFQyh0ZGVzY190 eXBlX2ZsYWcpICpmbGFnczsKLSsgICAgICBMT05HRVNUIHNpemU7Ci0rICAgIH0gZjsKLSAgIH0g dTsKLSB9ICp0ZGVzY190eXBlX3A7Ci0gREVGX1ZFQ19QKHRkZXNjX3R5cGVfcCk7Ci1AQCAtNjUy LDYgKzY3MCw2NiBAQCB0ZGVzY19nZGJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0g CXJldHVybiB0eXBlOwotICAgICAgIH0KLSAKLSsgICAgY2FzZSBUREVTQ19UWVBFX1NUUlVDVDoK LSsgICAgICB7Ci0rCXN0cnVjdCB0eXBlICp0eXBlLCAqZmllbGRfdHlwZTsKLSsJc3RydWN0IHRk ZXNjX3R5cGVfZmllbGQgKmY7Ci0rCWludCBpeDsKLSsKLSsJdHlwZSA9IGFyY2hfY29tcG9zaXRl X3R5cGUgKGdkYmFyY2gsIE5VTEwsIFRZUEVfQ09ERV9TVFJVQ1QpOwotKwlUWVBFX05BTUUgKHR5 cGUpID0geHN0cmR1cCAodGRlc2NfdHlwZS0+bmFtZSk7Ci0rCVRZUEVfVEFHX05BTUUgKHR5cGUp ID0gVFlQRV9OQU1FICh0eXBlKTsKLSsKLSsJZm9yIChpeCA9IDA7Ci0rCSAgICAgVkVDX2l0ZXJh dGUgKHRkZXNjX3R5cGVfZmllbGQsIHRkZXNjX3R5cGUtPnUudS5maWVsZHMsIGl4LCBmKTsKLSsJ ICAgICBpeCsrKQotKwkgIHsKLSsJICAgIGlmIChmLT50eXBlID09IE5VTEwpCi0rCSAgICAgIHsK LSsJCS8qIEJpdGZpZWxkLiAgKi8KLSsJCXN0cnVjdCBmaWVsZCAqZmxkOwotKwkJc3RydWN0IHR5 cGUgKmZpZWxkX3R5cGU7Ci0rCQlpbnQgYml0c2l6ZSwgdG90YWxfc2l6ZTsKLSsKLSsJCS8qIFRo aXMgaW52YXJpYW50IHNob3VsZCBiZSBwcmVzZXJ2ZWQgd2hpbGUgY3JlYXRpbmcKLSsJCSAgIHR5 cGVzLiAgKi8KLSsJCWdkYl9hc3NlcnQgKHRkZXNjX3R5cGUtPnUudS5zaXplICE9IDApOwotKwkJ aWYgKHRkZXNjX3R5cGUtPnUudS5zaXplID4gNCkKLSsJCSAgZmllbGRfdHlwZSA9IGJ1aWx0aW5f dHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OwotKwkJZWxzZQotKwkJICBmaWVsZF90eXBl ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91aW50MzI7Ci0rCi0rCQlmbGQgPSBh cHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGRfcmF3ICh0eXBlLCB4c3RyZHVwIChmLT5uYW1lKSwK LSsJCQkJCQkgICAgICAgZmllbGRfdHlwZSk7Ci0rCi0rCQkvKiBGb3IgbGl0dGxlLWVuZGlhbiwg QklUUE9TIGNvdW50cyBmcm9tIHRoZSBMU0Igb2YKLSsJCSAgIHRoZSBzdHJ1Y3R1cmUgYW5kIG1h cmtzIHRoZSBMU0Igb2YgdGhlIGZpZWxkLiAgRm9yCi0rCQkgICBiaWctZW5kaWFuLCBCSVRQT1Mg Y291bnRzIGZyb20gdGhlIE1TQiBvZiB0aGUKLSsJCSAgIHN0cnVjdHVyZSBhbmQgbWFya3MgdGhl IE1TQiBvZiB0aGUgZmllbGQuICBFaXRoZXIKLSsJCSAgIHdheSwgaXQgaXMgdGhlIG51bWJlciBv ZiBiaXRzIHRvIHRoZSAibGVmdCIgb2YgdGhlCi0rCQkgICBmaWVsZC4gIFRvIGNhbGN1bGF0ZSB0 aGlzIGluIGJpZy1lbmRpYW4sIHdlIG5lZWQKLSsJCSAgIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBz dHJ1Y3R1cmUuICAqLwotKwkJYml0c2l6ZSA9IGYtPmVuZCAtIGYtPnN0YXJ0ICsgMTsKLSsJCXRv dGFsX3NpemUgPSB0ZGVzY190eXBlLT51LnUuc2l6ZSAqIFRBUkdFVF9DSEFSX0JJVDsKLSsJCWlm IChnZGJhcmNoX2JpdHNfYmlnX2VuZGlhbiAoZ2RiYXJjaCkpCi0rCQkgIEZJRUxEX0JJVFBPUyAo ZmxkWzBdKSA9IHRvdGFsX3NpemUgLSBmLT5zdGFydCAtIGJpdHNpemU7Ci0rCQllbHNlCi0rCQkg IEZJRUxEX0JJVFBPUyAoZmxkWzBdKSA9IGYtPnN0YXJ0OwotKwkJRklFTERfQklUU0laRSAoZmxk WzBdKSA9IGJpdHNpemU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJZmll bGRfdHlwZSA9IHRkZXNjX2dkYl90eXBlIChnZGJhcmNoLCBmLT50eXBlKTsKLSsJCWFwcGVuZF9j b21wb3NpdGVfdHlwZV9maWVsZCAodHlwZSwgeHN0cmR1cCAoZi0+bmFtZSksCi0rCQkJCQkgICAg IGZpZWxkX3R5cGUpOwotKwkgICAgICB9Ci0rCSAgfQotKwotKwlpZiAodGRlc2NfdHlwZS0+dS51 LnNpemUgIT0gMCkKLSsJICBUWVBFX0xFTkdUSCAodHlwZSkgPSB0ZGVzY190eXBlLT51LnUuc2l6 ZTsKLSsJcmV0dXJuIHR5cGU7Ci0rICAgICAgfQotKwotICAgICBjYXNlIFRERVNDX1RZUEVfVU5J T046Ci0gICAgICAgewotIAlzdHJ1Y3QgdHlwZSAqdHlwZSwgKmZpZWxkX3R5cGU7Ci1AQCAtNjY4 LDEyICs3NDYsMzAgQEAgdGRlc2NfZ2RiX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot IAkgICAgZmllbGRfdHlwZSA9IHRkZXNjX2dkYl90eXBlIChnZGJhcmNoLCBmLT50eXBlKTsKLSAJ ICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodHlwZSwgeHN0cmR1cCAoZi0+bmFtZSks IGZpZWxkX3R5cGUpOwotIAotLQkgICAgLyogSWYgYW55IG9mIHRoZSBjaGlsZHJlbiBvZiB0aGlz IHVuaW9uIGFyZSB2ZWN0b3JzLCBmbGFnIHRoZQotKwkgICAgLyogSWYgYW55IG9mIHRoZSBjaGls ZHJlbiBvZiBhIHVuaW9uIGFyZSB2ZWN0b3JzLCBmbGFnIHRoZQotIAkgICAgICAgdW5pb24gYXMg YSB2ZWN0b3IgYWxzby4gIFRoaXMgYWxsb3dzIGUuZy4gYSB1bmlvbiBvZiB0d28KLSAJICAgICAg IHZlY3RvciB0eXBlcyB0byBzaG93IHVwIGF1dG9tYXRpY2FsbHkgaW4gImluZm8gdmVjdG9yIi4g ICovCi0gCSAgICBpZiAoVFlQRV9WRUNUT1IgKGZpZWxkX3R5cGUpKQotIAkgICAgICBUWVBFX1ZF Q1RPUiAodHlwZSkgPSAxOwotIAkgIH0KLSsJcmV0dXJuIHR5cGU7Ci0rICAgICAgfQotKwotKyAg ICBjYXNlIFRERVNDX1RZUEVfRkxBR1M6Ci0rICAgICAgewotKwlzdHJ1Y3QgdHlwZSAqdHlwZSwg KmZpZWxkX3R5cGU7Ci0rCXN0cnVjdCB0ZGVzY190eXBlX2ZsYWcgKmY7Ci0rCWludCBpeDsKLSsK LSsJdHlwZSA9IGFyY2hfZmxhZ3NfdHlwZSAoZ2RiYXJjaCwgeHN0cmR1cCAodGRlc2NfdHlwZS0+ bmFtZSksCi0rCQkJCXRkZXNjX3R5cGUtPnUuZi5zaXplKTsKLSsJZm9yIChpeCA9IDA7Ci0rCSAg ICAgVkVDX2l0ZXJhdGUgKHRkZXNjX3R5cGVfZmxhZywgdGRlc2NfdHlwZS0+dS5mLmZsYWdzLCBp eCwgZik7Ci0rCSAgICAgaXgrKykKLSsJICAvKiBOb3RlIHRoYXQgY29udHJhcnkgdG8gdGhlIGZ1 bmN0aW9uIG5hbWUsIHRoaXMgY2FsbCB3aWxsCi0rCSAgICAganVzdCBzZXQgdGhlIHByb3BlcnRp ZXMgb2YgYW4gYWxyZWFkeS1hbGxvY2F0ZWQKLSsJICAgICBmaWVsZC4gICovCi0rCSAgYXBwZW5k X2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgZi0+c3RhcnQsIGYtPm5hbWUpOwotIAotIAlyZXR1cm4g dHlwZTsKLSAgICAgICB9Ci1AQCAtMTE2MSw2ICsxMjU3LDcgQEAgdGRlc2NfZnJlZV90eXBlIChz dHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZQotIAotICAgc3dpdGNoICh0eXBlLT5raW5kKQotICAgICB7 Ci0rICAgIGNhc2UgVERFU0NfVFlQRV9TVFJVQ1Q6Ci0gICAgIGNhc2UgVERFU0NfVFlQRV9VTklP TjoKLSAgICAgICB7Ci0gCXN0cnVjdCB0ZGVzY190eXBlX2ZpZWxkICpmOwotQEAgLTExNzUsNiAr MTI3MiwyMCBAQCB0ZGVzY19mcmVlX3R5cGUgKHN0cnVjdCB0ZGVzY190eXBlICp0eXBlCi0gICAg ICAgfQotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIFRERVNDX1RZUEVfRkxBR1M6Ci0rICAg ICAgewotKwlzdHJ1Y3QgdGRlc2NfdHlwZV9mbGFnICpmOwotKwlpbnQgaXg7Ci0rCi0rCWZvciAo aXggPSAwOwotKwkgICAgIFZFQ19pdGVyYXRlICh0ZGVzY190eXBlX2ZsYWcsIHR5cGUtPnUuZi5m bGFncywgaXgsIGYpOwotKwkgICAgIGl4KyspCi0rCSAgeGZyZWUgKGYtPm5hbWUpOwotKwotKwlW RUNfZnJlZSAodGRlc2NfdHlwZV9mbGFnLCB0eXBlLT51LmYuZmxhZ3MpOwotKyAgICAgIH0KLSsg ICAgICBicmVhazsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBicmVhazsKLSAgICAgfQotQEAg LTExOTksNiArMTMxMCwyOSBAQCB0ZGVzY19jcmVhdGVfdmVjdG9yIChzdHJ1Y3QgdGRlc2NfZmVh dHVyCi0gfQotIAotIHN0cnVjdCB0ZGVzY190eXBlICoKLSt0ZGVzY19jcmVhdGVfc3RydWN0IChz dHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZSwgY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICBz dHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZSA9IFhaQUxMT0MgKHN0cnVjdCB0ZGVzY190eXBlKTsKLSsK LSsgIHR5cGUtPm5hbWUgPSB4c3RyZHVwIChuYW1lKTsKLSsgIHR5cGUtPmtpbmQgPSBUREVTQ19U WVBFX1NUUlVDVDsKLSsKLSsgIFZFQ19zYWZlX3B1c2ggKHRkZXNjX3R5cGVfcCwgZmVhdHVyZS0+ dHlwZXMsIHR5cGUpOwotKyAgcmV0dXJuIHR5cGU7Ci0rfQotKwotKy8qIFNldCB0aGUgdG90YWwg bGVuZ3RoIG9mIFRZUEUuICBTdHJ1Y3RzIHdoaWNoIGNvbnRhaW4gYml0ZmllbGRzIG1heQotKyAg IG9taXQgdGhlIHJlc2VydmVkIGJpdHMsIHNvIHRoZSBlbmQgb2YgdGhlIGxhc3QgZmllbGQgbWF5 IG5vdAotKyAgIHN1ZmZpY2UuICAqLwotKwotK3ZvaWQKLSt0ZGVzY19zZXRfc3RydWN0X3NpemUg KHN0cnVjdCB0ZGVzY190eXBlICp0eXBlLCBMT05HRVNUIHNpemUpCi0rewotKyAgZ2RiX2Fzc2Vy dCAodHlwZS0+a2luZCA9PSBUREVTQ19UWVBFX1NUUlVDVCk7Ci0rICB0eXBlLT51LnUuc2l6ZSA9 IHNpemU7Ci0rfQotKwotK3N0cnVjdCB0ZGVzY190eXBlICoKLSB0ZGVzY19jcmVhdGVfdW5pb24g KHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlLCBjb25zdCBjaGFyICpuYW1lKQotIHsKLSAg IHN0cnVjdCB0ZGVzY190eXBlICp0eXBlID0gWFpBTExPQyAoc3RydWN0IHRkZXNjX3R5cGUpOwot QEAgLTEyMTAsMTMgKzEzNDQsMzIgQEAgdGRlc2NfY3JlYXRlX3VuaW9uIChzdHJ1Y3QgdGRlc2Nf ZmVhdHVyZQotICAgcmV0dXJuIHR5cGU7Ci0gfQotIAotK3N0cnVjdCB0ZGVzY190eXBlICoKLSt0 ZGVzY19jcmVhdGVfZmxhZ3MgKHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlLCBjb25zdCBj aGFyICpuYW1lLAotKwkJICAgIExPTkdFU1Qgc2l6ZSkKLSt7Ci0rICBzdHJ1Y3QgdGRlc2NfdHlw ZSAqdHlwZSA9IFhaQUxMT0MgKHN0cnVjdCB0ZGVzY190eXBlKTsKLSsKLSsgIHR5cGUtPm5hbWUg PSB4c3RyZHVwIChuYW1lKTsKLSsgIHR5cGUtPmtpbmQgPSBUREVTQ19UWVBFX0ZMQUdTOwotKyAg dHlwZS0+dS5mLnNpemUgPSBzaXplOwotKwotKyAgVkVDX3NhZmVfcHVzaCAodGRlc2NfdHlwZV9w LCBmZWF0dXJlLT50eXBlcywgdHlwZSk7Ci0rICByZXR1cm4gdHlwZTsKLSt9Ci0rCi0rLyogQWRk IGEgbmV3IGZpZWxkLiAgUmV0dXJuIGEgdGVtcG9yYXJ5IHBvaW50ZXIgdG8gdGhlIGZpZWxkLCB3 aGljaAotKyAgIGlzIG9ubHkgdmFsaWQgdW50aWwgdGhlIG5leHQgY2FsbCB0byB0ZGVzY19hZGRf ZmllbGQgKHRoZSB2ZWN0b3IKLSsgICBtaWdodCBiZSByZWFsbG9jYXRlZCkuICAqLwotKwotIHZv aWQKLSB0ZGVzY19hZGRfZmllbGQgKHN0cnVjdCB0ZGVzY190eXBlICp0eXBlLCBjb25zdCBjaGFy ICpmaWVsZF9uYW1lLAotIAkJIHN0cnVjdCB0ZGVzY190eXBlICpmaWVsZF90eXBlKQotIHsKLSAg IHN0cnVjdCB0ZGVzY190eXBlX2ZpZWxkIGYgPSB7IDAgfTsKLSAKLS0gIGdkYl9hc3NlcnQgKHR5 cGUtPmtpbmQgPT0gVERFU0NfVFlQRV9VTklPTik7Ci0rICBnZGJfYXNzZXJ0ICh0eXBlLT5raW5k ID09IFRERVNDX1RZUEVfVU5JT04KLSsJICAgICAgfHwgdHlwZS0+a2luZCA9PSBUREVTQ19UWVBF X1NUUlVDVCk7Ci0gCi0gICBmLm5hbWUgPSB4c3RyZHVwIChmaWVsZF9uYW1lKTsKLSAgIGYudHlw ZSA9IGZpZWxkX3R5cGU7Ci1AQCAtMTIyNCw2ICsxMzc3LDM3IEBAIHRkZXNjX2FkZF9maWVsZCAo c3RydWN0IHRkZXNjX3R5cGUgKnR5cGUKLSAgIFZFQ19zYWZlX3B1c2ggKHRkZXNjX3R5cGVfZmll bGQsIHR5cGUtPnUudS5maWVsZHMsICZmKTsKLSB9Ci0gCi0rLyogQWRkIGEgbmV3IGJpdGZpZWxk LiAgKi8KLSsKLSt2b2lkCi0rdGRlc2NfYWRkX2JpdGZpZWxkIChzdHJ1Y3QgdGRlc2NfdHlwZSAq dHlwZSwgY29uc3QgY2hhciAqZmllbGRfbmFtZSwKLSsJCSAgICBpbnQgc3RhcnQsIGludCBlbmQp Ci0rewotKyAgc3RydWN0IHRkZXNjX3R5cGVfZmllbGQgZiA9IHsgMCB9OwotKwotKyAgZ2RiX2Fz c2VydCAodHlwZS0+a2luZCA9PSBUREVTQ19UWVBFX1NUUlVDVCk7Ci0rCi0rICBmLm5hbWUgPSB4 c3RyZHVwIChmaWVsZF9uYW1lKTsKLSsgIGYuc3RhcnQgPSBzdGFydDsKLSsgIGYuZW5kID0gZW5k OwotKwotKyAgVkVDX3NhZmVfcHVzaCAodGRlc2NfdHlwZV9maWVsZCwgdHlwZS0+dS51LmZpZWxk cywgJmYpOwotK30KLSsKLSt2b2lkCi0rdGRlc2NfYWRkX2ZsYWcgKHN0cnVjdCB0ZGVzY190eXBl ICp0eXBlLCBpbnQgc3RhcnQsCi0rCQljb25zdCBjaGFyICpmbGFnX25hbWUpCi0rewotKyAgc3Ry dWN0IHRkZXNjX3R5cGVfZmxhZyBmID0geyAwIH07Ci0rCi0rICBnZGJfYXNzZXJ0ICh0eXBlLT5r aW5kID09IFRERVNDX1RZUEVfRkxBR1MpOwotKwotKyAgZi5uYW1lID0geHN0cmR1cCAoZmxhZ19u YW1lKTsKLSsgIGYuc3RhcnQgPSBzdGFydDsKLSsKLSsgIFZFQ19zYWZlX3B1c2ggKHRkZXNjX3R5 cGVfZmxhZywgdHlwZS0+dS5mLmZsYWdzLCAmZik7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gdGRl c2NfZnJlZV9mZWF0dXJlIChzdHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZSkKLSB7Ci0tLS0g Z2RiLTcuMS1wMC9nZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5oCTIwMTAtMDItMTAgMTk6NDU6MDMu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5oCTIw MTAtMDQtMDMgMjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMjA1LDEwICsyMDUsMjAgQEAg c3RydWN0IHRkZXNjX3R5cGUgKnRkZXNjX2NyZWF0ZV92ZWN0b3IgKAotIAkJCQkJY29uc3QgY2hh ciAqbmFtZSwKLSAJCQkJCXN0cnVjdCB0ZGVzY190eXBlICpmaWVsZF90eXBlLAotIAkJCQkJaW50 IGNvdW50KTsKLStzdHJ1Y3QgdGRlc2NfdHlwZSAqdGRlc2NfY3JlYXRlX3N0cnVjdCAoc3RydWN0 IHRkZXNjX2ZlYXR1cmUgKmZlYXR1cmUsCi0rCQkJCQljb25zdCBjaGFyICpuYW1lKTsKLSt2b2lk IHRkZXNjX3NldF9zdHJ1Y3Rfc2l6ZSAoc3RydWN0IHRkZXNjX3R5cGUgKnR5cGUsIExPTkdFU1Qg c2l6ZSk7Ci0gc3RydWN0IHRkZXNjX3R5cGUgKnRkZXNjX2NyZWF0ZV91bmlvbiAoc3RydWN0IHRk ZXNjX2ZlYXR1cmUgKmZlYXR1cmUsCi0gCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKLStz dHJ1Y3QgdGRlc2NfdHlwZSAqdGRlc2NfY3JlYXRlX2ZsYWdzIChzdHJ1Y3QgdGRlc2NfZmVhdHVy ZSAqZmVhdHVyZSwKLSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJCSAgICAgICBM T05HRVNUIHNpemUpOwotIHZvaWQgdGRlc2NfYWRkX2ZpZWxkIChzdHJ1Y3QgdGRlc2NfdHlwZSAq dHlwZSwgY29uc3QgY2hhciAqZmllbGRfbmFtZSwKLSAJCSAgICAgIHN0cnVjdCB0ZGVzY190eXBl ICpmaWVsZF90eXBlKTsKLSt2b2lkIHRkZXNjX2FkZF9iaXRmaWVsZCAoc3RydWN0IHRkZXNjX3R5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKmZpZWxkX25hbWUsCi0rCQkJIGludCBzdGFydCwgaW50IGVu ZCk7Ci0rdm9pZCB0ZGVzY19hZGRfZmxhZyAoc3RydWN0IHRkZXNjX3R5cGUgKnR5cGUsIGludCBz dGFydCwKLSsJCSAgICAgY29uc3QgY2hhciAqZmxhZ19uYW1lKTsKLSB2b2lkIHRkZXNjX2NyZWF0 ZV9yZWcgKHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlLCBjb25zdCBjaGFyICpuYW1lLAot IAkJICAgICAgIGludCByZWdudW0sIGludCBzYXZlX3Jlc3RvcmUsIGNvbnN0IGNoYXIgKmdyb3Vw LAotIAkJICAgICAgIGludCBiaXRzaXplLCBjb25zdCBjaGFyICp0eXBlKTsKLS0tLSBnZGItNy4x LXAwL2dkYi90ZXN0c3VpdGUvZ2RiLnhtbC9leHRyYS1yZWdzLnhtbAkyMDA3LTAyLTA4IDIyOjAw OjM2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIueG1sL2V4 dHJhLXJlZ3MueG1sCTIwMTAtMDQtMDMgMjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtOCw5 ICs4LDI3IEBACi0gICAgICAgPGZpZWxkIG5hbWU9InYyIiB0eXBlPSJ2MmludDE2Ii8+Ci0gICAg IDwvdW5pb24+Ci0gCi0rICAgIDxzdHJ1Y3QgaWQ9InN0cnVjdDEiPgotKyAgICAgIDxmaWVsZCBu YW1lPSJ2NCIgdHlwZT0idjRpbnQ4Ii8+Ci0rICAgICAgPGZpZWxkIG5hbWU9InYyIiB0eXBlPSJ2 MmludDE2Ii8+Ci0rICAgIDwvc3RydWN0PgotKwotKyAgICA8c3RydWN0IGlkPSJzdHJ1Y3QyIiBz aXplPSI4Ij4KLSsgICAgICA8ZmllbGQgbmFtZT0iZjEiIHN0YXJ0PSIwIiBlbmQ9IjM0Ii8+Ci0r ICAgICAgPGZpZWxkIG5hbWU9ImYyIiBzdGFydD0iNjMiIGVuZD0iNjMiLz4KLSsgICAgPC9zdHJ1 Y3Q+Ci0rCi0rICAgIDxmbGFncyBpZD0iZmxhZ3MiIHNpemU9IjQiPgotKyAgICAgIDxmaWVsZCBu YW1lPSJYIiBzdGFydD0iMCIgZW5kPSIwIi8+Ci0rICAgICAgPGZpZWxkIG5hbWU9IlkiIHN0YXJ0 PSIyIiBlbmQ9IjIiLz4KLSsgICAgPC9mbGFncz4KLSsKLSAgICAgPHJlZyBuYW1lPSJleHRyYXJl ZyIgYml0c2l6ZT0iMzIiLz4KLSAgICAgPHJlZyBuYW1lPSJ1aW50cmVnIiBiaXRzaXplPSIzMiIg dHlwZT0idWludDMyIi8+Ci0gICAgIDxyZWcgbmFtZT0idmVjcmVnIiBiaXRzaXplPSIzMiIgdHlw ZT0idjRpbnQ4Ii8+Ci0gICAgIDxyZWcgbmFtZT0idW5pb25yZWciIGJpdHNpemU9IjMyIiB0eXBl PSJ2ZWNpbnQiLz4KLSsgICAgPHJlZyBuYW1lPSJzdHJ1Y3RyZWciIGJpdHNpemU9IjY0IiB0eXBl PSJzdHJ1Y3QxIi8+Ci0rICAgIDxyZWcgbmFtZT0iYml0ZmllbGRzIiBiaXRzaXplPSI2NCIgdHlw ZT0ic3RydWN0MiIvPgotKyAgICA8cmVnIG5hbWU9ImZsYWdzIiBiaXRzaXplPSIzMiIgdHlwZT0i ZmxhZ3MiLz4KLSAgIDwvZmVhdHVyZT4KLSA8L3RhcmdldD4KLS0tLSBnZGItNy4xLXAwL2dkYi90 ZXN0c3VpdGUvZ2RiLnhtbC90ZGVzYy1yZWdzLmV4cAkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIueG1sL3RkZXNjLXJlZ3Mu ZXhwCTIwMTAtMDQtMDMgMjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQxLDYgKzE0MSwx MSBAQCBnZGJfdGVzdCAicHR5cGUgXCR2ZWNyZWciICJ0eXBlID0gaW50OF90Ci0gZ2RiX3Rlc3Qg InB0eXBlIFwkdW5pb25yZWciIFwKLSAgICAgInR5cGUgPSB1bmlvbiB7XHJcbiAqdjRpbnQ4IHY0 O1xyXG4gKnYyaW50MTYgdjI7XHJcbn0iCi0gZ2RiX3Rlc3QgInB0eXBlIFwkdW5pb25yZWcudjQi ICJ0eXBlID0gaW50OF90IFxcXFs0XFxcXSIKLStnZGJfdGVzdCAicHR5cGUgXCRzdHJ1Y3RyZWci IFwKLSsgICAgInR5cGUgPSBzdHJ1Y3Qgc3RydWN0MSB7XHJcbiAqdjRpbnQ4IHY0O1xyXG4gKnYy aW50MTYgdjI7XHJcbn0iCi0rZ2RiX3Rlc3QgInB0eXBlIFwkc3RydWN0cmVnLnY0IiAidHlwZSA9 IGludDhfdCBcXFxbNFxcXF0iCi0rZ2RiX3Rlc3QgInB0eXBlIFwkYml0ZmllbGRzIiBcCi0rICAg ICJ0eXBlID0gc3RydWN0IHN0cnVjdDIge1xyXG4gKnVpbnQ2NF90IGYxIDogMzU7XHJcbiAqdWlu dDY0X3QgZjIgOiAxO1xyXG59IgotIAotIGxvYWRfZGVzY3JpcHRpb24gImNvcmUtb25seS54bWwi ICIiCi0gIyBUaGUgZXh0cmEgcmVnaXN0ZXIgZnJvbSB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb24g c2hvdWxkIGJlIGdvbmUuCi0tLS0gZ2RiLTcuMS1wMC9nZGIveG1sLXRkZXNjLmMJMjAxMC0wMS0w MSAwODozMTo0Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi94bWwtdGRlc2MuYwky MDEwLTA0LTAzIDIxOjA0OjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTg1LDggKzg1LDE1IEBAIHN0 cnVjdCB0ZGVzY19wYXJzaW5nX2RhdGEKLSAgICAgIGl0IGRvZXMgbm90IGhhdmUgaXRzIG93bi4g IFRoaXMgc3RhcnRzIGF0IHplcm8uICAqLwotICAgaW50IG5leHRfcmVnbnVtOwotIAotLSAgLyog VGhlIHVuaW9uIHdlIGFyZSBjdXJyZW50bHkgcGFyc2luZywgb3IgbGFzdCBwYXJzZWQuICAqLwot LSAgc3RydWN0IHRkZXNjX3R5cGUgKmN1cnJlbnRfdW5pb247Ci0rICAvKiBUaGUgc3RydWN0IG9y IHVuaW9uIHdlIGFyZSBjdXJyZW50bHkgcGFyc2luZywgb3IgbGFzdCBwYXJzZWQuICAqLwotKyAg c3RydWN0IHRkZXNjX3R5cGUgKmN1cnJlbnRfdHlwZTsKLSsKLSsgIC8qIFRoZSBieXRlIHNpemUg b2YgdGhlIGN1cnJlbnQgc3RydWN0IHR5cGUsIGlmIHNwZWNpZmllZC4gIFplcm8KLSsgICAgIGlm IG5vdCBzcGVjaWZpZWQuICAqLwotKyAgaW50IGN1cnJlbnRfdHlwZV9zaXplOwotKwotKyAgLyog V2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGEgZmxhZ3MgdHlwZS4gICovCi0rICBpbnQgY3Vy cmVudF90eXBlX2lzX2ZsYWdzOwotIH07Ci0gCi0gLyogSGFuZGxlIHRoZSBlbmQgb2YgYW4gPGFy Y2hpdGVjdHVyZT4gZWxlbWVudCBhbmQgaXRzIHZhbHVlLiAgKi8KLUBAIC0yMjksMTEgKzIzNiw1 NyBAQCB0ZGVzY19zdGFydF91bmlvbiAoc3RydWN0IGdkYl94bWxfcGFyc2VyCi0gICBzdHJ1Y3Qg dGRlc2NfcGFyc2luZ19kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotICAgY2hhciAqaWQgPSBWRUNf aW5kZXggKGdkYl94bWxfdmFsdWVfcywgYXR0cmlidXRlcywgMCktPnZhbHVlOwotIAotLSAgZGF0 YS0+Y3VycmVudF91bmlvbiA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZGF0YS0+Y3VycmVudF9mZWF0 dXJlLCBpZCk7Ci0rICBkYXRhLT5jdXJyZW50X3R5cGUgPSB0ZGVzY19jcmVhdGVfdW5pb24gKGRh dGEtPmN1cnJlbnRfZmVhdHVyZSwgaWQpOwotKyAgZGF0YS0+Y3VycmVudF90eXBlX3NpemUgPSAw OwotKyAgZGF0YS0+Y3VycmVudF90eXBlX2lzX2ZsYWdzID0gMDsKLSt9Ci0rCi0rLyogSGFuZGxl IHRoZSBzdGFydCBvZiBhIDxzdHJ1Y3Q+IGVsZW1lbnQuICBJbml0aWFsaXplIHRoZSB0eXBlIGFu ZAotKyAgIHJlY29yZCBpdCB3aXRoIHRoZSBjdXJyZW50IGZlYXR1cmUuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rdGRlc2Nfc3RhcnRfc3RydWN0IChzdHJ1Y3QgZ2RiX3htbF9wYXJzZXIgKnBhcnNl ciwKLSsJCSAgIGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgKmVsZW1lbnQsCi0rCQkgICB2 b2lkICp1c2VyX2RhdGEsIFZFQyhnZGJfeG1sX3ZhbHVlX3MpICphdHRyaWJ1dGVzKQotK3sKLSsg IHN0cnVjdCB0ZGVzY19wYXJzaW5nX2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rICBjaGFyICpp ZCA9IFZFQ19pbmRleCAoZ2RiX3htbF92YWx1ZV9zLCBhdHRyaWJ1dGVzLCAwKS0+dmFsdWU7Ci0r ICBzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZTsKLSsKLSsgIHR5cGUgPSB0ZGVzY19jcmVhdGVfc3Ry dWN0IChkYXRhLT5jdXJyZW50X2ZlYXR1cmUsIGlkKTsKLSsgIGRhdGEtPmN1cnJlbnRfdHlwZSA9 IHR5cGU7Ci0rICBkYXRhLT5jdXJyZW50X3R5cGVfc2l6ZSA9IDA7Ci0rICBkYXRhLT5jdXJyZW50 X3R5cGVfaXNfZmxhZ3MgPSAwOwotKwotKyAgaWYgKFZFQ19sZW5ndGggKGdkYl94bWxfdmFsdWVf cywgYXR0cmlidXRlcykgPiAxKQotKyAgICB7Ci0rICAgICAgaW50IHNpemUgPSAoaW50KSAqIChV TE9OR0VTVCAqKQotKwlWRUNfaW5kZXggKGdkYl94bWxfdmFsdWVfcywgYXR0cmlidXRlcywgMSkt PnZhbHVlOwotKyAgICAgIHRkZXNjX3NldF9zdHJ1Y3Rfc2l6ZSAodHlwZSwgc2l6ZSk7Ci0rICAg ICAgZGF0YS0+Y3VycmVudF90eXBlX3NpemUgPSBzaXplOwotKyAgICB9Ci0rfQotKwotK3N0YXRp YyB2b2lkCi0rdGRlc2Nfc3RhcnRfZmxhZ3MgKHN0cnVjdCBnZGJfeG1sX3BhcnNlciAqcGFyc2Vy LAotKwkJICAgY29uc3Qgc3RydWN0IGdkYl94bWxfZWxlbWVudCAqZWxlbWVudCwKLSsJCSAgIHZv aWQgKnVzZXJfZGF0YSwgVkVDKGdkYl94bWxfdmFsdWVfcykgKmF0dHJpYnV0ZXMpCi0rewotKyAg c3RydWN0IHRkZXNjX3BhcnNpbmdfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsgIGNoYXIgKmlk ID0gVkVDX2luZGV4IChnZGJfeG1sX3ZhbHVlX3MsIGF0dHJpYnV0ZXMsIDApLT52YWx1ZTsKLSsg IGludCBsZW5ndGggPSAoaW50KSAqIChVTE9OR0VTVCAqKQotKyAgICBWRUNfaW5kZXggKGdkYl94 bWxfdmFsdWVfcywgYXR0cmlidXRlcywgMSktPnZhbHVlOwotKyAgc3RydWN0IHRkZXNjX3R5cGUg KnR5cGU7Ci0rCi0rICB0eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChkYXRhLT5jdXJyZW50X2Zl YXR1cmUsIGlkLCBsZW5ndGgpOwotKwotKyAgZGF0YS0+Y3VycmVudF90eXBlID0gdHlwZTsKLSsg IGRhdGEtPmN1cnJlbnRfdHlwZV9zaXplID0gMDsKLSsgIGRhdGEtPmN1cnJlbnRfdHlwZV9pc19m bGFncyA9IDE7Ci0gfQotIAotIC8qIEhhbmRsZSB0aGUgc3RhcnQgb2YgYSA8ZmllbGQ+IGVsZW1l bnQuICBBdHRhY2ggdGhlIGZpZWxkIHRvIHRoZQotLSAgIGN1cnJlbnQgdW5pb24uICAqLwotKyAg IGN1cnJlbnQgc3RydWN0IG9yIHVuaW9uLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIHRkZXNjX3N0 YXJ0X2ZpZWxkIChzdHJ1Y3QgZ2RiX3htbF9wYXJzZXIgKnBhcnNlciwKLUBAIC0yNDEsMjAgKzI5 NCw4NCBAQCB0ZGVzY19zdGFydF9maWVsZCAoc3RydWN0IGdkYl94bWxfcGFyc2VyCi0gCQkgICB2 b2lkICp1c2VyX2RhdGEsIFZFQyhnZGJfeG1sX3ZhbHVlX3MpICphdHRyaWJ1dGVzKQotIHsKLSAg IHN0cnVjdCB0ZGVzY19wYXJzaW5nX2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rICBpbnQgaXgg PSAwLCBsZW5ndGg7Ci0gICBzdHJ1Y3QgZ2RiX3htbF92YWx1ZSAqYXR0cnMgPSBWRUNfYWRkcmVz cyAoZ2RiX3htbF92YWx1ZV9zLCBhdHRyaWJ1dGVzKTsKLSAgIHN0cnVjdCB0ZGVzY190eXBlICpm aWVsZF90eXBlOwotICAgY2hhciAqZmllbGRfbmFtZSwgKmZpZWxkX3R5cGVfaWQ7Ci0rICBpbnQg c3RhcnQsIGVuZDsKLSAKLS0gIGZpZWxkX25hbWUgPSBhdHRyc1swXS52YWx1ZTsKLS0gIGZpZWxk X3R5cGVfaWQgPSBhdHRyc1sxXS52YWx1ZTsKLSsgIGxlbmd0aCA9IFZFQ19sZW5ndGggKGdkYl94 bWxfdmFsdWVfcywgYXR0cmlidXRlcyk7Ci0gCi0tICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRf dHlwZSAoZGF0YS0+Y3VycmVudF9mZWF0dXJlLCBmaWVsZF90eXBlX2lkKTsKLS0gIGlmIChmaWVs ZF90eXBlID09IE5VTEwpCi0tICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygiVW5pb24gZmll bGQgXCIlc1wiIHJlZmVyZW5jZXMgdW5kZWZpbmVkICIKLS0JCQkgICAgICJ0eXBlIFwiJXNcIiIp LAotLQkJICAgZmllbGRfbmFtZSwgZmllbGRfdHlwZV9pZCk7Ci0rICBmaWVsZF9uYW1lID0gYXR0 cnNbaXgrK10udmFsdWU7Ci0rCi0rICBpZiAoaXggPCBsZW5ndGggJiYgc3RyY21wIChhdHRyc1tp eF0ubmFtZSwgInR5cGUiKSA9PSAwKQotKyAgICBmaWVsZF90eXBlX2lkID0gYXR0cnNbaXgrK10u dmFsdWU7Ci0rICBlbHNlCi0rICAgIGZpZWxkX3R5cGVfaWQgPSBOVUxMOwotKwotKyAgaWYgKGl4 IDwgbGVuZ3RoICYmIHN0cmNtcCAoYXR0cnNbaXhdLm5hbWUsICJzdGFydCIpID09IDApCi0rICAg IHN0YXJ0ID0gKiAoVUxPTkdFU1QgKikgYXR0cnNbaXgrK10udmFsdWU7Ci0rICBlbHNlCi0rICAg IHN0YXJ0ID0gLTE7Ci0rCi0rICBpZiAoaXggPCBsZW5ndGggJiYgc3RyY21wIChhdHRyc1tpeF0u bmFtZSwgImVuZCIpID09IDApCi0rICAgIGVuZCA9ICogKFVMT05HRVNUICopIGF0dHJzW2l4Kytd LnZhbHVlOwotKyAgZWxzZQotKyAgICBlbmQgPSAtMTsKLSsKLSsgIGlmIChmaWVsZF90eXBlX2lk ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpZiAoZGF0YS0+Y3VycmVudF90eXBlX2lzX2ZsYWdz KQotKwlnZGJfeG1sX2Vycm9yIChwYXJzZXIsIF8oIkNhbm5vdCBhZGQgdHlwZWQgZmllbGQgXCIl c1wiIHRvIGZsYWdzIiksIAotKwkJICAgICAgIGZpZWxkX25hbWUpOwotKyAgICAgIGlmIChkYXRh LT5jdXJyZW50X3R5cGVfc2l6ZSAhPSAwKQotKwlnZGJfeG1sX2Vycm9yIChwYXJzZXIsCi0rCQkg ICAgICAgXygiRXhwbGljaXRseSBzaXplZCB0eXBlIGNhbiBub3QgY29udGFpbiBub24tYml0Zmll bGQgXCIlc1wiIiksIAotKwkJICAgICAgIGZpZWxkX25hbWUpOwotKwotKyAgICAgIGZpZWxkX3R5 cGUgPSB0ZGVzY19uYW1lZF90eXBlIChkYXRhLT5jdXJyZW50X2ZlYXR1cmUsIGZpZWxkX3R5cGVf aWQpOwotKyAgICAgIGlmIChmaWVsZF90eXBlID09IE5VTEwpCi0rCWdkYl94bWxfZXJyb3IgKHBh cnNlciwgXygiRmllbGQgXCIlc1wiIHJlZmVyZW5jZXMgdW5kZWZpbmVkICIKLSsJCQkJICJ0eXBl IFwiJXNcIiIpLAotKwkJICAgICAgIGZpZWxkX25hbWUsIGZpZWxkX3R5cGVfaWQpOwotKwotKyAg ICAgIHRkZXNjX2FkZF9maWVsZCAoZGF0YS0+Y3VycmVudF90eXBlLCBmaWVsZF9uYW1lLCBmaWVs ZF90eXBlKTsKLSsgICAgfQotKyAgZWxzZSBpZiAoc3RhcnQgIT0gLTEgJiYgZW5kICE9IC0xKQot KyAgICB7Ci0rICAgICAgc3RydWN0IHRkZXNjX3R5cGUgKnQgPSBkYXRhLT5jdXJyZW50X3R5cGU7 Ci0rCi0rICAgICAgaWYgKGRhdGEtPmN1cnJlbnRfdHlwZV9pc19mbGFncykKLSsJdGRlc2NfYWRk X2ZsYWcgKHQsIHN0YXJ0LCBmaWVsZF9uYW1lKTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAo ZGF0YS0+Y3VycmVudF90eXBlX3NpemUgPT0gMCkKLSsJICAgIGdkYl94bWxfZXJyb3IgKHBhcnNl ciwKLSsJCQkgICBfKCJJbXBsaWNpdGx5IHNpemVkIHR5cGUgY2FuIG5vdCBjb250YWluIGJpdGZp ZWxkIFwiJXNcIiIpLCAKLSsJCQkgICBmaWVsZF9uYW1lKTsKLSsKLSsJICBpZiAoZW5kID49IDY0 KQotKwkgICAgZ2RiX3htbF9lcnJvciAocGFyc2VyLAotKwkJCSAgIF8oIkJpdGZpZWxkIFwiJXNc IiBnb2VzIHBhc3QgNjQgYml0cyAodW5zdXBwb3J0ZWQpIiksCi0rCQkJICAgZmllbGRfbmFtZSk7 Ci0rCi0rCSAgLyogQXNzdW1lIHRoYXQgdGhlIGJpdCBudW1iZXJpbmcgaW4gWE1MIGlzICJsc2It emVybyIuICBNb3N0Ci0rCSAgICAgYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIFBvd2VyUEMgdXNl IHRoaXMgb3JkZXJpbmcuICBJbgotKwkgICAgIHRoZSBmdXR1cmUsIHdlIGNhbiBhZGQgYW4gWE1M IHRhZyB0byBpbmRpY2F0ZSAibXNiLXplcm8iCi0rCSAgICAgbnVtYmVyaW5nLiAgKi8KLSsJICBp ZiAoc3RhcnQgPiBlbmQpCi0rCSAgICBnZGJfeG1sX2Vycm9yIChwYXJzZXIsIF8oIkJpdGZpZWxk IFwiJXNcIiBoYXMgc3RhcnQgYWZ0ZXIgZW5kIiksCi0rCQkJICAgZmllbGRfbmFtZSk7Ci0gCi0t ICB0ZGVzY19hZGRfZmllbGQgKGRhdGEtPmN1cnJlbnRfdW5pb24sIGZpZWxkX25hbWUsIGZpZWxk X3R5cGUpOwotKwkgIGlmIChlbmQgPj0gZGF0YS0+Y3VycmVudF90eXBlX3NpemUgKiBUQVJHRVRf Q0hBUl9CSVQpCi0rCSAgICBnZGJfeG1sX2Vycm9yIChwYXJzZXIsIF8oIkJpdGZpZWxkIFwiJXNc IiBkb2VzIG5vdCBmaXQgaW4gc3RydWN0IikpOwotKwotKwkgIHRkZXNjX2FkZF9iaXRmaWVsZCAo dCwgZmllbGRfbmFtZSwgc3RhcnQsIGVuZCk7Ci0rCX0KLSsgICAgfQotKyAgZWxzZQotKyAgICBn ZGJfeG1sX2Vycm9yIChwYXJzZXIsIF8oIkZpZWxkIFwiJXNcIiBoYXMgbmVpdGhlciB0eXBlIG5v ciBiaXQgcG9zaXRpb24iKSwKLSsJCSAgIGZpZWxkX25hbWUpOwotIH0KLSAKLSAvKiBIYW5kbGUg dGhlIHN0YXJ0IG9mIGEgPHZlY3Rvcj4gZWxlbWVudC4gIEluaXRpYWxpemUgdGhlIHR5cGUgYW5k Ci1AQCAtMjg3LDExICs0MDQsMTMgQEAgdGRlc2Nfc3RhcnRfdmVjdG9yIChzdHJ1Y3QgZ2RiX3ht bF9wYXJzZQotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgZmllbGRf YXR0cmlidXRlc1tdID0gewotICAgeyAibmFtZSIsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVM TCB9LAotLSAgeyAidHlwZSIsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVMTCB9LAotKyAgeyAi dHlwZSIsIEdEQl9YTUxfQUZfT1BUSU9OQUwsIE5VTEwsIE5VTEwgfSwKLSsgIHsgInN0YXJ0Iiwg R0RCX1hNTF9BRl9PUFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX3Vsb25nZXN0LCBOVUxMIH0s Ci0rICB7ICJlbmQiLCBHREJfWE1MX0FGX09QVElPTkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJfdWxv bmdlc3QsIE5VTEwgfSwKLSAgIHsgTlVMTCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0K LSB9OwotIAotLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50IHVuaW9uX2NoaWxk cmVuW10gPSB7Ci0rc3RhdGljIGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgc3RydWN0X3Vu aW9uX2NoaWxkcmVuW10gPSB7Ci0gICB7ICJmaWVsZCIsIGZpZWxkX2F0dHJpYnV0ZXMsIE5VTEws IEdEQl9YTUxfRUZfUkVQRUFUQUJMRSwKLSAgICAgdGRlc2Nfc3RhcnRfZmllbGQsIE5VTEwgfSwK LSAgIHsgTlVMTCwgTlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0KLUBA IC0zMDgsOCArNDI3LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUg cmUKLSAgIHsgTlVMTCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgdW5pb25fYXR0cmlidXRlc1tdID0g ewotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgc3RydWN0X3VuaW9uX2F0 dHJpYnV0ZXNbXSA9IHsKLSAgIHsgImlkIiwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0s Ci0rICB7ICJzaXplIiwgR0RCX1hNTF9BRl9PUFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX3Vs b25nZXN0LCBOVUxMfSwKLSsgIHsgTlVMTCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0K LSt9OwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgZmxhZ3NfYXR0 cmlidXRlc1tdID0gewotKyAgeyAiaWQiLCBHREJfWE1MX0FGX05PTkUsIE5VTEwsIE5VTEwgfSwK LSsgIHsgInNpemUiLCBHREJfWE1MX0FGX05PTkUsIGdkYl94bWxfcGFyc2VfYXR0cl91bG9uZ2Vz dCwgTlVMTH0sCi0gICB7IE5VTEwsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVMTCB9Ci0gfTsK LSAKLUBAIC0zMjksOSArNDU1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVt ZW50IGZlYXQKLSAgIHsgInJlZyIsIHJlZ19hdHRyaWJ1dGVzLCBOVUxMLAotICAgICBHREJfWE1M X0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9SRVBFQVRBQkxFLAotICAgICB0ZGVzY19zdGFydF9y ZWcsIE5VTEwgfSwKLS0gIHsgInVuaW9uIiwgdW5pb25fYXR0cmlidXRlcywgdW5pb25fY2hpbGRy ZW4sCi0rICB7ICJzdHJ1Y3QiLCBzdHJ1Y3RfdW5pb25fYXR0cmlidXRlcywgc3RydWN0X3VuaW9u X2NoaWxkcmVuLAotKyAgICBHREJfWE1MX0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9SRVBFQVRB QkxFLAotKyAgICB0ZGVzY19zdGFydF9zdHJ1Y3QsIE5VTEwgfSwKLSsgIHsgInVuaW9uIiwgc3Ry dWN0X3VuaW9uX2F0dHJpYnV0ZXMsIHN0cnVjdF91bmlvbl9jaGlsZHJlbiwKLSAgICAgR0RCX1hN TF9FRl9PUFRJT05BTCB8IEdEQl9YTUxfRUZfUkVQRUFUQUJMRSwKLSAgICAgdGRlc2Nfc3RhcnRf dW5pb24sIE5VTEwgfSwKLSsgIHsgImZsYWdzIiwgZmxhZ3NfYXR0cmlidXRlcywgc3RydWN0X3Vu aW9uX2NoaWxkcmVuLAotKyAgICBHREJfWE1MX0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9SRVBF QVRBQkxFLAotKyAgICB0ZGVzY19zdGFydF9mbGFncywgTlVMTCB9LCAgICAKLSAgIHsgInZlY3Rv ciIsIHZlY3Rvcl9hdHRyaWJ1dGVzLCBOVUxMLAotICAgICBHREJfWE1MX0VGX09QVElPTkFMIHwg R0RCX1hNTF9FRl9SRVBFQVRBQkxFLAotICAgICB0ZGVzY19zdGFydF92ZWN0b3IsIE5VTEwgfSwK CmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTAzb2YxMC5wYXRjaCBiL2dkYi1iejU3ODI1 MC1hdngtMDNvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ZiNTUx Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMDNvZjEwLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNDU3ICswLDAgQEAKLVsgQmFja3BvcnRlZC4gIF0KLQotY29tbWl0IDAyNTdkNjM5 ZDQyZjg5NmEzNTk5OTNhZThhZGI1NzkyZTI4MGY2NWYKLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRv b2xzQGdtYWlsLmNvbT4KLURhdGU6ICAgTW9uIE1hciAxIDE3OjI2OjAyIDIwMTAgKzAwMDAKLQot ICAgIFJlbW92ZSBUREVTQ19UWVBFX0kzODZfRUZMQUdTIGFuZCBUREVTQ19UWVBFX0kzODZfTVhD U1IuCi0gICAgCi0gICAgMjAxMC0wMy0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotICAgIAotICAgIAkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAodGRlc2NfdHlwZSk6IFJlbW92 ZQotICAgIAlUREVTQ19UWVBFX0kzODZfRUZMQUdTIGFuZCBUREVTQ19UWVBFX0kzODZfTVhDU1Iu Ci0gICAgCSh0ZGVzY19wcmVkZWZpbmVkX3R5cGVzKTogTGlrZXdpc2UuCi0gICAgCSh0ZGVzY19n ZGJfdHlwZSk6IExpa2V3aXNlLiAgUGFzcyBOVUxMIHRvIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcK LSAgICAJaWYgZmxhZyBuYW1lIGlzIGVtcHR5LgotICAgIAkobWFpbnRfcHJpbnRfY190ZGVzY19j bWQpOiBIYW5kbGUgVERFU0NfVFlQRV9GTEFHUy4KLSAgICAKLSAgICAJKiBmZWF0dXJlcy9pMzg2 LzMyYml0LWNvcmUueG1sOiBEZWZpbmUgaTM4Nl9lZmxhZ3MuCi0gICAgCSogZmVhdHVyZXMvaTM4 Ni82NGJpdC1jb3JlLnhtbDogTGlrZXdpc2UuCi0gICAgCi0gICAgCSogZmVhdHVyZXMvaTM4Ni8z MmJpdC1zc2UueG1sOiBEZWZpbmUgaTM4Nl9teGNzci4KLSAgICAJKiBmZWF0dXJlcy9pMzg2LzY0 Yml0LXNzZS54bWw6IExpa2V3aXNlLgotICAgIAotICAgIAkqIGZlYXR1cmVzL2kzODYvYW1kNjQt bGludXguYzogUmVnZW5lcmF0ZWQuCi0gICAgCSogZmVhdHVyZXMvaTM4Ni9hbWQ2NC5jOiBMaWtl d2lzZS4KLSAgICAJKiBmZWF0dXJlcy9pMzg2L2kzODYtbGludXguYzogTGlrZXdpc2UuCi0gICAg CSogZmVhdHVyZXMvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgotCi0tLS0gZ2RiLTcuMS1wMS9nZGIv ZmVhdHVyZXMvaTM4Ni8zMmJpdC1jb3JlLnhtbAkyMDEwLTAyLTA4IDA2OjA4OjQ2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjEvZ2RiL2ZlYXR1cmVzL2kzODYvMzJiaXQtY29yZS54bWwJMjAx MC0wNC0wMyAyMTowNjoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03LDYgKzcsMjYgQEAKLSAKLSA8 IURPQ1RZUEUgZmVhdHVyZSBTWVNURU0gImdkYi10YXJnZXQuZHRkIj4KLSA8ZmVhdHVyZSBuYW1l PSJvcmcuZ251LmdkYi5pMzg2LmNvcmUiPgotKyAgPGZsYWdzIGlkPSJpMzg2X2VmbGFncyIgc2l6 ZT0iNCI+Ci0rICAgIDxmaWVsZCBuYW1lPSJDRiIgc3RhcnQ9IjAiIGVuZD0iMCIvPgotKyAgICA8 ZmllbGQgbmFtZT0iIiBzdGFydD0iMSIgZW5kPSIxIi8+Ci0rICAgIDxmaWVsZCBuYW1lPSJQRiIg c3RhcnQ9IjIiIGVuZD0iMiIvPgotKyAgICA8ZmllbGQgbmFtZT0iQUYiIHN0YXJ0PSI0IiBlbmQ9 IjQiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlpGIiBzdGFydD0iNiIgZW5kPSI2Ii8+Ci0rICAgIDxm aWVsZCBuYW1lPSJTRiIgc3RhcnQ9IjciIGVuZD0iNyIvPgotKyAgICA8ZmllbGQgbmFtZT0iVEYi IHN0YXJ0PSI4IiBlbmQ9IjgiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklGIiBzdGFydD0iOSIgZW5k PSI5Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJERiIgc3RhcnQ9IjEwIiBlbmQ9IjEwIi8+Ci0rICAg IDxmaWVsZCBuYW1lPSJPRiIgc3RhcnQ9IjExIiBlbmQ9IjExIi8+Ci0rICAgIDxmaWVsZCBuYW1l PSJOVCIgc3RhcnQ9IjE0IiBlbmQ9IjE0Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJSRiIgc3RhcnQ9 IjE2IiBlbmQ9IjE2Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJWTSIgc3RhcnQ9IjE3IiBlbmQ9IjE3 Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJBQyIgc3RhcnQ9IjE4IiBlbmQ9IjE4Ii8+Ci0rICAgIDxm aWVsZCBuYW1lPSJWSUYiIHN0YXJ0PSIxOSIgZW5kPSIxOSIvPgotKyAgICA8ZmllbGQgbmFtZT0i VklQIiBzdGFydD0iMjAiIGVuZD0iMjAiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklEIiBzdGFydD0i MjEiIGVuZD0iMjEiLz4KLSsgIDwvZmxhZ3M+Ci0rCi0gICA8cmVnIG5hbWU9ImVheCIgYml0c2l6 ZT0iMzIiIHR5cGU9ImludDMyIi8+Ci0gICA8cmVnIG5hbWU9ImVjeCIgYml0c2l6ZT0iMzIiIHR5 cGU9ImludDMyIi8+Ci0gICA8cmVnIG5hbWU9ImVkeCIgYml0c2l6ZT0iMzIiIHR5cGU9ImludDMy Ii8+Ci0tLS0gZ2RiLTcuMS1wMS9nZGIvZmVhdHVyZXMvaTM4Ni8zMmJpdC1zc2UueG1sCTIwMTAt MDItMDggMDY6MDg6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVyZXMv aTM4Ni8zMmJpdC1zc2UueG1sCTIwMTAtMDQtMDMgMjE6MDY6MTIuMDAwMDAwMDAwICswMjAwCi1A QCAtMjIsNiArMjIsMjIgQEAKLSAgICAgPGZpZWxkIG5hbWU9InYyX2ludDY0IiB0eXBlPSJ2Mmk2 NCIvPgotICAgICA8ZmllbGQgbmFtZT0idWludDEyOCIgdHlwZT0idWludDEyOCIvPgotICAgPC91 bmlvbj4KLSsgIDxmbGFncyBpZD0iaTM4Nl9teGNzciIgc2l6ZT0iNCI+Ci0rICAgIDxmaWVsZCBu YW1lPSJJRSIgc3RhcnQ9IjAiIGVuZD0iMCIvPgotKyAgICA8ZmllbGQgbmFtZT0iREUiIHN0YXJ0 PSIxIiBlbmQ9IjEiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlpFIiBzdGFydD0iMiIgZW5kPSIyIi8+ Ci0rICAgIDxmaWVsZCBuYW1lPSJPRSIgc3RhcnQ9IjMiIGVuZD0iMyIvPgotKyAgICA8ZmllbGQg bmFtZT0iVUUiIHN0YXJ0PSI0IiBlbmQ9IjQiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlBFIiBzdGFy dD0iNSIgZW5kPSI1Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJEQVoiIHN0YXJ0PSI2IiBlbmQ9IjYi Lz4KLSsgICAgPGZpZWxkIG5hbWU9IklNIiBzdGFydD0iNyIgZW5kPSI3Ii8+Ci0rICAgIDxmaWVs ZCBuYW1lPSJETSIgc3RhcnQ9IjgiIGVuZD0iOCIvPgotKyAgICA8ZmllbGQgbmFtZT0iWk0iIHN0 YXJ0PSI5IiBlbmQ9IjkiLz4KLSsgICAgPGZpZWxkIG5hbWU9Ik9NIiBzdGFydD0iMTAiIGVuZD0i MTAiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlVNIiBzdGFydD0iMTEiIGVuZD0iMTEiLz4KLSsgICAg PGZpZWxkIG5hbWU9IlBNIiBzdGFydD0iMTIiIGVuZD0iMTIiLz4KLSsgICAgPGZpZWxkIG5hbWU9 IkZaIiBzdGFydD0iMTUiIGVuZD0iMTUiLz4KLSsgIDwvZmxhZ3M+Ci0gCi0gICA8cmVnIG5hbWU9 InhtbTAiIGJpdHNpemU9IjEyOCIgdHlwZT0idmVjMTI4IiByZWdudW09IjMyIi8+Ci0gICA8cmVn IG5hbWU9InhtbTEiIGJpdHNpemU9IjEyOCIgdHlwZT0idmVjMTI4Ii8+Ci0tLS0gZ2RiLTcuMS1w MS9nZGIvZmVhdHVyZXMvaTM4Ni82NGJpdC1jb3JlLnhtbAkyMDEwLTAyLTA4IDA2OjA4OjQ2LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL2ZlYXR1cmVzL2kzODYvNjRiaXQtY29yZS54 bWwJMjAxMC0wNC0wMyAyMTowNjoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03LDYgKzcsMjYgQEAK LSAKLSA8IURPQ1RZUEUgZmVhdHVyZSBTWVNURU0gImdkYi10YXJnZXQuZHRkIj4KLSA8ZmVhdHVy ZSBuYW1lPSJvcmcuZ251LmdkYi5pMzg2LmNvcmUiPgotKyAgPGZsYWdzIGlkPSJpMzg2X2VmbGFn cyIgc2l6ZT0iNCI+Ci0rICAgIDxmaWVsZCBuYW1lPSJDRiIgc3RhcnQ9IjAiIGVuZD0iMCIvPgot KyAgICA8ZmllbGQgbmFtZT0iIiBzdGFydD0iMSIgZW5kPSIxIi8+Ci0rICAgIDxmaWVsZCBuYW1l PSJQRiIgc3RhcnQ9IjIiIGVuZD0iMiIvPgotKyAgICA8ZmllbGQgbmFtZT0iQUYiIHN0YXJ0PSI0 IiBlbmQ9IjQiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlpGIiBzdGFydD0iNiIgZW5kPSI2Ii8+Ci0r ICAgIDxmaWVsZCBuYW1lPSJTRiIgc3RhcnQ9IjciIGVuZD0iNyIvPgotKyAgICA8ZmllbGQgbmFt ZT0iVEYiIHN0YXJ0PSI4IiBlbmQ9IjgiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklGIiBzdGFydD0i OSIgZW5kPSI5Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJERiIgc3RhcnQ9IjEwIiBlbmQ9IjEwIi8+ Ci0rICAgIDxmaWVsZCBuYW1lPSJPRiIgc3RhcnQ9IjExIiBlbmQ9IjExIi8+Ci0rICAgIDxmaWVs ZCBuYW1lPSJOVCIgc3RhcnQ9IjE0IiBlbmQ9IjE0Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJSRiIg c3RhcnQ9IjE2IiBlbmQ9IjE2Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJWTSIgc3RhcnQ9IjE3IiBl bmQ9IjE3Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJBQyIgc3RhcnQ9IjE4IiBlbmQ9IjE4Ii8+Ci0r ICAgIDxmaWVsZCBuYW1lPSJWSUYiIHN0YXJ0PSIxOSIgZW5kPSIxOSIvPgotKyAgICA8ZmllbGQg bmFtZT0iVklQIiBzdGFydD0iMjAiIGVuZD0iMjAiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklEIiBz dGFydD0iMjEiIGVuZD0iMjEiLz4KLSsgIDwvZmxhZ3M+Ci0rCi0gICA8cmVnIG5hbWU9InJheCIg Yml0c2l6ZT0iNjQiIHR5cGU9ImludDY0Ii8+Ci0gICA8cmVnIG5hbWU9InJieCIgYml0c2l6ZT0i NjQiIHR5cGU9ImludDY0Ii8+Ci0gICA8cmVnIG5hbWU9InJjeCIgYml0c2l6ZT0iNjQiIHR5cGU9 ImludDY0Ii8+Ci0tLS0gZ2RiLTcuMS1wMS9nZGIvZmVhdHVyZXMvaTM4Ni82NGJpdC1zc2UueG1s CTIwMTAtMDItMDggMDY6MDg6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVh dHVyZXMvaTM4Ni82NGJpdC1zc2UueG1sCTIwMTAtMDQtMDMgMjE6MDY6MTIuMDAwMDAwMDAwICsw MjAwCi1AQCAtMjIsNiArMjIsMjIgQEAKLSAgICAgPGZpZWxkIG5hbWU9InYyX2ludDY0IiB0eXBl PSJ2Mmk2NCIvPgotICAgICA8ZmllbGQgbmFtZT0idWludDEyOCIgdHlwZT0idWludDEyOCIvPgot ICAgPC91bmlvbj4KLSsgIDxmbGFncyBpZD0iaTM4Nl9teGNzciIgc2l6ZT0iNCI+Ci0rICAgIDxm aWVsZCBuYW1lPSJJRSIgc3RhcnQ9IjAiIGVuZD0iMCIvPgotKyAgICA8ZmllbGQgbmFtZT0iREUi IHN0YXJ0PSIxIiBlbmQ9IjEiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlpFIiBzdGFydD0iMiIgZW5k PSIyIi8+Ci0rICAgIDxmaWVsZCBuYW1lPSJPRSIgc3RhcnQ9IjMiIGVuZD0iMyIvPgotKyAgICA8 ZmllbGQgbmFtZT0iVUUiIHN0YXJ0PSI0IiBlbmQ9IjQiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlBF IiBzdGFydD0iNSIgZW5kPSI1Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJEQVoiIHN0YXJ0PSI2IiBl bmQ9IjYiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklNIiBzdGFydD0iNyIgZW5kPSI3Ii8+Ci0rICAg IDxmaWVsZCBuYW1lPSJETSIgc3RhcnQ9IjgiIGVuZD0iOCIvPgotKyAgICA8ZmllbGQgbmFtZT0i Wk0iIHN0YXJ0PSI5IiBlbmQ9IjkiLz4KLSsgICAgPGZpZWxkIG5hbWU9Ik9NIiBzdGFydD0iMTAi IGVuZD0iMTAiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlVNIiBzdGFydD0iMTEiIGVuZD0iMTEiLz4K LSsgICAgPGZpZWxkIG5hbWU9IlBNIiBzdGFydD0iMTIiIGVuZD0iMTIiLz4KLSsgICAgPGZpZWxk IG5hbWU9IkZaIiBzdGFydD0iMTUiIGVuZD0iMTUiLz4KLSsgIDwvZmxhZ3M+Ci0gCi0gICA8cmVn IG5hbWU9InhtbTAiIGJpdHNpemU9IjEyOCIgdHlwZT0idmVjMTI4IiByZWdudW09IjQwIi8+Ci0g ICA8cmVnIG5hbWU9InhtbTEiIGJpdHNpemU9IjEyOCIgdHlwZT0idmVjMTI4Ii8+Ci0tLS0gZ2Ri LTcuMS1wMS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1saW51eC5jCTIwMTAtMDItMDggMDY6MDg6 NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1s aW51eC5jCTIwMTAtMDQtMDMgMjE6MDY6MTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTcsNiArMTcs MjUgQEAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9saW51eCAodm9pZCkKLSAgIHNldF90ZGVzY19v c2FiaSAocmVzdWx0LCBvc2FiaV9mcm9tX3RkZXNjX3N0cmluZyAoIkdOVS9MaW51eCIpKTsKLSAK LSAgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIu aTM4Ni5jb3JlIik7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChmZWF0dXJl LCAiaTM4Nl9lZmxhZ3MiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAi Q0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwgIlBGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgNCwgIkFGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNiwgIlpGIik7 Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIlNGIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgOCwgIlRGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgOSwgIklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJERiIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiT0YiKTsKLSsgIHRkZXNjX2FkZF9m bGFnIChmaWVsZF90eXBlLCAxNCwgIk5UIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgMTYsICJSRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE3LCAiVk0iKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxOCwgIkFDIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgMTksICJWSUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCAyMCwgIlZJUCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIxLCAiSUQi KTsKLSsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyYXgiLCAwLCAxLCBOVUxMLCA2 NCwgImludDY0Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJ4IiwgMSwgMSwg TlVMTCwgNjQsICJpbnQ2NCIpOwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJjeCIs IDIsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLUBAIC05Myw2ICsxMTIsMjIgQEAgaW5pdGlhbGl6 ZV90ZGVzY19hbWQ2NF9saW51eCAodm9pZCkKLSAgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90 eXBlIChmZWF0dXJlLCAidWludDEyOCIpOwotICAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWlu dDEyOCIsIGZpZWxkX3R5cGUpOwotIAotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFn cyAoZmVhdHVyZSwgImkzODZfbXhjc3IiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCAwLCAiSUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUiKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiWkUiKTsKLSsgIHRkZXNjX2FkZF9m bGFnIChmaWVsZF90eXBlLCAzLCAiT0UiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBl LCA0LCAiVUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsKLSsg IHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiREFaIik7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgNywgIklNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg OCwgIkRNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJPTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDExLCAiVU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAx MiwgIlBNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOwotKwot ICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTAiLCA0MCwgMSwgTlVMTCwgMTI4LCAi dmVjMTI4Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDQxLCAxLCBO VUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0y IiwgNDIsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotLS0tIGdkYi03LjEtcDEvZ2RiL2ZlYXR1 cmVzL2kzODYvYW1kNjQuYwkyMDEwLTAyLTA4IDA2OjA4OjQ2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjEvZ2RiL2ZlYXR1cmVzL2kzODYvYW1kNjQuYwkyMDEwLTA0LTAzIDIxOjA2OjEyLjAw MDAwMDAwMCArMDIwMAotQEAgLTE1LDYgKzE1LDI1IEBAIGluaXRpYWxpemVfdGRlc2NfYW1kNjQg KHZvaWQpCi0gICBzZXRfdGRlc2NfYXJjaGl0ZWN0dXJlIChyZXN1bHQsIGJmZF9zY2FuX2FyY2gg KCJpMzg2Ong4Ni02NCIpKTsKLSAKLSAgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAo cmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5jb3JlIik7Ci0rICBmaWVsZF90eXBlID0gdGRlc2Nf Y3JlYXRlX2ZsYWdzIChmZWF0dXJlLCAiaTM4Nl9lZmxhZ3MiLCA0KTsKLSsgIHRkZXNjX2FkZF9m bGFnIChmaWVsZF90eXBlLCAwLCAiQ0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBl LCAxLCAiIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwgIlBGIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNCwgIkFGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgNiwgIlpGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywg IlNGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIlRGIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgMTAsICJERiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAi T0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNCwgIk5UIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTYsICJSRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDE3LCAiVk0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxOCwg IkFDIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTksICJWSUYiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMCwgIlZJUCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDIxLCAiSUQiKTsKLSsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUs ICJyYXgiLCAwLCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAicmJ4IiwgMSwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotICAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgInJjeCIsIDIsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLUBAIC05MSw2 ICsxMTAsMjIgQEAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NCAodm9pZCkKLSAgIGZpZWxkX3R5cGUg PSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDEyOCIpOwotICAgdGRlc2NfYWRkX2Zp ZWxkICh0eXBlLCAidWludDEyOCIsIGZpZWxkX3R5cGUpOwotIAotKyAgZmllbGRfdHlwZSA9IHRk ZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfbXhjc3IiLCA0KTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiSUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCAxLCAiREUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiWkUiKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAzLCAiT0UiKTsKLSsgIHRkZXNjX2FkZF9m bGFnIChmaWVsZF90eXBlLCA0LCAiVUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBl LCA1LCAiUEUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiREFaIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIklNIik7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgOCwgIkRNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg OSwgIlpNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJPTSIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiVU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCAxMiwgIlBNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg MTUsICJGWiIpOwotKwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTAiLCA0MCwg MSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi eG1tMSIsIDQxLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJ4bW0yIiwgNDIsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotLS0tIGdkYi03 LjEtcDEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1saW51eC5jCTIwMTAtMDItMDggMDY6MDg6NDYu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWxpbnV4 LmMJMjAxMC0wNC0wMyAyMTowNjoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNyw2ICsxNywyNSBA QCBpbml0aWFsaXplX3RkZXNjX2kzODZfbGludXggKHZvaWQpCi0gICBzZXRfdGRlc2Nfb3NhYmkg KHJlc3VsdCwgb3NhYmlfZnJvbV90ZGVzY19zdHJpbmcgKCJHTlUvTGludXgiKSk7Ci0gCi0gICBm ZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYu Y29yZSIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkz ODZfZWZsYWdzIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7 Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDQsICJBRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJaRiIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDgsICJURiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDks ICJJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiREYiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgMTQsICJOVCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2 LCAiUkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywgIlZNIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDE5LCAiVklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg MjAsICJWSVAiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMSwgIklEIik7Ci0r Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWF4IiwgMCwgMSwgTlVMTCwgMzIsICJp bnQzMiIpOwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVjeCIsIDEsIDEsIE5VTEws IDMyLCAiaW50MzIiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlZHgiLCAyLCAx LCBOVUxMLCAzMiwgImludDMyIik7Ci1AQCAtODgsNiArMTA3LDIyIEBAIGluaXRpYWxpemVfdGRl c2NfaTM4Nl9saW51eCAodm9pZCkKLSAgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChm ZWF0dXJlLCAidWludDEyOCIpOwotICAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWludDEyOCIs IGZpZWxkX3R5cGUpOwotIAotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVh dHVyZSwgImkzODZfbXhjc3IiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAw LCAiSUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiWkUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCAzLCAiT0UiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAi VUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiREFaIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgNywgIklNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIkRN Iik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJPTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDExLCAiVU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMiwgIlBN Iik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOwotKwotICAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTAiLCAzMiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4 Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDMzLCAxLCBOVUxMLCAx MjgsICJ2ZWMxMjgiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0yIiwgMzQs IDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotLS0tIGdkYi03LjEtcDEvZ2RiL2ZlYXR1cmVzL2kz ODYvaTM4Ni5jCTIwMTAtMDItMDggMDY6MDg6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MS9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LmMJMjAxMC0wNC0wMyAyMTowNjoxMi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xNSw2ICsxNSwyNSBAQCBpbml0aWFsaXplX3RkZXNjX2kzODYgKHZvaWQpCi0g ICBzZXRfdGRlc2NfYXJjaGl0ZWN0dXJlIChyZXN1bHQsIGJmZF9zY2FuX2FyY2ggKCJpMzg2Iikp OwotIAotICAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251 LmdkYi5pMzg2LmNvcmUiKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3MgKGZl YXR1cmUsICJpMzg2X2VmbGFncyIsIDQpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDAsICJDRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICIiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiUEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCA0LCAiQUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAi WkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA3LCAiU0YiKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCA4LCAiVEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCA5LCAiSUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIkRG Iik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTEsICJPRiIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE0LCAiTlQiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCAxNiwgIlJGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTcsICJW TSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE4LCAiQUMiKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCAxOSwgIlZJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDIwLCAiVklQIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjEs ICJJRCIpOwotKwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVheCIsIDAsIDEsIE5V TEwsIDMyLCAiaW50MzIiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlY3giLCAx LCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi ZWR4IiwgMiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotQEAgLTgzLDYgKzEwMiwyMiBAQCBpbml0 aWFsaXplX3RkZXNjX2kzODYgKHZvaWQpCi0gICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlw ZSAoZmVhdHVyZSwgInVpbnQxMjgiKTsKLSAgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInVpbnQx MjgiLCBmaWVsZF90eXBlKTsKLSAKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3Mg KGZlYXR1cmUsICJpMzg2X214Y3NyIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgMCwgIklFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIkRFIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwgIlpFIik7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgMywgIk9FIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg NCwgIlVFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNSwgIlBFIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNiwgIkRBWiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDcsICJJTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgs ICJETSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJaTSIpOwotKyAgdGRl c2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiT00iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCAxMSwgIlVNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTIs ICJQTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE1LCAiRloiKTsKLSsKLSAg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0wIiwgMzIsIDEsIE5VTEwsIDEyOCwgInZl YzEyOCIpOwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTEiLCAzMywgMSwgTlVM TCwgMTI4LCAidmVjMTI4Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMiIs IDM0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLS0tLSBnZGItNy4xLXAxL2dkYi90YXJnZXQt ZGVzY3JpcHRpb25zLmMJMjAxMC0wNC0wMyAyMTowNDoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4xL2dkYi90YXJnZXQtZGVzY3JpcHRpb25zLmMJMjAxMC0wNC0wMyAyMTowNjoxMi4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xMjYsOCArMTI2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgdGRlc2NfdHlw ZQotICAgICBUREVTQ19UWVBFX0lFRUVfRE9VQkxFLAotICAgICBUREVTQ19UWVBFX0FSTV9GUEFf RVhULAotICAgICBUREVTQ19UWVBFX0kzODdfRVhULAotLSAgICBUREVTQ19UWVBFX0kzODZfRUZM QUdTLAotLSAgICBUREVTQ19UWVBFX0kzODZfTVhDU1IsCi0gCi0gICAgIC8qIFR5cGVzIGRlZmlu ZWQgYnkgYSB0YXJnZXQgZmVhdHVyZS4gICovCi0gICAgIFRERVNDX1RZUEVfVkVDVE9SLAotQEAg LTQ4Myw5ICs0ODEsNyBAQCBzdGF0aWMgc3RydWN0IHRkZXNjX3R5cGUgdGRlc2NfcHJlZGVmaW5l Ci0gICB7ICJpZWVlX3NpbmdsZSIsIFRERVNDX1RZUEVfSUVFRV9TSU5HTEUgfSwKLSAgIHsgImll ZWVfZG91YmxlIiwgVERFU0NfVFlQRV9JRUVFX0RPVUJMRSB9LAotICAgeyAiYXJtX2ZwYV9leHQi LCBUREVTQ19UWVBFX0FSTV9GUEFfRVhUIH0sCi0tICB7ICJpMzg3X2V4dCIsIFRERVNDX1RZUEVf STM4N19FWFQgfSwKLS0gIHsgImkzODZfZWZsYWdzIiwgVERFU0NfVFlQRV9JMzg2X0VGTEFHUyB9 LAotLSAgeyAiaTM4Nl9teGNzciIsIFRERVNDX1RZUEVfSTM4Nl9NWENTUiB9Ci0rICB7ICJpMzg3 X2V4dCIsIFRERVNDX1RZUEVfSTM4N19FWFQgfQotIH07Ci0gCi0gLyogUmV0dXJuIHRoZSB0eXBl IGFzc29jaWF0ZWQgd2l0aCBJRCBpbiB0aGUgY29udGV4dCBvZiBGRUFUVVJFLCBvcgotQEAgLTYw Nyw1NyArNjAzLDYgQEAgdGRlc2NfZ2RiX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot ICAgICAgIHJldHVybiBhcmNoX2Zsb2F0X3R5cGUgKGdkYmFyY2gsIC0xLCAiYnVpbHRpbl90eXBl X2kzODdfZXh0IiwKLSAJCQkgICAgICBmbG9hdGZvcm1hdHNfaTM4N19leHQpOwotIAotLSAgICBj YXNlIFRERVNDX1RZUEVfSTM4Nl9FRkxBR1M6Ci0tICAgICAgewotLQlzdHJ1Y3QgdHlwZSAqdHlw ZTsKLS0KLS0JdHlwZSA9IGFyY2hfZmxhZ3NfdHlwZSAoZ2RiYXJjaCwgImJ1aWx0aW5fdHlwZV9p Mzg2X2VmbGFncyIsIDQpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAwLCAiQ0Yi KTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMSwgTlVMTCk7Ci0tCWFwcGVuZF9m bGFnc190eXBlX2ZsYWcgKHR5cGUsIDIsICJQRiIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFn ICh0eXBlLCA0LCAiQUYiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgNiwgIlpG Iik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDcsICJTRiIpOwotLQlhcHBlbmRf ZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA4LCAiVEYiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxh ZyAodHlwZSwgOSwgIklGIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDEwLCAi REYiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTEsICJPRiIpOwotLQlhcHBl bmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxNCwgIk5UIik7Ci0tCWFwcGVuZF9mbGFnc190eXBl X2ZsYWcgKHR5cGUsIDE2LCAiUkYiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwg MTcsICJWTSIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxOCwgIkFDIik7Ci0t CWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDE5LCAiVklGIik7Ci0tCWFwcGVuZF9mbGFn c190eXBlX2ZsYWcgKHR5cGUsIDIwLCAiVklQIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcg KHR5cGUsIDIxLCAiSUQiKTsKLS0KLS0JcmV0dXJuIHR5cGU7Ci0tICAgICAgfQotLSAgICBicmVh azsKLS0KLS0gICAgY2FzZSBUREVTQ19UWVBFX0kzODZfTVhDU1I6Ci0tICAgICAgewotLQlzdHJ1 Y3QgdHlwZSAqdHlwZTsKLS0KLS0JdHlwZSA9IGFyY2hfZmxhZ3NfdHlwZSAoZ2RiYXJjaCwgImJ1 aWx0aW5fdHlwZV9pMzg2X214Y3NyIiwgNCk7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5 cGUsIDAsICJJRSIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxLCAiREUiKTsK LS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMiwgIlpFIik7Ci0tCWFwcGVuZF9mbGFn c190eXBlX2ZsYWcgKHR5cGUsIDMsICJPRSIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0 eXBlLCA0LCAiVUUiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgNSwgIlBFIik7 Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDYsICJEQVoiKTsKLS0JYXBwZW5kX2Zs YWdzX3R5cGVfZmxhZyAodHlwZSwgNywgIklNIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcg KHR5cGUsIDgsICJETSIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA5LCAiWk0i KTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTAsICJPTSIpOwotLQlhcHBlbmRf ZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxMSwgIlVNIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2Zs YWcgKHR5cGUsIDEyLCAiUE0iKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTUs ICJGWiIpOwotLQotLQlyZXR1cm4gdHlwZTsKLS0gICAgICB9Ci0tICAgIGJyZWFrOwotLQotICAg ICAvKiBUeXBlcyBkZWZpbmVkIGJ5IGEgdGFyZ2V0IGZlYXR1cmUuICAqLwotICAgICBjYXNlIFRE RVNDX1RZUEVfVkVDVE9SOgotICAgICAgIHsKLUBAIC03NjksNyArNzE0LDggQEAgdGRlc2NfZ2Ri X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAkgIC8qIE5vdGUgdGhhdCBjb250cmFy eSB0byB0aGUgZnVuY3Rpb24gbmFtZSwgdGhpcyBjYWxsIHdpbGwKLSAJICAgICBqdXN0IHNldCB0 aGUgcHJvcGVydGllcyBvZiBhbiBhbHJlYWR5LWFsbG9jYXRlZAotIAkgICAgIGZpZWxkLiAgKi8K LS0JICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCBmLT5zdGFydCwgZi0+bmFtZSk7Ci0r CSAgYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgZi0+c3RhcnQsCi0rCQkJCSAgKmYtPm5h bWUgPyBmLT5uYW1lIDogTlVMTCk7Ci0gCi0gCXJldHVybiB0eXBlOwotICAgICAgIH0KLUBAIC0x NjAyLDYgKzE1NDgsNyBAQCBtYWludF9wcmludF9jX3RkZXNjX2NtZCAoY2hhciAqYXJncywgaW50 Ci0gICBzdHJ1Y3QgdGRlc2NfcmVnICpyZWc7Ci0gICBzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZTsK LSAgIHN0cnVjdCB0ZGVzY190eXBlX2ZpZWxkICpmOwotKyAgc3RydWN0IHRkZXNjX3R5cGVfZmxh ZyAqZmxhZzsKLSAgIGludCBpeCwgaXgyLCBpeDM7Ci0gCi0gICAvKiBVc2UgdGhlIGdsb2JhbCB0 YXJnZXQtc3VwcGxpZWQgZGVzY3JpcHRpb24sIG5vdCB0aGUgY3VycmVudAotQEAgLTE3MTUsNiAr MTY2MiwxOCBAQCBtYWludF9wcmludF9jX3RkZXNjX2NtZCAoY2hhciAqYXJncywgaW50Ci0gCQkg ICAgIGYtPm5hbWUpOwotIAkJfQotIAkgICAgICBicmVhazsKLSsJICAgIGNhc2UgVERFU0NfVFlQ RV9GTEFHUzoKLSsJICAgICAgcHJpbnRmX3VuZmlsdGVyZWQKLSsJCSgiICBmaWVsZF90eXBlID0g dGRlc2NfY3JlYXRlX2ZsYWdzIChmZWF0dXJlLCBcIiVzXCIsICVkKTtcbiIsCi0rCQkgdHlwZS0+ bmFtZSwgKGludCkgdHlwZS0+dS5mLnNpemUpOwotKwkgICAgICBmb3IgKGl4MyA9IDA7Ci0rCQkg ICBWRUNfaXRlcmF0ZSAodGRlc2NfdHlwZV9mbGFnLCB0eXBlLT51LmYuZmxhZ3MsIGl4MywKLSsJ CQkJZmxhZyk7Ci0rCQkgICBpeDMrKykKLSsJCXByaW50Zl91bmZpbHRlcmVkCi0rCQkgICgiICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgJWQsIFwiJXNcIik7XG4iLAotKwkJICAgZmxhZy0+ c3RhcnQsIGZsYWctPm5hbWUpOwotKwkgICAgICBicmVhazsKLSAJICAgIGRlZmF1bHQ6Ci0gCSAg ICAgIGVycm9yIChfKCJDIG91dHB1dCBpcyBub3Qgc3VwcG9ydGVkIHR5cGUgXCIlc1wiLiIpLCB0 eXBlLT5uYW1lKTsKLSAJICAgIH0KCmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTA0b2Yx MC5wYXRjaCBiL2dkYi1iejU3ODI1MC1hdngtMDRvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBiMzYxOWRjLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMDRv ZjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM2NiArMCwwIEBACi1bIEJhY2twb3J0ZWQu ICBdCi0KLWNvbW1pdCA5ZDYyNTgxMmYyNDYwOGY5OWZkOTllODU5MWVmM2M4MGQ3MjlmOWI1Ci1B dXRob3I6IEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiAgIFR1ZSBNYXIgMiAx MzoxNDoyOCAyMDEwICswMDAwCi0KLSAgICBTdXBwb3J0IHg4NiBwc2V1ZG8gYnl0ZSwgd29yZCBh bmQgZHdvcmQgcmVnaXN0ZXJzLgotICAgIAotICAgIGdkYi8KLSAgICAKLSAgICAyMDEwLTAzLTAy ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gICAgCi0gICAgCSogYW1kNjQtdGRl cC5jIChhbWQ2NF9ieXRlX25hbWVzKTogTmV3LgotICAgIAkoYW1kNjRfd29yZF9uYW1lcyk6IExp a2V3aXNlLgotICAgIAkoYW1kNjRfZHdvcmRfbmFtZXMpOiBMaWtld2lzZS4KLSAgICAJKGFtZDY0 X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0gICAgCShhbWQ2NF9wc2V1ZG9fcmVn aXN0ZXJfcmVhZCk6IExpa2V3aXNlLgotICAgIAkoYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3dyaXRl KTogTGlrZXdpc2UuCi0gICAgCShhbWQ2NF9pbml0X2FiaSk6IFNldCBudW1fYnl0ZV9yZWdzLCBu dW1fd29yZF9yZWdzLCBudW1fZHdvcmRfcmVncwotICAgIAlhbmQgbnVtX21teF9yZWdzLiAgQ2Fs bCBzZXRfZ2RiYXJjaF9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCwKLSAgICAJc2V0X2dkYmFyY2hfcHNl dWRvX3JlZ2lzdGVyX3dyaXRlIGFuZAotICAgIAlzZXRfdGRlc2NfcHNldWRvX3JlZ2lzdGVyX25h bWUuICBEb24ndCBjYWxsCi0gICAgCXNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncy4gIERvbid0 IHNldCBtbTBfcmVnbnVtLgotICAgIAotICAgIAkqIGkzODYtdGRlcC5jIChpMzg2X251bV9tbXhf cmVncyk6IFJlbW92ZWQuCi0gICAgCShpMzg2X251bV9wc2V1ZG9fcmVncyk6IExpa2V3aXNlLgot ICAgIAkoaTM4Nl9ieXRlX25hbWVzKTogTmV3LgotICAgIAkoaTM4Nl93b3JkX25hbWVzKTogTGlr ZXdpc2UuCi0gICAgCShpMzg2X2J5dGVfcmVnbnVtX3ApOiBMaWtld2lzZS4KLSAgICAJKGkzODZf d29yZF9yZWdudW1fcCk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9tbXhfcmVnbnVtX3ApOiBVcGRh dGVkLgotICAgIAkoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk6IE1ha2UgaXQgZ2xvYmFsLiAg SGFuZGxlIGJ5dGUgYW5kCi0gICAgCXdvcmQgcHNldWRvLXJlZ2lzdGVycy4KLSAgICAJKGkzODZf cHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBMaWtld2lzZS4KLSAgICAJKGkzODZfcHNldWRvX3JlZ2lz dGVyX3dyaXRlKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X3BzZXVkb19yZWdpc3Rlcl90eXBlKTog SGFuZGxlIGJ5dGUsIHdvcmQgYW5kIGR3b3JkCi0gICAgCXBzZXVkby1yZWdpc3RlcnMKLSAgICAJ KGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcCk6IERvbid0IGluY2x1ZGUgcHNldWRvCi0gICAgCXJl Z2lzdGVycywgZXhjZXB0IGZvciBNWFgsIGluIGFueSByZWdpc3RlciBncm91cHMuICBEb24ndAot ICAgIAlpbmNsdWRlIHBzZXVkbyBieXRlLCB3b3JkLCBkd29yZCByZWdpc3RlcnMgaW4gZ2VuZXJh bF9yZWdncm91cC4KLSAgICAJKGkzODZfZ2RiYXJjaF9pbml0KTogU2V0IG51bV9ieXRlX3JlZ3Ms IG51bV93b3JkX3JlZ3MsCi0gICAgCW51bV9kd29yZF9yZWdzLCBhbF9yZWdudW0sIGF4X3JlZ251 bSBhbmQgZWF4X3JlZ251bS4gIFB1dCBNTVgKLSAgICAJcHNldWRvLXJlZ2lzdGVycyBhZnRlciB3 b3JkIHBzZXVkby1yZWdpc3RlcnMuICBDYWxsCi0gICAgCXNldF9nZGJhcmNoX251bV9wc2V1ZG9f cmVncyBhZnRlciBjYWxsaW5nIGdkYmFyY2hfaW5pdF9vc2FiaS4KLSAgICAKLSAgICAJKiBpMzg2 LXRkZXAuaCAoZ2RiYXJjaF90ZGVwKTogQWRkIG51bV9tbXhfcmVncywgbnVtX2J5dGVfcmVncywK LSAgICAJYWxfcmVnbnVtLCBudW1fd29yZF9yZWdzLCBheF9yZWdudW0sIG51bV9kd29yZF9yZWdz IGFuZAotICAgIAllYXhfcmVnbnVtLgotICAgIAkoaTM4Nl9ieXRlX3JlZ251bV9wKTogTmV3Lgot ICAgIAkoaTM4Nl93b3JkX3JlZ251bV9wKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X2R3b3JkX3Jl Z251bV9wKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogTGlr ZXdpc2UuCi0gICAgCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTGlrZXdpc2UuCi0gICAg CShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotICAgIAotICAgIGdkYi90 ZXN0c3VpdGUvCi0gICAgCi0gICAgMjAxMC0wMy0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotICAgIAotICAgIAkqIGdkYi5hcmNoL2FtZDY0LWJ5dGUuZXhwOiBOZXcuCi0gICAg CSogZ2RiLmFyY2gvYW1kNjQtZHdvcmQuZXhwOiBMaWtld2lzZS4KLSAgICAJKiBnZGIuYXJjaC9h bWQ2NC1wc2V1ZG8uYzogTGlrZXdpc2UuCi0gICAgCSogZ2RiLmFyY2gvYW1kNjQtd29yZC5leHA6 IExpa2V3aXNlLgotICAgIAkqIGdkYi5hcmNoL2kzODYtYnl0ZS5leHA6IExpa2V3aXNlLgotICAg IAkqIGdkYi5hcmNoL2kzODYtcHNldWRvLmM6IExpa2V3aXNlLgotICAgIAkqIGdkYi5hcmNoL2kz ODYtd29yZC5leHA6IExpa2V3aXNlLgotCi0tLS0gZ2RiLTcuMS1wMi9nZGIvYW1kNjQtdGRlcC5j CTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvYW1k NjQtdGRlcC5jCTIwMTAtMDQtMDMgMjE6MDY6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjEwLDYg KzIxMCwxMDcgQEAgYW1kNjRfYXJjaF9yZWdfdG9fcmVnbnVtIChpbnQgcmVnKQotICAgcmV0dXJu IGFtZDY0X2FyY2hfcmVnbWFwW3JlZ107Ci0gfQotIAotKy8qIFJlZ2lzdGVyIG5hbWVzIGZvciBi eXRlIHBzZXVkby1yZWdpc3RlcnMuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9i eXRlX25hbWVzW10gPQotK3sKLSsgICJhbCIsICJibCIsICJjbCIsICJkbCIsICJzaWwiLCAiZGls IiwgImJwbCIsICJzcGwiLAotKyAgInI4bCIsICJyOWwiLCAicjEwbCIsICJyMTFsIiwgInIxMmwi LCAicjEzbCIsICJyMTRsIiwgInIxNWwiCi0rfTsKLSsKLSsvKiBSZWdpc3RlciBuYW1lcyBmb3Ig d29yZCBwc2V1ZG8tcmVnaXN0ZXJzLiAgKi8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqYW1kNjRf d29yZF9uYW1lc1tdID0KLSt7Ci0rICAiYXgiLCAiYngiLCAiY3giLCAiZHgiLCAic2kiLCAiZGki LCAiYnAiLCAic3AiLCAKLSsgICJyOHciLCAicjl3IiwgInIxMHciLCAicjExdyIsICJyMTJ3Iiwg InIxM3ciLCAicjE0dyIsICJyMTV3IgotK307Ci0rCi0rLyogUmVnaXN0ZXIgbmFtZXMgZm9yIGR3 b3JkIHBzZXVkby1yZWdpc3RlcnMuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9k d29yZF9uYW1lc1tdID0KLSt7Ci0rICAiZWF4IiwgImVieCIsICJlY3giLCAiZWR4IiwgImVzaSIs ICJlZGkiLCAiZWJwIiwgImVzcCIsIAotKyAgInI4ZCIsICJyOWQiLCAicjEwZCIsICJyMTFkIiwg InIxMmQiLCAicjEzZCIsICJyMTRkIiwgInIxNWQiCi0rfTsKLSsKLSsvKiBSZXR1cm4gdGhlIG5h bWUgb2YgcmVnaXN0ZXIgUkVHTlVNLiAgKi8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rYW1k NjRfcHNldWRvX3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVn bnVtKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpOwotKyAgaWYgKGkzODZfYnl0ZV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsg ICAgcmV0dXJuIGFtZDY0X2J5dGVfbmFtZXNbcmVnbnVtIC0gdGRlcC0+YWxfcmVnbnVtXTsKLSsg IGVsc2UgaWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0 dXJuIGFtZDY0X3dvcmRfbmFtZXNbcmVnbnVtIC0gdGRlcC0+YXhfcmVnbnVtXTsKLSsgIGVsc2Ug aWYgKGkzODZfZHdvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVybiBh bWQ2NF9kd29yZF9uYW1lc1tyZWdudW0gLSB0ZGVwLT5lYXhfcmVnbnVtXTsKLSsgIGVsc2UKLSsg ICAgcmV0dXJuIGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZ251bSk7Ci0r fQotKwotK3N0YXRpYyB2b2lkCi0rYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3JlYWQgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotKwkJCSAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKwkJ CSAgICBpbnQgcmVnbnVtLCBnZGJfYnl0ZSAqYnVmKQotK3sKLSsgIGdkYl9ieXRlIHJhd19idWZb TUFYX1JFR0lTVEVSX1NJWkVdOwotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICBpZiAoaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNo LCByZWdudW0pKQotKyAgICB7Ci0rICAgICAgaW50IGdwbnVtID0gcmVnbnVtIC0gdGRlcC0+YWxf cmVnbnVtOwotKwotKyAgICAgIC8qIEV4dHJhY3QgKGFsd2F5cyBsaXR0bGUgZW5kaWFuKS4gICov Ci0rICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCBncG51bSwgcmF3X2J1Zik7Ci0r ICAgICAgbWVtY3B5IChidWYsIHJhd19idWYsIDEpOwotKyAgICB9Ci0rICBlbHNlIGlmIChpMzg2 X2R3b3JkX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotKyAgICB7Ci0rICAgICAgaW50IGdw bnVtID0gcmVnbnVtIC0gdGRlcC0+ZWF4X3JlZ251bTsKLSsgICAgICAvKiBFeHRyYWN0IChhbHdh eXMgbGl0dGxlIGVuZGlhbikuICAqLwotKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNo ZSwgZ3BudW0sIHJhd19idWYpOwotKyAgICAgIG1lbWNweSAoYnVmLCByYXdfYnVmLCA0KTsKLSsg ICAgfQotKyAgZWxzZQotKyAgICBpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkIChnZGJhcmNoLCBy ZWdjYWNoZSwgcmVnbnVtLCBidWYpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2FtZDY0X3BzZXVk b19yZWdpc3Rlcl93cml0ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJICAgICBzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKwkJCSAgICAgaW50IHJlZ251bSwgY29uc3QgZ2RiX2J5 dGUgKmJ1ZikKLSt7Ci0rICBnZGJfYnl0ZSByYXdfYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsKLSsg IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKwot KyAgaWYgKGkzODZfYnl0ZV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgewotKyAg ICAgIGludCBncG51bSA9IHJlZ251bSAtIHRkZXAtPmFsX3JlZ251bTsKLSsKLSsgICAgICAvKiBS ZWFkIC4uLiAgKi8KLSsgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIGdwbnVtLCBy YXdfYnVmKTsKLSsgICAgICAvKiAuLi4gTW9kaWZ5IC4uLiAoYWx3YXlzIGxpdHRsZSBlbmRpYW4p LiAgKi8KLSsgICAgICBtZW1jcHkgKHJhd19idWYsIGJ1ZiwgMSk7Ci0rICAgICAgLyogLi4uIFdy aXRlLiAgKi8KLSsgICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hlLCBncG51bSwgcmF3 X2J1Zik7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGkzODZfZHdvcmRfcmVnbnVtX3AgKGdkYmFyY2gs IHJlZ251bSkpCi0rICAgIHsKLSsgICAgICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5lYXhf cmVnbnVtOwotKwotKyAgICAgIC8qIFJlYWQgLi4uICAqLwotKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWdjYWNoZSwgZ3BudW0sIHJhd19idWYpOwotKyAgICAgIC8qIC4uLiBNb2RpZnkgLi4u IChhbHdheXMgbGl0dGxlIGVuZGlhbikuICAqLwotKyAgICAgIG1lbWNweSAocmF3X2J1ZiwgYnVm LCA0KTsKLSsgICAgICAvKiAuLi4gV3JpdGUuICAqLwotKyAgICAgIHJlZ2NhY2hlX3Jhd193cml0 ZSAocmVnY2FjaGUsIGdwbnVtLCByYXdfYnVmKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBpMzg2 X3BzZXVkb19yZWdpc3Rlcl93cml0ZSAoZ2RiYXJjaCwgcmVnY2FjaGUsIHJlZ251bSwgYnVmKTsK LSt9Ci0rCi0gDAotIAotIC8qIFJldHVybiB0aGUgdW5pb24gY2xhc3Mgb2YgQ0xBU1MxIGFuZCBD TEFTUzIuICBTZWUgdGhlIHBzQUJJIGZvcgotQEAgLTIxMzIsNiArMjIzMywxOSBAQCBhbWQ2NF9p bml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvCi0gICB0ZGVwLT5udW1fY29yZV9yZWdz ID0gQU1ENjRfTlVNX0dSRUdTICsgSTM4N19OVU1fUkVHUzsKLSAgIHRkZXAtPnJlZ2lzdGVyX25h bWVzID0gYW1kNjRfcmVnaXN0ZXJfbmFtZXM7Ci0gCi0rICB0ZGVwLT5udW1fYnl0ZV9yZWdzID0g MTY7Ci0rICB0ZGVwLT5udW1fd29yZF9yZWdzID0gMTY7Ci0rICB0ZGVwLT5udW1fZHdvcmRfcmVn cyA9IDE2OwotKyAgLyogQXZvaWQgd2lyaW5nIGluIHRoZSBNTVggcmVnaXN0ZXJzIGZvciBub3cu ICAqLwotKyAgdGRlcC0+bnVtX21teF9yZWdzID0gMDsKLSsKLSsgIHNldF9nZGJhcmNoX3BzZXVk b19yZWdpc3Rlcl9yZWFkIChnZGJhcmNoLAotKwkJCQkgICAgYW1kNjRfcHNldWRvX3JlZ2lzdGVy X3JlYWQpOwotKyAgc2V0X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChnZGJhcmNoLAot KwkJCQkgICAgIGFtZDY0X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk7Ci0rCi0rICBzZXRfdGRlc2Nf cHNldWRvX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIGFtZDY0X3BzZXVkb19yZWdpc3Rlcl9uYW1l KTsKLSsKLSAgIC8qIEFNRDY0IGhhcyBhbiBGUFUgYW5kIDE2IFNTRSByZWdpc3RlcnMuICAqLwot ICAgdGRlcC0+c3QwX3JlZ251bSA9IEFNRDY0X1NUMF9SRUdOVU07Ci0gICB0ZGVwLT5udW1feG1t X3JlZ3MgPSAxNjsKLUBAIC0yMTgzLDEwICsyMjk3LDYgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVj dCBnZGJhcmNoX2luZm8gaW5mbwotIAotICAgc2V0X2dkYmFyY2hfc2tpcF9wcm9sb2d1ZSAoZ2Ri YXJjaCwgYW1kNjRfc2tpcF9wcm9sb2d1ZSk7Ci0gCi0tICAvKiBBdm9pZCB3aXJpbmcgaW4gdGhl IE1NWCByZWdpc3RlcnMgZm9yIG5vdy4gICovCi0tICBzZXRfZ2RiYXJjaF9udW1fcHNldWRvX3Jl Z3MgKGdkYmFyY2gsIDApOwotLSAgdGRlcC0+bW0wX3JlZ251bSA9IC0xOwotLQotICAgdGRlcC0+ cmVjb3JkX3JlZ21hcCA9IGFtZDY0X3JlY29yZF9yZWdtYXA7Ci0gCi0gICBzZXRfZ2RiYXJjaF9k dW1teV9pZCAoZ2RiYXJjaCwgYW1kNjRfZHVtbXlfaWQpOwotLS0tIGdkYi03LjEtcDIvZ2RiL2kz ODYtdGRlcC5jCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu MS9nZGIvaTM4Ni10ZGVwLmMJMjAxMC0wNC0wMyAyMTowNjo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBA IC04MSwxNyArODEsNzIgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmkzODZfbW14X25hbWVzW10gPQot ICAgIm1tNCIsICJtbTUiLCAibW02IiwgIm1tNyIKLSB9OwotIAotLXN0YXRpYyBjb25zdCBpbnQg aTM4Nl9udW1fbW14X3JlZ3MgPSBBUlJBWV9TSVpFIChpMzg2X21teF9uYW1lcyk7Ci0rLyogUmVn aXN0ZXIgbmFtZXMgZm9yIGJ5dGUgcHNldWRvLXJlZ2lzdGVycy4gICovCi0rCi0rc3RhdGljIGNv bnN0IGNoYXIgKmkzODZfYnl0ZV9uYW1lc1tdID0KLSt7Ci0rICAiYWwiLCAiY2wiLCAiZGwiLCAi YmwiLCAKLSsgICJhaCIsICJjaCIsICJkaCIsICJiaCIKLSt9OwotKwotKy8qIFJlZ2lzdGVyIG5h bWVzIGZvciB3b3JkIHBzZXVkby1yZWdpc3RlcnMuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFy ICppMzg2X3dvcmRfbmFtZXNbXSA9Ci0rewotKyAgImF4IiwgImN4IiwgImR4IiwgImJ4IiwKLSsg ICJzcCIsICJicCIsICJzaSIsICJkaSIKLSt9OwotKwotKy8qIE1NWCByZWdpc3Rlcj8gICovCi0g Ci0gc3RhdGljIGludAotIGkzODZfbW14X3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgaW50IHJlZ251bSkKLSB7Ci0tICBpbnQgbW0wX3JlZ251bSA9IGdkYmFyY2hfdGRlcCAoZ2Ri YXJjaCktPm1tMF9yZWdudW07Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJj aF90ZGVwIChnZGJhcmNoKTsKLSsgIGludCBtbTBfcmVnbnVtID0gdGRlcC0+bW0wX3JlZ251bTsK LSAKLSAgIGlmIChtbTBfcmVnbnVtIDwgMCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICByZXR1cm4g KHJlZ251bSA+PSBtbTBfcmVnbnVtICYmIHJlZ251bSA8IG1tMF9yZWdudW0gKyBpMzg2X251bV9t bXhfcmVncyk7Ci0rICByZWdudW0gLT0gbW0wX3JlZ251bTsKLSsgIHJldHVybiByZWdudW0gPj0g MCAmJiByZWdudW0gPCB0ZGVwLT5udW1fbW14X3JlZ3M7Ci0rfQotKwotKy8qIEJ5dGUgcmVnaXN0 ZXI/ICAqLwotKwotK2ludAotK2kzODZfYnl0ZV9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIGludCByZWdudW0pCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdk YmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICByZWdudW0gLT0gdGRlcC0+YWxfcmVnbnVtOwot KyAgcmV0dXJuIHJlZ251bSA+PSAwICYmIHJlZ251bSA8IHRkZXAtPm51bV9ieXRlX3JlZ3M7Ci0r fQotKwotKy8qIFdvcmQgcmVnaXN0ZXI/ICAqLwotKwotK2ludAotK2kzODZfd29yZF9yZWdudW1f cCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCi0rewotKyAgc3RydWN0IGdk YmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICByZWdudW0g LT0gdGRlcC0+YXhfcmVnbnVtOwotKyAgcmV0dXJuIHJlZ251bSA+PSAwICYmIHJlZ251bSA8IHRk ZXAtPm51bV93b3JkX3JlZ3M7Ci0rfQotKwotKy8qIER3b3JkIHJlZ2lzdGVyPyAgKi8KLSsKLStp bnQKLStpMzg2X2R3b3JkX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJl Z251bSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChn ZGJhcmNoKTsKLSsgIGludCBlYXhfcmVnbnVtID0gdGRlcC0+ZWF4X3JlZ251bTsKLSsKLSsgIGlm IChlYXhfcmVnbnVtIDwgMCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZWdudW0gLT0gZWF4X3Jl Z251bTsKLSsgIHJldHVybiByZWdudW0gPj0gMCAmJiByZWdudW0gPCB0ZGVwLT5udW1fZHdvcmRf cmVnczsKLSB9Ci0gCi0gLyogU1NFIHJlZ2lzdGVyPyAgKi8KLUBAIC0xNDcsMTEgKzIwMiwxOCBA QCBpMzg2X2ZwY19yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCi0gCi0gLyogUmV0dXJu IHRoZSBuYW1lIG9mIHJlZ2lzdGVyIFJFR05VTS4gICovCi0gCi0tc3RhdGljIGNvbnN0IGNoYXIg KgotK2NvbnN0IGNoYXIgKgotIGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotIHsKLS0gIGdkYl9hc3NlcnQgKGkzODZfbW14X3Jl Z251bV9wIChnZGJhcmNoLCByZWdudW0pKTsKLS0gIHJldHVybiBpMzg2X21teF9uYW1lc1tyZWdu dW0gLSBJMzg3X01NMF9SRUdOVU0gKGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCkpXTsKLSsgIHN0cnVj dCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgaWYgKGkz ODZfbW14X3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotKyAgICByZXR1cm4gaTM4Nl9tbXhf bmFtZXNbcmVnbnVtIC0gSTM4N19NTTBfUkVHTlVNICh0ZGVwKV07Ci0rICBlbHNlIGlmIChpMzg2 X2J5dGVfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVybiBpMzg2X2J5dGVf bmFtZXNbcmVnbnVtIC0gdGRlcC0+YWxfcmVnbnVtXTsKLSsgIGVsc2UgaWYgKGkzODZfd29yZF9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuIGkzODZfd29yZF9uYW1lc1ty ZWdudW0gLSB0ZGVwLT5heF9yZWdudW1dOwotKwotKyAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9f LCBfX0xJTkVfXywgXygiaW52YWxpZCByZWdudW0iKSk7Ci0gfQotIAotIC8qIENvbnZlcnQgYSBk YnggcmVnaXN0ZXIgbnVtYmVyIFJFRyB0byB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0ZXIKLUBAIC0y MTY5LDggKzIyMzEsMjAgQEAgaTM4Nl9tbXhfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Ci0gc3RhdGljIHN0cnVjdCB0eXBlICoKLSBpMzg2X3BzZXVkb19yZWdpc3Rlcl90eXBlIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKLSB7Ci0tICBnZGJfYXNzZXJ0IChpMzg2 X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0tICByZXR1cm4gaTM4Nl9tbXhfdHlw ZSAoZ2RiYXJjaCk7Ci0rICBpZiAoaTM4Nl9tbXhfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkp Ci0rICAgIHJldHVybiBpMzg2X21teF90eXBlIChnZGJhcmNoKTsKLSsgIGVsc2UKLSsgICAgewot KyAgICAgIGNvbnN0IHN0cnVjdCBidWlsdGluX3R5cGUgKmJ0ID0gYnVpbHRpbl90eXBlIChnZGJh cmNoKTsKLSsgICAgICBpZiAoaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQot KwlyZXR1cm4gYnQtPmJ1aWx0aW5faW50ODsKLSsgICAgICBlbHNlIGlmIChpMzg2X3dvcmRfcmVn bnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rCXJldHVybiBidC0+YnVpbHRpbl9pbnQxNjsKLSsg ICAgICBlbHNlIGlmIChpMzg2X2R3b3JkX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotKwly ZXR1cm4gYnQtPmJ1aWx0aW5faW50MzI7Ci0rICAgIH0KLSsKLSsgIGludGVybmFsX2Vycm9yIChf X0ZJTEVfXywgX19MSU5FX18sIF8oImludmFsaWQgcmVnbnVtIikpOwotIH0KLSAKLSAvKiBNYXAg YSBjb29rZWQgcmVnaXN0ZXIgb250byBhIHJhdyByZWdpc3RlciBvciBtZW1vcnkuICBGb3IgdGhl IGkzODYsCi1AQCAtMjE5Miw0MSArMjI2NiwxMDQgQEAgaTM4Nl9tbXhfcmVnbnVtX3RvX2ZwX3Jl Z251bSAoc3RydWN0IHJlZwotICAgcmV0dXJuIChJMzg3X1NUMF9SRUdOVU0gKHRkZXApICsgZnBy ZWcpOwotIH0KLSAKLS1zdGF0aWMgdm9pZAotK3ZvaWQKLSBpMzg2X3BzZXVkb19yZWdpc3Rlcl9y ZWFkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwK LSAJCQkgICBpbnQgcmVnbnVtLCBnZGJfYnl0ZSAqYnVmKQotIHsKLSsgIGdkYl9ieXRlIHJhd19i dWZbTUFYX1JFR0lTVEVSX1NJWkVdOwotKwotICAgaWYgKGkzODZfbW14X3JlZ251bV9wIChnZGJh cmNoLCByZWdudW0pKQotICAgICB7Ci0tICAgICAgZ2RiX2J5dGUgbW14X2J1ZltNQVhfUkVHSVNU RVJfU0laRV07Ci0gICAgICAgaW50IGZwbnVtID0gaTM4Nl9tbXhfcmVnbnVtX3RvX2ZwX3JlZ251 bSAocmVnY2FjaGUsIHJlZ251bSk7Ci0gCi0gICAgICAgLyogRXh0cmFjdCAoYWx3YXlzIGxpdHRs ZSBlbmRpYW4pLiAgKi8KLS0gICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIGZwbnVt LCBtbXhfYnVmKTsKLS0gICAgICBtZW1jcHkgKGJ1ZiwgbW14X2J1ZiwgcmVnaXN0ZXJfc2l6ZSAo Z2RiYXJjaCwgcmVnbnVtKSk7Ci0rICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCBm cG51bSwgcmF3X2J1Zik7Ci0rICAgICAgbWVtY3B5IChidWYsIHJhd19idWYsIHJlZ2lzdGVyX3Np emUgKGdkYmFyY2gsIHJlZ251bSkpOwotICAgICB9Ci0gICBlbHNlCi0tICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCBidWYpOwotKyAgICB7Ci0rICAgICAgc3RydWN0IGdk YmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICAgICAgaWYg KGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsJewotKwkgIGludCBncG51 bSA9IHJlZ251bSAtIHRkZXAtPmF4X3JlZ251bTsKLSsKLSsJICAvKiBFeHRyYWN0IChhbHdheXMg bGl0dGxlIGVuZGlhbikuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgZ3Bu dW0sIHJhd19idWYpOwotKwkgIG1lbWNweSAoYnVmLCByYXdfYnVmLCAyKTsKLSsJfQotKyAgICAg IGVsc2UgaWYgKGkzODZfYnl0ZV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsJewotKwkg IC8qIENoZWNrIGJ5dGUgcHNldWRvIHJlZ2lzdGVycyBsYXN0IHNpbmNlIHRoaXMgZnVuY3Rpb24g d2lsbAotKwkgICAgIGJlIGNhbGxlZCBmcm9tIGFtZDY0X3BzZXVkb19yZWdpc3Rlcl9yZWFkLCB3 aGljaCBoYW5kbGVzCi0rCSAgICAgYnl0ZSBwc2V1ZG8gcmVnaXN0ZXJzIGRpZmZlcmVudGx5LiAg Ki8KLSsJICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5hbF9yZWdudW07Ci0rCi0rCSAgLyog RXh0cmFjdCAoYWx3YXlzIGxpdHRsZSBlbmRpYW4pLiAgV2UgcmVhZCBib3RoIGxvd2VyIGFuZAot KwkgICAgIHVwcGVyIHJlZ2lzdGVycy4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2Nh Y2hlLCBncG51bSAlIDQsIHJhd19idWYpOwotKwkgIGlmIChncG51bSA+PSA0KQotKwkgICAgbWVt Y3B5IChidWYsIHJhd19idWYgKyAxLCAxKTsKLSsJICBlbHNlCi0rCSAgICBtZW1jcHkgKGJ1Ziwg cmF3X2J1ZiwgMSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sIF8oImludmFsaWQgcmVnbnVtIikpOwotKyAgICB9Ci0gfQotIAotLXN0YXRp YyB2b2lkCi0rdm9pZAotIGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSAJCQkgICAgaW50IHJlZ251 bSwgY29uc3QgZ2RiX2J5dGUgKmJ1ZikKLSB7Ci0rICBnZGJfYnl0ZSByYXdfYnVmW01BWF9SRUdJ U1RFUl9TSVpFXTsKLSsKLSAgIGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVt KSkKLSAgICAgewotLSAgICAgIGdkYl9ieXRlIG1teF9idWZbTUFYX1JFR0lTVEVSX1NJWkVdOwot ICAgICAgIGludCBmcG51bSA9IGkzODZfbW14X3JlZ251bV90b19mcF9yZWdudW0gKHJlZ2NhY2hl LCByZWdudW0pOwotIAotICAgICAgIC8qIFJlYWQgLi4uICAqLwotLSAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWdjYWNoZSwgZnBudW0sIG1teF9idWYpOwotKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWdjYWNoZSwgZnBudW0sIHJhd19idWYpOwotICAgICAgIC8qIC4uLiBNb2RpZnkgLi4u IChhbHdheXMgbGl0dGxlIGVuZGlhbikuICAqLwotLSAgICAgIG1lbWNweSAobW14X2J1ZiwgYnVm LCByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCByZWdudW0pKTsKLSsgICAgICBtZW1jcHkgKHJhd19i dWYsIGJ1ZiwgcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0gICAgICAgLyogLi4u IFdyaXRlLiAgKi8KLS0gICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hlLCBmcG51bSwg bW14X2J1Zik7Ci0rICAgICAgcmVnY2FjaGVfcmF3X3dyaXRlIChyZWdjYWNoZSwgZnBudW0sIHJh d19idWYpOwotICAgICB9Ci0gICBlbHNlCi0tICAgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2Fj aGUsIHJlZ251bSwgYnVmKTsKLSsgICAgewotKyAgICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRk ZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKwotKyAgICAgIGlmIChpMzg2X3dvcmRfcmVn bnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rCXsKLSsJICBpbnQgZ3BudW0gPSByZWdudW0gLSB0 ZGVwLT5heF9yZWdudW07Ci0rCi0rCSAgLyogUmVhZCAuLi4gICovCi0rCSAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlZ2NhY2hlLCBncG51bSwgcmF3X2J1Zik7Ci0rCSAgLyogLi4uIE1vZGlmeSAuLi4g KGFsd2F5cyBsaXR0bGUgZW5kaWFuKS4gICovCi0rCSAgbWVtY3B5IChyYXdfYnVmLCBidWYsIDIp OwotKwkgIC8qIC4uLiBXcml0ZS4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3dyaXRlIChyZWdjYWNo ZSwgZ3BudW0sIHJhd19idWYpOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoaTM4Nl9ieXRlX3JlZ251 bV9wIChnZGJhcmNoLCByZWdudW0pKQotKwl7Ci0rCSAgLyogQ2hlY2sgYnl0ZSBwc2V1ZG8gcmVn aXN0ZXJzIGxhc3Qgc2luY2UgdGhpcyBmdW5jdGlvbiB3aWxsCi0rCSAgICAgYmUgY2FsbGVkIGZy b20gYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3JlYWQsIHdoaWNoIGhhbmRsZXMKLSsJICAgICBieXRl IHBzZXVkbyByZWdpc3RlcnMgZGlmZmVyZW50bHkuICAqLwotKwkgIGludCBncG51bSA9IHJlZ251 bSAtIHRkZXAtPmFsX3JlZ251bTsKLSsKLSsJICAvKiBSZWFkIC4uLiAgV2UgcmVhZCBib3RoIGxv d2VyIGFuZCB1cHBlciByZWdpc3RlcnMuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdj YWNoZSwgZ3BudW0gJSA0LCByYXdfYnVmKTsKLSsJICAvKiAuLi4gTW9kaWZ5IC4uLiAoYWx3YXlz IGxpdHRsZSBlbmRpYW4pLiAgKi8KLSsJICBpZiAoZ3BudW0gPj0gNCkKLSsJICAgIG1lbWNweSAo cmF3X2J1ZiArIDEsIGJ1ZiwgMSk7Ci0rCSAgZWxzZQotKwkgICAgbWVtY3B5IChyYXdfYnVmLCBi dWYsIDEpOwotKwkgIC8qIC4uLiBXcml0ZS4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3dyaXRlIChy ZWdjYWNoZSwgZ3BudW0gJSA0LCByYXdfYnVmKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJaW50ZXJu YWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygiaW52YWxpZCByZWdudW0iKSk7Ci0rICAg IH0KLSB9Ci0gDAotIAotQEAgLTI2NjMsMjIgKzI4MDAsNDYgQEAgaW50Ci0gaTM4Nl9yZWdpc3Rl cl9yZWdncm91cF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKLSAJCQkg IHN0cnVjdCByZWdncm91cCAqZ3JvdXApCi0gewotLSAgaW50IHNzZV9yZWdudW1fcCA9IChpMzg2 X3NzZV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKQotLQkJICAgICAgfHwgaTM4Nl9teGNzcl9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0tICBpbnQgZnBfcmVnbnVtX3AgPSAoaTM4Nl9m cF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKQotLQkJICAgICB8fCBpMzg2X2ZwY19yZWdudW1f cCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0tICBpbnQgbW14X3JlZ251bV9wID0gKGkzODZfbW14X3Jl Z251bV9wIChnZGJhcmNoLCByZWdudW0pKTsKLSsgIGludCBzc2VfcmVnbnVtX3AsIGZwX3JlZ251 bV9wLCBtbXhfcmVnbnVtX3AsIGJ5dGVfcmVnbnVtX3AsCi0rICAgICAgd29yZF9yZWdudW1fcCwg ZHdvcmRfcmVnbnVtX3A7Ci0rCi0rICAvKiBEb24ndCBpbmNsdWRlIHBzZXVkbyByZWdpc3RlcnMs IGV4Y2VwdCBmb3IgTU1YLCBpbiBhbnkgcmVnaXN0ZXIKLSsgICAgIGdyb3Vwcy4gICovCi0rICBi eXRlX3JlZ251bV9wID0gaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pOwotKyAg aWYgKGJ5dGVfcmVnbnVtX3ApCi0rICAgIHJldHVybiAwOwotIAotKyAgd29yZF9yZWdudW1fcCA9 IGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSsgIGlmICh3b3JkX3JlZ251 bV9wKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGR3b3JkX3JlZ251bV9wID0gaTM4Nl9kd29yZF9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSsgIGlmIChkd29yZF9yZWdudW1fcCkKLSsgICAg cmV0dXJuIDA7Ci0rCi0rICBtbXhfcmVnbnVtX3AgPSBpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJj aCwgcmVnbnVtKTsKLSAgIGlmIChncm91cCA9PSBpMzg2X21teF9yZWdncm91cCkKLSAgICAgcmV0 dXJuIG1teF9yZWdudW1fcDsKLSsKLSsgIHNzZV9yZWdudW1fcCA9IChpMzg2X3NzZV9yZWdudW1f cCAoZ2RiYXJjaCwgcmVnbnVtKQotKwkJICB8fCBpMzg2X214Y3NyX3JlZ251bV9wIChnZGJhcmNo LCByZWdudW0pKTsKLSAgIGlmIChncm91cCA9PSBpMzg2X3NzZV9yZWdncm91cCkKLSAgICAgcmV0 dXJuIHNzZV9yZWdudW1fcDsKLSAgIGlmIChncm91cCA9PSB2ZWN0b3JfcmVnZ3JvdXApCi0tICAg IHJldHVybiAobW14X3JlZ251bV9wIHx8IHNzZV9yZWdudW1fcCk7Ci0rICAgIHJldHVybiBtbXhf cmVnbnVtX3AgfHwgc3NlX3JlZ251bV9wOwotKwotKyAgZnBfcmVnbnVtX3AgPSAoaTM4Nl9mcF9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKQotKwkJIHx8IGkzODZfZnBjX3JlZ251bV9wIChnZGJh cmNoLCByZWdudW0pKTsKLSAgIGlmIChncm91cCA9PSBmbG9hdF9yZWdncm91cCkKLSAgICAgcmV0 dXJuIGZwX3JlZ251bV9wOwotKwotICAgaWYgKGdyb3VwID09IGdlbmVyYWxfcmVnZ3JvdXApCi0t ICAgIHJldHVybiAoIWZwX3JlZ251bV9wICYmICFtbXhfcmVnbnVtX3AgJiYgIXNzZV9yZWdudW1f cCk7Ci0rICAgIHJldHVybiAoIWZwX3JlZ251bV9wCi0rCSAgICAmJiAhbW14X3JlZ251bV9wCi0r CSAgICAmJiAhc3NlX3JlZ251bV9wCi0rCSAgICAmJiAhYnl0ZV9yZWdudW1fcAotKwkgICAgJiYg IXdvcmRfcmVnbnVtX3AKLSsJICAgICYmICFkd29yZF9yZWdudW1fcCk7Ci0gCi0gICByZXR1cm4g ZGVmYXVsdF9yZWdpc3Rlcl9yZWdncm91cF9wIChnZGJhcmNoLCByZWdudW0sIGdyb3VwKTsKLSB9 Ci1AQCAtNTUyNyw2ICs1Njg4LDcgQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNo X2luZm8gaQotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gICBzdHJ1Y3QgdGRlc2NfYXJj aF9kYXRhICp0ZGVzY19kYXRhOwotICAgY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzYzsK LSsgIGludCBtbTBfcmVnbnVtOwotIAotICAgLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGNhbmRp ZGF0ZSwgdXNlIGl0LiAgKi8KLSAgIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5m byAoYXJjaGVzLCAmaW5mbyk7Ci1AQCAtNTU2MywxMSArNTcyNSw2IEBAIGkzODZfZ2RiYXJjaF9p bml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKLSAKLSAgIHRkZXAtPnN0MF9yZWdudW0gPSBJMzg2 X1NUMF9SRUdOVU07Ci0gCi0tICAvKiBUaGUgTU1YIHJlZ2lzdGVycyBhcmUgaW1wbGVtZW50ZWQg YXMgcHNldWRvLXJlZ2lzdGVycy4gIFB1dCBvZmYKLS0gICAgIGNhbGN1bGF0aW5nIHRoZSByZWdp c3RlciBudW1iZXIgZm9yICVtbTAgdW50aWwgd2Uga25vdyB0aGUgbnVtYmVyCi0tICAgICBvZiBy YXcgcmVnaXN0ZXJzLiAgKi8KLS0gIHRkZXAtPm1tMF9yZWdudW0gPSAwOwotLQotICAgLyogSTM4 Nl9OVU1fWFJFR1MgaW5jbHVkZXMgJW14Y3NyLCBzbyBzdWJzdHJhY3Qgb25lLiAgKi8KLSAgIHRk ZXAtPm51bV94bW1fcmVncyA9IEkzODZfTlVNX1hSRUdTIC0gMTsKLSAKLUBAIC01NjkzLDggKzU4 NTAsNyBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gCi0gICBm cmFtZV9iYXNlX3NldF9kZWZhdWx0IChnZGJhcmNoLCAmaTM4Nl9mcmFtZV9iYXNlKTsKLSAKLS0g IC8qIFdpcmUgaW4gdGhlIE1NWCByZWdpc3RlcnMuICAqLwotLSAgc2V0X2dkYmFyY2hfbnVtX3Bz ZXVkb19yZWdzIChnZGJhcmNoLCBpMzg2X251bV9tbXhfcmVncyk7Ci0rICAvKiBQc2V1ZG8gcmVn aXN0ZXJzIG1heSBiZSBjaGFuZ2VkIGJ5IGFtZDY0X2luaXRfYWJpLiAgKi8KLSAgIHNldF9nZGJh cmNoX3BzZXVkb19yZWdpc3Rlcl9yZWFkIChnZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9y ZWFkKTsKLSAgIHNldF9nZGJhcmNoX3BzZXVkb19yZWdpc3Rlcl93cml0ZSAoZ2RiYXJjaCwgaTM4 Nl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOwotIAotQEAgLTU3MTQsMTIgKzU4NzAsMjQgQEAgaTM4 Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgdGRlcC0+bnVtX2NvcmVf cmVncyA9IEkzODZfTlVNX0dSRUdTICsgSTM4N19OVU1fUkVHUzsKLSAgIHRkZXAtPnJlZ2lzdGVy X25hbWVzID0gaTM4Nl9yZWdpc3Rlcl9uYW1lczsKLSAKLSsgIHRkZXAtPm51bV9ieXRlX3JlZ3Mg PSA4OwotKyAgdGRlcC0+bnVtX3dvcmRfcmVncyA9IDg7Ci0rICB0ZGVwLT5udW1fZHdvcmRfcmVn cyA9IDA7Ci0rICB0ZGVwLT5udW1fbW14X3JlZ3MgPSA4OwotKwotICAgdGRlc2NfZGF0YSA9IHRk ZXNjX2RhdGFfYWxsb2MgKCk7Ci0gCi0gICAvKiBIb29rIGluIEFCSS1zcGVjaWZpYyBvdmVycmlk ZXMsIGlmIHRoZXkgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQuICAqLwotICAgaW5mby50ZGVwX2luZm8g PSAodm9pZCAqKSB0ZGVzY19kYXRhOwotICAgZ2RiYXJjaF9pbml0X29zYWJpIChpbmZvLCBnZGJh cmNoKTsKLSAKLSsgIC8qIFdpcmUgaW4gcHNldWRvIHJlZ2lzdGVycy4gIE51bWJlciBvZiBwc2V1 ZG8gcmVnaXN0ZXJzIG1heSBiZQotKyAgICAgY2hhbmdlZC4gICovCi0rICBzZXRfZ2RiYXJjaF9u dW1fcHNldWRvX3JlZ3MgKGdkYmFyY2gsICh0ZGVwLT5udW1fYnl0ZV9yZWdzCi0rCQkJCQkgKyB0 ZGVwLT5udW1fd29yZF9yZWdzCi0rCQkJCQkgKyB0ZGVwLT5udW1fZHdvcmRfcmVncwotKwkJCQkJ ICsgdGRlcC0+bnVtX21teF9yZWdzKSk7Ci0rCi0gICAvKiBUYXJnZXQgZGVzY3JpcHRpb24gbWF5 IGJlIGNoYW5nZWQuICAqLwotICAgdGRlc2MgPSB0ZGVwLT50ZGVzYzsKLSAKLUBAIC01NzM2LDYg KzU5MDQsMjggQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAg LyogT3ZlcnJpZGUgZ2RiYXJjaF9yZWdpc3Rlcl9yZWdncm91cF9wIHNldCBpbiB0ZGVzY191c2Vf cmVnaXN0ZXJzLiAgKi8KLSAgIHNldF9nZGJhcmNoX3JlZ2lzdGVyX3JlZ2dyb3VwX3AgKGdkYmFy Y2gsIHRkZXAtPnJlZ2lzdGVyX3JlZ2dyb3VwX3ApOwotIAotKyAgLyogTWFrZSAlYWwgdGhlIGZp cnN0IHBzZXVkby1yZWdpc3Rlci4gICovCi0rICB0ZGVwLT5hbF9yZWdudW0gPSBnZGJhcmNoX251 bV9yZWdzIChnZGJhcmNoKTsKLSsgIHRkZXAtPmF4X3JlZ251bSA9IHRkZXAtPmFsX3JlZ251bSAr IHRkZXAtPm51bV9ieXRlX3JlZ3M7Ci0rCi0rICBtbTBfcmVnbnVtID0gdGRlcC0+YXhfcmVnbnVt ICsgdGRlcC0+bnVtX3dvcmRfcmVnczsKLSsgIGlmICh0ZGVwLT5udW1fZHdvcmRfcmVncykKLSsg ICAgewotKyAgICAgIC8qIFN1cHBvcnQgZHdvcmQgcHNldWRvLXJlZ2lzdGVzciBpZiBpdCBoYXNu J3QgYmVlbiBkaXNhYmxlZCwgICovCi0rICAgICAgdGRlcC0+ZWF4X3JlZ251bSA9IG1tMF9yZWdu dW07Ci0rICAgICAgbW0wX3JlZ251bSA9IHRkZXAtPmVheF9yZWdudW0gKyB0ZGVwLT5udW1fZHdv cmRfcmVnczsKLSsgICAgfQotKyAgZWxzZQotKyAgICB0ZGVwLT5lYXhfcmVnbnVtID0gLTE7Ci0r Ci0rICBpZiAodGRlcC0+bnVtX21teF9yZWdzICE9IDApCi0rICAgIHsKLSsgICAgICAvKiBTdXBw b3J0IE1NWCBwc2V1ZG8tcmVnaXN0ZXNyIGlmIE1NWCBoYXNuJ3QgYmVlbiBkaXNhYmxlZCwgICov Ci0rICAgICAgdGRlcC0+bW0wX3JlZ251bSA9IG1tMF9yZWdudW07Ci0rICAgIH0KLSsgIGVsc2UK LSsgICAgdGRlcC0+bW0wX3JlZ251bSA9IC0xOwotKwotICAgLyogSG9vayBpbiB0aGUgbGVnYWN5 IHByb2xvZ3VlLWJhc2VkIHVud2luZGVycyBsYXN0IChmYWxsYmFjaykuICAqLwotICAgZnJhbWVf dW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJmkzODZfc2lndHJhbXBfZnJhbWVfdW53 aW5kKTsKLSAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZpMzg2X2Zy YW1lX3Vud2luZCk7Ci1AQCAtNTc0NywxMSArNTkzNyw2IEBAIGkzODZfZ2RiYXJjaF9pbml0IChz dHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKLSAgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9z ZWN0aW9uIChnZGJhcmNoLAotIAkJCQkJICBpMzg2X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbik7 Ci0gCi0tICAvKiBVbmxlc3Mgc3VwcG9ydCBmb3IgTU1YIGhhcyBiZWVuIGRpc2FibGVkLCBtYWtl ICVtbTAgdGhlIGZpcnN0Ci0tICAgICBwc2V1ZG8tcmVnaXN0ZXIuICAqLwotLSAgaWYgKHRkZXAt Pm1tMF9yZWdudW0gPT0gMCkKLS0gICAgdGRlcC0+bW0wX3JlZ251bSA9IGdkYmFyY2hfbnVtX3Jl Z3MgKGdkYmFyY2gpOwotLQotICAgc2V0X2dkYmFyY2hfc2tpcF9wZXJtYW5lbnRfYnJlYWtwb2lu dCAoZ2RiYXJjaCwKLSAJCQkJCSBpMzg2X3NraXBfcGVybWFuZW50X2JyZWFrcG9pbnQpOwotIAot LS0tIGdkYi03LjEtcDIvZ2RiL2kzODYtdGRlcC5oCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvaTM4Ni10ZGVwLmgJMjAxMC0wNC0wMyAyMTowNjo1 Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTQsMTAgKzExNCwzMiBAQCBzdHJ1Y3QgZ2RiYXJjaF90 ZGVwCi0gICAgICBhYnNlbmNlIG9mIGFuIEZQVS4gICovCi0gICBpbnQgc3QwX3JlZ251bTsKLSAK LSsgIC8qIE51bWJlciBvZiBNTVggcmVnaXN0ZXJzLiAgKi8KLSsgIGludCBudW1fbW14X3JlZ3M7 Ci0rCi0gICAvKiBSZWdpc3RlciBudW1iZXIgZm9yICVtbTAuICBTZXQgdGhpcyB0byAtMSB0byBp bmRpY2F0ZSB0aGUgYWJzZW5jZQotICAgICAgb2YgTU1YIHN1cHBvcnQuICAqLwotICAgaW50IG1t MF9yZWdudW07Ci0gCi0rICAvKiBOdW1iZXIgb2YgYnl0ZSByZWdpc3RlcnMuICAqLwotKyAgaW50 IG51bV9ieXRlX3JlZ3M7Ci0rCi0rICAvKiBSZWdpc3RlciBwc2V1ZG8gbnVtYmVyIGZvciAlYWwu ICAqLwotKyAgaW50IGFsX3JlZ251bTsKLSsKLSsgIC8qIE51bWJlciBvZiBwc2V1ZG8gd29yZCBy ZWdpc3RlcnMuICAqLwotKyAgaW50IG51bV93b3JkX3JlZ3M7Ci0rCi0rICAvKiBSZWdpc3RlciBu dW1iZXIgZm9yICVheC4gICovCi0rICBpbnQgYXhfcmVnbnVtOwotKwotKyAgLyogTnVtYmVyIG9m IHBzZXVkbyBkd29yZCByZWdpc3RlcnMuICAqLwotKyAgaW50IG51bV9kd29yZF9yZWdzOwotKwot KyAgLyogUmVnaXN0ZXIgbnVtYmVyIGZvciAlZWF4LiAgU2V0IHRoaXMgdG8gLTEgdG8gaW5kaWNh dGUgdGhlIGFic2VuY2UKLSsgICAgIG9mIHBzZXVkbyBkd29yZCByZWdpc3RlciBzdXBwb3J0LiAg Ki8KLSsgIGludCBlYXhfcmVnbnVtOwotKwotICAgLyogTnVtYmVyIG9mIGNvcmUgcmVnaXN0ZXJz LiAgKi8KLSAgIGludCBudW1fY29yZV9yZWdzOwotIAotQEAgLTI1Myw2ICsyNzUsMjEgQEAgZW51 bSByZWNvcmRfaTM4Nl9yZWdudW0KLSAvKiBUeXBlcyBmb3IgaTM4Ni1zcGVjaWZpYyByZWdpc3Rl cnMuICAqLwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqaTM4N19leHRfdHlwZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpOwotIAotKy8qIENoZWNrcyBvZiBkaWZmZXJlbnQgcHNldWRvLXJlZ2lzdGVy cy4gICovCi0rZXh0ZXJuIGludCBpMzg2X2J5dGVfcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBpbnQgcmVnbnVtKTsKLStleHRlcm4gaW50IGkzODZfd29yZF9yZWdudW1fcCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pOwotK2V4dGVybiBpbnQgaTM4Nl9kd29y ZF9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pOwotKwotK2V4 dGVybiBjb25zdCBjaGFyICppMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKLSsJCQkJCSAgICAgIGludCByZWdudW0pOwotKwotK2V4dGVybiB2b2lkIGkz ODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCQkg ICAgICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsJCQkJICAgICAgIGludCByZWdudW0s IGdkYl9ieXRlICpidWYpOwotK2V4dGVybiB2b2lkIGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkJCXN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsCi0rCQkJCQlpbnQgcmVnbnVtLCBjb25zdCBnZGJfYnl0ZSAqYnVmKTsKLSsKLSAvKiBTZWdt ZW50IHNlbGVjdG9ycy4gICovCi0gI2RlZmluZSBJMzg2X1NFTF9SUEwJMHgwMDAzICAvKiBSZXF1 ZXN0ZXIncyBQcml2aWxlZ2UgTGV2ZWwgbWFzay4gICovCi0gI2RlZmluZSBJMzg2X1NFTF9VUEwJ MHgwMDAzCS8qIFVzZXIgUHJpdmlsaWdlIExldmVsLiAqLwotLS0tIGdkYi03LjEtcDIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1ieXRlLmV4cAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1ieXRl LmV4cAkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxMjEg QEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMK LSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFBsZWFzZSBlbWFpbCBhbnkgYnVn cywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyMgYnVnLWdk YkBnbnUub3JnCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4K LSsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStz ZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0raWYgeyAhW2lzdGFyZ2V0IHg4Nl82NC0q LSogXSB9IHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcgYW1kNjQgYnl0ZSByZWdpc3RlciB0ZXN0 cy4iCi0rICAgIHJldHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUgImFtZDY0LWJ5dGUiCi0rc2V0 IHNyY2ZpbGUgYW1kNjQtcHNldWRvLmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9Ci0rCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnXV0gIT0g IiIgfSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9Ci0rICAgIHJldHVybgotK30KLSsKLStn ZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAg ICBnZGJfc3VwcHJlc3NfdGVzdHMKLSt9Ci0rCi0rc2V0IG5yX3JlZ3MgMTQKLStzZXQgYnl0ZV9y ZWdzKDEpIGFsCi0rc2V0IGJ5dGVfcmVncygyKSBibAotK3NldCBieXRlX3JlZ3MoMykgY2wKLStz ZXQgYnl0ZV9yZWdzKDQpIGRsCi0rc2V0IGJ5dGVfcmVncyg1KSBzaWwKLStzZXQgYnl0ZV9yZWdz KDYpIGRpbAotK3NldCBieXRlX3JlZ3MoNykgcjhsCi0rc2V0IGJ5dGVfcmVncyg4KSByOWwKLStz ZXQgYnl0ZV9yZWdzKDkpIHIxMGwKLStzZXQgYnl0ZV9yZWdzKDEwKSByMTFsCi0rc2V0IGJ5dGVf cmVncygxMSkgcjEybAotK3NldCBieXRlX3JlZ3MoMTIpIHIxM2wKLStzZXQgYnl0ZV9yZWdzKDEz KSByMTRsCi0rc2V0IGJ5dGVfcmVncygxNCkgcjE1bAotKwotK2dkYl90ZXN0ICJicmVhayBbZ2Ri X2dldF9saW5lX251bWJlciAiZmlyc3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAgICAi QnJlYWtwb2ludCAuKiBhdCAuKiR7c3JjZmlsZX0uKiIgXAotKyAgICAgICAgICJzZXQgZmlyc3Qg YnJlYWtwb2ludCBpbiBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51 ZSB0byBmaXJzdCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIg PD0gNiAgfSB7IGluY3IgciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50L3ggXCQkYnl0ZV9yZWdz KCRyKSIgXAotKyAgICAgICAgIi4uID0gMHhbZm9ybWF0ICV4ICRyXTEiIFwKLSsgICAgICAgICJj aGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVncygkcikiCi0rfQotKwotK2dkYl90ZXN0ICJicmVh ayBbZ2RiX2dldF9saW5lX251bWJlciAic2Vjb25kIGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAg ICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0 IHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImNvbnRpbnVlIHRvIHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIg NyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJwcmlu dC94IFwkJGJ5dGVfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9IDB4W2Zvcm1hdCAleCAkcl0x IiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotK30KLSsK LStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gewotKyAgZ2RiX3Rlc3Qg InNldCB2YXIgXCQkYnl0ZV9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRyKSIK LSt9Ci0rCi0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ0aGlyZCBicmVh a3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNmaWxl fS4qIiBcCi0rICAgICAgICAgInNldCB0aGlyZCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIHRoaXJkIGJyZWFrcG9pbnQgaW4gbWFp biIKLSsKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gewotKyAgICBn ZGJfdGVzdCAicHJpbnQgXCQkYnl0ZV9yZWdzKCRyKSIgXAotKyAgICAgICAgIi4uID0gJHIiIFwK LSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVncygkcikiCi0rfQotKwotK2Zv ciB7IHNldCByIDcgfSB7ICRyIDw9ICRucl9yZWdzICB9IHsgaW5jciByIH0gewotKyAgZ2RiX3Rl c3QgInNldCB2YXIgXCQkYnl0ZV9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRy KSIKLSt9Ci0rCi0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmb3J0aCBi cmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNm aWxlfS4qIiBcCi0rICAgICAgICAgInNldCBmb3J0aCBicmVha3BvaW50IGluIG1haW4iCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIGZvcnRoIGJyZWFrcG9pbnQgaW4g bWFpbiIKLSsKLStmb3IgeyBzZXQgciA3IH0geyAkciA8PSAkbnJfcmVncyAgfSB7IGluY3IgciB9 IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkJGJ5dGVfcmVncygkcikiIFwKLSsgICAgICAgICIu LiA9ICRyIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgot K30KLS0tLSBnZGItNy4xLXAyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtZHdvcmQuZXhw CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL2FtZDY0LWR3b3JkLmV4cAkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAw MDAwMCArMDIwMAotQEAgLTAsMCArMSwxMjMgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsj Ci0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K LSsKLSsjIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMg dG8gdGhpcyBmaWxlIHRvOgotKyMgYnVnLWdkYkBnbnUub3JnCi0rCi0rIyBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KLSsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0 cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0r Ci0raWYgeyAhW2lzdGFyZ2V0IHg4Nl82NC0qLSogXSB9IHsKLSsgICAgdmVyYm9zZSAiU2tpcHBp bmcgYW1kNjQgZHdvcmQgcmVnaXN0ZXIgdGVzdHMuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0 IHRlc3RmaWxlICJhbWQ2NC1kd29yZCIKLStzZXQgc3JjZmlsZSBhbWQ2NC1wc2V1ZG8uYwotK3Nl dCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLStpZiBbZ2V0X2Nv bXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBb Z2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0i IGV4ZWN1dGFibGUgW2xpc3QgZGVidWddXSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgJHt0ZXN0 ZmlsZX0KLSsgICAgcmV0dXJuCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwot K2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIGdkYl9zdXBwcmVzc190ZXN0cwotK30KLSsK LStzZXQgbnJfcmVncyAxNAotK3NldCBkd29yZF9yZWdzKDEpIGVheAotK3NldCBkd29yZF9yZWdz KDIpIGVieAotK3NldCBkd29yZF9yZWdzKDMpIGVjeAotK3NldCBkd29yZF9yZWdzKDQpIGVkeAot K3NldCBkd29yZF9yZWdzKDUpIGVzaQotK3NldCBkd29yZF9yZWdzKDYpIGVkaQotK3NldCBkd29y ZF9yZWdzKDcpIHI4ZAotK3NldCBkd29yZF9yZWdzKDgpIHI5ZAotK3NldCBkd29yZF9yZWdzKDkp IHIxMGQKLStzZXQgZHdvcmRfcmVncygxMCkgcjExZAotK3NldCBkd29yZF9yZWdzKDExKSByMTJk Ci0rc2V0IGR3b3JkX3JlZ3MoMTIpIHIxM2QKLStzZXQgZHdvcmRfcmVncygxMykgcjE0ZAotK3Nl dCBkd29yZF9yZWdzKDE0KSByMTVkCi0rCi0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJmaXJzdCBicmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50 IC4qIGF0IC4qJHtzcmNmaWxlfS4qIiBcCi0rICAgICAgICAgInNldCBmaXJzdCBicmVha3BvaW50 IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIGZpcnN0 IGJyZWFrcG9pbnQgaW4gbWFpbiIKLSsKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsg aW5jciByIH0gewotKyAgICBzZXQgaGV4IFtmb3JtYXQgJXggJHJdCi0rICAgIGdkYl90ZXN0ICJw cmludC94IFwkJGR3b3JkX3JlZ3MoJHIpIiBcCi0rCSIuLiA9IDB4JHtoZXh9NCR7aGV4fTMke2hl eH0yJHtoZXh9MSIgXAotKyAgICAgICAgImNoZWNrIGNvbnRlbnRzIG9mICUkZHdvcmRfcmVncygk cikiCi0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5lX251bWJlciAic2Vjb25k IGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3Ny Y2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0IHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIHNlY29uZCBicmVha3BvaW50 IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgNyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNy IHIgfSB7Ci0rICAgIHNldCBoZXggW2Zvcm1hdCAleCAkcl0KLSsgICAgZ2RiX3Rlc3QgInByaW50 L3ggXCQkZHdvcmRfcmVncygkcikiIFwKLSsJIi4uID0gMHgke2hleH00JHtoZXh9MyR7aGV4fTIk e2hleH0xIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRkd29yZF9yZWdzKCRyKSIK LSt9Ci0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIgPD0gNiAgfSB7IGluY3IgciB9IHsKLSsgIGdk Yl90ZXN0ICJzZXQgdmFyIFwkJGR3b3JkX3JlZ3MoJHIpID0gJHIiICIiICJzZXQgJSRkd29yZF9y ZWdzKCRyKSIKLSt9Ci0rCi0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ0 aGlyZCBicmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4q JHtzcmNmaWxlfS4qIiBcCi0rICAgICAgICAgInNldCB0aGlyZCBicmVha3BvaW50IGluIG1haW4i Ci0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIHRoaXJkIGJyZWFrcG9p bnQgaW4gbWFpbiIKLSsKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0g ewotKyAgICBnZGJfdGVzdCAicHJpbnQgXCQkZHdvcmRfcmVncygkcikiIFwKLSsgICAgICAgICIu LiA9ICRyIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRkd29yZF9yZWdzKCRyKSIK LSt9Ci0rCi0rZm9yIHsgc2V0IHIgNyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNyIHIgfSB7 Ci0rICBnZGJfdGVzdCAic2V0IHZhciBcJCRkd29yZF9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUk ZHdvcmRfcmVncygkcikiCi0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5lX251 bWJlciAiZm9ydGggYnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAgICAiQnJlYWtwb2ludCAu KiBhdCAuKiR7c3JjZmlsZX0uKiIgXAotKyAgICAgICAgICJzZXQgZm9ydGggYnJlYWtwb2ludCBp biBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBmb3J0aCBi cmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgNyB9IHsgJHIgPD0gJG5yX3JlZ3Mg IH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJwcmludCBcJCRkd29yZF9yZWdzKCRyKSIg XAotKyAgICAgICAgIi4uID0gJHIiIFwKLSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGR3 b3JkX3JlZ3MoJHIpIgotK30KLS0tLSBnZGItNy4xLXAyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv YW1kNjQtcHNldWRvLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtcHNldWRvLmMJMjAxMC0wNC0wMyAy MTowNjo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsOTEgQEAKLSsvKiBUZXN0IHByb2dy YW0gZm9yIGJ5dGUgcmVnaXN0ZXJzLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUg PHN0ZGlvLmg+Ci0rCi0raW50IGRhdGFbXSA9IHsKLSsgIDB4MTQxMzEyMTEsCi0rICAweDI0MjMy MjIxLAotKyAgMHgzNDMzMzIzMSwKLSsgIDB4NDQ0MzQyNDEsCi0rICAweDU0NTM1MjUxLAotKyAg MHg2NDYzNjI2MSwKLSsgIDB4NzQ3MzcyNzEsCi0rICAweDg0ODM4MjgxLAotKyAgMHg5NDkzOTI5 MSwKLSsgIDB4YTRhM2EyYTEsCi0rICAweGI0YjNiMmIxLAotKyAgMHhjNGMzYzJjMSwKLSsgIDB4 ZDRkM2QyZDEsCi0rICAweGU0ZTNlMmUxLAotK307Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQotK3sKLSsgIGFzbSAoIm1vdiAwKCUwKSwgJSVlYXhcblx0IgotKyAgICAg ICAibW92IDQoJTApLCAlJWVieFxuXHQiCi0rICAgICAgICJtb3YgOCglMCksICUlZWN4XG5cdCIK LSsgICAgICAgIm1vdiAxMiglMCksICUlZWR4XG5cdCIKLSsgICAgICAgIm1vdiAxNiglMCksICUl ZXNpXG5cdCIKLSsgICAgICAgIm1vdiAyMCglMCksICUlZWRpXG5cdCIKLSsgICAgICAgOiAvKiBu byBvdXRwdXQgb3BlcmFuZHMgKi8KLSsgICAgICAgOiAiciIgKGRhdGEpIAotKyAgICAgICA6ICJl YXgiLCAiZWJ4IiwgImVjeCIsICJlZHgiLCAiZXNpIiwgImVkaSIpOwotKyAgYXNtICgibm9wIik7 IC8qIGZpcnN0IGJyZWFrcG9pbnQgaGVyZSAqLwotKwotKyAgYXNtICgibW92IDI0KCUwKSwgJSVy OGRcblx0IgotKyAgICAgICAibW92IDI4KCUwKSwgJSVyOWRcblx0IgotKyAgICAgICAibW92IDMy KCUwKSwgJSVyMTBkXG5cdCIKLSsgICAgICAgIm1vdiAzNiglMCksICUlcjExXG5cdCIKLSsgICAg ICAgIm1vdiA0MCglMCksICUlcjEyZFxuXHQiCi0rICAgICAgICJtb3YgNDQoJTApLCAlJXIxM2Rc blx0IgotKyAgICAgICAibW92IDQ4KCUwKSwgJSVyMTRkXG5cdCIKLSsgICAgICAgIm1vdiA1Migl MCksICUlcjE1ZFxuXHQiCi0rICAgICAgIDogLyogbm8gb3V0cHV0IG9wZXJhbmRzICovCi0rICAg ICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgOiAicjgiLCAicjkiLCAicjEwIiwgInIxMSIsICJy MTIiLCAicjEzIiwgInIxNCIsICJyMTUiKTsKLSsgIGFzbSAoIm5vcCIpOyAvKiBzZWNvbmQgYnJl YWtwb2ludCBoZXJlICovCi0rCi0rICBhc20gKCJtb3YgJSVlYXgsIDAoJTApXG5cdCIKLSsgICAg ICAgIm1vdiAlJWVieCwgNCglMClcblx0IgotKyAgICAgICAibW92ICUlZWN4LCA4KCUwKVxuXHQi Ci0rICAgICAgICJtb3YgJSVlZHgsIDEyKCUwKVxuXHQiCi0rICAgICAgICJtb3YgJSVlc2ksIDE2 KCUwKVxuXHQiCi0rICAgICAgICJtb3YgJSVlZGksIDIwKCUwKVxuXHQiCi0rICAgICAgIDogLyog bm8gb3V0cHV0IG9wZXJhbmRzICovCi0rICAgICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgOiAi ZWF4IiwgImVieCIsICJlY3giLCAiZWR4IiwgImVzaSIsICJlZGkiKTsKLSsgIGFzbSAoIm5vcCIp OyAvKiB0aGlyZCBicmVha3BvaW50IGhlcmUgKi8KLSsKLSsgIGFzbSAoIm1vdiAlJXI4ZCwgMjQo JTApXG5cdCIKLSsgICAgICAgIm1vdiAlJXI5ZCwgMjgoJTApXG5cdCIKLSsgICAgICAgIm1vdiAl JXIxMGQsIDMyKCUwKVxuXHQiCi0rICAgICAgICJtb3YgJSVyMTFkLCAzNiglMClcblx0IgotKyAg ICAgICAibW92ICUlcjEyZCwgNDAoJTApXG5cdCIKLSsgICAgICAgIm1vdiAlJXIxM2QsIDQ0KCUw KVxuXHQiCi0rICAgICAgICJtb3YgJSVyMTRkLCA0OCglMClcblx0IgotKyAgICAgICAibW92ICUl cjE1ZCwgNTIoJTApXG5cdCIKLSsgICAgICAgOiAvKiBubyBvdXRwdXQgb3BlcmFuZHMgKi8KLSsg ICAgICAgOiAiciIgKGRhdGEpIAotKyAgICAgICA6ICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwg InIxMiIsICJyMTMiLCAicjE0IiwgInIxNSIpOwotKyAgcHV0cyAoIkJ5ZSEiKTsgLyogZm9ydGgg YnJlYWtwb2ludCBoZXJlICovCi0rCi0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2RiLTcuMS1wMi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LXdvcmQuZXhwCTE5NzAtMDEtMDEgMDE6MDA6MDAu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0 LXdvcmQuZXhwCTIwMTAtMDQtMDMgMjE6MDY6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDEyMyBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgUGxlYXNlIGVtYWlsIGFu eSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rIyBi dWctZ2RiQGdudS5vcmcKLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1 aXRlLgotKwotK2lmICR0cmFjZWxldmVsIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQot KwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKLStpZiB7ICFbaXN0YXJnZXQgeDg2 XzY0LSotKiBdIH0gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBhbWQ2NCB3b3JkIHJlZ2lzdGVy IHRlc3RzLiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiYW1kNjQtd29yZCIK LStzZXQgc3JjZmlsZSBhbWQ2NC1wc2V1ZG8uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVidWdd XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0KLSsgICAgcmV0dXJuCi0rfQot KwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7 Ci0rICAgIGdkYl9zdXBwcmVzc190ZXN0cwotK30KLSsKLStzZXQgbnJfcmVncyAxNAotK3NldCB3 b3JkX3JlZ3MoMSkgYXgKLStzZXQgd29yZF9yZWdzKDIpIGJ4Ci0rc2V0IHdvcmRfcmVncygzKSBj eAotK3NldCB3b3JkX3JlZ3MoNCkgZHgKLStzZXQgd29yZF9yZWdzKDUpIHNpCi0rc2V0IHdvcmRf cmVncyg2KSBkaQotK3NldCB3b3JkX3JlZ3MoNykgcjh3Ci0rc2V0IHdvcmRfcmVncyg4KSByOXcK LStzZXQgd29yZF9yZWdzKDkpIHIxMHcKLStzZXQgd29yZF9yZWdzKDEwKSByMTF3Ci0rc2V0IHdv cmRfcmVncygxMSkgcjEydwotK3NldCB3b3JkX3JlZ3MoMTIpIHIxM3cKLStzZXQgd29yZF9yZWdz KDEzKSByMTR3Ci0rc2V0IHdvcmRfcmVncygxNCkgcjE1dwotKwotK2dkYl90ZXN0ICJicmVhayBb Z2RiX2dldF9saW5lX251bWJlciAiZmlyc3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAg ICAiQnJlYWtwb2ludCAuKiBhdCAuKiR7c3JjZmlsZX0uKiIgXAotKyAgICAgICAgICJzZXQgZmly c3QgYnJlYWtwb2ludCBpbiBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250 aW51ZSB0byBmaXJzdCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgMSB9IHsg JHIgPD0gNiAgfSB7IGluY3IgciB9IHsKLSsgICAgc2V0IGhleCBbZm9ybWF0ICV4ICRyXQotKyAg ICBnZGJfdGVzdCAicHJpbnQveCBcJCR3b3JkX3JlZ3MoJHIpIiBcCi0rICAgICAgICAiLi4gPSAw eCR7aGV4fTIke2hleH0xIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSR3b3JkX3Jl Z3MoJHIpIgotK30KLSsKLStnZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1iZXIgInNl Y29uZCBicmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4q JHtzcmNmaWxlfS4qIiBcCi0rICAgICAgICAgInNldCBzZWNvbmQgYnJlYWtwb2ludCBpbiBtYWlu IgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBzZWNvbmQgYnJlYWtw b2ludCBpbiBtYWluIgotKwotK2ZvciB7IHNldCByIDcgfSB7ICRyIDw9ICRucl9yZWdzICB9IHsg aW5jciByIH0gewotKyAgICBzZXQgaGV4IFtmb3JtYXQgJXggJHJdCi0rICAgIGdkYl90ZXN0ICJw cmludC94IFwkJHdvcmRfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9IDB4JHtoZXh9MiR7aGV4 fTEiIFwKLSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJHdvcmRfcmVncygkcikiCi0rfQot KwotK2ZvciB7IHNldCByIDEgfSB7ICRyIDw9IDYgIH0geyBpbmNyIHIgfSB7Ci0rICBnZGJfdGVz dCAic2V0IHZhciBcJCR3b3JkX3JlZ3MoJHIpID0gJHIiICIiICJzZXQgJSR3b3JkX3JlZ3MoJHIp IgotK30KLSsKLStnZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1iZXIgInRoaXJkIGJy ZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2Zp bGV9LioiIFwKLSsgICAgICAgICAic2V0IHRoaXJkIGJyZWFrcG9pbnQgaW4gbWFpbiIKLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gdGhpcmQgYnJlYWtwb2ludCBpbiBt YWluIgotKwotK2ZvciB7IHNldCByIDEgfSB7ICRyIDw9IDYgIH0geyBpbmNyIHIgfSB7Ci0rICAg IGdkYl90ZXN0ICJwcmludCBcJCR3b3JkX3JlZ3MoJHIpIiBcCi0rICAgICAgICAiLi4gPSAkciIg XAotKyAgICAgICAgImNoZWNrIGNvbnRlbnRzIG9mICUkd29yZF9yZWdzKCRyKSIKLSt9Ci0rCi0r Zm9yIHsgc2V0IHIgNyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNyIHIgfSB7Ci0rICBnZGJf dGVzdCAic2V0IHZhciBcJCR3b3JkX3JlZ3MoJHIpID0gJHIiICIiICJzZXQgJSR3b3JkX3JlZ3Mo JHIpIgotK30KLSsKLStnZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1iZXIgImZvcnRo IGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3Ny Y2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0IGZvcnRoIGJyZWFrcG9pbnQgaW4gbWFpbiIKLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gZm9ydGggYnJlYWtwb2ludCBp biBtYWluIgotKwotK2ZvciB7IHNldCByIDcgfSB7ICRyIDw9ICRucl9yZWdzICB9IHsgaW5jciBy IH0gewotKyAgICBnZGJfdGVzdCAicHJpbnQgXCQkd29yZF9yZWdzKCRyKSIgXAotKyAgICAgICAg Ii4uID0gJHIiIFwKLSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJHdvcmRfcmVncygkciki Ci0rfQotLS0tIGdkYi03LjEtcDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pMzg2LWJ5dGUuZXhw CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL2kzODYtYnl0ZS5leHAJMjAxMC0wNC0wMyAyMTowNjo1Mi4wMDAwMDAw MDAgKzAyMDAKLUBAIC0wLDAgKzEsOTggQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LSsjIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8g dGhpcyBmaWxlIHRvOgotKyMgYnVnLWdkYkBnbnUub3JnCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KLSsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFj ZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0r aWYgeyAhW2lzdGFyZ2V0IGk/ODYtKi0qXSB9IHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcgaTM4 NiBieXRlIHJlZ2lzdGVyIHRlc3RzLiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0Zmls ZSAiaTM4Ni1ieXRlIgotK3NldCBzcmNmaWxlIGkzODYtcHNldWRvLmMKLStzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgW2dldF9jb21waWxlcl9pbmZv ICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IFtsaXN0IGRlYnVnXV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9Ci0rICAg IHJldHVybgotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVf ZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRv X21haW5dIHRoZW4gewotKyAgICBnZGJfc3VwcHJlc3NfdGVzdHMKLSt9Ci0rCi0rc2V0IGJ5dGVf cmVncygxKSBhbAotK3NldCBieXRlX3JlZ3MoMikgYmwKLStzZXQgYnl0ZV9yZWdzKDMpIGNsCi0r c2V0IGJ5dGVfcmVncyg0KSBkbAotK3NldCBieXRlX3JlZ3MoNSkgYWgKLStzZXQgYnl0ZV9yZWdz KDYpIGJoCi0rc2V0IGJ5dGVfcmVncyg3KSBjaAotK3NldCBieXRlX3JlZ3MoOCkgZGgKLSsKLStn ZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1iZXIgImZpcnN0IGJyZWFrcG9pbnQgaGVy ZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsg ICAgICAgICAic2V0IGZpcnN0IGJyZWFrcG9pbnQgaW4gbWFpbiIKLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiY29udGludWUgdG8gZmlyc3QgYnJlYWtwb2ludCBpbiBtYWluIgotKwotK2Zv ciB7IHNldCByIDEgfSB7ICRyIDw9IDQgIH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJw cmludC94IFwkJGJ5dGVfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9IDB4W2Zvcm1hdCAleCAk cl0xIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotKyAg ICBzZXQgaCBbZXhwciAkciArIDRdCi0rICAgIGdkYl90ZXN0ICJwcmludC94IFwkJGJ5dGVfcmVn cygkaCkiIFwKLSsgICAgICAgICIuLiA9IDB4W2Zvcm1hdCAleCAkcl0yIiBcCi0rICAgICAgICAi Y2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJGgpIgotK30KLSsKLStmb3IgeyBzZXQgciAx IH0geyAkciA8PSA0ICB9IHsgaW5jciByIH0gewotKyAgZ2RiX3Rlc3QgInNldCB2YXIgXCQkYnl0 ZV9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRyKSIKLSsgIHNldCBoIFtleHBy ICRyICsgNF0KLSsgIGdkYl90ZXN0ICJzZXQgdmFyIFwkJGJ5dGVfcmVncygkaCkgPSAkaCIgIiIg InNldCAlJGJ5dGVfcmVncygkaCkiCi0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9s aW5lX251bWJlciAic2Vjb25kIGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFr cG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0IHNlY29uZCBicmVh a3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRv IHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIgPD0g NCAgfSB7IGluY3IgciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkJGJ5dGVfcmVncygkciki IFwKLSsgICAgICAgICIuLiA9ICRyIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRi eXRlX3JlZ3MoJHIpIgotKyAgICBzZXQgaCBbZXhwciAkciArIDRdCi0rICAgIGdkYl90ZXN0ICJw cmludCBcJCRieXRlX3JlZ3MoJGgpIiBcCi0rICAgICAgICAiLi4gPSAkaCIgXAotKyAgICAgICAg ImNoZWNrIGNvbnRlbnRzIG9mICUkYnl0ZV9yZWdzKCRoKSIKLSt9Ci0tLS0gZ2RiLTcuMS1wMi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2kzODYtcHNldWRvLmMJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1w c2V1ZG8uYwkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1 MSBAQAotKy8qIFRlc3QgcHJvZ3JhbSBmb3IgYnl0ZSByZWdpc3RlcnMuCi0rCi0rICAgQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQgZGF0YVtdID0gewotKyAgMHgx NDEzMTIxMSwKLSsgIDB4MjQyMzIyMjEsCi0rICAweDM0MzMzMjMxLAotKyAgMHg0NDQzNDI0MSwK LSt9OwotKwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBhc20g KCJtb3YgMCglMCksICUlZWF4XG5cdCIKLSsgICAgICAgIm1vdiA0KCUwKSwgJSVlYnhcblx0Igot KyAgICAgICAibW92IDgoJTApLCAlJWVjeFxuXHQiCi0rICAgICAgICJtb3YgMTIoJTApLCAlJWVk eFxuXHQiCi0rICAgICAgIDogLyogbm8gb3V0cHV0IG9wZXJhbmRzICovCi0rICAgICAgIDogInIi IChkYXRhKSAKLSsgICAgICAgOiAiZWF4IiwgImVieCIsICJlY3giLCAiZWR4Iik7Ci0rICBhc20g KCJub3AiKTsgLyogZmlyc3QgYnJlYWtwb2ludCBoZXJlICovCi0rCi0rICBhc20gKCJtb3YgJSVl YXgsIDAoJTApXG5cdCIKLSsgICAgICAgIm1vdiAlJWVieCwgNCglMClcblx0IgotKyAgICAgICAi bW92ICUlZWN4LCA4KCUwKVxuXHQiCi0rICAgICAgICJtb3YgJSVlZHgsIDEyKCUwKVxuXHQiCi0r ICAgICAgIDogLyogbm8gb3V0cHV0IG9wZXJhbmRzICovCi0rICAgICAgIDogInIiIChkYXRhKSAK LSsgICAgICAgOiAiZWF4IiwgImVieCIsICJlY3giLCAiZWR4Iik7Ci0rICBwdXRzICgiQnllISIp OyAvKiBzZWNvbmQgYnJlYWtwb2ludCBoZXJlICovCi0rCi0rICByZXR1cm4gMDsKLSt9Ci0tLS0g Z2RiLTcuMS1wMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2kzODYtd29yZC5leHAJMTk3MC0wMS0w MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gvaTM4Ni13b3JkLmV4cAkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAot QEAgLTAsMCArMSw4NCBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgUGxlYXNl IGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUg dG86Ci0rIyBidWctZ2RiQGdudS5vcmcKLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBn ZGIgdGVzdHN1aXRlLgotKwotK2lmICR0cmFjZWxldmVsIHsKLSsgICAgc3RyYWNlICR0cmFjZWxl dmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKLStpZiB7ICFbaXN0 YXJnZXQgaT84Ni0qLSpdIH0gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBpMzg2IHdvcmQgcmVn aXN0ZXIgdGVzdHMuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJpMzg2LXdv cmQiCi0rc2V0IHNyY2ZpbGUgaTM4Ni1wc2V1ZG8uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxl fV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVi dWddXSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0KLSsgICAgcmV0dXJuCi0r fQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gdGhl biB7Ci0rICAgIGdkYl9zdXBwcmVzc190ZXN0cwotK30KLSsKLStzZXQgd29yZF9yZWdzKDEpIGF4 Ci0rc2V0IHdvcmRfcmVncygyKSBieAotK3NldCB3b3JkX3JlZ3MoMykgY3gKLStzZXQgd29yZF9y ZWdzKDQpIGR4Ci0rCi0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmaXJz dCBicmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtz cmNmaWxlfS4qIiBcCi0rICAgICAgICAgInNldCBmaXJzdCBicmVha3BvaW50IGluIG1haW4iCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIGZpcnN0IGJyZWFrcG9pbnQg aW4gbWFpbiIKLSsKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA0ICB9IHsgaW5jciByIH0gewot KyAgICBnZGJfdGVzdCAicHJpbnQveCBcJCR3b3JkX3JlZ3MoJHIpIiBcCi0rICAgICAgICAiLi4g PSAweFtmb3JtYXQgJXggJHJdMltmb3JtYXQgJXggJHJdMSIgXAotKyAgICAgICAgImNoZWNrIGNv bnRlbnRzIG9mICUkd29yZF9yZWdzKCRyKSIKLSt9Ci0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIg PD0gNCAgfSB7IGluY3IgciB9IHsKLSsgIGdkYl90ZXN0ICJzZXQgdmFyIFwkJHdvcmRfcmVncygk cikgPSAkciIgIiIgInNldCAlJHdvcmRfcmVncygkcikiCi0rfQotKwotK2dkYl90ZXN0ICJicmVh ayBbZ2RiX2dldF9saW5lX251bWJlciAic2Vjb25kIGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAg ICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0 IHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImNvbnRpbnVlIHRvIHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIg MSB9IHsgJHIgPD0gNCAgfSB7IGluY3IgciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkJHdv cmRfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9ICRyIiBcCi0rICAgICAgICAiY2hlY2sgY29u dGVudHMgb2YgJSR3b3JkX3JlZ3MoJHIpIgotK30KCmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAt YXZ4LTA1b2YxMC5wYXRjaCBiL2dkYi1iejU3ODI1MC1hdngtMDVvZjEwLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWYwOTA4Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1 MC1hdngtMDVvZjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotWyBCYWNr cG9ydGVkLiAgXQotCi1jb21taXQgNjQ0OGFhY2U2Mzc4NDNlOGU3YzAyMWQ3ZjhjNWQ1ZDVmZGQ3 MTk3NAotQXV0aG9yOiBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogICBXZWQg TWFyIDMgMjA6MTk6NDggMjAxMCArMDAwMAotCi0gICAgTWVudGlvbiBpbXByb3ZlbWVudCBmb3Ig WDg2IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuCi0gICAgCi0gICAgMjAxMC0wMy0wMyAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotICAgIAkgICAgRWxpIFphcmV0c2tpaSAgPGVs aXpAZ251Lm9yZz4KLSAgICAKLSAgICAJKiBORVdTOiBBZGQgWDg2IGdlbmVyYWwgcHVycG9zZSBy ZWdpc3RlcnMgc2VjdGlvbi4KLQotLS0tIGdkYi03LjEtcDMvZ2RiL05FV1MJMjAxMC0wMy0xOCAy MjowMTo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi9ORVdTCTIwMTAtMDQtMDMg MjE6MDc6NDYuMDAwMDAwMDAwICswMjAwCi1AQCAtNDM4LDYgKzQzOCwxNCBAQCBHREIgd2lsbCBu b3cgY29ycmVjdGx5IGhhbmRsZSBhbGwgb2Y6Ci0gICAgIG5vdyBzdXBwb3J0IGhhcmR3YXJlIHdh dGNocG9pbnRzLCBhbmQgd2lsbCB1c2UgdGhlbSBhdXRvbWF0aWNhbGx5Ci0gICAgIGFzIGFwcHJv cHJpYXRlLgotIAotKyogWDg2IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMKLSsKLSsgIEdEQiBu b3cgc3VwcG9ydHMgcmVhZGluZy93cml0aW5nIGJ5dGUsIHdvcmQgYW5kIGRvdWJsZS13b3JkIHg4 NgotKyAgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycyBkaXJlY3RseS4gIFRoaXMgbWVhbnMgeW91 IGNhbiB1c2UsIHNheSwKLSsgICRhaCBvciAkYXggdG8gcmVmZXIsIHJlc3BlY3RpdmVseSwgdG8g dGhlIGJ5dGUgcmVnaXN0ZXIgQUggYW5kCi0rICAxNi1iaXQgd29yZCByZWdpc3RlciBBWCB0aGF0 IGFyZSBhY3R1YWxseSBwb3J0aW9ucyBvZiB0aGUgMzItYml0Ci0rICByZWdpc3RlciBFQVggb3Ig NjQtYml0IHJlZ2lzdGVyIFJBWC4KLSsKLSAqIFB5dGhvbiBzY3JpcHRpbmcKLSAKLSAgIEdEQiBu b3cgaGFzIHN1cHBvcnQgZm9yIHNjcmlwdGluZyB1c2luZyBQeXRob24uICBXaGV0aGVyIHRoaXMg aXMKCmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTA2b2YxMC5wYXRjaCBiL2dkYi1iejU3 ODI1MC1hdngtMDZvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2U1 NWYyLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMDZvZjEwLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMzUgKzAsMCBAQAotWyBCYWNrcG9ydGVkLiAgXQotCi1jb21taXQgNDlmOGQx YzI0YzYzOWQ4OTFmNThhM2I5ZmVkYTQyNTgzM2I3MDJmYgotQXV0aG9yOiBILkouIEx1IDxoamwu dG9vbHNAZ21haWwuY29tPgotRGF0ZTogICBGcmkgTWFyIDEyIDE1OjEyOjM0IDIwMTAgKzAwMDAK LQotICAgIFJlc3RvcmUgc3AgZm9yIHg4Ni4KLSAgICAKLSAgICAyMDEwLTAzLTEyICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gICAgCi0gICAgCSogYW1kNjQtdGRlcC5jIChhbWQ2 NF93b3JkX25hbWVzKTogUmVwbGFjZSAic3AiIHdpdGggIiIuCi0gICAgCSogaTM4Ni10ZGVwLmMg KGkzODZfd29yZF9uYW1lcyk6IExpa2V3aXNlLgotCi0tLS0gZ2RiLTcuMS1wNC9nZGIvYW1kNjQt dGRlcC5jCTIwMTAtMDQtMDMgMjE6MDY6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9n ZGIvYW1kNjQtdGRlcC5jCTIwMTAtMDQtMDMgMjE6MDg6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAt MjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9ieXRlX25hbWVzW10gPQot IAotIHN0YXRpYyBjb25zdCBjaGFyICphbWQ2NF93b3JkX25hbWVzW10gPQotIHsKLS0gICJheCIs ICJieCIsICJjeCIsICJkeCIsICJzaSIsICJkaSIsICJicCIsICJzcCIsIAotKyAgImF4IiwgImJ4 IiwgImN4IiwgImR4IiwgInNpIiwgImRpIiwgImJwIiwgIiIsIAotICAgInI4dyIsICJyOXciLCAi cjEwdyIsICJyMTF3IiwgInIxMnciLCAicjEzdyIsICJyMTR3IiwgInIxNXciCi0gfTsKLSAKLS0t LSBnZGItNy4xLXA0L2dkYi9pMzg2LXRkZXAuYwkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2kzODYtdGRlcC5jCTIwMTAtMDQtMDMgMjE6MDg6MjEu MDAwMDAwMDAwICswMjAwCi1AQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqaTM4 Nl9ieXRlX25hbWVzW10gPQotIHN0YXRpYyBjb25zdCBjaGFyICppMzg2X3dvcmRfbmFtZXNbXSA9 Ci0gewotICAgImF4IiwgImN4IiwgImR4IiwgImJ4IiwKLS0gICJzcCIsICJicCIsICJzaSIsICJk aSIKLSsgICIiLCAiYnAiLCAic2kiLCAiZGkiCi0gfTsKLSAKLSAvKiBNTVggcmVnaXN0ZXI/ICAq LwoKZGlmZiAtLWdpdCBhL2dkYi1iejU3ODI1MC1hdngtMDdvZjEwLnBhdGNoIGIvZ2RiLWJ6NTc4 MjUwLWF2eC0wN29mMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDI5 ZTAuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTc4MjUwLWF2eC0wN29mMTAucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwxODMgKzAsMCBAQAotWyBCYWNrcG9ydGVkLiAgXQotCi1jb21taXQgZDVlYTcw NDIyMTBmNWFkMzE5YWQxOTkxMGJjZTEzZmQ1NzE3YzZkNgotQXV0aG9yOiBILkouIEx1IDxoamwu dG9vbHNAZ21haWwuY29tPgotRGF0ZTogICBUdWUgTWFyIDMwIDE1OjQ1OjA4IDIwMTAgKzAwMDAK LQotICAgIEFkZCB4bWxSZWdpc3RlcnM9IHRvIHFTdXBwb3J0ZWQgcGFja2V0LgotICAgIAotICAg IGdkYi8KLSAgICAKLSAgICAyMDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0gICAgCi0gICAgCSogTkVXUzogTWVudGlvbiB4bWxSZWdpc3RlcnM9IGluIHFTdXBwb3J0 ZWQgcGFja2V0LgotICAgIAotICAgIAkqIGkzODYtdGRlcC5jOiBJbmNsdWRlICJyZW1vdGUuaCIu Ci0gICAgCShfaW5pdGlhbGl6ZV9pMzg2X3RkZXApOiBDYWxsIHJlZ2lzdGVyX3JlbW90ZV9zdXBw b3J0X3htbC4KLSAgICAKLSAgICAJKiByZW1vdGUuYyAocmVtb3RlX3N1cHBvcnRfeG1sKTogTmV3 LgotICAgIAkocmVnaXN0ZXJfcmVtb3RlX3N1cHBvcnRfeG1sKTogTGlrZXdpc2UuCi0gICAgCShy ZW1vdGVfcXVlcnlfc3VwcG9ydGVkX2FwcGVuZCk6IExpa2V3aXNlLgotICAgIAkocmVtb3RlX3F1 ZXJ5X3N1cHBvcnRlZCk6IFN1cHBvcnQgcmVtb3RlX3N1cHBvcnRfeG1sLgotICAgIAotICAgIAkq IHJlbW90ZS5oIChyZWdpc3Rlcl9yZW1vdGVfc3VwcG9ydF94bWwpOiBOZXcuCi0gICAgCi0gICAg Z2RiL2RvYy8KLSAgICAKLSAgICAyMDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0gICAgCi0gICAgCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVlcnkgUGFja2V0cyk6 IEFkZCB4bWxSZWdpc3RlcnMuCi0KLS0tLSBnZGItNy4xLXA1L2dkYi9ORVdTCTIwMTAtMDQtMDMg MjE6MDc6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvTkVXUwkyMDEwLTA0LTAz IDIxOjEwOjA2LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsNiArMSwxMSBAQAotIAkJV2hhdCBoYXMg Y2hhbmdlZCBpbiBHREI/Ci0gCSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCi0g Ci0rKioqIENoYW5nZXMgc2luY2UgR0RCIDcuMQotKwotKyogR0RCIG5vdyBzZW5kcyB4bWxSZWdp c3RlcnM9IGluIHFTdXBwb3J0ZWQgcGFja2V0IHRvIGluZGljYXRlIHRoYXQKLSsgIGl0IHVuZGVy c3RhbmRzIHJlZ2lzdGVyIGRlc2NyaXB0aW9uLgotKwotICoqKiBDaGFuZ2VzIGluIEdEQiA3LjEK LSAKLSAqIEMrKyBJbXByb3ZlbWVudHMKLS0tLSBnZGItNy4xLXA1L2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMC0wNC0wMyAyMTowNDoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMC0wNC0wMyAyMTowOToyOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0z MDI5Miw2ICszMDI5MiwxMiBAQCBleHRlbnNpb25zIHRvIHRoZSByZW1vdGUgcHJvdG9jb2wuICBA dmFsCi0gZXh0ZW5zaW9ucyB1bmxlc3MgdGhlIHN0dWIgYWxzbyByZXBvcnRzIHRoYXQgaXQgc3Vw cG9ydHMgdGhlbSBieQotIGluY2x1ZGluZyBAc2FtcHttdWx0aXByb2Nlc3MrfSBpbiBpdHMgQHNh bXB7cVN1cHBvcnRlZH0gcmVwbHkuCi0gQHhyZWZ7bXVsdGlwcm9jZXNzIGV4dGVuc2lvbnN9LCBm b3IgZGV0YWlscy4KLSsKLStAaXRlbSB4bWxSZWdpc3RlcnMKLStUaGlzIGZlYXR1cmUgaW5kaWNh dGVzIHRoYXQgQHZhbHVle0dEQk59IHN1cHBvcnRzIHRoZSBYTUwgdGFyZ2V0Ci0rZGVzY3JpcHRp b24uICBJZiB0aGUgc3R1YiBzZWVzIEBzYW1we3htbFJlZ2lzdGVycz19IHdpdGggdGFyZ2V0Ci0r c3BlY2lmaWMgc3RyaW5ncyBzZXBhcmF0ZWQgYnkgYSBjb21tYSwgaXQgd2lsbCByZXBvcnQgcmVn aXN0ZXIKLStkZXNjcmlwdGlvbi4KLSBAZW5kIHRhYmxlCi0gCi0gU3R1YnMgc2hvdWxkIGlnbm9y ZSBhbnkgdW5rbm93biB2YWx1ZXMgZm9yCi0tLS0gZ2RiLTcuMS1wNS9nZGIvaTM4Ni10ZGVwLmMJ MjAxMC0wNC0wMyAyMTowODoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9pMzg2 LXRkZXAuYwkyMDEwLTA0LTAzIDIxOjA5OjI5LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ0LDYgKzQ0 LDcgQEAKLSAjaW5jbHVkZSAidmFsdWUuaCIKLSAjaW5jbHVkZSAiZGlzLWFzbS5oIgotICNpbmNs dWRlICJkaXNhc20uaCIKLSsjaW5jbHVkZSAicmVtb3RlLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTYwMDAsNCArNjAwMSw3IEBA IGlzIFwiZGVmYXVsdFwiLiIpLAotIAotICAgLyogSW5pdGlhbGl6ZSB0aGUgc3RhbmRhcmQgdGFy Z2V0IGRlc2NyaXB0aW9ucy4gICovCi0gICBpbml0aWFsaXplX3RkZXNjX2kzODYgKCk7Ci0rCi0r ICAvKiBUZWxsIHJlbW90ZSBzdHViIHRoYXQgd2Ugc3VwcG9ydCBYTUwgdGFyZ2V0IGRlc2NyaXB0 aW9uLiAgKi8KLSsgIHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCAoImkzODYiKTsKLSB9Ci0t LS0gZ2RiLTcuMS1wNS9nZGIvcmVtb3RlLmMJMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4xL2dkYi9yZW1vdGUuYwkyMDEwLTA0LTAzIDIxOjA5OjI5LjAwMDAw MDAwMCArMDIwMAotQEAgLTM0NjcsNiArMzQ2Nyw1MyBAQCBzdGF0aWMgc3RydWN0IHByb3RvY29s X2ZlYXR1cmUgcmVtb3RlX3ByCi0gICAgIFBBQ0tFVF9icyB9LAotIH07Ci0gCi0rc3RhdGljIGNo YXIgKnJlbW90ZV9zdXBwb3J0X3htbDsKLSsKLSsvKiBSZWdpc3RlciBzdHJpbmcgYXBwZW5kZWQg dG8gInhtbFJlZ2lzdGVycz0iIGluIHFTdXBwb3J0ZWQgcXVlcnkuICAqLwotKwotK3ZvaWQKLSty ZWdpc3Rlcl9yZW1vdGVfc3VwcG9ydF94bWwgKGNvbnN0IGNoYXIgKnhtbCBBVFRSSUJVVEVfVU5V U0VEKQotK3sKLSsjaWYgZGVmaW5lZChIQVZFX0xJQkVYUEFUKQotKyAgaWYgKHJlbW90ZV9zdXBw b3J0X3htbCA9PSBOVUxMKQotKyAgICByZW1vdGVfc3VwcG9ydF94bWwgPSBjb25jYXQgKCJ4bWxS ZWdpc3RlcnM9IiwgeG1sLCBOVUxMKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGNoYXIgKmNv cHkgPSB4c3RyZHVwIChyZW1vdGVfc3VwcG9ydF94bWwgKyAxMyk7Ci0rICAgICAgY2hhciAqcCA9 IHN0cnRvayAoY29weSwgIiwiKTsKLSsKLSsgICAgICBkbwotKwl7Ci0rCSAgaWYgKHN0cmNtcCAo cCwgeG1sKSA9PSAwKQotKwkgICAgewotKwkgICAgICAvKiBhbHJlYWR5IHRoZXJlICovCi0rCSAg ICAgIHhmcmVlIChjb3B5KTsKLSsJICAgICAgcmV0dXJuOwotKwkgICAgfQotKwl9Ci0rICAgICAg d2hpbGUgKChwID0gc3RydG9rIChOVUxMLCAiLCIpKSAhPSBOVUxMKTsKLSsgICAgICB4ZnJlZSAo Y29weSk7Ci0rCi0rICAgICAgcCA9IGNvbmNhdCAocmVtb3RlX3N1cHBvcnRfeG1sLCAiLCIsIHht bCwgTlVMTCk7Ci0rICAgICAgeGZyZWUgKHJlbW90ZV9zdXBwb3J0X3htbCk7Ci0rICAgICAgcmVt b3RlX3N1cHBvcnRfeG1sID0gcDsKLSsgICAgfQotKyNlbmRpZgotK30KLSsKLStzdGF0aWMgY2hh ciAqCi0rcmVtb3RlX3F1ZXJ5X3N1cHBvcnRlZF9hcHBlbmQgKGNoYXIgKm1zZywgY29uc3QgY2hh ciAqYXBwZW5kKQotK3sKLSsgIGlmIChtc2cpCi0rICAgIHsKLSsgICAgICBjaGFyICpwID0gY29u Y2F0IChtc2csICI7IiwgYXBwZW5kLCBOVUxMKTsKLSsgICAgICB4ZnJlZSAobXNnKTsKLSsgICAg ICByZXR1cm4gcDsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXR1cm4geHN0cmR1cCAoYXBwZW5k KTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSByZW1vdGVfcXVlcnlfc3VwcG9ydGVkICh2b2lkKQot IHsKLUBAIC0zNDg1LDI0ICszNTMyLDI3IEBAIHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWQgKHZvaWQp Ci0gICBycy0+YnVmWzBdID0gMDsKLSAgIGlmIChyZW1vdGVfcHJvdG9jb2xfcGFja2V0c1tQQUNL RVRfcVN1cHBvcnRlZF0uc3VwcG9ydCAhPSBQQUNLRVRfRElTQUJMRSkKLSAgICAgewotKyAgICAg IGNoYXIgKnEgPSBOVUxMOwotICAgICAgIGNvbnN0IGNoYXIgKnFzdXBwb3J0ZWQgPSBnZGJhcmNo X3FzdXBwb3J0ZWQgKHRhcmdldF9nZGJhcmNoKTsKLSsKLSsgICAgICBpZiAocnMtPmV4dGVuZGVk KQotKwlxID0gcmVtb3RlX3F1ZXJ5X3N1cHBvcnRlZF9hcHBlbmQgKHEsICJtdWx0aXByb2Nlc3Mr Iik7Ci0rICAgICAgCi0gICAgICAgaWYgKHFzdXBwb3J0ZWQpCi0rCXEgPSByZW1vdGVfcXVlcnlf c3VwcG9ydGVkX2FwcGVuZCAocSwgcXN1cHBvcnRlZCk7Ci0rCi0rICAgICAgaWYgKHJlbW90ZV9z dXBwb3J0X3htbCkKLSsJcSA9IHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWRfYXBwZW5kIChxLCByZW1v dGVfc3VwcG9ydF94bWwpOwotKwotKyAgICAgIGlmIChxKQotIAl7Ci0tCSAgY2hhciAqcTsKLS0J ICBpZiAocnMtPmV4dGVuZGVkKQotLQkgICAgcSA9IGNvbmNhdCAoInFTdXBwb3J0ZWQ6bXVsdGlw cm9jZXNzKzsiLCBxc3VwcG9ydGVkLCBOVUxMKTsKLS0JICBlbHNlCi0tCSAgICBxID0gY29uY2F0 ICgicVN1cHBvcnRlZDoiLCBxc3VwcG9ydGVkLCBOVUxMKTsKLS0JICBwdXRwa3QgKHEpOwotKwkg IGNoYXIgKnAgPSBjb25jYXQgKCJxU3VwcG9ydGVkOiIsIHEsIE5VTEwpOwotIAkgIHhmcmVlIChx KTsKLSsJICBwdXRwa3QgKHApOwotKwkgIHhmcmVlIChwKTsKLSAJfQotICAgICAgIGVsc2UKLS0J ewotLQkgIGlmIChycy0+ZXh0ZW5kZWQpCi0tCSAgICBwdXRwa3QgKCJxU3VwcG9ydGVkOm11bHRp cHJvY2VzcysiKTsKLS0JICBlbHNlCi0tCSAgICBwdXRwa3QgKCJxU3VwcG9ydGVkIik7Ci0tCX0K LSsJcHV0cGt0ICgicVN1cHBvcnRlZCIpOwotIAotICAgICAgIGdldHBrdCAoJnJzLT5idWYsICZy cy0+YnVmX3NpemUsIDApOwotIAotLS0tIGdkYi03LjEtcDUvZ2RiL3JlbW90ZS5oCTIwMTAtMDEt MDEgMDg6MzE6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvcmVtb3RlLmgJMjAx MC0wNC0wMyAyMTowOToyOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02Niw2ICs2Niw3IEBAIGV4dGVy biB2b2lkICgqZGVwcmVjYXRlZF90YXJnZXRfd2FpdF9sb28KLSAKLSB2b2lkIHJlZ2lzdGVyX3Jl bW90ZV9nX3BhY2tldF9ndWVzcyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBieXRlcywK LSAJCQkJICAgICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjKTsKLSt2b2lkIHJlZ2lz dGVyX3JlbW90ZV9zdXBwb3J0X3htbCAoY29uc3QgY2hhciAqKTsKLSAKLSB2b2lkIHJlbW90ZV9m aWxlX3B1dCAoY29uc3QgY2hhciAqbG9jYWxfZmlsZSwgY29uc3QgY2hhciAqcmVtb3RlX2ZpbGUs Ci0gCQkgICAgICBpbnQgZnJvbV90dHkpOwoKZGlmZiAtLWdpdCBhL2dkYi1iejU3ODI1MC1hdngt MDhvZjEwLnBhdGNoIGIvZ2RiLWJ6NTc4MjUwLWF2eC0wOG9mMTAucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDRmMWU0YWIuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTc4MjUwLWF2 eC0wOG9mMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1bIEJhY2twb3J0 ZWQuICBdCi0KLWNvbW1pdCA2ODQzNDEzOTJmM2NhNjcwM2RjMjhkYWM1NDhkMzA1MTgxMWJmZjQ3 Ci1BdXRob3I6IEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiAgIFR1ZSBNYXIg MzAgMTg6Mzc6MDMgMjAxMCArMDAwMAotCi0gICAgQWRkIG9yZy5nbnUuZ2RiLmkzODYuYXZ4Lgot ICAgIAotICAgIDIwMTAtMDMtMzAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSAg ICAKLSAgICAJKiBnZGIudGV4aW5mbyAoaTM4NiBGZWF0dXJlcyk6IEFkZCBvcmcuZ251LmdkYi5p Mzg2LmF2eC4KLQotLS0tIGdkYi03LjEtcDYvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA0LTAz IDIxOjA5OjI5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEwLTA0LTAzIDIxOjEwOjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTMzMzgwLDYgKzMzMzgw LDE3IEBAIGRlc2NyaWJlIHJlZ2lzdGVyczoKLSBAc2FtcHtteGNzcn0KLSBAZW5kIGl0ZW1pemUK LSAKLStUaGUgQHNhbXB7b3JnLmdudS5nZGIuaTM4Ni5hdnh9IGZlYXR1cmUgaXMgb3B0aW9uYWwu ICBJdCBzaG91bGQKLStkZXNjcmliZSB0aGUgdXBwZXIgMTI4IGJpdHMgb2YgQHNje3ltbX0gcmVn aXN0ZXJzOgotKwotK0BpdGVtaXplIEBtaW51cwotK0BpdGVtCi0rQHNhbXB7eW1tMGh9IHRocm91 Z2ggQHNhbXB7eW1tN2h9IGZvciBpMzg2Ci0rQGl0ZW0KLStAc2FtcHt5bW0waH0gdGhyb3VnaCBA c2FtcHt5bW0xNWh9IGZvciBhbWQ2NAotK0BpdGVtIAotK0BlbmQgaXRlbWl6ZQotKwotIFRoZSBA c2FtcHtvcmcuZ251LmdkYi5pMzg2LmxpbnV4fSBmZWF0dXJlIGlzIG9wdGlvbmFsLiAgSXQgc2hv dWxkCi0gZGVzY3JpYmUgYSBzaW5nbGUgcmVnaXN0ZXIsIEBzYW1we29yaWdfZWF4fS4KLSAKCmRp ZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTA5b2YxMC5wYXRjaCBiL2dkYi1iejU3ODI1MC1h dngtMDlvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2E0MWIxLi4w MDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMDlvZjEwLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTgzICswLDAgQEAKLVsgQmFja3BvcnRlZC4gIF0KLQotY29tbWl0IDUzNjJlNWUxZGM0 Y2ZhYzI0ZmJkNTg3NzNhYWE3YTgyYzYxNWI2NjIKLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xz QGdtYWlsLmNvbT4KLURhdGU6ICAgVGh1IEFwciAxIDIwOjAyOjA3IDIwMTAgKzAwMDAKLQotICAg IFN1cHBvcnQgImFoIiwgImJoIiwgImNoIiwgImRoIiBvbiBhbWQ2NC4KLSAgICAKLSAgICBnZGIv Ci0gICAgCi0gICAgMjAxMC0wNC0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot ICAgIAotICAgIAkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfYnl0ZV9uYW1lcyk6IEFkZCAiYWgiLCAi YmgiLCAiY2giLCAiZGgiLgotICAgIAkoQU1ENjRfTlVNX0xPV0VSX0JZVEVfUkVHUyk6IE5ldy4K LSAgICAJKGFtZDY0X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogSGFuZGxlICJhaCIsICJiaCIsICJj aCIsICJkaCIuCi0gICAgCShhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4K LSAgICAJKGFtZDY0X2luaXRfYWJpKTogU2V0IG51bV9ieXRlX3JlZ3MgdG8gMjAuCi0gICAgCi0g ICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAKLSAgICAyMDEwLTA0LTAxICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0gICAgCi0gICAgCSogZ2RiLmFyY2gvYW1kNjQtYnl0ZS5leHA6IENo ZWNrICJhaCIsICJiaCIsICJjaCIsICJkaCIuCi0KLS0tLSBnZGItNy4xLXA3L2dkYi9hbWQ2NC10 ZGVwLmMJMjAxMC0wNC0wMyAyMTowODoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dk Yi9hbWQ2NC10ZGVwLmMJMjAxMC0wNC0wMyAyMToxMTo0MS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0y MTUsOSArMjE1LDEzIEBAIGFtZDY0X2FyY2hfcmVnX3RvX3JlZ251bSAoaW50IHJlZykKLSBzdGF0 aWMgY29uc3QgY2hhciAqYW1kNjRfYnl0ZV9uYW1lc1tdID0KLSB7Ci0gICAiYWwiLCAiYmwiLCAi Y2wiLCAiZGwiLCAic2lsIiwgImRpbCIsICJicGwiLCAic3BsIiwKLS0gICJyOGwiLCAicjlsIiwg InIxMGwiLCAicjExbCIsICJyMTJsIiwgInIxM2wiLCAicjE0bCIsICJyMTVsIgotKyAgInI4bCIs ICJyOWwiLCAicjEwbCIsICJyMTFsIiwgInIxMmwiLCAicjEzbCIsICJyMTRsIiwgInIxNWwiLAot KyAgImFoIiwgImJoIiwgImNoIiwgImRoIgotIH07Ci0gCi0rLyogTnVtYmVyIG9mIGxvd2VyIGJ5 dGUgcmVnaXN0ZXJzLiAgKi8KLSsjZGVmaW5lIEFNRDY0X05VTV9MT1dFUl9CWVRFX1JFR1MgMTYK LSsKLSAvKiBSZWdpc3RlciBuYW1lcyBmb3Igd29yZCBwc2V1ZG8tcmVnaXN0ZXJzLiAgKi8KLSAK LSBzdGF0aWMgY29uc3QgY2hhciAqYW1kNjRfd29yZF9uYW1lc1tdID0KLUBAIC0yNjMsOCArMjY3 LDE4IEBAIGFtZDY0X3BzZXVkb19yZWdpc3Rlcl9yZWFkIChzdHJ1Y3QgZ2RiYXIKLSAgICAgICBp bnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5hbF9yZWdudW07Ci0gCi0gICAgICAgLyogRXh0cmFj dCAoYWx3YXlzIGxpdHRsZSBlbmRpYW4pLiAgKi8KLS0gICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVnY2FjaGUsIGdwbnVtLCByYXdfYnVmKTsKLS0gICAgICBtZW1jcHkgKGJ1ZiwgcmF3X2J1Ziwg MSk7Ci0rICAgICAgaWYgKGdwbnVtID49IEFNRDY0X05VTV9MT1dFUl9CWVRFX1JFR1MpCi0rCXsK LSsJICAvKiBTcGVjaWFsIGhhbmRsaW5nIGZvciBBSCwgQkgsIENILCBESC4gICovCi0rCSAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLAotKwkJCSAgICAgZ3BudW0gLSBBTUQ2NF9OVU1fTE9X RVJfQllURV9SRUdTLCByYXdfYnVmKTsKLSsJICBtZW1jcHkgKGJ1ZiwgcmF3X2J1ZiArIDEsIDEp OwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hl LCBncG51bSwgcmF3X2J1Zik7Ci0rCSAgbWVtY3B5IChidWYsIHJhd19idWYsIDEpOwotKwl9Ci0g ICAgIH0KLSAgIGVsc2UgaWYgKGkzODZfZHdvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkp Ci0gICAgIHsKLUBAIC0yODksMTIgKzMwMywyNiBAQCBhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfd3Jp dGUgKHN0cnVjdCBnZGJhCi0gICAgIHsKLSAgICAgICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVw LT5hbF9yZWdudW07Ci0gCi0tICAgICAgLyogUmVhZCAuLi4gICovCi0tICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlZ2NhY2hlLCBncG51bSwgcmF3X2J1Zik7Ci0tICAgICAgLyogLi4uIE1vZGlm eSAuLi4gKGFsd2F5cyBsaXR0bGUgZW5kaWFuKS4gICovCi0tICAgICAgbWVtY3B5IChyYXdfYnVm LCBidWYsIDEpOwotLSAgICAgIC8qIC4uLiBXcml0ZS4gICovCi0tICAgICAgcmVnY2FjaGVfcmF3 X3dyaXRlIChyZWdjYWNoZSwgZ3BudW0sIHJhd19idWYpOwotKyAgICAgIGlmIChncG51bSA+PSBB TUQ2NF9OVU1fTE9XRVJfQllURV9SRUdTKQotKwl7Ci0rCSAgLyogUmVhZCAuLi4gQUgsIEJILCBD SCwgREguICAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwKLSsJCQkgICAgIGdw bnVtIC0gQU1ENjRfTlVNX0xPV0VSX0JZVEVfUkVHUywgcmF3X2J1Zik7Ci0rCSAgLyogLi4uIE1v ZGlmeSAuLi4gKGFsd2F5cyBsaXR0bGUgZW5kaWFuKS4gICovCi0rCSAgbWVtY3B5IChyYXdfYnVm ICsgMSwgYnVmLCAxKTsKLSsJICAvKiAuLi4gV3JpdGUuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd193 cml0ZSAocmVnY2FjaGUsCi0rCQkJICAgICAgZ3BudW0gLSBBTUQ2NF9OVU1fTE9XRVJfQllURV9S RUdTLCByYXdfYnVmKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8qIFJlYWQgLi4uICAq LwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgZ3BudW0sIHJhd19idWYpOwotKwkg IC8qIC4uLiBNb2RpZnkgLi4uIChhbHdheXMgbGl0dGxlIGVuZGlhbikuICAqLwotKwkgIG1lbWNw eSAocmF3X2J1ZiwgYnVmLCAxKTsKLSsJICAvKiAuLi4gV3JpdGUuICAqLwotKwkgIHJlZ2NhY2hl X3Jhd193cml0ZSAocmVnY2FjaGUsIGdwbnVtLCByYXdfYnVmKTsKLSsJfQotICAgICB9Ci0gICBl bHNlIGlmIChpMzg2X2R3b3JkX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotICAgICB7Ci1A QCAtMjIzMyw3ICsyMjYxLDcgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8g aW5mbwotICAgdGRlcC0+bnVtX2NvcmVfcmVncyA9IEFNRDY0X05VTV9HUkVHUyArIEkzODdfTlVN X1JFR1M7Ci0gICB0ZGVwLT5yZWdpc3Rlcl9uYW1lcyA9IGFtZDY0X3JlZ2lzdGVyX25hbWVzOwot IAotLSAgdGRlcC0+bnVtX2J5dGVfcmVncyA9IDE2OwotKyAgdGRlcC0+bnVtX2J5dGVfcmVncyA9 IDIwOwotICAgdGRlcC0+bnVtX3dvcmRfcmVncyA9IDE2OwotICAgdGRlcC0+bnVtX2R3b3JkX3Jl Z3MgPSAxNjsKLSAgIC8qIEF2b2lkIHdpcmluZyBpbiB0aGUgTU1YIHJlZ2lzdGVycyBmb3Igbm93 LiAgKi8KLS0tLSBnZGItNy4xLXA3L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtYnl0ZS5l eHAJMjAxMC0wNC0wMyAyMTowNjo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtYnl0ZS5leHAJMjAxMC0wNC0wMyAyMToxMTo0MS4wMDAw MDAwMDAgKzAyMDAKLUBAIC01Miw3ICs1Miw2IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0g ICAgIGdkYl9zdXBwcmVzc190ZXN0cwotIH0KLSAKLS1zZXQgbnJfcmVncyAxNAotIHNldCBieXRl X3JlZ3MoMSkgYWwKLSBzZXQgYnl0ZV9yZWdzKDIpIGJsCi0gc2V0IGJ5dGVfcmVncygzKSBjbAot QEAgLTY3LDYgKzY2LDEwIEBAIHNldCBieXRlX3JlZ3MoMTEpIHIxMmwKLSBzZXQgYnl0ZV9yZWdz KDEyKSByMTNsCi0gc2V0IGJ5dGVfcmVncygxMykgcjE0bAotIHNldCBieXRlX3JlZ3MoMTQpIHIx NWwKLStzZXQgYnl0ZV9yZWdzKDE1KSBhaAotK3NldCBieXRlX3JlZ3MoMTYpIGJoCi0rc2V0IGJ5 dGVfcmVncygxNykgY2gKLStzZXQgYnl0ZV9yZWdzKDE4KSBkaAotIAotIGdkYl90ZXN0ICJicmVh ayBbZ2RiX2dldF9saW5lX251bWJlciAiZmlyc3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSAgICAg ICAgICAiQnJlYWtwb2ludCAuKiBhdCAuKiR7c3JjZmlsZX0uKiIgXAotQEAgLTc5LDEyICs4Miwx OSBAQCBmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gCi0gICAgICAgICAi Y2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotIH0KLSAKLStmb3IgeyBzZXQgciAx IH0geyAkciA8PSA0ICB9IHsgaW5jciByIH0gewotKyAgICBzZXQgaCBbZXhwciAkciArIDE0XQot KyAgICBnZGJfdGVzdCAicHJpbnQveCBcJCRieXRlX3JlZ3MoJGgpIiBcCi0rICAgICAgICAiLi4g PSAweFtmb3JtYXQgJXggJHJdMiIgXAotKyAgICAgICAgImNoZWNrIGNvbnRlbnRzIG9mICUkYnl0 ZV9yZWdzKCRoKSIKLSt9Ci0rCi0gZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJzZWNvbmQgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSAgICAgICAgICAiQnJlYWtwb2ludCAuKiBh dCAuKiR7c3JjZmlsZX0uKiIgXAotICAgICAgICAgICJzZXQgc2Vjb25kIGJyZWFrcG9pbnQgaW4g bWFpbiIKLSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gc2Vjb25kIGJy ZWFrcG9pbnQgaW4gbWFpbiIKLSAKLS1mb3IgeyBzZXQgciA3IH0geyAkciA8PSAkbnJfcmVncyAg fSB7IGluY3IgciB9IHsKLStmb3IgeyBzZXQgciA3IH0geyAkciA8PSAxNCAgfSB7IGluY3IgciB9 IHsKLSAgICAgZ2RiX3Rlc3QgInByaW50L3ggXCQkYnl0ZV9yZWdzKCRyKSIgXAotICAgICAgICAg Ii4uID0gMHhbZm9ybWF0ICV4ICRyXTEiIFwKLSAgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAl JGJ5dGVfcmVncygkcikiCi1AQCAtOTQsNiArMTA0LDExIEBAIGZvciB7IHNldCByIDEgfSB7ICRy IDw9IDYgIH0geyBpbmNyIHIgfSAKLSAgIGdkYl90ZXN0ICJzZXQgdmFyIFwkJGJ5dGVfcmVncygk cikgPSAkciIgIiIgInNldCAlJGJ5dGVfcmVncygkcikiCi0gfQotIAotK2ZvciB7IHNldCByIDEg fSB7ICRyIDw9IDQgIH0geyBpbmNyIHIgfSB7Ci0rICBzZXQgaCBbZXhwciAkciArIDE0XQotKyAg Z2RiX3Rlc3QgInNldCB2YXIgXCQkYnl0ZV9yZWdzKCRoKSA9ICRoIiAiIiAic2V0ICUkYnl0ZV9y ZWdzKCRoKSIKLSt9Ci0rCi0gZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ0 aGlyZCBicmVha3BvaW50IGhlcmUiXSIgXAotICAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4q JHtzcmNmaWxlfS4qIiBcCi0gICAgICAgICAgInNldCB0aGlyZCBicmVha3BvaW50IGluIG1haW4i Ci1AQCAtMTA1LDcgKzEyMCwxNCBAQCBmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5j ciByIH0gCi0gICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotIH0K LSAKLS1mb3IgeyBzZXQgciA3IH0geyAkciA8PSAkbnJfcmVncyAgfSB7IGluY3IgciB9IHsKLStm b3IgeyBzZXQgciAxIH0geyAkciA8PSA0ICB9IHsgaW5jciByIH0gewotKyAgICBzZXQgaCBbZXhw ciAkciArIDE0XQotKyAgICBnZGJfdGVzdCAicHJpbnQgXCQkYnl0ZV9yZWdzKCRoKSIgXAotKyAg ICAgICAgIi4uID0gJGgiIFwKLSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVn cygkaCkiCi0rfQotKwotK2ZvciB7IHNldCByIDcgfSB7ICRyIDw9IDE0ICB9IHsgaW5jciByIH0g ewotICAgZ2RiX3Rlc3QgInNldCB2YXIgXCQkYnl0ZV9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUk Ynl0ZV9yZWdzKCRyKSIKLSB9Ci0gCi1AQCAtMTE0LDcgKzEzNiw3IEBAIGdkYl90ZXN0ICJicmVh ayBbZ2RiX2dldF9saW5lX251bWJlciAiZm8KLSAgICAgICAgICAic2V0IGZvcnRoIGJyZWFrcG9p bnQgaW4gbWFpbiIKLSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gZm9y dGggYnJlYWtwb2ludCBpbiBtYWluIgotIAotLWZvciB7IHNldCByIDcgfSB7ICRyIDw9ICRucl9y ZWdzICB9IHsgaW5jciByIH0gewotK2ZvciB7IHNldCByIDcgfSB7ICRyIDw9IDE0ICB9IHsgaW5j ciByIH0gewotICAgICBnZGJfdGVzdCAicHJpbnQgXCQkYnl0ZV9yZWdzKCRyKSIgXAotICAgICAg ICAgIi4uID0gJHIiIFwKLSAgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVncygk cikiCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTc4MjUwLWF2eC0xMG9mMTAtcHBjLnBhdGNoIGIvZ2Ri LWJ6NTc4MjUwLWF2eC0xMG9mMTAtcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBjNWNlMjc1Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMTBvZjEwLXBwYy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA0L21zZzAwMDU2Lmh0bWwKLQotbGludXgtcHBjLWxvdy5j OjU5OTogZXJyb3I6IGluY29tcGF0aWJsZSB0eXBlcyB3aGVuIGluaXRpYWxpemluZyB0eXBlIOKA mGVudW0gcmVnc2V0X3R5cGXigJkgdXNpbmcgdHlwZSDigJh2b2lkICgqKShzdHJ1Y3QgcmVnY2Fj aGUgKiwgdm9pZCAqKeKAmQotbGludXgtcHBjLWxvdy5jOjU5OTogd2FybmluZzogaW5pdGlhbGl6 YXRpb24gZnJvbSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlCi0KLS0tLSBhL2dkYi9nZGJzZXJ2 ZXIvbGludXgtcHBjLWxvdy5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwot QEAgLTU5NCw3ICs1OTQsNyBAQCBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9 IHsKLSAgICAgIFBQQ19QVFJBQ0VfR0VUUkVHUy4gICovCi0gICB7IFBUUkFDRV9HRVRWU1hSRUdT LCBQVFJBQ0VfU0VUVlNYUkVHUywgMCwgU0laRU9GX1ZTWFJFR1MsIEVYVEVOREVEX1JFR1MsCi0g ICBwcGNfZmlsbF92c3hyZWdzZXQsIHBwY19zdG9yZV92c3hyZWdzZXQgfSwKLS0gIHsgUFRSQUNF X0dFVFZSUkVHUywgUFRSQUNFX1NFVFZSUkVHUywgU0laRU9GX1ZSUkVHUywgRVhURU5ERURfUkVH UywKLSsgIHsgUFRSQUNFX0dFVFZSUkVHUywgUFRSQUNFX1NFVFZSUkVHUywgMCwgU0laRU9GX1ZS UkVHUywgRVhURU5ERURfUkVHUywKLSAgICAgcHBjX2ZpbGxfdnJyZWdzZXQsIHBwY19zdG9yZV92 cnJlZ3NldCB9LAotICAgeyBQVFJBQ0VfR0VURVZSUkVHUywgUFRSQUNFX1NFVEVWUlJFR1MsIDAs IDMyICogNCArIDggKyA0LCBFWFRFTkRFRF9SRUdTLAotICAgICBwcGNfZmlsbF9ldnJyZWdzZXQs IHBwY19zdG9yZV9ldnJyZWdzZXQgfSwKCmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTEw b2YxMC5wYXRjaCBiL2dkYi1iejU3ODI1MC1hdngtMTBvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA0MTE5NmMzLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngt MTBvZjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODI3MSArMCwwIEBACi1bIEJhY2twb3J0 ZWQuICBdCi0KLWdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZGV2ZWwvZ2RiL2hqbC9hdngu Z2l0Ci1oamwvYXZ4aAotYWViYWUzNmMyYThiNzNhZTUxMzE5ZmZmNTRmYzM5ZjIyMGYwODI0YQot Ci0tLS0gLi9iZmQvQ2hhbmdlTG9nLnhzdGF0ZQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw MCArMDEwMAotKysrIC4vYmZkL0NoYW5nZUxvZy54c3RhdGUJMjAxMC0wNC0wMyAyMToxMjozMi4w MDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTQgQEAKLSsyMDEwLTAxLTI3ICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogZWxmLmMgKGVsZmNvcmVfZ3Jva19ub3RlKTog UmVwbGFjZSBOVF8zODZfWFNUQVRFIHdpdGgKLSsJTlRfWDg2X1hTVEFURS4KLSsJKGVsZmNvcmVf d3JpdGVfeHN0YXRlcmVnKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yNyAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGVsZi1iZmQuaCAoZWxmY29yZV93cml0ZV94c3Rh dGVyZWcpOiBOZXcuCi0rCi0rCSogZWxmLmMgKGVsZmNvcmVfZ3Jva194c3RhdGVyZWcpOiBOZXcu Ci0rCShlbGZjb3JlX3dyaXRlX3hzdGF0ZXJlZyk6IExpa2V3aXNlLgotKwkoZWxmY29yZV9ncm9r X25vdGUpOiBIYW5kbGUgTlRfMzg2X1hTVEFURS4KLSsJKGVsZmNvcmVfd3JpdGVfcmVnaXN0ZXJf bm90ZSk6IEhhbmRsZSAucmVnLXhzdGF0ZSBzZWN0aW9uLgotLS0tIC4vZ2RiL0NoYW5nZUxvZy5h dngJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9DaGFuZ2VM b2cuYXZ4CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDMw NiBAQAotKzIwMTAtMDMtMDQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJ KiBjb21tb24vaTM4Ni14c3RhdGUuaCAoSTM4Nl9YU1RBVEVfU1NFX01BU0tfU1RSSU5HKTogUmVt b3ZlZC4KLSsJKEkzODZfWFNUQVRFX0FWWF9NQVNLX1NUUklORyk6IExpa2V3aXNlLgotKwkoSTM4 Nl9YU1RBVEVfTUFYX01BU0tfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShJMzg2X1hTVEFURV9TU0Vf U0laRV9TVFJJTkcpOiBMaWtld2lzZS4KLSsJKEkzODZfWFNUQVRFX0FWWF9TSVpFX1NUUklORyk6 IExpa2V3aXNlLgotKwkoSTM4Nl9YU1RBVEVfTUFYX1NJWkVfU1RSSU5HKTogTGlrZXdpc2UuCi0r Ci0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogUmVwbGFjZQotKwlJMzg2X1hT VEFURV9NQVhfU0laRV9TVFJJTkcvSTM4Nl9YU1RBVEVfTUFYX01BU0tfU1RSSU5HIHdpdGgKLSsJ STM4Nl9YU1RBVEVfTUFYX1NJWkUvSTM4Nl9YU1RBVEVfTUFYX01BU0suCi0rCi0rMjAxMC0wMy0w NCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYyAo YW1kNjRfc3VwcGx5X3hzdGF0ZXJlZ3NldCk6IERvbid0IGNoZWNrCi0rCXNpemVvZl94c3RhdGVy ZWdzZXQuCi0rCShhbWQ2NF9jb2xsZWN0X3hzdGF0ZXJlZ3NldCk6IExpa2V3aXNlLgotKwkoYW1k NjRfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9pbml0X2Fi aSk6IERvbid0IHNldCBzaXplb2ZfeHN0YXRlcmVnc2V0LgotKwotKwkqIGkzODYtdGRlcC5jIChp Mzg2X3N1cHBseV94c3RhdGVyZWdzZXQpOiBEb24ndCBjaGVjawotKwlzaXplb2ZfeHN0YXRlcmVn c2V0LgotKwkoaTM4Nl9jb2xsZWN0X3hzdGF0ZXJlZ3NldCk6IExpa2V3aXNlLgotKwkoaTM4Nl9y ZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24pOiBMaWtld2lzZS4KLSsJKGkzODZfZ2RiYXJjaF9pbml0 KTogRG9uJ3Qgc2V0IHNpemVvZl94c3RhdGVyZWdzZXQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdk YmFyY2hfdGRlcCk6IFJlbW92ZSBzaXplb2ZfeHN0YXRlcmVnc2V0LgotKwotKzIwMTAtMDMtMDQg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQu YyAoYW1kNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IENhbGwKLSsJaTM4Nl9saW51eF91cGRh dGVfeHN0YXRlcmVnc2V0LgotKwkqIGkzODYtbGludXgtbmF0LmMgKGkzODZfbGludXhfcmVhZF9k ZXNjcmlwdGlvbik6IExpa2V3aXNlLgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jIChpMzg2X2xp bnV4X3VwZGF0ZV94c3RhdGVyZWdzZXQpOiBOZXcuCi0rCSogaTM4Ni1saW51eC10ZGVwLmggKGkz ODZfbGludXhfdXBkYXRlX3hzdGF0ZXJlZ3NldCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDMtMDMg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQu YyAoeHN0YXRlX3NpemUpOiBOZXcuCi0rCSh4c3RhdGVfc2l6ZV9uX29mX2ludDY0KTogTGlrZXdp c2UuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVcGRhdGVkLgot KwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShh bWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogVXNlIEkzODZfWFNUQVRFX1NTRV9TSVpFCi0r CWluc3RlYWQgb2YgSTM4Nl9YU1RBVEVfTUFYX1NJWkUuICBTZXQgeHN0YXRlX3NpemUgYW5kCi0r CXhzdGF0ZV9zaXplX25fb2ZfaW50NjQuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAoeHN0YXRl X3NpemUpOiBOZXcuCi0rCSh4c3RhdGVfc2l6ZV9uX29mX2ludDY0KTogTGlrZXdpc2UuCi0rCShm ZXRjaF94c3RhdGVyZWdzKTogVXBkYXRlZC4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBMaWtld2lz ZS4KLSsJKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFVzZSBJMzg2X1hTVEFURV9TU0Vf U0laRQotKwlpbnN0ZWFkIG9mIEkzODZfWFNUQVRFX01BWF9TSVpFLiAgU2V0IHhzdGF0ZV9zaXpl IGFuZAotKwl4c3RhdGVfc2l6ZV9uX29mX2ludDY0LgotKwotKwkqIGNvbW1vbi9pMzg2LXhzdGF0 ZS5oIChJMzg2X1hTVEFURV9TSVpFKTogTmV3LgotKwotKzIwMTAtMDMtMDIgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb25maWcvZGpncHAvZm5jaGFuZ2UubHN0OiBB ZGQgeDg2IEFWWCBYTUwgZmlsZXMuCi0rCi0rMjAxMC0wMy0wMiAgSC5KLiBMdSAgPGhvbmdqaXUu bHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChYU1RBVEVfTUFYX1NJWkVf Tl9PRl9JTlQ2NCk6IE5ldy4KLSsJKGFtZDY0X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVy cyk6IFVwZGF0ZWQuCi0rCShhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMpOiBM aWtld2lzZS4KLSsJKGFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSsJ KiBhbWQ2NC1saW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6 IExpa2V3aXNlLgotKwotKwkqIGkzODYtbGludXgtbmF0LmMgIChYU1RBVEVfTUFYX1NJWkVfTl9P Rl9JTlQ2NCk6IE5ldy4KLSsJKGZldGNoX3hzdGF0ZXJlZ3MpOiBVcGRhdGVkLgotKwkoc3RvcmVf eHN0YXRlcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTog TGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFk X3hjcjApOiBVcGRhdGVkLgotKwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfeGNyMCk6IExpa2V3aXNl LgotKwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSsKLSsJ KiBpMzg2LXRkZXAuYyAoaTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9wKTogVXBkYXRlZC4KLSsJKGkz ODZfdmFsaWRhdGVfdGRlc2NfcCk6IExpa2V3aXNlLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBM aWtld2lzZS4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfZnhzYXZlKTogVXBkYXRl ZC4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKwkqIGNvbW1vbi9pMzg2 LXhzdGF0ZS5oOiBDaGFuZ2UgWFNUQVRFIHRvIEkzODZfWFNUQVRFIGluIG1hY3Jvcy4KLSsKLSsy MDEwLTAzLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogTWFrZWZp bGUuaW4gKGkzODYteHN0YXRlLm8pOiBSZW1vdmVkLgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5j IChhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVc2UKLSsJWFNUQVRFX01B WF9TSVpFX05fT0ZfSU5UNjQgYW5kIFhTVEFURV9NQVhfU0laRS4KLSsJKGFtZDY0X2xpbnV4X3N0 b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkoYW1kNjRfbGludXhfcmVhZF9k ZXNjcmlwdGlvbik6IEFkZCBzdGF0aWMgeGNyMCBhbmQgZ2V0IGl0Ci0rCWZyb20gSTM4Nl9MSU5V WF9YU0FWRV9YQ1IwX09GRlNFVC4gIFVzZSBYU1RBVEVfTUFYX1NJWkVfTl9PRl9JTlQ2NAotKwlh bmQgWFNUQVRFX01BWF9TSVpFLgotKwkoX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTogRG9u J3QgY2FsbCBpMzg2X3hzdGF0ZV9pbml0LgotKwotKwkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIGNo ZWNrIGZvciBjcHVpZC5oLgotKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCi0rCSogY29uZmln dXJlOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChmZXRjaF94c3RhdGVyZWdz KTogVXNlCi0rCVhTVEFURV9NQVhfU0laRV9OX09GX0lOVDY0IGFuZCBYU1RBVEVfTUFYX1NJWkUu Ci0rCShzdG9yZV94c3RhdGVyZWdzKTogTGlrZXdpc2UuCi0rCShpMzg2X2xpbnV4X3JlYWRfZGVz Y3JpcHRpb24pOiBBZGQgc3RhdGljIHhjcjAgYW5kIGdldCBpdAotKwlmcm9tIEkzODZfTElOVVhf WFNBVkVfWENSMF9PRkZTRVQuICBVc2UgWFNUQVRFX01BWF9TSVpFX05fT0ZfSU5UNjQKLSsJYW5k IFhTVEFURV9NQVhfU0laRS4KLSsJKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0KTogRG9uJ3Qg Y2FsbCBpMzg2X3hzdGF0ZV9pbml0LgotKwotKwkqIGNvbW1vbi9pMzg2LWNwdWlkLmg6IFJlbW92 ZWQuCi0rCSogY29tbW9uL2kzODYteHN0YXRlLmM6IExpa2V3aXNlLgotKwotKwkqIGNvbW1vbi9p Mzg2LXhzdGF0ZS5oICh4c3RhdGVfc3RhdHVzKTogUmVtb3ZlZC4KLSsJKGkzODZfeHN0YXRlX3R5 cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfeHN0YXRlKTogTGlrZXdpc2UuCi0rCShpMzg2X3hzdGF0 ZV9pbml0KTogTGlrZXdpc2UuCi0rCShYU1RBVEVfTUFYX1NJWkVfTl9PRl9JTlQ2NCk6IE5ldy4K LSsKLSsJKiBjb25maWcvaTM4Ni9saW51eC5taCAoTkFUREVQRklMRVMpOiBSZW1vdmUgaTM4Ni14 c3RhdGUuby4KLSsJKiBjb25maWcvaTM4Ni9saW51eDY0Lm1oIChOQVRERVBGSUxFUyk6IExpa2V3 aXNlLgotKwotKzIwMTAtMDItMDEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2dfcGFja2V0X3NpemUpOiBNYWtl IGl0IGNvbnN0LgotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfZ19wYWNrZXRfc2l6ZSk6IExpa2V3 aXNlLgotKwkqIGkzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2dfcGFja2V0X3NpemUpOiBM aWtld2lzZS4KLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nX3BhY2tldF9zaXplKTogTGlrZXdpc2Uu Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfaW5pdF9hYmkpOiBSZW1vdmUK LSsJaTM4Nl9saW51eF9nX3BhY2tldF9zaXplLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3Jl Z2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMpOiBVcGRhdGVkLgotKwkqIGkzODYtdGRlcC5oIChpMzg2 X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAxICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5j IChhbWQ2NF9saW51eF9nX3BhY2tldF9zaXplKTogQWRkIGtleS4KLSsJKiBpMzg2LWxpbnV4LXRk ZXAuYyAoaTM4Nl9saW51eF9nX3BhY2tldF9zaXplKTogTGlrZXdpc2UuCi0rCSogaTM4Ni10ZGVw LmMgKGkzODZfZ19wYWNrZXRfc2l6ZSk6IExpa2V3aXNlLgotKwotKwkqIGFtZDY0LXRkZXAuYyAo YW1kNjRfZ19wYWNrZXRfc2l6ZSk6IE5ldy4KLSsJKGFtZDY0X2luaXRfYWJpKTogQ2FsbCBpMzg2 X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKEkzODZfUFJP UEVSVFlfU1NFKTogUmVtb3ZlZC4KLSsJKEkzODZfUFJPUEVSVFlfQVZYKTogTGlrZXdpc2UuCi0r CShpMzg2X3RkZXNjX3NzZSk6IExpa2V3aXNlLgotKwkoaTM4Nl90ZGVzY19hdngpOiBMaWtld2lz ZS4KLSsJKGkzODZfaW5pdF90ZGVzYyk6IExpa2V3aXNlLgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3Bh Y2tldF9ndWVzc2VzKTogVXBkYXRlZC4KLSsJKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0 KTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni10ZGVwLmggKEkzODZfUFJPUEVSVFlfU1NFKTogTmV3 LgotKwkoSTM4Nl9QUk9QRVJUWV9BVlgpOiBMaWtld2lzZS4KLSsJKEFNRDY0X1BST1BFUlRZX1NT RSk6IExpa2V3aXNlLgotKwkoQU1ENjRfUFJPUEVSVFlfQVZYKTogTGlrZXdpc2UuCi0rCShpMzg2 X2dfcGFja2V0X3NpemUpOiBBZGQga2V5LgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVz c2VzKTogVXBkYXRlZC4KLSsKLSsyMDEwLTAxLTMxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogcmVnZm9ybWF0cy9yZWctaTM4Ni1hdngtbGludXguZGF0OiBBZGQgYSBj b21tZW50IGZvciBvc2FiaS4KLSsJKiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LWxpbnV4LmRh dDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0zMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLWkzODYtYXZ4LWxpbnV4LmRhdDogQWRkIGEgY29t bWVudCBmb3IgeG1sYXJjaC4KLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5kYXQ6IExpa2V3 aXNlLgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4K LSsJKiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rMjAxMC0w MS0zMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4 LXRkZXAuYyAoYW1kNjRfbGludXhfZ19wYWNrZXRfc2l6ZSk6IE5ldy4KLSsJKGFtZDY0X2xpbnV4 X2luaXRfYWJpKTogUGFzcyBhbWQ2NF9saW51eF9nX3BhY2tldF9zaXplIHRvCi0rCWkzODZfcmVn aXN0ZXJfZ19wYWNrZXRfZ3Vlc3Nlcy4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9s aW51eF9nX3BhY2tldF9zaXplKTogTmV3LgotKwkoaTM4Nl9saW51eF9pbml0X2FiaSk6IFBhc3Mg aTM4Nl9saW51eF9nX3BhY2tldF9zaXplIHRvCi0rCWkzODZfcmVnaXN0ZXJfZ19wYWNrZXRfZ3Vl c3Nlcy4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2Vz KTogVXBkYXRlZCB0bwotKwl0YWtlIGFuIGFycmF5IG9mIHRoZSBnL0cgcGFja2V0IHNpemVzLgot KwkoaTM4Nl9nX3BhY2tldF9zaXplKTogTmV3LgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBQYXNz IGkzODZfZ19wYWNrZXRfc2l6ZSB0bwotKwlpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMu Ci0rCi0rCSogaTM4Ni10ZGVwLmggKGkzODZfZ19wYWNrZXRfc2l6ZV9pbmRleCk6IE5ldy4KLSsJ KGkzODZfcmVnaXN0ZXJfZ19wYWNrZXRfZ3Vlc3Nlcyk6IFVwZGF0ZWQuCi0rCi0rMjAxMC0wMS0z MSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuaCAo QU1ENjRfR19QQUNLRVRfU0laRV9BVlgpOiBDb3JyZWN0IGNvbW1lbnRzLgotKwkqIGkzODYtdGRl cC5oIChJMzg2X0dfUEFDS0VUX1NJWkVfQVZYKTogTGlrZXdpc2UuCi0rCQotKzIwMTAtMDEtMjIg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4 N19zdXBwbHlfZnhzYXZlKTogUmVtb3ZlIHZlY3RvciB1bml0IGNoZWNrLgotKwotKzIwMTAtMDEt MjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAo aTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0X2luaXQpOiBSZW1vdmUgdGhlCi0rCWR1cGxpY2F0ZS4K LSsKLSsyMDEwLTAxLTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog aTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogQ2FsbCAKLSsJaTM4 Nl94c3RhdGVfaW5pdCBhbmQgaW5pdGlhbGl6ZSB2ZWN0b3JfdW5pdCBwcm9wZXJseS4KLSsKLSsy MDEwLTAxLTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10 ZGVwLmMgKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogSW5pdGlhbGl6ZQotKwl2ZWN0 b3JfdW5pdCBvbmx5IGlmIHRhcmdldF9kZXNjIGlzbid0IE5VTEwuCi0rCi0rMjAxMC0wMS0yMSAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2 X3NzZV90eXBlKTogUmVuYW1lZCB0byAuLi4KLSsJKGkzODZfdmVjdG9yX3R5cGUpOiBUaGlzLiAg VXBkYXRlZC4KLSsJKGkzODZfcmVnaXN0ZXJfdHlwZSk6IFVwZGF0ZWQuCi0rCi0rCSogaTM4Ni10 ZGVwLmggKGkzODZfc3NlX3R5cGUpOiBSZW5hbWVkIHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfdHlw ZSk6IFRoaXMuCi0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9yZWdpc3Rlcl90eXBlKTogVXBk YXRlZC4KLSsKLSsyMDEwLTAxLTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9yZWdpc3Rlcl9uYW1lKTogUmVwbGFjZSBzc2VfdW5p dCB3aXRoCi0rCXZlY3Rvcl91bml0LgotKwkoYW1kNjRfaW5pdF9hYmkpOiBMaWtld2lzZS4KLSsJ KiBpMzg2LXRkZXAuYyAoaTM4Nl9yZWdpc3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0rCShpMzg2X3Nz ZV90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMpOiBM aWtld2lzZS4KLSsJKGkzODZfZ2RiYXJjaF9zc2VfdW5pdF9pbml0KTogUmVuYW1lZCB0byAuLi4K LSsJKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogVGhpcy4KLSsJKGkzODZfZ2RiYXJj aF9pbml0KTogVXBkYXRlZC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoeDg2X3NzZV91bml0KTogUmVu YW1lZCB0byAuLi4KLSsJKHg4Nl92ZWN0b3JfdW5pdCk6IFRoaXMuCi0rCShpMzg2X2dkYmFyY2hf c3NlX3VuaXRfaW5pdCk6IFJlbmFtZWQgdG8gLi4uCi0rCShpMzg2X2dkYmFyY2hfdmVjdG9yX3Vu aXRfaW5pdCk6IFRoaXMuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X2Z4c2F2ZSk6 IFJlcGxhY2Ugc3NlX3VuaXQgd2l0aAotKwl2ZWN0b3JfdW5pdC4KLSsKLSsyMDA5LTEwLTE0ICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5j IChhbWQ2NF9saW51eF9pbml0X2FiaSk6IENhbGwKLSsJcmVnaXN0ZXJfcmVtb3RlX2dfcGFja2V0 X2d1ZXNzLgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfcmVnaXN0ZXJfbmFtZXMpOiBSZW5h bWVkIHRvIC4uLgotKwkoYW1kNjRfc3NlX3JlZ2lzdGVyX25hbWVzKTogVGhpcy4gIFJlbW92ZSBB VlggcmVnaXN0ZXJzLgotKwkoYW1kNjRfYXZ4X3JlZ2lzdGVyX25hbWVzKTogTmV3LgotKwkoQU1E NjRfTlVNX1JFR1MpOiBVcGRhdGVkLgotKwkoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6IEhhbmRsZSBz c2VfdW5pdC4KLSsJKGFtZDY0X3JlZ2lzdGVyX3R5cGUpOiBSZW1vdmUgQVZYIHJlZ2lzdGVycy4K LSsJKGFtZDY0X2luaXRfYWJpKTogQ2FsbCBpMzg2X2dkYmFyY2hfc3NlX3VuaXRfaW5pdCB0bwot Kwlpbml0aWFsaXplIHNzZV91bml0LgotKwotKwkqIGFtZDY0LXRkZXAuaCAoQU1ENjRfR19QQUNL RVRfU0laRV9TU0UpOiBOZXcuCi0rCShBTUQ2NF9HX1BBQ0tFVF9TSVpFX0FWWCk6IExpa2V3aXNl LgotKwotKwkqIGRlZnMuaCAoTUFYX1JFR0lTVEVSX1NJWkUpOiBJbmNyZWFzZSB0byAzMi4KLSsK LSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9pbml0X2FiaSk6IENhbGwKLSsJaTM4 Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzLgotKwotKwkqIGkzODYtdGRlcC5jOiBJbmNsdWRl ICJyZW1vdGUuaCIgYW5kICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiLgotKwkoSTM4Nl9QUk9QRVJU WV9TU0UpOiBOZXcuCi0rCShJMzg2X1BST1BFUlRZX0FWWCk6IExpa2V3aXNlLgotKwkoaTM4Nl90 ZGVzY19zc2UpOiBMaWtld2lzZS4KLSsJKGkzODZfdGRlc2NfYXZ4KTogTGlrZXdpc2UuCi0rCShp Mzg2X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoaTM4Nl92ZWMxMjhfdHlwZSk6 IExpa2V3aXNlLgotKwkoaTM4Nl92ZWMyNTZfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9pbml0 X3RkZXNjKTogTGlrZXdpc2UuCi0rCShpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMpOiBM aWtld2lzZS4KLSsJKGkzODZfZ2RiYXJjaF9zc2VfdW5pdF9pbml0KTogTGlrZXdpc2UuCi0rCShp Mzg2X3JlZ2lzdGVyX25hbWVzKTogUmVuYW1lZCB0byAuLi4KLSsJKGkzODZfc3NlX3JlZ2lzdGVy X25hbWVzKTogVGhpcy4KLSsJKGkzODZfbnVtX3JlZ2lzdGVyX25hbWVzKTogVXBkYXRlZC4KLSsJ KGkzODZfcmVnaXN0ZXJfbmFtZSk6IEhhbmRsZSBzc2VfdW5pdC4KLSsJKGkzODZfc3NlX3R5cGUp OiBMaWtld2lzZS4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTogQ2FsbCBpMzg2X2dkYmFyY2hfc3Nl X3VuaXRfaW5pdCB0bwotKwlpbml0aWFsaXplIHNzZV91bml0LiAgQ2FsbCBpMzg2X3JlZ2lzdGVy X2dfcGFja2V0X2d1ZXNzZXMuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X3RkZXApOiBDYWxsIGkzODZf dGRlc2NfaW5pdC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoeDg2X3NzZV91bml0KTogTmV3LgotKwko STM4Nl9HX1BBQ0tFVF9TSVpFX1NTRSk6IExpa2V3aXNlLgotKwkoSTM4Nl9HX1BBQ0tFVF9TSVpF X0FWWCk6IExpa2V3aXNlLgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzKTogTGlr ZXdpc2UuCi0rCShpMzg2X2dkYmFyY2hfc3NlX3VuaXRfaW5pdCk6IExpa2V3aXNlLgotKwkoZ2Ri YXJjaF90ZGVwKTogQWRkIHNzZV91bml0LgotKwkoSTM4Nl9NQVhfUkVHSVNURVJfU0laRSk6IElu Y3JlYXNlIHRvIDMyLgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X3N1cHBseV9meHNhdmUpOiBB c3NlcnQgc3NlX3VuaXQgb24gU1NFCi0rCXJlZ2lzdGVycy4KLSsKLSsJKiByZWdmb3JtYXRzL3Jl Zy1pMzg2LWF2eC1saW51eC5kYXQ6IE5ldy4KLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5k YXQ6IExpa2V3aXNlLgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBM aWtld2lzZS4KLSsJKiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0r Ci0rCSogcmVnZm9ybWF0cy9yZWcteDg2LTY0LmRhdDogQWRkIHhtbGFyY2guCi0tLS0gLi9nZGIv Q2hhbmdlTG9nLnBzZXVkbwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL0NoYW5nZUxvZy5wc2V1ZG8JMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0wLDAgKzEsMTg5IEBACi0rMjAxMC0wMi0yNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X21teF9yZWdudW1fcCk6IE9wdGlt aXplZC4KLSsJKGkzODZfYnl0ZV9yZWdudW1fcCk6IExpa2V3aXNlLgotKwkoaTM4Nl93b3JkX3Jl Z251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X2R3b3JkX3JlZ251bV9wKTogTGlrZXdpc2UuCi0r Ci0rMjAxMC0wMi0xOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkz ODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBNaW5pbWl6ZSBmdW5jdGlvbgot KwljYWxscy4KLSsKLSsyMDEwLTAyLTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+ Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcCk6IERvbid0IGlu Y2x1ZGUgcHNldWRvCi0rCXJlZ2lzdGVycywgZXhjZXB0IGZvciBNWFgsIGluIGFueSByZWdpc3Rl ciBncm91cHMuCi0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCBtbTBfcmVnbnVt IG9ubHkgb25jZS4KLSsKLSsyMDEwLTAyLTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk6IERv bid0IGNoZWNrIE1NWAotKwlwc2V1ZG8gcmVnaXN0ZXJzLiAgQ2FsbCBpMzg2X3BzZXVkb19yZWdp c3Rlcl9uYW1lLgotKwkoYW1kNjRfaW5pdF9hYmkpOiBSZXN0b3JlIG51bV94bW1fcmVncy4KLSsK LSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9tbXhfbmFtZXMpOiBNYWtlIGl0IHN0YXRpYy4KLSsJKGkz ODZfbW14X3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1l KTogTWFrZSBpdCBnbG9iYWwuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGkzODZfbW14X3JlZ251bV9w KTogUmVtb3ZlZC4KLSsJKGkzODZfbW14X25hbWVzKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVk b19yZWdpc3Rlcl9uYW1lKTogTmV3LgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBD YWxsIHNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncwotKwliZWZvcmUgdGRlc2NfdXNlX3JlZ2lz dGVycy4KLSsKLSsyMDEwLTAyLTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogaTM4Ni10ZGVwLmMgKGkzODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBDaGVjayBpbnZh bGlkCi0rCXJlZ2lzdGVyIG51bWJlci4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTog TGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBOZXcu Ci0rCShhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSsJKGFtZDY0X2lu aXRfYWJpKTogQ2FsbCBzZXRfZ2RiYXJjaF9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCBhbmQKLSsJc2V0 X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVyX3dyaXRlLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2 X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTWFrZSBpdCBnbG9iYWwuCi0rCURvbid0IGhhbmRsZSA2 NGJpdCBub3IgRFdPUkQuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNl LgotKwotKwkqIGkzODYtdGRlcC5oIChpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTmV3Lgot KwkoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTE4 ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChh bWQ2NF9ieXRlX25hbWVzKTogTWFrZSBpdCBzdGF0aWMuCi0rCShhbWQ2NF93b3JkX25hbWVzKTog TGlrZXdpc2UuCi0rCShhbWQ2NF9kd29yZF9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcHNl dWRvX3JlZ2lzdGVyX25hbWUpOiBOZXcuCi0rCShhbWQ2NF9pbml0X2FiaSk6IFNldCBudW1fYnl0 ZV9yZWdzLCBudW1fd29yZF9yZWdzLCBudW1fZHdvcmRfcmVncwotKwlhbmQgbnVtX21teF9yZWdz LiAgQ2FsbCBzZXRfdGRlc2NfcHNldWRvX3JlZ2lzdGVyX25hbWUuCi0rCi0rCSogaTM4Ni10ZGVw LmMgKGkzODZfbW14X25hbWVzKTogTWFrZSBpdCBnbG9iYWwuCi0rCShpMzg2X21teF9yZWdudW1f cCk6IExpa2V3aXNlLgotKwkoaTM4Nl9ieXRlX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2 X3dvcmRfcmVnbnVtX3ApOiBMaWtld2lzZS4KLSsJKGkzODZfZHdvcmRfcmVnbnVtX3ApOiBMaWtl d2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUgWEJGRDY0LgotKwko aTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCk6IFJlbW92ZSBCRkQ2NC4KLSsJKGkzODZfcHNldWRv X3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IE1vdmUg c2V0X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVyX3JlYWQgYW5kCi0rCXNldF9nZGJhcmNoX3BzZXVk b19yZWdpc3Rlcl93cml0ZSBiZWZvcmUgZ2RiYXJjaF9pbml0X29zYWJpLgotKwotKwkqIGkzODYt dGRlcC5oIChpMzg2X2J5dGVfcmVnbnVtX3ApOiBOZXcuCi0rCShpMzg2X3dvcmRfcmVnbnVtX3Ap OiBMaWtld2lzZS4KLSsJKGkzODZfZHdvcmRfcmVnbnVtX3ApOiBMaWtld2lzZS4KLSsJKGkzODZf bW14X3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X21teF9uYW1lcyk6IExpa2V3aXNlLgot KwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBh bWQ2NC10ZGVwLmMgKEFNRDY0X05VTV9SRUdTKTogUmVzdG9yZWQuCi0rCi0rCSogYW1kNjQtdGRl cC5oIChBTUQ2NF9OVU1fR1JFR1MpOiBSZW1vdmVkLgotKwotKzIwMTAtMDItMTAgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKEFNRDY0X05VTV9S RUdTKTogUmVtb3ZlZC4KLSsKLSsJKiBhbWQ2NC10ZGVwLmggKEFNRDY0X05VTV9HUkVHUyk6IE5l dy4KLSsKLSsJKiBpMzg2LW50by10ZGVwLmMgKGkzODZudG9fcmVnc2V0X2lkKTogUmVwbGFjZSBJ Mzg2X05VTV9GUkVHUwotKwl3aXRoIEkzODdfTlVNX1JFR1MuCi0rCSogaTM4Ni10ZGVwLmMgKGkz ODZfZ28zMl9pbml0X2FiaSk6IExpa2V3aXNlLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBMaWtl d2lzZS4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoaTM4Nl9yZWdudW0pOiBBZGQgSTM4Nl9NWENTUl9S RUdOVU0uCi0rCShJMzg2X05VTV9GUkVHUyk6IFJlbW92ZWQuCi0rCShJMzg2X1NTRV9OVU1fUkVH Uyk6IERlZmluZWQgd2l0aCBJMzg2X01YQ1NSX1JFR05VTS4KLSsKLSsJKiBpMzg3LXRkZXAuaCAo STM4N19OVU1fUkVHUyk6IE5ldy4KLSsKLSsyMDEwLTAyLTEwICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9pbml0X2FiaSk6IERvbid0 IHNldCBudW1feG1tX3JlZ3MuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoYW1kNjRfbGludXhfcmVnaXN0 ZXJfcmVnZ3JvdXBfcCk6IENhbGwKLSsJaTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9wIGluc3RlYWQg b2YgZGVmYXVsdF9yZWdpc3Rlcl9yZWdncm91cF9wLgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1k NjRfbnVtX3BzZXVkb19yZWdzKTogUmVtb3ZlZC4KLSsJKGFtZDY0X2luaXRfYWJpKTogRG9uJ3Qg Y2FsbCBzZXRfZ2RiYXJjaF9udW1fcHNldWRvX3JlZ3MuIERvbid0Ci0rCXNldCBtbTBfcmVnbnVt LgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X251bV9tbXhfcmVncyk6IFJlbW92ZWQuCi0rCShp Mzg2X251bV9wc2V1ZG9fcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9tbXhfcmVnbnVtX3ApOiBV cGRhdGVkLgotKwkoaTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9wKTogRG9uJ3QgaW5jbHVkZSBwc2V1 ZG8gYnl0ZSwgd29yZCwKLSsJZHdvcmQgcmVnaXN0ZXJzIGluIGdlbmVyYWxfcmVnZ3JvdXAuCi0r CShpMzg2X2dkYmFyY2hfaW5pdCk6IFVwZGF0ZWQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFy Y2hfdGRlcCk6IEFkZCBudW1fbW14X3JlZ3MuCi0rCi0rMjAxMC0wMi0wOCAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfd29yZF9uYW1l cyk6IEFkZCBhIG1pc3NpbmcgJywnLgotKwkoYW1kNjRfZHdvcmRfbmFtZXMpOiBOZXcuCi0rCShh bWQ2NF9udW1fcHNldWRvX3JlZ3MpOiBVcGRhdGVkLgotKwotKwkqIGFtZDY0LXRkZXAuaCAoYW1k NjRfZHdvcmRfbmFtZXMpOiBOZXcuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZHdvcmRfcmVn bnVtX3ApOiBOZXcuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogVXNlIGkzODZfZHdv cmRfcmVnbnVtX3AuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0r CShpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19y ZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBTZXQgbnVt X2R3b3JkX3JlZ3MgYW5kIGVheF9yZWdudW0uCi0rCi0rMjAxMC0wMi0wOCAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5p dCk6IE9wdGltaXplZC4KLSsKLSsyMDEwLTAyLTA4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9ieXRlX25hbWVzKTogTmV3LgotKwko YW1kNjRfd29yZF9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfbnVtX3BzZXVkb19yZWdzKTog TGlrZXdpc2UuCi0rCShhbWQ2NF9pbml0X2FiaSk6IENhbGwgc2V0X2dkYmFyY2hfbnVtX3BzZXVk b19yZWdzIHdpdGgKLSsJYW1kNjRfbnVtX3BzZXVkb19yZWdzLAotKwotKwkqIGFtZDY0LXRkZXAu aCAoYW1kNjRfYnl0ZV9uYW1lcyk6IE5ldy4KLSsJKGFtZDY0X3dvcmRfbmFtZXMpOiBMaWtld2lz ZS4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9udW1fYnl0ZV9yZWdzKTogUmVtb3ZlZC4KLSsJ KGkzODZfbnVtX3dvcmRfcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9ieXRlX3JlZ251bV9wKTog VXBkYXRlZC4KLSsJKGkzODZfd29yZF9yZWdudW1fcCk6IExpa2V3aXNlLgotKwkoaTM4Nl9wc2V1 ZG9fcmVnaXN0ZXJfbmFtZSk6IFN1cHBvcnQgNjRiaXQuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rl cl9yZWFkKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3 aXNlLgotKwotKzIwMTAtMDItMDggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9ieXRlX25hbWVzKTogTmV3LgotKwkoaTM4Nl93b3JkX25h bWVzKTogTGlrZXdpc2UuCi0rCShpMzg2X251bV9ieXRlX3JlZ3MpOiBMaWtld2lzZS4KLSsJKGkz ODZfbnVtX3dvcmRfcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9udW1fcHNldWRvX3JlZ3MpOiBM aWtld2lzZS4KLSsJKGkzODZfYnl0ZV9yZWdudW1fcCk6IExpa2V3aXNlLgotKwkoaTM4Nl93b3Jk X3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogSGFu ZGxlIGJ5dGUgYW5kIHdvcmQgcHNldWRvLXJlZ2lzdGVycy4KLSsJKGkzODZfcHNldWRvX3JlZ2lz dGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBMaWtl d2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCi0rCShpMzg2 X2dkYmFyY2hfaW5pdCk6IENhbGwgc2V0X2dkYmFyY2hfbnVtX3BzZXVkb19yZWdzIHdpdGgKLSsJ aTM4Nl9udW1fcHNldWRvX3JlZ3MuICBTZXQgbnVtX2J5dGVfcmVncywgbnVtX3dvcmRfcmVncywK LSsJYWxfcmVnbnVtLCBheF9yZWdudW0uICBQdXQgTU1YIHBzZXVkby1yZWdpc3RlcnMgYWZ0ZXIg d29yZAotKwlwc2V1ZG8tcmVnaXN0ZXJzLgotKwotKwkqIGkzODYtdGRlcC5oIChnZGJhcmNoX3Rk ZXApOiBBZGQgbnVtX2J5dGVfcmVncywgYWxfcmVnbnVtLAotKwludW1fd29yZF9yZWdzLCBheF9y ZWdudW0sIG51bV9kd29yZF9yZWdzIGFuZCBlYXhfcmVnbnVtLgotLS0tIC4vZ2RiL0NoYW5nZUxv Zy54Y3IJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9DaGFu Z2VMb2cueGNyCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDEzMDQgQEAKLSsyMDEwLTA0LTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogYW1kNjQtbGludXgtbmF0LmMgKGFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBD YWxsCi0rCWkzODZfbGludXhfdXBkYXRlX3hzdGF0ZXJlZ3NldC4KLSsKLSsyMDEwLTA0LTAyICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZf cHJvY2Vzc19yZWNvcmQpOiBSZXBsYWNlIGkzODZfc3NlX3JlZ251bV9wCi0rCXdpdGggaTM4Nl94 bW1fcmVnbnVtX3AuCi0rCi0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0 aW9uKTogQ2FsbAotKwlhbWQ2NF9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0IGluc3RlYWQgb2YK LSsJaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0LgotKwotKwkqIGFtZDY0LWxpbnV4LXRk ZXAuYyAoYW1kNjRfbGludXhfcmVnc2V0X3NlY3Rpb25zKTogTWFrZSBpdAotKwlzdGF0aWMuCi0r CShhbWQ2NF9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0KTogTmV3LgotKwotKwkqIGFtZDY0LWxp bnV4LXRkZXAuaCAoYW1kNjRfbGludXhfcmVnc2V0X3NlY3Rpb25zKTogUmVtb3ZlZC4KLSsJKGFt ZDY0X2xpbnV4X3VwZGF0ZV94c3RhdGVyZWdzZXQpOiBOZXcuCi0rCi0rCSogaTM4Ni1saW51eC1u YXQuYyAoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogUmVtb3ZlCi0rCWkzODZfbGludXhf cmVnc2V0X3NlY3Rpb25zIGZyb20gaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0LgotKwot KwkqIGkzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X3JlZ3NldF9zZWN0aW9ucyk6IE1ha2Ug aXQKLSsJc3RhdGljLgotKwkoaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0KTogUmVtb3Zl IHJlZ3NldF9zZWN0aW9ucy4gIFVzZQotKwlpMzg2X2xpbnV4X3JlZ3NldF9zZWN0aW9ucy4KLSsK LSsJKiBpMzg2LWxpbnV4LXRkZXAuaCAoaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMpOiBSZW1v dmVkLgotKwkoaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0KTogUmVtb3ZlIHJlZ3NldF9z ZWN0aW9ucy4KLSsJaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMuCi0rCi0rMjAxMC0wMy0yOCAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtbmF0LmMg KGZldGNoX3hzdGF0ZXJlZ3MpOiBEb24ndCBjYXN0ICZpb3YgdG8gaW50LgotKwkoc3RvcmVfeHN0 YXRlcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogRG9u J3QgY2FzdCAmaW92IHRvIGxvbmcuCi0rCi0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUu bHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtdGRlcC5oIChJMzg2X0xJTlVYX1hTQVZF X1hDUjBfT0ZGU0VUKTogVXBkYXRlCi0rCWNvbW1lbnRzLgotKwotKzIwMTAtMDMtMjggIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoeHN0 YXRlX3NpemUpOiBSZW1vdmVkLgotKwkoYW1kNjRfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0 ZXJzKTogUmVwbGFjZSB4c3RhdGVfc2l6ZQotKwl3aXRoIEkzODZfWFNUQVRFX01BWF9TSVpFLgot KwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShh bWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogVXBkYXRlZC4KLSsKLSsJKiBpMzg2LWxpbnV4 LW5hdC5jICh4c3RhdGVfc2l6ZSk6IFJlbW92ZWQuCi0rCShmZXRjaF94c3RhdGVyZWdzKTogUmVw bGFjZSB4c3RhdGVfc2l6ZSB3aXRoCi0rCUkzODZfWFNUQVRFX01BWF9TSVpFLgotKwkoZmV0Y2hf eHN0YXRlcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTog VXBkYXRlZC4KLSsKLSsJKiBjb21tb24vaTM4Ni14c3RhdGUuaCAoSTM4Nl9YU1RBVEVfTUFYX1NJ WkUpOiBOZXcuCi0rCi0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9u KTogUmVwbGFjZQotKwl1bnNpZ25lZCBsb25nIGxvbmcgd2l0aCB1aW50NjRfdC4KLSsJKiBhbWQ2 NC1saW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6Ci0rCUxp a2V3aXNlLgotKwkqIGkzODYtbGludXgtbmF0LmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlv bik6IExpa2V3aXNlLgotKwkqIGkzODYtbGludXgtdGRlcC5oIChpMzg2X2xpbnV4X2NvcmVfcmVh ZF94Y3IwKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhf Y29yZV9yZWFkX3hjcjApOiBSZXBsYWNlCi0rCXVuc2lnbmVkIGxvbmcgbG9uZyB3aXRoIHVpbnQ2 NF90LiAgRG9uJ3QgYXNzZXJ0IHNlY3Rpb24gc2l6ZS4KLSsJKGkzODZfbGludXhfY29yZV9yZWFk X2Rlc2NyaXB0aW9uKTogUmVwbGFjZSB1bnNpZ25lZCBsb25nIGxvbmcKLSsJd2l0aCB1aW50NjRf dC4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl95bW1fdHlwZSk6IEZpeCB0eXBvcyBpbiBjb21t ZW50cy4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBDaGFuZ2UgMTZieXRlIHRvIDEy OGJpdHMgaW4KLSsJY29tbWVudHMuCi0rCShpMzg2X3ZhbGlkYXRlX3RkZXNjX3ApOiBVcGRhdGUg Y29tbWVudHMuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IExpa2V3aXNlLgotKwotKwkqIGkzODYt dGRlcC5oIChnZGJhcmNoX3RkZXApOiBSZXBsYWNlIHVuc2lnbmVkIGxvbmcgbG9uZyB3aXRoCi0r CXVpbnQ2NF90LiAgUmVwbGFjZSBnZGIgd2l0aCBHREIgaW4gY29tbWVudHMuCi0rCi0rMjAxMC0w My0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5j IChpMzg2X2dkYmFyY2hfaW5pdCk6IFJlcGxhY2UgIng4Nj14bWwiIHdpdGgKLSsJInhtbFJlZ2lz dGVycysiLgotKwotKzIwMTAtMDMtMTIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoeHN0YXRlX3NpemVfbl9vZl9pbnQ2NCk6IFJlbW92 ZWQuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVcGRhdGVkLgot KwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShh bWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1saW51 eC1uYXQuYyAoeHN0YXRlX3NpemVfbl9vZl9pbnQ2NCk6IFJlbW92ZWQuCi0rCShmZXRjaF94c3Rh dGVyZWdzKTogVXBkYXRlZC4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsJKGkz ODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IExpa2V3aXNlLgotKwotKzIwMTAtMDMtMTIgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzog SW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIuCi0rCShQVFJBQ0VfR0VUUkVHU0VUKTogTmV3LgotKwko UFRSQUNFX1NFVFJFR1NFVCk6IExpa2V3aXNlLgotKwkqIGkzODYtbGludXgtbmF0LmM6IExpa2V3 aXNlLgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYzogSW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIu Ci0rCi0rCSogY29uZmlnL2kzODYvbGludXg2NC5taCAoTkFUX0ZJTEUpOiBTZXQgdG8gY29uZmln L25tLWxpbnV4LmguCi0rCi0rCSogY29uZmlnL2kzODYvbm0tbGludXguaDogRG9uJ3QgaW5jbHVk ZQotKwkiY29uZmlnL2kzODYvbm0tbGludXgteHN0YXRlLmgiLgotKwotKwkqIGNvbmZpZy9pMzg2 L25tLWxpbnV4LXhzdGF0ZS5oOiBSZW1vdmVkLgotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4NjQu aDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMy0xMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X3N1cHBseV94c2F2ZSk6IFJlcGxhY2UgSTM4 Nl9YU1RBVEVfTUFYX01BU0sKLSsJd2l0aCBJMzg2X1hTVEFURV9BVlhfTUFTSy4KLSsKLSsJKiBj b21tb24vaTM4Ni14c3RhdGUuaCAoSTM4Nl9YU1RBVEVfTUFYX01BU0spOiBSZW1vdmVkLgotKwko STM4Nl9YU1RBVEVfTUFYX1NJWkUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAzLTEyICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfcmVnaXN0 ZXJfcmVnZ3JvdXBfcCk6IFJlcGxhY2UKLSsJYml0X0kzODZfWFNUQVRFX1hYWCB3aXRoIEkzODZf WFNUQVRFX1hYWC4KLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lz ZS4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKwkqIGNvbW1vbi9pMzg2 LXhzdGF0ZS5oIChiaXRfSTM4Nl9YU1RBVEVfWFhYKTogUmVuYW1lZCB0byAuLi4KLSsJKEkzODZf WFNUQVRFX1hYWCk6IFRoaXMuCi0rCShJMzg2X1hTVEFURV9YWFhfTUFTSyk6IFJlcGxhY2UgYml0 X0kzODZfWFNUQVRFX1hYWCB3aXRoCi0rCUkzODZfWFNUQVRFX1hYWC4KLSsJKEkzODZfWFNUQVRF X1NJWkUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAzLTA3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9kd2FyZl9yZWdfdG9fcmVnbnVt KTogUmV0dXJuICV5bW1OCi0rCXJlZ2lzdGVyIG51bWJlciBmb3IgJXhtbU4gaWYgQVZYIGlzIGF2 YWlsYWJsZS4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl94bW1fcmVnbnVtX3ApOiBNYWtlIGl0 IGdsb2JhbC4KLSsJKGkzODZfZGJ4X3JlZ190b19yZWdudW0pOiBSZXR1cm4gJXltbU4gcmVnaXN0 ZXIgbnVtYmVyIGZvcgotKwkleG1tTiBpZiBBVlggaXMgYXZhaWxhYmxlLgotKwotKwkqIGkzODYt dGRlcC5oIChpMzg2X3htbV9yZWdudW1fcCk6IE5ldy4KLSsKLSsyMDEwLTAzLTA2ICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9pbml0 X2FiaSk6IFJlcGxhY2UgQU1ENjRfQVZYX05VTV9SRUdTCi0rCXdpdGggQU1ENjRfTlVNX1JFR1Mu Ci0rCi0rCSogYW1kNjQtdGRlcC5oIChBTUQ2NF9BVlhfTlVNX1JFR1MpOiBSZW5hbWVkIHRvIC4u LgotKwkoQU1ENjRfTlVNX1JFR1MpOiBUaGlzLgotKwotKwkqIGkzODYtbGludXgtbmF0LmMgKEdF VEZQWFJFR1NfU1VQUExJRVMpOiBSZXBsYWNlCi0rCUkzODZfQVZYX05VTV9SRUdTIHdpdGggSTM4 Nl9TU0VfTlVNX1JFR1MuCi0rCShHRVRYU1RBVEVSRUdTX1NVUFBMSUVTKTogTmV3LgotKwkoaTM4 Nl9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVc2UgR0VUWFNUQVRFUkVHU19TVVBQ TElFUy4KLSsJKGkzODZfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2Uu Ci0rCi0rMjAxMC0wMy0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGkzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldCk6IENvdW50 IDgKLSsJdXBwZXIgWU1NIHJlZ2lzdGVycy4KLSsKLSsyMDEwLTAzLTA2ICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfcmVnaXN0ZXJfcmVn Z3JvdXBfcCk6IEZvciBhbGxfZ3JvdXAsIGRvbid0Ci0rCWluY2x1ZGUgdXBwZXIgWU1NIHJlZ2lz dGVycyBub3IgWE1NIHJlZ2lzdGVycyB3aGVuIEFWWCBpcwotKwlzdXBwb3J0ZWQuCi0rCi0rMjAx MC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctdGRl cC5jIChpMzg3X2NvbGxlY3RfeHNhdmUpOiBSZXBsYWNlIHJlZ2NhY2hlX3Jhd19yZWFkCi0rCXdp dGggcmVnY2FjaGVfcmF3X2NvbGxlY3QuCi0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdq aXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX3JlZ2dy b3VwX3ApOiBEb24ndCByZXR1cm4gMAotKwlmb3IgdXBwcGVyIFlNTSBub3IgWE1NIHJlZ2lzdGVy cy4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoeHNhdmVfc3NlX29mZnNldCk6IFJlbW92ZWQuCi0rCShY U0FWRV9TU0VfQUREUik6IExpa2V3aXNlLgotKwkoaTM4N19zdXBwbHlfeHNhdmUpOiBSZXBsYWNl IFhTQVZFX1NTRV9BRERSIHdpdGggRlhTQVZFX0FERFIuCi0rCShpMzg3X2NvbGxlY3RfeHNhdmUp OiBMaWtld2lzZS4gIFJlcGxhY2UgdGhlIHNlY29uZAotKwlyZWdjYWNoZV9yYXdfY29sbGVjdCB3 aXRoIG1lbWNweS4KLSsKLSsyMDEwLTAzLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKHhzYXZlX29mZnNldCk6IFJlbW92ZWQuCi0rCShYU0FW RV9BRERSKTogTGlrZXdpc2UuCi0rCSh4c2F2ZV9zc2Vfb2Zmc2V0KTogTmV3LgotKwkoWFNBVkVf U1NFX0FERFIpOiBMaWtld2lzZS4KLSsJKHhzYXZlX2F2eGhfb2Zmc2V0KTogTGlrZXdpc2UuCi0r CShYU0FWRV9BVlhIX0FERFIpOiBMaWtld2lzZS4KLSsJKGkzODdfc3VwcGx5X3hzYXZlKTogVXBk YXRlZC4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDMtMDUg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4 N19zdXBwbHlfeHNhdmUpOiBGaXggdHlwb3MuCi0rCShpMzg3X2NvbGxlY3RfeHNhdmUpOiBQcm9w ZXJseSBoYW5kbGUgZ2NvcmUuCi0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9ncmVnc2V0 NjRfcmVnX29mZnNldCk6IENvdW50Ci0rCTE2IHVwcGVyIFlNTSByZWdpc3RlcnMuCi0rCShhbWQ2 NF9saW51eF9ncmVnc2V0MzJfcmVnX29mZnNldCk6IENvdW50IDggdXBwZXIgWU1NIHJlZ2lzdGVy cy4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmggKEFNRDY0X0xJTlVYX09SSUdfUkFYX1JFR05V TSk6IFJlcGxhY2UKLSsJQU1ENjRfTVhDU1JfUkVHTlVNIHdpdGggQU1ENjRfWU1NMTVIX1JFR05V TS4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X3NzZV9yZWdpc3Rlcl9uYW1lcyk6IFJlbmFt ZWQgdG8gLi4uCi0rCShhbWQ2NF9yZWdpc3Rlcl9uYW1lcyk6IFRoaXMuCi0rCShhbWQ2NF9hdnhf cmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmVkLgotKwkoYW1kNjRfeG1tX25hbWVzKTogTGlrZXdpc2Uu Ci0rCShBTUQ2NF9OVU1fUkVHUyk6IExpa2V3aXNlLgotKwkoYW1kNjRfeW1tX25hbWVzKTogTmV3 LgotKwkoYW1kNjRfeW1taF9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcmVnaXN0ZXJfbmFt ZSk6IExpa2V3aXNlLgotKwkoYW1kNjRfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUgaTM4 Nl94bW1fcmVnbnVtX3AuICBBZGQKLSsJaTM4Nl95bW1fcmVnbnVtX3AuCi0rCShhbWQ2NF9pbml0 X2FiaSk6IFNldCB5bW1oX3JlZ2lzdGVyX25hbWVzLCBudW1feW1tX3JlZ3MKLSsJYW5kIHltbTBo X3JlZ251bS4gIENhbGwgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZS4gIFJlcGxhY2UKLSsJbnVt X3ZlY3Rvcl9yZWdzIHdpdGggbnVtX3htbV9yZWdzLiAgUmVwbGFjZSBBTUQ2NF9OVU1fUkVHUwot Kwl3aXRoIEFNRDY0X0FWWF9OVU1fUkVHUy4KLSsKLSsJKiBhbWQ2NC10ZGVwLmggKGFtZDY0X3Jl Z251bSk6IEFkZCBBTUQ2NF9ZTU0wSF9SRUdOVU0gYW5kCi0rCUFNRDY0X1lNTTE1SF9SRUdOVU0u Ci0rCShBTUQ2NF9BVlhfTlVNX1JFR1MpOiBOZXcuCi0rCShhbWQ2NF9yZWdpc3Rlcl9uYW1lKTog UmVtb3ZlZC4KLSsJKGFtZDY0X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2 LWRhcndpbi10ZGVwLmMgKGkzODZfZGFyd2luX2luaXRfYWJpKTogUmVwbGFjZQotKwludW1fdmVj dG9yX3JlZ3Mgd2l0aCBudW1feG1tX3JlZ3MuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAocmVn bWFwKTogQ291bnQgOCB1cHBlciBZTU0gcmVnaXN0ZXJzLgotKwkoR0VURlBYUkVHU19TVVBQTElF Uyk6IFJlcGxhY2UgSTM4Nl9TU0VfTlVNX1JFR1Mgd2l0aAotKwlJMzg2X0FWWF9OVU1fUkVHUy4K LSsJKiBpMzg2LWxpbnV4LXRkZXAuaCAoSTM4Nl9MSU5VWF9PUklHX0VBWF9SRUdOVU0pOiBMaWtl d2lzZS4KLSsKLSsJKiBpMzg2LW50by10ZGVwLmMgKGkzODZudG9fcmVnaXN0ZXJfYXJlYSk6IFJl cGxhY2UKLSsJSTM4N19WRUNUT1IwX1JFR05VTSB3aXRoIEkzODdfWE1NMF9SRUdOVU0uCi0rCi0r CSogaTM4Ni10ZGVwLmMgKGkzODZfc3NlX3JlZ2lzdGVyX25hbWVzKTogUmVuYW1lZCB0byAuLi4K LSsJKGkzODZfcmVnaXN0ZXJfbmFtZXMpOiBUaGlzLgotKwkoaTM4Nl9hdnhfcmVnaXN0ZXJfbmFt ZXMpOiBSZW1vdmVkLgotKwkoaTM4Nl94bW1fbmFtZXMpOiBMaWtld2lzZS4KLSsJKGkzODZfdmVj dG9yX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X3htbV90eXBlKTogTGlrZXdpc2UuCi0r CSgpOiBMaWtld2lzZS4KLSsJKCk6IExpa2V3aXNlLgotKwkoaTM4Nl95bW1fbmFtZXMpOiBOZXcu Ci0rCShpMzg2X3ltbWhfbmFtZXMpOiBMaWtld2lzZS4KLSsJKGkzODZfeW1taF9yZWdudW1fcCk6 IExpa2V3aXNlLgotKwkoaTM4Nl95bW1fcmVnbnVtX3ApOiBMaWtld2lzZS4KLSsJKGkzODZfcmVn aXN0ZXJfbmFtZSk6IExpa2V3aXNlLgotKwkoaTM4Nl95bW1fdHlwZSk6IExpa2V3aXNlLgotKwko KTogTGlrZXdpc2UuCi0rCShpMzg2X214Y3NyX3JlZ251bV9wKTogUmVwbGFjZSBJMzg3X1ZFQ1RP UjBfUkVHTlVNIHdpdGgKLSsJSTM4N19YTU0wX1JFR05VTS4KLSsJKGkzODZfZGJ4X3JlZ190b19y ZWdudW0pOiBMaWtld2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUg aTM4Nl94bW1fcmVnbnVtX3AuICBBZGQKLSsJaTM4Nl95bW1fcmVnbnVtX3AuCi0rCShpMzg2X3Bz ZXVkb19yZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9y ZWFkKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNl LgotKwkoaTM4Nl9nbzMyX2luaXRfYWJpKTogUmVwbGFjZSBudW1fdmVjdG9yX3JlZ3Mgd2l0aCBu dW1feG1tX3JlZ3MuCi0rCShpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBSZXBsYWNlIGkzODZf dmVjdG9yX3JlZ251bV9wLiBBZGQKLSsJaTM4Nl95bW1fcmVnbnVtX3AuCi0rCShpMzg2X3ZhbGlk YXRlX3RkZXNjX3ApOiBHZXQgU1NFIHJlZ2lzdGVycy4gIFRyeSBBVlggcmVnaXN0ZXJzLgotKwko aTM4Nl9nZGJhcmNoX2luaXQpOiBSZXBsYWNlIG51bV92ZWN0b3JfcmVncyB3aXRoIG51bV94bW1f cmVncy4KLSsJQ2FsbCBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lLiAgUmVwbGFjZSBJMzg2X1NT RV9OVU1fUkVHUwotKwl3aXRoIEkzODZfQVZYX05VTV9SRUdTLiAgU2V0IHltbWhfcmVnaXN0ZXJf bmFtZXMsIHltbTBoX3JlZ251bSwKLSsJbnVtX3ltbV9yZWdzIGFuZCB5bW0wX3JlZ251bS4gIENh bGwgc2V0X2dkYmFyY2hfcXN1cHBvcnRlZAotKwl3aXRoICJ4ODY9eG1sIi4KLSsKLSsJKiBpMzg2 LXRkZXAuaCAoZ2RiYXJjaF90ZGVwKTogQWRkIG51bV95bW1fcmVncywgeW1tMF9yZWdudW0sCi0r CXltbTBoX3JlZ251bSwgeW1taF9yZWdpc3Rlcl9uYW1lcyBhbmQgaTM4Nl95bW1fdHlwZS4gIFJl bW92ZQotKwl4bW0wX3JlZ251bSwgbnVtX3ZlY3Rvcl9yZWdzIGFuZCBpMzg2X3htbV90eXBlLgot KwkoaTM4Nl9yZWdudW0pOiBBZGQgSTM4Nl9ZTU0wSF9SRUdOVU0gYW5kIEkzODZfWU1NN0hfUkVH TlVNLgotKwkoSTM4Nl9BVlhfTlVNX1JFR1MpOiBOZXcuCi0rCShpMzg2X3ltbV9yZWdudW1fcCk6 IExpa2V3aXNlLgotKwkoaTM4Nl95bW1oX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShJMzg2X01B WF9SRUdJU1RFUl9TSVpFKTogQ2hhbmdlZCB0byAxNi4KLSsJKGkzODZfeG1tX3JlZ251bV9wKTog UmVtb3ZlZC4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfZnNhdmUpOiBSZXBsYWNl IEkzODdfVkVDVE9SMF9SRUdOVU0KLSsJd2l0aCBJMzg3X1hNTTBfUkVHTlVNLgotKwkoaTM4N19j b2xsZWN0X2ZzYXZlKTogTGlrZXdpc2UuCi0rCShpMzg3X3N1cHBseV9meHNhdmUpOiBSZXBsYWNl IEkzODdfVkVDVE9SMF9SRUdOVU0vbnVtX3ZlY3Rvcl9yZWdzCi0rCXdpdGggSTM4N19YTU0wX1JF R05VTS9udW1fdmVjdG9yX3JlZ3MuCi0rCShpMzg3X2NvbGxlY3RfZnhzYXZlKTogTGlrZXdpc2Uu Ci0rCSh4c2F2ZV9zc2Vfb2Zmc2V0KTogUmVtb3ZlZC4KLSsJKFhTQVZFX1NTRV9BRERSKTogTGlr ZXdpc2UuCi0rCSh4c2F2ZV9hdnhoX29mZnNldCk6IExpa2V3aXNlLgotKwkoWFNBVkVfQVZYSF9B RERSKTogTGlrZXdpc2UuCi0rCSh4c2F2ZV9vZmZzZXQpOiBOZXcuCi0rCShYU0FWRV9BRERSKTog TGlrZXdpc2UuCi0rCShpMzg3X3N1cHBseV94c2F2ZSk6IFJld3JpdGUuCi0rCShpMzg3X2NvbGxl Y3RfeHNhdmUpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg3LXRkZXAuaCAoSTM4N19OVU1fVkVDVE9S X1JFR1MpOiBSZW5hbWVkIHRvIC4uLgotKwkoSTM4N19OVU1fWE1NX1JFR1MpOiBUaGlzLgotKwko STM4N19OVU1fWU1NX1JFR1MpOiBOZXcuCi0rCShJMzg3X1lNTTBIX1JFR05VTSk6IExpa2V3aXNl LgotKwkoSTM4N19WRUNUT1IwX1JFR05VTSk6IFJlbmFtZWQgdG8gLi4uCi0rCShJMzg3X1hNTTBf UkVHTlVNKTogVGhpcy4KLSsJKEkzODdfTVhDU1JfUkVHTlVNKTogVXBkYXRlZC4KLSsJKEkzODdf WU1NRU5ESF9SRUdOVU0pOiBOZXcuCi0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUu bHVAaW50ZWwuY29tPgotKwotKwkqIGZlYXR1cmVzL2kzODYvMzJiaXQtYXZ4LnhtbDogT25seSBk ZWZpbmUgdXBwZXIgWU1NIHJlZ2lzdGVycy4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWF2eC54 bWw6IExpa2V3aXNlLgotKwotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LWxpbnV4LnhtbDog SW5jbHVkZSA2NGJpdC1zc2UueG1sLgotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LnhtbDog TGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1saW51eC54bWw6IEluY2x1 ZGUgMzJiaXQtc3NlLnhtbC4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LnhtbDogTGlrZXdp c2UuCi0rCi0rCSogZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXguYzogUmVnZW5lcmF0ZWQu Ci0rCSogZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdnguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMv aTM4Ni9pMzg2LWF2eC1saW51eC5jOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYt YXZ4LmM6IExpa2V3aXNlLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbGludXguZGF0 OiBMaWtld2lzZS4KLSsJKiByZWdmb3JtYXRzL2kzODYvYW1kNjQtYXZ4LmRhdDogTGlrZXdpc2Uu Ci0rCSogcmVnZm9ybWF0cy9pMzg2L2kzODYtYXZ4LWxpbnV4LmRhdDogTGlrZXdpc2UuCi0rCSog cmVnZm9ybWF0cy9pMzg2L2kzODYtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMy0wMiAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtdGRlcC5o IChYU0FWRV9YQ1IwX09GRlNFVCk6IFJlbmFtZWQgdG8gLi4uCi0rCShJMzg2X0xJTlVYX1hTQVZF X1hDUjBfT0ZGU0VUKTogVGhpcy4KLSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4 X2luaXRfYWJpKTogVXBkYXRlZC4KLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9j b3JlX3JlYWRfeGNyMCk6IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9pbml0X2FiaSk6IExpa2V3 aXNlLgotKwotKzIwMTAtMDMtMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2luaXRfYWJpKTogU2V0IHhzYXZl X3hjcjBfb2Zmc2V0LgotKwkqIGkzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2luaXRfYWJp KTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogU2V0 IHhzYXZlX3hjcjBfb2Zmc2V0IHRvIC0xLgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X2NvbGxl Y3RfeHNhdmUpOiBVcGRhdGVkLgotKwotKwkqIGkzODctdGRlcC5oIChYU0FWRV9YQ1IwX09GRlNF VCk6IE1vdmVkIHRvIC4uLgotKwkqIGkzODYtbGludXgtdGRlcC5oIChYU0FWRV9YQ1IwX09GRlNF VCk6IEhlcmUuCi0rCi0rMjAxMC0wMy0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGZlYXR1cmVzL2kzODYvMzJiaXQtYXZ4LnhtbDogRGVmaW5lIGkzODZfbXhjc3Iu Ci0rCSogZmVhdHVyZXMvaTM4Ni82NGJpdC1hdngueG1sOiBMaWtld2lzZS4KLSsKLSsJKiBmZWF0 dXJlcy9pMzg2L2FtZDY0LWF2eC1saW51eC5jOiBSZWdlbmVyYXRlZC4KLSsJKiBmZWF0dXJlcy9p Mzg2L2FtZDY0LWF2eC5jOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LWxp bnV4LmM6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVzL2kzODYvaTM4Ni1hdnguYzogTGlrZXdpc2Uu Ci0rCi0rMjAxMC0wMi0yNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGkzODYtdGRlcC5jIChpMzg2X3htbV9yZWdudW1fcCk6IE9wdGltaXplZC4KLSsJKGkzODZfdmVj dG9yX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0yNCAgSC5KLiBMdSAgPGhvbmdq aXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9z dG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMpOiBQYXNzCi0rCTAgdG8gYW1kNjRfY29sbGVjdF94c2F2 ZS4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2NvbGxlY3RfeHN0YXRlcmVnc2V0KTogUGFz cyAxIHRvCi0rCWFtZDY0X2NvbGxlY3RfeHNhdmUuCi0rCShhbWQ2NF9jb2xsZWN0X3hzYXZlKTog QWRkIGFuIGludGVnZXIgYXJndW1lbnQgYW5kIHBhc3MgaXQgdG8KLSsJaTM4N19jb2xsZWN0X3hz YXZlLgotKwotKwkqIGFtZDY0LXRkZXAuaCAoYW1kNjRfY29sbGVjdF94c2F2ZSk6IEFkZCBhbiBp bnRlZ2VyIGFyZ3VtZW50LgotKwkqIGkzODctdGRlcC5oIChpMzg3X2NvbGxlY3RfeHNhdmUpOiBM aWtld2lzZS4KLSsKLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChzdG9yZV94c3RhdGVyZWdzKTogUGFz cyAxIHRvCi0rCWkzODdfY29sbGVjdF94c2F2ZS4KLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9jb2xs ZWN0X3hzdGF0ZXJlZ3NldCk6IExpa2V3aXNlLgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X2Nv bGxlY3RfeHNhdmUpOiBBZGQgYW4gaW50ZWdlciBhcmd1bWVudAotKwl0byBpbmRpY2F0ZSBnY29y ZS4gIFVwZGF0ZSB0aGUgZmlyc3QgOCBieXRlcyBvZiB0aGUKLSsJc3dfdXNhYmxlX2J5dGVzWzQ2 NC4uNDY3XSBhbmQgYHhzdGF0ZV9idicgd2l0aCBYQ1IwIGZvciBnY29yZS4KLSsKLSsyMDEwLTAy LTI0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMg KGkzODdfY29sbGVjdF94c2F2ZSk6IEZpeCBtb3JlIHR5cG9zLgotKwotKzIwMTAtMDItMjQgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19j b2xsZWN0X3hzYXZlKTogRml4IGEgdHlwby4KLSsKLSsyMDEwLTAyLTI0ICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKGFtZDY0X2xpbnV4 X3JlYWRfZGVzY3JpcHRpb24pOiBGaXggYSB0eXBvLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2 X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBSZXR1cm4gMCBmb3IgcHNldWRvCi0rCVhNTSByZWdpc3Rl cnMgaWYgZ3JvdXAgaXNuJ3QgU1NFLgotKwotKzIwMTAtMDItMjQgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogSW5jbHVkZSAicmVnc2V0 LmgiLgotKwkoYW1kNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFNldCAucmVnLXhzdGF0ZSBz ZWN0aW9uIHNpemUgaWYKLSsJaXQgaXMgc3VwcG9ydGVkLgotKwkoX2luaXRpYWxpemVfYW1kNjRf bGludXhfbmF0KTogQ2FsbCBpMzg2X3hzdGF0ZV9pbml0LgotKwotKwkqIGFtZDY0LWxpbnV4LXRk ZXAuYzogSW5jbHVkZSAicmVnc2V0LmgiIGJlZm9yZQotKwkiYW1kNjQtbGludXgtdGRlcC5oIi4K LSsJKGFtZDY0X2xpbnV4X3JlZ3NldF9zZWN0aW9ucyk6IE1ha2UgaXQgZ2xvYmFsLgotKwkoX2lu aXRpYWxpemVfYW1kNjRfbGludXhfdGRlcCk6IERvbid0IGNhbGwgaTM4Nl94c3RhdGVfaW5pdC4K LSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmggKGFtZDY0X2xpbnV4X3JlZ3NldF9zZWN0aW9ucyk6 IE5ldy4KLSsKLSsJKiBjb25maWcvaTM4Ni9ubS1saW51eC14c3RhdGUuaCAoRklMTF9YU1RBVEVS RUdTRVQpOiBSZW1vdmVkLgotKwotKwkqIGkzODYtbGludXgtbmF0LmM6IEluY2x1ZGUgInJlZ3Nl dC5oIi4KLSsJKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFNldCAucmVnLXhzdGF0ZSBz ZWN0aW9uIHNpemUgaWYKLSsJaXQgaXMgc3VwcG9ydGVkLgotKwkoX2luaXRpYWxpemVfaTM4Nl9s aW51eF9uYXQpOiBDYWxsIGkzODZfeHN0YXRlX2luaXQuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVw LmM6IEluY2x1ZGUgInJlZ3NldC5oIiBiZWZvcmUgImluZmVyaW9yLmgiLgotKwkoaTM4Nl9saW51 eF9yZWdzZXRfc2VjdGlvbnMpOiBNYWtlIGl0IGdsb2JhbC4KLSsJKF9pbml0aWFsaXplX2kzODZf bGludXhfdGRlcCk6IERvbid0IGNhbGwgaTM4Nl94c3RhdGVfaW5pdC4KLSsKLSsJKiBpMzg2LWxp bnV4LXRkZXAuaCAoaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMpOiBOZXcuCi0rCi0rMjAxMC0w Mi0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5j IChpMzg2X3ZhbGlkYXRlX3RkZXNjX3ApOiBVc2UgbnVtX3ZlY3Rvcl9yZWdzIGluc3RlYWQKLSsJ b2YgbnVtX3htbV9yZWdzIHRvIGNoZWNrIHZlY3RvciByZWdpc3RlcnMuCi0rCi0rMjAxMC0wMi0y MCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGZlYXR1cmVzL2kzODYv TWFrZWZpbGU6IE5ldy4KLSsKLSsyMDEwLTAyLTE5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X3hzYXZlKTogUmVtb3ZlIG9u ZSByZWdjYWNoZV9yYXdfc3VwcGx5Ci0rCWZvciB4ODcuCi0rCi0rMjAxMC0wMi0xOSAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChoYXZl X3B0cmFjZV9nZXRyZWdzZXQpOiBNYWtlIGl0IHN0YXRpYwotKwlhbmQgaW5pdGlhbGl6ZWQgdG8g LTEuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBFcnJvciBpZiBQ VFJBQ0VfR0VUUkVHU0VUCi0rCWZhaWxzLgotKwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3Jf cmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTog U2V0IGhhdmVfcHRyYWNlX2dldHJlZ3NldC4KLSsJQ2hlY2sgdGhlIG5hdGl2ZSBYQ1IwIG9ubHkg aWYgUFRSQUNFX0dFVFJFR1NFVCBpcyBhdmFpbGFibGUuCi0rCShfaW5pdGlhbGl6ZV9hbWQ2NF9s aW51eF9uYXQpOiBEb24ndCBzZXQgaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0LgotKwotKwkqIGkzODYt bGludXgtbmF0LmMgKGhhdmVfcHRyYWNlX2dldHJlZ3NldCk6IE1ha2UgaXQgc3RhdGljCi0rCWFu ZCBpbml0aWFsaXplZCB0byAtMS4KLSsJKGZldGNoX3hzdGF0ZXJlZ3MpOiBFcnJvciBpZiBQVFJB Q0VfR0VUUkVHU0VUIGZhaWxzLgotKwkoc3RvcmVfeHN0YXRlcmVncyk6IExpa2V3aXNlLgotKwko aTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogU2V0IGhhdmVfcHRyYWNlX2dldHJlZ3NldC4K LSsJQ2hlY2sgdGhlIG5hdGl2ZSBYQ1IwIG9ubHkgaWYgUFRSQUNFX0dFVFJFR1NFVCBpcyBhdmFp bGFibGUuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCk6IERvbid0IHNldCBoYXZlX3B0 cmFjZV9nZXRyZWdzZXQuCi0rCi0rMjAxMC0wMi0xOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5oIChYU1RBVEVfU1NFX01BU0spOiBB ZGQgYml0X1hTVEFURV9YODcuCi0rCShYU1RBVEVfTUFYX01BU0spOiBEZWZpbmVkIHdpdGggWFNU QVRFX0FWWF9NQVNLIG9ubHkuCi0rCShYU1RBVEVfU1NFX01BU0tfU1RSSU5HKTogVXBkYXRlZC4K LSsJKFhTVEFURV9BVlhfTUFTS19TVFJJTkcpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg3LXRkZXAu YyAoaTM4N19zdXBwbHlfeHNhdmUpOiBBbHNvIGNoZWNrIHg4NyByZWdpc3RlcnMuCi0rCShpMzg3 X2NvbGxlY3RfeHNhdmUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTE5ICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0 KTogVXNlIG51bV92ZWN0b3JfcmVncyBpbnN0ZWFkCi0rCW9mIG51bV94bW1fcmVncyB0byBjaGVj ayB2ZWN0b3IgcmVnaXN0ZXJzLgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2luaXRfYWJpKTogU2V0IG51 bV94bW1fcmVncyBiYXNlZCBvbgotKwl2ZWN0b3IgZmVhdHVyZS4KLSsJKiBpMzg2LXRkZXAuYyAo aTM4Nl9nZGJhcmNoX2luaXQpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LWRhcndpbi10ZGVwLmMg KGkzODZfZGFyd2luX2luaXRfYWJpKTogUmVwbGFjZSBudW1feG1tX3JlZ3MKLSsJd2l0aCBudW1f dmVjdG9yX3JlZ3MuCi0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfaW5pdF9hYmkpOiBTZXQgbnVtX3ZlY3Rv cl9yZWdzIHRvIDE2LgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IEFk ZCBudW1feG1tX3JlZ3MgdG8KLSsJc2V0X2dkYmFyY2hfbnVtX3BzZXVkb19yZWdzLgotKwotKzIw MTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1s aW51eC1uYXQuYyAoYW1kNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IENoZWNrIHRoZQotKwlu YXRpdmUgWENSMC4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmM6IEluY2x1ZGUgImZlYXR1cmVz L2kzODYvYW1kNjQtYXZ4LWxpbnV4LmMiLgotKwkoYW1kNjRfbGludXhfY29yZV9yZWFkX2Rlc2Ny aXB0aW9uKTogQ2hlY2sgWENSMCBmcm9tIGNvcmUgZHVtcC4KLSsJKF9pbml0aWFsaXplX2FtZDY0 X2xpbnV4X3RkZXApOiBDYWxsCi0rCWluaXRpYWxpemVfdGRlc2NfYW1kNjRfYXZ4X2xpbnV4Lgot KwotKwkqIGFtZDY0LXRkZXAuYzogSW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdnguYyIu Ci0rCShBTUQ2NF9OVU1fUkVHUyk6IFVzZSBhbWQ2NF9zc2VfcmVnaXN0ZXJfbmFtZXMuCi0rCShh bWQ2NF94bW1fbmFtZXMpOiBNYWtlIGl0IHN0YXRpYy4KLSsJKGFtZDY0X3BzZXVkb19yZWdpc3Rl cl9uYW1lKTogSGFuZGxlIFhNTSBwc2V1ZCByZWdpc3RlcnMuCi0rCShhbWQ2NF9pbml0X2FiaSk6 IFNldCByZWdpc3Rlcl9uYW1lcyBiYXNlZCBvbiB0YXJnZXQgZGVzY3JpcHRpb24uCi0rCShfaW5p dGlhbGl6ZV9hbWQ2NF90ZGVwKTogQ2FsbCBpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eC4KLSsK LSsJKiBpMzg2LWxpbnV4LW5hdC5jIChpMzg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBDaGVj ayB0aGUKLSsJbmF0aXZlIFhDUjAuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGlu dXhfY29yZV9yZWFkX3hjcjApOiBOZXcuCi0rCShpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlw dGlvbik6IFVzZSBpdC4gIFJlbW92ZSBCRkQ2NC4KLSsJKGkzODZfbGludXhfcmVhZF9kZXNjcmlw dGlvbik6IFJlbW92ZWQuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBDYWxsCi0r CWluaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnhfbGludXguCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkz ODZfeG1tX3JlZ251bV9wKTogTWFrZSBpdCBnbG9iYWwuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rl cl9uYW1lKTogUmVtb3ZlIEJGRDY0LgotKwkoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCk6IExp a2V3aXNlLgotKwkoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSsJKGkz ODZfZ2RiYXJjaF9pbml0KTogU2V0IHJlZ2lzdGVyX25hbWVzIGJhc2VkIG9uIHRhcmdldAotKwlk ZXNjcmlwdGlvbi4KLSsKLSsyMDEwLTAyLTEzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2Ny aXB0aW9uKTogUHJvcGVybHkKLSsJY2hlY2sgZXh0ZW5kZWQgc3RhdGUgc2l6ZS4KLSsJKGkzODZf bGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFByb3Blcmx5IGNoZWNrIHRoZSBuYXRpdmUgWENSMC4K LSsKLSsyMDEwLTAyLTEzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog Y29tbW9uL2kzODYteHN0YXRlLmggKFhTVEFURV9TU0VfTUFTSyk6IERlZmluZWQgd2l0aAotKwli aXRfWFNUQVRFX1NTRS4KLSsJKFhTVEFURV9BVlhfTUFTSyk6IERlZmluZWQgd2l0aCBYU1RBVEVf U1NFX01BU0sgYW5kIGJpdF9YU1RBVEVfQVZYLgotKwkoWFNUQVRFX01BWF9NQVNLKTogRGVmaW5l ZCB3aXRoIFhTVEFURV9BVlhfTUFTSyBhbmQgYml0X1hTVEFURV9YODcuCi0rCShYU1RBVEVfU1NF X01BU0tfU1RSSU5HKTogVXBkYXRlZC4KLSsJKFhTVEFURV9BVlhfTUFTS19TVFJJTkcpOiBMaWtl d2lzZS4KLSsKLSsJKiAzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNj cmlwdGlvbik6IFVzZQotKwlYU1RBVEVfWFhYX01BU0suCi0rCShpMzg2X2xpbnV4X2NvcmVfcmVh ZF9kZXNjcmlwdGlvbik6IExpa2V3aXNlLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lz dGVyX3JlZ2dyb3VwX3ApOiBDaGVjayB4Y3IwIGluc3RlYWQKLSsJb2YgdmVjdG9yX3VuaXQuCi0r CShpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCB4Y3IwIGluc3RlYWQgb2YgdmVjdG9yX3VuaXQuCi0r Ci0rCSogaTM4Ni10ZGVwLmggKHg4Nl92ZWN0b3JfdW5pdCk6IFJlbW92ZWQuCi0rCShnZGJhcmNo X3RkZXApOiBSZW1vdmUgdmVjdG9yX3VuaXQuICBBZGQgeGNyMC4KLSsKLSsJKiBpMzg3LXRkZXAu YyAoaTM4N19zdXBwbHlfZnhzYXZlKTogQ2hlY2sgeGNyMCBpbnN0ZWFkIG9mCi0rCXZlY3Rvcl91 bml0LgotKwkoaTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdfY29sbGVjdF94 c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMTEgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBEb24ndCBz ZXQgeGNyMCBvbiB4ODYgaG9zdC4KLSsJKF9pbml0aWFsaXplX2kzODZfdGRlcCk6IERvbid0IGNh bGwgaTM4Nl94c3RhdGVfaW5pdCBvbiB4ODYgaG9zdC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoZ2Ri YXJjaF90ZGVwKTogUmVtb3ZlIHhjcjAuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5 X3hzYXZlKTogUmVwbGFjZSB0ZGVwLT54Y3IwIHdpdGgKLSsJaTM4Nl94c3RhdGUueGNyMC4KLSsJ KGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMTEgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9s aW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBEb24ndAotKwlzZXQgeGNyMCBoZXJlLgotKwot KzIwMTAtMDItMTEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2 NC1saW51eC10ZGVwLmMgKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXApOiBSZS1pbmRlbnQu Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6 IERvbid0IHNldAotKwl4Y3IwIGhlcmUuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXAp OiBSZS1pbmRlbnQuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogU2V0 IHhjcjAgb24geDg2IGhvc3QuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X3RkZXApOiBDYWxsIGkzODZf eHN0YXRlX2luaXQgb24geDg2IGhvc3QuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRl cCk6IE1lbnRpb24geGNyMCBpcyB1c2VkIG9ubHkgZm9yCi0rCW5hdGl2ZSBkZWJ1Zy4KLSsKLSsy MDEwLTAyLTExICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQt bGludXgtbmF0LmMgKGFtZDY0X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyk6IENhc3QK LSsJTlRfWDg2X1hTVEFURSB0byB1bnNpZ25lZCBpbnQuCi0rCShhbWQ2NF9saW51eF9zdG9yZV9p bmZlcmlvcl9yZWdpc3RlcnMpOiBMaWtld2lzZS4KLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChmZXRj aF94c3RhdGVyZWdzKTogTGlrZXdpc2UuCi0rCShzdG9yZV94c3RhdGVyZWdzKTogTGlrZXdpc2Uu Ci0rCi0rMjAxMC0wMi0xMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGFtZDY0LWxpbnV4LW5hdC5jOiBJbmNsdWRlICJlbGYvY29tbW9uLmgiIGFuZCA8c3lzL3Vpby5o Pi4KLSsJKGFtZDY0X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyk6IFVzZSBpb3ZlYy4K LSsJKGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwot KwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoX2luaXRpYWxpemVfYW1kNjRfbGludXhfdGRlcCk6IERv bid0Ci0rCWNoZWNrIGkzODZfeHN0YXRlLnNpemUuCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKF9p bml0aWFsaXplX2kzODZfbGludXhfdGRlcCk6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2 L25tLWxpbnV4LXhzdGF0ZS5oOiBEb24ndCBpbmNsdWRlICJlbGYvY29tbW9uLmgiLgotKwkoUFRS QUNFX1JFR1NFVF9OVF9TSElGVCk6IFJlbW92ZWQuCi0rCShQVFJBQ0VfUkVHU0VUX01BWF9TSVpF KTogTGlrZXdpc2UuCi0rCShQVFJBQ0VfUkVHU0VUX1hTVEFURV9BRERSKTogTGlrZXdpc2UuCi0r Ci0rCSogaTM4Ni1saW51eC1uYXQuYzogSW5jbHVkZSAiZWxmL2NvbW1vbi5oIiBhbmQgPHN5cy91 aW8uaD4uCi0rCShmZXRjaF94c3RhdGVyZWdzKTogVXNlIGlvdmVjLgotKwkoc3RvcmVfeHN0YXRl cmVncyk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDkgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCk6 IFByb3Blcmx5IGNvbnZlcnQKLSsJWE1NIHBzZXVkbyByZWdpc3RlciB0byB2ZWN0b3IgcmVnaXN0 ZXIuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotKwotKzIwMTAt MDItMDkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBmZWF0dXJlcy9p Mzg2LzMyYml0LWF2eC54bWw6IEZpeCB0eXBvcy4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWF2 eC54bWw6IExpa2V3aXNlLgotKwotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LWxpbnV4LmM6 IFJlZ2VuZXJhdGVkLgotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LmM6IExpa2V3aXNlLgot KwkqIGZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbGludXguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVy ZXMvaTM4Ni9pMzg2LWF2eC5jOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA5ICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9p bml0KTogQ291bnQgWE1NIHBzZXVkbyByZWdpc3RlcnMuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctdGRlcC5oIChJMzg3X1hNTTBf UkVHTlVNKTogUmVuYW1lZCB0byAuLi4KLSsJKEkzODdfVkVDVE9SMF9SRUdOVU0pOiBUaGlzLgot KwkoSTM4N19NWENTUl9SRUdOVU0pOiBVcGRhdGVkLgotKwotKwkqIGkzODYtbnRvLXRkZXAuYyAo aTM4Nm50b19yZWdpc3Rlcl9hcmVhKTogUmVwbGFjZQotKwlJMzg3X1hNTTBfUkVHTlVNIHdpdGgg STM4N19WRUNUT1IwX1JFR05VTS4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9zc2VfcmVnbnVt X3ApOiBSZW5hbWVkIHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfcmVnbnVtX3ApOiBUaGlzLiAgUmVw bGFjZSBJMzg3X1hNTTBfUkVHTlVNCi0rCXdpdGggSTM4N19WRUNUT1IwX1JFR05VTS4KLSsJKGkz ODZfZnBjX3JlZ251bV9wKTogUmVwbGFjZSBJMzg3X1hNTTBfUkVHTlVNIHdpdGgKLSsJSTM4N19W RUNUT1IwX1JFR05VTS4KLSsJKGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcCk6IFVwZGF0ZWQuICBI YW5kbGUgWE1NIHBzZXVkbwotKwlyZWdpc3RlcnMuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODZf ZnBjX3JlZ251bV9wKTogUmVwbGFjZSBJMzg3X1hNTTBfUkVHTlVNCi0rCXdpdGggSTM4N19WRUNU T1IwX1JFR05VTS4KLSsJKGkzODdfc3VwcGx5X2Z4c2F2ZSk6IExpa2V3aXNlLgotKwkoaTM4N19j b2xsZWN0X2Z4c2F2ZSk6IExpa2V3aXNlLgotKwkoWFNBVkVfU1NFX0FERFIpOiBMaWtld2lzZS4K LSsJKFhTQVZFX0FWWEhfQUREUik6IExpa2V3aXNlLgotKwkoaTM4N19zdXBwbHlfeHNhdmUpOiBM aWtld2lzZS4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDIt MDkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAo aTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk6IEhhbmRsZSBYTU0gcHNldWRvCi0rCXJlZ2lzdGVy cy4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfcHNl dWRvX3JlZ2lzdGVyX3JlYWQpOiBMaWtld2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3dy aXRlKTogTGlrZXdpc2UuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IExpa2V3aXNlLgotKwkoaTM4 Nl94bW1fdHlwZSk6IE5ldy4KLSsKLSsJKiAzODYtdGRlcC5oIChnZGJhcmNoX3RkZXApOiBBZGQg bnVtX3htbV9yZWdzLCB4bW0wX3JlZ251bQotKwlhbmQgaTM4Nl94bW1fdHlwZS4KLSsKLSsyMDEw LTAyLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRl cC5jIChhbWQ2NF94bW1fbmFtZXMpOiBOZXcuCi0rCShhbWQ2NF9udW1fcHNldWRvX3JlZ3MpOiBV cGRhdGVkLgotKwotKwkqIGFtZDY0LXRkZXAuaCAoYW1kNjRfeG1tX25hbWVzKTogTmV3LgotKwot KwkqIGkzODYtdGRlcC5jIChpMzg2X3htbV9uYW1lcyk6IE5ldy4KLSsJKGkzODZfeG1tX3JlZ251 bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X251bV9wc2V1ZG9fcmVncyk6IFVwZGF0ZWQuCi0rCi0r MjAxMC0wMi0wOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYt dGRlcC5oIChnZGJhcmNoX3RkZXApOiBSZW5hbWUgbnVtX3htbV9yZWdzIHRvCi0rCW51bV92ZWN0 b3JfcmVncy4KLSsKLSsJKiBpMzg3LXRkZXAuaCAoSTM4N19OVU1fWE1NX1JFR1MpOiBSZW1vdmVk LgotKwkoSTM4N19OVU1fVkVDVE9SX1JFR1MpOiBOZXcuCi0rCShJMzg3X01YQ1NSX1JFR05VTSk6 IFVwZGF0ZWQuCi0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9pbml0X2FiaSk6IFVwZGF0ZWQu Ci0rCSogaTM4Ni10ZGVwLmMgKGkzODZfc3NlX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2 X214Y3NyX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X2dvMzJfaW5pdF9hYmkpOiBMaWtl d2lzZS4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTogTGlrZXdpc2UuCi0rCSogaTM4Ny10ZGVwLmMg KGkzODdfc3VwcGx5X2Z4c2F2ZSk6IExpa2V3aXNlLgotKwkoaTM4N19jb2xsZWN0X2Z4c2F2ZSk6 IExpa2V3aXNlLgotKwkoaTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdfY29s bGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDkgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogUmVwbGFjZSBQVFJBQ0Vf R0VUWFNUQVRFUkVHUyB3aXRoCi0rCVBUUkFDRV9HRVRSRUdTRVQgaW4gY29tbWVudHMuCi0rCSho YXZlX3B0cmFjZV9nZXR4c3RhdGVyZWdzKTogUmVuYW1lZCB0byAuLi4KLSsJKGhhdmVfcHRyYWNl X2dldHJlZ3NldCk6IFRoaXMuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3Rl cnMpOiBVcGRhdGVkIHRvIHVzZQotKwlQVFJBQ0VfR0VUUkVHU0VULgotKwkoYW1kNjRfbGludXhf c3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogVXBkYXRlZCB0byB1c2UKLSsJUFRSQUNFX0dFVFJF R1NFVCBhbmQgUFRSQUNFX1NFVFJFR1NFVC4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKF9p bml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXApOiBBc3NlcnQKLSsJdGhlIFhTQVZFIGV4dGVuZGVk IHN0YXRlIHNpemUuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYzogUmVwbGFjZSBQVFJBQ0VfR0VU WFNUQVRFUkVHUyB3aXRoCi0rCVBUUkFDRV9HRVRSRUdTRVQgaW4gY29tbWVudHMuCi0rCShoYXZl X3B0cmFjZV9nZXR4c3RhdGVyZWdzKTogUmVuYW1lZCB0byAuLi4KLSsJKGhhdmVfcHRyYWNlX2dl dHJlZ3NldCk6IFRoaXMuCi0rCShmZXRjaF94c3RhdGVyZWdzKTogVXBkYXRlZCB0byB1c2UgUFRS QUNFX0dFVFJFR1NFVC4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBVcGRhdGVkIHRvIHVzZSBQVFJB Q0VfR0VUUkVHU0VUIGFuZAotKwlQVFJBQ0VfU0VUUkVHU0VULgotKwotKwkqIGkzODYtbGludXgt dGRlcC5jIChfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBBc3NlcnQKLSsJdGhlIFhTQVZF IGV4dGVuZGVkIHN0YXRlIHNpemUuCi0rCi0rCSogY29uZmlnL2kzODYvbm0tbGludXgteHN0YXRl Lmg6IEluY2x1ZGUgImVsZi9jb21tb24uaCIuCi0rCShQVFJBQ0VfR0VUWFNUQVRFUkVHUyk6IFJl bW92ZWQuCi0rCShQVFJBQ0VfU0VUWFNUQVRFUkVHUyk6IExpa2V3aXNlLgotKwkoUFRSQUNFX0dF VFJFR1NFVCk6IE5ldy4KLSsJKFBUUkFDRV9TRVRSRUdTRVQpOiBMaWtld2lzZS4KLSsJKFBUUkFD RV9SRUdTRVRfTlRfU0hJRlQpOiBMaWtld2lzZS4KLSsJKFBUUkFDRV9SRUdTRVRfTUFYX1NJWkUp OiBMaWtld2lzZS4KLSsJKFBUUkFDRV9SRUdTRVRfWFNUQVRFX0FERFIpOiBMaWtld2lzZS4KLSsK LSsyMDEwLTAyLTA4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4 Ni1saW51eC10ZGVwLmM6IFJlcGxhY2UgeDg2LTY0L3g4Nl82NCB3aXRoIGFtZDY0LgotKwkqIGkz ODYtdGRlcC5jOiBMaWtld2lzZS4KLSsKLSsJKiBmZWF0dXJlcy9NYWtlZmlsZTogUmVwbGFjZSB4 ODYtNjQgd2l0aCBhbWQ2NC4KLSsJKiBmZWF0dXJlcy9pMzg2Lyo6IFJlbmFtZSB4ODYtNjQqIHRv IGFtZDY0Ki4KLSsKLSsJKiByZWdmb3JtYXRzL2kzODYvKjogUmVuYW1lIHg4Ni02NCogdG8gYW1k NjQqLgotKwotKzIwMTAtMDItMDcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBjb21tb24vaTM4Ni14c3RhdGUuYzogRG9uJ3QgaW5jbHVkZSAiY29uZmlnLmgiIGlmIFhT VEFURV9NQUlOCi0rCWlzIGRlZmluZWQuCi0rCShtYWluKTogRml4IHR5cG8uCi0rCi0rMjAxMC0w Mi0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGNvbW1vbi9pMzg2 LXhzdGF0ZS5jIChtYWluKTogTmV3LiAgRGVmaW5lZCBvbmx5IGlmIFhTVEFURV9NQUlOCi0rCWlz IGRlZmluZWQuCi0rCi0rMjAxMC0wMi0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCB2ZWN0b3JfdW5p dC4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogY29uZmlnL2kzODYvbm0tbGludXgteHN0YXRlLmg6IERvbid0IGluY2x1ZGUgPHN5cy9wdHJh Y2UuaD4uCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlw dGlvbik6IERvbid0IHVzZQotKwlwdHJhY2UuCi0rCi0rMjAxMC0wMi0wNSAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51 eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBQYXNzCi0rCWkzODZfeHN0YXRlLnNpemUgdG8g WFNUQVRFIHB0cmFjZS4KLSsJKGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6 IExpa2V3aXNlLgotKwkqIGkzODYtbGludXgtbmF0LmMgKGZldGNoX3hzdGF0ZXJlZ3MpOiBMaWtl d2lzZS4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA1ICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMg KFBUUkFDRV9HRVRYU1RBVEVSRUdTKTogRG9uJ3QgZGVmaW5lLgotKwkoUFRSQUNFX1NFVFhTVEFU RVJFR1MpOiBMaWtld2lzZS4KLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChQVFJBQ0VfR0VUWFNUQVRF UkVHUyk6Ci0rCShQVFJBQ0VfU0VUWFNUQVRFUkVHUyk6IExpa2V3aXNlLgotKwotKwkqIGNvbmZp Zy9pMzg2L25tLWxpbnV4Lmg6IEluY2x1ZGUgImNvbmZpZy9pMzg2L25tLWxpbnV4LXhzdGF0ZS5o Ii4KLSsJKiBjb25maWcvaTM4Ni9ubS1saW51eDY0Lmg6IExpa2V3aXNlLgotKwotKwkqIDM4Ni1s aW51eC10ZGVwLmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IERlZmluZSBvbmx5IGlm Ci0rCUZJTExfWFNUQVRFUkVHU0VUIGlzIGRlZmluZWQuICBVc2UgcHRyYWNlIHRvIGdldCB4Y3Iw IGZyb20KLSsJa2VybmVsLgotKwotKzIwMTAtMDItMDUgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKF9pbml0aWFsaXplX2FtZDY0X2xp bnV4X3RkZXApOiBVcGRhdGUKLSsJY29tbWVudHMuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmM6 IEluY2x1ZGUgZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1saW51eC5jCi0rCWFuZCBmZWF0dXJlcy9p Mzg2L3g4Ni02NC1hdngtbGludXguYy4KLSsJKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0 aW9uKTogSGFuZGxlIEFWWC4KLSsJKF9pbml0aWFsaXplX2kzODZfbGludXhfdGRlcCk6IENhbGwg aW5pdGlhbGl6ZV90ZGVzY19pMzg2X2F2eF9saW51eAotKwlhbmQgaW5pdGlhbGl6ZV90ZGVzY194 ODZfNjRfYXZ4X2xpbnV4LgotKwotKwkqIGkzODYtdGRlcC5jOiBJbmNsdWRlIGZlYXR1cmVzL2kz ODYvaTM4Ni1hdnguYyBhbmQKLSsJZmVhdHVyZXMvaTM4Ni94ODYtNjQtYXZ4LmMuCi0rCShfaW5p dGlhbGl6ZV9pMzg2X3RkZXApOiBDYWxsIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnggYW5kCi0r CWluaXRpYWxpemVfdGRlc2NfeDg2XzY0X2F2eC4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9p bml0KTogVHJ5IG9yZy5nbnUuZ2RiLmkzODYuYXZ4LgotKwotKzIwMTAtMDItMDUgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBmZWF0dXJlcy9pMzg2LzMyYml0LWF2eC54 bWw6IE5ldy4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWF2eC54bWw6IExpa2V3aXNlLgotKwkq IGZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbGludXguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMv aTM4Ni9pMzg2LWF2eC1saW51eC54bWw6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVzL2kzODYvaTM4 Ni1hdnguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC54bWw6IExpa2V3 aXNlLgotKwkqIGZlYXR1cmVzL2kzODYveDg2LTY0LWF2eC1saW51eC5jOiBMaWtld2lzZS4KLSsJ KiBmZWF0dXJlcy9pMzg2L3g4Ni02NC1hdngtbGludXgueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0 dXJlcy9pMzg2L3g4Ni02NC1hdnguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni94ODYt NjQtYXZ4LnhtbDogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvTWFrZWZpbGUgKFdISUNIKTog QWRkIGkzODYvaTM4Ni1hdngsCi0rCWkzODYvaTM4Ni1hdngtbGludXgsIGkzODYveDg2LTY0LWF2 eCBhbmQgaTM4Ni94ODYtNjQtYXZ4LWxpbnV4LgotKwkoaTM4Ni9pMzg2LWF2eC1leHBlZGl0ZSk6 IE5ldy4KLSsJKGkzODYvaTM4Ni1hdngtbGludXgtZXhwZWRpdGUpOiBMaWtld2lzZS4KLSsJKGkz ODYveDg2LTY0LWF2eC1leHBlZGl0ZSk6TGlrZXdpc2UuCi0rCShpMzg2L3g4Ni02NC1hdngtbGlu dXgtZXhwZWRpdGUpOiBMaWtld2lzZS4KLSsJKCQob3V0ZGlyKS9pMzg2L2kzODYtYXZ4LmRhdCk6 IE5ldyBkZXBlbmRlbmN5LgotKwkoJChvdXRkaXIpL2kzODYvaTM4Ni1hdngtbGludXguZGF0KTog TGlrZXdpc2UuCi0rCSgkKG91dGRpcikvaTM4Ni94ODYtYXZ4LTY0LmRhdCk6IExpa2V3aXNlLgot KwkoJChvdXRkaXIpL2kzODYveDg2LTY0LWF2eC1saW51eC5kYXQpOiBMaWtld2lzZS4KLSsKLSsJ KiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC1saW51eC5kYXQ6IE1vdmVkIHRvIC4uCi0rCSogcmVn Zm9ybWF0cy9pMzg2L2kzODYtYXZ4LWxpbnV4LmRhdDogSGVyZS4KLSsKLSsJKiByZWdmb3JtYXRz L3JlZy1pMzg2LWF2eC5kYXQ6IE1vdmVkIHRvIC4uCi0rCSogcmVnZm9ybWF0cy9pMzg2L2kzODYt YXZ4LmRhdDogSGVyZS4KLSsKLSsJKiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LWxpbnV4LmRh dDogTW92ZWQgdG8gLi4uCi0rCSogcmVnZm9ybWF0cy9pMzg2L3g4Ni02NC1hdngtbGludXguZGF0 OiBIZXJlLgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdnguZGF0OiBNb3ZlZCB0byAu Li4KLSsJKiByZWdmb3JtYXRzL2kzODYveDg2LTY0LWF2eC5kYXQ6IEhlcmUuCi0rCi0rMjAxMC0w Mi0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAu YyAoYW1kNjRfc3NlX3JlZ2lzdGVyX25hbWVzKTogTWFrZSBpdCBnbG9iYWwuCi0rCShhbWQ2NF9h dnhfcmVnaXN0ZXJfbmFtZXMpOiBMaWtld2lzZS4KLSsJKGFtZDY0X2luaXRfYWJpKTogRG9uJ3Qg Y2FsbCBpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdC4KLSsKLSsJKiBpMzg2LXRkZXAuYyAo aTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0X2luaXQpOiBSZW1vdmVkLgotKwkoaTM4Nl9nZGJhcmNo X2luaXQpOiBEb24ndCBjYWxsIGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0LgotKwkqIGkz ODYtdGRlcC5oIChpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFJlbW92ZWQuCi0rCi0r MjAxMC0wMi0wNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYt bGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IENoZWNrCi0r CWNvcmUgc2l6ZSBmb3IgQVZYIHN1cHBvcnQuCi0rCi0rMjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X3N1cHBseV9meHNh dmUpOiBPcHRpbWl6ZSB4c3RhdGVfYnYgPT0gMC4KLSsKLSsyMDEwLTAyLTAzICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X2Z4 c2F2ZSk6IERvbid0IHVzZQotKwlyZWdjYWNoZV9yYXdfc3VwcGx5X3BhcnQuCi0rCShpMzg3X3N1 cHBseV94c2F2ZSk6IExpa2V3aXNlLgotKwkoaTM4N19jb2xsZWN0X2Z4c2F2ZSk6IERvbid0IHVz ZSByZWdjYWNoZV9yYXdfY29sbGVjdF9wYXJ0LgotKwkoaTM4N19jb2xsZWN0X3hzYXZlKTogTGlr ZXdpc2UuCi0rCi0rCSogcmVnY2FjaGUuYyAocmVnY2FjaGVfcmF3X3N1cHBseV9wYXJ0KTogUmVt b3ZlZC4KLSsJKHJlZ2NhY2hlX3Jhd19jb2xsZWN0X3BhcnQpOiBMaWtld2lzZS4KLSsJKiByZWdj YWNoZS5oIChyZWdjYWNoZV9yYXdfc3VwcGx5X3BhcnQpOiBMaWtld2lzZS4KLSsJKHJlZ2NhY2hl X3Jhd19jb2xsZWN0X3BhcnQpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAzICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGlu dXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogVXBkYXRlCi0rCXdhcm5pbmcgbWVzc2FnZSBmb3Ig eGNyMC4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19jb2xsZWN0X3hzYXZlKTogTW92ZSBjb21t ZW50cyBvbiB4c3RhdGVfYnYuCi0rCi0rMjAxMC0wMi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRf aW5pdCk6IENoZWNrCi0rCUZJTExfWFNUQVRFUkVHU0VUIGluc3RlYWQgb2YgYml0X1hTVEFURV9B VlguCi0rCi0rCSogY29uZmlnL2kzODYvbm0tbGludXguaCAoRklMTF9YU1RBVEVSRUdTRVQpOiBV cGRhdGUgY29tbWVudHMuCi0rCSogY29uZmlnL2kzODYvbm0tbGludXg2NC5oIChGSUxMX1hTVEFU RVJFR1NFVCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYzogSW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIu Ci0rCSogaTM4Ny10ZGVwLmM6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX3Zl Y3Rvcl91bml0X2luaXQpOiBDaGVjayBpZgotKwliaXRfWFNUQVRFX0FWWCBpcyBkZWZpbmVkIGJl Zm9yZSB1c2luZyBpdC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKHhzdGF0ZS1uYXQubyk6IFJlbmFtZWQgdG8gLi4u Ci0rCShpMzg2LXhzdGF0ZS5vKTogVGhpcy4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuYzogSW5j bHVkZSAiaTM4Ni14c3RhdGUuaCIgaW5zdGVhZCBvZgotKwkieHN0YXRlLW5hdC5oIi4KLSsJKiBj b25maWcvaTM4Ni9ubS1saW51eC5oOiBMaWtld2lzZS4KLSsJKiBjb25maWcvaTM4Ni9ubS1saW51 eDY0Lmg6IExpa2V3aXNlLgotKwotKwkqIGNvbW1vbi94c3RhdGUtbmF0LmM6IE1vdmVkIHRvIC4u LgotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5jOiBUaGlzLgotKwotKwkqIGNvbW1vbi94c3RhdGUt bmF0Lmg6IE1vdmVkIHRvIC4uLgotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5oOiBUaGlzLgotKwot KwkqIGNvbmZpZy9pMzg2L2xpbnV4Lm1oIChOQVRERVBGSUxFUyk6IFJlcGxhY2UgeHN0YXRlLW5h dC5vIHdpdGgKLSsJaTM4Ni14c3RhdGUuby4KLSsJKiBjb25maWcvaTM4Ni9saW51eDY0Lm1oIChO QVRERVBGSUxFUyk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGludXhfZ3Jl Z3NldDY0X3JlZ19vZmZzZXQpOiBSZW1vdmUKLSsJeHN0YXRlX2J2IG9mZnNldC4KLSsJKGFtZDY0 X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2Zmc2V0KTogTGlrZXdpc2UuCi0rCi0rCSogYW1kNjQtbGlu dXgtdGRlcC5oIChBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0pOiBVcGRhdGVkLgotKwotKwkq IGFtZDY0LXRkZXAuYyAoYW1kNjRfc3NlX3JlZ2lzdGVyX25hbWVzKTogUmVtb3ZlIHhzdGF0ZV9i di4KLSsJKGFtZDY0X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcmVn aXN0ZXJfbmFtZSk6IFJlbW92ZSBBTUQ2NF9YU1RBVEVfQlZfUkVHTlVNLgotKwkoYW1kNjRfcmVn aXN0ZXJfdHlwZSk6IExpa2V3aXNlLgotKwotKwkqIGFtZDY0LXRkZXAuaCAoQU1ENjRfWFNUQVRF X0JWX1JFR05VTSk6IFJlbW92ZWQuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAocmVnbWFwKTog UmVtb3ZlIHhzdGF0ZV9idi4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9zc2VfcmVnaXN0ZXJf bmFtZXMpOiBSZW1vdmUgeHN0YXRlX2J2LgotKwkoaTM4Nl9hdnhfcmVnaXN0ZXJfbmFtZXMpOiBM aWtld2lzZS4KLSsJKGkzODZfeHN0YXRlX3JlZ251bV9wKTogUmVtb3ZlZC4KLSsJKGkzODZfcmVn aXN0ZXJfbmFtZSk6IFJlbW92ZSBJMzg3X1hTVEFURV9CVl9SRUdOVU0uCi0rCi0rCSogaTM4Ni10 ZGVwLmggKEkzODZfU1NFX05VTV9SRUdTKTogUmVtb3ZlIHhzdGF0ZV9idi4KLSsKLSsJKiBpMzg3 LXRkZXAuYyAoWFNBVkVfWFNUQVRFX0JWX0FERFIpOiBVcGRhdGUgY29tbWVudHMuCi0rCi0rCSog aTM4Ny10ZGVwLmggKEkzODdfWFNUQVRFX0JWX1JFR05VTSk6IFJlbW92ZWQuCi0rCi0rMjAxMC0w Mi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAu YyAoYW1kNjRfaW5pdF9hYmkpOiBVcGRhdGUgY2FsbCB0bwotKwlpMzg2X2dkYmFyY2hfdmVjdG9y X3VuaXRfaW5pdC4KLSsKLSsJKiBnZGJhcmNoLmMgKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNz X2Fjayk6IFJldHVybiB2b2lkLgotKwkqIGdkYmFyY2guaCAoZ2RiYXJjaF9xc3VwcG9ydGVkX3By b2Nlc3NfYWNrX2Z0eXBlKTogTGlrZXdpc2UuCi0rCShnZGJhcmNoX3FzdXBwb3J0ZWRfcHJvY2Vz c19hY2spOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LXRkZXAuYyAocmVtb3RlX3hjcjApOiBOZXcu Ci0rCShpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFVzZSByZW1vdGVfeGNyMCBmb3Ig cmVtb3RlCi0rCWNsaWVudC4KLSsJKGkzODZfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IFNldCBy ZW1vdGVfeGNyMC4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTogVXBkYXRlIGkzODZfZ2RiYXJjaF92 ZWN0b3JfdW5pdF9pbml0IGNhbGwuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGkzODZfZ2RiYXJjaF92 ZWN0b3JfdW5pdF9pbml0KTogVXBkYXRlZC4KLSsKLSsJKiByZW1vdGUuYyAocmVtb3RlX3F1ZXJ5 X3N1cHBvcnRlZCk6IENhbGwKLSsJZ2RiYXJjaF9xc3VwcG9ydGVkX3Byb2Nlc3NfYWNrIHdpdGgg TlVMTCB0byBwcmVwYXJlIHFTdXBwb3J0ZWQKLSsJQUNLIHByb2Nlc3NpbmcuCi0rCi0rMjAxMC0w Mi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIHJlZ2Zvcm1hdHMv cmVnLWkzODYtYXZ4LWxpbnV4LmRhdDogQWRkIHhtbGFyY2ggYW5kIG9zYWJpLgotKwkqIHJlZ2Zv cm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4KLSsKLSsJKiByZWdmb3Jt YXRzL3JlZy1pMzg2LWF2eC5kYXQ6IEFkZCB4bWxhcmNoLgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4 Ni02NC1hdnguZGF0OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29y ZV9yZWFkX2Rlc2NyaXB0aW9uKTogVXNlCi0rCVhTVEFURV9TU0VfU0laRSBpbnN0ZWFkIG9mIDU3 Ni4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51eF9nX3BhY2tldF9zaXplKTogUmVtb3Zl ZC4KLSsJKGFtZDY0X2xpbnV4X2luaXRfYWJpKTogUmVtb3ZlIGkzODZfcmVnaXN0ZXJfZ19wYWNr ZXRfZ3Vlc3Nlcy4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2dfcGFja2V0X3NpemUpOiBS ZW1vdmVkLgotKwkoYW1kNjRfaW5pdF9hYmkpOiBVcGRhdGUgaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91 bml0X2luaXQgY2FsbC4KLSsJUmVtb3ZlIGkzODZfcmVnaXN0ZXJfZ19wYWNrZXRfZ3Vlc3Nlcy4K LSsKLSsJKiBhbWQ2NC10ZGVwLmggKEFNRDY0X0dfUEFDS0VUX1NJWkVfU1NFKTogUmVtb3ZlZC4K LSsJKEFNRDY0X0dfUEFDS0VUX1NJWkVfQVZYKTogTGlrZXdpc2UuCi0rCi0rCSogZ2RiYXJjaC5j IChnZGJhcmNoX3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2spOiBBZGQgdmFsdWUuCi0rCSogZ2RiYXJj aC5oIChnZGJhcmNoX3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2tfZnR5cGUpOiBMaWtld2lzZS4KLSsJ KGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IExpa2V3aXNlLgotKwotKwkqIGkzODYt bGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2dfcGFja2V0X3NpemUpOiBSZW1vdmVkLgotKwkoaTM4 Nl9saW51eF9pbml0X2FiaSk6IFJlbW92ZSBpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMu Ci0rCi0rCSogaTM4Ni10ZGVwLmM6IERvbid0IGluY2x1ZGUgInJlbW90ZS5oIiBub3IKLSsJInRh cmdldC1kZXNjcmlwdGlvbnMuaCIuCi0rCShpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMp OiBSZW1vdmVkLgotKwkoaTM4Nl9nX3BhY2tldF9zaXplKTogTGlrZXdpc2UuCi0rCSgzODZfZ2Ri YXJjaF92ZWN0b3JfdW5pdF9pbml0KTogUmV3cml0ZS4KLSsJKGkzODZfcXN1cHBvcnRlZF9wcm9j ZXNzX2Fjayk6IE5ldy4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTogVXBkYXRlIGkzODZfZ2RiYXJj aF92ZWN0b3JfdW5pdF9pbml0IGNhbGwuCi0rCVJlbW92ZSBpMzg2X3JlZ2lzdGVyX2dfcGFja2V0 X2d1ZXNzZXMuIENhbGwKLSsJc2V0X2dkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjay4KLSsK LSsJKiBpMzg2LXRkZXAuaCAoeDg2X3ZlY3Rvcl91bml0KTogUmVtb3ZlIHVua25vd24uCi0rCShJ Mzg2X0dfUEFDS0VUX1NJWkVfU1NFKTogUmVtb3ZlZC4KLSsJKEkzODZfR19QQUNLRVRfU0laRV9B VlgpOiBMaWtld2lzZS4KLSsJKEkzODZfUFJPUEVSVFlfU1NFKTogTGlrZXdpc2UuCi0rCShJMzg2 X1BST1BFUlRZX0FWWCk6IExpa2V3aXNlLgotKwkoQU1ENjRfUFJPUEVSVFlfU1NFKTogTGlrZXdp c2UuCi0rCShBTUQ2NF9QUk9QRVJUWV9BVlgpOiBMaWtld2lzZS4KLSsJKGkzODZfZ19wYWNrZXRf c2l6ZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzKTogTGlr ZXdpc2UuCi0rCShpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFVwZGF0ZWQuCi0rCi0r CSogcmVtb3RlLmMgKHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWQpOiBQYXNzIHZhbHVlIHRvCi0rCWdk YmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjay4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfY29sbGVjdF94 c2F2ZSk6IE9wdGltaXplZC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogcmVnZm9ybWF0cy9yZWctaTM4Ni1hdngtbGludXguZGF0OiBSZW1v dmUgeGNyMC4KLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5kYXQ6IExpa2V3aXNlLgotKwkq IHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4KLSsJKiByZWdm b3JtYXRzL3JlZy14ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0wMiAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGNvbW1vbi94c3RhdGUtbmF0Lmgg KFhTVEFURV9TU0VfTUFTSyk6IE5ldy4KLSsJKFhTVEFURV9BVlhfTUFTSyk6IExpa2V3aXNlLgot KwkoWFNUQVRFX01BWF9NQVNLKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfU1NFX01BU0tfU1RSSU5H KTogTGlrZXdpc2UuCi0rCShYU1RBVEVfQVZYX01BU0tfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShY U1RBVEVfTUFYX01BU0tfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfU1NFX1NJWkUpOiBM aWtld2lzZS4KLSsJKFhTVEFURV9BVlhfU0laRSk6IExpa2V3aXNlLgotKwkoWFNUQVRFX01BWF9T SVpFKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfU1NFX1NJWkVfU1RSSU5HKTogTGlrZXdpc2UuCi0r CShYU1RBVEVfQVZYX1NJWkVfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfTUFYX1NJWkVf U1RSSU5HKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0 KTogVXNlIFhTVEFURV9NQVhfU0laRV9TVFJJTkcKLSsJYW5kIFhTVEFURV9NQVhfTUFTS19TVFJJ Tkcgb24gc2V0X2dkYmFyY2hfcXN1cHBvcnRlZC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogZ2RiYXJjaC5jIChnZGJhcmNoKTogQWRkIHFz dXBwb3J0ZWRfcHJvY2Vzc19hY2suCi0rCShzdGFydHVwX2dkYmFyY2gpOiBMaWtld2lzZS4KLSsJ KGdkYmFyY2hfYWxsb2MpOiBMaWtld2lzZS4KLSsJKHZlcmlmeV9nZGJhcmNoKTogTGlrZXdpc2Uu Ci0rCShnZGJhcmNoX2R1bXApOiBMaWtld2lzZS4KLSsJKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9j ZXNzX2Fjayk6IE5ldy4KLSsJKHNldF9nZGJhcmNoX3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2spOiBM aWtld2lzZS4KLSsKLSsJKiBnZGJhcmNoLmggKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fj a19mdHlwZSk6IE5ldy4KLSsJKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IExpa2V3 aXNlLgotKwkoc2V0X2dkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IExpa2V3aXNlLgot KwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFVwZGF0ZSBjYWxsIHRvCi0r CXNldF9nZGJhcmNoX3FzdXBwb3J0ZWQuCi0rCi0rCSogcmVtb3RlLmMgKHJlbW90ZV9zdGF0ZSk6 IFJlcGxhY2UgcXN1cHBvcnRlZCB3aXRoIGdkYmFyY2guCi0rCShpbml0X3JlbW90ZV9zdGF0ZSk6 IFNldCBnZGJhcmNoIGluc3RlYWQgb2YgIHFzdXBwb3J0ZWQuCi0rCShyZW1vdGVfcXVlcnlfc3Vw cG9ydGVkKTogUmVwbGFjZSBxc3VwcG9ydGVkIHdpdGgKLSsJZ2RiYXJjaF9xc3VwcG9ydGVkLiAg Q2FsbCBnZGJhcmNoX3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2sgb24KLSsJdW5wcm9jZXNzZWQgQUNL cy4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X3hzYXZlKTogQXBwbHkgWENSMCBtYXNrIHRvIGNs ZWFyX2J2LgotKwkoaTM4N19jb2xsZWN0X3hzYXZlKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0w MiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5h dC5jIChhbWQ2NF9saW51eF9ncmVnc2V0NjRfcmVnX29mZnNldCk6IFJlbW92ZQotKwl4Y3IwIG9m ZnNldC4KLSsJKGFtZDY0X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2Zmc2V0KTogTGlrZXdpc2UuCi0r Ci0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmUgeGNy MC4KLSsJKGFtZDY0X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcmVn aXN0ZXJfbmFtZSk6IFJlbW92ZSBBTUQ2NF9YQ1IwX1JFR05VTS4KLSsJKGFtZDY0X3JlZ2lzdGVy X3R5cGUpOiBSZW1vdmUgQU1ENjRfWENSMF9SRUdOVU0uICBVcGRhdGUKLSsJQU1ENjRfWFNUQVRF X0JWX1JFR05VTS4KLSsKLSsJKiBhbWQ2NC10ZGVwLmggKEFNRDY0X1hDUjBfUkVHTlVNKTogUmVt b3ZlZC4KLSsKLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChyZWdtYXApOiBSZW1vdmUgeGNyMC4KLSsK LSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmUgeGNyMC4K LSsJKGkzODZfYXZ4X3JlZ2lzdGVyX25hbWVzKTogTGlrZXdpc2UuCi0rCShpMzg2X3hzdGF0ZV9y ZWdudW1fcCk6IFJlbW92ZWQuCi0rCShpMzg2X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUgSTM4N19Y Q1IwX1JFR05VTS4KLSsJKGkzODZfeGNyMF90eXBlKTogUmVtb3ZlZC4KLSsJKGkzODZfcmVnaXN0 ZXJfdHlwZSk6IFJlbW92ZSBJMzg3X1hDUjBfUkVHTlVNIGFuZAotKwlJMzg3X1hTVEFURV9CVl9S RUdOVU0uCi0rCShpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBSZW1vdmUgaTM4Nl94c3RhdGVf cmVnbnVtX3AuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6IFJlbW92ZSBpMzg2 X3hjcjBfdHlwZS4KLSsJKEkzODZfU1NFX05VTV9SRUdTKTogUmVtb3ZlIHhjcjAuCi0rCShpMzg2 X3hjcjBfdHlwZSk6IFJlbW92ZWQuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKFhTQVZFX1hDUjBfQURE Uik6IFJlbW92ZWQuCi0rCShpMzg3X3N1cHBseV94c2F2ZSk6IENsZWFyIHBhcnQgaW4gdmVjdG9y IHJlZ2lzdGVycyBpZiBpdHMgYml0IGluCi0rCXhzdGF0X2J2IGlzIHplcm8uICBEb24ndCB1cGRh dGUgSTM4N19YQ1IwX1JFR05VTSBub3IKLSsJSTM4N19YU1RBVEVfQlZfUkVHTlVNLgotKwkoaTM4 N19jb2xsZWN0X3hzYXZlKTogQ2xlYXIgcGFydCBpbiB2ZWN0b3IgcmVnaXN0ZXJzIGlmIGl0cyBi aXQKLSsJaW4geHN0YXRfYnYgaXMgemVyby4gIFVwZGF0ZSB4c3RhdF9idiBkaXJlY3RseS4KLSsK LSsJKiBpMzg3LXRkZXAuaCAoSTM4N19YQ1IwX1JFR05VTSk6IFJlbW92ZWQuCi0rCi0rMjAxMC0w Mi0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYmFyY2guYyAo Z2RiYXJjaCk6IEFkZCBxc3VwcG9ydGVkLgotKwkoc3RhcnR1cF9nZGJhcmNoKTogTGlrZXdpc2Uu Ci0rCShnZGJhcmNoX2FsbG9jKTogTGlrZXdpc2UuCi0rCSh2ZXJpZnlfZ2RiYXJjaCk6IExpa2V3 aXNlLgotKwkoZ2RiYXJjaF9kdW1wKTogTGlrZXdpc2UuCi0rCShnZGJhcmNoX3FzdXBwb3J0ZWQp OiBOZXcuCi0rCShzZXRfZ2RiYXJjaF9xc3VwcG9ydGVkKTogTGlrZXdpc2UuCi0rCi0rCSogZ2Ri YXJjaC5oIChnZGJhcmNoX3FzdXBwb3J0ZWQpOiBOZXcuCi0rCShzZXRfZ2RiYXJjaF9xc3VwcG9y dGVkKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTog Q2FsbCBzZXRfZ2RiYXJjaF9xc3VwcG9ydGVkLgotKwotKwkqIHJlbW90ZS5jIChyZW1vdGVfc3Rh dGUpOiBBZGQgcXN1cHBvcnRlZC4KLSsJKGluaXRfcmVtb3RlX3N0YXRlKTogU2V0IHFzdXBwb3J0 ZWQgZnJvbSBnZGJhcmNoX3FzdXBwb3J0ZWQuCi0rCShyZW1vdGVfcXVlcnlfc3VwcG9ydGVkKTog U3VwcG9ydCBxc3VwcG9ydGVkLgotKwotKzIwMTAtMDItMDEgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19jb2xsZWN0X3hzYXZlKTogT3B0 aW1pemUgdXBkYXRpbmcgc2luZ2xlCi0rCXZlY3RvciByZWdpc3Rlci4KLSsKLSsyMDEwLTAyLTAx ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkz ODdfY29sbGVjdF94c2F2ZSk6IEdldCB0aGUgb3JpZ2luYWwgYHhzdGF0X2J2Jy4KLSsKLSsyMDEw LTAyLTAxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVw LmMgKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogVXNlCi0rCXJlZ2NhY2hlX2Nvb2tl ZF9yZWFkX3Vuc2lnbmVkLgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X2NvbGxlY3RfeHNhdmUp OiBVcGRhdGUgdGhlIGJpdHMgaW4KLSsJYHhzdGF0ZV9idicgaWYgYW55IFNTRS9BVlggcmVnaXN0 ZXJzIGFyZSBjaGFuZ2VkLiAgRG9uJ3QgY2hhbmdlCi0rCWB4Y3IwJy4KLSsKLSsyMDEwLTAyLTAx ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChh bWQ2NF9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBVc2UgTlVMTCBvbiB4c3RhdGVfYnYuCi0rCShhbWQ2 NF9hdnhfcmVnaXN0ZXJfbmFtZXMpOiBMaWtld2lzZS4KLSsJKGFtZDY0X3JlZ2lzdGVyX25hbWUp OiBSZXR1cm4gTlVMTCBmb3IgQU1ENjRfWFNUQVRFX0JWX1JFR05VTS4KLSsKLSsJKiBhbWQ2NC10 ZGVwLiAoQU1ENjRfR19QQUNLRVRfU0laRV9BVlgpOiBEb24ndCBpbmNsdWRlIHhzdGF0ZV9idi4K LSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBVc2UgTlVMTCBv biB4c3RhdGVfYnYuCi0rCShpMzg2X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwko aTM4Nl9yZWdpc3Rlcl9uYW1lKTogUmV0dXJuIE5VTEwgZm9yIEkzODZfWFNUQVRFX0JWX1JFR05V TS4KLSsKLSsJKiBpMzg2LXRkZXAuIChJMzg2X0dfUEFDS0VUX1NJWkVfQVZYKTogRG9uJ3QgaW5j bHVkZSB4c3RhdGVfYnYuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKFhTQVZFX1hTVEFURV9CVl9BRERS KTogVXBkYXRlIGNvbW1lbnRzLgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLWkzODYtYXZ4LWxpbnV4 LmRhdDogUmVtb3ZlIHhzdGF0ZV9idi4KLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5kYXQ6 IExpa2V3aXNlLgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtl d2lzZS4KLSsJKiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0r MjAxMC0wMi0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYt dGRlcC5jIChpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IENvcnJlY3QgdGhlCi0rCVhD UjAgcmVnaXN0ZXIgbnVtYmVyIGZvciA2NGJpdC4KLSsKLSsyMDEwLTAyLTAxICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF92 ZWN0b3JfdW5pdF9pbml0KTogR2V0IHhjcjAgZnJvbQotKwl0aGUgcmVtb3RlIHRhcmdldC4KLSsK LSsyMDEwLTAxLTMxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1k NjQtdGRlcC5oIChBTUQ2NF9HX1BBQ0tFVF9TSVpFX0FWWCk6IEFkZCBzaXplcyBmb3IgeGNyMAot KwlhbmQgeHN0YXRlX2J2LgotKwkqIGkzODYtdGRlcC5oIChJMzg2X0dfUEFDS0VUX1NJWkVfQVZY KTogTGlrZXdpc2UuCi0rCi0rCSogcmVnZm9ybWF0cy9yZWctaTM4Ni1hdngtbGludXguZGF0OiBB ZGQgeGNyMCBhbmQgeHN0YXRlX2J2LgotKwkqIHJlZ2Zvcm1hdHMvcmVnLWkzODYtYXZ4LmRhdDog TGlrZXdpc2UuCi0rCSogcmVnZm9ybWF0cy9yZWcteDg2LTY0LWF2eC1saW51eC5kYXQ6IExpa2V3 aXNlLgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdnguZGF0OiBMaWtld2lzZS4KLSsKLSsy MDEwLTAxLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1s aW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogUmVhZCA4Ci0r CWJ5dGVzIGZvciB4Y3IwLgotKwotKzIwMTAtMDEtMzAgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuaCAoWFNBVkVfWENSMF9PRkZTRVQpOiBVcGRhdGUg Y29tbWVudHMuCi0rCi0rMjAxMC0wMS0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6IFJldHVybiBOVUxM IGZvciB4Y3IwCi0rCWFuZCB4c3RhdGVfYnYgaWYgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgaXNuJ3Qg c3VwcG9ydGVkLgotKwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX25hbWUpOiBMaWtld2lz ZS4KLSsJKGkzODZfeHN0YXRlX3JlZ251bV9wKTogUmV0dXJuIDAgb2YgWFNBVkUgZXh0ZW5kZWQg c3RhdGUgaXNuJ3QKLSsJc3VwcG9ydGVkLgotKwotKzIwMTAtMDEtMzAgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl94c3RhdGVfcmVnbnVt X3ApOiBOZXcuCi0rCShpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBVc2UgaXQuCi0rCi0rMjAx MC0wMS0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGlu dXgtdGRlcC5jOiBJbmNsdWRlIGkzODctdGRlcC5oIGFuZCB4c3RhdGUtbmF0LmguCi0rCShpMzg2 X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IFJlYWQgeGNyMCBmcm9tIGNvcmUgZmlsZS4K LSsKLSsJKiBpMzg3LXRkZXAuYyAoWFNBVkVfWENSMF9BRERSKTogTmV3LgotKwkoWFNBVkVfWFNU QVRFX0JWX0FERFIpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg3LXRkZXAuaCAoWFNBVkVfWENSMF9P RkZTRVQpOiBOZXcuCi0rCShYU0FWRV9YQ1IwX0FERFIpOiBSZW1vdmVkLgotKwkoWFNBVkVfWFNU QVRFX0JWX0FERFIpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTMwICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKGFtZDY0X2xpbnV4X2dy ZWdzZXQ2NF9yZWdfb2Zmc2V0KTogQWRkCi0rCWVudHJpZXMgb2YgLTEgZm9yIHhjcjAgYW5kIHhz dGF0ZV9idi4KLSsJKGFtZDY0X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2Zmc2V0KTogTGlrZXdpc2Uu Ci0rCSogaTM4Ni1saW51eC1uYXQuYyAocmVnbWFwKTogTGlrZXdpc2UuCi0rCi0rCSogYW1kNjQt bGludXgtdGRlcC5oIChBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0pOiBSZXBsYWNlCi0rCUFN RDY0X01YQ1NSX1JFR05VTSB3aXRoIEFNRDY0X1hTVEFURV9CVl9SRUdOVU0uCi0rCi0rCSogYW1k NjQtdGRlcC5jIChhbWQ2NF9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBBZGQgeGNyMCBhbmQgeHN0YXRl X2J2LgotKwkoYW1kNjRfYXZ4X3JlZ2lzdGVyX25hbWVzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9y ZWdpc3Rlcl90eXBlKTogSGFuZGxlIEFNRDY0X1hDUjBfUkVHTlVNIGFuZAotKwlBTUQ2NF9YU1RB VEVfQlZfUkVHTlVNLgotKwotKwkqIGFtZDY0LXRkZXAuaCAoYW1kNjRfcmVnbnVtKTogQWRkIEFN RDY0X1hDUjBfUkVHTlVNIGFuZAotKwlBTUQ2NF9YU1RBVEVfQlZfUkVHTlVNLgotKwotKwkqIGkz ODYtdGRlcC5jIChpMzg2X3NzZV9yZWdpc3Rlcl9uYW1lcyk6IEFkZCB4Y3IwIGFuZCB4c3RhdGVf YnYuCi0rCShpMzg2X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoaTM4Nl94Y3Iw X3R5cGUpOiBOZXcuCi0rCShpMzg2X3JlZ2lzdGVyX3R5cGUpOiBIYW5kbGUgQU1ENjRfWENSMF9S RUdOVU0gYW5kCi0rCUFNRDY0X1hTVEFURV9CVl9SRUdOVU0uCi0rCShpMzg2X2dkYmFyY2hfdmVj dG9yX3VuaXRfaW5pdCk6IFNldCB0aGUgeGNyMCBmaWVsZC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAo Z2RiYXJjaF90ZGVwKTogQWRkIHhjcjAgYW5kIGkzODZfeGNyMF90eXBlLgotKwkoSTM4Nl9TU0Vf TlVNX1JFR1MpOiBJbmNyZWFzZSBieSAyLgotKwkoaTM4Nl94Y3IwX3R5cGUpOiBOZXcuCi0rCi0r CSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X3hzYXZlKTogSGFuZGxlIEkzODdfWENSMF9SRUdO VU0KLSsJYW5kIEkzODdfWFNUQVRFX0JWX1JFR05VTS4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6 IExpa2V3aXNlLgotKwotKwkqIGkzODctdGRlcC5oIChJMzg3X1hDUjBfUkVHTlVNKTogTmV3Lgot KwkoSTM4N19YU1RBVEVfQlZfUkVHTlVNKTogTGlrZXdpc2UuCi0rCShYU0FWRV9YQ1IwX0FERFIp OiBMaWtld2lzZS4KLSsJKFhTQVZFX1hTVEFURV9CVl9BRERSKTogTGlrZXdpc2UuCi0rCi0rMjAx MC0wMS0yOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxp bnV4LW5hdC5jIChhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBGYWxsCi0r CWJhY2sgYWZ0ZXIgUFRSQUNFX0dFVFhTVEFURVJFR1MgaWYgaGF2ZV9wdHJhY2VfZ2V0eHN0YXRl cmVncyA9PSAxLgotKwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlr ZXdpc2UuCi0rCShfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQpOiBJbml0aWFsaXplIGhhdmVf cHRyYWNlX2dldHhzdGF0ZXJlZ3MKLSsJdG8gMiBmb3IgQVZYLgotKwotKwkqIGkzODYtbGludXgt bmF0LmMgKGZldGNoX3hzdGF0ZXJlZ3MpOiBGYWxsIGJhY2sgYWZ0ZXIKLSsJUFRSQUNFX0dFVFhT VEFURVJFR1MgaWYgaGF2ZV9wdHJhY2VfZ2V0eHN0YXRlcmVncyA9PSAxLgotKwkoc3RvcmVfeHN0 YXRlcmVncyk6IExpa2V3aXNlLgotKwkoX2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQpOiBJbml0 aWFsaXplIGhhdmVfcHRyYWNlX2dldHhzdGF0ZXJlZ3MKLSsJdG8gMiBmb3IgQVZYLgotKwotKwkq IGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFVwZGF0ZWQuCi0r Ci0rCSogY29tbW9uL3hzdGF0ZS1uYXQuaCAoeHN0YXRlKTogUmVtb3ZlZC4KLSsJKHhzdGF0ZV9z dGF0dXMpOiBOZXcuCi0rCShiaXRfWFNUQVRFX1g4Nyk6IExpa2V3aXNlLgotKwkoYml0X1hTVEFU RV9TU0UpOiBMaWtld2lzZS4KLSsJKGJpdF9YU1RBVEVfQVZYKTogTGlrZXdpc2UuCi0rCShpMzg2 X3hzdGF0ZV90eXBlKTogUmVtb3ZlIHN0YXRlLiAgQWRkIHN0YXR1cyBhbmQgeGNyMC4KLSsKLSsJ KiBjb21tb24veHN0YXRlLW5hdC5jIChpMzg2X3hzdGF0ZV9pbml0KTogVXBkYXRlZC4KLS0tLSAu L2dkYi9DaGFuZ2VMb2cueG1sCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvQ2hhbmdlTG9nLnhtbAkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIw MAotQEAgLTAsMCArMSw0NjQgQEAKLSsyMDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogcmVtb3RlLmMgKHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCk6 IFVzZSBzdHJ0b2suCi0rCi0rMjAxMC0wMy0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIE5FV1M6IE1lbnRpb24geG1sUmVnaXN0ZXJzPSBpbiBxU3VwcG9ydGVkIHBh Y2tldC4KLSsKLSsyMDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogTW92ZQotKwlyZWdpc3Rlcl9y ZW1vdGVfc3VwcG9ydF94bWwgY2FsbCB0byAuLi4KLSsJKF9pbml0aWFsaXplX2kzODZfdGRlcCk6 IEhlcmUuCi0rCi0rMjAxMC0wMy0yOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFBhc3MgImkzODYiIGluc3Rl YWQgb2YgIng4NiIKLSsJdG8gcmVnaXN0ZXJfcmVtb3RlX3N1cHBvcnRfeG1sLgotKwotKzIwMTAt MDMtMjkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiByZW1vdGUuYyAo cmVnaXN0ZXJfcmVtb3RlX3N1cHBvcnRfeG1sKTogRG8gbm90aGluZyBpZgotKwlIQVZFX0xJQkVY UEFUIGlzIHVuZGVmaW5lZC4KLSsKLSsyMDEwLTAzLTI4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogcmVtb3RlLmMgKHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCk6 IEFkZCAieG1sUmVnaXN0ZXJzPSIKLSsJcHJlZml4LiAgRnJlZSB0aGUgdW51c2VkIG9sZCBtZW1v cnkuCi0rCShyZW1vdGVfcXVlcnlfc3VwcG9ydGVkX2FwcGVuZCk6IE5ldy4KLSsJKHJlbW90ZV9x dWVyeV9zdXBwb3J0ZWQpOiBDYWxsIHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWRfYXBwZW5kLgotKwot KzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2 LXRkZXAuYzogSW5jbHVkZSAicmVtb3RlLmgiLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBDYWxs IHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbC4KLSsKLSsJKiByZW1vdGUuYyAocmVtb3RlX3N1 cHBvcnRfeG1sKTogTmV3LgotKwkocmVnaXN0ZXJfcmVtb3RlX3N1cHBvcnRfeG1sKTogTGlrZXdp c2UuCi0rCShyZW1vdGVfcXVlcnlfc3VwcG9ydGVkKTogU3VwcG9ydCByZW1vdGVfc3VwcG9ydF94 bWwuCi0rCi0rCSogcmVtb3RlLmggKHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCk6IE5ldy4K LSsKLSsyMDEwLTAyLTI4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog YW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBE b24ndAotKwljaGVjayAucmVnIHNlY3Rpb24gc2l6ZS4KLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAo aTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAy LTI4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgt bmF0LmMgKEFNRDY0X0xJTlVYX1VTRVI2NF9DUyk6IE5ldy4KLSsJKGFtZDY0X2xpbnV4X3JlYWRf ZGVzY3JpcHRpb24pOiBVc2UgaXQuCi0rCi0rMjAxMC0wMi0yMiAgSC5KLiBMdSAgPGhvbmdqaXUu bHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoYW1kNjRfbGludXhfaW5p dF9hYmkpOiBDaGVjayBvcmlnX3JheAotKwlyaWdodCBhZnRlciBhbWQ2NF9pbml0X2FiaS4KLSsK LSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9pbml0X2FiaSk6IENoZWNrIG9yaWdf ZWF4Ci0rCXJpZ2h0IGFmdGVyIGkzODZfZWxmX2luaXRfYWJpLgotKwotKzIwMTAtMDItMjIgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAo YW1kNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFJlYWQgQ1MKLSsJcmVnaXN0ZXIgdG8gY2hl Y2sgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLgotKwotKzIwMTAtMDItMjIgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl92YWxpZGF0ZV90ZGVz Y19wKTogTmV3LgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBVc2UgaXQuCi0rCi0rMjAxMC0wMi0x OCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5h dC5jIChhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogUmV0dXJuCi0rCXRkZXNjX2kzODZf bGludXggZm9yIDMyYml0LgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2luaXRfYWJpKTogU2V0IG51bV9j b3JlX3JlZ3MgYW5kCi0rCXJlZ2lzdGVyX25hbWVzIGFmdGVyIHRkZXNjLgotKwkqIGkzODYtdGRl cC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IERvbid0IGNoZWNrIGJmZF9hcmNoX2kzODYuICBTZXQg Ci0rCW51bV9jb3JlX3JlZ3MgYW5kIHJlZ2lzdGVyX25hbWVzIGFmdGVyIHRkZXNjLgotKwotKzIw MTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1s aW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2luaXRfYWJpKTogUmVtb3ZlIGEgc3RyYXllZAotKwlj b21tZW50LgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogRG9uJ3QgaW5jbHVkZSAiaTM4Ny10ZGVwLmgiLgot KwkqIGFtZDY0LWxpbnV4LXRkZXAuYzogTGlrZXdpc2UuCi0rCSogaTM4Ni1saW51eC10ZGVwLmM6 IExpa2V3aXNlLgotKwotKwkqIGkzODYtdGRlcC5oIChpMzg2X3JlZ251bSk6IEFkZCBJMzg2X01Y Q1NSX1JFR05VTS4KLSsJKEkzODZfU1NFX05VTV9SRUdTKTogRGVmaW5lZCB3aXRoIEkzODZfTVhD U1JfUkVHTlVNLgotKwotKzIwMTAtMDItMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KLSsKLSsJKiBpMzg2LXRkZXAuaCAodGRlc2NfaTM4Nik6IFJlbW92ZWQuCi0rCi0rMjAxMC0w Mi0xNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4 LW5hdC5jOiBJbmNsdWRlICJpMzg3LXRkZXAuaCIuCi0rCShhbWQ2NF9saW51eF9yZWFkX2Rlc2Ny aXB0aW9uKTogSnVzdCByZXR1cm4gdGRlc2NfYW1kNjRfbGludXguCi0rCi0rCSogYW1kNjQtbGlu dXgtdGRlcC5jOiBEb24ndCBpbmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIuCi0rCUluY2x1ZGUg ImkzODctdGRlcC5oIi4KLSsJKGFtZDY0X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmVkLgot KwkoYW1kNjRfbGludXhfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgotKwkoYW1kNjRfbGludXhf Y29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogSnVzdCByZXR1cm4KLSsJdGRlc2NfYW1kNjRfbGludXgu Ci0rCShhbWQ2NF9saW51eF9pbml0X2FiaSk6IFNldCB0YXJnZXQgZGVzY3JpcHRpb24gdG8KLSsJ dGRlc2NfYW1kNjRfbGludXggaWYgbmVlZGVkLiAgU3VwcG9ydCBvcmlnX3JheC4gIFNldAotKwly ZWdpc3Rlcl9yZWdncm91cF9wLgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfcmVnaXN0ZXJf bmFtZXMpOiBNYWtlIGl0IHN0YXRpYy4KLSsJKGFtZDY0X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6 IFJlbW92ZWQuCi0rCShhbWQ2NF9pbml0X2FiaSk6IFNldCBudW1fY29yZV9yZWdzIGFuZCByZWdp c3Rlcl9uYW1lcy4gIFNldAotKwl0YXJnZXQgZGVzY3JpcHRpb24gdG8gdGRlc2NfYW1kNjQgaWYg bmVlZGVkLiAgQ2FsbAotKwlzZXRfZ2RiYXJjaF9udW1fcmVncy4gCi0rCi0rCSogYW1kNjQtdGRl cC5oIChhbWQ2NF9yZWdpc3Rlcl9uYW1lcyk6IFJlbW92ZWQuCi0rCSh0ZGVzY19hbWQ2NCk6IExp a2V3aXNlLgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBJbmNsdWRlICJpMzg3LXRkZXAuaCIu Ci0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmVkLgotKwkoaTM4Nl9saW51eF9y ZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9pbml0X2FiaSk6IFNldCB0 YXJnZXQgZGVzY3JpcHRpb24gdG8KLSsJdGRlc2NfaTM4Nl9saW51eCBpZiBuZWVkZWQuICBTdXBw b3J0IG9yaWdfZWF4LiAgU2V0Ci0rCXJlZ2lzdGVyX3JlZ2dyb3VwX3AuCi0rCi0rCSogaTM4Ni1u dG8tdGRlcC5jIChpMzg2bnRvX3JlZ3NldF9pZCk6IFJlcGxhY2UgSTM4Nl9OVU1fRlJFR1MKLSsJ d2l0aCBJMzg3X05VTV9SRUdTLgotKwotKwkqIGkzODYtdGRlcC5jOiBEb24ndCBpbmNsdWRlICJh bWQ2NC10ZGVwLmgiLgotKwkoaTM4Nl9nbzMyX2luaXRfYWJpKTogUmVwbGFjZSBJMzg2X05VTV9G UkVHUyB3aXRoIEkzODdfTlVNX1JFR1MuCi0rCShpMzg2X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6 IFJlbW92ZWQuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCB0YXJnZXQgZGVzY3JpcHRpb24g dG8gdGRlc2NfaTM4NiBpZgotKwluZWVkZWQuICBTZXQgZ3JlZ3NldF9udW1fcmVncyB0byBJMzg2 X05VTV9HUkVHUy4gIFNldAotKwludW1fY29yZV9yZWdzIGFuZCByZWdpc3Rlcl9uYW1lcy4gIFNl dCByZWdpc3Rlcl9yZWdncm91cF9wLgotKwotKzIwMTAtMDItMTcgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBN b3ZlIHRkZXNjX3VzZV9yZWdpc3RlcnMKLSsJbW9yZSB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZnVu Y3Rpb24uICBDYWxsIHRkZXNjX3VzZV9yZWdpc3RlcnMKLSsJYWZ0ZXIgZ2RiYXJjaF9pbml0X29z YWJpLiAgVXBkYXRlCi0rCXNldF9nZGJhcmNoX3JlZ2lzdGVyX3JlZ2dyb3VwX3AuCi0rCi0rCSog aTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6IEFkZCBudW1fY29yZV9yZWdzLAotKwlyZWdpc3Rl cl9uYW1lcywgdGRlc2MgYW5kIHJlZ2lzdGVyX3JlZ2dyb3VwX3AuCi0rCShJMzg2X05VTV9GUkVH Uyk6IFJlbW92ZWQuCi0rCShJMzg2X1NTRV9OVU1fUkVHUyk6IFJlcGxhY2UgSTM4Nl9OVU1fRlJF R1Mgd2l0aCBJMzg3X05VTV9SRUdTLgotKwotKwkqIGkzODctdGRlcC5oIChJMzg3X05VTV9SRUdT KTogTmV3LgotKwotKzIwMTAtMDItMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBNb3ZlIHRkZXNjX3VzZV9y ZWdpc3RlcnMKLSsJZnVydGhlciB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCi0rCi0r MjAxMC0wMi0xNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYt dGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IE1vdmUgdGRlc2NfdXNlX3JlZ2lzdGVycwotKwl0 b3dhcmQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCi0rCi0rMjAxMC0wMi0xNyAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYzogSW5jbHVkZSAiZmVh dHVyZXMvaTM4Ni9hbWQ2NC5jIi4KLSsJKGFtZDY0X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IE5l dy4KLSsJKF9pbml0aWFsaXplX2FtZDY0X3RkZXApOiBMaWtld2lzZS4KLSsJKGFtZDY0X2luaXRf YWJpKTogQ2FsbCBzZXRfZ2RiYXJjaF9jb3JlX3JlYWRfZGVzY3JpcHRpb24uCi0rCi0rCSogYW1k NjQtdGRlcC5oICh0ZGVzY19hbWQ2NCk6IE5ldy4KLSsKLSsJKiBpMzg2LXRkZXAuYzogSW5jbHVk ZSBpMzg2LXRkZXAuaCIgaW5zdGVhZCBvZiAiYW1kNjQtdGRlcC5oIi4KLSsJSW5jbHVkZSAiYW1k NjQtdGRlcC5oIiBpbnN0ZWFkIG9mICJmZWF0dXJlcy9pMzg2L2FtZDY0LmMiIHdoZW4KLSsJQkZE NjQgaXMgZGVmaW5lZC4KLSsJKGkzODZfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogTmV3LgotKwko aTM4Nl9nZGJhcmNoX2luaXQpOiBDYWxsIHNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlv bi4KLSsJKF9pbml0aWFsaXplX2kzODZfdGRlcCk6IERvbid0IENhbGwgaW5pdGlhbGl6ZV90ZGVz Y19hbWQ2NC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAodGRlc2NfaTM4Nik6IE5ldy4KLSsKLSsyMDEw LTAyLTE3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGlu dXgtbmF0LmMgKGFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0rCShfaW5pdGlh bGl6ZV9hbWQ2NF9saW51eF9uYXQpOiBVc2UgaXQuCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5j OiBJbmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIgYW5kCi0rCWZlYXR1cmVzL2kzODYvYW1kNjQt bGludXguYy4KLSsJKGFtZDY0X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBOZXcuCi0rCShhbWQ2NF9s aW51eF9yZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9jb3JlX3JlYWRf ZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSsJKGFtZDY0X2xpbnV4X2luaXRfYWJpKTogU3VwcG9y dCByZW1vdGUgc3R1YiB3aXRob3V0IFhNTCB0YXJnZXQKLSsJZGVzY3JpcHRpb24uICBVc2UgYW1k NjRfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIGluc3RlYWQgb2YKLSsJaTM4Nl9saW51eF9j b3JlX3JlYWRfZGVzY3JpcHRpb24uCi0rCShfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF90ZGVwKTog Q2FsbCBpbml0aWFsaXplX3RkZXNjX2FtZDY0X2xpbnV4LgotKwotKwkqIGFtZDY0LWxpbnV4LXRk ZXAuaDogRG9uJ3QgaW5jbHVkZSAiaTM4Ni1saW51eC10ZGVwLmgiLgotKwkodGRlc2NfYW1kNjRf bGludXgpOiBOZXcuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAoaTM4Nl9saW51eF9yZWFkX2Rl c2NyaXB0aW9uKTogTmV3LgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBJbmNsdWRlICJpMzg2 LXRkZXAuaC8iaTM4Ni1saW51eC10ZGVwLmgiCi0rCWluc3RlYWQgb2YgImFtZDY0LXRkZXAuaCIv ImFtZDY0LWxpbnV4LXRkZXAuaCIuCi0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBEb24n dCBjaGVjayBCRkQ2NC4KLSsJKGkzODZfbGludXhfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgot KwkoX2luaXRpYWxpemVfaTM4Nl9saW51eF90ZGVwKTogTGlrZXdpc2UuCi0rCShpMzg2X2xpbnV4 X2luaXRfb3JpZ19lYXgpOiBSZW1vdmVkLgotKwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3Jp cHRpb24pOiBNYWtlIGl0IHN0YXRpYy4gIERvbid0Ci0rCWNoZWNrIEJGRDY0LgotKwkoaTM4Nl9s aW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogUmVtb3ZlZC4KLSsJKGkzODZfbGludXhfaW5pdF9hYmkp OiBTdXBwb3J0IHJlbW90ZSBzdHViIHdpdGhvdXQgWE1MIHRhcmdldAotKwlkZXNjcmlwdGlvbi4K LSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuaCAoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRp b24pOiBSZW1vdmVkLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogTGlrZXdpc2Uu Ci0rCShpMzg2X2xpbnV4X2luaXRfb3JpZ19lYXgpOiBMaWtld2lzZS4KLSsJKHRkZXNjX2kzODZf bGludXgpOiBOZXcuCi0rCi0rMjAxMC0wMi0xMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IE9wdGltaXplIGZv ciBCRkQ2NC4KLSsKLSsyMDEwLTAyLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+ Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSk6IE9w dGltaXplZCBmb3IKLSsJQkZENjQuCi0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtl d2lzZS4KLSsJKGkzODZfbGludXhfaW5pdF9vcmlnX2VheCk6IExpa2V3aXNlLgotKwkoaTM4Nl9s aW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAo dGRlc2NfZ2RiX3R5cGUpOiBDb3JyZWN0IGkzODZfZWZsYWdzCi0rCXR5cGUuCi0rCi0rMjAxMC0w Mi0wOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5j IChpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCBudW1iZXJzIG9mIGRpZmZlcmVudAotKwlyZWdpc3Rl cnMgc2VwYXJhdGVseSBmb3IgMzJiaXQgYW5kIDY0Yml0LgotKwotKzIwMTAtMDItMDggIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4N19leHRf dHlwZSk6IENhbGwgdGRlc2NfZmluZF90eXBlIGluc3RlYWQgb2YKLSsJYXJjaF9mbG9hdF90eXBl LgotKwotKwkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAodGRlc2NfZmluZF90eXBlKTogTmV3Lgot KwkodGRlc2NfZ2RiX3R5cGUpOiBVc2UgaXQuCi0rCi0rCSogdGFyZ2V0LWRlc2NyaXB0aW9ucy5o ICh0ZGVzY19maW5kX3R5cGUpOiBOZXcuCi0rCi0rMjAxMC0wMi0wNyAgSC5KLiBMdSAgPGhvbmdq aXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBSZXBsYWNlIHg4Ni02 NC94ODZfNjQgd2l0aCBhbWQ2NC4KLSsJKiBpMzg2LXRkZXAuYzogTGlrZXdpc2UuCi0rCi0rCSog ZmVhdHVyZXMvTWFrZWZpbGU6IFJlcGxhY2UgeDg2LTY0IHdpdGggYW1kNjQuCi0rCSogZmVhdHVy ZXMvaTM4Ni8qOiBSZW5hbWUgeDg2LTY0KiB0byBhbWQ2NCouCi0rCi0rCSogcmVnZm9ybWF0cy9p Mzg2Lyo6IFJlbmFtZSB4ODYtNjQqIHRvIGFtZDY0Ki4KLSsKLSsyMDEwLTAyLTA3ICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogZmVhdHVyZXMvTWFrZWZpbGUgKEkzODYt WE1MVE9DKTogUmVtb3ZlZC4gCi0rCShJMzg2LUNGSUxFUyk6IExpa2V3aXNlLgotKwkoaTM4Ni1j ZmlsZXMpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfaW5pdF9vcmln X2VheCk6IFJldHVybiBvbmx5Ci0rCWlmIFhNTCB0YXJnZXQgZGVzY3JpcHRpb24gaXMgYXZhaWxh YmxlLgotKwotKzIwMTAtMDItMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9pbml0X29yaWdfZWF4KTogQ2hlY2sK LSsJb3JnLmdudS5nZGIuaTM4Ni5saW51eCBpbnN0ZWFkIG9mIG9yZy5nbnUuZ2RiLmkzODYuY29y ZS4KLSsKLSsyMDEwLTAyLTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51eF9pbml0X2FiaSk6IFJldmVydCB0aGUg bGFzdAotKwljaGFuZ2UuICBDYWxsIGkzODZfbGludXhfaW5pdF9vcmlnX2VheC4KLSsKLSsJKiBp Mzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9yZWdpc3Rlcl9uYW1lKTogTWFrZSBpdCBzdGF0 aWMuCi0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfbGlu dXhfaW5pdF9vcmlnX2VheCk6IE5ldy4KLSsJKGkzODZfbGludXhfaW5pdF9hYmkpOiBSZXZlcnQg dGhlIGxhc3QgY2hhbmdlLiAgQ2FsbAotKwlpMzg2X2xpbnV4X2luaXRfb3JpZ19lYXguCi0rCi0r CSogaTM4Ni1saW51eC10ZGVwLmggKGkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSk6IFJlbW92ZWQu Ci0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfbGludXhf aW5pdF9vcmlnX2VheCk6IE5ldy4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51eF9pbml0 X2FiaSk6IFJlc3RvcmUKLSsJc2V0X2dkYmFyY2hfbnVtX3JlZ3MuICBDYWxsIHNldF9nZGJhcmNo X3JlZ2lzdGVyX25hbWUsCi0rCXNldF9nZGJhcmNoX3JlZ2lzdGVyX3R5cGUgYW5kIHNldF9nZGJh cmNoX3JlbW90ZV9yZWdpc3Rlcl9udW1iZXIuCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5oOiBJ bmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmM6IElu Y2x1ZGUgImkzODYtdGRlcC5oIiBhbmQKLSsJImkzODYtbGludXgtdGRlcC5oIiB3aXRoICJhbWQ2 NC10ZGVwLmgiIGFuZCAiYW1kNjQtbGludXgtdGRlcC5oIi4KLSsJKGkzODZfbGludXhfcmVnaXN0 ZXJfbmFtZSk6IFJlc3RvcmVkIGFuZCByZXdvdGUuICBNYWtlIGl0IGdsb2JhbC4KLSsJKGkzODZf bGludXhfcmVnaXN0ZXJfdHlwZSk6IE5ldy4KLSsJKGkzODZfbGludXhfaW5pdF9hYmkpOiBSZXN0 b3JlIHNldF9nZGJhcmNoX251bV9yZWdzIGFuZAotKwlzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1l LiAgQ2FsbCBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIGFuZAotKwlzZXRfZ2RiYXJjaF9yZW1v dGVfcmVnaXN0ZXJfbnVtYmVyLgotKwotKwkqIGkzODYtbGludXgtdGRlcC5oIChpMzg2X2xpbnV4 X3JlZ2lzdGVyX25hbWUpOiBOZXcuCi0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtl d2lzZS4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9u KTogRml4IGEKLSsJdHlwbyBpbiBjb21tZW50cy4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9p bml0KTogT3B0aW1pemUgdGFyZ2V0IGRlc2NyaXB0aW9uCi0rCWNoZWNrLgotKwotKzIwMTAtMDIt MDQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC10 ZGVwLmM6IEluY2x1ZGUgImkzODYtbGludXgtdGRlcC5oIgotKwkoYW1kNjRfbGludXhfaW5pdF9h YmkpOiBDYWxsIHNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbi4KLSsKLSsJKiBpMzg2 LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBGaXggYQot Kwl0eXBvLgotKwotKzIwMTAtMDItMDQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTog U2V0Ci0rCXRvX3JlYWRfZGVzY3JpcHRpb24gdG8gaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9u LgotKwkqIGkzODYtbGludXgtbmF0LmMgKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0KTogTGlr ZXdpc2UuCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51eF9yZWdpc3Rlcl9u YW1lKTogUmVtb3ZlZC4KLSsJKGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4K LSsJKGFtZDY0X2xpbnV4X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBzZXRfZ2RiYXJjaF9udW1fcmVn cywKLSsJc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZSBub3Igc2V0X2dkYmFyY2hfcmVnaXN0ZXJf dHlwZS4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X3JlZ2lzdGVyX25hbWVzKTogTWFrZSBp dCBnbG9iYWwuCi0rCShhbWQ2NF9yZWdpc3Rlcl9uYW1lKTogUmVtb3ZlZC4KLSsJKGFtZDY0X3Jl Z2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGFtZDY0X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBz ZXRfZ2RiYXJjaF9udW1fcmVncywKLSsJc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZSBub3Igc2V0 X2dkYmFyY2hfcmVnaXN0ZXJfdHlwZS4KLSsKLSsJKiBhbWQ2NC10ZGVwLmggKGFtZDY0X3JlZ2lz dGVyX25hbWVzKTogTmV3LgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBJbmNsdWRlIGZlYXR1 cmVzL2kzODYvaTM4Ni1saW51eC5jIGFuZAotKwlmZWF0dXJlcy9pMzg2L3g4Ni02NC1saW51eC5j LgotKwkoaTM4Nl9saW51eF9yZWdpc3Rlcl9uYW1lKTogUmVtb3ZlZC4KLSsJKGkzODZfbGludXhf Y29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogTmV3LgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0 aW9uKTogTGlrZXdpc2UuCi0rCShpMzg2X2xpbnV4X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBzZXRf Z2RiYXJjaF9udW1fcmVncyBub3IKLSsJc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZS4gIENhbGwK LSsJc2V0X2dkYmFyY2hfY29yZV9yZWFkX2Rlc2NyaXB0aW9uLgotKwkoX2luaXRpYWxpemVfaTM4 Nl9saW51eF90ZGVwKTogQ2FsbCBpbml0aWFsaXplX3RkZXNjX2kzODZfbGludXgKLSsJYW5kIGlu aXRpYWxpemVfdGRlc2NfeDg2XzY0X2xpbnV4LgotKwotKwkqIGkzODYtbGludXgtdGRlcC5oIChp Mzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IE5ldy4KLSsJKGkzODZfbGludXhfcmVh ZF9kZXNjcmlwdGlvbik6IExpa2V3aXNlLgotKwotKwkqIGkzODYtdGRlcC5jOiBJbmNsdWRlICJh bWQ2NC10ZGVwLmgiIGluc3RlYWQgb2YgImkzODYtdGRlcC5oIi4KLSsJSW5jbHVkZSBmZWF0dXJl cy9pMzg2L2kzODYuYyBhbmQgZmVhdHVyZXMvaTM4Ni94ODYtNjQuYy4KLSsJKGkzODZfbnVtX3Jl Z2lzdGVyX25hbWVzKTogUmVtb3ZlZC4KLSsJKGkzODZfcmVnaXN0ZXJfbmFtZXMpOiBNYWtlIGl0 IGNvbnN0LgotKwkoaTM4Nl9tbXhfbmFtZXMpOiBMaWtld2lzZS4KLSsJKGkzODZfbnVtX3JlZ2lz dGVyX25hbWVzKTogUmVtb3ZlZC4KLSsJKGkzODZfcmVnaXN0ZXJfbmFtZSk6IExpa2V3aXNlLgot KwkoaTM4Nl9lZmxhZ3NfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9teGNzcl90eXBlKTogTGlr ZXdpc2UuCi0rCShpMzg2X3NzZV90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X3JlZ2lzdGVyX3R5 cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBOZXcuCi0rCShp Mzg2X3BzZXVkb19yZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X21teF90eXBlKTog TWFrZSBpdCBzdGF0aWMuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IERvbid0IGNhbGwgc2V0X2dk YmFyY2hfcmVnaXN0ZXJfbmFtZQotKwlub3Igc2V0X2dkYmFyY2hfcmVnaXN0ZXJfdHlwZS4gIENh bGwKLSsJc2V0X3RkZXNjX3BzZXVkb19yZWdpc3Rlcl90eXBlLCBzZXRfdGRlc2NfcHNldWRvX3Jl Z2lzdGVyX25hbWUKLSsJYW5kIHRkZXNjX3VzZV9yZWdpc3RlcnMuCi0rCShfaW5pdGlhbGl6ZV9p Mzg2X3RkZXApOiBDYWxsIGluaXRpYWxpemVfdGRlc2NfaTM4NiBhbmQKLSsJaW5pdGlhbGl6ZV90 ZGVzY194ODZfNjQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6IFJlbW92ZSBp Mzg2X2VmbGFnc190eXBlLAotKwlpMzg2X214Y3NyX3R5cGUgYW5kIGkzODZfc3NlX3R5cGUuCi0r CShpMzg2X2VmbGFnc190eXBlKTogUmVtb3ZlZC4KLSsJKGkzODZfbXhjc3JfdHlwZSk6IExpa2V3 aXNlLgotKwkoaTM4Nl9tbXhfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9zc2VfdHlwZSk6IExp a2V3aXNlLgotKwkoaTM4Nl9yZWdpc3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVy ZXMvTWFrZWZpbGUgKEkzODYtWE1MVE9DKTogTmV3LgotKwkoSTM4Ni1DRklMRVMpOiBMaWtld2lz ZS4KLSsJKGkzODYtY2ZpbGVzKTogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvaTM4Ni8zMmJp dC1zc2UueG1sOiBVcGRhdGUgdmVjMTI4IHR5cGUuCi0rCSogZmVhdHVyZXMvaTM4Ni82NGJpdC1z c2UueG1sOiBMaWtld2lzZS4KLSsKLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYtbGludXguYzogUmVn ZW5lcmF0ZWQuCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgotKwkqIGZlYXR1 cmVzL2kzODYveDg2LTY0LWxpbnV4LmM6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVzL2kzODYveDg2 LTY0LmM6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiB0YXJnZXQtZGVzY3JpcHRpb25zLmMgKHRkZXNjX3R5cGUpOiBBZGQg VERFU0NfVFlQRV9JMzg3X0VYVCwKLSsJVERFU0NfVFlQRV9JMzg2X0VGTEFHUyBhbmQgVERFU0Nf VFlQRV9JMzg2X01YQ1NSLgotKwkodGRlc2NfcHJlZGVmaW5lZF90eXBlcyk6IEFkZCBpMzg3X2V4 dCwgaTM4Nl9lZmxhZ3MgYW5kCi0rCWkzODZfbXhjc3IuCi0rCSh0ZGVzY19nZGJfdHlwZSk6IEhh bmRsZSBUREVTQ19UWVBFX0kzODdfRVhULAotKwlUREVTQ19UWVBFX0kzODZfRUZMQUdTIGFuZCBU REVTQ19UWVBFX0kzODZfTVhDU1IuCi0rCSgKLSsJKiBmZWF0dXJlcy9pMzg2LzMyYml0LWNvcmUu eG1sOiBSZXBsYWNlIGkzODZfZXh0IHdpdGggaTM4N19leHQuCi0rCSogZmVhdHVyZXMvaTM4Ni82 NGJpdC1jb3JlLnhtbDogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWxpbnV4 LmM6IE5ldy4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYuYzogTGlrZXdpc2UuCi0rCSogZmVhdHVy ZXMvaTM4Ni94ODYtNjQtbGludXguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni94ODYt NjQuYzogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGZlYXR1cmVzL2kzODYvMzJiaXQtY29yZS54bWw6IE5ldy4KLSsJKiBm ZWF0dXJlcy9pMzg2LzMyYml0LWxpbnV4LnhtbDogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4 Ni8zMmJpdC1zc2UueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWNvcmUu eG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWxpbnV4LnhtbDogTGlrZXdp c2UuCi0rCSogZmVhdHVyZXMvaTM4Ni82NGJpdC1zc2UueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0 dXJlcy9pMzg2L2kzODYtbGludXgueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L2kz ODYueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L3g4Ni02NC1saW51eC54bWw6IExp a2V3aXNlLgotKwkqIGZlYXR1cmVzL2kzODYveDg2LTY0LnhtbDogTGlrZXdpc2UuCi0rCi0rCSog ZmVhdHVyZXMvTWFrZWZpbGUgKFdISUNIKTogQWRkIGkzODYvaTM4NiwgaTM4Ni9pMzg2LWxpbnV4 LAotKwlpMzg2L3g4Ni02NCBhbmQgaTM4Ni94ODYtNjQtbGludXguCi0rCShpMzg2L2kzODYtZXhw ZWRpdGUpOiBOZXcuCi0rCShpMzg2L2kzODYtbGludXgtZXhwZWRpdGUpOiBMaWtld2lzZS4KLSsJ KGkzODYveDg2LTY0LWV4cGVkaXRlKTpMaWtld2lzZS4KLSsJKGkzODYveDg2LTY0LWxpbnV4LWV4 cGVkaXRlKTogTGlrZXdpc2UuCi0rCSgkKG91dGRpcikvaTM4Ni9pMzg2LmRhdCk6IE5ldyBkZXBl bmRlbmN5LgotKwkoJChvdXRkaXIpL2kzODYvaTM4Ni1saW51eC5kYXQpOiBMaWtld2lzZS4KLSsJ KCQob3V0ZGlyKS9pMzg2L3g4Ni02NC5kYXQpOiBMaWtld2lzZS4KLSsJKCQob3V0ZGlyKS9pMzg2 L3g4Ni02NC1saW51eC5kYXQpOiBMaWtld2lzZS4KLSsKLSsJKiByZWdmb3JtYXRzL2kzODYvaTM4 Ni1saW51eC5kYXQ6IFJlZ2VuZXJhdGVkLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LmRhdDog TGlrZXdpc2UuCi0rCSogcmVnZm9ybWF0cy9pMzg2L3g4Ni02NC1saW51eC5kYXQ6IExpa2V3aXNl LgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni94ODYtNjQuZGF0OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAy LTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogcmVnZm9ybWF0cy9y ZWctaTM4Ni1saW51eC5kYXQ6IE1vdmVkIHRvIC4uLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2 LWxpbnV4LmRhdDogSGVyZS4KLSsKLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LmRhdDogTW92ZWQg dG8gLi4uCi0rCSogcmVnZm9ybWF0cy9pMzg2L2kzODYuZGF0OiBIZXJlLgotKwotKwkqIHJlZ2Zv cm1hdHMvcmVnLXg4Ni02NC1saW51eC5kYXQ6IE1vdmVkIHRvIC4uLgotKwkqIHJlZ2Zvcm1hdHMv aTM4Ni94ODYtNjQtbGludXguZGF0OiBIZXJlLgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02 NC5kYXQ6IE1vdmVkIHRvIC4uLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni94ODYtNjQuZGF0OiBIZXJl LgotLS0tIC4vZ2RiL0NoYW5nZUxvZy54c3RhdGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyAuL2dkYi9DaGFuZ2VMb2cueHN0YXRlCTIwMTAtMDQtMDMgMjE6MTI6MzIu MDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDM4NCBAQAotKzIwMTAtMDItMDEgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNo X3ZlY3Rvcl91bml0X2luaXQpOiBVcGRhdGVkLgotKwotKzIwMTAtMDEtMzEgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2luaXRfYWJp KTogVXBkYXRlZC4KLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBMaWtld2lz ZS4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0X2luaXQpOiBD aGFuZ2UgZnVuY3Rpb24KLSsJYXJndW1lbnRzLgotKwkqIGkzODYtdGRlcC5oIChpMzg2X2dkYmFy Y2hfdmVjdG9yX3VuaXRfaW5pdCk6IExpa2Vpc2UuCi0rCi0rMjAxMC0wMS0yOCAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGNvbW1vbi94c3RhdGUtbmF0LmMgKGkzODZf eHN0YXRlX2luaXQpOiBVc2UgZW5hYmxlZCBzaXplLgotKwotKzIwMTAtMDEtMjggIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlf ZnhzYXZlKTogQ2hlY2sgdmVjdG9yX3VuaXQuCi0rCShpMzg3X2NvbGxlY3RfZnhzYXZlKTogTGlr ZXdpc2UuCi0rCi0rMjAxMC0wMS0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIHJlZ2NhY2hlLmMgKHJlZ2NhY2hlX3Jhd19zdXBwbHlfcGFydCk6IEdyb3VwIGl0IHdp dGggLi4uCi0rCShyZWdjYWNoZV9yYXdfY29sbGVjdF9wYXJ0KTogVGhpcy4KLSsKLSsyMDEwLTAx LTI4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10 ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogU2V0Ci0rCXZlY3Rvcl91 bml0IHRvIHNzZSBpZiB0aGVyZSBpcyBubyAucmVnLXhzdGF0ZSBzZWN0aW9uLgotKwotKzIwMTAt MDEtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51 eC1uYXQuYyAoX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTogQXNzZXJ0Ci0rCWkzODZfeHN0 YXRlLnN0YXRlICE9IFhTVEFURV9VTktOT1dOIGluc3RlYWQgb2YgY2FsbGluZyBpMzg2X3hzdGF0 ZV9pbml0LgotKwkqIGkzODYtbGludXgtbmF0LmMgKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0 KTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoX2luaXRpYWxpemVfYW1kNjRfbGludXhf dGRlcCk6IENhbGwKLSsJaTM4Nl94c3RhdGVfaW5pdCBhbmQgdXBkYXRlIHRoZSBYU0FWRSBleHRl bmRlZCBzdGF0ZSBzaXplIG9uCi0rCUxpbnV4L3g4NiBob3N0LgotKwkqIGkzODYtbGludXgtdGRl cC5jIChfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAx LTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgt dGRlcC5jOiBJbmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIgYW5kICJyZWdzZXQuaCIuCi0rCShh bWQ2NF9saW51eF9yZWdzZXRfc2VjdGlvbnMpOiBOZXcuCi0rCShhbWQ2NF9saW51eF9pbml0X2Fi aSk6IENhbGwgc2V0X2dkYmFyY2hfY29yZV9yZWdzZXRfc2VjdGlvbnMKLSsJd2l0aCBhbWQ2NF9s aW51eF9yZWdzZXRfc2VjdGlvbnMuICBDYWxsCi0rCXNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNj cmlwdGlvbiB3aXRoCi0rCWkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uLgotKwotKwkq IGFtZDY0LXRkZXAuYyAoYW1kNjRfc3VwcGx5X3hzdGF0ZXJlZ3NldCk6IE5ldy4KLSsJKGFtZDY0 X2NvbGxlY3RfeHN0YXRlcmVnc2V0KTogTGlrZXdpc2UuCi0rCShhbWQ2NF9yZWdzZXRfZnJvbV9j b3JlX3NlY3Rpb24pOiBDaGVjayAucmVnLXhzdGF0ZSBzZWN0aW9uLgotKwotKwkqIGkzODYtbGlu dXgtdGRlcC5jIChpMzg2X2xpbnV4X3JlZ3NldF9zZWN0aW9ucyk6IEFkZAotKwkucmVnLXhzdGF0 ZSBzZWN0aW9uLgotKwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0r CShpMzg2X2xpbnV4X2luaXRfYWJpKTogQ2FsbCBzZXRfZ2RiYXJjaF9jb3JlX3JlYWRfZGVzY3Jp cHRpb24KLSsJd2l0aCBpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbi4KLSsKLSsJKiBp Mzg2LWxpbnV4LXRkZXAuaCAoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcu Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfc3VwcGx5X3hzdGF0ZXJlZ3NldCk6IE5ldy4KLSsJ KGkzODZfY29sbGVjdF94c3RhdGVyZWdzZXQpOiBMaWtld2lzZS4KLSsJKGkzODZfcmVnc2V0X2Zy b21fY29yZV9zZWN0aW9uKTogQ2hlY2sgLnJlZy14c3RhdGUgc2VjdGlvbi4KLSsJKGkzODZfZ2Ri YXJjaF9pbml0KTogSW5pdGlhbGl6ZSB4c3RhdGVyZWdzZXQgdG8gTlVMTC4KLSsKLSsJKiBpMzg2 LXRkZXAuaCAoZ2RiYXJjaF90ZGVwKTogQWRkIHhzdGF0ZXJlZ3NldC4KLSsKLSsyMDEwLTAxLTI3 ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChh bWQ2NF9pbml0X2FiaSk6IFNldCBzaXplb2ZfeHN0YXRlcmVnc2V0IHRvIDAuCi0rCi0rCSogaTM4 Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogU2V0Ci0rCXNpemVvZl94 c3RhdGVyZWdzZXQgaWYgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgaXMgc3VwcG9ydGVkLgotKwkoaTM4 Nl9nZGJhcmNoX2luaXQpOiBTZXQgc2l6ZW9mX3hzdGF0ZXJlZ3NldCB0byAwLgotKwotKwkqIGkz ODYtdGRlcC5oIChnZGJhcmNoX3RkZXApOiBBZGQgc2l6ZW9mX3hzdGF0ZXJlZ3NldC4KLSsKLSsJ KiBjb21tb24veHN0YXRlLW5hdC5jIChpMzg2X3hzdGF0ZV9pbml0KTogU2V0IGkzODZfeHN0YXRl LnNpemUuCi0rCi0rCSogY29tbW9uL3hzdGF0ZS1uYXQuaCAoaTM4Nl94c3RhdGVfdHlwZSk6IEFk ZCBzaXplLgotKwotKzIwMTAtMDEtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X3JlZ2lzdGVyX25hbWVzKTogUmVuYW1lZCB0byAu Li4KLSsJKGFtZDY0X3NzZV9yZWdpc3Rlcl9uYW1lcyk6IFRoaXMuICBSZW1vdmUgQVZYIHJlZ2lz dGVycy4KLSsJKGFtZDY0X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IE5ldy4KLSsJKEFNRDY0X05VTV9S RUdTKTogVXBkYXRlZC4KLSsJKGFtZDY0X3JlZ2lzdGVyX25hbWUpOiBIYW5kbGUgdmVjdG9yX3Vu aXQuCi0rCShhbWQ2NF9yZWdpc3Rlcl90eXBlKTogUmVwbGFjZSBpMzg2X3NzZV90eXBlIHdpdGgK LSsJaTM4Nl92ZWN0b3JfdHlwZS4KLSsKLSsJKiBkZWZzLmggKE1BWF9SRUdJU1RFUl9TSVpFKTog SW5jcmVhc2UgdG8gMzIuCi0rCi0rCSogaTM4Ni10ZGVwLmM6IChpMzg2X3JlZ2lzdGVyX25hbWVz KTogUmVuYW1lZCB0byAuLi4KLSsJKGkzODZfc3NlX3JlZ2lzdGVyX25hbWVzKTogVGhpcy4KLSsJ KGkzODZfYXZ4X3JlZ2lzdGVyX25hbWVzKTogTmV3LgotKwkoaTM4Nl92ZWMxMjhfdHlwZSk6IExp a2V3aXNlLgotKwkoaTM4Nl92ZWMyNTZfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9udW1fcmVn aXN0ZXJfbmFtZXMpOiBVcGRhdGVkLgotKwkoaTM4Nl9nZGJhcmNoX3NzZV91bml0X2luaXQpOiBM aWtld2lzZS4KLSsJKGkzODZfcmVnaXN0ZXJfbmFtZSk6IEhhbmRsZSB2ZWN0b3JfdW5pdC4KLSsJ KGkzODZfc3NlX3R5cGUpOiBSZW5hbWVkIHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfdHlwZSk6IFRo aXMuICBIYW5kbGUgdmVjdG9yX3VuaXQuCi0rCShhbWQ2NF9yZWdpc3Rlcl90eXBlKTogUmVwbGFj ZSBpMzg2X3NzZV90eXBlIHdpdGgKLSsJaTM4Nl92ZWN0b3JfdHlwZS4KLSsKLSsJKiBpMzg2LXRk ZXAuaCAoZ2RiYXJjaF90ZGVwKTogUmVwbGFjZSBpMzg2X3NzZV90eXBlIHdpdGgKLSsJaTM4Nl92 ZWN0b3JfdHlwZS4KLSsJKEkzODZfTUFYX1JFR0lTVEVSX1NJWkUpOiBJbmNyZWFzZSB0byAzMi4K LSsJKGkzODZfc3NlX3R5cGUpOiBSZW5hbWVkIHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfdHlwZSk6 IFRoaXMuCi0rCi0rMjAxMC0wMS0yNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIE1ha2VmaWxlLmluICh4c2F2ZS1uYXQubyk6IFJlbmFtZWQgdG8gLi4uCi0rCSh4c3Rh dGUtbmF0Lm8pOiBUaGlzLgotKwotKwkqIGNvbW1vbi94c2F2ZS1uYXQuYzogTW92ZWQgdG8gLi4u Ci0rCSogY29tbW9uL3hzdGF0ZS1uYXQuYzogVGhpcy4KLSsKLSsJKiBjb21tb24veHNhdmUtbmF0 Lmg6IE1vdmVkIHRvIC4uLgotKwkqIGNvbW1vbi94c3RhdGUtbmF0Lmg6IFRoaXMuCi0rCi0rCSog Y29uZmlnL2kzODYvbGludXgubWggKE5BVERFUEZJTEVTKTogUmVwbGFjZSB4c2F2ZS1uYXQubyB3 aXRoCi0rCXhzdGF0ZS1uYXQuby4KLSsJKiBjb25maWcvaTM4Ni9saW51eDY0Lm1oIChOQVRERVBG SUxFUyk6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4Lmg6IEluY2x1ZGUg InhzdGF0ZS1uYXQuaCIgaW5zdGVhZCBvZgotKwkieHNhdmUtbmF0LmgiLgotKwkqIGNvbmZpZy9p Mzg2L25tLWxpbnV4NjQuaDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51 eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOgotKwlJc3N1ZSBhbiBlcnJvciBpZiBQVFJBQ0Vf R0VUWFNUQVRFUkVHUyBmYWlsZWQgYW5kIFhTQVZFCi0rCWV4dGVuZGVkIHN0YXRlIGlzIGhpZ2hl ciB0aGFuIFNTRS4KLSsJKGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExp a2V3aXNlLgotKwkqIGkzODYtbGludXgtbmF0LmMgKGZldGNoX3hzdGF0ZXJlZ3MpOiBMaWtld2lz ZS4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTIyICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29tbW9uL3hzYXZlLW5hdC5jOiBJ bmNsdWRlICJpMzg2LWNwdWlkLmgiIGluc3RlYWQgb2YKLSsJImNvbmZpZy9pMzg2L2kzODYtY3B1 aWQuaCIuCi0rCi0rCSogY29uZmlnL2kzODYvaTM4Ni1jcHVpZC5oOiBNb3ZlZCB0byAuLi4KLSsJ KiBjb21tb24vaTM4Ni1jcHVpZC5oOiBIZXJlLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoeHNhdmUtbmF0Lm8pOiBO ZXcuCi0rCi0rCSogeHNhdmUtbmF0LmM6IE1vdmVkIHRvIC4uLgotKwkqIGNvbW1vbi94c2F2ZS1u YXQuYzogSGVyZS4KLSsKLSsJKiB4c2F2ZS1uYXQuaDogTW92ZWQgdG8gLi4uCi0rCSogY29tbW9u L3hzYXZlLW5hdC5oOiBIZXJlLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChoYXZlX3B0cmFjZV9nZXR4c3Rh dGVyZWdzKTogTmV3LgotKwkoUFRSQUNFX0dFVFhTVEFURVJFR1MpOiBMaWtld2lzZS4KLSsJKFBU UkFDRV9TRVRYU1RBVEVSRUdTKTogTGlrZXdpc2UuCi0rCShmZXRjaF94c3RhdGVyZWdzKTogTGlr ZXdpc2UuCi0rCShzdG9yZV94c3RhdGVyZWdzKTogTGlrZXdpc2UuCi0rCShpMzg2X2xpbnV4X2Zl dGNoX2luZmVyaW9yX3JlZ2lzdGVycyk6IFN1cHBvcnQgWFNBVkUgZXh0ZW5kZWQKLSsJc3RhdGUu Ci0rCShpMzg2X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwko X2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQpOiBDYWxsIGkzODZfeHN0YXRlX2luaXQgYW5kIHNl dAotKwloYXZlX3B0cmFjZV9nZXR4c3RhdGVyZWdzLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoeHNhdmVfYXZ4aF9v ZmZzZXQpOiBOZXcuCi0rCShYU0FWRV9BVlhIX0FERFIpOiBMaWtld2lzZS4KLSsJKGkzODdfc3Vw cGx5X3hzYXZlKTogVXNlIFhTQVZFX1NTRV9BRERSIGFuZCBYU0FWRV9BVlhIX0FERFIgZm9yCi0r CUFWWCB2ZWN0b3IgdW5pdC4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwot KzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3 LXRkZXAuYyAoeHNhdmVfc3NlX29mZnNldCk6IE5ldy4KLSsJKFhTQVZFX1NTRV9BRERSKTogTGlr ZXdpc2UuCi0rCShpMzg3X3N1cHBseV94c2F2ZSk6IFVzZSBYU0FWRV9TU0VfQUREUi4KLSsJKGkz ODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfeHNh dmUpOiBDaGVjayB2ZWN0b3IgdW5pdC4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNl LgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJ KiBncmVnc2V0LmggKEdEQl9YU1RBVEVfU1NFX1JFR1NFVF9UKTogUmVtb3ZlZC4KLSsJKEdEQl9Y U1RBVEVfQVZYX1JFR1NFVF9UKTogTGlrZXdpc2UuCi0rCShnZGJfeHN0YXRlX3NzZV9yZWdzZXRf dCk6IExpa2V3aXNlLgotKwkoZ2RiX3hzdGF0ZV9hdnhfcmVnc2V0X3QpOiBMaWtld2lzZS4KLSsJ KHN1cHBseV94c3RhdGVfc3NlX3JlZ3NldCk6IExpa2V3aXNlLgotKwkoc3VwcGx5X3hzdGF0ZV9h dnhfcmVnc2V0KTogTGlrZXdpc2UuCi0rCShmaWxsX3hzdGF0ZV9zc2VfcmVnc2V0KTogTGlrZXdp c2UuCi0rCShmaWxsX3hzdGF0ZV9hdnhfcmVnc2V0KTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0y MiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIHJlZ2NhY2hlLmMgKHJl Z2NhY2hlX3Jhd19zdXBwbHlfcGFydCk6IE5ldy4KLSsJKHJlZ2NhY2hlX3Jhd19jb2xsZWN0X3Bh cnQpOiBMaWtld2lzZS4KLSsJKiByZWdjYWNoZS5oIChyZWdjYWNoZV9yYXdfc3VwcGx5X3BhcnQp OiBMaWtld2lzZS4KLSsJKHJlZ2NhY2hlX3Jhd19jb2xsZWN0X3BhcnQpOiBMaWtld2lzZS4KLSsK LSsyMDEwLTAxLTIyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1k NjQtbGludXgtbmF0LmMgKGFtZDY0X2luaXRfYWJpKTogQ2FsbAotKwlpMzg2X2dkYmFyY2hfdmVj dG9yX3VuaXRfaW5pdC4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91 bml0X2luaXQpOiBOZXcuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IENhbGwgaTM4Nl9nZGJhcmNo X3ZlY3Rvcl91bml0X2luaXQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKHg4Nl92ZWN0b3JfdW5pdCk6 IE5ldy4KLSsJKGdkYmFyY2hfdGRlcCk6IEFkZCB2ZWN0b3JfdW5pdC4KLSsKLSsyMDEwLTAxLTIy ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0 LmMgKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25hdCk6IEFsd2F5cyBjYWxsCi0rCWkzODZfeHN0 YXRlX2luaXQgKCkuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChoYXZlX3B0cmFjZV9nZXR4c3RhdGVyZWdz KTogTmV3LgotKwkoUFRSQUNFX0dFVFhTVEFURVJFR1MpOiBMaWtld2lzZS4KLSsJKFBUUkFDRV9T RVRYU1RBVEVSRUdTKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9y ZWdpc3RlcnMpOiBTdXBwb3J0IFhTQVZFIGV4dGVuZGVkCi0rCXN0YXRlLgotKwkoYW1kNjRfbGlu dXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9m ZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c2F2ZSk6IFJlbW92ZWQuCi0rCShhbWQ2NF9s aW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c2F2ZSk6IExpa2V3aXNlLgotKwko X2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTogVXBkYXRlZC4KLSsKLSsJKiBjb25maWd1cmUu YWM6IFJlbW92ZSBjaGVjayBmb3IgUFRSQUNFX0dFVFhTVEFURVJFR1MuCi0rCSogY29uZmlnLmlu OiBSZWdlbmVyYXRlZC4KLSsJKiBjb25maWd1cmU6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9p Mzg2L25tLWxpbnV4LmggKFVTRV9YU0FWRSk6IENoYW5nZWQgdG8gLi4uCi0rCShGSUxMX1hTVEFU RVJFR1NFVCk6IFRoaXMuCi0rCSogb25maWcvaTM4Ni9ubS1saW51eDY0Lmg6IExpa2V3aXNlLgot KwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiB4 c2F2ZS1uYXQuYyAoaTM4Nl94c3RhdGVfaW5pdCk6IFByb3Blcmx5IHNldCBzdGF0ZS4KLSsKLSsy MDEwLTAxLTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQt bGludXgtbmF0LmM6IERvbid0IGluY2x1ZGUgInhzYXZlLW5hdC5oIi4KLSsJKGFtZDY0X2xpbnV4 X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVyc193aXRoX3hzdGF0ZSk6IFJlbmFtZWQgdG8gLi4uCi0r CShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c2F2ZSk6IFRoaXMu Ci0rCShhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c3RhdGUpOiBS ZW5hbWVkIHRvIC4uLgotKwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzX3dp dGhfeHNhdmUpOiBUaGlzLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4Lmg6IEluY2x1ZGUg InhzYXZlLW5hdC5oIi4KLSsJKiBjb25maWcvaTM4Ni9ubS1saW51eDY0Lmg6IExpa2V3aXNlLgot KwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBj b25maWcvaTM4Ni9saW51eDY0Lm1oIChOQVRfRklMRSk6IFNldCB0byBubS1saW51eDY0LmguCi0r Ci0rCSogY29uZmlnL2kzODYvbm0tbGludXguaCAoVVNFX1hTQVZFKTogTmV3LgotKwotKwkqIGNv bmZpZy9pMzg2L25tLWxpbnV4NjQuaDogTmV3LgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiB4c2F2ZS1uYXQuYzogSW5jbHVkZSAiY29uZmln L2kzODYvaTM4Ni1jcHVpZC5oIiBpZiA8Y3B1aWQuaD4KLSsJaXNuJ3QgYXZhaWxhYmxlLgotKwot KwkqIGNvbmZpZy9pMzg2L2kzODYtY3B1aWQuaDogTmV3LiBUYWtlbiBmcm9tIGdjYyA0LjQuCi0r Ci0rMjAxMC0wMS0yMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFt ZDY0LWxpbnV4LW5hdC5jOiBJbmNsdWRlICJ4c2F2ZS1uYXQuaCIKLSsJKF9pbml0aWFsaXplX2Ft ZDY0X2xpbnV4X25hdCk6IENoZWNrIEhBVkVfUFRSQUNFX0dFVFhTVEFURVJFR1MKLSsJaW5zdGVh ZCBvZiBIQVZFX1NZU19YU1RBVEVfSC4KLSsKLSsJKiBjb25maWd1cmUuYWM6IEFkZCBjaGVjayBm b3IgY3B1aWQuaC4gIFJlbW92ZSBjaGVjayBmb3IKLSsJc3lzL3hzdGF0ZS5oLCBfX2dldF94c3Rh dGUgYW5kIF9fZ2V0X3hzdGF0ZV9zaXplLgotKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCi0r CSogY29uZmlndXJlOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LW5hdC5jIChpMzg2X3hzdGF0ZSk6 IFJlbW92ZWQuCi0rCShpMzg2X3hzdGF0ZV9pbml0KTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1u YXQuaCAoaTM4Nl94c3RhdGVfdHlwZSk6IFJlbW92ZWQuCi0rCShpMzg2X3hzdGF0ZSk6IExpa2V3 aXNlLgotKwkoaTM4Nl94c3RhdGVfaW5pdCk6IExpa2V3aXNlLgotKwotKwkqIHhzYXZlLW5hdC5j OiBOZXcuCi0rCSogeHNhdmUtbmF0Lmg6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2L2xp bnV4Lm1oIChOQVRERVBGSUxFUyk6IEFkZCB4c2F2ZS1uYXQuby4KLSsJKiBjb25maWcvaTM4Ni9s aW51eDY0Lm1oIChOQVRERVBGSUxFUyk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjEgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1k NjRfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKToKLSsJQ2FsbCBh bWQ2NF9zdXBwbHlfeHNhdmUgaW5zdGVhZCBvZiBhbWQ2NF9zdXBwbHlfZnhzYXZlLgotKwkoYW1k NjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKTogQ2FsbAotKwlh bWQ2NF9jb2xsZWN0X2Z4c2F2ZSBpbnN0ZWFkIG9mIGFtZDY0X2NvbGxlY3RfeHNhdmUuCi0rCi0r CSogYW1kNjQtdGRlcC5jIChhbWQ2NF9zdXBwbHlfeHNhdmUpOiBOZXcuCi0rCShhbWQ2NF9jb2xs ZWN0X3hzYXZlKTogTGlrZXdpc2UuCi0rCSogYW1kNjQtdGRlcC5oIChhbWQ2NF9zdXBwbHlfeHNh dmUpOiBMaWtld2lzZS4KLSsJKGFtZDY0X2NvbGxlY3RfeHNhdmUpOiBMaWtld2lzZS4KLSsJKiBp Mzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdfY29sbGVj dF94c2F2ZSk6IExpa2V3aXNlLgotKwkqIGkzODctdGRlcC5oIChpMzg3X3N1cHBseV94c2F2ZSk6 IExpa2V3aXNlLgotKwkoaTM4N19jb2xsZWN0X3hzYXZlKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4 Ni1uYXQuaDogVXBkYXRlIGNvbW1lbnRzLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGludXhf ZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKTogUmV2ZXJ0Ci0rCXRoZSBsYXN0IGNoYW5nZSwKLSsJ KGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkoYW1k NjRfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKTogTmV3LgotKwko YW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKTogTGlrZXdp c2UuCi0rCShfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQpOiBVc2UKLSsJYW1kNjRfbGludXhf ZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlIGFuZAotKwlhbWQ2NF9saW51eF9z dG9yZV9pbmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c3RhdGUgaWYgcG9zc2libGUuCi0rCi0rCSog aTM4Ni1uYXQuaCAoaTM4Nl94c3RhdGVfdHlwZSk6IFJlbmFtZSBzaXplIHRvIG5fb2ZfaW50NjQu Ci0rCSogaTM4Ni1uYXQuYyAoaTM4Nl94c3RhdGUpOiBVcGRhdGVkLgotKwotKzIwMTAtMDEtMjEg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQu YyAoYW1kNjRfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKToKLSsJVXNlIFBUUkFDRV9H RVRYU1RBVEVSRUdTL1BUUkFDRV9TRVRYU1RBVEVSRUdTIGlmIHBvc3NzaWJsZS4KLSsJKGFtZDY0 X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkoX2luaXRpYWxp emVfYW1kNjRfbGludXhfbmF0KTogQ2FsbCBpMzg2X3hzdGF0ZV9pbml0LgotKwotKwkqIGkzODYt bmF0LmMgKGkzODZfeHN0YXRlKTogTmV3LgotKwkoaTM4Nl94c3RhdGVfaW5pdCk6IExpa2V3aXNl LgotKwotKwkqIGkzODYtbmF0LmggKGkzODZfeHN0YXRlX3R5cGUpOiBOZXcuCi0rCShpMzg2X3hz dGF0ZSk6IExpa2V3aXNlLgotKwkoaTM4Nl94c3RhdGVfaW5pdCk6IExpa2V3aXNlLgotKwotKzIw MTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1s aW51eC1uYXQuYzogUmV2ZXJ0IHRoZSBjaGFuZ2UgY2hhbmdlLgotKwotKzIwMTAtMDEtMjEgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb25maWd1cmUuYWM6IEFkZCBj aGVjayBmb3IgX19nZXRfeHN0YXRlX3NpemUuCi0rCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4K LSsJKiBjb25maWd1cmU6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogSW5jbHVkZSA8c3lz L3hzdGF0ZS5oPiBpZiBIQVZFX1NZU19YU1RBVEVfSAotKwlpcyBkZWZpbmVkLgotKwkoaGF2ZV9w dHJhY2VfZ2V0eHN0YXRlcmVncyk6IE5ldy4KLSsJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25h dCk6IENsZWFyIGhhdmVfcHRyYWNlX2dldHhzdGF0ZXJlZ3MKLSsJaWYgbmVlZGVkLgotKwotKwkq IGdyZWdzZXQuaCAoR0RCX1hTVEFURV9TU0VfUkVHU0VUX1QpOiBOZXcuCi0rCShHREJfWFNUQVRF X0FWWF9SRUdTRVRfVCk6IExpa2V3aXNlLgotKwkoZ2RiX3hzdGF0ZV9zc2VfcmVnc2V0X3QpOiBM aWtld2lzZS4KLSsJKGdkYl94c3RhdGVfYXZ4X3JlZ3NldF90KTogTGlrZXdpc2UuCi0rCShzdXBw bHlfeHN0YXRlX3NzZV9yZWdzZXQpOiBMaWtld2lzZS4KLSsJKHN1cHBseV94c3RhdGVfYXZ4X3Jl Z3NldCk6IExpa2V3aXNlLgotKwkoZmlsbF94c3RhdGVfc3NlX3JlZ3NldCk6IExpa2V3aXNlLgot KwkoZmlsbF94c3RhdGVfYXZ4X3JlZ3NldCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjEgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb25maWd1cmUuYWM6IEFkZCBj aGVjayBmb3Igc3lzL3hzdGF0ZS5oLCBfX2dldF94c3RhdGUgYW5kCi0rCVBUUkFDRV9HRVRYU1RB VEVSRUdTLgotKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCi0rCSogY29uZmlndXJlOiBMaWtl d2lzZS4KLS0tLSAuL2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAw MDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjE6 MTU6MDguMDAwMDAwMDAwICswMjAwCi1AQCAtMjMsMTEgKzIzLDE0IEBACi0gI2luY2x1ZGUgImlu ZmVyaW9yLmgiCi0gI2luY2x1ZGUgImdkYmNvcmUuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIK LSsjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgImxpbnV4LW5hdC5oIgotICNpbmNsdWRl ICJhbWQ2NC1saW51eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5j bHVkZSAiZ2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJlbGYvY29tbW9uLmgiCi0rI2luY2x1ZGUg PHN5cy91aW8uaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpbmNsdWRlIDxzeXMvZGVi dWdyZWcuaD4KLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLUBAIC01NCw2ICs1NywxOCBAQAot ICNpbmNsdWRlICJpMzg3LXRkZXAuaCIKLSAjaW5jbHVkZSAiZWxmLWJmZC5oIgotICNpbmNsdWRl ICJnZGJfcHJvY2ZzMzIuaCIKLSsjaW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIKLSsKLSsjaWZuZGVm IFBUUkFDRV9HRVRSRUdTRVQKLSsjZGVmaW5lIFBUUkFDRV9HRVRSRUdTRVQJMHg0MjA0Ci0rI2Vu ZGlmCi0rCi0rI2lmbmRlZiBQVFJBQ0VfU0VUUkVHU0VUCi0rI2RlZmluZSBQVFJBQ0VfU0VUUkVH U0VUCTB4NDIwNQotKyNlbmRpZgotKwotKy8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBzdXBwb3J0 IFBUUkFDRV9HRVRSRUdTRVQ/ICAqLwotK3N0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0 ID0gLTE7Ci0gCi0gLyogTWFwcGluZyBiZXR3ZWVuIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0 ZXJzIGluIEdOVS9MaW51eCB4ODYtNjQKLSAgICBgc3RydWN0IHVzZXInIGZvcm1hdCBhbmQgR0RC J3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLUBAIC03Niw2ICs5MSw4IEBAIHN0YXRpYyBp bnQgYW1kNjRfbGludXhfZ3JlZ3NldDY0X3JlZ19vZmYKLSAgIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsIC0xLCAtMSwKLSAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSAgIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCi0rICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsCi0rICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCi0gICBPUklHX1JB WCAqIDgKLSB9OwotIAwKLUBAIC0xMzEsNiArMTQ4LDcgQEAgc3RhdGljIGludCBhbWQ2NF9saW51 eF9ncmVnc2V0MzJfcmVnX29mZgotICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAot ICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotICAgLTEsIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSAg IE9SSUdfUkFYICogOAkJCS8qICJvcmlnX2VheCIgKi8KLSB9OwotIAwKLUBAIC0zMTIsMTAgKzMz MCwyNiBAQCBhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0Ci0gICAgIHsK LSAgICAgICBlbGZfZnByZWdzZXRfdCBmcHJlZ3M7Ci0gCi0tICAgICAgaWYgKHB0cmFjZSAoUFRS QUNFX0dFVEZQUkVHUywgdGlkLCAwLCAobG9uZykgJmZwcmVncykgPCAwKQotLQlwZXJyb3Jfd2l0 aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotKyAgICAg IGlmIChoYXZlX3B0cmFjZV9nZXRyZWdzZXQpCi0rCXsKLSsJICBjaGFyIHhzdGF0ZXJlZ3NbSTM4 Nl9YU1RBVEVfTUFYX1NJWkVdOwotKwkgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0rCi0rCSAgaW92Lmlv dl9iYXNlID0geHN0YXRlcmVnczsKLSsJICBpb3YuaW92X2xlbiA9IHNpemVvZiAoeHN0YXRlcmVn cyk7Ci0rCSAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLAotKwkJICAgICAgKHVu c2lnbmVkIGludCkgTlRfWDg2X1hTVEFURSwgKGxvbmcpICZpb3YpIDwgMCkKLSsJICAgIHBlcnJv cl93aXRoX25hbWUgKF8oIkNvdWxkbid0IGdldCBleHRlbmRlZCBzdGF0ZSBzdGF0dXMiKSk7Ci0g Ci0tICAgICAgYW1kNjRfc3VwcGx5X2Z4c2F2ZSAocmVnY2FjaGUsIC0xLCAmZnByZWdzKTsKLSsJ ICBhbWQ2NF9zdXBwbHlfeHNhdmUgKHJlZ2NhY2hlLCAtMSwgeHN0YXRlcmVncyk7Ci0rCX0KLSsg ICAgICBlbHNlCi0rCXsKLSsJICBpZiAocHRyYWNlIChQVFJBQ0VfR0VURlBSRUdTLCB0aWQsIDAs IChsb25nKSAmZnByZWdzKSA8IDApCi0rCSAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4n dCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotKwotKwkgIGFtZDY0X3N1cHBseV9meHNh dmUgKHJlZ2NhY2hlLCAtMSwgJmZwcmVncyk7Ci0rCX0KLSAgICAgfQotIH0KLSAKLUBAIC0zNTUs MTUgKzM4OSwzMyBAQCBhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0Ci0g ICAgIHsKLSAgICAgICBlbGZfZnByZWdzZXRfdCBmcHJlZ3M7Ci0gCi0tICAgICAgaWYgKHB0cmFj ZSAoUFRSQUNFX0dFVEZQUkVHUywgdGlkLCAwLCAobG9uZykgJmZwcmVncykgPCAwKQotLQlwZXJy b3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwot KyAgICAgIGlmIChoYXZlX3B0cmFjZV9nZXRyZWdzZXQpCi0rCXsKLSsJICBjaGFyIHhzdGF0ZXJl Z3NbSTM4Nl9YU1RBVEVfTUFYX1NJWkVdOwotKwkgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0gCi0tICAg ICAgYW1kNjRfY29sbGVjdF9meHNhdmUgKHJlZ2NhY2hlLCByZWdudW0sICZmcHJlZ3MpOwotKwkg IGlvdi5pb3ZfYmFzZSA9IHhzdGF0ZXJlZ3M7Ci0rCSAgaW92Lmlvdl9sZW4gPSBzaXplb2YgKHhz dGF0ZXJlZ3MpOwotKwkgIGlmIChwdHJhY2UgKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwKLSsJCSAg ICAgICh1bnNpZ25lZCBpbnQpIE5UX1g4Nl9YU1RBVEUsIChsb25nKSAmaW92KSA8IDApCi0rCSAg ICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZXh0ZW5kZWQgc3RhdGUgc3RhdHVz IikpOwotKwotKwkgIGFtZDY0X2NvbGxlY3RfeHNhdmUgKHJlZ2NhY2hlLCByZWdudW0sIHhzdGF0 ZXJlZ3MsIDApOwotKwotKwkgIGlmIChwdHJhY2UgKFBUUkFDRV9TRVRSRUdTRVQsIHRpZCwKLSsJ CSAgICAgICh1bnNpZ25lZCBpbnQpIE5UX1g4Nl9YU1RBVEUsIChsb25nKSAmaW92KSA8IDApCi0r CSAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBleHRlbmRlZCBzdGF0ZSBz dGF0dXMiKSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAocHRyYWNlIChQVFJBQ0Vf R0VURlBSRUdTLCB0aWQsIDAsIChsb25nKSAmZnByZWdzKSA8IDApCi0rCSAgICBwZXJyb3Jfd2l0 aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotIAotLSAg ICAgIGlmIChwdHJhY2UgKFBUUkFDRV9TRVRGUFJFR1MsIHRpZCwgMCwgKGxvbmcpICZmcHJlZ3Mp IDwgMCkKLS0JcGVycm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3Qgd3JpdGUgZmxvYXRpbmcgcG9p bnQgc3RhdHVzIikpOwotKwkgIGFtZDY0X2NvbGxlY3RfZnhzYXZlIChyZWdjYWNoZSwgcmVnbnVt LCAmZnByZWdzKTsKLSAKLS0gICAgICByZXR1cm47Ci0rCSAgaWYgKHB0cmFjZSAoUFRSQUNFX1NF VEZQUkVHUywgdGlkLCAwLCAobG9uZykgJmZwcmVncykgPCAwKQotKwkgICAgcGVycm9yX3dpdGhf bmFtZSAoXygiQ291bGRuJ3Qgd3JpdGUgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotKwl9Ci0g ICAgIH0KLSB9Ci0gDAotQEAgLTgzMSw2ICs4ODMsOCBAQCBhbWQ2NF9saW51eF9yZWFkX2Rlc2Ny aXB0aW9uIChzdHJ1Y3QgdGFyCi0gewotICAgdW5zaWduZWQgbG9uZyBjczsKLSAgIGludCB0aWQ7 Ci0rICBpbnQgaXNfNjRiaXQ7Ci0rICBzdGF0aWMgdWludDY0X3QgeGNyMDsKLSAKLSAgIC8qIEdO VS9MaW51eCBMV1AgSUQncyBhcmUgcHJvY2VzcyBJRCdzLiAgKi8KLSAgIHRpZCA9IFRJREdFVCAo aW5mZXJpb3JfcHRpZCk7Ci1AQCAtODQ0LDEwICs4OTgsNTUgQEAgYW1kNjRfbGludXhfcmVhZF9k ZXNjcmlwdGlvbiAoc3RydWN0IHRhcgotICAgaWYgKGVycm5vICE9IDApCi0gICAgIHBlcnJvcl93 aXRoX25hbWUgKF8oIkNvdWxkbid0IGdldCBDUyByZWdpc3RlciIpKTsKLSAKLS0gIGlmIChjcyA9 PSBBTUQ2NF9MSU5VWF9VU0VSNjRfQ1MpCi0tICAgIHJldHVybiB0ZGVzY19hbWQ2NF9saW51eDsK LSsgIGlzXzY0Yml0ID0gY3MgPT0gQU1ENjRfTElOVVhfVVNFUjY0X0NTOwotKwotKyAgaWYgKGhh dmVfcHRyYWNlX2dldHJlZ3NldCA9PSAtMSkKLSsgICAgewotKyAgICAgIHVpbnQ2NF90IHhzdGF0 ZXJlZ3NbKEkzODZfWFNUQVRFX1NTRV9TSVpFIC8gc2l6ZW9mICh1aW50NjRfdCkpXTsKLSsgICAg ICBzdHJ1Y3QgaW92ZWMgaW92OwotKyAgICAgIHVuc2lnbmVkIGludCB4c3RhdGVfc2l6ZTsKLSsK LSsgICAgICBpb3YuaW92X2Jhc2UgPSB4c3RhdGVyZWdzOwotKyAgICAgIGlvdi5pb3ZfbGVuID0g c2l6ZW9mICh4c3RhdGVyZWdzKTsKLSsKLSsgICAgICAvKiBDaGVjayBpZiBQVFJBQ0VfR0VUUkVH U0VUIHdvcmtzLiAgKi8KLSsgICAgICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUUkVHU0VULCB0aWQs Ci0rCQkgICh1bnNpZ25lZCBpbnQpIE5UX1g4Nl9YU1RBVEUsIChsb25nKSAmaW92KSA8IDApCi0r CXsKLSsJICBoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPSAwOwotKwkgIHhzdGF0ZV9zaXplID0gMDsK LSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGhhdmVfcHRyYWNlX2dldHJlZ3NldCA9IDE7Ci0r Ci0rCSAgLyogR2V0IFhDUjAgZnJvbSBYU0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rCSAgeGNy MCA9IHhzdGF0ZXJlZ3NbKEkzODZfTElOVVhfWFNBVkVfWENSMF9PRkZTRVQKLSsJCQkgICAgIC8g c2l6ZW9mICh1aW50NjRfdCkpXTsKLSsKLSsJICB4c3RhdGVfc2l6ZSA9IEkzODZfWFNUQVRFX1NJ WkUgKHhjcjApOwotKwl9Ci0rCi0rICAgICAgaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0 ICh4c3RhdGVfc2l6ZSk7Ci0rICAgICAgYW1kNjRfbGludXhfdXBkYXRlX3hzdGF0ZXJlZ3NldCAo eHN0YXRlX3NpemUpOwotKyAgICB9Ci0rCi0rICAvKiBDaGVjayB0aGUgbmF0aXZlIFhDUjAgb25s eSBpZiBQVFJBQ0VfR0VUUkVHU0VUIGlzIGF2YWlsYWJsZS4gICovCi0rICBpZiAoaGF2ZV9wdHJh Y2VfZ2V0cmVnc2V0Ci0rICAgICAgJiYgKHhjcjAgJiBJMzg2X1hTVEFURV9BVlhfTUFTSykgPT0g STM4Nl9YU1RBVEVfQVZYX01BU0spCi0rICAgIHsKLSsgICAgICBpZiAoaXNfNjRiaXQpCi0rCXJl dHVybiB0ZGVzY19hbWQ2NF9hdnhfbGludXg7Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gdGRlc2Nf aTM4Nl9hdnhfbGludXg7Ci0rICAgIH0KLSAgIGVsc2UKLS0gICAgcmV0dXJuIHRkZXNjX2kzODZf bGludXg7Ci0rICAgIHsKLSsgICAgICBpZiAoaXNfNjRiaXQpCi0rCXJldHVybiB0ZGVzY19hbWQ2 NF9saW51eDsKLSsgICAgICBlbHNlCi0rCXJldHVybiB0ZGVzY19pMzg2X2xpbnV4OwotKyAgICB9 Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJv dG90eXBlcy4gICovCi0tLS0gLi9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTAtMDQtMDMgMjA6 NTk6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTAt MDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjgsOCArMjgsMTEgQEAKLSAjaW5j bHVkZSAic3ltdGFiLmgiCi0gI2luY2x1ZGUgImdkYnR5cGVzLmgiCi0gI2luY2x1ZGUgInJlZ2dy b3Vwcy5oIgotKyNpbmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAiYW1kNjQtbGludXgtdGRl cC5oIgotKyNpbmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIKLSAjaW5jbHVkZSAibGludXgtdGRl cC5oIgotKyNpbmNsdWRlICJpMzg2LXhzdGF0ZS5oIgotIAotICNpbmNsdWRlICJnZGJfc3RyaW5n LmgiCi0gCi1AQCAtMzgsNiArNDEsNyBAQAotICNpbmNsdWRlICJ4bWwtc3lzY2FsbC5oIgotIAot ICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LWxpbnV4LmMiCi0rI2luY2x1ZGUgImZlYXR1 cmVzL2kzODYvYW1kNjQtYXZ4LWxpbnV4LmMiCi0gCi0gLyogVGhlIHN5c2NhbGwncyBYTUwgZmls ZW5hbWUgZm9yIGkzODYuICAqLwotICNkZWZpbmUgWE1MX1NZU0NBTExfRklMRU5BTUVfQU1ENjQg InN5c2NhbGxzL2FtZDY0LWxpbnV4LnhtbCIKLUBAIC00NSw2ICs0OSwxNSBAQAotICNpbmNsdWRl ICJyZWNvcmQuaCIKLSAjaW5jbHVkZSAibGludXgtcmVjb3JkLmgiCi0gCi0rLyogU3VwcG9ydGVk IHJlZ2lzdGVyIG5vdGUgc2VjdGlvbnMuICAqLwotK3N0YXRpYyBzdHJ1Y3QgY29yZV9yZWdzZXRf c2VjdGlvbiBhbWQ2NF9saW51eF9yZWdzZXRfc2VjdGlvbnNbXSA9Ci0rewotKyAgeyAiLnJlZyIs IDE0NCwgImdlbmVyYWwtcHVycG9zZSIgfSwKLSsgIHsgIi5yZWcyIiwgNTEyLCAiZmxvYXRpbmct cG9pbnQiIH0sCi0rICB7ICIucmVnLXhzdGF0ZSIsIDAsICJYU0FWRSBleHRlbmRlZCBzdGF0ZSIg fSwKLSsgIHsgTlVMTCwgMCB9Ci0rfTsKLSsKLSAvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVy YWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2VyJwotICAgIGZvcm1hdCBhbmQgR0RC J3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLSAKLUBAIC0xMzE2LDYgKzEzMjksMjIgQEAg YW1kNjRfbGludXhfcmVjb3JkX3NpZ25hbCAoc3RydWN0IGdkYmFyYwotICAgcmV0dXJuIDA7Ci0g fQotIAotKy8qIFVwZGF0ZSBYU0FWRSBleHRlbmRlZCBzdGF0ZSByZWdpc3RlciBub3RlIHNlY3Rp b24uICAqLwotKwotK3ZvaWQKLSthbWQ2NF9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0ICh1bnNp Z25lZCBpbnQgeHN0YXRlX3NpemUpCi0rewotKyAgc3RydWN0IGNvcmVfcmVnc2V0X3NlY3Rpb24g KnhzdGF0ZSA9ICZhbWQ2NF9saW51eF9yZWdzZXRfc2VjdGlvbnNbMl07Ci0rCi0rICAvKiBVcGRh dGUgdGhlIFhTQVZFIGV4dGVuZGVkIHN0YXRlIHJlZ2lzdGVyIG5vdGUgc2VjdGlvbiBmb3IgImdj b3JlIi4KLSsgICAgIERpc2FibGUgaXQgaWYgaXRzIHNpemUgaXMgMC4gICovCi0rICBnZGJfYXNz ZXJ0IChzdHJjbXAgKHhzdGF0ZS0+c2VjdF9uYW1lLCAiLnJlZy14c3RhdGUiKSA9PSAwKTsKLSsg IGlmICh4c3RhdGVfc2l6ZSkKLSsgICAgeHN0YXRlLT5zaXplID0geHN0YXRlX3NpemU7Ci0rICBl bHNlCi0rICAgIHhzdGF0ZS0+c2VjdF9uYW1lID0gTlVMTDsKLSt9Ci0rCi0gLyogR2V0IExpbnV4 L3g4NiB0YXJnZXQgZGVzY3JpcHRpb24gZnJvbSBjb3JlIGR1bXAuICAqLwotIAotIHN0YXRpYyBj b25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKgotQEAgLTEzMjQsMTIgKzEzNTMsMTcgQEAgYW1kNjRf bGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1YwotIAkJCQkgIGJmZCAqYWJmZCkKLSB7 Ci0gICBhc2VjdGlvbiAqc2VjdGlvbiA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAi LnJlZzIiKTsKLSsgIHVpbnQ2NF90IHhjcjA7Ci0gCi0gICBpZiAoc2VjdGlvbiA9PSBOVUxMKQot ICAgICByZXR1cm4gTlVMTDsKLSAKLSAgIC8qIExpbnV4L3g4Ni02NC4gICovCi0tICByZXR1cm4g dGRlc2NfYW1kNjRfbGludXg7Ci0rICB4Y3IwID0gaTM4Nl9saW51eF9jb3JlX3JlYWRfeGNyMCAo Z2RiYXJjaCwgdGFyZ2V0LCBhYmZkKTsKLSsgIGlmICgoeGNyMCAmIEkzODZfWFNUQVRFX0FWWF9N QVNLKSA9PSBJMzg2X1hTVEFURV9BVlhfTUFTSykKLSsgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2F2 eF9saW51eDsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2xpbnV4OwotIH0KLSAK LSBzdGF0aWMgdm9pZAotQEAgLTEzNzMsNiArMTQwNyw4IEBAIGFtZDY0X2xpbnV4X2luaXRfYWJp IChzdHJ1Y3QgZ2RiYXJjaF9pbmYKLSAKLSAgIHRkZXAtPm91dGVybW9zdF9mcmFtZV9wID0gYW1k NjRfbGludXhfb3V0ZXJtb3N0X2ZyYW1lOwotIAotKyAgdGRlcC0+eHNhdmVfeGNyMF9vZmZzZXQg PSBJMzg2X0xJTlVYX1hTQVZFX1hDUjBfT0ZGU0VUOwotKwotICAgLyogR05VL0xpbnV4IHVzZXMg U1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KLSAgIHNldF9zb2xpYl9zdnI0X2ZldGNo X2xpbmtfbWFwX29mZnNldHMKLSAgICAgKGdkYmFyY2gsIHN2cjRfbHA2NF9mZXRjaF9saW5rX21h cF9vZmZzZXRzKTsKLUBAIC0xMzk0LDYgKzE0MzAsOSBAQCBhbWQ2NF9saW51eF9pbml0X2FiaSAo c3RydWN0IGdkYmFyY2hfaW5mCi0gICAvKiBHTlUvTGludXggdXNlcyBTVlI0LXN0eWxlIHNoYXJl ZCBsaWJyYXJpZXMuICAqLwotICAgc2V0X2dkYmFyY2hfc2tpcF90cmFtcG9saW5lX2NvZGUgKGdk YmFyY2gsIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQpOwotIAotKyAgLyogSW5zdGFsbCBz dXBwb3J0ZWQgcmVnaXN0ZXIgbm90ZSBzZWN0aW9ucy4gICovCi0rICBzZXRfZ2RiYXJjaF9jb3Jl X3JlZ3NldF9zZWN0aW9ucyAoZ2RiYXJjaCwgYW1kNjRfbGludXhfcmVnc2V0X3NlY3Rpb25zKTsK LSsKLSAgIHNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbiAoZ2RiYXJjaCwKLSAJCQkJ ICAgICBhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOwotIAotQEAgLTE1OTYsNCAr MTYzNSw1IEBAIF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXAgKHZvaWQpCi0gCi0gICAvKiBJ bml0aWFsaXplIHRoZSBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24gICovCi0gICBpbml0aWFsaXpl X3RkZXNjX2FtZDY0X2xpbnV4ICgpOwotKyAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9hdnhfbGlu dXggKCk7Ci0gfQotLS0tIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5 OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuaAkyMDEwLTA0 LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTI2LDEzICsyNiwxNyBAQAotIC8qIFJl Z2lzdGVyIG51bWJlciBmb3IgdGhlICJvcmlnX3JheCIgcmVnaXN0ZXIuICBJZiB0aGlzIHJlZ2lz dGVyCi0gICAgY29udGFpbnMgYSB2YWx1ZSA+PSAwIGl0IGlzIGludGVycHJldGVkIGFzIHRoZSBz eXN0ZW0gY2FsbCBudW1iZXIKLSAgICB0aGF0IHRoZSBrZXJuZWwgaXMgc3VwcG9zZWQgdG8gcmVz dGFydC4gICovCi0tI2RlZmluZSBBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0gKEFNRDY0X01Y Q1NSX1JFR05VTSArIDEpCi0rI2RlZmluZSBBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0gKEFN RDY0X1lNTTE1SF9SRUdOVU0gKyAxKQotIAotIC8qIFRvdGFsIG51bWJlciBvZiByZWdpc3RlcnMg Zm9yIEdOVS9MaW51eC4gICovCi0gI2RlZmluZSBBTUQ2NF9MSU5VWF9OVU1fUkVHUyAoQU1ENjRf TElOVVhfT1JJR19SQVhfUkVHTlVNICsgMSkKLSAKLSAvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRp b24uICAqLwotIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2xpbnV4Owot K2V4dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2F2eF9saW51eDsKLSsKLSsv KiBVcGRhdGUgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgcmVnaXN0ZXIgbm90ZSBzZWN0aW9uLiAgKi8K LStleHRlcm4gdm9pZCBhbWQ2NF9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0ICh1bnNpZ25lZCBp bnQgeHN0YXRlX3NpemUpOwotIAotIC8qIEVudW0gdGhhdCBkZWZpbmVzIHRoZSBzeXNjYWxsIGlk ZW50aWZpZXJzIGZvciBhbWQ2NCBsaW51eC4KLSAgICBVc2VkIGZvciBwcm9jZXNzIHJlY29yZC9y ZXBsYXksIHRoZXNlIHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvCi0tLS0gLi9nZGIvYW1kNjQtdGRl cC5jCTIwMTAtMDQtMDMgMjE6MTE6NDEuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvYW1kNjQt dGRlcC5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDMsNiArNDMs NyBAQAotICNpbmNsdWRlICJpMzg3LXRkZXAuaCIKLSAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4 Ni9hbWQ2NC5jIgotKyNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC5jIgotIAotIC8q IE5vdGUgdGhhdCB0aGUgQU1ENjQgYXJjaGl0ZWN0dXJlIHdhcyBwcmV2aW91c2x5IGtub3duIGFz IHg4Ni02NC4KLSAgICBUaGUgbGF0dGVyIGlzIChmb3JldmVyKSBlbmdyYXZlZCBpbnRvIHRoZSBj YW5vbmljYWwgc3lzdGVtIG5hbWUgYXMKLUBAIC03MSw4ICs3MiwyMSBAQCBzdGF0aWMgY29uc3Qg Y2hhciAqYW1kNjRfcmVnaXN0ZXJfbmFtZXNbCi0gICAibXhjc3IiLAotIH07Ci0gCi0tLyogVG90 YWwgbnVtYmVyIG9mIHJlZ2lzdGVycy4gICovCi0tI2RlZmluZSBBTUQ2NF9OVU1fUkVHUwlBUlJB WV9TSVpFIChhbWQ2NF9yZWdpc3Rlcl9uYW1lcykKLStzdGF0aWMgY29uc3QgY2hhciAqYW1kNjRf eW1tX25hbWVzW10gPSAKLSt7Ci0rICAieW1tMCIsICJ5bW0xIiwgInltbTIiLCAieW1tMyIsCi0r ICAieW1tNCIsICJ5bW01IiwgInltbTYiLCAieW1tNyIsCi0rICAieW1tOCIsICJ5bW05IiwgInlt bTEwIiwgInltbTExIiwKLSsgICJ5bW0xMiIsICJ5bW0xMyIsICJ5bW0xNCIsICJ5bW0xNSIKLSt9 OwotKwotK3N0YXRpYyBjb25zdCBjaGFyICphbWQ2NF95bW1oX25hbWVzW10gPSAKLSt7Ci0rICAi eW1tMGgiLCAieW1tMWgiLCAieW1tMmgiLCAieW1tM2giLAotKyAgInltbTRoIiwgInltbTVoIiwg InltbTZoIiwgInltbTdoIiwKLSsgICJ5bW04aCIsICJ5bW05aCIsICJ5bW0xMGgiLCAieW1tMTFo IiwKLSsgICJ5bW0xMmgiLCAieW1tMTNoIiwgInltbTE0aCIsICJ5bW0xNWgiCi0rfTsKLSAKLSAv KiBUaGUgcmVnaXN0ZXJzIHVzZWQgdG8gcGFzcyBpbnRlZ2VyIGFyZ3VtZW50cyBkdXJpbmcgYSBm dW5jdGlvbiBjYWxsLiAgKi8KLSBzdGF0aWMgaW50IGFtZDY0X2R1bW15X2NhbGxfaW50ZWdlcl9y ZWdzW10gPQotQEAgLTE2Myw2ICsxNzcsOCBAQCBzdGF0aWMgY29uc3QgaW50IGFtZDY0X2R3YXJm X3JlZ21hcF9sZW4gCi0gc3RhdGljIGludAotIGFtZDY0X2R3YXJmX3JlZ190b19yZWdudW0gKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnKQotIHsKLSsgIHN0cnVjdCBnZGJhcmNoX3Rk ZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgaW50IHltbTBfcmVnbnVtID0g dGRlcC0+eW1tMF9yZWdudW07Ci0gICBpbnQgcmVnbnVtID0gLTE7Ci0gCi0gICBpZiAocmVnID49 IDAgJiYgcmVnIDwgYW1kNjRfZHdhcmZfcmVnbWFwX2xlbikKLUBAIC0xNzAsNiArMTg2LDkgQEAg YW1kNjRfZHdhcmZfcmVnX3RvX3JlZ251bSAoc3RydWN0IGdkYmFyYwotIAotICAgaWYgKHJlZ251 bSA9PSAtMSkKLSAgICAgd2FybmluZyAoXygiVW5tYXBwZWQgRFdBUkYgUmVnaXN0ZXIgIyVkIGVu Y291bnRlcmVkLiIpLCByZWcpOwotKyAgZWxzZSBpZiAoeW1tMF9yZWdudW0gPj0gMAotKwkgICAm JiBpMzg2X3htbV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmVnbnVtICs9IHlt bTBfcmVnbnVtIC0gSTM4N19YTU0wX1JFR05VTSAodGRlcCk7Ci0gCi0gICByZXR1cm4gcmVnbnVt OwotIH0KLUBAIC0yMzgsNiArMjU3LDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9kd29y ZF9uYW1lc1tdID0KLSAgICJyOGQiLCAicjlkIiwgInIxMGQiLCAicjExZCIsICJyMTJkIiwgInIx M2QiLCAicjE0ZCIsICJyMTVkIgotIH07Ci0gCi0rLyogUmV0dXJuIHRoZSBuYW1lIG9mIHJlZ2lz dGVyIFJFR05VTSwgb3IgdGhlIGVtcHR5IHN0cmluZyBpZiBpdCBpcwotKyAgIGFuIGFub255bW91 cyByZWdpc3Rlci4gKi8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rYW1kNjRfcmVnaXN0ZXJf bmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCi0rewotKyAgLyogSGlk ZSB0aGUgdXBwZXIgWU1NIHJlZ2lzdGVycy4gICovCi0rICBpZiAoaTM4Nl95bW1oX3JlZ251bV9w IChnZGJhcmNoLCByZWdudW0pKQotKyAgICByZXR1cm4gIiI7Ci0rCi0rICByZXR1cm4gdGRlc2Nf cmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgcmVnbnVtKTsKLSt9Ci0rCi0gLyogUmV0dXJuIHRoZSBu YW1lIG9mIHJlZ2lzdGVyIFJFR05VTS4gICovCi0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotQEAg LTI0Niw2ICsyNzgsOCBAQCBhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFy Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsK LSAgIGlmIChpMzg2X2J5dGVfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVy biBhbWQ2NF9ieXRlX25hbWVzW3JlZ251bSAtIHRkZXAtPmFsX3JlZ251bV07Ci0rICBlbHNlIGlm IChpMzg2X3ltbV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuIGFtZDY0 X3ltbV9uYW1lc1tyZWdudW0gLSB0ZGVwLT55bW0wX3JlZ251bV07Ci0gICBlbHNlIGlmIChpMzg2 X3dvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVybiBhbWQ2NF93b3Jk X25hbWVzW3JlZ251bSAtIHRkZXAtPmF4X3JlZ251bV07Ci0gICBlbHNlIGlmIChpMzg2X2R3b3Jk X3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotQEAgLTIxODEsNiArMjIxNSwyOCBAQCBhbWQ2 NF9jb2xsZWN0X2ZwcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnCi0gICBhbWQ2NF9jb2xsZWN0X2Z4 c2F2ZSAocmVnY2FjaGUsIHJlZ251bSwgZnByZWdzKTsKLSB9Ci0gCi0rLyogU2ltaWxhciB0byBh bWQ2NF9zdXBwbHlfZnByZWdzZXQsIGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQgc3RhdGUuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rYW1kNjRfc3VwcGx5X3hzdGF0ZXJlZ3NldCAoY29uc3Qgc3RydWN0 IHJlZ3NldCAqcmVnc2V0LAotKwkJCSAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCBy ZWdudW0sCi0rCQkJICAgY29uc3Qgdm9pZCAqeHN0YXRlcmVncywgc2l6ZV90IGxlbikKLSt7Ci0r ICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQt PmFyY2gpOwotKyAgYW1kNjRfc3VwcGx5X3hzYXZlIChyZWdjYWNoZSwgcmVnbnVtLCB4c3RhdGVy ZWdzKTsKLSt9Ci0rCi0rLyogU2ltaWxhciB0byBhbWQ2NF9jb2xsZWN0X2ZwcmVnc2V0LCBidXQg dXNlIFhTQVZFIGV4dGVuZGVkIHN0YXRlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2FtZDY0X2Nv bGxlY3RfeHN0YXRlcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCi0rCQkJICAg IGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rCQkJICAgIGludCByZWdudW0sIHZv aWQgKnhzdGF0ZXJlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hf dGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGFtZDY0X2NvbGxl Y3RfeHNhdmUgKHJlZ2NhY2hlLCByZWdudW0sIHhzdGF0ZXJlZ3MsIDEpOwotK30KLSsKLSAvKiBS ZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGNvcmUgc2VjdGlvbiBp ZGVudGlmaWVkCi0gICAgYnkgU0VDVF9OQU1FIGFuZCBTRUNUX1NJWkUuICAqLwotIAotQEAgLTIx OTksNiArMjI1NSwxNiBAQCBhbWQ2NF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBn Ci0gICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0OwotICAgICB9Ci0gCi0rICBpZiAoc3RyY21w IChzZWN0X25hbWUsICIucmVnLXhzdGF0ZSIpID09IDApCi0rICAgIHsKLSsgICAgICBpZiAodGRl cC0+eHN0YXRlcmVnc2V0ID09IE5VTEwpCi0rCXRkZXAtPnhzdGF0ZXJlZ3NldCA9IHJlZ3NldF9h bGxvYyAoZ2RiYXJjaCwKLSsJCQkJCSAgIGFtZDY0X3N1cHBseV94c3RhdGVyZWdzZXQsCi0rCQkJ CQkgICBhbWQ2NF9jb2xsZWN0X3hzdGF0ZXJlZ3NldCk7Ci0rCi0rICAgICAgcmV0dXJuIHRkZXAt PnhzdGF0ZXJlZ3NldDsKLSsgICAgfQotKwotICAgcmV0dXJuIGkzODZfcmVnc2V0X2Zyb21fY29y ZV9zZWN0aW9uIChnZGJhcmNoLCBzZWN0X25hbWUsIHNlY3Rfc2l6ZSk7Ci0gfQotIAwKLUBAIC0y MjYxLDYgKzIzMjcsMTMgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5m bwotICAgdGRlcC0+bnVtX2NvcmVfcmVncyA9IEFNRDY0X05VTV9HUkVHUyArIEkzODdfTlVNX1JF R1M7Ci0gICB0ZGVwLT5yZWdpc3Rlcl9uYW1lcyA9IGFtZDY0X3JlZ2lzdGVyX25hbWVzOwotIAot KyAgaWYgKHRkZXNjX2ZpbmRfZmVhdHVyZSAodGRlc2MsICJvcmcuZ251LmdkYi5pMzg2LmF2eCIp ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICB0ZGVwLT55bW1oX3JlZ2lzdGVyX25hbWVzID0gYW1k NjRfeW1taF9uYW1lczsKLSsgICAgICB0ZGVwLT5udW1feW1tX3JlZ3MgPSAxNjsKLSsgICAgICB0 ZGVwLT55bW0waF9yZWdudW0gPSBBTUQ2NF9ZTU0wSF9SRUdOVU07Ci0rICAgIH0KLSsKLSAgIHRk ZXAtPm51bV9ieXRlX3JlZ3MgPSAyMDsKLSAgIHRkZXAtPm51bV93b3JkX3JlZ3MgPSAxNjsKLSAg IHRkZXAtPm51bV9kd29yZF9yZWdzID0gMTY7Ci1AQCAtMjI3NCw2ICsyMzQ3LDggQEAgYW1kNjRf aW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbwotIAotICAgc2V0X3RkZXNjX3BzZXVk b19yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCBhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk7Ci0g Ci0rICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCBhbWQ2NF9yZWdpc3Rlcl9u YW1lKTsKLSsKLSAgIC8qIEFNRDY0IGhhcyBhbiBGUFUgYW5kIDE2IFNTRSByZWdpc3RlcnMuICAq LwotICAgdGRlcC0+c3QwX3JlZ251bSA9IEFNRDY0X1NUMF9SRUdOVU07Ci0gICB0ZGVwLT5udW1f eG1tX3JlZ3MgPSAxNjsKLUBAIC0yMzU0LDYgKzI0MjksNyBAQCB2b2lkCi0gX2luaXRpYWxpemVf YW1kNjRfdGRlcCAodm9pZCkKLSB7Ci0gICBpbml0aWFsaXplX3RkZXNjX2FtZDY0ICgpOwotKyAg aW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9hdnggKCk7Ci0gfQotIAwKLSAKLUBAIC0yMzg5LDYgKzI0 NjUsMzAgQEAgYW1kNjRfc3VwcGx5X2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZQotICAgICB9 Ci0gfQotIAotKy8qIFNpbWlsYXIgdG8gYW1kNjRfc3VwcGx5X2Z4c2F2ZSwgYnV0IHVzZSBYU0FW RSBleHRlbmRlZCBzdGF0ZS4gICovCi0rCi0rdm9pZAotK2FtZDY0X3N1cHBseV94c2F2ZSAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSwKLSsJCSAgICBjb25zdCB2b2lkICp4 c2F2ZSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNo IChyZWdjYWNoZSk7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVw IChnZGJhcmNoKTsKLSsKLSsgIGkzODdfc3VwcGx5X3hzYXZlIChyZWdjYWNoZSwgcmVnbnVtLCB4 c2F2ZSk7Ci0rCi0rICBpZiAoeHNhdmUgJiYgZ2RiYXJjaF9wdHJfYml0IChnZGJhcmNoKSA9PSA2 NCkKLSsgICAgewotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpyZWdzID0geHNhdmU7Ci0rCi0rICAg ICAgaWYgKHJlZ251bSA9PSAtMSB8fCByZWdudW0gPT0gSTM4N19GSVNFR19SRUdOVU0gKHRkZXAp KQotKwlyZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgSTM4N19GSVNFR19SRUdOVU0gKHRk ZXApLAotKwkJCSAgICAgcmVncyArIDEyKTsKLSsgICAgICBpZiAocmVnbnVtID09IC0xIHx8IHJl Z251bSA9PSBJMzg3X0ZPU0VHX1JFR05VTSAodGRlcCkpCi0rCXJlZ2NhY2hlX3Jhd19zdXBwbHkg KHJlZ2NhY2hlLCBJMzg3X0ZPU0VHX1JFR05VTSAodGRlcCksCi0rCQkJICAgICByZWdzICsgMjAp OwotKyAgICB9Ci0rfQotKwotIC8qIEZpbGwgcmVnaXN0ZXIgUkVHTlVNIChpZiBpdCBpcyBhIGZs b2F0aW5nLXBvaW50IG9yIFNTRSByZWdpc3RlcikgaW4KLSAgICAqRlhTQVZFIHdpdGggdGhlIHZh bHVlIGZyb20gUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCi0gICAgYWxs IHJlZ2lzdGVycy4gIFRoaXMgZnVuY3Rpb24gZG9lc24ndCB0b3VjaCBhbnkgb2YgdGhlIHJlc2Vy dmVkCi1AQCAtMjQxMiwzICsyNTEyLDI2IEBAIGFtZDY0X2NvbGxlY3RfZnhzYXZlIChjb25zdCBz dHJ1Y3QgcmVnY2EKLSAJcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBJMzg3X0ZPU0VH X1JFR05VTSAodGRlcCksIHJlZ3MgKyAyMCk7Ci0gICAgIH0KLSB9Ci0rCi0rLyogU2ltaWxhciB0 byBhbWQ2NF9jb2xsZWN0X2Z4c2F2ZSwgYnV0IGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQgc3RhdGUu ICAqLwotKwotK3ZvaWQKLSthbWQ2NF9jb2xsZWN0X3hzYXZlIChjb25zdCBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotKwkJICAgICB2b2lkICp4c2F2ZSwgaW50IGdjb3Jl KQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJl Z2NhY2hlKTsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpOwotKyAgZ2RiX2J5dGUgKnJlZ3MgPSB4c2F2ZTsKLSsKLSsgIGkzODdfY29sbGVjdF94 c2F2ZSAocmVnY2FjaGUsIHJlZ251bSwgeHNhdmUsIGdjb3JlKTsKLSsKLSsgIGlmIChnZGJhcmNo X3B0cl9iaXQgKGdkYmFyY2gpID09IDY0KQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSAt MSB8fCByZWdudW0gPT0gSTM4N19GSVNFR19SRUdOVU0gKHRkZXApKQotKwlyZWdjYWNoZV9yYXdf Y29sbGVjdCAocmVnY2FjaGUsIEkzODdfRklTRUdfUkVHTlVNICh0ZGVwKSwKLSsJCQkgICAgICBy ZWdzICsgMTIpOwotKyAgICAgIGlmIChyZWdudW0gPT0gLTEgfHwgcmVnbnVtID09IEkzODdfRk9T RUdfUkVHTlVNICh0ZGVwKSkKLSsJcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBJMzg3 X0ZPU0VHX1JFR05VTSAodGRlcCksCi0rCQkJICAgICAgcmVncyArIDIwKTsKLSsgICAgfQotK30K LS0tLSAuL2dkYi9hbWQ2NC10ZGVwLmgJMjAxMC0wMS0yOSAwNjoxOToyMi4wMDAwMDAwMDAgKzAx MDAKLSsrKyAuL2dkYi9hbWQ2NC10ZGVwLmgJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAg KzAyMDAKLUBAIC02MSwxMiArNjEsMTYgQEAgZW51bSBhbWQ2NF9yZWdudW0KLSAgIEFNRDY0X0ZT VEFUX1JFR05VTSA9IEFNRDY0X1NUMF9SRUdOVU0gKyA5LAotICAgQU1ENjRfWE1NMF9SRUdOVU0g PSA0MCwJLyogJXhtbTAgKi8KLSAgIEFNRDY0X1hNTTFfUkVHTlVNLAkJLyogJXhtbTEgKi8KLS0g IEFNRDY0X01YQ1NSX1JFR05VTSA9IEFNRDY0X1hNTTBfUkVHTlVNICsgMTYKLSsgIEFNRDY0X01Y Q1NSX1JFR05VTSA9IEFNRDY0X1hNTTBfUkVHTlVNICsgMTYsCi0rICBBTUQ2NF9ZTU0wSF9SRUdO VU0sCQkvKiAleW1tMGggKi8KLSsgIEFNRDY0X1lNTTE1SF9SRUdOVU0gPSBBTUQ2NF9ZTU0wSF9S RUdOVU0gKyAxNQotIH07Ci0gCi0gLyogTnVtYmVyIG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3Rl cnMuICAqLwotICNkZWZpbmUgQU1ENjRfTlVNX0dSRUdTCQkyNAotIAotKyNkZWZpbmUgQU1ENjRf TlVNX1JFR1MJCShBTUQ2NF9ZTU0xNUhfUkVHTlVNICsgMSkKLSsKLSBleHRlcm4gc3RydWN0IGRp c3BsYWNlZF9zdGVwX2Nsb3N1cmUgKmFtZDY0X2Rpc3BsYWNlZF9zdGVwX2NvcHlfaW5zbgotICAg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgZnJvbSwgQ09SRV9BRERSIHRvLAot ICAgIHN0cnVjdCByZWdjYWNoZSAqcmVncyk7Ci1AQCAtNzcsMTIgKzgxLDYgQEAgZXh0ZXJuIHZv aWQgYW1kNjRfZGlzcGxhY2VkX3N0ZXBfZml4dXAgKAotIAotIGV4dGVybiB2b2lkIGFtZDY0X2lu aXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KTsKLSAKLS0vKiBGdW5jdGlvbnMgZnJvbSBhbWQ2NC10ZGVwLmMgd2hpY2ggbWF5IGJlIG5lZWRl ZCBvbiBhcmNoaXRlY3R1cmVzCi0tICAgd2l0aCBleHRyYSByZWdpc3RlcnMuICAqLwotLQotLWV4 dGVybiBjb25zdCBjaGFyICphbWQ2NF9yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwgaW50IHJlZ251bSk7Ci0tZXh0ZXJuIHN0cnVjdCB0eXBlICphbWQ2NF9yZWdpc3Rlcl90 eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSk7Ci0tCi0gLyogRmlsbCBy ZWdpc3RlciBSRUdOVU0gaW4gUkVHQ0FDSEUgd2l0aCB0aGUgYXBwcm9wcmlhdGUKLSAgICBmbG9h dGluZy1wb2ludCBvciBTU0UgcmVnaXN0ZXIgdmFsdWUgZnJvbSAqRlhTQVZFLiAgSWYgUkVHTlVN IGlzCi0gICAgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMuICBUaGlzIGZ1bmN0aW9uIG1h c2tzIG9mZiBhbnkgb2YgdGhlCi1AQCAtOTEsNiArODksMTAgQEAgZXh0ZXJuIHN0cnVjdCB0eXBl ICphbWQ2NF9yZWdpc3Rlcl90eXBlIAotIGV4dGVybiB2b2lkIGFtZDY0X3N1cHBseV9meHNhdmUg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sCi0gCQkJCSBjb25zdCB2b2lk ICpmeHNhdmUpOwotIAotKy8qIFNpbWlsYXIgdG8gYW1kNjRfc3VwcGx5X2Z4c2F2ZSwgYnV0IHVz ZSBYU0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rZXh0ZXJuIHZvaWQgYW1kNjRfc3VwcGx5X3hz YXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotKwkJCQljb25zdCB2 b2lkICp4c2F2ZSk7Ci0rCi0gLyogRmlsbCByZWdpc3RlciBSRUdOVU0gKGlmIGl0IGlzIGEgZmxv YXRpbmctcG9pbnQgb3IgU1NFIHJlZ2lzdGVyKSBpbgotICAgICpGWFNBVkUgd2l0aCB0aGUgdmFs dWUgZnJvbSBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSAgICBhbGwg cmVnaXN0ZXJzLiAgVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHRvdWNoIGFueSBvZiB0aGUgcmVzZXJ2 ZWQKLUBAIC05OSw2ICsxMDEsMTAgQEAgZXh0ZXJuIHZvaWQgYW1kNjRfc3VwcGx5X2Z4c2F2ZSAo c3RydWN0IAotIGV4dGVybiB2b2lkIGFtZDY0X2NvbGxlY3RfZnhzYXZlIChjb25zdCBzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotIAkJCQkgIHZvaWQgKmZ4c2F2ZSk7Ci0g Ci0rLyogU2ltaWxhciB0byBhbWQ2NF9jb2xsZWN0X2Z4c2F2ZSwgYnV0IGJ1dCB1c2UgWFNBVkUg ZXh0ZW5kZWQgc3RhdGUuICAqLwotK2V4dGVybiB2b2lkIGFtZDY0X2NvbGxlY3RfeHNhdmUgKGNv bnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rCQkJCSBpbnQgcmVnbnVtLCB2b2lkICp4 c2F2ZSwgaW50IGdjb3JlKTsKLSsKLSB2b2lkIGFtZDY0X2NsYXNzaWZ5IChzdHJ1Y3QgdHlwZSAq dHlwZSwgZW51bSBhbWQ2NF9yZWdfY2xhc3MgY2xhc3NbMl0pOwotIAotIAwKLS0tLSAuL2dkYi9j b21tb24vaTM4Ni14c3RhdGUuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAot KysrIC4vZ2RiL2NvbW1vbi9pMzg2LXhzdGF0ZS5oCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAw MDAwICswMjAwCi1AQCAtMCwwICsxLDQxIEBACi0rLyogQ29tbW9uIGNvZGUgZm9yIGkzODYgWFNB VkUgZXh0ZW5kZWQgc3RhdGUuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmbmRlZiBJ Mzg2X1hTVEFURV9ICi0rI2RlZmluZSBJMzg2X1hTVEFURV9IIDEKLSsKLSsvKiBUaGUgZXh0ZW5k ZWQgc3RhdGUgZmVhdHVyZSBiaXRzLiAgKi8KLSsjZGVmaW5lIEkzODZfWFNUQVRFX1g4NwkJKDFV TEwgPDwgMCkKLSsjZGVmaW5lIEkzODZfWFNUQVRFX1NTRQkJKDFVTEwgPDwgMSkKLSsjZGVmaW5l IEkzODZfWFNUQVRFX0FWWAkJKDFVTEwgPDwgMikKLSsKLSsvKiBTdXBwb3J0ZWQgbWFzayBhbmQg c2l6ZSBvZiB0aGUgZXh0ZW5kZWQgc3RhdGUuICAqLwotKyNkZWZpbmUgSTM4Nl9YU1RBVEVfU1NF X01BU0sJKEkzODZfWFNUQVRFX1g4NyB8IEkzODZfWFNUQVRFX1NTRSkKLSsjZGVmaW5lIEkzODZf WFNUQVRFX0FWWF9NQVNLCShJMzg2X1hTVEFURV9TU0VfTUFTSyB8IEkzODZfWFNUQVRFX0FWWCkK LSsKLSsjZGVmaW5lIEkzODZfWFNUQVRFX1NTRV9TSVpFCTU3NgotKyNkZWZpbmUgSTM4Nl9YU1RB VEVfQVZYX1NJWkUJODMyCi0rI2RlZmluZSBJMzg2X1hTVEFURV9NQVhfU0laRQk4MzIKLSsKLSsv KiBHZXQgSTM4NiBYU0FWRSBleHRlbmRlZCBzdGF0ZSBzaXplLiAgKi8KLSsjZGVmaW5lIEkzODZf WFNUQVRFX1NJWkUoWENSMCkJXAotKyAgKCgoWENSMCkgJiBJMzg2X1hTVEFURV9BVlgpICE9IDAg XAotKyAgID8gSTM4Nl9YU1RBVEVfQVZYX1NJWkUgOiBJMzg2X1hTVEFURV9TU0VfU0laRSkKLSsK LSsjZW5kaWYgLyogSTM4Nl9YU1RBVEVfSCAqLwotLS0tIC4vZ2RiL2NvbmZpZy9kamdwcC9mbmNo YW5nZS5sc3QJMjAxMC0wMi0wMSAyMDoyNzo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9j b25maWcvZGpncHAvZm5jaGFuZ2UubHN0CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICsw MjAwCi1AQCAtMjI4LDYgKzIyOCwxNCBAQAotIEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3Bvd2Vy cGMtdnN4NjRsLnhtbCBAVkAvZ2RiL2ZlYXR1cmVzL3JzNjAwMC9wcGMtdjY0bC54bWwKLSBAVkAv Z2RiL2ZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWNlbGwzMmwueG1sIEBWQC9nZGIvZmVhdHVyZXMv cnM2MDAwL3BwYy1jMzJsLnhtbAotIEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtY2Vs bDY0bC54bWwgQFZAL2dkYi9mZWF0dXJlcy9yczYwMDAvcHBjLWM2NGwueG1sCi0rQFZAL2dkYi9m ZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1saW51eC5jIEBWQC9nZGIvZmVhdHVyZXMvaTM4Ni9hNjQt YWwuYwotK0BWQC9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdnguYyBAVkAvZ2RiL2ZlYXR1cmVz L2kzODYvYTY0LWEuYwotK0BWQC9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXgueG1s IEBWQC9nZGIvZmVhdHVyZXMvaTM4Ni9hNjQtYWwueG1sCi0rQFZAL2dkYi9mZWF0dXJlcy9pMzg2 L2FtZDY0LWF2eC54bWwgQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2E2NC1hLnhtbAotK0BWQC9nZGIv ZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1saW51eC5jIEBWQC9mZWF0dXJlcy9pMzg2L2kzMi1hbC5j Ci0rQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LmMgQFZAL2dkYi9mZWF0dXJlcy9pMzg2 L2kzMi1hLmMKLStAVkAvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbGludXgueG1sIEBWQC9n ZGIvZmVhdHVyZXMvaTM4Ni9pMzItYWwueG1sCi0rQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYt YXZ4LnhtbCBAVkAvZ2RiL2ZlYXR1cmVzL2kzODYvaTMyLWEueG1sCi0gQFZAL2dkYi9mLWV4cC50 YWIuYyBAVkAvZ2RiL2YtZXhwX3RhYi5jCi0gQFZAL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpcy1s b3cuYyBAVkAvZ2RiL2dkYnNlcnZlci9seC1jcmlzLmMKLSBAVkAvZ2RiL2dkYnNlcnZlci9saW51 eC1jcmlzdjMyLWxvdy5jIEBWQC9nZGIvZ2Ric2VydmVyL2x4LWNyaXMzMi5jCi0tLS0gLi9nZGIv ZG9jL0NoYW5nZUxvZy54Y3IJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi9kb2MvQ2hhbmdlTG9nLnhjcgkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTAsMCArMSwzMSBAQAotKzIwMTAtMDMtMjcgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoR2VuZXJhbCBRdWVyeSBQYWNrZXRzKTog UmVwbGFjZSAieDg2PXhtbCIgd2l0aAotKwkieG1sUmVnaXN0ZXJzKyIuCi0rCi0rMjAxMC0wMy0x MiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChH ZW5lcmFsIFF1ZXJ5IFBhY2tldHMpOiBVcGRhdGVkLgotKwkoaTM4NiBGZWF0dXJlcyk6IExpa2V3 aXNlLgotKwotKzIwMTAtMDMtMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBnZGIudGV4aW5mbyAoaTM4NiBGZWF0dXJlcyk6IE1ha2Ugb3JnLmdudS5nZGIuaTM4Ni5h dnggb3B0aW9uYWwuCi0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChHZW5lcmFsIFF1ZXJ5IFBhY2tldHMpOiBSZW1vdmUg eDg2OnhzdGF0ZSBleHRlbnNpb24uCi0rCURvY3VtZW50IHg4Nj14bWwgZXh0ZW5zaW9uIGluIGdk YiByZW1vdGUgcHJvdG9jb2wuCi0rCi0rMjAxMC0wMi0xMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChpMzg2IEZlYXR1cmVzKTogQWRkIG9yZy5n bnUuZ2RiLmkzODYuYXZ4LgotKwotKzIwMTAtMDItMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbzogUmVtb3ZlIHg4Njp4c3RhdGUgZnJvbSBzdHVi IHJlcGx5LgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBnZGIudGV4aW5mbzogRG9jdW1lbnQgeDg2OnhzdGF0ZSBleHRlbnNpb24gaW4gZ2Ri IHJlbW90ZQotKwlwcm90b2NvbC4KLS0tLSAuL2dkYi9kb2MvQ2hhbmdlTG9nLnhtbAkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2RvYy9DaGFuZ2VMb2cueG1s CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDI4IEBACi0r MjAxMC0wMy0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50 ZXhpbmZvIChHZW5lcmFsIFF1ZXJ5IFBhY2tldHMpOiBVcGRhdGVkLgotKwotKzIwMTAtMDMtMjkg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoR2Vu ZXJhbCBRdWVyeSBQYWNrZXRzKTogVXBkYXRlZC4KLSsKLSsyMDEwLTAzLTI5ICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVlcnkg UGFja2V0cyk6IFJlbW92ZSBleHRyYSBzdXBwb3J0cy4KLSsKLSsyMDEwLTAzLTI4ICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVl cnkgUGFja2V0cyk6IEFkZCB4bWxSZWdpc3RlcnMuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChQcmVkZWZpbmVkIFRh cmdldCBUeXBlcyk6IEFkZCBpMzg3X2V4dCwKLSsJaTM4Nl9lZmxhZ3MgYW5kIGkzODZfbXhjc3Iu Ci0rCi0rMjAxMC0wMi0wOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGdkYi50ZXhpbmZvOiBVcGRhdGUgaTM4NiB0YXJnZXQgZmVhdHVyZXMuCi0rCi0rMjAxMC0wMi0w OCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvOiBE b2N1bWVudCBpMzg2IHRhcmdldCBmZWF0dXJlcy4KLS0tLSAuL2dkYi9mZWF0dXJlcy9NYWtlZmls ZQkyMDEwLTAyLTA4IDA2OjA4OjQ2LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2ZlYXR1cmVz L01ha2VmaWxlCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzMsNiAr MzMsOCBAQAotIFdISUNIID0gYXJtLXdpdGgtaXdtbXh0IGFybS13aXRoLXZmcHYyIGFybS13aXRo LXZmcHYzIGFybS13aXRoLW5lb24gXAotIAlpMzg2L2kzODYgaTM4Ni9pMzg2LWxpbnV4IFwKLSAJ aTM4Ni9hbWQ2NCBpMzg2L2FtZDY0LWxpbnV4IFwKLSsJaTM4Ni9pMzg2LWF2eCBpMzg2L2kzODYt YXZ4LWxpbnV4IFwKLSsJaTM4Ni9hbWQ2NC1hdnggaTM4Ni9hbWQ2NC1hdngtbGludXggXAotIAlt aXBzLWxpbnV4IG1pcHM2NC1saW51eCBcCi0gCXJzNjAwMC9wb3dlcnBjLTMybCByczYwMDAvcG93 ZXJwYy1hbHRpdmVjMzJsIHJzNjAwMC9wb3dlcnBjLWU1MDBsIFwKLSAJcnM2MDAwL3Bvd2VycGMt NjRsIHJzNjAwMC9wb3dlcnBjLWFsdGl2ZWM2NGwgcnM2MDAwL3Bvd2VycGMtdnN4MzJsIFwKLUBA IC00NSw2ICs0NywxMCBAQCBpMzg2L2kzODYtZXhwZWRpdGUgPSBlYnAsZXNwLGVpcAotIGkzODYv aTM4Ni1saW51eC1leHBlZGl0ZSA9IGVicCxlc3AsZWlwCi0gaTM4Ni9hbWQ2NC1leHBlZGl0ZSA9 IHJicCxyc3AscmlwCi0gaTM4Ni9hbWQ2NC1saW51eC1leHBlZGl0ZSA9IHJicCxyc3AscmlwCi0r aTM4Ni9pMzg2LWF2eC1leHBlZGl0ZSA9IGVicCxlc3AsZWlwCi0raTM4Ni9pMzg2LWF2eC1saW51 eC1leHBlZGl0ZSA9IGVicCxlc3AsZWlwCi0raTM4Ni9hbWQ2NC1hdngtZXhwZWRpdGUgPSByYnAs cnNwLHJpcAotK2kzODYvYW1kNjQtYXZ4LWxpbnV4LWV4cGVkaXRlID0gcmJwLHJzcCxyaXAKLSBt aXBzLWV4cGVkaXRlID0gcjI5LHBjCi0gbWlwczY0LWV4cGVkaXRlID0gcjI5LHBjCi0gcG93ZXJw Yy1leHBlZGl0ZSA9IHIxLHBjCi1AQCAtOTAsMyArOTYsOSBAQCAkKG91dGRpcikvaTM4Ni9pMzg2 LWxpbnV4LmRhdDogaTM4Ni8zMmJpCi0gJChvdXRkaXIpL2kzODYvYW1kNjQuZGF0OiBpMzg2LzY0 Yml0LWNvcmUueG1sIGkzODYvNjRiaXQtc3NlLnhtbAotICQob3V0ZGlyKS9pMzg2L2FtZDY0LWxp bnV4LmRhdDogaTM4Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LXNzZS54bWwgXAotIAkJCSAg ICAgICAgaTM4Ni82NGJpdC1saW51eC54bWwKLSskKG91dGRpcikvaTM4Ni9pMzg2LWF2eC5kYXQ6 IGkzODYvMzJiaXQtY29yZS54bWwgaTM4Ni8zMmJpdC1hdngueG1sCi0rJChvdXRkaXIpL2kzODYv aTM4Ni1hdngtbGludXguZGF0OiBpMzg2LzMyYml0LWNvcmUueG1sIGkzODYvMzJiaXQtYXZ4Lnht bCBcCi0rCQkJICAgICAgIGkzODYvMzJiaXQtbGludXgueG1sCi0rJChvdXRkaXIpL2kzODYvYW1k NjQtYXZ4LmRhdDogaTM4Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LWF2eC54bWwKLSskKG91 dGRpcikvaTM4Ni9hbWQ2NC1hdngtbGludXguZGF0OiBpMzg2LzY0Yml0LWNvcmUueG1sIGkzODYv NjRiaXQtYXZ4LnhtbCBcCi0rCQkJCSAgICBpMzg2LzY0Yml0LWxpbnV4LnhtbAotLS0tIC4vZ2Ri L2ZlYXR1cmVzL2kzODYvMzJiaXQtYXZ4LnhtbAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw MCArMDEwMAotKysrIC4vZ2RiL2ZlYXR1cmVzL2kzODYvMzJiaXQtYXZ4LnhtbAkyMDEwLTA0LTAz IDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxOCBAQAotKzw/eG1sIHZlcnNp b249IjEuMCI/PgotKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmls ZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSsgICAgIGFyZSBwZXJtaXR0ZWQgaW4g YW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAotKyAgICAg bm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+Ci0rCi0rPCFET0NUWVBF IGZlYXR1cmUgU1lTVEVNICJnZGItdGFyZ2V0LmR0ZCI+Ci0rPGZlYXR1cmUgbmFtZT0ib3JnLmdu dS5nZGIuaTM4Ni5hdngiPgotKyAgPHJlZyBuYW1lPSJ5bW0waCIgYml0c2l6ZT0iMTI4IiB0eXBl PSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5hbWU9InltbTFoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVp bnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMmgiIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEy OCIvPgotKyAgPHJlZyBuYW1lPSJ5bW0zaCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+ Ci0rICA8cmVnIG5hbWU9InltbTRoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsg IDxyZWcgbmFtZT0ieW1tNWgiIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEyOCIvPgotKyAgPHJl ZyBuYW1lPSJ5bW02aCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5h bWU9InltbTdoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSs8L2ZlYXR1cmU+Ci0t LS0gLi9nZGIvZmVhdHVyZXMvaTM4Ni82NGJpdC1hdngueG1sCTE5NzAtMDEtMDEgMDE6MDA6MDAu MDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni82NGJpdC1hdngueG1sCTIw MTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDI2IEBACi0rPD94 bWwgdmVyc2lvbj0iMS4wIj8+Ci0rPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2Yg dGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAotKyAgICAgYXJlIHBlcm1p dHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0 Ci0rICAgICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAtLT4KLSsKLSs8 IURPQ1RZUEUgZmVhdHVyZSBTWVNURU0gImdkYi10YXJnZXQuZHRkIj4KLSs8ZmVhdHVyZSBuYW1l PSJvcmcuZ251LmdkYi5pMzg2LmF2eCI+Ci0rICA8cmVnIG5hbWU9InltbTBoIiBiaXRzaXplPSIx MjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMWgiIGJpdHNpemU9IjEyOCIg dHlwZT0idWludDEyOCIvPgotKyAgPHJlZyBuYW1lPSJ5bW0yaCIgYml0c2l6ZT0iMTI4IiB0eXBl PSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5hbWU9InltbTNoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVp bnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tNGgiIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEy OCIvPgotKyAgPHJlZyBuYW1lPSJ5bW01aCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+ Ci0rICA8cmVnIG5hbWU9InltbTZoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsg IDxyZWcgbmFtZT0ieW1tN2giIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEyOCIvPgotKyAgPHJl ZyBuYW1lPSJ5bW04aCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5h bWU9InltbTloIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0i eW1tMTBoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1t MTFoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTJo IiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTNoIiBi aXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTRoIiBiaXRz aXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTVoIiBiaXRzaXpl PSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSs8L2ZlYXR1cmU+Ci0tLS0gLi9nZGIvZmVhdHVyZXMv aTM4Ni9NYWtlZmlsZQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4v Z2RiL2ZlYXR1cmVzL2kzODYvTWFrZWZpbGUJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0wLDAgKzEsNSBAQAotK2luY2x1ZGUgTWFrZWZpbGUKLSsKLStYTUxUT0MgPSAk KGFkZHN1ZmZpeCAueG1sLCAkKGZpbHRlciBpMzg2LyUsICQoV0hJQ0gpKSkKLStDRklMRVMgPSAk KHBhdHN1YnN0ICUueG1sLCUuYywkKFhNTFRPQykpCi0rY2ZpbGVzOiAkKENGSUxFUykKLS0tLSAu L2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC1saW51eC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAu MDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXgu YwkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxNzEgQEAK LSsvKiBUSElTIEZJTEUgSVMgR0VORVJBVEVELiAgT3JpZ2luYWw6IGFtZDY0LWF2eC1saW51eC54 bWwgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJvc2FiaS5oIgotKyNpbmNs dWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCi0rCi0rc3RydWN0IHRhcmdldF9kZXNjICp0ZGVz Y19hbWQ2NF9hdnhfbGludXg7Ci0rc3RhdGljIHZvaWQKLStpbml0aWFsaXplX3RkZXNjX2FtZDY0 X2F2eF9saW51eCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnJlc3VsdCA9IGFs bG9jYXRlX3RhcmdldF9kZXNjcmlwdGlvbiAoKTsKLSsgIHN0cnVjdCB0ZGVzY19mZWF0dXJlICpm ZWF0dXJlOwotKyAgc3RydWN0IHRkZXNjX3R5cGUgKmZpZWxkX3R5cGUsICp0eXBlOwotKwotKyAg c2V0X3RkZXNjX2FyY2hpdGVjdHVyZSAocmVzdWx0LCBiZmRfc2Nhbl9hcmNoICgiaTM4Njp4ODYt NjQiKSk7Ci0rCi0rICBzZXRfdGRlc2Nfb3NhYmkgKHJlc3VsdCwgb3NhYmlfZnJvbV90ZGVzY19z dHJpbmcgKCJHTlUvTGludXgiKSk7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1 cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuY29yZSIpOwotKyAgZmllbGRfdHlwZSA9IHRk ZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfZWZsYWdzIiwgNCk7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgMSwgIiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJBRiIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDYsICJaRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDcsICJTRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDEwLCAiREYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAx MSwgIk9GIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCAxNywgIlZNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg MTgsICJBQyIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjAsICJWSVAiKTsKLSsgIHRkZXNjX2FkZF9m bGFnIChmaWVsZF90eXBlLCAyMSwgIklEIik7Ci0rCi0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAicmF4IiwgMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInJieCIsIDEsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJyY3giLCAyLCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmR4IiwgMywgMSwgTlVMTCwgNjQsICJpbnQ2NCIp OwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzaSIsIDQsIDEsIE5VTEwsIDY0LCAi aW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyZGkiLCA1LCAxLCBOVUxM LCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJwIiwgNiwg MSwgTlVMTCwgNjQsICJkYXRhX3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwg InJzcCIsIDcsIDEsIE5VTEwsIDY0LCAiZGF0YV9wdHIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJyOCIsIDgsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJyOSIsIDksIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTAiLCAxMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxMSIsIDExLCAxLCBOVUxMLCA2NCwgImlu dDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjEyIiwgMTIsIDEsIE5VTEws IDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTMiLCAxMywg MSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIx NCIsIDE0LCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAicjE1IiwgMTUsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJyaXAiLCAxNiwgMSwgTlVMTCwgNjQsICJjb2RlX3B0ciIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVmbGFncyIsIDE3LCAxLCBOVUxMLCAzMiwgImkzODZf ZWZsYWdzIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiY3MiLCAxOCwgMSwgTlVM TCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInNzIiwgMTks IDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJk cyIsIDIwLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAiZXMiLCAyMSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgImZzIiwgMjIsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJncyIsIDIzLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QwIiwgMjQsIDEsIE5VTEwsIDgwLCAiaTM4N19l eHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDEiLCAyNSwgMSwgTlVMTCwg ODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MiIsIDI2 LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJl LCAic3QzIiwgMjcsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJzdDQiLCAyOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NSIsIDI5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0 Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q2IiwgMzAsIDEsIE5VTEwsIDgw LCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDciLCAzMSwg MSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwg ImZjdHJsIiwgMzIsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVn IChmZWF0dXJlLCAiZnN0YXQiLCAzMywgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmdGFnIiwgMzQsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7 Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZmlzZWciLCAzNSwgMSwgImZsb2F0Iiwg MzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaW9mZiIsIDM2LCAx LCAiZmxvYXQiLCAzMiwgImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZv c2VnIiwgMzcsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAiZm9vZmYiLCAzOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJmb3AiLCAzOSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsK LSsgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIu aTM4Ni5zc2UiKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAi aWVlZV9zaW5nbGUiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2NGYiLCBm aWVsZF90eXBlLCA0KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0 dXJlLCAiaWVlZV9kb3VibGUiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2 MmQiLCBmaWVsZF90eXBlLCAyKTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBl IChmZWF0dXJlLCAiaW50OCIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInYx Nmk4IiwgZmllbGRfdHlwZSwgMTYpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5 cGUgKGZlYXR1cmUsICJpbnQxNiIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwg InY4aTE2IiwgZmllbGRfdHlwZSwgOCk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRf dHlwZSAoZmVhdHVyZSwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJl LCAidjRpMzIiLCBmaWVsZF90eXBlLCA0KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1l ZF90eXBlIChmZWF0dXJlLCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1 cmUsICJ2Mmk2NCIsIGZpZWxkX3R5cGUsIDIpOwotKwotKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91 bmlvbiAoZmVhdHVyZSwgInZlYzEyOCIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5 cGUgKGZlYXR1cmUsICJ2NGYiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY0X2Zsb2F0 IiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVy ZSwgInYyZCIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfZG91YmxlIiwgZmllbGRf dHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYxNmk4 Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2MTZfaW50OCIsIGZpZWxkX3R5cGUpOwot KyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2OGkxNiIpOwotKyAg dGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjhfaW50MTYiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxk X3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRpMzIiKTsKLSsgIHRkZXNjX2Fk ZF9maWVsZCAodHlwZSwgInY0X2ludDMyIiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0g dGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYyaTY0Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQg KHR5cGUsICJ2Ml9pbnQ2NCIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25h bWVkX3R5cGUgKGZlYXR1cmUsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUs ICJ1aW50MTI4IiwgZmllbGRfdHlwZSk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRl X2ZsYWdzIChmZWF0dXJlLCAiaTM4Nl9teGNzciIsIDQpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDAsICJJRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICJE RSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJaRSIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDMsICJPRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDQsICJVRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDUsICJQRSIp OwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJEQVoiKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCA3LCAiSU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCA4LCAiRE0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAiWk0iKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIk9NIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgMTEsICJVTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5 cGUsIDEyLCAiUE0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNSwgIkZaIik7 Ci0rCi0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMCIsIDQwLCAxLCBOVUxMLCAx MjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xIiwgNDEs IDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwg InhtbTIiLCA0MiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVn IChmZWF0dXJlLCAieG1tMyIsIDQzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW00IiwgNDQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIp OwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTUiLCA0NSwgMSwgTlVMTCwgMTI4 LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNiIsIDQ2LCAx LCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4 bW03IiwgNDcsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAo ZmVhdHVyZSwgInhtbTgiLCA0OCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAieG1tOSIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsK LSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMCIsIDUwLCAxLCBOVUxMLCAxMjgs ICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMSIsIDUxLCAx LCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4 bW0xMiIsIDUyLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJ4bW0xMyIsIDUzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNCIsIDU0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNSIsIDU1LCAxLCBOVUxMLCAx MjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDU2 LCAxLCAidmVjdG9yIiwgMzIsICJpMzg2X214Y3NyIik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2Nf Y3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJvcmlnX3JheCIsIDU3LCAxLCBOVUxMLCA2NCwgImlu dCIpOwotKwotKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcu Z251LmdkYi5pMzg2LmF2eCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBo IiwgNTgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJ5bW0xaCIsIDU5LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMmgiLCA2MCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIp OwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNjEsIDEsIE5VTEwsIDEy OCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDYy LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJl LCAieW1tNWgiLCA2MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgInltbTZoIiwgNjQsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDY1LCAxLCBOVUxMLCAxMjgsICJ1 aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tOGgiLCA2NiwgMSwg TlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInlt bTloIiwgNjcsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJ5bW0xMGgiLCA2OCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTExaCIsIDY5LCAxLCBOVUxMLCAxMjgsICJ1aW50 MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTJoIiwgNzAsIDEsIE5V TEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0x M2giLCA3MSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAo ZmVhdHVyZSwgInltbTE0aCIsIDcyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVz Y19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTVoIiwgNzMsIDEsIE5VTEwsIDEyOCwgInVpbnQx MjgiKTsKLSsKLSsgIHRkZXNjX2FtZDY0X2F2eF9saW51eCA9IHJlc3VsdDsKLSt9Ci0tLS0gLi9n ZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXgueG1sCTE5NzAtMDEtMDEgMDE6MDA6MDAu MDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXgu eG1sCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDE4IEBA Ci0rPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci0rPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRp b24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAotKyAgICAgYXJl IHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29w eXJpZ2h0Ci0rICAgICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAtLT4K LSsKLSs8IS0tIEFNRDY0IHdpdGggQVZYIC0gSW5jbHVkZXMgTGludXgtb25seSBzcGVjaWFsICJy ZWdpc3RlciIuICAtLT4KLSsKLSs8IURPQ1RZUEUgdGFyZ2V0IFNZU1RFTSAiZ2RiLXRhcmdldC5k dGQiPgotKzx0YXJnZXQ+Ci0rICA8YXJjaGl0ZWN0dXJlPmkzODY6eDg2LTY0PC9hcmNoaXRlY3R1 cmU+Ci0rICA8b3NhYmk+R05VL0xpbnV4PC9vc2FiaT4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjY0 Yml0LWNvcmUueG1sIi8+Ci0rICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1zc2UueG1sIi8+Ci0r ICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1saW51eC54bWwiLz4KLSsgIDx4aTppbmNsdWRlIGhy ZWY9IjY0Yml0LWF2eC54bWwiLz4KLSs8L3RhcmdldD4KLS0tLSAuL2dkYi9mZWF0dXJlcy9pMzg2 L2FtZDY0LWF2eC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9n ZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdnguYwkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAw MCArMDIwMAotQEAgLTAsMCArMSwxNjYgQEAKLSsvKiBUSElTIEZJTEUgSVMgR0VORVJBVEVELiAg T3JpZ2luYWw6IGFtZDY0LWF2eC54bWwgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNs dWRlICJvc2FiaS5oIgotKyNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCi0rCi0rc3Ry dWN0IHRhcmdldF9kZXNjICp0ZGVzY19hbWQ2NF9hdng7Ci0rc3RhdGljIHZvaWQKLStpbml0aWFs aXplX3RkZXNjX2FtZDY0X2F2eCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnJl c3VsdCA9IGFsbG9jYXRlX3RhcmdldF9kZXNjcmlwdGlvbiAoKTsKLSsgIHN0cnVjdCB0ZGVzY19m ZWF0dXJlICpmZWF0dXJlOwotKyAgc3RydWN0IHRkZXNjX3R5cGUgKmZpZWxkX3R5cGUsICp0eXBl OwotKwotKyAgc2V0X3RkZXNjX2FyY2hpdGVjdHVyZSAocmVzdWx0LCBiZmRfc2Nhbl9hcmNoICgi aTM4Njp4ODYtNjQiKSk7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJl c3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuY29yZSIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2Ny ZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfZWZsYWdzIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg MSwgIiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOwotKyAgdGRl c2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJBRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDYsICJaRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJT RiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDEwLCAiREYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9G Iik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCAxNywgIlZNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJB QyIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjAsICJWSVAiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCAyMSwgIklEIik7Ci0rCi0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi cmF4IiwgMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInJieCIsIDEsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJyY3giLCAyLCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAicmR4IiwgMywgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzaSIsIDQsIDEsIE5VTEwsIDY0LCAiaW50NjQi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyZGkiLCA1LCAxLCBOVUxMLCA2NCwg ImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJwIiwgNiwgMSwgTlVM TCwgNjQsICJkYXRhX3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzcCIs IDcsIDEsIE5VTEwsIDY0LCAiZGF0YV9wdHIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJyOCIsIDgsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJyOSIsIDksIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJyMTAiLCAxMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxMSIsIDExLCAxLCBOVUxMLCA2NCwgImludDY0Iik7 Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjEyIiwgMTIsIDEsIE5VTEwsIDY0LCAi aW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTMiLCAxMywgMSwgTlVM TCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxNCIsIDE0 LCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi cjE1IiwgMTUsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJyaXAiLCAxNiwgMSwgTlVMTCwgNjQsICJjb2RlX3B0ciIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgImVmbGFncyIsIDE3LCAxLCBOVUxMLCAzMiwgImkzODZfZWZsYWdz Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiY3MiLCAxOCwgMSwgTlVMTCwgMzIs ICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInNzIiwgMTksIDEsIE5V TEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJkcyIsIDIw LCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi ZXMiLCAyMSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgImZzIiwgMjIsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJncyIsIDIzLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAic3QwIiwgMjQsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsK LSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDEiLCAyNSwgMSwgTlVMTCwgODAsICJp Mzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MiIsIDI2LCAxLCBO VUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Qz IiwgMjcsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJzdDQiLCAyOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgInN0NSIsIDI5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q2IiwgMzAsIDEsIE5VTEwsIDgwLCAiaTM4 N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDciLCAzMSwgMSwgTlVM TCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZjdHJs IiwgMzIsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAiZnN0YXQiLCAzMywgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJmdGFnIiwgMzQsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZmlzZWciLCAzNSwgMSwgImZsb2F0IiwgMzIsICJp bnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaW9mZiIsIDM2LCAxLCAiZmxv YXQiLCAzMiwgImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvc2VnIiwg MzcsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJl LCAiZm9vZmYiLCAzOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJmb3AiLCAzOSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsKLSsgIGZl YXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5z c2UiKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaWVlZV9z aW5nbGUiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2NGYiLCBmaWVsZF90 eXBlLCA0KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAi aWVlZV9kb3VibGUiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2MmQiLCBm aWVsZF90eXBlLCAyKTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0 dXJlLCAiaW50OCIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInYxNmk4Iiwg ZmllbGRfdHlwZSwgMTYpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZl YXR1cmUsICJpbnQxNiIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY4aTE2 IiwgZmllbGRfdHlwZSwgOCk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAo ZmVhdHVyZSwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjRp MzIiLCBmaWVsZF90eXBlLCA0KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBl IChmZWF0dXJlLCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2 Mmk2NCIsIGZpZWxkX3R5cGUsIDIpOwotKwotKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91bmlvbiAo ZmVhdHVyZSwgInZlYzEyOCIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZl YXR1cmUsICJ2NGYiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY0X2Zsb2F0IiwgZmll bGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYy ZCIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfZG91YmxlIiwgZmllbGRfdHlwZSk7 Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYxNmk4Iik7Ci0r ICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2MTZfaW50OCIsIGZpZWxkX3R5cGUpOwotKyAgZmll bGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2OGkxNiIpOwotKyAgdGRlc2Nf YWRkX2ZpZWxkICh0eXBlLCAidjhfaW50MTYiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUg PSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRpMzIiKTsKLSsgIHRkZXNjX2FkZF9maWVs ZCAodHlwZSwgInY0X2ludDMyIiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2Nf bmFtZWRfdHlwZSAoZmVhdHVyZSwgInYyaTY0Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUs ICJ2Ml9pbnQ2NCIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5 cGUgKGZlYXR1cmUsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ1aW50 MTI4IiwgZmllbGRfdHlwZSk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdz IChmZWF0dXJlLCAiaTM4Nl9teGNzciIsIDQpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5 cGUsIDAsICJJRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICJERSIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJaRSIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDMsICJPRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDQsICJVRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDUsICJQRSIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJEQVoiKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCA3LCAiSU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA4 LCAiRE0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAiWk0iKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIk9NIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgMTEsICJVTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEy LCAiUE0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNSwgIkZaIik7Ci0rCi0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMCIsIDQwLCAxLCBOVUxMLCAxMjgsICJ2 ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xIiwgNDEsIDEsIE5V TEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTIi LCA0MiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAieG1tMyIsIDQzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ4bW00IiwgNDQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTUiLCA0NSwgMSwgTlVMTCwgMTI4LCAidmVj MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNiIsIDQ2LCAxLCBOVUxM LCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW03Iiwg NDcsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgInhtbTgiLCA0OCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAieG1tOSIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMCIsIDUwLCAxLCBOVUxMLCAxMjgsICJ2ZWMx MjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMSIsIDUxLCAxLCBOVUxM LCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMiIs IDUyLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJ4bW0xMyIsIDUzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNCIsIDU0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNSIsIDU1LCAxLCBOVUxMLCAxMjgsICJ2 ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDU2LCAxLCAi dmVjdG9yIiwgMzIsICJpMzg2X214Y3NyIik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRl X2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuYXZ4Iik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAieW1tMGgiLCA1NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTFoIiwgNTgsIDEsIE5VTEwsIDEyOCwg InVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0yaCIsIDU5LCAx LCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi eW1tM2giLCA2MCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInltbTRoIiwgNjEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW01aCIsIDYyLCAxLCBOVUxMLCAxMjgsICJ1aW50 MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNmgiLCA2MywgMSwgTlVM TCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTdo IiwgNjQsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJ5bW04aCIsIDY1LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAieW1tOWgiLCA2NiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIp OwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEwaCIsIDY3LCAxLCBOVUxMLCAx MjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTFoIiwg NjgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJ5bW0xMmgiLCA2OSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgInltbTEzaCIsIDcwLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7 Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTRoIiwgNzEsIDEsIE5VTEwsIDEy OCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xNWgiLCA3 MiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKwotKyAgdGRlc2NfYW1kNjRfYXZ4ID0gcmVz dWx0OwotK30KLS0tLSAuL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC54bWwJMTk3MC0wMS0w MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0 LWF2eC54bWwJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEs MTYgQEAKLSs8P3htbCB2ZXJzaW9uPSIxLjAiPz4KLSs8IS0tIENvcHlyaWdodCAoQykgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICAgIENvcHlpbmcgYW5kIGRpc3Ry aWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCi0rICAg ICBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRo ZSBjb3B5cmlnaHQKLSsgICAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4g IC0tPgotKwotKzwhLS0gQU1ENjQgd2l0aCBBVlggLS0+Ci0rCi0rPCFET0NUWVBFIHRhcmdldCBT WVNURU0gImdkYi10YXJnZXQuZHRkIj4KLSs8dGFyZ2V0PgotKyAgPGFyY2hpdGVjdHVyZT5pMzg2 Ong4Ni02NDwvYXJjaGl0ZWN0dXJlPgotKyAgPHhpOmluY2x1ZGUgaHJlZj0iNjRiaXQtY29yZS54 bWwiLz4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LXNzZS54bWwiLz4KLSsgIDx4aTppbmNs dWRlIGhyZWY9IjY0Yml0LWF2eC54bWwiLz4KLSs8L3RhcmdldD4KLS0tLSAuL2dkYi9mZWF0dXJl cy9pMzg2L2kzODYtYXZ4LWxpbnV4LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyAuL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LWxpbnV4LmMJMjAxMC0wNC0wMyAy MToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTQ3IEBACi0rLyogVEhJUyBGSUxF IElTIEdFTkVSQVRFRC4gIE9yaWdpbmFsOiBpMzg2LWF2eC1saW51eC54bWwgKi8KLSsKLSsjaW5j bHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJvc2FiaS5oIgotKyNpbmNsdWRlICJ0YXJnZXQtZGVz Y3JpcHRpb25zLmgiCi0rCi0rc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X2F2eF9saW51 eDsKLStzdGF0aWMgdm9pZAotK2luaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnhfbGludXggKHZvaWQp Ci0rewotKyAgc3RydWN0IHRhcmdldF9kZXNjICpyZXN1bHQgPSBhbGxvY2F0ZV90YXJnZXRfZGVz Y3JpcHRpb24gKCk7Ci0rICBzdHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZTsKLSsgIHN0cnVj dCB0ZGVzY190eXBlICpmaWVsZF90eXBlLCAqdHlwZTsKLSsKLSsgIHNldF90ZGVzY19hcmNoaXRl Y3R1cmUgKHJlc3VsdCwgYmZkX3NjYW5fYXJjaCAoImkzODYiKSk7Ci0rCi0rICBzZXRfdGRlc2Nf b3NhYmkgKHJlc3VsdCwgb3NhYmlfZnJvbV90ZGVzY19zdHJpbmcgKCJHTlUvTGludXgiKSk7Ci0r Ci0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2Ri LmkzODYuY29yZSIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVy ZSwgImkzODZfZWZsYWdzIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwg IkNGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDQsICJBRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJaRiIp OwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOwotKyAgdGRlc2NfYWRk X2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5 cGUsIDksICJJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiREYiKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5 cGUsIDE2LCAiUkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywgIlZNIik7 Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOwotKyAgdGRlc2NfYWRk X2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgMjAsICJWSVAiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMSwgIklE Iik7Ci0rCi0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWF4IiwgMCwgMSwgTlVMTCwg MzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVjeCIsIDEsIDEs IE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlZHgi LCAyLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJl LCAiZWJ4IiwgMywgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAo ZmVhdHVyZSwgImVzcCIsIDQsIDEsIE5VTEwsIDMyLCAiZGF0YV9wdHIiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJlYnAiLCA1LCAxLCBOVUxMLCAzMiwgImRhdGFfcHRyIik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZXNpIiwgNiwgMSwgTlVMTCwgMzIsICJpbnQz MiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVkaSIsIDcsIDEsIE5VTEwsIDMy LCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlaXAiLCA4LCAxLCBO VUxMLCAzMiwgImNvZGVfcHRyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWZs YWdzIiwgOSwgMSwgTlVMTCwgMzIsICJpMzg2X2VmbGFncyIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgImNzIiwgMTAsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJzcyIsIDExLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZHMiLCAxMiwgMSwgTlVMTCwgMzIsICJpbnQzMiIp OwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVzIiwgMTMsIDEsIE5VTEwsIDMyLCAi aW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmcyIsIDE0LCAxLCBOVUxM LCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZ3MiLCAxNSwg MSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0 MCIsIDE2LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAic3QxIiwgMTcsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDIiLCAxOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MyIsIDE5LCAxLCBOVUxMLCA4MCwgImkz ODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q0IiwgMjAsIDEsIE5V TEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDUi LCAyMSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInN0NiIsIDIyLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAic3Q3IiwgMjMsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmY3RybCIsIDI0LCAxLCAiZmxvYXQiLCAzMiwg ImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZzdGF0IiwgMjUsIDEsICJm bG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnRhZyIs IDI2LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgImZpc2VnIiwgMjcsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAiZmlvZmYiLCAyOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmb3NlZyIsIDI5LCAxLCAiZmxvYXQiLCAzMiwgImlu dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvb2ZmIiwgMzAsIDEsICJmbG9h dCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9wIiwgMzEs IDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2Zl YXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuc3NlIik7Ci0rICBmaWVsZF90eXBlID0g dGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImllZWVfc2luZ2xlIik7Ci0rICB0ZGVzY19jcmVh dGVfdmVjdG9yIChmZWF0dXJlLCAidjRmIiwgZmllbGRfdHlwZSwgNCk7Ci0rCi0rICBmaWVsZF90 eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImllZWVfZG91YmxlIik7Ci0rICB0ZGVz Y19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjJkIiwgZmllbGRfdHlwZSwgMik7Ci0rCi0rICBm aWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDgiKTsKLSsgIHRkZXNj X2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2MTZpOCIsIGZpZWxkX3R5cGUsIDE2KTsKLSsKLSsg IGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50MTYiKTsKLSsgIHRk ZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2OGkxNiIsIGZpZWxkX3R5cGUsIDgpOwotKwot KyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQzMiIpOwotKyAg dGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY0aTMyIiwgZmllbGRfdHlwZSwgNCk7Ci0r Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDY0Iik7Ci0r ICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjJpNjQiLCBmaWVsZF90eXBlLCAyKTsK LSsKLSsgIHR5cGUgPSB0ZGVzY19jcmVhdGVfdW5pb24gKGZlYXR1cmUsICJ2ZWMxMjgiKTsKLSsg IGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRmIik7Ci0rICB0ZGVz Y19hZGRfZmllbGQgKHR5cGUsICJ2NF9mbG9hdCIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlw ZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2MmQiKTsKLSsgIHRkZXNjX2FkZF9maWVs ZCAodHlwZSwgInYyX2RvdWJsZSIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNj X25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2MTZpOCIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBl LCAidjE2X2ludDgiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90 eXBlIChmZWF0dXJlLCAidjhpMTYiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY4X2lu dDE2IiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVh dHVyZSwgInY0aTMyIik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2NF9pbnQzMiIsIGZp ZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2 Mmk2NCIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfaW50NjQiLCBmaWVsZF90eXBl KTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDEyOCIp OwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWludDEyOCIsIGZpZWxkX3R5cGUpOwotKwot KyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfbXhjc3Ii LCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiSUUiKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCAyLCAiWkUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAzLCAiT0Ui KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAiVUUiKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCA2LCAiREFaIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIklNIik7 Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIkRNIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgMTAsICJPTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiVU0iKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMiwgIlBNIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOwotKwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInhtbTAiLCAzMiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDMzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0yIiwgMzQsIDEsIE5VTEwsIDEyOCwgInZl YzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTMiLCAzNSwgMSwgTlVM TCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNCIs IDM2LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJ4bW01IiwgMzcsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgInhtbTYiLCAzOCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNyIsIDM5LCAxLCBOVUxMLCAxMjgsICJ2ZWMx MjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDQwLCAxLCAidmVj dG9yIiwgMzIsICJpMzg2X214Y3NyIik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2Zl YXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJvcmlnX2VheCIsIDQxLCAxLCBOVUxMLCAzMiwgImludCIpOwotKwot KyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5p Mzg2LmF2eCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBoIiwgNDIsIDEs IE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5 bW0xaCIsIDQzLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVn IChmZWF0dXJlLCAieW1tMmgiLCA0NCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNDUsIDEsIE5VTEwsIDEyOCwgInVpbnQx MjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDQ2LCAxLCBOVUxM LCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNWgi LCA0NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInltbTZoIiwgNDgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7 Ci0rCi0rICB0ZGVzY19pMzg2X2F2eF9saW51eCA9IHJlc3VsdDsKLSt9Ci0tLS0gLi9nZGIvZmVh dHVyZXMvaTM4Ni9pMzg2LWF2eC1saW51eC54bWwJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyAuL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LWxpbnV4LnhtbAkyMDEw LTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxOCBAQAotKzw/eG1s IHZlcnNpb249IjEuMCI/PgotKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRo aXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSsgICAgIGFyZSBwZXJtaXR0 ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAot KyAgICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+Ci0rCi0rPCEt LSBJMzg2IHdpdGggQVZYLSBJbmNsdWRlcyBMaW51eC1vbmx5IHNwZWNpYWwgInJlZ2lzdGVyIi4g IC0tPgotKwotKzwhRE9DVFlQRSB0YXJnZXQgU1lTVEVNICJnZGItdGFyZ2V0LmR0ZCI+Ci0rPHRh cmdldD4KLSsgIDxhcmNoaXRlY3R1cmU+aTM4NjwvYXJjaGl0ZWN0dXJlPgotKyAgPG9zYWJpPkdO VS9MaW51eDwvb3NhYmk+Ci0rICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1jb3JlLnhtbCIvPgot KyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtc3NlLnhtbCIvPgotKyAgPHhpOmluY2x1ZGUgaHJl Zj0iMzJiaXQtbGludXgueG1sIi8+Ci0rICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1hdngueG1s Ii8+Ci0rPC90YXJnZXQ+Ci0tLS0gLi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC5jCTE5NzAt MDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni9p Mzg2LWF2eC5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDE0MiBAQAotKy8qIFRISVMgRklMRSBJUyBHRU5FUkFURUQuICBPcmlnaW5hbDogaTM4Ni1hdngu eG1sICovCi0rCi0rI2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAib3NhYmkuaCIKLSsjaW5j bHVkZSAidGFyZ2V0LWRlc2NyaXB0aW9ucy5oIgotKwotK3N0cnVjdCB0YXJnZXRfZGVzYyAqdGRl c2NfaTM4Nl9hdng7Ci0rc3RhdGljIHZvaWQKLStpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4ICh2 b2lkKQotK3sKLSsgIHN0cnVjdCB0YXJnZXRfZGVzYyAqcmVzdWx0ID0gYWxsb2NhdGVfdGFyZ2V0 X2Rlc2NyaXB0aW9uICgpOwotKyAgc3RydWN0IHRkZXNjX2ZlYXR1cmUgKmZlYXR1cmU7Ci0rICBz dHJ1Y3QgdGRlc2NfdHlwZSAqZmllbGRfdHlwZSwgKnR5cGU7Ci0rCi0rICBzZXRfdGRlc2NfYXJj aGl0ZWN0dXJlIChyZXN1bHQsIGJmZF9zY2FuX2FyY2ggKCJpMzg2IikpOwotKwotKyAgZmVhdHVy ZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LmNvcmUi KTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3MgKGZlYXR1cmUsICJpMzg2X2Vm bGFncyIsIDQpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDAsICJDRiIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICIiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCAyLCAiUEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAi QUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiWkYiKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCA3LCAiU0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCA4LCAiVEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAiSUYi KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIkRGIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgMTEsICJPRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDE0LCAiTlQiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNiwgIlJG Iik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTcsICJWTSIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE4LCAiQUMiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCAxOSwgIlZJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIwLCAi VklQIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjEsICJJRCIpOwotKwotKyAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVheCIsIDAsIDEsIE5VTEwsIDMyLCAiaW50MzIi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlY3giLCAxLCAxLCBOVUxMLCAzMiwg ImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWR4IiwgMiwgMSwgTlVM TCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVieCIsIDMs IDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJl c3AiLCA0LCAxLCBOVUxMLCAzMiwgImRhdGFfcHRyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAiZWJwIiwgNSwgMSwgTlVMTCwgMzIsICJkYXRhX3B0ciIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgImVzaSIsIDYsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlZGkiLCA3LCAxLCBOVUxMLCAzMiwgImludDMyIik7 Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWlwIiwgOCwgMSwgTlVMTCwgMzIsICJj b2RlX3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVmbGFncyIsIDksIDEs IE5VTEwsIDMyLCAiaTM4Nl9lZmxhZ3MiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUs ICJjcyIsIDEwLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAic3MiLCAxMSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgImRzIiwgMTIsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlcyIsIDEzLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnMiLCAxNCwgMSwgTlVMTCwgMzIsICJpbnQz MiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImdzIiwgMTUsIDEsIE5VTEwsIDMy LCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDAiLCAxNiwgMSwg TlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0 MSIsIDE3LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAic3QyIiwgMTgsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDMiLCAxOSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NCIsIDIwLCAxLCBOVUxMLCA4MCwgImkz ODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q1IiwgMjEsIDEsIE5V TEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDYi LCAyMiwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInN0NyIsIDIzLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAiZmN0cmwiLCAyNCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmc3RhdCIsIDI1LCAxLCAiZmxvYXQiLCAzMiwg ImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZ0YWciLCAyNiwgMSwgImZs b2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaXNlZyIs IDI3LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgImZpb2ZmIiwgMjgsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAiZm9zZWciLCAyOSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmb29mZiIsIDMwLCAxLCAiZmxvYXQiLCAzMiwgImlu dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvcCIsIDMxLCAxLCAiZmxvYXQi LCAzMiwgImludCIpOwotKwotKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1 bHQsICJvcmcuZ251LmdkYi5pMzg2LnNzZSIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVk X3R5cGUgKGZlYXR1cmUsICJpZWVlX3NpbmdsZSIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAo ZmVhdHVyZSwgInY0ZiIsIGZpZWxkX3R5cGUsIDQpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNj X25hbWVkX3R5cGUgKGZlYXR1cmUsICJpZWVlX2RvdWJsZSIpOwotKyAgdGRlc2NfY3JlYXRlX3Zl Y3RvciAoZmVhdHVyZSwgInYyZCIsIGZpZWxkX3R5cGUsIDIpOwotKwotKyAgZmllbGRfdHlwZSA9 IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQ4Iik7Ci0rICB0ZGVzY19jcmVhdGVfdmVj dG9yIChmZWF0dXJlLCAidjE2aTgiLCBmaWVsZF90eXBlLCAxNik7Ci0rCi0rICBmaWVsZF90eXBl ID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDE2Iik7Ci0rICB0ZGVzY19jcmVhdGVf dmVjdG9yIChmZWF0dXJlLCAidjhpMTYiLCBmaWVsZF90eXBlLCA4KTsKLSsKLSsgIGZpZWxkX3R5 cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0 ZV92ZWN0b3IgKGZlYXR1cmUsICJ2NGkzMiIsIGZpZWxkX3R5cGUsIDQpOwotKwotKyAgZmllbGRf dHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3Jl YXRlX3ZlY3RvciAoZmVhdHVyZSwgInYyaTY0IiwgZmllbGRfdHlwZSwgMik7Ci0rCi0rICB0eXBl ID0gdGRlc2NfY3JlYXRlX3VuaW9uIChmZWF0dXJlLCAidmVjMTI4Iik7Ci0rICBmaWVsZF90eXBl ID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInY0ZiIpOwotKyAgdGRlc2NfYWRkX2ZpZWxk ICh0eXBlLCAidjRfZmxvYXQiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19u YW1lZF90eXBlIChmZWF0dXJlLCAidjJkIik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2 Ml9kb3VibGUiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBl IChmZWF0dXJlLCAidjE2aTgiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYxNl9pbnQ4 IiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVy ZSwgInY4aTE2Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2OF9pbnQxNiIsIGZpZWxk X3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2NGkz MiIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjRfaW50MzIiLCBmaWVsZF90eXBlKTsK LSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjJpNjQiKTsKLSsg IHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYyX2ludDY0IiwgZmllbGRfdHlwZSk7Ci0rICBmaWVs ZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInVpbnQxMjgiKTsKLSsgIHRkZXNj X2FkZF9maWVsZCAodHlwZSwgInVpbnQxMjgiLCBmaWVsZF90eXBlKTsKLSsKLSsgIGZpZWxkX3R5 cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3MgKGZlYXR1cmUsICJpMzg2X214Y3NyIiwgNCk7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIklFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgMSwgIkRFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwg IlpFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMywgIk9FIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNCwgIlVFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgNSwgIlBFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNiwgIkRB WiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJJTSIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJETSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDksICJaTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiT00i KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIlVNIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgMTIsICJQTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDE1LCAiRloiKTsKLSsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0w IiwgMzIsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInhtbTEiLCAzMywgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAieG1tMiIsIDM0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0zIiwgMzUsIDEsIE5VTEwsIDEyOCwgInZl YzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTQiLCAzNiwgMSwgTlVM TCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNSIs IDM3LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJ4bW02IiwgMzgsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgInhtbTciLCAzOSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAibXhjc3IiLCA0MCwgMSwgInZlY3RvciIsIDMyLCAi aTM4Nl9teGNzciIpOwotKwotKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1 bHQsICJvcmcuZ251LmdkYi5pMzg2LmF2eCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgInltbTBoIiwgNDEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ5bW0xaCIsIDQyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMmgiLCA0MywgMSwgTlVMTCwgMTI4LCAi dWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNDQsIDEs IE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5 bW00aCIsIDQ1LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVn IChmZWF0dXJlLCAieW1tNWgiLCA0NiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTZoIiwgNDcsIDEsIE5VTEwsIDEyOCwgInVpbnQx MjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDQ4LCAxLCBOVUxM LCAxMjgsICJ1aW50MTI4Iik7Ci0rCi0rICB0ZGVzY19pMzg2X2F2eCA9IHJlc3VsdDsKLSt9Ci0t LS0gLi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC54bWwJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LnhtbAkyMDEw LTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxNiBAQAotKzw/eG1s IHZlcnNpb249IjEuMCI/PgotKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRo aXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSsgICAgIGFyZSBwZXJtaXR0 ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAot KyAgICAgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+Ci0rCi0rPCEt LSBJMzg2IHdpdGggQVZYIC0tPgotKwotKzwhRE9DVFlQRSB0YXJnZXQgU1lTVEVNICJnZGItdGFy Z2V0LmR0ZCI+Ci0rPHRhcmdldD4KLSsgIDxhcmNoaXRlY3R1cmU+aTM4NjwvYXJjaGl0ZWN0dXJl PgotKyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtY29yZS54bWwiLz4KLSsgIDx4aTppbmNsdWRl IGhyZWY9IjMyYml0LXNzZS54bWwiLz4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjMyYml0LWF2eC54 bWwiLz4KLSs8L3RhcmdldD4KLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nLmF2eAkxOTcw LTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9DaGFu Z2VMb2cuYXZ4CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDg0IEBACi0rMjAxMC0wMy0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwot KwkqIGxpbnV4LXg4Ni1sb3cuYyAoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFVzZQot KwlJMzg2X1hTVEFURV9TU0VfU0laRSBpbnN0ZWFkIG9mIEkzODZfWFNUQVRFX01BWF9TSVpFLiAg VXNlCi0rCUkzODZfWFNUQVRFX1NJWkUuCi0rCi0rMjAxMC0wMy0wMiAgSC5KLiBMdSAgPGhvbmdq aXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctZnAuYyAoaTM4N19jYWNoZV90b194c2F2ZSk6 IFVwZGF0ZWQuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCSh4ODZfeGNy MCk6IExpa2V3aXNlLgotKwkqIGxpbnV4LXg4Ni1sb3cuYyAoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1 cHBvcnRlZCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDMtMDIgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoaTM4Ni14c3RhdGUubyk6IFJlbW92ZWQu Ci0rCi0rCSogY29uZmlndXJlLnNydiAoc3J2X3RndG9iaik6IFJlbW92ZSBpMzg2LXhzdGF0ZS5v IGZvcgotKwlpWzM0NTY3XTg2LSotbGludXgqIGFuZCB4ODZfNjQtKi1saW51eCouCi0rCi0rCSog aTM4Ny1mcC5jICh4ODZfeGNyMCk6IEluaXRpYWxpemVkIHRvIFhTVEFURV9TU0VfTUFTSy4KLSsJ KHg4Nl94Y3IwX2luaXQpOiBSZW1vdmVkLgotKwotKwkqIGkzODctZnAuaCAoeDg2X3hjcjBfaW5p dCk6IFJlbW92ZWQuCi0rCi0rCSogbGludXgteDg2LWxvdy5jICh4ODZfbGludXhfcHJvY2Vzc19x c3VwcG9ydGVkKTogVXNlCi0rCVhTVEFURV9NQVhfU0laRV9OX09GX0lOVDY0IGFuZCBYU1RBVEVf TUFYX1NJWkUuICBHZXQgeGNyMAotKwlmcm9tIFhTQVZFIGV4dGVuZGVkIHN0YXRlLgotKwotKzIw MTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBNYWtlZmls ZS5pbiAoY2xlYW4pOiBSZXBsYWNlIHJlZy1pMzg2LWxpbnV4LWF2eC5jIHdpdGgKLSsJcmVnLWkz ODYtYXZ4LWxpbnV4LmMuCi0rCShyZWcteDg2LTY0LWF2eC5jKTogRml4ZWQuCi0rCShyZWcteDg2 LTY0LWF2eC1saW51eC5jKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGNvbmZpZ3VyZS5zcnYgKHNydl90Z3RvYmopOiBB ZGQgeHNhdmUtbmF0Lm8gZm9yCi0rCWlbMzQ1NjddODYtKi1saW51eCogYW5kIHg4Nl82NC0qLWxp bnV4Ki4KLSsKLSsyMDEwLTAxLTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogaTM4Ny1mcC5jICh4ODZfc3NlX3VuaXQpOiBSZW5hbWVkIHRvIC4uLgotKwkoeDg2X3Zl Y3Rvcl91bml0KTogVGhpcy4KLSsJKHg4Nl9nZXRfc3NlX3VuaXQpOiBSZW5hbWVkIHRvIC4uLgot KwkoeDg2X2dldF92ZWN0b3JfdW5pdCk6IFRoaXMuCi0rCShpMzg3X2NhY2hlX3RvX2Z4c2F2ZSk6 IFVwZGF0ZWQuCi0rCSogbGludXgteDg2LWxvdy5jICh4ODZfYXJjaF9zZXR1cCk6IExpa2V3aXNl LgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJ KiBpMzg3LWZwLmggKHg4Nl9zc2VfdW5pdCk6IFJlbmFtZWQgdG8gLi4uCi0rCSh4ODZfdmVjdG9y X3VuaXQpOiBUaGlzLgotKwotKzIwMDktMTAtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoY2xlYW4pOiBBbHNvIHJlbW92ZSByZWctaTM4Ni1h dnguYywKLSsJcmVnLWkzODYtYXZ4LWxpbnV4LmMsIHJlZy14ODYtNjQtYXZ4LmMgYW5kIHJlZy14 ODYtNjQtYXZ4LWxpbnV4LmMuCi0rCShyZWctaTM4Ni1hdngubyk6IE5ldyB0YXJnZXQuCi0rCShy ZWctaTM4Ni1hdnguYyk6IExpa2V3aXNlLgotKwkocmVnLWkzODYtYXZ4LWxpbnV4Lm8pOiBMaWtl d2lzZS4KLSsJKHJlZy1pMzg2LWF2eC1saW51eC5jKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0 LWF2eC5vKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0LWF2eC5jKTogTGlrZXdpc2UuCi0rCShy ZWcteDg2LTY0LWF2eC1saW51eC5vKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0LWF2eC1saW51 eC5jKTogTGlrZXdpc2UuCi0rCi0rCSogZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYgKHNydl9yZWdv YmopOiBBZGQgcmVnLWkzODYtYXZ4LWxpbnV4Lm8KLSsJZm9yIGlbMzQ1NjddODYtKi1saW51eCou ICBBZGQgcmVnLXg4Ni02NC1hdngtbGludXgubyBhbmQKLSsJcmVnLWkzODYtYXZ4LWxpbnV4Lm8g Zm9yIHg4Nl82NC0qLWxpbnV4Ki4KLSsKLSsJKiBpMzg3LWZwLmMgKHg4Nl9zc2VfdW5pdCk6IE5l dy4KLSsJKHg4Nl9nZXRfc3NlX3VuaXQpOiBMaWtld2lzZS4KLSsJKGkzODdfY2FjaGVfdG9fZnhz YXZlKTogSGFuZGxlIHg4Nl9zc2VfdW5pdC4gU3VwcG9ydCBmYWtlCi0rCUFWWCByZWdpc3RlcnMu Ci0rCShpMzg3X2Z4c2F2ZV90b19jYWNoZSk6IExpa2V3aXNlLgotKwotKwkqIGkzODctZnAuaCAo eDg2X3NzZV91bml0KTogTmV3LgotKwkoeDg2X2dldF9zc2VfdW5pdCk6IExpa2V3aXNlLgotKwot KwkqIGxpbnV4LXg4Ni1sb3cuYyAoaW5pdF9yZWdpc3RlcnNfaTM4Nl9hdnhfbGludXgpOiBOZXcu Ci0rCShpbml0X3JlZ2lzdGVyc194ODZfNjRfYXZ4X2xpbnV4KTogTGlrZXdpc2UuCi0rCSh4ODZf YXJjaF9zZXR1cCk6IENhbGwgeDg2X2dldF9zc2VfdW5pdCAoKSB0byBoYW5kbGUgeDg2X3NzZV91 bml0LgotLS0tIC4vZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cueGNyCTE5NzAtMDEtMDEgMDE6MDA6 MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZy54Y3IJMjAx MC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMzczIEBACi0rMjAx MC0wMy0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4 Ni1sb3cuYzogRG9uJ3QgaW5jbHVkZSA8dW5pc3RkLmg+LgotKwotKzIwMTAtMDMtMjkgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9s aW51eF91cGRhdGVfeG1sdGFyZ2V0KTogQ2FsbCBwdHJhY2UKLSsJb25seSBvbmNlLgotKwotKzIw MTAtMDMtMjkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14 ODYtbG93LmMgKHVzZV94bWwpOiBOZXcuCi0rCSh4ODZfbGludXhfdXBkYXRlX3htbHRhcmdldCk6 IExpa2V3aXNlLgotKwkoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFVzZSB4ODZfbGlu dXhfdXBkYXRlX3htbHRhcmdldC4KLSsJKHg4Nl9hcmNoX3NldHVwKTogRG9uJ3QgY2FsbCBpbml0 X3JlZ2lzdGVyc19hbWQ2NF9saW51eCwKLSsJaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eC4gIERv bid0IHNldCBnZGJzZXJ2ZXJfeG1sdGFyZ2V0LiAgVXNlCi0rCXg4Nl9saW51eF91cGRhdGVfeG1s dGFyZ2V0LgotKwotKwkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBDYWxsIHRhcmdldF9wcm9j ZXNzX3FzdXBwb3J0ZWQgd2l0aAotKwlOVUxMIHF1ZXJ5IGZpcnN0LgotKwotKzIwMTAtMDMtMjkg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMg KHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBSZXBsYWNlCi0rCXVpbnQ2NF90IHdpdGgg dW5zaWduZWQgbG9uZyBsb25nLgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3Fz dXBwb3J0ZWQpOiBDaGVjawotKwkieG1sUmVnaXN0ZXJzPSIgaW5zdGVhZCBvZiAieG1sUmVnaXN0 ZXJzKyIuCi0rCi0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGxpbnV4LXg4Ni1sb3cuYyAodGFyZ2V0X3JlZ3NldHMpOiBBbHdheXMgdXNlIEVYVEVO REVEX1JFR1MKLSsJd2l0aCBOVF9YODZfWFNUQVRFLgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHhtbHRhcmdl dF9hbWQ2NF9saW51eF9ub194bWwpOiBOZXcuCi0rCSh4bWx0YXJnZXRfaTM4Nl9saW51eF9ub194 bWwpOiBMaWtld2lzZS4KLSsJKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBSZW1vdmUg dXNlX3htbC4gIFVwZGF0ZQotKwlnZGJzZXJ2ZXJfeG1sdGFyZ2V0LgotKwkoeDg2X2FyY2hfc2V0 dXApOiBTZXQgZ2Ric2VydmVyX3htbHRhcmdldCB0bwotKwl4bWx0YXJnZXRfYW1kNjRfbGludXhf bm9feG1sL3htbHRhcmdldF9pMzg2X2xpbnV4X25vX3htbC4KLSsKLSsJKiBzZXJ2ZXIuYyAodXNl X3htbCk6IFJlbW92ZWQuCi0rCShnZXRfZmVhdHVyZXNfeG1sKTogVXBkYXRlZC4KLSsJKGhhbmRs ZV9xdWVyeSk6IERvbid0IGNhbGwgdGFyZ2V0X3Byb2Nlc3NfcXN1cHBvcnRlZCB3aXRoIE5VTEwu Ci0rCi0rCSogc2VydmVyLmggKHVzZV94bWwpOiBSZW1vdmVkLgotKwotKzIwMTAtMDMtMjggIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmM6IElu Y2x1ZGUgPHVuaXN0ZC5oPi4KLSsJKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBVc2Ug Z2V0cGlkLgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBS ZXBsYWNlCi0rCXVuc2lnbmVkIGxvbmcgbG9uZyB3aXRoIHVpbnQ2NF90LgotKwotKzIwMTAtMDMt MjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93 LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBTZXQgdXNlX3htbAotKwl0byAxIGlm IFhNTCBpcyBzdXBwb3J0ZWQuCi0rCi0rMjAxMC0wMy0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBEb24ndCBjaGVjayAi eDg2OnhzdGF0ZT0iLgotKwotKzIwMTAtMDMtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0 ZWQpOiBDaGVjawotKwl4bWxSZWdpc3RlcnMrIGluc3RlYWQgb2YgeDg2PXhtbC4KLSsKLSsJKiBz ZXJ2ZXIuYyAoVVNFX1hNTCk6IERlZmF1bHQgdG8gMC4KLSsJKHVzZV94bWwpOiBJbml0aWFsaXpl IHRvIFVTRV9YTUwuCi0rCi0rMjAxMC0wMy0xMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGkzODctZnAuYyAoaTM4N19jYWNoZV90b194c2F2ZSk6IFJlcGxhY2UgYml0 X0kzODZfWFNUQVRFX1hYWAotKwl3aXRoIEkzODZfWFNUQVRFX1hYWC4KLSsJKGkzODdfeHNhdmVf dG9fY2FjaGUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAzLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTogQ2hl Y2sgYml0X0kzODZfWFNUQVRFX1g4Ny4KLSsJKGkzODdfeHNhdmVfdG9fY2FjaGUpOiBMaWtld2lz ZS4KLSsKLSsyMDEwLTAzLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTogT3B0aW1pemVkLgotKwotKzIwMTAt MDMtMDUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMg KGkzODdfY2FjaGVfdG9feHNhdmUpOiBIYW5kbGUgdXBwZXIgWU1NIHJlZ2lzdGVycy4KLSsJKGkz ODdfeHNhdmVfdG9fY2FjaGUpOiBMaWtld2lzZS4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4 Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBDaGVjayB4ODY9eG1sLgotKwotKzIwMTAtMDIt MTkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkz ODdfY2FjaGVfdG9feHNhdmUpOiBBbHNvIGNoZWNrIHg4NyByZWdpc3RlcnMuCi0rCShpMzg3X3hz YXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCi0rCSogbGludXgteDg2LWxvdy5jOiBJbmNsdWRl IDxzeXMvdWlvLmg+LgotKwkoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFN1cHBvcnQg QVZYIG9ubHkgaWYKLSsJUFRSQUNFX0dFVFJFR1NFVCB3b3Jrcy4KLSsKLSsyMDEwLTAyLTEzICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2Nh Y2hlX3RvX3hzYXZlKTogQ2hlY2sgeDg2X3hjcjAgaW5zdGVhZCBvZgotKwl4ODZfdmVjdG9yX3Vu aXQuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCSh4ODZfdmVjdG9yX3Vu aXQpOiBSZW1vdmVkLgotKwkoeDg2X3ZlY3Rvcl91bml0X2luaXQpOiBMaWtld2lzZS4KLSsJKHg4 Nl94Y3IwKTogTmV3LgotKwkoeDg2X3hjcjBfaW5pdCk6IExpa2V3aXNlLgotKwotKwkqIGkzODct ZnAuaCAoeDg2X3ZlY3Rvcl91bml0KTogUmVtb3ZlZC4KLSsJKHg4Nl92ZWN0b3JfdW5pdF9pbml0 KTogTGlrZXdpc2UuCi0rCSh4ODZfeGNyMCk6IE5ldy4KLSsJKHg4Nl94Y3IwX2luaXQpOiBMaWtl d2lzZS4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0 ZWQpOiBDaGVjayB4ODZfeGNyMAotKwlpbnN0ZWFkIG9mIHg4Nl92ZWN0b3JfdW5pdC4KLSsKLSsy MDEwLTAyLTExICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgt YXJtLWxvdy5jICh0YXJnZXRfcmVnc2V0cyk6IEluaXRpYWxpemUgbnRfdHlwZSB0byAwLgotKwkq IGxpbnV4LWNyaXN2MzItbG93LmMgKHRhcmdldF9yZWdzZXRzKTogTGlrZXdpc2UuCi0rCSogbGlu dXgtbTY4ay1sb3cuYyAodGFyZ2V0X3JlZ3NldHMpOiBMaWtld2lzZS4KLSsJKiBsaW51eC1taXBz LWxvdy5jICh0YXJnZXRfcmVnc2V0cyk6IExpa2V3aXNlLgotKwkqIGxpbnV4LXBwYy1sb3cuYyAo dGFyZ2V0X3JlZ3NldHMpOiBMaWtld2lzZS4KLSsJKiBsaW51eC1zMzkwLWxvdy5jICh0YXJnZXRf cmVnc2V0cyk6IExpa2V3aXNlLgotKwkqIGxpbnV4LXNoLWxvdy5jICh0YXJnZXRfcmVnc2V0cyk6 IExpa2V3aXNlLgotKwkqIGxpbnV4LXNwYXJjLWxvdy5jICh0YXJnZXRfcmVnc2V0cyk6IExpa2V3 aXNlLgotKwkqIGxpbnV4LXh0ZW5zYS1sb3cuYyAodGFyZ2V0X3JlZ3NldHMpOiBMaWtld2lzZS4K LSsKLSsyMDEwLTAyLTExICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog bGludXgtbG93LmMgKHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKTogU2ltcGxpZnkK LSsJbnRfdHlwZS4KLSsJKHJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdp c2UuCi0rCi0rMjAxMC0wMi0xMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwot KwkqIGxpbnV4LWxvdy5jOiBJbmNsdWRlIDxzeXMvdWlvLmg+LgotKwkocmVnc2V0c19mZXRjaF9p bmZlcmlvcl9yZWdpc3RlcnMpOiBTdXBwb3J0IG50X3R5cGUuCi0rCShyZWdzZXRzX3N0b3JlX2lu ZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwotKwkqIGxpbnV4LWxvdy5oIChyZWdzZXRf aW5mbyk6IEFkZCBudF90eXBlLgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYzogSW5jbHVkZSAiZWxm L2NvbW1vbi5oIi4gIERvbid0IGluY2x1ZGUKLSsJIi4uL2NvbmZpZy9pMzg2L25tLWxpbnV4LXhz dGF0ZS5oIi4KLSsJKFBUUkFDRV9HRVRSRUdTRVQpOiBOZXcuCi0rCShQVFJBQ0VfU0VUUkVHU0VU KTogTGlrZXdpc2UuCi0rCSh0YXJnZXRfcmVnc2V0cyk6IEluaXRpYWxpemUgbnRfdHlwZS4KLSsK LSsyMDEwLTAyLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGlu dXgteDg2LWxvdy5jOiBSZXBsYWNlIFBUUkFDRV9HRVRYU1RBVEVSRUdTIHdpdGgKLSsJUFRSQUNF X0dFVFJFR1NFVCBpbiBjb21tZW50cy4KLSsKLSsyMDEwLTAyLTA5ICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgteDg2LWxvdy5jOiBJbmNsdWRlICIuLi9jb25m aWcvaTM4Ni9ubS1saW51eC14c3RhdGUuaCIuCi0rCShQVFJBQ0VfU0VUWFNUQVRFUkVHUyk6IFJl bW92ZWQuCi0rCShQVFJBQ0VfU0VUWFNUQVRFUkVHUyk6IExpa2V3aXNlLgotKwkodGFyZ2V0X3Jl Z3NldHMpOiBVc2UgUFRSQUNFX0dFVFJFR1NFVC9QVFJBQ0VfU0VUUkVHU0VUIGluc3RlYWQKLSsJ b2YgUFRSQUNFX0dFVFhTVEFURVJFR1MvUFRSQUNFX1NFVFhTVEFURVJFR1MuCi0rCSh4ODZfbGlu dXhfcHJvY2Vzc19xc3VwcG9ydGVkKTogQ2hlY2sgUFRSQUNFX0dFVFJFR1NFVCBpbnN0ZWFkCi0r CW9mIFBUUkFDRV9HRVRYU1RBVEVSRUdTLgotKwotKzIwMTAtMDItMDYgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKHg4Nl92ZWN0b3JfdW5pdF9pbml0 KTogUHJvcGVybHkgY2hlY2sgeGNyMC4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51 eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBTZXQgdXNlX3htbAotKwl0byAwIGFuZCByZXR1cm4gZm9y IE5VTEwgcXVlcnkuICBTZXQgdXNlX3htbCB0byAxIGlmIHRoZXJlIGlzCi0rCSJ4ODY6eHN0YXRl PSIgaW4gcVN1cHBvcnRlZCBwYWNrZXQuCi0rCi0rCSogc2VydmVyLmMgKGdldF9mZWF0dXJlc194 bWwpOiBPcHRpbWl6ZWQuCi0rCShoYW5kbGVfcXVlcnkpOiBDYWxsIHRhcmdldF9wcm9jZXNzX3Fz dXBwb3J0ZWQgd2l0aCBOVUxMCi0rCXF1ZXJ5IGZpcnN0LgotKwotKzIwMTAtMDItMDUgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVf dG9feHNhdmUpOiBSZW1vdmUgdW5zaWduZWQgZnJvbSByYXcuCi0rCShpMzg3X3hzYXZlX3RvX2Nh Y2hlKTogUmVtb3ZlIHVuc2lnbmVkIGZyb20gcmF3IGFuZCB4bW0uICBGaXgKLSsJYSB0eXBvLgot KwotKzIwMTAtMDItMDUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBs aW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBTZXQgdXNlX3ht bAotKwl0byAwIGlmIHRoZXJlIGlzIG5vICJ4ODY6eHN0YXRlPSIgaW4gcVN1cHBvcnRlZCBwYWNr ZXQuCi0rCi0rCSogc2VydmVyLmMgKHVzZV94bWwpOiBOZXcuCi0rCShnZXRfZmVhdHVyZXNfeG1s KTogRG9uJ3QgdXNlIFhNTCBmaWxlIGlmIHVzZV94bWwgaXMgMC4KLSsJKGhhbmRsZV9xdWVyeSk6 IEFsd2F5cyBjYWxsIHRhcmdldF9wcm9jZXNzX3FzdXBwb3J0ZWQuCi0rCi0rCSogc2VydmVyLmgg KHVzZV94bWwpOiBOZXcuCi0rCi0rMjAxMC0wMi0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIE1ha2VmaWxlLmluIChjbGVhbik6IFVwZGF0ZWQuCi0rCShpMzg2LWF2 eC5vKTogTmV3LgotKwkoaTM4Ni1hdnguYyk6IExpa2V3aXNlLgotKwkoaTM4Ni1hdngtbGludXgu byk6IExpa2V3aXNlLgotKwkoaTM4Ni1hdngtbGludXguYyk6IExpa2V3aXNlLgotKwkoeDg2LTY0 LWF2eC5vKTogTGlrZXdpc2UuCi0rCSh4ODYtNjQtYXZ4LmMpOiBMaWtld2lzZS4KLSsJKHg4Ni02 NC1hdngtbGludXgubyk6IExpa2V3aXNlLgotKwkoeDg2LTY0LWF2eC1saW51eC5jKTogTGlrZXdp c2UuCi0rCi0rCSogY29uZmlndXJlLnNydiAoc3J2X2kzODZfcmVnb2JqKTogQWRkIGkzODYtYXZ4 Lm8uCi0rCShzcnZfaTM4Nl9saW51eF9yZWdvYmopOiBBZGQgaTM4Ni1hdngtbGludXguby4KLSsJ KHNydl94ODZfNjRfcmVnb2JqKTogQWRkIHg4Ni02NC1hdnguby4KLSsJKHNydl94ODZfNjRfbGlu dXhfcmVnb2JqKTogQWRkIHg4Ni02NC1hdngtbGludXguby4KLSsKLSsyMDEwLTAyLTA1ICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29uZmlndXJlLnNydiAoc3J2X2kz ODZfMzJiaXRfeG1sZmlsZXMpOiBBZGQKLSsJaTM4Ni8zMmJpdC1hdngueG1sLgotKwkoc3J2X2kz ODZfNjRiaXRfeG1sZmlsZXMpOiBBZGQgaTM4Ni82NGJpdC1hdngueG1sLgotKwkoc3J2X2kzODZf eG1sZmlsZXMpOiBBZGQgaTM4Ni9pMzg2LWF2eC54bWwuCi0rCShzcnZfeDg2XzY0X3htbGZpbGVz KTogQWRkIGkzODYveDg2LTY0LWF2eC54bWwuCi0rCShzcnZfaTM4Nl9saW51eF94bWxmaWxlcyk6 IEFkZCBpMzg2L2kzODYtYXZ4LWxpbnV4LnhtbC4KLSsJKHNydl94ODZfNjRfbGludXhfeG1sZmls ZXMpOiBBZGQgaTM4Ni94ODYtNjQtYXZ4LWxpbnV4LnhtbC4KLSsKLSsyMDEwLTAyLTA0ICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgtbG93LmMgKGxpbnV4X3By b2Nlc3NfcXN1cHBvcnRlZCk6IE1ha2UgaXQgdm9pZC4KLSsJKiBsaW51eC14ODYtbG93LmMgKHg4 Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBMaWtld2lzZS4KLSsKLSsJKiBsaW51eC1sb3cu aCAobGludXhfdGFyZ2V0X29wcyk6IE1ha2UgcHJvY2Vzc19xc3VwcG9ydGVkIHZvaWQuCi0rCi0r CSogc2VydmVyLmMgKGhhbmRsZV9xdWVyeSk6IE1ha2UgdGFyZ2V0X3Byb2Nlc3NfcXN1cHBvcnRl ZCB2b2lkLgotKwotKwkqIHRhcmdldC5oICh0YXJnZXRfb3BzKTogTWFrZSBwcm9jZXNzX3FzdXBw b3J0ZWQgdm9pZC4KLSsJKHRhcmdldF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBNYWtlIGl0IHZvaWQu Ci0rCi0rMjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGkzODctZnAuYyAoaTM4N19jYWNoZV90b194c2F2ZSk6IFJlcGxhY2UgeG1tWzMyXSB3aXRoIHJh d1szMl0uCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogT3B0aW1pemUgeHN0YXRlX2J2ID09IDAu Ci0rCi0rMjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGkzODctZnAuYyAoaTM4N19jYWNoZV90b194c2F2ZSk6IFJlbW92ZSBjb2xsZWN0X3JlZ2lzdGVy X3BhcnQuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogUmVtb3ZlIHN1cHBseV9yZWdpc3Rlcl9w YXJ0LgotKwotKwkqIHJlZ2NhY2hlLmMgKHN1cHBseV9yZWdpc3Rlcl9wYXJ0KTogUmVtb3ZlZC4K LSsJKGNvbGxlY3RfcmVnaXN0ZXJfcGFydCk6IExpa2V3aXNlLgotKwkqIHJlZ2NhY2hlLmggKHN1 cHBseV9yZWdpc3Rlcl9wYXJ0KTogTGlrZXdpc2UuCi0rCShjb2xsZWN0X3JlZ2lzdGVyX3BhcnQp OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKHhzdGF0ZS1uYXQubyk6IFJlbmFtZWQgdG8gLi4uCi0r CShpMzg2LXhzdGF0ZS5vKTogVGhpcy4KLSsKLSsJKiBjb25maWd1cmUuc3J2IChzcnZfdGd0b2Jq KTogQWRkIGkzODYteHN0YXRlLm8gaW5zdGVhZCBvZgotKwl4c3RhdGUtbmF0Lm8gZm9yIGlbMzQ1 NjddODYtKi1saW51eCogYW5kIHg4Nl82NC0qLWxpbnV4Ki4KLSsKLSsJKiBpMzg3LWZwLmM6IElu Y2x1ZGUgImkzODYteHN0YXRlLmgiIGluc3RlYWQgb2YgInhzdGF0ZS1uYXQuaCIuCi0rCSogbGlu dXgteDg2LWxvdy5jOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTog QWRkIGFub3RoZXIgbWlzc2luZyBicmVhay4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZl KTogQWRkIHRoZSBtaXNzaW5nIGJyZWFrLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiByZWdjYWNoZS5jIChzdXBwbHlfcmVnaXN0ZXJfcGFy dCk6IENsZWFyIHJlZ2NhY2hlIGlmIGJ1ZiBpcwotKwlOVUxMLgotKwotKzIwMTAtMDItMDIgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4 Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBBbHdheXMKLSsJaW5pdGlhbGl6ZSBzaXplIGFu ZCB4Y3IwLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBpMzg3LWZwLmMgKHg4Nl92ZWN0b3JfdW5pdF9pbml0KTogU3VwcG9ydCBvbmx5IHdo YXQgYm90aCBnZGIKLSsJYW5kIGhvc3Qgc3VwcG9ydC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3Rv X3hzYXZlKTogQ2xlYXIgcGFydCBpbiB2ZWN0b3IgcmVnaXN0ZXJzCi0rCWlmIGl0cyBiaXQgaW4g eHN0YXRfYnYgaXMgemVyby4gIFVwZGF0ZSB4c3RhdF9idiBpZiBuZWVkZWQuCi0rCShpMzg3X3hz YXZlX3RvX2NhY2hlKTogQ2xlYXIgcGFydCBpbiB2ZWN0b3IgcmVnaXN0ZXJzIGlmIGl0cyBiaXQK LSsJaW4geHN0YXRfYnYgaXMgemVyby4KLSsKLSsJKiByZWdjYWNoZS5jIChzdXBwbHlfcmVnaXN0 ZXIpOiBDbGVhciByZWdjYWNoZSBpZiBidWYgaXMgTlVMTC4KLSsKLSsyMDEwLTAyLTAyICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hl X3RvX3hzYXZlKTogUmVtb3ZlIHhjcjAuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdp c2UuCi0rCi0rMjAxMC0wMi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwot KwkqIGkzODctZnAuYyAoeDg2X3ZlY3Rvcl91bml0X2luaXQpOiBVcGRhdGVkLgotKwkqIGkzODct ZnAuaCAoeDg2X3ZlY3Rvcl91bml0X2luaXQpOiBMaWtld2lzZS4KLSsKLSsJKiBsaW51eC1sb3cu YyAobGludXhfdXBkYXRlX3g4Nl94c3RhdGVfc2l6ZSk6IFJlbmFtZWQgdG8gLi4uCi0rCShsaW51 eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBUaGlzLiAgVXBkYXRlZC4KLSsJKGxpbnV4X3RhcmdldF9v cHMpOiBVcGRhdGVkLgotKwotKwkqIGxpbnV4LWxvdy5oIChsaW51eF90YXJnZXRfb3BzKTogUmVw bGFjZSB1cGRhdGVfeDg2X3hzdGF0ZV9zaXplCi0rCXdpdGggcHJvY2Vzc19xc3VwcG9ydGVkLgot KwotKwkqIGxpbnV4LXg4Ni1sb3cuYyAoeDg2X2xpbnV4X3VwZGF0ZV94ODZfeHN0YXRlX3NpemUp OiBSZW5hbWVkCi0rCXRvIC4uLgotKwkoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFRo aXMuICBBc3NlbWJsZSBxU3VwcG9ydGVkIEFDSy4KLSsKLSsJKiBzZXJ2ZXIuYyAoaGFuZGxlX3F1 ZXJ5KTogQ2FsbCB0YXJnZXRfcHJvY2Vzc19xc3VwcG9ydGVkCi0rCWZvciB1bmhhbmRsZWQgcXVl cnkuCi0rCi0rCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBSZXBsYWNlIHVwZGF0ZV94ODZfeHN0 YXRlX3NpemUgd2l0aAotKwlwcm9jZXNzX3FzdXBwb3J0ZWQuCi0rCSh0YXJnZXRfdXBkYXRlX3g4 Nl94c3RhdGVfc2l6ZSk6IFJlbW92ZWQuCi0rCSh0YXJnZXRfcHJvY2Vzc19xc3VwcG9ydGVkKTog TmV3LgotKwotKzIwMTAtMDItMDEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVfdG9feHNhdmUpOiBSZW1vdmUgeHN0YXRlX2J2Lgot KwkoaTM4N194c2F2ZV90b19jYWNoZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDEgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKHg4Nl92ZWN0b3Jf dW5pdF9pbml0KTogQWRkIGFuZCBjaGVjayBzaXplIGFyZ3VtZW50LgotKwotKwkqIGkzODctZnAu aCAoeDg2X3ZlY3Rvcl91bml0KTogUmVtb3ZlIHVua25vd24uCi0rCSh4ODZfdmVjdG9yX3VuaXRf aW5pdCk6IEFkZCBzaXplIGFyZ3VtZW50LgotKwotKwkqIGxpbnV4LWxvdy5jIChsaW51eF91cGRh dGVfeDg2X3hzdGF0ZV9zaXplKTogTmV3LgotKwkobGludXhfdGFyZ2V0X29wcyk6IEFkZCBsaW51 eF91cGRhdGVfeDg2X3hzdGF0ZV9zaXplLgotKwotKwkqIGxpbnV4LWxvdy5oIChsaW51eF90YXJn ZXRfb3BzKTogQWRkIHVwZGF0ZV94ODZfeHN0YXRlX3NpemUuCi0rCi0rCSogbGludXgteDg2LWxv dy5jICh4ODZfdXBkYXRlX3hzdGF0ZXJlZ3NldF9zaXplKTogUmVuYW1lZCB0bwotKwkuLi4KLSsJ KHg4Nl9saW51eF91cGRhdGVfeDg2X3hzdGF0ZV9zaXplKTogVGhpcy4gIFVwZGF0ZWQuCi0rCSh4 ODZfYXJjaF9zZXR1cCk6IERvbid0IGNhbGwgeDg2X3VwZGF0ZV94c3RhdGVyZWdzZXRfc2l6ZS4K LSsJKHRoZV9sb3dfdGFyZ2V0KTogQWRkIHg4Nl9saW51eF91cGRhdGVfeDg2X3hzdGF0ZV9zaXpl LgotKwotKwkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBIYW5kbGUgIng4Njp4c3RhdGU6U0la RSIuCi0rCi0rCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBBZGQgdXBkYXRlX3g4Nl94c3RhdGVf c2l6ZS4KLSsJKHRhcmdldF91cGRhdGVfeDg2X3hzdGF0ZV9zaXplKTogTmV3LgotKwotKzIwMTAt MDEtMzEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMg KGkzODdfY2FjaGVfdG9feHNhdmUpOiBIYW5kbGUgeGNyMCBhbmQgeHN0YXRlX2J2Ci0rCW9ubHkg Zm9yIEFWWCBhbmQgYWJvdmUuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0r Ci0rMjAxMC0wMS0zMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkz ODctZnAuYyAoaTM4N194c2F2ZSk6IEFkZCB4Y3IwIGFuZCB4c3RhdGVfYnYuCi0rCShpMzg3X2Nh Y2hlX3RvX3hzYXZlKTogSGFuZGxlIHhjcjAgYW5kIHhzdGF0ZV9idi4KLSsJKGkzODdfeHNhdmVf dG9fY2FjaGUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTI5ICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jICh4ODZfdmVjdG9yX3VuaXRfaW5pdCk6IFVw ZGF0ZWQuCi0rCSogbGludXgteDg2LWxvdy5jICh4ODZfdXBkYXRlX3hzdGF0ZXJlZ3NldF9zaXpl KTogTGlrZXdpc2UuCi0tLS0gLi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZy54bWwJMTk3MC0wMS0w MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9n LnhtbAkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw2OCBA QAotKzIwMTAtMDItMDggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBs aW51eC14ODYtbG93LmMgKGluaXRfcmVnaXN0ZXJzX2kzODZfbGludXgpOiBVcGRhdGUgY29tbWVu dHMuCi0rCShpbml0X3JlZ2lzdGVyc19hbWQ2NF9saW51eCk6IExpa2V3aXNlLgotKwotKzIwMTAt MDItMDcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5p bjogUmVwbGFjZSB4ODYtNjQgd2l0aCBhbWQ2NC4KLSsKLSsJKiBjb25maWd1cmUuc3J2OiBSZXBs YWNlIHg4Ni02NC94ODZfNjQgd2l0aCBhbWQ2NC4KLSsKLSsJKiBsaW51eC14ODYtbG93LmM6IFJl cGxhY2UgeDg2XzY0IHdpdGggYW1kNjQuCi0rCi0rMjAxMC0wMi0wNCAgSC5KLiBMdSAgPGhvbmdq aXUubHVAaW50ZWwuY29tPgotKwotKwkqIGNvbmZpZ3VyZS5zcnYgKHNydl9pMzg2X3JlZ29iaik6 IE5ldy4KLSsJKHNydl9pMzg2X2xpbnV4X3JlZ29iaik6IExpa2V3aXNlLgotKwkoc3J2X3g4Nl82 NF9yZWdvYmopOiBMaWtld2lzZS4KLSsJKHNydl94ODZfNjRfbGludXhfcmVnb2JqKTogTGlrZXdp c2UuCi0rCShpWzM0NTY3XTg2LSotY3lnd2luKik6IFNldCBzcnZfcmVnb2JqIHRvICRzcnZfaTM4 Nl9yZWdvYmouCi0rCShpWzM0NTY3XTg2LSotbWluZ3czMmNlKik6IExpa2V3aXNlLgotKwkoaVsz NDU2N104Ni0qLW1pbmd3Kik6IExpa2V3aXNlLgotKwkoaVszNDU2N104Ni0qLW50byopOiBMaWtl d2lzZS4KLSsJKGlbMzQ1NjddODYtKi1saW51eCopOiBTZXQgc3J2X3JlZ29iaiB0byAkc3J2X2kz ODZfbGludXhfcmVnb2JqCi0rCWFuZCAkc3J2X3g4Nl82NF9saW51eF9yZWdvYmouCi0rCSh4ODZf NjQtKi1saW51eCopOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA0ICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29uZmlndXJlLnNydiAoc3J2X2kzODZfMzJiaXRfeG1s ZmlsZXMpOiBOZXcuCi0rCShzcnZfaTM4Nl82NGJpdF94bWxmaWxlcyk6IExpa2V3aXNlLgotKwko c3J2X2kzODZfeG1sZmlsZXMpOiBMaWtld2lzZS4KLSsJKHNydl94ODZfNjRfeG1sZmlsZXMpOiBM aWtld2lzZS4KLSsJKHNydl9pMzg2X2xpbnV4X3htbGZpbGVzKTogTGlrZXdpc2UuCi0rCShzcnZf eDg2XzY0X2xpbnV4X3htbGZpbGVzKTogTGlrZXdpc2UuCi0rCShpWzM0NTY3XTg2LSotY3lnd2lu Kik6IFNldCBzcnZfeG1sZmlsZXMgdG8gJHNydl9pMzg2X3htbGZpbGVzLgotKwkoaVszNDU2N104 Ni0qLW1pbmd3MzJjZSopOiBMaWtld2lzZS4KLSsJKGlbMzQ1NjddODYtKi1taW5ndyopOiBMaWtl d2lzZS4KLSsJKGlbMzQ1NjddODYtKi1udG8qKTogTGlrZXdpc2UuCi0rCShpWzM0NTY3XTg2LSot bGludXgqKTogU2V0IHNydl94bWxmaWxlcyB0bwotKwkkc3J2X2kzODZfbGludXhfeG1sZmlsZXMg YW5kICRzcnZfeDg2XzY0X2xpbnV4X3htbGZpbGVzLgotKwkoeDg2XzY0LSotbGludXgqKTogTGlr ZXdpc2UuCi0rCi0rMjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIE1ha2VmaWxlLmluIChjbGVhbik6IFJlcGxhY2UgcmVnLWkzODYuYywgcmVnLXg4Ni02 NC5jLAotKwlyZWctaTM4Ni1saW51eC5jIGFuZCByZWcteDg2LTY0LWxpbnV4LmMgd2l0aCBpMzg2 LmMsIHg4Ni02NC5jLAotKwlpMzg2LWxpbnV4LmMgYW5kIHg4Ni02NC1saW51eC5jLgotKwkocmVn LWkzODYubyk6IFJlbW92ZWQuCi0rCShyZWctaTM4Ni5jKTogTGlrZXdpc2UuCi0rCShyZWctaTM4 Ni1saW51eC5vKTogTGlrZXdpc2UuCi0rCShyZWctaTM4Ni1saW51eC5jKTogTGlrZXdpc2UuCi0r CShyZWcteDg2LTY0Lm8pOiBMaWtld2lzZS4KLSsJKHJlZy14ODYtNjQuYyk6IExpa2V3aXNlLgot KwkocmVnLXg4Ni02NC1saW51eC5vKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0LWxpbnV4LmMp OiBMaWtld2lzZS4KLSsJKGkzODYubyk6IE5ldy4KLSsJKGkzODYuYyk6IExpa2V3aXNlLgotKwko aTM4Ni1saW51eC5vKTogTGlrZXdpc2UuCi0rCShpMzg2LWxpbnV4LmMpOiBMaWtld2lzZS4KLSsJ KHg4Ni02NC5vKTogTGlrZXdpc2UuCi0rCSh4ODYtNjQuYyk6IExpa2V3aXNlLgotKwkoeDg2LTY0 LWxpbnV4Lm8pOiBMaWtld2lzZS4KLSsJKHg4Ni02NC1saW51eC5jKTogTGlrZXdpc2UuCi0rCi0r CSogY29uZmlndXJlLnNydjogUmVwbGFjZSByZWctaTM4Ni5vLCByZWcteDg2LTY0Lm8sCi0rCXJl Zy1pMzg2LWxpbnV4Lm8gYW5kIHJlZy14ODYtNjQtbGludXgubyB3aXRoIGkzODYubywgeDg2LTY0 Lm8sCi0rCWkzODYtbGludXgubyBhbmQgeDg2LTY0LWxpbnV4Lm8uCi0tLS0gLi9nZGIvZ2Ric2Vy dmVyL0NoYW5nZUxvZy54c3RhdGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAK LSsrKyAuL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nLnhzdGF0ZQkyMDEwLTA0LTAzIDIxOjEyOjMy LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw4OSBAQAotKzIwMTAtMDEtMzEgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfeHNhdmUpOiBD b3JyZWN0IGxheW91dC4KLSsKLSsyMDEwLTAxLTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogbGludXgteDg2LWxvdy5jICh4ODZfdXBkYXRlX3hzdGF0ZXJlZ3NldF9z aXplKTogVXNlCi0rCWkzODZfeHN0YXRlLnNpemUuCi0rCi0rMjAxMC0wMS0yNyAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYyAoeDg2X3VwZGF0 ZV94c3RhdGVyZWdzZXRfc2l6ZSk6IENhbGwKLSsJeDg2X3ZlY3Rvcl91bml0X2luaXQgaGVyZS4g VHVybiBvZmYgb3RoZXIgRlAgUFRSQUNFIHJlcXVlc3RzCi0rCW9ubHkgb24gQVZYIGhvc3QuCi0r CSh4ODZfYXJjaF9zZXR1cCk6IERvbid0IGNhbGwgeDg2X3ZlY3Rvcl91bml0X2luaXQgaGVyZS4K LSsKLSsyMDEwLTAxLTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog bGludXgteDg2LWxvdy5jICh4ODZfdXBkYXRlX3hzdGF0ZXJlZ3NldF9zaXplKTogVXBkYXRlCi0r CXNpemUgZm9yIFBUUkFDRV9HRVRYU1RBVEVSRUdTIG9ubHkgaWYgaXQgaXMgc3VwcG9ydGVkLgot KwotKzIwMTAtMDEtMjYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBs aW51eC14ODYtbG93LmMgKHg4Nl91cGRhdGVfeHN0YXRlcmVnc2V0X3NpemUpOiBVc2Ugb25seQot KwlQVFJBQ0VfR0VUWFNUQVRFUkVHUyBpZiBpdCBpcyBzdXBwb3J0ZWQuCi0rCi0rMjAxMC0wMS0y NiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4Ni1sb3cu YyAoeDg2X3VwZGF0ZV94c3RhdGVyZWdzZXRfc2l6ZSk6IEZvciBBVlgsCi0rCW9ubHkgdXNlIFBU UkFDRV9HRVRYU1RBVEVSRUdTLgotKwotKzIwMTAtMDEtMjYgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVfdG9feHNhdmUpOiBGaW5k IHltbTAgZm9yIEFWWC4KLSsJKGkzODdfeHNhdmVfdG9fY2FjaGUpOiBMaWtld2lzZS4KLSsKLSsy MDEwLTAxLTI1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogTWFrZWZp bGUuaW4gKHhzYXZlLW5hdC5vKTogUmVuYW1lZCB0byAuLi4KLSsJKHhzdGF0ZS1uYXQubyk6IFRo aXMuCi0rCi0rCSogY29uZmlndXJlLnNydiAoc3J2X3RndG9iaik6IEFkZCB4c3RhdGUtbmF0Lm8g aW5zdGVhZCBvZgotKwl4c2F2ZS1uYXQubyBmb3IgaVszNDU2N104Ni0qLWxpbnV4KiBhbmQgeDg2 XzY0LSotbGludXgqLgotKwotKwkqIGkzODctZnAuYzogSW5jbHVkZSAieHN0YXRlLW5hdC5oIiBp bnN0ZWFkIG9mICJ4c2F2ZS1uYXQuaCIuCi0rCSogbGludXgteDg2LWxvdy5jOiBMaWtld2lzZS4K LSsKLSsyMDEwLTAxLTIyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog cmVnY2FjaGUuYyAoc3VwcGx5X3JlZ2lzdGVyX3BhcnQpOiBDaGFuZ2Ugc2l6ZSB0byB1bnNpZ25l ZCBpbnQuCi0rCShjb2xsZWN0X3JlZ2lzdGVyX3BhcnQpOiBMaWtld2lzZS4KLSsJKiByZWdjYWNo ZS5oIChzdXBwbHlfcmVnaXN0ZXJfcGFydCk6IExpa2V3aXNlLgotKwkoY29sbGVjdF9yZWdpc3Rl cl9wYXJ0KTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYzogSW5jbHVkZSAieHNhdmUtbmF0Lmgi Ci0rCShQVFJBQ0VfR0VUWFNUQVRFUkVHUyk6IE5ldy4KLSsJKFBUUkFDRV9TRVRYU1RBVEVSRUdT KTogTGlrZXdpc2UuCi0rCSh4ODZfZmlsbF94c3RhdGVyZWdzZXQpOiBMaWtld2lzZS4KLSsJKHg4 Nl9zdG9yZV94c3RhdGVyZWdzZXQpOiBMaWtld2lzZS4KLSsJKHg4Nl91cGRhdGVfeHN0YXRlcmVn c2V0X3NpemUpOiBMaWtld2lzZS4KLSsJKHRhcmdldF9yZWdzZXRzKTogQWRkIFBUUkFDRV9HRVRY U1RBVEVSRUdTIGVudHJ5LgotKwkoeDg2X2FyY2hfc2V0dXApOiBDYWxsIHg4Nl91cGRhdGVfeHN0 YXRlcmVnc2V0X3NpemUuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGNvbmZpZ3VyZS5zcnYgKHNydl90Z3RvYmopOiBBZGQgeHNhdmUtbmF0 Lm8gZm9yCi0rCWlbMzQ1NjddODYtKi1saW51eCogYW5kIHg4Nl82NC0qLWxpbnV4Ki4KLSsKLSsJ KiBpMzg3LWZwLmMgKGkzODdfeHNhdmUpOiBOZXcuCi0rCShpMzg3X2NhY2hlX3RvX3hzYXZlKTog TGlrZXdpc2UuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCSh4ODZfdmVj dG9yX3VuaXQpOiBMaWtld2lzZS4KLSsJKHg4Nl92ZWN0b3JfdW5pdF9pbml0KTogTGlrZXdpc2Uu Ci0rCSogMzg3LWZwLmggKGkzODdfY2FjaGVfdG9feHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdf eHNhdmVfdG9fY2FjaGUpOiBMaWtld2lzZS4KLSsJKHg4Nl92ZWN0b3JfdW5pdCk6IExpa2V3aXNl LgotKwkoeDg2X3ZlY3Rvcl91bml0X2luaXQpOiBMaWtld2lzZS4KLSsJKiByZWdjYWNoZS5jIChz dXBwbHlfcmVnaXN0ZXJfcGFydCk6IExpa2V3aXNlLgotKwkoY29sbGVjdF9yZWdpc3Rlcl9wYXJ0 KTogTGlrZXdpc2UuCi0rCSogcmVnY2FjaGUuaCAoc3VwcGx5X3JlZ2lzdGVyX3BhcnQpOiBMaWtl d2lzZS4KLSsJKGNvbGxlY3RfcmVnaXN0ZXJfcGFydCk6IExpa2V3aXNlLgotKwotKwkqIGxpbnV4 LXg4Ni1sb3cuYyAoeDg2X2FyY2hfc2V0dXApOiBDYWxsIHg4Nl92ZWN0b3JfdW5pdF9pbml0Lgot KwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBN YWtlZmlsZS5pbiAoeHNhdmUtbmF0Lm8pOiBOZXcuCi0tLS0gLi9nZGIvZ2Ric2VydmVyL01ha2Vm aWxlLmluCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvZ2Ri c2VydmVyL01ha2VmaWxlLmluCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1A QCAtMjE3LDYgKzIxNyw4IEBAIGNsZWFuOgotIAlybSAtZiBwb3dlcnBjLWlzYTIwNS12c3g2NGwu YwotIAlybSAtZiBzMzkwLWxpbnV4MzIuYyBzMzkwLWxpbnV4NjQuYyBzMzkweC1saW51eDY0LmMK LSAJcm0gLWYgeG1sLWJ1aWx0aW4uYyBzdGFtcC14bWwKLSsJcm0gLWYgaTM4Ni1hdnguYyBpMzg2 LWF2eC1saW51eC5jCi0rCXJtIC1mIGFtZDY0LWF2eC5jIGFtZDY0LWF2eC1saW51eC5jCi0gCi0g bWFpbnRhaW5lci1jbGVhbiByZWFsY2xlYW4gZGlzdGNsZWFuOiBjbGVhbgotIAlybSAtZiBubS5o IHRtLmggeG0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggY29uZmlnLmxvZwotQEAg LTM1MSw2ICszNTMsMTIgQEAgaTM4Ni5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9p MwotIGkzODYtbGludXgubyA6IGkzODYtbGludXguYyAkKHJlZ2RlZl9oKQotIGkzODYtbGludXgu YyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1saW51eC5kYXQgJChyZWdkYXRf c2gpCi0gCSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2 L2kzODYtbGludXguZGF0IGkzODYtbGludXguYwotK2kzODYtYXZ4Lm8gOiBpMzg2LWF2eC5jICQo cmVnZGVmX2gpCi0raTM4Ni1hdnguYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4 Ni1hdnguZGF0ICQocmVnZGF0X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIp Ly4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWF2eC5kYXQgaTM4Ni1hdnguYwotK2kzODYtYXZ4LWxp bnV4Lm8gOiBpMzg2LWF2eC1saW51eC5jICQocmVnZGVmX2gpCi0raTM4Ni1hdngtbGludXguYyA6 ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbGludXguZGF0ICQocmVnZGF0 X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4 Ni9pMzg2LWF2eC1saW51eC5kYXQgaTM4Ni1hdngtbGludXguYwotIHJlZy1pYTY0Lm8gOiByZWct aWE2NC5jICQocmVnZGVmX2gpCi0gcmVnLWlhNjQuYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRz L3JlZy1pYTY0LmRhdCAkKHJlZ2RhdF9zaCkKLSAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3Jj ZGlyKS8uLi9yZWdmb3JtYXRzL3JlZy1pYTY0LmRhdCByZWctaWE2NC5jCi1AQCAtNDM4LDYgKzQ0 NiwxMiBAQCBhbWQ2NC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hCi0gYW1kNjQt bGludXgubyA6IGFtZDY0LWxpbnV4LmMgJChyZWdkZWZfaCkKLSBhbWQ2NC1saW51eC5jIDogJChz cmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1saW51eC5kYXQgJChyZWdkYXRfc2gpCi0g CSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0 LWxpbnV4LmRhdCBhbWQ2NC1saW51eC5jCi0rYW1kNjQtYXZ4Lm8gOiBhbWQ2NC1hdnguYyAkKHJl Z2RlZl9oKQotK2FtZDY0LWF2eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2 NC1hdnguZGF0ICQocmVnZGF0X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIp Ly4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdnguZGF0IGFtZDY0LWF2eC5jCi0rYW1kNjQtYXZ4 LWxpbnV4Lm8gOiBhbWQ2NC1hdngtbGludXguYyAkKHJlZ2RlZl9oKQotK2FtZDY0LWF2eC1saW51 eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbGludXguZGF0ICQo cmVnZGF0X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1h dHMvaTM4Ni9hbWQ2NC1hdngtbGludXguZGF0IGFtZDY0LWF2eC1saW51eC5jCi0gcmVnLXh0ZW5z YS5vIDogcmVnLXh0ZW5zYS5jICQocmVnZGVmX2gpCi0gcmVnLXh0ZW5zYS5jIDogJChzcmNkaXIp Ly4uL3JlZ2Zvcm1hdHMvcmVnLXh0ZW5zYS5kYXQgJChyZWdkYXRfc2gpCi0gCSQoU0hFTEwpICQo cmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWcteHRlbnNhLmRhdCByZWcteHRl bnNhLmMKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgkyMDEwLTA0LTAzIDIwOjU5 OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2CTIw MTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjIsMTcgKzIyLDE3IEBACi0g IyBEZWZhdWx0IGhvc3Rpb19sYXN0X2Vycm9yIGltcGxlbWVudGF0aW9uCi0gc3J2X2hvc3Rpb19l cnJfb2Jqcz0iaG9zdGlvLWVycm5vLm8iCi0gCi0tc3J2X2kzODZfcmVnb2JqPWkzODYubwotLXNy dl9pMzg2X2xpbnV4X3JlZ29iaj1pMzg2LWxpbnV4Lm8KLS1zcnZfYW1kNjRfcmVnb2JqPWFtZDY0 Lm8KLS1zcnZfYW1kNjRfbGludXhfcmVnb2JqPWFtZDY0LWxpbnV4Lm8KLStzcnZfaTM4Nl9yZWdv Ymo9ImkzODYubyBpMzg2LWF2eC5vIgotK3Nydl9pMzg2X2xpbnV4X3JlZ29iaj0iaTM4Ni1saW51 eC5vIGkzODYtYXZ4LWxpbnV4Lm8iCi0rc3J2X2FtZDY0X3JlZ29iaj0iYW1kNjQubyB4ODYtNjQt YXZ4Lm8iCi0rc3J2X2FtZDY0X2xpbnV4X3JlZ29iaj0iYW1kNjQtbGludXgubyBhbWQ2NC1hdngt bGludXgubyIKLSAKLS1zcnZfaTM4Nl8zMmJpdF94bWxmaWxlcz0iaTM4Ni8zMmJpdC1jb3JlLnht bCBpMzg2LzMyYml0LXNzZS54bWwiCi0tc3J2X2kzODZfNjRiaXRfeG1sZmlsZXM9ImkzODYvNjRi aXQtY29yZS54bWwgaTM4Ni82NGJpdC1zc2UueG1sIgotLXNydl9pMzg2X3htbGZpbGVzPSJpMzg2 L2kzODYueG1sICRzcnZfaTM4Nl8zMmJpdF94bWxmaWxlcyIKLS1zcnZfYW1kNjRfeG1sZmlsZXM9 ImkzODYvYW1kNjQueG1sICRzcnZfaTM4Nl82NGJpdF94bWxmaWxlcyIKLS1zcnZfaTM4Nl9saW51 eF94bWxmaWxlcz0iaTM4Ni9pMzg2LWxpbnV4LnhtbCBpMzg2LzMyYml0LWxpbnV4LnhtbCAkc3J2 X2kzODZfMzJiaXRfeG1sZmlsZXMiCi0tc3J2X2FtZDY0X2xpbnV4X3htbGZpbGVzPSJpMzg2L2Ft ZDY0LWxpbnV4LnhtbCBpMzg2LzY0Yml0LWxpbnV4LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmls ZXMiCi0rc3J2X2kzODZfMzJiaXRfeG1sZmlsZXM9ImkzODYvMzJiaXQtY29yZS54bWwgaTM4Ni8z MmJpdC1zc2UueG1sIGkzODYvMzJiaXQtYXZ4LnhtbCIKLStzcnZfaTM4Nl82NGJpdF94bWxmaWxl cz0iaTM4Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LXNzZS54bWwgaTM4Ni82NGJpdC1hdngu eG1sIgotK3Nydl9pMzg2X3htbGZpbGVzPSJpMzg2L2kzODYueG1sIGkzODYvaTM4Ni1hdngueG1s ICRzcnZfaTM4Nl8zMmJpdF94bWxmaWxlcyIKLStzcnZfYW1kNjRfeG1sZmlsZXM9ImkzODYvYW1k NjQueG1sIGkzODYvYW1kNjQtYXZ4LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMiCi0rc3J2 X2kzODZfbGludXhfeG1sZmlsZXM9ImkzODYvaTM4Ni1saW51eC54bWwgaTM4Ni9pMzg2LWF2eC1s aW51eC54bWwgaTM4Ni8zMmJpdC1saW51eC54bWwgJHNydl9pMzg2XzMyYml0X3htbGZpbGVzIgot K3Nydl9hbWQ2NF9saW51eF94bWxmaWxlcz0iaTM4Ni9hbWQ2NC1saW51eC54bWwgaTM4Ni9hbWQ2 NC1hdngtbGludXgueG1sIGkzODYvNjRiaXQtbGludXgueG1sICRzcnZfaTM4Nl82NGJpdF94bWxm aWxlcyIKLSAKLSAjIElucHV0IGlzIHRha2VuIGZyb20gdGhlICIke3RhcmdldH0iIHZhcmlhYmxl LgotIAotLS0tIC4vZ2RiL2dkYnNlcnZlci9pMzg3LWZwLmMJMjAxMC0wMS0yMCAyMzo1NTozOC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1mcC5jCTIwMTAtMDQtMDMg MjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTksNiArMTksNyBAQAotIAotICNpbmNsdWRl ICJzZXJ2ZXIuaCIKLSAjaW5jbHVkZSAiaTM4Ny1mcC5oIgotKyNpbmNsdWRlICJpMzg2LXhzdGF0 ZS5oIgotIAotIGludCBudW1feG1tX3JlZ2lzdGVycyA9IDg7Ci0gCi1AQCAtNzIsNiArNzMsNDYg QEAgc3RydWN0IGkzODdfZnhzYXZlIHsKLSAgIHVuc2lnbmVkIGNoYXIgeG1tX3NwYWNlWzI1Nl07 Ci0gfTsKLSAKLStzdHJ1Y3QgaTM4N194c2F2ZSB7Ci0rICAvKiBBbGwgdGhlc2UgYXJlIG9ubHkg c2l4dGVlbiBiaXRzLCBwbHVzIHBhZGRpbmcsIGV4Y2VwdCBmb3IgZm9wICh3aGljaAotKyAgICAg aXMgb25seSBlbGV2ZW4gYml0cyksIGFuZCBmb29mZiAvIGZpb2ZmICh3aGljaCBhcmUgMzIgYml0 cyBlYWNoKS4gICovCi0rICB1bnNpZ25lZCBzaG9ydCBmY3RybDsKLSsgIHVuc2lnbmVkIHNob3J0 IGZzdGF0OwotKyAgdW5zaWduZWQgc2hvcnQgZnRhZzsKLSsgIHVuc2lnbmVkIHNob3J0IGZvcDsK LSsgIHVuc2lnbmVkIGludCBmaW9mZjsKLSsgIHVuc2lnbmVkIHNob3J0IGZpc2VnOwotKyAgdW5z aWduZWQgc2hvcnQgcGFkMTsKLSsgIHVuc2lnbmVkIGludCBmb29mZjsKLSsgIHVuc2lnbmVkIHNo b3J0IGZvc2VnOwotKyAgdW5zaWduZWQgc2hvcnQgcGFkMTI7Ci0rCi0rICB1bnNpZ25lZCBpbnQg bXhjc3I7Ci0rICB1bnNpZ25lZCBpbnQgbXhjc3JfbWFzazsKLSsKLSsgIC8qIFNwYWNlIGZvciBl aWdodCA4MC1iaXQgRlAgdmFsdWVzIGluIDEyOC1iaXQgc3BhY2VzLiAgKi8KLSsgIHVuc2lnbmVk IGNoYXIgc3Rfc3BhY2VbMTI4XTsKLSsKLSsgIC8qIFNwYWNlIGZvciBlaWdodCAxMjgtYml0IFhN TSB2YWx1ZXMsIG9yIDE2IG9uIHg4Ni02NC4gICovCi0rICB1bnNpZ25lZCBjaGFyIHhtbV9zcGFj ZVsyNTZdOwotKwotKyAgdW5zaWduZWQgY2hhciByZXNlcnZlZDFbNDhdOwotKwotKyAgLyogVGhl IGV4dGVuZGVkIGNvbnRyb2wgcmVnaXN0ZXIgMCAodGhlIFhGRUFUVVJFX0VOQUJMRURfTUFTSwot KyAgICAgcmVnaXN0ZXIpLiAgKi8KLSsgIHVuc2lnbmVkIGxvbmcgbG9uZyB4Y3IwOwotKwotKyAg dW5zaWduZWQgY2hhciByZXNlcnZlZDJbNDBdOwotKwotKyAgLyogVGhlIFhTVEFURV9CViBiaXQg dmVjdG9yLiAgKi8KLSsgIHVuc2lnbmVkIGxvbmcgbG9uZyB4c3RhdGVfYnY7Ci0rCi0rICB1bnNp Z25lZCBjaGFyIHJlc2VydmVkM1s1Nl07Ci0rCi0rICAvKiBTcGFjZSBmb3IgZWlnaHQgdXBwZXIg MTI4LWJpdCBZTU0gdmFsdWVzLCBvciAxNiBvbiB4ODYtNjQuICAqLwotKyAgdW5zaWduZWQgY2hh ciB5bW1oX3NwYWNlWzI1Nl07Ci0rfTsKLSsKLSB2b2lkCi0gaTM4N19jYWNoZV90b19mc2F2ZSAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQotIHsKLUBAIC0xOTksNiArMjQw LDEyOCBAQCBpMzg3X2NhY2hlX3RvX2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyCi0gICBmcC0+ Zm9zZWcgPSB2YWw7Ci0gfQotIAotK3ZvaWQKLStpMzg3X2NhY2hlX3RvX3hzYXZlIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYpCi0rewotKyAgc3RydWN0IGkzODdfeHNhdmUg KmZwID0gKHN0cnVjdCBpMzg3X3hzYXZlICopIGJ1ZjsKLSsgIGludCBpOwotKyAgdW5zaWduZWQg bG9uZyB2YWwsIHZhbDI7Ci0rICB1bnNpZ25lZCBpbnQgY2xlYXJfYnY7Ci0rICB1bnNpZ25lZCBs b25nIGxvbmcgeHN0YXRlX2J2ID0gMDsKLSsgIGNoYXIgcmF3WzE2XTsKLSsgIGNoYXIgKnA7Ci0r Ci0rICAvKiBUaGUgc3VwcG9ydGVkIGJpdHMgaW4gYHhzdGF0X2J2JyBhcmUgMSBieXRlLiAgQ2xl YXIgcGFydCBpbgotKyAgICAgdmVjdG9yIHJlZ2lzdGVycyBpZiBpdHMgYml0IGluIHhzdGF0X2J2 IGlzIHplcm8uICAqLwotKyAgY2xlYXJfYnYgPSAofmZwLT54c3RhdGVfYnYpICYgeDg2X3hjcjA7 Ci0rCi0rICAvKiBDbGVhciBwYXJ0IGluIHg4NyBhbmQgdmVjdG9yIHJlZ2lzdGVycyBpZiBpdHMg Yml0IGluIHhzdGF0X2J2IGlzCi0rICAgICB6ZXJvLiAgKi8KLSsgIGlmIChjbGVhcl9idikKLSsg ICAgewotKyAgICAgIGlmICgoY2xlYXJfYnYgJiBJMzg2X1hTVEFURV9YODcpKQotKwlmb3IgKGkg PSAwOyBpIDwgODsgaSsrKQotKwkgIG1lbXNldCAoKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0p ICsgaSAqIDE2LCAwLCAxMCk7Ci0rCi0rICAgICAgaWYgKChjbGVhcl9idiAmIEkzODZfWFNUQVRF X1NTRSkpCi0rCWZvciAoaSA9IDA7IGkgPCBudW1feG1tX3JlZ2lzdGVyczsgaSsrKSAKLSsJICBt ZW1zZXQgKCgoY2hhciAqKSAmZnAtPnhtbV9zcGFjZVswXSkgKyBpICogMTYsIDAsIDE2KTsKLSsK LSsgICAgICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJZm9yIChpID0gMDsg aSA8IG51bV94bW1fcmVnaXN0ZXJzOyBpKyspIAotKwkgIG1lbXNldCAoKChjaGFyICopICZmcC0+ eW1taF9zcGFjZVswXSkgKyBpICogMTYsIDAsIDE2KTsKLSsgICAgfQotKwotKyAgLyogQ2hlY2sg aWYgYW55IHg4NyByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKyAgaWYgKCh4ODZfeGNyMCAm IEkzODZfWFNUQVRFX1g4NykpCi0rICAgIHsKLSsgICAgICBpbnQgc3QwX3JlZ251bSA9IGZpbmRf cmVnbm8gKCJzdDAiKTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQotKwl7Ci0r CSAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGkgKyBzdDBfcmVnbnVtLCByYXcpOwotKwkg IHAgPSAoKGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTY7Ci0rCSAgaWYgKG1lbWNt cCAocmF3LCBwLCAxMCkpCi0rCSAgICB7Ci0rCSAgICAgIHhzdGF0ZV9idiB8PSBJMzg2X1hTVEFU RV9YODc7Ci0rCSAgICAgIG1lbWNweSAocCwgcmF3LCAxMCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAg fQotKwotKyAgLyogQ2hlY2sgaWYgYW55IFNTRSByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwot KyAgaWYgKCh4ODZfeGNyMCAmIEkzODZfWFNUQVRFX1NTRSkpCi0rICAgIHsKLSsgICAgICBpbnQg eG1tMF9yZWdudW0gPSBmaW5kX3JlZ25vICgieG1tMCIpOwotKwotKyAgICAgIGZvciAoaSA9IDA7 IGkgPCBudW1feG1tX3JlZ2lzdGVyczsgaSsrKSAKLSsJewotKwkgIGNvbGxlY3RfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBpICsgeG1tMF9yZWdudW0sIHJhdyk7Ci0rCSAgcCA9ICgoY2hhciAqKSAmZnAt PnhtbV9zcGFjZVswXSkgKyBpICogMTY7Ci0rCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0r CSAgICB7Ci0rCSAgICAgIHhzdGF0ZV9idiB8PSBJMzg2X1hTVEFURV9TU0U7Ci0rCSAgICAgIG1l bWNweSAocCwgcmF3LCAxNik7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgLyogQ2hlY2sg aWYgYW55IEFWWCByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKyAgaWYgKCh4ODZfeGNyMCAm IEkzODZfWFNUQVRFX0FWWCkpCi0rICAgIHsKLSsgICAgICBpbnQgeW1tMGhfcmVnbnVtID0gZmlu ZF9yZWdubyAoInltbTBoIik7Ci0rCi0rICAgICAgZm9yIChpID0gMDsgaSA8IG51bV94bW1fcmVn aXN0ZXJzOyBpKyspIAotKwl7Ci0rCSAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGkgKyB5 bW0waF9yZWdudW0sIHJhdyk7Ci0rCSAgcCA9ICgoY2hhciAqKSAmZnAtPnltbWhfc3BhY2VbMF0p ICsgaSAqIDE2OwotKwkgIGlmIChtZW1jbXAgKHJhdywgcCwgMTYpKQotKwkgICAgewotKwkgICAg ICB4c3RhdGVfYnYgfD0gSTM4Nl9YU1RBVEVfQVZYOwotKwkgICAgICBtZW1jcHkgKHAsIHJhdywg MTYpOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIFVwZGF0ZSB0aGUgY29ycmVzcG9u ZGluZyBiaXRzIGluIHhzdGF0ZV9idiBpZiBhbnkgU1NFL0FWWAotKyAgICAgcmVnaXN0ZXJzIGFy ZSBjaGFuZ2VkLiAgKi8KLSsgIGZwLT54c3RhdGVfYnYgfD0geHN0YXRlX2J2OwotKwotKyAgY29s bGVjdF9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0r ICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2Zm KTsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJteGNzciIsICZmcC0+ bXhjc3IpOwotKwotKyAgLyogVGhpcyBvbmUncyAxMSBiaXRzLi4uICovCi0rICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9wIiwgJnZhbDIpOwotKyAgZnAtPmZvcCA9ICh2 YWwyICYgMHg3RkYpIHwgKGZwLT5mb3AgJiAweEY4MDApOwotKwotKyAgLyogU29tZSByZWdpc3Rl cnMgYXJlIDE2LWJpdC4gICovCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiZmN0cmwiLCAmdmFsKTsKLSsgIGZwLT5mY3RybCA9IHZhbDsKLSsKLSsgIGNvbGxlY3RfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2YWwpOwotKyAgZnAtPmZzdGF0ID0g dmFsOwotKwotKyAgLyogQ29udmVydCB0byB0aGUgc2ltcGxpZmVkIHRhZyBmb3JtIHN0b3JlZCBp biBmeHNhdmUgZGF0YS4gICovCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hl LCAiZnRhZyIsICZ2YWwpOwotKyAgdmFsICY9IDB4RkZGRjsKLSsgIHZhbDIgPSAwOwotKyAgZm9y IChpID0gNzsgaSA+PSAwOyBpLS0pCi0rICAgIHsKLSsgICAgICBpbnQgdGFnID0gKHZhbCA+PiAo aSAqIDIpKSAmIDM7Ci0rCi0rICAgICAgaWYgKHRhZyAhPSAzKQotKwl2YWwyIHw9ICgxIDw8IGkp OwotKyAgICB9Ci0rICBmcC0+ZnRhZyA9IHZhbDI7Ci0rCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5 X25hbWUgKHJlZ2NhY2hlLCAiZmlzZWciLCAmdmFsKTsKLSsgIGZwLT5maXNlZyA9IHZhbDsKLSsK LSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOwot KyAgZnAtPmZvc2VnID0gdmFsOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gaTM4N19mdGFnIChzdHJ1 Y3QgaTM4N19meHNhdmUgKmZwLCBpbnQgcmVnbm8pCi0gewotQEAgLTI5NiwzICs0NTksMTA3IEBA IGkzODdfZnhzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKLSAgIHZhbCA9IChmcC0+ Zm9wKSAmIDB4N0ZGOwotICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9w IiwgJnZhbCk7Ci0gfQotKwotK3ZvaWQKLStpMzg3X3hzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpCi0rewotKyAgc3RydWN0IGkzODdfeHNh dmUgKmZwID0gKHN0cnVjdCBpMzg3X3hzYXZlICopIGJ1ZjsKLSsgIHN0cnVjdCBpMzg3X2Z4c2F2 ZSAqZnhwID0gKHN0cnVjdCBpMzg3X2Z4c2F2ZSAqKSBidWY7Ci0rICBpbnQgaSwgdG9wOwotKyAg dW5zaWduZWQgbG9uZyB2YWw7Ci0rICB1bnNpZ25lZCBpbnQgY2xlYXJfYnY7Ci0rICBjaGFyICpw OwotKwotKyAgLyogVGhlIHN1cHBvcnRlZCBiaXRzIGluIGB4c3RhdF9idicgYXJlIDEgYnl0ZS4g IENsZWFyIHBhcnQgaW4KLSsgICAgIHZlY3RvciByZWdpc3RlcnMgaWYgaXRzIGJpdCBpbiB4c3Rh dF9idiBpcyB6ZXJvLiAgKi8KLSsgIGNsZWFyX2J2ID0gKH5mcC0+eHN0YXRlX2J2KSAmIHg4Nl94 Y3IwOwotKwotKyAgLyogQ2hlY2sgaWYgYW55IHg4NyByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAq LwotKyAgaWYgKCh4ODZfeGNyMCAmIEkzODZfWFNUQVRFX1g4NykpCi0rICAgIHsKLSsgICAgICBp bnQgc3QwX3JlZ251bSA9IGZpbmRfcmVnbm8gKCJzdDAiKTsKLSsKLSsgICAgICBpZiAoKGNsZWFy X2J2ICYgSTM4Nl9YU1RBVEVfWDg3KSkKLSsJcCA9IE5VTEw7Ci0rICAgICAgZWxzZQotKwlwID0g KGNoYXIgKikgYnVmOwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCi0rCXsKLSsJ ICBpZiAocCkKLSsJICAgIHAgPSAoKGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTY7 Ci0rCSAgc3VwcGx5X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHN0MF9yZWdudW0sIHApOwotKwl9 Ci0rICAgIH0KLSsKLSsgIGlmICgoeDg2X3hjcjAgJiBJMzg2X1hTVEFURV9TU0UpKQotKyAgICB7 Ci0rICAgICAgaW50IHhtbTBfcmVnbnVtID0gZmluZF9yZWdubyAoInhtbTAiKTsKLSsKLSsgICAg ICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfU1NFKSkKLSsJcCA9IE5VTEw7Ci0rICAgICAg ZWxzZQotKwlwID0gKGNoYXIgKikgYnVmOwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1f eG1tX3JlZ2lzdGVyczsgaSsrKQotKwl7Ci0rCSAgaWYgKHApCi0rCSAgICBwID0gKChjaGFyICop ICZmcC0+eG1tX3NwYWNlWzBdKSArIGkgKiAxNjsKLSsJICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2Nh Y2hlLCBpICsgeG1tMF9yZWdudW0sIHApOwotKwl9Ci0rICAgIH0KLSsKLSsgIGlmICgoeDg2X3hj cjAgJiBJMzg2X1hTVEFURV9BVlgpKQotKyAgICB7Ci0rICAgICAgaW50IHltbTBoX3JlZ251bSA9 IGZpbmRfcmVnbm8gKCJ5bW0waCIpOwotKwotKyAgICAgIGlmICgoY2xlYXJfYnYgJiBJMzg2X1hT VEFURV9BVlgpKQotKwlwID0gTlVMTDsKLSsgICAgICBlbHNlCi0rCXAgPSAoY2hhciAqKSBidWY7 Ci0rCi0rICAgICAgZm9yIChpID0gMDsgaSA8IG51bV94bW1fcmVnaXN0ZXJzOyBpKyspCi0rCXsK LSsJICBpZiAocCkKLSsJICAgIHAgPSAoKGNoYXIgKikgJmZwLT55bW1oX3NwYWNlWzBdKSArIGkg KiAxNjsKLSsJICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpICsgeW1tMGhfcmVnbnVtLCBw KTsKLSsJfQotKyAgICB9Ci0rCi0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJmaW9mZiIsICZmcC0+ZmlvZmYpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgIm14Y3NyIiwgJmZwLT5teGNzcik7Ci0rCi0rICAvKiBTb21lIHJlZ2lzdGVycyBh cmUgMTYtYml0LiAgKi8KLSsgIHZhbCA9IGZwLT5mY3RybCAmIDB4RkZGRjsKLSsgIHN1cHBseV9y ZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZjdHJsIiwgJnZhbCk7Ci0rCi0rICB2YWwgPSBm cC0+ZnN0YXQgJiAweEZGRkY7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUs ICJmc3RhdCIsICZ2YWwpOwotKwotKyAgLyogR2VuZXJhdGUgdGhlIGZvcm0gb2YgZnRhZyBkYXRh IHRoYXQgR0RCIGV4cGVjdHMuICAqLwotKyAgdG9wID0gKGZwLT5mc3RhdCA+PiAxMSkgJiAweDc7 Ci0rICB2YWwgPSAwOwotKyAgZm9yIChpID0gNzsgaSA+PSAwOyBpLS0pCi0rICAgIHsKLSsgICAg ICBpbnQgdGFnOwotKyAgICAgIGlmIChmcC0+ZnRhZyAmICgxIDw8IGkpKQotKwl0YWcgPSBpMzg3 X2Z0YWcgKGZ4cCwgKGkgKyA4IC0gdG9wKSAlIDgpOwotKyAgICAgIGVsc2UKLSsJdGFnID0gMzsK LSsgICAgICB2YWwgfD0gdGFnIDw8ICgyICogaSk7Ci0rICAgIH0KLSsgIHN1cHBseV9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKLSsKLSsgIHZhbCA9IGZwLT5maXNl ZyAmIDB4RkZGRjsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpc2Vn IiwgJnZhbCk7Ci0rCi0rICB2YWwgPSBmcC0+Zm9zZWcgJiAweEZGRkY7Ci0rICBzdXBwbHlfcmVn aXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOwotKwotKyAgdmFsID0gKGZw LT5mb3ApICYgMHg3RkY7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJm b3AiLCAmdmFsKTsKLSt9Ci0rCi0rLyogRGVmYXVsdCB0byBTU0UuICAqLwotK3Vuc2lnbmVkIGxv bmcgbG9uZyB4ODZfeGNyMCA9IEkzODZfWFNUQVRFX1NTRV9NQVNLOwotLS0tIC4vZ2RiL2dkYnNl cnZlci9pMzg3LWZwLmgJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAu L2dkYi9nZGJzZXJ2ZXIvaTM4Ny1mcC5oCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICsw MjAwCi1AQCAtMjYsNiArMjYsMTEgQEAgdm9pZCBpMzg3X2ZzYXZlX3RvX2NhY2hlIChzdHJ1Y3Qg cmVnY2FjaAotIHZvaWQgaTM4N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIHZvaWQgKmJ1Zik7Ci0gdm9pZCBpMzg3X2Z4c2F2ZV90b19jYWNoZSAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgY29uc3Qgdm9pZCAqYnVmKTsKLSAKLSt2b2lkIGkzODdfY2FjaGVf dG9feHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1Zik7Ci0rdm9pZCBp Mzg3X3hzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lk ICpidWYpOwotKwotK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgeDg2X3hjcjA7Ci0rCi0gZXh0 ZXJuIGludCBudW1feG1tX3JlZ2lzdGVyczsKLSAKLSAjZW5kaWYgLyogSTM4N19GUF9IICovCi0t LS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFybS1sb3cuYwkyMDEwLTAyLTAxIDE3OjEzOjE2LjAw MDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1hcm0tbG93LmMJMjAxMC0w NC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNTQsMTYgKzM1NCwxNiBAQCBhcm1f YXJjaF9zZXR1cCAodm9pZCkKLSB9Ci0gCi0gc3RydWN0IHJlZ3NldF9pbmZvIHRhcmdldF9yZWdz ZXRzW10gPSB7Ci0tICB7IFBUUkFDRV9HRVRSRUdTLCBQVFJBQ0VfU0VUUkVHUywgMTggKiA0LAot KyAgeyBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NFVFJFR1MsIDAsIDE4ICogNCwKLSAgICAgR0VO RVJBTF9SRUdTLAotICAgICBhcm1fZmlsbF9ncmVnc2V0LCBhcm1fc3RvcmVfZ3JlZ3NldCB9LAot LSAgeyBQVFJBQ0VfR0VUV01NWFJFR1MsIFBUUkFDRV9TRVRXTU1YUkVHUywgMTYgKiA4ICsgNiAq IDQsCi0rICB7IFBUUkFDRV9HRVRXTU1YUkVHUywgUFRSQUNFX1NFVFdNTVhSRUdTLCAwLCAxNiAq IDggKyA2ICogNCwKLSAgICAgRVhURU5ERURfUkVHUywKLSAgICAgYXJtX2ZpbGxfd21teHJlZ3Nl dCwgYXJtX3N0b3JlX3dtbXhyZWdzZXQgfSwKLS0gIHsgUFRSQUNFX0dFVFZGUFJFR1MsIFBUUkFD RV9TRVRWRlBSRUdTLCAzMiAqIDggKyA0LAotKyAgeyBQVFJBQ0VfR0VUVkZQUkVHUywgUFRSQUNF X1NFVFZGUFJFR1MsIDAsIDMyICogOCArIDQsCi0gICAgIEVYVEVOREVEX1JFR1MsCi0gICAgIGFy bV9maWxsX3ZmcHJlZ3NldCwgYXJtX3N0b3JlX3ZmcHJlZ3NldCB9LAotLSAgeyAwLCAwLCAtMSwg LTEsIE5VTEwsIE5VTEwgfQotKyAgeyAwLCAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotIH07 Ci0gCi0gc3RydWN0IGxpbnV4X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPSB7Ci0tLS0gLi9n ZGIvZ2Ric2VydmVyL2xpbnV4LWNyaXN2MzItbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAw MDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpc3YzMi1sb3cuYwkyMDEw LTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM2NSw5ICszNjUsOSBAQCBjcmlz X3N0b3JlX2dyZWdzZXQgKGNvbnN0IHZvaWQgKmJ1ZikKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcg ZWxmX2dyZWdzZXRfdFtjcmlzX251bV9yZWdzXTsKLSAKLSBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFy Z2V0X3JlZ3NldHNbXSA9IHsKLS0gIHsgUFRSQUNFX0dFVFJFR1MsIFBUUkFDRV9TRVRSRUdTLCBz aXplb2YgKGVsZl9ncmVnc2V0X3QpLAotKyAgeyBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NFVFJF R1MsIDAsIHNpemVvZiAoZWxmX2dyZWdzZXRfdCksCi0gICAgIEdFTkVSQUxfUkVHUywgY3Jpc19m aWxsX2dyZWdzZXQsIGNyaXNfc3RvcmVfZ3JlZ3NldCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5V TEwsIE5VTEwgfQotKyAgeyAwLCAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotIH07Ci0gCi0g c3RydWN0IGxpbnV4X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPSB7Ci0tLS0gLi9nZGIvZ2Ri c2VydmVyL2xpbnV4LWxvdy5jCTIwMTAtMDMtMDYgMDE6MTI6NTcuMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTAtMDQtMDMgMjE6MTk6MTQuMDAwMDAw MDAwICswMjAwCi1AQCAtMzksNiArMzksNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5j bHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL3Zmcy5oPgotKyNpbmNsdWRlIDxzeXMv dWlvLmg+Ci0gI2lmbmRlZiBFTEZNQUcwCi0gLyogRG9uJ3QgaW5jbHVkZSA8bGludXgvZWxmLmg+ IGhlcmUuICBJZiBpdCBnb3QgaW5jbHVkZWQgYnkgZ2RiX3Byb2Nfc2VydmljZS5oCi0gICAgdGhl biBFTEZNQUcwIHdpbGwgaGF2ZSBiZWVuIGRlZmluZWQuICBJZiBpdCBkaWRuJ3QgZ2V0IGluY2x1 ZGVkIGJ5Ci1AQCAtMjI4MSwxNCArMjI4MiwxNSBAQCByZWdzZXRzX2ZldGNoX2luZmVyaW9yX3Jl Z2lzdGVycyAoc3RydWN0Ci0gICBzdHJ1Y3QgcmVnc2V0X2luZm8gKnJlZ3NldDsKLSAgIGludCBz YXdfZ2VuZXJhbF9yZWdzID0gMDsKLSAgIGludCBwaWQ7Ci0rICBzdHJ1Y3QgaW92ZWMgaW92Owot IAotICAgcmVnc2V0ID0gdGFyZ2V0X3JlZ3NldHM7Ci0gCi0gICBwaWQgPSBsd3BpZF9vZiAoZ2V0 X3RocmVhZF9sd3AgKGN1cnJlbnRfaW5mZXJpb3IpKTsKLSAgIHdoaWxlIChyZWdzZXQtPnNpemUg Pj0gMCkKLSAgICAgewotLSAgICAgIHZvaWQgKmJ1ZjsKLS0gICAgICBpbnQgcmVzOwotKyAgICAg IHZvaWQgKmJ1ZiwgKmRhdGE7Ci0rICAgICAgaW50IG50X3R5cGUsIHJlczsKLSAKLSAgICAgICBp ZiAocmVnc2V0LT5zaXplID09IDAgfHwgZGlzYWJsZWRfcmVnc2V0c1tyZWdzZXQgLSB0YXJnZXRf cmVnc2V0c10pCi0gCXsKLUBAIC0yMjk3LDEwICsyMjk5LDIxIEBAIHJlZ3NldHNfZmV0Y2hfaW5m ZXJpb3JfcmVnaXN0ZXJzIChzdHJ1Y3QKLSAJfQotIAotICAgICAgIGJ1ZiA9IHhtYWxsb2MgKHJl Z3NldC0+c2l6ZSk7Ci0rCi0rICAgICAgbnRfdHlwZSA9IHJlZ3NldC0+bnRfdHlwZTsKLSsgICAg ICBpZiAobnRfdHlwZSkKLSsJewotKwkgIGlvdi5pb3ZfYmFzZSA9IGJ1ZjsKLSsJICBpb3YuaW92 X2xlbiA9IHJlZ3NldC0+c2l6ZTsKLSsJICBkYXRhID0gKHZvaWQgKikgJmlvdjsKLSsJfQotKyAg ICAgIGVsc2UKLSsJZGF0YSA9IGJ1ZjsKLSsKLSAjaWZuZGVmIF9fc3BhcmNfXwotLSAgICAgIHJl cyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCAwLCBidWYpOwotKyAgICAgIHJl cyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBudF90eXBlLCBkYXRhKTsKLSAj ZWxzZQotLSAgICAgIHJlcyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBidWYs IDApOwotKyAgICAgIHJlcyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBkYXRh LCBudF90eXBlKTsKLSAjZW5kaWYKLSAgICAgICBpZiAocmVzIDwgMCkKLSAJewotQEAgLTIzMzgs MTQgKzIzNTEsMTUgQEAgcmVnc2V0c19zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdAot ICAgc3RydWN0IHJlZ3NldF9pbmZvICpyZWdzZXQ7Ci0gICBpbnQgc2F3X2dlbmVyYWxfcmVncyA9 IDA7Ci0gICBpbnQgcGlkOwotKyAgc3RydWN0IGlvdmVjIGlvdjsKLSAKLSAgIHJlZ3NldCA9IHRh cmdldF9yZWdzZXRzOwotIAotICAgcGlkID0gbHdwaWRfb2YgKGdldF90aHJlYWRfbHdwIChjdXJy ZW50X2luZmVyaW9yKSk7Ci0gICB3aGlsZSAocmVnc2V0LT5zaXplID49IDApCi0gICAgIHsKLS0g ICAgICB2b2lkICpidWY7Ci0tICAgICAgaW50IHJlczsKLSsgICAgICB2b2lkICpidWYsICpkYXRh OwotKyAgICAgIGludCBudF90eXBlLCByZXM7Ci0gCi0gICAgICAgaWYgKHJlZ3NldC0+c2l6ZSA9 PSAwIHx8IGRpc2FibGVkX3JlZ3NldHNbcmVnc2V0IC0gdGFyZ2V0X3JlZ3NldHNdKQotIAl7Ci1A QCAtMjM1OCwxMCArMjM3MiwyMSBAQCByZWdzZXRzX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAo c3RydWN0Ci0gICAgICAgLyogRmlyc3QgZmlsbCB0aGUgYnVmZmVyIHdpdGggdGhlIGN1cnJlbnQg cmVnaXN0ZXIgc2V0IGNvbnRlbnRzLAotIAkgaW4gY2FzZSB0aGVyZSBhcmUgYW55IGl0ZW1zIGlu IHRoZSBrZXJuZWwncyByZWdzZXQgdGhhdCBhcmUKLSAJIG5vdCBpbiBnZGJzZXJ2ZXIncyByZWdj YWNoZS4gICovCi0rCi0rICAgICAgbnRfdHlwZSA9IHJlZ3NldC0+bnRfdHlwZTsKLSsgICAgICBp ZiAobnRfdHlwZSkKLSsJewotKwkgIGlvdi5pb3ZfYmFzZSA9IGJ1ZjsKLSsJICBpb3YuaW92X2xl biA9IHJlZ3NldC0+c2l6ZTsKLSsJICBkYXRhID0gKHZvaWQgKikgJmlvdjsKLSsJfQotKyAgICAg IGVsc2UKLSsJZGF0YSA9IGJ1ZjsKLSsKLSAjaWZuZGVmIF9fc3BhcmNfXwotLSAgICAgIHJlcyA9 IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCAwLCBidWYpOwotKyAgICAgIHJlcyA9 IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBudF90eXBlLCBkYXRhKTsKLSAjZWxz ZQotLSAgICAgIHJlcyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBidWYsIDAp OwotKyAgICAgIHJlcyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCAmaW92LCBk YXRhKTsKLSAjZW5kaWYKLSAKLSAgICAgICBpZiAocmVzID09IDApCi1AQCAtMjM3MSw5ICsyMzk2 LDkgQEAgcmVnc2V0c19zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdAotIAotIAkgIC8q IE9ubHkgbm93IGRvIHdlIHdyaXRlIHRoZSByZWdpc3RlciBzZXQuICAqLwotICNpZm5kZWYgX19z cGFyY19fCi0tCSAgcmVzID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBwaWQsIDAsIGJ1 Zik7Ci0rCSAgcmVzID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBwaWQsIG50X3R5cGUs IGRhdGEpOwotICNlbHNlCi0tCSAgcmVzID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBw aWQsIGJ1ZiwgMCk7Ci0rCSAgcmVzID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBwaWQs IGRhdGEsIG50X3R5cGUpOwotICNlbmRpZgotIAl9Ci0gCi1AQCAtMzQzNCw2ICszNDU5LDEzIEBA IGxpbnV4X2NvcmVfb2ZfdGhyZWFkIChwdGlkX3QgcHRpZCkKLSAgIHJldHVybiBjb3JlOwotIH0K LSAKLStzdGF0aWMgdm9pZAotK2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCAoY29uc3QgY2hhciAq cXVlcnkpCi0rewotKyAgaWYgKHRoZV9sb3dfdGFyZ2V0LnByb2Nlc3NfcXN1cHBvcnRlZCAhPSBO VUxMKQotKyAgICB0aGVfbG93X3RhcmdldC5wcm9jZXNzX3FzdXBwb3J0ZWQgKHF1ZXJ5KTsKLSt9 Ci0rCi0gc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X3RhcmdldF9vcHMgPSB7Ci0gICBs aW51eF9jcmVhdGVfaW5mZXJpb3IsCi0gICBsaW51eF9hdHRhY2gsCi1AQCAtMzQ3Nyw3ICszNTA5 LDggQEAgc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X3RhcmdldF9vcAotICNlbHNlCi0g ICBOVUxMLAotICNlbmRpZgotLSAgbGludXhfY29yZV9vZl90aHJlYWQKLSsgIGxpbnV4X2NvcmVf b2ZfdGhyZWFkLAotKyAgbGludXhfcHJvY2Vzc19xc3VwcG9ydGVkCi0gfTsKLSAKLSBzdGF0aWMg dm9pZAotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuaAkyMDEwLTAxLTIwIDIzOjU1OjM4 LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuaAkyMDEwLTA0 LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM1LDYgKzM1LDkgQEAgZW51bSByZWdz ZXRfdHlwZSB7Ci0gc3RydWN0IHJlZ3NldF9pbmZvCi0gewotICAgaW50IGdldF9yZXF1ZXN0LCBz ZXRfcmVxdWVzdDsKLSsgIC8qIElmIE5UX1RZUEUgaXNuJ3QgMCwgaXQgd2lsbCBiZSBwYXNzZWQg dG8gcHRyYWNlIGFzIHRoZSAzcmQKLSsgICAgIGFyZ3VtZW50IGFuZCB0aGUgNHRoIGFyZ3VtZW50 IHNob3VsZCBiZSAiY29uc3Qgc3RydWN0IGlvdmVjICoiLiAgKi8KLSsgIGludCBudF90eXBlOwot ICAgaW50IHNpemU7Ci0gICBlbnVtIHJlZ3NldF90eXBlIHR5cGU7Ci0gICByZWdzZXRfZmlsbF9m dW5jIGZpbGxfZnVuY3Rpb247Ci1AQCAtMTExLDYgKzExNCw5IEBAIHN0cnVjdCBsaW51eF90YXJn ZXRfb3BzCi0gCi0gICAvKiBIb29rIHRvIGNhbGwgcHJpb3IgdG8gcmVzdW1pbmcgYSB0aHJlYWQu ICAqLwotICAgdm9pZCAoKnByZXBhcmVfdG9fcmVzdW1lKSAoc3RydWN0IGx3cF9pbmZvICopOwot KwotKyAgLyogSG9vayB0byBzdXBwb3J0IHRhcmdldCBzcGVjaWZpYyBxU3VwcG9ydGVkLiAgKi8K LSsgIHZvaWQgKCpwcm9jZXNzX3FzdXBwb3J0ZWQpIChjb25zdCBjaGFyICopOwotIH07Ci0gCi0g ZXh0ZXJuIHN0cnVjdCBsaW51eF90YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0OwotLS0tIC4vZ2Ri L2dkYnNlcnZlci9saW51eC1tNjhrLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LW02OGstbG93LmMJMjAxMC0wNC0wMyAy MToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTIsMTQgKzExMiwxNCBAQCBtNjhrX3N0b3Jl X2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gCi0gc3RydWN0IHJlZ3NldF9pbmZvIHRh cmdldF9yZWdzZXRzW10gPSB7Ci0gI2lmZGVmIEhBVkVfUFRSQUNFX0dFVFJFR1MKLS0gIHsgUFRS QUNFX0dFVFJFR1MsIFBUUkFDRV9TRVRSRUdTLCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotKyAg eyBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NFVFJFR1MsIDAsIHNpemVvZiAoZWxmX2dyZWdzZXRf dCksCi0gICAgIEdFTkVSQUxfUkVHUywKLSAgICAgbTY4a19maWxsX2dyZWdzZXQsIG02OGtfc3Rv cmVfZ3JlZ3NldCB9LAotLSAgeyBQVFJBQ0VfR0VURlBSRUdTLCBQVFJBQ0VfU0VURlBSRUdTLCBz aXplb2YgKGVsZl9mcHJlZ3NldF90KSwKLSsgIHsgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNFX1NF VEZQUkVHUywgMCwgc2l6ZW9mIChlbGZfZnByZWdzZXRfdCksCi0gICAgIEZQX1JFR1MsCi0gICAg IG02OGtfZmlsbF9mcHJlZ3NldCwgbTY4a19zdG9yZV9mcHJlZ3NldCB9LAotICNlbmRpZiAvKiBI QVZFX1BUUkFDRV9HRVRSRUdTICovCi0tICB7IDAsIDAsIC0xLCAtMSwgTlVMTCwgTlVMTCB9Ci0r ICB7IDAsIDAsIDAsIC0xLCAtMSwgTlVMTCwgTlVMTCB9Ci0gfTsKLSAKLSBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBtNjhrX2JyZWFrcG9pbnRbXSA9IHsgMHg0RSwgMHg0RiB9OwotLS0tIC4v Z2RiL2dkYnNlcnZlci9saW51eC1taXBzLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAw MDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LW1pcHMtbG93LmMJMjAxMC0wNC0w MyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNDMsMTIgKzM0MywxMiBAQCBtaXBzX3N0 b3JlX2ZwcmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gCi0gc3RydWN0IHJlZ3NldF9pbmZv IHRhcmdldF9yZWdzZXRzW10gPSB7Ci0gI2lmZGVmIEhBVkVfUFRSQUNFX0dFVFJFR1MKLS0gIHsg UFRSQUNFX0dFVFJFR1MsIFBUUkFDRV9TRVRSRUdTLCAzOCAqIDgsIEdFTkVSQUxfUkVHUywKLSsg IHsgUFRSQUNFX0dFVFJFR1MsIFBUUkFDRV9TRVRSRUdTLCAwLCAzOCAqIDgsIEdFTkVSQUxfUkVH UywKLSAgICAgbWlwc19maWxsX2dyZWdzZXQsIG1pcHNfc3RvcmVfZ3JlZ3NldCB9LAotLSAgeyBQ VFJBQ0VfR0VURlBSRUdTLCBQVFJBQ0VfU0VURlBSRUdTLCAzMyAqIDgsIEZQX1JFR1MsCi0rICB7 IFBUUkFDRV9HRVRGUFJFR1MsIFBUUkFDRV9TRVRGUFJFR1MsIDAsIDMzICogOCwgRlBfUkVHUywK LSAgICAgbWlwc19maWxsX2ZwcmVnc2V0LCBtaXBzX3N0b3JlX2ZwcmVnc2V0IH0sCi0gI2VuZGlm IC8qIEhBVkVfUFRSQUNFX0dFVFJFR1MgKi8KLS0gIHsgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxM IH0KLSsgIHsgMCwgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotIHN0cnVjdCBs aW51eF90YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0ID0gewotLS0tIC4vZ2RiL2dkYnNlcnZlci9s aW51eC1wcGMtbG93LmMJMjAxMC0wMS0yMSAyMzoxMDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAu L2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAw MDAwICswMjAwCi1AQCAtNTkzLDE0ICs1OTMsMTQgQEAgc3RydWN0IHJlZ3NldF9pbmZvIHRhcmdl dF9yZWdzZXRzW10gPSB7Ci0gICAgICBmZXRjaCB0aGVtIGV2ZXJ5IHRpbWUsIGJ1dCBzdGlsbCBm YWxsIGJhY2sgdG8gUFRSQUNFX1BFRUtVU0VSIGZvciB0aGUKLSAgICAgIGdlbmVyYWwgcmVnaXN0 ZXJzLiAgU29tZSBrZXJuZWxzIHN1cHBvcnQgdGhlc2UsIGJ1dCBub3QgdGhlIG5ld2VyCi0gICAg ICBQUENfUFRSQUNFX0dFVFJFR1MuICAqLwotLSAgeyBQVFJBQ0VfR0VUVlNYUkVHUywgUFRSQUNF X1NFVFZTWFJFR1MsIFNJWkVPRl9WU1hSRUdTLCBFWFRFTkRFRF9SRUdTLAotKyAgeyBQVFJBQ0Vf R0VUVlNYUkVHUywgUFRSQUNFX1NFVFZTWFJFR1MsIDAsIFNJWkVPRl9WU1hSRUdTLCBFWFRFTkRF RF9SRUdTLAotICAgcHBjX2ZpbGxfdnN4cmVnc2V0LCBwcGNfc3RvcmVfdnN4cmVnc2V0IH0sCi0g ICB7IFBUUkFDRV9HRVRWUlJFR1MsIFBUUkFDRV9TRVRWUlJFR1MsIFNJWkVPRl9WUlJFR1MsIEVY VEVOREVEX1JFR1MsCi0gICAgIHBwY19maWxsX3ZycmVnc2V0LCBwcGNfc3RvcmVfdnJyZWdzZXQg fSwKLS0gIHsgUFRSQUNFX0dFVEVWUlJFR1MsIFBUUkFDRV9TRVRFVlJSRUdTLCAzMiAqIDQgKyA4 ICsgNCwgRVhURU5ERURfUkVHUywKLSsgIHsgUFRSQUNFX0dFVEVWUlJFR1MsIFBUUkFDRV9TRVRF VlJSRUdTLCAwLCAzMiAqIDQgKyA4ICsgNCwgRVhURU5ERURfUkVHUywKLSAgICAgcHBjX2ZpbGxf ZXZycmVnc2V0LCBwcGNfc3RvcmVfZXZycmVnc2V0IH0sCi0tICB7IDAsIDAsIDAsIEdFTkVSQUxf UkVHUywgcHBjX2ZpbGxfZ3JlZ3NldCwgTlVMTCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEws IE5VTEwgfQotKyAgeyAwLCAwLCAwLCAwLCBHRU5FUkFMX1JFR1MsIHBwY19maWxsX2dyZWdzZXQs IE5VTEwgfSwKLSsgIHsgMCwgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotIHN0 cnVjdCBsaW51eF90YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0ID0gewotLS0tIC4vZ2RiL2dkYnNl cnZlci9saW51eC1zMzkwLWxvdy5jCTIwMTAtMDEtMjEgMjA6MjY6NDkuMDAwMDAwMDAwICswMTAw Ci0rKysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXMzOTAtbG93LmMJMjAxMC0wNC0wMyAyMToxMjoz Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODEsOCArMTgxLDggQEAgc3RhdGljIHZvaWQgczM5MF9m aWxsX2dyZWdzZXQgKHN0cnVjdCByZQotIH0KLSAKLSBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0 X3JlZ3NldHNbXSA9IHsKLS0gIHsgMCwgMCwgMCwgR0VORVJBTF9SRUdTLCBzMzkwX2ZpbGxfZ3Jl Z3NldCwgTlVMTCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotKyAgeyAwLCAw LCAwLCAwLCBHRU5FUkFMX1JFR1MsIHMzOTBfZmlsbF9ncmVnc2V0LCBOVUxMIH0sCi0rICB7IDAs IDAsIDAsIC0xLCAtMSwgTlVMTCwgTlVMTCB9Ci0gfTsKLSAKLSAKLS0tLSAuL2dkYi9nZGJzZXJ2 ZXIvbGludXgtc2gtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtc2gtbG93LmMJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xMDQsOCArMTA0LDggQEAgc3RhdGljIHZvaWQgc2hfZmlsbF9ncmVn c2V0IChzdHJ1Y3QgcmVnYwotIH0KLSAKLSBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3Nl dHNbXSA9IHsKLS0gIHsgMCwgMCwgMCwgR0VORVJBTF9SRUdTLCBzaF9maWxsX2dyZWdzZXQsIE5V TEwgfSwKLS0gIHsgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSsgIHsgMCwgMCwgMCwgMCwg R0VORVJBTF9SRUdTLCBzaF9maWxsX2dyZWdzZXQsIE5VTEwgfSwKLSsgIHsgMCwgMCwgMCwgLTEs IC0xLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotIHN0cnVjdCBsaW51eF90YXJnZXRfb3BzIHRoZV9s b3dfdGFyZ2V0ID0gewotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1zcGFyYy1sb3cuYwkyMDEw LTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9saW51 eC1zcGFyYy1sb3cuYwkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTI2 MCwxMyArMjYwLDEzIEBAIHNwYXJjX3JlaW5zZXJ0X2FkZHIgKHZvaWQpCi0gCi0gCi0gc3RydWN0 IHJlZ3NldF9pbmZvIHRhcmdldF9yZWdzZXRzW10gPSB7Ci0tICB7IFBUUkFDRV9HRVRSRUdTLCBQ VFJBQ0VfU0VUUkVHUywgc2l6ZW9mIChlbGZfZ3JlZ3NldF90KSwKLSsgIHsgUFRSQUNFX0dFVFJF R1MsIFBUUkFDRV9TRVRSRUdTLCAwLCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotICAgICBHRU5F UkFMX1JFR1MsCi0gICAgIHNwYXJjX2ZpbGxfZ3JlZ3NldCwgc3BhcmNfc3RvcmVfZ3JlZ3NldCB9 LAotLSAgeyBQVFJBQ0VfR0VURlBSRUdTLCBQVFJBQ0VfU0VURlBSRUdTLCBzaXplb2YgKGZwcmVn c2V0X3QpLAotKyAgeyBQVFJBQ0VfR0VURlBSRUdTLCBQVFJBQ0VfU0VURlBSRUdTLCAwLCBzaXpl b2YgKGZwcmVnc2V0X3QpLAotICAgICBGUF9SRUdTLAotICAgICBzcGFyY19maWxsX2ZwcmVnc2V0 LCBzcGFyY19zdG9yZV9mcHJlZ3NldCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwg fQotKyAgeyAwLCAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotIH07Ci0gCi0gc3RydWN0IGxp bnV4X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPSB7Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL2xp bnV4LXg4Ni1sb3cuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4v Z2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAw MDAgKzAyMDAKLUBAIC0yNCw2ICsyNCw4IEBACi0gI2luY2x1ZGUgImxpbnV4LWxvdy5oIgotICNp bmNsdWRlICJpMzg3LWZwLmgiCi0gI2luY2x1ZGUgImkzODYtbG93LmgiCi0rI2luY2x1ZGUgImkz ODYteHN0YXRlLmgiCi0rI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAKLSAjaW5jbHVkZSAiZ2Ri X3Byb2Nfc2VydmljZS5oIgotIAotQEAgLTMxLDEwICszMywzNSBAQAotIHZvaWQgaW5pdF9yZWdp c3RlcnNfaTM4Nl9saW51eCAodm9pZCk7Ci0gLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBm aWxlIGFtZDY0LWxpbnV4LmMuICAqLwotIHZvaWQgaW5pdF9yZWdpc3RlcnNfYW1kNjRfbGludXgg KHZvaWQpOwotKy8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBpMzg2LWF2eC1saW51 eC5jLiAgKi8KLSt2b2lkIGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4X2xpbnV4ICh2b2lkKTsKLSsv KiBEZWZpbmVkIGluIGF1dG8tZ2VuZXJhdGVkIGZpbGUgYW1kNjQtYXZ4LWxpbnV4LmMuICAqLwot K3ZvaWQgaW5pdF9yZWdpc3RlcnNfYW1kNjRfYXZ4X2xpbnV4ICh2b2lkKTsKLSsKLSsvKiBCYWNr d2FyZCBjb21wYXRpYmlsaXR5IGZvciBnZGIgd2l0aG91dCBYTUwgc3VwcG9ydC4gICovCi0rCi0r c3RhdGljIGNvbnN0IGNoYXIgKnhtbHRhcmdldF9pMzg2X2xpbnV4X25vX3htbCA9ICJAPHRhcmdl dD5cCi0rPGFyY2hpdGVjdHVyZT5pMzg2PC9hcmNoaXRlY3R1cmU+XAotKzxvc2FiaT5HTlUvTGlu dXg8L29zYWJpPlwKLSs8L3RhcmdldD4iOwotK3N0YXRpYyBjb25zdCBjaGFyICp4bWx0YXJnZXRf YW1kNjRfbGludXhfbm9feG1sID0gIkA8dGFyZ2V0PlwKLSs8YXJjaGl0ZWN0dXJlPmkzODY6eDg2 LTY0PC9hcmNoaXRlY3R1cmU+XAotKzxvc2FiaT5HTlUvTGludXg8L29zYWJpPlwKLSs8L3Rhcmdl dD4iOwotIAotICNpbmNsdWRlIDxzeXMvcmVnLmg+Ci0gI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4K LSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0rCi0rI2lm bmRlZiBQVFJBQ0VfR0VUUkVHU0VUCi0rI2RlZmluZSBQVFJBQ0VfR0VUUkVHU0VUCTB4NDIwNAot KyNlbmRpZgotKwotKyNpZm5kZWYgUFRSQUNFX1NFVFJFR1NFVAotKyNkZWZpbmUgUFRSQUNFX1NF VFJFR1NFVAkweDQyMDUKLSsjZW5kaWYKLSsKLSAKLSAjaWZuZGVmIFBUUkFDRV9HRVRfVEhSRUFE X0FSRUEKLSAjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKLUBAIC0yNTIsNiArMjc5 LDE4IEBAIHg4Nl9zdG9yZV9mcHhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmUKLSAKLSAjZW5k aWYKLSAKLStzdGF0aWMgdm9pZAotK3g4Nl9maWxsX3hzdGF0ZXJlZ3NldCAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQotK3sKLSsgIGkzODdfY2FjaGVfdG9feHNhdmUgKHJl Z2NhY2hlLCBidWYpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3g4Nl9zdG9yZV94c3RhdGVyZWdz ZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLSt7Ci0rICBp Mzg3X3hzYXZlX3RvX2NhY2hlIChyZWdjYWNoZSwgYnVmKTsKLSt9Ci0rCi0gLyogPz8/IFRoZSBu b24tYmlhcmNoIGkzODYgY2FzZSBzdG9yZXMgYWxsIHRoZSBpMzg3IHJlZ3MgdHdpY2UuCi0gICAg T25jZSBpbiBpMzg3Xy4qZnNhdmUuKiBhbmQgb25jZSBpbiBpMzg3Xy4qZnhzYXZlLiouCi0gICAg VGhpcyBpcywgcHJlc3VtYWJseSwgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIFBUUkFDRV9bR1Nd RVRGUFhSRUdTCi1AQCAtMjY0LDIxICszMDMsMjMgQEAgeDg2X3N0b3JlX2ZweHJlZ3NldCAoc3Ry dWN0IHJlZ2NhY2hlICpyZQotIHN0cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1tdID0K LSB7Ci0gI2lmZGVmIEhBVkVfUFRSQUNFX0dFVFJFR1MKLS0gIHsgUFRSQUNFX0dFVFJFR1MsIFBU UkFDRV9TRVRSRUdTLCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotKyAgeyBQVFJBQ0VfR0VUUkVH UywgUFRSQUNFX1NFVFJFR1MsIDAsIHNpemVvZiAoZWxmX2dyZWdzZXRfdCksCi0gICAgIEdFTkVS QUxfUkVHUywKLSAgICAgeDg2X2ZpbGxfZ3JlZ3NldCwgeDg2X3N0b3JlX2dyZWdzZXQgfSwKLSsg IHsgUFRSQUNFX0dFVFJFR1NFVCwgUFRSQUNFX1NFVFJFR1NFVCwgTlRfWDg2X1hTVEFURSwgMCwK LSsgICAgRVhURU5ERURfUkVHUywgeDg2X2ZpbGxfeHN0YXRlcmVnc2V0LCB4ODZfc3RvcmVfeHN0 YXRlcmVnc2V0IH0sCi0gIyBpZm5kZWYgX194ODZfNjRfXwotICMgIGlmZGVmIEhBVkVfUFRSQUNF X0dFVEZQWFJFR1MKLS0gIHsgUFRSQUNFX0dFVEZQWFJFR1MsIFBUUkFDRV9TRVRGUFhSRUdTLCBz aXplb2YgKGVsZl9mcHhyZWdzZXRfdCksCi0rICB7IFBUUkFDRV9HRVRGUFhSRUdTLCBQVFJBQ0Vf U0VURlBYUkVHUywgMCwgc2l6ZW9mIChlbGZfZnB4cmVnc2V0X3QpLAotICAgICBFWFRFTkRFRF9S RUdTLAotICAgICB4ODZfZmlsbF9mcHhyZWdzZXQsIHg4Nl9zdG9yZV9mcHhyZWdzZXQgfSwKLSAj ICBlbmRpZgotICMgZW5kaWYKLS0gIHsgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNFX1NFVEZQUkVH Uywgc2l6ZW9mIChlbGZfZnByZWdzZXRfdCksCi0rICB7IFBUUkFDRV9HRVRGUFJFR1MsIFBUUkFD RV9TRVRGUFJFR1MsIDAsIHNpemVvZiAoZWxmX2ZwcmVnc2V0X3QpLAotICAgICBGUF9SRUdTLAot ICAgICB4ODZfZmlsbF9mcHJlZ3NldCwgeDg2X3N0b3JlX2ZwcmVnc2V0IH0sCi0gI2VuZGlmIC8q IEhBVkVfUFRSQUNFX0dFVFJFR1MgKi8KLS0gIHsgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0K LSsgIHsgMCwgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotIHN0YXRpYyBDT1JF X0FERFIKLUBAIC03NzIsNiArODEzLDEyMSBAQCB4ODZfc2lnaW5mb19maXh1cCAoc3RydWN0IHNp Z2luZm8gKm5hdGl2Ci0gICByZXR1cm4gMDsKLSB9Ci0gDAotK3N0YXRpYyBpbnQgdXNlX3htbDsK LSsKLSsvKiBVcGRhdGUgZ2Ric2VydmVyX3htbHRhcmdldC4gICovCi0rCi0rc3RhdGljIHZvaWQK LSt4ODZfbGludXhfdXBkYXRlX3htbHRhcmdldCAodm9pZCkKLSt7Ci0rICBzdGF0aWMgdW5zaWdu ZWQgbG9uZyBsb25nIHhjcjA7Ci0rICBzdGF0aWMgaW50IGhhdmVfcHRyYWNlX2dldHJlZ3NldCA9 IC0xOwotKwotKyAgaWYgKCFjdXJyZW50X2luZmVyaW9yKQotKyAgICByZXR1cm47Ci0rCi0rI2lm ZGVmIF9feDg2XzY0X18KLSsgIGlmIChudW1feG1tX3JlZ2lzdGVycyA9PSA4KQotKyAgICBpbml0 X3JlZ2lzdGVyc19pMzg2X2xpbnV4ICgpOwotKyAgZWxzZQotKyAgICBpbml0X3JlZ2lzdGVyc19h bWQ2NF9saW51eCAoKTsKLSsjZWxzZQotKyAgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eCAoKTsK LSsjZW5kaWYKLSsKLSsgIGlmICghdXNlX3htbCkKLSsgICAgewotKyAgICAgIC8qIERvbid0IHVz ZSBYTUwuICAqLwotKyNpZmRlZiBfX3g4Nl82NF9fCi0rICAgICAgaWYgKG51bV94bW1fcmVnaXN0 ZXJzID09IDgpCi0rCWdkYnNlcnZlcl94bWx0YXJnZXQgPSB4bWx0YXJnZXRfaTM4Nl9saW51eF9u b194bWw7Ci0rICAgICAgZWxzZQotKwlnZGJzZXJ2ZXJfeG1sdGFyZ2V0ID0geG1sdGFyZ2V0X2Ft ZDY0X2xpbnV4X25vX3htbDsKLSsjZWxzZQotKyAgICAgIGdkYnNlcnZlcl94bWx0YXJnZXQgPSB4 bWx0YXJnZXRfaTM4Nl9saW51eF9ub194bWw7Ci0rI2VuZGlmCi0rCi0rICAgICAgeDg2X3hjcjAg PSBJMzg2X1hTVEFURV9TU0VfTUFTSzsKLSsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsg IC8qIFVwZGF0ZSBnZGJzZXJ2ZXJfeG1sdGFyZ2V0IHdpdGggWE1MIHN1cHBvcnQuICAqLwotKyNp ZmRlZiBfX3g4Nl82NF9fCi0rICBpZiAobnVtX3htbV9yZWdpc3RlcnMgPT0gOCkKLSsgICAgZ2Ri c2VydmVyX3htbHRhcmdldCA9ICJpMzg2LWxpbnV4LnhtbCI7Ci0rICBlbHNlCi0rICAgIGdkYnNl cnZlcl94bWx0YXJnZXQgPSAiYW1kNjQtbGludXgueG1sIjsKLSsjZWxzZQotKyAgZ2Ric2VydmVy X3htbHRhcmdldCA9ICJpMzg2LWxpbnV4LnhtbCI7Ci0rI2VuZGlmCi0rCi0rICAvKiBDaGVjayBp ZiBYU0FWRSBleHRlbmRlZCBzdGF0ZSBpcyBzdXBwb3J0ZWQuICAqLwotKyAgaWYgKGhhdmVfcHRy YWNlX2dldHJlZ3NldCA9PSAtMSkKLSsgICAgewotKyAgICAgIGludCBwaWQgPSBwaWRfb2YgKGdl dF90aHJlYWRfbHdwIChjdXJyZW50X2luZmVyaW9yKSk7Ci0rICAgICAgdW5zaWduZWQgbG9uZyBs b25nIHhzdGF0ZXJlZ3NbSTM4Nl9YU1RBVEVfU1NFX1NJWkUgLyBzaXplb2YgKGxvbmcgbG9uZyld OwotKyAgICAgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0rICAgICAgc3RydWN0IHJlZ3NldF9pbmZvICpy ZWdzZXQ7Ci0rCi0rICAgICAgaW92Lmlvdl9iYXNlID0geHN0YXRlcmVnczsKLSsgICAgICBpb3Yu aW92X2xlbiA9IHNpemVvZiAoeHN0YXRlcmVncyk7Ci0rCi0rICAgICAgLyogQ2hlY2sgaWYgUFRS QUNFX0dFVFJFR1NFVCB3b3Jrcy4gICovCi0rICAgICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVFJF R1NFVCwgcGlkLCAodW5zaWduZWQgaW50KSBOVF9YODZfWFNUQVRFLAotKwkJICAmaW92KSA8IDAp Ci0rCXsKLSsJICBoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPSAwOwotKwkgIHJldHVybjsKLSsJfQot KyAgICAgIGVsc2UKLSsJaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0ID0gMTsKLSsKLSsgICAgICAvKiBH ZXQgWENSMCBmcm9tIFhTQVZFIGV4dGVuZGVkIHN0YXRlIGF0IGJ5dGUgNDY0LiAgKi8KLSsgICAg ICB4Y3IwID0geHN0YXRlcmVnc1s0NjQgLyBzaXplb2YgKGxvbmcgbG9uZyldOwotKwotKyAgICAg IC8qIFVzZSBQVFJBQ0VfR0VUUkVHU0VUIGlmIGl0IGlzIGF2YWlsYWJsZS4gICovCi0rICAgICAg Zm9yIChyZWdzZXQgPSB0YXJnZXRfcmVnc2V0czsKLSsJICAgcmVnc2V0LT5maWxsX2Z1bmN0aW9u ICE9IE5VTEw7IHJlZ3NldCsrKQotKwlpZiAocmVnc2V0LT5nZXRfcmVxdWVzdCA9PSBQVFJBQ0Vf R0VUUkVHU0VUKQotKwkgIHJlZ3NldC0+c2l6ZSA9IEkzODZfWFNUQVRFX1NJWkUgKHhjcjApOwot KwllbHNlIGlmIChyZWdzZXQtPnR5cGUgIT0gR0VORVJBTF9SRUdTKQotKwkgIHJlZ3NldC0+c2l6 ZSA9IDA7Ci0rICAgIH0KLSsKLSsgIGlmIChoYXZlX3B0cmFjZV9nZXRyZWdzZXQpCi0rICAgIHsK LSsgICAgICAvKiBBVlggaXMgdGhlIGhpZ2hlc3QgZmVhdHVyZSB3ZSBzdXBwb3J0LiAgKi8KLSsg ICAgICBpZiAoKHhjcjAgJiBJMzg2X1hTVEFURV9BVlhfTUFTSykgPT0gSTM4Nl9YU1RBVEVfQVZY X01BU0spCi0rCXsKLSsJICB4ODZfeGNyMCA9IHhjcjA7Ci0rCi0rI2lmZGVmIF9feDg2XzY0X18K LSsJICAvKiBJMzg2IGhhcyA4IHhtbSByZWdzLiAgKi8KLSsJICBpZiAobnVtX3htbV9yZWdpc3Rl cnMgPT0gOCkKLSsJICAgIGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4X2xpbnV4ICgpOwotKwkgIGVs c2UKLSsJICAgIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9saW51eCAoKTsKLSsjZWxzZQotKwkg IGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4X2xpbnV4ICgpOwotKyNlbmRpZgotKwl9Ci0rICAgIH0K LSt9Ci0rCi0rLyogUHJvY2VzcyBxU3VwcG9ydGVkIHF1ZXJ5LCAieG1sUmVnaXN0ZXJzPSIuICBV cGRhdGUgdGhlIGJ1ZmZlciBzaXplIGZvcgotKyAgIFBUUkFDRV9HRVRSRUdTRVQuICAqLwotKwot K3N0YXRpYyB2b2lkCi0reDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCAoY29uc3QgY2hhciAq cXVlcnkpCi0rewotKyAgLyogUmV0dXJuIGlmIGdkYiBkb2Vzbid0IHN1cHBvcnQgWE1MLiAgSWYg Z2RiIHNlbmRzICJ4bWxSZWdpc3RlcnM9IgotKyAgICAgaW4gcVN1cHBvcnRlZCBxdWVyeSwgaXQg c3VwcG9ydHMgeDg2IFhNTCB0YXJnZXQgZGVzY3JpcHRpb25zLiAgKi8KLSsgIHVzZV94bWwgPSBx dWVyeSAhPSBOVUxMICYmIHN0cm5jbXAgKHF1ZXJ5LCAieG1sUmVnaXN0ZXJzPSIsIDEzKSA9PSAw OwotKwotKyAgeDg2X2xpbnV4X3VwZGF0ZV94bWx0YXJnZXQgKCk7Ci0rfQotKwotIC8qIEluaXRp YWxpemUgZ2Ric2VydmVyIGZvciB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBpbmZlcmlvci4gICov Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC03OTIsOCArOTQ4LDYgQEAgeDg2X2FyY2hfc2V0dXAgKHZv aWQpCi0gICAgIH0KLSAgIGVsc2UgaWYgKHVzZV82NGJpdCkKLSAgICAgewotLSAgICAgIGluaXRf cmVnaXN0ZXJzX2FtZDY0X2xpbnV4ICgpOwotLQotICAgICAgIC8qIEFtZDY0IGRvZXNuJ3QgaGF2 ZSBIQVZFX0xJTlVYX1VTUlJFR1MuICAqLwotICAgICAgIHRoZV9sb3dfdGFyZ2V0Lm51bV9yZWdz ID0gLTE7Ci0gICAgICAgdGhlX2xvd190YXJnZXQucmVnbWFwID0gTlVMTDsKLUBAIC04MDMsMTQg Kzk1NywxMyBAQCB4ODZfYXJjaF9zZXR1cCAodm9pZCkKLSAgICAgICAvKiBBbWQ2NCBoYXMgMTYg eG1tIHJlZ3MuICAqLwotICAgICAgIG51bV94bW1fcmVnaXN0ZXJzID0gMTY7Ci0gCi0rICAgICAg eDg2X2xpbnV4X3VwZGF0ZV94bWx0YXJnZXQgKCk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0g I2VuZGlmCi0gCi0gICAvKiBPayB3ZSBoYXZlIGEgMzItYml0IGluZmVyaW9yLiAgKi8KLSAKLS0g IGluaXRfcmVnaXN0ZXJzX2kzODZfbGludXggKCk7Ci0tCi0gICB0aGVfbG93X3RhcmdldC5udW1f cmVncyA9IEkzODZfTlVNX1JFR1M7Ci0gICB0aGVfbG93X3RhcmdldC5yZWdtYXAgPSBpMzg2X3Jl Z21hcDsKLSAgIHRoZV9sb3dfdGFyZ2V0LmNhbm5vdF9mZXRjaF9yZWdpc3RlciA9IGkzODZfY2Fu bm90X2ZldGNoX3JlZ2lzdGVyOwotQEAgLTgxOCw2ICs5NzEsOCBAQCB4ODZfYXJjaF9zZXR1cCAo dm9pZCkKLSAKLSAgIC8qIEkzODYgaGFzIDggeG1tIHJlZ3MuICAqLwotICAgbnVtX3htbV9yZWdp c3RlcnMgPSA4OwotKwotKyAgeDg2X2xpbnV4X3VwZGF0ZV94bWx0YXJnZXQgKCk7Ci0gfQotIAot IC8qIFRoaXMgaXMgaW5pdGlhbGl6ZWQgYXNzdW1pbmcgYW4gYW1kNjQgdGFyZ2V0LgotQEAgLTg1 MCw1ICsxMDA1LDYgQEAgc3RydWN0IGxpbnV4X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPQot ICAgeDg2X3NpZ2luZm9fZml4dXAsCi0gICB4ODZfbGludXhfbmV3X3Byb2Nlc3MsCi0gICB4ODZf bGludXhfbmV3X3RocmVhZCwKLS0gIHg4Nl9saW51eF9wcmVwYXJlX3RvX3Jlc3VtZQotKyAgeDg2 X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lLAotKyAgeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRl ZCAKLSB9OwotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC14dGVuc2EtbG93LmMJMjAxMC0wMS0y MCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgteHRl bnNhLWxvdy5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTMxLDEz ICsxMzEsMTMgQEAgeHRlbnNhX3N0b3JlX3h0cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKgotIH0K LSAKLSBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9IHsKLS0gIHsgUFRSQUNF X0dFVFJFR1MsIFBUUkFDRV9TRVRSRUdTLCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotKyAgeyBQ VFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NFVFJFR1MsIDAsIHNpemVvZiAoZWxmX2dyZWdzZXRfdCks Ci0gICAgIEdFTkVSQUxfUkVHUywKLSAgICAgeHRlbnNhX2ZpbGxfZ3JlZ3NldCwgeHRlbnNhX3N0 b3JlX2dyZWdzZXQgfSwKLS0gIHsgUFRSQUNFX0dFVFhUUkVHUywgUFRSQUNFX1NFVFhUUkVHUywg WFRFTlNBX0VMRl9YVFJFR19TSVpFLAotKyAgeyBQVFJBQ0VfR0VUWFRSRUdTLCBQVFJBQ0VfU0VU WFRSRUdTLCAwLCBYVEVOU0FfRUxGX1hUUkVHX1NJWkUsCi0gICAgIEVYVEVOREVEX1JFR1MsCi0g ICAgIHh0ZW5zYV9maWxsX3h0cmVnc2V0LCB4dGVuc2Ffc3RvcmVfeHRyZWdzZXQgfSwKLS0gIHsg MCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSsgIHsgMCwgMCwgMCwgLTEsIC0xLCBOVUxMLCBO VUxMIH0KLSB9OwotIAotICNpZiBYQ0hBTF9IQVZFX0JFCi0tLS0gLi9nZGIvZ2Ric2VydmVyL3Nl cnZlci5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ri c2VydmVyL3NlcnZlci5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAt MTIzNiw2ICsxMjM2LDkgQEAgaGFuZGxlX3F1ZXJ5IChjaGFyICpvd25fYnVmLCBpbnQgcGFja2V0 XwotICAgICB7Ci0gICAgICAgY2hhciAqcCA9ICZvd25fYnVmWzEwXTsKLSAKLSsgICAgICAvKiBT dGFydCBwcm9jZXNzaW5nIHFTdXBwb3J0ZWQgcGFja2V0LiAgKi8KLSsgICAgICB0YXJnZXRfcHJv Y2Vzc19xc3VwcG9ydGVkIChOVUxMKTsKLSsKLSAgICAgICAvKiBQcm9jZXNzIGVhY2ggZmVhdHVy ZSBiZWluZyBwcm92aWRlZCBieSBHREIuICBUaGUgZmlyc3QKLSAJIGZlYXR1cmUgd2lsbCBmb2xs b3cgYSAnOicsIGFuZCBsYXR0ZXIgZmVhdHVyZXMgd2lsbCBmb2xsb3cKLSAJICc7Jy4gICovCi1A QCAtMTI1MSw2ICsxMjU0LDggQEAgaGFuZGxlX3F1ZXJ5IChjaGFyICpvd25fYnVmLCBpbnQgcGFj a2V0XwotIAkJaWYgKHRhcmdldF9zdXBwb3J0c19tdWx0aV9wcm9jZXNzICgpKQotIAkJICBtdWx0 aV9wcm9jZXNzID0gMTsKLSAJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB0YXJnZXRfcHJv Y2Vzc19xc3VwcG9ydGVkIChwKTsKLSAJICB9Ci0gCi0gICAgICAgc3ByaW50ZiAob3duX2J1Ziwg IlBhY2tldFNpemU9JXg7UVBhc3NTaWduYWxzKyIsIFBCVUZTSVogLSAxKTsKLS0tLSAuL2dkYi9n ZGJzZXJ2ZXIvdGFyZ2V0LmgJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0yODYsNiArMjg2LDkgQEAgc3RydWN0IHRhcmdldF9vcHMKLSAKLSAgIC8qIFJl dHVybnMgdGhlIGNvcmUgZ2l2ZW4gYSB0aHJlYWQsIG9yIC0xIGlmIG5vdCBrbm93bi4gICovCi0g ICBpbnQgKCpjb3JlX29mX3RocmVhZCkgKHB0aWRfdCk7Ci0rCi0rICAvKiBUYXJnZXQgc3BlY2lm aWMgcVN1cHBvcnRlZCBzdXBwb3J0LiAgKi8KLSsgIHZvaWQgKCpwcm9jZXNzX3FzdXBwb3J0ZWQp IChjb25zdCBjaGFyICopOwotIH07Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0YXJnZXRfb3BzICp0aGVf dGFyZ2V0OwotQEAgLTMyNiw2ICszMjksMTAgQEAgdm9pZCBzZXRfdGFyZ2V0X29wcyAoc3RydWN0 IHRhcmdldF9vcHMgKgotICAgKHRoZV90YXJnZXQtPnN1cHBvcnRzX211bHRpX3Byb2Nlc3MgPyBc Ci0gICAgKCp0aGVfdGFyZ2V0LT5zdXBwb3J0c19tdWx0aV9wcm9jZXNzKSAoKSA6IDApCi0gCi0r I2RlZmluZSB0YXJnZXRfcHJvY2Vzc19xc3VwcG9ydGVkKHF1ZXJ5KSBcCi0rICBpZiAodGhlX3Rh cmdldC0+cHJvY2Vzc19xc3VwcG9ydGVkKSBcCi0rICAgIHRoZV90YXJnZXQtPnByb2Nlc3NfcXN1 cHBvcnRlZCAocXVlcnkpCi0rCi0gLyogU3RhcnQgbm9uLXN0b3AgbW9kZSwgcmV0dXJucyAwIG9u IHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAgKi8KLSAKLSBpbnQgc3RhcnRfbm9uX3N0b3AgKGlu dCBub25zdG9wKTsKLS0tLSAuL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjA6NTk6 NTIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvaTM4Ni1saW51eC1uYXQuYwkyMDEwLTA0LTAz IDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTIzLDExICsyMywxNCBAQAotICNpbmNsdWRl ICJpbmZlcmlvci5oIgotICNpbmNsdWRlICJnZGJjb3JlLmgiCi0gI2luY2x1ZGUgInJlZ2NhY2hl LmgiCi0rI2luY2x1ZGUgInJlZ3NldC5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVk ZSAibGludXgtbmF0LmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAi Z2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJlbGYvY29tbW9uLmgiCi0rI2luY2x1ZGUgPHN5cy91 aW8uaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpbmNsdWRlIDxzeXMvdXNlci5oPgot ICNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci1AQCAtNjksNiArNzIsMTkgQEAKLSAKLSAvKiBEZWZp bmVzIHBzX2Vycl9lLCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZS4gICovCi0gI2luY2x1ZGUgImdkYl9w cm9jX3NlcnZpY2UuaCIKLSsKLSsjaW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIKLSsKLSsjaWZuZGVm IFBUUkFDRV9HRVRSRUdTRVQKLSsjZGVmaW5lIFBUUkFDRV9HRVRSRUdTRVQJMHg0MjA0Ci0rI2Vu ZGlmCi0rCi0rI2lmbmRlZiBQVFJBQ0VfU0VUUkVHU0VUCi0rI2RlZmluZSBQVFJBQ0VfU0VUUkVH U0VUCTB4NDIwNQotKyNlbmRpZgotKwotKy8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBzdXBwb3J0 IFBUUkFDRV9HRVRSRUdTRVQ/ICAqLwotK3N0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0 ID0gLTE7Ci0gDAotIAotIC8qIFRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gR05VL0xpbnV4IEVM RiBjb3JlLWR1bXBzIGFyZSBpZGVudGljYWwgdG8KLUBAIC05OCw2ICsxMTQsOCBAQCBzdGF0aWMg aW50IHJlZ21hcFtdID0gCi0gICAtMSwgLTEsIC0xLCAtMSwJCS8qIHhtbTAsIHhtbTEsIHhtbTIs IHhtbTMgKi8KLSAgIC0xLCAtMSwgLTEsIC0xLAkJLyogeG1tNCwgeG1tNSwgeG1tNiwgeG1tNiAq LwotICAgLTEsCQkJCS8qIG14Y3NyICovCi0rICAtMSwgLTEsIC0xLCAtMSwJCS8qIHltbTBoLCB5 bW0xaCwgeW1tMmgsIHltbTNoICovCi0rICAtMSwgLTEsIC0xLCAtMSwJCS8qIHltbTRoLCB5bW01 aCwgeW1tNmgsIHltbTZoICovCi0gICBPUklHX0VBWAotIH07Ci0gCi1AQCAtMTEwLDYgKzEyOCw5 IEBAIHN0YXRpYyBpbnQgcmVnbWFwW10gPSAKLSAjZGVmaW5lIEdFVEZQWFJFR1NfU1VQUExJRVMo cmVnbm8pIFwKLSAgIChJMzg2X1NUMF9SRUdOVU0gPD0gKHJlZ25vKSAmJiAocmVnbm8pIDwgSTM4 Nl9TU0VfTlVNX1JFR1MpCi0gCi0rI2RlZmluZSBHRVRYU1RBVEVSRUdTX1NVUFBMSUVTKHJlZ25v KSBcCi0rICAoSTM4Nl9TVDBfUkVHTlVNIDw9IChyZWdubykgJiYgKHJlZ25vKSA8IEkzODZfQVZY X05VTV9SRUdTKQotKwotIC8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBzdXBwb3J0IHRoZSBHRVRS RUdTIHJlcXVlc3Q/ICAqLwotIGludCBoYXZlX3B0cmFjZV9nZXRyZWdzID0KLSAjaWZkZWYgSEFW RV9QVFJBQ0VfR0VUUkVHUwotQEAgLTM1NSw2ICszNzYsNTcgQEAgc3RhdGljIHZvaWQgc3RvcmVf ZnByZWdzIChjb25zdCBzdHJ1Y3QgcgotIAotIC8qIFRyYW5zZmVyaW5nIGZsb2F0aW5nLXBvaW50 IGFuZCBTU0UgcmVnaXN0ZXJzIHRvIGFuZCBmcm9tIEdEQi4gICovCi0gCi0rLyogRmV0Y2ggYWxs IHJlZ2lzdGVycyBjb3ZlcmVkIGJ5IHRoZSBQVFJBQ0VfR0VUUkVHU0VUIHJlcXVlc3QgZnJvbQot KyAgIHByb2Nlc3MvdGhyZWFkIFRJRCBhbmQgc3RvcmUgdGhlaXIgdmFsdWVzIGluIEdEQidzIHJl Z2lzdGVyIGFycmF5LgotKyAgIFJldHVybiBub24temVybyBpZiBzdWNjZXNzZnVsLCB6ZXJvIG90 aGVyd2lzZS4gICovCi0rCi0rc3RhdGljIGludAotK2ZldGNoX3hzdGF0ZXJlZ3MgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGludCB0aWQpCi0rewotKyAgY2hhciB4c3RhdGVyZWdzW0kzODZf WFNUQVRFX01BWF9TSVpFXTsKLSsgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0rCi0rICBpZiAoIWhhdmVf cHRyYWNlX2dldHJlZ3NldCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpb3YuaW92X2Jhc2UgPSB4 c3RhdGVyZWdzOwotKyAgaW92Lmlvdl9sZW4gPSBzaXplb2YoeHN0YXRlcmVncyk7Ci0rICBpZiAo cHRyYWNlIChQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh1bnNpZ25lZCBpbnQpIE5UX1g4Nl9YU1RB VEUsCi0rCSAgICAgICZpb3YpIDwgMCkKLSsgICAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291bGRu J3QgcmVhZCBleHRlbmRlZCBzdGF0ZSBzdGF0dXMiKSk7Ci0rCi0rICBpMzg3X3N1cHBseV94c2F2 ZSAocmVnY2FjaGUsIC0xLCB4c3RhdGVyZWdzKTsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBT dG9yZSBhbGwgdmFsaWQgcmVnaXN0ZXJzIGluIEdEQidzIHJlZ2lzdGVyIGFycmF5IGNvdmVyZWQg YnkgdGhlCi0rICAgUFRSQUNFX1NFVFJFR1NFVCByZXF1ZXN0IGludG8gdGhlIHByb2Nlc3MvdGhy ZWFkIHNwZWNpZmllZCBieSBUSUQuCi0rICAgUmV0dXJuIG5vbi16ZXJvIGlmIHN1Y2Nlc3NmdWws IHplcm8gb3RoZXJ3aXNlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc3RvcmVfeHN0YXRlcmVncyAo Y29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHRpZCwgaW50IHJlZ25vKQotK3sK LSsgIGNoYXIgeHN0YXRlcmVnc1tJMzg2X1hTVEFURV9NQVhfU0laRV07Ci0rICBzdHJ1Y3QgaW92 ZWMgaW92OwotKwotKyAgaWYgKCFoYXZlX3B0cmFjZV9nZXRyZWdzZXQpCi0rICAgIHJldHVybiAw OwotKyAgCi0rICBpb3YuaW92X2Jhc2UgPSB4c3RhdGVyZWdzOwotKyAgaW92Lmlvdl9sZW4gPSBz aXplb2YoeHN0YXRlcmVncyk7Ci0rICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUUkVHU0VULCB0aWQs ICh1bnNpZ25lZCBpbnQpIE5UX1g4Nl9YU1RBVEUsCi0rCSAgICAgICZpb3YpIDwgMCkKLSsgICAg cGVycm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3QgcmVhZCBleHRlbmRlZCBzdGF0ZSBzdGF0dXMi KSk7Ci0rCi0rICBpMzg3X2NvbGxlY3RfeHNhdmUgKHJlZ2NhY2hlLCByZWdubywgeHN0YXRlcmVn cywgMCk7Ci0rCi0rICBpZiAocHRyYWNlIChQVFJBQ0VfU0VUUkVHU0VULCB0aWQsICh1bnNpZ25l ZCBpbnQpIE5UX1g4Nl9YU1RBVEUsCi0rCSAgICAgIChpbnQpICZpb3YpIDwgMCkKLSsgICAgcGVy cm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3Qgd3JpdGUgZXh0ZW5kZWQgc3RhdGUgc3RhdHVzIikp OwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotICNpZmRlZiBIQVZFX1BUUkFDRV9HRVRGUFhSRUdT Ci0gCi0gLyogRmlsbCBHREIncyByZWdpc3RlciBhcnJheSB3aXRoIHRoZSBmbG9hdGluZy1wb2lu dCBhbmQgU1NFIHJlZ2lzdGVyCi1AQCAtNDg5LDYgKzU2MSw4IEBAIGkzODZfbGludXhfZmV0Y2hf aW5mZXJpb3JfcmVnaXN0ZXJzIChzdHIKLSAJICByZXR1cm47Ci0gCX0KLSAKLSsgICAgICBpZiAo ZmV0Y2hfeHN0YXRlcmVncyAocmVnY2FjaGUsIHRpZCkpCi0rCXJldHVybjsKLSAgICAgICBpZiAo ZmV0Y2hfZnB4cmVncyAocmVnY2FjaGUsIHRpZCkpCi0gCXJldHVybjsKLSAgICAgICBmZXRjaF9m cHJlZ3MgKHJlZ2NhY2hlLCB0aWQpOwotQEAgLTUwMSw2ICs1NzUsMTIgQEAgaTM4Nl9saW51eF9m ZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cgotICAgICAgIHJldHVybjsKLSAgICAgfQotIAot KyAgaWYgKEdFVFhTVEFURVJFR1NfU1VQUExJRVMgKHJlZ25vKSkKLSsgICAgewotKyAgICAgIGlm IChmZXRjaF94c3RhdGVyZWdzIChyZWdjYWNoZSwgdGlkKSkKLSsJcmV0dXJuOwotKyAgICB9Ci0r Ci0gICBpZiAoR0VURlBYUkVHU19TVVBQTElFUyAocmVnbm8pKQotICAgICB7Ci0gICAgICAgaWYg KGZldGNoX2ZweHJlZ3MgKHJlZ2NhY2hlLCB0aWQpKQotQEAgLTU1Myw2ICs2MzMsOCBAQCBpMzg2 X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RyCi0gICBpZiAocmVnbm8gPT0gLTEp Ci0gICAgIHsKLSAgICAgICBzdG9yZV9yZWdzIChyZWdjYWNoZSwgdGlkLCByZWdubyk7Ci0rICAg ICAgaWYgKHN0b3JlX3hzdGF0ZXJlZ3MgKHJlZ2NhY2hlLCB0aWQsIHJlZ25vKSkKLSsJcmV0dXJu OwotICAgICAgIGlmIChzdG9yZV9mcHhyZWdzIChyZWdjYWNoZSwgdGlkLCByZWdubykpCi0gCXJl dHVybjsKLSAgICAgICBzdG9yZV9mcHJlZ3MgKHJlZ2NhY2hlLCB0aWQsIHJlZ25vKTsKLUBAIC01 NjUsNiArNjQ3LDEyIEBAIGkzODZfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHIK LSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsgIGlmIChHRVRYU1RBVEVSRUdTX1NVUFBMSUVT IChyZWdubykpCi0rICAgIHsKLSsgICAgICBpZiAoc3RvcmVfeHN0YXRlcmVncyAocmVnY2FjaGUs IHRpZCwgcmVnbm8pKQotKwlyZXR1cm47Ci0rICAgIH0KLSsKLSAgIGlmIChHRVRGUFhSRUdTX1NV UFBMSUVTIChyZWdubykpCi0gICAgIHsKLSAgICAgICBpZiAoc3RvcmVfZnB4cmVncyAocmVnY2Fj aGUsIHRpZCwgcmVnbm8pKQotQEAgLTg3Myw3ICs5NjEsNTAgQEAgaTM4Nl9saW51eF9jaGlsZF9w b3N0X3N0YXJ0dXBfaW5mZXJpb3IgKAotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2Mg KgotIGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbiAoc3RydWN0IHRhcmdldF9vcHMgKm9wcykK LSB7Ci0tICByZXR1cm4gdGRlc2NfaTM4Nl9saW51eDsKLSsgIHN0YXRpYyB1aW50NjRfdCB4Y3Iw OwotKwotKyAgaWYgKGhhdmVfcHRyYWNlX2dldHJlZ3NldCA9PSAtMSkKLSsgICAgewotKyAgICAg IGludCB0aWQ7Ci0rICAgICAgdWludDY0X3QgeHN0YXRlcmVnc1soSTM4Nl9YU1RBVEVfU1NFX1NJ WkUgLyBzaXplb2YgKHVpbnQ2NF90KSldOwotKyAgICAgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0rICAg ICAgdW5zaWduZWQgaW50IHhzdGF0ZV9zaXplOwotKwotKyAgICAgIC8qIEdOVS9MaW51eCBMV1Ag SUQncyBhcmUgcHJvY2VzcyBJRCdzLiAgKi8KLSsgICAgICB0aWQgPSBUSURHRVQgKGluZmVyaW9y X3B0aWQpOwotKyAgICAgIGlmICh0aWQgPT0gMCkKLSsJdGlkID0gUElER0VUIChpbmZlcmlvcl9w dGlkKTsgLyogTm90IGEgdGhyZWFkZWQgcHJvZ3JhbS4gICovCi0rCi0rICAgICAgaW92Lmlvdl9i YXNlID0geHN0YXRlcmVnczsKLSsgICAgICBpb3YuaW92X2xlbiA9IHNpemVvZiAoeHN0YXRlcmVn cyk7Ci0rCi0rICAgICAgLyogQ2hlY2sgaWYgUFRSQUNFX0dFVFJFR1NFVCB3b3Jrcy4gICovCi0r ICAgICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodW5zaWduZWQgaW50KSBO VF9YODZfWFNUQVRFLAotKwkJICAmaW92KSA8IDApCi0rCXsKLSsJICBoYXZlX3B0cmFjZV9nZXRy ZWdzZXQgPSAwOwotKwkgIHhzdGF0ZV9zaXplID0gMDsKLSsJfQotKyAgICAgIGVsc2UKLSsJewot KwkgIGhhdmVfcHRyYWNlX2dldHJlZ3NldCA9IDE7Ci0rCi0rCSAgLyogR2V0IFhDUjAgZnJvbSBY U0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rCSAgeGNyMCA9IHhzdGF0ZXJlZ3NbKEkzODZfTElO VVhfWFNBVkVfWENSMF9PRkZTRVQKLSsJCQkgICAgIC8gc2l6ZW9mIChsb25nIGxvbmcpKV07Ci0r Ci0rCSAgeHN0YXRlX3NpemUgPSBJMzg2X1hTVEFURV9TSVpFICh4Y3IwKTsKLSsJfQotKwotKyAg ICAgIGkzODZfbGludXhfdXBkYXRlX3hzdGF0ZXJlZ3NldCAoeHN0YXRlX3NpemUpOwotKyAgICB9 Ci0rCi0rICAvKiBDaGVjayB0aGUgbmF0aXZlIFhDUjAgb25seSBpZiBQVFJBQ0VfR0VUUkVHU0VU IGlzIGF2YWlsYWJsZS4gICovCi0rICBpZiAoaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0Ci0rICAgICAg JiYgKHhjcjAgJiBJMzg2X1hTVEFURV9BVlhfTUFTSykgPT0gSTM4Nl9YU1RBVEVfQVZYX01BU0sp Ci0rICAgIHJldHVybiB0ZGVzY19pMzg2X2F2eF9saW51eDsKLSsgIGVsc2UKLSsgICAgcmV0dXJu IHRkZXNjX2kzODZfbGludXg7Ci0gfQotIAotIHZvaWQKLS0tLSAuL2dkYi9pMzg2LWxpbnV4LXRk ZXAuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODYt bGludXgtdGRlcC5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjMs NiArMjMsNyBAQAotICNpbmNsdWRlICJmcmFtZS5oIgotICNpbmNsdWRlICJ2YWx1ZS5oIgotICNp bmNsdWRlICJyZWdjYWNoZS5oIgotKyNpbmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAiaW5m ZXJpb3IuaCIKLSAjaW5jbHVkZSAib3NhYmkuaCIKLSAjaW5jbHVkZSAicmVnZ3JvdXBzLmgiCi1A QCAtMzYsOSArMzcsMTEgQEAKLSAjaW5jbHVkZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJz eW10YWIuaCIKLSAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgotLSNpbmNsdWRlICJyZWdzZXQuaCIK LSAjaW5jbHVkZSAieG1sLXN5c2NhbGwuaCIKLSAKLSsjaW5jbHVkZSAiaTM4Ny10ZGVwLmgiCi0r I2luY2x1ZGUgImkzODYteHN0YXRlLmgiCi0rCi0gLyogVGhlIHN5c2NhbGwncyBYTUwgZmlsZW5h bWUgZm9yIGkzODYuICAqLwotICNkZWZpbmUgWE1MX1NZU0NBTExfRklMRU5BTUVfSTM4NiAic3lz Y2FsbHMvaTM4Ni1saW51eC54bWwiCi0gCi1AQCAtNDcsNiArNTAsNyBAQAotICNpbmNsdWRlIDxz dGRpbnQuaD4KLSAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LWxpbnV4LmMiCi0rI2lu Y2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbGludXguYyIKLSAKLSAvKiBTdXBwb3J0ZWQg cmVnaXN0ZXIgbm90ZSBzZWN0aW9ucy4gICovCi0gc3RhdGljIHN0cnVjdCBjb3JlX3JlZ3NldF9z ZWN0aW9uIGkzODZfbGludXhfcmVnc2V0X3NlY3Rpb25zW10gPQotQEAgLTU0LDYgKzU4LDcgQEAg c3RhdGljIHN0cnVjdCBjb3JlX3JlZ3NldF9zZWN0aW9uIGkzODZfbAotICAgeyAiLnJlZyIsIDE0 NCwgImdlbmVyYWwtcHVycG9zZSIgfSwKLSAgIHsgIi5yZWcyIiwgMTA4LCAiZmxvYXRpbmctcG9p bnQiIH0sCi0gICB7ICIucmVnLXhmcCIsIDUxMiwgImV4dGVuZGVkIGZsb2F0aW5nLXBvaW50IiB9 LAotKyAgeyAiLnJlZy14c3RhdGUiLCAwLCAiWFNBVkUgZXh0ZW5kZWQgc3RhdGUiIH0sCi0gICB7 IE5VTEwsIDAgfQotIH07Ci0gCi1AQCAtNTMzLDYgKzUzOCw3IEBAIHN0YXRpYyBpbnQgaTM4Nl9s aW51eF9ncmVnc2V0X3JlZ19vZmZzZXQKLSAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwKLSAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSAgIC0xLAotKyAgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotICAgMTEgKiA0CQkJLyogIm9yaWdfZWF4IiAqLwot IH07Ci0gCi1AQCAtNTYwLDYgKzU2Niw1OSBAQCBzdGF0aWMgaW50IGkzODZfbGludXhfc2NfcmVn X29mZnNldFtdID0KLSAgIDAgKiA0CQkJCS8qICVncyAqLwotIH07Ci0gCi0rLyogVXBkYXRlIFhT QVZFIGV4dGVuZGVkIHN0YXRlIHJlZ2lzdGVyIG5vdGUgc2VjdGlvbi4gICovCi0rCi0rdm9pZAot K2kzODZfbGludXhfdXBkYXRlX3hzdGF0ZXJlZ3NldCAodW5zaWduZWQgaW50IHhzdGF0ZV9zaXpl KQotK3sKLSsgIHN0cnVjdCBjb3JlX3JlZ3NldF9zZWN0aW9uICp4c3RhdGUgPSAmaTM4Nl9saW51 eF9yZWdzZXRfc2VjdGlvbnNbM107Ci0rCi0rICAvKiBVcGRhdGUgdGhlIFhTQVZFIGV4dGVuZGVk IHN0YXRlIHJlZ2lzdGVyIG5vdGUgc2VjdGlvbiBmb3IgImdjb3JlIi4KLSsgICAgIERpc2FibGUg aXQgaWYgaXRzIHNpemUgaXMgMC4gICovCi0rICBnZGJfYXNzZXJ0IChzdHJjbXAgKHhzdGF0ZS0+ c2VjdF9uYW1lLCAiLnJlZy14c3RhdGUiKSA9PSAwKTsKLSsgIGlmICh4c3RhdGVfc2l6ZSkKLSsg ICAgeHN0YXRlLT5zaXplID0geHN0YXRlX3NpemU7Ci0rICBlbHNlCi0rICAgIHhzdGF0ZS0+c2Vj dF9uYW1lID0gTlVMTDsKLSt9Ci0rCi0rLyogR2V0IFhTQVZFIGV4dGVuZGVkIHN0YXRlIHhjcjAg ZnJvbSBjb3JlIGR1bXAuICAqLwotKwotK3VpbnQ2NF90Ci0raTM4Nl9saW51eF9jb3JlX3JlYWRf eGNyMCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJICAgc3RydWN0IHRhcmdldF9vcHMg KnRhcmdldCwgYmZkICphYmZkKQotK3sKLSsgIGFzZWN0aW9uICp4c3RhdGUgPSBiZmRfZ2V0X3Nl Y3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5yZWcteHN0YXRlIik7Ci0rICB1aW50NjRfdCB4Y3IwOwot KwotKyAgaWYgKHhzdGF0ZSkKLSsgICAgewotKyAgICAgIHNpemVfdCBzaXplID0gYmZkX3NlY3Rp b25fc2l6ZSAoYWJmZCwgeHN0YXRlKTsKLSsKLSsgICAgICAvKiBDaGVjayBleHRlbmRlZCBzdGF0 ZSBzaXplLiAgKi8KLSsgICAgICBpZiAoc2l6ZSA8IEkzODZfWFNUQVRFX0FWWF9TSVpFKQotKwl4 Y3IwID0gSTM4Nl9YU1RBVEVfU1NFX01BU0s7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgY2hhciBj b250ZW50c1s4XTsKLSsKLSsJICBpZiAoISBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQs IHhzdGF0ZSwgY29udGVudHMsCi0rCQkJCQkgIEkzODZfTElOVVhfWFNBVkVfWENSMF9PRkZTRVQs Ci0rCQkJCQkgIDgpKQotKwkgICAgewotKwkgICAgICB3YXJuaW5nIChfKCJDb3VsZG4ndCByZWFk IGB4Y3IwJyBieXRlcyBmcm9tIGAucmVnLXhzdGF0ZScgc2VjdGlvbiBpbiBjb3JlIGZpbGUuIikp OwotKwkgICAgICByZXR1cm4gMDsKLSsJICAgIH0KLSsKLSsJICB4Y3IwID0gYmZkX2dldF82NCAo YWJmZCwgY29udGVudHMpOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgeGNyMCA9IEkzODZf WFNUQVRFX1NTRV9NQVNLOwotKwotKyAgcmV0dXJuIHhjcjA7Ci0rfQotKwotIC8qIEdldCBMaW51 eC94ODYgdGFyZ2V0IGRlc2NyaXB0aW9uIGZyb20gY29yZSBkdW1wLiAgKi8KLSAKLSBzdGF0aWMg Y29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICoKLUBAIC01NjgsMTIgKzYyNywxNyBAQCBpMzg2X2xp bnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbiAoc3RydWN0Ci0gCQkJCSAgYmZkICphYmZkKQotIHsK LSAgIGFzZWN0aW9uICpzZWN0aW9uID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsICIu cmVnMiIpOwotKyAgdWludDY0X3QgeGNyMDsKLSAKLSAgIGlmIChzZWN0aW9uID09IE5VTEwpCi0g ICAgIHJldHVybiBOVUxMOwotIAotICAgLyogTGludXgvaTM4Ni4gICovCi0tICByZXR1cm4gdGRl c2NfaTM4Nl9saW51eDsKLSsgIHhjcjAgPSBpMzg2X2xpbnV4X2NvcmVfcmVhZF94Y3IwIChnZGJh cmNoLCB0YXJnZXQsIGFiZmQpOwotKyAgaWYgKCh4Y3IwICYgSTM4Nl9YU1RBVEVfQVZYX01BU0sp ID09IEkzODZfWFNUQVRFX0FWWF9NQVNLKQotKyAgICByZXR1cm4gdGRlc2NfaTM4Nl9hdnhfbGlu dXg7Ci0rICBlbHNlCi0rICAgIHJldHVybiB0ZGVzY19pMzg2X2xpbnV4OwotIH0KLSAKLSBzdGF0 aWMgdm9pZAotQEAgLTYyMyw2ICs2ODcsOCBAQCBpMzg2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvCi0gICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gaTM4Nl9saW51eF9zY19yZWdf b2Zmc2V0OwotICAgdGRlcC0+c2NfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChpMzg2X2xpbnV4X3Nj X3JlZ19vZmZzZXQpOwotIAotKyAgdGRlcC0+eHNhdmVfeGNyMF9vZmZzZXQgPSBJMzg2X0xJTlVY X1hTQVZFX1hDUjBfT0ZGU0VUOwotKwotICAgc2V0X2dkYmFyY2hfcHJvY2Vzc19yZWNvcmQgKGdk YmFyY2gsIGkzODZfcHJvY2Vzc19yZWNvcmQpOwotICAgc2V0X2dkYmFyY2hfcHJvY2Vzc19yZWNv cmRfc2lnbmFsIChnZGJhcmNoLCBpMzg2X2xpbnV4X3JlY29yZF9zaWduYWwpOwotIAotQEAgLTg0 Myw0ICs5MDksNSBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXAgKHZvaWQpCi0gCi0gICAv KiBJbml0aWFsaXplIHRoZSBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24gICovCi0gICBpbml0aWFs aXplX3RkZXNjX2kzODZfbGludXggKCk7Ci0rICBpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4X2xp bnV4ICgpOwotIH0KLS0tLSAuL2dkYi9pMzg2LWxpbnV4LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5 OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODYtbGludXgtdGRlcC5oCTIwMTAtMDQt MDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzAsMTIgKzMwLDQxIEBACi0gLyogUmVn aXN0ZXIgbnVtYmVyIGZvciB0aGUgIm9yaWdfZWF4IiBwc2V1ZG8tcmVnaXN0ZXIuICBJZiB0aGlz Ci0gICAgcHNldWRvLXJlZ2lzdGVyIGNvbnRhaW5zIGEgdmFsdWUgPj0gMCBpdCBpcyBpbnRlcnBy ZXRlZCBhcyB0aGUKLSAgICBzeXN0ZW0gY2FsbCBudW1iZXIgdGhhdCB0aGUga2VybmVsIGlzIHN1 cHBvc2VkIHRvIHJlc3RhcnQuICAqLwotLSNkZWZpbmUgSTM4Nl9MSU5VWF9PUklHX0VBWF9SRUdO VU0gSTM4Nl9TU0VfTlVNX1JFR1MKLSsjZGVmaW5lIEkzODZfTElOVVhfT1JJR19FQVhfUkVHTlVN IEkzODZfQVZYX05VTV9SRUdTCi0gCi0gLyogVG90YWwgbnVtYmVyIG9mIHJlZ2lzdGVycyBmb3Ig R05VL0xpbnV4LiAgKi8KLSAjZGVmaW5lIEkzODZfTElOVVhfTlVNX1JFR1MgKEkzODZfTElOVVhf T1JJR19FQVhfUkVHTlVNICsgMSkKLSAKLSsvKiBHZXQgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgeGNy MCBmcm9tIGNvcmUgZHVtcC4gICovCi0rZXh0ZXJuIHVpbnQ2NF90IGkzODZfbGludXhfY29yZV9y ZWFkX3hjcjAKLSsgIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHRhcmdldF9vcHMg KnRhcmdldCwgYmZkICphYmZkKTsKLSsKLSAvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24uICAq LwotIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbGludXg7Ci0rZXh0ZXJu IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9hdnhfbGludXg7Ci0rCi0rLyogVXBkYXRl IFhTQVZFIGV4dGVuZGVkIHN0YXRlIHJlZ2lzdGVyIG5vdGUgc2VjdGlvbi4gICovCi0rZXh0ZXJu IHZvaWQgaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0ICh1bnNpZ25lZCBpbnQgeHN0YXRl X3NpemUpOwotKwotKy8qIEZvcm1hdCBvZiBYU0FWRSBleHRlbmRlZCBzdGF0ZSBpczoKLSsgCXN0 cnVjdAotKwl7Ci0rCSAgZnhzYXZlX2J5dGVzWzAuLjQ2M10KLSsJICBzd191c2FibGVfYnl0ZXNb NDY0Li41MTFdCi0rCSAgeHN0YXRlX2hkcl9ieXRlc1s1MTIuLjU3NV0KLSsJICBhdnhfYnl0ZXNb NTc2Li44MzFdCi0rCSAgZnV0dXJlX3N0YXRlIGV0YwotKwl9OwotKwotKyAgU2FtZSBtZW1vcnkg bGF5b3V0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGNvcmVkdW1wIE5UX1g4Nl9YU1RBVEUKLSsgIHJl cHJlc2VudGluZyB0aGUgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgcmVnaXN0ZXJzLgotKwotKyAgVGhl IGZpcnN0IDggYnl0ZXMgb2YgdGhlIHN3X3VzYWJsZV9ieXRlc1s0NjQuLjQ2N10gaXMgdGhlIE9T IGVuYWJsZWQKLSsgIGV4dGVuZGVkIHN0YXRlIG1hc2ssIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHRo ZSBleHRlbmRlZCBjb250cm9sIHJlZ2lzdGVyCi0rICAwICh0aGUgWEZFQVRVUkVfRU5BQkxFRF9N QVNLIHJlZ2lzdGVyKSwgWENSMC4gIFdlIGNhbiB1c2UgdGhpcyBtYXNrCi0rICB0b2dldGhlciB3 aXRoIHRoZSBtYXNrIHNhdmVkIGluIHRoZSB4c3RhdGVfaGRyX2J5dGVzIHRvIGRldGVybWluZSB3 aGF0Ci0rICBzdGF0ZXMgdGhlIHByb2Nlc3Nvci9PUyBzdXBwb3J0cyBhbmQgd2hhdCBzdGF0ZSwg dXNlZCBvciBpbml0aWFsaXplZCwKLSsgIHRoZSBwcm9jZXNzL3RocmVhZCBpcyBpbi4gICovIAot KyNkZWZpbmUgSTM4Nl9MSU5VWF9YU0FWRV9YQ1IwX09GRlNFVCA0NjQKLSAKLSAjZW5kaWYgLyog aTM4Ni1saW51eC10ZGVwLmggKi8KLS0tLSAuL2dkYi9pMzg2LXRkZXAuYwkyMDEwLTA0LTAzIDIx OjA5OjI5LjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODYtdGRlcC5jCTIwMTAtMDQtMDMg MjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtNTEsMTEgKzUxLDEzIEBACi0gCi0gI2luY2x1 ZGUgImkzODYtdGRlcC5oIgotICNpbmNsdWRlICJpMzg3LXRkZXAuaCIKLSsjaW5jbHVkZSAiaTM4 Ni14c3RhdGUuaCIKLSAKLSAjaW5jbHVkZSAicmVjb3JkLmgiCi0gI2luY2x1ZGUgPHN0ZGludC5o PgotIAotICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYuYyIKLSsjaW5jbHVkZSAiZmVhdHVy ZXMvaTM4Ni9pMzg2LWF2eC5jIgotIAotIC8qIFJlZ2lzdGVyIG5hbWVzLiAgKi8KLSAKLUBAIC03 NCw2ICs3NiwxOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl9yZWdpc3Rlcl9uYW1lc1tdCi0g ICAibXhjc3IiCi0gfTsKLSAKLStzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl95bW1fbmFtZXNbXSA9 Ci0rewotKyAgInltbTAiLCAgInltbTEiLCAgICJ5bW0yIiwgICJ5bW0zIiwKLSsgICJ5bW00Iiwg ICJ5bW01IiwgICAieW1tNiIsICAieW1tNyIsCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgY2hhciAq aTM4Nl95bW1oX25hbWVzW10gPQotK3sKLSsgICJ5bW0waCIsICAieW1tMWgiLCAgICJ5bW0yaCIs ICAieW1tM2giLAotKyAgInltbTRoIiwgICJ5bW01aCIsICAgInltbTZoIiwgICJ5bW03aCIsCi0r fTsKLSsKLSAvKiBSZWdpc3RlciBuYW1lcyBmb3IgTU1YIHBzZXVkby1yZWdpc3RlcnMuICAqLwot IAotIHN0YXRpYyBjb25zdCBjaGFyICppMzg2X21teF9uYW1lc1tdID0KLUBAIC0xNTAsMTggKzE2 NCw0NyBAQCBpMzg2X2R3b3JkX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCi0gICByZXR1 cm4gcmVnbnVtID49IDAgJiYgcmVnbnVtIDwgdGRlcC0+bnVtX2R3b3JkX3JlZ3M7Ci0gfQotIAot K2ludAotK2kzODZfeW1taF9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBy ZWdudW0pCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAo Z2RiYXJjaCk7Ci0rICBpbnQgeW1tMGhfcmVnbnVtID0gdGRlcC0+eW1tMGhfcmVnbnVtOwotKwot KyAgaWYgKHltbTBoX3JlZ251bSA8IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmVnbnVtIC09 IHltbTBoX3JlZ251bTsKLSsgIHJldHVybiByZWdudW0gPj0gMCAmJiByZWdudW0gPCB0ZGVwLT5u dW1feW1tX3JlZ3M7Ci0rfQotKwotKy8qIEFWWCByZWdpc3Rlcj8gICovCi0rCi0raW50Ci0raTM4 Nl95bW1fcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotK3sK LSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwot KyAgaW50IHltbTBfcmVnbnVtID0gdGRlcC0+eW1tMF9yZWdudW07Ci0rCi0rICBpZiAoeW1tMF9y ZWdudW0gPCAwKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHJlZ251bSAtPSB5bW0wX3JlZ251bTsK LSsgIHJldHVybiByZWdudW0gPj0gMCAmJiByZWdudW0gPCB0ZGVwLT5udW1feW1tX3JlZ3M7Ci0r fQotKwotIC8qIFNTRSByZWdpc3Rlcj8gICovCi0gCi0tc3RhdGljIGludAotLWkzODZfc3NlX3Jl Z251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKLStpbnQKLStpMzg2 X3htbV9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCi0gewot ICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0r ICBpbnQgbnVtX3htbV9yZWdzID0gSTM4N19OVU1fWE1NX1JFR1MgKHRkZXApOwotIAotLSAgaWYg KEkzODdfTlVNX1hNTV9SRUdTICh0ZGVwKSA9PSAwKQotKyAgaWYgKG51bV94bW1fcmVncyA9PSAw KQotICAgICByZXR1cm4gMDsKLSAKLS0gIHJldHVybiAoSTM4N19YTU0wX1JFR05VTSAodGRlcCkg PD0gcmVnbnVtCi0tCSAgJiYgcmVnbnVtIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApKTsKLSsg IHJlZ251bSAtPSBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKTsKLSsgIHJldHVybiByZWdudW0gPj0g MCAmJiByZWdudW0gPCBudW1feG1tX3JlZ3M7Ci0gfQotIAotIHN0YXRpYyBpbnQKLUBAIC0yMDEs NiArMjQ0LDE5IEBAIGkzODZfZnBjX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKLSAJ ICAmJiByZWdudW0gPCBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKSk7Ci0gfQotIAotKy8qIFJldHVy biB0aGUgbmFtZSBvZiByZWdpc3RlciBSRUdOVU0sIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYgaXQg aXMKLSsgICBhbiBhbm9ueW1vdXMgcmVnaXN0ZXIuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFy ICoKLStpMzg2X3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVn bnVtKQotK3sKLSsgIC8qIEhpZGUgdGhlIHVwcGVyIFlNTSByZWdpc3RlcnMuICAqLwotKyAgaWYg KGkzODZfeW1taF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuICIiOwot KwotKyAgcmV0dXJuIHRkZXNjX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZ251bSk7Ci0rfQot KwotIC8qIFJldHVybiB0aGUgbmFtZSBvZiByZWdpc3RlciBSRUdOVU0uICAqLwotIAotIGNvbnN0 IGNoYXIgKgotQEAgLTIwOSw2ICsyNjUsOCBAQCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lIChz dHJ1Y3QgZ2RiYXJjCi0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVw IChnZGJhcmNoKTsKLSAgIGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkK LSAgICAgcmV0dXJuIGkzODZfbW14X25hbWVzW3JlZ251bSAtIEkzODdfTU0wX1JFR05VTSAodGRl cCldOwotKyAgZWxzZSBpZiAoaTM4Nl95bW1fcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0r ICAgIHJldHVybiBpMzg2X3ltbV9uYW1lc1tyZWdudW0gLSB0ZGVwLT55bW0wX3JlZ251bV07Ci0g ICBlbHNlIGlmIChpMzg2X2J5dGVfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJl dHVybiBpMzg2X2J5dGVfbmFtZXNbcmVnbnVtIC0gdGRlcC0+YWxfcmVnbnVtXTsKLSAgIGVsc2Ug aWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLUBAIC0yNDYsNyArMzA0 LDEzIEBAIGkzODZfZGJ4X3JlZ190b19yZWdudW0gKHN0cnVjdCBnZGJhcmNoICoKLSAgIGVsc2Ug aWYgKHJlZyA+PSAyMSAmJiByZWcgPD0gMjgpCi0gICAgIHsKLSAgICAgICAvKiBTU0UgcmVnaXN0 ZXJzLiAgKi8KLS0gICAgICByZXR1cm4gcmVnIC0gMjEgKyBJMzg3X1hNTTBfUkVHTlVNICh0ZGVw KTsKLSsgICAgICBpbnQgeW1tMF9yZWdudW0gPSB0ZGVwLT55bW0wX3JlZ251bTsKLSsKLSsgICAg ICBpZiAoeW1tMF9yZWdudW0gPj0gMAotKwkgICYmIGkzODZfeG1tX3JlZ251bV9wIChnZGJhcmNo LCByZWcpKQotKwlyZXR1cm4gcmVnIC0gMjEgKyB5bW0wX3JlZ251bTsKLSsgICAgICBlbHNlCi0r CXJldHVybiByZWcgLSAyMSArIEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOwotICAgICB9Ci0gICBl bHNlIGlmIChyZWcgPj0gMjkgJiYgcmVnIDw9IDM2KQotICAgICB7Ci1AQCAtMjE4NCw2ICsyMjQ4 LDU5IEBAIGkzODdfZXh0X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgcmV0dXJu IHRkZXAtPmkzODdfZXh0X3R5cGU7Ci0gfQotIAotKy8qIENvbnN0cnVjdCB2ZWN0b3IgdHlwZSBm b3IgcHNldWRvIFlNTSByZWdpc3RlcnMuICBXZSBjYW4ndCB1c2UKLSsgICB0ZGVzY19maW5kX3R5 cGUgc2luY2UgWU1NIGlzbid0IGRlc2NyaWJlZCBpbiB0YXJnZXQgZGVzY3JpcHRpb24uICAqLwot KwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0raTM4Nl95bW1fdHlwZSAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRl cCAoZ2RiYXJjaCk7Ci0rCi0rICBpZiAoIXRkZXAtPmkzODZfeW1tX3R5cGUpCi0rICAgIHsKLSsg ICAgICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidCA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJj aCk7Ci0rCi0rICAgICAgLyogVGhlIHR5cGUgd2UncmUgYnVpbGRpbmcgaXMgdGhpczogKi8KLSsj aWYgMAotKyAgICAgIHVuaW9uIF9fZ2RiX2J1aWx0aW5fdHlwZV92ZWMyNTZpCi0rICAgICAgewot KyAgICAgICAgaW50MTI4X3QgdWludDEyOFsyXTsKLSsgICAgICAgIGludDY0X3QgdjJfaW50NjRb NF07Ci0rICAgICAgICBpbnQzMl90IHY0X2ludDMyWzhdOwotKyAgICAgICAgaW50MTZfdCB2OF9p bnQxNlsxNl07Ci0rICAgICAgICBpbnQ4X3QgdjE2X2ludDhbMzJdOwotKyAgICAgICAgZG91Ymxl IHYyX2RvdWJsZVs0XTsKLSsgICAgICAgIGZsb2F0IHY0X2Zsb2F0WzhdOwotKyAgICAgIH07Ci0r I2VuZGlmCi0rCi0rICAgICAgc3RydWN0IHR5cGUgKnQ7Ci0rCi0rICAgICAgdCA9IGFyY2hfY29t cG9zaXRlX3R5cGUgKGdkYmFyY2gsCi0rCQkJICAgICAgICJfX2dkYl9idWlsdGluX3R5cGVfdmVj MjU2aSIsIFRZUEVfQ09ERV9VTklPTik7Ci0rICAgICAgYXBwZW5kX2NvbXBvc2l0ZV90eXBlX2Zp ZWxkICh0LCAidjhfZmxvYXQiLAotKwkJCQkgICBpbml0X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRp bl9mbG9hdCwgOCkpOwotKyAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwgInY0 X2RvdWJsZSIsCi0rCQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGluX2RvdWJsZSwg NCkpOwotKyAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwgInYzMl9pbnQ4IiwK LSsJCQkJICAgaW5pdF92ZWN0b3JfdHlwZSAoYnQtPmJ1aWx0aW5faW50OCwgMzIpKTsKLSsgICAg ICBhcHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGQgKHQsICJ2MTZfaW50MTYiLAotKwkJCQkgICBp bml0X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRpbl9pbnQxNiwgMTYpKTsKLSsgICAgICBhcHBlbmRf Y29tcG9zaXRlX3R5cGVfZmllbGQgKHQsICJ2OF9pbnQzMiIsCi0rCQkJCSAgIGluaXRfdmVjdG9y X3R5cGUgKGJ0LT5idWlsdGluX2ludDMyLCA4KSk7Ci0rICAgICAgYXBwZW5kX2NvbXBvc2l0ZV90 eXBlX2ZpZWxkICh0LCAidjRfaW50NjQiLAotKwkJCQkgICBpbml0X3ZlY3Rvcl90eXBlIChidC0+ YnVpbHRpbl9pbnQ2NCwgNCkpOwotKyAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAo dCwgInYyX2ludDEyOCIsCi0rCQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGluX2lu dDEyOCwgMikpOwotKwotKyAgICAgIFRZUEVfVkVDVE9SICh0KSA9IDE7Ci0rICAgICAgVFlQRV9O QU1FICh0KSA9ICJidWlsdGluX3R5cGVfdmVjMTI4aSI7Ci0rICAgICAgdGRlcC0+aTM4Nl95bW1f dHlwZSA9IHQ7Ci0rICAgIH0KLSsKLSsgIHJldHVybiB0ZGVwLT5pMzg2X3ltbV90eXBlOwotK30K LSsKLSAvKiBDb25zdHJ1Y3QgdmVjdG9yIHR5cGUgZm9yIE1NWCByZWdpc3RlcnMuICAqLwotIHN0 YXRpYyBzdHJ1Y3QgdHlwZSAqCi0gaTM4Nl9tbXhfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gpCi1AQCAtMjIzNCw2ICsyMzUxLDggQEAgaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfdHlwZSAoc3Ry dWN0IGdkYmFyYwotIHsKLSAgIGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVt KSkKLSAgICAgcmV0dXJuIGkzODZfbW14X3R5cGUgKGdkYmFyY2gpOwotKyAgZWxzZSBpZiAoaTM4 Nl95bW1fcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVybiBpMzg2X3ltbV90 eXBlIChnZGJhcmNoKTsKLSAgIGVsc2UKLSAgICAgewotICAgICAgIGNvbnN0IHN0cnVjdCBidWls dGluX3R5cGUgKmJ0ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKTsKLUBAIC0yMjg1LDcgKzI0MDQs MjIgQEAgaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGdkYmFyYwotICAgICB7Ci0g ICAgICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7 Ci0gCi0tICAgICAgaWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsg ICAgICBpZiAoaTM4Nl95bW1fcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rCXsKLSsJICBy ZWdudW0gLT0gdGRlcC0+eW1tMF9yZWdudW07Ci0rCi0rCSAgLyogRXh0cmFjdCAoYWx3YXlzIGxp dHRsZSBlbmRpYW4pLiAgUmVhZCBsb3dlciAxMjhiaXRzLiAqLwotKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWdjYWNoZSwKLSsJCQkgICAgIEkzODdfWE1NMF9SRUdOVU0gKHRkZXApICsgcmVnbnVt LAotKwkJCSAgICAgcmF3X2J1Zik7Ci0rCSAgbWVtY3B5IChidWYsIHJhd19idWYsIDE2KTsKLSsJ ICAvKiBSZWFkIHVwcGVyIDEyOGJpdHMuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdj YWNoZSwKLSsJCQkgICAgIHRkZXAtPnltbTBoX3JlZ251bSArIHJlZ251bSwKLSsJCQkgICAgIHJh d19idWYpOwotKwkgIG1lbWNweSAoYnVmICsgMTYsIHJhd19idWYsIDE2KTsKLSsJfQotKyAgICAg IGVsc2UgaWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSAJewotIAkg IGludCBncG51bSA9IHJlZ251bSAtIHRkZXAtPmF4X3JlZ251bTsKLSAKLUBAIC0yMzM0LDcgKzI0 NjgsMjAgQEAgaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUgKHN0cnVjdCBnZGJhcgotICAgICB7 Ci0gICAgICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJj aCk7Ci0gCi0tICAgICAgaWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkK LSsgICAgICBpZiAoaTM4Nl95bW1fcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rCXsKLSsJ ICByZWdudW0gLT0gdGRlcC0+eW1tMF9yZWdudW07Ci0rCi0rCSAgLyogLi4uIFdyaXRlIGxvd2Vy IDEyOGJpdHMuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUsCi0rCQkJICAg ICBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKSArIHJlZ251bSwKLSsJCQkgICAgIGJ1Zik7Ci0rCSAg LyogLi4uIFdyaXRlIHVwcGVyIDEyOGJpdHMuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd193cml0ZSAo cmVnY2FjaGUsCi0rCQkJICAgICB0ZGVwLT55bW0waF9yZWdudW0gKyByZWdudW0sCi0rCQkJICAg ICBidWYgKyAxNik7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChpMzg2X3dvcmRfcmVnbnVtX3AgKGdk YmFyY2gsIHJlZ251bSkpCi0gCXsKLSAJICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5heF9y ZWdudW07Ci0gCi1AQCAtMjU4MSw2ICsyNzI4LDI4IEBAIGkzODZfY29sbGVjdF9mcHJlZ3NldCAo Y29uc3Qgc3RydWN0IHJlZ3MKLSAgIGkzODdfY29sbGVjdF9mc2F2ZSAocmVnY2FjaGUsIHJlZ251 bSwgZnByZWdzKTsKLSB9Ci0gCi0rLyogU2ltaWxhciB0byBpMzg2X3N1cHBseV9mcHJlZ3NldCwg YnV0IHVzZSBYU0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpMzg2 X3N1cHBseV94c3RhdGVyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKLSsJCQkg IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sCi0rCQkJICBjb25zdCB2b2lk ICp4c3RhdGVyZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3Rk ZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBpMzg3X3N1cHBseV94 c2F2ZSAocmVnY2FjaGUsIHJlZ251bSwgeHN0YXRlcmVncyk7Ci0rfQotKwotKy8qIFNpbWlsYXIg dG8gaTM4Nl9jb2xsZWN0X2ZwcmVnc2V0ICwgYnV0IHVzZSBYU0FWRSBleHRlbmRlZCBzdGF0ZS4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStpMzg2X2NvbGxlY3RfeHN0YXRlcmVnc2V0IChjb25zdCBz dHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCi0rCQkJICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwKLSsJCQkgICBpbnQgcmVnbnVtLCB2b2lkICp4c3RhdGVyZWdzLCBzaXplX3QgbGVuKQot K3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJl Z3NldC0+YXJjaCk7Ci0rICBpMzg3X2NvbGxlY3RfeHNhdmUgKHJlZ2NhY2hlLCByZWdudW0sIHhz dGF0ZXJlZ3MsIDEpOwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVy IHNldCBmb3IgdGhlIGNvcmUgc2VjdGlvbiBpZGVudGlmaWVkCi0gICAgYnkgU0VDVF9OQU1FIGFu ZCBTRUNUX1NJWkUuICAqLwotIAotQEAgLTI2MDgsNiArMjc3NywxNiBAQCBpMzg2X3JlZ3NldF9m cm9tX2NvcmVfc2VjdGlvbiAoc3RydWN0IGdkCi0gICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0 OwotICAgICB9Ci0gCi0rICBpZiAoc3RyY21wIChzZWN0X25hbWUsICIucmVnLXhzdGF0ZSIpID09 IDApCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+eHN0YXRlcmVnc2V0ID09IE5VTEwpCi0rCXRk ZXAtPnhzdGF0ZXJlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwKLSsJCQkJCSAgIGkzODZf c3VwcGx5X3hzdGF0ZXJlZ3NldCwKLSsJCQkJCSAgIGkzODZfY29sbGVjdF94c3RhdGVyZWdzZXQp OwotKwotKyAgICAgIHJldHVybiB0ZGVwLT54c3RhdGVyZWdzZXQ7Ci0rICAgIH0KLSsKLSAgIHJl dHVybiBOVUxMOwotIH0KLSAMCi1AQCAtMjgwMSw0NiArMjk4MCw2MCBAQCBpbnQKLSBpMzg2X3Jl Z2lzdGVyX3JlZ2dyb3VwX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAot IAkJCSAgc3RydWN0IHJlZ2dyb3VwICpncm91cCkKLSB7Ci0tICBpbnQgc3NlX3JlZ251bV9wLCBm cF9yZWdudW1fcCwgbW14X3JlZ251bV9wLCBieXRlX3JlZ251bV9wLAotLSAgICAgIHdvcmRfcmVn bnVtX3AsIGR3b3JkX3JlZ251bV9wOwotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRl cCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rICBpbnQgZnBfcmVnbnVtX3AsIG1teF9yZWdu dW1fcCwgeG1tX3JlZ251bV9wLCBteGNzcl9yZWdudW1fcCwKLSsgICAgICB5bW1fcmVnbnVtX3As IHltbWhfcmVnbnVtX3A7Ci0gCi0gICAvKiBEb24ndCBpbmNsdWRlIHBzZXVkbyByZWdpc3RlcnMs IGV4Y2VwdCBmb3IgTU1YLCBpbiBhbnkgcmVnaXN0ZXIKLSAgICAgIGdyb3Vwcy4gICovCi0tICBi eXRlX3JlZ251bV9wID0gaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pOwotLSAg aWYgKGJ5dGVfcmVnbnVtX3ApCi0rICBpZiAoaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCBy ZWdudW0pKQotICAgICByZXR1cm4gMDsKLSAKLS0gIHdvcmRfcmVnbnVtX3AgPSBpMzg2X3dvcmRf cmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSk7Ci0tICBpZiAod29yZF9yZWdudW1fcCkKLSsgIGlm IChpMzg2X3dvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVybiAwOwot IAotLSAgZHdvcmRfcmVnbnVtX3AgPSBpMzg2X2R3b3JkX3JlZ251bV9wIChnZGJhcmNoLCByZWdu dW0pOwotLSAgaWYgKGR3b3JkX3JlZ251bV9wKQotKyAgaWYgKGkzODZfZHdvcmRfcmVnbnVtX3Ag KGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVybiAwOwotIAotICAgbW14X3JlZ251bV9wID0g aTM4Nl9tbXhfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSk7Ci0gICBpZiAoZ3JvdXAgPT0gaTM4 Nl9tbXhfcmVnZ3JvdXApCi0gICAgIHJldHVybiBtbXhfcmVnbnVtX3A7Ci0gCi0tICBzc2VfcmVn bnVtX3AgPSAoaTM4Nl9zc2VfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkKLS0JCSAgfHwgaTM4 Nl9teGNzcl9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0rICB4bW1fcmVnbnVtX3AgPSBp Mzg2X3htbV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSsgIG14Y3NyX3JlZ251bV9wID0g aTM4Nl9teGNzcl9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSAgIGlmIChncm91cCA9PSBp Mzg2X3NzZV9yZWdncm91cCkKLS0gICAgcmV0dXJuIHNzZV9yZWdudW1fcDsKLSsgICAgcmV0dXJu IHhtbV9yZWdudW1fcCB8fCBteGNzcl9yZWdudW1fcDsKLSsKLSsgIHltbV9yZWdudW1fcCA9IGkz ODZfeW1tX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pOwotICAgaWYgKGdyb3VwID09IHZlY3Rv cl9yZWdncm91cCkKLS0gICAgcmV0dXJuIG1teF9yZWdudW1fcCB8fCBzc2VfcmVnbnVtX3A7Ci0r ICAgIHJldHVybiAobW14X3JlZ251bV9wCi0rCSAgICB8fCB5bW1fcmVnbnVtX3AKLSsJICAgIHx8 IG14Y3NyX3JlZ251bV9wCi0rCSAgICB8fCAoeG1tX3JlZ251bV9wCi0rCQkmJiAoKHRkZXAtPnhj cjAgJiBJMzg2X1hTVEFURV9BVlhfTUFTSykKLSsJCSAgICA9PSBJMzg2X1hTVEFURV9TU0VfTUFT SykpKTsKLSAKLSAgIGZwX3JlZ251bV9wID0gKGkzODZfZnBfcmVnbnVtX3AgKGdkYmFyY2gsIHJl Z251bSkKLSAJCSB8fCBpMzg2X2ZwY19yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0gICBp ZiAoZ3JvdXAgPT0gZmxvYXRfcmVnZ3JvdXApCi0gICAgIHJldHVybiBmcF9yZWdudW1fcDsKLSAK LSsgIC8qIEZvciAiaW5mbyByZWcgYWxsIiwgZG9uJ3QgaW5jbHVkZSB1cHBlciBZTU0gcmVnaXN0 ZXJzIG5vciBYTU0KLSsgICAgIHJlZ2lzdGVycyB3aGVuIEFWWCBpcyBzdXBwb3J0ZWQuICAqLwot KyAgeW1taF9yZWdudW1fcCA9IGkzODZfeW1taF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsK LSsgIGlmIChncm91cCA9PSBhbGxfcmVnZ3JvdXAKLSsgICAgICAmJiAoKHhtbV9yZWdudW1fcAot KwkgICAmJiAodGRlcC0+eGNyMCAmIEkzODZfWFNUQVRFX0FWWCkpCi0rCSAgfHwgeW1taF9yZWdu dW1fcCkpCi0rICAgIHJldHVybiAwOwotKwotICAgaWYgKGdyb3VwID09IGdlbmVyYWxfcmVnZ3Jv dXApCi0gICAgIHJldHVybiAoIWZwX3JlZ251bV9wCi0gCSAgICAmJiAhbW14X3JlZ251bV9wCi0t CSAgICAmJiAhc3NlX3JlZ251bV9wCi0tCSAgICAmJiAhYnl0ZV9yZWdudW1fcAotLQkgICAgJiYg IXdvcmRfcmVnbnVtX3AKLS0JICAgICYmICFkd29yZF9yZWdudW1fcCk7Ci0rCSAgICAmJiAhbXhj c3JfcmVnbnVtX3AKLSsJICAgICYmICF4bW1fcmVnbnVtX3AKLSsJICAgICYmICF5bW1fcmVnbnVt X3AKLSsJICAgICYmICF5bW1oX3JlZ251bV9wKTsKLSAKLSAgIHJldHVybiBkZWZhdWx0X3JlZ2lz dGVyX3JlZ2dyb3VwX3AgKGdkYmFyY2gsIHJlZ251bSwgZ3JvdXApOwotIH0KLUBAIC01NjUwLDcg KzU4NDMsOCBAQCBpMzg2X3ZhbGlkYXRlX3RkZXNjX3AgKHN0cnVjdCBnZGJhcmNoX3RkCi0gCQkg ICAgICAgc3RydWN0IHRkZXNjX2FyY2hfZGF0YSAqdGRlc2NfZGF0YSkKLSB7Ci0gICBjb25zdCBz dHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjID0gdGRlcC0+dGRlc2M7Ci0tICBjb25zdCBzdHJ1Y3Qg dGRlc2NfZmVhdHVyZSAqZmVhdHVyZV9jb3JlLCAqZmVhdHVyZV92ZWN0b3I7Ci0rICBjb25zdCBz dHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZV9jb3JlOwotKyAgY29uc3Qgc3RydWN0IHRkZXNj X2ZlYXR1cmUgKmZlYXR1cmVfc3NlLCAqZmVhdHVyZV9hdng7Ci0gICBpbnQgaSwgbnVtX3JlZ3Ms IHZhbGlkX3A7Ci0gCi0gICBpZiAoISB0ZGVzY19oYXNfcmVnaXN0ZXJzICh0ZGVzYykpCi1AQCAt NTY2MCwxMyArNTg1NCwzNyBAQCBpMzg2X3ZhbGlkYXRlX3RkZXNjX3AgKHN0cnVjdCBnZGJhcmNo X3RkCi0gICBmZWF0dXJlX2NvcmUgPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNjLCAib3JnLmdu dS5nZGIuaTM4Ni5jb3JlIik7Ci0gCi0gICAvKiBHZXQgU1NFIHJlZ2lzdGVycy4gICovCi0tICBm ZWF0dXJlX3ZlY3RvciA9IHRkZXNjX2ZpbmRfZmVhdHVyZSAodGRlc2MsICJvcmcuZ251LmdkYi5p Mzg2LnNzZSIpOwotKyAgZmVhdHVyZV9zc2UgPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNjLCAi b3JnLmdudS5nZGIuaTM4Ni5zc2UiKTsKLSAKLS0gIGlmIChmZWF0dXJlX2NvcmUgPT0gTlVMTCB8 fCBmZWF0dXJlX3ZlY3RvciA9PSBOVUxMKQotKyAgaWYgKGZlYXR1cmVfY29yZSA9PSBOVUxMIHx8 IGZlYXR1cmVfc3NlID09IE5VTEwpCi0gICAgIHJldHVybiAwOwotIAotKyAgLyogVHJ5IEFWWCBy ZWdpc3RlcnMuICAqLwotKyAgZmVhdHVyZV9hdnggPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNj LCAib3JnLmdudS5nZGIuaTM4Ni5hdngiKTsKLSsKLSAgIHZhbGlkX3AgPSAxOwotIAotKyAgLyog VGhlIFhDUjAgYml0cy4gICovCi0rICBpZiAoZmVhdHVyZV9hdngpCi0rICAgIHsKLSsgICAgICB0 ZGVwLT54Y3IwID0gSTM4Nl9YU1RBVEVfQVZYX01BU0s7Ci0rCi0rICAgICAgLyogSXQgbWF5IGhh dmUgYmVlbiBzZXQgYnkgT1NBQkkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uICAqLwotKyAgICAg IGlmICh0ZGVwLT5udW1feW1tX3JlZ3MgPT0gMCkKLSsJewotKwkgIHRkZXAtPnltbWhfcmVnaXN0 ZXJfbmFtZXMgPSBpMzg2X3ltbWhfbmFtZXM7Ci0rCSAgdGRlcC0+bnVtX3ltbV9yZWdzID0gODsK LSsJICB0ZGVwLT55bW0waF9yZWdudW0gPSBJMzg2X1lNTTBIX1JFR05VTTsKLSsJfQotKwotKyAg ICAgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5udW1feW1tX3JlZ3M7IGkrKykKLSsJdmFsaWRfcCAm PSB0ZGVzY19udW1iZXJlZF9yZWdpc3RlciAoZmVhdHVyZV9hdngsIHRkZXNjX2RhdGEsCi0rCQkJ CQkgICAgdGRlcC0+eW1tMGhfcmVnbnVtICsgaSwKLSsJCQkJCSAgICB0ZGVwLT55bW1oX3JlZ2lz dGVyX25hbWVzW2ldKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB0ZGVwLT54Y3IwID0gSTM4Nl9Y U1RBVEVfU1NFX01BU0s7Ci0rCi0gICBudW1fcmVncyA9IHRkZXAtPm51bV9jb3JlX3JlZ3M7Ci0g ICBmb3IgKGkgPSAwOyBpIDwgbnVtX3JlZ3M7IGkrKykKLSAgICAgdmFsaWRfcCAmPSB0ZGVzY19u dW1iZXJlZF9yZWdpc3RlciAoZmVhdHVyZV9jb3JlLCB0ZGVzY19kYXRhLCBpLAotQEAgLTU2NzUs NyArNTg5Myw3IEBAIGkzODZfdmFsaWRhdGVfdGRlc2NfcCAoc3RydWN0IGdkYmFyY2hfdGQKLSAg IC8qIE5lZWQgdG8gaW5jbHVkZSAlbXhjc3IsIHNvIGFkZCBvbmUuICAqLwotICAgbnVtX3JlZ3Mg Kz0gdGRlcC0+bnVtX3htbV9yZWdzICsgMTsKLSAgIGZvciAoOyBpIDwgbnVtX3JlZ3M7IGkrKykK LS0gICAgdmFsaWRfcCAmPSB0ZGVzY19udW1iZXJlZF9yZWdpc3RlciAoZmVhdHVyZV92ZWN0b3Is IHRkZXNjX2RhdGEsIGksCi0rICAgIHZhbGlkX3AgJj0gdGRlc2NfbnVtYmVyZWRfcmVnaXN0ZXIg KGZlYXR1cmVfc3NlLCB0ZGVzY19kYXRhLCBpLAotIAkJCQkJdGRlcC0+cmVnaXN0ZXJfbmFtZXNb aV0pOwotIAotICAgcmV0dXJuIHZhbGlkX3A7Ci1AQCAtNTY5MCw2ICs1OTA4LDcgQEAgaTM4Nl9n ZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgc3RydWN0IHRkZXNjX2FyY2hf ZGF0YSAqdGRlc2NfZGF0YTsKLSAgIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2M7Ci0g ICBpbnQgbW0wX3JlZ251bTsKLSsgIGludCB5bW0wX3JlZ251bTsKLSAKLSAgIC8qIElmIHRoZXJl IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUsIHVzZSBpdC4gICovCi0gICBhcmNoZXMgPSBnZGJhcmNo X2xpc3RfbG9va3VwX2J5X2luZm8gKGFyY2hlcywgJmluZm8pOwotQEAgLTU3MTAsNiArNTkyOSw4 IEBAIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKLSAgIHRkZXAtPmZw cmVnc2V0ID0gTlVMTDsKLSAgIHRkZXAtPnNpemVvZl9mcHJlZ3NldCA9IEkzODdfU0laRU9GX0ZT QVZFOwotIAotKyAgdGRlcC0+eHN0YXRlcmVnc2V0ID0gTlVMTDsKLSsKLSAgIC8qIFRoZSBkZWZh dWx0IHNldHRpbmdzIGluY2x1ZGUgdGhlIEZQVSByZWdpc3RlcnMsIHRoZSBNTVggcmVnaXN0ZXJz Ci0gICAgICBhbmQgdGhlIFNTRSByZWdpc3RlcnMuICBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGZv ciBhIHNwZWNpZmljIEFCSQotICAgICAgYnkgYWRqdXN0aW5nIHRoZSBtZW1iZXJzIGBzdDBfcmVn bnVtJywgYG1tMF9yZWdudW0nIGFuZAotQEAgLTU3NDIsNiArNTk2Myw4IEBAIGkzODZfZ2RiYXJj aF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKLSAgIC8qIFVud2luZGluZyBzdG9wcyBvbiBp Mzg2IGF1dG9tYXRpY2FsbHkuICAqLwotICAgdGRlcC0+b3V0ZXJtb3N0X2ZyYW1lX3AgPSBOVUxM OwotIAotKyAgdGRlcC0+eHNhdmVfeGNyMF9vZmZzZXQgPSAtMTsKLSsKLSAgIHRkZXAtPnJlY29y ZF9yZWdtYXAgPSBpMzg2X3JlY29yZF9yZWdtYXA7Ci0gCi0gICAvKiBUaGUgZm9ybWF0IHVzZWQg Zm9yIGBsb25nIGRvdWJsZScgb24gYWxtb3N0IGFsbCBpMzg2IHRhcmdldHMgaXMKLUBAIC01ODU4 LDkgKzYwODEsMTQgQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQot ICAgc2V0X3RkZXNjX3BzZXVkb19yZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBpMzg2X3BzZXVkb19y ZWdpc3Rlcl90eXBlKTsKLSAgIHNldF90ZGVzY19wc2V1ZG9fcmVnaXN0ZXJfbmFtZSAoZ2RiYXJj aCwgaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk7Ci0gCi0tICAvKiBUaGUgZGVmYXVsdCBBQkkg aW5jbHVkZXMgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycywgCi0tICAgICBmbG9hdGluZy1wb2lu dCByZWdpc3RlcnMsIGFuZCB0aGUgU1NFIHJlZ2lzdGVycy4gICovCi0tICBzZXRfZ2RiYXJjaF9u dW1fcmVncyAoZ2RiYXJjaCwgSTM4Nl9TU0VfTlVNX1JFR1MpOwotKyAgLyogT3ZlcnJpZGUgdGhl IG5vcm1hbCB0YXJnZXQgZGVzY3JpcHRpb24gbWV0aG9kIHRvIG1ha2UgdGhlIEFWWAotKyAgICAg dXBwZXIgaGFsdmVzIGFub255bW91cy4gICovCi0rICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1l IChnZGJhcmNoLCBpMzg2X3JlZ2lzdGVyX25hbWUpOwotKwotKyAgLyogRXZlbiB0aG91Z2ggdGhl IGRlZmF1bHQgQUJJIG9ubHkgaW5jbHVkZXMgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycywKLSsg ICAgIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycyBhbmQgdGhlIFNTRSByZWdpc3RlcnMsIHdlIGhh dmUgdG8gbGVhdmUgYQotKyAgICAgZ2FwIGZvciB0aGUgdXBwZXIgQVZYIHJlZ2lzdGVycy4gICov Ci0rICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgSTM4Nl9BVlhfTlVNX1JFR1MpOwot IAotICAgLyogR2V0IHRoZSB4ODYgdGFyZ2V0IGRlc2NyaXB0aW9uIGZyb20gSU5GTy4gICovCi0g ICB0ZGVzYyA9IGluZm8udGFyZ2V0X2Rlc2M7Ci1AQCAtNTg3MSwxMCArNjA5OSwxNSBAQCBpMzg2 X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gICB0ZGVwLT5udW1fY29yZV9y ZWdzID0gSTM4Nl9OVU1fR1JFR1MgKyBJMzg3X05VTV9SRUdTOwotICAgdGRlcC0+cmVnaXN0ZXJf bmFtZXMgPSBpMzg2X3JlZ2lzdGVyX25hbWVzOwotIAotKyAgLyogTm8gdXBwZXIgWU1NIHJlZ2lz dGVycy4gICovCi0rICB0ZGVwLT55bW1oX3JlZ2lzdGVyX25hbWVzID0gTlVMTDsKLSsgIHRkZXAt PnltbTBoX3JlZ251bSA9IC0xOwotKwotICAgdGRlcC0+bnVtX2J5dGVfcmVncyA9IDg7Ci0gICB0 ZGVwLT5udW1fd29yZF9yZWdzID0gODsKLSAgIHRkZXAtPm51bV9kd29yZF9yZWdzID0gMDsKLSAg IHRkZXAtPm51bV9tbXhfcmVncyA9IDg7Ci0rICB0ZGVwLT5udW1feW1tX3JlZ3MgPSAwOwotIAot ICAgdGRlc2NfZGF0YSA9IHRkZXNjX2RhdGFfYWxsb2MgKCk7Ci0gCi1AQCAtNTg4MiwyNCArNjEx NSwyNSBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gICBpbmZv LnRkZXBfaW5mbyA9ICh2b2lkICopIHRkZXNjX2RhdGE7Ci0gICBnZGJhcmNoX2luaXRfb3NhYmkg KGluZm8sIGdkYmFyY2gpOwotIAotKyAgaWYgKCFpMzg2X3ZhbGlkYXRlX3RkZXNjX3AgKHRkZXAs IHRkZXNjX2RhdGEpKQotKyAgICB7Ci0rICAgICAgdGRlc2NfZGF0YV9jbGVhbnVwICh0ZGVzY19k YXRhKTsKLSsgICAgICB4ZnJlZSAodGRlcCk7Ci0rICAgICAgZ2RiYXJjaF9mcmVlIChnZGJhcmNo KTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotICAgLyogV2lyZSBpbiBwc2V1ZG8g cmVnaXN0ZXJzLiAgTnVtYmVyIG9mIHBzZXVkbyByZWdpc3RlcnMgbWF5IGJlCi0gICAgICBjaGFu Z2VkLiAgKi8KLSAgIHNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncyAoZ2RiYXJjaCwgKHRkZXAt Pm51bV9ieXRlX3JlZ3MKLSAJCQkJCSArIHRkZXAtPm51bV93b3JkX3JlZ3MKLSAJCQkJCSArIHRk ZXAtPm51bV9kd29yZF9yZWdzCi0tCQkJCQkgKyB0ZGVwLT5udW1fbW14X3JlZ3MpKTsKLSsJCQkJ CSArIHRkZXAtPm51bV9tbXhfcmVncwotKwkJCQkJICsgdGRlcC0+bnVtX3ltbV9yZWdzKSk7Ci0g Ci0gICAvKiBUYXJnZXQgZGVzY3JpcHRpb24gbWF5IGJlIGNoYW5nZWQuICAqLwotICAgdGRlc2Mg PSB0ZGVwLT50ZGVzYzsKLSAKLS0gIGlmICghaTM4Nl92YWxpZGF0ZV90ZGVzY19wICh0ZGVwLCB0 ZGVzY19kYXRhKSkKLS0gICAgewotLSAgICAgIHRkZXNjX2RhdGFfY2xlYW51cCAodGRlc2NfZGF0 YSk7Ci0tICAgICAgeGZyZWUgKHRkZXApOwotLSAgICAgIGdkYmFyY2hfZnJlZSAoZ2RiYXJjaCk7 Ci0tICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0KLS0KLSAgIHRkZXNjX3VzZV9yZWdpc3RlcnMg KGdkYmFyY2gsIHRkZXNjLCB0ZGVzY19kYXRhKTsKLSAKLSAgIC8qIE92ZXJyaWRlIGdkYmFyY2hf cmVnaXN0ZXJfcmVnZ3JvdXBfcCBzZXQgaW4gdGRlc2NfdXNlX3JlZ2lzdGVycy4gICovCi1AQCAt NTkwOSwxNiArNjE0MywyNiBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5m byBpCi0gICB0ZGVwLT5hbF9yZWdudW0gPSBnZGJhcmNoX251bV9yZWdzIChnZGJhcmNoKTsKLSAg IHRkZXAtPmF4X3JlZ251bSA9IHRkZXAtPmFsX3JlZ251bSArIHRkZXAtPm51bV9ieXRlX3JlZ3M7 Ci0gCi0tICBtbTBfcmVnbnVtID0gdGRlcC0+YXhfcmVnbnVtICsgdGRlcC0+bnVtX3dvcmRfcmVn czsKLSsgIHltbTBfcmVnbnVtID0gdGRlcC0+YXhfcmVnbnVtICsgdGRlcC0+bnVtX3dvcmRfcmVn czsKLSAgIGlmICh0ZGVwLT5udW1fZHdvcmRfcmVncykKLSAgICAgewotICAgICAgIC8qIFN1cHBv cnQgZHdvcmQgcHNldWRvLXJlZ2lzdGVzciBpZiBpdCBoYXNuJ3QgYmVlbiBkaXNhYmxlZCwgICov Ci0tICAgICAgdGRlcC0+ZWF4X3JlZ251bSA9IG1tMF9yZWdudW07Ci0tICAgICAgbW0wX3JlZ251 bSA9IHRkZXAtPmVheF9yZWdudW0gKyB0ZGVwLT5udW1fZHdvcmRfcmVnczsKLSsgICAgICB0ZGVw LT5lYXhfcmVnbnVtID0geW1tMF9yZWdudW07Ci0rICAgICAgeW1tMF9yZWdudW0gKz0gdGRlcC0+ bnVtX2R3b3JkX3JlZ3M7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgdGRlcC0+ZWF4X3JlZ251bSA9 IC0xOwotIAotKyAgbW0wX3JlZ251bSA9IHltbTBfcmVnbnVtOwotKyAgaWYgKHRkZXAtPm51bV95 bW1fcmVncykKLSsgICAgewotKyAgICAgIC8qIFN1cHBvcnQgWU1NIHBzZXVkby1yZWdpc3Rlc3Ig aWYgaXQgaXMgYXZhaWxhYmxlLCAgKi8KLSsgICAgICB0ZGVwLT55bW0wX3JlZ251bSA9IHltbTBf cmVnbnVtOwotKyAgICAgIG1tMF9yZWdudW0gKz0gdGRlcC0+bnVtX3ltbV9yZWdzOwotKyAgICB9 Ci0rICBlbHNlCi0rICAgIHRkZXAtPnltbTBfcmVnbnVtID0gLTE7Ci0rCi0gICBpZiAodGRlcC0+ bnVtX21teF9yZWdzICE9IDApCi0gICAgIHsKLSAgICAgICAvKiBTdXBwb3J0IE1NWCBwc2V1ZG8t cmVnaXN0ZXNyIGlmIE1NWCBoYXNuJ3QgYmVlbiBkaXNhYmxlZCwgICovCi1AQCAtNjAwMSw2ICs2 MjQ1LDcgQEAgaXMgXCJkZWZhdWx0XCIuIiksCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBzdGFu ZGFyZCB0YXJnZXQgZGVzY3JpcHRpb25zLiAgKi8KLSAgIGluaXRpYWxpemVfdGRlc2NfaTM4NiAo KTsKLSsgIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnggKCk7Ci0gCi0gICAvKiBUZWxsIHJlbW90 ZSBzdHViIHRoYXQgd2Ugc3VwcG9ydCBYTUwgdGFyZ2V0IGRlc2NyaXB0aW9uLiAgKi8KLSAgIHJl Z2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCAoImkzODYiKTsKLS0tLSAuL2dkYi9pMzg2LXRkZXAu aAkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODYtdGRl cC5oCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTA5LDYgKzEwOSw5 IEBAIHN0cnVjdCBnZGJhcmNoX3RkZXAKLSAgIHN0cnVjdCByZWdzZXQgKmZwcmVnc2V0OwotICAg c2l6ZV90IHNpemVvZl9mcHJlZ3NldDsKLSAKLSsgIC8qIFhTQVZFIGV4dGVuZGVkIHN0YXRlLiAg Ki8KLSsgIHN0cnVjdCByZWdzZXQgKnhzdGF0ZXJlZ3NldDsKLSsKLSAgIC8qIFJlZ2lzdGVyIG51 bWJlciBmb3IgJXN0KDApLiAgVGhlIHJlZ2lzdGVyIG51bWJlcnMgZm9yIHRoZSBvdGhlcgotICAg ICAgcmVnaXN0ZXJzIGZvbGxvdyBmcm9tIHRoaXMgb25lLiAgU2V0IHRoaXMgdG8gLTEgdG8gaW5k aWNhdGUgdGhlCi0gICAgICBhYnNlbmNlIG9mIGFuIEZQVS4gICovCi1AQCAtMTIxLDYgKzEyNCwx MyBAQCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwCi0gICAgICBvZiBNTVggc3VwcG9ydC4gICovCi0gICBp bnQgbW0wX3JlZ251bTsKLSAKLSsgIC8qIE51bWJlciBvZiBwc2V1ZG8gWU1NIHJlZ2lzdGVycy4g ICovCi0rICBpbnQgbnVtX3ltbV9yZWdzOwotKwotKyAgLyogUmVnaXN0ZXIgbnVtYmVyIGZvciAl eW1tMC4gIFNldCB0aGlzIHRvIC0xIHRvIGluZGljYXRlIHRoZSBhYnNlbmNlCi0rICAgICBvZiBw c2V1ZG8gWU1NIHJlZ2lzdGVyIHN1cHBvcnQuICAqLwotKyAgaW50IHltbTBfcmVnbnVtOwotKwot ICAgLyogTnVtYmVyIG9mIGJ5dGUgcmVnaXN0ZXJzLiAgKi8KLSAgIGludCBudW1fYnl0ZV9yZWdz OwotIAotQEAgLTE0Niw5ICsxNTYsMjQgQEAgc3RydWN0IGdkYmFyY2hfdGRlcAotICAgLyogTnVt YmVyIG9mIFNTRSByZWdpc3RlcnMuICAqLwotICAgaW50IG51bV94bW1fcmVnczsKLSAKLSsgIC8q IEJpdHMgb2YgdGhlIGV4dGVuZGVkIGNvbnRyb2wgcmVnaXN0ZXIgMCAodGhlIFhGRUFUVVJFX0VO QUJMRURfTUFTSwotKyAgICAgcmVnaXN0ZXIpLCBleGNsdWRpbmcgdGhlIHg4NyBiaXQsIHdoaWNo IGFyZSBzdXBwb3J0ZWQgYnkgdGhpcyBHREIuCi0rICAgKi8KLSsgIHVpbnQ2NF90IHhjcjA7Ci0r Ci0rICAvKiBPZmZzZXQgb2YgWENSMCBpbiBYU0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rICBp bnQgeHNhdmVfeGNyMF9vZmZzZXQ7Ci0rCi0gICAvKiBSZWdpc3RlciBuYW1lcy4gICovCi0gICBj b25zdCBjaGFyICoqcmVnaXN0ZXJfbmFtZXM7Ci0gCi0rICAvKiBSZWdpc3RlciBudW1iZXIgZm9y ICV5bW0waC4gIFNldCB0aGlzIHRvIC0xIHRvIGluZGljYXRlIHRoZSBhYnNlbmNlCi0rICAgICBv ZiB1cHBlciBZTU0gcmVnaXN0ZXIgc3VwcG9ydC4gICovCi0rICBpbnQgeW1tMGhfcmVnbnVtOwot KwotKyAgLyogVXBwZXIgWU1NIHJlZ2lzdGVyIG5hbWVzLiAgT25seSB1c2VkIGZvciB0ZGVzY19u dW1iZXJlZF9yZWdpc3Rlci4gICovCi0rICBjb25zdCBjaGFyICoqeW1taF9yZWdpc3Rlcl9uYW1l czsKLSsKLSAgIC8qIFRhcmdldCBkZXNjcmlwdGlvbi4gICovCi0gICBjb25zdCBzdHJ1Y3QgdGFy Z2V0X2Rlc2MgKnRkZXNjOwotIAotQEAgLTE4Miw2ICsyMDcsNyBAQCBzdHJ1Y3QgZ2RiYXJjaF90 ZGVwCi0gCi0gICAvKiBJU0Etc3BlY2lmaWMgZGF0YSB0eXBlcy4gICovCi0gICBzdHJ1Y3QgdHlw ZSAqaTM4Nl9tbXhfdHlwZTsKLSsgIHN0cnVjdCB0eXBlICppMzg2X3ltbV90eXBlOwotICAgc3Ry dWN0IHR5cGUgKmkzODdfZXh0X3R5cGU7Ci0gCi0gICAvKiBQcm9jZXNzIHJlY29yZC9yZXBsYXkg dGFyZ2V0LiAgKi8KLUBAIC0yMzEsNyArMjU3LDkgQEAgZW51bSBpMzg2X3JlZ251bQotICAgSTM4 Nl9GU19SRUdOVU0sCQkvKiAlZnMgKi8KLSAgIEkzODZfR1NfUkVHTlVNLAkJLyogJWdzICovCi0g ICBJMzg2X1NUMF9SRUdOVU0sCQkvKiAlc3QoMCkgKi8KLS0gIEkzODZfTVhDU1JfUkVHTlVNID0g NDAJLyogJW14Y3NyICovIAotKyAgSTM4Nl9NWENTUl9SRUdOVU0gPSA0MCwJLyogJW14Y3NyICov IAotKyAgSTM4Nl9ZTU0wSF9SRUdOVU0sCQkvKiAleW1tMGggKi8KLSsgIEkzODZfWU1NN0hfUkVH TlVNID0gSTM4Nl9ZTU0wSF9SRUdOVU0gKyA3Ci0gfTsKLSAKLSAvKiBSZWdpc3RlciBudW1iZXJz IG9mIFJFQ09SRF9SRUdNQVAuICAqLwotQEAgLTI2OCw2ICsyOTYsNyBAQCBlbnVtIHJlY29yZF9p Mzg2X3JlZ251bQotICNkZWZpbmUgSTM4Nl9OVU1fWFJFR1MgIDkKLSAKLSAjZGVmaW5lIEkzODZf U1NFX05VTV9SRUdTCShJMzg2X01YQ1NSX1JFR05VTSArIDEpCi0rI2RlZmluZSBJMzg2X0FWWF9O VU1fUkVHUwkoSTM4Nl9ZTU03SF9SRUdOVU0gKyAxKQotIAotIC8qIFNpemUgb2YgdGhlIGxhcmdl c3QgcmVnaXN0ZXIuICAqLwotICNkZWZpbmUgSTM4Nl9NQVhfUkVHSVNURVJfU0laRQkxNgotQEAg LTI3OSw2ICszMDgsOSBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmkzODdfZXh0X3R5cGUgKHN0cnVj Ci0gZXh0ZXJuIGludCBpMzg2X2J5dGVfcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBpbnQgcmVnbnVtKTsKLSBleHRlcm4gaW50IGkzODZfd29yZF9yZWdudW1fcCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pOwotIGV4dGVybiBpbnQgaTM4Nl9kd29yZF9yZWdu dW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pOwotK2V4dGVybiBpbnQg aTM4Nl94bW1fcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKTsK LStleHRlcm4gaW50IGkzODZfeW1tX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg aW50IHJlZ251bSk7Ci0rZXh0ZXJuIGludCBpMzg2X3ltbWhfcmVnbnVtX3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKTsKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqaTM4Nl9w c2V1ZG9fcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJCQkgICAg ICBpbnQgcmVnbnVtKTsKLS0tLSAuL2dkYi9pMzg3LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjM2 LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2kzODctdGRlcC5jCTIwMTAtMDQtMDMgMjE6MTI6 MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzQsNiArMzQsNyBAQAotIAotICNpbmNsdWRlICJpMzg2 LXRkZXAuaCIKLSAjaW5jbHVkZSAiaTM4Ny10ZGVwLmgiCi0rI2luY2x1ZGUgImkzODYteHN0YXRl LmgiCi0gCi0gLyogUHJpbnQgdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBzcGVjaWZpZWQgYnkg UkFXLiAgKi8KLSAKLUBAIC02NzcsNiArNjc4LDUxOCBAQCBpMzg3X2NvbGxlY3RfZnhzYXZlIChj b25zdCBzdHJ1Y3QgcmVnY2FjCi0gCQkJICBGWFNBVkVfTVhDU1JfQUREUiAocmVncykpOwotIH0K LSAKLSsvKiBgeHN0YXRlX2J2JyBpcyBhdCBieXRlIG9mZnNldCA1MTIuICAqLwotKyNkZWZpbmUg WFNBVkVfWFNUQVRFX0JWX0FERFIoeHNhdmUpICh4c2F2ZSArIDUxMikKLSsKLSsvKiBBdCB4c2F2 ZV9hdnhoX29mZnNldFtSRUdOVU1dIHlvdSdsbCBmaW5kIHRoZSBvZmZzZXQgdG8gdGhlIGxvY2F0 aW9uIGluCi0rICAgdGhlIHVwcGVyIDEyOGJpdCBvZiBBVlggcmVnaXN0ZXIgZGF0YSBzdHJ1Y3R1 cmUgdXNlZCBieSB0aGUgInhzYXZlIgotKyAgIGluc3RydWN0aW9uIHdoZXJlIEdEQiByZWdpc3Rl ciBSRUdOVU0gaXMgc3RvcmVkLiAgKi8KLSsKLStzdGF0aWMgaW50IHhzYXZlX2F2eGhfb2Zmc2V0 W10gPQotK3sKLSsgIDU3NiArIDAgKiAxNiwJCS8qIFVwcGVyIDEyOGJpdCBvZiAleW1tMCB0aHJv dWdoIC4uLiAgKi8KLSsgIDU3NiArIDEgKiAxNiwKLSsgIDU3NiArIDIgKiAxNiwKLSsgIDU3NiAr IDMgKiAxNiwKLSsgIDU3NiArIDQgKiAxNiwKLSsgIDU3NiArIDUgKiAxNiwKLSsgIDU3NiArIDYg KiAxNiwKLSsgIDU3NiArIDcgKiAxNiwKLSsgIDU3NiArIDggKiAxNiwKLSsgIDU3NiArIDkgKiAx NiwKLSsgIDU3NiArIDEwICogMTYsCi0rICA1NzYgKyAxMSAqIDE2LAotKyAgNTc2ICsgMTIgKiAx NiwKLSsgIDU3NiArIDEzICogMTYsCi0rICA1NzYgKyAxNCAqIDE2LAotKyAgNTc2ICsgMTUgKiAx NgkJLyogVXBwZXIgMTI4Yml0IG9mIC4uLiAleW1tMTUgKDEyOCBiaXRzIGVhY2gpLiAgKi8KLSt9 OwotKwotKyNkZWZpbmUgWFNBVkVfQVZYSF9BRERSKHRkZXAsIHhzYXZlLCByZWdudW0pIFwKLSsg ICh4c2F2ZSArIHhzYXZlX2F2eGhfb2Zmc2V0W3JlZ251bSAtIEkzODdfWU1NMEhfUkVHTlVNICh0 ZGVwKV0pCi0rCi0rLyogU2ltaWxhciB0byBpMzg3X3N1cHBseV9meHNhdmUsIGJ1dCB1c2UgWFNB VkUgZXh0ZW5kZWQgc3RhdGUuICAqLwotKwotK3ZvaWQKLStpMzg3X3N1cHBseV94c2F2ZSAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSwKLSsJCSAgIGNvbnN0IHZvaWQgKnhz YXZlKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdl dF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSkpOwotKyAgY29uc3QgZ2RiX2J5dGUgKnJlZ3MgPSB4 c2F2ZTsKLSsgIGludCBpOwotKyAgdW5zaWduZWQgaW50IGNsZWFyX2J2OwotKyAgY29uc3QgZ2Ri X2J5dGUgKnA7Ci0rICBlbnVtCi0rICAgIHsKLSsgICAgICBub25lID0gMHgwLAotKyAgICAgIHg4 NyA9IDB4MSwKLSsgICAgICBzc2UgPSAweDIsCi0rICAgICAgYXZ4aCA9IDB4NCwKLSsgICAgICBh bGwgPSB4ODcgfCBzc2UgfCBhdnhoCi0rICAgIH0gcmVnY2xhc3M7Ci0rCi0rICBnZGJfYXNzZXJ0 ICh0ZGVwLT5zdDBfcmVnbnVtID49IEkzODZfU1QwX1JFR05VTSk7Ci0rICBnZGJfYXNzZXJ0ICh0 ZGVwLT5udW1feG1tX3JlZ3MgPiAwKTsKLSsKLSsgIGlmIChyZWdudW0gPT0gLTEpCi0rICAgIHJl Z2NsYXNzID0gYWxsOwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWU1NMEhfUkVHTlVNICh0 ZGVwKQotKwkgICAmJiByZWdudW0gPCBJMzg3X1lNTUVOREhfUkVHTlVNICh0ZGVwKSkKLSsgICAg cmVnY2xhc3MgPSBhdnhoOwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWE1NMF9SRUdOVU0o dGRlcCkKLSsJICAgJiYgcmVnbnVtIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApKQotKyAgICBy ZWdjbGFzcyA9IHNzZTsKLSsgIGVsc2UgaWYgKHJlZ251bSA+PSBJMzg3X1NUMF9SRUdOVU0gKHRk ZXApCi0rCSAgICYmIHJlZ251bSA8IEkzODdfRkNUUkxfUkVHTlVNICh0ZGVwKSkKLSsgICAgcmVn Y2xhc3MgPSB4ODc7Ci0rICBlbHNlCi0rICAgIHJlZ2NsYXNzID0gbm9uZTsKLSsKLSsgIGlmIChy ZWdzICE9IE5VTEwgJiYgcmVnY2xhc3MgIT0gbm9uZSkKLSsgICAgewotKyAgICAgIC8qIEdldCBg eHN0YXRfYnYnLiAgKi8KLSsgICAgICBjb25zdCBnZGJfYnl0ZSAqeHN0YXRlX2J2X3AgPSBYU0FW RV9YU1RBVEVfQlZfQUREUiAocmVncyk7Ci0rCi0rICAgICAgLyogVGhlIHN1cHBvcnRlZCBiaXRz IGluIGB4c3RhdF9idicgYXJlIDEgYnl0ZS4gIENsZWFyIHBhcnQgaW4KLSsJIHZlY3RvciByZWdp c3RlcnMgaWYgaXRzIGJpdCBpbiB4c3RhdF9idiBpcyB6ZXJvLiAgKi8KLSsgICAgICBjbGVhcl9i diA9ICh+KCp4c3RhdGVfYnZfcCkpICYgdGRlcC0+eGNyMDsKLSsgICAgfQotKyAgZWxzZQotKyAg ICBjbGVhcl9idiA9IEkzODZfWFNUQVRFX0FWWF9NQVNLOwotKwotKyAgc3dpdGNoIChyZWdjbGFz cykKLSsgICAgewotKyAgICBjYXNlIG5vbmU6Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2Ug YXZ4aDoKLSsgICAgICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJcCA9IE5V TEw7Ci0rICAgICAgZWxzZQotKwlwID0gWFNBVkVfQVZYSF9BRERSICh0ZGVwLCByZWdzLCByZWdu dW0pOwotKyAgICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCByZWdudW0sIHApOwot KyAgICAgIHJldHVybjsKLSsKLSsgICAgY2FzZSBzc2U6Ci0rICAgICAgaWYgKChjbGVhcl9idiAm IEkzODZfWFNUQVRFX1NTRSkpCi0rCXAgPSBOVUxMOwotKyAgICAgIGVsc2UKLSsJcCA9IEZYU0FW RV9BRERSICh0ZGVwLCByZWdzLCByZWdudW0pOwotKyAgICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkg KHJlZ2NhY2hlLCByZWdudW0sIHApOwotKyAgICAgIHJldHVybjsKLSsKLSsgICAgY2FzZSB4ODc6 Ci0rICAgICAgaWYgKChjbGVhcl9idiAmIEkzODZfWFNUQVRFX1g4NykpCi0rCXAgPSBOVUxMOwot KyAgICAgIGVsc2UKLSsJcCA9IEZYU0FWRV9BRERSICh0ZGVwLCByZWdzLCByZWdudW0pOwotKyAg ICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCByZWdudW0sIHApOwotKyAgICAgIHJl dHVybjsKLSsKLSsgICAgY2FzZSBhbGw6Ci0rICAgICAgLyogSGFubGUgdGhlIHVwcGVyIFlNTSBy ZWdpc3RlcnMuICAqLwotKyAgICAgIGlmICgodGRlcC0+eGNyMCAmIEkzODZfWFNUQVRFX0FWWCkp Ci0rCXsKLSsJICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJICAgIHAgPSBO VUxMOwotKwkgIGVsc2UKLSsJICAgIHAgPSByZWdzOwotKwotKwkgIGZvciAoaSA9IEkzODdfWU1N MEhfUkVHTlVNICh0ZGVwKTsKLSsJICAgICAgIGkgPCBJMzg3X1lNTUVOREhfUkVHTlVNICh0ZGVw KTsgaSsrKQotKwkgICAgewotKwkgICAgICBpZiAocCAhPSBOVUxMKQotKwkJcCA9IFhTQVZFX0FW WEhfQUREUiAodGRlcCwgcmVncywgaSk7Ci0rCSAgICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJl Z2NhY2hlLCBpLCBwKTsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIC8qIEhhbmRsZSB0aGUgWE1N IHJlZ2lzdGVycy4gICovCi0rICAgICAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVfU1NF KSkKLSsJewotKwkgIGlmICgoY2xlYXJfYnYgJiBJMzg2X1hTVEFURV9TU0UpKQotKwkgICAgcCA9 IE5VTEw7Ci0rCSAgZWxzZQotKwkgICAgcCA9IHJlZ3M7Ci0rCi0rCSAgZm9yIChpID0gSTM4N19Y TU0wX1JFR05VTSAodGRlcCk7Ci0rCSAgICAgICBpIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXAp OyBpKyspCi0rCSAgICB7Ci0rCSAgICAgIGlmIChwICE9IE5VTEwpCi0rCQlwID0gRlhTQVZFX0FE RFIgKHRkZXAsIHJlZ3MsIGkpOwotKwkgICAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNo ZSwgaSwgcCk7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICAvKiBIYW5kbGUgdGhlIHg4NyByZWdp c3RlcnMuICAqLwotKyAgICAgIGlmICgodGRlcC0+eGNyMCAmIEkzODZfWFNUQVRFX1g4NykpCi0r CXsKLSsJICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfWDg3KSkKLSsJICAgIHAgPSBOVUxM OwotKwkgIGVsc2UKLSsJICAgIHAgPSByZWdzOwotKwotKwkgIGZvciAoaSA9IEkzODdfU1QwX1JF R05VTSAodGRlcCk7Ci0rCSAgICAgICBpIDwgSTM4N19GQ1RSTF9SRUdOVU0gKHRkZXApOyBpKysp Ci0rCSAgICB7Ci0rCSAgICAgIGlmIChwICE9IE5VTEwpCi0rCQlwID0gRlhTQVZFX0FERFIgKHRk ZXAsIHJlZ3MsIGkpOwotKwkgICAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSwg cCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgLyogT25seSBo YW5kbGUgeDg3IGNvbnRyb2wgcmVnaXN0ZXJzLiAgKi8KLSsgIGZvciAoaSA9IEkzODdfRkNUUkxf UkVHTlVNICh0ZGVwKTsgaSA8IEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOyBpKyspCi0rICAgIGlm IChyZWdudW0gPT0gLTEgfHwgcmVnbnVtID09IGkpCi0rICAgICAgewotKwlpZiAocmVncyA9PSBO VUxMKQotKwkgIHsKLSsJICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCBOVUxM KTsKLSsJICAgIGNvbnRpbnVlOwotKwkgIH0KLSsKLSsJLyogTW9zdCBvZiB0aGUgRlBVIGNvbnRy b2wgcmVnaXN0ZXJzIG9jY3VweSBvbmx5IDE2IGJpdHMgaW4KLSsJICAgdGhlIHhzYXZlIGV4dGVu ZGVkIHN0YXRlLiAgR2l2ZSB0aG9zZSBhIHNwZWNpYWwgdHJlYXRtZW50LiAgKi8KLSsJaWYgKGkg IT0gSTM4N19GSU9GRl9SRUdOVU0gKHRkZXApCi0rCSAgICAmJiBpICE9IEkzODdfRk9PRkZfUkVH TlVNICh0ZGVwKSkKLSsJICB7Ci0rCSAgICBnZGJfYnl0ZSB2YWxbNF07Ci0rCi0rCSAgICBtZW1j cHkgKHZhbCwgRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkpLCAyKTsKLSsJICAgIHZhbFsyXSA9 IHZhbFszXSA9IDA7Ci0rCSAgICBpZiAoaSA9PSBJMzg3X0ZPUF9SRUdOVU0gKHRkZXApKQotKwkg ICAgICB2YWxbMV0gJj0gKCgxIDw8IDMpIC0gMSk7Ci0rCSAgICBlbHNlIGlmIChpPT0gSTM4N19G VEFHX1JFR05VTSAodGRlcCkpCi0rCSAgICAgIHsKLSsJCS8qIFRoZSBmeHNhdmUgYXJlYSBjb250 YWlucyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZgotKwkJICAgdGhlIHRhZyB3b3JkLiAgV2UgaGF2 ZSB0byBsb29rIGF0IHRoZSBhY3R1YWwgODAtYml0Ci0rCQkgICBGUCBkYXRhIHRvIHJlY3JlYXRl IHRoZSB0cmFkaXRpb25hbCBpMzg3IHRhZyB3b3JkLiAgKi8KLSsKLSsJCXVuc2lnbmVkIGxvbmcg ZnRhZyA9IDA7Ci0rCQlpbnQgZnByZWc7Ci0rCQlpbnQgdG9wOwotKwotKwkJdG9wID0gKChGWFNB VkVfQUREUiAodGRlcCwgcmVncywKLSsJCQkJICAgICBJMzg3X0ZTVEFUX1JFR05VTSAodGRlcCkp KVsxXSA+PiAzKTsKLSsJCXRvcCAmPSAweDc7Ci0rCi0rCQlmb3IgKGZwcmVnID0gNzsgZnByZWcg Pj0gMDsgZnByZWctLSkKLSsJCSAgewotKwkJICAgIGludCB0YWc7Ci0rCi0rCQkgICAgaWYgKHZh bFswXSAmICgxIDw8IGZwcmVnKSkKLSsJCSAgICAgIHsKLSsJCQlpbnQgcmVnbnVtID0gKGZwcmVn ICsgOCAtIHRvcCkgJSA4IAotKwkJCQkgICAgICAgKyBJMzg3X1NUMF9SRUdOVU0gKHRkZXApOwot KwkJCXRhZyA9IGkzODdfdGFnIChGWFNBVkVfQUREUiAodGRlcCwgcmVncywgcmVnbnVtKSk7Ci0r CQkgICAgICB9Ci0rCQkgICAgZWxzZQotKwkJICAgICAgdGFnID0gMzsJCS8qIEVtcHR5ICovCi0r Ci0rCQkgICAgZnRhZyB8PSB0YWcgPDwgKDIgKiBmcHJlZyk7Ci0rCQkgIH0KLSsJCXZhbFswXSA9 IGZ0YWcgJiAweGZmOwotKwkJdmFsWzFdID0gKGZ0YWcgPj4gOCkgJiAweGZmOwotKwkgICAgICB9 Ci0rCSAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSwgdmFsKTsKLSsJICB9Ci0r CWVsc2UgCi0rCSAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGksIEZYU0FWRV9BRERS ICh0ZGVwLCByZWdzLCBpKSk7Ci0rICAgICAgfQotKwotKyAgaWYgKHJlZ251bSA9PSBJMzg3X01Y Q1NSX1JFR05VTSAodGRlcCkgfHwgcmVnbnVtID09IC0xKQotKyAgICB7Ci0rICAgICAgcCA9IHJl Z3MgPT0gTlVMTCA/IE5VTEwgOiBGWFNBVkVfTVhDU1JfQUREUiAocmVncyk7Ci0rICAgICAgcmVn Y2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIEkzODdfTVhDU1JfUkVHTlVNICh0ZGVwKSwgcCk7 Ci0rICAgIH0KLSt9Ci0rCi0rLyogU2ltaWxhciB0byBpMzg3X2NvbGxlY3RfZnhzYXZlLCBidXQg dXNlIFhTQVZFIGV4dGVuZGVkIHN0YXRlLiAgKi8KLSsKLSt2b2lkCi0raTM4N19jb2xsZWN0X3hz YXZlIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotKwkJICAg IHZvaWQgKnhzYXZlLCBpbnQgZ2NvcmUpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRl cCA9IGdkYmFyY2hfdGRlcCAoZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKSk7Ci0rICBnZGJf Ynl0ZSAqcmVncyA9IHhzYXZlOwotKyAgaW50IGk7Ci0rICBlbnVtCi0rICAgIHsKLSsgICAgICBu b25lID0gMHgwLAotKyAgICAgIGNoZWNrID0gMHgxLAotKyAgICAgIHg4NyA9IDB4MiB8IGNoZWNr LAotKyAgICAgIHNzZSA9IDB4NCB8IGNoZWNrLAotKyAgICAgIGF2eGggPSAweDggfCBjaGVjaywK LSsgICAgICBhbGwgPSB4ODcgfCBzc2UgfCBhdnhoCi0rICAgIH0gcmVnY2xhc3M7Ci0rCi0rICBn ZGJfYXNzZXJ0ICh0ZGVwLT5zdDBfcmVnbnVtID49IEkzODZfU1QwX1JFR05VTSk7Ci0rICBnZGJf YXNzZXJ0ICh0ZGVwLT5udW1feG1tX3JlZ3MgPiAwKTsKLSsKLSsgIGlmIChyZWdudW0gPT0gLTEp Ci0rICAgIHJlZ2NsYXNzID0gYWxsOwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWU1NMEhf UkVHTlVNICh0ZGVwKQotKwkgICAmJiByZWdudW0gPCBJMzg3X1lNTUVOREhfUkVHTlVNICh0ZGVw KSkKLSsgICAgcmVnY2xhc3MgPSBhdnhoOwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWE1N MF9SRUdOVU0odGRlcCkKLSsJICAgJiYgcmVnbnVtIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXAp KQotKyAgICByZWdjbGFzcyA9IHNzZTsKLSsgIGVsc2UgaWYgKHJlZ251bSA+PSBJMzg3X1NUMF9S RUdOVU0gKHRkZXApCi0rCSAgICYmIHJlZ251bSA8IEkzODdfRkNUUkxfUkVHTlVNICh0ZGVwKSkK LSsgICAgcmVnY2xhc3MgPSB4ODc7Ci0rICBlbHNlCi0rICAgIHJlZ2NsYXNzID0gbm9uZTsKLSsK LSsgIGlmIChnY29yZSkKLSsgICAgewotKyAgICAgIC8qIFVwZGF0ZSBYQ1IwIGFuZCBgeHN0YXRl X2J2JyB3aXRoIFhDUjAgZm9yIGdjb3JlLiAgKi8KLSsgICAgICBpZiAodGRlcC0+eHNhdmVfeGNy MF9vZmZzZXQgIT0gLTEpCi0rCW1lbWNweSAocmVncyArIHRkZXAtPnhzYXZlX3hjcjBfb2Zmc2V0 LCAmdGRlcC0+eGNyMCwgOCk7Ci0rICAgICAgbWVtY3B5IChYU0FWRV9YU1RBVEVfQlZfQUREUiAo cmVncyksICZ0ZGVwLT54Y3IwLCA4KTsKLSsKLSsgICAgICBzd2l0Y2ggKHJlZ2NsYXNzKQotKwl7 Ci0rCWRlZmF1bHQ6Ci0rCSAgYWJvcnQgKCk7Ci0rCi0rCWNhc2UgYWxsOgotKwkgIC8qIEhhbmRs ZSB0aGUgdXBwZXIgWU1NIHJlZ2lzdGVycy4gICovCi0rCSAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4 Nl9YU1RBVEVfQVZYKSkKLSsJICAgIGZvciAoaSA9IEkzODdfWU1NMEhfUkVHTlVNICh0ZGVwKTsK LSsJCSBpIDwgSTM4N19ZTU1FTkRIX1JFR05VTSAodGRlcCk7IGkrKykKLSsJICAgICAgcmVnY2Fj aGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpLAotKwkJCQkgICAgWFNBVkVfQVZYSF9BRERSICh0 ZGVwLCByZWdzLCBpKSk7Ci0rCi0rCSAgLyogSGFuZGxlIHRoZSBYTU0gcmVnaXN0ZXJzLiAgKi8K LSsJICBpZiAoKHRkZXAtPnhjcjAgJiBJMzg2X1hTVEFURV9TU0UpKQotKwkgICAgZm9yIChpID0g STM4N19YTU0wX1JFR05VTSAodGRlcCk7Ci0rCQkgaSA8IEkzODdfTVhDU1JfUkVHTlVNICh0ZGVw KTsgaSsrKQotKwkgICAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksCi0rCQkJ CSAgICBGWFNBVkVfQUREUiAodGRlcCwgcmVncywgaSkpOwotKwotKwkgIC8qIEhhbmRsZSB0aGUg eDg3IHJlZ2lzdGVycy4gICovCi0rCSAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVfWDg3 KSkKLSsJICAgIGZvciAoaSA9IEkzODdfU1QwX1JFR05VTSAodGRlcCk7Ci0rCQkgaSA8IEkzODdf RkNUUkxfUkVHTlVNICh0ZGVwKTsgaSsrKQotKwkgICAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAo cmVnY2FjaGUsIGksCi0rCQkJCSAgICBGWFNBVkVfQUREUiAodGRlcCwgcmVncywgaSkpOwotKwkg IGJyZWFrOwotKwotKwljYXNlIHg4NzoKLSsJICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2Fj aGUsIHJlZ251bSwKLSsJCQkJRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIHJlZ251bSkpOwotKwkg IHJldHVybjsKLSsKLSsJY2FzZSBzc2U6Ci0rCSAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2Nh Y2hlLCByZWdudW0sCi0rCQkJCUZYU0FWRV9BRERSICh0ZGVwLCByZWdzLCByZWdudW0pKTsKLSsJ ICByZXR1cm47Ci0rCi0rCWNhc2UgYXZ4aDoKLSsJICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVn Y2FjaGUsIHJlZ251bSwKLSsJCQkJWFNBVkVfQVZYSF9BRERSICh0ZGVwLCByZWdzLCByZWdudW0p KTsKLSsJICByZXR1cm47Ci0rCX0KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYg KChyZWdjbGFzcyAmIGNoZWNrKSkKLSsJewotKwkgIGdkYl9ieXRlIHJhd1tJMzg2X01BWF9SRUdJ U1RFUl9TSVpFXTsKLSsJICBnZGJfYnl0ZSAqeHN0YXRlX2J2X3AgPSBYU0FWRV9YU1RBVEVfQlZf QUREUiAocmVncyk7Ci0rCSAgdW5zaWduZWQgaW50IHhzdGF0ZV9idiA9IDA7Ci0rCSAgLyogVGhl IHN1cHBvcnRlZCBiaXRzIGluIGB4c3RhdF9idicgYXJlIDEgYnl0ZS4gKi8KLSsJICB1bnNpZ25l ZCBpbnQgY2xlYXJfYnYgPSAofigqeHN0YXRlX2J2X3ApKSAmIHRkZXAtPnhjcjA7Ci0rCSAgZ2Ri X2J5dGUgKnA7Ci0rCi0rCSAgLyogQ2xlYXIgcmVnaXN0ZXIgc2V0IGlmIGl0cyBiaXQgaW4geHN0 YXRfYnYgaXMgemVyby4gICovCi0rCSAgaWYgKGNsZWFyX2J2KQotKwkgICAgewotKwkgICAgICBp ZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJCWZvciAoaSA9IEkzODdfWU1NMEhf UkVHTlVNICh0ZGVwKTsKLSsJCSAgICAgaSA8IEkzODdfWU1NRU5ESF9SRUdOVU0gKHRkZXApOyBp KyspCi0rCQkgIG1lbXNldCAoWFNBVkVfQVZYSF9BRERSICh0ZGVwLCByZWdzLCBpKSwgMCwgMTYp OwotKwotKwkgICAgICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfU1NFKSkKLSsJCWZvciAo aSA9IEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOwotKwkJICAgICBpIDwgSTM4N19NWENTUl9SRUdO VU0gKHRkZXApOyBpKyspCi0rCQkgIG1lbXNldCAoRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkp LCAwLCAxNik7Ci0rCi0rCSAgICAgIGlmICgoY2xlYXJfYnYgJiBJMzg2X1hTVEFURV9YODcpKQot KwkJZm9yIChpID0gSTM4N19TVDBfUkVHTlVNICh0ZGVwKTsKLSsJCSAgICAgaSA8IEkzODdfRkNU UkxfUkVHTlVNICh0ZGVwKTsgaSsrKQotKwkJICBtZW1zZXQgKEZYU0FWRV9BRERSICh0ZGVwLCBy ZWdzLCBpKSwgMCwgMTApOwotKwkgICAgfQotKwotKwkgIGlmIChyZWdjbGFzcyA9PSBhbGwpCi0r CSAgICB7Ci0rCSAgICAgIC8qIENoZWNrIGlmIGFueSB1cHBlciBZTU0gcmVnaXN0ZXJzIGFyZSBj aGFuZ2VkLiAgKi8KLSsJICAgICAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVfQVZYKSkK LSsJCWZvciAoaSA9IEkzODdfWU1NMEhfUkVHTlVNICh0ZGVwKTsKLSsJCSAgICAgaSA8IEkzODdf WU1NRU5ESF9SRUdOVU0gKHRkZXApOyBpKyspCi0rCQkgIHsKLSsJCSAgICByZWdjYWNoZV9yYXdf Y29sbGVjdCAocmVnY2FjaGUsIGksIHJhdyk7Ci0rCQkgICAgcCA9IFhTQVZFX0FWWEhfQUREUiAo dGRlcCwgcmVncywgaSk7Ci0rCQkgICAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0rCQkgICAg ICB7Ci0rCQkJeHN0YXRlX2J2IHw9IEkzODZfWFNUQVRFX0FWWDsKLSsJCQltZW1jcHkgKHAsIHJh dywgMTYpOwotKwkJICAgICAgfQotKwkJICB9Ci0rCi0rCSAgICAgIC8qIENoZWNrIGlmIGFueSBT U0UgcmVnaXN0ZXJzIGFyZSBjaGFuZ2VkLiAgKi8KLSsJICAgICAgaWYgKCh0ZGVwLT54Y3IwICYg STM4Nl9YU1RBVEVfU1NFKSkKLSsJCWZvciAoaSA9IEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOwot KwkJICAgICBpIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApOyBpKyspCi0rCQkgIHsKLSsJCSAg ICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksIHJhdyk7Ci0rCQkgICAgcCA9IEZY U0FWRV9BRERSICh0ZGVwLCByZWdzLCBpKTsKLSsJCSAgICBpZiAobWVtY21wIChyYXcsIHAsIDE2 KSkKLSsJCSAgICAgIHsKLSsJCQl4c3RhdGVfYnYgfD0gSTM4Nl9YU1RBVEVfU1NFOwotKwkJCW1l bWNweSAocCwgcmF3LCAxNik7Ci0rCQkgICAgICB9Ci0rCQkgIH0KLSsKLSsJICAgICAgLyogQ2hl Y2sgaWYgYW55IFg4NyByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKwkgICAgICBpZiAoKHRk ZXAtPnhjcjAgJiBJMzg2X1hTVEFURV9YODcpKQotKwkJZm9yIChpID0gSTM4N19TVDBfUkVHTlVN ICh0ZGVwKTsKLSsJCSAgICAgaSA8IEkzODdfRkNUUkxfUkVHTlVNICh0ZGVwKTsgaSsrKQotKwkJ ICB7Ci0rCQkgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpLCByYXcpOwotKwkJ ICAgIHAgPSBGWFNBVkVfQUREUiAodGRlcCwgcmVncywgaSk7Ci0rCQkgICAgaWYgKG1lbWNtcCAo cmF3LCBwLCAxMCkpCi0rCQkgICAgICB7Ci0rCQkJeHN0YXRlX2J2IHw9IEkzODZfWFNUQVRFX1g4 NzsKLSsJCQltZW1jcHkgKHAsIHJhdywgMTApOwotKwkJICAgICAgfQotKwkJICB9Ci0rCSAgICB9 Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAvKiBDaGVjayBpZiBSRUdOVU0gaXMgY2hhbmdl ZC4gICovCi0rCSAgICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgcmVnbnVtLCBy YXcpOwotKwotKwkgICAgICBzd2l0Y2ggKHJlZ2NsYXNzKQotKwkJewotKwkJZGVmYXVsdDoKLSsJ CSAgYWJvcnQgKCk7Ci0rCi0rCQljYXNlIGF2eGg6Ci0rCQkgIC8qIFRoaXMgaXMgYW4gdXBwZXIg WU1NIHJlZ2lzdGVyLiAgKi8KLSsJCSAgcCA9IFhTQVZFX0FWWEhfQUREUiAodGRlcCwgcmVncywg cmVnbnVtKTsKLSsJCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0rCQkgICAgewotKwkJICAg ICAgeHN0YXRlX2J2IHw9IEkzODZfWFNUQVRFX0FWWDsKLSsJCSAgICAgIG1lbWNweSAocCwgcmF3 LCAxNik7Ci0rCQkgICAgfQotKwkJICBicmVhazsKLSsKLSsJCWNhc2Ugc3NlOgotKwkJICAvKiBU aGlzIGlzIGFuIFNTRSByZWdpc3Rlci4gICovCi0rCQkgIHAgPSBGWFNBVkVfQUREUiAodGRlcCwg cmVncywgcmVnbnVtKTsKLSsJCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0rCQkgICAgewot KwkJICAgICAgeHN0YXRlX2J2IHw9IEkzODZfWFNUQVRFX1NTRTsKLSsJCSAgICAgIG1lbWNweSAo cCwgcmF3LCAxNik7Ci0rCQkgICAgfQotKwkJICBicmVhazsKLSsKLSsJCWNhc2UgeDg3OgotKwkJ ICAvKiBUaGlzIGlzIGFuIHg4NyByZWdpc3Rlci4gICovCi0rCQkgIHAgPSBGWFNBVkVfQUREUiAo dGRlcCwgcmVncywgcmVnbnVtKTsKLSsJCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxMCkpCi0rCQkg ICAgewotKwkJICAgICAgeHN0YXRlX2J2IHw9IEkzODZfWFNUQVRFX1g4NzsKLSsJCSAgICAgIG1l bWNweSAocCwgcmF3LCAxMCk7Ci0rCQkgICAgfQotKwkJICBicmVhazsKLSsJCX0KLSsJICAgIH0K LSsKLSsJICAvKiBVcGRhdGUgdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiBgeHN0YXRlX2J2JyBp ZiBhbnkgU1NFL0FWWAotKwkgICAgIHJlZ2lzdGVycyBhcmUgY2hhbmdlZC4gICovCi0rCSAgaWYg KHhzdGF0ZV9idikKLSsJICAgIHsKLSsJICAgICAgLyogVGhlIHN1cHBvcnRlZCBiaXRzIGluIGB4 c3RhdF9idicgYXJlIDEgYnl0ZS4gICovCi0rCSAgICAgICp4c3RhdGVfYnZfcCB8PSAoZ2RiX2J5 dGUpIHhzdGF0ZV9idjsKLSsKLSsJICAgICAgc3dpdGNoIChyZWdjbGFzcykKLSsJCXsKLSsJCWRl ZmF1bHQ6Ci0rCQkgIGFib3J0ICgpOwotKwotKwkJY2FzZSBhbGw6Ci0rCQkgIGJyZWFrOwotKwot KwkJY2FzZSB4ODc6Ci0rCQljYXNlIHNzZToKLSsJCWNhc2UgYXZ4aDoKLSsJCSAgLyogUmVnaXN0 ZXIgUkVHTlVNIGhhcyBiZWVuIHVwZGF0ZWQuICBSZXR1cm4uICAqLwotKwkJICByZXR1cm47Ci0r CQl9Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAvKiBSZXR1cm4gaWYgUkVH TlVNIGlzbid0IGNoYW5nZWQuICAqLwotKwkgICAgICBpZiAocmVnY2xhc3MgIT0gYWxsKQotKwkJ cmV0dXJuOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIE9ubHkgaGFuZGxlIHg4NyBj b250cm9sIHJlZ2lzdGVycy4gICovCi0rICBmb3IgKGkgPSBJMzg3X0ZDVFJMX1JFR05VTSAodGRl cCk7IGkgPCBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKTsgaSsrKQotKyAgICBpZiAocmVnbnVtID09 IC0xIHx8IHJlZ251bSA9PSBpKQotKyAgICAgIHsKLSsJLyogTW9zdCBvZiB0aGUgRlBVIGNvbnRy b2wgcmVnaXN0ZXJzIG9jY3VweSBvbmx5IDE2IGJpdHMgaW4KLSsJICAgdGhlIHhzYXZlIGV4dGVu ZGVkIHN0YXRlLiAgR2l2ZSB0aG9zZSBhIHNwZWNpYWwgdHJlYXRtZW50LiAgKi8KLSsJaWYgKGkg IT0gSTM4N19GSU9GRl9SRUdOVU0gKHRkZXApCi0rCSAgICAmJiBpICE9IEkzODdfRk9PRkZfUkVH TlVNICh0ZGVwKSkKLSsJICB7Ci0rCSAgICBnZGJfYnl0ZSBidWZbNF07Ci0rCi0rCSAgICByZWdj YWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksIGJ1Zik7Ci0rCi0rCSAgICBpZiAoaSA9PSBJ Mzg3X0ZPUF9SRUdOVU0gKHRkZXApKQotKwkgICAgICB7Ci0rCQkvKiBUaGUgb3Bjb2RlIG9jY3Vw aWVzIG9ubHkgMTEgYml0cy4gIE1ha2Ugc3VyZSB3ZQotKyAgICAgICAgICAgICAgICAgICBkb24n dCB0b3VjaCB0aGUgb3RoZXIgYml0cy4gICovCi0rCQlidWZbMV0gJj0gKCgxIDw8IDMpIC0gMSk7 Ci0rCQlidWZbMV0gfD0gKChGWFNBVkVfQUREUiAodGRlcCwgcmVncywgaSkpWzFdICYgfigoMSA8 PCAzKSAtIDEpKTsKLSsJICAgICAgfQotKwkgICAgZWxzZSBpZiAoaSA9PSBJMzg3X0ZUQUdfUkVH TlVNICh0ZGVwKSkKLSsJICAgICAgewotKwkJLyogQ29udmVydGluZyBiYWNrIGlzIG11Y2ggZWFz aWVyLiAgKi8KLSsKLSsJCXVuc2lnbmVkIHNob3J0IGZ0YWc7Ci0rCQlpbnQgZnByZWc7Ci0rCi0r CQlmdGFnID0gKGJ1ZlsxXSA8PCA4KSB8IGJ1ZlswXTsKLSsJCWJ1ZlswXSA9IDA7Ci0rCQlidWZb MV0gPSAwOwotKwotKwkJZm9yIChmcHJlZyA9IDc7IGZwcmVnID49IDA7IGZwcmVnLS0pCi0rCQkg IHsKLSsJCSAgICBpbnQgdGFnID0gKGZ0YWcgPj4gKGZwcmVnICogMikpICYgMzsKLSsKLSsJCSAg ICBpZiAodGFnICE9IDMpCi0rCQkgICAgICBidWZbMF0gfD0gKDEgPDwgZnByZWcpOwotKwkJICB9 Ci0rCSAgICAgIH0KLSsJICAgIG1lbWNweSAoRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkpLCBi dWYsIDIpOwotKwkgIH0KLSsJZWxzZQotKwkgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNo ZSwgaSwgRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkpKTsKLSsgICAgICB9Ci0rCi0rICBpZiAo cmVnbnVtID09IEkzODdfTVhDU1JfUkVHTlVNICh0ZGVwKSB8fCByZWdudW0gPT0gLTEpCi0rICAg IHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXAp LAotKwkJCSAgRlhTQVZFX01YQ1NSX0FERFIgKHJlZ3MpKTsKLSt9Ci0rCi0gLyogUmVjcmVhdGUg dGhlIEZUVyAodGFnIHdvcmQpIHZhbGlkIGJpdHMgZnJvbSB0aGUgODAtYml0IEZQIGRhdGEgaW4K LSAgICAqUkFXLiAgKi8KLSAKLS0tLSAuL2dkYi9pMzg3LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5 OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODctdGRlcC5oCTIwMTAtMDQtMDMgMjE6 MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzMsNiArMzMsOCBAQCBzdHJ1Y3QgdWlfZmlsZTsK LSAjZGVmaW5lIEkzODdfU1QwX1JFR05VTSh0ZGVwKSAoKHRkZXApLT5zdDBfcmVnbnVtKQotICNk ZWZpbmUgSTM4N19OVU1fWE1NX1JFR1ModGRlcCkgKCh0ZGVwKS0+bnVtX3htbV9yZWdzKQotICNk ZWZpbmUgSTM4N19NTTBfUkVHTlVNKHRkZXApICgodGRlcCktPm1tMF9yZWdudW0pCi0rI2RlZmlu ZSBJMzg3X05VTV9ZTU1fUkVHUyh0ZGVwKSAoKHRkZXApLT5udW1feW1tX3JlZ3MpCi0rI2RlZmlu ZSBJMzg3X1lNTTBIX1JFR05VTSh0ZGVwKSAoKHRkZXApLT55bW0waF9yZWdudW0pCi0gCi0gI2Rl ZmluZSBJMzg3X0ZDVFJMX1JFR05VTSh0ZGVwKSAoSTM4N19TVDBfUkVHTlVNICh0ZGVwKSArIDgp Ci0gI2RlZmluZSBJMzg3X0ZTVEFUX1JFR05VTSh0ZGVwKSAoSTM4N19GQ1RSTF9SRUdOVU0gKHRk ZXApICsgMSkKLUBAIC00NSw2ICs0Nyw4IEBAIHN0cnVjdCB1aV9maWxlOwotICNkZWZpbmUgSTM4 N19YTU0wX1JFR05VTSh0ZGVwKSAoSTM4N19TVDBfUkVHTlVNICh0ZGVwKSArIDE2KQotICNkZWZp bmUgSTM4N19NWENTUl9SRUdOVU0odGRlcCkgXAotICAgKEkzODdfWE1NMF9SRUdOVU0gKHRkZXAp ICsgSTM4N19OVU1fWE1NX1JFR1MgKHRkZXApKQotKyNkZWZpbmUgSTM4N19ZTU1FTkRIX1JFR05V TSh0ZGVwKSBcCi0rICAoSTM4N19ZTU0wSF9SRUdOVU0gKHRkZXApICsgSTM4N19OVU1fWU1NX1JF R1MgKHRkZXApKQotIAotIC8qIFByaW50IG91dCB0aGUgaTM4NyBmbG9hdGluZyBwb2ludCBzdGF0 ZS4gICovCi0gCi1AQCAtOTksNiArMTAzLDExIEBAIGV4dGVybiB2b2lkIGkzODdfY29sbGVjdF9m c2F2ZSAoY29uc3Qgc3QKLSBleHRlcm4gdm9pZCBpMzg3X3N1cHBseV9meHNhdmUgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sCi0gCQkJCWNvbnN0IHZvaWQgKmZ4c2F2ZSk7 Ci0gCi0rLyogU2ltaWxhciB0byBpMzg3X3N1cHBseV9meHNhdmUsIGJ1dCB1c2UgWFNBVkUgZXh0 ZW5kZWQgc3RhdGUuICAqLwotKwotK2V4dGVybiB2b2lkIGkzODdfc3VwcGx5X3hzYXZlIChzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotKwkJCSAgICAgICBjb25zdCB2b2lk ICp4c2F2ZSk7Ci0rCi0gLyogRmlsbCByZWdpc3RlciBSRUdOVU0gKGlmIGl0IGlzIGEgZmxvYXRp bmctcG9pbnQgb3IgU1NFIHJlZ2lzdGVyKSBpbgotICAgICpGWFNBVkUgd2l0aCB0aGUgdmFsdWUg ZnJvbSBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSAgICBhbGwgcmVn aXN0ZXJzLiAgVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHRvdWNoIGFueSBvZiB0aGUgcmVzZXJ2ZWQK LUBAIC0xMDcsNiArMTE2LDExIEBAIGV4dGVybiB2b2lkIGkzODdfc3VwcGx5X2Z4c2F2ZSAoc3Ry dWN0IHIKLSBleHRlcm4gdm9pZCBpMzg3X2NvbGxlY3RfZnhzYXZlIChjb25zdCBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotIAkJCQkgdm9pZCAqZnhzYXZlKTsKLSAKLSsv KiBTaW1pbGFyIHRvIGkzODdfY29sbGVjdF9meHNhdmUsIGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQg c3RhdGUuICAqLwotKwotK2V4dGVybiB2b2lkIGkzODdfY29sbGVjdF94c2F2ZSAoY29uc3Qgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsJCQkJaW50IHJlZ251bSwgdm9pZCAqeHNhdmUsIGlu dCBnY29yZSk7Ci0rCi0gLyogUHJlcGFyZSB0aGUgRlBVIHN0YWNrIGluIFJFR0NBQ0hFIGZvciBh IGZ1bmN0aW9uIHJldHVybi4gICovCi0gCi0gZXh0ZXJuIHZvaWQgaTM4N19yZXR1cm5fdmFsdWUg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2 NC1hdngtbGludXguZGF0CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysg Li9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWF2eC1saW51eC5kYXQJMjAxMC0wNC0wMyAyMTox MjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNzggQEAKLSsjIERPIE5PVCBFRElUOiBn ZW5lcmF0ZWQgZnJvbSBpMzg2L2FtZDY0LWF2eC1saW51eC54bWwKLStuYW1lOmFtZDY0X2F2eF9s aW51eAotK3htbHRhcmdldDphbWQ2NC1hdngtbGludXgueG1sCi0rZXhwZWRpdGU6cmJwLHJzcCxy aXAKLSs2NDpyYXgKLSs2NDpyYngKLSs2NDpyY3gKLSs2NDpyZHgKLSs2NDpyc2kKLSs2NDpyZGkK LSs2NDpyYnAKLSs2NDpyc3AKLSs2NDpyOAotKzY0OnI5Ci0rNjQ6cjEwCi0rNjQ6cjExCi0rNjQ6 cjEyCi0rNjQ6cjEzCi0rNjQ6cjE0Ci0rNjQ6cjE1Ci0rNjQ6cmlwCi0rMzI6ZWZsYWdzCi0rMzI6 Y3MKLSszMjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6 c3QxCi0rODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3 Ci0rMzI6ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0r MzI6Zm9zZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6 eG1tMgotKzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4Onht bTcKLSsxMjg6eG1tOAotKzEyODp4bW05Ci0rMTI4OnhtbTEwCi0rMTI4OnhtbTExCi0rMTI4Onht bTEyCi0rMTI4OnhtbTEzCi0rMTI4OnhtbTE0Ci0rMTI4OnhtbTE1Ci0rMzI6bXhjc3IKLSs2NDpv cmlnX3JheAotKzEyODp5bW0waAotKzEyODp5bW0xaAotKzEyODp5bW0yaAotKzEyODp5bW0zaAot KzEyODp5bW00aAotKzEyODp5bW01aAotKzEyODp5bW02aAotKzEyODp5bW03aAotKzEyODp5bW04 aAotKzEyODp5bW05aAotKzEyODp5bW0xMGgKLSsxMjg6eW1tMTFoCi0rMTI4OnltbTEyaAotKzEy ODp5bW0xM2gKLSsxMjg6eW1tMTRoCi0rMTI4OnltbTE1aAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMv aTM4Ni9hbWQ2NC1hdnguZGF0CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWF2eC5kYXQJMjAxMC0wNC0wMyAyMToxMjoz Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNzcgQEAKLSsjIERPIE5PVCBFRElUOiBnZW5l cmF0ZWQgZnJvbSBpMzg2L2FtZDY0LWF2eC54bWwKLStuYW1lOmFtZDY0X2F2eAotK3htbHRhcmdl dDphbWQ2NC1hdngueG1sCi0rZXhwZWRpdGU6cmJwLHJzcCxyaXAKLSs2NDpyYXgKLSs2NDpyYngK LSs2NDpyY3gKLSs2NDpyZHgKLSs2NDpyc2kKLSs2NDpyZGkKLSs2NDpyYnAKLSs2NDpyc3AKLSs2 NDpyOAotKzY0OnI5Ci0rNjQ6cjEwCi0rNjQ6cjExCi0rNjQ6cjEyCi0rNjQ6cjEzCi0rNjQ6cjE0 Ci0rNjQ6cjE1Ci0rNjQ6cmlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSszMjpzcwotKzMyOmRzCi0r MzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3QxCi0rODA6c3QyCi0rODA6c3Qz Ci0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6ZmN0cmwKLSszMjpmc3Rh dAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9zZWcKLSszMjpmb29mZgot KzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1tMgotKzEyODp4bW0zCi0rMTI4 OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcKLSsxMjg6eG1tOAotKzEyODp4 bW05Ci0rMTI4OnhtbTEwCi0rMTI4OnhtbTExCi0rMTI4OnhtbTEyCi0rMTI4OnhtbTEzCi0rMTI4 OnhtbTE0Ci0rMTI4OnhtbTE1Ci0rMzI6bXhjc3IKLSsxMjg6eW1tMGgKLSsxMjg6eW1tMWgKLSsx Mjg6eW1tMmgKLSsxMjg6eW1tM2gKLSsxMjg6eW1tNGgKLSsxMjg6eW1tNWgKLSsxMjg6eW1tNmgK LSsxMjg6eW1tN2gKLSsxMjg6eW1tOGgKLSsxMjg6eW1tOWgKLSsxMjg6eW1tMTBoCi0rMTI4Onlt bTExaAotKzEyODp5bW0xMmgKLSsxMjg6eW1tMTNoCi0rMTI4OnltbTE0aAotKzEyODp5bW0xNWgK LS0tLSAuL2dkYi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbGludXguZGF0CTE5NzAtMDEtMDEg MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYt YXZ4LWxpbnV4LmRhdAkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAs MCArMSw1NCBAQAotKyMgRE8gTk9UIEVESVQ6IGdlbmVyYXRlZCBmcm9tIGkzODYvaTM4Ni1hdngt bGludXgueG1sCi0rbmFtZTppMzg2X2F2eF9saW51eAotK3htbHRhcmdldDppMzg2LWF2eC1saW51 eC54bWwKLStleHBlZGl0ZTplYnAsZXNwLGVpcAotKzMyOmVheAotKzMyOmVjeAotKzMyOmVkeAot KzMyOmVieAotKzMyOmVzcAotKzMyOmVicAotKzMyOmVzaQotKzMyOmVkaQotKzMyOmVpcAotKzMy OmVmbGFncwotKzMyOmNzCi0rMzI6c3MKLSszMjpkcwotKzMyOmVzCi0rMzI6ZnMKLSszMjpncwot KzgwOnN0MAotKzgwOnN0MQotKzgwOnN0MgotKzgwOnN0MwotKzgwOnN0NAotKzgwOnN0NQotKzgw OnN0NgotKzgwOnN0NwotKzMyOmZjdHJsCi0rMzI6ZnN0YXQKLSszMjpmdGFnCi0rMzI6ZmlzZWcK LSszMjpmaW9mZgotKzMyOmZvc2VnCi0rMzI6Zm9vZmYKLSszMjpmb3AKLSsxMjg6eG1tMAotKzEy ODp4bW0xCi0rMTI4OnhtbTIKLSsxMjg6eG1tMwotKzEyODp4bW00Ci0rMTI4OnhtbTUKLSsxMjg6 eG1tNgotKzEyODp4bW03Ci0rMzI6bXhjc3IKLSszMjpvcmlnX2VheAotKzEyODp5bW0waAotKzEy ODp5bW0xaAotKzEyODp5bW0yaAotKzEyODp5bW0zaAotKzEyODp5bW00aAotKzEyODp5bW01aAot KzEyODp5bW02aAotKzEyODp5bW03aAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWF2 eC5kYXQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9yZWdm b3JtYXRzL2kzODYvaTM4Ni1hdnguZGF0CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICsw MjAwCi1AQCAtMCwwICsxLDUzIEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVkIGZyb20gaTM4 Ni9pMzg2LWF2eC54bWwKLStuYW1lOmkzODZfYXZ4Ci0reG1sdGFyZ2V0OmkzODYtYXZ4LnhtbAot K2V4cGVkaXRlOmVicCxlc3AsZWlwCi0rMzI6ZWF4Ci0rMzI6ZWN4Ci0rMzI6ZWR4Ci0rMzI6ZWJ4 Ci0rMzI6ZXNwCi0rMzI6ZWJwCi0rMzI6ZXNpCi0rMzI6ZWRpCi0rMzI6ZWlwCi0rMzI6ZWZsYWdz Ci0rMzI6Y3MKLSszMjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3Qw Ci0rODA6c3QxCi0rODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0r ODA6c3Q3Ci0rMzI6ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZp b2ZmCi0rMzI6Zm9zZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEK LSsxMjg6eG1tMgotKzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0r MTI4OnhtbTcKLSszMjpteGNzcgotKzEyODp5bW0waAotKzEyODp5bW0xaAotKzEyODp5bW0yaAot KzEyODp5bW0zaAotKzEyODp5bW00aAotKzEyODp5bW01aAotKzEyODp5bW02aAotKzEyODp5bW03 aAotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cucHNldWRvCTE5NzAtMDEtMDEgMDE6MDA6 MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZy5wc2V1ZG8J MjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMjYgQEAKLSsy MDEwLTAyLTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogZ2RiLmFy Y2gvYW1kNjQtZHdvcmQuZXhwOiBOZXcuCi0rCi0rCSogZ2RiLmFyY2gvYW1kNjQtd29yZC5leHA6 IFNpbXBsaWZpZWQuCi0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGdkYi5hcmNoL2FtZDY0LXdvcmQuZXhwOiBOZXcuCi0rCSogZ2RiLmFyY2gv aTM4Ni13b3JkLmV4cDogTGlrZXdpc2UuCi0rCi0rCSogZ2RiLmFyY2gvaTM4Ni1ieXRlLmV4cCAo bnJfcmVncyk6IFJlbW92ZWQuCi0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGdkYi5hcmNoL2FtZDY0LXBzZXVkby5jOiBOZXcuCi0rCSogZ2Ri LmFyY2gvaTM4Ni1ieXRlLmV4cDogTGlrZXdpc2UuCi0rCi0rCSogZ2RiLmFyY2gvYW1kNjQtYnl0 ZS5leHA6IFVwZGF0ZWQuCi0rCi0rCSogZ2RiLmFyY2gvaTM4Ni1wc2V1ZG8uYzogTWFrZSBpdCAz MmJpdCBvbmx5LgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KLSsKLSsJKiBnZGIuYXJjaC9hbWQ2NC1ieXRlLmV4cDogTmV3LgotKwkqIGdkYi5hcmNoL2kz ODYtcHNldWRvLmM6IExpa2V3aXNlLgotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cueGNy CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZy54Y3IJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0w LDAgKzEsNiBAQAotKzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBnZGIuYXJjaC9pMzg2LWF2eC5jOiBOZXcuCi0rCSogZ2RiLmFyY2gvaTM4Ni1hdngu ZXhwOiBMaWtld2lzZS4KLSsKLSsJKiBnZGIuYXJjaC9pMzg2LWNwdWlkLmg6IFVwZGF0ZWQgZnJv bSBnY2MgNC40LgotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cueG1sCTE5NzAtMDEtMDEg MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZy54 bWwJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNCBAQAot KzIwMTAtMDItMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBnZGIu eG1sL3RkZXNjLXJlZ3MuZXhwIChhcmNoaXRlY3R1cmUpOiBOZXcuICBTZXQgaXQgZm9yIHg4Ni4K LSsJKGxvYWRfZGVzY3JpcHRpb24pOiBTZXQgYXJjaGl0ZWN0dXJlIGlmIGRlZmluZWQuCi0tLS0g Li9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2kzODYtYXZ4LmMJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1hdnguYwky MDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxMjggQEAKLSsv KiBUZXN0IHByb2dyYW0gZm9yIEFWWCByZWdpc3RlcnMuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSAiaTM4Ni1jcHVpZC5oIgotKwotK3R5cGVk ZWYgc3RydWN0IHsKLSsgIGZsb2F0IGZbOF07Ci0rfSB2OHNmX3Q7Ci0rCi0rCi0rdjhzZl90IGRh dGFbXSA9Ci0rICB7Ci0rICAgIHsgeyAgMC4wLCAgMC4xMjUsICAwLjI1LCAgMC4zNzUsICAwLjUw LCAgMC42MjUsICAwLjc1LCAgMC44NzUgfSB9LAotKyAgICB7IHsgIDEuMCwgIDEuMTI1LCAgMS4y NSwgIDEuMzc1LCAgMS41MCwgIDEuNjI1LCAgMS43NSwgIDEuODc1IH0gfSwKLSsgICAgeyB7ICAy LjAsICAyLjEyNSwgIDIuMjUsICAyLjM3NSwgIDIuNTAsICAyLjYyNSwgIDIuNzUsICAyLjg3NSB9 IH0sCi0rICAgIHsgeyAgMy4wLCAgMy4xMjUsICAzLjI1LCAgMy4zNzUsICAzLjUwLCAgMy42MjUs ICAzLjc1LCAgMy44NzUgfSB9LAotKyAgICB7IHsgIDQuMCwgIDQuMTI1LCAgNC4yNSwgIDQuMzc1 LCAgNC41MCwgIDQuNjI1LCAgNC43NSwgIDQuODc1IH0gfSwKLSsgICAgeyB7ICA1LjAsICA1LjEy NSwgIDUuMjUsICA1LjM3NSwgIDUuNTAsICA1LjYyNSwgIDUuNzUsICA1Ljg3NSB9IH0sCi0rICAg IHsgeyAgNi4wLCAgNi4xMjUsICA2LjI1LCAgNi4zNzUsICA2LjUwLCAgNi42MjUsICA2Ljc1LCAg Ni44NzUgfSB9LAotKyAgICB7IHsgIDcuMCwgIDcuMTI1LCAgNy4yNSwgIDcuMzc1LCAgNy41MCwg IDcuNjI1LCAgNy43NSwgIDcuODc1IH0gfSwKLSsjaWZkZWYgX194ODZfNjRfXwotKyAgICB7IHsg IDguMCwgIDguMTI1LCAgOC4yNSwgIDguMzc1LCAgOC41MCwgIDguNjI1LCAgOC43NSwgIDguODc1 IH0gfSwKLSsgICAgeyB7ICA5LjAsICA5LjEyNSwgIDkuMjUsICA5LjM3NSwgIDkuNTAsICA5LjYy NSwgIDkuNzUsICA5Ljg3NSB9IH0sCi0rICAgIHsgeyAxMC4wLCAxMC4xMjUsIDEwLjI1LCAxMC4z NzUsIDEwLjUwLCAxMC42MjUsIDEwLjc1LCAxMC44NzUgfSB9LAotKyAgICB7IHsgMTEuMCwgMTEu MTI1LCAxMS4yNSwgMTEuMzc1LCAxMS41MCwgMTEuNjI1LCAxMS43NSwgMTEuODc1IH0gfSwKLSsg ICAgeyB7IDEyLjAsIDEyLjEyNSwgMTIuMjUsIDEyLjM3NSwgMTIuNTAsIDEyLjYyNSwgMTIuNzUs IDEyLjg3NSB9IH0sCi0rICAgIHsgeyAxMy4wLCAxMy4xMjUsIDEzLjI1LCAxMy4zNzUsIDEzLjUw LCAxMy42MjUsIDEzLjc1LCAxMy44NzUgfSB9LAotKyAgICB7IHsgMTQuMCwgMTQuMTI1LCAxNC4y NSwgMTQuMzc1LCAxNC41MCwgMTQuNjI1LCAxNC43NSwgMTQuODc1IH0gfSwKLSsgICAgeyB7IDE1 LjAsIDE1LjEyNSwgMTUuMjUsIDE1LjM3NSwgMTUuNTAsIDE1LjYyNSwgMTUuNzUsIDE1Ljg3NSB9 IH0sCi0rI2VuZGlmCi0rICB9OwotKwotKwotK2ludAotK2hhdmVfYXZ4ICh2b2lkKQotK3sKLSsg IHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7Ci0rCi0rICBpZiAoIV9fZ2V0X2NwdWlk ICgxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAo KGVjeCAmIChiaXRfQVZYIHwgYml0X09TWFNBVkUpKSA9PSAoYml0X0FWWCB8IGJpdF9PU1hTQVZF KSkKLSsgICAgcmV0dXJuIDE7Ci0rICBlbHNlCi0rICAgIHJldHVybiAwOwotK30KLSsKLStpbnQK LSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgaWYgKGhhdmVfYXZ4ICgpKQot KyAgICB7Ci0rICAgICAgYXNtICgidm1vdmFwcyAwKCUwKSwgJSV5bW0wXG5cdCIKLSsgICAgICAg ICAgICJ2bW92YXBzIDMyKCUwKSwgJSV5bW0xXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDY0 KCUwKSwgJSV5bW0yXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDk2KCUwKSwgJSV5bW0zXG5c dCIKLSsgICAgICAgICAgICJ2bW92YXBzIDEyOCglMCksICUleW1tNFxuXHQiCi0rICAgICAgICAg ICAidm1vdmFwcyAxNjAoJTApLCAlJXltbTVcblx0IgotKyAgICAgICAgICAgInZtb3ZhcHMgMTky KCUwKSwgJSV5bW02XG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDIyNCglMCksICUleW1tN1xu XHQiCi0rICAgICAgICAgICA6IC8qIG5vIG91dHB1dCBvcGVyYW5kcyAqLwotKyAgICAgICAgICAg OiAiciIgKGRhdGEpIAotKyAgICAgICAgICAgOiAieG1tMCIsICJ4bW0xIiwgInhtbTIiLCAieG1t MyIsICJ4bW00IiwgInhtbTUiLCAieG1tNiIsICJ4bW03Iik7Ci0rI2lmZGVmIF9feDg2XzY0X18K LSsgICAgICBhc20gKCJ2bW92YXBzIDI1NiglMCksICUleW1tOFxuXHQiCi0rICAgICAgICAgICAi dm1vdmFwcyAyODgoJTApLCAlJXltbTlcblx0IgotKyAgICAgICAgICAgInZtb3ZhcHMgMzIwKCUw KSwgJSV5bW0xMFxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAzNTIoJTApLCAlJXltbTExXG5c dCIKLSsgICAgICAgICAgICJ2bW92YXBzIDM4NCglMCksICUleW1tMTJcblx0IgotKyAgICAgICAg ICAgInZtb3ZhcHMgNDE2KCUwKSwgJSV5bW0xM1xuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyA0 NDgoJTApLCAlJXltbTE0XG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDQ4MCglMCksICUleW1t MTVcblx0IgotKyAgICAgICAgICAgOiAvKiBubyBvdXRwdXQgb3BlcmFuZHMgKi8KLSsgICAgICAg ICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgICAgIDogInhtbTgiLCAieG1tOSIsICJ4bW0xMCIs ICJ4bW0xMSIsICJ4bW0xMiIsICJ4bW0xMyIsICJ4bW0xNCIsICJ4bW0xNSIpOwotKyNlbmRpZgot KwotKyAgICAgIGFzbSAoIm5vcCIpOyAvKiBmaXJzdCBicmVha3BvaW50IGhlcmUgKi8KLSsKLSsg ICAgICBhc20gKAotKyAgICAgICAgICAgInZtb3ZhcHMgJSV5bW0wLCAwKCUwKVxuXHQiCi0rICAg ICAgICAgICAidm1vdmFwcyAlJXltbTEsIDMyKCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFw cyAlJXltbTIsIDY0KCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTMsIDk2KCUw KVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTQsIDEyOCglMClcblx0IgotKyAgICAg ICAgICAgInZtb3ZhcHMgJSV5bW01LCAxNjAoJTApXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBz ICUleW1tNiwgMTkyKCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTcsIDIyNCgl MClcblx0IgotKyAgICAgICAgICAgOiAvKiBubyBvdXRwdXQgb3BlcmFuZHMgKi8KLSsgICAgICAg ICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgICAgIDogInhtbTAiLCAieG1tMSIsICJ4bW0yIiwg InhtbTMiLCAieG1tNCIsICJ4bW01IiwgInhtbTYiLCAieG1tNyIpOwotKyNpZmRlZiBfX3g4Nl82 NF9fCi0rICAgICAgYXNtICgKLSsgICAgICAgICAgICJ2bW92YXBzICUleW1tOCwgMjU2KCUwKVxu XHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTksIDI4OCglMClcblx0IgotKyAgICAgICAg ICAgInZtb3ZhcHMgJSV5bW0xMCwgMzIwKCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAl JXltbTExLCAzNTIoJTApXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzICUleW1tMTIsIDM4NCgl MClcblx0IgotKyAgICAgICAgICAgInZtb3ZhcHMgJSV5bW0xMywgNDE2KCUwKVxuXHQiCi0rICAg ICAgICAgICAidm1vdmFwcyAlJXltbTE0LCA0NDgoJTApXG5cdCIKLSsgICAgICAgICAgICJ2bW92 YXBzICUleW1tMTUsIDQ4MCglMClcblx0IgotKyAgICAgICAgICAgOiAvKiBubyBvdXRwdXQgb3Bl cmFuZHMgKi8KLSsgICAgICAgICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgICAgIDogInhtbTgi LCAieG1tOSIsICJ4bW0xMCIsICJ4bW0xMSIsICJ4bW0xMiIsICJ4bW0xMyIsICJ4bW0xNCIsICJ4 bW0xNSIpOwotKyNlbmRpZgotKwotKyAgICAgIHB1dHMgKCJCeWUhIik7IC8qIHNlY29uZCBicmVh a3BvaW50IGhlcmUgKi8KLSsgICAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIC4vZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC9pMzg2LWF2eC5leHAJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1hdnguZXhwCTIwMTAt MDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDExMCBAQAotKyMgQ29w eXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50 cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rIyBidWctZ2RiQGdudS5vcmcK LSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgotKwotK2lmICR0 cmFjZWxldmVsIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lk IDAKLStzZXQgYnVnX2lkIDAKLSsKLStpZiB7ICFbaXN0YXJnZXQgaT84Ni0qLSpdICYmICFbaXN0 YXJnZXQgeDg2XzY0LSotKiBdIH0gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyB4ODYgQVZYIHRl c3RzLiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiaTM4Ni1hdngiCi0rc2V0 IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IGFkZGl0aW9uYWxfZmxhZ3MgIiIKLStpZiBbdGVzdF9j b21waWxlcl9pbmZvIGdjYypdIHsKLSsgICAgc2V0IGFkZGl0aW9uYWxfZmxhZ3MgImFkZGl0aW9u YWxfZmxhZ3M9LW1hdngiCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICRh ZGRpdGlvbmFsX2ZsYWdzXV0gIT0gIiIgfSB7Ci0rICAgIHVuc3VwcG9ydGVkICJjb21waWxlciBk b2VzIG5vdCBzdXBwb3J0IEFWWCIKLSsgICAgcmV0dXJuCi0rfQotKwotK2dkYl9leGl0Ci0rZ2Ri X3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQg JHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIGdkYl9zdXBwcmVz c190ZXN0cwotK30KLSsKLStzZW5kX2dkYiAicHJpbnQgaGF2ZV9hdnggKClcciIKLStnZGJfZXhw ZWN0IHsKLSsgICAgLXJlICIuLiA9IDFcclxuJGdkYl9wcm9tcHQgIiB7Ci0rICAgICAgICBwYXNz ICJjaGVjayB3aGV0aGVyIHByb2Nlc3NvciBzdXBwb3J0cyBBVlgiCi0rICAgIH0KLSsgICAgLXJl ICIuLiA9IDBcclxuJGdkYl9wcm9tcHQgIiB7Ci0rICAgICAgICB2ZXJib3NlICJwcm9jZXNzb3Ig ZG9lcyBub3Qgc3VwcG9ydCBBVlg7IHNraXBwaW5nIEFWWCB0ZXN0cyIKLSsgICAgICAgIHJldHVy bgotKyAgICB9Ci0rICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICBmYWlsICJj aGVjayB3aGV0aGVyIHByb2Nlc3NvciBzdXBwb3J0cyBBVlgiCi0rICAgIH0KLSsgICAgdGltZW91 dCB7Ci0rICAgICAgICBmYWlsICJjaGVjayB3aGV0aGVyIHByb2Nlc3NvciBzdXBwb3J0cyBBVlgg KHRpbWVvdXQpIgotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5l X251bWJlciAiZmlyc3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAgICAiQnJlYWtwb2lu dCAuKiBhdCAuKmkzODYtYXZ4LmMuKiIgXAotKyAgICAgICAgICJzZXQgZmlyc3QgYnJlYWtwb2lu dCBpbiBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBmaXJz dCBicmVha3BvaW50IGluIG1haW4iCi0rCi0raWYgW2lzdGFyZ2V0IGk/ODYtKi0qXSB7Ci0rICAg IHNldCBucl9yZWdzIDgKLSt9IGVsc2UgewotKyAgICBzZXQgbnJfcmVncyAxNgotK30KLSsKLStm b3IgeyBzZXQgciAwIH0geyAkciA8ICRucl9yZWdzIH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90 ZXN0ICJwcmludCBcJHltbSRyLnY4X2Zsb2F0IiBcCi0rICAgICAgICAiLi4gPSBcXHskciwgJHIu MTI1LCAkci4yNSwgJHIuMzc1LCAkci41LCAkci42MjUsICRyLjc1LCAkci44NzVcXH0uKiIgXAot KyAgICAgICAgImNoZWNrIGZsb2F0IGNvbnRlbnRzIG9mICV5bW0kciIKLSsgICAgZ2RiX3Rlc3Qg InByaW50IFwkeW1tJHIudjMyX2ludDgiIFwKLSsgICAgICAgICIuLiA9IFxceygtP1xbMC05XF0r LCApezMxfS0/XFswLTlcXStcXH0uKiIgXAotKyAgICAgICAgImNoZWNrIGludDggY29udGVudHMg b2YgJXltbSRyIgotK30KLSsKLStmb3IgeyBzZXQgciAwIH0geyAkciA8ICRucl9yZWdzIH0geyBp bmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJzZXQgdmFyIFwkeW1tJHIudjhfZmxvYXRcWzBcXSA9 ICRyICsgMTAiICIiICJzZXQgJXltbSRyIgotK30KLSsKLStnZGJfdGVzdCAiYnJlYWsgW2dkYl9n ZXRfbGluZV9udW1iZXIgInNlY29uZCBicmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJC cmVha3BvaW50IC4qIGF0IC4qaTM4Ni1hdnguYy4qIiBcCi0rICAgICAgICAgInNldCBzZWNvbmQg YnJlYWtwb2ludCBpbiBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51 ZSB0byBzZWNvbmQgYnJlYWtwb2ludCBpbiBtYWluIgotKwotK2ZvciB7IHNldCByIDAgfSB7ICRy IDwgJG5yX3JlZ3MgfSB7IGluY3IgciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50IGRhdGFcWyRy XF0iIFwKLSsgICAgICAgICIuLiA9IFxce2YgPSBcXHtbZXhwciAkciArIDEwXSwgJHIuMTI1LCAk ci4yNSwgJHIuMzc1LCAkci41LCAkci42MjUsICRyLjc1LCAkci44NzVcXH1cXH0uKiIgXAotKyAg ICAgICAgImNoZWNrIGNvbnRlbnRzIG9mIGRhdGFcWyRyXF0iCi0rfQotLS0tIC4vZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC9pMzg2LWNwdWlkLmgJMjAxMC0wMS0wMSAwODozMjowMC4wMDAwMDAwMDAg KzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1jcHVpZC5oCTIwMTAtMDQt MDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMSwzMCArMSwxODYgQEAKLS0vKiBIZWxw ZXIgZmlsZSBmb3IgaTM4NiBwbGF0Zm9ybS4gIFJ1bnRpbWUgY2hlY2sgZm9yIE1NWC9TU0UvU1NF MiBzdXBwb3J0LgotKy8qIEhlbHBlciBmaWxlIGZvciBpMzg2IHBsYXRmb3JtLiAgUnVudGltZSBj aGVjayBmb3IgTU1YL1NTRS9TU0UyL0FWWAotKyAqIHN1cHBvcnQuIENvcGllZCBmcm9tIGdjYyA0 LjQuCi0rICoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rICoKLSsgKiBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAqIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZQotKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkKLSsgKiBsYXRlciB2ZXJzaW9uLgotKyAqIAotKyAqIFRoaXMgZmls ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQK LSsgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rICogCi0rICogVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlv dSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCi0rICogcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRo ZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgotKyAqIDMuMSwgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0rICogCi0rICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYW5kCi0rICogYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKLSsgKiBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBD T1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSsgKiA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rICovCi0rCi0rLyogJWVjeCAqLwotKyNkZWZpbmUgYml0 X1NTRTMJKDEgPDwgMCkKLSsjZGVmaW5lIGJpdF9QQ0xNVUwJKDEgPDwgMSkKLSsjZGVmaW5lIGJp dF9TU1NFMwkoMSA8PCA5KQotKyNkZWZpbmUgYml0X0ZNQQkJKDEgPDwgMTIpCi0rI2RlZmluZSBi aXRfQ01QWENIRzE2QgkoMSA8PCAxMykKLSsjZGVmaW5lIGJpdF9TU0U0XzEJKDEgPDwgMTkpCi0r I2RlZmluZSBiaXRfU1NFNF8yCSgxIDw8IDIwKQotKyNkZWZpbmUgYml0X01PVkJFCSgxIDw8IDIy KQotKyNkZWZpbmUgYml0X1BPUENOVAkoMSA8PCAyMykKLSsjZGVmaW5lIGJpdF9BRVMJCSgxIDw8 IDI1KQotKyNkZWZpbmUgYml0X1hTQVZFCSgxIDw8IDI2KQotKyNkZWZpbmUgYml0X09TWFNBVkUJ KDEgPDwgMjcpCi0rI2RlZmluZSBiaXRfQVZYCQkoMSA8PCAyOCkKLSsKLSsvKiAlZWR4ICovCi0r I2RlZmluZSBiaXRfQ01QWENIRzhCCSgxIDw8IDgpCi0rI2RlZmluZSBiaXRfQ01PVgkoMSA8PCAx NSkKLSsjZGVmaW5lIGJpdF9NTVgJCSgxIDw8IDIzKQotKyNkZWZpbmUgYml0X0ZYU0FWRQkoMSA8 PCAyNCkKLSsjZGVmaW5lIGJpdF9TU0UJCSgxIDw8IDI1KQotKyNkZWZpbmUgYml0X1NTRTIJKDEg PDwgMjYpCi0rCi0rLyogRXh0ZW5kZWQgRmVhdHVyZXMgKi8KLSsvKiAlZWN4ICovCi0rI2RlZmlu ZSBiaXRfTEFIRl9MTQkoMSA8PCAwKQotKyNkZWZpbmUgYml0X0FCTQkJKDEgPDwgNSkKLSsjZGVm aW5lIGJpdF9TU0U0YQkoMSA8PCA2KQotKyNkZWZpbmUgYml0X1hPUCAgICAgICAgICgxIDw8IDEx KQotKyNkZWZpbmUgYml0X0xXUCAJKDEgPDwgMTUpCi0rI2RlZmluZSBiaXRfRk1BNCAgICAgICAg KDEgPDwgMTYpCi0rCi0rLyogJWVkeCAqLwotKyNkZWZpbmUgYml0X0xNCQkoMSA8PCAyOSkKLSsj ZGVmaW5lIGJpdF8zRE5PV1AJKDEgPDwgMzApCi0rI2RlZmluZSBiaXRfM0ROT1cJKDEgPDwgMzEp Ci0rCi0rCi0rI2lmIGRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX19QSUNfXykKLSsvKiAl ZWJ4IG1heSBiZSB0aGUgUElDIHJlZ2lzdGVyLiAgKi8KLSsjaWYgX19HTlVDX18gPj0gMwotKyNk ZWZpbmUgX19jcHVpZChsZXZlbCwgYSwgYiwgYywgZCkJCQlcCi0rICBfX2FzbV9fICgieGNoZ3ts fVx0eyUlfWVieCwgJTFcblx0IgkJCVwKLSsJICAgImNwdWlkXG5cdCIJCQkJCVwKLSsJICAgInhj aGd7bH1cdHslJX1lYngsICUxXG5cdCIJCQlcCi0rCSAgIDogIj1hIiAoYSksICI9ciIgKGIpLCAi PWMiIChjKSwgIj1kIiAoZCkJXAotKwkgICA6ICIwIiAobGV2ZWwpKQotKwotKyNkZWZpbmUgX19j cHVpZF9jb3VudChsZXZlbCwgY291bnQsIGEsIGIsIGMsIGQpCQlcCi0rICBfX2FzbV9fICgieGNo Z3tsfVx0eyUlfWVieCwgJTFcblx0IgkJCVwKLSsJICAgImNwdWlkXG5cdCIJCQkJCVwKLSsJICAg InhjaGd7bH1cdHslJX1lYngsICUxXG5cdCIJCQlcCi0rCSAgIDogIj1hIiAoYSksICI9ciIgKGIp LCAiPWMiIChjKSwgIj1kIiAoZCkJXAotKwkgICA6ICIwIiAobGV2ZWwpLCAiMiIgKGNvdW50KSkK LSsjZWxzZQotKy8qIEhvc3QgR0NDcyBvbGRlciB0aGFuIDMuMCB3ZXJlbid0IHN1cHBvcnRpbmcg SW50ZWwgYXNtIHN5bnRheAotKyAgIG5vciBhbHRlcm5hdGl2ZXMgaW4gaTM4NiBjb2RlLiAgKi8K LSsjZGVmaW5lIF9fY3B1aWQobGV2ZWwsIGEsIGIsIGMsIGQpCQkJXAotKyAgX19hc21fXyAoInhj aGdsXHQlJWVieCwgJTFcblx0IgkJCVwKLSsJICAgImNwdWlkXG5cdCIJCQkJCVwKLSsJICAgInhj aGdsXHQlJWVieCwgJTFcblx0IgkJCVwKLSsJICAgOiAiPWEiIChhKSwgIj1yIiAoYiksICI9YyIg KGMpLCAiPWQiIChkKQlcCi0rCSAgIDogIjAiIChsZXZlbCkpCi0rCi0rI2RlZmluZSBfX2NwdWlk X2NvdW50KGxldmVsLCBjb3VudCwgYSwgYiwgYywgZCkJCVwKLSsgIF9fYXNtX18gKCJ4Y2hnbFx0 JSVlYngsICUxXG5cdCIJCQlcCi0rCSAgICJjcHVpZFxuXHQiCQkJCQlcCi0rCSAgICJ4Y2hnbFx0 JSVlYngsICUxXG5cdCIJCQlcCi0rCSAgIDogIj1hIiAoYSksICI9ciIgKGIpLCAiPWMiIChjKSwg Ij1kIiAoZCkJXAotKwkgICA6ICIwIiAobGV2ZWwpLCAiMiIgKGNvdW50KSkKLSsjZW5kaWYKLSsj ZWxzZQotKyNkZWZpbmUgX19jcHVpZChsZXZlbCwgYSwgYiwgYywgZCkJCQlcCi0rICBfX2FzbV9f ICgiY3B1aWRcblx0IgkJCQkJXAotKwkgICA6ICI9YSIgKGEpLCAiPWIiIChiKSwgIj1jIiAoYyks ICI9ZCIgKGQpCVwKLSsJICAgOiAiMCIgKGxldmVsKSkKLSsKLSsjZGVmaW5lIF9fY3B1aWRfY291 bnQobGV2ZWwsIGNvdW50LCBhLCBiLCBjLCBkKQkJXAotKyAgX19hc21fXyAoImNwdWlkXG5cdCIJ CQkJCVwKLSsJICAgOiAiPWEiIChhKSwgIj1iIiAoYiksICI9YyIgKGMpLCAiPWQiIChkKQlcCi0r CSAgIDogIjAiIChsZXZlbCksICIyIiAoY291bnQpKQotKyNlbmRpZgotKwotKy8qIFJldHVybiBo aWdoZXN0IHN1cHBvcnRlZCBpbnB1dCB2YWx1ZSBmb3IgY3B1aWQgaW5zdHJ1Y3Rpb24uICBleHQg Y2FuCi0rICAgYmUgZWl0aGVyIDB4MCBvciAweDgwMDAwMDAgdG8gcmV0dXJuIGhpZ2hlc3Qgc3Vw cG9ydGVkIHZhbHVlIGZvcgotKyAgIGJhc2ljIG9yIGV4dGVuZGVkIGNwdWlkIGluZm9ybWF0aW9u LiAgRnVuY3Rpb24gcmV0dXJucyAwIGlmIGNwdWlkCi0rICAgaXMgbm90IHN1cHBvcnRlZCBvciB3 aGF0ZXZlciBjcHVpZCByZXR1cm5zIGluIGVheCByZWdpc3Rlci4gIElmIHNpZwotKyAgIHBvaW50 ZXIgaXMgbm9uLW51bGwsIHRoZW4gZmlyc3QgZm91ciBieXRlcyBvZiB0aGUgc2lnbmF0dXJlCi0r ICAgKGFzIGZvdW5kIGluIGVieCByZWdpc3RlcikgYXJlIHJldHVybmVkIGluIGxvY2F0aW9uIHBv aW50ZWQgYnkgc2lnLiAgKi8KLSsKLStzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgaW50Ci0rX19n ZXRfY3B1aWRfbWF4ICh1bnNpZ25lZCBpbnQgX19leHQsIHVuc2lnbmVkIGludCAqX19zaWcpCi0r ewotKyAgdW5zaWduZWQgaW50IF9fZWF4LCBfX2VieCwgX19lY3gsIF9fZWR4OwotKwotKyNpZm5k ZWYgX194ODZfNjRfXwotKyNpZiBfX0dOVUNfXyA+PSAzCi0rICAvKiBTZWUgaWYgd2UgY2FuIHVz ZSBjcHVpZC4gIE9uIEFNRDY0IHdlIGFsd2F5cyBjYW4uICAqLwotKyAgX19hc21fXyAoInB1c2hm e2x8ZH1cblx0IgotKwkgICAicHVzaGZ7bHxkfVxuXHQiCi0rCSAgICJwb3B7bH1cdCUwXG5cdCIK LSsJICAgIm1vdntsfVx0eyUwLCAlMXwlMSwgJTB9XG5cdCIKLSsJICAgInhvcntsfVx0eyUyLCAl MHwlMCwgJTJ9XG5cdCIKLSsJICAgInB1c2h7bH1cdCUwXG5cdCIKLSsJICAgInBvcGZ7bHxkfVxu XHQiCi0rCSAgICJwdXNoZntsfGR9XG5cdCIKLSsJICAgInBvcHtsfVx0JTBcblx0IgotKwkgICAi cG9wZntsfGR9XG5cdCIKLSsJICAgOiAiPSZyIiAoX19lYXgpLCAiPSZyIiAoX19lYngpCi0rCSAg IDogImkiICgweDAwMjAwMDAwKSk7Ci0rI2Vsc2UKLSsvKiBIb3N0IEdDQ3Mgb2xkZXIgdGhhbiAz LjAgd2VyZW4ndCBzdXBwb3J0aW5nIEludGVsIGFzbSBzeW50YXgKLSsgICBub3IgYWx0ZXJuYXRp dmVzIGluIGkzODYgY29kZS4gICovCi0rICBfX2FzbV9fICgicHVzaGZsXG5cdCIKLSsJICAgInB1 c2hmbFxuXHQiCi0rCSAgICJwb3BsXHQlMFxuXHQiCi0rCSAgICJtb3ZsXHQlMCwgJTFcblx0Igot KwkgICAieG9ybFx0JTIsICUwXG5cdCIKLSsJICAgInB1c2hsXHQlMFxuXHQiCi0rCSAgICJwb3Bm bFxuXHQiCi0rCSAgICJwdXNoZmxcblx0IgotKwkgICAicG9wbFx0JTBcblx0IgotKwkgICAicG9w Zmxcblx0IgotKwkgICA6ICI9JnIiIChfX2VheCksICI9JnIiIChfX2VieCkKLSsJICAgOiAiaSIg KDB4MDAyMDAwMDApKTsKLSsjZW5kaWYKLSAKLS0gICBDb3B5cmlnaHQgMjAwNCwgMjAwNywgMjAw OCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgIGlmICghKChf X2VheCBeIF9fZWJ4KSAmIDB4MDAyMDAwMDApKQotKyAgICByZXR1cm4gMDsKLSsjZW5kaWYKLSAK LS0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rICAvKiBIb3N0IHN1cHBvcnRzIGNwdWlk LiAgUmV0dXJuIGhpZ2hlc3Qgc3VwcG9ydGVkIGNwdWlkIGlucHV0IHZhbHVlLiAgKi8KLSsgIF9f Y3B1aWQgKF9fZXh0LCBfX2VheCwgX19lYngsIF9fZWN4LCBfX2VkeCk7Ci0gCi0tICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgIGlmIChfX3NpZykKLSsgICAgKl9fc2lnID0gX19lYng7 Ci0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgIHJldHVybiBfX2VheDsKLSt9Ci0gCi0t ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rLyogUmV0dXJuIGNwdWlkIGRhdGEg Zm9yIHJlcXVlc3RlZCBjcHVpZCBsZXZlbCwgYXMgZm91bmQgaW4gcmV0dXJuZWQKLSsgICBlYXgs IGVieCwgZWN4IGFuZCBlZHggcmVnaXN0ZXJzLiAgVGhlIGZ1bmN0aW9uIGNoZWNrcyBpZiBjcHVp ZCBpcwotKyAgIHN1cHBvcnRlZCBhbmQgcmV0dXJucyAxIGZvciB2YWxpZCBjcHVpZCBpbmZvcm1h dGlvbiBvciAwIGZvcgotKyAgIHVuc3VwcG9ydGVkIGNwdWlkIGxldmVsLiAgQWxsIHBvaW50ZXJz IGFyZSByZXF1aXJlZCB0byBiZSBub24tbnVsbC4gICovCi0rCi0rc3RhdGljIF9faW5saW5lIGlu dAotK19fZ2V0X2NwdWlkICh1bnNpZ25lZCBpbnQgX19sZXZlbCwKLSsJICAgICB1bnNpZ25lZCBp bnQgKl9fZWF4LCB1bnNpZ25lZCBpbnQgKl9fZWJ4LAotKwkgICAgIHVuc2lnbmVkIGludCAqX19l Y3gsIHVuc2lnbmVkIGludCAqX19lZHgpCi0rewotKyAgdW5zaWduZWQgaW50IF9fZXh0ID0gX19s ZXZlbCAmIDB4ODAwMDAwMDA7Ci0gCi0tLyogVXNlZCBieSAyMDAyMDUyMy0yLmMgYW5kIGkzODYt c3NlLTYuYywgYW5kIHBvc3NpYmx5IG90aGVycy4gICovCi0tLyogUGxhZ2FyaXplZCBmcm9tIDIw MDIwNTIzLTIuYy4gICovCi0tLyogUGxhZ2FyaXplZCBmcm9tIGdjYy4gICovCi0rICBpZiAoX19n ZXRfY3B1aWRfbWF4IChfX2V4dCwgMCkgPCBfX2xldmVsKQotKyAgICByZXR1cm4gMDsKLSAKLS0j ZGVmaW5lIGJpdF9DTU9WICgxIDw8IDE1KQotLSNkZWZpbmUgYml0X01NWCAoMSA8PCAyMykKLS0j ZGVmaW5lIGJpdF9TU0UgKDEgPDwgMjUpCi0tI2RlZmluZSBiaXRfU1NFMiAoMSA8PCAyNikKLSsg IF9fY3B1aWQgKF9fbGV2ZWwsICpfX2VheCwgKl9fZWJ4LCAqX19lY3gsICpfX2VkeCk7Ci0rICBy ZXR1cm4gMTsKLSt9Ci0gCi0gI2lmbmRlZiBOT0lOTElORQotICNkZWZpbmUgTk9JTkxJTkUgX19h dHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKLUBAIC0zNSw0MSArMTkxLDEwIEBAIHVuc2lnbmVkIGlu dCBpMzg2X2NwdWlkICh2b2lkKSBOT0lOTElORTsKLSB1bnNpZ25lZCBpbnQgTk9JTkxJTkUKLSBp Mzg2X2NwdWlkICh2b2lkKQotIHsKLS0gIGludCBmbDEsIGZsMjsKLS0KLS0jaWZuZGVmIF9feDg2 XzY0X18KLS0gIC8qIFNlZSBpZiB3ZSBjYW4gdXNlIGNwdWlkLiAgT24gQU1ENjQgd2UgYWx3YXlz IGNhbi4gICovCi0tICBfX2FzbV9fICgicHVzaGZsOyBwdXNoZmw7IHBvcGwgJTA7IG1vdmwgJTAs JTE7IHhvcmwgJTIsJTA7IgotLQkgICAicHVzaGwgJTA7IHBvcGZsOyBwdXNoZmw7IHBvcGwgJTA7 IHBvcGZsIgotLQkgICA6ICI9JnIiIChmbDEpLCAiPSZyIiAoZmwyKQotLQkgICA6ICJpIiAoMHgw MDIwMDAwMCkpOwotLSAgaWYgKCgoZmwxIF4gZmwyKSAmIDB4MDAyMDAwMDApID09IDApCi0tICAg IHJldHVybiAoMCk7Ci0tI2VuZGlmCi0rICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4 OwotIAotLSAgLyogSG9zdCBzdXBwb3J0cyBjcHVpZC4gIFNlZSBpZiBjcHVpZCBnaXZlcyBjYXBh YmlsaXRpZXMsIHRyeQotLSAgICAgQ1BVSUQoMCkuICBQcmVzZXJ2ZSAlZWJ4IGFuZCAlZWN4OyBj cHVpZCBpbnNuIGNsb2JiZXJzIHRoZXNlLCB3ZQotLSAgICAgZG9uJ3QgbmVlZCB0aGVpciBDUFVJ RCB2YWx1ZXMgaGVyZSwgYW5kICVlYnggbWF5IGJlIHRoZSBQSUMKLS0gICAgIHJlZ2lzdGVyLiAg Ki8KLS0jaWZkZWYgX194ODZfNjRfXwotLSAgX19hc21fXyAoInB1c2hxICUlcmN4OyBwdXNocSAl JXJieDsgY3B1aWQ7IHBvcHEgJSVyYng7IHBvcHEgJSVyY3giCi0tCSAgIDogIj1hIiAoZmwxKSA6 ICIwIiAoMCkgOiAicmR4IiwgImNjIik7Ci0tI2Vsc2UKLS0gIF9fYXNtX18gKCJwdXNobCAlJWVj eDsgcHVzaGwgJSVlYng7IGNwdWlkOyBwb3BsICUlZWJ4OyBwb3BsICUlZWN4IgotLQkgICA6ICI9 YSIgKGZsMSkgOiAiMCIgKDApIDogImVkeCIsICJjYyIpOwotLSNlbmRpZgotLSAgaWYgKGZsMSA9 PSAwKQotLSAgICByZXR1cm4gKDApOwotLQotLSAgLyogSW52b2tlIENQVUlEKDEpLCByZXR1cm4g JWVkeDsgY2FsbGVyIGNhbiBleGFtaW5lIGJpdHMgdG8KLS0gICAgIGRldGVybWluZSB3aGF0J3Mg c3VwcG9ydGVkLiAgKi8KLS0jaWZkZWYgX194ODZfNjRfXwotLSAgX19hc21fXyAoInB1c2hxICUl cmN4OyBwdXNocSAlJXJieDsgY3B1aWQ7IHBvcHEgJSVyYng7IHBvcHEgJSVyY3giCi0tCSAgIDog Ij1kIiAoZmwyKSwgIj1hIiAoZmwxKSA6ICIxIiAoMSkgOiAiY2MiKTsKLS0jZWxzZQotLSAgX19h c21fXyAoInB1c2hsICUlZWN4OyBwdXNobCAlJWVieDsgY3B1aWQ7IHBvcGwgJSVlYng7IHBvcGwg JSVlY3giCi0tCSAgIDogIj1kIiAoZmwyKSwgIj1hIiAoZmwxKSA6ICIxIiAoMSkgOiAiY2MiKTsK LS0jZW5kaWYKLSsgIGlmICghX19nZXRfY3B1aWQgKDEsICZlYXgsICZlYngsICZlY3gsICZlZHgp KQotKyAgICByZXR1cm4gMDsKLSAKLS0gIHJldHVybiBmbDI7Ci0rICByZXR1cm4gZWR4OwotIH0K LS0tLSAuL2luY2x1ZGUvZWxmL0NoYW5nZUxvZy54c3RhdGUJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2luY2x1ZGUvZWxmL0NoYW5nZUxvZy54c3RhdGUJMjAxMC0w NC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsOCBAQAotKzIwMTAtMDEt MjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb21tb24uaCAoTlRf Mzg2X1hTVEFURSk6IFJlbmFtZWQgdG8gLi4uCi0rCShOVF9YODZfWFNUQVRFKTogVGhpcy4KLSsK LSsyMDEwLTAxLTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29t bW9uLmggKE5UXzM4Nl9YU1RBVEUpOiBOZXcuCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTg5NDY3LXBp ZWNlcy12bGEtY29tcGF0LnBhdGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlcy12bGEtY29tcGF0LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTU3NjJkLi4wMDAwMDAwCi0tLSBh L2dkYi1iejU4OTQ2Ny1waWVjZXMtdmxhLWNvbXBhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDU5ICswLDAgQEAKLTA2ZTM1N2Y1MzRhYmNmODkxMmU0ZmQ1OTdkYWFlOGYxMzg3ZDYzMWMKLQot Rml4IGNvbXBhdGliaWxpdHkgd2l0aDogRllJOiBmaXggQklOT1BfU1VCU0NSSVBUIHdpdGggcGll Y2VkIGFycmF5cwotIAlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0w NS9tc2cwMDI4MS5odG1sCi0KLTIwMTAtMDUtMzAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLQotCSogdmFsYXJpdGguYyAoYmlub3BfdXNlcl9kZWZpbmVkX3Ap OiBSZXR1cm4gMCBvbiBBUkcxIG9yIEFSRzIgYmVpbmcKLQlUWVBFX0RZTkFNSUMuCi0JKiB2YWx1 ZS5jIChjb2VyY2VfcmVmKTogVXNlIG9iamVjdF9hZGRyZXNzX2dldF9kYXRhIHJlc29sdXRpb24g Zm9yCi0JVFlQRV9EWU5BTUlDIEFSRy4KLQotWyBCYWNrcG9ydGVkLiAgXQotCi1JbmRleDogZ2Ri LTcuMS9nZGIvdmFsYXJpdGguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdmFs YXJpdGguYwkyMDEwLTA1LTMwIDE4OjU0OjI4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEv Z2RiL3ZhbGFyaXRoLmMJMjAxMC0wNS0zMCAxODo1NDo0My4wMDAwMDAwMDAgKzAyMDAKLUBAIC0z MDksNiArMzA5LDEwIEBAIGludAotIGJpbm9wX3VzZXJfZGVmaW5lZF9wIChlbnVtIGV4cF9vcGNv ZGUgb3AsCi0gCQkgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMikK LSB7Ci0rICAvKiBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgdXNlciBkZWZpbmVkIG9wcyBmb3Ig ZHluYW1pYyB0eXBlcy4gICovCi0rICBpZiAoVFlQRV9EWU5BTUlDICh2YWx1ZV90eXBlIChhcmcx KSkgfHwgVFlQRV9EWU5BTUlDICh2YWx1ZV90eXBlIChhcmcyKSkpCi0rICAgIHJldHVybiAwOwot KwotICAgcmV0dXJuIGJpbm9wX3R5cGVzX3VzZXJfZGVmaW5lZF9wIChvcCwgdmFsdWVfdHlwZSAo YXJnMSksIHZhbHVlX3R5cGUgKGFyZzIpKTsKLSB9Ci0gCi1JbmRleDogZ2RiLTcuMS9nZGIvdmFs dWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdmFsdWUuYwkyMDEwLTA1LTMw IDE4OjU0OjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL3ZhbHVlLmMJMjAxMC0w NS0zMCAxODo1NTo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNDAwLDcgKzI0MDAsMjQgQEAgdmFs dWVfZnJvbV9kZWNmbG9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIAotIHN0cnVjdCB2YWx1ZSAqCi0g Y29lcmNlX3JlZiAoc3RydWN0IHZhbHVlICphcmcpCi0gewotLSAgc3RydWN0IHR5cGUgKnZhbHVl X3R5cGVfYXJnX3RtcCA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwotKyAgc3Ry dWN0IHR5cGUgKnZhbHVlX3R5cGVfYXJnX3RtcDsKLSsKLSsgIGlmIChUWVBFX0RZTkFNSUMgKHZh bHVlX3R5cGUgKGFyZykpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBz ID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotKyAgICAgIENPUkVfQUREUiBh ZGRyZXNzOwotKwotKyAgICAgIHZhbHVlX3R5cGVfYXJnX3RtcCA9IHZhbHVlX3R5cGUgKGFyZyk7 Ci0rICAgICAgYWRkcmVzcyA9IHZhbHVlX3Jhd19hZGRyZXNzIChhcmcpOwotKyAgICAgIGlmICgh IG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh2YWx1ZV90eXBlX2FyZ190bXAsICZhZGRyZXNzKSkK LSsJZXJyb3IgKF8oIkF0dGVtcHQgdG8gY29lcmNlIG5vbi12YWxpZCB2YWx1ZS4iKSk7Ci0rICAg ICAgQ0hFQ0tfVFlQRURFRiAodmFsdWVfdHlwZV9hcmdfdG1wKTsKLSsgICAgICBhcmcgPSB2YWx1 ZV9hdF9sYXp5ICh2YWx1ZV90eXBlX2FyZ190bXAsIGFkZHJlc3MpOwotKyAgICAgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdmFsdWVfdHlwZV9hcmdfdG1w ID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7Ci0rCi0gICBpZiAoVFlQRV9DT0RF ICh2YWx1ZV90eXBlX2FyZ190bXApID09IFRZUEVfQ09ERV9SRUYpCi0gICAgIGFyZyA9IHZhbHVl X2F0X2xhenkgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHVlX3R5cGVfYXJnX3RtcCksCi0gCQkJIHVu cGFja19wb2ludGVyICh2YWx1ZV90eXBlIChhcmcpLAkJCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTg5 NDY3LXBpZWNlczAxb2Y0LnBhdGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlczAxb2Y0LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDc3ZDE5Li4wMDAwMDAwCi0tLSBhL2dkYi1i ejU4OTQ2Ny1waWVjZXMwMW9mNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAK LWNvbW1pdCA5NmMyM2JmZDI4NjNiY2NhNzM4ODY1M2E3YmM0YzlmOGE2NGEwM2JlCi1BdXRob3I6 IFVscmljaCBXZWlnYW5kIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBGcmkgRmViIDI2 IDEyOjQ4OjE3IDIwMTAgKzAwMDAKLQotICAgIAkqIGR3YXJmMmxvYy5jIChzdHJ1Y3QgcGllY2Vf Y2xvc3VyZSk6IFJlbW92ZSBBUkNIIG1lbWJlciwKLSAgICAJYWRkIEFERFJfU0laRSBtZW1iZXIu Ci0gICAgCShhbGxvY2F0ZV9waWVjZV9jbG9zdXJlKTogVXBkYXRlLgotICAgIAkoY29weV9waWVj ZWRfdmFsdWVfY2xvc3VyZSk6IExpa2V3aXNlLgotICAgIAkoZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjKTogTGlrZXdpc2UuCi0gICAgCShyZWFkX3BpZWNlZF92YWx1ZSk6IFVzZSBEV0FSRiBhZGRy ZXNzIHNpemUgaW5zdGVhZCBvZgotICAgIAlHREIncyBnZGJhcmNoX2FkZHJfYml0IGFzIHNpemUg b2YgdmFsdWVzIG9uIHRoZSBEV0FSRiBzdGFjay4KLQotZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJs b2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggMWM0ZDA1Ny4uMjBlZGUzZSAxMDA2NDQKLS0t LSBhL2dkYi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJmMmxvYy5jCi1AQCAtMjMyLDggKzIz Miw4IEBAIHN0cnVjdCBwaWVjZV9jbG9zdXJlCi0gICAvKiBUaGUgbnVtYmVyIG9mIHBpZWNlcyB1 c2VkIHRvIGRlc2NyaWJlIHRoaXMgdmFyaWFibGUuICAqLwotICAgaW50IG5fcGllY2VzOwotIAot LSAgLyogVGhlIGFyY2hpdGVjdHVyZSwgdXNlZCBvbmx5IGZvciBEV0FSRl9WQUxVRV9TVEFDSy4g ICovCi0tICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaDsKLSsgIC8qIFRoZSB0YXJnZXQgYWRkcmVzcyBz aXplLCB1c2VkIG9ubHkgZm9yIERXQVJGX1ZBTFVFX1NUQUNLLiAgKi8KLSsgIGludCBhZGRyX3Np emU7Ci0gCi0gICAvKiBUaGUgcGllY2VzIHRoZW1zZWx2ZXMuICAqLwotICAgc3RydWN0IGR3YXJm X2V4cHJfcGllY2UgKnBpZWNlczsKLUBAIC0yNDQsMTIgKzI0NCwxMiBAQCBzdHJ1Y3QgcGllY2Vf Y2xvc3VyZQotIAotIHN0YXRpYyBzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqCi0gYWxsb2NhdGVfcGll Y2VfY2xvc3VyZSAoaW50IG5fcGllY2VzLCBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcGllY2Vz LAotLQkJCXN0cnVjdCBnZGJhcmNoICphcmNoKQotKwkJCWludCBhZGRyX3NpemUpCi0gewotICAg c3RydWN0IHBpZWNlX2Nsb3N1cmUgKmMgPSBYWkFMTE9DIChzdHJ1Y3QgcGllY2VfY2xvc3VyZSk7 Ci0gCi0gICBjLT5uX3BpZWNlcyA9IG5fcGllY2VzOwotLSAgYy0+YXJjaCA9IGFyY2g7Ci0rICBj LT5hZGRyX3NpemUgPSBhZGRyX3NpemU7Ci0gICBjLT5waWVjZXMgPSBYQ0FMTE9DIChuX3BpZWNl cywgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UpOwotIAotICAgbWVtY3B5IChjLT5waWVjZXMsIHBp ZWNlcywgbl9waWVjZXMgKiBzaXplb2YgKHN0cnVjdCBkd2FyZl9leHByX3BpZWNlKSk7Ci1AQCAt Mjk4LDEzICsyOTgsMTIgQEAgcmVhZF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdikKLSAK LSAJY2FzZSBEV0FSRl9WQUxVRV9TVEFDSzoKLSAJICB7Ci0tCSAgICBzaXplX3QgbjsKLS0JICAg IGludCBhZGRyX3NpemUgPSBnZGJhcmNoX2FkZHJfYml0IChjLT5hcmNoKSAvIDg7Ci0tCSAgICBu ID0gcC0+c2l6ZTsKLS0JICAgIGlmIChuID4gYWRkcl9zaXplKQotLQkgICAgICBuID0gYWRkcl9z aXplOwotKwkgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh2YWx1 ZV90eXBlICh2KSk7Ci0rCSAgICBzaXplX3QgbiA9IHAtPnNpemU7Ci0rCSAgICBpZiAobiA+IGMt PmFkZHJfc2l6ZSkKLSsJICAgICAgbiA9IGMtPmFkZHJfc2l6ZTsKLSAJICAgIHN0b3JlX3Vuc2ln bmVkX2ludGVnZXIgKGNvbnRlbnRzICsgb2Zmc2V0LCBuLAotLQkJCQkgICAgZ2RiYXJjaF9ieXRl X29yZGVyIChjLT5hcmNoKSwKLSsJCQkJICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCks Ci0gCQkJCSAgICBwLT52LmV4cHIudmFsdWUpOwotIAkgIH0KLSAJICBicmVhazsKLUBAIC0zNzcs NyArMzc2LDcgQEAgY29weV9waWVjZWRfdmFsdWVfY2xvc3VyZSAoc3RydWN0IHZhbHVlICp2KQot IHsKLSAgIHN0cnVjdCBwaWVjZV9jbG9zdXJlICpjID0gKHN0cnVjdCBwaWVjZV9jbG9zdXJlICop IHZhbHVlX2NvbXB1dGVkX2Nsb3N1cmUgKHYpOwotICAgCi0tICByZXR1cm4gYWxsb2NhdGVfcGll Y2VfY2xvc3VyZSAoYy0+bl9waWVjZXMsIGMtPnBpZWNlcywgYy0+YXJjaCk7Ci0rICByZXR1cm4g YWxsb2NhdGVfcGllY2VfY2xvc3VyZSAoYy0+bl9waWVjZXMsIGMtPnBpZWNlcywgYy0+YWRkcl9z aXplKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC00MzksNyArNDM4LDggQEAgZHdhcmYyX2V2 YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwKLSAgICAgICBzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqYzsKLSAgICAgICBzdHJ1Y3QgZnJh bWVfaWQgZnJhbWVfaWQgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSAKLS0gICAgICBjID0gYWxs b2NhdGVfcGllY2VfY2xvc3VyZSAoY3R4LT5udW1fcGllY2VzLCBjdHgtPnBpZWNlcywgY3R4LT5n ZGJhcmNoKTsKLSsgICAgICBjID0gYWxsb2NhdGVfcGllY2VfY2xvc3VyZSAoY3R4LT5udW1fcGll Y2VzLCBjdHgtPnBpZWNlcywKLSsJCQkJICBjdHgtPmFkZHJfc2l6ZSk7Ci0gICAgICAgcmV0dmFs ID0gYWxsb2NhdGVfY29tcHV0ZWRfdmFsdWUgKHR5cGUsICZwaWVjZWRfdmFsdWVfZnVuY3MsIGMp OwotICAgICAgIFZBTFVFX0ZSQU1FX0lEIChyZXR2YWwpID0gZnJhbWVfaWQ7Ci0gICAgIH0KCmRp ZmYgLS1naXQgYS9nZGItYno1ODk0NjctcGllY2VzMDJvZjQucGF0Y2ggYi9nZGItYno1ODk0Njct cGllY2VzMDJvZjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5OTg2ZjAu LjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczAyb2Y0LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNjggKzAsMCBAQAotY29tbWl0IDYwZDE1ZmY2ZDc4OTIxZDA4MGFlZTY4MWU2MDM3 MmFiZTY2Mjc1NzAKLUF1dGhvcjogbWdyZXR0b24gPG1ncmV0dG9uPgotRGF0ZTogICBUdWUgTWF5 IDQgMDk6NTQ6MTcgMjAxMCArMDAwMAotCi0gICAgCSogZ2RiL2R3YXJmMmxvYy5jIChyZWFkX3Bp ZWNlZF92YWx1ZSwgd3JpdGVfcGllY2VkX3ZhbHVlLAotICAgIAlkd2FyZjJfZXZhbHVhdGVfbG9j X2Rlc2MpOiBIYW5kbGUgbm90IGJlaW5nIGFibGUgdG8gYWNjZXNzIERXQVJGCi0gICAgCXJlZ2lz dGVycyBncmFjZWZ1bGx5LgotCi1JbmRleDogZ2RiLTcuMS9nZGIvZHdhcmYybG9jLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTAtMDUtMjUgMjE6MzU6 MTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvZHdhcmYybG9jLmMJMjAxMC0wNS0y NSAyMTozNzozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NTgsOCArNDU4LDE2IEBAIHJlYWRfcGll Y2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnYpCi0gCSAgICAgIC8qIEJpZy1lbmRpYW4sIGFuZCB3 ZSB3YW50IGxlc3MgdGhhbiBmdWxsIHNpemUuICAqLwotIAkgICAgICByZWdfb2Zmc2V0ID0gcmVn aXN0ZXJfc2l6ZSAoYXJjaCwgZ2RiX3JlZ251bSkgLSBwLT5zaXplOwotIAotLQkgICAgZ2V0X2Zy YW1lX3JlZ2lzdGVyX2J5dGVzIChmcmFtZSwgZ2RiX3JlZ251bSwgcmVnX29mZnNldCwgcC0+c2l6 ZSwKLS0JCQkJICAgICAgY29udGVudHMgKyBvZmZzZXQpOwotKwkgICAgaWYgKGdkYl9yZWdudW0g IT0gLTEpCi0rCSAgICAgIHsKLSsJCWdldF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoZnJhbWUsIGdk Yl9yZWdudW0sIHJlZ19vZmZzZXQsIAotKwkJCQkJICBwLT5zaXplLCBjb250ZW50cyArIG9mZnNl dCk7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJZXJyb3IgKF8oIlVuYWJs ZSB0byBhY2Nlc3MgRFdBUkYgcmVnaXN0ZXIgbnVtYmVyICVzIiksCi0rCQkgICAgICAgcGFkZHJl c3MgKGFyY2gsIHAtPnYuZXhwci52YWx1ZSkpOwotKwkgICAgICB9Ci0gCSAgfQotIAkgIGJyZWFr OwotIAotQEAgLTUzMSw4ICs1MzksMTYgQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFs dWUgKnRvLCBzdAotIAkgICAgICAvKiBCaWctZW5kaWFuLCBhbmQgd2Ugd2FudCBsZXNzIHRoYW4g ZnVsbCBzaXplLiAgKi8KLSAJICAgICAgcmVnX29mZnNldCA9IHJlZ2lzdGVyX3NpemUgKGFyY2gs IGdkYl9yZWdudW0pIC0gcC0+c2l6ZTsKLSAKLS0JICAgIHB1dF9mcmFtZV9yZWdpc3Rlcl9ieXRl cyAoZnJhbWUsIGdkYl9yZWdudW0sIHJlZ19vZmZzZXQsIHAtPnNpemUsCi0tCQkJCSAgICAgIGNv bnRlbnRzICsgb2Zmc2V0KTsKLSsJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotKwkgICAgICB7 Ci0rCQlwdXRfZnJhbWVfcmVnaXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCByZWdfb2Zm c2V0LCAKLSsJCQkJCSAgcC0+c2l6ZSwgY29udGVudHMgKyBvZmZzZXQpOwotKwkgICAgICB9Ci0r CSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCWVycm9yIChfKCJVbmFibGUgdG8gd3JpdGUgdG8gRFdB UkYgcmVnaXN0ZXIgbnVtYmVyICVzIiksCi0rCQkgICAgICAgcGFkZHJlc3MgKGFyY2gsIHAtPnYu ZXhwci52YWx1ZSkpOwotKwkgICAgICB9Ci0gCSAgfQotIAkgIGJyZWFrOwotIAljYXNlIERXQVJG X1ZBTFVFX01FTU9SWToKLUBAIC02MTEsNyArNjI3LDE2IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzYyAoc3RydWN0IHR5cGUgKnQKLSAJICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X2Zy YW1lX2FyY2ggKGZyYW1lKTsKLSAJICAgIENPUkVfQUREUiBkd2FyZl9yZWdudW0gPSBkd2FyZl9l eHByX2ZldGNoIChjdHgsIDApOwotIAkgICAgaW50IGdkYl9yZWdudW0gPSBnZGJhcmNoX2R3YXJm Ml9yZWdfdG9fcmVnbnVtIChhcmNoLCBkd2FyZl9yZWdudW0pOwotLQkgICAgcmV0dmFsID0gdmFs dWVfZnJvbV9yZWdpc3RlciAodHlwZSwgZ2RiX3JlZ251bSwgZnJhbWUpOwotKwkgICAgaWYgKGdk Yl9yZWdudW0gIT0gLTEpCi0rCSAgICAgIHsKLSsJCXJldHZhbCA9IHZhbHVlX2Zyb21fcmVnaXN0 ZXIgKHR5cGUsCi0rCQkJCQkgICAgICBnZGJfcmVnbnVtLCBmcmFtZSk7Ci0rCSAgICAgIH0KLSsJ ICAgIGVsc2UKLSsJICAgICAgewotKwkJZXJyb3IgKF8oIlVuYWJsZSB0byBhY2Nlc3MgRFdBUkYg cmVnaXN0ZXIgbnVtYmVyICVzIiksCi0rCQkgICAgICAgcGFkZHJlc3MgKGFyY2gsIGR3YXJmX3Jl Z251bSkpOwotKwkgICAgICB9Ci0gCSAgfQotIAkgIGJyZWFrOwotIAoKZGlmZiAtLWdpdCBhL2dk Yi1iejU4OTQ2Ny1waWVjZXMwM29mNC5wYXRjaCBiL2dkYi1iejU4OTQ2Ny1waWVjZXMwM29mNC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZjNzNmOS4uMDAwMDAwMAotLS0g YS9nZGItYno1ODk0NjctcGllY2VzMDNvZjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSAr MCwwIEBACi1jb21taXQgZGFjZDY2YTUzYjU1OWJlOWMyNmQyYzUyM2YxNjhmMWVmMDI2MWY0ZAot QXV0aG9yOiBNaWNoYWVsIFNueWRlciA8bXNueWRlckBzcGVjaWZpeC5jb20+Ci1EYXRlOiAgIEZy aSBNYXkgMTQgMTc6NTM6MTEgMjAxMCArMDAwMAotCi0gICAgMjAxMC0wNS0xNCAgTWljaGFlbCBT bnlkZXIgIDxtc255ZGVyQHZtd2FyZS5jb20+Ci0gICAgCi0gICAgCSogZGJ4cmVhZC5jOiBXaGl0 ZSBzcGFjZS4KLSAgICAJKiBkY2FjaGUuYzogV2hpdGUgc3BhY2UuCi0gICAgCSogZGlzYXNtLmM6 IFdoaXRlIHNwYWNlLgotICAgIAkqIGRvdWJsZXN0LmM6IFdoaXRlIHNwYWNlLgotICAgIAkqIGRz cmVjLmM6IFdoaXRlIHNwYWNlLgotICAgIAkqIGR1bW15LWZyYW1lLmM6IFdoaXRlIHNwYWNlLgot ICAgIAkqIGR3YXJmMmV4cHIuYzogV2hpdGUgc3BhY2UuCi0gICAgCSogZHdhcmYyLWZyYW1lLmM6 IFdoaXRlIHNwYWNlLgotICAgIAkqIGR3YXJmMmxvYy5jOiBXaGl0ZSBzcGFjZS4KLSAgICAJKiBk d2FyZjJyZWFkLmM6IFdoaXRlIHNwYWNlLgotCi0tLS0gZ2RiLTcuMS9nZGIvZHdhcmYybG9jLmMu b3JpZwkyMDEwLTA1LTI1IDIzOjA2OjQ2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2Ri L2R3YXJmMmxvYy5jCTIwMTAtMDUtMjUgMjM6MDY6NDYuMDAwMDAwMDAwICswMjAwCi1AQCAtMjM2 LDYgKzIzNiw3IEBAIHN0YXRpYyBDT1JFX0FERFIKLSBkd2FyZl9leHByX2ZyYW1lX2NmYSAodm9p ZCAqYmF0b24pCi0gewotICAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gKmRlYmF0b24gPSAoc3Ry dWN0IGR3YXJmX2V4cHJfYmF0b24gKikgYmF0b247Ci0rCi0gICByZXR1cm4gZHdhcmYyX2ZyYW1l X2NmYSAoZGViYXRvbi0+ZnJhbWUpOwotIH0KLSAKLUBAIC00NDQsNiArNDQ1LDcgQEAgcmVhZF9w aWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdikKLSAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3Bp ZWNlczsgaSsrKQotICAgICB7Ci0gICAgICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnAgPSAm Yy0+cGllY2VzW2ldOwotKwotICAgICAgIHN3aXRjaCAocC0+bG9jYXRpb24pCi0gCXsKLSAJY2Fz ZSBEV0FSRl9WQUxVRV9SRUdJU1RFUjoKLUBAIC00ODIsNiArNDg0LDcgQEAgcmVhZF9waWVjZWRf dmFsdWUgKHN0cnVjdCB2YWx1ZSAqdikKLSAJICB7Ci0gCSAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCA9IGdldF90eXBlX2FyY2ggKHZhbHVlX3R5cGUgKHYpKTsKLSAJICAgIHNpemVfdCBuID0g cC0+c2l6ZTsKLSsKLSAJICAgIGlmIChuID4gYy0+YWRkcl9zaXplKQotIAkgICAgICBuID0gYy0+ YWRkcl9zaXplOwotIAkgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoY29udGVudHMgKyBvZmZz ZXQsIG4sCi1AQCAtNDkzLDYgKzQ5Niw3IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFs dWUgKnYpCi0gCWNhc2UgRFdBUkZfVkFMVUVfTElURVJBTDoKLSAJICB7Ci0gCSAgICBzaXplX3Qg biA9IHAtPnNpemU7Ci0rCi0gCSAgICBpZiAobiA+IHAtPnYubGl0ZXJhbC5sZW5ndGgpCi0gCSAg ICAgIG4gPSBwLT52LmxpdGVyYWwubGVuZ3RoOwotIAkgICAgbWVtY3B5IChjb250ZW50cyArIG9m ZnNldCwgcC0+di5saXRlcmFsLmRhdGEsIG4pOwotQEAgLTUyNSw2ICs1MjksNyBAQCB3cml0ZV9w aWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0Ci0gICBmb3IgKGkgPSAwOyBpIDwgYy0+ bl9waWVjZXM7IGkrKykKLSAgICAgewotICAgICAgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpw ID0gJmMtPnBpZWNlc1tpXTsKLSsKLSAgICAgICBzd2l0Y2ggKHAtPmxvY2F0aW9uKQotIAl7Ci0g CWNhc2UgRFdBUkZfVkFMVUVfUkVHSVNURVI6Ci1AQCAtNzEyLDYgKzcxNyw3IEBAIHN0YXRpYyBD T1JFX0FERFIKLSBuZWVkc19mcmFtZV9yZWFkX3JlZyAodm9pZCAqYmF0b24sIGludCByZWdudW0p Ci0gewotICAgc3RydWN0IG5lZWRzX2ZyYW1lX2JhdG9uICpuZl9iYXRvbiA9IGJhdG9uOwotKwot ICAgbmZfYmF0b24tPm5lZWRzX2ZyYW1lID0gMTsKLSAgIHJldHVybiAxOwotIH0KLUBAIC03NDIs NiArNzQ4LDcgQEAgc3RhdGljIENPUkVfQUREUgotIG5lZWRzX2ZyYW1lX2ZyYW1lX2NmYSAodm9p ZCAqYmF0b24pCi0gewotICAgc3RydWN0IG5lZWRzX2ZyYW1lX2JhdG9uICpuZl9iYXRvbiA9IGJh dG9uOwotKwotICAgbmZfYmF0b24tPm5lZWRzX2ZyYW1lID0gMTsKLSAgIHJldHVybiAxOwotIH0K LUBAIC03NTEsNiArNzU4LDcgQEAgc3RhdGljIENPUkVfQUREUgotIG5lZWRzX2ZyYW1lX3Rsc19h ZGRyZXNzICh2b2lkICpiYXRvbiwgQ09SRV9BRERSIG9mZnNldCkKLSB7Ci0gICBzdHJ1Y3QgbmVl ZHNfZnJhbWVfYmF0b24gKm5mX2JhdG9uID0gYmF0b247Ci0rCi0gICBuZl9iYXRvbi0+bmVlZHNf ZnJhbWUgPSAxOwotICAgcmV0dXJuIDE7Ci0gfQotQEAgLTkwNyw2ICs5MTUsNyBAQCBsb2NleHBy X3JlYWRfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnN5Ci0gewotICAgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpkbGJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW1ib2wpOwot ICAgc3RydWN0IHZhbHVlICp2YWw7Ci0rCi0gICB2YWwgPSBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rl c2MgKFNZTUJPTF9UWVBFIChzeW1ib2wpLCBmcmFtZSwgZGxiYXRvbi0+ZGF0YSwKLSAJCQkJICBk bGJhdG9uLT5zaXplLCBkbGJhdG9uLT5wZXJfY3UpOwotIAotQEAgLTkxOCw2ICs5MjcsNyBAQCBz dGF0aWMgaW50Ci0gbG9jZXhwcl9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW1i b2wpCi0gewotICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkbGJhdG9uID0gU1lNQk9M X0xPQ0FUSU9OX0JBVE9OIChzeW1ib2wpOwotKwotICAgcmV0dXJuIGR3YXJmMl9sb2NfZGVzY19u ZWVkc19mcmFtZSAoZGxiYXRvbi0+ZGF0YSwgZGxiYXRvbi0+c2l6ZSwKLSAJCQkJICAgICAgZGxi YXRvbi0+cGVyX2N1KTsKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczFvZjQu cGF0Y2ggYi9nZGItYno1ODk0NjctcGllY2VzMW9mNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNTIxNjNjNi4uMDAwMDAwMAotLS0gYS9nZGItYno1ODk0NjctcGllY2VzMW9m NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNzUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1jdnMvMjAxMC0wNS9tc2cwMDE4Ni5odG1sCi0KLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEwLzA1LzIxIDIwOjM0OjQ1CTEuMTE4MjgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEwLzA1LzIxIDIwOjM5OjUwCTEuMTE4MjkKLSMjIC0xLDMgKzEsOSBAQAotKzIwMTAtMDUt MjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBkd2FyZjJsb2MuYyAo cmVhZF9waWVjZWRfdmFsdWUpOiBXb3JrIHByb3Blcmx5IHdoZW4gJ3YnIGhhcyBhbgotKwlvZmZz ZXQuCi0rCSh3cml0ZV9waWVjZWRfdmFsdWUpOiBMaWtld2lzZS4KLSsKLSMjIyBzcmMvZ2RiL3Rl c3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNS8yMCAxOToxODo1NwkxLjIyNzIKLSMjIyBzcmMvZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNS8yMSAyMDozOTo1MAkxLjIyNzMKLSMjIC0xLDMg KzEsOSBAQAotKzIwMTAtMDUtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsK LSsJKiBnZGIuZHdhcmYyLnBpZWNlcy5leHA6IE5ldyBmaWxlLgotKwkqIGdkYi5kd2FyZjIucGll Y2VzLlM6IE5ldyBmaWxlLgotKwkqIGdkYi5kd2FyZjIucGllY2VzLmM6IE5ldyBmaWxlLgotKwot LS0tIHNyYy9nZGIvZHdhcmYybG9jLmMJMjAxMC8wNS8xNCAxNzo1MzoxNgkxLjc4Ci0rKysgc3Jj L2dkYi9kd2FyZjJsb2MuYwkyMDEwLzA1LzIxIDIwOjM5OjUwCTEuNzkKLUBAIC0yNjQsMTQgKzI2 NCw0NiBAQAotIHsKLSAgIGludCBpOwotICAgbG9uZyBvZmZzZXQgPSAwOwotKyAgVUxPTkdFU1Qg Ynl0ZXNfdG9fc2tpcDsKLSAgIGdkYl9ieXRlICpjb250ZW50czsKLSAgIHN0cnVjdCBwaWVjZV9j bG9zdXJlICpjID0gKHN0cnVjdCBwaWVjZV9jbG9zdXJlICopIHZhbHVlX2NvbXB1dGVkX2Nsb3N1 cmUgKHYpOwotICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lID0gZnJhbWVfZmluZF9ieV9pZCAo VkFMVUVfRlJBTUVfSUQgKHYpKTsKLSsgIHNpemVfdCB0eXBlX2xlbjsKLSsKLSsgIGlmICh2YWx1 ZV90eXBlICh2KSAhPSB2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodikpCi0rICAgIGludGVybmFsX2Vy cm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgXygiU2hvdWxkIG5vdCBiZSBhYmxlIHRv IGNyZWF0ZSBhIGxhenkgdmFsdWUgd2l0aCAiCi0rCQkgICAgICAiYW4gZW5jbG9zaW5nIHR5cGUi KSk7Ci0gCi0gICBjb250ZW50cyA9IHZhbHVlX2NvbnRlbnRzX3JhdyAodik7Ci0tICBmb3IgKGkg PSAwOyBpIDwgYy0+bl9waWVjZXM7IGkrKykKLSsgIGJ5dGVzX3RvX3NraXAgPSB2YWx1ZV9vZmZz ZXQgKHYpOwotKyAgdHlwZV9sZW4gPSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodikpOwotKyAg Zm9yIChpID0gMDsgaSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVfbGVuOyBpKyspCi0g ICAgIHsKLSAgICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZjLT5waWVjZXNbaV07 Ci0rICAgICAgc2l6ZV90IHRoaXNfc2l6ZTsKLSsgICAgICBsb25nIGRlc3Rfb2Zmc2V0LCBzb3Vy Y2Vfb2Zmc2V0OwotKwotKyAgICAgIGlmIChieXRlc190b19za2lwID4gMCAmJiBieXRlc190b19z a2lwID49IHAtPnNpemUpCi0rCXsKLSsJICBieXRlc190b19za2lwIC09IHAtPnNpemU7Ci0rCSAg Y29udGludWU7Ci0rCX0KLSsgICAgICB0aGlzX3NpemUgPSBwLT5zaXplOwotKyAgICAgIGlmICh0 aGlzX3NpemUgPiB0eXBlX2xlbiAtIG9mZnNldCkKLSsJdGhpc19zaXplID0gdHlwZV9sZW4gLSBv ZmZzZXQ7Ci0rICAgICAgaWYgKGJ5dGVzX3RvX3NraXAgPiAwKQotKwl7Ci0rCSAgZGVzdF9vZmZz ZXQgPSAwOwotKwkgIHNvdXJjZV9vZmZzZXQgPSBieXRlc190b19za2lwOwotKwkgIHRoaXNfc2l6 ZSAtPSBieXRlc190b19za2lwOwotKwkgIGJ5dGVzX3RvX3NraXAgPSAwOwotKwl9Ci0rICAgICAg ZWxzZQotKwl7Ci0rCSAgZGVzdF9vZmZzZXQgPSBvZmZzZXQ7Ci0rCSAgc291cmNlX29mZnNldCA9 IDA7Ci0rCX0KLSAKLSAgICAgICBzd2l0Y2ggKHAtPmxvY2F0aW9uKQotIAl7Ci1AQCAtMjgwLDE3 ICszMTIsMTcgQEAKLSAJICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X2ZyYW1lX2FyY2gg KGZyYW1lKTsKLSAJICAgIGludCBnZGJfcmVnbnVtID0gZ2RiYXJjaF9kd2FyZjJfcmVnX3RvX3Jl Z251bSAoYXJjaCwKLSAJCQkJCQkJICAgcC0+di5leHByLnZhbHVlKTsKLS0JICAgIGludCByZWdf b2Zmc2V0ID0gMDsKLSsJICAgIGludCByZWdfb2Zmc2V0ID0gc291cmNlX29mZnNldDsKLSAKLSAJ ICAgIGlmIChnZGJhcmNoX2J5dGVfb3JkZXIgKGFyY2gpID09IEJGRF9FTkRJQU5fQklHCi0tCQkm JiBwLT5zaXplIDwgcmVnaXN0ZXJfc2l6ZSAoYXJjaCwgZ2RiX3JlZ251bSkpCi0rCQkmJiB0aGlz X3NpemUgPCByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSkKLSAJICAgICAgLyogQmln LWVuZGlhbiwgYW5kIHdlIHdhbnQgbGVzcyB0aGFuIGZ1bGwgc2l6ZS4gICovCi0tCSAgICAgIHJl Z19vZmZzZXQgPSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSAtIHAtPnNpemU7Ci0r CSAgICAgIHJlZ19vZmZzZXQgPSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSAtIHRo aXNfc2l6ZTsKLSAKLSAJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotIAkgICAgICB7Ci0gCQln ZXRfZnJhbWVfcmVnaXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCByZWdfb2Zmc2V0LCAK LS0JCQkJCSAgcC0+c2l6ZSwgY29udGVudHMgKyBvZmZzZXQpOwotKwkJCQkJICB0aGlzX3NpemUs IGNvbnRlbnRzICsgZGVzdF9vZmZzZXQpOwotIAkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAg IHsKLUBAIC0zMDIsMzggKzMzNCw2MCBAQAotIAotIAljYXNlIERXQVJGX1ZBTFVFX01FTU9SWToK LSAJICBpZiAocC0+di5leHByLmluX3N0YWNrX21lbW9yeSkKLS0JICAgIHJlYWRfc3RhY2sgKHAt PnYuZXhwci52YWx1ZSwgY29udGVudHMgKyBvZmZzZXQsIHAtPnNpemUpOwotKwkgICAgcmVhZF9z dGFjayAocC0+di5leHByLnZhbHVlICsgc291cmNlX29mZnNldCwKLSsJCQljb250ZW50cyArIGRl c3Rfb2Zmc2V0LCB0aGlzX3NpemUpOwotIAkgIGVsc2UKLS0JICAgIHJlYWRfbWVtb3J5IChwLT52 LmV4cHIudmFsdWUsIGNvbnRlbnRzICsgb2Zmc2V0LCBwLT5zaXplKTsKLSsJICAgIHJlYWRfbWVt b3J5IChwLT52LmV4cHIudmFsdWUgKyBzb3VyY2Vfb2Zmc2V0LAotKwkJCSBjb250ZW50cyArIGRl c3Rfb2Zmc2V0LCB0aGlzX3NpemUpOwotIAkgIGJyZWFrOwotIAotIAljYXNlIERXQVJGX1ZBTFVF X1NUQUNLOgotIAkgIHsKLSAJICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVf YXJjaCAodmFsdWVfdHlwZSAodikpOwotLQkgICAgc2l6ZV90IG4gPSBwLT5zaXplOwotKwkgICAg c2l6ZV90IG4gPSB0aGlzX3NpemU7Ci0rCi0rCSAgICBpZiAobiA+IGMtPmFkZHJfc2l6ZSAtIHNv dXJjZV9vZmZzZXQpCi0rCSAgICAgIG4gPSAoYy0+YWRkcl9zaXplID49IHNvdXJjZV9vZmZzZXQK LSsJCSAgID8gYy0+YWRkcl9zaXplIC0gc291cmNlX29mZnNldAotKwkJICAgOiAwKTsKLSsJICAg IGlmIChuID09IDApCi0rCSAgICAgIHsKLSsJCS8qIE5vdGhpbmcuICAqLwotKwkgICAgICB9Ci0r CSAgICBlbHNlIGlmIChzb3VyY2Vfb2Zmc2V0ID09IDApCi0rCSAgICAgIHN0b3JlX3Vuc2lnbmVk X2ludGVnZXIgKGNvbnRlbnRzICsgZGVzdF9vZmZzZXQsIG4sCi0rCQkJCSAgICAgIGdkYmFyY2hf Ynl0ZV9vcmRlciAoZ2RiYXJjaCksCi0rCQkJCSAgICAgIHAtPnYuZXhwci52YWx1ZSk7Ci0rCSAg ICBlbHNlCi0rCSAgICAgIHsKLSsJCWdkYl9ieXRlIGJ5dGVzW3NpemVvZiAoVUxPTkdFU1QpXTsK LSAKLS0JICAgIGlmIChuID4gYy0+YWRkcl9zaXplKQotLQkgICAgICBuID0gYy0+YWRkcl9zaXpl OwotLQkgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoY29udGVudHMgKyBvZmZzZXQsIG4sCi0t CQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpLAotLQkJCQkgICAgcC0+di5leHBy LnZhbHVlKTsKLSsJCXN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCBuICsgc291cmNlX29m ZnNldCwKLSsJCQkJCWdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCksCi0rCQkJCQlwLT52LmV4 cHIudmFsdWUpOwotKwkJbWVtY3B5IChjb250ZW50cyArIGRlc3Rfb2Zmc2V0LCBieXRlcyArIHNv dXJjZV9vZmZzZXQsIG4pOwotKwkgICAgICB9Ci0gCSAgfQotIAkgIGJyZWFrOwotIAotIAljYXNl IERXQVJGX1ZBTFVFX0xJVEVSQUw6Ci0gCSAgewotLQkgICAgc2l6ZV90IG4gPSBwLT5zaXplOwot KwkgICAgc2l6ZV90IG4gPSB0aGlzX3NpemU7Ci0gCi0tCSAgICBpZiAobiA+IHAtPnYubGl0ZXJh bC5sZW5ndGgpCi0tCSAgICAgIG4gPSBwLT52LmxpdGVyYWwubGVuZ3RoOwotLQkgICAgbWVtY3B5 IChjb250ZW50cyArIG9mZnNldCwgcC0+di5saXRlcmFsLmRhdGEsIG4pOwotKwkgICAgaWYgKG4g PiBwLT52LmxpdGVyYWwubGVuZ3RoIC0gc291cmNlX29mZnNldCkKLSsJICAgICAgbiA9IChwLT52 LmxpdGVyYWwubGVuZ3RoID49IHNvdXJjZV9vZmZzZXQKLSsJCSAgID8gcC0+di5saXRlcmFsLmxl bmd0aCAtIHNvdXJjZV9vZmZzZXQKLSsJCSAgIDogMCk7Ci0rCSAgICBpZiAobiAhPSAwKQotKwkg ICAgICBtZW1jcHkgKGNvbnRlbnRzICsgZGVzdF9vZmZzZXQsCi0rCQkgICAgICBwLT52LmxpdGVy YWwuZGF0YSArIHNvdXJjZV9vZmZzZXQsIG4pOwotIAkgIH0KLSAJICBicmVhazsKLSAKLSAJZGVm YXVsdDoKLSAJICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJpbnZhbGlk IGxvY2F0aW9uIHR5cGUiKSk7Ci0gCX0KLS0gICAgICBvZmZzZXQgKz0gcC0+c2l6ZTsKLSsgICAg ICBvZmZzZXQgKz0gdGhpc19zaXplOwotICAgICB9Ci0gfQotIAotQEAgLTM0Miw5ICszOTYsMTEg QEAKLSB7Ci0gICBpbnQgaTsKLSAgIGxvbmcgb2Zmc2V0ID0gMDsKLS0gIGdkYl9ieXRlICpjb250 ZW50czsKLSsgIFVMT05HRVNUIGJ5dGVzX3RvX3NraXA7Ci0rICBjb25zdCBnZGJfYnl0ZSAqY29u dGVudHM7Ci0gICBzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqYyA9IChzdHJ1Y3QgcGllY2VfY2xvc3Vy ZSAqKSB2YWx1ZV9jb21wdXRlZF9jbG9zdXJlICh0byk7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUgPSBmcmFtZV9maW5kX2J5X2lkIChWQUxVRV9GUkFNRV9JRCAodG8pKTsKLSsgIHNpemVf dCB0eXBlX2xlbjsKLSAKLSAgIGlmIChmcmFtZSA9PSBOVUxMKQotICAgICB7Ci1AQCAtMzUyLDEw ICs0MDgsMzUgQEAKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0gIGNvbnRlbnRzID0gdmFs dWVfY29udGVudHNfcmF3IChmcm9tKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlczsg aSsrKQotKyAgY29udGVudHMgPSB2YWx1ZV9jb250ZW50cyAoZnJvbSk7Ci0rICBieXRlc190b19z a2lwID0gdmFsdWVfb2Zmc2V0ICh0byk7Ci0rICB0eXBlX2xlbiA9IFRZUEVfTEVOR1RIICh2YWx1 ZV90eXBlICh0bykpOwotKyAgZm9yIChpID0gMDsgaSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8 IHR5cGVfbGVuOyBpKyspCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAq cCA9ICZjLT5waWVjZXNbaV07Ci0rICAgICAgc2l6ZV90IHRoaXNfc2l6ZTsKLSsgICAgICBsb25n IGRlc3Rfb2Zmc2V0LCBzb3VyY2Vfb2Zmc2V0OwotKwotKyAgICAgIGlmIChieXRlc190b19za2lw ID4gMCAmJiBieXRlc190b19za2lwID49IHAtPnNpemUpCi0rCXsKLSsJICBieXRlc190b19za2lw IC09IHAtPnNpemU7Ci0rCSAgY29udGludWU7Ci0rCX0KLSsgICAgICB0aGlzX3NpemUgPSBwLT5z aXplOwotKyAgICAgIGlmICh0aGlzX3NpemUgPiB0eXBlX2xlbiAtIG9mZnNldCkKLSsJdGhpc19z aXplID0gdHlwZV9sZW4gLSBvZmZzZXQ7Ci0rICAgICAgaWYgKGJ5dGVzX3RvX3NraXAgPiAwKQot Kwl7Ci0rCSAgZGVzdF9vZmZzZXQgPSBieXRlc190b19za2lwOwotKwkgIHNvdXJjZV9vZmZzZXQg PSAwOwotKwkgIHRoaXNfc2l6ZSAtPSBieXRlc190b19za2lwOwotKwkgIGJ5dGVzX3RvX3NraXAg PSAwOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgZGVzdF9vZmZzZXQgPSAwOwotKwkgIHNv dXJjZV9vZmZzZXQgPSBvZmZzZXQ7Ci0rCX0KLSAKLSAgICAgICBzd2l0Y2ggKHAtPmxvY2F0aW9u KQotIAl7Ci1AQCAtMzYzLDE3ICs0NDQsMTcgQEAKLSAJICB7Ci0gCSAgICBzdHJ1Y3QgZ2RiYXJj aCAqYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0gCSAgICBpbnQgZ2RiX3JlZ251bSA9 IGdkYmFyY2hfZHdhcmYyX3JlZ190b19yZWdudW0gKGFyY2gsIHAtPnYuZXhwci52YWx1ZSk7Ci0t CSAgICBpbnQgcmVnX29mZnNldCA9IDA7Ci0rCSAgICBpbnQgcmVnX29mZnNldCA9IGRlc3Rfb2Zm c2V0OwotIAotIAkgICAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlciAoYXJjaCkgPT0gQkZEX0VORElB Tl9CSUcKLS0JCSYmIHAtPnNpemUgPCByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSkK LSsJCSYmIHRoaXNfc2l6ZSA8PSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSkKLSAJ ICAgICAgLyogQmlnLWVuZGlhbiwgYW5kIHdlIHdhbnQgbGVzcyB0aGFuIGZ1bGwgc2l6ZS4gICov Ci0tCSAgICAgIHJlZ19vZmZzZXQgPSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSAt IHAtPnNpemU7Ci0rCSAgICAgIHJlZ19vZmZzZXQgPSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJf cmVnbnVtKSAtIHRoaXNfc2l6ZTsKLSAKLSAJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotIAkg ICAgICB7Ci0gCQlwdXRfZnJhbWVfcmVnaXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCBy ZWdfb2Zmc2V0LCAKLS0JCQkJCSAgcC0+c2l6ZSwgY29udGVudHMgKyBvZmZzZXQpOwotKwkJCQkJ ICB0aGlzX3NpemUsIGNvbnRlbnRzICsgc291cmNlX29mZnNldCk7Ci0gCSAgICAgIH0KLSAJICAg IGVsc2UKLSAJICAgICAgewotQEAgLTM4MywxMyArNDY0LDE0IEBACi0gCSAgfQotIAkgIGJyZWFr OwotIAljYXNlIERXQVJGX1ZBTFVFX01FTU9SWToKLS0JICB3cml0ZV9tZW1vcnkgKHAtPnYuZXhw ci52YWx1ZSwgY29udGVudHMgKyBvZmZzZXQsIHAtPnNpemUpOwotKwkgIHdyaXRlX21lbW9yeSAo cC0+di5leHByLnZhbHVlICsgZGVzdF9vZmZzZXQsCi0rCQkJY29udGVudHMgKyBzb3VyY2Vfb2Zm c2V0LCB0aGlzX3NpemUpOwotIAkgIGJyZWFrOwotIAlkZWZhdWx0OgotIAkgIHNldF92YWx1ZV9v cHRpbWl6ZWRfb3V0ICh0bywgMSk7Ci0gCSAgcmV0dXJuOwotIAl9Ci0tICAgICAgb2Zmc2V0ICs9 IHAtPnNpemU7Ci0rICAgICAgb2Zmc2V0ICs9IHRoaXNfc2l6ZTsKLSAgICAgfQotIH0KLSAKLS0t LSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5TCi0rKysgc3JjL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuUwkyMDEwLTA1LTI1IDIwOjE3OjUxLjk4ODcxODAwMCAr MDAwMAotQEAgLTAsMCArMSwxNjU1IEBACi0rLyoKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsgKi8KLSsKLSsvKiBUaGlzIHdhcyBjb21waWxlZCB3aXRoIGEgdmVyc2lvbiBv ZiBnY2MgbW9kaWZpZWQgdG8gZW1pdCBiZXR0ZXIKLSsgICBkZWJ1Z2luZm8gZm9yIFNSQSdkIHN0 cnVjdHVyZXMuICBTZWU6Ci0rCWh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j Z2k/aWQ9NDM5ODMKLSsJCi0rICAgIFRoZSBvcmlnaW5hbCBwcm9ncmFtIGlzICJwaWVjZXMuYyIs IGluIHRoaXMgZGlyZWN0b3J5LgotKyovCi0rCi0rCS5maWxlCSJwaWVjZXMuYyIKLSsJLnNlY3Rp b24JLmRlYnVnX2FiYnJldiwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS5zZWN0 aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwotKy5MZGVidWdfaW5mbzA6Ci0rCS5zZWN0aW9u CS5kZWJ1Z19saW5lLCIiLEBwcm9nYml0cwotKy5MZGVidWdfbGluZTA6Ci0rCS50ZXh0Ci0rLkx0 ZXh0MDoKLSsJLnAyYWxpZ24gNCwsMTUKLSsuZ2xvYmwgYmFyCi0rCS50eXBlCWJhciwgQGZ1bmN0 aW9uCi0rYmFyOgotKy5MRkIwOgotKwkuZmlsZSAxICJwaWVjZXMuYyIKLSsJIyBwaWVjZXMuYzoy OAotKwkubG9jIDEgMjggMAotKy5MVkwwOgotKwkjIGJhc2ljIGJsb2NrIDIKLSsJcHVzaGwJJWVi cAotKy5MQ0ZJMDoKLSsJbW92bAklZXNwLCAlZWJwCi0rLkxDRkkxOgotKwkjIHBpZWNlcy5jOjI5 Ci0rCS5sb2MgMSAyOSAwCi0rCW1vdmwJOCglZWJwKSwgJWVheAotKwkjIHBpZWNlcy5jOjMwCi0r CS5sb2MgMSAzMCAwCi0rCXBvcGwJJWVicAotKy5MQ0ZJMjoKLSsJcmV0Ci0rLkxGRTA6Ci0rCS5z aXplCWJhciwgLi1iYXIKLSsJLnAyYWxpZ24gNCwsMTUKLSsuZ2xvYmwgZjEKLSsJLnR5cGUJZjEs IEBmdW5jdGlvbgotK2YxOgotKy5MRkIxOgotKwkjIHBpZWNlcy5jOjM0Ci0rCS5sb2MgMSAzNCAw Ci0rLkxWTDE6Ci0rCSMgYmFzaWMgYmxvY2sgMgotKwlwdXNobAklZWJwCi0rLkxDRkkzOgotKwlt b3ZsCSVlc3AsICVlYnAKLSsuTENGSTQ6Ci0rLkxWTDI6Ci0rCXN1YmwJJDEyLCAlZXNwCi0rLkxD Rkk1OgotKwltb3ZsCSVlc2ksIC00KCVlYnApCi0rLkxDRkk2OgotKwkjIHBpZWNlcy5jOjM3Ci0r CS5sb2MgMSAzNyAwCi0rCW1vdmwJOCglZWJwKSwgJWVzaQotKwkjIHBpZWNlcy5jOjM0Ci0rCS5s b2MgMSAzNCAwCi0rCW1vdmwJJWVieCwgLTgoJWVicCkKLSsuTENGSTc6Ci0rCSMgcGllY2VzLmM6 MzYKLSsJLmxvYyAxIDM2IDAKLSsJbW92bAkkNCwgJWVieAotKy5MVkwzOgotKwkjIHBpZWNlcy5j OjM4Ci0rCS5sb2MgMSAzOCAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCSMgcGllY2VzLmM6MzcK LSsJLmxvYyAxIDM3IDAKLSsJYWRkbAkkNywgJWVzaQotKy5MVkw0OgotKwkjIHBpZWNlcy5jOjM4 Ci0rCS5sb2MgMSAzOCAwCi0rCWNhbGwJYmFyCi0rCSMgcGllY2VzLmM6MzkKLSsJLmxvYyAxIDM5 IDAKLSsJbW92bAklZXNpLCAoJWVzcCkKLSsJY2FsbAliYXIKLSsJIyBwaWVjZXMuYzo0MAotKwku bG9jIDEgNDAgMAotKwlsZWFsCSglZWJ4LCVlc2kpLCAlZWF4Ci0rCSMgcGllY2VzLmM6NDEKLSsJ LmxvYyAxIDQxIDAKLSsJbW92bAktOCglZWJwKSwgJWVieAotKy5MVkw1OgotKwltb3ZsCS00KCVl YnApLCAlZXNpCi0rLkxWTDY6Ci0rCW1vdmwJJWVicCwgJWVzcAotKy5MQ0ZJODoKLSsJcG9wbAkl ZWJwCi0rLkxDRkk5OgotKwlyZXQKLSsuTEZFMToKLSsJLnNpemUJZjEsIC4tZjEKLSsJLnAyYWxp Z24gNCwsMTUKLSsuZ2xvYmwgZjIKLSsJLnR5cGUJZjIsIEBmdW5jdGlvbgotK2YyOgotKy5MRkIy OgotKwkjIHBpZWNlcy5jOjQ1Ci0rCS5sb2MgMSA0NSAwCi0rLkxWTDc6Ci0rCSMgYmFzaWMgYmxv Y2sgMgotKwlwdXNobAklZWJwCi0rLkxDRkkxMDoKLSsJbW92bAklZXNwLCAlZWJwCi0rLkxDRkkx MToKLSsuTFZMODoKLSsJc3VibAkkMTIsICVlc3AKLSsuTENGSTEyOgotKwltb3ZsCSVlc2ksIC00 KCVlYnApCi0rLkxDRkkxMzoKLSsJIyBwaWVjZXMuYzo0OAotKwkubG9jIDEgNDggMAotKwltb3Zs CTgoJWVicCksICVlc2kKLSsJIyBwaWVjZXMuYzo0NQotKwkubG9jIDEgNDUgMAotKwltb3ZsCSVl YngsIC04KCVlYnApCi0rLkxDRkkxNDoKLSsJIyBwaWVjZXMuYzo0NwotKwkubG9jIDEgNDcgMAot Kwltb3ZsCSQ0LCAlZWJ4Ci0rLkxWTDk6Ci0rCSMgcGllY2VzLmM6NDkKLSsJLmxvYyAxIDQ5IDAK LSsJbW92bAklZWJ4LCAoJWVzcCkKLSsJIyBwaWVjZXMuYzo0OAotKwkubG9jIDEgNDggMAotKwlh ZGRsCSQ3LCAlZXNpCi0rLkxWTDEwOgotKwkjIHBpZWNlcy5jOjQ5Ci0rCS5sb2MgMSA0OSAwCi0r CWNhbGwJYmFyCi0rCSMgcGllY2VzLmM6NTAKLSsJLmxvYyAxIDUwIDAKLSsJbW92bAklZXNpLCAo JWVzcCkKLSsJY2FsbAliYXIKLSsJIyBwaWVjZXMuYzo1MQotKwkubG9jIDEgNTEgMAotKwlsZWFs CSglZWJ4LCVlc2kpLCAlZWF4Ci0rCSMgcGllY2VzLmM6NTIKLSsJLmxvYyAxIDUyIDAKLSsJbW92 bAktOCglZWJwKSwgJWVieAotKy5MVkwxMToKLSsJbW92bAktNCglZWJwKSwgJWVzaQotKy5MVkwx MjoKLSsJbW92bAklZWJwLCAlZXNwCi0rLkxDRkkxNToKLSsJcG9wbAklZWJwCi0rLkxDRkkxNjoK LSsJcmV0Ci0rLkxGRTI6Ci0rCS5zaXplCWYyLCAuLWYyCi0rCS5wMmFsaWduIDQsLDE1Ci0rLmds b2JsIGYzCi0rCS50eXBlCWYzLCBAZnVuY3Rpb24KLStmMzoKLSsuTEZCMzoKLSsJIyBwaWVjZXMu Yzo1NgotKwkubG9jIDEgNTYgMAotKy5MVkwxMzoKLSsJIyBiYXNpYyBibG9jayAyCi0rCXB1c2hs CSVlYnAKLSsuTENGSTE3OgotKwkjIHBpZWNlcy5jOjU4Ci0rCS5sb2MgMSA1OCAwCi0rCW1vdmwJ JDQsICVlZHgKLSsJIyBwaWVjZXMuYzo1NgotKwkubG9jIDEgNTYgMAotKwltb3ZsCSVlc3AsICVl YnAKLSsuTENGSTE4OgotKy5MVkwxNDoKLSsJc3VibAkkMTIsICVlc3AKLSsuTENGSTE5OgotKwkj IHBpZWNlcy5jOjU4Ci0rCS5sb2MgMSA1OCAwCi0rLkxWTDE1OgotKwkjIHBpZWNlcy5jOjU2Ci0r CS5sb2MgMSA1NiAwCi0rCW1vdmwJJWVzaSwgLTQoJWVicCkKLSsuTENGSTIwOgotKwkjIHBpZWNl cy5jOjYwCi0rCS5sb2MgMSA2MCAwCi0rCW1vdnN3bAklZHgsICVlc2kKLSsJIyBwaWVjZXMuYzo1 NgotKwkubG9jIDEgNTYgMAotKwltb3ZsCSVlYngsIC04KCVlYnApCi0rLkxDRkkyMToKLSsJIyBw aWVjZXMuYzo2MAotKwkubG9jIDEgNjAgMAotKwltb3ZsCSVlc2ksICglZXNwKQotKwljYWxsCWJh cgotKy5MVkwxNjoKLSsJIyBwaWVjZXMuYzo1NwotKwkubG9jIDEgNTcgMAotKwltb3ZsCTgoJWVi cCksICVlZHgKLSsJc2FsbAkkNCwgJWVkeAotKwkjIHBpZWNlcy5jOjU5Ci0rCS5sb2MgMSA1OSAw Ci0rCWFkZGwJJDExMiwgJWVkeAotKwlzYXJ3CSQ0LCAlZHgKLSsJIyBwaWVjZXMuYzo2MQotKwku bG9jIDEgNjEgMAotKwltb3Zzd2wJJWR4LCAlZWJ4Ci0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNh bGwJYmFyCi0rCSMgcGllY2VzLmM6NjIKLSsJLmxvYyAxIDYyIDAKLSsJbGVhbAkoJWVzaSwlZWJ4 KSwgJWVheAotKwkjIHBpZWNlcy5jOjYzCi0rCS5sb2MgMSA2MyAwCi0rCW1vdmwJLTgoJWVicCks ICVlYngKLSsJbW92bAktNCglZWJwKSwgJWVzaQotKy5MVkwxNzoKLSsJbW92bAklZWJwLCAlZXNw Ci0rLkxDRkkyMjoKLSsJcG9wbAklZWJwCi0rLkxDRkkyMzoKLSsJcmV0Ci0rLkxGRTM6Ci0rCS5z aXplCWYzLCAuLWYzCi0rCS5wMmFsaWduIDQsLDE1Ci0rLmdsb2JsIGY0Ci0rCS50eXBlCWY0LCBA ZnVuY3Rpb24KLStmNDoKLSsuTEZCNDoKLSsJIyBwaWVjZXMuYzo2NwotKwkubG9jIDEgNjcgMAot Ky5MVkwxODoKLSsJIyBiYXNpYyBibG9jayAyCi0rCXB1c2hsCSVlYnAKLSsuTENGSTI0OgotKwlt b3ZsCSVlc3AsICVlYnAKLSsuTENGSTI1OgotKwlzdWJsCSQxMiwgJWVzcAotKy5MQ0ZJMjY6Ci0r CW1vdmwJJWVzaSwgLTQoJWVicCkKLSsuTENGSTI3OgotKwltb3ZsCTgoJWVicCksICVlc2kKLSsu TFZMMTk6Ci0rCW1vdmwJJWVieCwgLTgoJWVicCkKLSsuTENGSTI4OgotKwkjIHBpZWNlcy5jOjY5 Ci0rCS5sb2MgMSA2OSAwCi0rCW1vdmwJJWVzaSwgJWVieAotKwkjIHBpZWNlcy5jOjcwCi0rCS5s b2MgMSA3MCAwCi0rCWFkZGwJJDEsICVlc2kKLSsJIyBwaWVjZXMuYzo2OQotKwkubG9jIDEgNjkg MAotKy5MVkwyMDoKLSsJIyBwaWVjZXMuYzo3MQotKwkubG9jIDEgNzEgMAotKwltb3ZsCSVlYngs ICglZXNwKQotKwljYWxsCWJhcgotKwkjIHBpZWNlcy5jOjcyCi0rCS5sb2MgMSA3MiAwCi0rCW1v dmwJJWVzaSwgKCVlc3ApCi0rCWNhbGwJYmFyCi0rCSMgcGllY2VzLmM6NzMKLSsJLmxvYyAxIDcz IDAKLSsJbGVhbAkoJWVieCwlZXNpKSwgJWVheAotKwkjIHBpZWNlcy5jOjc0Ci0rCS5sb2MgMSA3 NCAwCi0rCW1vdmwJLTgoJWVicCksICVlYngKLSsuTFZMMjE6Ci0rCW1vdmwJLTQoJWVicCksICVl c2kKLSsuTFZMMjI6Ci0rCW1vdmwJJWVicCwgJWVzcAotKy5MQ0ZJMjk6Ci0rCXBvcGwJJWVicAot Ky5MQ0ZJMzA6Ci0rCXJldAotKy5MRkU0OgotKwkuc2l6ZQlmNCwgLi1mNAotKwkucDJhbGlnbiA0 LCwxNQotKy5nbG9ibCBmNQotKwkudHlwZQlmNSwgQGZ1bmN0aW9uCi0rZjU6Ci0rLkxGQjU6Ci0r CSMgcGllY2VzLmM6NzgKLSsJLmxvYyAxIDc4IDAKLSsuTFZMMjM6Ci0rCSMgYmFzaWMgYmxvY2sg MgotKwlwdXNobAklZWJwCi0rLkxDRkkzMToKLSsJbW92bAklZXNwLCAlZWJwCi0rLkxDRkkzMjoK LSsJc3VibAkkMTIsICVlc3AKLSsuTENGSTMzOgotKwltb3ZsCSVlc2ksIC00KCVlYnApCi0rLkxD RkkzNDoKLSsJbW92bAk4KCVlYnApLCAlZXNpCi0rLkxWTDI0OgotKwltb3ZsCSVlYngsIC04KCVl YnApCi0rLkxDRkkzNToKLSsJIyBwaWVjZXMuYzo4MAotKwkubG9jIDEgODAgMAotKwltb3ZsCSVl c2ksICVlYngKLSsJIyBwaWVjZXMuYzo4MQotKwkubG9jIDEgODEgMAotKwlhZGRsCSQxLCAlZXNp Ci0rCSMgcGllY2VzLmM6ODAKLSsJLmxvYyAxIDgwIDAKLSsuTFZMMjU6Ci0rCSMgcGllY2VzLmM6 ODIKLSsJLmxvYyAxIDgyIDAKLSsJbW92bAklZWJ4LCAoJWVzcCkKLSsJY2FsbAliYXIKLSsJIyBw aWVjZXMuYzo4MwotKwkubG9jIDEgODMgMAotKwltb3ZsCSVlc2ksICglZXNwKQotKwljYWxsCWJh cgotKwkjIHBpZWNlcy5jOjg0Ci0rCS5sb2MgMSA4NCAwCi0rCWxlYWwJKCVlYngsJWVzaSksICVl YXgKLSsJIyBwaWVjZXMuYzo4NQotKwkubG9jIDEgODUgMAotKwltb3ZsCS04KCVlYnApLCAlZWJ4 Ci0rLkxWTDI2OgotKwltb3ZsCS00KCVlYnApLCAlZXNpCi0rLkxWTDI3OgotKwltb3ZsCSVlYnAs ICVlc3AKLSsuTENGSTM2OgotKwlwb3BsCSVlYnAKLSsuTENGSTM3OgotKwlyZXQKLSsuTEZFNToK LSsJLnNpemUJZjUsIC4tZjUKLSsJLnAyYWxpZ24gNCwsMTUKLSsuZ2xvYmwgbWFpbgotKwkudHlw ZQltYWluLCBAZnVuY3Rpb24KLSttYWluOgotKy5MRkI2OgotKwkjIHBpZWNlcy5jOjg5Ci0rCS5s b2MgMSA4OSAwCi0rCSMgYmFzaWMgYmxvY2sgMgotKwlwdXNobAklZWJwCi0rLkxDRkkzODoKLSsJ bW92bAklZXNwLCAlZWJwCi0rLkxDRkkzOToKLSsJcHVzaGwJJWVieAotKy5MQ0ZJNDA6Ci0rCSMg cGllY2VzLmM6OTEKLSsJLmxvYyAxIDkxIDAKLSsJbW92bAkkNywgJWVieAotKwkjIHBpZWNlcy5j Ojg5Ci0rCS5sb2MgMSA4OSAwCi0rCXN1YmwJJDQsICVlc3AKLSsuTENGSTQxOgotKwkjIHBpZWNl cy5jOjkxCi0rCS5sb2MgMSA5MSAwCi0rLkxWTDI4OgotKwkjIHBpZWNlcy5jOjkyCi0rCS5sb2Mg MSA5MiAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjEKLSsJIyBwaWVjZXMuYzo5Mwot KwkubG9jIDEgOTMgMAotKwltb3ZsCSVlYngsICglZXNwKQotKwljYWxsCWYyCi0rCSMgcGllY2Vz LmM6OTQKLSsJLmxvYyAxIDk0IDAKLSsJbW92bAklZWJ4LCAoJWVzcCkKLSsJY2FsbAlmMwotKwkj IHBpZWNlcy5jOjk1Ci0rCS5sb2MgMSA5NSAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJ ZjQKLSsJIyBwaWVjZXMuYzo5NgotKwkubG9jIDEgOTYgMAotKwltb3ZsCSVlYngsICglZXNwKQot KwljYWxsCWY1Ci0rCSMgcGllY2VzLmM6OTgKLSsJLmxvYyAxIDk4IDAKLSsJYWRkbAkkNCwgJWVz cAotKwl4b3JsCSVlYXgsICVlYXgKLSsJcG9wbAklZWJ4Ci0rLkxDRkk0MjoKLSsuTFZMMjk6Ci0r CXBvcGwJJWVicAotKy5MQ0ZJNDM6Ci0rCXJldAotKy5MRkU2OgotKwkuc2l6ZQltYWluLCAuLW1h aW4KLSsjQVBQCi0rCS5zZWN0aW9uCS5kZWJ1Z19mcmFtZSwiIixAcHJvZ2JpdHMKLSsuTGZyYW1l MDoKLSsJLmxvbmcJLkxFQ0lFMC0uTFNDSUUwCSMgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlv biBFbnRyeQotKy5MU0NJRTA6Ci0rCS5sb25nCTB4ZmZmZmZmZmYJIyBDSUUgSWRlbnRpZmllciBU YWcKLSsJLmJ5dGUJMHgxCSMgQ0lFIFZlcnNpb24KLSsJLmFzY2lpICJcMCIJIyBDSUUgQXVnbWVu dGF0aW9uCi0rCS51bGViMTI4IDB4MQkjIENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IKLSsJLnNs ZWIxMjggLTQJIyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCi0rCS5ieXRlCTB4OAkjIENJRSBS QSBDb2x1bW4KLSsJLmJ5dGUJMHhjCSMgRFdfQ0ZBX2RlZl9jZmEKLSsJLnVsZWIxMjggMHg0Ci0r CS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDg4CSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4OAot KwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDQKLSsuTEVDSUUwOgotKy5MU0ZERTA6Ci0rCS5sb25n CS5MRUZERTAtLkxBU0ZERTAJIyBGREUgTGVuZ3RoCi0rLkxBU0ZERTA6Ci0rCS5sb25nCS5MZnJh bWUwCSMgRkRFIENJRSBvZmZzZXQKLSsJLmxvbmcJLkxGQjAJIyBGREUgaW5pdGlhbCBsb2NhdGlv bgotKwkubG9uZwkuTEZFMC0uTEZCMAkjIEZERSBhZGRyZXNzIHJhbmdlCi0rCS5ieXRlCTB4NAkj IERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkwLS5MRkIwCi0rCS5ieXRlCTB4ZQkj IERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkjIERX X0NGQV9vZmZzZXQsIGNvbHVtbiAweDUKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkjIERX X0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQJIyBE V19DRkFfZGVmX2NmYV9yZWdpc3RlcgotKwkudWxlYjEyOCAweDUKLSsJLmJ5dGUJMHg0CSMgRFdf Q0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTItLkxDRkkxCi0rCS5ieXRlCTB4YzUJIyBE V19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NQotKwkuYnl0ZQkweGMJIyBEV19DRkFfZGVmX2NmYQot KwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMHg0Ci0rCS5hbGlnbiA0Ci0rLkxFRkRFMDoKLSsu TFNGREUyOgotKwkubG9uZwkuTEVGREUyLS5MQVNGREUyCSMgRkRFIExlbmd0aAotKy5MQVNGREUy OgotKwkubG9uZwkuTGZyYW1lMAkjIEZERSBDSUUgb2Zmc2V0Ci0rCS5sb25nCS5MRkIxCSMgRkRF IGluaXRpYWwgbG9jYXRpb24KLSsJLmxvbmcJLkxGRTEtLkxGQjEJIyBGREUgYWRkcmVzcyByYW5n ZQotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMy0uTEZC MQotKwkuYnl0ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg4Ci0r CS5ieXRlCTB4ODUJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMHg1Ci0rCS51bGViMTI4IDB4Mgot KwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJNC0uTENGSTMK LSsJLmJ5dGUJMHhkCSMgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg1Ci0r CS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkk2LS5MQ0ZJNAot KwkuYnl0ZQkweDg2CSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4NgotKwkudWxlYjEyOCAweDMK LSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTctLkxDRkk2 Ci0rCS5ieXRlCTB4ODMJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMHgzCi0rCS51bGViMTI4IDB4 NAotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJOC0uTENG STcKLSsJLmJ5dGUJMHhkCSMgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg0 Ci0rCS5ieXRlCTB4YzYJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NgotKwkuYnl0ZQkweGMz CSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFu Y2VfbG9jNAotKwkubG9uZwkuTENGSTktLkxDRkk4Ci0rCS5ieXRlCTB4YzUJIyBEV19DRkFfcmVz dG9yZSwgY29sdW1uIDB4NQotKwkuYnl0ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJ LnVsZWIxMjggMHg0Ci0rCS5hbGlnbiA0Ci0rLkxFRkRFMjoKLSsuTFNGREU0OgotKwkubG9uZwku TEVGREU0LS5MQVNGREU0CSMgRkRFIExlbmd0aAotKy5MQVNGREU0OgotKwkubG9uZwkuTGZyYW1l MAkjIEZERSBDSUUgb2Zmc2V0Ci0rCS5sb25nCS5MRkIyCSMgRkRFIGluaXRpYWwgbG9jYXRpb24K LSsJLmxvbmcJLkxGRTItLkxGQjIJIyBGREUgYWRkcmVzcyByYW5nZQotKwkuYnl0ZQkweDQJIyBE V19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMTAtLkxGQjIKLSsJLmJ5dGUJMHhlCSMg RFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDg1CSMgRFdf Q0ZBX29mZnNldCwgY29sdW1uIDB4NQotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0CSMgRFdf Q0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTExLS5MQ0ZJMTAKLSsJLmJ5dGUJMHhkCSMg RFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4NAkjIERX X0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkxMy0uTENGSTExCi0rCS5ieXRlCTB4ODYJ IyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMHg2Ci0rCS51bGViMTI4IDB4MwotKwkuYnl0ZQkweDQJ IyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMTQtLkxDRkkxMwotKwkuYnl0ZQkw eDgzCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4MwotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJ MHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTE1LS5MQ0ZJMTQKLSsJLmJ5 dGUJMHhkCSMgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRl CTB4YzYJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NgotKwkuYnl0ZQkweGMzCSMgRFdfQ0ZB X3Jlc3RvcmUsIGNvbHVtbiAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAot KwkubG9uZwkuTENGSTE2LS5MQ0ZJMTUKLSsJLmJ5dGUJMHhjNQkjIERXX0NGQV9yZXN0b3JlLCBj b2x1bW4gMHg1Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwkudWxlYjEy OCAweDQKLSsJLmFsaWduIDQKLSsuTEVGREU0OgotKy5MU0ZERTY6Ci0rCS5sb25nCS5MRUZERTYt LkxBU0ZERTYJIyBGREUgTGVuZ3RoCi0rLkxBU0ZERTY6Ci0rCS5sb25nCS5MZnJhbWUwCSMgRkRF IENJRSBvZmZzZXQKLSsJLmxvbmcJLkxGQjMJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotKwkubG9u ZwkuTEZFMy0uTEZCMwkjIEZERSBhZGRyZXNzIHJhbmdlCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9h ZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkxNy0uTEZCMwotKwkuYnl0ZQkweGUJIyBEV19DRkFf ZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4ODUJIyBEV19DRkFfb2Zm c2V0LCBjb2x1bW4gMHg1Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2 YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMTgtLkxDRkkxNwotKwkuYnl0ZQkweGQJIyBEV19DRkFf ZGVmX2NmYV9yZWdpc3RlcgotKwkudWxlYjEyOCAweDUKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2Fk dmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTIwLS5MQ0ZJMTgKLSsJLmJ5dGUJMHg4NgkjIERXX0NG QV9vZmZzZXQsIGNvbHVtbiAweDYKLSsJLnVsZWIxMjggMHgzCi0rCS5ieXRlCTB4NAkjIERXX0NG QV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkyMS0uTENGSTIwCi0rCS5ieXRlCTB4ODMJIyBE V19DRkFfb2Zmc2V0LCBjb2x1bW4gMHgzCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDQJIyBE V19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMjItLkxDRkkyMQotKwkuYnl0ZQkweGQJ IyBEV19DRkFfZGVmX2NmYV9yZWdpc3RlcgotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHhjNgkj IERXX0NGQV9yZXN0b3JlLCBjb2x1bW4gMHg2Ci0rCS5ieXRlCTB4YzMJIyBEV19DRkFfcmVzdG9y ZSwgY29sdW1uIDB4MwotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25n CS5MQ0ZJMjMtLkxDRkkyMgotKwkuYnl0ZQkweGM1CSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAw eDUKLSsJLmJ5dGUJMHhlCSMgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0Ci0rCS51bGViMTI4IDB4NAot KwkuYWxpZ24gNAotKy5MRUZERTY6Ci0rLkxTRkRFODoKLSsJLmxvbmcJLkxFRkRFOC0uTEFTRkRF OAkjIEZERSBMZW5ndGgKLSsuTEFTRkRFODoKLSsJLmxvbmcJLkxmcmFtZTAJIyBGREUgQ0lFIG9m ZnNldAotKwkubG9uZwkuTEZCNAkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0rCS5sb25nCS5MRkU0 LS5MRkI0CSMgRkRFIGFkZHJlc3MgcmFuZ2UKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2Vf bG9jNAotKwkubG9uZwkuTENGSTI0LS5MRkI0Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2Zh X29mZnNldAotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkjIERXX0NGQV9vZmZzZXQsIGNv bHVtbiAweDUKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xv YzQKLSsJLmxvbmcJLkxDRkkyNS0uTENGSTI0Ci0rCS5ieXRlCTB4ZAkjIERXX0NGQV9kZWZfY2Zh X3JlZ2lzdGVyCi0rCS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9s b2M0Ci0rCS5sb25nCS5MQ0ZJMjctLkxDRkkyNQotKwkuYnl0ZQkweDg2CSMgRFdfQ0ZBX29mZnNl dCwgY29sdW1uIDB4NgotKwkudWxlYjEyOCAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFu Y2VfbG9jNAotKwkubG9uZwkuTENGSTI4LS5MQ0ZJMjcKLSsJLmJ5dGUJMHg4MwkjIERXX0NGQV9v ZmZzZXQsIGNvbHVtbiAweDMKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4NAkjIERXX0NGQV9h ZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkyOS0uTENGSTI4Ci0rCS5ieXRlCTB4ZAkjIERXX0NG QV9kZWZfY2ZhX3JlZ2lzdGVyCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweGM2CSMgRFdfQ0ZB X3Jlc3RvcmUsIGNvbHVtbiAweDYKLSsJLmJ5dGUJMHhjMwkjIERXX0NGQV9yZXN0b3JlLCBjb2x1 bW4gMHgzCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkz MC0uTENGSTI5Ci0rCS5ieXRlCTB4YzUJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NQotKwku Ynl0ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg0Ci0rCS5hbGln biA0Ci0rLkxFRkRFODoKLSsuTFNGREUxMDoKLSsJLmxvbmcJLkxFRkRFMTAtLkxBU0ZERTEwCSMg RkRFIExlbmd0aAotKy5MQVNGREUxMDoKLSsJLmxvbmcJLkxmcmFtZTAJIyBGREUgQ0lFIG9mZnNl dAotKwkubG9uZwkuTEZCNQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0rCS5sb25nCS5MRkU1LS5M RkI1CSMgRkRFIGFkZHJlc3MgcmFuZ2UKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9j NAotKwkubG9uZwkuTENGSTMxLS5MRkI1Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2ZhX29m ZnNldAotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkjIERXX0NGQV9vZmZzZXQsIGNvbHVt biAweDUKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQK LSsJLmxvbmcJLkxDRkkzMi0uTENGSTMxCi0rCS5ieXRlCTB4ZAkjIERXX0NGQV9kZWZfY2ZhX3Jl Z2lzdGVyCi0rCS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0 Ci0rCS5sb25nCS5MQ0ZJMzQtLkxDRkkzMgotKwkuYnl0ZQkweDg2CSMgRFdfQ0ZBX29mZnNldCwg Y29sdW1uIDB4NgotKwkudWxlYjEyOCAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2Vf bG9jNAotKwkubG9uZwkuTENGSTM1LS5MQ0ZJMzQKLSsJLmJ5dGUJMHg4MwkjIERXX0NGQV9vZmZz ZXQsIGNvbHVtbiAweDMKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZh bmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkzNi0uTENGSTM1Ci0rCS5ieXRlCTB4ZAkjIERXX0NGQV9k ZWZfY2ZhX3JlZ2lzdGVyCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweGM2CSMgRFdfQ0ZBX3Jl c3RvcmUsIGNvbHVtbiAweDYKLSsJLmJ5dGUJMHhjMwkjIERXX0NGQV9yZXN0b3JlLCBjb2x1bW4g MHgzCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkzNy0u TENGSTM2Ci0rCS5ieXRlCTB4YzUJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NQotKwkuYnl0 ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg0Ci0rCS5hbGlnbiA0 Ci0rLkxFRkRFMTA6Ci0rLkxTRkRFMTI6Ci0rCS5sb25nCS5MRUZERTEyLS5MQVNGREUxMgkjIEZE RSBMZW5ndGgKLSsuTEFTRkRFMTI6Ci0rCS5sb25nCS5MZnJhbWUwCSMgRkRFIENJRSBvZmZzZXQK LSsJLmxvbmcJLkxGQjYJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotKwkubG9uZwkuTEZFNi0uTEZC NgkjIEZERSBhZGRyZXNzIHJhbmdlCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQK LSsJLmxvbmcJLkxDRkkzOC0uTEZCNgotKwkuYnl0ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZz ZXQKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4ODUJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4g MHg1Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0r CS5sb25nCS5MQ0ZJMzktLkxDRkkzOAotKwkuYnl0ZQkweGQJIyBEV19DRkFfZGVmX2NmYV9yZWdp c3RlcgotKwkudWxlYjEyOCAweDUKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAot KwkubG9uZwkuTENGSTQwLS5MQ0ZJMzkKLSsJLmJ5dGUJMHg4MwkjIERXX0NGQV9vZmZzZXQsIGNv bHVtbiAweDMKLSsJLnVsZWIxMjggMHgzCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xv YzQKLSsJLmxvbmcJLkxDRkk0Mi0uTENGSTQwCi0rCS5ieXRlCTB4YzMJIyBEV19DRkFfcmVzdG9y ZSwgY29sdW1uIDB4MwotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25n CS5MQ0ZJNDMtLkxDRkk0MgotKwkuYnl0ZQkweGM1CSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAw eDUKLSsJLmJ5dGUJMHhjCSMgRFdfQ0ZBX2RlZl9jZmEKLSsJLnVsZWIxMjggMHg0Ci0rCS51bGVi MTI4IDB4NAotKwkuYWxpZ24gNAotKy5MRUZERTEyOgotKyNOT19BUFAKLSsJLnRleHQKLSsuTGV0 ZXh0MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6 Ci0rLkxMU1QwOgotKwkubG9uZwkuTEZCMC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBh ZGRyZXNzICgqLkxMU1QwKQotKwkubG9uZwkuTENGSTAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg ZW5kIGFkZHJlc3MgKCouTExTVDApCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9u IHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDQKLSsJLmxvbmcJ LkxDRkkwLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDApCi0r CS5sb25nCS5MQ0ZJMS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNU MCkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0 CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggOAotKwkubG9uZwkuTENGSTEtLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMCkKLSsJLmxvbmcJLkxDRkkyLS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QwKQotKwkudmFsdWUJMHgyCSMg TG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBEV19PUF9icmVnNQotKwku c2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMi0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBh ZGRyZXNzICgqLkxMU1QwKQotKwkubG9uZwkuTEZFMC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBl bmQgYWRkcmVzcyAoKi5MTFNUMCkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24g c2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkw CSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QwKQotKwkubG9uZwkwCSMg TG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMCkKLSsuTExTVDE6Ci0rCS5sb25n CS5MRkIxLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEpCi0r CS5sb25nCS5MQ0ZJMy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNU MSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0 CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkuTENGSTMtLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMSkKLSsJLmxvbmcJLkxDRkk0LS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxKQotKwkudmFsdWUJMHgyCSMg TG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwku c2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBh ZGRyZXNzICgqLkxMU1QxKQotKwkubG9uZwkuTENGSTgtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg ZW5kIGFkZHJlc3MgKCouTExTVDEpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9u IHNpemUKLSsJLmJ5dGUJMHg3NQkjIERXX09QX2JyZWc1Ci0rCS5zbGViMTI4IDgKLSsJLmxvbmcJ LkxDRkk4LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEpCi0r CS5sb25nCS5MQ0ZJOS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNU MSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0 CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggOAotKwkubG9uZwkuTENGSTktLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMSkKLSsJLmxvbmcJLkxGRTEtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEpCi0rCS52YWx1ZQkweDIJIyBM b2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5z bGViMTI4IDQKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBiZWdpbiAoKi5M TFNUMSkKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDEp Ci0rLkxMU1QyOgotKwkubG9uZwkuTFZMMS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBh ZGRyZXNzICgqLkxMU1QyKQotKwkubG9uZwkuTFZMMi0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBl bmQgYWRkcmVzcyAoKi5MTFNUMikKLSsJLnZhbHVlCTB4NgkjIExvY2F0aW9uIGV4cHJlc3Npb24g c2l6ZQotKwkuYnl0ZQkweDM0CSMgRFdfT1BfbGl0NAotKwkuYnl0ZQkweDlmCSMgRFdfT1Bfc3Rh Y2tfdmFsdWUKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwku Ynl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5MVkwyLS5M dGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDIpCi0rCS5sb25nCS5M VkwzLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QyKQotKwkudmFs dWUJMHhjCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4MzQJIyBEV19PUF9s aXQ0Ci0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkuYnl0ZQkweDkzCSMgRFdf T1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwku c2xlYjEyOCAwCi0rCS5ieXRlCTB4NgkjIERXX09QX2RlcmVmCi0rCS5ieXRlCTB4MjMJIyBEV19P UF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAweDYKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNr X3ZhbHVlCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxv bmcJLkxWTDMtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMikK LSsJLmxvbmcJLkxWTDQtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExT VDIpCi0rCS52YWx1ZQkweGIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1 MwkjIERXX09QX3JlZzMKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4 NAotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjggMAotKwkuYnl0ZQkweDYJ IyBEV19PUF9kZXJlZgotKwkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLSsJLnVsZWIx MjggMHg2Ci0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkuYnl0ZQkweDkzCSMg RFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5MVkw0LS5MdGV4dDAJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDIpCi0rCS5sb25nCS5MVkw1LS5MdGV4dDAJ IyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QyKQotKwkudmFsdWUJMHg2CSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBEV19PUF9yZWczCi0rCS5ieXRl CTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg1NgkjIERXX09Q X3JlZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkubG9u ZwkuTFZMNS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QyKQot KwkubG9uZwkuTFZMNi0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNU MikKLSsJLnZhbHVlCTB4NQkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDkz CSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4NTYJIyBEV19PUF9yZWc2 Ci0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJMAkj IExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBiZWdpbiAoKi5MTFNUMikKLSsJLmxvbmcJMAkjIExv Y2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDIpCi0rLkxMU1QzOgotKwkubG9uZwku TEZCMi0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QzKQotKwku bG9uZwkuTENGSTEwLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Qz KQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJ IyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA0Ci0rCS5sb25nCS5MQ0ZJMTAtLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMykKLSsJLmxvbmcJLkxDRkkxMS0uTHRl eHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMykKLSsJLnZhbHVlCTB4Mgkj IExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJ LnNsZWIxMjggOAotKwkubG9uZwkuTENGSTExLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2lu IGFkZHJlc3MgKCouTExTVDMpCi0rCS5sb25nCS5MQ0ZJMTUtLkx0ZXh0MAkjIExvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MgKCouTExTVDMpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNz aW9uIHNpemUKLSsJLmJ5dGUJMHg3NQkjIERXX09QX2JyZWc1Ci0rCS5zbGViMTI4IDgKLSsJLmxv bmcJLkxDRkkxNS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Qz KQotKwkubG9uZwkuTENGSTE2LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgq LkxMU1QzKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRl CTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMTYtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMykKLSsJLmxvbmcJLkxGRTIt Lkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDMpCi0rCS52YWx1ZQkw eDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0 Ci0rCS5zbGViMTI4IDQKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBiZWdp biAoKi5MTFNUMykKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCou TExTVDMpCi0rLkxMU1Q0OgotKwkubG9uZwkuTFZMNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBi ZWdpbiBhZGRyZXNzICgqLkxMU1Q0KQotKwkubG9uZwkuTFZMOC0uTHRleHQwCSMgTG9jYXRpb24g bGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNCkKLSsJLnZhbHVlCTB4NgkjIExvY2F0aW9uIGV4cHJl c3Npb24gc2l6ZQotKwkuYnl0ZQkweDM0CSMgRFdfT1BfbGl0NAotKwkuYnl0ZQkweDlmCSMgRFdf T1Bfc3RhY2tfdmFsdWUKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4 NAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5M Vkw4LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDQpCi0rCS5s b25nCS5MVkw5LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q0KQot KwkudmFsdWUJMHhjCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4MzQJIyBE V19PUF9saXQ0Ci0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkuYnl0ZQkweDkz CSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJl ZwotKwkuc2xlYjEyOCAwCi0rCS5ieXRlCTB4NgkjIERXX09QX2RlcmVmCi0rCS5ieXRlCTB4MjMJ IyBEV19PUF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAweDYKLSsJLmJ5dGUJMHg5ZgkjIERXX09Q X3N0YWNrX3ZhbHVlCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQK LSsJLmxvbmcJLkxWTDktLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUNCkKLSsJLmxvbmcJLkxWTDEwLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNz ICgqLkxMU1Q0KQotKwkudmFsdWUJMHhiCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5i eXRlCTB4NTMJIyBEV19PUF9yZWczCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxl YjEyOCAweDQKLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5 dGUJMHg2CSMgRFdfT1BfZGVyZWYKLSsJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0r CS51bGViMTI4IDB4NgotKwkuYnl0ZQkweDlmCSMgRFdfT1Bfc3RhY2tfdmFsdWUKLSsJLmJ5dGUJ MHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkubG9uZwkuTFZMMTAtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNCkKLSsJLmxvbmcJLkxWTDEx LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q0KQotKwkudmFsdWUJ MHg2CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBEV19PUF9yZWcz Ci0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg1 NgkjIERXX09QX3JlZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4 NAotKwkubG9uZwkuTFZMMTEtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAo Ki5MTFNUNCkKLSsJLmxvbmcJLkxWTDEyLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRy ZXNzICgqLkxMU1Q0KQotKwkudmFsdWUJMHg1CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0r CS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg1Ngkj IERXX09QX3JlZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAot KwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1Q0KQotKwku bG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUNCkKLSsuTExTVDU6 Ci0rCS5sb25nCS5MRkIzLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCou TExTVDUpCi0rCS5sb25nCS5MQ0ZJMTctLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJl c3MgKCouTExTVDUpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJ LmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDQKLSsJLmxvbmcJLkxDRkkxNy0u THRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q1KQotKwkubG9uZwku TENGSTE4LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q1KQotKwku dmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19P UF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMTgtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNSkKLSsJLmxvbmcJLkxDRkkyMi0uTHRleHQwCSMg TG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0 aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc1CSMgRFdfT1BfYnJlZzUKLSsJLnNsZWIx MjggOAotKwkubG9uZwkuTENGSTIyLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJl c3MgKCouTExTVDUpCi0rCS5sb25nCS5MQ0ZJMjMtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5k IGFkZHJlc3MgKCouTExTVDUpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNp emUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDgKLSsJLmxvbmcJLkxD RkkyMy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q1KQotKwku bG9uZwkuTEZFMy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNSkK LSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMg RFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJt aW5hdG9yIGJlZ2luICgqLkxMU1Q1KQotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5h dG9yIGVuZCAoKi5MTFNUNSkKLSsuTExTVDY6Ci0rCS5sb25nCS5MVkwxMy0uTHRleHQwCSMgTG9j YXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q2KQotKwkubG9uZwkuTFZMMTQtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0rCS52YWx1ZQkweGEJIyBM b2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQot KwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDM0CSMgRFdfT1BfbGl0NAot KwkuYnl0ZQkweDlmCSMgRFdfT1Bfc3RhY2tfdmFsdWUKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2Jp dF9waWVjZQotKwkudWxlYjEyOCAweGMKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdf T1BfcGllY2UKLSsJLnVsZWIxMjggMHgyCi0rCS5sb25nCS5MVkwxNC0uTHRleHQwCSMgTG9jYXRp b24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q2KQotKwkubG9uZwkuTFZMMTUtLkx0ZXh0MAkj IExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0rCS52YWx1ZQkweDE1CSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJ LnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHgzNAkjIERXX09QX2xpdDQKLSsJ LmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRf cGllY2UKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHg5MQkjIERXX09Q X2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5dGUJMHg5NAkjIERXX09QX2RlcmVmX3NpemUKLSsJ LmJ5dGUJMHgyCi0rCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAw eDYKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rCS5ieXRlCTB4OWQJIyBEV19P UF9iaXRfcGllY2UKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHg5ZAkj IERXX09QX2JpdF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMAotKwkubG9uZwku TFZMMTUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNikKLSsJ LmxvbmcJLkxWTDE2LTEtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExT VDYpCi0rCS52YWx1ZQkweDE0CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4 OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDAKLSsJLmJ5 dGUJMHg1MgkjIERXX09QX3JlZzIKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwku dWxlYjEyOCAweGMKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJ LnNsZWIxMjggMAotKwkuYnl0ZQkweDk0CSMgRFdfT1BfZGVyZWZfc2l6ZQotKwkuYnl0ZQkweDIK LSsJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4NwotKwkuYnl0 ZQkweDlmCSMgRFdfT1Bfc3RhY2tfdmFsdWUKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVj ZQotKwkudWxlYjEyOCAweGMKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDlkCSMgRFdfT1BfYml0 X3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkudWxlYjEyOCAwCi0rCS5sb25nCS5MVkwxNi0xLS5M dGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDYpCi0rCS5sb25nCS5M VkwxNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNikKLSsJLnZh bHVlCTB4MTQJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg5ZAkjIERXX09Q X2JpdF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDU2CSMg RFdfT1BfcmVnNgotKwkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0rCS51bGViMTI4IDB4 YwotKwkudWxlYjEyOCAwCi0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAw Ci0rCS5ieXRlCTB4OTQJIyBEV19PUF9kZXJlZl9zaXplCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkw eDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLSsJLnVsZWIxMjggMHg3Ci0rCS5ieXRlCTB4OWYJIyBE V19PUF9zdGFja192YWx1ZQotKwkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0rCS51bGVi MTI4IDB4YwotKwkudWxlYjEyOCAwCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJ LnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDAKLSsJLmxvbmcJLkxWTDE3LS5MdGV4dDAJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDYpCi0rCS5sb25nCS5MRkUzLS5MdGV4dDAJ IyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q2KQotKwkudmFsdWUJMHhmCSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxl YjEyOCAweDIKLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5 dGUJMHg5NAkjIERXX09QX2RlcmVmX3NpemUKLSsJLmJ5dGUJMHgyCi0rCS5ieXRlCTB4MjMJIyBE V19PUF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAweDcKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0 YWNrX3ZhbHVlCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJLnVsZWIxMjggMHhj Ci0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwkudWxlYjEy OCAweDQKLSsJLnVsZWIxMjggMAotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9y IGJlZ2luICgqLkxMU1Q2KQotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVu ZCAoKi5MTFNUNikKLSsuTExTVDc6Ci0rCS5sb25nCS5MRkI0LS5MdGV4dDAJIyBMb2NhdGlvbiBs aXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDcpCi0rCS5sb25nCS5MQ0ZJMjQtLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDcpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlv biBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4 IDQKLSsJLmxvbmcJLkxDRkkyNC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNz ICgqLkxMU1Q3KQotKwkubG9uZwkuTENGSTI1LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBh ZGRyZXNzICgqLkxMU1Q3KQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXpl Ci0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJ MjUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNykKLSsJLmxv bmcJLkxDRkkyOS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNykK LSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc1CSMg RFdfT1BfYnJlZzUKLSsJLnNsZWIxMjggOAotKwkubG9uZwkuTENGSTI5LS5MdGV4dDAJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDcpCi0rCS5sb25nCS5MQ0ZJMzAtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDcpCi0rCS52YWx1ZQkweDIJIyBM b2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5z bGViMTI4IDgKLSsJLmxvbmcJLkxDRkkzMC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBh ZGRyZXNzICgqLkxMU1Q3KQotKwkubG9uZwkuTEZFNC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBl bmQgYWRkcmVzcyAoKi5MTFNUNykKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24g c2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkw CSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1Q3KQotKwkubG9uZwkwCSMg TG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUNykKLSsuTExTVDg6Ci0rCS5sb25n CS5MVkwxOS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q4KQot KwkubG9uZwkuTFZMMjAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExT VDgpCi0rCS52YWx1ZQkweDgJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg5 MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNl Ci0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjgg MAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5M VkwyMC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q4KQotKwku bG9uZwkuTFZMMjEtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDgp Ci0rCS52YWx1ZQkweDYJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1Mwkj IERXX09QX3JlZzMKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAot KwkuYnl0ZQkweDU2CSMgRFdfT1BfcmVnNgotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJ LnVsZWIxMjggMHg0Ci0rCS5sb25nCS5MVkwyMS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdp biBhZGRyZXNzICgqLkxMU1Q4KQotKwkubG9uZwkuTFZMMjItLkx0ZXh0MAkjIExvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MgKCouTExTVDgpCi0rCS52YWx1ZQkweDUJIyBMb2NhdGlvbiBleHByZXNz aW9uIHNpemUKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwku Ynl0ZQkweDU2CSMgRFdfT1BfcmVnNgotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVs ZWIxMjggMHg0Ci0rCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCou TExTVDgpCi0rCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1Q4 KQotKy5MTFNUOToKLSsJLmxvbmcJLkxGQjUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4g YWRkcmVzcyAoKi5MTFNUOSkKLSsJLmxvbmcJLkxDRkkzMS0uTHRleHQwCSMgTG9jYXRpb24gbGlz dCBlbmQgYWRkcmVzcyAoKi5MTFNUOSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Np b24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9u ZwkuTENGSTMxLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDkp Ci0rCS5sb25nCS5MQ0ZJMzItLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCou TExTVDkpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJ MHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDgKLSsJLmxvbmcJLkxDRkkzMi0uTHRleHQw CSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q5KQotKwkubG9uZwkuTENGSTM2 LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q5KQotKwkudmFsdWUJ MHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBEV19PUF9icmVn NQotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMzYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg YmVnaW4gYWRkcmVzcyAoKi5MTFNUOSkKLSsJLmxvbmcJLkxDRkkzNy0uTHRleHQwCSMgTG9jYXRp b24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUOSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4 cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggOAot KwkubG9uZwkuTENGSTM3LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCou TExTVDkpCi0rCS5sb25nCS5MRkU1LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNz ICgqLkxMU1Q5KQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5i eXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA0Ci0rCS5sb25nCTAJIyBMb2NhdGlv biBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCouTExTVDkpCi0rCS5sb25nCTAJIyBMb2NhdGlvbiBs aXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1Q5KQotKy5MTFNUMTA6Ci0rCS5sb25nCS5MVkwyNC0u THRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QxMCkKLSsJLmxvbmcJ LkxWTDI1LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMCkKLSsJ LnZhbHVlCTB4OAkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDkxCSMgRFdf T1BfZmJyZWcKLSsJLnNsZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVs ZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAwCi0rCS5i eXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxWTDI1LS5M dGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEwKQotKwkubG9uZwku TFZMMjYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEwKQotKwku dmFsdWUJMHg2CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBEV19P UF9yZWczCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5 dGUJMHg1NgkjIERXX09QX3JlZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGVi MTI4IDB4NAotKwkubG9uZwkuTFZMMjYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRk cmVzcyAoKi5MTFNUMTApCi0rCS5sb25nCS5MVkwyNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBl bmQgYWRkcmVzcyAoKi5MTFNUMTApCi0rCS52YWx1ZQkweDUJIyBMb2NhdGlvbiBleHByZXNzaW9u IHNpemUKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0 ZQkweDU2CSMgRFdfT1BfcmVnNgotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIx MjggMHg0Ci0rCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCouTExT VDEwKQotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMTAp Ci0rLkxMU1QxMToKLSsJLmxvbmcJLkxGQjYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4g YWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5sb25nCS5MQ0ZJMzgtLkx0ZXh0MAkjIExvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MgKCouTExTVDExKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVz c2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA0Ci0rCS5s b25nCS5MQ0ZJMzgtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNU MTEpCi0rCS5sb25nCS5MQ0ZJMzktLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3Mg KCouTExTVDExKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5i eXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMzktLkx0 ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5sb25nCS5M Q0ZJNDMtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDExKQotKwku dmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBEV19P UF9icmVnNQotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNDMtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5sb25nCS5MRkU2LS5MdGV4dDAJIyBM b2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0 aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIx MjggNAotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1Qx MSkKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDExKQot Ky5MTFNUMTI6Ci0rCS5sb25nCS5MVkwyOC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBh ZGRyZXNzICgqLkxMU1QxMikKLSsJLmxvbmcJLkxWTDI5LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0 IGVuZCBhZGRyZXNzICgqLkxMU1QxMikKLSsJLnZhbHVlCTB4MQkjIExvY2F0aW9uIGV4cHJlc3Np b24gc2l6ZQotKwkuYnl0ZQkweDUzCSMgRFdfT1BfcmVnMwotKwkubG9uZwkwCSMgTG9jYXRpb24g bGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QxMikKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxp c3QgdGVybWluYXRvciBlbmQgKCouTExTVDEyKQotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotKwku bG9uZwkweDFlMwkjIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLnZhbHVlCTB4 MgkjIERXQVJGIHZlcnNpb24gbnVtYmVyCi0rCS5sb25nCS5MZGVidWdfYWJicmV2MAkjIE9mZnNl dCBJbnRvIEFiYnJldi4gU2VjdGlvbgotKwkuYnl0ZQkweDQJIyBQb2ludGVyIFNpemUgKGluIGJ5 dGVzKQotKwkudWxlYjEyOCAweDEJIyAoRElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpCi0r CS5sb25nCS5MQVNGMQkjIERXX0FUX3Byb2R1Y2VyOiAiR05VIEMgNC42LjAgMjAxMDA1MDYgKGV4 cGVyaW1lbnRhbCkgW3RydW5rIHJldmlzaW9uIDE1OTExN10iCi0rCS5ieXRlCTB4MQkjIERXX0FU X2xhbmd1YWdlCi0rCS5sb25nCS5MQVNGMgkjIERXX0FUX25hbWU6ICJwaWVjZXMuYyIKLSsJLmxv bmcJLkxBU0YzCSMgRFdfQVRfY29tcF9kaXI6ICIvaG9tZS90cm9tZXkvZ251L2FyY2hlci9hcmNo ZXIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyIgotKwkubG9uZwkuTHRleHQwCSMgRFdfQVRfbG93 X3BjCi0rCS5sb25nCS5MZXRleHQwCSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTGRlYnVnX2xp bmUwCSMgRFdfQVRfc3RtdF9saXN0Ci0rCS51bGViMTI4IDB4MgkjIChESUUgKDB4MjUpIERXX1RB R19zdHJ1Y3R1cmVfdHlwZSkKLSsJLmFzY2lpICJBXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkw eDgJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVj ZXMuYykKLSsJLmJ5dGUJMHgxNwkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDQ4CSMgRFdf QVRfc2libGluZwotKwkudWxlYjEyOCAweDMJIyAoRElFICgweDJmKSBEV19UQUdfbWVtYmVyKQot KwkuYXNjaWkgImlcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmls ZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4MTcJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0 OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24K LSsJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDAKLSsJLnVsZWIx MjggMHgzCSMgKERJRSAoMHgzYikgRFdfVEFHX21lbWJlcikKLSsJLmFzY2lpICJqXDAiCSMgRFdf QVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0 ZQkweDE3CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5i eXRlCTB4MgkjIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uCi0rCS5ieXRlCTB4MjMJIyBEV19P UF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJl biBvZiBESUUgMHgyNQotKwkudWxlYjEyOCAweDQJIyAoRElFICgweDQ4KSBEV19UQUdfYmFzZV90 eXBlKQotKwkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHg1CSMgRFdfQVRf ZW5jb2RpbmcKLSsJLmFzY2lpICJpbnRcMCIJIyBEV19BVF9uYW1lCi0rCS51bGViMTI4IDB4Mgkj IChESUUgKDB4NGYpIERXX1RBR19zdHJ1Y3R1cmVfdHlwZSkKLSsJLmFzY2lpICJCXDAiCSMgRFdf QVRfbmFtZQotKwkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHgxCSMgRFdf QVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgxOAkjIERXX0FUX2RlY2xfbGluZQot KwkubG9uZwkweDc4CSMgRFdfQVRfc2libGluZwotKwkudWxlYjEyOCAweDUJIyAoRElFICgweDU5 KSBEV19UQUdfbWVtYmVyKQotKwkuYXNjaWkgImlcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4 MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4MTgJIyBEV19BVF9kZWNs X2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHg0CSMgRFdfQVRfYnl0 ZV9zaXplCi0rCS5ieXRlCTB4YwkjIERXX0FUX2JpdF9zaXplCi0rCS5ieXRlCTB4MTAJIyBEV19B VF9iaXRfb2Zmc2V0Ci0rCS5ieXRlCTB4MgkjIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uCi0r CS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAwCi0rCS51bGViMTI4 IDB4NQkjIChESUUgKDB4NjgpIERXX1RBR19tZW1iZXIpCi0rCS5hc2NpaSAialwwIgkjIERXX0FU X25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJ MHgxOAkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkuYnl0 ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHhjCSMgRFdfQVRfYml0X3NpemUKLSsJ LmJ5dGUJMHg0CSMgRFdfQVRfYml0X29mZnNldAotKwkuYnl0ZQkweDIJIyBEV19BVF9kYXRhX21l bWJlcl9sb2NhdGlvbgotKwkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLSsJLnVsZWIx MjggMAotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDRmCi0rCS51bGViMTI4 IDB4NgkjIChESUUgKDB4NzgpIERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkweDEJIyBEV19B VF9leHRlcm5hbAotKwkuYXNjaWkgImJhclwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMg RFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgxYgkjIERXX0FUX2RlY2xfbGlu ZQotKwkuYnl0ZQkweDEJIyBEV19BVF9wcm90b3R5cGVkCi0rCS5sb25nCS5MRkIwCSMgRFdfQVRf bG93X3BjCi0rCS5sb25nCS5MRkUwCSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTExTVDAJIyBE V19BVF9mcmFtZV9iYXNlCi0rCS5sb25nCTB4OWUJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4 IDB4NwkjIChESUUgKDB4OTEpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgInhc MCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMp Ci0rCS5ieXRlCTB4MWIJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5 cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2Zi cmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg3 OAotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDllKSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5 dGUJMHgxCSMgRFdfQVRfZXh0ZXJuYWwKLSsJLmFzY2lpICJmMVwwIgkjIERXX0FUX25hbWUKLSsJ LmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgyMQkjIERX X0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDEJIyBEV19BVF9wcm90b3R5cGVkCi0rCS5sb25nCTB4 NDgJIyBEV19BVF90eXBlCi0rCS5sb25nCS5MRkIxCSMgRFdfQVRfbG93X3BjCi0rCS5sb25nCS5M RkUxCSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTExTVDEJIyBEV19BVF9mcmFtZV9iYXNlCi0r CS5sb25nCTB4ZDQJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4YmEp IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1lCi0r CS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4MjEJIyBE V19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMg RFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAK LSsJLnVsZWIxMjggMHg5CSMgKERJRSAoMHhjNikgRFdfVEFHX3ZhcmlhYmxlKQotKwkuYXNjaWkg ImFcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2Vz LmMpCi0rCS5ieXRlCTB4MjMJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHgyNQkjIERXX0FU X3R5cGUKLSsJLmxvbmcJLkxMU1QyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMAkjIGVuZCBv ZiBjaGlsZHJlbiBvZiBESUUgMHg5ZQotKwkudWxlYjEyOCAweDgJIyAoRElFICgweGQ0KSBEV19U QUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZXh0ZXJuYWwKLSsJLmFzY2lpICJm MlwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMu YykKLSsJLmJ5dGUJMHgyYwkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDEJIyBEV19BVF9w cm90b3R5cGVkCi0rCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5sb25nCS5MRkIyCSMgRFdf QVRfbG93X3BjCi0rCS5sb25nCS5MRkUyCSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTExTVDMJ IyBEV19BVF9mcmFtZV9iYXNlCi0rCS5sb25nCTB4MTBhCSMgRFdfQVRfc2libGluZwotKwkudWxl YjEyOCAweDcJIyAoRElFICgweGYwKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmFzY2lp ICJrXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNl cy5jKQotKwkuYnl0ZQkweDJjCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19B VF90eXBlCi0rCS5ieXRlCTB4MgkjIERXX0FUX2xvY2F0aW9uCi0rCS5ieXRlCTB4OTEJIyBEV19P UF9mYnJlZwotKwkuc2xlYjEyOCAwCi0rCS51bGViMTI4IDB4OQkjIChESUUgKDB4ZmMpIERXX1RB R192YXJpYWJsZSkKLSsJLmFzY2lpICJhXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBE V19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDJlCSMgRFdfQVRfZGVjbF9saW5l Ci0rCS5sb25nCTB4MTBhCSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTExTVDQJIyBEV19BVF9sb2Nh dGlvbgotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweGQ0Ci0rCS51bGViMTI4 IDB4YQkjIChESUUgKDB4MTBhKSBEV19UQUdfYXJyYXlfdHlwZSkKLSsJLmxvbmcJMHg0OAkjIERX X0FUX3R5cGUKLSsJLmxvbmcJMHgxMWEJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4Ygkj IChESUUgKDB4MTEzKSBEV19UQUdfc3VicmFuZ2VfdHlwZSkKLSsJLmxvbmcJMHgxMWEJIyBEV19B VF90eXBlCi0rCS5ieXRlCTB4MQkjIERXX0FUX3VwcGVyX2JvdW5kCi0rCS5ieXRlCTAJIyBlbmQg b2YgY2hpbGRyZW4gb2YgRElFIDB4MTBhCi0rCS51bGViMTI4IDB4YwkjIChESUUgKDB4MTFhKSBE V19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJ MHg3CSMgRFdfQVRfZW5jb2RpbmcKLSsJLnVsZWIxMjggMHg4CSMgKERJRSAoMHgxMWQpIERXX1RB R19zdWJwcm9ncmFtKQotKwkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAotKwkuYXNjaWkgImYz XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5j KQotKwkuYnl0ZQkweDM3CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4MQkjIERXX0FUX3By b3RvdHlwZWQKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmxvbmcJLkxGQjMJIyBEV19B VF9sb3dfcGMKLSsJLmxvbmcJLkxGRTMJIyBEV19BVF9oaWdoX3BjCi0rCS5sb25nCS5MTFNUNQkj IERXX0FUX2ZyYW1lX2Jhc2UKLSsJLmxvbmcJMHgxNTMJIyBEV19BVF9zaWJsaW5nCi0rCS51bGVi MTI4IDB4NwkjIChESUUgKDB4MTM5KSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmFzY2lp ICJrXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNl cy5jKQotKwkuYnl0ZQkweDM3CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19B VF90eXBlCi0rCS5ieXRlCTB4MgkjIERXX0FUX2xvY2F0aW9uCi0rCS5ieXRlCTB4OTEJIyBEV19P UF9mYnJlZwotKwkuc2xlYjEyOCAwCi0rCS51bGViMTI4IDB4OQkjIChESUUgKDB4MTQ1KSBEV19U QUdfdmFyaWFibGUpCi0rCS5hc2NpaSAiYVwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMg RFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgzOQkjIERXX0FUX2RlY2xfbGlu ZQotKwkubG9uZwkweDRmCSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTExTVDYJIyBEV19BVF9sb2Nh dGlvbgotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDExZAotKwkudWxlYjEy OCAweDgJIyAoRElFICgweDE1MykgRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5ieXRlCTB4MQkjIERX X0FUX2V4dGVybmFsCi0rCS5hc2NpaSAiZjRcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkj IERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NDIJIyBEV19BVF9kZWNsX2xp bmUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAotKwkubG9uZwkweDQ4CSMgRFdfQVRf dHlwZQotKwkubG9uZwkuTEZCNAkjIERXX0FUX2xvd19wYwotKwkubG9uZwkuTEZFNAkjIERXX0FU X2hpZ2hfcGMKLSsJLmxvbmcJLkxMU1Q3CSMgRFdfQVRfZnJhbWVfYmFzZQotKwkubG9uZwkweDE4 OQkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAoMHgxNmYpIERXX1RBR19m b3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4 MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NDIJIyBEV19BVF9kZWNs X2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfbG9j YXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLnVsZWIx MjggMHg5CSMgKERJRSAoMHgxN2IpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJhXDAiCSMg RFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwku Ynl0ZQkweDQ0CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4MTBhCSMgRFdfQVRfdHlwZQot KwkubG9uZwkuTExTVDgJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxk cmVuIG9mIERJRSAweDE1MwotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDE4OSkgRFdfVEFHX3N1 YnByb2dyYW0pCi0rCS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFsCi0rCS5hc2NpaSAiZjVcMCIJ IyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0r CS5ieXRlCTB4NGQJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90 eXBlZAotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTEZCNQkjIERXX0FUX2xv d19wYwotKwkubG9uZwkuTEZFNQkjIERXX0FUX2hpZ2hfcGMKLSsJLmxvbmcJLkxMU1Q5CSMgRFdf QVRfZnJhbWVfYmFzZQotKwkubG9uZwkweDFiZgkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjgg MHg3CSMgKERJRSAoMHgxYTUpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgImtc MCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMp Ci0rCS5ieXRlCTB4NGQJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5 cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2Zi cmVnCi0rCS5zbGViMTI4IDAKLSsJLnVsZWIxMjggMHg5CSMgKERJRSAoMHgxYjEpIERXX1RBR192 YXJpYWJsZSkKLSsJLmFzY2lpICJhXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19B VF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDRmCSMgRFdfQVRfZGVjbF9saW5lCi0r CS5sb25nCTB4MjUJIyBEV19BVF90eXBlCi0rCS5sb25nCS5MTFNUMTAJIyBEV19BVF9sb2NhdGlv bgotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDE4OQotKwkudWxlYjEyOCAw eGQJIyAoRElFICgweDFiZikgRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5ieXRlCTB4MQkjIERXX0FU X2V4dGVybmFsCi0rCS5sb25nCS5MQVNGMAkjIERXX0FUX25hbWU6ICJtYWluIgotKwkuYnl0ZQkw eDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDU4CSMgRFdfQVRfZGVj bF9saW5lCi0rCS5ieXRlCTB4MQkjIERXX0FUX3Byb3RvdHlwZWQKLSsJLmxvbmcJMHg0OAkjIERX X0FUX3R5cGUKLSsJLmxvbmcJLkxGQjYJIyBEV19BVF9sb3dfcGMKLSsJLmxvbmcJLkxGRTYJIyBE V19BVF9oaWdoX3BjCi0rCS5sb25nCS5MTFNUMTEJIyBEV19BVF9mcmFtZV9iYXNlCi0rCS51bGVi MTI4IDB4OQkjIChESUUgKDB4MWQ4KSBEV19UQUdfdmFyaWFibGUpCi0rCS5hc2NpaSAia1wwIgkj IERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJ LmJ5dGUJMHg1YQkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQot KwkubG9uZwkuTExTVDEyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGls ZHJlbiBvZiBESUUgMHgxYmYKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhi Ci0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYKLSsJLnVsZWIxMjggMHgxCSMgKGFiYnJldiBjb2Rl KQotKwkudWxlYjEyOCAweDExCSMgKFRBRzogRFdfVEFHX2NvbXBpbGVfdW5pdCkKLSsJLmJ5dGUJ MHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MjUJIyAoRFdfQVRfcHJvZHVjZXIp Ci0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0rCS51bGViMTI4IDB4MTMJIyAoRFdf QVRfbGFuZ3VhZ2UpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEy OCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJ LnVsZWIxMjggMHgxYgkjIChEV19BVF9jb21wX2RpcikKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZP Uk1fc3RycCkKLSsJLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4 MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJ LnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjggMHgxMAkjIChEV19BVF9z dG10X2xpc3QpCi0rCS51bGViMTI4IDB4NgkjIChEV19GT1JNX2RhdGE0KQotKwkuYnl0ZQkwCi0r CS5ieXRlCTAKLSsJLnVsZWIxMjggMHgyCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDEz CSMgKFRBRzogRFdfVEFHX3N0cnVjdHVyZV90eXBlKQotKwkuYnl0ZQkweDEJIyBEV19jaGlsZHJl bl95ZXMKLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChE V19GT1JNX3N0cmluZykKLSsJLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLSsJLnVs ZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVj bF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgz YgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQot KwkudWxlYjEyOCAweDEJIyAoRFdfQVRfc2libGluZykKLSsJLnVsZWIxMjggMHgxMwkjIChEV19G T1JNX3JlZjQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDMJIyAoYWJicmV2 IGNvZGUpCi0rCS51bGViMTI4IDB4ZAkjIChUQUc6IERXX1RBR19tZW1iZXIpCi0rCS5ieXRlCTAJ IyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIx MjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xf ZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJ IyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJ LnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1f cmVmNCkKLSsJLnVsZWIxMjggMHgzOAkjIChEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbikKLSsJ LnVsZWIxMjggMHhhCSMgKERXX0ZPUk1fYmxvY2sxKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJ LnVsZWIxMjggMHg0CSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDI0CSMgKFRBRzogRFdf VEFHX2Jhc2VfdHlwZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4 YgkjIChEV19BVF9ieXRlX3NpemUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQot KwkudWxlYjEyOCAweDNlCSMgKERXX0FUX2VuY29kaW5nKQotKwkudWxlYjEyOCAweGIJIyAoRFdf Rk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4 OAkjIChEV19GT1JNX3N0cmluZykKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4 NQkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHhkCSMgKFRBRzogRFdfVEFHX21lbWJlcikK LSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1l KQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAo RFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVs ZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JN X2RhdGExKQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJ IyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweGIJIyAoRFdfQVRfYnl0ZV9zaXplKQotKwku dWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHhkCSMgKERXX0FUX2Jp dF9zaXplKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHhj CSMgKERXX0FUX2JpdF9vZmZzZXQpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQot KwkudWxlYjEyOCAweDM4CSMgKERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uKQotKwkudWxlYjEy OCAweGEJIyAoRFdfRk9STV9ibG9jazEpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEy OCAweDYJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3Vi cHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4M2YJ IyAoRFdfQVRfZXh0ZXJuYWwpCi0rCS51bGViMTI4IDB4YwkjIChEV19GT1JNX2ZsYWcpCi0rCS51 bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJp bmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJ IyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0r CS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDI3CSMgKERXX0FU X3Byb3RvdHlwZWQpCi0rCS51bGViMTI4IDB4YwkjIChEV19GT1JNX2ZsYWcpCi0rCS51bGViMTI4 IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQot KwkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19G T1JNX2FkZHIpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJLnVsZWIx MjggMHg2CSMgKERXX0ZPUk1fZGF0YTQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5n KQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkw Ci0rCS51bGViMTI4IDB4NwkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHg1CSMgKFRBRzog RFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwku dWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3Ry aW5nKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhi CSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQot KwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19B VF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgy CSMgKERXX0FUX2xvY2F0aW9uKQotKwkudWxlYjEyOCAweGEJIyAoRFdfRk9STV9ibG9jazEpCi0r CS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDgJIyAoYWJicmV2IGNvZGUpCi0rCS51 bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdf Y2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4M2YJIyAoRFdfQVRfZXh0ZXJuYWwpCi0rCS51bGVi MTI4IDB4YwkjIChEV19GT1JNX2ZsYWcpCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQot KwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdf QVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIx MjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2Rh dGExKQotKwkudWxlYjEyOCAweDI3CSMgKERXX0FUX3Byb3RvdHlwZWQpCi0rCS51bGViMTI4IDB4 YwkjIChEV19GT1JNX2ZsYWcpCi0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVs ZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93 X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAweDEyCSMg KERXX0FUX2hpZ2hfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGVi MTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJLnVsZWIxMjggMHg2CSMgKERXX0ZPUk1f ZGF0YTQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEz CSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OQkj IChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkK LSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1l KQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAo RFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVs ZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JN X2RhdGExKQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJ IyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51 bGViMTI4IDB4NgkjIChEV19GT1JNX2RhdGE0KQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVs ZWIxMjggMHhhCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDEJIyAoVEFHOiBEV19UQUdf YXJyYXlfdHlwZSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4 NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51 bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1f cmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4YgkjIChhYmJyZXYgY29k ZSkKLSsJLnVsZWIxMjggMHgyMQkjIChUQUc6IERXX1RBR19zdWJyYW5nZV90eXBlKQotKwkuYnl0 ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwku dWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgyZgkjIChEV19BVF91 cHBlcl9ib3VuZCkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS5ieXRlCTAK LSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweGMJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4 MjQJIyAoVEFHOiBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8K LSsJLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLSsJLnVsZWIxMjggMHhiCSMgKERX X0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2UJIyAoRFdfQVRfZW5jb2RpbmcpCi0rCS51bGVi MTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIx MjggMHhkCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDJlCSMgKFRBRzogRFdfVEFHX3N1 YnByb2dyYW0pCi0rCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotKwkudWxlYjEyOCAweDNm CSMgKERXX0FUX2V4dGVybmFsKQotKwkudWxlYjEyOCAweGMJIyAoRFdfRk9STV9mbGFnKQotKwku dWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3Ry cCkKLSsJLnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4Ygkj IChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJ LnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRf cHJvdG90eXBlZCkKLSsJLnVsZWIxMjggMHhjCSMgKERXX0ZPUk1fZmxhZykKLSsJLnVsZWIxMjgg MHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJ LnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JN X2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHgx CSMgKERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjggMHg0MAkjIChEV19BVF9mcmFtZV9iYXNlKQot KwkudWxlYjEyOCAweDYJIyAoRFdfRk9STV9kYXRhNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0r CS5ieXRlCTAKLSsJLnNlY3Rpb24JLmRlYnVnX3B1Ym5hbWVzLCIiLEBwcm9nYml0cwotKwkubG9u ZwkweDQyCSMgTGVuZ3RoIG9mIFB1YmxpYyBOYW1lcyBJbmZvCi0rCS52YWx1ZQkweDIJIyBEV0FS RiBWZXJzaW9uCi0rCS5sb25nCS5MZGVidWdfaW5mbzAJIyBPZmZzZXQgb2YgQ29tcGlsYXRpb24g VW5pdCBJbmZvCi0rCS5sb25nCTB4MWU3CSMgQ29tcGlsYXRpb24gVW5pdCBMZW5ndGgKLSsJLmxv bmcJMHg3OAkjIERJRSBvZmZzZXQKLSsJLmFzY2lpICJiYXJcMCIJIyBleHRlcm5hbCBuYW1lCi0r CS5sb25nCTB4OWUJIyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiZjFcMCIJIyBleHRlcm5hbCBuYW1l Ci0rCS5sb25nCTB4ZDQJIyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiZjJcMCIJIyBleHRlcm5hbCBu YW1lCi0rCS5sb25nCTB4MTFkCSMgRElFIG9mZnNldAotKwkuYXNjaWkgImYzXDAiCSMgZXh0ZXJu YWwgbmFtZQotKwkubG9uZwkweDE1MwkjIERJRSBvZmZzZXQKLSsJLmFzY2lpICJmNFwwIgkjIGV4 dGVybmFsIG5hbWUKLSsJLmxvbmcJMHgxODkJIyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiZjVcMCIJ IyBleHRlcm5hbCBuYW1lCi0rCS5sb25nCTB4MWJmCSMgRElFIG9mZnNldAotKwkuYXNjaWkgIm1h aW5cMCIJIyBleHRlcm5hbCBuYW1lCi0rCS5sb25nCTAKLSsJLnNlY3Rpb24JLmRlYnVnX3B1YnR5 cGVzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDFhCSMgTGVuZ3RoIG9mIFB1YmxpYyBUeXBlIE5h bWVzIEluZm8KLSsJLnZhbHVlCTB4MgkjIERXQVJGIFZlcnNpb24KLSsJLmxvbmcJLkxkZWJ1Z19p bmZvMAkjIE9mZnNldCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLmxvbmcJMHgxZTcJIyBD b21waWxhdGlvbiBVbml0IExlbmd0aAotKwkubG9uZwkweDI1CSMgRElFIG9mZnNldAotKwkuYXNj aWkgIkFcMCIJIyBleHRlcm5hbCBuYW1lCi0rCS5sb25nCTB4NGYJIyBESUUgb2Zmc2V0Ci0rCS5h c2NpaSAiQlwwIgkjIGV4dGVybmFsIG5hbWUKLSsJLmxvbmcJMAotKwkuc2VjdGlvbgkuZGVidWdf YXJhbmdlcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgxYwkjIExlbmd0aCBvZiBBZGRyZXNzIFJh bmdlcyBJbmZvCi0rCS52YWx1ZQkweDIJIyBEV0FSRiBWZXJzaW9uCi0rCS5sb25nCS5MZGVidWdf aW5mbzAJIyBPZmZzZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0rCS5ieXRlCTB4NAkjIFNp emUgb2YgQWRkcmVzcwotKwkuYnl0ZQkwCSMgU2l6ZSBvZiBTZWdtZW50IERlc2NyaXB0b3IKLSsJ LnZhbHVlCTAJIyBQYWQgdG8gOCBieXRlIGJvdW5kYXJ5Ci0rCS52YWx1ZQkwCi0rCS5sb25nCS5M dGV4dDAJIyBBZGRyZXNzCi0rCS5sb25nCS5MZXRleHQwLS5MdGV4dDAJIyBMZW5ndGgKLSsJLmxv bmcJMAotKwkubG9uZwkwCi0rCS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQot Ky5MQVNGMjoKLSsJLnN0cmluZwkicGllY2VzLmMiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSIvaG9t ZS90cm9tZXkvZ251L2FyY2hlci9hcmNoZXIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyIgotKy5M QVNGMToKLSsJLnN0cmluZwkiR05VIEMgNC42LjAgMjAxMDA1MDYgKGV4cGVyaW1lbnRhbCkgW3Ry dW5rIHJldmlzaW9uIDE1OTExN10iCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJtYWluIgotKwkuaWRl bnQJIkdDQzogKEdOVSkgNC42LjAgMjAxMDA1MDYgKGV4cGVyaW1lbnRhbCkgW3RydW5rIHJldmlz aW9uIDE1OTExN10iCi0rCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLS0t LSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5jCi0rKysgc3JjL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuYwkyMDEwLTA1LTI1IDIwOjE4OjAwLjYyNzYyMjAwMCAr MDAwMAotQEAgLTAsMCArMSw5OCBAQAotKy8qIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIFRoZSBv cmlnaW5hbCBwcm9ncmFtIGNvcnJlc3BvbmRpbmcgdG8gcGllY2VzLlMuCi0rICAgVGhpcyBjYW1l IGZyb20gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD01ODk0NjcK LSsgICBOb3RlIHRoYXQgaXQgaXMgbm90IGV2ZXIgY29tcGlsZWQsIHBpZWNlcy5TIGlzIHVzZWQg aW5zdGVhZC4KLSsgICBIb3dldmVyLCBpdCBpcyB1c2VkIHRvIGV4dHJhY3QgYnJlYWtwb2ludCBs aW5lIG51bWJlcnMuICAqLwotKwotK3N0cnVjdCBBIHsgaW50IGk7IGludCBqOyB9OwotK3N0cnVj dCBCIHsgaW50IDogNDsgaW50IGkgOiAxMjsgaW50IGogOiAxMjsgaW50IDogNDsgfTsKLSsKLStf X2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLStiYXIgKGludCB4KQotK3sKLSsgIGFzbSB2 b2xhdGlsZSAoIiIgOiA6ICJyIiAoeCkgOiAibWVtb3J5Iik7Ci0rfQotKwotK19fYXR0cmlidXRl X18oKG5vaW5saW5lKSkgaW50Ci0rZjEgKGludCBrKQotK3sKLSsgIHN0cnVjdCBBIGEgPSB7IDQs IGsgKyA2IH07Ci0rICBhc20gKCIiIDogIityIiAoYS5pKSk7Ci0rICBhLmorKzsKLSsgIGJhciAo YS5pKTsJCS8qIHsgZGctZmluYWwgeyBnZGItdGVzdCAyMCAiYS5pIiAiNCIgfSB9ICovCi0rICBi YXIgKGEuaik7CQkvKiB7IGRnLWZpbmFsIHsgZ2RiLXRlc3QgMjAgImEuaiIgIjE0IiB9IH0gKi8K LSsgIHJldHVybiBhLmkgKyBhLmo7CS8qIGYxIGJyZWFrcG9pbnQgKi8KLSt9Ci0rCi0rX19hdHRy aWJ1dGVfXygobm9pbmxpbmUpKSBpbnQKLStmMiAoaW50IGspCi0rewotKyAgaW50IGFbMl0gPSB7 IDQsIGsgKyA2IH07Ci0rICBhc20gKCIiIDogIityIiAoYVswXSkpOwotKyAgYVsxXSsrOwotKyAg YmFyIChhWzBdKTsJCS8qIHsgZGctZmluYWwgeyBnZGItdGVzdCAzMSAiYVxbMFxdIiAiNCIgfSB9 ICovCi0rICBiYXIgKGFbMV0pOwkJLyogeyBkZy1maW5hbCB7IGdkYi10ZXN0IDMxICJhXFsxXF0i ICIxNCIgfSB9ICovCi0rICByZXR1cm4gYVswXSArIGFbMV07CS8qIGYyIGJyZWFrcG9pbnQgKi8K LSt9Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBpbnQKLStmMyAoaW50IGspCi0rewot KyAgc3RydWN0IEIgYSA9IHsgNCwgayArIDYgfTsKLSsgIGFzbSAoIiIgOiAiK3IiIChhLmkpKTsK LSsgIGEuaisrOwotKyAgYmFyIChhLmkpOwkJLyogeyBkZy1maW5hbCB7IGdkYi10ZXN0IDQyICJh LmkiICI0IiB9IH0gKi8KLSsgIGJhciAoYS5qKTsJCS8qIHsgZGctZmluYWwgeyBnZGItdGVzdCA0 MiAiYS5qIiAiMTQiIH0gfSAqLwotKyAgcmV0dXJuIGEuaSArIGEuajsJLyogZjMgYnJlYWtwb2lu dCAqLwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludAotK2Y0IChpbnQgaykK LSt7Ci0rICBpbnQgYVsyXSA9IHsgaywgayB9OwotKyAgYXNtICgiIiA6ICIrciIgKGFbMF0pKTsK LSsgIGFbMV0rKzsKLSsgIGJhciAoYVswXSk7Ci0rICBiYXIgKGFbMV0pOwotKyAgcmV0dXJuIGFb MF0gKyBhWzFdOwkJLyogZjQgYnJlYWtwb2ludCAqLwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChu b2lubGluZSkpIGludAotK2Y1IChpbnQgaykKLSt7Ci0rICBzdHJ1Y3QgQSBhID0geyBrLCBrIH07 Ci0rICBhc20gKCIiIDogIityIiAoYS5pKSk7Ci0rICBhLmorKzsKLSsgIGJhciAoYS5pKTsKLSsg IGJhciAoYS5qKTsKLSsgIHJldHVybiBhLmkgKyBhLmo7CQkvKiBmNSBicmVha3BvaW50ICovCi0r fQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgaW50IGs7Ci0rICBhc20gKCIiIDogIj1y IiAoaykgOiAiMCIgKDcpKTsKLSsgIGYxIChrKTsKLSsgIGYyIChrKTsKLSsgIGYzIChrKTsKLSsg IGY0IChrKTsKLSsgIGY1IChrKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5leHAKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL3BpZWNlcy5leHAJMjAxMC0wNS0yNSAyMDoxODowMy45NjExMTEwMDAgKzAwMDAKLUBAIC0w LDAgKzEsNTcgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3Qgc29tZSBE V0FSRiBwaWVjZSBvcGVyYXRvcnMuCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9u IHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBw aWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxp bnV4Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAq LSotZWxmKl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0 YXJnZXQgYXJtLSotZWFiaSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0g ewotKyAgICByZXR1cm4gMCAgCi0rfQotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB4 ODYgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCBpPzg2LSpdfSB7Ci0rICAgIHJldHVybiAwICAK LSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJwaWVjZXMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u UwotK3NldCBjc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfS54Ci0rCi0raWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAke3Rlc3RmaWxlfS54ICRzcmNmaWxlXX0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEZ1bmN0 aW9uIGYxIHRlc3RzIGEgcGFydGljdWxhciBnZGIgYnVnIGludm9sdmluZyBEV19PUF9waWVjZS4K LStwcm9jIHBpZWNlc190ZXN0X2YxIHt9IHsKLSsgICAgZ2xvYmFsIGNzcmNmaWxlCi0rICAgIHNl dCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmMSBicmVha3BvaW50IiAkY3NyY2ZpbGVdCi0r ICAgIGdkYl90ZXN0ICJicmVhayBwaWVjZXMuYzokbGluZSIgIkJyZWFrcG9pbnQgMi4qIiBcCi0r CSJzZXQgZjEgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiY29udGludWUgdG8gZjEgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJf dGVzdCAicHJpbnQgYSIgIiA9IHtpID0gNCwgaiA9IDE0fSIgInByaW50IGEgaW4gcGllY2VzOmYx IgotKyAgICBnZGJfdGVzdCAicHJpbnQgYS5qIiAiID0gMTQiICJwcmludCBhLmogaW4gcGllY2Vz OmYxIgotK30KLSsKLStwaWVjZXNfdGVzdF9mMQoKZGlmZiAtLWdpdCBhL2dkYi1iejU4OTQ2Ny1w aWVjZXMyb2Y0LnBhdGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlczJvZjQucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMjcwMzkuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTg5NDY3 LXBpZWNlczJvZjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA1L21zZzAwMTg4Lmh0bWwKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDUvbXNnMDAxODkuaHRtbAotCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMC8wNS8yMSAyMDo0NToxOAkxLjExODMwCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMC8wNS8yMSAyMDo1Njo0OAkxLjExODMxCi0jIyAtMSwzICsxLDggQEAKLSsy MDEwLTA1LTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZXZhbC5j IChldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQpIDxCSU5PUF9TVUJTQ1JJUFQ+OiBDYWxsCi0rCWV2 YWx1YXRlX3N1YmV4cCwgbm90IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uLgotKwotIyMj IHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjM5OjUwCTEuMjI3Mwot IyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjU2OjQ5CTEuMjI3 NAotIyMgLTEsNSArMSwxMCBAQAotIDIwMTAtMDUtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVk aGF0LmNvbT4KLSAKLSsJKiBnZGIuZHdhcmYyL3BpZWNlcy5leHAgKHBpZWNlc190ZXN0X2YyKTog TmV3IHByb2MuCi0rCUNhbGwgaXQuCi0rCi0tLS0gc3JjL2dkYi9ldmFsLmMJMjAxMC8wNS8xNCAx ODozNToxMQkxLjEzNAotKysrIHNyYy9nZGIvZXZhbC5jCTIwMTAvMDUvMjEgMjA6NTY6NDkJMS4x MzUKLUBAIC0yMDU5LDggKzIwNTksOCBAQAotICAgICAgIGVycm9yIChfKCInOicgb3BlcmF0b3Ig dXNlZCBpbiBpbnZhbGlkIGNvbnRleHQiKSk7Ci0gCi0gICAgIGNhc2UgQklOT1BfU1VCU0NSSVBU OgotLSAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3Ms IG5vc2lkZSk7Ci0tICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChl eHAsIHBvcywgbm9zaWRlKTsKLSsgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZ UEUsIGV4cCwgcG9zLCBub3NpZGUpOwotKyAgICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHAgKE5V TExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0gICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NL SVApCi0gCWdvdG8gbm9zaWRlcmV0OwotICAgICAgIGlmIChiaW5vcF91c2VyX2RlZmluZWRfcCAo b3AsIGFyZzEsIGFyZzIpKQotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2Vz LmV4cAkyMDEwLzA1LzIxIDIwOjM5OjUwCTEuMQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvcGllY2VzLmV4cAkyMDEwLzA1LzIxIDIxOjAwOjI3CTEuMgotQEAgLTU0LDQgKzU0LDE4 IEBACi0gICAgIGdkYl90ZXN0ICJwcmludCBhLmoiICIgPSAxNCIgInByaW50IGEuaiBpbiBwaWVj ZXM6ZjEiCi0gfQotIAotKyMgRnVuY3Rpb24gZjIgdGVzdHMgZm9yIGEgYnVnIHdoZW4gaW5kZXhp bmcgaW50byBhbiBhcnJheSBjcmVhdGVkCi0rIyB1c2luZyBEV19PUF9waWVjZS4KLStwcm9jIHBp ZWNlc190ZXN0X2YyIHt9IHsKLSsgICAgZ2xvYmFsIGNzcmNmaWxlCi0rICAgIHNldCBsaW5lIFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJmMiBicmVha3BvaW50IiAkY3NyY2ZpbGVdCi0rICAgIGdkYl90 ZXN0ICJicmVhayBwaWVjZXMuYzokbGluZSIgIkJyZWFrcG9pbnQgMy4qIiBcCi0rICAgICAgICJz ZXQgZjIgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiY29udGludWUgdG8gZjIgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfdGVz dCAicHJpbnQgYSIgIiA9IC40LCAxNC4iICJwcmludCBhIGluIHBpZWNlczpmMiIKLSsgICAgZ2Ri X3Rlc3QgInByaW50IGFcWzBcXSIgIiA9IDQiICJwcmludCBhXFswXF0gaW4gcGllY2VzOmYyIgot KyAgICBnZGJfdGVzdCAicHJpbnQgYVxbMVxdIiAiID0gMTQiICJwcmludCBhXFsxXF0gaW4gcGll Y2VzOmYyIgotK30KLSsKLSBwaWVjZXNfdGVzdF9mMQotK3BpZWNlc190ZXN0X2YyCgpkaWZmIC0t Z2l0IGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczNvZjQucGF0Y2ggYi9nZGItYno1ODk0NjctcGllY2Vz M29mNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2ZjZi4uMDAwMDAw MAotLS0gYS9nZGItYno1ODk0NjctcGllY2VzM29mNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDExOTggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wNS9t c2cwMDE5MC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjU2OjQ4 CTEuMTE4MzEKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMTE4 MzIKLSMjIC0xLDUgKzEsMTYgQEAKLSAyMDEwLTA1LTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJl ZGhhdC5jb20+Ci0gCi0rCSogZHdhcmYybG9jLmMgKHJlYWRfcGllY2VkX3ZhbHVlKTogRXhpdCBs b29wIHdoZW4gcmVzdWx0IGlzIGZ1bGwuCi0rCTxEV0FSRl9WQUxVRV9PUFRJTUlaRURfT1VUPjog TmV3IGNhc2UuCi0rCSogZHdhcmYyZXhwci5oIChlbnVtIGR3YXJmX3ZhbHVlX2xvY2F0aW9uKQot Kwk8RFdBUkZfVkFMVUVfT1BUSU1JWkVEX09VVD46IE5ldyBjb25zdGFudC4KLSsJKiBkd2FyZjJl eHByLmMgKGR3YXJmX2V4cHJfc3RhY2tfZW1wdHlfcCk6IE5ldyBmdW5jdGlvbi4KLSsJKGFkZF9w aWVjZSk6IEhhbmRsZSBlbXB0eSBwaWVjZS4KLSsJKGV4ZWN1dGVfc3RhY2tfb3ApIDxEV19PUF9w aWVjZT46IEhhbmRsZQotKwlEV0FSRl9WQUxVRV9PUFRJTUlaRURfT1VULgotKwotIyMjIHNyYy9n ZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjU2OjQ5CTEuMjI3NAotIyMjIHNy Yy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMjI3NQotIyMg LTEsNSArMSwxMyBAQAotIDIwMTAtMDUtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNv bT4KLSAKLSsJKiBnZGIuZHdhcmYyL3BpZWNlcy5leHAgKHBpZWNlc190ZXN0X2Y2KTogTmV3IHBy b2MuCi0rCUNhbGwgaXQuCi0rCSogZ2RiLmR3YXJmMi9waWVjZXMuYyAoc3RydWN0IEMpOiBOZXcu Ci0rCShmNik6IE5ldyBmdW5jdGlvbi4KLSsJKiBnZGIuZHdhcmYyL3BpZWNlcy5TOiBSZXBsYWNl LgotKwotLS0tIHNyYy9nZGIvZHdhcmYyZXhwci5jCTIwMTAvMDUvMTQgMTc6NTM6MTYJMS40Mgot KysrIHNyYy9nZGIvZHdhcmYyZXhwci5jCTIwMTAvMDUvMjEgMjE6MDE6NDYJMS40MwotQEAgLTE0 Myw2ICsxNDMsMTQgQEAKLSAKLSB9Ci0gCi0rLyogUmV0dXJuIHRydWUgaWYgdGhlIGV4cHJlc3Np b24gc3RhY2sgaXMgZW1wdHkuICAqLwotKwotK3N0YXRpYyBpbnQKLStkd2FyZl9leHByX3N0YWNr X2VtcHR5X3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCkKLSt7Ci0rICByZXR1cm4g Y3R4LT5zdGFja19sZW4gPT0gMDsKLSt9Ci0rCi0gLyogQWRkIGEgbmV3IHBpZWNlIHRvIENUWCdz IHBpZWNlIGxpc3QuICAqLwotIHN0YXRpYyB2b2lkCi0gYWRkX3BpZWNlIChzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250ZXh0ICpjdHgsIFVMT05HRVNUIHNpemUpCi1AQCAtMTY3LDYgKzE3NSwxNSBAQAot ICAgICAgIHAtPnYubGl0ZXJhbC5kYXRhID0gY3R4LT5kYXRhOwotICAgICAgIHAtPnYubGl0ZXJh bC5sZW5ndGggPSBjdHgtPmxlbjsKLSAgICAgfQotKyAgZWxzZSBpZiAoZHdhcmZfZXhwcl9zdGFj a19lbXB0eV9wIChjdHgpKQotKyAgICB7Ci0rICAgICAgcC0+bG9jYXRpb24gPSBEV0FSRl9WQUxV RV9PUFRJTUlaRURfT1VUOwotKyAgICAgIC8qIEFsc28gcmVzZXQgdGhlIGNvbnRleHQncyBsb2Nh dGlvbiwgZm9yIG91ciBjYWxsZXJzLiAgVGhpcyBpcwotKwkgYSBzb21ld2hhdCBzdHJhbmdlIGFw cHJvYWNoLCBidXQgdGhpcyBsZXRzIHVzIGF2b2lkIHNldHRpbmcKLSsJIHRoZSBsb2NhdGlvbiB0 byBEV0FSRl9WQUxVRV9NRU1PUlkgaW4gYWxsIHRoZSBpbmRpdmlkdWFsCi0rCSBjYXNlcyBpbiB0 aGUgZXZhbHVhdG9yLiAgKi8KLSsgICAgICBjdHgtPmxvY2F0aW9uID0gRFdBUkZfVkFMVUVfT1BU SU1JWkVEX09VVDsKLSsgICAgfQotICAgZWxzZQotICAgICB7Ci0gICAgICAgcC0+di5leHByLnZh bHVlID0gZHdhcmZfZXhwcl9mZXRjaCAoY3R4LCAwKTsKLUBAIC04NTksNyArODc2LDggQEAKLSAK LSAgICAgICAgICAgICAvKiBQb3Agb2ZmIHRoZSBhZGRyZXNzL3JlZ251bSwgYW5kIHJlc2V0IHRo ZSBsb2NhdGlvbgotIAkgICAgICAgdHlwZS4gICovCi0tCSAgICBpZiAoY3R4LT5sb2NhdGlvbiAh PSBEV0FSRl9WQUxVRV9MSVRFUkFMKQotKwkgICAgaWYgKGN0eC0+bG9jYXRpb24gIT0gRFdBUkZf VkFMVUVfTElURVJBTAotKwkJJiYgY3R4LT5sb2NhdGlvbiAhPSBEV0FSRl9WQUxVRV9PUFRJTUla RURfT1VUKQotIAkgICAgICBkd2FyZl9leHByX3BvcCAoY3R4KTsKLSAgICAgICAgICAgICBjdHgt PmxvY2F0aW9uID0gRFdBUkZfVkFMVUVfTUVNT1JZOwotICAgICAgICAgICB9Ci0tLS0gc3JjL2dk Yi9kd2FyZjJleHByLmgJMjAxMC8wMS8wMSAwNzozMTozMAkxLjIwCi0rKysgc3JjL2dkYi9kd2Fy ZjJleHByLmgJMjAxMC8wNS8yMSAyMTowMTo0NgkxLjIxCi1AQCAtMzgsNyArMzgsMTAgQEAKLSAg IERXQVJGX1ZBTFVFX1NUQUNLLAotIAotICAgLyogVGhlIHBpZWNlIGlzIGEgbGl0ZXJhbC4gICov Ci0tICBEV0FSRl9WQUxVRV9MSVRFUkFMCi0rICBEV0FSRl9WQUxVRV9MSVRFUkFMLAotKwotKyAg LyogVGhlIHBpZWNlIHdhcyBvcHRpbWl6ZWQgb3V0LiAgKi8KLSsgIERXQVJGX1ZBTFVFX09QVElN SVpFRF9PVVQKLSB9OwotIAotIC8qIFRoZSBkd2FyZiBleHByZXNzaW9uIHN0YWNrLiAgKi8KLS0t LSBzcmMvZ2RiL2R3YXJmMmxvYy5jCTIwMTAvMDUvMjEgMjA6Mzk6NTAJMS43OQotKysrIHNyYy9n ZGIvZHdhcmYybG9jLmMJMjAxMC8wNS8yMSAyMTowMTo0NgkxLjgwCi1AQCAtMzg0LDYgKzM4NCwx NiBAQAotIAkgIH0KLSAJICBicmVhazsKLSAKLSsJY2FzZSBEV0FSRl9WQUxVRV9PUFRJTUlaRURf T1VUOgotKwkgIC8qIFdlIGp1c3QgbGVhdmUgdGhlIGJpdHMgZW1wdHkgZm9yIG5vdy4gIFRoaXMg aXMgbm90IGlkZWFsCi0rCSAgICAgYnV0IGdkYiBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBhIG5p Y2Ugd2F5IHRvIHJlcHJlc2VudAotKwkgICAgIG9wdGltaXplZC1vdXQgcGllY2VzLiAgKi8KLSsJ ICB3YXJuaW5nIChfKCJieXRlcyAlbGQtJWxkIGluIGNvbXB1dGVkIG9iamVjdCB3ZXJlIG9wdGlt aXplZCBvdXQ7ICIKLSsJCSAgICAgInJlcGxhY2luZyB3aXRoIHplcm9lcyIpLAotKwkJICAgb2Zm c2V0LAotKwkJICAgb2Zmc2V0ICsgKGxvbmcpIHRoaXNfc2l6ZSk7Ci0rCSAgYnJlYWs7Ci0rCi0g CWRlZmF1bHQ6Ci0gCSAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygiaW52 YWxpZCBsb2NhdGlvbiB0eXBlIikpOwotIAl9Ci1AQCAtNjA5LDYgKzYxOSw5IEBACi0gCSAgfQot IAkgIGJyZWFrOwotIAotKwkgIC8qIERXQVJGX1ZBTFVFX09QVElNSVpFRF9PVVQgY2FuJ3Qgb2Nj dXIgaW4gdGhpcyBjb250ZXh0IC0tCi0rCSAgICAgaXQgY2FuIG9ubHkgYmUgZW5jb3VudGVyZWQg d2hlbiBtYWtpbmcgYSBwaWVjZS4gICovCi0rCWNhc2UgRFdBUkZfVkFMVUVfT1BUSU1JWkVEX09V VDoKLSAJZGVmYXVsdDoKLSAJICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBf KCJpbnZhbGlkIGxvY2F0aW9uIHR5cGUiKSk7Ci0gCX0KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL3BpZWNlcy5TCTIwMTAvMDUvMjEgMjA6Mzk6NTAJMS4xCi0rKysgc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuUwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMgotQEAg LTM3LDE5ICszNywxOSBAQAotIGJhcjoKLSAuTEZCMDoKLSAJLmZpbGUgMSAicGllY2VzLmMiCi0t CSMgcGllY2VzLmM6MjgKLS0JLmxvYyAxIDI4IDAKLSsJIyBwaWVjZXMuYzoyOQotKwkubG9jIDEg MjkgMAotIC5MVkwwOgotIAkjIGJhc2ljIGJsb2NrIDIKLSAJcHVzaGwJJWVicAotIC5MQ0ZJMDoK LSAJbW92bAklZXNwLCAlZWJwCi0gLkxDRkkxOgotLQkjIHBpZWNlcy5jOjI5Ci0tCS5sb2MgMSAy OSAwCi0tCW1vdmwJOCglZWJwKSwgJWVheAotIAkjIHBpZWNlcy5jOjMwCi0gCS5sb2MgMSAzMCAw Ci0rCW1vdmwJOCglZWJwKSwgJWVheAotKwkjIHBpZWNlcy5jOjMxCi0rCS5sb2MgMSAzMSAwCi0g CXBvcGwJJWVicAotIC5MQ0ZJMjoKLSAJcmV0Ci1AQCAtNjAsOCArNjAsOCBAQAotIAkudHlwZQlm MSwgQGZ1bmN0aW9uCi0gZjE6Ci0gLkxGQjE6Ci0tCSMgcGllY2VzLmM6MzQKLS0JLmxvYyAxIDM0 IDAKLSsJIyBwaWVjZXMuYzozNQotKwkubG9jIDEgMzUgMAotIC5MVkwxOgotIAkjIGJhc2ljIGJs b2NrIDIKLSAJcHVzaGwJJWVicAotQEAgLTczLDM2ICs3MywzNiBAQAotIC5MQ0ZJNToKLSAJbW92 bAklZXNpLCAtNCglZWJwKQotIC5MQ0ZJNjoKLS0JIyBwaWVjZXMuYzozNwotLQkubG9jIDEgMzcg MAotKwkjIHBpZWNlcy5jOjM4Ci0rCS5sb2MgMSAzOCAwCi0gCW1vdmwJOCglZWJwKSwgJWVzaQot LQkjIHBpZWNlcy5jOjM0Ci0tCS5sb2MgMSAzNCAwCi0rCSMgcGllY2VzLmM6MzUKLSsJLmxvYyAx IDM1IDAKLSAJbW92bAklZWJ4LCAtOCglZWJwKQotIC5MQ0ZJNzoKLS0JIyBwaWVjZXMuYzozNgot LQkubG9jIDEgMzYgMAotKwkjIHBpZWNlcy5jOjM3Ci0rCS5sb2MgMSAzNyAwCi0gCW1vdmwJJDQs ICVlYngKLSAuTFZMMzoKLSsJIyBwaWVjZXMuYzozOQotKwkubG9jIDEgMzkgMAotKwltb3ZsCSVl YngsICglZXNwKQotIAkjIHBpZWNlcy5jOjM4Ci0gCS5sb2MgMSAzOCAwCi0tCW1vdmwJJWVieCwg KCVlc3ApCi0tCSMgcGllY2VzLmM6MzcKLS0JLmxvYyAxIDM3IDAKLSAJYWRkbAkkNywgJWVzaQot IC5MVkw0OgotLQkjIHBpZWNlcy5jOjM4Ci0tCS5sb2MgMSAzOCAwCi0tCWNhbGwJYmFyCi0gCSMg cGllY2VzLmM6MzkKLSAJLmxvYyAxIDM5IDAKLS0JbW92bAklZXNpLCAoJWVzcCkKLSAJY2FsbAli YXIKLSAJIyBwaWVjZXMuYzo0MAotIAkubG9jIDEgNDAgMAotLQlsZWFsCSglZWJ4LCVlc2kpLCAl ZWF4Ci0rCW1vdmwJJWVzaSwgKCVlc3ApCi0rCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6NDEKLSAJ LmxvYyAxIDQxIDAKLSsJbGVhbAkoJWVieCwlZXNpKSwgJWVheAotKwkjIHBpZWNlcy5jOjQyCi0r CS5sb2MgMSA0MiAwCi0gCW1vdmwJLTgoJWVicCksICVlYngKLSAuTFZMNToKLSAJbW92bAktNCgl ZWJwKSwgJWVzaQotQEAgLTExOSw4ICsxMTksOCBAQAotIAkudHlwZQlmMiwgQGZ1bmN0aW9uCi0g ZjI6Ci0gLkxGQjI6Ci0tCSMgcGllY2VzLmM6NDUKLS0JLmxvYyAxIDQ1IDAKLSsJIyBwaWVjZXMu Yzo0NgotKwkubG9jIDEgNDYgMAotIC5MVkw3OgotIAkjIGJhc2ljIGJsb2NrIDIKLSAJcHVzaGwJ JWVicAotQEAgLTEzMiwzNiArMTMyLDM2IEBACi0gLkxDRkkxMjoKLSAJbW92bAklZXNpLCAtNCgl ZWJwKQotIC5MQ0ZJMTM6Ci0tCSMgcGllY2VzLmM6NDgKLS0JLmxvYyAxIDQ4IDAKLSsJIyBwaWVj ZXMuYzo0OQotKwkubG9jIDEgNDkgMAotIAltb3ZsCTgoJWVicCksICVlc2kKLS0JIyBwaWVjZXMu Yzo0NQotLQkubG9jIDEgNDUgMAotKwkjIHBpZWNlcy5jOjQ2Ci0rCS5sb2MgMSA0NiAwCi0gCW1v dmwJJWVieCwgLTgoJWVicCkKLSAuTENGSTE0OgotLQkjIHBpZWNlcy5jOjQ3Ci0tCS5sb2MgMSA0 NyAwCi0rCSMgcGllY2VzLmM6NDgKLSsJLmxvYyAxIDQ4IDAKLSAJbW92bAkkNCwgJWVieAotIC5M Vkw5OgotKwkjIHBpZWNlcy5jOjUwCi0rCS5sb2MgMSA1MCAwCi0rCW1vdmwJJWVieCwgKCVlc3Ap Ci0gCSMgcGllY2VzLmM6NDkKLSAJLmxvYyAxIDQ5IDAKLS0JbW92bAklZWJ4LCAoJWVzcCkKLS0J IyBwaWVjZXMuYzo0OAotLQkubG9jIDEgNDggMAotIAlhZGRsCSQ3LCAlZXNpCi0gLkxWTDEwOgot LQkjIHBpZWNlcy5jOjQ5Ci0tCS5sb2MgMSA0OSAwCi0tCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6 NTAKLSAJLmxvYyAxIDUwIDAKLS0JbW92bAklZXNpLCAoJWVzcCkKLSAJY2FsbAliYXIKLSAJIyBw aWVjZXMuYzo1MQotIAkubG9jIDEgNTEgMAotLQlsZWFsCSglZWJ4LCVlc2kpLCAlZWF4Ci0rCW1v dmwJJWVzaSwgKCVlc3ApCi0rCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6NTIKLSAJLmxvYyAxIDUy IDAKLSsJbGVhbAkoJWVieCwlZXNpKSwgJWVheAotKwkjIHBpZWNlcy5jOjUzCi0rCS5sb2MgMSA1 MyAwCi0gCW1vdmwJLTgoJWVicCksICVlYngKLSAuTFZMMTE6Ci0gCW1vdmwJLTQoJWVicCksICVl c2kKLUBAIC0xNzgsNTkgKzE3OCw1OSBAQAotIAkudHlwZQlmMywgQGZ1bmN0aW9uCi0gZjM6Ci0g LkxGQjM6Ci0tCSMgcGllY2VzLmM6NTYKLS0JLmxvYyAxIDU2IDAKLSsJIyBwaWVjZXMuYzo1Nwot KwkubG9jIDEgNTcgMAotIC5MVkwxMzoKLSAJIyBiYXNpYyBibG9jayAyCi0gCXB1c2hsCSVlYnAK LSAuTENGSTE3OgotLQkjIHBpZWNlcy5jOjU4Ci0tCS5sb2MgMSA1OCAwCi0rCSMgcGllY2VzLmM6 NTkKLSsJLmxvYyAxIDU5IDAKLSAJbW92bAkkNCwgJWVkeAotLQkjIHBpZWNlcy5jOjU2Ci0tCS5s b2MgMSA1NiAwCi0rCSMgcGllY2VzLmM6NTcKLSsJLmxvYyAxIDU3IDAKLSAJbW92bAklZXNwLCAl ZWJwCi0gLkxDRkkxODoKLSAuTFZMMTQ6Ci0gCXN1YmwJJDEyLCAlZXNwCi0gLkxDRkkxOToKLS0J IyBwaWVjZXMuYzo1OAotLQkubG9jIDEgNTggMAotKwkjIHBpZWNlcy5jOjU5Ci0rCS5sb2MgMSA1 OSAwCi0gLkxWTDE1OgotLQkjIHBpZWNlcy5jOjU2Ci0tCS5sb2MgMSA1NiAwCi0rCSMgcGllY2Vz LmM6NTcKLSsJLmxvYyAxIDU3IDAKLSAJbW92bAklZXNpLCAtNCglZWJwKQotIC5MQ0ZJMjA6Ci0t CSMgcGllY2VzLmM6NjAKLS0JLmxvYyAxIDYwIDAKLSsJIyBwaWVjZXMuYzo2MQotKwkubG9jIDEg NjEgMAotIAltb3Zzd2wJJWR4LCAlZXNpCi0tCSMgcGllY2VzLmM6NTYKLS0JLmxvYyAxIDU2IDAK LSsJIyBwaWVjZXMuYzo1NwotKwkubG9jIDEgNTcgMAotIAltb3ZsCSVlYngsIC04KCVlYnApCi0g LkxDRkkyMToKLS0JIyBwaWVjZXMuYzo2MAotLQkubG9jIDEgNjAgMAotKwkjIHBpZWNlcy5jOjYx Ci0rCS5sb2MgMSA2MSAwCi0gCW1vdmwJJWVzaSwgKCVlc3ApCi0gCWNhbGwJYmFyCi0gLkxWTDE2 OgotLQkjIHBpZWNlcy5jOjU3Ci0tCS5sb2MgMSA1NyAwCi0rCSMgcGllY2VzLmM6NTgKLSsJLmxv YyAxIDU4IDAKLSAJbW92bAk4KCVlYnApLCAlZWR4Ci0gCXNhbGwJJDQsICVlZHgKLS0JIyBwaWVj ZXMuYzo1OQotLQkubG9jIDEgNTkgMAotKwkjIHBpZWNlcy5jOjYwCi0rCS5sb2MgMSA2MCAwCi0g CWFkZGwJJDExMiwgJWVkeAotIAlzYXJ3CSQ0LCAlZHgKLS0JIyBwaWVjZXMuYzo2MQotLQkubG9j IDEgNjEgMAotKwkjIHBpZWNlcy5jOjYyCi0rCS5sb2MgMSA2MiAwCi0gCW1vdnN3bAklZHgsICVl YngKLSAJbW92bAklZWJ4LCAoJWVzcCkKLSAJY2FsbAliYXIKLS0JIyBwaWVjZXMuYzo2MgotLQku bG9jIDEgNjIgMAotLQlsZWFsCSglZXNpLCVlYngpLCAlZWF4Ci0gCSMgcGllY2VzLmM6NjMKLSAJ LmxvYyAxIDYzIDAKLSsJbGVhbAkoJWVzaSwlZWJ4KSwgJWVheAotKwkjIHBpZWNlcy5jOjY0Ci0r CS5sb2MgMSA2NCAwCi0gCW1vdmwJLTgoJWVicCksICVlYngKLSAJbW92bAktNCglZWJwKSwgJWVz aQotIC5MVkwxNzoKLUBAIC0yNDYsOCArMjQ2LDggQEAKLSAJLnR5cGUJZjQsIEBmdW5jdGlvbgot IGY0OgotIC5MRkI0OgotLQkjIHBpZWNlcy5jOjY3Ci0tCS5sb2MgMSA2NyAwCi0rCSMgcGllY2Vz LmM6NjgKLSsJLmxvYyAxIDY4IDAKLSAuTFZMMTg6Ci0gCSMgYmFzaWMgYmxvY2sgMgotIAlwdXNo bAklZWJwCi1AQCAtMjYyLDI4ICsyNjIsMjggQEAKLSAuTFZMMTk6Ci0gCW1vdmwJJWVieCwgLTgo JWVicCkKLSAuTENGSTI4OgotLQkjIHBpZWNlcy5jOjY5Ci0tCS5sb2MgMSA2OSAwCi0tCW1vdmwJ JWVzaSwgJWVieAotIAkjIHBpZWNlcy5jOjcwCi0gCS5sb2MgMSA3MCAwCi0tCWFkZGwJJDEsICVl c2kKLS0JIyBwaWVjZXMuYzo2OQotLQkubG9jIDEgNjkgMAotLS5MVkwyMDoKLSsJbW92bAklZXNp LCAlZWJ4Ci0gCSMgcGllY2VzLmM6NzEKLSAJLmxvYyAxIDcxIDAKLS0JbW92bAklZWJ4LCAoJWVz cCkKLS0JY2FsbAliYXIKLSsJYWRkbAkkMSwgJWVzaQotKwkjIHBpZWNlcy5jOjcwCi0rCS5sb2Mg MSA3MCAwCi0rLkxWTDIwOgotIAkjIHBpZWNlcy5jOjcyCi0gCS5sb2MgMSA3MiAwCi0tCW1vdmwJ JWVzaSwgKCVlc3ApCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0gCWNhbGwJYmFyCi0gCSMgcGllY2Vz LmM6NzMKLSAJLmxvYyAxIDczIDAKLS0JbGVhbAkoJWVieCwlZXNpKSwgJWVheAotKwltb3ZsCSVl c2ksICglZXNwKQotKwljYWxsCWJhcgotIAkjIHBpZWNlcy5jOjc0Ci0gCS5sb2MgMSA3NCAwCi0r CWxlYWwJKCVlYngsJWVzaSksICVlYXgKLSsJIyBwaWVjZXMuYzo3NQotKwkubG9jIDEgNzUgMAot IAltb3ZsCS04KCVlYnApLCAlZWJ4Ci0gLkxWTDIxOgotIAltb3ZsCS00KCVlYnApLCAlZXNpCi1A QCAtMzAwLDggKzMwMCw4IEBACi0gCS50eXBlCWY1LCBAZnVuY3Rpb24KLSBmNToKLSAuTEZCNToK LS0JIyBwaWVjZXMuYzo3OAotLQkubG9jIDEgNzggMAotKwkjIHBpZWNlcy5jOjc5Ci0rCS5sb2Mg MSA3OSAwCi0gLkxWTDIzOgotIAkjIGJhc2ljIGJsb2NrIDIKLSAJcHVzaGwJJWVicAotQEAgLTMx NiwyOCArMzE2LDI4IEBACi0gLkxWTDI0OgotIAltb3ZsCSVlYngsIC04KCVlYnApCi0gLkxDRkkz NToKLS0JIyBwaWVjZXMuYzo4MAotLQkubG9jIDEgODAgMAotLQltb3ZsCSVlc2ksICVlYngKLSAJ IyBwaWVjZXMuYzo4MQotIAkubG9jIDEgODEgMAotLQlhZGRsCSQxLCAlZXNpCi0tCSMgcGllY2Vz LmM6ODAKLS0JLmxvYyAxIDgwIDAKLS0uTFZMMjU6Ci0rCW1vdmwJJWVzaSwgJWVieAotIAkjIHBp ZWNlcy5jOjgyCi0gCS5sb2MgMSA4MiAwCi0tCW1vdmwJJWVieCwgKCVlc3ApCi0tCWNhbGwJYmFy Ci0rCWFkZGwJJDEsICVlc2kKLSsJIyBwaWVjZXMuYzo4MQotKwkubG9jIDEgODEgMAotKy5MVkwy NToKLSAJIyBwaWVjZXMuYzo4MwotIAkubG9jIDEgODMgMAotLQltb3ZsCSVlc2ksICglZXNwKQot Kwltb3ZsCSVlYngsICglZXNwKQotIAljYWxsCWJhcgotIAkjIHBpZWNlcy5jOjg0Ci0gCS5sb2Mg MSA4NCAwCi0tCWxlYWwJKCVlYngsJWVzaSksICVlYXgKLSsJbW92bAklZXNpLCAoJWVzcCkKLSsJ Y2FsbAliYXIKLSAJIyBwaWVjZXMuYzo4NQotIAkubG9jIDEgODUgMAotKwlsZWFsCSglZWJ4LCVl c2kpLCAlZWF4Ci0rCSMgcGllY2VzLmM6ODYKLSsJLmxvYyAxIDg2IDAKLSAJbW92bAktOCglZWJw KSwgJWVieAotIC5MVkwyNjoKLSAJbW92bAktNCglZWJwKSwgJWVzaQotQEAgLTM1MCw2MCArMzUw LDExOCBAQAotIC5MRkU1OgotIAkuc2l6ZQlmNSwgLi1mNQotIAkucDJhbGlnbiA0LCwxNQotLS5n bG9ibCBtYWluCi0tCS50eXBlCW1haW4sIEBmdW5jdGlvbgotLW1haW46Ci0rLmdsb2JsIGY2Ci0r CS50eXBlCWY2LCBAZnVuY3Rpb24KLStmNjoKLSAuTEZCNjoKLS0JIyBwaWVjZXMuYzo4OQotLQku bG9jIDEgODkgMAotKwkjIHBpZWNlcy5jOjkwCi0rCS5sb2MgMSA5MCAwCi0rLkxWTDI4OgotIAkj IGJhc2ljIGJsb2NrIDIKLSAJcHVzaGwJJWVicAotIC5MQ0ZJMzg6Ci0gCW1vdmwJJWVzcCwgJWVi cAotIC5MQ0ZJMzk6Ci0tCXB1c2hsCSVlYngKLSsJc3VibAkkMTIsICVlc3AKLSAuTENGSTQwOgot LQkjIHBpZWNlcy5jOjkxCi0tCS5sb2MgMSA5MSAwCi0tCW1vdmwJJDcsICVlYngKLS0JIyBwaWVj ZXMuYzo4OQotLQkubG9jIDEgODkgMAotLQlzdWJsCSQ0LCAlZXNwCi0rCW1vdmwJJWVzaSwgLTQo JWVicCkKLSAuTENGSTQxOgotLQkjIHBpZWNlcy5jOjkxCi0tCS5sb2MgMSA5MSAwCi0tLkxWTDI4 OgotLQkjIHBpZWNlcy5jOjkyCi0tCS5sb2MgMSA5MiAwCi0tCW1vdmwJJWVieCwgKCVlc3ApCi0t CWNhbGwJZjEKLSsJbW92bAk4KCVlYnApLCAlZXNpCi0rLkxWTDI5OgotKwltb3ZsCSVlYngsIC04 KCVlYnApCi0rLkxDRkk0MjoKLSAJIyBwaWVjZXMuYzo5MwotIAkubG9jIDEgOTMgMAotLQltb3Zs CSVlYngsICglZXNwKQotLQljYWxsCWYyCi0rCW1vdmwJJWVzaSwgJWVieAotIAkjIHBpZWNlcy5j Ojk0Ci0gCS5sb2MgMSA5NCAwCi0tCW1vdmwJJWVieCwgKCVlc3ApCi0tCWNhbGwJZjMKLSsJYWRk bAkkMSwgJWVzaQotKwkjIHBpZWNlcy5jOjkzCi0rCS5sb2MgMSA5MyAwCi0rLkxWTDMwOgotIAkj IHBpZWNlcy5jOjk1Ci0gCS5sb2MgMSA5NSAwCi0gCW1vdmwJJWVieCwgKCVlc3ApCi0tCWNhbGwJ ZjQKLSsJY2FsbAliYXIKLSAJIyBwaWVjZXMuYzo5NgotIAkubG9jIDEgOTYgMAotLQltb3ZsCSVl YngsICglZXNwKQotLQljYWxsCWY1Ci0rCW1vdmwJJWVzaSwgKCVlc3ApCi0rCWNhbGwJYmFyCi0r CSMgcGllY2VzLmM6OTcKLSsJLmxvYyAxIDk3IDAKLSsJbGVhbAkoJWVieCwlZXNpKSwgJWVheAot IAkjIHBpZWNlcy5jOjk4Ci0gCS5sb2MgMSA5OCAwCi0rCW1vdmwJLTgoJWVicCksICVlYngKLSsu TFZMMzE6Ci0rCW1vdmwJLTQoJWVicCksICVlc2kKLSsuTFZMMzI6Ci0rCW1vdmwJJWVicCwgJWVz cAotKy5MQ0ZJNDM6Ci0rCXBvcGwJJWVicAotKy5MQ0ZJNDQ6Ci0rCXJldAotKy5MRkU2OgotKwku c2l6ZQlmNiwgLi1mNgotKwkucDJhbGlnbiA0LCwxNQotKy5nbG9ibCBtYWluCi0rCS50eXBlCW1h aW4sIEBmdW5jdGlvbgotK21haW46Ci0rLkxGQjc6Ci0rCSMgcGllY2VzLmM6MTAyCi0rCS5sb2Mg MSAxMDIgMAotKwkjIGJhc2ljIGJsb2NrIDIKLSsJcHVzaGwJJWVicAotKy5MQ0ZJNDU6Ci0rCW1v dmwJJWVzcCwgJWVicAotKy5MQ0ZJNDY6Ci0rCXB1c2hsCSVlYngKLSsuTENGSTQ3OgotKwkjIHBp ZWNlcy5jOjEwNAotKwkubG9jIDEgMTA0IDAKLSsJbW92bAkkNywgJWVieAotKwkjIHBpZWNlcy5j OjEwMgotKwkubG9jIDEgMTAyIDAKLSsJc3VibAkkNCwgJWVzcAotKy5MQ0ZJNDg6Ci0rCSMgcGll Y2VzLmM6MTA0Ci0rCS5sb2MgMSAxMDQgMAotKy5MVkwzMzoKLSsJIyBwaWVjZXMuYzoxMDUKLSsJ LmxvYyAxIDEwNSAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjEKLSsJIyBwaWVjZXMu YzoxMDYKLSsJLmxvYyAxIDEwNiAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjIKLSsJ IyBwaWVjZXMuYzoxMDcKLSsJLmxvYyAxIDEwNyAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNh bGwJZjMKLSsJIyBwaWVjZXMuYzoxMDgKLSsJLmxvYyAxIDEwOCAwCi0rCW1vdmwJJWVieCwgKCVl c3ApCi0rCWNhbGwJZjQKLSsJIyBwaWVjZXMuYzoxMDkKLSsJLmxvYyAxIDEwOSAwCi0rCW1vdmwJ JWVieCwgKCVlc3ApCi0rCWNhbGwJZjUKLSsJIyBwaWVjZXMuYzoxMTAKLSsJLmxvYyAxIDExMCAw Ci0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjYKLSsJIyBwaWVjZXMuYzoxMTIKLSsJLmxv YyAxIDExMiAwCi0gCWFkZGwJJDQsICVlc3AKLSAJeG9ybAklZWF4LCAlZWF4Ci0gCXBvcGwJJWVi eAotLS5MQ0ZJNDI6Ci0tLkxWTDI5OgotKy5MQ0ZJNDk6Ci0rLkxWTDM0OgotIAlwb3BsCSVlYnAK LS0uTENGSTQzOgotKy5MQ0ZJNTA6Ci0gCXJldAotLS5MRkU2OgotKy5MRkU3OgotIAkuc2l6ZQlt YWluLCAuLW1haW4KLSAjQVBQCi0gCS5zZWN0aW9uCS5kZWJ1Z19mcmFtZSwiIixAcHJvZ2JpdHMK LUBAIC02NDksMjAgKzcwNyw1NyBAQAotIAkuYnl0ZQkweGQJIyBEV19DRkFfZGVmX2NmYV9yZWdp c3RlcgotIAkudWxlYjEyOCAweDUKLSAJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAot LQkubG9uZwkuTENGSTQwLS5MQ0ZJMzkKLSsJLmxvbmcJLkxDRkk0MS0uTENGSTM5Ci0rCS5ieXRl CTB4ODYJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMHg2Ci0rCS51bGViMTI4IDB4MwotKwkuYnl0 ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJNDItLkxDRkk0MQotKwku Ynl0ZQkweDgzCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4MwotKwkudWxlYjEyOCAweDQKLSsJ LmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTQzLS5MQ0ZJNDIK LSsJLmJ5dGUJMHhkCSMgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg0Ci0r CS5ieXRlCTB4YzYJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NgotKwkuYnl0ZQkweGMzCSMg RFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2Vf bG9jNAotKwkubG9uZwkuTENGSTQ0LS5MQ0ZJNDMKLSsJLmJ5dGUJMHhjNQkjIERXX0NGQV9yZXN0 b3JlLCBjb2x1bW4gMHg1Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwku dWxlYjEyOCAweDQKLSsJLmFsaWduIDQKLSsuTEVGREUxMjoKLSsuTFNGREUxNDoKLSsJLmxvbmcJ LkxFRkRFMTQtLkxBU0ZERTE0CSMgRkRFIExlbmd0aAotKy5MQVNGREUxNDoKLSsJLmxvbmcJLkxm cmFtZTAJIyBGREUgQ0lFIG9mZnNldAotKwkubG9uZwkuTEZCNwkjIEZERSBpbml0aWFsIGxvY2F0 aW9uCi0rCS5sb25nCS5MRkU3LS5MRkI3CSMgRkRFIGFkZHJlc3MgcmFuZ2UKLSsJLmJ5dGUJMHg0 CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTQ1LS5MRkI3Ci0rCS5ieXRlCTB4 ZQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkj IERXX0NGQV9vZmZzZXQsIGNvbHVtbiAweDUKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkj IERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkk0Ni0uTENGSTQ1Ci0rCS5ieXRlCTB4 ZAkjIERXX0NGQV9kZWZfY2ZhX3JlZ2lzdGVyCi0rCS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDQJ IyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJNDctLkxDRkk0NgotIAkuYnl0ZQkw eDgzCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4MwotIAkudWxlYjEyOCAweDMKLSAJLmJ5dGUJ MHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotLQkubG9uZwkuTENGSTQyLS5MQ0ZJNDAKLSsJLmxv bmcJLkxDRkk0OS0uTENGSTQ3Ci0gCS5ieXRlCTB4YzMJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1u IDB4MwotIAkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0tCS5sb25nCS5MQ0ZJNDMt LkxDRkk0MgotKwkubG9uZwkuTENGSTUwLS5MQ0ZJNDkKLSAJLmJ5dGUJMHhjNQkjIERXX0NGQV9y ZXN0b3JlLCBjb2x1bW4gMHg1Ci0gCS5ieXRlCTB4YwkjIERXX0NGQV9kZWZfY2ZhCi0gCS51bGVi MTI4IDB4NAotIAkudWxlYjEyOCAweDQKLSAJLmFsaWduIDQKLS0uTEVGREUxMjoKLSsuTEVGREUx NDoKLSAjTk9fQVBQCi0gCS50ZXh0Ci0gLkxldGV4dDA6Ci1AQCAtMTEzMCw2ICsxMjI1LDExIEBA Ci0gCS5ieXRlCTB4NzUJIyBEV19PUF9icmVnNQotIAkuc2xlYjEyOCA4Ci0gCS5sb25nCS5MQ0ZJ NDMtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5s b25nCS5MQ0ZJNDQtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEx KQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJ IyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNDQtLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0gCS5sb25nCS5MRkU2LS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMSkKLSAJLnZhbHVlCTB4Mgkj IExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotIAkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLUBA IC0xMTM3LDE0ICsxMjM3LDc0IEBACi0gCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0 b3IgYmVnaW4gKCouTExTVDExKQotIAkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9y IGVuZCAoKi5MTFNUMTEpCi0gLkxMU1QxMjoKLS0JLmxvbmcJLkxWTDI4LS5MdGV4dDAJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEyKQotLQkubG9uZwkuTFZMMjktLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEyKQotLQkudmFsdWUJMHgxCSMg TG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5sb25nCS5MVkwyOS0uTHRleHQwCSMgTG9jYXRp b24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QxMikKLSsJLmxvbmcJLkxWTDMwLS5MdGV4dDAJ IyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMikKLSsJLnZhbHVlCTB4YQkjIExv Y2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNs ZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5i eXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAwCi0rCS5ieXRlCTB4OTMJIyBEV19P UF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51 bGViMTI4IDB4NAotKwkubG9uZwkuTFZMMzAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4g YWRkcmVzcyAoKi5MTFNUMTIpCi0rCS5sb25nCS5MVkwzMS0uTHRleHQwCSMgTG9jYXRpb24gbGlz dCBlbmQgYWRkcmVzcyAoKi5MTFNUMTIpCi0rCS52YWx1ZQkweDgJIyBMb2NhdGlvbiBleHByZXNz aW9uIHNpemUKLSAJLmJ5dGUJMHg1MwkjIERXX09QX3JlZzMKLSsJLmJ5dGUJMHg5MwkjIERXX09Q X3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDU2CSMgRFdfT1BfcmVnNgotKwkuYnl0 ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTMJIyBEV19P UF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxWTDMxLS5MdGV4dDAJIyBMb2NhdGlv biBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEyKQotKwkubG9uZwkuTFZMMzItLkx0ZXh0MAkj IExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEyKQotKwkudmFsdWUJMHg3CSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxl YjEyOCAweDQKLSsJLmJ5dGUJMHg1NgkjIERXX09QX3JlZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09Q X3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVs ZWIxMjggMHg0Ci0gCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCou TExTVDEyKQotIAkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNU MTIpCi0rLkxMU1QxMzoKLSsJLmxvbmcJLkxGQjctLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVn aW4gYWRkcmVzcyAoKi5MTFNUMTMpCi0rCS5sb25nCS5MQ0ZJNDUtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEzKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhw cmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA0Ci0r CS5sb25nCS5MQ0ZJNDUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUMTMpCi0rCS5sb25nCS5MQ0ZJNDYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJl c3MgKCouTExTVDEzKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0r CS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNDYt Lkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTMpCi0rCS5sb25n CS5MQ0ZJNTAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEzKQot KwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBE V19PUF9icmVnNQotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNTAtLkx0ZXh0MAkjIExvY2F0 aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTMpCi0rCS5sb25nCS5MRkU3LS5MdGV4dDAJ IyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMykKLSsJLnZhbHVlCTB4MgkjIExv Y2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNs ZWIxMjggNAotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxM U1QxMykKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDEz KQotKy5MTFNUMTQ6Ci0rCS5sb25nCS5MVkwzMy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdp biBhZGRyZXNzICgqLkxMU1QxNCkKLSsJLmxvbmcJLkxWTDM0LS5MdGV4dDAJIyBMb2NhdGlvbiBs aXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxNCkKLSsJLnZhbHVlCTB4MQkjIExvY2F0aW9uIGV4cHJl c3Npb24gc2l6ZQotKwkuYnl0ZQkweDUzCSMgRFdfT1BfcmVnMwotKwkubG9uZwkwCSMgTG9jYXRp b24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QxNCkKLSsJLmxvbmcJMAkjIExvY2F0aW9u IGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDE0KQotIAkuc2VjdGlvbgkuZGVidWdfaW5mbwot LQkubG9uZwkweDFlMwkjIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLmxvbmcJ MHgyNTIJIyBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0gCS52YWx1ZQkweDIJIyBE V0FSRiB2ZXJzaW9uIG51bWJlcgotIAkubG9uZwkuTGRlYnVnX2FiYnJldjAJIyBPZmZzZXQgSW50 byBBYmJyZXYuIFNlY3Rpb24KLSAJLmJ5dGUJMHg0CSMgUG9pbnRlciBTaXplIChpbiBieXRlcykK LUBAIC0xMjEyLDE4MiArMTM3MiwyNDUgQEAKLSAJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNv bnN0Ci0gCS51bGViMTI4IDAKLSAJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg0 ZgotLQkudWxlYjEyOCAweDYJIyAoRElFICgweDc4KSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLnVs ZWIxMjggMHgyCSMgKERJRSAoMHg3OCkgRFdfVEFHX3N0cnVjdHVyZV90eXBlKQotKwkuYXNjaWkg IkNcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4YwkjIERXX0FUX2J5dGVfc2l6ZQotKwkuYnl0 ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDE5CSMgRFdfQVRf ZGVjbF9saW5lCi0rCS5sb25nCTB4YTcJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4Mwkj IChESUUgKDB4ODIpIERXX1RBR19tZW1iZXIpCi0rCS5hc2NpaSAiaVwwIgkjIERXX0FUX25hbWUK LSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgxOQkj IERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkuYnl0ZQkweDIJ IyBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbgotKwkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191 Y29uc3QKLSsJLnVsZWIxMjggMAotKwkudWxlYjEyOCAweDMJIyAoRElFICgweDhlKSBEV19UQUdf bWVtYmVyKQotKwkuYXNjaWkgImpcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FU X2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4MTkJIyBEV19BVF9kZWNsX2xpbmUKLSsJ LmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJf bG9jYXRpb24KLSsJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4 NAotKwkudWxlYjEyOCAweDMJIyAoRElFICgweDlhKSBEV19UQUdfbWVtYmVyKQotKwkuYXNjaWkg InFcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2Vz LmMpCi0rCS5ieXRlCTB4MTkJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FU X3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24KLSsJLmJ5dGUJ MHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkwCSMgZW5k IG9mIGNoaWxkcmVuIG9mIERJRSAweDc4Ci0rCS51bGViMTI4IDB4NgkjIChESUUgKDB4YTcpIERX X1RBR19zdWJwcm9ncmFtKQotIAkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAotIAkuYXNjaWkg ImJhclwwIgkjIERXX0FUX25hbWUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVj ZXMuYykKLS0JLmJ5dGUJMHgxYgkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDFjCSMgRFdf QVRfZGVjbF9saW5lCi0gCS5ieXRlCTB4MQkjIERXX0FUX3Byb3RvdHlwZWQKLSAJLmxvbmcJLkxG QjAJIyBEV19BVF9sb3dfcGMKLSAJLmxvbmcJLkxGRTAJIyBEV19BVF9oaWdoX3BjCi0gCS5sb25n CS5MTFNUMAkjIERXX0FUX2ZyYW1lX2Jhc2UKLS0JLmxvbmcJMHg5ZQkjIERXX0FUX3NpYmxpbmcK LS0JLnVsZWIxMjggMHg3CSMgKERJRSAoMHg5MSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0r CS5sb25nCTB4Y2QJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4YzAp IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotIAkuYXNjaWkgInhcMCIJIyBEV19BVF9uYW1lCi0g CS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4MWIJIyBE V19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHgxYwkjIERXX0FUX2RlY2xfbGluZQotIAkubG9uZwkw eDQ4CSMgRFdfQVRfdHlwZQotIAkuYnl0ZQkweDIJIyBEV19BVF9sb2NhdGlvbgotIAkuYnl0ZQkw eDkxCSMgRFdfT1BfZmJyZWcKLSAJLnNsZWIxMjggMAotLQkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxk cmVuIG9mIERJRSAweDc4Ci0tCS51bGViMTI4IDB4OAkjIChESUUgKDB4OWUpIERXX1RBR19zdWJw cm9ncmFtKQotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweGE3Ci0rCS51bGVi MTI4IDB4OAkjIChESUUgKDB4Y2QpIERXX1RBR19zdWJwcm9ncmFtKQotIAkuYnl0ZQkweDEJIyBE V19BVF9leHRlcm5hbAotIAkuYXNjaWkgImYxXDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJ IyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDIxCSMgRFdfQVRfZGVjbF9s aW5lCi0rCS5ieXRlCTB4MjIJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRf cHJvdG90eXBlZAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkubG9uZwkuTEZCMQkjIERX X0FUX2xvd19wYwotIAkubG9uZwkuTEZFMQkjIERXX0FUX2hpZ2hfcGMKLSAJLmxvbmcJLkxMU1Qx CSMgRFdfQVRfZnJhbWVfYmFzZQotLQkubG9uZwkweGQ0CSMgRFdfQVRfc2libGluZwotLQkudWxl YjEyOCAweDcJIyAoRElFICgweGJhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmxvbmcJ MHgxMDMJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4ZTkpIERXX1RB R19mb3JtYWxfcGFyYW1ldGVyKQotIAkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRl CTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4MjEJIyBEV19BVF9k ZWNsX2xpbmUKLSsJLmJ5dGUJMHgyMgkjIERXX0FUX2RlY2xfbGluZQotIAkubG9uZwkweDQ4CSMg RFdfQVRfdHlwZQotIAkuYnl0ZQkweDIJIyBEV19BVF9sb2NhdGlvbgotIAkuYnl0ZQkweDkxCSMg RFdfT1BfZmJyZWcKLSAJLnNsZWIxMjggMAotLQkudWxlYjEyOCAweDkJIyAoRElFICgweGM2KSBE V19UQUdfdmFyaWFibGUpCi0rCS51bGViMTI4IDB4OQkjIChESUUgKDB4ZjUpIERXX1RBR192YXJp YWJsZSkKLSAJLmFzY2lpICJhXDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9k ZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDIzCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5i eXRlCTB4MjQJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmxvbmcJMHgyNQkjIERXX0FUX3R5cGUKLSAJ LmxvbmcJLkxMU1QyCSMgRFdfQVRfbG9jYXRpb24KLS0JLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJl biBvZiBESUUgMHg5ZQotLQkudWxlYjEyOCAweDgJIyAoRElFICgweGQ0KSBEV19UQUdfc3VicHJv Z3JhbSkKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhjZAotKwkudWxlYjEy OCAweDgJIyAoRElFICgweDEwMykgRFdfVEFHX3N1YnByb2dyYW0pCi0gCS5ieXRlCTB4MQkjIERX X0FUX2V4dGVybmFsCi0gCS5hc2NpaSAiZjJcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkj IERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4MmMJIyBEV19BVF9kZWNsX2xp bmUKLSsJLmJ5dGUJMHgyZAkjIERXX0FUX2RlY2xfbGluZQotIAkuYnl0ZQkweDEJIyBEV19BVF9w cm90b3R5cGVkCi0gCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0gCS5sb25nCS5MRkIyCSMgRFdf QVRfbG93X3BjCi0gCS5sb25nCS5MRkUyCSMgRFdfQVRfaGlnaF9wYwotIAkubG9uZwkuTExTVDMJ IyBEV19BVF9mcmFtZV9iYXNlCi0tCS5sb25nCTB4MTBhCSMgRFdfQVRfc2libGluZwotLQkudWxl YjEyOCAweDcJIyAoRElFICgweGYwKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmxvbmcJ MHgxMzkJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4MTFmKSBEV19U QUdfZm9ybWFsX3BhcmFtZXRlcikKLSAJLmFzY2lpICJrXDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0 ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDJjCSMgRFdfQVRf ZGVjbF9saW5lCi0rCS5ieXRlCTB4MmQJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmxvbmcJMHg0OAkj IERXX0FUX3R5cGUKLSAJLmJ5dGUJMHgyCSMgRFdfQVRfbG9jYXRpb24KLSAJLmJ5dGUJMHg5MQkj IERXX09QX2ZicmVnCi0gCS5zbGViMTI4IDAKLS0JLnVsZWIxMjggMHg5CSMgKERJRSAoMHhmYykg RFdfVEFHX3ZhcmlhYmxlKQotKwkudWxlYjEyOCAweDkJIyAoRElFICgweDEyYikgRFdfVEFHX3Zh cmlhYmxlKQotIAkuYXNjaWkgImFcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FU X2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4MmUJIyBEV19BVF9kZWNsX2xpbmUKLS0J LmxvbmcJMHgxMGEJIyBEV19BVF90eXBlCi0rCS5ieXRlCTB4MmYJIyBEV19BVF9kZWNsX2xpbmUK LSsJLmxvbmcJMHgxMzkJIyBEV19BVF90eXBlCi0gCS5sb25nCS5MTFNUNAkjIERXX0FUX2xvY2F0 aW9uCi0tCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4ZDQKLS0JLnVsZWIxMjgg MHhhCSMgKERJRSAoMHgxMGEpIERXX1RBR19hcnJheV90eXBlKQotKwkuYnl0ZQkwCSMgZW5kIG9m IGNoaWxkcmVuIG9mIERJRSAweDEwMwotKwkudWxlYjEyOCAweGEJIyAoRElFICgweDEzOSkgRFdf VEFHX2FycmF5X3R5cGUpCi0gCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0tCS5sb25nCTB4MTFh CSMgRFdfQVRfc2libGluZwotLQkudWxlYjEyOCAweGIJIyAoRElFICgweDExMykgRFdfVEFHX3N1 YnJhbmdlX3R5cGUpCi0tCS5sb25nCTB4MTFhCSMgRFdfQVRfdHlwZQotKwkubG9uZwkweDE0OQkj IERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHhiCSMgKERJRSAoMHgxNDIpIERXX1RBR19zdWJy YW5nZV90eXBlKQotKwkubG9uZwkweDE0OQkjIERXX0FUX3R5cGUKLSAJLmJ5dGUJMHgxCSMgRFdf QVRfdXBwZXJfYm91bmQKLS0JLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxMGEK LS0JLnVsZWIxMjggMHhjCSMgKERJRSAoMHgxMWEpIERXX1RBR19iYXNlX3R5cGUpCi0rCS5ieXRl CTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MTM5Ci0rCS51bGViMTI4IDB4YwkjIChESUUg KDB4MTQ5KSBEV19UQUdfYmFzZV90eXBlKQotIAkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUK LSAJLmJ5dGUJMHg3CSMgRFdfQVRfZW5jb2RpbmcKLS0JLnVsZWIxMjggMHg4CSMgKERJRSAoMHgx MWQpIERXX1RBR19zdWJwcm9ncmFtKQotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDE0YykgRFdf VEFHX3N1YnByb2dyYW0pCi0gCS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFsCi0gCS5hc2NpaSAi ZjNcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2Vz LmMpCi0tCS5ieXRlCTB4MzcJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHgzOAkjIERXX0FU X2RlY2xfbGluZQotIAkuYnl0ZQkweDEJIyBEV19BVF9wcm90b3R5cGVkCi0gCS5sb25nCTB4NDgJ IyBEV19BVF90eXBlCi0gCS5sb25nCS5MRkIzCSMgRFdfQVRfbG93X3BjCi0gCS5sb25nCS5MRkUz CSMgRFdfQVRfaGlnaF9wYwotIAkubG9uZwkuTExTVDUJIyBEV19BVF9mcmFtZV9iYXNlCi0tCS5s b25nCTB4MTUzCSMgRFdfQVRfc2libGluZwotLQkudWxlYjEyOCAweDcJIyAoRElFICgweDEzOSkg RFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5sb25nCTB4MTgyCSMgRFdfQVRfc2libGluZwot KwkudWxlYjEyOCAweDcJIyAoRElFICgweDE2OCkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0g CS5hc2NpaSAia1wwIgkjIERXX0FUX25hbWUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxl IChwaWVjZXMuYykKLS0JLmJ5dGUJMHgzNwkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDM4 CSMgRFdfQVRfZGVjbF9saW5lCi0gCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0gCS5ieXRlCTB4 MgkjIERXX0FUX2xvY2F0aW9uCi0gCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotIAkuc2xlYjEy OCAwCi0tCS51bGViMTI4IDB4OQkjIChESUUgKDB4MTQ1KSBEV19UQUdfdmFyaWFibGUpCi0rCS51 bGViMTI4IDB4OQkjIChESUUgKDB4MTc0KSBEV19UQUdfdmFyaWFibGUpCi0gCS5hc2NpaSAiYVww IgkjIERXX0FUX25hbWUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykK LS0JLmJ5dGUJMHgzOQkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDNhCSMgRFdfQVRfZGVj bF9saW5lCi0gCS5sb25nCTB4NGYJIyBEV19BVF90eXBlCi0gCS5sb25nCS5MTFNUNgkjIERXX0FU X2xvY2F0aW9uCi0tCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MTFkCi0tCS51 bGViMTI4IDB4OAkjIChESUUgKDB4MTUzKSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMAkj IGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxNGMKLSsJLnVsZWIxMjggMHg4CSMgKERJRSAoMHgx ODIpIERXX1RBR19zdWJwcm9ncmFtKQotIAkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAotIAku YXNjaWkgImY0XDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUg KHBpZWNlcy5jKQotLQkuYnl0ZQkweDQyCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4NDMJ IyBEV19BVF9kZWNsX2xpbmUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAotIAkubG9u ZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkubG9uZwkuTEZCNAkjIERXX0FUX2xvd19wYwotIAkubG9u ZwkuTEZFNAkjIERXX0FUX2hpZ2hfcGMKLSAJLmxvbmcJLkxMU1Q3CSMgRFdfQVRfZnJhbWVfYmFz ZQotLQkubG9uZwkweDE4OQkjIERXX0FUX3NpYmxpbmcKLS0JLnVsZWIxMjggMHg3CSMgKERJRSAo MHgxNmYpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkubG9uZwkweDFiOAkjIERXX0FUX3Np YmxpbmcKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAoMHgxOWUpIERXX1RBR19mb3JtYWxfcGFyYW1l dGVyKQotIAkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2Rl Y2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4NDIJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5 dGUJMHg0MwkjIERXX0FUX2RlY2xfbGluZQotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAku Ynl0ZQkweDIJIyBEV19BVF9sb2NhdGlvbgotIAkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSAJ LnNsZWIxMjggMAotLQkudWxlYjEyOCAweDkJIyAoRElFICgweDE3YikgRFdfVEFHX3ZhcmlhYmxl KQotKwkudWxlYjEyOCAweDkJIyAoRElFICgweDFhYSkgRFdfVEFHX3ZhcmlhYmxlKQotIAkuYXNj aWkgImFcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGll Y2VzLmMpCi0tCS5ieXRlCTB4NDQJIyBEV19BVF9kZWNsX2xpbmUKLS0JLmxvbmcJMHgxMGEJIyBE V19BVF90eXBlCi0rCS5ieXRlCTB4NDUJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHgxMzkJ IyBEV19BVF90eXBlCi0gCS5sb25nCS5MTFNUOAkjIERXX0FUX2xvY2F0aW9uCi0tCS5ieXRlCTAJ IyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MTUzCi0tCS51bGViMTI4IDB4OAkjIChESUUgKDB4 MTg5KSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBE SUUgMHgxODIKLSsJLnVsZWIxMjggMHg4CSMgKERJRSAoMHgxYjgpIERXX1RBR19zdWJwcm9ncmFt KQotIAkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAotIAkuYXNjaWkgImY1XDAiCSMgRFdfQVRf bmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkw eDRkCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4NGUJIyBEV19BVF9kZWNsX2xpbmUKLSAJ LmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQot IAkubG9uZwkuTEZCNQkjIERXX0FUX2xvd19wYwotIAkubG9uZwkuTEZFNQkjIERXX0FUX2hpZ2hf cGMKLSAJLmxvbmcJLkxMU1Q5CSMgRFdfQVRfZnJhbWVfYmFzZQotLQkubG9uZwkweDFiZgkjIERX X0FUX3NpYmxpbmcKLS0JLnVsZWIxMjggMHg3CSMgKERJRSAoMHgxYTUpIERXX1RBR19mb3JtYWxf cGFyYW1ldGVyKQotKwkubG9uZwkweDFlZQkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHg3 CSMgKERJRSAoMHgxZDQpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotIAkuYXNjaWkgImtcMCIJ IyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0t CS5ieXRlCTB4NGQJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHg0ZQkjIERXX0FUX2RlY2xf bGluZQotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkuYnl0ZQkweDIJIyBEV19BVF9sb2Nh dGlvbgotIAkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSAJLnNsZWIxMjggMAotLQkudWxlYjEy OCAweDkJIyAoRElFICgweDFiMSkgRFdfVEFHX3ZhcmlhYmxlKQotKwkudWxlYjEyOCAweDkJIyAo RElFICgweDFlMCkgRFdfVEFHX3ZhcmlhYmxlKQotIAkuYXNjaWkgImFcMCIJIyBEV19BVF9uYW1l Ci0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4NGYJ IyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHg1MAkjIERXX0FUX2RlY2xfbGluZQotIAkubG9u ZwkweDI1CSMgRFdfQVRfdHlwZQotIAkubG9uZwkuTExTVDEwCSMgRFdfQVRfbG9jYXRpb24KLS0J LmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxODkKLS0JLnVsZWIxMjggMHhkCSMg KERJRSAoMHgxYmYpIERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxk cmVuIG9mIERJRSAweDFiOAotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDFlZSkgRFdfVEFHX3N1 YnByb2dyYW0pCi0gCS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFsCi0tCS5sb25nCS5MQVNGMAkj IERXX0FUX25hbWU6ICJtYWluIgotKwkuYXNjaWkgImY2XDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0 ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDU4CSMgRFdfQVRf ZGVjbF9saW5lCi0rCS5ieXRlCTB4NTkJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmJ5dGUJMHgxCSMg RFdfQVRfcHJvdG90eXBlZAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkubG9uZwkuTEZC NgkjIERXX0FUX2xvd19wYwotIAkubG9uZwkuTEZFNgkjIERXX0FUX2hpZ2hfcGMKLSAJLmxvbmcJ LkxMU1QxMQkjIERXX0FUX2ZyYW1lX2Jhc2UKLS0JLnVsZWIxMjggMHg5CSMgKERJRSAoMHgxZDgp IERXX1RBR192YXJpYWJsZSkKLSsJLmxvbmcJMHgyMmUJIyBEV19BVF9zaWJsaW5nCi0rCS51bGVi MTI4IDB4NwkjIChESUUgKDB4MjBhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSAJLmFzY2lp ICJrXDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNl cy5jKQotLQkuYnl0ZQkweDVhCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4NTkJIyBEV19B VF9kZWNsX2xpbmUKLSAJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdf QVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJ LnVsZWIxMjggMHhkCSMgKERJRSAoMHgyMTYpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJ6 XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5j KQotKwkuYnl0ZQkweDViCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90 eXBlCi0rCS5ieXRlCTB4MTcJIyBEV19BVF9jb25zdF92YWx1ZQotKwkudWxlYjEyOCAweDkJIyAo RElFICgweDIyMCkgRFdfVEFHX3ZhcmlhYmxlKQotKwkuYXNjaWkgImFcMCIJIyBEV19BVF9uYW1l Ci0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NWMJ IyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg3OAkjIERXX0FUX3R5cGUKLSAJLmxvbmcJLkxM U1QxMgkjIERXX0FUX2xvY2F0aW9uCi0tCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElF IDB4MWJmCi0rCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MWVlCi0rCS51bGVi MTI4IDB4ZQkjIChESUUgKDB4MjJlKSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMg RFdfQVRfZXh0ZXJuYWwKLSsJLmxvbmcJLkxBU0YwCSMgRFdfQVRfbmFtZTogIm1haW4iCi0rCS5i eXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NjUJIyBEV19B VF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAotKwkubG9uZwkweDQ4 CSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTEZCNwkjIERXX0FUX2xvd19wYwotKwkubG9uZwkuTEZF NwkjIERXX0FUX2hpZ2hfcGMKLSsJLmxvbmcJLkxMU1QxMwkjIERXX0FUX2ZyYW1lX2Jhc2UKLSsJ LnVsZWIxMjggMHg5CSMgKERJRSAoMHgyNDcpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJr XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5j KQotKwkuYnl0ZQkweDY3CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90 eXBlCi0rCS5sb25nCS5MTFNUMTQJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkwCSMgZW5kIG9m IGNoaWxkcmVuIG9mIERJRSAweDIyZQotIAkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJ RSAweGIKLSAJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotIAkudWxlYjEyOCAweDEJIyAoYWJicmV2 IGNvZGUpCi1AQCAtMTU3Nyw2ICsxODAwLDIxIEBACi0gCS5ieXRlCTAKLSAJLmJ5dGUJMAotIAku dWxlYjEyOCAweGQJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MzQJIyAoVEFHOiBEV19U QUdfdmFyaWFibGUpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJ IyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxl YjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1f ZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAw eGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwku dWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgxYwkjIChEV19BVF9j b25zdF92YWx1ZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS5ieXRlCTAK LSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweGUJIyAoYWJicmV2IGNvZGUpCi0gCS51bGViMTI4IDB4 MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSAJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5f eWVzCi0gCS51bGViMTI4IDB4M2YJIyAoRFdfQVRfZXh0ZXJuYWwpCi1AQCAtMTYwMSwzNCArMTgz OSwzOCBAQAotIAkuYnl0ZQkwCi0gCS5ieXRlCTAKLSAJLnNlY3Rpb24JLmRlYnVnX3B1Ym5hbWVz LCIiLEBwcm9nYml0cwotLQkubG9uZwkweDQyCSMgTGVuZ3RoIG9mIFB1YmxpYyBOYW1lcyBJbmZv Ci0rCS5sb25nCTB4NDkJIyBMZW5ndGggb2YgUHVibGljIE5hbWVzIEluZm8KLSAJLnZhbHVlCTB4 MgkjIERXQVJGIFZlcnNpb24KLSAJLmxvbmcJLkxkZWJ1Z19pbmZvMAkjIE9mZnNldCBvZiBDb21w aWxhdGlvbiBVbml0IEluZm8KLS0JLmxvbmcJMHgxZTcJIyBDb21waWxhdGlvbiBVbml0IExlbmd0 aAotLQkubG9uZwkweDc4CSMgRElFIG9mZnNldAotKwkubG9uZwkweDI1NgkjIENvbXBpbGF0aW9u IFVuaXQgTGVuZ3RoCi0rCS5sb25nCTB4YTcJIyBESUUgb2Zmc2V0Ci0gCS5hc2NpaSAiYmFyXDAi CSMgZXh0ZXJuYWwgbmFtZQotLQkubG9uZwkweDllCSMgRElFIG9mZnNldAotKwkubG9uZwkweGNk CSMgRElFIG9mZnNldAotIAkuYXNjaWkgImYxXDAiCSMgZXh0ZXJuYWwgbmFtZQotLQkubG9uZwkw eGQ0CSMgRElFIG9mZnNldAotKwkubG9uZwkweDEwMwkjIERJRSBvZmZzZXQKLSAJLmFzY2lpICJm MlwwIgkjIGV4dGVybmFsIG5hbWUKLS0JLmxvbmcJMHgxMWQJIyBESUUgb2Zmc2V0Ci0rCS5sb25n CTB4MTRjCSMgRElFIG9mZnNldAotIAkuYXNjaWkgImYzXDAiCSMgZXh0ZXJuYWwgbmFtZQotLQku bG9uZwkweDE1MwkjIERJRSBvZmZzZXQKLSsJLmxvbmcJMHgxODIJIyBESUUgb2Zmc2V0Ci0gCS5h c2NpaSAiZjRcMCIJIyBleHRlcm5hbCBuYW1lCi0tCS5sb25nCTB4MTg5CSMgRElFIG9mZnNldAot KwkubG9uZwkweDFiOAkjIERJRSBvZmZzZXQKLSAJLmFzY2lpICJmNVwwIgkjIGV4dGVybmFsIG5h bWUKLS0JLmxvbmcJMHgxYmYJIyBESUUgb2Zmc2V0Ci0rCS5sb25nCTB4MWVlCSMgRElFIG9mZnNl dAotKwkuYXNjaWkgImY2XDAiCSMgZXh0ZXJuYWwgbmFtZQotKwkubG9uZwkweDIyZQkjIERJRSBv ZmZzZXQKLSAJLmFzY2lpICJtYWluXDAiCSMgZXh0ZXJuYWwgbmFtZQotIAkubG9uZwkwCi0gCS5z ZWN0aW9uCS5kZWJ1Z19wdWJ0eXBlcywiIixAcHJvZ2JpdHMKLS0JLmxvbmcJMHgxYQkjIExlbmd0 aCBvZiBQdWJsaWMgVHlwZSBOYW1lcyBJbmZvCi0rCS5sb25nCTB4MjAJIyBMZW5ndGggb2YgUHVi bGljIFR5cGUgTmFtZXMgSW5mbwotIAkudmFsdWUJMHgyCSMgRFdBUkYgVmVyc2lvbgotIAkubG9u ZwkuTGRlYnVnX2luZm8wCSMgT2Zmc2V0IG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbwotLQkubG9u ZwkweDFlNwkjIENvbXBpbGF0aW9uIFVuaXQgTGVuZ3RoCi0rCS5sb25nCTB4MjU2CSMgQ29tcGls YXRpb24gVW5pdCBMZW5ndGgKLSAJLmxvbmcJMHgyNQkjIERJRSBvZmZzZXQKLSAJLmFzY2lpICJB XDAiCSMgZXh0ZXJuYWwgbmFtZQotIAkubG9uZwkweDRmCSMgRElFIG9mZnNldAotIAkuYXNjaWkg IkJcMCIJIyBleHRlcm5hbCBuYW1lCi0rCS5sb25nCTB4NzgJIyBESUUgb2Zmc2V0Ci0rCS5hc2Np aSAiQ1wwIgkjIGV4dGVybmFsIG5hbWUKLSAJLmxvbmcJMAotIAkuc2VjdGlvbgkuZGVidWdfYXJh bmdlcywiIixAcHJvZ2JpdHMKLSAJLmxvbmcJMHgxYwkjIExlbmd0aCBvZiBBZGRyZXNzIFJhbmdl cyBJbmZvCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuYwkyMDEwLzA1 LzIxIDIwOjM5OjUwCTEuMQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2Vz LmMJMjAxMC8wNS8yMSAyMTowMTo0NgkxLjIKLUBAIC0yMiw2ICsyMiw3IEBACi0gCi0gc3RydWN0 IEEgeyBpbnQgaTsgaW50IGo7IH07Ci0gc3RydWN0IEIgeyBpbnQgOiA0OyBpbnQgaSA6IDEyOyBp bnQgaiA6IDEyOyBpbnQgOiA0OyB9OwotK3N0cnVjdCBDIHsgaW50IGk7IGludCBqOyBpbnQgcTsg fTsKLSAKLSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLSBiYXIgKGludCB4KQotQEAg LTg0LDYgKzg1LDE4IEBACi0gICByZXR1cm4gYS5pICsgYS5qOwkJLyogZjUgYnJlYWtwb2ludCAq LwotIH0KLSAKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludAotK2Y2IChpbnQgaykKLSt7 Ci0rICBpbnQgeiA9IDIzOwotKyAgc3RydWN0IEMgYSA9IHsgaywgaywgen07Ci0rICBhc20gKCIi IDogIityIiAoYS5pKSk7Ci0rICBhLmorKzsKLSsgIGJhciAoYS5pKTsKLSsgIGJhciAoYS5qKTsK LSsgIHJldHVybiBhLmkgKyBhLmo7CQkvKiBmNiBicmVha3BvaW50ICovCi0rfQotKwotIGludAot IG1haW4gKHZvaWQpCi0gewotQEAgLTk0LDUgKzEwNyw2IEBACi0gICBmMyAoayk7Ci0gICBmNCAo ayk7Ci0gICBmNSAoayk7Ci0rICBmNiAoayk7Ci0gICByZXR1cm4gMDsKLSB9Ci0tLS0gc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuZXhwCTIwMTAvMDUvMjEgMjE6MDA6MjcJMS4y Ci0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuZXhwCTIwMTAvMDUvMjEg MjE6MDE6NDYJMS4zCi1AQCAtNjcsNSArNjcsMjggQEAKLSAgICAgZ2RiX3Rlc3QgInByaW50IGFc WzFcXSIgIiA9IDE0IiAicHJpbnQgYVxbMVxdIGluIHBpZWNlczpmMiIKLSB9Ci0gCi0rIyBGdW5j dGlvbiBmNiB0ZXN0cyBmb3IgYW4gZW1wdHkgRFdfT1BfcGllY2UuCi0rcHJvYyBwaWVjZXNfdGVz dF9mNiB7fSB7Ci0rICAgIGdsb2JhbCBjc3JjZmlsZQotKyAgICBzZXQgbGluZSBbZ2RiX2dldF9s aW5lX251bWJlciAiZjYgYnJlYWtwb2ludCIgJGNzcmNmaWxlXQotKyAgICBnZGJfdGVzdCAiYnJl YWsgcGllY2VzLmM6JGxpbmUiICJCcmVha3BvaW50IDQuKiIgXAotKyAgICAgICAic2V0IGY2IGJy ZWFrcG9pbnQgZm9yIHBpZWNlcyIKLSsgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNv bnRpbnVlIHRvIGY2IGJyZWFrcG9pbnQgZm9yIHBpZWNlcyIKLSsgICAgZ2RiX3Rlc3QgInByaW50 IGEiIFwKLSsJIndhcm5pbmc6IGJ5dGVzIC4qIGluIGNvbXB1dGVkIG9iamVjdCB3ZXJlLiogPSB7 aSA9IDcsIGogPSA4LCBxID0gMH0iIFwKLSsJInByaW50IGEgd2l0aCBvcHRpbWl6ZWQgb3V0IHBp ZWNlIgotKyAgICAjIE5vdGU6IG5vIHdhcm5pbmcgZm9yIHRoaXMgY2FzZS4KLSsgICAgZ2RiX3Rl c3RfbXVsdGlwbGUgInByaW50IGEuaSIgXAotKwkicHJpbnQgYS5pIHdpdGggb3B0aW1pemVkIG91 dCBwaWVjZSIgewotKwkgICAgLXJlICJ3YXJuaW5nOiBzb21lIGJpdHMgaW4gY29tcHV0ZWQgb2Jq ZWN0IiB7Ci0rCQlmYWlsICJwcmludCBhLmkgd2l0aCBvcHRpbWl6ZWQgb3V0IHBpZWNlIgotKwkg ICAgfQotKwkgICAgLXJlICIgPSA3IiB7Ci0rCQlwYXNzICJwcmludCBhLmkgd2l0aCBvcHRpbWl6 ZWQgb3V0IHBpZWNlIgotKwkgICAgfQotKwl9Ci0rfQotKwotIHBpZWNlc190ZXN0X2YxCi0gcGll Y2VzX3Rlc3RfZjIKLStwaWVjZXNfdGVzdF9mNgoKZGlmZiAtLWdpdCBhL2dkYi1iejU4OTQ2Ny1w aWVjZXM0b2Y0LnBhdGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlczRvZjQucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZmZiNDEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTg5NDY3 LXBpZWNlczRvZjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MjAgKzAsMCBAQAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wNS9tc2cwMDE5MS5odG1sCi0KLSMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMTE4MzIKLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIxOjEzOjEwCTEuMTE4MzMKLSMjIC0xLDUgKzEsMjAgQEAK LSAyMDEwLTA1LTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0rCSogZHdh cmYybG9jLmMgKGV4dHJhY3RfYml0c19wcmltaXRpdmUpOiBOZXcgZnVuY3Rpb24uCi0rCShleHRy YWN0X2JpdHMpOiBMaWtld2lzZS4KLSsJKGluc2VydF9iaXRzKTogTGlrZXdpc2UuCi0rCShjb3B5 X2JpdHdpc2UpOiBMaWtld2lzZS4KLSsJKHJlYWRfcGllY2VkX3ZhbHVlKTogRG8gYWxsIG9wZXJh dGlvbnMgaW4gYml0cy4KLSsJKHdyaXRlX3BpZWNlZF92YWx1ZSk6IExpa2V3aXNlLgotKwkqIGR3 YXJmMmV4cHIuaCAoc3RydWN0IGR3YXJmX2V4cHJfcGllY2UpIDxvZmZzZXQ+OiBOZXcgZmllbGQu Ci0rCSogZHdhcmYyZXhwci5jIChhZGRfcGllY2UpOiBOZXcgYXJndW1lbnRzIGJpdF9waWVjZSwg b2Zmc2V0LgotKwlBbHdheXMgdXNlIHhyZWFsbG9jIHRvIHJlc2l6ZSBwaWVjZSBhcnJheS4KLSsJ KGV4ZWN1dGVfc3RhY2tfb3ApIDxEV19PUF9yZWcwPjogSGFuZGxlIERXX09QX2JpdF9waWVjZS4K LSsJPERXX09QX3BpZWNlPjogVXBkYXRlLgotKwk8RFdfT1BfYml0X3BpZWNlPjogTmV3IGNhc2Uu Ci0rCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDUvMjEgMjE6MDE6NDYJ MS4yMjc1Ci0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDUvMjEgMjE6MTM6 MTMJMS4yMjc2Ci0jIyAtMSw1ICsxLDEyIEBACi0gMjAxMC0wNS0yMSAgVG9tIFRyb21leSAgPHRy b21leUByZWRoYXQuY29tPgotIAotKwkqIGdkYi5kd2FyZjIvcGllY2VzLmV4cCAocGllY2VzX3Rl c3RfZjMpOiBOZXcgcHJvYy4KLSsJQ2FsbCBpdC4KLSsJKiBnZGIuZHdhcmYyL3BpZWNlcy5TOiBV cGRhdGUuCi0rCSogZ2RiLmR3YXJmMi9waWVjZXMuYyAoc3RydWN0IEIpOiBSZW1vdmUgaW5pdGlh bCBmaWVsZC4KLSsKLS0tLSBzcmMvZ2RiL2R3YXJmMmV4cHIuYwkyMDEwLzA1LzIxIDIxOjAxOjQ2 CTEuNDMKLSsrKyBzcmMvZ2RiL2R3YXJmMmV4cHIuYwkyMDEwLzA1LzIxIDIxOjEzOjEwCTEuNDQK LUBAIC0xNTMsMjMgKzE1MywyMSBAQAotIAotIC8qIEFkZCBhIG5ldyBwaWVjZSB0byBDVFgncyBw aWVjZSBsaXN0LiAgKi8KLSBzdGF0aWMgdm9pZAotLWFkZF9waWVjZSAoc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4LCBVTE9OR0VTVCBzaXplKQotK2FkZF9waWVjZSAoc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dCAqY3R4LCBVTE9OR0VTVCBzaXplLCBVTE9OR0VTVCBvZmZzZXQpCi0gewot ICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnA7Ci0gCi0gICBjdHgtPm51bV9waWVjZXMrKzsK LSAKLS0gIGlmIChjdHgtPnBpZWNlcykKLS0gICAgY3R4LT5waWVjZXMgPSB4cmVhbGxvYyAoY3R4 LT5waWVjZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgtPm51bV9waWVjZXMK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmZfZXhw cl9waWVjZSkpKTsKLS0gIGVsc2UKLS0gICAgY3R4LT5waWVjZXMgPSB4bWFsbG9jIChjdHgtPm51 bV9waWVjZXMKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemVvZiAoc3RydWN0IGR3 YXJmX2V4cHJfcGllY2UpKTsKLSsgIGN0eC0+cGllY2VzID0geHJlYWxsb2MgKGN0eC0+cGllY2Vz LAotKwkJCSAgKGN0eC0+bnVtX3BpZWNlcwotKwkJCSAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmZf ZXhwcl9waWVjZSkpKTsKLSAKLSAgIHAgPSAmY3R4LT5waWVjZXNbY3R4LT5udW1fcGllY2VzIC0g MV07Ci0gICBwLT5sb2NhdGlvbiA9IGN0eC0+bG9jYXRpb247Ci0gICBwLT5zaXplID0gc2l6ZTsK LSsgIHAtPm9mZnNldCA9IG9mZnNldDsKLSsKLSAgIGlmIChwLT5sb2NhdGlvbiA9PSBEV0FSRl9W QUxVRV9MSVRFUkFMKQotICAgICB7Ci0gICAgICAgcC0+di5saXRlcmFsLmRhdGEgPSBjdHgtPmRh dGE7Ci1AQCAtNDk5LDkgKzQ5NywxMSBAQAotIAljYXNlIERXX09QX3JlZzMxOgotIAkgIGlmIChv cF9wdHIgIT0gb3BfZW5kIAotIAkgICAgICAmJiAqb3BfcHRyICE9IERXX09QX3BpZWNlCi0rCSAg ICAgICYmICpvcF9wdHIgIT0gRFdfT1BfYml0X3BpZWNlCi0gCSAgICAgICYmICpvcF9wdHIgIT0g RFdfT1BfR05VX3VuaW5pdCkKLSAJICAgIGVycm9yIChfKCJEV0FSRi0yIGV4cHJlc3Npb24gZXJy b3I6IERXX09QX3JlZyBvcGVyYXRpb25zIG11c3QgYmUgIgotLQkJICAgInVzZWQgZWl0aGVyIGFs b25lIG9yIGluIGNvbmp1Y3Rpb24gd2l0aCBEV19PUF9waWVjZS4iKSk7Ci0rCQkgICAgICJ1c2Vk IGVpdGhlciBhbG9uZSBvciBpbiBjb25qdWN0aW9uIHdpdGggRFdfT1BfcGllY2UgIgotKwkJICAg ICAib3IgRFdfT1BfYml0X3BpZWNlLiIpKTsKLSAKLSAJICByZXN1bHQgPSBvcCAtIERXX09QX3Jl ZzA7Ci0gCSAgY3R4LT5sb2NhdGlvbiA9IERXQVJGX1ZBTFVFX1JFR0lTVEVSOwotQEAgLTg3Miw3 ICs4NzIsNyBAQAotIAotICAgICAgICAgICAgIC8qIFJlY29yZCB0aGUgcGllY2UuICAqLwotICAg ICAgICAgICAgIG9wX3B0ciA9IHJlYWRfdWxlYjEyOCAob3BfcHRyLCBvcF9lbmQsICZzaXplKTsK LS0JICAgIGFkZF9waWVjZSAoY3R4LCBzaXplKTsKLSsJICAgIGFkZF9waWVjZSAoY3R4LCA4ICog c2l6ZSwgMCk7Ci0gCi0gICAgICAgICAgICAgLyogUG9wIG9mZiB0aGUgYWRkcmVzcy9yZWdudW0s IGFuZCByZXNldCB0aGUgbG9jYXRpb24KLSAJICAgICAgIHR5cGUuICAqLwotQEAgLTg4Myw2ICs4 ODMsMjQgQEAKLSAgICAgICAgICAgfQotICAgICAgICAgICBnb3RvIG5vX3B1c2g7Ci0gCi0rCWNh c2UgRFdfT1BfYml0X3BpZWNlOgotKwkgIHsKLSsJICAgIFVMT05HRVNUIHNpemUsIG9mZnNldDsK LSsKLSsgICAgICAgICAgICAvKiBSZWNvcmQgdGhlIHBpZWNlLiAgKi8KLSsJICAgIG9wX3B0ciA9 IHJlYWRfdWxlYjEyOCAob3BfcHRyLCBvcF9lbmQsICZzaXplKTsKLSsJICAgIG9wX3B0ciA9IHJl YWRfdWxlYjEyOCAob3BfcHRyLCBvcF9lbmQsICZvZmZzZXQpOwotKwkgICAgYWRkX3BpZWNlIChj dHgsIHNpemUsIG9mZnNldCk7Ci0rCi0rICAgICAgICAgICAgLyogUG9wIG9mZiB0aGUgYWRkcmVz cy9yZWdudW0sIGFuZCByZXNldCB0aGUgbG9jYXRpb24KLSsJICAgICAgIHR5cGUuICAqLwotKwkg ICAgaWYgKGN0eC0+bG9jYXRpb24gIT0gRFdBUkZfVkFMVUVfTElURVJBTAotKwkJJiYgY3R4LT5s b2NhdGlvbiAhPSBEV0FSRl9WQUxVRV9PUFRJTUlaRURfT1VUKQotKwkgICAgICBkd2FyZl9leHBy X3BvcCAoY3R4KTsKLSsgICAgICAgICAgICBjdHgtPmxvY2F0aW9uID0gRFdBUkZfVkFMVUVfTUVN T1JZOwotKwkgIH0KLSsJICBnb3RvIG5vX3B1c2g7Ci0rCi0gCWNhc2UgRFdfT1BfR05VX3VuaW5p dDoKLSAJICBpZiAob3BfcHRyICE9IG9wX2VuZCkKLSAJICAgIGVycm9yIChfKCJEV0FSRi0yIGV4 cHJlc3Npb24gZXJyb3I6IERXX09QX0dOVV91bmluaXQgbXVzdCBhbHdheXMgIgotLS0tIHNyYy9n ZGIvZHdhcmYyZXhwci5oCTIwMTAvMDUvMjEgMjE6MDE6NDYJMS4yMQotKysrIHNyYy9nZGIvZHdh cmYyZXhwci5oCTIwMTAvMDUvMjEgMjE6MTM6MTEJMS4yMgotQEAgLTE1NSw3ICsxNTUsNyBAQAot IH07Ci0gCi0gCi0tLyogQSBwaWVjZSBvZiBhbiBvYmplY3QsIGFzIHJlY29yZGVkIGJ5IERXX09Q X3BpZWNlLiAgKi8KLSsvKiBBIHBpZWNlIG9mIGFuIG9iamVjdCwgYXMgcmVjb3JkZWQgYnkgRFdf T1BfcGllY2Ugb3IgRFdfT1BfYml0X3BpZWNlLiAgKi8KLSBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVj ZQotIHsKLSAgIGVudW0gZHdhcmZfdmFsdWVfbG9jYXRpb24gbG9jYXRpb247Ci1AQCAtMTgxLDgg KzE4MSwxMCBAQAotICAgICB9IGxpdGVyYWw7Ci0gICB9IHY7Ci0gCi0tICAvKiBUaGUgbGVuZ3Ro IG9mIHRoZSBwaWVjZSwgaW4gYnl0ZXMuICAqLwotKyAgLyogVGhlIGxlbmd0aCBvZiB0aGUgcGll Y2UsIGluIGJpdHMuICAqLwotICAgVUxPTkdFU1Qgc2l6ZTsKLSsgIC8qIFRoZSBwaWVjZSBvZmZz ZXQsIGluIGJpdHMuICAqLwotKyAgVUxPTkdFU1Qgb2Zmc2V0OwotIH07Ci0gCi0gc3RydWN0IGR3 YXJmX2V4cHJfY29udGV4dCAqbmV3X2R3YXJmX2V4cHJfY29udGV4dCAodm9pZCk7Ci0tLS0gc3Jj L2dkYi9kd2FyZjJsb2MuYwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuODAKLSsrKyBzcmMvZ2RiL2R3 YXJmMmxvYy5jCTIwMTAvMDUvMjEgMjE6MTM6MTEJMS44MQotQEAgLTI1OSw1MiArMjU5LDI0NSBA QAotICAgcmV0dXJuIGM7Ci0gfQotIAotKy8qIFRoZSBsb3dlc3QtbGV2ZWwgZnVuY3Rpb24gdG8g ZXh0cmFjdCBiaXRzIGZyb20gYSBieXRlIGJ1ZmZlci4KLSsgICBTT1VSQ0UgaXMgdGhlIGJ1ZmZl ci4gIEl0IGlzIHVwZGF0ZWQgaWYgd2UgcmVhZCB0byB0aGUgZW5kIG9mIGEKLSsgICBieXRlLgot KyAgIFNPVVJDRV9PRkZTRVRfQklUUyBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBiaXQgdG8g cmVhZC4gIEl0IGlzCi0rICAgdXBkYXRlZCB0byByZWZsZWN0IHRoZSBudW1iZXIgb2YgYml0cyBh Y3R1YWxseSByZWFkLgotKyAgIE5CSVRTIGlzIHRoZSBudW1iZXIgb2YgYml0cyB3ZSB3YW50IHRv IHJlYWQuICBJdCBpcyB1cGRhdGVkIHRvCi0rICAgcmVmbGVjdCB0aGUgbnVtYmVyIG9mIGJpdHMg YWN0dWFsbHkgcmVhZC4gIFRoaXMgZnVuY3Rpb24gbWF5IHJlYWQKLSsgICBmZXdlciBiaXRzLgot KyAgIEJJVFNfQklHX0VORElBTiBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIGdkYmFyY2guCi0rICAg VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBleHRyYWN0ZWQgYml0cy4gICovCi0rCi0rc3RhdGlj IHVuc2lnbmVkIGludAotK2V4dHJhY3RfYml0c19wcmltaXRpdmUgKGNvbnN0IGdkYl9ieXRlICoq c291cmNlLAotKwkJCXVuc2lnbmVkIGludCAqc291cmNlX29mZnNldF9iaXRzLAotKwkJCWludCAq bmJpdHMsIGludCBiaXRzX2JpZ19lbmRpYW4pCi0rewotKyAgdW5zaWduZWQgaW50IGF2YWlsLCBt YXNrLCBkYXR1bTsKLSsKLSsgIGdkYl9hc3NlcnQgKCpzb3VyY2Vfb2Zmc2V0X2JpdHMgPCA4KTsK LSsKLSsgIGF2YWlsID0gOCAtICpzb3VyY2Vfb2Zmc2V0X2JpdHM7Ci0rICBpZiAoYXZhaWwgPiAq bmJpdHMpCi0rICAgIGF2YWlsID0gKm5iaXRzOwotKwotKyAgbWFzayA9ICgxIDw8IGF2YWlsKSAt IDE7Ci0rICBkYXR1bSA9ICoqc291cmNlOwotKyAgaWYgKGJpdHNfYmlnX2VuZGlhbikKLSsgICAg ZGF0dW0gPj49IDggLSAoKnNvdXJjZV9vZmZzZXRfYml0cyArICpuYml0cyk7Ci0rICBlbHNlCi0r ICAgIGRhdHVtID4+PSAqc291cmNlX29mZnNldF9iaXRzOwotKyAgZGF0dW0gJj0gbWFzazsKLSsK LSsgICpuYml0cyAtPSBhdmFpbDsKLSsgICpzb3VyY2Vfb2Zmc2V0X2JpdHMgKz0gYXZhaWw7Ci0r ICBpZiAoKnNvdXJjZV9vZmZzZXRfYml0cyA+PSA4KQotKyAgICB7Ci0rICAgICAgKnNvdXJjZV9v ZmZzZXRfYml0cyAtPSA4OwotKyAgICAgICsrKnNvdXJjZTsKLSsgICAgfQotKwotKyAgcmV0dXJu IGRhdHVtOwotK30KLSsKLSsvKiBFeHRyYWN0IHNvbWUgYml0cyBmcm9tIGEgc291cmNlIGJ1ZmZl ciBhbmQgbW92ZSBmb3J3YXJkIGluIHRoZQotKyAgIGJ1ZmZlci4KLSsgICAKLSsgICBTT1VSQ0Ug aXMgdGhlIHNvdXJjZSBidWZmZXIuICBJdCBpcyB1cGRhdGVkIGFzIGJ5dGVzIGFyZSByZWFkLgot KyAgIFNPVVJDRV9PRkZTRVRfQklUUyBpcyB0aGUgb2Zmc2V0IGludG8gU09VUkNFLiAgSXQgaXMg dXBkYXRlZCBhcwotKyAgIGJpdHMgYXJlIHJlYWQuCi0rICAgTkJJVFMgaXMgdGhlIG51bWJlciBv ZiBiaXRzIHRvIHJlYWQuCi0rICAgQklUU19CSUdfRU5ESUFOIGlzIHRha2VuIGRpcmVjdGx5IGZy b20gZ2RiYXJjaC4KLSsgICAKLSsgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGJpdHMgdGhh dCB3ZXJlIHJlYWQuICAqLwotKwotK3N0YXRpYyB1bnNpZ25lZCBpbnQKLStleHRyYWN0X2JpdHMg KGNvbnN0IGdkYl9ieXRlICoqc291cmNlLCB1bnNpZ25lZCBpbnQgKnNvdXJjZV9vZmZzZXRfYml0 cywKLSsJICAgICAgaW50IG5iaXRzLCBpbnQgYml0c19iaWdfZW5kaWFuKQotK3sKLSsgIHVuc2ln bmVkIGludCBkYXR1bTsKLSsKLSsgIGdkYl9hc3NlcnQgKG5iaXRzID4gMCAmJiBuYml0cyA8PSA4 KTsKLSsKLSsgIGRhdHVtID0gZXh0cmFjdF9iaXRzX3ByaW1pdGl2ZSAoc291cmNlLCBzb3VyY2Vf b2Zmc2V0X2JpdHMsICZuYml0cywKLSsJCQkJICBiaXRzX2JpZ19lbmRpYW4pOwotKyAgaWYgKG5i aXRzID4gMCkKLSsgICAgewotKyAgICAgIHVuc2lnbmVkIGludCBtb3JlOwotKwotKyAgICAgIG1v cmUgPSBleHRyYWN0X2JpdHNfcHJpbWl0aXZlIChzb3VyY2UsIHNvdXJjZV9vZmZzZXRfYml0cywg Jm5iaXRzLAotKwkJCQkgICAgIGJpdHNfYmlnX2VuZGlhbik7Ci0rICAgICAgaWYgKGJpdHNfYmln X2VuZGlhbikKLSsJZGF0dW0gPDw9IG5iaXRzOwotKyAgICAgIGVsc2UKLSsJbW9yZSA8PD0gbmJp dHM7Ci0rICAgICAgZGF0dW0gfD0gbW9yZTsKLSsgICAgfQotKwotKyAgcmV0dXJuIGRhdHVtOwot K30KLSsKLSsvKiBXcml0ZSBzb21lIGJpdHMgaW50byBhIGJ1ZmZlciBhbmQgbW92ZSBmb3J3YXJk IGluIHRoZSBidWZmZXIuCi0rICAgCi0rICAgREFUVU0gaXMgdGhlIGJpdHMgdG8gd3JpdGUuICBU aGUgbG93LW9yZGVyIGJpdHMgb2YgREFUVU0gYXJlIHVzZWQuCi0rICAgREVTVCBpcyB0aGUgZGVz dGluYXRpb24gYnVmZmVyLiAgSXQgaXMgdXBkYXRlZCBhcyBieXRlcyBhcmUKLSsgICB3cml0dGVu LgotKyAgIERFU1RfT0ZGU0VUX0JJVFMgaXMgdGhlIGJpdCBvZmZzZXQgaW4gREVTVCBhdCB3aGlj aCB3cml0aW5nIGlzCi0rICAgZG9uZS4KLSsgICBOQklUUyBpcyB0aGUgbnVtYmVyIG9mIHZhbGlk IGJpdHMgaW4gREFUVU0uCi0rICAgQklUU19CSUdfRU5ESUFOIGlzIHRha2VuIGRpcmVjdGx5IGZy b20gZ2RiYXJjaC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbnNlcnRfYml0cyAodW5zaWduZWQg aW50IGRhdHVtLAotKwkgICAgIGdkYl9ieXRlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdF9vZmZz ZXRfYml0cywKLSsJICAgICBpbnQgbmJpdHMsIGludCBiaXRzX2JpZ19lbmRpYW4pCi0rewotKyAg dW5zaWduZWQgaW50IG1hc2s7Ci0rCi0rICBnZGJfYXNzZXJ0IChkZXN0X29mZnNldF9iaXRzID49 IDAgJiYgZGVzdF9vZmZzZXRfYml0cyArIG5iaXRzIDw9IDgpOwotKwotKyAgbWFzayA9ICgxIDw8 IG5iaXRzKSAtIDE7Ci0rICBpZiAoYml0c19iaWdfZW5kaWFuKQotKyAgICB7Ci0rICAgICAgZGF0 dW0gPDw9IDggLSAoZGVzdF9vZmZzZXRfYml0cyArIG5iaXRzKTsKLSsgICAgICBtYXNrIDw8PSA4 IC0gKGRlc3Rfb2Zmc2V0X2JpdHMgKyBuYml0cyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewot KyAgICAgIGRhdHVtIDw8PSBkZXN0X29mZnNldF9iaXRzOwotKyAgICAgIG1hc2sgPDw9IGRlc3Rf b2Zmc2V0X2JpdHM7Ci0rICAgIH0KLSsKLSsgIGdkYl9hc3NlcnQgKChkYXR1bSAmIH5tYXNrKSA9 PSAwKTsKLSsKLSsgICpkZXN0ID0gKCpkZXN0ICYgfm1hc2spIHwgZGF0dW07Ci0rfQotKwotKy8q IENvcHkgYml0cyBmcm9tIGEgc291cmNlIHRvIGEgZGVzdGluYXRpb24uCi0rICAgCi0rICAgREVT VCBpcyB3aGVyZSB0aGUgYml0cyBzaG91bGQgYmUgd3JpdHRlbi4KLSsgICBERVNUX09GRlNFVF9C SVRTIGlzIHRoZSBiaXQgb2Zmc2V0IGludG8gREVTVC4KLSsgICBTT1VSQ0UgaXMgdGhlIHNvdXJj ZSBvZiBiaXRzLgotKyAgIFNPVVJDRV9PRkZTRVRfQklUUyBpcyB0aGUgYml0IG9mZnNldCBpbnRv IFNPVVJDRS4KLSsgICBCSVRfQ09VTlQgaXMgdGhlIG51bWJlciBvZiBiaXRzIHRvIGNvcHkuCi0r ICAgQklUU19CSUdfRU5ESUFOIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gZ2RiYXJjaC4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStjb3B5X2JpdHdpc2UgKGdkYl9ieXRlICpkZXN0LCB1bnNpZ25lZCBp bnQgZGVzdF9vZmZzZXRfYml0cywKLSsJICAgICAgY29uc3QgZ2RiX2J5dGUgKnNvdXJjZSwgdW5z aWduZWQgaW50IHNvdXJjZV9vZmZzZXRfYml0cywKLSsJICAgICAgdW5zaWduZWQgaW50IGJpdF9j b3VudCwKLSsJICAgICAgaW50IGJpdHNfYmlnX2VuZGlhbikKLSt7Ci0rICB1bnNpZ25lZCBpbnQg ZGVzdF9hdmFpbDsKLSsgIGludCBkYXR1bTsKLSsKLSsgIC8qIFJlZHVjZSBldmVyeXRoaW5nIHRv IGJ5dGUtc2l6ZSBwaWVjZXMuICAqLwotKyAgZGVzdCArPSBkZXN0X29mZnNldF9iaXRzIC8gODsK LSsgIGRlc3Rfb2Zmc2V0X2JpdHMgJT0gODsKLSsgIHNvdXJjZSArPSBzb3VyY2Vfb2Zmc2V0X2Jp dHMgLyA4OwotKyAgc291cmNlX29mZnNldF9iaXRzICU9IDg7Ci0rCi0rICBkZXN0X2F2YWlsID0g OCAtIGRlc3Rfb2Zmc2V0X2JpdHMgJSA4OwotKwotKyAgLyogU2VlIGlmIHdlIGNhbiBmaWxsIHRo ZSBmaXJzdCBkZXN0aW5hdGlvbiBieXRlLiAgKi8KLSsgIGlmIChkZXN0X2F2YWlsIDwgYml0X2Nv dW50KQotKyAgICB7Ci0rICAgICAgZGF0dW0gPSBleHRyYWN0X2JpdHMgKCZzb3VyY2UsICZzb3Vy Y2Vfb2Zmc2V0X2JpdHMsIGRlc3RfYXZhaWwsCi0rCQkJICAgIGJpdHNfYmlnX2VuZGlhbik7Ci0r ICAgICAgaW5zZXJ0X2JpdHMgKGRhdHVtLCBkZXN0LCBkZXN0X29mZnNldF9iaXRzLCBkZXN0X2F2 YWlsLCBiaXRzX2JpZ19lbmRpYW4pOwotKyAgICAgICsrZGVzdDsKLSsgICAgICBkZXN0X29mZnNl dF9iaXRzID0gMDsKLSsgICAgICBiaXRfY291bnQgLT0gZGVzdF9hdmFpbDsKLSsgICAgfQotKwot KyAgLyogTm93LCBlaXRoZXIgREVTVF9PRkZTRVRfQklUUyBpcyBieXRlLWFsaWduZWQsIG9yIHdl IGhhdmUgZmV3ZXIKLSsgICAgIHRoYW4gOCBiaXRzIHJlbWFpbmluZy4gICovCi0rICBnZGJfYXNz ZXJ0IChkZXN0X29mZnNldF9iaXRzICUgOCA9PSAwIHx8IGJpdF9jb3VudCA8IDgpOwotKyAgZm9y ICg7IGJpdF9jb3VudCA+PSA4OyBiaXRfY291bnQgLT0gOCkKLSsgICAgewotKyAgICAgIGRhdHVt ID0gZXh0cmFjdF9iaXRzICgmc291cmNlLCAmc291cmNlX29mZnNldF9iaXRzLCA4LCBiaXRzX2Jp Z19lbmRpYW4pOwotKyAgICAgICpkZXN0KysgPSAoZ2RiX2J5dGUpIGRhdHVtOwotKyAgICB9Ci0r Ci0rICAvKiBGaW5hbGx5LCB3ZSBtYXkgaGF2ZSBhIGZldyBsZWZ0b3ZlciBiaXRzLiAgKi8KLSsg IGdkYl9hc3NlcnQgKGJpdF9jb3VudCA8PSA4IC0gZGVzdF9vZmZzZXRfYml0cyAlIDgpOwotKyAg aWYgKGJpdF9jb3VudCA+IDApCi0rICAgIHsKLSsgICAgICBkYXR1bSA9IGV4dHJhY3RfYml0cyAo JnNvdXJjZSwgJnNvdXJjZV9vZmZzZXRfYml0cywgYml0X2NvdW50LAotKwkJCSAgICBiaXRzX2Jp Z19lbmRpYW4pOwotKyAgICAgIGluc2VydF9iaXRzIChkYXR1bSwgZGVzdCwgZGVzdF9vZmZzZXRf Yml0cywgYml0X2NvdW50LCBiaXRzX2JpZ19lbmRpYW4pOwotKyAgICB9Ci0rfQotKwotIHN0YXRp YyB2b2lkCi0gcmVhZF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdikKLSB7Ci0gICBpbnQg aTsKLSAgIGxvbmcgb2Zmc2V0ID0gMDsKLS0gIFVMT05HRVNUIGJ5dGVzX3RvX3NraXA7Ci0rICBV TE9OR0VTVCBiaXRzX3RvX3NraXA7Ci0gICBnZGJfYnl0ZSAqY29udGVudHM7Ci0gICBzdHJ1Y3Qg cGllY2VfY2xvc3VyZSAqYyA9IChzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqKSB2YWx1ZV9jb21wdXRl ZF9jbG9zdXJlICh2KTsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGZyYW1lX2ZpbmRf YnlfaWQgKFZBTFVFX0ZSQU1FX0lEICh2KSk7Ci0gICBzaXplX3QgdHlwZV9sZW47Ci0rICBzaXpl X3QgYnVmZmVyX3NpemUgPSAwOwotKyAgY2hhciAqYnVmZmVyID0gTlVMTDsKLSsgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwOwotKyAgaW50IGJpdHNfYmlnX2VuZGlhbgotKyAgICA9IGdkYmFyY2hf Yml0c19iaWdfZW5kaWFuIChnZXRfdHlwZV9hcmNoICh2YWx1ZV90eXBlICh2KSkpOwotIAotICAg aWYgKHZhbHVlX3R5cGUgKHYpICE9IHZhbHVlX2VuY2xvc2luZ190eXBlICh2KSkKLSAgICAgaW50 ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLSAJCSAgICBfKCJTaG91bGQgbm90IGJl IGFibGUgdG8gY3JlYXRlIGEgbGF6eSB2YWx1ZSB3aXRoICIKLSAJCSAgICAgICJhbiBlbmNsb3Np bmcgdHlwZSIpKTsKLSAKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9j b250ZW50cywgJmJ1ZmZlcik7Ci0rCi0gICBjb250ZW50cyA9IHZhbHVlX2NvbnRlbnRzX3JhdyAo dik7Ci0tICBieXRlc190b19za2lwID0gdmFsdWVfb2Zmc2V0ICh2KTsKLS0gIHR5cGVfbGVuID0g VFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKHYpKTsKLSsgIGJpdHNfdG9fc2tpcCA9IDggKiB2YWx1 ZV9vZmZzZXQgKHYpOwotKyAgdHlwZV9sZW4gPSA4ICogVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUg KHYpKTsKLSsKLSAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlcyAmJiBvZmZzZXQgPCB0eXBl X2xlbjsgaSsrKQotICAgICB7Ci0gICAgICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnAgPSAm Yy0+cGllY2VzW2ldOwotLSAgICAgIHNpemVfdCB0aGlzX3NpemU7Ci0tICAgICAgbG9uZyBkZXN0 X29mZnNldCwgc291cmNlX29mZnNldDsKLS0KLS0gICAgICBpZiAoYnl0ZXNfdG9fc2tpcCA+IDAg JiYgYnl0ZXNfdG9fc2tpcCA+PSBwLT5zaXplKQotKyAgICAgIHNpemVfdCB0aGlzX3NpemUsIHRo aXNfc2l6ZV9iaXRzOwotKyAgICAgIGxvbmcgZGVzdF9vZmZzZXRfYml0cywgc291cmNlX29mZnNl dF9iaXRzLCBzb3VyY2Vfb2Zmc2V0OwotKyAgICAgIGdkYl9ieXRlICppbnRlcm1lZGlhdGVfYnVm ZmVyOwotKwotKyAgICAgIC8qIENvbXB1dGUgc2l6ZSwgc291cmNlLCBhbmQgZGVzdGluYXRpb24g b2Zmc2V0cyBmb3IgY29weWluZywgaW4KLSsJIGJpdHMuICAqLwotKyAgICAgIHRoaXNfc2l6ZV9i aXRzID0gcC0+c2l6ZTsKLSsgICAgICBpZiAoYml0c190b19za2lwID4gMCAmJiBiaXRzX3RvX3Nr aXAgPj0gdGhpc19zaXplX2JpdHMpCi0gCXsKLS0JICBieXRlc190b19za2lwIC09IHAtPnNpemU7 Ci0rCSAgYml0c190b19za2lwIC09IHRoaXNfc2l6ZV9iaXRzOwotIAkgIGNvbnRpbnVlOwotIAl9 Ci0tICAgICAgdGhpc19zaXplID0gcC0+c2l6ZTsKLS0gICAgICBpZiAodGhpc19zaXplID4gdHlw ZV9sZW4gLSBvZmZzZXQpCi0tCXRoaXNfc2l6ZSA9IHR5cGVfbGVuIC0gb2Zmc2V0OwotLSAgICAg IGlmIChieXRlc190b19za2lwID4gMCkKLS0JewotLQkgIGRlc3Rfb2Zmc2V0ID0gMDsKLS0JICBz b3VyY2Vfb2Zmc2V0ID0gYnl0ZXNfdG9fc2tpcDsKLS0JICB0aGlzX3NpemUgLT0gYnl0ZXNfdG9f c2tpcDsKLS0JICBieXRlc190b19za2lwID0gMDsKLSsgICAgICBpZiAodGhpc19zaXplX2JpdHMg PiB0eXBlX2xlbiAtIG9mZnNldCkKLSsJdGhpc19zaXplX2JpdHMgPSB0eXBlX2xlbiAtIG9mZnNl dDsKLSsgICAgICBpZiAoYml0c190b19za2lwID4gMCkKLSsJewotKwkgIGRlc3Rfb2Zmc2V0X2Jp dHMgPSAwOwotKwkgIHNvdXJjZV9vZmZzZXRfYml0cyA9IGJpdHNfdG9fc2tpcDsKLSsJICB0aGlz X3NpemVfYml0cyAtPSBiaXRzX3RvX3NraXA7Ci0rCSAgYml0c190b19za2lwID0gMDsKLSAJfQot ICAgICAgIGVsc2UKLSAJewotLQkgIGRlc3Rfb2Zmc2V0ID0gb2Zmc2V0OwotLQkgIHNvdXJjZV9v ZmZzZXQgPSAwOwotKwkgIGRlc3Rfb2Zmc2V0X2JpdHMgPSBvZmZzZXQ7Ci0rCSAgc291cmNlX29m ZnNldF9iaXRzID0gMDsKLSsJfQotKwotKyAgICAgIHRoaXNfc2l6ZSA9ICh0aGlzX3NpemVfYml0 cyArIHNvdXJjZV9vZmZzZXRfYml0cyAlIDggKyA3KSAvIDg7Ci0rICAgICAgc291cmNlX29mZnNl dCA9IHNvdXJjZV9vZmZzZXRfYml0cyAvIDg7Ci0rICAgICAgaWYgKGJ1ZmZlcl9zaXplIDwgdGhp c19zaXplKQotKwl7Ci0rCSAgYnVmZmVyX3NpemUgPSB0aGlzX3NpemU7Ci0rCSAgYnVmZmVyID0g eHJlYWxsb2MgKGJ1ZmZlciwgYnVmZmVyX3NpemUpOwotIAl9Ci0rICAgICAgaW50ZXJtZWRpYXRl X2J1ZmZlciA9IGJ1ZmZlcjsKLSAKLSsgICAgICAvKiBDb3B5IGZyb20gdGhlIHNvdXJjZSB0byBE RVNUX0JVRkZFUi4gICovCi0gICAgICAgc3dpdGNoIChwLT5sb2NhdGlvbikKLSAJewotIAljYXNl IERXQVJGX1ZBTFVFX1JFR0lTVEVSOgotQEAgLTMxNiwxMyArNTA5LDE4IEBACi0gCi0gCSAgICBp ZiAoZ2RiYXJjaF9ieXRlX29yZGVyIChhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRwotIAkJJiYgdGhp c19zaXplIDwgcmVnaXN0ZXJfc2l6ZSAoYXJjaCwgZ2RiX3JlZ251bSkpCi0tCSAgICAgIC8qIEJp Zy1lbmRpYW4sIGFuZCB3ZSB3YW50IGxlc3MgdGhhbiBmdWxsIHNpemUuICAqLwotLQkgICAgICBy ZWdfb2Zmc2V0ID0gcmVnaXN0ZXJfc2l6ZSAoYXJjaCwgZ2RiX3JlZ251bSkgLSB0aGlzX3NpemU7 Ci0rCSAgICAgIHsKLSsJCS8qIEJpZy1lbmRpYW4sIGFuZCB3ZSB3YW50IGxlc3MgdGhhbiBmdWxs IHNpemUuICAqLwotKwkJcmVnX29mZnNldCA9IHJlZ2lzdGVyX3NpemUgKGFyY2gsIGdkYl9yZWdu dW0pIC0gdGhpc19zaXplOwotKwkJLyogV2Ugd2FudCB0aGUgbG93ZXItb3JkZXIgVEhJU19TSVpF X0JJVFMgb2YgdGhlIGJ5dGVzCi0rCQkgICB3ZSBleHRyYWN0IGZyb20gdGhlIHJlZ2lzdGVyLiAg Ki8KLSsJCXNvdXJjZV9vZmZzZXRfYml0cyArPSA4ICogdGhpc19zaXplIC0gdGhpc19zaXplX2Jp dHM7Ci0rCSAgICAgIH0KLSAKLSAJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotIAkgICAgICB7 Ci0gCQlnZXRfZnJhbWVfcmVnaXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCByZWdfb2Zm c2V0LCAKLS0JCQkJCSAgdGhpc19zaXplLCBjb250ZW50cyArIGRlc3Rfb2Zmc2V0KTsKLSsJCQkJ CSAgdGhpc19zaXplLCBidWZmZXIpOwotIAkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIHsK LUBAIC0zMzQsMTEgKzUzMiw5IEBACi0gCi0gCWNhc2UgRFdBUkZfVkFMVUVfTUVNT1JZOgotIAkg IGlmIChwLT52LmV4cHIuaW5fc3RhY2tfbWVtb3J5KQotLQkgICAgcmVhZF9zdGFjayAocC0+di5l eHByLnZhbHVlICsgc291cmNlX29mZnNldCwKLS0JCQljb250ZW50cyArIGRlc3Rfb2Zmc2V0LCB0 aGlzX3NpemUpOwotKwkgICAgcmVhZF9zdGFjayAocC0+di5leHByLnZhbHVlICsgc291cmNlX29m ZnNldCwgYnVmZmVyLCB0aGlzX3NpemUpOwotIAkgIGVsc2UKLS0JICAgIHJlYWRfbWVtb3J5IChw LT52LmV4cHIudmFsdWUgKyBzb3VyY2Vfb2Zmc2V0LAotLQkJCSBjb250ZW50cyArIGRlc3Rfb2Zm c2V0LCB0aGlzX3NpemUpOwotKwkgICAgcmVhZF9tZW1vcnkgKHAtPnYuZXhwci52YWx1ZSArIHNv dXJjZV9vZmZzZXQsIGJ1ZmZlciwgdGhpc19zaXplKTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBE V0FSRl9WQUxVRV9TVEFDSzoKLUBAIC0zNTUsNyArNTUxLDcgQEAKLSAJCS8qIE5vdGhpbmcuICAq LwotIAkgICAgICB9Ci0gCSAgICBlbHNlIGlmIChzb3VyY2Vfb2Zmc2V0ID09IDApCi0tCSAgICAg IHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGNvbnRlbnRzICsgZGVzdF9vZmZzZXQsIG4sCi0rCSAg ICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZmZlciwgbiwKLSAJCQkJICAgICAgZ2RiYXJj aF9ieXRlX29yZGVyIChnZGJhcmNoKSwKLSAJCQkJICAgICAgcC0+di5leHByLnZhbHVlKTsKLSAJ ICAgIGVsc2UKLUBAIC0zNjUsNyArNTYxLDcgQEAKLSAJCXN0b3JlX3Vuc2lnbmVkX2ludGVnZXIg KGJ5dGVzLCBuICsgc291cmNlX29mZnNldCwKLSAJCQkJCWdkYmFyY2hfYnl0ZV9vcmRlciAoZ2Ri YXJjaCksCi0gCQkJCQlwLT52LmV4cHIudmFsdWUpOwotLQkJbWVtY3B5IChjb250ZW50cyArIGRl c3Rfb2Zmc2V0LCBieXRlcyArIHNvdXJjZV9vZmZzZXQsIG4pOwotKwkJbWVtY3B5IChidWZmZXIs IGJ5dGVzICsgc291cmNlX29mZnNldCwgbik7Ci0gCSAgICAgIH0KLSAJICB9Ci0gCSAgYnJlYWs7 Ci1AQCAtMzc5LDggKzU3NSw3IEBACi0gCQkgICA/IHAtPnYubGl0ZXJhbC5sZW5ndGggLSBzb3Vy Y2Vfb2Zmc2V0Ci0gCQkgICA6IDApOwotIAkgICAgaWYgKG4gIT0gMCkKLS0JICAgICAgbWVtY3B5 IChjb250ZW50cyArIGRlc3Rfb2Zmc2V0LAotLQkJICAgICAgcC0+di5saXRlcmFsLmRhdGEgKyBz b3VyY2Vfb2Zmc2V0LCBuKTsKLSsJICAgICAgaW50ZXJtZWRpYXRlX2J1ZmZlciA9IHAtPnYubGl0 ZXJhbC5kYXRhICsgc291cmNlX29mZnNldDsKLSAJICB9Ci0gCSAgYnJlYWs7Ci0gCi1AQCAtMzg4 LDE3ICs1ODMsMjUgQEAKLSAJICAvKiBXZSBqdXN0IGxlYXZlIHRoZSBiaXRzIGVtcHR5IGZvciBu b3cuICBUaGlzIGlzIG5vdCBpZGVhbAotIAkgICAgIGJ1dCBnZGIgY3VycmVudGx5IGRvZXMgbm90 IGhhdmUgYSBuaWNlIHdheSB0byByZXByZXNlbnQKLSAJICAgICBvcHRpbWl6ZWQtb3V0IHBpZWNl cy4gICovCi0tCSAgd2FybmluZyAoXygiYnl0ZXMgJWxkLSVsZCBpbiBjb21wdXRlZCBvYmplY3Qg d2VyZSBvcHRpbWl6ZWQgb3V0OyAiCi0rCSAgd2FybmluZyAoXygiYml0cyAlbGQtJWxkIGluIGNv bXB1dGVkIG9iamVjdCB3ZXJlIG9wdGltaXplZCBvdXQ7ICIKLSAJCSAgICAgInJlcGxhY2luZyB3 aXRoIHplcm9lcyIpLAotIAkJICAgb2Zmc2V0LAotLQkJICAgb2Zmc2V0ICsgKGxvbmcpIHRoaXNf c2l6ZSk7Ci0rCQkgICBvZmZzZXQgKyAobG9uZykgdGhpc19zaXplX2JpdHMpOwotIAkgIGJyZWFr OwotIAotIAlkZWZhdWx0OgotIAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18s IF8oImludmFsaWQgbG9jYXRpb24gdHlwZSIpKTsKLSAJfQotLSAgICAgIG9mZnNldCArPSB0aGlz X3NpemU7Ci0rCi0rICAgICAgaWYgKHAtPmxvY2F0aW9uICE9IERXQVJGX1ZBTFVFX09QVElNSVpF RF9PVVQpCi0rCWNvcHlfYml0d2lzZSAoY29udGVudHMsIGRlc3Rfb2Zmc2V0X2JpdHMsCi0rCQkg ICAgICBpbnRlcm1lZGlhdGVfYnVmZmVyLCBzb3VyY2Vfb2Zmc2V0X2JpdHMgJSA4LAotKwkJICAg ICAgdGhpc19zaXplX2JpdHMsIGJpdHNfYmlnX2VuZGlhbik7Ci0rCi0rICAgICAgb2Zmc2V0ICs9 IHRoaXNfc2l6ZV9iaXRzOwotICAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0g fQotIAotIHN0YXRpYyB2b2lkCi1AQCAtNDA2LDExICs2MDksMTYgQEAKLSB7Ci0gICBpbnQgaTsK LSAgIGxvbmcgb2Zmc2V0ID0gMDsKLS0gIFVMT05HRVNUIGJ5dGVzX3RvX3NraXA7Ci0rICBVTE9O R0VTVCBiaXRzX3RvX3NraXA7Ci0gICBjb25zdCBnZGJfYnl0ZSAqY29udGVudHM7Ci0gICBzdHJ1 Y3QgcGllY2VfY2xvc3VyZSAqYyA9IChzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqKSB2YWx1ZV9jb21w dXRlZF9jbG9zdXJlICh0byk7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBmcmFtZV9m aW5kX2J5X2lkIChWQUxVRV9GUkFNRV9JRCAodG8pKTsKLSAgIHNpemVfdCB0eXBlX2xlbjsKLSsg IHNpemVfdCBidWZmZXJfc2l6ZSA9IDA7Ci0rICBjaGFyICpidWZmZXIgPSBOVUxMOwotKyAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rICBpbnQgYml0c19iaWdfZW5kaWFuCi0rICAgID0gZ2Ri YXJjaF9iaXRzX2JpZ19lbmRpYW4gKGdldF90eXBlX2FyY2ggKHZhbHVlX3R5cGUgKHRvKSkpOwot IAotICAgaWYgKGZyYW1lID09IE5VTEwpCi0gICAgIHsKLUBAIC00MTgsMzQgKzYyNiw1NyBAQAot ICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoZnJl ZV9jdXJyZW50X2NvbnRlbnRzLCAmYnVmZmVyKTsKLSsKLSAgIGNvbnRlbnRzID0gdmFsdWVfY29u dGVudHMgKGZyb20pOwotLSAgYnl0ZXNfdG9fc2tpcCA9IHZhbHVlX29mZnNldCAodG8pOwotLSAg dHlwZV9sZW4gPSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodG8pKTsKLSsgIGJpdHNfdG9fc2tp cCA9IDggKiB2YWx1ZV9vZmZzZXQgKHRvKTsKLSsgIHR5cGVfbGVuID0gOCAqIFRZUEVfTEVOR1RI ICh2YWx1ZV90eXBlICh0bykpOwotICAgZm9yIChpID0gMDsgaSA8IGMtPm5fcGllY2VzICYmIG9m ZnNldCA8IHR5cGVfbGVuOyBpKyspCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9w aWVjZSAqcCA9ICZjLT5waWVjZXNbaV07Ci0tICAgICAgc2l6ZV90IHRoaXNfc2l6ZTsKLS0gICAg ICBsb25nIGRlc3Rfb2Zmc2V0LCBzb3VyY2Vfb2Zmc2V0OwotKyAgICAgIHNpemVfdCB0aGlzX3Np emVfYml0cywgdGhpc19zaXplOwotKyAgICAgIGxvbmcgZGVzdF9vZmZzZXRfYml0cywgc291cmNl X29mZnNldF9iaXRzLCBkZXN0X29mZnNldCwgc291cmNlX29mZnNldDsKLSsgICAgICBpbnQgbmVl ZF9iaXR3aXNlOwotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpzb3VyY2VfYnVmZmVyOwotIAotLSAg ICAgIGlmIChieXRlc190b19za2lwID4gMCAmJiBieXRlc190b19za2lwID49IHAtPnNpemUpCi0r ICAgICAgdGhpc19zaXplX2JpdHMgPSBwLT5zaXplOwotKyAgICAgIGlmIChiaXRzX3RvX3NraXAg PiAwICYmIGJpdHNfdG9fc2tpcCA+PSB0aGlzX3NpemVfYml0cykKLSAJewotLQkgIGJ5dGVzX3Rv X3NraXAgLT0gcC0+c2l6ZTsKLSsJICBiaXRzX3RvX3NraXAgLT0gdGhpc19zaXplX2JpdHM7Ci0g CSAgY29udGludWU7Ci0gCX0KLS0gICAgICB0aGlzX3NpemUgPSBwLT5zaXplOwotLSAgICAgIGlm ICh0aGlzX3NpemUgPiB0eXBlX2xlbiAtIG9mZnNldCkKLS0JdGhpc19zaXplID0gdHlwZV9sZW4g LSBvZmZzZXQ7Ci0tICAgICAgaWYgKGJ5dGVzX3RvX3NraXAgPiAwKQotLQl7Ci0tCSAgZGVzdF9v ZmZzZXQgPSBieXRlc190b19za2lwOwotLQkgIHNvdXJjZV9vZmZzZXQgPSAwOwotLQkgIHRoaXNf c2l6ZSAtPSBieXRlc190b19za2lwOwotLQkgIGJ5dGVzX3RvX3NraXAgPSAwOwotKyAgICAgIGlm ICh0aGlzX3NpemVfYml0cyA+IHR5cGVfbGVuIC0gb2Zmc2V0KQotKwl0aGlzX3NpemVfYml0cyA9 IHR5cGVfbGVuIC0gb2Zmc2V0OwotKyAgICAgIGlmIChiaXRzX3RvX3NraXAgPiAwKQotKwl7Ci0r CSAgZGVzdF9vZmZzZXRfYml0cyA9IGJpdHNfdG9fc2tpcDsKLSsJICBzb3VyY2Vfb2Zmc2V0X2Jp dHMgPSAwOwotKwkgIHRoaXNfc2l6ZV9iaXRzIC09IGJpdHNfdG9fc2tpcDsKLSsJICBiaXRzX3Rv X3NraXAgPSAwOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgZGVzdF9vZmZzZXRfYml0cyA9 IDA7Ci0rCSAgc291cmNlX29mZnNldF9iaXRzID0gb2Zmc2V0OwotKwl9Ci0rCi0rICAgICAgdGhp c19zaXplID0gKHRoaXNfc2l6ZV9iaXRzICsgc291cmNlX29mZnNldF9iaXRzICUgOCArIDcpIC8g ODsKLSsgICAgICBzb3VyY2Vfb2Zmc2V0ID0gc291cmNlX29mZnNldF9iaXRzIC8gODsKLSsgICAg ICBkZXN0X29mZnNldCA9IGRlc3Rfb2Zmc2V0X2JpdHMgLyA4OwotKyAgICAgIGlmIChkZXN0X29m ZnNldF9iaXRzICUgOCA9PSAwICYmIHNvdXJjZV9vZmZzZXRfYml0cyAlIDggPT0gMCkKLSsJewot KwkgIHNvdXJjZV9idWZmZXIgPSBjb250ZW50cyArIHNvdXJjZV9vZmZzZXQ7Ci0rCSAgbmVlZF9i aXR3aXNlID0gMDsKLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIGRlc3Rfb2Zmc2V0ID0gMDsK LS0JICBzb3VyY2Vfb2Zmc2V0ID0gb2Zmc2V0OwotKwkgIGlmIChidWZmZXJfc2l6ZSA8IHRoaXNf c2l6ZSkKLSsJICAgIHsKLSsJICAgICAgYnVmZmVyX3NpemUgPSB0aGlzX3NpemU7Ci0rCSAgICAg IGJ1ZmZlciA9IHhyZWFsbG9jIChidWZmZXIsIGJ1ZmZlcl9zaXplKTsKLSsJICAgIH0KLSsJICBz b3VyY2VfYnVmZmVyID0gYnVmZmVyOwotKwkgIG5lZWRfYml0d2lzZSA9IDE7Ci0gCX0KLSAKLSAg ICAgICBzd2l0Y2ggKHAtPmxvY2F0aW9uKQotQEAgLTQ2Myw4ICs2OTQsMTggQEAKLSAKLSAJICAg IGlmIChnZGJfcmVnbnVtICE9IC0xKQotIAkgICAgICB7Ci0rCQlpZiAobmVlZF9iaXR3aXNlKQot KwkJICB7Ci0rCQkgICAgZ2V0X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChmcmFtZSwgZ2RiX3JlZ251 bSwgcmVnX29mZnNldCwKLSsJCQkJCSAgICAgIHRoaXNfc2l6ZSwgYnVmZmVyKTsKLSsJCSAgICBj b3B5X2JpdHdpc2UgKGJ1ZmZlciwgZGVzdF9vZmZzZXRfYml0cywKLSsJCQkJICBjb250ZW50cywg c291cmNlX29mZnNldF9iaXRzLAotKwkJCQkgIHRoaXNfc2l6ZV9iaXRzLAotKwkJCQkgIGJpdHNf YmlnX2VuZGlhbik7Ci0rCQkgIH0KLSsKLSAJCXB1dF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoZnJh bWUsIGdkYl9yZWdudW0sIHJlZ19vZmZzZXQsIAotLQkJCQkJICB0aGlzX3NpemUsIGNvbnRlbnRz ICsgc291cmNlX29mZnNldCk7Ci0rCQkJCQkgIHRoaXNfc2l6ZSwgc291cmNlX2J1ZmZlcik7Ci0g CSAgICAgIH0KLSAJICAgIGVsc2UKLSAJICAgICAgewotQEAgLTQ3NCwxNSArNzE1LDMxIEBACi0g CSAgfQotIAkgIGJyZWFrOwotIAljYXNlIERXQVJGX1ZBTFVFX01FTU9SWToKLSsJICBpZiAobmVl ZF9iaXR3aXNlKQotKwkgICAgewotKwkgICAgICAvKiBPbmx5IHRoZSBmaXJzdCBhbmQgbGFzdCBi eXRlcyBjYW4gcG9zc2libHkgaGF2ZSBhbnkKLSsJCSBiaXRzIHJldXNlZC4gICovCi0rCSAgICAg IHJlYWRfbWVtb3J5IChwLT52LmV4cHIudmFsdWUgKyBkZXN0X29mZnNldCwgYnVmZmVyLCAxKTsK LSsJICAgICAgcmVhZF9tZW1vcnkgKHAtPnYuZXhwci52YWx1ZSArIGRlc3Rfb2Zmc2V0ICsgdGhp c19zaXplIC0gMSwKLSsJCQkgICBidWZmZXIgKyB0aGlzX3NpemUgLSAxLCAxKTsKLSsJICAgICAg Y29weV9iaXR3aXNlIChidWZmZXIsIGRlc3Rfb2Zmc2V0X2JpdHMsCi0rCQkJICAgIGNvbnRlbnRz LCBzb3VyY2Vfb2Zmc2V0X2JpdHMsCi0rCQkJICAgIHRoaXNfc2l6ZV9iaXRzLAotKwkJCSAgICBi aXRzX2JpZ19lbmRpYW4pOwotKwkgICAgfQotKwotIAkgIHdyaXRlX21lbW9yeSAocC0+di5leHBy LnZhbHVlICsgZGVzdF9vZmZzZXQsCi0tCQkJY29udGVudHMgKyBzb3VyY2Vfb2Zmc2V0LCB0aGlz X3NpemUpOwotKwkJCXNvdXJjZV9idWZmZXIsIHRoaXNfc2l6ZSk7Ci0gCSAgYnJlYWs7Ci0gCWRl ZmF1bHQ6Ci0gCSAgc2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHRvLCAxKTsKLS0JICByZXR1cm47 Ci0rCSAgZ290byBkb25lOwotIAl9Ci0tICAgICAgb2Zmc2V0ICs9IHRoaXNfc2l6ZTsKLSsgICAg ICBvZmZzZXQgKz0gdGhpc19zaXplX2JpdHM7Ci0gICAgIH0KLSsKLSsgZG9uZToKLSsgIGRvX2Ns ZWFudXBzIChjbGVhbnVwKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgKgotLS0tIHNyYy9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvcGllY2VzLlMJMjAxMC8wNS8yMSAyMTowMTo0NgkxLjIKLSsrKyBz cmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5TCTIwMTAvMDUvMjEgMjE6MTM6MTMJ MS4zCi1AQCAtOTg5LDIzICs5ODksMTggQEAKLSAuTExTVDY6Ci0gCS5sb25nCS5MVkwxMy0uTHRl eHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q2KQotIAkubG9uZwkuTFZM MTQtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0tCS52YWx1 ZQkweGEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLS0JLmJ5dGUJMHg5ZAkjIERXX09QX2Jp dF9waWVjZQotLQkudWxlYjEyOCAweDQKLS0JLnVsZWIxMjggMAotKwkudmFsdWUJMHg4CSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0gCS5ieXRlCTB4MzQJIyBEV19PUF9saXQ0Ci0gCS5ieXRl CTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotIAkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNl Ci0gCS51bGViMTI4IDB4YwotIAkudWxlYjEyOCAwCi0tCS5ieXRlCTB4OTMJIyBEV19PUF9waWVj ZQotLQkudWxlYjEyOCAweDIKLS0JLmxvbmcJLkxWTDE0LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0 IGJlZ2luIGFkZHJlc3MgKCouTExTVDYpCi0tCS5sb25nCS5MVkwxNS0uTHRleHQwCSMgTG9jYXRp b24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNikKLS0JLnZhbHVlCTB4MTUJIyBMb2NhdGlvbiBl eHByZXNzaW9uIHNpemUKLSAJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEy OCAweDQKLSsJLnVsZWIxMjggMHgxNAotIAkudWxlYjEyOCAwCi0rCS5sb25nCS5MVkwxNC0uTHRl eHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q2KQotKwkubG9uZwkuTFZM MTUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0rCS52YWx1 ZQkweDExCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0gCS5ieXRlCTB4MzQJIyBEV19PUF9s aXQ0Ci0gCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotIAkuYnl0ZQkweDlkCSMgRFdf T1BfYml0X3BpZWNlCi1AQCAtMTAyMSwxNSArMTAxNiwxMSBAQAotIAkuYnl0ZQkweDlkCSMgRFdf T1BfYml0X3BpZWNlCi0gCS51bGViMTI4IDB4YwotIAkudWxlYjEyOCAwCi0tCS5ieXRlCTB4OWQJ IyBEV19PUF9iaXRfcGllY2UKLS0JLnVsZWIxMjggMHg0Ci0tCS51bGViMTI4IDAKLSsJLmJ5dGUJ MHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4MQotIAkubG9uZwkuTFZMMTUtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNikKLSAJLmxvbmcJLkxWTDE2 LTEtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0tCS52YWx1 ZQkweDE0CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0tCS5ieXRlCTB4OWQJIyBEV19PUF9i aXRfcGllY2UKLS0JLnVsZWIxMjggMHg0Ci0tCS51bGViMTI4IDAKLSsJLnZhbHVlCTB4MTAJIyBM b2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSAJLmJ5dGUJMHg1MgkjIERXX09QX3JlZzIKLSAJLmJ5 dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotIAkudWxlYjEyOCAweGMKLUBAIC0xMDQ0LDE1ICsx MDM1LDExIEBACi0gCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSAJLnVsZWIxMjggMHhj Ci0gCS51bGViMTI4IDAKLS0JLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEy OCAweDQKLS0JLnVsZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIx MjggMHgxCi0gCS5sb25nCS5MVkwxNi0xLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFk ZHJlc3MgKCouTExTVDYpCi0gCS5sb25nCS5MVkwxNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBl bmQgYWRkcmVzcyAoKi5MTFNUNikKLS0JLnZhbHVlCTB4MTQJIyBMb2NhdGlvbiBleHByZXNzaW9u IHNpemUKLS0JLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEyOCAweDQKLS0J LnVsZWIxMjggMAotKwkudmFsdWUJMHgxMAkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotIAku Ynl0ZQkweDU2CSMgRFdfT1BfcmVnNgotIAkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0g CS51bGViMTI4IDB4YwotQEAgLTEwNjcsMTQgKzEwNTQsMTQgQEAKLSAJLmJ5dGUJMHg5ZAkjIERX X09QX2JpdF9waWVjZQotIAkudWxlYjEyOCAweGMKLSAJLnVsZWIxMjggMAotLQkuYnl0ZQkweDlk CSMgRFdfT1BfYml0X3BpZWNlCi0tCS51bGViMTI4IDB4NAotLQkudWxlYjEyOCAwCi0rCS5ieXRl CTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDEKLSAJLmxvbmcJLkxWTDE3LS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDYpCi0gCS5sb25nCS5MRkUz LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q2KQotIAkudmFsdWUJ MHhmCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0tCS5ieXRlCTB4OTMJIyBEV19PUF9waWVj ZQotLQkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwkudWxl YjEyOCAweGMKLSsJLnVsZWIxMjggMAotIAkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSAJLnNs ZWIxMjggMAotIAkuYnl0ZQkweDk0CSMgRFdfT1BfZGVyZWZfc2l6ZQotQEAgLTEwODUsOSArMTA3 Miw4IEBACi0gCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSAJLnVsZWIxMjggMHhjCi0g CS51bGViMTI4IDAKLS0JLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEyOCAw eDQKLS0JLnVsZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjgg MHgxCi0gCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCouTExTVDYp Ci0gCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1Q2KQotIC5M TFNUNzoKLUBAIC0xMzU2LDcgKzEzNDIsNyBAQAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQot IAkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSAJLmJ5dGUJMHhjCSMgRFdfQVRfYml0X3Np emUKLS0JLmJ5dGUJMHgxMAkjIERXX0FUX2JpdF9vZmZzZXQKLSsJLmJ5dGUJMHgxNAkjIERXX0FU X2JpdF9vZmZzZXQKLSAJLmJ5dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24KLSAJ LmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0gCS51bGViMTI4IDAKLUBAIC0xMzY3LDcg KzEzNTMsNyBAQAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkuYnl0ZQkweDQJIyBEV19B VF9ieXRlX3NpemUKLSAJLmJ5dGUJMHhjCSMgRFdfQVRfYml0X3NpemUKLS0JLmJ5dGUJMHg0CSMg RFdfQVRfYml0X29mZnNldAotKwkuYnl0ZQkweDgJIyBEV19BVF9iaXRfb2Zmc2V0Ci0gCS5ieXRl CTB4MgkjIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uCi0gCS5ieXRlCTB4MjMJIyBEV19PUF9w bHVzX3Vjb25zdAotIAkudWxlYjEyOCAwCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9waWVjZXMuYwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMgotKysrIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvcGllY2VzLmMJMjAxMC8wNS8yMSAyMToxMzoxMwkxLjMKLUBAIC0yMSw3ICsy MSw3IEBACi0gICAgSG93ZXZlciwgaXQgaXMgdXNlZCB0byBleHRyYWN0IGJyZWFrcG9pbnQgbGlu ZSBudW1iZXJzLiAgKi8KLSAKLSBzdHJ1Y3QgQSB7IGludCBpOyBpbnQgajsgfTsKLS1zdHJ1Y3Qg QiB7IGludCA6IDQ7IGludCBpIDogMTI7IGludCBqIDogMTI7IGludCA6IDQ7IH07Ci0rc3RydWN0 IEIgeyBpbnQgaSA6IDEyOyBpbnQgaiA6IDEyOyBpbnQgOiA0OyB9OwotIHN0cnVjdCBDIHsgaW50 IGk7IGludCBqOyBpbnQgcTsgfTsKLSAKLSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQK LUBAIC04OSw3ICs4OSw3IEBACi0gZjYgKGludCBrKQotIHsKLSAgIGludCB6ID0gMjM7Ci0tICBz dHJ1Y3QgQyBhID0geyBrLCBrLCB6fTsKLSsgIHN0cnVjdCBDIGEgPSB7IGssIGssIHogfTsKLSAg IGFzbSAoIiIgOiAiK3IiIChhLmkpKTsKLSAgIGEuaisrOwotICAgYmFyIChhLmkpOwotLS0tIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2VzLmV4cAkyMDEwLzA1LzIxIDIxOjAxOjQ2 CTEuMwotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2VzLmV4cAkyMDEwLzA1 LzIxIDIxOjEzOjEzCTEuNAotQEAgLTY3LDE1ICs2NywzMCBAQAotICAgICBnZGJfdGVzdCAicHJp bnQgYVxbMVxdIiAiID0gMTQiICJwcmludCBhXFsxXF0gaW4gcGllY2VzOmYyIgotIH0KLSAKLSsj IEZ1bmN0aW9uIGYzIHRlc3RzIERXX09QX2JpdF9waWVjZS4KLStwcm9jIHBpZWNlc190ZXN0X2Yz IHt9IHsKLSsgICAgZ2xvYmFsIGNzcmNmaWxlCi0rICAgIHNldCBsaW5lIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJmMyBicmVha3BvaW50IiAkY3NyY2ZpbGVdCi0rICAgIGdkYl90ZXN0ICJicmVhayBw aWVjZXMuYzokbGluZSIgIkJyZWFrcG9pbnQgNC4qIiBcCi0rICAgICAgICJzZXQgZjMgYnJlYWtw b2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGlu dWUgdG8gZjMgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfdGVzdCAicHJpbnQgYS5p IiAiID0gNCIgInByaW50IGEuaSBpbiBwaWVjZXM6ZjMiCi0rICAgIGdkYl90ZXN0ICJwcmludCBh LmoiICIgPSAxNCIgInByaW50IGEuaiBpbiBwaWVjZXM6ZjMiCi0rICAgICMgUmlnaHQgbm93IGdk YiBzYXlzICJ2YWx1ZSBvcHRpbWl6ZWQgb3V0IiBoZXJlLCBidXQgdGhhdCBpcyB3cm9uZy4KLSsg ICAgc2V0dXBfa2ZhaWwgIm5vIGJ1ZyB5ZXQiICotKi0qCi0rICAgIGdkYl90ZXN0ICJwcmludCBh LmkgPSA3IiAiID0gNyIgInNldCBhLmkgaW4gcGllY2VzOmYzIgotKyAgICBnZGJfdGVzdCAicHJp bnQgYS5pIiAiID0gNyIgInByaW50IG5ldyBhLmkgaW4gcGllY2VzOmYzIgotK30KLSsKLSAjIEZ1 bmN0aW9uIGY2IHRlc3RzIGZvciBhbiBlbXB0eSBEV19PUF9waWVjZS4KLSBwcm9jIHBpZWNlc190 ZXN0X2Y2IHt9IHsKLSAgICAgZ2xvYmFsIGNzcmNmaWxlCi0gICAgIHNldCBsaW5lIFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJmNiBicmVha3BvaW50IiAkY3NyY2ZpbGVdCi0tICAgIGdkYl90ZXN0ICJi cmVhayBwaWVjZXMuYzokbGluZSIgIkJyZWFrcG9pbnQgNC4qIiBcCi0rICAgIGdkYl90ZXN0ICJi cmVhayBwaWVjZXMuYzokbGluZSIgIkJyZWFrcG9pbnQgNS4qIiBcCi0gICAgICAgICJzZXQgZjYg YnJlYWtwb2ludCBmb3IgcGllY2VzIgotICAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi Y29udGludWUgdG8gZjYgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotICAgICBnZGJfdGVzdCAicHJp bnQgYSIgXAotLQkid2FybmluZzogYnl0ZXMgLiogaW4gY29tcHV0ZWQgb2JqZWN0IHdlcmUuKiA9 IHtpID0gNywgaiA9IDgsIHEgPSAwfSIgXAotKwkid2FybmluZzogYml0cyAuKiBpbiBjb21wdXRl ZCBvYmplY3Qgd2VyZS4qID0ge2kgPSA3LCBqID0gOCwgcSA9IDB9IiBcCi0gCSJwcmludCBhIHdp dGggb3B0aW1pemVkIG91dCBwaWVjZSIKLSAgICAgIyBOb3RlOiBubyB3YXJuaW5nIGZvciB0aGlz IGNhc2UuCi0gICAgIGdkYl90ZXN0X211bHRpcGxlICJwcmludCBhLmkiIFwKLUBAIC05MSw0ICsx MDYsNSBAQAotIAotIHBpZWNlc190ZXN0X2YxCi0gcGllY2VzX3Rlc3RfZjIKLStwaWVjZXNfdGVz dF9mMwotIHBpZWNlc190ZXN0X2Y2CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTk1NDc1LXR1aS1sYXlv dXQucGF0Y2ggYi9nZGItYno1OTU0NzUtdHVpLWxheW91dC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNzE3NDJmOC4uMDAwMDAwMAotLS0gYS9nZGItYno1OTU0NzUtdHVpLWxh eW91dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLWh0dHBzOi8vYnVnemls bGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTY2Ci1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cwMDc0Ni5odG1sCi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wNS9tc2cwMDU1MS5odG1sCi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTAzL21zZzAwMTk0Lmh0bWwKLQotIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTAvMDMvMTkgMjI6MDA6MTYJMS4xMTUwOAotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTAvMDMvMjAgMDU6MTc6MTAJMS4xMTUwOQotIyMgLTEsMyArMSw5IEBACi0rMjAxMC0w My0yMCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsJKiB0 dWkvdHVpLWRpc2FzbS5jICh0dWlfZ2V0X2JlZ2luX2FzbV9hZGRyZXNzKTogRGVmYXVsdCB0bwot KwlnZXRfY3VycmVudF9hcmNoLgotKwkqIHR1aS90dWktbGF5b3V0LmMgKGV4dHJhY3RfZGlzcGxh eV9zdGFydF9hZGRyKTogTGlrZXdpc2UuCi0rCi0gMjAxMC0wMy0xOSAgU3RhbiBTaGVicyAgPHN0 YW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBheC1nZGIuYyAoZ2VuX2ZldGNoKTogSGFuZGxl IGJvb2wuCi0tLS0gc3JjL2dkYi90dWkvdHVpLWRpc2FzbS5jCTIwMTAvMDEvMDEgMDc6MzI6MDcJ MS4zMwotKysrIHNyYy9nZGIvdHVpL3R1aS1kaXNhc20uYwkyMDEwLzAzLzIwIDA1OjE3OjEwCTEu MzQKLUBAIC0yMSw2ICsyMSw3IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNpbmNsdWRl ICJkZWZzLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAjaW5jbHVkZSAic3ltdGFiLmgi Ci0gI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIKLSAjaW5jbHVkZSAiZnJhbWUuaCIKLUBAIC0zMzAs NyArMzMxLDcgQEAKLSB7Ci0gICBzdHJ1Y3QgdHVpX2dlbl93aW5faW5mbyAqbG9jYXRvcjsKLSAg IHN0cnVjdCB0dWlfbG9jYXRvcl9lbGVtZW50ICplbGVtZW50OwotLSAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBOVUxMOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfY3VycmVu dF9hcmNoICgpOwotICAgQ09SRV9BRERSIGFkZHI7Ci0gCi0gICBsb2NhdG9yID0gdHVpX2xvY2F0 b3Jfd2luX2luZm9fcHRyICgpOwotLS0tIHNyYy9nZGIvdHVpL3R1aS1sYXlvdXQuYwkyMDEwLzAx LzAxIDA3OjMyOjA3CTEuMzYKLSsrKyBzcmMvZ2RiL3R1aS90dWktbGF5b3V0LmMJMjAxMC8wMy8y MCAwNToxNzoxMAkxLjM3Ci1AQCAtMjEsNiArMjEsNyBAQAotICAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K LSAKLSAjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gI2luY2x1 ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0gI2luY2x1ZGUgImZyYW1lLmgi Ci1AQCAtNTIyLDcgKzUyMyw3IEBACi0gZXh0cmFjdF9kaXNwbGF5X3N0YXJ0X2FkZHIgKHN0cnVj dCBnZGJhcmNoICoqZ2RiYXJjaF9wLCBDT1JFX0FERFIgKmFkZHJfcCkKLSB7Ci0gICBlbnVtIHR1 aV9sYXlvdXRfdHlwZSBjdXJfbGF5b3V0ID0gdHVpX2N1cnJlbnRfbGF5b3V0ICgpOwotLSAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBOVUxMOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBnZXRfY3VycmVudF9hcmNoICgpOwotICAgQ09SRV9BRERSIGFkZHI7Ci0gICBDT1JFX0FERFIg cGM7Ci0gICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIGN1cnNhbCA9IGdldF9jdXJyZW50X3NvdXJj ZV9zeW10YWJfYW5kX2xpbmUgKCk7Ci0tLS0gL2Rldi9udWxsCTIwMTAtMDUtMjQgMDQ6NDM6MzIu NjMyNzk0MDIxICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3R1aS1s YXlvdXQuZXhwCTIwMTAtMDUtMjQgMjA6MTM6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsx LDIxIEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlIHR1aS1s YXlvdXQKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3Rm aWxlfSBzdGFydC5jXSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl90ZXN0ICJsYXlv dXQgYXNtIgoKZGlmZiAtLWdpdCBhL2dkYi1iejYwMDc0Ni1rb2VuaWctY3Jhc2gucGF0Y2ggYi9n ZGItYno2MDA3NDYta29lbmlnLWNyYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA3YjZlMjA5Li4wMDAwMDAwCi0tLSBhL2dkYi1iejYwMDc0Ni1rb2VuaWctY3Jhc2gucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1bcGF0Y2hdIEZpeCBBREwgYW5vbnlt b3VzIHR5cGUgY3Jhc2gKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEw LTA2L21zZzAwMDA0Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAt MDYvbXNnMDAwMTIuaHRtbAotCi1bIEJhY2twb3J0ZWQgdGhlIHRlc3RjYXNlLiAgXQotCi0jIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNi8wMiAwNjoyNDowMAkxLjExODYyCi0jIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMC8wNi8wMiAxNTozMToyOQkxLjExODYzCi0jIyAtMSwzICsxLDggQEAK LSsyMDEwLTA2LTAyICBTYW1pIFdhZ2lhYWxsYSAgPHN3YWdpYWFsQHJlZGhhdC5jb20+Ci0rCi0r CSogY3Atc3VwcG9ydC5jIChtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X2FkbF9uYW1lc3BhY2Up OiBIYW5kbGUKLSsJYW5vbnltb3VzIHR5cGUgY2FzZS4KLSsKLSAyMDEwLTA2LTAyICBQaWVycmUg TXVsbGVyICA8bXVsbGVyQGljcy51LXN0cmFzYmcuZnI+Ci0gCi0gCSogZHdhcmYycmVhZC5jIChy ZWFkX3N1YnJhbmdlX3R5cGUpOiBIYW5kbGUgbWlzc2luZyBiYXNlIHR5cGUKLSMjIyBzcmMvZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNi8wMSAyMToyOToyMQkxLjIyOTgKLSMjIyBzcmMv Z2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNi8wMiAxNTozMTozMAkxLjIyOTkKLSMjIC0x LDMgKzEsOCBAQAotKzIwMTAtMDYtMDIgIFNhbWkgV2FnaWFhbGxhICA8c3dhZ2lhYWxAcmVkaGF0 LmNvbT4KLSsKLSsJKiBnZGIuY3AvbmFtZXNwYWNlLWtvZW5pZy5leHA6IEFkZGVkIG5ldyB0ZXN0 IGNhc2UuCi0rCSogZ2RiLmNwL25hbWVzcGFjZS1rb2VuaWcuY2M6IERpdHRvLgotKwotIDIwMTAt MDYtMDEgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckB2bXdhcmUuY29tPgotIAotIAkqIGdkYi5i YXNlL2FyaXRobWV0LmV4cDogVXNlIGdkYl90ZXN0X25vX291dHB1dC4KLS0tLSBzcmMvZ2RiL2Nw LXN1cHBvcnQuYwkyMDEwLzA1LzEzIDIzOjUzOjMyCTEuNDAKLSsrKyBzcmMvZ2RiL2NwLXN1cHBv cnQuYwkyMDEwLzA2LzAyIDE1OjMxOjMwCTEuNDEKLUBAIC03NTIsNiArNzUyLDkgQEAKLSAKLSAg IHR5cGVfbmFtZSA9IFRZUEVfTkFNRSAodHlwZSk7Ci0gCi0rICBpZiAodHlwZV9uYW1lID09IE5V TEwpCi0rICAgIHJldHVybjsKLSsKLSAgIHByZWZpeF9sZW4gPSBjcF9lbnRpcmVfcHJlZml4X2xl biAodHlwZV9uYW1lKTsKLSAKLSAgIGlmIChwcmVmaXhfbGVuICE9IDApCi0tLS0gZ2RiLTcuMS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Uta29lbmlnLmNjLm9yaWcJMjAxMC0wNi0wOSAw ODoyMDoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L25hbWVzcGFjZS1rb2VuaWcuY2MJMjAxMC0wNi0wOSAxMTowOToyOS4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xNjUsNiArMTY1LDEzIEBAIG5hbWVzcGFjZSBNIHsKLSAKLSB9Ci0gLy8tLS0tLS0tLS0t LS0KLStzdGF0aWMgdW5pb24gewotKyAgICBpbnQgIGE7Ci0rICAgIGNoYXIgYjsKLSt9cF91bmlv bjsKLSsKLSsvLy0tLS0tLS0tLS0tLQotKwotIGludAotIG1haW4gKCkKLSB7Ci0tLS0gZ2RiLTcu MS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Uta29lbmlnLmV4cC5vcmlnCTIwMTAtMDYt MDkgMDg6MjA6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9uYW1lc3BhY2Uta29lbmlnLmV4cAkyMDEwLTA2LTA5IDExOjA5OjQ4LjAwMDAwMDAwMCAr MDIwMAotQEAgLTExMCwzICsxMTEsNyBAQCBnZGJfdGVzdCAicCBvICsgNS4wZiIgIj0gMjIiCi0g Z2RiX3Rlc3QgInAgbyArIDUiICI9IDIzIgotIAotIGdkYl90ZXN0ICJwIG8rKyIgIj0gMjQiCi0r Ci0rI3Rlc3QgdGhhdCBsb29rdXAgaXMgbm90IHRod2FydGVkIGJ5IGFub255bW91cyB0eXBlcwot K2dkYl90ZXN0ICJwIGZvbyAocF91bmlvbikiIFwKLSsgICJDYW5ub3QgcmVzb2x2ZSBmdW5jdGlv biBmb28gdG8gYW55IG92ZXJsb2FkZWQgaW5zdGFuY2UiCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjAx ODg3LWR3YXJmNC0xb2YyLnBhdGNoIGIvZ2RiLWJ6NjAxODg3LWR3YXJmNC0xb2YyLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjcwOGRmLi4wMDAwMDAwCi0tLSBhL2dkYi1i ejYwMTg4Ny1kd2FyZjQtMW9mMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBA Ci1jb21taXQgYmUxZjU3YzkwYmRmODY0NzdiOWJjNjljYzk4MjE3MWQ2YWQ1ZGY1NgotQXV0aG9y OiBUb20gVHJvbWV5IDx0cm9tZXlAcmVkaGF0LmNvbT4KLURhdGU6ICAgVHVlIEFwciAyMCAxNzoz MzoxMyAyMDEwICswMDAwCi0KLSAgICAJKiBkd2FyZjItZnJhbWUuYyAoZGVjb2RlX2ZyYW1lX2Vu dHJ5XzEpOiBIYW5kbGUgQ0lFIHZlcnNpb24gNC4KLSAgICAJKHN0cnVjdCBkd2FyZjJfY2llKSA8 c2VnbWVudF9zaXplPjogTmV3IGZpZWxkLgotICAgIAkqIGR3YXJmMnJlYWQuYyAocGFydGlhbF9y ZWFkX2NvbXBfdW5pdF9oZWFkKTogQWNjZXB0IERXQVJGIDQuCi0gICAgCShza2lwX29uZV9kaWUp OiBIYW5kbGUgRFdfRk9STV9mbGFnX3ByZXNlbnQsIERXX0ZPUk1fc2VjX29mZnNldCwKLSAgICAJ RFdfRk9STV9leHBybG9jLgotICAgIAkocmVhZF9hdHRyaWJ1dGVfdmFsdWUpOiBIYW5kbGUgRFdf Rk9STV9mbGFnX3ByZXNlbnQsCi0gICAgCURXX0ZPUk1fc2VjX29mZnNldCwgRFdfRk9STV9leHBy bG9jLgotICAgIAkoZHVtcF9kaWVfc2hhbGxvdyk6IExpa2V3aXNlLgotICAgIAkoYXR0cl9mb3Jt X2lzX3NlY3Rpb25fb2Zmc2V0KTogSGFuZGxlIERXX0ZPUk1fc2VjX29mZnNldC4KLSAgICAJKGR3 YXJmMl9jb25zdF92YWx1ZSk6IEhhbmRsZSBEV19GT1JNX2V4cHJsb2MuCi0gICAgCShhdHRyX2Zv cm1faXNfYmxvY2spOiBMaWtld2lzZS4KLSAgICAJKHN0cnVjdCBsaW5lX2hlYWRlcikgPG1heGlt dW1fb3BzX3Blcl9pbnN0cnVjdGlvbj46IE5ldyBmaWVsZC4KLSAgICAJKGR3YXJmX2RlY29kZV9s aW5lX2hlYWRlcik6IFNldCBuZXcgZmllbGQuCi0gICAgCShkd2FyZl9kZWNvZGVfbGluZXMpOiBI YW5kbGUgbmV3IGZpZWxkLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdl TG9nCi0jIyAtMSwzICsxLDIwIEBACi0rMjAxMC0wNC0yMCAgVG9tIFRyb21leSAgPHRyb21leUBy ZWRoYXQuY29tPgotKwotKwkqIGR3YXJmMi1mcmFtZS5jIChkZWNvZGVfZnJhbWVfZW50cnlfMSk6 IEhhbmRsZSBDSUUgdmVyc2lvbiA0LgotKwkoc3RydWN0IGR3YXJmMl9jaWUpIDxzZWdtZW50X3Np emU+OiBOZXcgZmllbGQuCi0rCSogZHdhcmYycmVhZC5jIChwYXJ0aWFsX3JlYWRfY29tcF91bml0 X2hlYWQpOiBBY2NlcHQgRFdBUkYgNC4KLSsJKHNraXBfb25lX2RpZSk6IEhhbmRsZSBEV19GT1JN X2ZsYWdfcHJlc2VudCwgRFdfRk9STV9zZWNfb2Zmc2V0LAotKwlEV19GT1JNX2V4cHJsb2MuCi0r CShyZWFkX2F0dHJpYnV0ZV92YWx1ZSk6IEhhbmRsZSBEV19GT1JNX2ZsYWdfcHJlc2VudCwKLSsJ RFdfRk9STV9zZWNfb2Zmc2V0LCBEV19GT1JNX2V4cHJsb2MuCi0rCShkdW1wX2RpZV9zaGFsbG93 KTogTGlrZXdpc2UuCi0rCShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQpOiBIYW5kbGUgRFdf Rk9STV9zZWNfb2Zmc2V0LgotKwkoZHdhcmYyX2NvbnN0X3ZhbHVlKTogSGFuZGxlIERXX0ZPUk1f ZXhwcmxvYy4KLSsJKGF0dHJfZm9ybV9pc19ibG9jayk6IExpa2V3aXNlLgotKwkoc3RydWN0IGxp bmVfaGVhZGVyKSA8bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uPjogTmV3IGZpZWxkLgotKwko ZHdhcmZfZGVjb2RlX2xpbmVfaGVhZGVyKTogU2V0IG5ldyBmaWVsZC4KLSsJKGR3YXJmX2RlY29k ZV9saW5lcyk6IEhhbmRsZSBuZXcgZmllbGQuCi0rCi0gMjAxMC0wNC0yMCAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkqIGYtZXhwLnk6IEFkZCBuZXcg cHJvZHVjdGlvbiB0byByZWNvZ25pemUgdGhlIGBsb2dpY2FsKjgnIHR5cGUuCi0tLS0gYS9nZGIv ZHdhcmYyLWZyYW1lLmMKLSsrKyBiL2dkYi9kd2FyZjItZnJhbWUuYwotQEAgLTg1LDYgKzg1LDkg QEAgc3RydWN0IGR3YXJmMl9jaWUKLSAKLSAgIC8qIFRoZSB2ZXJzaW9uIHJlY29yZGVkIGluIHRo ZSBDSUUuICAqLwotICAgdW5zaWduZWQgY2hhciB2ZXJzaW9uOwotKwotKyAgLyogVGhlIHNlZ21l bnQgc2l6ZS4gICovCi0rICB1bnNpZ25lZCBjaGFyIHNlZ21lbnRfc2l6ZTsKLSB9OwotIAotIHN0 cnVjdCBkd2FyZjJfY2llX3RhYmxlCi1AQCAtMTcxNCw3ICsxNzE3LDcgQEAgZGVjb2RlX2ZyYW1l X2VudHJ5XzEgKHN0cnVjdCBjb21wX3VuaXQgKnVuaXQsIGdkYl9ieXRlICpzdGFydCwgaW50IGVo X2ZyYW1lX3AsCi0gCi0gICAgICAgLyogQ2hlY2sgdmVyc2lvbiBudW1iZXIuICAqLwotICAgICAg IGNpZV92ZXJzaW9uID0gcmVhZF8xX2J5dGUgKHVuaXQtPmFiZmQsIGJ1Zik7Ci0tICAgICAgaWYg KGNpZV92ZXJzaW9uICE9IDEgJiYgY2llX3ZlcnNpb24gIT0gMykKLSsgICAgICBpZiAoY2llX3Zl cnNpb24gIT0gMSAmJiBjaWVfdmVyc2lvbiAhPSAzICYmIGNpZV92ZXJzaW9uICE9IDQpCi0gCXJl dHVybiBOVUxMOwotICAgICAgIGNpZS0+dmVyc2lvbiA9IGNpZV92ZXJzaW9uOwotICAgICAgIGJ1 ZiArPSAxOwotQEAgLTE3MzgsNiArMTc0MSwyMCBAQCBkZWNvZGVfZnJhbWVfZW50cnlfMSAoc3Ry dWN0IGNvbXBfdW5pdCAqdW5pdCwgZ2RiX2J5dGUgKnN0YXJ0LCBpbnQgZWhfZnJhbWVfcCwKLSAJ ICBhdWdtZW50YXRpb24gKz0gMjsKLSAJfQotIAotKyAgICAgIGlmIChjaWUtPnZlcnNpb24gPj0g NCkKLSsJewotKwkgIC8qIEZJWE1FOiBjaGVjayB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXMgZnJv bSB0aGUgQ1UgaGVhZGVyLiAgKi8KLSsJICBjaWUtPmFkZHJfc2l6ZSA9IHJlYWRfMV9ieXRlICh1 bml0LT5hYmZkLCBidWYpOwotKwkgICsrYnVmOwotKwkgIGNpZS0+c2VnbWVudF9zaXplID0gcmVh ZF8xX2J5dGUgKHVuaXQtPmFiZmQsIGJ1Zik7Ci0rCSAgKytidWY7Ci0rCX0KLSsgICAgICBlbHNl Ci0rCXsKLSsJICBjaWUtPmFkZHJfc2l6ZSA9IGdkYmFyY2hfcHRyX2JpdCAoZ2RiYXJjaCkgLyBU QVJHRVRfQ0hBUl9CSVQ7Ci0rCSAgY2llLT5zZWdtZW50X3NpemUgPSAwOwotKwl9Ci0rCi0gICAg ICAgY2llLT5jb2RlX2FsaWdubWVudF9mYWN0b3IgPQotIAlyZWFkX3Vuc2lnbmVkX2xlYjEyOCAo dW5pdC0+YWJmZCwgYnVmLCAmYnl0ZXNfcmVhZCk7Ci0gICAgICAgYnVmICs9IGJ5dGVzX3JlYWQ7 Ci0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtMzk2 LDYgKzM5Niw3IEBAIHN0cnVjdCBsaW5lX2hlYWRlcgotICAgdW5zaWduZWQgc2hvcnQgdmVyc2lv bjsKLSAgIHVuc2lnbmVkIGludCBoZWFkZXJfbGVuZ3RoOwotICAgdW5zaWduZWQgY2hhciBtaW5p bXVtX2luc3RydWN0aW9uX2xlbmd0aDsKLSsgIHVuc2lnbmVkIGNoYXIgbWF4aW11bV9vcHNfcGVy X2luc3RydWN0aW9uOwotICAgdW5zaWduZWQgY2hhciBkZWZhdWx0X2lzX3N0bXQ7Ci0gICBpbnQg bGluZV9iYXNlOwotICAgdW5zaWduZWQgY2hhciBsaW5lX3JhbmdlOwotQEAgLTE0ODgsMTAgKzE0 ODksMTAgQEAgcGFydGlhbF9yZWFkX2NvbXBfdW5pdF9oZWFkIChzdHJ1Y3QgY29tcF91bml0X2hl YWQgKmhlYWRlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAotIAotICAgaW5mb19wdHIgPSByZWFkX2Nv bXBfdW5pdF9oZWFkIChoZWFkZXIsIGluZm9fcHRyLCBhYmZkKTsKLSAKLS0gIGlmIChoZWFkZXIt PnZlcnNpb24gIT0gMiAmJiBoZWFkZXItPnZlcnNpb24gIT0gMykKLSsgIGlmIChoZWFkZXItPnZl cnNpb24gIT0gMiAmJiBoZWFkZXItPnZlcnNpb24gIT0gMyAmJiBoZWFkZXItPnZlcnNpb24gIT0g NCkKLSAgICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiB3cm9uZyB2ZXJzaW9uIGluIGNvbXBpbGF0 aW9uIHVuaXQgaGVhZGVyICIKLS0JICAgIihpcyAlZCwgc2hvdWxkIGJlICVkKSBbaW4gbW9kdWxl ICVzXSIpLCBoZWFkZXItPnZlcnNpb24sCi0tCSAgIDIsIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQp KTsKLSsJICAgIihpcyAlZCwgc2hvdWxkIGJlIDIsIDMsIG9yIDQpIFtpbiBtb2R1bGUgJXNdIiks IGhlYWRlci0+dmVyc2lvbiwKLSsJICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotIAotICAg aWYgKGhlYWRlci0+YWJicmV2X29mZnNldCA+PSBkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldi5z aXplKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBvZmZzZXQgKDB4JWx4KSBpbiBj b21waWxhdGlvbiB1bml0IGhlYWRlciAiCi1AQCAtMjc3Niw2ICsyNzc3LDggQEAgc2tpcF9vbmVf ZGllIChnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCi0gCWNhc2UgRFdfRk9S TV9mbGFnOgotIAkgIGluZm9fcHRyICs9IDE7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfRk9STV9m bGFnX3ByZXNlbnQ6Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgRFdfRk9STV9kYXRhMjoKLSAJY2FzZSBE V19GT1JNX3JlZjI6Ci0gCSAgaW5mb19wdHIgKz0gMjsKLUBAIC0yNzkzLDkgKzI3OTYsMTEgQEAg c2tpcF9vbmVfZGllIChnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCi0gCSAg cmVhZF9zdHJpbmcgKGFiZmQsIGluZm9fcHRyLCAmYnl0ZXNfcmVhZCk7Ci0gCSAgaW5mb19wdHIg Kz0gYnl0ZXNfcmVhZDsKLSAJICBicmVhazsKLSsJY2FzZSBEV19GT1JNX3NlY19vZmZzZXQ6Ci0g CWNhc2UgRFdfRk9STV9zdHJwOgotIAkgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3Np emU7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfRk9STV9leHBybG9jOgotIAljYXNlIERXX0ZPUk1f YmxvY2s6Ci0gCSAgaW5mb19wdHIgKz0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIGluZm9f cHRyLCAmYnl0ZXNfcmVhZCk7Ci0gCSAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLUBAIC03MTI5 LDYgKzcxMzQsMTAgQEAgcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHIsIHVuc2lnbmVkIGZvcm0sCi0gICAgICAgRFdfVU5TTkQgKGF0dHIpID0gcmVhZF84X2J5dGVz IChhYmZkLCBpbmZvX3B0cik7Ci0gICAgICAgaW5mb19wdHIgKz0gODsKLSAgICAgICBicmVhazsK LSsgICAgY2FzZSBEV19GT1JNX3NlY19vZmZzZXQ6Ci0rICAgICAgRFdfVU5TTkQgKGF0dHIpID0g cmVhZF9vZmZzZXQgKGFiZmQsIGluZm9fcHRyLCAmY3UtPmhlYWRlciwgJmJ5dGVzX3JlYWQpOwot KyAgICAgIGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7Ci0rICAgICAgYnJlYWs7Ci0gICAgIGNhc2Ug RFdfRk9STV9zdHJpbmc6Ci0gICAgICAgRFdfU1RSSU5HIChhdHRyKSA9IHJlYWRfc3RyaW5nIChh YmZkLCBpbmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwotICAgICAgIERXX1NUUklOR19JU19DQU5PTklD QUwgKGF0dHIpID0gMDsKLUBAIC03MTQwLDYgKzcxNDksNyBAQCByZWFkX2F0dHJpYnV0ZV92YWx1 ZSAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgdW5zaWduZWQgZm9ybSwKLSAgICAgICBEV19TVFJJ TkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9IDA7Ci0gICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVh ZDsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBEV19GT1JNX2V4cHJsb2M6Ci0gICAgIGNhc2Ug RFdfRk9STV9ibG9jazoKLSAgICAgICBibGsgPSBkd2FyZl9hbGxvY19ibG9jayAoY3UpOwotICAg ICAgIGJsay0+c2l6ZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBpbmZvX3B0ciwgJmJ5 dGVzX3JlYWQpOwotQEAgLTcxNjQsNiArNzE3NCw5IEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChz dHJ1Y3QgYXR0cmlidXRlICphdHRyLCB1bnNpZ25lZCBmb3JtLAotICAgICAgIERXX1VOU05EIChh dHRyKSA9IHJlYWRfMV9ieXRlIChhYmZkLCBpbmZvX3B0cik7Ci0gICAgICAgaW5mb19wdHIgKz0g MTsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBEV19GT1JNX2ZsYWdfcHJlc2VudDoKLSsgICAg ICBEV19VTlNORCAoYXR0cikgPSAxOwotKyAgICAgIGJyZWFrOwotICAgICBjYXNlIERXX0ZPUk1f c2RhdGE6Ci0gICAgICAgRFdfU05EIChhdHRyKSA9IHJlYWRfc2lnbmVkX2xlYjEyOCAoYWJmZCwg aW5mb19wdHIsICZieXRlc19yZWFkKTsKLSAgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOwot QEAgLTc2ODAsNyArNzY5Myw3IEBAIGR3YXJmMl9hdHRyX25vX2ZvbGxvdyAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHVuc2lnbmVkIGludCBuYW1lLAotIAotIC8qIFJldHVybiBub24temVybyBpZmYg dGhlIGF0dHJpYnV0ZSBOQU1FIGlzIGRlZmluZWQgZm9yIHRoZSBnaXZlbiBESUUsCi0gICAgYW5k IGhvbGRzIGEgbm9uLXplcm8gdmFsdWUuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVz ZWQgZm9yCi0tICAgRFdfRk9STV9mbGFnIGF0dHJpYnV0ZXMuICAqLwotKyAgIERXX0ZPUk1fZmxh ZyBvciBEV19GT1JNX2ZsYWdfcHJlc2VudCBhdHRyaWJ1dGVzLiAgKi8KLSAKLSBzdGF0aWMgaW50 Ci0gZHdhcmYyX2ZsYWdfdHJ1ZV9wIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgdW5zaWduZWQgbmFt ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtNzg2Miw2ICs3ODc1LDIxIEBAIGR3YXJmX2Rl Y29kZV9saW5lX2hlYWRlciAodW5zaWduZWQgaW50IG9mZnNldCwgYmZkICphYmZkLAotICAgbGlu ZV9wdHIgKz0gb2Zmc2V0X3NpemU7Ci0gICBsaC0+bWluaW11bV9pbnN0cnVjdGlvbl9sZW5ndGgg PSByZWFkXzFfYnl0ZSAoYWJmZCwgbGluZV9wdHIpOwotICAgbGluZV9wdHIgKz0gMTsKLSsgIGlm IChsaC0+dmVyc2lvbiA+PSA0KQotKyAgICB7Ci0rICAgICAgbGgtPm1heGltdW1fb3BzX3Blcl9p bnN0cnVjdGlvbiA9IHJlYWRfMV9ieXRlIChhYmZkLCBsaW5lX3B0cik7Ci0rICAgICAgbGluZV9w dHIgKz0gMTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBsaC0+bWF4aW11bV9vcHNfcGVyX2luc3Ry dWN0aW9uID0gMTsKLSsKLSsgIGlmIChsaC0+bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uID09 IDApCi0rICAgIHsKLSsgICAgICBsaC0+bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uID0gMTsK LSsgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkgXygiaW52YWxpZCBt YXhpbXVtX29wc19wZXJfaW5zdHJ1Y3Rpb24gaW4gYC5kZWJ1Z19saW5lJyBzZWN0aW9uIikpOwot KyAgICB9Ci0rCi0gICBsaC0+ZGVmYXVsdF9pc19zdG10ID0gcmVhZF8xX2J5dGUgKGFiZmQsIGxp bmVfcHRyKTsKLSAgIGxpbmVfcHRyICs9IDE7Ci0gICBsaC0+bGluZV9iYXNlID0gcmVhZF8xX3Np Z25lZF9ieXRlIChhYmZkLCBsaW5lX3B0cik7Ci1AQCAtODAxMCw2ICs4MDM4LDcgQEAgZHdhcmZf ZGVjb2RlX2xpbmVzIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjaGFyICpjb21wX2RpciwgYmZk ICphYmZkLAotICAgICAgIGludCBiYXNpY19ibG9jayA9IDA7Ci0gICAgICAgaW50IGVuZF9zZXF1 ZW5jZSA9IDA7Ci0gICAgICAgQ09SRV9BRERSIGFkZHI7Ci0rICAgICAgdW5zaWduZWQgY2hhciBv cF9pbmRleCA9IDA7Ci0gCi0gICAgICAgaWYgKCFkZWNvZGVfZm9yX3BzdF9wICYmIGxoLT5udW1f ZmlsZV9uYW1lcyA+PSBmaWxlKQotIAl7Ci1AQCAtODA0MSwxMiArODA3MCwxNyBAQCBkd2FyZl9k ZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNoYXIgKmNvbXBfZGlyLCBiZmQg KmFiZmQsCi0gCSAgICB7CQkKLSAJICAgICAgLyogU3BlY2lhbCBvcGVyYW5kLiAgKi8KLSAJICAg ICAgYWRqX29wY29kZSA9IG9wX2NvZGUgLSBsaC0+b3Bjb2RlX2Jhc2U7Ci0tCSAgICAgIGFkZHJl c3MgKz0gKGFkal9vcGNvZGUgLyBsaC0+bGluZV9yYW5nZSkKLS0JCSogbGgtPm1pbmltdW1faW5z dHJ1Y3Rpb25fbGVuZ3RoOwotKwkgICAgICBhZGRyZXNzICs9ICgoKG9wX2luZGV4ICsgKGFkal9v cGNvZGUgLyBsaC0+bGluZV9yYW5nZSkpCi0rCQkJICAgLyBsaC0+bWF4aW11bV9vcHNfcGVyX2lu c3RydWN0aW9uKQotKwkJCSAgKiBsaC0+bWluaW11bV9pbnN0cnVjdGlvbl9sZW5ndGgpOwotKwkg ICAgICBvcF9pbmRleCA9ICgob3BfaW5kZXggKyAoYWRqX29wY29kZSAvIGxoLT5saW5lX3Jhbmdl KSkKLSsJCQkgICUgbGgtPm1heGltdW1fb3BzX3Blcl9pbnN0cnVjdGlvbik7Ci0gCSAgICAgIGxp bmUgKz0gbGgtPmxpbmVfYmFzZSArIChhZGpfb3Bjb2RlICUgbGgtPmxpbmVfcmFuZ2UpOwotIAkg ICAgICBpZiAobGgtPm51bV9maWxlX25hbWVzIDwgZmlsZSB8fCBmaWxlID09IDApCi0gCQlkd2Fy ZjJfZGVidWdfbGluZV9taXNzaW5nX2ZpbGVfY29tcGxhaW50ICgpOwotLQkgICAgICBlbHNlCi0r CSAgICAgIC8qIEZvciBub3cgd2UgaWdub3JlIGxpbmVzIG5vdCBzdGFydGluZyBvbiBhbgotKwkJ IGluc3RydWN0aW9uIGJvdW5kYXJ5LiAgKi8KLSsJICAgICAgZWxzZSBpZiAob3BfaW5kZXggPT0g MCkKLSAJCXsKLSAJCSAgbGgtPmZpbGVfbmFtZXNbZmlsZSAtIDFdLmluY2x1ZGVkX3AgPSAxOwot IAkJICBpZiAoIWRlY29kZV9mb3JfcHN0X3AgJiYgaXNfc3RtdCkKLUBAIC04MDgxLDYgKzgxMTUs NyBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNoYXIgKmNv bXBfZGlyLCBiZmQgKmFiZmQsCi0gCQkgIGJyZWFrOwotIAkJY2FzZSBEV19MTkVfc2V0X2FkZHJl c3M6Ci0gCQkgIGFkZHJlc3MgPSByZWFkX2FkZHJlc3MgKGFiZmQsIGxpbmVfcHRyLCBjdSwgJmJ5 dGVzX3JlYWQpOwotKwkJICBvcF9pbmRleCA9IDA7Ci0gCQkgIGxpbmVfcHRyICs9IGJ5dGVzX3Jl YWQ7Ci0gCQkgIGFkZHJlc3MgKz0gYmFzZWFkZHI7Ci0gCQkgIGJyZWFrOwotQEAgLTgxNDYsOSAr ODE4MSwxNyBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNo YXIgKmNvbXBfZGlyLCBiZmQgKmFiZmQsCi0gCSAgICAgIGJhc2ljX2Jsb2NrID0gMDsKLSAJICAg ICAgYnJlYWs7Ci0gCSAgICBjYXNlIERXX0xOU19hZHZhbmNlX3BjOgotLQkgICAgICBhZGRyZXNz ICs9IGxoLT5taW5pbXVtX2luc3RydWN0aW9uX2xlbmd0aAotLQkJKiByZWFkX3Vuc2lnbmVkX2xl YjEyOCAoYWJmZCwgbGluZV9wdHIsICZieXRlc19yZWFkKTsKLS0JICAgICAgbGluZV9wdHIgKz0g Ynl0ZXNfcmVhZDsKLSsJICAgICAgewotKwkJQ09SRV9BRERSIGFkanVzdAotKwkJICA9IHJlYWRf dW5zaWduZWRfbGViMTI4IChhYmZkLCBsaW5lX3B0ciwgJmJ5dGVzX3JlYWQpOwotKwotKwkJYWRk cmVzcyArPSAoKChvcF9pbmRleCArIGFkanVzdCkKLSsJCQkgICAgIC8gbGgtPm1heGltdW1fb3Bz X3Blcl9pbnN0cnVjdGlvbikKLSsJCQkgICAgKiBsaC0+bWluaW11bV9pbnN0cnVjdGlvbl9sZW5n dGgpOwotKwkJb3BfaW5kZXggPSAoKG9wX2luZGV4ICsgYWRqdXN0KQotKwkJCSAgICAlIGxoLT5t YXhpbXVtX29wc19wZXJfaW5zdHJ1Y3Rpb24pOwotKwkJbGluZV9wdHIgKz0gYnl0ZXNfcmVhZDsK LSsJICAgICAgfQotIAkgICAgICBicmVhazsKLSAJICAgIGNhc2UgRFdfTE5TX2FkdmFuY2VfbGlu ZToKLSAJICAgICAgbGluZSArPSByZWFkX3NpZ25lZF9sZWIxMjggKGFiZmQsIGxpbmVfcHRyLCAm Ynl0ZXNfcmVhZCk7Ci1AQCAtODE5NSwxMSArODIzOCwxOSBAQCBkd2FyZl9kZWNvZGVfbGluZXMg KHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNoYXIgKmNvbXBfZGlyLCBiZmQgKmFiZmQsCi0gCSAg ICAgICBpbnN0cnVjdGlvbiBsZW5ndGggc2luY2Ugc3BlY2lhbCBvcGNvZGUgMjU1IHdvdWxkIGhh dmUKLSAJICAgICAgIHNjYWxlZCB0aGUgdGhlIGluY3JlbWVudC4gICovCi0gCSAgICBjYXNlIERX X0xOU19jb25zdF9hZGRfcGM6Ci0tCSAgICAgIGFkZHJlc3MgKz0gKGxoLT5taW5pbXVtX2luc3Ry dWN0aW9uX2xlbmd0aAotLQkJCSAgKiAoKDI1NSAtIGxoLT5vcGNvZGVfYmFzZSkgLyBsaC0+bGlu ZV9yYW5nZSkpOwotKwkgICAgICB7Ci0rCQlDT1JFX0FERFIgYWRqdXN0ID0gKDI1NSAtIGxoLT5v cGNvZGVfYmFzZSkgLyBsaC0+bGluZV9yYW5nZTsKLSsKLSsJCWFkZHJlc3MgKz0gKCgob3BfaW5k ZXggKyBhZGp1c3QpCi0rCQkJICAgICAvIGxoLT5tYXhpbXVtX29wc19wZXJfaW5zdHJ1Y3Rpb24p Ci0rCQkJICAgICogbGgtPm1pbmltdW1faW5zdHJ1Y3Rpb25fbGVuZ3RoKTsKLSsJCW9wX2luZGV4 ID0gKChvcF9pbmRleCArIGFkanVzdCkKLSsJCQkgICAgJSBsaC0+bWF4aW11bV9vcHNfcGVyX2lu c3RydWN0aW9uKTsKLSsJICAgICAgfQotIAkgICAgICBicmVhazsKLSAJICAgIGNhc2UgRFdfTE5T X2ZpeGVkX2FkdmFuY2VfcGM6Ci0gCSAgICAgIGFkZHJlc3MgKz0gcmVhZF8yX2J5dGVzIChhYmZk LCBsaW5lX3B0cik7Ci0rCSAgICAgIG9wX2luZGV4ID0gMDsKLSAJICAgICAgbGluZV9wdHIgKz0g MjsKLSAJICAgICAgYnJlYWs7Ci0gCSAgICBkZWZhdWx0OgotQEAgLTg3NjEsNiArODgxMiw3IEBA IGR3YXJmMl9jb25zdF92YWx1ZSAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJv bCAqc3ltLAotICAgICBjYXNlIERXX0ZPUk1fYmxvY2syOgotICAgICBjYXNlIERXX0ZPUk1fYmxv Y2s0OgotICAgICBjYXNlIERXX0ZPUk1fYmxvY2s6Ci0rICAgIGNhc2UgRFdfRk9STV9leHBybG9j OgotICAgICAgIGJsayA9IERXX0JMT0NLIChhdHRyKTsKLSAgICAgICBpZiAoVFlQRV9MRU5HVEgg KFNZTUJPTF9UWVBFIChzeW0pKSAhPSBibGstPnNpemUpCi0gCWR3YXJmMl9jb25zdF92YWx1ZV9s ZW5ndGhfbWlzbWF0Y2hfY29tcGxhaW50IChTWU1CT0xfUFJJTlRfTkFNRSAoc3ltKSwKLUBAIC0x MDMwOCw2ICsxMDM2MCwxMCBAQCBkdW1wX2RpZV9zaGFsbG93IChzdHJ1Y3QgdWlfZmlsZSAqZiwg aW50IGluZGVudCwgc3RydWN0IGRpZV9pbmZvICpkaWUpCi0gCWNhc2UgRFdfRk9STV9ibG9jazE6 Ci0gCSAgZnByaW50Zl91bmZpbHRlcmVkIChmLCAiYmxvY2s6IHNpemUgJWQiLCBEV19CTE9DSyAo JmRpZS0+YXR0cnNbaV0pLT5zaXplKTsKLSAJICBicmVhazsKLSsJY2FzZSBEV19GT1JNX2V4cHJs b2M6Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChmLCAiZXhwcmVzc2lvbjogc2l6ZSAldSIsCi0r CQkJICAgICAgRFdfQkxPQ0sgKCZkaWUtPmF0dHJzW2ldKS0+c2l6ZSk7Ci0rCSAgYnJlYWs7Ci0g CWNhc2UgRFdfRk9STV9yZWYxOgotIAljYXNlIERXX0ZPUk1fcmVmMjoKLSAJY2FzZSBEV19GT1JN X3JlZjQ6Ci1AQCAtMTAzMjMsNiArMTAzNzksMTAgQEAgZHVtcF9kaWVfc2hhbGxvdyAoc3RydWN0 IHVpX2ZpbGUgKmYsIGludCBpbmRlbnQsIHN0cnVjdCBkaWVfaW5mbyAqZGllKQotIAkgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZiwgImNvbnN0YW50OiAlcyIsCi0gCQkJICAgICAgcHVsb25nZXN0IChE V19VTlNORCAoJmRpZS0+YXR0cnNbaV0pKSk7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfRk9STV9z ZWNfb2Zmc2V0OgotKwkgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgInNlY3Rpb24gb2Zmc2V0OiAl cyIsCi0rCQkJICAgICAgcHVsb25nZXN0IChEV19VTlNORCAoJmRpZS0+YXR0cnNbaV0pKSk7Ci0r CSAgYnJlYWs7Ci0gCWNhc2UgRFdfRk9STV9zaWc4OgotIAkgIGlmIChEV19TSUdOQVRVUkVEX1RZ UEUgKCZkaWUtPmF0dHJzW2ldKSAhPSBOVUxMKQotIAkgICAgZnByaW50Zl91bmZpbHRlcmVkIChm LCAic2lnbmF0dXJlZCB0eXBlLCBvZmZzZXQ6IDB4JXgiLAotQEAgLTEwMzQzLDYgKzEwNDAzLDkg QEAgZHVtcF9kaWVfc2hhbGxvdyAoc3RydWN0IHVpX2ZpbGUgKmYsIGludCBpbmRlbnQsIHN0cnVj dCBkaWVfaW5mbyAqZGllKQotIAkgIGVsc2UKLSAJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwg ImZsYWc6IEZBTFNFIik7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfRk9STV9mbGFnX3ByZXNlbnQ6 Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChmLCAiZmxhZzogVFJVRSIpOwotKwkgIGJyZWFrOwot IAljYXNlIERXX0ZPUk1faW5kaXJlY3Q6Ci0gCSAgLyogdGhlIHJlYWRlciB3aWxsIGhhdmUgcmVk dWNlZCB0aGUgaW5kaXJlY3QgZm9ybSB0bwotIAkgICAgIHRoZSAiYmFzZSBmb3JtIiBzbyB0aGlz IGZvcm0gc2hvdWxkIG5vdCBvY2N1ciAqLwotQEAgLTExNTIwLDcgKzExNTgzLDggQEAgYXR0cl9m b3JtX2lzX2Jsb2NrIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQotICAgICAgIGF0dHItPmZvcm0g PT0gRFdfRk9STV9ibG9jazEKLSAgICAgICB8fCBhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sy Ci0gICAgICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrNAotLSAgICAgIHx8IGF0dHIt PmZvcm0gPT0gRFdfRk9STV9ibG9jayk7Ci0rICAgICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JN X2Jsb2NrCi0rICAgICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2V4cHJsb2MpOwotIH0KLSAK LSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgQVRUUidzIHZhbHVlIGlzIGEgc2VjdGlvbiBvZmZzZXQg LS0tIGNsYXNzZXMKLUBAIC0xMTUzNSw3ICsxMTU5OSw4IEBAIHN0YXRpYyBpbnQKLSBhdHRyX2Zv cm1faXNfc2VjdGlvbl9vZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCi0gewotICAgcmV0 dXJuIChhdHRyLT5mb3JtID09IERXX0ZPUk1fZGF0YTQKLS0gICAgICAgICAgfHwgYXR0ci0+Zm9y bSA9PSBEV19GT1JNX2RhdGE4KTsKLSsgICAgICAgICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JN X2RhdGE4Ci0rCSAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX3NlY19vZmZzZXQpOwotIH0KLSAK LSAKCmRpZmYgLS1naXQgYS9nZGItYno2MDE4ODctZHdhcmY0LTJvZjIucGF0Y2ggYi9nZGItYno2 MDE4ODctZHdhcmY0LTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3 Zjg4YjAuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjAxODg3LWR3YXJmNC0yb2YyLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotY29tbWl0IDY2OTkwN2JkNmQ1NGFlOGU4NWIxMjc4 ZjBmMTZmODY0MWNlNjgwMmQKLUF1dGhvcjogVG9tIFRyb21leSA8dHJvbWV5QHJlZGhhdC5jb20+ Ci1EYXRlOiAgIFR1ZSBBcHIgMjAgMjE6MTk6MDcgMjAxMCArMDAwMAotCi0gICAgCSogZHdhcmYy cmVhZC5jIChkd2FyZjJfY29tcHV0ZV9uYW1lKTogSGFuZGxlIERXX0FUX2xpbmthZ2VfbmFtZS4K LSAgICAJKHJlYWRfcGFydGlhbF9kaWUpOiBMaWtld2lzZS4KLSAgICAJKGR3YXJmX2F0dHJfbmFt ZSk6IExpa2V3aXNlLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdlTG9n Ci0jIyAtMSwzICsxLDkgQEAKLSsyMDEwLTA0LTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhh dC5jb20+Ci0rCi0rCSogZHdhcmYycmVhZC5jIChkd2FyZjJfY29tcHV0ZV9uYW1lKTogSGFuZGxl IERXX0FUX2xpbmthZ2VfbmFtZS4KLSsJKHJlYWRfcGFydGlhbF9kaWUpOiBMaWtld2lzZS4KLSsJ KGR3YXJmX2F0dHJfbmFtZSk6IExpa2V3aXNlLgotKwotIDIwMTAtMDQtMjAgIENocmlzIE1vbGxl ciAgPGNtb2xsZXJAcmVkaGF0LmNvbT4KLSAJCi0gCVBSIDEwODY3Ci0tLS0gZ2RiLTcuMS9nZGIv ZHdhcmYycmVhZC5jLm9yaWcJMjAxMC0wNi0wOSAxNDozODowMS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4xL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNi0wOSAxNDo0OTo1My4wMDAwMDAwMDAg KzAyMDAKLUBAIC03Njc1LDcgKzc2NzUsMTEgQEAgcmVhZF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBh cnRpYWxfZGllX2luZgotIAkgICAgICBicmVhazsKLSAJICAgIH0KLSAJICBicmVhazsKLSsJY2Fz ZSBEV19BVF9saW5rYWdlX25hbWU6Ci0gCWNhc2UgRFdfQVRfTUlQU19saW5rYWdlX25hbWU6Ci0r CSAgLyogTm90ZSB0aGF0IGJvdGggZm9ybXMgb2YgbGlua2FnZSBuYW1lIG1pZ2h0IGFwcGVhci4g IFdlCi0rCSAgICAgYXNzdW1lIHRoZXkgd2lsbCBiZSB0aGUgc2FtZSwgYW5kIHdlIG9ubHkgc3Rv cmUgdGhlIGxhc3QKLSsJICAgICBvbmUgd2Ugc2VlLiAgKi8KLSAJICBpZiAoY3UtPmxhbmd1YWdl ID09IGxhbmd1YWdlX2FkYSkKLSAJICAgIHBhcnRfZGllLT5uYW1lID0gRFdfU1RSSU5HICgmYXR0 cik7Ci0gCSAgYnJlYWs7Ci1AQCAtMTAxNjcsNyArMTAxNzEsMTEgQEAgZHdhcmYyX25hbWUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1YwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciA9IE5V TEw7Ci0gCi0gICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2FkYSkKLS0gICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0rICAgIHsK LSsgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbGlua2FnZV9uYW1lLCBjdSk7 Ci0rICAgICAgaWYgKGF0dHIgPT0gTlVMTCkKLSsJYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0rICAgIH0KLSAKLSAgIGlmICghYXR0cikKLSAg ICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX25hbWUsIGN1KTsKLUBAIC0xMDU1NSw2 ICsxMDU2Myw4IEBAIGR3YXJmX2F0dHJfbmFtZSAodW5zaWduZWQgYXR0cikKLSAgICAgLyogRFdB UkYgNCB2YWx1ZXMuICAqLwotICAgICBjYXNlIERXX0FUX3NpZ25hdHVyZToKLSAgICAgICByZXR1 cm4gIkRXX0FUX3NpZ25hdHVyZSI7Ci0rICAgIGNhc2UgRFdfQVRfbGlua2FnZV9uYW1lOgotKyAg ICAgIHJldHVybiAiRFdfQVRfbGlua2FnZV9uYW1lIjsKLSAgICAgLyogU0dJL01JUFMgZXh0ZW5z aW9ucy4gICovCi0gI2lmZGVmIE1JUFMgLyogY29sbGlkZXMgd2l0aCBEV19BVF9IUF9ibG9ja19p bmRleCAqLwotICAgICBjYXNlIERXX0FUX01JUFNfZmRlOgoKZGlmZiAtLWdpdCBhL2dkYi1iejYw MjMxNC1wdHlwZS1jbGFzcy10eXBlZGVmLTFvZjMucGF0Y2ggYi9nZGItYno2MDIzMTQtcHR5cGUt Y2xhc3MtdHlwZWRlZi0xb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx ZDMxYmYyLi4wMDAwMDAwCi0tLSBhL2dkYi1iejYwMjMxNC1wdHlwZS1jbGFzcy10eXBlZGVmLTFv ZjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzQgKzAsMCBAQAotY29tbWl0IGY0OWY5MWU5 YzNlYWJhODQ3Zjc1ZjVjNDZlNzdlMjYxYTc2ZDlhOWIKLUF1dGhvcjogSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci1EYXRlOiAgIE1vbiBKdW4gMjggMjA6MzU6NTEg MjAxMCArMDAwMAotCi0gICAgZ2RiLwotICAgIAkqIGNwLW5hbWVzcGFjZS5jIChjcF9sb29rdXBf bmVzdGVkX3R5cGUpOiBOZXcgdmFyaWFibGUKLSAgICAJY29uY2F0ZW5hdGVkX25hbWUuICBUdXJu IHRoZSBjdXJyZW50IHJldHVybiBjb25kaXRpb24gaW50byBhIHJldmVyc2UKLSAgICAJb25lLiAg Q2FsbCBhbHNvIGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCBvbiB0aGUgY29uc3RydWN0ZWQgcXVh bGlmaWVkCi0gICAgCW5hbWUuCi0gICAgCSogc3ltdGFiLmMgKGxvb2t1cF9zeW1ib2xfYXV4KTog TW92ZSB2YXJpYWJsZSBvYmpmaWxlIGFuZCBzZWFyY2hpbmcgaW4KLSAgICAJb3RoZXIgZmlsZXMg aW50byBhIGNhbGxlZCAuLi4KLSAgICAJKGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCk6IC4uLiBu ZXcgZnVuY3Rpb24gaGVyZS4KLSAgICAJKiBzeW10YWIuaCAobG9va3VwX3N0YXRpY19zeW1ib2xf YXV4KTogTmV3IHByb3RvdHlwZS4KLSAgICAJKiB2YWxvcHMuYyAodmFsdWVfbWF5YmVfbmFtZXNw YWNlX2VsdCk6IENhbGwgYWxzbwotICAgIAlsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggaWYgd2Ug ZmFpbGVkIG90aGVyd2lzZS4KLSAgICAKLSAgICBnZGIvdGVzdHN1aXRlLwotICAgIAkqIGdkYi5j cC9uYW1lc3BhY2UuZXhwICh3aGF0aXMgQzo6Y090aGVyRmlsZVR5cGUpCi0gICAgCSh3aGF0aXMg OjpDOjpjT3RoZXJGaWxlVHlwZSwgd2hhdGlzIEM6OmNPdGhlckZpbGVWYXIpCi0gICAgCSh3aGF0 aXMgOjpDOjpjT3RoZXJGaWxlVmFyLCBwcmludCBDOjpjT3RoZXJGaWxlVmFyKQotICAgIAkocHJp bnQgOjpDOjpjT3RoZXJGaWxlVmFyKQotICAgIAkod2hhdGlzIEM6Ok90aGVyRmlsZUNsYXNzOjpj T3RoZXJGaWxlQ2xhc3NUeXBlKQotICAgIAkod2hhdGlzIDo6Qzo6T3RoZXJGaWxlQ2xhc3M6OmNP dGhlckZpbGVDbGFzc1R5cGUpCi0gICAgCShwcmludCBDOjpPdGhlckZpbGVDbGFzczo6Y090aGVy RmlsZUNsYXNzVmFyKQotICAgIAkocHJpbnQgOjpjT3RoZXJGaWxlQ2xhc3NWYXIpCi0gICAgCShw cmludCA6OkM6Ok90aGVyRmlsZUNsYXNzOjpjT3RoZXJGaWxlQ2xhc3NWYXIpOiBOZXcgdGVzdHMu Ci0gICAgCShwdHlwZSBPdGhlckZpbGVDbGFzcywgcHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyk6 IFBlcm1pdCBhcmJpdHJhcnkKLSAgICAJdHJhaWxpbmcgY29udGVudC4KLSAgICAJKiBnZGIuY3Av bmFtZXNwYWNlMS5jYyAoQzo6T3RoZXJGaWxlQ2xhc3M6OmNPdGhlckZpbGVDbGFzc1R5cGUpCi0g ICAgCShDOjpPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFyKQotICAgIAkoQzo6T3Ro ZXJGaWxlQ2xhc3M6OmNPdGhlckZpbGVDbGFzc1Zhcl91c2UsIEM6OmNPdGhlckZpbGVUeXBlKQot ICAgIAkoQzo6Y090aGVyRmlsZVZhciwgQzo6Y090aGVyRmlsZVZhcl91c2UpOiBOZXcuCi0KLSMj IyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTggQEAK LSAyMDEwLTA2LTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0gCi0rCSogY3AtbmFtZXNwYWNlLmMgKGNwX2xvb2t1cF9uZXN0ZWRfdHlwZSk6IE5ldyB2YXJp YWJsZQotKwljb25jYXRlbmF0ZWRfbmFtZS4gIFR1cm4gdGhlIGN1cnJlbnQgcmV0dXJuIGNvbmRp dGlvbiBpbnRvIGEgcmV2ZXJzZQotKwlvbmUuICBDYWxsIGFsc28gbG9va3VwX3N0YXRpY19zeW1i b2xfYXV4IG9uIHRoZSBjb25zdHJ1Y3RlZCBxdWFsaWZpZWQKLSsJbmFtZS4KLSsJKiBzeW10YWIu YyAobG9va3VwX3N5bWJvbF9hdXgpOiBNb3ZlIHZhcmlhYmxlIG9iamZpbGUgYW5kIHNlYXJjaGlu ZyBpbgotKwlvdGhlciBmaWxlcyBpbnRvIGEgY2FsbGVkIC4uLgotKwkobG9va3VwX3N0YXRpY19z eW1ib2xfYXV4KTogLi4uIG5ldyBmdW5jdGlvbiBoZXJlLgotKwkqIHN5bXRhYi5oIChsb29rdXBf c3RhdGljX3N5bWJvbF9hdXgpOiBOZXcgcHJvdG90eXBlLgotKwkqIHZhbG9wcy5jICh2YWx1ZV9t YXliZV9uYW1lc3BhY2VfZWx0KTogQ2FsbCBhbHNvCi0rCWxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1 eCBpZiB3ZSBmYWlsZWQgb3RoZXJ3aXNlLgotKwotKzIwMTAtMDYtMjggIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJRml4IFBSIGMrKy8xMTcwMyBhbmQg UFIgZ2RiLzE0NDguCi0gCSogYy1leHAueSAoeXlsZXgpIDxsYXN0X3dhc19jb2xvbmNvbG9uICYm IGZpcnN0X3dhc19jb2xvbmNvbG9uPjogQWRkCi0gCUZJUlNUX0lURVIgY2hlY2suCi1JbmRleDog Z2RiLTcuMS9nZGIvY3AtbmFtZXNwYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcv Z2RiL2NwLW5hbWVzcGFjZS5jCTIwMTAtMDYtMjkgMTc6NTQ6MTcuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMS9nZGIvY3AtbmFtZXNwYWNlLmMJMjAxMC0wNi0yOSAxNzo1OTozMi4wMDAwMDAw MDAgKzAyMDAKLUBAIC01ODUsMTAgKzU4NSwyNCBAQCBjcF9sb29rdXBfbmVzdGVkX3R5cGUgKHN0 cnVjdCB0eXBlICpwYXJlCi0gCQkJCQkJCSBuZXN0ZWRfbmFtZSwKLSAJCQkJCQkJIGJsb2NrLAot IAkJCQkJCQkgVkFSX0RPTUFJTik7Ci0tCWlmIChzeW0gPT0gTlVMTCB8fCBTWU1CT0xfQ0xBU1Mg KHN5bSkgIT0gTE9DX1RZUEVERUYpCi0tCSAgcmV0dXJuIE5VTEw7Ci0tCWVsc2UKLSsJY2hhciAq Y29uY2F0ZW5hdGVkX25hbWU7Ci0rCi0rCWlmIChzeW0gIT0gTlVMTCAmJiBTWU1CT0xfQ0xBU1Mg KHN5bSkgPT0gTE9DX1RZUEVERUYpCi0rCSAgcmV0dXJuIFNZTUJPTF9UWVBFIChzeW0pOwotKwot KwkvKiBOb3cgc2VhcmNoIGFsbCBzdGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xzLiAgTm90IHN0cmlj dGx5IGNvcnJlY3QsCi0rCSAgIGJ1dCBtb3JlIHVzZWZ1bCB0aGFuIGFuIGVycm9yLiAgV2UgZG8g bm90IHRyeSB0byBndWVzcyBhbnkgaW1wb3J0ZWQKLSsJICAgbmFtZXNwYWNlIGFzIGV2ZW4gdGhl IGZ1bGx5IHNwZWNpZmllZCBuYW1lc3BhY2Ugc2VhY2ggaXMgaXMgYWxyZWFkeQotKwkgICBub3Qg QysrIGNvbXBsaWFudCBhbmQgbW9yZSBhc3N1bXB0aW9ucyBjb3VsZCBtYWtlIGl0IHRvbyBtYWdp Yy4gICovCi0rCi0rCWNvbmNhdGVuYXRlZF9uYW1lID0gYWxsb2NhIChzdHJsZW4gKHBhcmVudF9u YW1lKSArIDIKLSsJCQkJICAgICsgc3RybGVuIChuZXN0ZWRfbmFtZSkgKyAxKTsKLSsJc3ByaW50 ZiAoY29uY2F0ZW5hdGVkX25hbWUsICIlczo6JXMiLCBwYXJlbnRfbmFtZSwgbmVzdGVkX25hbWUp OwotKwlzeW0gPSBsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggKGNvbmNhdGVuYXRlZF9uYW1lLCBW QVJfRE9NQUlOKTsKLSsJaWYgKHN5bSAhPSBOVUxMICYmIFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBM T0NfVFlQRURFRikKLSAJICByZXR1cm4gU1lNQk9MX1RZUEUgKHN5bSk7Ci0rCi0rCXJldHVybiBO VUxMOwotICAgICAgIH0KLSAgICAgZGVmYXVsdDoKLSAgICAgICBpbnRlcm5hbF9lcnJvciAoX19G SUxFX18sIF9fTElORV9fLAotSW5kZXg6IGdkYi03LjEvZ2RiL3N5bXRhYi5oCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9zeW10YWIuaAkyMDEwLTA2LTI5IDE3OjU0OjE2LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL3N5bXRhYi5oCTIwMTAtMDYtMjkgMTg6MDA6Mzcu MDAwMDAwMDAwICswMjAwCi1AQCAtMTAzNiw2ICsxMDM2LDEyIEBAIGV4dGVybiBzdHJ1Y3QgcGFy dGlhbF9zeW1ib2wgKmxvb2t1cF9wYXIKLSAJCQkJCQkgICAgIGNvbnN0IGNoYXIgKiwgaW50LAot IAkJCQkJCSAgICAgZG9tYWluX2VudW0pOwotIAotKy8qIExvb2t1cCBhIHN5bWJvbCBvbmx5IGlu IHRoZSBmaWxlIHN0YXRpYyBzY29wZSBvZiBhbGwgdGhlIG9iamZpbGVzLiAgKi8KLSsKLStzdHJ1 Y3Qgc3ltYm9sICpsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsCi0r CQkJCQkgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSsKLSsKLSAvKiBsb29rdXAgYSBzeW1i b2wgYnkgbmFtZSwgd2l0aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCi0gCi0gZXh0ZXJuIHN0cnVj dCBzeW1ib2wgKmxvb2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqLCBjb25z dCBjaGFyICosCi1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Uu ZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS5leHAJMjAxMC0wNi0yOSAxNzo1NDoxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAJMjAxMC0wNi0yOSAxODoxNzox Ny4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMTcsNiArMjE3LDcwIEBAIGdkYl9leHBlY3QgewotIGdk Yl90ZXN0ICJicmVhayBCQkI6OkNsYXNzOjp4eXpxIiBcCi0gICAgICJCcmVha3BvaW50LiphdCAk aGV4OiBmaWxlLipuYW1lc3BhY2UuY2MsIGxpbmUgNjhcXC4iCi0gCi0rIyBUZXN0cyBhY2Nlc3Np bmcgc3RhdGljIGVsZW1lbnRzIGluIG5hbWVzcGFjZSBvZiBvdGhlciBmaWxlLgotKwotK2dkYl90 ZXN0ICJ3aGF0aXMgQzo6Y090aGVyRmlsZVR5cGUiICJ0eXBlID0gc2hvcnQiCi0rZ2RiX3Rlc3Qg IndoYXRpcyA6OkM6OmNPdGhlckZpbGVUeXBlIiAidHlwZSA9IHNob3J0IgotK2dkYl90ZXN0ICJ3 aGF0aXMgQzo6Y090aGVyRmlsZVZhciIgInR5cGUgPSBjb25zdCBDOjpjT3RoZXJGaWxlVHlwZSIK LStnZGJfdGVzdCAid2hhdGlzIDo6Qzo6Y090aGVyRmlsZVZhciIgInR5cGUgPSBjb25zdCBDOjpj T3RoZXJGaWxlVHlwZSIKLStnZGJfdGVzdCAicHJpbnQgQzo6Y090aGVyRmlsZVZhciIgIlxcJFxb MC05XF0uKiA9IDMxOSIKLStnZGJfdGVzdCAicHJpbnQgOjpDOjpjT3RoZXJGaWxlVmFyIiAiXFwk XFswLTlcXS4qID0gMzE5IgotKwotK2lmIHtbdGVzdF9jb21waWxlcl9pbmZvIHtnY2MtWzAtM10t Kn1dCi0rICAgIHx8IFt0ZXN0X2NvbXBpbGVyX2luZm8ge2djYy00LVswLTRdLSp9XX0gewotKyAg ICAjIFRoZSB0eXBlIGluIGNsYXNzIGlzIG1pc3NpbmcgaW4gb2xkZXIgR0NDcy4KLSsgICAgc2V0 dXBfeGZhaWwgKi0qLSogCi0rfQotK2dkYl90ZXN0ICJ3aGF0aXMgQzo6T3RoZXJGaWxlQ2xhc3M6 OmNPdGhlckZpbGVDbGFzc1R5cGUiICJ0eXBlID0gc2hvcnQiCi0raWYge1t0ZXN0X2NvbXBpbGVy X2luZm8ge2djYy1bMC0zXS0qfV0KLSsgICAgfHwgW3Rlc3RfY29tcGlsZXJfaW5mbyB7Z2NjLTQt WzAtNF0tKn1dfSB7Ci0rICAgICMgVGhlIHR5cGUgaW4gY2xhc3MgaXMgbWlzc2luZyBpbiBvbGRl ciBHQ0NzLgotKyAgICBzZXR1cF94ZmFpbCAqLSotKiAKLSt9Ci0rZ2RiX3Rlc3QgIndoYXRpcyA6 OkM6Ok90aGVyRmlsZUNsYXNzOjpjT3RoZXJGaWxlQ2xhc3NUeXBlIiAidHlwZSA9IHNob3J0Igot KwotK3NldCB0ZXN0ICJwcmludCBDOjpPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFy IgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJcXCRcWzAtOVxd LiogPSAzMThcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAg LXJlICJzdGF0aWMgZmllbGQgY090aGVyRmlsZUNsYXNzVmFyIGhhcyBiZWVuIG9wdGltaXplZCBv dXRcclxuJGdkYl9wcm9tcHQgJCIgewotKwlzZXR1cF9rZmFpbCAiYysrLzExNzAyIiAiKi0qLSoi Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30KLSsKLSsjIEZTRiBHQ0MgPD00LjQgY3JlYXRlcyB1 bnF1YWxpZmllZCBESUUgImNPdGhlckZpbGVDbGFzc1ZhciIgaWdub3JpbmcgdGhlCi0rIyBuYW1l c3BhY2UgdGhlIHNhbWUgd2F5IG9sZGVyIEdEQiBkaWQuCi0rc2V0IHRlc3QgInByaW50IDo6Y090 aGVyRmlsZUNsYXNzVmFyIgotK3NldCB0ZXN0MiAicHJpbnQgOjpDOjpPdGhlckZpbGVDbGFzczo6 Y090aGVyRmlsZUNsYXNzVmFyIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsg ICAgLXJlICJObyBzeW1ib2wgXCJjT3RoZXJGaWxlQ2xhc3NWYXJcIiBpbiBjdXJyZW50IGNvbnRl eHRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rCi0rCWdkYl90ZXN0X211 bHRpcGxlICR0ZXN0MiAkdGVzdDIgewotKwkgICAgLXJlICJcXCRcWzAtOVxdLiogPSAzMThcclxu JGdkYl9wcm9tcHQgJCIgewotKwkJcGFzcyAkdGVzdDIKLSsJICAgIH0KLSsJICAgIC1yZSAic3Rh dGljIGZpZWxkIGNPdGhlckZpbGVDbGFzc1ZhciBoYXMgYmVlbiBvcHRpbWl6ZWQgb3V0XHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSsJCXNldHVwX2tmYWlsICJjKysvMTE3MDIiICIqLSotKiIKLSsJCWZh aWwgJHRlc3QyCi0rCSAgICB9Ci0rCX0KLSsKLSsgICAgfQotKyAgICAtcmUgIlxcJFxbMC05XF0u KiA9IDMxOFxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCWlmIHtbdGVzdF9jb21waWxlcl9pbmZvIHtn Y2MtWzAtM10tKn1dCi0rCSAgICB8fCBbdGVzdF9jb21waWxlcl9pbmZvIHtnY2MtNC1bMC00XS0q fV19IHsKLSsJICAgICMgRG8gbm90IHBlcm1pdCB0byBYRkFJTCBvbiByZWNlbnQgR0NDcy4KLSsJ ICAgIHNldHVwX3hmYWlsICotKi0qIAotKwl9Ci0rCWZhaWwgJHRlc3QKLSsKLSsJdW5yZXNvbHZl ZCAkdGVzdDIKLSsgICAgfQotK30KLSsKLSAjIFRlc3QgdG8gc2VlIGlmIHRoZSBhcHByb3ByaWF0 ZSBuYW1lc3BhY2VzIGFyZSBpbiBzY29wZSB3aGVuIHRyeWluZwotICMgdG8gcHJpbnQgb3V0IHN0 dWZmIGZyb20gd2l0aGluIGEgZnVuY3Rpb24gZGVmaW5lZCB3aXRoaW4gYQotICMgbmFtZXNwYWNl LgotQEAgLTI2MCw3ICszMjQsNyBAQCBnZGJfdGVzdCAicHR5cGUgQzo6TmVzdGVkQ2xhc3MiICJO byBzeW1iCi0gIyBUZXN0cyBpbnZvbHZpbmcgbXVsdGlwbGUgZmlsZXMKLSAKLSBnZGJfdGVzdCAi cHJpbnQgY090aGVyRmlsZSIgIlxcJFxbMC05XF0uKiA9IDMxNiIKLS1nZGJfdGVzdCAicHR5cGUg T3RoZXJGaWxlQ2xhc3MiICJ0eXBlID0gKGNsYXNzIEM6Ok90aGVyRmlsZUNsYXNzIFx7XHJcbiAg cHVibGljOnxzdHJ1Y3QgQzo6T3RoZXJGaWxlQ2xhc3MgXHspXHJcbiAgICBpbnQgejtcclxuXH0i Ci0rZ2RiX3Rlc3QgInB0eXBlIE90aGVyRmlsZUNsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpPdGhl ckZpbGVDbGFzcyBce1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6Ok90aGVyRmlsZUNsYXNzIFx7KVxy XG4gICAgaW50IHo7XHJcbi4qXH0iCi0gY3BfdGVzdF9wdHlwZV9jbGFzcyBcCi0gCSJwdHlwZSA6 OkM6Ok90aGVyRmlsZUNsYXNzIiAiIiAiY2xhc3MiICJDOjpPdGhlckZpbGVDbGFzcyIgXAotIAl7 Ci1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UxLmNjCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZTEu Y2MJMjAxMC0wMS0wMSAwODozMjowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZTEuY2MJMjAxMC0wNi0yOSAxNzo1Njo0Mi4wMDAwMDAw MDAgKzAyMDAKLUBAIC0yMSw3ICsyMSwxNSBAQCBuYW1lc3BhY2UgQwotICAgY2xhc3MgT3RoZXJG aWxlQ2xhc3MgewotICAgcHVibGljOgotICAgICBpbnQgejsKLSsKLSsgICAgdHlwZWRlZiBzaG9y dCBjT3RoZXJGaWxlQ2xhc3NUeXBlOwotKyAgICBzdGF0aWMgY29uc3QgY090aGVyRmlsZUNsYXNz VHlwZSBjT3RoZXJGaWxlQ2xhc3NWYXIgPSAzMTg7Ci0rICAgIGNPdGhlckZpbGVDbGFzc1R5cGUg Y090aGVyRmlsZUNsYXNzVmFyX3VzZSAoKTsKLSAgIH07Ci0rICBPdGhlckZpbGVDbGFzczo6Y090 aGVyRmlsZUNsYXNzVHlwZSBPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFyX3VzZSAo KQotKyAgewotKyAgICByZXR1cm4gY090aGVyRmlsZUNsYXNzVmFyOwotKyAgfQotIAotICAgbmFt ZXNwYWNlIHsKLSAgICAgaW50IGNYT3RoZXJGaWxlID0gMjk7Ci1AQCAtMzUsNiArNDMsMTMgQEAg bmFtZXNwYWNlIEMKLSAgICAgc3RhdGljIE90aGVyRmlsZUNsYXNzICpjID0gbmV3IE90aGVyRmls ZUNsYXNzKCk7Ci0gICAgIGMtPnogPSBjT3RoZXJGaWxlICsgY1hPdGhlckZpbGU7Ci0gICB9Ci0r Ci0rICB0eXBlZGVmIHNob3J0IGNPdGhlckZpbGVUeXBlOwotKyAgc3RhdGljIGNvbnN0IGNPdGhl ckZpbGVUeXBlIGNPdGhlckZpbGVWYXIgPSAzMTk7Ci0rICBjT3RoZXJGaWxlVHlwZSBjT3RoZXJG aWxlVmFyX3VzZSAoKQotKyAgewotKyAgICByZXR1cm4gY090aGVyRmlsZVZhcjsKLSsgIH0KLSB9 Ci0gCi0gbmFtZXNwYWNlIHsKLUluZGV4OiBnZGItNy4xL2dkYi92YWxvcHMuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdmFsb3BzLmMJMjAxMC0wNi0yOSAxNzo1NDoxNi4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi92YWxvcHMuYwkyMDEwLTA2LTI5IDE4OjE1OjAw LjAwMDAwMDAwMCArMDIwMAotQEAgLTMyNTMsOSArMzI1MywxNyBAQCB2YWx1ZV9tYXliZV9uYW1l c3BhY2VfZWx0IChjb25zdCBzdHJ1Y3QgCi0gICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gICBzdHJ1 Y3QgdmFsdWUgKnJlc3VsdDsKLSAKLS0gIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNl KG5hbWVzcGFjZV9uYW1lLCBuYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2V0X3NlbGVjdGVkX2Jsb2NrICgwKSwgCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWQVJfRE9NQUlOKTsKLSsgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNl IChuYW1lc3BhY2VfbmFtZSwgbmFtZSwKLSsJCQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCks IFZBUl9ET01BSU4pOwotKwotKyAgaWYgKHN5bSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgY2hh ciAqY29uY2F0ZW5hdGVkX25hbWUgPSBhbGxvY2EgKHN0cmxlbiAobmFtZXNwYWNlX25hbWUpICsg MgotKwkJCQkJKyBzdHJsZW4gKG5hbWUpICsgMSk7Ci0rCi0rICAgICAgc3ByaW50ZiAoY29uY2F0 ZW5hdGVkX25hbWUsICIlczo6JXMiLCBuYW1lc3BhY2VfbmFtZSwgbmFtZSk7Ci0rICAgICAgc3lt ID0gbG9va3VwX3N0YXRpY19zeW1ib2xfYXV4IChjb25jYXRlbmF0ZWRfbmFtZSwgVkFSX0RPTUFJ Tik7Ci0rICAgIH0KLSAKLSAgIGlmIChzeW0gPT0gTlVMTCkKLSAgICAgcmV0dXJuIE5VTEw7Ci0t LS0gYS9nZGIvc3ltdGFiLmMKLSsrKyBiL2dkYi9zeW10YWIuYwotQEAgLTExMjIsMTAgKzExMjEs MjEgQEAgbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBi bG9jayAqYmxvY2ssCi0gICAgIHJldHVybiBzeW07Ci0gCi0gICAvKiBOb3cgc2VhcmNoIGFsbCBz dGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xzLiAgTm90IHN0cmljdGx5IGNvcnJlY3QsCi0tICAgICBi dXQgbW9yZSB1c2VmdWwgdGhhbiBhbiBlcnJvci4gIERvIHRoZSBzeW10YWJzIGZpcnN0LCB0aGVu IGNoZWNrCi0tICAgICB0aGUgcHN5bXRhYnMuICBJZiBhIHBzeW10YWIgaW5kaWNhdGVzIHRoZSBl eGlzdGVuY2Ugb2YgdGhlCi0tICAgICBkZXNpcmVkIG5hbWUgYXMgYSBmaWxlLWxldmVsIHN0YXRp YywgdGhlbiBkbyBwc3ltdGFiLXRvLXN5bXRhYgotLSAgICAgY29udmVyc2lvbiBvbiB0aGUgZmx5 IGFuZCByZXR1cm4gdGhlIGZvdW5kIHN5bWJvbC4gKi8KLSsgICAgIGJ1dCBtb3JlIHVzZWZ1bCB0 aGFuIGFuIGVycm9yLiAgKi8KLSsKLSsgIHJldHVybiBsb29rdXBfc3RhdGljX3N5bWJvbF9hdXgg KG5hbWUsIGRvbWFpbik7Ci0rfQotKwotKy8qIFNlYXJjaCBhbGwgc3RhdGljIGZpbGUtbGV2ZWwg c3ltYm9scyBmb3IgTkFNRSBmcm9tIERPTUFJTi4gIERvIHRoZSBzeW10YWJzCi0rICAgZmlyc3Qs IHRoZW4gY2hlY2sgdGhlIHBzeW10YWJzLiAgSWYgYSBwc3ltdGFiIGluZGljYXRlcyB0aGUgZXhp c3RlbmNlIG9mIHRoZQotKyAgIGRlc2lyZWQgbmFtZSBhcyBhIGZpbGUtbGV2ZWwgc3RhdGljLCB0 aGVuIGRvIHBzeW10YWItdG8tc3ltdGFiIGNvbnZlcnNpb24gb24KLSsgICB0aGUgZmx5IGFuZCBy ZXR1cm4gdGhlIGZvdW5kIHN5bWJvbC4gKi8KLSsKLStzdHJ1Y3Qgc3ltYm9sICoKLStsb29rdXBf c3RhdGljX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGRvbWFpbl9lbnVtIGRv bWFpbikKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIHN0cnVjdCBzeW1ib2wg KnN5bTsKLSAKLSAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKFNUQVRJQ19CTE9D SywgbmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKCmRpZmYgLS1naXQgYS9nZGIt Yno2MDIzMTQtcHR5cGUtY2xhc3MtdHlwZWRlZi0yb2YzLnBhdGNoIGIvZ2RiLWJ6NjAyMzE0LXB0 eXBlLWNsYXNzLXR5cGVkZWYtMm9mMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggM2YwMWViMy4uMDAwMDAwMAotLS0gYS9nZGItYno2MDIzMTQtcHR5cGUtY2xhc3MtdHlwZWRl Zi0yb2YzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzA4ICswLDAgQEAKLWNvbW1pdCA3NThh MWY3MTQ5Y2I3NDY5YzdlNmJiMzBjYjU3MjcxNWVlOTBhNmU4Ci1BdXRob3I6IEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBNb24gSnVuIDI4IDIwOjM5 OjI3IDIwMTAgKzAwMDAKLQotICAgIGdkYi8KLSAgICAJKiBjLXR5cGVwcmludC5jIChjX3R5cGVf cHJpbnRfYmFzZSk6IEZvciBubyBmaWVsZHMgY2hlY2sgaW5jbHVkZSBhbHNvCi0gICAgCVRZUEVf VFlQRURFRl9GSUVMRF9DT1VOVC4gIFByaW50IG5ldyB0eXBlZGVmcyBzZWN0aW9uLgotICAgIAkq IGR3YXJmMnJlYWQuYyAoc3RydWN0IHR5cGVkZWZfZmllbGRfbGlzdCkKLSAgICAJKHN0cnVjdCBm aWVsZF9pbmZvKSA8dHlwZWRlZl9maWVsZF9saXN0LCB0eXBlZGVmX2ZpZWxkX2xpc3RfY291bnQ+ OiBOZXcuCi0gICAgCShkd2FyZjJfYWRkX3R5cGVkZWYpOiBOZXcuCi0gICAgCShyZWFkX3N0cnVj dHVyZV90eXBlKTogQ2FsbCBkd2FyZjJfYWRkX3R5cGVkZWYgZm9yIERXX1RBR190eXBlZGVmLgot ICAgIAlDb3B5IGFsc28gRkkuVFlQRURFRl9GSUVMRF9MSVNULgotICAgIAkqIGdkYnR5cGVzLmgg KHN0cnVjdCB0eXBlZGVmX2ZpZWxkKQotICAgIAkoc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlKSA8 dHlwZWRlZl9maWVsZCwgdHlwZWRlZl9maWVsZF9jb3VudD4KLSAgICAJKFRZUEVfVFlQRURFRl9G SUVMRF9BUlJBWSwgVFlQRV9UWVBFREVGX0ZJRUxELCBUWVBFX1RZUEVERUZfRklFTERfTkFNRSkK LSAgICAJKFRZUEVfVFlQRURFRl9GSUVMRF9UWVBFLCBUWVBFX1RZUEVERUZfRklFTERfQ09VTlQp OiBOZXcuCi0gICAgCi0gICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAJKiBnZGIuY3AvbmFtZXNwYWNl LmV4cCAocHR5cGUgT3RoZXJGaWxlQ2xhc3MgdHlwZWRlZnMpCi0gICAgCShwdHlwZSA6OkM6Ok90 aGVyRmlsZUNsYXNzIHR5cGVkZWZzKTogTmV3LgotICAgIAkqIGdkYi5jcC9uYW1lc3BhY2UxLmNj IChDOjpPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVHlwZTIpCi0gICAgCShDOjpPdGhl ckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFyMik6IE5ldy4KLSAgICAJKEM6Ok90aGVyRmls ZUNsYXNzOjpjT3RoZXJGaWxlQ2xhc3NWYXJfdXNlKTogVXNlIGFsc28KLSAgICAJY090aGVyRmls ZUNsYXNzVmFyMi4KLSAgICAJKEM6OmNPdGhlckZpbGVUeXBlMiwgQzo6Y090aGVyRmlsZVZhcjIp OiBOZXcuCi0gICAgCShDOjpjT3RoZXJGaWxlVmFyX3VzZSk6IHVzZSBhbHNvIGNPdGhlckZpbGVW YXIyLgotICAgIAkqIGdkYi5jcC91c2VyZGVmLmV4cCAocHR5cGUgJipjKTogUGVybWl0IGFyYml0 cmFyeSB0cmFpbGluZyB0ZXh0LgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hh bmdlTG9nCi0jIyAtMSw1ICsxLDE5IEBACi0gMjAxMC0wNi0yOCAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwkqIGMtdHlwZXByaW50LmMgKGNfdHlwZV9w cmludF9iYXNlKTogRm9yIG5vIGZpZWxkcyBjaGVjayBpbmNsdWRlIGFsc28KLSsJVFlQRV9UWVBF REVGX0ZJRUxEX0NPVU5ULiAgUHJpbnQgbmV3IHR5cGVkZWZzIHNlY3Rpb24uCi0rCSogZHdhcmYy cmVhZC5jIChzdHJ1Y3QgdHlwZWRlZl9maWVsZF9saXN0KQotKwkoc3RydWN0IGZpZWxkX2luZm8p IDx0eXBlZGVmX2ZpZWxkX2xpc3QsIHR5cGVkZWZfZmllbGRfbGlzdF9jb3VudD46IE5ldy4KLSsJ KGR3YXJmMl9hZGRfdHlwZWRlZik6IE5ldy4KLSsJKHJlYWRfc3RydWN0dXJlX3R5cGUpOiBDYWxs IGR3YXJmMl9hZGRfdHlwZWRlZiBmb3IgRFdfVEFHX3R5cGVkZWYuCi0rCUNvcHkgYWxzbyBGSS5U WVBFREVGX0ZJRUxEX0xJU1QuCi0rCSogZ2RidHlwZXMuaCAoc3RydWN0IHR5cGVkZWZfZmllbGQp Ci0rCShzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUpIDx0eXBlZGVmX2ZpZWxkLCB0eXBlZGVmX2Zp ZWxkX2NvdW50PgotKwkoVFlQRV9UWVBFREVGX0ZJRUxEX0FSUkFZLCBUWVBFX1RZUEVERUZfRklF TEQsIFRZUEVfVFlQRURFRl9GSUVMRF9OQU1FKQotKwkoVFlQRV9UWVBFREVGX0ZJRUxEX1RZUEUs IFRZUEVfVFlQRURFRl9GSUVMRF9DT1VOVCk6IE5ldy4KLSsKLSsyMDEwLTA2LTI4ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCSogY3AtbmFtZXNwYWNl LmMgKGNwX2xvb2t1cF9uZXN0ZWRfdHlwZSk6IE5ldyB2YXJpYWJsZQotIAljb25jYXRlbmF0ZWRf bmFtZS4gIFR1cm4gdGhlIGN1cnJlbnQgcmV0dXJuIGNvbmRpdGlvbiBpbnRvIGEgcmV2ZXJzZQot IAlvbmUuICBDYWxsIGFsc28gbG9va3VwX3N0YXRpY19zeW1ib2xfYXV4IG9uIHRoZSBjb25zdHJ1 Y3RlZCBxdWFsaWZpZWQKLUluZGV4OiBnZGItNy4xL2dkYi9jLXR5cGVwcmludC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9jLXR5cGVwcmludC5jCTIwMTAtMDYtMjkgMTc6NTQ6 MDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvYy10eXBlcHJpbnQuYwkyMDEwLTA2 LTI5IDE4OjE3OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTc3NCw3ICs3NzQsOCBAQCBjX3R5cGVf cHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0Ci0gCSAgY3BfdHlwZV9wcmludF9kZXJp dmF0aW9uX2luZm8gKHN0cmVhbSwgdHlwZSk7Ci0gCi0gCSAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAie1xuIik7Ci0tCSAgaWYgKChUWVBFX05GSUVMRFMgKHR5cGUpID09IDApICYmIChUWVBF X05GTl9GSUVMRFMgKHR5cGUpID09IDApKQotKwkgIGlmIChUWVBFX05GSUVMRFMgKHR5cGUpID09 IDAgJiYgVFlQRV9ORk5fRklFTERTICh0eXBlKSA9PSAwCi0rCSAgICAgICYmIFRZUEVfVFlQRURF Rl9GSUVMRF9DT1VOVCAodHlwZSkgPT0gMCkKLSAJICAgIHsKLSAJICAgICAgaWYgKFRZUEVfU1RV QiAodHlwZSkpCi0gCQlmcHJpbnRmaV9maWx0ZXJlZCAobGV2ZWwgKyA0LCBzdHJlYW0sIF8oIjxp bmNvbXBsZXRlIHR5cGU+XG4iKSk7Ci1AQCAtMTA2MCw2ICsxMDYxLDI5IEBAIGNfdHlwZV9wcmlu dF9iYXNlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3QKLSAJCX0KLSAJICAgIH0KLSAKLSsJICAvKiBQ cmludCB0eXBlZGVmcyBkZWZpbmVkIGluIHRoaXMgY2xhc3MuICAqLwotKwotKwkgIGlmIChUWVBF X1RZUEVERUZfRklFTERfQ09VTlQgKHR5cGUpICE9IDApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChU WVBFX05GSUVMRFMgKHR5cGUpICE9IDAgfHwgVFlQRV9ORk5fRklFTERTICh0eXBlKSAhPSAwKQot KwkJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXG4iKTsKLSsKLSsJICAgICAgZm9yIChpID0g MDsgaSA8IFRZUEVfVFlQRURFRl9GSUVMRF9DT1VOVCAodHlwZSk7IGkrKykKLSsJCXsKLSsJCSAg c3RydWN0IHR5cGUgKnRhcmdldCA9IFRZUEVfVFlQRURFRl9GSUVMRF9UWVBFICh0eXBlLCBpKTsK LSsKLSsJCSAgLyogRGVyZWZlcmVuY2UgdGhlIHR5cGVkZWYgZGVjbGFyYXRpb24gaXRzZWxmLiAg Ki8KLSsJCSAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0YXJnZXQpID09IFRZUEVfQ09ERV9UWVBF REVGKTsKLSsJCSAgdGFyZ2V0ID0gVFlQRV9UQVJHRVRfVFlQRSAodGFyZ2V0KTsKLSsKLSsJCSAg cHJpbnRfc3BhY2VzX2ZpbHRlcmVkIChsZXZlbCArIDQsIHN0cmVhbSk7Ci0rCQkgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgInR5cGVkZWYgIik7Ci0rCQkgIGNfcHJpbnRfdHlwZSAodGFyZ2V0 LCAoY2hhciAqKSBUWVBFX1RZUEVERUZfRklFTERfTkFNRSAodHlwZSwgaSksCi0rCQkJCXN0cmVh bSwgc2hvdyAtIDEsIGxldmVsICsgNCk7Ci0rCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg IjtcbiIpOwotKwkJfQotKwkgICAgfQotKwotIAkgIGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCwg c3RyZWFtLCAifSIpOwotIAotIAkgIGlmIChUWVBFX0xPQ0FMVFlQRV9QVFIgKHR5cGUpICYmIHNo b3cgPj0gMCkKLUluZGV4OiBnZGItNy4xL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4xLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA2LTI5IDE3OjU0OjI4LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA2LTI5IDE4OjE3 OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTcyMiw2ICs3MjIsMTYgQEAgc3RydWN0IGZpZWxkX2lu Zm8KLSAKLSAgICAgLyogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGZuZmllbGRsaXN0cyBhcnJh eS4gICovCi0gICAgIGludCBuZm5maWVsZHM7Ci0rCi0rICAgIC8qIHR5cGVkZWZzIGRlZmluZWQg aW5zaWRlIHRoaXMgY2xhc3MuICBUWVBFREVGX0ZJRUxEX0xJU1QgY29udGFpbnMgaGVhZCBvZgot KyAgICAgICBhIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mIFRZUEVERUZfRklFTERfTElTVF9DT1VO VCBlbGVtZW50cy4gICovCi0rICAgIHN0cnVjdCB0eXBlZGVmX2ZpZWxkX2xpc3QKLSsgICAgICB7 Ci0rCXN0cnVjdCB0eXBlZGVmX2ZpZWxkIGZpZWxkOwotKwlzdHJ1Y3QgdHlwZWRlZl9maWVsZF9s aXN0ICpuZXh0OwotKyAgICAgIH0KLSsgICAgKnR5cGVkZWZfZmllbGRfbGlzdDsKLSsgICAgdW5z aWduZWQgdHlwZWRlZl9maWVsZF9saXN0X2NvdW50OwotICAgfTsKLSAKLSAvKiBPbmUgaXRlbSBv biB0aGUgcXVldWUgb2YgY29tcGlsYXRpb24gdW5pdHMgdG8gcmVhZCBpbiBmdWxsIHN5bWJvbHMK LUBAIC01MDc1LDYgKzUwODUsMzkgQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2lu Zm8gKmZpcAotICAgICB9Ci0gfQotIAotKy8qIEFkZCBhIHR5cGVkZWYgZGVmaW5lZCBpbiB0aGUg c2NvcGUgb2YgdGhlIEZJUCdzIGNsYXNzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2R3YXJmMl9h ZGRfdHlwZWRlZiAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUs Ci0rCQkgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0reyAKLSsgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlID0gY3UtPm9iamZpbGU7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9v YmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKyAgc3RydWN0IHR5cGVkZWZfZmllbGRfbGlzdCAqbmV3 X2ZpZWxkOwotKyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSsgIHN0cnVjdCB0eXBlZGVmX2Zp ZWxkICpmcDsKLSsgIGNoYXIgKmZpZWxkbmFtZSA9ICIiOwotKwotKyAgLyogQWxsb2NhdGUgYSBu ZXcgZmllbGQgbGlzdCBlbnRyeSBhbmQgbGluayBpdCBpbi4gICovCi0rICBuZXdfZmllbGQgPSB4 emFsbG9jIChzaXplb2YgKCpuZXdfZmllbGQpKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5l d19maWVsZCk7Ci0rCi0rICBnZGJfYXNzZXJ0IChkaWUtPnRhZyA9PSBEV19UQUdfdHlwZWRlZik7 Ci0rCi0rICBmcCA9ICZuZXdfZmllbGQtPmZpZWxkOwotKwotKyAgLyogR2V0IG5hbWUgb2YgZmll bGQuICAqLwotKyAgZnAtPm5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rICBpZiAoZnAt Pm5hbWUgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgZnAtPnR5cGUgPSByZWFkX3R5cGVf ZGllIChkaWUsIGN1KTsKLSsKLSsgIG5ld19maWVsZC0+bmV4dCA9IGZpcC0+dHlwZWRlZl9maWVs ZF9saXN0OwotKyAgZmlwLT50eXBlZGVmX2ZpZWxkX2xpc3QgPSBuZXdfZmllbGQ7Ci0rICBmaXAt PnR5cGVkZWZfZmllbGRfbGlzdF9jb3VudCsrOwotK30KLSsKLSAvKiBDcmVhdGUgdGhlIHZlY3Rv ciBvZiBmaWVsZHMsIGFuZCBhdHRhY2ggaXQgdG8gdGhlIHR5cGUuICAqLwotIAotIHN0YXRpYyB2 b2lkCi1AQCAtNTYwMCw2ICs1NjQzLDggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaQotIAkgICAgICAvKiBDKysgYmFzZSBjbGFzcyBmaWVsZC4gICovCi0gCSAgICAg IGR3YXJmMl9hZGRfZmllbGQgKCZmaSwgY2hpbGRfZGllLCBjdSk7Ci0gCSAgICB9Ci0rCSAgZWxz ZSBpZiAoY2hpbGRfZGllLT50YWcgPT0gRFdfVEFHX3R5cGVkZWYpCi0rCSAgICBkd2FyZjJfYWRk X3R5cGVkZWYgKCZmaSwgY2hpbGRfZGllLCBjdSk7Ci0gCSAgY2hpbGRfZGllID0gc2libGluZ19k aWUgKGNoaWxkX2RpZSk7Ci0gCX0KLSAKLUBAIC01NjczLDYgKzU3MTgsMjggQEAgcmVhZF9zdHJ1 Y3R1cmVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaQotIAkJfQotIAkgICAgfQotIAl9Ci0rCi0r ICAgICAgLyogQ29weSBmaS50eXBlZGVmX2ZpZWxkX2xpc3QgbGlua2VkIGxpc3QgZWxlbWVudHMg Y29udGVudCBpbnRvIHRoZQotKwkgYWxsb2NhdGVkIGFycmF5IFRZUEVfVFlQRURFRl9GSUVMRF9B UlJBWSAodHlwZSkuICAqLwotKyAgICAgIGlmIChmaS50eXBlZGVmX2ZpZWxkX2xpc3QpCi0rCXsK LSsJICBpbnQgaSA9IGZpLnR5cGVkZWZfZmllbGRfbGlzdF9jb3VudDsKLSsKLSsJICBUWVBFX1RZ UEVERUZfRklFTERfQVJSQVkgKHR5cGUpCi0rCSAgICA9IFRZUEVfQUxMT0MgKHR5cGUsIHNpemVv ZiAoVFlQRV9UWVBFREVGX0ZJRUxEICh0eXBlLCAwKSkgKiBpKTsKLSsJICBUWVBFX1RZUEVERUZf RklFTERfQ09VTlQgKHR5cGUpID0gaTsKLSsKLSsJICAvKiBSZXZlcnNlIHRoZSBsaXN0IG9yZGVy IHRvIGtlZXAgdGhlIGRlYnVnIGluZm8gZWxlbWVudHMgb3JkZXIuICAqLwotKwkgIHdoaWxlICgt LWkgPj0gMCkKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IHR5cGVkZWZfZmllbGQgKmRlc3QsICpz cmM7Ci0rCSAgICAgIAotKwkgICAgICBkZXN0ID0gJlRZUEVfVFlQRURFRl9GSUVMRCAodHlwZSwg aSk7Ci0rCSAgICAgIHNyYyA9ICZmaS50eXBlZGVmX2ZpZWxkX2xpc3QtPmZpZWxkOwotKwkgICAg ICBmaS50eXBlZGVmX2ZpZWxkX2xpc3QgPSBmaS50eXBlZGVmX2ZpZWxkX2xpc3QtPm5leHQ7Ci0r CSAgICAgICpkZXN0ID0gKnNyYzsKLSsJICAgIH0KLSsJfQotICAgICB9Ci0gCi0gICBxdWlya19n Y2NfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIgKHR5cGUsIGN1LT5vYmpmaWxlKTsKLUluZGV4OiBn ZGItNy4xL2dkYi9nZGJ0eXBlcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9n ZGJ0eXBlcy5oCTIwMTAtMDYtMjkgMTc6NTQ6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu MS9nZGIvZ2RidHlwZXMuaAkyMDEwLTA2LTI5IDE4OjE4OjI5LjAwMDAwMDAwMCArMDIwMAotQEAg LTk0OCw2ICs5NDgsMTkgQEAgc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlCi0gICAgICAgIG1lbWJl ciBmdW5jdGlvbnMgb3IgdmlydHVhbCBiYXNlIGNsYXNzZXMuICBNaW51cyBvbmUgaWYgbm90Ci0g ICAgICAgIGR5bmFtaWMuICBaZXJvIGlmIG5vdCB5ZXQgY29tcHV0ZWQuICAqLwotICAgICBpbnQg aXNfZHluYW1pYyA6IDI7Ci0rCi0rICAgIC8qIHR5cGVkZWZzIGRlZmluZWQgaW5zaWRlIHRoaXMg Y2xhc3MuICBUWVBFREVGX0ZJRUxEIHBvaW50cyB0byBhbiBhcnJheSBvZgotKyAgICAgICBUWVBF REVGX0ZJRUxEX0NPVU5UIGVsZW1lbnRzLiAgKi8KLSsgICAgc3RydWN0IHR5cGVkZWZfZmllbGQK LSsgICAgICB7Ci0rCS8qIFVucXVhbGlmaWVkIG5hbWUgdG8gYmUgcHJlZml4ZWQgYnkgb3duaW5n IGNsYXNzIHF1YWxpZmllZCBuYW1lLiAgKi8KLSsJY29uc3QgY2hhciAqbmFtZTsKLSsKLSsJLyog VHlwZSB0aGlzIHR5cGVkZWYgbmFtZWQgTkFNRSByZXByZXNlbnRzLiAgKi8KLSsJc3RydWN0IHR5 cGUgKnR5cGU7Ci0rICAgICAgfQotKyAgICAqdHlwZWRlZl9maWVsZDsKLSsgICAgdW5zaWduZWQg dHlwZWRlZl9maWVsZF9jb3VudDsKLSAgIH07Ci0gCi0gLyogU3RydWN0IHVzZWQgZm9yIHJhbmtp bmcgYSBmdW5jdGlvbiBmb3Igb3ZlcmxvYWQgcmVzb2x1dGlvbiAqLwotQEAgLTExODIsNiArMTE5 NSwxNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Ci0gI2RlZmlu ZSBUWVBFX0xPQ0FMVFlQRV9GSUxFKHRoaXN0eXBlKSAoVFlQRV9DUExVU19TUEVDSUZJQyh0aGlz dHlwZSktPmxvY2FsdHlwZV9wdHItPmZpbGUpCi0gI2RlZmluZSBUWVBFX0xPQ0FMVFlQRV9MSU5F KHRoaXN0eXBlKSAoVFlQRV9DUExVU19TUEVDSUZJQyh0aGlzdHlwZSktPmxvY2FsdHlwZV9wdHIt PmxpbmUpCi0gCi0rI2RlZmluZSBUWVBFX1RZUEVERUZfRklFTERfQVJSQVkodGhpc3R5cGUpIFwK LSsgIFRZUEVfQ1BMVVNfU1BFQ0lGSUMgKHRoaXN0eXBlKS0+dHlwZWRlZl9maWVsZAotKyNkZWZp bmUgVFlQRV9UWVBFREVGX0ZJRUxEKHRoaXN0eXBlLCBuKSBcCi0rICBUWVBFX0NQTFVTX1NQRUNJ RklDICh0aGlzdHlwZSktPnR5cGVkZWZfZmllbGRbbl0KLSsjZGVmaW5lIFRZUEVfVFlQRURFRl9G SUVMRF9OQU1FKHRoaXN0eXBlLCBuKSBcCi0rICBUWVBFX1RZUEVERUZfRklFTEQgKHRoaXN0eXBl LCBuKS5uYW1lCi0rI2RlZmluZSBUWVBFX1RZUEVERUZfRklFTERfVFlQRSh0aGlzdHlwZSwgbikg XAotKyAgVFlQRV9UWVBFREVGX0ZJRUxEICh0aGlzdHlwZSwgbikudHlwZQotKyNkZWZpbmUgVFlQ RV9UWVBFREVGX0ZJRUxEX0NPVU5UKHRoaXN0eXBlKSBcCi0rICBUWVBFX0NQTFVTX1NQRUNJRklD ICh0aGlzdHlwZSktPnR5cGVkZWZfZmllbGRfY291bnQKLSsKLSAjZGVmaW5lIFRZUEVfSVNfT1BB UVVFKHRoaXN0eXBlKSAoKChUWVBFX0NPREUgKHRoaXN0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNU KSB8fCAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRZUEVf Q09ERSAodGhpc3R5cGUpID09IFRZUEVfQ09ERV9VTklPTikpICAgICAgICAmJiBcCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUWVBFX05GSUVMRFMgKHRoaXN0eXBlKSA9PSAw KSAgICAgICAgICAgICAgICAgICAgICYmIFwKLUluZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL25hbWVzcGFjZS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cAkyMDEwLTA2LTI5IDE4OjE3OjE3LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cAky MDEwLTA2LTI5IDE4OjE4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTMzMiw2ICszMzIsMjEgQEAg Y3BfdGVzdF9wdHlwZV9jbGFzcyBcCi0gCX0KLSBnZGJfdGVzdCAicHR5cGUgQzo6T3RoZXJGaWxl Q2xhc3MiICJObyBzeW1ib2wgXCJPdGhlckZpbGVDbGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6OkNc Ii4iCi0gCi0rIyBUZXN0IGNsYXNzIHR5cGVkZWZzIHByaW50aW5nLgotK3NldCBleHBlY3QgInR5 cGUgPSBjbGFzcyBDOjpPdGhlckZpbGVDbGFzcyBce1xyXG4uKlxyXG4gKnR5cGVkZWYgc2hvcnQg Y090aGVyRmlsZUNsYXNzVHlwZTtcclxuICp0eXBlZGVmIGxvbmcgY090aGVyRmlsZUNsYXNzVHlw ZTI7XHJcblx9IgotK2lmIHtbdGVzdF9jb21waWxlcl9pbmZvIHtnY2MtWzAtM10tKn1dCi0rICAg IHx8IFt0ZXN0X2NvbXBpbGVyX2luZm8ge2djYy00LVswLTRdLSp9XX0gewotKyAgICAjIFRoZSB0 eXBlIGluIGNsYXNzIGlzIG1pc3NpbmcgaW4gb2xkZXIgR0NDcy4KLSsgICAgc2V0dXBfeGZhaWwg Ki0qLSogCi0rfQotK2dkYl90ZXN0ICJwdHlwZSBPdGhlckZpbGVDbGFzcyIgJGV4cGVjdCAicHR5 cGUgT3RoZXJGaWxlQ2xhc3MgdHlwZWRlZnMiCi0raWYge1t0ZXN0X2NvbXBpbGVyX2luZm8ge2dj Yy1bMC0zXS0qfV0KLSsgICAgfHwgW3Rlc3RfY29tcGlsZXJfaW5mbyB7Z2NjLTQtWzAtNF0tKn1d fSB7Ci0rICAgICMgVGhlIHR5cGUgaW4gY2xhc3MgaXMgbWlzc2luZyBpbiBvbGRlciBHQ0NzLgot KyAgICBzZXR1cF94ZmFpbCAqLSotKiAKLSt9Ci0rZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6T3RoZXJG aWxlQ2xhc3MiICRleHBlY3QgInB0eXBlIDo6Qzo6T3RoZXJGaWxlQ2xhc3MgdHlwZWRlZnMiCi0r Ci0gIyBTb21lIGFub255bW91cyBuYW1lc3BhY2UgdGVzdHMuCi0gCi0gZ2RiX3Rlc3QgInByaW50 IGNYIiAiXFwkXFswLTlcXS4qID0gNiIKLUluZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZTEuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlMS5jYwkyMDEwLTA2LTI5IDE3OjU2OjQyLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlMS5jYwkyMDEw LTA2LTI5IDE4OjE3OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTIzLDEyICsyMywxNCBAQCBuYW1l c3BhY2UgQwotICAgICBpbnQgejsKLSAKLSAgICAgdHlwZWRlZiBzaG9ydCBjT3RoZXJGaWxlQ2xh c3NUeXBlOwotKyAgICB0eXBlZGVmIGxvbmcgY090aGVyRmlsZUNsYXNzVHlwZTI7Ci0gICAgIHN0 YXRpYyBjb25zdCBjT3RoZXJGaWxlQ2xhc3NUeXBlIGNPdGhlckZpbGVDbGFzc1ZhciA9IDMxODsK LSsgICAgc3RhdGljIGNvbnN0IGNPdGhlckZpbGVDbGFzc1R5cGUyIGNPdGhlckZpbGVDbGFzc1Zh cjIgPSAzMjA7Ci0gICAgIGNPdGhlckZpbGVDbGFzc1R5cGUgY090aGVyRmlsZUNsYXNzVmFyX3Vz ZSAoKTsKLSAgIH07Ci0gICBPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVHlwZSBPdGhl ckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFyX3VzZSAoKQotICAgewotLSAgICByZXR1cm4g Y090aGVyRmlsZUNsYXNzVmFyOwotKyAgICByZXR1cm4gY090aGVyRmlsZUNsYXNzVmFyICsgY090 aGVyRmlsZUNsYXNzVmFyMjsKLSAgIH0KLSAKLSAgIG5hbWVzcGFjZSB7Ci1AQCAtNDUsMTAgKzQ3 LDEyIEBAIG5hbWVzcGFjZSBDCi0gICB9Ci0gCi0gICB0eXBlZGVmIHNob3J0IGNPdGhlckZpbGVU eXBlOwotKyAgdHlwZWRlZiBsb25nIGNPdGhlckZpbGVUeXBlMjsKLSAgIHN0YXRpYyBjb25zdCBj T3RoZXJGaWxlVHlwZSBjT3RoZXJGaWxlVmFyID0gMzE5OwotKyAgc3RhdGljIGNvbnN0IGNPdGhl ckZpbGVUeXBlMiBjT3RoZXJGaWxlVmFyMiA9IDMyMTsKLSAgIGNPdGhlckZpbGVUeXBlIGNPdGhl ckZpbGVWYXJfdXNlICgpCi0gICB7Ci0tICAgIHJldHVybiBjT3RoZXJGaWxlVmFyOwotKyAgICBy ZXR1cm4gY090aGVyRmlsZVZhciArIGNPdGhlckZpbGVWYXIyOwotICAgfQotIH0KLSAKLUluZGV4 OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhwCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhwCTIwMTAtMDYt MjkgMTc6NTQ6MTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dk Yi5jcC91c2VyZGVmLmV4cAkyMDEwLTA2LTI5IDE4OjE3OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAg LTE1NCw3ICsxNTQsNyBAQCBnZGJfdGVzdCAiYnJlYWsgQTI6OidvcGVyYXRvciArJyIgIi4qQnJl Ci0gZ2RiX3Rlc3QgInByaW50IGMiICJcXFwkXFswLTlcXSogPSB7bSA9IHt6ID0gLip9fSIKLSBn ZGJfdGVzdCAicHJpbnQgKmMiICJcXFwkXFswLTlcXSogPSBcXChNZW1iZXIgJlxcKSBAJGhleDog e3ogPSAuKn0iCi0gZ2RiX3Rlc3QgInByaW50ICYqYyIgIlxcXCRcWzAtOVxdKiA9IFxcKE1lbWJl ciBcXCpcXCkgJGhleCIKLS1nZGJfdGVzdCAicHR5cGUgJipjIiAidHlwZSA9IChzdHJ1Y3R8Y2xh c3MpIE1lbWJlciB7KFxbXHJcbiBcXStwdWJsaWM6KT9cW1xyXG4gXF0raW50IHo7XFtcclxuXF0r fSAmXFwqIgotK2dkYl90ZXN0ICJwdHlwZSAmKmMiICJ0eXBlID0gKHN0cnVjdHxjbGFzcykgTWVt YmVyIHsoXFtcclxuIFxdK3B1YmxpYzopP1xbXHJcbiBcXStpbnQgejtcW1xyXG5cXS4qfSAmXFwq IgotIAotIGdkYl90ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0yKSIgIiA9IGZhbHNl IgotIGdkYl90ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0xKSIgIiA9IHRydWUiCgpk aWZmIC0tZ2l0IGEvZ2RiLWJ6NjAyMzE0LXB0eXBlLWNsYXNzLXR5cGVkZWYtM29mMy5wYXRjaCBi L2dkYi1iejYwMjMxNC1wdHlwZS1jbGFzcy10eXBlZGVmLTNvZjMucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGYwYWQ1MGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjAyMzE0LXB0 eXBlLWNsYXNzLXR5cGVkZWYtM29mMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAg QEAKLWNvbW1pdCA0NzdjMTM1OWIyMTdjZGMwNTJhN2M5ZjgzY2FlOWM4OTQzOTY4OTRjCi1BdXRo b3I6IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBN b24gSnVuIDI4IDIyOjAzOjMxIDIwMTAgKzAwMDAKLQotICAgIGdkYi8KLSAgICAJKiBkd2FyZjJy ZWFkLmMgKHJlYWRfc3RydWN0dXJlX3R5cGUpIDxmaS50eXBlZGVmX2ZpZWxkX2xpc3Q+OiBDYWxs Ci0gICAgCUFMTE9DQVRFX0NQTFVTX1NUUlVDVF9UWVBFLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9n Ci0jIyMgYi9nZGIvQ2hhbmdlTG9nCi0jIyAtMSwzICsxLDggQEAKLSsyMDEwLTA2LTI4ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZHdhcmYycmVh ZC5jIChyZWFkX3N0cnVjdHVyZV90eXBlKSA8ZmkudHlwZWRlZl9maWVsZF9saXN0PjogQ2FsbAot KwlBTExPQ0FURV9DUExVU19TVFJVQ1RfVFlQRS4KLSsKLSAyMDEwLTA2LTI4ICBQaGlsIE11bGRv b24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotICAgICAgICAgICAgIFRvbSBUcm9tZXkgIDx0cm9t ZXlAcmVkaGF0LmNvbT4KLSAgICAgICAgICAgICBUaGlhZ28gSnVuZyBCYXVlcm1hbm4gIDxiYXVl cm1hbkBici5pYm0uY29tPgotIyMgLTI3LDggKzMyLDYgQEAKLSAJKiBweXRob24vcHktaW5mZXJp b3IuYzogTmV3IEZpbGUuCi0gCSogcHl0aG9uL3B5LWluZnRocmVhZC5jOiBOZXcgRmlsZS4KLSAK LS0KLS0KLSAyMDEwLTA2LTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0gCi0gCSogYy10eXBlcHJpbnQuYyAoY190eXBlX3ByaW50X2Jhc2UpOiBGb3Igbm8g ZmllbGRzIGNoZWNrIGluY2x1ZGUgYWxzbwotLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIv Z2RiL2R3YXJmMnJlYWQuYwotQEAgLTUzMjcsNiArNTMyNyw3IEBAIHJlYWRfc3RydWN0dXJlX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAJewotIAkg IGludCBpID0gZmkudHlwZWRlZl9maWVsZF9saXN0X2NvdW50OwotIAotKwkgIEFMTE9DQVRFX0NQ TFVTX1NUUlVDVF9UWVBFICh0eXBlKTsKLSAJICBUWVBFX1RZUEVERUZfRklFTERfQVJSQVkgKHR5 cGUpCi0gCSAgICA9IFRZUEVfQUxMT0MgKHR5cGUsIHNpemVvZiAoVFlQRV9UWVBFREVGX0ZJRUxE ICh0eXBlLCAwKSkgKiBpKTsKLSAJICBUWVBFX1RZUEVERUZfRklFTERfQ09VTlQgKHR5cGUpID0g aTsKCmRpZmYgLS1naXQgYS9nZGItYno2MDYxODUtb2JzdGFjay0xb2Y1LnBhdGNoIGIvZ2RiLWJ6 NjA2MTg1LW9ic3RhY2stMW9mNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZTI4NzliYi4uMDAwMDAwMAotLS0gYS9nZGItYno2MDYxODUtb2JzdGFjay0xb2Y1LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLWNvbW1pdCA3OGMxNDRlOGMzYWU3YmIzNmQ2 MzJmNmJmYWFhYWQ5Yzk3MTk5Y2U2Ci1BdXRob3I6IGNtb2xsZXIgPGNtb2xsZXI+Ci1EYXRlOiAg IFR1ZSBBcHIgMjAgMjA6MjI6MDkgMjAxMCArMDAwMAotCi0gICAgUFIgMTA4NjcKLSAgICAqIGNw LXZhbHByaW50LmMgKGdsb2JhbCk6IEFkZGluZyBuZXcgc3RhdGljIGFycmF5IHJlY3Vyc2lvbgot ICAgIGRldGVjdGlvbiBvYnN0YWNrLgotICAgIChjcF9wcmludF92YWx1ZV9maWVsZHMsIGNwX3By aW50X3N0YXRpY19maWVsZCk6IEFkZGVkIG5ldyBzdGF0aWMKLSAgICBhcnJheSByZWN1cnNpb24g ZGV0ZWN0aW9uIGNvZGUuCi0gICAgKiBnZGIuY3AvTWFrZWZpbGUuaW4gIChFWEVDVVRBQkxFUyk6 IEFkZGVkIHByMTA2ODcKLSAgICAqIGdkYi5jcC9wcjEwNjg3LmNjOiBOZXcgZmlsZS4KLSAgICAq IGdkYi5jcC9wcjEwNjg3LmV4cDogTmV3IGZpbGUKLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMj IGIvZ2RiL0NoYW5nZUxvZwotIyMgLTEsMyArMSwxMiBAQAotKzIwMTAtMDQtMjAgIENocmlzIE1v bGxlciAgPGNtb2xsZXJAcmVkaGF0LmNvbT4KLSsJCi0rCVBSIDEwODY3Ci0rCi0rCSogY3AtdmFs cHJpbnQuYyAoZ2xvYmFsKTogQWRkaW5nIG5ldyBzdGF0aWMgYXJyYXkgcmVjdXJzaW9uCi0rCWRl dGVjdGlvbiBvYnN0YWNrLgotKwkoY3BfcHJpbnRfdmFsdWVfZmllbGRzLCBjcF9wcmludF9zdGF0 aWNfZmllbGQpOiBBZGRlZCBuZXcgc3RhdGljCi0rCWFycmF5IHJlY3Vyc2lvbiBkZXRlY3Rpb24g Y29kZS4KLSsKLSAyMDEwLTA0LTIwICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4K LSAKLSAJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMpOiBT aXplIG9mIHRoZQotSW5kZXg6IGdkYi03LjEvZ2RiL2NwLXZhbHByaW50LmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4xLm9yaWcvZ2RiL2NwLXZhbHByaW50LmMJMjAxMC0wMi0wOCAxOTowNDoxNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi9jcC12YWxwcmludC5jCTIwMTAtMDYtMjgg MjA6MjE6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtNzEsNiArNzEsNyBAQCBzaG93X3N0YXRpY19m aWVsZF9wcmludCAoc3RydWN0IHVpX2ZpbGUgCi0gCi0gc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRv bnRfcHJpbnRfdmJfb2JzdGFjazsKLSBzdGF0aWMgc3RydWN0IG9ic3RhY2sgZG9udF9wcmludF9z dGF0bWVtX29ic3RhY2s7Ci0rc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfc3RhdF9h cnJheV9vYnN0YWNrOwotIAotIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2NwX3ZhbHByaW50ICh2 b2lkKTsKLSAKLUBAIC0xNTUsMTIgKzE1NiwxNyBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0 cnVjdCB0eXBlICp0eXBlCi0gewotICAgaW50IGksIGxlbiwgbl9iYXNlY2xhc3NlczsKLSAgIGlu dCBmaWVsZHNfc2VlbiA9IDA7Ci0rICBzdGF0aWMgaW50IGxhc3Rfc2V0X3JlY3Vyc2UgPSAtMTsK LSAKLSAgIENIRUNLX1RZUEVERUYgKHR5cGUpOwotICAgCi0tICBpZiAocmVjdXJzZSA9PSAwCi0t ICAgICAgJiYgb2JzdGFja19vYmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNr KSA+IDApCi0tICAgIG9ic3RhY2tfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBO VUxMKTsKLSsgIGlmIChyZWN1cnNlID09IDApCi0rICAgIHsKLSsgICAgICBpZiAob2JzdGFja19v YmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKSA+IDApCi0rCW9ic3RhY2tf ZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBOVUxMKTsKLSsgICAgICBpZiAob2Jz dGFja19vYmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrKSA+IDApCi0r CW9ic3RhY2tfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrLCBOVUxMKTsKLSsg ICAgfQotIAotICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIpOwotICAgbGVuID0gVFlQ RV9ORklFTERTICh0eXBlKTsKLUBAIC0xODEsMTIgKzE4NywyMCBAQCBjcF9wcmludF92YWx1ZV9m aWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlCi0gICBlbHNlCi0gICAgIHsKLSAgICAgICB2b2lkICpz dGF0bWVtX29ic3RhY2tfdG9wID0gTlVMTDsKLSsgICAgICB2b2lkICpzdGF0X2FycmF5X29ic3Rh Y2tfdG9wID0gTlVMTDsKLSAgICAgICAKLSAgICAgICBpZiAoZG9udF9wcmludF9zdGF0bWVtID09 IDApCi0gCXsKLSAJICAvKiBTZXQgdGhlIGN1cnJlbnQgcHJpbnRlZC1zdGF0aWNzIHN0YWNrIHRv cC4gICovCi0gCSAgc3RhdG1lbV9vYnN0YWNrX3RvcAotIAkgICAgPSBvYnN0YWNrX25leHRfZnJl ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKTsKLSsKLSsJICBpZiAobGFzdF9zZXRfcmVj dXJzZSAhPSByZWN1cnNlKQotKwkgICAgewotKwkgICAgICBzdGF0X2FycmF5X29ic3RhY2tfdG9w Ci0rCQk9IG9ic3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmludF9zdGF0X2FycmF5X29ic3RhY2sp OwotKwkgICAgICBsYXN0X3NldF9yZWN1cnNlID0gcmVjdXJzZTsKLSsJICAgIH0KLSAJfQotIAot ICAgICAgIGZvciAoaSA9IG5fYmFzZWNsYXNzZXM7IGkgPCBsZW47IGkrKykKLUBAIC0zMDcsOSAr MzIxLDE2IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUKLSAKLSAg ICAgICBpZiAoZG9udF9wcmludF9zdGF0bWVtID09IDApCi0gCXsKLS0JICAvKiBJbiBlZmZlY3Qs IGEgcG9wIG9mIHRoZSBwcmludGVkLXN0YXRpY3Mgc3RhY2suICAqLwotIAkgIGlmIChvYnN0YWNr X29iamVjdF9zaXplICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2spID4gMCkgCi0gCSAgICBv YnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaywgc3RhdG1lbV9vYnN0YWNr X3RvcCk7Ci0rCi0rCSAgaWYgKGxhc3Rfc2V0X3JlY3Vyc2UgIT0gcmVjdXJzZSkKLSsJICAgIHsK LSsJICAgICAgaWYgKG9ic3RhY2tfb2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlf b2JzdGFjaykgPiAwKSAKLSsJCW9ic3RhY2tfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9v YnN0YWNrLAotKwkJCSAgICAgIHN0YXRfYXJyYXlfb2JzdGFja190b3ApOwotKwkgICAgICBsYXN0 X3NldF9yZWN1cnNlID0gLTE7Ci0rCSAgICB9Ci0gCX0KLSAKLSAgICAgICBpZiAob3B0aW9ucy0+ cHJldHR5KQotQEAgLTUwOCw2ICs1MjksNyBAQCBjcF9wcmludF9zdGF0aWNfZmllbGQgKHN0cnVj dCB0eXBlICp0eXBlCi0gCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMpCi0gewotICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKLSsgIAot ICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKLSAgICAgewotICAg ICAgIENPUkVfQUREUiAqZmlyc3RfZG9udF9wcmludDsKLUBAIC01NDIsNiArNTY0LDMyIEBAIGNw X3ByaW50X3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUKLSAgICAgICByZXR1cm47Ci0g ICAgIH0KLSAKLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSkKLSsg ICAgewotKyAgICAgIHN0cnVjdCB0eXBlICoqZmlyc3RfZG9udF9wcmludDsKLSsgICAgICBpbnQg aTsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKTsKLSsKLSsgICAgICBmaXJzdF9kb250X3ByaW50Ci0rCT0gKHN0cnVjdCB0eXBlICoqKSBv YnN0YWNrX2Jhc2UgKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjayk7Ci0rICAgICAgaSA9 IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjaykKLSsJ LyBzaXplb2YgKENPUkVfQUREUik7Ci0rCi0rICAgICAgd2hpbGUgKC0taSA+PSAwKQotKwl7Ci0r CSAgaWYgKHRhcmdldF90eXBlID09IGZpcnN0X2RvbnRfcHJpbnRbaV0pCi0rCSAgICB7Ci0rCSAg ICAgIGZwdXRzX2ZpbHRlcmVkICgiPHNhbWUgYXMgc3RhdGljIG1lbWJlciBvZiBhbiBhbHJlYWR5 IgotKwkJCSAgICAgICIgc2VlbiB0eXBlPiIsCi0rCQkJICAgICAgc3RyZWFtKTsKLSsJICAgICAg cmV0dXJuOwotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgb2JzdGFja19ncm93ICgmZG9udF9wcmlu dF9zdGF0X2FycmF5X29ic3RhY2ssIChjaGFyICopICZ0YXJnZXRfdHlwZSwKLSsJCSAgICBzaXpl b2YgKHN0cnVjdCB0eXBlICopKTsKLSsgICAgfQotKwotICAgb3B0cyA9ICpvcHRpb25zOwotICAg b3B0cy5kZXJlZl9yZWYgPSAwOwotICAgdmFsX3ByaW50ICh0eXBlLCB2YWx1ZV9jb250ZW50c19h bGwgKHZhbCksIAotQEAgLTY3Miw2ICs3MjAsNyBAQCBTaG93IHByaW50aW5nIG9mIG9iamVjdCdz IGRlcml2ZWQgdHlwZSBiCi0gCQkJICAgc2hvd19vYmplY3RwcmludCwKLSAJCQkgICAmc2V0cHJp bnRsaXN0LCAmc2hvd3ByaW50bGlzdCk7Ci0gCi0rICBvYnN0YWNrX2JlZ2luICgmZG9udF9wcmlu dF9zdGF0X2FycmF5X29ic3RhY2ssIDMyICogc2l6ZW9mIChDT1JFX0FERFIpKTsKLSAgIG9ic3Rh Y2tfYmVnaW4gKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaywgMzIgKiBzaXplb2YgKENPUkVf QUREUikpOwotICAgb2JzdGFja19iZWdpbiAoJmRvbnRfcHJpbnRfdmJfb2JzdGFjaywgMzIgKiBz aXplb2YgKHN0cnVjdCB0eXBlICopKTsKLSB9Ci1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9wcjEwNjg3LmNjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9wcjEwNjg3LmNjCTIwMTAtMDYtMjggMjA6MjE6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMCww ICsxLDI0IEBACi0rY2xhc3MgdmVjMiAKLSt7Ci0rICBwdWJsaWM6Ci0rICAgIHZlYzIoKSB7IF92 WzBdID0gX3ZbMV0gPSAwOyB9Ci0rICAgIHZlYzIoaW50IHgsIGludCB5KSB7IF92WzBdID0geDsg X3ZbMV0gPSB5OyB9Ci0rICAgIHN0YXRpYyB2ZWMyIGF4aXNbMl07Ci0rICAgIHN0YXRpYyB2ZWMy IGF4aXM2WzZdOwotKyAgcHJpdmF0ZToKLSsgICAgaW50IF92WzJdOwotK307Ci0rCi0rdmVjMiB2 ZWMyOjpheGlzWzJdID0geyB2ZWMyKDEsMCksIHZlYzIoMCwxKSB9OwotK3ZlYzIgdmVjMjo6YXhp czZbNl0gPSB7IAotKyAgdmVjMigxLDApLCB2ZWMyKDAsMSksCi0rICB2ZWMyKDIsMCksIHZlYzIo MCwyKSwKLSsgIHZlYzIoMywwKSwgdmVjMigwLDMpIAotK307Ci0rCi0raW50IG1haW4oaW50IGFy Z2MsIGNoYXIqYXJndltdKQotK3sKLSsgIHZlYzIgYTsKLSsKLSsgIHJldHVybiAwOyAgLy8gbWFy a2VyCi0rfQotSW5kZXg6IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMDY4Ny5leHAK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTA2ODcuZXhwCTIwMTAt MDYtMjggMjA6MjE6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDMxIEBACi0rI0NvcHly aWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgcHIxMDY4NwotK3NldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmNjCi0raWYgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAk dGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGMrK31dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIGZhaWwgIkNhbid0IHJ1biB0byBtYWluIgot KyAgICByZXR1cm4KLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg Im1hcmtlciJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlciIKLSsKLStnZGJf dGVzdCAicCBhIiAie3N0YXRpYyBheGlzID0ge3tzdGF0aWMgYXhpcyA9IDxzYW1lIGFzIHN0YXRp YyBtZW1iZXIgb2YgYW4gYWxyZWFkeS4qIgotKwoKZGlmZiAtLWdpdCBhL2dkYi1iejYwNjE4NS1v YnN0YWNrLTJvZjUucGF0Y2ggYi9nZGItYno2MDYxODUtb2JzdGFjay0yb2Y1LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGIxY2I0Li4wMDAwMDAwCi0tLSBhL2dkYi1iejYw NjE4NS1vYnN0YWNrLTJvZjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAot Y29tbWl0IGQ1NGY1NjcxZTE5MGE1YzBjYThmZDFmZjA3MDM3MmJmMjBlYjQyYTgKLUF1dGhvcjog Y21vbGxlciA8Y21vbGxlcj4KLURhdGU6ICAgV2VkIEFwciAyMSAxNzozMzo1MSAyMDEwICswMDAw Ci0KLSAgICBQUiA5MTY3Ci0gICAgKiBjcC12YWxwcmludC5jIChjcF9wcmludF92YWx1ZV9maWVs ZHMpOiBSZXBsYWNlZCBvYnN0YWNrX2Jhc2UoKQotICAgIG1ldGhvZCBvZiBwb3BwaW5nIHJlY3Vy c2lvbi1kZXRlY3Rpb24gc3RhY2sgd2l0aCBhIG1ldGhvZCBiYXNlZCBvbgotICAgIG9ic3RhY2tf b2JqZWN0X3NpemUoKS4KLSAgICAqIGdkYi5jcC9NYWtlZmlsZS5pbiAoRVhFQ1VUQUJMRVMpOiBB ZGRlZCBwcjkxNjcuCi0gICAgKiBnZGIuY3AvcHI5MTY3LmNjOiBOZXcgZmlsZS4KLSAgICAqIGdk Yi5jcC9wcjkxNjcuZXhwOiBOZXcgZmlsZS4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIv Z2RiL0NoYW5nZUxvZwotIyMgLTEsMyArMSwxMCBAQAotKzIwMTAtMDQtMjEgIENocmlzIE1vbGxl ciAgPGNtb2xsZXJAcmVkaGF0LmNvbT4KLSsKLSsJUFIgOTE2NwotKwkqIGNwLXZhbHByaW50LmMg KGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyk6IFJlcGxhY2VkIG9ic3RhY2tfYmFzZSgpCi0rICAgICAg ICBtZXRob2Qgb2YgcG9wcGluZyByZWN1cnNpb24tZGV0ZWN0aW9uIHN0YWNrIHdpdGggYSBtZXRo b2QgYmFzZWQgb24KLSsgICAgICAgIG9ic3RhY2tfb2JqZWN0X3NpemUoKS4KLSsKLSAyMDEwLTA0 LTIxICBQaWVycmUgTXVsbGVyICA8bXVsbGVyQGljcy51LXN0cmFzYmcuZnI+Ci0gCi0gCVBSIHBh c2NhbC8xMTQ5Mi4KLSMjIC0zMTg0LDcgKzMxOTEsNyBAQAotIAlhZGRyX2JpdC4gIEFkanVzdCBM T0FEX0FERFIgc2lnbiBmb3IgY3Jvc3MtYXJjaCBpbmZlcmlvcnMuCi0gCi0gMjAxMC0wMi0xNyAg VHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBhZGFjb3JlLmNvbT4KLS0JICAgIFBldHIgSGx1esOt biA8cGV0ci5obHV6aW5AZ21haWwuY29tPgotKwkgICAgUGV0ciBIbHV677+9biA8cGV0ci5obHV6 aW5AZ21haWwuY29tPgotIAotIAkqIGF2ci10ZGVwLmMgKGF2cl9zY2FuX3Byb2xvZ3VlKTogQ29u dmVydCBhbiBpZiBzdGF0ZW1lbnQgdG8gYQotIAlnZGJfYXNzZXJ0LiAgRml4IGluZm8tPnNpemUg Zm9yIFNJRyBwcm9sb2d1ZS4KLUluZGV4OiBnZGItNy4xL2dkYi9jcC12YWxwcmludC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9jcC12YWxwcmludC5jCTIwMTAtMDYtMjggMjA6 MjE6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvY3AtdmFscHJpbnQuYwkyMDEw LTA2LTI4IDIwOjIyOjE2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE4NiwxNCArMTg2LDEzIEBAIGNw X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUKLSAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiPE5vIGRhdGEgZmllbGRzPiIpOwotICAgZWxzZQotICAgICB7Ci0tICAg ICAgdm9pZCAqc3RhdG1lbV9vYnN0YWNrX3RvcCA9IE5VTEw7Ci0rICAgICAgaW50IG9ic3RhY2tf aW5pdGlhbF9zaXplID0gMDsKLSAgICAgICB2b2lkICpzdGF0X2FycmF5X29ic3RhY2tfdG9wID0g TlVMTDsKLSAgICAgICAKLSAgICAgICBpZiAoZG9udF9wcmludF9zdGF0bWVtID09IDApCi0gCXsK LS0JICAvKiBTZXQgdGhlIGN1cnJlbnQgcHJpbnRlZC1zdGF0aWNzIHN0YWNrIHRvcC4gICovCi0t CSAgc3RhdG1lbV9vYnN0YWNrX3RvcAotLQkgICAgPSBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRf cHJpbnRfc3RhdG1lbV9vYnN0YWNrKTsKLSsJICBvYnN0YWNrX2luaXRpYWxfc2l6ZSA9Ci0rCSAg ICBvYnN0YWNrX29iamVjdF9zaXplICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2spOwotIAot IAkgIGlmIChsYXN0X3NldF9yZWN1cnNlICE9IHJlY3Vyc2UpCi0gCSAgICB7Ci1AQCAtMzIxLDgg KzMyMCwxOSBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlCi0gCi0g ICAgICAgaWYgKGRvbnRfcHJpbnRfc3RhdG1lbSA9PSAwKQotIAl7Ci0tCSAgaWYgKG9ic3RhY2tf b2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaykgPiAwKSAKLS0JICAgIG9i c3RhY2tfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBzdGF0bWVtX29ic3RhY2tf dG9wKTsKLSsJICBpbnQgb2JzdGFja19maW5hbF9zaXplID0KLSsgICAgICAgICAgIG9ic3RhY2tf b2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjayk7Ci0rCi0rCSAgaWYgKG9i c3RhY2tfZmluYWxfc2l6ZSA+IG9ic3RhY2tfaW5pdGlhbF9zaXplKSB7Ci0rCSAgICAvKiBJbiBl ZmZlY3QsIGEgcG9wIG9mIHRoZSBwcmludGVkLXN0YXRpY3Mgc3RhY2suICAqLwotKwotKwkgICAg dm9pZCAqZnJlZV90b19wdHIgPQotKwkgICAgICBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJp bnRfc3RhdG1lbV9vYnN0YWNrKSAtCi0rCSAgICAgIChvYnN0YWNrX2ZpbmFsX3NpemUgLSBvYnN0 YWNrX2luaXRpYWxfc2l6ZSk7Ci0rCi0rCSAgICBvYnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0 YXRtZW1fb2JzdGFjaywKLSsJCQkgIGZyZWVfdG9fcHRyKTsKLSsJICB9Ci0gCi0gCSAgaWYgKGxh c3Rfc2V0X3JlY3Vyc2UgIT0gcmVjdXJzZSkKLSAJICAgIHsKLUBAIC01NTUsNyArNTY1LDYgQEAg Y3BfcHJpbnRfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZQotICAgICAgIGFkZHIgPSB2 YWx1ZV9hZGRyZXNzICh2YWwpOwotICAgICAgIG9ic3RhY2tfZ3JvdyAoJmRvbnRfcHJpbnRfc3Rh dG1lbV9vYnN0YWNrLCAoY2hhciAqKSAmYWRkciwKLSAJCSAgICBzaXplb2YgKENPUkVfQUREUikp OwotLQotICAgICAgIENIRUNLX1RZUEVERUYgKHR5cGUpOwotICAgICAgIGNwX3ByaW50X3ZhbHVl X2ZpZWxkcyAodHlwZSwgdmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCksCi0gCQkJICAgICB2YWx1 ZV9jb250ZW50c19hbGwgKHZhbCksCi1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9wcjkxNjcuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByOTE2 Ny5jYwkyMDEwLTA2LTI4IDIwOjIyOjE2LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwzNiBA QAotKyNpbmNsdWRlIDxpb3N0cmVhbT4KLSsKLSt0ZW1wbGF0ZTx0eXBlbmFtZSBEQVRBPgotK3N0 cnVjdCBBVEIKLSt7Ci0rICAgIGludCBkYXRhOwotKyAgICBBVEIoKSA6IGRhdGEoMCkge30KLSt9 OwotKwotKwotK3RlbXBsYXRlPHR5cGVuYW1lIERBVEEsCi0rCSB0eXBlbmFtZSBEZXJpdmVkVHlw ZSA+Ci0rY2xhc3MgQSA6IHB1YmxpYyBBVEI8REFUQT4KLSt7Ci0rcHVibGljOgotKyAgICBzdGF0 aWMgRGVyaXZlZFR5cGUgY29uc3QgREVGQVVMVF9JTlNUQU5DRTsKLSt9OwotKwotK3RlbXBsYXRl PHR5cGVuYW1lIERBVEEsIHR5cGVuYW1lIERlcml2ZWRUeXBlPgotK2NvbnN0IERlcml2ZWRUeXBl IEE8REFUQSwgRGVyaXZlZFR5cGU+OjpERUZBVUxUX0lOU1RBTkNFOwotKwotK2NsYXNzIEIgOiBw dWJsaWMgQTxpbnQsIEI+Ci0rewotKyAgICAKLSt9OwotKwotK2ludCBtYWluKCkKLSt7Ci0rICAg IEIgYjsKLSsgICAgLy8gSWYgdGhpcyBpZi1ibG9jayBpcyByZW1vdmVkIHRoZW4gR0RCIHNoYWxs Ci0rICAgIC8vIG5vdCBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiB0cnlpbmcgdG8gcHJpbnQgYi4K LSsKLSsgICAgcmV0dXJuIDA7CQkvLyBtYXJrZXIKLSt9Ci0rCi0rCi1JbmRleDogZ2RiLTcuMS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjkxNjcuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9wcjkxNjcuZXhwCTIwMTAtMDYtMjggMjA6MjI6MTYuMDAwMDAwMDAwICsw MjAwCi1AQCAtMCwwICsxLDMxIEBACi0rI0NvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQg dGVzdGZpbGUgcHI5MTY3Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStpZiBbcHJlcGFy ZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgYysr fV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsg ICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCi0rICAgIHJldHVybgotK30KLSsKLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAibWFya2VyIgotKwotK2dkYl90ZXN0ICJwIGIiICJ7PEE8aW50LCBCPj4gPSB7 PEFUQjxpbnQ+PiA9IHtkYXRhID0gMH0sIHN0YXRpYyBERUZBVUxUX0lOU1RBTkNFID0gPG9wdGlt aXplZCBvdXQ+fSwgPE5vIGRhdGEgZmllbGRzPn0iCi0rCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjA2 MTg1LW9ic3RhY2stM29mNS5wYXRjaCBiL2dkYi1iejYwNjE4NS1vYnN0YWNrLTNvZjUucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwOTJjMDAuLjAwMDAwMDAKLS0tIGEvZ2Ri LWJ6NjA2MTg1LW9ic3RhY2stM29mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAg QEAKLWNvbW1pdCA0MDdjYjE5MmRjYWMyNjAyYWViYWE3ZTI2MjQxOWFkYjU4MGVjY2E2Ci1BdXRo b3I6IGNtb2xsZXIgPGNtb2xsZXI+Ci1EYXRlOiAgIFRodSBBcHIgMjIgMjA6MTI6MDYgMjAxMCAr MDAwMAotCi0gICAgKiBjcC12YWxwcmludC5jIChjcF9wcmludF92YWx1ZV9maWVsZHMpOiBSZXBs YWNlZCBvYnN0YWNrX2Jhc2UoKQotICAgIG1ldGhvZCBvZiBwb3BwaW5nIHJlY3Vyc2lvbi1kZXRl Y3Rpb24gc3RhY2sgd2l0aCBhIG1ldGhvZCBiYXNlZCBvbgotICAgIG9ic3RhY2tfb2JqZWN0X3Np emUoKS4gIChTaW1pbGFyIHRvIHRoZSBQUjkxNjcgcGF0Y2ggYmVsb3csIGJ1dCBmb3IKLSAgICB0 aGUgc3RhdGljIGFycmF5IG9ic3RhY2sgcmF0aGVyIHRoYW4gdGhlIHN0YXRpYyBtZW1iZXIgb2Jz dGFjay4pCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0x LDMgKzEsMTAgQEAKLSsyMDEwLTA0LTIyICBDaHJpcyBNb2xsZXIgIDxjbW9sbGVyQHJlZGhhdC5j b20+Ci0rCi0rCSogY3AtdmFscHJpbnQuYyAoY3BfcHJpbnRfdmFsdWVfZmllbGRzKTogUmVwbGFj ZWQgb2JzdGFja19iYXNlKCkKLSsgICAgICAgIG1ldGhvZCBvZiBwb3BwaW5nIHJlY3Vyc2lvbi1k ZXRlY3Rpb24gc3RhY2sgd2l0aCBhIG1ldGhvZCBiYXNlZCBvbgotKyAgICAgICAgb2JzdGFja19v YmplY3Rfc2l6ZSgpLiAgKFNpbWlsYXIgdG8gdGhlIFBSOTE2NyBwYXRjaCBiZWxvdywgYnV0IGZv cgotKwl0aGUgc3RhdGljIGFycmF5IG9ic3RhY2sgcmF0aGVyIHRoYW4gdGhlIHN0YXRpYyBtZW1i ZXIgb2JzdGFjay4pCi0rCi0gMjAxMC0wNC0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotIAotIAkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9ncmVnc2V0NjRfcmVn X29mZnNldCk6IFJlbW92ZWQuCi0tLS0gYS9nZGIvY3AtdmFscHJpbnQuYwotKysrIGIvZ2RiL2Nw LXZhbHByaW50LmMKLUBAIC0xODYsMTggKzE4NiwxOCBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMg KHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAotICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICI8Tm8gZGF0YSBmaWVsZHM+Iik7Ci0gICBlbHNlCi0gICAgIHsK LS0gICAgICBpbnQgb2JzdGFja19pbml0aWFsX3NpemUgPSAwOwotLSAgICAgIHZvaWQgKnN0YXRf YXJyYXlfb2JzdGFja190b3AgPSBOVUxMOwotKyAgICAgIGludCBzdGF0bWVtX29ic3RhY2tfaW5p dGlhbF9zaXplID0gMDsKLSsgICAgICBpbnQgc3RhdF9hcnJheV9vYnN0YWNrX2luaXRpYWxfc2l6 ZSA9IDA7Ci0gICAgICAgCi0gICAgICAgaWYgKGRvbnRfcHJpbnRfc3RhdG1lbSA9PSAwKQotIAl7 Ci0tCSAgb2JzdGFja19pbml0aWFsX3NpemUgPQotKwkgIHN0YXRtZW1fb2JzdGFja19pbml0aWFs X3NpemUgPQotIAkgICAgb2JzdGFja19vYmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9v YnN0YWNrKTsKLSAKLSAJICBpZiAobGFzdF9zZXRfcmVjdXJzZSAhPSByZWN1cnNlKQotIAkgICAg ewotLQkgICAgICBzdGF0X2FycmF5X29ic3RhY2tfdG9wCi0tCQk9IG9ic3RhY2tfbmV4dF9mcmVl ICgmZG9udF9wcmludF9zdGF0X2FycmF5X29ic3RhY2spOwotKwkgICAgICBzdGF0X2FycmF5X29i c3RhY2tfaW5pdGlhbF9zaXplID0KLSsJCW9ic3RhY2tfb2JqZWN0X3NpemUgKCZkb250X3ByaW50 X3N0YXRfYXJyYXlfb2JzdGFjayk7Ci0gCSAgICAgIGxhc3Rfc2V0X3JlY3Vyc2UgPSByZWN1cnNl OwotIAkgICAgfQotIAl9Ci1AQCAtMzIzLDEyICszMjMsMTIgQEAgY3BfcHJpbnRfdmFsdWVfZmll bGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSwKLSAJICBpbnQg b2JzdGFja19maW5hbF9zaXplID0KLSAgICAgICAgICAgIG9ic3RhY2tfb2JqZWN0X3NpemUgKCZk b250X3ByaW50X3N0YXRtZW1fb2JzdGFjayk7Ci0gCi0tCSAgaWYgKG9ic3RhY2tfZmluYWxfc2l6 ZSA+IG9ic3RhY2tfaW5pdGlhbF9zaXplKSB7Ci0rCSAgaWYgKG9ic3RhY2tfZmluYWxfc2l6ZSA+ IHN0YXRtZW1fb2JzdGFja19pbml0aWFsX3NpemUpIHsKLSAJICAgIC8qIEluIGVmZmVjdCwgYSBw b3Agb2YgdGhlIHByaW50ZWQtc3RhdGljcyBzdGFjay4gICovCi0gCi0gCSAgICB2b2lkICpmcmVl X3RvX3B0ciA9Ci0gCSAgICAgIG9ic3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmludF9zdGF0bWVt X29ic3RhY2spIC0KLS0JICAgICAgKG9ic3RhY2tfZmluYWxfc2l6ZSAtIG9ic3RhY2tfaW5pdGlh bF9zaXplKTsKLSsJICAgICAgKG9ic3RhY2tfZmluYWxfc2l6ZSAtIHN0YXRtZW1fb2JzdGFja19p bml0aWFsX3NpemUpOwotIAotIAkgICAgb2JzdGFja19mcmVlICgmZG9udF9wcmludF9zdGF0bWVt X29ic3RhY2ssCi0gCQkJICBmcmVlX3RvX3B0cik7Ci1AQCAtMzM2LDkgKzMzNiwxOCBAQCBjcF9w cmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90 eXBlLAotIAotIAkgIGlmIChsYXN0X3NldF9yZWN1cnNlICE9IHJlY3Vyc2UpCi0gCSAgICB7Ci0t CSAgICAgIGlmIChvYnN0YWNrX29iamVjdF9zaXplICgmZG9udF9wcmludF9zdGF0X2FycmF5X29i c3RhY2spID4gMCkgCi0tCQlvYnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2Jz dGFjaywKLS0JCQkgICAgICBzdGF0X2FycmF5X29ic3RhY2tfdG9wKTsKLSsJICAgICAgaW50IG9i c3RhY2tfZmluYWxfc2l6ZSA9Ci0rCQlvYnN0YWNrX29iamVjdF9zaXplICgmZG9udF9wcmludF9z dGF0X2FycmF5X29ic3RhY2spOwotKwkgICAgICAKLSsJICAgICAgaWYgKG9ic3RhY2tfZmluYWxf c2l6ZSA+IHN0YXRfYXJyYXlfb2JzdGFja19pbml0aWFsX3NpemUpCi0rCQl7Ci0rCQkgIHZvaWQg KmZyZWVfdG9fcHRyID0KLSsJCSAgICBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJpbnRfc3Rh dF9hcnJheV9vYnN0YWNrKSAtCi0rCQkgICAgKG9ic3RhY2tfZmluYWxfc2l6ZSAtIHN0YXRfYXJy YXlfb2JzdGFja19pbml0aWFsX3NpemUpOwotKwotKwkJICBvYnN0YWNrX2ZyZWUgKCZkb250X3By aW50X3N0YXRfYXJyYXlfb2JzdGFjaywKLSsJCQkJZnJlZV90b19wdHIpOwotKwkJfQotIAkgICAg ICBsYXN0X3NldF9yZWN1cnNlID0gLTE7Ci0gCSAgICB9Ci0gCX0KCmRpZmYgLS1naXQgYS9nZGIt Yno2MDYxODUtb2JzdGFjay00b2Y1LnBhdGNoIGIvZ2RiLWJ6NjA2MTg1LW9ic3RhY2stNG9mNS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1M2EyYi4uMDAwMDAwMAotLS0g YS9nZGItYno2MDYxODUtb2JzdGFjay00b2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIg KzAsMCBAQAotY29tbWl0IDc0NDczNTU1MGQ0YTRmZDZkNGJlNDA3NzYwNjlkNzk5ZGNhNWVlMzkK LUF1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci1EYXRlOiAgIE1v biBKdW4gMTQgMTY6MDk6NTUgMjAxMCArMDAwMAotCi0gICAgCSogY3AtdmFscHJpbnQuYyAoY3Bf cHJpbnRfc3RhdGljX2ZpZWxkKTogTWVtYmVycyBvZgotICAgIAlkb250X3ByaW50X3N0YXRfYXJy YXlfb2JzdGFjayBhcmUgb2YgdHlwZSAic3RydWN0IHR5cGUgKiIuCi0gICAgCShfaW5pdGlhbGl6 ZV9jcF92YWxwcmludCk6IExpa2V3aXNlLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9n ZGIvQ2hhbmdlTG9nCi0jIyAtMSw1ICsxLDExIEBACi0gMjAxMC0wNi0xNCAgVWxyaWNoIFdlaWdh bmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIGNwLXZhbHByaW50LmMgKGNwX3ByaW50 X3N0YXRpY19maWVsZCk6IE1lbWJlcnMgb2YKLSsJZG9udF9wcmludF9zdGF0X2FycmF5X29ic3Rh Y2sgYXJlIG9mIHR5cGUgInN0cnVjdCB0eXBlICoiLgotKwkoX2luaXRpYWxpemVfY3BfdmFscHJp bnQpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTA2LTE0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5k QGRlLmlibS5jb20+Ci0rCi0gCSogZnJhbWUuYyAoZnJhbWVfcmVnaXN0ZXJfdW53aW5kKTogRG8g bm90IGFjY2VzcyBjb250ZW50cwotIAlvZiAib3B0aW1pemVkIG91dCIgdW53b3VuZCByZWdpc3Rl ciB2YWx1ZS4KLSAKLS0tLSBhL2dkYi9jcC12YWxwcmludC5jCi0rKysgYi9nZGIvY3AtdmFscHJp bnQuYwotQEAgLTYxNSw3ICs2MTUsNyBAQCBjcF9wcmludF9zdGF0aWNfZmllbGQgKHN0cnVjdCB0 eXBlICp0eXBlLAotICAgICAgIGZpcnN0X2RvbnRfcHJpbnQKLSAJPSAoc3RydWN0IHR5cGUgKiop IG9ic3RhY2tfYmFzZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrKTsKLSAgICAgICBp ID0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrKQot LQkvIHNpemVvZiAoQ09SRV9BRERSKTsKLSsJLyBzaXplb2YgKHN0cnVjdCB0eXBlICopOwotIAot ICAgICAgIHdoaWxlICgtLWkgPj0gMCkKLSAJewotQEAgLTc2NCw3ICs3NjQsNyBAQCBTaG93IHBy aW50aW5nIG9mIG9iamVjdCdzIGRlcml2ZWQgdHlwZSBiYXNlZCBvbiB2dGFibGUgaW5mby4iKSwg TlVMTCwKLSAJCQkgICBzaG93X29iamVjdHByaW50LAotIAkJCSAgICZzZXRwcmludGxpc3QsICZz aG93cHJpbnRsaXN0KTsKLSAKLS0gIG9ic3RhY2tfYmVnaW4gKCZkb250X3ByaW50X3N0YXRfYXJy YXlfb2JzdGFjaywgMzIgKiBzaXplb2YgKENPUkVfQUREUikpOwotKyAgb2JzdGFja19iZWdpbiAo JmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrLCAzMiAqIHNpemVvZiAoc3RydWN0IHR5cGUg KikpOwotICAgb2JzdGFja19iZWdpbiAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCAzMiAq IHNpemVvZiAoQ09SRV9BRERSKSk7Ci0gICBvYnN0YWNrX2JlZ2luICgmZG9udF9wcmludF92Yl9v YnN0YWNrLCAzMiAqIHNpemVvZiAoc3RydWN0IHR5cGUgKikpOwotIH0KCmRpZmYgLS1naXQgYS9n ZGItYno2MDYxODUtb2JzdGFjay01b2Y1LnBhdGNoIGIvZ2RiLWJ6NjA2MTg1LW9ic3RhY2stNW9m NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE3MWU1Ni4uMDAwMDAwMAot LS0gYS9nZGItYno2MDYxODUtb2JzdGFjay01b2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MjAyICswLDAgQEAKLWNvbW1pdCA0N2M4Yzc2NGE5YmU2ZDAyM2VjYTQ1MDMzNmU2ZDlkZTE2OTcw ZmMwCi1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot RGF0ZTogICBNb24gSnVuIDI4IDE2OjU5OjQzIDIwMTAgKzAwMDAKLQotICAgIGdkYi8KLSAgICAJ KiBjcC12YWxwcmludC5jIChjcF9wcmludF92YWx1ZV9maWVsZHMpIDxyZWN1cnNlID09IDA+OiBD YWxsCi0gICAgCW9ic3RhY2tfYmVnaW4gYWZ0ZXIgZWFjaCBvYnN0YWNrX2ZyZWUuCi0gICAgCi0g ICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAJKiBnZGIuY3Avc3RhdGljLXByaW50LXF1aXQuZXhwLCBn ZGIuY3Avc3RhdGljLXByaW50LXF1aXQuY2M6IE5ldy4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwot IyMjIGIvZ2RiL0NoYW5nZUxvZwotIyMgLTEsMyArMSw4IEBACi0rMjAxMC0wNi0yOCAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGNwLXZhbHByaW50 LmMgKGNwX3ByaW50X3ZhbHVlX2ZpZWxkcykgPHJlY3Vyc2UgPT0gMD46IENhbGwKLSsJb2JzdGFj a19iZWdpbiBhZnRlciBlYWNoIG9ic3RhY2tfZnJlZS4KLSsKLSAyMDEwLTA2LTI3ICBEb3VnIEV2 YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0gCi0gCSogdmFsdWUuYyAodmFsdWVfc3RhdGljX2ZpZWxk KTogVXNlIGBzd2l0Y2gnIGluc3RlYWQgb2YgYGlmJy4KLSMjIC0xMiwyNyArMTcsMjcgQEAKLSAK LSAyMDEwLTA2LTI1ICBQYXVsIEhpbGZpbmdlciAgPGhpbGZpbmdlckBhZGFjb3JlLmNvbT4KLSAK LS0gICAgICAgICogZGVmcy5oIChtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCk6IERlY2xhcmUu Ci0tICAgICAgICAoc2V0X2Rpc3BsYXlfdGltZSk6IERlY2xhcmUuCi0tICAgICAgICAoc2V0X2Rp c3BsYXlfc3BhY2UpOiBEZWNsYXJlLgotLSAgICAgICAgKiBldmVudC10b3AuYyAoY29tbWFuZF9o YW5kbGVyKTogVXNlIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLgotLSAgICAgICAgKiBtYWlu LmMgKGRpc3BsYXlfdGltZSwgZGlzcGxheV9zcGFjZSk6IE1vdmUgZGVmaW5pdGlvbnMgdG8gdXRp bHMuYy4KLS0gICAgICAgIChjYXB0dXJlZF9tYWluKTogVXNlIG1ha2VfY29tbWFuZF9zdGF0c19j bGVhbnVwIHRvIGdldCBzdGFydC11cAotLSAgICAgICAgc3RhdGlzdGljcy4KLS0gICAgICAgIFVz ZSBzZXRfZGlzcGxheV90aW1lIGFuZCBzZXRfZGlzcGxheV9zcGFjZSBmb3IgcHJvY2Vzc2luZyBP UFRfU1RBVElTVElDUwotLSAgICAgICAgY2FzZS4KLS0gICAgICAgICogbWFpbnQuYyAobWFpbnRl bmFuY2VfdGltZV9kaXNwbGF5KTogVXNlIHNldF9kaXNwbGF5X3RpbWUuCi0tICAgICAgICAobWFp bnRlbmFuY2Vfc3BhY2VfZGlzcGxheSk6IFVzZSBzZXRfZGlzcGxheV9zcGFjZS4KLS0gICAgICAg ICogdG9wLmMgKGV4ZWN1dGVfY29tbWFuZCk6IFJlbW92ZSBvYnNvbGV0ZSAnbWFpbnQgdGltZScg Y29kZS4KLS0gICAgICAgIChjb21tYW5kX2xvb3ApOiBVc2UgbWFrZV9jb21tYW5kX3N0YXRzX2Ns ZWFudXAuCi0tICAgICAgICAqIHV0aWxzLmMgKHN0cnVjdCBjbWRfc3RhdHMpOiBTdHJ1Y3R1cmUg Zm9yIHN0b3JpbmcgaW5pdGlhbCB0aW1lCi0tICAgICAgICBhbmQgc3BhY2UgdXNhZ2UuCi0tICAg ICAgICAoZGlzcGxheV90aW1lLCBkaXNwbGF5X3NwYWNlKTogTW92ZSBkZWZpbml0aW9ucyBoZXJl IGZyb20gdXRpbHMuYy4KLS0gICAgICAgIChzZXRfZGlzcGxheV90aW1lKTogTmV3IGZ1bmN0aW9u LgotLSAgICAgICAgKHNldF9kaXNwbGF5X3NwYWNlKTogTmV3IGZ1bmN0aW9uLgotLSAgICAgICAg KG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwKTogTmV3IGZ1bmN0aW9uLgotLSAgICAgICAgKHJl cG9ydF9jb21tYW5kX3N0YXRzKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbiBmb3IKLS0gICAgICAg IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLgotKwkqIGRlZnMuaCAobWFrZV9jb21tYW5kX3N0 YXRzX2NsZWFudXApOiBEZWNsYXJlLgotKwkoc2V0X2Rpc3BsYXlfdGltZSk6IERlY2xhcmUuCi0r CShzZXRfZGlzcGxheV9zcGFjZSk6IERlY2xhcmUuCi0rCSogZXZlbnQtdG9wLmMgKGNvbW1hbmRf aGFuZGxlcik6IFVzZSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4KLSsJKiBtYWluLmMgKGRp c3BsYXlfdGltZSwgZGlzcGxheV9zcGFjZSk6IE1vdmUgZGVmaW5pdGlvbnMgdG8gdXRpbHMuYy4K LSsJKGNhcHR1cmVkX21haW4pOiBVc2UgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgdG8gZ2V0 IHN0YXJ0LXVwCi0rCXN0YXRpc3RpY3MuCi0rCVVzZSBzZXRfZGlzcGxheV90aW1lIGFuZCBzZXRf ZGlzcGxheV9zcGFjZSBmb3IgcHJvY2Vzc2luZyBPUFRfU1RBVElTVElDUwotKwljYXNlLgotKwkq IG1haW50LmMgKG1haW50ZW5hbmNlX3RpbWVfZGlzcGxheSk6IFVzZSBzZXRfZGlzcGxheV90aW1l LgotKwkobWFpbnRlbmFuY2Vfc3BhY2VfZGlzcGxheSk6IFVzZSBzZXRfZGlzcGxheV9zcGFjZS4K LSsJKiB0b3AuYyAoZXhlY3V0ZV9jb21tYW5kKTogUmVtb3ZlIG9ic29sZXRlICdtYWludCB0aW1l JyBjb2RlLgotKwkoY29tbWFuZF9sb29wKTogVXNlIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVw LgotKwkqIHV0aWxzLmMgKHN0cnVjdCBjbWRfc3RhdHMpOiBTdHJ1Y3R1cmUgZm9yIHN0b3Jpbmcg aW5pdGlhbCB0aW1lCi0rCWFuZCBzcGFjZSB1c2FnZS4KLSsJKGRpc3BsYXlfdGltZSwgZGlzcGxh eV9zcGFjZSk6IE1vdmUgZGVmaW5pdGlvbnMgaGVyZSBmcm9tIHV0aWxzLmMuCi0rCShzZXRfZGlz cGxheV90aW1lKTogTmV3IGZ1bmN0aW9uLgotKwkoc2V0X2Rpc3BsYXlfc3BhY2UpOiBOZXcgZnVu Y3Rpb24uCi0rCShtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KLSsJ KHJlcG9ydF9jb21tYW5kX3N0YXRzKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbiBmb3IKLSsJbWFr ZV9jb21tYW5kX3N0YXRzX2NsZWFudXAuCi0gCi0gMjAxMC0wNi0yNSAgVWxyaWNoIFdlaWdhbmQg IDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotIyMgLTYxMDMsNyArNjEwOCw3IEBACi0gCi0gCVBS IGdkYi85MDY3Ci0gCSogY3AtdmFscHJpbnQuYyAoY3BfcHJpbnRfdmFsdWVfZmllbGRzKSBGaXgg dXNlIG9mIG9ic3RhY2tzLgotLQljcF9wcmludF9zdGF0aWNfZmllbGQpICBGaXggdXNlIG9mIG9i c3RhY2tzLgotKwkoY3BfcHJpbnRfc3RhdGljX2ZpZWxkKSAgRml4IHVzZSBvZiBvYnN0YWNrcy4K LSAKLSAyMDEwLTAyLTA4ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+Ci0g Ci0tLS0gYS9nZGIvY3AtdmFscHJpbnQuYwotKysrIGIvZ2RiL2NwLXZhbHByaW50LmMKLUBAIC0x NjQsMTAgKzE2NCwxOSBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAotICAgCi0gICBpZiAocmVjdXJzZSA9PSAwKQotICAg ICB7Ci0rICAgICAgLyogQW55IG9iamVjdCBjYW4gYmUgbGVmdCBvbiBvYnN0YWNrcyBvbmx5IGR1 cmluZyBhbiB1bmV4cGVjdGVkIGVycm9yLiAgKi8KLSsKLSAgICAgICBpZiAob2JzdGFja19vYmpl Y3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKSA+IDApCi0tCW9ic3RhY2tfZnJl ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBOVUxMKTsKLSsJewotKwkgIG9ic3RhY2tf ZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBOVUxMKTsKLSsJICBvYnN0YWNrX2Jl Z2luICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2ssIDMyICogc2l6ZW9mIChDT1JFX0FERFIp KTsKLSsJfQotICAgICAgIGlmIChvYnN0YWNrX29iamVjdF9zaXplICgmZG9udF9wcmludF9zdGF0 X2FycmF5X29ic3RhY2spID4gMCkKLS0Jb2JzdGFja19mcmVlICgmZG9udF9wcmludF9zdGF0X2Fy cmF5X29ic3RhY2ssIE5VTEwpOwotKwl7Ci0rCSAgb2JzdGFja19mcmVlICgmZG9udF9wcmludF9z dGF0X2FycmF5X29ic3RhY2ssIE5VTEwpOwotKwkgIG9ic3RhY2tfYmVnaW4gKCZkb250X3ByaW50 X3N0YXRfYXJyYXlfb2JzdGFjaywKLSsJCQkgMzIgKiBzaXplb2YgKHN0cnVjdCB0eXBlICopKTsK LSsJfQotICAgICB9Ci0gCi0gICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Iik7Ci0jIyMg YS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cK LSMjIC0xLDMgKzEsNyBAQAotKzIwMTAtMDYtMjggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuY3Avc3RhdGljLXByaW50LXF1aXQuZXhwLCBn ZGIuY3Avc3RhdGljLXByaW50LXF1aXQuY2M6IE5ldy4KLSsKLSAyMDEwLTA2LTI4ICBEb3VnIEV2 YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0gCi0gCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cCAo cmVhY2gpOiBSZWxheCBleHBlY3RlZCBvdXRwdXQgYSBiaXQuCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zdGF0aWMtcHJpbnQtcXVpdC5jYwotQEAgLTAsMCArMSwz MiBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2NsYXNzIEQK LSsgIHsKLSsgIHB1YmxpYzoKLSsgICAgaW50IGxvb29vb29vb29vb29vb29vb29vb29vb29vb29v b29vb29vb29vb29vb29vb29vbmc7Ci0rICB9OwotKwotK2NsYXNzIEMKLSsgIHsKLSsgIHB1Ymxp YzoKLSsgICAgaW50IGxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v b29vbmc7Ci0rICAgIHN0YXRpYyBEIGZpZWxkOwotKyAgfTsKLSsKLStEIEM6OmZpZWxkOwotK0Mg YzsKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0YXRpYy1wcmlu dC1xdWl0LmV4cAotQEAgLTAsMCArMSw1MCBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IHRlc3Rm aWxlIHN0YXRpYy1wcmludC1xdWl0Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStzZXQg ZXhlY3V0YWJsZSAkdGVzdGZpbGUubwotK3NldCBvYmpmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHtleGVjdXRhYmxlfQotKwotK2lmIHsgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRpci8kc3Jj ZmlsZSAkb2JqZmlsZSBvYmplY3Qge2RlYnVnIGMrK31dICE9ICIifSB7Ci0rICAgIHVudGVzdGVk ICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAk ZXhlY3V0YWJsZQotKwotK2dkYl90ZXN0ICJzZXQgd2lkdGggODAiCi0rZ2RiX3Rlc3QgInNldCBo ZWlnaHQgMiIKLSsKLStzZXQgdGVzdCAicHJpbnQgYyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVz dCAkdGVzdCB7Ci0rICAgIC1yZSAiID0gXHtsb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v b29vb29vb29vb29vb29vb25nID0gMCwgc3RhdGljIGZpZWxkID0gXHtcclxuLS0tVHlwZSA8cmV0 dXJuPiB0byBjb250aW51ZSwgb3IgcSA8cmV0dXJuPiB0byBxdWl0LS0tJCIgewotKwlwYXNzICR0 ZXN0Ci0rICAgIH0KLSsgICAgLXJlICIgdG8gcXVpdC0tLSQiIHsKLSsJZmFpbCAkdGVzdAotKwly ZXR1cm4gLTEKLSsgICAgfQotK30KLSsKLStnZGJfdGVzdCAicSIgIi4qIgotKwotKyMgTm93IHRo ZSBvYnN0YWNrIGlzIHVuaW5pdGlhbGl6ZWQuICBFeGNlcmNpc2UgaXQuCi0rCi0rZ2RiX3Rlc3Qg InNldCBwYWdpbmF0aW9uIG9mZiIKLStnZGJfdGVzdCAicHJpbnQgYyIgIi4qIiAiZmlyc3QgcHJp bnQiCi0rZ2RiX3Rlc3QgInByaW50IGMiICIuKiIgInNlY29uZCBwcmludCIKCmRpZmYgLS1naXQg YS9nZGItYno2MDY2NjAtcHJpbnQtb2JqZWN0LW5vbnZpcnR1YWwucGF0Y2ggYi9nZGItYno2MDY2 NjAtcHJpbnQtb2JqZWN0LW5vbnZpcnR1YWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDliNTIwMzguLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjA2NjYwLXByaW50LW9iamVjdC1u b252aXJ0dWFsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLWNvbW1pdCBi YjYwNGY5ZTcwZGU1MTViMTNlMmE5MzVkOGFkOWQyZmIwMjkwODQ5Ci1BdXRob3I6IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBNb24gSnVuIDI4IDIw OjEyOjUyIDIwMTAgKzAwMDAKLQotICAgIGdkYi8KLSAgICAJRml4IG1vZGlmaWNhdGlvbiBvZiBj cGx1c19zdHJ1Y3RfZGVmYXVsdC4KLSAgICAJKiBkd2FyZjJyZWFkLmMgKGR3YXJmMl9hZGRfbWVt YmVyX2ZuKSA8bm8gRFdfQVRfdnRhYmxlX2VsZW1fbG9jYXRpb24+OgotICAgIAlDYWxsIEFMTE9D QVRFX0NQTFVTX1NUUlVDVF9UWVBFLgotPHJlbW92ZWQ+Ci0gICAgCSogZ2RidHlwZXMuYyAoY3Bs dXNfc3RydWN0X2RlZmF1bHQpOiBOZXcgZW1wdHkgaW5pdGlhbGl6ZXIsIGNvbW1lbnQgaXQuCi08 L3JlbW92ZWQ+Ci0gICAgCi0gICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAJKiBnZGIuY3AvdmlydGJh c2UuY2MgKGNsYXNzIFJUVElfYmFzZSwgY2xhc3MgUlRUSV9kYXRhKQotICAgIAkobWFpbikgPHJ0 dGlfZGF0YT46IE5ldy4KLSAgICAJKiBnZGIuY3AvdmlydGJhc2UuZXhwIChwcmludCBydHRpX2Rh dGEpOiBOZXcuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMj IC0xLDMgKzEsMTAgQEAKLSsyMDEwLTA2LTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0rCi0rCUZpeCBtb2RpZmljYXRpb24gb2YgY3BsdXNfc3RydWN0X2Rl ZmF1bHQuCi0rCSogZHdhcmYycmVhZC5jIChkd2FyZjJfYWRkX21lbWJlcl9mbikgPG5vIERXX0FU X3Z0YWJsZV9lbGVtX2xvY2F0aW9uPjoKLSsJQ2FsbCBBTExPQ0FURV9DUExVU19TVFJVQ1RfVFlQ RS4KLSsJKiBnZGJ0eXBlcy5jIChjcGx1c19zdHJ1Y3RfZGVmYXVsdCk6IE5ldyBlbXB0eSBpbml0 aWFsaXplciwgY29tbWVudCBpdC4KLSsKLSMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0j IyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsNCArMSwxMCBAQAotKzIwMTAtMDYt MjggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBn ZGIuY3AvdmlydGJhc2UuY2MgKGNsYXNzIFJUVElfYmFzZSwgY2xhc3MgUlRUSV9kYXRhKQotKwko bWFpbikgPHJ0dGlfZGF0YT46IE5ldy4KLSsJKiBnZGIuY3AvdmlydGJhc2UuZXhwIChwcmludCBy dHRpX2RhdGEpOiBOZXcuCi0rCi0jIyMtLS0gYS9nZGIvZ2RidHlwZXMuYwotIyMjKysrIGIvZ2Ri L2dkYnR5cGVzLmMKLSMjI0BAIC0xNzMzLDcgKzE3MzMsOCBAQCBjaGVja19zdHViX21ldGhvZF9n cm91cCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBtZXRob2RfaWQpCi0jIyMgICAgIH0KLSMjIyB9 Ci0jIyMgCi0jIyMtY29uc3Qgc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlIGNwbHVzX3N0cnVjdF9k ZWZhdWx0OwotIyMjKy8qIEVuc3VyZSBpdCBpcyBpbiAucm9kYXRhIChpZiBhdmFpbGFibGUpIGJ5 IHdvcmthcm91bmRpbmcgR0NDIFBSIDQ0NjkwLiAgKi8KLSMjIytjb25zdCBzdHJ1Y3QgY3BsdXNf c3RydWN0X3R5cGUgY3BsdXNfc3RydWN0X2RlZmF1bHQgPSB7IH07Ci0jIyMgCi0jIyMgdm9pZAot IyMjIGFsbG9jYXRlX2NwbHVzX3N0cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLUluZGV4 OiBnZGItNy4xL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcv Z2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA2LTI5IDE4OjI2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA2LTI5IDE4OjM5OjQzLjAwMDAwMDAwMCAr MDIwMAotQEAgLTU0MDQsNiArNTQwNCw3IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3Qg ZmllbGRfaW5mbyAKLSAJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCQkgICAg IF8oIk1lbWJlciBmdW5jdGlvbiBcIiVzXCIgKG9mZnNldCAlZCkgaXMgdmlydHVhbCBidXQgdGhl IHZ0YWJsZSBvZmZzZXQgaXMgbm90IHNwZWNpZmllZCIpLAotIAkJICAgICBmaWVsZG5hbWUsIGRp ZS0+b2Zmc2V0KTsKLSsJICBBTExPQ0FURV9DUExVU19TVFJVQ1RfVFlQRSAodHlwZSk7Ci0gCSAg VFlQRV9DUExVU19EWU5BTUlDICh0eXBlKSA9IDE7Ci0gCX0KLSAgICAgfQotSW5kZXg6IGdkYi03 LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmlydGJhc2UuY2MKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmlydGJhc2UuY2MJMjAxMC0wMi0wMyAwMDo0 MDoyOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3Zp cnRiYXNlLmNjCTIwMTAtMDYtMjkgMTg6Mzk6NDMuMDAwMDAwMDAwICswMjAwCi1AQCAtNzQsOCAr NzQsMTkgQEAgcHVibGljOgotICAgdmlydHVhbCB2b2lkIGIoKSB7fQotIH07Ci0gCi0rY2xhc3Mg UlRUSV9iYXNlCi0rewotK3B1YmxpYzoKLSsgIHZpcnR1YWwgflJUVElfYmFzZSgpIHt9Ci0rfTsK LSAKLS0KLStjbGFzcyBSVFRJX2RhdGEKLSt7Ci0rcHVibGljOgotKyAgUlRUSV9iYXNlIGJhc2U7 Ci0rICBpbnQgZGF0YTsKLSsgIFJUVElfZGF0YSgpIDogZGF0YSgxKSB7fQotK307Ci0gCi0gaW50 IG1haW4oKSB7Ci0gICBwaDo6RGVyaXZlZCB0c3Q7Ci1AQCAtODQsNiArOTUsNyBAQCBpbnQgbWFp bigpIHsKLSAKLSAgIEUgKmUgPSBuZXcgRTsKLSAgIFJIQiAqYiA9IG5ldyBSSEMoKTsKLSsgIFJU VElfZGF0YSBydHRpX2RhdGE7Ci0gCi0gICByZXR1cm4gMDsJCQkvLyBicmVha3BvaW50IDMKLSB9 Ci1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC92aXJ0YmFzZS5leHAKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmlydGJhc2UuZXhw CTIwMTAtMDItMDQgMjI6MDQ6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVz dHN1aXRlL2dkYi5jcC92aXJ0YmFzZS5leHAJMjAxMC0wNi0yOSAxODozOTo1Ni4wMDAwMDAwMDAg KzAyMDAKLUBAIC02MCwzICs2MCw4IEBAIGdkYl90ZXN0ICJwcmludCAqKEQgKikgZSIgIiA9IHs8 Qz4gPSB7diAKLSAjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9 NTYwNzQxCi0gZ2RiX3Rlc3QgInNldCBwcmludCBvYmplY3Qgb24iICIiCi0gZ2RiX3Rlc3QgInBy aW50L3ggYi0+bUEiICIgPSAweGFhYWFhYWFhIgotKwotKyMgQSByZWdyZXNzaW9uIHRlc3QgcmVw b3J0ZWQgdG8gUmVkIEhhdCBidWd6aWxsYSwgc2VlOgotKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MDY2NjAKLSsjIGBzZXQgcHJpbnQgb2JqZWN0IG9uJyBp cyBleHBlY3RlZC4KLStnZGJfdGVzdCAicHJpbnQgcnR0aV9kYXRhIiAiID0gLiosIGRhdGEgPSAx XH0iCgpkaWZmIC0tZ2l0IGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2ggYi9nZGIt Y29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAppbmRleCBkMDVlNzJiLi4wNTZhMjhjIDEwMDY0 NAotLS0gYS9nZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAorKysgYi9nZGItY29yZS1v cGVuLXZkc28td2FybmluZy5wYXRjaApAQCAtMzMsOSArMzMsMTEgQEAgZ2RiLwogCiBbIENvbnRl eHQgYmFja3BvcnQuICBdCiAKLS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKLSsrKyBiL2dkYi9zb2xp Yi1zdnI0LmMKLUBAIC0xMDk3LDggKzEwOTcsMTggQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkK K0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi1zdnI0LmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLTA3LTEy IDIzOjA3OjM1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Nv bGliLXN2cjQuYwkyMDEwLTA3LTEzIDAwOjE5OjAzLjAwMDAwMDAwMCArMDIwMAorQEAgLTExNzcs OCArMTE3NywxOCBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQogIAkgIHRhcmdldF9yZWFkX3N0 cmluZyAoTE1fTkFNRSAobmV3KSwgJmJ1ZmZlciwKICAJCQkgICAgICBTT19OQU1FX01BWF9QQVRI X1NJWkUgLSAxLCAmZXJyY29kZSk7CiAgCSAgaWYgKGVycmNvZGUgIT0gMCkKQEAgLTU2LDkgKzU4 LDExIEBAIGdkYi8KICAJICBlbHNlCiAgCSAgICB7CiAgCSAgICAgIHN0cnVjdCBidWlsZF9pZCAq YnVpbGRfaWQ7Ci0tLS0gYS9nZGIvc29saWIuYwotKysrIGIvZ2RiL3NvbGliLmMKLUBAIC01Mzgs NiArNTM4LDcgQEAgdXBkYXRlX3NvbGliX2xpc3QgKGludCBmcm9tX3R0eSwgc3RydWN0IHRhcmdl dF9vcHMgKnRhcmdldCkKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9zb2xpYi5jCTIwMTAt MDUtMTcgMDE6NDk6NTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvc29saWIuYwkyMDEwLTA3LTEzIDAwOjIxOjAxLjAwMDAwMDAwMCArMDIwMAorQEAgLTcwNSw2 ICs3MDUsNyBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgCiAgICBz dHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CiAg ICBzdHJ1Y3Qgc29fbGlzdCAqaW5mZXJpb3IgPSBvcHMtPmN1cnJlbnRfc29zKCk7CiAgICBzdHJ1 Y3Qgc29fbGlzdCAqZ2RiLCAqKmdkYl9saW5rOwpAQCAtNjYsMTcgKzcwLDE2IEBAIGdkYi8KICAK ICAgIC8qIFdlIGNhbiByZWFjaCBoZXJlIGR1ZSB0byBjaGFuZ2luZyBzb2xpYi1zZWFyY2gtcGF0 aCBvciB0aGUKICAgICAgIHN5c3Jvb3QsIGJlZm9yZSBoYXZpbmcgYW55IGluZmVyaW9yLiAgKi8K LUBAIC02NjgsNiArNjY5LDEyIEBAIHVwZGF0ZV9zb2xpYl9saXN0IChpbnQgZnJvbV90dHksIHN0 cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQpCitAQCAtODQ0LDYgKzg0NSwxMiBAQCBFcnJvciB3aGls ZSBtYXBwaW5nIHNoYXJlZCBsaWJyYXJ5IHNlY3RpCiAgCSAgb2JzZXJ2ZXJfbm90aWZ5X3NvbGli X2xvYWRlZCAoaSk7CiAgCX0KLSAgICAgfQorIAorKyAgICAgIC8qIElmIHRoaXMgd2FzIHRoZSB2 ZXJ5IGZpcnN0IERTTyBsaXN0IHNjYW4gYW5kIHdlIHBvc3NpYmx5IHJlYWQgaW4gbGQuc28KKysJ IHJlY2hlY2sgYWxsIHRoZSBmb3JtZXJseSB1bnJlYWRhYmxlIERTTyBuYW1lcyBzdHJpbmdzLiAg Ki8KICsKLSsgIC8qIElmIHRoaXMgd2FzIHRoZSB2ZXJ5IGZpcnN0IERTTyBsaXN0IHNjYW4gYW5k IHdlIHBvc3NpYmx5IHJlYWQgaW4gbGQuc28KLSsgICAgIHJlY2hlY2sgYWxsIHRoZSBmb3JtZXJs eSB1bnJlYWRhYmxlIERTTyBuYW1lcyBzdHJpbmdzLiAgKi8KKysgICAgICBpZiAoc2F2ZWRfc29f bGlzdF9oZWFkID09IE5VTEwgJiYgc29fbGlzdF9oZWFkICE9IE5VTEwpCisrCXJldHVybiB1cGRh dGVfc29saWJfbGlzdCAoZnJvbV90dHksIHRhcmdldCk7CiArCi0rICBpZiAoc2F2ZWRfc29fbGlz dF9oZWFkID09IE5VTEwgJiYgc29fbGlzdF9oZWFkICE9IE5VTEwpCi0rICAgIHVwZGF0ZV9zb2xp Yl9saXN0IChmcm9tX3R0eSwgdGFyZ2V0KTsKLSB9Ci0gCi0gCi0KKyAgICAgICAvKiBJZiBhIGxp YnJhcnkgd2FzIG5vdCBmb3VuZCwgaXNzdWUgYW4gYXBwcm9wcmlhdGUgd2FybmluZworIAkgbWVz c2FnZS4gIFdlIGhhdmUgdG8gdXNlIGEgc2luZ2xlIGNhbGwgdG8gd2FybmluZyBpbiBjYXNlIHRo ZQorIAkgZnJvbnQgZW5kIGRvZXMgc29tZXRoaW5nIHNwZWNpYWwgd2l0aCB3YXJuaW5ncywgZS5n LiwgcG9wIHVwCgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaCBi L2dkYi1mb3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gKaW5kZXggMWUxMzE4My4uM2I4NDNiOCAx MDA2NDQKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaAorKysgYi9nZGItZm9y dHJhbi1jb21tb24tcmVkdWNlLnBhdGNoCkBAIC0xLDYgKzEsOCBAQAotLS0tIGEvZ2RiL2YtbGFu Zy5jCi0rKysgYi9nZGIvZi1sYW5nLmMKLUBAIC01NSwyMCArNTUsNiBAQCB0eXBlZGVmIHN0cnVj dCBzYXZlZF9iZl9zeW1udW0gU0FWRURfQkYsICpTQVZFRF9CRl9QVFI7CitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZi1sYW5nLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xLjkwLjIw MTAwNzExLm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTAtMDYtMDMgMDA6NDE6NTUuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi1sYW5nLmMJMjAxMC0wNy0xMyAwMDoy NDowNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC01NiwyMCArNTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBz YXZlZF9iZl9zeW1udW0gU0FWRURfQkYsCiAgLyogTG9jYWwgZnVuY3Rpb25zICovCiAgCiAgZXh0 ZXJuIHZvaWQgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCk7CkBAIC0yMSw3ICsyMyw3IEBA CiAgCiAgc3RhdGljIHZvaWQgZl9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0pOwogIHN0YXRpYyB2b2lkIGZfZW1pdF9jaGFyIChpbnQg Yywgc3RydWN0IHR5cGUgKnR5cGUsCi1AQCAtNDE5LDE4NSArNDA1LDcgQEAgX2luaXRpYWxpemVf Zl9sYW5ndWFnZSAodm9pZCkKK0BAIC00NTgsMTg1ICs0NDQsNyBAQCBfaW5pdGlhbGl6ZV9mX2xh bmd1YWdlICh2b2lkKQogICAgYWRkX2xhbmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsKICB9CiAg CkBAIC0yMDcsNyArMjA5LDcgQEAKICAKICAvKiBUaGlzIHJvdXRpbmUgZmluZHMgdGhlIGZpcnN0 IGVuY291bnRyZWQgQ09NTU9OIGJsb2NrIG5hbWVkICJuYW1lIiAKICAgICB0aGF0IGJlbG9uZ3Mg dG8gZnVuY3Rpb24gZnVuY25hbWUgKi8KLUBAIC02MjAsMTkzICs0MjgsMyBAQCBmaW5kX2NvbW1v bl9mb3JfZnVuY3Rpb24gKGNoYXIgKm5hbWUsIGNoYXIgKmZ1bmNuYW1lKQorQEAgLTY1OSwxOTMg KzQ2NywzIEBAIGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hhciAqbmFtZSwgY2gKICAgICAg fQogICAgcmV0dXJuIChOVUxMKTsKICB9CkBAIC00MDEsOSArNDAzLDExIEBACiAtICBzYXZlZF9m dW5jdGlvbl9saXN0ID0gTlVMTDsKIC19CiAtI2VuZGlmCi0tLS0gYS9nZGIvZi1sYW5nLmgKLSsr KyBiL2dkYi9mLWxhbmcuaAotQEAgLTcxLDE0ICs3MSw5IEBAIHR5cGVkZWYgc3RydWN0IHNhdmVk X2Y3N19jb21tb24gU0FWRURfRjc3X0NPTU1PTiwgKlNBVkVEX0Y3N19DT01NT05fUFRSOworSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2YtbGFuZy5oCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9mLWxhbmcuaAkyMDEwLTA3LTEyIDIzOjA3OjMzLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2YtbGFuZy5oCTIwMTAt MDctMTMgMDA6MjQ6MDQuMDAwMDAwMDAwICswMjAwCitAQCAtNzYsMTQgKzc2LDkgQEAgdHlwZWRl ZiBzdHJ1Y3Qgc2F2ZWRfZjc3X2NvbW1vbiBTQVZFRF9GNwogIHR5cGVkZWYgc3RydWN0IGNvbW1v bl9lbnRyeSBDT01NT05fRU5UUlksICpDT01NT05fRU5UUllfUFRSOwogIAogIGV4dGVybiBTQVZF RF9GNzdfQ09NTU9OX1BUUiBoZWFkX2NvbW1vbl9saXN0OwkvKiBQdHIgdG8gMXN0IHNhdmVkIENP TU1PTiAgKi8KQEAgLTQxOCw4ICs0MjIsMTAgQEAKICAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1F X09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3NpZ25lZCAgKi8KICAjZGVmaW5lIEJMQU5L X0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJLyogTUY3NyBhc3NpZ25lZCAgKi8KICAj ZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAgICJfX0JMQU5LIgkvKiBMb2NhbCBHREIg Ki8KLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKK0luZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLXZhbHByaW50LmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTA3LTEyIDIzOjA3 OjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2YtdmFscHJp bnQuYwkyMDEwLTA3LTEzIDAwOjI0OjI1LjAwMDAwMDAwMCArMDIwMAogQEAgLTM1LDEwICszNSw2 IEBACiAgI2luY2x1ZGUgImNvbW1hbmQuaCIKICAjaW5jbHVkZSAiYmxvY2suaCIKQEAgLTQzMSw3 ICs0MzcsNyBAQAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfdmFscHJpbnQgKHZvaWQpOwog IHN0YXRpYyB2b2lkIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKICBzdGF0aWMg dm9pZCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKik7Ci1AQCAtNTc4LDY3ICs1NzQs NiBAQCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgZnJvbV90dHkpCitA QCAtNjAxLDY3ICs1OTcsNiBAQCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBp bnQgCiAgCQkgICAgIGNvbW5hbWUsIGZ1bm5hbWUpOwogIH0KICAKQEAgLTQ4NCw3ICs0OTAsNyBA QAogLSAgZWxzZQogLSAgICB7CiAtICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9s ID0KLS0gICAgICBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKGZpLT5wYyk7CistCWxvb2t1 cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKIC0KIC0gICAgICBpZiAobXN5bWJvbCAh PSBOVUxMKQogLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCk7CgpkaWZm IC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoIGIvZ2RiLWZvcnRyYW4tY29tbW9uLnBh dGNoCmluZGV4IDNiOTA3OWYuLjYzZmE4MWMgMTAwNjQ0Ci0tLSBhL2dkYi1mb3J0cmFuLWNvbW1v bi5wYXRjaAorKysgYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41 MC4yMDEwMDEyOC5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0yOCAxMjo1MzozNy4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9kd2FyZjJyZWFkLmMJMjAx MC0wMS0yOCAxMjo1NDozNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC01ODE4LDEyICs1ODE4LDE0IEBA IHJlYWRfc2V0X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHIKKy0tLSBnZGItNy4xLjkw LjIwMTAwNzExLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjEzOjAyLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEw LTA3LTEzIDAwOjI2OjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTU3MjcsMTIgKzU3MjcsMTQgQEAg cmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cgogICAgcmV0dXJuIHNldF9k aWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOwogIH0KICAKQEAgLTE5LDcgKzE5LDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2R3YXJmMnJlYWQuYwogICAgc3RydWN0IGF0dHJp YnV0ZSAqYXR0cjsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKICAgIENPUkVfQUREUiBiYXNlID0g KENPUkVfQUREUikgMDsKLUBAIC01ODQ4LDEwICs1ODUwLDQwIEBAIHJlYWRfY29tbW9uX2Jsb2Nr IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC01NzU3LDEwICs1NzU5LDQwIEBAIHJlYWRfY29t bW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgICAgfQogICAgaWYgKGRpZS0+Y2hp bGQgIT0gTlVMTCkKICAgICAgewpAQCAtNjAsNyArNjAsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4y MDEwMDEyOC9nZGIvZHdhcmYycmVhZC5jCiAgCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9k aWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uLCBjdSk7CiAgCSAgaWYgKGF0dHIpCiAgCSAg ICB7Ci1AQCAtNTg2OSw4ICs1OTAxLDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwKK0BAIC01Nzc4LDggKzU4MTAsMjUgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLAogIAkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9 IGJhc2UgKyBieXRlX29mZnNldDsKICAJICAgICAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sICZn bG9iYWxfc3ltYm9scyk7CiAgCSAgICB9CkBAIC04Niw3ICs4Niw3IEBAIEluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTI4L2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC05MDYxLDYg KzkxMTAsMTMgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorQEAg LTkxMDYsNiArOTE1NSwxMyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0CiAgCSAgICB7CiAgCSAgICAgIHZhcl9kZWNvZGVfbG9jYXRpb24gKGF0dHIsIHN5bSwgY3Up OwogIAkgICAgICBhdHRyMiA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4dGVybmFsLCBjdSk7 CkBAIC0xMDAsOCArMTAwLDggQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2R3YXJm MnJlYWQuYwogIAkgICAgICBpZiAoYXR0cjIgJiYgKERXX1VOU05EIChhdHRyMikgIT0gMCkpCiAg CQl7CiAgCQkgIHN0cnVjdCBwZW5kaW5nICoqbGlzdF90b19hZGQ7Ci1AQCAtOTI0NSw2ICs5MzAx LDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QKLSAJICBTWU1C T0xfRE9NQUlOIChzeW0pID0gTU9EVUxFX0RPTUFJTjsKK0BAIC05Mjc3LDYgKzkzMzMsMTEgQEAg bmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorIAkgIFNZTUJPTF9DTEFT UyAoc3ltKSA9IExPQ19UWVBFREVGOwogIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xv YmFsX3N5bWJvbHMpOwogIAkgIGJyZWFrOwogKwljYXNlIERXX1RBR19jb21tb25fYmxvY2s6CkBA IC0xMTIsMTEgKzExMiwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZHdhcmYy cmVhZC5jCiAgCWRlZmF1bHQ6CiAgCSAgLyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4gIEhvcGVm dWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwogIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBzaW5jZSB3 ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1JbmRleDogZ2RiLTcuMC41MC4yMDEw MDEyOC9nZGIvZi1sYW5nLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLWxhbmcu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZi1sYW5nLmMJ MjAxMC0wMS0yOCAxMjo1MzozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTI4L2dkYi9mLWxhbmcuYwkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAotQEAg LTQ0NiwyNyArNDQ2LDMgQEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCkKKy0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTAtMDctMTMgMDA6MjQ6MDQuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi1sYW5nLmMJMjAxMC0w Ny0xMyAwMDoyNTo1Ni4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NDMsMjcgKzQ0MywzIEBAIF9pbml0 aWFsaXplX2ZfbGFuZ3VhZ2UgKHZvaWQpCiAgCiAgICBhZGRfbGFuZ3VhZ2UgKCZmX2xhbmd1YWdl X2RlZm4pOwogIH0KQEAgLTE0NCwxMSArMTQ0LDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTI4L2dkYi9mLWxhbmcuYwogLSAgICB9CiAtICByZXR1cm4gKE5VTEwpOwogLX0KLUluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLWxhbmcuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2YtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmln L2dkYi9mLWxhbmcuaAkyMDEwLTAxLTI4IDEyOjUzOjM4LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjAuNTAuMjAxMDAxMjgvZ2RiL2YtbGFuZy5oCTIwMTAtMDEtMjggMTI6NTM6NDYuMDAwMDAw MDAwICswMTAwCi1AQCAtNTEsMzYgKzUxLDggQEAgZW51bSBmOTBfcmFuZ2VfdHlwZQorLS0tIGdk Yi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZi1sYW5nLmgJMjAxMC0wNy0xMyAwMDoyNDowNC4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLWxhbmcuaAkyMDEw LTA3LTEzIDAwOjI1OjU2LjAwMDAwMDAwMCArMDIwMAorQEAgLTUyLDM2ICs1Miw4IEBAIGVudW0g ZjkwX3JhbmdlX3R5cGUKICAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxvdzpoaWdoKSIg ICovCiAgICB9OwogIApAQCAtMTg1LDEwICsxODUsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMjgvZ2RiL2YtbGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFycmF5IGJvdW5kcyBj YW5ub3QgYmUgZmV0Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sgdG8gJ210IHByaW50 IHN5bWJvbHMnIGFuZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1JbmRleDogZ2RiLTcu MC41MC4yMDEwMDEyOC9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5v cmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMC0wMS0yOCAxMjo1MzozOC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMJMjAxMC0wMS0yOCAxMjo1 Mzo0Ni4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2Yt dmFscHJpbnQuYwkyMDEwLTA3LTEzIDAwOjI0OjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTA3LTEzIDAwOjMyOjA1LjAwMDAw MDAwMCArMDIwMAogQEAgLTM0LDYgKzM0LDggQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNp bmNsdWRlICJjb21tYW5kLmgiCkBAIC0xOTgsNyArMTk4LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMjgvZ2RiL2YtdmFscHJpbnQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2Zf dmFscHJpbnQgKHZvaWQpOwogIHN0YXRpYyB2b2lkIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIg KiwgaW50KTsKLUBAIC00NzYsMjIgKzQ3OCw1NCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkCitAQCAtNDg2LDIyICs0ODgsNTQgQEAgZl92YWxfcHJpbnQgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZAogICAgcmV0dXJuIDA7CiAgfQogIApAQCAtMjY2LDcgKzI2 Niw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMKICB9CiAg CiAgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHByaW50IG91dCB0aGUgdmFsdWVzIGluIGEg Z2l2ZW4gQ09NTU9OIAotQEAgLTUwMSwxMSArNTM1LDkgQEAgbGlzdF9hbGxfdmlzaWJsZV9jb21t b25zIChjaGFyICpmdW5uYW1lKQorQEAgLTUxMSwxMSArNTQ1LDkgQEAgbGlzdF9hbGxfdmlzaWJs ZV9jb21tb25zIChjaGFyICpmdW5uYW1lKQogIHN0YXRpYyB2b2lkCiAgaW5mb19jb21tb25fY29t bWFuZCAoY2hhciAqY29tbmFtZSwgaW50IGZyb21fdHR5KQogIHsKQEAgLTI4MCw3ICsyODAsNyBA QCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZi12YWxwcmludC5jCiAgCiAgICAvKiBX ZSBoYXZlIGJlZW4gdG9sZCB0byBkaXNwbGF5IHRoZSBjb250ZW50cyBvZiBGNzcgQ09NTU9OIAog ICAgICAgYmxvY2sgc3VwcG9zZWRseSB2aXNpYmxlIGluIHRoaXMgZnVuY3Rpb24uICBMZXQgdXMg Ci1AQCAtNTE3LDc0ICs1NDksMzEgQEAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFt ZSwgaW50IAorQEAgLTUyNyw3NCArNTU5LDMxIEBAIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIg KmNvbW5hbWUsIGludCAKICAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgZ2VuZXJhbGx5IHJpcHBlZCBv ZmYgZnJvbSBzdGFjay5jJ3Mgcm91dGluZSAKICAgICAgIHByaW50X2ZyYW1lX2luZm8oKSAqLwog IApAQCAtMzE2LDcgKzMxNiw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLXZh bHByaW50LmMKIC0gIGVsc2UKIC0gICAgewogLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq bXN5bWJvbCA9Ci0tICAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChnZXRfZnJhbWVf cGMgKGZpKSk7CistCWxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChm aSkpOwogLQogLSAgICAgIGlmIChtc3ltYm9sICE9IE5VTEwpCiAtCWZ1bm5hbWUgPSBTWU1CT0xf TElOS0FHRV9OQU1FIChtc3ltYm9sKTsKQEAgLTM3MSwzOSArMzcxLDM5IEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMKICB9CiAgCiAgdm9pZAotSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMjgvZ2RiL3N0YWNrLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9zdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dk Yi9zdGFjay5jCTIwMTAtMDEtMjggMTI6NTI6MTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC41MC4yMDEwMDEyOC9nZGIvc3RhY2suYwkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCAr MDEwMAotQEAgLTE0NzQsNiArMTQ3NCw4IEBAIHByaW50X2Jsb2NrX2ZyYW1lX2xvY2FscyAoc3Ry dWN0IGJsb2NrICoKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3N0YWNrLmMJMjAx MC0wNy0wMSAxNzozNjoxNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9zdGFjay5jCTIwMTAtMDctMTMgMDA6Mjk6NDkuMDAwMDAwMDAwICswMjAwCitAQCAtMTQ4 NCw2ICsxNDg0LDggQEAgaXRlcmF0ZV9vdmVyX2Jsb2NrX2xvY2FscyAoc3RydWN0IGJsb2NrIAog IAljYXNlIExPQ19DT01QVVRFRDoKICAJICBpZiAoU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQog IAkgICAgYnJlYWs7CiArCSAgaWYgKFNZTUJPTF9ET01BSU4gKHN5bSkgPT0gQ09NTU9OX0JMT0NL X0RPTUFJTikKICsJICAgIGJyZWFrOwotIAkgIHZhbHVlc19wcmludGVkID0gMTsKLSAJICBwcmlu dF92YXJpYWJsZV9hbmRfdmFsdWUgKE5VTEwsIHN5bSwgZnJhbWUsIHN0cmVhbSwgNCAqIG51bV90 YWJzKTsKKyAJICAoKmNiKSAoU1lNQk9MX1BSSU5UX05BTUUgKHN5bSksIHN5bSwgY2JfZGF0YSk7 CiAgCSAgYnJlYWs7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvc3ltdGFiLmgKKyAK K0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW10YWIuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wMS0yOCAxMjo1Mjoy MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9zeW10YWIuaAky MDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAotQEAgLTQwMSw3ICs0MDEsMTAgQEAg dHlwZWRlZiBlbnVtIGRvbWFpbl9lbnVtX3RhZwotICAgVFlQRVNfRE9NQUlOLAorLS0tIGdkYi03 LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wNy0xMiAyMzowNzozMy4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW10YWIuaAkyMDEwLTA3 LTEzIDAwOjI3OjAyLjAwMDAwMDAwMCArMDIwMAorQEAgLTM5Niw3ICszOTYsMTAgQEAgdHlwZWRl ZiBlbnVtIGRvbWFpbl9lbnVtX3RhZworICAgRlVOQ1RJT05TX0RPTUFJTiwKICAKLSAgIC8qIEZv cnRyYW4gbW9kdWxlLiAgVGhlaXIgbmFtaW5nIG11c3QgYmUgc2VwYXJhdGUuICAqLwotLSAgTU9E VUxFX0RPTUFJTgotKyAgTU9EVUxFX0RPTUFJTiwKKyAgIC8qIEFsbCBkZWZpbmVkIHR5cGVzICov CistICBUWVBFU19ET01BSU4KKysgIFRZUEVTX0RPTUFJTiwKICsKICsgIC8qIEZvcnRyYW4gY29t bW9uIGJsb2Nrcy4gIFRoZWlyIG5hbWluZyBtdXN0IGJlIHNlcGFyYXRlIGZyb20gVkFSX0RPTUFJ Ti4gICovCiArICBDT01NT05fQkxPQ0tfRE9NQUlOCiAgfQogIGRvbWFpbl9lbnVtOwogIAotSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24t YmxvY2suZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2NvbW1vbi1ibG9jay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTAxLTI4IDEyOjUz OjQ2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAtMDctMTMgMDA6MjU6NTYuMDAwMDAw MDAwICswMjAwCiBAQCAtMCwwICsxLDEwMSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC01MDYsMTAgKzUwNiwxMCBAQCBJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5l eHAKICtnZGJfdGVzdCAicCBpeF94IiAiID0gMSAqIiAicCBpeF94IGluIgogK2dkYl90ZXN0ICJw IGl5X3kiICIgPSAyICoiICJwIGl5X3kgaW4iCiArZ2RiX3Rlc3QgInAgaXpfejIiICIgPSAzICoi ICJwIGl6X3oyIGluIgotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5 MAkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCTIwMTAtMDct MTMgMDA6MjU6NTYuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDY3IEBACiArISBDb3B5cmln aHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICshCgpkaWZmIC0tZ2l0IGEv Z2RiLWZvcnRyYW4tbG9naWNhbDgucGF0Y2ggYi9nZGItZm9ydHJhbi1sb2dpY2FsOC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFkYjY1YS4uMDAwMDAwMAotLS0gYS9nZGIt Zm9ydHJhbi1sb2dpY2FsOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0t LS0gYS9nZGIvZi1leHAueQotKysrIGIvZ2RiL2YtZXhwLnkKLUBAIC0xOTYsNiArMTk2LDcgQEAg c3RhdGljIGludCBwYXJzZV9udW1iZXIgKGNoYXIgKiwgaW50LCBpbnQsIFlZU1RZUEUgKik7Ci0g LyogU3BlY2lhbCB0eXBlIGNhc2VzLCBwdXQgaW4gdG8gYWxsb3cgdGhlIHBhcnNlciB0byBkaXN0 aW5ndWlzaCBkaWZmZXJlbnQKLSAgICBsZWdhbCBiYXNldHlwZXMuICAqLwotICV0b2tlbiBJTlRf S0VZV09SRCBJTlRfUzJfS0VZV09SRCBMT0dJQ0FMX1MxX0tFWVdPUkQgTE9HSUNBTF9TMl9LRVlX T1JEIAotKyV0b2tlbiBMT0dJQ0FMX1M4X0tFWVdPUkQgCi0gJXRva2VuIExPR0lDQUxfS0VZV09S RCBSRUFMX0tFWVdPUkQgUkVBTF9TOF9LRVlXT1JEIFJFQUxfUzE2X0tFWVdPUkQgCi0gJXRva2Vu IENPTVBMRVhfUzhfS0VZV09SRCBDT01QTEVYX1MxNl9LRVlXT1JEIENPTVBMRVhfUzMyX0tFWVdP UkQgCi0gJXRva2VuIEJPT0xfQU5EIEJPT0xfT1IgQk9PTF9OT1QgICAKLUBAIC02MDYsNiArNjA3 LDggQEAgdHlwZWJhc2UgIC8qIEltcGxlbWVudHMgKGFwcHJveGltYXRlbHkpOiAodHlwZS1xdWFs aWZpZXIpKiB0eXBlLXNwZWNpZmllciAqLwotIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0 aW5faW50ZWdlcl9zMjsgfQotIAl8CUNIQVJBQ1RFUiAKLSAJCQl7ICQkID0gcGFyc2VfZl90eXBl LT5idWlsdGluX2NoYXJhY3RlcjsgfQotKwl8CUxPR0lDQUxfUzhfS0VZV09SRAotKwkJCXsgJCQg PSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbF9zODt9Ci0gCXwJTE9HSUNBTF9LRVlXT1JE IAotIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbDsgfQotIAl8CUxPR0lD QUxfUzJfS0VZV09SRAotQEAgLTg1OCw2ICs4NjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRv a2VuIGY3N19rZXl3b3Jkc1tdID0KLSAgIHsgImludGVnZXJfMiIsIElOVF9TMl9LRVlXT1JELCBC SU5PUF9FTkQgfSwKLSAgIHsgImxvZ2ljYWxfMSIsIExPR0lDQUxfUzFfS0VZV09SRCwgQklOT1Bf RU5EIH0sCi0gICB7ICJsb2dpY2FsXzIiLCBMT0dJQ0FMX1MyX0tFWVdPUkQsIEJJTk9QX0VORCB9 LAotKyAgeyAibG9naWNhbF84IiwgTE9HSUNBTF9TOF9LRVlXT1JELCBCSU5PUF9FTkQgfSwKLSAg IHsgImNvbXBsZXhfOCIsIENPTVBMRVhfUzhfS0VZV09SRCwgQklOT1BfRU5EIH0sCi0gICB7ICJp bnRlZ2VyIiwgSU5UX0tFWVdPUkQsIEJJTk9QX0VORCB9LAotICAgeyAibG9naWNhbCIsIExPR0lD QUxfS0VZV09SRCwgQklOT1BfRU5EIH0sCi0tLS0gYS9nZGIvZi1sYW5nLmMKLSsrKyBiL2dkYi9m LWxhbmcuYwotQEAgLTI1OSw2ICsyNDUsNyBAQCBlbnVtIGZfcHJpbWl0aXZlX3R5cGVzIHsKLSAg IGZfcHJpbWl0aXZlX3R5cGVfbG9naWNhbCwKLSAgIGZfcHJpbWl0aXZlX3R5cGVfbG9naWNhbF9z MSwKLSAgIGZfcHJpbWl0aXZlX3R5cGVfbG9naWNhbF9zMiwKLSsgIGZfcHJpbWl0aXZlX3R5cGVf bG9naWNhbF9zOCwKLSAgIGZfcHJpbWl0aXZlX3R5cGVfaW50ZWdlciwKLSAgIGZfcHJpbWl0aXZl X3R5cGVfaW50ZWdlcl9zMiwKLSAgIGZfcHJpbWl0aXZlX3R5cGVfcmVhbCwKLUBAIC0yODksNiAr Mjc2LDggQEAgZl9sYW5ndWFnZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot ICAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zMTsKLSAgIGxhaS0+cHJpbWl0aXZlX3R5 cGVfdmVjdG9yIFtmX3ByaW1pdGl2ZV90eXBlX2xvZ2ljYWxfczJdCi0gICAgID0gYnVpbHRpbi0+ YnVpbHRpbl9sb2dpY2FsX3MyOwotKyAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJp bWl0aXZlX3R5cGVfbG9naWNhbF9zOF0KLSsgICAgPSBidWlsdGluLT5idWlsdGluX2xvZ2ljYWxf czg7Ci0gICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZl9wcmltaXRpdmVfdHlwZV9yZWFs XQotICAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fcmVhbDsKLSAgIGxhaS0+cHJpbWl0aXZlX3R5cGVf dmVjdG9yIFtmX3ByaW1pdGl2ZV90eXBlX3JlYWxfczhdCi1AQCAtMzcyLDYgKzM2MSwxMCBAQCBi dWlsZF9mb3J0cmFuX3R5cGVzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSAgICAgPSBhcmNo X2Jvb2xlYW5fdHlwZSAoZ2RiYXJjaCwgZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gpLCAxLAot IAkJCSAibG9naWNhbCoyIik7Ci0gCi0rICBidWlsdGluX2ZfdHlwZS0+YnVpbHRpbl9sb2dpY2Fs X3M4Ci0rICAgID0gYXJjaF9ib29sZWFuX3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfbG9uZ19sb25n X2JpdCAoZ2RiYXJjaCksIDEsCi0rCQkJICJsb2dpY2FsKjgiKTsKLSsKLSAgIGJ1aWx0aW5fZl90 eXBlLT5idWlsdGluX2ludGVnZXIKLSAgICAgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwg Z2RiYXJjaF9pbnRfYml0IChnZGJhcmNoKSwgMCwKLSAJCQkgImludGVnZXIiKTsKLS0tLSBhL2dk Yi9mLWxhbmcuaAotKysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtMTEzLDYgKzgwLDcgQEAgc3RydWN0 IGJ1aWx0aW5fZl90eXBlCi0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9sb2dpY2FsOwotICAgc3Ry dWN0IHR5cGUgKmJ1aWx0aW5fbG9naWNhbF9zMTsKLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX2xv Z2ljYWxfczI7Ci0rICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9sb2dpY2FsX3M4OwotICAgc3RydWN0 IHR5cGUgKmJ1aWx0aW5fcmVhbDsKLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX3JlYWxfczg7Ci0g ICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9yZWFsX3MxNjsKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbG9naWNhbC5leHAKLUBAIC0wLDAgKzEsNDQgQEAKLSsj IENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUg d2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ LgotKwotK3NldCB0ZXN0ZmlsZSAibG9naWNhbCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5m OTAKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZp bGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3Vi ZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsK LSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNv bnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdG9w LWhlcmUiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJzdG9wLWhlcmUiCi0rZ2RiX3Rl c3QgInAgbCIgIiA9IFxcLlRSVUVcXC4iCi0rZ2RiX3Rlc3QgInAgbDEiICIgPSBcXC5UUlVFXFwu IgotK2dkYl90ZXN0ICJwIGwyIiAiID0gXFwuVFJVRVxcLiIKLStnZGJfdGVzdCAicCBsNCIgIiA9 IFxcLlRSVUVcXC4iCi0rZ2RiX3Rlc3QgInAgbDgiICIgPSBcXC5UUlVFXFwuIgotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbG9naWNhbC5mOTAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2xvZ2ljYWwuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uNDIyOTMwNAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9sb2dpY2FsLmY5MAotQEAgLTAsMCArMSwzMyBAQAotKyEgQ29weXJpZ2h0IDIwMDggRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNl IGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3Vi IEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVz dGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwot K3Byb2dyYW0gdGVzdAotKyAgbG9naWNhbCA6OiBsCi0rICBsb2dpY2FsIChraW5kPTEpIDo6IGwx Ci0rICBsb2dpY2FsIChraW5kPTIpIDo6IGwyCi0rICBsb2dpY2FsIChraW5kPTQpIDo6IGw0Ci0r ICBsb2dpY2FsIChraW5kPTgpIDo6IGw4Ci0rICBsID0gLlRSVUUuCi0rICBsMSA9IC5UUlVFLgot KyAgbDIgPSAuVFJVRS4KLSsgIGw0ID0gLlRSVUUuCi0rICBsOCA9IC5UUlVFLgotKyAgbCA9IC5G QUxTRS4JCQkJCSEgc3RvcC1oZXJlCi0rZW5kCgpkaWZmIC0tZ2l0IGEvZ2RiLWluZmNhbGwtc3At dW5kZXJmbG93LnBhdGNoIGIvZ2RiLWluZmNhbGwtc3AtdW5kZXJmbG93LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjAyYTRmLi4wMDAwMDAwCi0tLSBhL2dkYi1pbmZjYWxs LXNwLXVuZGVyZmxvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAyL21zZzAwNTE1Lmh0bWwKLVN1 YmplY3Q6IFtwYXRjaF0gaW5mY2FsbDogUmVtb3ZlIGdkYl9hc3NlcnQgKCRzcCBvdmVyZmxvdykK LQotSGksCi0KLXNldCAkc3A9MAotY2FsbCBzb21ldGhpbmcoKQotLT4KLS4uLy4uL2dkYi9pbmZj YWxsLmM6NTIxOiBpbnRlcm5hbC1lcnJvcjogY2FsbF9mdW5jdGlvbl9ieV9oYW5kOiBBc3NlcnRp b24KLWAoZ2RiYXJjaF9pbm5lcl90aGFuIChnZGJhcmNoLCAxLCAyKSAmJiBzcCA8PSBvbGRfc3Ap IHx8IChnZGJhcmNoX2lubmVyX3RoYW4KLShnZGJhcmNoLCAyLCAxKSAmJiBzcCA+PSBvbGRfc3Ap JyBmYWlsZWQuCi0KLWFzICRzcCAtIGZyYW1lID09IDB4ZmZmZnNtdGggd2hpY2ggaXMgbm90IGxv d2VyIHRoYW4gJHNwLgotCi1JdCBtdXN0IG5vdCBiZSBnZGJfYXNzZXJ0KCkuICBJdCBjYW4gYmUg YW4gZXJyb3IoKSBidXQgSSBsZWZ0IGl0IGp1c3QgdG8gZG86Ci0JKGdkYikgc2V0ICRzcD0wCi0J KGdkYikgY2FsbCBkb3VibGVpdCAoMSkKLQlDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNz IDB4ZmZmZmZmZmZmZmZmZmY3OAotCShnZGIpIHNldCAkc3A9LTEKLQkoZ2RiKSBjYWxsIGRvdWJs ZWl0ICgxKQotCUNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHhmZmZmZmZmZmZmZmZm ZjY4Ci0KLVVuYXdhcmUgaG93IGluY29udmVuaWVudCBpcyBhbiBpbnRlbnRpb25hbCBjcmFzaCBv ZiB0aGUgdGVzdGNhc2Ugb24gc29tZQotZW1iZWRkZWQvbm9uLU1NVSBzeXN0ZW1zLgotTm8gcmVn cmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4K LQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTAyLTE5ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGluZmNhbGwuYyAoY2FsbF9mdW5jdGlv bl9ieV9oYW5kKTogUmVtb3ZlIGdkYl9hc3NlcnQgb24gc3AgYW5kIG9sZF9zcC4KLQlOZXcgY29t bWVudC4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMDItMTkgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2UvY2FsbGZ1bmNzLmV4cDogTmV3 IHRlc3RzIGZvciAkc3B2YWwgMCBhbmQgLTEuICBSZW1vdmUgcmV0dXJuLgotCi0tLS0gYS9nZGIv aW5mY2FsbC5jCi0rKysgYi9nZGIvaW5mY2FsbC5jCi1AQCAtNTE4LDEwICs1MTgsOSBAQCBjYWxs X2Z1bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIGludCBuYXJncywgc3Ry dWN0IHZhbHVlICoqYXJncykKLSAJICAgICAgLyogU3RhY2sgZ3Jvd3MgdXAuICAqLwotIAkgICAg ICBzcCA9IGdkYmFyY2hfZnJhbWVfYWxpZ24gKGdkYmFyY2gsIG9sZF9zcCArIDEpOwotIAkgIH0K LS0JZ2RiX2Fzc2VydCAoKGdkYmFyY2hfaW5uZXJfdGhhbiAoZ2RiYXJjaCwgMSwgMikKLS0JCSAg ICAmJiBzcCA8PSBvbGRfc3ApCi0tCQkgICAgfHwgKGdkYmFyY2hfaW5uZXJfdGhhbiAoZ2RiYXJj aCwgMiwgMSkKLS0JCSAgICAgICAmJiBzcCA+PSBvbGRfc3ApKTsKLSsJLyogU1AgbWF5IGhhdmUg b3ZlcmZsb3duIGFkZHJlc3MgemVybyBoZXJlIGZyb20gT0xEX1NQLiAgTWVtb3J5IGFjY2Vzcwot KwkgICBmdW5jdGlvbnMgd2lsbCBwcm9iYWJseSBmYWlsIGluIHN1Y2ggY2FzZSBidXQgdGhhdCBp cyBhIHRhcmdldCdzCi0rCSAgIHByb2JsZW0uICAqLwotICAgICAgIH0KLSAgICAgZWxzZQotICAg ICAgIC8qIEZJWE1FOiBjYWduZXkvMjAwMi0wOS0xODogSGV5LCB5b3UgbG9vc2UhCi0tLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NhbGxmdW5jcy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY2FsbGZ1bmNzLmV4cAotQEAgLTQ2OSw1ICs0NjksMTggQEAgaWYgeyRvbGRfcmVn X2NvbnRlbnQgPT0gJG5ld19yZWdfY29udGVudH0gdGhlbiB7Ci0gICAgIGZhaWwgIm5lc3RlZCBj YWxsIGR1bW1pZXMgcHJlc2VydmUgcmVnaXN0ZXIgY29udGVudHMiCi0gfQotIAotLXJldHVybiAw Ci0rIyBHREIgc2hvdWxkIG5vdCBjcmFzaCBieSBpbnRlcm5hbCBlcnJvciBvbiAkc3Agb3ZlcmZs b3cgZHVyaW5nIHRoZSBpbmZlcmlvcgotKyMgY2FsbC4gIEl0IGlzIE9LIGl0IHdpbGwgc3RvcCBv biBzb21lOiBDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4JGhleC4KLSAKLStmb3Jl YWNoIHNwdmFsIHswIC0xfSB7Ci0rICAgIHNldCBvbGRfbGRwcmVmaXggJHBmX3ByZWZpeAotKyAg ICBsYXBwZW5kIHBmX3ByZWZpeCAic3A9JHNwdmFsOiIKLSsKLSsgICAgZ2RiX3Rlc3Qge3NldCAk b2xkX3NwID0gJHNwfQotKyAgICBnZGJfdGVzdCAic2V0IFwkc3AgPSAkc3B2YWwiCi0rCi0rICAg IGdkYl90ZXN0ICJjYWxsIGRvdWJsZWl0ICgxKSIKLSsKLSsgICAgZ2RiX3Rlc3Qge3NldCAkc3Ag PSAkb2xkX3NwfQotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLSt9Ci0KCmRpZmYg LS1naXQgYS9nZGItcGllLTFvZjYtcmVwcmVsaW5rZWQtYmluLnBhdGNoIGIvZ2RiLXBpZS0xb2Y2 LXJlcHJlbGlua2VkLWJpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc3 YmM3Ny4uMDAwMDAwMAotLS0gYS9nZGItcGllLTFvZjYtcmVwcmVsaW5rZWQtYmluLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNDQzICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAxMDA4Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAxLzZdOiBQ SUU6IEF0dGFjaCBiaW5hcnkgZXZlbiBhZnRlciByZS1wcmVsaW5rZWQgdW5kZXJuZWF0aAotCi1I aSwKLQotdGhlcmUgaXMgYSByZWdyZXNzaW9uIChhZ2FpbnN0IHByZXZpb3VzIHVucmVsZWFzZWQg Y29tbWl0cykgYnk6Ci0JUmU6IFJGQzogVmVyaWZ5IEFUX0VOVFJZIGJlZm9yZSB1c2luZyBpdAot CWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMzk1Lmh0 bWwKLQotZm9yIGxvYWRpbmcgUElFIGV4ZWN1dGFibGVzIHdoaWNoIGhhdmUgY2hhbmdlZCBvbiB0 aGUgZGlzayBzaW5jZSBzdGFydGVkLgotVGhlcmUgYXJlIGluIGZhY3QgMyBkaWZmZXJlbnQgYWRk cmVzc2VzIG9uZSBoYXMgdG8gcHJvcGVybHkgZGVhbCB3aXRoLgotCi1UaGlzIHBhdGNoIHVzZXMg ZXhwbGljaXQgImZpbGUiIHNvIGl0IGlzIG5vdCBkZXBlbmRlbnQgb24gcGVuZGluZzoKLQlbcGF0 Y2hdIEF0dGFjaCB0byBydW5uaW5nIGJ1dCBkZWxldGVkIGV4ZWN1dGFibGUKLQlodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cwMDk1MC5odG1sCi0KLVRoZSB0 d28gY29weS1wYXN0ZWQgYmxvY2tzIGZvciBlbGYzMiBhbmQgZWxmNjQgYXJlICJub3QgbmljZSIg YnV0IHRoaXMgaXMgdGhlCi1jdXJyZW50IHN0eWxlIGluIEdEQi4KLQotTm8gcmVncmVzc2lvbnMg b24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudSBmb3IgdGhlIHdo b2xlCi1wYXRjaCBzZXJpZXMgdG9nZXRoZXIuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwot MjAxMC0wMy0yOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot Ci0JRml4IGF0dGFjaGluZyB0byBQSUVzIHByZWxpbmtlZCBvbiB0aGUgZGlzayBzaW5jZSB0aGVp ciBzdGFydC4KLQkqIHNvbGliLXN2cjQuYyAoc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCk6IE5ldyB2 YXJpYWJsZSBhcmNoX3NpemUuCi0JVmVyaWZ5IGl0IGFnYWluc3QgYmZkX2dldF9hcmNoX3NpemUu ICBUcnkgdG8gbWF0Y2ggYXJiaXRyYXJ5Ci0JZGlzcGxhY2VtZW50IGZvciB0aGUgcGhkcnMgY29t cGFyaXNvbi4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMDMtMjkgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4 cDogUnVuICRiaW5waWUgd2l0aCBuZXcgdmFsdWUgIkFUVEFDSCIsIG5ldwotCWNvZGUgZm9yIGl0 LiAgTmV3IHZhcmlhYmxlIHJlbGlua19hcmdzLgotCShwcmVsaW5rWUVTKTogQ2FsbCBwcmVsaW5r Tk8uCi0JKHRlc3RfYXR0YWNoKTogQWNjZXB0IG5ldyBwYXJhbWV0ZXIgcmVsaW5rX2FyZ3MuICBS ZS1wcmVsaW5rIHRoZSBiaW5hcnkKLQlpbiBzdWNoIGNhc2UuICBNb3ZlIHRoZSBjb3JlIGNvZGUg dG8gLi4uCi0JKHRlc3RfYXR0YWNoX2dkYik6IC4uLiBhIG5ldyBmdW5jdGlvbi4gIFNlbmQgR0RC IGNvbW1hbmQgImZpbGUiLgotCUV4dGVuZCBleHBlY3RlZCAiQXR0YWNoaW5nIHRvICIgc3RyaW5n LgotCi0tLS0gYS9nZGIvc29saWItc3ZyNC5jCi0rKysgYi9nZGIvc29saWItc3ZyNC5jCi1AQCAt MTc1MCwxMyArMTc1MCwxODMgQEAgc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAoQ09SRV9BRERSICpk aXNwbGFjZW1lbnRwKQotIAkgcmVhbGx5IGRvIG5vdCBtYXRjaC4gICovCi0gICAgICAgaW50IHBo ZHJzX3NpemUsIHBoZHJzMl9zaXplLCBvayA9IDE7Ci0gICAgICAgZ2RiX2J5dGUgKmJ1ZiwgKmJ1 ZjI7Ci0rICAgICAgaW50IGFyY2hfc2l6ZTsKLSAKLS0gICAgICBidWYgPSByZWFkX3Byb2dyYW1f aGVhZGVyICgtMSwgJnBoZHJzX3NpemUsIE5VTEwpOwotKyAgICAgIGJ1ZiA9IHJlYWRfcHJvZ3Jh bV9oZWFkZXIgKC0xLCAmcGhkcnNfc2l6ZSwgJmFyY2hfc2l6ZSk7Ci0gICAgICAgYnVmMiA9IHJl YWRfcHJvZ3JhbV9oZWFkZXJzX2Zyb21fYmZkIChleGVjX2JmZCwgJnBoZHJzMl9zaXplKTsKLS0g ICAgICBpZiAoYnVmICE9IE5VTEwgJiYgYnVmMiAhPSBOVUxMCi0tCSAgJiYgKHBoZHJzX3NpemUg IT0gcGhkcnMyX3NpemUKLS0JICAgICAgfHwgbWVtY21wIChidWYsIGJ1ZjIsIHBoZHJzX3NpemUp ICE9IDApKQotLQlvayA9IDA7Ci0rICAgICAgaWYgKGJ1ZiAhPSBOVUxMICYmIGJ1ZjIgIT0gTlVM TCkKLSsJewotKwkgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29y ZGVyICh0YXJnZXRfZ2RiYXJjaCk7Ci0rCi0rCSAgLyogV2UgYXJlIGRlYWxpbmcgd2l0aCB0aHJl ZSBkaWZmZXJlbnQgYWRkcmVzc2VzLiAgRVhFQ19CRkQKLSsJICAgICByZXByZXNlbnRzIGN1cnJl bnQgYWRkcmVzcyBpbiBvbi1kaXNrIGZpbGUuICB0YXJnZXQgbWVtb3J5IGNvbnRlbnQKLSsJICAg ICBtYXkgYmUgZGlmZmVyZW50IGZyb20gRVhFQ19CRkQgYXMgdGhlIGZpbGUgbWF5IGhhdmUgYmVl biBwcmVsaW5rZWQKLSsJICAgICB0byBhIGRpZmZlcmVudCBhZGRyZXNzIHNpbmNlIHRoZSBleGVj dXRhYmxlIGhhcyBiZWVuIGxvYWRlZC4KLSsJICAgICBNb3Jlb3ZlciB0aGUgYWRkcmVzcyBvZiBw bGFjZW1lbnQgaW4gdGFyZ2V0IG1lbW9yeSBjYW4gYmUKLSsJICAgICBkaWZmZXJlbnQgZnJvbSB3 aGF0IHNheSB0aGUgdGFyZ2V0IG1lbW9yeSBwcm9ncmFtIGhlYWRlcnMgLSB0aGlzCi0rCSAgICAg aXMgdGhlIGdvYWwgb2YgUElFLgotKwotKwkgICAgIERldGVjdGVkIERJU1BMQUNFTUVOVCBjb3Zl cnMgYm90aCB0aGUgb2Zmc2V0cyBvZiBQSUUgcGxhY2VtZW50IGFuZAotKwkgICAgIHBvc3NpYmxl IG5ldyBwcmVsaW5rIHNpbmNlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtLiAgSGVyZSByZWxvY2F0ZQot KwkgICAgIEJVRiBhbmQgQlVGMiBqdXN0IGJ5IHRoZSBFWEVDX0JGRCB2cy4gdGFyZ2V0IG1lbW9y eSBjb250ZW50IG9mZnNldAotKwkgICAgIGZvciB0aGUgdmVyaWZpY2F0aW9uIHB1cnBvc2UuICAq LwotKwotKwkgIGlmIChwaGRyc19zaXplICE9IHBoZHJzMl9zaXplCi0rCSAgICAgIHx8IGJmZF9n ZXRfYXJjaF9zaXplIChleGVjX2JmZCkgIT0gYXJjaF9zaXplKQotKwkgICAgb2sgPSAwOwotKwkg IGVsc2UgaWYgKGFyY2hfc2l6ZSA9PSAzMiAmJiBwaGRyc19zaXplID49IHNpemVvZiAoRWxmMzJf RXh0ZXJuYWxfUGhkcikKLSsJICAgICAgICAgICAmJiBwaGRyc19zaXplICUgc2l6ZW9mIChFbGYz Ml9FeHRlcm5hbF9QaGRyKSA9PSAwKQotKwkgICAgewotKwkgICAgICBFbGZfSW50ZXJuYWxfRWhk ciAqZWhkcjIgPSBlbGZfdGRhdGEgKGV4ZWNfYmZkKS0+ZWxmX2hlYWRlcjsKLSsJICAgICAgRWxm X0ludGVybmFsX1BoZHIgKnBoZHIyID0gZWxmX3RkYXRhIChleGVjX2JmZCktPnBoZHI7Ci0rCSAg ICAgIENPUkVfQUREUiBkaXNwbGFjZW1lbnQgPSAwOwotKwkgICAgICBpbnQgaTsKLSsKLSsJICAg ICAgLyogRElTUExBQ0VNRU5UIGNvdWxkIGJlIGZvdW5kIGVhc2llciBieSB0aGUgZGlmZmVyZW5j ZSBvZgotKwkgICAgICAgICBlaGRyMi0+ZV9lbnRyeSBidXQgYWxyZWFkeSByZWFkIEJVRiBkb2Vz IG5vdCBjb250YWluIGVoZHIuICAqLwotKwotKwkgICAgICBmb3IgKGkgPSAwOyBpIDwgZWhkcjIt PmVfcGhudW07IGkrKykKLSsJCWlmIChwaGRyMltpXS5wX3R5cGUgPT0gUFRfTE9BRCkKLSsJCSAg ewotKwkJICAgIEVsZjMyX0V4dGVybmFsX1BoZHIgKnBoZHJwOwotKwkJICAgIGdkYl9ieXRlICpi dWZfdmFkZHJfcCwgKmJ1Zl9wYWRkcl9wOwotKwkJICAgIENPUkVfQUREUiB2YWRkciwgcGFkZHI7 Ci0rCQkgICAgQ09SRV9BRERSIGRpc3BsYWNlbWVudF92YWRkciA9IDA7Ci0rCQkgICAgQ09SRV9B RERSIGRpc3BsYWNlbWVudF9wYWRkciA9IDA7Ci0rCi0rCQkgICAgcGhkcnAgPSAmKChFbGYzMl9F eHRlcm5hbF9QaGRyICopIGJ1ZilbaV07Ci0rCQkgICAgYnVmX3ZhZGRyX3AgPSAoZ2RiX2J5dGUg KikgJnBoZHJwLT5wX3ZhZGRyOwotKwkJICAgIGJ1Zl9wYWRkcl9wID0gKGdkYl9ieXRlICopICZw aGRycC0+cF9wYWRkcjsKLSsKLSsJCSAgICB2YWRkciA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdl ciAoYnVmX3ZhZGRyX3AsIDQsCi0rCQkJCQkJICAgICAgYnl0ZV9vcmRlcik7Ci0rCQkgICAgZGlz cGxhY2VtZW50X3ZhZGRyID0gdmFkZHIgLSBwaGRyMltpXS5wX3ZhZGRyOwotKwotKwkJICAgIHBh ZGRyID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWZfcGFkZHJfcCwgNCwKLSsJCQkJCQkg ICAgICBieXRlX29yZGVyKTsKLSsJCSAgICBkaXNwbGFjZW1lbnRfcGFkZHIgPSBwYWRkciAtIHBo ZHIyW2ldLnBfcGFkZHI7Ci0rCi0rCQkgICAgaWYgKGRpc3BsYWNlbWVudF92YWRkciA9PSBkaXNw bGFjZW1lbnRfcGFkZHIpCi0rCQkgICAgICBkaXNwbGFjZW1lbnQgPSBkaXNwbGFjZW1lbnRfdmFk ZHI7Ci0rCi0rCQkgICAgYnJlYWs7Ci0rCQkgIH0KLSsKLSsJICAgICAgLyogTm93IGNvbXBhcmUg QlVGIGFuZCBCVUYyIHdpdGggb3B0aW9uYWwgRElTUExBQ0VNRU5ULiAgKi8KLSsKLSsJICAgICAg Zm9yIChpID0gMDsgaSA8IHBoZHJzX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1BoZHIp OyBpKyspCi0rCQl7Ci0rCQkgIEVsZjMyX0V4dGVybmFsX1BoZHIgKnBoZHJwOwotKwkJICBFbGYz Ml9FeHRlcm5hbF9QaGRyICpwaGRyMnA7Ci0rCQkgIGdkYl9ieXRlICpidWZfdmFkZHJfcCwgKmJ1 Zl9wYWRkcl9wOwotKwkJICBDT1JFX0FERFIgdmFkZHIsIHBhZGRyOwotKwotKwkJICBwaGRycCA9 ICYoKEVsZjMyX0V4dGVybmFsX1BoZHIgKikgYnVmKVtpXTsKLSsJCSAgYnVmX3ZhZGRyX3AgPSAo Z2RiX2J5dGUgKikgJnBoZHJwLT5wX3ZhZGRyOwotKwkJICBidWZfcGFkZHJfcCA9IChnZGJfYnl0 ZSAqKSAmcGhkcnAtPnBfcGFkZHI7Ci0rCQkgIHBoZHIycCA9ICYoKEVsZjMyX0V4dGVybmFsX1Bo ZHIgKikgYnVmMilbaV07Ci0rCi0rCQkgIC8qIFBUX0dOVV9TVEFDSyBhZGRyZXNzZXMgYXJlIGxl ZnQgYXMgemVybyBub3QgYmVpbmcKLSsJCSAgICAgcmVsb2NhdGVkIGJ5IHByZWxpbmssIHRoZWly IGRpc3BsYWNpbmcgd291bGQgY3JlYXRlIGZhbHNlCi0rCQkgICAgIHZlcmlmaWNhdGlvbiBmYWls dXJlLiAgRmVlbCBmcmVlIHRvIHRlc3QgdGhlIHVucmVsb2NhdGVkCi0rCQkgICAgIGNvbXBhcmlz b24gZm9yIGFueSBzZWdtZW50IHR5cGUuICAqLwotKwotKwkJICBpZiAobWVtY21wIChwaGRycCwg cGhkcjJwLCBzaXplb2YgKCpwaGRycCkpID09IDApCi0rCQkgICAgY29udGludWU7Ci0rCi0rCQkg IHZhZGRyID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWZfdmFkZHJfcCwgNCwgYnl0ZV9v cmRlcik7Ci0rCQkgIHZhZGRyIC09IGRpc3BsYWNlbWVudDsKLSsJCSAgc3RvcmVfdW5zaWduZWRf aW50ZWdlciAoYnVmX3ZhZGRyX3AsIDQsIGJ5dGVfb3JkZXIsIHZhZGRyKTsKLSsKLSsJCSAgcGFk ZHIgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1Zl9wYWRkcl9wLCA0LCBieXRlX29yZGVy KTsKLSsJCSAgcGFkZHIgLT0gZGlzcGxhY2VtZW50OwotKwkJICBzdG9yZV91bnNpZ25lZF9pbnRl Z2VyIChidWZfcGFkZHJfcCwgNCwgYnl0ZV9vcmRlciwgcGFkZHIpOwotKwotKwkJICBpZiAobWVt Y21wIChwaGRycCwgcGhkcjJwLCBzaXplb2YgKCpwaGRycCkpID09IDApCi0rCQkgICAgY29udGlu dWU7Ci0rCi0rCQkgIG9rID0gMDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgZWxz ZSBpZiAoYXJjaF9zaXplID09IDY0ICYmIHBoZHJzX3NpemUgPj0gc2l6ZW9mIChFbGY2NF9FeHRl cm5hbF9QaGRyKQotKwkgICAgICAgICAgICYmIHBoZHJzX3NpemUgJSBzaXplb2YgKEVsZjY0X0V4 dGVybmFsX1BoZHIpID09IDApCi0rCSAgICB7Ci0rCSAgICAgIEVsZl9JbnRlcm5hbF9FaGRyICpl aGRyMiA9IGVsZl90ZGF0YSAoZXhlY19iZmQpLT5lbGZfaGVhZGVyOwotKwkgICAgICBFbGZfSW50 ZXJuYWxfUGhkciAqcGhkcjIgPSBlbGZfdGRhdGEgKGV4ZWNfYmZkKS0+cGhkcjsKLSsJICAgICAg Q09SRV9BRERSIGRpc3BsYWNlbWVudCA9IDA7Ci0rCSAgICAgIGludCBpOwotKwotKwkgICAgICAv KiBESVNQTEFDRU1FTlQgY291bGQgYmUgZm91bmQgZWFzaWVyIGJ5IHRoZSBkaWZmZXJlbmNlIG9m Ci0rCSAgICAgICAgIGVoZHIyLT5lX2VudHJ5IGJ1dCBhbHJlYWR5IHJlYWQgQlVGIGRvZXMgbm90 IGNvbnRhaW4gZWhkci4gICovCi0rCi0rCSAgICAgIGZvciAoaSA9IDA7IGkgPCBlaGRyMi0+ZV9w aG51bTsgaSsrKQotKwkJaWYgKHBoZHIyW2ldLnBfdHlwZSA9PSBQVF9MT0FEKQotKwkJICB7Ci0r CQkgICAgRWxmNjRfRXh0ZXJuYWxfUGhkciAqcGhkcnA7Ci0rCQkgICAgZ2RiX2J5dGUgKmJ1Zl92 YWRkcl9wLCAqYnVmX3BhZGRyX3A7Ci0rCQkgICAgQ09SRV9BRERSIHZhZGRyLCBwYWRkcjsKLSsJ CSAgICBDT1JFX0FERFIgZGlzcGxhY2VtZW50X3ZhZGRyID0gMDsKLSsJCSAgICBDT1JFX0FERFIg ZGlzcGxhY2VtZW50X3BhZGRyID0gMDsKLSsKLSsJCSAgICBwaGRycCA9ICYoKEVsZjY0X0V4dGVy bmFsX1BoZHIgKikgYnVmKVtpXTsKLSsJCSAgICBidWZfdmFkZHJfcCA9IChnZGJfYnl0ZSAqKSAm cGhkcnAtPnBfdmFkZHI7Ci0rCQkgICAgYnVmX3BhZGRyX3AgPSAoZ2RiX2J5dGUgKikgJnBoZHJw LT5wX3BhZGRyOwotKwotKwkJICAgIHZhZGRyID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChi dWZfdmFkZHJfcCwgOCwKLSsJCQkJCQkgICAgICBieXRlX29yZGVyKTsKLSsJCSAgICBkaXNwbGFj ZW1lbnRfdmFkZHIgPSB2YWRkciAtIHBoZHIyW2ldLnBfdmFkZHI7Ci0rCi0rCQkgICAgcGFkZHIg PSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1Zl9wYWRkcl9wLCA4LAotKwkJCQkJCSAgICAg IGJ5dGVfb3JkZXIpOwotKwkJICAgIGRpc3BsYWNlbWVudF9wYWRkciA9IHBhZGRyIC0gcGhkcjJb aV0ucF9wYWRkcjsKLSsKLSsJCSAgICBpZiAoZGlzcGxhY2VtZW50X3ZhZGRyID09IGRpc3BsYWNl bWVudF9wYWRkcikKLSsJCSAgICAgIGRpc3BsYWNlbWVudCA9IGRpc3BsYWNlbWVudF92YWRkcjsK LSsKLSsJCSAgICBicmVhazsKLSsJCSAgfQotKwotKwkgICAgICAvKiBOb3cgY29tcGFyZSBCVUYg YW5kIEJVRjIgd2l0aCBvcHRpb25hbCBESVNQTEFDRU1FTlQuICAqLwotKwotKwkgICAgICBmb3Ig KGkgPSAwOyBpIDwgcGhkcnNfc2l6ZSAvIHNpemVvZiAoRWxmNjRfRXh0ZXJuYWxfUGhkcik7IGkr KykKLSsJCXsKLSsJCSAgRWxmNjRfRXh0ZXJuYWxfUGhkciAqcGhkcnA7Ci0rCQkgIEVsZjY0X0V4 dGVybmFsX1BoZHIgKnBoZHIycDsKLSsJCSAgZ2RiX2J5dGUgKmJ1Zl92YWRkcl9wLCAqYnVmX3Bh ZGRyX3A7Ci0rCQkgIENPUkVfQUREUiB2YWRkciwgcGFkZHI7Ci0rCi0rCQkgIHBoZHJwID0gJigo RWxmNjRfRXh0ZXJuYWxfUGhkciAqKSBidWYpW2ldOwotKwkJICBidWZfdmFkZHJfcCA9IChnZGJf Ynl0ZSAqKSAmcGhkcnAtPnBfdmFkZHI7Ci0rCQkgIGJ1Zl9wYWRkcl9wID0gKGdkYl9ieXRlICop ICZwaGRycC0+cF9wYWRkcjsKLSsJCSAgcGhkcjJwID0gJigoRWxmNjRfRXh0ZXJuYWxfUGhkciAq KSBidWYyKVtpXTsKLSsKLSsJCSAgLyogUFRfR05VX1NUQUNLIGFkZHJlc3NlcyBhcmUgbGVmdCBh cyB6ZXJvIG5vdCBiZWluZwotKwkJICAgICByZWxvY2F0ZWQgYnkgcHJlbGluaywgdGhlaXIgZGlz cGxhY2luZyB3b3VsZCBjcmVhdGUgZmFsc2UKLSsJCSAgICAgdmVyaWZpY2F0aW9uIGZhaWx1cmUu ICBGZWVsIGZyZWUgdG8gdGVzdCB0aGUgdW5yZWxvY2F0ZWQKLSsJCSAgICAgY29tcGFyaXNvbiBm b3IgYW55IHNlZ21lbnQgdHlwZS4gICovCi0rCi0rCQkgIGlmIChtZW1jbXAgKHBoZHJwLCBwaGRy MnAsIHNpemVvZiAoKnBoZHJwKSkgPT0gMCkKLSsJCSAgICBjb250aW51ZTsKLSsKLSsJCSAgdmFk ZHIgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1Zl92YWRkcl9wLCA4LCBieXRlX29yZGVy KTsKLSsJCSAgdmFkZHIgLT0gZGlzcGxhY2VtZW50OwotKwkJICBzdG9yZV91bnNpZ25lZF9pbnRl Z2VyIChidWZfdmFkZHJfcCwgOCwgYnl0ZV9vcmRlciwgdmFkZHIpOwotKwotKwkJICBwYWRkciA9 IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmX3BhZGRyX3AsIDgsIGJ5dGVfb3JkZXIpOwot KwkJICBwYWRkciAtPSBkaXNwbGFjZW1lbnQ7Ci0rCQkgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIg KGJ1Zl9wYWRkcl9wLCA4LCBieXRlX29yZGVyLCBwYWRkcik7Ci0rCi0rCQkgIGlmIChtZW1jbXAg KHBoZHJwLCBwaGRyMnAsIHNpemVvZiAoKnBoZHJwKSkgPT0gMCkKLSsJCSAgICBjb250aW51ZTsK LSsKLSsJCSAgb2sgPSAwOwotKwkJICBicmVhazsKLSsJCX0KLSsJICAgIH0KLSsJICBlbHNlCi0r CSAgICBvayA9IDA7Ci0rCX0KLSAKLSAgICAgICB4ZnJlZSAoYnVmKTsKLSAgICAgICB4ZnJlZSAo YnVmMik7Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAotQEAgLTE1NCw2ICsx NTQsMTIgQEAgcHJvYyBwcmVsaW5rWUVTIHthcmcge25hbWUgIiJ9fSB7Ci0gICAgIGlmIHskbmFt ZSA9PSAiIn0gewotIAlzZXQgbmFtZSBbZmlsZSB0YWlsICRhcmddCi0gICAgIH0KLSsKLSsgICAg IyBUcnkgdG8gdW5wcmVsaW5rIGl0IGZpcnN0IHNvIHRoYXQgaWYgaXQgaGFzIGJlZW4gYWxyZWFk eSBwcmVsaW5rZWQgYmVmb3JlCi0rICAgICMgd2UgZ2V0IGRpZmZlcmVudCBhZGRyZXNzIG5vdyBh bmQgdGhlIHJlc3VsdCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlCi0rICAgICMgcHJldmlvdXMgJGFy ZyBzdGF0ZS4uCi0rICAgIHByZWxpbmtOTyAkYXJnICIkbmFtZSBwcmUtdW5wcmVsaW5rIgotKwot ICAgICBzZXQgdGVzdCAicHJlbGluayAkbmFtZSIKLSAgICAgc2V0IGNvbW1hbmQgImV4ZWMgL3Vz ci9zYmluL3ByZWxpbmsgLXFOUiAtLW5vLWV4ZWMtc2hpZWxkICRhcmciCi0gICAgIHZlcmJvc2Ug LWxvZyAiY29tbWFuZCBpcyAkY29tbWFuZCIKLUBAIC0zMTksMzggKzMyNSwxMiBAQCBwcm9jIHRl c3RfY29yZSB7ZmlsZSBkaXNwbGFjZW1lbnR9IHsKLSAgICAgc2V0IHBmX3ByZWZpeCAkb2xkX2xk cHJlZml4Ci0gfQotIAotLXByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50fSB7Ci0t ICAgIGdsb2JhbCBib2FyZF9pbmZvIGdkYl9wcm9tcHQgZXhwZWN0X291dAotLQotLSAgICBnZGJf ZXhpdAotLQotLSAgICBzZXQgdGVzdCAic2xlZXAgZnVuY3Rpb24gc3RhcnRlZCIKLS0KLS0gICAg c2V0IGNvbW1hbmQgIiR7ZmlsZX0gc2xlZXAiCi0tICAgIHNldCByZXMgW3JlbW90ZV9zcGF3biBo b3N0ICRjb21tYW5kXTsKLS0gICAgaWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotLQlw ZXJyb3IgIlNwYXduaW5nICRjb21tYW5kIGZhaWxlZC4iCi0tCWZhaWwgJHRlc3QKLS0JcmV0dXJu Ci0tICAgIH0KLS0gICAgc2V0IHBpZCBbZXhwX3BpZCAtaSAkcmVzXQotLSAgICBnZGJfZXhwZWN0 IHsKLS0JLXJlICJzbGVlcGluZ1xyXG4iIHsKLS0JICAgIHBhc3MgJHRlc3QKLS0JfQotLQllb2Yg ewotLQkgICAgZmFpbCAiJHRlc3QgKGVvZikiCi0tCSAgICByZXR1cm4KLS0JfQotLQl0aW1lb3V0 IHsKLS0JICAgIGZhaWwgIiR0ZXN0ICh0aW1lb3V0KSIKLS0JICAgIHJldHVybgotLQl9Ci0tICAg IH0KLStwcm9jIHRlc3RfYXR0YWNoX2dkYiB7ZmlsZSBwaWQgZGlzcGxhY2VtZW50IHByZWZpeH0g ewotKyAgICBnbG9iYWwgZ2RiX3Byb21wdCBleHBlY3Rfb3V0Ci0gCi0gICAgIGdsb2JhbCBwZl9w cmVmaXgKLSAgICAgc2V0IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4Ci0tICAgIGxhcHBlbmQgcGZf cHJlZml4ICJhdHRhY2g6IgotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHByZWZpeDoiCi0gCi0g ICAgIGdkYl9leGl0Ci0gICAgIGdkYl9zdGFydAotQEAgLTM1OCw5ICszMzgsMTMgQEAgcHJvYyB0 ZXN0X2F0dGFjaCB7ZmlsZSBkaXNwbGFjZW1lbnR9IHsKLSAgICAgIyBQcmludCB0aGUgIlBJRSAo UG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSkgZGlzcGxhY2VtZW50IiBtZXNzYWdlLgot ICAgICBnZGJfdGVzdCAic2V0IHZlcmJvc2Ugb24iCi0gCi0rICAgIGlmIHskZmlsZSAhPSAiIn0g ewotKwlnZGJfdGVzdCAiZmlsZSAkZmlsZSIgIlJlYWRpbmcgc3ltYm9scyBmcm9tIC4qZG9uZVxc LiIgImZpbGUiCi0rICAgIH0KLSsKLSAgICAgc2V0IHRlc3QgImF0dGFjaCIKLSAgICAgZ2RiX3Rl c3RfbXVsdGlwbGUgImF0dGFjaCAkcGlkIiAkdGVzdCB7Ci0tCS1yZSAiQXR0YWNoaW5nIHRvIHBy b2Nlc3MgJHBpZFxyXG4iIHsKLSsJLXJlICJBdHRhY2hpbmcgdG8gKHByb2dyYW06IC4qLCApP3By b2Nlc3MgJHBpZFxyXG4iIHsKLSAJICAgICMgTWlzc2luZyAiJGdkYl9wcm9tcHQgJCIgaXMgaW50 ZW50aW9uYWwuCi0gCSAgICBwYXNzICR0ZXN0Ci0gCX0KLUBAIC0zOTYsMTEgKzM4MCw1NiBAQCBw cm9jIHRlc3RfYXR0YWNoIHtmaWxlIGRpc3BsYWNlbWVudH0gewotICAgICBnZGJfdGVzdCAiYnQi ICIjXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1saWJmdW5jXFxNXFteXHJcblxdKlxyXG4jXFswLTlc XSsgK1xbXlxyXG5cXSpcXG1tYWluXFxNLioiICJhdHRhY2ggbWFpbiBidCIKLSAgICAgZ2RiX2V4 aXQKLSAKLS0gICAgcmVtb3RlX2V4ZWMgaG9zdCAia2lsbCAtOSAkcGlkIgotLQotICAgICBzZXQg cGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLSB9Ci0gCi0rcHJvYyB0ZXN0X2F0dGFjaCB7ZmlsZSBk aXNwbGFjZW1lbnQge3JlbGlua19hcmdzICIifX0gewotKyAgICBnbG9iYWwgYm9hcmRfaW5mbwot KwotKyAgICBnZGJfZXhpdAotKwotKyAgICBzZXQgdGVzdCAic2xlZXAgZnVuY3Rpb24gc3RhcnRl ZCIKLSsKLSsgICAgc2V0IGNvbW1hbmQgIiR7ZmlsZX0gc2xlZXAiCi0rICAgIHNldCByZXMgW3Jl bW90ZV9zcGF3biBob3N0ICRjb21tYW5kXTsKLSsgICAgaWYgeyAkcmVzIDwgMCB8fCAkcmVzID09 ICIiIH0gewotKwlwZXJyb3IgIlNwYXduaW5nICRjb21tYW5kIGZhaWxlZC4iCi0rCWZhaWwgJHRl c3QKLSsJcmV0dXJuCi0rICAgIH0KLSsgICAgc2V0IHBpZCBbZXhwX3BpZCAtaSAkcmVzXQotKyAg ICBnZGJfZXhwZWN0IHsKLSsJLXJlICJzbGVlcGluZ1xyXG4iIHsKLSsJICAgIHBhc3MgJHRlc3QK LSsJfQotKwllb2YgewotKwkgICAgZmFpbCAiJHRlc3QgKGVvZikiCi0rCSAgICByZXR1cm4KLSsJ fQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgIiR0ZXN0ICh0aW1lb3V0KSIKLSsJICAgIHJldHVy bgotKwl9Ci0rICAgIH0KLSsKLSsgICAgaWYgeyRyZWxpbmtfYXJncyA9PSAiIn0gewotKwl0ZXN0 X2F0dGFjaF9nZGIgIiIgJHBpZCAkZGlzcGxhY2VtZW50ICJhdHRhY2giCi0rICAgIH0gZWxzZSB7 Ci0rCSMgVGhlc2UgY291bGQgYmUgcmF0aGVyIHBhc3NlZCBhcyBhcmd1bWVudHMuCi0rCWdsb2Jh bCBleGVjIGludGVycF9zYXZlZCBpbnRlcnAKLSsKLSsJZm9yZWFjaCByZWxpbmsge1lFUyBOT30g ewotKwkgICAgaWYge1twcmVsaW5rJHJlbGluayAkcmVsaW5rX2FyZ3MgW2ZpbGUgdGFpbCAkZXhl Y11dCi0rCSAgICAgICAgJiYgW2NvcHkgJGludGVycF9zYXZlZCAkaW50ZXJwXX0gewotKwkJIyAv cHJvYy9QSUQvZXhlIGNhbm5vdCBiZSBsb2FkZWQgYXMgaXQgaXMgIkVYRUNOQU1FIChkZWxldGVk KSIuCi0rCQl0ZXN0X2F0dGFjaF9nZGIgJGV4ZWMgJHBpZCAkZGlzcGxhY2VtZW50ICJhdHRhY2gt cmVsaW5rJHJlbGluayIKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgIHJlbW90ZV9leGVj IGhvc3QgImtpbGwgLTkgJHBpZCIKLSt9Ci0rCi0gcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0 cnlub3N5bSBkaXNwbGFjZW1lbnR9IHsKLSAgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3By b21wdCBleHBlY3Rfb3V0Ci0gCi1AQCAtNjA5LDcgKzYzOCwxMCBAQCBmb3JlYWNoIGxkcHJlbGlu ayB7Tk8gWUVTfSB7Ci0gCXNldCBvbGRfYmlucHJlZml4ICRwZl9wcmVmaXgKLSAJZm9yZWFjaCBi aW5wcmVsaW5rIHtOTyBZRVN9IHsKLSAJICAgIGZvcmVhY2ggYmluc2VwZGVidWcge05PIElOIFNF UH0gewotLQkJZm9yZWFjaCBiaW5waWUge05PIFlFU30gewotKwkJIyAiQVRUQUNIIiBpcyBsaWtl ICJZRVMiIGJ1dCBpdCBpcyBtb2RpZmllZCBkdXJpbmcgcnVuLgotKwkJIyBJdCBjYW5ub3QgYmUg dXNlZCBmb3IgcHJvYmxlbSByZXByb2R1Y2liaWxpdHkgYWZ0ZXIgdGhlCi0rCQkjIHRlc3RjYXNl IGVuZHMuCi0rCQlmb3JlYWNoIGJpbnBpZSB7Tk8gWUVTIEFUVEFDSH0gewotIAkJICAgICMgVGhp cyBjb21iaW5hdGlvbiBpcyBub3QgcG9zc2libGUsIG5vbi1QSUUgKGZpeGVkIGFkZHJlc3MpCi0g CQkgICAgIyBiaW5hcnkgY2Fubm90IGJlIHByZWxpbmtlZCB0byBhbnkgKG90aGVyKSBhZGRyZXNz LgotIAkJICAgIGlmIHskYmlucHJlbGluayA9PSAiWUVTIiAmJiAkYmlucGllID09ICJOTyJ9IHsK LUBAIC02MjgsNyArNjYwLDcgQEAgZm9yZWFjaCBsZHByZWxpbmsge05PIFlFU30gewotIAkJICAg IGlmIHskYmluc2VwZGVidWcgIT0gIk5PIn0gewotIAkJCWxhcHBlbmQgb3B0cyB7ZGVidWd9Ci0g CQkgICAgfQotLQkJICAgIGlmIHskYmlucGllID09ICJZRVMifSB7Ci0rCQkgICAgaWYgeyRiaW5w aWUgIT0gIk5PIn0gewotIAkJCWxhcHBlbmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAt cGllfQotIAkJICAgIH0KLSAJCSAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAg W2ZpbGUgdGFpbCAkZXhlY10gJHNyY2ZpbGUgJG9wdHNdID09IC0xfSB7Ci1AQCAtNjgwLDE2ICs3 MTIsNDUgQEAgZm9yZWFjaCBsZHByZWxpbmsge05PIFlFU30gewotIAkJCWxhcHBlbmQgZGVzdHMg JGRlc3QKLSAJCSAgICB9Ci0gCi0tCQkgICAgaWYge1twcmVsaW5rJGJpbnByZWxpbmsgIi0tZHlu YW1pYy1saW5rZXI9JGludGVycCAtLWxkLWxpYnJhcnktcGF0aD0kZGlyICRleGVjICRpbnRlcnAg W2NvbmNhdCAkZGVzdHNdIiBbZmlsZSB0YWlsICRleGVjXV0KLSsJCSAgICBpZiB7JGJpbnBpZSA9 PSAiTk8ifSB7Ci0rCQkJc2V0IGRpc3BsYWNlbWVudCAiTk9ORSIKLSsJCSAgICB9IGVsc2VpZiB7 JGJpbnByZWxpbmsgPT0gIk5PIn0gewotKwkJCXNldCBkaXNwbGFjZW1lbnQgIk5PTlpFUk8iCi0r CQkgICAgfSBlbHNlIHsKLSsJCQlzZXQgZGlzcGxhY2VtZW50ICJaRVJPIgotKwkJICAgIH0KLSsK LSsJCSAgICBzZXQgcmVsaW5rX2FyZ3MgIi0tZHluYW1pYy1saW5rZXI9JGludGVycCAtLWxkLWxp YnJhcnktcGF0aD0kZGlyICRleGVjICRpbnRlcnAgW2NvbmNhdCAkZGVzdHNdIgotKwkJICAgIGlm IHtbcHJlbGluayRiaW5wcmVsaW5rICRyZWxpbmtfYXJncyBbZmlsZSB0YWlsICRleGVjXV0KLSAJ CSAgICAgICAgJiYgW2NvcHkgJGludGVycF9zYXZlZCAkaW50ZXJwXX0gewotLQkJCWlmIHskYmlu cGllID09ICJOTyJ9IHsKLS0JCQkgICAgc2V0IGRpc3BsYWNlbWVudCAiTk9ORSIKLS0JCQl9IGVs c2VpZiB7JGJpbnByZWxpbmsgPT0gIk5PIn0gewotLQkJCSAgICBzZXQgZGlzcGxhY2VtZW50ICJO T05aRVJPIgotKwkJCWlmIHskYmlucGllICE9ICJBVFRBQ0gifSB7Ci0rCQkJICAgIHRlc3RfbGQg JGV4ZWMgMSBbZXhwciB7JGJpbnNlcGRlYnVnID09ICJOTyJ9XSAkZGlzcGxhY2VtZW50Ci0gCQkJ fSBlbHNlIHsKLS0JCQkgICAgc2V0IGRpc3BsYWNlbWVudCAiWkVSTyIKLSsJCQkgICAgIyBJZiB0 aGUgZmlsZSBoYXMgYmVlbiByYW5kb21seSBwcmVsaW5rZWQgaXQgbXVzdAotKwkJCSAgICAjIGJl ICJOT05aRVJPIi4gIFdlIGNvdWxkIHNlZSAiWkVSTyIgb25seSBpZiBpdCB3YXMKLSsJCQkgICAg IyB1bnByZWxpbmtlZCBuYSBpdCBpcyBub3cgcnVubmluZyBhdCB0aGUgc2FtZQotKwkJCSAgICAj IGFkZHJlc3MgLSB3aGljaCBpcyAwIGJ1dCBleGVjdXRhYmxlIGNhbiBuZXZlciBydW4KLSsJCQkg ICAgIyBhdCBhZGRyZXNzIDAuCi0rCi0rCQkJICAgIHNldCBkaXNwbGFjZW1lbnQgIk5PTlpFUk8i Ci0rCQkJICAgIHRlc3RfYXR0YWNoICRleGVjICRkaXNwbGFjZW1lbnQgJHJlbGlua19hcmdzCi0r Ci0rCQkJICAgICMgQVRUQUNIIGV4ZWN1dGFibGVzICsgbGlicmFyaWVzIGdldCBtb2RpZmllZCBz aW5jZQotKwkJCSAgICAjIHRoZXkgaGF2ZSBiZWVuIHJ1bi4gIFRoZXkgY2Fubm90IGJlIHVzZWQg Zm9yCi0rCQkJICAgICMgcHJvYmxlbSByZXByb2R1Y2liaWxpdHkgYWZ0ZXIgdGhlIHRlc3RjYXNl IGVuZHMuCi0rCQkJICAgIHNldCBleGVjX2RlYnVnIFtzeXN0ZW1fZGVidWdfZ2V0ICRleGVjXQot KwkJCSAgICBpZiB7JGV4ZWNfZGVidWcgIT0gIiJ9IHsKLSsJCQkJIyBgZmlsZSBkZWxldGUgW2ds b2IgIiR7ZXhlY19kZWJ1Z30qIl0nIGRvZXMgbm90IHdvcmsuCi0rCQkJCWZvcmVhY2ggZiBbZ2xv YiAiJHtleGVjX2RlYnVnfSoiXSB7Ci0rCQkJCSAgICBmaWxlIGRlbGV0ZSAkZgotKwkJCQl9Ci0r CQkJICAgIH0KLSsJCQkgICAgZmlsZSBkZWxldGUgLWZvcmNlICRkaXIKLSsJCQkgICAgIyBgZmls ZSBkZWxldGUgW2dsb2IgIiR7ZXhlY30qIl0nIGRvZXMgbm90IHdvcmsuCi0rCQkJICAgIGZvcmVh Y2ggZiBbZ2xvYiAiJHtleGVjfSoiXSB7Ci0rCQkJCWZpbGUgZGVsZXRlICRmCi0rCQkJICAgIH0K LSAJCQl9Ci0tCQkJdGVzdF9sZCAkZXhlYyAxIFtleHByIHskYmluc2VwZGVidWcgPT0gIk5PIn1d ICRkaXNwbGFjZW1lbnQKLSAJCSAgICB9Ci0gCQl9Ci0gCSAgICB9Ci0KCmRpZmYgLS1naXQgYS9n ZGItcGllLTJvZjYtcmVwcmVsaW5rZWQtbGQucGF0Y2ggYi9nZGItcGllLTJvZjYtcmVwcmVsaW5r ZWQtbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMDU0YTguLjAwMDAw MDAKLS0tIGEvZ2RiLXBpZS0yb2Y2LXJlcHJlbGlua2VkLWxkLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsODcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTAtMDMvbXNnMDEwMDAuaHRtbAotU3ViamVjdDogW3BhdGNoIDIvNl0gUElFOiBBdHRhY2ggYmlu YXJ5IGV2ZW4gYWZ0ZXIgbGQuc28gcmUtcHJlbGlua2VkICB1bmRlcm5lYXRoCi0KLUhpLAotCi13 aGVuIEkgaGF2ZSBzZWVuIHRoZSBQSUUtYmluYXJ5LWNoYW5nZWQtc2ljZS1zdGFydCB0ZXN0ZWQg YWxzbwotbGQuc28tY2hhbmdlZC1zaW5jZS1zdGFydCBhbmQgaXQgZGlkIG5vdCB3b3JrLgotCi1U aGVyZSBpcyBxdWVzdGlvbmFibGUgd2hlbiB0byBwcmludCBhbmQgd2hlbiB0byBub3QgdG8gcHJp bnQgbm9uLWZhdGFsIG1lbW9yeQotcmVhZCBlcnJvcnMuICBTaW1pbGFyIGNoYW5nZSBJIHJlcXVl c3RlZCBpbgotCVJlOiBbUkZDL2lhNjRdIG1lbW9yeSBlcnJvciB3aGVuIHJlYWRpbmcgd3Jvbmcg Y29yZSBmaWxlCi0JaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDIv bXNnMDAwMDEuaHRtbAotc28gdGhhdCBHREIgcHJpbnRzIGF0IGxlYXN0IGFzIGEgd2FybmluZwot CUNhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgLi4uCi13aGVuIHNvbWUgdW5leHBlY3Rl ZCBlcnJvciBoYXBwZW5zLgotCi1Db250cmFyeSB0byBpdCB0aGVyZSBpcyBub3Qgc3VjaCB3YXJu aW5nIHByZXNlbnQgaW4gdGhlIGNvZGUgYmVsb3cgYXMgaW4gdGhlCi1jYXNlIG9mIG5vbi12YWxn cmluZCBQSUUgd2l0aCByZS1wcmVsaW5rZWQgbGQuc28gdGhlIG1lbW9yeSByZWFkIGVycm9yIGhh cHBlbnMKLXRoZXJlLiAgU29tZSBHREIgY29kZSByZXdvcmsgY291bGQgcHJvYmFibHkgYXZvaWQg aXQuCi0KLUp1c3QgZm9yIGV4YW1wbGUgYWxsIHRoZSBtZW1vcnkgcmVhZCBlcnJvcnMgaW4gcmVh ZF9wcm9ncmFtX2hlYWRlciBvciBldmVuCi0tIHByaW1hcmlseSAtIHNjYW5fZHludGFnIGFyZSBj dXJyZW50bHkgSU1PLWluY29ycmVjdGx5IHNpbGVudCBhbmQgb3RoZXJzLgotVGhlcmVmb3JlIHBv c3RlZCB0aGUgcGF0Y2ggdGhpcyB3YXksIG1ha2luZyBhbGwgdGhlc2Ugd2FybmluZ3MgcHJpbnRl ZCBhbmQKLXBvc3NpYmx5IGZpeGluZyBjb2RlIGF0dGVtcHRpbmcgaW5jb3JyZWN0IHJlYWRzIGFs b25nIHRoZSB3YXkgY291bGQgYmUgZG9uZSBieQotYSBkaWZmZXJlbnQgcGF0Y2guCi0KLU5vIHJl Z3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExMi1saW51eC1nbnUg Zm9yIHRoZSB3aG9sZQotcGF0Y2ggc2VyaWVzIHRvZ2V0aGVyLgotCi0KLVRoYW5rcywKLUphbgot Ci0KLWdkYi8KLTIwMTAtMDMtMjkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KLQotCSogYXV4di5jIChsZF9zb194ZmVyX2F1eHYpOiBEbyBub3QgZXJyb3Igb24g ZmFpbGVkIHJlYWQgb2YgZGF0YV9hZGRyZXNzLgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMC0wMy0y OSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIu YmFzZS9icmVhay1pbnRlcnAuZXhwICh0ZXN0X2F0dGFjaCk6IEtlZXAgJGludGVycCBjaGFuZ2Vk LiAgTW92ZQotCWl0cyByZXN0b3JlIGFmdGVyIHRoZSA8JHJlbGlua19hcmdzICE9ICIiPiBsb29w LiAgbmV3IGNvbW1lbnQuCi0KLS0tLSBhL2dkYi9hdXh2LmMKLSsrKyBiL2dkYi9hdXh2LmMKLUBA IC05Niw3ICs5NiwxNiBAQCBsZF9zb194ZmVyX2F1eHYgKGdkYl9ieXRlICpyZWFkYnVmLAotIAot ICAgcG9pbnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOwotIAotLSAg ZGF0YV9hZGRyZXNzID0gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVzcyAocG9pbnRlcl9hZGRyZXNz LCBwdHJfdHlwZSk7Ci0rICAvKiBXaGlsZSBpdCBpcyBhbiBlcnJvciBJIGFtIG5vdCBhd2FyZSBo b3cgdG8gc29sdmUgYXR0YWNoaW5nIHRvIFBJRSB1bmRlcgotKyAgICAgdmFsZ3JpbmQgLS1kYi1h dHRhY2g9eWVzIGRpZmZlcmVudCB3YXkgd2hlbiBsZC5zbyBvbi1kaXNrIGZpbGUgaGFzIHByZWxp bmsKLSsgICAgIGNoYW5nZSBpbiB0aGUgbWVhbnRpbWUuICBDdXJyZW50bHkgR0RCIHdpbGwgZHJv cCBiYWNrIHRvIHByb2Nmc194ZmVyX2F1eHYKLSsgICAgIChzbyB0aGF0IGF0IGxlYXN0IG5vbi12 YWxncmluZCBQSUUgYXR0YWNobWVudHMgd2l0aCBwcmVsaW5rIGNoYW5nZSBvZgotKyAgICAgbGQu c28gd29yaykuICBUbyBtYWtlIGl0IHdvcmtpbmcgZXZlbiB3aXRoIHZhbGdyaW5kIGlzIFBSIDEx NDQwIHJlcXVpcmluZwotKyAgICAgYSB2YWxncmluZCBleHRlbnNpb24uICAqLwotKyAgaWYgKHRh cmdldF9yZWFkX21lbW9yeSAocG9pbnRlcl9hZGRyZXNzLCBwdHJfYnVmLCBwdHJfc2l6ZSkgIT0g MCkKLSsgICAgcmV0dXJuIC0xOwotKwotKyAgZGF0YV9hZGRyZXNzID0gZXh0cmFjdF90eXBlZF9h ZGRyZXNzIChwdHJfYnVmLCBwdHJfdHlwZSk7Ci0gCi0gICAvKiBQb3NzaWJseSBzdGlsbCBub3Qg aW5pdGlhbGl6ZWQgc3VjaCBhcyBkdXJpbmcgYW4gaW5mZXJpb3Igc3RhcnR1cC4gICovCi0gICBp ZiAoZGF0YV9hZGRyZXNzID09IDApCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4 cAotQEAgLTQxOSwxMiArNDE5LDE2IEBAIHByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2Vt ZW50IHtyZWxpbmtfYXJncyAiIn19IHsKLSAJZ2xvYmFsIGV4ZWMgaW50ZXJwX3NhdmVkIGludGVy cAotIAotIAlmb3JlYWNoIHJlbGluayB7WUVTIE5PfSB7Ci0tCSAgICBpZiB7W3ByZWxpbmskcmVs aW5rICRyZWxpbmtfYXJncyBbZmlsZSB0YWlsICRleGVjXV0KLS0JICAgICAgICAmJiBbY29weSAk aW50ZXJwX3NhdmVkICRpbnRlcnBdfSB7Ci0rCSAgICAjIEl0IHdvdWxkIGJlIG1vcmUgY29ycmVj dCB0byBhbHNvIFtjb3B5ICRpbnRlcnBfc2F2ZWQgJGludGVycF0KLSsJICAgICMgaGVyZSB0byBy ZWFsbHkgdGVzdCBqdXN0IGRpZmZlcmVudCBwcmVsaW5rIG9mICRleGVjLgotKwkgICAgIyBCdXQg d2Ugd291bGQgbmVlZCBhIHNlcGFyYXRlIHRlc3QgZm9yIGRpZmZlcmVudCBwcmVsaW5rIG9mIGxk LnNvCi0rCSAgICAjIHdoZXJlIGEgYnVnIG9jY3VyZWQuICBJdCBpcyBub3cgYWxsIG1lcmdlZCBp bnRvIHRoaXMgc2luZ2xlIHRlc3QuCi0rCSAgICBpZiBbcHJlbGluayRyZWxpbmsgJHJlbGlua19h cmdzIFtmaWxlIHRhaWwgJGV4ZWNdXSB7Ci0gCQkjIC9wcm9jL1BJRC9leGUgY2Fubm90IGJlIGxv YWRlZCBhcyBpdCBpcyAiRVhFQ05BTUUgKGRlbGV0ZWQpIi4KLSAJCXRlc3RfYXR0YWNoX2dkYiAk ZXhlYyAkcGlkICRkaXNwbGFjZW1lbnQgImF0dGFjaC1yZWxpbmskcmVsaW5rIgotIAkgICAgfQot IAl9Ci0rCWNvcHkgJGludGVycF9zYXZlZCAkaW50ZXJwCi0gICAgIH0KLSAKLSAgICAgcmVtb3Rl X2V4ZWMgaG9zdCAia2lsbCAtOSAkcGlkIgotCgpkaWZmIC0tZ2l0IGEvZ2RiLXBpZS0zb2Y2LXJl bG9jYXRlLW9uY2UucGF0Y2ggYi9nZGItcGllLTNvZjYtcmVsb2NhdGUtb25jZS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk3YTVkYi4uMDAwMDAwMAotLS0gYS9nZGItcGll LTNvZjYtcmVsb2NhdGUtb25jZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxMiArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cwMTAwMS5o dG1sCi1TdWJqZWN0OiBbcGF0Y2ggMy82XSBQSUU6IEZpeCBvY2Nhc2lvbmFsIGVycm9yIGF0dGFj aGluZyBpNjg2IGJpbmFyeQotCi1bIFRlc3RjYXNlIGRpZmYgYmFja3BvcnRlZC4gIF0KLQotSGks Ci0KLXRoaXMgaXMgdGhlIHJlYWwgYnVncmVwb3J0IHdoaWNoIHN0YXJ0ZWQgdGhpcyBwYXRjaCBz ZXJpZXMuCi0JZ2RiICJDYW5ub3QgYWNjZXNzIG1lbW9yeSIgb24gYSBydW5uaW5nIHByb2Nlc3MK LQlodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTU3Njc0MgotCi1P ZmZzZXRzIG9uIGk2ODYgY2F1c2UgdGhhdCB3aGlsZSBhdHRhY2hpbmcgdG8gYW4gdW5wcmVsaW5r ZWQgcnVubmluZyBQSUUKLXNjYW5fZHludGFnIHdpbGwgaW5jb3JyZWN0bHkgZ2V0IGEgc3VjY2Vz c2Z1bCByZWFkIGluIHNjYW5fZHludGFnIGZyb20gRFRfREVCVUcKLWl0IGV4cGVjdHMgaXMgZnJv bSB0aGUgbWFuaSBleGVjdXRhYmxlIGJ1dCBpbiBmYWN0IGl0IGlzIGZyb20gc29tZSBsZC5zbyBv cgotbGliYy5zbyAobG9jYXRlZCBsb3cgZm9yIC0tZXhlYy1zaGllbGQpLiAgQW5vdGhlciBpc3N1 ZSBpcyB0aGF0IHNjYW5fZHludGFnCi1jb3VsZCB2ZXJpZnkgbW9yZSB0aGF0IHRoZSB0YXJnZXQg bWVtb3J5IG1hdGNoZXMgdGhlIC5keW5hbWljIHNlY3Rpb24gaXQgaXMKLXJlYWRpbmcgZnJvbSBl eGVjX2JmZC4gIEl0IGNvdWxkIGFsc28gY29tcGxhaW4gd2hlbiB0aGUgcmVhZCBmYWlsZWQgKGFz IGFsd2F5cwotZmFpbGVkIHNvIGZvciBmb3IgUElFIGF0dGFjaGVzIGZpcnN0LCBzdWNjZWVkZWQg bGF0ZXIgc28gbm9ib2R5IGhhcyBub3RpY2VkCi1hbnl0aGluZykuCi0KLVRoZSBzdWNjZXNzZnVs IHJlYWQgcmVhZHMgYSBib2d1cyBEVF9ERUJVRyB2YWx1ZSBhbmQgR0RCIGVycm9ycyBvbiBpdCBs YXRlci4KLVRoaXMgaXMgYWdhaW4gYSBub24tZmF0YWwgZXJyb3IgYWZ0ZXIgdGhlIHBhdGNoIGJ5 IEpvZWwgQnJvYmVja2VyIGFib3ZlIGJ1dCBpdAotd2FzIG5vdCBzbyBiZWZvcmUgYW5kIGl0IGlz IGluY29ycmVjdCBhbnl3YXkuCi0KLVRoZSBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSBj YWxsIGluIHN2cjRfc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcgd2FzCi10aGVyZSBiZWZvcmUgZGVs YXllZCB0aGF0IHdheSBmb3Igc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQuCi1CdXQgc3Zy NF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbWVhbnRp bWUgYnk6Ci0JUmU6IFJGQzogVmVyaWZ5IEFUX0VOVFJZIGJlZm9yZSB1c2luZyBpdAotCWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMDMwLmh0bWwKLQot U28gaXQgY2FuIGJlIHNpbXBsaWZpZWQgKyBjb3JyZWN0ZWQgbm93LiAgTW9yZW92ZXIgR0RCIHdp bGwgbm93IGZpbmFsbHkgcHJpbnQKLWV4YWN0bHkgIlVzaW5nIFBJRSAoUG9zaXRpb24gSW5kZXBl bmRlbnQgRXhlY3V0YWJsZSkgZGlzcGxhY2VtZW50IiBleGFjdGx5Ci1vbmNlLgotCi1UaGUgcmVw cm9kdWNlciBkZXBlbmRzIG9uIHZhcmlvdXMgb2Zmc2V0cyB3aGljaCBtYXkgYmUgZGlzdHJvIGRl cGVuZGVudCBidXQgaXQKLXdhcyBtYWRlIHNvIHRoYXQgaXQgaXMgaG9wZWZ1bGx5IHJlcHJvZHVj aWJsZSBldmVyeXdoZXJlLiAgUmVwcm9kdWNlZCArIGZpeGVkCi1vbiBGZWRvcmEgMTIgeDg2XzY0 IGFuZCBpNjg2LgotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0t ZmVkb3JhMTItbGludXgtZ251IGZvciB0aGUgd2hvbGUKLXBhdGNoIHNlcmllcyB0b2dldGhlci4K LQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTAzLTI5ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGF1eHYuYyAobWVtb3J5X3hmZXJfYXV4 dik6IFVwZGF0ZSBhdHRhY2ggY29tbWVudC4KLQkqIHNvbGliLXN2cjQuYyAoc3ZyNF9zcGVjaWFs X3N5bWJvbF9oYW5kbGluZyk6IFJlbW92ZSB0aGUgY2FsbCB0bwotCXN2cjRfcmVsb2NhdGVfbWFp bl9leGVjdXRhYmxlLgotCShzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKTogTWFrZSB0 aGUgY2FsbCB0bwotCXN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlIHVuY29uZGl0aW9uYWwu Ci0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTAzLTI5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5iYXNlL2F0dGFjaC1waWUtbWlzcmVhZC5leHAs IGdkYi5iYXNlL2F0dGFjaC1waWUtbWlzcmVhZC5jOiBOZXcuCi0KLS0tLSBhL2dkYi9hdXh2LmMK LSsrKyBiL2dkYi9hdXh2LmMKLUBAIC0xOTgsNyArMTk4LDggQEAgbWVtb3J5X3hmZXJfYXV4diAo c3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSAKLSAgICAvKiBsZF9zb194ZmVyX2F1eHYgaXMgdGhl IG9ubHkgZnVuY3Rpb24gc2FmZSBmb3IgdmlydHVhbCBleGVjdXRhYmxlcyBiZWluZwotICAgICAg IGV4ZWN1dGVkIGJ5IHZhbGdyaW5kJ3MgbWVtY2hlY2suICBBcyB1c2luZyBsZF9zb194ZmVyX2F1 eHYgaXMgcHJvYmxlbWF0aWMKLS0gICAgICBkdXJpbmcgaW5mZXJpb3Igc3RhcnR1cCBHREIgZG9l cyBjYWxsIGl0IG9ubHkgZm9yIGF0dGFjaGVkIHByb2Nlc3Nlcy4gICovCi0rICAgICAgZHVyaW5n IGluZmVyaW9yIHN0YXJ0dXAgYXMgbGQuc28gc3ltYm9sIHRhYmxlcyBhcmUgbm90IHlldCByZWxv Y2F0ZWQgR0RCCi0rICAgICAgY2FsbHMgbGRfc29feGZlcl9hdXh2IG9ubHkgZm9yIGF0dGFjaGVk IHByb2Nlc3Nlcy4gICovCi0gCi0gICBpZiAoY3VycmVudF9pbmZlcmlvciAoKS0+YXR0YWNoX2Zs YWcgIT0gMCkKLSAgICAgewotLS0tIGEvZ2RiL3NvbGliLXN2cjQuYwotKysrIGIvZ2RiL3NvbGli LXN2cjQuYwotQEAgLTE2MjgsNyArMTYyOCw2IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRf aW5mbyAqaW5mbywgaW50IGZyb21fdHR5KQotIHN0YXRpYyB2b2lkCi0gc3ZyNF9zcGVjaWFsX3N5 bWJvbF9oYW5kbGluZyAodm9pZCkKLSB7Ci0tICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJs ZSAoKTsKLSB9Ci0gCi0gLyogUmVhZCB0aGUgRUxGIHByb2dyYW0gaGVhZGVycyBmcm9tIEFCRkQu ICBSZXR1cm4gdGhlIGNvbnRlbnRzIGFuZAotQEAgLTIwNjUsOCArMjA2NCw3IEBAIHN2cjRfc29s aWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSAgIGluZm8gPSBnZXRfc3Zy NF9pbmZvICgpOwotIAotICAgLyogUmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZSBpZiBuZWNl c3NhcnkuICAqLwotLSAgaWYgKGN1cnJlbnRfaW5mZXJpb3IgKCktPmF0dGFjaF9mbGFnID09IDAp Ci0tICAgIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICgpOwotKyAgc3ZyNF9yZWxvY2F0 ZV9tYWluX2V4ZWN1dGFibGUgKCk7Ci0gCi0gICBpZiAoIXN2cjRfaGF2ZV9saW5rX21hcF9vZmZz ZXRzICgpKQotICAgICByZXR1cm47Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2F0dGFjaC1waWUtbWlzcmVhZC5jCi1AQCAtMCwwICsxLDQ3IEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0r I2luY2x1ZGUgPHVuaXN0ZC5oPgotKwotK2NvbnN0IGNoYXIgc3R1YltdID0gewotKyNpZmRlZiBH RU4KLSsjIGluY2x1ZGUgR0VOCi0rI2VuZGlmCi0rfTsKLSsKLStpbnQKLSttYWluIChpbnQgYXJn YywgY2hhciAqKmFyZ3YpCi0rewotKyAgLyogR2VuZXJhdG9yIG9mIEdFTiB3cml0dGVuIGluIFB5 dGhvbiB0YWtlcyBhYm91dCAxNXMgZm9yIHg4Nl82NCdzIDRNQi4gICovCi0rICBpZiAoYXJnYyA9 PSAyKQotKyAgICB7Ci0rICAgICAgbG9uZyBjb3VudCA9IHN0cnRvbCAoYXJndlsxXSwgTlVMTCwg MCk7Ci0rCi0rICAgICAgd2hpbGUgKGNvdW50LS0gPiAwKQotKwlwdXRzICgiMHg1NSwiKTsKLSsK LSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgaWYgKGFyZ2MgIT0gMSkKLSsgICAgcmV0dXJu IDE7Ci0rCi0rICBwdXRzICgic2xlZXBpbmciKTsKLSsgIGZmbHVzaCAoc3Rkb3V0KTsKLSsKLSsg IHJldHVybiBzbGVlcCAoNjApOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYXR0YWNoLXBpZS1taXNyZWFkLmV4cAotQEAgLTAsMCArMSwyMDkgQEAKLSsj IENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgdGVzdCBvbmx5IHdvcmtzIG9uIEdO VS9MaW51eC4KLStpZiB7ICFbaXNuYXRpdmVdIHx8IFtpc19yZW1vdGUgaG9zdF0gfHwgIVtpc3Rh cmdldCAqLWxpbnV4Kl0gfHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIGNvbnRpbnVlCi0r fQotKwotK3NldCB0ZXN0ICJhdHRhY2gtcGllLW1pc3JlYWQiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0 fS5jCi0rc2V0IGdlbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9LWdlbi5oCi0rc2V0 IGV4ZWN1dGFibGUgJHt0ZXN0fQotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtl eGVjdXRhYmxlfQotKwotK2lmIHtbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3R9LmV4cCAkZXhlY3V0 YWJsZSAkc3JjZmlsZSBbbGlzdCAiYWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllIl1dID09IC0x fSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFByb2dyYW0gSGVhZGVyczoKLSsjICAgVHlw ZSAgICAgICAgICAgT2Zmc2V0ICAgVmlydEFkZHIgICAgICAgICAgIFBoeXNBZGRyICAgICAgICAg ICBGaWxlU2l6ICBNZW1TaXogICBGbGcgQWxpZ24KLSsjICAgTE9BRCAgICAgICAgICAgMHgwMDAw MDAgMHgwMDAwMDAwMDAwNDAwMDAwIDB4MDAwMDAwMDAwMDQwMDAwMCAweDEzNGY1ZWMgMHgxMzRm NWVjIFIgRSAweDIwMDAwMAotKyMgICBMT0FEICAgICAgICAgICAweDEzNGY1ZjAgMHgwMDAwMDAw MDAxOTRmNWYwIDB4MDAwMDAwMDAwMTk0ZjVmMCAweDFkYmM2MCAweDIxNDA4OCBSVyAgMHgyMDAw MDAKLSsjICAgRFlOQU1JQyAgICAgICAgMHgxMzRmNjE4IDB4MDAwMDAwMDAwMTk0ZjYxOCAweDAw MDAwMDAwMDE5NGY2MTggMHgwMDAyMDAgMHgwMDAyMDAgUlcgIDB4OAotKyMKLStwcm9jIHJlYWRf cGhkciB7YmluZmlsZSB0ZXN0fSB7Ci0rICAgIHNldCByZWFkZWxmX3Byb2dyYW0gW3RyYW5zZm9y bSByZWFkZWxmXQotKyAgICBzZXQgY29tbWFuZCAiZXhlYyAkcmVhZGVsZl9wcm9ncmFtIC1XbCAk YmluZmlsZSIKLSsgICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgotKyAgICBz ZXQgcmVzdWx0IFtjYXRjaCAkY29tbWFuZCBvdXRwdXRdCi0rICAgIHZlcmJvc2UgLWxvZyAicmVz dWx0IGlzICRyZXN1bHQiCi0rICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0r ICAgIGlmIHskcmVzdWx0ICE9IDB9IHsKLSsJZmFpbCAkdGVzdAotKwlyZXR1cm4KLSsgICAgfQot KyAgICBpZiAhW3JlZ2V4cCB7XG5Qcm9ncmFtIEhlYWRlcnM6XG4gKlR5cGUgW15cbl0qIEFsaWdu XG4oLio/KVxuXG59ICRvdXRwdXQgdHJhc2ggcGhkcl0gewotKwlmYWlsICIkdGVzdCAobm8gUHJv Z3JhbSBIZWFkZXJzKSIKLSsJcmV0dXJuCi0rICAgIH0KLSsgICAgaWYgIVtyZWdleHAgLWxpbmUg e14gKkRZTkFNSUMgKzB4WzAtOWEtZl0rICsoMHhbMC05YS1mXSspIH0gJHBoZHIgdHJhc2ggZHlu YW1pY192YWRkcl0gewotKwlmYWlsICIkdGVzdCAobm8gRFlOQU1JQyBmb3VuZCkiCi0rCXJldHVy bgotKyAgICB9Ci0rICAgIHZlcmJvc2UgLWxvZyAiZHluYW1pY192YWRkciBpcyAkZHluYW1pY192 YWRkciIKLSsgICAgc2V0IGFsaWduX21heCAtMQotKyAgICBmb3JlYWNoIHt0cmFzaCBhbGlnbn0g W3JlZ2V4cCAtbGluZSAtYWxsIC1pbmxpbmUge14gKkxPQUQgLiogKDB4WzAtOV0rKSR9ICRwaGRy XSB7Ci0rCWlmIHskYWxpZ25fbWF4IDwgJGFsaWdufSB7Ci0rCSAgICBzZXQgYWxpZ25fbWF4ICRh bGlnbgotKwl9Ci0rICAgIH0KLSsgICAgdmVyYm9zZSAtbG9nICJhbGlnbl9tYXggaXMgJGFsaWdu X21heCIKLSsgICAgaWYgeyRhbGlnbl9tYXggPT0gLTF9IHsKLSsJZmFpbCAiJHRlc3QgKG5vIExP QUQgZm91bmQpIgotKwlyZXR1cm4KLSsgICAgfQotKyAgICBwYXNzICR0ZXN0Ci0rICAgIHJldHVy biBbbGlzdCAkZHluYW1pY192YWRkciAkYWxpZ25fbWF4XQotK30KLSsKLStzZXQgcGhkciBbcmVh ZF9waGRyICRiaW5maWxlICJyZWFkZWxmIGluaXRpYWwgc2NhbiJdCi0rc2V0IGR5bmFtaWNfdmFk ZHIgW2xpbmRleCAkcGhkciAwXQotK3NldCBhbGlnbl9tYXggW2xpbmRleCAkcGhkciAxXQotKwot K3NldCBzdHViX3NpemUgW2Zvcm1hdCAweCV4IFtleHByICIyICogJGFsaWduX21heCAtICgkZHlu YW1pY192YWRkciAmICgkYWxpZ25fbWF4IC0gMSkpIl1dCi0rdmVyYm9zZSAtbG9nICJzdHViX3Np emUgaXMgJHN0dWJfc2l6ZSIKLSsKLSsjIE9uIHg4Nl82NCBpdCBpcyBjb21tb25seSBhYm91dCA0 TUIuCi0raWYgeyRzdHViX3NpemUgPiAyNTAwMDAwMH0gewotKyAgICB4ZmFpbCAic3R1YiBzaXpl ICRzdHViX3NpemUgaXMgdG9vIGxhcmdlIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3Qg ImdlbmVyYXRlIHN0dWIiCi0rc2V0IGNvbW1hbmQgImV4ZWMgJGJpbmZpbGUgJHN0dWJfc2l6ZSA+ JGdlbmZpbGUiCi0rdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgotK3NldCByZXN1 bHQgW2NhdGNoICRjb21tYW5kIG91dHB1dF0KLSt2ZXJib3NlIC1sb2cgInJlc3VsdCBpcyAkcmVz dWx0IgotK3ZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0raWYgeyRyZXN1bHQgPT0g MH0gewotKyAgICBwYXNzICR0ZXN0Ci0rfSBlbHNlIHsKLSsgICAgZmFpbCAkdGVzdAotK30KLSsK LStpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgJGV4ZWN1dGFibGUgJHNyY2ZpbGUg W2xpc3QgImFkZGl0aW9uYWxfZmxhZ3M9LWZQSUUgLXBpZSAtREdFTj1cIiRnZW5maWxlXCIiXV0g PT0gLTF9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgeDg2XzY0IGZpbGUgaGFzIDI1TUIs IG5vIG5lZWQgdG8ga2VlcCBpdC4KLStmaWxlIGRlbGV0ZSAtLSAkZ2VuZmlsZQotKwotK3NldCBw aGRyIFtyZWFkX3BoZHIgJGJpbmZpbGUgInJlYWRlbGYgcmVidWlsdCB3aXRoIHN0dWJfc2l6ZSJd Ci0rc2V0IGR5bmFtaWNfdmFkZHJfcHJlbGlua25vIFtsaW5kZXggJHBoZHIgMF0KLSsKLStzZXQg Y29tbWFuZCAiZXhlYyAvdXNyL3NiaW4vcHJlbGluayAtcSAtTiAtLW5vLWV4ZWMtc2hpZWxkIC1S ICRiaW5maWxlIgotK3ZlcmJvc2UgLWxvZyAiY29tbWFuZCBpcyAkY29tbWFuZCIKLStzZXQgcmVz dWx0IFtjYXRjaCAkY29tbWFuZCBvdXRwdXRdCi0rdmVyYm9zZSAtbG9nICJyZXN1bHQgaXMgJHJl c3VsdCIKLSt2ZXJib3NlIC1sb2cgIm91dHB1dCBpcyAkb3V0cHV0IgotKwotK3NldCB0ZXN0ICJw cmVsaW5rIC1SIgotK2lmIHskcmVzdWx0ID09IDAgJiYgJG91dHB1dCA9PSAiIn0gewotKyAgICBw YXNzICR0ZXN0Ci0rfSBlbHNlaWYgeyRyZXN1bHQgPT0gMSAmJiBbcmVnZXhwIHteKGNvdWxkbid0 IGV4ZWN1dGUgIi91c3Ivc2Jpbi9wcmVsaW5rW15cclxuXSoiOiBubyBzdWNoIGZpbGUgb3IgZGly ZWN0b3J5XG4/KSokfSAkb3V0cHV0XX0gewotKyAgICB1bnRlc3RlZCBhdHRhY2gtcGllLW1pc3Jl YWQuZXhwCi0rICAgIHJldHVybiAtMQotK30gZWxzZSB7Ci0rICAgIGZhaWwgJHRlc3QKLSt9Ci0r Ci0rc2V0IHBoZHIgW3JlYWRfcGhkciAkYmluZmlsZSAicmVhZGVsZiB3aXRoIHByZWxpbmsgLVIi XQotK3NldCBkeW5hbWljX3ZhZGRyX3ByZWxpbmt5ZXMgW2xpbmRleCAkcGhkciAwXQotKwotK3Nl dCBmaXJzdF9vZmZzZXQgW2Zvcm1hdCAweCV4IFtleHByICRkeW5hbWljX3ZhZGRyX3ByZWxpbmt5 ZXMgLSAkZHluYW1pY192YWRkcl9wcmVsaW5rbm9dXQotK3ZlcmJvc2UgLWxvZyAiZmlyc3Rfb2Zm c2V0IGlzICRmaXJzdF9vZmZzZXQiCi0rCi0rc2V0IHRlc3QgImZpcnN0IG9mZnNldCBpcyBub24t emVybyIKLStpZiB7JGZpcnN0X29mZnNldCA9PSAwfSB7Ci0rICAgIGZhaWwgIiR0ZXN0ICgtZlBJ RSAtcGllIGluIGVmZmVjdD8pIgotK30gZWxzZSB7Ci0rICAgIHBhc3MgJHRlc3QKLSt9Ci0rCi0r c2V0IHRlc3QgInN0YXJ0IGluZmVyaW9yIgotK2dkYl9leGl0Ci0rCi0rc2V0IHJlcyBbcmVtb3Rl X3NwYXduIGhvc3QgJGJpbmZpbGVdOwotK2lmIHsgJHJlcyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsK LSsgICAgcGVycm9yICJTcGF3bmluZyAkYmluZmlsZSBmYWlsZWQuIgotKyAgICBmYWlsICR0ZXN0 Ci0rICAgIHJldHVybgotK30KLStzZXQgcGlkIFtleHBfcGlkIC1pICRyZXNdCi0rZ2RiX2V4cGVj dCB7Ci0rICAgIC1yZSAic2xlZXBpbmdcclxuIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAg ICBlb2YgewotKwlmYWlsICIkdGVzdCAoZW9mKSIKLSsJcmVtb3RlX2V4ZWMgaG9zdCAia2lsbCAt OSAkcGlkIgotKwlyZXR1cm4KLSsgICAgfQotKyAgICB0aW1lb3V0IHsKLSsJZmFpbCAiJHRlc3Qg KHRpbWVvdXQpIgotKwlyZW1vdGVfZXhlYyBob3N0ICJraWxsIC05ICRwaWQiCi0rCXJldHVybgot KyAgICB9Ci0rfQotKwotKyMgRHVlIHRvIGFsaWdubWVudHMgaXQgd2FzIHJlcHJvZHVjaWJsZSB3 aXRoIDEgb24geDg2XzY0IGJ1dCAyIG9uIGk2ODYuCi0rZm9yZWFjaCBhbGlnbl9tdWx0IHsxIDJ9 IHsKLSsgICAgc2V0IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4Ci0rICAgIGxhcHBlbmQgcGZfcHJl Zml4ICJzaGlmdC1ieS0kYWxpZ25fbXVsdDoiCi0rCi0rICAgICMgRklYTUU6IFdlIGJlbGlldmUg dGhlcmUgaXMgZW5vdWdoIHJvb20gdW5kZXIgRklSU1RfT0ZGU0VULgotKyAgICBzZXQgc2hpZnRl ZF9vZmZzZXQgW2Zvcm1hdCAweCV4IFtleHByICIkZmlyc3Rfb2Zmc2V0IC0gJGFsaWduX211bHQg KiAkYWxpZ25fbWF4Il1dCi0rICAgIHZlcmJvc2UgLWxvZyAic2hpZnRlZF9vZmZzZXQgaXMgJHNo aWZ0ZWRfb2Zmc2V0IgotKwotKyAgICBzZXQgY29tbWFuZCAiZXhlYyAvdXNyL3NiaW4vcHJlbGlu ayAtcSAtTiAtLW5vLWV4ZWMtc2hpZWxkIC1yICRzaGlmdGVkX29mZnNldCAkYmluZmlsZSIKLSsg ICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgotKyAgICBzZXQgcmVzdWx0IFtj YXRjaCAkY29tbWFuZCBvdXRwdXRdCi0rICAgIHZlcmJvc2UgLWxvZyAicmVzdWx0IGlzICRyZXN1 bHQiCi0rICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0rCi0rICAgIHNldCB0 ZXN0ICJwcmVsaW5rIC1yIgotKyAgICBpZiB7JHJlc3VsdCA9PSAwICYmICRvdXRwdXQgPT0gIiJ9 IHsKLSsJcGFzcyAkdGVzdAotKyAgICB9IGVsc2UgewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSsK LSsgICAgY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotKwotKyAgICBzZXQgdGVzdCAiYXR0YWNo IgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiYXR0YWNoICRwaWQiICR0ZXN0IHsKLSsJLXJlICJB dHRhY2hpbmcgdG8gcHJvZ3JhbTogLiosIHByb2Nlc3MgJHBpZFxyXG4iIHsKLSsJICAgICMgTWlz c2luZyAiJGdkYl9wcm9tcHQgJCIgaXMgaW50ZW50aW9uYWwuCi0rCSAgICBwYXNzICR0ZXN0Ci0r CX0KLSsgICAgfQotKwotKyAgICBzZXQgdGVzdCAiZXJyb3Igb24gQ2Fubm90IGFjY2VzcyBtZW1v cnkgYXQgYWRkcmVzcyIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKwktcmUg IlxyXG5DYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIC4qJGdkYl9wcm9tcHQgJCIgewot KwkgICAgZmFpbCAkdGVzdAotKwl9Ci0rCS1yZSAiJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFz cyAkdGVzdAotKwl9Ci0rICAgIH0KLSsKLSsgICAgZ2RiX3Rlc3QgImRldGFjaCIgIkRldGFjaGlu ZyBmcm9tIHByb2dyYW06IC4qIgotKwotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgK LSt9Ci0rCi0rcmVtb3RlX2V4ZWMgaG9zdCAia2lsbCAtOSAkcGlkIgotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2JyZWFrLWludGVycC5leHAKLUBAIC0yNDgsOSArMjQ4LDggQEAgcHJvYyByZWFjaCB7ZnVu YyBjb21tYW5kIGRpc3BsYWNlbWVudH0gewotIAkJfQotIAkJaWYgeyRkaXNwbGFjZW1lbnQgPT0g JGNhc2V9IHsKLSAJCSAgICBwYXNzICR0ZXN0X2Rpc3BsYWNlbWVudAotLQkJICAgICMgUGVybWl0 IG11bHRpcGxlIHN1Y2ggbWVzc2FnZXMuCi0gCQkgICAgc2V0IGRpc3BsYWNlbWVudCAiRk9VTkQt JGRpc3BsYWNlbWVudCIKLS0JCX0gZWxzZWlmIHskZGlzcGxhY2VtZW50ICE9ICJGT1VORC0kY2Fz ZSJ9IHsKLSsJCX0gZWxzZSB7Ci0gCQkgICAgZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAJCX0K LSAJCWV4cF9jb250aW51ZQotQEAgLTMwNCw5ICszMDMsOCBAQCBwcm9jIHRlc3RfY29yZSB7Zmls ZSBkaXNwbGFjZW1lbnR9IHsKLSAJICAgIH0KLSAJICAgIGlmIHskZGlzcGxhY2VtZW50ID09ICRj YXNlfSB7Ci0gCQlwYXNzICR0ZXN0X2Rpc3BsYWNlbWVudAotLQkJIyBQZXJtaXQgbXVsdGlwbGUg c3VjaCBtZXNzYWdlcy4KLSAJCXNldCBkaXNwbGFjZW1lbnQgIkZPVU5ELSRkaXNwbGFjZW1lbnQi Ci0tCSAgICB9IGVsc2VpZiB7JGRpc3BsYWNlbWVudCAhPSAiRk9VTkQtJGNhc2UifSB7Ci0rCSAg ICB9IGVsc2UgewotIAkJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAJICAgIH0KLSAJICAgIGV4 cF9jb250aW51ZQotQEAgLTM2Miw5ICszNjAsOCBAQCBwcm9jIHRlc3RfYXR0YWNoX2dkYiB7Zmls ZSBwaWQgZGlzcGxhY2VtZW50IHByZWZpeH0gewotIAkgICAgfQotIAkgICAgaWYgeyRkaXNwbGFj ZW1lbnQgPT0gJGNhc2V9IHsKLSAJCXBhc3MgJHRlc3RfZGlzcGxhY2VtZW50Ci0tCQkjIFBlcm1p dCBtdWx0aXBsZSBzdWNoIG1lc3NhZ2VzLgotIAkJc2V0IGRpc3BsYWNlbWVudCAiRk9VTkQtJGRp c3BsYWNlbWVudCIKLS0JICAgIH0gZWxzZWlmIHskZGlzcGxhY2VtZW50ICE9ICJGT1VORC0kY2Fz ZSJ9IHsKLSsJICAgIH0gZWxzZSB7Ci0gCQlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAotIAkgICAg fQotIAkgICAgZXhwX2NvbnRpbnVlCi1AQCAtNDUxLDkgKzQ0OCw3IEBACi0gICAgIGdkYl90ZXN0 ICJidCIgIiMwICtcW15cclxuXF0qXFxtZGxfbWFpblxcTS4qIiAiZGwgYnQiCi0gCi0gICAgIGlm ICRpZm1haW4gewotLQkjIERpc3BsYWNlbWVudCBtZXNzYWdlIHdpbGwgYmUgcHJpbnRlZCB0aGUg c2Vjb25kIHRpbWUgb24gaW5pdGlhbGl6aW5nCi0tCSMgdGhlIGxpbmtlciBmcm9tIHN2cjRfc3Bl Y2lhbF9zeW1ib2xfaGFuZGxpbmcuCi0tCXJlYWNoICJtYWluIiBjb250aW51ZSAkZGlzcGxhY2Vt ZW50Ci0rCXJlYWNoICJtYWluIiBjb250aW51ZSAiTk9ORSIKLSAKLSAJcmVhY2ggImxpYmZ1bmMi IGNvbnRpbnVlICJOT05FIgotIAotQEAgLTUyOCw5ICs1MTcsOCBAQCBwcm9jIHRlc3RfbGQge2Zp bGUgaWZtYWluIHRyeW5vc3ltIGRpc3BsYWNlbWVudH0gewotIAkJfQotIAkJaWYgeyRkaXNwbGFj ZW1lbnQgPT0gJGNhc2V9IHsKLSAJCSAgICBwYXNzICR0ZXN0X2Rpc3BsYWNlbWVudAotLQkJICAg ICMgUGVybWl0IG11bHRpcGxlIHN1Y2ggbWVzc2FnZXMuCi0gCQkgICAgc2V0IGRpc3BsYWNlbWVu dCAiRk9VTkQtJGRpc3BsYWNlbWVudCIKLS0JCX0gZWxzZWlmIHskZGlzcGxhY2VtZW50ICE9ICJG T1VORC0kY2FzZSJ9IHsKLSsJCX0gZWxzZSB7Ci0gCQkgICAgZmFpbCAkdGVzdF9kaXNwbGFjZW1l bnQKLSAJCX0KLSAJCWV4cF9jb250aW51ZQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXBpZS1yZXJ1bi5w YXRjaCBiL2dkYi1waWUtcmVydW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGRkMDY4MDUuLjAwMDAwMDAKLS0tIGEvZ2RiLXBpZS1yZXJ1bi5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDEyNyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMC0wMy9tc2cwMDg2OC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFBJRTogRml4IGJhY2sgcmUt cnVuICBbUmU6IFtwYXRjaF0gc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAgc3VjY2VzcyBpbmRpY2F0 b3JdCi0KLUhpLAotCi1jdXJyZW50bHk6Ci0KLSQgZWNobyAnbWFpbigpe30nfGdjYyAtbyAxIC1m UElFIC1waWUgLXggYyAtOyAuL2dkYiAtbnggLWV4ICdzZXQgZGlzYWJsZS1yYW5kb21pemF0aW9u IG9mZicgLWV4ICdiIG1haW4nIC1leCByIC1leCBjIC1leCByIC4vMQotQnJlYWtwb2ludCAxIGF0 IDB4NmIwCi1TdGFydGluZyBwcm9ncmFtOiAvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2RiLWNsZWFu L2dkYi90ZXN0c3VpdGUvMSAKLUJyZWFrcG9pbnQgMSwgMHgwMDAwN2ZiZjczZThjNmIwIGluIG1h aW4gKCkKLUNvbnRpbnVpbmcuCi1Qcm9ncmFtIGV4aXRlZCB3aXRoIGNvZGUgMDE0MC4KLVN0YXJ0 aW5nIHByb2dyYW06IC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL3Rlc3RzdWl0 ZS8xIAotRXJyb3IgaW4gcmUtc2V0dGluZyBicmVha3BvaW50IDE6IENhbm5vdCBhY2Nlc3MgbWVt b3J5IGF0IGFkZHJlc3MgMHg3ZmJmNzNlOGM2YWMKLQotSXQgaXMgc2luY2U6Ci0JW3BhdGNoXSBz dnI0X2V4ZWNfZGlzcGxhY2VtZW50IHN1Y2Nlc3MgaW5kaWNhdG9yIFtSZTogUElFIHF1ZXN0aW9u XQotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMzM2 Lmh0bWwKLQotCi1PbiBNb24sIDA4IE1hciAyMDEwIDIyOjUzOjU4ICswMTAwLCBKYW4gS3JhdG9j aHZpbCB3cm90ZToKLT4gQXR0YWNoZWQgdGhlc2UgY2hhbmdlczoKLT4gCi0+ICogc3ZyNF9leGVj X2Rpc3BsYWNlbWVudCBjYWxsaW5nIGNvbnZlbnRpb24gc2hvdWxkIGhhdmUgc3VjY2VzcyBpbmRp Y2F0b3IuCi0+IAotPiAqIFByZXNlcnZpbmcgbm93IHNlY3Rpb25fb2Zmc2V0cyBpZiB0aGV5IGFy ZSBhbHJlYWR5IHNldCwgaW5zcGlyZWQgYnkKLT4gICBpbml0X29iamZpbGVfc2VjdF9pbmRpY2Vz LgotPiAKLT4gSSBiZWxpZXZlIGVpdGhlciBvZiBwYXJ0cyB3b3VsZCBiZSBzdWZmaWNpZW50IGZv ciB0aGlzIHByb2JsZW0uCi0KLVRoZSBmaXJzdCBwYXJ0IGhhcyBjYXVzZWQgdGhlIHJlZ3Jlc3Np b24gZm9yIFBJRSBvbiBuYXRpdmUgeDg2KiBHTlUvTGludXggaG9zdC4KLQotQXMgSSBiZWxpZXZl IGZvciBEYW5pZWwgSi4ncyBzZWVuIHJlZ3Jlc3Npb24gb2YgYHFPZmZzZXRzJyB0aGUgc2Vjb25k IGFscmVhZHkKLWNoZWNrZWQtaW4gcGFydCBpcyBzdWZmaWNpZW50IC0gSSB3b3VsZCBsaWtlIHRv IHJlbW92ZSB0aGUgZmlyc3QgcGFydC4KLQotT0sgdG8gY2hlY2sgaXQgaW4/Ci0KLU5vIHJlZ3Jl c3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExMi1saW51eC1nbnUuCi0K LShJIGRvIG5vdCB0aGluayBvbmUgbmVlZHMgdG8gdGhpbmsgYWJvdXQgNy4xLWJyYW5jaCBhcyBp dCBpcyBub3QgYSByZWdyZXNzaW9uCi1hZ2FpbnN0IGFueSBGU0YgR0RCIHJlbGVhc2UuKQotCi0K LVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTAtMDMtMjUgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCByZS1ydW4gb2YgUElFIGV4ZWN1dGFibGUu Ci0JKiBzb2xpYi1zdnI0LmMgKHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlKSA8c3ltZmls ZV9vYmpmaWxlPjogUmVtb3ZlCi0JdGhlIHBhcnQgb2YgcHJlLXNldCBTWU1GSUxFX09CSkZJTEUt PlNFQ1RJT05fT0ZGU0VUUy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMDMtMjUgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCByZS1ydW4gb2YgUElF IGV4ZWN1dGFibGUuCi0JKiBnZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwICh0ZXN0X2xkKTogVHVy biBvZmYgImRpc2FibGUtcmFuZG9taXphdGlvbiIuCi0JUmVtb3ZlICRkaXNwbGFjZW1lbnRfbWFp biB0byBtYXRjaCB0aGUgc29saWItc3ZyNC5jIGNoYW5nZS4gIE5ldyAia2lsbCIKLQlhbmQgcmUt InJ1biIgb2YgdGhlIGluZmVyaW9yLgotCi0tLS0gYS9nZGIvc29saWItc3ZyNC5jCi0rKysgYi9n ZGIvc29saWItc3ZyNC5jCi1AQCAtMTc5MSwxNyArMTc5MSwxMCBAQCBzdnI0X3JlbG9jYXRlX21h aW5fZXhlY3V0YWJsZSAodm9pZCkKLSB7Ci0gICBDT1JFX0FERFIgZGlzcGxhY2VtZW50OwotIAot LSAgaWYgKHN5bWZpbGVfb2JqZmlsZSkKLS0gICAgewotLSAgICAgIGludCBpOwotLQotLSAgICAg IC8qIFJlbW90ZSB0YXJnZXQgbWF5IGhhdmUgYWxyZWFkeSBzZXQgc3BlY2lmaWMgb2Zmc2V0cyBi eSBgcU9mZnNldHMnCi0tCSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAgKi8KLS0KLS0gICAg ICBmb3IgKGkgPSAwOyBpIDwgc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnM7IGkrKykKLS0J aWYgKEFOT0ZGU0VUIChzeW1maWxlX29iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgaSkgIT0gMCkK LS0JICByZXR1cm47Ci0tICAgIH0KLSsgIC8qIFNZTUZJTEVfT0JKRklMRS0+U0VDVElPTl9PRkZT RVRTIG1heSBub3cgY29udGFpbiBkaXNwbGFjZW1lbnQgZnJvbSB0aGUKLSsgICAgIHByZXZpb3Vz IHJ1biBvZiB0aGUgaW5mZXJpb3IuICBSZS1zZXQgaXQgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50 IHZhbHVlLAotKyAgICAgaWYgd2UgY2FuIGZpbmQgaXQgb3V0LiAgQnV0IG90aGVyd2lzZSBrZWVw IGl0IGFzIGZvciByZW1vdGUgdGFyZ2V0IGl0IG1heQotKyAgICAgaGF2ZSBiZWVuIHByZS1zZXQg YnkgdGhlIGBxT2Zmc2V0cycgcGFja2V0LiAgKi8KLSAKLSAgIGlmICghIHN2cjRfZXhlY19kaXNw bGFjZW1lbnQgKCZkaXNwbGFjZW1lbnQpKQotICAgICByZXR1cm47Ci0tLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYnJlYWstaW50ZXJwLmV4cAotQEAgLTQxNiwyNSArNDE2LDI4IEBAIHByb2MgdGVzdF9sZCB7 ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGxhY2VtZW50fSB7Ci0gICAgICMgUHJpbnQgdGhlICJQ SUUgKFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGUpIGRpc3BsYWNlbWVudCIgbWVzc2Fn ZS4KLSAgICAgZ2RiX3Rlc3QgInNldCB2ZXJib3NlIG9uIgotIAotKyAgICAjIEEgYml0IGJldHRl ciB0ZXN0IGNvdmVyYWdlLgotKyAgICBnZGJfdGVzdCAic2V0IGRpc2FibGUtcmFuZG9taXphdGlv biBvZmYiCi0rCi0gICAgIHJlYWNoICJkbF9tYWluIiAicnVuIHNlZ3YiICRkaXNwbGFjZW1lbnQK LSAKLSAgICAgZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG1kbF9tYWluXFxNLioiICJk bCBidCIKLSAKLSAgICAgaWYgJGlmbWFpbiB7Ci0gCSMgRGlzcGxhY2VtZW50IG1lc3NhZ2Ugd2ls bCBiZSBwcmludGVkIHRoZSBzZWNvbmQgdGltZSBvbiBpbml0aWFsaXppbmcKLS0JIyB0aGUgbGlu a2VyIGZyb20gc3ZyNF9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZy4gIElmIGFueSBBTk9GRlNFVCBo YXMKLS0JIyBiZWVuIGFscmVhZHkgc2V0IGFzIG5vbi16ZXJvIHRoZSBkZXRlY3Rpb24gd2lsbCBu byBsb25nZXIgYmUgcnVuLgotLQlpZiB7JGRpc3BsYWNlbWVudCA9PSAiTk9OWkVSTyJ9IHsKLS0J ICAgIHNldCBkaXNwbGFjZW1lbnRfbWFpbiAiTk9ORSIKLS0JfSBlbHNlIHsKLS0JICAgIHNldCBk aXNwbGFjZW1lbnRfbWFpbiAkZGlzcGxhY2VtZW50Ci0tCX0KLS0JcmVhY2ggIm1haW4iIGNvbnRp bnVlICRkaXNwbGFjZW1lbnRfbWFpbgotKwkjIHRoZSBsaW5rZXIgZnJvbSBzdnI0X3NwZWNpYWxf c3ltYm9sX2hhbmRsaW5nLgotKwlyZWFjaCAibWFpbiIgY29udGludWUgJGRpc3BsYWNlbWVudAot IAotIAlyZWFjaCAibGliZnVuYyIgY29udGludWUgIk5PTkUiCi0gCi0gCWdkYl90ZXN0ICJidCIg IiMwICtcW15cclxuXF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxuIzEgK1xbXlxyXG5cXSpc XG1tYWluXFxNLioiICJtYWluIGJ0IgotKyAgICB9Ci0gCi0rICAgICMgVHJ5IHJlLXJ1biBpZiB0 aGUgbmV3IFBJRSBkaXNwbGFjZW1lbnQgdGFrZXMgZWZmZWN0LgotKyAgICBnZGJfdGVzdCAia2ls bCIgIiIgImtpbGwiIHtLaWxsIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkXD8gXCh5IG9yIG5c KSB9ICJ5IgotKyAgICByZWFjaCAiZGxfbWFpbiIgInJ1biAgc2VndiIgJGRpc3BsYWNlbWVudAot KwotKyAgICBpZiAkaWZtYWluIHsKLSAJdGVzdF9jb3JlICRmaWxlICRkaXNwbGFjZW1lbnQKLSAK LSAJdGVzdF9hdHRhY2ggJGZpbGUgJGRpc3BsYWNlbWVudAotCgpkaWZmIC0tZ2l0IGEvZ2RiLXJo ZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCmluZGV4IGQ3NjE1MzguLmUx OThkNWQgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1nY2M0NC5wYXRjaAorKysgYi9nZGItcmhlbDUt Z2NjNDQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKIFNvbWUgZnVuY3Rpb25hbGl0eSBpcyBhdmFp bGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBnY2M0NCBhbmQgZ2ZvcnRyYW40NCBhcwogdGhl IGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogCi1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAK K0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0wMS0xNSAyMjoxNDoxMy4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEw LTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0wNy0xMiAyMzowNzozMy4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIwMAogQEAgLTE2 LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlIHZsYQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmMKQEAgLTMyLDExICszMiwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg dGVzdCBwcm9ncmFtIgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKK0luZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0wMS0xNCAyMjoxMjowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst aW50ZXJwLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMxLDEw ICszMSwzMCBAQCBpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlX2xpYn1dIHsKKy0tLSBn ZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRl cnAuZXhwCTIwMTAtMDctMDUgMjA6MDQ6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0w Ny0xMyAyMzoxMToyMi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zMyw5ICszMywyOSBAQCBpZiBbZ2V0 X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlX2xpYn1dIHsKICAgICAgcmV0dXJuIC0xCiAgfQogIApA QCAtNTMsOCArNTMsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKICt9CiArc2V0X2JvYXJkX2luZm8gY29tcGlsZXIg Z2NjNDQKICsKLSAjIFVzZSAtc29uYW1lIHNvIHRoYXQgaXQgaXMgbGlzdGVkIHdpdGggIiA9PiAi IGJ5IGxkZCBhbmQgdGhpcyB0ZXN0Y2FzZSBtYWtlcwotICMgYSBjb3B5IG9mICR7YmluZmlsZV9s aWJ9IGZvciBlYWNoIHByZWxpbmsgdmFyaWFudC4KKyAjIFVzZSAtc29uYW1lIHNvIHRoYXQgdGhl IG5ldyBsaWJyYXJ5IGdldHMgY29waWVkIGJ5IGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMuCiAg CiAtaWYge1tnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9s aWJ9ICR7YmluZmlsZV9saWJ9IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC1zb25h bWUsJHt0ZXN0fS5zb11dICE9ICIifSB7CiArc2V0IGVyciBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1 ZyBhZGRpdGlvbmFsX2ZsYWdzPS1XbCwtc29uYW1lLCR7dGVzdH0uc29dXQpAQCAtNjgsNDYgKzY3 LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1AQCAtNDgwLDkgKzUwMCwz MyBAQCBmb3JlYWNoIGxkcHJlbGluayB7Tk8gWUVTfSB7Ci0gCQkgICAgaWYgeyRiaW5waWUgIT0g Ik5PIn0gewotIAkJCWxhcHBlbmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllfQot IAkJICAgIH0KLS0JCSAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgW2ZpbGUg dGFpbCAkZXhlY10gJHNyY2ZpbGUgJG9wdHNdID09IC0xfSB7Ci0tCQkJY29udGludWU7Ci0rCi0r Ci0rCQkgICAgIyBUZW1wb3JhcmlseSBwcm92aWRlIGNvbXBpbGVyPWdjYzQ0IHNhdmluZyB0aGUg b3JpZ2luYWwgdmFsdWUgYXJvdW5kLgotKwkJICAgICMgUkhFTC01IHdvcmthcm91bmQgb2YgaXRz OgotKwkJICAgICMgICBnY2M6IC1ycGF0aDogbGlua2VyIGlucHV0IGZpbGUgdW51c2VkIGJlY2F1 c2UgbGlua2luZyBub3QgZG9uZQotKwkJICAgICMgICBnY2M6IC0tZHluYW1pYy1saW5rZXI6IGxp bmtlciBpbnB1dCBmaWxlIHVudXNlZCBiZWNhdXNlIGxpbmtpbmcgbm90IGRvbmUKLSsKLSsJCSAg ICBzZXQgYm9hcmQgW3RhcmdldF9pbmZvIG5hbWVdCi0rCQkgICAgaWYgW2JvYXJkX2luZm8gJGJv YXJkIGV4aXN0cyBjb21waWxlcl0gewotKwkJCXNldCBvbGRfY29tcGlsZXIgW2JvYXJkX2luZm8g JGJvYXJkIGNvbXBpbGVyXQotKwkJCXVuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKLSsJCSAgICB9 IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7Ci0rCQkJdW5zZXQgb2xkX2NvbXBp bGVyCi0rCQkgICAgfQotKwkJICAgIHNldF9ib2FyZF9pbmZvIGNvbXBpbGVyIGdjYzQ0Ci0rCi0r CQkgICAgc2V0IGVyciBbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3R9LmV4cCBbZmlsZSB0YWlsICRl eGVjXSAkc3JjZmlsZSAkb3B0c10KLSsKLSsJCSAgICB1bnNldF9ib2FyZF9pbmZvIGNvbXBpbGVy Ci0rCQkgICAgaWYgW2luZm8gZXhpc3RzIG9sZF9jb21waWxlcl0gewotKwkJCXNldF9ib2FyZF9p bmZvIGNvbXBpbGVyICRvbGRfY29tcGlsZXIKLSAJCSAgICB9Ci0rCi0rCQkgICAgaWYgeyAkZXJy ID09IC0xIH0gewotKwkJCWNvbnRpbnVlCi0rCQkgICAgfQotKwotIAkJICAgIGlmIHskYmluc2Vw ZGVidWcgPT0gIlNFUCJ9IHsKLSAJCQlnZGJfZ251X3N0cmlwX2RlYnVnICRleGVjCi0gCQkJIyBK dXN0IGEgc2FuaXR5IGNoZWNrLiAgQXMgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB1c2VzIHRoZQotSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24t YmxvY2suZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2NvbW1vbi1ibG9jay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAt MDEtMTUgMjI6MTQ6MTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMC0wMS0xNSAyMjox NDo1MS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAtMDctMTMgMDA6MjU6NTYu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAg KzAyMDAKIEBAIC0yMCw3ICsyMCwyNSBAQCBzZXQgdGVzdGZpbGUgImNvbW1vbi1ibG9jayIKICBz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJk aXJ9LyR7dGVzdGZpbGV9CkBAIC0xMzUsMTAgKzk4LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogICAgICB1 bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9 Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3 YXJmLXN0cmlkZS5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAu MjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJ MjAxMC0wMS0xNSAyMjoxNDoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTAxLTE1 IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMC0wNy0xMiAyMzow NzozMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAw MDAwMCArMDIwMAogQEAgLTI3LDcgKzI3LDI1IEBACiAgc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlk ZQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MApAQCAtMTY2LDEwICsxMjksMTAgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1z dHJpZGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKK0luZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9keW5hbWljLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjEzLjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4 cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAx MDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTAtMDct MTIgMjM6MDc6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAw MDAwMDAwICswMjAwCiBAQCAtMjUsNyArMjUsMjUgQEAgc2V0IHRlc3RmaWxlICJkeW5hbWljIgog IHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTE5NywxMCArMTYwLDEwIEBAIEluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKICAgICAgdW50 ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJy YXJ5LW1vZHVsZS5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUu ZXhwCTIwMTAtMDEtMTUgMjI6MTQ6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEw LTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEwLTA2 LTAzIDAwOjQxOjU2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAxMC0wNy0xMyAyMzow NToxNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0yNSwxNiArMjUsMzQgQEAgaWYgW2dldF9jb21waWxl cl9pbmZvIG5vdC11c2VkXSB7CiAgICAgcmV0dXJuIC0xCiAgfQpAQCAtMjQwLDEwICsyMDMsMTAg QEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9s aWJyYXJ5LW1vZHVsZS5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNm aWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1 bGUuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0wMS0x NSAyMjoxNDo1MS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTAtMDYtMDMgMDE6MDE6MDEu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAgKzAyMDAK IEBAIC0xNiw3ICsxNiwyNSBAQAogIHNldCB0ZXN0ZmlsZSAibW9kdWxlIgogIHNldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmY5MApAQCAtMjcxLDEwICsyMzQsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCiAgICAgIHJldHVy biAtMQogIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4y MDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEwLTAx LTE1IDIyOjE0OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6NTEuMDAw MDAwMDAwICswMTAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJp bmcuZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICswMjAwCiBAQCAtMjMsNyArMjMs MjUgQEAgc2V0IHRlc3RmaWxlICJzdHJpbmciCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkw CiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMzAyLDEw ICsyNjUsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdHJpbmcuZXhwCiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3Jj ZmlsZX0iCiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCitJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L29tcC1zdGVwLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJ MjAxMC0wMS0xNSAyMjoxNDo1MS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMC0wNy0x MyAwMDoyMTozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAw MDAwMDAwICswMjAwCiBAQCAtMTUsNyArMTUsMjYgQEAKICAKICBzZXQgdGVzdGZpbGUgIm9tcC1z dGVwIgpAQCAtMzM0LDEwICsyOTcsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKICAgICAgcmV0dXJuIC0xCiAgfQog IAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k ZXJpdmVkLXR5cGUuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUw LjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhw CTIwMTAtMDEtMDEgMDg6MzI6MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wMS0x NSAyMjoxNjoyMC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMDEgMDg6 MzI6MDIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAw MDAwMDAgKzAyMDAKIEBAIC0yOCw4ICsyOCwyNiBAQCBzZXQgdGVzdGZpbGUgImRlcml2ZWQtdHlw ZSIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC0zNjcsMTAgKzMzMCwxMCBAQCBJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAK ICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Vi YXJyYXkuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEw LTAxLTE1IDIyOjE3OjE4LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEwLTAxLTAxIDA4 OjMyOjAyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAw MDAgKzAyMDAKIEBAIC0yOCw4ICsyOCwyNiBAQCBzZXQgdGVzdGZpbGUgInN1YmFycmF5IgogIHNl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmYKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9CkBAIC00MDAsMTAgKzM2MywxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAogICAgICByZXR1cm4g LTEKICB9CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBk ZWJ1Zy5leHAJMjAxMC0wMS0xNSAyMjoxNDoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAky MDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3 MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMC0w Ny0xMiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEwLTA3LTEzIDIzOjA1 OjE0LjAwMDAwMDAwMCArMDIwMAogQEAgLTMyLDcgKzMyLDI1IEBAIHNldCBiaW5zaGFyZWRkZWJ1 Z2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGkKICAKICAjIEZJWE1FOiBnY2MgZGVwZW5kZW5jeSAoLVds LC1zb25hbWUpLgpAQCAtNDMxLDMgKzM5NCw0MSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKICAgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBsaWJyYXJ5IgogICAgICByZXR1cm4gLTEKICB9CitJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBv cnQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0 c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMC0wNy0wNSAyMDowMjo1Ni4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxp bmstc3VwcG9ydC5leHAJMjAxMC0wNy0xMyAyMzowOTozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0x MTgsOSArMTE4LDMxIEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0geworIHByb2MgYnVpbGRf ZXhlY3V0YWJsZV9vd25fbGlicyB7dGVzdG5hbWUgZXhlY3V0YWJsZSBzb3VyY2VzIG9wdGlvbnMg e2ludGVycCAiIn0ge2RpciAiIn19IHsKKyAgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIKKyAKKy0g ICAgaWYge1tidWlsZF9leGVjdXRhYmxlICR0ZXN0bmFtZSAkZXhlY3V0YWJsZSAkc291cmNlcyAk b3B0aW9uc10gPT0gLTF9IHsKKy0JcmV0dXJuICIiCisrICAgICMgVGVtcG9yYXJpbHkgcHJvdmlk ZSBjb21waWxlcj1nY2M0NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KKysgICAg IyBSSEVMLTUgd29ya2Fyb3VuZCBvZiBpdHM6CisrICAgICMgICBnY2M6IC1ycGF0aDogbGlua2Vy IGlucHV0IGZpbGUgdW51c2VkIGJlY2F1c2UgbGlua2luZyBub3QgZG9uZQorKyAgICAjICAgZ2Nj OiAtLWR5bmFtaWMtbGlua2VyOiBsaW5rZXIgaW5wdXQgZmlsZSB1bnVzZWQgYmVjYXVzZSBsaW5r aW5nIG5vdCBkb25lCisrCisrICAgIHNldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KKysgICAg aWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBjb21waWxlcl0geworKwlzZXQgb2xkX2NvbXBp bGVyIFtib2FyZF9pbmZvICRib2FyZCBjb21waWxlcl0KKysJdW5zZXRfYm9hcmRfaW5mbyBjb21w aWxlcgorKyAgICB9IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrCXVuc2V0 IG9sZF9jb21waWxlcgorICAgICB9CisrICAgIHNldF9ib2FyZF9pbmZvIGNvbXBpbGVyIGdjYzQ0 CisrCisrICAgIHNldCBlcnIgW2J1aWxkX2V4ZWN1dGFibGUgJHRlc3RuYW1lICRleGVjdXRhYmxl ICRzb3VyY2VzICRvcHRpb25zXQorKworKyAgICB1bnNldF9ib2FyZF9pbmZvIGNvbXBpbGVyCisr ICAgIGlmIFtpbmZvIGV4aXN0cyBvbGRfY29tcGlsZXJdIHsKKysJc2V0X2JvYXJkX2luZm8gY29t cGlsZXIgJG9sZF9jb21waWxlcgorKyAgICB9CisrCisrICAgIGlmIHsgJGVyciA9PSAtMSB9IHsK KysJcmV0dXJuICIiICAgCisrICAgIH0KKysKKyAgICAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke2V4ZWN1dGFibGV9CisgCisgICAgIHNldCBjb21tYW5kICJsZGQgJGJpbmZpbGUi CgpkaWZmIC0tZ2l0IGEvZ2RiLXNvbGliLW1lbW9yeS1lcnJvci1ub25mYXRhbC5wYXRjaCBiL2dk Yi1zb2xpYi1tZW1vcnktZXJyb3Itbm9uZmF0YWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGY4ZDczZDguLjAwMDAwMDAKLS0tIGEvZ2RiLXNvbGliLW1lbW9yeS1lcnJvci1u b25mYXRhbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVtSRkMvaWE2NF0g bWVtb3J5IGVycm9yIHdoZW4gcmVhZGluZyB3cm9uZyBjb3JlIGZpbGUKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNjQ1Lmh0bWwKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAyL21zZzAwMDAxLmh0bWwKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMjk4Lmh0bWwKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDMvbXNnMDAwNjUuaHRtbAotYzk2MWE4 ZGE0MjIyODM2NjJlMDllZTQ5OGMwNTk4ZDQ4ZmM5ZDcwZgotCi0tLS0gc3JjL2dkYi9zb2xpYi1z dnI0LmMJMjAxMC8wMi8yNCAwMDoyOTowMgkxLjEyNQotKysrIHNyYy9nZGIvc29saWItc3ZyNC5j CTIwMTAvMDMvMDggMDc6NDU6NDkJMS4xMjYKLUBAIC04NjgsOSArODY4LDE2IEBACi0gewotICAg c3RydWN0IGxpbmtfbWFwX29mZnNldHMgKmxtbyA9IHN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0 cyAoKTsKLSAgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAodGFyZ2V0X2dk YmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotKyAgQ09SRV9BRERSIGFkZHIgPSAwOwotKyAgdm9s YXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7Ci0gCi0tICByZXR1cm4gcmVhZF9tZW1vcnlf dHlwZWRfYWRkcmVzcyAoaW5mby0+ZGVidWdfYmFzZSArIGxtby0+cl9tYXBfb2Zmc2V0LAotLQkJ CQkgICAgcHRyX3R5cGUpOwotKyAgVFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCi0r ICAgIHsKLSsgICAgICBhZGRyID0gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVzcyAoaW5mby0+ZGVi dWdfYmFzZSArIGxtby0+cl9tYXBfb2Zmc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwdHJfdHlwZSk7Ci0rICAgIH0KLSsgIGV4Y2VwdGlvbl9wcmludCAoZ2Ri X3N0ZGVyciwgZXgpOwotKyAgcmV0dXJuIGFkZHI7Ci0gfQotIAotIC8qIEZpbmQgcl9icmsgZnJv bSB0aGUgaW5mZXJpb3IncyBkZWJ1ZyBiYXNlLiAgKi8KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEwLzAzLzA4IDAxOjQ5OjMwCTEuMTE0NDEKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAz LzA4IDA3OjQ1OjQ5CTEuMTE0NDIKLSMjIC0xLDMgKzEsMTAgQEAKLSsyMDEwLTAzLTA4ICBKb2Vs IEJyb2JlY2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KLSsKLSsJTWVtb3J5IGVycm9yIHdo ZW4gcmVhZGluZyB3cm9uZyBjb3JlIGZpbGUuCi0rCSogc29saWItc3ZyNC5jIChzb2xpYl9zdnI0 X3JfbWFwKTogY2F0Y2ggYW5kIHByaW50IGFsbCBleGNlcHRpb24KLSsJZXJyb3JzIHdoaWxlIHJl YWRpbmcgdGhlIGluZmVyaW9yIG1lbW9yeSwgYW5kIHJldHVybiB6ZXJvIGlmCi0rCWFuIGV4Y2Vw dGlvbiB3YXMgcmFpc2VkLgotKwotIDIwMTAtMDMtMDcgIE1pY2hhZWwgU255ZGVyICA8bXNueWRl ckB2bXdhcmUuY29tPgotIAotIAkqIHJlY29yZC5jIChyZWNvcmRfcmVzdG9yZSk6IFJlbmFtZSB0 bXB1OCB0byByZWN0eXBlLgoKZGlmZiAtLWdpdCBhL2dkYi11bndpbmQtZGVidWdob29rLXNhZmUt ZmFpbC5wYXRjaCBiL2dkYi11bndpbmQtZGVidWdob29rLXNhZmUtZmFpbC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQxNmIzMy4uMDAwMDAwMAotLS0gYS9nZGItdW53aW5k LWRlYnVnaG9vay1zYWZlLWZhaWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA Ci1jb21taXQgODAyMjE0Yzk3ZDE2NjFhZDMzN2FhZDBkMDExZGRlZDQ0ZjBiNWRkZAotQXV0aG9y OiBUb20gVHJvbWV5IDx0cm9tZXlAcmVkaGF0LmNvbT4KLURhdGU6ICAgTW9uIEFwciAyNiAxNTox NTo1NSAyMDEwIC0wNjAwCi0KLSAgICBGYWlsIGdyYWNlZnVsbHkgaWYgdGhlIF9VbndpbmRfRGVi dWdIb29rIGFyZ3VtZW50IGlzIG9wdGltaXplZCBvdXQKLQotZGlmZiAtLWdpdCBhL2dkYi9pbmZy dW4uYyBiL2dkYi9pbmZydW4uYwotaW5kZXggMmVlYTU1MC4uOWE1YjUzNCAxMDA2NDQKLS0tLSBh L2dkYi9pbmZydW4uYwotKysrIGIvZ2RiL2luZnJ1bi5jCi1AQCAtNDkyNSwyMCArNDkyNSwyNCBA QCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwLAotIAotICAgICAgIHZzeW0gPSBsb29rdXBfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1F IChzeW0pLCBiLCBWQVJfRE9NQUlOLCBOVUxMKTsKLSAgICAgICB2YWx1ZSA9IHJlYWRfdmFyX3Zh bHVlICh2c3ltLCBmcmFtZSk7Ci0tICAgICAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZh bHVlKTsKLSsgICAgICAvKiBJZiB0aGUgdmFsdWUgd2FzIG9wdGltaXplZCBvdXQsIHJldmVydCB0 byB0aGUgb2xkIGJlaGF2aW9yLiAgKi8KLSsgICAgICBpZiAoISB2YWx1ZV9vcHRpbWl6ZWRfb3V0 ICh2YWx1ZSkpCi0rCXsKLSsJICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwot IAotLSAgICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1 bWUgYnJlYWtwb2ludAotLQkgd2l0aCBhbiBleGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAq LwotLSAgICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7Ci0rCSAgLyogV2Un cmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3VtZSBicmVha3BvaW50Ci0r CSAgICAgd2l0aCBhbiBleGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotKwkgIGRlbGV0 ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7Ci0gCi0tICAgICAgaWYgKGRlYnVnX2luZnJ1 bikKLS0JZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLQkJCSAgICAiaW5mcnVuOiBl eGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKLS0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIGhhbmRs ZXIpOwotKwkgIGlmIChkZWJ1Z19pbmZydW4pCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCi0rCQkJCSJpbmZydW46IGV4Y2VwdGlvbiByZXN1bWUgYXQgJWx4XG4iLAotKwkJ CQkodW5zaWduZWQgbG9uZykgaGFuZGxlcik7Ci0gCi0tICAgICAgYnAgPSBzZXRfbW9tZW50YXJ5 X2JyZWFrcG9pbnRfYXRfcGMgKGdldF9mcmFtZV9hcmNoIChmcmFtZSksCi0tCQkJCQkgICBoYW5k bGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKLS0gICAgICBpbmZlcmlvcl90aHJlYWQgKCktPnN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBicDsKLSsJICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtw b2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJCSAgICAgICBoYW5kbGVy LCBicF9leGNlcHRpb25fcmVzdW1lKTsKLSsJICBpbmZlcmlvcl90aHJlYWQgKCktPnN0ZXBfcmVz dW1lX2JyZWFrcG9pbnQgPSBicDsKLSsJfQotICAgICB9Ci0gfQotIAoKZGlmZiAtLWdpdCBhL2dk Yi11bndpbmQtZGVidWdob29rLXN0ZXAtaW5kZXBlbmRlbnQucGF0Y2ggYi9nZGItdW53aW5kLWRl YnVnaG9vay1zdGVwLWluZGVwZW5kZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwN2JkMmJhLi4wMDAwMDAwCi0tLSBhL2dkYi11bndpbmQtZGVidWdob29rLXN0ZXAtaW5k ZXBlbmRlbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotY29tbWl0IGY4 Y2EwM2UwMDk3YWU0OWM2NmNmMzNhNTBlMzI0N2JjY2QzYTRhMzMKLUF1dGhvcjogVG9tIFRyb21l eSA8dHJvbWV5QHJlZGhhdC5jb20+Ci1EYXRlOiAgIFdlZCBBcHIgMjggMTQ6MTc6MzggMjAxMCAt MDYwMAotCi0gICAgUmVpbXBsZW1lbnQgaW5mcnVuIHBhcnRzIG9mIG5leHQtb3Zlci10aHJvdy4K LSAgICBQcmV2aW91c2x5LCB3ZSByZXNldCB0aGUgc3RlcC1yZXN1bWUgYnJlYWtwb2ludC4KLSAg ICBIb3dldmVyLCB0aGlzIGNhbiBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgYW4gZXhjZXB0aW9uCi0g ICAgaXMgdGhyb3duIGFuZCBjYXVnaHQgYmVuZWF0aCB0aGUgbmV4dGluZyBmcmFtZS4KLSAgICBU aGUgbmV3IGFwcHJvYWNoIGlzIHRvIGhhdmUgYSBzZXBhcmF0ZSBleGNlcHRpb24tcmVzdW1lCi0g ICAgYnJlYWtwb2ludC4KLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0 aHJlYWQuaAotaW5kZXggNjExZGNiYi4uOTYzODM2OCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0aHJl YWQuaAotKysrIGIvZ2RiL2dkYnRocmVhZC5oCi1AQCAtNjYsNiArNjYsOSBAQCBzdHJ1Y3QgdGhy ZWFkX2luZm8KLSAgIC8qIFN0ZXAtcmVzdW1lIG9yIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQu ICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQ7Ci0gCi0r ICAvKiBFeGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotKyAgc3RydWN0IGJyZWFrcG9p bnQgKmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKLSsKLSAgIC8qIFJhbmdlIHRvIHNpbmds ZSBzdGVwIHdpdGhpbi4KLSAKLSAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9uZCB0byBh IHNpbmdsZS1zdGVwIHNpZ25hbCBieSBjb250aW51aW5nCi1AQCAtMjI1LDYgKzIyOCw5IEBAIGV4 dGVybiB2b2lkIGRlbGV0ZV90aHJlYWRfc2lsZW50IChwdGlkX3QpOwotIC8qIERlbGV0ZSBhIHN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgZnJvbSB0aGUgdGhyZWFkIGRhdGFiYXNlLiAqLwotIGV4dGVy biB2b2lkIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8g Kik7Ci0gCi0rLyogRGVsZXRlIGFuIGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRo ZSB0aHJlYWQgZGF0YWJhc2UuICovCi0rZXh0ZXJuIHZvaWQgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1 bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICopOwotKwotIC8qIFRyYW5zbGF0ZSB0 aGUgaW50ZWdlciB0aHJlYWQgaWQgKEdEQidzIGhvbWVncm93biBpZCwgbm90IHRoZSBzeXN0ZW0n cykKLSAgICBpbnRvIGEgInBpZCIgKHdoaWNoIG1heSBiZSBvdmVybG9hZGVkIHdpdGggZXh0cmEg dGhyZWFkIGluZm9ybWF0aW9uKS4gICovCi0gZXh0ZXJuIHB0aWRfdCB0aHJlYWRfaWRfdG9fcGlk IChpbnQpOwotZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwotaW5kZXgg OWE1YjUzNC4uMzU0NmNmMSAxMDA2NDQKLS0tLSBhL2dkYi9pbmZydW4uYwotKysrIGIvZ2RiL2lu ZnJ1bi5jCi1AQCAtMzAwLDYgKzMwMCw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQotICAgICAgcGFy ZW50IHRocmVhZCBzdHJ1Y3R1cmUncyBydW4gY29udHJvbCByZWxhdGVkIGZpZWxkcywgbm90IGp1 c3QgdGhlc2UuCi0gICAgICBJbml0aWFsaXplZCB0byBhdm9pZCAibWF5IGJlIHVzZWQgdW5pbml0 aWFsaXplZCIgd2FybmluZ3MgZnJvbSBnY2MuICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2Vw dGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICBDT1JFX0FERFIgc3RlcF9yYW5nZV9z dGFydCA9IDA7Ci0gICBDT1JFX0FERFIgc3RlcF9yYW5nZV9lbmQgPSAwOwotICAgc3RydWN0IGZy YW1lX2lkIHN0ZXBfZnJhbWVfaWQgPSB7IDAgfTsKLUBAIC0zNTIsNiArMzUzLDggQEAgZm9sbG93 X2ZvcmsgKHZvaWQpCi0gCSAgICBzdGVwX3JhbmdlX3N0YXJ0ID0gdHAtPnN0ZXBfcmFuZ2Vfc3Rh cnQ7Ci0gCSAgICBzdGVwX3JhbmdlX2VuZCA9IHRwLT5zdGVwX3JhbmdlX2VuZDsKLSAJICAgIHN0 ZXBfZnJhbWVfaWQgPSB0cC0+c3RlcF9mcmFtZV9pZDsKLSsJICAgIGV4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludAotKwkgICAgICA9IGNsb25lX21vbWVudGFyeV9icmVha3BvaW50ICh0cC0+ZXhj ZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKLSAKLSAJICAgIC8qIEZvciBub3csIGRlbGV0ZSB0 aGUgcGFyZW50J3Mgc3IgYnJlYWtwb2ludCwgb3RoZXJ3aXNlLAotIAkgICAgICAgcGFyZW50L2No aWxkIHNyIGJyZWFrcG9pbnRzIGFyZSBjb25zaWRlcmVkIGR1cGxpY2F0ZXMsCi1AQCAtMzYyLDYg KzM2NSw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQotIAkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQg PSAwOwotIAkgICAgdHAtPnN0ZXBfcmFuZ2VfZW5kID0gMDsKLSAJICAgIHRwLT5zdGVwX2ZyYW1l X2lkID0gbnVsbF9mcmFtZV9pZDsKLSsJICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFr cG9pbnQgKHRwKTsKLSAJICB9Ci0gCi0gCXBhcmVudCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtNDAz LDYgKzQwNyw4IEBAIGZvbGxvd19mb3JrICh2b2lkKQotIAkJICAgIHRwLT5zdGVwX3JhbmdlX3N0 YXJ0ID0gc3RlcF9yYW5nZV9zdGFydDsKLSAJCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSBzdGVw X3JhbmdlX2VuZDsKLSAJCSAgICB0cC0+c3RlcF9mcmFtZV9pZCA9IHN0ZXBfZnJhbWVfaWQ7Ci0r CQkgICAgdHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAotKwkJICAgICAgPSBleGNlcHRp b25fcmVzdW1lX2JyZWFrcG9pbnQ7Ci0gCQkgIH0KLSAJCWVsc2UKLSAJCSAgewotQEAgLTQ1Niw2 ICs0NjIsOSBAQCBmb2xsb3dfaW5mZXJpb3JfcmVzZXRfYnJlYWtwb2ludHMgKHZvaWQpCi0gICBp ZiAodHAtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQpCi0gICAgIGJyZWFrcG9pbnRfcmVfc2V0X3Ro cmVhZCAodHAtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQpOwotIAotKyAgaWYgKHRwLT5leGNlcHRp b25fcmVzdW1lX2JyZWFrcG9pbnQpCi0rICAgIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAodHAt PmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCk7Ci0rCi0gICAvKiBSZWluc2VydCBhbGwgYnJl YWtwb2ludHMgaW4gdGhlIGNoaWxkLiAgVGhlIHVzZXIgbWF5IGhhdmUgc2V0Ci0gICAgICBicmVh a3BvaW50cyBhZnRlciBjYXRjaGluZyB0aGUgZm9yaywgaW4gd2hpY2ggY2FzZSB0aG9zZQotICAg ICAgd2VyZSBuZXZlciBzZXQgaW4gdGhlIGNoaWxkLCBidXQgb25seSBpbiB0aGUgcGFyZW50LiAg VGhpcyBtYWtlcwotQEAgLTY5NCw2ICs3MDMsNyBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwg Y2hhciAqZXhlY2RfcGF0aG5hbWUpCi0gICAvKiBJZiB0aGVyZSB3YXMgb25lLCBpdCdzIGdvbmUg bm93LiAgV2UgY2Fubm90IHRydWx5IHN0ZXAtdG8tbmV4dAotICAgICAgc3RhdGVtZW50IHRocm91 Z2ggYW4gZXhlYygpLiAqLwotICAgdGgtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOwot KyAgdGgtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICB0aC0+c3RlcF9y YW5nZV9zdGFydCA9IDA7Ci0gICB0aC0+c3RlcF9yYW5nZV9lbmQgPSAwOwotIAotQEAgLTIxNDUs NiArMjE1NSw3IEBAIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2NhbGxiYWNrIChzdHJ1 Y3QgdGhyZWFkX2luZm8gKmluZm8sIHZvaWQgKmRhdGEpCi0gICAgIHJldHVybiAwOwotIAotICAg ZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOwotKyAgZGVsZXRlX2V4Y2VwdGlv bl9yZXN1bWVfYnJlYWtwb2ludCAoaW5mbyk7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMjE2 OCw2ICsyMTc5LDcgQEAgZGVsZXRlX3N0ZXBfdGhyZWFkX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQg KHZvaWQpCi0gCSBzdGVwcGluZy4gICovCi0gICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9 IGluZmVyaW9yX3RocmVhZCAoKTsKLSAgICAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2lu dCAodHApOwotKyAgICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsK LSAgICAgfQotICAgZWxzZQotICAgICAvKiBJbiBhbGwtc3RvcCBtb2RlLCBkZWxldGUgYWxsIHN0 ZXAtcmVzdW1lIGFuZCBsb25nam1wLXJlc3VtZQotQEAgLTM4MzIsMzAgKzM4NDQsMzEgQEAgaW5m cnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1w X3RhcmdldClcbiIpOwotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAJCQkg ICAgICAiaW5mcnVuOiBCUFNUQVRfV0hBVF9DTEVBUl9MT05HSk1QX1JFU1VNRVxuIik7Ci0gCi0t CWdkYl9hc3NlcnQgKGVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwX3Jlc3VtZV9icmVha3BvaW50ICE9 IE5VTEwpOwotLQlkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJl YWQpOwotLQotLQlpZiAoIXdoYXQuaXNfbG9uZ2ptcCkKLSsJaWYgKHdoYXQuaXNfbG9uZ2ptcCkK LSsJICB7Ci0rCSAgICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9yZXN1bWVf YnJlYWtwb2ludCAhPSBOVUxMKTsKLSsJICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50 IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0rCSAgfQotKwllbHNlCi0gCSAgewotIAkgICAgLyogVGhl cmUgYXJlIHNldmVyYWwgY2FzZXMgdG8gY29uc2lkZXIuCi0tCSAgICAgICAKLSsKLSAJICAgICAg IDEuIFRoZSBpbml0aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBleGlzdHMuICBJbiB0aGlzIGNhc2UK LSAJICAgICAgIHdlIG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGhhcyBnb25lIHRv byBmYXIuCi0tCSAgICAgICAKLSsKLSAJICAgICAgIDIuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4 aXN0cywgYW5kIGlzIHRoZSBzYW1lIGFzIHRoZQotLQkgICAgICAgY3VycmVudCBmcmFtZS4KLS0J ICAgICAgIAotLQkgICAgICAgMi4xLiBJZiB3ZSBhcmUgc3RlcHBpbmcsIGRlZmVyIHRvIHRoZSBz dGVwcGluZyBsb2dpYy4KLS0JICAgICAgIAotLQkgICAgICAgMi4yLiBPdGhlcndpc2UsIHdlIGFy ZSBub3Qgc3RlcHBpbmcsIHNvIHdlIGFyZSBkb2luZyBhCi0tCSAgICAgICAiZmluaXNoIiBhbmQg d2UgaGF2ZSByZWFjaGVkIHRoZSBjYWxsaW5nIGZyYW1lLiAgU28sCi0tCSAgICAgICBzdG9wLgot LQkgICAgICAgCi0rCSAgICAgICBjdXJyZW50IGZyYW1lLiAgV2Ugc3RvcCwgYmVjYXVzZSB0aGUg ZXhjZXB0aW9uIGhhcyBiZWVuCi0rCSAgICAgICBjYXVnaHQuCi0rCi0gCSAgICAgICAzLiBUaGUg aW5pdGlhdGluZyBmcmFtZSBleGlzdHMgYW5kIGlzIGRpZmZlcmVudCBmcm9tCi0gCSAgICAgICB0 aGUgY3VycmVudCBmcmFtZS4gIFRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgotIAkg ICAgICAgY2F1Z2h0IGJlbmVhdGggdGhlIGluaXRpYXRpbmcgZnJhbWUsIHNvIGtlZXAgZ29pbmcu ICAqLwotIAkgICAgc3RydWN0IGZyYW1lX2luZm8gKmluaXRfZnJhbWUKLSAJICAgICAgPSBmcmFt ZV9maW5kX2J5X2lkIChlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSk7Ci0rCi0r CSAgICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVh a3BvaW50ICE9IE5VTEwpOwotKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2lu dCAoZWNzLT5ldmVudF90aHJlYWQpOwotKwotIAkgICAgaWYgKGluaXRfZnJhbWUpCi0gCSAgICAg IHsKLSAJCXN0cnVjdCBmcmFtZV9pZCBjdXJyZW50X2lkCi1AQCAtMzg2MywxNSArMzg3Niw3IEBA IGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9u Z2ptcF90YXJnZXQpXG4iKTsKLSAJCWlmIChmcmFtZV9pZF9lcSAoY3VycmVudF9pZCwKLSAJCQkJ IGVjcy0+ZXZlbnRfdGhyZWFkLT5pbml0aWF0aW5nX2ZyYW1lKSkKLSAJCSAgewotLQkJICAgIGlm IChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9yYW5nZV9zdGFydCkKLS0JCSAgICAgIHsKLS0JCQkv KiBDYXNlIDIuMS4gICovCi0tCQkJYnJlYWs7Ci0tCQkgICAgICB9Ci0tCQkgICAgZWxzZQotLQkJ ICAgICAgewotLQkJCS8qIENhc2UgMi4yOiBmYWxsIHRocm91Z2guICAqLwotLQkJICAgICAgfQot KwkJICAgIC8qIENhc2UgMi4gIEZhbGwgdGhyb3VnaC4gICovCi0gCQkgIH0KLSAJCWVsc2UKLSAJ CSAgewotQEAgLTM4ODAsNiArMzg4NSwxMCBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05H Sk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7Ci0gCQkgICAgcmV0 dXJuOwotIAkJICB9Ci0gCSAgICAgIH0KLSsKLSsJICAgIC8qIEZvciBDYXNlcyAxIGFuZCAyLCBy ZW1vdmUgdGhlIHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQsCi0rCSAgICAgICBpZiBpdCBleGlzdHMu ICAqLwotKwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhy ZWFkKTsKLSAJICB9Ci0gCi0gCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAxOwotQEAg LTQ5MzAsMTAgKzQ5MzksNiBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAotIAl7Ci0gCSAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJl c3MgKHZhbHVlKTsKLSAKLS0JICAvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBjdXJyZW50 IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQKLS0JICAgICB3aXRoIGFuIGV4Y2VwdGlvbi1yZXN1bWUg YnJlYWtwb2ludC4gICovCi0tCSAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsK LS0KLSAJICBpZiAoZGVidWdfaW5mcnVuKQotIAkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAotIAkJCQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKLUBAIC00 OTQxLDcgKzQ5NDYsNyBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRwLAotIAotIAkgIGJwID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50 X2F0X3BjIChnZXRfZnJhbWVfYXJjaCAoZnJhbWUpLAotIAkJCQkJICAgICAgIGhhbmRsZXIsIGJw X2V4Y2VwdGlvbl9yZXN1bWUpOwotLQkgIGluZmVyaW9yX3RocmVhZCAoKS0+c3RlcF9yZXN1bWVf YnJlYWtwb2ludCA9IGJwOwotKwkgIGluZmVyaW9yX3RocmVhZCAoKS0+ZXhjZXB0aW9uX3Jlc3Vt ZV9icmVha3BvaW50ID0gYnA7Ci0gCX0KLSAgICAgfQotIH0KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMu ZXhwCi1pbmRleCBlZTlhZWZmLi5jNzdkYmQ4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvZ2RiOTU5My5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuZXhw Ci1AQCAtMTQ1LDcgKzE0NSw3IEBAIGdkYl90ZXN0ICJzdGVwIiBcCi0gICAic3RlcCBpbnRvIGZp bmlzaCwgZm9yIHVudGlsIgotIAotIGdkYl90ZXN0ICJ1bnRpbCIgXAotLSAgIi4qY2F0Y2ggLmlu dCB4LioiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0gICAidW50aWwgd2l0aCBubyBhcmd1 bWVudCAxIgotIAotIHNldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIgZm9yIHVu dGlsIiAkdGVzdGZpbGUuY2NdCi1kaWZmIC0tZ2l0IGEvZ2RiL3RocmVhZC5jIGIvZ2RiL3RocmVh ZC5jCi1pbmRleCAxNmEyMDdjLi4zYzUyYWU0IDEwMDY0NAotLS0tIGEvZ2RiL3RocmVhZC5jCi0r KysgYi9nZGIvdGhyZWFkLmMKLUBAIC05MCw2ICs5MCwxNiBAQCBkZWxldGVfc3RlcF9yZXN1bWVf YnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSAgICAgfQotIH0KLSAKLSt2b2lk Ci0rZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZv ICp0cCkKLSt7Ci0rICBpZiAodHAgJiYgdHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkK LSsgICAgewotKyAgICAgIGRlbGV0ZV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9i cmVha3BvaW50KTsKLSsgICAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVM TDsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZAotIGNsZWFyX3RocmVhZF9pbmZlcmlvcl9y ZXNvdXJjZXMgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCi0gewoKZGlmZiAtLWdpdCBhL2dkYi11 cHN0cmVhbS5wYXRjaCBiL2dkYi11cHN0cmVhbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggYjY0M2FkNi4uMDAwMDAwMAotLS0gYS9nZGItdXBzdHJlYW0ucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMTc5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTAtMDMvbXNnMDAxMDQuaHRtbAotNTg1NTk1NDQ1NGYxOWE4MDFmNzZiYmY3YmFhZmQx MWE2OTNjNWQzMwotCi1JbXBvcnRlZCB0byBzeW5jIGdkYi5iYXNlL2JyZWFrLWludGVycC5leHAg Zm9yIGdkYi1waWUtcmVydW4ucGF0Y2guCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAz LzExIDAzOjQ1OjQ4CTEuMTE0NjkKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAzLzExIDIy OjA3OjAwCTEuMTE0NzAKLSMjIC0xLDMgKzEsOSBAQAotKzIwMTAtMDMtMTEgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBzb2xpYi1zdnI0LmMgKExN X0FERFJfQ0hFQ0spIDxpbmZvX3ZlcmJvc2U+OiBVc2UgcHJpbnRmX3VuZmlsdGVyZWQKLSsJZm9y IHRoZSBQSUMgZGlzcGxhY2VtZW50LCBwcmludCBhbHNvIHRoZSBkaXNwbGFjZW1lbnQgdmFsdWUu Ci0rCShzdnI0X2V4ZWNfZGlzcGxhY2VtZW50KTogIFByaW50IERJU1BMQUNFTUVOVCBpZiBJTkZP X1ZFUkJPU0UuCi0rCi0gMjAxMC0wMy0xMCAgS2V2aW4gQnVldHRuZXIgIDxrZXZpbmJAcmVkaGF0 LmNvbT4KLSAKLSAJKiByZW1vdGUtbWlwcy5jIChjbG9zZV9wb3J0cywgbWlwc19pbml0aWFsaXpl X2NsZWFudXBzKQotLS0tIHNyYy9nZGIvc29saWItc3ZyNC5jCTIwMTAvMDMvMTAgMjA6NTU6NDQJ MS4xMjkKLSsrKyBzcmMvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLzAzLzExIDIyOjA3OjAyCTEuMTMw Ci1AQCAtMjQzLDEyICsyNDMsMTAgQEAKLSAJICAgICAgbF9hZGRyID0gbF9keW5hZGRyIC0gZHlu YWRkcjsKLSAKLSAJICAgICAgaWYgKGluZm9fdmVyYm9zZSkKLS0JCXsKLS0JCSAgd2FybmluZyAo XygiLmR5bmFtaWMgc2VjdGlvbiBmb3IgXCIlc1wiICIKLS0JCQkgICAgICJpcyBub3QgYXQgdGhl IGV4cGVjdGVkIGFkZHJlc3MiKSwgc28tPnNvX25hbWUpOwotLQkJICB3YXJuaW5nIChfKCJkaWZm ZXJlbmNlIGFwcGVhcnMgdG8gYmUgY2F1c2VkIGJ5IHByZWxpbmssICIKLS0JCQkgICAgICJhZGp1 c3RpbmcgZXhwZWN0YXRpb25zIikpOwotLQkJfQotKwkJcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlVz aW5nIFBJQyAoUG9zaXRpb24gSW5kZXBlbmRlbnQgQ29kZSkgIgotKwkJCQkgICAgICJwcmVsaW5r IGRpc3BsYWNlbWVudCAlcyBmb3IgXCIlc1wiLlxuIiksCi0rCQkJCSAgIHBhZGRyZXNzICh0YXJn ZXRfZ2RiYXJjaCwgbF9hZGRyKSwKLSsJCQkJICAgc28tPnNvX25hbWUpOwotIAkgICAgfQotIAkg IGVsc2UKLSAJICAgIHdhcm5pbmcgKF8oIi5keW5hbWljIHNlY3Rpb24gZm9yIFwiJXNcIiAiCi1A QCAtMTc2Nyw2ICsxNzY1LDE4IEBACi0gCXJldHVybiAwOwotICAgICB9Ci0gCi0rICBpZiAoaW5m b192ZXJib3NlKQotKyAgICB7Ci0rICAgICAgLyogSXQgY2FuIGJlIHByaW50ZWQgcmVwZWF0ZWRs eSBhcyB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBjaGVjawotKwkgdGhlIGV4ZWN1dGFibGUgc3lt Ym9scy9maWxlIGhhcyBiZWVuIGFscmVhZHkgcmVsb2NhdGVkIHRvCi0rCSBkaXNwbGFjZW1lbnQu ICAqLwotKwotKyAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJVc2luZyBQSUUgKFBvc2l0aW9u IEluZGVwZW5kZW50IEV4ZWN1dGFibGUpICIKLSsJCQkgICAiZGlzcGxhY2VtZW50ICVzIGZvciBc IiVzXCIuXG4iKSwKLSsJCQkgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBkaXNwbGFjZW1lbnQp LAotKwkJCSBiZmRfZ2V0X2ZpbGVuYW1lIChleGVjX2JmZCkpOwotKyAgICB9Ci0rCi0gICAqZGlz cGxhY2VtZW50cCA9IGRpc3BsYWNlbWVudDsKLSAgIHJldHVybiAxOwotIH0KLSMjIyBzcmMvZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wMy8xMSAwMDoyMDoyOQkxLjIxNjgKLSMjIyBzcmMv Z2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wMy8xMSAyMjowNzowMgkxLjIxNjkKLSMjIC0x LDMgKzEsMjAgQEAKLSsyMDEwLTAzLTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cDogQ3JlYXRlIG5l dyBkaXNwbGFjZW1lbnQgcGFyYW1ldGVyIHZhbHVlCi0rCWZvciB0aGUgdGVzdF9sZCBjYWxscy4K LSsJKHJlYWNoKTogTmV3IHBhcmFtZXRlciBkaXNwbGFjZW1lbnQsIHZlcmlmeSBpdHMgY29udGVu dC4gIE5ldyBwdXNoIG9mCi0rCXBmX3ByZWZpeCAicmVhY2gtJGZ1bmM6Ii4gIEltcG9ydCBnbG9i YWwgZXhwZWN0X291dC4KLSsJKHRlc3RfY29yZSk6IE5ldyBwYXJhbWV0ZXIgZGlzcGxhY2VtZW50 LCB2ZXJpZnkgaXRzIGNvbnRlbnQuICBOZXcgcHVzaAotKwlvZiBwZl9wcmVmaXggImNvcmU6Ii4g IE5ldyBjb21tYW5kICJzZXQgdmVyYm9zZSBvbiIuICBJbXBvcnQgZ2xvYmFsCi0rCWV4cGVjdF9v dXQuCi0rCSh0ZXN0X2F0dGFjaCk6IE5ldyBwYXJhbWV0ZXIgZGlzcGxhY2VtZW50LCB2ZXJpZnkg aXRzIGNvbnRlbnQuICBOZXcKLSsJcHVzaCBvZiBwZl9wcmVmaXggImF0dGFjaDoiLiAgTmV3IGNv bW1hbmQgInNldCB2ZXJib3NlIG9uIi4gIEltcG9ydAotKwlnbG9iYWwgZXhwZWN0X291dC4KLSsJ KHRlc3RfbGQpOiBOZXcgcGFyYW1ldGVyIGRpc3BsYWNlbWVudCwgcGFzcyBpdCB0byB0aGUgcmVh Y2gsIHRlc3RfY29yZQotKwlhbmQgdGVzdF9hdHRhY2ggY2FsbHMgYW5kIHZlcmlmeSBpdHMgY29u dGVudCBpbiB0aGUgImxkLnNvIGV4aXQiIHRlc3QuCi0rCSogZ2RiLmJhc2UvcHJlbGluay5leHA6 IFJlbW92ZSBnZGJfZXhpdCBhbmQgZmluYWwgcmV0dXJuLgotKwkocHJlbGluayk6IFVwZGF0ZSBl eHBlY3RlZCB0ZXh0LCB1c2UgZ2RiX3Rlc3QuCi0rCi0gMjAxMC0wMy0xMCAgRG91ZyBFdmFucyAg PGRqZUBnb29nbGUuY29tPgotIAotIAkqIGdkYi5iYXNlL2NoZWNrcG9pbnQuZXhwOiBGaXggY29t bWVudC4KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIw MTAvMDEvMjcgMjA6NTM6MjIJMS42Ci0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJl YWstaW50ZXJwLmV4cAkyMDEwLzAzLzExIDIyOjA3OjAzCTEuNwotQEAgLTIyMSwzMCArMjIxLDYx IEBACi0gfQotIAotICMgYHJ1bnRvJyBkb2VzIG5vdCBjaGVjayB3ZSBzdG9wcGVkIHJlYWxseSBh dCB0aGUgZnVuY3Rpb24gd2Ugc3BlY2lmaWVkLgotLXByb2MgcmVhY2gge2Z1bmMgY29tbWFuZH0g ewotLSAgICBnbG9iYWwgZ2RiX3Byb21wdAotKyMgRElTUExBQ0VNRU5UIGNhbiBiZSAiTk9ORSIs ICJaRVJPIiBvciAiTk9OWkVSTyIKLStwcm9jIHJlYWNoIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2Vt ZW50fSB7Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQKLSsKLSsgICAgZ2xvYmFs IHBmX3ByZWZpeAotKyAgICBzZXQgb2xkX2xkcHJlZml4ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVu ZCBwZl9wcmVmaXggInJlYWNoLSRmdW5jOiIKLSAKLSAgICAgaWYgW2dkYl9icmVha3BvaW50ICRm dW5jIGFsbG93LXBlbmRpbmddIHsKLS0Jc2V0IHRlc3QgInJlYWNoICRmdW5jIgotKwlzZXQgdGVz dCAicmVhY2giCi0rCXNldCB0ZXN0X2Rpc3BsYWNlbWVudCAic2VlbiBkaXNwbGFjZW1lbnQgbWVz c2FnZSBhcyAkZGlzcGxhY2VtZW50IgotIAlnZGJfdGVzdF9tdWx0aXBsZSAkY29tbWFuZCAkdGVz dCB7Ci0rCSAgICAtcmUgIlVzaW5nIFBJRSBcXChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRh YmxlXFwpIGRpc3BsYWNlbWVudCAoMHhcWzAtOWEtZlxdKykgIiB7Ci0rCQkjIE1pc3NpbmcgIiRn ZGJfcHJvbXB0ICQiIGlzIGludGVudGlvbmFsLgotKwkJaWYgeyRleHBlY3Rfb3V0KDEsc3RyaW5n KSA9PSAiMHgwIn0gewotKwkJICAgIHNldCBjYXNlICJaRVJPIgotKwkJfSBlbHNlIHsKLSsJCSAg ICBzZXQgY2FzZSAiTk9OWkVSTyIKLSsJCX0KLSsJCWlmIHskZGlzcGxhY2VtZW50ID09ICRjYXNl fSB7Ci0rCQkgICAgcGFzcyAkdGVzdF9kaXNwbGFjZW1lbnQKLSsJCSAgICAjIFBlcm1pdCBtdWx0 aXBsZSBzdWNoIG1lc3NhZ2VzLgotKwkJICAgIHNldCBkaXNwbGFjZW1lbnQgIkZPVU5ELSRkaXNw bGFjZW1lbnQiCi0rCQl9IGVsc2VpZiB7JGRpc3BsYWNlbWVudCAhPSAiRk9VTkQtJGNhc2UifSB7 Ci0rCQkgICAgZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSsJCX0KLSsJCWV4cF9jb250aW51ZQot KwkgICAgfQotIAkgICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCAkZnVuYyBcXCguKlxcKSBh dCAuKjpcWzAtOVxdK1xyXG4uKiRnZGJfcHJvbXB0ICQiIHsKLSAJCXBhc3MgJHRlc3QKLSAJICAg IH0KLS0JICAgIC1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFswLTl4YS1mXF0rIGluICRmdW5j IFxcKFxcKSggZnJvbSAuKik/XHJcbiRnZGJfcHJvbXB0ICQiIHsgCi0rCSAgICAtcmUgIkJyZWFr cG9pbnQgXFswLTlcXSssIFxbMC05eGEtZlxdKyBpbiAkZnVuYyBcXChcXCkoIGZyb20gLiopP1xy XG4kZ2RiX3Byb21wdCAkIiB7Ci0gCQlwYXNzICR0ZXN0Ci0gCSAgICB9Ci0gCX0KLSsJaWYgIVty ZWdleHAge14oTk9ORXxGT1VORC0uKikkfSAkZGlzcGxhY2VtZW50XSB7Ci0rCSAgICBmYWlsICR0 ZXN0X2Rpc3BsYWNlbWVudAotKwl9Ci0gICAgIH0KLSsKLSsgICAgc2V0IHBmX3ByZWZpeCAkb2xk X2xkcHJlZml4Ci0gfQotIAotLXByb2MgdGVzdF9jb3JlIHtmaWxlfSB7Ci0tICAgIGdsb2JhbCBz cmNkaXIgc3ViZGlyIGdkYl9wcm9tcHQKLStwcm9jIHRlc3RfY29yZSB7ZmlsZSBkaXNwbGFjZW1l bnR9IHsKLSsgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0Ci0g Ci0gICAgIHNldCBjb3JlZmlsZSBbY29yZV9maW5kICRmaWxlIHt9ICJzZWd2Il0KLSAgICAgaWYg eyRjb3JlZmlsZSA9PSAiIn0gewotIAlyZXR1cm4KLSAgICAgfQotIAotKyAgICBnbG9iYWwgcGZf cHJlZml4Ci0rICAgIHNldCBvbGRfbGRwcmVmaXggJHBmX3ByZWZpeAotKyAgICBsYXBwZW5kIHBm X3ByZWZpeCAiY29yZToiCi0rCi0gICAgIGdkYl9leGl0Ci0gICAgIGdkYl9zdGFydAotICAgICAj IENsZWFyIGl0IHRvIG5ldmVyIGZpbmQgYW55IHNlcGFyYXRlIGRlYnVnIGluZm9zIGluICRkZWJ1 Z19yb290LgotQEAgLTI1MiwxNCArMjgzLDQ0IEBACi0gICAgIGdkYl9yZWluaXRpYWxpemVfZGly ICRzcmNkaXIvJHN1YmRpcgotICAgICBnZGJfbG9hZCAkZmlsZQotIAotLSAgICAjIERvIG5vdCBj aGVjayB0aGUgYmluYXJ5IGZpbGVuYW1lIGFzIGl0IG1heSBiZSB0cnVuY2F0ZWQuCi0tICAgIGdk Yl90ZXN0ICJjb3JlLWZpbGUgJGNvcmVmaWxlIiAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qXHJc biMwIC4qIiAiY29yZSBsb2FkZWQiCi0rICAgICMgUHJpbnQgdGhlICJQSUUgKFBvc2l0aW9uIElu ZGVwZW5kZW50IEV4ZWN1dGFibGUpIGRpc3BsYWNlbWVudCIgbWVzc2FnZS4KLSsgICAgZ2RiX3Rl c3QgInNldCB2ZXJib3NlIG9uIgotKwotKyAgICBzZXQgdGVzdCAiY29yZSBsb2FkZWQiCi0rICAg IHNldCB0ZXN0X2Rpc3BsYWNlbWVudCAic2VlbiBkaXNwbGFjZW1lbnQgbWVzc2FnZSIKLSsgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgImNvcmUtZmlsZSAkY29yZWZpbGUiICR0ZXN0IHsKLSsJLXJlICJV c2luZyBQSUUgXFwoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZVxcKSBkaXNwbGFjZW1l bnQgKDB4XFswLTlhLWZcXSspICIgewotKwkgICAgIyBNaXNzaW5nICIkZ2RiX3Byb21wdCAkIiBp cyBpbnRlbnRpb25hbC4KLSsJICAgIGlmIHskZXhwZWN0X291dCgxLHN0cmluZykgPT0gIjB4MCJ9 IHsKLSsJCXNldCBjYXNlICJaRVJPIgotKwkgICAgfSBlbHNlIHsKLSsJCXNldCBjYXNlICJOT05a RVJPIgotKwkgICAgfQotKwkgICAgaWYgeyRkaXNwbGFjZW1lbnQgPT0gJGNhc2V9IHsKLSsJCXBh c3MgJHRlc3RfZGlzcGxhY2VtZW50Ci0rCQkjIFBlcm1pdCBtdWx0aXBsZSBzdWNoIG1lc3NhZ2Vz LgotKwkJc2V0IGRpc3BsYWNlbWVudCAiRk9VTkQtJGRpc3BsYWNlbWVudCIKLSsJICAgIH0gZWxz ZWlmIHskZGlzcGxhY2VtZW50ICE9ICJGT1VORC0kY2FzZSJ9IHsKLSsJCWZhaWwgJHRlc3RfZGlz cGxhY2VtZW50Ci0rCSAgICB9Ci0rCSAgICBleHBfY29udGludWUKLSsJfQotKwktcmUgIkNvcmUg d2FzIGdlbmVyYXRlZCBieSAuKlxyXG4jMCAuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgRG8g bm90IGNoZWNrIHRoZSBiaW5hcnkgZmlsZW5hbWUgYXMgaXQgbWF5IGJlIHRydW5jYXRlZC4KLSsJ ICAgIHBhc3MgJHRlc3QKLSsJfQotKyAgICB9Ci0rICAgIGlmICFbcmVnZXhwIHteKE5PTkV8Rk9V TkQtLiopJH0gJGRpc3BsYWNlbWVudF0gewotKwlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAotKyAg ICB9Ci0gCi0gICAgIGdkYl90ZXN0ICJidCIgIiNcWzAtOVxdKyArXFteXHJcblxdKlxcbWxpYmZ1 bmNcXE1cW15cclxuXF0qXHJcbiNcWzAtOVxdKyArXFteXHJcblxdKlxcbW1haW5cXE0uKiIgImNv cmUgbWFpbiBidCIKLSsKLSsgICAgc2V0IHBmX3ByZWZpeCAkb2xkX2xkcHJlZml4Ci0gfQotIAot LXByb2MgdGVzdF9hdHRhY2gge2ZpbGV9IHsKLS0gICAgZ2xvYmFsIGJvYXJkX2luZm8KLStwcm9j IHRlc3RfYXR0YWNoIHtmaWxlIGRpc3BsYWNlbWVudH0gewotKyAgICBnbG9iYWwgYm9hcmRfaW5m byBnZGJfcHJvbXB0IGV4cGVjdF9vdXQKLSAKLSAgICAgZ2RiX2V4aXQKLSAKLUBAIC0yODcsMTcg KzM0OCw2MSBAQAotIAl9Ci0gICAgIH0KLSAKLSsgICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBz ZXQgb2xkX2xkcHJlZml4ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVuZCBwZl9wcmVmaXggImF0dGFj aDoiCi0rCi0gICAgIGdkYl9leGl0Ci0gICAgIGdkYl9zdGFydAotLSAgICBnZGJfdGVzdCAiYXR0 YWNoICRwaWQiICJBdHRhY2hpbmcgdG8gcHJvY2VzcyAkcGlkXHJcbi4qIiAiYXR0YWNoIgotKwot KyAgICAjIFByaW50IHRoZSAiUElFIChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlKSBk aXNwbGFjZW1lbnQiIG1lc3NhZ2UuCi0rICAgIGdkYl90ZXN0ICJzZXQgdmVyYm9zZSBvbiIKLSsK LSsgICAgc2V0IHRlc3QgImF0dGFjaCIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImF0dGFjaCAk cGlkIiAkdGVzdCB7Ci0rCS1yZSAiQXR0YWNoaW5nIHRvIHByb2Nlc3MgJHBpZFxyXG4iIHsKLSsJ ICAgICMgTWlzc2luZyAiJGdkYl9wcm9tcHQgJCIgaXMgaW50ZW50aW9uYWwuCi0rCSAgICBwYXNz ICR0ZXN0Ci0rCX0KLSsgICAgfQotKwotKyAgICBzZXQgdGVzdCAiYXR0YWNoIGZpbmFsIHByb21w dCIKLSsgICAgc2V0IHRlc3RfZGlzcGxhY2VtZW50ICJzZWVuIGRpc3BsYWNlbWVudCBtZXNzYWdl IgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7Ci0rCS1yZSAiVXNpbmcgUElFIFxc KFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVcXCkgZGlzcGxhY2VtZW50ICgweFxbMC05 YS1mXF0rKSAiIHsKLSsJICAgICMgTWlzc2luZyAiJGdkYl9wcm9tcHQgJCIgaXMgaW50ZW50aW9u YWwuCi0rCSAgICBpZiB7JGV4cGVjdF9vdXQoMSxzdHJpbmcpID09ICIweDAifSB7Ci0rCQlzZXQg Y2FzZSAiWkVSTyIKLSsJICAgIH0gZWxzZSB7Ci0rCQlzZXQgY2FzZSAiTk9OWkVSTyIKLSsJICAg IH0KLSsJICAgIGlmIHskZGlzcGxhY2VtZW50ID09ICRjYXNlfSB7Ci0rCQlwYXNzICR0ZXN0X2Rp c3BsYWNlbWVudAotKwkJIyBQZXJtaXQgbXVsdGlwbGUgc3VjaCBtZXNzYWdlcy4KLSsJCXNldCBk aXNwbGFjZW1lbnQgIkZPVU5ELSRkaXNwbGFjZW1lbnQiCi0rCSAgICB9IGVsc2VpZiB7JGRpc3Bs YWNlbWVudCAhPSAiRk9VTkQtJGNhc2UifSB7Ci0rCQlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAot KwkgICAgfQotKwkgICAgZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICIkZ2RiX3Byb21wdCAkIiB7 Ci0rCSAgICBwYXNzICR0ZXN0Ci0rCX0KLSsgICAgfQotKyAgICBpZiAhW3JlZ2V4cCB7XihOT05F fEZPVU5ELS4qKSR9ICRkaXNwbGFjZW1lbnRdIHsKLSsJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQK LSsgICAgfQotKwotICAgICBnZGJfdGVzdCAiYnQiICIjXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1s aWJmdW5jXFxNXFteXHJcblxdKlxyXG4jXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1tYWluXFxNLioi ICJhdHRhY2ggbWFpbiBidCIKLSAgICAgZ2RiX2V4aXQKLSAKLSAgICAgcmVtb3RlX2V4ZWMgaG9z dCAia2lsbCAtOSAkcGlkIgotKwotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLSB9 Ci0gCi0tcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bX0gewotLSAgICBnbG9iYWwg c3JjZGlyIHN1YmRpciBnZGJfcHJvbXB0Ci0rcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlu b3N5bSBkaXNwbGFjZW1lbnR9IHsKLSsgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21w dCBleHBlY3Rfb3V0Ci0gCi0gICAgICMgRmlyc3QgdGVzdCBub3JtYWwgYGZpbGUnLWNvbW1hbmQg bG9hZGVkICRGSUxFIHdpdGggc3ltYm9scy4KLSAKLUBAIC0zMDgsMjAgKzQxMywzMSBAQAotICAg ICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSAgICAgZ2RiX2xvYWQgJGZp bGUKLSAKLS0gICAgcmVhY2ggImRsX21haW4iICJydW4gc2VndiIKLSsgICAgIyBQcmludCB0aGUg IlBJRSAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSkgZGlzcGxhY2VtZW50IiBtZXNz YWdlLgotKyAgICBnZGJfdGVzdCAic2V0IHZlcmJvc2Ugb24iCi0rCi0rICAgIHJlYWNoICJkbF9t YWluIiAicnVuIHNlZ3YiICRkaXNwbGFjZW1lbnQKLSAKLSAgICAgZ2RiX3Rlc3QgImJ0IiAiIzAg K1xbXlxyXG5cXSpcXG1kbF9tYWluXFxNLioiICJkbCBidCIKLSAKLSAgICAgaWYgJGlmbWFpbiB7 Ci0tCXJlYWNoICJtYWluIiBjb250aW51ZQotKwkjIERpc3BsYWNlbWVudCBtZXNzYWdlIHdpbGwg YmUgcHJpbnRlZCB0aGUgc2Vjb25kIHRpbWUgb24gaW5pdGlhbGl6aW5nCi0rCSMgdGhlIGxpbmtl ciBmcm9tIHN2cjRfc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcuICBJZiBhbnkgQU5PRkZTRVQgaGFz Ci0rCSMgYmVlbiBhbHJlYWR5IHNldCBhcyBub24temVybyB0aGUgZGV0ZWN0aW9uIHdpbGwgbm8g bG9uZ2VyIGJlIHJ1bi4KLSsJaWYgeyRkaXNwbGFjZW1lbnQgPT0gIk5PTlpFUk8ifSB7Ci0rCSAg ICBzZXQgZGlzcGxhY2VtZW50X21haW4gIk5PTkUiCi0rCX0gZWxzZSB7Ci0rCSAgICBzZXQgZGlz cGxhY2VtZW50X21haW4gJGRpc3BsYWNlbWVudAotKwl9Ci0rCXJlYWNoICJtYWluIiBjb250aW51 ZSAkZGlzcGxhY2VtZW50X21haW4KLSAKLS0JcmVhY2ggImxpYmZ1bmMiIGNvbnRpbnVlCi0rCXJl YWNoICJsaWJmdW5jIiBjb250aW51ZSAiTk9ORSIKLSAKLSAJZ2RiX3Rlc3QgImJ0IiAiIzAgK1xb XlxyXG5cXSpcXG1saWJmdW5jXFxNXFteXHJcblxdKlxyXG4jMSArXFteXHJcblxdKlxcbW1haW5c XE0uKiIgIm1haW4gYnQiCi0gCi0tCXRlc3RfY29yZSAkZmlsZQotKwl0ZXN0X2NvcmUgJGZpbGUg JGRpc3BsYWNlbWVudAotIAotLQl0ZXN0X2F0dGFjaCAkZmlsZQotKwl0ZXN0X2F0dGFjaCAkZmls ZSAkZGlzcGxhY2VtZW50Ci0gICAgIH0KLSAKLSAgICAgaWYgISR0cnlub3N5bSB7Ci1AQCAtMzQx LDE4ICs0NTcsMjEgQEAKLSAgICAgZ2RiX3Rlc3QgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSIK LSAgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gCi0rICAgICMgUHJp bnQgdGhlICJQSUUgKFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGUpIGRpc3BsYWNlbWVu dCIgbWVzc2FnZS4KLSsgICAgZ2RiX3Rlc3QgInNldCB2ZXJib3NlIG9uIgotKwotICAgICAjIFRl c3Qgbm8gKGVycm9yKSBtZXNzYWdlIGhhcyBiZWVuIHByaW50ZWQgYnkgYGV4ZWMtZmlsZScuCi0g ICAgIHNldCBlc2NhcGVkZmlsZSBbc3RyaW5nX3RvX3JlZ2V4cCAkZmlsZV0KLSAgICAgZ2RiX3Rl c3QgImV4ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2FkIgotIAot ICAgICBpZiAkaWZtYWluIHsKLS0JcmVhY2ggImRsX21haW4iIHJ1bgotKwlyZWFjaCAiZGxfbWFp biIgcnVuICRkaXNwbGFjZW1lbnQKLSAKLSAJc2V0IHRlc3QgImluZm8gZmlsZXMiCi0gCXNldCBl bnRyeW5vaGV4ICIiCi0gCWdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSAJICAgIC1y ZSAiXHJcblxbXHQgXF0qRW50cnkgcG9pbnQ6XFtcdCBcXSoweChcWzAtOWEtZlxdKylcclxuLiok Z2RiX3Byb21wdCAkIiB7Ci0tCQlzZXQgZW50cnlub2hleCAkZXhwZWN0X291dCgxLHN0cmluZykg Ci0rCQlzZXQgZW50cnlub2hleCAkZXhwZWN0X291dCgxLHN0cmluZykKLSAJCXBhc3MgJHRlc3QK LSAJICAgIH0KLSAJfQotQEAgLTM2Myw3ICs0ODIsMzQgQEAKLSAgICAgfSBlbHNlIHsKLSAJIyBU aGVyZSBpcyBubyBzeW1ib2wgdG8gYnJlYWsgYXQgbGQuc28uICBNb3Jlb3ZlciBpdCBjYW4gZXhp dCB3aXRoIGFuCi0gCSMgZXJyb3IgY29kZS4KLS0JZ2RiX3Rlc3QgInJ1biIgIlByb2dyYW0gZXhp dGVkIChub3JtYWxseXx3aXRoIGNvZGUgXFswLTlcXSspXFwuIiAibGQuc28gZXhpdCIKLSsKLSsJ c2V0IHRlc3QgImxkLnNvIGV4aXQiCi0rCXNldCB0ZXN0X2Rpc3BsYWNlbWVudCAic2VlbiBkaXNw bGFjZW1lbnQgbWVzc2FnZSIKLSsJZ2RiX3Rlc3RfbXVsdGlwbGUgInJ1biIgJHRlc3QgewotKwkg ICAgLXJlICJVc2luZyBQSUUgXFwoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZVxcKSBk aXNwbGFjZW1lbnQgKDB4XFswLTlhLWZcXSspICIgewotKwkJIyBNaXNzaW5nICIkZ2RiX3Byb21w dCAkIiBpcyBpbnRlbnRpb25hbC4KLSsJCWlmIHskZXhwZWN0X291dCgxLHN0cmluZykgPT0gIjB4 MCJ9IHsKLSsJCSAgICBzZXQgY2FzZSAiWkVSTyIKLSsJCX0gZWxzZSB7Ci0rCQkgICAgc2V0IGNh c2UgIk5PTlpFUk8iCi0rCQl9Ci0rCQlpZiB7JGRpc3BsYWNlbWVudCA9PSAkY2FzZX0gewotKwkJ ICAgIHBhc3MgJHRlc3RfZGlzcGxhY2VtZW50Ci0rCQkgICAgIyBQZXJtaXQgbXVsdGlwbGUgc3Vj aCBtZXNzYWdlcy4KLSsJCSAgICBzZXQgZGlzcGxhY2VtZW50ICJGT1VORC0kZGlzcGxhY2VtZW50 IgotKwkJfSBlbHNlaWYgeyRkaXNwbGFjZW1lbnQgIT0gIkZPVU5ELSRjYXNlIn0gewotKwkJICAg IGZhaWwgJHRlc3RfZGlzcGxhY2VtZW50Ci0rCQl9Ci0rCQlleHBfY29udGludWUKLSsJICAgIH0K LSsJICAgIC1yZSAiUHJvZ3JhbSBleGl0ZWQgKG5vcm1hbGx5fHdpdGggY29kZSBcWzAtOVxdKylc XC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwkJIyBEbyBub3QgY2hlY2sgdGhlIGJpbmFyeSBmaWxl bmFtZSBhcyBpdCBtYXkgYmUgdHJ1bmNhdGVkLgotKwkJcGFzcyAkdGVzdAotKwkgICAgfQotKwl9 Ci0rCWlmICFbcmVnZXhwIHteKE5PTkV8Rk9VTkQtLiopJH0gJGRpc3BsYWNlbWVudF0gewotKwkg ICAgZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSsJfQotICAgICB9Ci0gCi0gICAgIHNldCBwZl9w cmVmaXggJG9sZF9sZHByZWZpeAotQEAgLTQ1MCw3ICs1OTYsMTIgQEAKLSAJaWYgIVtwcmVsaW5r JGxkcHJlbGluayAkaW50ZXJwXSB7Ci0gCSAgICBjb250aW51ZQotIAl9Ci0tCXRlc3RfbGQgJGlu dGVycCAwIFtleHByIHskbGRzZXBkZWJ1ZyA9PSAiTk8ifV0KLSsJaWYgeyRsZHByZWxpbmsgPT0g Ik5PIn0gewotKwkgICAgc2V0IGRpc3BsYWNlbWVudCAiTk9OWkVSTyIKLSsJfSBlbHNlIHsKLSsJ ICAgIHNldCBkaXNwbGFjZW1lbnQgIlpFUk8iCi0rCX0KLSsJdGVzdF9sZCAkaW50ZXJwIDAgW2V4 cHIgeyRsZHNlcGRlYnVnID09ICJOTyJ9XSAkZGlzcGxhY2VtZW50Ci0gCi0gCWlmICFbY29weSAk aW50ZXJwICRpbnRlcnBfc2F2ZWRdIHsKLSAJICAgIGNvbnRpbnVlCi1AQCAtNTMxLDcgKzY4Miwx NCBAQAotIAotIAkJICAgIGlmIHtbcHJlbGluayRiaW5wcmVsaW5rICItLWR5bmFtaWMtbGlua2Vy PSRpbnRlcnAgLS1sZC1saWJyYXJ5LXBhdGg9JGRpciAkZXhlYyAkaW50ZXJwIFtjb25jYXQgJGRl c3RzXSIgW2ZpbGUgdGFpbCAkZXhlY11dCi0gCQkgICAgICAgICYmIFtjb3B5ICRpbnRlcnBfc2F2 ZWQgJGludGVycF19IHsKLS0JCQl0ZXN0X2xkICRleGVjIDEgW2V4cHIgeyRiaW5zZXBkZWJ1ZyA9 PSAiTk8ifV0KLSsJCQlpZiB7JGJpbnBpZSA9PSAiTk8ifSB7Ci0rCQkJICAgIHNldCBkaXNwbGFj ZW1lbnQgIk5PTkUiCi0rCQkJfSBlbHNlaWYgeyRiaW5wcmVsaW5rID09ICJOTyJ9IHsKLSsJCQkg ICAgc2V0IGRpc3BsYWNlbWVudCAiTk9OWkVSTyIKLSsJCQl9IGVsc2UgewotKwkJCSAgICBzZXQg ZGlzcGxhY2VtZW50ICJaRVJPIgotKwkJCX0KLSsJCQl0ZXN0X2xkICRleGVjIDEgW2V4cHIgeyRi aW5zZXBkZWJ1ZyA9PSAiTk8ifV0gJGRpc3BsYWNlbWVudAotIAkJICAgIH0KLSAJCX0KLSAJICAg IH0KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4cAkyMDEwLzAyLzEz IDEyOjAyOjI5CTEuMTEKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4 cAkyMDEwLzAzLzExIDIyOjA3OjAzCTEuMTIKLUBAIC0xMTIsMTUgKzExMiw0IEBACi0gIyBQcmlu dCB0aGUgImFkanVzdGluZyBleHBlY3RhdGlvbnMiIG1lc3NhZ2UuCi0gZ2RiX3Rlc3QgInNldCB2 ZXJib3NlIG9uIgotIAotLXNldCB0ZXN0ICJwcmVsaW5rIgotLWdsb2JhbCBnZGJfcHJvbXB0Ci0t Z2RiX3Rlc3RfbXVsdGlwbGUgImNvcmUtZmlsZSAkb2JqZGlyLyRzdWJkaXIvcHJlbGluay5jb3Jl IiAiJHRlc3QiIHsKLS0gICAgLXJlICJ3YXJuaW5nOiBcLmR5bmFtaWMgc2VjdGlvbi4qbm90IGF0 IHRoZSBleHBlY3RlZCBhZGRyZXNzLip3YXJuaW5nOiBkaWZmZXJlbmNlLipjYXVzZWQgYnkgcHJl bGluaywgYWRqdXN0aW5nIGV4cGVjdGF0aW9ucy4qJGdkYl9wcm9tcHQgJCIgewotLQlwYXNzICIk dGVzdCIKLS0gICAgfQotLX0KLS0KLS1nZGJfZXhpdAotLQotLXJldHVybiAwCi0tCi0rZ2RiX3Rl c3QgImNvcmUtZmlsZSAkb2JqZGlyLyRzdWJkaXIvcHJlbGluay5jb3JlIiB7VXNpbmcgUElDIFwo UG9zaXRpb24gSW5kZXBlbmRlbnQgQ29kZVwpIHByZWxpbmsgZGlzcGxhY2VtZW50Lip9ICJwcmVs aW5rIgotCi0KLQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wMy9tc2cw MDA2Ni5odG1sCi0xNjU1ODQ1Nzc4M2Q3MWUyODU2ZmYyYjljZWFhODMxOTlkMmQ5ODExCi0KLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAzLzA4IDA3OjQ1OjQ5CTEuMTE0NDIKLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEwLzAzLzA4IDA4OjMyOjQ5CTEuMTE0NDMKLSMjIC0xLDMgKzEsOCBA QAotKzIwMTAtMDMtMDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLSsKLSsJKiBzeW1maWxlLmMgKGFkZHJfaW5mb19tYWtlX3JlbGF0aXZlKTogTmV3IHZhcmlh YmxlIHNlY3RfbmFtZSwgdXNlIGl0LgotKwlEbyBub3Qgd2FybiBvbiAiLmdudS5saWJsaXN0IiBh bmQgIi5nbnUuY29uZmxpY3QiLgotKwotIDIwMTAtMDMtMDggIEpvZWwgQnJvYmVja2VyICA8YnJv YmVja2VyQGFkYWNvcmUuY29tPgotIAotIAlNZW1vcnkgZXJyb3Igd2hlbiByZWFkaW5nIHdyb25n IGNvcmUgZmlsZS4KLS0tLSBzcmMvZ2RiL3N5bWZpbGUuYwkyMDEwLzAzLzA1IDE5OjMyOjQ0CTEu Mjc1Ci0rKysgc3JjL2dkYi9zeW1maWxlLmMJMjAxMC8wMy8wOCAwODozMjo0OQkxLjI3NgotQEAg LTU5Miw3ICs1OTIsOCBAQAotIAotICAgZm9yIChpID0gMDsgaSA8IGFkZHJzLT5udW1fc2VjdGlv bnMgJiYgYWRkcnMtPm90aGVyW2ldLm5hbWU7IGkrKykKLSAgICAgewotLSAgICAgIGFzZWN0aW9u ICpzZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIGFkZHJzLT5vdGhlcltpXS5u YW1lKTsKLSsgICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUgPSBhZGRycy0+b3RoZXJbaV0ubmFt ZTsKLSsgICAgICBhc2VjdGlvbiAqc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZk LCBzZWN0X25hbWUpOwotIAotICAgICAgIGlmIChzZWN0KQotIAl7Ci1AQCAtNjA5LDggKzYxMCwy MiBAQAotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0tCSAgd2FybmluZyAoXygic2VjdGlvbiAlcyBu b3QgZm91bmQgaW4gJXMiKSwgYWRkcnMtPm90aGVyW2ldLm5hbWUsCi0tCQkgICBiZmRfZ2V0X2Zp bGVuYW1lIChhYmZkKSk7Ci0rCSAgLyogVGhpcyBzZWN0aW9uIGRvZXMgbm90IGV4aXN0IGluIEFC RkQsIHdoaWNoIGlzIG5vcm1hbGx5Ci0rCSAgICAgdW5leHBlY3RlZCBhbmQgd2Ugd2FudCB0byBp c3N1ZSBhIHdhcm5pbmcuCi0rCi0rCSAgICAgSG93ZXZlciwgdGhlIEVMRiBwcmVsaW5rZXIgZG9l cyBjcmVhdGUgYSBjb3VwbGUgb2Ygc2VjdGlvbnMKLSsJICAgICAoIi5nbnUubGlibGlzdCIgYW5k ICIuZ251LmNvbmZsaWN0Iikgd2hpY2ggYXJlIG1hcmtlZCBpbiB0aGUgbWFpbgotKwkgICAgIGV4 ZWN1dGFibGUgYXMgbG9hZGFibGUgKHRoZXkgYXJlIGxvYWRlZCBpbiBtZW1vcnkgZnJvbSB0aGUK LSsJICAgICBEWU5BTUlDIHNlZ21lbnQpIGFuZCB5ZXQgYXJlIG5vdCBwcmVzZW50IGluIHNlcGFy YXRlIGRlYnVnIGluZm8KLSsJICAgICBmaWxlcy4gIFRoaXMgaXMgZmluZSwgYW5kIHNob3VsZCBu b3QgY2F1c2UgYSB3YXJuaW5nLiAgU2hhcmVkCi0rCSAgICAgbGlicmFyaWVzIGNvbnRhaW4ganVz dCB0aGUgc2VjdGlvbiAiLmdudS5saWJsaXN0IiBidXQgaXQgaXMgbm90Ci0rCSAgICAgbWFya2Vk IGFzIGxvYWRhYmxlIHRoZXJlLiAgKi8KLSsKLSsJICBpZiAoIShzdHJjbXAgKHNlY3RfbmFtZSwg Ii5nbnUubGlibGlzdCIpID09IDAKLSsJCXx8IHN0cmNtcCAoc2VjdF9uYW1lLCAiLmdudS5jb25m bGljdCIpID09IDApKQotKwkgICAgd2FybmluZyAoXygic2VjdGlvbiAlcyBub3QgZm91bmQgaW4g JXMiKSwgc2VjdF9uYW1lLAotKwkJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rCi0g CSAgYWRkcnMtPm90aGVyW2ldLmFkZHIgPSAwOwotIAotIAkgIC8qIFNFQ1RJTkRFWCBpcyBpbnZh bGlkIGlmIEFERFIgaXMgemVyby4gICovCi0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLWN2cy8yMDEwLTAzL21zZzAwMTM4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwNTM1Lmh0bWwKLWNjM2U3MTY1MWUyZmQwMTY4YTJkM2Rk NGVmYzJkM2UxNWZkNTA4ZGQKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDMvMTUgMDM6 NDg6NDYJMS4xMTQ3OQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDMvMTUgMDk6MzE6MzAJ MS4xMTQ4MAotIyMgLTEsMyArMSw4IEBACi0rMjAxMC0wMy0xNSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIHN5bWZpbGUuYyAoYWRkcl9pbmZvX21h a2VfcmVsYXRpdmUpOiBJZ25vcmUgYWxzbyBtaXNzaW5nICIuZHluYnNzIgotKwlhbmQgIi5zZHlu YnNzIi4gIFVwZGF0ZSB0aGUgY29tbWVudC4KLSsKLSAyMDEwLTAzLTE1ICBKaWUgWmhhbmcgIDxq aWVAY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBNQUlOVEFJTkVSUzogVXBkYXRlIG15IGVtYWls IGFkZHJlc3MuCi0tLS0gc3JjL2dkYi9zeW1maWxlLmMJMjAxMC8wMy8xMCAxODoyMDowNwkxLjI3 NwotKysrIHNyYy9nZGIvc3ltZmlsZS5jCTIwMTAvMDMvMTUgMDk6MzE6MzQJMS4yNzgKLUBAIC01 NzYsMTYgKzU3NiwxOSBAQAotIAkgIC8qIFRoaXMgc2VjdGlvbiBkb2VzIG5vdCBleGlzdCBpbiBB QkZELCB3aGljaCBpcyBub3JtYWxseQotIAkgICAgIHVuZXhwZWN0ZWQgYW5kIHdlIHdhbnQgdG8g aXNzdWUgYSB3YXJuaW5nLgotIAotLQkgICAgIEhvd2V2ZXIsIHRoZSBFTEYgcHJlbGlua2VyIGRv ZXMgY3JlYXRlIGEgY291cGxlIG9mIHNlY3Rpb25zCi0tCSAgICAgKCIuZ251LmxpYmxpc3QiIGFu ZCAiLmdudS5jb25mbGljdCIpIHdoaWNoIGFyZSBtYXJrZWQgaW4gdGhlIG1haW4KLS0JICAgICBl eGVjdXRhYmxlIGFzIGxvYWRhYmxlICh0aGV5IGFyZSBsb2FkZWQgaW4gbWVtb3J5IGZyb20gdGhl Ci0tCSAgICAgRFlOQU1JQyBzZWdtZW50KSBhbmQgeWV0IGFyZSBub3QgcHJlc2VudCBpbiBzZXBh cmF0ZSBkZWJ1ZyBpbmZvCi0tCSAgICAgZmlsZXMuICBUaGlzIGlzIGZpbmUsIGFuZCBzaG91bGQg bm90IGNhdXNlIGEgd2FybmluZy4gIFNoYXJlZAotLQkgICAgIGxpYnJhcmllcyBjb250YWluIGp1 c3QgdGhlIHNlY3Rpb24gIi5nbnUubGlibGlzdCIgYnV0IGl0IGlzIG5vdAotLQkgICAgIG1hcmtl ZCBhcyBsb2FkYWJsZSB0aGVyZS4gICovCi0rCSAgICAgSG93ZXZlciwgdGhlIEVMRiBwcmVsaW5r ZXIgZG9lcyBjcmVhdGUgYSBmZXcgc2VjdGlvbnMgd2hpY2ggYXJlCi0rCSAgICAgbWFya2VkIGlu IHRoZSBtYWluIGV4ZWN1dGFibGUgYXMgbG9hZGFibGUgKHRoZXkgYXJlIGxvYWRlZCBpbgotKwkg ICAgIG1lbW9yeSBmcm9tIHRoZSBEWU5BTUlDIHNlZ21lbnQpIGFuZCB5ZXQgYXJlIG5vdCBwcmVz ZW50IGluCi0rCSAgICAgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlcy4gIFRoaXMgaXMgZmluZSwg YW5kIHNob3VsZCBub3QgY2F1c2UKLSsJICAgICBhIHdhcm5pbmcuICBTaGFyZWQgbGlicmFyaWVz IGNvbnRhaW4ganVzdCB0aGUgc2VjdGlvbgotKwkgICAgICIuZ251LmxpYmxpc3QiIGJ1dCBpdCBp cyBub3QgbWFya2VkIGFzIGxvYWRhYmxlIHRoZXJlLiAgVGhlcmUgaXMKLSsJICAgICBubyBvdGhl ciB3YXkgdG8gaWRlbnRpZnkgdGhlbSB0aGFuIGJ5IHRoZWlyIG5hbWUgYXMgdGhlIHNlY3Rpb25z Ci0rCSAgICAgY3JlYXRlZCBieSBwcmVsaW5rIGhhdmUgbm8gc3BlY2lhbCBmbGFncy4gICovCi0g Ci0gCSAgaWYgKCEoc3RyY21wIChzZWN0X25hbWUsICIuZ251LmxpYmxpc3QiKSA9PSAwCi0tCQl8 fCBzdHJjbXAgKHNlY3RfbmFtZSwgIi5nbnUuY29uZmxpY3QiKSA9PSAwKSkKLSsJCXx8IHN0cmNt cCAoc2VjdF9uYW1lLCAiLmdudS5jb25mbGljdCIpID09IDAKLSsJCXx8IHN0cmNtcCAoc2VjdF9u YW1lLCAiLmR5bmJzcyIpID09IDAKLSsJCXx8IHN0cmNtcCAoc2VjdF9uYW1lLCAiLnNkeW5ic3Mi KSA9PSAwKSkKLSAJICAgIHdhcm5pbmcgKF8oInNlY3Rpb24gJXMgbm90IGZvdW5kIGluICVzIiks IHNlY3RfbmFtZSwKLSAJCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotIAotCi0KLQot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDMvbXNnMDA3OTkuaHRt bAotU3ViamVjdDogW3BhdGNoXSBGaXggc2VwYXJhdGUtZGVidWcgd2l0aCBub24tdW5pcXVlIHNl Y3Rpb24gbmFtZXMgKFBSIDExNDA5KQotCi1BIGRpZmZlcmVudCB2ZXJzaW9uIHdhcyBjaGVja2Vk LWluIGJ1dCB0aGV5IGFyZSBpbnRlcmNoYW5nZWFibGU6Ci0JaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTAtMDMvbXNnMDA3OTkuaHRtbAotCWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMTAtMDMvbXNnMDAyNDEuaHRtbAotCi1IaSwKLQotZ2RiLTcuMSBp cyBub3cgYnJva2VuIGZvciBleGFtcGxlIGZvciBkZWJ1Z2dpbmcgL3Vzci9iaW4vZW1hY3MgZHVl IHRvOgotaHR0cDovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMTQw OQotICBbMjJdIC5kYXRhICAgUFJPR0JJVFMgMDAwMDAwMDAwMDdmZThhMCAxZmU4YTAgMjE1MDY4 IDAwICBXQSAgMCAgIDAgMzIKLSAgWzIzXSAuZGF0YSAgIFBST0dCSVRTIDAwMDAwMDAwMDBhMTM5 MjAgNDEzOTIwIDY4YzZlMCAwMCAgV0EgIDAgICAwIDMyCi0KLUl0IGlzIGluIGZhY3QgYSByZWdy ZXNzaW9uIGFnYWluc3QgZ2RiLTcuMCBieSBtZSBkdWUgdG86Ci0KLWNvbW1pdCA3MWQwMDY5YTlm MjM4YTExZjdmNDU1YmY2YWQyYWRmYzI1NjgzNTIxCi1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBUdWUgSmFuIDUgMTU6NTE6MDEgMjAx MCArMDAwMAotCi1nZGIvCi0gICAgICAgICogc3ltZmlsZS5jIChzeW1zX2Zyb21fb2JqZmlsZSk6 IFJlbW92ZSB0aGUgIU1BSU5MSU5FIGNvbmRpdGlvbmFsLgotCi1hcyB3aGlsZSB0aGUgY29kZSB3 YXMgYnJva2VuIGV2ZW4gYmVmb3JlIHRoZSBicm9rZW4gcmVsb2NhdGlvbiB3YXMgbm90IGFwcGxp ZWQKLXRvIG1haW5saW5lIGJpbmFyeSAoYmVmb3JlIFBJRStPU1ggcGF0Y2hlcyB3ZW50IGluKS4K LQotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTIt bGludXgtZ251LgotCi1PSyB0byBjaGVjay1pbiBhbHNvIGZvciBnZGItNy4xICg3LjEuMSk/Ci0K LQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0wMy0yMyAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBzeW1maWxlLmMgKGFkZHJfaW5mb19tYWtl X3JlbGF0aXZlKTogTW92ZSBzZWN0IGRlY2xhcmF0aW9uIHRvIHRoZQotCW91dGVyIGJsb2NrLiAg SW5pdGlhbGl6ZSBpdCB0byBOVUxMLiAgUHJlZmVyIFNFQ1QtPm5leHQgbW9yZSB0aGFuCi0JYmZk X2dldF9zZWN0aW9uX2J5X25hbWUuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTAzLTIzICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5iYXNlL2R1 cC1zZWN0LmV4cCwgZ2RiLmJhc2UvZHVwLXNlY3QuUzogTmV3LgotCi0tLS0gYS9nZGIvc3ltZmls ZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5jCi1AQCAtNTI5LDYgKzUyOSw3IEBAIGFkZHJfaW5mb19t YWtlX3JlbGF0aXZlIChzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKmFkZHJzLCBiZmQgKmFiZmQp Ci0gICBhc2VjdGlvbiAqbG93ZXJfc2VjdDsKLSAgIENPUkVfQUREUiBsb3dlcl9vZmZzZXQ7Ci0g ICBpbnQgaTsKLSsgIGFzZWN0aW9uICpzZWN0OwotIAotICAgLyogRmluZCBsb3dlc3QgbG9hZGFi bGUgc2VjdGlvbiB0byBiZSB1c2VkIGFzIHN0YXJ0aW5nIHBvaW50IGZvcgotICAgICAgY29udGlu Z3VvdXMgc2VjdGlvbnMuICAqLwotQEAgLTU1MywxMSArNTU0LDIzIEBAIGFkZHJfaW5mb19tYWtl X3JlbGF0aXZlIChzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKmFkZHJzLCBiZmQgKmFiZmQpCi0g ICAgICAodGhlIGxvYWRhYmxlIHNlY3Rpb24gZGlyZWN0bHkgYmVsb3cgaXQgaW4gbWVtb3J5KS4K LSAgICAgIHRoaXNfb2Zmc2V0ID0gbG93ZXJfb2Zmc2V0ID0gbG93ZXJfYWRkciAtIGxvd2VyX29y aWdfYWRkciAqLwotIAotKyAgc2VjdCA9IE5VTEw7Ci0gICBmb3IgKGkgPSAwOyBpIDwgYWRkcnMt Pm51bV9zZWN0aW9ucyAmJiBhZGRycy0+b3RoZXJbaV0ubmFtZTsgaSsrKQotICAgICB7Ci0gICAg ICAgY29uc3QgY2hhciAqc2VjdF9uYW1lID0gYWRkcnMtPm90aGVyW2ldLm5hbWU7Ci0tICAgICAg YXNlY3Rpb24gKnNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgc2VjdF9uYW1l KTsKLSAKLSsgICAgICAvKiBQcmVmZXIgdGhlIG5leHQgc2VjdGlvbiBvZiB0aGF0IHdlIGhhdmUg Zm91bmQgbGFzdC4gIFRoZSBzZXBhcmF0ZQotKwkgZGVidWcgaW5mbyBmaWxlcyBoYXZlIGVpdGhl ciB0aGUgc2FtZSBzZWN0aW9uIGxheW91dCBvciBqdXN0IGEgZmV3Ci0rCSBzZWN0aW9ucyBhcmUg bWlzc2luZyB0aGVyZS4gIE9uIHRoZSBvdGhlciBoYW5kIHRoZSBzZWN0aW9uIG5hbWUgaXMgbm90 Ci0rCSB1bmlxdWUgYW5kIHdlIGNvdWxkIGZpbmQgYW4gaW5hcHByb3ByYWl0ZSBzZWN0aW9uIGJ5 IGl0cyBuYW1lLiAgKi8KLSsKLSsgICAgICBpZiAoc2VjdCkKLSsJc2VjdCA9IHNlY3QtPm5leHQ7 Ci0rICAgICAgaWYgKHNlY3QgJiYgc3RyY21wIChzZWN0X25hbWUsIGJmZF9nZXRfc2VjdGlvbl9u YW1lIChhYmZkLCBzZWN0KSkgIT0gMCkKLSsJc2VjdCA9IE5VTEw7Ci0rCi0rICAgICAgaWYgKHNl Y3QgPT0gTlVMTCkKLSsJc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBzZWN0 X25hbWUpOwotICAgICAgIGlmIChzZWN0KQotIAl7Ci0gCSAgLyogVGhpcyBpcyB0aGUgaW5kZXgg dXNlZCBieSBCRkQuICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2R1cC1zZWN0LlMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KLSsKLSsJLnNlY3Rpb24Jc2VjdDEsICJhIgotK3ZhcjE6CS5ieXRlCTEK LSsKLSsJLnNlY3Rpb24Jc2VjdDIsICJhIgotK3ZhcjI6CS5ieXRlCTIKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZHVwLXNlY3QuZXhwCi1AQCAtMCwwICsxLDc5 IEBACi0rIyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgot KwotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwot KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBpbmFwcHJvcHJpYXRlIG9m ZnNldGluZyBvZiBtdWx0aXBsZSBzZWN0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUuCi0rIyBXaGVu IGtlcHQgaW4gb2JqZWN0IGZpbGUgKGJlZm9yZSBmaW5hbCBleGVjdXRhYmxlIGxpbmspIGl0IHN0 aWxsIHdvcmtzLgotKyMgV2hlbiBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGUgaXMgbm90IHVzZWQg aXQgc3RpbGwgd29ya3MuCi0rIyBXaGVuIHRoZSBFTEYgc3ltYm9sIHRhYmxlIGlzIGtlcHQgaW4g dGhlIG1haW4gYmluYXJ5IGl0IHN0aWxsIHdvcmtzLgotKyMgVXNlZCAuUyBmaWxlIGFzIGluIC5j IGZpbGUgd2Ugd291bGQgbmVlZCBfX2F0dHJpdXRlX18oKHNlY3Rpb24pKSB3aGljaCBpcwotKyMg YSBHQ0MgZXh0ZW5zaW9uLgotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJn ZXRzIHdoaWNoIHN1cHBvcnQgRUxGIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2Ft cGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsg ICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0K LSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dl cnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSBkdXAt c2VjdAotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQgc3JjbWFpbmZpbGUgc3RhcnQu YwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke2V4ZWN1dGFibGV9Ci0rCi0raWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdGZp bGV9LmV4cCAkZXhlY3V0YWJsZSBbbGlzdCAke3NyY2ZpbGV9ICR7c3JjbWFpbmZpbGV9XSB7fV0g PT0gLTF9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCB0ZXN0ICJyZW5hbWUgc2VjdGlv biIKLStzZXQgb2JqY29weV9wcm9ncmFtIFt0cmFuc2Zvcm0gb2JqY29weV0KLStzZXQgcmVzdWx0 IFtjYXRjaCAiZXhlYyAkb2JqY29weV9wcm9ncmFtIC0tcmVuYW1lLXNlY3Rpb24gc2VjdDI9c2Vj dDEgJGJpbmZpbGUiIG91dHB1dF0KLSt2ZXJib3NlICJyZXN1bHQgaXMgJHJlc3VsdCIKLSt2ZXJi b3NlICJvdXRwdXQgaXMgJG91dHB1dCIKLStpZiB7JHJlc3VsdCAhPSAwfSB7Ci0rICAgIGZhaWwg JHRlc3QKLSsgICAgcmV0dXJuCi0rfQotK3Bhc3MgJHRlc3QKLSsKLStzZXQgdGVzdCAic3BsaXQi Ci0raWYge1tnZGJfZ251X3N0cmlwX2RlYnVnICRiaW5maWxlXSAhPSAwfSB7Ci0rICAgIGZhaWwg JHRlc3QKLSt9IGVsc2UgewotKyAgICBwYXNzICR0ZXN0Ci0rfQotKwotKyMgZ2RiX2dudV9zdHJp cF9kZWJ1ZyB1c2VzIG9ubHkgLS1zdHJpcC1kZWJ1ZyBhbmQga2VlcHMgdGhlIEVMRiBzeW1ib2wg dGFibGUKLSsjIGluICRiaW5maWxlLgotK3NldCB0ZXN0ICJzdHJpcCIKLStzZXQgc3RyaXBfcHJv Z3JhbSBbdHJhbnNmb3JtIHN0cmlwXQotK3NldCByZXN1bHQgW2NhdGNoICJleGVjICRzdHJpcF9w cm9ncmFtICRiaW5maWxlIiBvdXRwdXRdCi0rdmVyYm9zZSAicmVzdWx0IGlzICRyZXN1bHQiCi0r dmVyYm9zZSAib3V0cHV0IGlzICRvdXRwdXQiCi0raWYgeyRyZXN1bHQgIT0gMH0gewotKyAgICBm YWlsICR0ZXN0Ci0rICAgIHJldHVybgotK30KLStwYXNzICR0ZXN0Ci0rCi0rY2xlYW5fcmVzdGFy dCAkZXhlY3V0YWJsZQotKwotK2dkYl90ZXN0ICJwL2QgKihjb25zdCBjaGFyICopICZ2YXIxIiAi ID0gMSIgInZhcjEgYWZ0ZXIgc3RyaXAiCi0rZ2RiX3Rlc3QgInAvZCAqKGNvbnN0IGNoYXIgKikg JnZhcjIiICIgPSAyIiAidmFyMiBhZnRlciBzdHJpcCIKLQotCi0KLVtwYXRjaF0gRml4IGJyZWFr cG9pbnQgYXQgKl9zdGFydAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTAtMDQvbXNnMDAwNTkuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx MC0wNC9tc2cwMDAyOS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA0LzA0IDEz OjU0OjQyCTEuMTE1NjgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA0LzA0IDIyOjEyOjA0 CTEuMTE1NjkKLSMjIC0xLDUgKzEsMTAgQEAKLSAyMDEwLTA0LTA0ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCSogaW5mY21kLmMgKHJ1bl9jb21tYW5k XzEpOiBDYWxsIHByb2NlZWQgd2l0aCByZWdjYWNoZV9yZWFkX3BjIGFkZHJlc3MuCi0rCSogY29u ZmlnL2RqZ3BwL2ZuY2hhbmdlLmxzdDogQWRkIHRyYW5zbGF0aW9uIGZvciBicmVhay1lbnRyeS5l eHAuCi0rCi0rMjAxMC0wNC0wNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotKwotIAkqIGJyZWFrcG9pbnQuYyAoYnBzdGF0X2ZpbmRfc3RlcF9yZXN1bWVfYnJl YWtwb2ludCk6IFJlbW92ZS4KLSAJKiBicmVha3BvaW50LmggKGJwc3RhdF9maW5kX3N0ZXBfcmVz dW1lX2JyZWFrcG9pbnQpOiBSZW1vdmUuCi0gCi0tLS0gc3JjL2dkYi9pbmZjbWQuYwkyMDEwLzAz LzI1IDIwOjQ4OjUzCTEuMjYzCi0rKysgc3JjL2dkYi9pbmZjbWQuYwkyMDEwLzA0LzA0IDIyOjEy OjA0CTEuMjY0Ci1AQCAtNTgwLDggKzU4MCw5IEBACi0gICAgICBoYXMgZG9uZSBpdHMgdGhpbmc7 IG5vdyB3ZSBhcmUgc2V0dGluZyB1cCB0aGUgcnVubmluZyBwcm9ncmFtLiAgKi8KLSAgIHBvc3Rf Y3JlYXRlX2luZmVyaW9yICgmY3VycmVudF90YXJnZXQsIDApOwotIAotLSAgLyogU3RhcnQgdGhl IHRhcmdldCBydW5uaW5nLiAgKi8KLS0gIHByb2NlZWQgKChDT1JFX0FERFIpIC0xLCBUQVJHRVRf U0lHTkFMXzAsIDApOwotKyAgLyogU3RhcnQgdGhlIHRhcmdldCBydW5uaW5nLiAgRG8gbm90IHVz ZSAtMSBjb250aW51YXRpb24gYXMgaXQgd291bGQgc2tpcAotKyAgICAgYnJlYWtwb2ludCByaWdo dCBhdCB0aGUgZW50cnkgcG9pbnQuICAqLwotKyAgcHJvY2VlZCAocmVnY2FjaGVfcmVhZF9wYyAo Z2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLCBUQVJHRVRfU0lHTkFMXzAsIDApOwotIAotICAgLyog U2luY2UgdGhlcmUgd2FzIG5vIGVycm9yLCB0aGVyZSdzIG5vIG5lZWQgdG8gZmluaXNoIHRoZSB0 aHJlYWQKLSAgICAgIHN0YXRlcyBoZXJlLiAgKi8KLS0tLSBzcmMvZ2RiL2NvbmZpZy9kamdwcC9m bmNoYW5nZS5sc3QJMjAxMC8wMi8wMSAxOToyNzo1NQkxLjEwOAotKysrIHNyYy9nZGIvY29uZmln L2RqZ3BwL2ZuY2hhbmdlLmxzdAkyMDEwLzA0LzA0IDIyOjEyOjA3CTEuMTA5Ci1AQCAtMzcxLDYg KzM3MSw3IEBACi0gQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wcm9sb2d1ZS5l eHAgQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcHBjLXByb2xvZ3VlLmV4cAotIEBWQC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2JpdGZpZWxkczIuYyBAVkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9iaXRmaWVsMi5jCi0gQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYml0ZmllbGRzMi5leHAg QFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYml0ZmllbDIuZXhwCi0rQFZAL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstZW50cnkuZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy a2VudHJ5LmV4cAotIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVtYWtlcjIuYyBAVkAv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlMm1ha2VyLmMKLSBAVkAvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9oYXNobGluZTEuZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hhc2gxbGlu ZS5leHAKLSBAVkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oYXNobGluZTIuZXhwIEBWQC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2hhc2gybGluZS5leHAKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cJMjAxMC8wNC8wMiAwNToxMzowNwkxLjIyMTgKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cJMjAxMC8wNC8wNCAyMjoxMjowOQkxLjIyMTkKLSMjIC0xLDMgKzEsNyBAQAot KzIwMTAtMDQtMDQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSsKLSsJKiBnZGIuYmFzZS9icmVhay1lbnRyeS5leHA6IE5ldy4KLSsKLSAyMDEwLTA0LTAyICBI dWkgWmh1ICA8dGVhd2F0ZXJAZ21haWwuY29tPgotICAgICAgICAgICAgIE1pY2hhZWwgU255ZGVy IDxtc255ZGVyQHZtd2FyZS5jb20+Ci0gCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstZW50cnkuZXhwCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZW50 cnkuZXhwCTIwMTAtMDQtMDUgMjA6MTc6MzkuMjM0Njg0MDAwICswMDAwCi1AQCAtMCwwICsxLDQz IEBACi0rIyBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBpbmZlcmlvciBj YW4gc3RvcCBhdCBpdHMgdmVyeSBmaXJzdCBpbnN0cnVjdGlvbiwgdXN1YWxseSAiX3N0YXJ0Ii4K LSsjIER5bmFtaWMgZXhlY3V0YWJsZXMgaGF2ZSBmaXJzdCBpbnN0cnVjdGlvbiBpbiBsZC5zby4K LSsKLStzZXQgdGVzdGZpbGUgYnJlYWstZW50cnkKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBzdGFydC5jIHthZGRpdGlvbmFsX2ZsYWdzPS1z dGF0aWN9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCB0ZXN0ICJpbmZvIGZpbGVz IgotK3NldCBlbnRyeSAiIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAg LXJlICJcclxuXFtcdCBcXSpFbnRyeSBwb2ludDpcW1x0IFxdKigweFxbMC05YS1mXF0rKVxyXG4u KiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0IGVudHJ5ICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlw YXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0raWYgeyRlbnRyeSA9PSAiIn0gewotKyAgICB1bnRlc3Rl ZCAke3Rlc3RmaWxlfS5leHAKLSsgICAgcmV0dXJuCi0rfQotKwotK2lmICFbcnVudG8gIiokZW50 cnkiXSB7Ci0rICAgIHJldHVybgotK30KLStnZGJfdGVzdCB7cC94ICRwY30gIiA9ICRlbnRyeSIK LSsKLStnZGJfYnJlYWtwb2ludCAibWFpbiIKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi bWFpbiIgIm1haW4uKiIKLQotCi0KLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1 Zy5jZ2k/aWQ9NTkwNjQ4Ci1SZTogW3JmY10gV29yayBhcm91bmQgaW52YWxpZCBHKysgRFdBUkYg Zm9yIHVubmFtZWQgYWdncmVnYXRlcwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTAtMDMvbXNnMDA5MDkuaHRtbAotY29tbWl0IDVlNDBhZjE5NWJkNzRhNjZkMzAwZDhm NDgxY2FiMWYyYmE1MzNmM2EKLQotWyBjdXQgb25seSBhIHBhcnQgb2YgaXQgXQotCi0tLS0gYS9n ZGIvY29tcGxldGVyLmMKLSsrKyBiL2dkYi9jb21wbGV0ZXIuYwotQEAgLTQwMSw3ICs0MDEsNyBA QCBhZGRfc3RydWN0X2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIGludCAqbmV4dHAsIGNoYXIg KipvdXRwdXQsCi0gCSAgICAgIGNvbXB1dGVkX3R5cGVfbmFtZSA9IDE7Ci0gCSAgICB9Ci0gCSAg LyogT21pdCBjb25zdHJ1Y3RvcnMgZnJvbSB0aGUgY29tcGxldGlvbiBsaXN0LiAgKi8KLS0JICBp ZiAodHlwZV9uYW1lICYmIHN0cmNtcCAodHlwZV9uYW1lLCBuYW1lKSkKLSsJICBpZiAoIXR5cGVf bmFtZSB8fCBzdHJjbXAgKHR5cGVfbmFtZSwgbmFtZSkpCi0gCSAgICB7Ci0gCSAgICAgIG91dHB1 dFsqbmV4dHBdID0geHN0cmR1cCAobmFtZSk7Ci0gCSAgICAgICsrKm5leHRwOwotCi0KLQotaHR0 cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD01NzgxMzYKLWh0dHBzOi8v YnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTkzOTI2Ci1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wNC9tc2cwMDgyMC5odG1sCi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA0L21zZzAwMjQwLmh0bWwKLQotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTAvMDQvMjMgMTg6MDk6MTYJMS4xMTY3OAotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTAvMDQvMjMgMjE6NDQ6MTkJMS4xMTY3OQotIyMgLTEsMyArMSwxNCBAQAotKzIw MTAtMDQtMjMgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0rCSAg ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotKwkgICAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlGaXggZGVhZGxvY2sg b24gbG9vcGVkIGxpc3Qgb2YgbG9hZGVkIHNoYXJlZCBvYmplY3RzLgotKwkqIHNvbGliLXN2cjQu YyAoTE1fUFJFVik6IE5ldyBmdW5jdGlvbi4KLSsJKElHTk9SRV9GSVJTVF9MSU5LX01BUF9FTlRS WSk6IFVzZSBpdC4KLSsJKHN2cjRfY3VycmVudF9zb3MpOiBDaGVjayBmb3IgY29ycmVjdCBsX3By ZXYuICBOZXcgdmFyaWFibGVzIHByZXZfbG0KLSsJYW5kIG5leHRfbG0uICBDbGVhciBwcmV2X2xt IGZvciBzb2xpYl9zdnI0X3JfbGRzb21hcC4KLSsJKiBjb25maWcvZGpncHAvZm5jaGFuZ2UubHN0 OiBBZGQgdHJhbnNsYXRpb24gZm9yIHNvbGliLWNvcnJ1cHRlZC5leHAuCi0rCi0gMjAxMC0wNC0y MyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgotIAotIAkqIGNvbmZpZ3VyZS5hYyAoQ09O RklHX1NSQ1MpOiBBZGQgcHktYXV0by1sb2FkLm8gZXZlbiBpZiBub3QgdXNpbmcKLS0tLSBzcmMv Z2RiL3NvbGliLXN2cjQuYwkyMDEwLzAzLzExIDIyOjA3OjAyCTEuMTMwCi0rKysgc3JjL2dkYi9z b2xpYi1zdnI0LmMJMjAxMC8wNC8yMyAyMTo0NDoxOQkxLjEzMQotQEAgLTI3Miw2ICsyNzIsMTYg QEAKLSB9Ci0gCi0gc3RhdGljIENPUkVfQUREUgotK0xNX1BSRVYgKHN0cnVjdCBzb19saXN0ICpz bykKLSt7Ci0rICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5r X21hcF9vZmZzZXRzICgpOwotKyAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBl ICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Ci0rCi0rICByZXR1cm4gZXh0cmFj dF90eXBlZF9hZGRyZXNzIChzby0+bG1faW5mby0+bG0gKyBsbW8tPmxfcHJldl9vZmZzZXQsCi0r CQkJCXB0cl90eXBlKTsKLSt9Ci0rCi0rc3RhdGljIENPUkVfQUREUgotIExNX05BTUUgKHN0cnVj dCBzb19saXN0ICpzbykKLSB7Ci0gICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3Zy NF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICgpOwotQEAgLTI4NCwxNiArMjk0LDEyIEBACi0gc3Rh dGljIGludAotIElHTk9SRV9GSVJTVF9MSU5LX01BUF9FTlRSWSAoc3RydWN0IHNvX2xpc3QgKnNv KQotIHsKLS0gIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpsbW8gPSBzdnI0X2ZldGNoX2xpbmtf bWFwX29mZnNldHMgKCk7Ci0tICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUg KHRhcmdldF9nZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLS0KLSAgIC8qIEFzc3VtZSB0aGF0 IGV2ZXJ5dGhpbmcgaXMgYSBsaWJyYXJ5IGlmIHRoZSBkeW5hbWljIGxvYWRlciB3YXMgbG9hZGVk Ci0gICAgICBsYXRlIGJ5IGEgc3RhdGljIGV4ZWN1dGFibGUuICAqLwotICAgaWYgKGV4ZWNfYmZk ICYmIGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChleGVjX2JmZCwgIi5keW5hbWljIikgPT0gTlVM TCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICByZXR1cm4gZXh0cmFjdF90eXBlZF9hZGRyZXNzIChz by0+bG1faW5mby0+bG0gKyBsbW8tPmxfcHJldl9vZmZzZXQsCi0tCQkJCXB0cl90eXBlKSA9PSAw OwotKyAgcmV0dXJuIExNX1BSRVYgKHNvKSA9PSAwOwotIH0KLSAKLSAvKiBQZXIgcHNwYWNlIFNW UjQgc3BlY2lmaWMgZGF0YS4gICovCi1AQCAtMTEwMSw3ICsxMTA3LDcgQEAKLSBzdGF0aWMgc3Ry dWN0IHNvX2xpc3QgKgotIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gewotLSAgQ09SRV9BRERS IGxtOwotKyAgQ09SRV9BRERSIGxtLCBwcmV2X2xtOwotICAgc3RydWN0IHNvX2xpc3QgKmhlYWQg PSAwOwotICAgc3RydWN0IHNvX2xpc3QgKipsaW5rX3B0ciA9ICZoZWFkOwotICAgQ09SRV9BRERS IGxkc29tYXAgPSAwOwotQEAgLTExMjAsNiArMTEyNiw3IEBACi0gCi0gICAvKiBXYWxrIHRoZSBp bmZlcmlvcidzIGxpbmsgbWFwIGxpc3QsIGFuZCBidWlsZCBvdXIgbGlzdCBvZgotICAgICAgYHN0 cnVjdCBzb19saXN0JyBub2Rlcy4gICovCi0rICBwcmV2X2xtID0gMDsKLSAgIGxtID0gc29saWJf c3ZyNF9yX21hcCAoaW5mbyk7Ci0gCi0gICB3aGlsZSAobG0pCi1AQCAtMTEyNyw2ICsxMTM0LDcg QEAKLSAgICAgICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5r X21hcF9vZmZzZXRzICgpOwotICAgICAgIHN0cnVjdCBzb19saXN0ICpuZXcgPSBYWkFMTE9DIChz dHJ1Y3Qgc29fbGlzdCk7Ci0gICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IG1ha2Vf Y2xlYW51cCAoeGZyZWUsIG5ldyk7Ci0rICAgICAgQ09SRV9BRERSIG5leHRfbG07Ci0gCi0gICAg ICAgbmV3LT5sbV9pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG1faW5mbykpOwotICAg ICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5ldy0+bG1faW5mbyk7Ci1AQCAtMTEzOCwxNCArMTE0 NiwyMSBAQAotIAotICAgICAgIHJlYWRfbWVtb3J5IChsbSwgbmV3LT5sbV9pbmZvLT5sbSwgbG1v LT5saW5rX21hcF9zaXplKTsKLSAKLS0gICAgICBsbSA9IExNX05FWFQgKG5ldyk7Ci0rICAgICAg bmV4dF9sbSA9IExNX05FWFQgKG5ldyk7Ci0rCi0rICAgICAgaWYgKExNX1BSRVYgKG5ldykgIT0g cHJldl9sbSkKLSsJewotKwkgIHdhcm5pbmcgKF8oIkNvcnJ1cHRlZCBzaGFyZWQgbGlicmFyeSBs aXN0IikpOwotKwkgIGZyZWVfc28gKG5ldyk7Ci0rCSAgbmV4dF9sbSA9IDA7Ci0rCX0KLSAKLSAg ICAgICAvKiBGb3IgU1ZSNCB2ZXJzaW9ucywgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBsaW5rIG1h cCBpcyBmb3IgdGhlCi0gICAgICAgICAgaW5mZXJpb3IgZXhlY3V0YWJsZSwgc28gd2UgbXVzdCBp Z25vcmUgaXQuICBGb3Igc29tZSB2ZXJzaW9ucyBvZgotICAgICAgICAgIFNWUjQsIGl0IGhhcyBu byBuYW1lLiAgRm9yIG90aGVycyAoU29sYXJpcyAyLjMgZm9yIGV4YW1wbGUpLCBpdAotICAgICAg ICAgIGRvZXMgaGF2ZSBhIG5hbWUsIHNvIHdlIGNhbiBubyBsb25nZXIgdXNlIGEgbWlzc2luZyBu YW1lIHRvCi0gICAgICAgICAgZGVjaWRlIHdoZW4gdG8gaWdub3JlIGl0LiAqLwotLSAgICAgIGlm IChJR05PUkVfRklSU1RfTElOS19NQVBfRU5UUlkgKG5ldykgJiYgbGRzb21hcCA9PSAwKQotKyAg ICAgIGVsc2UgaWYgKElHTk9SRV9GSVJTVF9MSU5LX01BUF9FTlRSWSAobmV3KSAmJiBsZHNvbWFw ID09IDApCi0gCXsKLSAJICBpbmZvLT5tYWluX2xtX2FkZHIgPSBuZXctPmxtX2luZm8tPmxtX2Fk ZHI7Ci0gCSAgZnJlZV9zbyAobmV3KTsKLUBAIC0xMTgyLDEyICsxMTk3LDE4IEBACi0gCSAgICB9 Ci0gCX0KLSAKLSsgICAgICBwcmV2X2xtID0gbG07Ci0rICAgICAgbG0gPSBuZXh0X2xtOwotKwot ICAgICAgIC8qIE9uIFNvbGFyaXMsIHRoZSBkeW5hbWljIGxpbmtlciBpcyBub3QgaW4gdGhlIG5v cm1hbCBsaXN0IG9mCi0gCSBzaGFyZWQgb2JqZWN0cywgc28gbWFrZSBzdXJlIHdlIHBpY2sgaXQg dXAgdG9vLiAgSGF2aW5nCi0gCSBzeW1ib2wgaW5mb3JtYXRpb24gZm9yIHRoZSBkeW5hbWljIGxp bmtlciBpcyBxdWl0ZSBjcnVjaWFsCi0gCSBmb3Igc2tpcHBpbmcgZHluYW1pYyBsaW5rZXIgcmVz b2x2ZXIgY29kZS4gICovCi0gICAgICAgaWYgKGxtID09IDAgJiYgbGRzb21hcCA9PSAwKQotLQls bSA9IGxkc29tYXAgPSBzb2xpYl9zdnI0X3JfbGRzb21hcCAoaW5mbyk7Ci0rCXsKLSsJICBsbSA9 IGxkc29tYXAgPSBzb2xpYl9zdnI0X3JfbGRzb21hcCAoaW5mbyk7Ci0rCSAgcHJldl9sbSA9IDA7 Ci0rCX0KLSAKLSAgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgICB9Ci0t LS0gc3JjL2dkYi9jb25maWcvZGpncHAvZm5jaGFuZ2UubHN0CTIwMTAvMDQvMDkgMTU6MTU6MDUJ MS4xMTIKLSsrKyBzcmMvZ2RiL2NvbmZpZy9kamdwcC9mbmNoYW5nZS5sc3QJMjAxMC8wNC8yMyAy MTo0NDoxOQkxLjExMwotQEAgLTM5Nyw2ICszOTcsNyBAQAotIEBWQC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3NpZ2luZm8tb2JqLmMgQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2ktb2JqLmMK LSBAVkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdpbmZvLWFkZHIuZXhwIEBWQC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NpLWFkZHIuZXhwCi0gQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c2lnaW5mby1vYmouZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpLW9iai5leHAKLStA VkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1jb3JydXB0ZWQuZXhwIEBWQC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3NvLWNycHRkLmV4cAotIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3NvbGliLWRpc2MuYyBAVkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zby1kaXNjLmMKLSBAVkAv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zb2xpYi1kaXNwbGF5LWxpYi5jIEBWQC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3NvLWRpc3BsaWIuYwotIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Nv bGliLWRpc3BsYXktbWFpbi5jIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvLWRpc3BtYWlu LmMKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNC8yMyAxODowMzozMQkx LjIyNTIKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNC8yMyAyMTo0NDoy MAkxLjIyNTMKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTAtMDQtMjMgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IGRlYWRsb2NrIG9uIGxvb3BlZCBs aXN0IG9mIGxvYWRlZCBzaGFyZWQgb2JqZWN0cy4KLSsJKiBnZGIuYmFzZS9zb2xpYi1jb3JydXB0 ZWQuZXhwOiBOZXcuCi0rCi0gMjAxMC0wNC0yMyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29t PgotIAotIAkqIGdkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuYzogTmV3IGZpbGUuCi0tLS0g c3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItY29ycnVwdGVkLmV4cAotKysrIHNyYy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMC0wNS0yNCAxODow MDo1Mi4wNTc5OTUwMDAgKzAwMDAKLUBAIC0wLDAgKzEsNDYgQEAKLSsjIENvcHlyaWdodCAyMDEw IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgInNvbGliLWNvcnJ1cHRlZCIKLStzZXQgc3JjZmls ZSBzdGFydC5jCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAg JHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4 cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIGZhaWwg IkNhbid0IHJ1biB0byBtYWluIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rZ2RiX3Rlc3QgImluZm8g c2hhcmVkbGlicmFyeSIgIiIgIm5vcm1hbCBsaXN0IgotKwotKyMgR0RCIGNoZWNrcyB0aGVyZSBm b3IgbWF0Y2hpbmcgTF9QUkVWLgotK3NldCB0ZXN0ICJtYWtlIHNvbGlicyBsb29waW5nIgotK2dk Yl90ZXN0X211bHRpcGxlICJwL3ggX3JfZGVidWctPnJfbWFwLT5sX25leHQgPSBfcl9kZWJ1Zy0+ cl9tYXAiICR0ZXN0IHsKLSsgICAgLXJlICIoTm8gc3ltYm9sIFwiX3JfZGVidWdcIiBpbiBjdXJy ZW50IGNvbnRleHRcXC58QXR0ZW1wdCB0byBleHRyYWN0IGEgY29tcG9uZW50IG9mIGEgdmFsdWUg dGhhdCBpcyBub3QgYSBzdHJ1Y3R1cmUgcG9pbnRlclxcLilcclxuJGdkYl9wcm9tcHQgJCIgewot KwkjIGdsaWJjIGRlYnVnIGluZm8gaXMgbm90IGF2YWlsYWJsZSBhbmQgaXQgaXMgdG9vIGRpZmZp Y3VsdCB0byBmaW5kIGFuZAotKwkjIHBhcnNlIGl0IGZyb20gdGhpcyB0ZXN0Y2FzZSB3aXRob3V0 IHRoZSBnZGIgc3VwcG9ydGluZyBmdW5jdGlvbnMuCi0rCXZlcmJvc2UgLWxvZyAibm8gX3JfZGVi dWcgc3ltYm9sIGhhcyBiZWVuIGZvdW5kIgotKwl4ZmFpbCAkdGVzdAotKwl1bnRlc3RlZCAke3Rl c3RmaWxlfS5leHAKLSsJcmV0dXJuCi0rICAgIH0KLSsgICAgLXJlICIgPSAweFxbMC05YS1mXF0r XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0 ICJpbmZvIHNoYXJlZGxpYnJhcnkiICJ3YXJuaW5nOiBDb3JydXB0ZWQgc2hhcmVkIGxpYnJhcnkg bGlzdFxyXG4uKiIgImNvcnJ1cHRlZCBsaXN0IgotCi0KLQotUmU6IFtwYXRjaF0gRml4IGNyYXNo IG9uIC9wcm9jL1BJRC9zdGF0IHJhY2UKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEwLTA1L21zZzAwNjg1Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTAtMDUvbXNnMDAyNDQuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8w NS8yOCAxODowMDo0MQkxLjExODU1Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNS8yOCAx ODoyMzoxMwkxLjExODU2Ci0jIyAtMSw1ICsxLDEwIEBACi0gMjAxMC0wNS0yOCAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwkqIGxpbnV4LW5hdC5jIChs aW51eF9uYXRfY29yZV9vZl90aHJlYWRfMSk6IEZpeCBjcmFzaCBvbiBpbnZhbGlkCi0rCUNPTlRF TlQuCi0rCi0rMjAxMC0wNS0yOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotKwotIAkqIGxpbnV4LW5hdC5jIChsaW51eF9uYXRfd2FpdF8xKTogRG8gbm90IGNh bGwKLSAJbGludXhfbmF0X2NvcmVfb2ZfdGhyZWFkXzEgb24gVEFSR0VUX1dBSVRLSU5EX0VYSVRF RCBvcgotIAlUQVJHRVRfV0FJVEtJTkRfU0lHTkFMTEVELgotLS0tIHNyYy9nZGIvbGludXgtbmF0 LmMJMjAxMC8wNS8yOCAxODowMDo0NgkxLjE2OQotKysrIHNyYy9nZGIvbGludXgtbmF0LmMJMjAx MC8wNS8yOCAxODoyMzoxNQkxLjE3MAotQEAgLTU1MDksMTUgKzU1MDksMjEgQEAKLSAgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIGNvbnRlbnQpOwotIAotICAgcCA9IHN0cmNociAoY29udGVudCwgJygn KTsKLS0gIHAgPSBzdHJjaHIgKHAsICcpJykgKyAyOyAvKiBza2lwICIpIiBhbmQgYSB3aGl0ZXNw YWNlLiAqLwotKwotKyAgLyogU2tpcCAiKSIuICAqLwotKyAgaWYgKHAgIT0gTlVMTCkKLSsgICAg cCA9IHN0cmNociAocCwgJyknKTsKLSsgIGlmIChwICE9IE5VTEwpCi0rICAgIHArKzsKLSAKLSAg IC8qIElmIHRoZSBmaXJzdCBmaWVsZCBhZnRlciBwcm9ncmFtIG5hbWUgaGFzIGluZGV4IDAsIHRo ZW4gY29yZSBudW1iZXIgaXMKLSAgICAgIHRoZSBmaWVsZCB3aXRoIGluZGV4IDM2LiAgVGhlcmUn cyBubyBjb25zdGFudCBmb3IgdGhhdCBhbnl3aGVyZS4gICovCi0tICBwID0gc3RydG9rX3IgKHAs ICIgIiwgJnRzKTsKLS0gIGZvciAoaSA9IDA7IGkgIT0gMzY7ICsraSkKLSsgIGlmIChwICE9IE5V TEwpCi0rICAgIHAgPSBzdHJ0b2tfciAocCwgIiAiLCAmdHMpOwotKyAgZm9yIChpID0gMDsgcCAh PSBOVUxMICYmIGkgIT0gMzY7ICsraSkKLSAgICAgcCA9IHN0cnRva19yIChOVUxMLCAiICIsICZ0 cyk7Ci0gCi0tICBpZiAoc3NjYW5mIChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSsgIGlmIChwID09 IE5VTEwgfHwgc3NjYW5mIChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSAgICAgY29yZSA9IC0xOwot IAotICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5n ZUxvZwkyMDEwLzA1LzI2IDIyOjQwOjIyCTEuMzg2Ci0jIyMgc3JjL2dkYi9nZGJzZXJ2ZXIvQ2hh bmdlTG9nCTIwMTAvMDUvMjggMTg6MjM6MTUJMS4zODcKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTAt MDUtMjggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJ KiBsaW51eC1sb3cuYyAobGludXhfY29yZV9vZl90aHJlYWQpOiBGaXggY3Jhc2ggb24gaW52YWxp ZCBDT05URU5ULgotKwlOZXcgY29tbWVudC4KLSsKLSAyMDEwLTA1LTI2ICBPemthbiBTZXplciAg PHNlemVyb3pAZ21haWwuY29tPgotIAotIAkqIGdkYnJlcGxheS5jIChyZW1vdGVfb3Blbik6IENo ZWNrIGVycm9yIHJldHVybiBmcm9tIHNvY2tldCgpIGNhbGwgYnkKLS0tLSBzcmMvZ2RiL2dkYnNl cnZlci9saW51eC1sb3cuYwkyMDEwLzA1LzAzIDA0OjAyOjIwCTEuMTQ4Ci0rKysgc3JjL2dkYi9n ZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMC8wNS8yOCAxODoyMzoxNQkxLjE0OQotQEAgLTQzNDYs MTMgKzQzNDYsMjEgQEAKLSAgICAgfQotIAotICAgcCA9IHN0cmNociAoY29udGVudCwgJygnKTsK LS0gIHAgPSBzdHJjaHIgKHAsICcpJykgKyAyOyAvKiBza2lwICIpIiBhbmQgYSB3aGl0ZXNwYWNl LiAqLwotIAotLSAgcCA9IHN0cnRva19yIChwLCAiICIsICZ0cyk7Ci0tICBmb3IgKGkgPSAwOyBp ICE9IDM2OyArK2kpCi0rICAvKiBTa2lwICIpIi4gICovCi0rICBpZiAocCAhPSBOVUxMKQotKyAg ICBwID0gc3RyY2hyIChwLCAnKScpOwotKyAgaWYgKHAgIT0gTlVMTCkKLSsgICAgcCsrOwotKwot KyAgLyogSWYgdGhlIGZpcnN0IGZpZWxkIGFmdGVyIHByb2dyYW0gbmFtZSBoYXMgaW5kZXggMCwg dGhlbiBjb3JlIG51bWJlciBpcwotKyAgICAgdGhlIGZpZWxkIHdpdGggaW5kZXggMzYuICBUaGVy ZSdzIG5vIGNvbnN0YW50IGZvciB0aGF0IGFueXdoZXJlLiAgKi8KLSsgIGlmIChwICE9IE5VTEwp Ci0rICAgIHAgPSBzdHJ0b2tfciAocCwgIiAiLCAmdHMpOwotKyAgZm9yIChpID0gMDsgcCAhPSBO VUxMICYmIGkgIT0gMzY7ICsraSkKLSAgICAgcCA9IHN0cnRva19yIChOVUxMLCAiICIsICZ0cyk7 Ci0gCi0tICBpZiAoc3NjYW5mIChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSsgIGlmIChwID09IE5V TEwgfHwgc3NjYW5mIChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSAgICAgY29yZSA9IC0xOwotIAot ICAgZnJlZSAoY29udGVudCk7Ci0KLQotCi1SZTogW3BhdGNoXSB0ZXN0c3VpdGU6IHdhdGNodGhy ZWFkcy1yZW9yZGVyOiBMaW51eCBrZXJuZWwgY29tcGF0LgotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTAtMDUvbXNnMDA2OTYuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMC0wNS9tc2cwMDI1NS5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3Rz dWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNS8yOCAyMzo0Nzo0MAkxLjIyOTMKLSMjIyBzcmMvZ2RiL3Rl c3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNS8zMSAwMzozMToxNgkxLjIyOTQKLSMjIC0xLDMgKzEs MTEgQEAKLSsyMDEwLTA1LTMxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0rCi0rCUFjY2VwdCB0aGUgbmV3IExpbnV4IGtlcm5lbCAidCAodHJhY2luZyBzdG9w KSIgc3RyaW5nLgotKwkqIGdkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmMgKHRocmVh ZDFfZnVuYywgdGhyZWFkMl9mdW5jKToKLSsJVXBkYXRlIGNvbW1lbnQuCi0rCShzdGF0ZV93YWl0 KSA8VCAodHJhY2luZyBzdG9wKT46IE5ldy4KLSsJKG1haW4pOiBVcGRhdGUgdGhlIHN0YXRlX3dh aXQgZXhwZWN0IHN0cmluZy4KLSsKLSAyMDEwLTA1LTI4ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNv ZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogbGltaXRzLmMsIGxpbWl0cy5leHA6IERlbGV0ZSBmaWxl cy4KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRl ci5jCTIwMTAvMDEvMjAgMjE6MDk6MzAJMS4zCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYwkyMDEwLzA1LzMxIDAzOjMxOjE3CTEuNAotQEAg LTk5LDcgKzk5LDcgQEAKLSAKLSAgIHJ3YXRjaF9zdG9yZSA9IHRocmVhZDFfcndhdGNoOwotIAot LSAgLyogQmUgc3VyZSB0aGUgIlQgKHRyYWNpbmcgc3RvcCkiIHRlc3QgY2FuIHByb2NlZWQgZm9y IGJvdGggdGhyZWFkcy4gICovCi0rICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIg dGVzdCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSAgIHRpbWVkX211dGV4X2xv Y2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotICAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVy bWluYXRlX211dGV4KTsKLSAgIGFzc2VydCAoaSA9PSAwKTsKLUBAIC0xMjUsNyArMTI1LDcgQEAK LSAKLSAgIHJ3YXRjaF9zdG9yZSA9IHRocmVhZDJfcndhdGNoOwotIAotLSAgLyogQmUgc3VyZSB0 aGUgIlQgKHRyYWNpbmcgc3RvcCkiIHRlc3QgY2FuIHByb2NlZWQgZm9yIGJvdGggdGhyZWFkcy4g ICovCi0rICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2Vl ZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSAgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVf bXV0ZXgpOwotICAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsK LSAgIGFzc2VydCAoaSA9PSAwKTsKLUBAIC0yMTEsNiArMjExLDEzIEBACi0gICBkbwotICAgICB7 Ci0gICAgICAgc3RhdGUgPSBwcm9jX3N0cmluZyAoZmlsZW5hbWUsICJTdGF0ZTpcdCIpOwotKwot KyAgICAgIC8qIHRvcnZhbGRzL2xpbnV4LTIuNi5naXQgNDY0NzYzY2YxYzZkZjYzMmRjY2M4ZjJm NGM3ZTUwMTYzMTU0YTJjMAotKwkgaGFzIGNoYW5nZWQgIlQgKHRyYWNpbmcgc3RvcCkiIHRvICJ0 ICh0cmFjaW5nIHN0b3ApIi4gIE1ha2UgdGhlIEdEQgotKwkgdGVzdGNhc2UgYmFja3dhcmQgY29t cGF0aWJsZSB3aXRoIG9sZGVyIExpbnV4IGtlcm5lbHMuICAqLwotKyAgICAgIGlmIChzdHJjbXAg KHN0YXRlLCAiVCAodHJhY2luZyBzdG9wKSIpID09IDApCi0rCXN0YXRlID0gInQgKHRyYWNpbmcg c3RvcCkiOwotKwotICAgICAgIGlmIChzdHJjbXAgKHN0YXRlLCB3YW50ZWQpID09IDApCi0gCXsK LSAJICBmcmVlIChmaWxlbmFtZSk7Ci1AQCAtMzM2LDkgKzM0Myw5IEBACi0gICAgIHsKLSAgICAg ICAvKiBzMzkweC11bmtub3duLWxpbnV4LWdudSB3aWxsIGZhaWwgd2l0aCAiUiAocnVubmluZyki LiAgKi8KLSAKLS0gICAgICBzdGF0ZV93YWl0ICh0aHJlYWQxX3RpZCwgIlQgKHRyYWNpbmcgc3Rv cCkiKTsKLSsgICAgICBzdGF0ZV93YWl0ICh0aHJlYWQxX3RpZCwgInQgKHRyYWNpbmcgc3RvcCki KTsKLSAKLS0gICAgICBzdGF0ZV93YWl0ICh0aHJlYWQyX3RpZCwgIlQgKHRyYWNpbmcgc3RvcCki KTsKLSsgICAgICBzdGF0ZV93YWl0ICh0aHJlYWQyX3RpZCwgInQgKHRyYWNpbmcgc3RvcCkiKTsK LSAgICAgfQotIAotICAgY2xlYW51cCAoKTsKCmRpZmYgLS1naXQgYS9nZGItdXNpbmctZGlyZWN0 aXZlLWxlYWsucGF0Y2ggYi9nZGItdXNpbmctZGlyZWN0aXZlLWxlYWsucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZmFhOTEuLjAwMDAwMDAKLS0tIGEvZ2RiLXVzaW5nLWRp cmVjdGl2ZS1sZWFrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLUZTRiBH REIgdmFyaWFudCBpcyBhdDoKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEwLTAzL21zZzAwNzg5Lmh0bWwKLQotY29tbWl0IDU2YjQ1ZjQ5NGY2NDczNjBmOWQ2ZmY4NGYx MmY1OWMwOGNiZTA1YWYKLUF1dGhvcjogU2FtaSBXYWdpYWFsbGEgPHN3YWdpYWFsQHJlZGhhdC5j b20+Ci1EYXRlOiAgIE1vbiBNYXIgMjkgMTY6MDg6NTggMjAxMCAtMDQwMAotCi0gICAgRml4IHVz aW5nX2RpcmVjdGl2ZSBtZW1vcnkgbGVhay4KLQotZGlmZiAtLWdpdCBhL2dkYi9idWlsZHN5bS5j IGIvZ2RiL2J1aWxkc3ltLmMKLWluZGV4IGZmMmM5YjEuLjM1ZTQ2NjMgMTAwNjQ0Ci0tLS0gYS9n ZGIvYnVpbGRzeW0uYwotKysrIGIvZ2RiL2J1aWxkc3ltLmMKLUBAIC0zODcsNiArMzg3LDcgQEAg ZmluaXNoX2Jsb2NrIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBwZW5kaW5nICoqbGlz dGhlYWQsCi0gICAgIH0KLSAKLSAgIGJsb2NrX3NldF91c2luZyAoYmxvY2ssIHVzaW5nX2RpcmVj dGl2ZXMsICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2spOwotKyAgdXNpbmdfZGlyZWN0aXZlcyA9 IE5VTEw7Ci0gCi0gICByZWNvcmRfcGVuZGluZ19ibG9jayAob2JqZmlsZSwgYmxvY2ssIG9wYmxv Y2spOwotIAotZGlmZiAtLWdpdCBhL2dkYi9jcC1uYW1lc3BhY2UuYyBiL2dkYi9jcC1uYW1lc3Bh Y2UuYwotaW5kZXggNjMyNWVhZC4uYzZkZjkxZiAxMDA2NDQKLS0tLSBhL2dkYi9jcC1uYW1lc3Bh Y2UuYwotKysrIGIvZ2RiL2NwLW5hbWVzcGFjZS5jCi1AQCAtMTIwLDcgKzEyMCw4IEBAIGNwX3Nj YW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wp Ci0gCQkgYW5vbnltb3VzIG5hbWVzcGFjZS4gIFNvIGFkZCBzeW1ib2xzIGluIGl0IHRvIHRoZQot IAkJIG5hbWVzcGFjZSBnaXZlbiBieSB0aGUgcHJldmlvdXMgY29tcG9uZW50IGlmIHRoZXJlIGlz Ci0gCQkgb25lLCBvciB0byB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBpZiB0aGVyZSBpc24ndC4gICov Ci0tCSAgICAgIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGRlc3QsIHNyYywgTlVMTCwgIiIsIDAp OwotKwkgICAgICBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChkZXN0LCBzcmMsIE5VTEwsICIiLCAw LAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1lNQk9MX1NZTVRBQiAoc3ltYm9s KS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKLSAJICAgIH0KLSAJICAvKiBUaGUgIisgMiIg aXMgZm9yIHRoZSAiOjoiLiAgKi8KLSAJICBwcmV2aW91c19jb21wb25lbnQgPSBuZXh0X2NvbXBv bmVudCArIDI7Ci1AQCAtMTMyLDExICsxMzMsMTcgQEAgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25h bWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCkKLSB9Ci0gCi0gLyogQWRkIGEg dXNpbmcgZGlyZWN0aXZlIHRvIHVzaW5nX2xpc3QuIElmIHRoZSB1c2luZyBkaXJlY3RpdmUgaW4g cXVlc3Rpb24KLS0gICBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLCBkb24ndCBhZGQgaXQgdHdpY2Uu ICAqLwotKyAgIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQsIGRvbid0IGFkZCBpdCB0d2ljZS4KLSsg ICBDcmVhdGUgYSBuZXcgc3RydWN0IHVzaW5nX2RpcmVjdCB3aGljaCBpbXBvcnRzIHRoZSBuYW1l c3BhY2UgU1JDIGludG8gdGhlCi0rICAgc2NvcGUgREVTVC4gIEFMSUFTIGlzIHRoZSBuYW1lIG9m IHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UgaW4gdGhlIGN1cnJlbnQKLSsgICBzY29wZS4gIElmIEFM SUFTIGlzIE5VTEwgdGhlbiB0aGUgbmFtZXNwYWNlIGlzIGtub3duIGJ5IGl0cyBvcmlnaW5hbCBu YW1lLgotKyAgIFRoZSBhcmd1bWVudHMgYXJlIGNvcGllZCBpbnRvIG5ld2x5IGFsbG9jYXRlZCBt ZW1vcnkgc28gdGhleSBjYW4gYmUKLSsgICB0ZW1wb3Jhcmllcy4gICovCi0gCi0gdm9pZAotIGNw X2FkZF91c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywg Y29uc3QgY2hhciAqYWxpYXMsCi0tCQkJY29uc3QgY2hhciAqZGVjbGFyYXRpb24sIGNvbnN0IGlu dCBsaW5lX251bWJlcikKLSsJCQljb25zdCBjaGFyICpkZWNsYXJhdGlvbiwgY29uc3QgaW50IGxp bmVfbnVtYmVyLAotKwkJCXN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQotIHsKLSAgIHN0cnVjdCB1 c2luZ19kaXJlY3QgKmN1cnJlbnQ7Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXc7Ci1AQCAt MTQ2LDEyICsxNTMsMjYgQEAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVz dCwgY29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyICphbGlhcywKLSAgIGZvciAoY3VycmVudCA9 IHVzaW5nX2RpcmVjdGl2ZXM7IGN1cnJlbnQgIT0gTlVMTDsgY3VycmVudCA9IGN1cnJlbnQtPm5l eHQpCi0gICAgIHsKLSAgICAgICBpZiAoc3RyY21wIChjdXJyZW50LT5pbXBvcnRfc3JjLCBzcmMp ID09IDAKLS0gICAgICAgICAgJiYgc3RyY21wIChjdXJyZW50LT5pbXBvcnRfZGVzdCwgZGVzdCkg PT0gMCkKLSsJICAmJiBzdHJjbXAgKGN1cnJlbnQtPmltcG9ydF9kZXN0LCBkZXN0KSA9PSAwCi0r CSAgJiYgKChhbGlhcyA9PSBOVUxMICYmIGN1cnJlbnQtPmFsaWFzID09IE5VTEwpCi0rCSAgICAg IHx8IChhbGlhcyAhPSBOVUxMICYmIGN1cnJlbnQtPmFsaWFzICE9IE5VTEwKLSsJCSAgJiYgc3Ry Y21wIChhbGlhcywgY3VycmVudC0+YWxpYXMpID09IDApKSkKLSAJcmV0dXJuOwotICAgICB9Ci0g Ci0tICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3VzaW5nIChkZXN0LCBzcmMsIGFsaWFzLCBk ZWNsYXJhdGlvbiwKLS0JCQkJICAgbGluZV9udW1iZXIsIHVzaW5nX2RpcmVjdGl2ZXMpOwotKyAg bmV3ID0gT0JTVEFDS19aQUxMT0MgKG9ic3RhY2ssIHN0cnVjdCB1c2luZ19kaXJlY3QpOwotKwot KyAgbmV3LT5pbXBvcnRfc3JjID0gb2JzYXZlc3RyaW5nIChzcmMsIHN0cmxlbiAoc3JjKSwgb2Jz dGFjayk7Ci0rICBuZXctPmltcG9ydF9kZXN0ID0gb2JzYXZlc3RyaW5nIChkZXN0LCBzdHJsZW4g KGRlc3QpLCBvYnN0YWNrKTsKLSsKLSsgIGlmIChhbGlhcyAhPSBOVUxMKQotKyAgICBuZXctPmFs aWFzID0gb2JzYXZlc3RyaW5nIChhbGlhcywgc3RybGVuIChhbGlhcyksIG9ic3RhY2spOwotKwot KyAgbmV3LT5kZWNsYXJhdGlvbiA9IG9ic2F2ZXN0cmluZyAoZGVjbGFyYXRpb24sIHN0cmxlbiAo ZGVjbGFyYXRpb24pLCBvYnN0YWNrKTsKLSsgIG5ldy0+bGluZV9udW1iZXIgPSBsaW5lX251bWJl cjsKLSsKLSsgIG5ldy0+bmV4dCA9IHVzaW5nX2RpcmVjdGl2ZXM7Ci0rICB1c2luZ19kaXJlY3Rp dmVzID0gbmV3OwotIAotIH0KLSAKLUBAIC0yMDMsNDIgKzIyNCw2IEBAIGNwX2lzX2Fub255bW91 cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKQotIAkgICE9IE5VTEwpOwotIH0KLSAKLS0vKiBDcmVh dGUgYSBuZXcgc3RydWN0IHVzaW5nIGRpcmVjdCB3aGljaCBpbXBvcnRzIHRoZSBuYW1lc3BhY2Ug U1JDCi0tICAgaW50byB0aGUgc2NvcGUgREVTVC4gIEFMSUFTIGlzIHRoZSBuYW1lIG9mIHRoZSBp bXBvcnRlZCBuYW1lc3BhY2UKLS0gICBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIEFMSUFTIGlz IE5VTEwgdGhlbiB0aGUKLS0gICBuYW1lc3BhY2UgaXMga25vd24gYnkgaXRzIG9yaWdpbmFsIG5h bWUuCi0tCi0tICAgU2V0IGl0cyBuZXh0IG1lbWJlciBpbiB0aGUgbGlua2VkIGxpc3QgdG8gTkVY VDsgYWxsb2NhdGUgYWxsIG1lbW9yeQotLSAgIHVzaW5nIHhtYWxsb2MuICBJdCBjb3BpZXMgdGhl IHN0cmluZ3MsIHNvIE5BTUUgY2FuIGJlIGEgdGVtcG9yYXJ5Ci0tICAgc3RyaW5nLiAgKi8KLS0K LS1zdHJ1Y3QgdXNpbmdfZGlyZWN0ICoKLS1jcF9hZGRfdXNpbmcgKGNvbnN0IGNoYXIgKmRlc3Qs Ci0tICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCi0tICAgICAgICAgICAgICBjb25zdCBj aGFyICphbGlhcywKLS0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotLSAg ICAgICAgICAgICAgY29uc3QgaW50IGxpbmVfbnVtYmVyLAotLQkgICAgICBzdHJ1Y3QgdXNpbmdf ZGlyZWN0ICpuZXh0KQotLXsKLS0gIHN0cnVjdCB1c2luZ19kaXJlY3QgKnJldHZhbDsKLS0KLS0g IHJldHZhbCA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHVzaW5nX2RpcmVjdCkpOwotLSAgcmV0 dmFsLT5pbXBvcnRfc3JjID0gc2F2ZXN0cmluZyAoc3JjLCBzdHJsZW4gKHNyYykpOwotLSAgcmV0 dmFsLT5pbXBvcnRfZGVzdCA9IHNhdmVzdHJpbmcgKGRlc3QsIHN0cmxlbiAoZGVzdCkpOwotLQot LSAgaWYgKGFsaWFzICE9IE5VTEwpCi0tICAgIHJldHZhbC0+YWxpYXMgPSBzYXZlc3RyaW5nIChh bGlhcywgc3RybGVuIChhbGlhcykpOwotLSAgZWxzZQotLSAgICByZXR2YWwtPmFsaWFzID0gTlVM TDsKLS0KLS0gIHJldHZhbC0+ZGVjbGFyYXRpb24gPSBzYXZlc3RyaW5nIChkZWNsYXJhdGlvbiwg c3RybGVuIChkZWNsYXJhdGlvbikpOwotLSAgcmV0dmFsLT5saW5lX251bWJlciA9IGxpbmVfbnVt YmVyOwotLSAgcmV0dmFsLT5uZXh0ID0gbmV4dDsKLS0gIHJldHZhbC0+c2VhcmNoZWQgPSAwOwot LQotLSAgcmV0dXJuIHJldHZhbDsKLS19Ci0tCi0gLyogVGhlIEMrKy1zcGVjaWZpYyB2ZXJzaW9u IG9mIG5hbWUgbG9va3VwIGZvciBzdGF0aWMgYW5kIGdsb2JhbAotICAgIG5hbWVzLiAgVGhpcyBt YWtlcyBzdXJlIHRoYXQgbmFtZXMgZ2V0IGxvb2tlZCBmb3IgaW4gYWxsIG5hbWVzcGFjZXMKLSAg ICB0aGF0IGFyZSBpbiBzY29wZS4gIE5BTUUgaXMgdGhlIG5hdHVyYWwgbmFtZSBvZiB0aGUgc3lt Ym9sIHRoYXQKLWRpZmYgLS1naXQgYS9nZGIvY3Atc3VwcG9ydC5oIGIvZ2RiL2NwLXN1cHBvcnQu aAotaW5kZXggNTdhYTVlNS4uNDFmMTdmZSAxMDA2NDQKLS0tLSBhL2dkYi9jcC1zdXBwb3J0LmgK LSsrKyBiL2dkYi9jcC1zdXBwb3J0LmgKLUBAIC0xMDEsMTQgKzEwMSw4IEBAIGV4dGVybiB2b2lk IGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFsaWFzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlcik7Ci0tCi0t ZXh0ZXJuIHN0cnVjdCB1c2luZ19kaXJlY3QgKmNwX2FkZF91c2luZyAoY29uc3QgY2hhciAqZGVz dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpzcmMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqYWxpYXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqZGVjbGFyYXRpb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgaW50IGxpbmVfbnVtYmVyLAotLQkJCQkJICBzdHJ1Y3QgdXNpbmdf ZGlyZWN0ICpuZXh0KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBpbnQgbGluZV9udW1iZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwotIAotIGV4dGVybiB2b2lkIGNwX2luaXRpYWxpemVf bmFtZXNwYWNlICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2Ri L2R3YXJmMnJlYWQuYwotaW5kZXggZTNhNzgwZS4uYjczZjQ0NCAxMDA2NDQKLS0tLSBhL2dkYi9k d2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0zNTYzLDEyICszNTYzLDEy IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotICAgICB9Ci0gICB9Ci0gICAKLS0gIHVzaW5nX2RpcmVjdGl2ZXMgPSBj cF9hZGRfdXNpbmcgKGltcG9ydF9wcmVmaXgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjYW5vbmljYWxfbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGltcG9ydF9hbGlhcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlt cG9ydGVkX2RlY2xhcmF0aW9uLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGluZV9udW1iZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ19k aXJlY3RpdmVzKTsKLSsgIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGltcG9ydF9wcmVmaXgsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5vbmljYWxfbmFtZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIGltcG9ydF9hbGlhcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGlt cG9ydGVkX2RlY2xhcmF0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1i ZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2Jz dGFjayk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtNTcwMyw3ICs1NzAzLDEyIEBAIHJlYWRf bmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ICAgICAgaWYgKGlzX2Fub255bW91cykKLSAJewotIAkgIGNvbnN0IGNoYXIgKnByZXZpb3VzX3By ZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOwotLQkgIGNwX2FkZF91c2luZ19kaXJl Y3RpdmUgKHByZXZpb3VzX3ByZWZpeCwgVFlQRV9OQU1FICh0eXBlKSwgTlVMTCwgIiIsIGR3YXJm Ml9yZWFkX2RlY2xfbGluZShkaWUsIGN1KSk7Ci0rCSAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAo cHJldmlvdXNfcHJlZml4LAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfTkFNRSAo dHlwZSksCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSsJICAgICAgICAgICAg ICAgICAgICAgICAgICAiIiwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICBkd2FyZjJfcmVh ZF9kZWNsX2xpbmUoZGllLCBjdSksCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjayk7Ci0gCX0KLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2dkYjIzODQtYmFzZS5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dk YjIzODQtYmFzZS5jYwotaW5kZXggMDllZDA0ZS4uYjU4ZjMwZCAxMDA2NDQKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2dkYjIzODQtYmFzZS5jYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvZ2RiMjM4NC1iYXNlLmNjCi1AQCAtMjMsNiArMjMsOCBAQCBiYXNlOjpiYXNlIChpbnQgX3gp Ci0gewotIH0KLSAKLSt1c2luZyBuYW1lc3BhY2UgQjsKLSsKLSBpbnQKLSBiYXNlOjptZXRoICgp Ci0gewotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjIzODQtYmFzZS5oIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiMjM4NC1iYXNlLmgKLWluZGV4IGIwOTcwMWUuLjk4MTk0 M2MgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGIyMzg0LWJhc2UuaAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiMjM4NC1iYXNlLmgKLUBAIC0xNiw2ICsxNiwxMCBA QAotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotICAgICovCi0gCi0rbmFtZXNwYWNlIEJ7Ci0rICBpbnQgeDsK LSt9Ci0rCi0gY2xhc3MgYmFzZQotIHsKLSAgcHVibGljOgoKZGlmZiAtLWdpdCBhL2dkYi5zcGVj IGIvZ2RiLnNwZWMKaW5kZXggNDZjMTk4YS4uZDYwYzhmZCAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMK KysrIGIvZ2RiLnNwZWMKQEAgLTMyLDE4ICszMiwxOCBAQCBOYW1lOiBnZGIlez9fd2l0aF9kZWJ1 ZzotZGVidWd9CiAjIFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92ZXJzaW9uLmluLgog IyBOT1RFOiB0aGUgRlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5NIGZvciBvZmZpY2lh bCByZWxlYXNlcywgbGlrZSA2LjMKICMgYW5kLCBzaW5jZSBKYW51YXJ5IDIwMDUsIFguWS5aLmRh dGUgZm9yIGRhaWx5IHNuYXBzaG90cywgbGlrZSA2LjMuNTAuMjAwNTAxMTIgIyAoZGFpbHkgc25h cHNob3QgZnJvbSBtYWlsaW5lKSwgb3IgNi4zLjAuMjAwNDAxMTIgKGhlYWQgb2YgdGhlIHJlbGVh c2UgYnJhbmNoKS4KLVZlcnNpb246IDcuMQorVmVyc2lvbjogNy4xLjkwLjIwMTAwNzIxCiAKICMg VGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0 YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3Rh eSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVs ZWFzZTogMjklez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQorUmVsZWFzZTogMSV7 P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0le2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQg R1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRp b25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBHRkRMIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21h aW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZv ciBzbmFwc2hvdHMgYXMgdGhlIGZpbGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgogIyBm dHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3NuYXBzaG90cy9icmFuY2gvZ2RiLSV7dmVyc2lv bn0udGFyLmJ6MgogIyBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3JlbGVhc2VzL2dkYi0l e3ZlcnNpb259LnRhci5iejIKLVNvdXJjZTogZnRwOi8vc291cmNld2FyZS5vcmcvcHViL2dkYi9y ZWxlYXNlcy9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCitTb3VyY2U6IGZ0cDovL3NvdXJjZXdhcmUu b3JnL3B1Yi9nZGIvc25hcHNob3RzL2JyYW5jaC9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCiBCdWls ZHJvb3Q6ICUobWt0ZW1wIC11ZCAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxl YXNlfS1YWFhYWFgpCiBVUkw6IGh0dHA6Ly9nbnUub3JnL3NvZnR3YXJlL2dkYi8KIApAQCAtODEs MTAgKzgxLDYgQEAgU291cmNlMjogZ2RiLW9ycGhhbnJpcHBlci5jCiAjIE1hbiBwYWdlIGZvciBn c3RhY2soMSkuCiBTb3VyY2UzOiBnZGItZ3N0YWNrLm1hbgogCi0jIGxpYnN0ZGMrKyBwcmV0dHkg cHJpbnRlcnMgZnJvbSBHQ0MgU1ZOIEhFQUQgKDQuNSBleHBlcmltZW50YWwpLgotJWRlZmluZSBs aWJzdGRjeHhweXRob24gbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4Ci1Tb3VyY2U0OiAle2xp YnN0ZGN4eHB5dGhvbn0udGFyLmJ6MgotCiAjIFdvcmsgYXJvdW5kIG91dC1vZi1kYXRlIGRlamFn bnUgdGhhdCBkb2VzIG5vdCBoYXZlIEtGQUlMCiBQYXRjaDE6IGdkYi02LjMtcmgtZHVtbXlrZmFp bC0yMDA0MTIwMi5wYXRjaAogCkBAIC0xOTMsOSArMTg5LDYgQEAgUGF0Y2gxOTA6IGdkYi02LjUt ZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0Y2gKICMgU3VwcG9ydCBUTFMgc3ltYm9scyAoK2BlcnJu bycgc3VnZ2VzdGlvbiBpZiBubyBwdGhyZWFkIGlzIGZvdW5kKSAoQlogMTg1MzM3KS4KIFBhdGNo MTk0OiBnZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBh dGNoCiAKLSMgRml4IFRMUyBzeW1ib2xzIHJlc29sdmluZyBmb3Igb2JqZWN0cyB3aXRoIHNlcGFy YXRlIC5kZWJ1ZyBmaWxlICgtZGVidWdpbmZvKS4KLVBhdGNoMTk1OiBnZGItNi41LXRscy1vZi1z ZXBhcmF0ZS1kZWJ1Z2luZm8ucGF0Y2gKLQogIyBGaXggVExTIHN5bWJvbHMgcmVzb2x2aW5nIGZv ciBzaGFyZWQgbGlicmFyaWVzIHdpdGggYSByZWxhdGl2ZSBwYXRobmFtZS4KICMgVGhlIHRlc3Rz dWl0ZSBuZWVkcyBgZ2RiLTYuNS10bHMtb2Ytc2VwYXJhdGUtZGVidWdpbmZvLnBhdGNoJy4KIFBh dGNoMTk2OiBnZGItNi41LXNoYXJlZGxpYnJhcnktcGF0aC5wYXRjaApAQCAtMjA0LDkgKzE5Nyw2 IEBAIFBhdGNoMTk2OiBnZGItNi41LXNoYXJlZGxpYnJhcnktcGF0aC5wYXRjaAogIyBGSVhNRTog SXQgY291bGQgYmUgYXV0b2RldGVjdGVkLgogUGF0Y2gxOTk6IGdkYi02LjUtYnoxOTA4MTAtZ2Ri c2VydmVyLWFyY2gtYWR2aWNlLnBhdGNoCiAKLSMgRml4IGBnY29yZScgY29tbWFuZCBmb3IgMzJi aXQgaW5mZXJpb3JzIG9uIDY0Yml0IGhvc3RzLgotUGF0Y2gyMDE6IGdkYi02LjUtZ2NvcmUtaTM4 Ni1vbi1hbWQ2NC5wYXRjaAotCiAjIFRlc3RjYXNlIGZvciBkZWFkbG9ja2luZyBvbiBsYXN0IGFk ZHJlc3Mgc3BhY2UgYnl0ZTsgZm9yIGNvcnJ1cHRlZCBiYWNrdHJhY2VzLgogUGF0Y2gyMTE6IGdk Yi02LjUtbGFzdC1hZGRyZXNzLXNwYWNlLWJ5dGUtdGVzdC5wYXRjaAogCkBAIC0yMzYsNyArMjI2 LDcgQEAgUGF0Y2gyMjk6IGdkYi02LjMtYnoxNDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNo CiBQYXRjaDIzMTogZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0LnBhdGNo CiAKICMgQmFja3BvcnRlZCBmaXh1cHMgcG9zdCB0aGUgc291cmNlIHRhcmJhbGwuCi1QYXRjaDIz MjogZ2RiLXVwc3RyZWFtLnBhdGNoCisjUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAogCiAj IFRlc3RjYXNlIGZvciBQUEMgUG93ZXI2L0RGUCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJa IDIzMDAwMCkuCiBQYXRjaDIzNDogZ2RiLTYuNi1iejIzMDAwMC1wb3dlcjYtZGlzYXNzZW1ibHkt dGVzdC5wYXRjaApAQCAtMjQ0LDkgKzIzNCw2IEBAIFBhdGNoMjM0OiBnZGItNi42LWJ6MjMwMDAw LXBvd2VyNi1kaXNhc3NlbWJseS10ZXN0LnBhdGNoCiAjIFRlbXBvcmFyeSBzdXBwb3J0IGZvciBz aGFyZWQgbGlicmFyaWVzID4yR0Igb24gNjRiaXQgaG9zdHMuIChCWiAyMzE4MzIpCiBQYXRjaDIz NTogZ2RiLTYuMy1iejIzMTgzMi1vYnN0YWNrLTJnYi5wYXRjaAogCi0jIEZpeCBwcmVsaW5rKDgp IHRlc3RjYXNlIGZvciBub24tcm9vdCAkUEFUSCBtaXNzaW5nIGAvdXNyL3NiaW4nIChCWiAyMjU3 ODMpLgotUGF0Y2gyNDA6IGdkYi02LjYtYnoyMjU3ODMtcHJlbGluay1wYXRoLnBhdGNoCi0KICMg Rml4IGRlYnVnZ2luZyBHREIgaXRzZWxmIC0gdGhlIGNvbXBpbGVkIGluIHNvdXJjZSBmaWxlcyBw YXRocyAoQlogMjI1NzgzKS4KIFBhdGNoMjQxOiBnZGItNi42LWJ6MjI1NzgzLWdkYi1kZWJ1Z2lu Zm8tcGF0aHMucGF0Y2gKIApAQCAtMjU2LDkgKzI0Myw2IEBAIFBhdGNoMjQ1OiBnZGItNi42LWJ6 MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2gKICMgTm90aWZ5IHVzZXIgb2YgYSBj aGlsZCBmb3JrZWQgcHJvY2VzcyBiZWluZyBkZXRhY2hlZCAoQlogMjM1MTk3KS4KIFBhdGNoMjQ3 OiBnZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0YWNoLWluZm8ucGF0Y2gKIAotIyBOZXcgdGVzdGNh c2UgZm9yIGdjb3JlIG9mIDMyYml0IGluZmVyaW9ycyBvbiA2NGJpdCBob3N0cy4KLVBhdGNoMjQ5 OiBnZGItNi42LWdjb3JlMzItdGVzdC5wYXRjaAotCiAjIEF2b2lkIHRvbyBsb25nIHRpbWVvdXRz IG9uIGZhaWxpbmcgY2FzZXMgb2YgImFubm90YTEuZXhwIGFubm90YTMuZXhwIi4KIFBhdGNoMjU0 OiBnZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAogCkBAIC0zMzAsOSArMzE0LDYgQEAg UGF0Y2gzMTg6IGdkYi02LjgtZ2NjMzU5OTgtYWRhLW1lbW9yeS10cmFzaC5wYXRjaAogIyBUZXN0 IGEgY3Jhc2ggb24gbGlicmFyaWVzIG1pc3NpbmcgdGhlIC50ZXh0IHNlY3Rpb24uCiBQYXRjaDMy MDogZ2RiLTYuNS1zZWN0aW9uLW51bS1maXh1cC10ZXN0LnBhdGNoCiAKLSMgUmVmdXNlIGNyZWF0 aW5nIHdhdGNocG9pbnRzIG9mIGFuIGFkZHJlc3MgdmFsdWUsIHN1Z2dlc3RlZCBieSBNYXJ0aW4g U3RyYW5za3kuCi1QYXRjaDMyMjogZ2RiLTYuOC1jb25zdGFudC13YXRjaHBvaW50cy5wYXRjaAot CiAjIEZpeCBjb21wYXRpYmlsaXR5IHdpdGggcmVjZW50IGdsaWJjIGhlYWRlcnMuCiBQYXRjaDMy NDogZ2RiLTYuOC1nbGliYy1oZWFkZXJzLWNvbXBhdC5wYXRjaAogCkBAIC0zOTcsOSArMzc4LDYg QEAgUGF0Y2g0MDM6IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAogUGF0Y2g0MDQ6IGdkYi1m b3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gKIFBhdGNoNDA1OiBnZGItZm9ydHJhbi1jb21tb24u cGF0Y2gKIAotIyBGaXggRm9ydHJhbiBsb2dpY2FsLWtpbmQ9OCAoQlogNDY1MzEwKS4KLVBhdGNo NDA2OiBnZGItZm9ydHJhbi1sb2dpY2FsOC5wYXRjaAotCiAjIFRlc3RjYXNlIGZvciAiRG8gbm90 IG1ha2UgdXAgbGluZSBpbmZvcm1hdGlvbiIgZml4IGJ5IERhbmllbCBKYWNvYm93aXR6LgogUGF0 Y2g0MDc6IGdkYi1saW5lbm8tbWFrZXVwLXRlc3QucGF0Y2gKIApAQCAtNDEyLDExOCArMzkwLDI3 IEBAIFBhdGNoNDEyOiBnZGItdW51c2VkLXJldmVydC5wYXRjaAogIyBGaXggaTM4Nit4ODZfNjQg cndhdGNoK2F3YXRjaCBiZWZvcmUgcnVuLCByZWdyZXNzaW9uIGFnYWluc3QgNi44IChCWiA1NDE4 NjYpLgogUGF0Y2g0MTc6IGdkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAogCi0j IFJlbW92ZSBmYWxzZSBnZGJfYXNzZXJ0IG9uICRzcCB1bmRlcmZsb3cuCi1QYXRjaDQyMjogZ2Ri LWluZmNhbGwtc3AtdW5kZXJmbG93LnBhdGNoCi0KLSMgRml4IGRvdWJsZS1mcmVlIG9uIHN0ZDo6 dGVybWluYXRlIGhhbmRsZXIgKFRvbSBUcm9tZXksIEJaIDU2Mjk3NSkuCi1QYXRjaDQyOTogZ2Ri LWJ6NTYyOTc1LXN0ZC10ZXJtaW5hdGUtZG91YmxlLWZyZWUucGF0Y2gKLQotIyBQSUU6IEZpeCBi YWNrIHJlLXJldW4uCi1QYXRjaDQzMDogZ2RiLXBpZS1yZXJ1bi5wYXRjaAotCi0jIERvIG5vdCBj b25zaWRlciBtZW1vcnkgZXJyb3Igb24gcmVhZGluZyBfcl9kZWJ1Zy0+cl9tYXAgYXMgZmF0YWwg KEJaIDU3Njc0MikuCi1QYXRjaDQzMjogZ2RiLXNvbGliLW1lbW9yeS1lcnJvci1ub25mYXRhbC5w YXRjaAotCi0jIHRlc3RzdWl0ZTogRml4IHVuc3RhYmxlIHJlc3VsdHMgb2YgZ2RiLmJhc2UvcHJl bGluay5leHAuCi1QYXRjaDQzMzogZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMtcHJl bGluay5wYXRjaCAKLQotIyBbcGF0Y2ggMS82XSBQSUU6IEF0dGFjaCBiaW5hcnkgZXZlbiBhZnRl ciByZS1wcmVsaW5rZWQgdW5kZXJuZWF0aAotIyBbcGF0Y2ggMi82XSBQSUU6IEF0dGFjaCBiaW5h cnkgZXZlbiBhZnRlciBsZC5zbyByZS1wcmVsaW5rZWQgdW5kZXJuZWF0aAotIyBbcGF0Y2ggMy82 XSBQSUU6IEZpeCBvY2Nhc2lvbmFsIGVycm9yIGF0dGFjaGluZyBpNjg2IGJpbmFyeQotUGF0Y2g0 MzQ6IGdkYi1waWUtMW9mNi1yZXByZWxpbmtlZC1iaW4ucGF0Y2gKLVBhdGNoNDM1OiBnZGItcGll LTJvZjYtcmVwcmVsaW5rZWQtbGQucGF0Y2gKLVBhdGNoNDM2OiBnZGItcGllLTNvZjYtcmVsb2Nh dGUtb25jZS5wYXRjaAotCi0jIFtleHByLWN1bXVsYXRpdmVdIHVzaW5nLWRpcmVjdGl2ZTogRml4 IG1lbW9yeSBsZWFrIChTYW1pIFdhZ2lhYWxsYSkuCi1QYXRjaDQzNzogZ2RiLXVzaW5nLWRpcmVj dGl2ZS1sZWFrLnBhdGNoCi0KLSMgRml4IGRhbmdsaW5nIGRpc3BsYXlzIGluIHNlcGFyYXRlIGRl YnVnaW5mbyAoQlogNTc0NDgzKS4KLVBhdGNoNDM4OiBnZGItYno1NzQ0ODMtZGlzcGxheS1zZXBk ZWJ1Zy5wYXRjaAotCi0jIFN1cHBvcnQgQVZYIHJlZ2lzdGVycyAoQlogNTc4MjUwKS4KLVBhdGNo NDM5OiBnZGItYno1NzgyNTAtYXZ4LTAxb2YxMC5wYXRjaAotUGF0Y2g0NDA6IGdkYi1iejU3ODI1 MC1hdngtMDJvZjEwLnBhdGNoCi1QYXRjaDQ0MTogZ2RiLWJ6NTc4MjUwLWF2eC0wM29mMTAucGF0 Y2gKLVBhdGNoNDQyOiBnZGItYno1NzgyNTAtYXZ4LTA0b2YxMC5wYXRjaAotUGF0Y2g0NDM6IGdk Yi1iejU3ODI1MC1hdngtMDVvZjEwLnBhdGNoCi1QYXRjaDQ0NDogZ2RiLWJ6NTc4MjUwLWF2eC0w Nm9mMTAucGF0Y2gKLVBhdGNoNDQ1OiBnZGItYno1NzgyNTAtYXZ4LTA3b2YxMC5wYXRjaAotUGF0 Y2g0NDY6IGdkYi1iejU3ODI1MC1hdngtMDhvZjEwLnBhdGNoCi1QYXRjaDQ0NzogZ2RiLWJ6NTc4 MjUwLWF2eC0wOW9mMTAucGF0Y2gKLVBhdGNoNDQ4OiBnZGItYno1NzgyNTAtYXZ4LTEwb2YxMC5w YXRjaAotUGF0Y2g0NDk6IGdkYi1iejU3ODI1MC1hdngtMTBvZjEwLXBwYy5wYXRjaAotCiAjIEZp eCBjcmFzaCBvbiBDKysgdHlwZXMgaW4gc29tZSBkZWJ1ZyBpbmZvIGZpbGVzIChCWiA1NzUyOTIs IEtlaXRoIFNlaXR6KS4KICMgVGVtcG9yYXJpbHkgd29ya2Fyb3VuZCB0aGUgY3Jhc2ggb2YgQlog NTc1MjkyIGFzIHRoZXJlIHdhcyBub3cgQlogNTg1NDQ1LgogIyBSZS1lbmFibGUgdGhlIEJaIDU3 NTI5MiBhbmQgQlogNTg1NDQ1IEMrKyBmaXggdXNpbmcgYW4gdXBkYXRlZCBwYXRjaC4KIFBhdGNo NDUxOiBnZGItYno1NzUyOTItZGVsYXllZC1waHlzbmFtZS5wYXRjaAotUGF0Y2g0NTU6IGdkYi1i ejU3NTI5Mi12b2lkLXdvcmthcm91bmQucGF0Y2gKLQotIyBQcmV0dHkgcHJpbnRlcnMgbm90IHdl bGwgZG9jdW1lbnRlZCAoQlogNTcwNjM1LCBUb20gVHJvbWV5LCBKYW4gS3JhdG9jaHZpbCkuCi1Q YXRjaDQ1MjogZ2RiLWJ6NTcwNjM1LXByZXR0eXByaW50LWRvYzEucGF0Y2gKLVBhdGNoNDUzOiBn ZGItYno1NzA2MzUtcHJldHR5cHJpbnQtZG9jMi5wYXRjaAogCiAjIEZpeCBjcmFzaCB3aGVuIHVz aW5nIEdOVSBJRlVOQyBjYWxsIGZyb20gYnJlYWtwb2ludCBjb25kaXRpb24uCiBQYXRjaDQ1NDog Z2RiLWJ6NTM5NTkwLWdudS1pZnVuYy1maXgtY29uZC5wYXRjaAogCi0jIEZhaWwgZ3JhY2VmdWxs eSBpZiB0aGUgX1Vud2luZF9EZWJ1Z0hvb2sgYXJnLiBpcyBvcHRpbWl6ZWQgb3V0IChUb20gVHJv bWV5KS4KLSMgTWFrZSBfVW53aW5kX0RlYnVnSG9vayBpbmRlcGVuZGVudCBmcm9tIHN0ZXAtcmVz dW1lIGJyZWFrcG9pbnQgKFRvbSBUcm9tZXkpLgotUGF0Y2g0NTY6IGdkYi11bndpbmQtZGVidWdo b29rLXNhZmUtZmFpbC5wYXRjaAotUGF0Y2g0NTc6IGdkYi11bndpbmQtZGVidWdob29rLXN0ZXAt aW5kZXBlbmRlbnQucGF0Y2gKLQotIyB0ZXN0c3VpdGU6IEZpeCBnZGIuYmFzZS92bGEtb3ZlcmZs b3cuZXhwIEZBSUxpbmcgb24gczM5MHggKEJaIDU5MDYzNSkuCi1QYXRjaDQ1ODogZ2RiLWFyY2hl ci12bGEtdGVzdC1vb20ucGF0Y2gKLQogIyBXb3JrYXJvdW5kIG5vbi1zdG9wIG1vcmlidW5kIGxv Y2F0aW9ucyBleHBsb2l0ZWQgYnkga2VybmVsIHV0cmFjZSAoQlogNTkwNjIzKS4KIFBhdGNoNDU5 OiBnZGItbW9yaWJ1bmQtdXRyYWNlLXdvcmthcm91bmQucGF0Y2gKIAotIyBGaXggY3Jhc2ggb24g VkxBIGJvdW5kIHJlZmVyZW5jaW5nIGFuIG9wdGltaXplZC1vdXQgdmFyaWFibGUgKEJaIDU5MTg3 OSkuCi1QYXRjaDQ2MDogZ2RiLWFyY2hlci12bGEtcmVmLW9wdGltaXplZG91dC5wYXRjaAotCiAj IFJlbW92ZSBjb3JlIGZpbGUgd2hlbiBzdGFydGluZyBhIHByb2Nlc3MgKEJaIDU5NDU2MCkuCiBQ YXRjaDQ2MTogZ2RiLWJ6NTk0NTYwLWNvcmUtdnMtcHJvY2Vzcy5wYXRjaAogCi0jIEltcG9ydCBm aXggb2YgVFVJIGxheW91dCBpbnRlcm5hbCBlcnJvciAoQlogNTk1NDc1KS4KLVBhdGNoNDYyOiBn ZGItYno1OTU0NzUtdHVpLWxheW91dC5wYXRjaAotCi0jIEZpeCBhbmQgc3VwcG9ydCBEV19PUF8q cGllY2UgKFRvbSBUcm9tZXksIEJaIDU4OTQ2NykuCi1QYXRjaDQ2MzogZ2RiLWJ6NTg5NDY3LXBp ZWNlczAxb2Y0LnBhdGNoCi1QYXRjaDQ2NDogZ2RiLWJ6NTg5NDY3LXBpZWNlczAyb2Y0LnBhdGNo Ci1QYXRjaDQ2NTogZ2RiLWJ6NTg5NDY3LXBpZWNlczAzb2Y0LnBhdGNoCi1QYXRjaDQ2NjogZ2Ri LWJ6NTg5NDY3LXBpZWNlczFvZjQucGF0Y2gKLVBhdGNoNDY3OiBnZGItYno1ODk0NjctcGllY2Vz Mm9mNC5wYXRjaAotUGF0Y2g0Njg6IGdkYi1iejU4OTQ2Ny1waWVjZXMzb2Y0LnBhdGNoCi1QYXRj aDQ2OTogZ2RiLWJ6NTg5NDY3LXBpZWNlczRvZjQucGF0Y2gKLVBhdGNoNDcxOiBnZGItYno1ODk0 NjctcGllY2VzLXZsYS1jb21wYXQucGF0Y2gKLQogIyBGaXggZm9sbG93LWV4ZWMgZm9yIEMrKyBw cm9ncmFtcyAoYnVncmVwb3J0ZWQgYnkgTWFydGluIFN0cmFuc2t5KS4KIFBhdGNoNDcwOiBnZGIt YXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAogCi0jIEZpeCBBREwgYW5vbnlt b3VzIHR5cGUgY3Jhc2ggKEJaIDYwMDc0NiwgU2FtaSBXYWdpYWFsbGEpLgotUGF0Y2g0NzI6IGdk Yi1iejYwMDc0Ni1rb2VuaWctY3Jhc2gucGF0Y2gKLQogIyBCYWNrcG9ydCBEV0FSRi00IHN1cHBv cnQgKEJaIDYwMTg4NywgVG9tIFRyb21leSkuCi1QYXRjaDQ3MzogZ2RiLWJ6NjAxODg3LWR3YXJm NC0xb2YyLnBhdGNoCi1QYXRjaDQ3NDogZ2RiLWJ6NjAxODg3LWR3YXJmNC0yb2YyLnBhdGNoCiBQ YXRjaDQ3NTogZ2RiLWJ6NjAxODg3LWR3YXJmNC1yaC10ZXN0LnBhdGNoCiAKLSMgRml4IG9ic3Rh Y2sgY29ycnVwdGlvbnMgb24gQysrIChCWiA2MDYxODUsIENocmlzIE1vbGxlciwgSmFuIEtyYXRv Y2h2aWwpLgotUGF0Y2g0NzY6IGdkYi1iejYwNjE4NS1vYnN0YWNrLTFvZjUucGF0Y2gKLVBhdGNo NDc3OiBnZGItYno2MDYxODUtb2JzdGFjay0yb2Y1LnBhdGNoCi1QYXRjaDQ3ODogZ2RiLWJ6NjA2 MTg1LW9ic3RhY2stM29mNS5wYXRjaAotUGF0Y2g0Nzk6IGdkYi1iejYwNjE4NS1vYnN0YWNrLTRv ZjUucGF0Y2gKLVBhdGNoNDgwOiBnZGItYno2MDYxODUtb2JzdGFjay01b2Y1LnBhdGNoCi0KLSMg SW1wcm92ZSBzdXBwb3J0IGZvciB0eXBlZGVmcyBpbiBjbGFzc2VzIChCWiA2MDIzMTQpLgotUGF0 Y2g0ODE6IGdkYi1iejYwMjMxNC1wdHlwZS1jbGFzcy10eXBlZGVmLTFvZjMucGF0Y2gKLVBhdGNo NDgyOiBnZGItYno2MDIzMTQtcHR5cGUtY2xhc3MtdHlwZWRlZi0yb2YzLnBhdGNoCi1QYXRjaDQ4 MzogZ2RiLWJ6NjAyMzE0LXB0eXBlLWNsYXNzLXR5cGVkZWYtM29mMy5wYXRjaAotCi0jIEZpeCBg c2V0IHByaW50IG9iamVjdCBvbicgZm9yIHNvbWUgbm9uLWR5bmFtaWMgY2xhc3NlcyAoQlogNjA2 NjYwKS4KLVBhdGNoNDg0OiBnZGItYno2MDY2NjAtcHJpbnQtb2JqZWN0LW5vbnZpcnR1YWwucGF0 Y2gKLQogIyBQcmludCAyRCBDKysgdmVjdG9ycyBhcyBtYXRyaWNlcyAoQlogNTYyNzYzLCBzb3Vy Y2V3YXJlMTA2NTksIENocmlzIE1vbGxlcikuCi1QYXRjaDQ4NTogZ2RiLWJ6NTYyNzYzLXByZXR0 eS1wcmludC0yZC12ZWN0b3JzLXByZXJlcS5wYXRjaAogUGF0Y2g0ODY6IGdkYi1iejU2Mjc2My1w cmV0dHktcHJpbnQtMmQtdmVjdG9ycy5wYXRjaAogUGF0Y2g0ODc6IGdkYi1iejU2Mjc2My1wcmV0 dHktcHJpbnQtMmQtdmVjdG9ycy1saWJzdGRjeHgucGF0Y2gKIApAQCAtNjYzLDcgKzU1MCw3IEBA IHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhw LmMKIAogJWlmIDAleyE/X3dpdGhfdXBzdHJlYW06MX0KIAotJXBhdGNoMjMyIC1wMQorI3BhdGNo MjMyIC1wMQogJXBhdGNoMzQ5IC1wMQogJXBhdGNoNDIwIC1wMQogJXBhdGNoMSAtcDEKQEAgLTY5 OSwxMCArNTg2LDggQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1l eHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMTg4IC1wMQogJXBhdGNoMTkwIC1wMQogJXBhdGNoMTk0 IC1wMQotJXBhdGNoMTk1IC1wMQogJXBhdGNoMTk2IC1wMQogJXBhdGNoMTk5IC1wMQotJXBhdGNo MjAxIC1wMQogJXBhdGNoMjA4IC1wMQogJXBhdGNoMjA5IC1wMQogJXBhdGNoMjExIC1wMQpAQCAt NzE1LDExICs2MDAsOSBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpj LWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gyMzEgLXAxCiAlcGF0Y2gyMzQgLXAxCiAlcGF0Y2gy MzUgLXAxCi0lcGF0Y2gyNDAgLXAxCiAlcGF0Y2gyNDEgLXAxCiAlcGF0Y2gyNDUgLXAxCiAlcGF0 Y2gyNDcgLXAxCi0lcGF0Y2gyNDkgLXAxCiAlcGF0Y2gyNTQgLXAxCiAlcGF0Y2gyNTggLXAxCiAl cGF0Y2gyNjAgLXAxCkBAIC03NDYsNyArNjI5LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9t Mi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMzE3IC1wMQogJXBhdGNo MzE4IC1wMQogJXBhdGNoMzIwIC1wMQotJXBhdGNoMzIyIC1wMQogJXBhdGNoMzI0IC1wMQogJXBh dGNoMzI2IC1wMQogJXBhdGNoMzI5IC1wMQpAQCAtNzY3LDgwICs2NDksMjMgQEAgcm0gLWYgZ2Ri L2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNo NDA1IC1wMQogJXBhdGNoMzg5IC1wMQogJXBhdGNoMzk0IC1wMQotJXBhdGNoNDA2IC1wMQogJXBh dGNoNDA3IC1wMQogJXBhdGNoNDA4IC1wMQogJXBhdGNoNDEyIC1wMQogJXBhdGNoNDE3IC1wMQot JXBhdGNoNDIyIC1wMQotJXBhdGNoNDI5IC1wMQotJXBhdGNoNDMwIC1wMQotJXBhdGNoNDMyIC1w MQotJXBhdGNoNDMzIC1wMQotJXBhdGNoNDM0IC1wMQotJXBhdGNoNDM1IC1wMQotJXBhdGNoNDM2 IC1wMQotJXBhdGNoNDM3IC1wMQotJXBhdGNoNDM4IC1wMQotJXBhdGNoNDM5IC1wMQotJXBhdGNo NDQwIC1wMQotJXBhdGNoNDQxIC1wMQotJXBhdGNoNDQyIC1wMQotJXBhdGNoNDQzIC1wMQotJXBh dGNoNDQ0IC1wMQotJXBhdGNoNDQ1IC1wMQotJXBhdGNoNDQ2IC1wMQotJXBhdGNoNDQ3IC1wMQot JXBhdGNoNDQ4IC1wMQotJXBhdGNoNDQ5IC1wMQogJXBhdGNoNDUxIC1wMQotJXBhdGNoNDUyIC1w MQotJXBhdGNoNDUzIC1wMQogJXBhdGNoNDU0IC1wMQotJXBhdGNoNDU1IC1wMQotJXBhdGNoNDU2 IC1wMQotJXBhdGNoNDU3IC1wMQotJXBhdGNoNDU4IC1wMQogJXBhdGNoNDU5IC1wMQotJXBhdGNo NDYwIC1wMQogJXBhdGNoNDYxIC1wMQotJXBhdGNoNDYyIC1wMQotJXBhdGNoNDYzIC1wMQotJXBh dGNoNDY0IC1wMQotJXBhdGNoNDY1IC1wMQotJXBhdGNoNDY2IC1wMQotJXBhdGNoNDY3IC1wMQot JXBhdGNoNDY4IC1wMQotJXBhdGNoNDY5IC1wMQotJXBhdGNoNDcxIC1wMQogJXBhdGNoNDcwIC1w MQotJXBhdGNoNDcyIC1wMQotJXBhdGNoNDczIC1wMQotJXBhdGNoNDc0IC1wMQogJXBhdGNoNDc1 IC1wMQotJXBhdGNoNDc2IC1wMQotJXBhdGNoNDc3IC1wMQotJXBhdGNoNDc4IC1wMQotJXBhdGNo NDc5IC1wMQotJXBhdGNoNDgwIC1wMQotJXBhdGNoNDgxIC1wMQotJXBhdGNoNDgyIC1wMQotJXBh dGNoNDgzIC1wMQotJXBhdGNoNDg0IC1wMQotJXBhdGNoNDg1IC1wMQogJXBhdGNoNDg2IC1wMQot IyBEaXNhYmxlZCBub3cgZm9yIEYtMTQgYmVmb3JlIHJlYmFzZS4KKyMgVGhpcyBwYXRjaCBzaG91 bGQgYmUgYXBwbGllZCB0byBnY2MtNC41Ky5zcmMucnBtOgogI3BhdGNoNDg3IC1wMQotCiAlcGF0 Y2g0MTUgLXAxCisKICVwYXRjaDM5MyAtcDEKICVwYXRjaDMzNSAtcDEKLSMgUGF0Y2g0MTU6IGdk Yi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKLSMgQ3VycmVudGx5IGRpc2Fi bGVkIGZvciBSSEVMIGFzIGl0IGlzIGEgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIG5vdCBwcmVz ZW50Ci0jIGluIEZTRiBHREIgYW5kIHBvc3NpYmx5IGFmZmVjdGluZyBuZXcgdXNlciBzY3JpcHRz LgotJWlmIDAlez9yaGVsOjF9Ci0lcGF0Y2g0MTUgLXAxIC1SCi0lZW5kaWYKICVpZiAwJXshP2Vs NToxfQogJXBhdGNoMzkzIC1wMSAtUgogJXBhdGNoMzM1IC1wMSAtUgpAQCAtMTE2MSw5ICs5ODYs MTMgQEAgZmkKICVlbmRpZgogJXtfYmluZGlyfS9nZGJzZXJ2ZXIKICV7X21hbmRpcn0vKi9nZGJz ZXJ2ZXIuMSoKKyV7X2xpYmRpcn0vbGliaW5wcm9jdHJhY2Uuc28KICVlbmRpZgogCiAlY2hhbmdl bG9nCisqIFdlZCBKdWwgMjEgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4gLSA3LjEuOTAuMjAxMDA3MjEtMS5mYzE0CistIFJlYmFzZSB0byBGU0YgR0RCIDcu MS45MC4yMDEwMDcyMSAod2hpY2ggaXMgNy4yIHByZS1yZWxlYXNlKS4KKwogKiBUdWUgSnVsIDEz IDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4xLTI5 LmZjMTQKIC0gRGlzYWJsZSB0ZW1wb3JhcmlseSBQeXRob24gZmlsZXMgYmVmb3JlIHRoZSBuZXcg cmViYXNlIGlzIGRvbmUgKEJaIDYxMzcxMCkuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291 cmNlcwppbmRleCA5ZTQwNWE4Li44MmNlZDYyIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3Nv dXJjZXMKQEAgLTEsMiArMSBAQAotMjFkY2U2MTA0NzZjMDU0Njg3YjUyNzcwZDJkZGM2NTcgIGdk Yi03LjEudGFyLmJ6MgotMDRlNWM0YjFiOWU2MzM0MjJjYzQ4OTkwZmU2MTk1OGQgIGxpYnN0ZGMr Ky12My1weXRob24tcjE1NTk3OC50YXIuYnoyCisyNmM2NDMyNTIxZWZhMjk2YmY4YmRjYWU0NjVj MDQ4YiAgZ2RiLTcuMS45MC4yMDEwMDcyMS50YXIuYnoyCg==