eGZzcHJvZ3MtNC4xNC4wICgyNyBOb3YgMjAxNykKCS0gbm8gY2hhbmdlcyBmcm9tIHY0LjE0LjAtcmMyCgp4ZnNwcm9ncy00LjE0LjAtcmMyICgyMCBOb3YgMjAxNykKCS0geGZzX3JlcGFpcjogZml4IGRlYWRsb2NrIG9uIGZhaWxlZCByZWZjb3VudGJ0IGNoZWNrcyAoRGFycmljayBXb25nKQoJLSB4ZnNfcmVwYWlyOiBmaXggY293ZXh0c2l6ZSBmaWVsZCBjaGVja2luZyBhbmQgcmVwYWlyaW5nIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IGNsZWFyIERBWCBmbGFnIGZyb20gbm9uLWZpbGUgaW5vZGVzIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IGZpeCBiYWcgbWVtb3J5IG92ZXJ3cml0ZSBwcm9ibGVtcyAoRGFycmljayBXb25nKQoJLSB4ZnNfbWV0YWR1bXA6IHphcCBzdGFsZSBkYXRhIGluIERJUjJfTEVBRjEgZGlycyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfbWV0YWR1bXA6IGFsbG93IGxhcmdlIGRpcmVjdG9yeSBleHRlbnRzIGJ5IGRlZmF1bHQgKERhcnJpY2sgV29uZykKCS0geGZzX2NvcHk6IGRvbid0IGhhbmcgaWYgYWxsIHRhcmdldHMgaGl0IHdyaXRlIGVycm9ycyAoRGFycmljayBXb25nKQoJLSB4ZnNfaW86IHN0YXQ6IHRyZWF0IHN0YXRmcy5mX2ZsYWdzIGFzIG9wdGlvbmFsIChKZWZmIE1haG9uZXkpCgktIHhmc19pbzogc3RhdDogZml4IHR5cG8gaW4gc3RhdGZzLT5mX2ZsYWdzIChKZWZmIE1haG9uZXkpCgktIHhmc19pbzogQWxsb3cgcGFydGlhbCB3cml0ZXMgaW4gcHdyaXRlIChHb2xkd3luIFJvZHJpZ3VlcykKCS0geGZzX2lvOiBBZGQgc3VwcG9ydCBmb3IgcHdyaXRldjIoKSAoR29sZHd5biBSb2RyaWd1ZXMpCgktIHhmc19pbzogQWRkIFJXRl9OT1dBSVQgdG8gcHdyaXRldjIoKSAoR29sZHd5biBSb2RyaWd1ZXMpKQoJLSB4ZnNfaW86IERpc2FibGUgcHdyaXRlIC1WIGlmIHB3cml0ZXYgdW5hdmFpbGFibGUgKEdvbGR3eW4gUm9kcmlndWVzKQoJLSB4ZnNfaW86IGFkZCBuZXcgZXJyb3IgaW5qZWN0aW9uIGtub2JzIHRvIGluamVjdCBjb21tYW5kIChEYXJyaWNrIFdvbmcpCgktIHhmc19pbzogcmVwb3J0IGlvIGVycm9ycyBmcm9tIHB3cml0ZSAtVyBhbmQgLXcgKExpdSBCbykKCnhmc3Byb2dzLTQuMTMuMSAoMjYgU2VwIDIwMTcpCgktIGZpeCBnbG9iYWwgYXJyYXkgb3ZlcnJ1biBpbiBta2ZzIChEYXJyaWNrIFdvbmcpCgp4ZnNwcm9ncy00LjEzLjAgKDI2IFNlcCAyMDE3KQoJLSBubyBjaGFuZ2VzIGZyb20gdjQuMTMuMC1yYzIKCnhmc3Byb2dzLTQuMTMuMC1yYzIgKDIxIFNlcCAyMDE3KQoJLSBta2ZzLnhmczogcGFzcyBjdXN0b20gY293ZXh0c2l6ZSB0byBjcmVhdGVkIGZpbGVzeXN0ZW0gKERhcnJpY2sgV29uZykKCS0geGZzX3JlcGFpcjogaGFuZGxlIG1pc3NpbmcgZXh0ZW50IHN0YXRlcyAoRGFycmljayBXb25nKQoJLSB4ZnNfZGI6IHZlcnNpb24gY29tbWFuZCBtaXNzZXMgUk1BUEJUIGZlYXR1cmUgc3RyaW5nIChaaXJvbmcgTGFuZykKCnhmc3Byb2dzLTQuMTMuMC1yYzEgKDE1IFNlcCAyMDE3KQoJLSBta2ZzLnhmczogZG9jdW1lbnQgZm9yZ290dGVuIGZsYWdzIChEYXJyaWNrIFdvbmcpCgktIG1rZnMueGZzOiBkb24ndCBzdGFnZ2VyIEFHIG9uIHNpbmdsZSBkaXNrIChEb25hbGQgRG91d3NtYSkKCS0geGZzX3JlcGFpcjogdmFyaW91cyB0aHJlYWRpbmcgZml4ZXMgKEplZmYgTWFob25leSkKCS0geGZzX3JlcGFpcjogdmFsaWRhdGUgc3ltbGluayB0YXJnZXQgbGVuZ3RoIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IGZpeCBlcnJvciBleGl0IHN0YXR1cyB3aXRoIC12IGZsYWcgKE1hc2F0YWtlIFlBTUFUTykKCS0geGZzX2ZzcjogRml4IHVuaW5pdGFsaXplZCB2YXJhYmxlIHVzZSBhZnRnZXIgdGltZW91dCAoSmVmZiBNYWhvbmV5KQoJLSB4ZnNfaW86IGZpeCBmaWVtYXAgLW4gZG9jdW1lbnRhdGlvbiB0byBtYXRjaCByZWFsaXR5IChOaWtvbGF5IEJvcmlzb3YpCgktIHhmc19pbzogQWxsb3cgbHNhdHRyICYgbHNwcm9qIG9uIGZvcmVpZ24gZmlsZXN5c3RlbXMgKFJvc3MgWndpc2xlcikKCS0geGZzX2lvOiBQcmludCBmaWxlc3lzdGVtIHN0YXRmcyBmbGFncyBpbiBzdGF0ZnMgb3V0cHV0IChDYXJsb3MgTWFpb2xpbm8pCgktIHhmc19pbzogYWRkIHNlZWsgY29uc2lzdGVuY3kgY2hlY2tzIChBbmRyZWFzIEdydWVuYmFjaGVyKQoJLSB4ZnNfZGI6IEZpeCBtZXRhZHVtcCByZWRpcmVjdGlvbiAoRGFycmljayBXb25nKQoJLSB4ZnNfZGI6IEFkZCBmdXp6IGNvbW1hbmQgKERhcnJpY2sgV29uZykKCS0geGZzcHJvZ3M6IEZpeCBtdWx0aXBsZSBjb21waWxlciB3YXJuaW5ncyAoRGFycmljayBXb25nKQoKeGZzcHJvZ3MtNC4xMi4wICgyMCBKdWwgMjAxNykKCSAtIG1rZnMueGZzOiBhbGxvdyBzcGVjaWZpY2F0aW9uIG9mIDAgc3RyaXBlIHdpZHRoICYgdW5pdCAoRXJpYyBTYW5kZWVuKQoJIC0geGZzX2RiOiByZWRpcmVjdCBwcmludGZzIHdoZW4gbWV0YWR1bXBpbmcgdG8gc3Rkb3V0IChEYXJyaWNrIFdvbmcpCgkgLSBsaWJ4ZnM6IHByb3BhZ2F0ZSB0cmFuc2FjdGlvbiBibG9jayByZXNlcnZhdGlvbnMgKERhcnJpY2sgV29uZykKCSAtIHhmc19kYjogcHJvcGVybHkgc2V0IGlub2RlIHR5cGUgKEVyaWMgU2FuZGVlbikKCnhmc3Byb2dzLTQuMTIuMC1yYzIgKDEzIEp1bCAyMDE3KQoJLSBta2ZzLnhmczogbWluaW11bSBsb2cgc2l6ZSBjYWxjdWxhdGlvbiBmaXhlcyAoRGFycmljayBXb25nKQoKeGZzcHJvZ3MtNC4xMi4wLXJjMSAoMzAgSnVuIDIwMTcpCgktIHhmc19zcGFjZW1hbjogbmV3IHNwYWNlIG1hbmFnZW1lbnQgdG9vbCAoRGF2ZSBDaGlubmVyLCBEYXJyaWNrIFdvbmcpCgktIHhmc19pbzogaW1wbGVtZW50IGZzbWFwIGNvbW1hbmQgKERhcnJpY2sgV29uZykKCS0geGZzX3JlcGFpcjogZml4IDUxMiBzZWN0b3IgaW1hZ2UgcmVwYWlyIG9uIDRrIHNlY3RvciBob3N0IChab3JybyBMYW5nKQoJLSB4ZnNfZ3Jvd2ZzOiBlbnN1cmUgdGFyZ2V0IGlzIGFuIGFjdGl2ZSB4ZnMgbW91bnRwb2ludCAoQmlsbCBPJ0Rvbm5lbGwpCgktIHhmc19tZXRhZHVtcDogd2FybiBhYm91dCBjb3JydXB0aW9uIGlmIGxvZyBpcyBkaXJ0eSAoSmFuIFR1bGFrKQoJLSB4ZnNfbWV0YWR1bXA6IHRhZyBtZXRhZHVtcCB3aXRoIGluZm9ybWF0aW9uYWwgZmxhZ3MgKEVyaWMgU2FuZGVlbikKCS0geGZzX2RiOiBmaXggJ3R5cGUnIGNvbW1hbmQgZm9yIGludGVyZXN0aW5nIGdlb21zIChCaWxsIE8nRG9ubmVsbCkKCS0geGZzX2RiOiBhZGQgYWxpZ25tZW50IGZpbHRlciB0byBmcmVlc3AgY29tbWFuZCAoRXJpYyBTYW5kZWVuKQoJLSBsaWJ4ZnM6IHVzZSBjcmMzMmMgc2xpY2UtYnktOCB2YXJpYW50IGJ5IGRlZmF1bHQgKERhcnJpY2sgV29uZykKCS0gdXBkYXRlIFBvbGlzaCB0cmFuc2xhdGlvbiAoSmFrdWIgQm9ndXN6KQoKeGZzcHJvZ3MtNC4xMS4wICg1IE1heSAyMDE3KQoJLSB4ZnNfaW86IG1hbiBwYWdlIGZpeHVwcyAoWm9ycm8gTGFuZykKCnhmc3Byb2dzLTQuMTEuMC1yYzIgKDIgTWF5IDIwMTcpCgktIHhmc19kYjogYWRkIGJ0cmVlIGR1bXBpbmcgY29tbWFuZCAoRGFycmljayBXb25nKQoJLSBta2ZzLnhmczogY2hhbmdlIGJhcmUgLW0gcm1hcGJ0LHJlZmxpbmsgdG8gZW5hYmxlIChFcmljIFNhbmRlZW4pCgktIHhmc19pbzogZG9jdW1lbnQgLWQgb3B0aW9uLCBlbmFibGUgZm9yIGRxYmxrcyAmIGlub2RlcyAoRGFycmljayBXb25nKQoJLSB4ZnNfaW86IG1pbm9yIHN0YXR4IGZpeGVzLCB1cGRhdGVzIChDaGFuZGFuIFJhamVuZHJhLCBHd2VuZGFsIEdyaWdub3UpCgp4ZnNwcm9ncy00LjExLjAtcmMxICg0IEFwciAyMDE3KQoJLSB4ZnNfaW86IGFkZCBzdGF0eCBzdXBwb3J0IChEYXZpZCBIb3dlbGxzLCBFcmljIFNhbmRlZW4pCgktIHhmc19pbzogZml4ICJmYWxsb2MgLXAiIHRvIHBhc3MgS0VFUF9TSVpFIChDYWx2aW4gT3dlbnMpCgktIHhmc19pbzogc3VwcG9ydCBzaHV0ZG93biBvbiBmb3JlaWduIGZpbGVzeXN0ZW1zIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IHJlcGFpciB6ZXJvLXNpemVkIHN5bWxpbmtzIChCcmlhbiBGb3N0ZXIpCgktIHhmc19yZXBhaXI6IHdhcm4gYWJvdXQgZGlydHkgbG9nIHdpdGggLW4gb3B0aW9uIChFcmljIFNhbmRlZW4pCgktIHhmcy41OiBkb2N1bWVudCBiYXJyaWVyIG1vdW50IG9wdGlvbiBkZXByZWNhdGlvbiAoRXJpYyBTYW5kZWVuKQoKeGZzcHJvZ3MtNC4xMC4wICg2IEZlYiAyMDE3KQoJLSBidWlsZDogZml4IF9fYml0d2lzZSBkZWZpbml0aW9ucyB2cyBrZXJuZWwgaGVhZGVycyAoRGFycmljayBXb25nKQoKeGZzcHJvZ3MtNC4xMC4wLXJjMSAoMTUgRmViIDIwMTcpCgktIGJ1aWxkOiBmaXggY3Jvc3MtY29tcGlsZSAoR3dlbmRhbCBHcmlnbm91KQoJLSByZW1vdmUgb2xkIElyaXggc3VwcG9ydCAoQ2hyaXN0b3BoIEhlbGx3aWcpCgktIHhmc19yZXBhaXI6IHZhcmlvdXMgYWRkaXRpb25hbCBjaGVja3MgKERhcnJpY2sgV29uZykKCS0geGZzX3JlcGFpcjogZG9jdW1lbnQgZGlydHkgbG9nIGNvbmRpdGlvbnMgKERhcnJpY2sgV29uZykKCS0geGZzX3JlcGFpcjogZG9jdW1lbnQgZXhpdCBjb2RlcyAoWmlyb25nIExhbmcpCgktIHhmc19pbzogZml4IGJ1aWxkaW5nIHdpdGggbXVzbCAoUmFscGggU2VubmhhdXNlcikKCS0geGZzX2lvOiBhZGQgc2V0X2VuY3BvbGljeSAvIGdldF9lbmNwb2xpY3kgKEVyaWMgQmlnZ2VycykKCS0geGZzX2lvOiBGaXggY29tbWFuZCBpdGVyYXRpb24gKERhdmUgQ2hpbm5lcikKCS0geGZzX2lvOiBmaXggbWlzc2luZyBzeW5jZnMgY29tbWFuZCAgKEFtaXIgR29sZHN0ZWluKQoJLSB4ZnNfZGI6IGZpeCAnc291cmNlJyBjb21tYW5kIHdoZW4gcGFzc2VkIGFzIGEgLWMgb3B0aW9uIChEYXJyaWNrIFdvbmcpCgktIHhmc19sb2dwcmludDogaGFuZGxlIGxvZyBvcGVyYXRpb24gc3BsaXQgb2YgaW5vZGUgaXRlbSAoSG91IFRhbykKCS0geGZzX21ldGFkdW1wOiBpZ25vcmUgZW1wdHkgYXR0cmlidXRlIGxlYWYgKEVyaWMgU2FuZGVlbikKCS0gbGlieGZzOiBkb24ndCBPT00gb24gY29ycnVwdCBhZ2NvdW50IChEYXJyaWNrIFdvbmcpCgp4ZnNwcm9ncy00LjkuMCAoNSBKYW4gMjAxNykKCS0gbm8gY2hhbmdlcyBmcm9tIHY0LjkuMC1yYzEKCnhmc3Byb2dzLTQuOS4wLXJjMSAoMjIgRGVjIDIwMTYpCgktIGFkZCByZWZsaW5rIGFuZCBkZWR1cGUgc3VwcG9ydCAoRGFycmljayBXb25nKQoJLSBDb252ZXJ0IGZyb20gb2ZmNjRfdCB0byBvZmZfdCAoRmVsaXggSmFuZGEpCgktIHhmc19pbzogYWRkIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gc3RhcnQgYW4gaWRsZSB0aHJlYWQgKEFtaXIgR29sZHN0ZWluKQoJLSB4ZnNfcmVwYWlyOiBqdW5rIGxlYWYgYXR0cmlidXRlIGlmIGNvdW50ID09IDAgKEVyaWMgU2FuZGVlbikKCS0geGZzX3F1b3RhOiBoYW5kbGUgd3JhcHBlZCBpZCBmcm9tIEdFVE5FWFRRVU9UQSAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBmaXggc29tZSBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlZmVyZW5jZXMgKERhcnJpY2sgV29uZykKCS0gbGlieGZzX2FwcGx5OiBmaWx0ZXJpbmcgZml4ZXMgKERhdmUgQ2hpbm5lcikKCnhmc3Byb2dzLTQuOC4wICgxNyBPY3QgMjAxNikKCS0gbm8gY2hhbmdlcyBmcm9tIHY0LjguMC1yYzMKCnhmc3Byb2dzLTQuOC4wLXJjMyAoMyBPY3QgMjAxNikKCS0geGZzX2lvOiBjbGVhbiB1cCBpbm9kZSBjb21tYW5kIChFcmljIFNhbmRlZW4pCgktIHhmc19yZXBhaXI6IGZpeCBwaGFzZSA1IGJ0cmVlIHNpemUgb3ZlcmVzdGltYXRpb24gKERhcnJpY2sgV29uZykKCS0geGZzX3JlcGFpcjogZml4IHBoYXNlIDUgQUdGTCBybWFwIHVwZGF0ZSAoRGFycmljayBXb25nKQoJLSBsaWJ4ZnM6IGxpYnhmc19pZ2V0KCkgY2xlYW51cCAoRXJpYyBTYW5kZWVuKQoJLSBsaWJ4Y21kOiBmaXggY291bnQgb2YgWEZTIGZpbGVzeXN0ZW1zIGluIHBhdGggdGFibGUgKEVyeXUgR3VhbikKCnhmc3Byb2dzLTQuOC4wLXJjMiAoMjMgU2VwIDIwMTYpCgktIHhmc19jb3B5OiB1dWlkIGhhbmRsaW5nIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIHhmc19yZXBhaXI6IGRpcmVjdG9yeSByZWJ1aWxkIHNlZ2ZhdWx0IGZpeCAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiByZXBvcnQgbG9nIGRpcnRpbmVzcyBjb3JyZWN0bHkgKEVyaWMgU2FuZGVlbikKCS0gbGlieGZzOiBtb3VudGVkIGZpbGVzeXN0ZW0gZGV0ZWN0aW9uIGNsZWFudXBzIChFcmljIFNhbmRlZW4pCgktIHhmc19sb2dwcmludDogZG9uJ3QgcHJpbnQgdHJhbnNhY3Rpb24gdHlwZXMgYW55bW9yZSAoSG91IFRhbykKCS0geGZzX3F1b3RhOiBhbGxvdyBvcGVyYXRpb24gb24gbm9uLVhGUyBmaWxlc3lzdGVtcyAoQmlsbCBPJ0Rvbm5lbGwpCgktIHhmc19pbzogYWxsb3cgcHJvamVjdCBxdW90YSBvcGVyYXRpb25zIG9uIG5vbi1YRlMgKEVyaWMgU2FuZGVlbikKCS0gbWtmcy54ZnM6IG1hbiBwYWdlIGNhbHJpZmljYXRpb24gZm9yIGZ0eXBlIGRlZmF1bHRzIChFcmljIFNhbmRlZW4pCgp4ZnNwcm9ncy00LjguMC1yYzEgKDkgU2VwIDIwMTYpCgktIGNoYW5nZSBjb250YWN0IGVtYWlscyB0byBsaW51eC14ZnNAdmdlci5rZXJuZWwub3JnCgktIGxpYnhmczoga2VybmVsIHN5bmMgdXAgdG8gNC44LXJjMQoJLSBJbml0aWFsIHJldmVyc2UgbWFwcGluZyBzdXBwb3J0IChEYXJyaWNrIFdvbmcpCgktIGJ1ZmZlciBsb2NrIHRyYWNlIGFuYWx5c2lzIHRvb2wgKERhcnJpY2sgV29uZykKCS0gbG9ncHJpbnQ6IGNsZWFudXBzIGFuZCBmaXhlcyAoRGFycmljayBXb25nKQoJLSBtYW4gcGFnZSB1cGRhdGVzICh2YXJpb3VzKQoJLSBsaWJ4Y21kOiBtb3VudCBvcHRpb24gcGFyc2luZyBmaXhlcyAoRGFycmljayBXb25nKQoJLSB4ZnNfcXVvdGE6IHVzZSBYRlNfR0VUUVNUQVRWIChFcmljIFNhbmRlZW4pCgktIHhmc19xdW90YTogYWxsb3cgdXNlIG9uIG5vbi1YRlMgZmlsZXN5c3RlbXMgKEJpbGwgTydEb25uZWxsKQoJLSB4ZnNfZGI6IGFsbG93IGRpcmVjdCBtYW5pcHVsYXRpb24gb2YgQ1JDcyAoRXJpYyBTYW5kZWVuKQoJLSBsaWJ4ZnM6IGdldCByaWQgb2YgdXN0YXQoKSBjYWxscyAoRmVsaXggSmFuZGEpCgp4ZnNwcm9ncy00LjcuMCAoNSBBdWcgMjAxNikKCS0geGZzX2lvOiBtYW4gcGFnZSBmb3IgY29weV9maWxlX3JhbmdlIChBbm5hIFNjaHVtYWtlcikKCS0geGZzX3F1b3RhOiBoYW5kbGUgWEZTX0dFVE5FWFRRVU9UQSBmYWlsdXJlIHNhbmVseSAoWm9ycm8gTGFuZykKCS0gbWtmczogcmVtb3ZlIG9sZCBnbGliYyBidWlsZCBmYWlsdXJlIHdvcmthcm91bmQgKEZlbGl4IEphbmRhKQoKeGZzcHJvZ3MtNC43LjAtcmMyICgyMCBKdWwgMjAxNikKCS0geGZzX2lvOiBhZGQgc3VwcG9ydCBmb3IgY29weV9maWxlX3JhbmdlIChBbm5hIFNjaHVtYWtlcikKCS0gcmVwYWlyOiBmaXggZXhpdCB2YWx1ZSBhZnRlciBsb3cgbWVtb3J5IGlzIGRldGVjdGVkIChab3JybyBMYW5nKQoJLSByZXBhaXI6IGZpeCBxdW90YSBpbm9kZSBkZXRlY3Rpb24gaXNzdWUgKEVyaWMgU2FuZGVlbikKCS0gZml4IGNvdmVyaXR5IGlzc3VlcyBmcm9tIDQuNy1yYzEgKEJpbGwgTydEb25uZWxsKQoKeGZzcHJvZ3MtNC43LjAtcmMxICgyMiBKdW4gMjAxNikKCS0gbGlieGZzIGtlcm5lbCBzeW5jIHVwIHRvIDQuNy1yYzEKCS0gcXVvdGE6IG5ldyBlZmZpY2llbnQgaXRlcmF0aW9uIG1lY2hhbmlzbSAoRXJpYyBTYW5kZWVuKQoJLSBxdW90YTogc3VwcG9ydCB1c2VybmFtZXMgc3RhcnRpbmcgd2l0aCBkaWdpdHMgKFpvcnJvIExhbmcpCgktIHhmc19pbzogbW1hcC9tcmVtYXAgZml4ZXMgKFpvcnJvIExhbmcpCgktIGJ1aWxkL3RyYW5zbGF0aW9uIGZpeGVzIChNaWtlIEZyeXNpbmdlcikKCS0gcmVwYWlyOiBlcnJvciBtZXNzZ2UgY2xlYW51cHMgKEVyaWMgU2FuZGVlbikKCS0gbWtmczogdGFibGUgYmFzZWQgb3B0aW9uIHBhcnNpbmcgKEphbiBUdWxhaywgRXJpYyBTYW5kZWVuKQoJLSBtZXRhZHVtcDogc2VjdG9yIHNpemUgc3VwcG9ydCBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSBkYjogdW5hbGlnbmVkIGFjY2VzIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIGRiOiBhZGQgQ1JDIHJlY2FsY3VsYXRpb24gZm9yIGNvcnJ1cHQgYmxvY2tzCgktIGRiOiBmaXggYXJyYXkgbm90YXRpb24gaGFuZGxpbmcgaW4gcHJpbnQgY29tbWFuZHMKCS0gZGI6IE5vdGUgdGhhdCBmcmFnbWVuYXRpb24gZmFjdG9yIGlzIG1lYW5pbmdsZXNzIChFcmljIFNhbmRlZW4pCgktIHJlcGFpcjogbW9yZSBlZmZpY2llbnQgc2Vjb25kYXJ5IHN1cGVyYmxvY2sgc2VhcmNoIChCaWxsIE8nRG9ubmVsbCkKCS0gcXVvdGE6IHRpbWVyIHJlcG9ydGluZyBjb3JuZXIgY2FzZSBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSBoZWFkZXJzOiBzdHJ1Y3QgZnN4YXR0ciByZWRpZmluaXRpb24gZml4ZXMgKENocmlzdG9waCBIZWxsd2lnKQoJLSBtYW4gcGFnZSB1cGRhdGVzIChFcmljIFNhbmRlZW4sIEphbiBUdWxhaywgWm9ycm8gTGFuZykKCS0gcmVwYWlyOiBSVCBzdW1tYXJ5IGlub2RlIHJlYnVpbGQgZml4IChFcmljIFNhbmRlZW4pCgktIGRiOiBzcGFyc2UgaW5vZGUgY2hlY2sgZml4ZXMgKEJyaWFuIEZvc3RlcikKCnhmc3Byb2dzLTQuNS4wICgxNSBNYXIgMjAxNikKCS0geGZzX2lvOiBwcmV2ZW50IGRpdmlkZS1ieS16ZXJvIG9uIHJhbmRvbSBJTyAoRG1pdHJ5IE1vbmFraG92KQoJLSB4ZnNfZGI6IGRxdW90IGNvbW1hbmQgZG9jdW1lbnRhdGlvbiBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcXVvdGE6IGJldHRlciBjb21tYW5kIGxpbmUgcGFyc2luZyBhbmQgZG9jdW1lbnRhdGlvbgoJICAoWm9ycm8gTGFuZykKCnhmc3Byb2dzLTQuNS4wLXJjMSAoMTcgRmViIDIwMTYpCgktIGxpYnhmczogdXBkYXRlIHRvIG1hdGNoIGtlcm5lbCA0LjUtcmMxIGNvZGUgYmFzZQoJLSB4ZnNfaW86IGFkZCBEQVggaW5vZGUgZmxhZyBzdXBwb3J0CgktIHJlcGFpcjogc2NhbGFiaWxpdHkgaW1wcm92ZW1lbnRzIG9uIGxhcmdlIGNvcnJ1cHQgZmlsZXN5c3RlbXMKCS0gcmVwYWlyOiBkaXJlY3RvcnkgcmVidWlsZCBmaXhlcwoJLSBtZHJlc3RvcmU6IHByb2dyZXNzIGFjY291bnRpbmcgbm93IHdvcmtzCgktIG1ldGFkdW1wOiBmaXggYnRyZWUgYmxvY2sgdW51c2VkIHJlZ2lvbiB6ZXJvaW5nCgktIHF1b3RhOiB0aW1lciBjb21tYW5kIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIG1rZnM6IG1hbiBwYWdlIGNsZWFudXBzIChFcmljIFNhbmRlZW4pCgktIHhmc19pbzogcmVmbGluaywgZGVkdXBlIGFuZCBvdGhlciBmaXhlcyAoRGFycmljayBXb25nKQoJLSBxdW90YTogUV9YR0VUTkVYVFFVT1RBIHN1cHBvcnQgKEVyaWMgU2FuZGVlbikKCS0gYnVpbGQgY2xlYW51cHMgZm9yIGFsdGVybmF0ZSBDIGxpYnJhcnlzIChKb3NodWEgS2luYXJkLCBGZWxpeCBKYW5kYSkKCS0gZGI6IGNoZWNrIGZpeGVzIGZvciBzcGFyc2UgaW5vZGVzIChEYXJyaWNrIFdvbmcpCgktIHZhcmlvdXM6IEZpeGVzIGZvciBDb3Zlcml0eSByZXBvcnRzIChWaXZlayBUcml2ZWRpKQoJLSB4ZnNfaW86IERvY3VtZW50IHplcm8gYW5kIGhlbHAgY29tbWFuZHMgKEVyaWMgU2FuZGVlbikKCS0gbWtmczogRElPIGNhbiB1c2UgbG9naWNhbCBzZWN0b3Igc2l6ZSBsaW1pdHMgKEVyaWMgU2FuZGVlbikKCS0gcmVwYWlyOiBkb24ndCByZXNldCBsb2cgY3ljbGUgbnVtYmVycyB3aGVuIHplcm9pbmcgKEJyaWFuIEZvc3RlcikKCS0gZGI6IGFkZCBhYmlsaXR5IHRvIGZvcm1hdCBsb2cgdG8gYSBzcGVjaWZpYyBjeWNsZSAoQnJpYW4gRm9zdGVyKQoKeGZzcHJvZ3MtNC4zLjAgKDIzIE5vdiAyMDE1KQoJLSB4ZnNfZnNyOiBjbGVhbnVwcyB0byByZWNlbnQgY2hhbmdlcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfZnNyOiBpbXByb3ZlZCB0ZW1wIGZpbGUgYXR0ciBmb3JrIGhhbmRsaW5nIChFcmljIFNhbmRlZW4pCgktIGxpYnhmczogb3V0cHV0IHZlcmlmaWVyIG5hbWVzIGluIHdhcm5pbmdzIChFcmljIFNhbmRlZW4pCgktIHhmc19yZXBhaXI6IGVuYWJsZSB2ZXJpZmllciBjb3JydXB0aW9uIHdhcm5pbmdzIG9uIHZlcnkgdmVyYm9zZQoJICBvdXRwdXQgc2V0dGluZ3MgKEVyaWMgU2FuZGVlbikKCS0gZGViaWFuOiB1cGRhdGUgaW5pdHJhbWZzIGluIHBvc3RpbnN0IHNjcmlwdCAoU3RldmUgTWNJbnR5cmUpCgp4ZnNwcm9ncy00LjMuMC1yYzIgKDEwIE5vdiAyMDE1KQoJLSB4ZnNfZnNyOiBhYnN0cmFjdCBtbnRpbmZvL21udGVudCBkaWZmZXJlbmNlcyAoSmFuIFR1bGFrKQoJLSB4ZnNfaW86IHVwZGF0ZSByZWZsaW5rL2RlZHVwZSBpb2N0bCBkZWZpbml0aW9ucyBhbmQgaW1wbGVtZW50YXRpb24KCSAgKERhcnJpY2sgV29uZykKCS0gbGlieGNtZDogZmFjdG9yaW5nIG9mIHJ1bnRpbWUgcmVwb3J0aW5nIChEYXJyaWNrIFdvbmcpCgktIG1hbiBwYWdlIGZpeGVzIChWaWxsZSBTa3l0dOQpCgktIHJlbW92YWwgb2YgQVNTRVJUIGZyb20gZXhwb3J0ZWQgaGVhZGVycwoKeGZzcHJvZ3MtNC4zLjAtcmMxICgxNCBPY3QgMjAxNSkKCS0geGZzX2lvOiByZWZsaW5rIGFuZCBkZWR1cGUgb3BlcmF0aW9uIHN1cHBvcnQgKERhcnJpY2sgV29uZykKCS0geGZzX2RiOiBibG9ja2dldC9ibG9ja3RyYXNoIHN1cHBvcnQgZm9yIHY1IGZpbGVzeXN0ZW1zCgkgIChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IG1hbnkgZGlyZWN0b3J5L2F0dHIgY2xlYW51cHMgYW5kIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIE1vcmUgT1MgWCBidWlsZCBpbXByb3ZlbWVudHMgKEphbiBUdWxhaykKCS0gTG9nIHplcm9pbmcgcmV3b3JrIGZvciB2NSBmaWxlc3lzdGVtcyB0byBwcmV2ZW50IGxvZyBzZXF1ZW5jZQoJICBudW1iZXJzIGZyb20gZ29pbmcgYmFja3dhcmRzIChCcmFpbiBGb3N0ZXIpCgp4ZnNwcm9ncy00LjIuMCAoNyBTZXAgMjAxNSkKCS0gcmVwYWlyOiBmaXggY3Jhc2hlcyBkdWUgdG8gbWlzc2luZyBnZW9tZXRyeSBwb2ludGVyIChFcmljIFNhbmRlZW4pCgktIHJlcGFpcjogZml4IG5vZGUgaGFuZGxpbmcgb24gbGFyZ2UgYXR0cmlidXRlIGJ0cmVlcyAoQnJpYW4gRm9zdGVyKQoJLSByZXBhaXI6IGF0dHJpYnV0ZSBibG9jayBoZWFkZXIgdmVyaWZpY2F0aW9uIGZpeGVzIChEYXJyaWNrIFdvbmcpCgktIGxpYnhmczogbW9yZSBlcnJvciBuZWdhdGlvbiBmaXhlcyAoRGFycmljayBXb25nKQoJLSBsaWJ4ZnM6IGNhbmNlbGxlZCByZWFkYWhlYWQgYnVmZmVyIHN0YXRlIGluaXRpYWxpc2F0aW9uIGZpeGVzCgkgIChEYXJyaWNrIFdvbmcpCgktIGJ1aWxkOiBpbmNsdWRlL3hmcyBoZWFkZXIgcGF0aCBmaXggKEx1Y2FzIFN0YWNoKQoKeGZzcHJvZ3MtNC4yLjAtcmMzICgyNSBBdWcgMjAxNSkKCS0geGZzX3JlcGFpcjogZGlyZWN0b3J5IHZlcmlmaWNhdGlvbiBmaXhlcyAoRGFycmljayBXb25nKQoJLSBsaWJ4ZnM6IGVycm5vIG5lZ2F0aW9uIGZpeGVzIChEYXJyaWNrIFdvbmcpCgktIHhmc19kYjogY29ycnVwdCBpbm9kZSBoYW5kbGluZyBmaXhlcyAoRGFycmljayBXb25nKQoJLSByZXBhaXI6IG1lbW9yeSBsZWFrIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIGxpYnhmczogZGlyZWN0b3J5IGNvcnJ1cHRpb24gZml4IChKYW4gS2FyYSkKCS0gbGlieGZzOiBnY2MgbWlzY29tcGlsZSBmaXhlcyAoSmFuIEthcmEpCgktIGxpYnhmczogbWVyZ2UgYWNyb3NzIGJ1ZyBmaXhlcyBmcm9tIDQuMiBrZXJuZWwgY29kZQoJLSBtYW4gcGFnZXM6IG1pbm9yIHVwZGF0ZXMgKEVyaWMgU2FuZGVlbikKCnhmc3Byb2dzLTQuMi4wLXJjMiAoMTggQXVnIDIwMTUpCgktIE9TIFggYnVpbGQgaW1wcm92ZW1lbnRzIChKYW4gVHVsYWspCgktIGxpYnhmczogZml4IGNvZGUgbWlzY29tcGlsYXRpb24gdy8gZ2NjIDQuOC4zIChKYW4gS2FyYSkKCS0gbWtmcy54ZnM6IGRlZmF1bHQgdG8gdXNpbmcgZnR5cGU9MSBmb3IgYWxsIGZpbGVzeXN0ZW1zCgktIG1rZnMueGZzOiBDTEkgb3B0aW9ucyBwYXJzaW5nIG9yZGVyIGZpeCAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBpbXByb3ZlIGlub2RlIHZlcnNpb24gY2hlY2tzIChSb2dlciBXaWxsY29ja3MpCgktIGxpYnhmczogcmVtb3ZlIGV4Y2Vzc2l2ZSBFWFBFUklNRU5UQUwgZmVhdHVyZSB3YXJuaW5ncwoJICBmb3Igc3BhcnNlIGlub2RlcyAoQnJpYW4gRm9zdGVyKQoJLSB4ZnNfZGI6IGZpeCBuZXcgZ2NjIDQuOS4zIGJ1aWxkIHdhcm5pbmdzCgp4ZnNwcm9ncy00LjIuMC1yYzEgKDQgQXVnIDIwMTUpCgktIHVwZGF0ZSBsaWJ4ZnMgdG8gbWF0Y2gga2VybmVsIDQuMi1yYzEKCS0gbGlieGZzIGFuZCBpbmNsdWRlIHJlc3RydWN0dXJpbmcgdG8gbWF0Y2gga2VybmVsIGNvZGUKCS0gc3BhcnNlIGlub2RlIHN1cHBvcnQgKEJyaWFuIEZvc3RlcikKCS0gQW5kcm9pZCBidWlsZCBzdXBwb3J0IChUZWQgVHNvKQoJLSBNYWMgT1MgWCBidWlsZCBmaXhlcyAoSmFuIFR1bGFrKQoJLSBjaGFuZ2luZyBVVUlEcyBvbiB2NSBmaWxlc3lzdGVtcyAoRXJpYyBTYW5kZWVuKQoJLSBsaWJ4ZnMtYXBwbHkgc2NyaXB0IGZvciBrZWVwaW5nIGtlcm5lbC9wcm9ncyBsaWJ4ZnMgaW4gc3luYwoJICAoRXJpYyBTYW5kZWVuKQoJLSBsb3RzIG9mIGhlYWRlciBhbmQgdHlwZSBjbGVhbnVwcyAoQ2hyaXN0b3BoIEhlbGx3aWcpCgktIGxpYmJsa2lkIG5vdyBtYW5kYXRvcnkgKEphbiBUdWxhaykKCS0gbG90cyBvZiBidWcgZml4ZXMgKEJyaWFuIEZvc3RlciwgRXJpYyBTYW5kZWVuLCBDaHJpc3RvcGggSGVsbHdpZywKCSAgTWlrZSBHcmFudCkKCnhmc3Byb2dzLTMuMi40ICgzMCBKdWwgMjAxNSkKCS0geGZzX21ldGFkdW1wOiBpbmZvcm1hdGlvbiBsZWFrYWdlIGZpeGVzIChDVkUtMjAxMi0yMTUwKSAoRXJpYyBTYW5kZWVuKQoKeGZzcHJvZ3MtMy4yLjMgKDEwIEp1biAyMDE1KQoJLSBEZWJpYW4gcGFja2FnaW5nIHVwZGF0ZXMgKE5hdGhhbiBTY290dCkKCnhmc3Byb2dzLTMuMi4zLXJjMiAoMSBKdW4gMjAxNSkKCS0geGZzX3JlcGFpcjogaGFuZGxlIHNwZWNpYWxsIGF0cmlidXRlIG5hbWVzIGNvcnJlY3RseSAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBoYW5kbGUgdjUgZm9ybWF0IGZlYXR1cmUgZmxhZ3MgY29ycmVjdGx5IChEYXJyaWNrIFdvbmcpCgktIHhmc19yZXBhaXI6IEJldHRlciB2NSBmb3JtYXQgdmFsaWRhdGlvbiBmb3IgZGlyZWN0b3JpZXMgKERhcnJpY2sgV29uZykKCnhmc3Byb2dzLTMuMi4zLXJjMSAoMTEgTWF5IDIwMTUpCgktIG1rZnMueGZzOiBlbmFibGUgbWV0YWRhdGEgQ1JDcyBieSBkZWZhdWx0CgktIG1rZnMueGZzOiBlbmFibGUgZnJlZSBpbm9kZSBidHJlZXMgYnkgZGVmYXVsdAoJLSBidWlsZDogZ2xpYmMgc3VwcG9ydCB1cGRhdGVzIChKYW4gVHVsYWspCgktIG1hbiBwYWdlIHVwZGF0ZXMgKFNhZ2UgV2VpbCwgTmFtamFlIEplb24sIEVyaWMgU2FuZGVlbikKCS0geGZzX2FkbWluOiBDaGFuZ2luZyBVVUlEcyBkaXNhYmxlIGZvciBDUkMgZW5hYmxlZCBmaWxlc3lzdGVtcwoJICAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBTZXBhcmF0ZSBwcXVvdGEgaW5vZGUgZml4ZXMgKEJyaWFuIEZvc3RlcikKCS0geGZzX2RiOiBpbm9kZSBhbGlnbm1lbnQgZml4ZXMgKEJyaWFuIEZvc3RlcikKCS0gbWtmcy54ZnM6IGZpeCBmYWlsdXJlcyBjcmVhdGluZyBmaWxlIGltYWdlcyAoQnJpYW4gRm9zdGVyKQoJLSBsaWJ4ZnM6IHplcm8gbmV3IGJ1ZmZlcnMgYmVmb3JlIHVzZSAoRGFycmljayBKLiBXb25nKQoJLSB4ZnNfcmVwYWlyOiBoYW5kbGUgZGlyZWN0b3J5IGxlYWYgQ1JDIGVycm9ycyBncmFjZWZ1bGx5CgkgIChEYXJyaWNrIEouICBXb25nKQoJLSB4ZnNfcmVwYWlyOiB2YWxpZGF0ZSBhbmQgcmVwYWlyIGlub2RlIENSQ3MgKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpcjogbG90cyBvZiBicm9rZW4gZGlyZWN0b3J5IHJlcGFpciBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfZGI6IGhhbmRsZSB2MyBpbm9kZXMgcHJvcGVybHkgKEVyaWMgU2FuZGVlbikKCS0geGZzX2RiOiBhbGxvdyB3cml0aW5nIGNvcnJ1cHRlZCBtZXRhZGF0YSBvbiBDUkMgZW5hYmxlZCBmaWxlc3lzdGVtcwoJICAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyOiBncmFjZWZ1bGx5IGhhbmRsZSA+IDUxMiBieXRlIHNlY3RvciBzdXBlcmJsb2NrcwoJLSBta2ZzLnhmczogdGFrZSBpbnRvIGFjb2N1bnQgbG9nIHN0cmlwZSB1bml0IHdoZW4gc2l6aW5nIGxvZwoJLSB4ZnNfbWV0YWR1bXA6IGlub2RlIGFsaWdubWVudCBhbmQgbnVsbCBpbm9kZSBmaXhlcyAoQnJpYW4gRm9zdGVyKQoJLSB4ZnNfaW86IEZBTExPQ19GTF9JTlNFUlRfUkFOR0Ugc3VwcG9ydCAoTmFtamFlIEplb24pCgktIGJ1aWxkOiBsaWJ0b29sIHN0YXRpYyBsaWJyYXJ5IGJ1aWxkIGZpeGVzIChSb21haW4gTmFvdXIpCgktIG1rZnMueGZzOiBsYXJnZSBibG9jayBzaXplIGlub2RlIGFsaWdubWVudCBmaXhlcyAoQnJpYW4gRm9zdGVyKQoJLSB4ZnNfcmVwYWlyOiBzZWNvbmRhcnkgc3VwZXJibG9jayBzY2FuIGZpeGVzIChCcmlhbiBGb3N0ZXIpCgktIHhmc19yZXBhaXI6IGRvbid0IGNhcmUgYWJvdXQgc3ltbGluayBjb21wZW5lbnQgbGVuZ3RocwoJICAoRXJpYyBTYW5kZWVuKQoKeGZzcHJvZ3MtMy4yLjIgKDQgRGVjZW1iZXIgMjAxNCkKCS0gRGViaWFuIHBhY2thZ2luZyB1cGRhdGVzIChOYXRoYW4gU2NvdHQpCgktIHhmc19yZXBhaXIsIG1rZnMueGZzIHN0cmlwZSBnZW9tZXRyeSBmaXhlcyAoRXJpYyBTYW5kZWVuKQoJLSBsaWJ4Y21kIHBhdGggaGFuZGxpbmcgZml4ZXMgKEVyaWMgU2FuZGVlbikKCS0geGZzX2NyYXNoIGNyYXNoIGZpeCAoSmllIExpdSkKCS0geGZzX2xvZ3ByaW50IEFHSS9BR0YgaGFuZGxpbmcgaW1wcm92ZW1lbnRzIChKYW4gS2FyYSkKCS0gbGliaGFuZGxlIHN1cHBvcnQgZm9yIHN5bWxpbmtlZCAvdXNyIChKYW4gVHVsYWspCgktIGZpeCBtdWx0aXBsZSBDb3Zlcml0eSBhbmQgc3BhcnNlIHJlcG9ydGVkIGlzc3VlcyAoRXJpYyBTYW5kZWVuKQoJLSBuZXcgbXJlbWFwLCBzeW5jLCBzeW5jZnMgY29tbWFuZHMgZm9yIHhmc19pbyAoRXJpYyBTYW5kZWVuKQoJLSBtYW4gcGFnZSB1cGRhdGVzIChFcmljIFNhbmRlZW4sIE1hcmsgVGluZ3VlbHkpCgktIHhmc19yZXBhaXIgc2V0cyBmdHlwZSBpbiBsb3N0K2ZvdW5kIGRpcmVudHMgKEphbiBLYXJhKQoJLSB4ZnNfcmVwYWlyIGhhbmRsZXMgYmFkIGlub2RlcyBiZXR0ZXIgKEVyaWMgU2FuZGVlbikKCS0geGZzX3JlcGFpciBmcmVlbGlzdCByZWJ1aWxkIGltcHJvdmVtZW50cwoJLSB4ZnNfcmVwYWlyIGZpbm9idCBjcmFzaCBmaXhlcyAoQnJpYW4gRm9zdGVyKQoJLSB4ZnNfY29weSBoYW5kbGVzIDRrIHNlY3RvciBkZXZpY2VzIGJldHRlciAoRXJpYyBTYW5kZWVuKQoKeGZzcHJvZ3MtMy4yLjEgKDE1IEp1bHkgMjAxNCkKCS0gQWRkZWQgc3VwcG9ydCBmb3IgbmV3IG9uLWRpc2sgZnJlZSBpbm9kZSBidHJlZSAoQnJpYW4gRm9zdGVyKQoJLSBsaWJ4ZnMgaW5vZGUgdXNlLWFmdGVyIGZyZWUgZml4ZXMgKE1hcmsgVGluZ3VlbHkpCgktIHhmc19jb3B5IHRocmVhZGluZyBjbGVhbnVwcyAoSnVueGlhbyBCaSkKCS0geGZzX2NoZWNrIGhhcyBiZWVuIHJlbW92ZWQKCS0gQysrIGhlYWRlciBjb21waWxlciBmaXhlcyAoUm9nZXIgV2lsbGNvY2tzKQoJLSB4ZnNfcmVwYWlyIHByZWZldGNoIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIHhmc19yZXBhaXIgZGlyZWN0b3J5IGJsb2NrIENSQyBkZXRlY3Rpb24gZml4ZXMgKEphbiBLYXJhKQoJLSB4ZnNfcmVwYWlyIGRpcmVjdG9yeSByZWJ1aWxkIGZpeGVzCgktIGxpYnhmcyBidWZmZXIgZXJyb3IgaGFuZGxpbmcgZml4ZXMKCS0geGZzX3JlcGFpciBxdW90YSBpbm9kZSBoYW5kbGluZyBmaXhlcwoJLSByZW1vdmVkIGluY29ycmVjdCBhc3NlcnRzIGZyb20gcGhhc2UgMiBvZiB4ZnNfcmVwYWlyCgktIHVwZGF0ZWQgUG9saXNoIHRyYW5zbGF0aW9ucyAoSmFrdWIgQm9ndXN6KQoJLSB4ZnNfbWtmcyA0ayBzZWN0b3IgZGV2aWNlIGZpeGVzIChFcmljIFNhbmRlZW4pCgktIHhmc19mc3IgY2xlYW51cHMgbmQgZml4ZXMgKEVyaWMgU2FuZGVlbikKCS0gbW91bnQgb3B0aW9ucyBkZXNjcmliZWQgaW4geGZzKDUpIG1hbiBwYWdlIChFcmljIFNhbmRlZW4pCgp4ZnNwcm9ncy0zLjIuMCAoMTYgTWF5IDIwMTQpCgktIEZpcnN0IHJlbGVhc2Ugd2l0aCBmdWxsIHN1cHBvcnQgb2YgQ1JDIGVuYWJsZWQgZmlsZXN5c3RlbXMKCS0gTm8gY29kZSBjaGFuZ2VzIGZyb20gMy4yLjAtcmMzCgp4ZnNwcm9ncy0zLjIuMC1yYzMgKDkgTWF5IDIwMTQpCgktIFRoaXJkIHJlbGVhc2UgY2FuZGlkYXRlIGZvciBmdWxsIHN1cHBvcnQgb2YgQ1JDIGVuYWJsZWQgZmlsZXN5c3RlbXMKCS0gVXBkYXRlZCBEZWJpYW4gY2hhbmdlIGxvZ3MgaW4gcHJlcGFyYXRpb24gZm9yIHJlbGVhc2UgKE5hdGhhbiBTY290dCkKCS0gQnVpbGQgd2FybmluZyBmaXhlcyAoTmF0aGFuIFNjb3R0KQoJLSB4ZnNfcmVwYWlyIHByZWZldGNoIGZpeCAoRXJpYyBTYW5kZWVuKQoJLSB4ZnNfcmVwYWlyIGJsb2NrIHRyYWNraW5nIHNjYWxhYmlsaXR5IGZpeAoKeGZzcHJvZ3MtMy4yLjAtcmMyICgyIE1heSAyMDE0KQoJLSBTZWNvbmQgcmVsZWFzZSBjYW5kaWRhdGUgZm9yIGZ1bGwgc3VwcG9ydCBvZiBDUkMgZW5hYmxlZCBmaWxlc3lzdGVtcwoJLSB4ZnNfcmVwYWlyIGhhcyBmdWxsIENSQyB2YWxpZGF0aW9uIGFuZCByZXBhaXIKCS0gQ292ZXJpdHkgcmVsYXRlZCBjbGVhbnVwcyBhbmQgZml4ZXMKCnhmc3Byb2dzLTMuMi4wLXJjMSAoMTQgQXByaWwgMjAxNCkKCS0gRmlyc3QgcmVsZWFzZSBjYW5kaWRhdGUgZm9yIGZ1bGwgc3VwcG9ydCBvZiBDUkMgZW5hYmxlZCBmaWxlc3lzdGVtcwoJLSBMYXJnZSBudW1iZXIgb2YgQ292ZXJpdHkgcmVsYXRlZCBmaXhlcyBhbmQgY2xlYW51cHMKCS0gZGlzYW1iaWd1b3VzIG9mIENSQyB2YWxpZGF0aW9uIGVycm9ycyBmcm9tIElPIGVycm9ycy4KCS0gSW1wcm92ZWQgZGFuZ2Vyb3VzIG1vZGUgaGFuZGxpbmcgaW4gcmVwYWlyCgktIHJlcGFpciBoYW5kbGVzIGdhcmJhZ2UgaW4gemVyb2VkIGFyZWFzIG9mIHN1cGVyYmxvY2tzIGJldHRlcgoJLSByZXBhaXIgdmFsaWRhdGVzIGRpcmVudCBmdHlwZSBmaWVsZCBmdWxseQoJLSBtZXRhZHVtcCBmdWxseSBzdXBwb3J0cyBkaXNjb250aWd1b3VzIGRpcmVjdG9yeSBibG9ja3MKCS0gbWV0YWR1bXAgb25seSByZWNhbGN1bGF0ZXMgQ1JDcyBvbiBtZXRhZGF0YSBpdCBvYmZ1c2NhdGVzIHNvIGFzIHRvCgkgIHByZXNlcnZlIGVycm9ycyBpbiB0aGUgbWV0YWRhdGEgd2hlcmUgcG9zc2libGUuCgktIGRlZmF1bHQgbG9nIHNpemUgdGhhdCBta2ZzIGNyZWF0ZXMgaXMgbm93IHJldmVydGVkIHRvIHRoZSBzYW1lIHNpemUKCSAgYXMgMy4xLnggcmVsZWFzZXMgY3JlYXRlLgoJLSBta2ZzIHNldHMgdGhlIGZ0eXBlIG9uIGRpcmVjdG9yeSBlbnRyaWVzIGNvcnJlY3RseSBkdXJpbmcgcHJvdG9maWxlCgkgIHBvcHVsYXRpb24KCS0geGZzX2lvIHN1cHBvcnQgT19UTVBGSUxFLCBmbGluaywgRkFMTE9DX0ZMX1pFUk9fUkFOR0UgYW5kCgkgIEZBTExPQ19GTF9DT0xMQVBTRV9SQU5HRSwKCS0gbG9ncHJpbnQgaGFuZGxlcyBzcGxpdCBlbnRyaWVzIGJldHRlcgoKeGZzcHJvZ3MtMy4yLjAtYWxwaGEyICgyNSBOb3ZlbWJlciAyMDEzKQoJLSBBbHBoYSByZWxlYXNlIGZvciB0aGUgcHVycG9zZSBvZiB0ZXN0aW5nIHRoZSBDUkMgZmVhdHVyZSBpbgoJICBrZXJuZWxzIDMuMTAgYW5kIG5ld2VyLgoJLSBFbmFibGUgeGZzX2RiIHdyaXRlIHN1cHBvcnQgYW5kIHhmc19tZXRhZHVtcCBzdXBwb3J0IGZvciBDUkMKCSAgZW5hYmxlZCBmaWxlc3lzdGVtcy4KCS0gQWRkIGRpcmVjdG9yeSBlbnRyeSBmaWxldHlwZSBzdXBwb3J0IGZvciBub24tQ1JDIGZpbGVzeXN0ZW1zLgoJLSBSZW1vdmUgZXhwZXJpbWVudGFsIHdhcm5pbmdzIGZvciBDUkMgZmlsZXN5c3RlbXMuCgktIEVuc3VyZSBhbGwgaW5vZGVzIGNyZWF0ZWQgYnkgeGZzX3JlcGFpciBoYXZlIGEgcHJvcGVyIGRfdHlwZSBzZXQuCgktIEZpeCBidWlsZCBvbiBiaWcgZW5kaWFuIG1hY2hpbmVzLgoJLSBQcm9wZXJseSBoYW5kbGUgc3ltbGlua3MgdG8gZGV2aWNlcyBvbiB2YXJpb3VzIHRvb2wgY29tbWFuZGxpbmVzLgoJLSBGaXggeGZzX3JlcGFpcidzIGRpcnR5IGxvZyBkZXRlY3Rpb24gZm9yIDRrIHNlY3RvciBsb2dzLCBicm9rZW4KCSAgaW4gQWxwaGExLgoJLSBGaXggYSBwb3RlbnRpYWwgc2VnZmF1bHQgaW4geGZzX3JlcGFpciB3aGVuIGlzc3VpbmcgcHJvZ3Jlc3MgCgkgIHJlcG9ydHMuCgktIEZpeCBwb3RlbnRpYWwgeGZzX2ZzciBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdy8gc2VsaW51eC4KCS0gVXBkYXRlIGNvbmZpZy5ndWVzcy9jb25maWcuc3ViIGZvciBhcm02NCwgdGhhbmtzIHRvIENvbGluIFdhdHNvbi4KCS0gU3RvcCB3YXN0aW5nIG1lbW9yeSBieSBjYWNoaW5nIGlub2RlIHN0cnVjdHVyZXMgaW4geGZzX3JlcGFpciAtCgkgIHRoZXkgYXJlIG5ldmVyIHJlLXVzZWQuICBUaGFua3MgdG8gQ2hyaXN0b3BoIEhlbGx3aWcuCgktIEZpeCBzZXZlcmFsIENvdmVyaXR5LWZvdW5kIGRlZmVjdHMsIHRoYW5rcyB0byBMaSBaaG9uZy4KCS0gRml4IHBsYXRmb3JtX3Rlc3RfeGZzX2ZkIHRvIHJldHVybiBmYWxzZSBvbiBzcGVjaWFsIGZpbGVzIHdoaWNoCgkgIGNhbm5vdCB0YWtlIGFuIHhmcyBpb2N0bC4KCS0gU3luYyB1cCBsaWJ4ZnMgd2l0aCBrZXJuZWwgY29kZS4KCS0gSW1wcm92ZWQgeGZzX3JlcGFpciBwZXJmb3JtYW5jZSBvbiBsYXJnZSBmaWxlc3lzdGVtcwoJICAoYWx3YXlzIHVzZSBwcmVmZXRjaCBhbmQgc3RyaWRlZCBBRyBzY2FubmluZyBmdW5jdGlvbmFsaXR5KQoKCnhmc3Byb2dzLTMuMi4wLWFscGhhMSAoMjYgU2VwdGVtYmVyIDIwMTMpCgktIEFscGhhIHJlbGVhc2UgZm9yIHRoZSBwdXJwb3NlIG9mIHRlc3RpbmcgdGhlIENSQyBmZWF0dXJlIGluCgkgIGtlcm5lbHMgMy4xMCBhbmQgbmV3ZXIuCgktIFJlbW92ZSBhbGwgdmVzdGlnZXMgb2Ygb2xkLCB1bnN1cHBvcnRlZCB2ZXJzaW9uIDEgZGlyZWN0b3J5IGNvZGUuCgktIEFkZCBhICJyZWFkZGlyIiBjb21tYW5kIHRvIHhmc19pbywgdGhhbmtzIHRvIEJyaWFuIEZvc3Rlci4KCS0gRml4IHBvdGVudGlhbCBzZWdmYXVsdCBpbiB4ZnNfcmVwYWlyIHdoZW4gY3JlYXRpbmcgbG9zdCtmb3VuZC4KCS0gWmVybyBvdXQgdW51c2VkIHBhcnRzIG9mIG9uLWRpc2sgc3VwZXJibG9ja3MgZHVyaW5nIHJlcGFpciwgdG8KCSAgYXZvaWQgbWV0YWRhdGEgdmVyaWZpZXIgZmFpbHVyZXMgYXQgcnVudGltZS4KCS0gQWRkIGRpcmVjdG9yeSBlbnRyeSB0eXBlIHN1cHBvcnQgdG8gbWtmcy54ZnMgYW5kIHhmc19kYi4KCS0gQWRkIHRoZSBpY3JlYXRlIHRyYW5zYWN0aW9uIHRvIHhmc19sb2dwcmludCwgYW5kIGZpeCBjb250aW51YXRpb24KCSAgdHJhbnNhY3Rpb25zLgoJLSBBZGQgdGhlIGxzZWVrIFNFRUtfREFUQS9TRUVLX0hPTEUgc3VwcG9ydCBpbnRvIHhmc19pby4KCS0gUHJpbnQgYWxsIEFHSSB1bmxpbmtlZCBidWNrZXRzIGluIHhmc19sb2dwcmludC4KCS0gRml4IG1rZnMueGZzIEVOT1NQQyB3aXRoIHByb3RvZmlsZSB3aGljaCBjcmVhdGVzIGEgdmVyeSBsYXJnZQoJICBkaXJlY3RvcnkuCgktIEZpeCBzZXZlcmFsIENvdmVyaXR5LWZvdW5kIGRlZmVjdHMsIHRoYW5rcyB0byBMaSBaaG9uZy4KCS0gRG8gYWxsIGZpbGUgcmVhZHMgaW4geGZzX2ZzciB1c2luZyBPX0RJUkVDVC4KCS0gU3luYyB1cCBsaWJ4ZnMgd2l0aCBrZXJuZWwgY29kZS4KCS0gQWRkIHN1cHBvcnQgZm9yIGNvbmN1cnJlbnQgZ3JvdXAgYW5kIHByb2plY3QgcXVvdGEgdXNhZ2Ugb24gQ1JDCgkgIGVuYWJsZWQgZmlsZXN5c3RlbXMuCgktIEVuc3VyZSBta2ZzIGNyZWF0ZXMgbG9nIHNpemVzIHRoYXQgYXJlIGFsd2F5cyBsYXJnZSBlbm91Z2ggZm9yCgkgIHRoZSBjb25maWd1cmVkIGZpbGV5c3RlbSBnZW9tZXRyeS4KCnhmc3Byb2dzLTMuMS4xMSAoOCBNYXkgMjAxMykKCS0gU3VwcG9ydCBmb3IgcmVsYXRpdmUgcGF0aHMgaW4geGZzX3F1b3RhIHRoYW5rcyB0byBTYXRvcnUgVGFrZXVjaGkuCgktIG1rZnMueGZzIHdpbGwgYWx3YXlzIGdvIGludG8gbXVsdGlkaXNrIG1vZGUgd2hlbiBmaWxlc3lzdGVtCgkgIGdlb21ldHJ5IGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgoJLSBEb2N1bWVudCBhbGwgY29tbWFuZHMgaW4geGZzX2lvLgoJLSBSZW1vdmUgc2V0ZmwgY29tbWFuZCBmcm9tIHhmc19pby4KCS0geGZzX21ldGFkdW1wIHdpbGwgb2JmdXNjYXRlIHN5bWxpbmtzIGJ5IHBhdGggY29tcG9uZW50LgoJLSBta2ZzLnhmcyBubyBsb25nZXIgYWNjZXB0cyBnZW9tZXRyeSBzZXR0aW5ncyBzbWFsbGVyIHRoYW4gdGhlCgkgIHBoeXNpY2FsIHNlY3RvciBzaXplLgoJLSB4ZnNfbG9ncHJpbnQgbm93IHN1cHBvcnRzIG11bHRpcGx5LWxvZ2dlZCBpbm9kZSBmaWVsZHMgYW5kCgkgIGhhbmRsZXMgY29udGludWVkIGlub2RlIHRyYW5zYWN0aW9ucyBjb3JyZWN0bHkuCgktIGtpbGwgWExPR19TRVQKCS0gVXBkYXRlIHJlbGVhc2Ugc2NyaXB0cyB0byB1c2UgZ2l0IGFyY2hpdmUgdG8gYWRkcmVzcyBhCgkgIG1pc3Npbmcgc291cmNlIGZpbGUgcmVwb3J0ZWQgYnkgQXJrYWRpdXN6IE1pP2tpZXdpY3oKCS0gRml4IGEgYnVpbGQgZXJyb3Igd2l0aCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSwgcmVwb3J0ZWQKCSAgYnkgQXJrYWRpdXN6IE1pP2tpZXdpY3oKCS0gbWtmcy54ZnMgbm8gbG9uZ2VyIGF0dGVtcHRzIHRvIGRpc2NhcmQgd2hlbiAtTiBvcHRpb24gaXMgdXNlZC4KCS0gVXBkYXRlICdtYWtlIGRlYicgdG8gdXNlIHRhcmJhbGwKCS0gU3luYyB1cCB3aXRoIGxvZyByZXNlcnZhdGlvbiBjaGFuZ2VzIGluIHRoZSBrZXJuZWwuCgktIEZpeCBwb3NzaWJsZSB1bmFsbG9jYXRlZCBtZW1vcnkgYWNjZXNzIGluIGZpZW1hcC4KCS0gR3VhcmQgYWdhaW5zdCBzdHJpbmcgb3ZlcmZsb3cgaW4gcGF0aF90b19mc3BhdGguCgktIEZpeCBzZXR1cF9jdXJzb3IgYXJyYXkgYWxsb2NhdGlvbi4KCS0gRml4IGZyZWUgb2YgdW5pbnRpYWxpemVkIHBvaW50ZXIgaW4geGZzX2FjbF92YWxpZCBlcnJvciBwYXRoLgoJLSBHdWFyZCBhZ2FpbnN0IHBhdGggc3RyaW5nIG92ZXJmbG93cy4KCS0gQ2hlY2sgc3RyZHVwIHJlc3VsdHMgcHJvcGVybHkgaW4gaW5pdGFsbGZzKCkuCgktIEZpeCBhdHRyaWJ1dGUgbm9fY2hhbmdlX2NvdW50IGxvZ2ljLgoJLSBSZW1vdmUgZXh0cmFuZW91cyBjbG9zZSgpIGluIGZzcmFsbGZzKCkuCgktIHhmc19yZXBhaXIgbm93IHNraXBzIHRoZSBmcmVlbGlzdCBzY2FuIG9mIGEgY29ycnVwdCBhZ2YKCSAgd2hlbiBpbiBuby1tb2RpZnkgbW9kZS4KCS0geGZzX2RiIG5vdyBza2lwcyBmcmVlbGlzdCBzY2FucyBvZiBjb3JydXB0IGFnZnMuCgktIFJlbW92ZSB1bmNvbmRpdGlvbmFsIEFTU0VSVCgwKSBpbiB4ZnNfcmVwYWlyLgoJLSBSZWR1Y2UgYmJfbnVtcmVjcyBpbiBibm8vY250IGJ0cmVlcyB3aGVuIGxvZyBjb25zdW1lcyBhbGwgYWdmIHNwYWNlLgoJLSBBZGQgZGVwcmFjdGlvbiBtZXNzYWdlIGZvciB4ZnNfY2hlY2suCgktIHhmc19xdW90YSBhbGxvdyB1c2VyIG9yIGdyb3VwIG5hbWVzIGJlZ2lubmluZyB3aXRoIGRpZ2l0cyByZXBvcnRlZAoJICBieSBKYW1lcyBDYXJ0ZXIuCgktIEZpeCBtYW5wYWdlcyBhbmQgdXNhZ2UoKSBzcGVsbGluZywgZXJyb3JzIGFuZCBvbWlzc2lvbnMuCgktIFZhbGlkYXRlIHRoZSBleHRlbnQgY291bnQgaXMgYXQgbGVhc3Qgd2l0aGluIHRoZSBwb3NpdGl2ZQoJICByYW5nZSBvZiBhIHNpZ25lZCAzMiBiaXQgaW50ZWdlciBiZWZvcmUgdXNpbmcgaXQuCgp4ZnNwcm9ncy0zLjEuMTAgKDEzIERlY2VtYmVyIDIwMTIpCgktIFVwZGF0ZSByZWxlYXNlIHNjcmlwdCB0byBtYWtlIGEgc291cmNlIHRhcmJhbGwuCgp4ZnNwcm9ncy0zLjEuOSAoMzEgT2N0b2JlciAyMDEyKQoJLSBQcmludCBuaWNlIGRldGFpbHMgaWYgYWdzaXplIGlzIG91dCBvZiBib3VuZHMgaW4gbWtmcy54ZnMuCgktIFZhcmlvdXMgZml4ZXMgZm9yIGZyYWdtZW50ZWQgbXVsdGktYmxvY2sgZGlyMiBoYW5kbGluZyBpbgoJICB4ZnNfcmVwYWlyLgoJLSBGaXggZXh0ZW50IHJlY29yZCBwcmludGluZyBpbiB4ZnNfZGIgb24gYmlnIGVuZGlhbiBhcmNoZXMuCgktIFVzZSB0aGUgY29ycmVjdCBtYWNyb3Mgd2hlbiBkdW1waW5nIGJsb2NrIG1hcHMgaW4gZXh0ZW50CgkgIGZvcm0gaW4geGZzX2RiLCB0aGFua3MgdG8gUGV0ZXIgV2F0a2lucy4KCS0gQWRkIHN5bmMgZmlsZSByYW5nZSBzdXBwb3J0IHRvIHhmc19pby4KCS0gSW1wbGVtZW50IHByZWFkdi9wd3JpdGV2IGluIHhmc19pby4KCS0gTGluayBhZ2FpbnN0IGxpYnJlYWRsaW5lIGZvciBsaWJ4Y21kLCB0aGFua3MgdG8gTWlrZSBGcnlzaW5nZXIuCgktIENsZWFuIHVwIG1rZnMueGZzIG91dHB1dCBvbiBpbnZhbGlkIGlub2RlIHNpemUuCgktIFZhcmlvdXMgYnVpbGQgZml4ZXMsIHRoYW5rcyB0byBNaWtlIEZyeXNpbmdlciBhbmQgSmFuIEVuZ2VsaGFyZHQuCgp4ZnNwcm9ncy0zLjEuOCAoMjAgTWFyY2ggMjAxMikKCS0gRml4IHhmc19yZXBhaXIgc2VnZmF1bHQgb24gYSBjb3JydXB0ZWQgZmlsZXN5c3RlbSBieSB2YWxpZGF0aW5nIHRoZQoJICBhY2wgY291bnQgYmVmb3JlIHJlYWRpbmcgaXQuCgktIEF2b2lkIHhmc19yZXBhaXIgZGVhZGxvY2tzIG9uIHByZWZldGNoZWQgYnVmZmVycy4KCS0gRml4IHZhcmlvdXMgaW5jb3JyZWN0IHByaW50ZiBmb3JtYXRzLCB0aGFua3MgdG8gSmFrdWIgQm9ndXN6IGZvcgoJICByZXBvcnRpbmcuCgktIFBvbGlzaCB0cmFuc2xhdGlvbiB1cGRhdGUsIHRoYW5rcyB0byBKYWt1YiBCb2d1c3ouCgktIFJlZnVzZSBta2ZzLnhmcyBvbiBtaXNhbGlnbmVkIGRldmljZXMgd2hlbiB1c2luZyA0ayBzZWN0b3JzLCB1bmxlc3MKCSAgdGhlIC1mIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGFuZCB0aGVuIGZvcmNlIDUxMmIgc2VjdG9yIHNpemUsCgkgIHRoYW5rcyB0byBDYXJsb3MgTWFpb2xpbm8uCgktIEF2b2lkIGEgcG9zc2libGUgbG9vcCBvbiB0aGUgdW5saW5rZWQgaW5vZGUgbGlzdCBpbiBwaGFzZSAzIG9mCgkgIHhmc19yZXBhaXIsIHRoYW5rcyB0byBTdGVmYW4gUGZldHppbmcgZm9yIHJlcG9ydGluZy4KCS0gQWxsb2NhdGUgaW5vZGUgYW5kIGZyZWUgZXh0ZW50IHJlY29yZHMgaW5kaXZpZHVhbGx5IGluIHhmc19yZXBhaXIuCgktIEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIGJ0cmVlIG5vZGVzIGluIHhmc19yZXBhaXIgYnkgdXNpbmcgcmVjdXJzaXZlCgkgIGxvY2tpbmcsIHRoYW5rcyB0byBBcmthZGl1c3ogTWnFm2tpZXdpY3ogZm9yIHJlcG9ydGluZyBhbmQgdGVzdGluZy4KCS0gRml4IHBvc3NpYmxlIHhmc19yZXBhaXIgZGVhZGxvY2tzIGluIGlub2RlIHByZWZldGNoaW5nLCB0aGFua3MgdG8KCSAgQXJrYWRpdXN6IE1pxZtraWV3aWN6IGZvciByZXBvcnRpbmcgYW5kIHRlc3RpbmcuCgktIE1ha2UgeGZzX3JlcGFpciBoYW5kbGUgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbG9nIGluIGFnIDAsIHRoYW5rcyB0bwoJICBTaW5kcmUgU2tvZ2VuIGZvciByZXBvcnRpbmcuCgktIERlcHJlY2F0ZSB0aGUgLUYgZm9yZWlnbiBmbGFnIHRvIHhmc19pby4KCS0gQWRkIGRlYmlhbiBsaW51eC1saWJjLWRldiBidWlsZCBkZXBlbmRhbmN5LgoJLSBBZGQgYW4gZXh0ZW5kZWQgZmllbWFwIGNvbmZpZ3VyZSBjaGVjay4KCS0gVmFyaW91cyBjbGVhbnVwcyBpbiB4ZnNfcmVwYWlyLgoJLSBVcGRhdGUgeGZzX2NoZWNrIG1hbiBwYWdlIHRvIHJlY29tbWVuZCB4ZnNfcmVwYWlyIG92ZXIgeGZzX2NoZWNrLAoJICB0aGFua3MgdG8gQXJrYWRpdXN6IE1pxZtraWV3aWN6LgoJLSBVcGRhdGUgdGhlIG9uLWRpc2sgZXh0ZW50IGNvdW50IGFzIHBhcnQgb2YgaW5vZGUgcmVwYWlyIHdoZW4gbW92aW5nCgkgIGlub2RlcyB0byBsb3N0K2ZvdW5kIHRvIGF2b2lkIHRvIGF2b2lkIHRyaXBwaW5nIG92ZXIgYSBjaGVjayBpbgoJICB4ZnNfaWZvcm1hdCwgdGhhbmtzIHRvIEFya2FkaXVzeiBNacWba2lld2ljeiBmb3IgcmVwb3J0aW5nIGFuZAoJICB0ZXN0aW5nLgoJLSBDaGVjayBmb3Igc2l6ZSBwYXJzaW5nIGVycm9ycyBpbiB4ZnNfcXVvdGEsIHRoYW5rcyB0byBKYW1lcyBMYXdyaWUKCSAgZm9yIHJlcG9ydGluZy4KCS0gRml4IGZpZW1hcCBsb29wIGNvbnRpbnVhdGlvbiBpbiB4ZnNfaW8uCgktIE1ha2UgbWtmcy54ZnMgcHJvcGVybHkgaGFuZGxlIHBoeXNpY2FsIHNlY3RvciBzaXplLgoJLSBGaXggL3Byb2MvbW91bnRzIHBhcnNpbmcgaW4geGZzX2Zzci4KCS0gRml4IHhmc19yZXBhaXIgd2hlbiBhZ19zdHJpZGUgb3B0aW9ucyB3aXRoIGF0dHJpYnV0ZXMgYW5kIGRpcnYxIGNvZGUsCgkgIHRoYW5rcyB0byBUb20gQ3JhbmUgZm9yIHJlcG9ydGluZyBhbmQgdGVzdGluZy4KCS0gRml4IG1lc3NhZ2UgZm9ybWF0cyBpbiBwcm9jZXNzX2Rpbm9kZV9pbnQuCgktIEZpeCB4ZnNfcmVwYWlyIGhhbmRsaW5nIG9mIGxpbmsgY291bnRzIHdoZW4gdGhlIG9uLWRpc2sgY291bnQKCSAgb3ZlcmZsb3dzIDggYml0cy4KCS0gRml4IG1lc3NhZ2VzIGZyb20gc2V0X25saW5rcyBpbiB4ZnNfcmVwYWlyLgoKeGZzcHJvZ3MtMy4xLjcgKDE3IE5vdmVtYmVyIDIwMTEpCgktIFB1bGwgaW4gZml4IGZvciBkZWJpYW4vY29udHJvbAoJLSBQb2xpc2ggdHJhbnNsYXRpb24gdXBkYXRlLCB0aGFua3MgdG8gSmFrdWIgQm9ndXN6CgktIEZpeCB4ZnNfcmVwYWlyIGxpbmsgY291bnQgb24gbG9zdCtmb3VuZCwgdGhhbmtzIHRvIENhcmxvcyBNYWlvbGlubwoJLSBGaXggdmFyaW91cyBpbmNvcnJlY3QgcHJpbnRmIGZvcm1hdHMKCnhmc3Byb2dzLTMuMS42ICgxNCBPY3RvYmVyIDIwMTEpCgktIFJlLXN5bmNoIG9mIHRoZSBoZWFkZXIgYW5kIGxpYnhmcyBmaWxlcyB3aXRoIHRoZSBrZXJuZWwKCSAgY29kZSBhcyBvZiBMaW51eCAyLjYuMzcsIGluY2x1ZGluZyByZXZpdmluZyB4ZnNfcmVwYWlyCgkgIHJhZGl4IHRyZWUgY29kZS4KCS0gRml4IGEgeGZzX3JlcGFpciBwaGFzZSA0IGhhbmcsIHRoYW5rcyB0byBBamVldCBZYWRhdi4KCS0gU3ViY29tbWFuZCBuYW1lcyB3aXRoaW4gdmFyaW91cyBwcm9ncmFtcyBhcmUgbm8gbG9uZ2VyCgkgIHRyYW5zbGF0ZWQvbG9jYWxpemVkLCB0aGFua3MgdG8gQXJrYWRpdXN6IE1pP2tpZXdpY3ouCgktIEJ1aWxkIHN5c3RlbSBmaXhlcywgdGhhbmtzIHRvIFRlZCBUcydvLgoJLSBVcGRhdGVzIHRvIHRlaCB4ZnNfaW5mbyg4KS94ZnNfZ3Jvd2ZzKDgpIG1hbiBwYWdlLCB0aGFua3MKCSAgdG8gUm9tYW4gT3ZjaGlubmlrb3YuCgktIHhmc19xdW90YSAiZGYiIG5vIGxvbmdlciByZXBvcnRzIHZhbHVlcyB0d2ljZSB3aGF0IHRoZXkKCSAgc2hvdWxkIGhhdmUgYmVlbiBmb3IgcHJvamVjdCBxdW90YXMuCgktIG1rZnMueGZzIG5vdyByZXF1aXJlcyB0aGF0IHN1Yi1vcHRpb25zIGFyZSBub24tZW1wdHkKCSAgc3RyaW5nczsgdGhhbmtzIHRvIENocmlzIFBlYXJzb24gZm9yIHJlcG9ydGluZy4KCS0gQmV0dGVyIGhhbmRsaW5nIG9mIHNob3J0IHJlYWRzIGluIGxpYnhmcy4KCS0geGZzX3F1b3RhIG5vdyBwcmludHMgIk4vQSIgcmF0aGVyIHRoYW4gYSBsYXJnZSBudW1iZXIgZm9yCgkgIHRoZSBxdW90YSBmaWxlIGlub2RlIG51bWJlciBmb3IgZGlzYWJsZWQgcXVvdGEgdHlwZXMuCgktIEJvZ3VzICh1bnJlbGF0ZWQpIG1vdW50IHBvaW50IGVudHJpZXMgbm8gbG9uZ2VyIGNhdXNlCgkgIHhmc19ncm93ZnMsIHhmc19xdW90YSwgYW5kIHhmc19pbyB0byBxdWl0IGVhcmx5LgoJLSB4ZnNfcmVwYWlyIG5vIGxvbmdlciBmYWlscyB3aGVuIHRoZSBzZWN0b3Igc2l6ZSBvZiBhbgoJICB1bmRlcmx5aW5nIGRldmljZSBpcyBsYXJnZXIgdGhhbiB0aGUgc2VjdG9yIHNpemUgaW4gYQoJICBob3N0ZWQgZmlsZXN5c3RlbSBpbWFnZS4KCS0gVmFyaW91cyBvdGhlciBpbnRlcm5hbCBpbXByb3ZlbWVudHMsIGluY2x1ZGluZyByZWZhY3RvcmluZwoJICBhbmQgZWxpbWluYXRpbmcgbW9yZSBidWlsZCB3YXJuaW5ncy4KCnhmc3Byb2dzLTMuMS41ICgzMCBNYXJjaCAyMDExKQoJLSBQb2xpc2ggdHJhbnNsYXRpb24gdXBkYXRlLCB0aGFua3MgdG8gSmFrdWIgQm9ndXN6CgktIHhmc19yZXBhaXIgbm93IHdhcm5zIGlmIHJ1bm5pbmcgaW4gbG93IG1lbW9yeSBtb2RlCgktIFBoYXNlIDIgb2YgeGZzX3JlcGFpciBpcyBub3cgbXVsdGl0aHJlYWRlZAoJLSB4ZnNfcXVvdGEgbm8gbG9uZ2VyIGF0dGVtcHRzIHRvIGdldCBxdW90YSBpbmZvcm1hdGlvbiBpZgoJICBub3QgZW5hYmxlZAoJLSBJbm9kZSBmbGFncyBhcmUgbm93IHByb3Blcmx5IHZhbGlkYXRlZCBieSB4ZnNfcmVwYWlyCgktIE1ldGFkdW1wIG5vdyBvYmZ1c2NhdGVzIGFsbCBmaWxlIG5hbWVzIHJlbGlhYmx5CgktIHhmc19pbyBub3cgc3VwcG9ydHMgdGhlICJmaWVtYXAiIGNvbW1hbmQsIGEgbW9yZSBnZW5lcmljCgkgIGZvcm0gb2YgdGhlICJibWFwIiBjb21tYW5kCgktIHhmc19pbyBub3cgc3VwcG9ydHMgdGhlICJmcHVuY2giIGNvbW1hbmQsIGFzIHdlbGwgYXMgYQoJICAiLXAiIGZsYWcgdG8gdGhlICJmYWxsb2NhdGUgY29tbWFuZC4gIEJvdGggaW1wbGVtZW50IGhvbGUKCSAgcHVuY2hpbmcuICBUaGFua3MgdG8gSm9zZWYgQmFjaWsKCS0gQSBudW1iZXIgb2Ygb3RoZXIgYnVnIGZpeGVzIHRoYW5rcyB0byBBamVldCBZYWRhdgoKeGZzcHJvZ3MtMy4xLjQgKDkgTm92ZW1iZXIgMjAxMCkKCS0gQWRkIHByb2ppZDMyYml0IGhhbmRsaW5nIHRvIHVzZXJzcGFjZSwgcmVzb2x2aW5nIHR5cGUKCSAgc2l6aW5nIGlzc3VlcyB3aGVuIGRlYWxpbmcgd2l0aCAzMiBiaXQgcHJvamVjdCBpZHMuCgktIE1ha2UgeGZzX2ZzciB1c2UgL3Byb2MvbW91bnRzIGlmIGF2YWlsYWJsZS4KCS0gQW5ub3RhdGUgdGhhdCBEZWJpYW4gcGFja2FnZXMgYXJlIGdyb3VwIG1haW50YWluZWQuCgktIEZpeCBhIERlYmlhbiBwYWNrYWdpbmcgaXNzdWUgY2F1c2luZyB1cGdyYWRlIHBhaW4uCgp4ZnNwcm9ncy0zLjEuMyAoMjYgQXVndXN0IDIwMTApCgktIEFkZCB4ZnNfaW8gc3VwcG9ydCBmb3IgWEZTX0lPQ19aRVJPX1JBTkdFCgktIEZpeCBkZXBlbmQgdGFyZ2V0cy4KCS0gQWxsb3cgeGZzX2lvIHJlc3ZzcCBjb21tYW5kIGZvciBmb3JlaWduIGZpbGVzeXN0ZW1zLgoJLSBGaXggY29uZmlndXJlIC0tcHJlZml4LgoJLSBNYWtlIHhmc19kYiBjaGVjayBmb3IgdmFsaWQgaW5vZGUgZGF0YSBwb2ludGVyIGJlZm9yZSBkZXJlZmVyZW5jaW5nLgoJLSBWYWxpZGF0ZSBidHJlZSBibG9jayBtYWdpYyBpbiB0aGUgeGZzX2RiIGZyZWVzcCBjb21tYW5kLAoJICB0aGFua3MgdG8gUGV0ZXIgV2F0a2lucy4KCS0gVW5icmVhayBtYWtlIHVwZGF0ZS1wbywgcGVybWlzc2lvbnMgcHJvYmxlbSwKCSAgdGhhbmtzIHRvIEFya2FkaXVzeiBNacWba2lld2ljei4KCS0gRml4IGxpbmtpbmcgb2YgbGlieGZzIGFuZCBsaWJydCBkZXRlY3Rpb24gKG5lZWRzIHB0aHJlYWQpLAoJICB0aGFua3MgdG8gQXJrYWRpdXN6IE1pxZtraWV3aWN6LgoJLSBBZGQgYSBwbGF0Zm9ybV9kaXNjYXJkX2Jsb2NrcyBzdHViIGZvciBHTlUva0ZyZWVic2QuCgp4ZnNwcm9ncy0zLjEuMiAoNiBNYXkgMjAxMCkKCS0gRml4IG1pc3NpbmcgdGhyZWFkIHN5bmNocm9uaXphdGlvbiBpbiB4ZnNfcmVwYWlyIGR1cGxpY2F0ZQoJICBleHRlbnQgdHJhY2tpbmcuCgktIEZpeCBoYW5kbGluZyBvZiBkeW5hbWljIGF0dHJpYnV0ZSBmb3JrIHJvb3RzIGluIHhmc19mc3IuCgktIEZpeCBzYl9iYWRfZmVhdHVyZXMyIG1hbmlwdWxhdGlvbnMgd2hlbiB0d2Vha2luZyB0aGUgbGF6eSBjb3VudAoJICBmbGFnLgoJLSBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgb24gRGViaWFuIEdOVS9rRnJlZUJTRCwgdGhhbmtzCgkgIHRvIFBldHIgU2FsaW5nZXIuCgktIEltcHJvdmVtZW50cyB0byB0aGUgbWtmcy54ZnMgbWFucGFnZSwgdGhhbmtzIHRvIFdlbmdhbmcgV2FuZy4KCS0gVmFyaW91cyBzbWFsbCBibGtpZCBpbnRlZ3JhdGlvbiBmaXhlcyBpbiBta2ZzLnhmcy4KCS0gRml4IGJ1aWxkIGFnYWluc3Qgc3RyaWN0ZXIgc3lzdGVtIGhlYWRlcnMuCgp4ZnNwcm9ncy0zLjEuMSAoMjkgSmFudWFyeSAyMDEwKQoJLSBGaXggdmFyaW91cyBibGtpZCB0b3BvbG9neSBzdXBwb3J0IHByb2JsZW1zIGluIG1rZnMueGZzLgoJLSBGaXggdmFyaW91cyBidWlsZCB3YXJuaW5ncy4KCS0gQWRkIGF1dG9tYXRpYyBidWlsZCBkZXBlbmRlbmN5IGNhbGN1bGF0aW9ucy4KCS0gQ2xlYW5lciBidWlsZCBzeXN0ZW0gb3V0cHV0LgoJLSBBZGQgbWlzc2luZyBhY2xvY2FsIG00IGZpbGUgdG8gdGhlIHBhY2thZ2UgZ2VuZXJhdGlvbi4KCS0gQXJyYW5nZSBmb3IgcmVsZWFzZSB0YWdzIHRvIGJlIGRpZ2l0YWxseSBzaWduZWQuCgp4ZnNwcm9ncy0zLjEuMCAoMTMgSmFudWFyeSAyMDEwKQoJLSBSZWR1Y2UgbWVtb3J5IHVzYWdlIGluIHhmc19yZXBhaXIgYnkgdXNpbmcgYmV0dGVyIGRhdGEgc3RydWN0dXJlcy4KCS0gQWRkIGFkZGl0aW9uYWwgY2hlY2tzIGluIHhmc19yZXBhaXIgdG8gZGV0ZWN0IGZyZWVzcGFjZSBidHJlZQoJICBjb3JydXB0aW9uIGluc3RlYWQgb2Ygb25seSByZWJ1aWxkaW5nIHRoZSBidHJlZXMuICBVc2VmdWwgZm9yIHRoZQoJICBuby1tb2RpZnkgbW9kZS4KCS0gRml4IGxpYmhhbmRsZSB0byB1c2UgdGhlIHJpZ2h0IHBhdGggdG8gaXNzdWUgYnktaGFuZGxlIGlvY3RscyBmb3IKCSAgc3ltYm9saWMgbGlua3MgYW5kIHNwZWNpYWwgZmlsZXMuCgktIFVzZSBsYXp5IHN1cGVyYmxvY2sgY291bnRlcnMgYnkgZGVmYXVsdC4gIEF0IGxlYXN0IGtlcm5lbCAyLjYuMjIgaXMKCSAgbmVlZGVkIGZvciB0aGlzIGZlYXR1cmUuCgktIFVzZSBwaHlzaWNhbCBkZXZpY2Ugc2VjdG9yIHNpemUgaWYgYXZhaWxhYmxlIGluIG1rZnMueGZzLAoJICBzbyA0SyBzZWN0b3IgZGV2aWNlcyBhcmUgaGFuZGVkIG1vcmUgZ3JhY2VmdWxseS4KCS0gQWRkIGEgR2VybWFuIHRyYW5zbGF0aW9uLCB0aGFua3MgdG8gQ2hyaXMgTGVpY2suCgktIEVuYWJsZSB0aGUgbWFkdmlzZSBhbmQgbWluY29yIGNvbW1hbmRzIGluIHhmc19pby4KCS0gRml4IHVuc2FmZSB0ZW1wb3JhcnkgZmlsZSBjcmVhdGlvbiBpbiB4ZnNfZnNyLgoJLSBBZGQgc3VwcG9ydCBmb3IgZGlzY2FyZGluZyB1bnVzZWQgc3BhY2Ugb24gU1NEcyBvciB0aGluIHByb3Zpc2lvbmVkCgkgIGFycmF5cyBpbiBta2ZzLnhmcy4KCS0gQWxsb3cgbGlua2luZyBhZ2FpbnN0IGxpYmJsa2lkIGZvciB0b3BvbG9neSBpbmZvcm1hdGlvbi4KCS0gQWRkIHN5bWJvbCB2ZXJzaW9uaW5nIGZvciBsaWJoYW5kbGUuCgktIFJlbW92ZSB0aGUgaW5jbHVkZWQgUlBNIGFuZCBiaW5hcnkgdGFyYmFsbCBidWlsdCBpbmZyYXN0cnVjdHVyZS4KCS0gVmFyaW91cyBidWlsZCBzeXN0ZW0gaW1wcm92ZW1lbnRzLgoJLSBTbWFsbCBmaXhlcyB0byB4ZnNfZGIgYW5kIHhmc19pby4KCnhmc3Byb2dzLTMuMC40ICgxNyBTZXB0ZW1iZXIgMjAwOSkKCS0gRml4IGEgbWVtb3J5IGxlYWsgaW4geGZzcHJvZ3MuCgktIEluY3JlYXNlIGhhc2ggY2hhaW4gbGVuZ3RoIGluIHhmc3Byb2dzIHdoZW4gcnVubmluZyBvdXQgb2YgbWVtb3J5LgoJLSBGaXggZG1zZXR1cCBpbnZvY2F0aW9uIGluIGxpYmRpc2sgdG8gYXZvaWQgd2FybmluZ3MgZHVyaW5nIG1rZnMKCSAgb24gbXVsdGlwYXRoIGRldmljZXMuCgktIEZpeCB0aGUgLVYgb3B0aW9uIHRvIHZhcmlvdXMgaW5zdGFsbGVkIHRvb2xzLgoJLSBTbWFsbCBpbnRlcm5hbCBmaXhlcyB0byBwbGVhc2UgdGhlIGNsYW5nIHNlbWFudGljYWwgYW5hbHlzaXMgdG9vbC4KCS0gRGViaWFuIHBhY2thZ2luZyB1cGRhdGVzLgoJLSBSZXdvcmsgTWFrZXBrZ3MgYW5kIE1ha2VmaWxlcyB0byBpbXByb3ZlIGRlYiBnZW5lcmF0aW9uLgoKeGZzcHJvZ3MtMy4wLjMgKDMwIEF1Z3VzdCAyMDA5KQoJLSBGaXggdW5hbGlnbmVkIGFjY2Vzc2VzIGluIGxpYnhmcy4KCS0gVmFyaW91cyBzbWFsbCBmaXhlcyB0byB4ZnNfZGIsIHhmc19yZXBhaXIgYW5kIHhmc19pby4KCS0gQWRkIGZhbGxvY2F0ZSBjb21tYW5kIHRvIHhmc19pby4KCS0gRW5hYmxlIHJlYWRsaW5lIHN1cHBvcnQgaW4geGZzX2lvIGFuZCB4ZnNfcXVvdGEuCgktIEFsbG93IGxvZyBzaXplcyB1cCB0byAyR2lCIChtaW51cyAxIGJ5dGUpIGluIHhmc19ta2ZzLgoJLSBPcGVuIHRoZSBibG9jayBkZXZpY2UgaW4geGZzX3JlcGFpciBleGNsdXNpdmVseSwgdGhhbmtzIHRvCgkgIE5hdGhhbmllbCBXLiBUdXJuZXIuCgp4ZnNwcm9ncy0zLjAuMiAoNiBNYXkgMjAwOSkKCS0gVXBkYXRlcyB0byBEZWJpYW4gYnVpbGQgcHJvY2VzcyBhZnRlciByZWNlbnQgYXV0b2NvbmYgdHdlYWtzLgoJLSBGaXggYSBjb3VwbGUgb2YgbWlub3IgbWFuIHBhZ2Ugc3ludGF4IGlzc3Vlcy4KCnhmc3Byb2dzLTMuMC4xICg0IE1heSAyMDA5KQoJLSBVcGRhdGUgdGhlIE1ha2Vwa2dzIHNjcmlwdCB0byBnZW5lcmF0ZSBwcm9wZXIgc291cmNlIHRhcmJhbGxzLgoJLSBOZXcgcHJvamVjdCg1KSBhbmQgcHJvamlkKDUpIG1hbiBwYWdlcy4KCS0gRml4IGV4dGVudCBhcnJheSByZWFsbG9jYXRpb24gaW4gdGhlIHhmc19pbyBibWFwIGNvbW1hbmQsCgkgIHRoYW5rcyB0byBUb21hc3ogTWFqa293c2tpLgoJLSBTbWFsbCBzcGVjZmlsZSBpbXByb3ZlbWVudHMsIHRoYW5rcyB0byBKYW4gRW5nZWxoYXJkdC4KCS0gQWxsb3cgeGZzX2ZyZWV6ZSB0byBmcmVlemUgbm9uLVhGUyBmaWxlc3lzdGVtcy4KCS0gRml4IHRoZSB4ZnNfZGIgYm1idGEgY29tbWFuZC4KCS0gRml4IHBhcmFsbGVsIGJ1aWxkcywgdGhhbmtzIHRvIE1pa2UgRnJ5c2luZ2VyLgoJLSBWYXJpb3VzIGF1dG9jb25mL2xpYnRvb2wgZml4ZXMsIHRoYW5rcyB0byBBbmRyZWFzIEdydWVuYmFjaGVyLgoKeGZzcHJvZ3MtMy4wLjAgKDQgRmVicnVhcnkgMjAwOSkKCS0gVmFyaW91cyBzbWFsbGVyIHhmc19yZXBhaXIgaW1wcm92ZW1lbnRzLgoJLSBWYXJpb3VzIGdldHRleHQgaW1wcm92ZW1lbnRzLCB0aGFua3MgdG8gSmFrdWIgQm9ndXN6LgoJLSBQb2xpc2ggdHJhbnNsYXRpb24gdXBkYXRlLCB0aGFua3MgdG8gSmFrdWIgQm9ndXN6LgoJLSBWYXJpb3VzIHhmc19xdW90YSBmaXhlcywgdGhhbmtzIHRvIEFya2FkaXVzeiBNaXNraWV3aWN6LgoJLSBTdXBwb3J0IHBhcmFsbGVsIGJ1aWxkcy4KCS0gRGV0ZWN0aW9uIG9mIGJ0cmZzLCBnZnMgYW5kIGdmczIgaW4gbGliZGlzay4KCS0gQWRkaXRpb24gb2YgdGhlIHhmc19mc3IgYW5kIHhmc19lc3RpbWF0ZSB0b29scyBwcmV2aW91cyBmb3VuZAoJICBpbiB0aGUgeGZzZHVtcCBwYWNrYWdlLgoJLSBSZXN5bmMgbGlieGZzIHRvIGxhdGVzdCBrZXJuZWwgaW1wbGVtZW5hdGlvbi4KCS0gVXBkYXRlIGFsbCBvZiB4ZnNwcm9ncyB0byBsYXRlc3Qga2VybmVsIGludGVyZmFjZXMuCgktIEFkZCBzcGFyc2Ugc3VwcG9ydCB0byB4ZnNwcm9ncyBidWlsZC4KCS0gQ2xlYW51cCBkZXZlbCBwYWNrYWdlIGZvciB4ZnNjdGwsIGxpYmhhbmRsZSBhbmQgbGliZGlzayBvbmx5CgkgIChyZW1vdmUgbGlieGZzIGludGVyZmFjZXMpLgoKeGZzcHJvZ3MtMi4xMC4xICg1IFNlcHRlbWJlciAyMDA4KQoJLSBJbXByb3ZlIHhmc19yZXBhaXIgLVAgb3B0aW9uIHRvIGRpc2FibGUgeGZzX2J1Zl90IGxvY2tpbmcuCgktIEZpeCBpbm9kZSBjbHVzdGVyIEkvTyBzaXplIGZvciA+IDhLQiBibG9jayBzaXplIGZpbGVzeXN0ZW1zLgoJLSBGaXggdXAgQVNDSUkgQ0kgb3V0cHV0IGZvciBta2ZzLnhmcyBhbmQgeGZzX2dyb3dmcy4KCS0gRml4IGJ1ZmZlciBoYW5kbGluZyBpbiBlcnJvciBjYXNlcyBpbiB4ZnNfZGIgKGluY2x1ZGVzIHhmc19jaGVjawoJICBhbmQgeGZzX21ldGFkdW1wKS4KCS0gQWRkIHBhY2tlZCBvbi1kaXNrIHNob3J0Zm9ybSBkaXJlY3RvcnkgZm9yIEFSTSdzIG9sZCBBQkksIHRoYW5rcyB0bwoJICBFcmljIFNhbmRlZW4uCgktIEluY3JlYXNlIGRlZmF1bHQgdmFsaWQgYmxvY2sgY291bnQgZm9yIGEgZGlyZWN0b3J5IGV4dGVudCBpbgoJICB4ZnNfbWV0YWR1bXAgKGZyb20gMjAgdG8gMTAwMCkuCgktIEZpeCB1cCBta2ZzLnhmcyAtTiBvcHRpb24gd2l0aCAiLWQgZmlsZSIgc28gaXQgZG9lc24ndCByZXNpemUgdGhlCgkgIHRhcmdldCBmaWxlICh0aGFua3MgdG8gTWljaGFsIE1hcmVrKS4KCS0gSW1wcm92ZSBsaWJ4ZnMgY2FjaGUgaGFuZGxpbmcgd2l0aCAodW4pcmVmZXJlbmNlZCBibG9ja3MuCgktIENoZWNrIHRoYXQgZGlyZWN0b3J5IHNpemUgaXMgbm90IHRvbyBiaWcgaW4geGZzX3JlcGFpci4KCS0gSW1wcm92ZSB4ZnNfcmVwYWlyIHRvIHJlc3RvcmUgYmFkIG9yIG1pc3NpbmcgIi4uIiBlbnRyaWVzLgoKeGZzcHJvZ3MtMi4xMC4wICgyNiBNYXkgMjAwOCkKCS0gQWRkIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmUgc3VwcG9ydCB0byB4ZnNwcm9ncy4KCnhmc3Byb2dzLTIuOS44ICgyMSBBcHJpbCAyMDA4KQoJLSBBZGQgc3VwcG9ydCBmb3Igc2JfZmVhdHVyZXMyIGluIHdyb25nIGxvY2F0aW9uIGluIG1rZnMueGZzLAoJICB4ZnNfcmVwYWlyIGFuZCB4ZnNfZGIuCgktIEltcHJvdmUgbWVtb3J5IGxpbWl0cyBmb3IgbGlieGZzIGNhY2hlIGluIHhmc19yZXBhaXIgYW5kIGFkZGVkCgkgIGEgLW0gb3B0aW9uIHRvIG1hbnVhbGx5IGxpbWl0IHVzYWdlIG9mIHhmc19yZXBhaXIuCgktIEFkZCAtYyBvcHRpb24gdG8geGZzX2FkbWluIHRvIHR1cm4gbGF6eS1jb3VudGVycyBvbi9vZmYuCgktIEFkZGVkIHN1cHBvcnQgZm9yIG1kcCBpbiBsaWJkaXNrL21rZnMueGZzLCB0aGFua3MgdG8KCSAgSHViZXJ0IFZlcnN0cmFldGUuCgktIEFkZCAtcCBvcHRpb24gdG8gZnNjay54ZnMsIHRoYW5rcyB0byBNYXJrdXMgUm90aGUuCgktIENsZWFudXAgc3lzIHYzIGJ6ZXJvL2Jjb3B5IGNhbGxzLCB0aGFua3MgdG8gTmlnZWwgS3VrYXJkLgoKeGZzcHJvZ3MtMi45LjcgKDEgTWFyIDIwMDgpCgktIExhenkgc3VwZXJibG9jayBjb3VudGVycyBub3QgeWV0IHRoZSBkZWZhdWx0IHdpdGggbWtmcy54ZnMuCgktIEFkZCAteSAoYW5vdGhlciBuby1vcCkgZnNjayBvcHRpb24uCgktIFJlc29sdmUgbWtmcyBhbGxvY2F0aW9uIGdyb3VwIGNvdW50IGlzc3VlIHdpdGggc21hbGwgZGV2aWNlcy4KCS0gRml4IG1rZnMgdG8gc2VjdG9yIGFsaWduIHRoZSBkZXZpY2Ugc2l6ZSBzbyB6ZXJvaW5nIHRoZSBlbmQKCSAgb2YgdGhlIGRldmljZSBkb2Vzbid0IGZhaWwuCgp4ZnNwcm9ncy0yLjkuNiAoNyBGZWIgMjAwOCkKCS0gRml4IHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSBjaGFuZ2luZyB0aGUgbWtmcy54ZnMgZGVmYXVsdHMuCgktIE1hZGUgbGF6eSBzdXBlcmJsb2NrIGNvdW50ZXJzIHRoZSBkZWZhdWx0IHdpdGggbWtmcy54ZnMuCgp4ZnNwcm9ncy0yLjkuNSAoMjEgSmFuIDIwMDgpCgktIFVwZGF0ZWQgbWtmcy54ZnMgZGVmYXVsdHMuCgktIE1ha2UgeGZzX2luZm8gaGFuZGxlIG1vdW50IHBvaW50cyB3aXRoIHNwYWNlcy4KCS0gSW1wcm92ZSB4ZnNfcmVwYWlyJ3MgaGFuZGxpbmcgb2YgaW52YWxpZCBmcmVlc3BhY2UgYnRyZWUgZXh0ZW50cy4KCS0gUmVidWlsZCBkaXJlY3RvcmllcyBpbiB4ZnNfcmVwYWlyIGlmICIuIiBhbmQgIi4uIiBhcmVuJ3QgdGhlIGZpcnN0CgkgIHR3byBkaXJlY3RvcnkgZW50cmllcy4gVGhpcyBndWFyYW50ZWVzIGEgZGlyZWN0b3J5IGlzIGRlbGV0YWJsZS4KCS0gQ2hhbmdlZCBta2ZzLnhmcyAtZiB0byB3aXBlIGFsbCBvbGQgQUcgaGVhZGVycywgbm90IGp1c3QgdGhlIG9uZXMKCSAgdXAgdG8gdGhlIGVuZCBvZiB0aGUgbmV3IGZpbGVzeXN0ZW0gc2l6ZS4KCS0gUHVyZ2VkIHRoZSBlbmQgb2YgZGV2aWNlIHdoYWNrIGJ1ZmZlciBpbiBta2ZzLnhmcyB0byBwcmV2ZW50IGEKCSAgd2FybmluZyBpbiBjZXJ0YWluIGRldmljZSBzaXplcy4KCS0gTWFuIHBhZ2UgZml4ZXMuIFRoYW5rcyB0byBVdGFrbyBLdXNha2EgPHUta3VzYWthQHdtLmpwLm5lYy5jb20+CgkgIGZvciB0aGlzLgoJLSBEaXNhYmxlIHRoZSBhYmlsaXR5IHRvIHR1cm4gb2ZmIHVud3JpdHRlbiBleHRlbnRzIGluIG1rZnMuCgp4ZnNwcm9ncy0yLjkuNCAoNyBTZXAgMjAwNykKCS0gRml4ZWQgeGZzX3JlcGFpciBzZWdmYXVsdGluZyB3aXRoIGRpcmVjdG9yeSBibG9jayBzaXplIGRpZmZlcmVudAoJICB0byB0aGUgZmlsZXN5c3RlbSBibG9ja3NpemUuCgktIEZpeGVkIHhmc19xdW90YSBkaXNhYmxlLCBlbmFibGUsIG9mZiBhbmQgcmVtb3ZlIGNvbW1hbmRzLgoJICBUaGFua3MgdG8gVXRha28gS3VzYWthIDx1dGFrb0B0bmVzLm5lYy5jby5qcD4gZm9yIHRoaXMuCgktIEltcHJvdmVkIHRoZSByb2J1c3RuZXNzIG9mIHhmc19tZXRhZHVtcC4KCS0gRml4IGxpbmsgaXNzdWVzIHdpdGggcHRocmVhZCBsaWJyYXJ5LgoKeGZzcHJvZ3MtMi45LjMgKDIzIEp1bHkgMjAwNykKCS0gTWFrZSB4ZnNfcmVwYWlyIHN1cHBvcnQgPiA1MTIgYnl0ZSBzZWN0b3Igc2l6ZXMuCgktIEZpeGVkIGluY2x1ZGUgTWFrZWZpbGUgZm9yIG5ldyBjb21tb24gaGVhZGVyICh4ZnNfbWV0YWR1bXAuaCkuCgktIEZpeGVkIHhmc19xdW90YSBzdGF0ZSBjb21tYW5kIHNlZ2ZhdWx0aW5nIHdpdGggbm8gbW91bnRlZAoJICBYRlMgZmlsZXN5c3RlbXMuCgktIEZpeGVkIHhmc19xdW90YSBwcmludGluZyBvdXQgdW51c3VhbCBtZXNzYWdlIHdpdGggInBhdGggbiIgY29tbWFuZAoJICB3aXRoIG5vIG1vdW50ZWQgWEZTIGZpbGVzeXN0ZW1zLgoJLSBGaXhlZCAicXVvdGEgLW4iIGNvbW1hbmQgd2l0aCBwcm9qZWN0IElEcy4KCS0gSW1wcm92ZWQgImZyZWUiIG91dHB1dCB3aGVuIHByb2plY3QgcXVvdGFzIGFyZSBkZWZpbmVkLCBidXQKCSAgaGF2ZW4ndCBiZWVuIGVuYWJsZSBvbiB0aGUgZmlsZXN5c3RlbS4KCSAgVGhhbmtzIHRvIFV0YWtvIEt1c2FrYSA8dXRha29AdG5lcy5uZWMuY28uanA+IGZvciB0aGUgYWJvdmUgZm91cgoJICBmaXhlcy4KCnhmc3Byb2dzLTIuOS4yICgxOCBKdWx5IDIwMDcpCgktIE5leHQgbWFqb3Igcm91bmQgb2YgeGZzX3JlcGFpciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHM6CgkJLSBDYWNoZSBkaXNrIG5saW5rIHZhbHVlcyBpbiBQaGFzZSAzIGZvciBQaGFzZSA3LgoJCS0gRG8gbXVsdGl0aHJlYWRlZCBwcmVmZXRjaC9wcm9jZXNzaW5nIGJhc2VkIG9uIEFHIHN0cmlkZQoJCSAgb3B0aW9uIChpZS4gZm9yIGNvbmNhdHMpLgoJCS0gRG9uJ3QgdHJhc2ggbG9zdCtmb3VuZCBhdCB0aGUgc3RhcnQgb2YgUGhhc2UgNCwgZWxpbWluYXRlcwoJCSAgcmVwZWF0ZWQgIm1vdmluZyBkaXNjb25uZWN0ZWQgaW5vZGUgdG8gbG9zdCtmb3VuZCIgd2l0aAoJCSAgc3VjY2Vzc2l2ZSB4ZnNfcmVwYWlyIHJ1bnMuCgkJLSBEbyBtdWx0aS10aHJlYWRlZCBzZXF1ZW50aWFsIG1ldGFkYXRhIHByZWZldGNoLgoJCSAgTWV0aG9kIGJhc2VkIG9uIEFnYW1pIHBhdGNoZXMgcG9zdGVkIGZvciAyLjcuMTggeGZzcHJvZ3MuCgkJLSBJbXByb3ZlIHRoZSBsaWJ4ZnMgY2FjaGUgd2l0aCBwcmlvcml0eSB0YWdnaW5nIHRvIGtlZXAKCQkgIGJsb2NrcyBhcm91bmQgdGhhdCBoYXZlIHVuZmF2b3VyYWJsZSBJL08gY2hhcmFjdGVyaXN0aWNzLgoJLSBNYWtlIG1rZnMueGZzIC1mIHplcm8gdGhlIG9sZCBzZWNvbmRhcnkgc3VwZXJibG9ja3MgYmVmb3JlIHdyaXRpbmcKCSAgdGhlIG5ldyBzdXBlcmJsb2Nrcy4KCS0gRml4IHVwIHhmc19pbmZvIGFuZCB4ZnNfcXVvdGEncyAtYyBoYW5kbGluZyB3aXRoIGdsb2JhbCBjb21tYW5kcy4KCS0gSW1wcm92ZSB4ZnNfYm1hcCAtdnAgb3V0cHV0IHRvIGFsd2F5cyBzaG93IHRoZSBGTEFHUyBjb2x1bW4uCgktIFVwZGF0ZSBtYW4gcGFnZXMuCgp4ZnNwcm9ncy0yLjkuMSAoMjggSnVuZSAyMDA3KQoJLSBBZGRlZCBmaWxlc3RyZWFtcyBzdXBwb3J0IHRvIHhmc19pby4KCS0gRml4IHVwIGxpYmF0dHIgTWFrZWZpbGUgdG8gYXBwZW5kIHRvIExUTERGTEFHUy4gVGhhbmtzIHRvCgkgIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzIDxBcmZyZXZlci5GVEFAR01haWwuQ29tPiBmb3IgdGhpcy4KCS0gRml4IHVwIGJ1aWxkIG5vdCB0byBpZ25vcmUgTERGTEFHUyBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLgoJICBUaGFua3MgdG8gU3BhbktZIDx2YXBpZXJAZ2VudG9vLm9yZz4gZm9yIHRoaXMuCgp4ZnNwcm9ncy0yLjkuMCAoNSBKdW5lIDIwMDcpCgktIEFkZGVkIG5ldyB0b29sczogeGZzX21ldGFkdW1wIGFuZCB4ZnNfbWRyZXN0b3JlLgoJLSBGaXggdXAgdGhlIEhBVkVfX19VMzIgZml4IGZyb20gMi44LjIwCgkgIFRoYW5rcyB0byBFcmljIFNhbmRlZW4gZm9yIHBvaW50aW5nIHRoaXMgb3V0LgoKeGZzcHJvZ3MtMi44LjIxICgyOCBNYXkgMjAwNykKCS0gQWRkIHN1cHBvcnQgZm9yIGxhenkgc3VwZXJibG9jayBjb3VudGVycyBpbiBta2ZzLnhmcywgeGZzX2RiLAoJICB4ZnNfcmVwYWlyLCB4ZnNfZ3Jvd2ZzIGFuZCBhbHNvIGxpYnhmcy4KCS0gRml4IHhmc19xdW90YSBwcm9qZWN0IGNvbW1hbmQgdG8gc3RvcCBpdCBvcGVyYXRpbmcgb24gc3BlY2lhbCBmaWxlcy4KCSAgVGhhbmtzIHRvIExlbyBCYWx0dXMuCgp4ZnNwcm9ncy0yLjguMjAgKDIzIEZlYnJ1YXJ5IDIwMDcpCgktIEZpeCB4ZnNfcmVwYWlyIG5vdCBkZXRlY3RpbmcgaW52YWxpZCBidHJlZSByb290IGluIGlub2Rlcy4KCS0gRml4IHhmc19yZXBhaXIgcmVzdG9yaW5nIGNvcnJ1cHRlZCBzdXBlcmJsb2NrIGFmdGVyIHJlcGFpcmluZyBpdC4KCS0gRml4IHhmc19yZXBhaXIgY3Jhc2hpbmcgb24gaW52YWxpZCBxdW90YSBpbm9kZSB2YWx1ZXMuCgktIEZpeCB4ZnNfcXVvdGEgZ3JhY2V0aW1lIHJlcG9ydGluZy4KCSAgVGhhbmtzIHRvIFV0YWtvIEt1c2FrYSA8dXRha29AdG5lcy5uZWMuY28uanA+IGZvciB0aGlzLgoJLSBGaXggbGlieGZzIElPX0RFQlVHIG91dHB1dC4KCS0gSW5zdGVhZCBvZiB1c2luZyBBQ19DSEVDS19UWVBFUyB3aGljaCBpc24ndCBzdXBwb3J0ZWQgZm9yCgkgIG9sZGVyIHZlcnNpb25zIG9mIGF1dG9jb25mLCBhZGQgb3VyIG93biB0eXBlIGNoZWNrIGluIHRoZQoJICBtNC9wYWNrYWdlX3R5cGVzLm00IGZpbGUgZm9yIF9fdTMyLgoJICBTdWdnZXN0ZWQgYnkgTmF0aGFuIFNjb3R0IGFuZCBkaXNjb3ZlcmVkIGJ5IHdvb2tleUBhbGVwaDEuY28udWsuCgp4ZnNwcm9ncy0yLjguMTkgKDMxIEphbnVhcnkgMjAwNykKCS0gRml4IHB0aHJlYWQgc3RhY2sgc2l6ZSBzZXR0aW5nIGluIHhmc19yZXBhaXIuCgktIEZpeCB4ZnNfYm1hcCAtbiBvcHRpb24gZGlzcGxheWluZyBhIHRydW5jYXRlZCBleHRlbnQuCgktIEZpeCB4ZnNfaW8gbXdyaXRlIHNlZ2ZhdWx0LiBUaGFua3MgdG8gVXRha28gS3VzYWthIGZvciB0aGVzZSB0d28KCSAgZml4ZXMuCgktIEZpeCBlcnJvcnMgaW4geGZzX3F1b3RhKDgpIG1hbiBwYWdlLgoKeGZzcHJvZ3MtMi44LjE4ICg4IERlY2VtYmVyIDIwMDYpCiAJLSA8eGZzL2xpc3QuaD4gaXMgYW4gaW5zdGFsbGVkIGZpbGUsIHdlIGNhbm5vdCBzaW1wbHkgcmVuYW1lIGl0LAogCSAgYXMgb3RoZXIgYXBwbGljYXRpb25zIHVzaW5nIGl0IChhY2NpZGVudGFsbHkgb3Igbm90KSBtYXkgYnJlYWsuCiAJICBUaGUgeGZzX2xpc3QuaCBuYW1lIHdhcyBpbmNvbnNpc3RlbnQgd2l0aCBldmVyeXRoaW5nIGVsc2UgdG9vLgogCS0gRml4ICJwb2ludGVyIHRhcmdldHMgaW4gYXNzaWdubWVudCBkaWZmZXIgaW4gc2lnbmVkbmVzcyIgd2FybmluZ3MKIAktIFVwZGF0ZSBEZWJpYW4gcGFja2FnaW5nLgoJLSBGaXggdXAgdHdvIGlzc3VlcyB3aXRoIHhmc19kYiBhbmQgYm1hcC4gSWYgdGhlIGRhdGEvYXR0ciBmb3JrIGlzCgkgIGxvY2FsLCBpdCBlaXRoZXIgaW5maW5pdGUgbG9vcHMgb3IgY3Jhc2hlcy4gSWYgYm90aCBhcmUgZGlzcGxheWVkLAoJICB0aGUgYXR0cnMgYXJlIHdyb25nLgoJLSBGaXggdXAgeGZzX2lvIG1tYXAgcmVhZCB0aGF0IHJlYWQgZnJvbSB0aGUgd3Jvbmcgb2Zmc2V0LgoJLSBVcGRhdGVkIHhmc19pbyBtYW4gcGFnZS4KCSAgVGhhbmtzIHRvIFV0YWtvIEt1c2FrYSA8dXRha29AdG5lcy5uZWMuY28uanA+IGZvciB0aGUgYWJvdmUgdGhyZWUKCSAgZml4ZXMuCgp4ZnNwcm9ncy0yLjguMTcgKDUgRGVjZW1iZXIgMjAwNikKCS0gRml4IHVwIGxpYnhmcyBTRUdWIHdoZW4gYXR0ZW1wdGluZyB0byBtb3VudCBhIG5vbi1YRlMgZmlsZXN5c3RlbS4KCSAgVGhhbmtzIHRvIFV0YWtvIEt1c2FrYSA8dXRha29AdG5lcy5uZWMuY28uanA+IGZvciB0aGlzLgoJLSBGaXggdXAgeGZzX3JlcGFpciBhYm9ydGluZyBpZiBpdCBmaW5kcyBhbiBpbm9kZSB3aXRoIGFuIGludmFsaWQKCSAgaW5vZGUgdHlwZS4KCS0gRml4IHVwIGRlZmF1bHQgcmVhbHRpbWUgZXh0ZW50IHNpemUgZm9yIGxhcmdlIGJsb2NrIHNpemVzLgoJLSBSZW5hbWUgaW5jbHVkZS9saXN0LmggdG8geGZzX2xpc3QuaCBzbyB0aGF0IG90aGVyIGFwcGxpY2F0aW9ucwoJICBkbyBub3QgYWNjaWRlbnRhbGx5IHVzZSBpdC4KCnhmc3Byb2dzLTIuOC4xNiAoMzAgT2N0b2JlciAyMDA2KQoJLSBGaXggdXAgYW4gZW5kaWFuIHByb2JsZW0gZm9yIG5saW5rIHNldHRpbmcgaW4gcGhhc2UgNyBmb3IgeGZzX3JlcGFpci4KCnhmc3Byb2dzLTIuOC4xNSAoMTkgT2N0b2JlciAyMDA2KQoJLSBGaXggdXAgbmxpbmsgY2hlY2tzIGFuZCByZXBhaXJzIGluIHBoYXNlIDcgZm9yIHhmc19yZXBhaXIuCgktIFJlbW92ZSBhIGJvZ3VzIExFQUZOIHdhcm5pbmcgZm9yIGEgc2luZ2xlIGxlYWYgbm9kZSB2MiBkaXIuCgkgIFRoYW5rcyB0byBSb2dlciBXaWxsY29ja3MgPHJvZ2VyQGZpbG1saWdodC5sdGQudWs+IGZvciB0aGlzLgoKeGZzcHJvZ3MtMi44LjE0ICg2IE9jdG9iZXIgMjAwNikKCS0gRml4IHVwIHRoZSByaW5nIGNvbW1hbmQgaW4geGZzX2RiLAoJICBUaGFua3MgdG8gVXRha28gS3VzYWthIDx1dGFrb0B0bmVzLm5lYy5jby5qcD4gZm9yIHRoaXMuCgktIFNldCB0aGUgYmxvY2tzaXplIG9uIHRoZSBkZXZpY2UgdG8gdGhlIGdpdmVuIHNlY3RvcgoJICBzaXplIHdoaWNoIGlzIF9ub3RfIG5lY2Vzc2FyaWx5IDUxMiBieXRlczsKCSAgaWRlYSBzdWdnZXN0ZWQgYnkgU2hhaWxlbmRyYSBUcmlwYXRoaS4KCS0gRml4IHVwIHhmc19jb3B5IGFuZCBpdHMgdmFyaWFibGUgYXJndW1lbnQgaGFuZGxpbmcKCSAgYXJvdW5kIHZmcHJpbnRmOyB4ZnNfY29weSB3YXMgc2VnIGZhdWx0aW5nIG9uIHg4Nl82NC4KCnhmc3Byb2dzLTIuOC4xMyAoMjEgU2VwdGVtYmVyIDIwMDYpCgktIEZpeCB2MiBkaXJlY3RvcnkgY2hlY2tpbmcgd2l0aCBob2xlcyBhbmQgdW5yZWFkYWJsZSBibG9ja3MuCgktIEZpeCBhIG1lbW9yeSBsZWFrIGluIGRpcjIgY2hlY2tpbmcuCgktIFVwZGF0ZSBsaWJkaXNrL21kIHN1cHBvcnQgdG8gd29yayBvdXQgdGhlIHN0cmlwZSB3aWR0aAoJICBiYXNlZCBvbiAoIyByYWlkLWRpc2tzIC0gIyBwYXJpdHkgZGlza3MpIHdoaWNoCgkgIGRvZXNuJ3QgaW5jbHVkZSBhbnkgc3BhcmUgZGlza3MgKHdoaWNoIHdlIG1pc3Rha2VubHkgZGlkIGJlZm9yZSkuCgkgIFRoYW5rcyB0byBTaGFpbGVuZHJhIFRyaXBhdGhpJ3Mgc3VnZ2VzdGlvbnMuCgktIEdldCB0aGUga2VybmVsIGludCB0eXBlcyBvZiBfX3UzMiBhbmQgZnJpZW5kcyBmcm9tIDxhc20vdHlwZXMuaD4KCSAgaWYgd2UgY2FuLCBvdGhlcndpc2UgZGVmaW5lIHRoZW0gb3Vyc2VsdmVzLgoKeGZzcHJvZ3MtMi44LjEyICgyOSBBdWd1c3QgMjAwNikKCS0gTXVsdGktdGhyZWFkIG1vZGlmaWNhdGlvbnMgdG8geGZzX3JlcGFpci4KCS0gVXBkYXRlZCBQb2xpc2ggdHJhbnNsYXRpb24sIHRoYW5rcyB0byBKYWt1YiBCb2d1c3ouCgktIENoYW5nZSBkZWZhdWx0IG1rZnMgcmVhbHRpbWUgZXh0ZW50IHNpemUgc2V0dGluZyB0bwoJICBwZXJmb3JtIGJldHRlciBmb3IgYnVmZmVyZWQgd3JpdGVzLgoKeGZzcHJvZ3MtMi44LjExICgwOCBBdWd1c3QgMjAwNikKCS0geGZzX3JlcGFpciBwcmVmZXRjaCBvcHRpbWlzYXRpb25zLgoJLSBNYWtlIG1hbnkgdG9vbHMgdXNlIGRpcmVjdCBJL08gb24gTGludXggaWYgdGhlIHVuZGVybHlpbmcKCSAgZGV2aWNlIHN1cHBvcnRzIGl0LiAgTWFpbmx5IGZvciBzcGVlZGluZyB1cCB4ZnNfcmVwYWlyIGFzCgkgIGxpYnhmcyBkb2VzIGl0cyBvd24gaW50ZXJuYWwgbWV0YWRhdGEgYnVmZmVyaW5nIG5vdy4KCS0gRml4IHdhcm5pbmdzIGZyb20gbWtmcy54ZnMgb24gcmFtZGlzayBkZXZpY2VzLgoJLSBGaXggaXNzdWVzIHdpdGggc3ltYm9saWMgbGluayBoYW5kbGluZyBpbiBNYWtlZmlsZXMuCgp4ZnNwcm9ncy0yLjguMTAgKDAyIEF1Z3VzdCAyMDA2KQoJLSBGaXggdjIgZGlyZWN0b3J5IHJlYnVpbGRzIGluIHBoYXNlNiBvZiB4ZnNfcmVwYWlyLgoJLSBGaXggYnVmZmVyIHNpemluZyBpc3N1ZSBmb3IgbGFyZ2UgcGFnZXNpemUgc3lzdGVtcywKCSAgYWZmZWN0aW5nIG1rZnMgYXV0by1kZXZpY2UtdHlwZS1kZXRlY3Rpb24gaGV1cmlzdGljcy4KCnhmc3Byb2dzLTIuOC45ICgxOCBKdWx5IDIwMDYpCgktIEZpeCBycG0gaXNzdWUgd2l0aCBpbnN0YWxsIHRhcmdldHMgYXMgdWlkL2dpZCB6ZXJvICh3ZSBub3cKCSAgdXNpbmcgc3ltYm9saWMgbmFtZXMgcmF0aGVyIHRoYW4gdGhlIG51bWVyaWMgdmVyc2lvbnMpLgoKeGZzcHJvZ3MtMi44LjggKDE0IEp1bHkgMjAwNikKCS0gRml4IGlzc3VlcyB3aXRoIG1ha2VkZXBlbmQgb24gbGlidG9vbCBsaWJyYXJpZXMuCgp4ZnNwcm9ncy0yLjguNyAoMTAgSnVseSAyMDA2KQoJLSBGaXggYnVpbGQgb2YgeGZzX2xvZ3ByaW50IGZvciBkaWZmZXJlbnQgdXVpZF90IGRlZmluaXRpb25zOwoJICB0aGFua3MgdG8gQ3JhaWcgUm9kcmlndWVzLgoKeGZzcHJvZ3MtMi44LjYgKDA3IEp1bHkgMjAwNikKCS0gRml4ZWQgeGZzX3JlcGFpciBoYW5kbGluZyBvZiBkdXBsaWNhdGUgbmFtZXMgaW4gYSBkaXJlY3RvcnkuCgp4ZnNwcm9ncy0yLjguNSAoMDUgSnVseSAyMDA2KQoJLSBVcGRhdGUgdHJhbnNsYXRpb24gTWFrZWZpbGUgdG8gd29yayBiZXR0ZXIgd2l0aCB0aGUgVWJ1bnR1CgkgIHRyYW5zbGF0aW9uIHN5c3RlbS4gIFRoYW5rcyB0byBmZWVkYmFjayBmcm9tIE1hcnRpbiBQaXR0LgoJLSBGaXggYW5ub3lpbmcgImlnbm9yZXMgZGF0YXJvb3RkaXIiIHdhcm5pbmcgZnJvbSBjb25maWd1cmUuCgktIEZpeCBpc3N1ZXMgd2l0aCBtYWtlZGVwZW5kIGJ1aWxkIGluZnJhc3RydWN0dXJlLgoJLSBBZGQgcHJlZmV0Y2ggY29kZSBmb3IgaW1wcm92ZWQgeGZzX3JlcGFpciBydW4gdGltZXMuCgp4ZnNwcm9ncy0yLjguNCAoMjMgSnVuZSAyMDA2KQoJLSBJbXByb3ZlIERlYmlhbiB1ZGViIHBhY2thZ2UgaGFuZGxpbmcsIHRoYW5rcyB0byBGcmFucyBQb3AuCgktIEZpeCBhIHNpdHVhdGlvbiB3aGVyZSB4ZnNfZ3Jvd2ZzIGNhbiBmYWlsIHRvIG1hdGNoIGEgYmxvY2sKCSAgZGV2aWNlIHRvIGEgZmlsZXN5c3RlbSBjb3JyZWN0bHk7IHRoYW5rcyB0byBCYXN0aWFuIEtsZWluZWlkYW0uCgktIE1pbm9yIGNvcnJlY3Rpb25zIHRvIHRoZSB4ZnNfZ3Jvd2ZzIG1hbiBwYWdlLgoKeGZzcHJvZ3MtMi44LjMgKDIxIEp1bmUgMjAwNikKCS0gRml4IGEgcG9zc2libGUgc2VndiBpbiB4ZnNfZ3Jvd2ZzOyB0aGFua3MgdG8gQmFzdGlhbiBLbGVpbmVpZGFtLgoKeGZzcHJvZ3MtMi44LjIgKDE3IEp1bmUgMjAwNikKCS0gTW9yZSB1cGRhdGVzIHRvIHJlcGFpci9saWJ4ZnMgZm9yIGltcHJvdmluZyBwZXJmb3JtYW5jZQoJLSBJbmNvcnBvcmF0ZSBsaWJydCBpbnRvIHRoZSBidWlsZCBwcm9jZXNzIGZvciBsaW9fbGlzdGlvCgktIE1pbm9yIHhmc19sb2dwcmludCB0d2Vha3MgYW5kIGZpeGVzLgoJLSBTbWFsbCB1cGRhdGVzIHRvIHhmc19pbyBtYW51YWwgcGFnZS4KCS0gU2V2ZXJhbCBmaXhlcyBmcm9tIGVhcmxlciAyLjggcmVsZWFzZXMgd2l0aCByZXNwZWN0IHRvCgkgIGlub2RlL2J1ZmZlciBjYWNoZSByZWZjb3VudGluZy4KCnhmc3Byb2dzLTIuOC4xICgyOSBNYXkgMjAwNikKCS0gRml4IGVuZGlhbm5lc3MgaXNzdWVzIG9uIEZyZWVCU0QuCgp4ZnNwcm9ncy0yLjguMCAoMTggTWF5IDIwMDYpCgktIEluaXRpYWwgcGFzcyBhdCB1c2VyIHNwYWNlIGNhY2hpbmcsIHVsdGltYXRlbHkgcHJvdmlkZXMKCSAgYSBzdGFydGluZyBwb2ludCBmb3IgYSBmYXN0ZXIsIHBhcmFsbGVsIHZlcnNpb24gb2YgcmVwYWlyLgoJLSBGaXggc2V2ZXJhbCBpbm9kZS9idWZmZXIgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3Vlcy4KCS0gRml4IGNvbXBpbGVyIHdhcm5pbmdzLCBhbmQgYnVpbGRzIG9uIGNlcnRhaW4gZ2xpYmMgdmVyc2lvbnMKCSAgaGF2aW5nIGlzc3VlcyB3aXRoIHRoZSBkZXZpY2UgbWFqb3IoKSBtYWNyby4KCS0gQWRkZWQgY29kZSB0byB4ZnNfZGIgYW5kIHhmc19hZG1pbiB0byBhbGxvdyBjb252ZXJzaW9uCgkgIGZyb20gdmVyc2lvbiAxIHRvIHZlcnNpb24gMiBsb2dzLgoKeGZzcHJvZ3MtMi43LjE4ICgxNiBNYXkgMjAwNikKCS0gRml4ZWQgYSBjYXNlIHdoZXJlIHhmc19yZXBhaXIgd2FzIHJlcG9ydGluZyBhIHZhbGlkIHVzZWQKCSAgYmxvY2sgYXMgYSBkdXBsaWNhdGUgZHVyaW5nIHBoYXNlIDQuCgktIEZpeGVkIGEgY2FzZSB3aGVyZSB4ZnNfcmVwYWlyIGNvdWxkIGluY29ycmVjdGx5IGZsYWcgZXh0ZW50CgkgIGIrdHJlZSBub2RlcyBhcyBjb3JydXB0LgoJLSBQb3J0YWJpbGl0eSBjaGFuZ2VzLCBnZXQgeGZzX3JlcGFpciBjb21waWxpbmcgb24gSVJJWC4KCS0gUGFyZW50IHBvaW50ZXIgdXBkYXRlcyBpbiB4ZnNfaW8gY2hlY2tlciBjb21tYW5kLgoJLSBBbGxvdyBMREZMQUdTIHRvIGJlIG92ZXJyaWRkZW4sIGZvciBHZW50b28gcHVudGVycy4KCnhmc3Byb2dzLTIuNy4xNyAoMDUgQXByaWwgMjAwNikKCS0gRml4IGxpYnhmcyBhY2Nlc3MoMikgY2hlY2sgb24gL3Byb2MvbW91bnRzLCB3aGljaCB3YXMKCSAgY2F1c2luZyBpc3N1ZXMgd2hlbiB4ZnNfY2hlY2sveGZzX3JlcGFpciBydW4gb24gcmVhZG9ubHkKCSAgcm9vdCBmaWxlc3lzdGVtIG1vdW50cy4KCS0gRml4IERlYmlhbiBwYWNrYWdpbmcgZm9yIGxpYmMtZGV2IGJ1aWxkIGRlcGVuZGVuY3kuCgktIEZpeCB1cCBhdXRvIGxpYjY0IGluc3RhbGwgZGV0ZWN0aW9uIGZvciB4ODZfNjQgcGxhdGZvcm1zLgoKeGZzcHJvZ3MtMi43LjE2ICgyMiBNYXJjaCAyMDA2KQoJLSBGaXggZnJlZXNwYWNlIGFjY291bnRpbmcgaW4geGZzX3F1b3RhKDgpIGRmIGNvbW1hbmQuCgktIEZpeCBhIHR5cG8gb24gdGhlIHhmc19xdW90YSg4KSBtYW4gcGFnZS4KCS0gTWFrZSAtTzIgKGNjIG9wdGltaXNhdGlvbiBsZXZlbCkgdGhlIGRlZmF1bHQuCgp4ZnNwcm9ncy0yLjcuMTUgKDAzIE1hcmNoIDIwMDYpCgktIEZpeCB0aGUgd2F5IGV4dGVybmFsIGxvZy9yZWFsdGltZSBkZXZpY2VzIHdlcmUgaGFuZGxlZCBpbgoJICB1c2Vyc3BhY2Ugd2l0aCBvbGRlciBrZXJuZWxzIChzdWJ0ZWx5IGRpZmZlcmVudCBpbiBwcm9jZnMpCgktIEZpeCBhIGNvcnJ1cHRpb24gcHJvYmxlbSBpbiB4ZnNfY29weSg4KSB3aGVuIGF0dGVtcHRpbmcgdG8KCSAgemVybyB0aGUgKG9sZCkgbG9nLCBhIHNlY3Rpb24gd2FzIHNvbWV0aW1lcyBtaXNzZWQgKGRlcGVuZHMKCSAgb24gbG9nIGFuZCBJL08gYnVmZmVyIChtaXMpYWxpZ25tZW50KS4KCnhmc3Byb2dzLTIuNy4xNCAoMTUgRmVicnVhcnkgMjAwNikKCS0gRGViaWFuIHBhY2thZ2luZyB1cGRhdGVzIChkZWJtYWtlIG91dCwgZGViaGVscGVyIGluKS4KCS0gRml4IGEgaGVhZGVyIHRvIHdvcmsgd2l0aCBhZGRpdGlvbmFsIGNvbXBpbGVyIHZhcmlhbnRzLgoKeGZzcHJvZ3MtMi43LjEzICgwOCBGZWJydWFyeSAyMDA2KQoJLSBDb252ZXJ0IGZzY2sgaW50byBhIHNoZWxsIHNjcmlwdCBhbmQgbWFrZSBpdCBwcm92aWRlIGEKCSAgaGludCB0byBydW4gcmVwYWlyL2NoZWNrIChpbiBub24tYXV0byBmc2NrIG1vZGVzKS4KCSAgVGhhbmtzIHRvIE1hcmlhbiBKYW5jYXIgPG1qYW5jYXJAc3VzZS5jej4gZm9yIHRoaXMuCgktIEZpeCBjb21waWxhdGlvbiBib3RjaCBvbiBub24tTGludXggcGxhdGZvcm1zIChkdXBsaWNhdGUKCSAgdHlwZSBkZWZpbml0aW9ucykuCgp4ZnNwcm9ncy0yLjcuMTIgKDMxIEphbnVhcnkgMjAwNikKCS0gQWRkZWQgaW5pdGlhbCBQb2xpc2ggdHJhbnNsYXRpb24uCgkgIFRoYW5rcyB0byBKYWt1YiBCb2d1c3ogPHFib29zaEBwbGQtbGludXgub3JnPiBmb3IgdGhpcy4KCS0gRml4ZWQgcnBtIHNwZWNmaWxlIHdpdGggcmVzcGVjdCB0byBJTlNUQUxMX3tVU0VSLEdST1VQfS4KCnhmc3Byb2dzLTIuNy4xMSAoMTYgSmFudWFyeSAyMDA2KQoJLSBGaXggYSBwcm9ibGVtIHdpdGggdGhlIGdlbmVyYXRlZCBzb3VyY2UgdGFyYmFsbHMgYW5kIGEKCSAgbWlzc2luZyBwYXJlbnQuaCBoZWFkZXIgZmlsZS4KCnhmc3Byb2dzLTIuNy4xMCAoMTYgRGVjZW1iZXIgMjAwNSkKCS0gTWFrZSB4ZnNfZGIga2VlcCB0cnlpbmcgd2hlbiByb290IGlub2RlIGNhbid0IGJlIHJlYWQuCgktIE1ha2UgeGZzX2RiIGNoZWNrIEFHRiBCTk8gYW5kIENOVCBidHJlZSBjb25zaXN0ZW5jeS4KCS0gVHdlYWsgYSBjb3VwbGUgb2YgbGlieGZzIGhlYWRlcnMgc28gdGhleSBjYW4gYmUgdXNlZCBieQoJICBDKysgcHJvZ3JhbXMgKHJlbW92ZXMgbmVzdGVkIHN0cnVjdCBkZWNsYXJhdGlvbnMsIHdoaWNoCgkgIGFyZSB1c2VkIG91dHNpZGUgdGhlIHNjb3BlIHRoZXkncmUgZGVjbGFyZWQgaW4pLgoJLSBGaXggYSByb3VuZGluZyBpc3N1ZSBpbiB4ZnNfcXVvdGEgdGltZSByZXBvcnRpbmcsIG1ha2luZwoJICBpdCBtb3JlIGNvbnNpc3RlbnQgd2l0aCB0aGUgc3RhbmRhcmQgcXVvdGEgdXRpbGl0aWVzLgoJLSBGaXggZG9wZXkgbGlieGZzIG1lc3NhZ2UgIlVubW91bnQgYW5kIHJ1biB4ZnNfcmVwYWlyLiIsCgkgIGVzcGVjaWFsbHkgYW5ub3lpbmcgd2hlbiBwcmludGVkIGJ5IHhmc19yZXBhaXIgaXRzZWxmLgoJLSBGaXggYSBkaXIyIHhmc19yZXBhaXIgYnVnLCBtaXNkaWFnbm9zaW5nIGEgdmFsaWQgZGlyIGFzCgkgIGNvcnJ1cHQuICBUaGFua3MgdG8gTWFzYW5vcmkgVHN1ZGEuCgp4ZnNwcm9ncy0yLjcuOSAoMDggRGVjZW1iZXIgMjAwNSkKCS0gRml4IHRoaW5rbyBpbiBsaWJ4Y21kIGN2dG51bSByb3V0aW5lCgktIEZpeCBFRkkvRUZEIHByaW50aW5nIGluIHhmc19sb2dwcmludAoKeGZzcHJvZ3MtMi43LjggKDA1IERlY2VtYmVyIDIwMDUpCgktIEV4dGVuZCB4ZnNfaW8gdG8gZG8gYWxpZ25lZCBkaXJlY3QgSU8gYXV0b21hdGljYWxseQoJLSBSZXBvcnQgZGlyZWN0IElPIHBhcmFtZXRlcnMgKGRpb2luZm8pIGluIHhmc19pbwoJLSBNYWtlIHhmc19ta2ZpbGUgYSBzaGVsbCBzY3JpcHQgd3JhcHBlciBhcm91bmQgeGZzX2lvCgp4ZnNwcm9ncy0yLjcuNyAoMTYgTm92ZW1iZXIgMjAwNSkKCS0gRml4IHNvbWUgZ2NjIGNvbXBpbGVyIHdhcm5pbmdzIG9uIDY0IGJpdCBwbGF0Zm9ybXMuCgktIFJlbW92ZSBsYXN0IHJlZmVyZW5jZSB0byBhIDxsaW51eC8qLmg+IChrZXJuZWwpIGhlYWRlci4KCS0gVXBkYXRlZCBhY2xvY2FsLm00CgktIEZpeCBhIGJ1ZyBpbiB4ZnNfaW8gbHNwcm9qL2NocHJvaiByZWN1cnNpdmUgbW9kZXMuCgktIEFkZCB4ZnNfaW8gcmVjdXJzaXZlIG1vZGVzIGZvciB0aGUgZXh0c2l6ZSBjb21tYW5kLgoJLSBBZGQgeGZzX2RiIHZlcnNpb24gY29tbWFuZCBtb2RlcyBmb3IgYXR0cjEgYW5kIGF0dHIyLgoKeGZzcHJvZ3MtMi43LjYgKDMxIE9jdG9iZXIgMjAwNSkKCS0gQWRkIHN1cHBvcnQgZm9yIHRoZSBpbm9kZSBleHRlbnQgc2l6ZSBoaW50IGZvciB0aGUgcmVndWxhcgoJICBkYXRhIGRldmljZSAocHJldmlvdXNseSB3YXMgcmVhbHRpbWUgb25seSksIGFuZCBhbGxvdyB0aGUKCSAgb3B0aW9uYWwgaW5oZXJpdGFuY2Ugb2YgdGhpcyBwcm9wZXJ0eS4KCS0gQWRkIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgcmVhZC93cml0ZSBwYXR0ZXJucyBpbiB4ZnNfaW8KCSAgKHJldmVyc2UgYW5kIHJhbmRvbSwgaW4gYWRkaXRpb24gdG8gc2VxdWVudGlhbCBmb3J3YXJkcykuCgktIEFkZCBzb21lIG1rZnMgZGVidWdnaW5nIG9wdGlvbnMgdG8gYWlkIHRlc3RpbmcgaW5oZXJpdGFuY2UKCSAgb2YgcmVhbHRpbWUsIHByb2plY3QgSUQsIGFuZCBleHRzaXplIGlub2RlIGF0dHJpYnV0ZXMuCgktIEFkZCBta2ZzIG9wdGlvbiBmb3IgZm9yY2luZyB1c2Ugb2YgQVRUUjIsIGFuZCBtYWtlIGdyb3dmcwoJICByZXBvcnQgaXRzIHVzZS4KCS0gRml4IHVzZSBvZiBjdXJzb3IgaW4gYXR0cl9saXN0X2J5X2hhbmRsZSgpIGxpYmhhbmRsZSBjb2RlLgoJLSBGaXggc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyB3aGVuIGJ1aWxkaW5nIG9uIElSSVguCgp4ZnNwcm9ncy0yLjcuNSAoMjYgT2N0b2JlciAyMDA1KQoJLSBGaXggYW4gZW5kaWFuIGJ1ZyBpbiB4ZnNfZGIgImZyYWciIGNvbW1hbmQuCgktIEZpeCBzb21lIGVycm9ycyBvbiB0aGUgeGZzX3F1b3RhKDgpIG1hbiBwYWdlLgoKeGZzcHJvZ3MtMi43LjQgKDA4IE9jdG9iZXIgMjAwNSkKCS0gRml4IHJlYWQgYW5kIHdyaXRlIGNhbGxzIGluIHhmc19pbyB0byBhbGxvdyBidWZmZXJzIGxhcmdlcgoJICB0aGFuIDRHaUIgb24gNjQgYml0IHBsYXRmb3Jtcy4KCS0gRnJlZUJTRCBidWlsZCB0d2Vha3MgZnJvbSBDcmFpZyBSb2RyaWd1ZXMuCgktIEZpeGVkIGEgZmV3IG1pbm9yIGNvbXBpbGVyIHdhcm5pbmdzLgoKeGZzcHJvZ3MtMi43LjMgKDI5IFNlcHRlbWJlciAyMDA1KQoJLSBGaXggeGZzX3JlcGFpciBoYW5kbGluZyBvZiB0aGUgbW9yZWJpdHMgYml0LgoJLSBNZXJnZSBiYWNrIHNldmVyYWwga2VybmVsIGNoYW5nZXMgcmVsYXRlZCB0byBhdHRyMi4KCS0gRXh0ZW5kZWQgeGZzX2RiIGV4cGVydCBtb2RlIGNvbW1hbmRzCgktIENsZWFuIHVwIHNvbWUgZnN4YXR0ciB1c2VzIHRvIHJlZHVjZSBudW1iZXIgb2Ygc3lzY2FsbHMsCgkgIG5vdyB0aGF0IElSSVggYWxzbyBzdXBwb3J0cyBwcm9qZWN0IGlkZW50aWZpZXJzIHZpYSB0aGlzCgkgIGludGVyZmFjZS4KCnhmc3Byb2dzLTIuNy4yICgyOCBTZXB0ZW1iZXIgMjAwNSkKCS0gRml4IHVwIHhmc19yZXBhaXIgc2VnbWVudGF0aW9uIGZhdWx0IGR1ZSB0byB3cm9uZyBhbGxvY2F0aW9uCgkgIHNpemUuCgp4ZnNwcm9ncy0yLjcuMSAoMjAgU2VwdGVtYmVyIDIwMDUpCgktIEZpeCB1cCByZXBvcnRpbmcgb2YgZGV2aWNlcyBpbiB4ZnNfZ3Jvd2ZzIC0gbm93IHVzZXMKCSAgL3Byb2MvbW91bnRzIGluIHByZWZlcmVuY2UgdG8gL2V0Yy9tdGFiLgoJLSBGaXggYSBzdHJ0b2stcmVsYXRlZCBidWcgaW4gdGhlIGV4dHJhY3Rpb24gb2YgZGV2aWNlIG5hbWVzLAoJICBhbHNvIG9ubHkgYWZmZWN0aW5nIHhmc19ncm93ZnMuCgp4ZnNwcm9ncy0yLjcuMCAoMTYgU2VwdGVtYmVyIDIwMDUpCgktIFN1cHBvcnQgZm9yIHVwZGF0ZWQgZXh0ZW5kZWQgYXR0cmlidXRlcyBmb3JtYXQgKGF0dHIyKQoJLSBNYWtlIHhmc19xdW90YSB0b29sIGlzc3VlIGEgcXVvdGEgc3luYyBpbiBhbGwgdGhlIG5lZWRlZAoJICBwbGFjZXMsIGJlZm9yZSByZXBvcnRpbmcsIHRvIGNvdW50ZXIgYWZmZWN0cyBvZiBkZWxheWVkCgkgIGFsbG9jYXRpb24uCgktIFF1b3RhLXJlbGF0ZWQgSUQgc2lnbmVkbmVzcyBpc3N1ZSBmaXhlcy4KCS0gRXhwZXJ0IG1vZGUgeGZzX2RiIGNvbW1hbmRzIHRvIHNldC9yZW1vdmUgYXR0cmlidXRlcy4KCnhmc3Byb2dzLTIuNi4zNyAoMTEgQXVndXN0IDIwMDUpCgktIEZpeCBGcmVlQlNEIGJ1aWxkcyAoZ2V0bW50aW5mbyksIHRoYW5rcyB0byBDcmFpZyBSb2RyaWd1ZXMuCgp4ZnNwcm9ncy0yLjYuMzYgKDI4IEp1bHkgMjAwNSkKCS0gRml4IG1rZnMgc3RyaXBlIHVuaXQgYWxpZ25tZW50IGNoZWNrcyBmb3IgZXh0ZXJuYWwgbG9ncwoJLSBGaXggcnVubmluZyB4ZnNfZGIgb24gbm9uLVhGUyBkZXZpY2VzICh3YXMgc2VnZmF1bHRpbmcpCgktIEZpeCBhIDMyIGJpdCB3cmFwIGluIHhmc19yZXBhaXIgc2VhcmNoaW5nIGZvciBzZWNvbmRhcnkKCSAgc3VwZXJibG9ja3MuCgp4ZnNwcm9ncy0yLjYuMzUgKDAxIEp1bHkgMjAwNSkKCS0gQWRkIGJhY2sgZmRfdG9faGFuZGxlKCkgdG8gbGliaGFuZGxlLgoJLSBBZGQgaGFuZGxlIGNhbGwgbWFwcGluZ3MgdG8geGZzY3RsKCkgZm9yIElSSVguCgp4ZnNwcm9ncy0yLjYuMzQgKDIwIEp1bmUgMjAwNSkKCS0gU3dpdGNoIHRvIHRoZSBmc3hhdHRyIHhmc2N0bCBmb3IgZ2V0dGluZy9zZXR0aW5nIHByb2plY3QKCSAgaWRlbnRpZmllcnMgb24gaW5vZGVzLCByZW1vdmUgdGhlIHNob3J0LWxpdmVkIHNwZWNpYWxpc2VkCgkgIGlvY3RscyBmb3IgZG9pbmcgdGhpcy4KCS0gTWFrZSB0aGUgImJsb2NrdHJhc2giIHhmc19kYiBjb21tYW5kIGF2YWlsYWJsZSBpbiBleHBlcnQtCgkgIG1vZGUgb25seS4KCnhmc3Byb2dzLTIuNi4zMyAoMTMgSnVuZSAyMDA1KQoJLSBBbm90aGVyIGxpYmhhbmRsZSBmaXggb24gNjRiaXQsIEJpZyBFbmRpYW4gc3lzdGVtcy4KCnhmc3Byb2dzLTIuNi4zMiAoMDggSnVuZSAyMDA1KQoJLSBNaW5vciBlbmRpYW4gY2xlYW51cHMgaW4gc29tZSB0b29scy4KCS0gRml4IGEgY291cGxlIG9mIHhmc19xdW90YSBkb3VibGUtcmVwb3J0aW5nIGlzc3VlcyB3aGVuCgkgIGlzc3VpbmcgY29tbWFuZHMgdmlhIHRoZSAtYyAoY29tbWFuZCBsaW5lKSAwb3B0aW9uLgoKeGZzcHJvZ3MtMi42LjMxICgwNiBKdW5lIDIwMDUpCgktIEZpeCBwcmV2aW91cyBNRCBkcml2ZXItc3BlY2lmaWMgY2hhbmdlIHRvIGNvcnJlY3RseSBoYW5kbGUKCSAgKGkuZS4gbm90ICJzdHJpcGUgYWxpZ24iKSBsaW5lYXIgYXJyYXlzLgoJLSBBZGQgTUQgUkFJRCBsZXZlbCA0LCA2LCBhbmQgMTAgc3VwcG9ydC4KCS0gTWFrZSBta2ZzLnhmcyBhdXRvbWF0aWNhbGx5IGFkaml1c3QgdGhlIGdlb21ldHJ5IHRvIHVzZQoJICBhIHNlY3RvciBzaXplIHRoYXQgbWF0Y2hlcyB0aGUgYmxvY2sgc2l6ZSB3aGVuIE1EIFJBSUQKCSAgbGV2ZWwgNC81LzYgYXJlIGluIHVzZS4KCS0gQ291cGxlIG9mIG1pbm9yIG1hbiBwYWdlIGZpeHVwcywgaW5jbHVkaW5nIHBhdGNoIGJvdGNoIG9uCgkgIGluaXRpYWwgcmV2aXNpb24gb2YgeGZzX3F1b3RhKDgpLgoKeGZzcHJvZ3MtMi42LjMwICgwMyBKdW5lIDIwMDUpCgktIEFkZCB4ZnNfcXVvdGEoOCkgY29tbWFuZCB3aGljaCBrbm93cyBob3cgdG8gZG8gYWxsIHRoaW5ncwoJICBxdW90YSByZWxhdGVkLCBhbmQgY2FuIGFsc28gZG8gdGhlIFhGUyBzcGVjaWZpYyBleHRlbnNpb25zCgkgIGxpa2UgcHJvamVjdCBxdW90YSwgcmVhbHRpbWUgZGV2aWNlIHF1b3RhLCBldGMuCgktIENyZWF0ZWQgYSBsaWJyYXJ5IG9mIGNvbW1vbiBjb2RlIChsaWJ4Y21kLmEpIHNoYXJlZCBieQoJICB4ZnNfZ3Jvd2ZzLCB4ZnNfaW8gYW5kIHhmc19xdW90YS4KCS0gRml4IHVzZSBvZiByZWd1bGFyIGZpbGVzIGZvciByZWFsdGltZSBzdWJ2b2x1bWVzIChkZWJ1Z2dpbmcKCSAgb25seSwgcmVhbGx5KS4KCS0gRml4IGJ1ZyBpbiB4ZnNfaW8gY29tbWFuZCBsaW5lIG9wdGlvbiBoYW5kbGluZyB3aGVuIGNvbW1hbmRzCgkgIHdoZXJlIHNwZWNpZmllZCBmb3IgbXVsdGlwbGUgZmlsZXMgYXQgb25jZS4KCS0gQWxsb3cgeGZzX2lvIHRvIHNwZWNpZnkgT19OT05CTE9DSyBmb3IgcmVndWxhciBmaWxlIElPLgoJLSBGaXggTUQgZHJpdmVyLXNwZWNpZmljIGNvZGUgdG8gbm90IGF0dGVtcHQgc3RyaXBlIGFsaWdubWVudAoJICBmb3Igdm9sdW1lcyB0aGF0IGFyZSBub3Qgc3RyaXBlcyAoZS5nLiBjb25jYXQvbWlycm9yKS4KCnhmc3Byb2dzLTIuNi4yOSAoMTkgQXByaWwgMjAwNSkKCS0gRml4IG1rZnMueGZzIC1kZmlsZS4KCS0gRml4IGxpYmhhbmRsZSBvbiA2NGJpdCwgQmlnIEVuZGlhbiBzeXN0ZW1zLgoKeGZzcHJvZ3MtMi42LjI4ICgzMCBNYXJjaCAyMDA1KQoJLSBGaXggY29tcGlsZXIgd2FybmluZyBpbiByZXBhaXIvZGlyLmMgc2l6ZSBjaGVja3MuCgktIEZpeCBtb3JlIGNvbXBpbGF0aW9uIHByb2JsZW0gd2l0aCB2ZXJzaW9uIDQgb2YgZ2NjCgkgICh0aGFua3MgdG8gQW5kcmVhcyBKb2NoZW5zKS4KCS0gTWFrZSB4ZnNfZGIgYW5kIHhmc19yZXBhaXIgY29wZSB3aXRoIGZpbGVzeXN0ZW1zIHRoYXQKCSAgaGF2ZSBwcm9qZWN0IHF1b3RhIGVuYWJsZWQuCgp4ZnNwcm9ncy0yLjYuMjcgKDIzIE1hcmNoIDIwMDUpCgktIEZpeCBkZWZhdWx0IG1rZnMgYWxsb2NhdGlvbiBncm91cCBzaXplIGNhbGN1bGF0aW9ucwoJICBmb3IgZmlsZXN5c3RlbSBzaXplcyBpbiB0aGUgcmFuZ2UgMzIgLSA2NCB0ZXJhYnl0ZXMuCgktIEFkZCBub2FsaWduIG1rZnMgc3Vib3B0aW9ucyBmb3IgLWQvLXIgdG8gZGlzYWJsZSB0aGUKCSAgc3VuaXQvc3dpZHRoIGF1dG8tYWxpZ25tZW50IChiYXNlZCBvbiBsb2dpY2FsIHZvbHVtZQoJICBnZW9tZXRyeSwgZXh0cmFjdGVkIGZyb20gdGhlIGRyaXZlcikuCgp4ZnNwcm9ncy0yLjYuMjYgKDA4IE1hcmNoIDIwMDUpCgktIEZpeCBjb21waWxhdGlvbiBwcm9ibGVtIHdpdGggdmVyc2lvbiA0IG9mIGdjYwoJICAodGhhbmtzIHRvIEFuZHJlYXMgSm9jaGVucykuCgktIEFkZGVkIGEgc3RyZWFtbGluZWQgPHhmcy94ZnMuaD4gZm9yIHByb2dyYW1zIHdhbnRpbmcKCSAgdG8gbWFrZSB1c2Ugb2YgdGhlIFhGUy1zcGVjaWZpYyBrZXJuZWwgaW50ZXJmYWNlcyAodG8KCSAgYWRkcmVzcyBjb21wbGFpbnRzIHRoYXQgPHhmcy9saWJ4ZnMuaD4gd2FzICJoZWF2eSIpLgoJLSBBZGQgaW1hcCBhcyBhbiBleHBlcnQgY29tbWFuZCBpbiB4ZnNfaW8sIG1ha2luZyBpdAoJICBtb3JlIGVhc2lseSBhY2Nlc3NpYmxlIHRvIHRob3NlIHdobyBuZWVkIGl0LgoJLSBFeHRlbmRlZCBzdGF0aXN0aWNzIHJlcG9ydGluZyBmb3IgeGZzX2lvIGNvbW1hbmQuCgktIEZpeGVkIHJlYWRsaW5lIHN1cHBvcnQgZm9yIGN1cnJlbnQgZGlzdHJpYnV0aW9ucy4KCS0gQWRkIGFuIC0tZW5hYmxlLXRlcm1jYXA9W3llcy9ub10gY29uZmlndXJlIG9wdGlvbiwKCSAgYW5kIGNoYW5nZWQgLS1lbmFibGUtcmVhZGxpbmU9W3llcy9ub10gdG8gbm90IGZvcmNlCgkgIGxpbmtpbmcgd2l0aCBsaWJ0ZXJtY2FwLiAgQnVpbGRzIG9uIHNvbWUgcGxhdGZvcm1zCgkgIG1heSBuZWVkIHRvIHVzZSBib3RoIG9wdGlvbnMsIGJ1dCBtb3N0IGRpc3RyaWJ1dGlvbnMKCSAgZG8gbm90IHJlcXVpcmUgLS1lbmFibGUtdGVybWNhcCB3aGVuIGxpbmtpbmcgYWdhaW5zdAoJICBsaWJyZWFkbGluZS4KCS0gTWlub3IgbWFuIHBhZ2UgdXBkYXRlcy4KCnhmc3Byb2dzLTIuNi4yNSAoMDggT2N0b2JlciAyMDA0KQoJLSBGaXggYnVpbGQgd2l0aCByZWFsbHkgb2xkIGdsaWJjIHZlcnNpb25zLgoKeGZzcHJvZ3MtMi42LjI0ICgyOSBTZXB0ZW1iZXIgMjAwNCkKCS0gQWxsb3cgJ2UnIHN1ZmZpeCBpbiBzaXplIGFyZ3VtZW50cyB0byBta2ZzLgoJLSBVcGRhdGUgbWtmcyBtYW4gcGFnZSBkZXNjcmlwdGlvbiBvZiBtYXhpbXVtIGFsbG9jYXRpb24KCSAgZ3JvdXAgc2l6ZS4KCS0gVXBkYXRlIG1rZnMgYW5kIHhmc19kYiBtYW4gcGFnZXMgdG8gdXNlIGNvbnNpc3RlbnQsCgkgIHN0YW5kYXJkIG5vdGF0aW9ucy4KCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlieGZzIGFuZCBoZWFkZXJzLgoKeGZzcHJvZ3MtMi42LjIzICgxNyBTZXB0ZW1iZXIgMjAwNCkKCS0gRml4IHhmc19pbyBwcmVhZC9wd3JpdGUgLWIgb3B0aW9uLCB3aGVuIHVzZWQgbW9yZSB0aGFuCgkgIG9uY2Ugd2Ugd291bGQgdXNlIHRoZSBsYXJnZXN0IG9mIHRoZSBwcmV2aW91cyB2YWx1ZXMsCgkgIGluc3RlYWQgb2YgdGhlIChwb3NzaWJseSBzbWFsbGVyKSB2YWx1ZSBzcGVjaWZpZWQuCgktIEFkZCByZWN1cnNpdmUgbW9kZXMgdG8gbHNhdHRyL2NoYXR0ciB4ZnNfaW8gY29tbWFuZHMuCgktIE1ha2UgeGZzX2lvIHJ1biBhbnkgZ2l2ZW4gY29tbWFuZCBsaW5lIGNvbW1hbmRzICgtYykKCSAgb24gYWxsIGZpbGVzIHNwZWNpZmllZCwgbm90IGp1c3QgdGhlIGZpcnN0LgoKeGZzcHJvZ3MtMi42LjIyICgxMCBTZXB0ZW1iZXIgMjAwNCkKCS0gVXBkYXRlIHhmc19pbyB0byBnZXQgYSBjbGVhbiBjb21waWxlIG9uIElSSVggd2l0aCB0aGUKCSAgTUlQU1BybyBjb21waWxlcnMuCgktIEFkZCBkb2N1bWVudGF0aW9uIGFib3V0IGFkZGl0aW9uYWwgWEZTIGlub2RlIGZsYWdzLgoJLSBBZGQgeGZzX2lvIHdyaXRlIG9wdGlvbnMgdG8gaW5jbHVkZSBmc3luYy9mZGF0YXN5bmMKCSAgaW4gdGhlIHRpbWluZyByZXN1bHRzIGl0IGRpc3BsYXlzLgoJLSBBZGQgeGZzX2Zzb3BfY291bnRzIG91dHB1dCB0byB0aGUgeGZzX2lvIHN0YXRmcyBkYXRhLAoJICB3aGljaCBhbHNvIHNob3dzIGZyZWUgcmVhbHRpbWUgc3BhY2UsIGV0Yy4KCS0gQWRkIGtub3dsZWRnZSBvZiBhZGRpdGlvbmFsIGlub2RlIGZsYWdzIGZvciBub3N5bWxpbmtzCgkgIGFuZCBwcm9qZWN0IElEIGluaGVyaXRhbmNlLgoKeGZzcHJvZ3MtMi42LjIxICgwOSBBdWd1c3QgMjAwNCkKCS0gU3VwcG9ydCByZWFsdGltZSBiaXQgaW5oZXJpdGFuY2Ugb24gZGlyZWN0b3JpZXMuCgktIEZpeCB4ZnNfaW8gYnVpbGQgd2l0aCB1bnVzdWFsIChvbGQpIGdsaWJjIHZlcnNpb25zLgoJLSBGaXggdG9vbHMgdG8gbm90IGlzc3VlIHRoZSBCTEtGTFNCVUYgaW9jdGwgdG8gcmFtZGlzawoJICBkZXZpY2VzLiAgVGhhbmtzIHRvIEJvIFlhbmcgZm9yIHRoaXMgZml4LgoKeGZzcHJvZ3MtMi42LjIwICgyOCBKdWx5IDIwMDQpCgktIEZpeCBhIHNlZ2ZhdWx0IG9uIHhmc19pbyBvcGVuIGVycm9yIHBhdGggZm9yIG5vbi1YRlMKCSAgZmlsZXMuICBUaGFua3MgdG8gU3RlaW5hciBILiBHdW5kZXJzb24gZm9yIHRoaXMgZml4LgoKeGZzcHJvZ3MtMi42LjE5ICgxNiBKdWx5IDIwMDQpCgktIEZpeCB0d28gYnl0ZSBjb3VudCBzaXplIHdyYXBzIGluIHhmc19jb3B5LgoJLSBNaW5vciBtYW4gcGFnZSBmaXhlcyBmcm9tIEVyaWMgUmF5bW9uZC4KCnhmc3Byb2dzLTIuNi4xOCAoMjMgSnVuZSAyMDA0KQoJLSBGaXggbGliaGFuZGxlIGZyb20gcG9zc2libHkgcmV0dXJuaW5nIGFuIGludmFsaWQKCSAgaGFuZGxlIGxlbmd0aCBvbiBzeXN0ZW1zIHdoZXJlIHNpemVfdCBpcyA2NCBiaXRzLgoJLSBNaW5vciBhdXRvY29uZiBmaXh1cHMgdG8gZ2V0IHJwbSB0ZXN0IHdvcmtpbmcgb24KCSAgYWxsIHBsYXRmb3JtcyBhZ2Fpbi4KCS0gTWlub3IgbWFuIHBhZ2UgdXBkYXRlcyBmaXhpbmcgbWludXMvaHlwaGVuIHVzYWdlLgoKeGZzcHJvZ3MtMi42LjE3ICgyMyBKdW5lIDIwMDQpCgktIEZpeCB1c2Ugb2YgaXNzZXQgbWFjcm8sIGdldHRpbmcgcmVhbHRpbWUgZGV2aWNlcyB0bwoJICBmdW5jdGlvbiBjb3JyZWN0bHkgaW4geGZzX2RiIGFuZCB4ZnNfcmVwYWlyLgoJLSBGaXggaW5pdGlhbGlzYXRpb24gb2YgcmVhbHRpbWUgZGV2aWNlcyBpbiBsaWJ4ZnMuCgp4ZnNwcm9ncy0yLjYuMTYgKDE3IEp1bmUgMjAwNCkKCS0gQWRkIHNlbmRmaWxlIGNvbW1hbmQgaW50byB4ZnNfaW8oOCkgdG8gZXhlcmNpc2UgdGhhdAoJICBmdW5jdGlvbmFsaXR5LgoJLSBSZW1vdmUgbWF4dHJyZXMgcHJvZ3JhbSB0aGF0IHdhcyB1c2VkIGluIHRoZSBidWlsZAoJICB0byBnZW5lcmF0ZSBhIGhlYWRlciBmb3IgbWtmcycgY29uc3VtcHRpb24uCgktIFRoaXMgYWxsb3dzIGNyb3NzLWNvbXBpbGVzIHRvIGJlIGdyZWF0bHkgc2ltcGxpZmllZC4KCS0gUG9ydGFiaWxpdHkgdHdlYWtzIGZvciBidWlsZGluZyBvbiBvdGhlciBwbGF0Zm9ybXMuCgktIEZpeCBvYnNjdXJlIGJ1ZyBpbiBsb2cgc2l6ZSBsb3dlciBib3VuZGFyeSBjaGVja3MgZm9yCgkgIGF1dG8tc2l6ZWQgbG9ncyB3aGVuIHN0cmlwZSBhbGlnbm1lbnQgaXMgaW4gZWZmZWN0OwoJICB0aGUgZW5mb3JjZWQgbG93ZXIgYm91bmQgY291bGQgaGF2ZSBiZWVuIHNldCB0b28gbG93LgoKeGZzcHJvZ3MtMi42LjE1ICgwOSBKdW5lIDIwMDQpCgktIE1ha2UgeGZzX2NoZWNrIHRlc3QgZm9yIGEgZGlydHkgbG9nIGJlZm9yZSBwcm9jZWVkaW5nIHRvCgkgIGNoZWNrIHRoZSBmaWxlc3lzdGVtLgoJLSBGaXggY291cGxlIG9mIG1pbm9yIGJ1Z3MgaW4geGZzX2lvIChyZWFkb25seSBoYW5kbGluZyBvbgoJICB3cml0ZXMsIG9mZi1ieS1vbmUgZXJyb3IgaW4gb3BlbiBmaWxlIGVycm9yIHJlcG9ydGluZykuCgp4ZnNwcm9ncy0yLjYuMTQgKDEzIE1heSAyMDA0KQoJLSBBbGxvdyBsb2dwcmludCB0byBjb3B5IGEgbG9nIHRvIGEgZmlsZSAoLUMpIGFuZCB0byBkdW1wCgkgIGEgbG9nIGZyb20gYmVnaW5uaW5nIHRvIGVuZCBzaG93aW5nIG9uZGlzayBsb2cgcmVjb3JkICgtZCkuCgktIEZpeCBsb2dwcmludCBoYW5kbGluZyBvZiAtZiBvcHRpb24gLSBzaG91bGRuJ3QgYmUgZG9pbmcKCSAgdGhlIFVVSUQgY2hlY2sgaW4gdGhhdCBjYXNlLCBzaW5jZSB3ZSBkb24ndCBoYXZlIHRoZSBTQi4KCS0gUmVtb3ZlIE1EIGRldmljZSBzdXBlcmJsb2NrICJjbGVhbiIgY2hlY2ssIGZvbGxvd2luZyBOZWlsCgkgIEJyb3duJ3MgYWR2aWNlLgoJLSBTbWFsbCBEZWJpYW4gcGFja2FnaW5nIHR3ZWFrIHRvIHNheSB4ZnNwcm9ncyBoYXMgYW4gZnNjay4KCnhmc3Byb2dzLTIuNi4xMyAoMDMgTWF5IDIwMDQpCgktIFplcm8gb3V0IG1vcmUgYXQgYmVnaW5uaW5nIGFuZCBlbmQgb2YgZGV2aWNlIGF0IG1rZnMgdGltZQoJICAoZ2V0IGFsbCBvbGQgTUQgc3VwZXJibG9ja3MgYXQgdGhlIGVuZCwgZm9yIG1vdW50IGJ5IGxhYmVsKS4KCnhmc3Byb2dzLTIuNi4xMiAoMzAgQXByaWwgMjAwNCkKCS0gRXh0cmFjdCBzdHJpcGUgdW5pdC93aWR0aCBmcm9tIGRldmljZSBtYXBwZXIgZGV2aWNlcwoJICAoYWRkZWQgbGliZGlzayBpbmZyYXN0cnVjdHVyZSwgdXNlZCBieSBta2ZzLnhmcykuCgktIEZpeCByb3VuZGluZyBpbiB4ZnNfaW8oOCkgYnl0ZXMgcmVhZC93cml0dGVuIG91dHB1dC4KCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlieGZzIGFuZCBoZWFkZXJzLgoJLSBGaXggY29tcGlsZXIgd2FybmluZ3Mgb24gNjQgYml0IHBsYXRmb3Jtcy4KCS0gVXBkYXRlIGkxOG4gbWVzc2FnZSBjYXRhbG9nLgoKeGZzcHJvZ3MtMi42LjExICgxNSBBcHJpbCAyMDA0KQoJLSBGaXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gcGF0aF90b19mc2hhbmRsZS4gQSBmaWxlCgkgIHdhcyBiZWluZyBvcGVuZWQgYnV0IG5ldmVyIGNsb3NlZCwgcmVnYXJkbGVzcyBvZgoJICB3aGV0aGVyIHRoYXQgZGVzY3JpcHRvciB3YXMgYmVpbmcgY2FjaGVkLiBOb3cgY2xvc2UKCSAgdGhlIGZpbGUgb24gZXJyb3Igb3IgaWYgaXQgaXMgbm90IGJlaW5nIGNhY2hlZC4KCS0gRml4IHhmc19yZXBhaXIgaGFuZGxpbmcgb2YgYSBjb3JydXB0IHYyIGRpcmVjdG9yeSB3aXRoCgkgIG11bHRpcGxlIGVudHJpZXMgaGF2aW5nIHRoZSBzYW1lIG5hbWUuCgp4ZnNwcm9ncy0yLjYuMTAgKDA1IEFwcmlsIDIwMDQpCgktIEZpeCBib3RjaCBpbiByZWNlbnQgYWRkaXRpb24gb2YgbmV3IHN1cGVyYmxvY2sgZmllbGQKCSAgKGZlYXR1cmVzMikgd2hpY2ggY291bGQgcmVzdWx0IGluIGZpbGVzeXN0ZW1zIHdpdGggdjIKCSAgbG9ncyBiZWluZyBjcmVhdGVkIHdpdGggaW52YWxpZCBzdXBlcmJsb2NrIGZpZWxkcy4KCSAgVGhhbmtzIHRvIENocmlzIFBhc2NvZSBmb3IgdGhpcyBmaXguCgktIEZpeCBlcnJvciB3aGVuIGZvcmNpbmcgYSB0b28tbGFyZ2UgdjIgbG9nIHN0cmlwZSBzaXplCgkgIGJhY2sgdG8gMzJLLiAgVGhhbmtzIHRvIENocmlzIFBhc2NvZSBmb3IgdGhpcyBmaXggdG9vLgoJLSBGaXggeGZzX2NvcHkgLWQgb3B0aW9uIHNvIHRoYXQgaXQgcmVhbGx5IGRvZXMgY3JlYXRlIGEKCSAgZHVwbGljYXRlIGZpbGVzeXN0ZW0gKHRoZSBsb2cgaXMgZHVwbGljYXRlZCB0b28gbm93IGluCgkgIHRoYXQgY2FzZSwgd2hlcmVhcyBwcmV2aW91c2x5IGEgZnJlc2ggbG9nIHdhcyBjcmVhdGVkKS4KCnhmc3Byb2dzLTIuNi45ICgyNiBNYXJjaCAyMDA0KQoJLSBVcGRhdGUgSEZJTEVTIGluIHhmc3Byb2dzL2lvL01ha2VmaWxlIHRvIHBhY2thZ2UgaW8vaW8uaAoKeGZzcHJvZ3MtMi42LjggKDI1IE1hcmNoIDIwMDQpCgktIEZpeCB4ZnNfZGIgd2hlbiBkdW1waW5nIHYyIGRpcnMgbGFyZ2VyIHRoYW4gdGhlIGZzYiBzaXplLgoJLSBTZXZlcmFsIHhmc19pbyBhZGRpdGlvbnMgLSBzdXBwb3J0IGZvciBtZW1vcnkgbWFwcGVkIGFyZWFzLAoJICBtdWx0aXBsZSBvcGVuIGZpbGVzLCBleHBlcnQgbW9kZSAoZnJlZXplLCBzaHV0ZG93biwgZXJyb3IKCSAgaW5qZWN0aW9uLCBldGMpLCBmYWR2aXNlIChMaW51eC1zcGVjaWZpYyksIGFsbG93IHVzZXIgdG8KCSAgc3BlY2lmeSBhIGNyZWF0ZSBtb2RlIHRvIG9wZW4oMikuCgktIEZpeCB4ZnNfYm1hcCB2ZXJib3NlIG1vZGUgc3RyaXBlIGFsaWdubWVudCBpbmZvcm1hdGlvbi4KCS0gRml4IHR5cG8gb24geGZzKDUpIG1hbiBwYWdlLgoKeGZzcHJvZ3MtMi42LjcgKDE5IE1hcmNoIDIwMDQpCgktIEZpeCB1cCBVVUlEIGxpYnJhcnkgY2hlY2tzIGFnYWluLCBwcmV2aW91cyBmaXggZGlkbid0IHdvcmsKCSAgZm9yIG9sZGVyIHZlcnNpb25zIG9mIGF1dGNvbmYuCgktIEFsbG93IGZvciBmdXR1cmUgZXh0ZW5zaW9ucyB0byB0aGUgWEZTIG9uZGlzayBzdHJ1Y3R1cmUgYnkKCSAgcmVzZXJ2aW5nIGFuIGV4dHJhIDMyIGJpdHMgaW4gdGhlIHN1cGVyYmxvY2sgZm9yIGZlYXR1cmUKCSAgYml0cyAodXBkYXRlIHhmc19kYiB0byBkdW1wIHRoZW0pLgoJLSBGaXggeGZzX3JlcGFpciBoYW5kbGluZyBvZiB2ZXJzaW9uIDIgZGlyZWN0b3JpZXMgd2l0aCBhCgkgIGhvbGUgYXQgdGhlIHN0YXJ0LgoJLSBGaXggYW4gZW5kaWFuIGJ1ZyBpbiB4ZnNfY29weSwgd2hlbiBvcGVyYXRpbmcgb24gYWxsb2NhdGlvbgoJICBncm91cHMgd2l0aCBtdWx0aS1sZXZlbCBmcmVlc3BhY2UgYnRyZWVzLgoJLSBFbnN1cmUgeGZzX3JlcGFpciAiZGFuZ2Vyb3VzIiBtb2RlIGRvZXMgbm90IGF0dGVtcHQgdG8gc2V0CgkgIHRoZSBkZXZpY2UgYmxvY2tzaXplLCB0aGlzIGdlbmVyYXRlcyBhbiBlcnJvciB3aGVuIHRhcmdldAoJICBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgcmVhZG9ubHkuCgp4ZnNwcm9ncy0yLjYuNiAoMDMgTWFyY2ggMjAwNCkKCS0gbWtmcyBub3cgb3BlbnMgdGhlIGRldmljZXMgaXQncyBvcGVyYXRpbmcgb24gd2l0aCB0aGUKCSAgT19FWENMIGZsYWcgc2V0LCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBMaW51eCAyLjYgYmxvY2sKCSAgbGF5ZXIgdG8gZW5zdXJlIGNvbmN1cnJlbnQgYWNjZXNzIGRvZXMgbm90IGhhcHBlbi4KCS0gQWxsb3cgeGZzX2lvIHRvIG9wZXJhdGUgb24gZmlsZXMgZnJvbSBvdGhlciBmaWxlc3lzdGVtcywKCSAgd2l0aCB0aGUgWEZTLXNwZWNpZmljIGNvbW1hbmRzIHVuYXZhaWxhYmxlIGluIHRoaXMgbW9kZS4KCS0gRml4IGNvbmZpZ3VyZSBzY3JpcHRzIHRvIGFsc28gc2VhcmNoIGZvciBhIFVVSUQgbGlicmFyeQoJICBpbiAvdXNyL2xpYjY0IHdoaWNoIGlzIGl0cyBob21lIG9uIEFNRDY0L3g4Nl82NC4KCnhmc3Byb2dzLTIuNi41ICgyMCBGZWJydWFyeSAyMDA0KQoJLSBGaXggdXAgbWtmcyB0byBlbnN1cmUgdGhhdCB0aGUgbG9nIHNpemUgaXMgYSBtdWx0aXBsZSBvZgoJICB0aGUgdjIgbG9nIHN0cmlwZSBzaXplIGV2ZW4gaWYgdGhlIGxvZyBoYXBwZW5zIHRvIGJlIGFsaWduZWQKCSAgb24gYSBsb2cgc3RyaXBlIGJvdW5kYXJ5IChhbHdheXMgY2hlY2sgaXQpLgoKeGZzcHJvZ3MtMi42LjQgKDE3IEZlYnJ1YXJ5IDIwMDQpCgktIEZpeCBhIGZldyBtb3JlIGxpYnhmcy9yZXBhaXIgbGVha3MuCgktIEZpeCB1cCBzb21lIGxpYmhhbmRsZSByb3V0aW5lcywgYWRkIHRoZSBvcGVuX2J5X2ZzaGFuZGxlCgkgIHJvdXRpbmUgcmVxdWlyZWQgYnkgcmVjZW50IHZlcnNpb25zIG9mIHhmc2R1bXAuCgp4ZnNwcm9ncy0yLjYuMyAoMTkgSmFudWFyeSAyMDA0KQoJLSBNZXJnZSBTdGV2ZSBMYW5nYXNlaydzIHdvcmsgb24gdGhlIERlYmlhbiBpbnN0YWxsZXIKCSAgc3VwcG9ydCBmb3IgeGZzcHJvZ3MuCgktIEFkZCBrbm93bGVkZ2UgdG8geGZzX2RiIGFib3V0IHRoZSBzZWN1cml0eSBuYW1lc3BhY2UgaW4KCSAgaXRzIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29tbWFuZHMuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcyBhbmQgaGVhZGVycy4KCS0gRml4IGEgY291cGxlIG9mIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoJLSBXb3JrYXJvdW5kIGZvciBzb21lIHZlcnNpb25zIG9mIGF1dG9jb25mIG1pc2hhbmRsaW5nIHRoZQoJICBBQ19DSEVDS19TSVpFT0YgbWFjcm8uCgktIEZpeCBhIG1lbW9yeSBsZWFrIGluIGxpYnhmcywgbW9zdCBub3RpY2FibGUgaW4geGZzX3JlcGFpci4KCnhmc3Byb2dzLTIuNi4yICgxNyBEZWNlbWJlciAyMDAzKQoJLSBGaXggZGV2X3Qgc2l6aW5nIGlzc3VlcyBpbiB1c2VyIHRvb2xzIC0gZ2xpYmMgdXNlcyBhIDY0CgkgIGJpdCBudW1iZXIgYW5kIFhGUyBoYXMgYSAzMiBkZXZpY2UgYml0IG51bWJlciwgY29uZnVzaW9uCgkgIHJlaWducy4gIE5vdCBtdWNoIG1hbmlwdWxhdGVzIGRldmljZSBudW1iZXJzIGluIHRoZSBYRlMKCSAgdXNlciB0b29scyB0aG91Z2gsIGhlbmNlIGhhc24ndCByZWFsbHkgYmVlbiBzZWVuIGJlZm9yZS4KCSAgVGhhbmtzIHRvIENocmlzdG9waCBmb3IgdGhlIHBhdGNoLgoKeGZzcHJvZ3MtMi42LjEgKDI3IE5vdmVtYmVyIDIwMDMpCgktIEh1bWFuLWZyaWVuZGx5IHhmc19pbyByZWFkL3dyaXRlIGJzaXplIHNwZWNpZmljYXRpb25zLgoJLSBEdW1wIHRocm91Z2hwdXQgYW5kIElPUHMgdmFsdWVzIGFmdGVyIHhmc19pbyByZWFkcy93cml0ZXMuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcywgbGlieGxvZyBhbmQgaGVhZGVycy4KCnhmc3Byb2dzLTIuNi4wICgyOCBPY3RvYmVyIDIwMDMpCgktIENoYW5nZSB0byBta2ZzIHN0cmF0ZWd5IGZvciBhbGxvY2F0aW9uIGdyb3VwIGNvdW50IGFuZCBzaXplCgkgIGRlZmF1bHQuICBTY2FsZXMgc2lnbmlmaWNhbnRseSBiZXR0ZXIgZm9yIGxhcmdlIGZpbGVzeXN0ZW1zLgoKeGZzcHJvZ3MtMi41LjExICgxMCBPY3RvYmVyIDIwMDMpCgktIEluY29ycG9yYXRlIEphbiBEZXJmaW5ha3MgY2hhbmdlIHRvIHRoZSBMaW51eCBibG9jayBpb2N0bHMKCSAgdXNlZCBpbiBsaWJ4ZnMsIGFsbG93aW5nIHRoaXMgY29kZSB0byBjb21waWxlIGNsZWFubHkgd2l0aAoJICBpbmNsdWRlIGZpbGVzIGZyb20gTGludXggMi42LjAtdGVzdDUgb253YXJkLgoKeGZzcHJvZ3MtMi41LjEwICgzMCBTZXB0ZW1iZXIgMjAwMykKCS0gRml4IHVwIHhmc19sb2dwcmludCB0byBoYW5kbGUgdmVyc2lvbiAyIGxvZ3MgZm9yIGl0cwoJICBvcGVyYXRpb24gb3V0cHV0IChwcmV2aW91c2x5IGNvcmUgZHVtcGVkIG9uIGl0KS4KCnhmc3Byb2dzLTIuNS45ICgxOSBTZXB0ZW1iZXIgMjAwMykKCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlieGZzLCBsaWJ4bG9nIGFuZCBoZWFkZXJzLgoJLSBBZGQgbmV3IGlub2RlIGZsYWdzIGludG8geGZzX2RiIHRvby4KCnhmc3Byb2dzLTIuNS44ICgxMiBTZXB0ZW1iZXIgMjAwMykKCS0gQWRkIG1pc3Npbmcgb3B0aW9ucyB0byB4ZnNfZGIgZnJhZyBjb21tYW5kIG9uZS1saW5lIHN1bW1hcnkuCgktIEFkZCB4ZnNfaW8gY29tbWFuZHMgZm9yIHNldHRpbmcgYW5kIGNsZWFyaW5nIG5ldyBpbm9kZSBmbGFncwoJICBmb3IgaW1tdXRhYmxlL2FwcGVuZC1vbmx5L3N5bmMvbm8tYXRpbWUvbm8tZHVtcC4KCS0gRHVtcCBzb21lIG90aGVyIHN0YXRmcyBmaWVsZHMgaW4gdGhlIHhmc19pbyBzdGF0ZnMgY29tbWFuZHMuCgktIFJlbW92ZSAidGVzdCIgbW9kZSBmcm9tIHhmc19yZXBhaXIsIG9ubHkgdXNlZnVsIGluIHhmc19jaGVjay4KCS0gRml4IHByb2JsZW0gaW4geGZzX2xvZ3ByaW50IHdoZXJlIGl0IHdhcyB0cnlpbmcgdG8gY29udGludWUKCSAgaW4gdGhlIHByZXNlbmNlIG9mIGEgY29ycnVwdCBsb2cgd2hlbiBpdCBzaG91bGRuJ3QgaGF2ZS4KCS0gRml4IGFuIGluY29ycmVjdCBhc3NlcnRpb24gaW4geGZzX2xvZ3ByaW50IGluIHJlZ2FyZHMgdG8gdGhlCgkgIHZhbGlkaXR5IG9mIHRoZSBsb2cgc3RhcnQgYmxvY2suCgktIEZpeCB4ZnNfZ3Jvd2ZzIChhbmQgaGVuY2UgeGZzX2luZm8pIHRvIGFsbG93IGl0IHRvIGJlIGdpdmVuCgkgIGVpdGhlciBhIG1vdW50IHBvaW50IG9yIGEgZGV2aWNlIGluIHRoZSBtb3VudCB0YWJsZSAtIGl0J2xsCgkgIGZpZ3VyZSBpdCBvdXQgYW5kIHNob3VsZCBkbyB0aGUgcmlnaHQgdGhpbmcgZWl0aGVyIHdheSBub3cuCgp4ZnNwcm9ncy0yLjUuNyAoMjkgQXVndXN0IDIwMDMpCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcyBhbmQgaGVhZGVycy4KCS0gTWFrZSB4ZnNfY29weSBhIHRhZCBtb3JlIHBvcnRhYmxlLCBhbHRob3VnaCB3b3JrIHJlbWFpbnMuCgktIEFkZCBhICJ0ZXN0IiBtb2RlIHRvIHhmc19yZXBhaXIgYW5kIHhmc19jaGVjayB3aGljaCBhbGxvd3MKCSAgZm9yIHNwYXJzZSAoYW5kIGhlbmNlIGV4dHJlbWVseSBsYXJnZSkgZmlsZXN5c3RlbSB0ZXN0aW5nLgoKeGZzcHJvZ3MtMi41LjYgKDE5IEF1Z3VzdCAyMDAzKQoJLSBGaXggYSBta2ZzIHByb2JsZW0gd2hlcmUgaXQgY291bGQgZXhpdCBpbmFwcHJvcHJpYXRlbHkgd2hlbgoJICBhIGxhcmdlIGRhdGEgdm9sdW1lIHN0cmlwZSB1bml0IHdhcyBlaXRoZXIgc3BlY2lmaWVkIG9uIHRoZQoJICBjb21tYW5kIGxpbmUgb3IgdmlhIHF1ZXJ5aW5nIHRoZSB1bmRlcmx5aW5nIHZvbHVtZSBtYW5hZ2VyLgoKeGZzcHJvZ3MtMi41LjUgKDA3IEF1Z3VzdCAyMDAzKQoJLSBVcGRhdGUgeGZzX2lvIGNvbW1hbmQgdG8gYWxsb3cgcmVhZGluZyBmcm9tIG5vbi1YRlMgZmlsZXMuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcywgbGlieGxvZyBhbmQgaGVhZGVycy4KCS0gVXBkYXRlIHhmc19kYiBhbmQgeGZzX2xvZ3ByaW50IGNvbW1hbmRzIHRvIHByaW50IG5ldyBpbm9kZQoJICBmbHVzaCBpdGVyYXRpb24gZmllbGQuCgp4ZnNwcm9ncy0yLjUuNCAoMjMgSnVseSAyMDAzKQoJLSBVcGRhdGUgeGZzX2lvIGJtYXAgY29tbWFuZCB0byByZXBvcnQgdW53cml0dGVuIGV4dGVudCBmbGFnCgkgIGlmIGl0IGlzIHNldCBvbiBhbiBleHRlbnQgKGluIHZlcmJvc2UgbW9kZSBvbmx5KS4KCS0gSW50cm9kdWNpbmcgeGZzX2NvcHkuCgktIEZpeCBzaGVsbCBxdW90aW5nIHByb2JsZW0gaW4geGZzX2JtYXAgc2NyaXB0LgoKeGZzcHJvZ3MtMi41LjMgKDA3IEp1bHkgMjAwMykKCS0gVXBkYXRlIHhmc19pbyBjb21tYW5kcyB3aGljaCB0YWtlIHVzZXIgaW5wdXQgaW4gdGVybXMgb2YKCSAgYnl0ZSBjb3VudHMgdG8gbm93IGFsc28gYWxsb3cgdW5pdCBwcmVmaXhlcyBsaWtlIG1rZnMueGZzLgoJLSBUd2VhayBidWlsZCB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZWJ1aWxkcyBvZiBpbnRlcm5hdGlvbmFsCgkgIGxhbmd1YWdlIGZpbGVzIChpZiBwcmVzZW50KSwgc3VnZ2VzdGVkIGJ5IFN0ZXZlIExhbmdhc2VrLgoJLSBGaXggdXNhZ2UgbWVzc2FnZSBpbiBta2ZzLnhmcywgaXQgd2FzIG91dCBvZiBkYXRlLgoJLSBGaXggc29tZSBmaWxlc3lzdGVtIHR5cGUgZGV0ZWN0aW9uIGNvZGUsIGluIHBhcnRpY3VsYXIgdGhlCgkgIGJmcyBwcm9iZSBjb2RlIHdhcyBicm9rZW4gZm9yIDY0IGJpdCBtYWNoaW5lcyAoZm91bmQgYnkgUUEKCSAgdGVzdCAwMzIpIGFuZCB0aGUgaGZzIGNvZGUgd2FzIGJyb2tlbiB0b28gKG9yaWdpbmFsbHkgZm91bmQKCSAgYnkgRXRoYW4gQmVuc29uKS4gIFdlIG5vdyBhbHNvIGRldGVjdCBoZnMrIGZpbGVzeXN0ZW1zLgoKeGZzcHJvZ3MtMi41LjIgKDI1IEp1bmUgMjAwMykKCS0gRml4IHh2bSBzdHJpcGUgZGV0ZWN0aW9uIGluIGxpYmRpc2sgLSBwYXNzIGNvcnJlY3RseQoJICBzaXplZCBzdHJ1Y3R1cmVzIHRvIHh2bSBpb2N0bHMuCgktIEFkZCBwdGhyZWFkIGxpYnJhcnkgY2hlY2tzIGludG8gY29uZmlndXJlIGFuZCBidWlsZCBzY3JpcHRzCgkgIGZvciB3b3JrLWluLXByb2dyZXNzIG9uIHhmc19yZXBhaXIgYW5kIHhmc19jb3B5LgoJLSBGaXggbWlzc2luZyBpbml0aWFsaXNhdGlvbiBvZiBzdHJpcGUgdW5pdC93aWR0aCBhbGlnbm1lbnQKCSAgaW5mb3JtYXRpb24gZHVyaW5nIGxpYnhmc19tb3VudC4KCS0gRml4IGJvdGNoZWQgcmVwYWlyIHR5cGVjYXN0IGZvciBtdWx0aS10ZXJhYnl0ZSBmaWxlc3lzdGVtcy4KCnhmc3Byb2dzLTIuNS4xICgyMyBKdW5lIDIwMDMpCgktIEZpeCBsaWJkaXNrIGRldmljZSBkcml2ZXIgKHZvbHVtZSBtYW5hZ2VycykgZGV0ZWN0aW9uIGNvZGUKCSAgdXNlZCBieSBta2ZzLCBzbyB0aGF0IGRyaXZlcnMgd2l0aCBtdWx0aXBsZSBtYWpvcnMgYXJlIG5vdAoJICBpbmNvcnJlY3RseSBwcm9jZXNzZWQuCgp4ZnNwcm9ncy0yLjUuMCAoMTggSnVuZSAyMDAzKQoJLSBGaXggbGliZGlzayAoYW5kIGhlbmNlIG1rZnMpIGNvZGUgd2hpY2ggd2FybnMgb24gTUQgZGV2aWNlcwoJICB3aXRoIHRoZSBjbGVhbiBmbGFnIG5vdCBzZXQsIGFwcGFyZW50bHkgdGhpcyBpcyBub3Qgc28gd2lzZS4KCS0gRml4IGxpYnhmc19kZXZpY2VfemVybyB0byB3b3JrIHdpdGggc21hbGxlci10aGFuLXJlcXVlc3RlZAoJICB3cml0ZSByZXR1cm4gdmFsdWVzLgoJLSBGaXggZXJyb3IgaW4geGZzX2lvIHB3cml0ZSBjb2RlIHdpdGggbGFyZ2UgcmVxdWVzdCBzaXplcy4KCS0gRml4IHJvdW5kaW5nLWRvd24taW5wdXQgcHJvYmxlbXMgaW4gc2V2ZXJhbCB4ZnNfaW8gY29tbWFuZHMuCgktIENoYW5nZWQgbWtmcy54ZnMgZGVmYXVsdCBsb2cgc2l6ZSBzY2FsaW5nIGFsZ29yaXRobSBzbGlnaHRseSwKCSAgdG8gY3JlYXRlIGxhcmdlciBsb2dzIGF0IHNtYWxsZXIgZmlsZXN5c3RlbSBzaXplcyBieSBkZWZhdWx0CgkgICh0aGFua3MgdG8gQW5kaSBLbGVlbiBmb3IgdGhlIHBhdGNoKS4KCS0gRW5hYmxlIHN1cHBvcnQgZm9yIHNlY3RvciBzaXplcyBsYXJnZXIgdGhhbiA1MTIgYnl0ZXMuCgp4ZnNwcm9ncy0yLjQuMTIgKDAyIEp1bmUgMjAwMykKCS0gRml4IHhmc19sb2dwcmludCBoYW5kbGluZyBvZiBhbnkgdmVyc2lvbiAyIGxvZyBkZXZpY2UuCgktIFJlbW92ZSBjYWxscyB0byBleGl0IGluIGxpYmhhbmRsZSwgcHJvcG9nYXRlIGVycm9ycyB0bwoJICBjYWxsZXIsIGFuZCBidW1wZWQgbGliaGFuZGxlIHZlcnNpb24gZnJvbSAxLjAuMSB0byAxLjAuMi4KCnhmc3Byb2dzLTIuNC4xMSAoMzAgTWF5IDIwMDMpCgktIEV4dHJhY3QgZGV2aWNlIHNlY3RvciBzaXplIGF0IG1rZnMgdGltZSBhbmQgaXNzdWUgd2FybmluZ3MKCSAgaWYgdGhlIHJlcXVlc3RlZCBmaWxlc3lzdGVtIHNlY3RvciBzaXplIGlzIHRvbyBzbWFsbC4KCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlieGZzLCBsaWJ4bG9nIGFuZCBoZWFkZXJzLgoJLSBTa2lwIHJlYWx0aW1lIGluaXRpYWxpc2F0aW9uIGluIGxpYnhmcyBtb3VudCBwYXRoIGlmIHRoZQoJICBjYWxsZXIgaXMgeGZzX2RiLCBvdGhlcndpc2Ugd2UgZ2V0IG5vbnNlbnNlIHdhcm5pbmdzLgoJLSBVcGRhdGUgeGZzX2lvIHdpdGggYSBjb3VwbGUgb2YgYWRkaXRpb25hbCBjb21tYW5kcy4KCS0gRml4IHhmc19sb2dwcmludCBoYW5kbGluZyBvZiBjb3JydXB0IHYyIGxvZyBkZXZpY2VzLgoKeGZzcHJvZ3MtMi40LjEwICgxMiBNYXkgMjAwMykKCS0gRml4IGEgYnVnIGluIG1rZnMgLSBjcmVhdGluZyB2ZXJzaW9uIDIgbG9ncywgYW4gaW5jb3JyZWN0CgkgIHN0cmlwZSB1bml0IHZhbHVlIHdhcyBiZWluZyBwYXNzZWQgdG8gbGlieGZzX2NsZWFyX2xvZy4KCSAgQWxsIHJlY2VudCB2ZXJzaW9ucyBvZiB4ZnNfcmVwYWlyIHdpbGwgZml4IHRoaXMsIGhvd2V2ZXIsCgkgIGJlY2F1c2UgeGZzX3JlcGFpciB1c2VzIHRoZSBjb3JyZWN0IHN0cmlwZSB1bml0IHZhbHVlLgoJLSBGaXggYSBidWcgaW4geGZzX2xvZ3ByaW50LCB3aGVuIGR1bXBpbmcgYSBjb3JydXB0IGxvZy4KCS0gRnJlZUJTRCB1cGRhdGVzIGZyb20gQWxleGFuZGVyIEthYmFldi4KCS0gTGFyZ2Ugc2VjdG9yIHNpemUgdXBkYXRlcyBmb3IgbWtmcyAoZGlzYWJsZWQgYXQgdGhlIG1vbWVudCkuCgktIExhcmdlIHNlY3RvciBzaXplIGZpeGVzIGZvciB4ZnNfcmVwYWlyLgoJLSBTeW5jIHVwIHdpdGggYWViJ3MgbW91bnQgc291cmNlIGZvciBmaWxlc3lzdGVtIGRldGVjdGlvbi4KCnhmc3Byb2dzLTIuNC45ICgwMyBNYXkgMjAwMykKCS0gQWxsb3cgeGZzX3JlcGFpciB0byBydW4gb24gcmVhZC1vbmx5IGZpbGVzeXN0ZW1zLgoKeGZzcHJvZ3MtMi40LjggKDI2IEFwcmlsIDIwMDMpCgktIFJld29yayBjb25maWd1cmUuaW4gdG8gbWFrZSB1c2Ugb2Ygc2hhcmVkIG1hY3Jvcy4KCS0gRml4IHVwICNpbmNsdWRlIGxpbmVzIHRvIGFsbG93IGNvbXBpbGF0aW9uIG9mIHNvdXJjZXMKCSAgd2l0aCBpbnN0YWxsZWQgaGVhZGVycyByYXRoZXIgdGhhbiBsb2NhbCBoZWFkZXJzLgoJLSBGaXggYm90Y2hlcyBpbiB4ZnNfYm1hcCBzaGVsbCBzY3JpcHQgd2hpY2ggcHJldmVudGVkIGFueQoJICBhcmd1bWVudHMgYmVpbmcgcGFzc2VkIG9uIHRvIHhmc19pbyAoZnJvbSBKYW4gRGVyZmluYWspLgoKeGZzcHJvZ3MtMi40LjcgKDIyIEFwcmlsIDIwMDMpCgktIENsYXJpZnkgWEZTIHN5c3RlbSBjYWxsIGludGVyZmFjZXMsIGZpeCB1cCBkb2N1bWVudGF0aW9uLgoKeGZzcHJvZ3MtMi40LjYgKDExIEFwcmlsIDIwMDMpCgktIEZpeCBhIGJ1ZyBpbiBkZXRlY3Rpb24gb2YgImNsZWFuIiBhbmQgImVycm9yIiBzdGF0ZXMgd2l0aAoJICBNRCBkZXZpY2VzLgoJLSBGaXggY29uZmlndXJlIHRlc3RzIHRoYXQgdXNlZCBBQ19QQVRIX1BST0cgaW5jb3JyZWN0bHkuCgktIEFkZCBzdXBwb3J0IGZvciBsaWJlZGl0LCBpZiBsaWJyZWFkbGluZSBpcyB1bmF2YWlsYWJsZS4KCS0gRml4IHRoZSBsaWJ4ZnMgYnVpbGQgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybXMuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcyBhbmQgaGVhZGVycy4KCnhmc3Byb2dzLTIuNC41ICgwMyBBcHJpbCAyMDAzKQoJLSBTeW5jIHVwIHhmc19pbm9kZS5jIGluIGxpYnhmcy4KCS0gSW1wbGVtZW50IGdldF91bmFsaWduZWQvcHV0X3VuYWxpZ25lZCBpbiBsaWJ4ZnMuCgp4ZnNwcm9ncy0yLjQuNCAoMzAgTWFyY2ggMjAwMykKCS0gQ29ycmVjdCBkaXNwbGF5IG9mIGltYXhwY3QgaW4gbWtmcy54ZnMgb3V0cHV0LgoJLSBQb3J0YWJpbGl0eSBjaGFuZ2VzOyBpbmNsdWRpbmcgc29tZSBjb2RlIHRvIHN1cHBvcnQgdXNlCgkgIG9mIHNldmVyYWwgdG9vbHMgb24gTWFjIE9TIFggKGZvciBSdXNzZWxsKSwgZGl0dG8gZm9yCgkgIEZyZWVCU0QgKGZyb20gUnVzc2VsbCk7IGFsc28gZGlkIGEgc2ltcGxpc3RpYyBiYWNrcG9ydAoJICB0byBJUklYIChmb3IgbWUpLCBzbyB0aGF0IEkgY2FuIHJ1biBwdXJpZnkgb24gc29tZSBvZgoJICB0aGUgdG9vbHMuCgktIFNlZSBkb2MvSU5TVEFMTCBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcyBhbmQgaGVhZGVycy4KCS0gRml4IHVwIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgbGlieGZzIG9uIGJpZyBlbmRpYW4KCSAgcGxhdGZvcm1zLgoJLSBGaXggYSBjb25maWd1cmUuaW4gYm90Y2ggd2hpY2ggcmVzdWx0ZWQgaW4gbGlicmVhZGxpbmUKCSAgYWx3YXlzIGJlaW5nIHVzZWQgZXZlbiB3aGVuIGl0IHdhcyBub3QgYXNrZWQgZm9yLgoJLSBGaXhlZCB0aGUgY29uZmlndXJlLmluIHNjcmlwdCBzbyB0aGF0IGlmIGdldHRleHQgZGlzYWJsZWQsCgkgIHdlIGRvbid0IGNoZWNrIGZvciB0aGUgZ2V0dGV4dCB0b29scyAoYW5kIG5vIGxvbmdlciBmYWlscwoJICBpZiB0aGV5IHdlcmUgbm90IGZvdW5kKS4KCS0gQWRkZWQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCB1c2VyIGFuZC9vciBncm91cAoJICB0byBpbnN0YWxsIGFzIChwcmV2aW91c2x5LCBhbmQgc3RpbGwgYnkgZGVmYXVsdCwgcm9vdC9yb290CgkgIHdlcmUgYWx3YXlzIHVzZWQgaGVyZSkuCgp4ZnNwcm9ncy0yLjQuMyAoMjcgTWFyY2ggMjAwMykKCS0gQ2xlYW51cHMgdG8gdGhlIGJ1aWxkIHByb2Nlc3MsIGluIHBhcnRpY3VsYXIgdGhlIGF1dG9tYXRpYwoJICBycG0gcGFja2FnZSBnZW5lcmF0aW9uIE1ha2VmaWxlIGFuZCBzcGVjIGZpbGUgdGVtcGxhdGUuCgktIE1ha2Vwa2dzIHNjcmlwdCBjYW4gbm93IHByb3BhZ2F0ZSBmYWlsdXJlcyBiYWNrIGZyb20gbWFrZS4KCS0gTWlub3IgY29uZmlndXJlLmluIHVwZGF0ZSB0byBkZWFsIHdpdGggcmVhZGxpbmUgbGlicmFyaWVzCgkgIHdoaWNoIGhhdmUgbm90IGJlZW4gbGlua2VkIGNvcnJlY3RseS4KCnhmc3Byb2dzLTIuNC4yICgyNSBNYXJjaCAyMDAzKQoJLSBBZGRlZCB0aGUgeGZzX2lvKDgpIGNvbW1hbmQsIGFuIHhmc19kYig4KSBhbGlrZSBjb21tYW5kCgkgIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcgdGhlIFhGUyBmaWxlIElPIHBhdGguCgktIEFkZGVkIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kgb24gdGhlIEdOVSByZWFkbGluZSBsaWJyYXJ5CgkgIHdoaWNoIGlzICJvZmYiIGJ5IGRlZmF1bHQgYW5kIGVuYWJsZWQgd2l0aCB0aGUgY29uZmlndXJlCgkgIG9wdGlvbiAtLWVuYWJsZS1yZWFkbGluZT15ZXM7IGl0IGFmZmVjdHMgdGhlIGludGVyYWN0aXZlCgkgIHRvb2xzIG9ubHkgKHhmc19kYiBhbmQgbm93IHhmc19pbykuCgktIEltcGxlbWVudGVkIHhmc19ibWFwKDgpIGFzIGEgc2hlbGwgc2NyaXB0IHdyYXBwZXIuCgktIERvY3VtZW50ZWQgdGhlIG1rZnMueGZzIC1mLCAtbGxvZ2RldiBhbmQgLXJydGRldiBvcHRpb25zLgoJLSBDb3JyZWN0ZWQgc2l6ZSBjaGVjayBmb3IgcmVhbHRpbWUgc3VtbWFyeSBpbm9kZSAobm90IHRoZQoJICBzYW1lIGFzIHRoZSByZWFsdGltZSBiaXRtYXAgaW5vZGUpIGluIHhmc19yZXBhaXIuCgp4ZnNwcm9ncy0yLjQuMSAoMTggTWFyY2ggMjAwMykKCS0gRml4IGVycm9yIHJlcG9ydGluZyB3aGVuIHplcm9pbmcgcGFydHMgb2YgdGhlIHJlYWx0aW1lCgkgIGRldmljZSBpbiBwaGFzZTYgb2YgeGZzX3JlcGFpci4KCS0gQWRkIGEgbWtmcy54ZnMgY2hlY2sgZm9yIE1hYyBwYXJ0aXRpb25zIGJlZm9yZSB3cml0aW5nCgkgIHRvIHRoZSBkZXZpY2UuCgktIFRoYW5rcyB0byBFdGhhbiBCZW5zb24gPGVyYmVuc29uQGFsYXNrYS5uZXQ+IGZvciB0aGlzLgoJLSBNaW5vciBmaXggdG8gdGhlIHhmc19ibWFwKDgpIG1hbiBwYWdlLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMgYW5kIGhlYWRlcnMuCgp4ZnNwcm9ncy0yLjQuMCAoMDYgTWFyY2ggMjAwMykKCS0gRW5hYmxlIHVud3JpdHRlbiBleHRlbnRzIGJ5IGRlZmF1bHQgaW4gbWtmcy54ZnMuCgktIEFkZCBhIGNvbW1hbmQgdG8geGZzX2RiIHRvIGVuYWJsZSB1bndyaXR0ZW4gZXh0ZW50cy4KCS0gQWRkIGFuIG9wdGlvbiB0byB4ZnNfYWRtaW4gdG8gdXNlIHRoZSBhYm92ZSBjb21tYW5kLgoJLSBBZGQgY29tbWFuZCB0byB4ZnNfZGIgdG8gcHJpbnQgb3V0IHRoZSBjdXJyZW50bHkgZW5hYmxlZAoJICBmZWF0dXJlIGJpdHMgYW5kIHZlcnNpb24gbnVtYmVyLgoJLSBNYWtlIHhmc19kYiBzbGlnaHRseSBtb3JlIHJvYnVzdCBpbiB0aGUgcHJlc2Vuc2Ugb2YgYmFkCgkgIG9uZGlzayBkYXRhLgoJLSBSYXRpb25hbGlzZSBzb21lIHhmc19kYiBzdXBlcmJsb2NrLXJlbGF0ZWQgY29kZSBhbmQgdGhlCgkgIHV1aWQgY29tbWFuZCBub3cgY2hlY2tzIGZvciBhIGRpcnR5IGxvZyBiZWZvcmUgemVyb2luZy4KCS0gQWRkIHN0cmlwZSBhbGlnbm1lbnQgaW5mb3JtYXRpb24gdG8geGZzX2JtYXAuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnhmcyBhbmQgaGVhZGVycy4KCS0gVXBkYXRlIG1hbiBwYWdlcywgZml4IGEgdHlwbyBpbiB0aGUgeGZzX2FkbWluIG1hbiBwYWdlCgkgIHJlbGF0aW5nIHRvIHRoZSBVVUlEIG9wdGlvbnMuCgp4ZnNwcm9ncy0yLjMuMTEgKDE4IEZlYnJ1YXJ5IDIwMDMpCgktIE1pc3NlZCBhIGJ1aWxkIGRlcGVuZGVuY3kgZm9yIHRoZSBEZWJpYW4gYnVpbGQgcHJvY2Vzcy4KCnhmc3Byb2dzLTIuMy4xMCAoMTcgRmVicnVhcnkgMjAwMykKCS0gRml4IGEgZGl2aWRlLWJ5LXplcm8gZXJyb3IgaW4gbWtmcyB3aXRoIGNlcnRhaW4gc3RyaXBlIHVuaXQKCSAgYW5kL29yIHdpZHRoIG9wdGlvbnMgc3BlY2lmaWVkLgoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ4ZnMgYW5kIGhlYWRlcnMuCgp4ZnNwcm9ncy0yLjMuOSAoMzEgRGVjZW1iZXIgMjAwMikKCS0gQWRkaXRpb25hbCB4ZnNfcmVwYWlyIGNoZWNrIGluIHYyIGRpcmVjdG9yeSBoYW5kbGluZyBmb3IgYmxrcwoJICB3aXRoIG5vIGRhdGEgZW50cmllcyAobWVyZ2VkIGZyb20gSVJJWCksIGluY2x1ZGVzIHNldmVyYWwKCSAgaGFuZHkgY29tbWVudHMgc3ByaW5rbGVkIHRocm91Z2hvdXQgdGhpcyB2MiBkaXIgY29kZS4KCS0gRml4IGFuIGVuZGlhbiBidWcgaW4gdGhlIHNhbWUgYXJlYSBvZiBjb2RlICh2MiBkaXJzLCBwaGFzZSA2LAoJICBsb25nZm9ybV9kaXIyX3JlYnVpbGRfc2V0dXApCgktIHhmc19yZXBhaXIgaGFzIGFkZGl0aW9uYWwgY2hlY2tzIGZvciBiYWQgc2VjdG9yIHZhbHVlcyBub3cuCgktIHhmc19yZXBhaXIgSTE4TiBjaGFuZ2VzLgoJLSBGaXggZGV0ZWN0aW9uIG9mIHJlYWRvbmx5IG1vdW50cywgc2xpZ2h0bHkgYm90Y2hlZCBpbiAyLjMuOC4KCS0gRml4IHJlZmVyZW5jZXMgdG8gcmVtb3ZlZCBpb2N0bCBjb21tYW5kcyBvbiB4ZnMoNSkgbWFuIHBhZ2UuCgp4ZnNwcm9ncy0yLjMuOCAoMTggRGVjZW1iZXIgMjAwMikKCS0gSW5pdGlhbCBzdXBwb3J0IGZvciBJMThOIChzdGlsbCBtb3JlIHRvIGRvIGhlcmUpLgoJLSBJbml0aWFsIGNoYW5nZXMgZm9yIGZpbGVzeXN0ZW1zIHdpdGggZ3JlYXRlciB0aGFuIDUxMiBieXRlCgkgIHNlY3RvciBzaXplcyAoc3RpbGwgcGxlbnR5IG1vcmUgdG8gZG8gaGVyZSB0b28pLgoJLSBUaWR5IHVwIGxpYnhmcyBmdW5jdGlvbnMgd2hpY2ggdGFrZSBhICJmbGFncyIgYXJndW1lbnQuCgktIFN5bmMgdXAgdXNlci9rZXJuZWwgc291cmNlIGluIGxpYnt4ZnMseGxvZ30gYW5kIGhlYWRlcnMuCgktIEZpeGVkIGluY29ycmVjdCB1c2Ugb2YgWEZTX0ZTQl9UT19EQUREUiBtYWNybyBpbiB4ZnNfZGIncwoJICBmYWRkci5jOjpmYV9kaXJibG9jayByb3V0aW5lIC0gbm93IHVzZSBYRlNfRlNCX1RPX0JCIGhlcmUsCgkgIGFzIHNldF9jdXIoKSB0YWtlcyBiYXNpYyBibG9ja3MgYXMgaXRzIHRoaXJkIHBhcmFtZXRlci4KCS0gRml4ZWQgb2JzY3VyZSBpc3N1ZSBpbiBta2ZzIHdoZXJlIG9ubHkgdGhlIGZpcnN0IEFHIHdvdWxkCgkgIGdldCBpdHMgQUdGTCBmcmVlbGlzdCAiZml4ZWQiIC0gbm90IGNsZWFyIHRoaXMgY2F1c2VkIGFueQoJICBpc3N1ZXMgaW4gcHJhY3RpY2UgKG9uIExpbnV4IGl0J3MgYWx3YXlzIGJlZW4gdGhpcyB3YXksIHdlCgkgIG5vdyBtYXRjaCB1cCB3aXRoIElSSVggdGhvdWdoKS4KCS0gTWFkZSB4ZnNfZ3Jvd2ZzIGZpbGVzeXN0ZW0gZ2VvbWV0cnkgb3V0cHV0IG1hdGNoIHVwIHdpdGgKCSAgdGhhdCBkaXNwbGF5ZWQgYnkgbWtmcy54ZnMgKHhmc19ncm93ZnMgd2FzIG1pc3NpbmcgYSBjb21tYQoJICBiZWZvcmUgdGhlIGxvZyB2ZXJzaW9uIGZpZWxkKS4KCS0gRml4ZWQgYW4gaXNzdWUgaW4geGZzX3JlcGFpciB3aGVyZSBkYXRhIHBhc3QgdGhlIGVuZCBvZiB0aGUKCSAgdmFsaWQgc3VwZXJibG9jayBmaWVsZHMgd2FzIHNvbWV0aW1lcyBub3QgY2xlYXJlZCwgd2hlbiBpdAoJICByZWFsbHkgc2hvdWxkIGhhdmUgYmVlbiAoZHVlIHRvIGEgbGlieGZzIHByb2JsZW0pLgoJLSBTaGVsbCBzY3JpcHRzICh4ZnNfaW5mbywgeGZzX2NoZWNrLCBldGMpIG5vdyBhbHNvIHJlcG9ydAoJICB0aGUgeGZzcHJvZ3MgdmVyc2lvbiBudW1iZXIgdmlhIC1WLCBsaWtlIG90aGVyIGNvbW1hbmRzLgoKeGZzcHJvZ3MtMi4zLjcgKDE0IE5vdmVtYmVyIDIwMDIpCgktIEZpeCBhbiBlbmRpYW4gYnVnIGluIHhmc19kYiBmcmVlc3AgY29tbWFuZCB3aGVuIGRlc2NlbmRpbmcKCSAgaW50byBtdWx0aS1sZXZlbCBhZ2YgY250L2JubyBidHJlZXMuCgp4ZnNwcm9ncy0yLjMuNiAoMzEgT2N0b2JlciAyMDAyKQoJLSBTeW5jIHVwIHVzZXIva2VybmVsIHNvdXJjZSBpbiBsaWJ7eGZzLHhsb2d9IGFuZCBoZWFkZXJzLgoJLSBGaXggc2V2ZXJhbCB3YXJuaW5ncyBmcm9tIG5ld2VyICgzLjIpIHZlcnNpb25zIG9mIGdjYy4KCS0gTWlub3IgaGVhZGVyIGZpbGUgc2h1ZmZsaW5nLgoKeGZzcHJvZ3MtMi4zLjUgKDEwIE9jdG9iZXIgMjAwMikKCS0gU3luYyB1cCB1c2VyL2tlcm5lbCBzb3VyY2UgaW4gbGlie3hmcyx4bG9nfSBhbmQgaGVhZGVycy4KCS0gRml4IG1rZnMgKGxpYnhmcykgYnVnIHdoZW4gdXNpbmcgQkxLRkxTQlVGIGlvY3RsIC0gd2UgcGFzc2VkCgkgIGluIHRoZSBkZXZpY2UgbnVtYmVyIGluc3RlYWQgb2YgYSBmaWxlIGRlc2NyaXB0b3IgKGFuZCBFQkFERgoJICB3YXMgdGhlIGVuZCByZXN1bHQsIHdoaWNoIHdlIGlnbm9yZWQpLgoJLSBUaGFua3MgdG8gQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+IGZvciBmaXhpbmcgdGhpcy4KCnhmc3Byb2dzLTIuMy40ICgwNCBPY3RvYmVyIDIwMDIpCgktIEZpeCBzaXplIGNhbGN1bGF0aW9uIGJ1ZyBpbiB4ZnNfcmVwYWlyJ3MgbWVtb3J5IGFsbG9jYXRpb24sCgkgIHJlZHVjZXMgbWVtb3J5IHVzYWdlIGJ5IGEgZmFjdG9yIG9mIDQuCgp4ZnNwcm9ncy0yLjMuMyAoMTYgU2VwdGVtYmVyIDIwMDIpCgktIEZpeCBta2ZzIGJ1ZyB3aGVuIG9wdGltaXppbmcgQUcgc2l6ZSBvbiBzdHJpcGVkIGRldmljZXMsCgkgIEFTU0VSVChhZ2NvdW50ICE9IDApIHRyaXBwZWQgb24gc2luZ2xlLWFnIGZpbGVzeXN0ZW1zLgoKeGZzcHJvZ3MtMi4zLjIgKDEwIFNlcHRlbWJlciAyMDAyKQoJLSBVc2UgcHJlYWQvcHdyaXRlIGluc3RlYWQgb2YgbHNlZWsgKyByZWFkL3dyaXRlLgoKeGZzcHJvZ3MtMi4zLjEgKDAzIFNlcHRlbWJlciAyMDAyKQoJLSBBbGxvdyB4ZnNfZGIgdG8gYWNjZXB0IG5lZ2F0aXZlIG51bWJlcnMgd2hlbiB3cml0aW5nIHZhbHVlcy4KCnhmc3Byb2dzLTIuMy4wICgwMyBTZXB0ZW1iZXIgMjAwMikKCS0gU2V2ZXJhbCBjaGFuZ2VzIHRvIGdlb21ldHJ5IGlvY3RsIGNhbGxlcnMgd2hpY2ggd2lsbCBtYWtlCgkgIHRoZSB0b29scyB1c2VhYmxlIG9uIG9sZGVyIGtlcm5lbCB2ZXJzaW9ucyB0b28uCgktIE1haW5seSBhZmZlY3RzIHhmc19ibWFwIGFuZCB4ZnNfZ3Jvd2ZzLgoJLSBEbyBzb21lIGFkZGl0aW9uYWwgY2xlYW51cCBhZnRlciBhdXRvY29uZiBoYXMgcnVuLgoKeGZzcHJvZ3MtMi4yLjMgKDI4IEF1Z3VzdCAyMDAyKQoJLSBVcGRhdGUgbGliZGlzayBmb3IgYSBmZXcgb3RoZXIgZmlsZXN5c3RlbXMuCgktIEZpeCBjYWxsIHRvIGx2ZGlzcGxheSBvbiBMVk0gdm9sdW1lcyBzbyB0aGF0IGx2ZGlzcGxheQoJICBhbHdheXMgZ2V0cyB0aGUgZnVsbCwgcmVhbCBwYXRoIHRvIHRoZSB2b2x1bWUsIGFzIHJlcXVpcmVkLgoKeGZzcHJvZ3MtMi4yLjIgKDE5IEF1Z3VzdCAyMDAyKQoJLSBGaXggZW5kaWFuIGJ1ZyBpbiB4ZnNfZGIsIHdhcyBub3QgZmxpcHBpbmcgMTYtYml0IG51bWJlcnMuCgktIE1ha2UgeGZzX3JlcGFpciByZWNvZ25pemUgYSBOVUxMRlNJTk8gYW5kIHByaW50IHRoYXQgaW4KCSAgYWRkaXRpb24gdG8gIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IiBmb3IgZWFzeSByZWNvZ25pdGlvbi4KCS0gRml4IGZvcm1hdCBzdHJpbmcgdGhhdCB4ZnNfcmVwYWlyIHVzZXMgd2hlbiBmaXhpbmcgaW5vZGVzLAoJICBzbyB0aGF0IHRoZSBuZXcgaW5vZGUgbnVtYmVycyBhcmUgcHJpbnRlZCBjb3JyZWN0bHkuCgp4ZnNwcm9ncy0yLjIuMSAoMDkgQXVndXN0IDIwMDIpCgktIEZpeCBidWdsZXQgaW4gbGliZGlzayBnZXRfZHJpdmVyX2Jsb2NrX21ham9yKCkgcm91dGluZSB3aGljaAoJICB3b3VsZCByZXN1bHQgaW4gaW5jb3JyZWN0IG1ham9ycyBiZWluZyByZXR1cm5lZCBmb3Igbm90LWZvdW5kCgkgIGRyaXZlcnMuCgktIEZpeCBwcm9ibGVtIGluIGluc3RhbGwgcHJvY2VzcyB3aXRoIG5ld2VyIGF1dG9jb25mIHZlcnNpb25zLgoKeGZzcHJvZ3MtMi4yLjAgKDA4IEF1Z3VzdCAyMDAyKQoJLSBta2ZzLnhmcyBkZWZhdWx0cyB0byBhIGJsb2Nrc2l6ZSBvZiA0MDk2IGJ5dGVzLCBhbmQgbm8gbG9uZ2VyCgkgIHVzZXMgZ2V0cGFnZXNpemUoMikgdG8gZHluYW1pY2FsbHkgY29uZmlndXJlIHRoZSBkZWZhdWx0IHNpemUuCgktIEFkZCBFVk1TIHN0cmlwZSB1bml0L3dpZHRoIGF1dG8tZGV0ZWN0aW9uIHN1cHBvcnQgaW4gbWtmcy54ZnMKCSAgKHBhdGNoIGZyb20gTHVjaWFubyBDaGF2ZXopLgoJLSBTeW5jIHVzZXIva2VybmVsIGhlYWRlcnMgKGFyY2guaCBpbmNvcnBvcmF0ZWQgaW50byB4ZnNfYXJjaC5oLAoJICBhbmQgc2V2ZXJhbCBvdGhlciBtaW5vciBjaGFuZ2VzKS4KCnhmc3Byb2dzLTIuMS4yICgxNyBKdWx5IDIwMDIpCgktIEZpeCB1cCBsb2cgc3RyaXBlIHVuaXQgc3BlY2lmaWNhdGlvbiBvcHRpb25zLCBhbmQgdXBkYXRlCgkgIG1hbiBwYWdlLiAgQWxzbyBmaXggc3VmZml4IGhhbmRsaW5nIGZvciBkYXRhIHN1L3N3IG9wdGlvbnMKCSAgKGRpc2FsbG93IHVuaXQgc3VmZml4ZXMgb24gLWQgc3VuaXQsc3dpZHRoLHN3IGFuZCAtbCBzdW5pdCkuCgkgIEFkZCAicyIgKDUxMi1ieXRlIHNlY3RvcnMpIGFzIHZhbGlkIHN1ZmZpeC4KCS0gQXV0b21hdGljYWxseSBzZWxlY3QgdjIgbG9ncyBpZiBhIGxvZyBzdHJpcGUgdW5pdCBpcwoJICBzcGVjaWZpZWQuCgp4ZnNwcm9ncy0yLjEuMSAoMDQgSnVseSAyMDAyKQoJLSBCdWlsZCBpbmZyYXN0cnVjdHVyZSB1cGRhdGVzIHNvIHRoYXQgY29uZmlndXJlIG9wdGlvbnMgY2FuIGJlCgkgIHVzZWQgdG8gc3BlY2lmeSBwYXRocyByYXRoZXIgdGhhbiBzZW1pLWhhcmQtY29kZWQgcGF0aCBuYW1lcwoJICBjb250cm9sbGVkIGJ5IHRoZSBST09UL1JPT1RfUFJFRklYIGVudmlyb25tZW50IHZhcmlhYmxlczsgZWcuCgkgIG5vdyBhbGxvd3MgL2xpYjY0IGFuZCAvbGliMzIKCnhmc3Byb2dzLTIuMS4wICgxNCBKdW5lIDIwMDIpCgktIFN1cHBvcnQgZm9yIFhGUyB2ZXJzaW9uIDIgbG9nIGZvcm1hdC4KCS0gRml4IGZvciB4ZnNfcmVwYWlyIG1hbmdsaW5nIGk4Y291bnQgZm9yIGRpcjJfc2YgZGlyZWN0b3JpZXMKCS0gTWlub3IgbWtmcy54ZnMgbWFuIHBhZ2UgdXBkYXRlIGZvciBibG9ja3NpemUgbGltaXRzIG9uIExpbnV4CgktIHhmc19jcmVkLmggc3BsaXQgaW50byB4ZnNfYWNsLmgsIHhmc19jYXAuaCBhbmQgeGZzX21hYy5oCgktIEZpeCB0eXBvIGluIG1rZnMgcmVhbHRpbWUgc3VtbWFyeSBpbm9kZSBhbGxvYyBmYWlsdXJlIG1lc3NhZ2UKCnhmc3Byb2dzLTIuMC42ICgzMCBNYXkgMjAwMikKCS0gRml4IGVycm9yIHJldHVybnMgZnJvbSBsb2cgcmVjb3ZlcnkgKGFmZmVjdHMgeGZzX3JlcGFpcikuCgktIEZpeCB0aGUgd2F5IG1rZnMueGZzIHJvdW5kIGRvd25zIHRoZSBkZXZpY2Ugd2hlbiB0aGUgbGFzdAoJICBBRyBpcyBzbWFsbGVyIHRoYW4gdGhlIG1pbmltdW0gQUcgc2l6ZS4KCS0gRml4IGJ1ZyBpbiB4ZnNfcmVwYWlyIGRhX3dyaXRlKCkgcm91dGluZSwgd2hpY2ggYWZmZWN0cwoJICBmaWxlc3lzdGVtcyB3aGVyZSB0aGUgZGF0YSBibG9ja3NpemUgIT0gbmFtaW5nIGJsb2Nrc2l6ZQoJICAoc2VlIHhmc19pbmZvIG91dHB1dCkuCgktIEZpeCBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiB4ZnNfcmVwYWlyIGNvZGUgZm9yIGNoZWNraW5nCgkgIHZlcnNpb24gMSBidHJlZS1mb3JtYXQgZGlyZWN0b3JpZXMuCgktIEFkZCBjaGVja3Mgb2YgdGhlIEFDTCBwZXJtaXNzaW9ucyBmaWVsZCBpbnRvIHhmc19yZXBhaXIuCgp4ZnNwcm9ncy0yLjAuNSAoMDIgTWF5IDIwMDIpCgktIFNpemUgQUdzIHNvIHRoYXQgdGhleSBkbyBub3QgYWx3YXlzIHN0YXJ0IG9uIHRoZSBzYW1lCgkgIHBhcnQgb2YgYSBzdHJpcGVkIGRpc2sKCS0gRml4IGFuIG9mZi1ieS1vbmUgZXJyb3Igb24gcm91bmRpbmcgZG93biBhbiBBRyB0aGF0IGlzCgkgIHRvbyBzbWFsbCB0byBiZSBhbiBBRwoJLSBEb24ndCBhdXRvLWdyb3cgdGhlIGxvZyB0byBiZSBsYXJnZXIgdGhhbiBhbiBBRwoJLSBDaGFuZ2UgdGhlIGVycm9yIHBoaWxvc29waHkgZm9yIC1kIHN1PSxzdz0gYXdheSBmcm9tIGZvcmNpbmcKCSAgdGhlIFhGUyBzdHJpcGUgc2l6ZSB0byBtYXRjaCB0aGUgdm9sdW1lIG1hbmFnZXIgc3RyaXBlIHNpemUKCSAgYW5kIGluc3RlYWQgYWNjZXB0LCB3aXRoIGEgd2FybmluZywgdGhlIHN0cmlwZSB1bml0ICYgd2lkdGgKCSAgc3VwcGxpZWQgb24gdGhlIGNvbW1hbmRsaW5lLgoJLSBVcGRhdGUgeGZzX2dyb3dmcyBtYW4gcGFnZQoJLSBEb24ndCBidWlsZCBsaWJ4bG9nLmEgd2l0aCBERUJVRyBlbmFibGVkCgktIHhmc19kYiBmaXhlcyBmcm9tIEFTQU5PIE1hc2FoaXJvIGF0IE5FQwoKeGZzcHJvZ3MtMi4wLjQgKDE3IEFwcmlsIDIwMDIpCgktIE1pbm9yIHVwZGF0ZSBzeW5jJ2luZyB3aXRoIGtlcm5lbCBjaGFuZ2VzIChsZXNzIGVuZGlhbgoJICBzd2FiYmluZyBpbiBsaWJ4ZnMgY29kZSkKCnhmc3Byb2dzLTIuMC4zICgxMyBBcHJpbCAyMDAyKQoJLSBJbXBvcnRhbnQgYnVpbGQgc3lzdGVtIHVwZGF0ZSwgd2FzIGNhdXNpbmcgbGlieGZzIHRvIGJlCgkgIGJ1aWx0IGluY29ycmVjdGx5LCB3aGljaCBjYW4gY2F1c2UgeGZzX3JlcGFpciB0byBmYWlsIGJ5CgkgIHRyaXBwaW5nIGFzc2VydHMgaW4gYWRkaXRpb25hbCBsaWJ4ZnMgZGVidWcgY29kZS4KCnhmc3Byb2dzLTIuMC4yICgwNCBBcHJpbCAyMDAyKQoJLSBCdW1wZWQgdmVyc2lvbiBvZiBsaWJoYW5kbGUgdG8gbGliaGFuZGxlLnNvLjEuMC4xCgkgIFRoaXMgY2hhbmdlcyBvcGVuX2J5X2hhbmRsZSgpIGFuZCBmcmllbmRzIHNvIHRoYXQKCSAgT19MQVJHRUZJTEUgaXMgYWRkZWQgdG8gdGhlIG9wZW4gZmxhZ3MuCgkgIFRoaXMgYWxsb3dzIHhmc2R1bXAgdG8gZHVtcCBmaWxlcyBncmVhdGVyIHRoYW4KCSAgMl4zMS0xIGJ5dGVzIGluc3RlYWQgb2Ygbm90IGR1bXBpbmcgdGhlIGxhcmdlCgkgIGZpbGVzIGFuZCBnaXZpbmcgd2FybmluZyBtZXNzYWdlcy4KCnhmc3Byb2dzLTIuMC4xICgxMiBNYXJjaCAyMDAyKQoJLSBGYWxsIGJhY2sgdG8gQkxLR0VUU0laRSBpZiBCTEtHRVRTSVpFNjQgZmFpbHMKCS0gU3luYyB1c2VyL2tlcm5lbCBoZWFkZXJzIGFuZCBzaGFyZWQgY29kZQoKeGZzcHJvZ3MtMi4wLjAgKDI2IEZlYnJ1YXJ5IDIwMDIpCgktIE1ham9yIHJlbGVhc2UgdG8gY29pbmNpZGUgd2l0aCBzd2l0Y2ggdG8gbmV3IGV4dGVuZGVkCgkgIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGwgaW50ZXJmYWNlcwoJLSBidW1wZWQgdmVyc2lvbiBvZiBsaWJoYW5kbGUsIGFkZGVkIG5ldyBzeW1ib2xzIHRvIHVzZQoJICB0aGUgcmV3b3JrZWQgZXh0ZW5kZWQgYXR0cmlidXRlcyBoYW5kbGUgaW9jdGwgaW50ZXJmYWNlCgktIHhmc19yZXBhaXIgaW4gbm8tbW9kaWZ5IG1vZGUgb3BlbnMgdGhlIGZpbGVzeXN0ZW0gZGV2aWNlCgkgIHJlYWQtb25seSBub3cgKGZpeCBmcm9tIENocmlzIFBhc2NvZSkKCS0gc3luYyB1cCB3aXRoIHJlY2VudCAobWlub3IpIGNoYW5nZXMgdG8gc2hhcmVkIGtlcm5lbCBjb2RlCgktIHN3aXRjaCB0byB1c2luZyB0aGUgQkxLR0VUU0laRTY0IGlvY3RsIGluIGxpYnhmcywgaW5zdGVhZAoJICBvZiB0aGUgKHByZXZpb3VzbHkgYnVzdGVkKSBCTEtHRVRTSVpFIGlvY3RsCgp4ZnNwcm9ncy0xLjMuMTkgKDE1IEZlYnJ1YXJ5IDIwMDIpCgktIGZpeCB4ZnNfcmVwYWlyIG9wdGlvbiBwYXJzaW5nIGZvciBleHRlcm5hbCBsb2dzCgktIGFkZCB4ZnNfcmVwYWlyIG9wdGlvbiBwYXJzaW5nIGZvciByZWFsdGltZSBkZXZpY2UKCS0gZml4IHhmc19yZXBhaXIgdmVyc2lvbiAoLVYpIG9wdGlvbiAtIHNob3VsZCBub3QKCSAgcmVxdWlyZSBhbiBhcmd1bWVudAoJLSBhZGQgLVYgb3B0aW9uIHRvIHVzYWdlIHN0cmluZwoJLSBkb2N1bWVudCB2ZXJib3NlICgtdikgYW5kIC1yIG9wdGlvbnMgaW4gbWFucGFnZQoKeGZzcHJvZ3MtMS4zLjE4ICgxNyBKYW51YXJ5IDIwMDIpCgktIGZpeCBta2ZzLnhmcyBidWdsZXQgaW4gb3ZlcndyaXRpbmcgc2lnbmF0dXJlcyB3aGVuIHJ1bgoJICBvbiBhIHJlZ3VsYXIgZmlsZQoKeGZzcHJvZ3MtMS4zLjE3ICgxNCBKYW51YXJ5IDIwMDIpCgktIG1rZnMueGZzIG92ZXJ3cml0ZXMgcHJlLWV4aXN0aW5nIGZpbGVzeXN0ZW0sIHN3YXAsIG9yIG1kCgkgIGRyaXZlciBzaWduYXR1cmVzLgoJLSB4ZnNfcmVwYWlyIGZpeCB0byBwcmV2ZW50IGRvdWJsZSBpbnNlcnRpb24gaW50byB0aGUKCSAgdW5jZXJ0YWluX2lub2RlIEFWTCB0cmVlcyAoImF2bF9pbnNlcnQ6IGR1cGxpY2F0ZSByYW5nZSIpCgktIHhmc19yZXBhaXIgZml4IGlmIHRoZSBsb2cgaXMgY29ycnVwdGVkIGFuZCB3ZSBjYW4ndCBmaW5kCgkgIHRoZSBoZWFkLCBkb24ndCBleGl0IC0ganVzdCBwcm9jZWVkIG9uIHdpdGggemVyb2luZyBpdAoJLSB1c2Ugc25wcmludGYgaW5zdGVhZCBvZiBzcHJpbnRmIHRocm91Z2hvdXQKCnhmc3Byb2dzLTEuMy4xNiAoMTcgRGVjZW1iZXIgMjAwMSkKCS0gYWRkZWQgdGV4dCBkdW1wIHR5cGUgdG8geGZzX2RiIChta3ApCgktIHJlbW92ZWQgdXNlIG9mIGEgdGVtcG9yYXJ5IGZpbGUgaW4geGZzX2RiIHdoZW4gcHJvY2Vzc2luZwoJICBjb21tYW5kcyBvbiB0aGUgY29tbWFuZCBsaW5lIC0gYWxsb3dzIHhmc19jaGVjayB0byBiZSBydW4KCSAgb24gcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbXMKCnhmc3Byb2dzLTEuMy4xNSAoMTIgRGVjZW1iZXIgMjAwMSkKCS0gcmVlbmFibGUgdGhlIHVzZSBvZiB0aGUgQkxLQlNaU0VUIGlvY3RsLCBpdCdzIGJhYWFjawoJLSBzeW5jIHJlY2VudCBYRlMga2VybmVsIHNvdXJjZSBjaGFuZ2VzIGJhY2sgaW50byBsaWJ4ZnMKCnhmc3Byb2dzLTEuMy4xNCAoMDUgRGVjZW1iZXIgMjAwMSkKCS0gZml4IG1pbm9yIGRlYmlhbiBwYWNrYWdlIHZlcnNpb24gbnVtYmVyaW5nIGlzc3VlCgktIGFkZCBkb2N1bWVudGF0aW9uIGZvciB4ZnNfZGIoOCkgbGFiZWwvdXVpZCBjb21tYW5kcwoJLSBhdXRvbWF0aWMgaW5vZGUgc2l6aW5nIGNvZGUgaW4gbWtmcy54ZnMgaGFzIGJlZW4gcmVtb3ZlZAoJICAocmVzdHJpY3RpbmcgaW5vZGVzIHRvIDMyIGJpdHMpIC0gU3RldmUncyByZWNlbnQga2VybmVsCgkgIGNoYW5nZXMgbWVhbiB0aGlzIGlzIG5vIGxvbmdlciBhbiBpc3N1ZQoJLSBmaXggYnVnIGluIG1rZnMueGZzIHNpemUgY3Jvc3MtY2hlY2sgZm9yIHJlYWx0aW1lIGRldmljZQoKeGZzcHJvZ3MtMS4zLjEzICgyNSBPY3RvYmVyIDIwMDEpCgktIGZpeCBidWcgaW4gbWtmcyBmb3IgMVRieXRlICsgZmlsZXN5c3RlbXMKCS0gc3luYyB3aXRoIHJlY2VudCBrZXJuZWwgY2hhbmdlcyAtIHRoaXMgZG9lcyBub3QgYWZmZWN0CgkgIHVzZXJzcGFjZSAobGlieGZzKSwgYWxsIGFmZmVjdGVkIGNvZGUgaXMgcmVtb3ZlZCBieSBjcHAuCgp4ZnNwcm9ncy0xLjMuMTIgKDE3IE9jdG9iZXIgMjAwMSkKCS0gaW1wbGVtZW50IHRoZSAtZiAoZmlsZSkgb3B0aW9uIHRvIHhmc19sb2dwcmludAoJLSByZXdvcmsgdGhlIHhsb2cgY29kZSBpbnRvIGxpYnhsb2cgZm9yIGNvZGUgc2hhcmluZwoJLSB4ZnNfcmVwYWlyIG5vdyBkZXRlY3RzIGEgZGlydHkgbG9nIGFuZCwgd2l0aG91dCAtTCwgd2lsbAoJICBubyBsb25nZXIgYmxpbmRseSB6ZXJvIGl0ICh3aGljaCBwcmV2ZW50cyBhbnkgcmVjb3ZlcnkpCgp4ZnNwcm9ncy0xLjMuMTEgKDE3IE9jdG9iZXIgMjAwMSkKCS0gdGlkeSB1cCBzb21lIChiZW5pZ24pIGNvbXBpbGVyIHdhcm5pbmdzIGZyb20gbGlieGZzCgktIGZpeGVkIDY0LWJpdCBwb2ludGVyIGFsaWdubWVudCBpc3N1ZXMgaW4geGZzX2NoZWNrCgktIGZpeGVkIDY0LWJpdCBwb2ludGVyIGFsaWdubWVudCBpc3N1ZXMgaW4geGZzX3JlcGFpcgoJLSB2ZXJpZmllZCB0aGVzZSBvbiBJQTY0LCBhbHNvIHJlcG9ydGVkIHRvIGZpeCBzcGFyYyBpc3N1ZXMKCnhmc3Byb2dzLTEuMy4xMCAoMTIgT2N0b2JlciAyMDAxKQoJLSBzeW5jIHdpdGggWEZTIGtlcm5lbCBoZWFkZXIgY2hhbmdlcyBmb3IgRUFzIGJ5LWhhbmRsZQoJLSBwb3J0ZWQgeGZzX2ltYXAgY29tbWFuZCBmb3IgZHVtcGluZyB0aGUgaW5vZGUgbWFwCgp4ZnNwcm9ncy0xLjMuOSAoMDMgT2N0b2JlciAyMDAxKQoJLSBmaXggeGZzX3JlcGFpciBidWcgaW4gaGFuZGxpbmcgYSBjb3JydXB0IHJvb3QgZGlyZWN0b3J5CgkgIGlub2RlIHdpdGggbXVsdGlwbGUgImxvc3QrZm91bmQiIGVudHJpZXMKCS0gZml4IHhmc19sb2dwcmludCBidWcgaW4gc2Nhbm5pbmcgZm9yIGxvZyBoZWFkIGFuZCB0YWlsCgktIGVuc3VyZSB4ZnNfYm1hcCBkb2Vzbid0IGlzc3VlIFhGUyBpb2N0bHMgdG8gbm9uLVhGUyBmaWxlcwoJLSBudW1lcm91cyBtYW4gcGFnZSB1cGRhdGVzCgp4ZnNwcm9ncy0xLjMuOCAoMTkgU2VwdGVtYmVyIDIwMDEpCgktIHJld3JvdGUgdGhlIExWTSBzdXBwb3J0IHVzZWQgYnkgbWtmcy54ZnMgdG8gY2FsbCBleHRlcm5hbAoJICBsdmRpc3BsYXkgcHJvZ3JhbSB0byBnZXQgdm9sdW1lIGdlb21ldHJ5IChta3BAbWtwLm5ldCkKCS0gZml4IGJ1ZyBpbiBMVk0gZHJpdmVyIHdyYXBwZXIgd2hlcmUgaXQgd291bGQgbm90IGhhdmUgYmVlbgoJICB1c2VkIGF0IGFsbCwgZXZlciAoc2luY2UgMS4zLjApLCBkdWUgdG8gaWRpb3QgcHJvZ3JhbW1lcgoJICBlcnJvciAoKmJsdXNoKikgLS0gYWxzbyB0aGFua3MgdG8gbWtwIGZvciB0aGUgYnVnIGZpeAoKeGZzcHJvZ3MtMS4zLjcgKDEwIFNlcHRlbWJlciAyMDAxKQoJLSBlbmFibGUgcHJlYWxsb2NhdGlvbiBpbiB4ZnNfbWtmaWxlIFttaXNzZWQgZHVyaW5nIHBvcnQ/XQoJLSBmaXggeGZzX2RiIGNvcmUgZHVtcCB3aGVuIHJlcG9ydGluZyBmcmVlc3BhY2UKCS0gYWxsb3cgbGlidXVpZCB0byBiZSBsaW5rZWQgZHluYW1pY2FsbHkgaWYgZGVzaXJlZCAoYmFzZWQKCSAgb24gYSBwYXRjaCBmcm9tIENvbGluIFdhbHRlcnMgPHdhbHRlcnNAdmVyYnVtLm9yZz4sIGhlbHBzCgkgIHRoZSBmb2xrIHdvcmtpbmcgb24gdGhlIERlYmlhbiBpbnN0YWxsZXIgZm9yIFhGUykKCS0gbGljZW5zaW5nIGNoYW5nZSBmb3IgImxpYmhhbmRsZSIgKHdhcyBHUEwsIG5vdyBMR1BMLTIuMSkKCSAgYW5kIHNvbWUgcmVsYXRlZCBoZWFkZXIgZmlsZXMKCnhmc3Byb2dzLTEuMy42ICgzMSBBdWd1c3QgMjAwMSkKCS0gbWFrZSBta2ZzLnhmcyBhd2FyZSBvZiBnZW9tZXRyaWVzIHRoYXQgbWlnaHQgY2F1c2UKCSAgaW5vZGUgbnVtYmVycyB0byBleGNlZWQgMzIgc2lnbmlmaWNhbnQgYml0cy4KCS0gbWFrZSB4ZnNfZ3Jvd2ZzIHdhcm4gaWYgbmV3IGZpbGVzeXN0ZW0gd2lsbCBoYXZlCgkgIGlub2RlIG51bWJlcnMgdGhhdCBleGNlZWQgMzIgc2lnbmlmaWNhbnQgYml0cy4KCS0gZml4IGxvZ3ByaW50IGJ1ZyBpbiByZXBvcnRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcwoJICAodGhhbmtzIHRvIFRhbmcgTGluZ2JvIDx0YW5nbGJAc2luYS5jb20+IGZvciBmaXhpbmcgdGhpcykKCS0gZml4IG1rZnMueGZzIGNvcmUgZHVtcCB3aGVuIGF0dGVtcGluZyB0byBydW4gb24gZGV2aWNlcwoJICB3aGljaCBhcmUgdG9vIHNtYWxsIHRvIGhvbGQgYSB2YWxpZCBYRlMgZmlsZXN5c3RlbQoKeGZzcHJvZ3MtMS4zLjUgKDEzIEF1Z3VzdCAyMDAxKQoJLSBmaXggYnVnIGluIHhmc19kYiBiaXQgaGFuZGxpbmcgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybXMKCS0gZml4IG1rZnMgYnVnIHJlbGF0ZWQgdG8gdG9vLXNtYWxsIGZpbmFsIGFsbG9jYXRpb24gZ3JvdXAKCS0gZml4IHNpZ25lZG5lc3MgYnVnIGluIERNQVBJIGlvY3RsIHN0cnVjdHVyZSBkZWZpbml0aW9uCgp4ZnNwcm9ncy0xLjMuNCAoMDQgQXVndXN0IDIwMDEpCgktIGZpeCBlbmRpYW4gYnVnIGluIHhmc19kYiAiZnJhZyIgY29tbWFuZAoJLSBzbWFsbCBjb25maWd1cmUgc2NyaXB0IGNoYW5nZXMgdG8gYWxsb3cgY3Jvc3MgY29tcGlsYXRpb24KCS0gc2V2ZXJhbCBtYW4gcGFnZXMgdXBkYXRlZCB0byBkb2N1bWVudCBleHRlcm5hbCBsb2cgdXNhZ2UKCS0gaW5zdGFsbCBhbm90aGVyIHNoYXJlZCBsaWJyYXJ5IHN5bWxpbmsgZm9yIGxkIHRvIGZpbmQKCS0gc3dpdGNoZWQgb24gLWZuby1zdHJpY3QtYWxpYXNpbmcgZm9yIGxpYnJhcnkgb2JqZWN0IGJ1aWxkcwoJLSBmaXggc2V2ZXJhbCBtaW5vciBjb21waWxlciB3YXJuaW5ncyB3aGVuIGJ1aWxkaW5nIG9uIElBNjQKCnhmc3Byb2dzLTEuMy4zICgyNyBKdWx5IDIwMDEpCgktIGZpeGVzIGZvciAoaG9wZWZ1bGx5KSB0aGUgbGFzdCBmZXcgbml0cyBpbiBsaWJ0b29sIHVzYWdlCgp4ZnNwcm9ncy0xLjMuMiAoMjMgSnVseSAyMDAxKQoJLSBpbnN0YWxsIHN0YXRpYyBsaWJzIGFuZCBsaWJ0b29sIGFyY2hpdmVzIGludG8gL3Vzci9saWIKCS0gc2hhcmVkIGxpYnJhcmllcyBhcmUgdW5jaGFuZ2VkLCBob3dldmVyCgp4ZnNwcm9ncy0xLjMuMSAoMTUgSnVseSAyMDAxKQoJLSB1cGRhdGVkIHhmc190eXBlcy5oIGZpbGUgZnJvbSB0aGUga2VybmVsIGNoYW5nZXMgbmVlZGVkIGZvcgoJICBhbiB4ZnNkdW1wIGZpeC4KCS0gdGlkeSB1cCB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGxpYnRvb2wgcmV3b3JrCgktIFhWTSBzdHJpcGUgdW5pdC93aWR0aCBleHRyYWN0aW9uCgktIGZpeCBhbiBlbmRpYW4gYnVnIGluIHhmc19kYiAid3JpdGUiIGNvbW1hbmQKCS0gZml4IGEgYnVpbGQgcHJvYmxlbSB3aXRoIGxpYmx2bS5hIGluc3RhbGxlZAoJLSBmaXggYnVnIGluIHhmc19ncm93ZnMgbW91bnQgb3B0aW9uIHBhcnNpbmcgd2l0aCBleHRlcm5hbCBsb2cKCS0gQkxLU1pTRVQgaW9jdGwgbm93IGNvbmRpdGlvbmFsIHZpYSB0aGUgTWFrZWZpbGUgKG9mZiBieSBkZWZhdWx0KQoJLSByZXdvcmsgc29tZSBvZiB0aGUgRGViaWFuIHBhY2thZ2luZyBydWxlcwoJLSBmaXggc2lnbiBvZiBCTEtHRVRTSVpFIGlvY3RsIGFyZ3VtZW50IGluIGxpYnhmcwoJLSB1cGRhdGVkIHhmc19mcy5oIHdpdGggRE1BUEkgc2V0ZG0gZGV0YWlscyBmb3IgZHVtcC9yZXN0b3JlCgp4ZnNwcm9ncy0xLjMuMCAoMTEgSnVseSAyMDAxKQoJLSByZXdvcmtlZCBNYWtlZmlsZXMgdG8gdXNlIGxpYnRvb2wKCS0gbmV3IGxpYmRpc2sgdG8gYWxsb3cgc2hhcmluZyBvZiBnZW5lcmljIG1vdW50L2Rpc2sgY29kZSBhbmQKCS0gYWxzbyBhYnN0cmFjdHMgaW5kaXZpZHVhbCBkcml2ZXIgc3VwcG9ydCAoTFZNLCBNRCwgWFZNLi4pCgktIHBhcnRpdGlvbiB0YWJsZSBkZXRlY3Rpb24gc28gbWtmcy54ZnMgZG9lc24ndCBibGluZGx5IG92ZXJ3cml0ZQoJLSBzbWFsbCB4ZnNfcmVwYWlyIGJ1ZyBmaXggZnJvbSBTdGV2ZQoKeGZzcHJvZ3MtMS4yLjggKDAyIEp1bHkgMjAwMSkKCS0gZml4ZWQgYSBidWcgaW4gbGlieGZzIC9ldGMvbXRhYiByZWFkLW9ubHkgbW91bnQgZGV0ZWN0aW9uCgktIGZpcnN0IHRyeSBwcm9jZnMsIGZhbGwgYmFjayB0byAvZXRjL210YWIsIGZvciByZWFkLW9ubHkgbW91bnRzCgktIHN5bmMgd2l0aCByZWNlbnQgbW91bnQgY29kZSBjaGFuZ2VzIGZvciByZWlzZXJmcyBhbmQgZXh0MyBwcm9iZXMKCS0gZml4IGxvZ3ByaW50IGJ1aWxkIHByb2JsZW0gdW5kZXIgZ2NjIDMuMAoKeGZzcHJvZ3MtMS4yLjcgKDIyIE1heSAyMDAxKQoJLSBuZXcgeGZzX2ZyZWV6ZSg4KSBjb21tYW5kIC0gdm9sdW1lIG1hbmFnZXIgc25hcHNob3QgaGVscGVyCgp4ZnNwcm9ncy0xLjIuNiAoMTUgTWF5IDIwMDEpCgktIG1lcmdlIHN1cHBvcnQgZm9yIC1kIGFnc2l6ZT0vc3U9L3N3PSAoQUcsIHN0cmlwZSB1bml0L3dpZHRoIHNpemUpCgktIG1lcmdlIHN1cHBvcnQgZm9yIGR5bmFtaWMgY29uZmlndXJhdGlvbiBvZiBkZWZhdWx0IGxvZyBzaXplCgktIGRvY3VtZW50IHRoZXNlIGFuZCBmaXggYSBjb3VwbGUgb2YgbWFuIHBhZ2UgdHlwb3MgdG9vCgp4ZnNwcm9ncy0xLjIuNSAoMDcgTWF5IDIwMDEpCgktIGZpeCBtaXNzaW5nIE1ha2VmaWxlIGluY2x1ZGUgZW50cmllcyBmb3IgTFZNIGhlYWRlcnMKCS0gY29uZmlndXJlIHNjcmlwdCBkZWZhdWx0IG1hbiBwYXRoIG5vdyAvdXNyL3NoYXJlL21hbgoJLSBhZGQgZXhwZXJpbWVudGFsIHhmc19ydGNwIChyZWFsdGltZSBjb3B5KSBjb21tYW5kCgktIHBvd2VycGMgYnVpbGQgZmFpbHVyZSBmaXh1cHMgLSB0aGFua3MgdG8gUm9iZXJ0IFJhbWllZ2EKCS0gY2xlYW51cCBhcmNoLXNwZWNpZmljIGNvZGUsIGVzcC4gdGhlIGJ5dGVzd2FiIHJvdXRpbmVzCgktIGFzIGEgcmVzdWx0LCBtb3ZlIHRvIC1PMSBhcyBkZWZhdWx0IGZvciBleHRlcm4gaW5saW5lcwoKeGZzcHJvZ3MtMS4yLjQgKDAxIE1heSAyMDAxKQoJLSBhZGRlZCAtTCBvcHRpb24gdG8gbWtmcy54ZnMgKGZpbGVzeXN0ZW0gbGFiZWwpCgp4ZnNwcm9ncy0xLjIuMyAoMjcgQXByaWwgMjAwMSkKCS0gYWRkIGRxdW90IGFuZCBxdW90YW9mZiBsb2cgaXRlbSBzdXBwb3J0IGludG8geGZzX2xvZ3ByaW50CgktIGZpeCBsb2dwcmludCBjb3JlIGR1bXAgcmVwb3J0aW5nIEFHSSBpbiAiY29udGludWUiJ2QgdHJhbnNhY3Rpb25zCgp4ZnNwcm9ncy0xLjIuMiAoMDkgQXByaWwgMjAwMSkKCS0gZml4IHByb2JsZW0gaW4geGZzX2RiIChjaGVjaykgZ3JvdXAgcXVvdGEgbG9naWMKCS0gZml4ZXMgdG8gd2FybmluZ3MgZnJvbSByZWNlbnQgZ2NjIGFuZC9vciA2NC1iaXQgYnVpbGRzCgp4ZnNwcm9ncy0xLjIuMSAoMDQgQXByaWwgMjAwMSkKCS0gc3luYyB1cCB3aXRoIHJlY2VudCBjaGFuZ2VzIHRvIFhGUyBrZXJuZWwgaGVhZGVycwoKeGZzcHJvZ3MtMS4yLjAgKDAxIEFwcmlsIDIwMDEpCgktIHN1cHBvcnQgZm9yIGdyb3VwIHF1b3RhIGFkZGVkCgktIHNvbWUgaGVhZGVycyB1cGRhdGVkLCBpbiBwYXJ0aWN1bGFyIDx4cW0uaD4KCS0gbm93IGluIGxhdGUgc3RhZ2VzIG9mIGJldGEKCnhmc3Byb2dzLTEuMS45ICgyNiBNYXJjaCAyMDAxKQoJLSBhZGRlZCBhdXRvbWFnaWMgc3RyaXBlIHVuaXQvc3RyaXBlIHdpZHRoIGV4dHJhY3Rpb24gZm9yIE1EIGRldmljZXMKCnhmc3Byb2dzLTEuMS44ICgyMyBNYXJjaCAyMDAxKQoJLSBta2ZzIGhldXJpc3RpY3MgdG8gbWFrZSBhIHF1YWxpZmllZCBndWVzcyBvZiBpbnRlcm5hbCBsb2dzaXplCgp4ZnNwcm9ncy0xLjEuNyAoMjAgTWFyY2ggMjAwMSkKCS0gdXBncmFkZWQgTFZNIHRvIDAuOWJldGE2CgktIG1pbm9yIHJwbSBzcGVjIGZpbGUgY2hhbmdlcwoKeGZzcHJvZ3MtMS4xLjYgKDIwIE1hcmNoIDIwMDEpCgktIGZpeCBzcGFyYyBidWlsZCBmYWlsdXJlIC0gZmNudGwuaCBtaXNzaW5nIE9fRElSRUNUCgktIGFkZGVkIFJFQURNRS5xdW90YSBkZXNjcmliaW5nIHVzZSBvZiBxdW90YSB3aXRoIFhGUwoKeGZzcHJvZ3MtMS4xLjUgKDEyIE1hcmNoIDIwMDEpCgktIHVwZ3JhZGVkIExWTSBzdXBwb3J0IHRvIDAuOWJldGEyIChJT1AgMTApCgp4ZnNwcm9ncy0xLjEuNCAoMTAgTWFyY2ggMjAwMSkKCS0ga2VybmVsIG5vdyBzdXBwb3J0cyBPX0RJUkVDVCAtIHJlLWVuYWJsZSBpdHMgdXNlIGluIHhmc19ta2ZpbGUKCS0gQkxLU0VUU0laRSBpb2N0bCByZXBsYWNlZCBieSBCTEtCU1pTRVQgaW9jdGwgaW4gbGlieGZzCgktIGxpYnhmc19pbml0IGV4dGVuZGVkIHNvIG9ubHkgbWtmcyBhbmQgeGZzX3JlcGFpciB1c2UgQkxLQlNaU0VUCgktIE5PVEU6IHRoaXMgdmVyc2lvbiByZXF1aXJlcyBhbiBYRlMga2VybmVsIGZyb20gTWFyY2ggOSBvciBsYXRlcgoKeGZzcHJvZ3MtMS4xLjMgKDAyIE1hcmNoIDIwMDEpCgktIG1pbm9yIE1ha2VmaWxlLXJlbGF0ZWQgY2xlYW51cHMKCnhmc3Byb2dzLTEuMS4yICgxMCBGZWJydWFyeSAyMDAxKQoJLSBhZGRlZCBsaWJoYW5kbGUgcm91dGluZXMgdG8gc2ltcGxpZnkgZHVtcC9yZXN0b3JlIEVBIHN1cHBvcnQKCnhmc3Byb2dzLTEuMS4xICgzMCBKYW51YXJ5IDIwMDEpCgktIG1pbm9yIHJwbSBhbmQgZGViIHBhY2thZ2luZyB3b3JrCgp4ZnNwcm9ncy0xLjEuMCAoMTUgSmFudWFyeSAyMDAxKQoJLSByZXdvcmsgeGZzLWNtZHMgcGFja2FnZSBpbnRvIGJhc2UsIGRldmVsIGFuZCBkdW1wIHBhY2thZ2VzCgktIGNvbXBsZXRlZCBEZWJpYW4gcGFja2FnaW5nCgktIGxhdGUgYmV0YSBjb2RlCgp4ZnMtY21kcy0xLjAuNyAoMDIgSmFudWFyeSAyMDAxKQoJLSBhZGRlZCBta2ZzIHN1cHBvcnQgZm9yIGV4dHJhY3RpbmcgTFZNIHN0cmlwZSB1bml0L3dpZHRoCgktIGxpYmF0dHIgKCpleHBlcmltZW50YWwqIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW50ZXJmYWNlKSBhZGRlZAoJLSByZW1vdmVkIHhmc19mc3RhYi41IG1hbiBwYWdlIChtZXJnZWQgaW50byBtb3VudC44KQoJLSBpbnN0YWxsIHhmc19yZXBhaXIgaW50byAvc2Jpbiwgbm90IC91c3Ivc2JpbgoKeGZzLWNtZHMtMS4wLjYgKDA0IE9jdG9iZXIgMjAwMCkKCS0gcmV3b3JrZWQgZXh0ZXJuYWwgbG9nIGZvcm1hdCB0byBiZSBJUklYIGNvbXBhdGlibGUKCS0gbWtmcywgcmVwYWlyLCBkYiwgbG9ncHJpbnQgbm93IHdvcmsgd2l0aCBuZXcgZm9ybWF0CgktIHhmc19hZG1pbiBhZGRlZCBmb3Igc2V0dGluZyBmaWxlc3lzdGVtIGxhYmVsCgp4ZnMtY21kcy0xLjAuNSAoMTggU2VwdGVtYmVyIDIwMDApCgktIG1pbm9yIGJ1ZyBmaXhlcwoJLSBmaXJzdCBiZXRhIHJlbGVhc2UKCnhmcy1jbWRzLTEuMC40ICgxOCBBdWd1c3QgMjAwMCkKCS0gbWlub3IgYnVnIGZpeGVzCgktIHhmc19ncm93ZnMgYWRkZWQKCS0geGZzX2luZm8gYWRkZWQKCS0gbGF0ZSBhbHBoYSBjb2RlCgp4ZnMtY21kcy0xLjAuMyAoMTYgQXVndXN0IDIwMDApCgktIG51bWVyb3VzIGJ1ZyBmaXhlcwoJLSB4ZnNkdW1wIGFuZCB4ZnNyZXN0b3JlIGFkZGVkCgktIHhmc3N0YXRzIGFkZGVkCgktIGZzY2sueGZzIChzeW1saW5rIHRvIC9iaW4vdHJ1ZSkgYWRkZWQKCS0gZGVtaXNlIG9mIHNpbSBsaWJyYXJ5IGNvbXBsZXRlLCBta2ZzIGFuZCByZXBhaXIgcmV3b3JrZWQKCS0gbm8gbG9uZ2VyIG5lZWQgdG8gaGF2ZSBhbiBYRlMga2VybmVsIGhhbmR5IGZvciBidWlsZGluZyB4ZnMtY21kcwoJLSB4ZnNfY29weSBjb21waWxlcyBvbiBMaW51eAoJLSBkdW1wL3Jlc3RvcmUgUkVBRE1FIGFkZGVkCgktIGxhdGUgYWxwaGEgY29kZQoKeGZzLWNtZHMtMS4wLjIgKDI3IEp1bHkgMjAwMCkKCS0gbnVtZXJvdXMgYnVnIGZpeGVzCgktIHhmc19hdHRyIChleHRlbmRlZCBhdHRyaWJ1dGVzKSBjb21tYW5kIGFkZGVkCgktIGZzcl94ZnMgYWRkZWQgKHBvcnRlZCBieSBqb25lc0B0YWNjLnV0ZXhhcy5lZHUpCgktIExWTStYRlMgUkVBRE1FIGFkZGVkCgktIGVhcmx5IGFscGhhIGNvZGUKCnhmcy1jbWRzLTEuMC4xICg1IEp1bHkgMjAwMCkKCS0gbnVtZXJvdXMgYnVnIGZpeGVzCgktIHJld29ya2VkIGJ1aWxkIGVudmlyb25tZW50CgktIGJlZ3VuIHdvcmsgb24gdXNlci9rZXJuZWwgc2VwYXJhdGlvbgoJLSBlYXJseSBhbHBoYSBjb2RlCgp4ZnMtY21kcy0xLjAuMCAoMTYgSnVuZSAyMDAwKQoJLSBpbml0aWFsIHJlbGVhc2UgZm9yIFVTRU5JWCBDRHMKCS0gZWFybHkgYWxwaGEgY29kZQo=