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] fix-dup-patch: [ppc*] Import ppc64le support (BZ 1096303, Ulrich Weigand). Date: Thu, 23 Jul 2026 18:31:17 GMT Message-ID: <178483147794.1.11709658003207683886.rpms-gdb-6e0665a33c84@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 6e0665a33c841cb72f25624655a40e62747390ed QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogNmUwNjY1YTMzYzg0MWNiNzJmMjU2MjQ2NTVhNDBlNjI3 NDczOTBlZApBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxNC0wNS0wOVQyMTozMDozMyswMjowMApTdGF0cyAgOiArMzI0NC8tMTM5 IGluIDE2IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBt cy9nZGIvYy82ZTA2NjVhMzNjODQxY2I3MmYyNTYyNDY1NWE0MGU2Mjc0NzM5MGVkP2JyYW5jaD1m aXgtZHVwLXBhdGNoCgpMb2c6CltwcGMqXSBJbXBvcnQgcHBjNjRsZSBzdXBwb3J0IChCWiAxMDk2 MzAzLCBVbHJpY2ggV2VpZ2FuZCkuCgotLS0KZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0yM29mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjNvZjI1LnBhdGNoCmlu ZGV4IDBmODI5YTcuLmUwZTEzYjUgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0y M29mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2YyNS5wYXRjaApAQCAt MTM3LDEwICsxMzcsMTAgQEAgQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2gKIENvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDdiaXQKIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZp bGVuYW1lPWJpdHBvcy10ZGVwLnBhdGNoCiAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9hbHBoYS10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL2FscGhhLXRkZXAuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvYWxwaGEtdGRlcC5jCTIwMTQt MDItMDYgMTg6MjA6NTIuOTcwNzQ3NzE2ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvYWxwaGEtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMjk0NzUyMzYyICswMTAwCistLS0g Z2RiLTcuNy4xLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY3NzI1 Mjc2OSArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvYWxwaGEtdGRlcC5jCTIwMTQtMDUtMDkgMjA6 MDI6MDkuNjIwNzAzNzY3ICswMjAwCiBAQCAtMjk5LDE4ICsyOTksMTggQEAgYWxwaGFfcHVzaF9k dW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwogIHsKICAgIGVudW0gYmZkX2VuZGlhbiBieXRl X29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKQEAgLTE4NCwxMCArMTg0LDEw IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hbHBoYS10ZGVwLmMKICAJICAgICAg bWVtY3B5IChhcmdfcmVnX2J1ZmZlciArIG9mZnNldCwgY29udGVudHMsIHRsZW4pOwogIAkgICAg ICBvZmZzZXQgKz0gdGxlbjsKICAJICAgICAgY29udGVudHMgKz0gdGxlbjsKLUluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9hbWQ2NC10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL2Ft ZDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIv YW1kNjQtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTcyNzQ3NzE4ICswMTAwCi0rKysgZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvYW1kNjQtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjE6NTEuMTA2 ODEwODE0ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FtZDY0LXRkZXAuYwkyMDE0LTA1 LTA5IDE5OjI0OjE4LjY3ODI1Mjc3MCArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvYW1kNjQtdGRl cC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjIwNzAzNzY3ICswMjAwCiBAQCAtNjMzLDcgKzYzMyw3 IEBAIGFtZDY0X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmEKICAJCSAgICBnZGJf Ynl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmKQogIHsKQEAgLTIxNywxMCAr MjE3LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hbWQ2NC10ZGVwLmMKICAg ICAgICBlbnVtIGFtZDY0X3JlZ19jbGFzcyBjbGFzc1syXTsKICAgICAgICBpbnQgbmVlZGVkX2lu dGVnZXJfcmVncyA9IDA7CiAgICAgICAgaW50IG5lZWRlZF9zc2VfcmVncyA9IDA7Ci1JbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYW1kNjQtd2luZG93cy10ZGVwLmMKK0luZGV4OiBnZGIt Ny43LjEvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45 MC4yMDE0MDEyNy5vcmlnL2dkYi9hbWQ2NC13aW5kb3dzLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIw OjUyLjk3Mzc0NzcyMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2FtZDY0LXdp bmRvd3MtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMjk2NzUyMzY0ICswMTAwCistLS0gZ2Ri LTcuNy4xLm9yaWcvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTgu Njc5MjUyNzcwICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9hbWQ2NC13aW5kb3dzLXRkZXAuYwky MDE0LTA1LTA5IDIwOjAyOjA5LjYyMDcwMzc2NyArMDIwMAogQEAgLTI4OCw3ICsyODgsNyBAQCBh bWQ2NF93aW5kb3dzX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyCiAgCQkJICAgIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAogIAkJCSAgICBnZGJfYnl0ZSAq cmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVmKQpAQCAtMjMwLDEwICsyMzAsMTAgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCiAgICBp bnQgcmVnbnVtID0gLTE7CiAgCiAgICAvKiBTZWUgaWYgb3VyIHZhbHVlIGlzIHJldHVybmVkIHRo cm91Z2ggYSByZWdpc3Rlci4gIElmIGl0IGlzLCB0aGVuCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvYXJtLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvYXJtLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvYXJtLXRkZXAuYwkyMDE0 LTAyLTA2IDE4OjIwOjUyLjk3ODc0NzcyNSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL2FybS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4yOTk3NTIzNjcgKzAxMDAKKy0tLSBn ZGItNy43LjEub3JpZy9nZGIvYXJtLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY4NDI1Mjc3 MCArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvYXJtLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5 LjYyMjcwMzc2OCArMDIwMAogQEAgLTM0OTgsNyArMzQ5OCw3IEBAIGFybV92ZnBfY3ByY19yZWdf Y2hhciAoZW51bSBhcm1fdmZwX2NwcmMKICAgICBhcnJheSkuICBWZWN0b3JzIGFuZCBjb21wbGV4 IHR5cGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCwKICAgICBtYXRjaGluZyB0aGUgZ2Vu ZXJpYyBBQVBDUyBzdXBwb3J0LiAgKi8KQEAgLTMwOCwxMCArMzA4LDEwIEBAIEluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9hcm0tdGRlcC5jCiAgICAgICAgc3RydWN0IHR5cGUgKmFyZ190 eXBlOwogICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKICAgICAgICBlbnVtIHR5cGVf Y29kZSB0eXBlY29kZTsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hdnItdGRlcC5j CitJbmRleDogZ2RiLTcuNy4xL2dkYi9hdnItdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi9hdnItdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTgw NzQ3NzI3ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYXZyLXRkZXAuYwkyMDE0 LTAyLTA2IDE4OjIwOjU3LjI5OTc1MjM2NyArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9h dnItdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjg2MjUyNzcxICswMjAwCisrKysgZ2RiLTcu Ny4xL2dkYi9hdnItdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjIzNzAzNzY4ICswMjAwCiBA QCAtMTE2NywxMyArMTE2NywxNCBAQCBhdnJfZHVtbXlfaWQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBzCiAgCiAgc3RydWN0IHN0YWNrX2l0ZW0KQEAgLTM0NSwxMCArMzQ1LDEwIEBAIEluZGV4 OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hdnItdGRlcC5jCiAgCiAgICAgICAgLyogQ2FsY3Vs YXRlIHRoZSBwb3RlbnRpYWwgbGFzdCByZWdpc3RlciBuZWVkZWQuICAqLwogICAgICAgIGxhc3Rf cmVnbnVtID0gcmVnbnVtIC0gKGxlbiArIChsZW4gJiAxKSk7Ci1JbmRleDogZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvYmZpbi10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL2JmaW4tdGRlcC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9iZmluLXRkZXAu YwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk4MDc0NzcyNyArMDEwMAotKysrIGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL2JmaW4tdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzAwNzUyMzY4ICswMTAw CistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2JmaW4tdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTgu Njg2MjUyNzcxICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9iZmluLXRkZXAuYwkyMDE0LTA1LTA5 IDIwOjAyOjA5LjYyMzcwMzc2OCArMDIwMAogQEAgLTUwNiw3ICs1MDYsNyBAQCBiZmluX3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgICBnZGJfYnl0ZSBidWZbNF07CiAgICBp bnQgaTsKQEAgLTM2NywxMCArMzY3LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9iZmluLXRkZXAuYwogIAogICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47CiAgICAgICAgd3Jp dGVfbWVtb3J5IChzcCwgdmFsdWVfY29udGVudHNfd3JpdGVhYmxlIChhcmdzW2ldKSwgY29udGFp bmVyX2xlbik7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY3Jpcy10ZGVwLmMKK0lu ZGV4OiBnZGItNy43LjEvZ2RiL2NyaXMtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45 MC4yMDE0MDEyNy5vcmlnL2dkYi9jcmlzLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk4MTc0 NzcyOCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NyaXMtdGRlcC5jCTIwMTQt MDItMDYgMTg6MjA6NTcuMzAxNzUyMzY5ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2Ny aXMtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjg3MjUyNzcxICswMjAwCisrKysgZ2RiLTcu Ny4xL2dkYi9jcmlzLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyMzcwMzc2OCArMDIwMAog QEAgLTY2NSwxMyArNjY1LDEzIEBAIHN0YXRpYyBDT1JFX0FERFIgY3Jpc191bndpbmRfc3AgKHN0 cnVjdAogIAogIHN0cnVjdCBzdGFja19pdGVtCkBAIC00MDUsMTAgKzQwNSwxMCBAQCBJbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY3Jpcy10ZGVwLmMKICAgICAgICAKICAgICAgICAvKiBI b3cgbWF5IHJlZ2lzdGVycyB3b3J0aCBvZiBzdG9yYWdlIGRvIHdlIG5lZWQgZm9yIHRoaXMgYXJn dW1lbnQ/ICAqLwogICAgICAgIHJlZ19kZW1hbmQgPSAobGVuIC8gNCkgKyAobGVuICUgNCAhPSAw ID8gMSA6IDApOwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2g4MzAwLXRkZXAuYwor SW5kZXg6IGdkYi03LjcuMS9nZGIvaDgzMDAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi9oODMwMC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45 ODE3NDc3MjggKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9oODMwMC10ZGVwLmMJ MjAxNC0wMi0wNiAxODoyMDo1Ny4zMDE3NTIzNjkgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9n ZGIvaDgzMDAtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjg4MjUyNzcxICswMjAwCisrKysg Z2RiLTcuNy4xL2dkYi9oODMwMC10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MjQ3MDM3Njgg KzAyMDAKIEBAIC02NDAsNyArNjQwLDcgQEAgaDgzMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZwogIAkJICAgICAgIGludCBzdHJ1Y3RfcmV0dXJuLCBDT1JFX0FERFIgc3RydWN0 X2FkZHIpCiAgewpAQCAtNDQxLDEwICs0NDEsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL2g4MzAwLXRkZXAuYwogIAogIAkgICAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8 IHBhZGRlZF9sZW47IG9mZnNldCArPSB3b3Jkc2l6ZSkKICAJCXsKLUluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9ocHBhLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvaHBwYS10ZGVw LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2hwcGEtdGRl cC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTgyNzQ3NzI5ICswMTAwCi0rKysgZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvaHBwYS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDI3NTIzNzEgKzAx MDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvaHBwYS10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDox OC42OTAyNTI3NzEgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL2hwcGEtdGRlcC5jCTIwMTQtMDUt MDkgMjA6MDI6MDkuNjI0NzAzNzY4ICswMjAwCiBAQCAtOTYxLDcgKzk2MSw3IEBAIGhwcGE2NF9w dXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgICAgewogICAgICAgIHN0cnVjdCB2 YWx1ZSAqYXJnID0gYXJnc1tpXTsKQEAgLTQ2MywxMCArNDYzLDEwIEBAIEluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9ocHBhLXRkZXAuYwogICAgaW50IHJlZ251bSwgb2Zmc2V0OwogIAog ICAgaWYgKGxlbiA+IDE2KQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2kzODYtZGFy d2luLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvaTM4Ni1kYXJ3aW4tdGRlcC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9pMzg2LWRhcndpbi10ZGVw LmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45ODI3NDc3MjkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi9pMzg2LWRhcndpbi10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDI3NTIz NzEgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvaTM4Ni1kYXJ3aW4tdGRlcC5jCTIwMTQt MDUtMDkgMTk6MjQ6MTguNjkwMjUyNzcxICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9pMzg2LWRh cndpbi10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MjQ3MDM3NjggKzAyMDAKIEBAIC0xNjQs NyArMTY0LDcgQEAgaTM4Nl9kYXJ3aW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYQogIAog ICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7IHdyaXRlX3Bhc3MrKykKQEAg LTQ3NiwxMCArNDc2LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pMzg2LWRh cndpbi10ZGVwLmMKICAgICAgICBpbnQgbnVtX20xMjggPSAwOwogIAogICAgICAgIGlmIChzdHJ1 Y3RfcmV0dXJuKQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2kzODYtdGRlcC5jCitJ bmRleDogZ2RiLTcuNy4xL2dkYi9pMzg2LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu OTAuMjAxNDAxMjcub3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45ODU3 NDc3MzIgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pMzg2LXRkZXAuYwkyMDE0 LTAyLTA2IDE4OjIwOjU3LjMwMzc1MjM3MiArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9p Mzg2LXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY5MjI1Mjc3MSArMDIwMAorKysrIGdkYi03 LjcuMS9nZGIvaTM4Ni10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MjU3MDM3NjkgKzAyMDAK IEBAIC0yNDczLDcgKzI0NzMsNyBAQCBpMzg2X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFy Y2ggKmdkCiAgICBnZGJfYnl0ZSBidWZbNF07CiAgICBpbnQgaTsKQEAgLTU0MywxMCArNTQzLDEw IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pMzg2LXRkZXAuYwogIAogICAgaWYg KGkzODZfZnBfcmVnbnVtX3AgKGdldF9mcmFtZV9hcmNoIChmcmFtZSksIHJlZ251bSkpCiAgICAg IHsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pYTY0LXRkZXAuYworSW5kZXg6IGdk Yi03LjcuMS9nZGIvaWE2NC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQw MTI3Lm9yaWcvZ2RiL2lhNjQtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTg2NzQ3NzMzICsw MTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaWE2NC10ZGVwLmMJMjAxNC0wMi0wNiAx ODoyMDo1Ny4zMDQ3NTIzNzMgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvaWE2NC10ZGVw LmMJMjAxNC0wNS0wOSAxOToyNDoxOC42OTMyNTI3NzEgKzAyMDAKKysrKyBnZGItNy43LjEvZ2Ri L2lhNjQtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjI2NzAzNzY5ICswMjAwCiBAQCAtMzg1 MSw4ICszODUxLDEwIEBAIGlhNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QK ICAgIGludCBhcmdubzsKICAgIHN0cnVjdCB2YWx1ZSAqYXJnOwpAQCAtNTYwLDEwICs1NjAsMTAg QEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2lhNjQtdGRlcC5jCiAgICBpbnQgZmxv YXRyZWc7CiAgICBVTE9OR0VTVCBic3A7CiAgICBDT1JFX0FERFIgZnVuY2Rlc2NhZGRyLCBwYywg Z2xvYmFsX3BvaW50ZXI7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaXEyMDAwLXRk ZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvaXEyMDAwLXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvaXEyMDAwLXRkZXAuYwkyMDE0LTAyLTA2IDE4 OjIwOjUyLjk4Njc0NzczMyArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2lxMjAw MC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDQ3NTIzNzMgKzAxMDAKKy0tLSBnZGItNy43 LjEub3JpZy9nZGIvaXEyMDAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY5MzI1Mjc3MSAr MDIwMAorKysrIGdkYi03LjcuMS9nZGIvaXEyMDAwLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5 LjYyNjcwMzc2OSArMDIwMAogQEAgLTY1NCw4ICs2NTQsOSBAQCBpcTIwMDBfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBjb25zdCBiZmRfYnl0ZSAqdmFsOwogICAgYmZkX2J5 dGUgYnVmWzRdOwpAQCAtNTc2LDEwICs1NzYsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL2lxMjAwMC10ZGVwLmMKICAgIC8qIFVzZWQgdG8gY29weSBzdHJ1Y3QgYXJndW1lbnRz IGludG8gdGhlIHN0YWNrLiAgKi8KICAgIENPUkVfQUREUiBzdHJ1Y3RfcHRyOwogIAotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL20zMnItdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dk Yi9tMzJyLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9n ZGIvbTMyci10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45ODY3NDc3MzMgKzAxMDAKLSsrKyBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi9tMzJyLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMw NDc1MjM3MyArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tMzJyLXRkZXAuYwkyMDE0LTA1 LTA5IDE5OjI0OjE4LjY5MzI1Mjc3MSArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvbTMyci10ZGVw LmMJMjAxNC0wNS0wOSAyMDowMjowOS42MjY3MDM3NjkgKzAyMDAKIEBAIC02ODksNyArNjg5LDcg QEAgbTMycl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgQ09SRV9BRERS IHJlZ3ZhbDsKICAgIGdkYl9ieXRlICp2YWw7CkBAIC01ODksMTAgKzU4OSwxMCBAQCBJbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbTMyci10ZGVwLmMKICAKICAgIC8qIEZpcnN0IGZvcmNl IHNwIHRvIGEgNC1ieXRlIGFsaWdubWVudC4gICovCiAgICBzcCA9IHNwICYgfjM7Ci1JbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbTY4ay10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2Ri L202OGstdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi9tNjhrLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk4Nzc0NzczNSArMDEwMAotKysrIGdk Yi03LjYuOTAuMjAxNDAxMjcvZ2RiL202OGstdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzA1 NzUyMzc0ICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL202OGstdGRlcC5jCTIwMTQtMDUt MDkgMTk6MjQ6MTguNjk0MjUyNzcxICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9tNjhrLXRkZXAu YwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyNzcwMzc2OSArMDIwMAogQEAgLTM4NCw3ICszODQsNyBA QCBtNjhrX3JlZ19zdHJ1Y3RfcmV0dXJuX3AgKHN0cnVjdCBnZGJhcmNoCiAgewogICAgc3RydWN0 IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CkBAIC02MTUsMTAg KzYxNSwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbTY4ay10ZGVwLmMKICAK ICAgICAgICAvKiBOb24tc2NhbGFycyBiaWdnZXIgdGhhbiA0IGJ5dGVzIGFyZSBsZWZ0IGFsaWdu ZWQsIG90aGVycyBhcmUKICAJIHJpZ2h0IGFsaWduZWQuICAqLwotSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL204OGstdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9tODhrLXRkZXAu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvbTg4ay10ZGVw LmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45ODc3NDc3MzUgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi9tODhrLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMwNTc1MjM3NCArMDEw MAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tODhrLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4 LjY5NDI1Mjc3MSArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvbTg4ay10ZGVwLmMJMjAxNC0wNS0w OSAyMDowMjowOS42Mjc3MDM3NjkgKzAyMDAKIEBAIC0yNjAsMTMgKzI2MCwxMyBAQCBtODhrX3N0 b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyCiAgewogICAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwpAQCAtNjQ2LDEwICs2NDYs MTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL204OGstdGRlcC5jCiAgCiAgICAg ICAgaWYgKG04OGtfaW5fcmVnaXN0ZXJfcCAodHlwZSkpCiAgCXsKLUluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9tZXAtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9tZXAtdGRlcC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9tZXAtdGRlcC5j CTIwMTQtMDItMDYgMTg6MjA6NTIuOTg3NzQ3NzM1ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvbWVwLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMwNjc1MjM3NSArMDEwMAor LS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tZXAtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNjk1 MjUyNzcyICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9tZXAtdGRlcC5jCTIwMTQtMDUtMDkgMjA6 MDI6MDkuNjI3NzAzNzY5ICswMjAwCiBAQCAtMjI3Miw3ICsyMjcyLDcgQEAgcHVzaF9sYXJnZV9h cmd1bWVudHMgKENPUkVfQUREUiBzcCwgaW50CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsg aSsrKQpAQCAtNjU5LDEwICs2NTksMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2Ri L21lcC10ZGVwLmMKICAKICAgICAgICBpZiAoYXJnX2xlbiA+IE1FUF9HUFJfU0laRSkKICAgICAg ICAgIHsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9taXBzLXRkZXAuYworSW5kZXg6 IGdkYi03LjcuMS9nZGIvbWlwcy10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIw MTQwMTI3Lm9yaWcvZ2RiL21pcHMtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTkwNzQ3NzM4 ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbWlwcy10ZGVwLmMJMjAxNC0wMi0w NiAxODoyMDo1Ny4zMDc3NTIzNzYgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvbWlwcy10 ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC42OTgyNTI3NzIgKzAyMDAKKysrKyBnZGItNy43LjEv Z2RiL21pcHMtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjI4NzAzNzY5ICswMjAwCiBAQCAt NDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkCiAgbWlwc194ZmVyX3JlZ2lzdGVyIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKICAJCSAgICBpbnQg cmVnX251bSwgaW50IGxlbmd0aCwKQEAgLTgwOCwxMCArODA4LDEwIEBAIEluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9taXBzLXRkZXAuYwogIAogICAgICAgIHZhbCA9IHZhbHVlX2NvbnRl bnRzIChhcmcpOwogIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL21uMTAzMDAtdGRl cC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9tbjEwMzAwLXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvbW4xMDMwMC10ZGVwLmMJMjAxNC0wMi0wNiAx ODoyMDo1Mi45OTE3NDc3MzkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9tbjEw MzAwLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMwODc1MjM3NyArMDEwMAorLS0tIGdkYi03 LjcuMS5vcmlnL2dkYi9tbjEwMzAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjY5ODI1Mjc3 MiArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvbW4xMDMwMC10ZGVwLmMJMjAxNC0wNS0wOSAyMDow MjowOS42Mjk3MDM3NzAgKzAyMDAKIEBAIC0xMjI3LDcgKzEyMjcsNyBAQCBtbjEwMzAwX3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVy ID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIGNvbnN0IGludCBwdXNoX3NpemUg PSByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCBFX1BDX1JFR05VTSk7CkBAIC04MjEsMTAgKzgyMSwx MCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbW4xMDMwMC10ZGVwLmMKICAgIGlu dCBzdGFja19vZmZzZXQgPSAwOwogICAgaW50IGFyZ251bTsKICAgIGNvbnN0IGdkYl9ieXRlICp2 YWw7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbXQtdGRlcC5jCitJbmRleDogZ2Ri LTcuNy4xL2dkYi9tdC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3 Lm9yaWcvZ2RiL210LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk5MTc0NzczOSArMDEwMAot KysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL210LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3 LjMwODc1MjM3NyArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9tdC10ZGVwLmMJMjAxNC0w NS0wOSAxOToyNDoxOC42OTkyNTI3NzIgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL210LXRkZXAu YwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYyOTcwMzc3MCArMDIwMAogQEAgLTc4Myw5ICs3ODMsOSBA QCBtdF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhCiAgICBnZGJfYnl0ZSBi dWZbTVRfTUFYX1NUUlVDVF9TSVpFXTsKICAgIGludCBhcmdyZWcgPSBNVF8xU1RfQVJHUkVHOwpA QCAtODM3LDEwICs4MzcsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL210LXRk ZXAuYwogICAgaW50IGksIGo7CiAgCiAgICAvKiBGaXJzdCBoYW5kbGUgaG93ZXZlciBtYW55IGFy Z3Mgd2UgY2FuIGZpdCBpbnRvIE1UXzFTVF9BUkdSRUcgdGhydQotSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL3BwYy1zeXN2LXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvcHBjLXN5 c3YtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9w cGMtc3lzdi10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTI3NDc3NDAgKzAxMDAKLSsrKyBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi9wcGMtc3lzdi10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1 Ny4zMDg3NTIzNzcgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvcHBjLXN5c3YtdGRlcC5j CTIwMTQtMDUtMDkgMTk6MjQ6MTguNjk5MjUyNzcyICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9w cGMtc3lzdi10ZGVwLmMJMjAxNC0wNS0wOSAyMDoxMDoxMy45OTQ4MDc3MDkgKzAyMDAKIEBAIC02 OCw3ICs2OCw3IEBAIHBwY19zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGIKICAg IGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNo KTsKICAgIGludCBvcGVuY2xfYWJpID0gcHBjX3N5c3ZfdXNlX29wZW5jbF9hYmkgKHZhbHVlX3R5 cGUgKGZ1bmN0aW9uKSk7CkBAIC04NzEsMzYgKzg3MSwyNCBAQCBJbmRleDogZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvcHBjLXN5c3YtdGRlcC5jCiAgCSAgY29uc3QgYmZkX2J5dGUgKnZhbCA9IHZh bHVlX2NvbnRlbnRzIChhcmcpOwogIAogIAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9GTFQgJiYgbGVuIDw9IDgKLUBAIC0xNjEzLDE0ICsxNjEzLDE0IEBAIHBwYzY0X3N5c3Zf YWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGcKLSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICB7 Ci0tCSAgICAgIGludCBieXRlOwotKwkgICAgICBzc2l6ZV90IGJ5dGU7Ci0gCSAgICAgIGZvciAo Ynl0ZSA9IDA7IGJ5dGUgPCBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCQkgICBieXRlICs9IHRkZXAt PndvcmRzaXplKQotIAkJewotIAkJICBpZiAod3JpdGVfcGFzcyAmJiBncmVnIDw9IDEwKQotIAkJ ICAgIHsKLSAJCSAgICAgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tCQkg ICAgICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC0gYnl0ZTsKLSsJCSAgICAgIHNzaXpl X3QgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC0gYnl0ZTsKLSAJCSAgICAgIGlmIChsZW4gPiB0 ZGVwLT53b3Jkc2l6ZSkKLSAJCQlsZW4gPSB0ZGVwLT53b3Jkc2l6ZTsKLSAJCSAgICAgIG1lbXNl dCAocmVndmFsLCAwLCBzaXplb2YgcmVndmFsKTsKLUBAIC0xNjQ4LDcgKzE2NDgsNyBAQCBwcGM2 NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCi0gCQkgICAgIHJlZ2lzdGVyLiAg V29yayBhcm91bmQgdGhpcyBieSBhbHdheXMgd3JpdGluZyB0aGUKLSAJCSAgICAgdmFsdWUgdG8g bWVtb3J5LiAgRm9ydHVuYXRlbHksIGRvaW5nIHRoaXMKLSAJCSAgICAgc2ltcGxpZmllcyB0aGUg Y29kZS4gICovCi0tCQkgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0rCQkgIHNzaXpl X3QgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAkJICBpZiAobGVuIDwgdGRlcC0+d29yZHNp emUpCi0gCQkgICAgd3JpdGVfbWVtb3J5IChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6ZSAtIGxlbiwg dmFsLCBsZW4pOwotIAkJICBlbHNlCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvcmw3 OC10ZGVwLmMKK0BAIC0xMjg1LDExICsxMjg1LDExIEBAIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bv cworIAorIHN0YXRpYyB2b2lkCisgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAorLQkJCSBjb25zdCBiZmRfYnl0ZSAqdmFsLCBpbnQgbGVuLCBpbnQgYWxp Z24sCisrCQkJIGNvbnN0IGJmZF9ieXRlICp2YWwsIHNzaXplX3QgbGVuLCBpbnQgYWxpZ24sCisg CQkJIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQorIHsKKyAgIHN0cnVjdCBnZGJh cmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworLSAgaW50IG9mZnNldCA9 IDA7CisrICBzc2l6ZV90IG9mZnNldCA9IDA7CisgCisgICAvKiBFbmZvcmNlIGFsaWdubWVudCBv ZiBzdGFjayBsb2NhdGlvbiwgaWYgcmVxdWVzdGVkLiAgKi8KKyAgIGlmIChhbGlnbiA+IHRkZXAt PndvcmRzaXplKQorSW5kZXg6IGdkYi03LjcuMS9nZGIvcmw3OC10ZGVwLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3JsNzgtdGRlcC5jCTIwMTQtMDItMDYg MTg6MjA6NTIuOTkyNzQ3NzQwICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvcmw3 OC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMDk3NTIzNzggKzAxMDAKKy0tLSBnZGItNy43 LjEub3JpZy9nZGIvcmw3OC10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC43MDAyNTI3NzIgKzAy MDAKKysrKyBnZGItNy43LjEvZ2RiL3JsNzgtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjMw NzAzNzcwICswMjAwCiBAQCAtMTA1Miw4ICsxMDUyLDggQEAgcmw3OF9wdXNoX2R1bW15X2NhbGwg KHN0cnVjdCBnZGJhcmNoICpnZAogICAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkK ICAgICAgewpAQCAtOTEyLDEwICs5MDAsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL3JsNzgtdGRlcC5jCiAgCiAgICAgICAgc3AgLT0gY29udGFpbmVyX2xlbjsKICAgICAgICB3 cml0ZV9tZW1vcnkgKHJsNzhfbWFrZV9kYXRhX2FkZHJlc3MgKHNwKSwKLUluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9yczYwMDAtYWl4LXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIv cnM2MDAwLWFpeC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9y aWcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTkzNzQ3NzQxICsw MTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvcnM2MDAwLWFpeC10ZGVwLmMJMjAxNC0w Mi0wNiAxODoyMDo1Ny4zMDk3NTIzNzggKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvcnM2 MDAwLWFpeC10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC43MDAyNTI3NzIgKzAyMDAKKysrKyBn ZGItNy43LjEvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjMwNzAz NzcwICswMjAwCiBAQCAtMTk2LDkgKzE5Niw5IEBAIHJzNjAwMF9wdXNoX2R1bW15X2NhbGwgKHN0 cnVjdCBnZGJhcmNoICoKICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3Rk ZXAgKGdkYmFyY2gpOwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5 dGVfb3JkZXIgKGdkYmFyY2gpOwpAQCAtOTM3LDEwICs5MjUsMTAgQEAgSW5kZXg6IGdkYi03LjYu OTAuMjAxNDAxMjcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCiAgCiAgICAgICAgaWYgKGFyZ2J5dGVz KQogIAl7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvczM5MC1saW51eC10ZGVwLmMK K0luZGV4OiBnZGItNy43LjEvZ2RiL3MzOTAtbGludXgtdGRlcC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9zMzkwLWxpbnV4LXRkZXAuYwkyMDE0LTAyLTA2 IDE4OjIwOjUyLjk5Mzc0Nzc0MSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Mz OTAtbGludXgtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjI6MTcuMzMwODM4Mzg5ICswMTAwCistLS0g Z2RiLTcuNy4xLm9yaWcvZ2RiL3MzOTAtbGludXgtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTgu NzAxMjUyNzcyICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9zMzkwLWxpbnV4LXRkZXAuYwkyMDE0 LTA1LTA5IDIwOjAyOjA5LjYzMTcwMzc3MCArMDIwMAogQEAgLTI1MjYsNyArMjUyNiw3IEBAIGlz X2Zsb2F0X2xpa2UgKHN0cnVjdCB0eXBlICp0eXBlKQogIAogIApAQCAtOTU5LDEwICs5NDcsMTAg QEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3MzOTAtbGludXgtdGRlcC5jCiAgCiAg CWlmIChzMzkwX2Z1bmN0aW9uX2FyZ19wYXNzX2J5X3JlZmVyZW5jZSAodHlwZSkpCiAgCSAgewot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Njb3JlLXRkZXAuYworSW5kZXg6IGdkYi03 LjcuMS9nZGIvc2NvcmUtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEy Ny5vcmlnL2dkYi9zY29yZS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTQ3NDc3NDIgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zY29yZS10ZGVwLmMJMjAxNC0wMi0wNiAx ODoyMDo1Ny4zMTA3NTIzNzkgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvc2NvcmUtdGRl cC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNzAxMjUyNzcyICswMjAwCisrKysgZ2RiLTcuNy4xL2dk Yi9zY29yZS10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MzE3MDM3NzAgKzAyMDAKIEBAIC01 MTUsNyArNTE1LDcgQEAgc2NvcmVfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZwog ICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFy Y2gpOwogICAgaW50IGFyZ251bTsKQEAgLTk3MiwxMCArOTYwLDEwIEBAIEluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9zY29yZS10ZGVwLmMKICAgIENPUkVfQUREUiBzdGFja19vZmZzZXQg PSAwOwogICAgQ09SRV9BRERSIGFkZHIgPSAwOwogIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL3NoLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIvc2gtdGRlcC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9zaC10ZGVwLmMJMjAxNC0wMi0w NiAxODoyMDo1Mi45OTU3NDc3NDMgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9z aC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMTA3NTIzNzkgKzAxMDAKKy0tLSBnZGItNy43 LjEub3JpZy9nZGIvc2gtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNzAyMjUyNzcyICswMjAw CisrKysgZ2RiLTcuNy4xL2dkYi9zaC10ZGVwLmMJMjAxNC0wNS0wOSAyMDowMjowOS42MzE3MDM3 NzAgKzAyMDAKIEBAIC04MDcsNyArODA3LDcgQEAgc2hfc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyYwogIHN0YXRpYyBpbnQKICBzaF91c2Vfc3RydWN0X2NvbnZlbnRpb24gKGlu dCByZW5lc2FzX2FiaSwgc3RydWN0IHR5cGUgKnR5cGUpCkBAIC0xMDE0LDEwICsxMDAyLDEwIEBA IEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zaC10ZGVwLmMKICAgIGludCBwYXNzX29u X3N0YWNrID0gMDsKICAgIGludCBsYXN0X3JlZ19hcmcgPSBJTlRfTUFYOwogIAotSW5kZXg6IGdk Yi03LjYuOTAuMjAxNDAxMjcvZ2RiL3NoNjQtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9z aDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIv c2g2NC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTU3NDc3NDMgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9zaDY0LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMxMTc1 MjM4MCArMDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9zaDY0LXRkZXAuYwkyMDE0LTA1LTA5 IDE5OjI0OjE4LjcwMjI1Mjc3MiArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvc2g2NC10ZGVwLmMJ MjAxNC0wNS0wOSAyMDowMjowOS42MzI3MDM3NzEgKzAyMDAKIEBAIC0xMDU4LDcgKzEwNTgsNyBA QCBzaDY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCQkgICAgICBDT1JF X0FERFIgc3RydWN0X2FkZHIpCiAgewpAQCAtMTAzNiwxMCArMTAyNCwxMCBAQCBJbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvc2g2NC10ZGVwLmMKICAgIGludCBhcmdyZWdfc2l6ZTsKICAg IGludCBmcF9hcmdzWzEyXTsKICAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zcGFy Yy10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL3NwYXJjLXRkZXAuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvc3BhcmMtdGRlcC5jCTIwMTQtMDItMDYg MTg6MjA6NTIuOTk2NzQ3NzQ0ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc3Bh cmMtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzExNzUyMzgwICswMTAwCistLS0gZ2RiLTcu Ny4xLm9yaWcvZ2RiL3NwYXJjLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjcwMzI1Mjc3MiAr MDIwMAorKysrIGdkYi03LjcuMS9nZGIvc3BhcmMtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDku NjMyNzAzNzcxICswMjAwCiBAQCAtNTAyLDcgKzUwMiw3IEBAIHNwYXJjMzJfc3RvcmVfYXJndW1l bnRzIChzdHJ1Y3QgcmVnY2FjaGUKICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQogICAg ICB7CkBAIC0xMDQ5LDEwICsxMDM3LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9zcGFyYy10ZGVwLmMKICAKICAgICAgICBpZiAoc3BhcmNfc3RydWN0dXJlX29yX3VuaW9uX3Ag KHR5cGUpCiAgCSAgfHwgKHNwYXJjX2Zsb2F0aW5nX3AgKHR5cGUpICYmIGxlbiA9PSAxNikKLUlu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zcGFyYzY0LXRkZXAuYworSW5kZXg6IGdkYi03 LjcuMS9nZGIvc3BhcmM2NC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQw MTI3Lm9yaWcvZ2RiL3NwYXJjNjQtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTk2NzQ3NzQ0 ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxNC0w Mi0wNiAxODoyMDo1Ny4zMTE3NTIzODAgKzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIvc3Bh cmM2NC10ZGVwLmMJMjAxNC0wNS0wOSAxOToyNDoxOC43MDQyNTI3NzMgKzAyMDAKKysrKyBnZGIt Ny43LjEvZ2RiL3NwYXJjNjQtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6MDkuNjMyNzAzNzcxICsw MjAwCiBAQCAtNjM5LDcgKzYzOSw4IEBAIHNwYXJjNjRfMTZfYnl0ZV9hbGlnbl9wIChzdHJ1Y3Qg dHlwZSAqdHkKICAKICBzdGF0aWMgdm9pZApAQCAtMTEwOCwxMCArMTA5NiwxMCBAQCBJbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvc3BhcmM2NC10ZGVwLmMKICAgICAgICBpbnQgcmVnbnVt ID0gLTE7CiAgICAgICAgZ2RiX2J5dGUgYnVmWzE2XTsKICAKLUluZGV4OiBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi9zcHUtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi9zcHUtdGRlcC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9zcHUtdGRlcC5jCTIw MTQtMDItMDYgMTg6MjA6NTIuOTk3NzQ3NzQ1ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvc3B1LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMxMjc1MjM4MSArMDEwMAorLS0t IGdkYi03LjcuMS5vcmlnL2dkYi9zcHUtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNzA0MjUy NzczICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi9zcHUtdGRlcC5jCTIwMTQtMDUtMDkgMjA6MDI6 MDkuNjMzNzAzNzcxICswMjAwCiBAQCAtMTM3Niw3ICsxMzc2LDcgQEAgc3B1X3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJn c1tpXTsKICAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5 cGUgKGFyZykpOwpAQCAtMTEzMCwxMCArMTExOCwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvc3B1LXRkZXAuYwogIAkgIGludCBwcmVmZXJyZWRfc2xvdDsKICAJICAKICAJICBp ZiAoc3B1X3NjYWxhcl92YWx1ZV9wICh0eXBlKSkKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi90aWM2eC10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2RiL3RpYzZ4LXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvdGljNngtdGRlcC5jCTIw MTQtMDItMDYgMTg6MjA6NTIuOTk3NzQ3NzQ1ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvdGljNngtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzEyNzUyMzgxICswMTAwCist LS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3RpYzZ4LXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4Ljcw NTI1Mjc3MyArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvdGljNngtdGRlcC5jCTIwMTQtMDUtMDkg MjA6MDI6MDkuNjMzNzAzNzcxICswMjAwCiBAQCAtODk2LDcgKzg5Niw3IEBAIHRpYzZ4X3B1c2hf ZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICAgIGludCBhcmdyZWcgPSAwOwogICAgaW50 IGFyZ251bTsKQEAgLTExNzEsMTAgKzExNTksMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL3RpYzZ4LXRkZXAuYwogIAogIAkgIGFkZHIgPSBzcCArIHN0YWNrX29mZnNldDsKICAJ ICB3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbCwgbGVuKTsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi90aWxlZ3gtdGRlcC5jCitJbmRleDogZ2RiLTcuNy4xL2dkYi90aWxlZ3gtdGRlcC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi90aWxlZ3gtdGRl cC5jCTIwMTQtMDItMDYgMTg6MjA6NTIuOTk4NzQ3NzQ2ICswMTAwCi0rKysgZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvdGlsZWd4LXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjU3LjMxMjc1MjM4MSAr MDEwMAorLS0tIGdkYi03LjcuMS5vcmlnL2dkYi90aWxlZ3gtdGRlcC5jCTIwMTQtMDUtMDkgMTk6 MjQ6MTguNzA1MjUyNzczICswMjAwCisrKysgZ2RiLTcuNy4xL2dkYi90aWxlZ3gtdGRlcC5jCTIw MTQtMDUtMDkgMjA6MDI6MDkuNjMzNzAzNzcxICswMjAwCiBAQCAtMjkwLDcgKzI5MCw3IEBAIHRp bGVneF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgIENPUkVfQUREUiBzdGFj a19kZXN0ID0gc3A7CiAgICBpbnQgYXJncmVnID0gVElMRUdYX1IwX1JFR05VTTsKQEAgLTExODQs MTAgKzExNzIsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3RpbGVneC10ZGVw LmMKICAgIHN0YXRpYyBjb25zdCBnZGJfYnl0ZSBmb3VyX3plcm9fd29yZHNbMTZdID0geyAwIH07 CiAgCiAgICAvKiBJZiBzdHJ1Y3RfcmV0dXJuIGlzIDEsIHRoZW4gdGhlIHN0cnVjdCByZXR1cm4g YWRkcmVzcyB3aWxsCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdjg1MC10ZGVwLmMK K0luZGV4OiBnZGItNy43LjEvZ2RiL3Y4NTAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi92ODUwLXRkZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUyLjk5 ODc0Nzc0NiArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Y4NTAtdGRlcC5jCTIw MTQtMDItMDYgMTg6MjA6NTcuMzEzNzUyMzgzICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2Ri L3Y4NTAtdGRlcC5jCTIwMTQtMDUtMDkgMTk6MjQ6MTguNzA1MjUyNzczICswMjAwCisrKysgZ2Ri LTcuNy4xL2dkYi92ODUwLXRkZXAuYwkyMDE0LTA1LTA5IDIwOjAyOjA5LjYzNDcwMzc3MSArMDIw MAogQEAgLTEwMjEsNyArMTAyMSw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2QKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29y ZGVyIChnZGJhcmNoKTsKICAgIGludCBhcmdyZWc7CkBAIC0xMjA2LDEwICsxMTk0LDEwIEBAIElu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi92ODUwLXRkZXAuYwogICAgICAgIGdkYl9ieXRl ICp2YWw7CiAgICAgICAgZ2RiX2J5dGUgdmFsYnVmW3Y4NTBfcmVnX3NpemVdOwogIAotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZheC10ZGVwLmMKK0luZGV4OiBnZGItNy43LjEvZ2Ri L3ZheC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2Ri L3ZheC10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Mi45OTg3NDc3NDYgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi92YXgtdGRlcC5jCTIwMTQtMDItMDYgMTg6MjA6NTcuMzEzNzUy MzgzICswMTAwCistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3ZheC10ZGVwLmMJMjAxNC0wNS0wOSAx OToyNDoxOC43MDYyNTI3NzMgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL3ZheC10ZGVwLmMJMjAx NC0wNS0wOSAyMDowMjowOS42MzQ3MDM3NzEgKzAyMDAKIEBAIC0xMTUsNyArMTE1LDcgQEAgdmF4 X3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyZQogICAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwogICAgZW51bSBiZmRfZW5k aWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwpAQCAtMTIyOCwx MCArMTIxNiwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdmF4LXRkZXAuYwog IAogICAgICAgIHNwIC09IChsZW4gKyAzKSAmIH4zOwogICAgICAgIGNvdW50ICs9IChsZW4gKyAz KSAvIDQ7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIveHN0b3JteTE2LXRkZXAuYwor SW5kZXg6IGdkYi03LjcuMS9nZGIveHN0b3JteTE2LXRkZXAuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIveHN0b3JteTE2LXRkZXAuYwkyMDE0LTAyLTA2IDE4 OjIwOjUyLjk5OTc0Nzc0OCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3hzdG9y bXkxNi10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMTM3NTIzODMgKzAxMDAKKy0tLSBnZGIt Ny43LjEub3JpZy9nZGIveHN0b3JteTE2LXRkZXAuYwkyMDE0LTA1LTA5IDE5OjI0OjE4LjcwNjI1 Mjc3MyArMDIwMAorKysrIGdkYi03LjcuMS9nZGIveHN0b3JteTE2LXRkZXAuYwkyMDE0LTA1LTA5 IDIwOjAyOjA5LjYzNDcwMzc3MSArMDIwMAogQEAgLTIzNSw4ICsyMzUsOSBAQCB4c3Rvcm15MTZf cHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjCiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9v cmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBDT1JFX0FERFIgc3RhY2tf ZGVzdCA9IHNwOwpAQCAtMTI0NCwxMCArMTIzMiwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIveHN0b3JteTE2LXRkZXAuYwogICAgY29uc3QgZ2RiX2J5dGUgKnZhbDsKICAgIGdk Yl9ieXRlIGJ1Zlt4c3Rvcm15MTZfcGNfc2l6ZV07CiAgCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIveHRlbnNhLXRkZXAuYworSW5kZXg6IGdkYi03LjcuMS9nZGIveHRlbnNhLXRkZXAu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIveHRlbnNhLXRk ZXAuYwkyMDE0LTAyLTA2IDE4OjIwOjUzLjAwMDc0Nzc0OSArMDEwMAotKysrIGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL3h0ZW5zYS10ZGVwLmMJMjAxNC0wMi0wNiAxODoyMDo1Ny4zMTQ3NTIzODQg KzAxMDAKKy0tLSBnZGItNy43LjEub3JpZy9nZGIveHRlbnNhLXRkZXAuYwkyMDE0LTA1LTA5IDE5 OjI0OjE4LjcwNzI1Mjc3MyArMDIwMAorKysrIGdkYi03LjcuMS9nZGIveHRlbnNhLXRkZXAuYwky MDE0LTA1LTA5IDIwOjAyOjA5LjYzNDcwMzc3MSArMDIwMAogQEAgLTE2NTIsOCArMTY1Miw3IEBA IHh0ZW5zYV9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICoKICAKICAgICAgICBpZiAo bGVuID4gKGNhbGxzaXplID4gOCA/IDggOiAxNikpCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFt LXBwYzY0bGUwMm9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTAyb2YxNS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDJlM2Y1Ci0tLSAvZGV2L251bGwK KysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwMm9mMTUucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAor Y29tbWl0IDcxOGVlNGRjOWIwOTQ5MTcwNzQyMGFlNDAzYWQxY2U4ZGZkYjYxYjIKK0F1dGhvcjog VWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+CitEYXRlOiAgIFRodSBK YW4gMzAgMTk6MTI6MzUgMjAxNCArMDEwMAorCisgICAgQWRkIHN1cHBvcnQgZm9yIEFUX0hXQ0FQ MiBhdXh2IGVudHJ5CisgICAgCisgICAgUmVjZW50IHBwYzY0IExpbnV4IGtlcm5lbHMgcHJvdmlk ZSBhIG5ldyBhdXh2IGVudHJ5IEFUX0hXQ0FQMiwKKyAgICB3aGljaCBpcyBjdXJyZW50bHkgbm90 IHJlY29nbml6ZWQgYnkgR0RCLCBjYXVzaW5nIGV2ZXJ5IHVzZSBvZgorICAgICJpbmZvIGF1eHYi IHRvIHNob3cgYW4gZXJyb3IuCisgICAgCisgICAgVGhpcyBjb21taXQgYWRkcyB0aGUgQVRfSFdD QVAyIGRlZmluZSB0byBpbmNsdWRlL2VsZi9jb21tb24uaAorICAgIGFuZCBoYW5kbGVzIGl0IGlu IEdEQi4KKyAgICAKKyAgICBpbmNsdWRlL2VsZi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogY29t bW9uLmggKEFUX0hXQ0FQMik6IERlZmluZS4KKyAgICAKKyAgICBnZGIvQ2hhbmdlTG9nOgorICAg IAorICAgIAkqIGF1eHYuYyAoZnByaW50X3RhcmdldF9hdXh2KTogSGFuZGxlIEFUX0hXQ0FQMi4K KworIyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsMyArMSw3 IEBACisrMjAxNC0wMS0zMCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4K KysKKysJKiBhdXh2LmMgKGZwcmludF90YXJnZXRfYXV4dik6IEhhbmRsZSBBVF9IV0NBUDIuCisr CisgMjAxNC0wMS0yOSAgSm9zZSBFLiBNYXJjaGVzaSAgPGpvc2UubWFyY2hlc2lAb3JhY2xlLmNv bT4KKyAKKyAJKiBzcGFyYzY0LWxpbnV4LXRkZXAuYyAoc3BhcmM2NF9saW51eF9zdGVwX3RyYXAp OiBHZXQgUEMgZnJvbQorLS0tIGEvZ2RiL2F1eHYuYworKysrIGIvZ2RiL2F1eHYuYworQEAgLTQ0 Miw2ICs0NDIsNyBAQCBmcHJpbnRfdGFyZ2V0X2F1eHYgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQorIAkgIFRBRyAoQVRfSUdOT1JFUFBDLCBfKCJFbnRyeSBz aG91bGQgYmUgaWdub3JlZCIpLCBkZWMpOworIAkgIFRBRyAoQVRfQkFTRV9QTEFURk9STSwgXygi U3RyaW5nIGlkZW50aWZ5aW5nIGJhc2UgcGxhdGZvcm0iKSwgc3RyKTsKKyAJICBUQUcgKEFUX1JB TkRPTSwgXygiQWRkcmVzcyBvZiAxNiByYW5kb20gYnl0ZXMiKSwgaGV4KTsKKysJICBUQUcgKEFU X0hXQ0FQMiwgXygiRXh0ZW5zaW9uIG9mIEFUX0hXQ0FQIiksIGhleCk7CisgCSAgVEFHIChBVF9F WEVDRk4sIF8oIkZpbGUgbmFtZSBvZiBleGVjdXRhYmxlIiksIHN0cik7CisgCSAgVEFHIChBVF9T RUNVUkUsIF8oIkJvb2xlYW4sIHdhcyBleGVjIHNldHVpZC1saWtlPyIpLCBkZWMpOworIAkgIFRB RyAoQVRfU1lTSU5GTywgXygiU3BlY2lhbCBzeXN0ZW0gaW5mby9lbnRyeSBwb2ludHMiKSwgaGV4 KTsKKyMjIyBhL2luY2x1ZGUvZWxmL0NoYW5nZUxvZworIyMjIGIvaW5jbHVkZS9lbGYvQ2hhbmdl TG9nCisjIyAtMSwzICsxLDcgQEAKKysyMDE0LTAxLTMwICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWln YW5kQGRlLmlibS5jb20+CisrCisrCSogY29tbW9uLmggKEFUX0hXQ0FQMik6IERlZmluZS4KKysK KyAyMDEzLTEyLTEzICBLdWFuLUxpbiBDaGVuICA8a3VhbmxpbmNoZW50d0BnbWFpbC5jb20+Cisg CSAgICBXZWktQ2hlbmcgV2FuZyAgPGNvbGU5NDVAZ21haWwuY29tPgorIAorLS0tIGEvaW5jbHVk ZS9lbGYvY29tbW9uLmgKKysrKyBiL2luY2x1ZGUvZWxmL2NvbW1vbi5oCitAQCAtOTU5LDYgKzk1 OSw3IEBACisgI2RlZmluZSBBVF9CQVNFX1BMQVRGT1JNIDI0CQkvKiBTdHJpbmcgaWRlbnRpZnlp bmcgcmVhbCBwbGF0Zm9ybSwKKyAJCQkJCSAgIG1heSBkaWZmZXIgZnJvbSBBVF9QTEFURk9STS4g ICovCisgI2RlZmluZSBBVF9SQU5ET00JMjUJCS8qIEFkZHJlc3Mgb2YgMTYgcmFuZG9tIGJ5dGVz LiAgKi8KKysjZGVmaW5lIEFUX0hXQ0FQMgkyNgkJLyogRXh0ZW5zaW9uIG9mIEFUX0hXQ0FQLiAg Ki8KKyAjZGVmaW5lIEFUX0VYRUNGTgkzMQkJLyogRmlsZW5hbWUgb2YgZXhlY3V0YWJsZS4gICov CisgLyogUG9pbnRlciB0byB0aGUgZ2xvYmFsIHN5c3RlbSBwYWdlIHVzZWQgZm9yIHN5c3RlbSBj YWxscyBhbmQgb3RoZXIKKyAgICBuaWNlIHRoaW5ncy4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLXVw c3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTAzb2YxNS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGI0ZmNmCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gKQEAgLTAsMCArMSwz NiBAQAorY29tbWl0IDM2YzI0ZDk1MzgyNTcyZTljZjQwOTU3MTJhODYxMzY2NGQ3MTY1Y2MKK0F1 dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+CitEYXRlOiAg IFR1ZSBGZWIgNCAxODoxOTo1MSAyMDE0ICswMTAwCisKKyAgICBEb2N1bWVudCBzdXBwb3J0IGZv ciBwb3dlcnBjNjRsZS0qLWxpbnV4KiB0YXJnZXQKKyAgICAKKyAgICBnZGIvQ2hhbmdlTG9nOgor ICAgIAorICAgIAkqIE5FV1M6IERvY3VtZW50IG5ldyB0YXJnZXQgcG93ZXJwYzY0bGUtKi1saW51 eCouCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cKKyMjIyBiL2dkYi9DaGFuZ2VMb2cKKyMjIC0xLDMg KzEsNyBAQAorKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5j b20+CisrCisrCSogTkVXUzogRG9jdW1lbnQgbmV3IHRhcmdldCBwb3dlcnBjNjRsZS0qLWxpbnV4 Ki4KKysKKyAyMDE0LTAyLTA0ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KKyAK KyAJKiBzcGFyYzY0b2JzZC10ZGVwLmMgKHNwYXJjNjRvYnNkX2dyZWdzZXQpOiBOZXcgdmFyaWFi bGUuCitJbmRleDogZ2RiLTcuNy4xL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy4x Lm9yaWcvZ2RiL05FV1MJMjAxNC0wNS0wOSAxOToyMTo1Ny43OTgyMzUwMDIgKzAyMDAKKysrKyBn ZGItNy43LjEvZ2RiL05FV1MJMjAxNC0wNS0wOSAxOToyMjozMC4yMDYyMzkxNDUgKzAyMDAKK0BA IC0xLDYgKzEsMTEgQEAKKyAJCVdoYXQgaGFzIGNoYW5nZWQgaW4gR0RCPworIAkgICAgIChPcmdh bml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQorIAorKyoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA3LjcK KysKKysqIE5ldyB0YXJnZXRzCisrUG93ZXJQQzY0IEdOVS9MaW51eCBsaXR0bGUtZW5kaWFuCXBv d2VycGM2NGxlLSotbGludXgqCisrCisgKioqIENoYW5nZXMgaW4gR0RCIDcuNworIAorICogR0RC IG5vdyBzdXBwb3J0cyBTeXN0ZW1UYXAgU0RUIHByb2JlcyBvbiBBQXJjaDY0IEdOVS9MaW51eC4K CmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTA0b2YxNS5wYXRjaCBiL2dkYi11cHN0 cmVhbS1wcGM2NGxlMDRvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjFiNjczMGYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0tcHBjNjRsZTA0b2Yx NS5wYXRjaApAQCAtMCwwICsxLDE0MTMgQEAKK2NvbW1pdCBlNzY1YjQ0YzM4NTNlZDIyODUwNmZj MjJjMjc2YmVjZDYzMTk4MjM4CitBdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2Fu ZEBkZS5pYm0uY29tPgorRGF0ZTogICBUdWUgRmViIDQgMTg6MjQ6NDIgMjAxNCArMDEwMAorCisg ICAgUmVmYWN0b3IgcHBjNjQgZnVuY3Rpb24gY2FsbCBhbmQgcmV0dXJuIHZhbHVlIGhhbmRsaW5n CisgICAgCisgICAgVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIHBwYzY0IGZ1bmN0aW9uIGNhbGwg YW5kIHJldHVybiB2YWx1ZSBoYW5kbGluZyBjb2RlCisgICAgaW4gcHBjLXN5c3YtdGRlcC5jLiAg VGhlIG1haW4gcHJvYmxlbSB0byBiZSBhZGRyZXNzZWQgYnkgdGhpcyByZWZhY3RvcmluZworICAg IGlzIHRoZSBjb2RlIGR1cGxpY2F0aW9uIGNhdXNlZCBieSBjZXJ0YWluIGFnZ3JlZ2F0ZSB0eXBl czoKKyAgICAKKyAgICBBY2NvcmRpbmcgdG8gdGhlIEFCSSwgc29tZSB0eXBlcyBhcmUgdG8gYmUg ZGVjb21wb3NlZCBpbnRvIGNvbXBvbmVudCB0eXBlcworICAgIGZvciBwYXJhbWV0ZXIgYW5kIHJl dHVybiB2YWx1ZSBoYW5kbGluZy4gIEZvciBleGFtcGxlLCBjb21wbGV4IHR5cGVzIGFyZQorICAg IHRvIGJlIHBhc3NlZCBhcyBpZiB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IGNvbXBvbmVudCB3ZXJl IHNlcGFyYXRlIGFyZ3VtZW50cy4KKyAgICBTaW1pbGFybHksIGNlcnRhaW4gT3BlbkNMIHZlY3Rv ciB0eXBlcyBhcmUgcGFzc2VkIGFzIGlmIHRoZXkgd2VyZSBtdWx0aXBsZQorICAgIHNlcGFyYXRl IGFyZ3VtZW50cyBvZiB0aGUgdmVjdG9yIGVsZW1lbnQgdHlwZS4gIFdpdGggdGhlIG5ldyBFTEZ2 MiBBQkksCisgICAgdGhlcmUgaXMgYW5vdGhlciBjYXNlOiAiaG9tb2dlbmVvdXMgYWdncmVnYXRl cyIgKGUuZy4gYSBzdHJ1Y3QgY29udGFpbmluZworICAgIDQgZmxvYXRzKSBhcmUgcGFzc2VkIGlu IG11bHRpcGxlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBhcyB3ZWxsLgorICAgIAorICAgIFVu Zm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGNvZGUgaXMgbm90IHN0cnVjdHVyZWQgdG8gZWFzaWx5 IG1vZGVsIHRoZXNlCisgICAgQUJJIHByb3BlcnRpZXMuICBGb3IgZXhhbXBsZSwgY29kZSB0byBw YXNzIGNvbXBsZXggdmFsdWVzIHJlLWltcGxlbWVudHMKKyAgICBjb2RlIHRvIHBhc3MgdGhlIHVu ZGVybHlpbmcgKGZsb2F0aW5nLXBvaW50KSB0eXBlLiAgVGhpcyBoYXMgYWxyZWFkeQorICAgIGxl ZCB0byBzb21lIHVuZm9ydHVuYXRlIGNvZGUgZHVwbGljYXRpb24sIGFuZCB3aXRoIHRoZSBhZGRp dGlvbiBvZgorICAgIEVMRnYyIEFCSSBzdXBwb3J0LCBJIHdvdWxkIGhhdmUgaGFkIHRvIGFkZCB5 ZXQgbW9yZSBzdWNoIGR1cGxpY2F0aW9uLgorICAgIAorICAgIFRvIGF2b2lkIHRoYXQsIEkndmUg ZGVjaWRlZCB0byByZWZhY3RvciB0aGUgY29kZSBpbiBvcmRlciB0byByZS11c2UKKyAgICBzdWJy b3V0aW5lcyB0aGF0IGhhbmRsZSB0aGUgImJhc2UiIHR5cGVzIHdoZW4gaGFuZGxpbmcgdGhvc2Ug YWdncmVnYXRlCisgICAgdHlwZXMuICBUaGlzIHdhcyBub3QgaW50ZW5kZWQgdG8gY2F1c2UgYW55 IGRpZmZlcmVuY2Ugb24gY3VycmVudAorICAgIChFTEZ2MSkgQUJJIGNvZGUsIGJ1dCBpbiBmYWN0 IGl0IGZpeGVzIGEgYnVnOgorICAgIAorICAgIEZBSUw6IGdkYi5iYXNlL3ZhcmFyZ3MuZXhwOiBw cmludCBmaW5kX21heF9mbG9hdF9yZWFsKDQsIGZjMSwgZmMyLCBmYzMsIGZjNCkKKyAgICAKKyAg ICBUaGlzIHdhcyBjYXVzZWQgYnkgdGhlIG9sZCBjb2RlIGluIHBwYzY0X3N5c3ZfYWJpX3B1c2hf ZmxvYXQgaW5jb3JyZWN0bHkKKyAgICBoYW5kbGluZyBmbG9hdGluZy1wb2ludCBhcmd1bWVudHMg dG8gdmFyYXJnIHJvdXRpbmVzLCB3aGljaCBqdXN0IGhhcHBlbnMKKyAgICB0byB3b3JrIG91dCBj b3JyZWN0bHkgYXV0b21hdGljYWxseSBpbiB0aGUgcmVmYWN0b3JlZCBjb2RlIC4uLgorICAgIAor ICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogcHBjLXN5c3YtdGRlcC5jIChnZXRfZGVj aW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBVcGRhdGUgY29tbWVudC4KKyAgICAJKHN0cnVjdCBw cGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0cnVjdHVyZS4KKyAgICAJKHBwYzY0X3N5c3Zf YWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCisgICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCk6 IE5ldyBmdW5jdGlvbi4KKyAgICAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlcik6IExpa2V3 aXNlLgorICAgIAkocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogTGlrZXdpc2UuCisgICAgCShw cGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtld2lzZS4KKyAgICAJKHBwYzY0X3N5c3ZfYWJp X3B1c2hfcGFyYW0pOiBMaWtld2lzZS4KKyAgICAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlf Y2FsbCk6IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBuZXcgcm91dGluZXMuCisgICAgCShwcGM2NF9z eXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKyAgICAJKHBwYzY0X3N5 c3ZfYWJpX3JldHVybl92YWx1ZSk6IFJlZmFjdG9yIHRvIHVzZSBpdC4KKworIyMjIGEvZ2RiL0No YW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwxOSBAQAorIDIwMTQtMDIt MDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSogcHBjLXN5 c3YtdGRlcC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBVcGRhdGUgY29tbWVu dC4KKysJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0cnVjdHVyZS4KKysJ KHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCisrCShwcGM2NF9zeXN2X2FiaV9w dXNoX3ZhbCk6IE5ldyBmdW5jdGlvbi4KKysJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlcik6 IExpa2V3aXNlLgorKwkocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogTGlrZXdpc2UuCisrCShw cGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtld2lzZS4KKysJKHBwYzY0X3N5c3ZfYWJpX3B1 c2hfcGFyYW0pOiBMaWtld2lzZS4KKysJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6 IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBuZXcgcm91dGluZXMuCisrCShwcGM2NF9zeXN2X2FiaV9y ZXR1cm5fdmFsdWVfYmFzZSk6IE5ldyBmdW5jdGlvbi4KKysJKHBwYzY0X3N5c3ZfYWJpX3JldHVy bl92YWx1ZSk6IFJlZmFjdG9yIHRvIHVzZSBpdC4KKysKKysyMDE0LTAyLTA0ICBVbHJpY2ggV2Vp Z2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorKworIAkqIE5FV1M6IERvY3VtZW50IG5ldyB0 YXJnZXQgcG93ZXJwYzY0bGUtKi1saW51eCouCisgCisgMjAxNC0wMi0wNCAgTWFyayBLZXR0ZW5p cyAgPGtldHRlbmlzQGdudS5vcmc+CistLS0gYS9nZGIvcHBjLXN5c3YtdGRlcC5jCisrKysgYi9n ZGIvcHBjLXN5c3YtdGRlcC5jCitAQCAtNjA5LDggKzYwOSw3IEBAIHBwY19zeXN2X2FiaV9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmZ1bmN0 aW9uLAorICAgcmV0dXJuIHNwOworIH0KKyAKKy0vKiBIYW5kbGUgdGhlIHJldHVybi12YWx1ZSBj b252ZW50aW9ucyBmb3IgRGVjaW1hbCBGbG9hdGluZyBQb2ludCB2YWx1ZXMKKy0gICBpbiBib3Ro IHBwYzMyIGFuZCBwcGM2NCwgd2hpY2ggYXJlIHRoZSBzYW1lLiAgKi8KKysvKiBIYW5kbGUgdGhl IHJldHVybi12YWx1ZSBjb252ZW50aW9ucyBmb3IgRGVjaW1hbCBGbG9hdGluZyBQb2ludCB2YWx1 ZXMuICAqLworIHN0YXRpYyBpbnQKKyBnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdHlwZSAqdmFsdHlwZSwKKyAJCQkJc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgZ2RiX2J5dGUgKnJlYWRidWYsCitAQCAtMTEwMiw4MCArMTEw MSwyODcgQEAgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChDT1JFX0FERFIgY29kZV9h ZGRyLCBDT1JFX0FERFIgKmRlc2NfYWRkcikKKyAgIHJldHVybiAxOworIH0KKyAKKy0vKiBQdXNo IGEgZmxvYXQgaW4gZWl0aGVyIHJlZ2lzdGVycywgb3IgaW4gdGhlIHN0YWNrLiAgVXNpbmcgdGhl IHBwYyA2NCBiaXQKKy0gICBTeXNWIEFCSS4KKysvKiBTdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmV4 dCBhcmd1bWVudCBwb3NpdGlvbi4gICovCisrc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zCisrICB7 CisrICAgIC8qIFJlZ2lzdGVyIGNhY2hlIGhvbGRpbmcgYXJndW1lbnQgcmVnaXN0ZXJzLiAgSWYg dGhpcyBpcyBOVUxMLAorKyAgICAgICB3ZSBvbmx5IHNpbXVsYXRlIGFyZ3VtZW50IHByb2Nlc3Np bmcgd2l0aG91dCBhY3R1YWxseSB1cGRhdGluZworKyAgICAgICBhbnkgcmVnaXN0ZXJzIG9yIG1l bW9yeS4gICovCisrICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7CisrICAgIC8qIE5leHQg YXZhaWxhYmxlIGdlbmVyYWwtcHVycG9zZSBhcmd1bWVudCByZWdpc3Rlci4gICovCisrICAgIGlu dCBncmVnOworKyAgICAvKiBOZXh0IGF2YWlsYWJsZSBmbG9hdGluZy1wb2ludCBhcmd1bWVudCBy ZWdpc3Rlci4gICovCisrICAgIGludCBmcmVnOworKyAgICAvKiBOZXh0IGF2YWlsYWJsZSB2ZWN0 b3IgYXJndW1lbnQgcmVnaXN0ZXIuICAqLworKyAgICBpbnQgdnJlZzsKKysgICAgLyogVGhlIGFk ZHJlc3MsIGF0IHdoaWNoIHRoZSBuZXh0IGdlbmVyYWwgcHVycG9zZSBwYXJhbWV0ZXIKKysgICAg ICAgKGludGVnZXIsIHN0cnVjdCwgZmxvYXQsIHZlY3RvciwgLi4uKSBzaG91bGQgYmUgc2F2ZWQu ICAqLworKyAgICBDT1JFX0FERFIgZ3BhcmFtOworKyAgICAvKiBUaGUgYWRkcmVzcywgYXQgd2hp Y2ggdGhlIG5leHQgYnktcmVmZXJlbmNlIHBhcmFtZXRlcgorKyAgICAgICAobm9uLUFsdGl2ZWMg dmVjdG9yLCB2YXJpYWJseS1zaXplZCB0eXBlKSBzaG91bGQgYmUgc2F2ZWQuICAqLworKyAgICBD T1JFX0FERFIgcmVmcGFyYW07CisrICB9OworKworKy8qIFZBTCBpcyBhIHZhbHVlIG9mIGxlbmd0 aCBMRU4uICBTdG9yZSBpdCBpbnRvIHRoZSBhcmd1bWVudCBhcmVhIG9uIHRoZQorKyAgIHN0YWNr IGFuZCBsb2FkIGl0IGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lz dGVycworKyAgIHJlcXVpcmVkIGJ5IHRoZSBBQkksIGFuZCB1cGRhdGUgQVJHUE9TLgorKworKyAg IElmIEFMSUdOIGlzIG5vbnplcm8sIGl0IHNwZWNpZmllcyB0aGUgbWluaW11bSBhbGlnbm1lbnQg cmVxdWlyZWQKKysgICBmb3IgdGhlIG9uLXN0YWNrIGNvcHkgb2YgdGhlIGFyZ3VtZW50LiAgKi8K KyAKKy0gICBUaGlzIGltcGxlbWVudHMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIHRoZSBBQkku ICBJdCBhbHdheXMgd3JpdGVzCistICAgdmFsdWVzIHRvIG1lbW9yeSwgR1BSIGFuZCBGUFIsIGV2 ZW4gd2hlbiBub3QgbmVjZXNzYXJ5LiAgRG9pbmcgdGhpcworLSAgIGdyZWF0bHkgc2ltcGxpZmll cyB0aGUgbG9naWMuICAqLworK3N0YXRpYyB2b2lkCisrcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCSBjb25zdCBiZmRfYnl0ZSAqdmFsLCBpbnQg bGVuLCBpbnQgYWxpZ24sCisrCQkJIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQor K3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gp OworKyAgaW50IG9mZnNldCA9IDA7CisrCisrICAvKiBFbmZvcmNlIGFsaWdubWVudCBvZiBzdGFj ayBsb2NhdGlvbiwgaWYgcmVxdWVzdGVkLiAgKi8KKysgIGlmIChhbGlnbiA+IHRkZXAtPndvcmRz aXplKQorKyAgICB7CisrICAgICAgQ09SRV9BRERSIGFsaWduZWRfZ3BhcmFtID0gYWxpZ25fdXAg KGFyZ3Bvcy0+Z3BhcmFtLCBhbGlnbik7CisrCisrICAgICAgYXJncG9zLT5ncmVnICs9IChhbGln bmVkX2dwYXJhbSAtIGFyZ3Bvcy0+Z3BhcmFtKSAvIHRkZXAtPndvcmRzaXplOworKyAgICAgIGFy Z3Bvcy0+Z3BhcmFtID0gYWxpZ25lZF9ncGFyYW07CisrICAgIH0KKysKKysgIC8qIFRoZSBBQkkg KHZlcnNpb24gMS45KSBzcGVjaWZpZXMgdGhhdCB2YWx1ZXMgc21hbGxlciB0aGFuIG9uZQorKyAg ICAgZG91Ymxld29yZCBhcmUgcmlnaHQtYWxpZ25lZCBhbmQgdGhvc2UgbGFyZ2VyIGFyZSBsZWZ0 LWFsaWduZWQuCisrICAgICBHQ0MgdmVyc2lvbnMgYmVmb3JlIDMuNCBpbXBsZW1lbnRlZCB0aGlz IGluY29ycmVjdGx5OyBzZWUKKysgICAgIDxodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTMuNC9wb3dl cnBjLWFiaS5odG1sPi4gICovCisrICBpZiAobGVuIDwgdGRlcC0+d29yZHNpemUpCisrICAgIG9m ZnNldCA9IHRkZXAtPndvcmRzaXplIC0gbGVuOworKworKyAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUp CisrICAgIHdyaXRlX21lbW9yeSAoYXJncG9zLT5ncGFyYW0gKyBvZmZzZXQsIHZhbCwgbGVuKTsK KysgIGFyZ3Bvcy0+Z3BhcmFtID0gYWxpZ25fdXAgKGFyZ3Bvcy0+Z3BhcmFtICsgbGVuLCB0ZGVw LT53b3Jkc2l6ZSk7CisrCisrICB3aGlsZSAobGVuID49IHRkZXAtPndvcmRzaXplKQorKyAgICB7 CisrICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5ncmVnIDw9IDEwKQorKwly ZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsCisrCQkJICAgICAgIHRkZXAt PnBwY19ncDBfcmVnbnVtICsgYXJncG9zLT5ncmVnLCB2YWwpOworKyAgICAgIGFyZ3Bvcy0+Z3Jl ZysrOworKyAgICAgIGxlbiAtPSB0ZGVwLT53b3Jkc2l6ZTsKKysgICAgICB2YWwgKz0gdGRlcC0+ d29yZHNpemU7CisrICAgIH0KKysKKysgIGlmIChsZW4gPiAwKQorKyAgICB7CisrICAgICAgaWYg KGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5ncmVnIDw9IDEwKQorKwlyZWdjYWNoZV9jb29r ZWRfd3JpdGVfcGFydCAoYXJncG9zLT5yZWdjYWNoZSwKKysJCQkJICAgIHRkZXAtPnBwY19ncDBf cmVnbnVtICsgYXJncG9zLT5ncmVnLAorKwkJCQkgICAgb2Zmc2V0LCBsZW4sIHZhbCk7CisrICAg ICAgYXJncG9zLT5ncmVnKys7CisrICAgIH0KKyt9CisrCisrLyogVGhlIHNhbWUgYXMgcHBjNjRf c3lzdl9hYmlfcHVzaF92YWwsIGJ1dCB1c2luZyBhIHNpbmdsZS13b3JkIGludGVnZXIKKysgICB2 YWx1ZSBWQUwgYXMgYXJndW1lbnQuICAqLworIAorIHN0YXRpYyB2b2lkCistcHBjNjRfc3lzdl9h YmlfcHVzaF9mbG9hdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsCistCQkJICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCwgc3RydWN0IHR5cGUg KnR5cGUsIAorLQkJCSAgIGNvbnN0IGJmZF9ieXRlICp2YWwsIGludCBmcmVnLCBpbnQgZ3JlZywK Ky0JCQkgICBDT1JFX0FERFIgZ3BhcmFtKQorK3BwYzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlciAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIFVMT05HRVNUIHZhbCwKKysJCQkgICAgIHN0cnVjdCBw cGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQorIHsKKy0gIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVH SVNURVJfU0laRV07CistICBjb25zdCBnZGJfYnl0ZSAqcDsKKysgIHN0cnVjdCBnZGJhcmNoX3Rk ZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworKyAgZW51bSBiZmRfZW5kaWFuIGJ5 dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOworKyAgZ2RiX2J5dGUgYnVm W01BWF9SRUdJU1RFUl9TSVpFXTsKKyAKKy0gIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPD0gOCkK KysgIGlmIChhcmdwb3MtPnJlZ2NhY2hlKQorKyAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChi dWYsIHRkZXAtPndvcmRzaXplLCBieXRlX29yZGVyLCB2YWwpOworKyAgcHBjNjRfc3lzdl9hYmlf cHVzaF92YWwgKGdkYmFyY2gsIGJ1ZiwgdGRlcC0+d29yZHNpemUsIDAsIGFyZ3Bvcyk7CisrfQor KworKy8qIFZBTCBpcyBhIHZhbHVlIG9mIFRZUEUsIGEgKGJpbmFyeSBvciBkZWNpbWFsKSBmbG9h dGluZy1wb2ludCB0eXBlLgorKyAgIExvYWQgaXQgaW50byBhIGZsb2F0aW5nLXBvaW50IHJlZ2lz dGVyIGlmIHJlcXVpcmVkIGJ5IHRoZSBBQkksCisrICAgYW5kIHVwZGF0ZSBBUkdQT1MuICAqLwor KworK3N0YXRpYyB2b2lkCisrcHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKKysJCQkgIHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBiZmRfYnl0ZSAqdmFs LAorKwkJCSAgc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zICphcmdwb3MpCisreworKyAgc3RydWN0 IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisrICBpZiAodGRl cC0+c29mdF9mbG9hdCkKKysgICAgcmV0dXJuOworKworKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBl KSA8PSA4CisrICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUKQorICAg ICB7CistICAgICAgLyogVmVyc2lvbiAxLjcgb2YgdGhlIDY0LWJpdCBQb3dlclBDIEVMRiBBQkkg c2F5czoKKysgICAgICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzIt Yml0IGZsb2F0cyBhcmUgY29udmVydGVkCisrIAkgdG8gZG91YmxlIGZpcnN0LiAgKi8KKysgICAg ICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMpCisrCXsKKysJICBp bnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7CisrCSAgc3Ry dWN0IHR5cGUgKnJlZ3R5cGUgPSByZWdpc3Rlcl90eXBlIChnZGJhcmNoLCByZWdudW0pOworKwkg IGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07CisgCistCSAiU2luZ2xlIHByZWNp c2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgYXJlIG1hcHBlZCB0bworLQkgdGhlIGZpcnN0IHdv cmQgaW4gYSBzaW5nbGUgZG91Ymxld29yZC4iCisrCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAo dmFsLCB0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAo YXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCByZWd2YWwpOworKwl9CisgCistCSBBbmQgdmVyc2lv biAxLjkgc2F5czoKKysgICAgICBhcmdwb3MtPmZyZWcrKzsKKysgICAgfQorKyAgZWxzZSBpZiAo VFlQRV9MRU5HVEggKHR5cGUpIDw9IDgKKysJICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfREVDRkxPQVQpCisrICAgIHsKKysgICAgICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28g aW4gZjEgLi4gZjEzLiAgMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZQorKwkgcGxhY2VkIGluIHRo ZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkLiAgKi8KKysgICAgICBpZiAoYXJncG9zLT5yZWdjYWNo ZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMpCisrCXsKKysJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBj X2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7CisrCSAgaW50IG9mZnNldCA9IDggLSBUWVBFX0xF TkdUSCAodHlwZSk7CisgCistCSAiU2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1 ZXMgYXJlIG1hcHBlZCB0bworLQkgdGhlIHNlY29uZCB3b3JkIGluIGEgc2luZ2xlIGRvdWJsZXdv cmQuIgorKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9wYXJ0IChhcmdwb3MtPnJlZ2NhY2hlLCBy ZWdudW0sCisrCQkJCSAgICAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHR5cGUpLCB2YWwpOworKwl9 CisgCistCSBHREIgdGhlbiB3cml0ZXMgc2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2 YWx1ZXMKKy0JIGF0IGJvdGggd29yZHMgaW4gYSBkb3VibGV3b3JkLCB0byBzdXBwb3J0IGJvdGgg QUJJcy4gICovCistICAgICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSA0KQorKyAgICAgIGFy Z3Bvcy0+ZnJlZysrOworKyAgICB9CisrICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0g MTYKKysJICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUCisrCSAgICYmIChn ZGJhcmNoX2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKKysJICAgICAgID09IGZsb2F0Zm9y bWF0c19pYm1fbG9uZ19kb3VibGUpKQorKyAgICB7CisrICAgICAgLyogSUJNIGxvbmcgZG91Ymxl IHN0b3JlZCBpbiB0d28gY29uc2VjdXRpdmUgRlBScy4gICovCisrICAgICAgaWYgKGFyZ3Bvcy0+ cmVnY2FjaGUgJiYgYXJncG9zLT5mcmVnIDw9IDEzKQorIAl7CistCSAgbWVtY3B5IChyZWd2YWws IHZhbCwgNCk7CistCSAgbWVtY3B5IChyZWd2YWwgKyA0LCB2YWwsIDQpOworLQkgIHAgPSByZWd2 YWw7CisrCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgYXJncG9zLT5mcmVn OworKworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVt LCB2YWwpOworKwkgIGlmIChhcmdwb3MtPmZyZWcgPD0gMTIpCisrCSAgICByZWdjYWNoZV9jb29r ZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSArIDEsIHZhbCArIDgpOworIAl9Cist ICAgICAgZWxzZQorLQlwID0gdmFsOworIAorLSAgICAgIC8qIFdyaXRlIHZhbHVlIGluIHRoZSBz dGFjaydzIHBhcmFtZXRlciBzYXZlIGFyZWEuICAqLworLSAgICAgIHdyaXRlX21lbW9yeSAoZ3Bh cmFtLCBwLCA4KTsKKysgICAgICBhcmdwb3MtPmZyZWcgKz0gMjsKKysgICAgfQorKyAgZWxzZSBp ZiAoVFlQRV9MRU5HVEggKHR5cGUpID09IDE2CisrCSAgICYmIFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX0RFQ0ZMT0FUKQorKyAgICB7CisrICAgICAgLyogMTI4LWJpdCBkZWNpbWFsIGZs b2F0aW5nLXBvaW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIGFuZCBldmVuL29kZAorKwkgcGFpciBv ZiBGUFJzLCB3aXRoIHRoZSBldmVuIEZQUiBob2xkaW5nIHRoZSBtb3N0IHNpZ25pZmljYW50IGhh bGYuICAqLworKyAgICAgIGFyZ3Bvcy0+ZnJlZyArPSBhcmdwb3MtPmZyZWcgJiAxOworIAorLSAg ICAgIC8qIEZsb2F0cyBhbmQgRG91YmxlcyBnbyBpbiBmMSAuLiBmMTMuICBUaGV5IGFsc28gY29u c3VtZSBhIGxlZnQgYWxpZ25lZAorLQkgR1JFRywgYW5kIGNhbiBlbmQgdXAgaW4gbWVtb3J5LiAg Ki8KKy0gICAgICBpZiAoZnJlZyA8PSAxMykKKysgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAm JiBhcmdwb3MtPmZyZWcgPD0gMTIpCisgCXsKKy0JICBzdHJ1Y3QgdHlwZSAqcmVndHlwZTsKKysJ ICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7CisgCist CSAgcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY19mcDBfcmVnbnVt ICsgZnJlZyk7CistCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAodmFsLCB0eXBlLCByZWd2YWws IHJlZ3R5cGUpOworLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBw Y19mcDBfcmVnbnVtICsgZnJlZywgcmVndmFsKTsKKysJICByZWdjYWNoZV9jb29rZWRfd3JpdGUg KGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSwgdmFsKTsKKysJICByZWdjYWNoZV9jb29rZWRfd3Jp dGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSArIDEsIHZhbCArIDgpOworIAl9CistICAgICAg aWYgKGdyZWcgPD0gMTApCistCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHRkZXAt PnBwY19ncDBfcmVnbnVtICsgZ3JlZywgcmVndmFsKTsKKysKKysgICAgICBhcmdwb3MtPmZyZWcg Kz0gMjsKKyAgICAgfQorLSAgZWxzZQorK30KKysKKysvKiBWQUwgaXMgYSB2YWx1ZSBvZiBBbHRp VmVjIHZlY3RvciB0eXBlLiAgTG9hZCBpdCBpbnRvIGEgdmVjdG9yIHJlZ2lzdGVyCisrICAgaWYg cmVxdWlyZWQgYnkgdGhlIEFCSSwgYW5kIHVwZGF0ZSBBUkdQT1MuICAqLworKworK3N0YXRpYyB2 b2lkCisrcHBjNjRfc3lzdl9hYmlfcHVzaF92cmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Y29uc3QgYmZkX2J5dGUgKnZhbCwKKysJCQkgIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJn cG9zKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpOworKworKyAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT52cmVnIDw9IDEz KQorKyAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsCisrCQkJICAg dGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBhcmdwb3MtPnZyZWcsIHZhbCk7CisrCisrICBhcmdwb3Mt PnZyZWcrKzsKKyt9CisrCisrLyogVkFMIGlzIGEgdmFsdWUgb2YgVFlQRS4gIExvYWQgaXQgaW50 byBtZW1vcnkgYW5kL29yIHJlZ2lzdGVycworKyAgIGFzIHJlcXVpcmVkIGJ5IHRoZSBBQkksIGFu ZCB1cGRhdGUgQVJHUE9TLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3BwYzY0X3N5c3ZfYWJpX3B1 c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKwkJCSAgIHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBiZmRfYnl0ZSAqdmFsLAorKwkJCSAgIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bv cyAqYXJncG9zKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3Rk ZXAgKGdkYmFyY2gpOworKworKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZM VAorKyAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQorKyAg ICB7CisrICAgICAgLyogRmxvYXRpbmctcG9pbnQgc2NhbGFycyBhcmUgcGFzc2VkIGluIGZsb2F0 aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCisrICAgICAgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwg KGdkYmFyY2gsIHZhbCwgVFlQRV9MRU5HVEggKHR5cGUpLCAwLCBhcmdwb3MpOworKyAgICAgIHBw YzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyAoZ2RiYXJjaCwgdHlwZSwgdmFsLCBhcmdwb3MpOworKyAg ICB9CisrICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSAmJiBU WVBFX1ZFQ1RPUiAodHlwZSkKKysJICAgJiYgdGRlcC0+dmVjdG9yX2FiaSA9PSBQT1dFUlBDX1ZF Q19BTFRJVkVDCisrCSAgICYmIFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxNikKKysgICAgeworKyAg ICAgIC8qIEFsdGlWZWMgdmVjdG9ycyBhcmUgcGFzc2VkIGFsaWduZWQsIGFuZCBpbiB2ZWN0b3Ig cmVnaXN0ZXJzLiAgKi8KKysgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCAoZ2RiYXJjaCwg dmFsLCBUWVBFX0xFTkdUSCAodHlwZSksIDE2LCBhcmdwb3MpOworKyAgICAgIHBwYzY0X3N5c3Zf YWJpX3B1c2hfdnJlZyAoZ2RiYXJjaCwgdmFsLCBhcmdwb3MpOworKyAgICB9CisrICBlbHNlIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSAmJiBUWVBFX1ZFQ1RPUiAodHlw ZSkKKysJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUpID49IDE2KQorICAgICB7CistICAgICAgLyog SUJNIGxvbmcgZG91YmxlIHN0b3JlZCBpbiB0d28gZG91Ymxld29yZHMgb2YgdGhlCistCSBwYXJh bWV0ZXIgc2F2ZSBhcmVhIGFuZCBjb3JyZXNwb25kaW5nIHJlZ2lzdGVycy4gICovCistICAgICAg aWYgKCF0ZGVwLT5zb2Z0X2Zsb2F0ICYmIGZyZWcgPD0gMTMpCisrICAgICAgLyogTm9uLUFsdGl2 ZWMgdmVjdG9ycyBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4gICovCisrCisrICAgICAgLyogQ29w eSB2YWx1ZSBvbnRvIHRoZSBzdGFjayAuLi4gICovCisrICAgICAgQ09SRV9BRERSIGFkZHIgPSBh bGlnbl91cCAoYXJncG9zLT5yZWZwYXJhbSwgMTYpOworKyAgICAgIGlmIChhcmdwb3MtPnJlZ2Nh Y2hlKQorKwl3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKKysg ICAgICBhcmdwb3MtPnJlZnBhcmFtID0gYWxpZ25fdXAgKGFkZHIgKyBUWVBFX0xFTkdUSCAodHlw ZSksIHRkZXAtPndvcmRzaXplKTsKKysKKysgICAgICAvKiAuLi4gYW5kIHBhc3MgYSBwb2ludGVy IHRvIHRoZSBjb3B5IGFzIHBhcmFtZXRlci4gICovCisrICAgICAgcHBjNjRfc3lzdl9hYmlfcHVz aF9pbnRlZ2VyIChnZGJhcmNoLCBhZGRyLCBhcmdwb3MpOworKyAgICB9CisrICBlbHNlIGlmICgo VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UCisrCSAgICB8fCBUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9FTlVNCisrCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9CT09MCisrCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DSEFSCisr CSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKysJICAgIHx8IFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKKysJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUp IDw9IHRkZXAtPndvcmRzaXplKQorKyAgICB7CisrICAgICAgVUxPTkdFU1Qgd29yZCA9IDA7Cisr CisrICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUpCisgCXsKKy0JICByZWdjYWNoZV9jb29rZWRf d3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcsIHZhbCk7CistCSAg aWYgKGZyZWcgPD0gMTIpCistCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCB0 ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcgKyAxLAorLQkJCQkgICB2YWwgKyA4KTsKKysJICAv KiBTaWduIGV4dGVuZCB0aGUgdmFsdWUsIHRoZW4gc3RvcmUgaXQgdW5zaWduZWQuICAqLworKwkg IHdvcmQgPSB1bnBhY2tfbG9uZyAodHlwZSwgdmFsKTsKKysKKysJICAvKiBDb252ZXJ0IGFueSBm dW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvIGRlc2NyaXB0b3JzLiAgKi8KKysJICBpZiAoVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCisrCSAgICAgIHx8IFRZUEVfQ09ERSAodHlw ZSkgPT0gVFlQRV9DT0RFX1JFRikKKysJICAgIHsKKysJICAgICAgc3RydWN0IHR5cGUgKnRhcmdl dF90eXBlCisrCQk9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKysK KysJICAgICAgaWYgKFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09ERV9GVU5DCisr CQkgIHx8IFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpCisrCQl7 CisrCQkgIENPUkVfQUREUiBkZXNjID0gd29yZDsKKysKKysJCSAgY29udmVydF9jb2RlX2FkZHJf dG9fZGVzY19hZGRyICh3b3JkLCAmZGVzYyk7CisrCQkgIHdvcmQgPSBkZXNjOworKwkJfQorKwkg ICAgfQorIAl9CistICAgICAgaWYgKGdyZWcgPD0gMTApCisrCisrICAgICAgcHBjNjRfc3lzdl9h YmlfcHVzaF9pbnRlZ2VyIChnZGJhcmNoLCB3b3JkLCBhcmdwb3MpOworKyAgICB9CisrICBlbHNl CisrICAgIHsKKysgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCAoZ2RiYXJjaCwgdmFsLCBU WVBFX0xFTkdUSCAodHlwZSksIDAsIGFyZ3Bvcyk7CisrCisrICAgICAgLyogVGhlIEFCSSAodmVy c2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHN0cnVjdHMgY29udGFpbmluZyBhCisrCSBzaW5nbGUg ZmxvYXRpbmctcG9pbnQgdmFsdWUsIGF0IGFueSBsZXZlbCBvZiBuZXN0aW5nIG9mCisrCSBzaW5n bGUtbWVtYmVyIHN0cnVjdHMsIGFyZSBwYXNzZWQgaW4gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJz LiAgKi8KKysgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUCisr CSAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQorIAl7CistCSAgcmVnY2FjaGVfY29va2Vk X3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLCB2YWwpOworLQkg IGlmIChncmVnIDw9IDkpCistCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCB0 ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGdyZWcgKyAxLAorLQkJCQkgICB2YWwgKyA4KTsKKysJICB3 aGlsZSAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUCisrCQkgJiYgVFlQRV9O RklFTERTICh0eXBlKSA9PSAxKQorKwkgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfRklF TERfVFlQRSAodHlwZSwgMCkpOworKworKwkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9GTFQpCisrCSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIHR5cGUs IHZhbCwgYXJncG9zKTsKKyAJfQorLSAgICAgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCB2YWwsIFRZ UEVfTEVOR1RIICh0eXBlKSk7CisgICAgIH0KKyB9CisgCitAQCAtMTIzNywyMCArMTQ0MywxMSBA QCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAorICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7IHdyaXRlX3Bhc3MrKykK KyAgICAgeworICAgICAgIGludCBhcmdubzsKKy0gICAgICAvKiBOZXh0IGF2YWlsYWJsZSBmbG9h dGluZyBwb2ludCByZWdpc3RlciBmb3IgZmxvYXQgYW5kIGRvdWJsZQorLSAgICAgICAgIGFyZ3Vt ZW50cy4gICovCistICAgICAgaW50IGZyZWcgPSAxOworLSAgICAgIC8qIE5leHQgYXZhaWxhYmxl IGdlbmVyYWwgcmVnaXN0ZXIgZm9yIG5vbi12ZWN0b3IgKGJ1dCBwb3NzaWJseQorLSAgICAgICAg IGZsb2F0KSBhcmd1bWVudHMuICAqLworLSAgICAgIGludCBncmVnID0gMzsKKy0gICAgICAvKiBO ZXh0IGF2YWlsYWJsZSB2ZWN0b3IgcmVnaXN0ZXIgZm9yIHZlY3RvciBhcmd1bWVudHMuICAqLwor LSAgICAgIGludCB2cmVnID0gMjsKKy0gICAgICAvKiBUaGUgYWRkcmVzcywgYXQgd2hpY2ggdGhl IG5leHQgZ2VuZXJhbCBwdXJwb3NlIHBhcmFtZXRlcgorLSAgICAgICAgIChpbnRlZ2VyLCBzdHJ1 Y3QsIGZsb2F0LCB2ZWN0b3IsIC4uLikgc2hvdWxkIGJlIHNhdmVkLiAgKi8KKy0gICAgICBDT1JF X0FERFIgZ3BhcmFtOworLSAgICAgIC8qIFRoZSBhZGRyZXNzLCBhdCB3aGljaCB0aGUgbmV4dCBi eS1yZWZlcmVuY2UgcGFyYW1ldGVyCistCSAobm9uLUFsdGl2ZWMgdmVjdG9yLCB2YXJpYWJseS1z aXplZCB0eXBlKSBzaG91bGQgYmUgc2F2ZWQuICAqLworLSAgICAgIENPUkVfQUREUiByZWZwYXJh bTsKKysKKysgICAgICBzdHJ1Y3QgcHBjNjRfc3lzdl9hcmdwb3MgYXJncG9zOworKyAgICAgIGFy Z3Bvcy5ncmVnID0gMzsKKysgICAgICBhcmdwb3MuZnJlZyA9IDE7CisrICAgICAgYXJncG9zLnZy ZWcgPSAyOworIAorICAgICAgIGlmICghd3JpdGVfcGFzcykKKyAJeworQEAgLTEyNTgsMTkgKzE0 NTUsMjEgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKKyAJICAgICBvZmZzZXRzIChzdGFydCBhZGRyZXNzIHplcm8pIHRoYW4gYWRkcmVz c2VzLiAgVGhhdCB3YXkKKyAJICAgICB0aGV5IGFjY3VtdWxhdGUgdGhlIHRvdGFsIHN0YWNrIHNw YWNlIGVhY2ggcmVnaW9uCisgCSAgICAgcmVxdWlyZXMuICAqLworLQkgIGdwYXJhbSA9IDA7Cist CSAgcmVmcGFyYW0gPSAwOworKwkgIGFyZ3Bvcy5yZWdjYWNoZSA9IE5VTEw7CisrCSAgYXJncG9z LmdwYXJhbSA9IDA7CisrCSAgYXJncG9zLnJlZnBhcmFtID0gMDsKKyAJfQorICAgICAgIGVsc2UK KyAJeworIAkgIC8qIERlY3JlbWVudCB0aGUgc3RhY2sgcG9pbnRlciBtYWtpbmcgc3BhY2UgZm9y IHRoZSBBbHRpdmVjCisgCSAgICAgYW5kIGdlbmVyYWwgb24tc3RhY2sgcGFyYW1ldGVycy4gIFNl dCByZWZwYXJhbSBhbmQgZ3BhcmFtCisgCSAgICAgdG8gdGhlaXIgY29ycmVzcG9uZGluZyByZWdp b25zLiAgKi8KKy0JICByZWZwYXJhbSA9IGFsaWduX2Rvd24gKHNwIC0gcmVmcGFyYW1fc2l6ZSwg MTYpOworLQkgIGdwYXJhbSA9IGFsaWduX2Rvd24gKHJlZnBhcmFtIC0gZ3BhcmFtX3NpemUsIDE2 KTsKKysJICBhcmdwb3MucmVnY2FjaGUgPSByZWdjYWNoZTsKKysJICBhcmdwb3MucmVmcGFyYW0g PSBhbGlnbl9kb3duIChzcCAtIHJlZnBhcmFtX3NpemUsIDE2KTsKKysJICBhcmdwb3MuZ3BhcmFt ID0gYWxpZ25fZG93biAoYXJncG9zLnJlZnBhcmFtIC0gZ3BhcmFtX3NpemUsIDE2KTsKKyAJICAv KiBBZGQgaW4gc3BhY2UgZm9yIHRoZSBUT0MsIGxpbmsgZWRpdG9yIGRvdWJsZSB3b3JkLAorIAkg ICAgIGNvbXBpbGVyIGRvdWJsZSB3b3JkLCBMUiBzYXZlIGFyZWEsIENSIHNhdmUgYXJlYS4gICov CistCSAgc3AgPSBhbGlnbl9kb3duIChncGFyYW0gLSA0OCwgMTYpOworKwkgIHNwID0gYWxpZ25f ZG93biAoYXJncG9zLmdwYXJhbSAtIDQ4LCAxNik7CisgCX0KKyAKKyAgICAgICAvKiBJZiB0aGUg ZnVuY3Rpb24gaXMgcmV0dXJuaW5nIGEgYHN0cnVjdCcsIHRoZW4gdGhlcmUgaXMgYW4KK0BAIC0x Mjc5LDE0ICsxNDc4LDcgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgICAgICBzaG91bGQgYWR2YW5jZSBvbmUgd29yZCBhbmQg c3RhcnQgZnJvbSByNCByZWdpc3RlciB0byBjb3B5CisgICAgICAgICAgcGFyYW1ldGVycy4gIFRo aXMgYWxzbyBjb25zdW1lcyBvbmUgb24tc3RhY2sgcGFyYW1ldGVyIHNsb3QuICAqLworICAgICAg IGlmIChzdHJ1Y3RfcmV0dXJuKQorLQl7CistCSAgaWYgKHdyaXRlX3Bhc3MpCistCSAgICByZWdj YWNoZV9jb29rZWRfd3JpdGVfc2lnbmVkIChyZWdjYWNoZSwKKy0JCQkJCSAgdGRlcC0+cHBjX2dw MF9yZWdudW0gKyBncmVnLAorLQkJCQkJICBzdHJ1Y3RfYWRkcik7CistCSAgZ3JlZysrOworLQkg IGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6ZSwgdGRlcC0+d29yZHNp emUpOworLQl9CisrCXBwYzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlciAoZ2RiYXJjaCwgc3RydWN0 X2FkZHIsICZhcmdwb3MpOworIAorICAgICAgIGZvciAoYXJnbm8gPSAwOyBhcmdubyA8IG5hcmdz OyBhcmdubysrKQorIAl7CitAQCAtMTI5NCw0MzIgKzE0ODYsNTQgQEAgcHBjNjRfc3lzdl9hYmlf cHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJICBzdHJ1Y3QgdHlw ZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOworIAkgIGNvbnN0IGJm ZF9ieXRlICp2YWwgPSB2YWx1ZV9jb250ZW50cyAoYXJnKTsKKyAKKy0JICBpZiAoVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUICYmIFRZUEVfTEVOR1RIICh0eXBlKSA8PSA4KQorKwkg IGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYKQorIAkgICAgeworLQkg ICAgICBpZiAod3JpdGVfcGFzcykKKy0JCSAgcHBjNjRfc3lzdl9hYmlfcHVzaF9mbG9hdCAoZ2Ri YXJjaCwgcmVnY2FjaGUsIHRkZXAsIHR5cGUsCistCQkJCQkgICAgIHZhbCwgZnJlZywgZ3JlZywg Z3BhcmFtKTsKKy0KKy0JICAgICAgZnJlZysrOworLQkgICAgICBncmVnKys7CistCSAgICAgIC8q IEFsd2F5cyBjb25zdW1lIHBhcmFtZXRlciBzdGFjayBzcGFjZS4gICovCistCSAgICAgIGdwYXJh bSA9IGFsaWduX3VwIChncGFyYW0gKyA4LCB0ZGVwLT53b3Jkc2l6ZSk7CistCSAgICB9CistCSAg ZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUCistCQkgICAmJiBUWVBF X0xFTkdUSCAodHlwZSkgPT0gMTYKKy0JCSAgICYmIChnZGJhcmNoX2xvbmdfZG91YmxlX2Zvcm1h dCAoZ2RiYXJjaCkKKy0JCSAgICAgICA9PSBmbG9hdGZvcm1hdHNfaWJtX2xvbmdfZG91YmxlKSkK Ky0JICAgIHsKKy0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCistCQlwcGM2NF9zeXN2X2FiaV9wdXNo X2Zsb2F0IChnZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwgdHlwZSwKKy0JCQkJCSAgIHZhbCwgZnJl ZywgZ3JlZywgZ3BhcmFtKTsKKy0JICAgICAgZnJlZyArPSAyOworLQkgICAgICBncmVnICs9IDI7 CistCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyBUWVBFX0xFTkdUSCAodHlwZSks IHRkZXAtPndvcmRzaXplKTsKKy0JICAgIH0KKy0JICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9DT01QTEVYCistCSAgICAgICYmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0g OCB8fCBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYpKQorLQkgICAgeworLQkgICAgICBpbnQgaTsK Ky0KKy0JICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKy0JCXsKKy0JCSAgaWYgKHdyaXRl X3Bhc3MpCistCQkgICAgeworLQkJICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlOworLQor LQkJICAgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSk7CistCQkgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2Zsb2F0IChnZGJhcmNoLCByZWdj YWNoZSwgdGRlcCwKKy0JCQkJCQkgdGFyZ2V0X3R5cGUsIHZhbCArIGkgKgorLQkJCQkJCSBUWVBF X0xFTkdUSCAodGFyZ2V0X3R5cGUpLAorLQkJCQkJCSBmcmVnLCBncmVnLCBncGFyYW0pOworLQkJ ICAgIH0KKy0JCSAgZnJlZysrOworLQkJICBncmVnKys7CistCQkgIC8qIEFsd2F5cyBjb25zdW1l IHBhcmFtZXRlciBzdGFjayBzcGFjZS4gICovCistCQkgIGdwYXJhbSA9IGFsaWduX3VwIChncGFy YW0gKyA4LCB0ZGVwLT53b3Jkc2l6ZSk7CistCQl9CistCSAgICB9CistCSAgZWxzZSBpZiAoVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQ09NUExFWAorLQkJICAgJiYgVFlQRV9MRU5HVEgg KHR5cGUpID09IDMyCistCQkgICAmJiAoZ2RiYXJjaF9sb25nX2RvdWJsZV9mb3JtYXQgKGdkYmFy Y2gpCistCQkgICAgICAgPT0gZmxvYXRmb3JtYXRzX2libV9sb25nX2RvdWJsZSkpCistCSAgICB7 CistCSAgICAgIGludCBpOworLQorLQkgICAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQorLQkJ eworLQkJICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CistCistCQkgIHRhcmdldF90eXBlID0g Y2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworLQkJICBpZiAod3JpdGVf cGFzcykKKy0JCSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2Zsb2F0IChnZGJhcmNoLCByZWdjYWNo ZSwgdGRlcCwKKy0JCQkJCSAgICAgICB0YXJnZXRfdHlwZSwgdmFsICsgaSAqCistCQkJCQkgICAg ICAgVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKSwKKy0JCQkJCSAgICAgICBmcmVnLCBncmVnLCBn cGFyYW0pOworLQkJICBmcmVnICs9IDI7CistCQkgIGdyZWcgKz0gMjsKKy0JCSAgZ3BhcmFtID0g YWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSksCistCQkJCSAgICAg dGRlcC0+d29yZHNpemUpOworLQkJfQorLQkgICAgfQorLQkgIGVsc2UgaWYgKFRZUEVfQ09ERSAo dHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUCistCQkgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkg PD0gOCkKKy0JICAgIHsKKy0JICAgICAgLyogMzItYml0IGFuZCA2NC1iaXQgZGVjaW1hbCBmbG9h dHMgZ28gaW4gZjEgLi4gZjEzLiAgVGhleSBjYW4KKy0JICAgICAgICAgZW5kIHVwIGluIG1lbW9y eS4gICovCistCSAgICAgIGlmICh3cml0ZV9wYXNzKQorLQkJeworLQkJICBnZGJfYnl0ZSByZWd2 YWxbTUFYX1JFR0lTVEVSX1NJWkVdOworLQkJICBjb25zdCBnZGJfYnl0ZSAqcDsKKy0KKy0JCSAg LyogMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZSByaWdodCBhbGlnbmVkIGluIHRoZQorLQkJICAg ICBkb3VibGV3b3JkLiAgKi8KKy0JCSAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSA0KQorLQkJ ICAgIHsKKy0JCSAgICAgIG1lbWNweSAocmVndmFsICsgNCwgdmFsLCA0KTsKKy0JCSAgICAgIHAg PSByZWd2YWw7CistCQkgICAgfQorLQkJICBlbHNlCistCQkgICAgcCA9IHZhbDsKKy0KKy0JCSAg LyogV3JpdGUgdmFsdWUgaW4gdGhlIHN0YWNrJ3MgcGFyYW1ldGVyIHNhdmUgYXJlYS4gICovCist CQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4KTsKKy0KKy0JCSAgaWYgKGZyZWcgPD0gMTMp CistCQkgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKKy0JCQkJCSAgIHRkZXAt PnBwY19mcDBfcmVnbnVtICsgZnJlZywgcCk7CistCQl9CistCistCSAgICAgIGZyZWcrKzsKKy0J ICAgICAgZ3JlZysrOworLQkgICAgICAvKiBBbHdheXMgY29uc3VtZSBwYXJhbWV0ZXIgc3RhY2sg c3BhY2UuICAqLworLQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAoZ3BhcmFtICsgOCwgdGRlcC0+ d29yZHNpemUpOworLQkgICAgfQorLQkgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX0RFQ0ZMT0FUICYmCistCQkgICBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYpCistCSAg ICB7CistCSAgICAgIC8qIDEyOC1iaXQgZGVjaW1hbCBmbG9hdHMgZ28gaW4gZjIgLi4gZjEyLCBh bHdheXMgaW4gZXZlbi9vZGQKKy0JICAgICAgICAgcGFpcnMuICBUaGV5IGNhbiBlbmQgdXAgaW4g bWVtb3J5LCB1c2luZyB0d28gZG91Ymxld29yZHMuICAqLworLQkgICAgICBpZiAod3JpdGVfcGFz cykKKy0JCXsKKy0JCSAgaWYgKGZyZWcgPD0gMTIpCistCQkgICAgeworLQkJICAgICAgLyogTWFr ZSBzdXJlIGZyZWcgaXMgZXZlbi4gICovCistCQkgICAgICBmcmVnICs9IGZyZWcgJiAxOworLQkJ ICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcs IHZhbCk7CistCQkgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLAorLQkJCSAg dGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBmcmVnICsgMSwgdmFsICsgOCk7CistCQkgICAgfQorLQor LQkJICB3cml0ZV9tZW1vcnkgKGdwYXJhbSwgdmFsLCBUWVBFX0xFTkdUSCAodHlwZSkpOworLQkJ fQorKwkgICAgICAvKiBDb21wbGV4IHR5cGVzIGFyZSBwYXNzZWQgYXMgaWYgdHdvIGluZGVwZW5k ZW50IHNjYWxhcnMuICAqLworKwkgICAgICBzdHJ1Y3QgdHlwZSAqZWx0eXBlID0gY2hlY2tfdHlw ZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworIAorLQkgICAgICBmcmVnICs9IDI7Cist CSAgICAgIGdyZWcgKz0gMjsKKy0JICAgICAgZ3BhcmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZ UEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNpemUpOworKwkgICAgICBwcGM2NF9zeXN2X2Fi aV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5cGUsIHZhbCwgJmFyZ3Bvcyk7CisrCSAgICAgIHBw YzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKGdkYmFyY2gsIGVsdHlwZSwKKysJCQkJIAkgdmFsICsg VFlQRV9MRU5HVEggKGVsdHlwZSksICZhcmdwb3MpOworIAkgICAgfQorLQkgIGVsc2UgaWYgKFRZ UEVfTEVOR1RIICh0eXBlKSA8IDE2CistCQkgICAmJiBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9BUlJBWQorLQkJICAgJiYgVFlQRV9WRUNUT1IgKHR5cGUpCisrCSAgZWxzZSBpZiAoVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkgJiYgVFlQRV9WRUNUT1IgKHR5cGUpCisg CQkgICAmJiBvcGVuY2xfYWJpKQorIAkgICAgeworIAkgICAgICAvKiBPcGVuQ0wgdmVjdG9ycyBz aG9ydGVyIHRoYW4gMTYgYnl0ZXMgYXJlIHBhc3NlZCBhcyBpZgorLQkJIGEgc2VyaWVzIG9mIGlu ZGVwZW5kZW50IHNjYWxhcnMuICAqLworLQkgICAgICBzdHJ1Y3QgdHlwZSAqZWx0eXBlID0gY2hl Y2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworLQkgICAgICBpbnQgaSwgbmVs dCA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIFRZUEVfTEVOR1RIIChlbHR5cGUpOworKwkJIGEgc2Vy aWVzIG9mIGluZGVwZW5kZW50IHNjYWxhcnM7IE9wZW5DTCB2ZWN0b3JzIDE2IGJ5dGVzCisrCQkg b3IgbG9uZ2VyIGFyZSBwYXNzZWQgYXMgaWYgYSBzZXJpZXMgb2YgQWx0aVZlYyB2ZWN0b3JzLiAg Ki8KKysJICAgICAgc3RydWN0IHR5cGUgKmVsdHlwZTsKKysJICAgICAgaW50IGksIG5lbHQ7Cisg CisrCSAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPCAxNikKKysJCWVsdHlwZSA9IGNoZWNr X3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKysJICAgICAgZWxzZQorKwkJZWx0 eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgdGRlcC0+cHBjX3ZyMF9yZWdudW0pOworKwor KwkgICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHR5cGUpIC8gVFlQRV9MRU5HVEggKGVsdHlwZSk7 CisgCSAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0OyBpKyspCisgCQl7CisgCQkgIGNvbnN0IGdk Yl9ieXRlICplbHZhbCA9IHZhbCArIGkgKiBUWVBFX0xFTkdUSCAoZWx0eXBlKTsKKyAKKy0JCSAg aWYgKFRZUEVfQ09ERSAoZWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUKQorLQkJICAgIHsKKy0JCSAg ICAgIGlmICh3cml0ZV9wYXNzKQorLQkJCXsKKy0JCQkgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVH SVNURVJfU0laRV07CistCQkJICBjb25zdCBnZGJfYnl0ZSAqcDsKKy0KKy0JCQkgIGlmIChUWVBF X0xFTkdUSCAoZWx0eXBlKSA9PSA0KQorLQkJCSAgICB7CistCQkJICAgICAgbWVtY3B5IChyZWd2 YWwsIGVsdmFsLCA0KTsKKy0JCQkgICAgICBtZW1jcHkgKHJlZ3ZhbCArIDQsIGVsdmFsLCA0KTsK Ky0JCQkgICAgICBwID0gcmVndmFsOworLQkJCSAgICB9CistCQkJICBlbHNlCistCQkJICAgIHAg PSBlbHZhbDsKKy0KKy0JCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4KTsKKy0KKy0JCQkg IGlmIChmcmVnIDw9IDEzKQorLQkJCSAgICB7CistCQkJICAgICAgaW50IHJlZ251bSA9IHRkZXAt PnBwY19mcDBfcmVnbnVtICsgZnJlZzsKKy0JCQkgICAgICBzdHJ1Y3QgdHlwZSAqcmVndHlwZQor LQkJCQk9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSk7CistCistCQkJICAgICAgY29u dmVydF90eXBlZF9mbG9hdGluZyAoZWx2YWwsIGVsdHlwZSwKKy0JCQkJCQkgICAgICByZWd2YWws IHJlZ3R5cGUpOworLQkJCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJl Z251bSwgcmVndmFsKTsKKy0JCQkgICAgfQorLQorLQkJCSAgaWYgKGdyZWcgPD0gMTApCistCQkJ ICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCistCQkJCQkJICAgdGRlcC0+cHBj X2dwMF9yZWdudW0gKyBncmVnLAorLQkJCQkJCSAgIHJlZ3ZhbCk7CistCQkJfQorLQorLQkJICAg ICAgZnJlZysrOworLQkJICAgICAgZ3JlZysrOworLQkJICAgICAgZ3BhcmFtID0gYWxpZ25fdXAg KGdwYXJhbSArIDgsIHRkZXAtPndvcmRzaXplKTsKKy0JCSAgICB9CistCQkgIGVsc2UKKy0JCSAg ICB7CistCQkgICAgICBpZiAod3JpdGVfcGFzcykKKy0JCQl7CistCQkJICBVTE9OR0VTVCB3b3Jk ID0gdW5wYWNrX2xvbmcgKGVsdHlwZSwgZWx2YWwpOworLQkJCSAgaWYgKGdyZWcgPD0gMTApCist CQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZAorLQkJCSAgICAgIChyZWdjYWNo ZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLCB3b3JkKTsKKy0KKy0JCQkgIHdyaXRlX21l bW9yeV91bnNpZ25lZF9pbnRlZ2VyCistCQkJICAgIChncGFyYW0sIHRkZXAtPndvcmRzaXplLCBi eXRlX29yZGVyLCB3b3JkKTsKKy0JCQl9CistCistCQkgICAgICBncmVnKys7CistCQkgICAgICBn cGFyYW0gPSBhbGlnbl91cCAoZ3BhcmFtICsgVFlQRV9MRU5HVEggKGVsdHlwZSksCistCQkJCQkg dGRlcC0+d29yZHNpemUpOworLQkJICAgIH0KKy0JCX0KKy0JICAgIH0KKy0JICBlbHNlIGlmIChU WVBFX0xFTkdUSCAodHlwZSkgPj0gMTYKKy0JCSAgICYmIFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX0FSUkFZCistCQkgICAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKKy0JCSAgICYmIG9wZW5j bF9hYmkpCistCSAgICB7CistCSAgICAgIC8qIE9wZW5DTCB2ZWN0b3JzIDE2IGJ5dGVzIG9yIGxv bmdlciBhcmUgcGFzc2VkIGFzIGlmCistCQkgYSBzZXJpZXMgb2YgQWx0aVZlYyB2ZWN0b3JzLiAg Ki8KKy0JICAgICAgaW50IGk7CistCistCSAgICAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX0xFTkdU SCAodHlwZSkgLyAxNjsgaSsrKQorLQkJeworLQkJICBjb25zdCBnZGJfYnl0ZSAqZWx2YWwgPSB2 YWwgKyBpICogMTY7CistCistCQkgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0sIDE2KTsKKy0J CSAgZ3JlZyArPSBncmVnICYgMTsKKy0KKy0JCSAgaWYgKHdyaXRlX3Bhc3MpCistCQkgICAgewor LQkJICAgICAgaWYgKHZyZWcgPD0gMTMpCistCQkJcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdj YWNoZSwKKy0JCQkJCSAgICAgICB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIHZyZWcsCistCQkJCQkg ICAgICAgZWx2YWwpOworLQorLQkJICAgICAgd3JpdGVfbWVtb3J5IChncGFyYW0sIGVsdmFsLCAx Nik7CistCQkgICAgfQorLQorLQkJICBncmVnICs9IDI7CistCQkgIHZyZWcrKzsKKy0JCSAgZ3Bh cmFtICs9IDE2OworLQkJfQorLQkgICAgfQorLQkgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBl KSA9PSAxNiAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKKy0JCSAgICYmIFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX0FSUkFZCistCQkgICAmJiB0ZGVwLT52ZWN0b3JfYWJpID09IFBPV0VSUENf VkVDX0FMVElWRUMpCistCSAgICB7CistCSAgICAgIC8qIEluIHRoZSBBbHRpdmVjIEFCSSwgdmVj dG9ycyBnbyBpbiB0aGUgdmVjdG9yIHJlZ2lzdGVycworLQkJIHYyIC4uIHYxMywgYXMgd2VsbCBh cyB0aGUgcGFyYW1ldGVyIGFyZWEgLS0gYWx3YXlzIGF0CistCQkgMTYtYnl0ZSBhbGlnbmVkIGFk ZHJlc3Nlcy4gICovCistCistCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0sIDE2KTsK Ky0JICAgICAgZ3JlZyArPSBncmVnICYgMTsKKy0KKy0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCist CQl7CistCQkgIGlmICh2cmVnIDw9IDEzKQorLQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAo cmVnY2FjaGUsCistCQkJCQkgICB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIHZyZWcsIHZhbCk7Cist CistCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7Cist CQl9CistCistCSAgICAgIGdyZWcgKz0gMjsKKy0JICAgICAgdnJlZysrOworLQkgICAgICBncGFy YW0gKz0gMTY7CistCSAgICB9CistCSAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID49IDE2 ICYmIFRZUEVfVkVDVE9SICh0eXBlKQorLQkJICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfQVJSQVkpCistCSAgICB7CistCSAgICAgIC8qIE5vbi1BbHRpdmVjIHZlY3RvcnMgYXJl IHBhc3NlZCBieSByZWZlcmVuY2UuICAqLworLQorLQkgICAgICAvKiBDb3B5IHZhbHVlIG9udG8g dGhlIHN0YWNrIC4uLiAgKi8KKy0JICAgICAgcmVmcGFyYW0gPSBhbGlnbl91cCAocmVmcGFyYW0s IDE2KTsKKy0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCistCQl3cml0ZV9tZW1vcnkgKHJlZnBhcmFt LCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7CistCistCSAgICAgIC8qIC4uLiBhbmQgcGFzcyBh IHBvaW50ZXIgdG8gdGhlIGNvcHkgYXMgcGFyYW1ldGVyLiAgKi8KKy0JICAgICAgaWYgKHdyaXRl X3Bhc3MpCistCQl7CistCQkgIGlmIChncmVnIDw9IDEwKQorLQkJICAgIHJlZ2NhY2hlX2Nvb2tl ZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsCistCQkJCQkJICAgIHRkZXAtPnBwY19ncDBfcmVn bnVtICsKKy0JCQkJCQkgICAgZ3JlZywgcmVmcGFyYW0pOworLQkJICB3cml0ZV9tZW1vcnlfdW5z aWduZWRfaW50ZWdlciAoZ3BhcmFtLCB0ZGVwLT53b3Jkc2l6ZSwKKy0JCQkJCQkgYnl0ZV9vcmRl ciwgcmVmcGFyYW0pOworLQkJfQorLQkgICAgICBncmVnKys7CistCSAgICAgIGdwYXJhbSA9IGFs aWduX3VwIChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6ZSwgdGRlcC0+d29yZHNpemUpOworLQkgICAg ICByZWZwYXJhbSA9IGFsaWduX3VwIChyZWZwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRl cC0+d29yZHNpemUpOworLQkgICAgfQorLQkgIGVsc2UgaWYgKChUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9JTlQKKy0JCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9F TlVNCistCQkgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQk9PTAorLQkJICAg IHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0NIQVIKKy0JCSAgICB8fCBUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKy0JCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9SRUYpCistCQkgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPD0gOCkKKy0JICAg IHsKKy0JICAgICAgLyogU2NhbGFycyBhbmQgUG9pbnRlcnMgZ2V0IHNpZ25bdW5dZXh0ZW5kZWQg YW5kIGdvIGluCistCSAgICAgICAgIGdwcjMgLi4gZ3ByMTAuICBUaGV5IGNhbiBhbHNvIGVuZCB1 cCBpbiBtZW1vcnkuICAqLworLQkgICAgICBpZiAod3JpdGVfcGFzcykKKy0JCXsKKy0JCSAgLyog U2lnbiBleHRlbmQgdGhlIHZhbHVlLCB0aGVuIHN0b3JlIGl0IHVuc2lnbmVkLiAgKi8KKy0JCSAg VUxPTkdFU1Qgd29yZCA9IHVucGFja19sb25nICh0eXBlLCB2YWwpOworLQkJICAvKiBDb252ZXJ0 IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvCistCQkgICAgIGRlc2NyaXB0b3JzLiAg Ki8KKy0JCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUgorLQkJICAgICAg fHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkVGKQorLQkJICAgIHsKKy0JCSAgICAg IHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKKy0JCSAgICAgIHRhcmdldF90eXBlID0gY2hlY2tf dHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworLQorLQkJICAgICAgaWYgKFRZUEVf Q09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09ERV9GVU5DCistCQkJICB8fCBUWVBFX0NPREUg KHRhcmdldF90eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQorLQkJCXsKKy0JCQkgIENPUkVfQURE UiBkZXNjID0gd29yZDsKKy0JCQkgIGNvbnZlcnRfY29kZV9hZGRyX3RvX2Rlc2NfYWRkciAod29y ZCwgJmRlc2MpOworLQkJCSAgd29yZCA9IGRlc2M7CistCQkJfQorLQkJICAgIH0KKy0JCSAgaWYg KGdyZWcgPD0gMTApCistCQkgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdj YWNoZSwKKy0JCQkJCQkgICAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKworLQkJCQkJCSAgICBncmVn LCB3b3JkKTsKKy0JCSAgd3JpdGVfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKGdwYXJhbSwgdGRl cC0+d29yZHNpemUsCistCQkJCQkJIGJ5dGVfb3JkZXIsIHdvcmQpOworKwkJICBwcGM2NF9zeXN2 X2FiaV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5cGUsIGVsdmFsLCAmYXJncG9zKTsKKyAJCX0K Ky0JICAgICAgZ3JlZysrOworLQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAoZ3BhcmFtICsgVFlQ RV9MRU5HVEggKHR5cGUpLCB0ZGVwLT53b3Jkc2l6ZSk7CisgCSAgICB9CisgCSAgZWxzZQorIAkg ICAgeworLQkgICAgICBpbnQgYnl0ZTsKKy0JICAgICAgZm9yIChieXRlID0gMDsgYnl0ZSA8IFRZ UEVfTEVOR1RIICh0eXBlKTsKKy0JCSAgIGJ5dGUgKz0gdGRlcC0+d29yZHNpemUpCistCQl7Cist CQkgIGlmICh3cml0ZV9wYXNzICYmIGdyZWcgPD0gMTApCistCQkgICAgeworLQkJICAgICAgZ2Ri X2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKKy0JCSAgICAgIGludCBsZW4gPSBUWVBF X0xFTkdUSCAodHlwZSkgLSBieXRlOworLQkJICAgICAgaWYgKGxlbiA+IHRkZXAtPndvcmRzaXpl KQorLQkJCWxlbiA9IHRkZXAtPndvcmRzaXplOworLQkJICAgICAgbWVtc2V0IChyZWd2YWwsIDAs IHNpemVvZiByZWd2YWwpOworLQkJICAgICAgLyogVGhlIEFCSSAodmVyc2lvbiAxLjkpIHNwZWNp ZmllcyB0aGF0IHZhbHVlcworLQkJCSBzbWFsbGVyIHRoYW4gb25lIGRvdWJsZXdvcmQgYXJlIHJp Z2h0LWFsaWduZWQKKy0JCQkgYW5kIHRob3NlIGxhcmdlciBhcmUgbGVmdC1hbGlnbmVkLiAgR0ND CistCQkJIHZlcnNpb25zIGJlZm9yZSAzLjQgaW1wbGVtZW50ZWQgdGhpcworLQkJCSBpbmNvcnJl Y3RseTsgc2VlCistCQkJIDxodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTMuNC9wb3dlcnBjLWFiaS5o dG1sPi4gICovCistCQkgICAgICBpZiAoYnl0ZSA9PSAwKQorLQkJCW1lbWNweSAocmVndmFsICsg dGRlcC0+d29yZHNpemUgLSBsZW4sCistCQkJCXZhbCArIGJ5dGUsIGxlbik7CistCQkgICAgICBl bHNlCistCQkJbWVtY3B5IChyZWd2YWwsIHZhbCArIGJ5dGUsIGxlbik7CistCQkgICAgICByZWdj YWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBncmVnLCByZWd2YWwpOworLQkJICAgIH0KKy0J CSAgZ3JlZysrOworLQkJfQorLQkgICAgICBpZiAod3JpdGVfcGFzcykKKy0JCXsKKy0JCSAgLyog V0FSTklORzogY2FnbmV5LzIwMDMtMDktMjE6IFN0cmljdGx5IHNwZWFraW5nLCB0aGlzCistCQkg ICAgIGlzbid0IG5lY2Vzc2FyeSwgdW5mb3J0dW5hdGVseSwgR0NDIGFwcGVhcnMgdG8gZ2V0Cist CQkgICAgICJzdHJ1Y3QgY29udmVudGlvbiIgcGFyYW1ldGVyIHBhc3Npbmcgd3JvbmcgcHV0dGlu ZworLQkJICAgICBvZGQgc2l6ZWQgc3RydWN0dXJlcyBpbiBtZW1vcnkgaW5zdGVhZCBvZiBpbiBh CistCQkgICAgIHJlZ2lzdGVyLiAgV29yayBhcm91bmQgdGhpcyBieSBhbHdheXMgd3JpdGluZyB0 aGUKKy0JCSAgICAgdmFsdWUgdG8gbWVtb3J5LiAgRm9ydHVuYXRlbHksIGRvaW5nIHRoaXMKKy0J CSAgICAgc2ltcGxpZmllcyB0aGUgY29kZS4gICovCistCQkgIGludCBsZW4gPSBUWVBFX0xFTkdU SCAodHlwZSk7CistCQkgIGlmIChsZW4gPCB0ZGVwLT53b3Jkc2l6ZSkKKy0JCSAgICB3cml0ZV9t ZW1vcnkgKGdwYXJhbSArIHRkZXAtPndvcmRzaXplIC0gbGVuLCB2YWwsIGxlbik7CistCQkgIGVs c2UKKy0JCSAgICB3cml0ZV9tZW1vcnkgKGdwYXJhbSwgdmFsLCBsZW4pOworLQkJfQorLQkgICAg ICBpZiAoZnJlZyA8PSAxMworLQkJICAmJiBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9T VFJVQ1QKKy0JCSAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxCistCQkgICYmIFRZUEVfTEVO R1RIICh0eXBlKSA8PSAxNikKKy0JCXsKKy0JCSAgLyogVGhlIEFCSSAodmVyc2lvbiAxLjkpIHNw ZWNpZmllcyB0aGF0IHN0cnVjdHMKKy0JCSAgICAgY29udGFpbmluZyBhIHNpbmdsZSBmbG9hdGlu Zy1wb2ludCB2YWx1ZSwgYXQgYW55CistCQkgICAgIGxldmVsIG9mIG5lc3Rpbmcgb2Ygc2luZ2xl LW1lbWJlciBzdHJ1Y3RzLCBhcmUKKy0JCSAgICAgcGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJl Z2lzdGVycy4gICovCistCQkgIHdoaWxlIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9T VFJVQ1QKKy0JCQkgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQorLQkJICAgIHR5cGUgPSBj aGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKTsKKy0JCSAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZMVCkKKy0JCSAgICB7CistCQkgICAgICBpZiAoVFlQ RV9MRU5HVEggKHR5cGUpIDw9IDgpCistCQkJeworLQkJCSAgaWYgKHdyaXRlX3Bhc3MpCistCQkJ ICAgIHsKKy0JCQkgICAgICBnZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOworLQkJ CSAgICAgIHN0cnVjdCB0eXBlICpyZWd0eXBlCistCQkJCT0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJj aCwKKy0JCQkJCQkgdGRlcC0+cHBjX2ZwMF9yZWdudW0pOworLQkJCSAgICAgIGNvbnZlcnRfdHlw ZWRfZmxvYXRpbmcgKHZhbCwgdHlwZSwgcmVndmFsLAorLQkJCQkJCSAgICAgIHJlZ3R5cGUpOwor LQkJCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCistCQkJCQkJICAgICAo dGRlcC0+cHBjX2ZwMF9yZWdudW0KKy0JCQkJCQkgICAgICArIGZyZWcpLAorLQkJCQkJCSAgICAg cmVndmFsKTsKKy0JCQkgICAgfQorLQkJCSAgZnJlZysrOworLQkJCX0KKy0JCSAgICAgIGVsc2Ug aWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxNgorLQkJCSAgICAgICAmJiAoZ2RiYXJjaF9sb25n X2RvdWJsZV9mb3JtYXQgKGdkYmFyY2gpCistCQkJCSAgID09IGZsb2F0Zm9ybWF0c19pYm1fbG9u Z19kb3VibGUpKQorLQkJCXsKKy0JCQkgIGlmICh3cml0ZV9wYXNzKQorLQkJCSAgICB7CistCQkJ ICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKKy0JCQkJCQkgICAgICh0ZGVw LT5wcGNfZnAwX3JlZ251bQorLQkJCQkJCSAgICAgICsgZnJlZyksCistCQkJCQkJICAgICB2YWwp OworLQkJCSAgICAgIGlmIChmcmVnIDw9IDEyKQorLQkJCQlyZWdjYWNoZV9jb29rZWRfd3JpdGUg KHJlZ2NhY2hlLAorLQkJCQkJCSAgICAgICAodGRlcC0+cHBjX2ZwMF9yZWdudW0KKy0JCQkJCQkJ KyBmcmVnICsgMSksCistCQkJCQkJICAgICAgIHZhbCArIDgpOworLQkJCSAgICB9CistCQkJICBm cmVnICs9IDI7CistCQkJfQorLQkJICAgIH0KKy0JCX0KKy0JICAgICAgLyogQWx3YXlzIGNvbnN1 bWUgcGFyYW1ldGVyIHN0YWNrIHNwYWNlLiAgKi8KKy0JICAgICAgZ3BhcmFtID0gYWxpZ25fdXAg KGdwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNpemUpOworKwkgICAgICAv KiBBbGwgb3RoZXIgdHlwZXMgYXJlIHBhc3NlZCBhcyBzaW5nbGUgYXJndW1lbnRzLiAgKi8KKysJ ICAgICAgcHBjNjRfc3lzdl9hYmlfcHVzaF9wYXJhbSAoZ2RiYXJjaCwgdHlwZSwgdmFsLCAmYXJn cG9zKTsKKyAJICAgIH0KKyAJfQorIAorICAgICAgIGlmICghd3JpdGVfcGFzcykKKyAJeworIAkg IC8qIFNhdmUgdGhlIHRydWUgcmVnaW9uIHNpemVzIHJlYWR5IGZvciB0aGUgc2Vjb25kIHBhc3Mu ICAqLworLQkgIHJlZnBhcmFtX3NpemUgPSByZWZwYXJhbTsKKysJICByZWZwYXJhbV9zaXplID0g YXJncG9zLnJlZnBhcmFtOworIAkgIC8qIE1ha2UgY2VydGFpbiB0aGF0IHRoZSBnZW5lcmFsIHBh cmFtZXRlciBzYXZlIGFyZWEgaXMgYXQKKyAJICAgICBsZWFzdCB0aGUgbWluaW11bSA4IHJlZ2lz dGVycyAob3IgZG91Ymxld29yZHMpIGluIHNpemUuICAqLworLQkgIGlmIChncmVnIDwgOCkKKysJ ICBpZiAoYXJncG9zLmdyZWcgPCA4KQorIAkgICAgZ3BhcmFtX3NpemUgPSA4ICogdGRlcC0+d29y ZHNpemU7CisgCSAgZWxzZQorLQkgICAgZ3BhcmFtX3NpemUgPSBncGFyYW07CisrCSAgICBncGFy YW1fc2l6ZSA9IGFyZ3Bvcy5ncGFyYW07CisgCX0KKyAgICAgfQorIAorQEAgLTE3NTUsMjcxICsx NTY5LDI1MiBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorICAgcmV0dXJuIHNwOworIH0KKyAKKysvKiBTdWJyb3V0aW5lIG9mIHBwYzY0 X3N5c3ZfYWJpX3JldHVybl92YWx1ZSB0aGF0IGhhbmRsZXMgImJhc2UiIHR5cGVzOgorKyAgIGlu dGVnZXIsIGZsb2F0aW5nLXBvaW50LCBhbmQgQWx0aVZlYyB2ZWN0b3IgdHlwZXMuCisgCistLyog VGhlIDY0IGJpdCBBQkkgcmV0dXJuIHZhbHVlIGNvbnZlbnRpb24uCistCistICAgUmV0dXJuIG5v bi16ZXJvIGlmIHRoZSByZXR1cm4tdmFsdWUgaXMgc3RvcmVkIGluIGEgcmVnaXN0ZXIsIHJldHVy bgorLSAgIDAgaWYgdGhlIHJldHVybi12YWx1ZSBpcyBpbnN0ZWFkIHN0b3JlZCBvbiB0aGUgc3Rh Y2sgKGEuay5hLiwKKy0gICBzdHJ1Y3QgcmV0dXJuIGNvbnZlbnRpb24pLgorKyAgIFRoaXMgcm91 dGluZSBhbHNvIGhhbmRsZXMgY29tcG9uZW50cyBvZiBhZ2dyZWdhdGUgcmV0dXJuIHR5cGVzOwor KyAgIElOREVYIGRlc2NyaWJlcyB3aGljaCBwYXJ0IG9mIHRoZSBhZ2dyZWdhdGUgaXMgdG8gYmUg aGFuZGxlZC4KKyAKKy0gICBGb3IgYSByZXR1cm4tdmFsdWUgc3RvcmVkIGluIGEgcmVnaXN0ZXI6 IHdoZW4gV1JJVEVCVUYgaXMgbm9uLU5VTEwsCistICAgY29weSB0aGUgYnVmZmVyIHRvIHRoZSBj b3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12YWx1ZSBsb2NhdGlvbgorLSAgIGxvY2F0aW9u OyB3aGVuIFJFQURCVUYgaXMgbm9uLU5VTEwsIGZpbGwgdGhlIGJ1ZmZlciBmcm9tIHRoZQorLSAg IGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIgcmV0dXJuLXZhbHVlIGxvY2F0aW9uLiAgKi8KKy1lbnVt IHJldHVybl92YWx1ZV9jb252ZW50aW9uCistcHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwKKy0JCQkgICAg IHN0cnVjdCB0eXBlICp2YWx0eXBlLCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorLQkJCSAg ICAgZ2RiX2J5dGUgKnJlYWRidWYsIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZikKKysgICBSZXR1 cm5zIHRydWUgaWYgVkFMVFlQRSBpcyBzb21lIHN1Y2ggYmFzZSB0eXBlIHRoYXQgY291bGQgYmUg aGFuZGxlZCwKKysgICBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQKKytwcGM2NF9z eXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVj dCB0eXBlICp2YWx0eXBlLAorKwkJCQkgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGdkYl9i eXRlICpyZWFkYnVmLAorKwkJCQkgIGNvbnN0IGdkYl9ieXRlICp3cml0ZWJ1ZiwgaW50IGluZGV4 KQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFy Y2gpOworLSAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIg KGdkYmFyY2gpOworLSAgc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSA9IGZ1bmN0aW9uID8gdmFsdWVf dHlwZSAoZnVuY3Rpb24pIDogTlVMTDsKKy0gIGludCBvcGVuY2xfYWJpID0gZnVuY190eXBlPyBw cGNfc3lzdl91c2Vfb3BlbmNsX2FiaSAoZnVuY190eXBlKSA6IDA7CisgCistICAvKiBUaGlzIGZ1 bmN0aW9uIGV4aXN0cyB0byBzdXBwb3J0IGEgY2FsbGluZyBjb252ZW50aW9uIHRoYXQKKy0gICAg IHJlcXVpcmVzIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gIEl0IHNob3VsZG4ndCBiZSB1c2Vk IG9uCistICAgICBwcm9jZXNzb3JzIHRoYXQgbGFjayB0aGVtLiAgKi8KKy0gIGdkYl9hc3NlcnQg KHBwY19mbG9hdGluZ19wb2ludF91bml0X3AgKGdkYmFyY2gpKTsKKy0KKy0gIC8qIEZsb2F0cyBh bmQgZG91YmxlcyBpbiBGMS4gICovCistICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBF X0NPREVfRkxUICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4KQorLSAgICB7CistICAgICAg Z2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKKy0gICAgICBzdHJ1Y3QgdHlwZSAq cmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY19mcDBfcmVnbnVtKTsK Ky0gICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKy0JeworLQkgIGNvbnZlcnRfdHlwZWRfZmxv YXRpbmcgKHdyaXRlYnVmLCB2YWx0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOworLQkgIHJlZ2NhY2hl X2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMSwgcmVndmFs KTsKKy0JfQorLSAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCistCXsKKy0JICByZWdjYWNoZV9j b29rZWRfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMSwgcmVndmFsKTsK Ky0JICBjb252ZXJ0X3R5cGVkX2Zsb2F0aW5nIChyZWd2YWwsIHJlZ3R5cGUsIHJlYWRidWYsIHZh bHR5cGUpOworLQl9CistICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5U SU9OOworLSAgICB9CistICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfREVD RkxPQVQpCistICAgIHJldHVybiBnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUgKGdkYmFy Y2gsIHZhbHR5cGUsIHJlZ2NhY2hlLCByZWFkYnVmLAorLQkJCQkJICAgd3JpdGVidWYpOworLSAg LyogSW50ZWdlcnMgaW4gcjMuICAqLworKyAgLyogSW50ZWdlcnMgbGl2ZSBpbiBHUFJzIHN0YXJ0 aW5nIGF0IHIzLiAgKi8KKyAgIGlmICgoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVf SU5UCisgICAgICAgIHx8IFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0VOVU0KKyAg ICAgICAgfHwgVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQ0hBUgorICAgICAgICB8 fCBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9CT09MKQorICAgICAgICYmIFRZUEVf TEVOR1RIICh2YWx0eXBlKSA8PSA4KQorICAgICB7CisrICAgICAgaW50IHJlZ251bSA9IHRkZXAt PnBwY19ncDBfcmVnbnVtICsgMyArIGluZGV4OworKworICAgICAgIGlmICh3cml0ZWJ1ZiAhPSBO VUxMKQorIAl7CisgCSAgLyogQmUgY2FyZWZ1bCB0byBzaWduIGV4dGVuZCB0aGUgdmFsdWUuICAq LworLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIHRkZXAtPnBw Y19ncDBfcmVnbnVtICsgMywKKysJICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJl Z2NhY2hlLCByZWdudW0sCisgCQkJCQkgIHVucGFja19sb25nICh2YWx0eXBlLCB3cml0ZWJ1Zikp OworIAl9CisgICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKyAJeworLQkgIC8qIEV4dHJhY3Qg dGhlIGludGVnZXIgZnJvbSByMy4gIFNpbmNlIHRoaXMgaXMgdHJ1bmNhdGluZyB0aGUKKysJICAv KiBFeHRyYWN0IHRoZSBpbnRlZ2VyIGZyb20gR1BSLiAgU2luY2UgdGhpcyBpcyB0cnVuY2F0aW5n IHRoZQorIAkgICAgIHZhbHVlLCB0aGVyZSBpc24ndCBhIHNpZ24gZXh0ZW5zaW9uIHByb2JsZW0u ICAqLworIAkgIFVMT05HRVNUIHJlZ3ZhbDsKKy0JICByZWdjYWNoZV9jb29rZWRfcmVhZF91bnNp Z25lZCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywKKy0JCQkJCSAmcmVndmFs KTsKKy0JICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVmLCBUWVBFX0xFTkdUSCAodmFs dHlwZSksIGJ5dGVfb3JkZXIsCistCQkJCSAgcmVndmFsKTsKKysKKysJICByZWdjYWNoZV9jb29r ZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHJlZ251bSwgJnJlZ3ZhbCk7CisrCSAgc3RvcmVf dW5zaWduZWRfaW50ZWdlciAocmVhZGJ1ZiwgVFlQRV9MRU5HVEggKHZhbHR5cGUpLAorKwkJCQkg IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCksIHJlZ3ZhbCk7CisgCX0KKy0gICAgICByZXR1 cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisrICAgICAgcmV0dXJuIDE7Cisg ICAgIH0KKy0gIC8qIEFsbCBwb2ludGVycyBsaXZlIGluIHIzLiAgKi8KKy0gIGlmIChUWVBFX0NP REUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKy0gICAgICB8fCBUWVBFX0NPREUgKHZhbHR5 cGUpID09IFRZUEVfQ09ERV9SRUYpCisrCisrICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4g ZjEgLi4gZjEzLiAgMzItYml0IGZsb2F0cyBhcmUgY29udmVydGVkCisrICAgICB0byBkb3VibGUg Zmlyc3QuICAqLworKyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4CisrICAgICAgJiYg VFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUKQorICAgICB7CistICAgICAgLyog QWxsIHBvaW50ZXJzIGxpdmUgaW4gcjMuICAqLworKyAgICAgIGludCByZWdudW0gPSB0ZGVwLT5w cGNfZnAwX3JlZ251bSArIDEgKyBpbmRleDsKKysgICAgICBzdHJ1Y3QgdHlwZSAqcmVndHlwZSA9 IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251bSk7CisrICAgICAgZ2RiX2J5dGUgcmVndmFs W01BWF9SRUdJU1RFUl9TSVpFXTsKKysKKyAgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKy0J cmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAz LCB3cml0ZWJ1Zik7CisrCXsKKysJICBjb252ZXJ0X3R5cGVkX2Zsb2F0aW5nICh3cml0ZWJ1Ziwg dmFsdHlwZSwgcmVndmFsLCByZWd0eXBlKTsKKysJICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJl Z2NhY2hlLCByZWdudW0sIHJlZ3ZhbCk7CisrCX0KKyAgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxM KQorLQlyZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVt ICsgMywgcmVhZGJ1Zik7CistICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05W RU5USU9OOworKwl7CisrCSAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0s IHJlZ3ZhbCk7CisrCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAocmVndmFsLCByZWd0eXBlLCBy ZWFkYnVmLCB2YWx0eXBlKTsKKysJfQorKyAgICAgIHJldHVybiAxOworICAgICB9CistICAvKiBP cGVuQ0wgdmVjdG9ycyA8IDE2IGJ5dGVzIGFyZSByZXR1cm5lZCBhcyBkaXN0aW5jdAorLSAgICAg c2NhbGFycyBpbiBmMS4uZjIgb3IgcjMuLnIxMC4gICovCistICBpZiAoVFlQRV9DT0RFICh2YWx0 eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKKy0gICAgICAmJiBUWVBFX1ZFQ1RPUiAodmFsdHlwZSkK Ky0gICAgICAmJiBUWVBFX0xFTkdUSCAodmFsdHlwZSkgPCAxNgorLSAgICAgICYmIG9wZW5jbF9h YmkpCistICAgIHsKKy0gICAgICBzdHJ1Y3QgdHlwZSAqZWx0eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkpOworLSAgICAgIGludCBpLCBuZWx0ID0gVFlQRV9M RU5HVEggKHZhbHR5cGUpIC8gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisgCistICAgICAgZm9yIChp ID0gMDsgaSA8IG5lbHQ7IGkrKykKKy0JeworLQkgIGludCBvZmZzZXQgPSBpICogVFlQRV9MRU5H VEggKGVsdHlwZSk7CisrICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAg MzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZQorKyAgICAgcGxhY2VkIGluIHRoZSBsZWFzdCBzaWdu aWZpY2FudCB3b3JkLiAgKi8KKysgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPD0gOAorKyAg ICAgICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQorKyAgICB7 CisrICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMSArIGluZGV4Owor KyAgICAgIGludCBvZmZzZXQgPSA4IC0gVFlQRV9MRU5HVEggKHZhbHR5cGUpOworIAorLQkgIGlm IChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVCkKKy0JICAgIHsKKy0JICAgICAg aW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMSArIGk7CistCSAgICAgIGdkYl9i eXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07CistCSAgICAgIHN0cnVjdCB0eXBlICpyZWd0 eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwgcmVnbnVtKTsKKysgICAgICBpZiAod3JpdGVi dWYgIT0gTlVMTCkKKysJcmVnY2FjaGVfY29va2VkX3dyaXRlX3BhcnQgKHJlZ2NhY2hlLCByZWdu dW0sCisrCQkJCSAgICBvZmZzZXQsIFRZUEVfTEVOR1RIICh2YWx0eXBlKSwgd3JpdGVidWYpOwor KyAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCisrCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3BhcnQg KHJlZ2NhY2hlLCByZWdudW0sCisrCQkJCSAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHZhbHR5cGUp LCByZWFkYnVmKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorIAorLQkgICAgICBpZiAod3Jp dGVidWYgIT0gTlVMTCkKKy0JCXsKKy0JCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAod3JpdGVi dWYgKyBvZmZzZXQsIGVsdHlwZSwKKy0JCQkJCSAgcmVndmFsLCByZWd0eXBlKTsKKy0JCSAgcmVn Y2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgcmVnbnVtLCByZWd2YWwpOworLQkJfQorLQkg ICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorLQkJeworLQkJICByZWdjYWNoZV9jb29rZWRfcmVh ZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKKy0JCSAgY29udmVydF90eXBlZF9mbG9hdGlu ZyAocmVndmFsLCByZWd0eXBlLAorLQkJCQkJICByZWFkYnVmICsgb2Zmc2V0LCBlbHR5cGUpOwor LQkJfQorLQkgICAgfQorLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAgaW50IHJlZ251bSA9IHRk ZXAtPnBwY19ncDBfcmVnbnVtICsgMyArIGk7CistCSAgICAgIFVMT05HRVNUIHJlZ3ZhbDsKKysg IC8qIElCTSBsb25nIGRvdWJsZSBzdG9yZWQgaW4gdHdvIGNvbnNlY3V0aXZlIEZQUnMuICAqLwor KyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSAxNgorKyAgICAgICYmIFRZUEVfQ09ERSAo dmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAorKyAgICAgICYmIChnZGJhcmNoX2xvbmdfZG91Ymxl X2Zvcm1hdCAoZ2RiYXJjaCkKKysJICA9PSBmbG9hdGZvcm1hdHNfaWJtX2xvbmdfZG91YmxlKSkK KysgICAgeworKyAgICAgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyAy ICogaW5kZXg7CisgCistCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorLQkJeworLQkJICBy ZWd2YWwgPSB1bnBhY2tfbG9uZyAoZWx0eXBlLCB3cml0ZWJ1ZiArIG9mZnNldCk7CistCQkgIHJl Z2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsK Ky0JCX0KKy0JICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKy0JCXsKKy0JCSAgcmVnY2FjaGVf Y29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCByZWdudW0sICZyZWd2YWwpOworLQkJICBz dG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVmICsgb2Zmc2V0LAorLQkJCQkJICBUWVBFX0xF TkdUSCAoZWx0eXBlKSwgYnl0ZV9vcmRlciwKKy0JCQkJCSAgcmVndmFsKTsKKy0JCX0KKy0JICAg IH0KKysgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKysJeworKwkgIHJlZ2NhY2hlX2Nvb2tl ZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3JpdGVidWYpOworKwkgIHJlZ2NhY2hlX2Nvb2tl ZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSArIDEsIHdyaXRlYnVmICsgOCk7CisgCX0KKy0KKy0g ICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisrICAgICAgaWYg KHJlYWRidWYgIT0gTlVMTCkKKysJeworKwkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNo ZSwgcmVnbnVtLCByZWFkYnVmKTsKKysJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUs IHJlZ251bSArIDEsIHJlYWRidWYgKyA4KTsKKysJfQorKyAgICAgIHJldHVybiAxOworICAgICB9 CistICAvKiBPcGVuQ0wgdmVjdG9ycyA+PSAxNiBieXRlcyBhcmUgcmV0dXJuZWQgaW4gdjIuLnY5 LiAgKi8KKy0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorLSAg ICAgICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQorLSAgICAgICYmIFRZUEVfTEVOR1RIICh2YWx0 eXBlKSA+PSAxNgorLSAgICAgICYmIG9wZW5jbF9hYmkpCisrCisrICAvKiAxMjgtYml0IGRlY2lt YWwgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gYW4gZXZlbi9vZGQKKysgICAg IHBhaXIgb2YgRlBScywgd2l0aCB0aGUgZXZlbiBGUFIgaG9sZGluZyB0aGUgbW9zdCBzaWduaWZp Y2FudCBoYWxmLiAgKi8KKysgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPT0gMTYKKysgICAg ICAmJiBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9ERUNGTE9BVCkKKyAgICAgewor LSAgICAgIGludCBuX3JlZ3MgPSBUWVBFX0xFTkdUSCAodmFsdHlwZSkgLyAxNjsKKy0gICAgICBp bnQgaTsKKysgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAyICsgMiAq IGluZGV4OworIAorLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3JlZ3M7IGkrKykKKysgICAgICBp ZiAod3JpdGVidWYgIT0gTlVMTCkKKyAJeworLQkgIGludCBvZmZzZXQgPSBpICogMTY7CistCSAg aW50IHJlZ251bSA9IHRkZXAtPnBwY192cjBfcmVnbnVtICsgMiArIGk7CistCistCSAgaWYgKHdy aXRlYnVmICE9IE5VTEwpCistCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBy ZWdudW0sIHdyaXRlYnVmICsgb2Zmc2V0KTsKKy0JICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorLQkg ICAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0sIHJlYWRidWYgKyBvZmZz ZXQpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3JpdGVi dWYpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSArIDEsIHdy aXRlYnVmICsgOCk7CisgCX0KKy0KKy0gICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVS X0NPTlZFTlRJT047CisrICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKKysJeworKwkgIHJlZ2Nh Y2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsKKysJICByZWdjYWNo ZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSArIDEsIHJlYWRidWYgKyA4KTsKKysJfQor KyAgICAgIHJldHVybiAxOworICAgICB9CistICAvKiBBcnJheSB0eXBlIGhhcyBtb3JlIHRoYW4g b25lIHVzZS4gICovCistICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJS QVkpCisrCisrICAvKiBBbHRpVmVjIHZlY3RvcnMgYXJlIHJldHVybmVkIGluIFZScyBzdGFydGlu ZyBhdCB2Mi4gICovCisrICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJS QVkgJiYgVFlQRV9WRUNUT1IgKHZhbHR5cGUpCisrICAgICAgJiYgdGRlcC0+dmVjdG9yX2FiaSA9 PSBQT1dFUlBDX1ZFQ19BTFRJVkVDKQorICAgICB7CistICAgICAgLyogU21hbGwgY2hhcmFjdGVy IGFycmF5cyBhcmUgcmV0dXJuZWQsIHJpZ2h0IGp1c3RpZmllZCwgaW4gcjMuICAqLworLSAgICAg IGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPD0gOAorLSAgICAgICAgJiYgVFlQRV9DT0RFIChU WVBFX1RBUkdFVF9UWVBFICh2YWx0eXBlKSkgPT0gVFlQRV9DT0RFX0lOVAorLSAgICAgICAgJiYg VFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKSA9PSAxKQorLSAgICAgICAg eworLSAgICAgICAgICBpbnQgb2Zmc2V0ID0gKHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHRkZXAt PnBwY19ncDBfcmVnbnVtICsgMykKKy0gICAgICAgICAgICAgICAgICAgICAgIC0gVFlQRV9MRU5H VEggKHZhbHR5cGUpKTsKKy0gICAgICAgICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCistICAgICAg ICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBf cmVnbnVtICsgMywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dCwgVFlQRV9MRU5HVEggKHZhbHR5cGUpLCB3cml0ZWJ1Zik7CistICAgICAgICAgIGlmIChyZWFk YnVmICE9IE5VTEwpCistICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfcmVhZF9wYXJ0IChyZWdj YWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAzLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0LCBUWVBFX0xFTkdUSCAodmFsdHlwZSksIHJlYWRidWYpOwor LSAgICAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CistCX0K Ky0gICAgICAvKiBBIFZNWCB2ZWN0b3IgaXMgcmV0dXJuZWQgaW4gdjIuICAqLworLSAgICAgIGlm IChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorLQkgICYmIFRZUEVfVkVD VE9SICh2YWx0eXBlKQorLQkgICYmIHRkZXAtPnZlY3Rvcl9hYmkgPT0gUE9XRVJQQ19WRUNfQUxU SVZFQykKKy0gICAgICAgIHsKKy0gICAgICAgICAgaWYgKHJlYWRidWYpCistICAgICAgICAgICAg cmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIDIs IHJlYWRidWYpOworLSAgICAgICAgICBpZiAod3JpdGVidWYpCistICAgICAgICAgICAgcmVnY2Fj aGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyAyLAorLQkJ CQkgICB3cml0ZWJ1Zik7CistICAgICAgICAgIHJldHVybiBSRVRVUk5fVkFMVUVfUkVHSVNURVJf Q09OVkVOVElPTjsKKy0gICAgICAgIH0KKysgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX3Zy MF9yZWdudW0gKyAyICsgaW5kZXg7CisrCisrICAgICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCisr CXJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3JpdGVidWYpOworKyAg ICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCisrCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNo ZSwgcmVnbnVtLCByZWFkYnVmKTsKKysgICAgICByZXR1cm4gMTsKKyAgICAgfQorLSAgLyogQmln IGZsb2F0aW5nIHBvaW50IHZhbHVlcyBnZXQgc3RvcmVkIGluIGFkamFjZW50IGZsb2F0aW5nCist ICAgICBwb2ludCByZWdpc3RlcnMsIHN0YXJ0aW5nIHdpdGggRjEuICAqLworLSAgaWYgKFRZUEVf Q09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAorLSAgICAgICYmIChUWVBFX0xFTkdUSCAo dmFsdHlwZSkgPT0gMTYgfHwgVFlQRV9MRU5HVEggKHZhbHR5cGUpID09IDMyKSkKKysKKysgIHJl dHVybiAwOworK30KKysKKysvKiBUaGUgNjQgYml0IEFCSSByZXR1cm4gdmFsdWUgY29udmVudGlv bi4KKysKKysgICBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIHJldHVybi12YWx1ZSBpcyBzdG9yZWQg aW4gYSByZWdpc3RlciwgcmV0dXJuCisrICAgMCBpZiB0aGUgcmV0dXJuLXZhbHVlIGlzIGluc3Rl YWQgc3RvcmVkIG9uIHRoZSBzdGFjayAoYS5rLmEuLAorKyAgIHN0cnVjdCByZXR1cm4gY29udmVu dGlvbikuCisrCisrICAgRm9yIGEgcmV0dXJuLXZhbHVlIHN0b3JlZCBpbiBhIHJlZ2lzdGVyOiB3 aGVuIFdSSVRFQlVGIGlzIG5vbi1OVUxMLAorKyAgIGNvcHkgdGhlIGJ1ZmZlciB0byB0aGUgY29y cmVzcG9uZGluZyByZWdpc3RlciByZXR1cm4tdmFsdWUgbG9jYXRpb24KKysgICBsb2NhdGlvbjsg d2hlbiBSRUFEQlVGIGlzIG5vbi1OVUxMLCBmaWxsIHRoZSBidWZmZXIgZnJvbSB0aGUKKysgICBj b3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12YWx1ZSBsb2NhdGlvbi4gICovCisrZW51bSBy ZXR1cm5fdmFsdWVfY29udmVudGlvbgorK3BwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sCisrCQkJICAgICBz dHJ1Y3QgdHlwZSAqdmFsdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysJCQkgICAg IGdkYl9ieXRlICpyZWFkYnVmLCBjb25zdCBnZGJfYnl0ZSAqd3JpdGVidWYpCisreworKyAgc3Ry dWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisrICBzdHJ1 Y3QgdHlwZSAqZnVuY190eXBlID0gZnVuY3Rpb24gPyB2YWx1ZV90eXBlIChmdW5jdGlvbikgOiBO VUxMOworKyAgaW50IG9wZW5jbF9hYmkgPSBmdW5jX3R5cGU/IHBwY19zeXN2X3VzZV9vcGVuY2xf YWJpIChmdW5jX3R5cGUpIDogMDsKKysgIHN0cnVjdCB0eXBlICplbHR5cGU7CisrICBpbnQgbmVs dCwgaSwgb2s7CisrCisrICAvKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyB0byBzdXBwb3J0IGEgY2Fs bGluZyBjb252ZW50aW9uIHRoYXQKKysgICAgIHJlcXVpcmVzIGZsb2F0aW5nLXBvaW50IHJlZ2lz dGVycy4gIEl0IHNob3VsZG4ndCBiZSB1c2VkIG9uCisrICAgICBwcm9jZXNzb3JzIHRoYXQgbGFj ayB0aGVtLiAgKi8KKysgIGdkYl9hc3NlcnQgKHBwY19mbG9hdGluZ19wb2ludF91bml0X3AgKGdk YmFyY2gpKTsKKysKKysgIC8qIENvbXBsZXggdHlwZXMgYXJlIHJldHVybmVkIGFzIGlmIHR3byBp bmRlcGVuZGVudCBzY2FsYXJzLiAgKi8KKysgIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZ UEVfQ09ERV9DT01QTEVYKQorICAgICB7CistICAgICAgaWYgKHdyaXRlYnVmIHx8IHJlYWRidWYg IT0gTlVMTCkKKysgICAgICBlbHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBF ICh2YWx0eXBlKSk7CisrCisrICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKyAJeworLQkg IGludCBpOworLQkgIGZvciAoaSA9IDA7IGkgPCBUWVBFX0xFTkdUSCAodmFsdHlwZSkgLyA4OyBp KyspCistCSAgICB7CistCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorLQkJcmVnY2FjaGVf Y29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0J CQkJICAgICAgIChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArIGkgKiA4KTsKKy0JICAgICAg aWYgKHJlYWRidWYgIT0gTlVMTCkKKy0JCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwg dGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0JCQkJICAgICAgKGJmZF9ieXRlICopIHJl YWRidWYgKyBpICogOCk7CistCSAgICB9CisrCSAgb2sgPSBwcGM2NF9zeXN2X2FiaV9yZXR1cm5f dmFsdWVfYmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCByZWdjYWNoZSwKKysJCQkJCQkgcmVhZGJ1Ziwg d3JpdGVidWYsIGkpOworKwkgIGdkYl9hc3NlcnQgKG9rKTsKKysKKysJICBpZiAocmVhZGJ1ZikK KysJICAgIHJlYWRidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisrCSAgaWYgKHdyaXRlYnVm KQorKwkgICAgd3JpdGVidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisgCX0KKyAgICAgICBy ZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisgICAgIH0KKy0gIC8qIENv bXBsZXggdmFsdWVzIGdldCByZXR1cm5lZCBpbiBmMTpmMiwgbmVlZCB0byBjb252ZXJ0LiAgKi8K Ky0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYCistICAgICAg JiYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSA4IHx8IFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9 PSAxNikpCisrCisrICAvKiBPcGVuQ0wgdmVjdG9ycyBzaG9ydGVyIHRoYW4gMTYgYnl0ZXMgYXJl IHJldHVybmVkIGFzIGlmCisrICAgICBhIHNlcmllcyBvZiBpbmRlcGVuZGVudCBzY2FsYXJzOyBP cGVuQ0wgdmVjdG9ycyAxNiBieXRlcworKyAgICAgb3IgbG9uZ2VyIGFyZSByZXR1cm5lZCBhcyBp ZiBhIHNlcmllcyBvZiBBbHRpVmVjIHZlY3RvcnMuICAqLworKyAgaWYgKFRZUEVfQ09ERSAodmFs dHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQorKyAgICAg ICYmIG9wZW5jbF9hYmkpCisgICAgIHsKKy0gICAgICBpZiAocmVnY2FjaGUgIT0gTlVMTCkKKysg ICAgICBpZiAoVFlQRV9MRU5HVEggKHZhbHR5cGUpIDwgMTYpCisrCWVsdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKTsKKysgICAgICBlbHNlCisrCWVsdHlw ZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY192cjBfcmVnbnVtKTsKKysKKysg ICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHZhbHR5cGUpIC8gVFlQRV9MRU5HVEggKGVsdHlwZSk7 CisrICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHQ7IGkrKykKKyAJeworLQkgIGludCBpOworLQkg IGZvciAoaSA9IDA7IGkgPCAyOyBpKyspCistCSAgICB7CistCSAgICAgIGdkYl9ieXRlIHJlZ3Zh bFtNQVhfUkVHSVNURVJfU0laRV07CistCSAgICAgIHN0cnVjdCB0eXBlICpyZWd0eXBlID0KKy0J CXJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAtPnBwY19mcDBfcmVnbnVtKTsKKy0JICAgICAg c3RydWN0IHR5cGUgKnRhcmdldF90eXBlOworLQkgICAgICB0YXJnZXRfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5cGUpKTsKKy0JICAgICAgaWYgKHdyaXRlYnVm ICE9IE5VTEwpCistCQl7CistCQkgIGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcgKChjb25zdCBiZmRf Ynl0ZSAqKSB3cml0ZWJ1ZiArCistCQkJCQkgIGkgKiBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUp LCAKKy0JCQkJCSAgdGFyZ2V0X3R5cGUsIHJlZ3ZhbCwgcmVndHlwZSk7CistCQkgIHJlZ2NhY2hl X2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyBpLAorLQkJCQkJIHJlZ3ZhbCk7 CistCQl9CistCSAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCistCQl7CistCQkgIHJlZ2NhY2hl X2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVndmFsKTsKKy0JCSAgY29udmVydF90eXBlZF9mbG9h dGluZyAocmVndmFsLCByZWd0eXBlLAorLQkJCQkJICAoYmZkX2J5dGUgKikgcmVhZGJ1ZiArCist CQkJCQkgIGkgKiBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpLAorLQkJCQkJICB0YXJnZXRfdHlw ZSk7CistCQl9CistCSAgICB9CisrCSAgb2sgPSBwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVf YmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCByZWdjYWNoZSwKKysJCQkJCQkgcmVhZGJ1Ziwgd3JpdGVi dWYsIGkpOworKwkgIGdkYl9hc3NlcnQgKG9rKTsKKysKKysJICBpZiAocmVhZGJ1ZikKKysJICAg IHJlYWRidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisrCSAgaWYgKHdyaXRlYnVmKQorKwkg ICAgd3JpdGVidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlwZSk7CisgCX0KKyAgICAgICByZXR1cm4g UkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047CisgICAgIH0KKy0gIC8qIEJpZyBjb21w bGV4IHZhbHVlcyBnZXQgc3RvcmVkIGluIGYxOmY0LiAgKi8KKy0gIGlmIChUWVBFX0NPREUgKHZh bHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSAz MikKKysKKysgIC8qIEFsbCBwb2ludGVycyBsaXZlIGluIHIzLiAgKi8KKysgIGlmIChUWVBFX0NP REUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIKKysgICAgICB8fCBUWVBFX0NPREUgKHZhbHR5 cGUpID09IFRZUEVfQ09ERV9SRUYpCisgICAgIHsKKy0gICAgICBpZiAocmVnY2FjaGUgIT0gTlVM TCkKKy0JeworLQkgIGludCBpOworLQkgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCistCSAgICB7 CistCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorLQkJcmVnY2FjaGVfY29va2VkX3dyaXRl IChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKKy0JCQkJICAgICAgIChj b25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArIGkgKiA4KTsKKy0JICAgICAgaWYgKHJlYWRidWYg IT0gTlVMTCkKKy0JCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgdGRlcC0+cHBjX2Zw MF9yZWdudW0gKyAxICsgaSwKKy0JCQkJICAgICAgKGJmZF9ieXRlICopIHJlYWRidWYgKyBpICog OCk7CistCSAgICB9CistCX0KKysgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2dwMF9yZWdu dW0gKyAzOworKworKyAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorKwlyZWdjYWNoZV9jb29r ZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmKTsKKysgICAgICBpZiAocmVhZGJ1 ZiAhPSBOVUxMKQorKwlyZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVh ZGJ1Zik7CisgICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5USU9OOwor ICAgICB9CisrCisrICAvKiBTbWFsbCBjaGFyYWN0ZXIgYXJyYXlzIGFyZSByZXR1cm5lZCwgcmln aHQganVzdGlmaWVkLCBpbiByMy4gICovCisrICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBU WVBFX0NPREVfQVJSQVkKKysgICAgICAmJiBUWVBFX0xFTkdUSCAodmFsdHlwZSkgPD0gOAorKyAg ICAgICYmIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkpID09IFRZUEVfQ09E RV9JTlQKKysgICAgICAmJiBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkp ID09IDEpCisrICAgIHsKKysgICAgICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2dwMF9yZWdudW0g KyAzOworKyAgICAgIGludCBvZmZzZXQgPSAocmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnbnVt KSAtIFRZUEVfTEVOR1RIICh2YWx0eXBlKSk7CisrCisrICAgICAgaWYgKHdyaXRlYnVmICE9IE5V TEwpCisrCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9wYXJ0IChyZWdjYWNoZSwgcmVnbnVtLAorKwkJ CQkgICAgb2Zmc2V0LCBUWVBFX0xFTkdUSCAodmFsdHlwZSksIHdyaXRlYnVmKTsKKysgICAgICBp ZiAocmVhZGJ1ZiAhPSBOVUxMKQorKwlyZWdjYWNoZV9jb29rZWRfcmVhZF9wYXJ0IChyZWdjYWNo ZSwgcmVnbnVtLAorKwkJCQkgICBvZmZzZXQsIFRZUEVfTEVOR1RIICh2YWx0eXBlKSwgcmVhZGJ1 Zik7CisrICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5USU9OOworKyAg ICB9CisrCisrICAvKiBIYW5kbGUgcGxhaW4gYmFzZSB0eXBlcy4gICovCisrICBpZiAocHBjNjRf c3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UgKGdkYmFyY2gsIHZhbHR5cGUsIHJlZ2NhY2hlLAor KwkJCQkJcmVhZGJ1Ziwgd3JpdGVidWYsIDApKQorKyAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JF R0lTVEVSX0NPTlZFTlRJT047CisrCisgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1NUUlVDVF9DT05W RU5USU9OOworIH0KKyAKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTA1b2YxNS5w YXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMDVvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmZhM2ZkYTAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJl YW0tcHBjNjRsZTA1b2YxNS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitjb21taXQgZDYzMTY3YWZm YzJhNTYxODllM2JhMmNjNDdkZDlhMzQ1MTIwOGI1OQorQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8 dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KK0RhdGU6ICAgVHVlIEZlYiA0IDE4OjI2OjI2IDIw MTQgKzAxMDAKKworICAgIFBvd2VyUEM2NCBsaXR0bGUtZW5kaWFuIGZpeGVzOiBzdHJ1Y3R1cmUg cGFzc2luZworICAgIAorICAgIFdoZW4gcGFzc2luZyBhIHNtYWxsIHN0cnVjdHVyZSBpbiBhIEdQ UiwgdGhlIEFCSSBzcGVjaWZpZXMgdGhhdCBpdAorICAgIHNob3VsZCBiZSBwYXNzZWQgaW4gdGhl IGxlYXN0LXNpZ25pZmljYW50IGJ5dGVzIG9mIHRoZSByZWdpc3RlcgorICAgIChvciBzdGFjayBz bG90KS4gIE9uIGJpZy1lbmRpYW4gc3lzdGVtcywgdGhpcyBtZWFucyB0aGUgdmFsdWUKKyAgICBu ZWVkcyB0byBiZSBzdG9yZWQgYXQgYW4gb2Zmc2V0LCB3aGljaCBpcyB3aGF0IGN1cnJlbnQgY29k ZSBkb2VzLgorICAgIAorICAgIEhvd2V2ZXIsIG9uIGxpdHRsZS1lbmRpYW4gc3lzdGVtcywgdGhl IGxlYXN0LXNpZ25pZmljYW50IGJ5dGVzIGFyZQorICAgIGFkZHJlc3NlcyB3aXRoIG9mZnNldCAw LiAgVGhpcyBwYXRjaCBmaXhlcyB0aGF0LgorICAgIAorICAgIGdkYi9DaGFuZ2VMb2c6CisgICAg CisgICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCk6IFVzZSBj b3JyZWN0CisgICAgCW9mZnNldCBvbiBsaXR0bGUtZW5kaWFuIHdoZW4gcGFzc2luZyBzbWFsbCBz dHJ1Y3R1cmVzLgorCisjIyMgYS9nZGIvQ2hhbmdlTG9nCisjIyMgYi9nZGIvQ2hhbmdlTG9nCisj IyAtMSw1ICsxLDEwIEBACisgMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRA ZGUuaWJtLmNvbT4KKyAKKysJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hf dmFsKTogVXNlIGNvcnJlY3QKKysJb2Zmc2V0IG9uIGxpdHRsZS1lbmRpYW4gd2hlbiBwYXNzaW5n IHNtYWxsIHN0cnVjdHVyZXMuCisrCisrMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdl aWdhbmRAZGUuaWJtLmNvbT4KKysKKyAJKiBwcGMtc3lzdi10ZGVwLmMgKGdldF9kZWNpbWFsX2Zs b2F0X3JldHVybl92YWx1ZSk6IFVwZGF0ZSBjb21tZW50LgorIAkoc3RydWN0IHBwYzY0X3N5c3Zf YXJncG9zKTogTmV3IGRhdGEgc3RydWN0dXJlLgorIAkocHBjNjRfc3lzdl9hYmlfcHVzaF9mbG9h dCk6IFJlbW92ZS4KKy0tLSBhL2dkYi9wcGMtc3lzdi10ZGVwLmMKKysrKyBiL2dkYi9wcGMtc3lz di10ZGVwLmMKK0BAIC0xMTUwLDcgKzExNTAsOCBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICBkb3VibGV3b3JkIGFyZSByaWdodC1hbGln bmVkIGFuZCB0aG9zZSBsYXJnZXIgYXJlIGxlZnQtYWxpZ25lZC4KKyAgICAgIEdDQyB2ZXJzaW9u cyBiZWZvcmUgMy40IGltcGxlbWVudGVkIHRoaXMgaW5jb3JyZWN0bHk7IHNlZQorICAgICAgPGh0 dHA6Ly9nY2MuZ251Lm9yZy9nY2MtMy40L3Bvd2VycGMtYWJpLmh0bWw+LiAgKi8KKy0gIGlmIChs ZW4gPCB0ZGVwLT53b3Jkc2l6ZSkKKysgIGlmIChsZW4gPCB0ZGVwLT53b3Jkc2l6ZQorKyAgICAg ICYmIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcpCisgICAg IG9mZnNldCA9IHRkZXAtPndvcmRzaXplIC0gbGVuOworIAorICAgaWYgKGFyZ3Bvcy0+cmVnY2Fj aGUpCgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2ggYi9nZGIt dXBzdHJlYW0tcHBjNjRsZTA2b2YxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5kMDMyNThkCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUw Nm9mMTUucGF0Y2gKQEAgLTAsMCArMSw2NyBAQAorY29tbWl0IDZlZDE0ZmYzMzk3OWJjNDgzNjdj MzViMWIyMzVmZWY4YzVlMjIyOWIKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWln YW5kQGRlLmlibS5jb20+CitEYXRlOiAgIFR1ZSBGZWIgNCAxODoyODoyNCAyMDE0ICswMTAwCisK KyAgICBQb3dlclBDNjQgbGl0dGxlLWVuZGlhbiBmaXhlczogQWx0aVZlYyB0ZXN0cworICAgIAor ICAgIEEgY291cGxlIG9mIEFsdGlWZWMgdGVzdHMgZmFpbCBzcHVyaW91c2x5IG9uIHBvd2VycGM2 NGxlLWxpbnV4LCBiZWNhdXNlCisgICAgdGhleSBjb21wYXJlIGFnYWluc3QgYW4gaW5jb3JyZWN0 IHBhdHRlcm4uICBOb3RlIHRoYXQgdGhvc2UgdGVzdHMgYWxyZWFkeQorICAgIGNvbnRhaW4gbGl0 dGxlLWVuZGlhbiB2YXJpYW50cyBvZiB0aGUgcGF0dGVybnMsIGJ1dCB0aG9zZSBzZWVtIHRvIGhh dmUKKyAgICBiaXQtcm90dGVkIGEgYml0OiB3aGVuIG91dHB1dHRpbmcgYSB2ZWN0b3IsIEdEQiBu byBsb25nZXIgb21pdHMgdHJhaWxpbmcKKyAgICB6ZXJvIGVsZW1lbnRzIChhcyBpdCB1c2VkIHRv IGRvIGluIHRoZSBwYXN0KS4KKyAgICAKKyAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIHBhdHRl cm4gdG8gdGhlIG5ldyBHREIgb3V0cHV0IGJlaGF2aW9yLgorICAgIAorICAgIEluIGFkZGl0aW9u LCB0aGUgcGF0Y2ggdXBkYXRlcyB0aGUgZW5kaWFuIHRlc3QgdG8gdXNlIHRoZSBuZXcKKyAgICBn ZGJfdGVzdF9tdWx0aXBsZSBsb2dpYyBpbnN0ZWFkIG9mIGdkYl9leHBlY3QuCisgICAgCisgICAg Z2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogZ2RiLmFyY2gvYWx0aXZlYy1y ZWdzLmV4cDogVXNlIGdkYl90ZXN0X211bHRpcGxlIGZvciBlbmRpYW4gdGVzdC4KKyAgICAJKGRl Y2ltYWxfdmVjdG9yKTogRml4IGZvciBsaXR0bGUtZW5kaWFuLgorCisjIyMgYS9nZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIC0xLDMgKzEs OCBAQAorKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4K KysKKysJKiBnZGIuYXJjaC9hbHRpdmVjLXJlZ3MuZXhwOiBVc2UgZ2RiX3Rlc3RfbXVsdGlwbGUg Zm9yIGVuZGlhbiB0ZXN0LgorKwkoZGVjaW1hbF92ZWN0b3IpOiBGaXggZm9yIGxpdHRsZS1lbmRp YW4uCisrCisgMjAxNC0wMS0yOSAgSm9zZSBFLiBNYXJjaGVzaSAgPGpvc2UubWFyY2hlc2lAb3Jh Y2xlLmNvbT4KKyAKKyAJKiBnZGIuYXJjaC9zcGFyYy1zeXNzdGVwLmV4cDogTmV3IGZpbGUuCist LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FsdGl2ZWMtcmVncy5leHAKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gvYWx0aXZlYy1yZWdzLmV4cAorQEAgLTc5LDE3ICs3OSwxNiBAQCBn ZGJfdGVzdCAic2V0IFwkdnJzYXZlID0gMSIgIiIgIiIKKyAKKyBnZGJfdGVzdCAibmV4dCIgIiIg IiIKKyAKKy1zZW5kX2dkYiAic2hvdyBlbmRpYW5cbiIKKyBzZXQgZW5kaWFubmVzcyAiIgorLWdk Yl9leHBlY3QgeworK3NldCBtc2cgImRldGVjdCBlbmRpYW5uZXNzIgorK2dkYl90ZXN0X211bHRp cGxlICJzaG93IGVuZGlhbiIgIiRtc2ciIHsKKyAgICAgLXJlICIoVGhlIHRhcmdldCBlbmRpYW5u ZXNzIGlzIHNldCBhdXRvbWF0aWNhbGx5IC5jdXJyZW50bHkgKShiaWd8bGl0dGxlKSggZW5kaWFu LiopJGdkYl9wcm9tcHQgJCIgeworLSAgICAgICAgcGFzcyAiZW5kaWFubmVzcyIKKy0Jc2V0IGVu ZGlhbm5lc3MgJGV4cGVjdF9vdXQoMixzdHJpbmcpCisrICAgICAgICBwYXNzICIkbXNnIgorKyAg ICAgICAgc2V0IGVuZGlhbm5lc3MgJGV4cGVjdF9vdXQoMixzdHJpbmcpCisgICAgIH0KKyAgICAg LXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKKy0JZmFpbCAiY291bGRuJ3QgZ2V0IGVuZGlhbm5lc3Mi CisrICAgICAgICBmYWlsICIkbXNnIgorICAgICB9CistICAgIHRpbWVvdXQJCXsgZmFpbCAiKHRp bWVvdXQpIGVuZGlhbm5lc3MiIH0KKyB9CisgCisgIyBBbmQgdGhlbiByZWFkIHRoZSBBbHRpVmVj IHJlZ2lzdGVycyBiYWNrLCB0byBzZWUgdGhhdAorQEAgLTExOCw3ICsxMTcsNyBAQCBnZGJfdGVz dCAiaW5mbyByZWcgdnNjciIgInZzY3IuKjB4MVx0MSIgImluZm8gcmVnIHZzY3IiCisgaWYgeyRl bmRpYW5uZXNzID09ICJiaWcifSB7CisgICAgICBzZXQgZGVjaW1hbF92ZWN0b3IgIi51aW50MTI4 ID0gMHgwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMSwgdjRfZmxvYXQgPSAuMS4qZS00 NSwgMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NS4sIHY0X2ludDMyID0gLjEsIDEsIDEsIDEuLCB2 OF9pbnQxNiA9IC4wLCAxLCAwLCAxLCAwLCAxLCAwLCAxLiwgdjE2X2ludDggPSAuMCwgMCwgMCwg MSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMS4uIgorIH0gZWxzZSB7CistICAg ICBzZXQgZGVjaW1hbF92ZWN0b3IgIi51aW50MTI4ID0gMHgwMDAwMDAwMTAwMDAwMDAxMDAwMDAw MDEwMDAwMDAwMSwgdjRfZmxvYXQgPSAuMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NSwgMS4qZS00 NS4sIHY0X2ludDMyID0gLjEsIDEsIDEsIDEuLCB2OF9pbnQxNiA9IC4xLCAwLCAxLCAwLCAxLCAw LCAxLCAwLiwgdjE2X2ludDggPSAuMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwg MSwgMCwgMC4uIgorKyAgICAgc2V0IGRlY2ltYWxfdmVjdG9yICIudWludDEyOCA9IDB4MDAwMDAw MDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjEuKmUtNDUsIDEuKmUtNDUs IDEuKmUtNDUsIDEuKmUtNDUuLCB2NF9pbnQzMiA9IC4xLCAxLCAxLCAxLiwgdjhfaW50MTYgPSAu MSwgMCwgMSwgMCwgMSwgMCwgMSwgMC4sIHYxNl9pbnQ4ID0gLjEsIDAsIDAsIDAsIDEsIDAsIDAs IDAsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDAuLiIKKyB9CisgCisgZm9yIHtzZXQgaSAwfSB7JGkg PCAzMn0ge2luY3IgaSAxfSB7CgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwN29m MTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDhkNDE5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXVw c3RyZWFtLXBwYzY0bGUwN29mMTUucGF0Y2gKQEAgLTAsMCArMSwxNDkgQEAKK2NvbW1pdCAwODRl ZTU0NTUyZjZjMzVkNzQwZThiOWJjODFhNGZlOGQ4YmIxNzhiCitBdXRob3I6IFVscmljaCBXZWln YW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgorRGF0ZTogICBUdWUgRmViIDQgMTg6MzE6 MzggMjAxNCArMDEwMAorCisgICAgUG93ZXJQQzY0IGxpdHRsZS1lbmRpYW4gZml4ZXM6IFZTWCB0 ZXN0cyBhbmQgcHNldWRvLXJlZ3MKKyAgICAKKyAgICBNYW55IFZTWCB0ZXN0IHdlcmUgZmFpbGlu ZyBvbiBwb3dlcnBjNjRsZS1saW51eCwgc2luY2UgLWFzIG9wcG9zZWQgdG8gdGhlCisgICAgQWx0 aVZlYyB0ZXN0cy0gdGhlcmUgbmV2ZXIgd2VyZSBsaXR0bGUtZW5kaWFuIHZlcnNpb25zIG9mIHRo ZSB0ZXN0IHBhdHRlcm5zLgorICAgIAorICAgIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIHBhdHRlcm5z LCBhbG9uZyB0aGUgbGluZXMgb2YgYWx0aXZlYy1yZWdzLmV4cC4KKyAgICAKKyAgICBJbiBhZGRp dGlvbiwgdGhlcmUgaXMgYW4gYWN0dWFsIGNvZGUgY2hhbmdlIHJlcXVpcmVkOiBGb3IgdGhvc2Ug VlNYCisgICAgcmVnaXN0ZXJzIHRoYXQgb3ZlcmxhcCBhIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVy LCB0aGUgRlAgcmVnaXN0ZXIKKyAgICBvdmVybGFwcyB0aGUgbW9zdC1zaWduaWZpY2FudCBoYWxm IG9mIHRoZSBWU1ggcmVnaXN0ZXIgYm90aCBvbiBiaWctCisgICAgYW5kIGxpdHRsZS1lbmRpYW4g c3lzdGVtcy4gIEhvd2V2ZXIsIG9uIGxpdHRsZS1lbmRpYW4gc3lzdGVtcywgdGhhdAorICAgIGhh bGYgaXMgc3RvcmVkIGF0IGFuIG9mZnNldCBvZiA4IGJ5dGVzIChub3QgMCkuICBUaGlzIHdvcmtz IGFscmVhZHkKKyAgICBmb3IgdGhlICJyZWFsIiBGUCByZWdpc3RlcnMsIGJ1dCBjdXJyZW50IGNv ZGUgZ2V0cyBpdCB3cm9uZyBmb3IKKyAgICB0aGUgImV4dGVuZGVkIiBwc2V1ZG8gRlAgcmVnaXN0 ZXIgR0RCIGdlbmVyYXRlcyBmb3IgdGhlIHNlY29uZAorICAgIGhhbGYgb2YgdGhlIFZTWCByZWdp c3RlciBiYW5rLgorICAgIAorICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgY29ycmVzcG9uZGlu ZyBwc2V1ZG8gcmVhZC93cml0ZSByb3V0aW5lcworICAgIHRvIHRha2UgdGhlIGFwcHJvcHJpYXRl IG9mZnNldCBpbnRvIGNvbnNpZGVyYXRpb24uCisgICAgCisgICAgZ2RiL0NoYW5nZUxvZzoKKyAg ICAKKyAgICAJKiByczYwMDAtdGRlcC5jIChlZnByX3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogVXNl IGNvcnJlY3Qgb2Zmc2V0CisgICAgCW9mIHRoZSBvdmVybGFwcGVkIEZQIHJlZ2lzdGVyIHdpdGhp biB0aGUgVlNYIHJlZ2lzdGVyIG9uIGxpdHRsZS0KKyAgICAJZW5kaWFuIHBsYXRmb3Jtcy4KKyAg ICAJKGVmcHJfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCisgICAgCisgICAgZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogZ2RiLmFyY2gvdnN4LXJlZ3MuZXhw OiBDaGVjayB0YXJnZXQgZW5kaWFubmVzcy4gIFByb3ZpZGUgdmFyaWFudHMKKyAgICAJb2YgdGhl IHRlc3QgcGF0dGVybnMgZm9yIHVzZSBvbiBsaXR0bGUtZW5kaWFuIHN5c3RlbXMuCisKKyMjIyBh L2dkYi9DaGFuZ2VMb2cKKyMjIyBiL2dkYi9DaGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTIgQEAKKyAy MDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorIAorKwkq IHJzNjAwMC10ZGVwLmMgKGVmcHJfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBVc2UgY29ycmVjdCBv ZmZzZXQKKysJb2YgdGhlIG92ZXJsYXBwZWQgRlAgcmVnaXN0ZXIgd2l0aGluIHRoZSBWU1ggcmVn aXN0ZXIgb24gbGl0dGxlLQorKwllbmRpYW4gcGxhdGZvcm1zLgorKwkoZWZwcl9wc2V1ZG9fcmVn aXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KKysKKysyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKg IDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorKworIAkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lz dl9hYmlfcHVzaF92YWwpOiBVc2UgY29ycmVjdAorIAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3 aGVuIHBhc3Npbmcgc21hbGwgc3RydWN0dXJlcy4KKyAKKy0tLSBhL2dkYi9yczYwMDAtdGRlcC5j CisrKysgYi9nZGIvcnM2MDAwLXRkZXAuYworQEAgLTI3NzksMTAgKzI3NzksMTIgQEAgZWZwcl9w c2V1ZG9fcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsCisgeworICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCk7CisgICBpbnQgcmVnX2luZGV4ID0gcmVnX25yIC0gdGRlcC0+cHBj X2VmcHIwX3JlZ251bTsKKysgIGludCBvZmZzZXQgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFy Y2gpID09IEJGRF9FTkRJQU5fQklHID8gMCA6IDg7CisgCisgICAvKiBSZWFkIHRoZSBwb3J0aW9u IHRoYXQgb3ZlcmxhcHMgdGhlIFZNWCByZWdpc3Rlci4gICovCistICByZXR1cm4gcmVnY2FjaGVf cmF3X3JlYWRfcGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnX2luZGV4 LCAwLAorLQkJCQkgcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnX25yKSwgYnVmZmVyKTsKKysg IHJldHVybiByZWdjYWNoZV9yYXdfcmVhZF9wYXJ0IChyZWdjYWNoZSwgdGRlcC0+cHBjX3ZyMF9y ZWdudW0gKyByZWdfaW5kZXgsCisrCQkJCSBvZmZzZXQsIHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gs IHJlZ19uciksCisrCQkJCSBidWZmZXIpOworIH0KKyAKKyAvKiBXcml0ZSBtZXRob2QgZm9yIFBP V0VSNyBFeHRlbmRlZCBGUCBwc2V1ZG8tcmVnaXN0ZXJzLiAgKi8KK0BAIC0yNzkyLDEwICsyNzk0 LDEyIEBAIGVmcHJfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaF90ZGVw ICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKKyAgIGludCByZWdfaW5kZXggPSByZWdf bnIgLSB0ZGVwLT5wcGNfZWZwcjBfcmVnbnVtOworKyAgaW50IG9mZnNldCA9IGdkYmFyY2hfYnl0 ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcgPyAwIDogODsKKyAKKyAgIC8qIFdy aXRlIHRoZSBwb3J0aW9uIHRoYXQgb3ZlcmxhcHMgdGhlIFZNWCByZWdpc3Rlci4gICovCistICBy ZWdjYWNoZV9yYXdfd3JpdGVfcGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192cjBfcmVnbnVtICsg cmVnX2luZGV4LCAwLAorLQkJCSAgIHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ19uciksIGJ1 ZmZlcik7CisrICByZWdjYWNoZV9yYXdfd3JpdGVfcGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192 cjBfcmVnbnVtICsgcmVnX2luZGV4LAorKwkJCSAgIG9mZnNldCwgcmVnaXN0ZXJfc2l6ZSAoZ2Ri YXJjaCwgcmVnX25yKSwKKysJCQkgICBidWZmZXIpOworIH0KKyAKKyBzdGF0aWMgZW51bSByZWdp c3Rlcl9zdGF0dXMKKyMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisjIyMgYi9nZGIvdGVz dHN1aXRlL0NoYW5nZUxvZworIyMgLTEsNSArMSwxMCBAQAorIDIwMTQtMDItMDQgIFVscmljaCBX ZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKyAKKysJKiBnZGIuYXJjaC92c3gtcmVncy5l eHA6IENoZWNrIHRhcmdldCBlbmRpYW5uZXNzLiAgUHJvdmlkZSB2YXJpYW50cworKwlvZiB0aGUg dGVzdCBwYXR0ZXJucyBmb3IgdXNlIG9uIGxpdHRsZS1lbmRpYW4gc3lzdGVtcy4KKysKKysyMDE0 LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisrCisgCSogZ2Ri LmFyY2gvYWx0aXZlYy1yZWdzLmV4cDogVXNlIGdkYl90ZXN0X211bHRpcGxlIGZvciBlbmRpYW4g dGVzdC4KKyAJKGRlY2ltYWxfdmVjdG9yKTogRml4IGZvciBsaXR0bGUtZW5kaWFuLgorIAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC92c3gtcmVncy5leHAKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvdnN4LXJlZ3MuZXhwCitAQCAtNTgsMTkgKzU4LDQ1IEBAIGlmICFbcnVudG9f bWFpbl0gdGhlbiB7CisgICAgIGdkYl9zdXBwcmVzc190ZXN0cworIH0KKyAKKytzZXQgZW5kaWFu bmVzcyAiIgorK3NldCBtc2cgImRldGVjdCBlbmRpYW5uZXNzIgorK2dkYl90ZXN0X211bHRpcGxl ICJzaG93IGVuZGlhbiIgIiRtc2ciIHsKKysgICAgLXJlICIoVGhlIHRhcmdldCBlbmRpYW5uZXNz IGlzIHNldCBhdXRvbWF0aWNhbGx5IC5jdXJyZW50bHkgKShiaWd8bGl0dGxlKSggZW5kaWFuLiop JGdkYl9wcm9tcHQgJCIgeworKyAgICAgICAgcGFzcyAiJG1zZyIKKysgICAgICAgIHNldCBlbmRp YW5uZXNzICRleHBlY3Rfb3V0KDIsc3RyaW5nKQorKyAgICB9CisrICAgIC1yZSAiLiokZ2RiX3By b21wdCAkIiB7CisrICAgICAgICBmYWlsICIkbXNnIgorKyAgICB9CisrfQorKworICMgRGF0YSBz ZXRzIHVzZWQgdGhyb3VnaG91dCB0aGUgdGVzdAorIAorLXNldCB2ZWN0b3JfcmVnaXN0ZXIxICIu dWludDEyOCA9IDB4M2ZmNGNjY2NjY2NjY2NjYzAwMDAwMDAwMDAwMDAwMDAsIHYyX2RvdWJsZSA9 IC4weDEsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MSwgMHhmOTk5OTlhMCwgMHgwLCAweDAuLCB2NF9p bnQzMiA9IC4weDNmZjRjY2NjLCAweGNjY2NjY2NjLCAweDAsIDB4MC4sIHY4X2ludDE2ID0gLjB4 M2ZmNCwgMHhjY2NjLCAweGNjY2MsIDB4Y2NjYywgMHgwLCAweDAsIDB4MCwgMHgwLiwgdjE2X2lu dDggPSAuMHgzZiwgMHhmNCwgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHgw LCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAuLiIKKytpZiB7JGVuZGlhbm5lc3Mg PT0gImJpZyJ9IHsKKysgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjEgIi51aW50MTI4ID0gMHgzZmY0 Y2NjY2NjY2NjY2NjMDAwMDAwMDAwMDAwMDAwMCwgdjJfZG91YmxlID0gLjB4MSwgMHgwLiwgdjRf ZmxvYXQgPSAuMHgxLCAweGY5OTk5OWEwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4M2ZmNGNj Y2MsIDB4Y2NjY2NjY2MsIDB4MCwgMHgwLiwgdjhfaW50MTYgPSAuMHgzZmY0LCAweGNjY2MsIDB4 Y2NjYywgMHhjY2NjLCAweDAsIDB4MCwgMHgwLCAweDAuLCB2MTZfaW50OCA9IC4weDNmLCAweGY0 LCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweDAsIDB4MCwgMHgwLCAweDAs IDB4MCwgMHgwLCAweDAsIDB4MC4uIgorKworKyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVyMV92ciAi LnVpbnQxMjggPSAweDNmZjRjY2NjY2NjY2NjY2MwMDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9 IC4weDEsIDB4Zjk5OTk5YTAsIDB4MCwgMHgwLiwgdjRfaW50MzIgPSAuMHgzZmY0Y2NjYywgMHhj Y2NjY2NjYywgMHgxLCAweDEuLCB2OF9pbnQxNiA9IC4weDNmZjQsIDB4Y2NjYywgMHhjY2NjLCAw eGNjY2MsIDB4MCwgMHgxLCAweDAsIDB4MS4sIHYxNl9pbnQ4ID0gLjB4M2YsIDB4ZjQsIDB4Y2Ms IDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAw eDAsIDB4MCwgMHgxLi4iCisgCistc2V0IHZlY3Rvcl9yZWdpc3RlcjFfdnIgIi51aW50MTI4ID0g MHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAwMDEwMDAwMDAwMSwgdjRfZmxvYXQgPSAuMHgxLCAweGY5 OTk5OWEwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4M2ZmNGNjY2MsIDB4Y2NjY2NjY2MsIDB4 MSwgMHgxLiwgdjhfaW50MTYgPSAuMHgzZmY0LCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDAs IDB4MSwgMHgwLCAweDEuLCB2MTZfaW50OCA9IC4weDNmLCAweGY0LCAweGNjLCAweGNjLCAweGNj LCAweGNjLCAweGNjLCAweGNjLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4 MS4uIgorKyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4ZGVhZGJlZWZkZWFk YmVlZmRlYWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0g LjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYs IDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQxNiA9IC4weGRlYWQsIDB4YmVlZiwgMHhk ZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZi4sIHYxNl9pbnQ4ID0g LjB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4 YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYuLiIKKyAKKy1zZXQgdmVjdG9y X3JlZ2lzdGVyMiAidWludDEyOCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYs IHYyX2RvdWJsZSA9IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4s IHY0X2ludDMyID0gLjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJl ZWYuLCB2OF9pbnQxNiA9IC4weGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwg MHhiZWVmLCAweGRlYWQsIDB4YmVlZi4sIHYxNl9pbnQ4ID0gLjB4ZGUsIDB4YWQsIDB4YmUsIDB4 ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUs IDB4YWQsIDB4YmUsIDB4ZWYuLiIKKysgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQx MjggPSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAs IDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRl YWRiZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYgPSAuMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwg MHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYuLCB2MTZfaW50OCA9IC4weGRl LCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAw eGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLi4iCisgCistc2V0IHZlY3Rvcl9yZWdp c3RlcjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2 NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAw eGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYgPSAuMHhkZWFkLCAw eGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYuLCB2 MTZfaW50OCA9IC4weGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVm LCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLi4iCisrICAg IHNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAw MDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgw LCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0g LjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgw LCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwg MHgwLCAweDAsIDB4MCwgMHgxLi4iCisrCisrICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzX3ZyICIu dWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0g LjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4 X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2X2lu dDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAw eDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCisrfSBlbHNlIHsKKysgICAgc2V0IHZlY3Rv cl9yZWdpc3RlcjEgIi51aW50MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAwMDAwMDAwMDAw MCwgdjJfZG91YmxlID0gLjB4MCwgMHgxLiwgdjRfZmxvYXQgPSAuMHgwLCAweDAsIDB4Zjk5OTk5 YTAsIDB4MS4sIHY0X2ludDMyID0gLjB4MCwgMHgwLCAweGNjY2NjY2NjLCAweDNmZjRjY2NjLiwg djhfaW50MTYgPSAuMHgwLCAweDAsIDB4MCwgMHgwLCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAw eDNmZjQuLCB2MTZfaW50OCA9IC4weDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4 MCwgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhmNCwgMHgzZi4uIgorIAor LXNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAw MDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgw LCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0g LjB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgw LCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwg MHgwLCAweDAsIDB4MCwgMHgxLi4iCisrICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIxX3ZyICIudWlu dDEyOCA9IDB4M2ZmNGNjY2NjY2NjY2NjYzAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4 MCwgMHgwLCAweGY5OTk5OWEwLCAweDEuLCB2NF9pbnQzMiA9IC4weDEsIDB4MSwgMHhjY2NjY2Nj YywgMHgzZmY0Y2NjYy4sIHY4X2ludDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwgMHhjY2NjLCAw eGNjY2MsIDB4Y2NjYywgMHgzZmY0LiwgdjE2X2ludDggPSAuMHgxLCAweDAsIDB4MCwgMHgwLCAw eDEsIDB4MCwgMHgwLCAweDAsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4 ZjQsIDB4M2YuLiIKKyAKKy1zZXQgdmVjdG9yX3JlZ2lzdGVyM192ciAiLnVpbnQxMjggPSAweDAw MDAwMDAxMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgw LCAweDAuLCB2NF9pbnQzMiA9IC4weDEsIDB4MSwgMHgxLCAweDEuLCB2OF9pbnQxNiA9IC4weDAs IDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MS4sIHYxNl9pbnQ4ID0gLjB4MCwgMHgw LCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwg MHgwLCAweDAsIDB4MS4uIgorKyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4 ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4s IHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYs IDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQxNiA9IC4weGJlZWYs IDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZC4s IHYxNl9pbnQ4ID0gLjB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4 ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUuLiIKKysK KysgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVmZGVhZGJl ZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9p bnQzMiA9IC4weGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLiwg djhfaW50MTYgPSAuMHhiZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVh ZCwgMHhiZWVmLCAweGRlYWQuLCB2MTZfaW50OCA9IC4weGVmLCAweGJlLCAweGFkLCAweGRlLCAw eGVmLCAweGJlLCAweGFkLCAweGRlLCAweGVmLCAweGJlLCAweGFkLCAweGRlLCAweGVmLCAweGJl LCAweGFkLCAweGRlLi4iCisrCisrICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEyOCA9 IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAsIDB4 MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgx LCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4 MSwgMHgwLiwgdjE2X2ludDggPSAuMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAw eDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLi4iCisrCisrICAgIHNl dCB2ZWN0b3JfcmVnaXN0ZXIzX3ZyICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAw MDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0g LjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwgMHgx LCAweDAsIDB4MSwgMHgwLiwgdjE2X2ludDggPSAuMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4 MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLi4iCisr fQorIAorIHNldCBmbG9hdF9yZWdpc3RlciAiLnJhdyAweGRlYWRiZWVmZGVhZGJlZWYuIgorIAoK ZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMDhvZjE1LnBhdGNoIGIvZ2RiLXVwc3Ry ZWFtLXBwYzY0bGUwOG9mMTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMjkyZmYzYgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMDhvZjE1 LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2NvbW1pdCA1Yjc1N2U1ZGRiZDlhZDI1MmQ5YzUxMTAz ZjFhYTUyYjQxYzJlOTQ3CitBdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBk ZS5pYm0uY29tPgorRGF0ZTogICBUdWUgRmViIDQgMTg6MzM6MDQgMjAxNCArMDEwMAorCisgICAg UG93ZXJQQzY0IGxpdHRsZS1lbmRpYW4gZml4ZXM6IDMyLWJpdCBERlAgcGFyYW1ldGVycworICAg IAorICAgIFBhc3NpbmcgYSAzMi1iaXQgREZQIGluIHJlZ2lzdGVyIG5lZWRzIHRvIHVzZSB0aGUg bGVhc3Qtc2lnbmlmaWNhbnQgcGFydAorICAgIG9mIHRoZSByZWdpc3Rlci4gIExpa2Ugd2l0aCBh IHByZXZpb3VzIHBhdGNoIHRoYXQgYWRkcmVzc2VkIHRoZSBzYW1lCisgICAgaXNzdWUgZm9yIHNt YWxsIHN0cnVjdHMsIHRoaXMgcGF0Y2ggbWFrZXMgc3VyZSB0aGUgYXBwcm9wcmlhdGUgb2Zmc2V0 CisgICAgaXMgdXNlZCBvbiBsaXR0bGUtZW5kaWFuIHN5c3RlbXMuCisgICAgCisgICAgZ2RiL0No YW5nZUxvZzoKKyAgICAKKyAgICAJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1 c2hfZnJlZyk6IFVzZSBjb3JyZWN0CisgICAgCW9mZnNldCBvbiBsaXR0bGUtZW5kaWFuIHdoZW4g cGFzc2luZyBfRGVjaW1hbDMyLgorICAgIAkocHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jh c2UpOiBMaWtld2lzZSBmb3IgcmV0dXJuIHZhbHVlcy4KKworIyMjIGEvZ2RiL0NoYW5nZUxvZwor IyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwxMSBAQAorIDIwMTQtMDItMDQgIFVscmlj aCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSogcHBjLXN5c3YtdGRlcC5j IChwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcpOiBVc2UgY29ycmVjdAorKwlvZmZzZXQgb24gbGl0 dGxlLWVuZGlhbiB3aGVuIHBhc3NpbmcgX0RlY2ltYWwzMi4KKysJKHBwYzY0X3N5c3ZfYWJpX3Jl dHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2UgZm9yIHJldHVybiB2YWx1ZXMuCisrCisrMjAxNC0w Mi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKyAJKiByczYw MDAtdGRlcC5jIChlZnByX3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogVXNlIGNvcnJlY3Qgb2Zmc2V0 CisgCW9mIHRoZSBvdmVybGFwcGVkIEZQIHJlZ2lzdGVyIHdpdGhpbiB0aGUgVlNYIHJlZ2lzdGVy IG9uIGxpdHRsZS0KKyAJZW5kaWFuIHBsYXRmb3Jtcy4KKy0tLSBhL2dkYi9wcGMtc3lzdi10ZGVw LmMKKysrKyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKK0BAIC0xMjMyLDcgKzEyMzIsMTAgQEAgcHBj NjRfc3lzdl9hYmlfcHVzaF9mcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgICBp ZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMpCisgCXsKKyAJICBpbnQg cmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7CistCSAgaW50IG9m ZnNldCA9IDggLSBUWVBFX0xFTkdUSCAodHlwZSk7CisrCSAgaW50IG9mZnNldCA9IDA7CisrCisr CSAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcpCisr CSAgICBvZmZzZXQgPSA4IC0gVFlQRV9MRU5HVEggKHR5cGUpOworIAorIAkgIHJlZ2NhY2hlX2Nv b2tlZF93cml0ZV9wYXJ0IChhcmdwb3MtPnJlZ2NhY2hlLCByZWdudW0sCisgCQkJCSAgICAgIG9m ZnNldCwgVFlQRV9MRU5HVEggKHR5cGUpLCB2YWwpOworQEAgLTE2NDEsNyArMTY0NCwxMCBAQCBw cGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IHN0cnVjdCB0eXBlICp2YWx0eXBlLAorICAgICAgICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0g VFlQRV9DT0RFX0RFQ0ZMT0FUKQorICAgICB7CisgICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBw Y19mcDBfcmVnbnVtICsgMSArIGluZGV4OworLSAgICAgIGludCBvZmZzZXQgPSA4IC0gVFlQRV9M RU5HVEggKHZhbHR5cGUpOworKyAgICAgIGludCBvZmZzZXQgPSAwOworKworKyAgICAgIGlmIChn ZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHKQorKwlvZmZzZXQg PSA4IC0gVFlQRV9MRU5HVEggKHZhbHR5cGUpOworIAorICAgICAgIGlmICh3cml0ZWJ1ZiAhPSBO VUxMKQorIAlyZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAocmVnY2FjaGUsIHJlZ251bSwKCmRp ZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTA5b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVh bS1wcGM2NGxlMDlvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu Ljk0ZjdlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0tcHBjNjRsZTA5b2YxNS5w YXRjaApAQCAtMCwwICsxLDE0MCBAQAorY29tbWl0IDBmZjNlMDFmZGM2N2EzODQyZWU1NDIyNGNm MTk3ZTlhNTVmMGE3NTAKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRl LmlibS5jb20+CitEYXRlOiAgIFR1ZSBGZWIgNCAxODozNDoxOSAyMDE0ICswMTAwCisKKyAgICBQ b3dlclBDNjQgbGl0dGxlLWVuZGlhbiBmaXhlczogMTI4LWJpdCBERlAgcGFyYW1ldGVycyAvIHJl Z2lzdGVycworICAgIAorICAgIFRoZSBwb3dlcnBjNjRsZS1saW51eCBBQkkgc3BlY2lmaWVzIHRo YXQgd2hlbiBhIDEyOC1iaXQgREZQIHZhbHVlIGlzCisgICAgcGFzc2VkIGluIGEgcGFpciBvZiBm bG9hdGluZy1wb2ludCByZWdpc3RlcnMsIHRoZSBmaXJzdCByZWdpc3RlciBob2xkcworICAgIHRo ZSBtb3N0LXNpZ25pZmljYW50IHBhcnQgb2YgdGhlIHZhbHVlLiAgVGhpcyBpcyBhcyBvcHBvc2Vk IHRvIHRoZQorICAgIHVzdWFsIHJ1bGUgb24gbGl0dGxlLWVuZGlhbiBzeXN0ZW1zLCB3aGVyZSB0 aGUgZmlyc3QgcmVnaXN0ZXIgd291bGQKKyAgICBob2xkIHRoZSBsZWFzdC1zaWduaWZpY2FudCBw YXJ0LgorICAgIAorICAgIFRoaXMgYWZmZWN0cyB0d28gcGxhY2VzIGluIEdEQiwgdGhlIHJlYWQv d3JpdGUgcm91dGluZXMgZm9yIHRoZQorICAgIDEyOC1iaXQgREZQIHBzZXVkby1yZWdpc3RlcnMs IGFuZCB0aGUgZnVuY3Rpb24gY2FsbCAvIHJldHVybgorICAgIHNlcXVlbmNlLiAgRm9yIHRoZSBm b3JtZXIsIGN1cnJlbnQgY29kZSBhbHJlYWR5IGRpc3Rpbmd1aXNoZXMKKyAgICBiZXR3ZWVuIGJp Zy0gYW5kIGxpdHRsZS1lbmRpYW4gdGFyZ2V0cywgYnV0IGdldHMgdGhlIGxhdHRlcgorICAgIHdy b25nLiAgVGhpcyBpcyBwcmVzdW1hYmx5IGJlY2F1c2UgKkdDQyogYWxzbyBnb3QgaXQgd3Jvbmcs CisgICAgYW5kIEdEQiBtYXRjaGVzIHRoZSBvbGQgR0NDIGJlaGF2aW9yLiAgQnV0IEdDQyBpcyBu b3cgZml4ZWQ6CisgICAgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTMtMTEv bXNnMDIxNDUuaHRtbAorICAgIHNvIEdEQiBuZWVkcyB0byBiZSBmaXhlZCB0b28uICAoT2xkIGNv ZGUgc2hvdWxkbid0IHJlYWxseSBiZQorICAgIGFuIGlzc3VlIHNpbmNlIHRoZXJlIGlzIG5vIGNv ZGUgIm91dCB0aGVyZSIgc28gZmFyIHRoYXQgdXNlcworICAgIGRmcDEyOCBvbiBsaXR0bGUtZW5k aWFuIC4uLikKKyAgICAKKyAgICBnZGIvQ2hhbmdlTG9nOgorICAgIAorICAgIAkqIHBwYy1zeXN2 LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogVXNlIGNvcnJlY3Qgb3JkZXIKKyAg ICAJd2l0aGluIGEgcmVnaXN0ZXIgcGFpciBob2xkaW5nIGEgREZQIDEyOC1iaXQgdmFsdWUgb24g bGl0dGxlLWVuZGlhbi4KKyAgICAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTog TGlrZXdpc2UuCisgICAgCSogcnM2MDAwLXRkZXAuYyAoZGZwX3BzZXVkb19yZWdpc3Rlcl9yZWFk KTogTGlrZXdpc2UuCisgICAgCShkZnBfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2Uu CisgICAgCisgICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogZ2RiLmFy Y2gvcG93ZXJwYy1kMTI4LXJlZ3MuZXhwOiBFbmFibGUgb24gcG93ZXJwYzY0Ki0qLgorCisjIyMg YS9nZGIvQ2hhbmdlTG9nCisjIyMgYi9nZGIvQ2hhbmdlTG9nCisjIyAtMSw1ICsxLDEzIEBACisg MjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKyAKKysJ KiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyk6IFVzZSBjb3JyZWN0 IG9yZGVyCisrCXdpdGhpbiBhIHJlZ2lzdGVyIHBhaXIgaG9sZGluZyBhIERGUCAxMjgtYml0IHZh bHVlIG9uIGxpdHRsZS1lbmRpYW4uCisrCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFz ZSk6IExpa2V3aXNlLgorKwkqIHJzNjAwMC10ZGVwLmMgKGRmcF9wc2V1ZG9fcmVnaXN0ZXJfcmVh ZCk6IExpa2V3aXNlLgorKwkoZGZwX3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgor KworKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Cisr CisgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcpOiBVc2UgY29y cmVjdAorIAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3aGVuIHBhc3NpbmcgX0RlY2ltYWwzMi4K KyAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2UgZm9yIHJldHVy biB2YWx1ZXMuCistLS0gYS9nZGIvcHBjLXN5c3YtdGRlcC5jCisrKysgYi9nZGIvcHBjLXN5c3Yt dGRlcC5jCitAQCAtMTI3MCw5ICsxMjcwLDExIEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYg YXJncG9zLT5mcmVnIDw9IDEyKQorIAl7CisgCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBf cmVnbnVtICsgYXJncG9zLT5mcmVnOworKwkgIGludCBsb3BhcnQgPSBnZGJhcmNoX2J5dGVfb3Jk ZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHID8gOCA6IDA7CisrCSAgaW50IGhpcGFydCA9 IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcgPyAwIDogODsK KyAKKy0JICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSwg dmFsKTsKKy0JICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251 bSArIDEsIHZhbCArIDgpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAoYXJncG9zLT5yZWdj YWNoZSwgcmVnbnVtLCB2YWwgKyBoaXBhcnQpOworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAo YXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtICsgMSwgdmFsICsgbG9wYXJ0KTsKKyAJfQorIAorICAg ICAgIGFyZ3Bvcy0+ZnJlZyArPSAyOworQEAgLTE2ODUsMTYgKzE2ODcsMTggQEAgcHBjNjRfc3lz dl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qg dHlwZSAqdmFsdHlwZSwKKyAgICAgICAmJiBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09E RV9ERUNGTE9BVCkKKyAgICAgeworICAgICAgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZnAwX3Jl Z251bSArIDIgKyAyICogaW5kZXg7CisrICAgICAgaW50IGxvcGFydCA9IGdkYmFyY2hfYnl0ZV9v cmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcgPyA4IDogMDsKKysgICAgICBpbnQgaGlw YXJ0ID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRyA/IDAg OiA4OworIAorICAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQorIAl7CistCSAgcmVnY2FjaGVf Y29va2VkX3dyaXRlIChyZWdjYWNoZSwgcmVnbnVtLCB3cml0ZWJ1Zik7CistCSAgcmVnY2FjaGVf Y29va2VkX3dyaXRlIChyZWdjYWNoZSwgcmVnbnVtICsgMSwgd3JpdGVidWYgKyA4KTsKKysJICBy ZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmICsgaGlwYXJ0 KTsKKysJICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0gKyAxLCB3cml0 ZWJ1ZiArIGxvcGFydCk7CisgCX0KKyAgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorIAl7Cist CSAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0sIHJlYWRidWYpOworLQkg IHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtICsgMSwgcmVhZGJ1ZiArIDgp OworKwkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmICsg aGlwYXJ0KTsKKysJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSArIDEs IHJlYWRidWYgKyBsb3BhcnQpOworIAl9CisgICAgICAgcmV0dXJuIDE7CisgICAgIH0KKy0tLSBh L2dkYi9yczYwMDAtdGRlcC5jCisrKysgYi9nZGIvcnM2MDAwLXRkZXAuYworQEAgLTI2NzIsMTAg KzI2NzIsMTAgQEAgZGZwX3BzZXVkb19yZWdpc3Rlcl9yZWFkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAgIGVsc2UKKyAgICAgeworICAgICAg IHN0YXR1cyA9IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdu dW0gKworLQkJCQkgIDIgKiByZWdfaW5kZXggKyAxLCBidWZmZXIgKyA4KTsKKysJCQkJICAyICog cmVnX2luZGV4ICsgMSwgYnVmZmVyKTsKKyAgICAgICBpZiAoc3RhdHVzID09IFJFR19WQUxJRCkK KyAJc3RhdHVzID0gcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3Jl Z251bSArCistCQkJCSAgICAyICogcmVnX2luZGV4LCBidWZmZXIpOworKwkJCQkgICAgMiAqIHJl Z19pbmRleCwgYnVmZmVyICsgOCk7CisgICAgIH0KKyAKKyAgIHJldHVybiBzdGF0dXM7CitAQCAt MjcwMSw5ICsyNzAxLDkgQEAgZGZwX3BzZXVkb19yZWdpc3Rlcl93cml0ZSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisgICBlbHNlCisgICAgIHsK KyAgICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251 bSArCistCQkJICAyICogcmVnX2luZGV4ICsgMSwgYnVmZmVyICsgOCk7CisrCQkJICAyICogcmVn X2luZGV4ICsgMSwgYnVmZmVyKTsKKyAgICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hl LCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArCistCQkJICAyICogcmVnX2luZGV4LCBidWZmZXIpOwor KwkJCSAgMiAqIHJlZ19pbmRleCwgYnVmZmVyICsgOCk7CisgICAgIH0KKyB9CisgCisjIyMgYS9n ZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMj IC0xLDUgKzEsOSBAQAorIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUu aWJtLmNvbT4KKyAKKysJKiBnZGIuYXJjaC9wb3dlcnBjLWQxMjgtcmVncy5leHA6IEVuYWJsZSBv biBwb3dlcnBjNjQqLSouCisrCisrMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2Fu ZEBkZS5pYm0uY29tPgorKworIAkqIGdkYi5hcmNoL3ZzeC1yZWdzLmV4cDogQ2hlY2sgdGFyZ2V0 IGVuZGlhbm5lc3MuICBQcm92aWRlIHZhcmlhbnRzCisgCW9mIHRoZSB0ZXN0IHBhdHRlcm5zIGZv ciB1c2Ugb24gbGl0dGxlLWVuZGlhbiBzeXN0ZW1zLgorIAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC9wb3dlcnBjLWQxMjgtcmVncy5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gvcG93ZXJwYy1kMTI4LXJlZ3MuZXhwCitAQCAtMjAsNyArMjAsNyBAQAorIAorICMgVGVzdGNh c2UgZm9yIHBwYyBkZWNpbWFsMTI4IHBzZXVkby1yZWdpc3RlcnMuCisgCistaWYgIVtpc3Rhcmdl dCAicG93ZXJwYzY0LSoiXSB0aGVuIHsKKytpZiAhW2lzdGFyZ2V0ICJwb3dlcnBjNjQqLSoiXSB0 aGVuIHsKKyAgICAgdmVyYm9zZSAiU2tpcHBpbmcgcG93ZXJwYyBEZWNpbWFsMTI4IHBzZXVkby1y ZWdpc3RlcnMgdGVzdGNhc2UuIgorICAgICByZXR1cm4KKyB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXVw c3RyZWFtLXBwYzY0bGUxMG9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTEwb2YxNS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTMwN2Q5Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMG9mMTUucGF0Y2gKQEAgLTAsMCArMSwx NTkgQEAKK2NvbW1pdCBjZDQ1M2NkMDcyMDA0ZDI2ZWRlMzU1Yjg1MGIzODMxYWNmZmFlZGRkCitB dXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgorRGF0ZTog ICBUdWUgRmViIDQgMTg6Mzg6NTYgMjAxNCArMDEwMAorCisgICAgUG93ZXJQQzY0IEVMRnYyIEFC STogYmFzZSBzdXBwb3J0CisgICAgCisgICAgVGhpcyBpcyB0aGUgZmlyc3QgcGF0Y2ggb2YgYSBz ZXJpZXMgdG8gaW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZQorICAgIFBvd2VyUEMgRUxGdjIgQUJJ LiAgV2hpbGUgcG93ZXJwYzY0bGUtbGludXggd2lsbCB1c2UgRUxGdjIsIGFuZAorICAgIHRoZSBl eGlzdGluZyBwb3dlcnBjNjQtbGludXggY29kZSB3aWxsIGNvbnRpbnVlIHRvIHVzZSBFTEZ2MSwK KyAgICBpbiB0aGVvcnkgRUxGdjIgaXMgYWxzbyBkZWZpbmVkIGZvciBiaWctZW5kaWFuIHN5c3Rl bXMgKGFuZAorICAgIEVMRnYxIHdhcyBhbHNvIGRlZmluZWQgZm9yIGxpdHRsZS1lbmRpYW4gc3lz dGVtcykuCisgICAgCisgICAgVGhlcmVmb3JlIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyB0ZGVwLT5l bGZfYWJpIHZhcmlhYmxlIHRvIGRlY2lkZQorICAgIHdoaWNoIEFCSSB2ZXJzaW9uIHRvIHVzZS4g IFRoaXMgaXMgZGV0ZWN0ZWQgZnJvbSB0aGUgRUxGIGhlYWRlcgorICAgIGVfZmxhZ3MgdmFsdWU7 IGlmIHRoaXMgaXMgbm90IHByZXNlbnQsIHdlIGRlZmF1bHQgdG8gRUxGdjIgb24KKyAgICBsaXR0 bGUtZW5kaWFuIGFuZCBFTEZ2MSBvdGhlcndpc2UuCisgICAgCisgICAgVGhpcyBwYXRjaCBkb2Vz IG5vdCB5ZXQgaW50cm9kdWNlIGFueSBhY3R1YWwgZGlmZmVyZW5jZSBpbiBHREIncworICAgIGhh bmRsaW5nIG9mIHRoZSB0d28gQUJJcy4gIFRob3NlIHdpbGwgYmUgYWRkZWQgYnkgdGhlIHJlbWFp bmRlcgorICAgIG9mIHRoaXMgcGF0Y2ggc2VyaWVzLgorICAgIAorICAgIEZvciBhbiBvdmVydmll dyBvZiB0aGUgY2hhbmdlcyBpbiBFTEZ2MiwgaGF2ZSBhIGxvb2sgYXQgdGhlCisgICAgY29tbWVu dHMgaW4gdGhlIHBhdGNoIHNlcmllcyB0aGF0IGFkZGVkIEVMRnYyIHRvIEdDQywgc3RhcnRpbmcg YXQ6CisgICAgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTMtMTEvbXNnMDEx NDQuaHRtbAorICAgIAorICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogcHBjLXRkZXAu aCAoZW51bSBwb3dlcnBjX2VsZl9hYmkpOiBOZXcgZGF0YSB0eXBlLgorICAgIAkoc3RydWN0IGdk YmFyY2hfdGRlcCk6IE5ldyBtZW1iZXIgZWxmX2FiaS4KKyAgICAKKyAgICAJKiByczYwMDAtdGRl cC5jOiBJbmNsdWRlICJlbGYvcHBjNjQuaCIuCisgICAgCShyczYwMDBfZ2RiYXJjaF9pbml0KTog RGV0ZWN0IEVMRiBBQkkgdmVyc2lvbi4KKworIyMjIGEvZ2RiL0NoYW5nZUxvZworIyMjIGIvZ2Ri L0NoYW5nZUxvZworIyMgLTEsNSArMSwxMyBAQAorIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5k wqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSogcHBjLXRkZXAuaCAoZW51bSBwb3dlcnBj X2VsZl9hYmkpOiBOZXcgZGF0YSB0eXBlLgorKwkoc3RydWN0IGdkYmFyY2hfdGRlcCk6IE5ldyBt ZW1iZXIgZWxmX2FiaS4KKysKKysJKiByczYwMDAtdGRlcC5jOiBJbmNsdWRlICJlbGYvcHBjNjQu aCIuCisrCShyczYwMDBfZ2RiYXJjaF9pbml0KTogRGV0ZWN0IEVMRiBBQkkgdmVyc2lvbi4KKysK KysyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorKwor IAkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogVXNlIGNvcnJl Y3Qgb3JkZXIKKyAJd2l0aGluIGEgcmVnaXN0ZXIgcGFpciBob2xkaW5nIGEgREZQIDEyOC1iaXQg dmFsdWUgb24gbGl0dGxlLWVuZGlhbi4KKyAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9i YXNlKTogTGlrZXdpc2UuCitJbmRleDogZ2RiLTcuNy4xL2dkYi9wcGMtdGRlcC5oCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3BwYy10ZGVwLmgJMjAxNC0wNS0wOSAxOToyMzo0 MC44OTIyNDgwNjQgKzAyMDAKKysrKyBnZGItNy43LjEvZ2RiL3BwYy10ZGVwLmgJMjAxNC0wNS0w OSAxOToyMzo0Mi4zNDYyNDgyNDYgKzAyMDAKK0BAIC0xODIsNiArMTgyLDE1IEBAIGV4dGVybiB2 b2lkIHBwY19jb2xsZWN0X3ZzeHJlZ3NldCAoY29uc3QKKyAKKyAvKiBQcml2YXRlIGRhdGEgdGhh dCB0aGlzIG1vZHVsZSBhdHRhY2hlcyB0byBzdHJ1Y3QgZ2RiYXJjaC4gICovCisgCisrLyogRUxG IEFCSSB2ZXJzaW9uIHVzZWQgYnkgdGhlIGluZmVyaW9yLiAgKi8KKytlbnVtIHBvd2VycGNfZWxm X2FiaQorK3sKKysgIFBPV0VSUENfRUxGX0FVVE8sCisrICBQT1dFUlBDX0VMRl9WMSwKKysgIFBP V0VSUENfRUxGX1YyLAorKyAgUE9XRVJQQ19FTEZfTEFTVAorK307CisrCisgLyogVmVjdG9yIEFC SSB1c2VkIGJ5IHRoZSBpbmZlcmlvci4gICovCisgZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkKKyB7 CitAQCAtMTk3LDYgKzIwNiw4IEBAIHN0cnVjdCBnZGJhcmNoX3RkZXAKKyAgICAgaW50IHdvcmRz aXplOwkJLyogU2l6ZSBpbiBieXRlcyBvZiBmaXhlZC1wb2ludCB3b3JkLiAgKi8KKyAgICAgaW50 IHNvZnRfZmxvYXQ7CQkvKiBBdm9pZCBGUCByZWdpc3RlcnMgZm9yIGFyZ3VtZW50cz8gICovCisg CisrICAgIGVudW0gcG93ZXJwY19lbGZfYWJpIGVsZl9hYmk7CS8qIEVMRiBBQkkgdmVyc2lvbi4g ICovCisrCisgICAgIC8qIEhvdyB0byBwYXNzIHZlY3RvciBhcmd1bWVudHMuICBOZXZlciBzZXQg dG8gQVVUTyBvciBMQVNULiAgKi8KKyAgICAgZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkgdmVjdG9y X2FiaTsKKyAKK0luZGV4OiBnZGItNy43LjEvZ2RiL3JzNjAwMC10ZGVwLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy43LjEub3JpZy9nZGIvcnM2MDAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjIzOjQw Ljg5NDI0ODA2NCArMDIwMAorKysrIGdkYi03LjcuMS9nZGIvcnM2MDAwLXRkZXAuYwkyMDE0LTA1 LTA5IDE5OjIzOjU3Ljk3NDI1MDE5NyArMDIwMAorQEAgLTQ4LDYgKzQ4LDcgQEAKKyAKKyAjaW5j bHVkZSAiZWxmLWJmZC5oIgorICNpbmNsdWRlICJlbGYvcHBjLmgiCisrI2luY2x1ZGUgImVsZi9w cGM2NC5oIgorIAorICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCisgI2luY2x1ZGUgInBwYy10ZGVw LmgiCitAQCAtMzU1NCw2ICszNTU1LDcgQEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdk YmFyY2hfaW5mbworICAgZW51bSBhdXRvX2Jvb2xlYW4gc29mdF9mbG9hdF9mbGFnID0gcG93ZXJw Y19zb2Z0X2Zsb2F0X2dsb2JhbDsKKyAgIGludCBzb2Z0X2Zsb2F0OworICAgZW51bSBwb3dlcnBj X3ZlY3Rvcl9hYmkgdmVjdG9yX2FiaSA9IHBvd2VycGNfdmVjdG9yX2FiaV9nbG9iYWw7CisrICBl bnVtIHBvd2VycGNfZWxmX2FiaSBlbGZfYWJpID0gUE9XRVJQQ19FTEZfQVVUTzsKKyAgIGludCBo YXZlX2ZwdSA9IDEsIGhhdmVfc3BlID0gMCwgaGF2ZV9tcSA9IDAsIGhhdmVfYWx0aXZlYyA9IDAs IGhhdmVfZGZwID0gMCwKKyAgICAgICBoYXZlX3ZzeCA9IDA7CisgICBpbnQgdGRlc2Nfd29yZHNp emUgPSAtMTsKK0BAIC0zODYwLDYgKzM4NjIsMjEgQEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3Ry dWN0IGdkYmFyY2hfaW5mbworICAgICB9CisgCisgI2lmZGVmIEhBVkVfRUxGCisrICBpZiAoZnJv bV9lbGZfZXhlYykKKysgICAgeworKyAgICAgIHN3aXRjaCAoZWxmX2VsZmhlYWRlciAoaW5mby5h YmZkKS0+ZV9mbGFncyAmIEVGX1BQQzY0X0FCSSkKKysJeworKwljYXNlIDE6CisrCSAgZWxmX2Fi aSA9IFBPV0VSUENfRUxGX1YxOworKwkgIGJyZWFrOworKwljYXNlIDI6CisrCSAgZWxmX2FiaSA9 IFBPV0VSUENfRUxGX1YyOworKwkgIGJyZWFrOworKwlkZWZhdWx0OgorKwkgIGJyZWFrOworKwl9 CisrICAgIH0KKysKKyAgIGlmIChzb2Z0X2Zsb2F0X2ZsYWcgPT0gQVVUT19CT09MRUFOX0FVVE8g JiYgZnJvbV9lbGZfZXhlYykKKyAgICAgeworICAgICAgIHN3aXRjaCAoYmZkX2VsZl9nZXRfb2Jq X2F0dHJfaW50IChpbmZvLmFiZmQsIE9CSl9BVFRSX0dOVSwKK0BAIC0zODk2LDYgKzM5MTMsMjEg QEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbworICAgICB9CisgI2Vu ZGlmCisgCisrICAvKiBBdCB0aGlzIHBvaW50LCB0aGUgb25seSBzdXBwb3J0ZWQgRUxGLWJhc2Vk IDY0LWJpdCBsaXR0bGUtZW5kaWFuCisrICAgICBvcGVyYXRpbmcgc3lzdGVtIGlzIEdOVS9MaW51 eCwgYW5kIHRoaXMgdXNlcyB0aGUgRUxGdjIgQUJJIGJ5CisrICAgICBkZWZhdWx0LiAgQWxsIG90 aGVyIHN1cHBvcnRlZCBFTEYtYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMgdXNlIHRoZQorKyAgICAg RUxGdjEgQUJJIGJ5IGRlZmF1bHQuICBUaGVyZWZvcmUsIGlmIHRoZSBBQkkgbWFya2VyIGlzIG1p c3NpbmcsCisrICAgICBlLmcuIGJlY2F1c2Ugd2UgcnVuIGEgbGVnYWN5IGJpbmFyeSwgb3IgaGF2 ZSBhdHRhY2hlZCB0byBhIHByb2Nlc3MKKysgICAgIGFuZCBoYXZlIG5vdCBmb3VuZCBhbnkgYXNz b2NpYXRlZCBiaW5hcnkgZmlsZSwgc2V0IHRoZSBkZWZhdWx0CisrICAgICBhY2NvcmRpbmcgdG8g dGhpcyBoZXVyaXN0aWMuICAqLworKyAgaWYgKGVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfQVVUTykK KysgICAgeworKyAgICAgIGlmICh3b3Jkc2l6ZSA9PSA4ICYmIGluZm8uYnl0ZV9vcmRlciA9PSBC RkRfRU5ESUFOX0xJVFRMRSkKKysgICAgICAgIGVsZl9hYmkgPSBQT1dFUlBDX0VMRl9WMjsKKysg ICAgICBlbHNlCisrICAgICAgICBlbGZfYWJpID0gUE9XRVJQQ19FTEZfVjE7CisrICAgIH0KKysK KyAgIGlmIChzb2Z0X2Zsb2F0X2ZsYWcgPT0gQVVUT19CT09MRUFOX1RSVUUpCisgICAgIHNvZnRf ZmxvYXQgPSAxOworICAgZWxzZSBpZiAoc29mdF9mbG9hdF9mbGFnID09IEFVVE9fQk9PTEVBTl9G QUxTRSkKK0BAIC0zOTM4LDYgKzM5NzAsOCBAQCByczYwMDBfZ2RiYXJjaF9pbml0IChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvCisgICAgICAgICAgbWVhbmluZ2Z1bCwgYmVjYXVzZSA2NC1iaXQgQ1BVcyBj YW4gcnVuIGluIDMyLWJpdCBtb2RlLiAgU28sIHBlcmZvcm0KKyAgICAgICAgICBzZXBhcmF0ZSB3 b3JkIHNpemUgY2hlY2suICAqLworICAgICAgIHRkZXAgPSBnZGJhcmNoX3RkZXAgKGFyY2hlcy0+ Z2RiYXJjaCk7CisrICAgICAgaWYgKHRkZXAgJiYgdGRlcC0+ZWxmX2FiaSAhPSBlbGZfYWJpKQor Kwljb250aW51ZTsKKyAgICAgICBpZiAodGRlcCAmJiB0ZGVwLT5zb2Z0X2Zsb2F0ICE9IHNvZnRf ZmxvYXQpCisgCWNvbnRpbnVlOworICAgICAgIGlmICh0ZGVwICYmIHRkZXAtPnZlY3Rvcl9hYmkg IT0gdmVjdG9yX2FiaSkKK0BAIC0zOTYwLDYgKzM5OTQsNyBAQCByczYwMDBfZ2RiYXJjaF9pbml0 IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvCisgCisgICB0ZGVwID0gWENBTExPQyAoMSwgc3RydWN0IGdk YmFyY2hfdGRlcCk7CisgICB0ZGVwLT53b3Jkc2l6ZSA9IHdvcmRzaXplOworKyAgdGRlcC0+ZWxm X2FiaSA9IGVsZl9hYmk7CisgICB0ZGVwLT5zb2Z0X2Zsb2F0ID0gc29mdF9mbG9hdDsKKyAgIHRk ZXAtPnZlY3Rvcl9hYmkgPSB2ZWN0b3JfYWJpOworIAoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVh bS1wcGM2NGxlMTFvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMW9mMTUucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRiZDdhYgotLS0gL2Rldi9udWxs CisrKyBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBhdGNoCkBAIC0wLDAgKzEsMTMyIEBA Citjb21taXQgZDQwOTRiNmE4ODgzYWU0ODFjNzY0NGM1YTIxMDI1NGVmZTkyZTlhZAorQXV0aG9y OiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KK0RhdGU6ICAgVHVl IEZlYiA0IDE4OjQwOjE2IDIwMTQgKzAxMDAKKworICAgIFBvd2VyUEM2NCBFTEZ2MiBBQkk6IG5v IGZ1bmN0aW9uIGRlc2NyaXB0b3JzCisgICAgCisgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBtb3N0 IHNpZ25pZmljYW50IGRpZmZlcmVuY2Ugd2l0aCB0aGUgRUxGdjIgQUJJOgorICAgIHdlIG5vIGxv bmdlciB1c2UgZnVuY3Rpb24gZGVzY3JpcHRvcnMuICBUaGUgcGF0Y2ggY29uc2lzdHMgbW9zdGx5 CisgICAgb2Ygc3dpdGNoaW5nIG9mZiBjb2RlIHRvIGRlYWwgd2l0aCBkZXNjcmlwdG9ycyA6LSkK KyAgICAKKyAgICBJbiBhZGRpdGlvbiwgd2hlbiBjYWxsaW5nIGFuIGluZmVyaW9yIGZ1bmN0aW9u LCB3ZSBubyBsb25nZXIgbmVlZAorICAgIHRvIHByb3ZpZGUgaXRzIFRPQyBpbiByMi4gIEluc3Rl YWQsIEVMRnYyIGNvZGUgZXhwZWN0cyB0byBiZSBjYWxsZWQKKyAgICB3aXRoIHIxMiBwb2ludGlu ZyB0byB0aGUgY29kZSBhZGRyZXNzIGl0c2VsZi4KKyAgICAKKyAgICBnZGIvQ2hhbmdlTG9nOgor ICAgIAorICAgIAkqIHBwYy1saW51eC10ZGVwLmMgKHBwY19saW51eF9pbml0X2FiaSk6IE9ubHkg Y2FsbAorICAgIAlzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciBhbmQKKyAg ICAJc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsIGZvciBFTEZ2MS4KKyAgICAJ KiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBPbmx5IGhhbmRs ZQorICAgIAlmdW5jdGlvbiBkZXNjcmlwdG9ycyBvbiBFTEZ2MS4KKyAgICAJKHBwYzY0X3N5c3Zf YWJpX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLiAgT24gRUxGdjIsCisgICAgCXNldCB1cCBy MTIgYXQgZnVuY3Rpb24gZW50cnkuCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cKKyMjIyBiL2dkYi9D aGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTUgQEAKKyAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKg IDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorIAorKwkqIHBwYy1saW51eC10ZGVwLmMgKHBwY19saW51 eF9pbml0X2FiaSk6IE9ubHkgY2FsbAorKwlzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciBhbmQKKysJc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsIGZvciBF TEZ2MS4KKysJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBP bmx5IGhhbmRsZQorKwlmdW5jdGlvbiBkZXNjcmlwdG9ycyBvbiBFTEZ2MS4KKysJKHBwYzY0X3N5 c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLiAgT24gRUxGdjIsCisrCXNldCB1cCBy MTIgYXQgZnVuY3Rpb24gZW50cnkuCisrCisrMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8 dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKyAJKiBwcGMtdGRlcC5oIChlbnVtIHBvd2VycGNfZWxm X2FiaSk6IE5ldyBkYXRhIHR5cGUuCisgCShzdHJ1Y3QgZ2RiYXJjaF90ZGVwKTogTmV3IG1lbWJl ciBlbGZfYWJpLgorIAorLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKKysrKyBiL2dkYi9wcGMt bGludXgtdGRlcC5jCitAQCAtMTMzOSwxMyArMTMzOSwxNiBAQCBwcGNfbGludXhfaW5pdF9hYmkg KHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKKyAgIAorICAgaWYgKHRkZXAtPndvcmRzaXplID09 IDgpCisgICAgIHsKKy0gICAgICAvKiBIYW5kbGUgUFBDIEdOVS9MaW51eCA2NC1iaXQgZnVuY3Rp b24gcG9pbnRlcnMgKHdoaWNoIGFyZSByZWFsbHkKKy0JIGZ1bmN0aW9uIGRlc2NyaXB0b3JzKS4g ICovCistICAgICAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIKKy0JKGdk YmFyY2gsIHBwYzY0X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKKysgICAgICBpZiAodGRl cC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMSkKKysJeworKwkgIC8qIEhhbmRsZSBQUEMgR05V L0xpbnV4IDY0LWJpdCBmdW5jdGlvbiBwb2ludGVycyAod2hpY2ggYXJlIHJlYWxseQorKwkgICAg IGZ1bmN0aW9uIGRlc2NyaXB0b3JzKS4gICovCisrCSAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIKKysJICAgIChnZGJhcmNoLCBwcGM2NF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkcik7CisgCistICAgICAgc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFs IChnZGJhcmNoLAorLQkJCQkJICAgIHBwYzY0X2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCk7Cisr CSAgc2V0X2dkYmFyY2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsCisrCSAgICAoZ2RiYXJjaCwg cHBjNjRfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsKTsKKysJfQorIAorICAgICAgIC8qIFNoYXJl ZCBsaWJyYXJ5IGhhbmRsaW5nLiAgKi8KKyAgICAgICBzZXRfZ2RiYXJjaF9za2lwX3RyYW1wb2xp bmVfY29kZSAoZ2RiYXJjaCwgcHBjNjRfc2tpcF90cmFtcG9saW5lX2NvZGUpOworLS0tIGEvZ2Ri L3BwYy1zeXN2LXRkZXAuYworKysrIGIvZ2RiL3BwYy1zeXN2LXRkZXAuYworQEAgLTEzNTIsOCAr MTM1Miw5IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAorIAkgIHdvcmQgPSB1bnBhY2tfbG9uZyAodHlwZSwgdmFsKTsKKyAKKyAJICAvKiBDb252 ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvIGRlc2NyaXB0b3JzLiAgKi8KKy0J ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSCistCSAgICAgIHx8IFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKKysJICBpZiAodGRlcC0+ZWxmX2FiaSA9PSBQ T1dFUlBDX0VMRl9WMQorKwkgICAgICAmJiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf UFRSCisrCQkgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikpCisgCSAgICB7 CisgCSAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZQorIAkJPSBjaGVja190eXBlZGVmIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CitAQCAtMTU1MywyNCArMTU1NCwzMiBAQCBwcGM2NF9z eXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorICAgICAg YnJlYWtwb2ludC4gICovCisgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfc2lnbmVkIChyZWdjYWNo ZSwgdGRlcC0+cHBjX2xyX3JlZ251bSwgYnBfYWRkcik7CisgCistICAvKiBVc2UgdGhlIGZ1bmNf YWRkciB0byBmaW5kIHRoZSBkZXNjcmlwdG9yLCBhbmQgdXNlIHRoYXQgdG8gZmluZAorLSAgICAg dGhlIFRPQy4gIElmIHdlJ3JlIGNhbGxpbmcgdmlhIGEgZnVuY3Rpb24gcG9pbnRlciwgdGhlIHBv aW50ZXIKKy0gICAgIGl0c2VsZiBpZGVudGlmaWVzIHRoZSBkZXNjcmlwdG9yLiAgKi8KKy0gIHsK Ky0gICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoZnVu Y3Rpb24pKTsKKy0gICAgQ09SRV9BRERSIGRlc2NfYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1 bmN0aW9uKTsKKy0KKy0gICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9QVFIK Ky0JfHwgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChmdW5jX2FkZHIsICZkZXNjX2Fk ZHIpKQorLSAgICAgIHsKKy0JLyogVGhlIFRPQyBpcyB0aGUgc2Vjb25kIGRvdWJsZSB3b3JkIGlu IHRoZSBkZXNjcmlwdG9yLiAgKi8KKy0JQ09SRV9BRERSIHRvYyA9CistCSAgcmVhZF9tZW1vcnlf dW5zaWduZWRfaW50ZWdlciAoZGVzY19hZGRyICsgdGRlcC0+d29yZHNpemUsCistCQkJCQl0ZGVw LT53b3Jkc2l6ZSwgYnl0ZV9vcmRlcik7CistCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25l ZCAocmVnY2FjaGUsCistCQkJCQl0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDIsIHRvYyk7CistICAg ICAgfQorLSAgfQorKyAgLyogSW4gdGhlIEVMRnYxIEFCSSwgdXNlIHRoZSBmdW5jX2FkZHIgdG8g ZmluZCB0aGUgZGVzY3JpcHRvciwgYW5kIHVzZQorKyAgICAgdGhhdCB0byBmaW5kIHRoZSBUT0Mu ICBJZiB3ZSdyZSBjYWxsaW5nIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIsCisrICAgICB0aGUgcG9p bnRlciBpdHNlbGYgaWRlbnRpZmllcyB0aGUgZGVzY3JpcHRvci4gICovCisrICBpZiAodGRlcC0+ ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMSkKKysgICAgeworKyAgICAgIHN0cnVjdCB0eXBlICpm dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7CisrICAgICAgQ09S RV9BRERSIGRlc2NfYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0aW9uKTsKKysKKysgICAg ICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX1BUUgorKwkgIHx8IGNvbnZlcnRf Y29kZV9hZGRyX3RvX2Rlc2NfYWRkciAoZnVuY19hZGRyLCAmZGVzY19hZGRyKSkKKysJeworKwkg IC8qIFRoZSBUT0MgaXMgdGhlIHNlY29uZCBkb3VibGUgd29yZCBpbiB0aGUgZGVzY3JpcHRvci4g ICovCisrCSAgQ09SRV9BRERSIHRvYyA9CisrCSAgICByZWFkX21lbW9yeV91bnNpZ25lZF9pbnRl Z2VyIChkZXNjX2FkZHIgKyB0ZGVwLT53b3Jkc2l6ZSwKKysJCQkJCSAgdGRlcC0+d29yZHNpemUs IGJ5dGVfb3JkZXIpOworKworKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVn Y2FjaGUsCisrCQkJCQkgIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMiwgdG9jKTsKKysJfQorKyAg ICB9CisrCisrICAvKiBJbiB0aGUgRUxGdjIgQUJJLCB3ZSBuZWVkIHRvIHBhc3MgdGhlIHRhcmdl dCBhZGRyZXNzIGluIHIxMiBzaW5jZQorKyAgICAgd2UgbWF5IGJlIGNhbGxpbmcgYSBnbG9iYWwg ZW50cnkgcG9pbnQuICAqLworKyAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfVjIp CisrICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsCisrCQkJCSAg ICB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDEyLCBmdW5jX2FkZHIpOworIAorICAgcmV0dXJuIHNw OworIH0KCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTEyb2YxNS5wYXRjaCBiL2dk Yi11cHN0cmVhbS1wcGM2NGxlMTJvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjNiMzg2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0tcHBjNjRs ZTEyb2YxNS5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitjb21taXQgNTJmNTQ4ZTQxZjA4NTU1MGQ3 NzQwYzM1MGMxYzhhMjM5NTMyYWY3NworQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndl aWdhbmRAZGUuaWJtLmNvbT4KK0RhdGU6ICAgVHVlIEZlYiA0IDE4OjQxOjM2IDIwMTQgKzAxMDAK KworICAgIFBvd2VyUEM2NCBFTEZ2MiBBQkk6IHN0YWNrIGZyYW1lIGxheW91dCBjaGFuZ2VzCisg ICAgCisgICAgVGhpcyBpbXBsZW1lbnRlcyBhbm90aGVyIGNoYW5nZSBpbiBFTEZ2MjogdGhlIHN0 YWNrIGZyYW1lIG5vIGxvbmdlcgorICAgIGNvbnRhaW5zIHRoZSByZXNlcnZlZCBkb3VibGUgd29y ZHMgZm9yIGxpbmtlciBhbmQgY29tcGlsZXIgdXNlCisgICAgKHdoaWNoIHdlcmVuJ3QgcmVhbGx5 IHVzZWQgZm9yIG11Y2ggb2YgYW55dGhpbmcgYW55d2F5KS4gIFRoaXMKKyAgICBhZmZlY3RzIHBs YWNlbWVudCBvZiBvbi1zdGFjayBwYXJhbWV0ZXJzIGluIGluZmVyaW9yIGNhbGxzLgorICAgIAor ICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9z eXN2X2FiaV9wdXNoX2R1bW15X2NhbGwpOiBVc2UgY29ycmVjdAorICAgIAlvZmZzZXQgdG8gdGhl IHN0YWNrIHBhcmFtZXRlciBsaXN0IGZvciB0aGUgRUxGdjIgQUJJLgorCisjIyMgYS9nZGIvQ2hh bmdlTG9nCisjIyMgYi9nZGIvQ2hhbmdlTG9nCisjIyAtMSw1ICsxLDEwIEBACisgMjAxNC0wMi0w NCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKyAKKysJKiBwcGMtc3lz di10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IFVzZSBjb3JyZWN0Cisr CW9mZnNldCB0byB0aGUgc3RhY2sgcGFyYW1ldGVyIGxpc3QgZm9yIHRoZSBFTEZ2MiBBQkkuCisr CisrMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysK KyAJKiBwcGMtbGludXgtdGRlcC5jIChwcGNfbGludXhfaW5pdF9hYmkpOiBPbmx5IGNhbGwKKyAJ c2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgYW5kCisgCXNldF9nZGJhcmNo X2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCBmb3IgRUxGdjEuCistLS0gYS9nZGIvcHBjLXN5c3Yt dGRlcC5jCisrKysgYi9nZGIvcHBjLXN5c3YtdGRlcC5jCitAQCAtMTQ3NCw5ICsxNDc0LDEzIEBA IHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CisgCSAgYXJncG9zLnJlZ2NhY2hlID0gcmVnY2FjaGU7CisgCSAgYXJncG9zLnJlZnBhcmFtID0g YWxpZ25fZG93biAoc3AgLSByZWZwYXJhbV9zaXplLCAxNik7CisgCSAgYXJncG9zLmdwYXJhbSA9 IGFsaWduX2Rvd24gKGFyZ3Bvcy5yZWZwYXJhbSAtIGdwYXJhbV9zaXplLCAxNik7CistCSAgLyog QWRkIGluIHNwYWNlIGZvciB0aGUgVE9DLCBsaW5rIGVkaXRvciBkb3VibGUgd29yZCwKKy0JICAg ICBjb21waWxlciBkb3VibGUgd29yZCwgTFIgc2F2ZSBhcmVhLCBDUiBzYXZlIGFyZWEuICAqLwor LQkgIHNwID0gYWxpZ25fZG93biAoYXJncG9zLmdwYXJhbSAtIDQ4LCAxNik7CisrCSAgLyogQWRk IGluIHNwYWNlIGZvciB0aGUgVE9DLCBsaW5rIGVkaXRvciBkb3VibGUgd29yZCAodjEgb25seSks CisrCSAgICAgY29tcGlsZXIgZG91YmxlIHdvcmQgKHYxIG9ubHkpLCBMUiBzYXZlIGFyZWEsIENS IHNhdmUgYXJlYSwKKysJICAgICBhbmQgYmFja2NoYWluLiAgKi8KKysJICBpZiAodGRlcC0+ZWxm X2FiaSA9PSBQT1dFUlBDX0VMRl9WMSkKKysJICAgIHNwID0gYWxpZ25fZG93biAoYXJncG9zLmdw YXJhbSAtIDQ4LCAxNik7CisrCSAgZWxzZQorKwkgICAgc3AgPSBhbGlnbl9kb3duIChhcmdwb3Mu Z3BhcmFtIC0gMzIsIDE2KTsKKyAJfQorIAorICAgICAgIC8qIElmIHRoZSBmdW5jdGlvbiBpcyBy ZXR1cm5pbmcgYSBgc3RydWN0JywgdGhlbiB0aGVyZSBpcyBhbgoKZGlmZiAtLWdpdCBhL2dkYi11 cHN0cmVhbS1wcGM2NGxlMTNvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxM29mMTUu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljZTU5OQotLS0gL2Rl di9udWxsCisrKyBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMTNvZjE1LnBhdGNoCkBAIC0wLDAgKzEs MzA5IEBACitjb21taXQgY2MwZTg5YzUxOTkxMmUwZTRlNzVhMmZjMGQ4MzZmNzE1Y2RjNjgwNgor QXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KK0RhdGU6 ICAgVHVlIEZlYiA0IDE4OjQyOjM1IDIwMTQgKzAxMDAKKworICAgIFBvd2VyUEM2NCBFTEZ2MiBB Qkk6IHN0cnVjdHVyZSBwYXNzaW5nIC8gcmV0dXJuCisgICAgCisgICAgQW5vdGhlciBzaWduaWZp Y2FudCBkaWZmZXJlbmNlIGluIHRoZSBFTEZ2MiBBQkkgaXMgdGhhdCAiaG9tb2dlbmVvdXMiCisg ICAgZmxvYXRpbmctcG9pbnQgYW5kIHZlY3RvciBhZ2dyZWdhdGVzLCBpLmUuIGFnZ3JlZ2F0ZXMg dGhlIGNvbnNpc3QKKyAgICAocmVjdXJzaXZlbHkpIG9ubHkgb2YgbWVtYmVycyBvZiB0aGUgc2Ft ZSBmbG9hdGluZy1wb2ludCBvciB2ZWN0b3IgdHlwZSwKKyAgICBhcmUgcGFzc2VkIGluIGEgc2Vy aWVzIG9mIGZsb2F0aW5nLXBvaW50IC8gdmVjdG9yIHJlZ2lzdGVycywgYXMgaWYgdGhleQorICAg IHdlcmUgc2VwZXJhdGUgcGFyYW1ldGVycy4gIChUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIEFSTSBB QkkuKSAgVGhpcworICAgIGFwcGxpZXMgdG8gYm90aCBjYWxscyBhbmQgcmV0dXJucy4KKyAgICAK KyAgICBJbiBhZGRpdGlvbiB3aGVuIHJldHVybmluZyBhbnkgYWdncmVnYXRlIG9mIHVwIHRvIDE2 IGJ5dGVzLCBFTEZ2MiBub3cKKyAgICB1c2VkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuCisg ICAgCisgICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZXNlIGFzcGVjdHMgb2YgdGhl IEFCSSwgd2hpY2ggaXMgcmVsYXRpdmVseQorICAgIHN0cmFpZ2h0Zm9yd2FyZCBhZnRlciB0aGUg cmVmYWN0b3JpbmcgcGF0Y2ggdG8gcHBjLXN5c3YtdGRlcC5jLgorICAgIAorICAgIGdkYi9DaGFu Z2VMb2c6CisgICAgCisgICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9hZ2dyZWdhdGVfY2Fu ZGlkYXRlKTogTmV3IHJvdXRpbmUuCisgICAgCShwcGM2NF9lbGZ2Ml9hYmlfaG9tb2dlbmVvdXNf YWdncmVnYXRlKTogTGlrZXdpc2UuCisgICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtKTog SGFuZGxlIEVMRnYyIGhvbW9nZW5lb3VzIHN0cnVjdHMuCisgICAgCShwcGM2NF9zeXN2X2FiaV9y ZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4gIEFsc28sIGhhbmRsZSBzbWFsbAorICAgIAlzdHJ1Y3R1 cmVzIHJldHVybmVkIGluIEdQUnMuCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cKKyMjIyBiL2dkYi9D aGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTMgQEAKKyAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKg IDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorIAorKwkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfYWdn cmVnYXRlX2NhbmRpZGF0ZSk6IE5ldyByb3V0aW5lLgorKwkocHBjNjRfZWxmdjJfYWJpX2hvbW9n ZW5lb3VzX2FnZ3JlZ2F0ZSk6IExpa2V3aXNlLgorKwkocHBjNjRfc3lzdl9hYmlfcHVzaF9wYXJh bSk6IEhhbmRsZSBFTEZ2MiBob21vZ2VuZW91cyBzdHJ1Y3RzLgorKwkocHBjNjRfc3lzdl9hYmlf cmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuICBBbHNvLCBoYW5kbGUgc21hbGwKKysJc3RydWN0dXJl cyByZXR1cm5lZCBpbiBHUFJzLgorKworKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3 ZWlnYW5kQGRlLmlibS5jb20+CisrCisgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2Fi aV9wdXNoX2R1bW15X2NhbGwpOiBVc2UgY29ycmVjdAorIAlvZmZzZXQgdG8gdGhlIHN0YWNrIHBh cmFtZXRlciBsaXN0IGZvciB0aGUgRUxGdjIgQUJJLgorIAorLS0tIGEvZ2RiL3BwYy1zeXN2LXRk ZXAuYworKysrIGIvZ2RiL3BwYy1zeXN2LXRkZXAuYworQEAgLTExMDEsNiArMTEwMSwxNjAgQEAg Y29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChDT1JFX0FERFIgY29kZV9hZGRyLCBDT1JF X0FERFIgKmRlc2NfYWRkcikKKyAgIHJldHVybiAxOworIH0KKyAKKysvKiBXYWxrIGRvd24gdGhl IHR5cGUgdHJlZSBvZiBUWVBFIGNvdW50aW5nIGNvbnNlY3V0aXZlIGJhc2UgZWxlbWVudHMuCisr ICAgSWYgKkZJRUxEX1RZUEUgaXMgTlVMTCwgdGhlbiBzZXQgaXQgdG8gdGhlIGZpcnN0IHZhbGlk IGZsb2F0aW5nIHBvaW50CisrICAgb3IgdmVjdG9yIHR5cGUuICBJZiBhIG5vbi1mbG9hdGluZyBw b2ludCBvciB2ZWN0b3IgdHlwZSBpcyBmb3VuZCwgb3IKKysgICBpZiBhIGZsb2F0aW5nIHBvaW50 IG9yIHZlY3RvciB0eXBlIHRoYXQgZG9lc24ndCBtYXRjaCBhIG5vbi1OVUxMCisrICAgKkZJRUxE X1RZUEUgaXMgZm91bmQsIHRoZW4gcmV0dXJuIC0xLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBjb3Vu dCBpbiB0aGUKKysgICBzdWItdHJlZS4gICovCisrCisrc3RhdGljIExPTkdFU1QKKytwcGM2NF9h Z2dyZWdhdGVfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkgICBzdHJ1Y3QgdHlw ZSAqKmZpZWxkX3R5cGUpCisreworKyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOworKwor KyAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQorKyAgICB7CisrICAgIGNhc2UgVFlQRV9DT0RF X0ZMVDoKKysgICAgY2FzZSBUWVBFX0NPREVfREVDRkxPQVQ6CisrICAgICAgaWYgKCEqZmllbGRf dHlwZSkKKysJKmZpZWxkX3R5cGUgPSB0eXBlOworKyAgICAgIGlmIChUWVBFX0NPREUgKCpmaWVs ZF90eXBlKSA9PSBUWVBFX0NPREUgKHR5cGUpCisrCSAgJiYgVFlQRV9MRU5HVEggKCpmaWVsZF90 eXBlKSA9PSBUWVBFX0xFTkdUSCAodHlwZSkpCisrCXJldHVybiAxOworKyAgICAgIGJyZWFrOwor KworKyAgICBjYXNlIFRZUEVfQ09ERV9DT01QTEVYOgorKyAgICAgIHR5cGUgPSBUWVBFX1RBUkdF VF9UWVBFICh0eXBlKTsKKysgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf RkxUCisrCSAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfREVDRkxPQVQpCisrCXsK KysJICBpZiAoISpmaWVsZF90eXBlKQorKwkgICAgKmZpZWxkX3R5cGUgPSB0eXBlOworKwkgIGlm IChUWVBFX0NPREUgKCpmaWVsZF90eXBlKSA9PSBUWVBFX0NPREUgKHR5cGUpCisrCSAgICAgICYm IFRZUEVfTEVOR1RIICgqZmllbGRfdHlwZSkgPT0gVFlQRV9MRU5HVEggKHR5cGUpKQorKwkgICAg cmV0dXJuIDI7CisrCX0KKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBUWVBFX0NPREVfQVJS QVk6CisrICAgICAgaWYgKFRZUEVfVkVDVE9SICh0eXBlKSkKKysJeworKwkgIGlmICghKmZpZWxk X3R5cGUpCisrCSAgICAqZmllbGRfdHlwZSA9IHR5cGU7CisrCSAgaWYgKFRZUEVfQ09ERSAoKmZp ZWxkX3R5cGUpID09IFRZUEVfQ09ERSAodHlwZSkKKysJICAgICAgJiYgVFlQRV9MRU5HVEggKCpm aWVsZF90eXBlKSA9PSBUWVBFX0xFTkdUSCAodHlwZSkpCisrCSAgICByZXR1cm4gMTsKKysJfQor KyAgICAgIGVsc2UKKysJeworKwkgIExPTkdFU1QgY291bnQsIGxvd19ib3VuZCwgaGlnaF9ib3Vu ZDsKKysKKysJICBjb3VudCA9IHBwYzY0X2FnZ3JlZ2F0ZV9jYW5kaWRhdGUKKysJCSAgIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSwgZmllbGRfdHlwZSk7CisrCSAgaWYgKGNvdW50ID09IC0xKQor KwkgICAgcmV0dXJuIC0xOworKworKwkgIGlmICghZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxv d19ib3VuZCwgJmhpZ2hfYm91bmQpKQorKwkgICAgcmV0dXJuIC0xOworKwkgIGNvdW50ICo9IGhp Z2hfYm91bmQgLSBsb3dfYm91bmQ7CisrCisrCSAgLyogVGhlcmUgbXVzdCBiZSBubyBwYWRkaW5n LiAgKi8KKysJICBpZiAoY291bnQgPT0gMCkKKysJICAgIHJldHVybiBUWVBFX0xFTkdUSCAodHlw ZSkgPT0gMCA/IDAgOiAtMTsKKysJICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgIT0gY291 bnQgKiBUWVBFX0xFTkdUSCAoKmZpZWxkX3R5cGUpKQorKwkgICAgcmV0dXJuIC0xOworKworKwkg IHJldHVybiBjb3VudDsKKysJfQorKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIFRZUEVfQ09E RV9TVFJVQ1Q6CisrICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgorKwl7CisrCSAgTE9OR0VTVCBj b3VudCA9IDA7CisrCSAgaW50IGk7CisrCisrCSAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxE UyAodHlwZSk7IGkrKykKKysJICAgIHsKKysJICAgICAgTE9OR0VTVCBzdWJfY291bnQ7CisrCisr CSAgICAgIGlmIChmaWVsZF9pc19zdGF0aWMgKCZUWVBFX0ZJRUxEICh0eXBlLCBpKSkpCisrCQlj b250aW51ZTsKKysKKysJICAgICAgc3ViX2NvdW50ID0gcHBjNjRfYWdncmVnYXRlX2NhbmRpZGF0 ZQorKwkJCSAgIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCBmaWVsZF90eXBlKTsKKysJICAg ICAgaWYgKHN1Yl9jb3VudCA9PSAtMSkKKysJCXJldHVybiAtMTsKKysKKysJICAgICAgaWYgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKKysJCWNvdW50ICs9IHN1Yl9jb3Vu dDsKKysJICAgICAgZWxzZQorKwkJY291bnQgPSBtYXggKGNvdW50LCBzdWJfY291bnQpOworKwkg ICAgfQorKworKwkgIC8qIFRoZXJlIG11c3QgYmUgbm8gcGFkZGluZy4gICovCisrCSAgaWYgKGNv dW50ID09IDApCisrCSAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpID09IDAgPyAwIDogLTE7 CisrCSAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpICE9IGNvdW50ICogVFlQRV9MRU5HVEgg KCpmaWVsZF90eXBlKSkKKysJICAgIHJldHVybiAtMTsKKysKKysJICByZXR1cm4gY291bnQ7Cisr CX0KKysgICAgICBicmVhazsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICBicmVhazsKKysgICAg fQorKworKyAgcmV0dXJuIC0xOworK30KKysKKysvKiBJZiBhbiBhcmd1bWVudCBvZiB0eXBlIFRZ UEUgaXMgYSBob21vZ2VuZW91cyBmbG9hdCBvciB2ZWN0b3IgYWdncmVnYXRlCisrICAgdGhhdCBz aGFsbCBiZSBwYXNzZWQgaW4gRlAvdmVjdG9yIHJlZ2lzdGVycyBhY2NvcmRpbmcgdG8gdGhlIEVM RnYyIEFCSSwKKysgICByZXR1cm4gdGhlIGhvbW9nZW5lb3VzIGVsZW1lbnQgdHlwZSBpbiAqRUxU X1RZUEUgYW5kIHRoZSBudW1iZXIgb2YKKysgICBlbGVtZW50cyBpbiAqTl9FTFRTLCBhbmQgcmV0 dXJuIG5vbi16ZXJvLiAgT3RoZXJ3aXNlLCByZXR1cm4gemVyby4gICovCisrCisrc3RhdGljIGlu dAorK3BwYzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICp0 eXBlLAorKwkJCQkgICAgICAgc3RydWN0IHR5cGUgKiplbHRfdHlwZSwgaW50ICpuX2VsdHMpCisr eworKyAgLyogQ29tcGxleCB0eXBlcyBhdCB0aGUgdG9wIGxldmVsIGFyZSB0cmVhdGVkIHNlcGFy YXRlbHkuICBIb3dldmVyLAorKyAgICAgY29tcGxleCB0eXBlcyBjYW4gYmUgZWxlbWVudHMgb2Yg aG9tb2dlbmVvdXMgYWdncmVnYXRlcy4gICovCisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfU1RSVUNUCisrICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf VU5JT04KKysgICAgICB8fCAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkgJiYg IVRZUEVfVkVDVE9SICh0eXBlKSkpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgdHlwZSAqZmllbGRf dHlwZSA9IE5VTEw7CisrICAgICAgTE9OR0VTVCBmaWVsZF9jb3VudCA9IHBwYzY0X2FnZ3JlZ2F0 ZV9jYW5kaWRhdGUgKHR5cGUsICZmaWVsZF90eXBlKTsKKysKKysgICAgICBpZiAoZmllbGRfY291 bnQgPiAwKQorKwl7CisrCSAgaW50IG5fcmVncyA9ICgoVFlQRV9DT0RFIChmaWVsZF90eXBlKSA9 PSBUWVBFX0NPREVfRkxUCisrCQkJIHx8IFRZUEVfQ09ERSAoZmllbGRfdHlwZSkgPT0gVFlQRV9D T0RFX0RFQ0ZMT0FUKT8KKysJCQkoVFlQRV9MRU5HVEggKGZpZWxkX3R5cGUpICsgNykgPj4gMyA6 IDEpOworKworKwkgIC8qIFRoZSBFTEZ2MiBBQkkgYWxsb3dzIGhvbW9nZW5lb3VzIGFnZ3JlZ2F0 ZXMgdG8gb2NjdXB5CisrCSAgICAgdXAgdG8gOCByZWdpc3RlcnMuICAqLworKwkgIGlmIChmaWVs ZF9jb3VudCAqIG5fcmVncyA8PSA4KQorKwkgICAgeworKwkgICAgICBpZiAoZWx0X3R5cGUpCisr CQkqZWx0X3R5cGUgPSBmaWVsZF90eXBlOworKwkgICAgICBpZiAobl9lbHRzKQorKwkJKm5fZWx0 cyA9IChpbnQpIGZpZWxkX2NvdW50OworKwkgICAgICAvKiBOb3RlIHRoYXQgZmllbGRfY291bnQg aXMgTE9OR0VTVCBzaW5jZSBpdCBtYXkgaG9sZCB0aGUgc2l6ZQorKwkJIG9mIGFuIGFycmF5LCB3 aGlsZSAqbl9lbHRzIGlzIGludCBzaW5jZSBpdHMgdmFsdWUgaXMgYm91bmRlZAorKwkJIGJ5IHRo ZSBudW1iZXIgb2YgcmVnaXN0ZXJzIHVzZWQgZm9yIGFyZ3VtZW50IHBhc3NpbmcuICBUaGUKKysJ CSBjYXN0IGNhbm5vdCBvdmVyZmxvdyBkdWUgdG8gdGhlIGJvdW5kcyBjaGVja2luZyBhYm92ZS4g ICovCisrCSAgICAgIHJldHVybiAxOworKwkgICAgfQorKwl9CisrICAgIH0KKysKKysgIHJldHVy biAwOworK30KKysKKyAvKiBTdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmV4dCBhcmd1bWVudCBwb3Np dGlvbi4gICovCisgc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zCisgICB7CitAQCAtMTM4OSw2ICsx NTQzLDI5IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAorIAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9GTFQpCisgCSAgICBw cGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIHR5cGUsIHZhbCwgYXJncG9zKTsKKyAJ fQorKworKyAgICAgIC8qIEluIHRoZSBFTEZ2MiBBQkksIGhvbW9nZW5lb3VzIGZsb2F0aW5nLXBv aW50IG9yIHZlY3RvcgorKwkgYWdncmVnYXRlcyBhcmUgcGFzc2VkIGluIGEgc2VyaWVzIG9mIHJl Z2lzdGVycy4gICovCisrICAgICAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfVjIp CisrCXsKKysJICBzdHJ1Y3QgdHlwZSAqZWx0eXBlOworKwkgIGludCBpLCBuZWx0OworKworKwkg IGlmIChwcGM2NF9lbGZ2Ml9hYmlfaG9tb2dlbmVvdXNfYWdncmVnYXRlICh0eXBlLCAmZWx0eXBl LCAmbmVsdCkpCisrCSAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdDsgaSsrKQorKwkgICAgICB7Cisr CQljb25zdCBnZGJfYnl0ZSAqZWx2YWwgPSB2YWwgKyBpICogVFlQRV9MRU5HVEggKGVsdHlwZSk7 CisrCisrCQlpZiAoVFlQRV9DT0RFIChlbHR5cGUpID09IFRZUEVfQ09ERV9GTFQKKysJCSAgICB8 fCBUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQorKwkJICBwcGM2NF9z eXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIGVsdHlwZSwgZWx2YWwsIGFyZ3Bvcyk7CisrCQll bHNlIGlmIChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrCQkJICYmIFRZ UEVfVkVDVE9SIChlbHR5cGUpCisrCQkJICYmIHRkZXAtPnZlY3Rvcl9hYmkgPT0gUE9XRVJQQ19W RUNfQUxUSVZFQworKwkJCSAmJiBUWVBFX0xFTkdUSCAoZWx0eXBlKSA9PSAxNikKKysJCSAgcHBj NjRfc3lzdl9hYmlfcHVzaF92cmVnIChnZGJhcmNoLCBlbHZhbCwgYXJncG9zKTsKKysJICAgICAg fQorKwl9CisgICAgIH0KKyB9CisgCitAQCAtMTgzNCw2ICsyMDExLDcyIEBAIHBwYzY0X3N5c3Zf YWJpX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAq ZnVuY3Rpb24sCisgICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5USU9O OworICAgICB9CisgCisrICAvKiBJbiB0aGUgRUxGdjIgQUJJLCBob21vZ2VuZW91cyBmbG9hdGlu Zy1wb2ludCBvciB2ZWN0b3IKKysgICAgIGFnZ3JlZ2F0ZXMgYXJlIHJldHVybmVkIGluIHJlZ2lz dGVycy4gICovCisrICBpZiAodGRlcC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMgorKyAgICAg ICYmIHBwYzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHZhbHR5cGUsICZlbHR5 cGUsICZuZWx0KSkKKysgICAgeworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0OyBpKyspCisr CXsKKysJICBvayA9IHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlIChnZGJhcmNoLCBl bHR5cGUsIHJlZ2NhY2hlLAorKwkJCQkJCSByZWFkYnVmLCB3cml0ZWJ1ZiwgaSk7CisrCSAgZ2Ri X2Fzc2VydCAob2spOworKworKwkgIGlmIChyZWFkYnVmKQorKwkgICAgcmVhZGJ1ZiArPSBUWVBF X0xFTkdUSCAoZWx0eXBlKTsKKysJICBpZiAod3JpdGVidWYpCisrCSAgICB3cml0ZWJ1ZiArPSBU WVBFX0xFTkdUSCAoZWx0eXBlKTsKKysJfQorKworKyAgICAgIHJldHVybiBSRVRVUk5fVkFMVUVf UkVHSVNURVJfQ09OVkVOVElPTjsKKysgICAgfQorKworKyAgLyogSW4gdGhlIEVMRnYyIEFCSSwg YWdncmVnYXRlIHR5cGVzIG9mIHVwIHRvIDE2IGJ5dGVzIGFyZQorKyAgICAgcmV0dXJuZWQgaW4g cmVnaXN0ZXJzIHIzOnI0LiAgKi8KKysgIGlmICh0ZGVwLT5lbGZfYWJpID09IFBPV0VSUENfRUxG X1YyCisrICAgICAgJiYgVFlQRV9MRU5HVEggKHZhbHR5cGUpIDw9IDE2CisrICAgICAgJiYgKFRZ UEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVAorKwkgIHx8IFRZUEVfQ09ERSAo dmFsdHlwZSkgPT0gVFlQRV9DT0RFX1VOSU9OCisrCSAgfHwgKFRZUEVfQ09ERSAodmFsdHlwZSkg PT0gVFlQRV9DT0RFX0FSUkFZCisrCSAgICAgICYmICFUWVBFX1ZFQ1RPUiAodmFsdHlwZSkpKSkK KysgICAgeworKyAgICAgIGludCBuX3JlZ3MgPSAoKFRZUEVfTEVOR1RIICh2YWx0eXBlKSArIHRk ZXAtPndvcmRzaXplIC0gMSkKKysJCSAgICAvIHRkZXAtPndvcmRzaXplKTsKKysgICAgICBpbnQg aTsKKysKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yZWdzOyBpKyspCisrCXsKKysJICBnZGJf Ynl0ZSByZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOworKwkgIGludCByZWdudW0gPSB0ZGVwLT5w cGNfZ3AwX3JlZ251bSArIDMgKyBpOworKwkgIGludCBvZmZzZXQgPSBpICogdGRlcC0+d29yZHNp emU7CisrCSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh2YWx0eXBlKSAtIG9mZnNldDsKKysKKysJ ICBpZiAobGVuID4gdGRlcC0+d29yZHNpemUpCisrCSAgICBsZW4gPSB0ZGVwLT53b3Jkc2l6ZTsK KysKKysJICBpZiAod3JpdGVidWYgIT0gTlVMTCkKKysJICAgIHsKKysJICAgICAgbWVtc2V0IChy ZWd2YWwsIDAsIHNpemVvZiByZWd2YWwpOworKwkgICAgICBpZiAoZ2RiYXJjaF9ieXRlX29yZGVy IChnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRworKwkJICAmJiBvZmZzZXQgPT0gMCkKKysJCW1l bWNweSAocmVndmFsICsgdGRlcC0+d29yZHNpemUgLSBsZW4sIHdyaXRlYnVmLCBsZW4pOworKwkg ICAgICBlbHNlCisrCQltZW1jcHkgKHJlZ3ZhbCwgd3JpdGVidWYgKyBvZmZzZXQsIGxlbik7Cisr CSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsK KysJICAgIH0KKysJICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQorKwkgICAgeworKwkgICAgICByZWdj YWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKKysJICAgICAgaWYg KGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcKKysJCSAgJiYg b2Zmc2V0ID09IDApCisrCQltZW1jcHkgKHJlYWRidWYsIHJlZ3ZhbCArIHRkZXAtPndvcmRzaXpl IC0gbGVuLCBsZW4pOworKwkgICAgICBlbHNlCisrCQltZW1jcHkgKHJlYWRidWYgKyBvZmZzZXQs IHJlZ3ZhbCwgbGVuKTsKKysJICAgIH0KKysJfQorKyAgICAgIHJldHVybiBSRVRVUk5fVkFMVUVf UkVHSVNURVJfQ09OVkVOVElPTjsKKysgICAgfQorKworICAgLyogSGFuZGxlIHBsYWluIGJhc2Ug dHlwZXMuICAqLworICAgaWYgKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlIChnZGJh cmNoLCB2YWx0eXBlLCByZWdjYWNoZSwKKyAJCQkJCXJlYWRidWYsIHdyaXRlYnVmLCAwKSkKCmRp ZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTE0b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVh bS1wcGM2NGxlMTRvZjE1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmFiZWU5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdXBzdHJlYW0tcHBjNjRsZTE0b2YxNS5w YXRjaApAQCAtMCwwICsxLDM3NSBAQAorY29tbWl0IDU5MWExMmExZDRjODg0MzM0M2ViOTk5MTQ1 ZDhiY2MxZWZlZGY0MDgKK0F1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRl LmlibS5jb20+CitEYXRlOiAgIFR1ZSBGZWIgNCAxODo0NDoxNCAyMDE0ICswMTAwCisKKyAgICBQ b3dlclBDNjQgRUxGdjIgQUJJOiBza2lwIGdsb2JhbCBlbnRyeSBwb2ludCBjb2RlCisgICAgCisg ICAgVGhpcyBwYXRjaCBoYW5kbGVzIGFub3RoZXIgYXNwZWN0IG9mIHRoZSBFTEZ2MiBBQkksIHdo aWNoIHVuZm9ydHVuYXRlbHkKKyAgICByZXF1aXJlcyBjb21tb24gY29kZSBjaGFuZ2VzLgorICAg IAorICAgIEluIEVMRnYyLCBmdW5jdGlvbnMgbWF5IHByb3ZpZGUgYm90aCBhIGdsb2JhbCBhbmQg YSBsb2NhbCBlbnRyeSBwb2ludC4KKyAgICBUaGUgZ2xvYmFsIGVudHJ5IHBvaW50ICh3aGVyZSB0 aGUgZnVuY3Rpb24gc3ltYm9sIHBvaW50cyB0bykgaXMgaW50ZW5kZWQKKyAgICB0byBiZSB1c2Vk IGZvciBmdW5jdGlvbi1wb2ludGVyIG9yIGNyb3NzLW1vZHVsZSAoUExUKSBjYWxscywgYW5kIHJl cXVpcmVzCisgICAgcjEyIHRvIGJlIHNldCB1cCB0byB0aGUgZW50cnkgcG9pbnQgYWRkcmVzcyBp dHNlbGYuICAgVGhlIGxvY2FsIGVudHJ5CisgICAgcG9pbnQgKHdoaWNoIGlzIGZvdW5kIGF0IGEg Zml4ZWQgb2Zmc2V0IGFmdGVyIHRoZSBnbG9iYWwgZW50cnkgcG9pbnQsCisgICAgYXMgZGVmaW5l ZCBieSBiaXRzIGluIHRoZSBzeW1ib2wgdGFibGUgZW50cmllcycgc3Rfb3RoZXIgZmllbGQpLCBp bnN0ZWFkCisgICAgZXhwZWN0cyByMiB0byBiZSBzZXQgdXAgdG8gdGhlIGN1cnJlbnQgVE9DLgor ICAgIAorICAgIE5vdywgd2hlbiBzZXR0aW5nIGEgYnJlYWtwb2ludCBvbiBhIGZ1bmN0aW9uIGJ5 IG5hbWUsIHlvdSByZWFsbHkgd2FudAorICAgIHRoYXQgYnJlYWtwb2ludCB0byB0cmlnZ2VyIGVp dGhlciB3YXksIG5vIG1hdHRlciB3aGV0aGVyIHRoZSBmdW5jdGlvbgorICAgIGlzIGNhbGxlZCB2 aWEgaXRzIGxvY2FsIG9yIGdsb2JhbCBlbnRyeSBwb2ludC4gIFNpbmNlIHRoZSBnbG9iYWwgZW50 cnkKKyAgICBwb2ludCB3aWxsIGFsd2F5cyBmYWxsIHRocm91Z2ggaW50byB0aGUgbG9jYWwgZW50 cnkgcG9pbnQsIHRoZSB3YXkgdG8KKyAgICBhY2hpZXZlIHRoYXQgaXMgdG8gc2ltcGx5IHNldCB0 aGUgYnJlYWtwb2ludCBhdCB0aGUgbG9jYWwgZW50cnkgcG9pbnQuCisgICAgCisgICAgT25lIHdh eSB0byBkbyB0aGF0IHdvdWxkIGJlIHRvIGhhdmUgcHJvbG9ndWUgcGFyc2luZyBza2lwIHRoZSBj b2RlCisgICAgc2VxdWVuY2UgdGhhdCBtYWtlcyB1cCB0aGUgZ2xvYmFsIGVudHJ5IHBvaW50LiAg VW5mb3J0dW5hdGVseSwgdGhpcworICAgIGRvZXMgbm90IHdvcmsgcmVsaWFibHksIHNpbmNlIC1m b3Igb3B0aW1pemVkIGNvZGUtIEdEQiB0aGVzZSBkYXlzCisgICAgd2lsbCBub3QgYWN0dWFsbCBp bnZva2UgdGhlIHByb2xvZ3VlIHBhcnNpbmcgY29kZSBidXQgaW5zdGVhZCBqdXN0CisgICAgc2V0 IHRoZSBicmVha3BvaW50IGF0IHRoZSBzeW1ib2wgYWRkcmVzcyBhbmQgcmVseSBvbiBEV0FSRiBi ZWluZworICAgIGNvcnJlY3QgYXQgYW55IHBvaW50IHRocm91Z2hvdXQgdGhlIGZ1bmN0aW9uIC4u LgorICAgIAorICAgIFVuZm9ydHVuYXRlbHksIEkgZG9uJ3QgcmVhbGx5IHNlZSBhbnkgd2F5IHRv IGV4cHJlc3MgdGhlIG5vdGlvbiBvZgorICAgIGxvY2FsIGVudHJ5IHBvaW50cyB3aXRoIHRoZSBj dXJyZW50IHNldCBvZiBnZGJhcmNoIGNhbGxiYWNrcy4KKyAgICAKKyAgICBUaHVzIHRoaXMgcGF0 Y2ggYWRkcyBhIG5ldyBjYWxsYmFjaywgc2tpcF9lbnRyeXBvaW50LCB0aGF0IGlzCisgICAgc29t ZXdoYXQgYW5hbG9nb3VzIHRvIHNraXBfcHJvbG9ndWUsIGJ1dCBpcyBjYWxsZWQgZXZlcnkgdGlt ZQorICAgIEdEQiBuZWVkcyB0byBkZXRlcm1pbmUgYSBmdW5jdGlvbiBzdGFydCBhZGRyZXNzLCBl dmVuIGluIHRob3NlCisgICAgY2FzZXMgd2hlcmUgR0RCIGRlY2lkZXMgdG8gbm90IGNhbGwgc2tp cF9wcm9sb2d1ZS4KKyAgICAKKyAgICBBcyBhIHNpZGUgZWZmZWN0LCB0aGUgc2tpcF9lbnRyeXBv aW50IGltcGxlbWVudGF0aW9uIG9uIHBwYzY0CisgICAgZG9lcyBub3QgbmVlZCB0byBwZXJmb3Jt IGFueSBpbnN0cnVjdGlvbiBwYXJzaW5nOyBpdCBjYW4gc2ltcGx5CisgICAgcmVseSBvbiB0aGUg bG9jYWwgZW50cnkgcG9pbnQgZmxhZ3MgaW4gdGhlIHN5bWJvbCB0YWJsZSBlbnRyeS4KKyAgICAK KyAgICBXaXRoIHRoaXMgaW1wbGVtZW50ZWQsIHR3byB0ZXN0IGNhc2VzIHdvdWxkIHN0aWxsIGZh aWwgdG8gc2V0CisgICAgdGhlIGJyZWFrcG9pbnQgY29ycmVjdGx5LCBidXQgdGhhdCdzIGJlY2F1 c2UgdGhleSB1c2UgdGhlIGNvbnN0cnVjdDoKKyAgICAKKyAgICAgZ2RiX3Rlc3QgImJyZWFrICpo ZWxsbyIKKyAgICAKKyAgICBOb3csIHVzaW5nICIqaGVsbG8iIGV4cGxpY2l0bHkgaW5zdHJ1Y3Rz IEdEQiB0byBzZXQgdGhlIGJyZWFrcG9pbnQKKyAgICBhdCB0aGUgbnVtZXJpY2FsIHZhbHVlIG9m ICJoZWxsbyIgdHJlYXRlZCBhcyBmdW5jdGlvbiBwb2ludGVyLCBzbworICAgIGl0IHdpbGwgYnkg ZGVmaW5pdGlvbiBvbmx5IGhpdCB0aGUgZ2xvYmFsIGVudHJ5IHBvaW50LgorICAgIAorICAgIEkg dGhpbmsgdGhpcyBiZWhhdmlvdXIgaXMgdW5hdm9pZGFibGUsIGJ1dCBhY2NlcHRhYmxlIC0tIG1v c3QgcGVvcGxlCisgICAgZG8gbm90IHVzZSB0aGlzIGNvbnN0cnVjdCwgYW5kIGlmIHRoZXkgZG8s IHRoZXkgZ2V0IHdoYXQgdGhleQorICAgIGFza2VkIGZvciAuLi4KKyAgICAKKyAgICBJbiBvbmUg b2YgdGhvc2UgdHdvIHRlc3QgY2FzZXMsIHVzZSBvZiB0aGlzIGNvbnN0cnVjdCBpcyByZWFsbHkK KyAgICBub3QgYXBwcm9wcmlhdGUuICBJIHRoaW5rIHRoaXMgd2FzIGFkZGVkIHdheSBiYWNrIHdo ZW4gYXMgYSBtZWFucworICAgIHRvIHdvcmsgYXJvdW5kIHByb2xvZ3VlIHNraXBwaW5nIHByb2Js ZW1zIG9uIHNvbWUgcGxhdGZvcm1zLiAgVGhlc2UKKyAgICBkYXlzIHRoYXQgc2hvdWxkbid0IHJl YWxseSBiZSBuZWNlc3NhcnkgYW55IG1vcmUgLi4uCisgICAgCisgICAgRm9yIHRoZSBvdGhlciAo c3RlcC1idCksIHdlIHJlYWxseSB3YW50IHRvIG1ha2Ugc3VyZSBiYWNrdHJhY2luZworICAgIHdv cmtzIG9uIHRoZSB2ZXJ5IGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZSByb3V0aW5lLiAgVG8gZW5h YmxlIHRoYXQKKyAgICB0ZXN0IGFsc28gb24gcG93ZXJwYzY0bGUtbGludXgsIHdlIGNhbiBtb2Rp ZnkgdGhlIGNvZGUgdG8gY2FsbCB0aGUKKyAgICB0ZXN0IGZ1bmN0aW9uIHZpYSBmdW5jdGlvbiBw b2ludGVyICh3aGljaCBtYWtlcyBpdCB1c2UgdGhlIGdsb2JhbAorICAgIGVudHJ5IHBvaW50IGlu IHRoZSBFTEZ2MiBBQkkpLgorICAgIAorICAgIGdkYi9DaGFuZ2VMb2c6CisgICAgCisgICAgCSog Z2RiYXJjaC5zaCAoc2tpcF9lbnRyeXBvaW50KTogTmV3IGNhbGxiYWNrLgorICAgIAkqIGdkYmFy Y2guYywgZ2RiYXJjaC5oOiBSZWdlbmVyYXRlLgorICAgIAkqIHN5bXRhYi5jIChza2lwX3Byb2xv Z3VlX3NhbCk6IENhbGwgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQuCisgICAgCSogaW5mcnVuLmMg KGZpbGxfaW5fc3RvcF9mdW5jKTogTGlrZXdpc2UuCisgICAgCSogcHBjLWxpbnV4LXRkZXAuYzog SW5jbHVkZSAiZWxmL3BwYzY0LmgiLgorICAgIAkocHBjX2VsZnYyX2VsZl9tYWtlX21zeW1ib2xf c3BlY2lhbCk6IE5ldyBmdW5jdGlvbi4KKyAgICAJKHBwY19lbGZ2Ml9za2lwX2VudHJ5cG9pbnQp OiBMaWtld2lzZS4KKyAgICAJKHBwY19saW51eF9pbml0X2FiaSk6IEluc3RhbGwgdGhlbSBmb3Ig RUxGdjIuCisgICAgCisgICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisgICAgCisgICAgCSog Z2RiLmJhc2Uvc2lnYnB0LmV4cDogRG8gbm90IHVzZSAiKiIgd2hlbiBzZXR0aW5nIGJyZWFrcG9p bnQKKyAgICAJb24gYSBmdW5jdGlvbi4KKyAgICAJKiBnZGIuYmFzZS9zdGVwLWJ0LmM6IENhbGwg aGVsbG8gdmlhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gbWFrZQorICAgIAlzdXJlIGl0cyBmaXJzdCBp bnN0cnVjdGlvbiBpcyBleGVjdXRlZCBvbiBwb3dlcnBjNjRsZS1saW51eC4KKworIyMjIGEvZ2Ri L0NoYW5nZUxvZworIyMjIGIvZ2RiL0NoYW5nZUxvZworIyMgLTEsNSArMSwxNiBAQAorIDIwMTQt MDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSogZ2Ri YXJjaC5zaCAoc2tpcF9lbnRyeXBvaW50KTogTmV3IGNhbGxiYWNrLgorKwkqIGdkYmFyY2guYywg Z2RiYXJjaC5oOiBSZWdlbmVyYXRlLgorKwkqIHN5bXRhYi5jIChza2lwX3Byb2xvZ3VlX3NhbCk6 IENhbGwgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQuCisrCSogaW5mcnVuLmMgKGZpbGxfaW5fc3Rv cF9mdW5jKTogTGlrZXdpc2UuCisrCSogcHBjLWxpbnV4LXRkZXAuYzogSW5jbHVkZSAiZWxmL3Bw YzY0LmgiLgorKwkocHBjX2VsZnYyX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCk6IE5ldyBmdW5j dGlvbi4KKysJKHBwY19lbGZ2Ml9za2lwX2VudHJ5cG9pbnQpOiBMaWtld2lzZS4KKysJKHBwY19s aW51eF9pbml0X2FiaSk6IEluc3RhbGwgdGhlbSBmb3IgRUxGdjIuCisrCisrMjAxNC0wMi0wNCAg VWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKyAJKiBwcGMtc3lzdi10 ZGVwLmMgKHBwYzY0X2FnZ3JlZ2F0ZV9jYW5kaWRhdGUpOiBOZXcgcm91dGluZS4KKyAJKHBwYzY0 X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUpOiBMaWtld2lzZS4KKyAJKHBwYzY0X3N5 c3ZfYWJpX3B1c2hfcGFyYW0pOiBIYW5kbGUgRUxGdjIgaG9tb2dlbmVvdXMgc3RydWN0cy4KKy0t LSBhL2dkYi9nZGJhcmNoLmMKKysrKyBiL2dkYi9nZGJhcmNoLmMKK0BAIC0yMjksNiArMjI5LDcg QEAgc3RydWN0IGdkYmFyY2gKKyAgIGdkYmFyY2hfcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJh bV9wX2Z0eXBlICpyZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3A7CisgICBnZGJhcmNoX3Nr aXBfcHJvbG9ndWVfZnR5cGUgKnNraXBfcHJvbG9ndWU7CisgICBnZGJhcmNoX3NraXBfbWFpbl9w cm9sb2d1ZV9mdHlwZSAqc2tpcF9tYWluX3Byb2xvZ3VlOworKyAgZ2RiYXJjaF9za2lwX2VudHJ5 cG9pbnRfZnR5cGUgKnNraXBfZW50cnlwb2ludDsKKyAgIGdkYmFyY2hfaW5uZXJfdGhhbl9mdHlw ZSAqaW5uZXJfdGhhbjsKKyAgIGdkYmFyY2hfYnJlYWtwb2ludF9mcm9tX3BjX2Z0eXBlICpicmVh a3BvaW50X2Zyb21fcGM7CisgICBnZGJhcmNoX3JlbW90ZV9icmVha3BvaW50X2Zyb21fcGNfZnR5 cGUgKnJlbW90ZV9icmVha3BvaW50X2Zyb21fcGM7CitAQCAtNDA1LDYgKzQwNiw3IEBAIHN0cnVj dCBnZGJhcmNoIHN0YXJ0dXBfZ2RiYXJjaCA9CisgICBkZWZhdWx0X3JldHVybl9pbl9maXJzdF9o aWRkZW5fcGFyYW1fcCwgIC8qIHJldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAqLworICAg MCwgIC8qIHNraXBfcHJvbG9ndWUgKi8KKyAgIDAsICAvKiBza2lwX21haW5fcHJvbG9ndWUgKi8K KysgIDAsICAvKiBza2lwX2VudHJ5cG9pbnQgKi8KKyAgIDAsICAvKiBpbm5lcl90aGFuICovCisg ICAwLCAgLyogYnJlYWtwb2ludF9mcm9tX3BjICovCisgICBkZWZhdWx0X3JlbW90ZV9icmVha3Bv aW50X2Zyb21fcGMsICAvKiByZW1vdGVfYnJlYWtwb2ludF9mcm9tX3BjICovCitAQCAtNzE0LDYg KzcxNiw3IEBAIHZlcmlmeV9nZGJhcmNoIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgIGlm IChnZGJhcmNoLT5za2lwX3Byb2xvZ3VlID09IDApCisgICAgIGZwcmludGZfdW5maWx0ZXJlZCAo bG9nLCAiXG5cdHNraXBfcHJvbG9ndWUiKTsKKyAgIC8qIFNraXAgdmVyaWZ5IG9mIHNraXBfbWFp bl9wcm9sb2d1ZSwgaGFzIHByZWRpY2F0ZS4gICovCisrICAvKiBTa2lwIHZlcmlmeSBvZiBza2lw X2VudHJ5cG9pbnQsIGhhcyBwcmVkaWNhdGUuICAqLworICAgaWYgKGdkYmFyY2gtPmlubmVyX3Ro YW4gPT0gMCkKKyAgICAgZnByaW50Zl91bmZpbHRlcmVkIChsb2csICJcblx0aW5uZXJfdGhhbiIp OworICAgaWYgKGdkYmFyY2gtPmJyZWFrcG9pbnRfZnJvbV9wYyA9PSAwKQorQEAgLTEzNTMsNiAr MTM1NiwxMiBAQCBnZGJhcmNoX2R1bXAgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc2lu Z2xlX3N0ZXBfdGhyb3VnaF9kZWxheSA9IDwlcz5cbiIsCisgICAgICAgICAgICAgICAgICAgICAg IGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnNpbmdsZV9zdGVwX3Rocm91Z2hfZGVs YXkpKTsKKyAgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAg ICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnRfcCgpID0gJWRcbiIsCisr ICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3AgKGdkYmFyY2gp KTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAg ImdkYmFyY2hfZHVtcDogc2tpcF9lbnRyeXBvaW50ID0gPCVzPlxuIiwKKysgICAgICAgICAgICAg ICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+c2tpcF9lbnRyeXBvaW50 KSk7CisrICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAg ICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfc2tpcF9tYWluX3Byb2xvZ3VlX3AoKSA9ICVkXG4iLAor ICAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1ZV9wIChnZGJh cmNoKSk7CisgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCitAQCAtMjcwMyw2ICsyNzEyLDMw IEBAIHNldF9nZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCisgfQorIAorIGludAorK2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7CisrICBy ZXR1cm4gZ2RiYXJjaC0+c2tpcF9lbnRyeXBvaW50ICE9IE5VTEw7CisrfQorKworK0NPUkVfQURE UgorK2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09S RV9BRERSIGlwKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7CisrICBnZGJf YXNzZXJ0IChnZGJhcmNoLT5za2lwX2VudHJ5cG9pbnQgIT0gTlVMTCk7CisrICBpZiAoZ2RiYXJj aF9kZWJ1ZyA+PSAyKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJh cmNoX3NraXBfZW50cnlwb2ludCBjYWxsZWRcbiIpOworKyAgcmV0dXJuIGdkYmFyY2gtPnNraXBf ZW50cnlwb2ludCAoZ2RiYXJjaCwgaXApOworK30KKysKKyt2b2lkCisrc2V0X2dkYmFyY2hfc2tp cF9lbnRyeXBvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X2Z0eXBlIHNraXBfZW50cnlwb2lu dCkKKyt7CisrICBnZGJhcmNoLT5za2lwX2VudHJ5cG9pbnQgPSBza2lwX2VudHJ5cG9pbnQ7Cisr fQorKworK2ludAorIGdkYmFyY2hfaW5uZXJfdGhhbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IENPUkVfQUREUiBsaHMsIENPUkVfQUREUiByaHMpCisgeworICAgZ2RiX2Fzc2VydCAoZ2RiYXJj aCAhPSBOVUxMKTsKKy0tLSBhL2dkYi9nZGJhcmNoLmgKKysrKyBiL2dkYi9nZGJhcmNoLmgKK0BA IC00ODYsNiArNDg2LDI0IEBAIHR5cGVkZWYgQ09SRV9BRERSIChnZGJhcmNoX3NraXBfbWFpbl9w cm9sb2d1ZV9mdHlwZSkgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDCisgZXh0ZXJuIENPUkVf QUREUiBnZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IENPUkVfQUREUiBpcCk7CisgZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc2tpcF9tYWluX3Byb2xv Z3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9za2lwX21haW5fcHJvbG9ndWVf ZnR5cGUgKnNraXBfbWFpbl9wcm9sb2d1ZSk7CisgCisrLyogT24gc29tZSBwbGF0Zm9ybXMsIGEg c2luZ2xlIGZ1bmN0aW9uIG1heSBwcm92aWRlIG11bHRpcGxlIGVudHJ5IHBvaW50cywKKysgICBl LmcuIG9uZSB0aGF0IGlzIHVzZWQgZm9yIGZ1bmN0aW9uLXBvaW50ZXIgY2FsbHMgYW5kIGEgZGlm ZmVyZW50IG9uZQorKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzLgor KyAgIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGJyZWFrcG9pbnRzIHNldCBvbiB0aGUgZnVuY3Rp b24gd2lsbCB0cmlnZ2VyCisrICAgbm8gbWF0dGVyIHZpYSB3aGljaCBlbnRyeSBwb2ludCB0aGUg ZnVuY3Rpb24gaXMgZW50ZXJlZCwgYSBwbGF0Zm9ybQorKyAgIG1heSBwcm92aWRlIHRoZSBza2lw X2VudHJ5cG9pbnQgY2FsbGJhY2suICBJdCBpcyBjYWxsZWQgd2l0aCBJUCBzZXQKKysgICB0byB0 aGUgbWFpbiBlbnRyeSBwb2ludCBvZiBhIGZ1bmN0aW9uIChhcyBkZXRlcm1pbmVkIGJ5IHRoZSBz eW1ib2wgdGFibGUpLAorKyAgIGFuZCBzaG91bGQgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBp bm5lcm1vc3QgZW50cnkgcG9pbnQsIHdoZXJlIHRoZQorKyAgIGFjdHVhbCBicmVha3BvaW50IG5l ZWRzIHRvIGJlIHNldC4gIE5vdGUgdGhhdCBza2lwX2VudHJ5cG9pbnQgaXMgdXNlZAorKyAgIGJ5 IEdEQiBjb21tb24gY29kZSBldmVuIHdoZW4gZGVidWdnaW5nIG9wdGltaXplZCBjb2RlLCB3aGVy ZSBza2lwX3Byb2xvZ3VlCisrICAgaXMgbm90IHVzZWQuICovCisrCisrZXh0ZXJuIGludCBnZGJh cmNoX3NraXBfZW50cnlwb2ludF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisrCisrdHlw ZWRlZiBDT1JFX0FERFIgKGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X2Z0eXBlKSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBpcCk7CisrZXh0ZXJuIENPUkVfQUREUiBnZGJhcmNo X3NraXBfZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBpcCk7 CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnRfZnR5cGUgKnNraXBfZW50cnlwb2lu dCk7CisrCisgdHlwZWRlZiBpbnQgKGdkYmFyY2hfaW5uZXJfdGhhbl9mdHlwZSkgKENPUkVfQURE UiBsaHMsIENPUkVfQUREUiByaHMpOworIGV4dGVybiBpbnQgZ2RiYXJjaF9pbm5lcl90aGFuIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGxocywgQ09SRV9BRERSIHJocyk7Cisg ZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfaW5uZXJfdGhhbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIGdkYmFyY2hfaW5uZXJfdGhhbl9mdHlwZSAqaW5uZXJfdGhhbik7CistLS0gYS9nZGIvZ2Ri YXJjaC5zaAorKysrIGIvZ2RiL2dkYmFyY2guc2gKK0BAIC01MzAsNiArNTMwLDE5IEBAIG06aW50 OnJldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcDpzdHJ1Y3QgdHlwZSAqdHlwZTp0eXBlOjpk ZWZhdWx0X3JldHVybl9pbl9mCisgCisgbTpDT1JFX0FERFI6c2tpcF9wcm9sb2d1ZTpDT1JFX0FE RFIgaXA6aXA6MDowCisgTTpDT1JFX0FERFI6c2tpcF9tYWluX3Byb2xvZ3VlOkNPUkVfQUREUiBp cDppcAorKyMgT24gc29tZSBwbGF0Zm9ybXMsIGEgc2luZ2xlIGZ1bmN0aW9uIG1heSBwcm92aWRl IG11bHRpcGxlIGVudHJ5IHBvaW50cywKKysjIGUuZy4gb25lIHRoYXQgaXMgdXNlZCBmb3IgZnVu Y3Rpb24tcG9pbnRlciBjYWxscyBhbmQgYSBkaWZmZXJlbnQgb25lCisrIyB0aGF0IGlzIHVzZWQg Zm9yIGRpcmVjdCBmdW5jdGlvbiBjYWxscy4KKysjIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGJy ZWFrcG9pbnRzIHNldCBvbiB0aGUgZnVuY3Rpb24gd2lsbCB0cmlnZ2VyCisrIyBubyBtYXR0ZXIg dmlhIHdoaWNoIGVudHJ5IHBvaW50IHRoZSBmdW5jdGlvbiBpcyBlbnRlcmVkLCBhIHBsYXRmb3Jt CisrIyBtYXkgcHJvdmlkZSB0aGUgc2tpcF9lbnRyeXBvaW50IGNhbGxiYWNrLiAgSXQgaXMgY2Fs bGVkIHdpdGggSVAgc2V0CisrIyB0byB0aGUgbWFpbiBlbnRyeSBwb2ludCBvZiBhIGZ1bmN0aW9u IChhcyBkZXRlcm1pbmVkIGJ5IHRoZSBzeW1ib2wgdGFibGUpLAorKyMgYW5kIHNob3VsZCByZXR1 cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIGlubmVybW9zdCBlbnRyeSBwb2ludCwgd2hlcmUgdGhlCisr IyBhY3R1YWwgYnJlYWtwb2ludCBuZWVkcyB0byBiZSBzZXQuICBOb3RlIHRoYXQgc2tpcF9lbnRy eXBvaW50IGlzIHVzZWQKKysjIGJ5IEdEQiBjb21tb24gY29kZSBldmVuIHdoZW4gZGVidWdnaW5n IG9wdGltaXplZCBjb2RlLCB3aGVyZSBza2lwX3Byb2xvZ3VlCisrIyBpcyBub3QgdXNlZC4KKytN OkNPUkVfQUREUjpza2lwX2VudHJ5cG9pbnQ6Q09SRV9BRERSIGlwOmlwCisrCisgZjppbnQ6aW5u ZXJfdGhhbjpDT1JFX0FERFIgbGhzLCBDT1JFX0FERFIgcmhzOmxocywgcmhzOjA6MAorIG06Y29u c3QgZ2RiX2J5dGUgKjpicmVha3BvaW50X2Zyb21fcGM6Q09SRV9BRERSICpwY3B0ciwgaW50ICps ZW5wdHI6cGNwdHIsIGxlbnB0cjo6MDoKKyAjIFJldHVybiB0aGUgYWRqdXN0ZWQgYWRkcmVzcyBh bmQga2luZCB0byB1c2UgZm9yIFowL1oxIHBhY2tldHMuCistLS0gYS9nZGIvaW5mcnVuLmMKKysr KyBiL2dkYi9pbmZydW4uYworQEAgLTMxNTksNiArMzE1OSwxMCBAQCBmaWxsX2luX3N0b3BfZnVu YyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICAgZWNzLT5zdG9wX2Z1bmNfc3RhcnQK KyAJKz0gZ2RiYXJjaF9kZXByZWNhdGVkX2Z1bmN0aW9uX3N0YXJ0X29mZnNldCAoZ2RiYXJjaCk7 CisgCisrICAgICAgaWYgKGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3AgKGdkYmFyY2gpKQorKwll Y3MtPnN0b3BfZnVuY19zdGFydCA9IGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChnZGJhcmNoLAor KwkJCQkJCQllY3MtPnN0b3BfZnVuY19zdGFydCk7CisrCisgICAgICAgZWNzLT5zdG9wX2Z1bmNf ZmlsbGVkX2luID0gMTsKKyAgICAgfQorIH0KKy0tLSBhL2dkYi9wcGMtbGludXgtdGRlcC5jCisr KysgYi9nZGIvcHBjLWxpbnV4LXRkZXAuYworQEAgLTQ0LDYgKzQ0LDcgQEAKKyAjaW5jbHVkZSAi b2JzZXJ2ZXIuaCIKKyAjaW5jbHVkZSAiYXV4di5oIgorICNpbmNsdWRlICJlbGYvY29tbW9uLmgi CisrI2luY2x1ZGUgImVsZi9wcGM2NC5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisgI2lu Y2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVkZSAic3B1LXRkZXAuaCIKK0BAIC04NzYsNiAr ODc3LDU1IEBAIHBwY19saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorICAgICB9CisgfQorIAorKworKy8qIEltcGxlbWVudGF0aW9uIG9mIGBnZGJh cmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCcsIGFzIGRlZmluZWQgaW4KKysgICBnZGJhcmNo LmguICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHVzZWQgZm9yIHRoZSBFTEZ2MiBBQkkgb25seS4g ICovCisrCisrc3RhdGljIHZvaWQKKytwcGNfZWxmdjJfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFs IChhc3ltYm9sICpzeW0sIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSkKKyt7CisrICBlbGZf c3ltYm9sX3R5cGUgKmVsZl9zeW0gPSAoZWxmX3N5bWJvbF90eXBlICopc3ltOworKworKyAgLyog SWYgdGhlIHN5bWJvbCBpcyBtYXJrZWQgYXMgaGF2aW5nIGEgbG9jYWwgZW50cnkgcG9pbnQsIHNl dCBhIHRhcmdldAorKyAgICAgZmxhZyBpbiB0aGUgbXN5bWJvbC4gIFdlIGN1cnJlbnRseSBvbmx5 IHN1cHBvcnQgbG9jYWwgZW50cnkgcG9pbnQKKysgICAgIG9mZnNldHMgb2YgOCBieXRlcywgd2hp Y2ggaXMgdGhlIG9ubHkgZW50cnkgcG9pbnQgb2Zmc2V0IGV2ZXIgdXNlZAorKyAgICAgYnkgY3Vy cmVudCBjb21waWxlcnMuICBJZi93aGVuIG90aGVyIG9mZnNldHMgYXJlIGV2ZXIgdXNlZCwgd2Ug d2lsbAorKyAgICAgaGF2ZSB0byB1c2UgYWRkaXRpb25hbCB0YXJnZXQgZmxhZyBiaXRzIHRvIHN0 b3JlIHRoZW0uICAqLworKyAgc3dpdGNoIChQUEM2NF9MT0NBTF9FTlRSWV9PRkZTRVQgKGVsZl9z eW0tPmludGVybmFsX2VsZl9zeW0uc3Rfb3RoZXIpKQorKyAgICB7CisrICAgIGRlZmF1bHQ6Cisr ICAgICAgYnJlYWs7CisrICAgIGNhc2UgODoKKysgICAgICBNU1lNQk9MX1RBUkdFVF9GTEFHXzEg KG1zeW0pID0gMTsKKysgICAgICBicmVhazsKKysgICAgfQorK30KKysKKysvKiBJbXBsZW1lbnRh dGlvbiBvZiBgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQnLCBhcyBkZWZpbmVkIGluCisrICAgZ2Ri YXJjaC5oLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGZvciB0aGUgRUxGdjIgQUJJIG9u bHkuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIKKytwcGNfZWxmdjJfc2tpcF9lbnRyeXBvaW50 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQorK3sKKysgIHN0cnVjdCBi b3VuZF9taW5pbWFsX3N5bWJvbCBmdW47CisrICBpbnQgbG9jYWxfZW50cnlfb2Zmc2V0ID0gMDsK KysKKysgIGZ1biA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMpOworKyAgaWYgKGZ1 bi5taW5zeW0gPT0gTlVMTCkKKysgICAgcmV0dXJuIHBjOworKworKyAgLyogU2VlIHBwY19lbGZ2 Ml9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwgZm9yIGhvdyBsb2NhbCBlbnRyeSBwb2ludAorKyAg ICAgb2Zmc2V0IHZhbHVlcyBhcmUgZW5jb2RlZC4gICovCisrICBpZiAoTVNZTUJPTF9UQVJHRVRf RkxBR18xIChmdW4ubWluc3ltKSkKKysgICAgbG9jYWxfZW50cnlfb2Zmc2V0ID0gODsKKysKKysg IGlmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAoZnVuLm1pbnN5bSkgPD0gcGMKKysgICAgICAmJiBw YyA8IFNZTUJPTF9WQUxVRV9BRERSRVNTIChmdW4ubWluc3ltKSArIGxvY2FsX2VudHJ5X29mZnNl dCkKKysgICAgcmV0dXJuIFNZTUJPTF9WQUxVRV9BRERSRVNTIChmdW4ubWluc3ltKSArIGxvY2Fs X2VudHJ5X29mZnNldDsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisgLyogSW1wbGVtZW50YXRp b24gb2YgYGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCcsIGFzIGRlZmluZWQgaW4KKyAg ICBnZGJhcmNoLmguICAqLworIAorQEAgLTEzNDksNiArMTM5OSwxMyBAQCBwcGNfbGludXhfaW5p dF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKKyAJICBzZXRfZ2RiYXJjaF9lbGZfbWFr ZV9tc3ltYm9sX3NwZWNpYWwKKyAJICAgIChnZGJhcmNoLCBwcGM2NF9lbGZfbWFrZV9tc3ltYm9s X3NwZWNpYWwpOworIAl9CisrICAgICAgZWxzZQorKwl7CisrCSAgc2V0X2dkYmFyY2hfZWxmX21h a2VfbXN5bWJvbF9zcGVjaWFsCisrCSAgICAoZ2RiYXJjaCwgcHBjX2VsZnYyX2VsZl9tYWtlX21z eW1ib2xfc3BlY2lhbCk7CisrCisrCSAgc2V0X2dkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChnZGJh cmNoLCBwcGNfZWxmdjJfc2tpcF9lbnRyeXBvaW50KTsKKysJfQorIAorICAgICAgIC8qIFNoYXJl ZCBsaWJyYXJ5IGhhbmRsaW5nLiAgKi8KKyAgICAgICBzZXRfZ2RiYXJjaF9za2lwX3RyYW1wb2xp bmVfY29kZSAoZ2RiYXJjaCwgcHBjNjRfc2tpcF90cmFtcG9saW5lX2NvZGUpOworLS0tIGEvZ2Ri L3N5bXRhYi5jCisrKysgYi9nZGIvc3ltdGFiLmMKK0BAIC0yOTUwLDYgKzI5NTAsOCBAQCBza2lw X3Byb2xvZ3VlX3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQorIAorICAgICAgIC8q IFNraXAgImZpcnN0IGxpbmUiIG9mIGZ1bmN0aW9uICh3aGljaCBpcyBhY3R1YWxseSBpdHMgcHJv bG9ndWUpLiAgKi8KKyAgICAgICBwYyArPSBnZGJhcmNoX2RlcHJlY2F0ZWRfZnVuY3Rpb25fc3Rh cnRfb2Zmc2V0IChnZGJhcmNoKTsKKysgICAgICBpZiAoZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnRf cCAoZ2RiYXJjaCkpCisrICAgICAgICBwYyA9IGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50IChnZGJh cmNoLCBwYyk7CisgICAgICAgaWYgKHNraXApCisgCXBjID0gZ2RiYXJjaF9za2lwX3Byb2xvZ3Vl IChnZGJhcmNoLCBwYyk7CisgCisjIyMgYS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworIyMjIGIv Z2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTIgQEAKKyAyMDE0LTAyLTA0ICBV bHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CisgCisrCSogZ2RiLmJhc2Uvc2ln YnB0LmV4cDogRG8gbm90IHVzZSAiKiIgd2hlbiBzZXR0aW5nIGJyZWFrcG9pbnQKKysJb24gYSBm dW5jdGlvbi4KKysJKiBnZGIuYmFzZS9zdGVwLWJ0LmM6IENhbGwgaGVsbG8gdmlhIGZ1bmN0aW9u IHBvaW50ZXIgdG8gbWFrZQorKwlzdXJlIGl0cyBmaXJzdCBpbnN0cnVjdGlvbiBpcyBleGVjdXRl ZCBvbiBwb3dlcnBjNjRsZS1saW51eC4KKysKKysyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAg PHV3ZWlnYW5kQGRlLmlibS5jb20+CisrCisgCSogZ2RiLmFyY2gvcG93ZXJwYy1kMTI4LXJlZ3Mu ZXhwOiBFbmFibGUgb24gcG93ZXJwYzY0Ki0qLgorIAorIDIwMTQtMDItMDQgIFVscmljaCBXZWln YW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv c2lnYnB0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdicHQuZXhwCitAQCAt NzYsNyArNzYsNyBAQCBnZGJfdGVzdCAiYnJlYWsga2VlcGVyIgorIHNldCBib3dsZXJfYWRkcnMg Ym93bGVyCisgc2V0IHNlZ3ZfYWRkciBub25lCisgZ2RiX3Rlc3Qge2Rpc3BsYXkvaSAkcGN9Cist Z2RiX3Rlc3QgImFkdmFuY2UgKmJvd2xlciIgImJvd2xlci4qIiAiYWR2YW5jZSB0byB0aGUgYm93 bGVyIgorK2dkYl90ZXN0ICJhZHZhbmNlIGJvd2xlciIgImJvd2xlci4qIiAiYWR2YW5jZSB0byB0 aGUgYm93bGVyIgorIHNldCB0ZXN0ICJzdGVwcGluZyB0byBmYXVsdCIKKyBzZXQgc2lnbmFtZSAi U0lHU0VHViIKKyBnZGJfdGVzdF9tdWx0aXBsZSAic3RlcGkiICIkdGVzdCIgeworLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGVwLWJ0LmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc3RlcC1idC5jCitAQCAtMjMsMTAgKzIzLDE5IEBAIGhlbGxvICh2b2lkKQorICAgcHJpbnRm ICgiSGVsbG8gd29ybGQuXG4iKTsKKyB9CisgCisrLyogVGhlIHRlc3QgY2FzZSB1c2VzICJicmVh ayAqaGVsbG8iIHRvIG1ha2Ugc3VyZSB0byBzdGVwIGF0IHRoZSB2ZXJ5CisrICAgZmlyc3QgaW5z dHJ1Y3Rpb24gb2YgdGhlIGZ1bmN0aW9uLiAgVGhpcyBjYXVzZXMgYSBwcm9ibGVtIHJ1bm5pbmcK KysgICB0aGUgdGVzdCBvbiBwb3dlcnBjNjRsZS1saW51eCwgc2luY2UgdGhlIGZpcnN0IGluc3Ry dWN0aW9uIGJlbG9uZ3MKKysgICB0byB0aGUgZ2xvYmFsIGVudHJ5IHBvaW50IHByb2xvZ3VlLCB3 aGljaCBpcyBza2lwcGVkIHdoZW4gZG9pbmcgYQorKyAgIGxvY2FsIGRpcmVjdCBmdW5jdGlvbiBj YWxsLiAgVG8gbWFrZSBzdXJlIHRoYXQgZmlyc3QgaW5zdHJ1Y3Rpb24gaXMKKysgICBpbmRlZWQg YmVpbmcgZXhlY3V0ZWQgYW5kIHRoZSBicmVha3BvaW50IGhpdHMsIHdlIG1ha2Ugc3VyZSB0byBj YWxsCisrICAgdGhlIHJvdXRpbmUgdmlhIGFuIGluZGlyZWN0IGNhbGwuICAqLworK3ZvaWQgKCpw dHIpICh2b2lkKSA9IGhlbGxvOworKworIGludAorIG1haW4gKHZvaWQpCisgeworLSAgaGVsbG8g KCk7CisrICBwdHIgKCk7CisgCisgICByZXR1cm4gMDsKKyB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXVw c3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTE1b2YxNS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjFiZjY4Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gKQEAgLTAsMCArMSw5 MCBAQAorY29tbWl0IGJjOWE1NTI1M2VkNzEyMmNmZWVlOTBjZDIzZDk2NGY0NGM4YjBlNmEKK0F1 dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+CitEYXRlOiAg IFR1ZSBNYXIgMjUgMTU6Mzk6MzIgMjAxNCArMDEwMAorCisgICAgU3VwcG9ydCBnZGIuYXNtL2Fz bS1zb3VyY2UuZXhwIG9uIHBvd2VycGM2NGxlCisgICAgCisgICAgQWRkIG5ldyBwb3dlcnBjNjRs ZS5pbmMgZmlsZSBhcHByb3ByaWF0ZSBmb3IgdGhlIEVMRnYyIEFCSSBhbmQKKyAgICB1c2UgaXQg dG8gc3VwcG9ydCB0aGUgYXNtLXNvdXJjZS5leHAgdGVzdCBjYXNlIG9uIHBvd2VycGM2NGxlLgor ICAgIAorICAgIGdkYi90ZXN0c3VpdGUvCisgICAgMjAxNC0wMy0yNSAgVWxyaWNoIFdlaWdhbmQg IDx1d2VpZ2FuZEBkZS5pYm0uY29tPgorICAgIAorICAgIAkqIGdkYi5hc20vYXNtLXNvdXJjZS5l eHA6IEhhbmRsZSBwb3dlcnBjNjRsZS0qIHRhcmdldHMuCisgICAgCSogZ2RiLmFzbS9wb3dlcnBj NjRsZS5pbmM6IE5ldyBmaWxlLgorCisjIyMgYS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworIyMj IGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKKyMjIC0xLDMgKzEsOCBAQAorKzIwMTQtMDMtMjUg IFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KKysKKysJKiBnZGIuYXNtL2Fz bS1zb3VyY2UuZXhwOiBIYW5kbGUgcG93ZXJwYzY0bGUtKiB0YXJnZXRzLgorKwkqIGdkYi5hc20v cG93ZXJwYzY0bGUuaW5jOiBOZXcgZmlsZS4KKysKKyAyMDE0LTAzLTI1ICBQZWRybyBBbHZlcyAg PHBhbHZlc0ByZWRoYXQuY29tPgorIAkgICAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgor IAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKK0BAIC05Nyw2ICs5NywxMSBAQCBzd2l0 Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0XSB7CisgICAgICJtaXBzKi0qIiB7CisgICAgICAgICBzZXQg YXNtLWFyY2ggbWlwcworICAgICB9CisrICAgICJwb3dlcnBjNjRsZS0qIiB7CisrICAgICAgICBz ZXQgYXNtLWFyY2ggcG93ZXJwYzY0bGUKKysgICAgICAgIHNldCBhc20tZmxhZ3MgIi1hNjQgLUkk e3NyY2Rpcn0vJHtzdWJkaXJ9ICRvYmpfaW5jbHVkZSIKKysgICAgICAgIGFwcGVuZCBsaW5rLWZs YWdzICIgLW0gZWxmNjRscHBjIgorKyAgICB9CisgICAgICJwb3dlcnBjKi0qIiB7CisgICAgICAg ICBpZiB7IFtpc19scDY0X3RhcmdldF0gfSB7CisgICAgICAgICAgICAgc2V0IGFzbS1hcmNoIHBv d2VycGM2NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3Bvd2Vy cGM2NGxlLmluYworQEAgLTAsMCArMSw0NyBAQAorKwljb21tZW50ICJzdWJyb3V0aW5lIHByb2xv Z3VlIgorKwkubWFjcm8gZ2RiYXNtX2VudGVyCisrCXN0ZHUgMSwgLTMyKDEpCisrCW1mbHIgMAor KwlzdGQgMCwgNDgoMSkKKysJLmVuZG0KKysKKysJY29tbWVudCAic3Vicm91dGluZSBlcGlsb2d1 ZSIKKysJLm1hY3JvIGdkYmFzbV9sZWF2ZQorKwlsZCAwLCA0OCgxKQorKwltdGxyIDAKKysJbGQg MSwgMCgxKQorKwlibHIKKysJLmVuZG0KKysKKysJLm1hY3JvIGdkYmFzbV9jYWxsIHN1YnIKKysJ YmwgXHN1YnIKKysJbm9wCisrCS5lbmRtCisrCisrCS5tYWNybyBnZGJhc21fc2V2ZXJhbF9ub3Bz CisrCW5vcAorKwlub3AKKysJbm9wCisrCW5vcAorKwkuZW5kbQorKworKwljb21tZW50ICJleGl0 ICgwKSIKKysJLm1hY3JvIGdkYmFzbV9leGl0MAorKwljb21tZW50ICJzeXNfZXhpdCIKKysJbGkJ MCwgMQorKwlzYworKwkuZW5kbQorKworKwljb21tZW50ICJjcnQwIHN0YXJ0dXAiCisrCS5tYWNy byBnZGJhc21fc3RhcnR1cAorKwkuYWJpdmVyc2lvbiAyCisrCS5wMmFsaWduIDIKKysJLmVuZG0K KysKKysJY29tbWVudCAiRGVjbGFyZSBhIGRhdGEgdmFyaWFibGUiCisrCS5wdXJnZW0gZ2RiYXNt X2RhdGF2YXIKKysJLm1hY3JvIGdkYmFzbV9kYXRhdmFyIG5hbWUgdmFsdWUKKysJLnNlY3Rpb24J Ii5kYXRhIgorK1xuYW1lOgorKwkubG9uZyBcdmFsdWUKKysJLmVuZG0KCmRpZmYgLS1naXQgYS9n ZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDg2Y2ZhZGUuLmZiNDM4OTEgMTAwNjQ0Ci0tLSBhL2dk Yi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0zOSw3ICszOSw3IEBAIFZlcnNpb246IDcuNy4xCiAK ICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIs IHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8g c3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgot UmVsZWFzZTogMTAlez9kaXN0fQorUmVsZWFzZTogMTElez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2 MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGgg ZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWlu IGFuZCBHRkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC0yMzcsNiArMjM3LDIw IEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3QucGF0 Y2gKICMgQmFja3BvcnRlZCBmaXh1cHMgcG9zdCB0aGUgc291cmNlIHRhcmJhbGwuCiAjWGRyb3A6 IEp1c3QgYmFja3BvcnRzLgogUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAorUGF0Y2g4Njg6 IGdkYi11cHN0cmVhbS1wcGM2NGxlMDJvZjE1LnBhdGNoCitQYXRjaDg2OTogZ2RiLXVwc3RyZWFt LXBwYzY0bGUwM29mMTUucGF0Y2gKK1BhdGNoODcwOiBnZGItdXBzdHJlYW0tcHBjNjRsZTA0b2Yx NS5wYXRjaAorUGF0Y2g4NzE6IGdkYi11cHN0cmVhbS1wcGM2NGxlMDVvZjE1LnBhdGNoCitQYXRj aDg3MjogZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2gKK1BhdGNoODczOiBnZGItdXBz dHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaAorUGF0Y2g4NzQ6IGdkYi11cHN0cmVhbS1wcGM2NGxl MDhvZjE1LnBhdGNoCitQYXRjaDg3NTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUwOW9mMTUucGF0Y2gK K1BhdGNoODc2OiBnZGItdXBzdHJlYW0tcHBjNjRsZTEwb2YxNS5wYXRjaAorUGF0Y2g4Nzc6IGdk Yi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBhdGNoCitQYXRjaDg3ODogZ2RiLXVwc3RyZWFtLXBw YzY0bGUxMm9mMTUucGF0Y2gKK1BhdGNoODc5OiBnZGItdXBzdHJlYW0tcHBjNjRsZTEzb2YxNS5w YXRjaAorUGF0Y2g4ODA6IGdkYi11cHN0cmVhbS1wcGM2NGxlMTRvZjE1LnBhdGNoCitQYXRjaDg4 MTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gKIAogIyBUZXN0Y2FzZSBmb3IgUFBD IFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5IChCWiAyMzAwMDApLgogIz1mZWRv cmF0ZXN0K3BwYwpAQCAtNjA5LDggKzYyMywxMSBAQCBCdWlsZFJlcXVpcmVzOiBnY2MgZ2NjLWMr KyBnY2MtZ2ZvcnRyYW4gZ2NjLW9iamMKIEJ1aWxkUmVxdWlyZXM6IGdjYy1qYXZhIGxpYmdjaiV7 Yml0c19sb2NhbH0gbGliZ2NqJXtiaXRzX290aGVyfQogJWVuZGlmCiAlaWYgMCV7IT9yaGVsOjF9 IHx8IDAlez9yaGVsfSA+IDYKKyMgRmVkb3JhIHBwYzY0bGUgZG9lcyBub3QgeWV0IGhhdmUgZ2Nj LWdvIGJ1aWx0LgorJWlmbmFyY2ggcHBjNjRsZQogQnVpbGRSZXF1aXJlczogZ2NjLWdvCiAlZW5k aWYKKyVlbmRpZgogIyBhcmNoZXItc2VyZ2lvZGotc3RhcC1wYXRjaC1zcGxpdAogQnVpbGRSZXF1 aXJlczogc3lzdGVtdGFwLXNkdC1kZXZlbAogIyBDb3BpZWQgZnJvbSBwcmVsaW5rLTAuNC4yLTMu ZmMxMy4KQEAgLTYyMSw4ICs2MzgsOCBAQCBCdWlsZFJlcXVpcmVzOiBwcmVsaW5rCiAlZW5kaWYK ICVlbmRpZgogJWlmIDAleyE/cmhlbDoxfQotIyBGZWRvcmEgYXJtIGRvZXMgbm90IHlldCBoYXZl IGZwYyBidWlsdC4KLSVpZm5hcmNoICV7YXJtfQorIyBGZWRvcmEgYXJtK3BwYzY0bGUgZG8gbm90 IHlldCBoYXZlIGZwYyBidWlsdC4KKyVpZm5hcmNoICV7YXJtfSBwcGM2NGxlCiBCdWlsZFJlcXVp cmVzOiBmcGMKICVlbmRpZgogJWVuZGlmCkBAIC02MzksOCArNjU2LDExIEBAIEJ1aWxkUmVxdWly ZXM6IGxpYmdjYyV7Yml0c19sb2NhbH0gbGliZ2NjJXtiaXRzX290aGVyfQogIyBsaWJzdGRjKyst ZGV2ZWwgb2YgbWF0Y2hpbmcgYml0cyBpcyByZXF1aXJlZCBvbmx5IGZvciBnKysgLXN0YXRpYy4K IEJ1aWxkUmVxdWlyZXM6IGxpYnN0ZGMrKyV7Yml0c19sb2NhbH0gbGlic3RkYysrJXtiaXRzX290 aGVyfQogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CisjIEZlZG9yYSBwcGM2NGxl IGRvZXMgbm90IHlldCBoYXZlIGdjYy1nbyBidWlsdC4KKyVpZm5hcmNoIHBwYzY0bGUKIEJ1aWxk UmVxdWlyZXM6IGxpYmdvLWRldmVsJXtiaXRzX2xvY2FsfSBsaWJnby1kZXZlbCV7Yml0c19vdGhl cn0KICVlbmRpZgorJWVuZGlmCiAlaWYgMCV7IT9lbDU6MX0KIEJ1aWxkUmVxdWlyZXM6IGdsaWJj LXN0YXRpYyV7Yml0c19sb2NhbH0KICVlbmRpZgpAQCAtNzM2LDYgKzc1NiwyMCBAQCBmaW5kIC1u YW1lICIqLmluZm8qInx4YXJncyBybSAtZgogCiAlcGF0Y2gzNDkgLXAxCiAlcGF0Y2gyMzIgLXAx CislcGF0Y2g4NjggLXAxCislcGF0Y2g4NjkgLXAxCislcGF0Y2g4NzAgLXAxCislcGF0Y2g4NzEg LXAxCislcGF0Y2g4NzIgLXAxCislcGF0Y2g4NzMgLXAxCislcGF0Y2g4NzQgLXAxCislcGF0Y2g4 NzUgLXAxCislcGF0Y2g4NzYgLXAxCislcGF0Y2g4NzcgLXAxCislcGF0Y2g4NzggLXAxCislcGF0 Y2g4NzkgLXAxCislcGF0Y2g4ODAgLXAxCislcGF0Y2g4ODEgLXAxCiAlcGF0Y2gxIC1wMQogCiAl cGF0Y2gxMDUgLXAxCkBAIC05MjEsNyArOTU1LDcgQEAgZXhwb3J0IExERkxBR1M9IiV7P19fZ2xv YmFsX2xkZmxhZ3N9ICV7P193aXRoX2FzYW46LWZzYW5pdGl6ZT1hZGRyZXNzfSIKIAktLXdpdGgt c3lzdGVtLWdkYmluaXQ9JXtfc3lzY29uZmRpcn0vZ2RiaW5pdAkJXAogCS0td2l0aC1nZGItZGF0 YWRpcj0le19kYXRhZGlyfS9nZGIJCQlcCiAJLS1lbmFibGUtZ2RiLWJ1aWxkLXdhcm5pbmdzPSwt V25vLXVudXNlZAkJXAotJWlmbmFyY2ggJXtpeDg2fSBhbHBoYSBwcGMgczM5MCBzMzkweCB4ODZf NjQgcHBjNjQgc3BhcmMgc3BhcmN2OSBzcGFyYzY0CislaWZuYXJjaCAle2l4ODZ9IGFscGhhIHBw YyBzMzkwIHMzOTB4IHg4Nl82NCBwcGM2NCBwcGM2NGxlIHNwYXJjIHNwYXJjdjkgc3BhcmM2NAog CS0tZGlzYWJsZS13ZXJyb3IJCQkJCVwKICVlbHNlCiAJLS1lbmFibGUtd2Vycm9yCQkJCQkJXApA QCAtMTM3MCw3ICsxNDA0LDEwIEBAIGZpCiAlZW5kaWYgIyAwJXshP2VsNToxfSB8fCAiJXtfdGFy Z2V0X2NwdX0iID09ICJub2FyY2giCiAKICVjaGFuZ2Vsb2cKLSogVHVlIE1heSAgNiAyMDE0IFNl cmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4gLSA3LjcuMS0xMC5mYzIx CisqIEZyaSBNYXkgIDkgMjAxNCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4gLSA3LjcuMS0xMS5mYzIxCistIFtwcGMqXSBJbXBvcnQgcHBjNjRsZSBzdXBwb3J0IChC WiAxMDk2MzAzLCBVbHJpY2ggV2VpZ2FuZCkuCisKKyogVHVlIE1heSAgNiAyMDE0IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNy4xLTEwLmZjMjEKIC0gUmVi YXNlIHRvIEZTRiBHREIgNy43LjEuCiAKICogTW9uIE1heSAgNSAyMDE0IFNlcmdpbyBEdXJpZ2Fu IEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4gLSA3LjctOS5mYzIxCg==