x86-a-like processor support (patch against 2.1.35)

Mike Jagdis (mike@roan.co.uk)
Wed, 23 Apr 1997 11:56:13 +0100 (GMT/BST)


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.

--279709697-620127371-861792973=:25693
Content-Type: TEXT/PLAIN; charset=US-ASCII

WARNING: This is semi-*ALPHA*

Attached is the latest version of my old definitive cyrix patch
against the 2.1.35 kernel. All known bugs have been fixed, the
(mis?)"features" are config options (read Documentation/Cyrix
and the config help!) and the config questions have been slightly
reordered to be more sensible (IMHO).

The alpha bit is related to the new support for Cyrix M2 and
AMD K5/6 recognition. M2 support should be perfectly safe even
if wrong - it will be tested as soon as someone sends me an
M2 machine (yeah right...). AMD K5/K6 support uses the extended
AMD cpuid ops. If this is wrong it will _only_ be a problem
when reading /proc/cpuinfo so boot single user, cat /proc/cpuinfo
and see what happens...

If you have an M2, K5 or K6 please let me know if it works!

Oh yeah, the Cx486 recognition should get closer to reality
and the Cyrix Gx86 (aka MediaGX) should be recognised as such.

Oh yeah (2), there is a new config option that removes the
Cyrix processor induced delays on I/O instructions. We _shouldn't_
need them because we use dummy I/O to get delays where necessary.
Let someone know if drivers start to fail with this option enabled.

Oh yeah (3), I changed some fields in /proc/cpuinfo. "cpu" becomes
"cpu family" and the value is a single digit without the trailing
"86" added. This agrees with how the CPU vendors refer to the
family data these days. "cpuid" becomes "cpuid level" and the value
gives the highest cpuid code supported (excluding such things as
AMD extensions) or -1 if cpuid is not supported. These changes
may break things that parse /proc/cpuinfo but I don't know of
anything that does at the moment. Touch wood...

Mike

-- 
.----------------------------------------------------------------------.
|  Mike Jagdis                  |  Internet:  mailto:mike@roan.co.uk   |
|  Roan Technology Ltd.         |                                      |
|  54A Peach Street, Wokingham  |  Telephone:  +44 118 989 0403        |
|  RG40 1XG, ENGLAND            |  Fax:        +44 118 989 1195        |
`----------------------------------------------------------------------'

--279709697-620127371-861792973=:25693 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="cy2135.pch" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.3.91.970423115613.25693B@toaster.roan.co.uk> Content-Description: x86-a-like processor support

SW5kZXg6IERvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHANCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvdXNyL0NWUy9saW51eC9Eb2N1 bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwLHYNCnJldHJpZXZpbmcgcmV2aXNp b24gMS4xLjIuMzANCmRpZmYgLXUgLXUgLXIxLjEuMi4zMCBDb25maWd1cmUu aGVscA0KLS0tIENvbmZpZ3VyZS5oZWxwCTE5OTcvMDQvMTYgMjA6NTI6MTAJ MS4xLjIuMzANCisrKyBDb25maWd1cmUuaGVscAkxOTk3LzA0LzE4IDIyOjQ4 OjEwDQpAQCAtNzk0LDExICs3OTQsMTEgQEANCiAgIHdpbGwgYmUgY2FsbGVk IGJpbmZtdF9qYXZhLm8uIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gYW5z d2VyIGF0DQogICB0aGlzIHBvaW50IHRoZW4gYW5zd2VyIFkuDQogDQotUHJv Y2Vzc29yIHR5cGUNCitQcm9jZXNzb3IgZmFtaWx5DQogQ09ORklHX00zODYN CiAgIFRoaXMgaXMgdGhlIHByb2Nlc3NvciB0eXBlIG9mIHlvdXIgQ1BVLiBU aGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yDQogICBvcHRpbWl6aW5nIHB1 cnBvc2VzLiBJbiBvcmRlciB0byBjb21waWxlIGEga2VybmVsIHRoYXQgY2Fu IHJ1biBvbg0KLSAgYWxsIEludGVsIENQVSB0eXBlcyAoYWxiZWl0IG5vdCBv cHRpbWFsbHkgZmFzdCksIHlvdSBjYW4gc3BlY2lmeQ0KKyAgYWxsIHg4NiBD UFUgdHlwZXMgKGFsYmVpdCBub3Qgb3B0aW1hbGx5IGZhc3QpLCB5b3UgY2Fu IHNwZWNpZnkNCiAgICIzODYiIGhlcmUuICBJZiB5b3Ugc3BlY2lmeSBvbmUg b2YgIjQ4NiIgb3IgIlBlbnRpdW0iIG9yICJQUHJvIiwNCiAgIHRoZW4gdGhl IGtlcm5lbCB3aWxsIHJ1biBvbiBhbGwgb2YgdGhlc2UgQ1BVczogNDg2IGFu ZCBQZW50aXVtDQogICAoPTU4NikgYW5kIFBlbnRpdW0gUHJvICg9Njg2KS4g SW4gcmFyZSBjYXNlcywgaXQgY2FuIG1ha2Ugc2Vuc2UgdG8NCkBAIC00ODIw LDYgKzQ4MjAsODEgQEANCiAgIGNhbGxlZCBBUDEwMDArLiBGb3IgZGV0YWls cyBvbiBvdXIgZWZmb3J0cyB0byBwb3J0IExpbnV4IHRvIHRoaXMNCiAgIG1h Y2hpbmUgc2VlIGh0dHA6Ly9jYXAuYW51LmVkdS5hdS9jYXAvcHJvamVjdHMv bGludXggb3IgbWFpbCB0bw0KICAgaGFja2Vyc0BjYWZlLmFudS5lZHUuYXUN CisNCitTdXBwb3J0IGZvciBDeXJpeCBwcm9jZXNzb3JzDQorQ09ORklHX0NZ UklYDQorICBUaGlzIGVuYWJsZXMgcmVjb2duaXRpb24gb2YgQ3lyaXggcHJv Y2Vzc29ycy4gV2l0aG91dCBpdA0KKyAgL3Byb2MvY3B1aW5mbyB3aWxsIGxp c3QgeW91ciBwcm9jZXNzb3IgYXMgYW4gdW5rbm93biBtb2RlbA0KKyAgb2Yg Q3lyaXguIFdpdGggaXQgaXQgd2lsbCBsaXN0IHRoZSBjb3JyZWN0IGRldGFp bHMuIEl0IHNob3VsZA0KKyAgYmUgc2FmZSB0byBzYXkgWSBoZXJlIHJlZ2Fy ZGxlc3Mgb2Ygd2hhdCBwcm9jZXNzb3IgeW91IGFyZQ0KKyAgYWN0dWFsbHkg dXNpbmcuIElmIHRoaXMgb3B0aW9uIGlzIG5vdCBlbmFibGVkIG5vbmUgb2Yg dGhlDQorICBDeXJpeCBmZWF0dXJlIG9wdGlvbnMgYXJlIGF2YWlsYWJsZS4N CisNCitFbmFibGUgc3VzcGVuZCBvbiBoYWx0IHBvd2VyIHNhdmluZyBmZWF0 dXJlDQorQ09ORklHX0NZUklYX1NVU1BfSExUDQorICBTdXNwZW5kIG9uIGhh bHQgY2F1c2VzIHRoZSBwcm9jZXNzb3IgdG8gZW50ZXIgYSBsb3cgcG93ZXIg c3RhdGUNCisgIHdoZW4gdGhlICJobHQiIGluc3RydWN0aW9uIGlzIGV4ZWN1 dGVkLiBUaGlzIGlzIGRpc2FibGVkIGF0DQorICBwb3dlciB1cCBhbmQgbWFu eSBCSU9TcyBsZWF2ZSBpdCB0aGF0IHdheS4gWW91IHByb2JhYmx5IHdhbnQg aXQNCisgIGVuYWJsZWQgc2luY2UgaXQgZHJhbWF0aWNhbGx5IHJlZHVjZXMg dGhlIG9wZXJhdGluZyB0ZW1wZXJhdHVyZQ0KKyAgb2YgdGhlIHByb2Nlc3Nv ci4gSW4gYSBmZXcgcmFyZSBjYXNlcyB0aGVyZSBtYXkgYmUgcHJvYmxlbXMN CisgIHdpdGggc29tZSBidXMgbWFzdGVyIERNQSBjYXJkcyBpZiB0aGlzIGlz IGVuYWJsZWQuDQorDQorTm8gSS9PIHJlY292ZXJ5IGRlbGF5cw0KK0NPTkZJ R19DWVJJWF9GQVNUX0lPDQorICBIaXN0b3JpY2FsbHkgcHJvZ3JhbW1lcnMg dXNlZCAiam1wICQrMiIgaW5zdHJ1Y3Rpb25zIHRvIGNyZWF0ZQ0KKyAgZGVs YXlzIGJldHdlZW4gSS9PIGluc3RydWN0aW9ucy4gVGhlIGJyYW5jaCBwcmVk aWN0aW9uIG9mIDV4ODYNCisgIGFuZCBoaWdoZXIgcHJvY2Vzc29ycyByZW5k ZXJzIHRoaXMgaW5lZmZlY3RpdmUgYW5kIHNvIGEgc2VsZWN0YWJsZQ0KKyAg ZGVsYXkgaXMgaW1wbGVtZW50ZWQgZm9yIEkvTyBpbnN0cnVjdGlvbnMgaW4g dGhlIHByb2Nlc3Nvci4gTGludXgNCisgIHVzZXMgZHVtbXkgSS9PIGluc3Ry dWN0aW9ucyB3aGVyZSBuZWNlc3NhcnkgcmF0aGVyIHRoYW4ganVtcHMNCisg IGFuZCBzbyB0aGUgZXh0cmEgcHJvY2Vzc29yIGltcG9zZWQgZGVsYXkgc2hv dWxkIG5vdCBiZSBuZWNlc3NhcnkuDQorICBFbmFibGluZyB0aGlzIG9wdGlv biByZW1vdmVzIHRoaXMgZGVsYXkuDQorDQorNXg4NiBwZXJmb3JtYW5jZSBm ZWF0dXJlcw0KK0NPTkZJR19DWVJJWF81WDg2DQorICBUaGUgQ3lyaXggNXg4 NiBoYXMgc2V2ZXJhbCBwZXJmb3JtYW5jZSBmZWF0dXJlIHdoaWNoIGFyZSBl bmFibGVkDQorICB1c2luZyBvbi1jaGlwIHJlZ2lzdGVycy4gVGhpcyBjb2Rl IGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IHRoZQ0KKyAgdXNlZnVsIGZlYXR1 cmVzIGFyZSBzZXQgdG8gc3VpdCBMaW51eC4gUmVhZCBEb2N1bWVudGF0aW9u L0N5cml4DQorICBiZWZvcmUgZW5hYmxpbmcgdGhpcy4NCisNCis2eDg2IHBl cmZvcm1hbmNlIGZlYXR1cmVzDQorQ09ORklHX0NZUklYXzZYODYNCisgIFRo ZSBDeXJpeCA2eDg2IGhhcyBzZXZlcmFsIHBlcmZvcm1hbmNlIGZlYXR1cmUg d2hpY2ggYXJlIGVuYWJsZWQNCisgIHVzaW5nIG9uLWNoaXAgcmVnaXN0ZXJz LiBNb3N0IGFyZSBub3JtYWxseSBlbmFibGVkIGJ5IHRoZSBCSU9TDQorICBo b3dldmVyIHRoaXMgY29kZSBlbnN1cmVzIHRoYXQgYWxsIHRoZSB1c2VmdWwg b25lcyBhcmUgc2V0IHRvDQorICBzdWl0IExpbnV4LiBSZWFkIERvY3VtZW50 YXRpb24vQ3lyaXggYmVmb3JlIGVuYWJsaW5nIHRoaXMuDQorDQorQXZvaWQg dW5uZWNlc3NhcnkgbG9ja2VkIGN5Y2xlcw0KK0NPTkZJR19DWVJJWF82WDg2 X05PTE9DSw0KKyAgRW5hYmxpbmcgdGhpcyBvcHRpb24gY2F1c2VzIHRoZSA2 eDg2IG5vdCB0byB1c2UgbG9ja2VkIGJ1cyBjeWNsZXMNCisgIGV4Y2VwdCBm b3IgcGFnZSB0YWJsZSBhY2Nlc3MgYW5kIGludGVycnVwdCBhY2tub3dsZWRn ZSBjeWNsZXMuDQorICBUaGlzIGFsbG93cyB0aGUgZGF0YSB1c2VkIGJ5IGRl c2NyaXB0b3IgdGFibGVzLCB4Y2hnIGluc3RydWN0aW9ucw0KKyAgYW5kIGlu c3RydWN0aW9ucyBwcmVjZWVkZWQgYnkgdGhlIExPQ0sgcHJlZml4IHRvIGJl IGNhY2hlZCBsZWFkaW5nDQorICB0byBpbXByb3ZlZCBwZXJmb3JtYW5jZS4g RW5hYmxpbmcgdGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBpZg0KKyAgYW4g U01QIGtlcm5lbCBpcyBiZWluZyBidWlsdCAtIFNNUCByZXF1aXJlcyBsb2Nr ZWQgY3ljbGVzIHRvDQorICBndWFyYW50ZWUgcHJvY2Vzc29yIHN5bmNocm9u aXphdGlvbi4NCisNCitBbGxvY2F0ZSBMMSBjYWNoZSBsaW5lcyBvbiB3cml0 ZSBtaXNzZXMNCitDT05GSUdfQ1lSSVhfNlg4Nl9XVEFMTE9DDQorICBJZiB0 aGlzIGlzIGVuYWJsZWQgTDEgY2FjaGUgd3JpdGUgbWlzc2VzIHdpbGwgY2F1 c2UgYSBjYWNoZSBsaW5lDQorICB0byBiZSBhbGxvY2F0ZWQuIFRoaXMgbWF5 IHJlc3VsdCBpbiBpbmNyZWFzZWQgcGVyZm9ybWFuY2UuIE9uIHRoZQ0KKyAg b3RoZXIgaGFuZCBpdCBtYXkgY2F1c2UgZXhjZXNzaXZlIHRyYXNoaW5nIG9m IHRoZSBMMSBjYWNoZSB3aGVuDQorICBjb3B5aW5nIG9yIHplcm9pbmcgcGFn ZXMuDQorDQorQnJhbmNoIFRhcmdldCBCdWZmZXIgZmVhdHVyZXMNCitDT05G SUdfQ1lSSVhfNlg4Nl9CVEINCisgIFRoZSBDeXJpeCA2eDg2IGhhcyBicmFu Y2ggcHJlZGljdGlvbiBsb2dpYyB3aGljaCBpcyBub3JtYWxseQ0KKyAgb25s eSBzZXQgdG8gaGFuZGxlIHNob3J0IGJyYW5jaGVzIChhcyBpbiBzbWFsbCBs b29wcyBhbmQgaWZzKS4NCisgIFRoaXMgY29kZSBhdHRlbXB0cyBvbiBjb25m aWd1cmUgdGhlIGJyYW5jaCBwcmVkaWN0aW9uIGxvZ2ljDQorICBhcHByb3Jp YXRlbHkuIFJlYWQgRG9jdW1lbnRhdGlvbi9DeXJpeCBiZWZvcmUgZW5hYmxp bmcgdGhpcy4NCisNCitWYXJpYWJsZSBzaXplZCBwYWdpbmcgbWVjaGFuaXNt IChWU1BNKQ0KK0NPTkZJR19DWVJJWF82WDg2X1ZTUE0NCisgIFZhcmlhYmxl IHNpemVkIHBhZ2luZyBtZWNoYW5pc20gKFZTUE0pIGlzIGEgZmVhdHVyZSBv ZiB0aGUgQ3lyaXgNCisgIDZ4ODYgZmFtaWx5IG9mIHByb2Nlc3NvcnMgdGhh dCBhbGxvd3MgbGFyZ2UgcmVnaW9ucyBvZiBtZW1vcnkNCisgIHRvIGJlIG1h cHBlZCBpbiBvbmUgZ28sIHNpZ25pZmljYW50bHkgcmVkdWNpbmcgdGhlIGFt b3VudCBvZiB3b3JrDQorICB0aGUgTU1VIGhhcyB0byBkbyBjb21wYXJlZCB3 aXRoIHRyYWRpdGlvbmFsIHBhZ2luZy4gSG93ZXZlciBWU1BNDQorICBpcyBr bm93biB0byBiZSBidWdneSBpbiBtYW55IDZ4ODYgY2hpcCByZXZpc2lvbnMu IFBsZWFzZSByZWFkDQorICBEb2N1bWVudGF0aW9uL0N5cml4IGJlZm9yZSBl bmFibGluZyB0aGlzLg0KIA0KIFNwYXJjIEVTUCBTQ1NJIHN1cHBvcnQNCiBD T05GSUdfU0NTSV9TVU5FU1ANCkluZGV4OiBEb2N1bWVudGF0aW9uL0N5cml4 DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogQ3lyaXgNCmRp ZmYgLU4gQ3lyaXgNCi0tLSAvZGV2L251bGwJU2F0IERlYyAyMSAxNzo1Njow NiAxOTk2DQorKysgQ3lyaXgJVHVlIEFwciAyMiAyMzo1NTo1OCAxOTk3DQpA QCAtMCwwICsxLDE1MyBAQA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEN5 cml4IFByb2Nlc3NvciBTdXBwb3J0DQorICAgICAgICAgICAgICAgICAgICAg ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitQcm9jZXNzb3IgUmVj b2duaXRpb24NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitDeXJpeCBw cm9jZXNzb3JzIHByaW9yIHRvIHRoZSBNMiBwb3dlciB1cCBpbiBhIGRlZmF1 bHQgbW9kZSB3aGljaA0KK2lzIGRlc2lnbmVkIHRvIGF2b2lkIGNvbXBhdGli aWxpdHkgcHJvYmxlbXMgd2l0aCBzb2Z0d2FyZSB0aGF0DQorbWFrZXMgYXNz dW1wdGlvbnMgYWJvdXQgcHJvY2Vzc29yIGNhcGFiaWxpdGllcyBiYXNlZCBz b2xlbHkgb24NCit0aGUgYXBwYXJlbnQgZmFtaWx5IG9mIHByb2Nlc3Nvci4g VW5sZXNzIHNwZWNpYWwgaGFuZGxpbmcgaXMNCitwcm92aWRlZCBDeXJpeCBj aGlwcyB3aWxsIGJlIGlkZW50aWZpZWQgYXMgc29tZSB1bmtub3duIG1vZGVs DQorb2YgNDg2Lg0KKw0KKyAgVGhlIEN5cml4IHByb2Nlc3NvciByZWNvZ25p dGlvbiBrZXJuZWwgYnVpbGQgb3B0aW9uIGNvbXBpbGVzDQoraW4gY29kZSB0 aGF0IGVuYWJsZXMgdGhlIENQVUlEIGluc3RydWN0aW9uIG9uIEN5cml4IHBy b2Nlc3NvcnMNCithbmQgdGhhdCB1c2VzIHRoZSBDeXJpeCBzcGVjaWZpYyBE RVZJRCBmZWF0dXJlIHRvIGlkZW50aWZ5IHRoZQ0KK3BhcnRpY3VsYXIgdHlw ZSBvZiBDeXJpeCBjaGlwIHByZXNlbnQuDQorDQorICBUaGUgTTIgYW5kIGxh dGVyIHByb2Nlc3NvcnMgaGF2ZSBDUFVJRCBlbmFibGVkIGJ5IGRlZmF1bHQN Citob3dldmVyIHNwZWNpYWwgaGFuZGxpbmcgaXMgc3RpbGwgcmVxdWlyZWQg dG8gcmVhZCB0aGUgc3BlY2lmaWMNCitwcm9jZXNzb3IgdHlwZSB1c2luZyBE RVZJRCBzaW5jZSB0aGUgQ1BVSUQgaW5mb3JtYXRpb24gZ2l2ZXMNCitmYW1p bHkgNiwgbW9kZWwgMCAtIGkuZS4gYW4gQSBzdGVwIFBQcm8uDQorDQorICBU aGUgY29tYmluYXRpb24gb2YgQ1BVSUQgYW5kIERFVklEIGFsbG93cyBhbGwg Y3VycmVudCBDeXJpeA0KK3Byb2Nlc3NvcnMgdG8gYmUgcmVjb2duaXNlZCBh bmQgbGlzdGVkIGNvcnJlY3RseSBpbiAvcHJvYy9jcHVpbmZvLg0KK1RoaXMg aW5jbHVkZXMgQ3g0ODYsIDV4ODYsIDZ4ODYsIEd4ODYgKGFrYSBNZWRpYUd4 KSBhbmQgTTIuDQorDQorICBQcm9jZXNzb3IgcmVjb2duaXRpb24gaXMgcmVx dWlyZWQgZm9yIGFsbCBvdGhlciBDeXJpeCBzcGVjaWZpYw0KK29wdGlvbnMu DQorDQorDQorU3VzcGVuZCBvbiBIYWx0IFBvd2VyIFNhdmluZw0KKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitUaGUgc3VzcGVuZCBvbiBo YWx0IHBvd2VyIHNhdmluZyBmZWF0dXJlIGFsbG93cyB0aGUgcHJvY2Vzc29y IHRvDQorZW50ZXIgYSBsb3cgcG93ZXIgbW9kZSB3aGVuIHRoZSAiaGx0IiBp bnN0cnVjdGlvbiBpcyBleGVjdXRlZC4gVGhpcw0KK3Jlc3VsdHMgaW4gZHJh bWF0aWNhbGx5IHJlZHVjZWQgb3BlcmF0aW5nIHRlbXBlcmF0dXJlcyBpZiB5 b3UgZG8NCitub3Qgc3BlbmQgbG9uZyBwZXJpb2RzIG9mIHRpbWUgcnVubmlu ZyBwcm9jZXNzb3IgaW50ZW5zaXZlIHRhc2tzLg0KK0N5cml4IHByb2Nlc3Nv cnMgYWxsb3cgdGhpcyBmZWF0dXJlIHRvIGJlIGVuYWJsZWQgYW4gZGlzYWJs ZWQNCit0aHJvdWdoIHRoZWlyIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiBU aGUgZGVmYXVsdCBzdGF0ZSBvbiByZXNldA0KK2lzIGRpc2FibGVkIGFuZCBt YW55IChtb3N0PykgQklPU3MgbGVhdmUgaXQgZGlzYWJsZWQgaGVuY2UgYQ0K K2tlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBwcm92aWRlZCB0aGF0 IGFkZHMgY29kZSB0byBleHBsaWNpdGx5DQorZW5hYmxlZCBzdXNwZW5kIG9u IGhhbHQgd2hlbiBMaW51eCBib290cy4NCisNCisgIEhvd2V2ZXIgdGhlcmUg YXBwZWFyIHRvIGJlIGEgZmV3IHJhcmUgY2FzZXMgaW4gd2hpY2ggdGhlDQor Y29tYmluYXRpb24gb2Ygc3VzcGVuZCBvbiBoYWx0IGFuZCBzb21lIGJ1cyBt YXN0ZXIgRE1BIGNhcmRzIGNhbg0KK2NhdXNlIHRoZSBzeXN0ZW0gdG8gbG9j ayB1cC4gSWYgdGhpcyBhcHBlYXJzIHRvIGhhcHBlbiB5b3UgbWF5DQorbmVl ZCB0byBsZWF2ZSBzdXNwZW5kIG9uIGhhbHQgaW4gaXRzIGRlZmF1bHQgc3Rh dGUuIChOb3RlIHRoYXQNCithbiBvcHRpb24gdG8gX2Rpc2FibGVfIHN1c3Bl bmQgb24gaGFsdCBpcyBub3QgcHJvdmlkZWQuIElmIHlvdXINCitCSU9TIGVu YWJsZXMgaXQgeW91IGhhdmUgdG8gbGl2ZSB3aXRoIGl0KQ0KKw0KKw0KKzV4 ODYgUGVyZm9ybWFuY2UgRmVhdHVyZXMNCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQorDQorVGhlIDV4ODYgY29udGFpbnMgYSBwZXJmb3JtYW5jZSBj b250cm9sIHJlZ2lzdGVyIHRoYXQgYWxsb3dzDQorc2V2ZXJhbCBwZXJmb3Jt YW5jZSBlbmhhbmNpbmcgZmVhdHVyZXMgdG8gYmUgdHVybmVkIG9uLiBVbmZv cnR1bmF0ZWx5DQorbWFueSBvZiB0aGVzZSBmZWF0dXJlcyBkbyBub3QgYXBw ZWFyIHRvIHdvcmsgY29ycmVjdGx5LiBUaGUgNXg4Ng0KK3BlcmZvcm1hbmNl IGZlYXR1cmVzIGtlcm5lbCBidWlsZCBvcHRpb24gd2lsbCBhdHRlbXB0IHRv IHNldA0KK3RoZSBwZXJmb3JtYW5jZSBjb250cm9sIHJlZ2lzdGVyIGFwcHJv cHJpYXRlbHkgYnV0IGl0IGlzDQoraW1wb3NzaWJsZSB0byBndWFyYW50ZWUg dGhhdCBldmVuIHRoZXNlIGNvbnNlcnZhdGl2ZSBzZXR0aW5ncw0KK3dpbGwg d29yayBvbiBhbGwgY2hpcHMuDQorDQorICBXQVJOSU5HOiBJZiB0aGlzIGlz IGVuYWJsZWQgeW91IG1heSBmaW5kIHRoYXQgdGhlIG9ubHkgd2F5IHRvDQor cmVib290IGlzIHRvIHBvd2VyIGN5Y2xlIHRoZSBtYWNoaW5lLiBFdmVuIGEg aGFyZCByZWJvb3Qgc2VlbXMNCit0byBmYWlsIG9uIHNvbWUgc3lzdGVtcy4N CisNCisNCis2eDg2IFBlcmZvcm1hbmNlIEZlYXR1cmVzDQorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0xpa2UgdGhlIDV4ODYgdGhlIDZ4ODYg aGFzIHNldmVyYWwgQ3lyaXggc3BlY2lmaWMgcGVyZm9ybWFuY2UNCitmZWF0 dXJlcy4gTm9ybWFsbHkgYSA2eDg2IGF3YXJlIEJJT1Mgd2lsbCBzZXQgdGhl c2UgdG8gcmVhc29uYWJsZSwNCitpZiBub3QgZnVsbHkgb3B0aW1hbCwgc2V0 dGluZ3MuIFRoZSA2eDg2IHBlcmZvcm1hbmNlIGZlYXR1cmVzDQora2VybmVs IGJ1aWxkIG9wdGlvbiBtb3N0bHkgZmluZSB0dW5lcyB0aGVtLCBob3dldmVy IGl0IGFsc28NCitlbmFibGVzIHRoZSBTVVNQX0hMVCBmZWF0dXJlIHRoYXQg Y2F1c2VzIHRoZSA2eDg2IHRvIGVudGVyIGEgbG93DQorcG93ZXIgbW9kZSB3 aGVuZXZlciB0aGUgaGx0IGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkIGNhdXNp bmcgdGhlDQorQ1BVIHRvIHdhaXQgZm9yIGFuIGV4dGVybmFsIGV2ZW50IHN1 Y2ggYXMgYW4gaW50ZXJydXB0LiBUaGlzDQorZHJhbWF0aWNhbGx5IHJlZHVj ZXMgdGhlIHdvcmtpbmcgdGVtcGVyYXR1cmUgb2YgdGhlIGNoaXAgYnV0DQor aXMgb25lIGZlYXR1cmUgdGhhdCBtYW55IEJJT1MgbGVhdmUgZGlzYWJsZWQu DQorDQorDQorNng4NiBCcmFuY2ggUHJlZGljdGlvbg0KKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCisNCitUaGUgNng4NiB1c2VzIHNwZWN1bGF0aXZlIGV4 ZWN1dGlvbiBjb3VwbGVkIHdpdGggc2V2ZXJhbCBsZXZlbHMNCitvZiBicmFu Y2ggcHJlZGljdGlvbiB0byBtYXhpbWlzZSBwcm9jZXNzaW5nIHNwZWVkLiBX aGlsZSB0aGUNCitkZWZhdWx0IHBvd2VyIHVwIHN0YXRlIGlzIHJlYXNvbmFi bGUgdGhlIGJyYW5jaCBwcmVkaWN0aW9uIGxvZ2ljDQoraXMgY29uZmlndXJh YmxlIGFuZCB0aGVyZSBtYXkgYmUgc29tZSBiZW5lZml0IGluIGZpbmUgdHVu aW5nIGl0Lg0KKw0KKyAgVW5mb3J0dW5hdGVseSBDeXJpeCBvZmZlciBubyBk b2N1bWVudGF0aW9uIG9uIGhvdyB0byBjb25maWd1cmUNCiticmFuY2ggcHJl ZGljdGlvbiBhbmQgSUJNIGhhdmUgb25seSBwYXJ0aWFsIGRvY3VtZW50YXRp b24gYXZhaWxhYmxlLg0KK0Z1cnRoZXIgZGV0YWlsIGFuZCBzcGVjdWxhdGlv biBpcyBhdmFpbGFibGUgZnJvbSB0aGUgNng4Nm9wdCBwYWNrYWdlDQorYnkg TWlrYWVsIEpvaGFuc3NvbiA8TWlrYWVsLkpvaGFuc3NvbkBoZWxzaW5raS5m aT4uDQorDQorICBUaGUgaW5pdGlhbCBwb3dlciB1cCBzdGF0ZSBvZiB0aGUg Nng4NiBjb25maWd1cmVzIHRoZSBicmFuY2gNCitwcmVkaWN0aW9uIGxvZ2lj IHRvIGhhbmRsZSBzaG9ydCBicmFuY2hlcy4gVGhlIDZ4ODYgYnJhbmNoIHRh cmdldA0KK2J1ZmZlciBmZWF0dXJlcyBrZXJuZWwgYnVpbGQgb3B0aW9uIGVu YWJsZXMgY29kZSB0aGF0IGVuYWJsZXMNCitoYW5kbGluZyBvZiBsb25nIGJy YW5jaGVzIGFzIHdlbGwuIEl0IGlzIG5vdCBjbGVhciBpZiB0aGlzIHdpbGwN CitiZW5lZml0IGluIHlvdXIgcGFydGljdWxhciBjYXNlIG9yIG5vdC4NCisN CisNCis2eDg2IFZhcmlhYmxlIFNpemVkIFBhZ2luZyBNZWNoYW5pc20NCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitUaGUg dmFyaWFibGUgc2l6ZWQgcGFnaW5nIG1lY2hhbmlzbSAoVlNQTSkgaXMgYSBm ZWF0dXJlIG9mIHRoZSBDeXJpeA0KKzZ4ODYgZmFtaWx5IG9mIHByb2Nlc3Nv cnMgdGhhdCBhbGxvd3MgbGFyZ2UgcmVnaW9ucyBvZiBtZW1vcnkNCit0byBi ZSBtYXBwZWQgdXNpbmcgYSBzaW5nbGUgTU1VIGVudHJ5IHJhdGhlciB0aGFu IG1hbnkgaW5kaXZpZHVhbA0KK3BhZ2Ugc2l6ZWQgZW50cmllcy4gVGhpcyBz aWduaWZpY2FudGx5IHJlZHVjZXMgdGhlIG92ZXJoZWFkIGluDQorYWNjZXNz aW5nIHN1Y2ggcmVnaW9ucy4gSXQgaXMgYWxzbyBpZGVhbGx5IHN1aXRlZCB0 byB1c2UgZm9yIHRoZQ0KK2xpbmVhciBtYXBwaW5nIG9mIHBoeXNpY2FsIG1l bW9yeSB0byBrZXJuZWwgbWVtb3J5IHVzZWQgYnkgTGludXguDQorDQorICBU aGUgQ3lyaXggZG9jdW1lbmF0aW9uIG9mZmVycyBvbmx5IGEgYnJpZWYgcGFy YWdyYXBoIG9mIGV4cGxhbmF0aW9uLg0KK1VuZm9ydHVuYXRlbHkgdGhlIG9i c2VydmVkIGJlaGF2aW91ciBvZiBWU1BNIHN1Z2dlc3RzIHRoYXQgZXZlbg0K K3RoaXMgbGl0dGxlIGluZm9ybWF0aW9uIGlzIG5vdCBlbnRpcmVseSBjb3Jy ZWN0LiBXb3JzZSBzdGlsbCwgbm8gb25lDQorYXQgQ3lyaXggaXMgYWJsZSB0 byBhbnN3ZXIgcXVlc3Rpb25zIGNvbmNlcm5pbmcgVlNQTS4gR2l2ZW4gdGhh dA0KK2V2ZXJ5IHJldmlzaW9uIG9mIDZ4ODYgaGFzICpkaWZmZXJlbnQqIFZT UE0gYnVncyB0aGlzIGlzIG5vdCBlbnRpcmVseQ0KK3N1cnByaXNpbmchIFdv cmsgYXJvdW5kcyBhcmUgaW4gcGxhY2UgZm9yIHRoZSBrbm93biBidWdzIGlu IHN0ZXAgMSwNCityZXZpc2lvbnMgNCwgNSBhbmQgNiBjaGlwcy4gUmV2aXNp b24gNyBpcyBhbHNvIGJlbGlldmVkIHRvIHdvcmsuDQorDQorICBXQVJOSU5H OiBUaGVyZSBhcHBlYXJzIHRvIGJlIG5vIHdheSB0byBkaXNhYmxlIGEgVlNQ TSBlbnRyeSBvbmNlDQoraXQgaGFzIGJlZW4gY3JlYXRlZCBzaG9ydCBvZiBh IGhhcmQgcmVzZXQgKHdoaWNoIG1heSBtZWFuIGEgcG93ZXINCitjeWNsZSku IEZhaWx1cmUgdG8gY2xlYXIgdGhlIFZTUE0gZW50cmllcyBtZWFucyB0aGF0 IHByb2dyYW1zIHRoYXQNCit1c2UgdmlydHVhbCBtZW1vcnkgbGF5b3V0cyBk aWZmZXJlbnQgZnJvbSBMaW51eCB3aWxsIGNyYXNoIHVuZXhwZWN0ZWRseQ0K K2FmdGVyIExpbnV4IGhhcyBiZWVuIHJ1bm5pbmcuIFRoaXMgaW5jbHVkZXMg V2luZG93cyBOVC85NSwgcHJvZ3JhbXMNCit0aGF0IHVzZSBET1MgZXh0ZW5k ZXJzIGV0Yy4NCisNCisgIEJ5IGV4cGVyaW1lbnQ6DQorDQorICAqIFZTUE0g cGFnZXMgbXVzdCBiZSBwb3dlciBvZiB0d28gc2l6ZXMuIEEgc2luZ2xlIDI0 TUIgcGFnZSBmYWlscy4NCisgICAgVGhpcyBpcyBub3QgZW50aXJlbHkgc3Vy cHJpc2luZyBidXQgdGhlIGRvY3VtZW50YXRpb24gY291bGQgZ2l2ZQ0KKyAg ICB0aGUgaW1wcmVzc2lvbiB0aGF0IFZTUE0gc3VwcG9ydHMgYXJiaXRyYXJ5 IHNpemVzLg0KKw0KKyAgKiBEb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHRoZXJl IGFyZSA4IFZTUE0gc2xvdHMgKDMgYml0IGluZGV4KSBidXQNCisgICAgdGVz dHMgc2hvdyB0aGUgdXBwZXIgZm91ciBzbG90cyBtaXJyb3IgdGhlIGxvd2Vy IGZvdXIuDQorDQorICAqIFdpdGggYSAxNk1CIHBhZ2UgZm9sbG93ZWQgYnkg YW4gOE1CIHBhZ2UgSSBhbHdheXMgZ2V0IGEgd3JpdGUNCisgICAgZmF1bHQg b24gdGhlIGxhc3QgNGsgb2YgdGhlIDhNQiBwYWdlLiBXaXRoIDhNQiBwbHVz IDRNQiBJIGNhbid0DQorICAgIGV2ZW4gYm9vdC4NCisgICAgICBJZiB3ZSBo YXZlIHN1Y2ggYSBtZW1vcnkgc2l6ZSB3ZSBtYXAgdGhlIGZpcnN0IHBvd2Vy IG9mIHR3bw0KKyAgICB3aXRoIGEgVlNQTSBlbnRyeSBhbmQgdXNlIHRyYWRp dGlvbmFsIHBhZ2luZyBmb3IgdGhlIHJlc3QuDQorDQorICAqIFZTUE0gZW50 cmllcyBhcHBlYXIgdG8gb3ZlcnJpZGUgdHJhZGl0aW9uYWwgcGFnZSB0YWJs ZSBlbnRyaWVzDQorICAgIHNvIHdlIG11c3Qgbm90IG92ZXJsYXAgdGhlIHN0 YXJ0IG9mIHRoZSB2bWFsbG9jIHJlZ2lvbi4NCisNCisgICogRG8gbm90IHRy eSBhbmQgY3JlYXRlIGEgbWFwcGluZyB3aXRoIGRpcnR5IGFuZCBhY2Nlc3Nl ZCBmbGFncw0KKyAgICBjbGVhciAtIGEgc3RlcCAxIHJldiA1IGNoaXAgd2ls bCBjcmFzaC4NCisNCisgICogVGhlIHZhbGlkIGJpdCBpbiBhIFZTUE0gZW50 cnkgaXMgbm9uLWZ1bmN0aW9uYWwuIFRoZXJlIGlzIG5vIHdheQ0KKyAgICB0 byBpbnZhbGlkYXRlIGEgVlNQTSBlbnRyeSBvbmNlIGl0IGhhcyBiZWVuIHdy aXR0ZW4uDQorDQorICAqIEF0dGVtcHRpbmcgdG8gcmVwbGFjZSBhIFZTUE0g ZW50cnkgd2l0aCBvbmUgdGhhdCBtYXBzIGEgemVybw0KKyAgICBzaXplZCBy ZWdpb24gZnJvbSAwIHRvIDAgY3Jhc2hlcyB0aGUgQ1BVLg0KSW5kZXg6IGFy Y2gvaTM4Ni9jb25maWcuaW4NCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvdXNyL0NWUy9saW51eC9hcmNoL2kzODYvY29uZmlnLmluLHYN CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuNg0KZGlmZiAtdSAtdSAtcjEu MS4yLjYgY29uZmlnLmluDQotLS0gY29uZmlnLmluCTE5OTcvMDQvMTEgMjI6 MTA6MTgJMS4xLjIuNg0KKysrIGNvbmZpZy5pbgkxOTk3LzA0LzE4IDIyOjQx OjA0DQpAQCAtOSw2ICs5LDMwIEBADQogYm9vbCAnUHJvbXB0IGZvciBkZXZl bG9wbWVudCBhbmQvb3IgaW5jb21wbGV0ZSBjb2RlL2RyaXZlcnMnIENPTkZJ R19FWFBFUklNRU5UQUwNCiBlbmRtZW51DQogDQorY2hvaWNlICdQcm9jZXNz b3IgZmFtaWx5JyBcDQorCSIzODYJCUNPTkZJR19NMzg2CVwNCisJIDQ4NgkJ Q09ORklHX000ODYJXA0KKwkgUGVudGl1bQlDT05GSUdfTTU4NglcDQorCSBQ UHJvCQlDT05GSUdfTTY4NiIgUGVudGl1bQ0KKw0KK21haW5tZW51X29wdGlv biBuZXh0X2NvbW1lbnQNCitjb21tZW50ICdQcm9jZXNzb3IgZmVhdHVyZXMn DQorDQorYm9vbCAnQ3lyaXggcHJvY2Vzc29yIHJlY29nbml0aW9uJyBDT05G SUdfQ1lSSVgNCitpZiBbICIkQ09ORklHX0NZUklYIiA9ICJ5IiBdOyB0aGVu DQorICBib29sICdFbmFibGUgc3VzcGVuZCBvbiBoYWx0IHBvd2VyIHNhdmlu ZycgQ09ORklHX0NZUklYX1NVU1BfSExUDQorICBib29sICdObyBJL08gcmVj b3ZlcnkgZGVsYXlzJyBDT05GSUdfQ1lSSVhfRkFTVF9JTw0KKyAgYm9vbCAn NXg4NiBwZXJmb3JtYW5jZSBmZWF0dXJlcycgQ09ORklHX0NZUklYXzVYODYN CisgIGJvb2wgJzZ4ODYgcGVyZm9ybWFuY2UgZmVhdHVyZXMnIENPTkZJR19D WVJJWF82WDg2DQorICBpZiBbICIkQ09ORklHX0NZUklYXzZYODYiID0gInki IF07IHRoZW4NCisgICAgYm9vbCAnICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBs b2NrZWQgY3ljbGVzJyBDT05GSUdfQ1lSSVhfNlg4Nl9OT0xPQ0sNCisgICAg Ym9vbCAnICAgICBBbGxvY2F0ZSBMMSBjYWNoZSBsaW5lcyBvbiB3cml0ZSBt aXNzZXMnIENPTkZJR19DWVJJWF82WDg2X1dUQUxMT0MNCisgICAgYm9vbCAn ICAgICBCcmFuY2ggVGFyZ2V0IEJ1ZmZlciBmZWF0dXJlcycgQ09ORklHX0NZ UklYXzZYODZfQlRCDQorICAgIGJvb2wgJyAgICAgVmFyaWFibGUgc2l6ZWQg cGFnaW5nIG1lY2hhbmlzbSAoVlNQTSknIENPTkZJR19DWVJJWF82WDg2X1ZT UE0NCisgIGZpDQorZmkNCitlbmRtZW51DQorDQogbWFpbm1lbnVfb3B0aW9u IG5leHRfY29tbWVudA0KIGNvbW1lbnQgJ0xvYWRhYmxlIG1vZHVsZSBzdXBw b3J0Jw0KIGJvb2wgJ0VuYWJsZSBsb2FkYWJsZSBtb2R1bGUgc3VwcG9ydCcg Q09ORklHX01PRFVMRVMNCkBAIC0zOCwxMSArNjIsNiBAQA0KICAgdHJpc3Rh dGUgJ0tlcm5lbCBzdXBwb3J0IGZvciBKQVZBIGJpbmFyaWVzJyBDT05GSUdf QklORk1UX0pBVkENCiBmaQ0KIA0KLWNob2ljZSAnUHJvY2Vzc29yIHR5cGUn IFwNCi0JIjM4NgkJQ09ORklHX00zODYJXA0KLQkgNDg2CQlDT05GSUdfTTQ4 NglcDQotCSBQZW50aXVtCUNPTkZJR19NNTg2CVwNCi0JIFBQcm8JCUNPTkZJ R19NNjg2IiBQZW50aXVtDQogYm9vbCAnVmlkZW8gbW9kZSBzZWxlY3Rpb24g c3VwcG9ydCcgQ09ORklHX1ZJREVPX1NFTEVDVA0KIA0KIHRyaXN0YXRlICdQ YXJhbGxlbCBwb3J0IHN1cHBvcnQnIENPTkZJR19QTlBfUEFSUE9SVA0KSW5k ZXg6IGFyY2gvaTM4Ni9kZWZjb25maWcNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NClJDUyBmaWxlOiAvdXNyL0NWUy9saW51eC9hcmNoL2kzODYvZGVmY29u ZmlnLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMTkNCmRpZmYgLXUg LXUgLXIxLjEuMi4xOSBkZWZjb25maWcNCi0tLSBkZWZjb25maWcJMTk5Ny8w NC8xNiAyMDowNjozMAkxLjEuMi4xOQ0KKysrIGRlZmNvbmZpZwkxOTk3LzA0 LzE4IDIxOjU4OjMyDQpAQCAtOCw2ICs4LDIzIEBADQogIyBDT05GSUdfRVhQ RVJJTUVOVEFMIGlzIG5vdCBzZXQNCiANCiAjDQorIyBQcm9jZXNzb3Igb3B0 aW9ucw0KKyMNCisjIENPTkZJR19NMzg2IGlzIG5vdCBzZXQNCisjIENPTkZJ R19NNDg2IGlzIG5vdCBzZXQNCisjIENPTkZJR19NNTg2IGlzIG5vdCBzZXQN CitDT05GSUdfTTY4Nj15DQorQ09ORklHX0NZUklYPXkNCitDT05GSUdfQ1lS SVhfU1VTUF9ITFQ9eQ0KKyMgQ09ORklHX0NZUklYX0ZBU1RfSU8gaXMgbm90 IHNldA0KKyMgQ09ORklHX0NZUklYXzVYODYgaXMgbm90IHNldA0KKyMgQ09O RklHX0NZUklYXzZYODYgaXMgbm90IHNldA0KKyMgQ09ORklHX0NZUklYXzZY ODZfTk9MT0NLIGlzIG5vdCBzZXQNCisjIENPTkZJR19DWVJJWF82WDg2X1dU QUxMT0MgaXMgbm90IHNldA0KKyMgQ09ORklHX0NZUklYXzZYODZfQlRCIGlz IG5vdCBzZXQNCisjIENPTkZJR19DWVJJWF82WDg2X1ZTUE0gaXMgbm90IHNl dA0KKw0KKyMNCiAjIExvYWRhYmxlIG1vZHVsZSBzdXBwb3J0DQogIw0KIENP TkZJR19NT0RVTEVTPXkNCkBAIC0yOSw2ICs0NiwxMiBAQA0KICMgQ09ORklH X000ODYgaXMgbm90IHNldA0KICMgQ09ORklHX001ODYgaXMgbm90IHNldA0K IENPTkZJR19NNjg2PXkNCitDT05GSUdfQ1lSSVg9eQ0KK0NPTkZJR19DWVJJ WF9TVVNQX0hMVD15DQorIyBDT05GSUdfQ1lSSVhfNVg4NiBpcyBub3Qgc2V0 DQorIyBDT05GSUdfQ1lSSVhfNlg4NiBpcyBub3Qgc2V0DQorIyBDT05GSUdf Q1lSSVhfNlg4Nl9CVEIgaXMgbm90IHNldA0KKyMgQ09ORklHX0NZUklYXzZY ODZfVlNQTSBpcyBub3Qgc2V0DQogIyBDT05GSUdfVklERU9fU0VMRUNUIGlz IG5vdCBzZXQNCiAjIENPTkZJR19QTlBfUEFSUE9SVCBpcyBub3Qgc2V0DQog DQpJbmRleDogYXJjaC9pMzg2L2tlcm5lbC9oZWFkLlMNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NClJDUyBmaWxlOiAvdXNyL0NWUy9saW51eC9hcmNoL2kz ODYva2VybmVsL2hlYWQuUyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMS4y LjMNCmRpZmYgLXUgLXUgLXIxLjEuMi4zIGhlYWQuUw0KLS0tIGhlYWQuUwkx OTk3LzA0LzE2IDIwOjUyOjI3CTEuMS4yLjMNCisrKyBoZWFkLlMJMTk5Ny8w NC8xOCAyMjozNjowOQ0KQEAgLTE0MCwxMyArMTQwLDgwIEBADQogY2hlY2tD UFV0eXBlOg0KICNlbmRpZg0KIA0KKwltb3ZsICQtMSxTWU1CT0xfTkFNRSho YXZlX2NwdWlkKQkjICAtMSBmb3Igbm8gQ1BVSUQgaW5pdGlhbGx5DQorDQog LyogY2hlY2sgaWYgaXQgaXMgNDg2IG9yIDM4Ni4gKi8NCiAvKg0KICAqIFhY WCAtIHRoaXMgZG9lcyBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBzZXR1cC4gIEFs aWdubWVudCBjaGVja3MgZG9uJ3QNCiAgKiBhcHBseSBhdCBvdXIgY3BsIG9m IDAgYW5kIHRoZSBzdGFjayBvdWdodCB0byBiZSBhbGlnbmVkIGFscmVhZHks IGFuZA0KICAqIHdlIGRvbid0IG5lZWQgdG8gcHJlc2VydmUgZWZsYWdzLg0K ICAqLw0KLQltb3ZsICQzLCBTWU1CT0xfTkFNRSh4ODYpDQorCS8qDQorCSAq IEEgQ3lyaXggcHJlc2VydmVzIGZsYWdzIGluIGNhc2VzIHdoZXJlIG90aGVy IENQVXMgY2hhbmdlDQorCSAqIHRoZW0gaW4gdW5kZWZpbmVkIHdheXMuIFdl IG5lZWQgdG8ga25vdyB0aGlzIHNpbmNlIHdlIG1heQ0KKwkgKiBuZWVkIHRv IGVuYWJsZSB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gYXQgbGVhc3QuIChDeXJp eCBjaGlwcw0KKwkgKiBwcmlvciB0byBNMiBoYXZlIENQVUlEIGRpc2FibGVk IGJ5IGRlZmF1bHQsIHRoZSBDeDQ4NnMNCisJICogZGlkbid0IGhhdmUgaXQg YXQgYWxsLikNCisJICovDQorCXhvciAlYXgsJWF4DQorCXNhaGYNCisJbW92 YiAkNSwlYXgNCisJbW92YiAkMiwlYngNCisJZGl2ICVibA0KKwlsYWhmDQor CWNtcGIgJDIsJWFoDQorCWpuZSBuY3lyaXgNCisNCisJLyoNCisJICogSXQg YmVoYXZlcyBsaWtlIGEgQ3lyaXggc28gcHV0ICJDeXJpeCIgaW4gdGhlIHZl bmRvciBpZA0KKwkgKiBmaWVsZC4gSXQgbWF5IGJlIG92ZXJ3cml0dGVuIGxh dGVyIHdpdGggdGhlIHJlYWwgdGhpbmcNCisJICogaWYgQ1BVSUQgd29ya3Mu DQorCSAqLw0KKwltb3ZsICQweDY5NzI3OTQzLFNZTUJPTF9OQU1FKHg4Nl92 ZW5kb3JfaWQpCSMgbG93IDQgY2hhcnMNCisJbW92bCAkMHgwMDAwMDA3OCxT WU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lkKSs0CSMgbmV4dCA0IGNoYXJzDQor DQorI2lmZGVmIENPTkZJR19DWVJJWA0KKwkvKg0KKwkgKiBOLkIuIFRoZSBw YXR0ZXJuIG9mIGFjY2Vzc2VzIHRvIDB4MjIgYW5kIDB4MjMgaXMgKmltcG9y dGFudCoNCisJICogICAgICBzbyBkbyBub3QgdHJ5IGFuZCAib3B0aW1pc2Ui IGl0ISBGb3IgdGhlIHNhbWUgcmVhc29uIHdlDQorCSAqCWRvIGFsbCB0aGlz IHdpdGggaW50ZXJydXB0cyBvZmYganVzdCB0byBiZSBzdXJlLg0KKwkgKi8N CisjZGVmaW5lIHNldEN4ODYocmVnLCB2YWwpIFwNCisJbW92YiByZWcsJWF4 OwlcDQorCW91dGIgJWF4LCQweDIyOwlcDQorCW1vdmIgdmFsLCVheDsJXA0K KwlvdXRiICVheCwkMHgyMw0KKw0KKyNkZWZpbmUgZ2V0Q3g4NihyZWcpIFwN CisJbW92YiByZWcsJWF4OwlcDQorCW91dGIgJWF4LCQweDIyOwlcDQorCWlu YiAkMHgyMywlYXgNCisNCisJY2xpDQorCWdldEN4ODYoJDB4YzMpCQkjIGdl dCBDQ1IzDQorCW1vdmIgJWF4LCVjeAkJIyBTYXZlIG9sZCB2YWx1ZQ0KKwlt b3ZiICVheCwlYngNCisJYW5kYiAkMHgwZiwlYngJCSMgRW5hYmxlIGFsbCBj b25maWcgcmVnaXN0ZXJzIChmb3IgQ0NSNCBhY2Nlc3MpDQorCW9yYiAkMHgx MCwlYngNCisJc2V0Q3g4NigkMHhjMywlYngpDQorDQorI2lmZGVmIENPTkZJ R19DWVJJWF9TVVNQX0hMVA0KKwlnZXRDeDg2KCQweGMyKQkJIyBDQ1IyIHw9 IFNVU1BfSExUDQorCW9yYiAkOCwlYXgNCisJbW92YiAlYXgsJWJ4DQorCXNl dEN4ODYoJDB4YzIsJWJ4KQ0KKyNlbmRpZg0KKw0KKwlnZXRDeDg2KCQweGU4 KQkJIyBDQ1I0IHw9IENQVUlEIHwgRFRFX0VODQorCW9yYiAkMHg5MCwlYXgN CisJbW92YiAlYXgsJWJ4DQorCXNldEN4ODYoJDB4ZTgsJWJ4KQ0KKw0KKwlz ZXRDeDg2KCQweGMzLCVjeCkJIyBSZXN0b3JlIG9sZCBDQ1IzDQorCXN0aQ0K KyNlbmRpZiAvKiBDT05GSUdfQ1lSSVggKi8NCisNCituY3lyaXg6CW1vdmwg JDMsIFNZTUJPTF9OQU1FKHg4NikjIGF0IGxlYXN0IDM4Ng0KIAlwdXNoZmwJ CQkjIHB1c2ggRUZMQUdTDQogCXBvcGwgJWVheAkJIyBnZXQgRUZMQUdTDQog CW1vdmwgJWVheCwlZWN4CQkjIHNhdmUgb3JpZ2luYWwgRUZMQUdTDQpAQCAt MTU4LDcgKzIyNSw4IEBADQogCXhvcmwgJWVjeCwlZWF4CQkjIGNoYW5nZSBp biBmbGFncw0KIAlhbmRsICQweDQwMDAwLCVlYXgJIyBjaGVjayBpZiBBQyBi aXQgY2hhbmdlZA0KIAlqZSBpczM4Ng0KLQltb3ZsICQ0LFNZTUJPTF9OQU1F KHg4NikNCisNCisJbW92bCAkNCxTWU1CT0xfTkFNRSh4ODYpIyBhdCBsZWFz dCA0ODYNCiAJbW92bCAlZWN4LCVlYXgNCiAJeG9ybCAkMHgyMDAwMDAsJWVh eAkjIGNoZWNrIElEIGZsYWcNCiAJcHVzaGwgJWVheA0KQEAgLTE2NiwxNCAr MjM0LDIzIEBADQogCXB1c2hmbAkJCSMgNDg3U1ggd2UgY2FuJ3QgY2hhbmdl IGl0DQogCXBvcGwgJWVheA0KIAl4b3JsICVlY3gsJWVheA0KLQlhbmRsICQw eDIwMDAwMCwlZWF4DQotCWplIGlzNDg2DQotaXNuZXc6CXB1c2hsICVlY3gJ CSMgcmVzdG9yZSBvcmlnaW5hbCBFRkxBR1MNCisJcHVzaGwgJWVjeAkJIyBy ZXN0b3JlIG9yaWdpbmFsIEVGTEFHUw0KIAlwb3BmbA0KLQlpbmNsIFNZTUJP TF9OQU1FKGhhdmVfY3B1aWQpCSMgd2UgaGF2ZSBDUFVJRA0KKwlhbmRsICQw eDIwMDAwMCwlZWF4DQorCWplIG5vY3B1aWQNCisNCisJLyogZ2V0IHZlbmRv ciBpbmZvICovDQorCXhvcmwgJWVheCwgJWVheAkJCSMgY2FsbCBDUFVJRCB3 aXRoIDAgLT4gcmV0dXJuIHZlbmRvciBJRA0KKwkuYnl0ZSAweDBmLCAweGEy CQkjIENQVUlEDQorCW1vdmwgJWVheCxTWU1CT0xfTkFNRShoYXZlX2NwdWlk KQkjIHNhdmUgQ1BVSUQgbGV2ZWwNCisJbW92bCAlZWJ4LFNZTUJPTF9OQU1F KHg4Nl92ZW5kb3JfaWQpCSMgbG8gNCBjaGFycw0KKwltb3ZsICVlZHgsU1lN Qk9MX05BTUUoeDg2X3ZlbmRvcl9pZCkrNAkjIG5leHQgNCBjaGFycw0KKwlt b3ZsICVlY3gsU1lNQk9MX05BTUUoeDg2X3ZlbmRvcl9pZCkrOAkjIGxhc3Qg NCBjaGFycw0KKw0KKwljbXBsICQwLCVlYXgJCQkjIGRvIHdlIGhhdmUgcHJv Y2Vzc29yIGluZm8gYXMgd2VsbD8NCisJamUgbm9jcHVpZA0KKw0KIAkvKiBn ZXQgcHJvY2Vzc29yIHR5cGUgKi8NCi0JCQkJIyBMSU5VUyBXRSBIQVZFIEEg QlVHIEhFUkUgLSBNVVNUIENIRUNLIFdJVEgNCi0JCQkJIyBDUFVJRCMwIFRI QVQgQ1BVSUQjMSBJUyBTVVBQT1JURUQuLi4NCiAJbW92bCAkMSwgJWVheAkJ IyBVc2UgdGhlIENQVUlEIGluc3RydWN0aW9uIHRvIA0KIAkuYnl0ZSAweDBm LCAweGEyCSMgY2hlY2sgdGhlIHByb2Nlc3NvciB0eXBlDQogCW1vdmIgJWFs LCAlY2wJCSMgc2F2ZSByZWcgZm9yIGZ1dHVyZSB1c2UNCkBAIC0xODUsMjMg KzI2MiwxNTQgQEANCiAJYW5kYiAkMHgwZiwgJWNsCQkjIG1hc2sgbWFzayBy ZXZpc2lvbg0KIAltb3ZiICVjbCxTWU1CT0xfTkFNRSh4ODZfbWFzaykNCiAJ bW92bCAlZWR4LFNZTUJPTF9OQU1FKHg4Nl9jYXBhYmlsaXR5KQ0KLQkvKiBn ZXQgdmVuZG9yIGluZm8gKi8NCi0JeG9ybCAlZWF4LCAlZWF4CQkJIyBjYWxs IENQVUlEIHdpdGggMCAtPiByZXR1cm4gdmVuZG9yIElEDQotCS5ieXRlIDB4 MGYsIDB4YTIJCSMgQ1BVSUQNCi0JbW92bCAlZWJ4LFNZTUJPTF9OQU1FKHg4 Nl92ZW5kb3JfaWQpCSMgbG8gNCBjaGFycw0KLQltb3ZsICVlZHgsU1lNQk9M X05BTUUoeDg2X3ZlbmRvcl9pZCkrNAkjIG5leHQgNCBjaGFycw0KLQltb3Zs ICVlY3gsU1lNQk9MX05BTUUoeDg2X3ZlbmRvcl9pZCkrOAkjIGxhc3QgNCBj aGFycw0KIA0KLQltb3ZsICVjcjAsJWVheAkJIyA0ODYrDQotCWFuZGwgJDB4 ODAwMDAwMTEsJWVheAkjIFNhdmUgUEcsUEUsRVQNCi0Jb3JsICQweDUwMDIy LCVlYXgJIyBzZXQgQU0sIFdQLCBORSBhbmQgTVANCi0Jam1wIDJmDQotaXM0 ODY6CXB1c2hsICVlY3gJCSMgcmVzdG9yZSBvcmlnaW5hbCBFRkxBR1MNCi0J cG9wZmwNCi0JbW92bCAlY3IwLCVlYXgJCSMgNDg2DQorbm9jcHVpZDoNCisJ LyoNCisJICogRXZlbiBpZiB3ZSBoYWQgQ1BVSUQgQ3lyaXggdHJpZXMgdG8g bG9vayBjb21wYXRpYmxlIHdpdGgNCisJICogSW50ZWwgc28gd2UgaGF2ZSB0 byBnbyBlbHNld2hlcmUgZm9yIHRoZSBuaXR0eSBncml0dHkuDQorCSAqLw0K KwljbXBsICQweDY5NzI3OTQzLFNZTUJPTF9OQU1FKHg4Nl92ZW5kb3JfaWQp CSMgIkN5cmlbeC4qXSI/DQorCWplIGNoa2RldmlkCQkJCQkjIG1heWJlIC4u Lg0KKwljbXBsICQweDQ0NGQ0MTYzLFNZTUJPTF9OQU1FKHg4Nl92ZW5kb3Jf aWQpKzgJIyAiW0F1dGhlbnRpXWNBTUQiPw0KKwlqbmUgaXM0ODYNCisJb3Ji ICQweDIwLFNZTUJPTF9OQU1FKHg4NikJCSMgRmxhZyBhcyBBTUQNCisJam1w IGlzNDg2DQorDQorY2hrZGV2aWQ6DQorCW9yYiAkMHgxMCxTWU1CT0xfTkFN RSh4ODYpCQkjIEZsYWcgYXMgQ3lyaXgNCisJbW92YiAkMHhmZSxTWU1CT0xf TkFNRSh4ODZfbW9kZWwpCSMgR2VuZXJpYyBDeDQ4Nj8NCisJbW92YiAkMCxT WU1CT0xfTkFNRSh4ODZfbWFzaykNCisNCisjaWZkZWYgQ09ORklHX0NZUklY DQorCWNsaQkJCSMgVGVzdCBmb3IgREVWSUQNCisJZ2V0Q3g4NigkMHhjMykJ CSMgYnkgd3JpdGluZyBDQ1IzDQorCW1vdmIgJWF4LCVjeA0KKwltb3ZiICVh eCwlYngNCisJb3JiICQweDgwLCVieA0KKwlzZXRDeDg2KCQweGMzLCVieCkN CisJZ2V0Q3g4NigkMHhjMCkJCSMgZHVtbXkgdG8gY2hhbmdlIGJ1cw0KKwln ZXRDeDg2KCQweGMzKQ0KKwlzdGkNCisJY21wICVheCwlY3gNCisJamUgaXM0 ODYJCSMgbm90IHdyaXRhYmxlID09IG5vIERFVklEDQorDQorCWNsaQ0KKwlz ZXRDeDg2KCQweGMzLCVjeCkJIyByZXN0b3JlIENDUjMNCisNCisJZ2V0Q3g4 NigkMHhmZikJCSMgZ2V0IERFVklEIGluIHByZWZlcmVuY2UgdG8gYW55IENQ VUlEDQorCW1vdmIgJWFsLFNZTUJPTF9OQU1FKHg4Nl9tYXNrKQ0KKwlnZXRD eDg2KCQweGZlKQ0KKwltb3ZiICVhbCxTWU1CT0xfTkFNRSh4ODZfbW9kZWwp DQorCXN0aQ0KKw0KKyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWF81WDg2KSB8 fCBkZWZpbmVkKENPTkZJR19DWVJJWF82WDg2KQ0KKwlhbmRiICQweGYwLCVh bA0KKyMgIGlmZGVmIENPTkZJR19DWVJJWF82WDg2DQorCWNtcGIgJDB4MzAs JWFsDQorCWplIGlzNng4Ng0KKyMgIGVuZGlmDQorIyAgaWZkZWYgQ09ORklH X0NZUklYXzVYODYNCisJY21wYiAkMHgyMCwlYWwNCisJamUgaXM1eDg2DQor IyAgZW5kaWYNCisJLyogQ3g0ODYgb3Igc29tZXRoaW5nIGJleW9uZCBhIDZ4 ODYgKE0yIG9yIGJldHRlcikuIE5vdGUgdGhhdA0KKwkgKiB0aGUgQ3g0ODYg YWxzbyBoYXZlIHBlcmZvcm1hbmNlIGZlYXR1cmVzIHdlIGNvdWxkIHR3ZWFr DQorCSAqIGJ1dCBnaXZlbiB0aGUgcHJvYmxlbXMgd2l0aCBbNTZdeDg2LCB0 aGUgbnVtYmVyIG9mIEN4NDg2DQorCSAqIHZhcmlhbnRzLCB0aGUgZmFjdCB0 aGF0IHRoZSBDeDQ4NiBpcyBwcmV0dHkgd2VsbCBkZWFkDQorCSAqIG5vdyBh bmQgdGhlIGZhY3QgdGhhdCBJIGhhdmUgbm8gQ3g0ODYgbXlzZWxmIEkgaGF2 ZW4ndA0KKwkgKiByaXNrZWQgaXQuIE5vciBoYXZlIEkgbG9va2VkIGF0IHRo ZSBNMiBpbiBhbnkgZGV0YWlsIHlldC4NCisJICovDQorCWptcCBpczQ4Ng0K KyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWF81WDg2KSB8 fCBkZWZpbmVkKENPTkZJR19DWVJJWF9GQVNUX0lPKQ0KKwkvKiBTcGVjaWFs IHNldCB1cCBmb3IgNXg4NiAqLw0KK2lzNXg4NjoNCisJY2xpDQorCW1vdmIg JWN4LCVieA0KKwlhbmRiICQweDBmLCVieAkJIyBFbmFibGUgYWxsIGNvbmZp ZyByZWdpc3RlcnMNCisJb3JiICQweDEwLCVieA0KKwlzZXRDeDg2KCQweGMz LCVieCkNCisNCisJZ2V0Q3g4NigkMHgyMCkJCSMgUENSMCB8PSBMU1NFUiB8 IEJUQl9FTg0KKwlvcmIgJDB4ODIsJWF4CQkjIExPT1BfRU4gaXMgYnJva2Vu LCBSU1RLX0VOIHNob3dzIG5vIGJlbmVmaXQNCisJbW92YiAlYXgsJWJ4CQkj IGFuZCBMU1NFUj0wIGNvdWxkIGJyZWFrIG1lbW9yeSBtYXBwZWQNCisJc2V0 Q3g4NigkMHgyMCwlYngpCSMgZGV2aWNlcyAtIHdlIGhhdmUgbm8gd2F5IG9m IGtub3dpbmcpDQorDQorI2lmZGVmIENPTkZJR19DWVJJWF9GQVNUX0lPDQor CWdldEN4ODYoJDB4ZTgpCQkjIENDUjQ6IElPUlQ9MCAobm9kZWxheSkNCisJ YW5kYiAkMHhmMSwlYXgNCisJbW92YiAlYXgsJWJ4DQorCXNldEN4ODYoJDB4 ZTgsJWJ4KQ0KKyNlbmRpZg0KKw0KKwlzZXRDeDg2KCQweGMzLCVjeCkJIyBy ZXN0b3JlIENDUjMNCisJc3RpDQorCWptcCBpczQ4Ng0KKyNlbmRpZg0KKw0K KyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWF82WDg2KSB8fCBkZWZpbmVkKENP TkZJR19DWVJJWF9GQVNUX0lPKQ0KKwkvKiBTcGVjaWFsIHNldCB1cCBmb3Ig Nng4NiAqLw0KK2lzNng4NjoNCisJY2xpDQorCW1vdmIgJWN4LCVieA0KKwlh bmRiICQweDBmLCVieAkJIyBFbmFibGUgYWxsIGNvbmZpZyByZWdpc3RlcnMN CisJb3JiICQweDEwLCVieA0KKwlzZXRDeDg2KCQweGMzLCVieCkNCisNCisj aWYgIWRlZmluZWQoX19TTVBfXykgJiYgZGVmaW5lZChDT05GSUdfQ1lSSVhf Nlg4Nl9OT0xPQ0spDQorCWdldEN4ODYoJDB4YzEpCQkjIENDUjEgfD0gTk9f TE9DSw0KKwlvcmIgJDB4MTAsJWF4DQorCW1vdmIgJWF4LCVieA0KKwlzZXRD eDg2KCQweGU4LCVieCkNCisjZW5kaWYNCisNCisjaWZkZWYgQ09ORklHX0NZ UklYX0ZBU1RfSU8NCisJZ2V0Q3g4NigkMHhlOCkJCSMgQ0NSNDogSU9SVD03 IChub2RlbGF5KQ0KKwlvcmIgJDB4OTcsJWF4DQorCW1vdmIgJWF4LCVieA0K KwlzZXRDeDg2KCQweGU4LCVieCkNCisjZW5kaWYNCisNCisJZ2V0Q3g4Nigk MHhlOSkJCSMgQ0NSNSAmPSB+U0xPUA0KKwlhbmRiICQweGZkLCVheA0KKyNp ZmRlZiBDT05GSUdfQ1lSSVhfNlg4Nl9XVEFMTE9DDQorCW9yYiAkMHgwMSwl YXgJCSMgQ0NSNSB8PSBXVF9BTExPQw0KKyNlbmRpZg0KKwltb3ZiICVheCwl YngNCisJc2V0Q3g4NigkMHhlOSwlYngpDQorDQorI2lmZGVmIENPTkZJR19D WVJJWF82WDg2X0JUQgkjIElCTSBkb2N1bWVudGF0aW9uLCBubyBDeXJpeCBk b2NzDQorCWdldEN4ODYoJDB4MzApCQkjIEVuYWJsZSB0ZXN0IHJlZ2lzdGVy IG9wY29kZXMNCisJbW92YiAlYXgsJWR4DQorCW9yYiAkMHg0MCwlYXgNCisJ bW92YiAlYXgsJWJ4DQorCXNldEN4ODYoJDB4MzAsJWJ4KQ0KKw0KKwltb3Yg JDB4MjgsJWVieAkJIyBFbmFibGUgRkFSIENPRnMgaW4gQlRCDQorCS5ieXRl IDB4MGYsMHgyNiwweGNiCSMgbW92ICVlYngsJXRyMQ0KKwkuYnl0ZSAweDBm LDB4MjQsMHhkMAkjIG1vdiAldHIyLCVlYXgNCisjaWYgMA0KKwlhbmQgJDB4 ZmZmZmZmZmQsJWVheAkjIGFjY29yZGluZyB0byBDeXJpeC9JQk0gZG9jdW1l bnRhdGlvbg0KKyNlbHNlDQorCWFuZCAkMHhmZmZmZmZmOCwlZWF4CSMgYWNj b3JkaW5nIHRvIDZ4ODZvcHQNCisJb3IgICQweDAwMDAwMDcwLCVlYXgNCisj ZW5kaWYNCisJLmJ5dGUgMHgwZiwweDI2LDB4ZDAJIyBtb3YgJWVheCwldHIy DQorDQorCXNldEN4ODYoJDB4MzAsJWR4KQkjIERpc2FibGUgdGVzdCByZWdp c3RlciBvcGNvZGVzDQorI2VuZGlmIC8qIENPTkZJR19DWVJJWF82WDg2X0JU QiAqLw0KKw0KKwlzZXRDeDg2KCQweGMzLCVjeCkJIyByZXN0b3JlIENDUjMN CisJc3RpDQorI2VuZGlmIC8qIENPTkZJR19DWVJJWF82WDg2IG9yIENPTkZJ R19DWVJJWF9GQVNUX0lPICovDQorI2VuZGlmIC8qIENPTkZJR19DWVJJWCAq Lw0KKw0KK2lzNDg2Ogltb3ZsICVjcjAsJWVheAkJIyA0ODYgb3IgYmV0dGVy DQogCWFuZGwgJDB4ODAwMDAwMTEsJWVheAkjIFNhdmUgUEcsUEUsRVQNCiAJ b3JsICQweDUwMDIyLCVlYXgJIyBzZXQgQU0sIFdQLCBORSBhbmQgTVANCiAJ am1wIDJmDQorDQogaXMzODY6CXB1c2hsICVlY3gJCSMgcmVzdG9yZSBvcmln aW5hbCBFRkxBR1MNCiAJcG9wZmwNCiAJbW92bCAlY3IwLCVlYXgJCSMgMzg2 DQpJbmRleDogYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Vzci9DVlMvbGludXgvYXJjaC9p Mzg2L2tlcm5lbC9zZXR1cC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjIuNw0KZGlmZiAtdSAtdSAtcjEuMS4yLjcgc2V0dXAuYw0KLS0tIHNldHVw LmMJMTk5Ny8wNC8xNiAyMDo1MjozMAkxLjEuMi43DQorKysgc2V0dXAuYwkx OTk3LzA0LzIyIDIyOjI2OjUxDQpAQCAtNDIsNyArNDIsNyBAQA0KIGNoYXIg eDg2X21hc2sgPSAwOwkJLyogc2V0IGJ5IGtlcm5lbC9oZWFkLlMgKi8NCiBp bnQgeDg2X2NhcGFiaWxpdHkgPSAwOwkJLyogc2V0IGJ5IGtlcm5lbC9oZWFk LlMgKi8NCiBpbnQgZmRpdl9idWcgPSAwOwkJLyogc2V0IGlmIFBlbnRpdW0o VE0pIHdpdGggRlAgYnVnICovDQotaW50IGhhdmVfY3B1aWQgPSAwOyAgICAg ICAgICAgICAvKiBzZXQgaWYgQ1BVSUQgaW5zdHJ1Y3Rpb24gd29ya3MgKi8N CitpbnQgaGF2ZV9jcHVpZCA9IC0xOyAgICAgICAgICAgIC8qIENQVUlEIGxl dmVsICgtMSBpZiBubyBDUFVJRCkgKi8NCiANCiBjaGFyIHg4Nl92ZW5kb3Jf aWRbMTNdID0gInVua25vd24iOw0KIA0KQEAgLTI1NCwxMSArMjU0LDgzIEBA DQogCXJldHVybiBOVUxMOw0KIH0NCiANCi1zdGF0aWMgY29uc3QgY2hhciAq IGdldG1vZGVsKGludCB4ODYsIGludCBtb2RlbCkNCitzdGF0aWMgY29uc3Qg Y2hhciAqIGN5cml4bW9kZWwodW5zaWduZWQgaW50IG5yKQ0KK3sNCisJc3Rh dGljIGNoYXIgbmJ1ZlszMl07DQorDQorCS8qIE5vdGUgdGhhdCBzb21lIG9m IHRoZSBwb3NzaWJpbGl0aWVzIHRoaXMgZGVjb2RpbmcgYWxsb3dzDQorCSAq IGhhdmUgbmV2ZXIgYWN0dWFsbHkgYmVlbiBtYW51ZmFjdHVyZWQgLSBidXQg dGhvc2UgdGhhdA0KKwkgKiBkbyBhY3R1YWxseSBleGlzdCBhcmUgY29ycmVj dGx5IGRlY29kZWQuDQorCSAqLw0KKwlpZiAobnIgPCAweDIwKSB7DQorCQlz dHJjcHkobmJ1ZiwgIkN4NDg2Iik7DQorCQlpZiAoIShuciAmIDB4MTApKSB7 DQorCQkJc3ByaW50ZihuYnVmKzUsICIlYyVzJWMiLA0KKwkJCQkobnIgJiAw eDAxKSA/ICdEJyA6ICdTJywNCisJCQkJKG5yICYgMHgwNCkgPyAiUngiIDog IkxDIiwNCisJCQkJKG5yICYgMHgwMikgPyAnMicgOiAnXDAwMCcpOw0KKwkJ fSBlbHNlIGlmICghKG5yICYgMHgwOCkpIHsNCisJCQlzcHJpbnRmKG5idWYr NSwgIlMlcyVjIiwNCisJCQkJKG5yICYgMHgwMSkgPyAiMiIgOiAiIiwNCisJ CQkJKG5yICYgMHgwMikgPyAnZScgOiAnXDAwMCcpOw0KKwkJfSBlbHNlIHsN CisJCQlzcHJpbnRmKG5idWYrNSwgIkRYJWMiLA0KKwkJCQluciA9PSAweDFi ID8gJzInDQorCQkJCQk6IChuciA9PSAweDFmID8gJzQnIDogJ1wwMDAnKSk7 DQorCQl9DQorCQlyZXR1cm4gbmJ1ZjsNCisJfSBlbHNlIGlmIChuciA+PSAw eDIwICYmIG5yIDw9IDB4NGYpIHsJLyogNXg4NiwgNng4NiBvciBHeDg2ICov DQorCQlzcHJpbnRmKG5idWYsICIlY3g4NiAlY3ggQ29yZS9CdXMgQ2xvY2si LA0KKwkJCSI/PzU2RyJbbnI+PjRdLA0KKwkJCSIxMj8/NDMiW25yICYgMHgw NV0pOw0KKwkJcmV0dXJuIG5idWY7DQorCX0gZWxzZSBpZiAobnIgPj0gMHg1 MCAmJiBuciA8PSAweDVmKSB7CS8qIEN5cml4IE0yICovDQorCQlzcHJpbnRm KG5idWYsICJNMiAlYyVzeCBDb3JlL0J1cyBDbG9jayIsDQorCQkJIjEyMjMz NDQ1IltuciAmIDB4MDddLA0KKwkJCShuciAmJiAhKG5yJjEpKSA/ICIuNSIg OiAiIik7DQorCQlyZXR1cm4gbmJ1ZjsNCisJfQ0KKw0KKwkvKiBQcm9iYWJs eSAweGZkIChDeDQ4NltTRF1MQyB3aXRoIG5vIElEIHJlZ2lzdGVyKQ0KKwkg KiBvciAweGZlIChDeDQ4NiBBIHN0ZXAgd2l0aCBubyBJRCByZWdpc3Rlciku DQorCSAqLw0KKwlyZXR1cm4gIkN4NDg2IjsNCit9DQorDQorc3RhdGljIGNv bnN0IGNoYXIgKiBnZXRtb2RlbChpbnQgeDg2LCBpbnQgbW9kZWwsIGludCBo YXZlX2NwdWlkKQ0KIHsNCiAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBOVUxM Ow0KLSAgICAgICAgc3RhdGljIGNoYXIgbmJ1ZlsxMl07DQotCXN3aXRjaCAo eDg2KSB7DQorICAgICAgICBzdGF0aWMgY2hhciBuYnVmWzQ5XTsNCisNCisJ aWYgKCh4ODYgJiAweGYwKSA9PSAweDEwKSB7CQkvKiBDeXJpeCAqLw0KKwkJ cCA9IGN5cml4bW9kZWwobW9kZWwpOw0KKwl9IGVsc2UgaWYgKCh4ODYgJiAw eGYwKSA9PSAweDIwKSB7CS8qIEFNRCAqLw0KKwkJLyogQWN0dWFsbHkgd2Ug bXVzdCBoYXZlIGNwdWlkIG9yIHdlIGNvdWxkIG5ldmVyIGhhdmUNCisJCSAq IGZpZ3VyZWQgb3V0IHRoYXQgdGhpcyB3YXMgQU1EIGZyb20gdGhlIHZlbmRv ciBpbmZvIDotKS4NCisJCSAqLw0KKwkJaWYgKGhhdmVfY3B1aWQgPCAwKQ0K KwkJCXAgPSAiQW00ODYiOw0KKwkJZWxzZSB7DQorCQkJaW50IG4sIGR1bW15 Ow0KKwkJCWNwdWlkKDB4ODAwMDAwMDAsICZuLCAmZHVtbXksICZkdW1teSwg JmR1bW15KTsNCisJCQlpZiAoIW4pIHsNCisJCQkJaWYgKHg4NiA9PSA0KQ0K KwkJCQkJcCA9IGk0ODZtb2RlbChtb2RlbCk7DQorCQkJCWVsc2UgaWYgKHg4 NiA9PSA1KQ0KKwkJCQkJcCA9ICJBTUQtSzUgKE1vZGVsIDApIjsNCisJCQl9 IGVsc2Ugew0KKwkJCQlpbnQgKnYgPSAoaW50ICopbmJ1ZjsNCisJCQkJY3B1 aWQoMHg4MDAwMDAwMiwgJnZbMF0sICZ2WzFdLCAmdlsyXSwgJnZbM10pOw0K KwkJCQljcHVpZCgweDgwMDAwMDAzLCAmdls0XSwgJnZbNV0sICZ2WzZdLCAm dls3XSk7DQorCQkJCWNwdWlkKDB4ODAwMDAwMDQsICZ2WzhdLCAmdls5XSwg JnZbMTBdLCAmdlsxMV0pOw0KKwkJCQluYnVmWzQ4XSA9ICdcMCc7DQorCQkJ CXAgPSBuYnVmOw0KKwkJCX0NCisJCX0NCisJfSBlbHNlIHN3aXRjaCAoeDg2 KSB7CQkJLyogSW50ZWwgKi8NCisJCWNhc2UgMDoNCisJCQlwID0gInVua25v d24iOw0KKwkJCWJyZWFrOw0KIAkJY2FzZSA0Og0KIAkJCXAgPSBpNDg2bW9k ZWwobW9kZWwpOw0KIAkJCWJyZWFrOw0KQEAgLTMwNCwyMSArMzc2LDI1IEBA DQogI2VuZGlmDQogDQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuICs9 IHNwcmludGYoYnVmZmVyK2xlbiwicHJvY2Vzc29yXHQ6ICVkXG4iDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNwdVx0XHQ6 ICVjODZcbiINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiY3B1IGZhbWlseVx0OiAlY1xuIg0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJtb2RlbFx0XHQ6ICVzXG4iDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlbmRvcl9p ZFx0OiAlc1xuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDUFVOLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENEKHg4NikrJzAnLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENEKGhhdmVfY3B1aWQpID8gDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRtb2RlbChD RCh4ODYpLCBDRCh4ODZfbW9kZWwpKSA6DQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biIsDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENEKHg4NikgJiAweDBm KSsnMCcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2V0bW9kZWwoQ0QoeDg2KSwgQ0QoeDg2X21vZGVsKSwgQ0QoaGF2ZV9j cHVpZCkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENEKHg4Nl92ZW5kb3JfaWQpKTsNCiAgICAgICAgIA0KLSAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChDRCh4ODZfbWFzaykpDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZW4gKz0gc3ByaW50ZihidWZmZXIr bGVuLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInN0ZXBwaW5nXHQ6ICVkXG4iLA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0QoeDg2X21hc2sp KTsNCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQorICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKENEKHg4Nl9tYXNrKSkgew0KKwkJCQlpZiAo KENEKHg4NikgJiAweGYwKSA9PSAweDEwKQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCWxlbiArPSBzcHJpbnRmKGJ1ZmZlcitsZW4sDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAJInN0ZXBwaW5nXHQ6ICVkIHJldiAlZFxuIiwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlDRCh4ODZfbWFz aykgPj4gNCwNCisJCQkJCQlDRCh4ODZfbWFzaykgJiAweDBmKTsNCisJCQkJ ZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWxlbiAr PSBzcHJpbnRmKGJ1ZmZlcitsZW4sDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAJInN0ZXBwaW5nXHQ6ICVkXG4i LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCUNEKHg4Nl9tYXNrKSk7DQorICAgICAgICAgICAgICAgICAgICAg ICAgfSBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs ZW4gKz0gc3ByaW50ZihidWZmZXIrbGVuLCANCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGVwcGluZ1x0OiB1 bmtub3duXG4iKTsNCiAgICAgICAgIA0KQEAgLTMyNyw3ICs0MDMsNyBAQA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJobHRf YnVnXHRcdDogJXNcbiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZnB1XHRcdDogJXNcbiINCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiZnB1X2V4Y2VwdGlvblx0OiAlc1xu Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj cHVpZFx0XHQ6ICVzXG4iDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImNwdWlkIGxldmVsXHQ6ICVkXG4iDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndwXHRcdDogJXNcbiIN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxh Z3NcdFx0OiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0QoZmRpdl9idWcpID8gInllcyIgOiAibm8iLA0KQEAgLTMzNSw3 ICs0MTEsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENEKGhhcmRfbWF0aCkgPyAieWVzIiA6ICJubyIsDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENEKGhhcmRfbWF0 aCkgJiYgaWdub3JlX2lycTEzKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPyAieWVzIiA6ICJubyIsDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0QoaGF2ZV9jcHVpZCkg PyAieWVzIiA6ICJubyIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ0QoaGF2ZV9jcHVpZCksDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ0Qod3Bfd29ya3Nfb2spID8gInll cyIgOiAibm8iKTsNCiAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg ICAgIGZvciAoIGkgPSAwIDsgaSA8IDMyIDsgaSsrICkgew0KSW5kZXg6IGFy Y2gvaTM4Ni9tbS9pbml0LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvdXNyL0NWUy9saW51eC9hcmNoL2kzODYvbW0vaW5pdC5jLHYN CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMTANCmRpZmYgLXUgLXUgLXIx LjEuMi4xMCBpbml0LmMNCi0tLSBpbml0LmMJMTk5Ny8wNC8xNiAyMDo1Mjoz MgkxLjEuMi4xMA0KKysrIGluaXQuYwkxOTk3LzA0LzE2IDIxOjQ5OjE5DQpA QCAtMTE2LDYgKzExNiw2NyBAQA0KIAl1bnNpZ25lZCBsb25nIHRtcDsNCiAJ dW5zaWduZWQgbG9uZyBhZGRyZXNzOw0KIA0KKyNpZiBkZWZpbmVkKENPTkZJ R19DWVJJWCkgJiYgZGVmaW5lZChDT05GSUdfQ1lSSVhfNlg4Nl9WU1BNKSAm JiAhZGVmaW5lZChfX1NNUF9fKQ0KKwl1bnNpZ25lZCBsb25nIHZzcG1fbWF4 ID0gX192YSgwKTsNCisNCisJLyogSWYgdGhpcyBpcyBhIEN5cml4IDZ4ODYg d2UgdXNlIHRoZSB2YXJpYWJsZSBzaXplIHBhZ2luZw0KKwkgKiBtZWNoYW5p c20gKFZTUE0pIHRvIG1hcCBwaHlzaWNhbCBtZW1vcnkgYXQgMHhjMDAwMDAw MC4NCisJICogTm90ZSB0aGF0IFZTUE0gcGFnZXMgYXJlIHN0b3JlZCBvbiB0 aGUgQ1BVIG9ubHkgc28gdGhpcw0KKwkgKiBuZWVkcyB0byBiZSBkb25lIGZv ciBlYWNoIHByb2Nlc3NvciBpbiBhIG11bHRpLXByb2Nlc3Nvcg0KKwkgKiBz eXN0ZW0uIElmIHdlIGhhdmUgYSBtaXh0dXJlIG9mIHByb2Nlc3NvcnMgd2Ug d291bGQgYWxzbw0KKwkgKiBuZWVkIHRvIHNldCB1cCB0aGUgdHJhZGl0aW9u YWwgcGFnZSB0YWJsZXMgZm9yIHRoZW0uDQorCSAqIE5vdGUgYWxzbyB0aGF0 IFZTUE0gcGFnZXMgd2lsbCBiZSBnbG9iYWwgdG8gYWxsIG1lbW9yeQ0KKwkg KiBzcGFjZXMgc2luY2UgdGhleSBhcmUgbm90IHN0b3JlZCBpbiB0aGUgbm9y bWFsIHBhZ2UNCisJICogZGlyZWN0b3JpZXMuDQorCSAqLw0KKwlpZiAoKHg4 NiAmIDB4ZjApID09IDB4MTAgfHwgKHg4Nl9tb2RlbCAmIDB4ZjApID09IDB4 MzApIHsNCisJCWludCB2c3BtX2luZGV4ID0gMDsNCisNCisJCWRvIHsNCisJ CQl1bnNpZ25lZCBsb25nIG1lbV9zaXplOw0KKw0KKwkJCW1lbV9zaXplID0g NDA5NjsNCisJCQl3aGlsZSAodnNwbV9tYXgrbWVtX3NpemUgPCBlbmRfbWVt KQ0KKwkJCQltZW1fc2l6ZSA8PD0gMTsNCisJCQlpZiAodnNwbV9tYXgrbWVt X3NpemUgPiBlbmRfbWVtKQ0KKwkJCQlpZiAoKG1lbV9zaXplID4+PSAxKSA8 IDQwOTYpDQorCQkJCQlicmVhazsNCisNCisJCQlhc20oCSJtb3ZsICUwLCUl ZWF4XG4iDQorCQkJCSJtb3ZsICUlZWF4LCUldHI3XG4iDQorCQkJCSJtb3Zs ICQweDAwMDAwMDA0LCUlZWF4XG4iDQorCQkJCSJtb3ZsICUlZWF4LCUldHI2 XG4iDQorCQkJCSJtb3ZsICUxLCUlZWF4XG4iDQorCQkJCSJtb3ZsICUlZWF4 LCUldHI3XG4iDQorCQkJCSJtb3ZsICUyLCUlZWF4XG4iDQorCQkJCSJtb3Zs ICUlZWF4LCUldHI2XG4iDQorCQkJOiAvKiBubyBvdXRwdXRzICovDQorCQkJ OiAiZyIgKCgoKG1lbV9zaXplLTEpICYgMHhmZmZmZjAwMCkpIHwgKHZzcG1f aW5kZXg8PDcpKSwNCisJCQkgICJnIiAoKF9fcGEodnNwbV9tYXgpICYgMHhm ZmZmZjAwMCkgfCAodnNwbV9pbmRleDw8NykpLA0KKwkJCSAgImciICgodnNw bV9tYXggJiAweGZmZmZmMDAwKSB8IDB4MDAwMDBjZDYpDQorCQkJOiAiZWF4 IiwgImNjIg0KKwkJCSk7DQorDQorCQkJdnNwbV9tYXggKz0gbWVtX3NpemU7 DQorDQorI2lmIDENCisJCQkvKiBKdXN0IHVzZSBvbmUgVlNQTSBwYWdlIGZv ciBub3csIGFueXRoaW5nDQorCQkJICogb3ZlciB3aWxsIGJlIHRyYWRpdGlv bmFsbHkgcGFnZWQuDQorCQkJICogKFNlZSBEb2N1bWVudGF0aW9uL0N5cml4 LikNCisJCQkgKi8NCisJCQlicmVhazsNCisjZW5kaWYNCisJCX0gd2hpbGUg KHZzcG1fbWF4IDwgZW5kX21lbSAmJiB2c3BtX2luZGV4KysgPCA0KTsNCisN CisJCS8qIFdyaXRlIHByb3RlY3QgZG9lcyB3b3JrIGNvcnJlY3RseSBidXQg dGhlIHRlc3QNCisJCSAqIHdpbGwgZmFpbCBiZWNhdXNlIHdlIGNhbid0IG1h cCBqdXN0IHBhZ2UgMCByZWFkDQorCQkgKiBvbmx5IGZyb20gdW5kZXIgdGhl IFZTUE0gYmlnIHBhZ2UuIElmIHdlIGRpZG4ndA0KKwkJICoga25vdyBiZWZv cmUgd2UgZG8gbm93Lg0KKwkJICovDQorCQl3cF93b3Jrc19vayA9IDE7DQor CX0NCisjZW5kaWYNCisNCiAvKg0KICAqIFBoeXNpY2FsIHBhZ2UgMCBpcyBz cGVjaWFsOyBpdCdzIG5vdCB0b3VjaGVkIGJ5IExpbnV4IHNpbmNlIEJJT1MN CiAgKiBhbmQgU01NIChmb3IgbGFwdG9wcyB3aXRoIFszNF04Ni9TTCBjaGlw cykgbWF5IG5lZWQgaXQuICBJdCBpcyByZWFkDQpAQCAtMTgyLDYgKzI0Mywx NyBAQA0KIAkJCWFkZHJlc3MgKz0gNCoxMDI0KjEwMjQ7DQogCQkJY29udGlu dWU7DQogCQl9DQorDQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYKSAmJiBk ZWZpbmVkKENPTkZJR19DWVJJWF82WDg2X1ZTUE0pICYmICFkZWZpbmVkKF9f U01QX18pDQorCQlpZiAoKHg4NiAmIDB4ZjApID09IDB4MTAJLyogQ3lyaXgg Ki8NCisJCSYmICh4ODZfbW9kZWwgJiAweGYwKSA9PSAweDMwCS8qIDZ4ODYg Ki8NCisJCSYmIChhZGRyZXNzICsgUEFHRV9TSVpFKlBUUlNfUEVSX1BURSkg PCB2c3BtX21heCkgeyAvKiB3aXRoaW4gVlNQTSBtYXBwaW5ncyAqLw0KKwkJ CXBnX2RpcisrOw0KKwkJCWFkZHJlc3MgKz0gUEFHRV9TSVpFICogUFRSU19Q RVJfUFRFOw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKyNlbmRpZg0KKw0KIAkJ LyoNCiAJCSAqIFdlJ3JlIG9uIGEgWzM0XTg2LCB1c2Ugbm9ybWFsIHBhZ2Ug dGFibGVzLg0KIAkJICogcGdfdGFibGUgaXMgcGh5c2ljYWwgYXQgdGhpcyBw b2ludA0KQEAgLTE5NCwxMiArMjY2LDE4IEBADQogDQogCQlwZ2RfdmFsKHBn X2Rpcls3NjhdKSA9IF9QQUdFX1RBQkxFIHwgKHVuc2lnbmVkIGxvbmcpIHBn X3RhYmxlOw0KIAkJcGdfZGlyKys7DQorDQogCQkvKiBub3cgY2hhbmdlIHBn X3RhYmxlIHRvIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3NlcyAqLw0KIAkJcGdf dGFibGUgPSAocHRlX3QgKikgX192YShwZ190YWJsZSk7DQogCQlmb3IgKHRt cCA9IDAgOyB0bXAgPCBQVFJTX1BFUl9QVEUgOyB0bXArKyxwZ190YWJsZSsr KSB7DQogCQkJcHRlX3QgcHRlID0gbWtfcHRlKGFkZHJlc3MsIFBBR0VfS0VS TkVMKTsNCisjaWYgZGVmaW5lZChDT05GSUdfQ1lSSVgpICYmIGRlZmluZWQo Q09ORklHX0NZUklYXzZYODZfVlNQTSkgJiYgIWRlZmluZWQoX19TTVBfXykN CisJCQlpZiAoYWRkcmVzcyA8IHZzcG1fbWF4IHx8IGFkZHJlc3MgPj0gZW5k X21lbSkNCisJCQkJcHRlX3ZhbChwdGUpID0gMDsNCisjZWxzZQ0KIAkJCWlm IChhZGRyZXNzID49IGVuZF9tZW0pDQogCQkJCXB0ZV92YWwocHRlKSA9IDA7 DQorI2VuZGlmDQogCQkJc2V0X3B0ZShwZ190YWJsZSwgcHRlKTsNCiAJCQlh ZGRyZXNzICs9IFBBR0VfU0laRTsNCiAJCX0NCkluZGV4OiBpbmNsdWRlL2Fz bS1pMzg2L2J1Z3MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IC91c3IvQ1ZTL2xpbnV4L2luY2x1ZGUvYXNtLWkzODYvYnVncy5oLHYN CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMg0KZGlmZiAtdSAtdSAtcjEu MS4yLjIgYnVncy5oDQotLS0gYnVncy5oCTE5OTYvMTAvMDkgMjA6NTk6NTMJ MS4xLjIuMg0KKysrIGJ1Z3MuaAkxOTk3LzA0LzE5IDEyOjE2OjM1DQpAQCAt MTMwLDUgKzEzMCw1IEBADQogCWNoZWNrX3RsYigpOw0KIAljaGVja19mcHUo KTsNCiAJY2hlY2tfaGx0KCk7DQotCXN5c3RlbV91dHNuYW1lLm1hY2hpbmVb MV0gPSAnMCcgKyB4ODY7DQorCXN5c3RlbV91dHNuYW1lLm1hY2hpbmVbMV0g PSAnMCcgKyAoeDg2ICYgMHgwZik7DQogfQ0KSW5kZXg6IGluY2x1ZGUvYXNt LWkzODYvcHJvY2Vzc29yLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvdXNyL0NWUy9saW51eC9pbmNsdWRlL2FzbS1pMzg2L3Byb2Nl c3Nvci5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuOA0KZGlmZiAt dSAtdSAtcjEuMS4yLjggcHJvY2Vzc29yLmgNCi0tLSBwcm9jZXNzb3IuaAkx OTk3LzAxLzI3IDIwOjI2OjI3CTEuMS4yLjgNCisrKyBwcm9jZXNzb3IuaAkx OTk3LzA0LzExIDIyOjQyOjQ5DQpAQCAtMTYsNyArMTYsNyBAQA0KICAqLw0K IA0KIGV4dGVybiBjaGFyIGhhcmRfbWF0aDsNCi1leHRlcm4gY2hhciB4ODY7 CQkvKiBsb3dlciA0IGJpdHMgKi8NCitleHRlcm4gY2hhciB4ODY7CQkvKiB1 cHBlciA0IGJpdHM9dmVuZG9yLCBsb3dlciA0IGJpdHM9ZmFtaWx5ICovDQog ZXh0ZXJuIGNoYXIgeDg2X3ZlbmRvcl9pZFsxM107DQogZXh0ZXJuIGNoYXIg eDg2X21vZGVsOwkJLyogbG93ZXIgNCBiaXRzICovDQogZXh0ZXJuIGNoYXIg eDg2X21hc2s7CQkvKiBsb3dlciA0IGJpdHMgKi8NCkBAIC0xNjgsNSArMTY4 LDIxIEBADQogI2RlZmluZSBhbGxvY19rZXJuZWxfc3RhY2socCkJX19nZXRf ZnJlZV9wYWdlKEdGUF9LRVJORUwpDQogI2RlZmluZSBmcmVlX3Rhc2tfc3Ry dWN0KHApCWtmcmVlKHApDQogI2RlZmluZSBmcmVlX2tlcm5lbF9zdGFjayhw YWdlKSBmcmVlX3BhZ2UoKHBhZ2UpKQ0KKw0KK2V4dGVybiBpbmxpbmUgdm9p ZCBjcHVpZChpbnQgb3AsIGludCAqZWF4LCBpbnQgKmVieCwgaW50ICplY3gs IGludCAqZWR4KQ0KK3sNCisJX19hc21fXygibW92bCAlNCwlJWVheFxuXHQi DQorCQkiLmJ5dGUgMHgwZiwgMHhhMlxuXHQiDQorCQkibW92bCAlJWVheCwl MFxuXHQiDQorCQkibW92bCAlJWVieCwlMVxuXHQiDQorCQkibW92bCAlJWVj eCwlMlxuXHQiDQorCQkibW92bCAlJWVkeCwlM1xuXHQiDQorCQk6ICI9bSIg KCplYXgpLA0KKwkJICAiPW0iICgqZWJ4KSwNCisJCSAgIj1tIiAoKmVjeCks DQorCQkgICI9bSIgKCplZHgpDQorCQk6ICJnIiAob3ApDQorCQk6ICJlYXgi LCAiZWJ4IiwgImVjeCIsICJlZHgiLCAiY2MiKTsNCit9DQogDQogI2VuZGlm IC8qIF9fQVNNX0kzODZfUFJPQ0VTU09SX0ggKi8NCg== --279709697-620127371-861792973=:25693-- FKHg4Nl92 ZW5kb3JfaWQpCSMgbG93IDQgY2hhcnMNCisJbW92bCAkMHgwMDAwMDA3OCxT WU1CT0xfTkFNRSh4ODZfdmVuZG9yX2lkKSs0CSMgbmV4dCA0IGNoYXJzDQor DQorI2lmZGVmIENPTkZJR19DWVJJWA0KKwkvKg0KKwkgKiBOLkIuIFRoZSBw YXR0ZXJuIG9mIGFjY2Vzc2VzIHRvIDB4MjIgYW5kIDB4MjMgaXMgKmltcG9y dGFudCoNCisJICogICAgICBzbyBkbyBub3QgdHJ5IGFuZCAib3B0aW1pc2Ui IGl0ISBGb3IgdGhlIHNhbWUgcmVhc29uIHdlDQorCSAqCWRvIGFsbCB0aGlz IHdpdGggaW50ZXJydXB0cyBvZmYganVzdCB0byBiZSBzdXJlLg0KKwkgKi8N CisjZGVmaW5lIHNldEN4ODYocmVnLCB2YWwpIFwNCisJbW92YiByZWcsJWF4 OwlcDQorCW91dGIgJWF4LCQweDIyOwlcDQorCW1vdmIgdmFsLCVheDsJXA0K KwlvdXRiICVheCwkMHgyMw0KKw0KKyNkZWZpbmUgZ2V0Q3g4NihyZWcpIFwN CisJbW92YiByZWcsJWF4OwlcDQorCW91dGIgJWF4LCQweDIyOwlcDQorCWlu YiAkMHgyMywlYXgNCisNCisJY2xpDQorCWdldEN4ODYoJDB4YzMpCQkjIGdl dCBDQ1IzDQorCW1vdmIgJWF4LCVjeAkJIyBTYXZlIG9sZCB2YWx1ZQ0KKwlt b3ZiICVheCwlYngNCisJYW5kYiAkMHgwZiwlYngJCSMgRW5hYmxlIGFsbCBj b25maWcgcmVnaXN0ZXJzIChmb3IgQ0NSNCBhY2Nlc3MpDQorCW9yYiAkMHgx MCwlYngNCisJc2V0Q3g4NigkMHhjMywlYngpDQorDQorI2lmZGVmIENPTkZJ R19DWVJJWF9TVVNQX0hMVA0KKwlnZXRDeDg2KCQweGMyKQkJIyBDQ1IyIHw9 IFNVU1BfSExUDQorCW9yYiAkOCwlYXgNCisJbW92YiAlYXgsJWJ4DQorCXNl dEN4ODYoJDB4YzIsJWJ4KQ0KKyNlbmRpZg0KKw0KKwlnZXRDeDg2KCQweGU4 KQkJIyBDQ1I0IHw9IENQVUlEIHwgRFRFX0VODQorCW9yYiAkMHg5MCwlYXgN CisJbW92YiAlYXgsJWJ4DQorCXNldEN4ODYoJDB4ZTgsJWJ4KQ0KKw0KKwlz ZXRDeDg2KCQweGMzLCVjeCkJIyBSZXN0b3JlIG9sZCBDQ1IzDQorCXN0aQ0K KyNlbmRpZiAvKiBDT05GSUdfQ1lSSVggKi8NCisNCituY3lyaXg6CW1vdmwg JDMsIFNZTUJPTF9OQU1FKHg4NikjIGF0IGxlYXN0IDM4Ng0KIAlwdXNoZmwJ CQkjIHB1c2ggRUZMQUdTDQogCXBvcGwgJWVheAkJIyBnZXQgRUZMQUdTDQog CW1vdmwgJWVheCwlZWN4CQkjIHNhdmUgb3JpZ2luYWwgRUZMQUdTDQpAQCAt MTU4LDcgKzIyNSw4IEBADQogCXhvcmwgJWVjeCwlZWF4CQkjIGNoYW5nZSBp biBmbGFncw0KIAlhbmRsICQweDQwMDAwLCVlYXgJIyBjaGVjayBpZiBBQyBi aXQgY2hhbmdlZA0KIAlqZSBpczM4Ng0KLQltb3ZsICQ0LFNZTUJPTF9OQU1F KHg4NikNCisNCisJbW92bCAkNCxTWU1CT0xfTkFNRSh4ODYpIyBhdCBsZWFz dCA0ODYNCiAJbW92bCAlZWN4LCVlYXgNCiAJeG9ybCAkMHgyMDAwMDAsJWVh eAkjIGNoZWNrIElEIGZsYWcNCiAJcHVzaGwgJWVheA0KQEAgLTE2NiwxNCAr MjM0LDIzIEBADQogCXB1c2hmbAkJCSMgNDg3U1ggd2UgY2FuJ3QgY2hhbmdl IGl0DQogCXBvcGwgJWVheA0KIAl4b3JsICVlY3gsJWVheA0KLQlhbmRsICQw eDIwMDAwMCwlZWF4DQotCWplIGlzNDg2DQotaXNuZXc6CXB1c2hsICVlY3gJ CSMgcmVzdG9yZSBvcmlnaW5hbCBFRkxBR1MNCisJcHVzaGwgJWVjeAkJIyBy ZXN0b3JlIG9yaWdpbmFsIEVGTEFHUw0KIAlwb3BmbA0KLQlpbmNsIFNZTUJP TF9OQU1FKGhhdmVfY3B1aWQpCSMgd2UgaGF2ZSBDUFVJRA0KKwlhbmRsICQw eDIwMDAwMCwlZWF4DQorCWplIG5vY3B1aWQNCisNCisJLyogZ2V0IHZlbmRv ciBpbmZvICovDQorCXhvcmwgJWVheCwgJWVheAkJCSMgY2FsbCBDUFVJRCB3 aXRoIDAgLT4gcmV0dXJuIHZlbmRvciBJRA0KKwkuYnl0ZSAweDBmLCAweGEy CQkjIENQVUlEDQorCW1vdmwgJWVheCxTWU1CT0xfTkFNRShoYXZlX2NwdWlk KQkjIHNhdmUgQ1BVSUQgbGV2ZWwNCisJbW92bCAlZWJ4LFNZTUJPTF9OQU1F KHg4Nl92ZW5kb3JfaWQpCSMgbG8gNCBjaGFycw0KKwltb3ZsICVlZHgsU1lN Qk9MX05BTUUoeDg2X3ZlbmRvcl9pZCkrNAkjIG5leHQgNCBjaGFycw0KKwlt b3ZsICVlY3gsU1lNQk9MX05BTUUoeDg2X3ZlbmRvcl9pZCkrOAkjIGxhc3Qg NCBjaGFycw0KKw0KKwljbXBsICQwLCVlYXgJCQkjIGRvIHdlIGhhdmUgcHJv Y2Vzc29yIGluZm8gYXMgd2VsbD8NCisJamUgbm9jcHVpZA0KKw0KIAkvKiBn ZXQgcHJvY2Vzc29yIHR5cGUgKi8NCi0JCQkJIyBMSU5VUyBXRSBIQVZFIEEg QlVHIEhFUkUgLSBNVVNUIENIRUNLIFdJVEgNCi0JCQkJIyBDUFVJRCMwIFRI QVQgQ1BVSUQjMSBJUyBTVVBQT1JURUQuLi4NCiAJbW92bCAkMSwgJWVheAkJ IyBVc2UgdGhlIENQVUlEIGluc3RydWN0aW9uIHRvIA0KIAkuYnl0ZSAweDBm LCAweGEyCSMgY2hlY2sgdGhlIHByb2Nlc3NvciB0eXBlDQogCW1vdmIgJWFs LCAlY2wJCSMgc2F2ZSByZWcgZm9yIGZ1dHVyZSB1c2UNCkBAIC0xODUsMjMg KzI2MiwxNTQgQEANCiAJYW5kYiAkMHgwZiwgJWNsCQkjIG1hc2sgbWFzayBy ZXZpc2lvbg0KIAltb3ZiICVjbCxTWU1CT0xfTkFNRSh4ODZfbWFzaykNCiAJ bW92bCAlZWR4LFNZTUJPTF9OQU1FKHg4Nl9jYXBhYmlsaXR5KQ0KLQkvKiBn ZXQgdmVuZG9yIGluZm8gKi8NCi0JeG9ybCAlZWF4LCAlZWF4CQkJIyBjYWxs IENQVUlEIHdpdGggMCAtPiByZXR1cm4gdmVuZG9yIElEDQotCS5ieXRlIDB4 MGYsIDB4YTIJCSMgQ1BVSUQNCi0JbW92bCAlZWJ4LFNZTUJPTF9OQU1FKHg4 Nl92ZW5kb3JfaWQpCSMgbG8gNCBjaGFycw0KLQltb3ZsICVlZHgsU1lNQk9M X05BTUUoeDg2X3ZlbmRvcl9pZCkrNAkjIG5leHQgNCBjaGFycw0KLQltb3Zs ICVlY3gsU1lNQk9MX05BTUUoeDg2X3ZlbmRvcl9pZCkrOAkjIGxhc3QgNCBj aGFycw0KIA0KLQltb3ZsICVjcjAsJWVheAkJIyA0ODYrDQotCWFuZGwgJDB4 ODAwMDAwMTEsJWVheAkjIFNhdmUgUEcsUEUsRVQNCi0Jb3JsICQweDUwMDIy LCVlYXgJIyBzZXQgQU0sIFdQLCBORSBhbmQgTVANCi0Jam1wIDJmDQotaXM0 ODY6CXB1c2hsICVlY3gJCSMgcmVzdG9yZSBvcmlnaW5hbCBFRkxBR1MNCi0J cG9wZmwNCi0JbW92bCAlY3IwLCVlYXgJCSMgNDg2DQorbm9jcHVpZDoNCisJ LyoNCisJICogRXZlbiBpZiB3ZSBoYWQgQ1BVSUQgQ3lyaXggdHJpZXMgdG8g bG9vayBjb21wYXRpYmxlIHdpdGgNCisJICogSW50ZWwgc28gd2UgaGF2ZSB0 byBnbyBlbHNld2hlcmUgZm9yIHRoZSBuaXR0eSBncml0dHkuDQorCSAqLw0K KwljbXBsICQweDY5NzI3OTQzLFNZTUJPTF9OQU1FKHg4Nl92ZW5kb3JfaWQp CSMgIkN5cmlbeC4qXSI/DQorCWplIGNoa2RldmlkCQkJCQkjIG1heWJlIC4u Lg0KKwljbXBsICQweDQ0NGQ0MTYzLFNZTUJPTF9OQU1FKHg4Nl92ZW5kb3Jf aWQpKzgJIyAiW0F1dGhlbnRpXWNBTUQiPw0KKwlqbmUgaXM0ODYNCisJb3Ji ICQweDIwLFNZTUJPTF9OQU1FKHg4NikJCSMgRmxhZyBhcyBBTUQNCisJam1w IGlzNDg2DQorDQorY2hrZGV2aWQ6DQorCW9yYiAkMHgxMCxTWU1CT0xfTkFN RSh4ODYpCQkjIEZsYWcgYXMgQ3lyaXgNCisJbW92YiAkMHhmZSxTWU1CT0xf TkFNRSh4ODZfbW9kZWwpCSMgR2VuZXJpYyBDeDQ4Nj8NCisJbW92YiAkMCxT WU1CT0xfTkFNRSh4ODZfbWFzaykNCisNCisjaWZkZWYgQ09ORklHX0NZUklY DQorCWNsaQkJCSMgVGVzdCBmb3IgREVWSUQNCisJZ2V0Q3g4NigkMHhjMykJ CSMgYnkgd3JpdGluZyBDQ1IzDQorCW1vdmIgJWF4LCVjeA0KKwltb3ZiICVh eCwlYngNCisJb3JiICQweDgwLCVieA0KKwlzZXRDeDg2KCQweGMzLCVieCkN CisJZ2V0Q3g4NigkMHhjMCkJCSMgZHVtbXkgdG8gY2hhbmdlIGJ1cw0KKwln ZXRDeDg2KCQweGMzKQ0KKwlzdGkNCisJY21wICVheCwlY3gNCisJamUgaXM0 ODYJCSMgbm90IHdyaXRhYmxlID09IG5vIERFVklEDQorDQorCWNsaQ0KKwlz ZXRDeDg2KCQweGMzLCVjeCkJIyByZXN0b3JlIENDUjMNCisNCisJZ2V0Q3g4 NigkMHhmZikJCSMgZ2V0IERFVklEIGluIHByZWZlcmVuY2UgdG8gYW55IENQ VUlEDQorCW1vdmIgJWFsLFNZTUJPTF9OQU1FKHg4Nl9tYXNrKQ0KKwlnZXRD eDg2KCQweGZlKQ0KKwltb3ZiICVhbCxTWU1CT0xfTkFNRSh4ODZfbW9kZWwp DQorCXN0aQ0KKw0KKyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWF81WDg2KSB8 fCBkZWZpbmVkKENPTkZJR19DWVJJWF82WDg2KQ0KKwlhbmRiICQweGYwLCVh bA0KKyMgIGlmZGVmIENPTkZJR19DWVJJWF82WDg2DQorCWNtcGIgJDB4MzAs JWFsDQorCWplIGlzNng4Ng0KKyMgIGVuZGlmDQorIyAgaWZkZWYgQ09ORklH X0NZUklYXzVYODYNCisJY21wYiAkMHgyMCwlYWwNCisJamUgaXM1eDg2DQor IyAgZW5kaWYNCisJLyogQ3g0ODYgb3Igc29tZXRoaW5nIGJleW9uZCBhIDZ4 ODYgKE0yIG9yIGJldHRlcikuIE5vdGUgdGhhdA0KKwkgKiB0aGUgQ3g0ODYg YWxzbyBoYXZlIHBlcmZvcm1hbmNlIGZlYXR1cmVzIHdlIGNvdWxkIHR3ZWFr DQorCSAqIGJ1dCBnaXZlbiB0aGUgcHJvYmxlbXMgd2l0aCBbNTZdeDg2LCB0 aGUgbnVtYmVyIG9mIEN4NDg2DQorCSAqIHZhcmlhbnRzLCB0aGUgZmFjdCB0 aGF0IHRoZSBDeDQ4NiBpcyBwcmV0dHkgd2VsbCBkZWFkDQorCSAqIG5vdyBh bmQgdGhlIGZhY3QgdGhhdCBJIGhhdmUgbm8gQ3g0ODYgbXlzZWxmIEkgaGF2 ZW4ndA0KKwkgKiByaXNrZWQgaXQuIE5vciBoYXZlIEkgbG9va2VkIGF0IHRo ZSBNMiBpbiBhbnkgZGV0YWlsIHlldC4NCisJICovDQorCWptcCBpczQ4Ng0K KyNlbmRpZg0KKw0KKyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWF81WDg2KSB8 fCBkZWZpbmVkKENPTkZJR19DWVJJWF9GQVNUX0lPKQ0KKwkvKiBTcGVjaWFs IHNldCB1cCBmb3IgNXg4NiAqLw0KK2lzNXg4NjoNCisJY2xpDQorCW1vdmIg JWN4LCVieA0KKwlhbmRiICQweDBmLCVieAkJIyBFbmFibGUgYWxsIGNvbmZp ZyByZWdpc3RlcnMNCisJb3JiICQweDEwLCVieA0KKwlzZXRDeDg2KCQweGMz LCVieCkNCisNCisJZ2V0Q3g4NigkMHgyMCkJCSMgUENSMCB8PSBMU1NFUiB8 IEJUQl9FTg0KKwlvcmIgJDB4ODIsJWF4CQkjIExPT1BfRU4gaXMgYnJva2Vu LCBSU1RLX0VOIHNob3dzIG5vIGJlbmVmaXQNCisJbW92YiAlYXgsJWJ4CQkj IGFuZCBMU1NFUj0wIGNvdWxkIGJyZWFrIG1lbW9yeSBtYXBwZWQNCisJc2V0 Q3g4NigkMHgyMCwlYngpCSMgZGV2aWNlcyAtIHdlIGhhdmUgbm8gd2F5IG9m IGtub3dpbmcpDQorDQorI2lmZGVmIENPTkZJR19DWVJJWF9GQVNUX0lPDQor CWdldEN4ODYoJDB4ZTgpCQkjIENDUjQ6IElPUlQ9MCAobm9kZWxheSkNCisJ YW5kYiAkMHhmMSwlYXgNCisJbW92YiAlYXgsJWJ4DQorCXNldEN4ODYoJDB4 ZTgsJWJ4KQ0KKyNlbmRpZg0KKw0KKwlzZXRDeDg2KCQweGMzLCVjeCkJIyBy ZXN0b3JlIENDUjMNCisJc3RpDQorCWptcCBpczQ4Ng0KKyNlbmRpZg0KKw0K KyNpZiBkZWZpbmVkKENPTkZJR19DWVJJWF82WDg2KSB8fCBkZWZpbmVkKENP TkZJR19DWVJJWF9GQVNUX0lPKQ0KKwkvKiBTcGVjaWFsIHNldCB1cCBmb3Ig Nng4NiAqLw0KK2lzNng4NjoNCisJY2xpDQorCW1vdmIgJWN4LCVieA0KKwlh bmRiICQweDBmLCVieAkJIyBFbmFibGUgYWxsIGNvbmZpZyByZWdpc3RlcnMN CisJb3JiICQweDEwLCVieA0KKwlzZXRDeDg2KCQweGMzLCVieCkNCisNCisj aWYgIWRlZmluZWQoX19TTVBfXykgJiYgZGVmaW5lZChDT05GSUdfQ1lSSVhf Nlg4Nl9OT0xPQ0spDQorCWdldEN4ODYoJDB4YzEpCQkjIENDUjEgfD0gTk9f TE9DSw0KKwlvcmIgJDB4MTAsJWF4DQorCW1vdmIgJWF4LCVieA0KKwlzZXRD eDg2KCQweGU4LCVieCkNCisjZW5kaWYNCisNCisjaWZkZWYgQ09ORklHX0NZ UklYX0ZBU1RfSU8NCisJZ2V0Q3g4NigkMHhlOCkJCSMgQ0NSNDogSU9SVD03 IChub2RlbGF5KQ0KKwlvcmIgJDB4OTcsJWF4DQorCW1vdmIgJWF4LCVieA0K KwlzZXRDeDg2KCQweGU4LCVieCkNCisjZW5kaWYNCisNCisJZ2V0Q3g4Nigk MHhlOSkJCSMgQ0NSNSAmPSB+U0xPUA0KKwlhbmRiICQweGZkLCVheA0KKyNp ZmRlZiBDT05GSUdfQ1lSSVhfNlg4Nl9XVEFMTE9DDQorCW9yYiAkMHgwMSwl YXgJCSMgQ0NSNSB8PSBXVF9BTExPQw0KKyNlbmRpZg0KKwltb3ZiICVheCwl YngNCisJc2V0Q3g4NigkMHhlOSwlYngpDQorDQorI2lmZGVmIENPTkZJR19D WVJJWF82WDg2X0JUQgkjIElCTSBkb2N1bWVudGF0aW9uLCBubyBDeXJpeCBk b2NzDQorCWdldEN4ODYoJDB4MzApCQkjIEVuYWJsZSB0ZXN0IHJlZ2lzdGVy IG9wY29kZXMNCisJbW92YiAlYXgsJWR4DQorCW9yYiAkMHg0MCwlYXgNCisJ bW92YiAlYXgsJWJ4DQorCXNldEN4ODYoJDB4MzAsJWJ4KQ0KKw0KKwltb3Yg JDB4MjgsJWVieAkJIyBFbmFibGUgRkFSIENPRnMgaW4gQlRCDQorCS5ieXRl IDB4MGYsMHgyNiwweGNiCSMgbW92ICVlYngsJXRyMQ0KKwkuYnl0ZSAweDBm LDB4MjQsMHhkMAkjIG1vdiAldHIyLCVlYXgNCisjaWYgMA0KKwlhbmQgJDB4 ZmZmZmZmZmQsJWVheAkjIGFjY29yZGluZyB0byBDeXJpeC9JQk0gZG9jdW1l bnRhdGlvbg0KKyNlbHNlDQorCWFuZCAkMHhmZmZmZmZmOCwlZWF4CSMgYWNj b3JkaW5nIHRvIDZ4ODZvcHQNCisJb3IgICQweDAwMDAwMDcwLCVlYXgNCisj ZW5kaWYNCisJLmJ5dGUgMHgwZiwweDI2LDB4ZDAJIyBtb3YgJWVheCwldHIy DQorDQorCXNldEN4ODYoJDB4MzAsJWR4KQkjIERpc2FibGUgdGVzdCByZWdp c3RlciBvcGNvZGVzDQorI2VuZGlmIC8qIENPTkZJR19DWVJJWF82WDg2X0JU QiAqLw0KKw0KKwlzZXRDeDg2KCQweGMzLCVjeCkJIyByZXN0b3JlIENDUjMN CisJc3RpDQorI2VuZGlmIC8qIENPTkZJR19DWVJJWF82WDg2IG9yIENPTkZJ R19DWVJJWF9GQVNUX0lPICovDQorI2VuZGlmIC8qIENPTkZJR19DWVJJWCAq Lw0KKw0KK2lzNDg2Ogltb3ZsICVjcjAsJWVheAkJIyA0ODYgb3IgYmV0dGVy DQogCWFuZGwgJDB4ODAwMDAwMTEsJWVheAkjIFNhdmUgUEcsUEUsRVQNCiAJ b3JsICQweDUwMDIyLCVlYXgJIyBzZXQgQU0sIFdQLCBORSBhbmQgTVANCiAJ am1wIDJmDQorDQogaXMzODY6CXB1c2hsICVlY3gJCSMgcmVzdG9yZSBvcmln aW5hbCBFRkxBR1MNCiAJcG9wZmwNCiAJbW92bCAlY3IwLCVlYXgJCSMgMzg2 DQpJbmRleDogYXJjaC9pMzg2L2tlcm5lbC9zZXR1cC5jDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Vzci9DVlMvbGludXgvYXJjaC9p Mzg2L2tlcm5lbC9zZXR1cC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4x LjIuNw0KZGlmZiAtdSAtdSAtcjEuMS4yLjcgc2V0dXAuYw0KLS0tIHNldHVw LmMJMTk5Ny8wNC8xNiAyMDo1MjozMAkxLjEuMi43DQorKysgc2V0dXAuYwkx OTk3LzA0LzIyIDIyOjI2OjUxDQpAQCAtNDIsNyArNDIsNyBAQA0KIGNoYXIg eDg2X21hc2sgPSAwOwkJLyogc2V0IGJ5IGtlcm5lbC9oZWFkLlMgKi8NCiBp bnQgeDg2X2NhcGFiaWxpdHkgPSAwOwkJLyogc2V0IGJ5IGtlcm5lbC9oZWFk LlMgKi8NCiBpbnQgZmRpdl9idWcgPSAwOwkJLyogc2V0IGlmIFBlbnRpdW0o VE0pIHdpdGggRlAgYnVnICovDQotaW50IGhhdmVfY3B1aWQgPSAwOyAgICAg ICAgICAgICAvKiBzZXQgaWYgQ1BVSUQgaW5zdHJ1Y3Rpb24gd29ya3MgKi8N CitpbnQgaGF2ZV9jcHVpZCA9IC0xOyAgICAgICAgICAgIC8qIENQVUlEIGxl dmVsICgtMSBpZiBubyBDUFVJRCkgKi8NCiANCiBjaGFyIHg4Nl92ZW5kb3Jf aWRbMTNdID0gInVua25vd24iOw0KIA0KQEAgLTI1NCwxMSArMjU0LDgzIEBA DQogCXJldHVybiBOVUxMOw0KIH0NCiANCi1zdGF0aWMgY29uc3QgY2hhciAq IGdldG1vZGVsKGludCB4ODYsIGludCBtb2RlbCkNCitzdGF0aWMgY29uc3Qg Y2hhciAqIGN5cml4bW9kZWwodW5zaWduZWQgaW50IG5yKQ0KK3sNCisJc3Rh dGljIGNoYXIgbmJ1ZlszMl07DQorDQorCS8qIE5vdGUgdGhhdCBzb21lIG9m IHRoZSBwb3NzaWJpbGl0aWVzIHRoaXMgZGVjb2RpbmcgYWxsb3dzDQorCSAq IGhhdmUgbmV2ZXIgYWN0dWFsbHkgYmVlbiBtYW51ZmFjdHVyZWQgLSBidXQg dGhvc2UgdGhhdA0KKwkgKiBkbyBhY3R1YWxseSBleGlzdCBhcmUgY29ycmVj dGx5IGRlY29kZWQuDQorCSAqLw0KKwlpZiAobnIgPCAweDIwKSB7DQorCQlz dHJjcHkobmJ1ZiwgIkN4NDg2Iik7DQorCQlpZiAoIShuciAmIDB4MTApKSB7 DQorCQkJc3ByaW50ZihuYnVmKzUsICIlYyVzJWMiLA0KKwkJCQkobnIgJiAw eDAxKSA/ICdEJyA6ICdTJywNCisJCQkJKG5yICYgMHgwNCkgPyAiUngiIDog IkxDIiwNCisJCQkJKG5yICYgMHgwMikgPyAnMicgOiAnXDAwMCcpOw0KKwkJ fSBlbHNlIGlmICghKG5yICYgMHgwOCkpIHsNCisJCQlzcHJpbnRmKG5idWYr NSwgIlMlcyVjIiwNCisJCQkJKG5yICYgMHgwMSkgPyAiMiIgOiAiIiwNCisJ CQkJKG5yICYgMHgwMikgPyAnZScgOiAnXDAwMCcpOw0KKwkJfSBlbHNlIHsN CisJCQlzcHJpbnRmKG5idWYrNSwgIkRYJWMiLA0KKwkJCQluciA9PSAweDFi ID8gJzInDQorCQkJCQk6IChuciA9PSAweDFmID8gJzQnIDogJ1wwMDAnKSk7 DQorCQl9DQorCQlyZXR1cm4gbmJ1ZjsNCisJfSBlbHNlIGlmIChuciA+PSAw eDIwICYmIG5yIDw9IDB4NGYpIHsJLyogNXg4NiwgNng4NiBvciBHeDg2ICov DQorCQlzcHJpbnRmKG5idWYsICIlY3g4NiAlY3ggQ29yZS9CdXMgQ2xvY2si LA0KKwkJCSI/PzU2RyJbbnI+PjRdLA0KKwkJCSIxMj8/NDMiW25yICYgMHgw NV0pOw0KKwkJcmV0dXJuIG5idWY7DQorCX0gZWxzZSBpZiAobnIgPj0gMHg1 MCAmJiBuciA8PSAweDVmKSB7CS8qIEN5cml4IE0yICovDQorCQlzcHJpbnRm KG5idWYsICJNMiAlYyVzeCBDb3JlL0J1cyBDbG9jayIsDQorCQkJIjEyMjMz NDQ1IltuciAmIDB4MDddLA0KKwkJCShuciAmJiAhKG5yJjEpKSA/ICIuNSIg OiAiIik7DQorCQlyZXR1cm4gbmJ1ZjsNCisJfQ0KKw0KKwkvKiBQcm9iYWJs eSAweGZkIChDeDQ4NltTRF1MQyB3aXRoIG5vIElEIHJlZ2lzdGVyKQ0KKwkg KiBvciAweGZlIChDeDQ4NiBBIHN0ZXAgd2l0aCBubyBJRCByZWdpc3Rlciku DQorCSAqLw0KKwlyZXR1cm4gIkN4NDg2IjsNCit9DQorDQorc3RhdGljIGNv bnN0IGNoYXIgKiBnZXRtb2RlbChpbnQgeDg2LCBpbnQgbW9kZWwsIGludCBo YXZlX2NwdWlkKQ0KIHsNCiAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBOVUxM Ow0KLSAgICAgICAgc3RhdGljIGNoYXIgbmJ1ZlsxMl07DQotCXN3aXRjaCAo eDg2KSB7DQorICAgICAgICBzdGF0aWMgY2hhciBuYnVmWzQ5XTsNCisNCisJ aWYgKCh4ODYgJiAweGYwKSA9PSAweDEwKSB7CQkvKiBDeXJpeCAqLw0KKwkJ cCA9IGN5cml4bW9kZWwobW9kZWwpOw0KKwl9IGVsc2UgaWYgKCh4ODYgJiAw eGYwKSA9PSAweDIwKSB7CS8qIEFNRCAqLw0KKwkJLyogQWN0dWFsbHkgd2Ug bXVzdCBoYXZlIGNwdWlkIG9yIHdlIGNvdWxkIG5ldmVyIGhhdmUNCisJCSAq IGZpZ3VyZWQgb3V0IHRoYXQgdGhpcyB3YXMgQU1EIGZyb20gdGhlIHZlbmRv ciBpbmZvIDotKS4NCisJCSAqLw0KKwkJaWYgKGhhdmVfY3B1aWQgPCAwKQ0K KwkJCXAgPSAiQW00ODYiOw0KKwkJZWxzZSB7DQorCQkJaW50IG4sIGR1bW15 Ow0KKwkJCWNwdWlkKDB4ODAwMDAwMDAsICZuLCAmZHVtbXksICZkdW1teSwg JmR1bW15KTsNCisJCQlpZiAoIW4pIHsNCisJCQkJaWYgKHg4NiA9PSA0KQ0K KwkJCQkJcCA9IGk0ODZtb2RlbChtb2RlbCk7DQorCQkJCWVsc2UgaWYgKHg4 NiA9PSA1KQ0KKwkJCQkJcCA9ICJBTUQtSzUgKE1vZGVsIDApIjsNCisJCQl9 IGVsc2Ugew0KKwkJCQlpbnQgKnYgPSAoaW50ICopbmJ1ZjsNCisJCQkJY3B1 aWQoMHg4MDAwMDAwMiwgJnZbMF0sICZ2WzFdLCAmdlsyXSwgJnZbM10pOw0K KwkJCQljcHVpZCgweDgwMDAwMDAzLCAmdls0XSwgJnZbNV0sICZ2WzZdLCAm dls3XSk7DQorCQkJCWNwdWlkKDB4ODAwMDAwMDQsICZ2WzhdLCAmdls5XSwg JnZbMTBdLCAmdlsxMV0pOw0KKwkJCQluYnVmWzQ4XSA9ICdcMCc7DQorCQkJ CXAgPSBuYnVmOw0KKwkJCX0NCisJCX0NCisJfSBlbHNlIHN3aXRjaCAoeDg2 KSB7CQkJLyogSW50ZWwgKi8NCisJCWNhc2UgMDoNCisJCQlwID0gInVua25v d24iOw0KKwkJCWJyZWFrOw0KIAkJY2FzZSA0Og0KIAkJCXAgPSBpNDg2bW9k ZWwobW9kZWwpOw0KIAkJCWJyZWFrOw0KQEAgLTMwNCwyMSArMzc2LDI1IEBA DQogI2VuZGlmDQogDQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuICs9 IHNwcmludGYoYnVmZmVyK2xlbiwicHJvY2Vzc29yXHQ6ICVkXG4iDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNwdVx0XHQ6 ICVjODZcbiINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiY3B1IGZhbWlseVx0OiAlY1xuIg0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJtb2RlbFx0XHQ6ICVzXG4iDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlbmRvcl9p ZFx0OiAlc1xuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDUFVOLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENEKHg4NikrJzAnLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENEKGhhdmVfY3B1aWQpID8gDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRtb2RlbChD RCh4ODYpLCBDRCh4ODZfbW9kZWwpKSA6DQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biIsDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENEKHg4NikgJiAweDBm KSsnMCcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2V0bW9kZWwoQ0QoeDg2KSwgQ0QoeDg2X21vZGVsKSwgQ0QoaGF2ZV9j cHVpZCkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENEKHg4Nl92ZW5kb3JfaWQpKTsNCiAgICAgICAgIA0KLSAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChDRCh4ODZfbWFzaykpDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZW4gKz0gc3ByaW50ZihidWZmZXIr bGVuLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgInN0ZXBwaW5nXHQ6ICVkXG4iLA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0QoeDg2X21hc2sp KTsNCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQorICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKENEKHg4Nl9tYXNrKSkgew0KKwkJCQlpZiAo KENEKHg4NikgJiAweGYwKSA9PSAweDEwKQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCWxlbiArPSBzcHJpbnRmKGJ1ZmZlcitsZW4sDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAJInN0ZXBwaW5nXHQ6ICVkIHJldiAlZFxuIiwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlDRCh4ODZfbWFz aykgPj4gNCwNCisJCQkJCQlDRCh4ODZfbWFzaykgJiAweDBmKTsNCisJCQkJ ZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWxlbiAr PSBzcHJpbnRmKGJ1ZmZlcitsZW4sDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAJInN0ZXBwaW5nXHQ6ICVkXG4i LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCUNEKHg4Nl9tYXNrKSk7DQorICAgICAgICAgICAgICAgICAgICAg ICAgfSBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs ZW4gKz0gc3ByaW50ZihidWZmZXIrbGVuLCANCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGVwcGluZ1x0OiB1 bmtub3duXG4iKTsNCiAgICAgICAgIA0KQEAgLTMyNyw3ICs0MDMsNyBAQA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJobHRf YnVnXHRcdDogJXNcbiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZnB1XHRcdDogJXNcbiINCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiZnB1X2V4Y2VwdGlvblx0OiAlc1xu Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJj cHVpZFx0XHQ6ICVzXG4iDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImNwdWlkIGxldmVsXHQ6ICVkXG4iDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndwXHRcdDogJXNcbiIN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxh Z3NcdFx0OiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0QoZmRpdl9idWcpID8gInllcyIgOiAibm8iLA0KQEAgLTMzNSw3 ICs0MTEsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENEKGhhcmRfbWF0aCkgPyAieWVzIiA6ICJubyIsDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENEKGhhcmRfbWF0 aCkgJiYgaWdub3JlX2lycTEzKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPyAieWVzIiA6ICJubyIsDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0QoaGF2ZV9jcHVpZCkg PyAieWVzIiA6ICJubyIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ0QoaGF2ZV9jcHVpZCksDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ0Qod3Bfd29ya3Nfb2spID8gInll cyIgOiAibm8iKTsNCiAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg ICAgIGZvciAoIGkgPSAwIDsgaSA8IDMyIDsgaSsrICkgew0KSW5kZXg6IGFy Y2gvaTM4Ni9tbS9pbml0LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvdXNyL0NWUy9saW51eC9hcmNoL2kzODYvbW0vaW5pdC5jLHYN CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMTANCmRpZmYgLXUgLXUgLXIx LjEuMi4xMCBpbml0LmMNCi0tLSBpbml0LmMJMTk5Ny8wNC8xNiAyMDo1Mjoz MgkxLjEuMi4xMA0KKysrIGluaXQuYwkxOTk3LzA0LzE2IDIxOjQ5OjE5DQpA QCAtMTE2LDYgKzExNiw2NyBAQA0KIAl1bnNpZ25lZCBsb25nIHRtcDsNCiAJ dW5zaWduZWQgbG9uZyBhZGRyZXNzOw0KIA0KKyNpZiBkZWZpbmVkKENPTkZJ R19DWVJJWCkgJiYgZGVmaW5lZChDT05GSUdfQ1lSSVhfNlg4Nl9WU1BNKSAm JiAhZGVmaW5lZChfX1NNUF9fKQ0KKwl1bnNpZ25lZCBsb25nIHZzcG1fbWF4 ID0gX192YSgwKTsNCisNCisJLyogSWYgdGhpcyBpcyBhIEN5cml4IDZ4ODYg d2UgdXNlIHRoZSB2YXJpYWJsZSBzaXplIHBhZ2luZw0KKwkgKiBtZWNoYW5p c20gKFZTUE0pIHRvIG1hcCBwaHlzaWNhbCBtZW1vcnkgYXQgMHhjMDAwMDAw MC4NCisJICogTm90ZSB0aGF0IFZTUE0gcGFnZXMgYXJlIHN0b3JlZCBvbiB0 aGUgQ1BVIG9ubHkgc28gdGhpcw0KKwkgKiBuZWVkcyB0byBiZSBkb25lIGZv ciBlYWNoIHByb2Nlc3NvciBpbiBhIG11bHRpLXByb2Nlc3Nvcg0KKwkgKiBz eXN0ZW0uIElmIHdlIGhhdmUgYSBtaXh0dXJlIG9mIHByb2Nlc3NvcnMgd2Ug d291bGQgYWxzbw0KKwkgKiBuZWVkIHRvIHNldCB1cCB0aGUgdHJhZGl0aW9u YWwgcGFnZSB0YWJsZXMgZm9yIHRoZW0uDQorCSAqIE5vdGUgYWxzbyB0aGF0 IFZTUE0gcGFnZXMgd2lsbCBiZSBnbG9iYWwgdG8gYWxsIG1lbW9yeQ0KKwkg KiBzcGFjZXMgc2luY2UgdGhleSBhcmUgbm90IHN0b3JlZCBpbiB0aGUgbm9y bWFsIHBhZ2UNCisJICogZGlyZWN0b3JpZXMuDQorCSAqLw0KKwlpZiAoKHg4 NiAmIDB4ZjApID09IDB4MTAgfHwgKHg4Nl9tb2RlbCAmIDB4ZjApID09IDB4 MzApIHsNCisJCWludCB2c3BtX2luZGV4ID0gMDsNCisNCisJCWRvIHsNCisJ CQl1bnNpZ25lZCBsb25nIG1lbV9zaXplOw0KKw0KKwkJCW1lbV9zaXplID0g NDA5NjsNCisJCQl3aGlsZSAodnNwbV9tYXgrbWVtX3NpemUgPCBlbmRfbWVt KQ0KKwkJCQltZW1fc2l6ZSA8PD0gMTsNCisJCQlpZiAodnNwbV9tYXgrbWVt X3NpemUgPiBlbmRfbWVtKQ0KKwkJCQlpZiAoKG1lbV9zaXplID4+PSAxKSA8 IDQwOTYpDQorCQkJCQlicmVhazsNCisNCisJCQlhc20oCSJtb3ZsICUwLCUl ZWF4XG4iDQorCQkJCSJtb3ZsICUlZWF4LCUldHI3XG4iDQorCQkJCSJtb3Zs ICQweDAwMDAwMDA0LCUlZWF4XG4iDQorCQkJCSJtb3ZsICUlZWF4LCUldHI2 XG4iDQorCQkJCSJtb3ZsICUxLCUlZWF4XG4iDQorCQkJCSJtb3ZsICUlZWF4 LCUldHI3XG4iDQorCQkJCSJtb3ZsICUyLCUlZWF4XG4iDQorCQkJCSJtb3Zs ICUlZWF4LCUldHI2XG4iDQorCQkJOiAvKiBubyBvdXRwdXRzICovDQorCQkJ OiAiZyIgKCgoKG1lbV9zaXplLTEpICYgMHhmZmZmZjAwMCkpIHwgKHZzcG1f aW5kZXg8PDcpKSwNCisJCQkgICJnIiAoKF9fcGEodnNwbV9tYXgpICYgMHhm ZmZmZjAwMCkgfCAodnNwbV9pbmRleDw8NykpLA0KKwkJCSAgImciICgodnNw bV9tYXggJiAweGZmZmZmMDAwKSB8IDB4MDAwMDBjZDYpDQorCQkJOiAiZWF4 IiwgImNjIg0KKwkJCSk7DQorDQorCQkJdnNwbV9tYXggKz0gbWVtX3NpemU7 DQorDQorI2lmIDENCisJCQkvKiBKdXN0IHVzZSBvbmUgVlNQTSBwYWdlIGZv ciBub3csIGFueXRoaW5nDQorCQkJICogb3ZlciB3aWxsIGJlIHRyYWRpdGlv bmFsbHkgcGFnZWQuDQorCQkJICogKFNlZSBEb2N1bWVudGF0aW9uL0N5cml4 LikNCisJCQkgKi8NCisJCQlicmVhazsNCisjZW5kaWYNCisJCX0gd2hpbGUg KHZzcG1fbWF4IDwgZW5kX21lbSAmJiB2c3BtX2luZGV4KysgPCA0KTsNCisN CisJCS8qIFdyaXRlIHByb3RlY3QgZG9lcyB3b3JrIGNvcnJlY3RseSBidXQg dGhlIHRlc3QNCisJCSAqIHdpbGwgZmFpbCBiZWNhdXNlIHdlIGNhbid0IG1h cCBqdXN0IHBhZ2UgMCByZWFkDQorCQkgKiBvbmx5IGZyb20gdW5kZXIgdGhl IFZTUE0gYmlnIHBhZ2UuIElmIHdlIGRpZG4ndA0KKwkJICoga25vdyBiZWZv cmUgd2UgZG8gbm93Lg0KKwkJICovDQorCQl3cF93b3Jrc19vayA9IDE7DQor CX0NCisjZW5kaWYNCisNCiAvKg0KICAqIFBoeXNpY2FsIHBhZ2UgMCBpcyBz cGVjaWFsOyBpdCdzIG5vdCB0b3VjaGVkIGJ5IExpbnV4IHNpbmNlIEJJT1MN CiAgKiBhbmQgU01NIChmb3IgbGFwdG9wcyB3aXRoIFszNF04Ni9TTCBjaGlw cykgbWF5IG5lZWQgaXQuICBJdCBpcyByZWFkDQpAQCAtMTgyLDYgKzI0Mywx NyBAQA0KIAkJCWFkZHJlc3MgKz0gNCoxMDI0KjEwMjQ7DQogCQkJY29udGlu dWU7DQogCQl9DQorDQorI2lmIGRlZmluZWQoQ09ORklHX0NZUklYKSAmJiBk ZWZpbmVkKENPTkZJR19DWVJJWF82WDg2X1ZTUE0pICYmICFkZWZpbmVkKF9f U01QX18pDQorCQlpZiAoKHg4NiAmIDB4ZjApID09IDB4MTAJLyogQ3lyaXgg Ki8NCisJCSYmICh4ODZfbW9kZWwgJiAweGYwKSA9PSAweDMwCS8qIDZ4ODYg Ki8NCisJCSYmIChhZGRyZXNzICsgUEFHRV9TSVpFKlBUUlNfUEVSX1BURSkg PCB2c3BtX21heCkgeyAvKiB3aXRoaW4gVlNQTSBtYXBwaW5ncyAqLw0KKwkJ CXBnX2RpcisrOw0KKwkJCWFkZHJlc3MgKz0gUEFHRV9TSVpFICogUFRSU19Q RVJfUFRFOw0KKwkJCWNvbnRpbnVlOw0KKwkJfQ0KKyNlbmRpZg0KKw0KIAkJ LyoNCiAJCSAqIFdlJ3JlIG9uIGEgWzM0XTg2LCB1c2Ugbm9ybWFsIHBhZ2Ug dGFibGVzLg0KIAkJICogcGdfdGFibGUgaXMgcGh5c2ljYWwgYXQgdGhpcyBw b2ludA0KQEAgLTE5NCwxMiArMjY2LDE4IEBADQogDQogCQlwZ2RfdmFsKHBn X2Rpcls3NjhdKSA9IF9QQUdFX1RBQkxFIHwgKHVuc2lnbmVkIGxvbmcpIHBn X3RhYmxlOw0KIAkJcGdfZGlyKys7DQorDQogCQkvKiBub3cgY2hhbmdlIHBn X3RhYmxlIHRvIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3NlcyAqLw0KIAkJcGdf dGFibGUgPSAocHRlX3QgKikgX192YShwZ190YWJsZSk7DQogCQlmb3IgKHRt cCA9IDAgOyB0bXAgPCBQVFJTX1BFUl9QVEUgOyB0bXArKyxwZ190YWJsZSsr KSB7DQogCQkJcHRlX3QgcHRlID0gbWtfcHRlKGFkZHJlc3MsIFBBR0VfS0VS TkVMKTsNCisjaWYgZGVmaW5lZChDT05GSUdfQ1lSSVgpICYmIGRlZmluZWQo Q09ORklHX0NZUklYXzZYODZfVlNQTSkgJiYgIWRlZmluZWQoX19TTVBfXykN CisJCQlpZiAoYWRkcmVzcyA8IHZzcG1fbWF4IHx8IGFkZHJlc3MgPj0gZW5k X21lbSkNCisJCQkJcHRlX3ZhbChwdGUpID0gMDsNCisjZWxzZQ0KIAkJCWlm IChhZGRyZXNzID49IGVuZF9tZW0pDQogCQkJCXB0ZV92YWwocHRlKSA9IDA7 DQorI2VuZGlmDQogCQkJc2V0X3B0ZShwZ190YWJsZSwgcHRlKTsNCiAJCQlh ZGRyZXNzICs9IFBBR0VfU0laRTsNCiAJCX0NCkluZGV4OiBpbmNsdWRlL2Fz bS1pMzg2L2J1Z3MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IC91c3IvQ1ZTL2xpbnV4L2luY2x1ZGUvYXNtLWkzODYvYnVncy5oLHYN CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMg0KZGlmZiAtdSAtdSAtcjEu MS4yLjIgYnVncy5oDQotLS0gYnVncy5oCTE5OTYvMTAvMDkgMjA6NTk6NTMJ MS4xLjIuMg0KKysrIGJ1Z3MuaAkxOTk3LzA0LzE5IDEyOjE2OjM1DQpAQCAt MTMwLDUgKzEzMCw1IEBADQogCWNoZWNrX3RsYigpOw0KIAljaGVja19mcHUo KTsNCiAJY2hlY2tfaGx0KCk7DQotCXN5c3RlbV91dHNuYW1lLm1hY2hpbmVb MV0gPSAnMCcgKyB4ODY7DQorCXN5c3RlbV91dHNuYW1lLm1hY2hpbmVbMV0g PSAnMCcgKyAoeDg2ICYgMHgwZik7DQogfQ0KSW5kZXg6IGluY2x1ZGUvYXNt LWkzODYvcHJvY2Vzc29yLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD UyBmaWxlOiAvdXNyL0NWUy9saW51eC9pbmNsdWRlL2FzbS1pMzg2L3Byb2Nl c3Nvci5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuOA0KZGlmZiAt dSAtdSAtcjEuMS4yLjggcHJvY2Vzc29yLmgNCi0tLSBwcm9jZXNzb3IuaAkx OTk3LzAxLzI3IDIwOjI2OjI3CTEuMS4yLjgNCisrKyBwcm9jZXNzb3IuaAkx OTk3LzA0LzExIDIyOjQyOjQ5DQpAQCAtMTYsNyArMTYsNyBAQA0KICAqLw0K IA0KIGV4dGVybiBjaGFyIGhhcmRfbWF0aDsNCi1leHRlcm4gY2hhciB4ODY7 CQkvKiBsb3dlciA0IGJpdHMgKi8NCitleHRlcm4gY2hhciB4ODY7CQkvKiB1 cHBlciA0IGJpdHM9dmVuZG9yLCBsb3dlciA0IGJpdHM9ZmFtaWx5ICovDQog ZXh0ZXJuIGNoYXIgeDg2X3ZlbmRvcl9pZFsxM107DQogZXh0ZXJuIGNoYXIg eDg2X21vZGVsOwkJLyogbG93ZXIgNCBiaXRzICovDQogZXh0ZXJuIGNoYXIg eDg2X21hc2s7CQkvKiBsb3dlciA0IGJpdHMgKi8NCkBAIC0xNjgsNSArMTY4 LDIxIEBADQogI2RlZmluZSBhbGxvY19rZXJuZWxfc3RhY2socCkJX19nZXRf ZnJlZV9wYWdlKEdGUF9LRVJORUwpDQogI2RlZmluZSBmcmVlX3Rhc2tfc3Ry dWN0KHApCWtmcmVlKHApDQogI2RlZmluZSBmcmVlX2tlcm5lbF9zdGFjayhw YWdlKSBmcmVlX3BhZ2UoKHBhZ2UpKQ0KKw0KK2V4dGVybiBpbmxpbmUgdm9p ZCBjcHVpZChpbnQgb3AsIGludCAqZWF4LCBpbnQgKmVieCwgaW50ICplY3gs IGludCAqZWR4KQ0KK3sNCisJX19hc21fXygibW92bCAlNCwlJWVheFxuXHQi DQorCQkiLmJ5dGUgMHgwZiwgMHhhMlxuXHQiDQorCQkibW92bCAlJWVheCwl MFxuXHQiDQorCQkibW92bCAlJWVieCwlMVxuXHQiDQorCQkibW92bCAlJWVj eCwlMlxuXHQiDQorCQkibW92bCAlJWVkeCwlM1xuXHQiDQorCQk6ICI9bSIg KCplYXgpLA0KKwkJICAiPW0iICgqZWJ4KSwNCisJCSAgIj1tIiAoKmVjeCks DQorCQkgICI9bSIgKCplZHgpDQorCQk6ICJnIiAob3ApDQorCQk6ICJlYXgi LCAiZWJ4IiwgImVjeCIsICJlZHgiLCAiY2MiKTsNCit9DQogDQogI2VuZGlm IC8qIF9fQVNNX0kzODZfUFJPQ0VTU09SX0ggKi8NCg== --279709697-620127371-861792973=:25693--