Re: [ANNOUNCE] kernelconf-0.1.2

Christian Koenig ("ChristianK."@t-online.de)
Tue, 5 Feb 2002 21:01:17 +0100


--------------Boundary-00=_5YS2R4BJFA47RJAVYCX0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Hi,

The atachmend is a little beta/patch to your kernelconf.
It adds xconfig capability to kernelconf, by using Tcl/Tk scripts.
It's still a little bit beta, but the main parts like config file
loading/storing, menu-deps ... are implemented.

The main disatvantage for the moment: it doesn't looks like the original
xconfig, but i'm working on it.

MfG,Christian Koenig (and sorry for my poor english)

--------------Boundary-00=_5YS2R4BJFA47RJAVYCX0
Content-Type: text/x-diff;
charset="iso-8859-1";
name="kernelconf-xconfig.diff"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="kernelconf-xconfig.diff"

ZGlmZiAtdU5yYiBrZXJuZWxjb25mLTAuMS4yL2NvbmYvZGVwcy5kIGtlcm5lbGNvbmYtMC4xLjIu
bmV3L2NvbmYvZGVwcy5kCi0tLSBrZXJuZWxjb25mLTAuMS4yL2NvbmYvZGVwcy5kCVRodSBKYW4g
IDEgMDE6MDA6MDAgMTk3MAorKysga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi9kZXBzLmQJVHVl
IEZlYiAgNSAyMDo0OTowNCAyMDAyCkBAIC0wLDAgKzEsMTYgQEAKK2RlcHMubzogZGVwcy5jIC91
c3IvaW5jbHVkZS9jdHlwZS5oIC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIFwKKyAvdXNyL2luY2x1
ZGUvc3lzL2NkZWZzLmggL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIFwKKyAvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIFwKKyAvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1
ZGUvc3RkZGVmLmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIC91c3IvaW5j
bHVkZS9iaXRzL3NjaGVkLmggXAorIC91c3IvaW5jbHVkZS9lbmRpYW4uaCAvdXNyL2luY2x1ZGUv
Yml0cy9lbmRpYW4uaCBcCisgL3Vzci9pbmNsdWRlL21hbGxvYy5oIC91c3IvaW5jbHVkZS9zdGRp
by5oIC91c3IvaW5jbHVkZS9saWJpby5oIFwKKyAvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmggL3Vz
ci9pbmNsdWRlL3djaGFyLmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmggL3Vzci9pbmNs
dWRlL2djb252LmggXAorIC91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVk
ZS9zdGRhcmcuaCBcCisgL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmggL3Vzci9pbmNsdWRl
L3N0cmluZy5oIFwKKyAvdXNyL2luY2x1ZGUvc3RkbGliLmggL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIC91c3IvaW5jbHVkZS90aW1lLmggXAorIC91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmggL3Vz
ci9pbmNsdWRlL2JpdHMvc2VsZWN0LmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIC91
c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCBcCisgL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCAv
dXNyL2luY2x1ZGUvYWxsb2NhLmgga2VybmVsY29uZi5oIFwKKyBleHByZXNzaW9ucy5oIHV0aWxz
LmggdHJlZS5oCkJpbmFyeSBmaWxlcyBrZXJuZWxjb25mLTAuMS4yL2NvbmYvZGVwcy5vIGFuZCBr
ZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL2RlcHMubyBkaWZmZXIKZGlmZiAtdU5yYiBrZXJuZWxj
b25mLTAuMS4yL2NvbmYvZXhwcmVzc2lvbnMuYyBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL2V4
cHJlc3Npb25zLmMKLS0tIGtlcm5lbGNvbmYtMC4xLjIvY29uZi9leHByZXNzaW9ucy5jCVRodSBK
YW4gMjQgMDU6Mjc6MDggMjAwMgorKysga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi9leHByZXNz
aW9ucy5jCVN1biBGZWIgIDMgMTk6MDE6NDUgMjAwMgpAQCAtODM2LDYgKzgzNiwxMjIgQEAKICAg
ICByZXR1cm4gdG1wOwogfQogCit2b2lkIGZwcmludGZfdmFsdWUydGsoRklMRSAqdGNsZiwgVHlw
ZSB0eXBlLCBWYWx1ZSB2YWx1ZSkKK3sKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIFRZUEVfVFJJ
OgorLy8JY2FzZSBUWVBFX01PRFVMRToKKwljYXNlIFRZUEVfQk9PTDoKKwljYXNlIFRZUEVfT1BU
SU9OOgorCQlmcHJpbnRmKHRjbGYsIiVjIix2YWx1ZS5jaGFyX3ZhbCk7IGJyZWFrOworCWNhc2Ug
VFlQRV9JTlQ6CisJY2FzZSBUWVBFX0hFWDoKKwljYXNlIFRZUEVfQ0hBUjoKKwkJZnByaW50Zih0
Y2xmLCIlZCIsdmFsdWUuaW50X3ZhbCk7CWJyZWFrOworCWNhc2UgVFlQRV9TWU1CT0w6CisJCWZw
cmludGYodGNsZiwiQ09ORklHXyVzIix2YWx1ZS5pZF92YWwtPm5hbWUpOwlicmVhazsKKwljYXNl
IFRZUEVfU1RSOgorCWNhc2UgVFlQRV9WQUxVRToKKwkJZnByaW50Zih0Y2xmLCIlcyIsdmFsdWUu
c3RyX3ZhbCk7IGJyZWFrOworCWRlZmF1bHQ6CisJCWZwcmludGYodGNsZiwiJWQgJWQgdGVzdDEi
LFRZUEVfQ0hBUix0eXBlKTsKKwkJYnJlYWs7CisJfQorfQorCit2b2lkIHRjbF9wb3AoRklMRSAq
dGNsZiwgVG9rZW5QdHIgKnN0YWNrKQoreworCVRva2VuUHRyIHRva2VuOworCisJdG9rZW4gPSBw
b3Aoc3RhY2spOworCWlmKHRva2VuLT50eXBlICE9IFRZUEVfVkFMVUUgKQorCQlmcHJpbnRmKHRj
bGYsIiBbICIpOworCisKKwlzd2l0Y2ggKHRva2VuLT50eXBlKSB7CisJY2FzZSBUWVBFX09SOgor
CQlmcHJpbnRmKHRjbGYsInN5bV9vciIpOworCQl0Y2xfcG9wKHRjbGYsc3RhY2spOworCQl0Y2xf
cG9wKHRjbGYsc3RhY2spOworCQlicmVhazsKKwljYXNlIFRZUEVfQU5EOgorCQlmcHJpbnRmKHRj
bGYsInN5bV9hbmQiKTsKKwkJdGNsX3BvcCh0Y2xmLHN0YWNrKTsKKwkJdGNsX3BvcCh0Y2xmLHN0
YWNrKTsKKwkJYnJlYWs7CisJY2FzZSBUWVBFX0VRVUFMOgorCQlmcHJpbnRmKHRjbGYsInN5bV9l
cXVhbCIpOworCQl0Y2xfcG9wKHRjbGYsc3RhY2spOworCQl0Y2xfcG9wKHRjbGYsc3RhY2spOwor
CQlicmVhazsKKwljYXNlIFRZUEVfTk9UX0VRVUFMOgorCQlmcHJpbnRmKHRjbGYsInN5bV9ub3Rf
ZXF1YWwiKTsKKwkJdGNsX3BvcCh0Y2xmLHN0YWNrKTsKKwkJdGNsX3BvcCh0Y2xmLHN0YWNrKTsK
KwkJYnJlYWs7CisJY2FzZSBUWVBFX0xUOgorCQlmcHJpbnRmKHRjbGYsInN5bV9sdCIpOworCQl0
Y2xfcG9wKHRjbGYsc3RhY2spOworCQl0Y2xfcG9wKHRjbGYsc3RhY2spOworCQlicmVhazsKKwlj
YXNlIFRZUEVfR1Q6CisJCWZwcmludGYodGNsZiwic3ltX2d0Iik7CisJCXRjbF9wb3AodGNsZixz
dGFjayk7CisJCXRjbF9wb3AodGNsZixzdGFjayk7CisJCWJyZWFrOworCWNhc2UgVFlQRV9MVEU6
CisJCWZwcmludGYodGNsZiwic3ltX2x0ZSIpOworCQl0Y2xfcG9wKHRjbGYsc3RhY2spOworCQl0
Y2xfcG9wKHRjbGYsc3RhY2spOworCQlicmVhazsKKwljYXNlIFRZUEVfR1RFOgorCQlmcHJpbnRm
KHRjbGYsInN5bV9ndGUiKTsKKwkJdGNsX3BvcCh0Y2xmLHN0YWNrKTsKKwkJdGNsX3BvcCh0Y2xm
LHN0YWNrKTsKKwkJYnJlYWs7CisJY2FzZSBUWVBFX05PVDoKKwkJZnByaW50Zih0Y2xmLCJzeW1f
bm90Iik7CisJCXRjbF9wb3AodGNsZixzdGFjayk7CisJCWJyZWFrOworCWNhc2UgVFlQRV9ERVBF
TkRTOgorCQlmcHJpbnRmKHRjbGYsInN5bV9kZXBlbmRzIik7CisJCXRjbF9wb3AodGNsZixzdGFj
ayk7CisJCXRjbF9wb3AodGNsZixzdGFjayk7CisJCWJyZWFrOworCWNhc2UgVFlQRV9ERVJJVkVE
OgorCQlmcHJpbnRmKHRjbGYsInN5bV9kZXJpdmVkIik7CisJCXRjbF9wb3AodGNsZixzdGFjayk7
CisJCWJyZWFrOworCWNhc2UgVFlQRV9TWU1CT0w6CisJCWZwcmludGYodGNsZiwiZ2V0X3N5bSIp
OworCWNhc2UgVFlQRV9WQUxVRToKKwkJZnByaW50Zih0Y2xmLCIgIik7CisJCWZwcmludGZfdmFs
dWUydGsodGNsZix0b2tlbi0+dHlwZSx0b2tlbi0+dmFsdWUpOworCQlicmVhazsKKwlkZWZhdWx0
OgorCQlmcHJpbnRmKHRjbGYsInRlc3QyIik7CisJCTsKKwl9CisKKwlpZih0b2tlbi0+dHlwZSAh
PSBUWVBFX1ZBTFVFICkKKwkJZnByaW50Zih0Y2xmLCIgXSAiKTsKKworCWZyZWVfdG9rZW4odG9r
ZW4pOworfQorCit2b2lkIGV2YWx1YXRlX2V4cHJlc3Npb25zMnRrKEZJTEUgKnRjbGYsIEV4cHJl
c3Npb25QdHIgZXhwKSB7CisKKwlUb2tlblB0ciB0b2tlbiwgc3RhY2ssIHQ7CisKKwlzdGFjayA9
IE5VTEw7CisJZm9yICh0ID0gZXhwLT5maXJzdF90b2tlbjsgdDsgdCA9IHQtPm5leHQpIHsKKwkJ
dG9rZW4gPSBkdXBsaWNhdGVfdG9rZW4odCk7CisJCXB1c2goJnN0YWNrLCB0b2tlbik7CisJfQor
CXRjbF9wb3AodGNsZiwmc3RhY2spOworfQorCisKIC8qCiAgKiBFeHByZXNzaW9ucyBhcmUgcmVw
cmVzZW50ZWQgYXMgYSBzZXF1ZW5jZSBvZiB0b2tlbnMuICBUaGVzZSB0b2tlbnMgYXJlCiAgKiBv
cGVyYXRvcnMsIG9mIFRZUEVfVkFMVUUgb3Igb2YgdHlwZSBUWVBFX1NZTUJPTC4gIFdoaWxlIGV2
YWx1YXRpbmcsIHdlIGRvbid0CmRpZmYgLXVOcmIga2VybmVsY29uZi0wLjEuMi9jb25mL2V4cHJl
c3Npb25zLmQga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi9leHByZXNzaW9ucy5kCi0tLSBrZXJu
ZWxjb25mLTAuMS4yL2NvbmYvZXhwcmVzc2lvbnMuZAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzAK
KysrIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYvZXhwcmVzc2lvbnMuZAlUdWUgRmViICA1IDIw
OjQ5OjA0IDIwMDIKQEAgLTAsMCArMSwxNiBAQAorZXhwcmVzc2lvbnMubzogZXhwcmVzc2lvbnMu
YyAvdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmggL3Vzci9p
bmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmggL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXMuaCBcCisgL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9p
bmNsdWRlL3N0ZGRlZi5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCAvdXNy
L2luY2x1ZGUvYml0cy9zY2hlZC5oIFwKKyAvdXNyL2luY2x1ZGUvZW5kaWFuLmggL3Vzci9pbmNs
dWRlL2JpdHMvZW5kaWFuLmggXAorIC91c3IvaW5jbHVkZS9tYWxsb2MuaCAvdXNyL2luY2x1ZGUv
c3RkaW8uaCAvdXNyL2luY2x1ZGUvbGliaW8uaCBcCisgL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o
IC91c3IvaW5jbHVkZS93Y2hhci5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIC91c3Iv
aW5jbHVkZS9nY29udi5oIFwKKyAvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2lu
Y2x1ZGUvc3RkYXJnLmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIC91c3IvaW5j
bHVkZS9zdHJpbmcuaCBcCisgL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIC91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCAvdXNyL2luY2x1ZGUvdGltZS5oIFwKKyAvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IC91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQu
aCAvdXNyL2luY2x1ZGUvYml0cy90aW1lLmggXAorIC91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9z
LmggL3Vzci9pbmNsdWRlL2FsbG9jYS5oIGtlcm5lbGNvbmYuaCBcCisgZXhwcmVzc2lvbnMuaCB1
dGlscy5oIHRyZWUuaApkaWZmIC11TnJiIGtlcm5lbGNvbmYtMC4xLjIvY29uZi9leHByZXNzaW9u
cy5oIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYvZXhwcmVzc2lvbnMuaAotLS0ga2VybmVsY29u
Zi0wLjEuMi9jb25mL2V4cHJlc3Npb25zLmgJVGh1IEphbiAyNCAwNToyNzowOSAyMDAyCisrKyBr
ZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL2V4cHJlc3Npb25zLmgJU2F0IEZlYiAgMiAxMzoyNDoz
MCAyMDAyCkBAIC0xNiw1ICsxNiw3IEBACiBUeXBlIGdldF9nZW5lcmljX3R5cGUoVHlwZSk7CiB2
b2lkIGZyZWVfdG9rZW4oVG9rZW5QdHIpOwogY2hhciBnZXRfYm9vbGVhbl92YWx1ZShUb2tlblB0
cik7Cit2b2lkIGZwcmludGZfdmFsdWUydGsoRklMRSAqdGNsZiwgVHlwZSB0eXBlLCBWYWx1ZSB2
YWx1ZSk7Cit2b2lkIGV2YWx1YXRlX2V4cHJlc3Npb25zMnRrKEZJTEUgKnRjbGYsIEV4cHJlc3Np
b25QdHIgZXhwKTsKIAogI2VuZGlmIC8qIF9LQ09ORl9FWFBSRVNTSU9OU19IICovCkJpbmFyeSBm
aWxlcyBrZXJuZWxjb25mLTAuMS4yL2NvbmYvZXhwcmVzc2lvbnMubyBhbmQga2VybmVsY29uZi0w
LjEuMi5uZXcvY29uZi9leHByZXNzaW9ucy5vIGRpZmZlcgpkaWZmIC11TnJiIGtlcm5lbGNvbmYt
MC4xLjIvY29uZi9oZWFkZXIudGsga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi9oZWFkZXIudGsK
LS0tIGtlcm5lbGNvbmYtMC4xLjIvY29uZi9oZWFkZXIudGsJVGh1IEphbiAgMSAwMTowMDowMCAx
OTcwCisrKyBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL2hlYWRlci50awlUdWUgRmViICA1IDIw
OjQ5OjQ3IDIwMDIKQEAgLTAsMCArMSwzODQgQEAKK3Byb2MgY29uZmlnX29wdGlvbiB7dyBsaW5l
IHRleHQgc3ltIHN5bW5hbWUgaGF2ZXN5bSBoZWxwIGhhdmVoZWxwIGNoaWxkIGhhdmVjaGlsZH0g
eworCWZyYW1lICR3LmYkbGluZQorCisJaWYgeyAkaGF2ZXN5bSAmIDQgfSB7CisJCXJhZGlvYnV0
dG9uICR3LmYkbGluZS5zeSAtdGV4dCAieSIgLXZhcmlhYmxlICRzeW1uYW1lIC12YWx1ZSB5IFwK
KwkJCS1yZWxpZWYgZ3Jvb3ZlIC13aWR0aCAyIC1jb21tYW5kICJjaGFuZ2Vfc3ltXyRzeW1uYW1l
IHRydWUiCisJCWlmIHsgJHN5bSAhPSAiU1lNX0JPT0wiICYmICRzeW0gIT0gIlNZTV9UUkkiICYm
ICRzeW0gIT0gIlNZTV9PUFRJT04ifSB7CisJCQkkdy5mJGxpbmUuc3kgY29uZmlndXJlIC10ZXh0
ICItIiAtc3RhdGUgZGlzYWJsZWQKKwkJfSBlbHNlaWYgeyAkc3ltID09ICJTWU1fT1BUSU9OIiB9
IHsKKwkJCSR3LmYkbGluZS5zeSBjb25maWd1cmUgLXRleHQgIiIKKwkJfQorCQlwYWNrICR3LmYk
bGluZS5zeSAtc2lkZSBsZWZ0IC1maWxsIHkKKwl9CisKKwlpZiB7ICRoYXZlc3ltICYgMiB9IHsK
KwkJcmFkaW9idXR0b24gJHcuZiRsaW5lLnNtIC10ZXh0ICJtIiAgLXZhcmlhYmxlICRzeW1uYW1l
IC12YWx1ZSBtIFwKKwkJCS1yZWxpZWYgZ3Jvb3ZlIC13aWR0aCAyIC1jb21tYW5kICJjaGFuZ2Vf
c3ltXyRzeW1uYW1lIHRydWUiCisKKwkJaWYgeyAkc3ltICE9ICJTWU1fTU9EVUxFIiAmJiAkc3lt
ICE9ICJTWU1fVFJJIiB9IHsKKwkJCSR3LmYkbGluZS5zbSBjb25maWd1cmUgLXRleHQgIi0iIC1z
dGF0ZSBkaXNhYmxlZAorCQl9CisJCXBhY2sgJHcuZiRsaW5lLnNtIC1zaWRlIGxlZnQgLWZpbGwg
eQorCX0KKworCWlmIHsgJGhhdmVzeW0gJiAxIH0geworCQlyYWRpb2J1dHRvbiAkdy5mJGxpbmUu
c24gLXRleHQgIm4iICAtdmFyaWFibGUgJHN5bW5hbWUgLXZhbHVlIG4gXAorCQkJLXJlbGllZiBn
cm9vdmUgLXdpZHRoIDIgLWNvbW1hbmQgImNoYW5nZV9zeW1fJHN5bW5hbWUgdHJ1ZSIKKwkJaWYg
eyAkc3ltICE9ICJTWU1fQk9PTCIgJiYgJHN5bSAhPSAiU1lNX01PRFVMRSIgJiYgJHN5bSAhPSAi
U1lNX1RSSSIgfSB7CisJCQkkdy5mJGxpbmUuc24gY29uZmlndXJlIC10ZXh0ICItIiAtc3RhdGUg
ZGlzYWJsZWQKKwkJfQorCQlwYWNrICR3LmYkbGluZS5zbiAtc2lkZSBsZWZ0IC1maWxsIHkKKwl9
CisKKwltZXNzYWdlICR3LmYkbGluZS5tIC10ZXh0ICIkdGV4dCIgLWFuY2hvciB3IC13aWR0aCAx
MDAwMAorCXBhY2sgJHcuZiRsaW5lLm0gLXNpZGUgbGVmdCAtZmlsbCBib3RoIC1leHBhbmQgb24K
KworCWlmIHsgJGhhdmVoZWxwIH0geworCQlpZiB7ICRoZWxwICE9ICIiIH0geworCQkJYnV0dG9u
ICR3LmYkbGluZS5oIC10ZXh0ICI/IiAtY29tbWFuZCAkaGVscAorCQl9IGVsc2UgeworCQkJYnV0
dG9uICR3LmYkbGluZS5oIC10ZXh0ICI/IiAtc3RhdGUgZGlzYWJsZWQgLXJlbGllZiBmbGF0CisJ
CX0KKwkJcGFjayAkdy5mJGxpbmUuaCAtc2lkZSBsZWZ0IC1maWxsIHkKKwl9CisKKwlpZiB7ICRo
YXZlY2hpbGQgfSB7CisJCWlmIHsgJGNoaWxkICE9ICIiIH0geworCQkJYnV0dG9uICR3LmYkbGlu
ZS5jCisJCQljaGlsZF9idXR0b25fb24gJHcgJGxpbmUgIiR0ZXh0IiAiJGNoaWxkIgorCQl9IGVs
c2UgeworCQkJYnV0dG9uICR3LmYkbGluZS5jIC10ZXh0ICItPiIgLXN0YXRlIGRpc2FibGVkIC1y
ZWxpZWYgZmxhdAorCQl9CisJCXBhY2sgJHcuZiRsaW5lLmMgLXNpZGUgbGVmdCAtZmlsbCB5CisJ
fQorCisJcGFjayAkdy5mJGxpbmUgLWFuY2hvciB3IC1maWxsIGJvdGggLWV4cGFuZCB5IC1pbiAk
dy5jYW52YXMuc2JmCit9CisKK3Byb2MgY2hpbGRfYnV0dG9uX29uIHsgdyBsaW5lIHRleHQgY2hp
bGQgfSB7CisJJHcuZiRsaW5lLmMgY29uZmlndXJlIC10ZXh0ICItPiIKKwkkdy5mJGxpbmUuYyBj
b25maWd1cmUgLWNvbW1hbmQgImNyZWF0ZV93aW5kb3cgJHcgJGxpbmUgXCIkdGV4dFwiIFwiJGNo
aWxkXCI7JGNoaWxkO2NyZWF0ZV9zY3JvbGxiYXIgJHcuYyRsaW5lIgorCSR3LmYkbGluZS5jIGNv
bmZpZ3VyZSAtcmVsaWVmIHJhaXNlZAorfQorCitwcm9jIGNoaWxkX2J1dHRvbl9vZmYgeyB3IGxp
bmUgfSB7CisJJHcuZiRsaW5lLmMgY29uZmlndXJlIC10ZXh0ICI8LSIKKwkkdy5mJGxpbmUuYyBj
b25maWd1cmUgLWNvbW1hbmQgImRlc3Ryb3kgJHcuYyRsaW5lIgorCSR3LmYkbGluZS5jIGNvbmZp
Z3VyZSAtcmVsaWVmIGZsYXQKK30KKworcHJvYyBpbml0X3dpbmRvdyB7IHcgdGV4dCB9IHsKKwor
CXNjcm9sbGJhciAkdy52c2Nyb2xsIC1jb21tYW5kICIkdy5jYW52YXMgeXZpZXciCisJcGFjayAk
dy52c2Nyb2xsIC1zaWRlIHJpZ2h0IC1maWxsIHkKKworCWNhbnZhcyAkdy5jYW52YXMgLXJlbGll
ZiBmbGF0IC1ib3JkZXJ3aWR0aCAwIC15c2Nyb2xsY29tbWFuZCAiJHcudnNjcm9sbCBzZXQiCisJ
ZnJhbWUgJHcuY2FudmFzLnNiZgorCXBhY2sgJHcuY2FudmFzIC1zaWRlIHJpZ2h0IC1maWxsIHkg
LWV4cGFuZCBvbgorfQorCitwcm9jIGNhbHdpIHsgY21kIHcgfSB7CisJaWYgeyBbIHdpbmZvIHBh
cmVudCAkdyBdICE9ICIiIH0geworCQlyZXR1cm4gWyBleHByIFsgY2Fsd2kgJGNtZCBbIHdpbmZv
IHBhcmVudCAkdyBdIF0gKyBbIHdpbmZvICRjbWQgJHcgXSBdCisJfSBlbHNlIHsKKwkJcmV0dXJu
IFsgd2luZm8gJGNtZCAkdyBdCisJfQorfQorCitwcm9jIG1heHdpIHsgY21kIHcgfSB7CisJaWYg
eyBbIHdpbmZvIHBhcmVudCAkdyBdICE9ICIiIH0geworCQlyZXR1cm4gWyBtYXggWyBtYXh3aSAk
Y21kIFsgd2luZm8gcGFyZW50ICR3IF0gXSAgWyB3aW5mbyAkY21kICR3IF0gXQorCX0gZWxzZSB7
CisJCXJldHVybiBbIHdpbmZvICRjbWQgJHcgXQorCX0KK30KKworcHJvYyBjcmVhdGVfd2luZG93
IHsgdyBsaW5lIHRleHQgY2hpbGQgfSB7CisKKwl0b3BsZXZlbCAkdy5jJGxpbmUgLWNsYXNzIERp
YWxvZworCXdtIHRpdGxlICR3LmMkbGluZSAkdGV4dAorCisJaW5pdF93aW5kb3cgJHcuYyRsaW5l
ICR0ZXh0CisKKwlldmFsICJiaW5kICR3LmMkbGluZSA8RGVzdHJveT4geyBjaGlsZF9idXR0b25f
b24gJHcgJGxpbmUgXCIkdGV4dFwiIFwiJGNoaWxkXCIgfSIKKwljaGlsZF9idXR0b25fb2ZmICR3
ICRsaW5lCisKKyMJYnV0dG9uICR3LmMkbGluZS5jbG9zZSAtdGV4dCAiPC0iIC1jb21tYW5kICJk
ZXN0cm95ICR3LmMkbGluZSIKKyMJcGFjayAkdy5jJGxpbmUuY2xvc2UgLXNpZGUgbGVmdCAtYW5j
aG9yIG4KKworIwlzZXQgcG9zeCBbIG1heHdpIHJlcXcgJHcgXQorIwlzZXQgcG9zeSBbIGV4cHIg
WyBjYWx3aSB5ICR3LmYkbGluZS5jIF0gLSBbIGNhbHdpIHkgJHcuYyRsaW5lLmNsb3NlIF0gXQor
IwlzZXQgcG9zeSBbIGNhbHdpIHkgJHcuZiRsaW5lLmMgXQorCisjCXdtIGdlb21ldHJ5ICR3LmMk
bGluZSArJHBvc3grJHBvc3kKK30KKworcHJvYyBjcmVhdGVfc2Nyb2xsYmFyIHsgdyB9IHsKKwor
CXNldCBzaXpvayAwCisJI1tleHByIFt3aW5mbyByZXFoZWlnaHQgJHcuZjIub2tdICsgMTJdCisJ
I3BhY2sgJHcuY2FudmFzLnNiZgorCXVwZGF0ZSBpZGxldGFza3MKKwlzZXQgbWF4eSBbZXhwciBb
d2luZm8gc2NyZWVuaGVpZ2h0IC5dICogMyAvIDRdCisJc2V0IGNhbnZ0b3RhbCBbd2luZm8gcmVx
aGVpZ2h0ICR3LmNhbnZhcy5zYmZdCisJaWYgW2V4cHIgJHNpem9rICsgJGNhbnZ0b3RhbCA8ICRt
YXh5XSB7CisJCXNldCBzaXp5ICRjYW52dG90YWwKKwl9IGVsc2UgeworCQlzZXQgc2l6eSBbZXhw
ciAkbWF4eSAtICRzaXpva10KKwl9CisKKwkkdy5jYW52YXMgY29uZmlndXJlIC13aWR0aCBbd2lu
Zm8gcmVxdyAkdy5jYW52YXMuc2JmXSAtaGVpZ2h0ICRzaXp5IFwKKwkJLXNjcm9sbHJlZ2lvbiAi
MCAwIFt3aW5mbyByZXF3ICR3LmNhbnZhcy5zYmZdIFt3aW5mbyByZXFoICR3LmNhbnZhcy5zYmZd
IgorCSR3LmNhbnZhcyBjb25maWd1cmUgLXlzY3JvbGxpbmNyZW1lbnQgMTAKKwkkdy5jYW52YXMg
Y3JlYXRlIHdpbmRvdyAwIDAgLWFuY2hvciBudyAtd2luZG93ICR3LmNhbnZhcy5zYmYKKwlwYWNr
ICR3LmNhbnZhcyAtc2lkZSByaWdodCAtZmlsbCB5IC1leHBhbmQgb24KKwkjIHVwZGF0ZSBpZGxl
dGFza3MKKworfQorCitwcm9jIGRvaGVscCB7IHcgcGFyZW50IGZpbGVuYW1lIHN0YXJ0IGxlbmd0
aCB9IHsKKwljYXRjaCB7ZGVzdHJveSAkdyB9CisJdG9wbGV2ZWwgJHcgLWNsYXNzIERpYWxvZwor
CXNldCBmaWxlZm91bmQgMAorCWlmIHsgW2ZpbGUgcmVhZGFibGUgJGZpbGVuYW1lXSA9PSAxfSB0
aGVuIHsKKwkJc2V0IGZpbGVmb3VuZCAxCisJCXNldCBpZCBbb3BlbiAkZmlsZW5hbWVdCisJCXNl
ZWsgJGlkICRzdGFydAorCQlzZXQgbWVzc2FnZSBbcmVhZCAkaWQgJGxlbmd0aF0KKwkJY2xvc2Ug
JGlkCisJfQorCWZyYW1lICR3LmYxCisJcGFjayAkdy5mMSAtZmlsbCBib3RoIC1leHBhbmQgb24K
KwlzZXQgb2xkRm9jdXMgW2ZvY3VzXQorCWZyYW1lICR3LmYyCisJYnV0dG9uICR3LmYyLm9rIC10
ZXh0ICJPSyIgLXdpZHRoIDEwIC1jb21tYW5kICJkZXN0cm95ICR3OyBjYXRjaCB7Zm9jdXMgJG9s
ZEZvY3VzfSIKKwlwYWNrICR3LmYyLm9rIC1zaWRlIGJvdHRvbSAtcGFkeSA2IC1hbmNob3Igbgor
CXBhY2sgJHcuZjIgLXNpZGUgYm90dG9tIC1wYWR4IDEwIC1hbmNob3IgcworCXNjcm9sbGJhciAk
dy5mMS52c2Nyb2xsIC1jb21tYW5kICIkdy5mMS5jYW52YXMgeXZpZXciCisJcGFjayAkdy5mMS52
c2Nyb2xsIC1zaWRlIHJpZ2h0IC1maWxsIHkKKworCWNhbnZhcyAkdy5mMS5jYW52YXMgLXJlbGll
ZiBmbGF0IC1ib3JkZXJ3aWR0aCAwIC15c2Nyb2xsY29tbWFuZCAiJHcuZjEudnNjcm9sbCBzZXQi
CisJZnJhbWUgJHcuZjEuZgorCXBhY2sgJHcuZjEuY2FudmFzIC1zaWRlIHJpZ2h0IC1maWxsIHkg
LWV4cGFuZCBvbgorCWlmIHsgJGZpbGVmb3VuZCA9PSAwIH0gdGhlbiB7CisJCW1lc3NhZ2UgJHcu
ZjEuZi5tIC13aWR0aCA3NTAgLWFzcGVjdCAzMDAgLXJlbGllZiBmbGF0IC10ZXh0IFwKKwkJCSJO
byBoZWxwIGF2YWlsYWJsZSAtIHVuYWJsZSB0byBvcGVuIGZpbGUgJGZpbGVuYW1lLiAgVGhpcyBm
aWxlIHNob3VsZCBoYXZlIGNvbWUgd2l0aCB5b3VyIGtlcm5lbC4iCisJCWxhYmVsICR3LmYxLmJt
IC1iaXRtYXAgZXJyb3IKKwkJd20gdGl0bGUgJHcgIlJURk0iCisJfSBlbHNlIHsKKwkJdGV4dCAk
dy5mMS5mLm0gLXdpZHRoIDczIC1yZWxpZWYgZmxhdCAtd3JhcCB3b3JkCisJCSR3LmYxLmYubSBp
bnNlcnQgMC4wICRtZXNzYWdlCisJCSR3LmYxLmYubSBjb25mIC1zdGF0ZSBkaXNhYmxlZCAtaGVp
Z2h0IFskdy5mMS5mLm0gaW5kZXggZW5kXQorCQlsYWJlbCAkdy5mMS5ibSAtYml0bWFwIGluZm8K
KwkJd20gdGl0bGUgJHcgIkNvbmZpZ3VyYXRpb24gaGVscCIKKwl9CisJcGFjayAkdy5mMS5mLm0g
LXNpZGUgbGVmdAorCXBhY2sgJHcuZjEuYm0gJHcuZjEuZiAtc2lkZSBsZWZ0IC1wYWR4IDEwCisJ
Zm9jdXMgJHcKKwlzZXQgd2lueCBbZXhwciBbd2luZm8geCAkcGFyZW50XSsyMF0KKwlzZXQgd2lu
eSBbZXhwciBbd2luZm8geSAkcGFyZW50XSsyMF0KKwl3bSBnZW9tZXRyeSAkdyArJHdpbngrJHdp
bnkKKwlzZXQgc2l6b2sgW2V4cHIgW3dpbmZvIHJlcWhlaWdodCAkdy5mMi5va10gKyAxMl0KKwlz
ZXQgbWF4eSBbZXhwciBbd2luZm8gc2NyZWVuaGVpZ2h0IC5dICogMyAvIDRdCisJc2V0IGNhbnZ0
b3RhbCBbd2luZm8gcmVxaGVpZ2h0ICR3LmYxLmYubV0KKwlpZiBbZXhwciAkc2l6b2sgKyAkY2Fu
dnRvdGFsIDwgJG1heHldIHsKKwkJc2V0IHNpenkgJGNhbnZ0b3RhbAorCX0gZWxzZSB7CisJCXNl
dCBzaXp5IFtleHByICRtYXh5IC0gJHNpem9rXQorCX0KKwkkdy5mMS5jYW52YXMgY29uZmlndXJl
IC1oZWlnaHQgJHNpenkgLXdpZHRoIFt3aW5mbyByZXF3aWR0aCAkdy5mMS5mLm1dIFwKKwkJLXNj
cm9sbHJlZ2lvbiAiMCAwIFt3aW5mbyByZXF3aWR0aCAkdy5mMS5mLm1dIFt3aW5mbyByZXFoZWln
aHQgJHcuZjEuZi5tXSIKKwkkdy5mMS5jYW52YXMgY3JlYXRlIHdpbmRvdyAwIDAgLWFuY2hvciBu
dyAtd2luZG93ICR3LmYxLmYKKwl1cGRhdGUgaWRsZXRhc2tzCisJc2V0IG1heHkgW3dpbmZvIHNj
cmVlbmhlaWdodCAuXQorCWlmIFtleHByICRzaXpvayArICRjYW52dG90YWwgPCAkbWF4eV0gewor
CQlzZXQgc2l6eSBbZXhwciAkc2l6b2sgKyAkY2FudnRvdGFsXQorCX0gZWxzZSB7CisJCXNldCBz
aXp5ICRtYXh5CisJfQorCXdtIG1heHNpemUgJHcgW3dpbmZvIHdpZHRoICR3XSAkc2l6eQorfQor
Citwcm9jIHdyaXRlX3N5bWJvbCB7IGNvbmYgY29uZl9oIHR5cGUgc3ltbmFtZSBzeW12YWwgfSB7
CisJc3dpdGNoICR0eXBlIHsKKwkJIlNZTV9UUkkiIC0gIlNZTV9CT09MIiAtICJTWU1fT1BUSU9O
IiB7CisJCQlpZiB7ICRzeW12YWwgPT0gInkiIH0geworCQkJCXB1dHMgJGNvbmZfaCAiI2RlZmlu
ZSBDT05GSUdfJHN5bW5hbWUgMSIKKwkJCQlwdXRzICRjb25mICJDT05GSUdfJHN5bW5hbWU9eSIK
KwkJCX0gZWxzZWlmIHsgJHN5bXZhbCA9PSAibSIgfSB7CisJCQkJcHV0cyAkY29uZl9oICIjdW5k
ZWYgIENPTkZJR18kc3ltbmFtZSIKKwkJCQlwdXRzICRjb25mX2ggIiNkZWZpbmUgQ09ORklHXyRz
eW1uYW1lX01PRFVMRSAxIgorCQkJCXB1dHMgJGNvbmYgIkNPTkZJR18kc3ltbmFtZT1tIgorCQkJ
fSBlbHNlIHsKKwkJCQlwdXRzICRjb25mX2ggIiN1bmRlZiAgQ09ORklHXyRzeW1uYW1lIgorCQkJ
CXB1dHMgJGNvbmYgIiMgQ09ORklHXyRzeW1uYW1lIGlzIG5vdCBzZXQiCisJCQl9CisJCX0KKwkJ
IlNZTV9OVUxMIiB7CisJCQlwdXRzIGNvbmZfaCAiI3VuZGVmICBDT05GSUdfJHN5bW5hbWUiCisJ
CQlwdXRzIGNvbmYgIiMgQ09ORklHXyRzeW1uYW1lIGlzIG5vdCBzZXQiCisJCX0KKwl9Cit9CisK
K3Byb2MgcmVhZF9jb25maWcgeyBjb25mX25hbWUgfSB7CisJaWYgeyBbc3RyaW5nIGxlbmd0aCAk
Y29uZl9uYW1lXSA9PSAwIHx8IFtmaWxlIHJlYWRhYmxlICRjb25mX25hbWVdICE9IDEgfSB0aGVu
IHsgcmV0dXJuIH0KKwlzZXQgY29uZiBbIG9wZW4gJGNvbmZfbmFtZSByIF0KKwl3aGlsZSB7IFsg
Z2V0cyAkY29uZiBsaW5lIF0gPj0gMCB9IHsKKwkJaWYgW3JlZ2V4cCB7KFswLTlBLVphLXpfXSsp
PShbeW5tXSl9ICRsaW5lIGZvbyB2YXIgdmFsdWVdIHsKKwkJCWlmIHsgJHZhbHVlID09ICJ5IiB9
IHRoZW4geyBzZXQgY21kICJnbG9iYWwgJHZhcjsgc2V0ICR2YXIgeSIgfQorCQkJaWYgeyAkdmFs
dWUgPT0gIm4iIH0gdGhlbiB7IHNldCBjbWQgImdsb2JhbCAkdmFyOyBzZXQgJHZhciBuIiB9CisJ
CQlpZiB7ICR2YWx1ZSA9PSAibSIgfSB0aGVuIHsgc2V0IGNtZCAiZ2xvYmFsICR2YXI7IHNldCAk
dmFyIG0iIH0KKwkJCWV2YWwgJGNtZAorCQl9CisJCWlmIFtyZWdleHAgeyMgKFswLTlBLVphLXpf
XSspIGlzIG5vdCBzZXR9ICRsaW5lIGZvbyB2YXJdIHsKKwkJCXNldCBjbWQgImdsb2JhbCAkdmFy
OyBzZXQgJHZhciBuIgorCQkJZXZhbCAkY21kCisJCX0KKwkJaWYgW3JlZ2V4cCB7KFswLTlBLVph
LXpfXSspPShbMC05QS1GYS1mXSspfSAkbGluZSBmb28gdmFyIHZhbHVlXSB7CisJCQlzZXQgY21k
ICJnbG9iYWwgJHZhcjsgc2V0ICR2YXIgJHZhbHVlIgorCQkJZXZhbCAkY21kCisJCX0KKwkJaWYg
W3JlZ2V4cCB7KFswLTlBLVphLXpfXSspPSIoW14iXSopIn0gJGxpbmUgZm9vIHZhciB2YWx1ZV0g
eworCQkJc2V0IGNtZCAiZ2xvYmFsICR2YXI7IHNldCAkdmFyIFwiJHZhbHVlXCIiCisJCQlldmFs
ICRjbWQKKwkJfQorCX0KKwljbG9zZSAkY29uZgorfQorCitwcm9jIHVwZGF0ZV9tZW51X3N5bSB7
IHcgdHlwZSBzeW1zaXplIHN5bXZhbCB9IHsKKwljYXRjaCB7CisJCWlmIHsgJHN5bXNpemUgJiA0
IH0geworCQkJaWYgeyAkc3ltdmFsID09ICJuIiB9IHsKKwkJCQlldmFsICIkdy5zeSBjb25maWd1
cmUgLXRleHQgXCJ5XCIgLXN0YXRlIGRpc2FibGVkIgorCQkJfSBlbHNlIHsKKwkJCQlldmFsICIk
dy5zeSBjb25maWd1cmUgLXRleHQgXCJ5XCIgLXN0YXRlIG5vcm1hbCIKKwkJCX0KKwkJfQorCQlp
ZiB7ICRzeW1zaXplICYgMiB9IHsKKwkJCWlmIHsgJHN5bXZhbCA9PSAibiIgfSB7CisJCQkJZXZh
bCAiJHcuc20gY29uZmlndXJlIC10ZXh0IFwibVwiIC1zdGF0ZSBkaXNhYmxlZCIKKwkJCX0gZWxz
ZSB7CisJCQkJZXZhbCAiJHcuc20gY29uZmlndXJlIC10ZXh0IFwibVwiIC1zdGF0ZSBub3JtYWwi
CisJCQl9CisJCX0KKwkJaWYgeyAkc3ltc2l6ZSAmIDEgfSB7CisJCQlpZiB7ICRzeW12YWwgPT0g
Im4iIH0geworCQkJCWV2YWwgIiR3LnNuIGNvbmZpZ3VyZSAtdGV4dCBcIm5cIiAtc3RhdGUgZGlz
YWJsZWQiCisJCQl9IGVsc2UgeworCQkJCWV2YWwgIiR3LnNuIGNvbmZpZ3VyZSAtdGV4dCBcIm5c
IiAtc3RhdGUgbm9ybWFsIgorCQkJfQorCQl9CisJfQorfQorCitwcm9jIGNvbnZfYm9vbGVhbiB7
IHZhbHVlIH0geworCWlmIHsgJHZhbHVlID09ICIiIH0JeyByZXR1cm4gIm4iIH0KKwlpZiB7ICR2
YWx1ZSA9PSAwIH0JeyByZXR1cm4gIm4iIH0KKwlpZiB7ICR2YWx1ZSA9PSAibiIgfQl7IHJldHVy
biAibiIgfQorCWlmIHsgJHZhbHVlID09ICJtIiB9CXsgcmV0dXJuICJtIiB9CisJcmV0dXJuICJ5
IgorfQorCitwcm9jIHN5bV9ub3QgeyB2YWx1ZSB9IHsKKwlzZXQgdmFsdWUgWyBjb252X2Jvb2xl
YW4gJHZhbHVlIF0KKwlpZiB7ICR2YWx1ZSA9PSAibiIgfSB7IHJldHVybiAieSIgfQorCXJldHVy
biAibiIKK30KKworcHJvYyBib29sMmludCB7IHZhbHVlIH0geworCWlmIHsgJHZhbHVlID09ICJu
IiB9IHsKKwkJcmV0dXJuIDAKKwl9IGVsc2VpZiB7ICR2YWx1ZSA9PSAibSIgfSB7CisJCXJldHVy
biAxCisJfSBlbHNlIHsKKwkJcmV0dXJuIDIKKwl9Cit9CisKK3Byb2MgaW50MmJvb2wgeyB2YWx1
ZSB9IHsKKwlpZiB7ICR2YWx1ZSA9PSAwIH0geworCQlyZXR1cm4gIm4iCisJfSBlbHNlaWYgeyAk
dmFsdWUgPT0gMSB9IHsKKwkJcmV0dXJuICJtIgorCX0gZWxzZSB7CisJCXJldHVybiAieSIKKwl9
Cit9CisKK3Byb2MgbWluIHsgdmFsdWUxIHZhbHVlMiB9IHsKKwlpZiB7ICR2YWx1ZTEgPCAkdmFs
dWUyIH0geworCQlyZXR1cm4gJHZhbHVlMQorCX0gZWxzZSB7CisJCXJldHVybiAkdmFsdWUyCisJ
fQorfQorCitwcm9jIG1heCB7IHZhbHVlMSB2YWx1ZTIgfSB7CisJaWYgeyAkdmFsdWUxIDwgJHZh
bHVlMiB9IHsKKwkJcmV0dXJuICR2YWx1ZTEKKwl9IGVsc2UgeworCQlyZXR1cm4gJHZhbHVlMgor
CX0KK30KKworcHJvYyBnZXRfc3ltIHsgc3ltbmFtZSB9IHsKKwlzZXQgY21kICJnbG9iYWwgJHN5
bW5hbWU7IHJldHVybiBcJCRzeW1uYW1lIgorCXJldHVybiBbIGV2YWwgJGNtZCBdCit9CisKK3By
b2Mgc3ltX2FuZCB7IHZhbHVlMSB2YWx1ZTIgfSB7CisJc2V0IHZhbHVlMSBbIGJvb2wyaW50IFsg
Y29udl9ib29sZWFuICR2YWx1ZTEgXSBdCisJc2V0IHZhbHVlMiBbIGJvb2wyaW50IFsgY29udl9i
b29sZWFuICR2YWx1ZTIgXSBdCisJc2V0IHZhbHVlIFsgbWluICR2YWx1ZTEgJHZhbHVlMiBdCisJ
cmV0dXJuIFsgaW50MmJvb2wgJHZhbHVlIF0KK30KKworcHJvYyBzeW1fb3IgeyB2YWx1ZTEgdmFs
dWUyIH0geworCXNldCB2YWx1ZTEgWyBib29sMmludCBbIGNvbnZfYm9vbGVhbiAkdmFsdWUxIF0g
XQorCXNldCB2YWx1ZTIgWyBib29sMmludCBbIGNvbnZfYm9vbGVhbiAkdmFsdWUyIF0gXQorCXNl
dCB2YWx1ZSBbIG1heCAkdmFsdWUxICR2YWx1ZTIgXQorCXJldHVybiBbIGludDJib29sICR2YWx1
ZSBdCit9CisKK3Byb2Mgc3ltX2VxdWFsIHsgdmFsdWUxIHZhbHVlMiB9IHsKKwlpZiB7ICR2YWx1
ZTEgPT0gJHZhbHVlMiB9IHsgcmV0dXJuICJ5IiB9CisJc2V0IHZhbHVlMSBbIGNvbnZfYm9vbGVh
biAkdmFsdWUxIF0KKwlzZXQgdmFsdWUyIFsgY29udl9ib29sZWFuICR2YWx1ZTIgXQorCWlmIHsg
JHZhbHVlMSA9PSAkdmFsdWUyIH0geyByZXR1cm4gInkiIH0KKwlyZXR1cm4gIm4iCit9CisKK3By
b2Mgc3ltX25vdF9lcXVhbCB7IHZhbHVlMSB2YWx1ZTIgfSB7CisJaWYgeyAkdmFsdWUxID09ICR2
YWx1ZTIgfSB7IHJldHVybiAibiIgfQorCXNldCB2YWx1ZTEgWyBjb252X2Jvb2xlYW4gJHZhbHVl
MSBdCisJc2V0IHZhbHVlMiBbIGNvbnZfYm9vbGVhbiAkdmFsdWUyIF0KKwlpZiB7ICR2YWx1ZTEg
PT0gJHZhbHVlMiB9IHsgcmV0dXJuICJuIiB9CisJcmV0dXJuICJ5IgorfQorCitwcm9jIHN5bV9k
ZXBlbmRzIHsgdmFsdWUxIHZhbHVlMiB9IHsKKwlpZiB7ICR2YWx1ZTEgPT0gInkiIH0geworCQlp
ZiB7ICR2YWx1ZTIgPT0gIm4iIH0geworCQkJcmV0dXJuICJuIgorCQl9IGVsc2UgeworCQkJcmV0
dXJuICJ5IgorCQl9CisJfSBlbHNlIHsKKwkJcmV0dXJuICJ5IgorCX0KK30KKworcHJvYyBzeW1f
ZGVyaXZlZCB7IHZhbHVlIH0geworCWlmIHsgJHZhbHVlID09ICJ5IiB9IHsgcmV0dXJuICIiIH0K
KwlyZXR1cm4gIm4iCit9CisKK3Byb2MgdXBkYXRlX2Rlcml2ZWQgeyBzeW1uYW1lIGRlcml2ZWQg
fSB7Cit9CisKK3Byb2MgdXBkYXRlX2RlcGVuZHMgeyBzeW1uYW1lIGRlcGVuZHMgfSB7Cit9CisK
ZGlmZiAtdU5yYiBrZXJuZWxjb25mLTAuMS4yL2NvbmYvaGVscC5kIGtlcm5lbGNvbmYtMC4xLjIu
bmV3L2NvbmYvaGVscC5kCi0tLSBrZXJuZWxjb25mLTAuMS4yL2NvbmYvaGVscC5kCVRodSBKYW4g
IDEgMDE6MDA6MDAgMTk3MAorKysga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi9oZWxwLmQJVHVl
IEZlYiAgNSAyMDo0OTowNSAyMDAyCkBAIC0wLDAgKzEsMTAgQEAKK2hlbHAubzogaGVscC5jIC91
c3IvaW5jbHVkZS9zdGRpby5oIC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIFwKKyAvdXNyL2luY2x1
ZGUvc3lzL2NkZWZzLmggL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIFwKKyAvdXNyL2xpYi9nY2Mt
bGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmggXAorIC91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmggL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmggXAorIC91c3IvaW5j
bHVkZS9iaXRzL3NjaGVkLmggL3Vzci9pbmNsdWRlL2xpYmlvLmggXAorIC91c3IvaW5jbHVkZS9f
R19jb25maWcuaCAvdXNyL2luY2x1ZGUvd2NoYXIuaCBcCisgL3Vzci9pbmNsdWRlL2JpdHMvd2No
YXIuaCAvdXNyL2luY2x1ZGUvZ2NvbnYuaCBcCisgL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4
LzIuOTUuNC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0u
aCAvdXNyL2luY2x1ZGUvbWFsbG9jLmggXAorIC91c3IvaW5jbHVkZS9zdHJpbmcuaCBoZWxwLmgg
a2VybmVsY29uZi5oCkJpbmFyeSBmaWxlcyBrZXJuZWxjb25mLTAuMS4yL2NvbmYvaGVscC5vIGFu
ZCBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL2hlbHAubyBkaWZmZXIKQmluYXJ5IGZpbGVzIGtl
cm5lbGNvbmYtMC4xLjIvY29uZi9rZXJuZWxjb25mIGFuZCBrZXJuZWxjb25mLTAuMS4yLm5ldy9j
b25mL2tlcm5lbGNvbmYgZGlmZmVyCmRpZmYgLXVOcmIga2VybmVsY29uZi0wLjEuMi9jb25mL2tl
cm5lbGNvbmYuZCBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL2tlcm5lbGNvbmYuZAotLS0ga2Vy
bmVsY29uZi0wLjEuMi9jb25mL2tlcm5lbGNvbmYuZAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzAK
KysrIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYva2VybmVsY29uZi5kCVR1ZSBGZWIgIDUgMjA6
NDk6MDUgMjAwMgpAQCAtMCwwICsxLDUgQEAKK2tlcm5lbGNvbmYubzoga2VybmVsY29uZi5jIC91
c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmggL3Vzci9pbmNs
dWRlL3N5cy9jZGVmcy5oIFwKKyAvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmggXAorIC91c3IvbGli
L2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCBtZW51Y29uZmlnLmgg
XAorIG9sZGNvbmZpZy5oIHJlYWRjb25maWcuaCByZWFkc3ltYm9scy5oIHhjb25maWcuaApCaW5h
cnkgZmlsZXMga2VybmVsY29uZi0wLjEuMi9jb25mL2tlcm5lbGNvbmYubyBhbmQga2VybmVsY29u
Zi0wLjEuMi5uZXcvY29uZi9rZXJuZWxjb25mLm8gZGlmZmVyCmRpZmYgLXVOcmIga2VybmVsY29u
Zi0wLjEuMi9jb25mL21lbnVjb25maWcuZCBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL21lbnVj
b25maWcuZAotLS0ga2VybmVsY29uZi0wLjEuMi9jb25mL21lbnVjb25maWcuZAlUaHUgSmFuICAx
IDAxOjAwOjAwIDE5NzAKKysrIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYvbWVudWNvbmZpZy5k
CVR1ZSBGZWIgIDUgMjA6NDk6MDUgMjAwMgpAQCAtMCwwICsxLDE4IEBACittZW51Y29uZmlnLm86
IG1lbnVjb25maWcuYyAvdXNyL2luY2x1ZGUvY3R5cGUuaCBcCisgL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmggL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIFwKKyAvdXNyL2luY2x1ZGUvZ251L3N0dWJz
LmggL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCBcCisgL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxp
bnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGRlZi5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFk
dHlwZXMuaCAvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIFwKKyAvdXNyL2luY2x1ZGUvZW5kaWFu
LmggL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmggL3Vzci9pbmNsdWRlL3N0ZGlvLmggXAorIC91
c3IvaW5jbHVkZS9saWJpby5oIC91c3IvaW5jbHVkZS9fR19jb25maWcuaCAvdXNyL2luY2x1ZGUv
d2NoYXIuaCBcCisgL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCAvdXNyL2luY2x1ZGUvZ2NvbnYu
aCBcCisgL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGFyZy5o
IFwKKyAvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCAvdXNyL2luY2x1ZGUvc3RyaW5nLmgg
XAorIC91c3IvaW5jbHVkZS9zdGRsaWIuaCAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggL3Vzci9p
bmNsdWRlL3RpbWUuaCBcCisgL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCAvdXNyL2luY2x1ZGUv
Yml0cy9zZWxlY3QuaCBcCisgL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmggL3Vzci9pbmNsdWRl
L2JpdHMvdGltZS5oIFwKKyAvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIC91c3IvaW5jbHVk
ZS9hbGxvY2EuaCBcCisgL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIC91c3IvaW5jbHVkZS9iaXRzL3Bv
c2l4X29wdC5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIC91c3IvaW5jbHVkZS9n
ZXRvcHQuaCBcCisgLi4vaW5jbHVkZS9saW51eC92ZXJzaW9uLmggdHJlZS5oIGtlcm5lbGNvbmYu
aCBkZXBzLmggZXhwcmVzc2lvbnMuaCBcCisgaGVscC5oIHdyaXRlY29uZmlnLmgKQmluYXJ5IGZp
bGVzIGtlcm5lbGNvbmYtMC4xLjIvY29uZi9tZW51Y29uZmlnLm8gYW5kIGtlcm5lbGNvbmYtMC4x
LjIubmV3L2NvbmYvbWVudWNvbmZpZy5vIGRpZmZlcgpkaWZmIC11TnJiIGtlcm5lbGNvbmYtMC4x
LjIvY29uZi9vbGRjb25maWcuZCBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL29sZGNvbmZpZy5k
Ci0tLSBrZXJuZWxjb25mLTAuMS4yL2NvbmYvb2xkY29uZmlnLmQJVGh1IEphbiAgMSAwMTowMDow
MCAxOTcwCisrKyBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL29sZGNvbmZpZy5kCVR1ZSBGZWIg
IDUgMjA6NDk6MDYgMjAwMgpAQCAtMCwwICsxIEBACitvbGRjb25maWcubzogb2xkY29uZmlnLmMK
QmluYXJ5IGZpbGVzIGtlcm5lbGNvbmYtMC4xLjIvY29uZi9vbGRjb25maWcubyBhbmQga2VybmVs
Y29uZi0wLjEuMi5uZXcvY29uZi9vbGRjb25maWcubyBkaWZmZXIKZGlmZiAtdU5yYiBrZXJuZWxj
b25mLTAuMS4yL2NvbmYvcmVhZGNvbmZpZy5kIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYvcmVh
ZGNvbmZpZy5kCi0tLSBrZXJuZWxjb25mLTAuMS4yL2NvbmYvcmVhZGNvbmZpZy5kCVRodSBKYW4g
IDEgMDE6MDA6MDAgMTk3MAorKysga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi9yZWFkY29uZmln
LmQJVHVlIEZlYiAgNSAyMDo0OTowNiAyMDAyCkBAIC0wLDAgKzEsMTcgQEAKK3JlYWRjb25maWcu
bzogcmVhZGNvbmZpZy5jIC91c3IvaW5jbHVkZS9jdHlwZS5oIFwKKyAvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCAvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggXAorIC91c3IvaW5jbHVkZS9nbnUvc3R1
YnMuaCAvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIFwKKyAvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3B0aHJl
YWR0eXBlcy5oIC91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmggXAorIC91c3IvaW5jbHVkZS9lbmRp
YW4uaCAvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCBcCisgL3Vzci9pbmNsdWRlL21hbGxvYy5o
IC91c3IvaW5jbHVkZS9zdGRpby5oIC91c3IvaW5jbHVkZS9saWJpby5oIFwKKyAvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmggL3Vzci9pbmNsdWRlL3djaGFyLmggXAorIC91c3IvaW5jbHVkZS9iaXRz
L3djaGFyLmggL3Vzci9pbmNsdWRlL2djb252LmggXAorIC91c3IvbGliL2djYy1saWIvaTM4Ni1s
aW51eC8yLjk1LjQvaW5jbHVkZS9zdGRhcmcuaCBcCisgL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9f
bGltLmggL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIFwKKyAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgg
L3Vzci9pbmNsdWRlL3RpbWUuaCBcCisgL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCAvdXNyL2lu
Y2x1ZGUvYml0cy9zZWxlY3QuaCBcCisgL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmggL3Vzci9p
bmNsdWRlL2JpdHMvdGltZS5oIFwKKyAvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIC91c3Iv
aW5jbHVkZS9hbGxvY2EuaCBcCisgL3Vzci9pbmNsdWRlL3N0cmluZy5oIC4uL2luY2x1ZGUvbGlu
dXgvdmVyc2lvbi5oIGtlcm5lbGNvbmYuaCBcCisgcmVhZHN5bWJvbHMuaCBoZWxwLmggdHJlZS5o
IHV0aWxzLmgKQmluYXJ5IGZpbGVzIGtlcm5lbGNvbmYtMC4xLjIvY29uZi9yZWFkY29uZmlnLm8g
YW5kIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYvcmVhZGNvbmZpZy5vIGRpZmZlcgpkaWZmIC11
TnJiIGtlcm5lbGNvbmYtMC4xLjIvY29uZi9yZWFkc3ltYm9scy5kIGtlcm5lbGNvbmYtMC4xLjIu
bmV3L2NvbmYvcmVhZHN5bWJvbHMuZAotLS0ga2VybmVsY29uZi0wLjEuMi9jb25mL3JlYWRzeW1i
b2xzLmQJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwCisrKyBrZXJuZWxjb25mLTAuMS4yLm5ldy9j
b25mL3JlYWRzeW1ib2xzLmQJVHVlIEZlYiAgNSAyMDo0OTowNiAyMDAyCkBAIC0wLDAgKzEsMTcg
QEAKK3JlYWRzeW1ib2xzLm86IHJlYWRzeW1ib2xzLmMgL3Vzci9pbmNsdWRlL2N0eXBlLmggXAor
IC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL3Vz
ci9pbmNsdWRlL2dudS9zdHVicy5oIC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmggXAorIC91c3Iv
bGliL2djYy1saWIvaTM4Ni1saW51eC8yLjk1LjQvaW5jbHVkZS9zdGRkZWYuaCBcCisgL3Vzci9p
bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmggL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCBcCisg
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIC91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIFwKKyAvdXNy
L2luY2x1ZGUvbWFsbG9jLmggL3Vzci9pbmNsdWRlL3N0ZGlvLmggL3Vzci9pbmNsdWRlL2xpYmlv
LmggXAorIC91c3IvaW5jbHVkZS9fR19jb25maWcuaCAvdXNyL2luY2x1ZGUvd2NoYXIuaCBcCisg
L3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCAvdXNyL2luY2x1ZGUvZ2NvbnYuaCBcCisgL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAvdXNyL2lu
Y2x1ZGUvYml0cy9zdGRpb19saW0uaCAvdXNyL2luY2x1ZGUvc3RkbGliLmggXAorIC91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCAvdXNyL2luY2x1ZGUvdGltZS5oIFwKKyAvdXNyL2luY2x1ZGUvc3lz
L3NlbGVjdC5oIC91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIFwKKyAvdXNyL2luY2x1ZGUvYml0
cy9zaWdzZXQuaCAvdXNyL2luY2x1ZGUvYml0cy90aW1lLmggXAorIC91c3IvaW5jbHVkZS9zeXMv
c3lzbWFjcm9zLmggL3Vzci9pbmNsdWRlL2FsbG9jYS5oIFwKKyAvdXNyL2luY2x1ZGUvc3RyaW5n
LmggLi4vaW5jbHVkZS9saW51eC92ZXJzaW9uLmgga2VybmVsY29uZi5oIGRlcHMuaCBcCisgZXhw
cmVzc2lvbnMuaCByZWFkc3ltYm9scy5oIGhlbHAuaCB1dGlscy5oIHRyZWUuaApCaW5hcnkgZmls
ZXMga2VybmVsY29uZi0wLjEuMi9jb25mL3JlYWRzeW1ib2xzLm8gYW5kIGtlcm5lbGNvbmYtMC4x
LjIubmV3L2NvbmYvcmVhZHN5bWJvbHMubyBkaWZmZXIKZGlmZiAtdU5yYiBrZXJuZWxjb25mLTAu
MS4yL2NvbmYvdHJlZS5kIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYvdHJlZS5kCi0tLSBrZXJu
ZWxjb25mLTAuMS4yL2NvbmYvdHJlZS5kCVRodSBKYW4gIDEgMDE6MDA6MDAgMTk3MAorKysga2Vy
bmVsY29uZi0wLjEuMi5uZXcvY29uZi90cmVlLmQJVHVlIEZlYiAgNSAyMDo0OTowNiAyMDAyCkBA
IC0wLDAgKzEsNCBAQAordHJlZS5vOiB0cmVlLmMgL3Vzci9pbmNsdWRlL21hbGxvYy5oIC91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIFwKKyAvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggL3Vzci9pbmNs
dWRlL2dudS9zdHVicy5oIFwKKyAvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2lu
Y2x1ZGUvc3RkZGVmLmggdHJlZS5oIFwKKyBrZXJuZWxjb25mLmggdXRpbHMuaApCaW5hcnkgZmls
ZXMga2VybmVsY29uZi0wLjEuMi9jb25mL3RyZWUubyBhbmQga2VybmVsY29uZi0wLjEuMi5uZXcv
Y29uZi90cmVlLm8gZGlmZmVyCmRpZmYgLXVOcmIga2VybmVsY29uZi0wLjEuMi9jb25mL3V0aWxz
LmQga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi91dGlscy5kCi0tLSBrZXJuZWxjb25mLTAuMS4y
L2NvbmYvdXRpbHMuZAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzAKKysrIGtlcm5lbGNvbmYtMC4x
LjIubmV3L2NvbmYvdXRpbHMuZAlUdWUgRmViICA1IDIwOjQ5OjA2IDIwMDIKQEAgLTAsMCArMSw3
IEBACit1dGlscy5vOiB1dGlscy5jIC91c3IvaW5jbHVkZS9jdHlwZS5oIC91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIFwKKyAvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggL3Vzci9pbmNsdWRlL2dudS9z
dHVicy5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIFwKKyAvdXNyL2xpYi9nY2MtbGli
L2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkZGVmLmggXAorIC91c3IvaW5jbHVkZS9iaXRz
L3B0aHJlYWR0eXBlcy5oIC91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmggXAorIC91c3IvaW5jbHVk
ZS9lbmRpYW4uaCAvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCBcCisgL3Vzci9pbmNsdWRlL21h
bGxvYy5oCkJpbmFyeSBmaWxlcyBrZXJuZWxjb25mLTAuMS4yL2NvbmYvdXRpbHMubyBhbmQga2Vy
bmVsY29uZi0wLjEuMi5uZXcvY29uZi91dGlscy5vIGRpZmZlcgpkaWZmIC11TnJiIGtlcm5lbGNv
bmYtMC4xLjIvY29uZi93cml0ZWNvbmZpZy5kIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYvd3Jp
dGVjb25maWcuZAotLS0ga2VybmVsY29uZi0wLjEuMi9jb25mL3dyaXRlY29uZmlnLmQJVGh1IEph
biAgMSAwMTowMDowMCAxOTcwCisrKyBrZXJuZWxjb25mLTAuMS4yLm5ldy9jb25mL3dyaXRlY29u
ZmlnLmQJVHVlIEZlYiAgNSAyMDo0OTowNyAyMDAyCkBAIC0wLDAgKzEsMTAgQEAKK3dyaXRlY29u
ZmlnLm86IHdyaXRlY29uZmlnLmMgL3Vzci9pbmNsdWRlL3N0ZGlvLmggXAorIC91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCBcCisgL3Vzci9pbmNsdWRlL2du
dS9zdHVicy5oIFwKKyAvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUv
c3RkZGVmLmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmggL3Vzci9pbmNsdWRlL2JpdHMv
cHRocmVhZHR5cGVzLmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmggL3Vzci9pbmNsdWRl
L2xpYmlvLmggXAorIC91c3IvaW5jbHVkZS9fR19jb25maWcuaCAvdXNyL2luY2x1ZGUvd2NoYXIu
aCBcCisgL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCAvdXNyL2luY2x1ZGUvZ2NvbnYuaCBcCisg
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzIuOTUuNC9pbmNsdWRlL3N0ZGFyZy5oIFwKKyAv
dXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCBrZXJuZWxjb25mLmggd3JpdGVjb25maWcuaApC
aW5hcnkgZmlsZXMga2VybmVsY29uZi0wLjEuMi9jb25mL3dyaXRlY29uZmlnLm8gYW5kIGtlcm5l
bGNvbmYtMC4xLjIubmV3L2NvbmYvd3JpdGVjb25maWcubyBkaWZmZXIKZGlmZiAtdU5yYiBrZXJu
ZWxjb25mLTAuMS4yL2NvbmYveGNvbmZpZy5jIGtlcm5lbGNvbmYtMC4xLjIubmV3L2NvbmYveGNv
bmZpZy5jCi0tLSBrZXJuZWxjb25mLTAuMS4yL2NvbmYveGNvbmZpZy5jCVRodSBKYW4gMjQgMDU6
Mjc6MDggMjAwMgorKysga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi94Y29uZmlnLmMJVHVlIEZl
YiAgNSAyMDoxMjo1MiAyMDAyCkBAIC02LDkgKzYsMzIyIEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDIgYnkgQW51cmFkaGEgUmF0bmF3ZWVyYQogICovCiAKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJrZXJuZWxjb25mLmgiCisjaW5jbHVk
ZSAiZXhwcmVzc2lvbnMuaCIKKworI2RlZmluZSBNQVhfTUVOVV9OQU1FCQkyNTYKKyNkZWZpbmUg
TUFYX1ZBTFVFX1NJWkUJMjU2CisKK2V4dGVybiBJZFB0ciByb290X21lbnU7CitleHRlcm4gSWRQ
dHIgZmlyc3Rfc3ltYm9sOworCitGSUxFICp0Y2xmOworCitpbnQgdHlwZTJ4c2l6ZShUeXBlIHR5
cGUpCit7CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBUWVBFX09QVElPTjoKKwkJcmV0dXJuIDQ7
IGJyZWFrOworCWNhc2UgVFlQRV9CT09MOgorCQlyZXR1cm4gNTsgYnJlYWs7CisJY2FzZSBUWVBF
X1RSSToKKwljYXNlIFRZUEVfSU5UOgorCWNhc2UgVFlQRV9IRVg6CisJY2FzZSBUWVBFX0NIQVI6
CisJY2FzZSBUWVBFX1NUUjoKKwkJcmV0dXJuIDc7IGJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVy
biAwOworCX0KK30KKwordm9pZCBmcHJpbnRmX3R5cGUybmFtZShUeXBlIHR5cGUpCit7CisJc3dp
dGNoICh0eXBlKSB7CisJY2FzZSBUWVBFX05VTEw6CisJCWZwcmludGYodGNsZiwiU1lNX05VTEwi
KTsgYnJlYWs7CisJCWNhc2UgVFlQRV9CT09MOgorCQkJZnByaW50Zih0Y2xmLCJTWU1fQk9PTCIp
OyBicmVhazsKKwkJY2FzZSBUWVBFX1RSSToKKwkJCWZwcmludGYodGNsZiwiU1lNX1RSSSIpOyBi
cmVhazsKKwkJY2FzZSBUWVBFX0lOVDoKKwkJCWZwcmludGYodGNsZiwiU1lNX0lOVCIpOyBicmVh
azsKKwkJY2FzZSBUWVBFX0hFWDoKKwkJCWZwcmludGYodGNsZiwiU1lNX0hFWCIpOyBicmVhazsK
KwkJY2FzZSBUWVBFX0NIQVI6CisJCQlmcHJpbnRmKHRjbGYsIlNZTV9DSEFSIik7IGJyZWFrOwor
CQljYXNlIFRZUEVfU1RSOgorCQkJZnByaW50Zih0Y2xmLCJTWU1fU1RSIik7IGJyZWFrOworCQlj
YXNlIFRZUEVfT1BUSU9OOgorCQkJZnByaW50Zih0Y2xmLCJTWU1fT1BUSU9OIik7IGJyZWFrOwor
CQljYXNlIFRZUEVfVU5LTk9XTjoKKwkJCWZwcmludGYodGNsZiwiU1lNX1VOS05PV04iKTsgYnJl
YWs7CisJCWNhc2UgVFlQRV9ERVBFTkRTOgorCQkJZnByaW50Zih0Y2xmLCJTWU1fREVQRU5EUyIp
OyBicmVhazsKKwkJY2FzZSBUWVBFX0RFUklWRUQ6CisJCQlmcHJpbnRmKHRjbGYsIlNZTV9ERVJJ
VkVEIik7IGJyZWFrOworCQljYXNlIFRZUEVfT1I6CisJCQlmcHJpbnRmKHRjbGYsIlNZTV9PUiIp
OyBicmVhazsKKwkJY2FzZSBUWVBFX0FORDoKKwkJCWZwcmludGYodGNsZiwiU1lNX0FORCIpOyBi
cmVhazsKKwkJY2FzZSBUWVBFX0VRVUFMOgorCQkJZnByaW50Zih0Y2xmLCJTWU1fRVFVQUwiKTsg
YnJlYWs7CisJCWNhc2UgVFlQRV9OT1RfRVFVQUw6CisJCQlmcHJpbnRmKHRjbGYsIlNZTV9OT1Rf
RVFVQUwiKTsgYnJlYWs7CisJCWNhc2UgVFlQRV9MVDoKKwkJCWZwcmludGYodGNsZiwiU1lNX0xU
Iik7IGJyZWFrOworCQljYXNlIFRZUEVfR1Q6CisJCQlmcHJpbnRmKHRjbGYsIlNZTV9HVCIpOyBi
cmVhazsKKwkJY2FzZSBUWVBFX0xURToKKwkJCWZwcmludGYodGNsZiwiU1lNX0xURSIpOyBicmVh
azsKKwkJY2FzZSBUWVBFX0dURToKKwkJCWZwcmludGYodGNsZiwiU1lNX0dURSIpOyBicmVhazsK
KwkJY2FzZSBUWVBFX05PVDoKKwkJCWZwcmludGYodGNsZiwiU1lNX05PVCIpOyBicmVhazsKKwkJ
Y2FzZSBUWVBFX0xFRlRfUEFSQToKKwkJCWZwcmludGYodGNsZiwiU1lNX0xFRlRfUEFSQSIpOyBi
cmVhazsKKwkJY2FzZSBUWVBFX1JJR0hUX1BBUkE6CisJCQlmcHJpbnRmKHRjbGYsIlNZTV9SSUdI
VF9QQVJBIik7IGJyZWFrOworCQljYXNlIFRZUEVfU1lNQk9MOgorCQkJZnByaW50Zih0Y2xmLCJT
WU1fU1lNQk9MRSIpOyBicmVhazsKKwkJY2FzZSBUWVBFX1ZBTFVFOgorCQkJZnByaW50Zih0Y2xm
LCJTWU1fVkFMVUUiKTsgYnJlYWs7CisJfQorfQorCisjZGVmaW5lIENTWU1OQU1FCWN1cl9tZW51
LT5zeW1ib2wtPm5vZGUubmFtZQorI2RlZmluZSBDU1lNVFlQRQlpZiAoY3VyX21lbnUtPnN5bWJv
bCkgeyBcCisJCWZwcmludGZfdHlwZTJuYW1lKGN1cl9tZW51LT5zeW1ib2wtPnR5cGUpOyBcCisJ
fSBlbHNlIHsgXAorCQlmcHJpbnRmKHRjbGYsIlNZTV9OT05FIik7IFwKKwl9CisKK3ZvaWQgZnBy
aW50Zl9wcmVjMnRrKFByZWNlZGVuY2UgcHJlYykKK3sKKwlzd2l0Y2ggKHByZWMpIHsKKwkJY2Fz
ZSBQUkVfTlVMTDoKKwkJCWZwcmludGYodGNsZiwiUFJFX05VTEwiKTsgYnJlYWs7CisJCWNhc2Ug
UFJFX0FTU0lHTjoKKwkJCWZwcmludGYodGNsZiwiUFJFX0FTU0lHTiIpOyBicmVhazsKKwkJY2Fz
ZSBQUkVfT1I6CisJCQlmcHJpbnRmKHRjbGYsIlBSRV9PUiIpOyBicmVhazsKKwkJY2FzZSBQUkVf
QU5EOgorCQkJZnByaW50Zih0Y2xmLCJQUkVfQU5EIik7IGJyZWFrOworCQljYXNlIFBSRV9FUVVB
TDoKKwkJCWZwcmludGYodGNsZiwiUFJFX0VRVUFMIik7IGJyZWFrOworCQljYXNlIFBSRV9SRUw6
CisJCQlmcHJpbnRmKHRjbGYsIlBSRV9SRUwiKTsgYnJlYWs7CisJCWNhc2UgUFJFX05PVDoKKwkJ
CWZwcmludGYodGNsZiwiUFJFX05PVCIpOyBicmVhazsKKwl9Cit9CisKK3ZvaWQgZnByaW50Zl9t
ZW51X25hbWUoSWRQdHIgbWVudSwgaW50IHJvb3QpCit7CisJaW50IHRjbGlkeCA9IDA7CisJaW50
IGNoaWxkaWR4ID0gMDsKKwlJZFB0ciBjdXJfbWVudTsKKworCWlmKG1lbnUtPm1lbnUtPnBhcmVu
dCkgeworCQlmcHJpbnRmX21lbnVfbmFtZShtZW51LT5tZW51LT5wYXJlbnQsIDApOworCQljdXJf
bWVudSA9IG1lbnUtPm1lbnUtPnBhcmVudC0+bWVudS0+Zmlyc3RfY2hpbGQ7CisJCWZvcig7Y3Vy
X21lbnUgJiYgKHN0cmNtcChjdXJfbWVudS0+bmFtZSxtZW51LT5uYW1lKSAhPSAwKTtjdXJfbWVu
dSA9IGN1cl9tZW51LT5tZW51LT5uZXh0KQorCQkJaWYoY3VyX21lbnUtPm1lbnUpIHsKKwkJCXRj
bGlkeCsrOworCQkJaWYoY3VyX21lbnUtPm1lbnUtPmZpcnN0X2NoaWxkKQorCQkJCWNoaWxkaWR4
Kys7CisJCQl9CisJCWlmKHJvb3QpCisJCQlmcHJpbnRmKHRjbGYsIi5mJWQiLHRjbGlkeCk7CisJ
CWVsc2UKKwkJCWZwcmludGYodGNsZiwiLmMlZCIsY2hpbGRpZHgpOworCX0gZWxzZQorCQlmcHJp
bnRmKHRjbGYsIi5mMCIpOworfQorCit2b2lkIGZwcmludGZfdXBkYXRlX21lbnUoSWRQdHIgbWVu
dSkKK3sKKwlmcHJpbnRmKHRjbGYsIlx0XHR1cGRhdGVfbWVudV9zeW0gIik7CisJZnByaW50Zl9t
ZW51X25hbWUobWVudSwxKTsKKwlpZiAobWVudS0+c3ltYm9sKSB7CisJCWZwcmludGYodGNsZiwi
ICIpOworCQlmcHJpbnRmX3R5cGUybmFtZShtZW51LT5zeW1ib2wtPnR5cGUpOworCQlmcHJpbnRm
KHRjbGYsICIgJWQgIix0eXBlMnhzaXplKG1lbnUtPnN5bWJvbC0+dHlwZSkpOworCX0gZWxzZQor
CQlmcHJpbnRmKHRjbGYsIiBTWU1fTk9ORSAwICIpOworCWlmKG1lbnUtPm1lbnUtPmRlcGVuZHMp
CisJCWV2YWx1YXRlX2V4cHJlc3Npb25zMnRrKHRjbGYsIG1lbnUtPm1lbnUtPmRlcGVuZHMpOwor
CWVsc2UKKwkJZnByaW50Zih0Y2xmLCJcIlwiIik7CisJZnByaW50Zih0Y2xmLCJcbiIpOworfQor
Cit2b2lkIGRvX3hzeW1zKElkUHRyIHN5bSkKK3sKKwlJZFB0ciBjdXJfc3ltOworCisJZm9yKGN1
cl9zeW0gPSBzeW07Y3VyX3N5bTtjdXJfc3ltID0gY3VyX3N5bS0+c3ltYm9sLT5uZXh0KSB7CisJ
CWZwcmludGYodGNsZiwic2V0IENPTkZJR18lcyAiLGN1cl9zeW0tPm5hbWUpOworCQlmcHJpbnRm
X3ZhbHVlMnRrKHRjbGYsY3VyX3N5bS0+c3ltYm9sLT50eXBlLGN1cl9zeW0tPnN5bWJvbC0+dmFs
dWUpOworCQlmcHJpbnRmKHRjbGYsIlxuIik7CisJfQorCisJZm9yKGN1cl9zeW0gPSBzeW07Y3Vy
X3N5bTtjdXJfc3ltID0gY3VyX3N5bS0+c3ltYm9sLT5uZXh0KSB7CisJCWZwcmludGYodGNsZiwi
cHJvYyBjaGFuZ2Vfc3ltX0NPTkZJR18lcyB7IHJvb3QgfSB7XG4iLGN1cl9zeW0tPm5hbWUpOwor
CQlmcHJpbnRmKHRjbGYsIlx0Z2xvYmFsIEFSQ0hcbiIpOworCQlmcHJpbnRmKHRjbGYsIlx0c2V0
IG9sZF9DT05GSUdfJXMgWyBnZXRfc3ltIENPTkZJR18lcyBdXG4iLGN1cl9zeW0tPm5hbWUsY3Vy
X3N5bS0+bmFtZSk7CisJCWlmKGN1cl9zeW0tPnN5bWJvbC0+ZGVwZW5kcyB8fCBjdXJfc3ltLT5z
eW1ib2wtPmRlcml2ZWQpIHsKKwkJCWZwcmludGYodGNsZiwiXHRpZiB7ICEgJHJvb3QgfSB7XG4i
KTsKKwkJCWlmKGN1cl9zeW0tPnN5bWJvbC0+ZGVwZW5kcykgeworCQkJCWZwcmludGYodGNsZiwi
XHRcdHVwZGF0ZV9kZXBlbmRzIENPTkZJR18lcyAiLGN1cl9zeW0tPm5hbWUpOworCQkJCWV2YWx1
YXRlX2V4cHJlc3Npb25zMnRrKHRjbGYsIGN1cl9zeW0tPnN5bWJvbC0+ZGVwZW5kcyk7CisJCQkJ
ZnByaW50Zih0Y2xmLCJcbiIpOworCQkJfQorCQkJaWYoY3VyX3N5bS0+c3ltYm9sLT5kZXJpdmVk
KSB7CisJCQkJZnByaW50Zih0Y2xmLCJcdFx0dXBkYXRlX2Rlcml2ZWQgQ09ORklHXyVzICIsY3Vy
X3N5bS0+bmFtZSk7CisJCQkJZXZhbHVhdGVfZXhwcmVzc2lvbnMydGsodGNsZiwgY3VyX3N5bS0+
c3ltYm9sLT5kZXJpdmVkKTsKKwkJCQlmcHJpbnRmKHRjbGYsIlxuIik7CisJCQl9CisJCQlmcHJp
bnRmKHRjbGYsIlx0fVxuIik7CisJCX0KKwkJZnByaW50Zih0Y2xmLCJcdGlmIHsgJG9sZF9DT05G
SUdfJXMgIT0gWyBnZXRfc3ltIENPTkZJR18lcyBdIHx8ICRyb290IH0ge1xuIixjdXJfc3ltLT5u
YW1lLGN1cl9zeW0tPm5hbWUpOworCQlpZihjdXJfc3ltLT5zeW1ib2wtPmFmZmVjdHMpIHsKKwkJ
CUlkTGlzdFB0ciBsaXN0OworCQkJZm9yKGxpc3Q9Y3VyX3N5bS0+c3ltYm9sLT5hZmZlY3RzO2xp
c3Q7bGlzdCA9IGxpc3QtPm5leHQpIHsKKwkJCQlpZiAobGlzdC0+aWQtPnN5bWJvbCkKKwkJCQkJ
ZnByaW50Zih0Y2xmLCJcdFx0Y2hhbmdlX3N5bV9DT05GSUdfJXMgZmFsc2VcbiIsbGlzdC0+aWQt
Pm5hbWUpOworCQkJCWlmIChsaXN0LT5pZC0+bWVudSkgeworCQkJCQlmcHJpbnRmX3VwZGF0ZV9t
ZW51KGxpc3QtPmlkKTsKKwkJCQl9CisJCQl9CisKKwkJfQorCQlmcHJpbnRmKHRjbGYsIlx0fVxu
Iik7CisKKwkJZnByaW50Zih0Y2xmLCJ9XG5cbiIpOworCX0KKworCWZwcmludGYodGNsZiwicHJv
YyB3cml0ZV9jb25maWcgeyBjb25mX25hbWUgY29uZl9oX25hbWUgfSB7XG4iKTsKKwlmcHJpbnRm
KHRjbGYsIlx0aWYgeyBbc3RyaW5nIGxlbmd0aCAkY29uZl9uYW1lXSAhPSAwXG4iKTsKKwlmcHJp
bnRmKHRjbGYsIlx0XHQmJiAoW2ZpbGUgd3JpdGFibGUgJGNvbmZfbmFtZV0gPT0gMSB8fCBcbiIp
OworCWZwcmludGYodGNsZiwiXHRcdChbZmlsZSBleGlzdHMgJGNvbmZfbmFtZV0gPT0gMCAmJiBb
ZmlsZSB3cml0YWJsZSBbZmlsZSBkaXJuYW1lICRjb25mX25hbWVdXSA9PSAxKSkgfSB0aGVuIHtc
biIpOworCWZwcmludGYodGNsZiwiXHRcdHNldCBjb25mIFsgb3BlbiAkY29uZl9uYW1lIHcgXVxu
Iik7CisJZnByaW50Zih0Y2xmLCJcdFx0c2V0IGNvbmZfaCBbIG9wZW4gJGNvbmZfaF9uYW1lIHcg
XVxuIik7CisJZnByaW50Zih0Y2xmLCJcdFx0cHV0cyAkY29uZl9oIFwiI2RlZmluZSBBVVRPQ09O
Rl9JTkNMVURFRFwiXG4iKTsKKwlmb3IoY3VyX3N5bSA9IHN5bTtjdXJfc3ltO2N1cl9zeW0gPSBj
dXJfc3ltLT5zeW1ib2wtPm5leHQpIHsKKwkJZnByaW50Zih0Y2xmLCJcdFx0Z2xvYmFsIENPTkZJ
R18lc1xuIixjdXJfc3ltLT5uYW1lKTsKKwkJZnByaW50Zih0Y2xmLCJcdFx0d3JpdGVfc3ltYm9s
ICRjb25mICRjb25mX2ggIik7CisJCWZwcmludGZfdHlwZTJuYW1lKGN1cl9zeW0tPnN5bWJvbC0+
dHlwZSk7CisJCWZwcmludGYodGNsZiwiIENPTkZJR18lcyAkQ09ORklHXyVzXG4iLGN1cl9zeW0t
Pm5hbWUsY3VyX3N5bS0+bmFtZSk7CisJfQorCWZwcmludGYodGNsZiwiXHRcdGNsb3NlICRjb25m
XG4iKTsKKwlmcHJpbnRmKHRjbGYsIlx0XHRjbG9zZSAkY29uZl9oXG4iKTsKKwlmcHJpbnRmKHRj
bGYsIlx0fVxuXG4iKTsKKwlmcHJpbnRmKHRjbGYsIn1cblxuIik7Cit9CisKK3ZvaWQgZG9feG1l
bnUoSWRQdHIgbWVudSwgY2hhciAqbmFtZSkKK3sKKwljaGFyIHN1Yl9uYW1lW01BWF9NRU5VX05B
TUVdOworCWludCBzdWJfaW5kZXgsdGNsaWR4OworCWludCBoYXZlX3N5bQkJPSAwOworCWludCBo
YXZlX2Rlc2MJCT0gMDsKKwlpbnQgaGF2ZV9jaGlsZAk9IDA7CisJSWRQdHIgY3VyX21lbnU7CisK
KwlzdWJfaW5kZXggPSAwOworCWZvcihjdXJfbWVudSA9IG1lbnU7Y3VyX21lbnU7Y3VyX21lbnUg
PSBjdXJfbWVudS0+bWVudS0+bmV4dCkgeworCQlpZihjdXJfbWVudS0+c3ltYm9sKQorCQkJaGF2
ZV9zeW0gPSB0eXBlMnhzaXplKGN1cl9tZW51LT5zeW1ib2wtPnR5cGUpOworCisJCWlmKGN1cl9t
ZW51LT5tZW51LT5maXJzdF9jaGlsZCkgeworCQkJc3ByaW50ZihzdWJfbmFtZSwiJXNfJWQiLG5h
bWUsc3ViX2luZGV4KyspOworCQkJZG9feG1lbnUoY3VyX21lbnUtPm1lbnUtPmZpcnN0X2NoaWxk
LCZzdWJfbmFtZVswXSk7CisJCQloYXZlX2NoaWxkID0gMTsKKwkJfQorCisJCWlmKGN1cl9tZW51
LT5kZXNjX2xlbmd0aCkKKwkJCWhhdmVfZGVzYyA9IDE7CisJfQorCisJZnByaW50Zih0Y2xmLCJc
biIpOworCWZwcmludGYodGNsZiwgInByb2MgJXMgeyB3IH0ge1xuIixuYW1lKTsKKwlzdWJfaW5k
ZXggPSAwOworCXRjbGlkeCA9IDA7CisJZm9yKGN1cl9tZW51ID0gbWVudTtjdXJfbWVudTtjdXJf
bWVudSA9IGN1cl9tZW51LT5tZW51LT5uZXh0KSB7CisKKwkJZnByaW50Zih0Y2xmLCAiXHRjb25m
aWdfb3B0aW9uICR3ICVkIFwiJXNcIiAiLHRjbGlkeCxjdXJfbWVudS0+bWVudS0+Y2FwdGlvbik7
CisKKwkJaWYoY3VyX21lbnUtPnN5bWJvbCkgeworCQkJQ1NZTVRZUEU7CisJCQlmcHJpbnRmKHRj
bGYsICIgQ09ORklHXyVzICVkICIsY3VyX21lbnUtPm5hbWUsaGF2ZV9zeW0pOworCQl9IGVsc2Ug
eworCQkJZnByaW50Zih0Y2xmLCAiU1lNX05PTkUgXCJcIiAlZCAiLGhhdmVfc3ltKTsKKwkJfQor
CisJCWlmKGN1cl9tZW51LT5kZXNjX2xlbmd0aCkgeworCQkJZnByaW50Zih0Y2xmLCAiXCJkb2hl
bHAgLmRvaGVscCAuIFxcXCIlc1xcXCIgJWxkICVsZFwiIHRydWUgIiwKKwkJCQljdXJfbWVudS0+
Y29uZmlnX2ZpbGUsCisJCQkJY3VyX21lbnUtPmRlc2Nfc3RhcnQsY3VyX21lbnUtPmRlc2NfbGVu
Z3RoKTsKKwkJfSBlbHNlIHsKKwkJCWZwcmludGYodGNsZiwgIlwiXCIgJXMgIiwgaGF2ZV9kZXNj
ID8gInRydWUiIDogImZhbHNlIik7CisJCX0KKworCQlpZihjdXJfbWVudS0+bWVudS0+Zmlyc3Rf
Y2hpbGQpIHsKKwkJCXNwcmludGYoc3ViX25hbWUsIiVzXyVkIixuYW1lLHN1Yl9pbmRleCk7CisJ
CQlmcHJpbnRmKHRjbGYsICJcIiVzICR3LmMlZFwiIHRydWVcbiIsJnN1Yl9uYW1lWzBdLHRjbGlk
eCk7CisJCQlzdWJfaW5kZXgrKzsKKwkJfSBlbHNlIHsKKwkJCWZwcmludGYodGNsZiwgIlwiXCIg
JXNcbiIsIGhhdmVfY2hpbGQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJfQorCisJCWZwcmludGZf
dXBkYXRlX21lbnUoY3VyX21lbnUpOworCQl0Y2xpZHgrKzsKKwl9CisJZnByaW50Zih0Y2xmLCAi
fVxuXG4iKTsKKworfQogCiBpbnQgZG9feGNvbmZpZygpCiB7Ci0gICAgcmV0dXJuIDE7CisJRklM
RSAqaGVhZGVyOworCWludCBjaDsKKworCXRjbGYgPSBmb3BlbigiWENtZW51IiwgInd0Iik7CisK
KwloZWFkZXIgPSBmb3BlbigiY29uZi9oZWFkZXIudGsiLCJyIik7CisJd2hpbGUgKCFmZW9mKGhl
YWRlcikpIHsKKwkJY2ggPSBmZ2V0YyhoZWFkZXIpOworCQlpZiAoY2ggPj0gMCkgZnB1dGMoY2gs
IHRjbGYpOworCX0KKwlmY2xvc2UoaGVhZGVyKTsKKworCWZwcmludGYodGNsZiwic2V0IEFSQ0gg
aTM4NlxuIik7CisJZG9feHN5bXMoZmlyc3Rfc3ltYm9sKTsKKworCWRvX3htZW51KHJvb3RfbWVu
dS0+bWVudS0+Zmlyc3RfY2hpbGQsImRvbWVudSIpOworCisJZnByaW50Zih0Y2xmLCJyZWFkX2Nv
bmZpZyAuY29uZmlnXG4iKTsKKwlmcHJpbnRmKHRjbGYsImZyYW1lIC5mMFxuIik7CisJZnByaW50
Zih0Y2xmLCJpbml0X3dpbmRvdyAuZjAgXCIlc1wiXG4iLHJvb3RfbWVudS0+bWVudS0+Y2FwdGlv
bik7CisJZnByaW50Zih0Y2xmLCJkb21lbnUgLmYwXG4iKTsKKwlmcHJpbnRmKHRjbGYsImNyZWF0
ZV9zY3JvbGxiYXIgLmYwXG4iKTsKKwlmcHJpbnRmKHRjbGYsInBhY2sgLmYwXG4iKTsKKwlmcHJp
bnRmKHRjbGYsImJ1dHRvbiAuc2F2ZSAtdGV4dCBcIlNhdmVcIiAtY29tbWFuZCBcIndyaXRlX2Nv
bmZpZyAuY29uZmlnIGluY2x1ZGUvbGludXgvYXV0b2NvbmYuaFwiXG4iKTsKKwlmcHJpbnRmKHRj
bGYsInBhY2sgLnNhdmVcbiIpOworCWZwcmludGYodGNsZiwiYnV0dG9uIC5sb2FkIC10ZXh0IFwi
TG9hZFwiIC1jb21tYW5kIFwicmVhZF9jb25maWcgLmNvbmZpZ1wiXG4iKTsKKwlmcHJpbnRmKHRj
bGYsInBhY2sgLmxvYWRcbiIpOworCWZjbG9zZSh0Y2xmKTsKKworCXN5c3RlbSgid2lzaCAtZiBY
Q21lbnUiKTsKKworCXVubGluaygiWENtZW51Iik7CisJcmV0dXJuIDA7CiB9CiAKZGlmZiAtdU5y
YiBrZXJuZWxjb25mLTAuMS4yL2NvbmYveGNvbmZpZy5kIGtlcm5lbGNvbmYtMC4xLjIubmV3L2Nv
bmYveGNvbmZpZy5kCi0tLSBrZXJuZWxjb25mLTAuMS4yL2NvbmYveGNvbmZpZy5kCVRodSBKYW4g
IDEgMDE6MDA6MDAgMTk3MAorKysga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi94Y29uZmlnLmQJ
VHVlIEZlYiAgNSAyMDo0OTowNyAyMDAyCkBAIC0wLDAgKzEsMTcgQEAKK3hjb25maWcubzogeGNv
bmZpZy5jIC91c3IvaW5jbHVkZS9jdHlwZS5oIC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIFwKKyAv
dXNyL2luY2x1ZGUvc3lzL2NkZWZzLmggL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIFwKKyAvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIFwKKyAvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45
NS40L2luY2x1ZGUvc3RkZGVmLmggXAorIC91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5o
IC91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmggXAorIC91c3IvaW5jbHVkZS9lbmRpYW4uaCAvdXNy
L2luY2x1ZGUvYml0cy9lbmRpYW4uaCAvdXNyL2luY2x1ZGUvc3RkaW8uaCBcCisgL3Vzci9pbmNs
dWRlL2xpYmlvLmggL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIC91c3IvaW5jbHVkZS93Y2hhci5o
IFwKKyAvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIC91c3IvaW5jbHVkZS9nY29udi5oIFwKKyAv
dXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMi45NS40L2luY2x1ZGUvc3RkYXJnLmggXAorIC91
c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIC91c3IvaW5jbHVkZS9zdHJpbmcuaCBcCisgL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCAvdXNyL2luY2x1ZGUv
dGltZS5oIFwKKyAvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIC91c3IvaW5jbHVkZS9iaXRzL3Nl
bGVjdC5oIFwKKyAvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCAvdXNyL2luY2x1ZGUvYml0cy90
aW1lLmggXAorIC91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmggL3Vzci9pbmNsdWRlL2FsbG9j
YS5oIFwKKyAvdXNyL2luY2x1ZGUvdW5pc3RkLmggL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0
LmggXAorIC91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmggL3Vzci9pbmNsdWRlL2dldG9wdC5o
IGtlcm5lbGNvbmYuaCBcCisgZXhwcmVzc2lvbnMuaApCaW5hcnkgZmlsZXMga2VybmVsY29uZi0w
LjEuMi9jb25mL3hjb25maWcubyBhbmQga2VybmVsY29uZi0wLjEuMi5uZXcvY29uZi94Y29uZmln
Lm8gZGlmZmVyCg==

--------------Boundary-00=_5YS2R4BJFA47RJAVYCX0--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/