Re: [RFC][PATCH] iowait statistics

Bill Davidsen (davidsen@tmr.com)
Wed, 15 May 2002 10:39:53 -0400 (EDT)


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.

--1170656797-477606187-1021473593=:4801
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 14 May 2002, William Lee Irwin III wrote:

> On Tue, May 14, 2002 at 09:31:30PM -0400, Bill Davidsen wrote:
> > *** ./Makefile Tue May 14 14:59:18 2002
> > --- ../linux-2.4.19-pre8-ac3p/./Makefile Tue May 14 17:01:49 2002
> > ***************
> > *** 1,7 ****
> > VERSION = 2
> > PATCHLEVEL = 4
> > SUBLEVEL = 19
> > ! EXTRAVERSION = -pre8-ac3
> >
> > KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
>
> These look like patch rejects, not patches themselves.
> Resend?

Looks like a context diff to me, I only diffed the files which had
changed, because the test machine is really slow (it is NOT named
"glacial" because it's so cool). I did a "make distclean" and then a full
recursive diff, which only took 46 minutes, and it's attached. I did a
--dry-run against the pre8-ac3 source and got no error messages, but the
last one seemed to work as well.

The benefit of a really slow test machine is that improvements are
magnified, so I can quickly see if a patch for performance does
anything;-)

-- 
bill davidsen <davidsen@tmr.com>
  CTO, TMR Associates, Inc
Doing interesting things with little computers since 1979.

--1170656797-477606187-1021473593=:4801 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="patch-2.4.19-pre8-ac3p+iow" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.3.96.1020515103953.4801B@gatekeeper.tmr.com> Content-Description:

ZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGlu dXgtMi40LjE5LXByZTgtYWMzL0NSRURJVFMgbGludXgtMi40LjE5LXByZTgt YWMzcC9DUkVESVRTDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL0NSRURJ VFMJVHVlIE1heSAxNCAxNDo1OToxOCAyMDAyDQorKysgbGludXgtMi40LjE5 LXByZTgtYWMzcC9DUkVESVRTCVR1ZSBNYXkgMTQgMTU6MDk6MTcgMjAwMg0K QEAgLTk5Niw4ICs5OTYsOCBAQA0KIA0KIE46IE5pZ2VsIEdhbWJsZQ0KIEU6 IG5pZ2VsQG5yZy5vcmcNCi1FOiBuaWdlbEBzZ2kuY29tDQogRDogSW50ZXJy dXB0LWRyaXZlbiBwcmludGVyIGRyaXZlcg0KK0Q6IFByZWVtcHRpYmxlIGtl cm5lbA0KIFM6IDEyMCBBbGxleSBXYXkNCiBTOiBNb3VudGFpbiBWaWV3LCBD YWxpZm9ybmlhIDk0MDQwDQogUzogVVNBDQpkaWZmIC11IC1yIC0tbmV3LWZp bGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMv RG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscCBsaW51eC0yLjQuMTktcHJl OC1hYzNwL0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHANCi0tLSBsaW51 eC0yLjQuMTktcHJlOC1hYzMvRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVs cAlUdWUgTWF5IDE0IDE0OjU5OjE4IDIwMDINCisrKyBsaW51eC0yLjQuMTkt cHJlOC1hYzNwL0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAJVHVlIE1h eSAxNCAxNTowOToxNyAyMDAyDQpAQCAtMjkxLDYgKzI5MSwxNyBAQA0KICAg SWYgeW91IGhhdmUgYSBzeXN0ZW0gd2l0aCBzZXZlcmFsIENQVXMsIHlvdSBk byBub3QgbmVlZCB0byBzYXkgWQ0KICAgaGVyZTogdGhlIGxvY2FsIEFQSUMg d2lsbCBiZSB1c2VkIGF1dG9tYXRpY2FsbHkuDQogDQorUHJlZW1wdGlibGUg S2VybmVsDQorQ09ORklHX1BSRUVNUFQNCisgIFRoaXMgb3B0aW9uIHJlZHVj ZXMgdGhlIGxhdGVuY3kgb2YgdGhlIGtlcm5lbCB3aGVuIHJlYWN0aW5nIHRv DQorICByZWFsLXRpbWUgb3IgaW50ZXJhY3RpdmUgZXZlbnRzIGJ5IGFsbG93 aW5nIGEgbG93IHByaW9yaXR5IHByb2Nlc3MgdG8NCisgIGJlIHByZWVtcHRl ZCBldmVuIGlmIGl0IGlzIGluIGtlcm5lbCBtb2RlIGV4ZWN1dGluZyBhIHN5 c3RlbSBjYWxsLg0KKyAgVGhpcyBhbGxvd3MgYXBwbGljYXRpb25zIHRvIHJ1 biBtb3JlIHJlbGlhYmx5IGV2ZW4gd2hlbiB0aGUgc3lzdGVtIGlzDQorICB1 bmRlciBsb2FkLg0KKw0KKyAgU2F5IFkgaGVyZSBpZiB5b3UgYXJlIGJ1aWxk aW5nIGEga2VybmVsIGZvciBhIGRlc2t0b3AsIGVtYmVkZGVkDQorICByZWFs LXRpbWUgc3lzdGVtLiAgU2F5IE4gaWYgeW91IGFyZSB1bnN1cmUuDQorDQog S2VybmVsIG1hdGggZW11bGF0aW9uDQogQ09ORklHX01BVEhfRU1VTEFUSU9O DQogICBMaW51eCBjYW4gZW11bGF0ZSBhIG1hdGggY29wcm9jZXNzb3IgKHVz ZWQgZm9yIGZsb2F0aW5nIHBvaW50DQpkaWZmIC11IC1yIC0tbmV3LWZpbGUg LVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvRG9j dW1lbnRhdGlvbi9wcmVlbXB0LWxvY2tpbmcudHh0IGxpbnV4LTIuNC4xOS1w cmU4LWFjM3AvRG9jdW1lbnRhdGlvbi9wcmVlbXB0LWxvY2tpbmcudHh0DQot LS0gbGludXgtMi40LjE5LXByZTgtYWMzL0RvY3VtZW50YXRpb24vcHJlZW1w dC1sb2NraW5nLnR4dAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkNCisrKyBs aW51eC0yLjQuMTktcHJlOC1hYzNwL0RvY3VtZW50YXRpb24vcHJlZW1wdC1s b2NraW5nLnR4dAlUdWUgTWF5IDE0IDE1OjA5OjE3IDIwMDINCkBAIC0wLDAg KzEsMTA0IEBADQorCQkgIFByb3BlciBMb2NraW5nIFVuZGVyIGEgUHJlZW1w dGlibGUgS2VybmVsOg0KKwkJICAgICAgIEtlZXBpbmcgS2VybmVsIENvZGUg UHJlZW1wdC1TYWZlDQorCQkJICBSb2JlcnQgTG92ZSA8cm1sQHRlY2g5Lm5l dD4NCisJCQkgICBMYXN0IFVwZGF0ZWQ6IDIyIEphbiAyMDAyDQorDQorDQor SU5UUk9EVUNUSU9ODQorDQorDQorQSBwcmVlbXB0aWJsZSBrZXJuZWwgY3Jl YXRlcyBuZXcgbG9ja2luZyBpc3N1ZXMuICBUaGUgaXNzdWVzIGFyZSB0aGUg c2FtZSBhcw0KK3Rob3NlIHVuZGVyIFNNUDogY29uY3VycmVuY3kgYW5kIHJl ZW50cmFuY3kuICBUaGFua2Z1bGx5LCB0aGUgTGludXggcHJlZW1wdGlibGUN CitrZXJuZWwgbW9kZWwgbGV2ZXJhZ2VzIGV4aXN0aW5nIFNNUCBsb2NraW5n IG1lY2hhbmlzbXMuICBUaHVzLCB0aGUga2VybmVsDQorcmVxdWlyZXMgZXhw bGljaXQgYWRkaXRpb25hbCBsb2NraW5nIGZvciB2ZXJ5IGZldyBhZGRpdGlv bmFsIHNpdHVhdGlvbnMuDQorDQorVGhpcyBkb2N1bWVudCBpcyBmb3IgYWxs IGtlcm5lbCBoYWNrZXJzLiAgRGV2ZWxvcGluZyBjb2RlIGluIHRoZSBrZXJu ZWwNCityZXF1aXJlcyBwcm90ZWN0aW5nIHRoZXNlIHNpdHVhdGlvbnMuDQor IA0KKw0KK1JVTEUgIzE6IFBlci1DUFUgZGF0YSBzdHJ1Y3R1cmVzIG5lZWQg ZXhwbGljaXQgcHJvdGVjdGlvbg0KKw0KKw0KK1R3byBzaW1pbGFyIHByb2Js ZW1zIGFyaXNlLiBBbiBleGFtcGxlIGNvZGUgc25pcHBldDoNCisNCisJc3Ry dWN0IHRoaXNfbmVlZHNfbG9ja2luZyB0dXhbTlJfQ1BVU107DQorCXR1eFtz bXBfcHJvY2Vzc29yX2lkKCldID0gc29tZV92YWx1ZTsNCisJLyogdGFzayBp cyBwcmVlbXB0ZWQgaGVyZS4uLiAqLw0KKwlzb21ldGhpbmcgPSB0dXhbc21w X3Byb2Nlc3Nvcl9pZCgpXTsNCisNCitGaXJzdCwgc2luY2UgdGhlIGRhdGEg aXMgcGVyLUNQVSwgaXQgbWF5IG5vdCBoYXZlIGV4cGxpY2l0IFNNUCBsb2Nr aW5nLCBidXQNCityZXF1aXJlIGl0IG90aGVyd2lzZS4gIFNlY29uZCwgd2hl biBhIHByZWVtcHRlZCB0YXNrIGlzIGZpbmFsbHkgcmVzY2hlZHVsZWQsDQor dGhlIHByZXZpb3VzIHZhbHVlIG9mIHNtcF9wcm9jZXNzb3JfaWQgbWF5IG5v dCBlcXVhbCB0aGUgY3VycmVudC4gIFlvdSBtdXN0DQorcHJvdGVjdCB0aGVz ZSBzaXR1YXRpb25zIGJ5IGRpc2FibGluZyBwcmVlbXB0aW9uIGFyb3VuZCB0 aGVtLg0KKw0KKw0KK1JVTEUgIzI6IENQVSBzdGF0ZSBtdXN0IGJlIHByb3Rl Y3RlZC4NCisNCisNCitVbmRlciBwcmVlbXB0aW9uLCB0aGUgc3RhdGUgb2Yg dGhlIENQVSBtdXN0IGJlIHByb3RlY3RlZC4gIFRoaXMgaXMgYXJjaC0NCitk ZXBlbmRlbnQsIGJ1dCBpbmNsdWRlcyBDUFUgc3RydWN0dXJlcyBhbmQgc3Rh dGUgbm90IHByZXNlcnZlZCBvdmVyIGEgY29udGV4dA0KK3N3aXRjaC4gIEZv ciBleGFtcGxlLCBvbiB4ODYsIGVudGVyaW5nIGFuZCBleGl0aW5nIEZQVSBt b2RlIGlzIG5vdyBhIGNyaXRpY2FsDQorc2VjdGlvbiB0aGF0IG11c3Qgb2Nj dXIgd2hpbGUgcHJlZW1wdGlvbiBpcyBkaXNhYmxlZC4gIFRoaW5rIHdoYXQg d291bGQgaGFwcGVuDQoraWYgdGhlIGtlcm5lbCBpcyBleGVjdXRpbmcgYSBm bG9hdGluZy1wb2ludCBpbnN0cnVjdGlvbiBhbmQgaXMgdGhlbiBwcmVlbXB0 ZWQuDQorUmVtZW1iZXIsIHRoZSBrZXJuZWwgZG9lcyBub3Qgc2F2ZSBGUFUg c3RhdGUgZXhjZXB0IGZvciB1c2VyIHRhc2tzLiAgVGhlcmVmb3JlLA0KK3Vw b24gcHJlZW1wdGlvbiwgdGhlIEZQVSByZWdpc3RlcnMgd2lsbCBiZSBzb2xk IHRvIHRoZSBsb3dlc3QgYmlkZGVyLiAgVGh1cywNCitwcmVlbXB0aW9uIG11 c3QgYmUgZGlzYWJsZWQgYXJvdW5kIHN1Y2ggcmVnaW9ucy4NCisNCitOb3Rl LCBzb21lIEZQVSBmdW5jdGlvbnMgYXJlIGFscmVhZHkgZXhwbGljaXRseSBw cmVlbXB0IHNhZmUuICBGb3IgZXhhbXBsZSwNCitrZXJuZWxfZnB1X2JlZ2lu IGFuZCBrZXJuZWxfZnB1X2VuZCB3aWxsIGRpc2FibGUgYW5kIGVuYWJsZSBw cmVlbXB0aW9uLg0KK0hvd2V2ZXIsIG1hdGhfc3RhdGVfcmVzdG9yZSBtdXN0 IGJlIGNhbGxlZCB3aXRoIHByZWVtcHRpb24gZGlzYWJsZWQuDQorDQorDQor UlVMRSAjMzogTG9jayBhY3F1aXJlIGFuZCByZWxlYXNlIG11c3QgYmUgcGVy Zm9ybWVkIGJ5IHNhbWUgdGFzaw0KKw0KKw0KK0EgbG9jayBhY3F1aXJlZCBp biBvbmUgdGFzayBtdXN0IGJlIHJlbGVhc2VkIGJ5IHRoZSBzYW1lIHRhc2su ICBUaGlzDQorbWVhbnMgeW91IGNhbid0IGRvIG9kZGJhbGwgdGhpbmdzIGxp a2UgYWNxdWlyZSBhIGxvY2sgYW5kIGdvIG9mZiB0bw0KK3BsYXkgd2hpbGUg YW5vdGhlciB0YXNrIHJlbGVhc2VzIGl0LiAgSWYgeW91IHdhbnQgdG8gZG8g c29tZXRoaW5nDQorbGlrZSB0aGlzLCBhY3F1aXJlIGFuZCByZWxlYXNlIHRo ZSB0YXNrIGluIHRoZSBzYW1lIGNvZGUgcGF0aCBhbmQNCitoYXZlIHRoZSBj YWxsZXIgd2FpdCBvbiBhbiBldmVudCBieSB0aGUgb3RoZXIgdGFzay4NCisN CisNCitTT0xVVElPTg0KKw0KKw0KK0RhdGEgcHJvdGVjdGlvbiB1bmRlciBw cmVlbXB0aW9uIGlzIGFjaGlldmVkIGJ5IGRpc2FibGluZyBwcmVlbXB0aW9u IGZvciB0aGUNCitkdXJhdGlvbiBvZiB0aGUgY3JpdGljYWwgcmVnaW9uLg0K Kw0KK3ByZWVtcHRfZW5hYmxlKCkJCWRlY3JlbWVudCB0aGUgcHJlZW1wdCBj b3VudGVyDQorcHJlZW1wdF9kaXNhYmxlKCkJCWluY3JlbWVudCB0aGUgcHJl ZW1wdCBjb3VudGVyDQorcHJlZW1wdF9lbmFibGVfbm9fcmVzY2hlZCgpCWRl Y3JlbWVudCwgYnV0IGRvIG5vdCBpbW1lZGlhdGVseSBwcmVlbXB0DQorcHJl ZW1wdF9nZXRfY291bnQoKQkJcmV0dXJuIHRoZSBwcmVlbXB0IGNvdW50ZXIN CisNCitUaGUgZnVuY3Rpb25zIGFyZSBuZXN0YWJsZS4gIEluIG90aGVyIHdv cmRzLCB5b3UgY2FuIGNhbGwgcHJlZW1wdF9kaXNhYmxlDQorbi10aW1lcyBp biBhIGNvZGUgcGF0aCwgYW5kIHByZWVtcHRpb24gd2lsbCBub3QgYmUgcmVl bmFibGVkIHVudGlsIHRoZSBuLXRoDQorY2FsbCB0byBwcmVlbXB0X2VuYWJs ZS4gIFRoZSBwcmVlbXB0IHN0YXRlbWVudHMgZGVmaW5lIHRvIG5vdGhpbmcg aWYNCitwcmVlbXB0aW9uIGlzIG5vdCBlbmFibGVkLg0KKw0KK05vdGUgdGhh dCB5b3UgZG8gbm90IG5lZWQgdG8gZXhwbGljaXRseSBwcmV2ZW50IHByZWVt cHRpb24gaWYgeW91IGFyZSBob2xkaW5nDQorYW55IGxvY2tzIG9yIGludGVy cnVwdHMgYXJlIGRpc2FibGVkLCBzaW5jZSBwcmVlbXB0aW9uIGlzIGltcGxp Y2l0bHkgZGlzYWJsZWQNCitpbiB0aG9zZSBjYXNlcy4NCisNCitFeGFtcGxl Og0KKw0KKwljcHVjYWNoZV90ICpjYzsgLyogdGhpcyBpcyBwZXItQ1BVICov DQorCXByZWVtcHRfZGlzYWJsZSgpOw0KKwljYyA9IGNjX2RhdGEoc2VhcmNo cCk7DQorCWlmIChjYyAmJiBjYy0+YXZhaWwpIHsNCisJCV9fZnJlZV9ibG9j ayhzZWFyY2hwLCBjY19lbnRyeShjYyksIGNjLT5hdmFpbCk7DQorCQljYy0+ YXZhaWwgPSAwOw0KKwl9DQorCXByZWVtcHRfZW5hYmxlKCk7DQorCXJldHVy biAwOw0KKw0KK05vdGljZSBob3cgdGhlIHByZWVtcHRpb24gc3RhdGVtZW50 cyBtdXN0IGVuY29tcGFzcyBldmVyeSByZWZlcmVuY2Ugb2YgdGhlDQorY3Jp dGljYWwgdmFyaWFibGVzLiAgQW5vdGhlciBleGFtcGxlOg0KKw0KKwlpbnQg YnVmW05SX0NQVVNdOw0KKwlzZXRfY3B1X3ZhbChidWYpOw0KKwlpZiAoYnVm W3NtcF9wcm9jZXNzb3JfaWQoKV0gPT0gLTEpIHByaW50ZihLRVJOX0lORk8g IndlZSFcbiIpOw0KKwlzcGluX2xvY2soJmJ1Zl9sb2NrKTsNCisJLyogLi4u ICovDQorDQorVGhpcyBjb2RlIGlzIG5vdCBwcmVlbXB0LXNhZmUsIGJ1dCBz ZWUgaG93IGVhc2lseSB3ZSBjYW4gZml4IGl0IGJ5IHNpbXBseQ0KK21vdmlu ZyB0aGUgc3Bpbl9sb2NrIHVwIHR3byBsaW5lcy4NCmRpZmYgLXUgLXIgLS1u ZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4 LWFjMy9NQUlOVEFJTkVSUyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL01BSU5U QUlORVJTDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL01BSU5UQUlORVJT CVR1ZSBNYXkgMTQgMTQ6NTk6MTggMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1w cmU4LWFjM3AvTUFJTlRBSU5FUlMJVHVlIE1heSAxNCAxNTowOToxNyAyMDAy DQpAQCAtMTMxNyw2ICsxMzE3LDE0IEBADQogTToJbW9zdHJvd3NAc3R5eC51 d2F0ZXJsb28uY2ENCiBTOglNYWludGFpbmVkDQogDQorUFJFRU1QVElCTEUg S0VSTkVMDQorUDoJUm9iZXJ0IE0uIExvdmUNCitNOglybWxAdGVjaDkubmV0 DQorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KK0w6CWtwcmVl bXB0LXRlY2hAbGlzdHMuc291cmNlZm9yZ2UubmV0DQorVzoJaHR0cDovL3Rl Y2g5Lm5ldC9ybWwvbGludXgNCitTOglTdXBwb3J0ZWQNCisNCiBQUk9NSVNF IERDNDAzMCBDQUNISU5HIERJU0sgQ09OVFJPTExFUiBEUklWRVINCiBQOglQ ZXRlciBEZW5pc29uDQogTToJcHJvbWlzZUBwbmQtcGMuZGVtb24uY28udWsN CmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxp bnV4LTIuNC4xOS1wcmU4LWFjMy9NYWtlZmlsZSBsaW51eC0yLjQuMTktcHJl OC1hYzNwL01ha2VmaWxlDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL01h a2VmaWxlCVR1ZSBNYXkgMTQgMTQ6NTk6MTggMjAwMg0KKysrIGxpbnV4LTIu NC4xOS1wcmU4LWFjM3AvTWFrZWZpbGUJVHVlIE1heSAxNCAxNzowMTo0OSAy MDAyDQpAQCAtMSw3ICsxLDcgQEANCiBWRVJTSU9OID0gMg0KIFBBVENITEVW RUwgPSA0DQogU1VCTEVWRUwgPSAxOQ0KLUVYVFJBVkVSU0lPTiA9IC1wcmU4 LWFjMw0KK0VYVFJBVkVSU0lPTiA9IC1wcmU4LWFjMy4xcCtpb3cNCiANCiBL RVJORUxSRUxFQVNFPSQoVkVSU0lPTikuJChQQVRDSExFVkVMKS4kKFNVQkxF VkVMKSQoRVhUUkFWRVJTSU9OKQ0KIA0KZGlmZiAtdSAtciAtLW5ldy1maWxl IC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2Fy Y2gvYXJtL2NvbmZpZy5pbiBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2FyY2gv YXJtL2NvbmZpZy5pbg0KLS0tIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9hcmNo L2FybS9jb25maWcuaW4JVHVlIE1heSAxNCAxNDo1OToxOCAyMDAyDQorKysg bGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNoL2FybS9jb25maWcuaW4JVHVl IE1heSAxNCAxNTowOToxNyAyMDAyDQpAQCAtNTUyLDYgKzU1Miw3IEBADQog aWYgWyAiJENPTkZJR19JU0ROIiAhPSAibiIgXTsgdGhlbg0KICAgIHNvdXJj ZSBkcml2ZXJzL2lzZG4vQ29uZmlnLmluDQogZmkNCitkZXBfYm9vbCAnUHJl ZW1wdGlibGUgS2VybmVsJyBDT05GSUdfUFJFRU1QVCAkQ09ORklHX0NQVV8z Mg0KIGVuZG1lbnUNCiANCiAjDQpkaWZmIC11IC1yIC0tbmV3LWZpbGUgLVgg L3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvYXJjaC9h cm0va2VybmVsL2VudHJ5LWFybXYuUyBsaW51eC0yLjQuMTktcHJlOC1hYzNw L2FyY2gvYXJtL2tlcm5lbC9lbnRyeS1hcm12LlMNCi0tLSBsaW51eC0yLjQu MTktcHJlOC1hYzMvYXJjaC9hcm0va2VybmVsL2VudHJ5LWFybXYuUwlUdWUg TWF5IDE0IDE0OjU1OjQwIDIwMDINCisrKyBsaW51eC0yLjQuMTktcHJlOC1h YzNwL2FyY2gvYXJtL2tlcm5lbC9lbnRyeS1hcm12LlMJVHVlIE1heSAxNCAx NTowOToxNyAyMDAyDQpAQCAtNjk3LDYgKzY5NywxMiBAQA0KIAkJYWRkCXI0 LCBzcCwgI1NfU1ANCiAJCW1vdglyNiwgbHINCiAJCXN0bWlhCXI0LCB7cjUs IHI2LCByNywgcjgsIHI5fQlAIHNhdmUgc3BfU1ZDLCBscl9TVkMsIHBjLCBj cHNyLCBvbGRfcm8NCisjaWZkZWYgQ09ORklHX1BSRUVNUFQNCisJCWdldF9j dXJyZW50X3Rhc2sgcjkNCisJCWxkcglyOCwgW3I5LCAjVFNLX1BSRUVNUFRd DQorCQlhZGQJcjgsIHI4LCAjMQ0KKwkJc3RyCXI4LCBbcjksICNUU0tfUFJF RU1QVF0NCisjZW5kaWYNCiAxOgkJZ2V0X2lycW5yX2FuZF9iYXNlIHIwLCBy NiwgcjUsIGxyDQogCQltb3ZuZQlyMSwgc3ANCiAJCUANCkBAIC03MDQsNiAr NzEwLDI1IEBADQogCQlADQogCQlhZHJzdmMJbmUsIGxyLCAxYg0KIAkJYm5l CWRvX0lSUQ0KKyNpZmRlZiBDT05GSUdfUFJFRU1QVA0KKzI6CQlsZHIJcjgs IFtyOSwgI1RTS19QUkVFTVBUXQ0KKwkJc3VicwlyOCwgcjgsICMxDQorCQli bmUJM2YNCisJCWxkcglyNywgW3I5LCAjVFNLX05FRURfUkVTQ0hFRF0NCisJ CXRlcQlyNywgIzANCisJCWJlcQkzZg0KKwkJbGRyCXI2LCAuTENpcnFzdGF0 DQorCQlsZHIJcjAsIFtyNiwgI0lSUVNUQVRfQkhfQ09VTlRdDQorCQl0ZXEJ cjAsICMwDQorCQlibmUJM2YNCisJCW1vdglyMCwgI01PREVfU1ZDDQorCQlt c3IJY3Bzcl9jLCByMAkJQCBlbmFibGUgaW50ZXJydXB0cw0KKwkJYmwJU1lN Qk9MX05BTUUocHJlZW1wdF9zY2hlZHVsZSkNCisJCW1vdglyMCwgI0lfQklU IHwgTU9ERV9TVkMNCisJCW1zcgljcHNyX2MsIHIwICAgICAgICAgICAgICBA IGRpc2FibGUgaW50ZXJydXB0cw0KKwkJYgkyYg0KKzM6CQlzdHIJcjgsIFty OSwgI1RTS19QUkVFTVBUXQ0KKyNlbmRpZg0KIAkJbGRyCXIwLCBbc3AsICNT X1BTUl0JCUAgaXJxcyBhcmUgYWxyZWFkeSBkaXNhYmxlZA0KIAkJbXNyCXNw c3IsIHIwDQogCQlsZG1pYQlzcCwge3IwIC0gcGN9XgkJCUAgbG9hZCByMCAt IHBjLCBjcHNyDQpAQCAtNzYxLDYgKzc4Niw5IEBADQogLkxDcHJvY2ZuczoJ LndvcmQJU1lNQk9MX05BTUUocHJvY2Vzc29yKQ0KICNlbmRpZg0KIC5MQ2Zw OgkJLndvcmQJU1lNQk9MX05BTUUoZnBfZW50ZXIpDQorI2lmZGVmIENPTkZJ R19QUkVFTVBUDQorLkxDaXJxc3RhdDoJLndvcmQJU1lNQk9MX05BTUUoaXJx X3N0YXQpDQorI2VuZGlmDQogDQogCQlpcnFfcHJpb190YWJsZQ0KIA0KQEAg LTgwMSw2ICs4MjksMTIgQEANCiAJCXN0bWRiCXI4LCB7c3AsIGxyfV4NCiAJ CWFsaWdubWVudF90cmFwIHI0LCByNywgX190ZW1wX2lycQ0KIAkJemVyb19m cA0KKwkJZ2V0X2N1cnJlbnRfdGFzayB0c2sNCisjaWZkZWYgQ09ORklHX1BS RUVNUFQNCisJCWxkcglyMCwgW3RzaywgI1RTS19QUkVFTVBUXQ0KKwkJYWRk CXIwLCByMCwgIzENCisJCXN0cglyMCwgW3RzaywgI1RTS19QUkVFTVBUXQ0K KyNlbmRpZg0KIDE6CQlnZXRfaXJxbnJfYW5kX2Jhc2UgcjAsIHI2LCByNSwg bHINCiAJCW1vdm5lCXIxLCBzcA0KIAkJYWRyc3ZjCW5lLCBsciwgMWINCkBA IC04MDgsOCArODQyLDEyIEBADQogCQlAIHJvdXRpbmUgY2FsbGVkIHdpdGgg cjAgPSBpcnEgbnVtYmVyLCByMSA9IHN0cnVjdCBwdF9yZWdzICoNCiAJCUAN CiAJCWJuZQlkb19JUlENCisjaWZkZWYgQ09ORklHX1BSRUVNUFQNCisJCWxk cglyMCwgW3RzaywgI1RTS19QUkVFTVBUXQ0KKwkJc3ViCXIwLCByMCwgIzEN CisJCXN0cglyMCwgW3RzaywgI1RTS19QUkVFTVBUXQ0KKyNlbmRpZg0KIAkJ bW92CXdoeSwgIzANCi0JCWdldF9jdXJyZW50X3Rhc2sgdHNrDQogCQliCXJl dF90b191c2VyDQogDQogCQkuYWxpZ24JNQ0KZGlmZiAtdSAtciAtLW5ldy1m aWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMz L2FyY2gvYXJtL3Rvb2xzL2dldGNvbnN0YW50cy5jIGxpbnV4LTIuNC4xOS1w cmU4LWFjM3AvYXJjaC9hcm0vdG9vbHMvZ2V0Y29uc3RhbnRzLmMNCi0tLSBs aW51eC0yLjQuMTktcHJlOC1hYzMvYXJjaC9hcm0vdG9vbHMvZ2V0Y29uc3Rh bnRzLmMJVGh1IE9jdCAxMSAxMjowNDo1NyAyMDAxDQorKysgbGludXgtMi40 LjE5LXByZTgtYWMzcC9hcmNoL2FybS90b29scy9nZXRjb25zdGFudHMuYwlU dWUgTWF5IDE0IDE1OjA5OjE3IDIwMDINCkBAIC0xMyw2ICsxMyw3IEBADQog DQogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+DQogI2luY2x1ZGUgPGFzbS91 YWNjZXNzLmg+DQorI2luY2x1ZGUgPGFzbS9oYXJkaXJxLmg+DQogDQogLyoN CiAgKiBNYWtlIHN1cmUgdGhhdCB0aGUgY29tcGlsZXIgYW5kIHRhcmdldCBh cmUgY29tcGF0aWJsZS4NCkBAIC0zOCw2ICszOSwxMSBAQA0KIA0KIERFRk4o IlRTU19TQVZFIiwJCU9GRl9UU0sodGhyZWFkLnNhdmUpKTsNCiBERUZOKCJU U1NfRlBFU0FWRSIsCQlPRkZfVFNLKHRocmVhZC5mcHN0YXRlLnNvZnQuc2F2 ZSkpOw0KKw0KKyNpZmRlZiBDT05GSUdfUFJFRU1QVA0KK0RFRk4oIlRTS19Q UkVFTVBUIiwJCU9GRl9UU0socHJlZW1wdF9jb3VudCkpOw0KK0RFRk4oIklS UVNUQVRfQkhfQ09VTlQiLAkodW5zaWduZWQgbG9uZykmKCgoaXJxX2NwdXN0 YXRfdCAqKTApLT5fX2xvY2FsX2JoX2NvdW50KSk7DQorI2VuZGlmDQogDQog I2lmZGVmIENPTkZJR19DUFVfMzINCiBERUZOKCJUU1NfRE9NQUlOIiwJCU9G Rl9UU0sodGhyZWFkLmRvbWFpbikpOw0KZGlmZiAtdSAtciAtLW5ldy1maWxl IC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2Fy Y2gvaTM4Ni9jb25maWcuaW4gbGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNo L2kzODYvY29uZmlnLmluDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2Fy Y2gvaTM4Ni9jb25maWcuaW4JVHVlIE1heSAxNCAxNDo1OToxOCAyMDAyDQor KysgbGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNoL2kzODYvY29uZmlnLmlu CVR1ZSBNYXkgMTQgMTU6MDk6MTcgMjAwMg0KQEAgLTE5OSw2ICsxOTksNyBA QA0KIGJvb2wgJ01hdGggZW11bGF0aW9uJyBDT05GSUdfTUFUSF9FTVVMQVRJ T04NCiBib29sICdNVFJSIChNZW1vcnkgVHlwZSBSYW5nZSBSZWdpc3Rlcikg c3VwcG9ydCcgQ09ORklHX01UUlINCiBib29sICdTeW1tZXRyaWMgbXVsdGkt cHJvY2Vzc2luZyBzdXBwb3J0JyBDT05GSUdfU01QDQorYm9vbCAnUHJlZW1w dGlibGUgS2VybmVsJyBDT05GSUdfUFJFRU1QVA0KIGlmIFsgIiRDT05GSUdf U01QIiAhPSAieSIgXTsgdGhlbg0KICAgIGJvb2wgJ0xvY2FsIEFQSUMgc3Vw cG9ydCBvbiB1bmlwcm9jZXNzb3JzJyBDT05GSUdfWDg2X1VQX0FQSUMNCiAg ICBkZXBfYm9vbCAnSU8tQVBJQyBzdXBwb3J0IG9uIHVuaXByb2Nlc3NvcnMn IENPTkZJR19YODZfVVBfSU9BUElDICRDT05GSUdfWDg2X1VQX0FQSUMNCkBA IC0yMTIsOSArMjEzLDEyIEBADQogICAgYm9vbCAnTXVsdGlxdWFkIE5VTUEg c3lzdGVtJyBDT05GSUdfTVVMVElRVUFEDQogZmkNCiANCi1pZiBbICIkQ09O RklHX1NNUCIgPSAieSIgLWEgIiRDT05GSUdfWDg2X0NNUFhDSEciID0gInki IF07IHRoZW4NCi0gICBkZWZpbmVfYm9vbCBDT05GSUdfSEFWRV9ERUNfTE9D SyB5DQoraWYgWyAiJENPTkZJR19TTVAiID0gInkiIC1vICIkQ09ORklHX1BS RUVNUFQiID0gInkiIF07IHRoZW4NCisgICBpZiBbICIkQ09ORklHX1g4Nl9D TVBYQ0hHIiA9ICJ5IiBdOyB0aGVuDQorICAgICAgZGVmaW5lX2Jvb2wgQ09O RklHX0hBVkVfREVDX0xPQ0sgeQ0KKyAgIGZpDQogZmkNCisNCiBlbmRtZW51 DQogDQogbWFpbm1lbnVfb3B0aW9uIG5leHRfY29tbWVudA0KZGlmZiAtdSAt ciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5 LXByZTgtYWMzL2FyY2gvaTM4Ni9rZXJuZWwvZW50cnkuUyBsaW51eC0yLjQu MTktcHJlOC1hYzNwL2FyY2gvaTM4Ni9rZXJuZWwvZW50cnkuUw0KLS0tIGxp bnV4LTIuNC4xOS1wcmU4LWFjMy9hcmNoL2kzODYva2VybmVsL2VudHJ5LlMJ VHVlIE1heSAxNCAxNDo1OToxOCAyMDAyDQorKysgbGludXgtMi40LjE5LXBy ZTgtYWMzcC9hcmNoL2kzODYva2VybmVsL2VudHJ5LlMJVHVlIE1heSAxNCAx NTowOToxNyAyMDAyDQpAQCAtNzEsNyArNzEsNyBAQA0KICAqIHRoZXNlIGFy ZSBvZmZzZXRzIGludG8gdGhlIHRhc2stc3RydWN0Lg0KICAqLw0KIHN0YXRl CQk9ICAwDQotZmxhZ3MJCT0gIDQNCitwcmVlbXB0X2NvdW50CT0gIDQNCiBz aWdwZW5kaW5nCT0gIDgNCiBhZGRyX2xpbWl0CT0gMTINCiBleGVjX2RvbWFp bgk9IDE2DQpAQCAtNzksOCArNzksMjggQEANCiB0c2tfcHRyYWNlCT0gMjQN CiBjcHUJCT0gMzINCiANCisvKiBUaGVzZSBhcmUgb2Zmc2V0cyBpbnRvIHRo ZSBpcnFfc3RhdCBzdHJ1Y3R1cmUNCisgKiBUaGVyZSBpcyBvbmUgcGVyIGNw dSBhbmQgaXQgaXMgYWxpZ25lZCB0byAzMg0KKyAqIGJ5dGUgYm91bmRyeSAo d2UgcHV0IHRoYXQgaGVyZSBhcyBhIHNoaWZ0IGNvdW50KQ0KKyAqLw0KK2ly cV9hcnJheV9zaGlmdCAgICAgICAgICAgICAgICAgPSBDT05GSUdfWDg2X0wx X0NBQ0hFX1NISUZUDQorDQoraXJxX3N0YXRfbG9jYWxfaXJxX2NvdW50ICAg ICAgICA9IDQNCitpcnFfc3RhdF9sb2NhbF9iaF9jb3VudCAgICAgICAgID0g OA0KKw0KIEVOT1NZUyA9IDM4DQogDQorI2lmZGVmIENPTkZJR19TTVANCisj ZGVmaW5lIEdFVF9DUFVfSU5EWAltb3ZsIGNwdSglZWJ4KSwlZWF4OyAgXA0K KyAgICAgICAgICAgICAgICAgICAgICAgIHNobGwgJGlycV9hcnJheV9zaGlm dCwlZWF4DQorI2RlZmluZSBHRVRfQ1VSUkVOVF9DUFVfSU5EWCBHRVRfQ1VS UkVOVCglZWJ4KTsgXA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0VUX0NQVV9JTkRYDQorI2RlZmluZSBDUFVfSU5EWCAoLCVlYXgpDQorI2Vs c2UNCisjZGVmaW5lIEdFVF9DUFVfSU5EWA0KKyNkZWZpbmUgR0VUX0NVUlJF TlRfQ1BVX0lORFggR0VUX0NVUlJFTlQoJWVieCkNCisjZGVmaW5lIENQVV9J TkRYDQorI2VuZGlmDQogDQogI2RlZmluZSBTQVZFX0FMTCBcDQogCWNsZDsg XA0KQEAgLTE3Niw3ICsxOTYsNyBAQA0KIA0KIA0KIEVOVFJZKHJldF9mcm9t X2ZvcmspDQotI2lmIENPTkZJR19TTVANCisjaWYgQ09ORklHX1NNUCB8fCBD T05GSUdfUFJFRU1QVA0KIAlwdXNobCAlZWJ4DQogCWNhbGwgU1lNQk9MX05B TUUoc2NoZWR1bGVfdGFpbCkNCiAJYWRkbCAkNCwgJWVzcA0KQEAgLTI0OSwx MiArMjY5LDMwIEBADQogCUFMSUdODQogRU5UUlkocmV0X2Zyb21faW50cikN CiAJR0VUX0NVUlJFTlQoJWVieCkNCisjaWZkZWYgQ09ORklHX1BSRUVNUFQN CisJY2xpDQorCWRlY2wgcHJlZW1wdF9jb3VudCglZWJ4KQ0KKyNlbmRpZg0K IHJldF9mcm9tX2V4Y2VwdGlvbjoNCiAJbW92bCBFRkxBR1MoJWVzcCksJWVh eAkJIyBtaXggRUZMQUdTIGFuZCBDUw0KIAltb3ZiIENTKCVlc3ApLCVhbA0K IAl0ZXN0bCAkKFZNX01BU0sgfCAzKSwlZWF4CSMgcmV0dXJuIHRvIFZNODYg bW9kZSBvciBub24tc3VwZXJ2aXNvcj8NCiAJam5lIHJldF9mcm9tX3N5c19j YWxsDQorI2lmZGVmIENPTkZJR19QUkVFTVBUDQorCWNtcGwgJDAscHJlZW1w dF9jb3VudCglZWJ4KQ0KKwlqbnogcmVzdG9yZV9hbGwNCisJY21wbCAkMCxu ZWVkX3Jlc2NoZWQoJWVieCkNCisJanogcmVzdG9yZV9hbGwNCisJbW92bCBT WU1CT0xfTkFNRShpcnFfc3RhdCkraXJxX3N0YXRfbG9jYWxfYmhfY291bnQg Q1BVX0lORFgsJWVjeA0KKwlhZGRsIFNZTUJPTF9OQU1FKGlycV9zdGF0KStp cnFfc3RhdF9sb2NhbF9pcnFfY291bnQgQ1BVX0lORFgsJWVjeA0KKwlqbnog cmVzdG9yZV9hbGwNCisJaW5jbCBwcmVlbXB0X2NvdW50KCVlYngpDQorCXN0 aQ0KKwljYWxsIFNZTUJPTF9OQU1FKHByZWVtcHRfc2NoZWR1bGUpDQorCWpt cCByZXRfZnJvbV9pbnRyDQorI2Vsc2UNCiAJam1wIHJlc3RvcmVfYWxsDQor I2VuZGlmDQogDQogCUFMSUdODQogcmVzY2hlZHVsZToNCkBAIC0yOTEsNiAr MzI5LDkgQEANCiAJR0VUX0NVUlJFTlQoJWVieCkNCiAJY2FsbCAqJWVkaQ0K IAlhZGRsICQ4LCVlc3ANCisjaWZkZWYgQ09ORklHX1BSRUVNUFQNCisJY2xp DQorI2VuZGlmDQogCWptcCByZXRfZnJvbV9leGNlcHRpb24NCiANCiBFTlRS WShjb3Byb2Nlc3Nvcl9lcnJvcikNCkBAIC0zMTAsMTIgKzM1MSwxOCBAQA0K IAltb3ZsICVjcjAsJWVheA0KIAl0ZXN0bCAkMHg0LCVlYXgJCQkjIEVNICht YXRoIGVtdWxhdGlvbiBiaXQpDQogCWpuZSBkZXZpY2Vfbm90X2F2YWlsYWJs ZV9lbXVsYXRlDQorI2lmZGVmIENPTkZJR19QUkVFTVBUDQorCWNsaQ0KKyNl bmRpZg0KIAljYWxsIFNZTUJPTF9OQU1FKG1hdGhfc3RhdGVfcmVzdG9yZSkN CiAJam1wIHJldF9mcm9tX2V4Y2VwdGlvbg0KIGRldmljZV9ub3RfYXZhaWxh YmxlX2VtdWxhdGU6DQogCXB1c2hsICQwCQkjIHRlbXBvcmFyeSBzdG9yYWdl IGZvciBPUklHX0VJUA0KIAljYWxsICBTWU1CT0xfTkFNRShtYXRoX2VtdWxh dGUpDQogCWFkZGwgJDQsJWVzcA0KKyNpZmRlZiBDT05GSUdfUFJFRU1QVA0K KwljbGkNCisjZW5kaWYNCiAJam1wIHJldF9mcm9tX2V4Y2VwdGlvbg0KIA0K IEVOVFJZKGRlYnVnKQ0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Iv c3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2FyY2gvaTM4Ni9r ZXJuZWwvaTM4Ny5jIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvYXJjaC9pMzg2 L2tlcm5lbC9pMzg3LmMNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMvYXJj aC9pMzg2L2tlcm5lbC9pMzg3LmMJRnJpIEZlYiAyMyAxMzowOTowOCAyMDAx DQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNoL2kzODYva2VybmVs L2kzODcuYwlUdWUgTWF5IDE0IDE1OjA5OjE3IDIwMDINCkBAIC0xMCw2ICsx MCw3IEBADQogDQogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KICNpbmNs dWRlIDxsaW51eC9zY2hlZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9j ay5oPg0KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+DQogI2luY2x1ZGUg PGFzbS9pMzg3Lmg+DQogI2luY2x1ZGUgPGFzbS9tYXRoX2VtdS5oPg0KQEAg LTY1LDYgKzY2LDggQEANCiB7DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNr ID0gY3VycmVudDsNCiANCisJcHJlZW1wdF9kaXNhYmxlKCk7DQorCQ0KIAlp ZiAodHNrLT5mbGFncyAmIFBGX1VTRURGUFUpIHsNCiAJCV9fc2F2ZV9pbml0 X2ZwdSh0c2spOw0KIAkJcmV0dXJuOw0KZGlmZiAtdSAtciAtLW5ldy1maWxl IC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2Fy Y2gvaTM4Ni9rZXJuZWwvdHJhcHMuYyBsaW51eC0yLjQuMTktcHJlOC1hYzNw L2FyY2gvaTM4Ni9rZXJuZWwvdHJhcHMuYw0KLS0tIGxpbnV4LTIuNC4xOS1w cmU4LWFjMy9hcmNoL2kzODYva2VybmVsL3RyYXBzLmMJVHVlIE1heSAxNCAx NDo1OToxOCAyMDAyDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNo L2kzODYva2VybmVsL3RyYXBzLmMJVHVlIE1heSAxNCAxNTowOToxNyAyMDAy DQpAQCAtNzU2LDYgKzc1Niw4IEBADQogICoNCiAgKiBDYXJlZnVsLi4gVGhl cmUgYXJlIHByb2JsZW1zIHdpdGggSUJNLWRlc2lnbmVkIElSUTEzIGJlaGF2 aW91ci4NCiAgKiBEb24ndCB0b3VjaCB1bmxlc3MgeW91ICpyZWFsbHkqIGtu b3cgaG93IGl0IHdvcmtzLg0KKyAqDQorICogTXVzdCBiZSBjYWxsZWQgd2l0 aCBrZXJuZWwgcHJlZW1wdGlvbiBkaXNhYmxlZC4NCiAgKi8NCiBhc21saW5r YWdlIHZvaWQgbWF0aF9zdGF0ZV9yZXN0b3JlKHN0cnVjdCBwdF9yZWdzIHJl Z3MpDQogew0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4 Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2FyY2gvaTM4Ni9saWIvZGVj X2FuZF9sb2NrLmMgbGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNoL2kzODYv bGliL2RlY19hbmRfbG9jay5jDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMz L2FyY2gvaTM4Ni9saWIvZGVjX2FuZF9sb2NrLmMJRnJpIEp1bCAgNyAyMToy MDoxNiAyMDAwDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNoL2kz ODYvbGliL2RlY19hbmRfbG9jay5jCVR1ZSBNYXkgMTQgMTU6MDk6MTcgMjAw Mg0KQEAgLTgsNiArOCw3IEBADQogICovDQogDQogI2luY2x1ZGUgPGxpbnV4 L3NwaW5sb2NrLmg+DQorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+DQogI2lu Y2x1ZGUgPGFzbS9hdG9taWMuaD4NCiANCiBpbnQgYXRvbWljX2RlY19hbmRf bG9jayhhdG9taWNfdCAqYXRvbWljLCBzcGlubG9ja190ICpsb2NrKQ0KZGlm ZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgt Mi40LjE5LXByZTgtYWMzL2FyY2gvc2gvY29uZmlnLmluIGxpbnV4LTIuNC4x OS1wcmU4LWFjM3AvYXJjaC9zaC9jb25maWcuaW4NCi0tLSBsaW51eC0yLjQu MTktcHJlOC1hYzMvYXJjaC9zaC9jb25maWcuaW4JVHVlIE1heSAxNCAxNDo1 OToxOCAyMDAyDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9hcmNoL3No L2NvbmZpZy5pbglUdWUgTWF5IDE0IDE1OjA5OjE3IDIwMDINCkBAIC0xMjQs NiArMTI0LDcgQEANCiAgICBoZXggJ1BoeXNpY2FsIG1lbW9yeSBzdGFydCBh ZGRyZXNzJyBDT05GSUdfTUVNT1JZX1NUQVJUIDA4MDAwMDAwDQogICAgaGV4 ICdQaHlzaWNhbCBtZW1vcnkgc2l6ZScgQ09ORklHX01FTU9SWV9TSVpFIDAw NDAwMDAwDQogZmkNCitib29sICdQcmVlbXB0aWJsZSBLZXJuZWwnIENPTkZJ R19QUkVFTVBUDQogZW5kbWVudQ0KIA0KIGlmIFsgIiRDT05GSUdfU0hfSFA2 OTAiID0gInkiIF07IHRoZW4NCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAv dXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9hcmNoL3No L2tlcm5lbC9lbnRyeS5TIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvYXJjaC9z aC9rZXJuZWwvZW50cnkuUw0KLS0tIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9h cmNoL3NoL2tlcm5lbC9lbnRyeS5TCVR1ZSBNYXkgMTQgMTQ6NTU6NDIgMjAw Mg0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvYXJjaC9zaC9rZXJuZWwv ZW50cnkuUwlUdWUgTWF5IDE0IDE1OjA5OjE3IDIwMDINCkBAIC02MCwxMCAr NjAsMTggQEANCiAvKg0KICAqIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gdGhl IHRhc2stc3RydWN0Lg0KICAqLw0KLWZsYWdzCQk9ICA0DQorcHJlZW1wdF9j b3VudAk9ICA0DQogc2lncGVuZGluZwk9ICA4DQogbmVlZF9yZXNjaGVkCT0g MjANCiB0c2tfcHRyYWNlCT0gMjQNCitmbGFncwkJPSA4NA0KKw0KKy8qDQor ICogVGhlc2Ugb2Zmc2V0cyBhcmUgaW50byBpcnFfc3RhdC4NCisgKiAoRmlu ZCBpcnFfY3B1c3RhdF90IGluIGFzbS1zaC9oYXJkaXJxLmgpDQorICovDQor bG9jYWxfaXJxX2NvdW50ID0gIDgNCitsb2NhbF9iaF9jb3VudCAgPSAxMg0K IA0KIFBUX1RSQUNFU1lTICA9IDB4MDAwMDAwMDINCiBQRl9VU0VERlBVICAg PSAweDAwMTAwMDAwDQpAQCAtMTQzLDcgKzE1MSw3IEBADQogCW1vdi5sCV9f SU5WX0lNQVNLLCByMTE7CVwNCiAJc3RjCXNyLCByMTA7CQlcDQogCWFuZAly MTEsIHIxMDsJCVwNCi0Jc3RjCWtfZ19pbWFzaywgcjExOwlcDQorCXN0Ywlr X2dfaW1hc2ssIHIxMTsJCVwNCiAJb3IJcjExLCByMTA7CQlcDQogCWxkYwly MTAsIHNyDQogDQpAQCAtMzA0LDggKzMxMiw4IEBADQogCW1vdi5sCUAodHNr X3B0cmFjZSxyMCksIHIwCSEgSXMgY3VycmVudCBQVFJBQ0VfU1lTQ0FMTCdk Pw0KIAltb3YJI1BUX1RSQUNFU1lTLCByMQ0KIAl0c3QJcjEsIHIwDQotCWJ0 CXJldF9mcm9tX3N5c2NhbGwNCi0JYnJhCXN5c2NhbGxfcmV0X3RyYWNlDQor CWJmCXN5c2NhbGxfcmV0X3RyYWNlDQorCWJyYQlyZXRfZnJvbV9zeXNjYWxs DQogCSBub3AJIA0KIA0KIAkuYWxpZ24JMg0KQEAgLTUwNSw4ICs1MTMsNiBA QA0KIAkubG9uZwlzeXNjYWxsX3JldF90cmFjZQ0KIF9fc3lzY2FsbF9yZXQ6 DQogCS5sb25nCXN5c2NhbGxfcmV0DQotX19JTlZfSU1BU0s6DQotCS5sb25n CTB4ZmZmZmZmMGYJISB+KElNQVNLKQ0KIA0KIA0KIAkuYWxpZ24JMg0KQEAg LTUxOCw3ICs1MjQsODQgQEANCiAJLmFsaWduCTINCiAxOgkubG9uZwlTWU1C T0xfTkFNRShzY2hlZHVsZSkNCiANCisjaWZkZWYgQ09ORklHX1BSRUVNUFQJ DQorCSENCisJISBSZXR1cm5pbmcgZnJvbSBpbnRlcnJ1cHQgZHVyaW5nIGtl cm5lbCBtb2RlOiBjaGVjayBpZg0KKwkhIHByZWVtcHRfc2NoZWR1bGUgc2hv dWxkIGJlIGNhbGxlZC4gSWYgbmVlZF9yZXNjaGVkIGZsYWcNCisJISBpcyBz ZXQsIHByZWVtcHRfY291bnQgaXMgemVybywgYW5kIHdlJ3JlIG5vdCBjdXJy ZW50bHkNCisJISBpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlciAobG9jYWwgaXJx IG9yIGJvdHRvbSBoYWxmKSB0aGVuDQorCSEgY2FsbCBwcmVlbXB0X3NjaGVk dWxlLiANCisJIQ0KKwkhIEluY3JlbWVudCBwcmVlbXB0X2NvdW50IHRvIHBy ZXZlbnQgYSBuZXN0ZWQgaW50ZXJydXB0DQorCSEgZnJvbSByZWVudGVyaW5n IHByZWVtcHRfc2NoZWR1bGUsIHRoZW4gZGVjcmVtZW50IGFmdGVyDQorCSEg YW5kIGRyb3AgdGhyb3VnaCB0byByZWd1bGFyIGludGVycnVwdCByZXR1cm4g d2hpY2ggd2lsbA0KKwkhIGp1bXAgYmFjayBhbmQgY2hlY2sgYWdhaW4gaW4g Y2FzZSBzdWNoIGFuIGludGVycnVwdCBkaWQNCisJISBjb21lIGluIChhbmQg ZGlkbid0IHByZWVtcHQgZHVlIHRvIHByZWVtcHRfY291bnQpLg0KKwkhDQor CSEgTk9URToJYmVjYXVzZSB3ZSBqdXN0IGNoZWNrZWQgdGhhdCBwcmVlbXB0 X2NvdW50IHdhcw0KKwkhIHplcm8gYmVmb3JlIGdldHRpbmcgdG8gdGhlIGNh bGwsIGNhbid0IHdlIHVzZSBpbW1lZGlhdGUNCisJISB2YWx1ZXMgKDEgYW5k IDApIHJhdGhlciB0aGFuIGluYy9kZWM/IEFsc28sIHJhdGhlciB0aGFuDQor CSEgZHJvcCB0aHJvdWdoIHRvIHJldF9mcm9tX2lycSwgd2UgYWxyZWFkeSBr bm93IHRoaXMgdGhyZWFkDQorCSEgaXMga2VybmVsIG1vZGUsIGNhbid0IHdl IGdvIGRpcmVjdCB0byByZXRfZnJvbV9raXJxPyBJbg0KKwkhIGZhY3QsIHdp dGggcHJvcGVyIGludGVycnVwdCBuZXN0aW5nIGFuZCBzbyBmb3J0aCBjb3Vs ZA0KKwkhIHRoZSBsb29wIHNpbXBseSBiZSBvbiB0aGUgbmVlZF9yZXNjaGVk IHcvbyBjaGVja2luZyB0aGUNCisJISBvdGhlciBzdHVmZiBhZ2Fpbj8gT3B0 aW1pemUgbGF0ZXIuLi4NCisJIQ0KKwkuYWxpZ24JMg0KK3JldF9mcm9tX2tp cnE6DQorCSEgTm9uemVybyBwcmVlbXB0X2NvdW50IHByZXZlbnRzIHNjaGVk dWxpbmcNCisJc3RjCWtfY3VycmVudCwgcjENCisJbW92LmwJQChwcmVlbXB0 X2NvdW50LHIxKSwgcjANCisJY21wL2VxCSMwLCByMA0KKwliZglyZXN0b3Jl X2FsbA0KKwkhIFplcm8gbmVlZF9yZXNjaGVkIHByZXZlbnRzIHNjaGVkdWxp bmcNCisJbW92LmwJQChuZWVkX3Jlc2NoZWQscjEpLCByMA0KKwljbXAvZXEJ IzAsIHIwDQorCWJ0CXJlc3RvcmVfYWxsDQorCSEgSWYgaW5faW50ZXJydXB0 KCksIGRvbid0IHNjaGVkdWxlDQorCW1vdi5sCV9faXJxX3N0YXQsIHIxDQor CW1vdi5sCUAobG9jYWxfaXJxX2NvdW50LHIxKSwgcjANCisJbW92LmwJQChs b2NhbF9iaF9jb3VudCxyMSksIHIxDQorCW9yCXIxLCByMA0KKwljbXAvZXEJ IzAsIHIwDQorCWJmCXJlc3RvcmVfYWxsDQorCSEgQWxsb3cgc2NoZWR1bGlu ZyB1c2luZyBwcmVlbXB0X3NjaGVkdWxlDQorCSEgQWRqdXN0IHByZWVtcHRf Y291bnQgYW5kIFNSIGFzIG5lZWRlZC4NCisJc3RjCWtfY3VycmVudCwgcjEN CisJbW92LmwJQChwcmVlbXB0X2NvdW50LHIxKSwgcjAJISBDb3VsZCByZXBs YWNlIHRoaXMgLi4uDQorCWFkZAkjMSwgcjAJCQkhIC4uLiBhbmQgdGhpcyB3 L21vdiAjMT8NCisJbW92LmwJcjAsIEAocHJlZW1wdF9jb3VudCxyMSkNCisJ U1RJKCkNCisJbW92LmwJX19wcmVlbXB0X3NjaGVkdWxlLCByMA0KKwlqc3IJ QHIwDQorCSBub3AJDQorCS8qIENMSSAqLw0KKwlzdGMJc3IsIHIwDQorCW9y CSMweGYwLCByMA0KKwlsZGMJcjAsIHNyDQorCSENCisJc3RjCWtfY3VycmVu dCwgcjENCisJbW92LmwJQChwcmVlbXB0X2NvdW50LHIxKSwgcjAJISBDb3Vs ZCByZXBsYWNlIHRoaXMgLi4uDQorCWFkZAkjLTEsIHIwCQkJISAuLi4gYW5k IHRoaXMgdy9tb3YgIzA/DQorCW1vdi5sCXIwLCBAKHByZWVtcHRfY291bnQs cjEpDQorCSEgTWF5YmUgc2hvdWxkIGJyYSByZXRfZnJvbV9raXJxLCBvciBs b29wIG92ZXIgbmVlZF9yZXNjaGVkPw0KKwkhIEZvciBub3csIGZhbGwgdGhy b3VnaCB0byByZXRfZnJvbV9pcnEgYWdhaW4uLi4NCisjZW5kaWYgLyogQ09O RklHX1BSRUVNUFQgKi8NCisJDQogcmV0X2Zyb21faXJxOg0KKwltb3YJI09G Rl9TUiwgcjANCisJbW92LmwJQChyMCxyMTUpLCByMAkhIGdldCBzdGF0dXMg cmVnaXN0ZXINCisJc2hsbAlyMA0KKwlzaGxsCXIwCQkhIGtlcm5lbCBzcGFj ZT8NCisjaWZuZGVmIENPTkZJR19QUkVFTVBUDQorCWJ0CXJlc3RvcmVfYWxs CSEgWWVzLCBpdCdzIGZyb20ga2VybmVsLCBnbyBiYWNrIHNvb24NCisjZWxz ZSAvKiBDT05GSUdfUFJFRU1QVCAqLw0KKwlidAlyZXRfZnJvbV9raXJxCSEg RnJvbSBrZXJuZWw6IG1heWJlIHByZWVtcHRfc2NoZWR1bGUNCisjZW5kaWYg LyogQ09ORklHX1BSRUVNUFQgKi8NCisJIQ0KKwlicmEJcmV0X2Zyb21fc3lz Y2FsbA0KKwkgbm9wDQorDQogcmV0X2Zyb21fZXhjZXB0aW9uOg0KIAltb3YJ I09GRl9TUiwgcjANCiAJbW92LmwJQChyMCxyMTUpLCByMAkhIGdldCBzdGF0 dXMgcmVnaXN0ZXINCkBAIC01NjQsNiArNjQ3LDEzIEBADQogCS5sb25nCVNZ TUJPTF9OQU1FKGRvX3NpZ25hbCkNCiBfX2lycV9zdGF0Og0KIAkubG9uZwlT WU1CT0xfTkFNRShpcnFfc3RhdCkNCisjaWZkZWYgQ09ORklHX1BSRUVNUFQN CitfX3ByZWVtcHRfc2NoZWR1bGU6DQorCS5sb25nCVNZTUJPTF9OQU1FKHBy ZWVtcHRfc2NoZWR1bGUpDQorI2VuZGlmIC8qIENPTkZJR19QUkVFTVBUICov CQ0KK19fSU5WX0lNQVNLOg0KKwkubG9uZwkweGZmZmZmZjBmCSEgfihJTUFT SykNCisNCiANCiAJLmFsaWduIDINCiByZXN0b3JlX2FsbDoNCkBAIC02Nzks NyArNzY5LDcgQEANCiBfX2ZwdV9wcmVwYXJlX2ZkOg0KIAkubG9uZwlTWU1C T0xfTkFNRShmcHVfcHJlcGFyZV9mZCkNCiBfX2luaXRfdGFza19mbGFnczoN Ci0JLmxvbmcJU1lNQk9MX05BTUUoaW5pdF90YXNrX3VuaW9uKSs0DQorCS5s b25nCVNZTUJPTF9OQU1FKGluaXRfdGFza191bmlvbikrZmxhZ3MNCiBfX1BG X1VTRURGUFU6DQogCS5sb25nCVBGX1VTRURGUFUNCiAjZW5kaWYNCmRpZmYg LXUgLXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIu NC4xOS1wcmU4LWFjMy9hcmNoL3NoL2tlcm5lbC9pcnEuYyBsaW51eC0yLjQu MTktcHJlOC1hYzNwL2FyY2gvc2gva2VybmVsL2lycS5jDQotLS0gbGludXgt Mi40LjE5LXByZTgtYWMzL2FyY2gvc2gva2VybmVsL2lycS5jCVNhdCBTZXAg IDggMTU6Mjk6MDkgMjAwMQ0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3Av YXJjaC9zaC9rZXJuZWwvaXJxLmMJVHVlIE1heSAxNCAxNTowOToxNyAyMDAy DQpAQCAtMjI5LDYgKzIyOSwxNCBAQA0KIAlzdHJ1Y3QgaXJxYWN0aW9uICog YWN0aW9uOw0KIAl1bnNpZ25lZCBpbnQgc3RhdHVzOw0KIA0KKwkvKg0KKwkg KiBBdCB0aGlzIHBvaW50IHdlJ3JlIG5vdyBhYm91dCB0byBhY3R1YWxseSBj YWxsIGhhbmRsZXJzLA0KKwkgKiBhbmQgaW50ZXJydXB0cyBtaWdodCBnZXQg cmVlbmFibGVkIGR1cmluZyB0aGVtLi4uIGJ1bXANCisJICogcHJlZW1wdF9j b3VudCB0byBwcmV2ZW50IGFueSBwcmVlbXB0aW9uIHdoaWxlIHRoZSBoYW5k bGVyDQorIAkgKiBjYWxsZWQgaGVyZSBpcyBwZW5kaW5nLi4uDQorIAkgKi8N CisgCXByZWVtcHRfZGlzYWJsZSgpOw0KKw0KIAkvKiBHZXQgSVJRIG51bWJl ciAqLw0KIAlhc20gdm9sYXRpbGUoInN0YwlyMl9iYW5rLCAlMFxuXHQiDQog CQkgICAgICJzaGxyMgklMFxuXHQiDQpAQCAtMjk4LDggKzMwNiwxNyBAQA0K IAlkZXNjLT5oYW5kbGVyLT5lbmQoaXJxKTsNCiAJc3Bpbl91bmxvY2soJmRl c2MtPmxvY2spOw0KIA0KKw0KIAlpZiAoc29mdGlycV9wZW5kaW5nKGNwdSkp DQogCQlkb19zb2Z0aXJxKCk7DQorDQorCS8qDQorCSAqIFdlJ3JlIGRvbmUg d2l0aCB0aGUgaGFuZGxlcnMsIGludGVycnVwdHMgc2hvdWxkIGJlDQorCSAq IGN1cnJlbnRseSBkaXNhYmxlZDsgZGVjcmVtZW50IHByZWVtcHRfY291bnQg bm93IHNvDQorCSAqIGFzIHdlIHJldHVybiBwcmVlbXB0aW9uIG1heSBiZSBh bGxvd2VkLi4uDQorCSAqLw0KKwlwcmVlbXB0X2VuYWJsZV9ub19yZXNjaGVk KCk7DQorDQogCXJldHVybiAxOw0KIH0NCiANCmRpZmYgLXUgLXIgLS1uZXct ZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFj My9kcml2ZXJzL2llZWUxMzk0L2Nzci5jIGxpbnV4LTIuNC4xOS1wcmU4LWFj M3AvZHJpdmVycy9pZWVlMTM5NC9jc3IuYw0KLS0tIGxpbnV4LTIuNC4xOS1w cmU4LWFjMy9kcml2ZXJzL2llZWUxMzk0L2Nzci5jCVR1ZSBNYXkgMTQgMTQ6 NTU6NDIgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvZHJpdmVy cy9pZWVlMTM5NC9jc3IuYwlUdWUgTWF5IDE0IDE1OjA5OjE3IDIwMDINCkBA IC0xMCw2ICsxMCw3IEBADQogICovDQogDQogI2luY2x1ZGUgPGxpbnV4L3N0 cmluZy5oPg0KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KIA0KICNpbmNs dWRlICJpZWVlMTM5NF90eXBlcy5oIg0KICNpbmNsdWRlICJob3N0cy5oIg0K ZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGlu dXgtMi40LjE5LXByZTgtYWMzL2RyaXZlcnMvc291bmQvc291bmRfY29yZS5j IGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvZHJpdmVycy9zb3VuZC9zb3VuZF9j b3JlLmMNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMvZHJpdmVycy9zb3Vu ZC9zb3VuZF9jb3JlLmMJU3VuIFNlcCAzMCAxNToyNjowOCAyMDAxDQorKysg bGludXgtMi40LjE5LXByZTgtYWMzcC9kcml2ZXJzL3NvdW5kL3NvdW5kX2Nv cmUuYwlUdWUgTWF5IDE0IDE1OjA5OjE3IDIwMDINCkBAIC0zNyw2ICszNyw3 IEBADQogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KICNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KKyNp bmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KICNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQogI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPg0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Iv c3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2ZzL2FkZnMvbWFw LmMgbGludXgtMi40LjE5LXByZTgtYWMzcC9mcy9hZGZzL21hcC5jDQotLS0g bGludXgtMi40LjE5LXByZTgtYWMzL2ZzL2FkZnMvbWFwLmMJVGh1IE9jdCAy NSAxNjo1Mzo1MyAyMDAxDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9m cy9hZGZzL21hcC5jCVR1ZSBNYXkgMTQgMTU6MDk6MTcgMjAwMg0KQEAgLTEy LDYgKzEyLDcgQEANCiAjaW5jbHVkZSA8bGludXgvZnMuaD4NCiAjaW5jbHVk ZSA8bGludXgvYWRmc19mcy5oPg0KICNpbmNsdWRlIDxsaW51eC9zcGlubG9j ay5oPg0KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KIA0KICNpbmNsdWRl ICJhZGZzLmgiDQogDQpkaWZmIC11IC1yIC0tbmV3LWZpbGUgLVggL3Vzci9z cmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvZnMvYnVmZmVyLmMg bGludXgtMi40LjE5LXByZTgtYWMzcC9mcy9idWZmZXIuYw0KLS0tIGxpbnV4 LTIuNC4xOS1wcmU4LWFjMy9mcy9idWZmZXIuYwlUdWUgTWF5IDE0IDE0OjU5 OjE5IDIwMDINCisrKyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2ZzL2J1ZmZl ci5jCVR1ZSBNYXkgMTQgMTY6NDM6MDQgMjAwMg0KQEAgLTE1NCwxMSArMTU0 LDEzIEBADQogCWdldF9iaChiaCk7DQogCWFkZF93YWl0X3F1ZXVlKCZiaC0+ Yl93YWl0LCAmd2FpdCk7DQogCWRvIHsNCisJCWF0b21pY19pbmMoJm5yX2lv d2FpdF90YXNrcyk7DQogCQlydW5fdGFza19xdWV1ZSgmdHFfZGlzayk7DQog CQlzZXRfdGFza19zdGF0ZSh0c2ssIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTsN CiAJCWlmICghYnVmZmVyX2xvY2tlZChiaCkpDQogCQkJYnJlYWs7DQogCQlz Y2hlZHVsZSgpOw0KKwkJYXRvbWljX2RlYygmbnJfaW93YWl0X3Rhc2tzKTsN CiAJfSB3aGlsZSAoYnVmZmVyX2xvY2tlZChiaCkpOw0KIAl0c2stPnN0YXRl ID0gVEFTS19SVU5OSU5HOw0KIAlyZW1vdmVfd2FpdF9xdWV1ZSgmYmgtPmJf d2FpdCwgJndhaXQpOw0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Iv c3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2ZzL2V4ZWMuYyBs aW51eC0yLjQuMTktcHJlOC1hYzNwL2ZzL2V4ZWMuYw0KLS0tIGxpbnV4LTIu NC4xOS1wcmU4LWFjMy9mcy9leGVjLmMJVHVlIE1heSAxNCAxNDo1OToxOSAy MDAyDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9mcy9leGVjLmMJVHVl IE1heSAxNCAxNTowOToxNyAyMDAyDQpAQCAtNDI3LDggKzQyNyw4IEBADQog CQlhY3RpdmVfbW0gPSBjdXJyZW50LT5hY3RpdmVfbW07DQogCQljdXJyZW50 LT5tbSA9IG1tOw0KIAkJY3VycmVudC0+YWN0aXZlX21tID0gbW07DQotCQl0 YXNrX3VubG9jayhjdXJyZW50KTsNCiAJCWFjdGl2YXRlX21tKGFjdGl2ZV9t bSwgbW0pOw0KKwkJdGFza191bmxvY2soY3VycmVudCk7DQogCQltbV9yZWxl YXNlKCk7DQogCQlpZiAob2xkX21tKSB7DQogCQkJaWYgKGFjdGl2ZV9tbSAh PSBvbGRfbW0pIEJVRygpOw0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91 c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2ZzL2ZhdC9j YWNoZS5jIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvZnMvZmF0L2NhY2hlLmMN Ci0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMvZnMvZmF0L2NhY2hlLmMJRnJp IE9jdCAxMiAxNjo0ODo0MiAyMDAxDQorKysgbGludXgtMi40LjE5LXByZTgt YWMzcC9mcy9mYXQvY2FjaGUuYwlUdWUgTWF5IDE0IDE1OjA5OjE3IDIwMDIN CkBAIC0xNCw2ICsxNCw3IEBADQogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5o Pg0KICNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+DQogI2luY2x1ZGUgPGxpbnV4 L2ZhdF9jdmYuaD4NCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4NCiANCiAj aWYgMA0KICMgIGRlZmluZSBQUklOVEsoeCkgcHJpbnRrIHgNCmRpZmYgLXUg LXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4x OS1wcmU4LWFjMy9mcy9ubHMvbmxzX2Jhc2UuYyBsaW51eC0yLjQuMTktcHJl OC1hYzNwL2ZzL25scy9ubHNfYmFzZS5jDQotLS0gbGludXgtMi40LjE5LXBy ZTgtYWMzL2ZzL25scy9ubHNfYmFzZS5jCVR1ZSBNYXkgMTQgMTQ6NTU6NTQg MjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvZnMvbmxzL25sc19i YXNlLmMJVHVlIE1heSAxNCAxNTowOToxOCAyMDAyDQpAQCAtMTgsNiArMTgs NyBAQA0KICNpZmRlZiBDT05GSUdfS01PRA0KICNpbmNsdWRlIDxsaW51eC9r bW9kLmg+DQogI2VuZGlmDQorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+DQog I2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+DQogDQogc3RhdGljIHN0cnVj dCBubHNfdGFibGUgKnRhYmxlczsNCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAt WCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9mcy9w cm9jL3Byb2NfbWlzYy5jIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvZnMvcHJv Yy9wcm9jX21pc2MuYw0KLS0tIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9mcy9w cm9jL3Byb2NfbWlzYy5jCVR1ZSBNYXkgMTQgMTQ6NTk6MjAgMjAwMg0KKysr IGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvZnMvcHJvYy9wcm9jX21pc2MuYwlU dWUgTWF5IDE0IDE2OjQ4OjAwIDIwMDINCkBAIC0yNzMsNyArMjczLDcgQEAN CiAJaW50IGksIGxlbjsNCiAJZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdG90YWxf Zm9ya3M7DQogCXVuc2lnbmVkIGxvbmcgamlmID0gamlmZmllczsNCi0JdW5z aWduZWQgaW50IHN1bSA9IDAsIHVzZXIgPSAwLCBuaWNlID0gMCwgc3lzdGVt ID0gMDsNCisJdW5zaWduZWQgaW50IHN1bSA9IDAsIHVzZXIgPSAwLCBuaWNl ID0gMCwgc3lzdGVtID0gMCwgaW93YWl0ID0gMDsNCiAJaW50IG1ham9yLCBk aXNrOw0KIA0KIAlmb3IgKGkgPSAwIDsgaSA8IHNtcF9udW1fY3B1czsgaSsr KSB7DQpAQCAtMjgyLDIzICsyODIsMjYgQEANCiAJCXVzZXIgKz0ga3N0YXQu cGVyX2NwdV91c2VyW2NwdV07DQogCQluaWNlICs9IGtzdGF0LnBlcl9jcHVf bmljZVtjcHVdOw0KIAkJc3lzdGVtICs9IGtzdGF0LnBlcl9jcHVfc3lzdGVt W2NwdV07DQorCQlpb3dhaXQgKz0ga3N0YXQucGVyX2NwdV9pb3dhaXRbY3B1 XTsNCiAjaWYgIWRlZmluZWQoQ09ORklHX0FSQ0hfUzM5MCkNCiAJCWZvciAo aiA9IDAgOyBqIDwgTlJfSVJRUyA7IGorKykNCiAJCQlzdW0gKz0ga3N0YXQu aXJxc1tjcHVdW2pdOw0KICNlbmRpZg0KIAl9DQogDQotCWxlbiA9IHNwcmlu dGYocGFnZSwgImNwdSAgJXUgJXUgJXUgJWx1XG4iLCB1c2VyLCBuaWNlLCBz eXN0ZW0sDQotCQkgICAgICBqaWYgKiBzbXBfbnVtX2NwdXMgLSAodXNlciAr IG5pY2UgKyBzeXN0ZW0pKTsNCisJbGVuID0gc3ByaW50ZihwYWdlLCAiY3B1 ICAldSAldSAldSAlbHUgJXVcbiIsIHVzZXIsIG5pY2UsIHN5c3RlbSwNCisJ CSAgICAgIGppZiAqIHNtcF9udW1fY3B1cyAtICh1c2VyICsgbmljZSArIHN5 c3RlbSksDQorCQkgICAgICBpb3dhaXQpOw0KIAlmb3IgKGkgPSAwIDsgaSA8 IHNtcF9udW1fY3B1czsgaSsrKQ0KLQkJbGVuICs9IHNwcmludGYocGFnZSAr IGxlbiwgImNwdSVkICV1ICV1ICV1ICVsdVxuIiwNCisJCWxlbiArPSBzcHJp bnRmKHBhZ2UgKyBsZW4sICJjcHUlZCAldSAldSAldSAlbHUgJXVcbiIsDQog CQkJaSwNCiAJCQlrc3RhdC5wZXJfY3B1X3VzZXJbY3B1X2xvZ2ljYWxfbWFw KGkpXSwNCiAJCQlrc3RhdC5wZXJfY3B1X25pY2VbY3B1X2xvZ2ljYWxfbWFw KGkpXSwNCiAJCQlrc3RhdC5wZXJfY3B1X3N5c3RlbVtjcHVfbG9naWNhbF9t YXAoaSldLA0KIAkJCWppZiAtICggIGtzdGF0LnBlcl9jcHVfdXNlcltjcHVf bG9naWNhbF9tYXAoaSldIFwNCiAJCQkJICAgKyBrc3RhdC5wZXJfY3B1X25p Y2VbY3B1X2xvZ2ljYWxfbWFwKGkpXSBcDQotCQkJCSAgICsga3N0YXQucGVy X2NwdV9zeXN0ZW1bY3B1X2xvZ2ljYWxfbWFwKGkpXSkpOw0KKwkJCQkgICAr IGtzdGF0LnBlcl9jcHVfc3lzdGVtW2NwdV9sb2dpY2FsX21hcChpKV0pLA0K KwkJCWtzdGF0LnBlcl9jcHVfaW93YWl0W2NwdV9sb2dpY2FsX21hcChpKV0p Ow0KIAlsZW4gKz0gc3ByaW50ZihwYWdlICsgbGVuLA0KIAkJInBhZ2UgJXUg JXVcbiINCiAJCSJzd2FwICV1ICV1XG4iDQpkaWZmIC11IC1yIC0tbmV3LWZp bGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMv aW5jbHVkZS9hc20tYXJtL2RtYS5oIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3Av aW5jbHVkZS9hc20tYXJtL2RtYS5oDQotLS0gbGludXgtMi40LjE5LXByZTgt YWMzL2luY2x1ZGUvYXNtLWFybS9kbWEuaAlTdW4gQXVnIDEyIDE0OjE0OjAw IDIwMDENCisrKyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvYXNt LWFybS9kbWEuaAlUdWUgTWF5IDE0IDE1OjA5OjE4IDIwMDINCkBAIC01LDYg KzUsNyBAQA0KIA0KICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCiAjaW5j bHVkZSA8bGludXgvc3BpbmxvY2suaD4NCisjaW5jbHVkZSA8bGludXgvc2No ZWQuaD4NCiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPg0KICNpbmNsdWRlIDxh c20vbWVtb3J5Lmg+DQogI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPg0K ZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGlu dXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLWFybS9oYXJkaXJxLmgg bGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2FzbS1hcm0vaGFyZGly cS5oDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLWFy bS9oYXJkaXJxLmgJVGh1IE9jdCAxMSAxMjowNDo1NyAyMDAxDQorKysgbGlu dXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2FzbS1hcm0vaGFyZGlycS5o CVR1ZSBNYXkgMTQgMTU6MDk6MTggMjAwMg0KQEAgLTM0LDYgKzM0LDcgQEAN CiAjZGVmaW5lIGlycV9leGl0KGNwdSxpcnEpCShsb2NhbF9pcnFfY291bnQo Y3B1KS0tKQ0KIA0KICNkZWZpbmUgc3luY2hyb25pemVfaXJxKCkJZG8geyB9 IHdoaWxlICgwKQ0KKyNkZWZpbmUgcmVsZWFzZV9pcnFsb2NrKGNwdSkJZG8g eyB9IHdoaWxlICgwKQ0KIA0KICNlbHNlDQogI2Vycm9yIFNNUCBub3Qgc3Vw cG9ydGVkDQpkaWZmIC11IC1yIC0tbmV3LWZpbGUgLVggL3Vzci9zcmMvZXhj bHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9hc20tYXJtL3Bn YWxsb2MuaCBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvYXNtLWFy bS9wZ2FsbG9jLmgNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVk ZS9hc20tYXJtL3BnYWxsb2MuaAlTdW4gQXVnIDEyIDE0OjE0OjAwIDIwMDEN CisrKyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvYXNtLWFybS9w Z2FsbG9jLmgJVHVlIE1heSAxNCAxNTowOToxOCAyMDAyDQpAQCAtNTcsNDAg KzU3LDQ4IEBADQogew0KIAl1bnNpZ25lZCBsb25nICpyZXQ7DQogDQorCXBy ZWVtcHRfZGlzYWJsZSgpOw0KIAlpZiAoKHJldCA9IHBnZF9xdWlja2xpc3Qp ICE9IE5VTEwpIHsNCiAJCXBnZF9xdWlja2xpc3QgPSAodW5zaWduZWQgbG9u ZyAqKV9fcGdkX25leHQocmV0KTsNCiAJCXJldFsxXSA9IHJldFsyXTsNCiAJ CWNsZWFuX2RjYWNoZV9lbnRyeShyZXQgKyAxKTsNCiAJCXBndGFibGVfY2Fj aGVfc2l6ZS0tOw0KIAl9DQorCXByZWVtcHRfZW5hYmxlKCk7DQogCXJldHVy biAocGdkX3QgKilyZXQ7DQogfQ0KIA0KIHN0YXRpYyBpbmxpbmUgdm9pZCBm cmVlX3BnZF9mYXN0KHBnZF90ICpwZ2QpDQogew0KKwlwcmVlbXB0X2Rpc2Fi bGUoKTsNCiAJX19wZ2RfbmV4dChwZ2QpID0gKHVuc2lnbmVkIGxvbmcpIHBn ZF9xdWlja2xpc3Q7DQogCXBnZF9xdWlja2xpc3QgPSAodW5zaWduZWQgbG9u ZyAqKSBwZ2Q7DQogCXBndGFibGVfY2FjaGVfc2l6ZSsrOw0KKwlwcmVlbXB0 X2VuYWJsZSgpOw0KIH0NCiANCiBzdGF0aWMgaW5saW5lIHB0ZV90ICpwdGVf YWxsb2Nfb25lX2Zhc3Qoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVk IGxvbmcgYWRkcmVzcykNCiB7DQogCXVuc2lnbmVkIGxvbmcgKnJldDsNCiAN CisJcHJlZW1wdF9kaXNhYmxlKCk7DQogCWlmKChyZXQgPSBwdGVfcXVpY2ts aXN0KSAhPSBOVUxMKSB7DQogCQlwdGVfcXVpY2tsaXN0ID0gKHVuc2lnbmVk IGxvbmcgKilfX3B0ZV9uZXh0KHJldCk7DQogCQlyZXRbMF0gPSAwOw0KIAkJ Y2xlYW5fZGNhY2hlX2VudHJ5KHJldCk7DQogCQlwZ3RhYmxlX2NhY2hlX3Np emUtLTsNCiAJfQ0KKwlwcmVlbXB0X2VuYWJsZSgpOw0KIAlyZXR1cm4gKHB0 ZV90ICopcmV0Ow0KIH0NCiANCiBzdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9w dGVfZmFzdChwdGVfdCAqcHRlKQ0KIHsNCisJcHJlZW1wdF9kaXNhYmxlKCk7 DQogCV9fcHRlX25leHQocHRlKSA9ICh1bnNpZ25lZCBsb25nKSBwdGVfcXVp Y2tsaXN0Ow0KIAlwdGVfcXVpY2tsaXN0ID0gKHVuc2lnbmVkIGxvbmcgKikg cHRlOw0KIAlwZ3RhYmxlX2NhY2hlX3NpemUrKzsNCisJcHJlZW1wdF9lbmFi bGUoKTsNCiB9DQogDQogI2Vsc2UJLyogQ09ORklHX05PX1BHVF9DQUNIRSAq Lw0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUg bGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLWFybS9zbXBsb2Nr LmggbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2FzbS1hcm0vc21w bG9jay5oDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNt LWFybS9zbXBsb2NrLmgJU3VuIEF1ZyAxMiAxNDoxNDowMCAyMDAxDQorKysg bGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2FzbS1hcm0vc21wbG9j ay5oCVR1ZSBNYXkgMTQgMTU6MDk6MTggMjAwMg0KQEAgLTMsMTIgKzMsMTcg QEANCiAgKg0KICAqIERlZmF1bHQgU01QIGxvY2sgaW1wbGVtZW50YXRpb24N CiAgKi8NCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+DQogI2luY2x1ZGUg PGxpbnV4L2ludGVycnVwdC5oPg0KICNpbmNsdWRlIDxsaW51eC9zcGlubG9j ay5oPg0KIA0KIGV4dGVybiBzcGlubG9ja190IGtlcm5lbF9mbGFnOw0KIA0K KyNpZmRlZiBDT05GSUdfUFJFRU1QVA0KKyNkZWZpbmUga2VybmVsX2xvY2tl ZCgpCQlwcmVlbXB0X2dldF9jb3VudCgpDQorI2Vsc2UNCiAjZGVmaW5lIGtl cm5lbF9sb2NrZWQoKQkJc3Bpbl9pc19sb2NrZWQoJmtlcm5lbF9mbGFnKQ0K KyNlbmRpZg0KIA0KIC8qDQogICogUmVsZWFzZSBnbG9iYWwga2VybmVsIGxv Y2sgYW5kIGdsb2JhbCBpbnRlcnJ1cHQgbG9jaw0KQEAgLTQwLDggKzQ1LDE0 IEBADQogICovDQogc3RhdGljIGlubGluZSB2b2lkIGxvY2tfa2VybmVsKHZv aWQpDQogew0KKyNpZmRlZiBDT05GSUdfUFJFRU1QVA0KKwlpZiAoY3VycmVu dC0+bG9ja19kZXB0aCA9PSAtMSkNCisJCXNwaW5fbG9jaygma2VybmVsX2Zs YWcpOw0KKwkrK2N1cnJlbnQtPmxvY2tfZGVwdGg7DQorI2Vsc2UNCiAJaWYg KCErK2N1cnJlbnQtPmxvY2tfZGVwdGgpDQogCQlzcGluX2xvY2soJmtlcm5l bF9mbGFnKTsNCisjZW5kaWYNCiB9DQogDQogc3RhdGljIGlubGluZSB2b2lk IHVubG9ja19rZXJuZWwodm9pZCkNCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAt WCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9pbmNs dWRlL2FzbS1hcm0vc29mdGlycS5oIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3Av aW5jbHVkZS9hc20tYXJtL3NvZnRpcnEuaA0KLS0tIGxpbnV4LTIuNC4xOS1w cmU4LWFjMy9pbmNsdWRlL2FzbS1hcm0vc29mdGlycS5oCVNhdCBTZXAgIDgg MTU6MDI6MzEgMjAwMQ0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvaW5j bHVkZS9hc20tYXJtL3NvZnRpcnEuaAlUdWUgTWF5IDE0IDE1OjA5OjE4IDIw MDINCkBAIC01LDIwICs1LDIyIEBADQogI2luY2x1ZGUgPGFzbS9oYXJkaXJx Lmg+DQogDQogI2RlZmluZSBfX2NwdV9iaF9lbmFibGUoY3B1KSBcDQotCQlk byB7IGJhcnJpZXIoKTsgbG9jYWxfYmhfY291bnQoY3B1KS0tOyB9IHdoaWxl ICgwKQ0KKwkJZG8geyBiYXJyaWVyKCk7IGxvY2FsX2JoX2NvdW50KGNwdSkt LTsgcHJlZW1wdF9lbmFibGUoKTsgfSB3aGlsZSAoMCkNCiAjZGVmaW5lIGNw dV9iaF9kaXNhYmxlKGNwdSkgXA0KLQkJZG8geyBsb2NhbF9iaF9jb3VudChj cHUpKys7IGJhcnJpZXIoKTsgfSB3aGlsZSAoMCkNCisJCWRvIHsgcHJlZW1w dF9kaXNhYmxlKCk7IGxvY2FsX2JoX2NvdW50KGNwdSkrKzsgYmFycmllcigp OyB9IHdoaWxlICgwKQ0KIA0KICNkZWZpbmUgbG9jYWxfYmhfZGlzYWJsZSgp CWNwdV9iaF9kaXNhYmxlKHNtcF9wcm9jZXNzb3JfaWQoKSkNCiAjZGVmaW5l IF9fbG9jYWxfYmhfZW5hYmxlKCkJX19jcHVfYmhfZW5hYmxlKHNtcF9wcm9j ZXNzb3JfaWQoKSkNCiANCiAjZGVmaW5lIGluX3NvZnRpcnEoKQkJKGxvY2Fs X2JoX2NvdW50KHNtcF9wcm9jZXNzb3JfaWQoKSkgIT0gMCkNCiANCi0jZGVm aW5lIGxvY2FsX2JoX2VuYWJsZSgpCQkJCQkJXA0KKyNkZWZpbmUgX2xvY2Fs X2JoX2VuYWJsZSgpCQkJCQkJXA0KIGRvIHsJCQkJCQkJCQlcDQogCXVuc2ln bmVkIGludCAqcHRyID0gJmxvY2FsX2JoX2NvdW50KHNtcF9wcm9jZXNzb3Jf aWQoKSk7CVwNCiAJaWYgKCEtLSpwdHIgJiYgcHRyWy0yXSkJCQkJCQlcDQog CQlfX2FzbV9fKCJibCU/IF9fZG9fc29mdGlycSI6IDogOiAibHIiKTsvKiBv dXQgb2YgbGluZSAqL1wNCiB9IHdoaWxlICgwKQ0KKw0KKyNkZWZpbmUgbG9j YWxfYmhfZW5hYmxlKCkgZG8geyBfbG9jYWxfYmhfZW5hYmxlKCk7IHByZWVt cHRfZW5hYmxlKCk7IH0gd2hpbGUgKDApDQogDQogI2VuZGlmCS8qIF9fQVNN X1NPRlRJUlFfSCAqLw0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Iv c3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNt LWkzODYvaGFyZGlycS5oIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvaW5jbHVk ZS9hc20taTM4Ni9oYXJkaXJxLmgNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1h YzMvaW5jbHVkZS9hc20taTM4Ni9oYXJkaXJxLmgJVGh1IE5vdiAyMiAxNDo0 NjoxOSAyMDAxDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRl L2FzbS1pMzg2L2hhcmRpcnEuaAlUdWUgTWF5IDE0IDE1OjIwOjI1IDIwMDIN CkBAIC0zNiw2ICszNiw4IEBADQogDQogI2RlZmluZSBzeW5jaHJvbml6ZV9p cnEoKQliYXJyaWVyKCkNCiANCisjZGVmaW5lIHJlbGVhc2VfaXJxbG9jayhj cHUpCWRvIHsgfSB3aGlsZSAoMCkNCisNCiAjZWxzZQ0KIA0KICNpbmNsdWRl IDxhc20vYXRvbWljLmg+DQpkaWZmIC11IC1yIC0tbmV3LWZpbGUgLVggL3Vz ci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9h c20taTM4Ni9oaWdobWVtLmggbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNs dWRlL2FzbS1pMzg2L2hpZ2htZW0uaA0KLS0tIGxpbnV4LTIuNC4xOS1wcmU4 LWFjMy9pbmNsdWRlL2FzbS1pMzg2L2hpZ2htZW0uaAlUdWUgTWF5IDE0IDE0 OjU1OjU1IDIwMDINCisrKyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1 ZGUvYXNtLWkzODYvaGlnaG1lbS5oCVR1ZSBNYXkgMTQgMTU6MjA6MjUgMjAw Mg0KQEAgLTg4LDYgKzg4LDcgQEANCiAJZW51bSBmaXhlZF9hZGRyZXNzZXMg aWR4Ow0KIAl1bnNpZ25lZCBsb25nIHZhZGRyOw0KIA0KKwlwcmVlbXB0X2Rp c2FibGUoKTsNCiAJaWYgKHBhZ2UgPCBoaWdobWVtX3N0YXJ0X3BhZ2UpDQog CQlyZXR1cm4gcGFnZV9hZGRyZXNzKHBhZ2UpOw0KIA0KQEAgLTEwOSw4ICsx MTAsMTAgQEANCiAJdW5zaWduZWQgbG9uZyB2YWRkciA9ICh1bnNpZ25lZCBs b25nKSBrdmFkZHI7DQogCWVudW0gZml4ZWRfYWRkcmVzc2VzIGlkeCA9IHR5 cGUgKyBLTV9UWVBFX05SKnNtcF9wcm9jZXNzb3JfaWQoKTsNCiANCi0JaWYg KHZhZGRyIDwgRklYQUREUl9TVEFSVCkgLy8gRklYTUUNCisJaWYgKHZhZGRy IDwgRklYQUREUl9TVEFSVCkgeyAvLyBGSVhNRQ0KKwkJcHJlZW1wdF9lbmFi bGUoKTsNCiAJCXJldHVybjsNCisJfQ0KIA0KIAlpZiAodmFkZHIgIT0gX19m aXhfdG9fdmlydChGSVhfS01BUF9CRUdJTitpZHgpKQ0KIAkJb3V0X29mX2xp bmVfYnVnKCk7DQpAQCAtMTIyLDYgKzEyNSw4IEBADQogCXB0ZV9jbGVhcihr bWFwX3B0ZS1pZHgpOw0KIAlfX2ZsdXNoX3RsYl9vbmUodmFkZHIpOw0KICNl bmRpZg0KKw0KKwlwcmVlbXB0X2VuYWJsZSgpOw0KIH0NCiANCiAjZW5kaWYg LyogX19LRVJORUxfXyAqLw0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91 c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUv YXNtLWkzODYvaHdfaXJxLmggbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNs dWRlL2FzbS1pMzg2L2h3X2lycS5oDQotLS0gbGludXgtMi40LjE5LXByZTgt YWMzL2luY2x1ZGUvYXNtLWkzODYvaHdfaXJxLmgJVGh1IE5vdiAyMiAxNDo0 NjoxOCAyMDAxDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRl L2FzbS1pMzg2L2h3X2lycS5oCVR1ZSBNYXkgMTQgMTU6MjA6MjUgMjAwMg0K QEAgLTk1LDYgKzk1LDE4IEBADQogI2RlZmluZSBfX1NUUih4KSAjeA0KICNk ZWZpbmUgU1RSKHgpIF9fU1RSKHgpDQogDQorI2RlZmluZSBHRVRfQ1VSUkVO VCBcDQorCSJtb3ZsICVlc3AsICVlYnhcblx0IiBcDQorCSJhbmRsICQtODE5 MiwgJWVieFxuXHQiDQorDQorI2lmZGVmIENPTkZJR19QUkVFTVBUDQorI2Rl ZmluZSBCVU1QX0xPQ0tfQ09VTlQgXA0KKwlHRVRfQ1VSUkVOVCBcDQorCSJp bmNsIDQoJWVieClcblx0Ig0KKyNlbHNlDQorI2RlZmluZSBCVU1QX0xPQ0tf Q09VTlQNCisjZW5kaWYNCisNCiAjZGVmaW5lIFNBVkVfQUxMIFwNCiAJImNs ZFxuXHQiIFwNCiAJInB1c2hsICVlc1xuXHQiIFwNCkBAIC0xMDgsMTQgKzEy MCwxMSBAQA0KIAkicHVzaGwgJWVieFxuXHQiIFwNCiAJIm1vdmwgJCIgU1RS KF9fS0VSTkVMX0RTKSAiLCVlZHhcblx0IiBcDQogCSJtb3ZsICVlZHgsJWRz XG5cdCIgXA0KLQkibW92bCAlZWR4LCVlc1xuXHQiDQorCSJtb3ZsICVlZHgs JWVzXG5cdCIgXA0KKwlCVU1QX0xPQ0tfQ09VTlQNCiANCiAjZGVmaW5lIElS UV9OQU1FMihucikgbnIjI19pbnRlcnJ1cHQodm9pZCkNCiAjZGVmaW5lIElS UV9OQU1FKG5yKSBJUlFfTkFNRTIoSVJRIyNucikNCi0NCi0jZGVmaW5lIEdF VF9DVVJSRU5UIFwNCi0JIm1vdmwgJWVzcCwgJWVieFxuXHQiIFwNCi0JImFu ZGwgJC04MTkyLCAlZWJ4XG5cdCINCiANCiAvKg0KICAqCVNNUCBoYXMgYSBm ZXcgc3BlY2lhbCBpbnRlcnJ1cHRzIGZvciBJUEkgbWVzc2FnZXMNCmRpZmYg LXUgLXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIu NC4xOS1wcmU4LWFjMy9pbmNsdWRlL2FzbS1pMzg2L2kzODcuaCBsaW51eC0y LjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvYXNtLWkzODYvaTM4Ny5oDQotLS0g bGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLWkzODYvaTM4Ny5o CVRodSBOb3YgMjIgMTQ6NDg6NTggMjAwMQ0KKysrIGxpbnV4LTIuNC4xOS1w cmU4LWFjM3AvaW5jbHVkZS9hc20taTM4Ni9pMzg3LmgJVHVlIE1heSAxNCAx ODowOTowOCAyMDAyDQpAQCAtMTIsNiArMTIsNyBAQA0KICNkZWZpbmUgX19B U01fSTM4Nl9JMzg3X0gNCiANCiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4N CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4NCiAjaW5jbHVkZSA8YXNt L3Byb2Nlc3Nvci5oPg0KICNpbmNsdWRlIDxhc20vc2lnY29udGV4dC5oPg0K ICNpbmNsdWRlIDxhc20vdXNlci5oPg0KQEAgLTI0LDcgKzI1LDcgQEANCiBl eHRlcm4gdm9pZCByZXN0b3JlX2ZwdSggc3RydWN0IHRhc2tfc3RydWN0ICp0 c2sgKTsNCiANCiBleHRlcm4gdm9pZCBrZXJuZWxfZnB1X2JlZ2luKHZvaWQp Ow0KLSNkZWZpbmUga2VybmVsX2ZwdV9lbmQoKSBzdHRzKCkNCisjZGVmaW5l IGtlcm5lbF9mcHVfZW5kKCkgZG8geyBzdHRzKCk7IHByZWVtcHRfZW5hYmxl KCk7IH0gd2hpbGUoMCkNCiANCiANCiAjZGVmaW5lIHVubGF6eV9mcHUoIHRz ayApIGRvIHsgXA0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3Jj L2V4Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLWkz ODYvcGdhbGxvYy5oIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvaW5jbHVkZS9h c20taTM4Ni9wZ2FsbG9jLmgNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMv aW5jbHVkZS9hc20taTM4Ni9wZ2FsbG9jLmgJVHVlIE1heSAxNCAxNDo1OToy MCAyMDAyDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2Fz bS1pMzg2L3BnYWxsb2MuaAlUdWUgTWF5IDE0IDE1OjIwOjI1IDIwMDINCkBA IC03NSwyMCArNzUsMjYgQEANCiB7DQogCXVuc2lnbmVkIGxvbmcgKnJldDsN CiANCisJcHJlZW1wdF9kaXNhYmxlKCk7DQogCWlmICgocmV0ID0gcGdkX3F1 aWNrbGlzdCkgIT0gTlVMTCkgew0KIAkJcGdkX3F1aWNrbGlzdCA9ICh1bnNp Z25lZCBsb25nICopKCpyZXQpOw0KIAkJcmV0WzBdID0gMDsNCiAJCXBndGFi bGVfY2FjaGVfc2l6ZS0tOw0KLQl9IGVsc2UNCisJCXByZWVtcHRfZW5hYmxl KCk7DQorCX0gZWxzZSB7DQorCQlwcmVlbXB0X2VuYWJsZSgpOw0KIAkJcmV0 ID0gKHVuc2lnbmVkIGxvbmcgKilnZXRfcGdkX3Nsb3coKTsNCisJfQ0KIAly ZXR1cm4gKHBnZF90ICopcmV0Ow0KIH0NCiANCiBzdGF0aWMgaW5saW5lIHZv aWQgZnJlZV9wZ2RfZmFzdChwZ2RfdCAqcGdkKQ0KIHsNCisJcHJlZW1wdF9k aXNhYmxlKCk7DQogCSoodW5zaWduZWQgbG9uZyAqKXBnZCA9ICh1bnNpZ25l ZCBsb25nKSBwZ2RfcXVpY2tsaXN0Ow0KIAlwZ2RfcXVpY2tsaXN0ID0gKHVu c2lnbmVkIGxvbmcgKikgcGdkOw0KIAlwZ3RhYmxlX2NhY2hlX3NpemUrKzsN CisJcHJlZW1wdF9lbmFibGUoKTsNCiB9DQogDQogc3RhdGljIGlubGluZSB2 b2lkIGZyZWVfcGdkX3Nsb3cocGdkX3QgKnBnZCkNCkBAIC0xMTksMTEgKzEy NSwxMyBAQA0KIHsNCiAJdW5zaWduZWQgbG9uZyAqcmV0Ow0KIA0KKwlwcmVl bXB0X2Rpc2FibGUoKTsNCiAJaWYgKChyZXQgPSAodW5zaWduZWQgbG9uZyAq KXB0ZV9xdWlja2xpc3QpICE9IE5VTEwpIHsNCiAJCXB0ZV9xdWlja2xpc3Qg PSAodW5zaWduZWQgbG9uZyAqKSgqcmV0KTsNCiAJCXJldFswXSA9IHJldFsx XTsNCiAJCXBndGFibGVfY2FjaGVfc2l6ZS0tOw0KIAl9DQorCXByZWVtcHRf ZW5hYmxlKCk7DQogCXJldHVybiAocHRlX3QgKilyZXQ7DQogfQ0KIA0KQEAg LTEzNSwxMiArMTQzLDE0IEBADQogZXh0ZXJuIGludCBwZ3RfY2FjaGVfd2F0 ZXJbXTsNCiBzdGF0aWMgaW5saW5lIHZvaWQgcHRlX2ZyZWVfZmFzdChwdGVf dCAqcHRlKQ0KIHsNCisJcHJlZW1wdF9kaXNhYmxlKCk7DQogCWlmIChwZ3Rh YmxlX2NhY2hlX3NpemUgPCBwZ3RfY2FjaGVfd2F0ZXJbMV0pIHsNCiAJCSoo dW5zaWduZWQgbG9uZyAqKXB0ZSA9ICh1bnNpZ25lZCBsb25nKSBwdGVfcXVp Y2tsaXN0Ow0KIAkJcHRlX3F1aWNrbGlzdCA9ICh1bnNpZ25lZCBsb25nICop IHB0ZTsNCiAJCXBndGFibGVfY2FjaGVfc2l6ZSsrOw0KIAl9IGVsc2UNCiAJ CXB0ZV9mcmVlX3Nsb3cocHRlKTsNCisJcHJlZW1wdF9lbmFibGUoKTsNCiB9 DQogDQogI2RlZmluZSBwdGVfZnJlZShwdGUpCQlwdGVfZnJlZV9mYXN0KHB0 ZSkNCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRl IGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9pbmNsdWRlL2FzbS1pMzg2L3NtcGxv Y2suaCBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvYXNtLWkzODYv c21wbG9jay5oDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUv YXNtLWkzODYvc21wbG9jay5oCVR1ZSBNYXkgMTQgMTQ6NTU6NTUgMjAwMg0K KysrIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvaW5jbHVkZS9hc20taTM4Ni9z bXBsb2NrLmgJVHVlIE1heSAxNCAxODowOTowOCAyMDAyDQpAQCAtMTEsNyAr MTEsMTUgQEANCiBleHRlcm4gc3BpbmxvY2tfY2FjaGVsaW5lX3Qga2VybmVs X2ZsYWdfY2FjaGVsaW5lOyAgDQogI2RlZmluZSBrZXJuZWxfZmxhZyBrZXJu ZWxfZmxhZ19jYWNoZWxpbmUubG9jayAgICAgIA0KIA0KKyNpZmRlZiBDT05G SUdfU01QDQogI2RlZmluZSBrZXJuZWxfbG9ja2VkKCkJCXNwaW5faXNfbG9j a2VkKCZrZXJuZWxfZmxhZykNCisjZWxzZQ0KKyNpZmRlZiBDT05GSUdfUFJF RU1QVA0KKyNkZWZpbmUga2VybmVsX2xvY2tlZCgpCQlwcmVlbXB0X2dldF9j b3VudCgpDQorI2Vsc2UNCisjZGVmaW5lIGtlcm5lbF9sb2NrZWQoKQkJMQ0K KyNlbmRpZg0KKyNlbmRpZg0KIA0KIC8qDQogICogUmVsZWFzZSBnbG9iYWwg a2VybmVsIGxvY2sgYW5kIGdsb2JhbCBpbnRlcnJ1cHQgbG9jaw0KQEAgLTQz LDYgKzUxLDExIEBADQogICovDQogc3RhdGljIF9faW5saW5lX18gdm9pZCBs b2NrX2tlcm5lbCh2b2lkKQ0KIHsNCisjaWZkZWYgQ09ORklHX1BSRUVNUFQN CisJaWYgKGN1cnJlbnQtPmxvY2tfZGVwdGggPT0gLTEpDQorCQlzcGluX2xv Y2soJmtlcm5lbF9mbGFnKTsNCisJKytjdXJyZW50LT5sb2NrX2RlcHRoOw0K KyNlbHNlDQogI2lmIDENCiAJaWYgKCErK2N1cnJlbnQtPmxvY2tfZGVwdGgp DQogCQlzcGluX2xvY2soJmtlcm5lbF9mbGFnKTsNCkBAIC01NCw2ICs2Nyw3 IEBADQogCQkiXG45OiINCiAJCToiPW0iIChfX2R1bW15X2xvY2soJmtlcm5l bF9mbGFnKSksDQogCQkgIj1tIiAoY3VycmVudC0+bG9ja19kZXB0aCkpOw0K KyNlbmRpZg0KICNlbmRpZg0KIH0NCiANCmRpZmYgLXUgLXIgLS1uZXctZmls ZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9p bmNsdWRlL2FzbS1pMzg2L3NvZnRpcnEuaCBsaW51eC0yLjQuMTktcHJlOC1h YzNwL2luY2x1ZGUvYXNtLWkzODYvc29mdGlycS5oDQotLS0gbGludXgtMi40 LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLWkzODYvc29mdGlycS5oCVR1ZSBN YXkgMTQgMTQ6NTU6NTUgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFj M3AvaW5jbHVkZS9hc20taTM4Ni9zb2Z0aXJxLmgJVHVlIE1heSAxNCAxNToy MDoyNSAyMDAyDQpAQCAtNSw5ICs1LDkgQEANCiAjaW5jbHVkZSA8YXNtL2hh cmRpcnEuaD4NCiANCiAjZGVmaW5lIF9fY3B1X2JoX2VuYWJsZShjcHUpIFwN Ci0JCWRvIHsgYmFycmllcigpOyBsb2NhbF9iaF9jb3VudChjcHUpLS07IH0g d2hpbGUgKDApDQorCQlkbyB7IGJhcnJpZXIoKTsgbG9jYWxfYmhfY291bnQo Y3B1KS0tOyBwcmVlbXB0X2VuYWJsZSgpOyB9IHdoaWxlICgwKQ0KICNkZWZp bmUgY3B1X2JoX2Rpc2FibGUoY3B1KSBcDQotCQlkbyB7IGxvY2FsX2JoX2Nv dW50KGNwdSkrKzsgYmFycmllcigpOyB9IHdoaWxlICgwKQ0KKwkJZG8geyBw cmVlbXB0X2Rpc2FibGUoKTsgbG9jYWxfYmhfY291bnQoY3B1KSsrOyBiYXJy aWVyKCk7IH0gd2hpbGUgKDApDQogDQogI2RlZmluZSBsb2NhbF9iaF9kaXNh YmxlKCkJY3B1X2JoX2Rpc2FibGUoc21wX3Byb2Nlc3Nvcl9pZCgpKQ0KICNk ZWZpbmUgX19sb2NhbF9iaF9lbmFibGUoKQlfX2NwdV9iaF9lbmFibGUoc21w X3Byb2Nlc3Nvcl9pZCgpKQ0KQEAgLTIyLDcgKzIyLDcgQEANCiAgKiBJZiB5 b3UgY2hhbmdlIHRoZSBvZmZzZXRzIGluIGlycV9zdGF0IHRoZW4geW91IGhh dmUgdG8NCiAgKiB1cGRhdGUgdGhpcyBjb2RlIGFzIHdlbGwuDQogICovDQot I2RlZmluZSBsb2NhbF9iaF9lbmFibGUoKQkJCQkJCVwNCisjZGVmaW5lIF9s b2NhbF9iaF9lbmFibGUoKQkJCQkJCVwNCiBkbyB7CQkJCQkJCQkJXA0KIAl1 bnNpZ25lZCBpbnQgKnB0ciA9ICZsb2NhbF9iaF9jb3VudChzbXBfcHJvY2Vz c29yX2lkKCkpOwlcDQogCQkJCQkJCQkJXA0KQEAgLTQ0LDUgKzQ0LDcgQEAN CiAJCTogInIiIChwdHIpLCAiaSIgKGRvX3NvZnRpcnEpCQkJCVwNCiAJCS8q IG5vIHJlZ2lzdGVycyBjbG9iYmVyZWQgKi8gKTsJCQkJXA0KIH0gd2hpbGUg KDApDQorDQorI2RlZmluZSBsb2NhbF9iaF9lbmFibGUoKSBkbyB7IF9sb2Nh bF9iaF9lbmFibGUoKTsgcHJlZW1wdF9lbmFibGUoKTsgfSB3aGlsZSAoMCkN CiANCiAjZW5kaWYJLyogX19BU01fU09GVElSUV9IICovDQpkaWZmIC11IC1y IC0tbmV3LWZpbGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTkt cHJlOC1hYzMvaW5jbHVkZS9hc20taTM4Ni9zcGlubG9jay5oIGxpbnV4LTIu NC4xOS1wcmU4LWFjM3AvaW5jbHVkZS9hc20taTM4Ni9zcGlubG9jay5oDQot LS0gbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLWkzODYvc3Bp bmxvY2suaAlUdWUgTWF5IDE0IDE0OjU1OjU1IDIwMDINCisrKyBsaW51eC0y LjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvYXNtLWkzODYvc3BpbmxvY2suaAlU dWUgTWF5IDE0IDE1OjIwOjI1IDIwMDINCkBAIC03Nyw3ICs3Nyw3IEBADQog CQk6Ij1tIiAobG9jay0+bG9jaykgOiA6ICJtZW1vcnkiDQogDQogDQotc3Rh dGljIGlubGluZSB2b2lkIHNwaW5fdW5sb2NrKHNwaW5sb2NrX3QgKmxvY2sp DQorc3RhdGljIGlubGluZSB2b2lkIF9yYXdfc3Bpbl91bmxvY2soc3Bpbmxv Y2tfdCAqbG9jaykNCiB7DQogI2lmIFNQSU5MT0NLX0RFQlVHDQogCWlmIChs b2NrLT5tYWdpYyAhPSBTUElOTE9DS19NQUdJQykNCkBAIC05Nyw3ICs5Nyw3 IEBADQogCQk6Ij1xIiAob2xkdmFsKSwgIj1tIiAobG9jay0+bG9jaykgXA0K IAkJOiIwIiAob2xkdmFsKSA6ICJtZW1vcnkiDQogDQotc3RhdGljIGlubGlu ZSB2b2lkIHNwaW5fdW5sb2NrKHNwaW5sb2NrX3QgKmxvY2spDQorc3RhdGlj IGlubGluZSB2b2lkIF9yYXdfc3Bpbl91bmxvY2soc3BpbmxvY2tfdCAqbG9j aykNCiB7DQogCWNoYXIgb2xkdmFsID0gMTsNCiAjaWYgU1BJTkxPQ0tfREVC VUcNCkBAIC0xMTMsNyArMTEzLDcgQEANCiANCiAjZW5kaWYNCiANCi1zdGF0 aWMgaW5saW5lIGludCBzcGluX3RyeWxvY2soc3BpbmxvY2tfdCAqbG9jaykN CitzdGF0aWMgaW5saW5lIGludCBfcmF3X3NwaW5fdHJ5bG9jayhzcGlubG9j a190ICpsb2NrKQ0KIHsNCiAJY2hhciBvbGR2YWw7DQogCV9fYXNtX18gX192 b2xhdGlsZV9fKA0KQEAgLTEyMyw3ICsxMjMsNyBAQA0KIAlyZXR1cm4gb2xk dmFsID4gMDsNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIHNwaW5fbG9j ayhzcGlubG9ja190ICpsb2NrKQ0KK3N0YXRpYyBpbmxpbmUgdm9pZCBfcmF3 X3NwaW5fbG9jayhzcGlubG9ja190ICpsb2NrKQ0KIHsNCiAjaWYgU1BJTkxP Q0tfREVCVUcNCiAJX19sYWJlbF9fIGhlcmU7DQpAQCAtMTc5LDcgKzE3OSw3 IEBADQogICovDQogLyogdGhlIHNwaW5sb2NrIGhlbHBlcnMgYXJlIGluIGFy Y2gvaTM4Ni9rZXJuZWwvc2VtYXBob3JlLmMgKi8NCiANCi1zdGF0aWMgaW5s aW5lIHZvaWQgcmVhZF9sb2NrKHJ3bG9ja190ICpydykNCitzdGF0aWMgaW5s aW5lIHZvaWQgX3Jhd19yZWFkX2xvY2socndsb2NrX3QgKnJ3KQ0KIHsNCiAj aWYgU1BJTkxPQ0tfREVCVUcNCiAJaWYgKHJ3LT5tYWdpYyAhPSBSV0xPQ0tf TUFHSUMpDQpAQCAtMTg4LDcgKzE4OCw3IEBADQogCV9fYnVpbGRfcmVhZF9s b2NrKHJ3LCAiX19yZWFkX2xvY2tfZmFpbGVkIik7DQogfQ0KIA0KLXN0YXRp YyBpbmxpbmUgdm9pZCB3cml0ZV9sb2NrKHJ3bG9ja190ICpydykNCitzdGF0 aWMgaW5saW5lIHZvaWQgX3Jhd193cml0ZV9sb2NrKHJ3bG9ja190ICpydykN CiB7DQogI2lmIFNQSU5MT0NLX0RFQlVHDQogCWlmIChydy0+bWFnaWMgIT0g UldMT0NLX01BR0lDKQ0KQEAgLTE5NywxMCArMTk3LDEwIEBADQogCV9fYnVp bGRfd3JpdGVfbG9jayhydywgIl9fd3JpdGVfbG9ja19mYWlsZWQiKTsNCiB9 DQogDQotI2RlZmluZSByZWFkX3VubG9jayhydykJCWFzbSB2b2xhdGlsZSgi bG9jayA7IGluY2wgJTAiIDoiPW0iICgocncpLT5sb2NrKSA6IDogIm1lbW9y eSIpDQotI2RlZmluZSB3cml0ZV91bmxvY2socncpCWFzbSB2b2xhdGlsZSgi bG9jayA7IGFkZGwgJCIgUldfTE9DS19CSUFTX1NUUiAiLCUwIjoiPW0iICgo cncpLT5sb2NrKSA6IDogIm1lbW9yeSIpDQorI2RlZmluZSBfcmF3X3JlYWRf dW5sb2NrKHJ3KQkJYXNtIHZvbGF0aWxlKCJsb2NrIDsgaW5jbCAlMCIgOiI9 bSIgKChydyktPmxvY2spIDogOiAibWVtb3J5IikNCisjZGVmaW5lIF9yYXdf d3JpdGVfdW5sb2NrKHJ3KQlhc20gdm9sYXRpbGUoImxvY2sgOyBhZGRsICQi IFJXX0xPQ0tfQklBU19TVFIgIiwlMCI6Ij1tIiAoKHJ3KS0+bG9jaykgOiA6 ICJtZW1vcnkiKQ0KIA0KLXN0YXRpYyBpbmxpbmUgaW50IHdyaXRlX3RyeWxv Y2socndsb2NrX3QgKmxvY2spDQorc3RhdGljIGlubGluZSBpbnQgX3Jhd193 cml0ZV90cnlsb2NrKHJ3bG9ja190ICpsb2NrKQ0KIHsNCiAJYXRvbWljX3Qg KmNvdW50ID0gKGF0b21pY190ICopbG9jazsNCiAJaWYgKGF0b21pY19zdWJf YW5kX3Rlc3QoUldfTE9DS19CSUFTLCBjb3VudCkpDQpkaWZmIC11IC1yIC0t bmV3LWZpbGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJl OC1hYzMvaW5jbHVkZS9hc20tc2gvaGFyZGlycS5oIGxpbnV4LTIuNC4xOS1w cmU4LWFjM3AvaW5jbHVkZS9hc20tc2gvaGFyZGlycS5oDQotLS0gbGludXgt Mi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLXNoL2hhcmRpcnEuaAlTYXQg U2VwICA4IDE1OjI5OjA5IDIwMDENCisrKyBsaW51eC0yLjQuMTktcHJlOC1h YzNwL2luY2x1ZGUvYXNtLXNoL2hhcmRpcnEuaAlUdWUgTWF5IDE0IDE1OjA5 OjE4IDIwMDINCkBAIC0zNCw2ICszNCw4IEBADQogDQogI2RlZmluZSBzeW5j aHJvbml6ZV9pcnEoKQliYXJyaWVyKCkNCiANCisjZGVmaW5lIHJlbGVhc2Vf aXJxbG9jayhjcHUpCWRvIHsgfSB3aGlsZSAoMCkNCisNCiAjZWxzZQ0KIA0K ICNlcnJvciBTdXBlci1IIFNNUCBpcyBub3QgYXZhaWxhYmxlDQpkaWZmIC11 IC1yIC0tbmV3LWZpbGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQu MTktcHJlOC1hYzMvaW5jbHVkZS9hc20tc2gvc21wbG9jay5oIGxpbnV4LTIu NC4xOS1wcmU4LWFjM3AvaW5jbHVkZS9hc20tc2gvc21wbG9jay5oDQotLS0g bGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvYXNtLXNoL3NtcGxvY2su aAlTYXQgU2VwICA4IDE1OjI5OjA5IDIwMDENCisrKyBsaW51eC0yLjQuMTkt cHJlOC1hYzNwL2luY2x1ZGUvYXNtLXNoL3NtcGxvY2suaAlUdWUgTWF5IDE0 IDE1OjA5OjE4IDIwMDINCkBAIC05LDE1ICs5LDg4IEBADQogDQogI2luY2x1 ZGUgPGxpbnV4L2NvbmZpZy5oPg0KIA0KLSNpZm5kZWYgQ09ORklHX1NNUA0K LQ0KKyNpZiAhZGVmaW5lZChDT05GSUdfU01QKSAmJiAhZGVmaW5lZChDT05G SUdfUFJFRU1QVCkNCisvKg0KKyAqIFNob3VsZCBuZXZlciBoYXBwZW4sIHNp bmNlIGxpbnV4L3NtcF9sb2NrLmggY2F0Y2hlcyB0aGlzIGNhc2U7DQorICog YnV0IGluIGNhc2UgdGhpcyBmaWxlIGlzIGluY2x1ZGVkIGRpcmVjdGx5IHdp dGggbmVpdGhlciBTTVAgbm9yDQorICogUFJFRU1QVCBjb25maWd1cmF0aW9u LCBwcm92aWRlIHNhbWUgZHVtbXlzIGFzIGxpbnV4L3NtcF9sb2NrLmgNCisg Ki8NCiAjZGVmaW5lIGxvY2tfa2VybmVsKCkJCQkJZG8geyB9IHdoaWxlKDAp DQogI2RlZmluZSB1bmxvY2tfa2VybmVsKCkJCQkJZG8geyB9IHdoaWxlKDAp DQotI2RlZmluZSByZWxlYXNlX2tlcm5lbF9sb2NrKHRhc2ssIGNwdSwgZGVw dGgpCSgoZGVwdGgpID0gMSkNCi0jZGVmaW5lIHJlYWNxdWlyZV9rZXJuZWxf bG9jayh0YXNrLCBjcHUsIGRlcHRoKQlkbyB7IH0gd2hpbGUoMCkNCisjZGVm aW5lIHJlbGVhc2Vfa2VybmVsX2xvY2sodGFzaywgY3B1KQkJZG8geyB9IHdo aWxlKDApDQorI2RlZmluZSByZWFjcXVpcmVfa2VybmVsX2xvY2sodGFzaykJ CWRvIHsgfSB3aGlsZSgwKQ0KKyNkZWZpbmUga2VybmVsX2xvY2tlZCgpCQkx DQorDQorI2Vsc2UgLyogQ09ORklHX1NNUCB8fCBDT05GSUdfUFJFRU1QVCAq Lw0KKw0KKyNpZiBDT05GSUdfU01QDQorI2Vycm9yICJXZSBkbyBub3Qgc3Vw cG9ydCBTTVAgb24gU0ggeWV0Ig0KKyNlbmRpZg0KKy8qDQorICogRGVmYXVs dCBTTVAgbG9jayBpbXBsZW1lbnRhdGlvbiAoaS5lLiB0aGUgaTM4NiB2ZXJz aW9uKQ0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4N CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4NCisNCitleHRlcm4gc3Bp bmxvY2tfdCBrZXJuZWxfZmxhZzsNCisjZGVmaW5lIGxvY2tfYmtsKCkgc3Bp bl9sb2NrKCZrZXJuZWxfZmxhZykNCisjZGVmaW5lIHVubG9ja19ia2woKSBz cGluX3VubG9jaygma2VybmVsX2ZsYWcpDQogDQorI2lmZGVmIENPTkZJR19T TVANCisjZGVmaW5lIGtlcm5lbF9sb2NrZWQoKQkJc3Bpbl9pc19sb2NrZWQo Jmtlcm5lbF9mbGFnKQ0KKyNlbGlmICBDT05GSUdfUFJFRU1QVA0KKyNkZWZp bmUga2VybmVsX2xvY2tlZCgpCQlwcmVlbXB0X2dldF9jb3VudCgpDQorI2Vs c2UgIC8qIG5laXRoZXIgKi8NCisjZGVmaW5lIGtlcm5lbF9sb2NrZWQoKQkJ MQ0KKyNlbmRpZg0KKw0KKy8qDQorICogUmVsZWFzZSBnbG9iYWwga2VybmVs IGxvY2sgYW5kIGdsb2JhbCBpbnRlcnJ1cHQgbG9jaw0KKyAqLw0KKyNkZWZp bmUgcmVsZWFzZV9rZXJuZWxfbG9jayh0YXNrLCBjcHUpIFwNCitkbyB7IFwN CisJaWYgKHRhc2stPmxvY2tfZGVwdGggPj0gMCkgXA0KKwkJc3Bpbl91bmxv Y2soJmtlcm5lbF9mbGFnKTsgXA0KKwlyZWxlYXNlX2lycWxvY2soY3B1KTsg XA0KKwlfX3N0aSgpOyBcDQorfSB3aGlsZSAoMCkNCisNCisvKg0KKyAqIFJl LWFjcXVpcmUgdGhlIGtlcm5lbCBsb2NrDQorICovDQorI2RlZmluZSByZWFj cXVpcmVfa2VybmVsX2xvY2sodGFzaykgXA0KK2RvIHsgXA0KKwlpZiAodGFz ay0+bG9ja19kZXB0aCA+PSAwKSBcDQorCQlzcGluX2xvY2soJmtlcm5lbF9m bGFnKTsgXA0KK30gd2hpbGUgKDApDQorDQorLyoNCisgKiBHZXR0aW5nIHRo ZSBiaWcga2VybmVsIGxvY2suDQorICoNCisgKiBUaGlzIGNhbm5vdCBoYXBw ZW4gYXN5bmNocm9ub3VzbHksDQorICogc28gd2Ugb25seSBuZWVkIHRvIHdv cnJ5IGFib3V0IG90aGVyDQorICogQ1BVJ3MuDQorICovDQorc3RhdGljIF9f aW5saW5lX18gdm9pZCBsb2NrX2tlcm5lbCh2b2lkKQ0KK3sNCisjaWZkZWYg Q09ORklHX1BSRUVNUFQNCisJaWYgKGN1cnJlbnQtPmxvY2tfZGVwdGggPT0g LTEpDQorCQlzcGluX2xvY2soJmtlcm5lbF9mbGFnKTsNCisJKytjdXJyZW50 LT5sb2NrX2RlcHRoOw0KICNlbHNlDQotI2Vycm9yICJXZSBkbyBub3Qgc3Vw cG9ydCBTTVAgb24gU0giDQotI2VuZGlmIC8qIENPTkZJR19TTVAgKi8NCisJ aWYgKCErK2N1cnJlbnQtPmxvY2tfZGVwdGgpDQorCQlzcGluX2xvY2soJmtl cm5lbF9mbGFnKTsNCisjZW5kaWYNCit9DQorDQorc3RhdGljIF9faW5saW5l X18gdm9pZCB1bmxvY2tfa2VybmVsKHZvaWQpDQorew0KKwlpZiAoY3VycmVu dC0+bG9ja19kZXB0aCA8IDApDQorCQlCVUcoKTsNCisJaWYgKC0tY3VycmVu dC0+bG9ja19kZXB0aCA8IDApDQorCQlzcGluX3VubG9jaygma2VybmVsX2Zs YWcpOw0KK30NCisjZW5kaWYgLyogQ09ORklHX1NNUCB8fCBDT05GSUdfUFJF RU1QVCAqLw0KIA0KICNlbmRpZiAvKiBfX0FTTV9TSF9TTVBMT0NLX0ggKi8N CmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxp bnV4LTIuNC4xOS1wcmU4LWFjMy9pbmNsdWRlL2FzbS1zaC9zb2Z0aXJxLmgg bGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2FzbS1zaC9zb2Z0aXJx LmgNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9hc20tc2gv c29mdGlycS5oCVNhdCBTZXAgIDggMTU6Mjk6MDkgMjAwMQ0KKysrIGxpbnV4 LTIuNC4xOS1wcmU4LWFjM3AvaW5jbHVkZS9hc20tc2gvc29mdGlycS5oCVR1 ZSBNYXkgMTQgMTU6MDk6MTggMjAwMg0KQEAgLTYsNiArNiw3IEBADQogDQog I2RlZmluZSBsb2NhbF9iaF9kaXNhYmxlKCkJCQlcDQogZG8gewkJCQkJCVwN CisJcHJlZW1wdF9kaXNhYmxlKCk7CQkJXA0KIAlsb2NhbF9iaF9jb3VudChz bXBfcHJvY2Vzc29yX2lkKCkpKys7CVwNCiAJYmFycmllcigpOwkJCQlcDQog fSB3aGlsZSAoMCkNCkBAIC0xNCw2ICsxNSw3IEBADQogZG8gewkJCQkJCVwN CiAJYmFycmllcigpOwkJCQlcDQogCWxvY2FsX2JoX2NvdW50KHNtcF9wcm9j ZXNzb3JfaWQoKSktLTsJXA0KKwlwcmVlbXB0X2VuYWJsZSgpOwkJCVwNCiB9 IHdoaWxlICgwKQ0KIA0KICNkZWZpbmUgbG9jYWxfYmhfZW5hYmxlKCkJCQkJ XA0KQEAgLTIzLDYgKzI1LDcgQEANCiAJICAgICYmIHNvZnRpcnFfcGVuZGlu ZyhzbXBfcHJvY2Vzc29yX2lkKCkpKSB7CVwNCiAJCWRvX3NvZnRpcnEoKTsJ CQkJXA0KIAl9CQkJCQkJXA0KKwlwcmVlbXB0X2VuYWJsZSgpOwkJCQlcDQog fSB3aGlsZSAoMCkNCiANCiAjZGVmaW5lIGluX3NvZnRpcnEoKSAobG9jYWxf YmhfY291bnQoc21wX3Byb2Nlc3Nvcl9pZCgpKSAhPSAwKQ0KZGlmZiAtdSAt ciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5 LXByZTgtYWMzL2luY2x1ZGUvbGludXgvYnJsb2NrLmggbGludXgtMi40LjE5 LXByZTgtYWMzcC9pbmNsdWRlL2xpbnV4L2JybG9jay5oDQotLS0gbGludXgt Mi40LjE5LXByZTgtYWMzL2luY2x1ZGUvbGludXgvYnJsb2NrLmgJVHVlIE1h eSAxNCAxNDo1OToyMCAyMDAyDQorKysgbGludXgtMi40LjE5LXByZTgtYWMz cC9pbmNsdWRlL2xpbnV4L2JybG9jay5oCVR1ZSBNYXkgMTQgMTU6MjA6Mjcg MjAwMg0KQEAgLTE3MywxMSArMTczLDExIEBADQogfQ0KIA0KICNlbHNlDQot IyBkZWZpbmUgYnJfcmVhZF9sb2NrKGlkeCkJKCh2b2lkKShpZHgpKQ0KLSMg ZGVmaW5lIGJyX3JlYWRfdW5sb2NrKGlkeCkJKCh2b2lkKShpZHgpKQ0KLSMg ZGVmaW5lIGJyX3dyaXRlX2xvY2soaWR4KQkoKHZvaWQpKGlkeCkpDQotIyBk ZWZpbmUgYnJfd3JpdGVfdW5sb2NrKGlkeCkJKCh2b2lkKShpZHgpKQ0KLSNl bmRpZg0KKyMgZGVmaW5lIGJyX3JlYWRfbG9jayhpZHgpCSh7ICh2b2lkKShp ZHgpOyBwcmVlbXB0X2Rpc2FibGUoKTsgfSkNCisjIGRlZmluZSBicl9yZWFk X3VubG9jayhpZHgpCSh7ICh2b2lkKShpZHgpOyBwcmVlbXB0X2VuYWJsZSgp OyB9KQ0KKyMgZGVmaW5lIGJyX3dyaXRlX2xvY2soaWR4KQkoeyAodm9pZCko aWR4KTsgcHJlZW1wdF9kaXNhYmxlKCk7IH0pDQorIyBkZWZpbmUgYnJfd3Jp dGVfdW5sb2NrKGlkeCkJKHsgKHZvaWQpKGlkeCk7IHByZWVtcHRfZW5hYmxl KCk7IH0pDQorI2VuZGlmCS8qIENPTkZJR19TTVAgKi8NCiANCiAvKg0KICAq IE5vdyBlbnVtZXJhdGUgYWxsIG9mIHRoZSBwb3NzaWJsZSBzdy9odyBJUlEg cHJvdGVjdGVkDQpkaWZmIC11IC1yIC0tbmV3LWZpbGUgLVggL3Vzci9zcmMv ZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9saW51eC9k Y2FjaGUuaCBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvbGludXgv ZGNhY2hlLmgNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9s aW51eC9kY2FjaGUuaAlUdWUgTWF5IDE0IDE0OjU1OjU3IDIwMDINCisrKyBs aW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgJ VHVlIE1heSAxNCAxNToyMDoyNSAyMDAyDQpAQCAtMTI2LDMxICsxMjYsNiBA QA0KIA0KIGV4dGVybiBzcGlubG9ja190IGRjYWNoZV9sb2NrOw0KIA0KLS8q Kg0KLSAqIGRfZHJvcCAtIGRyb3AgYSBkZW50cnkNCi0gKiBAZGVudHJ5OiBk ZW50cnkgdG8gZHJvcA0KLSAqDQotICogZF9kcm9wKCkgdW5oYXNoZXMgdGhl IGVudHJ5IGZyb20gdGhlIHBhcmVudA0KLSAqIGRlbnRyeSBoYXNoZXMsIHNv IHRoYXQgaXQgd29uJ3QgYmUgZm91bmQgdGhyb3VnaA0KLSAqIGEgVkZTIGxv b2t1cCBhbnkgbW9yZS4gTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50DQot ICogZnJvbSBkZWxldGluZyB0aGUgZGVudHJ5IC0gZF9kZWxldGUgd2lsbCB0 cnkgdG8NCi0gKiBtYXJrIHRoZSBkZW50cnkgbmVnYXRpdmUgaWYgcG9zc2li bGUsIGdpdmluZyBhDQotICogc3VjY2Vzc2Z1bCBfbmVnYXRpdmVfIGxvb2t1 cCwgd2hpbGUgZF9kcm9wIHdpbGwNCi0gKiBqdXN0IG1ha2UgdGhlIGNhY2hl IGxvb2t1cCBmYWlsLg0KLSAqDQotICogZF9kcm9wKCkgaXMgdXNlZCBtYWlu bHkgZm9yIHN0dWZmIHRoYXQgd2FudHMNCi0gKiB0byBpbnZhbGlkYXRlIGEg ZGVudHJ5IGZvciBzb21lIHJlYXNvbiAoTkZTDQotICogdGltZW91dHMgb3Ig YXV0b2ZzIGRlbGV0ZXMpLg0KLSAqLw0KLQ0KLXN0YXRpYyBfX2lubGluZV9f IHZvaWQgZF9kcm9wKHN0cnVjdCBkZW50cnkgKiBkZW50cnkpDQotew0KLQlz cGluX2xvY2soJmRjYWNoZV9sb2NrKTsNCi0JbGlzdF9kZWwoJmRlbnRyeS0+ ZF9oYXNoKTsNCi0JSU5JVF9MSVNUX0hFQUQoJmRlbnRyeS0+ZF9oYXNoKTsN Ci0Jc3Bpbl91bmxvY2soJmRjYWNoZV9sb2NrKTsNCi19DQotDQogc3RhdGlj IF9faW5saW5lX18gaW50IGRuYW1lX2V4dGVybmFsKHN0cnVjdCBkZW50cnkg KmQpDQogew0KIAlyZXR1cm4gZC0+ZF9uYW1lLm5hbWUgIT0gZC0+ZF9pbmFt ZTsgDQpAQCAtMjc1LDMgKzI1MCwzNCBAQA0KICNlbmRpZiAvKiBfX0tFUk5F TF9fICovDQogDQogI2VuZGlmCS8qIF9fTElOVVhfRENBQ0hFX0ggKi8NCisN CisjaWYgIWRlZmluZWQoX19MSU5VWF9EQ0FDSEVfSF9JTkxJTkVTKSAmJiBk ZWZpbmVkKF9UQVNLX1NUUlVDVF9ERUZJTkVEKQ0KKyNkZWZpbmUgX19MSU5V WF9EQ0FDSEVfSF9JTkxJTkVTDQorDQorI2lmZGVmIF9fS0VSTkVMX18NCisv KioNCisgKiBkX2Ryb3AgLSBkcm9wIGEgZGVudHJ5DQorICogQGRlbnRyeTog ZGVudHJ5IHRvIGRyb3ANCisgKg0KKyAqIGRfZHJvcCgpIHVuaGFzaGVzIHRo ZSBlbnRyeSBmcm9tIHRoZSBwYXJlbnQNCisgKiBkZW50cnkgaGFzaGVzLCBz byB0aGF0IGl0IHdvbid0IGJlIGZvdW5kIHRocm91Z2gNCisgKiBhIFZGUyBs b29rdXAgYW55IG1vcmUuIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudA0K KyAqIGZyb20gZGVsZXRpbmcgdGhlIGRlbnRyeSAtIGRfZGVsZXRlIHdpbGwg dHJ5IHRvDQorICogbWFyayB0aGUgZGVudHJ5IG5lZ2F0aXZlIGlmIHBvc3Np YmxlLCBnaXZpbmcgYQ0KKyAqIHN1Y2Nlc3NmdWwgX25lZ2F0aXZlXyBsb29r dXAsIHdoaWxlIGRfZHJvcCB3aWxsDQorICoganVzdCBtYWtlIHRoZSBjYWNo ZSBsb29rdXAgZmFpbC4NCisgKg0KKyAqIGRfZHJvcCgpIGlzIHVzZWQgbWFp bmx5IGZvciBzdHVmZiB0aGF0IHdhbnRzDQorICogdG8gaW52YWxpZGF0ZSBh IGRlbnRyeSBmb3Igc29tZSByZWFzb24gKE5GUw0KKyAqIHRpbWVvdXRzIG9y IGF1dG9mcyBkZWxldGVzKS4NCisgKi8NCisNCitzdGF0aWMgX19pbmxpbmVf XyB2b2lkIGRfZHJvcChzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KQ0KK3sNCisJ c3Bpbl9sb2NrKCZkY2FjaGVfbG9jayk7DQorCWxpc3RfZGVsKCZkZW50cnkt PmRfaGFzaCk7DQorCUlOSVRfTElTVF9IRUFEKCZkZW50cnktPmRfaGFzaCk7 DQorCXNwaW5fdW5sb2NrKCZkY2FjaGVfbG9jayk7DQorfQ0KKyNlbmRpZg0K KyNlbmRpZg0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4 Y2x1ZGUgbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvbGludXgvZnNf c3RydWN0LmggbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2xpbnV4 L2ZzX3N0cnVjdC5oDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1 ZGUvbGludXgvZnNfc3RydWN0LmgJRnJpIEp1bCAxMyAxODoxMDo0NCAyMDAx DQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9pbmNsdWRlL2xpbnV4L2Zz X3N0cnVjdC5oCVR1ZSBNYXkgMTQgMTU6MDk6MTggMjAwMg0KQEAgLTIwLDYg KzIwLDE1IEBADQogZXh0ZXJuIHZvaWQgZXhpdF9mcyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKik7DQogZXh0ZXJuIHZvaWQgc2V0X2ZzX2FsdHJvb3Qodm9pZCk7 DQogDQorc3RydWN0IGZzX3N0cnVjdCAqY29weV9mc19zdHJ1Y3Qoc3RydWN0 IGZzX3N0cnVjdCAqb2xkKTsNCit2b2lkIHB1dF9mc19zdHJ1Y3Qoc3RydWN0 IGZzX3N0cnVjdCAqZnMpOw0KKw0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KKyNp ZiAhZGVmaW5lZChfTElOVVhfRlNfU1RSVUNUX0hfSU5MSU5FUykgJiYgZGVm aW5lZChfVEFTS19TVFJVQ1RfREVGSU5FRCkNCisjZGVmaW5lIF9MSU5VWF9G U19TVFJVQ1RfSF9JTkxJTkVTDQorI2lmZGVmIF9fS0VSTkVMX18NCiAvKg0K ICAqIFJlcGxhY2UgdGhlIGZzLT57cm9vdG1udCxyb290fSB3aXRoIHttbnQs ZGVudHJ5fS4gUHV0IHRoZSBvbGQgdmFsdWVzLg0KICAqIEl0IGNhbiBibG9j ay4gUmVxdWlyZXMgdGhlIGJpZyBsb2NrIGhlbGQuDQpAQCAtNjUsOSArNzQs NSBAQA0KIAkJbW50cHV0KG9sZF9wd2RtbnQpOw0KIAl9DQogfQ0KLQ0KLXN0 cnVjdCBmc19zdHJ1Y3QgKmNvcHlfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1 Y3QgKm9sZCk7DQotdm9pZCBwdXRfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1 Y3QgKmZzKTsNCi0NCiAjZW5kaWYNCiAjZW5kaWYNCmRpZmYgLXUgLXIgLS1u ZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4 LWFjMy9pbmNsdWRlL2xpbnV4L2tlcm5lbF9zdGF0LmggbGludXgtMi40LjE5 LXByZTgtYWMzcC9pbmNsdWRlL2xpbnV4L2tlcm5lbF9zdGF0LmgNCi0tLSBs aW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9saW51eC9rZXJuZWxfc3Rh dC5oCVR1ZSBNYXkgMTQgMTQ6NTk6MjAgMjAwMg0KKysrIGxpbnV4LTIuNC4x OS1wcmU4LWFjM3AvaW5jbHVkZS9saW51eC9rZXJuZWxfc3RhdC5oCVR1ZSBN YXkgMTQgMTY6NDk6MDQgMjAwMg0KQEAgLTE4LDcgKzE4LDggQEANCiBzdHJ1 Y3Qga2VybmVsX3N0YXQgew0KIAl1bnNpZ25lZCBpbnQgcGVyX2NwdV91c2Vy W05SX0NQVVNdLA0KIAkgICAgICAgICAgICAgcGVyX2NwdV9uaWNlW05SX0NQ VVNdLA0KLQkgICAgICAgICAgICAgcGVyX2NwdV9zeXN0ZW1bTlJfQ1BVU107 DQorCSAgICAgICAgICAgICBwZXJfY3B1X3N5c3RlbVtOUl9DUFVTXSwNCisJ ICAgICAgICAgICAgIHBlcl9jcHVfaW93YWl0W05SX0NQVVNdOw0KIAl1bnNp Z25lZCBpbnQgZGtfZHJpdmVbREtfTUFYX01BSk9SXVtES19NQVhfRElTS107 DQogCXVuc2lnbmVkIGludCBka19kcml2ZV9yaW9bREtfTUFYX01BSk9SXVtE S19NQVhfRElTS107DQogCXVuc2lnbmVkIGludCBka19kcml2ZV93aW9bREtf TUFYX01BSk9SXVtES19NQVhfRElTS107DQpkaWZmIC11IC1yIC0tbmV3LWZp bGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMv aW5jbHVkZS9saW51eC9zY2hlZC5oIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3Av aW5jbHVkZS9saW51eC9zY2hlZC5oDQotLS0gbGludXgtMi40LjE5LXByZTgt YWMzL2luY2x1ZGUvbGludXgvc2NoZWQuaAlUdWUgTWF5IDE0IDE0OjU5OjIw IDIwMDINCisrKyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvbGlu dXgvc2NoZWQuaAlUdWUgTWF5IDE0IDE4OjA5OjA1IDIwMDINCkBAIC05MSw2 ICs5MSw3IEBADQogI2RlZmluZSBUQVNLX1VOSU5URVJSVVBUSUJMRQkyDQog I2RlZmluZSBUQVNLX1pPTUJJRQkJNA0KICNkZWZpbmUgVEFTS19TVE9QUEVE CQk4DQorI2RlZmluZSBQUkVFTVBUX0FDVElWRQkJMHg0MDAwMDAwDQogDQog I2RlZmluZSBfX3NldF90YXNrX3N0YXRlKHRzaywgc3RhdGVfdmFsdWUpCQlc DQogCWRvIHsgKHRzayktPnN0YXRlID0gKHN0YXRlX3ZhbHVlKTsgfSB3aGls ZSAoMCkNCkBAIC0xNTYsNiArMTU3LDkgQEANCiAjZGVmaW5lCU1BWF9TQ0hF RFVMRV9USU1FT1VUCUxPTkdfTUFYDQogZXh0ZXJuIHNpZ25lZCBsb25nIEZB U1RDQUxMKHNjaGVkdWxlX3RpbWVvdXQoc2lnbmVkIGxvbmcgdGltZW91dCkp Ow0KIGFzbWxpbmthZ2Ugdm9pZCBzY2hlZHVsZSh2b2lkKTsNCisjaWZkZWYg Q09ORklHX1BSRUVNUFQNCithc21saW5rYWdlIHZvaWQgcHJlZW1wdF9zY2hl ZHVsZSh2b2lkKTsNCisjZW5kaWYNCiANCiBleHRlcm4gaW50IHNjaGVkdWxl X3Rhc2soc3RydWN0IHRxX3N0cnVjdCAqdGFzayk7DQogZXh0ZXJuIHZvaWQg Zmx1c2hfc2NoZWR1bGVkX3Rhc2tzKHZvaWQpOw0KQEAgLTI5MSw3ICsyOTUs NyBAQA0KIAkgKiBvZmZzZXRzIG9mIHRoZXNlIGFyZSBoYXJkY29kZWQgZWxz ZXdoZXJlIC0gdG91Y2ggd2l0aCBjYXJlDQogCSAqLw0KIAl2b2xhdGlsZSBs b25nIHN0YXRlOwkvKiAtMSB1bnJ1bm5hYmxlLCAwIHJ1bm5hYmxlLCA+MCBz dG9wcGVkICovDQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CS8qIHBlciBwcm9j ZXNzIGZsYWdzLCBkZWZpbmVkIGJlbG93ICovDQorCWludCBwcmVlbXB0X2Nv dW50OwkvKiAwID0+IHByZWVtcHRhYmxlLCA8MCA9PiBCVUcgKi8NCiAJaW50 IHNpZ3BlbmRpbmc7DQogCW1tX3NlZ21lbnRfdCBhZGRyX2xpbWl0OwkvKiB0 aHJlYWQgYWRkcmVzcyBzcGFjZToNCiAJCQkJCSAJMC0weEJGRkZGRkZGIGZv ciB1c2VyLXRoZWFkDQpAQCAtMzE3LDYgKzMyMSw3IEBADQogCXVuc2lnbmVk IGxvbmcgcG9saWN5Ow0KIAl1bnNpZ25lZCBsb25nIGNwdXNfYWxsb3dlZDsN CiAJdW5zaWduZWQgaW50IHRpbWVfc2xpY2U7DQorCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7DQogDQogCXRhc2tfdCAqbmV4dF90YXNrLCAqcHJldl90YXNrOw0K IA0KQEAgLTM1OCw2ICszNjMsNyBAQA0KIAlzdHJ1Y3QgdG1zIHRpbWVzOw0K IAl1bnNpZ25lZCBsb25nIHN0YXJ0X3RpbWU7DQogCWxvbmcgcGVyX2NwdV91 dGltZVtOUl9DUFVTXSwgcGVyX2NwdV9zdGltZVtOUl9DUFVTXTsNCisJbG9u ZyBwZXJfY3B1X2lvd2FpdFtOUl9DUFVTXTsNCiAvKiBtbSBmYXVsdCBhbmQg c3dhcCBpbmZvOiB0aGlzIGNhbiBhcmd1YWJseSBiZSBzZWVuIGFzIGVpdGhl ciBtbS1zcGVjaWZpYyBvciB0aHJlYWQtc3BlY2lmaWMgKi8NCiAJdW5zaWdu ZWQgbG9uZyBtaW5fZmx0LCBtYWpfZmx0LCBuc3dhcCwgY21pbl9mbHQsIGNt YWpfZmx0LCBjbnN3YXA7DQogCWludCBzd2FwcGFibGU6MTsNCkBAIC05NDIs NiArOTQ4LDExIEBADQogew0KIAlyZXR1cm4gdW5saWtlbHkoY3VycmVudC0+ bmVlZF9yZXNjaGVkKTsNCiB9DQorDQorI2RlZmluZSBfVEFTS19TVFJVQ1Rf REVGSU5FRA0KKyNpbmNsdWRlIDxsaW51eC9kY2FjaGUuaD4NCisjaW5jbHVk ZSA8bGludXgvdHF1ZXVlLmg+DQorI2luY2x1ZGUgPGxpbnV4L2ZzX3N0cnVj dC5oPg0KIA0KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovDQogDQpkaWZmIC11 IC1yIC0tbmV3LWZpbGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQu MTktcHJlOC1hYzMvaW5jbHVkZS9saW51eC9zbXAuaCBsaW51eC0yLjQuMTkt cHJlOC1hYzNwL2luY2x1ZGUvbGludXgvc21wLmgNCi0tLSBsaW51eC0yLjQu MTktcHJlOC1hYzMvaW5jbHVkZS9saW51eC9zbXAuaAlUdWUgTWF5IDE0IDE0 OjU5OjIwIDIwMDINCisrKyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1 ZGUvbGludXgvc21wLmgJVHVlIE1heSAxNCAxNToyMDoyNSAyMDAyDQpAQCAt ODEsNyArODEsOSBAQA0KICNkZWZpbmUgc21wX3Byb2Nlc3Nvcl9pZCgpCQkJ MA0KICNkZWZpbmUgaGFyZF9zbXBfcHJvY2Vzc29yX2lkKCkJCQkwDQogI2Rl ZmluZSBzbXBfdGhyZWFkc19yZWFkeQkJCTENCisjaWZuZGVmIENPTkZJR19Q UkVFTVBUDQogI2RlZmluZSBrZXJuZWxfbG9jaygpDQorI2VuZGlmDQogI2Rl ZmluZSBjcHVfbG9naWNhbF9tYXAoY3B1KQkJCTANCiAjZGVmaW5lIGNwdV9u dW1iZXJfbWFwKGNwdSkJCQkwDQogI2RlZmluZSBzbXBfY2FsbF9mdW5jdGlv bihmdW5jLGluZm8scmV0cnksd2FpdCkJKHsgMDsgfSkNCmRpZmYgLXUgLXIg LS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1w cmU4LWFjMy9pbmNsdWRlL2xpbnV4L3NtcF9sb2NrLmggbGludXgtMi40LjE5 LXByZTgtYWMzcC9pbmNsdWRlL2xpbnV4L3NtcF9sb2NrLmgNCi0tLSBsaW51 eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9saW51eC9zbXBfbG9jay5oCVRo dSBOb3YgMjIgMTQ6NDY6MjcgMjAwMQ0KKysrIGxpbnV4LTIuNC4xOS1wcmU4 LWFjM3AvaW5jbHVkZS9saW51eC9zbXBfbG9jay5oCVR1ZSBNYXkgMTQgMTg6 MDk6MDggMjAwMg0KQEAgLTMsNyArMyw3IEBADQogDQogI2luY2x1ZGUgPGxp bnV4L2NvbmZpZy5oPg0KIA0KLSNpZm5kZWYgQ09ORklHX1NNUA0KKyNpZiAh ZGVmaW5lZChDT05GSUdfU01QKSAmJiAhZGVmaW5lZChDT05GSUdfUFJFRU1Q VCkNCiANCiAjZGVmaW5lIGxvY2tfa2VybmVsKCkJCQkJZG8geyB9IHdoaWxl KDApDQogI2RlZmluZSB1bmxvY2tfa2VybmVsKCkJCQkJZG8geyB9IHdoaWxl KDApDQpkaWZmIC11IC1yIC0tbmV3LWZpbGUgLVggL3Vzci9zcmMvZXhjbHVk ZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvaW5jbHVkZS9saW51eC9zcGlubG9j ay5oIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvaW5jbHVkZS9saW51eC9zcGlu bG9jay5oDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1ZGUvbGlu dXgvc3BpbmxvY2suaAlUdWUgTWF5IDE0IDE0OjU1OjU4IDIwMDINCisrKyBs aW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUvbGludXgvc3BpbmxvY2su aAlUdWUgTWF5IDE0IDE1OjIwOjI1IDIwMDINCkBAIC0yLDYgKzIsNyBAQA0K ICNkZWZpbmUgX19MSU5VWF9TUElOTE9DS19IDQogDQogI2luY2x1ZGUgPGxp bnV4L2NvbmZpZy5oPg0KKyNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPg0K IA0KIC8qDQogICogVGhlc2UgYXJlIHRoZSBnZW5lcmljIHZlcnNpb25zIG9m IHRoZSBzcGlubG9ja3MgYW5kIHJlYWQtd3JpdGUNCkBAIC02Miw4ICs2Mywx MCBAQA0KIA0KICNpZiAoREVCVUdfU1BJTkxPQ0tTIDwgMSkNCiANCisjaWZu ZGVmIENPTkZJR19QUkVFTVBUDQogI2RlZmluZSBhdG9taWNfZGVjX2FuZF9s b2NrKGF0b21pYyxsb2NrKSBhdG9taWNfZGVjX2FuZF90ZXN0KGF0b21pYykN CiAjZGVmaW5lIEFUT01JQ19ERUNfQU5EX0xPQ0sNCisjZW5kaWYNCiANCiAv Kg0KICAqIFlvdXIgYmFzaWMgc3BpbmxvY2tzLCBhbGxvd2luZyBvbmx5IGEg c2luZ2xlIENQVSBhbnl3aGVyZQ0KQEAgLTc5LDExICs4MiwxMSBAQA0KICNl bmRpZg0KIA0KICNkZWZpbmUgc3Bpbl9sb2NrX2luaXQobG9jaykJZG8geyB9 IHdoaWxlKDApDQotI2RlZmluZSBzcGluX2xvY2sobG9jaykJCSh2b2lkKShs b2NrKSAvKiBOb3QgInVudXNlZCB2YXJpYWJsZSIuICovDQorI2RlZmluZSBf cmF3X3NwaW5fbG9jayhsb2NrKQkodm9pZCkobG9jaykgLyogTm90ICJ1bnVz ZWQgdmFyaWFibGUiLiAqLw0KICNkZWZpbmUgc3Bpbl9pc19sb2NrZWQobG9j aykJKDApDQotI2RlZmluZSBzcGluX3RyeWxvY2sobG9jaykJKHsxOyB9KQ0K KyNkZWZpbmUgX3Jhd19zcGluX3RyeWxvY2sobG9jaykJKHsxOyB9KQ0KICNk ZWZpbmUgc3Bpbl91bmxvY2tfd2FpdChsb2NrKQlkbyB7IH0gd2hpbGUoMCkN Ci0jZGVmaW5lIHNwaW5fdW5sb2NrKGxvY2spCWRvIHsgfSB3aGlsZSgwKQ0K KyNkZWZpbmUgX3Jhd19zcGluX3VubG9jayhsb2NrKQlkbyB7IH0gd2hpbGUo MCkNCiANCiAjZWxpZiAoREVCVUdfU1BJTkxPQ0tTIDwgMikNCiANCkBAIC0x NDIsMTIgKzE0NSw3NSBAQA0KICNlbmRpZg0KIA0KICNkZWZpbmUgcndsb2Nr X2luaXQobG9jaykJZG8geyB9IHdoaWxlKDApDQotI2RlZmluZSByZWFkX2xv Y2sobG9jaykJCSh2b2lkKShsb2NrKSAvKiBOb3QgInVudXNlZCB2YXJpYWJs ZSIuICovDQotI2RlZmluZSByZWFkX3VubG9jayhsb2NrKQlkbyB7IH0gd2hp bGUoMCkNCi0jZGVmaW5lIHdyaXRlX2xvY2sobG9jaykJKHZvaWQpKGxvY2sp IC8qIE5vdCAidW51c2VkIHZhcmlhYmxlIi4gKi8NCi0jZGVmaW5lIHdyaXRl X3VubG9jayhsb2NrKQlkbyB7IH0gd2hpbGUoMCkNCisjZGVmaW5lIF9yYXdf cmVhZF9sb2NrKGxvY2spCSh2b2lkKShsb2NrKSAvKiBOb3QgInVudXNlZCB2 YXJpYWJsZSIuICovDQorI2RlZmluZSBfcmF3X3JlYWRfdW5sb2NrKGxvY2sp CWRvIHsgfSB3aGlsZSgwKQ0KKyNkZWZpbmUgX3Jhd193cml0ZV9sb2NrKGxv Y2spCSh2b2lkKShsb2NrKSAvKiBOb3QgInVudXNlZCB2YXJpYWJsZSIuICov DQorI2RlZmluZSBfcmF3X3dyaXRlX3VubG9jayhsb2NrKQlkbyB7IH0gd2hp bGUoMCkNCiANCiAjZW5kaWYgLyogIVNNUCAqLw0KKw0KKyNpZmRlZiBDT05G SUdfUFJFRU1QVA0KKw0KKyNkZWZpbmUgcHJlZW1wdF9nZXRfY291bnQoKSAo Y3VycmVudC0+cHJlZW1wdF9jb3VudCkNCisNCisjZGVmaW5lIHByZWVtcHRf ZGlzYWJsZSgpIFwNCitkbyB7IFwNCisJKytjdXJyZW50LT5wcmVlbXB0X2Nv dW50OyBcDQorCWJhcnJpZXIoKTsgXA0KK30gd2hpbGUgKDApDQorDQorI2Rl ZmluZSBwcmVlbXB0X2VuYWJsZV9ub19yZXNjaGVkKCkgXA0KK2RvIHsgXA0K KwktLWN1cnJlbnQtPnByZWVtcHRfY291bnQ7IFwNCisJYmFycmllcigpOyBc DQorfSB3aGlsZSAoMCkNCisNCisjZGVmaW5lIHByZWVtcHRfZW5hYmxlKCkg XA0KK2RvIHsgXA0KKwktLWN1cnJlbnQtPnByZWVtcHRfY291bnQ7IFwNCisJ YmFycmllcigpOyBcDQorCWlmICh1bmxpa2VseShjdXJyZW50LT5wcmVlbXB0 X2NvdW50IDwgY3VycmVudC0+bmVlZF9yZXNjaGVkKSkgXA0KKwkJcHJlZW1w dF9zY2hlZHVsZSgpOyBcDQorfSB3aGlsZSAoMCkNCisNCisjZGVmaW5lIHNw aW5fbG9jayhsb2NrKQlcDQorZG8geyBcDQorCXByZWVtcHRfZGlzYWJsZSgp OyBcDQorCV9yYXdfc3Bpbl9sb2NrKGxvY2spOyBcDQorfSB3aGlsZSgwKQ0K Kw0KKyNkZWZpbmUgc3Bpbl90cnlsb2NrKGxvY2spCSh7cHJlZW1wdF9kaXNh YmxlKCk7IF9yYXdfc3Bpbl90cnlsb2NrKGxvY2spID8gXA0KKwkJCQkxIDog KHtwcmVlbXB0X2VuYWJsZSgpOyAwO30pO30pDQorI2RlZmluZSBzcGluX3Vu bG9jayhsb2NrKSBcDQorZG8geyBcDQorCV9yYXdfc3Bpbl91bmxvY2sobG9j ayk7IFwNCisJcHJlZW1wdF9lbmFibGUoKTsgXA0KK30gd2hpbGUgKDApDQor DQorI2RlZmluZSByZWFkX2xvY2sobG9jaykJCSh7cHJlZW1wdF9kaXNhYmxl KCk7IF9yYXdfcmVhZF9sb2NrKGxvY2spO30pDQorI2RlZmluZSByZWFkX3Vu bG9jayhsb2NrKQkoe19yYXdfcmVhZF91bmxvY2sobG9jayk7IHByZWVtcHRf ZW5hYmxlKCk7fSkNCisjZGVmaW5lIHdyaXRlX2xvY2sobG9jaykJKHtwcmVl bXB0X2Rpc2FibGUoKTsgX3Jhd193cml0ZV9sb2NrKGxvY2spO30pDQorI2Rl ZmluZSB3cml0ZV91bmxvY2sobG9jaykJKHtfcmF3X3dyaXRlX3VubG9jayhs b2NrKTsgcHJlZW1wdF9lbmFibGUoKTt9KQ0KKyNkZWZpbmUgd3JpdGVfdHJ5 bG9jayhsb2NrKQkoe3ByZWVtcHRfZGlzYWJsZSgpO19yYXdfd3JpdGVfdHJ5 bG9jayhsb2NrKSA/IFwNCisJCQkJMSA6ICh7cHJlZW1wdF9lbmFibGUoKTsg MDt9KTt9KQ0KKw0KKyNlbHNlDQorDQorI2RlZmluZSBwcmVlbXB0X2dldF9j b3VudCgpCSgwKQ0KKyNkZWZpbmUgcHJlZW1wdF9kaXNhYmxlKCkJZG8geyB9 IHdoaWxlICgwKQ0KKyNkZWZpbmUgcHJlZW1wdF9lbmFibGVfbm9fcmVzY2hl ZCgpCWRvIHt9IHdoaWxlKDApDQorI2RlZmluZSBwcmVlbXB0X2VuYWJsZSgp CWRvIHsgfSB3aGlsZSAoMCkNCisNCisjZGVmaW5lIHNwaW5fbG9jayhsb2Nr KQkJX3Jhd19zcGluX2xvY2sobG9jaykNCisjZGVmaW5lIHNwaW5fdHJ5bG9j ayhsb2NrKQlfcmF3X3NwaW5fdHJ5bG9jayhsb2NrKQ0KKyNkZWZpbmUgc3Bp bl91bmxvY2sobG9jaykJX3Jhd19zcGluX3VubG9jayhsb2NrKQ0KKw0KKyNk ZWZpbmUgcmVhZF9sb2NrKGxvY2spCQlfcmF3X3JlYWRfbG9jayhsb2NrKQ0K KyNkZWZpbmUgcmVhZF91bmxvY2sobG9jaykJX3Jhd19yZWFkX3VubG9jayhs b2NrKQ0KKyNkZWZpbmUgd3JpdGVfbG9jayhsb2NrKQlfcmF3X3dyaXRlX2xv Y2sobG9jaykNCisjZGVmaW5lIHdyaXRlX3VubG9jayhsb2NrKQlfcmF3X3dy aXRlX3VubG9jayhsb2NrKQ0KKyNkZWZpbmUgd3JpdGVfdHJ5bG9jayhsb2Nr KQlfcmF3X3dyaXRlX3RyeWxvY2sobG9jaykNCisjZW5kaWYNCiANCiAvKiAi bG9jayBvbiByZWZlcmVuY2UgY291bnQgemVybyIgKi8NCiAjaWZuZGVmIEFU T01JQ19ERUNfQU5EX0xPQ0sNCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAv dXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9pbmNsdWRl L2xpbnV4L3N3YXAuaCBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2luY2x1ZGUv bGludXgvc3dhcC5oDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2luY2x1 ZGUvbGludXgvc3dhcC5oCVR1ZSBNYXkgMTQgMTQ6NTk6MjAgMjAwMg0KKysr IGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvaW5jbHVkZS9saW51eC9zd2FwLmgJ VHVlIE1heSAxNCAxNjo0OTo1OCAyMDAyDQpAQCAtOTAsNiArOTAsNyBAQA0K IGV4dGVybiBpbnQgbnJfaW5hY3RpdmVfY2xlYW5fcGFnZXM7DQogZXh0ZXJu IGF0b21pY190IHBhZ2VfY2FjaGVfc2l6ZTsNCiBleHRlcm4gYXRvbWljX3Qg YnVmZmVybWVtX3BhZ2VzOw0KK2V4dGVybiBhdG9taWNfdCBucl9pb3dhaXRf dGFza3M7DQogZXh0ZXJuIHNwaW5sb2NrX2NhY2hlbGluZV90IHBhZ2VjYWNo ZV9sb2NrX2NhY2hlbGluZTsNCiAjZGVmaW5lIHBhZ2VjYWNoZV9sb2NrIChw YWdlY2FjaGVfbG9ja19jYWNoZWxpbmUubG9jaykNCiBleHRlcm4gdm9pZCBf X3JlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOw0KZGlmZiAtdSAt ciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5 LXByZTgtYWMzL2luY2x1ZGUvbGludXgvdHF1ZXVlLmggbGludXgtMi40LjE5 LXByZTgtYWMzcC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oDQotLS0gbGludXgt Mi40LjE5LXByZTgtYWMzL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgJVHVlIE1h eSAxNCAxNDo1OToyMCAyMDAyDQorKysgbGludXgtMi40LjE5LXByZTgtYWMz cC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oCVR1ZSBNYXkgMTQgMTU6MjA6MjUg MjAwMg0KQEAgLTk0LDYgKzk0LDIyIEBADQogZXh0ZXJuIHNwaW5sb2NrX3Qg dHF1ZXVlX2xvY2s7DQogDQogLyoNCisgKiBDYWxsIGFsbCAiYm90dG9tIGhh bGZzIiBvbiBhIGdpdmVuIGxpc3QuDQorICovDQorDQorZXh0ZXJuIHZvaWQg X19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsNCisNCitzdGF0 aWMgaW5saW5lIHZvaWQgcnVuX3Rhc2tfcXVldWUodGFza19xdWV1ZSAqbGlz dCkNCit7DQorCWlmIChUUV9BQ1RJVkUoKmxpc3QpKQ0KKwkJX19ydW5fdGFz a19xdWV1ZShsaXN0KTsNCit9DQorDQorI2VuZGlmIC8qIF9MSU5VWF9UUVVF VUVfSCAqLw0KKw0KKyNpZiAhZGVmaW5lZChfTElOVVhfVFFVRVVFX0hfSU5M SU5FUykgJiYgZGVmaW5lZChfVEFTS19TVFJVQ1RfREVGSU5FRCkNCisjZGVm aW5lIF9MSU5VWF9UUVVFVUVfSF9JTkxJTkVTDQorLyoNCiAgKiBRdWV1ZSBh IHRhc2sgb24gYSB0cS4gIFJldHVybiBub24temVybyBpZiBpdCB3YXMgc3Vj Y2Vzc2Z1bGx5DQogICogYWRkZWQuDQogICovDQpAQCAtMTA5LDE3ICsxMjUs NCBAQA0KIAl9DQogCXJldHVybiByZXQ7DQogfQ0KLQ0KLS8qDQotICogQ2Fs bCBhbGwgImJvdHRvbSBoYWxmcyIgb24gYSBnaXZlbiBsaXN0Lg0KLSAqLw0K LQ0KLWV4dGVybiB2b2lkIF9fcnVuX3Rhc2tfcXVldWUodGFza19xdWV1ZSAq bGlzdCk7DQotDQotc3RhdGljIGlubGluZSB2b2lkIHJ1bl90YXNrX3F1ZXVl KHRhc2tfcXVldWUgKmxpc3QpDQotew0KLQlpZiAoVFFfQUNUSVZFKCpsaXN0 KSkNCi0JCV9fcnVuX3Rhc2tfcXVldWUobGlzdCk7DQotfQ0KLQ0KLSNlbmRp ZiAvKiBfTElOVVhfVFFVRVVFX0ggKi8NCisjZW5kaWYNCmRpZmYgLXUgLXIg LS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1w cmU4LWFjMy9rZXJuZWwvZXhpdC5jIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3Av a2VybmVsL2V4aXQuYw0KLS0tIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9rZXJu ZWwvZXhpdC5jCVR1ZSBNYXkgMTQgMTQ6NTk6MjAgMjAwMg0KKysrIGxpbnV4 LTIuNC4xOS1wcmU4LWFjM3Ava2VybmVsL2V4aXQuYwlUdWUgTWF5IDE0IDE1 OjA5OjE4IDIwMDINCkBAIC0zNzMsOCArMzczLDggQEANCiAJCS8qIG1vcmUg YSBtZW1vcnkgYmFycmllciB0aGFuIGEgcmVhbCBsb2NrICovDQogCQl0YXNr X2xvY2sodHNrKTsNCiAJCXRzay0+bW0gPSBOVUxMOw0KLQkJdGFza191bmxv Y2sodHNrKTsNCiAJCWVudGVyX2xhenlfdGxiKG1tLCBjdXJyZW50LCBzbXBf cHJvY2Vzc29yX2lkKCkpOw0KKwkJdGFza191bmxvY2sodHNrKTsNCiAJCW1t cHV0KG1tKTsNCiAJfQ0KIH0NCkBAIC00OTQsNiArNDk0LDExIEBADQogCQlw YW5pYygiQXR0ZW1wdGVkIHRvIGtpbGwgaW5pdCEiKTsNCiAJdHNrLT5mbGFn cyB8PSBQRl9FWElUSU5HOw0KIAlkZWxfdGltZXJfc3luYygmdHNrLT5yZWFs X3RpbWVyKTsNCisNCisJaWYgKHVubGlrZWx5KHByZWVtcHRfZ2V0X2NvdW50 KCkpKQ0KKwkJcHJpbnRrKEtFUk5fRVJSICIlc1slZF0gZXhpdGVkIHdpdGgg cHJlZW1wdF9jb3VudCAlZFxuIiwNCisJCQkJY3VycmVudC0+Y29tbSwgY3Vy cmVudC0+cGlkLA0KKwkJCQlwcmVlbXB0X2dldF9jb3VudCgpKTsNCiANCiBm YWtlX3ZvbGF0aWxlOg0KICNpZmRlZiBDT05GSUdfQlNEX1BST0NFU1NfQUND VA0KZGlmZiAtdSAtciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUg bGludXgtMi40LjE5LXByZTgtYWMzL2tlcm5lbC9mb3JrLmMgbGludXgtMi40 LjE5LXByZTgtYWMzcC9rZXJuZWwvZm9yay5jDQotLS0gbGludXgtMi40LjE5 LXByZTgtYWMzL2tlcm5lbC9mb3JrLmMJVHVlIE1heSAxNCAxNDo1OToyMCAy MDAyDQorKysgbGludXgtMi40LjE5LXByZTgtYWMzcC9rZXJuZWwvZm9yay5j CVR1ZSBNYXkgMTQgMTU6MDk6MTggMjAwMg0KQEAgLTY0MCw2ICs2NDAsMTMg QEANCiAJaWYgKHAtPmJpbmZtdCAmJiBwLT5iaW5mbXQtPm1vZHVsZSkNCiAJ CV9fTU9EX0lOQ19VU0VfQ09VTlQocC0+YmluZm10LT5tb2R1bGUpOw0KIA0K KyNpZmRlZiBDT05GSUdfUFJFRU1QVA0KKwkvKg0KKwkgKiBzY2hlZHVsZV90 YWlsIGRyb3BzIHRoaXNfcnEoKS0+bG9jayBzbyBjb21wZW5zYXRlIHdpdGgg YSBjb3VudA0KKwkgKiBvZiAxLiAgQWxzbywgd2Ugd2FudCB0byBzdGFydCB3 aXRoIGtlcm5lbCBwcmVlbXB0aW9uIGRpc2FibGVkLg0KKwkgKi8NCisJcC0+ cHJlZW1wdF9jb3VudCA9IDE7DQorI2VuZGlmDQogCXAtPmRpZF9leGVjID0g MDsNCiAJcC0+c3dhcHBhYmxlID0gMDsNCiAJcC0+c3RhdGUgPSBUQVNLX1VO SU5URVJSVVBUSUJMRTsNCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAvdXNy L3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9rZXJuZWwva3N5 bXMuYyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2tlcm5lbC9rc3ltcy5jDQot LS0gbGludXgtMi40LjE5LXByZTgtYWMzL2tlcm5lbC9rc3ltcy5jCVR1ZSBN YXkgMTQgMTQ6NTk6MjAgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFj M3Ava2VybmVsL2tzeW1zLmMJVHVlIE1heSAxNCAxNTowOToxOCAyMDAyDQpA QCAtNDQyLDYgKzQ0Miw5IEBADQogRVhQT1JUX1NZTUJPTChpbnRlcnJ1cHRp YmxlX3NsZWVwX29uKTsNCiBFWFBPUlRfU1lNQk9MKGludGVycnVwdGlibGVf c2xlZXBfb25fdGltZW91dCk7DQogRVhQT1JUX1NZTUJPTChzY2hlZHVsZSk7 DQorI2lmZGVmIENPTkZJR19QUkVFTVBUDQorRVhQT1JUX1NZTUJPTChwcmVl bXB0X3NjaGVkdWxlKTsNCisjZW5kaWYNCiBFWFBPUlRfU1lNQk9MKHNjaGVk dWxlX3RpbWVvdXQpOw0KIEVYUE9SVF9TWU1CT0woc3lzX3NjaGVkX3lpZWxk KTsNCiBFWFBPUlRfU1lNQk9MKHNldF91c2VyX25pY2UpOw0KZGlmZiAtdSAt ciAtLW5ldy1maWxlIC1YIC91c3Ivc3JjL2V4Y2x1ZGUgbGludXgtMi40LjE5 LXByZTgtYWMzL2tlcm5lbC9zY2hlZC5jIGxpbnV4LTIuNC4xOS1wcmU4LWFj M3Ava2VybmVsL3NjaGVkLmMNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMv a2VybmVsL3NjaGVkLmMJVHVlIE1heSAxNCAxNDo1OToyMCAyMDAyDQorKysg bGludXgtMi40LjE5LXByZTgtYWMzcC9rZXJuZWwvc2NoZWQuYwlUdWUgTWF5 IDE0IDE1OjA5OjE4IDIwMDINCkBAIC0xNjUsMTAgKzE2NSwxMiBAQA0KIAlz dHJ1Y3QgcnVucXVldWUgKnJxOw0KIA0KIHJlcGVhdF9sb2NrX3Rhc2s6DQor CXByZWVtcHRfZGlzYWJsZSgpOw0KIAlycSA9IHRhc2tfcnEocCk7DQogCXNw aW5fbG9ja19pcnFzYXZlKCZycS0+bG9jaywgKmZsYWdzKTsNCiAJaWYgKHVu bGlrZWx5KHJxICE9IHRhc2tfcnEocCkpKSB7DQogCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZycS0+bG9jaywgKmZsYWdzKTsNCisJCXByZWVtcHRfZW5h YmxlKCk7DQogCQlnb3RvIHJlcGVhdF9sb2NrX3Rhc2s7DQogCX0NCiAJcmV0 dXJuIHJxOw0KQEAgLTE3Nyw2ICsxNzksNyBAQA0KIHN0YXRpYyBpbmxpbmUg dm9pZCB0YXNrX3JxX3VubG9jayhydW5xdWV1ZV90ICpycSwgdW5zaWduZWQg bG9uZyAqZmxhZ3MpDQogew0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZy cS0+bG9jaywgKmZsYWdzKTsNCisJcHJlZW1wdF9lbmFibGUoKTsNCiB9DQog DQogLyoNCkBAIC0yNTcsMTEgKzI2MCwxMyBAQA0KIHsNCiAJaW50IG5lZWRf cmVzY2hlZDsNCiANCisJcHJlZW1wdF9kaXNhYmxlKCk7DQogCW5lZWRfcmVz Y2hlZCA9IHAtPm5lZWRfcmVzY2hlZDsNCiAJd21iKCk7DQogCXNldF90c2tf bmVlZF9yZXNjaGVkKHApOw0KIAlpZiAoIW5lZWRfcmVzY2hlZCAmJiAocC0+ Y3B1ICE9IHNtcF9wcm9jZXNzb3JfaWQoKSkpDQogCQlzbXBfc2VuZF9yZXNj aGVkdWxlKHAtPmNwdSk7DQorCXByZWVtcHRfZW5hYmxlKCk7DQogfQ0KIA0K ICNpZmRlZiBDT05GSUdfU01QDQpAQCAtMjc2LDYgKzI4MSw3IEBADQogCXJ1 bnF1ZXVlX3QgKnJxOw0KIA0KIHJlcGVhdDoNCisJcHJlZW1wdF9kaXNhYmxl KCk7DQogCXJxID0gdGFza19ycShwKTsNCiAJd2hpbGUgKHVubGlrZWx5KHJx LT5jdXJyID09IHApKSB7DQogCQljcHVfcmVsYXgoKTsNCkBAIC0yODQsOSAr MjkwLDExIEBADQogCXJxID0gdGFza19ycV9sb2NrKHAsICZmbGFncyk7DQog CWlmICh1bmxpa2VseShycS0+Y3VyciA9PSBwKSkgew0KIAkJdGFza19ycV91 bmxvY2socnEsICZmbGFncyk7DQorCQlwcmVlbXB0X2VuYWJsZSgpOw0KIAkJ Z290byByZXBlYXQ7DQogCX0NCiAJdGFza19ycV91bmxvY2socnEsICZmbGFn cyk7DQorCXByZWVtcHRfZW5hYmxlKCk7DQogfQ0KIA0KIC8qDQpAQCAtMzQw LDYgKzM0OCw3IEBADQogew0KIAlydW5xdWV1ZV90ICpycTsNCiANCisJcHJl ZW1wdF9kaXNhYmxlKCk7DQogCXJxID0gdGhpc19ycSgpOw0KIAlzcGluX2xv Y2tfaXJxKCZycS0+bG9jayk7DQogDQpAQCAtMzU3LDYgKzM2Niw3IEBADQog CXAtPmNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsNCiAJYWN0aXZhdGVfdGFz ayhwLCBycSk7DQogCXNwaW5fdW5sb2NrX2lycSgmcnEtPmxvY2spOw0KKwlw cmVlbXB0X2VuYWJsZSgpOw0KIH0NCiANCiAvKg0KQEAgLTM4NCw3ICszOTQs NyBAQA0KIAkJCXAtPnNsZWVwX2F2ZykgLyAoRVhJVF9XRUlHSFQgKyAxKTsN CiB9DQogDQotI2lmIENPTkZJR19TTVANCisjaWYgQ09ORklHX1NNUCB8fCBD T05GSUdfUFJFRU1QVA0KIGFzbWxpbmthZ2Ugdm9pZCBzY2hlZHVsZV90YWls KHRhc2tfdCAqcHJldikNCiB7DQogCXNwaW5fdW5sb2NrX2lycSgmdGhpc19y cSgpLT5mcm96ZW4pOw0KQEAgLTczOSw2ICs3NDksNyBAQA0KIAlCVUdfT04o aW5faW50ZXJydXB0KCkpOw0KIA0KIG5lZWRfcmVzY2hlZDoNCisJcHJlZW1w dF9kaXNhYmxlKCk7DQogCXByZXYgPSBjdXJyZW50Ow0KIAlycSA9IHRoaXNf cnEoKTsNCiANCkBAIC03NDYsNiArNzU3LDEzIEBADQogCXByZXYtPnNsZWVw X3RpbWVzdGFtcCA9IGppZmZpZXM7DQogCXNwaW5fbG9ja19pcnEoJnJxLT5s b2NrKTsNCiANCisJLyoNCisJICogaWYgZW50ZXJpbmcgZnJvbSBwcmVlbXB0 X3NjaGVkdWxlLCBvZmYgYSBrZXJuZWwgcHJlZW1wdGlvbiwNCisJICogZ28g c3RyYWlnaHQgdG8gcGlja2luZyB0aGUgbmV4dCB0YXNrLg0KKwkgKi8NCisJ aWYgKHVubGlrZWx5KHByZWVtcHRfZ2V0X2NvdW50KCkgJiBQUkVFTVBUX0FD VElWRSkpDQorCQlnb3RvIHBpY2tfbmV4dF90YXNrOw0KKw0KIAlzd2l0Y2gg KHByZXYtPnN0YXRlKSB7DQogCWNhc2UgVEFTS19JTlRFUlJVUFRJQkxFOg0K IAkJaWYgKHVubGlrZWx5KHNpZ25hbF9wZW5kaW5nKHByZXYpKSkgew0KQEAg LTc1Nyw5ICs3NzUsNyBAQA0KIAljYXNlIFRBU0tfUlVOTklORzoNCiAJCTsN CiAJfQ0KLSNpZiBDT05GSUdfU01QDQogcGlja19uZXh0X3Rhc2s6DQotI2Vu ZGlmDQogCWlmICh1bmxpa2VseSghcnEtPm5yX3J1bm5pbmcpKSB7DQogI2lm IENPTkZJR19TTVANCiAJCWxvYWRfYmFsYW5jZShycSwgMSk7DQpAQCAtODEw LDExICs4MjYsMzAgQEANCiAJfQ0KIA0KIAlyZWFjcXVpcmVfa2VybmVsX2xv Y2soY3VycmVudCk7DQorCXByZWVtcHRfZW5hYmxlX25vX3Jlc2NoZWQoKTsN CiAJaWYgKG5lZWRfcmVzY2hlZCgpKQ0KIAkJZ290byBuZWVkX3Jlc2NoZWQ7 DQogCXJldHVybjsNCiB9DQogDQorI2lmZGVmIENPTkZJR19QUkVFTVBUDQor LyoNCisgKiB0aGlzIGlzIGlzIHRoZSBlbnRyeSBwb2ludCB0byBzY2hlZHVs ZSgpIGZyb20gaW4ta2VybmVsIHByZWVtcHRpb24uDQorKi8NCithc21saW5r YWdlIHZvaWQgcHJlZW1wdF9zY2hlZHVsZSh2b2lkKQ0KK3sNCituZWVkX3Jl c2NoZWQ6DQorCWN1cnJlbnQtPnByZWVtcHRfY291bnQgKz0gUFJFRU1QVF9B Q1RJVkU7DQorCXNjaGVkdWxlKCk7DQorIAljdXJyZW50LT5wcmVlbXB0X2Nv dW50IC09IFBSRUVNUFRfQUNUSVZFOw0KKw0KKwkvKiB3ZSBjb3VsZCBtaXNz IGEgcHJlZW1wdGlvbiBiZXR3ZWVuIHNjaGVkdWxlKCkgYW5kIG5vdyAqLw0K KyAJYmFycmllcigpOw0KKwlpZiAodW5saWtlbHkoKGN1cnJlbnQtPm5lZWRf cmVzY2hlZCkpKQ0KKwkJZ290byBuZWVkX3Jlc2NoZWQ7DQorfQ0KKyNlbmRp ZiAvKiBDT05GSUdfUFJFRU1QICovDQorDQogLyoNCiAgKiBUaGUgY29yZSB3 YWtldXAgZnVuY3Rpb24uICBOb24tZXhjbHVzaXZlIHdha2V1cHMgKG5yX2V4 Y2x1c2l2ZSA9PSAwKSBqdXN0DQogICogd2FrZSBldmVyeXRoaW5nIHVwLiAg SWYgaXQncyBhbiBleGNsdXNpdmUgd2FrZXVwIChucl9leGNsdXNpdmUgPT0g c21hbGwgK3ZlDQpAQCAtMTE5Miw2ICsxMjI3LDcgQEANCiAJcnVucXVldWVf dCAqcnE7DQogCXByaW9fYXJyYXlfdCAqYXJyYXk7DQogDQorCXByZWVtcHRf ZGlzYWJsZSgpOw0KIAlycSA9IHRoaXNfcnEoKTsNCiANCiAJLyoNCkBAIC0x MjIwLDYgKzEyNTYsNyBAQA0KIAkJX19zZXRfYml0KGN1cnJlbnQtPnByaW8s IGFycmF5LT5iaXRtYXApOw0KIAl9DQogCXNwaW5fdW5sb2NrKCZycS0+bG9j ayk7DQorCXByZWVtcHRfZW5hYmxlX25vX3Jlc2NoZWQoKTsNCiANCiAJc2No ZWR1bGUoKTsNCiANCkBAIC0xNDI0LDYgKzE0NjEsOSBAQA0KIAlkb3VibGVf cnFfdW5sb2NrKGlkbGVfcnEsIHJxKTsNCiAJc2V0X3Rza19uZWVkX3Jlc2No ZWQoaWRsZSk7DQogCV9fcmVzdG9yZV9mbGFncyhmbGFncyk7DQorDQorCS8q IFNldCB0aGUgcHJlZW1wdCBjb3VudCBfb3V0c2lkZV8gdGhlIHNwaW5sb2Nr cyEgKi8NCisJaWRsZS0+cHJlZW1wdF9jb3VudCA9IChpZGxlLT5sb2NrX2Rl cHRoID49IDApOw0KIH0NCiANCiBleHRlcm4gdm9pZCBpbml0X3RpbWVydmVj cyh2b2lkKTsNCkBAIC0xNTIwLDYgKzE1NjAsNyBAQA0KIAlpZiAoIW5ld19t YXNrKQ0KIAkJQlVHKCk7DQogDQorCXByZWVtcHRfZGlzYWJsZSgpOw0KIAly cSA9IHRhc2tfcnFfbG9jayhwLCAmZmxhZ3MpOw0KIAlwLT5jcHVzX2FsbG93 ZWQgPSBuZXdfbWFzazsNCiAJLyoNCkBAIC0xNTI4LDcgKzE1NjksNyBAQA0K IAkgKi8NCiAJaWYgKG5ld19tYXNrICYgKDFVTCA8PCBwLT5jcHUpKSB7DQog CQl0YXNrX3JxX3VubG9jayhycSwgJmZsYWdzKTsNCi0JCXJldHVybjsNCisJ CWdvdG8gb3V0Ow0KIAl9DQogDQogCWluaXRfTVVURVhfTE9DS0VEKCZyZXEu c2VtKTsNCkBAIC0xNTM4LDYgKzE1NzksOCBAQA0KIAl3YWtlX3VwX3Byb2Nl c3MocnEtPm1pZ3JhdGlvbl90aHJlYWQpOw0KIA0KIAlkb3duKCZyZXEuc2Vt KTsNCitvdXQ6DQorCXByZWVtcHRfZW5hYmxlKCk7DQogfQ0KIA0KIHN0YXRp YyBpbnQgbWlncmF0aW9uX3RocmVhZCh2b2lkICogYmluZF9jcHUpDQpAQCAt MTU5MiwxOCArMTYzNSwxOCBAQA0KIAkJY3B1X2Rlc3QgPSBfX2ZmcyhwLT5j cHVzX2FsbG93ZWQpOw0KIAkJcnFfZGVzdCA9IGNwdV9ycShjcHVfZGVzdCk7 DQogcmVwZWF0Og0KLQkJY3B1X3NyYyA9IHAtPnRocmVhZF9pbmZvLT5jcHU7 DQorCQljcHVfc3JjID0gcC0+Y3B1Ow0KIAkJcnFfc3JjID0gY3B1X3JxKGNw dV9zcmMpOw0KIA0KIAkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOw0KIAkJZG91 YmxlX3JxX2xvY2socnFfc3JjLCBycV9kZXN0KTsNCi0JCWlmIChwLT50aHJl YWRfaW5mby0+Y3B1ICE9IGNwdV9zcmMpIHsNCisJCWlmIChwLT5jcHUgIT0g Y3B1X3NyYykgew0KIAkJCWRvdWJsZV9ycV91bmxvY2socnFfc3JjLCBycV9k ZXN0KTsNCiAJCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7DQogCQkJZ290 byByZXBlYXQ7DQogCQl9DQogCQlpZiAocnFfc3JjID09IHJxKSB7DQotCQkJ cC0+dGhyZWFkX2luZm8tPmNwdSA9IGNwdV9kZXN0Ow0KKwkJCXAtPmNwdSA9 IGNwdV9kZXN0Ow0KIAkJCWlmIChwLT5hcnJheSkgew0KIAkJCQlkZWFjdGl2 YXRlX3Rhc2socCwgcnFfc3JjKTsNCiAJCQkJYWN0aXZhdGVfdGFzayhwLCBy cV9kZXN0KTsNCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9l eGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9rZXJuZWwvdGltZXIuYyBs aW51eC0yLjQuMTktcHJlOC1hYzNwL2tlcm5lbC90aW1lci5jDQotLS0gbGlu dXgtMi40LjE5LXByZTgtYWMzL2tlcm5lbC90aW1lci5jCVR1ZSBNYXkgMTQg MTQ6NTk6MjAgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3Ava2Vy bmVsL3RpbWVyLmMJVHVlIE1heSAxNCAxODo0Mjo0NiAyMDAyDQpAQCAtNTg1 LDYgKzU4NSw4IEBADQogew0KIAlwLT5wZXJfY3B1X3V0aW1lW2NwdV0gKz0g dXNlcjsNCiAJcC0+cGVyX2NwdV9zdGltZVtjcHVdICs9IHN5c3RlbTsNCisJ aWYgKGF0b21pY19yZWFkKCZucl9pb3dhaXRfdGFza3MpID4gMCkNCisJCWtz dGF0LnBlcl9jcHVfaW93YWl0W2NwdV0gKz0gc3lzdGVtOw0KIAlkb19wcm9j ZXNzX3RpbWVzKHAsIHVzZXIsIHN5c3RlbSk7DQogCWRvX2l0X3ZpcnQocCwg dXNlcik7DQogCWRvX2l0X3Byb2YocCk7DQpkaWZmIC11IC1yIC0tbmV3LWZp bGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMv bGliL2RlY19hbmRfbG9jay5jIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvbGli L2RlY19hbmRfbG9jay5jDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL2xp Yi9kZWNfYW5kX2xvY2suYwlXZWQgT2N0ICAzIDEyOjExOjI2IDIwMDENCisr KyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL2xpYi9kZWNfYW5kX2xvY2suYwlU dWUgTWF5IDE0IDE1OjA5OjE4IDIwMDINCkBAIC0xLDUgKzEsNiBAQA0KICNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCiAjaW5jbHVkZSA8bGludXgvc3Bp bmxvY2suaD4NCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4NCiAjaW5jbHVk ZSA8YXNtL2F0b21pYy5oPg0KIA0KIC8qDQpkaWZmIC11IC1yIC0tbmV3LWZp bGUgLVggL3Vzci9zcmMvZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMv bW0vZmlsZW1hcC5jIGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvbW0vZmlsZW1h cC5jDQotLS0gbGludXgtMi40LjE5LXByZTgtYWMzL21tL2ZpbGVtYXAuYwlU dWUgTWF5IDE0IDE0OjU5OjIwIDIwMDINCisrKyBsaW51eC0yLjQuMTktcHJl OC1hYzNwL21tL2ZpbGVtYXAuYwlUdWUgTWF5IDE0IDE3OjAxOjI3IDIwMDIN CkBAIC00NSw2ICs0NSw3IEBADQogICovDQogDQogYXRvbWljX3QgcGFnZV9j YWNoZV9zaXplID0gQVRPTUlDX0lOSVQoMCk7DQorYXRvbWljX3QgbnJfaW93 YWl0X3Rhc2tzID0gQVRPTUlDX0lOSVQoMCk7DQogdW5zaWduZWQgaW50IHBh Z2VfaGFzaF9iaXRzOw0KIHN0cnVjdCBwYWdlICoqcGFnZV9oYXNoX3RhYmxl Ow0KIA0KQEAgLTgyOCw4ICs4MjksMTAgQEANCiAJCXNldF90YXNrX3N0YXRl KHRzaywgVEFTS19VTklOVEVSUlVQVElCTEUpOw0KIAkJaWYgKCFQYWdlTG9j a2VkKHBhZ2UpKQ0KIAkJCWJyZWFrOw0KKwkJYXRvbWljX2luYygmbnJfaW93 YWl0X3Rhc2tzKTsNCiAJCXN5bmNfcGFnZShwYWdlKTsNCiAJCXNjaGVkdWxl KCk7DQorCQlhdG9taWNfZGVjKCZucl9pb3dhaXRfdGFza3MpOw0KIAl9IHdo aWxlIChQYWdlTG9ja2VkKHBhZ2UpKTsNCiAJX19zZXRfdGFza19zdGF0ZSh0 c2ssIFRBU0tfUlVOTklORyk7DQogCXJlbW92ZV93YWl0X3F1ZXVlKHdhaXRx dWV1ZSwgJndhaXQpOw0KQEAgLTg3NSw4ICs4NzgsMTAgQEANCiAJZm9yICg7 Oykgew0KIAkJc2V0X3Rhc2tfc3RhdGUodHNrLCBUQVNLX1VOSU5URVJSVVBU SUJMRSk7DQogCQlpZiAoUGFnZUxvY2tlZChwYWdlKSkgew0KKwkJCWF0b21p Y19pbmMoJm5yX2lvd2FpdF90YXNrcyk7DQogCQkJc3luY19wYWdlKHBhZ2Up Ow0KIAkJCXNjaGVkdWxlKCk7DQorCQkJYXRvbWljX2RlYygmbnJfaW93YWl0 X3Rhc2tzKTsNCiAJCX0NCiAJCWlmICghVHJ5TG9ja1BhZ2UocGFnZSkpDQog CQkJYnJlYWs7DQpkaWZmIC11IC1yIC0tbmV3LWZpbGUgLVggL3Vzci9zcmMv ZXhjbHVkZSBsaW51eC0yLjQuMTktcHJlOC1hYzMvbW0vc2xhYi5jIGxpbnV4 LTIuNC4xOS1wcmU4LWFjM3AvbW0vc2xhYi5jDQotLS0gbGludXgtMi40LjE5 LXByZTgtYWMzL21tL3NsYWIuYwlUdWUgTWF5IDE0IDE0OjU5OjIwIDIwMDIN CisrKyBsaW51eC0yLjQuMTktcHJlOC1hYzNwL21tL3NsYWIuYwlUdWUgTWF5 IDE0IDE1OjA5OjE4IDIwMDINCkBAIC00OSw3ICs0OSw4IEBADQogICogIGNv bnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIGNhbGxlZCB3aXRob3V0 IGFueSBsb2NraW5nLg0KICAqICBTZXZlcmFsIG1lbWJlcnMgaW4ga21lbV9j YWNoZV90IGFuZCBzbGFiX3QgbmV2ZXIgY2hhbmdlLCB0aGV5DQogICoJYXJl IGFjY2Vzc2VkIHdpdGhvdXQgYW55IGxvY2tpbmcuDQotICogIFRoZSBwZXIt Y3B1IGFycmF5cyBhcmUgbmV2ZXIgYWNjZXNzZWQgZnJvbSB0aGUgd3Jvbmcg Y3B1LCBubyBsb2NraW5nLg0KKyAqICBUaGUgcGVyLWNwdSBhcnJheXMgYXJl IG5ldmVyIGFjY2Vzc2VkIGZyb20gdGhlIHdyb25nIGNwdSwgbm8gbG9ja2lu ZywNCisgKiAgCWFuZCBsb2NhbCBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCBz byBzbGFiIGNvZGUgaXMgcHJlZW1wdC1zYWZlLg0KICAqICBUaGUgbm9uLWNv bnN0YW50IG1lbWJlcnMgYXJlIHByb3RlY3RlZCB3aXRoIGEgcGVyLWNhY2hl IGlycSBzcGlubG9jay4NCiAgKg0KICAqIEZ1cnRoZXIgbm90ZXMgZnJvbSB0 aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbjoNCmRpZmYgLXUgLXIgLS1uZXct ZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRlIGxpbnV4LTIuNC4xOS1wcmU4LWFj My9uZXQvc29ja2V0LmMgbGludXgtMi40LjE5LXByZTgtYWMzcC9uZXQvc29j a2V0LmMNCi0tLSBsaW51eC0yLjQuMTktcHJlOC1hYzMvbmV0L3NvY2tldC5j CVR1ZSBNYXkgMTQgMTQ6NTk6MjAgMjAwMg0KKysrIGxpbnV4LTIuNC4xOS1w cmU4LWFjM3AvbmV0L3NvY2tldC5jCVR1ZSBNYXkgMTQgMTU6MDk6MTggMjAw Mg0KQEAgLTEzMiw3ICsxMzIsNyBAQA0KIA0KIHN0YXRpYyBzdHJ1Y3QgbmV0 X3Byb3RvX2ZhbWlseSAqbmV0X2ZhbWlsaWVzW05QUk9UT107DQogDQotI2lm ZGVmIENPTkZJR19TTVANCisjaWYgZGVmaW5lZChDT05GSUdfU01QKSB8fCBk ZWZpbmVkKENPTkZJR19QUkVFTVBUKQ0KIHN0YXRpYyBhdG9taWNfdCBuZXRf ZmFtaWx5X2xvY2tjdCA9IEFUT01JQ19JTklUKDApOw0KIHN0YXRpYyBzcGlu bG9ja190IG5ldF9mYW1pbHlfbG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRDsN CiANCmRpZmYgLXUgLXIgLS1uZXctZmlsZSAtWCAvdXNyL3NyYy9leGNsdWRl IGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9uZXQvc3VucnBjL3BtYXBfY2xudC5j IGxpbnV4LTIuNC4xOS1wcmU4LWFjM3AvbmV0L3N1bnJwYy9wbWFwX2NsbnQu Yw0KLS0tIGxpbnV4LTIuNC4xOS1wcmU4LWFjMy9uZXQvc3VucnBjL3BtYXBf Y2xudC5jCVR1ZSBNYXkgMTQgMTQ6NTY6MDIgMjAwMg0KKysrIGxpbnV4LTIu NC4xOS1wcmU4LWFjM3AvbmV0L3N1bnJwYy9wbWFwX2NsbnQuYwlUdWUgTWF5 IDE0IDE1OjA5OjE4IDIwMDINCkBAIC0xMiw2ICsxMiw3IEBADQogI2luY2x1 ZGUgPGxpbnV4L2NvbmZpZy5oPg0KICNpbmNsdWRlIDxsaW51eC90eXBlcy5o Pg0KICNpbmNsdWRlIDxsaW51eC9zb2NrZXQuaD4NCisjaW5jbHVkZSA8bGlu dXgvc2NoZWQuaD4NCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQogI2lu Y2x1ZGUgPGxpbnV4L2Vycm5vLmg+DQogI2luY2x1ZGUgPGxpbnV4L3Vpby5o Pg0K --1170656797-477606187-1021473593=:4801-- - 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/