[PATCH v11 04/10] gdb: Skip trampoline frames for the backtrace command.

Abdul Basit Ijaz <[email protected]> Mon, 3 Aug 2026 21:34:43 +0200
Newsgroups gmane.comp.gdb.patches
Message-ID <[email protected]>
VGhpcyBjaGFuZ2UgZmlsdGVycyB0cmFtcG9saW5lIGZ1bmN0aW9ucyB3aGVuIHRoZSBvcHRpb24K
J3NraXAtdHJhbXBvbGluZS1mdW5jdGlvbnMnIGlzIHNldCB0byAnb24nIGZvciB0aGUgYmFja3Ry
YWNlIGNvbW1hbmQuCkJlZm9yZSB0aGUgY2hhbmdlLCBHREIgcHJpbnRzIHRoZSBmcmFtZXMgaW5k
aWNhdGVkIGJ5IHRoZSBjb21waWxlciB3aXRoCkRJRSAiRFdfQVRfdHJhbXBvbGluZSIgaW4gdGhl
IGJhY2t0cmFjZSwgYnV0IGZvciBiZXR0ZXIgdXNlciBleHBlcmllbmNlLAphbGwgc3VjaCBmcmFt
ZXMgY2FuIGJlIGhpZGRlbiBmcm9tIHRoZSB1c2VyLgoKRm9yIE8yIG9wdGltaXplZCBjb2RlIHdo
ZXJlIGlubGluZWQgdHJhbXBvbGluZSB3cmFwcGVycyBhcmUgaW5saW5lZCBpbnRvCnJlZ3VsYXIg
ZnVuY3Rpb25zLiAgQ2hlY2sgdGhlIGZyYW1lJ3MgZnVuY3Rpb24gZGlyZWN0bHkgZm9yIGlubGlu
ZSBmcmFtZXMKaW5zdGVhZCBvZiBsb29raW5nIHVwIGJ5IFBDLCB3aGljaCB3b3VsZCBpbmNvcnJl
Y3RseSByZXR1cm4gdGhlIGNhbGxlcidzCmZ1bmN0aW9uLgoKVGhlIHRlc3QgJ2dkYi5mb3J0cmFu
L21peGVkLWxhbmctc3RhY2snIHRlc3QgdXNlZCB0byBmYWlsIGZvciB0aGUgSUZYCmNvbXBpbGVy
IGJlY2F1c2Ugb2YgZXh0cmEgdHJhbXBvbGluZSBmcmFtZXMgaW4gdGhlIGJhY2t0cmFjZS4gIEFm
dGVyIHRoZQpjb21taXQsIHRob3NlIHRyYW1wb2xpbmUgZnJhbWVzIGFyZSBmaWx0ZXJlZCBhbmQg
dGVzdCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LgoKRXh0cmEgdHJhbXBvbGluZSBmcmFtZXM6Cgpi
dCAtZnJhbWUtYXJndW1lbnRzIGFsbAonJycKXCM4ICAweDAwMDAwMDAwMDA0MDU1MzUgaW4gbWl4
ZWRfZnVuY18xYl8udDg2cC50ODdwLnQ4OHAudDg5cC50OTBwLnQ5MXAudDN2ICgpClwjMTAgMHgw
MDAwMDAwMDAwNDA1NDM5IGluIG1peGVkX2Z1bmNfMWFfLnZvaWQgKCkgYXQgbWl4ZWQtbGFuZy1z
dGFjay5mOTA6MzMKJycnCihnZGIpIEZBSUw6IGdkYi5mb3J0cmFuL21peGVkLWxhbmctc3RhY2su
ZXhwOiBsYW5nPWF1dG86IGJ0IC1mcmFtZS1hcmd1bWVudHMgYWxsCgpJbiB0aGlzIGV4YW1wbGUg
dGhlIElGWCBjb21waWxlciBlbWl0cyAiRFdfQVRfdHJhbXBvbGluZSIgdGFnIGZvciB0aGUgJ2Zp
cnN0JwphbmQgJ3NlY29uZCcgdHJhbXBvbGluZSBmdW5jdGlvbnMgbGlrZSBmb2xsb3dpbmc6Cgpm
dW5jdGlvbiBzZWNvbmQgKHgsIHkpIHJlc3VsdCh6KQogIGludGVnZXIsIGludGVudChpbikgOjog
eCwgeQogIGludGVnZXIgOjogegogIHogPSB4ICogeSAhIGJyZWFrcHQtYmFja3RyYWNlCmVuZCBm
dW5jdGlvbiBzZWNvbmQKCmZ1bmN0aW9uIGZpcnN0IChudW0xLCBudW0yKSByZXN1bHQodG90YWwp
CiAgaW50ZWdlciwgaW50ZW50KGluKSA6OiBudW0xLCBudW0yCiAgaW50ZWdlciAgOjogdG90YWwK
ICB0b3RhbCA9IHNlY29uZCAobnVtMSArIDQsIG51bTIgKiAzKSAhIGZpcnN0LWJyZWFrcHQKICB0
b3RhbCA9IHRvdGFsICsgMzAKZW5kIGZ1bmN0aW9uIGZpcnN0CgpSZWxhdGVkIER3YXJmOgoKMHgw
MDAwMDEzZjogICBEV19UQUdfc3VicHJvZ3JhbQogICAgICAgICAgICAgICAgRFdfQVRfbG93X3Bj
ICAgICgweDAwMDAwMDAwMDA0MDQzNTApCiAgICAgICAgICAgICAgICBEV19BVF9oaWdoX3BjICAg
KDB4MDAwMDAwMDAwMDQwNDM1ZikKICAgICAgICAgICAgICAgIERXX0FUX2ZyYW1lX2Jhc2UgICAg
ICAgIChEV19PUF9yZWc2IFJCUCkKICAgICAgICAgICAgICAgIERXX0FUX2xpbmthZ2VfbmFtZSAg
ICAgICgic2Vjb25kXy50NzRwLnQ3NXAiKQogICAgICAgICAgICAgICAgRFdfQVRfbmFtZSAgICAg
ICgic2Vjb25kXy50NzRwLnQ3NXAiKQogICAgICAgICAgICAgICAgRFdfQVRfdHJhbXBvbGluZSAg
ICAgICAgKCJzZWNvbmRfIikKCjB4MDAwMDAxNWE6ICAgRFdfVEFHX3N1YnByb2dyYW0KICAgICAg
ICAgICAgICAgIERXX0FUX2xvd19wYyAgICAoMHgwMDAwMDAwMDAwNDA0NGEwKQogICAgICAgICAg
ICAgICAgRFdfQVRfaGlnaF9wYyAgICgweDAwMDAwMDAwMDA0MDQ0YWYpCiAgICAgICAgICAgICAg
ICBEV19BVF9mcmFtZV9iYXNlICAgICAgICAoRFdfT1BfcmVnNiBSQlApCiAgICAgICAgICAgICAg
ICBEV19BVF9saW5rYWdlX25hbWUgICAgICAoImZpcnN0Xy50MTA0cC50MTA1cCIpCiAgICAgICAg
ICAgICAgICBEV19BVF9uYW1lICAgICAgKCJmaXJzdF8udDEwNHAudDEwNXAiKQogICAgICAgICAg
ICAgICAgRFdfQVRfdHJhbXBvbGluZSAgICAgICAgKCJmaXJzdF8iKQoKQmVmb3JlIHRoaXMgY2hh
bmdlLCB0aGUgYmFja3RyYWNlIGNvbW1hbmQgb3V0cHV0IGxvb2tzIGxpa2U6CgonJycKKGdkYikg
YmFja3RyYWNlIDMKXCMwICBzZWNvbmQgKHg9MjAsIHk9OSkgYXQgdGVzdC5mOTA6NApcIzEgIDB4
MDAwMDAwMDAwMDQwNTIwOSBpbiBzZWNvbmRfLnQ3NHAudDc1cCAoKSBhdCB0ZXN0LmY5MDoxMgpc
IzIgIDB4MDAwMDAwMDAwMDQwNTFlMyBpbiBmaXJzdCAobnVtMT0xNiwgbnVtMj0zKSBhdCB0ZXN0
LmY5MDoxMAooZ2RiKSBiYWNrdHJhY2UgLTMKXCMyICAweDAwMDAwMDAwMDA0MDUxZTMgaW4gZmly
c3QgKG51bTE9MTYsIG51bTI9MykgYXQgdGVzdC5mOTA6MTAKXCMzICAweDAwMDAwMDAwMDA0MDUz
MDkgaW4gZmlyc3RfLnQ5NXAudDk2cCAoKSBhdCB0ZXN0LmY5MDoyMQpcIzQgIDB4MDAwMDAwMDAw
MDQwNTIzNCBpbiBmdW5jX3RyYW1wb2xpbmUgKCkgYXQgdGVzdC5mOTA6MTcKJycnCgpBZnRlciB0
aGUgY2hhbmdlOgonJycKKGdkYikgYmFja3RyYWNlIDMKXCMwICBzZWNvbmQgKHg9MjAsIHk9OSkg
YXQgdGVzdC5mOTA6NApcIzIgIDB4MDAwMDAwMDAwMDQwNTFlMyBpbiBmaXJzdCAobnVtMT0xNiwg
bnVtMj0zKSBhdCB0ZXN0LmY5MDoxMApcIzQgIDB4MDAwMDAwMDAwMDQwNTIzNCBpbiBmdW5jX3Ry
YW1wb2xpbmUgKCkgYXQgdGVzdC5mOTA6MTcKCihnZGIpIGJhY2t0cmFjZSAtMwpcIzIgIDB4MDAw
MDAwMDAwMDQwNTFlMyBpbiBmaXJzdCAobnVtMT0xNiwgbnVtMj0zKSBhdCB0ZXN0LmY5MDoxMApc
IzQgIDB4MDAwMDAwMDAwMDQwNTIzNCBpbiBmdW5jX3RyYW1wb2xpbmUgKCkgYXQgdGVzdC5mOTA6
MTcKJycnCgpUaGUgdGVzdCBnZGIuZm9ydHJhbi9mdW5jLXRyYW1wb2xpbmUuZXhwIGlzIGFkZGVk
IGZvciB0ZXN0aW5nIHRoZSBjaGFuZ2UKdXNpbmcgTzAgYW5kIE8yIG9wdGltaXphdGlvbiBsZXZl
bC4KLS0tCiBnZGIvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
NSArLQogZ2RiL2RvYy9nZGIudGV4aW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYg
KysKIGdkYi9pbmZydW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICst
CiBnZGIvaW5mcnVuLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKwog
Z2RiL3N0YWNrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysKIGdk
Yi9zeW10YWIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMxICsrKysrKysK
IGdkYi9zeW10YWIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrCiBn
ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5leHAgfCA4NyArKysrKysr
KysrKysrKysrKysrCiBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5m
OTAgfCA0MCArKysrKysrKysKIC4uLi9nZGIuZm9ydHJhbi9taXhlZC1sYW5nLXN0YWNrLmV4cCAg
ICAgICAgICB8ICA4ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNyBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu
L2Z1bmMtdHJhbXBvbGluZS5leHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dk
Yi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5mOTAKCmRpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dk
Yi9ORVdTCmluZGV4IDVjNjE4YzBkMzhkLi44MTAwZjdjZDdiNCAxMDA2NDQKLS0tIGEvZ2RiL05F
V1MKKysrIGIvZ2RiL05FV1MKQEAgLTE3NzMsOCArMTc3Myw5IEBAIHNob3cgc2tpcC10cmFtcG9s
aW5lLWZ1bmN0aW9ucwogICBUaGlzIHNldHRpbmcgaXMgJ29uJyBieSBkZWZhdWx0LiAgV2hlbiAn
b24nIGl0IGNvbnRyb2xzIHdoZXRoZXIgR0RCIHdpbGwKICAgcmVjb2duaXplIGZ1bmN0aW9uIGNh
bGxzIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBhcyB0cmFtcG9saW5lcyBpbiB0aGUgZGVidWcKICAg
aW5mby4gIEl0IGltcHJvdmVzIHN0ZXBwaW5nIGJlaGF2aW9yIGluIHRoYXQgaXQgc3RlcHMgb3Zl
ciB0aGUgdHJhbXBvbGluZQotICBjb2RlIGFuZCBoaWRlcyBpdCBmcm9tIHRoZSB1c2VyLiAgQ3Vy
cmVudGx5LCBvbmx5IERXQVJGIHRyYW1wb2xpbmVzIGFyZQotICBzdXBwb3J0ZWQuCisgIGNvZGUg
YW5kIGhpZGVzIGl0IGZyb20gdGhlIHVzZXIuICBJdCBpbXByb3ZlcyB0aGUgcHJpbnRpbmcgb2Yg
dGhlIHN0YWNrIGJ5CisgIGhpZGluZyB0cmFtcG9saW5lIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYWNr
dHJhY2UuICBDdXJyZW50bHksIG9ubHkgRFdBUkYKKyAgdHJhbXBvbGluZXMgYXJlIHN1cHBvcnRl
ZC4KIAogICBJZiB0aGlzIGlzIHR1cm5lZCBvZmYsIEdEQiB3aWxsIGhhbmRsZSBAZGZue3RyYW1w
b2xpbmUgZnVuY3Rpb25zfSB0aGUgc2FtZQogICBhcyBhbnkgb3RoZXIgZnVuY3Rpb24uCmRpZmYg
LS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwppbmRleCBm
OGRkN2Q4ZWM0ZS4uYWY1NzYxMGRkYzMgMTAwNjQ0Ci0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8K
KysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwpAQCAtNjc2OSw2ICs2NzY5LDEyIEBAIGV4ZWN1dGlv
biB1bnRpbCBsZWF2aW5nIHRoZSB0cmFtcG9saW5lIHJlZ2lvbi4gIFRoZSBAY29kZXtzdGVwaX0g
Y29tbWFuZAogaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBzZXR0aW5nIHdoaWNoIGlzIGVuYWJsZWQg
YnkgZGVmYXVsdC4gIEN1cnJlbnRseSwgb25seQogRFdBUkYgdHJhbXBvbGluZXMgbWFya2VkIHZp
YSBEV19BVF90cmFtcG9saW5lIGFyZSBzdXBwb3J0ZWQgYnkgdGhpcy4KIAorV2hlbiBpc3N1aW5n
IGEgQGNvZGV7YmFja3RyYWNlfSwgaWYgQGNvZGV7c2tpcC10cmFtcG9saW5lLWZ1bmN0aW9uc30g
aXMgc2V0LAorQHZhbHVle0dEQk59IHdpbGwgc2tpcCB0cmFtcG9saW5lIGZyYW1lcyB3aGlsZSBw
cmludGluZyB0aGUgc3RhY2suCisKK0N1cnJlbnRseSwgb25seSBEV0FSRiB0cmFtcG9saW5lcyBt
YXJrZWQgdmlhIERXX0FUX3RyYW1wb2xpbmUgYXJlIHN1cHBvcnRlZCBieQordGhpcy4KKwogQGl0
ZW0gc2V0IHNraXAtdHJhbXBvbGluZS1mdW5jdGlvbnMgb2ZmCiBDYXVzZXMgQHZhbHVle0dEQk59
IHRvIGNvbXBsZXRlbHkgaWdub3JlIGFueSB0cmFtcG9saW5lIGluZm9ybWF0aW9uIGEgY29tcGls
ZXIKIG1pZ2h0IGhhdmUgZW1pdHRlZCBpbiBpdHMgZGVidWcgaW5mby4gIFRyYW1wb2xpbmVzIHdp
bGwgYmUgdHJlYXRlZCBsaWtlIGFueQpkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2lu
ZnJ1bi5jCmluZGV4IDBiMDMyY2U5NGMwLi45ZDFiODVlOWQxZiAxMDA2NDQKLS0tIGEvZ2RiL2lu
ZnJ1bi5jCisrKyBiL2dkYi9pbmZydW4uYwpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyBib29s
IGRldGFjaF9mb3JrID0gdHJ1ZTsKICAgIERXX0FUX3RyYW1wb2xpbmUgYnkgdGhlIGNvbXBpbGVy
LiAgSWYgZmFsc2UsIEdEQiB3aWxsIGlnbm9yZSB0aGUKICAgIGF0dHJpYnV0ZS4gICovCiAKLXN0
YXRpYyBib29sIHNraXBfdHJhbXBvbGluZV9mdW5jdGlvbnMgPSB0cnVlOworYm9vbCBza2lwX3Ry
YW1wb2xpbmVfZnVuY3Rpb25zID0gdHJ1ZTsKIAogYm9vbCBkZWJ1Z19pbmZydW4gPSBmYWxzZTsK
IHN0YXRpYyB2b2lkCkBAIC0xMTAzMSw4ICsxMTAzMSw4IEBAIE9wdGlvbnMgYXJlICdmb3J3YXJk
JyBvciAncmV2ZXJzZScuIiksCiAJCQkgICZza2lwX3RyYW1wb2xpbmVfZnVuY3Rpb25zLCBfKCJc
CiBTZXQgd2hldGhlciBnZGIgYXR0ZW1wdHMgdG8gaGlkZSB0cmFtcG9saW5lcyBtYXJrZWQgaW4g
dGhlIGRlYnVnIGluZm8uIiksIF8oIlwKIFNob3cgd2hldGhlciBnZGIgYXR0ZW1wdHMgdG8gaGlk
ZSB0cmFtcG9saW5lcyBtYXJrZWQgaW4gdGhlIGRlYnVnIGluZm8uIiksIF8oIlwKLUlmIG9uLCB3
aGlsZSBzdGVwcGluZyBnZGIgd2lsbCBza2lwIHRocm91Z2ggZnVuY3Rpb25zIGFuZCBpbmxpbmVk
IGZ1bmN0aW9uc1xuXAotbWFya2VkIGFzIHRyYW1wb2xpbmVzIGJ5IHRoZSBjb21waWxlci4gIElm
IG9mZiwgZ2RiIHdpbGwgdHJlYXQgdHJhbXBvbGluZXMgYXNcblwKK0lmIG9uLCBnZGIgd2lsbCBz
a2lwIHRocm91Z2ggZnVuY3Rpb25zIGFuZCBpbmxpbmVkIGZ1bmN0aW9ucyBtYXJrZWQgYXNcblwK
K3RyYW1wb2xpbmVzIGJ5IHRoZSBjb21waWxlci4gIElmIG9mZiwgZ2RiIHdpbGwgdHJlYXQgdHJh
bXBvbGluZXMgYXNcblwKIG5vcm1hbCBmdW5jdGlvbnMuIiksCiAJCQkgIG51bGxwdHIsIHNob3df
c2tpcF90cmFtcG9saW5lX2Z1bmN0aW9ucywgJnNldGxpc3QsCiAJCQkgICZzaG93bGlzdCk7CmRp
ZmYgLS1naXQgYS9nZGIvaW5mcnVuLmggYi9nZGIvaW5mcnVuLmgKaW5kZXggMTM1ZDFmYzM1MGIu
LmE1YzZmMzE3MTkzIDEwMDY0NAotLS0gYS9nZGIvaW5mcnVuLmgKKysrIGIvZ2RiL2luZnJ1bi5o
CkBAIC0xMDYsNiArMTA2LDEyIEBAIGV4dGVybiBib29sIG5vbl9zdG9wOwogICAgc3RhcnRpbmcg
YW4gaW5mZXJpb3IuICAqLwogZXh0ZXJuIGJvb2wgZGlzYWJsZV9yYW5kb21pemF0aW9uOwogCisv
KiBJZiBzZXQgKGRlZmF1bHQpIEdEQiB3aWxsIHN0ZXAgdGhyb3VnaCBmdW5jdGlvbnMvaW5saW5l
ZCBzdWJyb3V0aW5lcyBtYXJrZWQKKyAgIERXX0FUX3RyYW1wb2xpbmUgYnkgdGhlIGNvbXBpbGVy
LiAgSWYgZmFsc2UsIEdEQiB3aWxsIGlnbm9yZSB0aGUKKyAgIGF0dHJpYnV0ZS4gICovCisKK2V4
dGVybiBib29sIHNraXBfdHJhbXBvbGluZV9mdW5jdGlvbnM7CisKIC8qIFJldHVybnMgYSB1bmlx
dWUgaWRlbnRpZmllciBmb3IgdGhlIGN1cnJlbnQgc3RvcC4gIFRoaXMgY2FuIGJlIHVzZWQKICAg
IHRvIHRlbGwgd2hldGhlciBhIGNvbW1hbmQgaGFzIHByb2NlZWRlZCB0aGUgaW5mZXJpb3IgcGFz
dCB0aGUKICAgIGN1cnJlbnQgbG9jYXRpb24uICAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3N0YWNrLmMg
Yi9nZGIvc3RhY2suYwppbmRleCBmNDFmODE4Y2ViYi4uZmEyMTdhZTlmNmYgMTAwNjQ0Ci0tLSBh
L2dkYi9zdGFjay5jCisrKyBiL2dkYi9zdGFjay5jCkBAIC0xOTc4LDYgKzE5NzgsMTQgQEAgYmFj
a3RyYWNlX2NvbW1hbmRfMSAoY29uc3QgZnJhbWVfcHJpbnRfb3B0aW9ucyAmZnBfb3B0cywKIAl7
CiAJICBRVUlUOwogCisJICBpZiAoc2tpcF90cmFtcG9saW5lX2Z1bmN0aW9ucyAmJiBpbl90cmFt
cG9saW5lX2ZyYW1lIChmaSkpCisJICAgIHsKKwkgICAgICAvKiBUcmFtcG9saW5lIGZyYW1lcyBh
cmUgbm90IHByaW50ZWQgc28gdGhleSBhcmUgbm90IGNvdW50ZWQgaW4KKwkJIHRoZSBiYWNrdHJh
Y2UgbGltaXQuICAqLworCSAgICAgIGNvdW50Kys7CisJICAgICAgY29udGludWU7CisJICAgIH0K
KwogCSAgLyogRG9uJ3QgdXNlIHByaW50X3N0YWNrX2ZyYW1lOyBpZiBhbiBlcnJvcigpIG9jY3Vy
cyBpdCBwcm9iYWJseQogCSAgICAgbWVhbnMgZnVydGhlciBhdHRlbXB0cyB0byBiYWNrdHJhY2Ug
d291bGQgZmFpbCAob24gdGhlIG90aGVyCiAJICAgICBoYW5kLCBwZXJoYXBzIHRoZSBjb2RlIGRv
ZXMgb3IgY291bGQgYmUgZml4ZWQgdG8gbWFrZSBzdXJlCmRpZmYgLS1naXQgYS9nZGIvc3ltdGFi
LmMgYi9nZGIvc3ltdGFiLmMKaW5kZXggZTU0NjQ1NTE4MDcuLjg5MzFmNTA3NzVjIDEwMDY0NAot
LS0gYS9nZGIvc3ltdGFiLmMKKysrIGIvZ2RiL3N5bXRhYi5jCkBAIC00MTQ5LDYgKzQxNDksMzcg
QEAgaW5fdHJhbXBvbGluZV9mdW5jdGlvbiAoQ09SRV9BRERSIHBjKQogCiAvKiBTZWUgc3ltdGFi
LmguICAqLwogCitib29sCitpbl90cmFtcG9saW5lX2ZyYW1lIChmcmFtZV9pbmZvX3B0ciBmaSkK
K3sKKyAgLyogRm9yIGlubGluZSBmcmFtZXMsIHRoZXkgc2hhcmUgdGhlIFBDIG9mIHRoZWlyIGNh
bGxlci4gIFdlIG5lZWQgdG8gY2hlY2sKKyAgICAgdGhlIGZyYW1lJ3MgZnVuY3Rpb24gZGlyZWN0
bHksIG5vdCBsb29rIHVwIHRoZSBmdW5jdGlvbiBhdCB0aGUgUEMuCisgICAgIExvb2tpbmcgdXAg
YnkgUEMgd291bGQgcmV0dXJuIHRoZSBjYWxsZXIncyBmdW5jdGlvbiBub3QgdGhlIGlubGluZQor
ICAgICBmdW5jdGlvbiBpdHNlbGYuCisKKyAgICAgRm9yIE8yIG9wdGltaXplZCBjb2RlLCB0aGUg
Y29tcGlsZXIgbWF5IGlubGluZSB0cmFtcG9saW5lIHdyYXBwZXJzIGludG8KKyAgICAgcmVndWxh
ciBmdW5jdGlvbnMuICBJbiBzdWNoIGNhc2VzLCBsb29raW5nIHVwIGJ5IFBDIHdvdWxkIHBvaW50
IHRvIHRoZQorICAgICBjb25jcmV0ZSByZWd1bGFyIGZ1bmN0aW9uIGFuZCBpbmNvcnJlY3RseSBy
ZXR1cm4gZmFsc2UgKG5vdCBhIHRyYW1wb2xpbmUpLgorICAgICBCeSBjaGVja2luZyB0aGUgaW5s
aW5lIGZyYW1lJ3MgZnVuY3Rpb24gZGlyZWN0bHkgdmlhIGdldF9mcmFtZV9mdW5jdGlvbigpLAor
ICAgICB3ZSBjb3JyZWN0bHkgaWRlbnRpZnkgd2hlbiB0aGUgaW5saW5lIGZyYW1lIGl0c2VsZiBp
cyBhIHRyYW1wb2xpbmUuICAqLworICBpZiAoZ2V0X2ZyYW1lX3R5cGUgKGZpKSA9PSBJTkxJTkVf
RlJBTUUpCisgICAgeworICAgICAgc3ltYm9sICpmdW5jID0gZ2V0X2ZyYW1lX2Z1bmN0aW9uIChm
aSk7CisgICAgICByZXR1cm4gZnVuYyAhPSBudWxscHRyICYmIFRZUEVfSVNfVFJBTVBPTElORSAo
ZnVuYy0+dHlwZSAoKSk7CisgICAgfQorCisgIC8qIEZvciBub24taW5saW5lIGZyYW1lcywgdXNl
IGluX3RyYW1wb2xpbmVfZnVuY3Rpb24oKSB3aGljaCBsb29rcyB1cCBvbmx5CisgICAgIHRoZSBj
b25jcmV0ZSBmdW5jdGlvbiBhdCB0aGUgUEMsIGVuc3VyaW5nIHdlIGNoZWNrIHRoZSBhY3R1YWwg
ZnJhbWUncworICAgICBmdW5jdGlvbiBhbmQgbm90IGFueSBpbmxpbmVkIGNvZGUgd2l0aGluIGl0
LiAgKi8KKyAgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IHBjOworICBpZiAoKHBjID0gZ2V0X2Zy
YW1lX3BjX2lmX2F2YWlsYWJsZSAoZmkpKSkKKyAgICByZXR1cm4gaW5fdHJhbXBvbGluZV9mdW5j
dGlvbiAocGMudmFsdWUgKCkpOworCisgIHJldHVybiBmYWxzZTsKK30KKworLyogU2VlIHN5bXRh
Yi5oLiAgKi8KKwogQ09SRV9BRERSCiBmaW5kX2Z1bmN0aW9uX3RyYW1wb2xpbmVfdGFyZ2V0IChD
T1JFX0FERFIgcGMpCiB7CmRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmggYi9nZGIvc3ltdGFiLmgK
aW5kZXggMTBmNjQ1NDhmNTguLjhhOGQ5ZjNmODVmIDEwMDY0NAotLS0gYS9nZGIvc3ltdGFiLmgK
KysrIGIvZ2RiL3N5bXRhYi5oCkBAIC0yMzc3LDYgKzIzNzcsMTEgQEAgZXh0ZXJuIGJvb2wgaW5f
dHJhbXBvbGluZV9mdW5jdGlvbiAoQ09SRV9BRERSIHBjKTsKIAogZXh0ZXJuIGJvb2wgaW5fdHJh
bXBvbGluZV9jb2RlIChDT1JFX0FERFIgcGMpOwogCisvKiBSZXR1cm4gd2hldGhlciBvciBub3Qg
dGhlIHBjIG9mIHRoZSBjdXJyZW50IGZyYW1lIGlzIHdpdGhpbiBhIGJsb2NrIHRoYXQKKyAgIGJl
bG9uZ3MgdG8gYSBmdW5jdGlvbiB0aGF0IGlzIG1hcmtlZCBhcyBhIHRyYW1wb2xpbmUgYnkgdGhl
IGNvbXBpbGVyLiAgKi8KKworZXh0ZXJuIGJvb2wgaW5fdHJhbXBvbGluZV9mcmFtZSAoZnJhbWVf
aW5mb19wdHIpOworCiAvKiBGaW5kIHRoZSB0YXJnZXQgb2YgYSB0cmFtcG9saW5lIGZ1bmN0aW9u
IG1hcmtlZCB2aWEgdGhlIERXX0FUX3RyYW1wb2xpbmUKICAgIGF0dHJpYnV0ZSBhbmQgcmV0dXJu
IGl0cyBhZGRyZXNzLiAgUmV0dXJucyAwIGlmIHRoZSBwYyBpcyBub3QgY29udGFpbmVkCiAgICBp
biBhIHRyYW1wb2xpbmUgZnVuY3Rpb24gKGlubGluZWQgb3Igbm90KS4gIElmIERXX0FUX3RyYW1w
b2xpbmUKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZnVuYy10cmFtcG9s
aW5lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZnVuYy10cmFtcG9saW5lLmV4cApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTIxNmRlMjVhNDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5l
eHAKQEAgLTAsMCArMSw4NyBAQAorIyBDb3B5cmlnaHQgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor
IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl
IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPiAuCisKKyMgVGVzdCAiYmFja3RyYWNlIiBh
bmQgImJhY2t0cmFjZSAtbiIgY29tbWFuZHMgZm9yIGZ1bmN0aW9ucyB3aXRoIHRyYW1wb2xpbmUK
KyMgY2FsbHMuCisKK3JlcXVpcmUgYWxsb3dfZm9ydHJhbl90ZXN0cworCitpZiB7IVt0ZXN0X2Nv
bXBpbGVyX2luZm8ge2lmeC0qfSBmOTBdfSB7CisgICAgdW50ZXN0ZWQgIlRoaXMgdGVzdCBpcyBv
bmx5IGFwcGxpY2FibGUgZm9yIElGWCwgd2hpY2ggZW1pdHMgdGhlXAorCXRyYW1wb2xpbmUgRElF
IGluIER3YXJmLiIKKyAgICByZXR1cm4KK30KKworc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCits
b2FkX2xpYiBmb3J0cmFuLmV4cAorCisjIEluaXRpYWxpemUgdGhlIHRlc3QgYnkgcnVubmluZyB0
aGUgcHJvZ3JhbSB0byB0aGUgaW5uZXJtb3N0CisjIGZ1bmN0aW9uIG5hbWUgInNlY29uZCIuCisK
K3Byb2MgaW5pdF90ZXN0IHtvcHRfbGV2ZWx9IHsKKyAgICBjbGVhbl9yZXN0YXJ0ICR7Ojp0ZXN0
ZmlsZX1fJHtvcHRfbGV2ZWx9CisgICAgaWYgeyFbZm9ydHJhbl9ydW50b19tYWluXX0geworCXJl
dHVybgorICAgIH0KKworICAgICMgU2V0IGJyZWFrcG9pbnQgaW5zaWRlIHRoZSBpbm5lcm1vc3Qg
ZnVuY3Rpb24gJ3NlY29uZCcuCisgICAgZ2RiX2JyZWFrcG9pbnQgIiQ6OnNyY2ZpbGU6JDo6aW5u
ZXJfbG9jIgorICAgIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJpbm5lcm1vc3QtYm9keSIg
Ii4qJDo6c3JjZmlsZTokOjppbm5lcl9sb2MuKiIKK30KKworc2V0IGlubmVyX2xvYyBbZ2RiX2dl
dF9saW5lX251bWJlciAic2Vjb25kLWJyZWFrcHQiXQorc2V0IG1pZGRsZV9sb2MgW2dkYl9nZXRf
bGluZV9udW1iZXIgImZpcnN0LWJyZWFrcHQiXQorc2V0IG91dGVyX2xvYyBbZ2RiX2dldF9saW5l
X251bWJlciAibWFpbi1vdXRlci1sb2MiXQorc2V0IGZpbGwgIlxbXlxyXG5cXSoiCisKKyMgVGVz
dCBib3RoIE8wIGFuZCBPMiB0byB2ZXJpZnkgdHJhbXBvbGluZSBoYW5kbGluZyB3b3JrcyBjb3Jy
ZWN0bHkKKyMgd2l0aCBhbmQgd2l0aG91dCBvcHRpbWl6YXRpb24uCitmb3JlYWNoX3dpdGhfcHJl
Zml4IG9wdF9sZXZlbCB7TzAgTzJ9IHsKKyAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgImZhaWxl
ZCB0byBwcmVwYXJlIiAke3Rlc3RmaWxlfV8ke29wdF9sZXZlbH0gJHtzcmNmaWxlfSBcCisJW2xp
c3QgZGVidWcgZjkwICJvcHRpbWl6ZT0tJHtvcHRfbGV2ZWx9Il1dfSB7CisJY29udGludWUKKyAg
ICB9CisKKyAgICBzZXQgYmluZmlsZSAiJHt0ZXN0ZmlsZX1fJHtvcHRfbGV2ZWx9IgorCisgICAg
aWYge1tzdHJpbmcgbWF0Y2ggLW5vY2FzZSAiTzIiICRvcHRfbGV2ZWxdfSB7CisJIyBBdCBPMiwg
cGFyYW1ldGVycyBtYXkgYmUgb3B0aW1pemVkIG91dAorCXNldCBpbm5lcl9kZXNjICAic2Vjb25k
IFxcKC4qXFwpIGF0ICR7ZmlsbH0kc3JjZmlsZTokaW5uZXJfbG9jIgorCXNldCBtaWRkbGVfZGVz
YyAiZmlyc3QgXFwoLipcXCkgYXQgJHtmaWxsfSRzcmNmaWxlOiRtaWRkbGVfbG9jIgorICAgIH0g
ZWxzZSB7CisJc2V0IGlubmVyX2Rlc2MgICJzZWNvbmQgXFwoeD0yMCwgeT05XFwpIGF0ICR7Zmls
bH0kc3JjZmlsZTokaW5uZXJfbG9jIgorCXNldCBtaWRkbGVfZGVzYyAiZmlyc3QgXFwobnVtMT0x
NiwgbnVtMj0zXFwpIGF0ICR7ZmlsbH0kc3JjZmlsZTokbWlkZGxlX2xvYyIKKyAgICB9CisgICAg
c2V0IG91dGVyX2Rlc2MgICIuKiBhdCAuKiRzcmNmaWxlOiRvdXRlcl9sb2MiCisKKyAgICB3aXRo
X3Rlc3RfcHJlZml4ICJiYWNrdHJhY2UiIHsKKwlpbml0X3Rlc3QgJG9wdF9sZXZlbAorCisJIyBM
aW1pdCB0aGUgYmFja3RyYWNlIHRvIDMgZnJhbWVzIGFuZCBlbnN1cmUgYm90aCBmcmFtZXMgZm9y
IGZpcnN0CisJIyBhbmQgc2Vjb25kIGZ1bmN0aW9uIGFyZSBzaG93biBvbmx5IGFuZCB0cmFtcG9s
aW5lIGZyYW1lcyBhcmUgZmlsdGVyZWQuCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSAzIiBbbXVsdGlf
bGluZSBcCisJICAgICIjJGRlY2ltYWwuKiAkaW5uZXJfZGVzYyIgXAorCSAgICAiIyRkZWNpbWFs
LiogJG1pZGRsZV9kZXNjIiBcCisJICAgICIjJGRlY2ltYWwuKiAkb3V0ZXJfZGVzYy4qIl0KKyAg
ICB9CisKKyAgICB3aXRoX3Rlc3RfcHJlZml4ICJiYWNrdHJhY2Ugb3V0ZXJmcmFtZXMiIHsKKwlp
bml0X3Rlc3QgJG9wdF9sZXZlbAorCisJZ2RiX3Rlc3QgImJhY2t0cmFjZSAtMyIgW211bHRpX2xp
bmUgXAorCSAgICAiIyRkZWNpbWFsLiogJG1pZGRsZV9kZXNjIiBcCisJICAgICIjJGRlY2ltYWwu
KiAkb3V0ZXJfZGVzYy4qIl0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk
Yi5mb3J0cmFuL2Z1bmMtdHJhbXBvbGluZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu
L2Z1bmMtdHJhbXBvbGluZS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmJiOWNlN2YzNDkxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y
dHJhbi9mdW5jLXRyYW1wb2xpbmUuZjkwCkBAIC0wLDAgKzEsNDAgQEAKKyEgQ29weXJpZ2h0IDIw
MjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCishCishIFRoaXMgcHJvZ3JhbSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CishIGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5CishIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u
IDMgb2YgdGhlIExpY2Vuc2UsIG9yCishIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCishCishIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCishIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCishCishIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCishIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+IC4K
KworISBTb3VyY2UgY29kZSBmb3IgZnVuYy10cmFtcG9saW5lLmV4cC4KKworIURJUiQgQVRUUklC
VVRFUyBOT0lOTElORSAgOjogc2Vjb25kCitpbnRlZ2VyKGtpbmQ9NCkgZnVuY3Rpb24gc2Vjb25k
KHgsIHkpCisgIGludGVnZXIoa2luZD00KSwgaW50ZW50KGluKSA6OiB4CisgIGludGVnZXIoa2lu
ZD00KSwgaW50ZW50KGluKSA6OiB5CisKKyAgc2Vjb25kID0geCAqIHkgISBzZWNvbmQtYnJlYWtw
dAorZW5kIGZ1bmN0aW9uCisKK2ludGVnZXIoa2luZD00KSBmdW5jdGlvbiBmaXJzdChudW0xLCBu
dW0yKQorICBpbnRlZ2VyKGtpbmQ9NCksIGludGVudChpbikgOjogbnVtMQorICBpbnRlZ2VyKGtp
bmQ9NCksIGludGVudChpbikgOjogbnVtMgorCisgIGZpcnN0ID0gc2Vjb25kIChudW0xICsgNCwg
bnVtMiAqIDMpICEgZmlyc3QtYnJlYWtwdAorZW5kIGZ1bmN0aW9uCisKK3Byb2dyYW0gZnVuY190
cmFtcG9saW5lCisgIGludGVnZXIoa2luZD00KSA6OiB0b3RhbAorCisgIHRvdGFsID0gZmlyc3Qo
MTYsIDMpICEgbWFpbi1vdXRlci1sb2MKKworICB3cml0ZSgqLCopICAiUmVzdWx0IGlzICIsIHRv
dGFsLCAiXG4iCisgICEgRXhwZWN0ZWQ6IDE4MAorZW5kIHByb2dyYW0gZnVuY190cmFtcG9saW5l
CmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21peGVkLWxhbmctc3RhY2su
ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9taXhlZC1sYW5nLXN0YWNrLmV4cAppbmRl
eCA0M2Y3N2QzZWI2Ni4uYjQ3MDU1NDk4OGUgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri
LmZvcnRyYW4vbWl4ZWQtbGFuZy1zdGFjay5leHAKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y
dHJhbi9taXhlZC1sYW5nLXN0YWNrLmV4cApAQCAtNjMsNiArNjMsMTAgQEAgcHJvYyBydW5fdGVz
dHMgeyBsYW5nIH0gewogCXNldCBlX2FyZyAiXFsnXCJcXWFiY2RlZlxbJ1wiXF0iCiAJc2V0IDFi
X2FyZ3MgIlxbXlxyXG5cXSskZV9hcmdcW15cclxuXF0rIgogCXNldCAxZ19hcmdzICJvYmo9XFte
XHJcblxdKyIKKwkjIEdlbmVyaWMgZGVjaW1hbCBudW1iZXIgaXMgY2hlY2tlZCBpbiByZWdleCBm
b3IgRnJhbWUgIzggYW5kICM5IHRvCisJIyBoYW5kbGUgZmlsdGVyZWQgdHJhbXBvbGluZSBmcmFt
ZXMuICBTaW5jZSBGcmFtZSM4IGFuZCBGcmFtZSMxMCBhcmUKKwkjIHNldCB0byB0cmFtcG9saW5l
IGluIERXQVJGIGJ5IEludGVswq4gRm9ydHJhbiBDb21waWxlciAoaWZ4KSwgdGhleQorCSMgYXJl
IG5vdCBzaG93biBieSB0aGUgYmFja3RyYWNlIGNvbW1hbmQuCiAJc2V0IGJ0X3N0YWNrIFwKIAkg
ICAgW211bHRpX2xpbmUgXAogCQkgIiMwXFxzK2JyZWFrcHQgXFwoXFwpIGF0IFxbXlxyXG5cXSsi
IFwKQEAgLTczLDggKzc3LDggQEAgcHJvYyBydW5fdGVzdHMgeyBsYW5nIH0gewogCQkgIiM1XFxz
KyRoZXggaW4gbWl4ZWRfZnVuY18xZCBcXChcW15cclxuXF0rXFwpIGF0IFxbXlxyXG5cXSsiIFwK
IAkJICIjNlxccyskaGV4IGluIG1peGVkX2Z1bmNfMWMgXFwoXFteXHJcblxdK1xcKSBhdCBcW15c
clxuXF0rIiBcCiAJCSAiIzdcXHMrJGhleCBpbiBtaXhlZF9mdW5jXzFiIFxcKCQxYl9hcmdzXFwp
IGF0IFxbXlxyXG5cXSsiIFwKLQkJICIjOFxccyskaGV4IGluIG1peGVkX2Z1bmNfMWEgXFwoXFwp
IGF0IFxbXlxyXG5cXSsiIFwKLQkJICIjOVxccyskaGV4IGluIG1peGVkX3N0YWNrX21haW4gXFwo
XFwpIGF0IFxbXlxyXG5cXSsiIF0KKwkJICIjJDo6ZGVjaW1hbFxccyskaGV4IGluIG1peGVkX2Z1
bmNfMWEgXFwoXFwpIGF0IFxbXlxyXG5cXSsiIFwKKwkJICIjJDo6ZGVjaW1hbFxccyskaGV4IGlu
IG1peGVkX3N0YWNrX21haW4gXFwoXFwpIGF0IFxbXlxyXG5cXSsiIF0KIAlzZXQgbWFpbl9hcmdz
ICJhcmdjPTEsIGFyZ3Y9JHtoZXh9KCBcW15cclxuXF0rKT8iCiAJc2V0IGJ0X3N0YWNrX2tmYWls
IFwKIAkgICAgW211bHRpX2xpbmUgXAotLSAKMi4zNC4xCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIIA0KDQpSZWdpc3RlcmVk
IEFkZHJlc3M6IERvcm5hY2hlciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55
IA0KDQpUZWw6ICs0OSAoODkpIDk5MTQzLTAgDQoNCnd3dy5pbnRlbC5kZSANCg0KTWFuYWdpbmcg
RGlyZWN0b3JzOiBDYW5kaWNlIE1vb3JlLCBKZWZmcmV5IFNjaG5laWRlcm1hbiwgUmFtYWNoYW5k
cmFuIFNpdGFyYW1hbg0KDQpDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IFNv
bmphIFBpZXJlcg0KDQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaCBDb21tZXJjaWFsIFJlZ2lzdGVy
IEI6IEFtdHNnZXJpY2h0IE11bmljaCBIUkIgMTg2OTI4DQoNClRoaXMgZS1tYWlsIGFuZCBhbnkg
YXR0YWNobWVudHMgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcg0KdGhlIHNv
bGUgdXNlIG9mIHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJp
YnV0aW9uDQpieSBvdGhlcnMgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGFyZSBub3Qg
dGhlIGludGVuZGVkDQpyZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRl
bGV0ZSBhbGwgY29waWVzLgo=