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: Bastien Nocera To: git-commits@fedoraproject.org Subject: [rpms/bluez] f45: Rebase to latest upstream HEAD (Closes: #2528181, #2525293) Date: Wed, 09 Sep 2026 12:41:14 GMT Message-ID: <178895767452.1.2186442055894168701.rpms-bluez-03d2e58c5933@fedoraproject.org> List-ID: X-Git-Repo: rpms/bluez X-Git-Branch: f45 X-Git-Rev: 03d2e58c593374e08a492c7ca3a5a7858d30d461 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvYmx1ZXoKQnJhbmNo IDogZjQ1CkNvbW1pdCA6IDAzZDJlNThjNTkzMzc0ZTA4YTQ5MmM3Y2EzYTVhNzg1OGQzMGQ0NjEK QXV0aG9yIDogQmFzdGllbiBOb2NlcmEgPGhhZGVzc0BoYWRlc3MubmV0PgpEYXRlICAgOiAyMDI2 LTA5LTA5VDE0OjQwOjU5KzAyOjAwClN0YXRzICA6ICsxNC8tNTA1NyBpbiA2IGZpbGUocykKVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9ibHVlei9jLzAzZDJlNThj NTkzMzc0ZTA4YTQ5MmM3Y2EzYTVhNzg1OGQzMGQ0NjE/YnJhbmNoPWY0NQoKTG9nOgpSZWJhc2Ug dG8gbGF0ZXN0IHVwc3RyZWFtIEhFQUQgKENsb3NlczogIzI1MjgxODEsICMyNTI1MjkzKQoKLS0t CmRpZmYgLS1naXQgYS81Ljg3LWJ1Zy1maXhlcy0xLnBhdGNoIGIvNS44Ny1idWctZml4ZXMtMS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkxNTc4My4uMDAwMDAwMAotLS0g YS81Ljg3LWJ1Zy1maXhlcy0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjM3NyArMCwwIEBA Ci1Gcm9tIDViYzZhYTc5ZTUzNzAwZDU2ZmMxZjlmOTM2NDU3M2JhNGM3OGRhNjUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5k ZW50ekBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIgSnVsIDIwMjYgMTE6NDM6NTIgLTA0MDAKLVN1 YmplY3Q6IFtQQVRDSCAwMS8xOV0gYWRhcHRlcjogRml4IGNyYXNoIG9uIGRldl9kaXNjb25uZWN0 ZWQKLQotQ29tbWl0IDVkODM2ZjFjNjk3YyAoImFkYXB0ZXI6IEZpeCBmYWlsZWQgYm9uZGluZyBh dHRlbXB0IGFmdGVyIExFCi1saW5rIGRpc2Nvbm5lY3Rpb24iKSBpbnRyb2R1Y2VzIGEgcmVncmVz c2lvbiBzaW5jZSBpdCBhdHRlbXB0cyB0bwotY2FsbCBkZXZpY2VfaXNfY29ubmVjdGVkIGFmdGVy IGFkYXB0ZXJfcmVtb3ZlX2Nvbm5lY3Rpb24gd2hpY2ggbWF5Ci1mcmVlIHRoZSBkZXZpY2UgY2F1 c2luZyB0aGUgZm9sbG93aW5nIGJhY2t0cmFjZToKLQotICAgICMwIDB4NWNkNmUzODQyNjJmIGlu IGJ0ZF9kZXZpY2VfYmVhcmVyX2lzX2Nvbm5lY3RlZCBzcmMvZGV2aWNlLmM6Mzc1NAotICAgICMx IDB4NWNkNmUzODQyNjZmIGluIGJ0ZF9kZXZpY2VfaXNfY29ubmVjdGVkIHNyYy9kZXZpY2UuYzoz NzQ1Ci0gICAgIzIgMHg1Y2Q2ZTM3Zjg2MTQgaW4gZGV2X2Rpc2Nvbm5lY3RlZCBzcmMvYWRhcHRl ci5jOjg2MjYKLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlei9ibHVlei9pc3N1ZXMv MjIyMQotLS0tCi0gc3JjL2FkYXB0ZXIuYyB8IDI1ICsrKysrKysrKysrKysrKysrKysrKy0tLS0K LSAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL3NyYy9hZGFwdGVyLmMgYi9zcmMvYWRhcHRlci5jCi1pbmRleCA1MzhmNjNlMGEx NTMuLjIxMDIyNTI0M2YwMCAxMDA2NDQKLS0tLSBhL3NyYy9hZGFwdGVyLmMKLSsrKyBiL3NyYy9h ZGFwdGVyLmMKLUBAIC03NjEyLDEyICs3NjEyLDE2IEBAIHN0cnVjdCBhZ2VudCAqYWRhcHRlcl9n ZXRfYWdlbnQoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyKQotIHN0YXRpYyB2b2lkIGFkYXB0 ZXJfcmVtb3ZlX2Nvbm5lY3Rpb24oc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLAotIAkJCQkJ CXN0cnVjdCBidGRfZGV2aWNlICpkZXZpY2UsCi0gCQkJCQkJdWludDhfdCBiZGFkZHJfdHlwZSwK LS0JCQkJCQl1aW50OF90IHJlYXNvbikKLSsJCQkJCQl1aW50OF90IHJlYXNvbiwKLSsJCQkJCQli b29sICpyZW1vdmVkKQotIHsKLSAJYm9vbCByZW1vdmVfZGV2aWNlID0gZmFsc2U7Ci0gCi0gCURC RygiIik7Ci0gCi0rCWlmIChyZW1vdmVkKQotKwkJKnJlbW92ZWQgPSBmYWxzZTsKLSsKLSAJaWYg KCFnX3NsaXN0X2ZpbmQoYWRhcHRlci0+Y29ubmVjdGlvbnMsIGRldmljZSkpIHsKLSAJCWJ0ZF9l cnJvcihhZGFwdGVyLT5kZXZfaWQsICJObyBtYXRjaGluZyBjb25uZWN0aW9uIGZvciBkZXZpY2Ui KTsKLSAJCXJldHVybjsKLUBAIC03NjM4LDYgKzc2NDIsOSBAQCBzdGF0aWMgdm9pZCBhZGFwdGVy X3JlbW92ZV9jb25uZWN0aW9uKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwKLSAKLSAJCURC RygiUmVtb3ZpbmcgdGVtcG9yYXJ5IGRldmljZSAlcyIsIHBhdGgpOwotIAkJYnRkX2FkYXB0ZXJf cmVtb3ZlX2RldmljZShhZGFwdGVyLCBkZXZpY2UpOwotKwotKwkJaWYgKHJlbW92ZWQpCi0rCQkJ KnJlbW92ZWQgPSB0cnVlOwotIAl9Ci0gfQotIAotQEAgLTc2NjUsMTAgKzc2NzIsMTAgQEAgc3Rh dGljIHZvaWQgYWRhcHRlcl9zdG9wKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlcikKLSAJCXVp bnQ4X3QgYWRkcl90eXBlID0gYnRkX2RldmljZV9nZXRfYmRhZGRyX3R5cGUoZGV2aWNlKTsKLSAK LSAJCWFkYXB0ZXJfcmVtb3ZlX2Nvbm5lY3Rpb24oYWRhcHRlciwgZGV2aWNlLCBCREFERFJfQlJF RFIsCi0tCQkJCQkJTUdNVF9ERVZfRElTQ09OTl9VTktOT1dOKTsKLSsJCQkJCQlNR01UX0RFVl9E SVNDT05OX1VOS05PV04sIE5VTEwpOwotIAkJaWYgKGFkZHJfdHlwZSAhPSBCREFERFJfQlJFRFIp Ci0gCQkJYWRhcHRlcl9yZW1vdmVfY29ubmVjdGlvbihhZGFwdGVyLCBkZXZpY2UsIGFkZHJfdHlw ZSwKLS0JCQkJCQlNR01UX0RFVl9ESVNDT05OX1VOS05PV04pOwotKwkJCQkJCU1HTVRfREVWX0RJ U0NPTk5fVU5LTk9XTiwgTlVMTCk7Ci0gCX0KLSAKLSAJZ19kYnVzX2VtaXRfcHJvcGVydHlfY2hh bmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgsCi1AQCAtODYxOCw3ICs4NjI1LDE3IEBAIHN0 YXRpYyB2b2lkIGRldl9kaXNjb25uZWN0ZWQoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLAot IAotIAlkZXZpY2UgPSBidGRfYWRhcHRlcl9maW5kX2RldmljZShhZGFwdGVyLCAmYWRkci0+YmRh ZGRyLCBhZGRyLT50eXBlKTsKLSAJaWYgKGRldmljZSkgewotLQkJYWRhcHRlcl9yZW1vdmVfY29u bmVjdGlvbihhZGFwdGVyLCBkZXZpY2UsIGFkZHItPnR5cGUsIHJlYXNvbik7Ci0rCQlib29sIHJl bW92ZWQ7Ci0rCi0rCQlhZGFwdGVyX3JlbW92ZV9jb25uZWN0aW9uKGFkYXB0ZXIsIGRldmljZSwg YWRkci0+dHlwZSwgcmVhc29uLAotKwkJCQkJCSZyZW1vdmVkKTsKLSsJCS8qIE5vIG5lZWQgdG8g Y29udGludWUgaWYgZGV2aWNlIHdhcyByZW1vdmVkIGZyb20gdGhlIGFkYXB0ZXIsCi0rCQkgKiBh cyBpdCB3aWxsIGJlIGZyZWVkIGFuZCB0aGUgZGlzY29ubmVjdCBub3RpZnkgd2lsbCBiZSBjYWxs ZWQKLSsJCSAqIGluIHRoZSBkZXZpY2UgZnJlZSBjYWxsYmFjay4KLSsJCSAqLwotKwkJaWYgKHJl bW92ZWQpCi0rCQkJcmV0dXJuOwotKwotIAkJZGlzY29ubmVjdF9ub3RpZnkoZGV2aWNlLCByZWFz b24pOwotIAl9Ci0gCi0tLSAKLTIuNTQuMAotCi0KLUZyb20gYjg0YWE4OTQ5MjEwMzdlMWIxZGUw MGQyODJkYjJlZTI3YTRjZTYzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXog QXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IE1vbiwg NiBKdWwgMjAyNiAxMDo1OToyOCAtMDQwMAotU3ViamVjdDogW1BBVENIIDAyLzE5XSBsMnRlc3Q6 IEZpeCBjYWxsaW5nIGdldHNvY2tvcHQoQlRfUEhZKQotCi1nZXRzb2Nrb3B0KEJUX1BIWSkgZXhw ZWN0ZXMgYSAzMiBiaXRzIGFyZ3VtZW50IG5vdCBhCi1zaXplb2Yoc3RydWN0IHNvY2thZGRyX2wy KS4KLS0tLQotIHRvb2xzL2wydGVzdC5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2wydGVzdC5j IGIvdG9vbHMvbDJ0ZXN0LmMKLWluZGV4IGFhMDVmNTI0N2M1ZS4uMDhkMjI2OTkzNmI5IDEwMDY0 NAotLS0tIGEvdG9vbHMvbDJ0ZXN0LmMKLSsrKyBiL3Rvb2xzL2wydGVzdC5jCi1AQCAtMzU4LDcg KzM1OCw4IEBAIHN0YXRpYyBpbnQgcHJpbnRfaW5mbyhpbnQgc2ssIHN0cnVjdCBsMmNhcF9vcHRp b25zICpvcHRzKQotIAlzdHJ1Y3Qgc29ja2FkZHJfbDIgYWRkcjsKLSAJc29ja2xlbl90IG9wdGxl bjsKLSAJc3RydWN0IGwyY2FwX2Nvbm5pbmZvIGNvbm47Ci0tCWludCBwcmlvLCBwaHk7Ci0rCWlu dCBwcmlvOwotKwl1aW50MzJfdCBwaHk7Ci0gCWNoYXIgYmFbMThdOwotIAotIAkvKiBHZXQgY29u bmVjdGlvbiBpbmZvcm1hdGlvbiAqLwotQEAgLTQxNCw2ICs0MTUsOCBAQCBzdGF0aWMgaW50IHBy aW50X2luZm8oaW50IHNrLCBzdHJ1Y3QgbDJjYXBfb3B0aW9ucyAqb3B0cykKLSAJCWNvbm4uZGV2 X2NsYXNzWzBdLCBwcmlvLCByY3ZidWYpOwotIAotIAotKwlvcHRsZW4gPSBzaXplb2YocGh5KTsK LSsKLSAJaWYgKCFnZXRzb2Nrb3B0KHNrLCBTT0xfQkxVRVRPT1RILCBCVF9QSFksICZwaHksICZv cHRsZW4pKSB7Ci0gCQlzeXNsb2coTE9HX0lORk8sICJTdXBwb3J0ZWQgUEhZOiAweCUwOHgiLCBw aHkpOwotIAkJcHJpbnRfYml0ZmllbGQoMiwgcGh5LCBwaHlfdGFibGUpOwotLS0gCi0yLjU0LjAK LQotCi1Gcm9tIDNmMjgzYzhlMGFiM2JhZDE3ZWU4YzEzZmEwZGNmMjUxYTE2ZTRlMjUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiByYWdoYXZlbmRyYSA8cmFnaGF2ZW5kcmEucmFvQGNv bGxhYm9yYS5jb20+Ci1EYXRlOiBUaHUsIDIgSnVsIDIwMjYgMTg6Mzk6MDQgKzA1MzAKLVN1Ympl Y3Q6IFtQQVRDSCAwMy8xOV0gc2hhcmVkL2JhcDogVmFsaWRhdGUgY29kZWMgY29uZmlndXJhdGlv biBwYXJhbWV0ZXJzCi0KLVRoaXMgaXMgcmVxdWlyZWQgZm9yIFBUUyB0ZXN0IEFTQ1MvU1IvU1BF L0JJLTA3LUMKLS0tLQotIHNyYy9zaGFyZWQvYmFwLmMgfCAyMiArKysrKysrKysrKysrKysrKysr KysrCi0gMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Ny Yy9zaGFyZWQvYmFwLmMgYi9zcmMvc2hhcmVkL2JhcC5jCi1pbmRleCAxZjYxMjI3ZjgyYTcuLjZi YzA0NGE2Mzc1OCAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvYmFwLmMKLSsrKyBiL3NyYy9zaGFy ZWQvYmFwLmMKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1ZGUgInNyYy9zaGFyZWQvZ2F0dC1j bGllbnQuaCIKLSAjaW5jbHVkZSAic3JjL3NoYXJlZC9iYXAuaCIKLSAjaW5jbHVkZSAic3JjL3No YXJlZC9hc2NzLmgiCi0rI2luY2x1ZGUgInNyYy9zaGFyZWQvbGMzLmgiCi0gI2luY2x1ZGUgInNy Yy9zaGFyZWQvYmFwLWRlYnVnLmgiCi0gCi0gLyogTWF4aW11bSBudW1iZXIgb2YgQVNFKHMpICov Ci1AQCAtMzE1Nyw2ICszMTU4LDcgQEAgc3RhdGljIHVpbnQ4X3QgZXBfY29uZmlnKHN0cnVjdCBi dF9iYXBfZW5kcG9pbnQgKmVwLCBzdHJ1Y3QgYnRfYmFwICpiYXAsCi0gCXN0cnVjdCBpb3ZlYyBj YzsKLSAJY29uc3Qgc3RydWN0IHF1ZXVlX2VudHJ5ICplOwotIAlzdHJ1Y3QgYnRfYmFwX2NvZGVj IGNvZGVjOwotKwl1aW50OF90ICpsdHY7Ci0gCi0gCURCRyhiYXAsICJlcCAlcCBpZCAweCUwMngg ZGlyIDB4JTAyeCIsIGVwLCBlcC0+aWQsIGVwLT5kaXIpOwotIAotQEAgLTMxOTAsNiArMzE5Miwx OSBAQCBzdGF0aWMgdWludDhfdCBlcF9jb25maWcoc3RydWN0IGJ0X2JhcF9lbmRwb2ludCAqZXAs IHN0cnVjdCBidF9iYXAgKmJhcCwKLSAJCXJldHVybiAwOwotIAl9Ci0gCi0rCWx0diA9IGNjLmlv dl9iYXNlOwotKwotKwlpZiAocmVxLT5jb2RlYy5pZCA9PSBMQzNfSUQgJiYgY2MuaW92X2xlbiA9 PSAzICYmCi0rCQkJbHR2WzBdID09IDB4MDIgJiYKLSsJCQlsdHZbMV0gPT0gTEMzX0NPTkZJR19E VVJBVElPTiAmJgotKwkJCWx0dlsyXSAhPSBMQzNfQ09ORklHX0RVUkFUSU9OXzdfNSAmJgotKwkJ CWx0dlsyXSAhPSBMQzNfQ09ORklHX0RVUkFUSU9OXzEwKSB7Ci0rCQlhc2NzX2FzZV9yc3BfYWRk KHJzcCwgcmVxLT5hc2UsCi0rCQkJCUJUX0FTQ1NfUlNQX0NPTkZfSU5WQUxJRCwKLSsJCQkJQlRf QVNDU19SRUFTT05fQ09ERUNfREFUQSk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotIAlzd2l0Y2gg KGVwLT5kaXIpIHsKLSAJY2FzZSBCVF9CQVBfU0lOSzoKLSAJCWUgPSBxdWV1ZV9nZXRfZW50cmll cyhiYXAtPmxkYi0+c2lua3MpOwotQEAgLTMyMDcsNiArMzIyMiwxMyBAQCBzdGF0aWMgdWludDhf dCBlcF9jb25maWcoc3RydWN0IGJ0X2JhcF9lbmRwb2ludCAqZXAsIHN0cnVjdCBidF9iYXAgKmJh cCwKLSAJY29kZWMuY2lkID0gbGUxNl90b19jcHUocmVxLT5jb2RlYy5jaWQpOwotIAljb2RlYy52 aWQgPSBsZTE2X3RvX2NwdShyZXEtPmNvZGVjLnZpZCk7Ci0gCi0rCWlmIChjb2RlYy5pZCAhPSAw eGZmICYmIChjb2RlYy5jaWQgfHwgY29kZWMudmlkKSkgewotKwkJYXNjc19hc2VfcnNwX2FkZChy c3AsIHJlcS0+YXNlLAotKwkJCQlCVF9BU0NTX1JTUF9DT05GX0lOVkFMSUQsCi0rCQkJCUJUX0FT Q1NfUkVBU09OX0NPREVDKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0gCWZvciAoOyBlOyBlID0g ZS0+bmV4dCkgewotIAkJc3RydWN0IGJ0X2JhcF9wYWMgKnBhYyA9IGUtPmRhdGE7Ci0gCi0tLSAK LTIuNTQuMAotCi0KLUZyb20gNWMxYzY3OWVjMzA0YjhhYWRhYTI4N2NjYTU5YjM4NTg5ZDMzOWU5 MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHJhZ2hhdmVuZHJhIDxyYWdoYXZlbmRy YS5yYW9AY29sbGFib3JhLmNvbT4KLURhdGU6IFRodSwgMiBKdWwgMjAyNiAxODozOTowNSArMDUz MAotU3ViamVjdDogW1BBVENIIDA0LzE5XSBzaGFyZWQvYmFwOiBWYWxpZGF0ZSB1bmljYXN0IFFv UyBjb25maWd1cmF0aW9uCi0KLVRoaXMgaXMgcmVxdWlyZWQgZm9yIFBUUyB0ZXN0cyBBU0NTL1NS L1NQRS9CSS0wOC1DIGFuZCBBU0NTL1NSL1NQRS9CSS0xMC1DLgotLS0tCi0gc3JjL3NoYXJlZC9i YXAuYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDI2 IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFwLmMgYi9zcmMvc2hh cmVkL2JhcC5jCi1pbmRleCA2YmMwNDRhNjM3NTguLmYyYmU3YzA3YmE1ZCAxMDA2NDQKLS0tLSBh L3NyYy9zaGFyZWQvYmFwLmMKLSsrKyBiL3NyYy9zaGFyZWQvYmFwLmMKLUBAIC0zMzE2LDYgKzMz MTYsMzIgQEAgc3RhdGljIHVpbnQ4X3QgZXBfcW9zKHN0cnVjdCBidF9iYXBfZW5kcG9pbnQgKmVw LCBzdHJ1Y3QgYnRfYmFwICpiYXAsCi0gCQlyZXR1cm4gMDsKLSAJfQotIAotKwlpZiAoZXAtPnN0 cmVhbS0+bHBhYy0+Y29kZWMuaWQgPT0gTEMzX0lEICYmCi0rCQkJcW9zLT51Y2FzdC5pb19xb3Mu aW50ZXJ2YWwgPCAweDAwMDBmZikgewotKwkJYXNjc19hc2VfcnNwX2FkZChyc3AsIGVwLT5pZCwK LSsJCQkJQlRfQVNDU19SU1BfQ09ORl9JTlZBTElELAotKwkJCQlCVF9BU0NTX1JFQVNPTl9JTlRF UlZBTCk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwlpZiAocW9zLT51Y2FzdC5mcmFtaW5nICE9 IEJUX0FTQ1NfUU9TX0ZSQU1JTkdfVU5GUkFNRUQgJiYKLSsJCQlxb3MtPnVjYXN0LmZyYW1pbmcg IT0gQlRfQVNDU19RT1NfRlJBTUlOR19GUkFNRUQpIHsKLSsJCWFzY3NfYXNlX3JzcF9hZGQocnNw LCBlcC0+aWQsCi0rCQkJCUJUX0FTQ1NfUlNQX0NPTkZfSU5WQUxJRCwKLSsJCQkJQlRfQVNDU19S RUFTT05fRlJBTUlORyk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotKwlpZiAoIXFvcy0+dWNhc3Qu aW9fcW9zLnBoeXMgfHwKLSsJCQkocW9zLT51Y2FzdC5pb19xb3MucGh5cyAmIH4oQlRfQkFQX0NP TkZJR19QSFlfMU0gfAotKwkJCQkJQlRfQkFQX0NPTkZJR19QSFlfMk0gfAotKwkJCQkJQlRfQkFQ X0NPTkZJR19QSFlfQ09ERUMpKSkgewotKwkJYXNjc19hc2VfcnNwX2FkZChyc3AsIGVwLT5pZCwK LSsJCQkJQlRfQVNDU19SU1BfQ09ORl9JTlZBTElELAotKwkJCQlCVF9BU0NTX1JFQVNPTl9QSFkp OwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSAJcmV0dXJuIHN0cmVhbV9xb3MoZXAtPnN0cmVhbSwg cW9zLCByc3ApOwotIH0KLSAKLS0tIAotMi41NC4wCi0KLQotRnJvbSAxM2IxNGRiOTUwODkzODI3 MDFmNTRhNDZlNmVmMDEyMGI2OWQ0YTYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog THVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotRGF0ZTog VHVlLCA3IEp1bCAyMDI2IDE0OjM0OjMwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTldIHNo YXJlZC9iYXA6IFVzZSB1dGlsX2x0dl9mb3JlYWNoIHRvIHByb2Nlc3MgbWV0YWRhdGEKLQotVGhp cyBtYWtlcyB1c2Ugb2YgdXRpbF9sdHZfZm9yZWFjaCB0byBwcm9jZXNzIHRoZSBtZXRhZGF0YSBl bnRyaWVzCi1pbnN0ZWFkIG9mIGF0dGVtcHRpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbnRyaWVz IG1hbnVhbGx5IHdoaWNoCi1wcm9iYWJseSBvbmx5IHdvcmtzIHdpdGggdGhlIGV4YWN0IHNhbWUg b3JkZXIgYXMgdXNlZCBieSBQVFMuCi0tLS0KLSBzcmMvc2hhcmVkL2JhcC5jIHwgODQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5n ZWQsIDU5IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3Jj L3NoYXJlZC9iYXAuYyBiL3NyYy9zaGFyZWQvYmFwLmMKLWluZGV4IGYyYmU3YzA3YmE1ZC4uZGI2 ZjRmMjA0Nzg3IDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC9iYXAuYwotKysrIGIvc3JjL3NoYXJl ZC9iYXAuYwotQEAgLTM0MDQsMzUgKzM0MDQsNjkgQEAgc3RhdGljIHVpbnQ4X3Qgc3RyZWFtX2Vu YWJsZShzdHJ1Y3QgYnRfYmFwX3N0cmVhbSAqc3RyZWFtLCBzdHJ1Y3QgaW92ZWMgKm1ldGEsCi0g CXJldHVybiAwOwotIH0KLSAKLS1zdGF0aWMgYm9vbCBhc2NzX21ldGFkYXRhX3JzcChzdHJ1Y3Qg YnRfYmFwX2VuZHBvaW50ICplcCwgc3RydWN0IGlvdmVjICptZXRhLAotLQkJCQkJCQlzdHJ1Y3Qg aW92ZWMgKnJzcCkKLStzdHJ1Y3QgYmFwX21ldGFkYXRhX3Byb2Nlc3MgewotKwlzdHJ1Y3QgYnRf YmFwX2VuZHBvaW50ICplcDsKLSsJdWludDE2X3QgY29udGV4dDsKLSsJc3RydWN0IGlvdmVjICpy c3A7Ci0rCXVpbnQ4X3QgZXJyOwotK307Ci0rCi0rc3RhdGljIHZvaWQgYmFwX21ldGFkYXRhX3By b2Nlc3Moc2l6ZV90IGksIHVpbnQ4X3QgbCwgdWludDhfdCB0LCB1aW50OF90ICp2LAotKwkJCQkJ dm9pZCAqdXNlcl9kYXRhKQotIHsKLS0Jc3RydWN0IGJ0X2x0diAqbHR2OwotLQl1aW50MTZfdCBz dXBwb3J0ZWRfY29udGV4dCA9IDA7Ci0rCXN0cnVjdCBiYXBfbWV0YWRhdGFfcHJvY2VzcyAqZGF0 YSA9IHVzZXJfZGF0YTsKLSAJdWludDE2X3QgY29udGV4dDsKLSAKLSsJc3dpdGNoICh0KSB7Ci0r CWNhc2UgQkFQX01FVEFEQVRBX1BSRUZfQ09OVEVYVF9MVFZfVFlQRToKLSsJCWJyZWFrOwotKwlj YXNlIEJBUF9NRVRBREFUQV9DT05URVhUX0xUVl9UWVBFOgotKwkJaWYgKGwgIT0gc2l6ZW9mKGNv bnRleHQpKSB7Ci0rCQkJYXNjc19hc2VfcnNwX2FkZChkYXRhLT5yc3AsIGRhdGEtPmVwLT5pZCwK LSsJCQkJCUJUX0FTQ1NfUlNQX01FVEFEQVRBX0lOVkFMSUQsIHQpOwotKwkJCWRhdGEtPmVyciA9 IEJUX0FTQ1NfUlNQX01FVEFEQVRBX0lOVkFMSUQ7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCi0rCQlj b250ZXh0ID0gZ2V0X2xlMTYodik7Ci0rCQlpZiAoIWNvbnRleHQgfHwgKGNvbnRleHQgJiB+ZGF0 YS0+Y29udGV4dCkpIHsKLSsJCQlhc2NzX2FzZV9yc3BfYWRkKGRhdGEtPnJzcCwgZGF0YS0+ZXAt PmlkLAotKwkJCQkJQlRfQVNDU19SU1BfTUVUQURBVEFfSU5WQUxJRCwgdCk7Ci0rCQkJZGF0YS0+ ZXJyID0gQlRfQVNDU19SU1BfTUVUQURBVEFfSU5WQUxJRDsKLSsJCX0KLSsKLSsJCWJyZWFrOwot KwljYXNlIEJBUF9NRVRBREFUQV9QUk9HUkFNX0lORk9fTFRWX1RZUEU6Ci0rCWNhc2UgQkFQX01F VEFEQVRBX0xBTkdVQUdFX0xUVl9UWVBFOgotKwkJYnJlYWs7Ci0rCWRlZmF1bHQ6Ci0rCQlhc2Nz X2FzZV9yc3BfYWRkKGRhdGEtPnJzcCwgZGF0YS0+ZXAtPmlkLAotKwkJCQkJQlRfQVNDU19SU1Bf TUVUQURBVEFfVU5TVVBQT1JURUQsCi0rCQkJCQl0KTsKLSsJCWRhdGEtPmVyciA9IEJUX0FTQ1Nf UlNQX01FVEFEQVRBX1VOU1VQUE9SVEVEOwotKwkJYnJlYWs7Ci0rCX07Ci0rfQotKwotK3N0YXRp YyBib29sIGFzY3NfbWV0YWRhdGFfcnNwKHN0cnVjdCBidF9iYXBfZW5kcG9pbnQgKmVwLCBzdHJ1 Y3QgYnRfYmFwICpiYXAsCi0rCQkJCXN0cnVjdCBpb3ZlYyAqbWV0YSwgc3RydWN0IGlvdmVjICpy c3ApCi0rewotKwlzdHJ1Y3QgYmFwX21ldGFkYXRhX3Byb2Nlc3MgZGF0YSA9IHsKLSsJCS5lcCA9 IGVwLAotKwkJLnJzcCA9IHJzcCwKLSsJCS5lcnIgPSAwLAotKwl9OwotKwotIAlpZiAoZXAtPnN0 cmVhbSAmJiBlcC0+c3RyZWFtLT5scGFjKQotLQkJc3VwcG9ydGVkX2NvbnRleHQgPSBlcC0+c3Ry ZWFtLT5scGFjLT5xb3Muc3VwcG9ydGVkX2NvbnRleHQ7Ci0rCQlkYXRhLmNvbnRleHQgPSBlcC0+ c3RyZWFtLT5scGFjLT5xb3Muc3VwcG9ydGVkX2NvbnRleHQ7Ci0gCi0tCWx0diA9IG1ldGEtPmlv dl9iYXNlOwotLQlpZiAobWV0YS0+aW92X2xlbiA+PSBzaXplb2YoKmx0dikgJiYKLS0JCQkobHR2 LT50eXBlIDwgQkFQX01FVEFEQVRBX1BSRUZfQ09OVEVYVF9MVFZfVFlQRSB8fAotLQkJCWx0di0+ dHlwZSA+IEJBUF9NRVRBREFUQV9MQU5HVUFHRV9MVFZfVFlQRSkpIHsKLS0JCWFzY3NfYXNlX3Jz cF9hZGQocnNwLCBlcC0+aWQsCi0tCQkJCUJUX0FTQ1NfUlNQX01FVEFEQVRBX1VOU1VQUE9SVEVE LCBsdHYtPnR5cGUpOwotLQkJcmV0dXJuIHRydWU7Ci0tCX0KLSsJdXRpbF9sdHZfZm9yZWFjaCht ZXRhLT5pb3ZfYmFzZSwgbWV0YS0+aW92X2xlbiwgTlVMTCwKLSsJCQkJYmFwX21ldGFkYXRhX3By b2Nlc3MsICZkYXRhKTsKLSAKLS0JaWYgKG1ldGEtPmlvdl9sZW4gPj0gc2l6ZW9mKCpsdHYpICsg c2l6ZW9mKGNvbnRleHQpICYmCi0tCQkJbHR2LT50eXBlID09IEJBUF9NRVRBREFUQV9DT05URVhU X0xUVl9UWVBFICYmCi0tCQkJbHR2LT5sZW4gPT0gc2l6ZW9mKGNvbnRleHQpICsgMSkgewotLQkJ Y29udGV4dCA9IGdldF9sZTE2KGx0di0+dmFsdWUpOwotLQkJaWYgKCFjb250ZXh0IHx8IChjb250 ZXh0ICYgfnN1cHBvcnRlZF9jb250ZXh0KSkgewotLQkJCWFzY3NfYXNlX3JzcF9hZGQocnNwLCBl cC0+aWQsCi0tCQkJCQlCVF9BU0NTX1JTUF9NRVRBREFUQV9JTlZBTElELAotLQkJCQkJbHR2LT50 eXBlKTsKLS0JCQlyZXR1cm4gdHJ1ZTsKLS0JCX0KLSsJaWYgKGRhdGEuZXJyKSB7Ci0rCQlEQkco YmFwLCAiZXAgJXAgaWQgMHglMDJ4IG1ldGFkYXRhIGVycm9yIDB4JTAyeCIsIGVwLCBlcC0+aWQs Ci0rCQkJCWRhdGEuZXJyKTsKLSsJCXJldHVybiB0cnVlOwotIAl9Ci0gCi0gCXJldHVybiBmYWxz ZTsKLUBAIC0zNDY5LDcgKzM1MDMsNyBAQCBzdGF0aWMgdWludDhfdCBlcF9lbmFibGUoc3RydWN0 IGJ0X2JhcF9lbmRwb2ludCAqZXAsIHN0cnVjdCBidF9iYXAgKmJhcCwKLSAJCXJldHVybiAwOwot IAl9Ci0gCi0tCWlmIChhc2NzX21ldGFkYXRhX3JzcChlcCwgJm1ldGEsIHJzcCkpCi0rCWlmIChh c2NzX21ldGFkYXRhX3JzcChlcCwgYmFwLCAmbWV0YSwgcnNwKSkKLSAJCXJldHVybiAwOwotIAot IAlpZiAoIWVwLT5zdHJlYW0pIHsKLUBAIC0zNzA1LDcgKzM3MzksNyBAQCBzdGF0aWMgdWludDhf dCBlcF9tZXRhZGF0YShzdHJ1Y3QgYnRfYmFwX2VuZHBvaW50ICplcCwKLSAJbWV0YS5pb3ZfYmFz ZSA9IHV0aWxfaW92X3B1bGxfbWVtKGlvdiwgcmVxLT5sZW4pOwotIAltZXRhLmlvdl9sZW4gPSBy ZXEtPmxlbjsKLSAKLS0JaWYgKGFzY3NfbWV0YWRhdGFfcnNwKGVwLCAmbWV0YSwgcnNwKSkKLSsJ aWYgKGFzY3NfbWV0YWRhdGFfcnNwKGVwLCBzdHJlYW0tPmJhcCwgJm1ldGEsIHJzcCkpCi0gCQly ZXR1cm4gMDsKLSAKLSAJcmV0dXJuIHN0cmVhbV9tZXRhZGF0YShlcC0+c3RyZWFtLCAmbWV0YSwg cnNwKTsKLS0tIAotMi41NC4wCi0KLQotRnJvbSA5ZTlmMGEzNzBjNTkxYzEyNmMzOTIyNWY1ZjUw Yjg4OTE1ZDExMDk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmFodWwgU2FtYW5h IDxyYWh1bC5zYW1hbmFAb3NzLnF1YWxjb21tLmNvbT4KLURhdGU6IFR1ZSwgNyBKdWwgMjAyNiAx MjowNTo0MyArMDUzMAotU3ViamVjdDogW1BBVENIIDA2LzE5XSBnb2JleDogRml4IHVzZS1hZnRl ci1mcmVlIHdoZW4gY2FuY2VsbGluZyBTUk0gUFVUCi0gdHJhbnNmZXIKLQotSW4gU1JNIG1vZGUg cHV0X2dldF9kYXRhKCkgcXVldWVzIHRoZSBuZXh0IHBhY2tldCBkdXJpbmcgZW5jb2Rpbmcgb2YK LXRoZSBjdXJyZW50IG9uZSwgc28gdHJhbnNmZXItPnJlcV9pZCBhbmQgcGVuZGluZ19yZXEtPmlk IGNhbiBkaXZlcmdlLgotV2hlbiBnX29iZXhfY2FuY2VsX3RyYW5zZmVyKCkgY2FuY2VscyB0aGUg cXVldWVkIHBhY2tldCBmcm9tIHR4X3F1ZXVlLAotY2FuY2VsX2NvbXBsZXRlKCkgZnJlZXMgdGhl IHRyYW5zZmVyIHdoaWxlIHBlbmRpbmdfcmVxIHN0aWxsIGhvbGRzIGEKLWNhbGxiYWNrIHBvaW50 aW5nIHRvIGl0LiBJdHMgR19PQkVYX0RFRkFVTFRfVElNRU9VVCAoMTBzKSB0aGVuIGZpcmVzCi1v biBmcmVlZCBtZW1vcnkgY2F1c2luZyBhIFNJR1NFR1YuCi0KLUZpeCBieSBjbGVhcmluZyBwZW5k aW5nX3JlcS0+cnNwX2Z1bmMgaWYgaXQgYmVsb25ncyB0byB0aGUgc2FtZQotdHJhbnNmZXIgYmVp bmcgY2FuY2VsbGVkLgotLS0tCi0gZ29iZXgvZ29iZXguYyB8IDggKysrKysrKysKLSAxIGZpbGUg Y2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nb2JleC9nb2JleC5jIGIv Z29iZXgvZ29iZXguYwotaW5kZXggZGY4MGQ3OWYzMWJiLi4xMGE0MzgzOTFlYWUgMTAwNjQ0Ci0t LS0gYS9nb2JleC9nb2JleC5jCi0rKysgYi9nb2JleC9nb2JleC5jCi1AQCAtODYxLDYgKzg2MSwx NCBAQCBnYm9vbGVhbiBnX29iZXhfY2FuY2VsX3JlcShHT2JleCAqb2JleCwgZ3VpbnQgcmVxX2lk LCBnYm9vbGVhbiByZW1vdmVfY2FsbGJhY2spCi0gCi0gCWdfcXVldWVfZGVsZXRlX2xpbmsob2Jl eC0+dHhfcXVldWUsIG1hdGNoKTsKLSAKLSsJLyogSW4gU1JNIG1vZGUgcGVuZGluZ19yZXEgbWF5 IGJlbG9uZyB0byB0aGUgc2FtZSB0cmFuc2ZlciBidXQgY2FycnkKLSsJICogYSBkaWZmZXJlbnQg cmVxX2lkLiBDbGVhciBpdHMgY2FsbGJhY2sgdG8gYXZvaWQgdXNlLWFmdGVyLWZyZWUKLSsJICog d2hlbiBpdHMgdGltZW91dCBmaXJlcyBhZnRlciB0cmFuc2Zlcl9mcmVlKCkuCi0rCSAqLwotKwlp ZiAocmVtb3ZlX2NhbGxiYWNrICYmIG9iZXgtPnBlbmRpbmdfcmVxICYmCi0rCQkJCW9iZXgtPnBl bmRpbmdfcmVxLT5yc3BfZGF0YSA9PSBwLT5yc3BfZGF0YSkKLSsJCW9iZXgtPnBlbmRpbmdfcmVx LT5yc3BfZnVuYyA9IE5VTEw7Ci0rCi0gaW1tZWRpYXRlX2NvbXBsZXRpb246Ci0gCXAtPmNhbmNl bGxlZCA9IFRSVUU7Ci0gCXAtPm9iZXggPSBnX29iZXhfcmVmKG9iZXgpOwotLS0gCi0yLjU0LjAK LQotCi1Gcm9tIDgyYWYyYmVhZmMzOTUxMGUyYzRhNDM5YmY0NGZhZWE3MTFkNjUwM2YgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUb20gQ2F0c2hvZWsgPHRvbWNhdHNob2VrQHplZWxh bmRuZXQubmw+Ci1EYXRlOiBUaHUsIDkgSnVsIDIwMjYgMTQ6Mjc6MDQgKzAyMDAKLVN1YmplY3Q6 IFtQQVRDSCAwNy8xOV0gYWRhcHRlcjogRml4IGNyYXNoIG9uIFVVSUQgZGlzY292ZXJ5IGZpbHRl ciBtYXRjaAotCi1pc19maWx0ZXJfbWF0Y2goKSBsb29rcyB1cCBlYWNoIGRpc2NvdmVyeS1maWx0 ZXIgVVVJRCBpbiB0aGUgcXVldWUgb2YKLXNlcnZpY2VzIHBhcnNlZCBmcm9tIGEgZGV2aWNlIGFk dmVydGlzZW1lbnQuIFdoZW4gdGhhdCBzZXJ2aWNlcyBsaXN0IHdhcwotbWlncmF0ZWQgZnJvbSBh IEdTTGlzdCB0byBhIHN0cnVjdCBxdWV1ZSwgdGhlIHF1ZXVlX2ZpbmQoKSBjYWxsIGtlcHQKLUdM aWIncyBnX3NsaXN0X2ZpbmRfY3VzdG9tKCkgYXJndW1lbnQgb3JkZXIsIHBhc3NpbmcgdGhlIFVV SUQgc3RyaW5nCi13aGVyZSBxdWV1ZV9maW5kKCkgZXhwZWN0cyBhIG1hdGNoIGZ1bmN0aW9uIGFu ZCB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbgotd2hlcmUgaXQgZXhwZWN0cyB0aGUgbWF0Y2ggZGF0 YS4KLQotQXMgYSByZXN1bHQgcXVldWVfZmluZCgpIGNhbGxzIHRoZSBVVUlEIHN0cmluZyBhcyBp ZiBpdCB3ZXJlIGEgZnVuY3Rpb24sCi1qdW1waW5nIGludG8gbm9uLWV4ZWN1dGFibGUgaGVhcCBh bmQgY3Jhc2hpbmcgYmx1ZXRvb3RoZCB3aXRoIFNJR1NFR1YgYXMKLXNvb24gYXMgYW4gYWR2ZXJ0 aXNlbWVudCBtYXRjaGVzIGEgVVVJRCBmaWx0ZXIgY29uZmlndXJlZCB2aWEKLVNldERpc2NvdmVy eUZpbHRlci4KLQotQWRkIGEgcXVldWVfbWF0Y2hfZnVuY190IGhlbHBlciBhbmQgcGFzcyB0aGUg YXJndW1lbnRzIGluIHRoZSBjb3JyZWN0Ci1vcmRlci4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHVi LmNvbS9ibHVlei9ibHVlei9pc3N1ZXMvMjI4MgotLS0tCi0gc3JjL2FkYXB0ZXIuYyB8IDExICsr KysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL3NyYy9hZGFwdGVyLmMgYi9zcmMvYWRhcHRlci5jCi1pbmRleCAy MTAyMjUyNDNmMDAuLjRmZmEzMmE1MmMxMyAxMDA2NDQKLS0tLSBhL3NyYy9hZGFwdGVyLmMKLSsr KyBiL3NyYy9hZGFwdGVyLmMKLUBAIC03MTg0LDYgKzcxODQsMTQgQEAgc3RhdGljIHZvaWQgYWRh cHRlcl9tc2Rfbm90aWZ5KHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwKLSAJfQotIH0KLSAK LStzdGF0aWMgYm9vbCBtYXRjaF91dWlkKGNvbnN0IHZvaWQgKmRhdGEsIGNvbnN0IHZvaWQgKm1h dGNoX2RhdGEpCi0rewotKwljb25zdCBjaGFyICp1dWlkID0gZGF0YTsKLSsJY29uc3QgY2hhciAq bWF0Y2ggPSBtYXRjaF9kYXRhOwotKwotKwlyZXR1cm4gc3RyY21wKHV1aWQsIG1hdGNoKSA9PSAw OwotK30KLSsKLSBzdGF0aWMgYm9vbCBpc19maWx0ZXJfbWF0Y2goR1NMaXN0ICpkaXNjb3Zlcnlf ZmlsdGVyLCBzdHJ1Y3QgZWlyX2RhdGEgKmVpcl9kYXRhLAotIAkJCQkJCQkJaW50OF90IHJzc2kp Ci0gewotQEAgLTcyMTYsOCArNzIyNCw3IEBAIHN0YXRpYyBib29sIGlzX2ZpbHRlcl9tYXRjaChH U0xpc3QgKmRpc2NvdmVyeV9maWx0ZXIsIHN0cnVjdCBlaXJfZGF0YSAqZWlyX2RhdGEsCi0gCQkJ CSAqIHV1aWQuCi0gCQkJCSAqLwotIAkJCQlpZiAocXVldWVfZmluZChlaXJfZGF0YS0+c2Vydmlj ZXMsCi0tCQkJCQkJCW0tPmRhdGEsCi0tCQkJCQkJCWdfc3RyY21wKSAhPSBOVUxMKQotKwkJCQkJ CQltYXRjaF91dWlkLCBtLT5kYXRhKSkKLSAJCQkJCWdvdF9tYXRjaCA9IHRydWU7Ci0gCQkJfQot IAkJfQotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIGI3ZDcxZTUwNjc4NTZiMGRhZjJmMWY3M2IzZmM5 NTQ4MzIzNjYxMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWtoYWlsIEdhdnJp bG92IDxtaWtoYWlsLnYuZ2F2cmlsb3ZAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMCBKdWwgMjAy NiAxMjoyODoxNyArMDUwMAotU3ViamVjdDogW1BBVENIIDA4LzE5XSBhMmRwOiBGaXggbG9hZGlu ZyBvZiByZW1vdGUgU0VQIGZyb20gY2FjaGUKLQotQ29tbWl0IDkxMmY1ZWZiMGRkOSAoImEyZHA6 IEZpeCBoYW5kbGluZyBvZiBjb2RlYyBjYXBhYmlsaXR5IHN0b3JhZ2UiKQotYWRkZWQgYW4gJ2kg Pj0gMicgY29uZGl0aW9uIHRvIHRoZSBsb29wIHRoYXQgcGFyc2VzIHRoZSBzdG9yZWQgY29kZWMK LWNhcGFiaWxpdGllcy4gU2luY2UgaSBzdGFydHMgYXQgMCB0aGUgbG9vcCBib2R5IG5ldmVyIHJ1 bnMsIGkgc3RheXMgMCwKLWFuZCB0aGUgc3Vic2VxdWVudCAnaWYgKGkgIT0gc2l6ZSknIGNoZWNr IGRpc2NhcmRzIGV2ZXJ5IGVuZHBvaW50IGZvdW5kCi1pbiB0aGUgY2FjaGU6Ci0KLSAgbG9hZF9y ZW1vdGVfc2VwKCkgVW5hYmxlIHRvIGxvYWQgTGFzdFVzZWQ6IHJzZWlkIDYgbm90IGZvdW5kCi0K LVdpdGggbm8gcmVtb3RlIFNFUCBsb2FkZWQsIGF2ZHRwX2Rpc2NvdmVyKCkgY2FuIG5vIGxvbmdl ciB0YWtlIHRoZQotY2FjaGVkIHBhdGggYW5kIGlzc3VlcyBBVkRUUCBEaXNjb3Zlci9HZXQgQWxs IENhcGFiaWxpdGllcyBvbiBldmVyeQotcmVjb25uZWN0LCBhbmQgYTJkcF9zZXR1cF9yZW1vdGVf cGF0aCgpIHJldHVybnMgTlVMTCBzbyB0aGUgdHJhbnNwb3J0Ci1lbmRzIHVwIGF0IC9vcmcvYmx1 ZXovaGNpWC9kZXZfWVkvZmQwIGluc3RlYWQgb2YgLi4uL3NlcE4vZmQwLgotCi1UaGUgY29uZGl0 aW9uIHdhcyBwcmVzdW1hYmx5IG1lYW50IHRvIGJvdW5kIHRoZSB3cml0ZXMgaW50byBkYXRhWzEy OF0sCi13aGljaCB0aGUgb3JpZ2luYWwgY29tbWl0IGRpZCBub3QgYWN0dWFsbHkgZml4OiBjYXBz IGlzIHJlYWQgd2l0aAotJyU1MTJzJyBzbyBzaXplIC8gMiBjYW4gYmUgdXAgdG8gMjU2LiBWYWxp ZGF0ZSBzaXplIHVwIGZyb250IGluc3RlYWQuCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20v Ymx1ZXovYmx1ZXovaXNzdWVzLzIyODUKLS0tLQotIHByb2ZpbGVzL2F1ZGlvL2EyZHAuYyB8IDEz ICsrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Byb2ZpbGVzL2F1ZGlvL2EyZHAuYyBiL3Byb2ZpbGVz L2F1ZGlvL2EyZHAuYwotaW5kZXggYzhhZGMzMTIyNTYzLi5hNGJhMWRhY2Y5NDMgMTAwNjQ0Ci0t LS0gYS9wcm9maWxlcy9hdWRpby9hMmRwLmMKLSsrKyBiL3Byb2ZpbGVzL2F1ZGlvL2EyZHAuYwot QEAgLTIzOTgsNyArMjM5OCwxNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3JlbW90ZV9zZXAoc3RydWN0 IGEyZHBfY2hhbm5lbCAqY2hhbiwgR0tleUZpbGUgKmtleV9maWxlLAotIAkJCWRlbGF5X3JlcG9y dGluZyA9IGZhbHNlOwotIAkJfQotIAotLQkJZm9yIChpID0gMCwgc2l6ZSA9IHN0cmxlbihjYXBz KTsgaSA8IHNpemUgJiYgaSA+PSAyOyBpICs9IDIpIHsKLSsJCXNpemUgPSBzdHJsZW4oY2Fwcyk7 Ci0rCi0rCQlnX2ZyZWUodmFsdWUpOwotKwotKwkJaWYgKHNpemUgJSAyIHx8IHNpemUgLyAyID4g KGludCkgc2l6ZW9mKGRhdGEpKSB7Ci0rCQkJd2FybigiVW5hYmxlIHRvIGxvYWQgRW5kcG9pbnQ6 IHNlaWQgJXUiLCByc2VpZCk7Ci0rCQkJY29udGludWU7Ci0rCQl9Ci0rCi0rCQlmb3IgKGkgPSAw OyBpIDwgc2l6ZTsgaSArPSAyKSB7Ci0gCQkJdWludDhfdCAqdG1wID0gZGF0YSArIGkgLyAyOwot IAotIAkJCWlmIChzc2NhbmYoY2FwcyArIGksICIlMDJoaHgiLCB0bXApICE9IDEpIHsKLUBAIC0y NDA3LDggKzI0MTYsNiBAQCBzdGF0aWMgdm9pZCBsb2FkX3JlbW90ZV9zZXAoc3RydWN0IGEyZHBf Y2hhbm5lbCAqY2hhbiwgR0tleUZpbGUgKmtleV9maWxlLAotIAkJCX0KLSAJCX0KLSAKLS0JCWdf ZnJlZSh2YWx1ZSk7Ci0tCi0gCQlpZiAoaSAhPSBzaXplKQotIAkJCWNvbnRpbnVlOwotIAotLS0g Ci0yLjU0LjAKLQotCi1Gcm9tIDJhM2QzYjBlNmY4MzUxNjczNmMzYzgxOTFmYjk0NDA0NzUxNzE2 MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6 IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDEwIEp1bCAyMDI2IDE0OjQ3 OjE0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTldIG1vbml0b3I6IEZpeCBwcmludGluZyBz dWJwYWdlcyBiaXRzIGFmdGVyIGFsbCBzdWJwYWdlcwotCi1UaGlzIGZpeGVzIHByaW50aW5nIHRo ZSBkZWNvZGVkIHN1YnBhZ2UgYml0ZmllbGRzIGFmdGVyIGFsbCBzdWJwYWdlcwotcmF0aGVyIHRo ZW4gYWZ0ZXIgdGhlIHN1YnBhZ2UgaXRzZWxmOgotCi1iZWZvcmU6Ci0KLSAgICAgICAgRmVhdHVy ZXNbMS8wXVs4XToKLSAgICAgICAgMDAgMDMgMDAgMDAgMDAgMDAgMDAgMDAgICAgICAgICAgICAg ICAgICAgICAgICAgIC4uLi4uLi4uCi0gICAgICAgIEZlYXR1cmVzWzEvMV1bOF06Ci0gICAgICAg IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4uLi4u LgotICAgICAgICBGZWF0dXJlc1sxLzJdWzhdOgotICAgICAgICAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uLi4uLi4KLSAgICAgICAgICBTaG9ydGVy IENvbm5lY3Rpb24gSW50ZXJ2YWxzCi0gICAgICAgICAgU2hvcnRlciBDb25uZWN0aW9uIEludGVy dmFscyAoSG9zdCBTdXBwb3J0KQotCi1hZnRlcjoKLQotICAgICAgICBGZWF0dXJlc1sxLzBdWzhd OgotICAgICAgICAwMCAwMyAwMCAwMCAwMCAwMCAwMCAwMCAgICAgICAgICAgICAgICAgICAgICAg ICAgLi4uLi4uLi4KLSAgICAgICAgICBTaG9ydGVyIENvbm5lY3Rpb24gSW50ZXJ2YWxzCi0gICAg ICAgICAgU2hvcnRlciBDb25uZWN0aW9uIEludGVydmFscyAoSG9zdCBTdXBwb3J0KQotLS0tCi0g bW9uaXRvci9wYWNrZXQuYyB8IDMzICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQot IDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL21vbml0b3IvcGFja2V0LmMgYi9tb25pdG9yL3BhY2tldC5jCi1pbmRleCBlNjJh ZDRjZmIzMzcuLmJhNmZmOGU4ZTU1MSAxMDA2NDQKLS0tLSBhL21vbml0b3IvcGFja2V0LmMKLSsr KyBiL21vbml0b3IvcGFja2V0LmMKLUBAIC0yOTI1LDE3ICsyOTI1LDI5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgYml0ZmllbGRfZGF0YSBmZWF0dXJlc19tc2Z0W10gPSB7Ci0gCi0gc3RhdGljIHZv aWQgcHJpbnRfZmVhdHVyZXNfc3VicGFnZSh1aW50OF90IHBhZ2UsIHVpbnQ4X3Qgc3VicGFnZXMs Ci0gCQkJCQljb25zdCB1aW50OF90ICpmZWF0dXJlc19hcnJheSwKLS0JCQkJCXVpbnQ2NF90ICpm ZWF0dXJlcykKLSsJCQkJCXVpbnQ2NF90ICpmZWF0dXJlcywKLSsJCQkJCWNvbnN0IHN0cnVjdCBi aXRmaWVsZF9kYXRhICp0YWJsZSkKLSB7Ci0gCWludCBpLCBqOwotIAljaGFyIHN0clsxOF07Ci0g Ci0gCWZvciAoaSA9IDA7IGkgPCBzdWJwYWdlczsgaSsrKSB7Ci0rCQl1aW50NjRfdCBtYXNrOwot KwotIAkJZm9yIChqID0gMDsgaiA8IDg7IGorKykKLSAJCQlmZWF0dXJlc1tpXSB8PSAoKHVpbnQ2 NF90KSBmZWF0dXJlc19hcnJheVtpICogOCArIGpdKQotIAkJCQkJPDwgKGogKiA4KTsKLSAJCXNw cmludGYoc3RyLCAiRmVhdHVyZXNbJXUvJXVdIiwgcGFnZSwgaSk7Ci0gCQlwcmludF9oZXhfZmll bGQoc3RyLCAmZmVhdHVyZXNfYXJyYXlbaSAqIDhdLCA4KTsKLSsKLSsJCWlmICghdGFibGUpCi0r CQkJY29udGludWU7Ci0rCi0rCQltYXNrID0gcHJpbnRfYml0ZmllbGQoMiwgZmVhdHVyZXNbaV0s IHRhYmxlKTsKLSsJCWlmIChtYXNrKQotKwkJCXByaW50X3RleHQoQ09MT1JfVU5LTk9XTl9GRUFU VVJFX0JJVCwKLSsJCQkJIiAgVW5rbm93biBmZWF0dXJlcyAoMHglMTYuMTYiIFBSSXg2NCAiKSIs Ci0rCQkJCW1hc2spOwotIAl9Ci0gfQotIAotQEAgLTI5NDMsMTYgKzI5NTUsMTMgQEAgc3RhdGlj IHZvaWQgcHJpbnRfZmVhdHVyZXModWludDhfdCBwYWdlLCBjb25zdCB1aW50OF90ICpmZWF0dXJl c19hcnJheSwKLSAJCQkJCQkJCXVpbnQ4X3QgdHlwZSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCBiaXRm aWVsZF9kYXRhICpmZWF0dXJlc190YWJsZSA9IE5VTEw7Ci0tCXVpbnQ2NF90IG1hc2ssIGZlYXR1 cmVzWzNdID0ge307Ci0rCXVpbnQ2NF90IGZlYXR1cmVzWzNdID0ge307Ci0gCXVpbnQ4X3Qgc3Vi cGFnZXMgPSAxOwotLQlpbnQgaTsKLSAKLSAJLyogTEUgcGFnZXMgMS0xMCBhcmUgMTkyIGJpdHMg KDI0IG9jdGV0cykgZWFjaCAqLwotIAlpZiAodHlwZSA9PSAweDAxICYmIHBhZ2UpCi0gCQlzdWJw YWdlcyA9IDM7Ci0gCi0tCXByaW50X2ZlYXR1cmVzX3N1YnBhZ2UocGFnZSwgc3VicGFnZXMsIGZl YXR1cmVzX2FycmF5LCBmZWF0dXJlcyk7Ci0tCi0gCXN3aXRjaCAodHlwZSkgewotIAljYXNlIDB4 MDA6Ci0gCQlzd2l0Y2ggKHBhZ2UpIHsKLUBAIC0yOTg1LDE2ICsyOTk0LDggQEAgc3RhdGljIHZv aWQgcHJpbnRfZmVhdHVyZXModWludDhfdCBwYWdlLCBjb25zdCB1aW50OF90ICpmZWF0dXJlc19h cnJheSwKLSAJCWJyZWFrOwotIAl9Ci0gCi0tCWlmICghZmVhdHVyZXNfdGFibGUpCi0tCQlyZXR1 cm47Ci0tCi0tCWZvciAoaSA9IDA7IGkgPCBzdWJwYWdlczsgaSsrKSB7Ci0tCQltYXNrID0gcHJp bnRfYml0ZmllbGQoMiwgZmVhdHVyZXNbaV0sIGZlYXR1cmVzX3RhYmxlKTsKLS0JCWlmIChtYXNr KQotLQkJCXByaW50X3RleHQoQ09MT1JfVU5LTk9XTl9GRUFUVVJFX0JJVCwKLS0JCQkJIiAgVW5r bm93biBmZWF0dXJlcyAoMHglMTYuMTYiIFBSSXg2NCAiKSIsCi0tCQkJCW1hc2spOwotLQl9Ci0r CXByaW50X2ZlYXR1cmVzX3N1YnBhZ2UocGFnZSwgc3VicGFnZXMsIGZlYXR1cmVzX2FycmF5LCBm ZWF0dXJlcywKLSsJCQkJCQkJZmVhdHVyZXNfdGFibGUpOwotIH0KLSAKLSB2b2lkIHBhY2tldF9w cmludF9mZWF0dXJlc19sbXAoY29uc3QgdWludDhfdCAqZmVhdHVyZXMsIHVpbnQ4X3QgcGFnZSkK LUBAIC0xMTA2NSw3ICsxMTA2Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3Bjb2RlX2RhdGEg b3Bjb2RlX3RhYmxlW10gPSB7Ci0gCQkJCSJMRSBSZWFkIE1pbmltdW0gU3VwcG9ydGVkIENvbm5l Y3Rpb24gSW50ZXJ2YWwiLAotIAkJCQludWxsX2NtZCwgMCwgdHJ1ZSwgbGVfcmVhZF9jb25uX2lu dGVydmFsX3JzcCwKLSAJCQkJc2l6ZW9mKHN0cnVjdCBidF9oY2lfcnNwX2xlX3JlYWRfY29ubl9p bnRlcnZhbCksCi0tCQkJCXRydWUgfSwKLSsJCQkJZmFsc2UgfSwKLSAJeyB9Ci0gfTsKLSAKLS0t IAotMi41NC4wCi0KLQotRnJvbSAwZjJmNTNmZDA0ZDRlYjczODAxZGUxZjhjYTE2YTQwZTNiMTJj MDM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bGkgVmlydGFuZW4gPHBhdkBp a2kuZmk+Ci1EYXRlOiBNb24sIDEzIEp1bCAyMDI2IDE2OjUwOjIzICswMzAwCi1TdWJqZWN0OiBb UEFUQ0ggMTAvMTldIHRvb2xzL3Njby10ZXN0ZXI6IGZpeCBtaXNzaW5nIGNsZWFyIG9mIGlvX2lk IGluCi0gY2FsbGJhY2tzCi0KLUZpeGVzIGlzc3VlcwotCi1HTGliLUNSSVRJQ0FMICoqOiBTb3Vy Y2UgSUQgMTI2IHdhcyBub3QgZm91bmQgd2hlbiBhdHRlbXB0aW5nIHRvIHJlbW92ZSBpdAotLS0t Ci0gdG9vbHMvc2NvLXRlc3Rlci5jIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKykKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL3Njby10ZXN0ZXIuYyBiL3Rvb2xzL3Njby10ZXN0 ZXIuYwotaW5kZXggYTIxODViOGVmMTk4Li5mY2E5OWE5MWMyMGYgMTAwNjQ0Ci0tLS0gYS90b29s cy9zY28tdGVzdGVyLmMKLSsrKyBiL3Rvb2xzL3Njby10ZXN0ZXIuYwotQEAgLTE0MTUsNiArMTQx NSw4IEBAIHN0YXRpYyBnYm9vbGVhbiBzY29fYWNjZXB0X2NiKEdJT0NoYW5uZWwgKmlvLCBHSU9D b25kaXRpb24gY29uZCwKLSAJZ2Jvb2xlYW4gcmV0OwotIAlHSU9DaGFubmVsICpuZXdfaW87Ci0g Ci0rCWRhdGEtPmlvX2lkID0gMDsKLSsKLSAJdGVzdGVyX2RlYnVnKCJOZXcgY29ubmVjdGlvbiIp OwotIAotIAlzayA9IGdfaW9fY2hhbm5lbF91bml4X2dldF9mZChpbyk7Ci0tLSAKLTIuNTQuMAot Ci0KLUZyb20gOTM1M2MwZWE5ZjZjMWJhY2ZmMDBkOWFmZWYwZDk2Mzc5NmQ4NmJkMyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWxpIFZpcnRhbmVuIDxwYXZAaWtpLmZpPgotRGF0 ZTogTW9uLCAxMyBKdWwgMjAyNiAxNjo1MDoyNCArMDMwMAotU3ViamVjdDogW1BBVENIIDExLzE5 XSB0b29scy82bG93cGFuLXRlc3RlcjogZml4IHJhY2UgaW4gQ2xpZW50IENvbm5lY3QgLQotIERp c2FibGUKLQotSXQncyBwb3NzaWJsZSBjbGllbnRfbDJjYXBfZGlzY29ubmVjdF9jYigpIGlzIGNh bGxlZCBhZnRlciA2bG93cGFuCi1kaXNhYmxlIG9uIGNvbm5lY3QuIFByZXZlbnQgZmFpbGluZyB0 ZXN0IGluIGZpbmlzaF9zdGVwKCkgaW4gdGhpcyBjYXNlLgotLS0tCi0gdG9vbHMvNmxvd3Bhbi10 ZXN0ZXIuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy82bG93cGFuLXRlc3Rlci5jIGIvdG9vbHMv Nmxvd3Bhbi10ZXN0ZXIuYwotaW5kZXggOTVmZGYyMDZmYzBjLi43Mzg3MTRkNjhkZDEgMTAwNjQ0 Ci0tLS0gYS90b29scy82bG93cGFuLXRlc3Rlci5jCi0rKysgYi90b29scy82bG93cGFuLXRlc3Rl ci5jCi1AQCAtNjQ4LDggKzY0OCwxMSBAQCBzdGF0aWMgdm9pZCBjbGllbnRfbDJjYXBfY29ubmVj dF9jYih1aW50MTZfdCBoYW5kbGUsIHVpbnQxNl90IGNpZCwKLSAJaWYgKGNkYXRhLT5kaXNhYmxl X29uX2Nvbm5lY3QpIHsKLSAJCWlmICh3cml0ZV82bG93cGFuKCI2bG93cGFuX2VuYWJsZSIsICIw IikpCi0gCQkJdGVzdGVyX3Rlc3RfZmFpbGVkKCk7Ci0tCQllbHNlCi0rCQllbHNlIHsKLSsJCQlk YXRhLT5oYW5kbGUgPSAwOwotKwkJCWRhdGEtPmRjaWQgPSAwOwotIAkJCXRlc3Rlcl90ZXN0X3Bh c3NlZCgpOwotKwkJfQotIAl9Ci0gfQotIAotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIGJhMDhlMGY2 YmUwZjJhYzE3ZGUzYzA2MDljNjRlMWQxYWNhYTE1NjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBQYXVsaSBWaXJ0YW5lbiA8cGF2QGlraS5maT4KLURhdGU6IE1vbiwgMTMgSnVsIDIw MjYgMTY6NTA6MjUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xOV0gdG9vbHMvNmxvd3Bhbi10 ZXN0ZXI6IGFkZCB0ZXN0IGZvciBWSENJIHRlYXJkb3duCi0gd2l0aG91dCBkaXNhYmxlCi0KLUNo ZWNrIDZsb3dwYW4gdGVhcmRvd24gd2hlbiBjb250cm9sbGVyIGRpc2FwcGVycyB3aXRoIGFjdGl2 ZSBkZXZpY2VzLgotQWRkIHRlc3QKLQotQ2xpZW50IENvbm5lY3QgLSBObyBEaXNhYmxlCi0tLS0K LSB0b29scy82bG93cGFuLXRlc3Rlci5jIHwgMjggKysrKysrKysrKysrKysrKysrKysrKystLS0t LQotIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1k aWZmIC0tZ2l0IGEvdG9vbHMvNmxvd3Bhbi10ZXN0ZXIuYyBiL3Rvb2xzLzZsb3dwYW4tdGVzdGVy LmMKLWluZGV4IDczODcxNGQ2OGRkMS4uYThmYWY2ZWI1OTc2IDEwMDY0NAotLS0tIGEvdG9vbHMv Nmxvd3Bhbi10ZXN0ZXIuYwotKysrIGIvdG9vbHMvNmxvd3Bhbi10ZXN0ZXIuYwotQEAgLTc2LDYg Kzc2LDkgQEAgc3RydWN0IGNsaWVudF9kYXRhIHsKLSAKLSAJLyogSW50ZXJmYWNlIGxpc3RlbmVy IHNvY2tldCB0eXBlLCBTT0NLX1JBVyAvIERHUkFNICovCi0gCWludCBza190eXBlOwotKwotKwkv KiBEb24ndCBkaXNhYmxlIDZsb3dwYW4gYmVmb3JlIGFkYXB0ZXIgdGVhcmRvd24gKi8KLSsJYm9v bCBub190ZWFyZG93bl9kaXNhYmxlOwotIH07Ci0gCi0gc3RhdGljIHZvaWQgcHJpbnRfZGVidWco Y29uc3QgY2hhciAqc3RyLCB2b2lkICp1c2VyX2RhdGEpCi1AQCAtMjY0LDYgKzI2Nyw3IEBAIHN0 YXRpYyB2b2lkIHRlc3RfcHJlX3NldHVwKGNvbnN0IHZvaWQgKnRlc3RfZGF0YSkKLSBzdGF0aWMg dm9pZCB0ZXN0X3Bvc3RfdGVhcmRvd24oY29uc3Qgdm9pZCAqdGVzdF9kYXRhKQotIHsKLSAJc3Ry dWN0IHRlc3RfZGF0YSAqZGF0YSA9IHRlc3Rlcl9nZXRfZGF0YSgpOwotKwljb25zdCBzdHJ1Y3Qg Y2xpZW50X2RhdGEgKmNkYXRhID0gZGF0YS0+dGVzdF9kYXRhOwotIAlpbnQgcmV0OwotIAotIAlp ZiAoZGF0YS0+aW9faWQgPiAwKSB7Ci1AQCAtMjc2LDExICsyODAsMTMgQEAgc3RhdGljIHZvaWQg dGVzdF9wb3N0X3RlYXJkb3duKGNvbnN0IHZvaWQgKnRlc3RfZGF0YSkKLSAJCWRhdGEtPnBhY2tl dF9mZCA9IC0xOwotIAl9Ci0gCi0tCXJldCA9IHdyaXRlXzZsb3dwYW4oIjZsb3dwYW5fZW5hYmxl IiwgIjAiKTsKLS0JaWYgKHJldCA8IDApIHsKLS0JCXRlc3Rlcl93YXJuKCJGYWlsZWQgdG8gZGlz YWJsZSA2bG93cGFuIik7Ci0tCQl0ZXN0ZXJfcG9zdF90ZWFyZG93bl9mYWlsZWQoKTsKLS0JCXJl dHVybjsKLSsJaWYgKCFjZGF0YSB8fCAhY2RhdGEtPm5vX3RlYXJkb3duX2Rpc2FibGUpIHsKLSsJ CXJldCA9IHdyaXRlXzZsb3dwYW4oIjZsb3dwYW5fZW5hYmxlIiwgIjAiKTsKLSsJCWlmIChyZXQg PCAwKSB7Ci0rCQkJdGVzdGVyX3dhcm4oIkZhaWxlZCB0byBkaXNhYmxlIDZsb3dwYW4iKTsKLSsJ CQl0ZXN0ZXJfcG9zdF90ZWFyZG93bl9mYWlsZWQoKTsKLSsJCQlyZXR1cm47Ci0rCQl9Ci0gCX0K LSAKLSAJaGNpZW11X3VucmVmKGRhdGEtPmhjaWVtdSk7Ci1AQCAtMzE3LDYgKzMyMywxMCBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGNsaWVudF9kYXRhIGNsaWVudF9jb25uZWN0X2Rpc2FibGUgPSB7 Ci0gCS5kaXNhYmxlX29uX2Nvbm5lY3QgPSB0cnVlLAotIH07Ci0gCi0rc3RhdGljIGNvbnN0IHN0 cnVjdCBjbGllbnRfZGF0YSBjbGllbnRfY29ubmVjdF9ub19kaXNhYmxlID0gewotKwkubm9fdGVh cmRvd25fZGlzYWJsZSA9IHRydWUsCi0rfTsKLSsKLSBzdGF0aWMgY29uc3Qgc3RydWN0IGNsaWVu dF9kYXRhIGNsaWVudF9jb25uZWN0X2Rpc2Nvbm5lY3QgPSB7Ci0gCS5kaXNjb25uZWN0ID0gdHJ1 ZSwKLSB9OwotQEAgLTY1Myw2ICs2NjMsMTAgQEAgc3RhdGljIHZvaWQgY2xpZW50X2wyY2FwX2Nv bm5lY3RfY2IodWludDE2X3QgaGFuZGxlLCB1aW50MTZfdCBjaWQsCi0gCQkJZGF0YS0+ZGNpZCA9 IDA7Ci0gCQkJdGVzdGVyX3Rlc3RfcGFzc2VkKCk7Ci0gCQl9Ci0rCX0gZWxzZSBpZiAoY2RhdGEt Pm5vX3RlYXJkb3duX2Rpc2FibGUpIHsKLSsJCWRhdGEtPmhhbmRsZSA9IDA7Ci0rCQlkYXRhLT5k Y2lkID0gMDsKLSsJCXRlc3Rlcl90ZXN0X3Bhc3NlZCgpOwotIAl9Ci0gfQotIAotQEAgLTcwOCw2 ICs3MjIsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQkJCQkJc2V0 dXBfcG93ZXJlZF9jbGllbnQsCi0gCQkJCQkJCXRlc3RfY29ubmVjdCk7Ci0gCi0rCXRlc3RfNmxv d3BhbigiQ2xpZW50IENvbm5lY3QgLSBObyBEaXNhYmxlIiwgJmNsaWVudF9jb25uZWN0X25vX2Rp c2FibGUsCi0rCQkJCQkJCXNldHVwX3Bvd2VyZWRfY2xpZW50LAotKwkJCQkJCQl0ZXN0X2Nvbm5l Y3QpOwotKwotIAl0ZXN0XzZsb3dwYW4oIkNsaWVudCBDb25uZWN0IC0gRGlzY29ubmVjdCIsICZj bGllbnRfY29ubmVjdF9kaXNjb25uZWN0LAotIAkJCQkJCQlzZXR1cF9wb3dlcmVkX2NsaWVudCwK LSAJCQkJCQkJdGVzdF9jb25uZWN0KTsKLS0tIAotMi41NC4wCi0KLQotRnJvbSAxY2ZlMmQ4YjJj YmI4YzY0NTQzOTQ2NGEyMTcwNTNkM2NkYzQxZTVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogUGF1bGkgVmlydGFuZW4gPHBhdkBpa2kuZmk+Ci1EYXRlOiBNb24sIDEzIEp1bCAyMDI2 IDE2OjUwOjI2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTldIHRvb2xzL2wyY2FwLXRlc3Rl cjogZml4IFNldCBQSFkgdGVzdCBzcHVyaW91cyBmYWlsdXJlcwotCi1TZXR0aW5nIEJUX1BIWSBk b2VzIG5vdCB0YWtlIGVmZmVjdCBpbnN0YW50YW5lb3VzbHkgYXMga2VybmVsIHdhaXRzIGZvcgot Y29udHJvbGxlciwgc28gY2hlY2tpbmcgZ2V0c29ja29wdCgpIHNvbWV0aW1lcyBmYWlscyBoZXJl LiBJbiBQSFkgdGVzdHMsCi11c2UgcmV0cnkgd2l0aCB0aW1lb3V0IHRvIGNoZWNrIGFnYWluIGxh dGVyLgotLS0tCi0gdG9vbHMvbDJjYXAtdGVzdGVyLmMgfCAxOCArKysrKysrKysrKy0tLS0tLS0K LSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL3Rvb2xzL2wyY2FwLXRlc3Rlci5jIGIvdG9vbHMvbDJjYXAtdGVzdGVyLmMKLWlu ZGV4IGE4Y2FjMzkwMmIzMi4uMjc3MWFlZTY1ODE0IDEwMDY0NAotLS0tIGEvdG9vbHMvbDJjYXAt dGVzdGVyLmMKLSsrKyBiL3Rvb2xzL2wyY2FwLXRlc3Rlci5jCi1AQCAtMjc3LDcgKzI3Nyw3IEBA IHN0YXRpYyB2b2lkIHRlc3RfZGF0YV9mcmVlKHZvaWQgKnRlc3RfZGF0YSkKLSAjZGVmaW5lIHRl c3RfbDJjYXAobmFtZSwgdHlwZSwgZGF0YSwgc2V0dXAsIGZ1bmMpIFwKLSAJZG8geyBcCi0gCQlz dHJ1Y3QgdGVzdF9kYXRhICp1c2VyOyBcCi0tCQl1c2VyID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qg dGVzdF9kYXRhKSk7IFwKLSsJCXVzZXIgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCB0ZXN0X2Rh dGEpKTsgXAotIAkJaWYgKCF1c2VyKSBcCi0gCQkJYnJlYWs7IFwKLSAJCXVzZXItPmhjaWVtdV90 eXBlID0gdHlwZTsgXAotQEAgLTE2NTcsOCArMTY1NywxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gc29j a2V0X2Nsb3NlZF9jYihHSU9DaGFubmVsICppbywgR0lPQ29uZGl0aW9uIGNvbmQsCi0gCQl0ZXN0 ZXJfcHJpbnQoImVyciAlZCAhPSAlZCBleHBlY3RlZF9lcnIiLCAtZXJyLAotIAkJCQkJCWwyZGF0 YS0+ZXhwZWN0X2Vycik7Ci0gCQl0ZXN0ZXJfdGVzdF9mYWlsZWQoKTsKLS0JfSBlbHNlCi0rCX0g ZWxzZSBpZiAoIWRhdGEtPnN0ZXApCi0gCQl0ZXN0ZXJfdGVzdF9wYXNzZWQoKTsKLSsJZWxzZQot KwkJdGVzdGVyX3Rlc3RfZmFpbGVkKCk7Ci0gCi0gCXJldHVybiBGQUxTRTsKLSB9Ci1AQCAtMTcy OSwxMiArMTczMSwxMyBAQCBzdGF0aWMgZ2Jvb2xlYW4gY2hlY2tfcGh5KGdwb2ludGVyIGFyZ3Mp Ci0gCX0KLSAKLSAJaWYgKGwyZGF0YS0+cGh5ICYmIGwyZGF0YS0+cGh5ICE9IGRhdGEtPnBoeXMp IHsKLS0JCXRlc3Rlcl93YXJuKCJwaHkgMHglMDh4ICE9IDB4JTA4eCIsIGwyZGF0YS0+cGh5LCBk YXRhLT5waHlzKTsKLS0JCXRlc3Rlcl90ZXN0X2ZhaWxlZCgpOwotLQkJZ290byBkb25lOwotKwkJ dGVzdGVyX3ByaW50KCJwaHkgMHglMDh4ICE9IDB4JTA4eCIsIGwyZGF0YS0+cGh5LCBkYXRhLT5w aHlzKTsKLSsKLSsJCS8qIFJldHJ5ICovCi0rCQlyZXR1cm4gVFJVRTsKLSAJfQotIAotLQl0ZXN0 ZXJfdGVzdF9wYXNzZWQoKTsKLSsJZGF0YS0+c3RlcC0tOwotIAotIGRvbmU6Ci0gCXNodXRkb3du KHNrLCBTSFVUX1dSKTsKLUBAIC0xNzcwLDcgKzE3NzMsOCBAQCBzdGF0aWMgaW50IGNoZWNrX3Bo eXMoc3RydWN0IHRlc3RfZGF0YSAqZGF0YSwgaW50IHNrKQotIAkJfQotIAotIAkJLyogV2FpdCBm b3IgdGhlIFBIWSB0byBjaGFuZ2UgKi8KLS0JCWdfaWRsZV9hZGQoY2hlY2tfcGh5LCBJTlRfVE9f UFRSKHNrKSk7Ci0rCQlkYXRhLT5zdGVwKys7Ci0rCQlnX3RpbWVvdXRfYWRkKDUwLCBjaGVja19w aHksIElOVF9UT19QVFIoc2spKTsKLSAKLSAJCXJldHVybiAtRUlOUFJPR1JFU1M7Ci0gCX0KLS0t IAotMi41NC4wCi0KLQotRnJvbSA3ZjgyNmQwMDNlZTdiYzA3Njk4ZGRlY2Y4MDQ2OTdkNTVlN2I5 Yzg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVyb3NlIDxmZXJvc2UyQGdtYWls LmNvbT4KLURhdGU6IFNhdCwgMTEgSnVsIDIwMjYgMDA6MDI6MzAgLTA3MDAKLVN1YmplY3Q6IFtQ QVRDSCAxNC8xOV0gc2hhcmVkL2JhcDogRml4IHJlamVjdGluZyByZS1hdHRhY2ggb2YgdGhlIHNh bWUgZmQKLQotV2hlbiB0aGUgcmVtb3RlJ3MgU1RSRUFNSU5HIEFTRSBub3RpZmljYXRpb24gYXJy aXZlcyBiZWZvcmUKLWlzb19jb25uZWN0X2NiKCkgZmlyZXMsIHRoZSByYWNlIGhhbmRsZXIgaW4g YmFwX3N0YXRlKCkKLShwcm9maWxlcy9hdWRpby9iYXAuYykgYWxyZWFkeSBhdHRhY2hlcyB0aGUg aW8gdG8gdGhlIHN0cmVhbTsgdGhlCi1jb21tZW50IHRoZXJlIG5vdGVzICJPcmRlciBvZiBTVFJF QU1JTkcgYW5kIGlzb19jb25uZWN0X2NiKCkgaXMKLW5vbmRldGVybWluaXN0aWMiLiBXaGVuIGlz b19jb25uZWN0X2NiKCkgdGhlbiBjYWxscwotYnRfYmFwX3N0cmVhbV9zZXRfaW8oKSB3aXRoIHRo ZSBzYW1lIGZkLCB0aGUgZ3VhcmQgaW4KLWJhcF91Y2FzdF9zZXRfaW8oKSBzZWVzIGFuIGF0dGFj aGVkLCBub24tY29ubmVjdGluZyBpbyBhbmQgcmV0dXJucwotZmFsc2UuIGlzb19jb25uZWN0X2Ni KCkgdHJlYXRzIHRoYXQgYXMgZmF0YWw6Ci0KLSAgcHJvZmlsZXMvYXVkaW8vYmFwLmM6aXNvX2Nv bm5lY3RfY2IoKSBVbmFibGUgdG8gc2V0IElPCi0gIHByb2ZpbGVzL2F1ZGlvL3RyYW5zcG9ydC5j OmJhcF9zdGF0ZV9jaGFuZ2VkKCkgVW5hYmxlIHRvIGdldCBzdHJlYW0gSU8KLQotYW5kIHRlYXJz IGRvd24gYSBDSVMgdGhhdCBidG1vbiBzaG93cyB3YXMgZXN0YWJsaXNoZWQgc3VjY2Vzc2Z1bGx5 Ci0oQ0lTIEVzdGFibGlzaGVkIHN0YXR1cyAwLCBib3RoIElTTyBkYXRhIHBhdGhzIHNldCB1cCku IFdpdGggYSBkZXZpY2UKLXdob3NlIFNUUkVBTUlORyBub3RpZmljYXRpb25zIGNvbnNpc3RlbnRs eSB3aW4gdGhlIHJhY2UsIHN0cmVhbWluZyBpcwotbmV2ZXIgcG9zc2libGUuCi0KLVRyZWF0IHJl LWF0dGFjaGluZyB0aGUgZmQgdGhhdCBpcyBhbHJlYWR5IGF0dGFjaGVkIGFzIGEgbm8tb3Agc3Vj Y2VzcywKLXdpdGhvdXQgcmUtcnVubmluZyB0aGUgcGVyLXN0cmVhbSBzdGF0ZSBhY3Rpb25zICh3 aGljaCB3b3VsZCBzZW5kIGEKLWR1cGxpY2F0ZSBSZWNlaXZlciBTdGFydCBSZWFkeSB0byBhIGxp bmtlZCBzb3VyY2UgQVNFKS4gQXR0YWNoaW5nIGEKLWRpZmZlcmVudCBmZCB0byBhIG5vbi1jb25u ZWN0aW5nIGlvIHJlbWFpbnMgYW4gZXJyb3IuCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20v Ymx1ZXovYmx1ZXovaXNzdWVzLzIyMjMKLS0tLQotIHNyYy9zaGFyZWQvYmFwLmMgfCAxMSArKysr KysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Ci0KLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2JhcC5jIGIvc3JjL3NoYXJlZC9iYXAuYwotaW5k ZXggZGI2ZjRmMjA0Nzg3Li4xNjYwYjhiMmMxY2YgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2Jh cC5jCi0rKysgYi9zcmMvc2hhcmVkL2JhcC5jCi1AQCAtMjU4OSw5ICsyNTg5LDE4IEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgYmFwX2JjYXN0X3JlbGVhc2Uoc3RydWN0IGJ0X2JhcF9zdHJlYW0gKnN0 cmVhbSwKLSAKLSBzdGF0aWMgYm9vbCBiYXBfdWNhc3Rfc2V0X2lvKHN0cnVjdCBidF9iYXBfc3Ry ZWFtICpzdHJlYW0sIGludCBmZCkKLSB7Ci0tCWlmICghc3RyZWFtIHx8IChmZCA+PSAwICYmIHN0 cmVhbS0+aW8gJiYgIXN0cmVhbS0+aW8tPmNvbm5lY3RpbmcpKQotKwlpZiAoIXN0cmVhbSkKLSAJ CXJldHVybiBmYWxzZTsKLSAKLSsJLyoKLSsJICogVGhlIFNUUkVBTUlORyBzdGF0ZSBoYW5kbGVy IG1heSBhbHJlYWR5IGhhdmUgYXR0YWNoZWQgdGhpcyBpbwotKwkgKiBpZiB0aGUgcmVtb3RlJ3Mg QVNFIG5vdGlmaWNhdGlvbiByYWNlZCBhaGVhZCBvZiBpc29fY29ubmVjdF9jYgotKwkgKiAoc2Vl IGJhcF9zdGF0ZSgpIGluIHByb2ZpbGVzL2F1ZGlvL2JhcC5jKS4gUmUtYXR0YWNoaW5nIHRoZQot KwkgKiBzYW1lIGZkIGlzIGEgbm8tb3Agc3VjY2Vzczsgb25seSBhIGRpZmZlcmVudCBmZCBpcyBh biBlcnJvci4KLSsJICovCi0rCWlmIChmZCA+PSAwICYmIHN0cmVhbS0+aW8gJiYgIXN0cmVhbS0+ aW8tPmNvbm5lY3RpbmcpCi0rCQlyZXR1cm4gc3RyZWFtX2lvX2dldF9mZChzdHJlYW0tPmlvKSA9 PSBmZDsKLSsKLSAJYmFwX3N0cmVhbV9zZXRfaW8oc3RyZWFtLCBJTlRfVE9fUFRSKGZkKSk7Ci0g Ci0gCXF1ZXVlX2ZvcmVhY2goc3RyZWFtLT5saW5rcywgYmFwX3N0cmVhbV9zZXRfaW8sIElOVF9U T19QVFIoZmQpKTsKLS0tIAotMi41NC4wCi0KLQotRnJvbSBiYzQ5ZDYzMjEwZjIzZTA3MjRlMDdm M2U1ODM4YWZmMDVmYmFhNGFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bGkg VmlydGFuZW4gPHBhdkBpa2kuZmk+Ci1EYXRlOiBTYXQsIDExIEp1bCAyMDI2IDEyOjE1OjI1ICsw MzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMTldIGxpYjogYWRkIGlzb19kYXRhXyogbWFjcm9zIHRv IGhjaS5oCi0KLUFkZCBtYWNyb3MgZm9yIHBhcnNpbmcgSVNPIERhdGEgUGFja2V0IGhlYWRlciBp dGVtcy4KLS0tLQotIGxpYi9ibHVldG9vdGgvaGNpLmggfCA2ICsrKysrKwotIDEgZmlsZSBjaGFu Z2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYi9ibHVldG9vdGgvaGNpLmgg Yi9saWIvYmx1ZXRvb3RoL2hjaS5oCi1pbmRleCA3MzI0NzdlYzRiNTUuLjJlNGFhMzk0ZTEzZSAx MDA2NDQKLS0tLSBhL2xpYi9ibHVldG9vdGgvaGNpLmgKLSsrKyBiL2xpYi9ibHVldG9vdGgvaGNp LmgKLUBAIC0yMzM1LDYgKzIzMzUsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICNkZWZpbmUgaXNv X2ZsYWdzX3RzKGYpCQkoKGYgPj4gMikgJiAweDAwMDEpCi0gI2RlZmluZSBpc29fZmxhZ3NfcGFj ayhwYiwgdHMpCSgocGIgJiAweDAzKSB8ICgodHMgJiAweDAxKSA8PCAyKSkKLSAKLSsvKiBJU08g ZGF0YSBsZW5ndGggYW5kIGZsYWdzIHBhY2svdW5wYWNrICovCi0rI2RlZmluZSBpc29fZGF0YV9s ZW5fcGFjayhoLCBmKQkoKF9fdTE2KSAoKChoKSAmIDB4MGZmZikgfCBcCi0rCQkJCQkJICAoKChm KSAmIDB4MykgPDwgMTQpKSkKLSsjZGVmaW5lIGlzb19kYXRhX2xlbihoKQkJKChoKSAmIDB4MGZm ZikKLSsjZGVmaW5lIGlzb19kYXRhX2ZsYWdzKGgpCSgoaCkgPj4gMTQpCi0rCi0gI2VuZGlmIC8q IF9OT19IQ0lfREVGUyAqLwotIAotIC8qIEhDSSBTb2NrZXQgb3B0aW9ucyAqLwotLS0gCi0yLjU0 LjAKLQotCi1Gcm9tIDEzMDlkNWY5MzA1ZDEzMmJjMDk3MDVmZmE0YWZhMTEzYzY0OTFjMmIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsaSBWaXJ0YW5lbiA8cGF2QGlraS5maT4K LURhdGU6IFNhdCwgMTEgSnVsIDIwMjYgMTI6MTU6MjYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAx Ni8xOV0gbW9uaXRvcjogZml4IHBhcnNpbmcgb2YgSVNPIHBhY2tldCBkYXRhIGhlYWRlciBhbmQg c2xlbgotIGNoZWNrCi0KLUNoZWNrIFBCIGZsYWcgdG8gc2VlIHdoZXRoZXIgdGltZXN0YW1wIGFu ZCBkYXRhIGhlYWRlcnMgYXJlIHByZXNlbnQuCi0KLUNoZWNrIGJvdW5kcyBiZWZvcmUgYWNjZXNz aW5nIGRhdGEuIEJ1bXAgaGFuZGxlX3N0ciBsZW5ndGggdG8gZml0Ci1tYXhpbXVtLgotCi1CeXRl c3dhcCBsZW5ndGggdmFsdWVzLCBhbmQgbWFzayBQYWNrZXRfU3RhdHVzX0ZsYWcgY29ycmVjdGx5 LiAgUmVtb3ZlCi1TRFUgbGVuZ3RoIGNoZWNrLCBhcyB3ZSBhcmUgbm90IHRyYWNraW5nIGZyYWdt ZW50YXRpb24uCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZXovYmx1ZXovaXNzdWVz LzIyOTIKLUFzc2lzdGVkLWJ5OiBHTE0tNS4yCi0tLS0KLSBtb25pdG9yL3BhY2tldC5jIHwgNjkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxl IGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvbW9uaXRvci9wYWNrZXQuYyBiL21vbml0b3IvcGFja2V0LmMKLWluZGV4IGJhNmZmOGU4ZTU1 MS4uZmIwNTNlMmI0MTNmIDEwMDY0NAotLS0tIGEvbW9uaXRvci9wYWNrZXQuYwotKysrIGIvbW9u aXRvci9wYWNrZXQuYwotQEAgLTE0NTQxLDIwICsxNDU0MSwyMyBAQCB2b2lkIHBhY2tldF9oY2lf aXNvZGF0YShzdHJ1Y3QgdGltZXZhbCAqdHYsIHN0cnVjdCB1Y3JlZCAqY3JlZCwgdWludDE2X3Qg aW5kZXgsCi0gCQkJCWJvb2wgaW4sIGNvbnN0IHZvaWQgKmRhdGEsIHVpbnQxNl90IHNpemUpCi0g ewotIAljb25zdCBzdHJ1Y3QgYnRfaGNpX2lzb19oZHIgKmhkciA9IGRhdGE7Ci0tCWNvbnN0IHN0 cnVjdCBidF9oY2lfaXNvX2RhdGFfc3RhcnQgKnN0YXJ0OwotLQl1aW50MTZfdCBoYW5kbGUgPSBs ZTE2X3RvX2NwdShoZHItPmhhbmRsZSk7Ci0tCXVpbnQ4X3QgZmxhZ3MgPSBhY2xfZmxhZ3MoaGFu ZGxlKTsKLSsJdWludDE2X3QgaGFuZGxlLCBkbGVuOwotKwl1aW50OF90IGZsYWdzLCBwYl9mbGFn OwotIAljaGFyIGxhYmVsWzhdOwotLQljaGFyIGhhbmRsZV9zdHJbNTZdLCBleHRyYV9zdHJbNTBd LCB0c19zdHJbMTZdID0geyAwIH07Ci0tCXN0cnVjdCBpbmRleF9idWZfcG9vbCAqcG9vbCA9ICZp bmRleF9saXN0W2luZGV4XS5pc287Ci0rCWNoYXIgaGFuZGxlX3N0clsxMDBdLCBleHRyYV9zdHJb NzBdLCB0c19zdHJbMTZdID0geyAwIH07Ci0rCWNoYXIgc25fc3RyWzE2XSA9IHsgMCB9LCBzbGVu X3N0clszMl0gPSB7IDAgfTsKLSsJc3RydWN0IGluZGV4X2J1Zl9wb29sICpwb29sOwotIAlzdHJ1 Y3QgcGFja2V0X2Nvbm5fZGF0YSAqY29ubjsKLSAJc2l6ZV90IHRzX3NpemUgPSAwOwotKwlib29s IGhhdmVfaGRyOwotIAotIAlpZiAoaW5kZXggPj0gTUFYX0lOREVYKSB7Ci0gCQlwcmludF9maWVs ZCgiSW52YWxpZCBpbmRleCAoJWQpLiIsIGluZGV4KTsKLSAJCXJldHVybjsKLSAJfQotIAotKwlw b29sID0gJmluZGV4X2xpc3RbaW5kZXhdLmlzbzsKLSsKLSAJaW5kZXhfbGlzdFtpbmRleF0uZnJh bWUrKzsKLSAKLSAJaWYgKHNpemUgPCBzaXplb2YoKmhkcikpCi1AQCAtMTQ1NjMsMTEgKzE0NTY2 LDE4IEBAIHZvaWQgcGFja2V0X2hjaV9pc29kYXRhKHN0cnVjdCB0aW1ldmFsICp0diwgc3RydWN0 IHVjcmVkICpjcmVkLCB1aW50MTZfdCBpbmRleCwKLSAJZGF0YSArPSBzaXplb2YoKmhkcik7Ci0g CXNpemUgLT0gc2l6ZW9mKCpoZHIpOwotIAotKwloYW5kbGUgPSBsZTE2X3RvX2NwdShoZHItPmhh bmRsZSk7Ci0rCWZsYWdzID0gYWNsX2ZsYWdzKGhhbmRsZSk7Ci0rCXBiX2ZsYWcgPSBpc29fZmxh Z3NfcGIoZmxhZ3MpOwotKwlkbGVuID0gbGUxNl90b19jcHUoaGRyLT5kbGVuKTsKLSsKLSsJaGF2 ZV9oZHIgPSAocGJfZmxhZyA9PSAweDAwIHx8IHBiX2ZsYWcgPT0gMHgwMik7Ci0rCi0gCS8qIERl dGVjdCBpZiB0aW1lc3RhbXAgZmllbGQgaXMgcHJlc2V0ICovCi0gCWlmIChpc29fZmxhZ3NfdHMo ZmxhZ3MpKSB7Ci0gCQl0c19zaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKLSAKLS0JCWlmIChzaXpl IDwgdHNfc2l6ZSkKLSsJCWlmIChzaXplIDwgdHNfc2l6ZSB8fCAhaGF2ZV9oZHIpCi0gCQkJZ290 byBtYWxmb3JtZWQ7Ci0gCi0gCQlzbnByaW50Zih0c19zdHIsIHNpemVvZih0c19zdHIpLCAiIHRz ICV1IiwgZ2V0X2xlMzIoZGF0YSkpOwotQEAgLTE0NTc2LDIwICsxNDU4Niw0MCBAQCB2b2lkIHBh Y2tldF9oY2lfaXNvZGF0YShzdHJ1Y3QgdGltZXZhbCAqdHYsIHN0cnVjdCB1Y3JlZCAqY3JlZCwg dWludDE2X3QgaW5kZXgsCi0gCQlzaXplIC09IHRzX3NpemU7Ci0gCX0KLSAKLS0Jc3RhcnQgPSBk YXRhOwotKwlpZiAoaGF2ZV9oZHIpIHsKLSsJCWNvbnN0IHN0cnVjdCBidF9oY2lfaXNvX2RhdGFf c3RhcnQgKnN0YXJ0ID0gZGF0YTsKLSsJCXVpbnQ4X3Qgc2ZsYWdzOwotKwkJdWludDE2X3Qgc2xl bjsKLSsKLSsJCWlmIChzaXplIDwgc2l6ZW9mKCpzdGFydCkpCi0rCQkJZ290byBtYWxmb3JtZWQ7 Ci0rCi0rCQlzZmxhZ3MgPSBpc29fZGF0YV9mbGFncyhsZTE2X3RvX2NwdShzdGFydC0+c2xlbikp OwotKwkJc2xlbiA9IGlzb19kYXRhX2xlbihsZTE2X3RvX2NwdShzdGFydC0+c2xlbikpOwotKwot KwkJaWYgKHNsZW4pCi0rCQkJc25wcmludGYoc2xlbl9zdHIsIHNpemVvZihzbGVuX3N0ciksICIg c2xlbiAldSIsIHNsZW4pOwotKwkJaWYgKHNmbGFncykKLSsJCQlzbnByaW50ZihzbGVuX3N0ciAr IHN0cmxlbihzbGVuX3N0ciksCi0rCQkJCQlzaXplb2Yoc2xlbl9zdHIpIC0gc3RybGVuKHNsZW5f c3RyKSwKLSsJCQkJCSIgc2ZsYWdzICV1Iiwgc2ZsYWdzKTsKLSsKLSsJCXNucHJpbnRmKHNuX3N0 ciwgc2l6ZW9mKHNuX3N0ciksICIgU04gJXUiLAotKwkJCQkJCQlsZTE2X3RvX2NwdShzdGFydC0+ c24pKTsKLSsJfQotKwotIAljb25uID0gcGFja2V0X2dldF9jb25uX2RhdGEoaGFuZGxlKTsKLSAK LSAJaWYgKCFpbiAmJiBwb29sLT50b3RhbCkKLS0JCXNwcmludGYoaGFuZGxlX3N0ciwgIkhhbmRs ZSAlZCBbJXUvJXVdIFNOICV1IiwKLS0JCQlhY2xfaGFuZGxlKGhhbmRsZSksICsrcG9vbC0+dHgs IHBvb2wtPnRvdGFsLCBzdGFydC0+c24pOwotKwkJc3ByaW50ZihoYW5kbGVfc3RyLCAiSGFuZGxl ICVkIFsldS8ldV0lcyIsCi0rCQkJYWNsX2hhbmRsZShoYW5kbGUpLCArK3Bvb2wtPnR4LCBwb29s LT50b3RhbCwgc25fc3RyKTsKLSAJZWxzZQotLQkJc3ByaW50ZihoYW5kbGVfc3RyLCAiSGFuZGxl ICV1IFNOICV1IiwgYWNsX2hhbmRsZShoYW5kbGUpLAotLQkJCXN0YXJ0LT5zbik7Ci0rCQlzcHJp bnRmKGhhbmRsZV9zdHIsICJIYW5kbGUgJXUlcyIsIGFjbF9oYW5kbGUoaGFuZGxlKSwgc25fc3Ry KTsKLSAKLSAJaGFuZGxlX3N0cl9hcHBlbmRfYWRkcihoYW5kbGVfc3RyLCBjb25uKTsKLSAKLS0J c3ByaW50ZihleHRyYV9zdHIsICJmbGFncyAweCUyLjJ4IGRsZW4gJXUgc2xlbiAldSVzIiwgZmxh Z3MsIGhkci0+ZGxlbiwKLS0JCQkJCQkJc3RhcnQtPnNsZW4sIHRzX3N0cik7Ci0rCXNwcmludGYo ZXh0cmFfc3RyLCAiZmxhZ3MgMHglMi4yeCBkbGVuICV1JXMlcyIsIGZsYWdzLCBkbGVuLCBzbGVu X3N0ciwKLSsJCQkJCQkJCQl0c19zdHIpOwotIAotIAlpZiAoY29ubikKLSAJCXNwcmludGYobGFi ZWwsICIlcyIsIGNvbm5fdHlwZV9zdHIoY29ubi0+dHlwZSkpOwotQEAgLTE0NjAxLDE4ICsxNDYz MSwxMSBAQCB2b2lkIHBhY2tldF9oY2lfaXNvZGF0YShzdHJ1Y3QgdGltZXZhbCAqdHYsIHN0cnVj dCB1Y3JlZCAqY3JlZCwgdWludDE2X3QgaW5kZXgsCi0gCi0gCWlmICghaW4pCi0gCQlwYWNrZXRf ZW5xdWV1ZV90eCh0diwgYWNsX2hhbmRsZShoYW5kbGUpLAotLQkJCQkJaW5kZXhfbGlzdFtpbmRl eF0uZnJhbWUsIGhkci0+ZGxlbik7Ci0rCQkJCQlpbmRleF9saXN0W2luZGV4XS5mcmFtZSwgZGxl bik7Ci0gCi0tCWlmIChzaXplICsgdHNfc2l6ZSAhPSBoZHItPmRsZW4pIHsKLSsJaWYgKHNpemUg KyB0c19zaXplICE9IGRsZW4pIHsKLSAJCXByaW50X3RleHQoQ09MT1JfRVJST1IsICJpbnZhbGlk IHBhY2tldCBzaXplICglZCAhPSAlZCkiLAotLQkJCQkJCXNpemUgKyAoaW50KXRzX3NpemUsIGhk ci0+ZGxlbik7Ci0tCQlwYWNrZXRfaGV4ZHVtcChkYXRhLCBzaXplKTsKLS0JCXJldHVybjsKLS0J fQotLQotLQlpZiAoc2l6ZSAhPSBzdGFydC0+c2xlbiArIDQpIHsKLS0JCXByaW50X3RleHQoQ09M T1JfRVJST1IsICJpbnZhbGlkIHBhY2tldCBzbGVuICglZCs0ICE9ICVkKSIsCi0tCQkJCQkJCXN0 YXJ0LT5zbGVuLCBzaXplKTsKLSsJCQkJCQlzaXplICsgKGludCl0c19zaXplLCBkbGVuKTsKLSAJ CXBhY2tldF9oZXhkdW1wKGRhdGEsIHNpemUpOwotIAkJcmV0dXJuOwotIAl9Ci0tLSAKLTIuNTQu MAotCi0KLUZyb20gNzQ4MmFjZWVjZTcwNDRlNjg4ZjIwZjExMzI2M2I1MGMyMWQ2OWZiNiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9Gcj1DMz1BOWQ9QzM9QTlyaWM9 MjBEYW5pcz89IDxmcmVkZXJpYy5kYW5pc0Bjb2xsYWJvcmEuY29tPgotRGF0ZTogV2VkLCAxNSBK dWwgMjAyNiAxNzo1MTo0NCArMDIwMAotU3ViamVjdDogW1BBVENIIDE3LzE5XSBwcm9maWxlcy9h dWRpbzogZml4IFVBRiBvbiBleHRlcm5hbCBtZWRpYSBzZXJ2aWNlCi0gdGVhcmRvd24KLQotS2Vl cCBtZWRpYV9hcHAgZW5kcG9pbnQvcGxheWVyIHF1ZXVlcyBpbiBzeW5jIHdpdGggb2JqZWN0IGxp ZmV0aW1lIHRvCi1hdm9pZCBzdGFsZSBwb2ludGVycyBkdXJpbmcgcHJveHkgcmVtb3ZhbC4KLQot V2hlbiBhZG1pbiBhbGxvd2xpc3QgcmVhcHBseSByZW1vdmVzIGF1ZGlvIHNlcnZpY2VzLCBlbmRw b2ludC9wbGF5ZXIKLW9iamVjdHMgbWF5IGJlIGRlc3Ryb3llZCB0aHJvdWdoIG5vbi1wcm94eSBw YXRocyBmaXJzdC4KLUxhdGVyIHByb3h5X3JlbW92ZWRfY2IgY2FsbHMgcXVldWVfcmVtb3ZlX2lm KCkgYW5kIG1hdGNoaW5nIGJ5IHBhdGgKLWNhbiBkZXJlZmVyZW5jZSBmcmVlZCBlbmRwb2ludC9w bGF5ZXIgbWVtb3J5LgotCi1GaXggYnk6Ci0tIGFkZGluZyBtZWRpYV9hcHAgYmFjay1yZWZlcmVu Y2VzIGluIG1lZGlhX2VuZHBvaW50L2xvY2FsX3BsYXllcgotLSB1bmxpbmtpbmcgZnJvbSBhcHAg cXVldWVzIGluc2lkZSBtZWRpYV9lbmRwb2ludF9yZW1vdmUgb3IKLSAgbG9jYWxfcGxheWVyX3Jl bW92ZQotLSBzZXR0aW5nIG93bmVyc2hpcCB3aGVuIGFwcC1yZWdpc3RlcmluZyBlbmRwb2ludC9w bGF5ZXIgb2JqZWN0cwotCi1UaGlzIHByZXZlbnRzIGhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gbWF0 Y2hfZW5kcG9pbnRfYnlfcGF0aCBvcgotbWF0Y2hfcGxheWVyX2J5X3BhdGggZHVyaW5nIHNlcnZp Y2UgZGlzY29ubmVjdC4KLQotQXNzaXN0ZWQtYnk6IEdQVDpHUFQtNS4zLUNvZGV4Ci0tLS0KLSBw cm9maWxlcy9hdWRpby9tZWRpYS5jIHwgMTYgKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFu Z2VkLCAxNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wcm9maWxlcy9hdWRpby9tZWRp YS5jIGIvcHJvZmlsZXMvYXVkaW8vbWVkaWEuYwotaW5kZXggNWQ5ZWEyY2JjYmNlLi45NWY5NTgw YjA4ZmYgMTAwNjQ0Ci0tLS0gYS9wcm9maWxlcy9hdWRpby9tZWRpYS5jCi0rKysgYi9wcm9maWxl cy9hdWRpby9tZWRpYS5jCi1AQCAtMTM2LDEyICsxMzYsMTQgQEAgc3RydWN0IG1lZGlhX2VuZHBv aW50IHsKLSAJZ3VpbnQJCQl3YXRjaDsKLSAJR1NMaXN0CQkJKnJlcXVlc3RzOwotIAlzdHJ1Y3Qg bWVkaWFfYWRhcHRlcgkqYWRhcHRlcjsKLSsJc3RydWN0IG1lZGlhX2FwcAkqYXBwOwotIAlHU0xp c3QJCQkqdHJhbnNwb3J0czsKLSAJc3RydWN0IGVuZHBvaW50X2ZlYXR1cmVzCWZlYXR1cmVzOwot IH07Ci0gCi0gc3RydWN0IGxvY2FsX3BsYXllciB7Ci0gCXN0cnVjdCBtZWRpYV9hZGFwdGVyCSph ZGFwdGVyOwotKwlzdHJ1Y3QgbWVkaWFfYXBwCSphcHA7Ci0gCWNoYXIJCQkqc2VuZGVyOwkvKiBQ bGF5ZXIgREJ1cyBidXMgaWQgKi8KLSAJY2hhcgkJCSpwYXRoOwkJLyogUGxheWVyIG9iamVjdCBw YXRoICovCi0gCUdIYXNoVGFibGUJCSpzZXR0aW5nczsJLyogUGxheWVyIHNldHRpbmdzICovCi1A QCAtMzA1LDYgKzMwNywxMSBAQCBzdGF0aWMgdm9pZCBtZWRpYV9lbmRwb2ludF9yZW1vdmUodm9p ZCAqZGF0YSkKLSAJfQotICNlbmRpZgotIAotKwlpZiAoZW5kcG9pbnQtPmFwcCkgewotKwkJcXVl dWVfcmVtb3ZlKGVuZHBvaW50LT5hcHAtPmVuZHBvaW50cywgZW5kcG9pbnQpOwotKwkJZW5kcG9p bnQtPmFwcCA9IE5VTEw7Ci0rCX0KLSsKLSAJaW5mbygiRW5kcG9pbnQgdW5yZWdpc3RlcmVkOiBz ZW5kZXI9JXMgcGF0aD0lcyIsIGVuZHBvaW50LT5zZW5kZXIsCi0gCQkJZW5kcG9pbnQtPnBhdGgp OwotIAotQEAgLTIwNzYsNiArMjA4MywxMSBAQCBzdGF0aWMgdm9pZCBsb2NhbF9wbGF5ZXJfcmVt b3ZlKHZvaWQgKmRhdGEpCi0gewotIAlzdHJ1Y3QgbG9jYWxfcGxheWVyICptcCA9IGRhdGE7Ci0g Ci0rCWlmIChtcC0+YXBwKSB7Ci0rCQlxdWV1ZV9yZW1vdmUobXAtPmFwcC0+cGxheWVycywgbXAp OwotKwkJbXAtPmFwcCA9IE5VTEw7Ci0rCX0KLSsKLSAJaW5mbygiUGxheWVyIHVucmVnaXN0ZXJl ZDogc2VuZGVyPSVzIHBhdGg9JXMiLCBtcC0+c2VuZGVyLCBtcC0+cGF0aCk7Ci0gCi0gCWxvY2Fs X3BsYXllcl9kZXN0cm95KG1wKTsKLUBAIC0zMTY4LDYgKzMxODAsOCBAQCBzdGF0aWMgdm9pZCBh cHBfcmVnaXN0ZXJfZW5kcG9pbnQodm9pZCAqZGF0YSwgdm9pZCAqdXNlcl9kYXRhKQotIAkJcmV0 dXJuOwotIAl9Ci0gCi0rCWVuZHBvaW50LT5hcHAgPSBhcHA7Ci0rCi0gCXF1ZXVlX3B1c2hfdGFp bChhcHAtPmVuZHBvaW50cywgZW5kcG9pbnQpOwotIAotIAlyZXR1cm47Ci1AQCAtMzE5Niw2ICsz MjEwLDggQEAgc3RhdGljIHZvaWQgYXBwX3JlZ2lzdGVyX3BsYXllcih2b2lkICpkYXRhLCB2b2lk ICp1c2VyX2RhdGEpCi0gCWlmICghcGxheWVyKQotIAkJcmV0dXJuOwotIAotKwlwbGF5ZXItPmFw cCA9IGFwcDsKLSsKLSAJaWYgKGdfZGJ1c19wcm94eV9nZXRfcHJvcGVydHkocHJveHksICJQbGF5 YmFja1N0YXR1cyIsICZpdGVyKSkgewotIAkJaWYgKCFzZXRfc3RhdHVzKHBsYXllciwgJml0ZXIp KQotIAkJCWdvdG8gZmFpbDsKLS0tIAotMi41NC4wCi0KLQotRnJvbSBiMGFiZTIzZjU4ZjFlY2M0 NGQ5ZDBiNmIzMjhiZTcyZDJkMjExM2I4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog TmFnYSBCaGF2YW5pIEFrZWxsYSA8bmFnYS5ha2VsbGFAb3NzLnF1YWxjb21tLmNvbT4KLURhdGU6 IFdlZCwgMTUgSnVsIDIwMjYgMTQ6MDk6NTYgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSCAxOC8xOV0g ZG9jL29yZy5ibHVlei5DaGFubmVsU291bmRpbmcxOkFkZCBVc2VkIGJ5IHJlZmVyZW5jZQotIGFu ZCBFeGFtcGxlcwotCi1BZGQgOlVzZWQgYnk6IGZpZWxkIGxpbmtpbmcgdG8gYmx1ZXRvb3RoY3Rs IGNzIHN1Ym1lbnUgYW5kCi1FeGFtcGxlcyBzZWN0aW9uIHNob3dpbmcgY29ycmVzcG9uZGluZyBi bHVldG9vdGhjdGwgY3MgY29tbWFuZHMKLWZvciBELUJ1cyBtZXRob2RzCi0tLS0KLSBNYWtlZmls ZS5hbSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSBkb2Mvb3JnLmJsdWV6LkNoYW5u ZWxTb3VuZGluZzEucnN0IHwgNTM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBm aWxlcyBjaGFuZ2VkLCA1MzYgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2Mv b3JnLmJsdWV6LkNoYW5uZWxTb3VuZGluZzEucnN0Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5h bSBiL01ha2VmaWxlLmFtCi1pbmRleCA3NmM0YWI1ZDRmNGUuLjIzYjk2YzJlMzAzZiAxMDA2NDQK LS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTQwNSw2ICs0MDUsNyBA QCBtYW5fTUFOUyArPSBkb2Mvb3JnLmJsdWV6LlRlbGVwaG9ueS41IGRvYy9vcmcuYmx1ZXouQ2Fs bC41Ci0gbWFuX01BTlMgKz0gZG9jL29yZy5ibHVlei5UaGVybW9tZXRlck1hbmFnZXIuNSBcCi0g CQlkb2Mvb3JnLmJsdWV6LlRoZXJtb21ldGVyLjUgXAotIAkJZG9jL29yZy5ibHVlei5UaGVybW9t ZXRlcldhdGNoZXIuNQotK21hbl9NQU5TICs9IGRvYy9vcmcuYmx1ZXouQ2hhbm5lbFNvdW5kaW5n MS41Ci0gZW5kaWYKLSBtYW51YWxfcGFnZXMgKz0gZG9jL2JsdWV0b290aGQuOAotIG1hbnVhbF9w YWdlcyArPSBkb2MvaGNpLjcgZG9jL21nbXQuNyBkb2MvbDJjYXAuNyBkb2MvcmZjb21tLjcgZG9j L3Njby43IFwKLUBAIC00NDUsNiArNDQ2LDcgQEAgbWFudWFsX3BhZ2VzICs9IGRvYy9vcmcuYmx1 ZXouVGVsZXBob255LjUgZG9jL29yZy5ibHVlei5DYWxsLjUKLSBtYW51YWxfcGFnZXMgKz0gZG9j L29yZy5ibHVlei5UaGVybW9tZXRlck1hbmFnZXIuNSBcCi0gCQlkb2Mvb3JnLmJsdWV6LlRoZXJt b21ldGVyLjUgXAotIAkJZG9jL29yZy5ibHVlei5UaGVybW9tZXRlcldhdGNoZXIuNQotK21hbnVh bF9wYWdlcyArPSBkb2Mvb3JnLmJsdWV6LkNoYW5uZWxTb3VuZGluZzEuNQotIAotIEVYVFJBX0RJ U1QgKz0gc3JjL2dlbmJ1aWx0aW4gc3JjL2JsdWV0b290aC5jb25mIFwKLSAJCQlzcmMvbWFpbi5j b25mIHByb2ZpbGVzL25ldHdvcmsvbmV0d29yay5jb25mIFwKLWRpZmYgLS1naXQgYS9kb2Mvb3Jn LmJsdWV6LkNoYW5uZWxTb3VuZGluZzEucnN0IGIvZG9jL29yZy5ibHVlei5DaGFubmVsU291bmRp bmcxLnJzdAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uYzA2ZTFk NzI4NWUwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9kb2Mvb3JnLmJsdWV6LkNoYW5uZWxTb3VuZGlu ZzEucnN0Ci1AQCAtMCwwICsxLDUzNCBAQAotKz09PT09PT09PT09PT09PT09PT09PT09PT09Ci0r b3JnLmJsdWV6LkNoYW5uZWxTb3VuZGluZzEKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PQot KwotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLStCbHVl WiBELUJ1cyBDaGFubmVsIFNvdW5kaW5nIEFQSSBkb2N1bWVudGF0aW9uCi0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKwotKzpWZXJzaW9uOiBCbHVlWgot KzpEYXRlOiBKdW5lIDIwMjYKLSs6TWFudWFsIHNlY3Rpb246IDUKLSs6TWFudWFsIGdyb3VwOiBM aW51eCBTeXN0ZW0gQWRtaW5pc3RyYXRpb24KLSsKLStJbnRlcmZhY2UKLSs9PT09PT09PT0KLSsK LSs6U2VydmljZToJb3JnLmJsdWV6Ci0rOkludGVyZmFjZToJb3JnLmJsdWV6LkNoYW5uZWxTb3Vu ZGluZzEKLSs6T2JqZWN0IHBhdGg6CVt2YXJpYWJsZSBwcmVmaXhdL3toY2kwLGhjaTEsLi4ufS9k ZXZfWFhfWFhfWFhfWFhfWFhfWFgKLSs6VXNlZCBieToJKipibHVldG9vdGhjdGwoMSkqKiwgKipi bHVldG9vdGhjdGwtY3MoMSkqKgotKwotK01ldGhvZHMKLSstLS0tLS0tCi0rCi0rdm9pZCBTdGFy dE1lYXN1cmVtZW50KGRpY3QgcGFyYW1zKQotK2BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg YGBgYGAKLSsKLStTdGFydHMgYSBDaGFubmVsIFNvdW5kaW5nIGRpc3RhbmNlIG1lYXN1cmVtZW50 IHByb2NlZHVyZSBvbiB0aGUgY29ubmVjdGVkCi0rZGV2aWNlLiBBbGwgY29uZmlndXJhdGlvbiBp cyBzdXBwbGllZCBpbiBhIHNpbmdsZSBgYGF7c3Z9YGAgZGljdGlvbmFyeS4KLStBbnkga2V5IHRo YXQgaXMgb21pdHRlZCByZXRhaW5zIGl0cyBjdXJyZW50IHZhbHVlIGluIHRoZSBkYWVtb24uCi0r Ci0rVGhlIGRldmljZSB0byBtZWFzdXJlIGlzIGlkZW50aWZpZWQgYnkgdGhlIEQtQnVzIG9iamVj dCBwYXRoIG9uIHdoaWNoCi0rdGhpcyBtZXRob2QgaXMgY2FsbGVkCi0rKGBgW3ZhcmlhYmxlIHBy ZWZpeF0ve2hjaTAsaGNpMSwuLi59L2Rldl9YWF9YWF9YWF9YWF9YWF9YWGBgKS4KLStPbmx5IG9u ZSBtZWFzdXJlbWVudCBwZXIgZGV2aWNlIG9iamVjdCBtYXkgYmUgYWN0aXZlIGF0IGEgdGltZS4g Q2FsbGluZwotKyoqU3RhcnRNZWFzdXJlbWVudCoqIHdoaWxlIGEgc2Vzc2lvbiBpcyBhbHJlYWR5 IGFjdGl2ZSByZXR1cm5zCi0rYGBvcmcuYmx1ZXouRXJyb3IuSW5Qcm9ncmVzc2BgLgotKwotK1do ZW4gYGByb2xlYGAgaXMgUmVmbGVjdG9yIChgYDB4MDJgYCksIHRoaXMgbWV0aG9kIGRvZXMgbm90 IHN0YXJ0IGEgQ1MKLStkaXN0YW5jZSBtZWFzdXJlbWVudDogYSBSZWZsZWN0b3IgbmV2ZXIgaW5p dGlhdGVzIGEgcHJvY2VkdXJlIGxvY2FsbHksCi0rc28gaXQgY2Fubm90IHN0YXJ0IG9uZSB2aWEg dGhpcyBjYWxsLiBJbnN0ZWFkLCBhbGwgZ2l2ZW4gY29uZmlndXJhdGlvbgotK2lzIGFwcGxpZWQg YW5kIHN0b3JlZCBzbyB0aGUgY29udHJvbGxlciBpcyByZWFkeSB0byByZXNwb25kIG9uY2UgYQot K3JlbW90ZSBJbml0aWF0b3IgYmVnaW5zIGEgcHJvY2VkdXJlLCBhbmQgdGhlIG1ldGhvZCByZXR1 cm5zIHN1Y2Nlc3MKLSt3aXRob3V0IGFybWluZyBhIGxvY2FsIG1lYXN1cmVtZW50IHNlc3Npb24u IFRoZSBgYEFjdGl2ZWBgIHByb3BlcnR5Ci0rb25seSB0cmFuc2l0aW9ucyB0byBgYHRydWVgYCB3 aGVuIGEgcmVtb3RlLWluaXRpYXRlZCBwcm9jZWR1cmUKLSthY3R1YWxseSBzdGFydHMsIHdoaWNo IG1heSBoYXBwZW4gd2VsbCBhZnRlciB0aGlzIG1ldGhvZCByZXR1cm5zIChvcgotK25vdCBhdCBh bGwsIGlmIHRoZSByZW1vdGUgbmV2ZXIgaW5pdGlhdGVzIG9uZSkuIENsaWVudHMgdGhhdCB3YXRj aAotK2BgUHJvcGVydGllc0NoYW5nZWRgYCBmb3IgYGBBY3RpdmVgYCAoYXMgKipibHVldG9vdGhj dGwtY3MoMSkqKiBkb2VzKQotK2FyZSBub3RpZmllZCBvZiBib3RoIHRoZSByZW1vdGUtaW5pdGlh dGVkIHN0YXJ0IGFuZCBpdHMgZXZlbnR1YWwgc3RvcC4KLSsKLStGb3IgSW5pdGlhdG9yIHJvbGUg KG9yIEJvdGgpLCBgYGR1cmF0aW9uX3NlY3NgYCBhbmQgdGhlIGRldmljZSBvYmplY3QKLStwYXRo IGFyZSB0aGUgcGFyYW1ldGVycyB0aGF0IG1hdHRlciB0byBzdGFydCBhIG1lYXN1cmVtZW50OyBl dmVyeQotK290aGVyIGtleSBiZWxvdyBpcyBvcHRpb25hbCBjb25maWd1cmF0aW9uIHdpdGggYSB1 c2FibGUgZGVmYXVsdC4gRm9yCi0rUmVmbGVjdG9yIHJvbGUsIG9ubHkgYGByb2xlYGAsIGBgc3lu Y19hbnRfc2VsYGAgYW5kIGBgbWF4X3R4X3Bvd2VyYGAKLSthcmUgcmVxdWlyZWQgb3IgaGF2ZSBh bnkgZWZmZWN0IOKAlCB0aGUgcmVtYWluaW5nIGtleXMgYXJlIGFjY2VwdGVkIGJ1dAotK290aGVy d2lzZSB1bnVzZWQsIHNpbmNlIG5vIGxvY2FsIHByb2NlZHVyZSBpcyBhcm1lZC4KLSsKLStTdXBw b3J0ZWQgZGljdGlvbmFyeSBrZXlzOgotKwotKzp1aW50MzIgZHVyYXRpb25fc2VjcyAoRGVmYXVs dDogMCk6Ci0rCi0rCUR1cmF0aW9uIGluIHNlY29uZHMgYmVmb3JlIHRoZSBtZWFzdXJlbWVudCBp cyBzdG9wcGVkCi0rCWF1dG9tYXRpY2FsbHkuIEEgdmFsdWUgb2YgMCBkaXNhYmxlcyB0aGUgYXV0 b21hdGljIHRpbWVvdXQuCi0rCi0rOmJ5dGUgcm9sZSAoRGVmYXVsdDogMHgwMyk6Ci0rCi0rCUNT IHJvbGUgdG8gdXNlIGZvciB0aGUgbWVhc3VyZW1lbnQuCi0rCi0rCVBvc3NpYmxlIHZhbHVlczoK LSsKLSsJOjB4MDE6IEluaXRpYXRvcgotKwk6MHgwMjogUmVmbGVjdG9yCi0rCToweDAzOiBCb3Ro IChJbml0aWF0b3IgYW5kIFJlZmxlY3RvcikKLSsKLSs6Ynl0ZSBzeW5jX2FudF9zZWwgKERlZmF1 bHQ6IDB4RkYpOgotKwotKwlDUyBzeW5jIGFudGVubmEgc2VsZWN0aW9uLiBWYWx1ZXMgMHhGRSBh bmQgMHhGRiBhcmUgcmVzZXJ2ZWQKLSsJYnkgdGhlIEJsdWV0b290aCBzcGVjaWZpY2F0aW9uLgot KwotKzpieXRlIG1heF90eF9wb3dlciAoRGVmYXVsdDogMHgxNCk6Ci0rCi0rCU1heGltdW0gVFgg cG93ZXIgaW4gZEJtLCB0cmVhdGVkIGFzIGEgc2lnbmVkIHZhbHVlLiBWYWxpZAotKwlyYW5nZSBp cyAtMTI3IHRvICsyMCBkQm0uCi0rCi0rOmJ5dGUgY29uZmlnX2lkOgotKwotKwlDUyBjb25maWd1 cmF0aW9uIGlkZW50aWZpZXIuCi0rCi0rOmJ5dGUgbWFpbl9tb2RlX3R5cGU6Ci0rCi0rCU1haW4g Q1MgbW9kZSB1c2VkIGluIHRoZSBwcm9jZWR1cmUuCi0rCi0rOmJ5dGUgc3ViX21vZGVfdHlwZToK LSsKLSsJU3ViLW1vZGUgd2l0aGluIHRoZSBtYWluIG1vZGUuIFNldCB0byAweEZGIHdoZW4gdW51 c2VkLgotKwotKzpieXRlIG1haW5fbW9kZV9taW5fc3RlcHM6Ci0rCi0rCU1pbmltdW0gbnVtYmVy IG9mIENTIG1haW4gbW9kZSBzdGVwcyBwZXIgQ1Mgc3ViZXZlbnQuCi0rCi0rOmJ5dGUgbWFpbl9t b2RlX21heF9zdGVwczoKLSsKLSsJTWF4aW11bSBudW1iZXIgb2YgQ1MgbWFpbiBtb2RlIHN0ZXBz IHBlciBDUyBzdWJldmVudC4KLSsKLSs6Ynl0ZSBtYWluX21vZGVfcmVwZXRpdGlvbjoKLSsKLSsJ TnVtYmVyIG9mIHRpbWVzIHRoZSBtYWluIG1vZGUgc3RlcHMgYXJlIHJlcGVhdGVkIGluIGEKLSsJ c3ViZXZlbnQuCi0rCi0rOmJ5dGUgbW9kZTBfc3RlcHM6Ci0rCi0rCU51bWJlciBvZiBDUyBNb2Rl IDAgc3RlcHMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHN1YmV2ZW50LgotKwotKzpieXRlIHJ0 dF90eXBlczoKLSsKLSsJUm91bmQgVHJpcCBUaW1lIG1lYXN1cmVtZW50IHR5cGVzIGZvciB0aGUg Y29uZmlndXJhdGlvbi4KLSsKLSs6Ynl0ZSBzeW5jX3BoeToKLSsKLSsJUEhZIHVzZWQgZm9yIENT IHN5bmMgcGFja2V0cy4KLSsKLSsJUG9zc2libGUgdmFsdWVzOgotKwotKwk6MHgwMTogTEUgMU0g UEhZCi0rCToweDAyOiBMRSAyTSBQSFkKLSsKLSs6YXJyYXl7Ynl0ZX0gY2hhbm5lbF9tYXA6Ci0r Ci0rCTEwLWJ5dGUgY2hhbm5lbCBtYXAgYml0bWFwLiBNdXN0IGJlIGV4YWN0bHkgMTAgYnl0ZXMu Ci0rCi0rOmJ5dGUgY2hhbm5lbF9tYXBfcmVwZXRpdGlvbjoKLSsKLSsJTnVtYmVyIG9mIGNvbnNl Y3V0aXZlIHJlcGV0aXRpb25zIG9mIHRoZSBjaGFubmVsIG1hcC4KLSsKLSs6Ynl0ZSBjaGFubmVs X3NlbGVjdGlvbl90eXBlOgotKwotKwlBbGdvcml0aG0gdXNlZCBmb3IgQ1MgY2hhbm5lbCBzZWxl Y3Rpb24uCi0rCi0rOmJ5dGUgY2hhbm5lbF9zaGFwZToKLSsKLSsJU2hhcGUgdXNlZCBpbiB0aGUg Y2hhbm5lbCBzZWxlY3Rpb24gYWxnb3JpdGhtLgotKwotKzpieXRlIGNoYW5uZWxfanVtcDoKLSsK LSsJQ2hhbm5lbCBqdW1wIHNpemUgdXNlZCBpbiB0aGUgY2hhbm5lbCBzZWxlY3Rpb24gYWxnb3Jp dGhtLgotKwotKzpieXRlIGNvbXBhbmlvbl9zaWduYWxfZW5hYmxlOgotKwotKwlTZXQgdG8gMSB0 byB0cmFuc21pdCBhIGNvbXBhbmlvbiBzaWduYWwgYWxvbmdzaWRlIHRoZSBDUwotKwl0b25lLCAw IHRvIGRpc2FibGUuCi0rCi0rOnVpbnQxNiBtYXhfcHJvY2VkdXJlX2R1cmF0aW9uOgotKwotKwlN YXhpbXVtIGR1cmF0aW9uIG9mIGEgc2luZ2xlIENTIG1lYXN1cmVtZW50IHByb2NlZHVyZS4KLSsK LSs6dWludDE2IG1pbl9wZXJpb2RfYmV0d2Vlbl9wcm9jZWR1cmVzOgotKwotKwlNaW5pbXVtIHRp bWUgYmV0d2VlbiBjb25zZWN1dGl2ZSBDUyBtZWFzdXJlbWVudCBwcm9jZWR1cmVzLgotKwotKzp1 aW50MTYgbWF4X3BlcmlvZF9iZXR3ZWVuX3Byb2NlZHVyZXM6Ci0rCi0rCU1heGltdW0gdGltZSBi ZXR3ZWVuIGNvbnNlY3V0aXZlIENTIG1lYXN1cmVtZW50IHByb2NlZHVyZXMuCi0rCi0rOnVpbnQx NiBtYXhfcHJvY2VkdXJlX2NvdW50OgotKwotKwlNYXhpbXVtIG51bWJlciBvZiBDUyBtZWFzdXJl bWVudCBwcm9jZWR1cmVzIHRvIHJ1bi4KLSsJQSB2YWx1ZSBvZiAwIG1lYW5zIG5vIGxpbWl0Lgot KwotKzphcnJheXtieXRlfSBtaW5fc3ViX2V2ZW50X2xlbjoKLSsKLSsJTWluaW11bSBDUyBzdWJl dmVudCBsZW5ndGggYXMgYSAzLWJ5dGUgbGl0dGxlLWVuZGlhbiB2YWx1ZS4KLSsJTXVzdCBiZSBl eGFjdGx5IDMgYnl0ZXMuCi0rCi0rOmFycmF5e2J5dGV9IG1heF9zdWJfZXZlbnRfbGVuOgotKwot KwlNYXhpbXVtIENTIHN1YmV2ZW50IGxlbmd0aCBhcyBhIDMtYnl0ZSBsaXR0bGUtZW5kaWFuIHZh bHVlLgotKwlNdXN0IGJlIGV4YWN0bHkgMyBieXRlcy4KLSsKLSs6Ynl0ZSB0b25lX2FudGVubmFf Y29uZmlnX3NlbGVjdGlvbjoKLSsKLSsJQW50ZW5uYSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIENT IHRvbmUgZXhjaGFuZ2VzLgotKwotKzpieXRlIHBoeToKLSsKLSsJUEhZIHVzZWQgZHVyaW5nIENT IHByb2NlZHVyZXMuCi0rCi0rCVBvc3NpYmxlIHZhbHVlczoKLSsKLSsJOjB4MDE6IExFIDFNIFBI WQotKwk6MHgwMjogTEUgMk0gUEhZCi0rCi0rOmJ5dGUgdHhfcG93ZXJfZGVsdGE6Ci0rCi0rCURp ZmZlcmVuY2UgYmV0d2VlbiByZW1vdGUgYW5kIGxvY2FsIFRYIHBvd2VyIGR1cmluZyBDUwotKwlw cm9jZWR1cmVzLiAweDgwIGluZGljYXRlcyBub3QgYXBwbGljYWJsZS4KLSsKLSs6Ynl0ZSBwcmVm ZXJyZWRfcGVlcl9hbnRlbm5hOgotKwotKwlQcmVmZXJyZWQgYW50ZW5uYSB0byBiZSB1c2VkIGJ5 IHRoZSBwZWVyIGRldmljZS4KLSsKLSs6Ynl0ZSBzbnJfY29udHJvbF9pbml0aWF0b3I6Ci0rCi0r CVNOUiBjb250cm9sIHNldHRpbmcgZm9yIHRoZSBpbml0aWF0b3Igcm9sZS4KLSsJMHhGRiBpbmRp Y2F0ZXMgbm8gcHJlZmVyZW5jZS4KLSsKLSs6Ynl0ZSBzbnJfY29udHJvbF9yZWZsZWN0b3I6Ci0r Ci0rCVNOUiBjb250cm9sIHNldHRpbmcgZm9yIHRoZSByZWZsZWN0b3Igcm9sZS4KLSsJMHhGRiBp bmRpY2F0ZXMgbm8gcHJlZmVyZW5jZS4KLSsKLStQb3NzaWJsZSBlcnJvcnM6Ci0rCi0rOm9yZy5i bHVlei5FcnJvci5JblByb2dyZXNzOgotKzpvcmcuYmx1ZXouRXJyb3IuSW52YWxpZEFyZ3M6Ci0r Om9yZy5mcmVlZGVza3RvcC5EQnVzLkVycm9yLkZhaWxlZDoKLSsKLStFeGFtcGxlczoKLSsKLSs6 Ymx1ZXRvb3RoY3RsIHNldCByb2xlIHRoZW4gc3RhcnQ6Ci0rCXwgW2NzXSA+IHJvbGUgMHgwMQot Kwl8IFtjc10gPiBtYWluX21vZGVfdHlwZSAyCi0rCXwgW2NzXSA+IHN0YXJ0IEFBOkJCOkNDOkRE OkVFOkZGCi0rOmJsdWV0b290aGN0bCBzdGFydCB3aXRoIGRlZmF1bHRzOgotKwl8IFtjc10gPiBz dGFydCBbZGV2X2FkZHJdIFtkdXJhdGlvbl9zZWNzXQotKzpibHVldG9vdGhjdGwgY29uZmlndXJl IGFzIFJlZmxlY3RvciAoYXBwbGllcyBzZXR0aW5ncywgZG9lcyBub3Qgc3RhcnQgYSBtZWFzdXJl bWVudCk6Ci0rCXwgW2NzXSA+IHJvbGUgMHgwMgotKwl8IFtjc10gPiBzdGFydAotKwotK3ZvaWQg U3RvcE1lYXN1cmVtZW50KHZvaWQpCi0rYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAKLSsKLStT dG9wcyB0aGUgYWN0aXZlIENoYW5uZWwgU291bmRpbmcgZGlzdGFuY2UgbWVhc3VyZW1lbnQgb24g dGhpcyBkZXZpY2UuCi0rVGhlIGRldmljZSBpcyBpZGVudGlmaWVkIGJ5IHRoZSBELUJ1cyBvYmpl Y3QgcGF0aCBvbiB3aGljaCB0aGlzIG1ldGhvZAotK2lzIGNhbGxlZCDigJQgbm8gc2Vzc2lvbiBp ZGVudGlmaWVyIGlzIHJlcXVpcmVkLgotKwotK1JhaXNlcyBgYG9yZy5ibHVlei5FcnJvci5Ob3RD b25uZWN0ZWRgYCBpZiBubyBtZWFzdXJlbWVudCBpcyBhY3RpdmUuCi0rCi0rUG9zc2libGUgZXJy b3JzOgotKwotKzpvcmcuYmx1ZXouRXJyb3IuTm90Q29ubmVjdGVkOgotKzpvcmcuZnJlZWRlc2t0 b3AuREJ1cy5FcnJvci5GYWlsZWQ6Ci0rCi0rSW4gKipibHVldG9vdGhjdGwoMSkqKiwgdGhlIGRl dmljZSBhZGRyZXNzIGFyZ3VtZW50IG1heSBiZSBvbWl0dGVkIG9ubHkKLSt3aGVuIGEgc2luZ2xl IG1lYXN1cmVtZW50IGlzIGFjdGl2ZTsgaXQgaXMgcmVxdWlyZWQgd2hlbiBtdWx0aXBsZQotK21l YXN1cmVtZW50cyBhcmUgYWN0aXZlLgotKwotK0V4YW1wbGVzOgotKwotKzpibHVldG9vdGhjdGwg c3RvcCB0aGUgb25seSBhY3RpdmUgbWVhc3VyZW1lbnQ6Ci0rCXwgW2NzXSA+IHN0b3AKLSs6Ymx1 ZXRvb3RoY3RsIHN0b3AgYSBzcGVjaWZpYyBkZXZpY2Ugd2hlbiBtdWx0aXBsZSBhcmUgYWN0aXZl OgotKwl8IFtjc10gPiBzdG9wIEFBOkJCOkNDOkREOkVFOkZGCi0rCi0rU2lnbmFscwotKy0tLS0t LS0KLSsKLSt2b2lkIFByb2NlZHVyZURhdGEoZGljdCBkYXRhKQotK2BgYGBgYGBgYGBgYGBgYGBg YGBgYGBgYGBgYGBgYAotKwotK0VtaXR0ZWQgd2hlbiBhIENoYW5uZWwgU291bmRpbmcgbWVhc3Vy ZW1lbnQgcHJvY2VkdXJlIGNvbXBsZXRlcyBvbiB0aGlzCi0rZGV2aWNlLCBjYXJyeWluZyB0aGUg cmF3IENTIHByb2NlZHVyZSByZXN1bHRzIGFzIHJlcG9ydGVkIGJ5IHRoZQotK2NvbnRyb2xsZXIu IENvbnN1bWVycyBzdWNoIGFzIGFuIGV4dGVybmFsIHJhbmdpbmcgZXN0aW1hdGlvbiBkYWVtb24K LStzdWJzY3JpYmUgdG8gdGhpcyBzaWduYWwgdG8gY29tcHV0ZSBkaXN0YW5jZSBlc3RpbWF0ZXMu Ci0rCi0rOmRpY3QgZGF0YToKLSsKLSsJOmludDMyIHByb2NlZHVyZUNvdW50ZXI6Ci0rCi0rCQlQ cm9jZWR1cmUgY291bnRlciB2YWx1ZSBmcm9tIHRoZSBjb250cm9sbGVyLgotKwotKwk6aW50MzIg cHJvY2VkdXJlU2VxdWVuY2U6Ci0rCi0rCQlTZXF1ZW5jZSBudW1iZXIgb2YgdGhpcyBwcm9jZWR1 cmUuCi0rCi0rCTpieXRlIGluaXRpYXRvclNlbGVjdGVkVHhQb3dlcjoKLSsKLSsJCVRYIHBvd2Vy IHNlbGVjdGVkIGJ5IHRoZSBJbml0aWF0b3IsIHRyZWF0ZWQgYXMgYSBzaWduZWQKLSsJCXZhbHVl LgotKwotKwk6Ynl0ZSByZWZsZWN0b3JTZWxlY3RlZFR4UG93ZXI6Ci0rCi0rCQlUWCBwb3dlciBz ZWxlY3RlZCBieSB0aGUgUmVmbGVjdG9yLCB0cmVhdGVkIGFzIGEgc2lnbmVkCi0rCQl2YWx1ZS4K LSsKLSsJOnVpbnQzMiBpbml0aWF0b3JTdWJldmVudENvdW50OgotKwotKwkJTnVtYmVyIG9mIHN1 YmV2ZW50IHJlc3VsdHMgcmVwb3J0ZWQgYnkgdGhlIEluaXRpYXRvci4KLSsKLSsJOmFycmF5e2Rp Y3R9IGluaXRpYXRvclN1YmV2ZW50UmVzdWx0czoKLSsKLSsJCVByZXNlbnQgb25seSB3aGVuIGBg aW5pdGlhdG9yU3ViZXZlbnRDb3VudGBgIGlzIGdyZWF0ZXIKLSsJCXRoYW4gMC4gT25lIGVudHJ5 IHBlciBJbml0aWF0b3Igc3ViZXZlbnQsIGVhY2ggd2l0aCB0aGUKLSsJCWZpZWxkcyBkZXNjcmli ZWQgaW4gYFN1YmV2ZW50IFJlc3VsdGBfIGJlbG93LgotKwotKwk6Ynl0ZSBpbml0aWF0b3JQcm9j ZWR1cmVBYm9ydFJlYXNvbjoKLSsKLSsJCVJlYXNvbiB0aGUgSW5pdGlhdG9yJ3MgcHJvY2VkdXJl IHdhcyBhYm9ydGVkLCAwIGlmIG5vdAotKwkJYWJvcnRlZC4KLSsKLSsJOnVpbnQzMiByZWZsZWN0 b3JTdWJldmVudENvdW50OgotKwotKwkJTnVtYmVyIG9mIHN1YmV2ZW50IHJlc3VsdHMgcmVwb3J0 ZWQgYnkgdGhlIFJlZmxlY3Rvci4KLSsKLSsJOmFycmF5e2RpY3R9IHJlZmxlY3RvclN1YmV2ZW50 UmVzdWx0czoKLSsKLSsJCVByZXNlbnQgb25seSB3aGVuIGBgcmVmbGVjdG9yU3ViZXZlbnRDb3Vu dGBgIGlzIGdyZWF0ZXIKLSsJCXRoYW4gMC4gT25lIGVudHJ5IHBlciBSZWZsZWN0b3Igc3ViZXZl bnQsIGVhY2ggd2l0aCB0aGUKLSsJCWZpZWxkcyBkZXNjcmliZWQgaW4gYFN1YmV2ZW50IFJlc3Vs dGBfIGJlbG93LgotKwotKwk6Ynl0ZSByZWZsZWN0b3JQcm9jZWR1cmVBYm9ydFJlYXNvbjoKLSsK LSsJCVJlYXNvbiB0aGUgUmVmbGVjdG9yJ3MgcHJvY2VkdXJlIHdhcyBhYm9ydGVkLCAwIGlmIG5v dAotKwkJYWJvcnRlZC4KLSsKLSsJOmRpY3QgcHJvY2VkdXJlRW5hYmxlQ29uZmlnOgotKwotKwkJ OmJ5dGUgdG9uZUFudGVubmFDb25maWdTZWxlY3Rpb246Ci0rCi0rCQkJQW50ZW5uYSBjb25maWd1 cmF0aW9uIHVzZWQgZm9yIENTIHRvbmUgZXhjaGFuZ2VzLgotKwotKwkJOnVpbnQzMiBzdWJldmVu dExlblVzOgotKwotKwkJCVN1YmV2ZW50IGxlbmd0aCBpbiBtaWNyb3NlY29uZHMuCi0rCi0rCQk6 Ynl0ZSBzdWJldmVudHNQZXJFdmVudDoKLSsKLSsJCQlOdW1iZXIgb2Ygc3ViZXZlbnRzIHBlciBl dmVudC4KLSsKLSsJCTp1aW50MzIgc3ViZXZlbnRJbnRlcnZhbDoKLSsKLSsJCQlJbnRlcnZhbCBi ZXR3ZWVuIHN1YmV2ZW50cy4KLSsKLSsJCTp1aW50MzIgZXZlbnRJbnRlcnZhbDoKLSsKLSsJCQlJ bnRlcnZhbCBiZXR3ZWVuIGV2ZW50cy4KLSsKLSsJCTp1aW50MzIgcHJvY2VkdXJlSW50ZXJ2YWw6 Ci0rCi0rCQkJSW50ZXJ2YWwgYmV0d2VlbiBwcm9jZWR1cmVzLgotKwotKwkJOnVpbnQzMiBwcm9j ZWR1cmVDb3VudDoKLSsKLSsJCQlOdW1iZXIgb2YgcHJvY2VkdXJlcyBjb25maWd1cmVkLgotKwot KwkJOnVpbnQzMiBtYXhQcm9jZWR1cmVMZW46Ci0rCi0rCQkJTWF4aW11bSBwcm9jZWR1cmUgbGVu Z3RoLgotKwotKwk6ZGljdCBjc0NvbmZpZ1BhcmFtOgotKwotKwkJOmJ5dGUgbW9kZVR5cGU6Ci0r Ci0rCQkJTWFpbiBDUyBtb2RlIHVzZWQgaW4gdGhlIHByb2NlZHVyZS4KLSsKLSsJCTpieXRlIHN1 Yk1vZGVUeXBlOgotKwotKwkJCVN1Yi1tb2RlIHdpdGhpbiB0aGUgbWFpbiBtb2RlLgotKwotKwkJ OmJ5dGUgcnR0VHlwZToKLSsKLSsJCQlSb3VuZCBUcmlwIFRpbWUgbWVhc3VyZW1lbnQgdHlwZS4K LSsKLSsJCTphcnJheXtieXRlfSBjaGFubmVsTWFwOgotKwotKwkJCTEwLWJ5dGUgY2hhbm5lbCBt YXAgYml0bWFwLgotKwotKwkJOmJ5dGUgbWluTWFpbk1vZGVTdGVwczoKLSsJCTpieXRlIG1heE1h aW5Nb2RlU3RlcHM6Ci0rCQk6Ynl0ZSBtYWluTW9kZVJlcGV0aXRpb246Ci0rCQk6Ynl0ZSBtb2Rl MFN0ZXBzOgotKwotKwkJOmJ5dGUgcm9sZToKLSsKLSsJCQlDUyByb2xlIGluIGVmZmVjdCBmb3Ig dGhlIHByb2NlZHVyZSAoSW5pdGlhdG9yLAotKwkJCVJlZmxlY3Rvciwgb3IgQm90aCkuCi0rCi0r CQk6Ynl0ZSBjc1N5bmNQaHlUeXBlOgotKwotKwkJCVBIWSB1c2VkIGZvciBDUyBzeW5jIHBhY2tl dHMuCi0rCi0rCQk6Ynl0ZSBjaGFubmVsU2VsZWN0aW9uVHlwZToKLSsJCTpieXRlIGNoM2NTaGFw ZVR5cGU6Ci0rCQk6Ynl0ZSBjaDNjSnVtcDoKLSsJCTpieXRlIGNoYW5uZWxNYXBSZXBldGl0aW9u OgotKwkJOmJ5dGUgdElwMVRpbWVVczoKLSsJCTpieXRlIHRJcDJUaW1lVXM6Ci0rCQk6Ynl0ZSB0 RmNzVGltZVVzOgotKwkJOmJ5dGUgdFBtVGltZVVzOgotKwkJOmJ5dGUgdFN3VGltZVVzU3VwcG9y dGVkQnlMb2NhbDoKLSsJCTpieXRlIHRTd1RpbWVVc1N1cHBvcnRlZEJ5UmVtb3RlOgotKwotKwkJ OnVpbnQzMiBibGVDb25uSW50ZXJ2YWw6Ci0rCi0rCQkJQkxFIGNvbm5lY3Rpb24gaW50ZXJ2YWwg aW4gZWZmZWN0IGR1cmluZyB0aGUKLSsJCQlwcm9jZWR1cmUuCi0rCi0rU3ViZXZlbnQgUmVzdWx0 Ci0rfn5+fn5+fn5+fn5+fn5+fgotKwotK0VhY2ggZWxlbWVudCBvZiBgYGluaXRpYXRvclN1YmV2 ZW50UmVzdWx0c2BgIGFuZAotK2BgcmVmbGVjdG9yU3ViZXZlbnRSZXN1bHRzYGAgaXMgYSBkaWN0 IHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6Ci0rCi0rOmludDMyIHN0YXJ0QWNsQ29ubkV2dENv dW50ZXI6Ci0rCi0rCUFDTCBjb25uZWN0aW9uIGV2ZW50IGNvdW50ZXIgYXQgdGhlIHN0YXJ0IG9m IHRoZSBzdWJldmVudC4KLSsKLSs6aW50MzIgZnJlcUNvbXA6Ci0rCi0rCUZyZXF1ZW5jeSBjb21w ZW5zYXRpb24gdmFsdWUuCi0rCi0rOmJ5dGUgcmVmUHdyTHZsOgotKwotKwlSZWZlcmVuY2UgcG93 ZXIgbGV2ZWwsIHRyZWF0ZWQgYXMgYSBzaWduZWQgdmFsdWUuCi0rCi0rOmJ5dGUgbnVtQW50UGF0 aHM6Ci0rCi0rCU51bWJlciBvZiBhbnRlbm5hIHBhdGhzIHVzZWQuCi0rCi0rOmJ5dGUgc3ViZXZl bnRBYm9ydFJlYXNvbjoKLSsKLSsJUmVhc29uIHRoZSBzdWJldmVudCB3YXMgYWJvcnRlZCwgMCBp ZiBub3QgYWJvcnRlZC4KLSsKLSs6dWludDY0IHRpbWVzdGFtcE5hbm9zOgotKwotKwlUaW1lc3Rh bXAgb2YgdGhlIHN1YmV2ZW50IHJlc3VsdCwgaW4gbmFub3NlY29uZHMuCi0rCi0rOnVpbnQzMiBu dW1TdGVwczoKLSsKLSsJTnVtYmVyIG9mIHN0ZXBzIHJlcG9ydGVkIGluIHRoaXMgc3ViZXZlbnQu Ci0rCi0rOmFycmF5e2RpY3R9IHN0ZXBEYXRhOgotKwotKwlPbmUgZW50cnkgcGVyIHN0ZXAuIEVh Y2ggZW50cnkgaGFzOgotKwotKwk6Ynl0ZSBzdGVwTW9kZToKLSsKLSsJCUNTIHN0ZXAgbW9kZSAo MC0zKS4KLSsKLSsJOmJ5dGUgc3RlcENoYW5uZWw6Ci0rCi0rCQlDaGFubmVsIHVzZWQgZm9yIHRo ZSBzdGVwLgotKwotKwk6ZGljdCBtb2RlWmVyb0RhdGE6Ci0rCi0rCQlQcmVzZW50IHdoZW4gYGBz dGVwTW9kZWBgIGlzIDAuCi0rCi0rCQk6Ynl0ZSBwYWNrZXRRdWFsaXR5OgotKwkJOmJ5dGUgcGFj a2V0UnNzaURibToKLSsJCTpieXRlIHBhY2tldEFudGVubmE6Ci0rCi0rCQk6aW50MzIgaW5pdGlh dG9yTWVhc3VyZWRGcmVxT2Zmc2V0OgotKwotKwkJCUZyZXF1ZW5jeSBvZmZzZXQgbWVhc3VyZWQg YnkgdGhlIEluaXRpYXRvci4KLSsKLSsJOmRpY3QgbW9kZU9uZURhdGE6Ci0rCi0rCQlQcmVzZW50 IHdoZW4gYGBzdGVwTW9kZWBgIGlzIDEuCi0rCi0rCQk6Ynl0ZSBwYWNrZXRRdWFsaXR5OgotKwkJ OmJ5dGUgcGFja2V0TmFkbToKLSsJCTpieXRlIHBhY2tldFJzc2lEYm06Ci0rCi0rCQk6aW50MzIg dG9hVG9kSW5pdGlhdG9yOgotKwotKwkJCVRpbWUgb2YgQXJyaXZhbCAvIFRpbWUgb2YgRGVwYXJ0 dXJlIGF0IHRoZQotKwkJCUluaXRpYXRvci4KLSsKLSsJCTppbnQzMiB0b2RUb2FSZWZsZWN0b3I6 Ci0rCi0rCQkJVGltZSBvZiBEZXBhcnR1cmUgLyBUaW1lIG9mIEFycml2YWwgYXQgdGhlCi0rCQkJ UmVmbGVjdG9yLgotKwotKwkJOmJ5dGUgcGFja2V0QW50ZW5uYToKLSsKLSsJCTphcnJheXtpbnQz Mn0gcGFja2V0UGN0MToKLSsKLSsJCQlJbi1waGFzZS9xdWFkcmF0dXJlIHNhbXBsZSBwYWlyLCBh cwotKwkJCWBgW2lfc2FtcGxlLCBxX3NhbXBsZV1gYC4KLSsKLSsJCTphcnJheXtpbnQzMn0gcGFj a2V0UGN0MjoKLSsKLSsJCQlJbi1waGFzZS9xdWFkcmF0dXJlIHNhbXBsZSBwYWlyLCBhcwotKwkJ CWBgW2lfc2FtcGxlLCBxX3NhbXBsZV1gYC4KLSsKLSsJOmRpY3QgbW9kZVR3b0RhdGE6Ci0rCi0r CQlQcmVzZW50IHdoZW4gYGBzdGVwTW9kZWBgIGlzIDIuCi0rCi0rCQk6Ynl0ZSBhbnRlbm5hUGVy bXV0YXRpb25JbmRleDoKLSsKLSsJCTphcnJheXtpbnQzMn0gdG9uZVBjdElRU2FtcGxlczoKLSsK LSsJCQlJbnRlcmxlYXZlZCBpbi1waGFzZS9xdWFkcmF0dXJlIHRvbmUgc2FtcGxlcywgYXMKLSsJ CQlgYFtpX3NhbXBsZSwgcV9zYW1wbGUsIC4uLl1gYCDigJQgb25lIHBhaXIgcGVyCi0rCQkJYW50 ZW5uYSBwYXRoLgotKwotKwkJOmFycmF5e2J5dGV9IHRvbmVRdWFsaXR5SW5kaWNhdG9yczoKLSsK LSsJCQlPbmUgcXVhbGl0eSBpbmRpY2F0b3IgYnl0ZSBwZXIgYW50ZW5uYSBwYXRoLgotKwotKwk6 ZGljdCBtb2RlVGhyZWVEYXRhOgotKwotKwkJUHJlc2VudCB3aGVuIGBgc3RlcE1vZGVgYCBpcyAz LiBDb250YWlucyB0aGUgY29tYmluZWQKLSsJCWZpZWxkcyBvZiBib3RoICoqbW9kZU9uZURhdGEq KiBhbmQgKiptb2RlVHdvRGF0YSoqLgotKwotK1Byb3BlcnRpZXMKLSstLS0tLS0tLS0tCi0rCi0r Ym9vbGVhbiBBY3RpdmUgW3JlYWRvbmx5XQotK2BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGAKLSsK LStJbmRpY2F0ZXMgd2hldGhlciBhIENTIGRpc3RhbmNlIG1lYXN1cmVtZW50IHByb2NlZHVyZSBp cyBjdXJyZW50bHkKLSthY3RpdmUgb24gdGhpcyBkZXZpY2UuCi0rCi0rU2V0IHRvIGBgdHJ1ZWBg IHdoZW4gYSBwcm9jZWR1cmUgc3RhcnRzIOKAlCBlaXRoZXIgYmVjYXVzZSB0aGUgbG9jYWwKLStJ bml0aWF0b3IgY2FsbGVkICoqU3RhcnRNZWFzdXJlbWVudCoqIHN1Y2Nlc3NmdWxseSwgb3IgYmVj YXVzZSB0aGUKLStyZW1vdGUgSW5pdGlhdG9yIGVuYWJsZWQgYSBDUyBwcm9jZWR1cmUgb24gdGhl IGxvY2FsIFJlZmxlY3Rvci4KLSsKLStTZXQgdG8gYGBmYWxzZWBgIHdoZW4gdGhlIHByb2NlZHVy ZSBzdG9wcyBmb3IgYW55IHJlYXNvbjogdGhlIGxvY2FsCi0rYXBwbGljYXRpb24gY2FsbGVkICoq U3RvcE1lYXN1cmVtZW50KiosIHRoZSBtZWFzdXJlbWVudCBkdXJhdGlvbiB0aW1lcgotK2V4cGly ZWQsIG9yIHRoZSBBQ0wgY29ubmVjdGlvbiB3YXMgZHJvcHBlZC4KLSsKLStUaGlzIHByb3BlcnR5 IGVtaXRzIGBgUHJvcGVydGllc0NoYW5nZWRgYCBvbiBldmVyeSB0cmFuc2l0aW9uIHNvIHRoYXQK LStjbGllbnRzIGNhbiB0cmFjayBtZWFzdXJlbWVudCBzdGF0ZSB3aXRob3V0IHBvbGxpbmcuCi0r Ci0rUkVTT1VSQ0VTCi0rPT09PT09PT09Ci0rCi0raHR0cDovL3d3dy5ibHVlei5vcmcKLSsKLStS RVBPUlRJTkcgQlVHUwotKz09PT09PT09PT09PT09Ci0rCi0rbGludXgtYmx1ZXRvb3RoQHZnZXIu a2VybmVsLm9yZwotLS0gCi0yLjU0LjAKLQotCi1Gcm9tIDMwZGI2NmRjOTcxYmQxY2Q5NWQ0YTdi MGVlYTI5NjM2N2FiNjViM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOYWdhIEJo YXZhbmkgQWtlbGxhIDxuYWdhLmFrZWxsYUBvc3MucXVhbGNvbW0uY29tPgotRGF0ZTogV2VkLCAx NSBKdWwgMjAyNiAxNDowOTo1NyArMDUzMAotU3ViamVjdDogW1BBVENIIDE5LzE5XSBkb2MvYmx1 ZXRvb3RoY3RsLWNzOiBBZGQgOlVzZXM6IGZpZWxkcyBhbmQgZG9jdW1lbnQKLSBhcmd1bWVudHMK LQotQWRkIDpVc2VzOiBmaWVsZHMgdG8gbGluayBjb21tYW5kcyB0byB0aGVpciBjb3JyZXNwb25k aW5nIEQtQnVzIEFQSQotbWV0aG9kcywgYW5kIGRvY3VtZW50IGNvbW1hbmQgYXJndW1lbnRzIHdp dGggdXNhZ2UgZXhhbXBsZXMKLS0tLQotIE1ha2VmaWxlLnRvb2xzICAgICAgICAgIHwgICA1ICst Ci0gZG9jL2JsdWV0b290aGN0bC1jcy5yc3QgfCA1NDYgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTQ5IGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9ibHVldG9vdGhjdGwtY3MucnN0 Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS50b29scyBiL01ha2VmaWxlLnRvb2xzCi1pbmRleCA2 MTg4NDQ5ZjE1NjUuLjA2NDZkNTJlMTRkYyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnRvb2xzCi0r KysgYi9NYWtlZmlsZS50b29scwotQEAgLTM1OSw3ICszNTksNyBAQCBtYW5fTUFOUyArPSBkb2Mv cmN0ZXN0LjEgZG9jL2wycGluZy4xIGRvYy9idGF0dGFjaC4xIGRvYy9pc290ZXN0LjEgXAotIAkJ ZG9jL2JsdWV0b290aGN0bC1nYXR0LjEgZG9jL2JsdWV0b290aGN0bC1wbGF5ZXIuMSBcCi0gCQlk b2MvYmx1ZXRvb3RoY3RsLXNjYW4uMSBkb2MvYmx1ZXRvb3RoY3RsLXRyYW5zcG9ydC4xIFwKLSAJ CWRvYy9ibHVldG9vdGhjdGwtYXNzaXN0YW50LjEgZG9jL2JsdWV0b290aGN0bC1oY2kuMSBcCi0t CQlkb2MvYmx1ZXRvb3RoY3RsLXRlbGVwaG9ueS4xCi0rCQlkb2MvYmx1ZXRvb3RoY3RsLXRlbGVw aG9ueS4xIGRvYy9ibHVldG9vdGhjdGwtY3MuMQotIAotIGVuZGlmCi0gCi1AQCAtNDY1LDcgKzQ2 NSw4IEBAIG1hbnVhbF9wYWdlcyArPSBkb2MvaGNpYXR0YWNoLjEgZG9jL2hjaWNvbmZpZy4xIGRv Yy9oY2l0b29sLjEgXAotIAkJCWRvYy9ibHVldG9vdGhjdGwtdHJhbnNwb3J0LjEgXAotIAkJCWRv Yy9ibHVldG9vdGhjdGwtYXNzaXN0YW50LjEgXAotIAkJCWRvYy9ibHVldG9vdGhjdGwtaGNpLjEg XAotLQkJCWRvYy9ibHVldG9vdGhjdGwtdGVsZXBob255LjEKLSsJCQlkb2MvYmx1ZXRvb3RoY3Rs LXRlbGVwaG9ueS4xIFwKLSsJCQlkb2MvYmx1ZXRvb3RoY3RsLWNzLjEKLSAKLSBpZiBISUQySENJ Ci0gdWRldmRpciA9ICQoVURFVl9ESVIpCi1kaWZmIC0tZ2l0IGEvZG9jL2JsdWV0b290aGN0bC1j cy5yc3QgYi9kb2MvYmx1ZXRvb3RoY3RsLWNzLnJzdAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAwMDAwMC4uYmJjMWQ4NTY1ZjkxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9kb2Mv Ymx1ZXRvb3RoY3RsLWNzLnJzdAotQEAgLTAsMCArMSw1NDYgQEAKLSs9PT09PT09PT09PT09PT09 Ci0rYmx1ZXRvb3RoY3RsLWNzCi0rPT09PT09PT09PT09PT09PQotKwotKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0rQ2hhbm5lbCBTb3VuZGluZyBTdWJtZW51Ci0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSsKLSs6VmVyc2lvbjogQmx1ZVoKLSs6Q29weXJpZ2h0OiBGcmVlIHVzZSBv ZiB0aGlzIHNvZnR3YXJlIGlzIGdyYW50ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLSsg ICAgICAgICAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgKExHUEwpLgotKzpEYXRl OiBKdW5lIDIwMjYKLSs6TWFudWFsIHNlY3Rpb246IDEKLSs6TWFudWFsIGdyb3VwOiBMaW51eCBT eXN0ZW0gQWRtaW5pc3RyYXRpb24KLSsKLStTWU5PUFNJUwotKz09PT09PT09Ci0rCi0rKipibHVl dG9vdGhjdGwqKiBbLS1vcHRpb25zXSBbY3MuY29tbWFuZHNdCi0rCi0rVGhpcyBzdWJtZW51IGNv bnRyb2xzIEJsdWV0b290aCBDaGFubmVsIFNvdW5kaW5nIChDUykgZGlzdGFuY2UgbWVhc3VyZW1l bnQKLSt1c2luZyB0aGUgKipvcmcuYmx1ZXouQ2hhbm5lbFNvdW5kaW5nMSg1KSoqIEQtQnVzIGlu dGVyZmFjZS4gSXQgYWxsb3dzCi0rc3RhcnRpbmcgYW5kIHN0b3BwaW5nIG1lYXN1cmVtZW50cyBh bmQgaW5zcGVjdGluZyB0aGUgY3VycmVudCBwYXJhbWV0ZXIKLStzdGF0ZSBhbmQgYWN0aXZlIHNl c3Npb24gaWRlbnRpZmllci4KLSsKLStFYWNoIENTIHBhcmFtZXRlciBoYXMgaXRzIG93biAqKmNz LjxwYXJhbT4qKiBzZXQgY29tbWFuZCAoc2VlIHRoZQotKyoqQ1MgUGFyYW1ldGVyIENvbW1hbmRz Kiogc2VjdGlvbiBiZWxvdykuIE92ZXJyaWRlcyBhcmUgYXBwbGllZCB0bwotK3RoZSBsb2NhbCBw YXJhbWV0ZXIgc3RhdGUgaW1tZWRpYXRlbHksIHNvICoqc2hvdyoqIHJlZmxlY3RzIHRoZW0KLSty aWdodCBhd2F5OyAqKnN0YXJ0KiogYWx3YXlzIHVzZXMgd2hhdGV2ZXIgdmFsdWVzIGFyZSBjdXJy ZW50bHkgc2V0LgotKwotKwotK0NoYW5uZWwgU291bmRpbmcgQ29tbWFuZHMKLSs9PT09PT09PT09 PT09PT09PT09PT09PT09Ci0rCi0rc3RhcnQKLSstLS0tLQotKwotK1N0YXJ0cyBhIGRpc3RhbmNl IG1lYXN1cmVtZW50IG9uIHRoZSBjb25uZWN0ZWQgZGV2aWNlIHVzaW5nIHRoZQotK2N1cnJlbnRs eSBzZXQgQ1MgcGFyYW1ldGVycyAoc2VlIHRoZSAqKmNzLjxwYXJhbT4qKiBjb21tYW5kcyBiZWxv dykuCi0rQWxsIGNvbmZpZ3VyYXRpb24gaXMgc2VudCB0byB0aGUgZGFlbW9uIGluIGEgc2luZ2xl ICoqU3RhcnRNZWFzdXJlbWVudCoqCi0rY2FsbC4gT24gc3VjY2VzcyB0aGUgZGV2aWNlIHBhdGgg aXMgcHJpbnRlZCB0byB0aGUgY29uc29sZS4gTXVsdGlwbGUKLStzaW11bHRhbmVvdXMgc2Vzc2lv bnMgYWNyb3NzIGRpZmZlcmVudCBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQ7IGVhY2ggaXMKLSt0cmFj a2VkIGluZGVwZW5kZW50bHkuCi0rCi0rQ2FsbGluZyAqKnN0YXJ0Kiogb24gYSBkZXZpY2UgdGhh dCBhbHJlYWR5IGhhcyBhbiBhY3RpdmUgbWVhc3VyZW1lbnQKLStyZXR1cm5zIGFuIGVycm9yIHdp dGhvdXQgc3RhcnRpbmcgYSBzZWNvbmQgc2Vzc2lvbiBvbiB0aGUgc2FtZSBkZXZpY2UuCi0rCi0r Rm9yIEluaXRpYXRvciByb2xlIChvciBCb3RoKSwgdGhlIG1hbmRhdG9yeSBwYXJhbWV0ZXJzIGFy ZSB0aGUKLStwb3NpdGlvbmFsIGBgZGV2X2FkZHJgYCBhbmQgYGBkdXJhdGlvbl9zZWNzYGA7IGV2 ZXJ5IGBgY3MuPHBhcmFtPmBgCi0rY29tbWFuZCBiZWxvdyBpcyBvcHRpb25hbCBjb25maWd1cmF0 aW9uIHdpdGggYSB1c2FibGUgZGVmYXVsdC4KLSsKLStJZiBgYHJvbGVgYCBpcyBzZXQgdG8gUmVm bGVjdG9yIChgYDB4MDJgYCwgdmlhICoqY3Mucm9sZSoqKSwgKipzdGFydCoqCi0rZG9lcyBub3Qg YmVnaW4gbWVhc3VyaW5nIGRpc3RhbmNlOiBhIFJlZmxlY3RvciBuZXZlciBpbml0aWF0ZXMgYSBD UwotK3Byb2NlZHVyZS4gSXQgb25seSBwdXNoZXMgdGhlIGN1cnJlbnQgcGFyYW1ldGVycyB0byB0 aGUgZGFlbW9uIGFuZAotK2FybXMgdGhlIGRldmljZSB0byByZXNwb25kIG9uY2UgdGhlIHJlbW90 ZSBJbml0aWF0b3Igc3RhcnRzIG9uZTsgdGhlCi0rY2FsbCBzdGlsbCBzdWNjZWVkcy4gV2hlbiB0 aGUgcmVtb3RlIHNpZGUgc3RhcnRzIG9yIHN0b3BzIGEgcHJvY2VkdXJlLAotK3RoZSBjb25zb2xl IHByaW50cyBgYE1lYXN1cmVtZW50IHN0YXJ0ZWRgYC9gYE1lYXN1cmVtZW50IHN0b3BwZWRgYCBm b3IKLSt0aGF0IGRldmljZSDigJQgdXNlICoqc2hvdyoqIG9yIHdhdGNoIHRoZSBgYEFjdGl2ZWBg IHByb3BlcnR5IHRvIHNlZQotK3RoZSBzYW1lIHRyYW5zaXRpb24uIEluIHRoaXMgcm9sZSB0aGUg b25seSBwYXJhbWV0ZXJzIHRoYXQgYXJlCi0rcmVxdWlyZWQgb3IgaGF2ZSBhbnkgZWZmZWN0IGFy ZSBgYHJvbGVgYCwgYGBzeW5jX2FudF9zZWxgYCBhbmQKLStgYG1heF90eF9wb3dlcmBgOyBldmVy eSBvdGhlciAqKmNzLjxwYXJhbT4qKiBjb21tYW5kIGJlbG93IGlzCi0rYWNjZXB0ZWQgYnV0IHVu dXNlZC4KLSsKLStQb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWw6Ci0rCi0rLSBgYGRl dl9hZGRyYGAg4oCUIEJsdWV0b290aCBhZGRyZXNzIG9mIHRoZSB0YXJnZXQgZGV2aWNlOyB1c2Vz IHRoZSBvbmx5Ci0rICBhdmFpbGFibGUgQ1MtY2FwYWJsZSBkZXZpY2Ugd2hlbiBvbWl0dGVkLgot Ky0gYGBkdXJhdGlvbl9zZWNzYGAg4oCUIGF1dG8tc3RvcCB0aW1lb3V0IGluIHNlY29uZHM7IGBg MGBgIChkZWZhdWx0KSBtZWFucwotKyAgbm8gdGltZW91dC4KLSsKLSs6VXNhZ2U6ICoqPiBzdGFy dCBbZGV2X2FkZHJdIFtkdXJhdGlvbl9zZWNzXSoqCi0rOlVzZXM6ICoqb3JnLmJsdWV6LkNoYW5u ZWxTb3VuZGluZzEoNSkqKiBtZXRob2QgKipTdGFydE1lYXN1cmVtZW50KioKLSs6W2Rldl9hZGRy XTogQmx1ZXRvb3RoIGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBkZXZpY2UgKG9wdGlvbmFsOyB1c2Vz IHRoZQotKyAgICAgICAgICAgICBvbmx5IGF2YWlsYWJsZSBDUy1jYXBhYmxlIGRldmljZSB3aGVu IG9taXR0ZWQpCi0rOltkdXJhdGlvbl9zZWNzXTogU2Vjb25kcyBiZWZvcmUgYXV0by1zdG9wIChv cHRpb25hbCwgZGVmYXVsdCAwID0gbm8gdGltZW91dCkKLSsKLSs6RXhhbXBsZSBTdGFydCB3aXRo IGFsbCBkZWZhdWx0cywgbm8gdGltZW91dDoKLSsJfCAqKj4gc3RhcnQqKgotKzpFeGFtcGxlIFN0 YXJ0IG9uIGEgc3BlY2lmaWMgZGV2aWNlOgotKwl8ICoqPiBzdGFydCBBQTpCQjpDQzpERDpFRTpG RioqCi0rOkV4YW1wbGUgU3RhcnQgb24gYSBzcGVjaWZpYyBkZXZpY2Ugd2l0aCAxMC1zZWNvbmQg YXV0by1zdG9wOgotKwl8ICoqPiBzdGFydCBBQTpCQjpDQzpERDpFRTpGRiAxMCoqCi0rOkV4YW1w bGUgU3RhcnQgd2l0aCAxMC1zZWNvbmQgYXV0by1zdG9wIChzaW5nbGUgZGV2aWNlLCBhZGRyZXNz IG9taXR0ZWQpOgotKwl8ICoqPiBzdGFydCAwIDEwKioKLSs6RXhhbXBsZSBTdGFydCB3aXRoIDUt bWludXRlIGF1dG8tc3RvcDoKLSsJfCAqKj4gc3RhcnQgQUE6QkI6Q0M6REQ6RUU6RkYgMzAwKioK LSsKLStzdG9wCi0rLS0tLQotKwotK1N0b3BzIGFuIGFjdGl2ZSBDUyBkaXN0YW5jZSBtZWFzdXJl bWVudC4gV2hlbiBvbmx5IG9uZSBtZWFzdXJlbWVudCBpcwotK3J1bm5pbmcgdGhlIGRldmljZSBh ZGRyZXNzIG1heSBiZSBvbWl0dGVkLiBXaGVuIG11bHRpcGxlIG1lYXN1cmVtZW50cwotK2FyZSBh Y3RpdmUgdGhlIGFkZHJlc3MgaXMgcmVxdWlyZWQgdG8gaWRlbnRpZnkgd2hpY2ggb25lIHRvIHN0 b3AuCi0rCi0rOlVzYWdlOiAqKj4gc3RvcCBbZGV2X2FkZHJdKioKLSs6VXNlczogKipvcmcuYmx1 ZXouQ2hhbm5lbFNvdW5kaW5nMSg1KSoqIG1ldGhvZCAqKlN0b3BNZWFzdXJlbWVudCoqCi0rOltk ZXZfYWRkcl06IEJsdWV0b290aCBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgdG8gc3RvcCAob3B0aW9u YWwgd2hlbgotKyAgICAgICAgICAgICBvbmx5IG9uZSBzZXNzaW9uIGlzIGFjdGl2ZTsgcmVxdWly ZWQgb3RoZXJ3aXNlKQotKzpFeGFtcGxlIFN0b3AgdGhlIG9ubHkgYWN0aXZlIG1lYXN1cmVtZW50 OgotKwl8ICoqPiBzdG9wKioKLSs6RXhhbXBsZSBTdG9wIGEgc3BlY2lmaWMgZGV2aWNlIHdoZW4g bXVsdGlwbGUgYXJlIGFjdGl2ZToKLSsJfCAqKj4gc3RvcCBBQTpCQjpDQzpERDpFRTpGRioqCi0r OkV4YW1wbGUgU3RvcCBhIHNlY29uZCBkZXZpY2U6Ci0rCXwgKio+IHN0b3AgMTE6MjI6MzM6NDQ6 NTU6NjYqKgotKwotK3Nob3cKLSstLS0tCi0rCi0rRGlzcGxheXMgYWxsIGFjdGl2ZSBtZWFzdXJl bWVudHMgKGRldmljZSBwYXRoIGZvciBlYWNoKSBhbmQgdGhlIGZ1bGwKLStzZXQgb2YgQ1MgcGFy YW1ldGVyIHZhbHVlcyB0aGF0IHdpbGwgYmUgdXNlZCBvbiB0aGUgbmV4dCAqKnN0YXJ0KiogY2Fs bC4KLStXaGVuIG5vIG1lYXN1cmVtZW50cyBhcmUgYWN0aXZlLCBgYG5vbmVgYCBpcyBzaG93bi4K LSsKLStUaGUgcGFyYW1ldGVyIG91dHB1dCBpcyBkaXZpZGVkIGludG8gdGhyZWUgc2VjdGlvbnM6 Ci0rCi0rLSAqKkRlZmF1bHQgU2V0dGluZ3MqKiDigJQgcm9sZSwgQ1Mgc3luYyBhbnRlbm5hIHNl bGVjdGlvbiwgbWF4IFRYIHBvd2VyLgotKy0gKipDUyBDb25maWcgUGFyYW1zKiog4oCUIHBlci1w cm9jZWR1cmUgY29uZmlndXJhdGlvbiBmaWVsZHMgaW5jbHVkaW5nCi0rICBtb2RlIHR5cGUsIHN0 ZXAgY291bnRzLCBQSFksIGFuZCBjaGFubmVsIG1hcC4KLSstICoqQ1MgRnJlcXVlbmN5IFBhcmFt cyoqIOKAlCBwcm9jZWR1cmUgc2NoZWR1bGluZyBmaWVsZHMgaW5jbHVkaW5nCi0rICBkdXJhdGlv biwgcGVyaW9kLCBzdWJldmVudCBsZW5ndGhzLCBhbmQgU05SIGNvbnRyb2wuCi0rCi0rOlVzYWdl OiAqKj4gc2hvdyoqCi0rOkV4YW1wbGUgU2hvdyBhY3RpdmUgc2Vzc2lvbiBhbmQgYWxsIENTIHBh cmFtZXRlcnM6Ci0rCXwgKio+IHNob3cqKgotKwotK0NTIFBhcmFtZXRlciBDb21tYW5kcwotKz09 PT09PT09PT09PT09PT09PT09PT0KLSsKLStFYWNoIENTIHBhcmFtZXRlciBpcyBzZXQgd2l0aCBp dHMgb3duIGNvbW1hbmQsIG9mIHRoZSBmb3JtCi0rYGBjcy48cGFyYW0+IDx2YWx1ZT5gYC4gRW50 ZXJpbmcgYSBwYXJhbSBjb21tYW5kIHdpdGggbm8gdmFsdWUgc2hvd3MKLStpdHMgY3VycmVudCBz ZXR0aW5nLiBPdmVycmlkZXMgYXBwbHkgdG8gdGhlIGxvY2FsIHBhcmFtZXRlciBzdGF0ZQotK2lt bWVkaWF0ZWx5LCBzbyAqKnNob3cqKiByZWZsZWN0cyB0aGVtIHJpZ2h0IGF3YXk7ICoqc3RhcnQq KiBhbHdheXMKLSt1c2VzIHdoYXRldmVyIHZhbHVlcyBhcmUgY3VycmVudGx5IHNldC4gQXJyYXkt dmFsdWVkIHBhcmFtZXRlcnMKLSsoYGBjaGFubmVsX21hcGBgLCBgYG1pbl9zdWJfZXZlbnRfbGVu YGAsIGBgbWF4X3N1Yl9ldmVudF9sZW5gYCkgdGFrZQotK2NvbG9uLXNlcGFyYXRlZCBoZXggYnl0 ZXMgd2l0aCBubyBgYDB4YGAgcHJlZml4LgotKwotKzpVc2FnZTogKio+IDxwYXJhbT4gW3ZhbHVl XSoqCi0rCi0rcm9sZQotKy0tLS0KLSsKLStHZXQvc2V0IHRoZSBDUyByb2xlLgotKwotKzpVc2Fn ZTogKio+IHJvbGUgWzB4MDF8MHgwMnwweDAzXSoqCi0rOlsweDAxfDB4MDJ8MHgwM106IGBgMHgw MWBgIEluaXRpYXRvciwgYGAweDAyYGAgUmVmbGVjdG9yLCBgYDB4MDNgYCBCb3RoCi0rICAgICAg ICAgICAgICAgICAgIChvcHRpb25hbCwgc2hvd3MgY3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0 IGBgMHgwM2BgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCByb2xlOgotKwl8ICoqPiByb2xlKioK LSs6RXhhbXBsZSBTZXQgcm9sZSB0byBJbml0aWF0b3Igb25seToKLSsJfCAqKj4gcm9sZSAweDAx KioKLSs6RXhhbXBsZSBTZXQgcm9sZSB0byBSZWZsZWN0b3Igb25seSAoZG9lcyBub3QgbWVhc3Vy ZSk6Ci0rCXwgKio+IHJvbGUgMHgwMioqCi0rOkV4YW1wbGUgU2V0IHJvbGUgdG8gYm90aCBJbml0 aWF0b3IgYW5kIFJlZmxlY3RvcjoKLSsJfCAqKj4gcm9sZSAweDAzKioKLSsKLStzeW5jX2FudF9z ZWwKLSstLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBDUyBzeW5jIGFudGVubmEgc2VsZWN0 aW9uLgotKwotKzpVc2FnZTogKio+IHN5bmNfYW50X3NlbCBbdmFsdWVdKioKLSs6W3ZhbHVlXTog Q1Mgc3luYyBhbnRlbm5hIHNlbGVjdGlvbjsgYGAweEZFYGAvYGAweEZGYGAgcmVzZXJ2ZWQKLSsg ICAgICAgICAgKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAw eEZGYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IGFudGVubmEgc2VsZWN0aW9uOgotKwl8ICoq PiBzeW5jX2FudF9zZWwqKgotKzpFeGFtcGxlIFNlbGVjdCBhbnRlbm5hIDE6Ci0rCXwgKio+IHN5 bmNfYW50X3NlbCAweDAxKioKLSsKLSttYXhfdHhfcG93ZXIKLSstLS0tLS0tLS0tLS0KLSsKLStH ZXQvc2V0IHRoZSBtYXhpbXVtIFRYIHBvd2VyLgotKwotKzpVc2FnZTogKio+IG1heF90eF9wb3dl ciBbZEJtXSoqCi0rOltkQm1dOiBNYXggVFggcG93ZXIgaW4gZEJtLCBzaWduZWQgKG9wdGlvbmFs LCBzaG93cyBjdXJyZW50IGlmCi0rICAgICAgICBvbWl0dGVkOyByYW5nZSDiiJIxMjcgdG8gKzIw OyBkZWZhdWx0IGBgMjBgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgbWF4IFRYIHBvd2VyOgot Kwl8ICoqPiBtYXhfdHhfcG93ZXIqKgotKzpFeGFtcGxlIFJlZHVjZSBtYXggVFggcG93ZXIgdG8g MTAgZEJtOgotKwl8ICoqPiBtYXhfdHhfcG93ZXIgMTAqKgotKwotK2NvbmZpZ19pZAotKy0tLS0t LS0tLQotKwotK0dldC9zZXQgdGhlIENTIGNvbmZpZ3VyYXRpb24gaWRlbnRpZmllci4KLSsKLSs6 VXNhZ2U6ICoqPiBjb25maWdfaWQgW3ZhbHVlXSoqCi0rOlt2YWx1ZV06IENTIGNvbmZpZ3VyYXRp b24gaWRlbnRpZmllciAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYKLSsgICAgICAgICAgb21p dHRlZDsgZGVmYXVsdCBgYDBgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgY29uZmlnIGlkOgot Kwl8ICoqPiBjb25maWdfaWQqKgotKzpFeGFtcGxlIFNldCBjb25maWcgaWQgdG8gMToKLSsJfCAq Kj4gY29uZmlnX2lkIDEqKgotKwotK21haW5fbW9kZV90eXBlCi0rLS0tLS0tLS0tLS0tLS0KLSsK LStHZXQvc2V0IHRoZSBDUyBtYWluIG1vZGUgdHlwZS4KLSsKLSs6VXNhZ2U6ICoqPiBtYWluX21v ZGVfdHlwZSBbMXwyfDNdKioKLSs6WzF8MnwzXTogYGAxYGAgTW9kZSAxIChSVFQpLCBgYDJgYCBN b2RlIDIgKFBCUiksIGBgM2BgIEJvdGggKG9wdGlvbmFsLAotKyAgICAgICAgICBzaG93cyBjdXJy ZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAxYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IG1h aW4gbW9kZSB0eXBlOgotKwl8ICoqPiBtYWluX21vZGVfdHlwZSoqCi0rOkV4YW1wbGUgU2V0IG1h aW4gbW9kZSB0byBNb2RlIDIgKFBCUik6Ci0rCXwgKio+IG1haW5fbW9kZV90eXBlIDIqKgotKzpF eGFtcGxlIFNldCBtYWluIG1vZGUgdG8gYm90aCBSVFQgYW5kIFBCUjoKLSsJfCAqKj4gbWFpbl9t b2RlX3R5cGUgMyoqCi0rCi0rc3ViX21vZGVfdHlwZQotKy0tLS0tLS0tLS0tLS0KLSsKLStHZXQv c2V0IHRoZSBDUyBzdWItbW9kZSB0eXBlIHdpdGhpbiB0aGUgbWFpbiBtb2RlLgotKwotKzpVc2Fn ZTogKio+IHN1Yl9tb2RlX3R5cGUgW3ZhbHVlXSoqCi0rOlt2YWx1ZV06IFN1Yi1tb2RlIHdpdGhp biBtYWluIG1vZGU7IGBgMHhGRmBgID0gdW51c2VkIChvcHRpb25hbCwKLSsgICAgICAgICAgc2hv d3MgY3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0IGBgMHhGRmBgKQotKzpFeGFtcGxlIFNob3cg Y3VycmVudCBzdWItbW9kZSB0eXBlOgotKwl8ICoqPiBzdWJfbW9kZV90eXBlKioKLSs6RXhhbXBs ZSBTZXQgc3ViLW1vZGUgdHlwZSB0byAweDAxOgotKwl8ICoqPiBzdWJfbW9kZV90eXBlIDB4MDEq KgotKwotK21haW5fbW9kZV9taW5fc3RlcHMKLSstLS0tLS0tLS0tLS0tLS0tLS0tLQotKwotK0dl dC9zZXQgdGhlIG1pbmltdW0gQ1MgbWFpbiBtb2RlIHN0ZXBzIHBlciBzdWJldmVudC4KLSsKLSs6 VXNhZ2U6ICoqPiBtYWluX21vZGVfbWluX3N0ZXBzIFt2YWx1ZV0qKgotKzpbdmFsdWVdOiBNaW4g Q1MgbWFpbiBtb2RlIHN0ZXBzIHBlciBzdWJldmVudCAob3B0aW9uYWwsIHNob3dzCi0rICAgICAg ICAgIGN1cnJlbnQgaWYgb21pdHRlZDsgZGVmYXVsdCBgYDJgYCkKLSs6RXhhbXBsZSBTaG93IGN1 cnJlbnQgdmFsdWU6Ci0rCXwgKio+IG1haW5fbW9kZV9taW5fc3RlcHMqKgotKzpFeGFtcGxlIFNl dCBtaW5pbXVtIHN0ZXBzIHRvIDQ6Ci0rCXwgKio+IG1haW5fbW9kZV9taW5fc3RlcHMgNCoqCi0r Ci0rbWFpbl9tb2RlX21heF9zdGVwcwotKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3Nl dCB0aGUgbWF4aW11bSBDUyBtYWluIG1vZGUgc3RlcHMgcGVyIHN1YmV2ZW50LgotKwotKzpVc2Fn ZTogKio+IG1haW5fbW9kZV9tYXhfc3RlcHMgW3ZhbHVlXSoqCi0rOlt2YWx1ZV06IE1heCBDUyBt YWluIG1vZGUgc3RlcHMgcGVyIHN1YmV2ZW50IChvcHRpb25hbCwgc2hvd3MKLSsgICAgICAgICAg Y3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0IGBgM2BgKQotKzpFeGFtcGxlIFNob3cgY3VycmVu dCB2YWx1ZToKLSsJfCAqKj4gbWFpbl9tb2RlX21heF9zdGVwcyoqCi0rOkV4YW1wbGUgU2V0IG1h eGltdW0gc3RlcHMgdG8gODoKLSsJfCAqKj4gbWFpbl9tb2RlX21heF9zdGVwcyA4KioKLSsKLStt YWluX21vZGVfcmVwZXRpdGlvbgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKwotK0dldC9zZXQg aG93IG1hbnkgdGltZXMgbWFpbiBtb2RlIHN0ZXBzIGFyZSByZXBlYXRlZCBpbiBhIHN1YmV2ZW50 LgotKwotKzpVc2FnZTogKio+IG1haW5fbW9kZV9yZXBldGl0aW9uIFt2YWx1ZV0qKgotKzpbdmFs dWVdOiBSZXBldGl0aW9uIGNvdW50IChvcHRpb25hbCwgc2hvd3MgY3VycmVudCBpZiBvbWl0dGVk OwotKyAgICAgICAgICBkZWZhdWx0IGBgMWBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1 ZToKLSsJfCAqKj4gbWFpbl9tb2RlX3JlcGV0aXRpb24qKgotKzpFeGFtcGxlIFJlcGVhdCBtYWlu IG1vZGUgc3RlcHMgdHdpY2U6Ci0rCXwgKio+IG1haW5fbW9kZV9yZXBldGl0aW9uIDIqKgotKwot K21vZGUwX3N0ZXBzCi0rLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBudW1iZXIgb2YgQ1Mg TW9kZSAwIHN0ZXBzIGF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaAotK3N1YmV2ZW50LgotKwotKzpV c2FnZTogKio+IG1vZGUwX3N0ZXBzIFt2YWx1ZV0qKgotKzpbdmFsdWVdOiBDUyBNb2RlIDAgc3Rl cCBjb3VudCAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYgb21pdHRlZDsKLSsgICAgICAgICAg ZGVmYXVsdCBgYDJgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IG1v ZGUwX3N0ZXBzKioKLSs6RXhhbXBsZSBTZXQgTW9kZSAwIHN0ZXBzIHRvIDM6Ci0rCXwgKio+IG1v ZGUwX3N0ZXBzIDMqKgotKwotK3J0dF90eXBlcwotKy0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhl IFJUVCBtZWFzdXJlbWVudCB0eXBlcyBiaXRtYXNrLgotKwotKzpVc2FnZTogKio+IHJ0dF90eXBl cyBbdmFsdWVdKioKLSs6W3ZhbHVlXTogUlRUIG1lYXN1cmVtZW50IHR5cGVzIGJpdG1hc2sgKG9w dGlvbmFsLCBzaG93cyBjdXJyZW50IGlmCi0rICAgICAgICAgIG9taXR0ZWQ7IGRlZmF1bHQgYGAw YGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiBydHRfdHlwZXMqKgot KzpFeGFtcGxlIFNldCBSVFQgdHlwZXMgYml0bWFzazoKLSsJfCAqKj4gcnR0X3R5cGVzIDB4MDEq KgotKwotK3N5bmNfcGh5Ci0rLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBQSFkgdXNlZCBmb3Ig Q1Mgc3luYy4KLSsKLSs6VXNhZ2U6ICoqPiBzeW5jX3BoeSBbMHgwMXwweDAyXSoqCi0rOlsweDAx fDB4MDJdOiBgYDB4MDFgYCBMRSAxTSwgYGAweDAyYGAgTEUgMk0gKG9wdGlvbmFsLCBzaG93cyBj dXJyZW50Ci0rICAgICAgICAgICAgICBpZiBvbWl0dGVkOyBkZWZhdWx0IGBgMHgwMWBgKQotKzpF eGFtcGxlIFNob3cgY3VycmVudCBzeW5jIFBIWToKLSsJfCAqKj4gc3luY19waHkqKgotKzpFeGFt cGxlIFNldCBDUyBzeW5jIFBIWSB0byBMRSAyTToKLSsJfCAqKj4gc3luY19waHkgMHgwMioqCi0r Ci0rY2hhbm5lbF9tYXAKLSstLS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIDEwLWJ5dGUgQ1Mg Y2hhbm5lbCBtYXAgYml0bWFwLgotKwotKzpVc2FnZTogKio+IGNoYW5uZWxfbWFwIFtiMDpiMTou Li46YjldKioKLSs6W2IwOmIxOi4uLjpiOV06IDEwIGNvbG9uLXNlcGFyYXRlZCBoZXggYnl0ZXMg KG9wdGlvbmFsLCBzaG93cyBjdXJyZW50Ci0rICAgICAgICAgICAgICAgICBpZiBvbWl0dGVkOyBk ZWZhdWx0IGBgRkM6RkY6N0Y6RkM6RkY6RkY6RkY6RkY6RkY6MUZgYCkKLSs6RXhhbXBsZSBTaG93 IGN1cnJlbnQgY2hhbm5lbCBtYXA6Ci0rCXwgKio+IGNoYW5uZWxfbWFwKioKLSs6RXhhbXBsZSBT ZXQgYSBjdXN0b20gY2hhbm5lbCBtYXAgKGFsbCBlbmFibGVkKToKLSsJfCAqKj4gY2hhbm5lbF9t YXAgRkY6RkY6RkY6RkY6RkY6RkY6RkY6RkY6RkY6RkYqKgotKwotK2NoYW5uZWxfbWFwX3JlcGV0 aXRpb24KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIG51bWJlciBv ZiBjb25zZWN1dGl2ZSByZXBldGl0aW9ucyBvZiB0aGUgY2hhbm5lbCBtYXAuCi0rCi0rOlVzYWdl OiAqKj4gY2hhbm5lbF9tYXBfcmVwZXRpdGlvbiBbdmFsdWVdKioKLSs6W3ZhbHVlXTogUmVwZXRp dGlvbiBjb3VudCAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYgb21pdHRlZDsKLSsgICAgICAg ICAgZGVmYXVsdCBgYDFgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+ IGNoYW5uZWxfbWFwX3JlcGV0aXRpb24qKgotKzpFeGFtcGxlIFJlcGVhdCB0aGUgY2hhbm5lbCBt YXAgMyB0aW1lczoKLSsJfCAqKj4gY2hhbm5lbF9tYXBfcmVwZXRpdGlvbiAzKioKLSsKLStjaGFu bmVsX3NlbGVjdGlvbl90eXBlCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0 IHRoZSBDUyBjaGFubmVsIHNlbGVjdGlvbiBhbGdvcml0aG0uCi0rCi0rOlVzYWdlOiAqKj4gY2hh bm5lbF9zZWxlY3Rpb25fdHlwZSBbdmFsdWVdKioKLSs6W3ZhbHVlXTogQ2hhbm5lbCBzZWxlY3Rp b24gYWxnb3JpdGhtIChvcHRpb25hbCwgc2hvd3MgY3VycmVudCBpZgotKyAgICAgICAgICBvbWl0 dGVkOyBkZWZhdWx0IGBgMGBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1ZToKLSsJfCAq Kj4gY2hhbm5lbF9zZWxlY3Rpb25fdHlwZSoqCi0rOkV4YW1wbGUgU2VsZWN0IGFsZ29yaXRobSAx OgotKwl8ICoqPiBjaGFubmVsX3NlbGVjdGlvbl90eXBlIDEqKgotKwotK2NoYW5uZWxfc2hhcGUK LSstLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgc2hhcGUgdXNlZCBpbiB0aGUgY2hhbm5l bCBzZWxlY3Rpb24gYWxnb3JpdGhtLgotKwotKzpVc2FnZTogKio+IGNoYW5uZWxfc2hhcGUgW3Zh bHVlXSoqCi0rOlt2YWx1ZV06IENoYW5uZWwgc2hhcGUgKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50 IGlmIG9taXR0ZWQ7IGRlZmF1bHQKLSsgICAgICAgICAgYGAwYGApCi0rOkV4YW1wbGUgU2hvdyBj dXJyZW50IHZhbHVlOgotKwl8ICoqPiBjaGFubmVsX3NoYXBlKioKLSs6RXhhbXBsZSBTZXQgY2hh bm5lbCBzaGFwZSB0byAxOgotKwl8ICoqPiBjaGFubmVsX3NoYXBlIDEqKgotKwotK2NoYW5uZWxf anVtcAotKy0tLS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIGNoYW5uZWwganVtcCBzaXplLgot KwotKzpVc2FnZTogKio+IGNoYW5uZWxfanVtcCBbdmFsdWVdKioKLSs6W3ZhbHVlXTogQ2hhbm5l bCBqdW1wIHNpemUgKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50IGlmIG9taXR0ZWQ7Ci0rICAgICAg ICAgIGRlZmF1bHQgYGAyYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoq PiBjaGFubmVsX2p1bXAqKgotKzpFeGFtcGxlIFNldCBjaGFubmVsIGp1bXAgdG8gNDoKLSsJfCAq Kj4gY2hhbm5lbF9qdW1wIDQqKgotKwotK2NvbXBhbmlvbl9zaWduYWxfZW5hYmxlCi0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB3aGV0aGVyIHRoZSBjb21wYW5pb24gc2ln bmFsIGlzIHRyYW5zbWl0dGVkLgotKwotKzpVc2FnZTogKio+IGNvbXBhbmlvbl9zaWduYWxfZW5h YmxlIFswfDFdKioKLSs6WzB8MV06IGBgMWBgIHRvIHRyYW5zbWl0IGNvbXBhbmlvbiBzaWduYWws IGBgMGBgIHRvIGRpc2FibGUgKG9wdGlvbmFsLAotKyAgICAgICAgc2hvd3MgY3VycmVudCBpZiBv bWl0dGVkOyBkZWZhdWx0IGBgMGBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1ZToKLSsJ fCAqKj4gY29tcGFuaW9uX3NpZ25hbF9lbmFibGUqKgotKzpFeGFtcGxlIEVuYWJsZSB0aGUgY29t cGFuaW9uIHNpZ25hbDoKLSsJfCAqKj4gY29tcGFuaW9uX3NpZ25hbF9lbmFibGUgMSoqCi0rCi0r bWF4X3Byb2NlZHVyZV9kdXJhdGlvbgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rR2V0 L3NldCB0aGUgbWF4aW11bSBkdXJhdGlvbiBvZiBvbmUgQ1MgbWVhc3VyZW1lbnQgcHJvY2VkdXJl LgotKwotKzpVc2FnZTogKio+IG1heF9wcm9jZWR1cmVfZHVyYXRpb24gW3ZhbHVlXSoqCi0rOlt2 YWx1ZV06IE1heGltdW0gcHJvY2VkdXJlIGR1cmF0aW9uIChvcHRpb25hbCwgc2hvd3MgY3VycmVu dCBpZgotKyAgICAgICAgICBvbWl0dGVkOyBkZWZhdWx0IGBgMTYwMGBgKQotKzpFeGFtcGxlIFNo b3cgY3VycmVudCB2YWx1ZToKLSsJfCAqKj4gbWF4X3Byb2NlZHVyZV9kdXJhdGlvbioqCi0rOkV4 YW1wbGUgU2V0IG1heCBwcm9jZWR1cmUgZHVyYXRpb24gdG8gODAwOgotKwl8ICoqPiBtYXhfcHJv Y2VkdXJlX2R1cmF0aW9uIDgwMCoqCi0rCi0rbWluX3BlcmlvZF9iZXR3ZWVuX3Byb2NlZHVyZXMK LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgbWluaW11 bSB0aW1lIGJldHdlZW4gY29uc2VjdXRpdmUgcHJvY2VkdXJlcy4KLSsKLSs6VXNhZ2U6ICoqPiBt aW5fcGVyaW9kX2JldHdlZW5fcHJvY2VkdXJlcyBbdmFsdWVdKioKLSs6W3ZhbHVlXTogTWluaW11 bSBwZXJpb2QgKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQKLSsg ICAgICAgICAgYGAzMGBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1ZToKLSsJfCAqKj4g bWluX3BlcmlvZF9iZXR3ZWVuX3Byb2NlZHVyZXMqKgotKzpFeGFtcGxlIFNldCBtaW5pbXVtIHBl cmlvZCB0byA1MDoKLSsJfCAqKj4gbWluX3BlcmlvZF9iZXR3ZWVuX3Byb2NlZHVyZXMgNTAqKgot KwotK21heF9wZXJpb2RfYmV0d2Vlbl9wcm9jZWR1cmVzCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotKwotK0dldC9zZXQgdGhlIG1heGltdW0gdGltZSBiZXR3ZWVuIGNvbnNlY3V0 aXZlIHByb2NlZHVyZXMuCi0rCi0rOlVzYWdlOiAqKj4gbWF4X3BlcmlvZF9iZXR3ZWVuX3Byb2Nl ZHVyZXMgW3ZhbHVlXSoqCi0rOlt2YWx1ZV06IE1heGltdW0gcGVyaW9kIChvcHRpb25hbCwgc2hv d3MgY3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0Ci0rICAgICAgICAgIGBgMTUwYGApCi0rOkV4 YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiBtYXhfcGVyaW9kX2JldHdlZW5fcHJv Y2VkdXJlcyoqCi0rOkV4YW1wbGUgU2V0IG1heGltdW0gcGVyaW9kIHRvIDIwMDoKLSsJfCAqKj4g bWF4X3BlcmlvZF9iZXR3ZWVuX3Byb2NlZHVyZXMgMjAwKioKLSsKLSttYXhfcHJvY2VkdXJlX2Nv dW50Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBtYXhpbXVtIG51bWJl ciBvZiBwcm9jZWR1cmVzLgotKwotKzpVc2FnZTogKio+IG1heF9wcm9jZWR1cmVfY291bnQgW3Zh bHVlXSoqCi0rOlt2YWx1ZV06IE1heCBwcm9jZWR1cmUgY291bnQ7IGBgMGBgID0gbm8gbGltaXQg KG9wdGlvbmFsLCBzaG93cwotKyAgICAgICAgICBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQg YGAwYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiBtYXhfcHJvY2Vk dXJlX2NvdW50KioKLSs6RXhhbXBsZSBMaW1pdCB0aGUgcHJvY2VkdXJlIGNvdW50IHRvIDEwMDoK LSsJfCAqKj4gbWF4X3Byb2NlZHVyZV9jb3VudCAxMDAqKgotKwotK21pbl9zdWJfZXZlbnRfbGVu Ci0rLS0tLS0tLS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgbWluaW11bSBDUyBzdWJldmVu dCBsZW5ndGguCi0rCi0rOlVzYWdlOiAqKj4gbWluX3N1Yl9ldmVudF9sZW4gW2IwOmIxOmIyXSoq Ci0rOltiMDpiMTpiMl06IDMtYnl0ZSBMRSB2YWx1ZSwgY29sb24tc2VwYXJhdGVkIGhleCAob3B0 aW9uYWwsIHNob3dzCi0rICAgICAgICAgICAgIGN1cnJlbnQgaWYgb21pdHRlZDsgZGVmYXVsdCBg YDAwOjIwOjAwYGApCi0rOkV4YW1wbGUgU2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiBtaW5f c3ViX2V2ZW50X2xlbioqCi0rOkV4YW1wbGUgU2V0IG1pbmltdW0gc3ViZXZlbnQgbGVuZ3RoOgot Kwl8ICoqPiBtaW5fc3ViX2V2ZW50X2xlbiAwMDoxMDowMCoqCi0rCi0rbWF4X3N1Yl9ldmVudF9s ZW4KLSstLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStHZXQvc2V0IHRoZSBtYXhpbXVtIENTIHN1YmV2 ZW50IGxlbmd0aC4KLSsKLSs6VXNhZ2U6ICoqPiBtYXhfc3ViX2V2ZW50X2xlbiBbYjA6YjE6YjJd KioKLSs6W2IwOmIxOmIyXTogMy1ieXRlIExFIHZhbHVlLCBjb2xvbi1zZXBhcmF0ZWQgaGV4IChv cHRpb25hbCwgc2hvd3MKLSsgICAgICAgICAgICAgY3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0 IGBgMDM6MjA6MDBgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IG1h eF9zdWJfZXZlbnRfbGVuKioKLSs6RXhhbXBsZSBTZXQgbWF4aW11bSBzdWJldmVudCBsZW5ndGg6 Ci0rCXwgKio+IG1heF9zdWJfZXZlbnRfbGVuIDA0OjIwOjAwKioKLSsKLSt0b25lX2FudGVubmFf Y29uZmlnX3NlbGVjdGlvbgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsKLStH ZXQvc2V0IHRoZSBhbnRlbm5hIGNvbmZpZ3VyYXRpb24gZm9yIENTIHRvbmUgZXhjaGFuZ2VzLgot KwotKzpVc2FnZTogKio+IHRvbmVfYW50ZW5uYV9jb25maWdfc2VsZWN0aW9uIFt2YWx1ZV0qKgot KzpbdmFsdWVdOiBBbnRlbm5hIGNvbmZpZyBzZWxlY3Rpb24gKG9wdGlvbmFsLCBzaG93cyBjdXJy ZW50IGlmCi0rICAgICAgICAgIG9taXR0ZWQ7IGRlZmF1bHQgYGAweDA3YGApCi0rOkV4YW1wbGUg U2hvdyBjdXJyZW50IHZhbHVlOgotKwl8ICoqPiB0b25lX2FudGVubmFfY29uZmlnX3NlbGVjdGlv bioqCi0rOkV4YW1wbGUgU2V0IGFudGVubmEgY29uZmlnIHRvIDB4MDE6Ci0rCXwgKio+IHRvbmVf YW50ZW5uYV9jb25maWdfc2VsZWN0aW9uIDB4MDEqKgotKwotK3BoeQotKy0tLQotKwotK0dldC9z ZXQgdGhlIFBIWSB1c2VkIGZvciBDUyBwcm9jZWR1cmVzLgotKwotKzpVc2FnZTogKio+IHBoeSBb MHgwMXwweDAyXSoqCi0rOlsweDAxfDB4MDJdOiBgYDB4MDFgYCBMRSAxTSwgYGAweDAyYGAgTEUg Mk0gKG9wdGlvbmFsLCBzaG93cyBjdXJyZW50Ci0rICAgICAgICAgICAgICBpZiBvbWl0dGVkOyBk ZWZhdWx0IGBgMHgwMWBgKQotKzpFeGFtcGxlIFNob3cgY3VycmVudCBwcm9jZWR1cmUgUEhZOgot Kwl8ICoqPiBwaHkqKgotKzpFeGFtcGxlIFNldCBDUyBwcm9jZWR1cmUgUEhZIHRvIExFIDJNOgot Kwl8ICoqPiBwaHkgMHgwMioqCi0rCi0rdHhfcG93ZXJfZGVsdGEKLSstLS0tLS0tLS0tLS0tLQot KwotK0dldC9zZXQgdGhlIHJlbW90ZSB2cyBsb2NhbCBUWCBwb3dlciBkZWx0YS4KLSsKLSs6VXNh Z2U6ICoqPiB0eF9wb3dlcl9kZWx0YSBbdmFsdWVdKioKLSs6W3ZhbHVlXTogVFggcG93ZXIgZGVs dGE7IGBgMHg4MGBgID0gbm90IGFwcGxpY2FibGUgKG9wdGlvbmFsLCBzaG93cwotKyAgICAgICAg ICBjdXJyZW50IGlmIG9taXR0ZWQ7IGRlZmF1bHQgYGAweDgwYGApCi0rOkV4YW1wbGUgU2hvdyBj dXJyZW50IHZhbHVlOgotKwl8ICoqPiB0eF9wb3dlcl9kZWx0YSoqCi0rOkV4YW1wbGUgU2V0IFRY IHBvd2VyIGRlbHRhIHRvIDB4MDU6Ci0rCXwgKio+IHR4X3Bvd2VyX2RlbHRhIDB4MDUqKgotKwot K3ByZWZlcnJlZF9wZWVyX2FudGVubmEKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKwotK0dl dC9zZXQgdGhlIHByZWZlcnJlZCBhbnRlbm5hIGZvciB0aGUgcGVlciBkZXZpY2UuCi0rCi0rOlVz YWdlOiAqKj4gcHJlZmVycmVkX3BlZXJfYW50ZW5uYSBbdmFsdWVdKioKLSs6W3ZhbHVlXTogUHJl ZmVycmVkIHBlZXIgYW50ZW5uYSAob3B0aW9uYWwsIHNob3dzIGN1cnJlbnQgaWYgb21pdHRlZDsK LSsgICAgICAgICAgZGVmYXVsdCBgYDB4MDNgYCkKLSs6RXhhbXBsZSBTaG93IGN1cnJlbnQgdmFs dWU6Ci0rCXwgKio+IHByZWZlcnJlZF9wZWVyX2FudGVubmEqKgotKzpFeGFtcGxlIFByZWZlciBh bnRlbm5hIDEgb24gdGhlIHBlZXI6Ci0rCXwgKio+IHByZWZlcnJlZF9wZWVyX2FudGVubmEgMHgw MSoqCi0rCi0rc25yX2NvbnRyb2xfaW5pdGlhdG9yCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot KwotK0dldC9zZXQgdGhlIFNOUiBjb250cm9sIGZvciB0aGUgaW5pdGlhdG9yLgotKwotKzpVc2Fn ZTogKio+IHNucl9jb250cm9sX2luaXRpYXRvciBbdmFsdWVdKioKLSs6W3ZhbHVlXTogU05SIGNv bnRyb2w7IGBgMHhGRmBgID0gbm8gcHJlZmVyZW5jZSAob3B0aW9uYWwsIHNob3dzCi0rICAgICAg ICAgIGN1cnJlbnQgaWYgb21pdHRlZDsgZGVmYXVsdCBgYDB4RkZgYCkKLSs6RXhhbXBsZSBTaG93 IGN1cnJlbnQgdmFsdWU6Ci0rCXwgKio+IHNucl9jb250cm9sX2luaXRpYXRvcioqCi0rOkV4YW1w bGUgUHJlZmVyIGhpZ2ggU05SIG9uIHRoZSBpbml0aWF0b3I6Ci0rCXwgKio+IHNucl9jb250cm9s X2luaXRpYXRvciAweDAxKioKLSsKLStzbnJfY29udHJvbF9yZWZsZWN0b3IKLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0rCi0rR2V0L3NldCB0aGUgU05SIGNvbnRyb2wgZm9yIHRoZSByZWZsZWN0 b3IuCi0rCi0rOlVzYWdlOiAqKj4gc25yX2NvbnRyb2xfcmVmbGVjdG9yIFt2YWx1ZV0qKgotKzpb dmFsdWVdOiBTTlIgY29udHJvbDsgYGAweEZGYGAgPSBubyBwcmVmZXJlbmNlIChvcHRpb25hbCwg c2hvd3MKLSsgICAgICAgICAgY3VycmVudCBpZiBvbWl0dGVkOyBkZWZhdWx0IGBgMHhGRmBgKQot KzpFeGFtcGxlIFNob3cgY3VycmVudCB2YWx1ZToKLSsJfCAqKj4gc25yX2NvbnRyb2xfcmVmbGVj dG9yKioKLSs6RXhhbXBsZSBQcmVmZXIgaGlnaCBTTlIgb24gdGhlIHJlZmxlY3RvcjoKLSsJfCAq Kj4gc25yX2NvbnRyb2xfcmVmbGVjdG9yIDB4MDEqKgotKzpFeGFtcGxlIFByZWZlciBoaWdoIFNO UiBvbiBib3RoIHJvbGVzOgotKwl8ICoqPiBzbnJfY29udHJvbF9pbml0aWF0b3IgMHgwMSoqCi0r CXwgKio+IHNucl9jb250cm9sX3JlZmxlY3RvciAweDAxKioKLSsKLStSRVNPVVJDRVMKLSs9PT09 PT09PT0KLSsKLStodHRwOi8vd3d3LmJsdWV6Lm9yZwotKwotK1JFUE9SVElORyBCVUdTCi0rPT09 PT09PT09PT09PT0KLSsKLStsaW51eC1ibHVldG9vdGhAdmdlci5rZXJuZWwub3JnCi0tLSAKLTIu NTQuMAotCgpkaWZmIC0tZ2l0IGEvYXZyY3AtZ2V0Zm9sZGVyaXRlbXMucGF0Y2ggYi9hdnJjcC1n ZXRmb2xkZXJpdGVtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY2ODI1 ZC4uMDAwMDAwMAotLS0gYS9hdnJjcC1nZXRmb2xkZXJpdGVtcy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE0OCArMCwwIEBACi1Gcm9tIGJkODk4OTYyMGVkNmU4MDc1NWYwNmNmZGIxOGY1YjRh MzkxMzQ5M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXN0aWVuIE5vY2VyYSA8 aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBGcmksIDE0IEF1ZyAyMDI2IDE2OjAxOjE4ICswMjAw Ci1TdWJqZWN0OiBbUEFUQ0hdIGF2cmNwOiBGaXggT3V0LW9mLUJvdW5kcyBSZWFkIGluIEFWUkNQ IEdldEZvbGRlckl0ZW1zIHBhcnNpbmcKLQotSWYgdGhlICJEaXNwbGF5YWJsZSBOYW1lIExlbmd0 aCIgaXMgbXVjaCBsb25nZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgUERVCi1wYWNrZXQgd2UgcmVj ZWl2ZSwgdGhlbiB3ZSBtaWdodCB0cnkgdG8gbWVtY3B5KCkgcGFzdCB0aGUgZW5kIG9mIHRoZSBQ RFUKLXBhY2tldC4KLQotQmUgY2FyZWZ1bCBhYm91dCBjbGFtcGluZyB0aGUgbmFtZSBjb3B5aW5n IHRvIHRoZSBzbWFsbGVzdCBvZjoKLS0gbGVuZ3RoIHNwZWNpZmllZCBpbiB0aGUgUERVCi0tIGxl ZnQtb3ZlciBwYWNrZXQgYWZ0ZXIgdGhlIGxlbmd0aCBmaWVsZAotLSBzaXplIG9mIHRoZSBzdHJp bmcgd2UnbGwgY29weSBpdCBpbnRvCi0KLVJlcG9ydGVkLWJ5OiBFbG1hbiBTaGFoYmF6b3YgPHNo YWhiYXpvdmVsbWFuOTdAZ21haWwuY29tPgotLS0tCi0gcHJvZmlsZXMvYXVkaW8vYXZyY3AuYyB8 IDUxICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBj aGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L3Byb2ZpbGVzL2F1ZGlvL2F2cmNwLmMgYi9wcm9maWxlcy9hdWRpby9hdnJjcC5jCi1pbmRleCAy MTk0YTkxMzU4MGYuLjIzZTk1OWM3NjkxNyAxMDA2NDQKLS0tLSBhL3Byb2ZpbGVzL2F1ZGlvL2F2 cmNwLmMKLSsrKyBiL3Byb2ZpbGVzL2F1ZGlvL2F2cmNwLmMKLUBAIC0xNDUsNiArMTQ1LDggQEAK LSAjZGVmaW5lIEFWUkNQX1NDT1BFX1NFQVJDSAkJCQkweDAyCi0gI2RlZmluZSBBVlJDUF9TQ09Q RV9OT1dfUExBWUlORwkJCTB4MDMKLSAKLSsjZGVmaW5lIE5BTUVfTUFYX0xFTiAyNTUKLSsKLSAj aWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgotIAotIHN0cnVjdCBhdnJjcF9oZWFk ZXIgewotQEAgLTI2MDgsMzAgKzI2MTAsNDUgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnN1YnR5cGVf dG9fc3RyaW5nKHVpbnQzMl90IHN1YnR5cGUpCi0gCXJldHVybiAiTm9uZSI7Ci0gfQotIAotK3N0 YXRpYyBnYm9vbGVhbiBwYXJzZV9tZWRpYV9uYW1lKHVpbnQ4X3QgKm9wZXJhbmRzLCB1aW50MTZf dCBsZW4sCi0rCQkJCXNpemVfdCBuYW1lX2xlbl9vZmZzZXQsCi0rCQkJCWNoYXIgKm5hbWUsIHVp bnQxNl90ICpuYW1lbGVuKQotK3sKLSsJdWludDE2X3QgbmFtZXNpemU7Ci0rCi0rCWlmIChsZW4g PCBuYW1lX2xlbl9vZmZzZXQgKyAyKQotKwkJcmV0dXJuIEZBTFNFOwotKwotKwltZW1zZXQobmFt ZSwgMCwgTkFNRV9NQVhfTEVOKTsKLSsJbmFtZXNpemUgPSBNSU4oZ2V0X2JlMTYoJm9wZXJhbmRz W25hbWVfbGVuX29mZnNldF0pLAotKwkJCWxlbiAtIG5hbWVfbGVuX29mZnNldCAtIDIpOwotKwlu YW1lc2l6ZSA9IE1JTihuYW1lc2l6ZSwgTkFNRV9NQVhfTEVOIC0gMSk7Ci0rCWlmICgqbmFtZWxl biA+IDApIHsKLSsJCWlmIChsZW4gPCBuYW1lX2xlbl9vZmZzZXQgKyAyICsgbmFtZXNpemUpCi0r CQkJcmV0dXJuIEZBTFNFOwotKwkJbWVtY3B5KG5hbWUsICZvcGVyYW5kc1tuYW1lX2xlbl9vZmZz ZXQgKyAyXSwgbmFtZXNpemUpOwotKwkJc3RydG91dGY4KG5hbWUsIG5hbWVzaXplKTsKLSsJfQot KwlpZiAobmFtZWxlbikKLSsJCSpuYW1lbGVuID0gbmFtZXNpemU7Ci0rCXJldHVybiBUUlVFOwot K30KLSsKLSBzdGF0aWMgc3RydWN0IG1lZGlhX2l0ZW0gKnBhcnNlX21lZGlhX2VsZW1lbnQoc3Ry dWN0IGF2cmNwICpzZXNzaW9uLAotIAkJCQkJdWludDhfdCAqb3BlcmFuZHMsIHVpbnQxNl90IGxl bikKLSB7Ci0gCXN0cnVjdCBhdnJjcF9wbGF5ZXIgKnBsYXllcjsKLSAJc3RydWN0IG1lZGlhX3Bs YXllciAqbXA7Ci0gCXN0cnVjdCBtZWRpYV9pdGVtICppdGVtOwotLQl1aW50MTZfdCBuYW1lbGVu LCBuYW1lc2l6ZTsKLS0JY2hhciBuYW1lWzI1NV07Ci0rCXVpbnQxNl90IG5hbWVzaXplOwotKwlj aGFyIG5hbWVbTkFNRV9NQVhfTEVOXTsKLSAJdWludDY0X3QgdWlkOwotIAl1aW50OF90IGNvdW50 OwotIAotLQlpZiAobGVuIDwgMTMpCi0rCWlmICghcGFyc2VfbWVkaWFfbmFtZShvcGVyYW5kcywg bGVuLCAxMSwgbmFtZSwgJm5hbWVzaXplKSkKLSAJCXJldHVybiBOVUxMOwotIAotIAl1aWQgPSBn ZXRfYmU2NCgmb3BlcmFuZHNbMF0pOwotLQotLQltZW1zZXQobmFtZSwgMCwgc2l6ZW9mKG5hbWUp KTsKLS0JbmFtZXNpemUgPSBnZXRfYmUxNigmb3BlcmFuZHNbMTFdKTsKLS0JbmFtZWxlbiA9IE1J TihuYW1lc2l6ZSwgc2l6ZW9mKG5hbWUpIC0gMSk7Ci0tCWlmIChuYW1lbGVuID4gMCkgewotLQkJ bWVtY3B5KG5hbWUsICZvcGVyYW5kc1sxM10sIG5hbWVsZW4pOwotLQkJc3RydG91dGY4KG5hbWUs IG5hbWVsZW4pOwotLQl9Ci0tCi0gCWNvdW50ID0gb3BlcmFuZHNbMTMgKyBuYW1lc2l6ZV07Ci0g Ci0gCXBsYXllciA9IHNlc3Npb24tPmNvbnRyb2xsZXItPnBsYXllcjsKLUBAIC0yNjU1LDI0ICsy NjcyLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgbWVkaWFfaXRlbSAqcGFyc2VfbWVkaWFfZm9sZGVyKHN0 cnVjdCBhdnJjcCAqc2Vzc2lvbiwKLSAJc3RydWN0IGF2cmNwX3BsYXllciAqcGxheWVyID0gc2Vz c2lvbi0+Y29udHJvbGxlci0+cGxheWVyOwotIAlzdHJ1Y3QgbWVkaWFfcGxheWVyICptcCA9IHBs YXllci0+dXNlcl9kYXRhOwotIAlzdHJ1Y3QgbWVkaWFfaXRlbSAqaXRlbTsKLS0JdWludDE2X3Qg bmFtZWxlbjsKLS0JY2hhciBuYW1lWzI1NV07Ci0rCWNoYXIgbmFtZVtOQU1FX01BWF9MRU5dOwot IAl1aW50NjRfdCB1aWQ7Ci0gCXVpbnQ4X3QgdHlwZTsKLSAJdWludDhfdCBwbGF5YWJsZTsKLSAK LS0JaWYgKGxlbiA8IDEyKQotKwlpZiAoIXBhcnNlX21lZGlhX25hbWUob3BlcmFuZHMsIGxlbiwg MTIsIG5hbWUsIE5VTEwpKQotIAkJcmV0dXJuIE5VTEw7Ci0gCi0gCXVpZCA9IGdldF9iZTY0KCZv cGVyYW5kc1swXSk7Ci0gCXR5cGUgPSBvcGVyYW5kc1s4XTsKLSAJcGxheWFibGUgPSBvcGVyYW5k c1s5XTsKLSAKLS0JbWVtc2V0KG5hbWUsIDAsIHNpemVvZihuYW1lKSk7Ci0tCW5hbWVsZW4gPSBN SU4oZ2V0X2JlMTYoJm9wZXJhbmRzWzEyXSksIHNpemVvZihuYW1lKSAtIDEpOwotLQlpZiAobmFt ZWxlbiA+IDApCi0tCQltZW1jcHkobmFtZSwgJm9wZXJhbmRzWzE0XSwgbmFtZWxlbik7Ci0tCi0g CWl0ZW0gPSBtZWRpYV9wbGF5ZXJfY3JlYXRlX2ZvbGRlcihtcCwgbmFtZSwgdHlwZSwgdWlkKTsK LSAJaWYgKCFpdGVtKQotIAkJcmV0dXJuIE5VTEw7Ci0tLSAKLTIuNTUuMAotCi1Gcm9tIDhiZjdm ZTQ4NDc4MzNhNzZiZDdlNTFkNGQyNjliNGIzMzYzODkxOTMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBNb24s IDE3IEF1ZyAyMDI2IDEwOjExOjE5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2cmNwOiBGaXgg bWVkaWEvZm9sZGVyIG5hbWUgbm90IGJlaW5nIHNldAotCi0qbmFtZWxlbiB3YXMgdXNlZCBiZWZv cmUgYmVpbmcgc2V0LgotCi1GaXhlczogYmQ4OTg5NjIwZWQ2ICgiYXZyY3A6IEZpeCBPdXQtb2Yt Qm91bmRzIFJlYWQgaW4gQVZSQ1AgR2V0Rm9sZGVySXRlbXMgcGFyc2luZyIpCi0tLS0KLSBwcm9m aWxlcy9hdWRpby9hdnJjcC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHJvZmlsZXMvYXVkaW8vYXZyY3AuYyBi L3Byb2ZpbGVzL2F1ZGlvL2F2cmNwLmMKLWluZGV4IDIzZTk1OWM3NjkxNy4uMDI4YzFjMjU0Yjgy IDEwMDY0NAotLS0tIGEvcHJvZmlsZXMvYXVkaW8vYXZyY3AuYwotKysrIGIvcHJvZmlsZXMvYXVk aW8vYXZyY3AuYwotQEAgLTI2MjMsNyArMjYyMyw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwYXJzZV9t ZWRpYV9uYW1lKHVpbnQ4X3QgKm9wZXJhbmRzLCB1aW50MTZfdCBsZW4sCi0gCW5hbWVzaXplID0g TUlOKGdldF9iZTE2KCZvcGVyYW5kc1tuYW1lX2xlbl9vZmZzZXRdKSwKLSAJCQlsZW4gLSBuYW1l X2xlbl9vZmZzZXQgLSAyKTsKLSAJbmFtZXNpemUgPSBNSU4obmFtZXNpemUsIE5BTUVfTUFYX0xF TiAtIDEpOwotLQlpZiAoKm5hbWVsZW4gPiAwKSB7Ci0rCWlmIChuYW1lc2l6ZSA+IDApIHsKLSAJ CWlmIChsZW4gPCBuYW1lX2xlbl9vZmZzZXQgKyAyICsgbmFtZXNpemUpCi0gCQkJcmV0dXJuIEZB TFNFOwotIAkJbWVtY3B5KG5hbWUsICZvcGVyYW5kc1tuYW1lX2xlbl9vZmZzZXQgKyAyXSwgbmFt ZXNpemUpOwotLS0gCi0yLjU1LjAKLQoKZGlmZiAtLWdpdCBhL2JsdWV6LnNwZWMgYi9ibHVlei5z cGVjCmluZGV4IDk4MDEwMjEuLjRiYzVlMjcgMTAwNjQ0Ci0tLSBhL2JsdWV6LnNwZWMKKysrIGIv Ymx1ZXouc3BlYwpAQCAtNCwyNCArNCwyMiBAQAogJWJjb25kX3dpdGggZGVwcmVjYXRlZAogJWVu ZGlmCiAKKyMgU25hcHNob3QgZ2VuZXJhdGVkIHdpdGg6CisjIGdpdCBjb25maWcgdGFyLnRhci54 ei5jb21tYW5kICJ4eiAtYyIKKyMgZXhwb3J0IFNIQT1gZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhF QURgIDsgZXhwb3J0IFZFUlNJT049NS44NyA7IGdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhci54eiAt byBibHVlei0kVkVSU0lPTisxLmdpdCRTSEEudGFyLnh6IC0tcHJlZml4PWJsdWV6LSRWRVJTSU9O KzEuZ2l0JFNIQS8gSEVBRAorIyBhcyBhIHBvc3QtcmVsZWFzZSBzbmFwc2hvdCwgc2VlOgorIyBo dHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvUGFja2FnaW5nRHJhZnRzL1RpbGRlVmVyc2lv bmluZworJWdsb2JhbCBnaXRzaGEgODc1MDEyOWVmY2E4CisKIE5hbWU6ICAgIGJsdWV6Ci1WZXJz aW9uOiA1Ljg3Ci1SZWxlYXNlOiA3JXs/ZGlzdH0KK1ZlcnNpb246IDUuODcrMS5naXQle2dpdHNo YX0KK1JlbGVhc2U6IDElez9kaXN0fQogU3VtbWFyeTogQmx1ZXRvb3RoIHV0aWxpdGllcwogTGlj ZW5zZTogR1BMLTIuMC1vci1sYXRlcgogVVJMOiAgICAgaHR0cDovL3d3dy5ibHVlei5vcmcvCiAK IFNvdXJjZTA6IGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2JsdWV0b290aC8le25h bWV9LSV7dmVyc2lvbn0udGFyLnh6CiAKLSMgZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCA1Ljg3 Li4uMzBkYjY2ZGM5NzFiZDFjZDk1ZDRhN2IwZWVhMjk2MzY3YWI2NWIzYgotUGF0Y2gxOiA1Ljg3 LWJ1Zy1maXhlcy0xLnBhdGNoCi0jIENWRS0yMDI2LTc1MDMyCi1QYXRjaDI6IGF2cmNwLWdldGZv bGRlcml0ZW1zLnBhdGNoCi0jIENWRS0yMDI2LTgwMTg2Ci1QYXRjaDM6IG5hbWUydXRmOC1vdmVy Zmxvdy5wYXRjaAotIyBDVkUtMjAyNi04MDE4NQotUGF0Y2g0OiBzZHAteG1sLXR5cGUtY29uZnVz aW9uLnBhdGNoCi0KIEJ1aWxkUmVxdWlyZXM6IGRidXMtZGV2ZWwgPj0gMS42CiBCdWlsZFJlcXVp cmVzOiBnbGliMi1kZXZlbAogQnVpbGRSZXF1aXJlczogbGliZWxsLWRldmVsID49IDAuMzkKQEAg LTE4MCw3ICsxNzgsNyBAQCBpbnN0YWxsIC1tMDc1NSB0b29scy9idHNub29wICRSUE1fQlVJTERf Uk9PVCV7X2JpbmRpcn0KICMgc29tZSBpc3N1ZXMgYW5kIHRvIHNldCB0aGUgTUFDIGFkZHJlc3Mg b24gSENJcyB3aGljaCBkb24ndCBoYXZlIHRoZWlyCiAjIE1BQyBhZGRyZXNzIGNvbmZpZ3VyZWQg CiBpbnN0YWxsIC1tMDc1NSB0b29scy9idG1nbXQgJFJQTV9CVUlMRF9ST09UJXtfYmluZGlyfQot aW5zdGFsbCAtbTA2NDQgZG9jL2J0bWdtdC4xICRSUE1fQlVJTERfUk9PVCV7X21hbmRpcn0vbWFu MS8KK3JzdDJtYW4gZG9jL2J0bWdtdC5yc3QgLS1uby1kYXRlc3RhbXAgLS1uby1nZW5lcmF0b3Ig JFJQTV9CVUlMRF9ST09UJXtfbWFuZGlyfS9tYW4xL2J0bWdtdC4xCiAKICMgUmVtb3ZlIGxpYnRv b2wgYXJjaGl2ZQogZmluZCAkUlBNX0JVSUxEX1JPT1QgLW5hbWUgJyoubGEnIC1kZWxldGUKQEAg LTM0Niw2ICszNDQsOSBAQCBpbnN0YWxsIGVtdWxhdG9yL2J0dmlydCAke1JQTV9CVUlMRF9ST09U fS8le19saWJleGVjZGlyfS9ibHVldG9vdGgvCiAle191c2VydW5pdGRpcn0vb2JleC5zZXJ2aWNl CiAKICVjaGFuZ2Vsb2cKKyogV2VkIFNlcCAwOSAyMDI2IEJhc3RpZW4gTm9jZXJhIDxibm9jZXJh QHJlZGhhdC5jb20+IC0gNS44NysxLmdpdDg3NTAxMjllZmNhOC0xCistIFJlYmFzZSB0byBsYXRl c3QgdXBzdHJlYW0gSEVBRCAoQ2xvc2VzOiAjMjUyODE4MSwgIzI1MjUyOTMpCisKICogV2VkIEF1 ZyAyNiAyMDI2IEJhc3RpZW4gTm9jZXJhIDxibm9jZXJhQHJlZGhhdC5jb20+IC0gNS44Ny03CiAt IEZpeCBDVkUtMjAyNi04MDE4NSAoQ2xvc2VzOiAjMjUyNDM5NykKIAoKZGlmZiAtLWdpdCBhL25h bWUydXRmOC1vdmVyZmxvdy5wYXRjaCBiL25hbWUydXRmOC1vdmVyZmxvdy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdiMmI2ZC4uMDAwMDAwMAotLS0gYS9uYW1lMnV0Zjgt b3ZlcmZsb3cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQ3ICswLDAgQEAKLUZyb20gMzgx YjVkMGQyMDg5NzI1ODYyODIxMTZkMzMzODY1YmE5M2I4ZGVjMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVs LmNvbT4KLURhdGU6IFdlZCwgMTkgQXVnIDIwMjYgMTY6MDI6NDcgLTA0MDAKLVN1YmplY3Q6IFtQ QVRDSCAwMS8xMF0gZWlyOiBGaXggc3RhY2sgYnVmZmVyIG92ZXJmbG93IHdoZW4gcGFyc2luZyB0 aGUgcmVtb3RlCi0gbmFtZQotCi1uYW1lMnV0ZjgoKSBjb3BpZXMgbGVuIGJ5dGVzIGludG8gYSBI Q0lfTUFYX05BTUVfTEVOR1RIICsgMiwgc28gMjUwLAotYnl0ZSBzdGFjayBidWZmZXIgd2l0aG91 dCBjbGFtcGluZyBsZW4gZmlyc3QuCi0KLWVpcl9wYXJzZSgpIG9ubHkgcmVqZWN0cyBhIGZpZWxk IG9uY2UgaXQgcnVucyBwYXN0IHRoZSBlbmQgb2YgdGhlIEVJUgotZGF0YSwgYW5kIHRoYXQgZGF0 YSBpcyB1cCB0byAyNTUgYnl0ZXMsIHNvIGZpZWxkX2xlbiBjYW4gYmUgMjU0IGFuZCB0aGUKLWRh dGFfbGVuIHBhc3NlZCB0byBuYW1lMnV0ZjgoKSBjYW4gcmVhY2ggMjUzLiBzdHJuY3B5KCkgdGhl biB3cml0ZXMgMjUzCi1ieXRlcyBpbnRvIHRoZSAyNTAgYnl0ZSBidWZmZXIgYW5kIGxlYXZlcyBp dCB1bnRlcm1pbmF0ZWQsIHNvIHRoZQotZm9sbG93aW5nIGdfc3Ryc3RyaXAoKSBhbmQgZ19zdHJk dXAoKSBhbHNvIHJlYWQgcGFzdCB0aGUgZW5kLgotCi1UaGUgRUlSIGRhdGEgY29tZXMgZnJvbSBh IHJlbW90ZSBkZXZpY2UsIGVpdGhlciBpbiBhbiBleHRlbmRlZCBpbnF1aXJ5Ci1yZXNwb25zZSBv ciBpbiBhbiBhZHZlcnRpc2luZyByZXBvcnQsIHNvIHRoZSBsZW5ndGggaXMgYXR0YWNrZXIKLWNv bnRyb2xsZWQuCi0KLUNsYW1wIGxlbiB0byBIQ0lfTUFYX05BTUVfTEVOR1RILCB3aGljaCBpcyB3 aGF0IHRoZSBsb2NhbCBuYW1lIGlzCi1saW1pdGVkIHRvIGFueXdheSwgYW5kIHdoYXQgYWRfcmVw bGFjZV9uYW1lKCkgYWxyZWFkeSBjbGFtcHMgdG8uCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5j b20vYmx1ZXovYmx1ZXovc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLTY4aDYtNXFncC0zOTc1Ci1B c3Npc3RlZC1ieTogQ2xhdWRlOmNsYXVkZS1vcHVzLTUKLS0tLQotIHNyYy9laXIuYyB8IDIgKysK LSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZWly LmMgYi9zcmMvZWlyLmMKLWluZGV4IDg5YzE1OTk1YTU0Ni4uNDQyMWIxNjYyZDY1IDEwMDY0NAot LS0tIGEvc3JjL2Vpci5jCi0rKysgYi9zcmMvZWlyLmMKLUBAIC0xMzcsNiArMTM3LDggQEAgc3Rh dGljIGNoYXIgKm5hbWUydXRmOChjb25zdCB1aW50OF90ICpuYW1lLCB1aW50OF90IGxlbikKLSB7 Ci0gCWNoYXIgdXRmOF9uYW1lW0hDSV9NQVhfTkFNRV9MRU5HVEggKyAyXTsKLSAKLSsJbGVuID0g TUlOKGxlbiwgSENJX01BWF9OQU1FX0xFTkdUSCk7Ci0rCi0gCW1lbXNldCh1dGY4X25hbWUsIDAs IHNpemVvZih1dGY4X25hbWUpKTsKLSAJc3RybmNweSh1dGY4X25hbWUsIChjaGFyICopIG5hbWUs IGxlbik7Ci0gCXN0cnRvdXRmOCh1dGY4X25hbWUsIGxlbik7Ci0tLSAKLTIuNTUuMAotCi0KLUZy b20gNzg0MjAzMTYwZTJmYjkwNjA5MDA1OTMzNmQ4NmEyNGYyODM0OWIwMiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6 QGludGVsLmNvbT4KLURhdGU6IFRodSwgMjAgQXVnIDIwMjYgMTM6NDI6MTIgLTA0MDAKLVN1Ympl Y3Q6IFtQQVRDSCAwMi8xMF0gc2hhcmVkL2FkOiBGaXggcmVhZGluZyBwYXN0IHRoZSBuYW1lIHRo YXQgd2FzIGNvcGllZAotCi1hZF9yZXBsYWNlX25hbWUoKSBjb3BpZXMgYXQgbW9zdCBIQ0lfTUFY X05BTUVfTEVOR1RIIGJ5dGVzIG9mIHRoZSBuYW1lCi1pbnRvIGl0cyBidWZmZXIsIGJ1dCB0aGVu IGhhbmRzIHRoZSBmdWxsIGlvdl9sZW4gdG8gc3RyaXN1dGY4KCkgYW5kCi1zdHJ0b3V0ZjgoKS4K LQotVGhlIGFkdmVydGlzaW5nIGRhdGEgaXMgdXAgdG8gMjU1IGJ5dGVzLCBzbyBhIGNvbXBsZXRl IGxvY2FsIG5hbWUgZmllbGQKLWNhbiBob2xkIDI1MyBvZiB0aGVtLCBhbmQgYm90aCBlbmQgdXAg cmVhZGluZyAyNTMgYnl0ZXMgb3V0IG9mIGEgMjUwCi1ieXRlIGJ1ZmZlciwgMyBvZiB0aGVtIHBh c3QgaXRzIGVuZC4KLQotVXNlIHRoZSBzYW1lIGNsYW1wZWQgbGVuZ3RoIHRocm91Z2hvdXQuCi0K LUFzc2lzdGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW9wdXMtNQotLS0tCi0gc3JjL3NoYXJlZC9hZC5j IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2FkLmMgYi9zcmMvc2hhcmVkL2FkLmMK LWluZGV4IGIxZDFiODQ2MTFhYS4uZWJlZTA3ODUwMGM2IDEwMDY0NAotLS0tIGEvc3JjL3NoYXJl ZC9hZC5jCi0rKysgYi9zcmMvc2hhcmVkL2FkLmMKLUBAIC0yNzYsMTUgKzI3NiwxNSBAQCBzdGF0 aWMgYm9vbCBhZF9yZXBsYWNlX3V1aWQxMjgoc3RydWN0IGJ0X2FkICphZCwgc3RydWN0IGlvdmVj ICppb3YpCi0gc3RhdGljIGJvb2wgYWRfcmVwbGFjZV9uYW1lKHN0cnVjdCBidF9hZCAqYWQsIHN0 cnVjdCBpb3ZlYyAqaW92KQotIHsKLSAJY2hhciB1dGY4X25hbWVbSENJX01BWF9OQU1FX0xFTkdU SCArIDJdOwotKwlzaXplX3QgbGVuID0gTUlOKGlvdi0+aW92X2xlbiwgKHNpemVfdCkgSENJX01B WF9OQU1FX0xFTkdUSCk7Ci0gCi0gCW1lbXNldCh1dGY4X25hbWUsIDAsIHNpemVvZih1dGY4X25h bWUpKTsKLS0Jc3RybmNweSh1dGY4X25hbWUsIChjb25zdCBjaGFyICopaW92LT5pb3ZfYmFzZSwK LS0JCQlNSU4oaW92LT5pb3ZfbGVuLCBIQ0lfTUFYX05BTUVfTEVOR1RIKSk7Ci0rCXN0cm5jcHko dXRmOF9uYW1lLCAoY29uc3QgY2hhciAqKWlvdi0+aW92X2Jhc2UsIGxlbik7Ci0gCi0tCWlmIChz dHJpc3V0ZjgodXRmOF9uYW1lLCBpb3YtPmlvdl9sZW4pKQotKwlpZiAoc3RyaXN1dGY4KHV0Zjhf bmFtZSwgbGVuKSkKLSAJCWdvdG8gZG9uZTsKLSAKLS0Jc3RydG91dGY4KHV0ZjhfbmFtZSwgaW92 LT5pb3ZfbGVuKTsKLSsJc3RydG91dGY4KHV0ZjhfbmFtZSwgbGVuKTsKLSAKLSAJLyogUmVtb3Zl IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAqLwotIAlzdHJzdHJp cCh1dGY4X25hbWUpOwotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIGRlYmQ0MzJlZjEzYzVlYTlmZmFi OWZmY2JmY2I0NTM3Mjk0NjkyMGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWl6 IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci1EYXRlOiBUaHUs IDIwIEF1ZyAyMDI2IDEzOjI4OjM4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTBdIHVuaXQv dGVzdC1laXI6IEFkZCB0ZXN0cyBmb3IgdGhlIGxvbmdlc3QgbG9jYWwgbmFtZXMKLQotTm90aGlu ZyBjb3ZlcmVkIGEgbmFtZSBhbnl3aGVyZSBuZWFyIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaXQg aXMgY29waWVkCi1pbnRvLCB3aGljaCBpcyB3aHkgdGhlIG1pc3NpbmcgY2xhbXAgd2VudCB1bm5v dGljZWQuCi0KLUFkZCB0d28gdGVzdHMuIFRoZSBmaXJzdCB1c2VzIGEgbmFtZSBvZiBIQ0lfTUFY X05BTUVfTEVOR1RIIGJ5dGVzLCB0aGUKLWxvbmdlc3Qgb25lIHRoYXQgZml0cywgdG8gcGluIHRo ZSBib3VuZGFyeSBkb3duLgotCi1UaGUgc2Vjb25kIHVzZXMgYSBuYW1lIG9mIDI1MyBieXRlcywg YXMgbGFyZ2UgYXMgZWlyX3BhcnNlKCkgY2FuIGJlCi1oYW5kZWQgZ2l2ZW4gdGhlIEVJUiBsZW5n dGggaXMgYSBzaW5nbGUgYnl0ZSwgYW5kIHdoaWNoIGRvZXMgbm90IGZpdC4KLVJ1biBhZ2FpbnN0 IHRoZSBjb2RlIGJlZm9yZSB0aGUgcHJldmlvdXMgcGF0Y2gsIGl0IGRpZXMgd2l0aAotCi0gICoq KiBidWZmZXIgb3ZlcmZsb3cgZGV0ZWN0ZWQgKioqOiB0ZXJtaW5hdGVkCi0KLUFzc2lzdGVkLWJ5 OiBDbGF1ZGU6Y2xhdWRlLW9wdXMtNQotLS0tCi0gdW5pdC90ZXN0LWVpci5jIHwgNjIgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFu Z2VkLCA2MiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtZWlyLmMgYi91 bml0L3Rlc3QtZWlyLmMKLWluZGV4IDYyMTY0Y2E5OTNmNi4uMzI2YmM4OTllMjUxIDEwMDY0NAot LS0tIGEvdW5pdC90ZXN0LWVpci5jCi0rKysgYi91bml0L3Rlc3QtZWlyLmMKLUBAIC00NDAsNiAr NDQwLDY0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdF9kYXRhIGlzb18yMDIyX2pwX25hbWVf dGVzdCA9IHsKLSAJLnR4X3Bvd2VyID0gMTI3LAotIH07Ci0gCi0rLyoKLSsgKiBBIGNvbXBsZXRl IGxvY2FsIG5hbWUgb2YgSENJX01BWF9OQU1FX0xFTkdUSCBieXRlcywgdGhlIGxvbmdlc3Qgb25l IHRoYXQKLSsgKiBmaXRzIHRoZSBidWZmZXIgZWlyX3BhcnNlKCkgY29waWVzIHRoZSBuYW1lIGlu dG8uCi0rICovCi0rc3RhdGljIHVuc2lnbmVkIGNoYXIgbWF4X25hbWVfZGF0YVtIQ0lfTUFYX05B TUVfTEVOR1RIICsgMl07Ci0rc3RhdGljIGNoYXIgbWF4X25hbWVbSENJX01BWF9OQU1FX0xFTkdU SCArIDFdOwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdF9kYXRhIG1heF9uYW1lX3Rlc3Qg PSB7Ci0rCS5laXJfZGF0YSA9IG1heF9uYW1lX2RhdGEsCi0rCS5laXJfc2l6ZSA9IHNpemVvZiht YXhfbmFtZV9kYXRhKSwKLSsJLm5hbWUgPSBtYXhfbmFtZSwKLSsJLm5hbWVfY29tcGxldGUgPSB0 cnVlLAotKwkudHhfcG93ZXIgPSAxMjcsCi0rfTsKLSsKLStzdGF0aWMgdm9pZCBtYXhfbmFtZV9z ZXR1cChjb25zdCB2b2lkICpkYXRhKQotK3sKLSsJbWF4X25hbWVfZGF0YVswXSA9IHNpemVvZiht YXhfbmFtZV9kYXRhKSAtIDE7Ci0rCW1heF9uYW1lX2RhdGFbMV0gPSBFSVJfTkFNRV9DT01QTEVU RTsKLSsJbWVtc2V0KG1heF9uYW1lX2RhdGEgKyAyLCAnQScsIEhDSV9NQVhfTkFNRV9MRU5HVEgp OwotKwotKwltZW1zZXQobWF4X25hbWUsICdBJywgSENJX01BWF9OQU1FX0xFTkdUSCk7Ci0rCW1h eF9uYW1lW0hDSV9NQVhfTkFNRV9MRU5HVEhdID0gJ1wwJzsKLSsKLSsJdGVzdGVyX3NldHVwX2Nv bXBsZXRlKCk7Ci0rfQotKwotKy8qCi0rICogVGhlIGxvbmdlc3QgY29tcGxldGUgbG9jYWwgbmFt ZSBlaXJfcGFyc2UoKSBjYW4gYmUgaGFuZGVkIGF0IGFsbCwgd2hpY2ggaXMKLSsgKiBib3VuZGVk IGJ5IHRoZSBFSVIgbGVuZ3RoIGJlaW5nIGEgc2luZ2xlIGJ5dGUuIFRoYXQgaXMgMjUzIGJ5dGVz LCBtb3JlIHRoYW4KLSsgKiB0aGUgYnVmZmVyIGl0IGlzIGNvcGllZCBpbnRvLCBzbyB0aGlzIHVz ZWQgdG8gb3ZlcmZsb3cgaXQuCi0rICovCi0rc3RhdGljIHVuc2lnbmVkIGNoYXIgbG9uZ19uYW1l X2RhdGFbMjU1XTsKLStzdGF0aWMgY2hhciBsb25nX25hbWVbc2l6ZW9mKGxvbmdfbmFtZV9kYXRh KSAtIDIgKyAxXTsKLSsKLSsvKiBUaGUgbmFtZSBkb2VzIG5vdCBmaXQsIHNvIGl0IGNvbWVzIGJh Y2sgY2xhbXBlZCB0byBIQ0lfTUFYX05BTUVfTEVOR1RIICovCi0rI2RlZmluZSBMT05HX05BTUVf TEVOCUhDSV9NQVhfTkFNRV9MRU5HVEgKLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3RfZGF0 YSBsb25nX25hbWVfdGVzdCA9IHsKLSsJLmVpcl9kYXRhID0gbG9uZ19uYW1lX2RhdGEsCi0rCS5l aXJfc2l6ZSA9IHNpemVvZihsb25nX25hbWVfZGF0YSksCi0rCS5uYW1lID0gbG9uZ19uYW1lLAot KwkubmFtZV9jb21wbGV0ZSA9IHRydWUsCi0rCS50eF9wb3dlciA9IDEyNywKLSt9OwotKwotK3N0 YXRpYyB2b2lkIGxvbmdfbmFtZV9zZXR1cChjb25zdCB2b2lkICpkYXRhKQotK3sKLSsJbG9uZ19u YW1lX2RhdGFbMF0gPSBzaXplb2YobG9uZ19uYW1lX2RhdGEpIC0gMTsKLSsJbG9uZ19uYW1lX2Rh dGFbMV0gPSBFSVJfTkFNRV9DT01QTEVURTsKLSsJbWVtc2V0KGxvbmdfbmFtZV9kYXRhICsgMiwg J0InLCBzaXplb2YobG9uZ19uYW1lX2RhdGEpIC0gMik7Ci0rCi0rCW1lbXNldChsb25nX25hbWUs ICdCJywgTE9OR19OQU1FX0xFTik7Ci0rCWxvbmdfbmFtZVtMT05HX05BTUVfTEVOXSA9ICdcMCc7 Ci0rCi0rCXRlc3Rlcl9zZXR1cF9jb21wbGV0ZSgpOwotK30KLSsKLSBzdGF0aWMgY29uc3QgdW5z aWduZWQgY2hhciBibHVlc2NfZGF0YVtdID0gewotIAkJMHgwMiwgMHgwMSwgMHgwNiwgMHgwMywg MHgwMiwgMHgxNiwgMHgxOCwgMHgxMiwKLSAJCTB4MDksIDB4NTcsIDB4NjEsIDB4NjgsIDB4NmYs IDB4NmYsIDB4MjAsIDB4NDIsCi1AQCAtNzU2LDYgKzgxNCwxMCBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQotIAkJCQkJCQkJCU5VTEwpOwotIAl0ZXN0ZXJfYWRkKCIvZWlyL2lz by0yMDIyLWpwLW5hbWUiLCAmaXNvXzIwMjJfanBfbmFtZV90ZXN0LCBOVUxMLAotIAkJCQkJCQl0 ZXN0X3BhcnNpbmcsIE5VTEwpOwotKwl0ZXN0ZXJfYWRkKCIvZWlyL21heC1uYW1lIiwgJm1heF9u YW1lX3Rlc3QsIG1heF9uYW1lX3NldHVwLAotKwkJCQkJCQl0ZXN0X3BhcnNpbmcsIE5VTEwpOwot Kwl0ZXN0ZXJfYWRkKCIvZWlyL2xvbmctbmFtZSIsICZsb25nX25hbWVfdGVzdCwgbG9uZ19uYW1l X3NldHVwLAotKwkJCQkJCQl0ZXN0X3BhcnNpbmcsIE5VTEwpOwotIAl0ZXN0ZXJfYWRkKCIvYWQv Ymx1ZXNjIiwgJmJsdWVzY190ZXN0LCBOVUxMLCB0ZXN0X3BhcnNpbmcsIE5VTEwpOwotIAl0ZXN0 ZXJfYWRkKCIvYWQvd2Fob29zY2FsZSIsICZ3YWhvb19zY2FsZV90ZXN0LCBOVUxMLCB0ZXN0X3Bh cnNpbmcsCi0gCQkJCQkJCQkJTlVMTCk7Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gM2FkODMyYTNj MmE5ODllZDlmMTQ1ODZjZDNiNTZmNDBhZDYwODY3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4K LURhdGU6IFdlZCwgMTkgQXVnIDIwMjYgMTY6MTA6MzYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAw NC8xMF0gc2hhcmVkL3V0aWw6IE1ha2Ugc3RybmxlbnV0ZjggcmVqZWN0IGlsbC1mb3JtZWQKLSBz ZXF1ZW5jZXMKLQotc3RybmxlbnV0ZjgoKSBvbmx5IGNoZWNrcyB0aGUgc2hhcGUgb2YgdGhlIGxl YWQgYnl0ZSBhbmQgdGhhdCB0aGUKLWZvbGxvd2luZyBieXRlcyBhcmUgY29udGludWF0aW9uIGJ5 dGVzLCBzbyBpdCBhY2NlcHRzIHNlcXVlbmNlcyB0aGF0IGFyZQotbm90IHdlbGwtZm9ybWVkIFVU Ri04OgotCi0gIEMwIDgwICAgICAgICBvdmVybG9uZyBlbmNvZGluZyBvZiBVKzAwMDAKLSAgQzAg QUYgICAgICAgIG92ZXJsb25nIGVuY29kaW5nIG9mICcvJwotICBFRCBBMCA4MCAgICAgVVRGLTE2 IHN1cnJvZ2F0ZSBVK0Q4MDAKLSAgRjUgODAgODAgODAgIHBhc3QgdGhlIFUrMTBGRkZGIGxpbWl0 Ci0KLXN0cmlzdXRmOCgpIGFuZCBzdHJ0b3V0ZjgoKSBhcmUgYnVpbHQgb24gaXQsIHNvIGEgcmVt b3RlIG5hbWUgY29udGFpbmluZwotYW55IG9mIHRob3NlIGlzIGNvbnNpZGVyZWQgdmFsaWQgYW5k IHBhc3NlZCBvbiB1bmNoYW5nZWQsIGZvciBpbnN0YW5jZQotdG8gRC1CdXMsIHdoaWNoIGRvZXMg dmFsaWRhdGUgVVRGLTggc3RyaWN0bHkgYW5kIHJlamVjdHMgdGhlbS4KLQotVmFsaWRhdGUgdGhl IHNlcXVlbmNlcyBhcyBkZWZpbmVkIGJ5IHRhYmxlIDMtNyBvZiB0aGUgVW5pY29kZSBTdGFuZGFy ZAotaW5zdGVhZCwgd2hpY2ggY29uc3RyYWlucyB0aGUgcmFuZ2Ugb2YgdGhlIHNlY29uZCBieXRl IGZvciB0aGUgRTAsIEVELAotRjAgYW5kIEY0IGxlYWQgYnl0ZXMgYW5kIHJlamVjdHMgdGhlIEMw LCBDMSBhbmQgRjUgdG8gRkYgb25lcyBvdXRyaWdodC4KLQotVGhlIGRlY29kaW5nIGlzIHNwbGl0 IG91dCBpbnRvIGEgaGVscGVyIHRoYXQgYWxzbyByZXBvcnRzIHRoZSBzaXplIG9mCi10aGUgbWF4 aW1hbCBzdWJwYXJ0IG9mIGFuIGlsbC1mb3JtZWQgc2VxdWVuY2UsIHNvIHRoYXQgY2FsbGVycyBj YW4gc2tpcAotb3ZlciBpdCwgYXMgcmVjb21tZW5kZWQgYnkgc2VjdGlvbiAzLjkgb2YgdGhlIFVu aWNvZGUgU3RhbmRhcmQuCi0KLUFzc2lzdGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW9wdXMtNQotLS0t Ci0gc3JjL3NoYXJlZC91dGlsLmMgfCA5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAyOCBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdXRpbC5jIGIvc3JjL3NoYXJl ZC91dGlsLmMKLWluZGV4IDYyZGQxMzY5YjcwZC4uZTk0NjIxNGVkYmI5IDEwMDY0NAotLS0tIGEv c3JjL3NoYXJlZC91dGlsLmMKLSsrKyBiL3NyYy9zaGFyZWQvdXRpbC5jCi1AQCAtMjIxMSw0NCAr MjIxMSw3OCBAQCBjaGFyICpzdHJzdHJpcChjaGFyICpzdHIpCi0gCXJldHVybiBzdHI7Ci0gfQot IAotLXNpemVfdCBzdHJubGVudXRmOChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi0tCi0r LyoKLSsgKiBEZWNvZGUgdGhlIFVURi04IHNlcXVlbmNlIGF0IHN0ciwgYXMgZGVmaW5lZCBieSB0 YWJsZSAzLTcgb2YgdGhlIFVuaWNvZGUKLSsgKiBTdGFuZGFyZCwgYW5kIHJldHVybiBpdHMgc2l6 ZSwgb3IgMCBpZiBpdCBpcyBpbGwtZm9ybWVkLgotKyAqCi0rICogc3VibGVuIGlzIHNldCB0byB0 aGUgc2l6ZSBvZiB0aGUgbWF4aW1hbCBzdWJwYXJ0IG9mIHRoZSBzZXF1ZW5jZSwgdGhhdCBpcwot KyAqIHRoZSBudW1iZXIgb2YgbGVhZGluZyBieXRlcyB0aGF0IGNvdWxkIHN0aWxsIGhhdmUgZm9y bWVkIGEgd2VsbC1mb3JtZWQKLSsgKiBzZXF1ZW5jZSwgd2hpY2ggaXMgd2hhdCB0aGUgY2FsbGVy IG5lZWRzIHRvIHNraXAgb3Zlci4KLSsgKi8KLStzdGF0aWMgc2l6ZV90IHV0Zjhfc2VxbGVuKGNv bnN0IHVuc2lnbmVkIGNoYXIgKnN0ciwgc2l6ZV90IGxlbiwgc2l6ZV90ICpzdWJsZW4pCi0gewot LQlzaXplX3QgaSA9IDA7Ci0rCXVuc2lnbmVkIGNoYXIgbG8gPSAweDgwLCBoaSA9IDB4YmY7Ci0r CXNpemVfdCBzaXplLCBpOwotIAotLQl3aGlsZSAoaSA8IGxlbikgewotLQkJdW5zaWduZWQgY2hh ciBjID0gc3RyW2ldOwotLQkJc2l6ZV90IHNpemUgPSAwOwotKwlpZiAoc3RyWzBdIDw9IDB4N2Yp IHsKLSsJCSpzdWJsZW4gPSAxOwotKwkJcmV0dXJuIDE7Ci0rCX0KLSAKLS0JCS8qIENoZWNrIHRo ZSBmaXJzdCBieXRlIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZQotLQkJ ICogVVRGLTggY2hhcmFjdGVyLgotKwlpZiAoc3RyWzBdID49IDB4YzIgJiYgc3RyWzBdIDw9IDB4 ZGYpIHsKLSsJCXNpemUgPSAyOwotKwl9IGVsc2UgaWYgKHN0clswXSA+PSAweGUwICYmIHN0clsw XSA8PSAweGVmKSB7Ci0rCQlzaXplID0gMzsKLSsJCS8qIFJlamVjdCB0aGUgb3ZlcmxvbmcgZW5j b2RpbmdzIGFuZCB0aGUgVVRGLTE2IHN1cnJvZ2F0ZXMgKi8KLSsJCWlmIChzdHJbMF0gPT0gMHhl MCkKLSsJCQlsbyA9IDB4YTA7Ci0rCQllbHNlIGlmIChzdHJbMF0gPT0gMHhlZCkKLSsJCQloaSA9 IDB4OWY7Ci0rCX0gZWxzZSBpZiAoc3RyWzBdID49IDB4ZjAgJiYgc3RyWzBdIDw9IDB4ZjQpIHsK LSsJCXNpemUgPSA0OwotKwkJLyogUmVqZWN0IHRoZSBvdmVybG9uZyBlbmNvZGluZ3MgYW5kIGFu eXRoaW5nIHBhc3QgVSsxMEZGRkYgKi8KLSsJCWlmIChzdHJbMF0gPT0gMHhmMCkKLSsJCQlsbyA9 IDB4OTA7Ci0rCQllbHNlIGlmIChzdHJbMF0gPT0gMHhmNCkKLSsJCQloaSA9IDB4OGY7Ci0rCX0g ZWxzZSB7Ci0rCQkvKiBDMCBhbmQgQzEgYXJlIG92ZXJsb25nLCBGNSB0byBGRiBhcmUgb3V0IG9m IHJhbmdlLCBhbmQgYQotKwkJICogY29udGludWF0aW9uIGJ5dGUgY2Fubm90IHN0YXJ0IGEgc2Vx dWVuY2UuCi0gCQkgKi8KLS0JCWlmICgoYyAmIDB4ODApID09IDB4MDApCi0tCQkJc2l6ZSA9IDE7 Ci0tCQllbHNlIGlmICgoYyAmIDB4RTApID09IDB4QzApCi0tCQkJc2l6ZSA9IDI7Ci0tCQllbHNl IGlmICgoYyAmIDB4RjApID09IDB4RTApCi0tCQkJc2l6ZSA9IDM7Ci0tCQllbHNlIGlmICgoYyAm IDB4RjgpID09IDB4RjApCi0tCQkJc2l6ZSA9IDQ7Ci0tCQllbHNlCi0tCQkJLyogSW52YWxpZCBV VEYtOCBzZXF1ZW5jZSAqLwotLQkJCWdvdG8gZG9uZTsKLSsJCSpzdWJsZW4gPSAxOwotKwkJcmV0 dXJuIDA7Ci0rCX0KLSAKLS0JCS8qIENoZWNrIHRoZSBmb2xsb3dpbmcgYnl0ZXMgdG8gZW5zdXJl IHRoZXkgaGF2ZSB0aGUgY29ycmVjdAotLQkJICogZm9ybWF0LgotLQkJICovCi0tCQlmb3IgKHNp emVfdCBqID0gMTsgaiA8IHNpemU7ICsraikgewotLQkJCWlmIChpICsgaiA+PSBsZW4gfHwgKHN0 cltpICsgal0gJiAweEMwKSAhPSAweDgwKQotLQkJCQkvKiBJbnZhbGlkIFVURi04IHNlcXVlbmNl ICovCi0tCQkJCWdvdG8gZG9uZTsKLSsJZm9yIChpID0gMTsgaSA8IHNpemU7IGkrKykgewotKwkJ aWYgKGkgPj0gbGVuIHx8IHN0cltpXSA8IGxvIHx8IHN0cltpXSA+IGhpKSB7Ci0rCQkJKnN1Ymxl biA9IGk7Ci0rCQkJcmV0dXJuIDA7Ci0gCQl9Ci0gCi0rCQkvKiBPbmx5IHRoZSBzZWNvbmQgYnl0 ZSBoYXMgYSByZXN0cmljdGVkIHJhbmdlICovCi0rCQlsbyA9IDB4ODA7Ci0rCQloaSA9IDB4YmY7 Ci0rCX0KLSsKLSsJKnN1YmxlbiA9IHNpemU7Ci0rCXJldHVybiBzaXplOwotK30KLSsKLStzaXpl X3Qgc3RybmxlbnV0ZjgoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQotK3sKLSsJc2l6ZV90 IGkgPSAwOwotKwotKwl3aGlsZSAoaSA8IGxlbikgewotKwkJc2l6ZV90IHN1YmxlbjsKLSsKLSsJ CWlmICghdXRmOF9zZXFsZW4oKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc3RyICsgaSwgbGVuIC0g aSwKLSsJCQkJCQkJCSZzdWJsZW4pKQotKwkJCWJyZWFrOwotKwotIAkJLyogTW92ZSB0byB0aGUg bmV4dCBjaGFyYWN0ZXIgKi8KLS0JCWkgKz0gc2l6ZTsKLSsJCWkgKz0gc3VibGVuOwotIAl9Ci0g Ci0tZG9uZToKLSAJcmV0dXJuIGk7Ci0gfQotIAotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIDExMDgx ZjYwZDk1ZjY0MWRkYmNhNGE1MzkyMmQ4ODY5NzJjODdhYTEgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5j b20+Ci1EYXRlOiBXZWQsIDE5IEF1ZyAyMDI2IDE2OjExOjAzIC0wNDAwCi1TdWJqZWN0OiBbUEFU Q0ggMDUvMTBdIHNoYXJlZC91dGlsOiBBZGQgc3RyMnV0ZjgKLQotVGhlcmUgYXJlIGZpdmUgbmVh ciBjb3BpZXMgb2YgdGhlIHNhbWUgInR1cm4gYSByZW1vdGUgbmFtZSBpbnRvIGEgVVRGLTgKLXN0 cmluZyIgaGVscGVyLCBpbiBtb25pdG9yL2F0dC5jLCBwcm9maWxlcy9hdWRpby9tY3AuYywgcHJv ZmlsZXMvZ2FwL2dhcy5jLAotc3JjL2Vpci5jIGFuZCBzcmMvc2hhcmVkL2FkLmMsIGFuZCB0aGV5 IGRvIG5vdCBhZ3JlZSB3aXRoIGVhY2ggb3RoZXIuCi0KLU1vc3QgdHJ1bmNhdGUgYXQgdGhlIGZp cnN0IGlsbC1mb3JtZWQgc2VxdWVuY2UsIHdoaWNoIHRocm93cyBhd2F5IHRoZQotcmVzdCBvZiB0 aGUgbmFtZSwgd2hpbGUgdGhlIG1vbml0b3IgcmVwbGFjZXMgZXZlcnkgbm9uLUFTQ0lJIGJ5dGUg d2l0aCBhCi1zcGFjZSwgd2hpY2ggbWFuZ2xlcyBwZXJmZWN0bHkgdmFsaWQgVVRGLTggbmFtZXMg YXMgc29vbiBhcyBvbmUgYmFkIGJ5dGUKLWFwcGVhcnMuIE1vc3QgYWxzbyBjb3B5IGludG8gYSBm aXhlZCBzaXplIHN0YWNrIGJ1ZmZlciBmaXJzdCwgd2hpY2ggaXMKLXdoYXQgbWFkZSB0aGUgbWlz c2luZyBjbGFtcCBpbiBzcmMvZWlyLmMgYSBidWZmZXIgb3ZlcmZsb3cuCi0KLUFkZCBhIHNpbmds ZSBoZWxwZXIgdGhleSBjYW4gc2hhcmUuIEl0IGFsbG9jYXRlcyB0aGUgcmVzdWx0LCBzbyB0aGVy ZSBpcwotbm8gdHJ1bmNhdGlvbiB0byBhIGJ1ZmZlciBzaXplLCBhbmQgcmVwbGFjZXMgZWFjaCBp bGwtZm9ybWVkIHNlcXVlbmNlCi13aXRoIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIgcmF0 aGVyIHRoYW4gZHJvcHBpbmcgdGhlIHJlc3Qgb2YgdGhlCi1zdHJpbmcsIG1hdGNoaW5nIHdoYXQg Z191dGY4X21ha2VfdmFsaWQoKSBhbmQgdGhlIFdIQVRXRyBFbmNvZGluZwotU3RhbmRhcmQgZG8u Ci0KLVRoZSByZXN1bHQgaGFzIGJlZW4gY2hlY2tlZCBieXRlIGZvciBieXRlIGFnYWluc3QgUHl0 aG9uJ3MKLWJ5dGVzLmRlY29kZSgndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnKSBvdmVyIGFsbCBv bmUgYW5kIHR3byBieXRlCi1zZXF1ZW5jZXMsIGEgc2FtcGxlIG9mIHRoZSB0aHJlZSBieXRlIG9u ZXMgYW5kIDIwMDAwMCByYW5kb20gaW5wdXRzLgotCi1Bc3Npc3RlZC1ieTogQ2xhdWRlOmNsYXVk ZS1vcHVzLTUKLS0tLQotIHNyYy9zaGFyZWQvdXRpbC5jIHwgNDYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9zaGFyZWQvdXRpbC5oIHwgIDcgKysr KysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEv c3JjL3NoYXJlZC91dGlsLmMgYi9zcmMvc2hhcmVkL3V0aWwuYwotaW5kZXggZTk0NjIxNGVkYmI5 Li44ZWM5YjUyZTY0MDEgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL3V0aWwuYwotKysrIGIvc3Jj L3NoYXJlZC91dGlsLmMKLUBAIC0yMzE1LDMgKzIzMTUsNDkgQEAgY2hhciAqc3RydG91dGY4KGNo YXIgKnN0ciwgc2l6ZV90IGxlbikKLSAJbWVtc2V0KHN0ciArIGksIDAsIGxlbiAtIGkpOwotIAly ZXR1cm4gc3RyOwotIH0KLSsKLStjaGFyICpzdHIydXRmOChjb25zdCB1aW50OF90ICpzdHIsIHNp emVfdCBsZW4pCi0rewotKwljaGFyICp1dGY4LCAqb3V0LCAqc3RyaXBwZWQ7Ci0rCXNpemVfdCBp ID0gMDsKLSsKLSsJaWYgKCFzdHIpCi0rCQlyZXR1cm4gTlVMTDsKLSsKLSsJLyoKLSsJICogSW52 YWxpZCBieXRlcyBhcmUgcmVwbGFjZWQgd2l0aCBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVS LCB3aGljaAotKwkgKiBpcyAzIGJ5dGVzIGxvbmcsIHNvIHRoYXQgaXMgdGhlIHdvcnN0IGNhc2Ug c2l6ZSBvZiB0aGUgcmVzdWx0LgotKwkgKi8KLSsJdXRmOCA9IG1hbGxvYyhsZW4gKiAzICsgMSk7 Ci0rCWlmICghdXRmOCkKLSsJCXJldHVybiBOVUxMOwotKwotKwlvdXQgPSB1dGY4OwotKwotKwl3 aGlsZSAoaSA8IGxlbikgewotKwkJc2l6ZV90IHN1YmxlbjsKLSsJCXNpemVfdCBzaXplID0gdXRm OF9zZXFsZW4oc3RyICsgaSwgbGVuIC0gaSwgJnN1Ymxlbik7Ci0rCi0rCQlpZiAoc2l6ZSkgewot KwkJCW1lbWNweShvdXQsIHN0ciArIGksIHNpemUpOwotKwkJCW91dCArPSBzaXplOwotKwkJCWkg Kz0gc2l6ZTsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsKLSsJCS8qIFJlcGxhY2UgdGhlIG1heGlt YWwgc3VicGFydCB3aXRoIFUrRkZGRCAqLwotKwkJKm91dCsrID0gMHhlZjsKLSsJCSpvdXQrKyA9 IDB4YmY7Ci0rCQkqb3V0KysgPSAweGJkOwotKwkJaSArPSBzdWJsZW47Ci0rCX0KLSsKLSsJKm91 dCA9ICdcMCc7Ci0rCi0rCS8qIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNl IGNoYXJhY3RlcnMgKi8KLSsJc3RyaXBwZWQgPSBzdHJzdHJpcCh1dGY4KTsKLSsJaWYgKHN0cmlw cGVkICE9IHV0ZjgpCi0rCQltZW1tb3ZlKHV0ZjgsIHN0cmlwcGVkLCBzdHJsZW4oc3RyaXBwZWQp ICsgMSk7Ci0rCi0rCXJldHVybiB1dGY4OwotK30KLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3V0 aWwuaCBiL3NyYy9zaGFyZWQvdXRpbC5oCi1pbmRleCA1NjJhNWFmMzE3NTEuLjE5ODRmYjc1ZjA5 ZSAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvdXRpbC5oCi0rKysgYi9zcmMvc2hhcmVkL3V0aWwu aAotQEAgLTE0Myw2ICsxNDMsMTMgQEAgYm9vbCBzdHJpc3V0ZjgoY29uc3QgY2hhciAqc3RyLCBz aXplX3QgbGVuZ3RoKTsKLSBib29sIGFyZ3Npc3V0ZjgoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7 Ci0gY2hhciAqc3RydG91dGY4KGNoYXIgKnN0ciwgc2l6ZV90IGxlbik7Ci0gCi0rLyoKLSsgKiBS ZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQsIE5VTCB0ZXJtaW5hdGVkIGFuZCB3aGl0ZXNwYWNlIHN0 cmlwcGVkIFVURi04Ci0rICogY29weSBvZiB0aGUgZmlyc3QgbGVuIGJ5dGVzIG9mIHN0ciwgd2l0 aCBlYWNoIGlsbC1mb3JtZWQgc2VxdWVuY2UgcmVwbGFjZWQKLSsgKiBieSBVK0ZGRkQgUkVQTEFD RU1FTlQgQ0hBUkFDVEVSLiBUaGUgcmVzdWx0IG11c3QgYmUgZnJlZWQgd2l0aCBmcmVlKCkuCi0r ICovCi0rY2hhciAqc3RyMnV0ZjgoY29uc3QgdWludDhfdCAqc3RyLCBzaXplX3QgbGVuKTsKLSsK LSB2b2lkICp1dGlsX21hbGxvYyhzaXplX3Qgc2l6ZSk7Ci0gdm9pZCAqdXRpbF9tZW1kdXAoY29u c3Qgdm9pZCAqc3JjLCBzaXplX3Qgc2l6ZSk7Ci0gCi0tLSAKLTIuNTUuMAotCi0KLUZyb20gNzRj NTZkZmYyYWE1ZDVmM2NmNDFlNDQ2YTBhZmVlYmIyMWZmYzRlNCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVs LmNvbT4KLURhdGU6IFdlZCwgMTkgQXVnIDIwMjYgMTY6MTI6MTEgLTA0MDAKLVN1YmplY3Q6IFtQ QVRDSCAwNi8xMF0gdW5pdC90ZXN0LXV0aWw6IEFkZCBzdHIydXRmOCB0ZXN0cwotCi1Db3ZlciB0 aGUgY2FzZXMgc3RyMnV0ZjgoKSBpcyBtZWFudCB0byBoYW5kbGU6IHdlbGwtZm9ybWVkIGlucHV0 IHRoYXQKLWhhcyB0byBiZSBsZWZ0IGFsb25lLCB3aGl0ZXNwYWNlIHN0cmlwcGluZywgaW5wdXQg dGhhdCBpcyBub3QgTlVMCi10ZXJtaW5hdGVkLCBhbmQgdGhlIGlsbC1mb3JtZWQgc2VxdWVuY2Vz IHRoYXQgaGF2ZSB0byBiZSByZXBsYWNlZCwKLWluY2x1ZGluZyB0aGUgb3ZlcmxvbmcgZW5jb2Rp bmdzLCB0aGUgVVRGLTE2IHN1cnJvZ2F0ZXMgYW5kIHRoZSBjb2RlCi1wb2ludHMgcGFzdCBVKzEw RkZGRi4KLQotQWxzbyBjaGVjayB0aGF0IGEgbWF4aW1hbCBzdWJwYXJ0IGlzIHJlcGxhY2VkIGJ5 IGEgc2luZ2xlIFUrRkZGRCByYXRoZXIKLXRoYW4gb25lIHBlciBieXRlLCBhbmQgdGhhdCB0aGUg cmVzdWx0IGlzIGFsd2F5cyB3ZWxsLWZvcm1lZCBVVEYtOC4KLQotQXNzaXN0ZWQtYnk6IENsYXVk ZTpjbGF1ZGUtb3B1cy01Ci0tLS0KLSB1bml0L3Rlc3QtdXRpbC5jIHwgODMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDgz IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC11dGlsLmMgYi91bml0L3Rl c3QtdXRpbC5jCi1pbmRleCAxNjcyYjMyZWIzOWMuLmYwYjFiYjc5OTRmYiAxMDA2NDQKLS0tLSBh L3VuaXQvdGVzdC11dGlsLmMKLSsrKyBiL3VuaXQvdGVzdC11dGlsLmMKLUBAIC04Myw2ICs4Myw4 NSBAQCBzdGF0aWMgdm9pZCB0ZXN0X21pbl9tYXgoY29uc3Qgdm9pZCAqZGF0YSkKLSAJdGVzdGVy X3Rlc3RfcGFzc2VkKCk7Ci0gfQotIAotK3N0cnVjdCBzdHIydXRmOF9kYXRhIHsKLSsJY29uc3Qg Y2hhciAqaW5wdXQ7CS8qIE5vdCBOVUwgdGVybWluYXRlZCwgbGVuIGJ5dGVzIGFyZSB1c2VkICov Ci0rCXNpemVfdCBsZW47Ci0rCWNvbnN0IGNoYXIgKmV4cGVjdGVkOwotK307Ci0rCi0rI2RlZmlu ZSBGRkZEICJceGVmXHhiZlx4YmQiCQkvKiBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICov Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBzdHIydXRmOF9kYXRhIHN0cjJ1dGY4X3Rlc3RzW10g PSB7Ci0rCS8qIE5vdGhpbmcgdG8gZG8gKi8KLSsJeyAiIiwgMCwgIiIgfSwKLSsJeyAiUGl4ZWwg NyIsIDcsICJQaXhlbCA3IiB9LAotKwkvKiBXZWxsLWZvcm1lZCBtdWx0aS1ieXRlIHNlcXVlbmNl cyBhcmUga2VwdCBhcyB0aGV5IGFyZSAqLwotKwl7ICJceGUyXHg4Mlx4YWMgNSIsIDUsICJceGUy XHg4Mlx4YWMgNSIgfSwJCS8qIFUrMjBBQyAqLwotKwl7ICJceGYwXHg5Zlx4OTRceDhhIiwgNCwg Ilx4ZjBceDlmXHg5NFx4OGEiIH0sCQkvKiBVKzFGNTBBICovCi0rCS8qIExlYWRpbmcgYW5kIHRy YWlsaW5nIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZCAqLwotKwl7ICIgIHNwYWNlZCAgIiwgMTAsICJz cGFjZWQiIH0sCi0rCXsgIlx0XHJcbm5hbWVcblxyXHQiLCAxMCwgIm5hbWUiIH0sCi0rCXsgIiAg ICIsIDMsICIiIH0sCi0rCS8qIFRoZSBuYW1lIGlzIG5vdCBOVUwgdGVybWluYXRlZCwgb25seSBs ZW4gYnl0ZXMgYXJlIHVzZWQgKi8KLSsJeyAidHJ1bmNhdGVkIiwgNCwgInRydW4iIH0sCi0rCS8q IEEgYnl0ZSB0aGF0IGNhbiBuZXZlciBhcHBlYXIgaW4gVVRGLTggKi8KLSsJeyAiYWJceGZmIiJj ZCIsIDUsICJhYiIgRkZGRCAiY2QiIH0sCi0rCS8qIEEgY29udGludWF0aW9uIGJ5dGUgY2Fubm90 IHN0YXJ0IGEgc2VxdWVuY2UgKi8KLSsJeyAiYWJceDgwIiJjZCIsIDUsICJhYiIgRkZGRCAiY2Qi IH0sCi0rCS8qIE9uZSBVK0ZGRkQgcGVyIG1heGltYWwgc3VicGFydCwgbm90IHBlciBieXRlICov Ci0rCXsgImFiXHhlMlx4ODIiImNkIiwgNiwgImFiIiBGRkZEICJjZCIgfSwKLSsJLyogQSBzZXF1 ZW5jZSBjdXQgc2hvcnQgYnkgbGVuIGlzIHN0aWxsIG9uZSBtYXhpbWFsIHN1YnBhcnQgKi8KLSsJ eyAiYWJceGUyXHg4Mlx4YWMiLCA0LCAiYWIiIEZGRkQgfSwKLSsJLyogTGF0aW4tMSB0ZXh0IGlz IG5vdCB2YWxpZCBVVEYtOCAqLwotKwl7ICJjYWZceGU5IiwgNCwgImNhZiIgRkZGRCB9LAotKwkv KiBPdmVybG9uZyBlbmNvZGluZ3MgYXJlIHJlamVjdGVkLCBDMCBhbmQgQzEgYXJlIG5ldmVyIHZh bGlkICovCi0rCXsgIlx4YzBceDgwIiwgMiwgRkZGRCBGRkZEIH0sCi0rCXsgIlx4YzBceGFmIiwg MiwgRkZGRCBGRkZEIH0sCi0rCS8qIFVURi0xNiBzdXJyb2dhdGVzIGhhdmUgbm8gVVRGLTggZW5j b2RpbmcgKi8KLSsJeyAiXHhlZFx4YTBceDgwIiwgMywgRkZGRCBGRkZEIEZGRkQgfSwKLSsJLyog VSsxMEZGRkYgaXMgdGhlIGxhc3QgY29kZSBwb2ludCwgRjUgdG8gRkYgYXJlIG91dCBvZiByYW5n ZSAqLwotKwl7ICJceGY0XHg5MFx4ODBceDgwIiwgNCwgRkZGRCBGRkZEIEZGRkQgRkZGRCB9LAot Kwl7ICJceGY1XHg4MFx4ODBceDgwIiwgNCwgRkZGRCBGRkZEIEZGRkQgRkZGRCB9LAotKwkvKiBU aGUgbGFzdCBjb2RlIHBvaW50IGl0c2VsZiBpcyBmaW5lICovCi0rCXsgIlx4ZjRceDhmXHhiZlx4 YmYiLCA0LCAiXHhmNFx4OGZceGJmXHhiZiIgfSwKLSsJLyogUmVwbGFjZW1lbnQgYW5kIHN0cmlw cGluZyBjb21iaW5lZCAqLwotKwl7ICIgXHhmZiAiLCAzLCBGRkZEIH0sCi0rfTsKLSsKLStzdGF0 aWMgdm9pZCB0ZXN0X3N0cjJ1dGY4KGNvbnN0IHZvaWQgKmRhdGEpCi0rewotKwlzaXplX3QgaTsK LSsKLSsJZm9yIChpID0gMDsgaSA8IHNpemVvZihzdHIydXRmOF90ZXN0cykgLwotKwkJCQlzaXpl b2Yoc3RyMnV0ZjhfdGVzdHNbMF0pOyBpKyspIHsKLSsJCWNvbnN0IHN0cnVjdCBzdHIydXRmOF9k YXRhICp0ZXN0ID0gJnN0cjJ1dGY4X3Rlc3RzW2ldOwotKwkJY2hhciAqc3RyID0gc3RyMnV0Zjgo KGNvbnN0IHVpbnQ4X3QgKikgdGVzdC0+aW5wdXQsCi0rCQkJCQkJCQl0ZXN0LT5sZW4pOwotKwot KwkJYXNzZXJ0KHN0cik7Ci0rCQlpZiAoc3RyY21wKHN0ciwgdGVzdC0+ZXhwZWN0ZWQpKSB7Ci0r CQkJcHJpbnRmKCJ0ZXN0ICV6dTogZXhwZWN0ZWQgXCIlc1wiLCBnb3QgXCIlc1wiXG4iLCBpLAot KwkJCQkJCQl0ZXN0LT5leHBlY3RlZCwgc3RyKTsKLSsJCQlmcmVlKHN0cik7Ci0rCQkJdGVzdGVy X3Rlc3RfZmFpbGVkKCk7Ci0rCQkJcmV0dXJuOwotKwkJfQotKwotKwkJLyogVGhlIHJlc3VsdCBp cyBhbHdheXMgd2VsbC1mb3JtZWQgVVRGLTggKi8KLSsJCWFzc2VydChzdHJpc3V0Zjgoc3RyLCBz dHJsZW4oc3RyKSkpOwotKwotKwkJZnJlZShzdHIpOwotKwl9Ci0rCi0rCXRlc3Rlcl90ZXN0X3Bh c3NlZCgpOwotK30KLSsKLStzdGF0aWMgdm9pZCB0ZXN0X3N0cjJ1dGY4X251bGwoY29uc3Qgdm9p ZCAqZGF0YSkKLSt7Ci0rCWFzc2VydCghc3RyMnV0ZjgoTlVMTCwgMCkpOwotKwl0ZXN0ZXJfdGVz dF9wYXNzZWQoKTsKLSt9Ci0rCi0gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7 Ci0gCXRlc3Rlcl9pbml0KCZhcmdjLCAmYXJndik7Ci1AQCAtOTUsNiArMTc0LDEwIEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQkJdGVzdF9jbGVhbnVwX3R5cGUsIE5VTEwp OwotIAl0ZXN0ZXJfYWRkKCIvdXRpbC9jbGVhbnVwX2ZkIiwgTlVMTCwgTlVMTCwKLSAJCQl0ZXN0 X2NsZWFudXBfZmQsIE5VTEwpOwotKwl0ZXN0ZXJfYWRkKCIvdXRpbC9zdHIydXRmOCIsIE5VTEws IE5VTEwsCi0rCQkJdGVzdF9zdHIydXRmOCwgTlVMTCk7Ci0rCXRlc3Rlcl9hZGQoIi91dGlsL3N0 cjJ1dGY4X251bGwiLCBOVUxMLCBOVUxMLAotKwkJCXRlc3Rfc3RyMnV0ZjhfbnVsbCwgTlVMTCk7 Ci0gCi0gCXJldHVybiB0ZXN0ZXJfcnVuKCk7Ci0gfQotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIDhj ODFhYjEwOGIwOTE1NGI4ODRiMWIwNTQ5ZGM5YzIzZmZlM2VjNmYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRl bC5jb20+Ci1EYXRlOiBXZWQsIDE5IEF1ZyAyMDI2IDE2OjE4OjM4IC0wNDAwCi1TdWJqZWN0OiBb UEFUQ0ggMDcvMTBdIFJlcGxhY2UgdGhlIG5hbWUydXRmOCBjb3BpZXMgd2l0aCBzdHIydXRmOAot TUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1tb25pdG9yL2F0dC5jLCBwcm9m aWxlcy9hdWRpby9tY3AuYywgcHJvZmlsZXMvZ2FwL2dhcy5jIGFuZCBzcmMvZWlyLmMKLWVhY2gg Y2FycmllZCB0aGVpciBvd24gbmFtZTJ1dGY4KCksIGFuZCBzcmMvc2hhcmVkL2FkLmMgb3BlbiBj b2RlZCB0aGUKLXNhbWUgdGhpbmcgaW4gYWRfcmVwbGFjZV9uYW1lKCksIHdpdGggbm9uZSBvZiB0 aGVtIGFncmVlaW5nLgotCi1Vc2UgdGhlIHNoYXJlZCBoZWxwZXIgaW5zdGVhZCwgd2hpY2ggZHJv cHMgYXJvdW5kIDEyMCBsaW5lcyBhbmQgZ2l2ZXMKLWV2ZXJ5IGNhbGxlciB0aGUgc2FtZSBiZWhh dmlvdXIuCi0KLVR3byB0aGluZ3MgY2hhbmdlIGFzIGEgcmVzdWx0LiBUaGUgbW9uaXRvciB1c2Vk IHRvIHJlcGxhY2UgZXZlcnkKLW5vbi1BU0NJSSBieXRlIHdpdGggYSBzcGFjZSBhcyBzb29uIGFz IG9uZSBiYWQgYnl0ZSBhcHBlYXJlZCwgbWFuZ2xpbmcKLXRoZSB2YWxpZCBwYXJ0IG9mIHRoZSBu YW1lLCBhbmQgbm93IG9ubHkgdGhlIGlsbC1mb3JtZWQgc2VxdWVuY2VzIGFyZQotcmVwbGFjZWQu IEV2ZXJ5dGhpbmcgZWxzZSB1c2VkIHRvIHRydW5jYXRlIGF0IHRoZSBmaXJzdCBpbGwtZm9ybWVk Ci1zZXF1ZW5jZSwgdGhyb3dpbmcgYXdheSB0aGUgcmVzdCBvZiB0aGUgbmFtZSwgYW5kIG5vdyBr ZWVwcyBpdC4KLQotVGhlIHVuaXQvdGVzdC1laXIgZXhwZWN0YXRpb25zIGFyZSB1cGRhdGVkIGFj Y29yZGluZ2x5LCBhbmQgdGhleSBzaG93Ci10aGUgaW1wcm92ZW1lbnQ6IHRoZSBuYW1lIHRoYXQg dXNlZCB0byBiZSByZXBvcnRlZCBhcyAidGVzdCDgpKrgpLDgpYAiIGlzIG5vdwotcmVwb3J0ZWQg YXMgInRlc3Qg4KSq4KSw4KWAPFUrRkZGRD7gpY3gpLfgpL4gaW52YWxpZCIuCi0KLXN0cjJ1dGY4 KCkgcmV0dXJucyBtZW1vcnkgZnJvbSBtYWxsb2MoKSwgc28gdGhlIGNhbGxlcnMgdGhhdCB1c2Vk Ci1nX2ZyZWUoKSBub3cgdXNlIGZyZWUoKS4KLQotQXNzaXN0ZWQtYnk6IENsYXVkZTpjbGF1ZGUt b3B1cy01Ci0tLS0KLSBtb25pdG9yL2F0dC5jICAgICAgICB8IDY2ICsrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gcHJvZmlsZXMvYXVkaW8vbWNwLmMgfCAyNCAr Ky0tLS0tLS0tLS0tLS0tCi0gcHJvZmlsZXMvZ2FwL2dhcy5jICAgfCAyMCArKy0tLS0tLS0tLS0t LQotIHNyYy9laXIuYyAgICAgICAgICAgIHwgMjIgKystLS0tLS0tLS0tLS0tCi0gc3JjL3NoYXJl ZC9hZC5jICAgICAgfCAyMCArKysrKystLS0tLS0tLQotIHVuaXQvdGVzdC1laXIuYyAgICAgIHwg MTEgKysrKystLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDEyMSBkZWxl dGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vbml0b3IvYXR0LmMgYi9tb25pdG9yL2F0dC5jCi1p bmRleCA3NTA2ZGM1MjhlODUuLjQ0OTY1YTJhYWYzYiAxMDA2NDQKLS0tLSBhL21vbml0b3IvYXR0 LmMKLSsrKyBiL21vbml0b3IvYXR0LmMKLUBAIC0xNSw3ICsxNSw2IEBACi0gI2VuZGlmCi0gCi0g I2RlZmluZSBfR05VX1NPVVJDRQotLSNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzdGRp by5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1AQCAtMjMy NSw0MCArMjMyNCwxNSBAQCBzdGF0aWMgdm9pZCB2b2xfZmxhZ19ub3RpZnkoY29uc3Qgc3RydWN0 IGwyY2FwX2ZyYW1lICpmcmFtZSkKLSAJcHJpbnRfdmNzX2ZsYWcoZnJhbWUpOwotIH0KLSAKLS1z dGF0aWMgY2hhciAqbmFtZTJ1dGY4KGNvbnN0IHVpbnQ4X3QgKm5hbWUsIHVpbnQxNl90IGxlbikK LS17Ci0tCWNoYXIgdXRmOF9uYW1lW0hDSV9NQVhfTkFNRV9MRU5HVEggKyAyXTsKLS0JaW50IGk7 Ci0tCi0tCWlmIChnX3V0ZjhfdmFsaWRhdGUoKGNvbnN0IGNoYXIgKikgbmFtZSwgbGVuLCBOVUxM KSkKLS0JCXJldHVybiBnX3N0cm5kdXAoKGNoYXIgKikgbmFtZSwgbGVuKTsKLS0KLS0JbGVuID0g TUlOKGxlbiwgc2l6ZW9mKHV0ZjhfbmFtZSkgLSAxKTsKLS0KLS0JbWVtc2V0KHV0ZjhfbmFtZSwg MCwgc2l6ZW9mKHV0ZjhfbmFtZSkpOwotLQlzdHJuY3B5KHV0ZjhfbmFtZSwgKGNoYXIgKikgbmFt ZSwgbGVuKTsKLS0KLS0JLyogQXNzdW1lIEFTQ0lJLCBhbmQgcmVwbGFjZSBhbGwgbm9uLUFTQ0lJ IHdpdGggc3BhY2VzICovCi0tCWZvciAoaSA9IDA7IHV0ZjhfbmFtZVtpXSAhPSAnXDAnOyBpKysp IHsKLS0JCWlmICghaXNhc2NpaSh1dGY4X25hbWVbaV0pKQotLQkJCXV0ZjhfbmFtZVtpXSA9ICcg JzsKLS0JfQotLQotLQkvKiBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBj aGFyYWN0ZXJzICovCi0tCWdfc3Ryc3RyaXAodXRmOF9uYW1lKTsKLS0KLS0JcmV0dXJuIGdfc3Ry ZHVwKHV0ZjhfbmFtZSk7Ci0tfQotLQotIHN0YXRpYyB2b2lkIHByaW50X21wX25hbWUoY29uc3Qg c3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLSB7Ci0gCWNoYXIgKm5hbWU7Ci0gCi0tCW5hbWUg PSBuYW1lMnV0ZjgoKHVpbnQ4X3QgKilmcmFtZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotKwluYW1l ID0gc3RyMnV0ZjgoZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXplKTsKLSAKLSAJcHJpbnRfZmllbGQo IiAgTWVkaWEgUGxheWVyIE5hbWU6ICVzIiwgbmFtZSk7Ci0gCi0tCWdfZnJlZShuYW1lKTsKLSsJ ZnJlZShuYW1lKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgbXBfbmFtZV9yZWFkKGNvbnN0IHN0cnVj dCBsMmNhcF9mcmFtZSAqZnJhbWUpCi1AQCAtMjM4NSwxMSArMjM1OSwxMSBAQCBzdGF0aWMgdm9p ZCBwcmludF90cmFja190aXRsZShjb25zdCBzdHJ1Y3QgbDJjYXBfZnJhbWUgKmZyYW1lKQotIHsK LSAJY2hhciAqbmFtZTsKLSAKLS0JbmFtZSA9IG5hbWUydXRmOCgodWludDhfdCAqKWZyYW1lLT5k YXRhLCBmcmFtZS0+c2l6ZSk7Ci0rCW5hbWUgPSBzdHIydXRmOChmcmFtZS0+ZGF0YSwgZnJhbWUt PnNpemUpOwotIAotIAlwcmludF9maWVsZCgiICBUcmFjayBUaXRsZTogJXMiLCBuYW1lKTsKLSAK LS0JZ19mcmVlKG5hbWUpOwotKwlmcmVlKG5hbWUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cmFj a190aXRsZV9yZWFkKGNvbnN0IHN0cnVjdCBsMmNhcF9mcmFtZSAqZnJhbWUpCi1AQCAtMjUyMCwx MSArMjQ5NCwxMSBAQCBzdGF0aWMgdm9pZCBwcmludF9iZWFyZXJfbmFtZShjb25zdCBzdHJ1Y3Qg bDJjYXBfZnJhbWUgKmZyYW1lKQotIHsKLSAJY2hhciAqbmFtZTsKLSAKLS0JbmFtZSA9IG5hbWUy dXRmOCgodWludDhfdCAqKWZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0rCW5hbWUgPSBzdHIy dXRmOChmcmFtZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotIAotIAlwcmludF9maWVsZCgiICBCZWFy ZXIgTmFtZTogJXMiLCBuYW1lKTsKLSAKLS0JZ19mcmVlKG5hbWUpOwotKwlmcmVlKG5hbWUpOwot IH0KLSAKLSBzdGF0aWMgdm9pZCBiZWFyZXJfbmFtZV9yZWFkKGNvbnN0IHN0cnVjdCBsMmNhcF9m cmFtZSAqZnJhbWUpCi1AQCAtMjU0MSwxMSArMjUxNSwxMSBAQCBzdGF0aWMgdm9pZCBiZWFyZXJf dWNpX3JlYWQoY29uc3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLSB7Ci0gCWNoYXIgKm5h bWU7Ci0gCi0tCW5hbWUgPSBuYW1lMnV0ZjgoKHVpbnQ4X3QgKilmcmFtZS0+ZGF0YSwgZnJhbWUt PnNpemUpOwotKwluYW1lID0gc3RyMnV0ZjgoZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXplKTsKLSAK LSAJcHJpbnRfZmllbGQoIiAgQmVhcmVyIFVjaSBOYW1lOiAlcyIsIG5hbWUpOwotIAotLQlnX2Zy ZWUobmFtZSk7Ci0rCWZyZWUobmFtZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHByaW50X3RlY2hu b2xvZ3lfbmFtZShjb25zdCBzdHJ1Y3QgbDJjYXBfZnJhbWUgKmZyYW1lKQotQEAgLTI2MTIsMTEg KzI1ODYsMTEgQEAgc3RhdGljIHZvaWQgcHJpbnRfdXJpX3NjaGVtZV9saXN0KGNvbnN0IHN0cnVj dCBsMmNhcF9mcmFtZSAqZnJhbWUpCi0gewotIAljaGFyICpuYW1lOwotIAotLQluYW1lID0gbmFt ZTJ1dGY4KCh1aW50OF90ICopZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXplKTsKLSsJbmFtZSA9IHN0 cjJ1dGY4KGZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0gCi0gCXByaW50X2ZpZWxkKCIgIFVy aSBzY2hlbWUgTmFtZTogJXMiLCBuYW1lKTsKLSAKLS0JZ19mcmVlKG5hbWUpOwotKwlmcmVlKG5h bWUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBiZWFyZXJfdXJpX3NjaGVtZXNfbGlzdF9yZWFkKGNv bnN0IHN0cnVjdCBsMmNhcF9mcmFtZSAqZnJhbWUpCi1AQCAtMjcyNiwxMSArMjcwMCwxMSBAQCBz dGF0aWMgdm9pZCBwcmludF9jYWxsX2xpc3QoY29uc3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFt ZSkKLSAKLSAJcHJpbnRfZmllbGQoIiAgY2FsbF9mbGFnOiAweCV4IiwgY2FsbF9mbGFnKTsKLSAK LS0JY2FsbF91cmkgPSBuYW1lMnV0ZjgoKHVpbnQ4X3QgKilmcmFtZS0+ZGF0YSwgZnJhbWUtPnNp emUpOwotKwljYWxsX3VyaSA9IHN0cjJ1dGY4KGZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0g Ci0gCXByaW50X2ZpZWxkKCIgIGNhbGxfdXJpOiAlcyIsIGNhbGxfdXJpKTsKLSAKLS0JZ19mcmVl KGNhbGxfdXJpKTsKLSsJZnJlZShjYWxsX3VyaSk7Ci0gCi0gZG9uZToKLSAJaWYgKGZyYW1lLT5z aXplKQotQEAgLTI4MTYsMTEgKzI3OTAsMTEgQEAgc3RhdGljIHZvaWQgcHJpbnRfdGFyZ2V0X3Vy aShjb25zdCBzdHJ1Y3QgbDJjYXBfZnJhbWUgKmZyYW1lKQotIAotIAlwcmludF9maWVsZCgiICBj YWxsX2lkeDogJXgiLCBjYWxsX2lkeCk7Ci0gCi0tCW5hbWUgPSBuYW1lMnV0ZjgoKHVpbnQ4X3Qg KilmcmFtZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotKwluYW1lID0gc3RyMnV0ZjgoZnJhbWUtPmRh dGEsIGZyYW1lLT5zaXplKTsKLSAKLSAJcHJpbnRfZmllbGQoIiAgVXJpOiAlcyIsIG5hbWUpOwot IAotLQlnX2ZyZWUobmFtZSk7Ci0rCWZyZWUobmFtZSk7Ci0gCi0gZG9uZToKLSAJaWYgKGZyYW1l LT5zaXplKQotQEAgLTI5MjgsOSArMjkwMiw5IEBAIHN0YXRpYyB2b2lkIHByaW50X2NhbGxfY3Ao Y29uc3Qgc3RydWN0IGwyY2FwX2ZyYW1lICpmcmFtZSkKLSAJCWJyZWFrOwotIAljYXNlIDB4MDQ6 Ci0gCQlzdHIgPSAiT3JpZ2luYXRlIjsKLS0JCW5hbWUgPSBuYW1lMnV0ZjgoKHVpbnQ4X3QgKilm cmFtZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotKwkJbmFtZSA9IHN0cjJ1dGY4KGZyYW1lLT5kYXRh LCBmcmFtZS0+c2l6ZSk7Ci0gCQlwcmludF9maWVsZCgiICBPcGVyYXRpb246ICVzICBVcmk6ICVz Iiwgc3RyLCBuYW1lKTsKLS0JCWdfZnJlZShuYW1lKTsKLSsJCWZyZWUobmFtZSk7Ci0gCQlicmVh azsKLSAJY2FzZSAweDA1OgotIAkJc3RyID0gIkpvaW4iOwotQEAgLTMxMjQsMTEgKzMwOTgsMTEg QEAgc3RhdGljIHZvaWQgcHJpbnRfaW5jb21fY2FsbChjb25zdCBzdHJ1Y3QgbDJjYXBfZnJhbWUg KmZyYW1lKQotIAotIAlwcmludF9maWVsZCgiICBDYWxsIEluZGV4OiAldSIsIGNhbGxfaWQpOwot IAotLQluYW1lID0gbmFtZTJ1dGY4KCh1aW50OF90ICopZnJhbWUtPmRhdGEsIGZyYW1lLT5zaXpl KTsKLSsJbmFtZSA9IHN0cjJ1dGY4KGZyYW1lLT5kYXRhLCBmcmFtZS0+c2l6ZSk7Ci0gCi0gCXBy aW50X2ZpZWxkKCIgIGNhbGxfc3RyaW5nOiAlcyIsIG5hbWUpOwotIAotLQlnX2ZyZWUobmFtZSk7 Ci0rCWZyZWUobmFtZSk7Ci0gCi0gZG9uZToKLSAJaWYgKGZyYW1lLT5zaXplKQotQEAgLTMxNTcs MTEgKzMxMzEsMTEgQEAgc3RhdGljIHZvaWQgcHJpbnRfY2FsbF9mcmllbmRseV9uYW1lKGNvbnN0 IHN0cnVjdCBsMmNhcF9mcmFtZSAqZnJhbWUpCi0gCi0gCXByaW50X2ZpZWxkKCIgIENhbGwgSW5k ZXg6ICV1IiwgY2FsbF9pZCk7Ci0gCi0tCW5hbWUgPSBuYW1lMnV0ZjgoKHVpbnQ4X3QgKilmcmFt ZS0+ZGF0YSwgZnJhbWUtPnNpemUpOwotKwluYW1lID0gc3RyMnV0ZjgoZnJhbWUtPmRhdGEsIGZy YW1lLT5zaXplKTsKLSAKLSAJcHJpbnRfZmllbGQoIiAgRnJpZW5kbHkgTmFtZTogJXMiLCBuYW1l KTsKLSAKLS0JZ19mcmVlKG5hbWUpOwotKwlmcmVlKG5hbWUpOwotIAotIGRvbmU6Ci0gCWlmIChm cmFtZS0+c2l6ZSkKLWRpZmYgLS1naXQgYS9wcm9maWxlcy9hdWRpby9tY3AuYyBiL3Byb2ZpbGVz L2F1ZGlvL21jcC5jCi1pbmRleCAwYzJlMGRlMGIxNTYuLjhhZGY4MTRlOGQ3MyAxMDA2NDQKLS0t LSBhL3Byb2ZpbGVzL2F1ZGlvL21jcC5jCi0rKysgYi9wcm9maWxlcy9hdWRpby9tY3AuYwotQEAg LTczLDI2ICs3Myw2IEBAIHN0cnVjdCByZW1vdGVfcGxheWVyIHsKLSAJdWludDhfdCBwbGF5aW5n X29yZGVyOwotIH07Ci0gCi0tc3RhdGljIGNoYXIgKm5hbWUydXRmOChjb25zdCB1aW50OF90ICpu YW1lLCB1aW50MTZfdCBsZW4pCi0tewotLQljaGFyICp1dGY4X25hbWU7Ci0tCi0tCXV0ZjhfbmFt ZSA9IG1hbGxvYyhsZW4gKyAxKTsKLS0JaWYgKCF1dGY4X25hbWUpCi0tCQlyZXR1cm4gTlVMTDsK LS0KLS0JaWYgKGxlbikKLS0JCW1lbWNweSh1dGY4X25hbWUsIG5hbWUsIGxlbik7Ci0tCi0tCXV0 ZjhfbmFtZVtsZW5dID0gMDsKLS0Jc3RydG91dGY4KHV0ZjhfbmFtZSwgbGVuKTsKLS0KLS0JLyog UmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAqLwotLQln X3N0cnN0cmlwKHV0ZjhfbmFtZSk7Ci0tCi0tCXJldHVybiB1dGY4X25hbWU7Ci0tfQotLQotIHN0 YXRpYyBjb25zdCBjaGFyICptY3Bfc3RhdHVzX3ZhbF90b19zdHJpbmcodWludDhfdCBzdGF0dXMp Ci0gewotIAlzd2l0Y2ggKHN0YXR1cykgewotQEAgLTExOCw3ICs5OCw3IEBAIHN0YXRpYyB2b2lk IHJlbW90ZV9tZWRpYV9wbGF5ZXJfbmFtZSh2b2lkICpkYXRhLCBjb25zdCB1aW50OF90ICp2YWx1 ZSwKLSAJc3RydWN0IHJlbW90ZV9wbGF5ZXIgKnJlbW90ZSA9IGRhdGE7Ci0gCWNoYXIgKm5hbWU7 Ci0gCi0tCW5hbWUgPSBuYW1lMnV0ZjgodmFsdWUsIGxlbmd0aCk7Ci0rCW5hbWUgPSBzdHIydXRm OCh2YWx1ZSwgbGVuZ3RoKTsKLSAJaWYgKCFuYW1lKQotIAkJcmV0dXJuOwotIAotQEAgLTE0NSw3 ICsxMjUsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVfdHJhY2tfdGl0bGUodm9pZCAqZGF0YSwgY29u c3QgdWludDhfdCAqdmFsdWUsCi0gCWNoYXIgKm5hbWU7Ci0gCXVpbnQxNl90IGxlbjsKLSAKLS0J bmFtZSA9IG5hbWUydXRmOCh2YWx1ZSwgbGVuZ3RoKTsKLSsJbmFtZSA9IHN0cjJ1dGY4KHZhbHVl LCBsZW5ndGgpOwotIAlpZiAoIW5hbWUpCi0gCQlyZXR1cm47Ci0gCi1kaWZmIC0tZ2l0IGEvcHJv ZmlsZXMvZ2FwL2dhcy5jIGIvcHJvZmlsZXMvZ2FwL2dhcy5jCi1pbmRleCAwZjQxYzllNmMyYTUu LjUxODRkNzRlOGYwNyAxMDA2NDQKLS0tLSBhL3Byb2ZpbGVzL2dhcC9nYXMuYwotKysrIGIvcHJv ZmlsZXMvZ2FwL2dhcy5jCi1AQCAtNjYsMjIgKzY2LDYgQEAgc3RhdGljIHZvaWQgZ2FzX2ZyZWUo c3RydWN0IGdhcyAqZ2FzKQotIAlnX2ZyZWUoZ2FzKTsKLSB9Ci0gCi0tc3RhdGljIGNoYXIgKm5h bWUydXRmOChjb25zdCB1aW50OF90ICpuYW1lLCB1aW50MTZfdCBsZW4pCi0tewotLQljaGFyIHV0 ZjhfbmFtZVtIQ0lfTUFYX05BTUVfTEVOR1RIICsgMl07Ci0tCi0tCWxlbiA9IE1JTihsZW4sIHNp emVvZih1dGY4X25hbWUpIC0gMSk7Ci0tCi0tCW1lbXNldCh1dGY4X25hbWUsIDAsIHNpemVvZih1 dGY4X25hbWUpKTsKLS0Jc3RybmNweSh1dGY4X25hbWUsIChjaGFyICopIG5hbWUsIGxlbik7Ci0t CXN0cnRvdXRmOCh1dGY4X25hbWUsIGxlbik7Ci0tCi0tCS8qIFJlbW92ZSBsZWFkaW5nIGFuZCB0 cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKi8KLS0JZ19zdHJzdHJpcCh1dGY4X25hbWUp OwotLQotLQlyZXR1cm4gZ19zdHJkdXAodXRmOF9uYW1lKTsKLS19Ci0tCi0gc3RhdGljIHZvaWQg cmVhZF9kZXZpY2VfbmFtZV9jYihib29sIHN1Y2Nlc3MsIHVpbnQ4X3QgYXR0X2Vjb2RlLAotIAkJ CQkJY29uc3QgdWludDhfdCAqdmFsdWUsIHVpbnQxNl90IGxlbmd0aCwKLSAJCQkJCXZvaWQgKnVz ZXJfZGF0YSkKLUBAIC05OCwxMyArODIsMTMgQEAgc3RhdGljIHZvaWQgcmVhZF9kZXZpY2VfbmFt ZV9jYihib29sIHN1Y2Nlc3MsIHVpbnQ4X3QgYXR0X2Vjb2RlLAotIAlpZiAoIWxlbmd0aCkKLSAJ CXJldHVybjsKLSAKLS0JbmFtZSA9IG5hbWUydXRmOCh2YWx1ZSwgbGVuZ3RoKTsKLSsJbmFtZSA9 IHN0cjJ1dGY4KHZhbHVlLCBsZW5ndGgpOwotIAotIAlEQkcoIkdBUCBEZXZpY2UgTmFtZTogJXMi LCBuYW1lKTsKLSAKLSAJYnRkX2RldmljZV9kZXZpY2Vfc2V0X25hbWUoZ2FzLT5kZXZpY2UsIG5h bWUpOwotIAotLQlnX2ZyZWUobmFtZSk7Ci0rCWZyZWUobmFtZSk7Ci0gfQotIAotIHN0YXRpYyB2 b2lkIGhhbmRsZV9kZXZpY2VfbmFtZShzdHJ1Y3QgZ2FzICpnYXMsIHVpbnQxNl90IHZhbHVlX2hh bmRsZSkKLWRpZmYgLS1naXQgYS9zcmMvZWlyLmMgYi9zcmMvZWlyLmMKLWluZGV4IDQ0MjFiMTY2 MmQ2NS4uNWM5ZWJlMmFmM2EzIDEwMDY0NAotLS0tIGEvc3JjL2Vpci5jCi0rKysgYi9zcmMvZWly LmMKLUBAIC02MCw3ICs2MCw3IEBAIHZvaWQgZWlyX2RhdGFfZnJlZShzdHJ1Y3QgZWlyX2RhdGEg KmVpcikKLSB7Ci0gCXF1ZXVlX2Rlc3Ryb3koZWlyLT5zZXJ2aWNlcywgZ19mcmVlKTsKLSAJZWly LT5zZXJ2aWNlcyA9IE5VTEw7Ci0tCWdfZnJlZShlaXItPm5hbWUpOwotKwlmcmVlKGVpci0+bmFt ZSk7Ci0gCWVpci0+bmFtZSA9IE5VTEw7Ci0gCWZyZWUoZWlyLT5oYXNoKTsKLSAJZWlyLT5oYXNo ID0gTlVMTDsKLUBAIC0xMzMsMjIgKzEzMyw2IEBAIHN0YXRpYyB2b2lkIGVpcl9wYXJzZV91dWlk MTI4KHN0cnVjdCBlaXJfZGF0YSAqZWlyLCBjb25zdCB1aW50OF90ICpkYXRhLAotIAl9Ci0gfQot IAotLXN0YXRpYyBjaGFyICpuYW1lMnV0ZjgoY29uc3QgdWludDhfdCAqbmFtZSwgdWludDhfdCBs ZW4pCi0tewotLQljaGFyIHV0ZjhfbmFtZVtIQ0lfTUFYX05BTUVfTEVOR1RIICsgMl07Ci0tCi0t CWxlbiA9IE1JTihsZW4sIEhDSV9NQVhfTkFNRV9MRU5HVEgpOwotLQotLQltZW1zZXQodXRmOF9u YW1lLCAwLCBzaXplb2YodXRmOF9uYW1lKSk7Ci0tCXN0cm5jcHkodXRmOF9uYW1lLCAoY2hhciAq KSBuYW1lLCBsZW4pOwotLQlzdHJ0b3V0ZjgodXRmOF9uYW1lLCBsZW4pOwotLQotLQkvKiBSZW1v dmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzICovCi0tCWdfc3Ry c3RyaXAodXRmOF9uYW1lKTsKLS0KLS0JcmV0dXJuIGdfc3RyZHVwKHV0ZjhfbmFtZSk7Ci0tfQot LQotIHN0YXRpYyB2b2lkIGVpcl9wYXJzZV9tc2Qoc3RydWN0IGVpcl9kYXRhICplaXIsIGNvbnN0 IHVpbnQ4X3QgKmRhdGEsCi0gCQkJCQkJCQl1aW50OF90IGxlbikKLSB7Ci1AQCAtMzAxLDkgKzI4 NSw5IEBAIHZvaWQgZWlyX3BhcnNlKHN0cnVjdCBlaXJfZGF0YSAqZWlyLCBjb25zdCB1aW50OF90 ICplaXJfZGF0YSwgdWludDhfdCBlaXJfbGVuKQotIAkJCXdoaWxlIChkYXRhX2xlbiA+IDAgJiYg ZGF0YVtkYXRhX2xlbiAtIDFdID09ICdcMCcpCi0gCQkJCWRhdGFfbGVuLS07Ci0gCi0tCQkJZ19m cmVlKGVpci0+bmFtZSk7Ci0rCQkJZnJlZShlaXItPm5hbWUpOwotIAotLQkJCWVpci0+bmFtZSA9 IG5hbWUydXRmOChkYXRhLCBkYXRhX2xlbik7Ci0rCQkJZWlyLT5uYW1lID0gc3RyMnV0ZjgoZGF0 YSwgZGF0YV9sZW4pOwotIAkJCWVpci0+bmFtZV9jb21wbGV0ZSA9IGVpcl9kYXRhWzFdICE9IEVJ Ul9OQU1FX1NIT1JUOwotIAkJCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYWQu YyBiL3NyYy9zaGFyZWQvYWQuYwotaW5kZXggZWJlZTA3ODUwMGM2Li4yMzZlNzE5NTA3ZTQgMTAw NjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2FkLmMKLSsrKyBiL3NyYy9zaGFyZWQvYWQuYwotQEAgLTI3 NSwyMiArMjc1LDE4IEBAIHN0YXRpYyBib29sIGFkX3JlcGxhY2VfdXVpZDEyOChzdHJ1Y3QgYnRf YWQgKmFkLCBzdHJ1Y3QgaW92ZWMgKmlvdikKLSAKLSBzdGF0aWMgYm9vbCBhZF9yZXBsYWNlX25h bWUoc3RydWN0IGJ0X2FkICphZCwgc3RydWN0IGlvdmVjICppb3YpCi0gewotLQljaGFyIHV0Zjhf bmFtZVtIQ0lfTUFYX05BTUVfTEVOR1RIICsgMl07Ci0tCXNpemVfdCBsZW4gPSBNSU4oaW92LT5p b3ZfbGVuLCAoc2l6ZV90KSBIQ0lfTUFYX05BTUVfTEVOR1RIKTsKLSsJY2hhciAqdXRmOF9uYW1l OwotKwlib29sIHJldDsKLSAKLS0JbWVtc2V0KHV0ZjhfbmFtZSwgMCwgc2l6ZW9mKHV0ZjhfbmFt ZSkpOwotLQlzdHJuY3B5KHV0ZjhfbmFtZSwgKGNvbnN0IGNoYXIgKilpb3YtPmlvdl9iYXNlLCBs ZW4pOwotLQotLQlpZiAoc3RyaXN1dGY4KHV0ZjhfbmFtZSwgbGVuKSkKLS0JCWdvdG8gZG9uZTsK LSsJdXRmOF9uYW1lID0gc3RyMnV0ZjgoaW92LT5pb3ZfYmFzZSwgaW92LT5pb3ZfbGVuKTsKLSsJ aWYgKCF1dGY4X25hbWUpCi0rCQlyZXR1cm4gZmFsc2U7Ci0gCi0tCXN0cnRvdXRmOCh1dGY4X25h bWUsIGxlbik7Ci0rCXJldCA9IGJ0X2FkX2FkZF9uYW1lKGFkLCB1dGY4X25hbWUpOwotIAotLQkv KiBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzICovCi0t CXN0cnN0cmlwKHV0ZjhfbmFtZSk7Ci0rCWZyZWUodXRmOF9uYW1lKTsKLSAKLS1kb25lOgotLQly ZXR1cm4gYnRfYWRfYWRkX25hbWUoYWQsIHV0ZjhfbmFtZSk7Ci0rCXJldHVybiByZXQ7Ci0gfQot IAotIHN0YXRpYyBib29sIGFkX3JlcGxhY2VfdXVpZDE2X2RhdGEoc3RydWN0IGJ0X2FkICphZCwg c3RydWN0IGlvdmVjICppb3YpCi1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWVpci5jIGIvdW5pdC90 ZXN0LWVpci5jCi1pbmRleCAzMjZiYzg5OWUyNTEuLjM4MGZjYmEyZjM4ZSAxMDA2NDQKLS0tLSBh L3VuaXQvdGVzdC1laXIuYwotKysrIGIvdW5pdC90ZXN0LWVpci5jCi1AQCAtNDA3LDcgKzQwNyw4 IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGludmFsaWRfdXRmOF9uYW1lX2RhdGFbXSA9 IHsKLSBzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3RfZGF0YSBpbnZhbGlkX3V0ZjhfbmFtZV90ZXN0 ID0gewotIAkuZWlyX2RhdGEgPSBpbnZhbGlkX3V0ZjhfbmFtZV9kYXRhLAotIAkuZWlyX3NpemUg PSBzaXplb2YoaW52YWxpZF91dGY4X25hbWVfZGF0YSksCi0tCS5uYW1lID0gInRlc3Qg4KSq4KSw 4KWAIiwKLSsJLyogVGhlIHRydW5jYXRlZCBzZXF1ZW5jZSBpcyByZXBsYWNlZCBieSBVK0ZGRkQs IHRoZSByZXN0IGlzIGtlcHQgKi8KLSsJLm5hbWUgPSAidGVzdCDgpKrgpLDgpYAiICJceGVmXHhi Zlx4YmQiICLgpY3gpLfgpL4gaW52YWxpZCIsCi0gCS5uYW1lX2NvbXBsZXRlID0gdHJ1ZSwKLSAJ LnR4X3Bvd2VyID0gMTI3LAotIH07Ci1AQCAtNDM1LDcgKzQzNiw5IEBAIHN0YXRpYyBjb25zdCB1 bnNpZ25lZCBjaGFyIGlzb18yMDIyX2pwX25hbWVfZGF0YVtdID0gewotIHN0YXRpYyBjb25zdCBz dHJ1Y3QgdGVzdF9kYXRhIGlzb18yMDIyX2pwX25hbWVfdGVzdCA9IHsKLSAJLmVpcl9kYXRhID0g aXNvXzIwMjJfanBfbmFtZV9kYXRhLAotIAkuZWlyX3NpemUgPSBzaXplb2YoaXNvXzIwMjJfanBf bmFtZV9kYXRhKSwKLS0JLm5hbWUgPSAidGVzdCBcMDMzJEIiLAotKwkvKiBUaGUgNCBKSVMgYnl0 ZXMgYXJlIHJlcGxhY2VkIGJ5IFUrRkZGRCwgdGhlIGVzY2FwZXMgYXJlIEFTQ0lJICovCi0rCS5u YW1lID0gInRlc3QgXDAzMyRCIiAiXHhlZlx4YmZceGJkXHhlZlx4YmZceGJkXHhlZlx4YmZceGJk XHhlZlx4YmZceGJkIgotKwkJCQkJCQkJIlwwMzMoQiBPSyIsCi0gCS5uYW1lX2NvbXBsZXRlID0g dHJ1ZSwKLSAJLnR4X3Bvd2VyID0gMTI3LAotIH07Ci1AQCAtNDc1LDggKzQ3OCw4IEBAIHN0YXRp YyB2b2lkIG1heF9uYW1lX3NldHVwKGNvbnN0IHZvaWQgKmRhdGEpCi0gc3RhdGljIHVuc2lnbmVk IGNoYXIgbG9uZ19uYW1lX2RhdGFbMjU1XTsKLSBzdGF0aWMgY2hhciBsb25nX25hbWVbc2l6ZW9m KGxvbmdfbmFtZV9kYXRhKSAtIDIgKyAxXTsKLSAKLS0vKiBUaGUgbmFtZSBkb2VzIG5vdCBmaXQs IHNvIGl0IGNvbWVzIGJhY2sgY2xhbXBlZCB0byBIQ0lfTUFYX05BTUVfTEVOR1RIICovCi0tI2Rl ZmluZSBMT05HX05BTUVfTEVOCUhDSV9NQVhfTkFNRV9MRU5HVEgKLSsvKiBzdHIydXRmOCgpIGRv ZXMgbm90IGNsYW1wLCBzbyB0aGUgd2hvbGUgbmFtZSBpcyBrZXB0ICovCi0rI2RlZmluZSBMT05H X05BTUVfTEVOCShzaXplb2YobG9uZ19uYW1lX2RhdGEpIC0gMikKLSAKLSBzdGF0aWMgY29uc3Qg c3RydWN0IHRlc3RfZGF0YSBsb25nX25hbWVfdGVzdCA9IHsKLSAJLmVpcl9kYXRhID0gbG9uZ19u YW1lX2RhdGEsCi0tLSAKLTIuNTUuMAotCi0KLUZyb20gMmJmODI4NmM0ZWJlNjI1NmIxNTJjM2Fk YWI2ZWEwZmVkOGE4MzRkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVn dXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTkg QXVnIDIwMjYgMTY6Mjc6MDcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMF0gZGV2aWNlOiBG aXggdGhlIG5hbWUgdHJ1bmNhdGlvbiBzcGxpdHRpbmcgVVRGLTgKLSBzZXF1ZW5jZXMKLQotYnRk X2RldmljZV9kZXZpY2Vfc2V0X25hbWUoKSBjb3BpZXMgdGhlIG5hbWUgd2l0aAotCi0Jc3RybmNw eShkZXZpY2UtPm5hbWUsIG5hbWUsIE1BWF9OQU1FX0xFTkdUSCk7Ci0KLXdoaWNoIGN1dHMgYXQg MjQ4IGJ5dGVzIHdpdGhvdXQgYW55IHJlZ2FyZCBmb3Igd2hlcmUgdGhlIFVURi04Ci1jaGFyYWN0 ZXJzIHN0YXJ0IGFuZCBlbmQsIHNvIGEgbG9uZ2VyIG5hbWUgY2FuIGJlIGxlZnQgd2l0aCBhIHBh cnRpYWwKLXNlcXVlbmNlLiBUaGUgcmVzdWx0IGlzIG5vIGxvbmdlciB2YWxpZCBVVEYtOCBhbmQg RC1CdXMgcmVqZWN0cyBpdCB3aGVuCi10aGUgTmFtZSBwcm9wZXJ0eSBpcyBlbWl0dGVkLgotCi1B IG5hbWUgbWFkZSBvZiAyNDkgVStGRkZEIGNoYXJhY3RlcnMgaXMgNzQ3IGJ5dGVzIGxvbmcgYW5k IGN1dHRpbmcgaXQgYXQKLTI0OCBsZWF2ZXMgYSB0cmFpbGluZyAiZWYgYmYiLCB0d28gdGhpcmRz IG9mIGEgY2hhcmFjdGVyLgotCi1UcnVuY2F0ZSBvbiBhIGNoYXJhY3RlciBib3VuZGFyeSBpbnN0 ZWFkLiBUaGUgc2FtZSBuYW1lIG5vdyBlbmRzIHVwIDI0NgotYnl0ZXMgbG9uZyBhbmQgc3RheXMg dmFsaWQuCi0KLVRoaXMgYWxzbyBtZWFucyBhIG5hbWUgdGhhdCBpcyBub3QgdmFsaWQgVVRGLTgg dG8gYmVnaW4gd2l0aCwgYXMgY2FuIGJlCi1oYWQgZnJvbSB0aGUgbmVhcmQgYW5kIHNpeGF4aXMg cGx1Z2lucywgaXMgbm93IGN1dCBhdCB0aGUgZmlyc3QKLWlsbC1mb3JtZWQgc2VxdWVuY2UgcmF0 aGVyIHRoYW4gcGFzc2VkIG9uIGFzIGlzLgotCi1Bc3Npc3RlZC1ieTogQ2xhdWRlOmNsYXVkZS1v cHVzLTUKLS0tLQotIHNyYy9kZXZpY2UuYyB8IDEyICsrKysrKysrKysrLQotIDEgZmlsZSBjaGFu Z2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMv ZGV2aWNlLmMgYi9zcmMvZGV2aWNlLmMKLWluZGV4IDY1ZDg0YmU1NmNhNS4uZGY2MDdmNzE4YmUx IDEwMDY0NAotLS0tIGEvc3JjL2RldmljZS5jCi0rKysgYi9zcmMvZGV2aWNlLmMKLUBAIC01MTAz LDEyICs1MTAzLDIyIEBAIGNoYXIgKmJ0ZF9kZXZpY2VfZ2V0X3N0b3JhZ2VfcGF0aChzdHJ1Y3Qg YnRkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpuYW1lKQotIAotIHZvaWQgYnRkX2Rldmlj ZV9kZXZpY2Vfc2V0X25hbWUoc3RydWN0IGJ0ZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAq bmFtZSkKLSB7Ci0rCXNpemVfdCBsZW47Ci0rCi0gCWlmIChzdHJuY21wKG5hbWUsIGRldmljZS0+ bmFtZSwgTUFYX05BTUVfTEVOR1RIKSA9PSAwKQotIAkJcmV0dXJuOwotIAotIAlEQkcoIiVzICVz IiwgZGV2aWNlLT5wYXRoLCBuYW1lKTsKLSAKLS0Jc3RybmNweShkZXZpY2UtPm5hbWUsIG5hbWUs IE1BWF9OQU1FX0xFTkdUSCk7Ci0rCS8qCi0rCSAqIFRydW5jYXRlIG9uIGEgY2hhcmFjdGVyIGJv dW5kYXJ5LCBzbyB0aGF0IGEgbmFtZSBsb25nZXIgdGhhbgotKwkgKiBNQVhfTkFNRV9MRU5HVEgg ZG9lcyBub3QgZW5kIHVwIHdpdGggYSBwYXJ0aWFsIHNlcXVlbmNlLCB3aGljaAotKwkgKiB3b3Vs ZCBubyBsb25nZXIgYmUgdmFsaWQgVVRGLTggYW5kIHdvdWxkIGJlIHJlamVjdGVkIGJ5IEQtQnVz LgotKwkgKi8KLSsJbGVuID0gc3RybmxlbnV0ZjgobmFtZSwgTUlOKHN0cmxlbihuYW1lKSwgKHNp emVfdCkgTUFYX05BTUVfTEVOR1RIKSk7Ci0rCi0rCW1lbWNweShkZXZpY2UtPm5hbWUsIG5hbWUs IGxlbik7Ci0rCWRldmljZS0+bmFtZVtsZW5dID0gJ1wwJzsKLSAKLSAJc3RvcmVfZGV2aWNlX2lu Zm8oZGV2aWNlKTsKLSAKLS0tIAotMi41NS4wCi0KLQotRnJvbSBiZWYwZmFhMzEyZWViODMzNDRi YjJiZWFkNWJiYmQwYjUzODQxNGU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVp eiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotRGF0ZTogV2Vk LCAxOSBBdWcgMjAyNiAxNjoyNzoxOSAtMDQwMAotU3ViamVjdDogW1BBVENIIDA5LzEwXSBkZXZp Y2U6IFJlbmFtZSBidGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZSB0bwotIGJ0ZF9kZXZpY2Vfc2V0 X25hbWUKLQotVGhlICJkZXZpY2UiIHdhcyBpbiB0aGVyZSB0d2ljZS4KLQotQXNzaXN0ZWQtYnk6 IENsYXVkZTpjbGF1ZGUtb3B1cy01Ci0tLS0KLSBwbHVnaW5zL25lYXJkLmMgICAgfCAyICstCi0g cGx1Z2lucy9zaXhheGlzLmMgIHwgMiArLQotIHByb2ZpbGVzL2dhcC9nYXMuYyB8IDIgKy0KLSBz cmMvYWRhcHRlci5jICAgICAgfCA0ICsrLS0KLSBzcmMvZGV2aWNlLmMgICAgICAgfCAyICstCi0g c3JjL2RldmljZS5oICAgICAgIHwgMiArLQotIDYgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9uZWFyZC5jIGIvcGx1 Z2lucy9uZWFyZC5jCi1pbmRleCBlZGZjMTE1MzczZWYuLjE2MzNkZDU3Njc0NyAxMDA2NDQKLS0t LSBhL3BsdWdpbnMvbmVhcmQuYwotKysrIGIvcGx1Z2lucy9uZWFyZC5jCi1AQCAtNjI5LDcgKzYy OSw3IEBAIHN0YXRpYyB2b2lkIHN0b3JlX3BhcmFtcyhzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0 ZXIsIHN0cnVjdCBidGRfZGV2aWNlICpkZXZpY2UsCi0gCi0gCWlmIChwYXJhbXMtPm5hbWUpIHsK LSAJCWRldmljZV9zdG9yZV9jYWNoZWRfbmFtZShkZXZpY2UsIHBhcmFtcy0+bmFtZSk7Ci0tCQli dGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZShkZXZpY2UsIHBhcmFtcy0+bmFtZSk7Ci0rCQlidGRf ZGV2aWNlX3NldF9uYW1lKGRldmljZSwgcGFyYW1zLT5uYW1lKTsKLSAJfQotIAotIAlpZiAocGFy YW1zLT5zZXJ2aWNlcykKLWRpZmYgLS1naXQgYS9wbHVnaW5zL3NpeGF4aXMuYyBiL3BsdWdpbnMv c2l4YXhpcy5jCi1pbmRleCBhMDRhNzZkMzk0ZWIuLmZjMmIyYTlkMDE1NiAxMDA2NDQKLS0tLSBh L3BsdWdpbnMvc2l4YXhpcy5jCi0rKysgYi9wbHVnaW5zL3NpeGF4aXMuYwotQEAgLTM2Miw3ICsz NjIsNyBAQCBzdGF0aWMgYm9vbCBzZXR1cF9kZXZpY2UoaW50IGZkLCBjb25zdCBjaGFyICpzeXNm c19wYXRoLAotIAotIAlpbmZvKCJzaXhheGlzOiBzZXR0aW5nIHVwIG5ldyBkZXZpY2UiKTsKLSAK LS0JYnRkX2RldmljZV9kZXZpY2Vfc2V0X25hbWUoZGV2aWNlLCBjcC0+bmFtZSk7Ci0rCWJ0ZF9k ZXZpY2Vfc2V0X25hbWUoZGV2aWNlLCBjcC0+bmFtZSk7Ci0gCWJ0ZF9kZXZpY2Vfc2V0X3BucGlk KGRldmljZSwgY3AtPnNvdXJjZSwgY3AtPnZpZCwgY3AtPnBpZCwgY3AtPnZlcnNpb24pOwotIAli dGRfZGV2aWNlX3NldF90ZW1wb3JhcnkoZGV2aWNlLCB0cnVlKTsKLSAKLWRpZmYgLS1naXQgYS9w cm9maWxlcy9nYXAvZ2FzLmMgYi9wcm9maWxlcy9nYXAvZ2FzLmMKLWluZGV4IDUxODRkNzRlOGYw Ny4uNDk1Nzk5ZTY0MWQ5IDEwMDY0NAotLS0tIGEvcHJvZmlsZXMvZ2FwL2dhcy5jCi0rKysgYi9w cm9maWxlcy9nYXAvZ2FzLmMKLUBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHJlYWRfZGV2 aWNlX25hbWVfY2IoYm9vbCBzdWNjZXNzLCB1aW50OF90IGF0dF9lY29kZSwKLSAKLSAJREJHKCJH QVAgRGV2aWNlIE5hbWU6ICVzIiwgbmFtZSk7Ci0gCi0tCWJ0ZF9kZXZpY2VfZGV2aWNlX3NldF9u YW1lKGdhcy0+ZGV2aWNlLCBuYW1lKTsKLSsJYnRkX2RldmljZV9zZXRfbmFtZShnYXMtPmRldmlj ZSwgbmFtZSk7Ci0gCi0gCWZyZWUobmFtZSk7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9hZGFwdGVy LmMgYi9zcmMvYWRhcHRlci5jCi1pbmRleCBjMjFiM2U3ZmJjYzIuLmNmNTlkYjRhYTVhOSAxMDA2 NDQKLS0tLSBhL3NyYy9hZGFwdGVyLmMKLSsrKyBiL3NyYy9hZGFwdGVyLmMKLUBAIC03NjI4LDcg Kzc2MjgsNyBAQCB2b2lkIGJ0ZF9hZGFwdGVyX2RldmljZV9mb3VuZChzdHJ1Y3QgYnRkX2FkYXB0 ZXIgKmFkYXB0ZXIsCi0gCW5hbWVfa25vd24gPSBkZXZpY2VfbmFtZV9rbm93bihkZXYpOwotIAot IAlpZiAoZWlyX2RhdGEubmFtZSAmJiAoZWlyX2RhdGEubmFtZV9jb21wbGV0ZSB8fCAhbmFtZV9r bm93bikpCi0tCQlidGRfZGV2aWNlX2RldmljZV9zZXRfbmFtZShkZXYsIGVpcl9kYXRhLm5hbWUp OwotKwkJYnRkX2RldmljZV9zZXRfbmFtZShkZXYsIGVpcl9kYXRhLm5hbWUpOwotIAotIAlpZiAo ZWlyX2RhdGEuY2xhc3MgIT0gMCkKLSAJCWRldmljZV9zZXRfY2xhc3MoZGV2LCBlaXJfZGF0YS5j bGFzcyk7Ci1AQCAtOTgxNCw3ICs5ODE0LDcgQEAgc3RhdGljIHZvaWQgY29ubmVjdGVkX2NhbGxi YWNrKHVpbnQxNl90IGluZGV4LCB1aW50MTZfdCBsZW5ndGgsCi0gCi0gCWlmIChlaXJfZGF0YS5u YW1lICYmIChlaXJfZGF0YS5uYW1lX2NvbXBsZXRlIHx8ICFuYW1lX2tub3duKSkgewotIAkJZGV2 aWNlX3N0b3JlX2NhY2hlZF9uYW1lKGRldmljZSwgZWlyX2RhdGEubmFtZSk7Ci0tCQlidGRfZGV2 aWNlX2RldmljZV9zZXRfbmFtZShkZXZpY2UsIGVpcl9kYXRhLm5hbWUpOwotKwkJYnRkX2Rldmlj ZV9zZXRfbmFtZShkZXZpY2UsIGVpcl9kYXRhLm5hbWUpOwotIAl9Ci0gCi0gCWlmIChlaXJfZGF0 YS5tc2RfbGlzdCkKLWRpZmYgLS1naXQgYS9zcmMvZGV2aWNlLmMgYi9zcmMvZGV2aWNlLmMKLWlu ZGV4IGRmNjA3ZjcxOGJlMS4uOTYwOWExNGY3ODgzIDEwMDY0NAotLS0tIGEvc3JjL2RldmljZS5j Ci0rKysgYi9zcmMvZGV2aWNlLmMKLUBAIC01MTAxLDcgKzUxMDEsNyBAQCBjaGFyICpidGRfZGV2 aWNlX2dldF9zdG9yYWdlX3BhdGgoc3RydWN0IGJ0ZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hh ciAqbmFtZSkKLSAJcmV0dXJuIHN0cmR1cChmaWxlbmFtZSk7Ci0gfQotIAotLXZvaWQgYnRkX2Rl dmljZV9kZXZpY2Vfc2V0X25hbWUoc3RydWN0IGJ0ZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hh ciAqbmFtZSkKLSt2b2lkIGJ0ZF9kZXZpY2Vfc2V0X25hbWUoc3RydWN0IGJ0ZF9kZXZpY2UgKmRl dmljZSwgY29uc3QgY2hhciAqbmFtZSkKLSB7Ci0gCXNpemVfdCBsZW47Ci0gCi1kaWZmIC0tZ2l0 IGEvc3JjL2RldmljZS5oIGIvc3JjL2RldmljZS5oCi1pbmRleCBiODkwZjIzZDQ2NDIuLjc2ODNi ZTgyZWUzZiAxMDA2NDQKLS0tLSBhL3NyYy9kZXZpY2UuaAotKysrIGIvc3JjL2RldmljZS5oCi1A QCAtMjMsNyArMjMsNyBAQCBjaGFyICpidGRfZGV2aWNlX2dldF9zdG9yYWdlX3BhdGgoc3RydWN0 IGJ0ZF9kZXZpY2UgKmRldmljZSwKLSAJCQkJY29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAotIAot LXZvaWQgYnRkX2RldmljZV9kZXZpY2Vfc2V0X25hbWUoc3RydWN0IGJ0ZF9kZXZpY2UgKmRldmlj ZSwgY29uc3QgY2hhciAqbmFtZSk7Ci0rdm9pZCBidGRfZGV2aWNlX3NldF9uYW1lKHN0cnVjdCBi dGRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKm5hbWUpOwotIHZvaWQgZGV2aWNlX3N0b3Jl X2NhY2hlZF9uYW1lKHN0cnVjdCBidGRfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUpOwot IHZvaWQgZGV2aWNlX2dldF9uYW1lKHN0cnVjdCBidGRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKm5h bWUsIHNpemVfdCBsZW4pOwotIGJvb2wgZGV2aWNlX25hbWVfa25vd24oc3RydWN0IGJ0ZF9kZXZp Y2UgKmRldmljZSk7Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gZjBlNDBjNWIzZTZhZjY5NzRjNDQw NzdjY2QwY2RjMDFhMjE3MmYzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXog QXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IFdlZCwg MTkgQXVnIDIwMjYgMTY6Mjk6MTkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gdW5pdC90 ZXN0LXV0aWw6IENvdmVyIHN0cnRvdXRmOCB3aXRoIHRoZSBzdHIydXRmOCB0ZXN0cwotCi1zdHJ0 b3V0ZjgoKSBhbmQgc3RyMnV0ZjgoKSBhcmUgdGhlIHR3byB3YXlzIG9mIGRlYWxpbmcgd2l0aCBh IG5hbWUgdGhhdAotaXMgbm90IHZhbGlkIFVURi04LCBzbyBydW4gdGhlbSBvdmVyIHRoZSBzYW1l IGlucHV0cyBhbmQga2VlcCB0aGUgdHdvCi1leHBlY3RlZCByZXN1bHRzIHNpZGUgYnkgc2lkZSwg d2hpY2ggZG9jdW1lbnRzIGhvdyB0aGV5IGRpZmZlcjoKLXN0cnRvdXRmOCgpIHRydW5jYXRlcyBh dCB0aGUgZmlyc3QgaWxsLWZvcm1lZCBzZXF1ZW5jZSBhbmQgbGVhdmVzIHRoZQotd2hpdGVzcGFj ZSBhbG9uZSwgc3RyMnV0ZjgoKSByZXBsYWNlcyB0aGUgaWxsLWZvcm1lZCBzZXF1ZW5jZXMgYW5k Ci1zdHJpcHMuCi0KLVRoZSBleHBlY3RlZCByZXN1bHRzIHdlcmUgY2hlY2tlZCBhZ2FpbnN0IFB5 dGhvbiwgdGFraW5nIHRoZSBsb25nZXN0Ci1wcmVmaXggdGhhdCBkZWNvZGVzIGFzIHN0cmljdCBV VEYtOCwgb3ZlciBldmVyeSBvbmUsIHR3byBhbmQgdGhyZWUgYnl0ZQotc2VxdWVuY2UsIDE2NjQ2 NjU1IG9mIHRoZW0sIHdpdGggbm8gbWlzbWF0Y2guCi0KLUFzc2lzdGVkLWJ5OiBDbGF1ZGU6Y2xh dWRlLW9wdXMtNQotLS0tCi0gdW5pdC90ZXN0LXV0aWwuYyB8IDk0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2NiBpbnNl cnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC11dGls LmMgYi91bml0L3Rlc3QtdXRpbC5jCi1pbmRleCBmMGIxYmI3OTk0ZmIuLmU2MDVkMTdiNmI1NiAx MDA2NDQKLS0tLSBhL3VuaXQvdGVzdC11dGlsLmMKLSsrKyBiL3VuaXQvdGVzdC11dGlsLmMKLUBA IC04Myw2NSArODMsMTAxIEBAIHN0YXRpYyB2b2lkIHRlc3RfbWluX21heChjb25zdCB2b2lkICpk YXRhKQotIAl0ZXN0ZXJfdGVzdF9wYXNzZWQoKTsKLSB9Ci0gCi0tc3RydWN0IHN0cjJ1dGY4X2Rh dGEgewotK3N0cnVjdCB1dGY4X2RhdGEgewotIAljb25zdCBjaGFyICppbnB1dDsJLyogTm90IE5V TCB0ZXJtaW5hdGVkLCBsZW4gYnl0ZXMgYXJlIHVzZWQgKi8KLSAJc2l6ZV90IGxlbjsKLS0JY29u c3QgY2hhciAqZXhwZWN0ZWQ7Ci0rCWNvbnN0IGNoYXIgKnN0cjJ1dGY4OwkvKiBJbGwtZm9ybWVk IHNlcXVlbmNlcyByZXBsYWNlZCwgc3RyaXBwZWQgKi8KLSsJY29uc3QgY2hhciAqc3RydG91dGY4 OwkvKiBUcnVuY2F0ZWQgYXQgdGhlIGZpcnN0IGlsbC1mb3JtZWQgb25lICovCi0gfTsKLSAKLSAj ZGVmaW5lIEZGRkQgIlx4ZWZceGJmXHhiZCIJCS8qIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNU RVIgKi8KLSAKLS1zdGF0aWMgY29uc3Qgc3RydWN0IHN0cjJ1dGY4X2RhdGEgc3RyMnV0ZjhfdGVz dHNbXSA9IHsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHV0ZjhfZGF0YSB1dGY4X3Rlc3RzW10gPSB7 Ci0gCS8qIE5vdGhpbmcgdG8gZG8gKi8KLS0JeyAiIiwgMCwgIiIgfSwKLS0JeyAiUGl4ZWwgNyIs IDcsICJQaXhlbCA3IiB9LAotKwl7ICIiLCAwLCAiIiwgIiIgfSwKLSsJeyAiUGl4ZWwgNyIsIDcs ICJQaXhlbCA3IiwgIlBpeGVsIDciIH0sCi0gCS8qIFdlbGwtZm9ybWVkIG11bHRpLWJ5dGUgc2Vx dWVuY2VzIGFyZSBrZXB0IGFzIHRoZXkgYXJlICovCi0tCXsgIlx4ZTJceDgyXHhhYyA1IiwgNSwg Ilx4ZTJceDgyXHhhYyA1IiB9LAkJLyogVSsyMEFDICovCi0tCXsgIlx4ZjBceDlmXHg5NFx4OGEi LCA0LCAiXHhmMFx4OWZceDk0XHg4YSIgfSwJCS8qIFUrMUY1MEEgKi8KLSsJeyAiXHhlMlx4ODJc eGFjIDUiLCA1LCAiXHhlMlx4ODJceGFjIDUiLAkJLyogVSsyMEFDICovCi0rCQkJCQkJIlx4ZTJc eDgyXHhhYyA1IiB9LAotKwl7ICJceGYwXHg5Zlx4OTRceDhhIiwgNCwgIlx4ZjBceDlmXHg5NFx4 OGEiLAkvKiBVKzFGNTBBICovCi0rCQkJCQkJIlx4ZjBceDlmXHg5NFx4OGEiIH0sCi0gCS8qIExl YWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZCAqLwotLQl7ICIgIHNwYWNl ZCAgIiwgMTAsICJzcGFjZWQiIH0sCi0tCXsgIlx0XHJcbm5hbWVcblxyXHQiLCAxMCwgIm5hbWUi IH0sCi0tCXsgIiAgICIsIDMsICIiIH0sCi0rCXsgIiAgc3BhY2VkICAiLCAxMCwgInNwYWNlZCIs ICIgIHNwYWNlZCAgIiB9LAotKwl7ICJcdFxyXG5uYW1lXG5cclx0IiwgMTAsICJuYW1lIiwgIlx0 XHJcbm5hbWVcblxyXHQiIH0sCi0rCXsgIiAgICIsIDMsICIiLCAiICAgIiB9LAotIAkvKiBUaGUg bmFtZSBpcyBub3QgTlVMIHRlcm1pbmF0ZWQsIG9ubHkgbGVuIGJ5dGVzIGFyZSB1c2VkICovCi0t CXsgInRydW5jYXRlZCIsIDQsICJ0cnVuIiB9LAotKwl7ICJ0cnVuY2F0ZWQiLCA0LCAidHJ1biIs ICJ0cnVuIiB9LAotIAkvKiBBIGJ5dGUgdGhhdCBjYW4gbmV2ZXIgYXBwZWFyIGluIFVURi04ICov Ci0tCXsgImFiXHhmZiIiY2QiLCA1LCAiYWIiIEZGRkQgImNkIiB9LAotKwl7ICJhYlx4ZmYiImNk IiwgNSwgImFiIiBGRkZEICJjZCIsICJhYiIgfSwKLSAJLyogQSBjb250aW51YXRpb24gYnl0ZSBj YW5ub3Qgc3RhcnQgYSBzZXF1ZW5jZSAqLwotLQl7ICJhYlx4ODAiImNkIiwgNSwgImFiIiBGRkZE ICJjZCIgfSwKLSsJeyAiYWJceDgwIiJjZCIsIDUsICJhYiIgRkZGRCAiY2QiLCAiYWIiIH0sCi0g CS8qIE9uZSBVK0ZGRkQgcGVyIG1heGltYWwgc3VicGFydCwgbm90IHBlciBieXRlICovCi0tCXsg ImFiXHhlMlx4ODIiImNkIiwgNiwgImFiIiBGRkZEICJjZCIgfSwKLSsJeyAiYWJceGUyXHg4MiIi Y2QiLCA2LCAiYWIiIEZGRkQgImNkIiwgImFiIiB9LAotIAkvKiBBIHNlcXVlbmNlIGN1dCBzaG9y dCBieSBsZW4gaXMgc3RpbGwgb25lIG1heGltYWwgc3VicGFydCAqLwotLQl7ICJhYlx4ZTJceDgy XHhhYyIsIDQsICJhYiIgRkZGRCB9LAotKwl7ICJhYlx4ZTJceDgyXHhhYyIsIDQsICJhYiIgRkZG RCwgImFiIiB9LAotIAkvKiBMYXRpbi0xIHRleHQgaXMgbm90IHZhbGlkIFVURi04ICovCi0tCXsg ImNhZlx4ZTkiLCA0LCAiY2FmIiBGRkZEIH0sCi0rCXsgImNhZlx4ZTkiLCA0LCAiY2FmIiBGRkZE LCAiY2FmIiB9LAotIAkvKiBPdmVybG9uZyBlbmNvZGluZ3MgYXJlIHJlamVjdGVkLCBDMCBhbmQg QzEgYXJlIG5ldmVyIHZhbGlkICovCi0tCXsgIlx4YzBceDgwIiwgMiwgRkZGRCBGRkZEIH0sCi0t CXsgIlx4YzBceGFmIiwgMiwgRkZGRCBGRkZEIH0sCi0rCXsgIlx4YzBceDgwIiwgMiwgRkZGRCBG RkZELCAiIiB9LAotKwl7ICJceGMwXHhhZiIsIDIsIEZGRkQgRkZGRCwgIiIgfSwKLSAJLyogVVRG LTE2IHN1cnJvZ2F0ZXMgaGF2ZSBubyBVVEYtOCBlbmNvZGluZyAqLwotLQl7ICJceGVkXHhhMFx4 ODAiLCAzLCBGRkZEIEZGRkQgRkZGRCB9LAotKwl7ICJceGVkXHhhMFx4ODAiLCAzLCBGRkZEIEZG RkQgRkZGRCwgIiIgfSwKLSAJLyogVSsxMEZGRkYgaXMgdGhlIGxhc3QgY29kZSBwb2ludCwgRjUg dG8gRkYgYXJlIG91dCBvZiByYW5nZSAqLwotLQl7ICJceGY0XHg5MFx4ODBceDgwIiwgNCwgRkZG RCBGRkZEIEZGRkQgRkZGRCB9LAotLQl7ICJceGY1XHg4MFx4ODBceDgwIiwgNCwgRkZGRCBGRkZE IEZGRkQgRkZGRCB9LAotKwl7ICJceGY0XHg5MFx4ODBceDgwIiwgNCwgRkZGRCBGRkZEIEZGRkQg RkZGRCwgIiIgfSwKLSsJeyAiXHhmNVx4ODBceDgwXHg4MCIsIDQsIEZGRkQgRkZGRCBGRkZEIEZG RkQsICIiIH0sCi0gCS8qIFRoZSBsYXN0IGNvZGUgcG9pbnQgaXRzZWxmIGlzIGZpbmUgKi8KLS0J eyAiXHhmNFx4OGZceGJmXHhiZiIsIDQsICJceGY0XHg4Zlx4YmZceGJmIiB9LAotKwl7ICJceGY0 XHg4Zlx4YmZceGJmIiwgNCwgIlx4ZjRceDhmXHhiZlx4YmYiLAotKwkJCQkJCSJceGY0XHg4Zlx4 YmZceGJmIiB9LAotIAkvKiBSZXBsYWNlbWVudCBhbmQgc3RyaXBwaW5nIGNvbWJpbmVkICovCi0t CXsgIiBceGZmICIsIDMsIEZGRkQgfSwKLSsJeyAiIFx4ZmYgIiwgMywgRkZGRCwgIiAiIH0sCi0g fTsKLSAKLSBzdGF0aWMgdm9pZCB0ZXN0X3N0cjJ1dGY4KGNvbnN0IHZvaWQgKmRhdGEpCi0gewot IAlzaXplX3QgaTsKLSAKLS0JZm9yIChpID0gMDsgaSA8IHNpemVvZihzdHIydXRmOF90ZXN0cykg LwotLQkJCQlzaXplb2Yoc3RyMnV0ZjhfdGVzdHNbMF0pOyBpKyspIHsKLS0JCWNvbnN0IHN0cnVj dCBzdHIydXRmOF9kYXRhICp0ZXN0ID0gJnN0cjJ1dGY4X3Rlc3RzW2ldOwotKwlmb3IgKGkgPSAw OyBpIDwgc2l6ZW9mKHV0ZjhfdGVzdHMpIC8gc2l6ZW9mKHV0ZjhfdGVzdHNbMF0pOyBpKyspIHsK LSsJCWNvbnN0IHN0cnVjdCB1dGY4X2RhdGEgKnRlc3QgPSAmdXRmOF90ZXN0c1tpXTsKLSAJCWNo YXIgKnN0ciA9IHN0cjJ1dGY4KChjb25zdCB1aW50OF90ICopIHRlc3QtPmlucHV0LAotIAkJCQkJ CQkJdGVzdC0+bGVuKTsKLSAKLSAJCWFzc2VydChzdHIpOwotLQkJaWYgKHN0cmNtcChzdHIsIHRl c3QtPmV4cGVjdGVkKSkgewotKwkJaWYgKHN0cmNtcChzdHIsIHRlc3QtPnN0cjJ1dGY4KSkgewot IAkJCXByaW50ZigidGVzdCAlenU6IGV4cGVjdGVkIFwiJXNcIiwgZ290IFwiJXNcIlxuIiwgaSwK LS0JCQkJCQkJdGVzdC0+ZXhwZWN0ZWQsIHN0cik7Ci0rCQkJCQkJCXRlc3QtPnN0cjJ1dGY4LCBz dHIpOwotKwkJCWZyZWUoc3RyKTsKLSsJCQl0ZXN0ZXJfdGVzdF9mYWlsZWQoKTsKLSsJCQlyZXR1 cm47Ci0rCQl9Ci0rCi0rCQkvKiBUaGUgcmVzdWx0IGlzIGFsd2F5cyB3ZWxsLWZvcm1lZCBVVEYt OCAqLwotKwkJYXNzZXJ0KHN0cmlzdXRmOChzdHIsIHN0cmxlbihzdHIpKSk7Ci0rCi0rCQlmcmVl KHN0cik7Ci0rCX0KLSsKLSsJdGVzdGVyX3Rlc3RfcGFzc2VkKCk7Ci0rfQotKwotK3N0YXRpYyB2 b2lkIHRlc3Rfc3RydG91dGY4KGNvbnN0IHZvaWQgKmRhdGEpCi0rewotKwlzaXplX3QgaTsKLSsK LSsJZm9yIChpID0gMDsgaSA8IHNpemVvZih1dGY4X3Rlc3RzKSAvIHNpemVvZih1dGY4X3Rlc3Rz WzBdKTsgaSsrKSB7Ci0rCQljb25zdCBzdHJ1Y3QgdXRmOF9kYXRhICp0ZXN0ID0gJnV0ZjhfdGVz dHNbaV07Ci0rCQljaGFyICpzdHI7Ci0rCi0rCQkvKiBzdHJ0b3V0ZjgoKSB3b3JrcyBpbiBwbGFj ZSwgc28gaXQgbmVlZHMgYSB3cml0YWJsZSBjb3B5ICovCi0rCQlzdHIgPSBtYWxsb2ModGVzdC0+ bGVuICsgMSk7Ci0rCQlhc3NlcnQoc3RyKTsKLSsJCW1lbWNweShzdHIsIHRlc3QtPmlucHV0LCB0 ZXN0LT5sZW4pOwotKwkJc3RyW3Rlc3QtPmxlbl0gPSAnXDAnOwotKwotKwkJYXNzZXJ0KHN0cnRv dXRmOChzdHIsIHRlc3QtPmxlbikgPT0gc3RyKTsKLSsKLSsJCWlmIChzdHJjbXAoc3RyLCB0ZXN0 LT5zdHJ0b3V0ZjgpKSB7Ci0rCQkJcHJpbnRmKCJ0ZXN0ICV6dTogZXhwZWN0ZWQgXCIlc1wiLCBn b3QgXCIlc1wiXG4iLCBpLAotKwkJCQkJCQl0ZXN0LT5zdHJ0b3V0ZjgsIHN0cik7Ci0gCQkJZnJl ZShzdHIpOwotIAkJCXRlc3Rlcl90ZXN0X2ZhaWxlZCgpOwotIAkJCXJldHVybjsKLUBAIC0xNzgs NiArMjE0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQl0ZXN0X3N0 cjJ1dGY4LCBOVUxMKTsKLSAJdGVzdGVyX2FkZCgiL3V0aWwvc3RyMnV0ZjhfbnVsbCIsIE5VTEws IE5VTEwsCi0gCQkJdGVzdF9zdHIydXRmOF9udWxsLCBOVUxMKTsKLSsJdGVzdGVyX2FkZCgiL3V0 aWwvc3RydG91dGY4IiwgTlVMTCwgTlVMTCwKLSsJCQl0ZXN0X3N0cnRvdXRmOCwgTlVMTCk7Ci0g Ci0gCXJldHVybiB0ZXN0ZXJfcnVuKCk7Ci0gfQotLS0gCi0yLjU1LjAKLQoKZGlmZiAtLWdpdCBh L3NkcC14bWwtdHlwZS1jb25mdXNpb24ucGF0Y2ggYi9zZHAteG1sLXR5cGUtY29uZnVzaW9uLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTdkMTcyLi4wMDAwMDAwCi0tLSBh L3NkcC14bWwtdHlwZS1jb25mdXNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcyICsw LDAgQEAKLUZyb20gZTU1ZmY4ODE4ZjcyMmRmYmVmYzYyYjk2NDZmNjliYWQxOTAxNGZkZCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNz Lm5ldD4KLURhdGU6IFdlZCwgMTIgQXVnIDIwMjYgMTA6MDE6MzIgKzAyMDAKLVN1YmplY3Q6IFtQ QVRDSCAxLzldIHVuaXQ6IEFkZCB0ZXN0IGZvciBzZHBfeG1sX3BhcnNlX3JlY29yZCgpCi0KLVRo aXMgYWRkcyAyIGV4YW1wbGUgWE1MIGZpbGVzIGZyb20gb3RoZXIgcmVwb3NpdG9yaWVzLCB1bmRl ciBhIGZhaXIgdXNlCi1saWNlbnNlIGV4Y2VwdGlvbi4KLVJlcG9ydGVkLWJ5OiBBaXNsZSBSZXNl YXJjaAotUmVwb3J0ZWQtYnk6IEFpc2xlIFJlc2VhcmNoCi0tLS0KLSBNYWtlZmlsZS5hbSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArKysKLSB1bml0L3NkcC14bWwvQmx1ZXRv b3RoX0hJRC1zZHBfcmVjb3JkLnhtbCB8IDEyMyArKysrKysrKysrKysrKysrKysrKysrCi0gdW5p dC9zZHAteG1sL3F0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sICAgfCAgNTcgKysrKysrKysrKwot IHVuaXQvdGVzdC1zZHAteG1sLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDg1ICsrKysrKysr KysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMjc4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9k ZSAxMDA2NDQgdW5pdC9zZHAteG1sL0JsdWV0b290aF9ISUQtc2RwX3JlY29yZC54bWwKLSBjcmVh dGUgbW9kZSAxMDA2NDQgdW5pdC9zZHAteG1sL3F0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sCi0g Y3JlYXRlIG1vZGUgMTAwNjQ0IHVuaXQvdGVzdC1zZHAteG1sLmMKLQotZGlmZiAtLWdpdCBhL01h a2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDE5YzQ2OGQzYTUwNC4uMWVjYjVlMWRkYWVj IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNjM3LDYg KzYzNywxOSBAQCB1bml0X3Rlc3Rfc2RwX1NPVVJDRVMgPSB1bml0L3Rlc3Qtc2RwLmMgXAotIHVu aXRfdGVzdF9zZHBfTERBREQgPSBsaWIvbGliYmx1ZXRvb3RoLWludGVybmFsLmxhIFwKLSAJCQkJ c3JjL2xpYnNoYXJlZC1nbGliLmxhICQoR0xJQl9MSUJTKQotIAotK3VuaXRfdGVzdHMgKz0gdW5p dC90ZXN0LXNkcC14bWwKLSsKLSt1bml0X3Rlc3Rfc2RwX3htbF9TT1VSQ0VTID0gdW5pdC90ZXN0 LXNkcC14bWwuYyBcCi0rCQkJCXNyYy9zZHAteG1sLmMgc3JjL3NkcC14bWwuaCBcCi0rCQkJCXNy Yy9sb2cuaCBzcmMvbG9nLmMKLSt1bml0X3Rlc3Rfc2RwX3htbF9MREFERCA9IGxpYi9saWJibHVl dG9vdGgtaW50ZXJuYWwubGEgXAotKwkJCQlzcmMvbGlic2hhcmVkLWdsaWIubGEgJChHTElCX0xJ QlMpCi0rdW5pdF90ZXN0X3NkcF94bWxfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoR0xJQl9DRkxB R1MpIC1EVE9QX1NSQ0RJUj1cIiIkKHNyY2RpcikiXCIKLSt1bml0X3Rlc3Rfc2RwX3htbF9DUFBG TEFHUyA9IC1JJChzcmNkaXIpL2xpYgotKwotK0VYVFJBX0RJU1QgKz0gdW5pdC9zZHAteG1sL0Js dWV0b290aF9ISUQtc2RwX3JlY29yZC54bWwJCVwKLSsJdW5pdC9zZHAteG1sL3F0LVNlcmlhbFBv cnRTRFBSZWNvcmQueG1sCi0rCi0gdW5pdF90ZXN0cyArPSB1bml0L3Rlc3QtYXZkdHAKLSAKLSB1 bml0X3Rlc3RfYXZkdHBfU09VUkNFUyA9IHVuaXQvdGVzdC1hdmR0cC5jIFwKLWRpZmYgLS1naXQg YS91bml0L3NkcC14bWwvQmx1ZXRvb3RoX0hJRC1zZHBfcmVjb3JkLnhtbCBiL3VuaXQvc2RwLXht bC9CbHVldG9vdGhfSElELXNkcF9yZWNvcmQueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMDAwMDAwLi42ODdiMGIxNWI1MjAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3VuaXQv c2RwLXhtbC9CbHVldG9vdGhfSElELXNkcF9yZWNvcmQueG1sCi1AQCAtMCwwICsxLDEyMyBAQAot Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgotKwotKzwhLS0KLSsKLSsg RnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0FuZXNCZW5tZXJ6b3VnL0JsdWV0b290aF9ISUQvYmxv Yi9tYXN0ZXIvc2RwX3JlY29yZC54bWwKLSsgQSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBmaWVsZHMg Y2FuIGJlIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgbGlua3M6Ci0rIGh0dHA6Ly93d3cuYmx1ZWNv dmUub3JnL2JsdWVjb3ZlL2FwaWRvY3MvamF2YXgvYmx1ZXRvb3RoL1NlcnZpY2VSZWNvcmQuaHRt bAotKyBodHRwczovL3d3dy5ibHVldG9vdGguY29tL3NwZWNpZmljYXRpb25zL2Fzc2lnbmVkLW51 bWJlcnMvc2VydmljZS1kaXNjb3ZlcnkKLSsKLSsgLS0+Ci0rCi0rPHJlY29yZD4KLSsJPGF0dHJp YnV0ZSBpZD0iMHgwMDAxIj4gPCEtLSBTZXJ2aWNlIENsYXNzIElEIExpc3QgLS0+Ci0rCQk8c2Vx dWVuY2U+Ci0rCQkJPHV1aWQgdmFsdWU9IjB4MTEyNCIgLz4gPCEtLSBIdW1hbiBJbnRlcmZhY2Ug RGV2aWNlIC0tPgotKwkJPC9zZXF1ZW5jZT4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUg aWQ9IjB4MDAwNCI+IDwhLS0gUHJvdG9jb2wgRGVzY3JpcHRvciBMaXN0IC0tPgotKwkJPHNlcXVl bmNlPgotKwkJCTxzZXF1ZW5jZT4KLSsJCQkJPHV1aWQgdmFsdWU9IjB4MDEwMCIgLz4gPCEtLSBM MkNBUCAtLT4KLSsJCQkJPHVpbnQxNiB2YWx1ZT0iMHgwMDExIiAvPiA8IS0tIEhJRFAgLS0+Ci0r CQkJPC9zZXF1ZW5jZT4KLSsJCQk8c2VxdWVuY2U+Ci0rCQkJCTx1dWlkIHZhbHVlPSIweDAwMTEi IC8+IDwhLS0gSElEUCAtLT4KLSsJCQk8L3NlcXVlbmNlPgotKwkJPC9zZXF1ZW5jZT4KLSsJPC9h dHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDAwNSI+IDwhLS0gQnJvd3NlIEdyb3VwIExp c3QgLS0+Ci0rCQk8c2VxdWVuY2U+Ci0rCQkJPHV1aWQgdmFsdWU9IjB4MTAwMiIgLz4KLSsJCTwv c2VxdWVuY2U+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlkPSIweDAwMDYiPiA8IS0t IExhbmd1YWdlIEJhc2VkIEF0dHJpYnV0ZSBJRCBMaXN0IC0tPgotKwkJPHNlcXVlbmNlPgotKwkJ CTx1aW50MTYgdmFsdWU9IjB4NjU2ZSIgLz4gPCEtLSBjb2RlX0lTTzYzOSAtLT4KLSsJCQk8dWlu dDE2IHZhbHVlPSIweDAwNmEiIC8+IDwhLS0gZW5jb2RpbmcgLS0+Ci0rCQkJPHVpbnQxNiB2YWx1 ZT0iMHgwMTAwIiAvPiA8IS0tIGJhc2Vfb2Zmc2V0IC0tPgotKwkJPC9zZXF1ZW5jZT4KLSsJPC9h dHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDAwOSI+IDwhLS0gQmx1ZXRvb3RoIFByb2Zp bGUgRGVzY3JpcHRvciBMaXN0IC0tPgotKwkJPHNlcXVlbmNlPgotKwkJCTxzZXF1ZW5jZT4KLSsJ CQkJPHV1aWQgdmFsdWU9IjB4MTEyNCIgLz4gPCEtLSBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlIC0t PgotKwkJCQk8dWludDE2IHZhbHVlPSIweDAxMDAiIC8+IDwhLS0gTDJDQVAgLS0+Ci0rCQkJPC9z ZXF1ZW5jZT4KLSsJCTwvc2VxdWVuY2U+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlk PSIweDAwMGQiPiA8IS0tIEFkZGl0aW9uYWwgUHJvdG9jb2wgRGVzY3JpcHRvciBMaXN0cyAtLT4K LSsJCTxzZXF1ZW5jZT4KLSsJCQk8c2VxdWVuY2U+Ci0rCQkJCTxzZXF1ZW5jZT4KLSsJCQkJCTx1 dWlkIHZhbHVlPSIweDAxMDAiIC8+IDwhLS0gTDJDQVAgLS0+Ci0rCQkJCQk8dWludDE2IHZhbHVl PSIweDAwMTMiIC8+Ci0rCQkJCTwvc2VxdWVuY2U+Ci0rCQkJCTxzZXF1ZW5jZT4KLSsJCQkJCTx1 dWlkIHZhbHVlPSIweDAwMTEiIC8+IDwhLS0gSElEUCAtLT4KLSsJCQkJPC9zZXF1ZW5jZT4KLSsJ CQk8L3NlcXVlbmNlPgotKwkJPC9zZXF1ZW5jZT4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1 dGUgaWQ9IjB4MDEwMCI+Ci0rCQk8dGV4dCB2YWx1ZT0iQmx1ZXRvb3RoX0tleWJvYXJkL01vdXNl IiAvPgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMTAxIj4KLSsJCTx0ZXh0 IHZhbHVlPSJVU0IgPiBCVCBLZXlib2FyZC9Nb3VzZSIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxh dHRyaWJ1dGUgaWQ9IjB4MDEwMiI+Ci0rCQk8dGV4dCB2YWx1ZT0iUmFzcGJlcnJ5IFBpIDMiIC8+ Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlkPSIweDAyMDAiPgotKwkJPHVpbnQxNiB2 YWx1ZT0iMHgwMTAwIiAvPgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMjAx Ij4KLSsJCTx1aW50MTYgdmFsdWU9IjB4MDExMSIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRy aWJ1dGUgaWQ9IjB4MDIwMiI+Ci0rCQk8dWludDggdmFsdWU9IjB4NDAiIC8+Ci0rCTwvYXR0cmli dXRlPgotKwk8YXR0cmlidXRlIGlkPSIweDAyMDMiPgotKwkJPHVpbnQ4IHZhbHVlPSIweDAwIiAv PgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMjA0Ij4KLSsJCTxib29sZWFu IHZhbHVlPSJmYWxzZSIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRyaWJ1dGUgaWQ9IjB4MDIw NSI+Ci0rCQk8Ym9vbGVhbiB2YWx1ZT0iZmFsc2UiIC8+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0 cmlidXRlIGlkPSIweDAyMDYiPgotKwkJPHNlcXVlbmNlPgotKwkJCTxzZXF1ZW5jZT4KLSsJCQkJ PHVpbnQ4IHZhbHVlPSIweDIyIiAvPgotKwkJCQk8dGV4dCBlbmNvZGluZz0iaGV4IiB2YWx1ZT0i MDUwMTA5MDZBMTAxODUwMUExMDAwNTA3MTlFMDI5RTcxNTAwMjUwMTc1MDE5NTA4ODEwMjk1MDE3 NTA4ODEwMTk1MDg3NTA4MTUwMDI1NjUwNTA3MTkwMDI5NjU4MTAwQzBDMDA1MDEwOTAyQTEwMTg1 MDIwOTAxQTEwMDA1MDkxOTAxMjkwMzE1MDAyNTAxNzUwMTk1MDM4MTAyNzUwNTk1MDE4MTAxMDUw MTA5MzAwOTMxMDkzODE1ODEyNTdGNzUwODk1MDM4MTA2QzBDMCIvPgotKwkJCTwvc2VxdWVuY2U+ Ci0rCQk8L3NlcXVlbmNlPgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMjA3 Ij4KLSsJCTxzZXF1ZW5jZT4KLSsJCQk8c2VxdWVuY2U+Ci0rCQkJCTx1aW50MTYgdmFsdWU9IjB4 MDQwOSIgLz4KLSsJCQkJPHVpbnQxNiB2YWx1ZT0iMHgwMTAwIiAvPgotKwkJCTwvc2VxdWVuY2U+ Ci0rCQk8L3NlcXVlbmNlPgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0iMHgwMjBi Ij4KLSsJCTx1aW50MTYgdmFsdWU9IjB4MDEwMCIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0rCTxhdHRy aWJ1dGUgaWQ9IjB4MDIwYyI+Ci0rCQk8dWludDE2IHZhbHVlPSIweDBjODAiIC8+Ci0rCTwvYXR0 cmlidXRlPgotKwk8YXR0cmlidXRlIGlkPSIweDAyMGQiPgotKwkJPGJvb2xlYW4gdmFsdWU9InRy dWUiIC8+Ci0rCTwvYXR0cmlidXRlPgotKwk8YXR0cmlidXRlIGlkPSIweDAyMGUiPgotKwkJPGJv b2xlYW4gdmFsdWU9ImZhbHNlIiAvPgotKwk8L2F0dHJpYnV0ZT4KLSsJPGF0dHJpYnV0ZSBpZD0i MHgwMjBmIj4KLSsJCTx1aW50MTYgdmFsdWU9IjB4MDY0MCIgLz4KLSsJPC9hdHRyaWJ1dGU+Ci0r CTxhdHRyaWJ1dGUgaWQ9IjB4MDIxMCI+Ci0rCQk8dWludDE2IHZhbHVlPSIweDAzMjAiIC8+Ci0r CTwvYXR0cmlidXRlPgotKzwvcmVjb3JkPgotZGlmZiAtLWdpdCBhL3VuaXQvc2RwLXhtbC9xdC1T ZXJpYWxQb3J0U0RQUmVjb3JkLnhtbCBiL3VuaXQvc2RwLXhtbC9xdC1TZXJpYWxQb3J0U0RQUmVj b3JkLnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uMWY2MmNj ZjExYTQxCi0tLS0gL2Rldi9udWxsCi0rKysgYi91bml0L3NkcC14bWwvcXQtU2VyaWFsUG9ydFNE UFJlY29yZC54bWwKLUBAIC0wLDAgKzEsNTcgQEAKLSs8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k aW5nPSJVVEYtOCIgPz4KLSsKLSs8IS0tCi0rIFRoaXMgaXMgYW4gWE1MIGZpbGUgZGVzY3JpYmlu ZyBhbiBTRFAgc2VydmljZSByZWNvcmQgZm9yIGEgU2VyaWFsIFBvcnQKLSsgc2VydmljZS4KLSsK LSsgWW91IGNhbiB1c2UgdGhlIGxpbnV4IHNkcHRvb2wgY29tbWFuZCB0byBjcmVhdGUgYSBmaWxl IGxpa2UgdGhpcyBmb3IKLSsgcHVibGlzaGluZyB5b3VyIEJsdWV0b290aCBzZXJ2aWNlcy4gU2Vl IHRoZSAiQ3JlYXRpbmcgYSBCbHVldG9vdGggc2VydmljZSIKLSsgdHV0b3JpYWwgZm9yIG1vcmUg ZGV0YWlscy4KLSsKLSsgRnJvbTogaHR0cHM6Ly9yYWRla3AuZ2l0aHViLmlvL3F0bW9rby9hcGkv Ymx1ZXRvb3RoLWJsdWV0b290aHNlcnZpY2Utc2VyaWFscG9ydHNkcHJlY29yZC14bWwuaHRtbAot Ky0tPgotKwotKyA8cmVjb3JkPgotKyAgICAgICAgIDxhdHRyaWJ1dGUgaWQ9IjB4MDAwMSI+Ci0r ICAgICAgICAgICAgICAgICA8c2VxdWVuY2U+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDx1 dWlkIHZhbHVlPSIweDExMDEiIC8+Ci0rICAgICAgICAgICAgICAgICA8L3NlcXVlbmNlPgotKyAg ICAgICAgIDwvYXR0cmlidXRlPgotKyAgICAgICAgIDxhdHRyaWJ1dGUgaWQ9IjB4MDAwNCI+Ci0r ICAgICAgICAgICAgICAgICA8c2VxdWVuY2U+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDxz ZXF1ZW5jZT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXVpZCB2YWx1ZT0i MHgwMTAwIiAvPgotKyAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlcXVlbmNlPgotKyAgICAg ICAgICAgICAgICAgICAgICAgICA8c2VxdWVuY2U+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHV1aWQgdmFsdWU9IjB4MDAwMyIgLz4KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dWludDggdmFsdWU9IjB4MDUiIC8+Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgIDwvc2VxdWVuY2U+Ci0rICAgICAgICAgICAgICAgICA8L3NlcXVlbmNlPgotKyAgICAgICAg IDwvYXR0cmlidXRlPgotKyAgICAgICAgIDxhdHRyaWJ1dGUgaWQ9IjB4MDAwNSI+Ci0rICAgICAg ICAgICAgICAgICA8c2VxdWVuY2U+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDx1dWlkIHZh bHVlPSIweDEwMDIiIC8+Ci0rICAgICAgICAgICAgICAgICA8L3NlcXVlbmNlPgotKyAgICAgICAg IDwvYXR0cmlidXRlPgotKyAgICAgICAgIDxhdHRyaWJ1dGUgaWQ9IjB4MDAwNiI+Ci0rICAgICAg ICAgICAgICAgICA8c2VxdWVuY2U+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDx1aW50MTYg dmFsdWU9IjB4NjU2ZSIgLz4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgPHVpbnQxNiB2YWx1 ZT0iMHgwMDZhIiAvPgotKyAgICAgICAgICAgICAgICAgICAgICAgICA8dWludDE2IHZhbHVlPSIw eDAxMDAiIC8+Ci0rICAgICAgICAgICAgICAgICA8L3NlcXVlbmNlPgotKyAgICAgICAgIDwvYXR0 cmlidXRlPgotKyAgICAgICAgIDxhdHRyaWJ1dGUgaWQ9IjB4MDAwOSI+Ci0rICAgICAgICAgICAg ICAgICA8c2VxdWVuY2U+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIDxzZXF1ZW5jZT4KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXVpZCB2YWx1ZT0iMHgxMTAxIiAvPgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1aW50MTYgdmFsdWU9IjB4MDEwMCIg Lz4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZXF1ZW5jZT4KLSsgICAgICAgICAgICAg ICAgIDwvc2VxdWVuY2U+Ci0rICAgICAgICAgPC9hdHRyaWJ1dGU+Ci0rICAgICAgICAgPGF0dHJp YnV0ZSBpZD0iMHgwMTAwIj4KLSsgICAgICAgICAgICAgICAgIDx0ZXh0IHZhbHVlPSJTZXJpYWwg UG9ydCIgLz4KLSsgICAgICAgICA8L2F0dHJpYnV0ZT4KLSsgICAgICAgICA8YXR0cmlidXRlIGlk PSIweDAxMDEiPgotKyAgICAgICAgICAgICAgICAgPHRleHQgdmFsdWU9IkNPTSBQb3J0IiAvPgot KyAgICAgICAgIDwvYXR0cmlidXRlPgotKyA8L3JlY29yZD4KLWRpZmYgLS1naXQgYS91bml0L3Rl c3Qtc2RwLXhtbC5jIGIvdW5pdC90ZXN0LXNkcC14bWwuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAwMDAwMC4uOWFmMmY4Yzg3MGY2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi91 bml0L3Rlc3Qtc2RwLXhtbC5jCi1AQCAtMCwwICsxLDg1IEBACi0rLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKLSsvKgotKyAqCi0rICogIEJsdWVaIC0gQmx1ZXRv b3RoIHByb3RvY29sIHN0YWNrIGZvciBMaW51eAotKyAqCi0rICogIENvcHlyaWdodCAoQykgMjAy NiAgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKgotKyAq LwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRp ZgotKwotKyNpbmNsdWRlIDxnbGliLmg+Ci0rCi0rI2luY2x1ZGUgImJsdWV0b290aC9zZHAuaCIK LSsjaW5jbHVkZSAiYmx1ZXRvb3RoL3NkcF9saWIuaCIKLSsKLSsjaW5jbHVkZSAic3JjL3NoYXJl ZC91dGlsLmgiCi0rI2luY2x1ZGUgInNyYy9zaGFyZWQvdGVzdGVyLmgiCi0rI2luY2x1ZGUgInNy Yy9sb2cuaCIKLSsjaW5jbHVkZSAic3JjL3NkcC14bWwuaCIKLSsKLStzdHJ1Y3QgdGVzdF9kYXRh IHsKLSsJR1N0cmluZyAqczsKLSsJY2hhciAqZmlsZW5hbWU7Ci0rCWdib29sZWFuIGV4cGVjdGVk X3Jlc3VsdDsKLSt9OwotKwotK3N0YXRpYyB2b2lkIHBhcnNlX3htbChnY29uc3Rwb2ludGVyIGRh dGEsIGdzaXplIGxlbiwgZ2Jvb2xlYW4gZXhwZWN0ZWRfcmVzdWx0KQotK3sKLSsJc2RwX3JlY29y ZF90ICpyZWMgPSBOVUxMOwotKwlnYm9vbGVhbiByZXQ7Ci0rCi0rCXJlYyA9IHNkcF94bWxfcGFy c2VfcmVjb3JkKGRhdGEsIGxlbik7Ci0rCXJldCA9IHJlYyA/IFRSVUUgOiBGQUxTRTsKLSsJaWYg KHJldCA9PSBleHBlY3RlZF9yZXN1bHQpCi0rCQl0ZXN0ZXJfdGVzdF9wYXNzZWQoKTsKLSsJZWxz ZQotKwkJdGVzdGVyX3Rlc3RfZmFpbGVkKCk7Ci0rCWlmIChyZWMpCi0rCQlzZHBfcmVjb3JkX2Zy ZWUocmVjKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgcGFyc2VfeG1sX2Zvcl9maWxlbmFtZShnY29u c3Rwb2ludGVyIGRhdGEpCi0rewotKwlzdHJ1Y3QgdGVzdF9kYXRhICp0ID0gKHN0cnVjdCB0ZXN0 X2RhdGEgKikgZGF0YTsKLSsJY2hhciAqcGF0aCA9IE5VTEw7Ci0rCUdFcnJvciAqZXJyb3IgPSBO VUxMOwotKwljaGFyICpjb250ZW50cyA9IE5VTEw7Ci0rCWdzaXplIGxlbjsKLSsKLSsJcGF0aCA9 IGdfYnVpbGRfZmlsZW5hbWUoVE9QX1NSQ0RJUiwgInVuaXQiLCAic2RwLXhtbCIsCi0rCQkJCQl0 LT5maWxlbmFtZSwgTlVMTCk7Ci0rCWlmICghZ19maWxlX2dldF9jb250ZW50cyhwYXRoLCAmY29u dGVudHMsICZsZW4sICZlcnJvcikpIHsKLSsJCWdfd2FybmluZygiQ2FuJ3QgbG9hZCBmaWxlICcl cyc6ICVzIiwgcGF0aCwgZXJyb3ItPm1lc3NhZ2UpOwotKwkJZ19mcmVlKHBhdGgpOwotKwkJZ19l cnJvcl9mcmVlKGVycm9yKTsKLSsJCXRlc3Rlcl90ZXN0X2ZhaWxlZCgpOwotKwkJcmV0dXJuOwot Kwl9Ci0rCXBhcnNlX3htbChjb250ZW50cywgbGVuLCB0LT5leHBlY3RlZF9yZXN1bHQpOwotKwln X2ZyZWUoY29udGVudHMpOwotKwlnX2ZyZWUocGF0aCk7Ci0rfQotKwotKyNkZWZpbmUgREVGSU5F X1RFU1QoZm5hbWUsIHJlcykgewkJCQkJXAotKwlkYXRhLmV4cGVjdGVkX3Jlc3VsdCA9IHJlczsJ CQkJCVwKLSsJZGF0YS5maWxlbmFtZSA9IGZuYW1lOwkJCQkJCVwKLSsJdGVzdGVyX2FkZCgiLyIg Zm5hbWUsICZkYXRhLCBOVUxMLAkJCQlcCi0rCQkJcGFyc2VfeG1sX2Zvcl9maWxlbmFtZSwgTlVM TCk7CQkJXAotKwl9Ci0rCi0raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7Ci0r CXN0cnVjdCB0ZXN0X2RhdGEgZGF0YTsKLSsKLSsJdGVzdGVyX2luaXQoJmFyZ2MsICZhcmd2KTsK LSsKLSsJREVGSU5FX1RFU1QoIkJsdWV0b290aF9ISUQtc2RwX3JlY29yZC54bWwiLCBUUlVFKTsK LSsJREVGSU5FX1RFU1QoInF0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sIiwgVFJVRSk7Ci0rCi0r CXJldHVybiB0ZXN0ZXJfcnVuKCk7Ci0rfQotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIDk4NWU2NDNk NzhiMDlhZmM4MWQ2MDZiYzBhMDg1ODFmYzA1YjFiMTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBXZWQsIDEy IEF1ZyAyMDI2IDEwOjAxOjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi85XSBzZHAteG1sOiBG aXggY3Jhc2ggY2F1c2VkIGJ5IHR5cGUgY29uZnVzaW9uIHdoZW4gcGFyc2luZwotIGNyYWZ0ZWQg U0RQIFhNTAotCi1XaGVuIGVsZW1lbnRfZW5kKCkgcHJvY2Vzc2VzIDwvYXR0cmlidXRlPiwgaXQg ZnJlZXMgY3R4X2RhdGEtPnN0YWNrX2hlYWQKLWFuZCBjbGVhcnMgdGhlIHN0YWNrIGV2ZW4gaWYg cGFyc2luZyBpcyBzdGlsbCBuZXN0ZWQgaW5zaWRlIGEgcGFyZW50Ci1jb250YWluZXIuCi0KLUlm IGEgY3JhZnRlZCBTZXJ2aWNlUmVjb3JkIHBsYWNlcyBhIG5lc3RlZCA8YXR0cmlidXRlPiBpbnNp ZGUgPHNlcXVlbmNlPiwKLWEgbGF0ZXIgc2libGluZyBzY2FsYXIgZWxlbWVudCBzdWNoIGFzIDx1 aW50NjQ+IGNhbiBiZWNvbWUgdGhlIG5ldyBzdGFjawotaGVhZC4gV2hlbiB0aGUgY2xvc2luZyA8 L3NlcXVlbmNlPiBpcyB0aGVuIHByb2Nlc3NlZCwgY29tcHV0ZV9zZXFfc2l6ZSgpCi1pcyByZWFj aGVkIHdpdGhvdXQgZmlyc3QgdmFsaWRhdGluZyB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgYWN0 dWFsbHkKLWEgc2VxdWVuY2UuCi0KLXNkcF9kYXRhX3QudmFsIHN0b3JlcyBib3RoIHNjYWxhciBt ZW1iZXJzIHN1Y2ggYXMgdWludDY0IGFuZCB0aGUKLWRhdGFzZXEgcG9pbnRlciBpbiB0aGUgc2Ft ZSB1bmlvbi4gQXMgYSByZXN1bHQsIGF0dGFja2VyLWNvbnRyb2xsZWQKLXNjYWxhciBkYXRhIGNh biBiZSByZWludGVycHJldGVkIGFzIGEgbGlua2VkLWxpc3QgcG9pbnRlciBhbmQgdHJhdmVyc2Vk Ci11bnRpbCBibHVldG9vdGhkIGNyYXNoZXMuCi0KLVNlZSBodHRwczovL2dpdGh1Yi5jb20vYmx1 ZXovYmx1ZXovc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLTdtbXItZ3dxeC12YzM0Ci0KLVJlcG9y dGVkLWJ5OiBBaXNsZSBSZXNlYXJjaAotQ28tYXV0aG9yZWQtYnk6IEFpc2xlIFJlc2VhcmNoCi0t LS0KLSBzcmMvc2RwLXhtbC5jIHwgMjMgKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUg Y2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEv c3JjL3NkcC14bWwuYyBiL3NyYy9zZHAteG1sLmMKLWluZGV4IGU1YjMwZTg4NTA1Zi4uYzhmOWVk MDEzYjI5IDEwMDY0NAotLS0tIGEvc3JjL3NkcC14bWwuYwotKysrIGIvc3JjL3NkcC14bWwuYwot QEAgLTUyOSw3ICs1MjksOSBAQCBzdGF0aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFyc2VD b250ZXh0ICpjb250ZXh0LAotIAkJcmV0dXJuOwotIAotIAlpZiAoIXN0cmNtcChlbGVtZW50X25h bWUsICJhdHRyaWJ1dGUiKSkgewotLQkJaWYgKGN0eF9kYXRhLT5zdGFja19oZWFkICYmIGN0eF9k YXRhLT5zdGFja19oZWFkLT5kYXRhKSB7Ci0rCQkvKiBBdHRyaWJ1dGVzIGFyZSBleHBlY3RlZCBh dCB0b3AtbGV2ZWwgcmVjb3JkIHNjb3BlLiAqLwotKwkJaWYgKGN0eF9kYXRhLT5zdGFja19oZWFk ICYmIGN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhICYmCi0rCQkgICAgY3R4X2RhdGEtPnN0YWNr X2hlYWQtPm5leHQgPT0gTlVMTCkgewotIAkJCWludCByZXQgPSBzZHBfYXR0cl9hZGQoY3R4X2Rh dGEtPnJlY29yZCwgY3R4X2RhdGEtPmF0dHJfaWQsCi0gCQkJCQkJCWN0eF9kYXRhLT5zdGFja19o ZWFkLT5kYXRhKTsKLSAJCQlpZiAocmV0ID09IC0xKQotQEAgLTUzOSw2ICs1NDEsMTEgQEAgc3Rh dGljIHZvaWQgZWxlbWVudF9lbmQoR01hcmt1cFBhcnNlQ29udGV4dCAqY29udGV4dCwKLSAJCQlj dHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSA9IE5VTEw7Ci0gCQkJc2RwX3htbF9kYXRhX2ZyZWUo Y3R4X2RhdGEtPnN0YWNrX2hlYWQpOwotIAkJCWN0eF9kYXRhLT5zdGFja19oZWFkID0gTlVMTDsK LSsJCX0gZWxzZSBpZiAoY3R4X2RhdGEtPnN0YWNrX2hlYWQgJiYgY3R4X2RhdGEtPnN0YWNrX2hl YWQtPm5leHQpIHsKLSsJCQlnX3NldF9lcnJvcihlcnIsIEdfTUFSS1VQX0VSUk9SLAotKwkJCQkg ICAgR19NQVJLVVBfRVJST1JfSU5WQUxJRF9DT05URU5ULAotKwkJCQkgICAgIk5lc3RlZCA8YXR0 cmlidXRlPiBpcyBpbnZhbGlkIik7Ci0rCQkJcmV0dXJuOwotIAkJfSBlbHNlIHsKLSAJCQlEQkco Ik5vIGRhdGEgZm9yIGF0dHJpYnV0ZSAweCUwNHgiLCBjdHhfZGF0YS0+YXR0cl9pZCk7Ci0gCQl9 Ci1AQCAtNTU4LDYgKzU2NSwxMyBAQCBzdGF0aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFy c2VDb250ZXh0ICpjb250ZXh0LAotIAl9Ci0gCi0gCWlmICghc3RyY21wKGVsZW1lbnRfbmFtZSwg InNlcXVlbmNlIikpIHsKLSsJCWlmICghU0RQX0lTX1NFUShjdHhfZGF0YS0+c3RhY2tfaGVhZC0+ ZGF0YS0+ZHRkKSkgewotKwkJCWdfc2V0X2Vycm9yKGVyciwgR19NQVJLVVBfRVJST1IsCi0rCQkJ CSAgICBHX01BUktVUF9FUlJPUl9JTlZBTElEX0NPTlRFTlQsCi0rCQkJCSAgICAiTWlzbWF0Y2hl ZCA8L3NlcXVlbmNlPiBjbG9zZSIpOwotKwkJCXJldHVybjsKLSsJCX0KLSsKLSAJCWN0eF9kYXRh LT5zdGFja19oZWFkLT5kYXRhLT51bml0U2l6ZSA9IGNvbXB1dGVfc2VxX3NpemUoY3R4X2RhdGEt PnN0YWNrX2hlYWQtPmRhdGEpOwotIAotIAkJaWYgKGN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRh LT51bml0U2l6ZSA+IFVTSFJUX01BWCkgewotQEAgLTU3MCw2ICs1ODQsMTMgQEAgc3RhdGljIHZv aWQgZWxlbWVudF9lbmQoR01hcmt1cFBhcnNlQ29udGV4dCAqY29udGV4dCwKLSAJCQljdHhfZGF0 YS0+c3RhY2tfaGVhZC0+ZGF0YS0+dW5pdFNpemUgKz0gc2l6ZW9mKHVpbnQ4X3QpOwotIAkJfQot IAl9IGVsc2UgaWYgKCFzdHJjbXAoZWxlbWVudF9uYW1lLCAiYWx0ZXJuYXRlIikpIHsKLSsJCWlm ICghU0RQX0lTX0FMVChjdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YS0+ZHRkKSkgewotKwkJCWdf c2V0X2Vycm9yKGVyciwgR19NQVJLVVBfRVJST1IsCi0rCQkJCSAgICBHX01BUktVUF9FUlJPUl9J TlZBTElEX0NPTlRFTlQsCi0rCQkJCSAgICAiTWlzbWF0Y2hlZCA8L2FsdGVybmF0ZT4gY2xvc2Ui KTsKLSsJCQlyZXR1cm47Ci0rCQl9Ci0rCi0gCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YS0+ dW5pdFNpemUgPSBjb21wdXRlX3NlcV9zaXplKGN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhKTsK LSAKLSAJCWlmIChjdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YS0+dW5pdFNpemUgPiBVU0hSVF9N QVgpIHsKLS0tIAotMi41NS4wCi0KLQotRnJvbSBhOTI2ODNjZTgxYWI5MmNkN2RmZmQzMzUwMjg0 NTc5ZmJlMGQ0YzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmFzdGllbiBOb2Nl cmEgPGhhZGVzc0BoYWRlc3MubmV0PgotRGF0ZTogV2VkLCAxMiBBdWcgMjAyNiAxMDowMTozNCAr MDIwMAotU3ViamVjdDogW1BBVENIIDMvOV0gdW5pdDogQWRkIHRlc3QgZm9yIHNkcC14bWwgdHlw ZS1jb25mdXNpb24gYnVnCi0KLVNlZSBodHRwczovL2dpdGh1Yi5jb20vYmx1ZXovYmx1ZXovc2Vj dXJpdHkvYWR2aXNvcmllcy9HSFNBLTdtbXItZ3dxeC12YzM0Ci0KLUNvLWF1dGhvcmVkLWJ5OiBB aXNsZSBSZXNlYXJjaAotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMSArCi0gdW5pdC9zZHAteG1sL2NvbXB1dGUtc2VxLXNpemUtdHlwZS1j b25mdXNpb24ueG1sIHwgOSArKysrKysrKysKLSB1bml0L3Rlc3Qtc2RwLXhtbC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRp b25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHVuaXQvc2RwLXhtbC9jb21wdXRlLXNlcS1zaXpl LXR5cGUtY29uZnVzaW9uLnhtbAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmls ZS5hbQotaW5kZXggMWVjYjVlMWRkYWVjLi4xZDVmMDJiMGQzNjIgMTAwNjQ0Ci0tLS0gYS9NYWtl ZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC02NDgsNiArNjQ4LDcgQEAgdW5pdF90ZXN0 X3NkcF94bWxfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoR0xJQl9DRkxBR1MpIC1EVE9QX1NSQ0RJ Uj1cIiIkKHNyY2RpcikKLSB1bml0X3Rlc3Rfc2RwX3htbF9DUFBGTEFHUyA9IC1JJChzcmNkaXIp L2xpYgotIAotIEVYVFJBX0RJU1QgKz0gdW5pdC9zZHAteG1sL0JsdWV0b290aF9ISUQtc2RwX3Jl Y29yZC54bWwJCVwKLSsJdW5pdC9zZHAteG1sL2NvbXB1dGUtc2VxLXNpemUtdHlwZS1jb25mdXNp b24ueG1sCVwKLSAJdW5pdC9zZHAteG1sL3F0LVNlcmlhbFBvcnRTRFBSZWNvcmQueG1sCi0gCi0g dW5pdF90ZXN0cyArPSB1bml0L3Rlc3QtYXZkdHAKLWRpZmYgLS1naXQgYS91bml0L3NkcC14bWwv Y29tcHV0ZS1zZXEtc2l6ZS10eXBlLWNvbmZ1c2lvbi54bWwgYi91bml0L3NkcC14bWwvY29tcHV0 ZS1zZXEtc2l6ZS10eXBlLWNvbmZ1c2lvbi54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwMDAwMDAuLjQxZDY0NzhhZjI3NgotLS0tIC9kZXYvbnVsbAotKysrIGIvdW5pdC9z ZHAteG1sL2NvbXB1dGUtc2VxLXNpemUtdHlwZS1jb25mdXNpb24ueG1sCi1AQCAtMCwwICsxLDkg QEAKLSs8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KLSs8cmVjb3JkPgot KzxhdHRyaWJ1dGUgaWQ9IjB4MDAwMSI+Ci0rPHNlcXVlbmNlPgotKzxhdHRyaWJ1dGUgaWQ9IjB4 MDAwMiI+PHVpbnQ4IHZhbHVlPSIweDAxIi8+PC9hdHRyaWJ1dGU+Ci0rPHVpbnQ2NCB2YWx1ZT0i MHg0MTQxNDE0MTQxNDE0MTQxIi8+Ci0rPC9zZXF1ZW5jZT4KLSs8L2F0dHJpYnV0ZT4KLSs8L3Jl Y29yZD4KLWRpZmYgLS1naXQgYS91bml0L3Rlc3Qtc2RwLXhtbC5jIGIvdW5pdC90ZXN0LXNkcC14 bWwuYwotaW5kZXggOWFmMmY4Yzg3MGY2Li5jODI4OGNhMTBiOGIgMTAwNjQ0Ci0tLS0gYS91bml0 L3Rlc3Qtc2RwLXhtbC5jCi0rKysgYi91bml0L3Rlc3Qtc2RwLXhtbC5jCi1AQCAtODAsNiArODAs OCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAotIAlERUZJTkVfVEVTVCgi Qmx1ZXRvb3RoX0hJRC1zZHBfcmVjb3JkLnhtbCIsIFRSVUUpOwotIAlERUZJTkVfVEVTVCgicXQt U2VyaWFsUG9ydFNEUFJlY29yZC54bWwiLCBUUlVFKTsKLSsJLyogRnJvbSBodHRwczovL2dpdGh1 Yi5jb20vYmx1ZXovYmx1ZXovc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLTdtbXItZ3dxeC12YzM0 ICovCi0rCURFRklORV9URVNUKCJjb21wdXRlLXNlcS1zaXplLXR5cGUtY29uZnVzaW9uLnhtbCIs IEZBTFNFKTsKLSAKLSAJcmV0dXJuIHRlc3Rlcl9ydW4oKTsKLSB9Ci0tLSAKLTIuNTUuMAotCi0K LUZyb20gYWU2YzU0M2U4OTJmMWZjNTVkMTY1ODRjZTFlZjAyZTE5NjkzNTJhZiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4K LURhdGU6IFdlZCwgMTIgQXVnIDIwMjYgMTA6MDE6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA0 LzldIHNkcC14bWw6IEZpeCBtZW1vcnkgbGVhayB3aGVuIGFkZGluZyBkdXBsaWNhdGUgYXR0cmli dXRlcwotCi1XaGVuIHNkcF9hdHRyX2FkZCgpIGZhaWxzIGJlY2F1c2UgYW4gYXR0cmlidXRlIGlz IGR1cGxpY2F0ZWQsIGRvbid0Ci11bnNldCBpdHMgcG9pbnRlciBpbiB0aGUgcGFyc2luZyBjb250 ZXh0IGRhdGEuIEFzIHRoZSBhdHRyaWJ1dGUgd2Fzbid0Ci1hZGRlZCB0byB0aGUgcmVjb3JkLCB0 aGUgb3duZXJzaGlwIG9mIHRoZSBhdHRyaWJ1dGUgZGlkbid0IGdldCBwYXNzZWQKLXRvIHRoZSBy ZWNvcmQgZWl0aGVyLgotCi1Eb24ndCBzZXQgdGhlIHBvaW50ZXIgdG8gTlVMTCBzbyBpdCBnZXRz IGZyZWVkIHdoZW4gY2xlYW5pbmcgdXAgdGhlCi1jb250ZXh0LgotCi1GaXhlcyB0aG9zZSAyIEFT YW4gd2FybmluZ3M6Ci1EaXJlY3QgbGVhayBvZiA0OCBieXRlKHMpIGluIDEgb2JqZWN0KHMpIGFs bG9jYXRlZCBmcm9tOgotICAgICMwIDB4N2Y4OTZhOGVmMjRmIGluIGNhbGxvYyAoL2xpYjY0L2xp YmFzYW4uc28uOCsweGVmMjRmKSAoQnVpbGRJZDogNTM5NWVjNzRmNTRkOWVjN2JmOTdjMDY1ODNk ZDM5YTk2YzIzMDgyMikKLSAgICAjMSAweDU2MjA0MmI3NDdmMiBpbiBzZHBfZGF0YV9hbGxvY193 aXRoX2xlbmd0aCBsaWIvYmx1ZXRvb3RoL3NkcC5jOjM1MAotCi1JbmRpcmVjdCBsZWFrIG9mIDIg Ynl0ZShzKSBpbiAxIG9iamVjdChzKSBhbGxvY2F0ZWQgZnJvbToKLSAgICAjMCAweDdmODk2YThl ZjI0ZiBpbiBjYWxsb2MgKC9saWI2NC9saWJhc2FuLnNvLjgrMHhlZjI0ZikgKEJ1aWxkSWQ6IDUz OTVlYzc0ZjU0ZDllYzdiZjk3YzA2NTgzZGQzOWE5NmMyMzA4MjIpCi0gICAgIzEgMHg1NjIwNDJi NzRiZDcgaW4gc2RwX2RhdGFfYWxsb2Nfd2l0aF9sZW5ndGggbGliL2JsdWV0b290aC9zZHAuYzo0 MjUKLQotU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlei9ibHVlei9zZWN1cml0eS9hZHZpc29y aWVzL0dIU0EtNzV2Ni02cTQ0LTU3aGMKLQotUmVwb3J0ZWQtYnk6IEFpc2xlIFJlc2VhcmNoCi1D by1hdXRob3JlZC1ieTogQWlzbGUgUmVzZWFyY2gKLS0tLQotIHNyYy9zZHAteG1sLmMgfCA1ICsr KystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1k aWZmIC0tZ2l0IGEvc3JjL3NkcC14bWwuYyBiL3NyYy9zZHAteG1sLmMKLWluZGV4IGM4ZjllZDAx M2IyOS4uODE2ZDE5NjExZjhiIDEwMDY0NAotLS0tIGEvc3JjL3NkcC14bWwuYwotKysrIGIvc3Jj L3NkcC14bWwuYwotQEAgLTUzNyw4ICs1MzcsMTEgQEAgc3RhdGljIHZvaWQgZWxlbWVudF9lbmQo R01hcmt1cFBhcnNlQ29udGV4dCAqY29udGV4dCwKLSAJCQlpZiAocmV0ID09IC0xKQotIAkJCQlE QkcoIkNvdWxkIG5vdCBhZGQgYXR0cmlidXRlIDB4JTA0eCIsCi0gCQkJCQkJCWN0eF9kYXRhLT5h dHRyX2lkKTsKLSsJCQllbHNlIHsKLSsJCQkJLyogb3duZXJzaGlwIHRyYW5zZmVycmVkIHRvIHJl Y29yZCAqLwotKwkJCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSA9IE5VTEw7Ci0rCQkJfQot IAotLQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhID0gTlVMTDsKLSAJCQlzZHBfeG1sX2Rh dGFfZnJlZShjdHhfZGF0YS0+c3RhY2tfaGVhZCk7Ci0gCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQg PSBOVUxMOwotIAkJfSBlbHNlIGlmIChjdHhfZGF0YS0+c3RhY2tfaGVhZCAmJiBjdHhfZGF0YS0+ c3RhY2tfaGVhZC0+bmV4dCkgewotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIGFiOTFiNDUyODIyOTdl MDUyYjJlM2JlMjJjMTk4MjY1ZDE5YWMwOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAy MDI2IDEwOjAxOjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSB1bml0OiBBZGQgdGVzdCBm b3Igc2RwLXhtbCBkdXBsaWNhdGUgYXR0cmlidXRlIGJ1ZwotCi1TZWUgaHR0cHM6Ly9naXRodWIu Y29tL2JsdWV6L2JsdWV6L3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS03NXY2LTZxNDQtNTdoYwot Ci1Dby1hdXRob3JlZC1ieTogQWlzbGUgUmVzZWFyY2gKLS0tLQotIE1ha2VmaWxlLmFtICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDEgKwotIHVuaXQvc2RwLXhtbC9kdXBsaWNhdGUtYXR0cmli dXRlLnhtbCB8IDQgKysrKwotIHVuaXQvdGVzdC1zZHAteG1sLmMgICAgICAgICAgICAgICAgICB8 IDIgKysKLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEw MDY0NCB1bml0L3NkcC14bWwvZHVwbGljYXRlLWF0dHJpYnV0ZS54bWwKLQotZGlmZiAtLWdpdCBh L01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDFkNWYwMmIwZDM2Mi4uM2M2Y2Y5MmFi NDAzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNjQ5 LDYgKzY0OSw3IEBAIHVuaXRfdGVzdF9zZHBfeG1sX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvbGli Ci0gCi0gRVhUUkFfRElTVCArPSB1bml0L3NkcC14bWwvQmx1ZXRvb3RoX0hJRC1zZHBfcmVjb3Jk LnhtbAkJXAotIAl1bml0L3NkcC14bWwvY29tcHV0ZS1zZXEtc2l6ZS10eXBlLWNvbmZ1c2lvbi54 bWwJXAotKwl1bml0L3NkcC14bWwvZHVwbGljYXRlLWF0dHJpYnV0ZS54bWwJCQlcCi0gCXVuaXQv c2RwLXhtbC9xdC1TZXJpYWxQb3J0U0RQUmVjb3JkLnhtbAotIAotIHVuaXRfdGVzdHMgKz0gdW5p dC90ZXN0LWF2ZHRwCi1kaWZmIC0tZ2l0IGEvdW5pdC9zZHAteG1sL2R1cGxpY2F0ZS1hdHRyaWJ1 dGUueG1sIGIvdW5pdC9zZHAteG1sL2R1cGxpY2F0ZS1hdHRyaWJ1dGUueG1sCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMDAwLi5hMzBiYzU5ZDk0ZmYKLS0tLSAvZGV2L251 bGwKLSsrKyBiL3VuaXQvc2RwLXhtbC9kdXBsaWNhdGUtYXR0cmlidXRlLnhtbAotQEAgLTAsMCAr MSw0IEBACi0rPHJlY29yZD4KLSs8YXR0cmlidXRlIGlkPSIweDAwMDEiPjx0ZXh0IHZhbHVlPSJB Ii8+PC9hdHRyaWJ1dGU+Ci0rPGF0dHJpYnV0ZSBpZD0iMHgwMDAxIj48dGV4dCB2YWx1ZT0iQiIv PjwvYXR0cmlidXRlPgotKzwvcmVjb3JkPgotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1zZHAteG1s LmMgYi91bml0L3Rlc3Qtc2RwLXhtbC5jCi1pbmRleCBjODI4OGNhMTBiOGIuLjliZjM1MjM1NDIz YiAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1zZHAteG1sLmMKLSsrKyBiL3VuaXQvdGVzdC1zZHAt eG1sLmMKLUBAIC04Miw2ICs4Miw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p Ci0gCURFRklORV9URVNUKCJxdC1TZXJpYWxQb3J0U0RQUmVjb3JkLnhtbCIsIFRSVUUpOwotIAkv KiBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlei9ibHVlei9zZWN1cml0eS9hZHZpc29yaWVz L0dIU0EtN21tci1nd3F4LXZjMzQgKi8KLSAJREVGSU5FX1RFU1QoImNvbXB1dGUtc2VxLXNpemUt dHlwZS1jb25mdXNpb24ueG1sIiwgRkFMU0UpOwotKwkvKiBGcm9tIGh0dHBzOi8vZ2l0aHViLmNv bS9ibHVlei9ibHVlei9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtNzV2Ni02cTQ0LTU3aGMgKi8K LSsJREVGSU5FX1RFU1QoImR1cGxpY2F0ZS1hdHRyaWJ1dGUueG1sIiwgVFJVRSk7Ci0gCi0gCXJl dHVybiB0ZXN0ZXJfcnVuKCk7Ci0gfQotLS0gCi0yLjU1LjAKLQotCi1Gcm9tIDMwOGUzNTM2Njg4 YzAwMTFlMTFiMmQ5YmZkYzk0Y2IzOGU1MmMwNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBXZWQsIDEyIEF1 ZyAyMDI2IDEwOjAxOjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNi85XSBzZHAteG1sOiBPcHRp bWlzZSBwYXJzaW5nIGxhcmdlIHNlcXVlbmNlcwotCi1TRFAgc2VxdWVuY2VzIGFyZSBzdG9yZWQg YXMgc2luZ2xlLWxpbmtlZCBsaXN0cywgc28gYXBwZW5kaW5nIG1lbWJlcnMKLXRvIGEgc2VxdWVu Y2UgcmVxdWlyZXMgZmluZGluZyB0aGUgdGFpbCBvZiB0aGUgbGlzdCBiZWZvcmUgdGhlCi1pbnNl cnRpb24uCi0KLUZpbmRpbmcgdGhlIHRhaWwgb2YgdGhlIGxpc3QgYWx3YXlzIHN0YXJ0cyBhdCB0 aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0LAotc28gdGFrZXMgbG9uZ2VyIGFuZCBsb25nZXIgYXMg dGhlIGxpc3QgZ3Jvd3MgYmlnZ2VyLgotCi1LZWVwIHRyYWNrIG9mIHRoZSB0YWlsIHRvIGF2b2lk IHRoYXQgcHJvYmxlbS4gVGhpcyBjdXRzIGRvd24gdGhlCi1zZXF1ZW5jZV9vbl9zcXVhcmVkKCkg dGVzdCBmcm9tIGFyb3VuZCAzIHRvIDQgc2Vjb25kcyB0byBsZXNzIHRoYW4KLTAuMSBzZWNvbmRz LgotLS0tCi0gc3JjL3NkcC14bWwuYyB8IDE4ICsrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBj aGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv c3JjL3NkcC14bWwuYyBiL3NyYy9zZHAteG1sLmMKLWluZGV4IDgxNmQxOTYxMWY4Yi4uZmI4NDE3 YjNmYzYwIDEwMDY0NAotLS0tIGEvc3JjL3NkcC14bWwuYwotKysrIGIvc3JjL3NkcC14bWwuYwot QEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IHNkcF94bWxfZGF0YSB7Ci0gCWNoYXIgdHlwZTsJCQkv KiAwID0gVGV4dCBvciBIZXhhZGVjaW1hbCAqLwotIAljaGFyICpuYW1lOwkJCS8qIE5hbWUsIG9w dGlvbmFsIGluIHRoZSBkdGQgKi8KLSAJLyogVE9ETzogV2hhdCBpcyBpdCB1c2VkIGZvcj8gKi8K LSsJc2RwX2RhdGFfdCAqdGFpbDsJCS8qIFRhaWwgZm9yIE8oMSkgZGF0YXNlcSBhcHBlbmQgKi8K LSB9OwotIAotIHN0cnVjdCBjb250ZXh0X2RhdGEgewotQEAgLTYwOSw2ICs2MTAsNyBAQCBzdGF0 aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LAotIAotIAlp ZiAoY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQgJiYgY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRh dGEgJiYKLSAJCQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0LT5kYXRhKSB7Ci0rCQlzZHBf ZGF0YV90ICp0YWlsOwotIAkJc3dpdGNoIChjdHhfZGF0YS0+c3RhY2tfaGVhZC0+bmV4dC0+ZGF0 YS0+ZHRkKSB7Ci0gCQljYXNlIFNEUF9TRVE4OgotIAkJY2FzZSBTRFBfU0VRMTY6Ci1AQCAtNjE2 LDEwICs2MTgsMjAgQEAgc3RhdGljIHZvaWQgZWxlbWVudF9lbmQoR01hcmt1cFBhcnNlQ29udGV4 dCAqY29udGV4dCwKLSAJCWNhc2UgU0RQX0FMVDg6Ci0gCQljYXNlIFNEUF9BTFQxNjoKLSAJCWNh c2UgU0RQX0FMVDMyOgotLQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0LT5kYXRhLT52YWwu ZGF0YXNlcSA9Ci0tCQkJCXNkcF9zZXFfYXBwZW5kKGN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0 LT5kYXRhLT52YWwuZGF0YXNlcSwKLS0JCQkJCQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRh KTsKLSsJCQl0YWlsID0gY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQtPmRhdGEtPnZhbC5kYXRh c2VxID8KLSsJCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQtPnRhaWwgOiBOVUxMOwotKwkJ CWlmICh0YWlsKSB7Ci0rCQkJCXNkcF9zZXFfYXBwZW5kKHRhaWwsCi0rCQkJCQljdHhfZGF0YS0+ c3RhY2tfaGVhZC0+ZGF0YSk7Ci0rCQkJfSBlbHNlIHsKLSsJCQkJY3R4X2RhdGEtPnN0YWNrX2hl YWQtPm5leHQtPmRhdGEtPnZhbC5kYXRhc2VxID0KLSsJCQkJCXNkcF9zZXFfYXBwZW5kKE5VTEws Ci0rCQkJCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEpOwotKwkJCX0KLSsJCQljdHhfZGF0 YS0+c3RhY2tfaGVhZC0+bmV4dC0+dGFpbCA9Ci0rCQkJCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ ZGF0YTsKLSAJCQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSA9IE5VTEw7Ci0rCQkJY3R4X2Rh dGEtPnN0YWNrX2hlYWQtPnRhaWwgPSBOVUxMOwotIAkJCWJyZWFrOwotIAkJfQotIAotLS0gCi0y LjU1LjAKLQotCi1Gcm9tIDk1ZmE1NzM1NTYyZTlmMDIwYzE3NDE5OWYxOTAxNmNiYjFjMDlmZjIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhh ZGVzcy5uZXQ+Ci1EYXRlOiBXZWQsIDEyIEF1ZyAyMDI2IDEwOjAxOjM4ICswMjAwCi1TdWJqZWN0 OiBbUEFUQ0ggNy85XSB1bml0OiBBZGQgdGVzdCBmb3Igc2xvdyBlbGVtZW50X2VuZCgpIGFwcGVu ZAotCi1UaGlzIHVzZXMgNDBrIGl0ZXJhdGlvbnMgYXMgdGhpcyB0YWtlcyBhIHZpc2libGUgYW1v dW50IG9mIHRpbWUgb24gYQotcHJldHR5IGZhc3QgZGVza3RvcCBtYWNoaW5lICgzLTQgc2VjcyBv biBhbiBpOSA5OTAwaykuCi0KLVNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JsdWV6L2JsdWV6L3Nl Y3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS00cDU3LW1yY3YtcjJqYwotLS0tCi0gdW5pdC90ZXN0LXNk cC14bWwuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwotIDEgZmlsZSBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS91bml0 L3Rlc3Qtc2RwLXhtbC5jIGIvdW5pdC90ZXN0LXNkcC14bWwuYwotaW5kZXggOWJmMzUyMzU0MjNi Li41YWE5ODMzNGVhYmMgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3Qtc2RwLXhtbC5jCi0rKysgYi91 bml0L3Rlc3Qtc2RwLXhtbC5jCi1AQCAtNjUsNiArNjUsNDcgQEAgc3RhdGljIHZvaWQgcGFyc2Vf eG1sX2Zvcl9maWxlbmFtZShnY29uc3Rwb2ludGVyIGRhdGEpCi0gCWdfZnJlZShwYXRoKTsKLSB9 Ci0gCi0rI2RlZmluZSBYTUxfU1RBUlQJCQkJCQlcCi0rCSI8P3htbCB2ZXJzaW9uPVwiMS4wXCIg ZW5jb2Rpbmc9XCJVVEYtOFwiID8+XG4iCQlcCi0rCSI8cmVjb3JkPlxuIgkJCQkJCVwKLSsJIgk8 YXR0cmlidXRlIGlkPVwiMHgwMDA0XCI+XG4iCQkJXAotKwkiCQk8c2VxdWVuY2U+IgotKwotKyNk ZWZpbmUgWE1MX1ZBTFVFCQkJCQkJXAotKwkiCQkJPHVpbnQ4IHZhbHVlPVwiMHgwMVwiIC8+XG4i Ci0rCi0rI2RlZmluZSBYTUxfRU5ECQkJCQkJCVwKLSsJIgkJPC9zZXF1ZW5jZT5cbiIJCQkJXAot KwkiCTwvYXR0cmlidXRlPlxuIgkJCQkJXAotKwkiPC9yZWNvcmQ+IgotKwotK3N0YXRpYyB2b2lk IHNlcXVlbmNlX29uX3NxdWFyZWQoZ2NvbnN0cG9pbnRlciBkYXRhKQotK3sKLSsJc3RydWN0IHRl c3RfZGF0YSAqdCA9IChzdHJ1Y3QgdGVzdF9kYXRhICopIGRhdGE7Ci0rCXBhcnNlX3htbCh0LT5z LT5zdHIsIHQtPnMtPmxlbiwgVFJVRSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIHNlcXVlbmNlX29u X3NxdWFyZWRfc2V0dXAoZ2NvbnN0cG9pbnRlciBkYXRhKQotK3sKLSsJc3RydWN0IHRlc3RfZGF0 YSAqdCA9IChzdHJ1Y3QgdGVzdF9kYXRhICopIGRhdGE7Ci0rCWd1aW50IGk7Ci0rCi0rCXQtPnMg PSBnX3N0cmluZ19uZXcoWE1MX1NUQVJUKTsKLSsJZm9yIChpID0gMDsgaSA8IDQwMDAwOyBpKysp Ci0rCQl0LT5zID0gZ19zdHJpbmdfYXBwZW5kKHQtPnMsIFhNTF9WQUxVRSk7Ci0rCXQtPnMgPSBn X3N0cmluZ19hcHBlbmQodC0+cywgWE1MX0VORCk7Ci0rCi0rCXRlc3Rlcl9zZXR1cF9jb21wbGV0 ZSgpOwotK30KLSsKLStzdGF0aWMgdm9pZCBzZXF1ZW5jZV9vbl9zcXVhcmVkX3RlYXJkb3duKGdj b25zdHBvaW50ZXIgZGF0YSkKLSt7Ci0rCXN0cnVjdCB0ZXN0X2RhdGEgKnQgPSAoc3RydWN0IHRl c3RfZGF0YSAqKSBkYXRhOwotKwotKwlnX3N0cmluZ19mcmVlKHQtPnMsIFRSVUUpOwotKwl0ZXN0 ZXJfdGVhcmRvd25fY29tcGxldGUoKTsKLSt9Ci0rCi0gI2RlZmluZSBERUZJTkVfVEVTVChmbmFt ZSwgcmVzKSB7CQkJCQlcCi0gCWRhdGEuZXhwZWN0ZWRfcmVzdWx0ID0gcmVzOwkJCQkJXAotIAlk YXRhLmZpbGVuYW1lID0gZm5hbWU7CQkJCQkJXAotQEAgLTg1LDUgKzEyNiwxMCBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkvKiBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9i bHVlei9ibHVlei9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtNzV2Ni02cTQ0LTU3aGMgKi8KLSAJ REVGSU5FX1RFU1QoImR1cGxpY2F0ZS1hdHRyaWJ1dGUueG1sIiwgVFJVRSk7Ci0gCi0rCXRlc3Rl cl9hZGQoIi9zZXF1ZW5jZV9vbl9zcXVhcmVkIiwgJmRhdGEsCi0rCQkgICBzZXF1ZW5jZV9vbl9z cXVhcmVkX3NldHVwLAotKwkJICAgc2VxdWVuY2Vfb25fc3F1YXJlZCwKLSsJCSAgIHNlcXVlbmNl X29uX3NxdWFyZWRfdGVhcmRvd24pOwotKwotIAlyZXR1cm4gdGVzdGVyX3J1bigpOwotIH0KLS0t IAotMi41NS4wCi0KLQotRnJvbSBlOWNhYTdkM2UyYmY3NDYyMDMzNDhlNTA2NTRlNzc1OGZjODQy ODVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmFzdGllbiBOb2NlcmEgPGhhZGVz c0BoYWRlc3MubmV0PgotRGF0ZTogV2VkLCAxMiBBdWcgMjAyNiAxMDowMTozOSArMDIwMAotU3Vi amVjdDogW1BBVENIIDgvOV0gc2RwLXhtbDogRml4IHN0YWNrIG92ZXJmbG93IHdoZW4gY29udmVy dGluZyBsYXJnZQotIHNlcXVlbmNlcyB0byBYTUwKLQotRG9uJ3QgbWFrZSBjb252ZXJ0X3Jhd19k YXRhX3RvX3htbCgpIGNhbGwgaXRzZWxmIHJlY3Vyc2l2ZWx5IFggdGltZXMKLWlmIHRoZXJlIGFy ZSBYIGVsZW1lbnRzIGluIGEgc2VxdWVuY2UuCi0KLUFkZHJlc3NTYW5pdGl6ZXI6REVBRExZU0lH TkFMCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotPT0xNjg0NTE4PT1FUlJPUjogQWRkcmVzc1Nhbml0aXplcjogc3RhY2st b3ZlcmZsb3cgb24gYWRkcmVzcyAweDdmZmY3ZmI0MGQ5OCAocGMgMHg3ZmJlMWVlOTVjMmIgYnAg MHg3ZmZmN2ZiNDE2MTAgc3AgMHg3ZmZmN2ZiNDBkNzAgVDApCi0gICAgIzAgMHg3ZmJlMWVlOTVj MmIgaW4gcHJpbnRmX2NvbW1vbih2b2lkKiwgY2hhciBjb25zdCosIF9fdmFfbGlzdF90YWcqKSAo L2xpYjY0L2xpYmFzYW4uc28uOCsweDk1YzJiKSAoQnVpbGRJZDogNTM5NWVjNzRmNTRkOWVjN2Jm OTdjMDY1ODNkZDM5YTk2YzIzMDgyMikKLSAgICAjMSAweDdmYmUxZWViNzJkNiBpbiB2c25wcmlu dGYgKC9saWI2NC9saWJhc2FuLnNvLjgrMHhiNzJkNikgKEJ1aWxkSWQ6IDUzOTVlYzc0ZjU0ZDll YzdiZjk3YzA2NTgzZGQzOWE5NmMyMzA4MjIpCi0gICAgIzIgMHg3ZmJlMWVlYjk0ZjQgaW4gc25w cmludGYgKC9saWI2NC9saWJhc2FuLnNvLjgrMHhiOTRmNCkgKEJ1aWxkSWQ6IDUzOTVlYzc0ZjU0 ZDllYzdiZjk3YzA2NTgzZGQzOWE5NmMyMzA4MjIpCi0gICAgIzMgMHgwMDAwMDA0MDFmYzIgaW4g Y29udmVydF9yYXdfZGF0YV90b194bWwgLi4vLi4vLi4vLi4vUHJvamVjdHMvamhidWlsZC9ibHVl ei9zcmMvc2RwLXhtbC5jOjcwOQotICAgICM0IDB4MDAwMDAwNDAxYzRmIGluIGNvbnZlcnRfcmF3 X2RhdGFfdG9feG1sIC4uLy4uLy4uLy4uL1Byb2plY3RzL2poYnVpbGQvYmx1ZXovc3JjL3NkcC14 bWwuYzo5OTQKLVsuLi5dCi0gICAgIzI0NiAweDAwMDAwMDQwMWM0ZiBpbiBjb252ZXJ0X3Jhd19k YXRhX3RvX3htbCAuLi8uLi8uLi8uLi9Qcm9qZWN0cy9qaGJ1aWxkL2JsdWV6L3NyYy9zZHAteG1s LmM6OTk0Ci0KLVNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IHN0YWNrLW92ZXJmbG93IC4uLy4u Ly4uLy4uL1Byb2plY3RzL2poYnVpbGQvYmx1ZXovc3JjL3NkcC14bWwuYzo3MDkgaW4gY29udmVy dF9yYXdfZGF0YV90b194bWwKLS0tLQotIHNyYy9zZHAteG1sLmMgfCAxNiArKysrKysrKysrKysr LS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9zcmMvc2RwLXhtbC5jIGIvc3JjL3NkcC14bWwuYwotaW5kZXggZmI4NDE3 YjNmYzYwLi41YjQ0OGZlODM0MTAgMTAwNjQ0Ci0tLS0gYS9zcmMvc2RwLXhtbC5jCi0rKysgYi9z cmMvc2RwLXhtbC5jCi1AQCAtNjgyLDkgKzY4MiwxMiBAQCBzZHBfcmVjb3JkX3QgKnNkcF94bWxf cGFyc2VfcmVjb3JkKGNvbnN0IGNoYXIgKmRhdGEsIGludCBzaXplKQotIAlyZXR1cm4gcmVjb3Jk OwotIH0KLSAKLS0KLSBzdGF0aWMgdm9pZCBjb252ZXJ0X3Jhd19kYXRhX3RvX3htbChzZHBfZGF0 YV90ICp2YWx1ZSwgaW50IGluZGVudF9sZXZlbCwKLS0JCXZvaWQgKmRhdGEsIHZvaWQgKCphcHBl bmRlcikodm9pZCAqLCBjb25zdCBjaGFyICopKQotKwkJdm9pZCAqZGF0YSwgdm9pZCAoKmFwcGVu ZGVyKSh2b2lkICosIGNvbnN0IGNoYXIgKikpOwotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBjb252 ZXJ0X3Jhd19kYXRhX3RvX3htbF9lbGVtZW50KHNkcF9kYXRhX3QgKnZhbHVlLAotKwkJaW50IGlu ZGVudF9sZXZlbCx2b2lkICpkYXRhLAotKwkJdm9pZCAoKmFwcGVuZGVyKSh2b2lkICosIGNvbnN0 IGNoYXIgKikpCi0gewotIAlpbnQgaSwgaGV4OwotIAljaGFyIGJ1ZltTVFJCVUZTSVpFXTsKLUBA IC0xMDAyLDggKzEwMDUsMTUgQEAgc3RhdGljIHZvaWQgY29udmVydF9yYXdfZGF0YV90b194bWwo c2RwX2RhdGFfdCAqdmFsdWUsIGludCBpbmRlbnRfbGV2ZWwsCi0gCi0gCQlicmVhazsKLSAJfQot K30KLSAKLS0JY29udmVydF9yYXdfZGF0YV90b194bWwodmFsdWUtPm5leHQsIGluZGVudF9sZXZl bCwgZGF0YSwgYXBwZW5kZXIpOwotK3N0YXRpYyB2b2lkIGNvbnZlcnRfcmF3X2RhdGFfdG9feG1s KHNkcF9kYXRhX3QgKnZhbHVlLCBpbnQgaW5kZW50X2xldmVsLAotKwkJdm9pZCAqZGF0YSwgdm9p ZCAoKmFwcGVuZGVyKSh2b2lkICosIGNvbnN0IGNoYXIgKikpCi0rewotKwlmb3IgKDsgdmFsdWUg IT0gTlVMTDsgdmFsdWUgPSB2YWx1ZS0+bmV4dCkgewotKwkJY29udmVydF9yYXdfZGF0YV90b194 bWxfZWxlbWVudCh2YWx1ZSwgaW5kZW50X2xldmVsLAotKwkJCWRhdGEsIGFwcGVuZGVyKTsKLSsJ fQotIH0KLSAKLSBzdHJ1Y3QgY29udmVyc2lvbl9kYXRhIHsKLS0tIAotMi41NS4wCi0KLQotRnJv bSBkMDFiYTc4YjFkOGEzMjk0ZjgyYWUwMDM0NzljOTIyZTE0OTllZDQ5IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogQmFzdGllbiBOb2NlcmEgPGhhZGVzc0BoYWRlc3MubmV0PgotRGF0 ZTogV2VkLCAxMiBBdWcgMjAyNiAxMDowMTo0MCArMDIwMAotU3ViamVjdDogW1BBVENIIDkvOV0g dW5pdDogQWRkIGNvbnZlcnRfc2RwX3JlY29yZF90b194bWwoKSB0byBTRFAgWE1MIHRlc3RpbmcK LQotVGhpcyB0ZXN0cyBTRFAgYmluYXJ5IHRvIFhNTCBjb252ZXJzaW9uLCBpbmNsdWRpbmcgd2hl dGhlciBhIGZpeCBmb3IKLWEgc3RhY2sgb3ZlcmZsb3cgd2hlbiBkZWFsaW5nIHdpdGggbGFyZ2Ug c2VxdWVuY2VzLCBsaWtlIGluCi1zZXF1ZW5jZV9vbl9zcXVhcmVkKCksIHdvcmtzIGNvcnJlY3Rs eS4KLS0tLQotIHVuaXQvdGVzdC1zZHAteG1sLmMgfCAxMCArKysrKysrKystCi0gMSBmaWxlIGNo YW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdW5p dC90ZXN0LXNkcC14bWwuYyBiL3VuaXQvdGVzdC1zZHAteG1sLmMKLWluZGV4IDVhYTk4MzM0ZWFi Yy4uYjMzODc4OGFhMjk1IDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LXNkcC14bWwuYwotKysrIGIv dW5pdC90ZXN0LXNkcC14bWwuYwotQEAgLTI4LDYgKzI4LDEyIEBAIHN0cnVjdCB0ZXN0X2RhdGEg ewotIAlnYm9vbGVhbiBleHBlY3RlZF9yZXN1bHQ7Ci0gfTsKLSAKLStzdGF0aWMgdm9pZCBkb3By aW50Zih2b2lkICpkYXRhLCBjb25zdCBjaGFyICpzdHIpCi0rewotKwkvKiBEbyBub3RoaW5nIGZv ciBvdXIgdGVzdHMgKi8KLSsJLyogcHJpbnRmKCIlcyIsIHN0cik7ICovCi0rfQotKwotIHN0YXRp YyB2b2lkIHBhcnNlX3htbChnY29uc3Rwb2ludGVyIGRhdGEsIGdzaXplIGxlbiwgZ2Jvb2xlYW4g ZXhwZWN0ZWRfcmVzdWx0KQotIHsKLSAJc2RwX3JlY29yZF90ICpyZWMgPSBOVUxMOwotQEAgLTM5 LDggKzQ1LDEwIEBAIHN0YXRpYyB2b2lkIHBhcnNlX3htbChnY29uc3Rwb2ludGVyIGRhdGEsIGdz aXplIGxlbiwgZ2Jvb2xlYW4gZXhwZWN0ZWRfcmVzdWx0KQotIAkJdGVzdGVyX3Rlc3RfcGFzc2Vk KCk7Ci0gCWVsc2UKLSAJCXRlc3Rlcl90ZXN0X2ZhaWxlZCgpOwotLQlpZiAocmVjKQotKwlpZiAo cmVjKSB7Ci0rCQljb252ZXJ0X3NkcF9yZWNvcmRfdG9feG1sKHJlYywgMCwgZG9wcmludGYpOwot IAkJc2RwX3JlY29yZF9mcmVlKHJlYyk7Ci0rCX0KLSB9Ci0gCi0gc3RhdGljIHZvaWQgcGFyc2Vf eG1sX2Zvcl9maWxlbmFtZShnY29uc3Rwb2ludGVyIGRhdGEpCi0tLSAKLTIuNTUuMAotCi1Gcm9t IGIyMWVkYzQ5YjJjMzY3NWM3YWVhMTkyODZmZGIyYjg4N2YyOWMwZmYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBp bnRlbC5jb20+Ci1EYXRlOiBGcmksIDE0IEF1ZyAyMDI2IDEzOjMxOjA3IC0wNDAwCi1TdWJqZWN0 OiBbUEFUQ0ggMS80XSBzZHAteG1sOiBVc2UgYSBxdWV1ZSB0byBjb2xsZWN0IHNlcXVlbmNlIG1l bWJlcnMKLQotQXBwZW5kaW5nIGEgbWVtYmVyIHRvIGEgc2VxdWVuY2Ugd2l0aCBzZHBfc2VxX2Fw cGVuZCgpIHdhbGtzIHRoZQotc2luZ2xlLWxpbmtlZCBsaXN0IHRvIGZpbmQgaXRzIHRhaWwsIHNv IGJ1aWxkaW5nIGEgc2VxdWVuY2UgaXMgTyhuXjIpLgotCi1UaGlzIHdhcyBwcmV2aW91c2x5IHdv cmtlZCBhcm91bmQgYnkgY2FjaGluZyB0aGUgdGFpbCBvZiB0aGUgc2VxdWVuY2UgaW4KLXN0cnVj dCBzZHBfeG1sX2RhdGEsIHdoaWNoIHJlcXVpcmVkIHRoZSBjYWxsZXIgdG8gcGljayBiZXR3ZWVu IGFwcGVuZGluZwotdG8gdGhlIGNhY2hlZCB0YWlsIGFuZCBpbml0aWFsaXNpbmcgdmFsLmRhdGFz ZXEsIGFuZCB0byBrZWVwIHRoZSBjYWNoZSBpbgotc3luYyBvbiBldmVyeSBhcHBlbmQuCi0KLUNv bGxlY3QgdGhlIG1lbWJlcnMgaW4gYSBzdHJ1Y3QgcXVldWUgaW5zdGVhZCwgd2hpY2ggdHJhY2tz IGl0cyBvd24gdGFpbCwKLWFuZCBsaW5rIHRoZW0gaW50byB2YWwuZGF0YXNlcSBvbmNlIHRoZSBl bGVtZW50IGlzIGNsb3NlZC4gQXBwZW5kaW5nIGlzIGEKLXBsYWluIHF1ZXVlX3B1c2hfdGFpbCgp LCBhbmQgdGhlIHF1ZXVlIGlzIGRlc3Ryb3llZCBhbG9uZyB3aXRoIHRoZSByZXN0Ci1vZiB0aGUg ZWxlbWVudCBzbyBtZW1iZXJzIHRoYXQgd2VyZSBuZXZlciBsaW5rZWQsIHN1Y2ggYXMgb24gbWFs Zm9ybWVkCi1pbnB1dCwgYXJlIHN0aWxsIGZyZWVkLgotCi1UaGUgc2VxdWVuY2Vfb25fc3F1YXJl ZCgpIHRlc3Qgc3RheXMgYXQgbGVzcyB0aGFuIDAuMSBzZWNvbmRzLgotCi1Bc3Npc3RlZC1ieTog Q2xhdWRlOmNsYXVkZS1vcHVzLTUKLS0tLQotIE1ha2VmaWxlLnRvb2xzIHwgIDQgKysrLQotIHNy Yy9zZHAteG1sLmMgIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE4IGRlbGV0 aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudG9vbHMgYi9NYWtlZmlsZS50b29scwot aW5kZXggMWE0ZTU2NjA4MTNiLi5iM2VmNGFlMWMzZGYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS50 b29scwotKysrIGIvTWFrZWZpbGUudG9vbHMKLUBAIC00MzcsNyArNDM3LDkgQEAgdG9vbHNfaGNp Y29uZmlnX0xEQUREID0gbGliL2xpYmJsdWV0b290aC1pbnRlcm5hbC5sYQotIHRvb2xzX2hjaXRv b2xfU09VUkNFUyA9IHRvb2xzL2hjaXRvb2wuYyBzcmMvb3VpLmggc3JjL291aS5jCi0gdG9vbHNf aGNpdG9vbF9MREFERCA9IGxpYi9saWJibHVldG9vdGgtaW50ZXJuYWwubGEgJChVREVWX0xJQlMp Ci0gCi0tdG9vbHNfc2RwdG9vbF9TT1VSQ0VTID0gdG9vbHMvc2RwdG9vbC5jIHNyYy9zZHAteG1s Lmggc3JjL3NkcC14bWwuYwotK3Rvb2xzX3NkcHRvb2xfU09VUkNFUyA9IHRvb2xzL3NkcHRvb2wu YyBzcmMvc2RwLXhtbC5oIHNyYy9zZHAteG1sLmMgXAotKwkJCXNyYy9zaGFyZWQvcXVldWUuaCBz cmMvc2hhcmVkL3F1ZXVlLmMgXAotKwkJCXNyYy9zaGFyZWQvdXRpbC5oIHNyYy9zaGFyZWQvdXRp bC5jCi0gdG9vbHNfc2RwdG9vbF9MREFERCA9IGxpYi9saWJibHVldG9vdGgtaW50ZXJuYWwubGEg JChHTElCX0xJQlMpCi0gCi0gdG9vbHNfY2lwdG9vbF9MREFERCA9IGxpYi9saWJibHVldG9vdGgt aW50ZXJuYWwubGEKLWRpZmYgLS1naXQgYS9zcmMvc2RwLXhtbC5jIGIvc3JjL3NkcC14bWwuYwot aW5kZXggNWI0NDhmZTgzNDEwLi5iYWQ5ZTI4OTM0NGYgMTAwNjQ0Ci0tLS0gYS9zcmMvc2RwLXht bC5jCi0rKysgYi9zcmMvc2RwLXhtbC5jCi1AQCAtMjUsNiArMjUsOCBAQAotICNpbmNsdWRlICJi bHVldG9vdGgvc2RwLmgiCi0gI2luY2x1ZGUgImJsdWV0b290aC9zZHBfbGliLmgiCi0gCi0rI2lu Y2x1ZGUgInNoYXJlZC9xdWV1ZS5oIgotKwotICNpbmNsdWRlICJzZHAteG1sLmgiCi0gCi0gI2Rl ZmluZSBEQkcoLi4uKSAodm9pZCkoMCkKLUBAIC00NCw3ICs0Niw3IEBAIHN0cnVjdCBzZHBfeG1s X2RhdGEgewotIAljaGFyIHR5cGU7CQkJLyogMCA9IFRleHQgb3IgSGV4YWRlY2ltYWwgKi8KLSAJ Y2hhciAqbmFtZTsJCQkvKiBOYW1lLCBvcHRpb25hbCBpbiB0aGUgZHRkICovCi0gCS8qIFRPRE86 IFdoYXQgaXMgaXQgdXNlZCBmb3I/ICovCi0tCXNkcF9kYXRhX3QgKnRhaWw7CQkvKiBUYWlsIGZv ciBPKDEpIGRhdGFzZXEgYXBwZW5kICovCi0rCXN0cnVjdCBxdWV1ZSAqc2VxOwkJLyogTWVtYmVy cyBvZiBhIGRhdGFzZXEsIGlmIGFueSAqLwotIH07Ci0gCi0gc3RydWN0IGNvbnRleHRfZGF0YSB7 Ci1AQCAtNTEwLDggKzUxMiwzNyBAQCBzdGF0aWMgdm9pZCBlbGVtZW50X3N0YXJ0KEdNYXJrdXBQ YXJzZUNvbnRleHQgKmNvbnRleHQsCi0gCX0KLSB9Ci0gCi0rLyoKLSsgKiBMaW5rIHRoZSBtZW1i ZXJzIGNvbGxlY3RlZCBpbiBlbGVtLT5zZXEgaW50byBlbGVtLT5kYXRhLT52YWwuZGF0YXNlcS4K LSsgKgotKyAqIE1lbWJlcnMgYXJlIGNvbGxlY3RlZCBpbiBhIHF1ZXVlIHNvIHRoYXQgYXBwZW5k aW5nIGlzIE8oMSksIHNkcF9zZXFfYXBwZW5kKCkKLSsgKiB3b3VsZCBvdGhlcndpc2UgaGF2ZSB0 byB3YWxrIHRvIHRoZSB0YWlsIG9mIHRoZSBzZXF1ZW5jZSBvbiBldmVyeSBhcHBlbmQuCi0rICov Ci0rc3RhdGljIHZvaWQgc2RwX3htbF9kYXRhX2ZsdXNoX3NlcShzdHJ1Y3Qgc2RwX3htbF9kYXRh ICplbGVtKQotK3sKLSsJY29uc3Qgc3RydWN0IHF1ZXVlX2VudHJ5ICplbnRyeTsKLSsJc2RwX2Rh dGFfdCAqdGFpbCA9IE5VTEw7Ci0rCi0rCWlmICghZWxlbS0+c2VxKQotKwkJcmV0dXJuOwotKwot Kwlmb3IgKGVudHJ5ID0gcXVldWVfZ2V0X2VudHJpZXMoZWxlbS0+c2VxKTsgZW50cnk7IGVudHJ5 ID0gZW50cnktPm5leHQpIHsKLSsJCWlmICh0YWlsKQotKwkJCXNkcF9zZXFfYXBwZW5kKHRhaWws IGVudHJ5LT5kYXRhKTsKLSsJCWVsc2UKLSsJCQllbGVtLT5kYXRhLT52YWwuZGF0YXNlcSA9IHNk cF9zZXFfYXBwZW5kKE5VTEwsCi0rCQkJCQkJCQllbnRyeS0+ZGF0YSk7Ci0rCQl0YWlsID0gZW50 cnktPmRhdGE7Ci0rCX0KLSsKLSsJcXVldWVfZGVzdHJveShlbGVtLT5zZXEsIE5VTEwpOwotKwll bGVtLT5zZXEgPSBOVUxMOwotK30KLSsKLSBzdGF0aWMgdm9pZCBzZHBfeG1sX2RhdGFfZnJlZShz dHJ1Y3Qgc2RwX3htbF9kYXRhICplbGVtKQotIHsKLSsJcXVldWVfZGVzdHJveShlbGVtLT5zZXEs IChxdWV1ZV9kZXN0cm95X2Z1bmNfdCkgc2RwX2RhdGFfZnJlZSk7Ci0rCi0gCWlmIChlbGVtLT5k YXRhKQotIAkJc2RwX2RhdGFfZnJlZShlbGVtLT5kYXRhKTsKLSAKLUBAIC01NjgsNiArNTk5LDgg QEAgc3RhdGljIHZvaWQgZWxlbWVudF9lbmQoR01hcmt1cFBhcnNlQ29udGV4dCAqY29udGV4dCwK LSAJCXJldHVybjsKLSAJfQotIAotKwlzZHBfeG1sX2RhdGFfZmx1c2hfc2VxKGN0eF9kYXRhLT5z dGFja19oZWFkKTsKLSsKLSAJaWYgKCFzdHJjbXAoZWxlbWVudF9uYW1lLCAic2VxdWVuY2UiKSkg ewotIAkJaWYgKCFTRFBfSVNfU0VRKGN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhLT5kdGQpKSB7 Ci0gCQkJZ19zZXRfZXJyb3IoZXJyLCBHX01BUktVUF9FUlJPUiwKLUBAIC02MTAsMjggKzY0Mywy MSBAQCBzdGF0aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0 LAotIAotIAlpZiAoY3R4X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQgJiYgY3R4X2RhdGEtPnN0YWNr X2hlYWQtPmRhdGEgJiYKLSAJCQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0LT5kYXRhKSB7 Ci0tCQlzZHBfZGF0YV90ICp0YWlsOwotLQkJc3dpdGNoIChjdHhfZGF0YS0+c3RhY2tfaGVhZC0+ bmV4dC0+ZGF0YS0+ZHRkKSB7Ci0rCQlzdHJ1Y3Qgc2RwX3htbF9kYXRhICpwYXJlbnQgPSBjdHhf ZGF0YS0+c3RhY2tfaGVhZC0+bmV4dDsKLSsKLSsJCXN3aXRjaCAocGFyZW50LT5kYXRhLT5kdGQp IHsKLSAJCWNhc2UgU0RQX1NFUTg6Ci0gCQljYXNlIFNEUF9TRVExNjoKLSAJCWNhc2UgU0RQX1NF UTMyOgotIAkJY2FzZSBTRFBfQUxUODoKLSAJCWNhc2UgU0RQX0FMVDE2OgotIAkJY2FzZSBTRFBf QUxUMzI6Ci0tCQkJdGFpbCA9IGN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0LT5kYXRhLT52YWwu ZGF0YXNlcSA/Ci0tCQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5uZXh0LT50YWlsIDogTlVMTDsK LS0JCQlpZiAodGFpbCkgewotLQkJCQlzZHBfc2VxX2FwcGVuZCh0YWlsLAotLQkJCQkJY3R4X2Rh dGEtPnN0YWNrX2hlYWQtPmRhdGEpOwotLQkJCX0gZWxzZSB7Ci0tCQkJCWN0eF9kYXRhLT5zdGFj a19oZWFkLT5uZXh0LT5kYXRhLT52YWwuZGF0YXNlcSA9Ci0tCQkJCQlzZHBfc2VxX2FwcGVuZChO VUxMLAotLQkJCQkJCWN0eF9kYXRhLT5zdGFja19oZWFkLT5kYXRhKTsKLS0JCQl9Ci0tCQkJY3R4 X2RhdGEtPnN0YWNrX2hlYWQtPm5leHQtPnRhaWwgPQotLQkJCQkJY3R4X2RhdGEtPnN0YWNrX2hl YWQtPmRhdGE7Ci0tCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEgPSBOVUxMOwotLQkJCWN0 eF9kYXRhLT5zdGFja19oZWFkLT50YWlsID0gTlVMTDsKLSsJCQlpZiAoIXBhcmVudC0+c2VxKQot KwkJCQlwYXJlbnQtPnNlcSA9IHF1ZXVlX25ldygpOwotKwotKwkJCWlmIChxdWV1ZV9wdXNoX3Rh aWwocGFyZW50LT5zZXEsCi0rCQkJCQkJY3R4X2RhdGEtPnN0YWNrX2hlYWQtPmRhdGEpKQotKwkJ CQljdHhfZGF0YS0+c3RhY2tfaGVhZC0+ZGF0YSA9IE5VTEw7Ci0gCQkJYnJlYWs7Ci0gCQl9Ci0g Ci0tLSAKLTIuNTUuMAotCi0KLUZyb20gOTc1MjFhYjRkZDc5YTM4YjJjMzBkOGQ2NjRiNGUxMWY4 NjY4MGU4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aXogQXVndXN0byB2b24g RGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLURhdGU6IEZyaSwgMTQgQXVnIDIwMjYg MTM6NDA6NTEgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIHNkcC14bWw6IEZpeCBsZWFraW5n IHRoZSBwYXJzZSBzdGFjayBvbiBtYWxmb3JtZWQgaW5wdXQKLQotc2RwX3htbF9wYXJzZV9yZWNv cmQoKSBmcmVlcyBpdHMgY29udGV4dCBidXQgbmV2ZXIgdGhlIGVsZW1lbnRzIGxlZnQgb24KLWN0 eF9kYXRhLT5zdGFja19oZWFkLgotCi1lbGVtZW50X2VuZCgpIHJldHVybnMgZWFybHkgd2l0aG91 dCBwb3BwaW5nIHRoZSBzdGFjayB3aGVuIGl0IHJlamVjdHMgYQotZG9jdW1lbnQsIGZvciBpbnN0 YW5jZSBvbiBhIG1pc21hdGNoZWQgPC9zZXF1ZW5jZT4gY2xvc2UsIHNvIGEgbWFsZm9ybWVkCi1y ZWNvcmQgbGVhdmVzIGl0cyBlbGVtZW50cyBiZWhpbmQgYW5kIHRoZXkgYXJlIG5ldmVyIGZyZWVk LgotCi1GcmVlIHRoZSByZW1haW5pbmcgc3RhY2sgZWxlbWVudHMgYmVmb3JlIHJldHVybmluZy4g Rm91bmQgd2l0aCB0aGUKLWNvbXB1dGUtc2VxLXNpemUtdHlwZS1jb25mdXNpb24ueG1sIHRlc3Q6 Ci0KLTU2IChkaXJlY3QpICsgMSwwNzIgKGluZGlyZWN0KSBieXRlcyBpbiAxIGJsb2NrcyBhcmUg ZGVmaW5pdGVseSBsb3N0Ci0gICBhdCBjYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6MTY3OCkK LSAgIGJ5IHNkcF94bWxfZGF0YV9hbGxvYyAoc2RwLXhtbC5jOjczKQotICAgYnkgZWxlbWVudF9z dGFydCAoc2RwLXhtbC5jOjQ3MykKLSAgIGJ5IGdfbWFya3VwX3BhcnNlX2NvbnRleHRfcGFyc2Ug KGdtYXJrdXAuYzoxMzY5KQotICAgYnkgc2RwX3htbF9wYXJzZV9yZWNvcmQgKHNkcC14bWwuYzo2 OTYpCi0KLUFzc2lzdGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW9wdXMtNQotLS0tCi0gc3JjL3NkcC14 bWwuYyB8IDE0ICsrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMo KykKLQotZGlmZiAtLWdpdCBhL3NyYy9zZHAteG1sLmMgYi9zcmMvc2RwLXhtbC5jCi1pbmRleCBi YWQ5ZTI4OTM0NGYuLmJjZDU3ODVmODdjYSAxMDA2NDQKLS0tLSBhL3NyYy9zZHAteG1sLmMKLSsr KyBiL3NyYy9zZHAteG1sLmMKLUBAIC01NTEsNiArNTUxLDE3IEBAIHN0YXRpYyB2b2lkIHNkcF94 bWxfZGF0YV9mcmVlKHN0cnVjdCBzZHBfeG1sX2RhdGEgKmVsZW0pCi0gCWZyZWUoZWxlbSk7Ci0g fQotIAotKy8qIEZyZWUgdGhlIGVsZW1lbnRzIGxlZnQgb24gdGhlIHN0YWNrLCBlLmcuIGJ5IGEg ZG9jdW1lbnQgdGhhdCBpcyBtYWxmb3JtZWQgKi8KLStzdGF0aWMgdm9pZCBzZHBfeG1sX2RhdGFf ZnJlZV9zdGFjayhzdHJ1Y3Qgc2RwX3htbF9kYXRhICplbGVtKQotK3sKLSsJd2hpbGUgKGVsZW0p IHsKLSsJCXN0cnVjdCBzZHBfeG1sX2RhdGEgKm5leHQgPSBlbGVtLT5uZXh0OwotKwotKwkJc2Rw X3htbF9kYXRhX2ZyZWUoZWxlbSk7Ci0rCQllbGVtID0gbmV4dDsKLSsJfQotK30KLSsKLSBzdGF0 aWMgdm9pZCBlbGVtZW50X2VuZChHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LAotIAkJY29u c3QgY2hhciAqZWxlbWVudF9uYW1lLCBncG9pbnRlciB1c2VyX2RhdGEsIEdFcnJvciAqKmVycikK LSB7Ci1AQCAtNjk2LDYgKzcwNyw3IEBAIHNkcF9yZWNvcmRfdCAqc2RwX3htbF9wYXJzZV9yZWNv cmQoY29uc3QgY2hhciAqZGF0YSwgaW50IHNpemUpCi0gCWlmIChnX21hcmt1cF9wYXJzZV9jb250 ZXh0X3BhcnNlKGN0eCwgZGF0YSwgc2l6ZSwgTlVMTCkgPT0gRkFMU0UpIHsKLSAJCWVycm9yKCJY TUwgcGFyc2luZyBlcnJvciIpOwotIAkJZ19tYXJrdXBfcGFyc2VfY29udGV4dF9mcmVlKGN0eCk7 Ci0rCQlzZHBfeG1sX2RhdGFfZnJlZV9zdGFjayhjdHhfZGF0YS0+c3RhY2tfaGVhZCk7Ci0gCQlz ZHBfcmVjb3JkX2ZyZWUocmVjb3JkKTsKLSAJCWZyZWUoY3R4X2RhdGEpOwotIAkJcmV0dXJuIE5V TEw7Ci1AQCAtNzAzLDYgKzcxNSw4IEBAIHNkcF9yZWNvcmRfdCAqc2RwX3htbF9wYXJzZV9yZWNv cmQoY29uc3QgY2hhciAqZGF0YSwgaW50IHNpemUpCi0gCi0gCWdfbWFya3VwX3BhcnNlX2NvbnRl eHRfZnJlZShjdHgpOwotIAotKwlzZHBfeG1sX2RhdGFfZnJlZV9zdGFjayhjdHhfZGF0YS0+c3Rh Y2tfaGVhZCk7Ci0rCi0gCWZyZWUoY3R4X2RhdGEpOwotIAotIAlyZXR1cm4gcmVjb3JkOwotLS0g Ci0yLjU1LjAKLQotCi1Gcm9tIDA3OGVmMTBhNDUzMWUzZmRkYmFjMzMyY2Y2NTA3N2YzMTcwOTI1 NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6 IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDE3IEF1ZyAyMDI2IDE0OjU2 OjE2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBzZHA6IEZpeCBtZW1vcnkgbGVhayB3aGVu IGZyZWVpbmcgYWx0ZXJuYXRlcwotCi1zZHBfZGF0YV9hbGxvY193aXRoX2xlbmd0aCgpIHN0b3Jl cyB0aGUgbWVtYmVycyBvZiBTRFBfQUxUOCwgU0RQX0FMVDE2Ci1hbmQgU0RQX0FMVDMyIGluIHZh bC5kYXRhc2VxLCBleGFjdGx5IGxpa2UgaXQgZG9lcyBmb3IgdGhlIFNEUF9TRVE4LAotU0RQX1NF UTE2IGFuZCBTRFBfU0VRMzIgc2VxdWVuY2VzLgotCi1zZHBfZGF0YV9mcmVlKCkgb25seSBjYWxs cyBkYXRhX3NlcV9mcmVlKCkgZm9yIHRoZSBzZXF1ZW5jZXMgdGhvdWdoLCBzbwotZnJlZWluZyBh biBhbHRlcm5hdGUgZnJlZXMgdGhlIGFsdGVybmF0ZSBpdHNlbGYgYW5kIGxlYWtzIGV2ZXJ5IG9u ZSBvZgotaXRzIG1lbWJlcnMsIGFsb25nIHdpdGggYW55dGhpbmcgdGhleSBvd24gaW4gdHVybjoK LQotMjA5ICg0OCBkaXJlY3QsIDE2MSBpbmRpcmVjdCkgYnl0ZXMgaW4gMSBibG9ja3MgYXJlIGRl ZmluaXRlbHkgbG9zdAotICAgYXQgY2FsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjE2NzgpCi0g ICBieSBzZHBfZGF0YV9hbGxvY193aXRoX2xlbmd0aCAoc2RwLmM6MzUwKQotICAgYnkgc2RwX2Rh dGFfYWxsb2MgKHNkcC5jOjQ4NikKLSAgIGJ5IHNkcF94bWxfcGFyc2VfaW50IChzZHAteG1sLmM6 MjQzKQotICAgYnkgc2RwX3htbF9wYXJzZV9kYXRhdHlwZSAoc2RwLXhtbC5jOjQyMSkKLSAgIGJ5 IGVsZW1lbnRfc3RhcnQgKHNkcC14bWwuYzo1MDcpCi0KLUZyZWUgdGhlIG1lbWJlcnMgb2YgYWx0 ZXJuYXRlcyBhcyB3ZWxsLgotCi1Bc3Npc3RlZC1ieTogQ2xhdWRlOmNsYXVkZS1vcHVzLTUKLS0t LQotIGxpYi9ibHVldG9vdGgvc2RwLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYi9ibHVldG9vdGgvc2RwLmMgYi9saWIvYmx1ZXRv b3RoL3NkcC5jCi1pbmRleCA4YzA4NjUzOTg1MTkuLjFlMDI3ZjllYmU2ZCAxMDA2NDQKLS0tLSBh L2xpYi9ibHVldG9vdGgvc2RwLmMKLSsrKyBiL2xpYi9ibHVldG9vdGgvc2RwLmMKLUBAIC05NzIs NiArOTcyLDkgQEAgdm9pZCBzZHBfZGF0YV9mcmVlKHNkcF9kYXRhX3QgKmQpCi0gCWNhc2UgU0RQ X1NFUTg6Ci0gCWNhc2UgU0RQX1NFUTE2OgotIAljYXNlIFNEUF9TRVEzMjoKLSsJY2FzZSBTRFBf QUxUODoKLSsJY2FzZSBTRFBfQUxUMTY6Ci0rCWNhc2UgU0RQX0FMVDMyOgotIAkJZGF0YV9zZXFf ZnJlZShkKTsKLSAJCWJyZWFrOwotIAljYXNlIFNEUF9VUkxfU1RSODoKLS0tIAotMi41NS4wCi0K LQotRnJvbSA1YWJjMDA0NWI4NGFkY2I0N2FmMjZmODhmNjk5ZjMzYzAwMzdhMDBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24u ZGVudHpAaW50ZWwuY29tPgotRGF0ZTogTW9uLCAxNyBBdWcgMjAyNiAxNDo1NjoyNCAtMDQwMAot U3ViamVjdDogW1BBVENIIDQvNF0gdW5pdC90ZXN0LXNkcC14bWw6IEFkZCBhIHRlc3QgcGFyc2lu ZyBhbHRlcm5hdGVzCi0KLU5vbmUgb2YgdGhlIGV4aXN0aW5nIHJlY29yZHMgY29udGFpbiBhbiA8 YWx0ZXJuYXRlPiwgc28gbm90aGluZyBjb3ZlcmVkCi10aGUgU0RQX0FMVDgsIFNEUF9BTFQxNiBh bmQgU0RQX0FMVDMyIGhhbmRsaW5nLgotCi1BZGQgYSByZWNvcmQgd2l0aCBhbiBhbHRlcm5hdGUg aG9sZGluZyBhbiBpbnRlZ2VyLCBhIHN0cmluZyBhbmQgYSBuZXN0ZWQKLXNlcXVlbmNlLCB3aGlj aCBsZWFrcyBpdHMgbWVtYmVycyB1bmRlciB2YWxncmluZCB3aXRob3V0IHRoZSBwcmV2aW91cwot c2RwX2RhdGFfZnJlZSgpIGZpeC4KLQotQXNzaXN0ZWQtYnk6IENsYXVkZTpjbGF1ZGUtb3B1cy01 Ci0tLS0KLSBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8ICAxICsKLSB1bml0L3NkcC14bWwv YWx0ZXJuYXRlLnhtbCB8IDEyICsrKysrKysrKysrKwotIHVuaXQvdGVzdC1zZHAteG1sLmMgICAg ICAgIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBt b2RlIDEwMDY0NCB1bml0L3NkcC14bWwvYWx0ZXJuYXRlLnhtbAotCi1kaWZmIC0tZ2l0IGEvTWFr ZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggM2M2Y2Y5MmFiNDAzLi4yNzU0ZTFiN2YyZGEg MTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC02NDgsNiAr NjQ4LDcgQEAgdW5pdF90ZXN0X3NkcF94bWxfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoR0xJQl9D RkxBR1MpIC1EVE9QX1NSQ0RJUj1cIiIkKHNyY2RpcikKLSB1bml0X3Rlc3Rfc2RwX3htbF9DUFBG TEFHUyA9IC1JJChzcmNkaXIpL2xpYgotIAotIEVYVFJBX0RJU1QgKz0gdW5pdC9zZHAteG1sL0Js dWV0b290aF9ISUQtc2RwX3JlY29yZC54bWwJCVwKLSsJdW5pdC9zZHAteG1sL2FsdGVybmF0ZS54 bWwJCQkJXAotIAl1bml0L3NkcC14bWwvY29tcHV0ZS1zZXEtc2l6ZS10eXBlLWNvbmZ1c2lvbi54 bWwJXAotIAl1bml0L3NkcC14bWwvZHVwbGljYXRlLWF0dHJpYnV0ZS54bWwJCQlcCi0gCXVuaXQv c2RwLXhtbC9xdC1TZXJpYWxQb3J0U0RQUmVjb3JkLnhtbAotZGlmZiAtLWdpdCBhL3VuaXQvc2Rw LXhtbC9hbHRlcm5hdGUueG1sIGIvdW5pdC9zZHAteG1sL2FsdGVybmF0ZS54bWwKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwMDAuLmEzNWViY2NiYzcxZgotLS0tIC9kZXYv bnVsbAotKysrIGIvdW5pdC9zZHAteG1sL2FsdGVybmF0ZS54bWwKLUBAIC0wLDAgKzEsMTIgQEAK LSs8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KLSs8cmVjb3JkPgotKwk8 YXR0cmlidXRlIGlkPSIweDAwMDQiPgotKwkJPGFsdGVybmF0ZT4KLSsJCQk8dWludDMyIHZhbHVl PSIweDExMjIzMzQ0IiAvPgotKwkJCTx0ZXh0IHZhbHVlPSJhbHRlcm5hdGUtbWVtYmVyIiAvPgot KwkJCTxzZXF1ZW5jZT4KLSsJCQkJPHVpbnQxNiB2YWx1ZT0iMHgwMTAwIiAvPgotKwkJCTwvc2Vx dWVuY2U+Ci0rCQk8L2FsdGVybmF0ZT4KLSsJPC9hdHRyaWJ1dGU+Ci0rPC9yZWNvcmQ+Ci1kaWZm IC0tZ2l0IGEvdW5pdC90ZXN0LXNkcC14bWwuYyBiL3VuaXQvdGVzdC1zZHAteG1sLmMKLWluZGV4 IGIzMzg3ODhhYTI5NS4uY2I1YjkxNzE3ZmNhIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LXNkcC14 bWwuYwotKysrIGIvdW5pdC90ZXN0LXNkcC14bWwuYwotQEAgLTEzMyw2ICsxMzMsNyBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlERUZJTkVfVEVTVCgiY29tcHV0ZS1zZXEt c2l6ZS10eXBlLWNvbmZ1c2lvbi54bWwiLCBGQUxTRSk7Ci0gCS8qIEZyb20gaHR0cHM6Ly9naXRo dWIuY29tL2JsdWV6L2JsdWV6L3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS03NXY2LTZxNDQtNTdo YyAqLwotIAlERUZJTkVfVEVTVCgiZHVwbGljYXRlLWF0dHJpYnV0ZS54bWwiLCBUUlVFKTsKLSsJ REVGSU5FX1RFU1QoImFsdGVybmF0ZS54bWwiLCBUUlVFKTsKLSAKLSAJdGVzdGVyX2FkZCgiL3Nl cXVlbmNlX29uX3NxdWFyZWQiLCAmZGF0YSwKLSAJCSAgIHNlcXVlbmNlX29uX3NxdWFyZWRfc2V0 dXAsCi0tLSAKLTIuNTUuMAotCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXgg MDUwYmQyNi4uMjlkY2Y4MCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0x ICsxIEBACi1TSEE1MTIgKGJsdWV6LTUuODcudGFyLnh6KSA9IGYxZTNiZWRlOWIwYmJjM2I1Y2Zl OWZlZDVmNzk0NWJlN2NiY2Y3YTI5OTcyOWI1ZjgyZjFjYmE0YmJiZDZjNGQyZTM3MmM5Njg1ZjYx NDU4ZGZjMzc0YzlkZmVlMzUyYjZjMjkzM2EyYzBkNzcyN2I4MTcxZmYzOTQwNTVlMTY5CitTSEE1 MTIgKGJsdWV6LTUuODcrMS5naXQ4NzUwMTI5ZWZjYTgudGFyLnh6KSA9IGE3NjljNmU5MmFmOGJl ZGZlNTU0ZTI5MmViMjRlMjc1MGMwNGZlNDczZjJmNzFlNjU1ZTFhMGJkMTZjZTA5NzAyNTMwMTUz OThmNTk4NDBmODI0MGY4YjQwZTk5MDcyYWE3YWE0MzIzOWYwNzBmNjJlNWM3YWI0N2Y4YTNmMDAx Cg==