Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Apr 2002 16:46:16 +0200
From:      Jan.Stocker@t-online.de (Jan Stocker)
To:        "ports@FreeBSD. ORG" <ports@FreeBSD.ORG>
Cc:        <kris@FreeBSD.org>, "Kris Kennaway" <kris@obsecurity.org>
Subject:   May someone commit this....
Message-ID:  <000001c1dcb0$a3f546c0$fe02010a@twoflower.liebende.de>
In-Reply-To: <20020330141044.A84409@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

------=_NextPart_000_0001_01C1DCC1.677E16C0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hi,
may someone commit my patch for ports/games/nethack3-gnome, Kris doesnt
answer my mails...

I have attached a diff with the new version from outer dir (diff -r -P -c
nethack3-gnome.orig nethack3-gnome)

Bug fixed: (maybe a cvs checkin comment worth)

1. Updated to 3.4.0
2. gnome files now included from /usr/X11R6/include/gnome-1.0
3. Added "getopt.c / getopt.h / getopt1.c" (and removed kpathsea library
dependency)



P L E A S E   may someone tell me who is reponsible for giving me cvs write
access to ports (or the mentioned port)???

------=_NextPart_000_0001_01C1DCC1.677E16C0
Content-Type: application/octet-stream;
	name="nethack3-gnome.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="nethack3-gnome.diff"

ZGlmZiAtYyAtciAtUCBuZXRoYWNrMy1nbm9tZS5vcmlnL01ha2VmaWxlIG5ldGhhY2szLWdub21l
L01ha2VmaWxlCioqKiBuZXRoYWNrMy1nbm9tZS5vcmlnL01ha2VmaWxlCVdlZCBEZWMgMTIgMDU6
MjQ6MDEgMjAwMQotLS0gbmV0aGFjazMtZ25vbWUvTWFrZWZpbGUJU3VuIE1hciAzMSAxNDoyNDo0
OSAyMDAyCioqKioqKioqKioqKioqKgoqKiogNiwxNCAqKioqCiAgIwogIAogIFBPUlROQU1FPQlu
ZXRoYWNrCiEgUE9SVFZFUlNJT049CTMuMy4xCiAgQ0FURUdPUklFUz0JZ2FtZXMgZ25vbWUKISBN
QVNURVJfU0lURVM9CWZ0cDovL2Z0cC5uZXRoYWNrLm9yZy9wdWIvbmV0aGFjay9uaDMzMS9zcmMv
IFwKICAJCSR7TUFTVEVSX1NJVEVfR05VfQogIE1BU1RFUl9TSVRFX1NVQkRJUj0JJHtQT1JUTkFN
RX0KICBQS0dOQU1FU1VGRklYPQktZ25vbWUKLS0tIDYsMTQgLS0tLQogICMKICAKICBQT1JUTkFN
RT0JbmV0aGFjawohIFBPUlRWRVJTSU9OPQkzLjQuMAogIENBVEVHT1JJRVM9CWdhbWVzIGdub21l
CiEgTUFTVEVSX1NJVEVTPQlmdHA6Ly9mdHAubmV0aGFjay5vcmcvcHViL25ldGhhY2svbmgzNDAv
c3JjLyBcCiAgCQkke01BU1RFUl9TSVRFX0dOVX0KICBNQVNURVJfU0lURV9TVUJESVI9CSR7UE9S
VE5BTUV9CiAgUEtHTkFNRVNVRkZJWD0JLWdub21lCmRpZmYgLWMgLXIgLVAgbmV0aGFjazMtZ25v
bWUub3JpZy9kaXN0aW5mbyBuZXRoYWNrMy1nbm9tZS9kaXN0aW5mbwoqKiogbmV0aGFjazMtZ25v
bWUub3JpZy9kaXN0aW5mbwlXZWQgRGVjIDEyIDA1OjI0OjAxIDIwMDEKLS0tIG5ldGhhY2szLWdu
b21lL2Rpc3RpbmZvCVN1biBNYXIgMzEgMTQ6MjU6NTAgMjAwMgoqKioqKioqKioqKioqKioKKioq
IDEgKioqKgohIE1ENSAobmV0aGFjay0zMzEudGd6KSA9IGQwNjAwY2U0Njk4YzgwZTVhZDFmOTE3
ZGVkMWMzNmQyCi0tLSAxIC0tLS0KISBNRDUgKG5ldGhhY2stMzQwLnRneikgPSAwMDkzZjE0ZmJi
ZTQ0OWQ1YjE4OGJmYjZhYTRlYWU0ZgpkaWZmIC1jIC1yIC1QIG5ldGhhY2szLWdub21lLm9yaWcv
ZmlsZXMvcGF0Y2gtaW5jbHVkZTo6Y29uZmlnLmggbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gt
aW5jbHVkZTo6Y29uZmlnLmgKKioqIG5ldGhhY2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtaW5j
bHVkZTo6Y29uZmlnLmgJV2VkIERlYyAxMiAwNToyNDowMSAyMDAxCi0tLSBuZXRoYWNrMy1nbm9t
ZS9maWxlcy9wYXRjaC1pbmNsdWRlOjpjb25maWcuaAlTdW4gTWFyIDMxIDE0OjQxOjM2IDIwMDIK
KioqKioqKioqKioqKioqCioqKiAxLDI0ICoqKioKISAqKiogaW5jbHVkZS9jb25maWcuaC5vcmln
CVNhdCBKdWwgMjIgMDM6MTM6NTEgMjAwMAohIC0tLSBpbmNsdWRlL2NvbmZpZy5oCVNhdCBEZWMg
IDkgMTM6MzE6MzQgMjAwMAogICoqKioqKioqKioqKioqKgogICoqKiA0NSw1MSAqKioqCiAgICAj
ZGVmaW5lIFRUWV9HUkFQSElDUwkvKiBnb29kIG9sZCB0dHkgYmFzZWQgZ3JhcGhpY3MgKi8KICAg
IC8qICNkZWZpbmUgWDExX0dSQVBISUNTICovCS8qIFgxMSBpbnRlcmZhY2UgKi8KICAgIC8qICNk
ZWZpbmUgUVRfR1JBUEhJQ1MgKi8JLyogUXQgaW50ZXJmYWNlICovCiAgISAvKiAjZGVmaW5lIEdO
T01FX0dSQVBISUNTICovCS8qIEdub21lIGludGVyZmFjZSAqLwogICAgCiAgICAvKgotICAgICog
RGVmaW5lIHRoZSBkZWZhdWx0IHdpbmRvdyBzeXN0ZW0uICBUaGlzIHNob3VsZCBiZSBvbmUgdGhh
dCBpcyBjb21waWxlZAogIC0tLSA0NSw1MSAtLS0tCiAgICAjZGVmaW5lIFRUWV9HUkFQSElDUwkv
KiBnb29kIG9sZCB0dHkgYmFzZWQgZ3JhcGhpY3MgKi8KICAgIC8qICNkZWZpbmUgWDExX0dSQVBI
SUNTICovCS8qIFgxMSBpbnRlcmZhY2UgKi8KICAgIC8qICNkZWZpbmUgUVRfR1JBUEhJQ1MgKi8J
LyogUXQgaW50ZXJmYWNlICovCiEgISAjZGVmaW5lIEdOT01FX0dSQVBISUNTIAkvKiBHbm9tZSBp
bnRlcmZhY2UgKi8KICAgIAogICAgLyoKLSAgICAqIERlZmluZSB0aGUgZGVmYXVsdCB3aW5kb3cg
c3lzdGVtLiAgVGhpcyBzaG91bGQgYmUgb25lIHRoYXQgaXMgY29tcGlsZWQKICAqKioqKioqKioq
KioqKioKISAqKiogMTUxLDE2MSAqKioqCiAgICAKICAgICNpZmRlZiBVTklYCiAgICAvKiBwYXRo
IGFuZCBmaWxlIG5hbWUgZXh0ZW5zaW9uIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtICovCi0tLSAx
LDI0IC0tLS0KISAqKiogaW5jbHVkZS9jb25maWcuaC5vcmlnCVRodSBNYXIgMjEgMDA6NDI6NDMg
MjAwMgohIC0tLSBpbmNsdWRlL2NvbmZpZy5oCVN1biBNYXIgMzEgMTQ6Mzg6MzIgMjAwMgogICoq
KioqKioqKioqKioqKgogICoqKiA0NSw1MSAqKioqCiAgICAjZGVmaW5lIFRUWV9HUkFQSElDUwkv
KiBnb29kIG9sZCB0dHkgYmFzZWQgZ3JhcGhpY3MgKi8KICAgIC8qICNkZWZpbmUgWDExX0dSQVBI
SUNTICovCS8qIFgxMSBpbnRlcmZhY2UgKi8KICAgIC8qICNkZWZpbmUgUVRfR1JBUEhJQ1MgKi8J
LyogUXQgaW50ZXJmYWNlICovCiAgISAvKiAjZGVmaW5lIEdOT01FX0dSQVBISUNTICovCS8qIEdu
b21lIGludGVyZmFjZSAqLworICAgLyogI2RlZmluZSBNU1dJTl9HUkFQSElDUyAqLwkvKiBXaW5k
b3dzIE5ULCBDRSwgR3JhcGhpY3MgKi8KICAgIAogICAgLyoKICAtLS0gNDUsNTEgLS0tLQogICAg
I2RlZmluZSBUVFlfR1JBUEhJQ1MJLyogZ29vZCBvbGQgdHR5IGJhc2VkIGdyYXBoaWNzICovCiAg
ICAvKiAjZGVmaW5lIFgxMV9HUkFQSElDUyAqLwkvKiBYMTEgaW50ZXJmYWNlICovCiAgICAvKiAj
ZGVmaW5lIFFUX0dSQVBISUNTICovCS8qIFF0IGludGVyZmFjZSAqLwohICEgI2RlZmluZSBHTk9N
RV9HUkFQSElDUyAvKiBHbm9tZSBpbnRlcmZhY2UgKi8KISAgIC8qICNkZWZpbmUgTVNXSU5fR1JB
UEhJQ1MgKi8JLyogV2luZG93cyBOVCwgQ0UsIEdyYXBoaWNzICovCiAgICAKICAgIC8qCiAgKioq
KioqKioqKioqKioqCiEgKioqIDE2MywxNzMgKioqKgogICAgCiAgICAjaWZkZWYgVU5JWAogICAg
LyogcGF0aCBhbmQgZmlsZSBuYW1lIGV4dGVuc2lvbiBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSAq
LwoqKioqKioqKioqKioqKioKKioqIDMwLDM2ICoqKioKICAgICNlbmRpZgogICAgCiAgICAjaWZu
ZGVmIENPTVBSRVNTCiEgLS0tIDE1MSwxNjEgLS0tLQogICAgCiAgICAjaWZkZWYgVU5JWAogICAg
LyogcGF0aCBhbmQgZmlsZSBuYW1lIGV4dGVuc2lvbiBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSAq
LwotLS0gMzAsMzYgLS0tLQogICAgI2VuZGlmCiAgICAKICAgICNpZm5kZWYgQ09NUFJFU1MKISAt
LS0gMTYzLDE3MyAtLS0tCiAgICAKICAgICNpZmRlZiBVTklYCiAgICAvKiBwYXRoIGFuZCBmaWxl
IG5hbWUgZXh0ZW5zaW9uIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtICovCioqKioqKioqKioqKioq
KgoqKiogNDMsNjEgKioqKgogICAgCiAgICAjaWZuZGVmIENPTVBSRVNTCiAgKioqKioqKioqKioq
KioqCiEgKioqIDE4NiwxOTIgKioqKgohICAgICogb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdGhlIGN1
cnJlbnQgZGlyZWN0b3J5LgohICAgICovCiEgICAjIGlmbmRlZiBIQUNLRElSCiEgISAjICBkZWZp
bmUgSEFDS0RJUiAiL3Vzci9nYW1lcy9saWIvbmV0aGFja2RpciIJLyogbmV0aGFjayBkaXJlY3Rv
cnkgKi8KICAgICMgZW5kaWYKICAgIAohICAgLyoKISAtLS0gMTg2LDE5MiAtLS0tCiEgICAgKiBv
dGhlcndpc2UgaXQgd2lsbCBiZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiEgICAgKi8KISAgICMg
aWZuZGVmIEhBQ0tESVIKISAhICMgIGRlZmluZSBIQUNLRElSICIvdXNyL2xvY2FsL3NoYXJlL25l
dGhhY2siCS8qIG5ldGhhY2sgZGlyZWN0b3J5ICovCiAgICAjIGVuZGlmCiAgICAKLSAgIC8qCi0t
LSA0Myw2MSAtLS0tCiAgICAKICAgICNpZm5kZWYgQ09NUFJFU1MKICAqKioqKioqKioqKioqKioK
ISAqKiogMjAxLDIwNyAqKioqCiEgICAjICBpZmRlZiBfX0FQUExFX18KISAgICMgICAgZGVmaW5l
IEhBQ0tESVIgIm5ldGhhY2tkaXIiCS8qIG5ldGhhY2sgZGlyZWN0b3J5ICovCiEgICAjICBlbHNl
CiEgISAjICAgIGRlZmluZSBIQUNLRElSICIvdXNyL2dhbWVzL2xpYi9uZXRoYWNrZGlyIgohICAg
IyAgZW5kaWYKICAgICMgZW5kaWYKICAgIAohIC0tLSAyMDEsMjA3IC0tLS0KISAgICMgIGlmZGVm
IF9fQVBQTEVfXwohICAgIyAgICBkZWZpbmUgSEFDS0RJUiAibmV0aGFja2RpciIJLyogbmV0aGFj
ayBkaXJlY3RvcnkgKi8KISAgICMgIGVsc2UKISAhICMgICAgZGVmaW5lIEhBQ0tESVIgIi91c3Iv
bG9jYWwvc2hhcmUvbmV0aGFjayIKISAgICMgIGVuZGlmCiAgICAjIGVuZGlmCiAgICAKZGlmZiAt
YyAtciAtUCBuZXRoYWNrMy1nbm9tZS5vcmlnL2ZpbGVzL3BhdGNoLXN5czo6dW5peDo6TWFrZWZp
bGUuc3JjIG5ldGhhY2szLWdub21lL2ZpbGVzL3BhdGNoLXN5czo6dW5peDo6TWFrZWZpbGUuc3Jj
CioqKiBuZXRoYWNrMy1nbm9tZS5vcmlnL2ZpbGVzL3BhdGNoLXN5czo6dW5peDo6TWFrZWZpbGUu
c3JjCVdlZCBEZWMgMTIgMDU6MjQ6MDEgMjAwMQotLS0gbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0
Y2gtc3lzOjp1bml4OjpNYWtlZmlsZS5zcmMJU2F0IE1hciAzMCAyMjowNDozMiAyMDAyCioqKioq
KioqKioqKioqKgoqKiogMSw1ICoqKioKICAqKiogc3lzL3VuaXgvTWFrZWZpbGUuc3JjLm9yaWcJ
U2F0IEF1ZyAgNSAxMjo1Mjo1NyAyMDAwCiEgLS0tIHN5cy91bml4L01ha2VmaWxlLnNyYwlTYXQg
RGVjICA5IDEzOjA5OjQ0IDIwMDAKICAqKioqKioqKioqKioqKioKICAqKiogMTM5LDE0NSAqKioq
CiAgICAjIGRpcmVjdG9yaWVzLiAgVGhlIG9uZXMgZ2l2ZW4gYmVsb3cgaXMgdGhlIHVzdWFsIHNw
b3QgZm9yIGxpbnV4IHN5c3RlbXMuCi0tLSAxLDUgLS0tLQogICoqKiBzeXMvdW5peC9NYWtlZmls
ZS5zcmMub3JpZwlTYXQgQXVnICA1IDEyOjUyOjU3IDIwMDAKISAtLS0gc3lzL3VuaXgvTWFrZWZp
bGUuc3JjCVNhdCBNYXIgMzAgMjE6MjU6MDMgMjAwMgogICoqKioqKioqKioqKioqKgogICoqKiAx
MzksMTQ1ICoqKioKICAgICMgZGlyZWN0b3JpZXMuICBUaGUgb25lcyBnaXZlbiBiZWxvdyBpcyB0
aGUgdXN1YWwgc3BvdCBmb3IgbGludXggc3lzdGVtcy4KKioqKioqKioqKioqKioqCioqKiAxMywy
MyAqKioqCiAgICAjIGRpcmVjdG9yaWVzLiAgVGhlIG9uZXMgZ2l2ZW4gYmVsb3cgaXMgdGhlIHVz
dWFsIHNwb3QgZm9yIGxpbnV4IHN5c3RlbXMuCiAgICAjIFRoZSBwYXRocyBhcmUgZm9yIGdsaWJj
b25maWcuaCBhbmQgZ25vbWVzdXBwb3J0LmggcmVzcGVjdGl2ZWx5LgogICAgIwohICEgR05PTUVJ
TkM9LUkvdXNyL1gxMVI2L2luY2x1ZGUgLUkvdXNyL1gxMVI2L2luY2x1ZGUvZ3RrMTIgLUkvdXNy
L2xvY2FsL2luY2x1ZGUvZ2xpYjEyIC1JL3Vzci9sb2NhbC9pbmNsdWRlL2twYXRoc2VhIC1JLi4v
d2luL2dub21lCiAgICAKICAgICMgZmxhZ3MgZm9yIGRlYnVnZ2luZzoKICAgICMgQ0ZMQUdTID0g
LWcgLUkuLi9pbmNsdWRlCiAgKioqKioqKioqKioqKioqCiAgKioqIDIwMywyMTAgKioqKgogICAg
CiAgICAjCi0tLSAxMyw0NyAtLS0tCiAgICAjIGRpcmVjdG9yaWVzLiAgVGhlIG9uZXMgZ2l2ZW4g
YmVsb3cgaXMgdGhlIHVzdWFsIHNwb3QgZm9yIGxpbnV4IHN5c3RlbXMuCiAgICAjIFRoZSBwYXRo
cyBhcmUgZm9yIGdsaWJjb25maWcuaCBhbmQgZ25vbWVzdXBwb3J0LmggcmVzcGVjdGl2ZWx5Lgog
ICAgIwohICEgR05PTUVJTkM9LUkvdXNyL1gxMVI2L2luY2x1ZGUvZ25vbWUtMS4wIC1JL3Vzci9Y
MTFSNi9pbmNsdWRlIC1JL3Vzci9YMTFSNi9pbmNsdWRlL2d0azEyIC1JL3Vzci9sb2NhbC9pbmNs
dWRlL2dsaWIxMiAtSS4uL3dpbi9nbm9tZQogICAgCiAgICAjIGZsYWdzIGZvciBkZWJ1Z2dpbmc6
CiAgICAjIENGTEFHUyA9IC1nIC1JLi4vaW5jbHVkZQogICoqKioqKioqKioqKioqKgorICoqKiAx
ODQsMTkzICoqKioKKyAgIAkuLi93aW4vZ25vbWUvZ25nbHlwaC5jIC4uL3dpbi9nbm9tZS9nbm1h
aW4uYyAuLi93aW4vZ25vbWUvZ25tYXAuYyBcCisgICAJLi4vd2luL2dub21lL2dubWVudS5jIC4u
L3dpbi9nbm9tZS9nbm1lc2cuYyAuLi93aW4vZ25vbWUvZ25vcHRzLmMgXAorICAgCS4uL3dpbi9n
bm9tZS9nbnBsYXllci5jIC4uL3dpbi9nbm9tZS9nbnNpZ25hbC5jIFwKKyAhIAkuLi93aW4vZ25v
bWUvZ25zdGF0dXMuYyAuLi93aW4vZ25vbWUvZ250ZXh0LmMgLi4vd2luL2dub21lL2dueWVzbm8u
YworICAgV0lOR05PTUVPQkogPSBnbmFza3N0ci5vIGduYmluZC5vIGduZ2x5cGgubyBnbm1haW4u
byBnbm1hcC5vIGdubWVudS5vIFwKKyAgIAlnbm1lc2cubyBnbm9wdHMubyBnbnBsYXllci5vIGdu
c2lnbmFsLm8gZ25zdGF0dXMubyBnbnRleHQubyBcCisgISAJZ255ZXNuby5vIHRpbGUubworICAg
IworICAgIyBGaWxlcyBmb3IgYSBHZW0gcG9ydAorICAgV0lOR0VNU1JDID0gLi4vd2luL2dlbS93
aW5nZW0uYyAuLi93aW4vZ2VtL3dpbmdlbTEuYyAuLi93aW4vZ2VtL2xvYWRfaW1nLmMgXAorIC0t
LSAxODQsMTk0IC0tLS0KKyAgIAkuLi93aW4vZ25vbWUvZ25nbHlwaC5jIC4uL3dpbi9nbm9tZS9n
bm1haW4uYyAuLi93aW4vZ25vbWUvZ25tYXAuYyBcCisgICAJLi4vd2luL2dub21lL2dubWVudS5j
IC4uL3dpbi9nbm9tZS9nbm1lc2cuYyAuLi93aW4vZ25vbWUvZ25vcHRzLmMgXAorICAgCS4uL3dp
bi9nbm9tZS9nbnBsYXllci5jIC4uL3dpbi9nbm9tZS9nbnNpZ25hbC5jIFwKKyAhIAkuLi93aW4v
Z25vbWUvZ25zdGF0dXMuYyAuLi93aW4vZ25vbWUvZ250ZXh0LmMgLi4vd2luL2dub21lL2dueWVz
bm8uYyBcCisgISAJLi4vd2luL2dub21lL2dldG9wdC5jIC4uL3dpbi9nbm9tZS9nZXRvcHQxLmMK
KyAgIFdJTkdOT01FT0JKID0gZ25hc2tzdHIubyBnbmJpbmQubyBnbmdseXBoLm8gZ25tYWluLm8g
Z25tYXAubyBnbm1lbnUubyBcCisgICAJZ25tZXNnLm8gZ25vcHRzLm8gZ25wbGF5ZXIubyBnbnNp
Z25hbC5vIGduc3RhdHVzLm8gZ250ZXh0Lm8gXAorICEgCWdueWVzbm8ubyB0aWxlLm8gZ2V0b3B0
Lm8gZ2V0b3B0MS5vCisgICAjCisgICAjIEZpbGVzIGZvciBhIEdlbSBwb3J0CisgICBXSU5HRU1T
UkMgPSAuLi93aW4vZ2VtL3dpbmdlbS5jIC4uL3dpbi9nZW0vd2luZ2VtMS5jIC4uL3dpbi9nZW0v
bG9hZF9pbWcuYyBcCisgKioqKioqKioqKioqKioqCiAgKioqIDIwMywyMTAgKioqKgogICAgCiAg
ICAjCioqKioqKioqKioqKioqKgoqKiogMjcsMzMgKioqKgogICAgCiAgICAjIG9uIHNvbWUgc3lz
dGVtcyB0aGUgdGVybWNhcCBsaWJyYXJ5IGlzIGluIC1sdGVybWNhcCBvciAtbGN1cnNlcwogICAg
IyBvbiAzODYgWGVuaXgsIHRoZSAtbHRlcm1saWIgdHB1dHMoKSBzZWVtcyBub3QgdG8gd29yazsg
dXNlIC1sY3Vyc2VzIGluc3RlYWQKISAtLS0gMjAzLDIxMCAtLS0tCiAgICAKICAgICMKICAgICMK
LS0tIDUxLDU3IC0tLS0KICAgIAogICAgIyBvbiBzb21lIHN5c3RlbXMgdGhlIHRlcm1jYXAgbGli
cmFyeSBpcyBpbiAtbHRlcm1jYXAgb3IgLWxjdXJzZXMKICAgICMgb24gMzg2IFhlbml4LCB0aGUg
LWx0ZXJtbGliIHRwdXRzKCkgc2VlbXMgbm90IHRvIHdvcms7IHVzZSAtbGN1cnNlcyBpbnN0ZWFk
CiEgLS0tIDIwNCwyMTEgLS0tLQogICAgCiAgICAjCiAgICAjCioqKioqKioqKioqKioqKgoqKiog
NDUsNTUgKioqKgogICAgIwogICAgIyBsaWJyYXJpZXMgZm9yIEdlbSBwb3J0CiAgICBXSU5HRU1M
SUIgPSAtbGVfZ2VtIC1sZ2VtCiEgLS0tIDIzNiwyNDIgLS0tLQogICAgV0lOS0RFTElCID0gLWxr
ZGVjb3JlIC1sa2RldWkgLWxYZXh0CiAgICAjCiAgICAjIGxpYnJhcmllcyBmb3IgR25vbWUKISAh
IFdJTkdOT01FTElCID0gLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvWDExUjYvbGliIC1sZ25vbWV1
aSAtbGdub21lIC1sYXJ0X2xncGwgLWxndGsxMiAtbGdkazEyIC1sZ2xpYjEyIC1scG9wdCAtbGtw
YXRoc2VhCiAgICAjCiAgICAjIGxpYnJhcmllcyBmb3IgR2VtIHBvcnQKICAgIFdJTkdFTUxJQiA9
IC1sZV9nZW0gLWxnZW0KLS0tIDY5LDc5IC0tLS0KICAgICMKICAgICMgbGlicmFyaWVzIGZvciBH
ZW0gcG9ydAogICAgV0lOR0VNTElCID0gLWxlX2dlbSAtbGdlbQohIC0tLSAyMzcsMjQzIC0tLS0K
ICAgIFdJTktERUxJQiA9IC1sa2RlY29yZSAtbGtkZXVpIC1sWGV4dAogICAgIwogICAgIyBsaWJy
YXJpZXMgZm9yIEdub21lCiEgISBXSU5HTk9NRUxJQiA9IC1ML3Vzci9sb2NhbC9saWIgLUwvdXNy
L1gxMVI2L2xpYiAtbGdub21lc3VwcG9ydCAtbGdub21ldWkgLWxnbm9tZSAtbGFydF9sZ3BsIC1s
Z3RrMTIgLWxnZGsxMiAtbGdsaWIxMiAtbHBvcHQgCiAgICAjCiAgICAjIGxpYnJhcmllcyBmb3Ig
R2VtIHBvcnQKICAgIFdJTkdFTUxJQiA9IC1sZV9nZW0gLWxnZW0KKioqKioqKioqKioqKioqCioq
KiA2Miw2OCAqKioqCiAgICAKICAgICMgYW55IG90aGVyIHN0cmFuZ2UgbGlicmFyaWVzIHlvdXIg
c3lzdGVtIG5lZWRzIChmb3IgU3lzdW5peCBvbmx5IC0tIHRoZSBtb3JlCiAgICAjIHNwZWNpYWxp
emVkIHRhcmdldHMgc2hvdWxkIGFscmVhZHkgYmUgcmlnaHQpCiEgLS0tIDI0NCwyNTAgLS0tLQog
ICAgIyBsaWJyYXJpZXMgZm9yIEJlT1MgCiAgICBXSU5CRUxJQiA9IC1sYmUKICAgIAotLS0gODYs
OTIgLS0tLQogICAgCiAgICAjIGFueSBvdGhlciBzdHJhbmdlIGxpYnJhcmllcyB5b3VyIHN5c3Rl
bSBuZWVkcyAoZm9yIFN5c3VuaXggb25seSAtLSB0aGUgbW9yZQogICAgIyBzcGVjaWFsaXplZCB0
YXJnZXRzIHNob3VsZCBhbHJlYWR5IGJlIHJpZ2h0KQohIC0tLSAyNDUsMjUxIC0tLS0KICAgICMg
bGlicmFyaWVzIGZvciBCZU9TIAogICAgV0lOQkVMSUIgPSAtbGJlCiAgICAKKioqKioqKioqKioq
KioqCioqKiA3MCw3MiAqKioqCi0tLSA5NCwxMDkgLS0tLQogICAgCiAgICAjIGFueSBvdGhlciBz
dHJhbmdlIGxpYnJhcmllcyB5b3VyIHN5c3RlbSBuZWVkcyAoZm9yIFN5c3VuaXggb25seSAtLSB0
aGUgbW9yZQogICAgIyBzcGVjaWFsaXplZCB0YXJnZXRzIHNob3VsZCBhbHJlYWR5IGJlIHJpZ2h0
KQorICoqKioqKioqKioqKioqKgorICoqKiA2MjAsNjI1ICoqKioKKyAtLS0gNjIxLDYzMCAtLS0t
CisgICAJCS4uL3dpbi9nbm9tZS9nbmJpbmQuaCAuLi93aW4vZ25vbWUvZ25vcHRzLmggJChIQUNL
X0gpIFwKKyAgIAkJLi4vaW5jbHVkZS9kYXRlLmgKKyAgIAkkKENDKSAkKENGTEFHUykgJChHTk9N
RUlOQykgLWMgLi4vd2luL2dub21lL2dubWFpbi5jCisgKyBnZXRvcHQubzogLi4vd2luL2dub21l
L2dldG9wdC5jIC4uL3dpbi9nbm9tZS9nZXRvcHQuaAorICsgCSQoQ0MpICQoQ0ZMQUdTKSAkKEdO
T01FSU5DKSAtYyAuLi93aW4vZ25vbWUvZ2V0b3B0LmMKKyArIGdldG9wdDEubzogLi4vd2luL2du
b21lL2dldG9wdDEuYyAuLi93aW4vZ25vbWUvZ2V0b3B0LmgKKyArIAkkKENDKSAkKENGTEFHUykg
JChHTk9NRUlOQykgLWMgLi4vd2luL2dub21lL2dldG9wdDEuYworICAgZ25tYXAubzogLi4vd2lu
L2dub21lL2dubWFwLmMgLi4vd2luL2dub21lL2dubWFwLmggLi4vd2luL2dub21lL2duZ2x5cGgu
aCBcCisgICAJCS4uL3dpbi9nbm9tZS9nbnNpZ25hbC5oICQoSEFDS19IKQorICAgCSQoQ0MpICQo
Q0ZMQUdTKSAkKEdOT01FSU5DKSAtYyAuLi93aW4vZ25vbWUvZ25tYXAuYwpkaWZmIC1jIC1yIC1Q
IG5ldGhhY2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmMgbmV0
aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmMKKioqIG5ldGhhY2sz
LWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmMJVGh1IEphbiAgMSAw
MTowMDowMCAxOTcwCi0tLSBuZXRoYWNrMy1nbm9tZS9maWxlcy9wYXRjaC13aW46Omdub21lOjpn
ZXRvcHQuYwlTYXQgTWFyIDMwIDIwOjU5OjU0IDIwMDIKKioqKioqKioqKioqKioqCioqKiAwICoq
KioKLS0tIDEsNzUzIC0tLS0KKyAqKiogL2Rldi9udWxsCVNhdCBNYXIgMzAgMjA6NDQ6MDAgMjAw
MgorIC0tLSB3aW4vZ25vbWUvZ2V0b3B0LmMJU2F0IE1hciAzMCAyMDo0NDo0NiAyMDAyCisgKioq
KioqKioqKioqKioqCisgKioqIDAgKioqKgorIC0tLSAxLDc0OCAtLS0tCisgKyAvKiBHZXRvcHQg
Zm9yIEdOVS4KKyArICAgIE5PVEU6IGdldG9wdCBpcyBub3cgcGFydCBvZiB0aGUgQyBsaWJyYXJ5
LCBzbyBpZiB5b3UgZG9uJ3Qga25vdyB3aGF0CisgKyAgICAiS2VlcCB0aGlzIGZpbGUgbmFtZS1z
cGFjZSBjbGVhbiIgbWVhbnMsIHRhbGsgdG8gcm9sYW5kQGdudS5haS5taXQuZWR1CisgKyAgICBi
ZWZvcmUgY2hhbmdpbmcgaXQhCisgKyAKKyArICAgIENvcHlyaWdodCAoQykgMTk4NywgODgsIDg5
LCA5MCwgOTEsIDkyLCA5MywgOTQKKyArICAgIAlGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4KKyArIAorICsgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyArICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICsgICAg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueQorICsgICAgbGF0ZXIgdmVyc2lvbi4KKyArIAorICsgICAgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICsgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQorICsgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyArIAorICsgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyArICAgIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKyAgICBGb3Vu
ZGF0aW9uLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4gICovCisgKyAM
CisgKyAvKiBUaGlzIHRlbGxzIEFscGhhIE9TRi8xIG5vdCB0byBkZWZpbmUgYSBnZXRvcHQgcHJv
dG90eXBlIGluIDxzdGRpby5oPi4KKyArICAgIERpdHRvIGZvciBBSVggMy4yIGFuZCA8c3RkbGli
Lmg+LiAgKi8KKyArICNpZm5kZWYgX05PX1BST1RPCisgKyAjZGVmaW5lIF9OT19QUk9UTworICsg
I2VuZGlmCisgKyAKKyArICNpZmRlZiBIQVZFX0NPTkZJR19ICisgKyAjaW5jbHVkZSA8Y29uZmln
Lmg+CisgKyAjZW5kaWYKKyArIAorICsgI2lmbmRlZiBfX1NURENfXworICsgLyogVGhpcyBpcyBh
IHNlcGFyYXRlIGNvbmRpdGlvbmFsIHNpbmNlIHNvbWUgc3RkYyBzeXN0ZW1zCisgKyAgICByZWpl
Y3QgYGRlZmluZWQgKGNvbnN0KScuICAqLworICsgI2lmbmRlZiBjb25zdAorICsgI2RlZmluZSBj
b25zdAorICsgI2VuZGlmCisgKyAjZW5kaWYKKyArIAorICsgI2luY2x1ZGUgPHN0ZGlvLmg+Cisg
KyAKKyArIC8qIENvbW1lbnQgb3V0IGFsbCB0aGlzIGNvZGUgaWYgd2UgYXJlIHVzaW5nIHRoZSBH
TlUgQyBMaWJyYXJ5LCBhbmQgYXJlIG5vdAorICsgICAgYWN0dWFsbHkgY29tcGlsaW5nIHRoZSBs
aWJyYXJ5IGl0c2VsZi4gIFRoaXMgY29kZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQworICsgICAgTGli
cmFyeSwgYnV0IGFsc28gaW5jbHVkZWQgaW4gbWFueSBvdGhlciBHTlUgZGlzdHJpYnV0aW9ucy4g
IENvbXBpbGluZworICsgICAgYW5kIGxpbmtpbmcgaW4gdGhpcyBjb2RlIGlzIGEgd2FzdGUgd2hl
biB1c2luZyB0aGUgR05VIEMgbGlicmFyeQorICsgICAgKGVzcGVjaWFsbHkgaWYgaXQgaXMgYSBz
aGFyZWQgbGlicmFyeSkuICBSYXRoZXIgdGhhbiBoYXZpbmcgZXZlcnkgR05VCisgKyAgICBwcm9n
cmFtIHVuZGVyc3RhbmQgYGNvbmZpZ3VyZSAtLXdpdGgtZ251LWxpYmMnIGFuZCBvbWl0IHRoZSBv
YmplY3QgZmlsZXMsCisgKyAgICBpdCBpcyBzaW1wbGVyIHRvIGp1c3QgZG8gdGhpcyBpbiB0aGUg
c291cmNlIGZvciBlYWNoIHN1Y2ggZmlsZS4gICovCisgKyAKKyArICNpZiBkZWZpbmVkIChfTElC
QykgfHwgIWRlZmluZWQgKF9fR05VX0xJQlJBUllfXykKKyArIAorICsgCisgKyAvKiBUaGlzIG5l
ZWRzIHRvIGNvbWUgYWZ0ZXIgc29tZSBsaWJyYXJ5ICNpbmNsdWRlCisgKyAgICB0byBnZXQgX19H
TlVfTElCUkFSWV9fIGRlZmluZWQuICAqLworICsgI2lmZGVmCV9fR05VX0xJQlJBUllfXworICsg
LyogRG9uJ3QgaW5jbHVkZSBzdGRsaWIuaCBmb3Igbm9uLUdOVSBDIGxpYnJhcmllcyBiZWNhdXNl
IHNvbWUgb2YgdGhlbQorICsgICAgY29udGFpbiBjb25mbGljdGluZyBwcm90b3R5cGVzIGZvciBn
ZXRvcHQuICAqLworICsgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICsgI2VuZGlmCS8qIEdOVSBDIGxp
YnJhcnkuICAqLworICsgCisgKyAvKiBUaGlzIHZlcnNpb24gb2YgYGdldG9wdCcgYXBwZWFycyB0
byB0aGUgY2FsbGVyIGxpa2Ugc3RhbmRhcmQgVW5peCBgZ2V0b3B0JworICsgICAgYnV0IGl0IGJl
aGF2ZXMgZGlmZmVyZW50bHkgZm9yIHRoZSB1c2VyLCBzaW5jZSBpdCBhbGxvd3MgdGhlIHVzZXIK
KyArICAgIHRvIGludGVyc3BlcnNlIHRoZSBvcHRpb25zIHdpdGggdGhlIG90aGVyIGFyZ3VtZW50
cy4KKyArIAorICsgICAgQXMgYGdldG9wdCcgd29ya3MsIGl0IHBlcm11dGVzIHRoZSBlbGVtZW50
cyBvZiBBUkdWIHNvIHRoYXQsCisgKyAgICB3aGVuIGl0IGlzIGRvbmUsIGFsbCB0aGUgb3B0aW9u
cyBwcmVjZWRlIGV2ZXJ5dGhpbmcgZWxzZS4gIFRodXMKKyArICAgIGFsbCBhcHBsaWNhdGlvbiBw
cm9ncmFtcyBhcmUgZXh0ZW5kZWQgdG8gaGFuZGxlIGZsZXhpYmxlIGFyZ3VtZW50IG9yZGVyLgor
ICsgCisgKyAgICBTZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQT1NJWExZX0NPUlJF
Q1QgZGlzYWJsZXMgcGVybXV0YXRpb24uCisgKyAgICBUaGVuIHRoZSBiZWhhdmlvciBpcyBjb21w
bGV0ZWx5IHN0YW5kYXJkLgorICsgCisgKyAgICBHTlUgYXBwbGljYXRpb24gcHJvZ3JhbXMgY2Fu
IHVzZSBhIHRoaXJkIGFsdGVybmF0aXZlIG1vZGUgaW4gd2hpY2gKKyArICAgIHRoZXkgY2FuIGRp
c3Rpbmd1aXNoIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBvcHRpb25zIGFuZCBvdGhlciBhcmd1bWVu
dHMuICAqLworICsgCisgKyAjaW5jbHVkZSAiZ2V0b3B0LmgiCisgKyAKKyArIC8qIEZvciBjb21t
dW5pY2F0aW9uIGZyb20gYGdldG9wdCcgdG8gdGhlIGNhbGxlci4KKyArICAgIFdoZW4gYGdldG9w
dCcgZmluZHMgYW4gb3B0aW9uIHRoYXQgdGFrZXMgYW4gYXJndW1lbnQsCisgKyAgICB0aGUgYXJn
dW1lbnQgdmFsdWUgaXMgcmV0dXJuZWQgaGVyZS4KKyArICAgIEFsc28sIHdoZW4gYG9yZGVyaW5n
JyBpcyBSRVRVUk5fSU5fT1JERVIsCisgKyAgICBlYWNoIG5vbi1vcHRpb24gQVJHVi1lbGVtZW50
IGlzIHJldHVybmVkIGhlcmUuICAqLworICsgCisgKyBjaGFyICpvcHRhcmcgPSBOVUxMOworICsg
CisgKyAvKiBJbmRleCBpbiBBUkdWIG9mIHRoZSBuZXh0IGVsZW1lbnQgdG8gYmUgc2Nhbm5lZC4K
KyArICAgIFRoaXMgaXMgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB0byBhbmQgZnJvbSB0aGUgY2Fs
bGVyCisgKyAgICBhbmQgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxz
IHRvIGBnZXRvcHQnLgorICsgCisgKyAgICBPbiBlbnRyeSB0byBgZ2V0b3B0JywgemVybyBtZWFu
cyB0aGlzIGlzIHRoZSBmaXJzdCBjYWxsOyBpbml0aWFsaXplLgorICsgCisgKyAgICBXaGVuIGBn
ZXRvcHQnIHJldHVybnMgRU9GLCB0aGlzIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2YgdGhl
CisgKyAgICBub24tb3B0aW9uIGVsZW1lbnRzIHRoYXQgdGhlIGNhbGxlciBzaG91bGQgaXRzZWxm
IHNjYW4uCisgKyAKKyArICAgIE90aGVyd2lzZSwgYG9wdGluZCcgY29tbXVuaWNhdGVzIGZyb20g
b25lIGNhbGwgdG8gdGhlIG5leHQKKyArICAgIGhvdyBtdWNoIG9mIEFSR1YgaGFzIGJlZW4gc2Nh
bm5lZCBzbyBmYXIuICAqLworICsgCisgKyAvKiBYWFggMTAwMy4yIHNheXMgdGhpcyBtdXN0IGJl
IDEgYmVmb3JlIGFueSBjYWxsLiAgKi8KKyArIGludCBvcHRpbmQgPSAwOworICsgCisgKyAvKiBU
aGUgbmV4dCBjaGFyIHRvIGJlIHNjYW5uZWQgaW4gdGhlIG9wdGlvbi1lbGVtZW50CisgKyAgICBp
biB3aGljaCB0aGUgbGFzdCBvcHRpb24gY2hhcmFjdGVyIHdlIHJldHVybmVkIHdhcyBmb3VuZC4K
KyArICAgIFRoaXMgYWxsb3dzIHVzIHRvIHBpY2sgdXAgdGhlIHNjYW4gd2hlcmUgd2UgbGVmdCBv
ZmYuCisgKyAKKyArICAgIElmIHRoaXMgaXMgemVybywgb3IgYSBudWxsIHN0cmluZywgaXQgbWVh
bnMgcmVzdW1lIHRoZSBzY2FuCisgKyAgICBieSBhZHZhbmNpbmcgdG8gdGhlIG5leHQgQVJHVi1l
bGVtZW50LiAgKi8KKyArIAorICsgc3RhdGljIGNoYXIgKm5leHRjaGFyOworICsgCisgKyAvKiBD
YWxsZXJzIHN0b3JlIHplcm8gaGVyZSB0byBpbmhpYml0IHRoZSBlcnJvciBtZXNzYWdlCisgKyAg
ICBmb3IgdW5yZWNvZ25pemVkIG9wdGlvbnMuICAqLworICsgCisgKyBpbnQgb3B0ZXJyID0gMTsK
KyArIAorICsgLyogU2V0IHRvIGFuIG9wdGlvbiBjaGFyYWN0ZXIgd2hpY2ggd2FzIHVucmVjb2du
aXplZC4KKyArICAgIFRoaXMgbXVzdCBiZSBpbml0aWFsaXplZCBvbiBzb21lIHN5c3RlbXMgdG8g
YXZvaWQgbGlua2luZyBpbiB0aGUKKyArICAgIHN5c3RlbSdzIG93biBnZXRvcHQgaW1wbGVtZW50
YXRpb24uICAqLworICsgCisgKyBpbnQgb3B0b3B0ID0gJz8nOworICsgCisgKyAvKiBEZXNjcmli
ZSBob3cgdG8gZGVhbCB3aXRoIG9wdGlvbnMgdGhhdCBmb2xsb3cgbm9uLW9wdGlvbiBBUkdWLWVs
ZW1lbnRzLgorICsgCisgKyAgICBJZiB0aGUgY2FsbGVyIGRpZCBub3Qgc3BlY2lmeSBhbnl0aGlu
ZywKKyArICAgIHRoZSBkZWZhdWx0IGlzIFJFUVVJUkVfT1JERVIgaWYgdGhlIGVudmlyb25tZW50
IHZhcmlhYmxlCisgKyAgICBQT1NJWExZX0NPUlJFQ1QgaXMgZGVmaW5lZCwgUEVSTVVURSBvdGhl
cndpc2UuCisgKyAKKyArICAgIFJFUVVJUkVfT1JERVIgbWVhbnMgZG9uJ3QgcmVjb2duaXplIHRo
ZW0gYXMgb3B0aW9uczsKKyArICAgIHN0b3Agb3B0aW9uIHByb2Nlc3Npbmcgd2hlbiB0aGUgZmly
c3Qgbm9uLW9wdGlvbiBpcyBzZWVuLgorICsgICAgVGhpcyBpcyB3aGF0IFVuaXggZG9lcy4KKyAr
ICAgIFRoaXMgbW9kZSBvZiBvcGVyYXRpb24gaXMgc2VsZWN0ZWQgYnkgZWl0aGVyIHNldHRpbmcg
dGhlIGVudmlyb25tZW50CisgKyAgICB2YXJpYWJsZSBQT1NJWExZX0NPUlJFQ1QsIG9yIHVzaW5n
IGArJyBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyCisgKyAgICBvZiB0aGUgbGlzdCBvZiBvcHRpb24g
Y2hhcmFjdGVycy4KKyArIAorICsgICAgUEVSTVVURSBpcyB0aGUgZGVmYXVsdC4gIFdlIHBlcm11
dGUgdGhlIGNvbnRlbnRzIG9mIEFSR1YgYXMgd2Ugc2NhbiwKKyArICAgIHNvIHRoYXQgZXZlbnR1
YWxseSBhbGwgdGhlIG5vbi1vcHRpb25zIGFyZSBhdCB0aGUgZW5kLiAgVGhpcyBhbGxvd3Mgb3B0
aW9ucworICsgICAgdG8gYmUgZ2l2ZW4gaW4gYW55IG9yZGVyLCBldmVuIHdpdGggcHJvZ3JhbXMg
dGhhdCB3ZXJlIG5vdCB3cml0dGVuIHRvCisgKyAgICBleHBlY3QgdGhpcy4KKyArIAorICsgICAg
UkVUVVJOX0lOX09SREVSIGlzIGFuIG9wdGlvbiBhdmFpbGFibGUgdG8gcHJvZ3JhbXMgdGhhdCB3
ZXJlIHdyaXR0ZW4KKyArICAgIHRvIGV4cGVjdCBvcHRpb25zIGFuZCBvdGhlciBBUkdWLWVsZW1l
bnRzIGluIGFueSBvcmRlciBhbmQgdGhhdCBjYXJlIGFib3V0CisgKyAgICB0aGUgb3JkZXJpbmcg
b2YgdGhlIHR3by4gIFdlIGRlc2NyaWJlIGVhY2ggbm9uLW9wdGlvbiBBUkdWLWVsZW1lbnQKKyAr
ICAgIGFzIGlmIGl0IHdlcmUgdGhlIGFyZ3VtZW50IG9mIGFuIG9wdGlvbiB3aXRoIGNoYXJhY3Rl
ciBjb2RlIDEuCisgKyAgICBVc2luZyBgLScgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUg
bGlzdCBvZiBvcHRpb24gY2hhcmFjdGVycworICsgICAgc2VsZWN0cyB0aGlzIG1vZGUgb2Ygb3Bl
cmF0aW9uLgorICsgCisgKyAgICBUaGUgc3BlY2lhbCBhcmd1bWVudCBgLS0nIGZvcmNlcyBhbiBl
bmQgb2Ygb3B0aW9uLXNjYW5uaW5nIHJlZ2FyZGxlc3MKKyArICAgIG9mIHRoZSB2YWx1ZSBvZiBg
b3JkZXJpbmcnLiAgSW4gdGhlIGNhc2Ugb2YgUkVUVVJOX0lOX09SREVSLCBvbmx5CisgKyAgICBg
LS0nIGNhbiBjYXVzZSBgZ2V0b3B0JyB0byByZXR1cm4gRU9GIHdpdGggYG9wdGluZCcgIT0gQVJH
Qy4gICovCisgKyAKKyArIHN0YXRpYyBlbnVtCisgKyB7CisgKyAgIFJFUVVJUkVfT1JERVIsIFBF
Uk1VVEUsIFJFVFVSTl9JTl9PUkRFUgorICsgfSBvcmRlcmluZzsKKyArIAorICsgLyogVmFsdWUg
b2YgUE9TSVhMWV9DT1JSRUNUIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KKyArIHN0YXRpYyBj
aGFyICpwb3NpeGx5X2NvcnJlY3Q7CisgKyAMCisgKyAjaWZkZWYJX19HTlVfTElCUkFSWV9fCisg
KyAvKiBXZSB3YW50IHRvIGF2b2lkIGluY2x1c2lvbiBvZiBzdHJpbmcuaCB3aXRoIG5vbi1HTlUg
bGlicmFyaWVzCisgKyAgICBiZWNhdXNlIHRoZXJlIGFyZSBtYW55IHdheXMgaXQgY2FuIGNhdXNl
IHRyb3VibGUuCisgKyAgICBPbiBzb21lIHN5c3RlbXMsIGl0IGNvbnRhaW5zIHNwZWNpYWwgbWFn
aWMgbWFjcm9zIHRoYXQgZG9uJ3Qgd29yaworICsgICAgaW4gR0NDLiAgKi8KKyArICNpbmNsdWRl
IDxzdHJpbmcuaD4KKyArICNkZWZpbmUJbXlfaW5kZXgJc3RyY2hyCisgKyAjZWxzZQorICsgCisg
KyAvKiBBdm9pZCBkZXBlbmRpbmcgb24gbGlicmFyeSBmdW5jdGlvbnMgb3IgZmlsZXMKKyArICAg
IHdob3NlIG5hbWVzIGFyZSBpbmNvbnNpc3RlbnQuICAqLworICsgCisgKyBjaGFyICpnZXRlbnYg
KCk7CisgKyAKKyArIHN0YXRpYyBjaGFyICoKKyArIG15X2luZGV4IChzdHIsIGNocikKKyArICAg
ICAgY29uc3QgY2hhciAqc3RyOworICsgICAgICBpbnQgY2hyOworICsgeworICsgICB3aGlsZSAo
KnN0cikKKyArICAgICB7CisgKyAgICAgICBpZiAoKnN0ciA9PSBjaHIpCisgKyAJcmV0dXJuIChj
aGFyICopIHN0cjsKKyArICAgICAgIHN0cisrOworICsgICAgIH0KKyArICAgcmV0dXJuIDA7Cisg
KyB9CisgKyAKKyArIC8qIElmIHVzaW5nIEdDQywgd2UgY2FuIHNhZmVseSBkZWNsYXJlIHN0cmxl
biB0aGlzIHdheS4KKyArICAgIElmIG5vdCB1c2luZyBHQ0MsIGl0IGlzIG9rIG5vdCB0byBkZWNs
YXJlIGl0LiAgKi8KKyArICNpZmRlZiBfX0dOVUNfXworICsgLyogTm90ZSB0aGF0IE1vdG9yb2xh
IERlbHRhIDY4ayBSM1Y3IGNvbWVzIHdpdGggR0NDIGJ1dCBub3Qgc3RkZGVmLmguCisgKyAgICBU
aGF0IHdhcyByZWxldmFudCB0byBjb2RlIHRoYXQgd2FzIGhlcmUgYmVmb3JlLiAgKi8KKyArICNp
Zm5kZWYgX19TVERDX18KKyArIC8qIGdjYyB3aXRoIC10cmFkaXRpb25hbCBkZWNsYXJlcyB0aGUg
YnVpbHQtaW4gc3RybGVuIHRvIHJldHVybiBpbnQsCisgKyAgICBhbmQgaGFzIGRvbmUgc28gYXQg
bGVhc3Qgc2luY2UgdmVyc2lvbiAyLjQuNS4gLS0gcm1zLiAgKi8KKyArIGV4dGVybiBpbnQgc3Ry
bGVuIChjb25zdCBjaGFyICopOworICsgI2VuZGlmIC8qIG5vdCBfX1NURENfXyAqLworICsgI2Vu
ZGlmIC8qIF9fR05VQ19fICovCisgKyAKKyArICNlbmRpZiAvKiBub3QgX19HTlVfTElCUkFSWV9f
ICovCisgKyAMCisgKyAvKiBIYW5kbGUgcGVybXV0YXRpb24gb2YgYXJndW1lbnRzLiAgKi8KKyAr
IAorICsgLyogRGVzY3JpYmUgdGhlIHBhcnQgb2YgQVJHViB0aGF0IGNvbnRhaW5zIG5vbi1vcHRp
b25zIHRoYXQgaGF2ZQorICsgICAgYmVlbiBza2lwcGVkLiAgYGZpcnN0X25vbm9wdCcgaXMgdGhl
IGluZGV4IGluIEFSR1Ygb2YgdGhlIGZpcnN0IG9mIHRoZW07CisgKyAgICBgbGFzdF9ub25vcHQn
IGlzIHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCBvZiB0aGVtLiAgKi8KKyArIAorICsgc3RhdGlj
IGludCBmaXJzdF9ub25vcHQ7CisgKyBzdGF0aWMgaW50IGxhc3Rfbm9ub3B0OworICsgCisgKyAv
KiBFeGNoYW5nZSB0d28gYWRqYWNlbnQgc3Vic2VxdWVuY2VzIG9mIEFSR1YuCisgKyAgICBPbmUg
c3Vic2VxdWVuY2UgaXMgZWxlbWVudHMgW2ZpcnN0X25vbm9wdCxsYXN0X25vbm9wdCkKKyArICAg
IHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgbm9uLW9wdGlvbnMgdGhhdCBoYXZlIGJlZW4gc2tpcHBl
ZCBzbyBmYXIuCisgKyAgICBUaGUgb3RoZXIgaXMgZWxlbWVudHMgW2xhc3Rfbm9ub3B0LG9wdGlu
ZCksIHdoaWNoIGNvbnRhaW5zIGFsbAorICsgICAgdGhlIG9wdGlvbnMgcHJvY2Vzc2VkIHNpbmNl
IHRob3NlIG5vbi1vcHRpb25zIHdlcmUgc2tpcHBlZC4KKyArIAorICsgICAgYGZpcnN0X25vbm9w
dCcgYW5kIGBsYXN0X25vbm9wdCcgYXJlIHJlbG9jYXRlZCBzbyB0aGF0IHRoZXkgZGVzY3JpYmUK
KyArICAgIHRoZSBuZXcgaW5kaWNlcyBvZiB0aGUgbm9uLW9wdGlvbnMgaW4gQVJHViBhZnRlciB0
aGV5IGFyZSBtb3ZlZC4gICovCisgKyAKKyArIHN0YXRpYyB2b2lkCisgKyBleGNoYW5nZSAoYXJn
dikKKyArICAgICAgY2hhciAqKmFyZ3Y7CisgKyB7CisgKyAgIGludCBib3R0b20gPSBmaXJzdF9u
b25vcHQ7CisgKyAgIGludCBtaWRkbGUgPSBsYXN0X25vbm9wdDsKKyArICAgaW50IHRvcCA9IG9w
dGluZDsKKyArICAgY2hhciAqdGVtOworICsgCisgKyAgIC8qIEV4Y2hhbmdlIHRoZSBzaG9ydGVy
IHNlZ21lbnQgd2l0aCB0aGUgZmFyIGVuZCBvZiB0aGUgbG9uZ2VyIHNlZ21lbnQuCisgKyAgICAg
IFRoYXQgcHV0cyB0aGUgc2hvcnRlciBzZWdtZW50IGludG8gdGhlIHJpZ2h0IHBsYWNlLgorICsg
ICAgICBJdCBsZWF2ZXMgdGhlIGxvbmdlciBzZWdtZW50IGluIHRoZSByaWdodCBwbGFjZSBvdmVy
YWxsLAorICsgICAgICBidXQgaXQgY29uc2lzdHMgb2YgdHdvIHBhcnRzIHRoYXQgbmVlZCB0byBi
ZSBzd2FwcGVkIG5leHQuICAqLworICsgCisgKyAgIHdoaWxlICh0b3AgPiBtaWRkbGUgJiYgbWlk
ZGxlID4gYm90dG9tKQorICsgICAgIHsKKyArICAgICAgIGlmICh0b3AgLSBtaWRkbGUgPiBtaWRk
bGUgLSBib3R0b20pCisgKyAJeworICsgCSAgLyogQm90dG9tIHNlZ21lbnQgaXMgdGhlIHNob3J0
IG9uZS4gICovCisgKyAJICBpbnQgbGVuID0gbWlkZGxlIC0gYm90dG9tOworICsgCSAgcmVnaXN0
ZXIgaW50IGk7CisgKyAKKyArIAkgIC8qIFN3YXAgaXQgd2l0aCB0aGUgdG9wIHBhcnQgb2YgdGhl
IHRvcCBzZWdtZW50LiAgKi8KKyArIAkgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyArIAkg
ICAgeworICsgCSAgICAgIHRlbSA9IGFyZ3ZbYm90dG9tICsgaV07CisgKyAJICAgICAgYXJndlti
b3R0b20gKyBpXSA9IGFyZ3ZbdG9wIC0gKG1pZGRsZSAtIGJvdHRvbSkgKyBpXTsKKyArIAkgICAg
ICBhcmd2W3RvcCAtIChtaWRkbGUgLSBib3R0b20pICsgaV0gPSB0ZW07CisgKyAJICAgIH0KKyAr
IAkgIC8qIEV4Y2x1ZGUgdGhlIG1vdmVkIGJvdHRvbSBzZWdtZW50IGZyb20gZnVydGhlciBzd2Fw
cGluZy4gICovCisgKyAJICB0b3AgLT0gbGVuOworICsgCX0KKyArICAgICAgIGVsc2UKKyArIAl7
CisgKyAJICAvKiBUb3Agc2VnbWVudCBpcyB0aGUgc2hvcnQgb25lLiAgKi8KKyArIAkgIGludCBs
ZW4gPSB0b3AgLSBtaWRkbGU7CisgKyAJICByZWdpc3RlciBpbnQgaTsKKyArIAorICsgCSAgLyog
U3dhcCBpdCB3aXRoIHRoZSBib3R0b20gcGFydCBvZiB0aGUgYm90dG9tIHNlZ21lbnQuICAqLwor
ICsgCSAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICsgCSAgICB7CisgKyAJICAgICAgdGVt
ID0gYXJndltib3R0b20gKyBpXTsKKyArIAkgICAgICBhcmd2W2JvdHRvbSArIGldID0gYXJndltt
aWRkbGUgKyBpXTsKKyArIAkgICAgICBhcmd2W21pZGRsZSArIGldID0gdGVtOworICsgCSAgICB9
CisgKyAJICAvKiBFeGNsdWRlIHRoZSBtb3ZlZCB0b3Agc2VnbWVudCBmcm9tIGZ1cnRoZXIgc3dh
cHBpbmcuICAqLworICsgCSAgYm90dG9tICs9IGxlbjsKKyArIAl9CisgKyAgICAgfQorICsgCisg
KyAgIC8qIFVwZGF0ZSByZWNvcmRzIGZvciB0aGUgc2xvdHMgdGhlIG5vbi1vcHRpb25zIG5vdyBv
Y2N1cHkuICAqLworICsgCisgKyAgIGZpcnN0X25vbm9wdCArPSAob3B0aW5kIC0gbGFzdF9ub25v
cHQpOworICsgICBsYXN0X25vbm9wdCA9IG9wdGluZDsKKyArIH0KKyArIAorICsgLyogSW5pdGlh
bGl6ZSB0aGUgaW50ZXJuYWwgZGF0YSB3aGVuIHRoZSBmaXJzdCBjYWxsIGlzIG1hZGUuICAqLwor
ICsgCisgKyBzdGF0aWMgY29uc3QgY2hhciAqCisgKyBfZ2V0b3B0X2luaXRpYWxpemUgKG9wdHN0
cmluZykKKyArICAgICAgY29uc3QgY2hhciAqb3B0c3RyaW5nOworICsgeworICsgICAvKiBTdGFy
dCBwcm9jZXNzaW5nIG9wdGlvbnMgd2l0aCBBUkdWLWVsZW1lbnQgMSAoc2luY2UgQVJHVi1lbGVt
ZW50IDAKKyArICAgICAgaXMgdGhlIHByb2dyYW0gbmFtZSk7IHRoZSBzZXF1ZW5jZSBvZiBwcmV2
aW91c2x5IHNraXBwZWQKKyArICAgICAgbm9uLW9wdGlvbiBBUkdWLWVsZW1lbnRzIGlzIGVtcHR5
LiAgKi8KKyArIAorICsgICBmaXJzdF9ub25vcHQgPSBsYXN0X25vbm9wdCA9IG9wdGluZCA9IDE7
CisgKyAKKyArICAgbmV4dGNoYXIgPSBOVUxMOworICsgCisgKyAgIHBvc2l4bHlfY29ycmVjdCA9
IGdldGVudiAoIlBPU0lYTFlfQ09SUkVDVCIpOworICsgCisgKyAgIC8qIERldGVybWluZSBob3cg
dG8gaGFuZGxlIHRoZSBvcmRlcmluZyBvZiBvcHRpb25zIGFuZCBub25vcHRpb25zLiAgKi8KKyAr
IAorICsgICBpZiAob3B0c3RyaW5nWzBdID09ICctJykKKyArICAgICB7CisgKyAgICAgICBvcmRl
cmluZyA9IFJFVFVSTl9JTl9PUkRFUjsKKyArICAgICAgICsrb3B0c3RyaW5nOworICsgICAgIH0K
KyArICAgZWxzZSBpZiAob3B0c3RyaW5nWzBdID09ICcrJykKKyArICAgICB7CisgKyAgICAgICBv
cmRlcmluZyA9IFJFUVVJUkVfT1JERVI7CisgKyAgICAgICArK29wdHN0cmluZzsKKyArICAgICB9
CisgKyAgIGVsc2UgaWYgKHBvc2l4bHlfY29ycmVjdCAhPSBOVUxMKQorICsgICAgIG9yZGVyaW5n
ID0gUkVRVUlSRV9PUkRFUjsKKyArICAgZWxzZQorICsgICAgIG9yZGVyaW5nID0gUEVSTVVURTsK
KyArIAorICsgICByZXR1cm4gb3B0c3RyaW5nOworICsgfQorICsgDAorICsgLyogU2NhbiBlbGVt
ZW50cyBvZiBBUkdWICh3aG9zZSBsZW5ndGggaXMgQVJHQykgZm9yIG9wdGlvbiBjaGFyYWN0ZXJz
CisgKyAgICBnaXZlbiBpbiBPUFRTVFJJTkcuCisgKyAKKyArICAgIElmIGFuIGVsZW1lbnQgb2Yg
QVJHViBzdGFydHMgd2l0aCAnLScsIGFuZCBpcyBub3QgZXhhY3RseSAiLSIgb3IgIi0tIiwKKyAr
ICAgIHRoZW4gaXQgaXMgYW4gb3B0aW9uIGVsZW1lbnQuICBUaGUgY2hhcmFjdGVycyBvZiB0aGlz
IGVsZW1lbnQKKyArICAgIChhc2lkZSBmcm9tIHRoZSBpbml0aWFsICctJykgYXJlIG9wdGlvbiBj
aGFyYWN0ZXJzLiAgSWYgYGdldG9wdCcKKyArICAgIGlzIGNhbGxlZCByZXBlYXRlZGx5LCBpdCBy
ZXR1cm5zIHN1Y2Nlc3NpdmVseSBlYWNoIG9mIHRoZSBvcHRpb24gY2hhcmFjdGVycworICsgICAg
ZnJvbSBlYWNoIG9mIHRoZSBvcHRpb24gZWxlbWVudHMuCisgKyAKKyArICAgIElmIGBnZXRvcHQn
IGZpbmRzIGFub3RoZXIgb3B0aW9uIGNoYXJhY3RlciwgaXQgcmV0dXJucyB0aGF0IGNoYXJhY3Rl
ciwKKyArICAgIHVwZGF0aW5nIGBvcHRpbmQnIGFuZCBgbmV4dGNoYXInIHNvIHRoYXQgdGhlIG5l
eHQgY2FsbCB0byBgZ2V0b3B0JyBjYW4KKyArICAgIHJlc3VtZSB0aGUgc2NhbiB3aXRoIHRoZSBm
b2xsb3dpbmcgb3B0aW9uIGNoYXJhY3RlciBvciBBUkdWLWVsZW1lbnQuCisgKyAKKyArICAgIElm
IHRoZXJlIGFyZSBubyBtb3JlIG9wdGlvbiBjaGFyYWN0ZXJzLCBgZ2V0b3B0JyByZXR1cm5zIGBF
T0YnLgorICsgICAgVGhlbiBgb3B0aW5kJyBpcyB0aGUgaW5kZXggaW4gQVJHViBvZiB0aGUgZmly
c3QgQVJHVi1lbGVtZW50CisgKyAgICB0aGF0IGlzIG5vdCBhbiBvcHRpb24uICAoVGhlIEFSR1Yt
ZWxlbWVudHMgaGF2ZSBiZWVuIHBlcm11dGVkCisgKyAgICBzbyB0aGF0IHRob3NlIHRoYXQgYXJl
IG5vdCBvcHRpb25zIG5vdyBjb21lIGxhc3QuKQorICsgCisgKyAgICBPUFRTVFJJTkcgaXMgYSBz
dHJpbmcgY29udGFpbmluZyB0aGUgbGVnaXRpbWF0ZSBvcHRpb24gY2hhcmFjdGVycy4KKyArICAg
IElmIGFuIG9wdGlvbiBjaGFyYWN0ZXIgaXMgc2VlbiB0aGF0IGlzIG5vdCBsaXN0ZWQgaW4gT1BU
U1RSSU5HLAorICsgICAgcmV0dXJuICc/JyBhZnRlciBwcmludGluZyBhbiBlcnJvciBtZXNzYWdl
LiAgSWYgeW91IHNldCBgb3B0ZXJyJyB0bworICsgICAgemVybywgdGhlIGVycm9yIG1lc3NhZ2Ug
aXMgc3VwcHJlc3NlZCBidXQgd2Ugc3RpbGwgcmV0dXJuICc/Jy4KKyArIAorICsgICAgSWYgYSBj
aGFyIGluIE9QVFNUUklORyBpcyBmb2xsb3dlZCBieSBhIGNvbG9uLCB0aGF0IG1lYW5zIGl0IHdh
bnRzIGFuIGFyZywKKyArICAgIHNvIHRoZSBmb2xsb3dpbmcgdGV4dCBpbiB0aGUgc2FtZSBBUkdW
LWVsZW1lbnQsIG9yIHRoZSB0ZXh0IG9mIHRoZSBmb2xsb3dpbmcKKyArICAgIEFSR1YtZWxlbWVu
dCwgaXMgcmV0dXJuZWQgaW4gYG9wdGFyZycuICBUd28gY29sb25zIG1lYW4gYW4gb3B0aW9uIHRo
YXQKKyArICAgIHdhbnRzIGFuIG9wdGlvbmFsIGFyZzsgaWYgdGhlcmUgaXMgdGV4dCBpbiB0aGUg
Y3VycmVudCBBUkdWLWVsZW1lbnQsCisgKyAgICBpdCBpcyByZXR1cm5lZCBpbiBgb3B0YXJnJywg
b3RoZXJ3aXNlIGBvcHRhcmcnIGlzIHNldCB0byB6ZXJvLgorICsgCisgKyAgICBJZiBPUFRTVFJJ
Tkcgc3RhcnRzIHdpdGggYC0nIG9yIGArJywgaXQgcmVxdWVzdHMgZGlmZmVyZW50IG1ldGhvZHMg
b2YKKyArICAgIGhhbmRsaW5nIHRoZSBub24tb3B0aW9uIEFSR1YtZWxlbWVudHMuCisgKyAgICBT
ZWUgdGhlIGNvbW1lbnRzIGFib3V0IFJFVFVSTl9JTl9PUkRFUiBhbmQgUkVRVUlSRV9PUkRFUiwg
YWJvdmUuCisgKyAKKyArICAgIExvbmctbmFtZWQgb3B0aW9ucyBiZWdpbiB3aXRoIGAtLScgaW5z
dGVhZCBvZiBgLScuCisgKyAgICBUaGVpciBuYW1lcyBtYXkgYmUgYWJicmV2aWF0ZWQgYXMgbG9u
ZyBhcyB0aGUgYWJicmV2aWF0aW9uIGlzIHVuaXF1ZQorICsgICAgb3IgaXMgYW4gZXhhY3QgbWF0
Y2ggZm9yIHNvbWUgZGVmaW5lZCBvcHRpb24uICBJZiB0aGV5IGhhdmUgYW4KKyArICAgIGFyZ3Vt
ZW50LCBpdCBmb2xsb3dzIHRoZSBvcHRpb24gbmFtZSBpbiB0aGUgc2FtZSBBUkdWLWVsZW1lbnQs
IHNlcGFyYXRlZAorICsgICAgZnJvbSB0aGUgb3B0aW9uIG5hbWUgYnkgYSBgPScsIG9yIGVsc2Ug
dGhlIGluIG5leHQgQVJHVi1lbGVtZW50LgorICsgICAgV2hlbiBgZ2V0b3B0JyBmaW5kcyBhIGxv
bmctbmFtZWQgb3B0aW9uLCBpdCByZXR1cm5zIDAgaWYgdGhhdCBvcHRpb24ncworICsgICAgYGZs
YWcnIGZpZWxkIGlzIG5vbnplcm8sIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9uJ3MgYHZhbCcgZmll
bGQKKyArICAgIGlmIHRoZSBgZmxhZycgZmllbGQgaXMgemVyby4KKyArIAorICsgICAgVGhlIGVs
ZW1lbnRzIG9mIEFSR1YgYXJlbid0IHJlYWxseSBjb25zdCwgYmVjYXVzZSB3ZSBwZXJtdXRlIHRo
ZW0uCisgKyAgICBCdXQgd2UgcHJldGVuZCB0aGV5J3JlIGNvbnN0IGluIHRoZSBwcm90b3R5cGUg
dG8gYmUgY29tcGF0aWJsZQorICsgICAgd2l0aCBvdGhlciBzeXN0ZW1zLgorICsgCisgKyAgICBM
T05HT1BUUyBpcyBhIHZlY3RvciBvZiBgc3RydWN0IG9wdGlvbicgdGVybWluYXRlZCBieSBhbgor
ICsgICAgZWxlbWVudCBjb250YWluaW5nIGEgbmFtZSB3aGljaCBpcyB6ZXJvLgorICsgCisgKyAg
ICBMT05HSU5EIHJldHVybnMgdGhlIGluZGV4IGluIExPTkdPUFQgb2YgdGhlIGxvbmctbmFtZWQg
b3B0aW9uIGZvdW5kLgorICsgICAgSXQgaXMgb25seSB2YWxpZCB3aGVuIGEgbG9uZy1uYW1lZCBv
cHRpb24gaGFzIGJlZW4gZm91bmQgYnkgdGhlIG1vc3QKKyArICAgIHJlY2VudCBjYWxsLgorICsg
CisgKyAgICBJZiBMT05HX09OTFkgaXMgbm9uemVybywgJy0nIGFzIHdlbGwgYXMgJy0tJyBjYW4g
aW50cm9kdWNlCisgKyAgICBsb25nLW5hbWVkIG9wdGlvbnMuICAqLworICsgCisgKyBpbnQKKyAr
IF9nZXRvcHRfaW50ZXJuYWwgKGFyZ2MsIGFyZ3YsIG9wdHN0cmluZywgbG9uZ29wdHMsIGxvbmdp
bmQsIGxvbmdfb25seSkKKyArICAgICAgaW50IGFyZ2M7CisgKyAgICAgIGNoYXIgKmNvbnN0ICph
cmd2OworICsgICAgICBjb25zdCBjaGFyICpvcHRzdHJpbmc7CisgKyAgICAgIGNvbnN0IHN0cnVj
dCBvcHRpb24gKmxvbmdvcHRzOworICsgICAgICBpbnQgKmxvbmdpbmQ7CisgKyAgICAgIGludCBs
b25nX29ubHk7CisgKyB7CisgKyAgIG9wdGFyZyA9IE5VTEw7CisgKyAKKyArICAgaWYgKG9wdGlu
ZCA9PSAwKQorICsgICAgIG9wdHN0cmluZyA9IF9nZXRvcHRfaW5pdGlhbGl6ZSAob3B0c3RyaW5n
KTsKKyArIAorICsgICBpZiAobmV4dGNoYXIgPT0gTlVMTCB8fCAqbmV4dGNoYXIgPT0gJ1wwJykK
KyArICAgICB7CisgKyAgICAgICAvKiBBZHZhbmNlIHRvIHRoZSBuZXh0IEFSR1YtZWxlbWVudC4g
ICovCisgKyAKKyArICAgICAgIGlmIChvcmRlcmluZyA9PSBQRVJNVVRFKQorICsgCXsKKyArIAkg
IC8qIElmIHdlIGhhdmUganVzdCBwcm9jZXNzZWQgc29tZSBvcHRpb25zIGZvbGxvd2luZyBzb21l
IG5vbi1vcHRpb25zLAorICsgCSAgICAgZXhjaGFuZ2UgdGhlbSBzbyB0aGF0IHRoZSBvcHRpb25z
IGNvbWUgZmlyc3QuICAqLworICsgCisgKyAJICBpZiAoZmlyc3Rfbm9ub3B0ICE9IGxhc3Rfbm9u
b3B0ICYmIGxhc3Rfbm9ub3B0ICE9IG9wdGluZCkKKyArIAkgICAgZXhjaGFuZ2UgKChjaGFyICoq
KSBhcmd2KTsKKyArIAkgIGVsc2UgaWYgKGxhc3Rfbm9ub3B0ICE9IG9wdGluZCkKKyArIAkgICAg
Zmlyc3Rfbm9ub3B0ID0gb3B0aW5kOworICsgCisgKyAJICAvKiBTa2lwIGFueSBhZGRpdGlvbmFs
IG5vbi1vcHRpb25zCisgKyAJICAgICBhbmQgZXh0ZW5kIHRoZSByYW5nZSBvZiBub24tb3B0aW9u
cyBwcmV2aW91c2x5IHNraXBwZWQuICAqLworICsgCisgKyAJICB3aGlsZSAob3B0aW5kIDwgYXJn
YworICsgCQkgJiYgKGFyZ3Zbb3B0aW5kXVswXSAhPSAnLScgfHwgYXJndltvcHRpbmRdWzFdID09
ICdcMCcpKQorICsgCSAgICBvcHRpbmQrKzsKKyArIAkgIGxhc3Rfbm9ub3B0ID0gb3B0aW5kOwor
ICsgCX0KKyArIAorICsgICAgICAgLyogVGhlIHNwZWNpYWwgQVJHVi1lbGVtZW50IGAtLScgbWVh
bnMgcHJlbWF0dXJlIGVuZCBvZiBvcHRpb25zLgorICsgCSBTa2lwIGl0IGxpa2UgYSBudWxsIG9w
dGlvbiwKKyArIAkgdGhlbiBleGNoYW5nZSB3aXRoIHByZXZpb3VzIG5vbi1vcHRpb25zIGFzIGlm
IGl0IHdlcmUgYW4gb3B0aW9uLAorICsgCSB0aGVuIHNraXAgZXZlcnl0aGluZyBlbHNlIGxpa2Ug
YSBub24tb3B0aW9uLiAgKi8KKyArIAorICsgICAgICAgaWYgKG9wdGluZCAhPSBhcmdjICYmICFz
dHJjbXAgKGFyZ3Zbb3B0aW5kXSwgIi0tIikpCisgKyAJeworICsgCSAgb3B0aW5kKys7CisgKyAK
KyArIAkgIGlmIChmaXJzdF9ub25vcHQgIT0gbGFzdF9ub25vcHQgJiYgbGFzdF9ub25vcHQgIT0g
b3B0aW5kKQorICsgCSAgICBleGNoYW5nZSAoKGNoYXIgKiopIGFyZ3YpOworICsgCSAgZWxzZSBp
ZiAoZmlyc3Rfbm9ub3B0ID09IGxhc3Rfbm9ub3B0KQorICsgCSAgICBmaXJzdF9ub25vcHQgPSBv
cHRpbmQ7CisgKyAJICBsYXN0X25vbm9wdCA9IGFyZ2M7CisgKyAKKyArIAkgIG9wdGluZCA9IGFy
Z2M7CisgKyAJfQorICsgCisgKyAgICAgICAvKiBJZiB3ZSBoYXZlIGRvbmUgYWxsIHRoZSBBUkdW
LWVsZW1lbnRzLCBzdG9wIHRoZSBzY2FuCisgKyAJIGFuZCBiYWNrIG92ZXIgYW55IG5vbi1vcHRp
b25zIHRoYXQgd2Ugc2tpcHBlZCBhbmQgcGVybXV0ZWQuICAqLworICsgCisgKyAgICAgICBpZiAo
b3B0aW5kID09IGFyZ2MpCisgKyAJeworICsgCSAgLyogU2V0IHRoZSBuZXh0LWFyZy1pbmRleCB0
byBwb2ludCBhdCB0aGUgbm9uLW9wdGlvbnMKKyArIAkgICAgIHRoYXQgd2UgcHJldmlvdXNseSBz
a2lwcGVkLCBzbyB0aGUgY2FsbGVyIHdpbGwgZGlnZXN0IHRoZW0uICAqLworICsgCSAgaWYgKGZp
cnN0X25vbm9wdCAhPSBsYXN0X25vbm9wdCkKKyArIAkgICAgb3B0aW5kID0gZmlyc3Rfbm9ub3B0
OworICsgCSAgcmV0dXJuIEVPRjsKKyArIAl9CisgKyAKKyArICAgICAgIC8qIElmIHdlIGhhdmUg
Y29tZSB0byBhIG5vbi1vcHRpb24gYW5kIGRpZCBub3QgcGVybXV0ZSBpdCwKKyArIAkgZWl0aGVy
IHN0b3AgdGhlIHNjYW4gb3IgZGVzY3JpYmUgaXQgdG8gdGhlIGNhbGxlciBhbmQgcGFzcyBpdCBi
eS4gICovCisgKyAKKyArICAgICAgIGlmICgoYXJndltvcHRpbmRdWzBdICE9ICctJyB8fCBhcmd2
W29wdGluZF1bMV0gPT0gJ1wwJykpCisgKyAJeworICsgCSAgaWYgKG9yZGVyaW5nID09IFJFUVVJ
UkVfT1JERVIpCisgKyAJICAgIHJldHVybiBFT0Y7CisgKyAJICBvcHRhcmcgPSBhcmd2W29wdGlu
ZCsrXTsKKyArIAkgIHJldHVybiAxOworICsgCX0KKyArIAorICsgICAgICAgLyogV2UgaGF2ZSBm
b3VuZCBhbm90aGVyIG9wdGlvbi1BUkdWLWVsZW1lbnQuCisgKyAJIFNraXAgdGhlIGluaXRpYWwg
cHVuY3R1YXRpb24uICAqLworICsgCisgKyAgICAgICBuZXh0Y2hhciA9IChhcmd2W29wdGluZF0g
KyAxCisgKyAJCSAgKyAobG9uZ29wdHMgIT0gTlVMTCAmJiBhcmd2W29wdGluZF1bMV0gPT0gJy0n
KSk7CisgKyAgICAgfQorICsgCisgKyAgIC8qIERlY29kZSB0aGUgY3VycmVudCBvcHRpb24tQVJH
Vi1lbGVtZW50LiAgKi8KKyArIAorICsgICAvKiBDaGVjayB3aGV0aGVyIHRoZSBBUkdWLWVsZW1l
bnQgaXMgYSBsb25nIG9wdGlvbi4KKyArIAorICsgICAgICBJZiBsb25nX29ubHkgYW5kIHRoZSBB
UkdWLWVsZW1lbnQgaGFzIHRoZSBmb3JtICItZiIsIHdoZXJlIGYgaXMKKyArICAgICAgYSB2YWxp
ZCBzaG9ydCBvcHRpb24sIGRvbid0IGNvbnNpZGVyIGl0IGFuIGFiYnJldmlhdGVkIGZvcm0gb2YK
KyArICAgICAgYSBsb25nIG9wdGlvbiB0aGF0IHN0YXJ0cyB3aXRoIGYuICBPdGhlcndpc2UgdGhl
cmUgd291bGQgYmUgbm8KKyArICAgICAgd2F5IHRvIGdpdmUgdGhlIC1mIHNob3J0IG9wdGlvbi4K
KyArIAorICsgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlcmUncyBhIGxvbmcgb3B0aW9u
ICJmdWJhciIgYW5kCisgKyAgICAgIHRoZSBBUkdWLWVsZW1lbnQgaXMgIi1mdSIsIGRvIGNvbnNp
ZGVyIHRoYXQgYW4gYWJicmV2aWF0aW9uIG9mCisgKyAgICAgIHRoZSBsb25nIG9wdGlvbiwganVz
dCBsaWtlICItLWZ1IiwgYW5kIG5vdCAiLWYiIHdpdGggYXJnICJ1Ii4KKyArIAorICsgICAgICBU
aGlzIGRpc3RpbmN0aW9uIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHVzZWZ1bCBhcHByb2FjaC4gICov
CisgKyAKKyArICAgaWYgKGxvbmdvcHRzICE9IE5VTEwKKyArICAgICAgICYmIChhcmd2W29wdGlu
ZF1bMV0gPT0gJy0nCisgKyAJICB8fCAobG9uZ19vbmx5ICYmIChhcmd2W29wdGluZF1bMl0gfHwg
IW15X2luZGV4IChvcHRzdHJpbmcsIGFyZ3Zbb3B0aW5kXVsxXSkpKSkpCisgKyAgICAgeworICsg
ICAgICAgY2hhciAqbmFtZWVuZDsKKyArICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKnA7Cisg
KyAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpwZm91bmQgPSBOVUxMOworICsgICAgICAgaW50
IGV4YWN0ID0gMDsKKyArICAgICAgIGludCBhbWJpZyA9IDA7CisgKyAgICAgICBpbnQgaW5kZm91
bmQ7CisgKyAgICAgICBpbnQgb3B0aW9uX2luZGV4OworICsgCisgKyAgICAgICBmb3IgKG5hbWVl
bmQgPSBuZXh0Y2hhcjsgKm5hbWVlbmQgJiYgKm5hbWVlbmQgIT0gJz0nOyBuYW1lZW5kKyspCisg
KyAJLyogRG8gbm90aGluZy4gICovIDsKKyArIAorICsgICAgICAgLyogVGVzdCBhbGwgbG9uZyBv
cHRpb25zIGZvciBlaXRoZXIgZXhhY3QgbWF0Y2gKKyArIAkgb3IgYWJicmV2aWF0ZWQgbWF0Y2hl
cy4gICovCisgKyAgICAgICBmb3IgKHAgPSBsb25nb3B0cywgb3B0aW9uX2luZGV4ID0gMDsgcC0+
bmFtZTsgcCsrLCBvcHRpb25faW5kZXgrKykKKyArIAlpZiAoIXN0cm5jbXAgKHAtPm5hbWUsIG5l
eHRjaGFyLCBuYW1lZW5kIC0gbmV4dGNoYXIpKQorICsgCSAgeworICsgCSAgICBpZiAobmFtZWVu
ZCAtIG5leHRjaGFyID09IHN0cmxlbiAocC0+bmFtZSkpCisgKyAJICAgICAgeworICsgCQkvKiBF
eGFjdCBtYXRjaCBmb3VuZC4gICovCisgKyAJCXBmb3VuZCA9IHA7CisgKyAJCWluZGZvdW5kID0g
b3B0aW9uX2luZGV4OworICsgCQlleGFjdCA9IDE7CisgKyAJCWJyZWFrOworICsgCSAgICAgIH0K
KyArIAkgICAgZWxzZSBpZiAocGZvdW5kID09IE5VTEwpCisgKyAJICAgICAgeworICsgCQkvKiBG
aXJzdCBub25leGFjdCBtYXRjaCBmb3VuZC4gICovCisgKyAJCXBmb3VuZCA9IHA7CisgKyAJCWlu
ZGZvdW5kID0gb3B0aW9uX2luZGV4OworICsgCSAgICAgIH0KKyArIAkgICAgZWxzZQorICsgCSAg
ICAgIC8qIFNlY29uZCBvciBsYXRlciBub25leGFjdCBtYXRjaCBmb3VuZC4gICovCisgKyAJICAg
ICAgYW1iaWcgPSAxOworICsgCSAgfQorICsgCisgKyAgICAgICBpZiAoYW1iaWcgJiYgIWV4YWN0
KQorICsgCXsKKyArIAkgIGlmIChvcHRlcnIpCisgKyAJICAgIGZwcmludGYgKHN0ZGVyciwgIiVz
OiBvcHRpb24gYCVzJyBpcyBhbWJpZ3VvdXNcbiIsCisgKyAJCSAgICAgYXJndlswXSwgYXJndltv
cHRpbmRdKTsKKyArIAkgIG5leHRjaGFyICs9IHN0cmxlbiAobmV4dGNoYXIpOworICsgCSAgb3B0
aW5kKys7CisgKyAJICByZXR1cm4gJz8nOworICsgCX0KKyArIAorICsgICAgICAgaWYgKHBmb3Vu
ZCAhPSBOVUxMKQorICsgCXsKKyArIAkgIG9wdGlvbl9pbmRleCA9IGluZGZvdW5kOworICsgCSAg
b3B0aW5kKys7CisgKyAJICBpZiAoKm5hbWVlbmQpCisgKyAJICAgIHsKKyArIAkgICAgICAvKiBE
b24ndCB0ZXN0IGhhc19hcmcgd2l0aCA+LCBiZWNhdXNlIHNvbWUgQyBjb21waWxlcnMgZG9uJ3QK
KyArIAkJIGFsbG93IGl0IHRvIGJlIHVzZWQgb24gZW51bXMuICAqLworICsgCSAgICAgIGlmIChw
Zm91bmQtPmhhc19hcmcpCisgKyAJCW9wdGFyZyA9IG5hbWVlbmQgKyAxOworICsgCSAgICAgIGVs
c2UKKyArIAkJeworICsgCQkgIGlmIChvcHRlcnIpCisgKyAJCSAgICB7CisgKyAJCSAgICAgIGlm
IChhcmd2W29wdGluZCAtIDFdWzFdID09ICctJykKKyArIAkJCS8qIC0tb3B0aW9uICovCisgKyAJ
CQlmcHJpbnRmIChzdGRlcnIsCisgKyAJCQkJICIlczogb3B0aW9uIGAtLSVzJyBkb2Vzbid0IGFs
bG93IGFuIGFyZ3VtZW50XG4iLAorICsgCQkJCSBhcmd2WzBdLCBwZm91bmQtPm5hbWUpOworICsg
CQkgICAgICBlbHNlCisgKyAJCQkvKiArb3B0aW9uIG9yIC1vcHRpb24gKi8KKyArIAkJCWZwcmlu
dGYgKHN0ZGVyciwKKyArIAkJCSAgICAgIiVzOiBvcHRpb24gYCVjJXMnIGRvZXNuJ3QgYWxsb3cg
YW4gYXJndW1lbnRcbiIsCisgKyAJCQkgICAgIGFyZ3ZbMF0sIGFyZ3Zbb3B0aW5kIC0gMV1bMF0s
IHBmb3VuZC0+bmFtZSk7CisgKyAJCSAgICB9CisgKyAJCSAgbmV4dGNoYXIgKz0gc3RybGVuIChu
ZXh0Y2hhcik7CisgKyAJCSAgcmV0dXJuICc/JzsKKyArIAkJfQorICsgCSAgICB9CisgKyAJICBl
bHNlIGlmIChwZm91bmQtPmhhc19hcmcgPT0gMSkKKyArIAkgICAgeworICsgCSAgICAgIGlmIChv
cHRpbmQgPCBhcmdjKQorICsgCQlvcHRhcmcgPSBhcmd2W29wdGluZCsrXTsKKyArIAkgICAgICBl
bHNlCisgKyAJCXsKKyArIAkJICBpZiAob3B0ZXJyKQorICsgCQkgICAgZnByaW50ZiAoc3RkZXJy
LCAiJXM6IG9wdGlvbiBgJXMnIHJlcXVpcmVzIGFuIGFyZ3VtZW50XG4iLAorICsgCQkJICAgICBh
cmd2WzBdLCBhcmd2W29wdGluZCAtIDFdKTsKKyArIAkJICBuZXh0Y2hhciArPSBzdHJsZW4gKG5l
eHRjaGFyKTsKKyArIAkJICByZXR1cm4gb3B0c3RyaW5nWzBdID09ICc6JyA/ICc6JyA6ICc/JzsK
KyArIAkJfQorICsgCSAgICB9CisgKyAJICBuZXh0Y2hhciArPSBzdHJsZW4gKG5leHRjaGFyKTsK
KyArIAkgIGlmIChsb25naW5kICE9IE5VTEwpCisgKyAJICAgICpsb25naW5kID0gb3B0aW9uX2lu
ZGV4OworICsgCSAgaWYgKHBmb3VuZC0+ZmxhZykKKyArIAkgICAgeworICsgCSAgICAgICoocGZv
dW5kLT5mbGFnKSA9IHBmb3VuZC0+dmFsOworICsgCSAgICAgIHJldHVybiAwOworICsgCSAgICB9
CisgKyAJICByZXR1cm4gcGZvdW5kLT52YWw7CisgKyAJfQorICsgCisgKyAgICAgICAvKiBDYW4n
dCBmaW5kIGl0IGFzIGEgbG9uZyBvcHRpb24uICBJZiB0aGlzIGlzIG5vdCBnZXRvcHRfbG9uZ19v
bmx5LAorICsgCSBvciB0aGUgb3B0aW9uIHN0YXJ0cyB3aXRoICctLScgb3IgaXMgbm90IGEgdmFs
aWQgc2hvcnQKKyArIAkgb3B0aW9uLCB0aGVuIGl0J3MgYW4gZXJyb3IuCisgKyAJIE90aGVyd2lz
ZSBpbnRlcnByZXQgaXQgYXMgYSBzaG9ydCBvcHRpb24uICAqLworICsgICAgICAgaWYgKCFsb25n
X29ubHkgfHwgYXJndltvcHRpbmRdWzFdID09ICctJworICsgCSAgfHwgbXlfaW5kZXggKG9wdHN0
cmluZywgKm5leHRjaGFyKSA9PSBOVUxMKQorICsgCXsKKyArIAkgIGlmIChvcHRlcnIpCisgKyAJ
ICAgIHsKKyArIAkgICAgICBpZiAoYXJndltvcHRpbmRdWzFdID09ICctJykKKyArIAkJLyogLS1v
cHRpb24gKi8KKyArIAkJZnByaW50ZiAoc3RkZXJyLCAiJXM6IHVucmVjb2duaXplZCBvcHRpb24g
YC0tJXMnXG4iLAorICsgCQkJIGFyZ3ZbMF0sIG5leHRjaGFyKTsKKyArIAkgICAgICBlbHNlCisg
KyAJCS8qICtvcHRpb24gb3IgLW9wdGlvbiAqLworICsgCQlmcHJpbnRmIChzdGRlcnIsICIlczog
dW5yZWNvZ25pemVkIG9wdGlvbiBgJWMlcydcbiIsCisgKyAJCQkgYXJndlswXSwgYXJndltvcHRp
bmRdWzBdLCBuZXh0Y2hhcik7CisgKyAJICAgIH0KKyArIAkgIG5leHRjaGFyID0gKGNoYXIgKikg
IiI7CisgKyAJICBvcHRpbmQrKzsKKyArIAkgIHJldHVybiAnPyc7CisgKyAJfQorICsgICAgIH0K
KyArIAorICsgICAvKiBMb29rIGF0IGFuZCBoYW5kbGUgdGhlIG5leHQgc2hvcnQgb3B0aW9uLWNo
YXJhY3Rlci4gICovCisgKyAKKyArICAgeworICsgICAgIGNoYXIgYyA9ICpuZXh0Y2hhcisrOwor
ICsgICAgIGNoYXIgKnRlbXAgPSBteV9pbmRleCAob3B0c3RyaW5nLCBjKTsKKyArIAorICsgICAg
IC8qIEluY3JlbWVudCBgb3B0aW5kJyB3aGVuIHdlIHN0YXJ0IHRvIHByb2Nlc3MgaXRzIGxhc3Qg
Y2hhcmFjdGVyLiAgKi8KKyArICAgICBpZiAoKm5leHRjaGFyID09ICdcMCcpCisgKyAgICAgICAr
K29wdGluZDsKKyArIAorICsgICAgIGlmICh0ZW1wID09IE5VTEwgfHwgYyA9PSAnOicpCisgKyAg
ICAgICB7CisgKyAJaWYgKG9wdGVycikKKyArIAkgIHsKKyArIAkgICAgaWYgKHBvc2l4bHlfY29y
cmVjdCkKKyArIAkgICAgICAvKiAxMDAzLjIgc3BlY2lmaWVzIHRoZSBmb3JtYXQgb2YgdGhpcyBt
ZXNzYWdlLiAgKi8KKyArIAkgICAgICBmcHJpbnRmIChzdGRlcnIsICIlczogaWxsZWdhbCBvcHRp
b24gLS0gJWNcbiIsIGFyZ3ZbMF0sIGMpOworICsgCSAgICBlbHNlCisgKyAJICAgICAgZnByaW50
ZiAoc3RkZXJyLCAiJXM6IGludmFsaWQgb3B0aW9uIC0tICVjXG4iLCBhcmd2WzBdLCBjKTsKKyAr
IAkgIH0KKyArIAlvcHRvcHQgPSBjOworICsgCXJldHVybiAnPyc7CisgKyAgICAgICB9CisgKyAg
ICAgaWYgKHRlbXBbMV0gPT0gJzonKQorICsgICAgICAgeworICsgCWlmICh0ZW1wWzJdID09ICc6
JykKKyArIAkgIHsKKyArIAkgICAgLyogVGhpcyBpcyBhbiBvcHRpb24gdGhhdCBhY2NlcHRzIGFu
IGFyZ3VtZW50IG9wdGlvbmFsbHkuICAqLworICsgCSAgICBpZiAoKm5leHRjaGFyICE9ICdcMCcp
CisgKyAJICAgICAgeworICsgCQlvcHRhcmcgPSBuZXh0Y2hhcjsKKyArIAkJb3B0aW5kKys7Cisg
KyAJICAgICAgfQorICsgCSAgICBlbHNlCisgKyAJICAgICAgb3B0YXJnID0gTlVMTDsKKyArIAkg
ICAgbmV4dGNoYXIgPSBOVUxMOworICsgCSAgfQorICsgCWVsc2UKKyArIAkgIHsKKyArIAkgICAg
LyogVGhpcyBpcyBhbiBvcHRpb24gdGhhdCByZXF1aXJlcyBhbiBhcmd1bWVudC4gICovCisgKyAJ
ICAgIGlmICgqbmV4dGNoYXIgIT0gJ1wwJykKKyArIAkgICAgICB7CisgKyAJCW9wdGFyZyA9IG5l
eHRjaGFyOworICsgCQkvKiBJZiB3ZSBlbmQgdGhpcyBBUkdWLWVsZW1lbnQgYnkgdGFraW5nIHRo
ZSByZXN0IGFzIGFuIGFyZywKKyArIAkJICAgd2UgbXVzdCBhZHZhbmNlIHRvIHRoZSBuZXh0IGVs
ZW1lbnQgbm93LiAgKi8KKyArIAkJb3B0aW5kKys7CisgKyAJICAgICAgfQorICsgCSAgICBlbHNl
IGlmIChvcHRpbmQgPT0gYXJnYykKKyArIAkgICAgICB7CisgKyAJCWlmIChvcHRlcnIpCisgKyAJ
CSAgeworICsgCQkgICAgLyogMTAwMy4yIHNwZWNpZmllcyB0aGUgZm9ybWF0IG9mIHRoaXMgbWVz
c2FnZS4gICovCisgKyAJCSAgICBmcHJpbnRmIChzdGRlcnIsICIlczogb3B0aW9uIHJlcXVpcmVz
IGFuIGFyZ3VtZW50IC0tICVjXG4iLAorICsgCQkJICAgICBhcmd2WzBdLCBjKTsKKyArIAkJICB9
CisgKyAJCW9wdG9wdCA9IGM7CisgKyAJCWlmIChvcHRzdHJpbmdbMF0gPT0gJzonKQorICsgCQkg
IGMgPSAnOic7CisgKyAJCWVsc2UKKyArIAkJICBjID0gJz8nOworICsgCSAgICAgIH0KKyArIAkg
ICAgZWxzZQorICsgCSAgICAgIC8qIFdlIGFscmVhZHkgaW5jcmVtZW50ZWQgYG9wdGluZCcgb25j
ZTsKKyArIAkJIGluY3JlbWVudCBpdCBhZ2FpbiB3aGVuIHRha2luZyBuZXh0IEFSR1YtZWx0IGFz
IGFyZ3VtZW50LiAgKi8KKyArIAkgICAgICBvcHRhcmcgPSBhcmd2W29wdGluZCsrXTsKKyArIAkg
ICAgbmV4dGNoYXIgPSBOVUxMOworICsgCSAgfQorICsgICAgICAgfQorICsgICAgIHJldHVybiBj
OworICsgICB9CisgKyB9CisgKyAKKyArIGludAorICsgZ2V0b3B0IChhcmdjLCBhcmd2LCBvcHRz
dHJpbmcpCisgKyAgICAgIGludCBhcmdjOworICsgICAgICBjaGFyICpjb25zdCAqYXJndjsKKyAr
ICAgICAgY29uc3QgY2hhciAqb3B0c3RyaW5nOworICsgeworICsgICByZXR1cm4gX2dldG9wdF9p
bnRlcm5hbCAoYXJnYywgYXJndiwgb3B0c3RyaW5nLAorICsgCQkJICAgKGNvbnN0IHN0cnVjdCBv
cHRpb24gKikgMCwKKyArIAkJCSAgIChpbnQgKikgMCwKKyArIAkJCSAgIDApOworICsgfQorICsg
CisgKyAjZW5kaWYJLyogX0xJQkMgb3Igbm90IF9fR05VX0xJQlJBUllfXy4gICovCisgKyAMCisg
KyAjaWZkZWYgVEVTVAorICsgCisgKyAvKiBDb21waWxlIHdpdGggLURURVNUIHRvIG1ha2UgYW4g
ZXhlY3V0YWJsZSBmb3IgdXNlIGluIHRlc3RpbmcKKyArICAgIHRoZSBhYm92ZSBkZWZpbml0aW9u
IG9mIGBnZXRvcHQnLiAgKi8KKyArIAorICsgaW50CisgKyBtYWluIChhcmdjLCBhcmd2KQorICsg
ICAgICBpbnQgYXJnYzsKKyArICAgICAgY2hhciAqKmFyZ3Y7CisgKyB7CisgKyAgIGludCBjOwor
ICsgICBpbnQgZGlnaXRfb3B0aW5kID0gMDsKKyArIAorICsgICB3aGlsZSAoMSkKKyArICAgICB7
CisgKyAgICAgICBpbnQgdGhpc19vcHRpb25fb3B0aW5kID0gb3B0aW5kID8gb3B0aW5kIDogMTsK
KyArIAorICsgICAgICAgYyA9IGdldG9wdCAoYXJnYywgYXJndiwgImFiYzpkOjAxMjM0NTY3ODki
KTsKKyArICAgICAgIGlmIChjID09IEVPRikKKyArIAlicmVhazsKKyArIAorICsgICAgICAgc3dp
dGNoIChjKQorICsgCXsKKyArIAljYXNlICcwJzoKKyArIAljYXNlICcxJzoKKyArIAljYXNlICcy
JzoKKyArIAljYXNlICczJzoKKyArIAljYXNlICc0JzoKKyArIAljYXNlICc1JzoKKyArIAljYXNl
ICc2JzoKKyArIAljYXNlICc3JzoKKyArIAljYXNlICc4JzoKKyArIAljYXNlICc5JzoKKyArIAkg
IGlmIChkaWdpdF9vcHRpbmQgIT0gMCAmJiBkaWdpdF9vcHRpbmQgIT0gdGhpc19vcHRpb25fb3B0
aW5kKQorICsgCSAgICBwcmludGYgKCJkaWdpdHMgb2NjdXIgaW4gdHdvIGRpZmZlcmVudCBhcmd2
LWVsZW1lbnRzLlxuIik7CisgKyAJICBkaWdpdF9vcHRpbmQgPSB0aGlzX29wdGlvbl9vcHRpbmQ7
CisgKyAJICBwcmludGYgKCJvcHRpb24gJWNcbiIsIGMpOworICsgCSAgYnJlYWs7CisgKyAKKyAr
IAljYXNlICdhJzoKKyArIAkgIHByaW50ZiAoIm9wdGlvbiBhXG4iKTsKKyArIAkgIGJyZWFrOwor
ICsgCisgKyAJY2FzZSAnYic6CisgKyAJICBwcmludGYgKCJvcHRpb24gYlxuIik7CisgKyAJICBi
cmVhazsKKyArIAorICsgCWNhc2UgJ2MnOgorICsgCSAgcHJpbnRmICgib3B0aW9uIGMgd2l0aCB2
YWx1ZSBgJXMnXG4iLCBvcHRhcmcpOworICsgCSAgYnJlYWs7CisgKyAKKyArIAljYXNlICc/JzoK
KyArIAkgIGJyZWFrOworICsgCisgKyAJZGVmYXVsdDoKKyArIAkgIHByaW50ZiAoIj8/IGdldG9w
dCByZXR1cm5lZCBjaGFyYWN0ZXIgY29kZSAwJW8gPz9cbiIsIGMpOworICsgCX0KKyArICAgICB9
CisgKyAKKyArICAgaWYgKG9wdGluZCA8IGFyZ2MpCisgKyAgICAgeworICsgICAgICAgcHJpbnRm
ICgibm9uLW9wdGlvbiBBUkdWLWVsZW1lbnRzOiAiKTsKKyArICAgICAgIHdoaWxlIChvcHRpbmQg
PCBhcmdjKQorICsgCXByaW50ZiAoIiVzICIsIGFyZ3Zbb3B0aW5kKytdKTsKKyArICAgICAgIHBy
aW50ZiAoIlxuIik7CisgKyAgICAgfQorICsgCisgKyAgIGV4aXQgKDApOworICsgfQorICsgCisg
KyAjZW5kaWYgLyogVEVTVCAqLwpkaWZmIC1jIC1yIC1QIG5ldGhhY2szLWdub21lLm9yaWcvZmls
ZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0LmggbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gt
d2luOjpnbm9tZTo6Z2V0b3B0LmgKKioqIG5ldGhhY2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gt
d2luOjpnbm9tZTo6Z2V0b3B0LmgJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwCi0tLSBuZXRoYWNr
My1nbm9tZS9maWxlcy9wYXRjaC13aW46Omdub21lOjpnZXRvcHQuaAlTYXQgTWFyIDMwIDIwOjM1
OjI1IDIwMDIKKioqKioqKioqKioqKioqCioqKiAwICoqKioKLS0tIDEsMTM0IC0tLS0KKyAqKiog
L2Rldi9udWxsCVNhdCBNYXIgMzAgMjA6Mjc6NTIgMjAwMgorIC0tLSB3aW4vZ25vbWUvZ2V0b3B0
LmgJU2F0IE1hciAzMCAyMDoyNzoxNyAyMDAyCisgKioqKioqKioqKioqKioqCisgKioqIDAgKioq
KgorIC0tLSAxLDEyOSAtLS0tCisgKyAvKiBEZWNsYXJhdGlvbnMgZm9yIGdldG9wdC4KKyArICAg
IENvcHlyaWdodCAoQykgMTk4OSwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MyBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4KKyArIAorICsgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyArICAgIHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZQorICsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorICsgICAgbGF0ZXIgdmVyc2lvbi4KKyArIAorICsg
ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICsgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICsgICAgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyArIAorICsgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyArICAg
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKyAgICBGb3VuZGF0aW9uLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzks
IFVTQS4gICovCisgKyAKKyArICNpZm5kZWYgX0dFVE9QVF9ICisgKyAjZGVmaW5lIF9HRVRPUFRf
SCAxCisgKyAKKyArICNpZmRlZglfX2NwbHVzcGx1cworICsgZXh0ZXJuICJDIiB7CisgKyAjZW5k
aWYKKyArIAorICsgLyogRm9yIGNvbW11bmljYXRpb24gZnJvbSBgZ2V0b3B0JyB0byB0aGUgY2Fs
bGVyLgorICsgICAgV2hlbiBgZ2V0b3B0JyBmaW5kcyBhbiBvcHRpb24gdGhhdCB0YWtlcyBhbiBh
cmd1bWVudCwKKyArICAgIHRoZSBhcmd1bWVudCB2YWx1ZSBpcyByZXR1cm5lZCBoZXJlLgorICsg
ICAgQWxzbywgd2hlbiBgb3JkZXJpbmcnIGlzIFJFVFVSTl9JTl9PUkRFUiwKKyArICAgIGVhY2gg
bm9uLW9wdGlvbiBBUkdWLWVsZW1lbnQgaXMgcmV0dXJuZWQgaGVyZS4gICovCisgKyAKKyArIGV4
dGVybiBjaGFyICpvcHRhcmc7CisgKyAKKyArIC8qIEluZGV4IGluIEFSR1Ygb2YgdGhlIG5leHQg
ZWxlbWVudCB0byBiZSBzY2FubmVkLgorICsgICAgVGhpcyBpcyB1c2VkIGZvciBjb21tdW5pY2F0
aW9uIHRvIGFuZCBmcm9tIHRoZSBjYWxsZXIKKyArICAgIGFuZCBmb3IgY29tbXVuaWNhdGlvbiBi
ZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gYGdldG9wdCcuCisgKyAKKyArICAgIE9uIGVudHJ5
IHRvIGBnZXRvcHQnLCB6ZXJvIG1lYW5zIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGw7IGluaXRpYWxp
emUuCisgKyAKKyArICAgIFdoZW4gYGdldG9wdCcgcmV0dXJucyBFT0YsIHRoaXMgaXMgdGhlIGlu
ZGV4IG9mIHRoZSBmaXJzdCBvZiB0aGUKKyArICAgIG5vbi1vcHRpb24gZWxlbWVudHMgdGhhdCB0
aGUgY2FsbGVyIHNob3VsZCBpdHNlbGYgc2Nhbi4KKyArIAorICsgICAgT3RoZXJ3aXNlLCBgb3B0
aW5kJyBjb21tdW5pY2F0ZXMgZnJvbSBvbmUgY2FsbCB0byB0aGUgbmV4dAorICsgICAgaG93IG11
Y2ggb2YgQVJHViBoYXMgYmVlbiBzY2FubmVkIHNvIGZhci4gICovCisgKyAKKyArIGV4dGVybiBp
bnQgb3B0aW5kOworICsgCisgKyAvKiBDYWxsZXJzIHN0b3JlIHplcm8gaGVyZSB0byBpbmhpYml0
IHRoZSBlcnJvciBtZXNzYWdlIGBnZXRvcHQnIHByaW50cworICsgICAgZm9yIHVucmVjb2duaXpl
ZCBvcHRpb25zLiAgKi8KKyArIAorICsgZXh0ZXJuIGludCBvcHRlcnI7CisgKyAKKyArIC8qIFNl
dCB0byBhbiBvcHRpb24gY2hhcmFjdGVyIHdoaWNoIHdhcyB1bnJlY29nbml6ZWQuICAqLworICsg
CisgKyBleHRlcm4gaW50IG9wdG9wdDsKKyArIAorICsgLyogRGVzY3JpYmUgdGhlIGxvbmctbmFt
ZWQgb3B0aW9ucyByZXF1ZXN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICsgICAgVGhlIExPTkdf
T1BUSU9OUyBhcmd1bWVudCB0byBnZXRvcHRfbG9uZyBvciBnZXRvcHRfbG9uZ19vbmx5IGlzIGEg
dmVjdG9yCisgKyAgICBvZiBgc3RydWN0IG9wdGlvbicgdGVybWluYXRlZCBieSBhbiBlbGVtZW50
IGNvbnRhaW5pbmcgYSBuYW1lIHdoaWNoIGlzCisgKyAgICB6ZXJvLgorICsgCisgKyAgICBUaGUg
ZmllbGQgYGhhc19hcmcnIGlzOgorICsgICAgbm9fYXJndW1lbnQJCShvciAwKSBpZiB0aGUgb3B0
aW9uIGRvZXMgbm90IHRha2UgYW4gYXJndW1lbnQsCisgKyAgICByZXF1aXJlZF9hcmd1bWVudAko
b3IgMSkgaWYgdGhlIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCwKKyArICAgIG9wdGlvbmFs
X2FyZ3VtZW50IAkob3IgMikgaWYgdGhlIG9wdGlvbiB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVu
dC4KKyArIAorICsgICAgSWYgdGhlIGZpZWxkIGBmbGFnJyBpcyBub3QgTlVMTCwgaXQgcG9pbnRz
IHRvIGEgdmFyaWFibGUgdGhhdCBpcyBzZXQKKyArICAgIHRvIHRoZSB2YWx1ZSBnaXZlbiBpbiB0
aGUgZmllbGQgYHZhbCcgd2hlbiB0aGUgb3B0aW9uIGlzIGZvdW5kLCBidXQKKyArICAgIGxlZnQg
dW5jaGFuZ2VkIGlmIHRoZSBvcHRpb24gaXMgbm90IGZvdW5kLgorICsgCisgKyAgICBUbyBoYXZl
IGEgbG9uZy1uYW1lZCBvcHRpb24gZG8gc29tZXRoaW5nIG90aGVyIHRoYW4gc2V0IGFuIGBpbnQn
IHRvCisgKyAgICBhIGNvbXBpbGVkLWluIGNvbnN0YW50LCBzdWNoIGFzIHNldCBhIHZhbHVlIGZy
b20gYG9wdGFyZycsIHNldCB0aGUKKyArICAgIG9wdGlvbidzIGBmbGFnJyBmaWVsZCB0byB6ZXJv
IGFuZCBpdHMgYHZhbCcgZmllbGQgdG8gYSBub256ZXJvCisgKyAgICB2YWx1ZSAodGhlIGVxdWl2
YWxlbnQgc2luZ2xlLWxldHRlciBvcHRpb24gY2hhcmFjdGVyLCBpZiB0aGVyZSBpcworICsgICAg
b25lKS4gIEZvciBsb25nIG9wdGlvbnMgdGhhdCBoYXZlIGEgemVybyBgZmxhZycgZmllbGQsIGBn
ZXRvcHQnCisgKyAgICByZXR1cm5zIHRoZSBjb250ZW50cyBvZiB0aGUgYHZhbCcgZmllbGQuICAq
LworICsgCisgKyBzdHJ1Y3Qgb3B0aW9uCisgKyB7CisgKyAjaWYJX19TVERDX18KKyArICAgY29u
c3QgY2hhciAqbmFtZTsKKyArICNlbHNlCisgKyAgIGNoYXIgKm5hbWU7CisgKyAjZW5kaWYKKyAr
ICAgLyogaGFzX2FyZyBjYW4ndCBiZSBhbiBlbnVtIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgY29t
cGxhaW4gYWJvdXQKKyArICAgICAgdHlwZSBtaXNtYXRjaGVzIGluIGFsbCB0aGUgY29kZSB0aGF0
IGFzc3VtZXMgaXQgaXMgYW4gaW50LiAgKi8KKyArICAgaW50IGhhc19hcmc7CisgKyAgIGludCAq
ZmxhZzsKKyArICAgaW50IHZhbDsKKyArIH07CisgKyAKKyArIC8qIE5hbWVzIGZvciB0aGUgdmFs
dWVzIG9mIHRoZSBgaGFzX2FyZycgZmllbGQgb2YgYHN0cnVjdCBvcHRpb24nLiAgKi8KKyArIAor
ICsgI2RlZmluZQlub19hcmd1bWVudAkJMAorICsgI2RlZmluZSByZXF1aXJlZF9hcmd1bWVudAkx
CisgKyAjZGVmaW5lIG9wdGlvbmFsX2FyZ3VtZW50CTIKKyArIAorICsgI2lmIF9fU1REQ19fCisg
KyAjaWYgZGVmaW5lZChfX0dOVV9MSUJSQVJZX18pCisgKyAvKiBNYW55IG90aGVyIGxpYnJhcmll
cyBoYXZlIGNvbmZsaWN0aW5nIHByb3RvdHlwZXMgZm9yIGdldG9wdCwgd2l0aAorICsgICAgZGlm
ZmVyZW5jZXMgaW4gdGhlIGNvbnN0cywgaW4gc3RkbGliLmguICBUbyBhdm9pZCBjb21waWxhdGlv
bgorICsgICAgZXJyb3JzLCBvbmx5IHByb3RvdHlwZSBnZXRvcHQgZm9yIHRoZSBHTlUgQyBsaWJy
YXJ5LiAgKi8KKyArIGV4dGVybiBpbnQgZ2V0b3B0IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFy
Z3YsIGNvbnN0IGNoYXIgKnNob3J0b3B0cyk7CisgKyAjZWxzZSAvKiBub3QgX19HTlVfTElCUkFS
WV9fICovCisgKyBleHRlcm4gaW50IGdldG9wdCAoKTsKKyArICNlbmRpZiAvKiBub3QgX19HTlVf
TElCUkFSWV9fICovCisgKyBleHRlcm4gaW50IGdldG9wdF9sb25nIChpbnQgYXJnYywgY2hhciAq
Y29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKKyArIAkJICAgICAgICBjb25zdCBz
dHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKKyArIGV4dGVybiBpbnQgZ2V0
b3B0X2xvbmdfb25seSAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LAorICsgCQkJICAgICBj
b25zdCBjaGFyICpzaG9ydG9wdHMsCisgKyAJCSAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0
aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKKyArIAorICsgLyogSW50ZXJuYWwgb25seS4g
IFVzZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGRpcmVjdGx5LiAgKi8KKyArIGV4dGVybiBpbnQg
X2dldG9wdF9pbnRlcm5hbCAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2LAorICsgCQkJICAg
ICBjb25zdCBjaGFyICpzaG9ydG9wdHMsCisgKyAJCSAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg
b3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kLAorICsgCQkJICAgICBpbnQgbG9uZ19vbmx5
KTsKKyArICNlbHNlIC8qIG5vdCBfX1NURENfXyAqLworICsgZXh0ZXJuIGludCBnZXRvcHQgKCk7
CisgKyBleHRlcm4gaW50IGdldG9wdF9sb25nICgpOworICsgZXh0ZXJuIGludCBnZXRvcHRfbG9u
Z19vbmx5ICgpOworICsgCisgKyBleHRlcm4gaW50IF9nZXRvcHRfaW50ZXJuYWwgKCk7CisgKyAj
ZW5kaWYgLyogbm90IF9fU1REQ19fICovCisgKyAKKyArICNpZmRlZglfX2NwbHVzcGx1cworICsg
fQorICsgI2VuZGlmCisgKyAKKyArICNlbmRpZiAvKiBfR0VUT1BUX0ggKi8KZGlmZiAtYyAtciAt
UCBuZXRoYWNrMy1nbm9tZS5vcmlnL2ZpbGVzL3BhdGNoLXdpbjo6Z25vbWU6OmdldG9wdDEuYyBu
ZXRoYWNrMy1nbm9tZS9maWxlcy9wYXRjaC13aW46Omdub21lOjpnZXRvcHQxLmMKKioqIG5ldGhh
Y2szLWdub21lLm9yaWcvZmlsZXMvcGF0Y2gtd2luOjpnbm9tZTo6Z2V0b3B0MS5jCVRodSBKYW4g
IDEgMDE6MDA6MDAgMTk3MAotLS0gbmV0aGFjazMtZ25vbWUvZmlsZXMvcGF0Y2gtd2luOjpnbm9t
ZTo6Z2V0b3B0MS5jCVNhdCBNYXIgMzAgMjE6MjM6MTcgMjAwMgoqKioqKioqKioqKioqKioKKioq
IDAgKioqKgotLS0gMSwxODUgLS0tLQorICoqKiAvZGV2L251bGwJU2F0IE1hciAzMCAyMToyMjow
MCAyMDAyCisgLS0tIHdpbi9nbm9tZS9nZXRvcHQxLmMJU2F0IE1hciAzMCAyMToyMTo1OSAyMDAy
CisgKioqKioqKioqKioqKioqCisgKioqIDAgKioqKgorIC0tLSAxLDE4MCAtLS0tCisgKyAvKiBn
ZXRvcHRfbG9uZyBhbmQgZ2V0b3B0X2xvbmdfb25seSBlbnRyeSBwb2ludHMgZm9yIEdOVSBnZXRv
cHQuCisgKyAgICBDb3B5cmlnaHQgKEMpIDE5ODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgMTk5Mwor
ICsgCUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICsgCisgKyAgICBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm
eSBpdAorICsgICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisgKyAgICBsYXRlciB2
ZXJzaW9uLgorICsgCisgKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyArICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKyAg
ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICsgCisgKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICsgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyArICAgIEZvdW5kYXRpb24sIDY3NSBNYXNzIEF2ZSwgQ2Ft
YnJpZGdlLCBNQSAwMjEzOSwgVVNBLiAgKi8KKyArIAwKKyArICNpZmRlZiBIQVZFX0NPTkZJR19I
CisgKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgKyAjZW5kaWYKKyArIAorICsgI2luY2x1ZGUgImdl
dG9wdC5oIgorICsgCisgKyAjaWZuZGVmIF9fU1REQ19fCisgKyAvKiBUaGlzIGlzIGEgc2VwYXJh
dGUgY29uZGl0aW9uYWwgc2luY2Ugc29tZSBzdGRjIHN5c3RlbXMKKyArICAgIHJlamVjdCBgZGVm
aW5lZCAoY29uc3QpJy4gICovCisgKyAjaWZuZGVmIGNvbnN0CisgKyAjZGVmaW5lIGNvbnN0Cisg
KyAjZW5kaWYKKyArICNlbmRpZgorICsgCisgKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyArIAorICsg
LyogQ29tbWVudCBvdXQgYWxsIHRoaXMgY29kZSBpZiB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIExp
YnJhcnksIGFuZCBhcmUgbm90CisgKyAgICBhY3R1YWxseSBjb21waWxpbmcgdGhlIGxpYnJhcnkg
aXRzZWxmLiAgVGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIEdOVSBDCisgKyAgICBMaWJyYXJ5LCBi
dXQgYWxzbyBpbmNsdWRlZCBpbiBtYW55IG90aGVyIEdOVSBkaXN0cmlidXRpb25zLiAgQ29tcGls
aW5nCisgKyAgICBhbmQgbGlua2luZyBpbiB0aGlzIGNvZGUgaXMgYSB3YXN0ZSB3aGVuIHVzaW5n
IHRoZSBHTlUgQyBsaWJyYXJ5CisgKyAgICAoZXNwZWNpYWxseSBpZiBpdCBpcyBhIHNoYXJlZCBs
aWJyYXJ5KS4gIFJhdGhlciB0aGFuIGhhdmluZyBldmVyeSBHTlUKKyArICAgIHByb2dyYW0gdW5k
ZXJzdGFuZCBgY29uZmlndXJlIC0td2l0aC1nbnUtbGliYycgYW5kIG9taXQgdGhlIG9iamVjdCBm
aWxlcywKKyArICAgIGl0IGlzIHNpbXBsZXIgdG8ganVzdCBkbyB0aGlzIGluIHRoZSBzb3VyY2Ug
Zm9yIGVhY2ggc3VjaCBmaWxlLiAgKi8KKyArIAorICsgI2lmIGRlZmluZWQgKF9MSUJDKSB8fCAh
ZGVmaW5lZCAoX19HTlVfTElCUkFSWV9fKQorICsgCisgKyAKKyArIC8qIFRoaXMgbmVlZHMgdG8g
Y29tZSBhZnRlciBzb21lIGxpYnJhcnkgI2luY2x1ZGUKKyArICAgIHRvIGdldCBfX0dOVV9MSUJS
QVJZX18gZGVmaW5lZC4gICovCisgKyAjaWZkZWYgX19HTlVfTElCUkFSWV9fCisgKyAjaW5jbHVk
ZSA8c3RkbGliLmg+CisgKyAjZWxzZQorICsgY2hhciAqZ2V0ZW52ICgpOworICsgI2VuZGlmCisg
KyAKKyArICNpZm5kZWYJTlVMTAorICsgI2RlZmluZSBOVUxMIDAKKyArICNlbmRpZgorICsgCisg
KyBpbnQKKyArIGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCBvcHRpb25zLCBsb25nX29wdGlvbnMs
IG9wdF9pbmRleCkKKyArICAgICAgaW50IGFyZ2M7CisgKyAgICAgIGNoYXIgKmNvbnN0ICphcmd2
OworICsgICAgICBjb25zdCBjaGFyICpvcHRpb25zOworICsgICAgICBjb25zdCBzdHJ1Y3Qgb3B0
aW9uICpsb25nX29wdGlvbnM7CisgKyAgICAgIGludCAqb3B0X2luZGV4OworICsgeworICsgICBy
ZXR1cm4gX2dldG9wdF9pbnRlcm5hbCAoYXJnYywgYXJndiwgb3B0aW9ucywgbG9uZ19vcHRpb25z
LCBvcHRfaW5kZXgsIDApOworICsgfQorICsgCisgKyAvKiBMaWtlIGdldG9wdF9sb25nLCBidXQg
Jy0nIGFzIHdlbGwgYXMgJy0tJyBjYW4gaW5kaWNhdGUgYSBsb25nIG9wdGlvbi4KKyArICAgIElm
IGFuIG9wdGlvbiB0aGF0IHN0YXJ0cyB3aXRoICctJyAobm90ICctLScpIGRvZXNuJ3QgbWF0Y2gg
YSBsb25nIG9wdGlvbiwKKyArICAgIGJ1dCBkb2VzIG1hdGNoIGEgc2hvcnQgb3B0aW9uLCBpdCBp
cyBwYXJzZWQgYXMgYSBzaG9ydCBvcHRpb24KKyArICAgIGluc3RlYWQuICAqLworICsgCisgKyBp
bnQKKyArIGdldG9wdF9sb25nX29ubHkgKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGxvbmdfb3B0aW9u
cywgb3B0X2luZGV4KQorICsgICAgICBpbnQgYXJnYzsKKyArICAgICAgY2hhciAqY29uc3QgKmFy
Z3Y7CisgKyAgICAgIGNvbnN0IGNoYXIgKm9wdGlvbnM7CisgKyAgICAgIGNvbnN0IHN0cnVjdCBv
cHRpb24gKmxvbmdfb3B0aW9uczsKKyArICAgICAgaW50ICpvcHRfaW5kZXg7CisgKyB7CisgKyAg
IHJldHVybiBfZ2V0b3B0X2ludGVybmFsIChhcmdjLCBhcmd2LCBvcHRpb25zLCBsb25nX29wdGlv
bnMsIG9wdF9pbmRleCwgMSk7CisgKyB9CisgKyAKKyArIAorICsgI2VuZGlmCS8qIF9MSUJDIG9y
IG5vdCBfX0dOVV9MSUJSQVJZX18uICAqLworICsgDAorICsgI2lmZGVmIFRFU1QKKyArIAorICsg
I2luY2x1ZGUgPHN0ZGlvLmg+CisgKyAKKyArIGludAorICsgbWFpbiAoYXJnYywgYXJndikKKyAr
ICAgICAgaW50IGFyZ2M7CisgKyAgICAgIGNoYXIgKiphcmd2OworICsgeworICsgICBpbnQgYzsK
KyArICAgaW50IGRpZ2l0X29wdGluZCA9IDA7CisgKyAKKyArICAgd2hpbGUgKDEpCisgKyAgICAg
eworICsgICAgICAgaW50IHRoaXNfb3B0aW9uX29wdGluZCA9IG9wdGluZCA/IG9wdGluZCA6IDE7
CisgKyAgICAgICBpbnQgb3B0aW9uX2luZGV4ID0gMDsKKyArICAgICAgIHN0YXRpYyBzdHJ1Y3Qg
b3B0aW9uIGxvbmdfb3B0aW9uc1tdID0KKyArICAgICAgIHsKKyArIAl7ImFkZCIsIDEsIDAsIDB9
LAorICsgCXsiYXBwZW5kIiwgMCwgMCwgMH0sCisgKyAJeyJkZWxldGUiLCAxLCAwLCAwfSwKKyAr
IAl7InZlcmJvc2UiLCAwLCAwLCAwfSwKKyArIAl7ImNyZWF0ZSIsIDAsIDAsIDB9LAorICsgCXsi
ZmlsZSIsIDEsIDAsIDB9LAorICsgCXswLCAwLCAwLCAwfQorICsgICAgICAgfTsKKyArIAorICsg
ICAgICAgYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiYWJjOmQ6MDEyMzQ1Njc4OSIsCisg
KyAJCSAgICAgICBsb25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpOworICsgICAgICAgaWYgKGMg
PT0gRU9GKQorICsgCWJyZWFrOworICsgCisgKyAgICAgICBzd2l0Y2ggKGMpCisgKyAJeworICsg
CWNhc2UgMDoKKyArIAkgIHByaW50ZiAoIm9wdGlvbiAlcyIsIGxvbmdfb3B0aW9uc1tvcHRpb25f
aW5kZXhdLm5hbWUpOworICsgCSAgaWYgKG9wdGFyZykKKyArIAkgICAgcHJpbnRmICgiIHdpdGgg
YXJnICVzIiwgb3B0YXJnKTsKKyArIAkgIHByaW50ZiAoIlxuIik7CisgKyAJICBicmVhazsKKyAr
IAorICsgCWNhc2UgJzAnOgorICsgCWNhc2UgJzEnOgorICsgCWNhc2UgJzInOgorICsgCWNhc2Ug
JzMnOgorICsgCWNhc2UgJzQnOgorICsgCWNhc2UgJzUnOgorICsgCWNhc2UgJzYnOgorICsgCWNh
c2UgJzcnOgorICsgCWNhc2UgJzgnOgorICsgCWNhc2UgJzknOgorICsgCSAgaWYgKGRpZ2l0X29w
dGluZCAhPSAwICYmIGRpZ2l0X29wdGluZCAhPSB0aGlzX29wdGlvbl9vcHRpbmQpCisgKyAJICAg
IHByaW50ZiAoImRpZ2l0cyBvY2N1ciBpbiB0d28gZGlmZmVyZW50IGFyZ3YtZWxlbWVudHMuXG4i
KTsKKyArIAkgIGRpZ2l0X29wdGluZCA9IHRoaXNfb3B0aW9uX29wdGluZDsKKyArIAkgIHByaW50
ZiAoIm9wdGlvbiAlY1xuIiwgYyk7CisgKyAJICBicmVhazsKKyArIAorICsgCWNhc2UgJ2EnOgor
ICsgCSAgcHJpbnRmICgib3B0aW9uIGFcbiIpOworICsgCSAgYnJlYWs7CisgKyAKKyArIAljYXNl
ICdiJzoKKyArIAkgIHByaW50ZiAoIm9wdGlvbiBiXG4iKTsKKyArIAkgIGJyZWFrOworICsgCisg
KyAJY2FzZSAnYyc6CisgKyAJICBwcmludGYgKCJvcHRpb24gYyB3aXRoIHZhbHVlIGAlcydcbiIs
IG9wdGFyZyk7CisgKyAJICBicmVhazsKKyArIAorICsgCWNhc2UgJ2QnOgorICsgCSAgcHJpbnRm
ICgib3B0aW9uIGQgd2l0aCB2YWx1ZSBgJXMnXG4iLCBvcHRhcmcpOworICsgCSAgYnJlYWs7Cisg
KyAKKyArIAljYXNlICc/JzoKKyArIAkgIGJyZWFrOworICsgCisgKyAJZGVmYXVsdDoKKyArIAkg
IHByaW50ZiAoIj8/IGdldG9wdCByZXR1cm5lZCBjaGFyYWN0ZXIgY29kZSAwJW8gPz9cbiIsIGMp
OworICsgCX0KKyArICAgICB9CisgKyAKKyArICAgaWYgKG9wdGluZCA8IGFyZ2MpCisgKyAgICAg
eworICsgICAgICAgcHJpbnRmICgibm9uLW9wdGlvbiBBUkdWLWVsZW1lbnRzOiAiKTsKKyArICAg
ICAgIHdoaWxlIChvcHRpbmQgPCBhcmdjKQorICsgCXByaW50ZiAoIiVzICIsIGFyZ3Zbb3B0aW5k
KytdKTsKKyArICAgICAgIHByaW50ZiAoIlxuIik7CisgKyAgICAgfQorICsgCisgKyAgIGV4aXQg
KDApOworICsgfQorICsgCisgKyAjZW5kaWYgLyogVEVTVCAqLwpkaWZmIC1jIC1yIC1QIG5ldGhh
Y2szLWdub21lLm9yaWcvcGtnLWRlc2NyIG5ldGhhY2szLWdub21lL3BrZy1kZXNjcgoqKiogbmV0
aGFjazMtZ25vbWUub3JpZy9wa2ctZGVzY3IJV2VkIERlYyAxMiAwNToyNDowMSAyMDAxCi0tLSBu
ZXRoYWNrMy1nbm9tZS9wa2ctZGVzY3IJU3VuIE1hciAzMSAxNTowMzoyOCAyMDAyCioqKioqKioq
KioqKioqKgoqKiogMSw0ICoqKioKISBUaGlzIGlzIHZlcnNpb24gMy4zLjEgb2YgbmV0aGFjaywg
YSBjbGFzaWMgQVNDSUktYmFzZWQgYWR2ZW50dXJlIGdhbWUKICB3aXRoIGdyYXBoaWNzIHN1cHBv
cnQgZm9yIEdub21lLgogIFlvdSBhbmQgeW91ciBmYWl0aGZ1bCBwZXQgYXJlIG9uIGEgcXVlc3Qg
dG8gcmV0cmlldmUgdGhlIGxvc3QgQW11bGV0CiAgb2YgWWVuZG9yLgotLS0gMSw0IC0tLS0KISBU
aGlzIGlzIHZlcnNpb24gMy40LjAgb2YgbmV0aGFjaywgYSBjbGFzc2ljIEFTQ0lJLWJhc2VkIGFk
dmVudHVyZSBnYW1lCiAgd2l0aCBncmFwaGljcyBzdXBwb3J0IGZvciBHbm9tZS4KICBZb3UgYW5k
IHlvdXIgZmFpdGhmdWwgcGV0IGFyZSBvbiBhIHF1ZXN0IHRvIHJldHJpZXZlIHRoZSBsb3N0IEFt
dWxldAogIG9mIFllbmRvci4KZGlmZiAtYyAtciAtUCBuZXRoYWNrMy1nbm9tZS5vcmlnL3BrZy1w
bGlzdCBuZXRoYWNrMy1nbm9tZS9wa2ctcGxpc3QKKioqIG5ldGhhY2szLWdub21lLm9yaWcvcGtn
LXBsaXN0CVRodSBEZWMgMjcgMTI6MzA6MDkgMjAwMQotLS0gbmV0aGFjazMtZ25vbWUvcGtnLXBs
aXN0CVN1biBNYXIgMzEgMTQ6NDc6NTYgMjAwMgoqKioqKioqKioqKioqKioKKioqIDEwNSwxMTIg
KioqKgotLS0gMTA1LDExOCAtLS0tCiAgc2hhcmUvbmV0aGFjay9taW5lZmlsbC5sZXYKICBzaGFy
ZS9uZXRoYWNrL21pbmVuZC0xLmxldgogIHNoYXJlL25ldGhhY2svbWluZW5kLTIubGV2Cisgc2hh
cmUvbmV0aGFjay9taW5lbmQtMy5sZXYKICBzaGFyZS9uZXRoYWNrL21pbmV0bi0xLmxldgogIHNo
YXJlL25ldGhhY2svbWluZXRuLTIubGV2Cisgc2hhcmUvbmV0aGFjay9taW5ldG4tMy5sZXYKKyBz
aGFyZS9uZXRoYWNrL21pbmV0bi00LmxldgorIHNoYXJlL25ldGhhY2svbWluZXRuLTUubGV2Cisg
c2hhcmUvbmV0aGFjay9taW5ldG4tNi5sZXYKKyBzaGFyZS9uZXRoYWNrL21pbmV0bi03Lmxldgog
IHNoYXJlL25ldGhhY2svb3B0aGVscAogIHNoYXJlL25ldGhhY2svb3B0aW9ucwogIHNoYXJlL25l
dGhhY2svb3JhY2xlLmxldgo=

------=_NextPart_000_0001_01C1DCC1.677E16C0--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000001c1dcb0$a3f546c0$fe02010a>