IA-64 port

Gwenole Beauchesne kaffe@rufus.w3.org
Tue, 11 Dec 2001 12:02:40 +0100 (CET)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---1463777692-685431467-1008068560=:3092
Content-Type: TEXT/PLAIN; charset=ISO-8859-1
Content-Transfer-Encoding: QUOTED-PRINTABLE

On Mon, 10 Dec 2001, John R. Daily wrote:

> I've been working to get kaffe working on Debian/ia64 via libffi,
> and I've run into a roadblock.

I too provided a port of the interpreter (no JIT then) in Mandrake Linux
8.1 for Itanium. Patches are attached, to be compiled with gcc3. libffi is
not required. Details will come later since I am a little sick at the
moment.

Second patch from release 11mdk attached.

Bye,
Gwenol=E9.

---1463777692-685431467-1008068560=:3092
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="kaffe-1.0.6-ia64.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33L2.0112111202400.3092@thalys.mandrakesoft.com>
Content-Description: ia64 patch against snapshot 2001/08/19
Content-Disposition: attachment; filename="kaffe-1.0.6-ia64.patch"

LS0tIGthZmZlLXNuYXAva2FmZmUva2FmZmUvbWFpbi5jLmlhNjQJU3VuIEF1
ZyAxOSAxNjo0MTozNCAyMDAxDQorKysga2FmZmUtc25hcC9rYWZmZS9rYWZm
ZS9tYWluLmMJVGh1IE5vdiAyOSAwOTo0MTo0MyAyMDAxDQpAQCAtMzAxLDYg
KzMwMSwxMiBAQA0KIAkJCXByaW50RnVsbFZlcnNpb24oKTsNCiAJCQlleGl0
KDApOw0KIAkJfQ0KKyNpZiBkZWZpbmVkKF9faWE2NF9fKQ0KKwkJZWxzZSBp
ZiAoc3RyY21wKGFyZ3ZbaV0sICItaWEzMiIpID09IDApIHsNCisJCQlpKys7
DQorCQkJLyogRklYTUU6IHNraXAsIGNhc2UgaGFuZGxlZCBieSB0aGUgY2Fs
bGUgc2NyaXB0ICovDQorCQl9DQorI2VuZGlmDQogCQllbHNlIGlmIChzdHJj
bXAoYXJndltpXSwgIi1jbGFzc3BhdGgiKSA9PSAwKSB7DQogCQkJaSsrOw0K
IAkJCWlmIChhcmd2W2ldID09IDApIHsNCkBAIC01NzEsNiArNTc3LDkgQEAN
CiAJZHByaW50ZigiCS1oZWxwCQkJUHJpbnQgdGhpcyBtZXNzYWdlXG4iKTsN
CiAJZHByaW50ZigiCS12ZXJzaW9uCQlQcmludCB2ZXJzaW9uIG51bWJlclxu
Iik7DQogCWRwcmludGYoIgktZnVsbHZlcnNpb24JCVByaW50IHZlcmJvc2Ug
dmVyc2lvbiBpbmZvXG4iKTsNCisjaWYgZGVmaW5lZChfX2lhNjRfXykNCisJ
ZHByaW50ZigiCS1pYTMyCQkJRXhlY3V0ZSB0aGUgaWEzMiB2ZXJzaW9uIG9m
IEthZmZlXG4iKTsNCisjZW5kaWYNCiAJZHByaW50ZigiCS1zcyA8c2l6ZT4J
CU1heGltdW0gbmF0aXZlIHN0YWNrIHNpemVcbiIpOw0KIAlkcHJpbnRmKCIJ
LW14IDxzaXplPiAJCU1heGltdW0gaGVhcCBzaXplXG4iKTsNCiAJZHByaW50
ZigiCS1tcyA8c2l6ZT4gCQlJbml0aWFsIGhlYXAgc2l6ZVxuIik7DQotLS0g
a2FmZmUtc25hcC9rYWZmZS9rYWZmZXZtL3N5c3RlbXMvdW5peC1qdGhyZWFk
cy9qdGhyZWFkLmMuaWE2NAlGcmkgSnVuIDIyIDA2OjUzOjQxIDIwMDENCisr
KyBrYWZmZS1zbmFwL2thZmZlL2thZmZldm0vc3lzdGVtcy91bml4LWp0aHJl
YWRzL2p0aHJlYWQuYwlUaHUgTm92IDI5IDA5OjQxOjQzIDIwMDENCkBAIC0x
NzAsNiArMTcwLDE2IEBADQogI2RlZmluZSBHRVRfRlAoRSkgICAgICAgKCgo
dm9pZCoqKShFKSlbRlBfT0ZGU0VUXSkNCiAjZGVmaW5lIFNFVF9GUChFLCBW
KSAgICAoKHZvaWQqKikoRSkpW0ZQX09GRlNFVF0gPSAoVikNCiANCisvKg0K
KyAqIE1hY3JvcyB0byBzZXQgYW5kIGV4dHJhY3QgYmFja2luZyBzdG9yZSBw
b2ludGVyIGZyb20gam1wX2J1Zg0KKyAqIChJQS02NCBzcGVjaWZpYykNCisg
Ki8NCisjaWYgZGVmaW5lZChfX2lhNjRfXykNCisjZGVmaW5lIEJTUF9PRkZT
RVQJMTcNCisjZGVmaW5lIEdFVF9CU1AoRSkJKCgodm9pZCoqKShFKSlbQlNQ
X09GRlNFVF0pDQorI2RlZmluZSBTRVRfQlNQKEUsIFYpCSgodm9pZCoqKShF
KSlbQlNQX09GRlNFVF0gPSAoVikNCisjZW5kaWYNCisNCiAvKiBTZXQgdGhl
IGJhc2UgcG9pbnRlciBpbiBhIGptcF9idWYgaWYgd2UgY2FuIChvbmx5IGEg
Y29udmVuaWVuY2UpICovDQogI2lmIGRlZmluZWQoQlBfT0ZGU0VUKQ0KICNk
ZWZpbmUgU0VUX0JQKEUsIFYpICAgICgodm9pZCoqKShFKSlbQlBfT0ZGU0VU
XSA9IChWKQ0KQEAgLTEyNDUsNiArMTI1NSwxNiBAQA0KIHsNCiAJanRocmVh
ZCAqanRpZDsgDQogCXZvaWQJKm9sZHN0YWNrLCAqbmV3c3RhY2s7DQorI2lm
IGRlZmluZWQoX19pYTY0X18pDQorCXZvaWQJKm9sZGJzcCwgKm5ld2JzcDsN
CisjZW5kaWYNCisJc2l6ZV90ICAgcGFnZV9zaXplOw0KKwkNCisJLyogQWRq
dXN0IHN0YWNrIHNpemUgKi8NCisJcGFnZV9zaXplID0gZ2V0cGFnZXNpemUo
KTsNCisJaWYgKHRocmVhZFN0YWNrU2l6ZSA9PSAwKQ0KKwkJdGhyZWFkU3Rh
Y2tTaXplID0gVEhSRUFEU1RBQ0tTSVpFOw0KKwl0aHJlYWRTdGFja1NpemUg
PSAodGhyZWFkU3RhY2tTaXplICsgcGFnZV9zaXplIC0gMSkgJiAtcGFnZV9z
aXplOw0KIA0KIAkvKg0KIAkgKiBEaXNhYmxlIHN0b3AgdG8gcHJvdGVjdCB0
aGUgdGhyZWFkTG9jayBsb2NrLCBhbmQgcHJldmVudA0KQEAgLTEyNTQsNyAr
MTI3NCw3IEBADQogCWp0aHJlYWRfZGlzYWJsZV9zdG9wKCk7DQogDQogCWpt
dXRleF9sb2NrKCZ0aHJlYWRMb2NrKTsNCi0gICAgICAgIGp0aWQgPSBuZXdU
aHJlYWRDdHgodGhyZWFkU3RhY2tTaXplKTsNCisJanRpZCA9IG5ld1RocmVh
ZEN0eCh0aHJlYWRTdGFja1NpemUpOw0KIAlpZiAoIWp0aWQpIHsNCiAJCWpt
dXRleF91bmxvY2soJnRocmVhZExvY2spOw0KIAkJanRocmVhZF9lbmFibGVf
c3RvcCgpOw0KQEAgLTEyODksNyArMTMwOSw3IEBADQogCSAqDQogCSAqIFRv
IGJlIHNhZmUsIHdlIGltbWVkaWF0ZWx5IGNhbGwgYSBuZXcgZnVuY3Rpb24u
DQogCSAqLw0KLSAgICAgICAgaWYgKEpUSFJFQURfU0VUSk1QKGp0aWQtPmVu
dikpIHsNCisgICAgICAgIGlmIChKVEhSRUFEX1NFVEpNUChKVEhSRUFEX0FD
Q0VTU19KTVBCVUYoanRpZCwgZW52KSkpIHsNCiAJCS8qIG5ldyB0aHJlYWQg
Ki8NCiAJCXN0YXJ0X3RoaXNfc3Vja2VyX29uX2FfbmV3X2ZyYW1lKCk7DQog
CQlhc3NlcnQoISJOZXZlciEiKTsNCkBAIC0xMzAwLDM0ICsxMzIwLDU3IEBA
DQogCVNBVkVfRlAoanRpZC0+ZnBzdGF0ZSk7DQogI2VuZGlmDQogCS8qIHNl
dCB1cCBjb250ZXh0IGZvciBuZXcgdGhyZWFkICovDQotCW9sZHN0YWNrID0g
R0VUX1NQKGp0aWQtPmVudik7DQorCW9sZHN0YWNrID0gR0VUX1NQKEpUSFJF
QURfQUNDRVNTX0pNUEJVRihqdGlkLCBlbnYpKTsNCisjaWYgZGVmaW5lZChf
X2lhNjRfXykNCisJb2xkYnNwID0gR0VUX0JTUChKVEhSRUFEX0FDQ0VTU19K
TVBCVUYoanRpZCwgZW52KSk7DQorI2VuZGlmDQogDQogI2lmIGRlZmluZWQo
U1RBQ0tfR1JPV1NfVVApDQogCW5ld3N0YWNrID0ganRpZC0+c3RhY2tCYXNl
K1NUQUNLX0NPUFk7DQogCW1lbWNweShuZXdzdGFjay1TVEFDS19DT1BZLCBv
bGRzdGFjay1TVEFDS19DT1BZLCBTVEFDS19DT1BZKTsNCiAjZWxzZSAvKiAh
U1RBQ0tfR1JPV1NfVVAgKi8NCi0JbmV3c3RhY2sgPSBqdGlkLT5zdGFja0Vu
ZC1TVEFDS19DT1BZOw0KKwluZXdzdGFjayA9IGp0aWQtPnN0YWNrRW5kOw0K
KyNpZiBkZWZpbmVkKF9faWE2NF9fKQ0KKwkvKg0KKwkgKiBUaGUgc3RhY2sg
c2VnbWVudCBpcyBzcGxpdCBpbiB0aGUgbWlkZGxlLiBUaGUgdXBwZXIgaGFs
ZiBpcyB1c2VkDQorCSAqIGFzIGJhY2tpbmcgc3RvcmUgZm9yIHRoZSByZWdp
c3RlciBzdGFjayB3aGljaCBncm93cyB1cHdhcmQuDQorCSAqIFRoZSBsb3dl
ciBoYWxmIGlzIHVzZWQgZm9yIHRoZSB0cmFkaXRpb25hbCBtZW1vcnkgc3Rh
Y2sgd2hpY2gNCisJICogZ3Jvd3MgZG93bndhcmQuIEJvdGggc3RhY2tzIHN0
YXJ0IGluIHRoZSBtaWRkbGUgYW5kIGdyb3cgb3V0d2FyZA0KKwkgKiBmcm9t
IGVhY2ggb3RoZXIuDQorCSAqLw0KKwluZXdzdGFjayAtPSAodGhyZWFkU3Rh
Y2tTaXplID4+IDEpOw0KKwluZXdic3AgPSBuZXdzdGFjazsNCisJLyogTWFr
ZSByZWdpc3RlciBzdGFjayA2NC1ieXRlIGFsaWduZWQgKi8NCisJaWYgKCh1
bnNpZ25lZCBsb25nKW5ld2JzcCAmIDB4M2YpDQorCQluZXdic3AgPSBuZXdi
c3AgKyAoMHg0MCAtICgodW5zaWduZWQgbG9uZyluZXdic3AgJiAweDNmKSk7
DQorCW5ld2JzcCArPSBTVEFDS19DT1BZOw0KKwltZW1jcHkobmV3YnNwLVNU
QUNLX0NPUFksIG9sZGJzcC1TVEFDS19DT1BZLCBTVEFDS19DT1BZKTsNCisj
ZW5kaWYNCisJbmV3c3RhY2sgLT0gU1RBQ0tfQ09QWTsNCiAJbWVtY3B5KG5l
d3N0YWNrLCBvbGRzdGFjaywgU1RBQ0tfQ09QWSk7DQogI2VuZGlmIC8qICFT
VEFDS19HUk9XU19VUCAqLw0KIA0KICNpZiBkZWZpbmVkKE5FRURfU1RBQ0tf
QUxJR04pDQotICAgICAgICBuZXdzdGFjayA9ICh2b2lkICopIFNUQUNLX0FM
SUdOKG5ld3N0YWNrKTsNCisJbmV3c3RhY2sgPSAodm9pZCAqKSBTVEFDS19B
TElHTihuZXdzdGFjayk7DQogI2VuZGlmDQogDQotCVNFVF9TUChqdGlkLT5l
bnYsIG5ld3N0YWNrKTsNCisJU0VUX1NQKEpUSFJFQURfQUNDRVNTX0pNUEJV
RihqdGlkLCBlbnYpLCBuZXdzdGFjayk7DQorI2lmIGRlZmluZWQoX19pYTY0
X18pDQorCVNFVF9CU1AoSlRIUkVBRF9BQ0NFU1NfSk1QQlVGKGp0aWQsIGVu
diksIG5ld2JzcCk7DQorI2VuZGlmDQogDQogI2lmIGRlZmluZWQoU0VUX0JQ
KQ0KIAkvKg0KIAkgKiBDbGVhciB0aGUgYmFzZSBwb2ludGVyIGluIHRoZSBu
ZXcgdGhyZWFkJ3Mgc3RhY2suDQogCSAqIE5pY2UgZm9yIGRlYnVnZ2luZywg
YnV0IG5vdCBzdHJpY3RseSBuZWNlc3NhcnkuDQogCSAqLw0KLQlTRVRfQlAo
anRpZC0+ZW52LCAwKTsNCisJU0VUX0JQKEpUSFJFQURfQUNDRVNTX0pNUEJV
RihqdGlkLCBlbnYpLCAwKTsNCiAjZW5kaWYNCiANCiANCiAjaWYgZGVmaW5l
ZChGUF9PRkZTRVQpDQogCS8qIG5lZWRlZCBmb3I6IElSSVggKi8NCi0JU0VU
X0ZQKGp0aWQtPmVudiwgbmV3c3RhY2sgKyAoKHZvaWQgKilHRVRfRlAoanRp
ZC0+ZW52KSAtIG9sZHN0YWNrKSk7DQorCVNFVF9GUChKVEhSRUFEX0FDQ0VT
U19KTVBCVUYoanRpZCwgZW52KSwgbmV3c3RhY2sgKyAoKHZvaWQgKilHRVRf
RlAoSlRIUkVBRF9BQ0NFU1NfSk1QQlVGKGp0aWQsIGVudikpIC0gb2xkc3Rh
Y2spKTsNCiAjZW5kaWYNCiANCiAgICAgICAgIHJlc3VtZVRocmVhZChqdGlk
KTsNCkBAIC0xNTc0LDEwICsxNjE3LDkgQEANCiAjaWYgZGVmaW5lZChDT05U
RVhUX1NXSVRDSCkNCiAJCQkJQ09OVEVYVF9TV0lUQ0gobGFzdFRocmVhZCwg
Y3VycmVudEpUaHJlYWQpOw0KICNlbHNlDQotCQkJCWlmIChKVEhSRUFEX1NF
VEpNUChsYXN0VGhyZWFkLT5lbnYpID09IDApIHsNCi0JCQkJICAgIGxhc3RU
aHJlYWQtPnJlc3RvcmVQb2ludCA9IA0KLQkJCQkJR0VUX1NQKGxhc3RUaHJl
YWQtPmVudik7DQotCQkJCSAgICBKVEhSRUFEX0xPTkdKTVAoY3VycmVudEpU
aHJlYWQtPmVudiwgMSk7DQorCQkJCWlmIChKVEhSRUFEX1NFVEpNUChKVEhS
RUFEX0FDQ0VTU19KTVBCVUYobGFzdFRocmVhZCwgZW52KSkgPT0gMCkgew0K
KwkJCQkgICAgbGFzdFRocmVhZC0+cmVzdG9yZVBvaW50ID0gR0VUX1NQKEpU
SFJFQURfQUNDRVNTX0pNUEJVRihsYXN0VGhyZWFkLCBlbnYpKTsNCisJCQkJ
ICAgIEpUSFJFQURfTE9OR0pNUChKVEhSRUFEX0FDQ0VTU19KTVBCVUYoY3Vy
cmVudEpUaHJlYWQsIGVudiksIDEpOw0KIAkJCQl9DQogI2VuZGlmDQogI2lm
IGRlZmluZWQoTE9BRF9GUCkNCi0tLSBrYWZmZS1zbmFwL2thZmZlL2thZmZl
dm0vc3lzdGVtcy91bml4LWp0aHJlYWRzL2p0aHJlYWQuaC5pYTY0CVdlZCBK
dW4gMjEgMDk6MDc6MzUgMjAwMA0KKysrIGthZmZlLXNuYXAva2FmZmUva2Fm
ZmV2bS9zeXN0ZW1zL3VuaXgtanRocmVhZHMvanRocmVhZC5oCVRodSBOb3Yg
MjkgMDk6NDE6NDMgMjAwMQ0KQEAgLTkwLDcgKzkwLDcgQEANCiAJICogdXNl
ZCB0byBob2xkIHRoZSBjdXJyZW50IEphdmEgdGhyZWFkDQogCSAqLw0KIAl2
b2lkKgkJCQlqbFRocmVhZDsNCi0JSlRIUkVBRF9KTVBCVUYJCQllbnY7DQor
CUpUSFJFQURfREVDTEFSRV9KTVBCVUYJCShlbnYpOw0KICNpZiBkZWZpbmVk
KFNBVkVEX0ZQX1NJWkUpDQogCWNoYXIJCQkJZnBzdGF0ZVtTQVZFRF9GUF9T
SVpFXTsNCiAjZW5kaWYNCi0tLSBrYWZmZS1zbmFwL2thZmZlL2thZmZldm0v
am5pLmMuaWE2NAlGcmkgSnVuIDIyIDA2OjUzOjM5IDIwMDENCisrKyBrYWZm
ZS1zbmFwL2thZmZlL2thZmZldm0vam5pLmMJVGh1IE5vdiAyOSAwOTo0MTo0
MyAyMDAxDQpAQCAtMzUwMiw3ICszNTAyLDcgQEANCiAJCSAqIGhhbmRsaW5n
LCBhcyB3ZWxsIGFzIGZ1bmN0aW9ucyB3aGljaCBvbmx5IGRlbGF5DQogCQkg
KiBleHRlcm5hbCBleGNlcHRpb25zLg0KIAkJICovDQotCQlKVEhSRUFEX0xP
TkdKTVAoZnJhbWUtPmpidWYsIDEpOw0KKwkJSlRIUkVBRF9MT05HSk1QKEpU
SFJFQURfQUNDRVNTX0pNUEJVRihmcmFtZSwgamJ1ZiksIDEpOw0KIAl9DQog
fQ0KIA0KLS0tIGthZmZlLXNuYXAva2FmZmUva2FmZmV2bS9leGNlcHRpb24u
Yy5pYTY0CUZyaSBKdW4gMjIgMDY6NTM6MzkgMjAwMQ0KKysrIGthZmZlLXNu
YXAva2FmZmUva2FmZmV2bS9leGNlcHRpb24uYwlUaHUgTm92IDI5IDA5OjQx
OjQzIDIwMDENCkBAIC00MzIsMTIgKzQzMiwxMiBAQA0KIAkJCWlmIChyZXMg
PT0gdHJ1ZSkgew0KIAkJCQl1bmhhbmQoY3QpLT5uZWVkT25TdGFjayA9IFNU
QUNLX0hJR0g7DQogCQkJCWZyYW1lLT5wYyA9IGVpbmZvLmhhbmRsZXI7DQot
CQkJCUpUSFJFQURfTE9OR0pNUChmcmFtZS0+amJ1ZiwgMSk7DQorCQkJCUpU
SFJFQURfTE9OR0pNUChKVEhSRUFEX0FDQ0VTU19KTVBCVUYoZnJhbWUsIGpi
dWYpLCAxKTsNCiAJCQl9DQogDQogCQkJLyogSWYgbm90IGhlcmUsIGV4aXQg
bW9uaXRvciBpZiBzeW5jaHJvbmlzZWQuICovDQogCQkJaWYgKG9iaiAhPSAw
ICYmIChlaW5mby5tZXRob2QtPmFjY2ZsYWdzICYgQUNDX1NZTkNIUk9OSVNF
RCkgIT0gMCkgew0KLQkJCQlfc2xvd1VubG9ja011dGV4SWZIZWxkKCZvYmot
PmxvY2ssIGZyYW1lLT5qYnVmKTsNCisJCQkJX3Nsb3dVbmxvY2tNdXRleElm
SGVsZCgmb2JqLT5sb2NrLCBKVEhSRUFEX0FDQ0VTU19KTVBCVUYoZnJhbWUs
IGpidWYpKTsNCiAJCQl9DQogCQl9DQogCX0NCi0tLSBrYWZmZS1zbmFwL2th
ZmZlL2thZmZldm0vZXhjZXB0aW9uLmguaWE2NAlGcmkgSnVuIDIyIDA2OjUz
OjM5IDIwMDENCisrKyBrYWZmZS1zbmFwL2thZmZlL2thZmZldm0vZXhjZXB0
aW9uLmgJVGh1IE5vdiAyOSAwOTo0MTo0MyAyMDAxDQpAQCAtMzgsNyArMzgs
NyBAQA0KIA0KIHR5cGVkZWYgc3RydWN0IF92bUV4Y2VwdGlvbiB7DQogCXN0
cnVjdCBfdm1FeGNlcHRpb24qCQlwcmV2Ow0KLQlKVEhSRUFEX0pNUEJVRgkJ
CWpidWY7DQorCUpUSFJFQURfREVDTEFSRV9KTVBCVUYJCShqYnVmKTsNCiAJ
c3RydWN0IF9tZXRob2RzKgkJbWV0aDsNCiAJdTQJCQkJcGM7DQogCXN0cnVj
dCBIamF2YV9sYW5nX09iamVjdCoJbW9iajsNCi0tLSBrYWZmZS1zbmFwL2th
ZmZlL3NjcmlwdHMva2FmZmUuaW4uaWE2NAlNb24gT2N0IDE4IDA0OjIwOjQ0
IDE5OTkNCisrKyBrYWZmZS1zbmFwL2thZmZlL3NjcmlwdHMva2FmZmUuaW4J
VGh1IE5vdiAyOSAwOTo0MTo0MyAyMDAxDQpAQCAtMzgsNiArMzgsMjAgQEAN
CiA6ICR7S0FGRkVfTkFUSVZFX0xJQlJBUllfRElSPSJAbmF0aXZlZGlyQCJ9
DQogOiAke0tBRkZFX09MRF9OQVRJVkVfTElCUkFSWV9ESVI9IiRLQUZGRV9D
TEFTU0RJUi9saWIvQEtBRkZFX0FSQ0hPU0AifQ0KIA0KK2lmIHRlc3QgeCIk
KHVuYW1lIC1tKSJ4ID0geCJpYTY0Ing7IHRoZW4NCisgICMgVXNlIGlhMzIg
dmVyc2lvbiBvZiBLYWZmZSwgaWYgcmVxdWVzdGVkDQorICBpYTMybW9kZT1u
bw0KKyAgZm9yIGFyZyBpbiAiJEAiOyBkbw0KKyAgICBbIC16ICIke2FyZy8j
LWlhMzIvfSIgXSAmJiBpYTMybW9kZT15ZXMNCisgIGRvbmUNCisgIGlmIHRl
c3QgeCIke2lhMzJtb2RlfSJ4ID0geCJ5ZXMieDsgdGhlbg0KKyAgICBLQUZG
RV9UQVJHRVRfQVJDSD0kKGVjaG8gJHtLQUZGRV9MSUJESVIvaWE2NC9pPzg2
fSB8IHNlZCAtZSAicy8uKlwoaS44NlwpL1wxLyIpDQorICAgIEtBRkZFX0xJ
QkRJUj0ke0tBRkZFX0xJQkRJUi9pYTY0LyRLQUZGRV9UQVJHRVRfQVJDSH0N
CisgICAgS0FGRkVfTElCRVhFQ0RJUj0ke0tBRkZFX0xJQkVYRUNESVIvaWE2
NC8kS0FGRkVfVEFSR0VUX0FSQ0h9DQorICAgIEtBRkZFX05BVElWRV9MSUJS
QVJZX0RJUj0ke0tBRkZFX05BVElWRV9MSUJSQVJZX0RJUi9pYTY0LyRLQUZG
RV9UQVJHRVRfQVJDSH0NCisgIGZpDQorZmkNCisNCiBpZiB0ZXN0IHgiJHtL
QUZGRUhPTUUrc2V0fSJ4ICE9IHgic2V0Ing7IHRoZW4NCiAgIEtBRkZFSE9N
RT0iQHByZWZpeEAiDQogZmkNCi0tLSBrYWZmZS1zbmFwL2NvbmZpZy9NYWtl
ZmlsZS5hbS5pYTY0CVN1biBBdWcgMTkgMTY6NDE6MzIgMjAwMQ0KKysrIGth
ZmZlLXNuYXAvY29uZmlnL01ha2VmaWxlLmFtCVRodSBOb3YgMjkgMDk6NDE6
NDMgMjAwMQ0KQEAgLTYwLDYgKzYwLDExIEBADQogCWFybS9uZXRic2QxL21k
LmggXA0KIAlhcm0vdGhyZWFkcy5oIFwNCiAJYXJtL3RyYW1wb2xpbmVzLmMg
XA0KKwlpYTY0L2NvbW1vbi5oIFwNCisJaWE2NC9saW51eC9tZC5jIFwNCisJ
aWE2NC9saW51eC9tZC5oIFwNCisJaWE2NC90aHJlYWRzLmggXA0KKwlpYTY0
L3N5c2RlcENhbGxNZXRob2QuaCBcDQogCWkzODYvYmVvcy9jb25maWcuZnJh
ZyBcDQogCWkzODYvYmVvcy9qaXQtbWQuaCBcDQogCWkzODYvYmVvcy9qaXQz
LW1kLmggXA0KLS0tIGthZmZlLXNuYXAvY29uZmlnL2lhNjQvY29tbW9uLmgu
aWE2NAlUaHUgTm92IDI5IDA5OjQxOjQzIDIwMDENCisrKyBrYWZmZS1zbmFw
L2NvbmZpZy9pYTY0L2NvbW1vbi5oCVRodSBOb3YgMjkgMDk6NDE6NDMgMjAw
MQ0KQEAgLTAsMCArMSwyMiBAQA0KKy8qDQorICogaWE2NC9jb21tb24uaA0K
KyAqIENvbW1vbiBJQS02NCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLg0K
KyAqDQorICogQ29weXJpZ2h0IChjKSAyMDAxDQorICoJTWFuZHJha2VTb2Z0
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFNlZSB0aGUgZmls
ZSAibGljZW5zZS50ZXJtcyIgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFu
ZCByZWRpc3RyaWJ1dGlvbg0KKyAqIG9mIHRoaXMgZmlsZS4NCisgKi8NCisN
CisjaWZuZGVmIF9faWE2NF9jb21tb25faA0KKyNkZWZpbmUgX19pYTY0X2Nv
bW1vbl9oDQorDQorI2RlZmluZSBORUVEX1NUQUNLX0FMSUdODQorI2RlZmlu
ZSBTVEFDS19BTElHTihwKSAgKCgoKHVuc2lnbmVkIGxvbmcpKHApKSAmIDE1
KSBeICh1bnNpZ25lZCBsb25nKShwKSkNCisNCisjaWYgTkVFRF9zeXNkZXBD
YWxsTWV0aG9kDQorI2luY2x1ZGUgInN5c2RlcENhbGxNZXRob2QuaCINCisj
ZW5kaWYNCisNCisjZW5kaWYNCi0tLSBrYWZmZS1zbmFwL2NvbmZpZy9pYTY0
L2xpbnV4L2NvbmZpZy5mcmFnLmlhNjQJVGh1IE5vdiAyOSAwOTo0MTo0MyAy
MDAxDQorKysga2FmZmUtc25hcC9jb25maWcvaWE2NC9saW51eC9jb25maWcu
ZnJhZwlUaHUgTm92IDI5IDA5OjQxOjQzIDIwMDENCkBAIC0wLDAgKzEsMTAg
QEANCisjDQorIyBpYTY0L0xpbnV4IGNvbmZpZ3VyYXRpb24NCisjDQorS2hv
c3RfY3B1PWlhNjQNCitLaG9zdF9vcz1saW51eA0KKw0KK2lmIHRlc3QgeCIk
d2l0aF90aHJlYWRzIiA9IHgibGludXgtdGhyZWFkcyIgOyB0aGVuDQorCUNQ
UEZMQUdTPSIkQ1BQRkxBR1MgLURfUkVFTlRSQU5UIg0KKwlWTV9MSUJTPSIk
Vk1fTElCUyAtbHB0aHJlYWQiDQorZmkNCi0tLSBrYWZmZS1zbmFwL2NvbmZp
Zy9pYTY0L2xpbnV4L21kLmMuaWE2NAlUaHUgTm92IDI5IDA5OjQxOjQzIDIw
MDENCisrKyBrYWZmZS1zbmFwL2NvbmZpZy9pYTY0L2xpbnV4L21kLmMJVGh1
IE5vdiAyOSAwOTo0MTo0MyAyMDAxDQpAQCAtMCwwICsxLDMwMiBAQA0KKy8q
DQorICogaWE2NC9saW51eC9tZC5jDQorICogTGludXggSUEtNjQgc3BlY2lm
aWMgZnVuY3Rpb25zLg0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDAxDQor
ICoJTWFuZHJha2VTb2Z0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0K
KyAqIENvcHlyaWdodCAoQykgMjAwMA0KKyAqICBTaWxpY29uIEdyYXBoaWNz
LCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqICBJQTY0X2NvbnRl
eHRfe3NhdmUscmVzdG9yZX0gZnVuY3Rpb25zIGZyb20gU3RhdGUgVGhyZWFk
cyBMaWJyYXJ5DQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMDENCisgKglU
cmFuc3ZpcnR1YWwgVGVjaG5vbG9naWVzLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLg0KKyAqDQorICogU2VlIHRoZSBmaWxlICJsaWNlbnNlLnRlcm1z
IiBmb3IgaW5mb3JtYXRpb24gb24gdXNhZ2UgYW5kIHJlZGlzdHJpYnV0aW9u
DQorICogb2YgdGhpcyBmaWxlLg0KKyAqLw0KKw0KKyNpbmNsdWRlICJjb25m
aWcuaCINCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0cmlu
Zy5oPg0KKw0KK3ZvaWQNCitpbml0X21kKHZvaWQpDQorew0KKyNpZiBkZWZp
bmVkKE1fTU1BUF9NQVgpICYmIGRlZmluZWQoSEFWRV9NQUxMT1BUKQ0KKwlt
YWxsb3B0KE1fTU1BUF9NQVgsIDApOw0KKyNlbmRpZg0KK30NCisNCisvKg0K
KyAqIENvcHlyaWdodCAoQykgMjAwMCBTaWxpY29uIEdyYXBoaWNzLCBJbmMu
ICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogVGhlIGludGVybmFs
IF9fam1wX2J1ZiBsYXlvdXQgaXMgZGlmZmVyZW50IGZyb20gb25lIHVzZWQN
CisgKiBieSBzZXRqbXAoKS9sb25nam1wKCkuDQorICoNCisgKiAgICAgICBP
ZmZzZXQgICBEZXNjcmlwdGlvbg0KKyAqICAgICAgIC0tLS0tLSAgIC0tLS0t
LS0tLS0tDQorICogICAgICAgMHgwMDAgICAgc3RhY2sgcG9pbnRlciAocjEy
KQ0KKyAqICAgICAgIDB4MDA4ICAgIGdwIChyMSkNCisgKiAgICAgICAweDAx
MCAgICBjYWxsZXIncyB1bmF0DQorICogICAgICAgMHgwMTggICAgZnBzcg0K
KyAqICAgICAgIDB4MDIwICAgIHI0DQorICogICAgICAgMHgwMjggICAgcjUN
CisgKiAgICAgICAweDAzMCAgICByNg0KKyAqICAgICAgIDB4MDM4ICAgIHI3
DQorICogICAgICAgMHgwNDAgICAgcnAgKGIwKQ0KKyAqICAgICAgIDB4MDQ4
ICAgIGIxDQorICogICAgICAgMHgwNTAgICAgYjINCisgKiAgICAgICAweDA1
OCAgICBiMw0KKyAqICAgICAgIDB4MDYwICAgIGI0DQorICogICAgICAgMHgw
NjggICAgYjUNCisgKiAgICAgICAweDA3MCAgICBhci5wZnMNCisgKiAgICAg
ICAweDA3OCAgICBhci5sYw0KKyAqICAgICAgIDB4MDgwICAgIHByDQorICog
ICAgICAgMHgwODggICAgYXIuYnNwDQorICogICAgICAgMHgwOTAgICAgYXIu
dW5hdA0KKyAqICAgICAgIDB4MDk4ICAgICZfX2ptcF9idWYNCisgKiAgICAg
ICAweDBhMCAgICBhci5yc2MNCisgKiAgICAgICAweDBhOCAgICBhci5ybmF0
DQorICogICAgICAgMHgwYjAgICAgIGYyDQorICogICAgICAgMHgwYzAgICAg
IGYzDQorICogICAgICAgMHgwZDAgICAgIGY0DQorICogICAgICAgMHgwZTAg
ICAgIGY1DQorICogICAgICAgMHgwZjAgICAgZjE2DQorICogICAgICAgMHgx
MDAgICAgZjE3DQorICogICAgICAgMHgxMTAgICAgZjE4DQorICogICAgICAg
MHgxMjAgICAgZjE5DQorICogICAgICAgMHgxMzAgICAgZjIwDQorICogICAg
ICAgMHgxMzAgICAgZjIxDQorICogICAgICAgMHgxNDAgICAgZjIyDQorICog
ICAgICAgMHgxNTAgICAgZjIzDQorICogICAgICAgMHgxNjAgICAgZjI0DQor
ICogICAgICAgMHgxNzAgICAgZjI1DQorICogICAgICAgMHgxODAgICAgZjI2
DQorICogICAgICAgMHgxOTAgICAgZjI3DQorICogICAgICAgMHgxYTAgICAg
ZjI4DQorICogICAgICAgMHgxYjAgICAgZjI5DQorICogICAgICAgMHgxYzAg
ICAgZjMwDQorICogICAgICAgMHgxZDAgICAgZjMxDQorICoNCisgKiBOb3Rl
IHRoYXQgdGhlIGFkZHJlc3Mgb2YgX19qbXBfYnVmIGlzIHNhdmVkIGJ1dCBu
b3QgdXNlZDogd2UgYXNzdW1lDQorICogdGhhdCB0aGUgam1wX2J1ZiBkYXRh
IHN0cnVjdHVyZSBpcyBuZXZlciBtb3ZlZCBhcm91bmQgaW4gbWVtb3J5Lg0K
KyAqLw0KKw0KKy8qDQorICogSW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvICJJ
QS02NCBTb2Z0d2FyZSBDb252ZW50aW9ucyBhbmQgUnVudGltZQ0KKyAqIEFy
Y2hpdGVjdHVyZSBHdWlkZSIsIENoYXB0ZXIgMTA6ICJDb250ZXh0IE1hbmFn
ZW1lbnQiLg0KKyAqLw0KKw0KKyAgICAgICAgLyogSUE2NF9jb250ZXh0X3Nh
dmUoX19qbXBfYnVmIGVudikgKi8NCisgICAgICAgIGFzbSgiDQorICAgICAg
ICAudGV4dA0KKyAgICAgICAgLmFsaWduIDMyDQorICAgICAgICAuZ2xvYmFs
IElBNjRfY29udGV4dF9zYXZlIw0KKyAgICAgICAgLnByb2MgSUE2NF9jb250
ZXh0X3NhdmUjDQorSUE2NF9jb250ZXh0X3NhdmU6DQorICAgICAgICBhbGxv
YyByMTQgPSBhci5wZnMsMSwwLDAsMA0KKyAgICAgICAgbW92IHIxNiA9IGFy
LnVuYXQNCisgICAgICAgIDs7DQorICAgICAgICBtb3YgcjE3ID0gYXIuZnBz
cg0KKyAgICAgICAgbW92IHIyID0gaW4wDQorICAgICAgICBhZGQgcjMgPSA4
LGluMA0KKyAgICAgICAgOzsNCisgICAgICAgIHN0OC5zcGlsbC5udGEgW3Iy
XSA9IHNwLDE2ICAgIC8vIHIxMiAoc3ApDQorICAgICAgICBzdDguc3BpbGwu
bnRhIFtyM10gPSBncCwxNiAgICAvLyByMSAgKGdwKQ0KKyAgICAgICAgOzsN
CisgICAgICAgIHN0OC5udGEgW3IyXSA9IHIxNiwxNiAgICAgICAgIC8vIHNh
dmUgY2FsbGVyJ3MgdW5hdA0KKyAgICAgICAgc3Q4Lm50YSBbcjNdID0gcjE3
LDE2ICAgICAgICAgLy8gc2F2ZSBmcHNyDQorICAgICAgICBhZGQgcjggPSAw
eGIwLGluMA0KKyAgICAgICAgOzsgICANCisgICAgICAgIHN0OC5zcGlsbC5u
dGEgW3IyXSA9IHI0LDE2ICAgIC8vIHI0DQorICAgICAgICBzdDguc3BpbGwu
bnRhIFtyM10gPSByNSwxNiAgICAvLyByNQ0KKyAgICAgICAgYWRkIHI5ID0g
MHhjMCxpbjANCisgICAgICAgIDs7DQorICAgICAgICBzdGYuc3BpbGwubnRh
IFtyOF0gPSBmMiwzMg0KKyAgICAgICAgc3RmLnNwaWxsLm50YSBbcjldID0g
ZjMsMzINCisgICAgICAgIG1vdiByMTUgPSBycA0KKyAgICAgICAgOzsNCisg
ICAgICAgIHN0Zi5zcGlsbC5udGEgW3I4XSA9IGY0LDMyDQorICAgICAgICBz
dGYuc3BpbGwubnRhIFtyOV0gPSBmNSwzMg0KKyAgICAgICAgbW92IHIxNyA9
IGIxDQorICAgICAgICA7Ow0KKyAgICAgICAgc3RmLnNwaWxsLm50YSBbcjhd
ID0gZjE2LDMyDQorICAgICAgICBzdGYuc3BpbGwubnRhIFtyOV0gPSBmMTcs
MzINCisgICAgICAgIG1vdiByMTggPSBiMg0KKyAgICAgICAgOzsNCisgICAg
ICAgIHN0Zi5zcGlsbC5udGEgW3I4XSA9IGYxOCwzMg0KKyAgICAgICAgc3Rm
LnNwaWxsLm50YSBbcjldID0gZjE5LDMyDQorICAgICAgICBtb3YgcjE5ID0g
YjMNCisgICAgICAgIDs7DQorICAgICAgICBzdGYuc3BpbGwubnRhIFtyOF0g
PSBmMjAsMzINCisgICAgICAgIHN0Zi5zcGlsbC5udGEgW3I5XSA9IGYyMSwz
Mg0KKyAgICAgICAgbW92IHIyMCA9IGI0DQorICAgICAgICA7Ow0KKyAgICAg
ICAgc3RmLnNwaWxsLm50YSBbcjhdID0gZjIyLDMyDQorICAgICAgICBzdGYu
c3BpbGwubnRhIFtyOV0gPSBmMjMsMzINCisgICAgICAgIG1vdiByMjEgPSBi
NQ0KKyAgICAgICAgOzsNCisgICAgICAgIHN0Zi5zcGlsbC5udGEgW3I4XSA9
IGYyNCwzMg0KKyAgICAgICAgc3RmLnNwaWxsLm50YSBbcjldID0gZjI1LDMy
DQorICAgICAgICBtb3YgcjIyID0gYXIubGMNCisgICAgICAgIDs7DQorICAg
ICAgICBzdGYuc3BpbGwubnRhIFtyOF0gPSBmMjYsMzINCisgICAgICAgIHN0
Zi5zcGlsbC5udGEgW3I5XSA9IGYyNywzMg0KKyAgICAgICAgbW92IHIyNCA9
IHByDQorICAgICAgICA7Ow0KKyAgICAgICAgc3RmLnNwaWxsLm50YSBbcjhd
ID0gZjI4LDMyDQorICAgICAgICBzdGYuc3BpbGwubnRhIFtyOV0gPSBmMjks
MzINCisgICAgICAgIDs7DQorICAgICAgICBzdGYuc3BpbGwubnRhIFtyOF0g
PSBmMzANCisgICAgICAgIHN0Zi5zcGlsbC5udGEgW3I5XSA9IGYzMQ0KKyAg
ICAgICAgc3Q4LnNwaWxsLm50YSBbcjJdID0gcjYsMTYgICAgLy8gcjYNCisg
ICAgICAgIHN0OC5zcGlsbC5udGEgW3IzXSA9IHI3LDE2ICAgIC8vIHI3DQor
ICAgICAgICA7Ow0KKyAgICAgICAgbW92IHIyMyA9IGFyLmJzcA0KKyAgICAg
ICAgbW92IHIyNSA9IGFyLnVuYXQNCisgICAgICAgIHN0OC5udGEgW3IyXSA9
IHIxNSwxNiAgICAgICAgIC8vIGIwDQorICAgICAgICBzdDgubnRhIFtyM10g
PSByMTcsMTYgICAgICAgICAvLyBiMQ0KKyAgICAgICAgOzsNCisgICAgICAg
IHN0OC5udGEgW3IyXSA9IHIxOCwxNiAgICAgICAgIC8vIGIyDQorICAgICAg
ICBzdDgubnRhIFtyM10gPSByMTksMTYgICAgICAgICAvLyBiMw0KKyAgICAg
ICAgbW92IHIyNiA9IGFyLnJzYw0KKyAgICAgICAgOzsNCisgICAgICAgIHN0
OC5udGEgW3IyXSA9IHIyMCwxNiAgICAgICAgIC8vIGI0DQorICAgICAgICBz
dDgubnRhIFtyM10gPSByMjEsMTYgICAgICAgICAvLyBiNQ0KKyAgICAgICAg
OzsNCisgICAgICAgIHN0OC5udGEgW3IyXSA9IHIxNCwxNiAgICAgICAgIC8v
IGFyLnBmcw0KKyAgICAgICAgc3Q4Lm50YSBbcjNdID0gcjIyLDE2ICAgICAg
ICAgLy8gYXIubGMNCisgICAgICAgIDs7DQorICAgICAgICBzdDgubnRhIFty
Ml0gPSByMjQsMTYgICAgICAgICAvLyBwcg0KKyAgICAgICAgc3Q4Lm50YSBb
cjNdID0gcjIzLDE2ICAgICAgICAgLy8gYXIuYnNwDQorICAgICAgICA7Ow0K
KyAgICAgICAgc3Q4Lm50YSBbcjJdID0gcjI1LDE2ICAgICAgICAgLy8gYXIu
dW5hdA0KKyAgICAgICAgc3Q4Lm50YSBbcjNdID0gaW4wLDE2ICAgICAgICAg
Ly8gJl9fam1wX2J1ZiAoanVzdCBpbiBjYXNlKQ0KKyAgICAgICAgOzsNCisg
ICAgICAgIHN0OC5udGEgW3IyXSA9IHIyNiAgICAgICAgICAgIC8vIGFyLnJz
Yw0KKyAgICAgICAgOzsNCisgICAgICAgIGZsdXNocnMgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGZsdXNoIGRpcnR5IHJlZ3MgdG8gYmFja2luZyBzdG9y
ZQ0KKyAgICAgICAgOzsNCisgICAgICAgIGFuZCByMjcgPSB+MHgzLHIyNiAg
ICAgICAgICAgIC8vIGNsZWFyIGFyLnJzYy5tb2RlDQorICAgICAgICA7Ow0K
KyAgICAgICAgbW92IGFyLnJzYyA9IHIyNyAgICAgICAgICAgICAgLy8gcHV0
IFJTRSBpbiBlbmZvcmNlZCBsYXp5IG1vZGUNCisgICAgICAgIDs7DQorICAg
ICAgICBtb3YgcjI4ID0gYXIucm5hdA0KKyAgICAgICAgOzsNCisgICAgICAg
IHN0OC5udGEgW3IzXSA9IHIyOCAgICAgICAgICAgIC8vIGFyLnJuYXQNCisg
ICAgICAgIG1vdiBhci5yc2MgPSByMjYgICAgICAgICAgICAgIC8vIHJlc3Rv
cmUgYXIucnNjDQorICAgICAgICA7Ow0KKyAgICAgICAgbW92IHI4ID0gMA0K
KyAgICAgICAgYnIucmV0LnNwdGsuZmV3IGIwDQorICAgICAgICAuZW5kcCBJ
QTY0X2NvbnRleHRfc2F2ZSMNCisgICAgICAgICIpOw0KKw0KKyAgICAgICAg
LyogSUE2NF9jb250ZXh0X3Jlc3RvcmUoX19qbXBfYnVmIGVudiwgaW50IHZh
bCkgKi8NCisgICAgICAgIGFzbSgiDQorICAgICAgICAudGV4dA0KKyAgICAg
ICAgLmFsaWduIDMyDQorICAgICAgICAuZ2xvYmFsIElBNjRfY29udGV4dF9y
ZXN0b3JlIw0KKyAgICAgICAgLnByb2MgSUE2NF9jb250ZXh0X3Jlc3RvcmUj
DQorSUE2NF9jb250ZXh0X3Jlc3RvcmU6DQorICAgICAgICBhbGxvYyByOCA9
IGFyLnBmcywyLDAsMCwwDQorICAgICAgICBhZGQgcjIgPSAweDg4LGluMCAg
ICAgICAgICAgICAvLyByMiA8LSAmam1wYnVmLmFyX2JzcA0KKyAgICAgICAg
bW92IHIxNiA9IGFyLnJzYw0KKyAgICAgICAgOzsNCisgICAgICAgIGZsdXNo
cnMgICAgICAgICAgICAgICAgICAgICAgIC8vIGZsdXNoIGRpcnR5IHJlZ3Mg
dG8gYmFja2luZyBzdG9yZQ0KKyAgICAgICAgOzsNCisgICAgICAgIGFuZCBy
MTcgPSB+MHgzLHIxNiAgICAgICAgICAgIC8vIGNsZWFyIGFyLnJzYy5tb2Rl
DQorICAgICAgICA7Ow0KKyAgICAgICAgbW92IGFyLnJzYyA9IHIxNyAgICAg
ICAgICAgICAgLy8gcHV0IFJTRSBpbiBlbmZvcmNlZCBsYXp5IG1vZGUNCisg
ICAgICAgIDs7DQorICAgICAgICBpbnZhbGEgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpbnZhbGlkYXRlIHRoZSBBTEFUDQorICAgICAgICA7Ow0KKyAg
ICAgICAgbGQ4IHIyMyA9IFtyMl0sOCAgICAgICAgICAgICAgLy8gcjIzIDwt
IGptcGJ1Zi5hcl9ic3ANCisgICAgICAgIDs7DQorICAgICAgICBtb3YgYXIu
YnNwc3RvcmUgPSByMjMgICAgICAgICAvLyB3cml0ZSBCU1BTVE9SRQ0KKyAg
ICAgICAgbGQ4IHIyNSA9IFtyMl0sMjQgICAgICAgICAgICAgLy8gcjI1IDwt
IGptcGJ1Zi5hcl91bmF0DQorICAgICAgICA7Ow0KKyAgICAgICAgbGQ4IHIy
NiA9IFtyMl0sLTggICAgICAgICAgICAgLy8gcjI2IDwtIGptcGJ1Zi5hcl9y
bmF0DQorICAgICAgICA7Ow0KKyAgICAgICAgbW92IGFyLnJuYXQgPSByMjYg
ICAgICAgICAgICAgLy8gd3JpdGUgUk5BVA0KKyAgICAgICAgbGQ4IHIyNyA9
IFtyMl0gICAgICAgICAgICAgICAgLy8gcjI3IDwtIGptcGJ1Zi5hcl9yc2MN
CisgICAgICAgIDs7DQorICAgICAgICBtb3YgYXIucnNjID0gcjI3ICAgICAg
ICAgICAgICAvLyB3cml0ZSBSU0UgY29udHJvbA0KKyAgICAgICAgbW92IHIy
ID0gaW4wDQorICAgICAgICA7Ow0KKyAgICAgICAgbW92IGFyLnVuYXQgPSBy
MjUgICAgICAgICAgICAgLy8gd3JpdGUgYXIudW5hdA0KKyAgICAgICAgYWRk
IHIzID0gOCxpbjANCisgICAgICAgIDs7DQorICAgICAgICBsZDguZmlsbC5u
dGEgc3AgPSBbcjJdLDE2ICAgICAvLyByMTIgKHNwKQ0KKyAgICAgICAgbGQ4
LmZpbGwubnRhIGdwID0gW3IzXSwxNiAgICAgLy8gcjEgIChncCkNCisgICAg
ICAgIDs7DQorICAgICAgICBsZDgubnRhIHIxNiA9IFtyMl0sMTYgICAgICAg
ICAvLyBjYWxsZXIncyB1bmF0DQorICAgICAgICBsZDgubnRhIHIxNyA9IFty
M10sMTYgICAgICAgICAvLyBmcHNyDQorICAgICAgICA7Ow0KKyAgICAgICAg
bGQ4LmZpbGwubnRhIHI0ID0gW3IyXSwxNiAgICAgLy8gcjQNCisgICAgICAg
IGxkOC5maWxsLm50YSByNSA9IFtyM10sMTYgICAgIC8vIHI1DQorICAgICAg
ICA7Ow0KKyAgICAgICAgbGQ4LmZpbGwubnRhIHI2ID0gW3IyXSwxNiAgICAg
Ly8gcjYNCisgICAgICAgIGxkOC5maWxsLm50YSByNyA9IFtyM10sMTYgICAg
IC8vIHI3DQorICAgICAgICA7Ow0KKyAgICAgICAgbW92IGFyLnVuYXQgPSBy
MTYgICAgICAgICAgICAgLy8gcmVzdG9yZSBjYWxsZXIncyB1bmF0DQorICAg
ICAgICBtb3YgYXIuZnBzciA9IHIxNyAgICAgICAgICAgICAvLyByZXN0b3Jl
IGZwc3INCisgICAgICAgIDs7DQorICAgICAgICBsZDgubnRhIHIxNiA9IFty
Ml0sMTYgICAgICAgICAvLyBiMA0KKyAgICAgICAgbGQ4Lm50YSByMTcgPSBb
cjNdLDE2ICAgICAgICAgLy8gYjENCisgICAgICAgIDs7DQorICAgICAgICBs
ZDgubnRhIHIxOCA9IFtyMl0sMTYgICAgICAgICAvLyBiMg0KKyAgICAgICAg
bGQ4Lm50YSByMTkgPSBbcjNdLDE2ICAgICAgICAgLy8gYjMNCisgICAgICAg
IDs7DQorICAgICAgICBsZDgubnRhIHIyMCA9IFtyMl0sMTYgICAgICAgICAv
LyBiNA0KKyAgICAgICAgbGQ4Lm50YSByMjEgPSBbcjNdLDE2ICAgICAgICAg
Ly8gYjUNCisgICAgICAgIDs7DQorICAgICAgICBsZDgubnRhIHIxMSA9IFty
Ml0sMTYgICAgICAgICAvLyBhci5wZnMNCisgICAgICAgIGxkOC5udGEgcjIy
ID0gW3IzXSw3MiAgICAgICAgIC8vIGFyLmxjDQorICAgICAgICA7Ow0KKyAg
ICAgICAgbGQ4Lm50YSByMjQgPSBbcjJdLDQ4ICAgICAgICAgLy8gcHINCisg
ICAgICAgIG1vdiBiMCA9IHIxNg0KKyAgICAgICAgOzsNCisgICAgICAgIGxk
Zi5maWxsLm50YSBmMiA9IFtyMl0sMzINCisgICAgICAgIGxkZi5maWxsLm50
YSBmMyA9IFtyM10sMzINCisgICAgICAgIG1vdiBiMSA9IHIxNw0KKyAgICAg
ICAgOzsNCisgICAgICAgIGxkZi5maWxsLm50YSBmNCA9IFtyMl0sMzINCisg
ICAgICAgIGxkZi5maWxsLm50YSBmNSA9IFtyM10sMzINCisgICAgICAgIG1v
diBiMiA9IHIxOA0KKyAgICAgICAgOzsNCisgICAgICAgIGxkZi5maWxsLm50
YSBmMTYgPSBbcjJdLDMyDQorICAgICAgICBsZGYuZmlsbC5udGEgZjE3ID0g
W3IzXSwzMg0KKyAgICAgICAgbW92IGIzID0gcjE5DQorICAgICAgICA7Ow0K
KyAgICAgICAgbGRmLmZpbGwubnRhIGYxOCA9IFtyMl0sMzINCisgICAgICAg
IGxkZi5maWxsLm50YSBmMTkgPSBbcjNdLDMyDQorICAgICAgICBtb3YgYjQg
PSByMjANCisgICAgICAgIDs7DQorICAgICAgICBsZGYuZmlsbC5udGEgZjIw
ID0gW3IyXSwzMg0KKyAgICAgICAgbGRmLmZpbGwubnRhIGYyMSA9IFtyM10s
MzINCisgICAgICAgIG1vdiBiNSA9IHIyMQ0KKyAgICAgICAgOzsNCisgICAg
ICAgIGxkZi5maWxsLm50YSBmMjIgPSBbcjJdLDMyDQorICAgICAgICBsZGYu
ZmlsbC5udGEgZjIzID0gW3IzXSwzMg0KKyAgICAgICAgbW92IGFyLmxjID0g
cjIyDQorICAgICAgICA7Ow0KKyAgICAgICAgbGRmLmZpbGwubnRhIGYyNCA9
IFtyMl0sMzINCisgICAgICAgIGxkZi5maWxsLm50YSBmMjUgPSBbcjNdLDMy
DQorICAgICAgICBjbXAuZXEgcDYscDcgPSAwLGluMQ0KKyAgICAgICAgOzsN
CisgICAgICAgIGxkZi5maWxsLm50YSBmMjYgPSBbcjJdLDMyDQorICAgICAg
ICBsZGYuZmlsbC5udGEgZjI3ID0gW3IzXSwzMg0KKyAgICAgICAgbW92IGFy
LnBmcyA9IHIxMQ0KKyAgICAgICAgOzsNCisgICAgICAgIGxkZi5maWxsLm50
YSBmMjggPSBbcjJdLDMyDQorICAgICAgICBsZGYuZmlsbC5udGEgZjI5ID0g
W3IzXSwzMg0KKyAgICAgICAgOzsNCisgICAgICAgIGxkZi5maWxsLm50YSBm
MzAgPSBbcjJdDQorICAgICAgICBsZGYuZmlsbC5udGEgZjMxID0gW3IzXQ0K
KyhwNikgICAgbW92IHI4ID0gMQ0KKyhwNykgICAgbW92IHI4ID0gaW4xDQor
ICAgICAgICBtb3YgcHIgPSByMjQsLTENCisgICAgICAgIGJyLnJldC5zcHRr
LmZldyBiMA0KKyAgICAgICAgLmVuZHAgSUE2NF9jb250ZXh0X3Jlc3RvcmUj
DQorICAgICAgICAiKTsNCi0tLSBrYWZmZS1zbmFwL2NvbmZpZy9pYTY0L2xp
bnV4L21kLmguaWE2NAlUaHUgTm92IDI5IDA5OjQxOjQzIDIwMDENCisrKyBr
YWZmZS1zbmFwL2NvbmZpZy9pYTY0L2xpbnV4L21kLmgJVGh1IE5vdiAyOSAx
MDoxODowNSAyMDAxDQpAQCAtMCwwICsxLDU3IEBADQorLyoNCisgKiBpYTY0
L2xpbnV4L21kLmgNCisgKiBMaW51eCBJQS02NCBjb25maWd1cmF0aW9uIGlu
Zm9ybWF0aW9uLg0KKyAqDQorICogQ29weXJpZ2h0IChjKSAyMDAxDQorICoJ
TWFuZHJha2VTb2Z0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAq
IENvcHlyaWdodCAoYykgMjAwMQ0KKyAqCVRyYW5zdmlydHVhbCBUZWNobm9s
b2dpZXMsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBT
ZWUgdGhlIGZpbGUgImxpY2Vuc2UudGVybXMiIGZvciBpbmZvcm1hdGlvbiBv
biB1c2FnZSBhbmQgcmVkaXN0cmlidXRpb24NCisgKiBvZiB0aGlzIGZpbGUu
DQorICovDQorDQorI2lmbmRlZiBfX2lhNjRfbGludXhfbWRfaA0KKyNkZWZp
bmUgX19pYTY0X2xpbnV4X21kX2gNCisNCisjaW5jbHVkZSA8c2V0am1wLmg+
DQorI2luY2x1ZGUgImlhNjQvY29tbW9uLmgiDQorI2luY2x1ZGUgImlhNjQv
dGhyZWFkcy5oIg0KKw0KKy8qIExpbnV4IHJlcXVpcmVzIGEgbGl0dGxlIGlu
aXRpYWxpc2F0aW9uICovDQorZXh0ZXJuIHZvaWQgaW5pdF9tZCh2b2lkKTsN
CisjZGVmaW5lCUlOSVRfTUQoKSBpbml0X21kKCkNCisNCitleHRlcm4gaW50
IElBNjRfY29udGV4dF9zYXZlKGptcF9idWYgZW52KTsNCitleHRlcm4gdm9p
ZCBJQTY0X2NvbnRleHRfcmVzdG9yZShqbXBfYnVmIGVudiwgaW50IHZhbCk7
DQorDQorI2lmIDANCisjdW5kZWYgSlRIUkVBRF9TRVRKTVANCisjZGVmaW5l
IEpUSFJFQURfU0VUSk1QKGVudikJCQlJQTY0X2NvbnRleHRfc2F2ZSgoZW52
KSkNCisjdW5kZWYgSlRIUkVBRF9MT05HSk1QDQorI2RlZmluZSBKVEhSRUFE
X0xPTkdKTVAoZW52LCB2YWwpCQlJQTY0X2NvbnRleHRfcmVzdG9yZSgoZW52
KSwgKHZhbCkpDQorI2VuZGlmDQorDQorI2RlZmluZSBTSUdOQUxfQVJHUyhz
aWcsIHNjcCkJCQlpbnQgc2lnLCBzaWdpbmZvX3QgKnNpcCwgc3RydWN0IHNp
Z2NvbnRleHQgKnNjcA0KKyNkZWZpbmUgU0lHTkFMX0NPTlRFWFRfUE9JTlRF
UihzY3ApCQlzdHJ1Y3Qgc2lnY29udGV4dCAqc2NwDQorI2RlZmluZSBHRVRf
U0lHTkFMX0NPTlRFWFRfUE9JTlRFUihzYykJCShzYykNCisjZGVmaW5lIFNJ
R05BTF9QQyhzY3ApCQkJCSgoc2NwKS0+c2NfaXAgJiB+MHgzVUxMKQ0KKw0K
KyNpZmRlZiBIQVZFX0lBNjRJTlRSSU5fSA0KKw0KKyNpbmNsdWRlIDxpYTY0
aW50cmluLmg+DQorI3VuZGVmIENPTVBBUkVfQU5EX0VYQ0hBTkdFDQorI2Rl
ZmluZSBDT01QQVJFX0FORF9FWENIQU5HRShBLCBPLCBOKSBcDQorCV9fc3lu
Y19ib29sX2NvbXBhcmVfYW5kX3N3YXAoKEEpLCAoTyksIChOKSkNCisNCisj
ZWxzZQ0KKw0KKyNpbmNsdWRlIDxhc20vYXRvbWljLmg+DQorI3VuZGVmIENP
TVBBUkVfQU5EX0VYQ0hBTkdFDQorI2RlZmluZSBDT01QQVJFX0FORF9FWENI
QU5HRShBLCBPLCBOKSBcDQorCShjbXB4Y2hnKChBKSwgKE8pLCAoTikpID09
IChPKSkNCisJCQ0KKyNlbmRpZiAvKiBIQVZFX0lBNjRJTlRSSU5fSCAqLw0K
Kw0KKyNlbmRpZg0KLS0tIGthZmZlLXNuYXAvY29uZmlnL2lhNjQvc3lzZGVw
Q2FsbE1ldGhvZC5oLmlhNjQJVGh1IE5vdiAyOSAwOTo0MTo0MyAyMDAxDQor
Kysga2FmZmUtc25hcC9jb25maWcvaWE2NC9zeXNkZXBDYWxsTWV0aG9kLmgJ
VGh1IE5vdiAyOSAwOTo0MTo0MyAyMDAxDQpAQCAtMCwwICsxLDI0OSBAQA0K
Ky8qDQorICogaWE2NC9zeXNkZXBDYWxsTWV0aG9kLmgNCisgKiBEeW5hbWlj
YWxseSBidWlsZCBmdW5jdGlvbiBjYWxscyB1c2luZyBJQS02NCBTVlI0IEFC
SS4NCisgKg0KKyAqIENvcHlyaWdodCAoYykgMjAwMQ0KKyAqCU1hbmRyYWtl
U29mdC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBTZWUgdGhl
IGZpbGUgImxpY2Vuc2UudGVybXMiIGZvciBpbmZvcm1hdGlvbiBvbiB1c2Fn
ZSBhbmQgcmVkaXN0cmlidXRpb24NCisgKiBvZiB0aGlzIGZpbGUuDQorICov
DQorDQorLyogVGhpcyBkZWZpbmUgd2lsbCBjYXVzZSBjYWxsTWV0aG9kViBh
bmQgY2FsbE1ldGhvZEEgdG8gYXZvaWQNCisgICBpbnRyb2R1Y2luZyB1bnVz
ZWQgc2xvdHMgYWZ0ZXIgamxvbmdzIGFuZCBqZG91Ymxlcy4gICovDQorI2lm
bmRlZiBOT19IT0xFUw0KKyMgZGVmaW5lIE5PX0hPTEVTIDENCisjZW5kaWYN
CisNCisvKiBUaGlzIGRlZmluZSB3aWxsIGNhdXNlIGNhbGxNZXRob2RWIGFu
ZCBjYWxsTWV0aG9kQSB0byBwcm9tb3RlIGV2ZXJ5DQorICAgaW50ZWdlciB0
eXBlIHRvIGEgNjRiaXQgd29yZCwgYW5kIGV2ZXJ5IGZsb2F0IHRvIGRvdWJs
ZSwgc28gdGhhdA0KKyAgIGV2ZXJ5IHZhbHVlIGNhbiBiZSBsb2FkZWQgYXMg
YSBzaW5nbGUgNjRiaXQgd29yZC4gIEl0IGFsc28gY2F1c2VzDQorICAgZmxv
YXQgYXJndW1lbnRzIHRvIGJlIG1hcmtlZCBhcyAnRCcuICAqLw0KKyNpZm5k
ZWYgUFJPTU9URV9UT182NGJpdHMNCisjIGRlZmluZSBQUk9NT1RFX1RPXzY0
Yml0cyAxDQorI2VuZGlmDQorIA0KKyNpZm5kZWYgUFJPTU9URV9qZmxvYXQy
amRvdWJsZQ0KKyMgZGVmaW5lIFBST01PVEVfamZsb2F0Mmpkb3VibGUgMA0K
KyNlbmRpZg0KKw0KKy8qIEFSR19UWVBFIGlzIHRoZSB0eXBlIG9mIGEgcmVn
aXN0ZXIgdXNlZCBmb3IgcGFzc2luZyBhcmd1bWVudHMuICAqLw0KKyNkZWZp
bmUgQVJHX1RZUEUJbG9uZw0KKw0KKy8qIEFSR19UWVBFUyBpcyBhIHBhcmFt
ZXRlciBsaXN0IGRlY2xhcmF0aW9uIGZvciBhIGZ1bmN0aW9uIHR5cGUNCisg
ICB0aGF0IHRha2VzIGFsbCBwb3NzaWJsZSBhcmd1bWVudHMgaW4gcmVnaXN0
ZXJzLiAgKi8NCisjZGVmaW5lIEFSR19UWVBFUwlBUkdfVFlQRSwgQVJHX1RZ
UEUsIEFSR19UWVBFLCBBUkdfVFlQRSwgQVJHX1RZUEUsIEFSR19UWVBFLCBB
UkdfVFlQRSwgQVJHX1RZUEUNCisNCisvKiBBUkdfTElTVCBpcyB0aGUgYXJn
dW1lbnQgbGlzdCBmb3Igc3VjaCBhIGZ1bmN0aW9uLiAgKi8NCisjZGVmaW5l
IEFSR19MSVNUCWEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNw0KKw0K
Ky8qIEdQUl9BUkdTIGlzIHRoZSBudW1iZXIgb2YgR1BSIChpbnRlZ2VyKSBy
ZWdpc3RlcnMgZm9yIHBhc3NpbmcNCisgICBhcmd1bWVudHMuICAqLw0KKyNk
ZWZpbmUgR1BSX0FSR1MJOA0KKw0KKy8qIEZQUl9BUkdTIGlzIHRoZSBudW1i
ZXIgb2YgRlBSIChmbG9hdCkgcmVnaXN0ZXJzIGZvciBwYXNzaW5nDQorICAg
YXJndW1lbnRzLiAgKi8NCisjZGVmaW5lIEZQUl9BUkdTCTgNCisNCisvKiBB
UkdfRElTUExBQ0VNRU5UIGlzIHRoZSBvZmZzZXQgYmV0d2VlbiB0aGUgYmVn
aW5uaW5nIG9mIGENCisgICB2YXJpYWJsZS1zaXplZCBhcnJheSwgYWxsb2Nh
dGVkIGluIHRoZSBzdGFjaywgYW5kIHRoZSBwb3NpdGlvbiBvZg0KKyAgIHRo
ZSBmaXJzdCBhcmd1bWVudCB0aGF0IGNhbid0IGJlIHBhc3NlZCBpbiBhIHJl
Z2lzdGVyLiAgKi8NCisjZGVmaW5lIEFSR19ESVNQTEFDRU1FTlQJMA0KKw0K
Ky8qIEFSR19HUFIgYSBjYXNlIGxhYmVsIGFuZCBhIHN0YXRlbWVudCB0aGF0
IGFycmFuZ2VzIGZvciBvbmUgaW50ZWdlcg0KKyAgIGFyZ3VtZW50IHRvIGJl
IHBhc3NlZC4gKi8NCisjZGVmaW5lIEFSR19HUFIoTikgXA0KKyAgICBjYXNl
IE4rMTogYSMjTiA9IGdwcltOXTsNCisNCisvKiBBUkdfRlBSIGEgY2FzZSBs
YWJlbCBhbmQgYSBzdGF0ZW1lbnQgdGhhdCBhcnJhbmdlcyBmb3Igb25lIGZs
b2F0DQorICAgYXJndW1lbnQgdG8gYmUgcGFzc2VkLiAqLw0KKyNkZWZpbmUg
QVJHX0ZQUihOKSBcDQorICAgIGNhc2UgTisxOiBkIyNOID0gZnByW05dOw0K
Kw0KKw0KKy8qIE1ha2UgYSBjYWxsIHRvIGEgbmF0aXZlIG9yIEphdmEgKEpJ
VCkgbWV0aG9kLiAgVGhpcyBhc3NlbWJseSBjb2RlIHNob3VsZA0KKyAgIGJ1
aWxkIGEgc3RhbmRhcmQgQyBjYWxsIHVzaW5nIHRoZSBwYXNzZWQgY2FsbCBp
bmZvcm1hdGlvbi4gIEJ5IGl0cw0KKyAgIG5hdHVyZSB0aGlzIGlzIGhpZ2hs
eSBwcm9jZXNzb3Igc3BlY2lmaWMuICBUaGlzIGZ1bmN0aW9uIGlzIG1hbmRh
dG9yeQ0KKyAgIGZvciBib3RoIEpJVCBhbmQgSW50ZXJwcmV0ZXIgKHNpbmNl
IHN0dWJzIGhhdmUgbm93IGJlZW4gZGVwcmVjYXRlZCkuICAqLw0KK3N0YXRp
YyBpbmxpbmUgdm9pZCBzeXNkZXBDYWxsTWV0aG9kKGNhbGxNZXRob2RJbmZv
KiBjYWxsKQ0KK3sNCisgICAgdm9pZCAqZnVuYyA9IGNhbGwtPmZ1bmN0aW9u
Ow0KKyAgICBqdmFsdWUgKmNhbGxhcmdzID0gY2FsbC0+YXJnczsNCisgICAg
Y2hhciAqY2FsbHR5cGUgPSBjYWxsLT5jYWxsdHlwZTsNCisgICAganZhbHVl
ICphcmdzID0gY2FsbGFyZ3M7DQorICAgIGp2YWx1ZSAqbGFzdCA9ICZjYWxs
YXJnc1tjYWxsLT5ucmFyZ3NdOw0KKyAgICBpbnQgbnJfZ3ByID0gMDsNCisg
ICAgaW50IG5yX2ZwciA9IDA7DQorICAgIGludCBucl9zdGFjayA9IDA7DQor
DQorICAgIHVuc2lnbmVkIGxvbmcgKnN0YWNrOw0KKyAgICB1bnNpZ25lZCBs
b25nICpncHI7DQorICAgIGRvdWJsZSAqZnByOw0KKw0KKyAgICAvKiBDb21w
dXRlIGdwcltdLCBmcHJbXSBhbmQgc3RhY2tbXSBhcnJheXMnIHNpemUgKi8N
CisgICAgd2hpbGUgKGFyZ3MgIT0gbGFzdCkgew0KKwkgIHN3aXRjaCAoY2Fs
bHR5cGVbKGFyZ3MrKykgLSBjYWxsYXJnc10pIHsNCisJICBjYXNlICdGJzoN
CisJICBjYXNlICdEJzoNCisJCWlmIChucl9mcHIgPCBGUFJfQVJHUykgew0K
KwkJICBucl9mcHIrKzsNCisJCSAgbnJfZ3ByKys7DQorCQl9DQorCQllbHNl
DQorCQkgIG5yX3N0YWNrKys7DQorCQlicmVhazsNCisJCQ0KKwkgIGRlZmF1
bHQ6DQorCQlpZiAobnJfZ3ByIDwgR1BSX0FSR1MpDQorCQkgIG5yX2dwcisr
Ow0KKwkJZWxzZQ0KKwkJICBucl9zdGFjaysrOw0KKwkJYnJlYWs7DQorCSAg
fQ0KKwl9DQorDQorICAgIC8qIEFsbG9jYXRlIGFsbCBhcnJheXMgd2l0aCBv
bmUgYmlnIGFsbG9jYSgpICovDQorICAgIHsNCisJICBpbnQgbnIgPSBucl9n
cHIgKyBucl9mcHIgKyBucl9zdGFjazsNCisJICANCisJICAvKiBzdGFjaywg
aWYgdXNlZCwgbXVzdCBiZSAxNiBieXRlcyBhbGlnbmVkICovDQorCSAgaWYg
KG5yX3N0YWNrKQ0KKwkJbnIgPSAobnIgKyAxKSAmIH4xOw0KKw0KKwkgIC8q
IHN0YWNrW10gaXMgaW4gY2FsbGVkIHBhcmFtZXRlcnMgYXJlYS4gICovDQor
CSAgc3RhY2sgPSBfX2J1aWx0aW5fYWxsb2NhICg4ICogbnIpOw0KKw0KKwkg
IC8qIGdwcltdIGFuZCBmcHJbXSBhcmUgaW4gY2FsbGVlIGxvY2FsIHZhcmlh
YmxlIGFyZWEuICAqLw0KKwkgIGdwciA9IHN0YWNrICsgbnJfc3RhY2s7DQor
CSAgZnByID0gKGRvdWJsZSAqKShncHIgKyBucl9ncHIpOw0KKwkgIA0KKwkg
IC8qIGlmIF9fYnVpbGRpbl9hbGxvYygpIGRvZXMgbm90IGhhbmRsZSBsaW5r
LWFyZWEsIHNraXAgaXQuICAqLw0KKwkgIHN0YWNrICs9IEFSR19ESVNQTEFD
RU1FTlQ7DQorICAgIH0NCisNCisgICAgLyogYnVpbGQgZ3ByW10sIGZwcltd
IGFuZCBzdGFja1tdIGFycmF5cyAqLw0KKyAgICBucl9ncHIgPSAwOw0KKwlu
cl9mcHIgPSAwOw0KKwlucl9zdGFjayA9IDA7DQorCQ0KKyAgICBhcmdzID0g
Y2FsbGFyZ3M7DQorICAgIHdoaWxlIChhcmdzICE9IGxhc3QpIHsNCisJICBz
d2l0Y2ggKGNhbGx0eXBlW2FyZ3MgLSBjYWxsYXJnc10pIHsNCisJICBjYXNl
ICdGJzogew0KKwkJanZhbHVlIHZhbHVlID0geyAuZCA9IChkb3VibGUpYXJn
cy0+ZiB9Ow0KKwkJaWYgKG5yX2ZwciA8IEZQUl9BUkdTKSB7DQorCQkgIGZw
cltucl9mcHIrK10gPSB2YWx1ZS5kOw0KKwkJICBncHJbbnJfZ3ByKytdID0g
dmFsdWUuajsNCisJCX0NCisJCWVsc2Ugew0KKwkJICAqKGZsb2F0ICopc3Rh
Y2sgPSB2YWx1ZS5kOw0KKwkJICBzdGFjaysrOw0KKwkJfQ0KKwkJYnJlYWs7
DQorCSAgfQ0KKwkgIA0KKwkgIGNhc2UgJ0QnOiB7DQorCQlqdmFsdWUgdmFs
dWUgPSB7IC5kID0gYXJncy0+ZCB9Ow0KKwkgICAgaWYgKG5yX2ZwciA8IEZQ
Ul9BUkdTKSB7DQorCQkgIGZwcltucl9mcHIrK10gPSB2YWx1ZS5kOw0KKwkJ
ICBncHJbbnJfZ3ByKytdID0gdmFsdWUuajsNCisJICAgIH0NCisJCWVsc2Ug
ew0KKwkJICAqKGRvdWJsZSAqKXN0YWNrID0gdmFsdWUuZDsNCisJCSAgc3Rh
Y2srKzsNCisJCX0NCisJCWJyZWFrOw0KKwkgIH0NCisJICANCisJICBkZWZh
dWx0Og0KKwkJaWYgKG5yX2dwciA8IEdQUl9BUkdTKQ0KKwkJICBncHJbbnJf
Z3ByKytdID0gYXJncy0+ajsNCisJCWVsc2UNCisJCSAgKnN0YWNrKysgPSBh
cmdzLT5qOw0KKwkgIH0NCisJICBhcmdzKys7DQorICAgIH0NCisNCisgICAg
ew0KKwkgIHJlZ2lzdGVyIEFSR19UWVBFIGEwIGFzbSgib3V0MCIpOw0KKwkg
IHJlZ2lzdGVyIEFSR19UWVBFIGExIGFzbSgib3V0MSIpOw0KKwkgIHJlZ2lz
dGVyIEFSR19UWVBFIGEyIGFzbSgib3V0MiIpOw0KKwkgIHJlZ2lzdGVyIEFS
R19UWVBFIGEzIGFzbSgib3V0MyIpOw0KKwkgIHJlZ2lzdGVyIEFSR19UWVBF
IGE0IGFzbSgib3V0NCIpOw0KKwkgIHJlZ2lzdGVyIEFSR19UWVBFIGE1IGFz
bSgib3V0NSIpOw0KKwkgIHJlZ2lzdGVyIEFSR19UWVBFIGE2IGFzbSgib3V0
NiIpOw0KKwkgIHJlZ2lzdGVyIEFSR19UWVBFIGE3IGFzbSgib3V0NyIpOw0K
KwkgIA0KKwkgIHJlZ2lzdGVyIGRvdWJsZSBkMCBhc20oImY4Iik7DQorCSAg
cmVnaXN0ZXIgZG91YmxlIGQxIGFzbSgiZjkiKTsNCisJICByZWdpc3RlciBk
b3VibGUgZDIgYXNtKCJmMTAiKTsNCisJICByZWdpc3RlciBkb3VibGUgZDMg
YXNtKCJmMTEiKTsNCisJICByZWdpc3RlciBkb3VibGUgZDQgYXNtKCJmMTIi
KTsNCisJICByZWdpc3RlciBkb3VibGUgZDUgYXNtKCJmMTMiKTsNCisJICBy
ZWdpc3RlciBkb3VibGUgZDYgYXNtKCJmMTQiKTsNCisJICByZWdpc3RlciBk
b3VibGUgZDcgYXNtKCJmMTUiKTsNCisJICANCisJICAvKiBsb2FkIEZQUiBy
ZWdpc3RlcnMgZnJvbSBmcHJbXSAqLw0KKwkgIHN3aXRjaCAobnJfZnByKSB7
DQorCQlBUkdfRlBSKDcpOw0KKwkJQVJHX0ZQUig2KTsNCisJCUFSR19GUFIo
NSk7DQorCQlBUkdfRlBSKDQpOw0KKwkJQVJHX0ZQUigzKTsNCisJCUFSR19G
UFIoMik7DQorCQlBUkdfRlBSKDEpOw0KKwkJQVJHX0ZQUigwKTsNCisJICBj
YXNlIDA6Ow0KKwkgIH0NCisNCisJICAvKiBsb2FkIEdQUiByZWdpc3RlcnMg
ZnJvbSBncHJbXSAqLw0KKwkgIHN3aXRjaCAobnJfZ3ByKSB7DQorCQlBUkdf
R1BSKDcpOw0KKwkJQVJHX0dQUig2KTsNCisJCUFSR19HUFIoNSk7DQorCQlB
UkdfR1BSKDQpOw0KKwkJQVJHX0dQUigzKTsNCisJCUFSR19HUFIoMik7DQor
CQlBUkdfR1BSKDEpOw0KKwkJQVJHX0dQUigwKTsNCisJICBjYXNlIDA6Ow0K
KwkgIH0NCisJICANCisJICAvKiBFbnN1cmUgdGhhdCB0aGUgYXNzaWdubWVu
dHMgdG8gZiogcmVnaXN0ZXJzIHdvbid0IGJlIG9wdGltaXplZCBhd2F5LiAq
Lw0KKwkgIGFzbSAoIiIgOjoNCisJCSAgICJmIiAoZDApLCAiZiIgKGQxKSwg
ImYiIChkMiksICJmIiAoZDMpLA0KKwkJICAgImYiIChkNCksICJmIiAoZDUp
LCAiZiIgKGQ2KSwgImYiIChkNykpOw0KKw0KKwkgIHN3aXRjaChjYWxsLT5y
ZXRzaXplKSB7DQorCSAgY2FzZSAwOg0KKwkgICAgLyogTXVzdCBiZSB2b2lk
LiAgKi8NCisJICAgICgodm9pZCAoKikoQVJHX1RZUEVTKSkoZnVuYykpKEFS
R19MSVNUKTsNCisJICAgIGJyZWFrOw0KKwkJDQorCSAgY2FzZSAxOg0KKwkg
ICAgaWYgKGNhbGwtPnJldHR5cGUgPT0gJ0YnKQ0KKwkJICBjYWxsLT5yZXQt
PmYgPSAoKGpmbG9hdCAoKikoQVJHX1RZUEVTKSkoZnVuYykpKEFSR19MSVNU
KTsNCisJICAgIGVsc2UgLyogTXVzdCBiZSAzMi1iaXQgb3Igc21hbGxlciBp
bnQuICAqLw0KKwkJICBjYWxsLT5yZXQtPmkgPSAoKGppbnQgKCopKEFSR19U
WVBFUykpKGZ1bmMpKShBUkdfTElTVCk7DQorCSAgICBicmVhazsNCisNCisJ
ICBkZWZhdWx0Og0KKwkgICAgLyogSXQgY291bGQndmUgYmVlbiBgY2FzZSAy
OycsIGJ1dCB0aGVuIHdlJ2QgZ2V0IGFuIGFkZGl0aW9uYWwgY21wDQorCSAg
ICAgKiB0aGF0IHdlIGRvbid0IHJlYWxseSBuZWVkLiAgKi8NCisJICAgIGlm
IChjYWxsLT5yZXR0eXBlID09ICdEJykNCisJCSAgY2FsbC0+cmV0LT5kID0g
KChqZG91YmxlICgqKShBUkdfVFlQRVMpKShmdW5jKSkoQVJHX0xJU1QpOw0K
KwkgICAgZWxzZSAvKiBNdXN0IGJlIGpsb25nLiAgKi8NCisJCSAgY2FsbC0+
cmV0LT5qID0gKChqbG9uZyAoKikoQVJHX1RZUEVTKSkoZnVuYykpKEFSR19M
SVNUKTsNCisJICAgIGJyZWFrOw0KKwkgIH0NCisgICAgfQ0KK30NCisNCisj
dW5kZWYgQVJHX1RZUEUNCisjdW5kZWYgQVJHX1RZUEVTDQorI3VuZGVmIEFS
R19MSVNUDQorI3VuZGVmIEdQUl9BUkdTDQorI3VuZGVmIEZQUl9BUkdTDQor
I3VuZGVmIEFSR19ESVNQTEFDRU1FTlQNCisjdW5kZWYgQVJHX0dQUg0KKyN1
bmRlZiBBUkdfRlBSDQotLS0ga2FmZmUtc25hcC9jb25maWcvaWE2NC90aHJl
YWRzLmguaWE2NAlUaHUgTm92IDI5IDA5OjQxOjQzIDIwMDENCisrKyBrYWZm
ZS1zbmFwL2NvbmZpZy9pYTY0L3RocmVhZHMuaAlUaHUgTm92IDI5IDA5OjQx
OjQzIDIwMDENCkBAIC0wLDAgKzEsMzMgQEANCisvKg0KKyAqIGlhNjQvdGhy
ZWFkcy5oDQorICogSUEtNjQgdGhyZWFkaW5nIGluZm9ybWF0aW9uLg0KKyAq
DQorICogQ29weXJpZ2h0IChjKSAyMDAxDQorICoJTWFuZHJha2VTb2Z0LiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFNlZSB0aGUgZmlsZSAi
bGljZW5zZS50ZXJtcyIgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFuZCBy
ZWRpc3RyaWJ1dGlvbg0KKyAqIG9mIHRoaXMgZmlsZS4NCisgKi8NCisNCisj
aWZuZGVmIF9faWE2NF90aHJlYWRzX2gNCisjZGVmaW5lIF9faWE2NF90aHJl
YWRzX2gNCisNCisvKiovDQorLyogVGhyZWFkIGhhbmRsaW5nICovDQorLyoq
Lw0KKyNkZWZpbmUJVVNFX0lOVEVSTkFMX1RIUkVBRFMNCisNCisvKg0KKyAq
IFNldCBhIGRlZmF1bHQgc2l6ZSBmb3IgdGhlIHN0YWNrLg0KKyAqIEluY2x1
ZGVzIHJlZ2lzdGVyIHN0YWNrIHNpemUNCisgKi8NCisjZGVmaW5lCVRIUkVB
RFNUQUNLU0laRQkoMTI4ICogMTAyNCkNCisNCisvKg0KKyAqIFN0YWNrIG9m
ZnNldC4NCisgKiBUaGlzIGlzIHRoZSBvZmZzZXQgaW50byB0aGUgc2V0am1w
IGJ1ZmZlciB3aGVyZSB0aGUgc3RhY2sgcG9pbnRlciBpcw0KKyAqIHN0b3Jl
ZC4gIFRoaXMgbWF5IGJlIGRpZmZlcmVudCB3aXRoIGRpZmZlcmVudCBPU2Vz
Lg0KKyAqLw0KKyNkZWZpbmUJU1BfT0ZGU0VUCTANCisNCisjZW5kaWYNCi0t
LSBrYWZmZS1zbmFwL2NvbmZpZy9NYWtlZmlsZS5pbi5pYTY0CVN1biBBdWcg
MTkgMTY6NDE6MzIgMjAwMQ0KKysrIGthZmZlLXNuYXAvY29uZmlnL01ha2Vm
aWxlLmluCVRodSBOb3YgMjkgMDk6NDE6NDMgMjAwMQ0KQEAgLTE4OCw2ICsx
ODgsMTEgQEANCiAJYXJtL25ldGJzZDEvbWQuaCBcDQogCWFybS90aHJlYWRz
LmggXA0KIAlhcm0vdHJhbXBvbGluZXMuYyBcDQorCWlhNjQvY29tbW9uLmgg
XA0KKwlpYTY0L2xpbnV4L21kLmMgXA0KKwlpYTY0L2xpbnV4L21kLmggXA0K
KwlpYTY0L3RocmVhZHMuaCBcDQorCWlhNjQvc3lzZGVwQ2FsbE1ldGhvZC5o
IFwNCiAJaTM4Ni9iZW9zL2NvbmZpZy5mcmFnIFwNCiAJaTM4Ni9iZW9zL2pp
dC1tZC5oIFwNCiAJaTM4Ni9iZW9zL2ppdDMtbWQuaCBcDQotLS0ga2FmZmUt
c25hcC9jb25maWcvY29uZmlnLXNldGptcC5oLmlhNjQJTW9uIEF1ZyAgNiAw
NjowNjo1MCAyMDAxDQorKysga2FmZmUtc25hcC9jb25maWcvY29uZmlnLXNl
dGptcC5oCVRodSBOb3YgMjkgMDk6NDE6NDMgMjAwMQ0KQEAgLTkwLDQgKzkw
LDEyIEBADQogDQogI2VuZGlmDQogDQorI2lmIGRlZmluZWQoX19pYTY0X18p
DQorI2RlZmluZSBKVEhSRUFEX0RFQ0xBUkVfSk1QQlVGKHgpCUpUSFJFQURf
Sk1QQlVGIHg7IHZvaWQgKiB4IyNfcGFkDQorI2RlZmluZSBKVEhSRUFEX0FD
Q0VTU19KTVBCVUYoeCwgeSkJKF9fdHlwZW9mX18oKHgpLT55WzBdKSAqKSAo
KCgodW5zaWduZWQgbG9uZykmKHgpLT55KSArIDE1KSAmIC0xNikNCisjZWxz
ZQ0KKyNkZWZpbmUgSlRIUkVBRF9ERUNMQVJFX0pNUEJVRih4KQlKVEhSRUFE
X0pNUEJVRiB4DQorI2RlZmluZSBKVEhSRUFEX0FDQ0VTU19KTVBCVUYoeCwg
eSkJKHgpLT55DQorI2VuZGlmDQorDQogI2VuZGlmDQo=
---1463777692-685431467-1008068560=:3092--