From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 2193 invoked from network); 15 Mar 2021 00:21:02 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 15 Mar 2021 00:21:02 -0000 Content-Type: multipart/mixed; boundary="===============3152370363727796855==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_Freecad=3A_Update_to_0=2E19=2E1?= To: ml@inbox.vuxu.org From: sww1235 Reply-to: ml@inbox.vuxu.org Message-ID: Date: Mon, 15 Mar 2021 01:21:01 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============3152370363727796855== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHN3dzEyMzUgYWdhaW5zdCBtYXN0ZXIgb24g dGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3N3dzEyMzUv dm9pZC1wYWNrYWdlcyBmcmVlY2FkMC4xOS4xCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC8yOTQ2NgoKRnJlZWNhZDogVXBkYXRlIHRvIDAuMTkuMQoNCg0K IyMjIyBIYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9wb3NlZCBjaGFuZ2VzIGJlZW4gdGVzdGVk Pw0KLSBbWCBdIEkgdXNlIHRoZSBwYWNrYWdlcyBhZmZlY3RlZCBieSB0aGUgcHJvcG9zZWQgY2hh bmdlcyBvbiBhIHJlZ3VsYXIgYmFzaXMgYW5kIGNvbmZpcm0gdGhpcyBQUiB3b3JrcyBmb3IgbWUN Ci0gWyBdIEkgZ2VuZXJhbGx5IGRvbid0IHVzZSB0aGUgYWZmZWN0ZWQgcGFja2FnZXMgYnV0IGJy aWVmbHkgdGVzdGVkIHRoaXMgUFINCg0KSSB0ZXN0ZWQgdGhlc2UgY2hhbmdlcyBpbiBhIHNlcGFy YXRlIGJyYW5jaCB0aGF0IEkgdXNlZCBmb3IgdGVzdGluZyB0aGUgRnJlZUNBRCBtYXN0ZXIgcHJp b3IgdG8gMC4xOSBiZWluZyByZWxlYXNlZC4NCgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzI5NDY2LnBhdGNoIGlzIGF0 dGFjaGVk --===============3152370363727796855== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-freecad0.19.1-29466.patch" RnJvbSBkYjlkZjZlOTQwMzk0ZDJmMTdjZDdkMjFkZTk1MmUyNjZhYzhlMWViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVwaGVuIFdhbGtlci1XZWluc2hlbmtlciA8c3d3MTIzNUBn bWFpbC5jb20+CkRhdGU6IFNhdCwgMTMgTWFyIDIwMjEgMTk6MDY6MTIgLTA3MDAKU3ViamVjdDog W1BBVENIIDEvMl0gRnJlZUNBRDogdXBkYXRlIHRvIDAuMTkuMQoKLS0tCiBzcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8wMDEtcHl0aG9uMy5wYXRjaCAgICAgfCAgMTEgLQogc3JjcGtncy9mcmVlY2Fk L3BhdGNoZXMvMDAyLWV4ZWNpbmZvLnBhdGNoICAgIHwgIDMwIC0KIC4uLi9wYXRjaGVzLzAyMC1u YW1lc3BhY2UtbWlzc2luZy1zdGQucGF0Y2ggICB8IDEyNyAtLS0KIHNyY3BrZ3MvZnJlZWNhZC9w YXRjaGVzLzA5MC1weTM4LnBhdGNoICAgICAgICB8ICAyMiAtCiBzcmNwa2dzL2ZyZWVjYWQvcGF0 Y2hlcy8wOTEtcHkzOS5wYXRjaCAgICAgICAgfCAxNzQgLS0tLQogLi4uMDAtZGV0ZWN0LXNoaWJv a2VuMi1hbmQtcHlzaWRlMi01LjE0LnBhdGNoIHwgIDMzIC0KIC4uLi8xMDEtcHlzaWRlMi10b29s LTUuMTQtc3VwcG9ydC5wYXRjaCAgICAgICB8ICA2NyAtLQogc3JjcGtncy9mcmVlY2FkL3BhdGNo ZXMvMTAyLXF0NS01LjE1LjAucGF0Y2ggIHwgIDE0IC0KIC4uLi9wYXRjaGVzLzEwMy1maW5kLWNv aW4zdjQtZG9jLnBhdGNoICAgICAgICB8ICA1MCAtLQogc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMv MTUwLXZ0azkucGF0Y2ggICAgICAgIHwgNzYwIC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL2ZyZWVj YWQvcGF0Y2hlcy8xNTEtcHl0aG9uLXdhcm5pbmcucGF0Y2ggIHwgIDM5IC0KIHNyY3BrZ3MvZnJl ZWNhZC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQogMTIgZmlsZXMgY2hh bmdlZCwgNCBpbnNlcnRpb25zKCspLCAxMzMyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAwMS1weXRob24zLnBhdGNoCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDAyLWV4ZWNpbmZvLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDIwLW5hbWVzcGFjZS1taXNz aW5nLXN0ZC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVz LzA5MC1weTM4LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNo ZXMvMDkxLXB5MzkucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjYWQvcGF0 Y2hlcy8xMDAtZGV0ZWN0LXNoaWJva2VuMi1hbmQtcHlzaWRlMi01LjE0LnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTAxLXB5c2lkZTItdG9vbC01LjE0 LXN1cHBvcnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hl cy8xMDItcXQ1LTUuMTUuMC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZWNh ZC9wYXRjaGVzLzEwMy1maW5kLWNvaW4zdjQtZG9jLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTUwLXZ0azkucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTEtcHl0aG9uLXdhcm5pbmcucGF0Y2gKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMDEtcHl0aG9uMy5wYXRjaCBiL3NyY3Br Z3MvZnJlZWNhZC9wYXRjaGVzLzAwMS1weXRob24zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBiNDk5NzhhZGNmMzcuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8wMDEtcHl0aG9uMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAg QEAKLS0tLSBDTWFrZUxpc3RzLnR4dAotKysrIENNYWtlTGlzdHMudHh0Ci1AQCAtNDQ1LDcgKzQ0 NSw3IEBACi0gCi0gIyBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNn aT9idWc9Njc3NTk4Ci0gIyBBY2NlcHRhYmxlIHZlcnNpb25zIG9mIFB5dGhvbgotLXNldChQeXRo b25fQURESVRJT05BTF9WRVJTSU9OUyAiMi43IikKLStzZXQoUHl0aG9uX0FERElUSU9OQUxfVkVS U0lPTlMgIjIuNyAzLjYiKQotIAotICMgRm9yIGJ1aWxkaW5nIG9uIE9TIFgKLSBpZigke0NNQUtF X1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEYXJ3aW4iKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVl Y2FkL3BhdGNoZXMvMDAyLWV4ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMv MDAyLWV4ZWNpbmZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjlkNzk3 ZDAwZjIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMDItZXhl Y2luZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0tLS0gc3JjL0FwcC9B cHBsaWNhdGlvbi5jcHAub3JpZwkyMDE5LTAzLTA4IDE4OjU2OjE2LjAwMDAwMDAwMCArMDEwMAot KysrIHNyYy9BcHAvQXBwbGljYXRpb24uY3BwCTIwMTktMDMtMTMgMjE6MzY6MzguODczNTg3NTM0 ICswMTAwCi1AQCAtMTE2Myw3ICsxMTYzLDkgQEAKLSAjZW5kaWYNCi0gDQotICNpZiBkZWZpbmVk KEZDX09TX0xJTlVYKQ0KLSsjaWZkZWYgX19HTElCQ19fDQotICNpbmNsdWRlIDxleGVjaW5mby5o Pg0KLSsjZW5kaWYNCi0gI2luY2x1ZGUgPGRsZmNuLmg+DQotICNpbmNsdWRlIDxjeHhhYmkuaD4N Ci0gDQotQEAgLTExNzUsNiArMTE3Nyw3IEBACi0gLy8gVGhpcyBmdW5jdGlvbiBwcm9kdWNlcyBh IHN0YWNrIGJhY2t0cmFjZSB3aXRoIGRlbWFuZ2xlZCBmdW5jdGlvbiAmIG1ldGhvZCBuYW1lcy4N Ci0gdm9pZCBwcmludEJhY2t0cmFjZShzaXplX3Qgc2tpcD0wKQ0KLSB7DQotKyNpZmRlZiBfX0dM SUJDX18NCi0gICAgIHZvaWQgKmNhbGxzdGFja1sxMjhdOw0KLSAgICAgc2l6ZV90IG5NYXhGcmFt ZXMgPSBzaXplb2YoY2FsbHN0YWNrKSAvIHNpemVvZihjYWxsc3RhY2tbMF0pOw0KLSAgICAgc2l6 ZV90IG5GcmFtZXMgPSBiYWNrdHJhY2UoY2FsbHN0YWNrLCBuTWF4RnJhbWVzKTsNCi1AQCAtMTIw NSw2ICsxMjA4LDkgQEAKLSAgICAgfQ0KLSANCi0gICAgIGZyZWUoc3ltYm9scyk7DQotKyNlbHNl DQotKyAgICBzdGQ6OmNlcnIgPDwgInNvcnJ5LCBubyBiYWNrdHJhY2Ugb24gbXVzbCBsaWJjIjsN Ci0rI2VuZGlmDQotIH0NCi0gI2VuZGlmDQotIA0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZWNh ZC9wYXRjaGVzLzAyMC1uYW1lc3BhY2UtbWlzc2luZy1zdGQucGF0Y2ggYi9zcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8wMjAtbmFtZXNwYWNlLW1pc3Npbmctc3RkLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA4MjAzM2NkNWFmYjQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2ZyZWVjYWQvcGF0Y2hlcy8wMjAtbmFtZXNwYWNlLW1pc3Npbmctc3RkLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLSMgcmVhc29uOiBmaXggYnVpbGQgd2l0aCBnY2M5Ci0j IHVwc3RyZWFtOiB5ZXMKLQotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5j L1JuLmggc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9Sbi5oCi1pbmRleCA2ZWM4NzFkOTMu LmU5MmQyMjc1YSAxMDA2NDQKLS0tLSBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1JuLmgK LSsrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1JuLmgKLUBAIC0xODAsMTIgKzE4MCwx MiBAQCBjbGFzcyBSNDogcHVibGljIFIzCi0gewotICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3Bl cmF0b3IgPDwoc3RkOjpvc3RyZWFtJiBmLCBjb25zdCBSNCAmIFAgKQotICAgeyBmIDw8IFAueCA8 PCAnICcgPDwgUC55IDw8ICcgJyA8PCBQLnogPDwgJyAnIDw8IFAub21lZ2E7IHJldHVybiBmOyB9 Ci0tICBmcmllbmQgaXN0cmVhbSYgb3BlcmF0b3IgPj4oaXN0cmVhbSYgZiwgIFI0ICYgUCkKLSsg IGZyaWVuZCBzdGQ6OmlzdHJlYW0mIG9wZXJhdG9yID4+KHN0ZDo6aXN0cmVhbSYgZiwgIFI0ICYg UCkKLSAgIHsgZiA+PiBQLnggPj4gIFAueSA+PiAgUC56ID4+IFAub21lZ2EgOyByZXR1cm4gZjsg fQotIAotICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwoc3RkOjpvc3RyZWFtJiBm LCBjb25zdCBSNCAqIFAgKQotICAgeyBmIDw8IFAtPnggPDwgJyAnIDw8IFAtPnkgPDwgJyAnIDw8 IFAtPnogPDwgJyAnIDw8IFAtPm9tZWdhOyByZXR1cm4gZjsgfQotLSAgZnJpZW5kIGlzdHJlYW0m IG9wZXJhdG9yID4+KGlzdHJlYW0mIGYsICBSNCAqIFApCi0rICBmcmllbmQgc3RkOjppc3RyZWFt JiBvcGVyYXRvciA+PihzdGQ6OmlzdHJlYW0mIGYsICBSNCAqIFApCi0gICB7IGYgPj4gUC0+eCA+ PiAgUC0+eSA+PiAgUC0+eiA+PiBQLT5vbWVnYSA7IHJldHVybiBmOyB9Ci0gCi0gcHVibGljOiAg Ci0KLQotZGlmZiAtLWdpdCBzcmMvTW9kL0RyYXdpbmcvQXBwL0RyYXdpbmdFeHBvcnQuY3BwIHNy Yy9Nb2QvRHJhd2luZy9BcHAvRHJhd2luZ0V4cG9ydC5jcHAKLWluZGV4IDBjM2MyMzIzMS4uNTUw YjEyYzI1IDEwMDY0NAotLS0tIHNyYy9Nb2QvRHJhd2luZy9BcHAvRHJhd2luZ0V4cG9ydC5jcHAK LSsrKyBzcmMvTW9kL0RyYXdpbmcvQXBwL0RyYXdpbmdFeHBvcnQuY3BwCi1AQCAtODEsNiArODEs NyBAQAotICNpbmNsdWRlIDxCYXNlL1ZlY3RvcjNELmg+DQotIA0KLSB1c2luZyBuYW1lc3BhY2Ug RHJhd2luZzsNCi0rdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCi0gDQotIFRvcG9EU19FZGdlIERyYXdp bmdPdXRwdXQ6OmFzQ2lyY2xlKGNvbnN0IEJSZXBBZGFwdG9yX0N1cnZlJiBjKSBjb25zdA0KLSB7 DQotZGlmZiAtLWdpdCBzcmMvTW9kL1BhcnQvQXBwL0dlb21ldHJ5MmQuY3BwIHNyYy9Nb2QvUGFy dC9BcHAvR2VvbWV0cnkyZC5jcHAKLWluZGV4IGZiMWRlOTA5Yy4uOTc5NDY1NTMzIDEwMDY0NAot LS0tIHNyYy9Nb2QvUGFydC9BcHAvR2VvbWV0cnkyZC5jcHAKLSsrKyBzcmMvTW9kL1BhcnQvQXBw L0dlb21ldHJ5MmQuY3BwCi1AQCAtODMsNiArODMsNyBAQAotICNpbmNsdWRlIDxNb2QvUGFydC9B cHAvR2VvbTJkL09mZnNldEN1cnZlMmRQeS5oPgotIAotIHVzaW5nIG5hbWVzcGFjZSBQYXJ0Owot K3VzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gCi0gZXh0ZXJuIGNvbnN0IGNoYXIqIGdjZV9FcnJvclN0 YXR1c1RleHQoZ2NlX0Vycm9yVHlwZSBldCk7Ci0gCi1kaWZmIC0tZ2l0IHNyYy9Nb2QvUmF5dHJh Y2luZy9BcHAvQXBwUmF5dHJhY2luZ1B5LmNwcCBzcmMvTW9kL1JheXRyYWNpbmcvQXBwL0FwcFJh eXRyYWNpbmdQeS5jcHAKLWluZGV4IGQ0OGM1MWM5Ny4uMWJiMmIxYjAxIDEwMDY0NAotLS0tIHNy Yy9Nb2QvUmF5dHJhY2luZy9BcHAvQXBwUmF5dHJhY2luZ1B5LmNwcAotKysrIHNyYy9Nb2QvUmF5 dHJhY2luZy9BcHAvQXBwUmF5dHJhY2luZ1B5LmNwcAotQEAgLTQwLDYgKzQwLDggQEAKLSAjaW5j bHVkZSA8TW9kL1BhcnQvQXBwL1RvcG9TaGFwZVB5Lmg+DQotICNpbmNsdWRlIDxBcHAvQXBwbGlj YXRpb24uaD4NCi0gDQotK3VzaW5nIG5hbWVzcGFjZSBzdGQ7DQotKw0KLSANCi0gbmFtZXNwYWNl IFJheXRyYWNpbmcgew0KLSBjbGFzcyBNb2R1bGUgOiBwdWJsaWMgUHk6OkV4dGVuc2lvbk1vZHVs ZTxNb2R1bGU+DQotZGlmZiAtLWdpdCBzcmMvTW9kL1JheXRyYWNpbmcvQXBwL0x1eEZlYXR1cmUu Y3BwIHNyYy9Nb2QvUmF5dHJhY2luZy9BcHAvTHV4RmVhdHVyZS5jcHAKLWluZGV4IDkzMGZlMTJi Ny4uZDFlMGEwMDg5IDEwMDY0NAotLS0tIHNyYy9Nb2QvUmF5dHJhY2luZy9BcHAvTHV4RmVhdHVy ZS5jcHAKLSsrKyBzcmMvTW9kL1JheXRyYWNpbmcvQXBwL0x1eEZlYXR1cmUuY3BwCi1AQCAtMzgs NiArMzgsNyBAQAotIA0KLSANCi0gdXNpbmcgbmFtZXNwYWNlIFJheXRyYWNpbmc7DQotK3VzaW5n IG5hbWVzcGFjZSBzdGQ7DQotIA0KLSBQUk9QRVJUWV9TT1VSQ0UoUmF5dHJhY2luZzo6THV4RmVh dHVyZSwgUmF5dHJhY2luZzo6UmF5U2VnbWVudCkNCi0gDQotZGlmZiAtLWdpdCBzcmMvTW9kL1Jh eXRyYWNpbmcvQXBwL1JheUZlYXR1cmUuY3BwIHNyYy9Nb2QvUmF5dHJhY2luZy9BcHAvUmF5RmVh dHVyZS5jcHAKLWluZGV4IGNkZDJjYjZkYy4uMjM1YTk4Njg1IDEwMDY0NAotLS0tIHNyYy9Nb2Qv UmF5dHJhY2luZy9BcHAvUmF5RmVhdHVyZS5jcHAKLSsrKyBzcmMvTW9kL1JheXRyYWNpbmcvQXBw L1JheUZlYXR1cmUuY3BwCi1AQCAtMzYsNiArMzYsNyBAQAotIA0KLSANCi0gdXNpbmcgbmFtZXNw YWNlIFJheXRyYWNpbmc7DQotK3VzaW5nIG5hbWVzcGFjZSBzdGQ7DQotIA0KLSBQUk9QRVJUWV9T T1VSQ0UoUmF5dHJhY2luZzo6UmF5RmVhdHVyZSwgUmF5dHJhY2luZzo6UmF5U2VnbWVudCkNCi0g DQotZGlmZiAtLWdpdCBzcmMvTW9kL1RlY2hEcmF3L0FwcC9HZW9tZXRyeS5jcHAgc3JjL01vZC9U ZWNoRHJhdy9BcHAvR2VvbWV0cnkuY3BwCi1pbmRleCBjMTBiNjMxNzcuLmQzNGVlYjliYiAxMDA2 NDQKLS0tLSBzcmMvTW9kL1RlY2hEcmF3L0FwcC9HZW9tZXRyeS5jcHAKLSsrKyBzcmMvTW9kL1Rl Y2hEcmF3L0FwcC9HZW9tZXRyeS5jcHAKLUBAIC04MCw2ICs4MCw3IEBACi0gI2luY2x1ZGUgIkdl b21ldHJ5LmgiCi0gCi0gdXNpbmcgbmFtZXNwYWNlIFRlY2hEcmF3OwotK3VzaW5nIG5hbWVzcGFj ZSBzdGQ7Ci0gCi0gLy8gQ29sbGVjdGlvbiBvZiBHZW9tZXRyaWMgRmVhdHVyZXMKLSBXaXJlOjpX aXJlKCkKLQotCi0tLS0gc3JjL01vZC9QYXJ0L0FwcC9Qcm9wZXJ0eVRvcG9TaGFwZS5jcHAKLSsr KyBzcmMvTW9kL1BhcnQvQXBwL1Byb3BlcnR5VG9wb1NoYXBlLmNwcAotQEAgLTI4MSwxMSArMjgx LDExIEBACi0gc3RhdGljIFN0YW5kYXJkX0Jvb2xlYW4gIEJSZXBUb29sc19Xcml0ZShjb25zdCBU b3BvRFNfU2hhcGUmIFNoLCANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBTdGFuZGFyZF9DU3RyaW5nIEZpbGUpDQotIHsNCi0tICBvZnN0cmVhbSBvczsNCi0rICBz dGQ6Om9mc3RyZWFtIG9zOw0KLSAjaWYgT0NDX1ZFUlNJT05fSEVYID49IDB4MDYwODAwDQotLSAg T1NEX09wZW5TdHJlYW0ob3MsIEZpbGUsIGlvczo6b3V0KTsNCi0rICBPU0RfT3BlblN0cmVhbShv cywgRmlsZSwgc3RkOjppb3M6Om91dCk7DQotICNlbHNlDQotLSAgb3Mub3BlbihGaWxlLCBpb3M6 Om91dCk7DQotKyAgb3Mub3BlbihGaWxlLCBzdGQ6Omlvczo6b3V0KTsNCi0gI2VuZGlmDQotICAg aWYgKCFvcy5yZGJ1ZigpLT5pc19vcGVuKCkpIHJldHVybiBTdGFuZGFyZF9GYWxzZTsNCi0gDQot Ci0tLS0gc3JjL01vZC9QYXJ0L0FwcC9HZW9tZXRyeS5jcHAKLSsrKyBzcmMvTW9kL1BhcnQvQXBw L0dlb21ldHJ5LmNwcAotQEAgLTE0MSw2ICsxNDEsNyBAQAotICNpbmNsdWRlICJHZW9tZXRyeS5o Ig0KLSANCi0gdXNpbmcgbmFtZXNwYWNlIFBhcnQ7DQotK3VzaW5nIG5hbWVzcGFjZSBzdGQ7DQot IA0KLSANCi0gY29uc3QgY2hhciogZ2NlX0Vycm9yU3RhdHVzVGV4dChnY2VfRXJyb3JUeXBlIGV0 KQ0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzA5MC1weTM4LnBhdGNoIGIv c3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDkwLXB5MzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDkyNTY2ZGY5ZGYzZC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZnJl ZWNhZC9wYXRjaGVzLzA5MC1weTM4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBA QAotRnJvbSAxNzQwMTE3NDlkODM2ZjNiNmM2YWUyNjMwZjUzYjJmNGMxZjlkM2ZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmljaGFyZCA8aG9iYmVzMTA2OUBnbWFpbC5jb20+Ci1E YXRlOiBUaHUsIDE3IE9jdCAyMDE5IDExOjIwOjEwIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVw ZGF0ZSBzd2lncHlydW4uaW4gZm9yIFB5dGhvbiAzLjgKLQotSW4gUHl0aG9uIDMuOCBzb21lIGZ1 bmN0aW9ucyByZWxhdGVkIHRvIHRocmVhZCBzdGF0ZSB3ZXJlIGludGVudGlvbmFsbHkgbWFkZSBw cml2YXRlLgotCi1UaGlzIGZpeCAoc3BlY2lmaWMgdG8gRnJlZUNBRCkgd2FzIHN1Z2dlc3RlZCBo ZXJlOgotCi1odHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM1ODg2Ci0KLS0tLSBzcmMvQmFz ZS9zd2lncHlydW4uaW5sCi0rKysgc3JjL0Jhc2Uvc3dpZ3B5cnVuLmlubAotQEAgLTcyLDcgKzcy LDcgQEAgdm9pZCBjbGVhbnVwU1dJR19UKGNvbnN0IGNoYXIqIFR5cGVOYW1lKQotIA0KLSAgICAg UHlPYmplY3QgKm1vZHVsZSwgKmRpY3Q7DQotICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVy cCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsNCi0tICAgIFB5T2JqZWN0ICptb2R1bGVz ID0gaW50ZXJwLT5tb2R1bGVzOw0KLSsgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9H ZXRNb2R1bGVEaWN0KCk7DQotICAgICBtb2R1bGUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1 bGVzLCAiX19idWlsdGluX18iKTsNCi0gICAgIGlmIChtb2R1bGUgIT0gTlVMTCAmJiBQeU1vZHVs ZV9DaGVjayhtb2R1bGUpKSB7DQotICAgICAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9k dWxlKTsNCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wOTEtcHkzOS5wYXRj aCBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzA5MS1weTM5LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBkMDNiYjAzYWRiMjEuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2ZyZWVjYWQvcGF0Y2hlcy8wOTEtcHkzOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCAr MCwwIEBACi1GaXggZm9yIFB5dGhvbiAzLjkKLQotaHR0cHM6Ly9naXRodWIuY29tL0ZyZWVDQUQv RnJlZUNBRC9jb21taXQvYWU2NDFkYzUyNzhlZmFmYTIyYjE2OGZjMTk2ODc1NTU4YjkyZTQzNgot Ci1kaWZmIC0tZ2l0IHNyYy9CYXNlL3N3aWdweXJ1bl8xLjMuMjUuaCBzcmMvQmFzZS9zd2lncHly dW5fMS4zLjI1LmgKLWluZGV4IDkxNzE3MjEwYi4uOWViYWRiYzgzIDEwMDY0NAotLS0tIHNyYy9C YXNlL3N3aWdweXJ1bl8xLjMuMjUuaAotKysrIHNyYy9CYXNlL3N3aWdweXJ1bl8xLjMuMjUuaAot QEAgLTY5OSw3ICs2OTksMTEgQEAgUHlTd2lnT2JqZWN0X3R5cGUodm9pZCkgewotICAgICAwLAkJ CQkJLyp0cF9pdGVtc2l6ZSovCi0gICAgIC8qIG1ldGhvZHMgKi8KLSAgICAgKGRlc3RydWN0b3Ip UHlTd2lnT2JqZWN0X2RlYWxsb2MsCS8qdHBfZGVhbGxvYyovCi0rI2lmIFBZX1ZFUlNJT05fSEVY IDwgMHgwMzA4MDAwMAotICAgICAocHJpbnRmdW5jKVB5U3dpZ09iamVjdF9wcmludCwJLyp0cF9w cmludCovCi0rI2Vsc2UKLSsgICAgMCwgICAgICAgICAgLyp0cF92ZWN0b3JjYWxsX29mZnNldCov Ci0rI2VuZGlmCi0gICAgIChnZXRhdHRyZnVuYykwLAkJCS8qdHBfZ2V0YXR0ciovCi0gICAgIChz ZXRhdHRyZnVuYykwLAkJCS8qdHBfc2V0YXR0ciovCi0gICAgIChjbXBmdW5jKVB5U3dpZ09iamVj dF9jb21wYXJlLAkvKnRwX2NvbXBhcmUqLwotQEAgLTg1OSw3ICs4NjMsMTEgQEAgUHlTd2lnUGFj a2VkX3R5cGUodm9pZCkgewotICAgICAwLAkJCQkJLyp0cF9pdGVtc2l6ZSovCi0gICAgIC8qIG1l dGhvZHMgKi8KLSAgICAgKGRlc3RydWN0b3IpUHlTd2lnUGFja2VkX2RlYWxsb2MsCS8qdHBfZGVh bGxvYyovCi0rI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMzA4MDAwMAotICAgICAocHJpbnRmdW5j KVB5U3dpZ1BhY2tlZF9wcmludCwJLyp0cF9wcmludCovCi0rI2Vsc2UKLSsgICAgMCwgICAgICAg ICAgLyp0cF92ZWN0b3JjYWxsX29mZnNldCovCi0rI2VuZGlmCi0gICAgIChnZXRhdHRyZnVuYykw LAkJCS8qdHBfZ2V0YXR0ciovCi0gICAgIChzZXRhdHRyZnVuYykwLAkJCS8qdHBfc2V0YXR0ciov Ci0gICAgIChjbXBmdW5jKVB5U3dpZ1BhY2tlZF9jb21wYXJlLAkvKnRwX2NvbXBhcmUqLwotZGlm ZiAtLWdpdCBzcmMvQmFzZS9zd2lncHlydW5fMS4zLjMzLmggc3JjL0Jhc2Uvc3dpZ3B5cnVuXzEu My4zMy5oCi1pbmRleCBmODNhYzFlODkuLmFmZDVhOGM1MCAxMDA2NDQKLS0tLSBzcmMvQmFzZS9z d2lncHlydW5fMS4zLjMzLmgKLSsrKyBzcmMvQmFzZS9zd2lncHlydW5fMS4zLjMzLmgKLUBAIC0x NjIwLDcgKzE2MjAsMTEgQEAgX1B5U3dpZ09iamVjdF90eXBlKHZvaWQpIHsKLSAJc2l6ZW9mKFB5 U3dpZ09iamVjdCksCQkgICAgLyogdHBfYmFzaWNzaXplICovCi0gCTAsCQkJICAgICAgICAgICAg LyogdHBfaXRlbXNpemUgKi8KLSAJKGRlc3RydWN0b3IpUHlTd2lnT2JqZWN0X2RlYWxsb2MsICAg LyogdHBfZGVhbGxvYyAqLwotKyNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwODAwMDAKLSAJKHBy aW50ZnVuYylQeVN3aWdPYmplY3RfcHJpbnQsCSAgICAvKiB0cF9wcmludCAqLwotKyNlbHNlCi0r CTAsIC8qdHBfdmVjdG9yY2FsbF9vZmZzZXQqLwotKyNlbmRpZgotICNpZiBQWV9WRVJTSU9OX0hF WCA8IDB4MDIwMjAwMDAKLSAJKGdldGF0dHJmdW5jKVB5U3dpZ09iamVjdF9nZXRhdHRyLCAgLyog dHBfZ2V0YXR0ciAqLyAKLSAjZWxzZQotQEAgLTE3OTAsNyArMTc5NCwxMSBAQCBfUHlTd2lnUGFj a2VkX3R5cGUodm9pZCkgewotIAlzaXplb2YoUHlTd2lnUGFja2VkKSwJCSAgICAvKiB0cF9iYXNp Y3NpemUgKi8JCi0gCTAsCQkJCSAgICAvKiB0cF9pdGVtc2l6ZSAqLwkKLSAJKGRlc3RydWN0b3Ip UHlTd2lnUGFja2VkX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwkKLSsjaWYgUFlfVkVSU0lP Tl9IRVggPCAweDAzMDgwMDAwCi0gCShwcmludGZ1bmMpUHlTd2lnUGFja2VkX3ByaW50LAkgICAg LyogdHBfcHJpbnQgKi8gICAJCi0rI2Vsc2UKLSsJMCwgLyp0cF92ZWN0b3JjYWxsX29mZnNldCov Ci0rI2VuZGlmCi0gCShnZXRhdHRyZnVuYykwLAkJCSAgICAvKiB0cF9nZXRhdHRyICovIAkKLSAJ KHNldGF0dHJmdW5jKTAsCQkJICAgIC8qIHRwX3NldGF0dHIgKi8gCQotIAkoY21wZnVuYylQeVN3 aWdQYWNrZWRfY29tcGFyZSwJICAgIC8qIHRwX2NvbXBhcmUgKi8gCQotZGlmZiAtLWdpdCBzcmMv QmFzZS9zd2lncHlydW5fMS4zLjM2Lmggc3JjL0Jhc2Uvc3dpZ3B5cnVuXzEuMy4zNi5oCi1pbmRl eCAwMmM1OGFkOGEuLjEyYWQ0MWUxMiAxMDA2NDQKLS0tLSBzcmMvQmFzZS9zd2lncHlydW5fMS4z LjM2LmgKLSsrKyBzcmMvQmFzZS9zd2lncHlydW5fMS4zLjM2LmgKLUBAIC0xNjI4LDcgKzE2Mjgs MTIgQEAgX1B5U3dpZ09iamVjdF90eXBlKHZvaWQpIHsKLSAJc2l6ZW9mKFB5U3dpZ09iamVjdCks CQkgICAgLyogdHBfYmFzaWNzaXplICovCi0gCTAsCQkJICAgICAgICAgICAgLyogdHBfaXRlbXNp emUgKi8KLSAJKGRlc3RydWN0b3IpUHlTd2lnT2JqZWN0X2RlYWxsb2MsICAgLyogdHBfZGVhbGxv YyAqLwotKyNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwODAwMDAKLSAJKHByaW50ZnVuYylQeVN3 aWdPYmplY3RfcHJpbnQsCSAgICAvKiB0cF9wcmludCAqLwotKyNlbHNlCi0rCTAsIC8qdHBfdmVj dG9yY2FsbF9vZmZzZXQqLwotKyNlbmRpZgotKwotICNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDIw MjAwMDAKLSAJKGdldGF0dHJmdW5jKVB5U3dpZ09iamVjdF9nZXRhdHRyLCAgLyogdHBfZ2V0YXR0 ciAqLyAKLSAjZWxzZQotQEAgLTE3OTgsNyArMTgwMywxMSBAQCBfUHlTd2lnUGFja2VkX3R5cGUo dm9pZCkgewotIAlzaXplb2YoUHlTd2lnUGFja2VkKSwJCSAgICAvKiB0cF9iYXNpY3NpemUgKi8J Ci0gCTAsCQkJCSAgICAvKiB0cF9pdGVtc2l6ZSAqLwkKLSAJKGRlc3RydWN0b3IpUHlTd2lnUGFj a2VkX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLwkKLSsjaWYgUFlfVkVSU0lPTl9IRVggPCAw eDAzMDgwMDAwCi0gCShwcmludGZ1bmMpUHlTd2lnUGFja2VkX3ByaW50LAkgICAgLyogdHBfcHJp bnQgKi8gICAJCi0rI2Vsc2UKLSsJMCwgLyp0cF92ZWN0b3JjYWxsX29mZnNldCovCi0rI2VuZGlm Ci0gCShnZXRhdHRyZnVuYykwLAkJCSAgICAvKiB0cF9nZXRhdHRyICovIAkKLSAJKHNldGF0dHJm dW5jKTAsCQkJICAgIC8qIHRwX3NldGF0dHIgKi8gCQotIAkoY21wZnVuYylQeVN3aWdQYWNrZWRf Y29tcGFyZSwJICAgIC8qIHRwX2NvbXBhcmUgKi8gCQotZGlmZiAtLWdpdCBzcmMvQmFzZS9zd2ln cHlydW5fMS4zLjM4Lmggc3JjL0Jhc2Uvc3dpZ3B5cnVuXzEuMy4zOC5oCi1pbmRleCBkYWUwNThj MjAuLjdjYWNjMTU3OSAxMDA2NDQKLS0tLSBzcmMvQmFzZS9zd2lncHlydW5fMS4zLjM4LmgKLSsr KyBzcmMvQmFzZS9zd2lncHlydW5fMS4zLjM4LmgKLUBAIC0xNzQxLDcgKzE3NDEsMTEgQEAgX1B5 U3dpZ09iamVjdF90eXBlKHZvaWQpIHsKLSAJc2l6ZW9mKFN3aWdQeU9iamVjdCksCQkgICAgLyog dHBfYmFzaWNzaXplICovDQotIAkwLAkJCSAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovDQot IAkoZGVzdHJ1Y3RvcilTd2lnUHlPYmplY3RfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovDQot KyNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwODAwMDANCi0gCShwcmludGZ1bmMpU3dpZ1B5T2Jq ZWN0X3ByaW50LAkgICAgLyogdHBfcHJpbnQgKi8NCi0rI2Vsc2UNCi0rCTAsIC8qdHBfdmVjdG9y Y2FsbF9vZmZzZXQqLw0KLSsjZW5kaWYNCi0gI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMjAyMDAw MA0KLSAJKGdldGF0dHJmdW5jKVN3aWdQeU9iamVjdF9nZXRhdHRyLCAgLyogdHBfZ2V0YXR0ciAq LyANCi0gI2Vsc2UNCi1AQCAtMTkxOSw3ICsxOTIzLDExIEBAIF9QeVN3aWdQYWNrZWRfdHlwZSh2 b2lkKSB7Ci0gCXNpemVvZihTd2lnUHlQYWNrZWQpLAkJICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwkN Ci0gCTAsCQkJCSAgICAvKiB0cF9pdGVtc2l6ZSAqLwkNCi0gCShkZXN0cnVjdG9yKVN3aWdQeVBh Y2tlZF9kZWFsbG9jLCAgIC8qIHRwX2RlYWxsb2MgKi8JDQotKyNpZiBQWV9WRVJTSU9OX0hFWCA8 IDB4MDMwODAwMDANCi0gCShwcmludGZ1bmMpU3dpZ1B5UGFja2VkX3ByaW50LAkgICAgLyogdHBf cHJpbnQgKi8gICAJDQotKyNlbHNlDQotKwkwLCAvKnRwX3ZlY3RvcmNhbGxfb2Zmc2V0Ki8NCi0r I2VuZGlmDQotIAkoZ2V0YXR0cmZ1bmMpMCwJCQkgICAgLyogdHBfZ2V0YXR0ciAqLyAJDQotIAko c2V0YXR0cmZ1bmMpMCwJCQkgICAgLyogdHBfc2V0YXR0ciAqLyAJDQotIAkoY21wZnVuYylTd2ln UHlQYWNrZWRfY29tcGFyZSwJICAgIC8qIHRwX2NvbXBhcmUgKi8gCQ0KLWRpZmYgLS1naXQgc3Jj L0Jhc2Uvc3dpZ3B5cnVuXzEuMy40MC5oIHNyYy9CYXNlL3N3aWdweXJ1bl8xLjMuNDAuaAotaW5k ZXggMTM2YmE4MDlmLi40MDBkYjhiNDcgMTAwNjQ0Ci0tLS0gc3JjL0Jhc2Uvc3dpZ3B5cnVuXzEu My40MC5oCi0rKysgc3JjL0Jhc2Uvc3dpZ3B5cnVuXzEuMy40MC5oCi1AQCAtMTc2Niw3ICsxNzY2 LDExIEBAIF9QeVN3aWdPYmplY3RfdHlwZSh2b2lkKSB7Ci0gCXNpemVvZihTd2lnUHlPYmplY3Qp LAkJICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLw0KLSAJMCwJCQkgICAgICAgICAgICAvKiB0cF9pdGVt c2l6ZSAqLw0KLSAJKGRlc3RydWN0b3IpU3dpZ1B5T2JqZWN0X2RlYWxsb2MsICAgLyogdHBfZGVh bGxvYyAqLw0KLSsjaWYgUFlfVkVSU0lPTl9IRVggPCAweDAzMDgwMDAwDQotIAkocHJpbnRmdW5j KVN3aWdQeU9iamVjdF9wcmludCwJICAgIC8qIHRwX3ByaW50ICovDQotKyNlbHNlDQotKwkwLCAv KnRwX3ZlY3RvcmNhbGxfb2Zmc2V0Ki8NCi0rI2VuZGlmDQotICNpZiBQWV9WRVJTSU9OX0hFWCA8 IDB4MDIwMjAwMDANCi0gCShnZXRhdHRyZnVuYylTd2lnUHlPYmplY3RfZ2V0YXR0ciwgIC8qIHRw X2dldGF0dHIgKi8gDQotICNlbHNlDQotQEAgLTE5NDcsOCArMTk1MSwxMiBAQCBfUHlTd2lnUGFj a2VkX3R5cGUodm9pZCkgewotIAkoY2hhciAqKSJTd2lnUHlQYWNrZWQiLAkJICAgIC8qIHRwX25h bWUgKi8JDQotIAlzaXplb2YoU3dpZ1B5UGFja2VkKSwJCSAgICAvKiB0cF9iYXNpY3NpemUgKi8J DQotIAkwLAkJCQkgICAgLyogdHBfaXRlbXNpemUgKi8JDQotLQkoZGVzdHJ1Y3RvcilTd2lnUHlQ YWNrZWRfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCQ0KLS0JKHByaW50ZnVuYylTd2lnUHlQ YWNrZWRfcHJpbnQsCSAgICAvKiB0cF9wcmludCAqLyAgIAkNCi0rCShkZXN0cnVjdG9yKVN3aWdQ eVBhY2tlZF9kZWFsbG9jLCAgIC8qIHRwX2RlYWxsb2MgKi8NCi0rI2lmIFBZX1ZFUlNJT05fSEVY IDwgMHgwMzA4MDAwMA0KLSsJKHByaW50ZnVuYylTd2lnUHlQYWNrZWRfcHJpbnQsCSAgICAvKiB0 cF9wcmludCAqLw0KLSsjZWxzZQ0KLSsJMCwgLyp0cF92ZWN0b3JjYWxsX29mZnNldCovDQotKyNl bmRpZg0KLSAJKGdldGF0dHJmdW5jKTAsCQkJICAgIC8qIHRwX2dldGF0dHIgKi8gCQ0KLSAJKHNl dGF0dHJmdW5jKTAsCQkJICAgIC8qIHRwX3NldGF0dHIgKi8gCQ0KLSAjaWYgUFlfVkVSU0lPTl9I RVg+PTB4MDMwMDAwMDANCi1kaWZmIC0tZ2l0IHNyYy9DWFgvUHl0aG9uMy9jeHhfZXh0ZW5zaW9u cy5jeHggc3JjL0NYWC9QeXRob24zL2N4eF9leHRlbnNpb25zLmN4eAotaW5kZXggZmIzZGE0NTVm Li45ZmY5NDYxMmYgMTAwNjQ0Ci0tLS0gc3JjL0NYWC9QeXRob24zL2N4eF9leHRlbnNpb25zLmN4 eAotKysrIHNyYy9DWFgvUHl0aG9uMy9jeHhfZXh0ZW5zaW9ucy5jeHgKLUBAIC0zODEsNyArMzgx LDExIEBAIFB5dGhvblR5cGU6OlB5dGhvblR5cGUoIHNpemVfdCBiYXNpY19zaXplLCBpbnQgaXRl bXNpemUsIGNvbnN0IGNoYXIgKmRlZmF1bHRfbmFtCi0gCi0gICAgIC8vIE1ldGhvZHMgdG8gaW1w bGVtZW50IHN0YW5kYXJkIG9wZXJhdGlvbnMKLSAgICAgdGFibGUtPnRwX2RlYWxsb2MgPSAoZGVz dHJ1Y3RvcilzdGFuZGFyZF9kZWFsbG9jOwotKyNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwODAw MDAKLSAgICAgdGFibGUtPnRwX3ByaW50ID0gMDsKLSsjZWxzZQotKyAgICB0YWJsZS0+dHBfdmVj dG9yY2FsbF9vZmZzZXQgPSAwOwotKyNlbmRpZgotICAgICB0YWJsZS0+dHBfZ2V0YXR0ciA9IDA7 Ci0gICAgIHRhYmxlLT50cF9zZXRhdHRyID0gMDsKLSAgICAgdGFibGUtPnRwX3JlcHIgPSAwOwot QEAgLTUyNCw3ICs1MjgsOSBAQCBQeXRob25UeXBlICZQeXRob25UeXBlOjpzdXBwb3J0Q2xhc3Mo KQotICNpZmRlZiBQWUNYWF9QWVRIT05fMlRPMwotIFB5dGhvblR5cGUgJlB5dGhvblR5cGU6OnN1 cHBvcnRQcmludCgpCi0gewotKyNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwODAwMDAKLSAgICAg dGFibGUtPnRwX3ByaW50ID0gcHJpbnRfaGFuZGxlcjsKLSsjZW5kaWYKLSAgICAgcmV0dXJuICp0 aGlzOwotIH0KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzEw MC1kZXRlY3Qtc2hpYm9rZW4yLWFuZC1weXNpZGUyLTUuMTQucGF0Y2ggYi9zcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8xMDAtZGV0ZWN0LXNoaWJva2VuMi1hbmQtcHlzaWRlMi01LjE0LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGNlOWQ1ZmNmOTAuLjAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xMDAtZGV0ZWN0LXNoaWJva2VuMi1hbmQtcHlz aWRlMi01LjE0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotc291cmNlOiBo dHRwczovL3N2bndlYi5mcmVlYnNkLm9yZy9wb3J0cy9oZWFkL2NhZC9mcmVlY2FkL2ZpbGVzL3Bh dGNoLUNNYWtlTGlzdHMudHh0P3JldmlzaW9uPTUwNDM2MSZ2aWV3PWNvCi0KLS0tLSBDTWFrZUxp c3RzLnR4dC5vcmlnCi0rKysgQ01ha2VMaXN0cy50eHQKLUBAIC05ODksNiArOTg5LDEzIEBAIGVu ZGlmKCkKLSAgICAgICAgICAgICBlbmRpZigpCi0gICAgICAgICBlbmRpZigpCi0gCi0rICAgICAg ICAjIHB5c2lkZTIgY2hhbmdlZCBpdCdzIGNtYWtlIGZpbGVzLCB0aGlzIGlzIHRoZSBkYW5jZSB3 ZSBoYXZlCi0rICAgICAgICAjIHRvIGRhbmNlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xk IGFuZCB0aGUgbmV3IHZlcnNpb25zCi0rICAgICAgICBpZihTSElCT0tFTl9QWVRIT05fSU5DTFVE RV9ESVJTIEFORCBOT1QgU0hJQk9LRU5fSU5DTFVERV9ESVIpCi0rICAgICAgICAgIGdldF9wcm9w ZXJ0eShTSElCT0tFTl9JTkNMVURFX0RJUiBUQVJHRVQgU2hpYm9rZW4yOjpsaWJzaGlib2tlbiBQ Uk9QRVJUWSBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUykKLSsgICAgICAgICAgICBnZXRf cHJvcGVydHkoU0hJQk9LRU5fTElCUkFSWSBUQVJHRVQgU2hpYm9rZW4yOjpsaWJzaGlib2tlbiBQ Uk9QRVJUWSBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFKQotKyAgICAgICAgZW5kaWYoU0hJQk9L RU5fUFlUSE9OX0lOQ0xVREVfRElSUyBBTkQgTk9UIFNISUJPS0VOX0lOQ0xVREVfRElSKQotKwot ICAgICAgICAgaWYoTk9UIFNISUJPS0VOX0lOQ0xVREVfRElSKQotICAgICAgICAgICAgIE1FU1NB R0UoIj09PT09PT09PT09PT09PT09PT09XG4iCi0gICAgICAgICAgICAgICAgICAgICAic2hpYm9r ZW4yIG5vdCBmb3VuZC5cbiIKLUBAIC05OTYsNiArMTAwMywxNCBAQCBlbmRpZigpCi0gICAgICAg ICBlbmRpZihOT1QgU0hJQk9LRU5fSU5DTFVERV9ESVIpCi0gCi0gICAgICAgICBmaW5kX3BhY2th Z2UoUHlTaWRlMiBRVUlFVCkjIFJFUVVJUkVECi0rCi0rICAgICAgICAjIHB5c2lkZTIgY2hhbmdl ZCBpdCdzIGNtYWtlIGZpbGVzLCB0aGlzIGlzIHRoZSBkYW5jZSB3ZSBoYXZlCi0rICAgICAgICAj IHRvIGRhbmNlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIGFuZCB0aGUgbmV3IHZlcnNp b25zCi0rICAgICAgICBpZihOT1QgUFlTSURFX0lOQ0xVREVfRElSKQotKyAgICAgICAgICBnZXRf cHJvcGVydHkoUFlTSURFX0lOQ0xVREVfRElSIFRBUkdFVCBQeVNpZGUyOjpweXNpZGUyIFBST1BF UlRZIElOVEVSRkFDRV9JTkNMVURFX0RJUkVDVE9SSUVTKQotKyAgICAgICAgICBnZXRfcHJvcGVy dHkoUFlTSURFX0xJQlJBUlkgVEFSR0VUIFB5U2lkZTI6OnB5c2lkZTIgUFJPUEVSVFkgSU1QT1JU RURfTE9DQVRJT05fUkVMRUFTRSkKLSsgICAgICAgIGVuZGlmKE5PVCBQWVNJREVfSU5DTFVERV9E SVIpCi0rCi0gICAgICAgICBpZihOT1QgUFlTSURFX0lOQ0xVREVfRElSKQotICAgICAgICAgICAg IE1FU1NBR0UoIj09PT09PT09PT09PT09PT09PVxuIgotICAgICAgICAgICAgICAgICAgICAgIlB5 U2lkZTIgbm90IGZvdW5kLlxuIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMv MTAxLXB5c2lkZTItdG9vbC01LjE0LXN1cHBvcnQucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQvcGF0 Y2hlcy8xMDEtcHlzaWRlMi10b29sLTUuMTQtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNjMyMzg0ZDJkZjRhLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9m cmVlY2FkL3BhdGNoZXMvMTAxLXB5c2lkZTItdG9vbC01LjE0LXN1cHBvcnQucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1iYWNrcG9ydCBmcm9tIEZyZWVDQUQgZ2l0IG1hc3Rl ciAocmV2IEAxYmNhNTM5KQotCi0tLS0gY01ha2UvRmluZFB5U2lkZTJUb29scy5jbWFrZS5PUklH Ci0rKysgY01ha2UvRmluZFB5U2lkZTJUb29scy5jbWFrZQotQEAgLTIwLDggKzIwLDI0IEBACi0g ICAgIHNldChQWVNJREVfQklOX0RJUiAke1BZVEhPTl9CSU5fRElSfSkKLSBlbmRpZihXSU4zMiBP UiAke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJEYXJ3aW4iKQotIAotLUZJTkRfUFJPR1JB TShQWVNJREUyVUlDQklOQVJZIE5BTUVTIHB5dGhvbjItcHlzaWRlMi11aWMgcHlzaWRlMi11aWMg cHlzaWRlMi11aWMtJHtQWVRIT05fVkVSU0lPTl9NQUpPUn0uJHtQWVRIT05fVkVSU0lPTl9NSU5P Un0gSElOVFMgJHtQWVNJREVfQklOX0RJUn0pCi0tRklORF9QUk9HUkFNKFBZU0lERTJSQ0NCSU5B UlkgTkFNRVMgcHlzaWRlMi1yY2MgcHlzaWRlMi1yY2MtJHtQWVRIT05fVkVSU0lPTl9NQUpPUn0u JHtQWVRIT05fVkVSU0lPTl9NSU5PUn0gSElOVFMgJHtQWVNJREVfQklOX0RJUn0pCi0rIyBTaW5j ZSBRdCB2NS4xNCwgcHlzaWRlMi11aWMgYW5kIHB5c2lkZTItcmNjIGFyZSBkaXJlY3RseSBwcm92 aWRlZCBieSBRdDVDb3JlIHVpYyBhbmQgcmNjLCB3aXRoICctZyBweXRob24nIG9wdGlvbgotKyMg V2UgdGVzdCBRdDVDb3JlIHZlcnNpb24gdG8gYWN0IGFjY29yZGluZ2x5Ci0rCi0rRklORF9QQUNL QUdFKFF0NUNvcmUpCi0rCi0rSUYoUXQ1Q29yZV9WRVJTSU9OIFZFUlNJT05fTEVTUyA1LjE0KQot KyAgIyBMZWdhY3kgKDwgNS4xNCkKLSsgIEZJTkRfUFJPR1JBTShQWVNJREUyVUlDQklOQVJZIE5B TUVTIHB5dGhvbjItcHlzaWRlMi11aWMgcHlzaWRlMi11aWMgcHlzaWRlMi11aWMtJHtQWVRIT05f VkVSU0lPTl9NQUpPUn0uJHtQWVRIT05fVkVSU0lPTl9NSU5PUn0gSElOVFMgJHtQWVNJREVfQklO X0RJUn0pCi0rICBGSU5EX1BST0dSQU0oUFlTSURFMlJDQ0JJTkFSWSBOQU1FUyBweXNpZGUyLXJj YyBweXNpZGUyLXJjYy0ke1BZVEhPTl9WRVJTSU9OX01BSk9SfS4ke1BZVEhPTl9WRVJTSU9OX01J Tk9SfSBISU5UUyAke1BZU0lERV9CSU5fRElSfSkKLSsgIHNldChVSUNPUFRJT05TICIiKQotKyAg c2V0KFJDQ09QVElPTlMgIiIpCi0rRUxTRShRdDVDb3JlX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDUu MTQpCi0rICAjIE5ldyAoPj0gNS4xNCkKLSsgIEZJTkRfUFJPR1JBTShQWVNJREUyVUlDQklOQVJZ IE5BTUVTIHVpYy1xdDUgdWljKQotKyAgc2V0KFVJQ09QVElPTlMgIi0tZ2VuZXJhdG9yPXB5dGhv biIpCi0rICBGSU5EX1BST0dSQU0oUFlTSURFMlJDQ0JJTkFSWSBOQU1FUyByY2MtcXQ1IHJjYykK LSsgIHNldChSQ0NPUFRJT05TICItLWdlbmVyYXRvcj1weXRob24iICItLWNvbXByZXNzLWFsZ289 emxpYiIgIi0tY29tcHJlc3M9MSIpCi0rRU5ESUYoUXQ1Q29yZV9WRVJTSU9OIFZFUlNJT05fTEVT UyA1LjE0KQotIAotIE1BQ1JPKFBZU0lERV9XUkFQX1VJIG91dGZpbGVzKQotICAgRk9SRUFDSChp dCAke0FSR059KQotQEAgLTMzLDcgKzQ5LDcgQEAKLSAgICAgIykKLSAgICAgaWYoV0lOMzIgT1Ig QVBQTEUpCi0gICAgICAgICBBRERfQ1VTVE9NX0NPTU1BTkQoT1VUUFVUICR7b3V0ZmlsZX0KLS0g ICAgICAgICAgQ09NTUFORCAke1BZU0lERTJVSUNCSU5BUll9ICR7aW5maWxlfSAtbyAke291dGZp bGV9Ci0rICAgICAgICAgIENPTU1BTkQgJHtQWVNJREUyVUlDQklOQVJZfSAke1VJQ09QVElPTlN9 ICR7aW5maWxlfSAtbyAke291dGZpbGV9Ci0gICAgICAgICAgIE1BSU5fREVQRU5ERU5DWSAke2lu ZmlsZX0KLSAgICAgICAgICkKLSAgICAgZWxzZSgpCi1AQCAtNDEsNyArNTcsNyBAQAotICAgICAg ICAgIyBweXNpZGUyLXVpYyBnZW5lcmF0ZXMgaW4gY29tbWVudHMgYXQgYmVnaW5uaW5nLiwgd2hp Y2ggaXMgd2h5Ci0gICAgICAgICAjIHdlIGZvbGxvdyB0aGUgdG9vbCBjb21tYW5kIHdpdGggaW4t cGxhY2Ugc2VkLgotICAgICAgICAgQUREX0NVU1RPTV9DT01NQU5EKE9VVFBVVCAke291dGZpbGV9 Ci0tICAgICAgICAgIENPTU1BTkQgIiR7UFlTSURFMlVJQ0JJTkFSWX0iICIke2luZmlsZX0iIC1v ICIke291dGZpbGV9IgotKyAgICAgICAgICBDT01NQU5EICIke1BZU0lERTJVSUNCSU5BUll9IiAk e1VJQ09QVElPTlN9ICIke2luZmlsZX0iIC1vICIke291dGZpbGV9IgotICAgICAgICAgICBDT01N QU5EIHNlZCAtaSAiL14jIC9kIiAiJHtvdXRmaWxlfSIKLSAgICAgICAgICAgTUFJTl9ERVBFTkRF TkNZICIke2luZmlsZX0iCi0gICAgICAgICApCi1AQCAtNjAsNyArNzYsNyBAQAotICAgICAjKQot ICAgICBpZihXSU4zMiBPUiBBUFBMRSkKLSAgICAgICAgIEFERF9DVVNUT01fQ09NTUFORChPVVRQ VVQgJHtvdXRmaWxlfQotLSAgICAgICAgICBDT01NQU5EICR7UFlTSURFMlJDQ0JJTkFSWX0gJHtp bmZpbGV9IC1vICR7b3V0ZmlsZX0KLSsgICAgICAgICAgQ09NTUFORCAke1BZU0lERTJSQ0NCSU5B Ull9ICR7UkNDT1BUSU9OU30gJHtpbmZpbGV9IC1vICR7b3V0ZmlsZX0KLSAgICAgICAgICAgTUFJ Tl9ERVBFTkRFTkNZICR7aW5maWxlfQotICAgICAgICAgKQotICAgICBlbHNlKCkKLUBAIC02OCw3 ICs4NCw3IEBACi0gICAgICAgICAjIHB5c2lkZS1yY2MgZ2VuZXJhdGVzIGluIGNvbW1lbnRzIGF0 IGJlZ2lubmluZywgd2hpY2ggaXMgd2h5Ci0gICAgICAgICAjIHdlIGZvbGxvdyB0aGUgdG9vbCBj b21tYW5kIHdpdGggaW4tcGxhY2Ugc2VkLgotICAgICAgICAgQUREX0NVU1RPTV9DT01NQU5EKE9V VFBVVCAiJHtvdXRmaWxlfSIKLS0gICAgICAgICAgQ09NTUFORCAiJHtQWVNJREUyUkNDQklOQVJZ fSIgIiR7aW5maWxlfSIgJHtQWV9BVFRSSUJVVEV9IC1vICIke291dGZpbGV9IgotKyAgICAgICAg ICBDT01NQU5EICIke1BZU0lERTJSQ0NCSU5BUll9IiAke1JDQ09QVElPTlN9ICIke2luZmlsZX0i ICR7UFlfQVRUUklCVVRFfSAtbyAiJHtvdXRmaWxlfSIKLSAgICAgICAgICAgQ09NTUFORCBzZWQg LWkgIi9eIyAvZCIgIiR7b3V0ZmlsZX0iCi0gICAgICAgICAgIE1BSU5fREVQRU5ERU5DWSAiJHtp bmZpbGV9IgotICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMv MTAyLXF0NS01LjE1LjAucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xMDItcXQ1LTUu MTUuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM0NjMyZDgwYTgwLi4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTAyLXF0NS01LjE1LjAu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1Tb3VyY2U6IEBwdWxsbW9sbAot VXBzdHJlYW06IG5vCi1SZWFzb246IHF0NS01LjE1LjAgcmVxdWlyZXMgZXhwbGljaXQgaW5jbHVk ZSBmb3IgUVBhaW50ZXJQYXRoCi0KLS0tLSBzcmMvTW9kL0ltYWdlL0d1aS9PcGVuR0xJbWFnZUJv eC5jcHAKLSsrKyBzcmMvTW9kL0ltYWdlL0d1aS9PcGVuR0xJbWFnZUJveC5jcHAJMjAyMC0wNy0x NCAxMjoyNTo0Mi42MDcwNzU4NTYgKzAyMDAKLUBAIC0yNiw2ICsyNiw3IEBACi0gIyBpbmNsdWRl IDxRU3VyZmFjZUZvcm1hdD4KLSAjIGluY2x1ZGUgPFFNZXNzYWdlQm94PgotICMgaW5jbHVkZSA8 UVBhaW50ZXI+Ci0rIyBpbmNsdWRlIDxRUGFpbnRlclBhdGg+Ci0gI2VuZGlmCi0gCi0gI2lmIGRl ZmluZWQoX19NSU5HVzMyX18pCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8x MDMtZmluZC1jb2luM3Y0LWRvYy5wYXRjaCBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzEwMy1m aW5kLWNvaW4zdjQtZG9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Yjdk ZTUxNGRlNGIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xMDMt ZmluZC1jb2luM3Y0LWRvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZy b20gMDQ4MzNhNWYxY2JjMDdmOGY2YWU5NDQ1M2M0NTM1ZTEzNzg5YWEwNSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IHlvcGl0byA8cGllcnJlLmJvdXJnaW5AZnJlZS5mcj4KLURhdGU6 IE1vbiwgNiBKdWwgMjAyMCAwNjo1NDowNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDog Zml4IENvaW4gM2QgZG9jdW1lbnRhdGlvbiBkaXNjb3ZlcmluZwotCi0qIGNvaW4zZCA0LjAuMCBk ZWZhdWx0IGxvY2F0aW9uIGlzIC91c3Ivc2hhcmUvZG9jL0NvaW4vaHRtbC8KLSogbWlzdXNlcyBv ZiBmaW5kX2ZpbGVzKCkgaWYgc2V2ZXJhbCBjYW5kaWRhdGVzIGZvciBmaWxlbmFtZQotKiBleHBv cnQgdmFyaWFibGUgQ09JTjNEX0RPQ19GT1VORCB0aGF0IGlzIHVzZWQgYnkgY01ha2UvRnJlZUNB RF9IZWxwZXJzL1ByaW50RmluYWxSZXBvcnQuY21ha2UKLS0tLQotIGNNYWtlL0ZpbmRDb2luM0RE b2MuY21ha2UgfCAxMiArKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGNNYWtlL0ZpbmRDb2luM0REb2MuY21h a2UgY01ha2UvRmluZENvaW4zRERvYy5jbWFrZQotaW5kZXggODgzMzY4NDQ1Li5jNmM5MmYyNjAg MTAwNjQ0Ci0tLS0gY01ha2UvRmluZENvaW4zRERvYy5jbWFrZQotKysrIGNNYWtlL0ZpbmRDb2lu M0REb2MuY21ha2UKLUBAIC0yMywxOCArMjMsMTkgQEAgSUYgKENPSU4zRF9GT1VORCkKLSAgICAg ICBmaW5kX3BhdGgoQ09JTjNEX0RPQ19QQVRIIGluZGV4Lmh0bWwgDQotICAgICAgICAgICAgICAg ICAvdXNyL3NoYXJlL2RvYy9saWJjb2luODAtZG9jL2h0bWwNCi0gICAgICAgICAgICAgICAgIC91 c3Ivc2hhcmUvZG9jL2NvaW4vaHRtbA0KLSsgICAgICAgICAgICAgICAgL3Vzci9zaGFyZS9kb2Mv Q29pbi9odG1sDQotICAgICAgICkNCi0gICAgICAgSUYoIEVYSVNUUyAke0NPSU4zRF9ET0NfUEFU SH0pDQotICAgICAgICAgbWVzc2FnZShTVEFUVVMgIkNvaW4zRCBkb2MgaXMgaW5zdGFsbGVkIikN Ci0tICAgICAgICBmaW5kX2ZpbGUoQ09JTjNEX0RPQ19UQUdGSUxFIGNvaW4udGFnIENvaW4udGFn IA0KLS0gICAgICAgICAgICAke0NPSU4zRF9ET0NfUEFUSH0NCi0rICAgICAgICBmaW5kX2ZpbGUo Q09JTjNEX0RPQ19UQUdGSUxFIE5BTUVTIGNvaW4udGFnIENvaW4udGFnIA0KLSsgICAgICAgICAg ICBQQVRIUyAke0NPSU4zRF9ET0NfUEFUSH0NCi0gICAgICAgICApDQotICAgICAgICAgSUYoIEVY SVNUUyAke0NPSU4zRF9ET0NfVEFHRklMRX0pDQotICAgICAgICAgICBTRVQoIENPSU4zRF9ET0Nf Rk9VTkQgIllFUyINCi0gICAgICAgICAgICkNCi0gICAgICAgICBFTFNFKCBFWElTVFMgJHtDT0lO M0RfRE9DX1RBR0ZJTEV9KQ0KLS0gICAgICAgICAgZmluZF9maWxlKENPSU4zRF9ET0NfVEFHRklM RV9HWiBjb2luLnRhZy5neiBDb2luLnRhZy5neiANCi0tICAgICAgICAgICAgICAke0NPSU4zRF9E T0NfUEFUSH0NCi0rICAgICAgICAgIGZpbmRfZmlsZShDT0lOM0RfRE9DX1RBR0ZJTEVfR1ogTkFN RVMgY29pbi50YWcuZ3ogQ29pbi50YWcuZ3ogDQotKyAgICAgICAgICAgICAgUEFUSFMgJHtDT0lO M0RfRE9DX1BBVEh9DQotICAgICAgICAgICApDQotICAgICAgICAgICBJRiggRVhJU1RTICR7Q09J TjNEX0RPQ19UQUdGSUxFX0dafSkNCi0gICAgICAgICAgICAgbWVzc2FnZShTVEFUVVMgIiAgRm91 bmQgJHtDT0lOM0RfRE9DX1RBR0ZJTEVfR1p9IikNCi1AQCAtODUsNCArODYsNSBAQCBpZihDT0lO M0RfRE9DX0ZPVU5EKQotICAgbWVzc2FnZShTVEFUVVMgIiAgTG9jYXRpb246ICR7Q09JTjNEX0RP Q19QQVRIfSIpDQotIGVuZGlmKENPSU4zRF9ET0NfRk9VTkQpDQotIA0KLS0NCi0rIyBleHBvcnQg Zm9yIG90aGVycw0KLStTRVQoIENPSU4zRF9ET0NfRk9VTkQgIiR7Q09JTjNEX0RPQ19GT1VORH0i IENBQ0hFIEJPT0wgIkNvaW4zZCBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSIpDQotLS0gCi0yLjI3 LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTUwLXZ0azkucGF0Y2gg Yi9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTAtdnRrOS5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggZThmYjVlYzE0YjdhLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9m cmVlY2FkL3BhdGNoZXMvMTUwLXZ0azkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NjAgKzAs MCBAQAotVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vd3dtYXllci9GcmVlQ0FEL2NvbW1p dC81MjU5OWY3NzFmYTkzNGNlZWIxMWE5NzBjMzYzOWJmYThmOTA0MTFlCi0KLWRpZmYgLS1naXQg c3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX01lc2hFbGVtZW50Lmh4eCBiL3NyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19NZXNoRWxlbWVudC5oeHgKLWluZGV4IDE0YTZk OWE3Ni4uN2I5ZDg4ZGIxIDEwMDY0NAotLS0tIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMv U01EU19NZXNoRWxlbWVudC5oeHgKLSsrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NN RFNfTWVzaEVsZW1lbnQuaHh4Ci1AQCAtNDAsMTAgKzQwLDE2IEBACi0gCi0gI2luY2x1ZGUgPHZ0 a1R5cGUuaD4KLSAjaW5jbHVkZSA8dnRrQ2VsbFR5cGUuaD4KLSsjaW5jbHVkZSA8dnRrQ2VsbEFy cmF5Lmg+Ci0gCi0gLy90eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVTaG9ydFR5cGU7Ci0gdHlwZWRl ZiBzaG9ydCBTaG9ydFR5cGU7Ci0gdHlwZWRlZiBpbnQgICBMb25nVHlwZTsKLSsjaWZkZWYgVlRL X0NFTExfQVJSQVlfVjIKLSt0eXBlZGVmIGNvbnN0IHZ0a0lkVHlwZSogdnRrSWRUeXBlUHRyOwot KyNlbHNlCi0rdHlwZWRlZiB2dGtJZFR5cGUqIHZ0a0lkVHlwZVB0cjsKLSsjZW5kaWYKLSAKLSBj bGFzcyBTTURTX01lc2hOb2RlOwotIGNsYXNzIFNNRFNfTWVzaEVkZ2U7Ci1AQCAtMTkyLDcgKzE5 OCw3IEBAIHByb3RlY3RlZDoKLSAgIC8vISBFbGVtZW50IGluZGV4IGluIHZlY3RvciBTTURTX01l c2g6Om15Tm9kZXMgb3IgU01EU19NZXNoOjpteUNlbGxzCi0gICBpbnQgbXlJRDsKLSAgIC8vISBp bmRleCBpbiB2dGtVbnN0cnVjdHVyZWRHcmlkCi0tICBpbnQgbXlWdGtJRDsKLSsgIHZ0a0lkVHlw ZSBteVZ0a0lEOwotICAgLy8hIFNNRFNfTWVzaCBpZGVudGlmaWNhdGlvbiBpbiBTTUVTSAotICAg U2hvcnRUeXBlIG15TWVzaElkOwotICAgLy8hIFN1YlNoYXBlIGFuZCBTdWJNZXNoIGlkZW50aWZp Y2F0aW9uIGluIFNNRVNIRFMKLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2lu Yy9TTURTX1Vuc3RydWN0dXJlZEdyaWQuaHh4IGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2lu Yy9TTURTX1Vuc3RydWN0dXJlZEdyaWQuaHh4Ci1pbmRleCA5ZTRhMjNlZGQuLjc3NDY1ODE0NSAx MDA2NDQKLS0tLSBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1cmVk R3JpZC5oeHgKLSsrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1 cmVkR3JpZC5oeHgKLUBAIC05NSw3ICs5NSwxMSBAQCBwdWJsaWM6Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8aW50LCBzdGQ6Om1hcDxsb25nLGludD4g PiYgbm9kZVF1YWREb21haW5zKTsKLSAgIHZ0a0NlbGxMaW5rcyogR2V0TGlua3MoKQotICAgewot KyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dnRrQ2Vs bExpbmtzKj4oR2V0Q2VsbExpbmtzKCkpOwotKyNlbHNlCi0gICAgIHJldHVybiBMaW5rczsKLSsj ZW5kaWYKLSAgIH0KLSAgIFNNRFNfRG93bndhcmQqIGdldERvd25BcnJheSh1bnNpZ25lZCBjaGFy IHZ0a1R5cGUpCi0gICB7Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMv U01EUy9TTURTX0JhbGxFbGVtZW50LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMv U01EUy9TTURTX0JhbGxFbGVtZW50LmNwcAotaW5kZXggMjk5MDkzYzk0Li45OTBlMmI2NDEgMTAw NjQ0Ci0tLS0gc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfQmFsbEVsZW1l bnQuY3BwCi0rKysgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfQmFsbEVs ZW1lbnQuY3BwCi1AQCAtNjgsOSArNjgsMTMgQEAgYm9vbCBTTURTX0JhbGxFbGVtZW50OjpDaGFu Z2VOb2RlIChjb25zdCBTTURTX01lc2hOb2RlICogbm9kZSkKLSB7Ci0gICB2dGtVbnN0cnVjdHVy ZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7 Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0rICB2dGtJ ZFR5cGVQdHIgcHRzID0gMDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywg cHRzKTsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsvL0ZJWE1FOiB2dGs5Ci0rI2Vsc2UK LSAgIHB0c1swXSA9IG5vZGUtPmdldFZ0a0lkKCk7Ci0rI2VuZGlmCi0gICBTTURTX01lc2g6Ol9t ZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9kaWZpZWQoKTsKLSAgIHJldHVybiB0cnVlOwotIH0K LUBAIC04Myw3ICs4Nyw4IEBAIHZvaWQgU01EU19CYWxsRWxlbWVudDo6UHJpbnQgKHN0ZDo6b3N0 cmVhbSAmIE9TKSBjb25zdAotIGNvbnN0IFNNRFNfTWVzaE5vZGUqIFNNRFNfQmFsbEVsZW1lbnQ6 OkdldE5vZGUgKGNvbnN0IGludCBpbmQpIGNvbnN0Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3Jp ZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotLSAg dnRrSWRUeXBlIG5wdHMsICpwdHM7Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0 ciBwdHM7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKCBteVZ0a0lELCBucHRzLCBwdHMgKTsKLSAg IHJldHVybiBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPkZpbmROb2RlVnRrKCBwdHNb IDAgXSk7Ci0gfQotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMv U01EU19Eb3dud2FyZC5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01E U19Eb3dud2FyZC5jcHAKLWluZGV4IGQ2MDQ5YzBiZC4uNzc1NTVkNWJjIDEwMDY0NAotLS0tIHNy Yy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNwcAotKysrIHNy Yy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNwcAotQEAgLTMw Myw3ICszMDMsNyBAQCBpbnQgU01EU19Eb3duMUQ6OmdldE5vZGVTZXQoaW50IGNlbGxJZCwgaW50 KiBub2RlU2V0KQotIHZvaWQgU01EU19Eb3duMUQ6OnNldE5vZGVzKGludCBjZWxsSWQsIGludCB2 dGtJZCkKLSB7Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKnB0czsgLy8g d2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgZmFjZQotKyAgdnRrSWRUeXBlUHRy IHB0czsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgZmFjZQotICAgX2dy aWQtPkdldENlbGxQb2ludHModnRrSWQsIG5wdHMsIHB0cyk7Ci0gICAvLyBNRVNTQUdFKHZ0a0lk IDw8ICIgIiA8PCBucHRzIDw8ICIgICIgPDwgX25iRG93bkNlbGxzKTsKLSAgIC8vQVNTRVJUKG5w dHMgPT0gX25iRG93bkNlbGxzKTsKLUBAIC01MzIsNyArNTMyLDcgQEAgaW50IFNNRFNfRG93bjJE Ojpjb21wdXRlVm9sdW1lSWRzKGludCBjZWxsSWQsIGludCogaWRzKQotICAgLy8gLS0tIGZpbmQg cG9pbnQgaWQncyBvZiB0aGUgZmFjZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRr SWRUeXBlICpwdHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UK LSsgIHZ0a0lkVHlwZVB0ciBwdHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIGZhY2UKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgcHRzKTsKLSAg IHZlY3RvcjxpbnQ+IG5vZGVzOwotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRzOyBpKyspCi1A QCAtNjI3LDcgKzYyNyw3IEBAIGludCBTTURTX0Rvd24yRDo6Y29tcHV0ZVZvbHVtZUlkc0Zyb21O b2Rlc0ZhY2UoaW50KiBwdHMsIGludCBucHRzLCBpbnQqIGlkcykKLSB2b2lkIFNNRFNfRG93bjJE OjpzZXRUZW1wTm9kZXMoaW50IGNlbGxJZCwgaW50IHZ0a0lkKQotIHsKLSAgIHZ0a0lkVHlwZSBu cHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBp ZCdzIG9mIHRoZSBmYWNlCi0rICB2dGtJZFR5cGVQdHIgcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRo ZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh2dGtJZCwg bnB0cywgcHRzKTsKLSAgIC8vIE1FU1NBR0UodnRrSWQgPDwgIiAiIDw8IG5wdHMgPDwgIiAgIiA8 PCBfbmJOb2Rlcyk7Ci0gICAvL0FTU0VSVChucHRzID09IF9uYk5vZGVzKTsKLUBAIC03OTUsNyAr Nzk1LDcgQEAgdm9pZCBTTURTX0Rvd24zRDo6Z2V0Tm9kZUlkcyhpbnQgY2VsbElkLCBzdGQ6OnNl dDxpbnQ+JiBub2RlU2V0KQotIHsKLSAgIGludCB2dGtJZCA9IHRoaXMtPl92dGtDZWxsSWRzW2Nl bGxJZF07Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3 aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0 ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0g ICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh2dGtJZCwgbnB0cywgbm9kZXMpOwotICAgZm9yIChpbnQg aSA9IDA7IGkgPCBucHRzOyBpKyspCi0gICAgIG5vZGVTZXQuaW5zZXJ0KG5vZGVzW2ldKTsKLUBA IC0xMTI2LDcgKzExMjYsNyBAQCB2b2lkIFNNRFNfRG93blRldHJhOjpnZXRPcmRlcmVkTm9kZXNP ZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgbwotICAgLy9NRVNTQUdF KCJjZWxsSWQgPSAiIDw8IGNlbGxJZCk7Ci0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2 dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2 b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQg aWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh0aGlzLT5fdnRrQ2Vs bElkc1tjZWxsSWRdLCBucHRzLCBub2Rlcyk7Ci0gCi0gICBzZXQ8aW50PiB0b2ZpbmQ7Ci1AQCAt MTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBTTURTX0Rvd25UZXRyYTo6Y29tcHV0ZUZhY2VzV2l0aE5v ZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2UKLSAgIC8vIC0tLSBmaW5k IHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAg dnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUg dm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50 IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRz LCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5v ZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAtMTIzNCw3ICsxMjM0LDcgQEAgdm9pZCBTTURTX0Rv d25RdWFkVGV0cmE6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rv cjx2dGtJZFR5cGUKLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAg dnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0 byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8v IHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdl dENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAot ICAgc2V0PGludD4gdG9maW5kOwotQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgU01EU19Eb3du UXVhZFRldHJhOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5v ZGVzVHlwZSYKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAg dnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0 byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8v IHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdl dENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFs bCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAtMTM1Nyw3 ICsxMzU3LDcgQEAgdm9pZCBTTURTX0Rvd25QeXJhbWlkOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2Uo aW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYKLSAgIC8vTUVTU0FHRSgiY2VsbElk ID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBl ICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0r ICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2Vs bElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAgLTE0MzUsNyAr MTQzNSw3IEBAIHZvaWQgU01EU19Eb3duUHlyYW1pZDo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGlu dCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhCi0gICAvLyAtLS0gZmluZCBwb2ludCBp ZCdzIG9mIHRoZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlw ZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQot KyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9m IHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgbm9kZXMp OwotIAotICAgLy8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3Mg Zm9yIGVhY2ggZmFjZQotQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgU01EU19Eb3duUXVhZFB5 cmFtaWQ6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJ ZFR5Ci0gICAvL01FU1NBR0UoImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAgIHZ0a0lkVHlw ZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBv aW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJl ZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9p bnRzKHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAKLSAgIHNldDxp bnQ+IHRvZmluZDsKLUBAIC0xNTgwLDcgKzE1ODAsNyBAQCB2b2lkIFNNRFNfRG93blF1YWRQeXJh bWlkOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlw ZQotICAgLy8gLS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gCi0gICB2dGtJZFR5 cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBw b2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCBy ZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBv aW50cyhjZWxsSWQsIG5wdHMsIG5vZGVzKTsKLSAKLSAgIC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBv cmRlcmVkIGxpc3Qgb2Ygbm9kZSBpZCdzIGZvciBlYWNoIGZhY2UKLUBAIC0xNjYwLDcgKzE2NjAs NyBAQCB2b2lkIFNNRFNfRG93blBlbnRhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJ ZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgbwotICAgLy9NRVNTQUdFKCJjZWxsSWQgPSAiIDw8 IGNlbGxJZCk7Ci0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVz OyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lk VHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9s dW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh0aGlzLT5fdnRrQ2VsbElkc1tjZWxsSWRdLCBu cHRzLCBub2Rlcyk7Ci0gCi0gICBzZXQ8aW50PiB0b2ZpbmQ7Ci1AQCAtMTc0NCw3ICsxNzQ0LDcg QEAgdm9pZCBTTURTX0Rvd25QZW50YTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQs IExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2UKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2Yg dGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2Rl czsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJ ZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZv bHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0g ICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFj aCBmYWNlCi1AQCAtMTgxMCw3ICsxODEwLDcgQEAgdm9pZCBTTURTX0Rvd25RdWFkUGVudGE6Omdl dE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGUKLSAg IC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBlIG5wdHMg PSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQn cyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8g dGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModGhp cy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGludD4gdG9m aW5kOwotQEAgLTE4OTYsNyArMTg5Niw3IEBAIHZvaWQgU01EU19Eb3duUXVhZFBlbnRhOjpjb21w dXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYKLSAgIC8v IC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRUeXBlIG5wdHMg PSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQn cyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8g dGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2Vs bElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBs aXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1AQCAtMTk4MSw3ICsxOTgxLDcgQEAgdm9p ZCBTTURTX0Rvd25IZXhhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2 ZWN0b3I8dnRrSWRUeXBlPiYgb3IKLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQp OwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2ls bCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIg bm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAg X2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9k ZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAgLTIwMzYsNyArMjAzNiw3IEBAIHZvaWQg U01EU19Eb3duSGV4YTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVt QnlOb2Rlc1R5cGUmIGZhY2VzCi0gICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1 bWUKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdp bGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRy IG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAg IF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOwotIAotICAgLy8gLS0t IGNyZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQot QEAgLTIxMTIsNyArMjExMiw3IEBAIHZvaWQgU01EU19Eb3duUXVhZEhleGE6OmdldE9yZGVyZWRO b2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGU+Ci0gICAvL01FU1NB R0UoImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0g IHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhl IHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2lu dCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtD ZWxsSWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAKLSAgIHNldDxpbnQ+IHRvZmluZDsKLUBA IC0yMTY3LDcgKzIxNjcsNyBAQCB2b2lkIFNNRFNfRG93blF1YWRIZXhhOjpjb21wdXRlRmFjZXNX aXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYgZgotICAgLy8gLS0tIGZp bmQgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0t ICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRo ZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9p bnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxsSWQsIG5w dHMsIG5vZGVzKTsKLSAKLSAgIC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBvcmRlcmVkIGxpc3Qgb2Yg bm9kZSBpZCdzIGZvciBlYWNoIGZhY2UKLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNt ZXNoL3NyYy9TTURTL1NNRFNfTWVzaC5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3Jj L1NNRFMvU01EU19NZXNoLmNwcAotaW5kZXggNGFjNmZkNzY4Li41MWIyODE2OTkgMTAwNjQ0Ci0t LS0gc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaC5jcHAKLSsrKyBz cmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoLmNwcAotQEAgLTQ3NjMs NyArNDc2MywxMSBAQCB2b2lkIFNNRFNfTWVzaDo6ZHVtcEdyaWQoc3RyaW5nIGZpY2R1bXApCi0g ICAgICAgICBmaWNjb24gPDwgZW5kbDsKLSAgIH0KLSAgIGZpY2NvbiA8PCAiLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gY29ubmVjdGl2aXR5ICIgPDwgIG5iUG9pbnRzIDw8IGVuZGw7 Ci0tICAgICAgICB2dGtDZWxsTGlua3MgKmxpbmtzID0gbXlHcmlkLT5HZXRDZWxsTGlua3MoKTsK LSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHZ0a0NlbGxMaW5rcyAqbGlua3MgPSBzdGF0 aWNfY2FzdDx2dGtDZWxsTGlua3MqPihteUdyaWQtPkdldENlbGxMaW5rcygpKTsKLSsjZWxzZQot KyAgdnRrQ2VsbExpbmtzICpsaW5rcyA9IG15R3JpZC0+R2V0Q2VsbExpbmtzKCk7Ci0rI2VuZGlm Ci0gICBmb3IgKGludCBpPTA7IGk8bmJQb2ludHM7IGkrKykKLSAgIHsKLSAgICAgICAgIGludCBu Y2VsbHMgPSBsaW5rcy0+R2V0TmNlbGxzKGkpOwotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fs b21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoMERFbGVtZW50LmNwcCBiL3NyYy8zcmRQYXJ0eS9z YWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2gwREVsZW1lbnQuY3BwCi1pbmRleCA5NTQzOGVh YjAuLmE3ZjgwNTllMCAxMDA2NDQKLS0tLSBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NN RFMvU01EU19NZXNoMERFbGVtZW50LmNwcAotKysrIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9z cmMvU01EUy9TTURTX01lc2gwREVsZW1lbnQuY3BwCi1AQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wg U01EU19NZXNoMERFbGVtZW50OjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rl c1tdLCBjb25zdCBpbnQgbmJOCi0gICB7Ci0gICAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQg PSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLSAgICAgdnRrSWRU eXBlIG5wdHMgPSAwOwotLSAgICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0rICAgIHZ0a0lkVHlwZVB0 ciBwdHMgPSAwOwotICAgICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7 Ci0gICAgIGlmIChuYk5vZGVzICE9IG5wdHMpCi0gICAgIHsKLUBAIC0xNTUsNyArMTU1LDExIEBA IGJvb2wgU01EU19NZXNoMERFbGVtZW50OjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2Rl KiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOCi0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0g ICAgIG15Tm9kZSA9IG5vZGVzWzBdOwotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKy8vRklY TUU6IHZ0azkKLSsjZWxzZQotICAgICBwdHNbMF0gPSBteU5vZGUtPmdldFZ0a0lkKCk7Ci0rI2Vu ZGlmCi0gCi0gICAgIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+c2V0TXlNb2RpZmll ZCgpOwotICAgICByZXR1cm4gdHJ1ZTsKLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNt ZXNoL3NyYy9TTURTL1NNRFNfTWVzaE5vZGUuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNo L3NyYy9TTURTL1NNRFNfTWVzaE5vZGUuY3BwCi1pbmRleCBmNjQ3YTVmMWIuLjViOTAzYzhmYiAx MDA2NDQKLS0tLSBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoTm9k ZS5jcHAKLSsrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoTm9k ZS5jcHAKLUBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgotIFNNRFNfRWxlbUl0ZXJhdG9yUHRy IFNNRFNfTWVzaE5vZGU6OgotIEdldEludmVyc2VFbGVtZW50SXRlcmF0b3IoU01EU0Fic19FbGVt ZW50VHlwZSB0eXBlKSBjb25zdAotIHsKLS0gIHZ0a0NlbGxMaW5rczo6TGluayBsID0gU01EU19N ZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5rcygpLT5HZXRM aW5rKG15VnRrSUQpOwotKyAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2dGtD ZWxsTGlua3MqPihTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0 Q2VsbExpbmtzKCkpLT5HZXRMaW5rKG15VnRrSUQpOwotICAgLy9NRVNTQUdFKCJteUlEICIgPDwg bXlJRCA8PCAiIG5jZWxscyAiIDw8IGwubmNlbGxzKTsKLSAgIHJldHVybiBTTURTX0VsZW1JdGVy YXRvclB0cihuZXcgU01EU19NZXNoTm9kZV9NeUludkl0ZXJhdG9yKFNNRFNfTWVzaDo6X21lc2hM aXN0W215TWVzaElkXSwgbC5jZWxscywgbC5uY2VsbHMsIHR5cGUpKTsKLSB9Ci1AQCAtMjUxLDcg KzI1MSw3IEBAIGVsZW1lbnRzSXRlcmF0b3IoU01EU0Fic19FbGVtZW50VHlwZSB0eXBlKSBjb25z dAotICAgICByZXR1cm4gU01EU19NZXNoRWxlbWVudDo6ZWxlbWVudHNJdGVyYXRvcihTTURTQWJz X05vZGUpOwotICAgZWxzZQotICAgewotLSAgICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IFNNRFNf TWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3MoKS0+R2V0 TGluayhteVZ0a0lEKTsKLSsgICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2 dGtDZWxsTGlua3MqPihTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+ R2V0Q2VsbExpbmtzKCkpLT5HZXRMaW5rKG15VnRrSUQpOwotICAgICByZXR1cm4gU01EU19FbGVt SXRlcmF0b3JQdHIobmV3IFNNRFNfTWVzaE5vZGVfTXlJdGVyYXRvcihTTURTX01lc2g6Ol9tZXNo TGlzdFtteU1lc2hJZF0sIGwuY2VsbHMsIGwubmNlbGxzLCB0eXBlKSk7Ci0gICB9Ci0gfQotQEAg LTM1MCw3ICszNTAsNyBAQCB2b2lkIFNNRFNfTWVzaE5vZGU6OkFkZEludmVyc2VFbGVtZW50KGNv bnN0IFNNRFNfTWVzaEVsZW1lbnQqIE1FKQotICAgY29uc3QgU01EU19NZXNoQ2VsbCAqY2VsbCA9 IGR5bmFtaWNfY2FzdDxjb25zdCBTTURTX01lc2hDZWxsKj4gKE1FKTsKLSAgIGFzc2VydChjZWxs KTsKLSAgIFNNRFNfVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0 W215TWVzaElkXS0+Z2V0R3JpZCgpOwotLSAgdnRrQ2VsbExpbmtzICpMaW5rcyA9IGdyaWQtPkdl dENlbGxMaW5rcygpOwotKyAgdnRrQ2VsbExpbmtzICpMaW5rcyA9IHN0YXRpY19jYXN0PHZ0a0Nl bGxMaW5rcyo+KGdyaWQtPkdldENlbGxMaW5rcygpKTsKLSAgIExpbmtzLT5SZXNpemVDZWxsTGlz dChteVZ0a0lELCAxKTsKLSAgIExpbmtzLT5BZGRDZWxsUmVmZXJlbmNlKGNlbGwtPmdldFZ0a0lk KCksIG15VnRrSUQpOwotIH0KLUBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBTTURTX01lc2hOb2Rl OjpDbGVhckludmVyc2VFbGVtZW50cygpCi0gCi0gYm9vbCBTTURTX01lc2hOb2RlOjplbXB0eUlu dmVyc2VFbGVtZW50cygpCi0gewotLSAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBTTURTX01lc2g6 Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCktPkdldExpbmso bXlWdGtJRCk7Ci0rICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRpY19jYXN0PHZ0a0NlbGxM aW5rcyo+KFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxs TGlua3MoKSktPkdldExpbmsobXlWdGtJRCk7Ci0gICByZXR1cm4gKGwubmNlbGxzID09IDApOwot IH0KLSAKLUBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBTTURTX01lc2hOb2RlOjplbXB0eUludmVy c2VFbGVtZW50cygpCi0gCi0gaW50IFNNRFNfTWVzaE5vZGU6Ok5iSW52ZXJzZUVsZW1lbnRzKFNN RFNBYnNfRWxlbWVudFR5cGUgdHlwZSkgY29uc3QKLSB7Ci0tICB2dGtDZWxsTGlua3M6Okxpbmsg bCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlu a3MoKS0+R2V0TGluayhteVZ0a0lEKTsKLSsgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGlj X2Nhc3Q8dnRrQ2VsbExpbmtzKj4oU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRH cmlkKCktPkdldENlbGxMaW5rcygpKS0+R2V0TGluayhteVZ0a0lEKTsKLSAKLSAgIGlmICggdHlw ZSA9PSBTTURTQWJzX0FsbCApCi0gICAgIHJldHVybiBsLm5jZWxsczsKLWRpZmYgLS1naXQgc3Jj LzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5jcHAg Yi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19VbnN0cnVjdHVyZWRHcmlk LmNwcAotaW5kZXggZmJkOTAzYjFlLi4xOWNjZWJjYWIgMTAwNjQ0Ci0tLS0gc3JjLzNyZFBhcnR5 L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5jcHAKLSsrKyBzcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmNwcAot QEAgLTEzOSw4ICsxMzksOCBAQCBpbnQgU01EU19VbnN0cnVjdHVyZWRHcmlkOjpJbnNlcnROZXh0 TGlua2VkQ2VsbChpbnQgdHlwZSwgaW50IG5wdHMsIHZ0a0lkVHlwZSAqcAotICAgZm9yICg7IGl0 ICE9IHNldE9mTm9kZXMuZW5kKCk7ICsraXQpCi0gICAgIHsKLSAgICAgICAvL01FU1NBR0UoInJl dmVyc2UgbGluayBmb3Igbm9kZSAiIDw8ICppdCA8PCAiIGNlbGwgIiA8PCBjZWxsaWQpOwotLSAg ICAgIHRoaXMtPkxpbmtzLT5SZXNpemVDZWxsTGlzdCgqaXQsIDEpOwotLSAgICAgIHRoaXMtPkxp bmtzLT5BZGRDZWxsUmVmZXJlbmNlKGNlbGxpZCwgKml0KTsKLSsgICAgICB0aGlzLT5HZXRMaW5r cygpLT5SZXNpemVDZWxsTGlzdCgqaXQsIDEpOwotKyAgICAgIHRoaXMtPkdldExpbmtzKCktPkFk ZENlbGxSZWZlcmVuY2UoY2VsbGlkLCAqaXQpOwotICAgICB9Ci0gCi0gICByZXR1cm4gY2VsbGlk OwotQEAgLTMzMiw5ICszMzIsMTMgQEAgdm9pZCBTTURTX1Vuc3RydWN0dXJlZEdyaWQ6OmNvcHlC bG9jKHZ0a1Vuc2lnbmVkQ2hhckFycmF5ICpuZXdUeXBlcywKLSAgICAgewotICAgICAgIG5ld1R5 cGVzLT5TZXRWYWx1ZShhbHJlYWR5Q29waWVkLCB0aGlzLT5UeXBlcy0+R2V0VmFsdWUoaikpOwot ICAgICAgIGlkQ2VsbHNPbGRUb05ld1tqXSA9IGFscmVhZHlDb3BpZWQ7IC8vIG9sZCB2dGtJZCAt LT4gbmV3IHZ0a0lkCi0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICAgICAgdnRrSWRUeXBl IG9sZExvYzsgLy9GSVhNRTogdnRrOQotKyNlbHNlCi0gICAgICAgdnRrSWRUeXBlIG9sZExvYyA9 IHRoaXMtPkxvY2F0aW9ucy0+R2V0VmFsdWUoaik7Ci0rI2VuZGlmCi0gICAgICAgdnRrSWRUeXBl IG5icHRzOwotLSAgICAgIHZ0a0lkVHlwZSAqb2xkUHRzQ2VsbCA9IDA7Ci0rICAgICAgdnRrSWRU eXBlUHRyIG9sZFB0c0NlbGwgPSAwOwotICAgICAgIHRoaXMtPkNvbm5lY3Rpdml0eS0+R2V0Q2Vs bChvbGRMb2MsIG5icHRzLCBvbGRQdHNDZWxsKTsKLSAgICAgICBhc3NlcnQobmJwdHMgPCBOQk1B WE5PREVTSU5DRUxMKTsKLSAgICAgICAvL01FU1NBR0UoaiA8PCAiICIgPDwgYWxyZWFkeUNvcGll ZCA8PCAiICIgPDwgKGludCl0aGlzLT5UeXBlcy0+R2V0VmFsdWUoaikgPDwgIiAiIDw8IG9sZExv YyA8PCAiICIgPDwgbmJwdHMgKTsKLUBAIC05NTMsMTQgKzk1NywxOCBAQCB2b2lkIFNNRFNfVW5z dHJ1Y3R1cmVkR3JpZDo6R2V0Tm9kZUlkcyhzdGQ6OnNldDxpbnQ+JiBub2RlU2V0LCBpbnQgZG93 bklkLCB1bnNpZwotIHZvaWQgU01EU19VbnN0cnVjdHVyZWRHcmlkOjpNb2RpZnlDZWxsTm9kZXMo aW50IHZ0a1ZvbElkLCBzdGQ6Om1hcDxpbnQsIGludD4gbG9jYWxDbG9uZWROb2RlSWRzKQotIHsK LSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVy IHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0rICB2dGtJZFR5cGVQdHIgcHRzOyAvLyB3 aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0gICB0aGlzLT5HZXRDZWxs UG9pbnRzKHZ0a1ZvbElkLCBucHRzLCBwdHMpOwotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRz OyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAobG9jYWxDbG9uZWROb2RlSWRzLmNvdW50KHB0c1tp XSkpCi0gICAgICAgICB7Ci0gICAgICAgICAgIHZ0a0lkVHlwZSBvbGRwdCA9IHB0c1tpXTsKLSsj aWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsvL0ZJWE1FOiB2dGs5Ci0rI2Vsc2UKLSAgICAgICAg ICAgcHRzW2ldID0gbG9jYWxDbG9uZWROb2RlSWRzW29sZHB0XTsKLSsjZW5kaWYKLSAgICAgICAg ICAgLy9NRVNTQUdFKG9sZHB0IDw8ICIgLS0+ICIgPDwgcHRzW2ldKTsKLSAgICAgICAgICAgLy90 aGlzLT5SZW1vdmVSZWZlcmVuY2VUb0NlbGwob2xkcHQsIHZ0a1ZvbElkKTsKLSAgICAgICAgICAg Ly90aGlzLT5BZGRSZWZlcmVuY2VUb0NlbGwocHRzW2ldLCB2dGtWb2xJZCk7Ci1AQCAtOTk1LDEx ICsxMDAzLDIwIEBAIHZvaWQgU01EU19VbnN0cnVjdHVyZWRHcmlkOjpCdWlsZExpbmtzKCkKLSAg ICAgdGhpcy0+TGlua3MtPlVuUmVnaXN0ZXIodGhpcyk7Ci0gICAgIH0KLSAKLSsjaWZkZWYgVlRL X0NFTExfQVJSQVlfVjIKLSsvL0ZJWE1FOiB2dGs5Ci0rICB0aGlzLT5MaW5rcyA9IFNNRFNfQ2Vs bExpbmtzOjpOZXcoKTsKLSsgIC8vdGhpcy0+TGlua3MtPkFsbG9jYXRlKHRoaXMtPkdldE51bWJl ck9mUG9pbnRzKCkpOwotKyAgdGhpcy0+TGlua3MtPlJlZ2lzdGVyKHRoaXMpOwotKyAgLy90aGlz LT5MaW5rcy0+QnVpbGRMaW5rcyh0aGlzLCB0aGlzLT5Db25uZWN0aXZpdHkpOwotKyAgdGhpcy0+ TGlua3MtPkRlbGV0ZSgpOwotKyNlbHNlCi0gICB0aGlzLT5MaW5rcyA9IFNNRFNfQ2VsbExpbmtz OjpOZXcoKTsKLSAgIHRoaXMtPkxpbmtzLT5BbGxvY2F0ZSh0aGlzLT5HZXROdW1iZXJPZlBvaW50 cygpKTsKLSAgIHRoaXMtPkxpbmtzLT5SZWdpc3Rlcih0aGlzKTsKLSAgIHRoaXMtPkxpbmtzLT5C dWlsZExpbmtzKHRoaXMsIHRoaXMtPkNvbm5lY3Rpdml0eSk7Ci0gICB0aGlzLT5MaW5rcy0+RGVs ZXRlKCk7Ci0rI2VuZGlmCi0gfQotIAotIC8qISBDcmVhdGUgYSB2b2x1bWUgKHByaXNtIG9yIGhl eGFoZWRyb24pIGJ5IGR1cGxpY2F0aW9uIG9mIGEgZmFjZS4KLWRpZmYgLS1naXQgc3JjLzNyZFBh cnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNwcCBiL3NyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0NlbGxJdGVyYXRvci5jcHAKLWlu ZGV4IGRlYjA1OTg1Zi4uNjNiNmVhYmI3IDEwMDY0NAotLS0tIHNyYy8zcmRQYXJ0eS9zYWxvbWVz bWVzaC9zcmMvU01EUy9TTURTX1Z0a0NlbGxJdGVyYXRvci5jcHAKLSsrKyBzcmMvM3JkUGFydHkv c2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtDZWxsSXRlcmF0b3IuY3BwCi1AQCAtMzMsNyAr MzMsOCBAQCBTTURTX1Z0a0NlbGxJdGVyYXRvcjo6U01EU19WdGtDZWxsSXRlcmF0b3IoU01EU19N ZXNoKiBtZXNoLCBpbnQgdnRrQ2VsbElkLCBTTURTQQotICAgfQotICAgZWxzZQotICAgewotLSAg ICB2dGtJZFR5cGUgbnB0cywgKnB0czsKLSsgICAgdnRrSWRUeXBlIG5wdHM7Ci0rICAgIHZ0a0lk VHlwZVB0ciBwdHM7Ci0gICAgIGdyaWQtPkdldENlbGxQb2ludHMoIF9jZWxsSWQsIG5wdHMsIHB0 cyApOwotICAgICBfdnRrSWRMaXN0LT5TZXROdW1iZXJPZklkcyggX25iTm9kZXMgPSBucHRzICk7 Ci0gICAgIGZvciAoaW50IGkgPSAwOyBpIDwgX25iTm9kZXM7IGkrKykKLUBAIC02Nyw3ICs2OCw3 IEBAIFNNRFNfVnRrQ2VsbEl0ZXJhdG9yVG9VTlY6OlNNRFNfVnRrQ2VsbEl0ZXJhdG9yVG9VTlYo U01EU19NZXNoKiBtZXNoLCBpbnQgdnRrQ2VsCi0gICAvL01FU1NBR0UoIlNNRFNfVnRrQ2VsbElu dGVybGFjZWRJdGVyYXRvciAoVU5WKSIgPDwgX3R5cGUpOwotIAotICAgX3Z0a0lkTGlzdCA9IHZ0 a0lkTGlzdDo6TmV3KCk7Ci0tICB2dGtJZFR5cGUqIHB0czsKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7 Ci0gICB2dGtJZFR5cGUgbnB0czsKLSAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBfbWVz aC0+Z2V0R3JpZCgpOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cygodnRrSWRUeXBlKV9jZWxsSWQs IG5wdHMsIHB0cyk7Ci1AQCAtMTgyLDcgKzE4Myw3IEBAIFNNRFNfVnRrQ2VsbEl0ZXJhdG9yUG9s eUg6OlNNRFNfVnRrQ2VsbEl0ZXJhdG9yUG9seUgoU01EU19NZXNoKiBtZXNoLCBpbnQgdnRrQ2Vs Ci0gICB7Ci0gICAgIC8vTUVTU0FHRSgiU01EU19WdGtDZWxsSXRlcmF0b3IgUG9seWhlZHJhIik7 Ci0gICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOwotLSAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsK LSsgICAgdnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKLSAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbShf Y2VsbElkLCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgaW50IGlkID0gMDsKLSAgICAgX25iTm9kZXNJ bkZhY2VzID0gMDsKLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURT L1NNRFNfVnRrRWRnZS5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01E U19WdGtFZGdlLmNwcAotaW5kZXggOTc4NmFiZjlhLi41OGQyZGYzY2YgMTAwNjQ0Ci0tLS0gc3Jj LzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrRWRnZS5jcHAKLSsrKyBzcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtFZGdlLmNwcAotQEAgLTY4LDcg KzY4LDcgQEAgYm9vbCBTTURTX1Z0a0VkZ2U6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5v ZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk5vZGVzKQotIHsKLSAgIHZ0a1Vuc3RydWN0dXJlZEdy aWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLSAg IHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSogcHRzID0gMDsKLSsgIHZ0a0lkVHlw ZVB0ciBwdHMgPSAwOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMp OwotICAgaWYgKG5iTm9kZXMgIT0gbnB0cykKLSAgICAgewotQEAgLTc3LDcgKzc3LDExIEBAIGJv b2wgU01EU19WdGtFZGdlOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1td LCBjb25zdCBpbnQgbmJOb2RlcykKLSAgICAgfQotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYk5v ZGVzOyBpKyspCi0gICAgIHsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsvL0ZJWE1FOiB2 dGs5Ci0rI2Vsc2UKLSAgICAgICBwdHNbaV0gPSBub2Rlc1tpXS0+Z2V0VnRrSWQoKTsKLSsjZW5k aWYKLSAgICAgfQotICAgU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlm aWVkKCk7Ci0gICByZXR1cm4gdHJ1ZTsKLUBAIC04Nyw3ICs5MSw3IEBAIGJvb2wgU01EU19WdGtF ZGdlOjpJc01lZGl1bU5vZGUoY29uc3QgU01EU19NZXNoTm9kZSogbm9kZSkgY29uc3QKLSB7Ci0g ICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNo SWRdLT5nZXRHcmlkKCk7Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUqIHB0 cyA9IDA7Ci0rICB2dGtJZFR5cGVQdHIgcHRzID0gMDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMo bXlWdGtJRCwgbnB0cywgcHRzKTsKLSAgIC8vTUVTU0FHRSgiSXNNZWRpdW1Ob2RlICIgPDwgbnB0 cyAgPDwgIiAiIDw8IChub2RlLT5nZXRWdGtJZCgpID09IHB0c1tucHRzLTFdKSk7Ci0gICByZXR1 cm4gKChucHRzID09IDMpICYmIChub2RlLT5nZXRWdGtJZCgpID09IHB0c1syXSkpOwotQEAgLTEz Nyw3ICsxNDEsOCBAQCBjb25zdCBTTURTX01lc2hOb2RlKgotIFNNRFNfVnRrRWRnZTo6R2V0Tm9k ZShjb25zdCBpbnQgaW5kKSBjb25zdAotIHsKLSAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQg PSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLS0gIHZ0a0lkVHlw ZSBucHRzLCAqcHRzOwotKyAgdnRrSWRUeXBlIG5wdHM7Ci0rICB2dGtJZFR5cGVQdHIgcHRzOwot ICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggdGhpcy0+bXlWdGtJRCwgbnB0cywgcHRzICk7Ci0gICBy ZXR1cm4gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5GaW5kTm9kZVZ0ayggcHRzWyBp bmQgXSk7Ci0gfQotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMv U01EU19WdGtGYWNlLmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURT X1Z0a0ZhY2UuY3BwCi1pbmRleCAxMzg5ZTBkMzUuLmE5MjYwMWYxZSAxMDA2NDQKLS0tLSBzcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtGYWNlLmNwcAotKysrIHNyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0ZhY2UuY3BwCi1AQCAtMTAyLDcg KzEwMiw3IEBAIGJvb2wgU01EU19WdGtGYWNlOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hO b2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcykKLSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRH cmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0g ICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0rICB2dGtJZFR5 cGVQdHIgcHRzID0gMDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRz KTsKLSAgIGlmIChuYk5vZGVzICE9IG5wdHMpCi0gICAgIHsKLUBAIC0xMTEsNyArMTExLDExIEBA IGJvb2wgU01EU19WdGtGYWNlOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rl c1tdLCBjb25zdCBpbnQgbmJOb2RlcykKLSAgICAgfQotICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu Yk5vZGVzOyBpKyspCi0gICAgIHsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsvL0ZJWE1F OiB2dGs5Ci0rI2Vsc2UKLSAgICAgICBwdHNbaV0gPSBub2Rlc1tpXS0+Z2V0VnRrSWQoKTsKLSsj ZW5kaWYKLSAgICAgfQotICAgU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1v ZGlmaWVkKCk7Ci0gICByZXR1cm4gdHJ1ZTsKLUBAIC0xNzMsNyArMTc3LDggQEAgY29uc3QgU01E U19NZXNoTm9kZSoKLSBTTURTX1Z0a0ZhY2U6OkdldE5vZGUoY29uc3QgaW50IGluZCkgY29uc3QK LSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3Rb bXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0tICB2dGtJZFR5cGUgbnB0cywgKnB0czsKLSsgIHZ0a0lk VHlwZSBucHRzOwotKyAgdnRrSWRUeXBlUHRyIHB0czsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMo IHRoaXMtPm15VnRrSUQsIG5wdHMsIHB0cyApOwotICAgcmV0dXJuIFNNRFNfTWVzaDo6X21lc2hM aXN0W215TWVzaElkXS0+RmluZE5vZGVWdGsoIHB0c1sgaW5kIF0pOwotIH0KLUBAIC0xODYsNyAr MTkxLDggQEAgU01EU19WdGtGYWNlOjpHZXROb2RlKGNvbnN0IGludCBpbmQpIGNvbnN0Ci0gaW50 IFNNRFNfVnRrRmFjZTo6R2V0Tm9kZUluZGV4KCBjb25zdCBTTURTX01lc2hOb2RlKiBub2RlICkg Y29uc3QKLSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVz aExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0tICB2dGtJZFR5cGUgbnB0cywgKnB0czsKLSsg IHZ0a0lkVHlwZSBucHRzOwotKyAgdnRrSWRUeXBlUHRyIHB0czsKLSAgIGdyaWQtPkdldENlbGxQ b2ludHMoIHRoaXMtPm15VnRrSUQsIG5wdHMsIHB0cyApOwotICAgZm9yICggdnRrSWRUeXBlIGkg PSAwOyBpIDwgbnB0czsgKytpICkKLSAgICAgaWYgKCBwdHNbaV0gPT0gbm9kZS0+Z2V0VnRrSWQo KSApCi1AQCAtMjUxLDcgKzI1Nyw3IEBAIGJvb2wgU01EU19WdGtGYWNlOjpJc01lZGl1bU5vZGUo Y29uc3QgU01EU19NZXNoTm9kZSogbm9kZSkgY29uc3QKLSAgICAgcmV0dXJuIGZhbHNlOwotICAg fQotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlKiBwdHMgPSAwOwotKyAgdnRr SWRUeXBlUHRyIHB0cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMs IHB0cyk7Ci0gICB2dGtJZFR5cGUgbm9kZUlkID0gbm9kZS0+Z2V0VnRrSWQoKTsKLSAgIGZvciAo aW50IHJhbmsgPSAwOyByYW5rIDwgbnB0czsgcmFuaysrKQotQEAgLTM1NywxMCArMzYzLDE0IEBA IHZvaWQgU01EU19WdGtGYWNlOjpDaGFuZ2VBcGV4KFNNRFNfTWVzaE5vZGUqIG5vZGUpCi0gewot ICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVz aElkXS0+Z2V0R3JpZCgpOwotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlKiBw dHMgPSAwOwotKyAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRz KG15VnRrSUQsIG5wdHMsIHB0cyk7Ci0gICBncmlkLT5SZW1vdmVSZWZlcmVuY2VUb0NlbGwocHRz WzBdLCBteVZ0a0lEKTsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsvL0ZJWE1FOiB2dGs5 Ci0rI2Vsc2UKLSAgIHB0c1swXSA9IG5vZGUtPmdldFZ0a0lkKCk7Ci0rI2VuZGlmCi0gICBub2Rl LT5BZGRJbnZlcnNlRWxlbWVudCh0aGlzKSwKLSAgIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVz aElkXS0+c2V0TXlNb2RpZmllZCgpOwotIH0KLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9t ZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrVm9sdW1lLmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVz bWVzaC9zcmMvU01EUy9TTURTX1Z0a1ZvbHVtZS5jcHAKLWluZGV4IDAxNWVkZjc1Zi4uZGEyZjcz ZmZiIDEwMDY0NAotLS0tIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0 a1ZvbHVtZS5jcHAKLSsrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19W dGtWb2x1bWUuY3BwCi1AQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgU01EU19WdGtWb2x1bWU6OkNo YW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk5vZGVz Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0 W215TWVzaElkXS0+Z2V0R3JpZCgpOwotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRU eXBlKiBwdHMgPSAwOwotKyAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxs UG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7Ci0gICBpZiAobmJOb2RlcyAhPSBucHRzKQotICAg ICB7Ci1AQCAtMTQzLDcgKzE0MywxMSBAQCBib29sIFNNRFNfVnRrVm9sdW1lOjpDaGFuZ2VOb2Rl cyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcwotICAgICB9 Ci0gICBmb3IgKGludCBpID0gMDsgaSA8IG5iTm9kZXM7IGkrKykKLSAgICAgewotKyNpZmRlZiBW VEtfQ0VMTF9BUlJBWV9WMgotKy8vRklYTUU6IHZ0azkKLSsjZWxzZQotICAgICAgIHB0c1tpXSA9 IG5vZGVzW2ldLT5nZXRWdGtJZCgpOwotKyNlbmRpZgotICAgICB9Ci0gICBTTURTX01lc2g6Ol9t ZXNoTGlzdFtteU1lc2hJZF0tPnNldE15TW9kaWZpZWQoKTsKLSAgIHJldHVybiB0cnVlOwotQEAg LTIwNyw3ICsyMTEsNyBAQCBpbnQgU01EU19WdGtWb2x1bWU6Ok5iRmFjZXMoKSBjb25zdAotICAg ICBjYXNlIFZUS19QT0xZSEVEUk9OOgotICAgICAgIHsKLSAgICAgICAgIHZ0a0lkVHlwZSBuRmFj ZXMgPSAwOwotLSAgICAgICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgICAgICB2dGtJZFR5 cGVQdHIgcHRJZHMgPSAwOwotICAgICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0 a0lELCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgICAgIG5iRmFjZXMgPSBuRmFjZXM7Ci0gICAgICAg ICBicmVhazsKLUBAIC0yMzYsNyArMjQwLDcgQEAgaW50IFNNRFNfVnRrVm9sdW1lOjpOYk5vZGVz KCkgY29uc3QKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOwot LSAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9 IDA7Ci0gICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0 SWRzKTsKLSAgICAgICBpbnQgaWQgPSAwOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkZh Y2VzOyBpKyspCi1AQCAtMjc2LDcgKzI4MCw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6TmJFZGdl cygpIGNvbnN0Ci0gICAgIGNhc2UgVlRLX1BPTFlIRURST046Ci0gICAgICAgewotICAgICAgICAg dnRrSWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAgICAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsg ICAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgICBncmlkLT5HZXRGYWNlU3Ry ZWFtKHRoaXMtPm15VnRrSUQsIG5GYWNlcywgcHRJZHMpOwotICAgICAgICAgbmJFZGdlcyA9IDA7 Ci0gICAgICAgICBpbnQgaWQgPSAwOwotQEAgLTMxMiw3ICszMTYsNyBAQCBpbnQgU01EU19WdGtW b2x1bWU6Ok5iRmFjZU5vZGVzKGNvbnN0IGludCBmYWNlX2luZCkgY29uc3QKLSAgIGlmIChhVnRr VHlwZSA9PSBWVEtfUE9MWUhFRFJPTikKLSAgICAgewotICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMg PSAwOwotLSAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBw dElkcyA9IDA7Ci0gICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFj ZXMsIHB0SWRzKTsKLSAgICAgICBpbnQgaWQgPSAwOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgbkZhY2VzOyBpKyspCi1AQCAtMzQyLDcgKzM0Niw3IEBAIGNvbnN0IFNNRFNfTWVzaE5vZGUq IFNNRFNfVnRrVm9sdW1lOjpHZXRGYWNlTm9kZShjb25zdCBpbnQgZmFjZV9pbmQsIGNvbnN0IGlu dCBuCi0gICBpZiAoYVZ0a1R5cGUgPT0gVlRLX1BPTFlIRURST04pCi0gICAgIHsKLSAgICAgICB2 dGtJZFR5cGUgbkZhY2VzID0gMDsKLS0gICAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsgICAg ICB2dGtJZFR5cGVQdHIgcHRJZHMgPSAwOwotICAgICAgIGdyaWQtPkdldEZhY2VTdHJlYW0odGhp cy0+bXlWdGtJRCwgbkZhY2VzLCBwdElkcyk7Ci0gICAgICAgaW50IGlkID0gMDsKLSAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IG5GYWNlczsgaSsrKQotQEAgLTM3Miw3ICszNzYsNyBAQCBzdGQ6 OnZlY3RvcjxpbnQ+IFNNRFNfVnRrVm9sdW1lOjpHZXRRdWFudGl0aWVzKCkgY29uc3QKLSAgIGlm IChhVnRrVHlwZSA9PSBWVEtfUE9MWUhFRFJPTikKLSAgICAgewotICAgICAgIHZ0a0lkVHlwZSBu RmFjZXMgPSAwOwotLSAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAgIHZ0a0lkVHlw ZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lE LCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgICBpbnQgaWQgPSAwOwotICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgbkZhY2VzOyBpKyspCi1AQCAtNDMwLDcgKzQzNCw3IEBAIGNvbnN0IFNNRFNfTWVz aE5vZGUqIFNNRFNfVnRrVm9sdW1lOjpHZXROb2RlKGNvbnN0IGludCBpbmQpIGNvbnN0Ci0gICBp ZiAoIGFWdGtUeXBlID09IFZUS19QT0xZSEVEUk9OKQotICAgewotICAgICB2dGtJZFR5cGUgbkZh Y2VzID0gMDsKLS0gICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgIHZ0a0lkVHlwZVB0ciBw dElkcyA9IDA7Ci0gICAgIGdyaWQtPkdldEZhY2VTdHJlYW0odGhpcy0+bXlWdGtJRCwgbkZhY2Vz LCBwdElkcyk7Ci0gICAgIGludCBpZCA9IDAsIG5iUG9pbnRzID0gMDsKLSAgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBuRmFjZXM7IGkrKykKLUBAIC00NDMsNyArNDQ3LDggQEAgY29uc3QgU01EU19N ZXNoTm9kZSogU01EU19WdGtWb2x1bWU6OkdldE5vZGUoY29uc3QgaW50IGluZCkgY29uc3QKLSAg ICAgfQotICAgICByZXR1cm4gMDsKLSAgIH0KLS0gIHZ0a0lkVHlwZSBucHRzLCAqcHRzOwotKyAg dnRrSWRUeXBlIG5wdHM7Ci0rICB2dGtJZFR5cGVQdHIgcHRzOwotICAgZ3JpZC0+R2V0Q2VsbFBv aW50cyggdGhpcy0+bXlWdGtJRCwgbnB0cywgcHRzICk7Ci0gICBjb25zdCBzdGQ6OnZlY3Rvcjxp bnQ+JiBpbnRlcmxhY2UgPSBTTURTX01lc2hDZWxsOjpmcm9tVnRrT3JkZXIoIFZUS0NlbGxUeXBl KCBhVnRrVHlwZSApKTsKLSAgIHJldHVybiBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0t PkZpbmROb2RlVnRrKCBwdHNbIGludGVybGFjZS5lbXB0eSgpID8gaW5kIDogaW50ZXJsYWNlW2lu ZF1dICk7Ci1AQCAtNDYwLDcgKzQ2NSw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6R2V0Tm9kZUlu ZGV4KCBjb25zdCBTTURTX01lc2hOb2RlKiBub2RlICkgY29uc3QKLSAgIGlmICggYVZ0a1R5cGUg PT0gVlRLX1BPTFlIRURST04pCi0gICB7Ci0gICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOwotLSAg ICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsgICAgdnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKLSAg ICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKLSAg ICAgaW50IGlkID0gMDsKLSAgICAgZm9yIChpbnQgaUYgPSAwOyBpRiA8IG5GYWNlczsgaUYrKykK LUBAIC00NzMsNyArNDc4LDggQEAgaW50IFNNRFNfVnRrVm9sdW1lOjpHZXROb2RlSW5kZXgoIGNv bnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUgKSBjb25zdAotICAgICB9Ci0gICAgIHJldHVybiAtMTsK LSAgIH0KLS0gIHZ0a0lkVHlwZSBucHRzLCAqcHRzOwotKyAgdnRrSWRUeXBlIG5wdHM7Ci0rICB2 dGtJZFR5cGVQdHIgcHRzOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggdGhpcy0+bXlWdGtJRCwg bnB0cywgcHRzICk7Ci0gICBmb3IgKCB2dGtJZFR5cGUgaSA9IDA7IGkgPCBucHRzOyArK2kgKQot ICAgICBpZiAoIHB0c1tpXSA9PSBub2RlLT5nZXRWdGtJZCgpICkKLUBAIC01MzQsNyArNTQwLDcg QEAgYm9vbCBTTURTX1Z0a1ZvbHVtZTo6SXNNZWRpdW1Ob2RlKGNvbnN0IFNNRFNfTWVzaE5vZGUq IG5vZGUpIGNvbnN0Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgdnRrSWRUeXBlIG5w dHMgPSAwOwotLSAgdnRrSWRUeXBlKiBwdHMgPSAwOwotKyAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7 Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7Ci0gICB2dGtJZFR5 cGUgbm9kZUlkID0gbm9kZS0+Z2V0VnRrSWQoKTsKLSAgIGZvciAoaW50IHJhbmsgPSAwOyByYW5r IDwgbnB0czsgcmFuaysrKQotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3Jj L1NNRVNIL1NNRVNIX01lc2hFZGl0b3IuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3Ny Yy9TTUVTSC9TTUVTSF9NZXNoRWRpdG9yLmNwcAotaW5kZXggYTc0MjcwMmZmLi4xZmY0ZDVlZWYg MTAwNjQ0Ci0tLS0gc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTUVTSC9TTUVTSF9NZXNo RWRpdG9yLmNwcAotKysrIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01FU0gvU01FU0hf TWVzaEVkaXRvci5jcHAKLUBAIC0xMTM0Myw3ICsxMTM0Myw3IEBAIGJvb2wgU01FU0hfTWVzaEVk aXRvcjo6RG91YmxlTm9kZXNPbkdyb3VwQm91bmRhcmllcyggY29uc3Qgc3RkOjp2ZWN0b3I8VElE U29ydGVkCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaW50IG9sZElkID0gKml0bjsK LSAgICAgICAgICAgICAgIC8vTUVTU0FHRSgiICAgICBub2RlICIgPDwgb2xkSWQpOwotLSAgICAg ICAgICAgICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBncmlkLT5HZXRDZWxsTGlua3MoKS0+R2V0 TGluayhvbGRJZCk7Ci0rICAgICAgICAgICAgICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRp Y19jYXN0PHZ0a0NlbGxMaW5rcyo+KGdyaWQtPkdldENlbGxMaW5rcygpKS0+R2V0TGluayhvbGRJ ZCk7Ci0gICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bC5uY2VsbHM7IGkrKykKLSAgICAg ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgIGludCB2dGtJZCA9IGwuY2VsbHNbaV07 Ci1AQCAtMTE1MjIsNyArMTE1MjIsNyBAQCBib29sIFNNRVNIX01lc2hFZGl0b3I6OkRvdWJsZU5v ZGVzT25Hcm91cEJvdW5kYXJpZXMoIGNvbnN0IHN0ZDo6dmVjdG9yPFRJRFNvcnRlZAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTUVTU0FHRSgiICBkb21haW4g IiA8PCBpZG9tIDw8ICIgdm9sdW1lICIgPDwgZWxlbS0+R2V0SUQoKSk7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbHVlc1szXTsKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnRrSWRUeXBlKiBwdHMg PSAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0a0lkVHlw ZVB0ciBwdHMgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdyaWQtPkdldENlbGxQb2ludHModnRrVm9sSWRzW2l2b2xdLCBucHRzLCBwdHMpOwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNRFNfVnRrVm9sdW1lOjpncmF2 aXR5Q2VudGVyKGdyaWQsIHB0cywgbnB0cywgdmFsdWVzKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWQgPT0wKQotQEAgLTExNzAzLDcgKzExNzAzLDcg QEAgYm9vbCBTTUVTSF9NZXNoRWRpdG9yOjpEb3VibGVOb2Rlc09uR3JvdXBCb3VuZGFyaWVzKCBj b25zdCBzdGQ6OnZlY3RvcjxUSURTb3J0ZWQKLSAgICAgICAgIHsKLSAgICAgICAgICAgaW50IG9s ZElkID0gaXRub2QtPmZpcnN0OwotICAgICAgICAgICAvL01FU1NBR0UoIiAgICAgbm9kZSAiIDw8 IG9sZElkKTsKLS0gICAgICAgICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBncmlkLT5HZXRDZWxs TGlua3MoKS0+R2V0TGluayhvbGRJZCk7Ci0rICAgICAgICAgIHZ0a0NlbGxMaW5rczo6TGluayBs ID0gc3RhdGljX2Nhc3Q8dnRrQ2VsbExpbmtzKj4oZ3JpZC0+R2V0Q2VsbExpbmtzKCkpLT5HZXRM aW5rKG9sZElkKTsKLSAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsLm5jZWxsczsgaSsr KQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGludCB2dGtJZCA9IGwuY2VsbHNbaV07 Ci1AQCAtMTIxNjAsNyArMTIxNjAsNyBAQCB2b2lkIFNNRVNIX01lc2hFZGl0b3I6OkNyZWF0ZUhv bGVTa2luKGRvdWJsZSByYWRpdXMsCi0gICAgICAgICAgIE1FU1NBR0UoInZvbHVtZSB0byBjaGVj aywgIHZ0a0lkICIgPDwgdnRrSWQgPDwgIiBzbWRzSWQgIiA8PCBtZXNoRFMtPmZyb21WdGtUb1Nt ZHModnRrSWQpKTsKLSAgICAgICAgICAgYm9vbCB2b2xJbnNpZGUgPSBmYWxzZTsKLSAgICAgICAg ICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgICAgICAgICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0r ICAgICAgICAgIHZ0a0lkVHlwZVB0ciBwdHMgPSAwOwotICAgICAgICAgICBncmlkLT5HZXRDZWxs UG9pbnRzKHZ0a0lkLCBucHRzLCBwdHMpOwotICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bnB0 czsgaSsrKQotICAgICAgICAgICAgIHsKLWRpZmYgLS1naXQgc3JjL01vZC9GZW0vR3VpL1ZpZXdQ cm92aWRlckZlbVBvc3RPYmplY3QuY3BwIGIvc3JjL01vZC9GZW0vR3VpL1ZpZXdQcm92aWRlckZl bVBvc3RPYmplY3QuY3BwCi1pbmRleCBkZGUyYmQ4MjQuLjNhY2ZlYWQ2NSAxMDA2NDQKLS0tLSBz cmMvTW9kL0ZlbS9HdWkvVmlld1Byb3ZpZGVyRmVtUG9zdE9iamVjdC5jcHAKLSsrKyBzcmMvTW9k L0ZlbS9HdWkvVmlld1Byb3ZpZGVyRmVtUG9zdE9iamVjdC5jcHAKLUBAIC01Niw2ICs1NiwxMSBA QAotIA0KLSB1c2luZyBuYW1lc3BhY2UgRmVtR3VpOw0KLSANCi0rI2lmZGVmIFZUS19DRUxMX0FS UkFZX1YyDQotK3R5cGVkZWYgY29uc3QgdnRrSWRUeXBlKiB2dGtJZFR5cGVQdHI7DQotKyNlbHNl DQotK3R5cGVkZWYgdnRrSWRUeXBlKiB2dGtJZFR5cGVQdHI7DQotKyNlbmRpZg0KLSANCi0gUFJP UEVSVFlfU09VUkNFKEZlbUd1aTo6Vmlld1Byb3ZpZGVyRmVtUG9zdE9iamVjdCwgR3VpOjpWaWV3 UHJvdmlkZXJEb2N1bWVudE9iamVjdCkNCi0gDQotQEAgLTMxNiw3ICszMjEsNyBAQCB2b2lkIFZp ZXdQcm92aWRlckZlbVBvc3RPYmplY3Q6OnVwZGF0ZTNEKCkgewotICAgICB2dGtEYXRhQXJyYXkg KnRjb29yZHMgPSBOVUxMOw0KLSAgICAgdnRrQ2VsbEFycmF5ICpjZWxsczsNCi0gICAgIHZ0a0lk VHlwZSBucHRzID0gMDsNCi0tICAgIHZ0a0lkVHlwZSAqaW5keCA9IDA7DQotKyAgICB2dGtJZFR5 cGVQdHIgaW5keCA9IDA7DQotIA0KLSAgICAgcG9pbnRzID0gcGQtPkdldFBvaW50cygpOw0KLSAg ICAgcG50RGF0YSA9IHBkLT5HZXRQb2ludERhdGEoKTsNCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Zy ZWVjYWQvcGF0Y2hlcy8xNTEtcHl0aG9uLXdhcm5pbmcucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8xNTEtcHl0aG9uLXdhcm5pbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGU3NmM4YjFjNjU0Yi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZnJlZWNhZC9w YXRjaGVzLzE1MS1weXRob24td2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICsw LDAgQEAKLWRpZmYgLS1naXQgc3JjL01vZC9GZW0vZmVtaW5vdXQvaW1wb3J0RmVuaWNzTWVzaC5w eSBzcmMvTW9kL0ZlbS9mZW1pbm91dC9pbXBvcnRGZW5pY3NNZXNoLnB5Ci1pbmRleCAxYmI0MGRl Li5hMGI1NDg0IDEwMDY0NAotLS0tIHNyYy9Nb2QvRmVtL2ZlbWlub3V0L2ltcG9ydEZlbmljc01l c2gucHkKLSsrKyBzcmMvTW9kL0ZlbS9mZW1pbm91dC9pbXBvcnRGZW5pY3NNZXNoLnB5Ci1AQCAt MTU0LDcgKzE1NCw3IEBAIGRlZiBleHBvcnQob2JqZWN0c2xpc3QsIGZpbGVTdHJpbmcpOgotICAg ICAgICAgICAgIEZyZWVDQUQuQ29uc29sZS5QcmludFdhcm5pbmcoIlRyaTYgLT4gVHJpMywgVGV0 MTAgLT4gVGV0NCwgZXRjLlxuIikKLSAgICAgICAgICAgICB3cml0ZUZlbmljc1hNTC53cml0ZV9m ZW5pY3NfbWVzaF94bWwob2JqLCBmaWxlU3RyaW5nKQotICAgICAgICAgZWxpZiBmaWxlRXh0ZW5z aW9uLmxvd2VyKCkgPT0gJy54ZG1mJzoKLS0gICAgICAgICAgICBpZiBpbXBvcnRUb29sc0ZlbS5n ZXRfRmVtTWVzaE9iamVjdE1lc2hHcm91cHMob2JqKSBpcyBub3QgKCk6Ci0rICAgICAgICAgICAg aWYgaW1wb3J0VG9vbHNGZW0uZ2V0X0ZlbU1lc2hPYmplY3RNZXNoR3JvdXBzKG9iaik6Ci0gICAg ICAgICAgICAgICAgICMgaWYgdGhlcmUgYXJlIGdyb3VwcyBmb3VuZCwgbWFrZSB0YXNrIHBhbmVs IGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICBwYW5lbCA9IFdyaXRlWERNRlRhc2tQYW5lbChv YmosIGZpbGVTdHJpbmcpCi0gICAgICAgICAgICAgICAgIEZyZWVDQURHdWkuQ29udHJvbC5zaG93 RGlhbG9nKHBhbmVsKQotZGlmZiAtLWdpdCBzcmMvTW9kL0ZlbS9mZW1pbm91dC93cml0ZUZlbmlj c1hETUYucHkgc3JjL01vZC9GZW0vZmVtaW5vdXQvd3JpdGVGZW5pY3NYRE1GLnB5Ci1pbmRleCA5 ZTdmMDFiLi41YTkzODIzIDEwMDY0NAotLS0tIHNyYy9Nb2QvRmVtL2ZlbWlub3V0L3dyaXRlRmVu aWNzWERNRi5weQotKysrIHNyYy9Nb2QvRmVtL2ZlbWlub3V0L3dyaXRlRmVuaWNzWERNRi5weQot QEAgLTI1OCw3ICsyNTgsNyBAQCBkZWYgd3JpdGVfZmVuaWNzX21lc2hfeGRtZihmZW1fbWVzaF9v YmosIG91dHB1dGZpbGUsIGdyb3VwX3ZhbHVlc19kaWN0PXt9LCBlbmNvZAotICAgICBmZW1fbWVz aCA9IGZlbV9tZXNoX29iai5GZW1NZXNoCi0gICAgIGdtc2hncm91cHMgPSBnZXRfRmVtTWVzaE9i amVjdE1lc2hHcm91cHMoZmVtX21lc2hfb2JqKQotIAotLSAgICBpZiBnbXNoZ3JvdXBzIGlzIG5v dCAoKToKLSsgICAgaWYgZ21zaGdyb3VwczoKLSAgICAgICAgIHByaW50KCdmb3VuZCBtZXNoIGdy b3VwcycpCi0gCi0gICAgIGZvciBnIGluIGdtc2hncm91cHM6Ci1kaWZmIC0tZ2l0IHNyYy9Nb2Qv UGFydERlc2lnbi9XaXphcmRTaGFmdC9TaGFmdC5weSBzcmMvTW9kL1BhcnREZXNpZ24vV2l6YXJk U2hhZnQvU2hhZnQucHkKLWluZGV4IGM1MTliOTcuLjhjMjBlYjQgMTAwNjQ0Ci0tLS0gc3JjL01v ZC9QYXJ0RGVzaWduL1dpemFyZFNoYWZ0L1NoYWZ0LnB5Ci0rKysgc3JjL01vZC9QYXJ0RGVzaWdu L1dpemFyZFNoYWZ0L1NoYWZ0LnB5Ci1AQCAtODgsNyArODgsNyBAQCBjbGFzcyBTaGFmdDoKLSAg ICAgICAgICMgV2UgZG9uJ3QgY2FsbCBlcXVpbGlicml1bSgpIGhlcmUgYmVjYXVzZSB0aGUgbmV3 IHNlZ21lbnQgaGFzIG5vIGNvbnN0cmFpbnRzIGRlZmluZWQgeWV0Ci0gICAgICAgICAjIEZpeCBm YWNlIHJlZmVyZW5jZSBvZiBmaXhlZCBzZWdtZW50IGlmIGl0IGlzIHRoZSBsYXN0IG9uZQotICAg ICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgIGxlbihzZWxmLnNlZ21lbnRzKSk6Ci0tICAgICAgICAg ICAgaWYgc2VsZi5zZWdtZW50c1tpXS5jb25zdHJhaW50VHlwZSBpcyBub3QgIkZpeGVkIjoKLSsg ICAgICAgICAgICBpZiBzZWxmLnNlZ21lbnRzW2ldLmNvbnN0cmFpbnRUeXBlICE9ICJGaXhlZCI6 Ci0gICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgaWYgaSA9PSBsZW4oc2Vs Zi5zZWdtZW50cykgLSAxOgotICAgICAgICAgICAgICAgICBzZWxmLnNlZ21lbnRzW2luZGV4XS5j b25zdHJhaW50LlJlZmVyZW5jZXMgPSBbKCBzZWxmLmZlYXR1cmUuZmVhdHVyZSwgICJGYWNlJXUi ICUgKDIgKiAoaW5kZXgrMSkgKyAxKSApXQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3Rl bXBsYXRlIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IDZmZTc0OWI1M2Q3MC4uZjFi OTZiNDgxOGM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9mcmVlY2FkL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnZnJlZWNhZCcKIHBrZ25hbWU9ZnJlZWNhZAotdmVyc2lvbj0wLjE4LjQKLXJldmlzaW9uPTEw Cit2ZXJzaW9uPTAuMTkuMQorcmV2aXNpb249MQogd3Jrc3JjPSJGcmVlQ0FELSR7dmVyc2lvbn0i CiBidWlsZF9zdHlsZT1jbWFrZQogCkBAIC0yMSw3ICsyMSw3IEBAIG1ha2VkZXBlbmRzPSJweXRo b24zLWRldmVsIGJvb3N0LWRldmVsIGxpYnhlcmNlcy1jLWRldmVsIHpsaWItZGV2ZWwgb2NjdC1k ZXZlbAogIGNvaW4zLWRldmVsIGxpYnNoaWJva2VuMi1kZXZlbCBsaWJzcG5hdi1kZXZlbCBweXNp ZGUyLXRvb2xzCiAgbGlibHo0LWRldmVsIGxpYnB5c2lkZTItcHl0aG9uMy1kZXZlbCBweXRob24z LW1hdHBsb3RsaWIgbmV0Y2RmLWRldmVsCiAganNvbmNwcC1kZXZlbCBxdDUtZGV2ZWwgcXQ1LXN2 Zy1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXdlYmtpdC1kZXZlbAotIHF0NS14MTFleHRyYXMt ZGV2ZWwgY29pbjMtZG9jIGdsZXctZGV2ZWwiCisgcXQ1LXgxMWV4dHJhcy1kZXZlbCBxdDUteG1s cGF0dGVybnMtZGV2ZWwgY29pbjMtZG9jIGdsZXctZGV2ZWwiCiAKICMgRnJlZUNBRCBoZWxwOiBx dDUvYXNzaXN0YW50IHdpdGggZGF0YXMgaW4gU1FMaXRlIGZvcm1hdAogZGVwZW5kcz0icHl0aG9u My1tYXRwbG90bGliIHB5dGhvbjMtcHlzaWRlMiBxdDUtcGx1Z2luLXNxbGl0ZSBweXRob24zLXBp dnkiCkBAIC0zNCw4ICszNCw3IEBAIG1haW50YWluZXI9InlvcGl0byA8cGllcnJlLmJvdXJnaW5A ZnJlZS5mcj4iCiBsaWNlbnNlPSJMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczov L2ZyZWVjYWR3ZWIub3JnLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL0ZyZWVDQUQv RnJlZUNBRC9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09NGUwY2NlNDQ3YjMx Yjg5ODlhMDBjZjY4YzQ5YWUwMTJjZThlNTU0NmE1NmM2ZTA4NzRmYmQ4ZjdkZGVkZmZkMgotCitj aGVja3N1bT01ZWMwMDAzYzE4ZGYyMDRmN2I0NDlkNGFjMGE4MmY5NDViNDE2MTNhMDI2NDEyN2Rl M2VmMTZmNmIyZWZhNjBmCiBpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSBtdXNsIF07IHRoZW4K IAltYWtlZGVwZW5kcys9IiBsaWJleGVjaW5mby1kZXZlbCIKIAlMREZMQUdTPSItbGV4ZWNpbmZv IgoKRnJvbSBjNzc1MWQxNzU4OGQ2NWJhYTYwMmFjYmIwMDM4MThlYzYyMjc0ODczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVwaGVuIFdhbGtlci1XZWluc2hlbmtlciA8c3d3MTIz NUBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMTMgTWFyIDIwMjEgMTk6MTU6MDcgLTA3MDAKU3ViamVj dDogW1BBVENIIDIvMl0gQWRkZWQgcGF0Y2hlcwoKLSBnZXQgcmlkIG9mIHB5dGhvbiAyCi0gZXhl Y2luZm8gZm9yIG11c2wgYnVpbGRzCi0gbmFtZXNwYWNlIG1pc3Npbmcgc3RkIGZyb20gMC4xOCBi dWlsZAotIHZ0azkgcGF0Y2ggZnJvbSAwLjE4IGJ1aWxkCi0gZml4IGZvciBzYWxvbWVzbWVzaAot LS0KIC4uLi9mcmVlY2FkL3BhdGNoZXMvMDAxLXJlbW92ZS1weXRob24yLnBhdGNoICB8ICAxNSAr CiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMDItZXhlY2luZm8ucGF0Y2ggICAgfCAgMzIgKwog Li4uL3BhdGNoZXMvMDEwLXNhbG9tZXNtZXNoLWV4ZWNpbmZvLnBhdGNoICAgIHwgIDMwICsKIC4u Li9wYXRjaGVzLzAyMC1uYW1lc3BhY2UtbWlzc2luZy1zdGQucGF0Y2ggICB8ICAxNSArCiBzcmNw a2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTAtdnRrOS5wYXRjaCAgICAgICAgfCA3MzYgKysrKysrKysr KysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDgyOCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDAxLXJlbW92ZS1weXRob24yLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDAyLWV4ZWNpbmZv LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDEwLXNh bG9tZXNtZXNoLWV4ZWNpbmZvLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVl Y2FkL3BhdGNoZXMvMDIwLW5hbWVzcGFjZS1taXNzaW5nLXN0ZC5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1MC12dGs5LnBhdGNoCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDAxLXJlbW92ZS1weXRob24yLnBhdGNoIGIvc3Jj cGtncy9mcmVlY2FkL3BhdGNoZXMvMDAxLXJlbW92ZS1weXRob24yLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjRkZmMyNGNlNzdmCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDAxLXJlbW92ZS1weXRob24yLnBhdGNoCkBA IC0wLDAgKzEsMTUgQEAKK2RpZmYgLS1naXQgY01ha2UvRnJlZUNBRF9IZWxwZXJzL1NldHVwUHl0 aG9uLmNtYWtlIGNNYWtlL0ZyZWVDQURfSGVscGVycy9TZXR1cFB5dGhvbi5jbWFrZQoraW5kZXgg M2M4ZTEwNjM1Li5jNGQyZjI2MjkgMTAwNjQ0CistLS0gY01ha2UvRnJlZUNBRF9IZWxwZXJzL1Nl dHVwUHl0aG9uLmNtYWtlCisrKysgY01ha2UvRnJlZUNBRF9IZWxwZXJzL1NldHVwUHl0aG9uLmNt YWtlCitAQCAtMSwxMCArMSw2IEBACisgbWFjcm8oU2V0dXBQeXRob24pCisgIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQeXRob24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKy0gICAgIyBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0 LmNnaT9idWc9Njc3NTk4CistICAgICMgQWNjZXB0YWJsZSB2ZXJzaW9ucyBvZiBQeXRob24KKy0g ICAgc2V0KFB5dGhvbl9BRERJVElPTkFMX1ZFUlNJT05TICIyLjciKQorLQorICAgICAjIEZvciBi dWlsZGluZyBvbiBPUyBYCisgICAgIGlmKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkRh cndpbiIgQU5EIE5PVCBCVUlMRF9XSVRIX0NPTkRBKQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9m cmVlY2FkL3BhdGNoZXMvMDAyLWV4ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNo ZXMvMDAyLWV4ZWNpbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMDM3YWMwZDk0N2NjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mcmVlY2FkL3Bh dGNoZXMvMDAyLWV4ZWNpbmZvLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK2RpZmYgLS1naXQgc3Jj L0FwcC9BcHBsaWNhdGlvbi5jcHAgc3JjL0FwcC9BcHBsaWNhdGlvbi5jcHAKK2luZGV4IDJkNDk4 OTc0ZC4uYmFhY2RjMmZlIDEwMDY0NAorLS0tIHNyYy9BcHAvQXBwbGljYXRpb24uY3BwCisrKysg c3JjL0FwcC9BcHBsaWNhdGlvbi5jcHAKK0BAIC0xNTc3LDcgKzE1NzcsOSBAQCBzdGF0aWMgdm9p ZCBmcmVlY2FkTmV3SGFuZGxlciAoKQorICNlbmRpZg0KKyANCisgI2lmIGRlZmluZWQoRkNfT1Nf TElOVVgpDQorKyNpZmRlZiBfX0dMSUJDX18NCisgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+DQorKyNl bmRpZg0KKyAjaW5jbHVkZSA8ZGxmY24uaD4NCisgI2luY2x1ZGUgPGN4eGFiaS5oPg0KKyANCitA QCAtMTU4OSw2ICsxNTkxLDcgQEAgc3RhdGljIHZvaWQgZnJlZWNhZE5ld0hhbmRsZXIgKCkKKyAv LyBUaGlzIGZ1bmN0aW9uIHByb2R1Y2VzIGEgc3RhY2sgYmFja3RyYWNlIHdpdGggZGVtYW5nbGVk IGZ1bmN0aW9uICYgbWV0aG9kIG5hbWVzLg0KKyB2b2lkIHByaW50QmFja3RyYWNlKHNpemVfdCBz a2lwPTApDQorIHsNCisrI2lmZGVmIF9fR0xJQkNfXw0KKyAgICAgdm9pZCAqY2FsbHN0YWNrWzEy OF07DQorICAgICBzaXplX3Qgbk1heEZyYW1lcyA9IHNpemVvZihjYWxsc3RhY2spIC8gc2l6ZW9m KGNhbGxzdGFja1swXSk7DQorICAgICBzaXplX3QgbkZyYW1lcyA9IGJhY2t0cmFjZShjYWxsc3Rh Y2ssIG5NYXhGcmFtZXMpOw0KK0BAIC0xNjE5LDYgKzE2MjIsOSBAQCB2b2lkIHByaW50QmFja3Ry YWNlKHNpemVfdCBza2lwPTApCisgICAgIH0NCisgDQorICAgICBmcmVlKHN5bWJvbHMpOw0KKysj ZWxzZQ0KKysgICAgc3RkOjpjZXJyIDw8ICJzb3JyeSwgbm8gYmFja3RyYWNlIG9uIG11c2wgbGli YyI7DQorKyNlbmRpZg0KKyB9DQorICNlbmRpZg0KKyANCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Zy ZWVjYWQvcGF0Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL2Zy ZWVjYWQvcGF0Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYjQ2NjE2YWQ3YTIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0 Y2gKQEAgLTAsMCArMSwzMCBAQAorLS0tIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvRHJp dmVyU1RML0Jhc2ljc19VdGlscy5jcHAKKysrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3Jj L0RyaXZlclNUTC9CYXNpY3NfVXRpbHMuY3BwCitAQCAtMjksNyArMjksOSBAQAorICNpZm5kZWYg V0lOMzIKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2lm ZGVmIF9fR0xJQkNfXworICNpbmNsdWRlIDxleGVjaW5mby5oPgorKyNlbmRpZgorICNlbmRpZgor IAorIAorQEAgLTEwOSw2ICsxMTEsNyBAQAorICNpZm5kZWYgV0lOMzIKKyAgIHZvaWQgcHJpbnRf dHJhY2ViYWNrKCkKKyAgIHsKKysjaWZkZWYgX19HTElCQ19fCisgICAgIHZvaWQgKmFycmF5WzUw XTsKKyAgICAgc2l6ZV90IHNpemU7CisgICAgIGNoYXIgKipzdHJpbmdzOworQEAgLTEyMyw2ICsx MjYsOSBAQAorICAgICAgIH0KKyAKKyAgICAgZnJlZSAoc3RyaW5ncyk7CisrI2Vsc2UgICAgIAor KyAgIHN0ZDo6Y2VyciA8PCAic29ycnksIG5vIGJhY2t0cmFjZSBvbiBtdXNsIGxpYmMiOworKyNl bmRpZgorICAgfQorICNlbHNlCisgICAjaWYgKF9NU0NfVkVSID49IDE0MDApIC8vIFZpc3VhbCBT dHVkaW8gMjAwNQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDIwLW5hbWVz cGFjZS1taXNzaW5nLXN0ZC5wYXRjaCBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAyMC1uYW1l c3BhY2UtbWlzc2luZy1zdGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4xZWU2ZjRmNWE4MGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8wMjAtbmFtZXNwYWNlLW1pc3Npbmctc3RkLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAK KyMgcmVhc29uOiBmaXggYnVpbGQgd2l0aCBnY2M5CisjIHVwc3RyZWFtOiB5ZXMKK2RpZmYgLS1n aXQgc3JjL01vZC9QYXJ0L0FwcC9HZW9tZXRyeS5jcHAgc3JjL01vZC9QYXJ0L0FwcC9HZW9tZXRy eS5jcHAKK2luZGV4IGU3NjYzZmRmMi4uNjkyZTFhOWQ1IDEwMDY0NAorLS0tIHNyYy9Nb2QvUGFy dC9BcHAvR2VvbWV0cnkuY3BwCisrKysgc3JjL01vZC9QYXJ0L0FwcC9HZW9tZXRyeS5jcHAKK0BA IC0xNDEsNyArMTQxLDcgQEAKKyAjaW5jbHVkZSAiR2VvbWV0cnkuaCINCisgDQorIHVzaW5nIG5h bWVzcGFjZSBQYXJ0Ow0KKy0NCisrdXNpbmcgbmFtZXNwYWNlIHN0ZDsNCisgDQorIGNvbnN0IGNo YXIqIGdjZV9FcnJvclN0YXR1c1RleHQoZ2NlX0Vycm9yVHlwZSBldCkNCisgew0KZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1MC12dGs5LnBhdGNoIGIvc3JjcGtncy9mcmVl Y2FkL3BhdGNoZXMvMTUwLXZ0azkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4xYWU4ZDQzYWM3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8xNTAtdnRrOS5wYXRjaApAQCAtMCwwICsxLDczNiBAQAorVGFrZW4gZnJvbSBo dHRwczovL2dpdGh1Yi5jb20vd3dtYXllci9GcmVlQ0FEL2NvbW1pdC81MjU5OWY3NzFmYTkzNGNl ZWIxMWE5NzBjMzYzOWJmYThmOTA0MTFlCisKK2RpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9t ZXNtZXNoL2luYy9TTURTX01lc2hFbGVtZW50Lmh4eCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVz aC9pbmMvU01EU19NZXNoRWxlbWVudC5oeHgKK2luZGV4IDE0YTZkOWE3Ni4uN2I5ZDg4ZGIxIDEw MDY0NAorLS0tIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19NZXNoRWxlbWVudC5o eHgKKysrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfTWVzaEVsZW1lbnQuaHh4 CitAQCAtNDAsMTAgKzQwLDE2IEBACisgCisgI2luY2x1ZGUgPHZ0a1R5cGUuaD4KKyAjaW5jbHVk ZSA8dnRrQ2VsbFR5cGUuaD4KKysjaW5jbHVkZSA8dnRrQ2VsbEFycmF5Lmg+CisgCisgLy90eXBl ZGVmIHVuc2lnbmVkIHNob3J0IFVTaG9ydFR5cGU7CisgdHlwZWRlZiBzaG9ydCBTaG9ydFR5cGU7 CisgdHlwZWRlZiBpbnQgICBMb25nVHlwZTsKKysjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKKyt0 eXBlZGVmIGNvbnN0IHZ0a0lkVHlwZSogdnRrSWRUeXBlUHRyOworKyNlbHNlCisrdHlwZWRlZiB2 dGtJZFR5cGUqIHZ0a0lkVHlwZVB0cjsKKysjZW5kaWYKKyAKKyBjbGFzcyBTTURTX01lc2hOb2Rl OworIGNsYXNzIFNNRFNfTWVzaEVkZ2U7CitAQCAtMTkyLDcgKzE5OCw3IEBAIHByb3RlY3RlZDoK KyAgIC8vISBFbGVtZW50IGluZGV4IGluIHZlY3RvciBTTURTX01lc2g6Om15Tm9kZXMgb3IgU01E U19NZXNoOjpteUNlbGxzCisgICBpbnQgbXlJRDsKKyAgIC8vISBpbmRleCBpbiB2dGtVbnN0cnVj dHVyZWRHcmlkCistICBpbnQgbXlWdGtJRDsKKysgIHZ0a0lkVHlwZSBteVZ0a0lEOworICAgLy8h IFNNRFNfTWVzaCBpZGVudGlmaWNhdGlvbiBpbiBTTUVTSAorICAgU2hvcnRUeXBlIG15TWVzaElk OworICAgLy8hIFN1YlNoYXBlIGFuZCBTdWJNZXNoIGlkZW50aWZpY2F0aW9uIGluIFNNRVNIRFMK K2RpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX1Vuc3RydWN0dXJl ZEdyaWQuaHh4IGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX1Vuc3RydWN0dXJl ZEdyaWQuaHh4CitpbmRleCA5ZTRhMjNlZGQuLjc3NDY1ODE0NSAxMDA2NDQKKy0tLSBzcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5oeHgKKysrKyBzcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5oeHgKK0BAIC05 NSw3ICs5NSwxMSBAQCBwdWJsaWM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RkOjptYXA8aW50LCBzdGQ6Om1hcDxsb25nLGludD4gPiYgbm9kZVF1YWREb21haW5z KTsKKyAgIHZ0a0NlbGxMaW5rcyogR2V0TGlua3MoKQorICAgeworKyNpZmRlZiBWVEtfQ0VMTF9B UlJBWV9WMgorKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dnRrQ2VsbExpbmtzKj4oR2V0Q2VsbExp bmtzKCkpOworKyNlbHNlCisgICAgIHJldHVybiBMaW5rczsKKysjZW5kaWYKKyAgIH0KKyAgIFNN RFNfRG93bndhcmQqIGdldERvd25BcnJheSh1bnNpZ25lZCBjaGFyIHZ0a1R5cGUpCisgICB7Citk aWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0JhbGxFbGVt ZW50LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0JhbGxFbGVt ZW50LmNwcAoraW5kZXggMjk5MDkzYzk0Li45OTBlMmI2NDEgMTAwNjQ0CistLS0gc3JjLzNyZFBh cnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfQmFsbEVsZW1lbnQuY3BwCisrKysgc3JjLzNy ZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfQmFsbEVsZW1lbnQuY3BwCitAQCAtNjgs OSArNjgsMTMgQEAgYm9vbCBTTURTX0JhbGxFbGVtZW50OjpDaGFuZ2VOb2RlIChjb25zdCBTTURT X01lc2hOb2RlICogbm9kZSkKKyB7CisgICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01E U19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7CisgICB2dGtJZFR5cGUgbnB0 cyA9IDA7CistICB2dGtJZFR5cGUqIHB0cyA9IDA7CisrICB2dGtJZFR5cGVQdHIgcHRzID0gMDsK KyAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKKysjaWZkZWYgVlRL X0NFTExfQVJSQVlfVjIKKysvL0ZJWE1FOiB2dGs5CisrI2Vsc2UKKyAgIHB0c1swXSA9IG5vZGUt PmdldFZ0a0lkKCk7CisrI2VuZGlmCisgICBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0t PnNldE15TW9kaWZpZWQoKTsKKyAgIHJldHVybiB0cnVlOworIH0KK0BAIC04Myw3ICs4Nyw4IEBA IHZvaWQgU01EU19CYWxsRWxlbWVudDo6UHJpbnQgKHN0ZDo6b3N0cmVhbSAmIE9TKSBjb25zdAor IGNvbnN0IFNNRFNfTWVzaE5vZGUqIFNNRFNfQmFsbEVsZW1lbnQ6OkdldE5vZGUgKGNvbnN0IGlu dCBpbmQpIGNvbnN0CisgeworICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVz aDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOworLSAgdnRrSWRUeXBlIG5wdHMsICpw dHM7CisrICB2dGtJZFR5cGUgbnB0czsKKysgIHZ0a0lkVHlwZVB0ciBwdHM7CisgICBncmlkLT5H ZXRDZWxsUG9pbnRzKCBteVZ0a0lELCBucHRzLCBwdHMgKTsKKyAgIHJldHVybiBTTURTX01lc2g6 Ol9tZXNoTGlzdFtteU1lc2hJZF0tPkZpbmROb2RlVnRrKCBwdHNbIDAgXSk7CisgfQorZGlmZiAt LWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19Eb3dud2FyZC5jcHAg Yi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19Eb3dud2FyZC5jcHAKK2lu ZGV4IGQ2MDQ5YzBiZC4uNzc1NTVkNWJjIDEwMDY0NAorLS0tIHNyYy8zcmRQYXJ0eS9zYWxvbWVz bWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNwcAorKysrIHNyYy8zcmRQYXJ0eS9zYWxvbWVz bWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNwcAorQEAgLTMwMyw3ICszMDMsNyBAQCBpbnQg U01EU19Eb3duMUQ6OmdldE5vZGVTZXQoaW50IGNlbGxJZCwgaW50KiBub2RlU2V0KQorIHZvaWQg U01EU19Eb3duMUQ6OnNldE5vZGVzKGludCBjZWxsSWQsIGludCB2dGtJZCkKKyB7CisgICB2dGtJ ZFR5cGUgbnB0cyA9IDA7CistICB2dGtJZFR5cGUgKnB0czsgLy8gd2lsbCByZWZlciB0byB0aGUg cG9pbnQgaWQncyBvZiB0aGUgZmFjZQorKyAgdnRrSWRUeXBlUHRyIHB0czsgLy8gd2lsbCByZWZl ciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgZmFjZQorICAgX2dyaWQtPkdldENlbGxQb2ludHMo dnRrSWQsIG5wdHMsIHB0cyk7CisgICAvLyBNRVNTQUdFKHZ0a0lkIDw8ICIgIiA8PCBucHRzIDw8 ICIgICIgPDwgX25iRG93bkNlbGxzKTsKKyAgIC8vQVNTRVJUKG5wdHMgPT0gX25iRG93bkNlbGxz KTsKK0BAIC01MzIsNyArNTMyLDcgQEAgaW50IFNNRFNfRG93bjJEOjpjb21wdXRlVm9sdW1lSWRz KGludCBjZWxsSWQsIGludCogaWRzKQorICAgLy8gLS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0aGUg ZmFjZQorIAorICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBlICpwdHM7IC8vIHdp bGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UKKysgIHZ0a0lkVHlwZVB0ciBw dHM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UKKyAgIF9ncmlk LT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgcHRzKTsKKyAgIHZlY3RvcjxpbnQ+IG5vZGVz OworICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRzOyBpKyspCitAQCAtNjI3LDcgKzYyNyw3IEBA IGludCBTTURTX0Rvd24yRDo6Y29tcHV0ZVZvbHVtZUlkc0Zyb21Ob2Rlc0ZhY2UoaW50KiBwdHMs IGludCBucHRzLCBpbnQqIGlkcykKKyB2b2lkIFNNRFNfRG93bjJEOjpzZXRUZW1wTm9kZXMoaW50 IGNlbGxJZCwgaW50IHZ0a0lkKQorIHsKKyAgIHZ0a0lkVHlwZSBucHRzID0gMDsKKy0gIHZ0a0lk VHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCisr ICB2dGtJZFR5cGVQdHIgcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRo ZSBmYWNlCisgICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh2dGtJZCwgbnB0cywgcHRzKTsKKyAgIC8v IE1FU1NBR0UodnRrSWQgPDwgIiAiIDw8IG5wdHMgPDwgIiAgIiA8PCBfbmJOb2Rlcyk7CisgICAv L0FTU0VSVChucHRzID09IF9uYk5vZGVzKTsKK0BAIC03OTUsNyArNzk1LDcgQEAgdm9pZCBTTURT X0Rvd24zRDo6Z2V0Tm9kZUlkcyhpbnQgY2VsbElkLCBzdGQ6OnNldDxpbnQ+JiBub2RlU2V0KQor IHsKKyAgIGludCB2dGtJZCA9IHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF07CisgICB2dGtJZFR5 cGUgbnB0cyA9IDA7CistICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBw b2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKKysgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCBy ZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisgICBfZ3JpZC0+R2V0Q2VsbFBv aW50cyh2dGtJZCwgbnB0cywgbm9kZXMpOworICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRzOyBp KyspCisgICAgIG5vZGVTZXQuaW5zZXJ0KG5vZGVzW2ldKTsKK0BAIC0xMTI2LDcgKzExMjYsNyBA QCB2b2lkIFNNRFNfRG93blRldHJhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwg c3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYgbworICAgLy9NRVNTQUdFKCJjZWxsSWQgPSAiIDw8IGNl bGxJZCk7CisgCisgICB2dGtJZFR5cGUgbnB0cyA9IDA7CistICB2dGtJZFR5cGUgKm5vZGVzOyAv LyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKKysgIHZ0a0lkVHlw ZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1l CisgICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyh0aGlzLT5fdnRrQ2VsbElkc1tjZWxsSWRdLCBucHRz LCBub2Rlcyk7CisgCisgICBzZXQ8aW50PiB0b2ZpbmQ7CitAQCAtMTE3OCw3ICsxMTc4LDcgQEAg dm9pZCBTTURTX0Rvd25UZXRyYTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExp c3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2UKKyAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhl IHZvbHVtZQorIAorICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBlICpub2Rlczsg Ly8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisrICB2dGtJZFR5 cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVt ZQorICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7CisgCisgICAv LyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBm YWNlCitAQCAtMTIzNCw3ICsxMjM0LDcgQEAgdm9pZCBTTURTX0Rvd25RdWFkVGV0cmE6OmdldE9y ZGVyZWROb2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGUKKyAgIC8v TUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOworIAorICAgdnRrSWRUeXBlIG5wdHMgPSAw OworLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBv ZiB0aGUgdm9sdW1lCisrICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhl IHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+ X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOworIAorICAgc2V0PGludD4gdG9maW5k OworQEAgLTEyODgsNyArMTI4OCw3IEBAIHZvaWQgU01EU19Eb3duUXVhZFRldHJhOjpjb21wdXRl RmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYKKyAgIC8vIC0t LSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorIAorICAgdnRrSWRUeXBlIG5wdHMgPSAw OworLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBv ZiB0aGUgdm9sdW1lCisrICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhl IHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElk LCBucHRzLCBub2Rlcyk7CisgCisgICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0 IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCitAQCAtMTM1Nyw3ICsxMzU3LDcgQEAgdm9pZCBT TURTX0Rvd25QeXJhbWlkOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2 ZWN0b3I8dnRrSWRUeXBlPiYKKyAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwor IAorICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCBy ZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisrICB2dGtJZFR5cGVQdHIgbm9k ZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorICAgX2dy aWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMp OworIAorICAgc2V0PGludD4gdG9maW5kOworQEAgLTE0MzUsNyArMTQzNSw3IEBAIHZvaWQgU01E U19Eb3duUHlyYW1pZDo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVt QnlOb2Rlc1R5cGUmIGZhCisgICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUK KyAKKyAgIHZ0a0lkVHlwZSBucHRzID0gMDsKKy0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwg cmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorKyAgdnRrSWRUeXBlUHRyIG5v ZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKKyAgIF9n cmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOworIAorICAgLy8gLS0tIGNy ZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQorQEAg LTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgU01EU19Eb3duUXVhZFB5cmFtaWQ6OmdldE9yZGVyZWRO b2Rlc09mRmFjZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5CisgICAvL01FU1NBR0Uo ImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKKyAKKyAgIHZ0a0lkVHlwZSBucHRzID0gMDsKKy0gIHZ0 a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZv bHVtZQorKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBp ZCdzIG9mIHRoZSB2b2x1bWUKKyAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxs SWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKKyAKKyAgIHNldDxpbnQ+IHRvZmluZDsKK0BAIC0x NTgwLDcgKzE1ODAsNyBAQCB2b2lkIFNNRFNfRG93blF1YWRQeXJhbWlkOjpjb21wdXRlRmFjZXNX aXRoTm9kZXMoaW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZQorICAgLy8gLS0tIGZpbmQg cG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisgCisgICB2dGtJZFR5cGUgbnB0cyA9IDA7CistICB2 dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2 b2x1bWUKKysgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQg aWQncyBvZiB0aGUgdm9sdW1lCisgICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxsSWQsIG5wdHMs IG5vZGVzKTsKKyAKKyAgIC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBvcmRlcmVkIGxpc3Qgb2Ygbm9k ZSBpZCdzIGZvciBlYWNoIGZhY2UKK0BAIC0xNjYwLDcgKzE2NjAsNyBAQCB2b2lkIFNNRFNfRG93 blBlbnRhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRr SWRUeXBlPiYgbworICAgLy9NRVNTQUdFKCJjZWxsSWQgPSAiIDw8IGNlbGxJZCk7CisgCisgICB2 dGtJZFR5cGUgbnB0cyA9IDA7CistICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRv IHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKKysgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8g d2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisgICBfZ3JpZC0+R2V0 Q2VsbFBvaW50cyh0aGlzLT5fdnRrQ2VsbElkc1tjZWxsSWRdLCBucHRzLCBub2Rlcyk7CisgCisg ICBzZXQ8aW50PiB0b2ZpbmQ7CitAQCAtMTc0NCw3ICsxNzQ0LDcgQEAgdm9pZCBTTURTX0Rvd25Q ZW50YTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5 cGUmIGZhY2UKKyAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorIAorICAg dnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0 byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisrICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8v IHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorICAgX2dyaWQtPkdl dENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7CisgCisgICAvLyAtLS0gY3JlYXRlIGFs bCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCitAQCAtMTgxMCw3 ICsxODEwLDcgQEAgdm9pZCBTTURTX0Rvd25RdWFkUGVudGE6OmdldE9yZGVyZWROb2Rlc09mRmFj ZShpbnQgY2VsbElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGUKKyAgIC8vTUVTU0FHRSgiY2VsbElk ID0gIiA8PCBjZWxsSWQpOworIAorICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBl ICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisr ICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIHZvbHVtZQorICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0NlbGxJZHNbY2Vs bElkXSwgbnB0cywgbm9kZXMpOworIAorICAgc2V0PGludD4gdG9maW5kOworQEAgLTE4OTYsNyAr MTg5Niw3IEBAIHZvaWQgU01EU19Eb3duUXVhZFBlbnRhOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMo aW50IGNlbGxJZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYKKyAgIC8vIC0tLSBmaW5kIHBvaW50IGlk J3Mgb2YgdGhlIHZvbHVtZQorIAorICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBl ICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCisr ICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2Yg dGhlIHZvbHVtZQorICAgX2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7 CisgCisgICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBm b3IgZWFjaCBmYWNlCitAQCAtMTk4MSw3ICsxOTgxLDcgQEAgdm9pZCBTTURTX0Rvd25IZXhhOjpn ZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlPiYg b3IKKyAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOworIAorICAgdnRrSWRUeXBl IG5wdHMgPSAwOworLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9p bnQgaWQncyBvZiB0aGUgdm9sdW1lCisrICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVm ZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorICAgX2dyaWQtPkdldENlbGxQb2lu dHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOworIAorICAgc2V0PGlu dD4gdG9maW5kOworQEAgLTIwMzYsNyArMjAzNiw3IEBAIHZvaWQgU01EU19Eb3duSGV4YTo6Y29t cHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmIGZhY2Vz CisgICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKKyAKKyAgIHZ0a0lkVHlw ZSBucHRzID0gMDsKKy0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBv aW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJl ZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKKyAgIF9ncmlkLT5HZXRDZWxsUG9p bnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOworIAorICAgLy8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9y ZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQorQEAgLTIxMTIsNyArMjExMiw3 IEBAIHZvaWQgU01EU19Eb3duUXVhZEhleGE6OmdldE9yZGVyZWROb2Rlc09mRmFjZShpbnQgY2Vs bElkLCBzdGQ6OnZlY3Rvcjx2dGtJZFR5cGU+CisgICAvL01FU1NBR0UoImNlbGxJZCA9ICIgPDwg Y2VsbElkKTsKKyAKKyAgIHZ0a0lkVHlwZSBucHRzID0gMDsKKy0gIHZ0a0lkVHlwZSAqbm9kZXM7 IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQorKyAgdnRrSWRU eXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1 bWUKKyAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF0sIG5w dHMsIG5vZGVzKTsKKyAKKyAgIHNldDxpbnQ+IHRvZmluZDsKK0BAIC0yMTY3LDcgKzIxNjcsNyBA QCB2b2lkIFNNRFNfRG93blF1YWRIZXhhOjpjb21wdXRlRmFjZXNXaXRoTm9kZXMoaW50IGNlbGxJ ZCwgTGlzdEVsZW1CeU5vZGVzVHlwZSYgZgorICAgLy8gLS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0 aGUgdm9sdW1lCisgCisgICB2dGtJZFR5cGUgbnB0cyA9IDA7CistICB2dGtJZFR5cGUgKm5vZGVz OyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKKysgIHZ0a0lk VHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9s dW1lCisgICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxsSWQsIG5wdHMsIG5vZGVzKTsKKyAKKyAg IC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBvcmRlcmVkIGxpc3Qgb2Ygbm9kZSBpZCdzIGZvciBlYWNo IGZhY2UKK2RpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNf TWVzaC5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoLmNw cAoraW5kZXggNGFjNmZkNzY4Li41MWIyODE2OTkgMTAwNjQ0CistLS0gc3JjLzNyZFBhcnR5L3Nh bG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaC5jcHAKKysrKyBzcmMvM3JkUGFydHkvc2Fsb21l c21lc2gvc3JjL1NNRFMvU01EU19NZXNoLmNwcAorQEAgLTQ3NjgsNyArNDc2OCwxMSBAQCB2b2lk IFNNRFNfTWVzaDo6ZHVtcEdyaWQoc3RyaW5nIGZpY2R1bXApCisgICAgICAgICBmaWNjb24gPDwg ZW5kbDsKKyAgIH0KKyAgIGZpY2NvbiA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gY29ubmVjdGl2aXR5ICIgPDwgIG5iUG9pbnRzIDw8IGVuZGw7CistICAgICAgICB2dGtDZWxs TGlua3MgKmxpbmtzID0gbXlHcmlkLT5HZXRDZWxsTGlua3MoKTsKKysjaWZkZWYgVlRLX0NFTExf QVJSQVlfVjIKKysgIHZ0a0NlbGxMaW5rcyAqbGlua3MgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlu a3MqPihteUdyaWQtPkdldENlbGxMaW5rcygpKTsKKysjZWxzZQorKyAgdnRrQ2VsbExpbmtzICps aW5rcyA9IG15R3JpZC0+R2V0Q2VsbExpbmtzKCk7CisrI2VuZGlmCisgICBmb3IgKGludCBpPTA7 IGk8bmJQb2ludHM7IGkrKykKKyAgIHsKKyAgICAgICAgIGludCBuY2VsbHMgPSBsaW5rcy0+R2V0 TmNlbGxzKGkpOworZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMv U01EU19NZXNoMERFbGVtZW50LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01E Uy9TTURTX01lc2gwREVsZW1lbnQuY3BwCitpbmRleCA5NTQzOGVhYjAuLmE3ZjgwNTllMCAxMDA2 NDQKKy0tLSBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoMERFbGVt ZW50LmNwcAorKysrIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2gw REVsZW1lbnQuY3BwCitAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgU01EU19NZXNoMERFbGVtZW50 OjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJO CisgICB7CisgICAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNo TGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKKyAgICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAg ICB2dGtJZFR5cGUqIHB0cyA9IDA7CisrICAgIHZ0a0lkVHlwZVB0ciBwdHMgPSAwOworICAgICBn cmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7CisgICAgIGlmIChuYk5vZGVz ICE9IG5wdHMpCisgICAgIHsKK0BAIC0xNTUsNyArMTU1LDExIEBAIGJvb2wgU01EU19NZXNoMERF bGVtZW50OjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBp bnQgbmJOCisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIG15Tm9kZSA9IG5vZGVz WzBdOworKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgorKy8vRklYTUU6IHZ0azkKKysjZWxzZQor ICAgICBwdHNbMF0gPSBteU5vZGUtPmdldFZ0a0lkKCk7CisrI2VuZGlmCisgCisgICAgIFNNRFNf TWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+c2V0TXlNb2RpZmllZCgpOworICAgICByZXR1cm4g dHJ1ZTsKK2RpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNf TWVzaE5vZGUuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVz aE5vZGUuY3BwCitpbmRleCBmNjQ3YTVmMWIuLjViOTAzYzhmYiAxMDA2NDQKKy0tLSBzcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoTm9kZS5jcHAKKysrKyBzcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoTm9kZS5jcHAKK0BAIC0xOTEsNyAr MTkxLDcgQEAgcHVibGljOgorIFNNRFNfRWxlbUl0ZXJhdG9yUHRyIFNNRFNfTWVzaE5vZGU6Ogor IEdldEludmVyc2VFbGVtZW50SXRlcmF0b3IoU01EU0Fic19FbGVtZW50VHlwZSB0eXBlKSBjb25z dAorIHsKKy0gIHZ0a0NlbGxMaW5rczo6TGluayBsID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlN ZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5rcygpLT5HZXRMaW5rKG15VnRrSUQpOworKyAg dnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihTTURTX01l c2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCkpLT5HZXRM aW5rKG15VnRrSUQpOworICAgLy9NRVNTQUdFKCJteUlEICIgPDwgbXlJRCA8PCAiIG5jZWxscyAi IDw8IGwubmNlbGxzKTsKKyAgIHJldHVybiBTTURTX0VsZW1JdGVyYXRvclB0cihuZXcgU01EU19N ZXNoTm9kZV9NeUludkl0ZXJhdG9yKFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXSwgbC5j ZWxscywgbC5uY2VsbHMsIHR5cGUpKTsKKyB9CitAQCAtMjUxLDcgKzI1MSw3IEBAIGVsZW1lbnRz SXRlcmF0b3IoU01EU0Fic19FbGVtZW50VHlwZSB0eXBlKSBjb25zdAorICAgICByZXR1cm4gU01E U19NZXNoRWxlbWVudDo6ZWxlbWVudHNJdGVyYXRvcihTTURTQWJzX05vZGUpOworICAgZWxzZQor ICAgeworLSAgICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215 TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3MoKS0+R2V0TGluayhteVZ0a0lEKTsKKysg ICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihTTURT X01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCkpLT5H ZXRMaW5rKG15VnRrSUQpOworICAgICByZXR1cm4gU01EU19FbGVtSXRlcmF0b3JQdHIobmV3IFNN RFNfTWVzaE5vZGVfTXlJdGVyYXRvcihTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0sIGwu Y2VsbHMsIGwubmNlbGxzLCB0eXBlKSk7CisgICB9CisgfQorQEAgLTM1MCw3ICszNTAsNyBAQCB2 b2lkIFNNRFNfTWVzaE5vZGU6OkFkZEludmVyc2VFbGVtZW50KGNvbnN0IFNNRFNfTWVzaEVsZW1l bnQqIE1FKQorICAgY29uc3QgU01EU19NZXNoQ2VsbCAqY2VsbCA9IGR5bmFtaWNfY2FzdDxjb25z dCBTTURTX01lc2hDZWxsKj4gKE1FKTsKKyAgIGFzc2VydChjZWxsKTsKKyAgIFNNRFNfVW5zdHJ1 Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3Jp ZCgpOworLSAgdnRrQ2VsbExpbmtzICpMaW5rcyA9IGdyaWQtPkdldENlbGxMaW5rcygpOworKyAg dnRrQ2VsbExpbmtzICpMaW5rcyA9IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+KGdyaWQtPkdl dENlbGxMaW5rcygpKTsKKyAgIExpbmtzLT5SZXNpemVDZWxsTGlzdChteVZ0a0lELCAxKTsKKyAg IExpbmtzLT5BZGRDZWxsUmVmZXJlbmNlKGNlbGwtPmdldFZ0a0lkKCksIG15VnRrSUQpOworIH0K K0BAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBTTURTX01lc2hOb2RlOjpDbGVhckludmVyc2VFbGVt ZW50cygpCisgCisgYm9vbCBTTURTX01lc2hOb2RlOjplbXB0eUludmVyc2VFbGVtZW50cygpCisg eworLSAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJ ZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCktPkdldExpbmsobXlWdGtJRCk7CisrICB2dGtD ZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+KFNNRFNfTWVzaDo6 X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3MoKSktPkdldExpbmso bXlWdGtJRCk7CisgICByZXR1cm4gKGwubmNlbGxzID09IDApOworIH0KKyAKK0BAIC0zNzgsNyAr Mzc4LDcgQEAgYm9vbCBTTURTX01lc2hOb2RlOjplbXB0eUludmVyc2VFbGVtZW50cygpCisgCisg aW50IFNNRFNfTWVzaE5vZGU6Ok5iSW52ZXJzZUVsZW1lbnRzKFNNRFNBYnNfRWxlbWVudFR5cGUg dHlwZSkgY29uc3QKKyB7CistICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IFNNRFNfTWVzaDo6X21l c2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3MoKS0+R2V0TGluayhteVZ0 a0lEKTsKKysgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGljX2Nhc3Q8dnRrQ2VsbExpbmtz Kj4oU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5r cygpKS0+R2V0TGluayhteVZ0a0lEKTsKKyAKKyAgIGlmICggdHlwZSA9PSBTTURTQWJzX0FsbCAp CisgICAgIHJldHVybiBsLm5jZWxsczsKK2RpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNt ZXNoL3NyYy9TTURTL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5jcHAgYi9zcmMvM3JkUGFydHkvc2Fs b21lc21lc2gvc3JjL1NNRFMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmNwcAoraW5kZXggZmJkOTAz YjFlLi4xOWNjZWJjYWIgMTAwNjQ0CistLS0gc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9T TURTL1NNRFNfVW5zdHJ1Y3R1cmVkR3JpZC5jcHAKKysrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21l c2gvc3JjL1NNRFMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmNwcAorQEAgLTEzOSw4ICsxMzksOCBA QCBpbnQgU01EU19VbnN0cnVjdHVyZWRHcmlkOjpJbnNlcnROZXh0TGlua2VkQ2VsbChpbnQgdHlw ZSwgaW50IG5wdHMsIHZ0a0lkVHlwZSAqcAorICAgZm9yICg7IGl0ICE9IHNldE9mTm9kZXMuZW5k KCk7ICsraXQpCisgICAgIHsKKyAgICAgICAvL01FU1NBR0UoInJldmVyc2UgbGluayBmb3Igbm9k ZSAiIDw8ICppdCA8PCAiIGNlbGwgIiA8PCBjZWxsaWQpOworLSAgICAgIHRoaXMtPkxpbmtzLT5S ZXNpemVDZWxsTGlzdCgqaXQsIDEpOworLSAgICAgIHRoaXMtPkxpbmtzLT5BZGRDZWxsUmVmZXJl bmNlKGNlbGxpZCwgKml0KTsKKysgICAgICB0aGlzLT5HZXRMaW5rcygpLT5SZXNpemVDZWxsTGlz dCgqaXQsIDEpOworKyAgICAgIHRoaXMtPkdldExpbmtzKCktPkFkZENlbGxSZWZlcmVuY2UoY2Vs bGlkLCAqaXQpOworICAgICB9CisgCisgICByZXR1cm4gY2VsbGlkOworQEAgLTMzMiw5ICszMzIs MTMgQEAgdm9pZCBTTURTX1Vuc3RydWN0dXJlZEdyaWQ6OmNvcHlCbG9jKHZ0a1Vuc2lnbmVkQ2hh ckFycmF5ICpuZXdUeXBlcywKKyAgICAgeworICAgICAgIG5ld1R5cGVzLT5TZXRWYWx1ZShhbHJl YWR5Q29waWVkLCB0aGlzLT5UeXBlcy0+R2V0VmFsdWUoaikpOworICAgICAgIGlkQ2VsbHNPbGRU b05ld1tqXSA9IGFscmVhZHlDb3BpZWQ7IC8vIG9sZCB2dGtJZCAtLT4gbmV3IHZ0a0lkCisrI2lm ZGVmIFZUS19DRUxMX0FSUkFZX1YyCisrICAgICAgdnRrSWRUeXBlIG9sZExvYzsgLy9GSVhNRTog dnRrOQorKyNlbHNlCisgICAgICAgdnRrSWRUeXBlIG9sZExvYyA9IHRoaXMtPkxvY2F0aW9ucy0+ R2V0VmFsdWUoaik7CisrI2VuZGlmCisgICAgICAgdnRrSWRUeXBlIG5icHRzOworLSAgICAgIHZ0 a0lkVHlwZSAqb2xkUHRzQ2VsbCA9IDA7CisrICAgICAgdnRrSWRUeXBlUHRyIG9sZFB0c0NlbGwg PSAwOworICAgICAgIHRoaXMtPkNvbm5lY3Rpdml0eS0+R2V0Q2VsbChvbGRMb2MsIG5icHRzLCBv bGRQdHNDZWxsKTsKKyAgICAgICBhc3NlcnQobmJwdHMgPCBOQk1BWE5PREVTSU5DRUxMKTsKKyAg ICAgICAvL01FU1NBR0UoaiA8PCAiICIgPDwgYWxyZWFkeUNvcGllZCA8PCAiICIgPDwgKGludCl0 aGlzLT5UeXBlcy0+R2V0VmFsdWUoaikgPDwgIiAiIDw8IG9sZExvYyA8PCAiICIgPDwgbmJwdHMg KTsKK0BAIC05NTMsMTQgKzk1NywxOCBAQCB2b2lkIFNNRFNfVW5zdHJ1Y3R1cmVkR3JpZDo6R2V0 Tm9kZUlkcyhzdGQ6OnNldDxpbnQ+JiBub2RlU2V0LCBpbnQgZG93bklkLCB1bnNpZworIHZvaWQg U01EU19VbnN0cnVjdHVyZWRHcmlkOjpNb2RpZnlDZWxsTm9kZXMoaW50IHZ0a1ZvbElkLCBzdGQ6 Om1hcDxpbnQsIGludD4gbG9jYWxDbG9uZWROb2RlSWRzKQorIHsKKyAgIHZ0a0lkVHlwZSBucHRz ID0gMDsKKy0gIHZ0a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdz IG9mIHRoZSBmYWNlCisrICB2dGtJZFR5cGVQdHIgcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBw b2ludCBpZCdzIG9mIHRoZSBmYWNlCisgICB0aGlzLT5HZXRDZWxsUG9pbnRzKHZ0a1ZvbElkLCBu cHRzLCBwdHMpOworICAgZm9yIChpbnQgaSA9IDA7IGkgPCBucHRzOyBpKyspCisgICAgIHsKKyAg ICAgICBpZiAobG9jYWxDbG9uZWROb2RlSWRzLmNvdW50KHB0c1tpXSkpCisgICAgICAgICB7Cisg ICAgICAgICAgIHZ0a0lkVHlwZSBvbGRwdCA9IHB0c1tpXTsKKysjaWZkZWYgVlRLX0NFTExfQVJS QVlfVjIKKysvL0ZJWE1FOiB2dGs5CisrI2Vsc2UKKyAgICAgICAgICAgcHRzW2ldID0gbG9jYWxD bG9uZWROb2RlSWRzW29sZHB0XTsKKysjZW5kaWYKKyAgICAgICAgICAgLy9NRVNTQUdFKG9sZHB0 IDw8ICIgLS0+ICIgPDwgcHRzW2ldKTsKKyAgICAgICAgICAgLy90aGlzLT5SZW1vdmVSZWZlcmVu Y2VUb0NlbGwob2xkcHQsIHZ0a1ZvbElkKTsKKyAgICAgICAgICAgLy90aGlzLT5BZGRSZWZlcmVu Y2VUb0NlbGwocHRzW2ldLCB2dGtWb2xJZCk7CitAQCAtOTk1LDExICsxMDAzLDIwIEBAIHZvaWQg U01EU19VbnN0cnVjdHVyZWRHcmlkOjpCdWlsZExpbmtzKCkKKyAgICAgdGhpcy0+TGlua3MtPlVu UmVnaXN0ZXIodGhpcyk7CisgICAgIH0KKyAKKysjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKKysv L0ZJWE1FOiB2dGs5CisrICB0aGlzLT5MaW5rcyA9IFNNRFNfQ2VsbExpbmtzOjpOZXcoKTsKKysg IC8vdGhpcy0+TGlua3MtPkFsbG9jYXRlKHRoaXMtPkdldE51bWJlck9mUG9pbnRzKCkpOworKyAg dGhpcy0+TGlua3MtPlJlZ2lzdGVyKHRoaXMpOworKyAgLy90aGlzLT5MaW5rcy0+QnVpbGRMaW5r cyh0aGlzLCB0aGlzLT5Db25uZWN0aXZpdHkpOworKyAgdGhpcy0+TGlua3MtPkRlbGV0ZSgpOwor KyNlbHNlCisgICB0aGlzLT5MaW5rcyA9IFNNRFNfQ2VsbExpbmtzOjpOZXcoKTsKKyAgIHRoaXMt PkxpbmtzLT5BbGxvY2F0ZSh0aGlzLT5HZXROdW1iZXJPZlBvaW50cygpKTsKKyAgIHRoaXMtPkxp bmtzLT5SZWdpc3Rlcih0aGlzKTsKKyAgIHRoaXMtPkxpbmtzLT5CdWlsZExpbmtzKHRoaXMsIHRo aXMtPkNvbm5lY3Rpdml0eSk7CisgICB0aGlzLT5MaW5rcy0+RGVsZXRlKCk7CisrI2VuZGlmCisg fQorIAorIC8qISBDcmVhdGUgYSB2b2x1bWUgKHByaXNtIG9yIGhleGFoZWRyb24pIGJ5IGR1cGxp Y2F0aW9uIG9mIGEgZmFjZS4KK2RpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3Ny Yy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVz aC9zcmMvU01EUy9TTURTX1Z0a0NlbGxJdGVyYXRvci5jcHAKK2luZGV4IGRlYjA1OTg1Zi4uNjNi NmVhYmI3IDEwMDY0NAorLS0tIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURT X1Z0a0NlbGxJdGVyYXRvci5jcHAKKysrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NN RFMvU01EU19WdGtDZWxsSXRlcmF0b3IuY3BwCitAQCAtMzMsNyArMzMsOCBAQCBTTURTX1Z0a0Nl bGxJdGVyYXRvcjo6U01EU19WdGtDZWxsSXRlcmF0b3IoU01EU19NZXNoKiBtZXNoLCBpbnQgdnRr Q2VsbElkLCBTTURTQQorICAgfQorICAgZWxzZQorICAgeworLSAgICB2dGtJZFR5cGUgbnB0cywg KnB0czsKKysgICAgdnRrSWRUeXBlIG5wdHM7CisrICAgIHZ0a0lkVHlwZVB0ciBwdHM7CisgICAg IGdyaWQtPkdldENlbGxQb2ludHMoIF9jZWxsSWQsIG5wdHMsIHB0cyApOworICAgICBfdnRrSWRM aXN0LT5TZXROdW1iZXJPZklkcyggX25iTm9kZXMgPSBucHRzICk7CisgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgX25iTm9kZXM7IGkrKykKK0BAIC02Nyw3ICs2OCw3IEBAIFNNRFNfVnRrQ2VsbEl0 ZXJhdG9yVG9VTlY6OlNNRFNfVnRrQ2VsbEl0ZXJhdG9yVG9VTlYoU01EU19NZXNoKiBtZXNoLCBp bnQgdnRrQ2VsCisgICAvL01FU1NBR0UoIlNNRFNfVnRrQ2VsbEludGVybGFjZWRJdGVyYXRvciAo VU5WKSIgPDwgX3R5cGUpOworIAorICAgX3Z0a0lkTGlzdCA9IHZ0a0lkTGlzdDo6TmV3KCk7Cist ICB2dGtJZFR5cGUqIHB0czsKKysgIHZ0a0lkVHlwZVB0ciBwdHM7CisgICB2dGtJZFR5cGUgbnB0 czsKKyAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBfbWVzaC0+Z2V0R3JpZCgpOworICAg Z3JpZC0+R2V0Q2VsbFBvaW50cygodnRrSWRUeXBlKV9jZWxsSWQsIG5wdHMsIHB0cyk7CitAQCAt MTgyLDcgKzE4Myw3IEBAIFNNRFNfVnRrQ2VsbEl0ZXJhdG9yUG9seUg6OlNNRFNfVnRrQ2VsbEl0 ZXJhdG9yUG9seUgoU01EU19NZXNoKiBtZXNoLCBpbnQgdnRrQ2VsCisgICB7CisgICAgIC8vTUVT U0FHRSgiU01EU19WdGtDZWxsSXRlcmF0b3IgUG9seWhlZHJhIik7CisgICAgIHZ0a0lkVHlwZSBu RmFjZXMgPSAwOworLSAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKKysgICAgdnRrSWRUeXBlUHRy IHB0SWRzID0gMDsKKyAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbShfY2VsbElkLCBuRmFjZXMsIHB0 SWRzKTsKKyAgICAgaW50IGlkID0gMDsKKyAgICAgX25iTm9kZXNJbkZhY2VzID0gMDsKK2RpZmYg LS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrRWRnZS5jcHAg Yi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtFZGdlLmNwcAoraW5k ZXggOTc4NmFiZjlhLi41OGQyZGYzY2YgMTAwNjQ0CistLS0gc3JjLzNyZFBhcnR5L3NhbG9tZXNt ZXNoL3NyYy9TTURTL1NNRFNfVnRrRWRnZS5jcHAKKysrKyBzcmMvM3JkUGFydHkvc2Fsb21lc21l c2gvc3JjL1NNRFMvU01EU19WdGtFZGdlLmNwcAorQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBTTURT X1Z0a0VkZ2U6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0 IGludCBuYk5vZGVzKQorIHsKKyAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01l c2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKKyAgIHZ0a0lkVHlwZSBucHRzID0g MDsKKy0gIHZ0a0lkVHlwZSogcHRzID0gMDsKKysgIHZ0a0lkVHlwZVB0ciBwdHMgPSAwOworICAg Z3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOworICAgaWYgKG5iTm9kZXMg IT0gbnB0cykKKyAgICAgeworQEAgLTc3LDcgKzc3LDExIEBAIGJvb2wgU01EU19WdGtFZGdlOjpD aGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2Rl cykKKyAgICAgfQorICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYk5vZGVzOyBpKyspCisgICAgIHsK KysjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKKysvL0ZJWE1FOiB2dGs5CisrI2Vsc2UKKyAgICAg ICBwdHNbaV0gPSBub2Rlc1tpXS0+Z2V0VnRrSWQoKTsKKysjZW5kaWYKKyAgICAgfQorICAgU01E U19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7CisgICByZXR1cm4g dHJ1ZTsKK0BAIC04Nyw3ICs5MSw3IEBAIGJvb2wgU01EU19WdGtFZGdlOjpJc01lZGl1bU5vZGUo Y29uc3QgU01EU19NZXNoTm9kZSogbm9kZSkgY29uc3QKKyB7CisgICB2dGtVbnN0cnVjdHVyZWRH cmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7Cisg ICB2dGtJZFR5cGUgbnB0cyA9IDA7CistICB2dGtJZFR5cGUqIHB0cyA9IDA7CisrICB2dGtJZFR5 cGVQdHIgcHRzID0gMDsKKyAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRz KTsKKyAgIC8vTUVTU0FHRSgiSXNNZWRpdW1Ob2RlICIgPDwgbnB0cyAgPDwgIiAiIDw8IChub2Rl LT5nZXRWdGtJZCgpID09IHB0c1tucHRzLTFdKSk7CisgICByZXR1cm4gKChucHRzID09IDMpICYm IChub2RlLT5nZXRWdGtJZCgpID09IHB0c1syXSkpOworQEAgLTEzNyw3ICsxNDEsOCBAQCBjb25z dCBTTURTX01lc2hOb2RlKgorIFNNRFNfVnRrRWRnZTo6R2V0Tm9kZShjb25zdCBpbnQgaW5kKSBj b25zdAorIHsKKyAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNo TGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKKy0gIHZ0a0lkVHlwZSBucHRzLCAqcHRzOworKyAg dnRrSWRUeXBlIG5wdHM7CisrICB2dGtJZFR5cGVQdHIgcHRzOworICAgZ3JpZC0+R2V0Q2VsbFBv aW50cyggdGhpcy0+bXlWdGtJRCwgbnB0cywgcHRzICk7CisgICByZXR1cm4gU01EU19NZXNoOjpf bWVzaExpc3RbbXlNZXNoSWRdLT5GaW5kTm9kZVZ0ayggcHRzWyBpbmQgXSk7CisgfQorZGlmZiAt LWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtGYWNlLmNwcCBi L3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0ZhY2UuY3BwCitpbmRl eCAxMzg5ZTBkMzUuLmE5MjYwMWYxZSAxMDA2NDQKKy0tLSBzcmMvM3JkUGFydHkvc2Fsb21lc21l c2gvc3JjL1NNRFMvU01EU19WdGtGYWNlLmNwcAorKysrIHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVz aC9zcmMvU01EUy9TTURTX1Z0a0ZhY2UuY3BwCitAQCAtMTAyLDcgKzEwMiw3IEBAIGJvb2wgU01E U19WdGtGYWNlOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25z dCBpbnQgbmJOb2RlcykKKyB7CisgICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19N ZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCk7CisgICB2dGtJZFR5cGUgbnB0cyA9 IDA7CistICB2dGtJZFR5cGUqIHB0cyA9IDA7CisrICB2dGtJZFR5cGVQdHIgcHRzID0gMDsKKyAg IGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKKyAgIGlmIChuYk5vZGVz ICE9IG5wdHMpCisgICAgIHsKK0BAIC0xMTEsNyArMTExLDExIEBAIGJvb2wgU01EU19WdGtGYWNl OjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJO b2RlcykKKyAgICAgfQorICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYk5vZGVzOyBpKyspCisgICAg IHsKKysjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKKysvL0ZJWE1FOiB2dGs5CisrI2Vsc2UKKyAg ICAgICBwdHNbaV0gPSBub2Rlc1tpXS0+Z2V0VnRrSWQoKTsKKysjZW5kaWYKKyAgICAgfQorICAg U01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7CisgICByZXR1 cm4gdHJ1ZTsKK0BAIC0xNzMsNyArMTc3LDggQEAgY29uc3QgU01EU19NZXNoTm9kZSoKKyBTTURT X1Z0a0ZhY2U6OkdldE5vZGUoY29uc3QgaW50IGluZCkgY29uc3QKKyB7CisgICB2dGtVbnN0cnVj dHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlk KCk7CistICB2dGtJZFR5cGUgbnB0cywgKnB0czsKKysgIHZ0a0lkVHlwZSBucHRzOworKyAgdnRr SWRUeXBlUHRyIHB0czsKKyAgIGdyaWQtPkdldENlbGxQb2ludHMoIHRoaXMtPm15VnRrSUQsIG5w dHMsIHB0cyApOworICAgcmV0dXJuIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Rmlu ZE5vZGVWdGsoIHB0c1sgaW5kIF0pOworIH0KK0BAIC0xODYsNyArMTkxLDggQEAgU01EU19WdGtG YWNlOjpHZXROb2RlKGNvbnN0IGludCBpbmQpIGNvbnN0CisgaW50IFNNRFNfVnRrRmFjZTo6R2V0 Tm9kZUluZGV4KCBjb25zdCBTTURTX01lc2hOb2RlKiBub2RlICkgY29uc3QKKyB7CisgICB2dGtV bnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5n ZXRHcmlkKCk7CistICB2dGtJZFR5cGUgbnB0cywgKnB0czsKKysgIHZ0a0lkVHlwZSBucHRzOwor KyAgdnRrSWRUeXBlUHRyIHB0czsKKyAgIGdyaWQtPkdldENlbGxQb2ludHMoIHRoaXMtPm15VnRr SUQsIG5wdHMsIHB0cyApOworICAgZm9yICggdnRrSWRUeXBlIGkgPSAwOyBpIDwgbnB0czsgKytp ICkKKyAgICAgaWYgKCBwdHNbaV0gPT0gbm9kZS0+Z2V0VnRrSWQoKSApCitAQCAtMjUxLDcgKzI1 Nyw3IEBAIGJvb2wgU01EU19WdGtGYWNlOjpJc01lZGl1bU5vZGUoY29uc3QgU01EU19NZXNoTm9k ZSogbm9kZSkgY29uc3QKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorICAgdnRrSWRUeXBlIG5w dHMgPSAwOworLSAgdnRrSWRUeXBlKiBwdHMgPSAwOworKyAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7 CisgICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7CisgICB2dGtJZFR5 cGUgbm9kZUlkID0gbm9kZS0+Z2V0VnRrSWQoKTsKKyAgIGZvciAoaW50IHJhbmsgPSAwOyByYW5r IDwgbnB0czsgcmFuaysrKQorQEAgLTM1NywxMCArMzYzLDE0IEBAIHZvaWQgU01EU19WdGtGYWNl OjpDaGFuZ2VBcGV4KFNNRFNfTWVzaE5vZGUqIG5vZGUpCisgeworICAgdnRrVW5zdHJ1Y3R1cmVk R3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwor ICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBlKiBwdHMgPSAwOworKyAgdnRrSWRU eXBlUHRyIHB0cyA9IDA7CisgICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0 cyk7CisgICBncmlkLT5SZW1vdmVSZWZlcmVuY2VUb0NlbGwocHRzWzBdLCBteVZ0a0lEKTsKKysj aWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKKysvL0ZJWE1FOiB2dGs5CisrI2Vsc2UKKyAgIHB0c1sw XSA9IG5vZGUtPmdldFZ0a0lkKCk7CisrI2VuZGlmCisgICBub2RlLT5BZGRJbnZlcnNlRWxlbWVu dCh0aGlzKSwKKyAgIFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+c2V0TXlNb2RpZmll ZCgpOworIH0KK2RpZmYgLS1naXQgc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NN RFNfVnRrVm9sdW1lLmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURT X1Z0a1ZvbHVtZS5jcHAKK2luZGV4IDAxNWVkZjc1Zi4uZGEyZjczZmZiIDEwMDY0NAorLS0tIHNy Yy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a1ZvbHVtZS5jcHAKKysrKyBz cmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtWb2x1bWUuY3BwCitAQCAt MTM0LDcgKzEzNCw3IEBAIGJvb2wgU01EU19WdGtWb2x1bWU6OkNoYW5nZU5vZGVzKGNvbnN0IFNN RFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk5vZGVzCisgeworICAgdnRrVW5zdHJ1 Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3Jp ZCgpOworICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRUeXBlKiBwdHMgPSAwOworKyAg dnRrSWRUeXBlUHRyIHB0cyA9IDA7CisgICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5w dHMsIHB0cyk7CisgICBpZiAobmJOb2RlcyAhPSBucHRzKQorICAgICB7CitAQCAtMTQzLDcgKzE0 MywxMSBAQCBib29sIFNNRFNfVnRrVm9sdW1lOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01lc2hO b2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcworICAgICB9CisgICBmb3IgKGludCBpID0g MDsgaSA8IG5iTm9kZXM7IGkrKykKKyAgICAgeworKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgor Ky8vRklYTUU6IHZ0azkKKysjZWxzZQorICAgICAgIHB0c1tpXSA9IG5vZGVzW2ldLT5nZXRWdGtJ ZCgpOworKyNlbmRpZgorICAgICB9CisgICBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0t PnNldE15TW9kaWZpZWQoKTsKKyAgIHJldHVybiB0cnVlOworQEAgLTIwNyw3ICsyMTEsNyBAQCBp bnQgU01EU19WdGtWb2x1bWU6Ok5iRmFjZXMoKSBjb25zdAorICAgICBjYXNlIFZUS19QT0xZSEVE Uk9OOgorICAgICAgIHsKKyAgICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOworLSAgICAgICAg dnRrSWRUeXBlKiBwdElkcyA9IDA7CisrICAgICAgICB2dGtJZFR5cGVQdHIgcHRJZHMgPSAwOwor ICAgICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRz KTsKKyAgICAgICAgIG5iRmFjZXMgPSBuRmFjZXM7CisgICAgICAgICBicmVhazsKK0BAIC0yMzYs NyArMjQwLDcgQEAgaW50IFNNRFNfVnRrVm9sdW1lOjpOYk5vZGVzKCkgY29uc3QKKyAgIGVsc2UK KyAgICAgeworICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOworLSAgICAgIHZ0a0lkVHlwZSog cHRJZHMgPSAwOworKyAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7CisgICAgICAgZ3JpZC0+ R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKKyAgICAgICBpbnQg aWQgPSAwOworICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkZhY2VzOyBpKyspCitAQCAtMjc2 LDcgKzI4MCw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6TmJFZGdlcygpIGNvbnN0CisgICAgIGNh c2UgVlRLX1BPTFlIRURST046CisgICAgICAgeworICAgICAgICAgdnRrSWRUeXBlIG5GYWNlcyA9 IDA7CistICAgICAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKKysgICAgICAgIHZ0a0lkVHlwZVB0 ciBwdElkcyA9IDA7CisgICAgICAgICBncmlkLT5HZXRGYWNlU3RyZWFtKHRoaXMtPm15VnRrSUQs IG5GYWNlcywgcHRJZHMpOworICAgICAgICAgbmJFZGdlcyA9IDA7CisgICAgICAgICBpbnQgaWQg PSAwOworQEAgLTMxMiw3ICszMTYsNyBAQCBpbnQgU01EU19WdGtWb2x1bWU6Ok5iRmFjZU5vZGVz KGNvbnN0IGludCBmYWNlX2luZCkgY29uc3QKKyAgIGlmIChhVnRrVHlwZSA9PSBWVEtfUE9MWUhF RFJPTikKKyAgICAgeworICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOworLSAgICAgIHZ0a0lk VHlwZSogcHRJZHMgPSAwOworKyAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7CisgICAgICAg Z3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKKyAgICAg ICBpbnQgaWQgPSAwOworICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkZhY2VzOyBpKyspCitA QCAtMzQyLDcgKzM0Niw3IEBAIGNvbnN0IFNNRFNfTWVzaE5vZGUqIFNNRFNfVnRrVm9sdW1lOjpH ZXRGYWNlTm9kZShjb25zdCBpbnQgZmFjZV9pbmQsIGNvbnN0IGludCBuCisgICBpZiAoYVZ0a1R5 cGUgPT0gVlRLX1BPTFlIRURST04pCisgICAgIHsKKyAgICAgICB2dGtJZFR5cGUgbkZhY2VzID0g MDsKKy0gICAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKKysgICAgICB2dGtJZFR5cGVQdHIgcHRJ ZHMgPSAwOworICAgICAgIGdyaWQtPkdldEZhY2VTdHJlYW0odGhpcy0+bXlWdGtJRCwgbkZhY2Vz LCBwdElkcyk7CisgICAgICAgaW50IGlkID0gMDsKKyAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IG5GYWNlczsgaSsrKQorQEAgLTM3Miw3ICszNzYsNyBAQCBzdGQ6OnZlY3RvcjxpbnQ+IFNNRFNf VnRrVm9sdW1lOjpHZXRRdWFudGl0aWVzKCkgY29uc3QKKyAgIGlmIChhVnRrVHlwZSA9PSBWVEtf UE9MWUhFRFJPTikKKyAgICAgeworICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOworLSAgICAg IHZ0a0lkVHlwZSogcHRJZHMgPSAwOworKyAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7Cisg ICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsK KyAgICAgICBpbnQgaWQgPSAwOworICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkZhY2VzOyBp KyspCitAQCAtNDMwLDcgKzQzNCw3IEBAIGNvbnN0IFNNRFNfTWVzaE5vZGUqIFNNRFNfVnRrVm9s dW1lOjpHZXROb2RlKGNvbnN0IGludCBpbmQpIGNvbnN0CisgICBpZiAoIGFWdGtUeXBlID09IFZU S19QT0xZSEVEUk9OKQorICAgeworICAgICB2dGtJZFR5cGUgbkZhY2VzID0gMDsKKy0gICAgdnRr SWRUeXBlKiBwdElkcyA9IDA7CisrICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7CisgICAgIGdy aWQtPkdldEZhY2VTdHJlYW0odGhpcy0+bXlWdGtJRCwgbkZhY2VzLCBwdElkcyk7CisgICAgIGlu dCBpZCA9IDAsIG5iUG9pbnRzID0gMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuRmFjZXM7 IGkrKykKK0BAIC00NDMsNyArNDQ3LDggQEAgY29uc3QgU01EU19NZXNoTm9kZSogU01EU19WdGtW b2x1bWU6OkdldE5vZGUoY29uc3QgaW50IGluZCkgY29uc3QKKyAgICAgfQorICAgICByZXR1cm4g MDsKKyAgIH0KKy0gIHZ0a0lkVHlwZSBucHRzLCAqcHRzOworKyAgdnRrSWRUeXBlIG5wdHM7Cisr ICB2dGtJZFR5cGVQdHIgcHRzOworICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggdGhpcy0+bXlWdGtJ RCwgbnB0cywgcHRzICk7CisgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBpbnRlcmxhY2UgPSBT TURTX01lc2hDZWxsOjpmcm9tVnRrT3JkZXIoIFZUS0NlbGxUeXBlKCBhVnRrVHlwZSApKTsKKyAg IHJldHVybiBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPkZpbmROb2RlVnRrKCBwdHNb IGludGVybGFjZS5lbXB0eSgpID8gaW5kIDogaW50ZXJsYWNlW2luZF1dICk7CitAQCAtNDYwLDcg KzQ2NSw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6R2V0Tm9kZUluZGV4KCBjb25zdCBTTURTX01l c2hOb2RlKiBub2RlICkgY29uc3QKKyAgIGlmICggYVZ0a1R5cGUgPT0gVlRLX1BPTFlIRURST04p CisgICB7CisgICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAwOworLSAgICB2dGtJZFR5cGUqIHB0SWRz ID0gMDsKKysgICAgdnRrSWRUeXBlUHRyIHB0SWRzID0gMDsKKyAgICAgZ3JpZC0+R2V0RmFjZVN0 cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKKyAgICAgaW50IGlkID0gMDsKKyAg ICAgZm9yIChpbnQgaUYgPSAwOyBpRiA8IG5GYWNlczsgaUYrKykKK0BAIC00NzMsNyArNDc4LDgg QEAgaW50IFNNRFNfVnRrVm9sdW1lOjpHZXROb2RlSW5kZXgoIGNvbnN0IFNNRFNfTWVzaE5vZGUq IG5vZGUgKSBjb25zdAorICAgICB9CisgICAgIHJldHVybiAtMTsKKyAgIH0KKy0gIHZ0a0lkVHlw ZSBucHRzLCAqcHRzOworKyAgdnRrSWRUeXBlIG5wdHM7CisrICB2dGtJZFR5cGVQdHIgcHRzOwor ICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggdGhpcy0+bXlWdGtJRCwgbnB0cywgcHRzICk7CisgICBm b3IgKCB2dGtJZFR5cGUgaSA9IDA7IGkgPCBucHRzOyArK2kgKQorICAgICBpZiAoIHB0c1tpXSA9 PSBub2RlLT5nZXRWdGtJZCgpICkKK0BAIC01MzQsNyArNTQwLDcgQEAgYm9vbCBTTURTX1Z0a1Zv bHVtZTo6SXNNZWRpdW1Ob2RlKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUpIGNvbnN0CisgICAg ICAgcmV0dXJuIGZhbHNlOworICAgfQorICAgdnRrSWRUeXBlIG5wdHMgPSAwOworLSAgdnRrSWRU eXBlKiBwdHMgPSAwOworKyAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7CisgICBncmlkLT5HZXRDZWxs UG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7CisgICB2dGtJZFR5cGUgbm9kZUlkID0gbm9kZS0+ Z2V0VnRrSWQoKTsKKyAgIGZvciAoaW50IHJhbmsgPSAwOyByYW5rIDwgbnB0czsgcmFuaysrKQor ZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRVNIL1NNRVNIX01lc2hF ZGl0b3IuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTUVTSC9TTUVTSF9NZXNo RWRpdG9yLmNwcAoraW5kZXggYTc0MjcwMmZmLi4xZmY0ZDVlZWYgMTAwNjQ0CistLS0gc3JjLzNy ZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTUVTSC9TTUVTSF9NZXNoRWRpdG9yLmNwcAorKysrIHNy Yy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01FU0gvU01FU0hfTWVzaEVkaXRvci5jcHAKK0BA IC0xMTM0Myw3ICsxMTM0Myw3IEBAIGJvb2wgU01FU0hfTWVzaEVkaXRvcjo6RG91YmxlTm9kZXNP bkdyb3VwQm91bmRhcmllcyggY29uc3Qgc3RkOjp2ZWN0b3I8VElEU29ydGVkCisgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgaW50IG9sZElkID0gKml0bjsKKyAgICAgICAgICAgICAgIC8v TUVTU0FHRSgiICAgICBub2RlICIgPDwgb2xkSWQpOworLSAgICAgICAgICAgICAgdnRrQ2VsbExp bmtzOjpMaW5rIGwgPSBncmlkLT5HZXRDZWxsTGlua3MoKS0+R2V0TGluayhvbGRJZCk7CisrICAg ICAgICAgICAgICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5r cyo+KGdyaWQtPkdldENlbGxMaW5rcygpKS0+R2V0TGluayhvbGRJZCk7CisgICAgICAgICAgICAg ICBmb3IgKGludCBpPTA7IGk8bC5uY2VsbHM7IGkrKykKKyAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgIGludCB2dGtJZCA9IGwuY2VsbHNbaV07CitAQCAtMTE1MjIsNyArMTE1 MjIsNyBAQCBib29sIFNNRVNIX01lc2hFZGl0b3I6OkRvdWJsZU5vZGVzT25Hcm91cEJvdW5kYXJp ZXMoIGNvbnN0IHN0ZDo6dmVjdG9yPFRJRFNvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vTUVTU0FHRSgiICBkb21haW4gIiA8PCBpZG9tIDw8ICIgdm9s dW1lICIgPDwgZWxlbS0+R2V0SUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG91YmxlIHZhbHVlc1szXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2dGtJZFR5cGUgbnB0cyA9IDA7CistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdnRrSWRUeXBlKiBwdHMgPSAwOworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0a0lkVHlwZVB0ciBwdHMgPSAwOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtPkdldENlbGxQb2lu dHModnRrVm9sSWRzW2l2b2xdLCBucHRzLCBwdHMpOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNNRFNfVnRrVm9sdW1lOjpncmF2aXR5Q2VudGVyKGdyaWQsIHB0 cywgbnB0cywgdmFsdWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoaWQgPT0wKQorQEAgLTExNzAzLDcgKzExNzAzLDcgQEAgYm9vbCBTTUVTSF9NZXNo RWRpdG9yOjpEb3VibGVOb2Rlc09uR3JvdXBCb3VuZGFyaWVzKCBjb25zdCBzdGQ6OnZlY3RvcjxU SURTb3J0ZWQKKyAgICAgICAgIHsKKyAgICAgICAgICAgaW50IG9sZElkID0gaXRub2QtPmZpcnN0 OworICAgICAgICAgICAvL01FU1NBR0UoIiAgICAgbm9kZSAiIDw8IG9sZElkKTsKKy0gICAgICAg ICAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBncmlkLT5HZXRDZWxsTGlua3MoKS0+R2V0TGluayhv bGRJZCk7CisrICAgICAgICAgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGljX2Nhc3Q8dnRr Q2VsbExpbmtzKj4oZ3JpZC0+R2V0Q2VsbExpbmtzKCkpLT5HZXRMaW5rKG9sZElkKTsKKyAgICAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsLm5jZWxsczsgaSsrKQorICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgIGludCB2dGtJZCA9IGwuY2VsbHNbaV07CitAQCAtMTIxNjAsNyArMTIx NjAsNyBAQCB2b2lkIFNNRVNIX01lc2hFZGl0b3I6OkNyZWF0ZUhvbGVTa2luKGRvdWJsZSByYWRp dXMsCisgICAgICAgICAgIE1FU1NBR0UoInZvbHVtZSB0byBjaGVjaywgIHZ0a0lkICIgPDwgdnRr SWQgPDwgIiBzbWRzSWQgIiA8PCBtZXNoRFMtPmZyb21WdGtUb1NtZHModnRrSWQpKTsKKyAgICAg ICAgICAgYm9vbCB2b2xJbnNpZGUgPSBmYWxzZTsKKyAgICAgICAgICAgdnRrSWRUeXBlIG5wdHMg PSAwOworLSAgICAgICAgICB2dGtJZFR5cGUqIHB0cyA9IDA7CisrICAgICAgICAgIHZ0a0lkVHlw ZVB0ciBwdHMgPSAwOworICAgICAgICAgICBncmlkLT5HZXRDZWxsUG9pbnRzKHZ0a0lkLCBucHRz LCBwdHMpOworICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bnB0czsgaSsrKQorICAgICAgICAg ICAgIHsKKwo= --===============3152370363727796855==--