MjAwNS0wNi0wOSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjUuMTIuCgkqIGRlYmlhbi9jaGFuZ2Vsb2csIHN0cmFjZS5zcGVjOiA0LjUuMTItMS4KCjIwMDUtMDYtMDggIERtaXRyeSBWLiBMZXZpbiAgPGxkdkBhbHRsaW51eC5vcmc+CgoJTWlub3IgbmFtZXNwYWNlIGNsZWFudXAuCgkqIGRlZnMuaCAoc3RyaW5nX3F1b3RlKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBmaWxlLmMgKG9wZW5tb2Rlc3NvbCkgW0xJTlVYU1BBUkNdOiBNYWtlIHN0YXRpYy4KCShmaWxlZmxhZ3MpOiBMaWtld2lzZS4KCShhY2xjbWRzLCBhY2xpcGMpIFtIQVZFX1NZU19BQ0xfSF06IExpa2V3aXNlLgoJKGRpcmVudHR5cGVzKSBbRlJFRUJTRCB8fCBMSU5VWF06IExpa2V3aXNlLgoJKHhhdHRyZmxhZ3MpOiBMaWtld2lzZS4KCSogcHJvY2Vzcy5jICh1bmFsaWduY3RsX3N0cmluZyk6IE1ha2Ugc3RhdGljLgoJKHNldGFyZyk6IERpc2FibGUuCgkqIHN5c2NhbGwuYyAoc3ViY2FsbHNfdGFibGUpOiBNYWtlIHN0YXRpYy4KCShzb2NrZXRfbWFwKSBbIShMSU5VWCAmJiAoQUxQSEEgfHwgTUlQUykpXTogTGlrZXdpc2UuCgkoc3BhcmNfc29ja2V0X2RlY29kZSk6IE1ha2Ugc3RhdGljLCBkZWZpbmUgZm9yIFtTUEFSQyB8fCBTUEFSQzY0XSBvbmx5LgoJKGRlY29kZV9zdWJjYWxsKTogTWFrZSBzdGF0aWMuCgkoc3lzY2FsbF9maXh1cCk6IExpa2V3aXNlLgoJKGdldF9lcnJvcik6IExpa2V3aXNlLgoJKHN5c2NhbGxfZW50ZXIpOiBMaWtld2lzZS4KCSogdXRpbC5jICh0dl90dik6IERpc2FibGUuCgkoZ2V0cGMpOiBMaWtld2lzZS4KCShzdHJpbmdfcXVvdGUpOiBNYWtlIHN0YXRpYy4KCUZpeGVzIFJIIzE1OTY4OC4KCjIwMDUtMDUtMTIgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogdXRpbC5jIChnZXRwYywgcHJpbnRjYWxsKTogQ2hlY2sgI2lmIGRlZmluZWQoTTY4SyksIG5vdCBNNjhrLgoJRW5hYmxlcyBgLWknIG9uIG02OGsgbWFjaGluZXMuCgoyMDA1LTA2LTA2ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogcHJvY2Vzcy5jIChzdHJ1Y3RfdXNlcl9vZmZzZXRzKSBbWDg2XzY0XTogUmVvcmRlciBlbGVtZW50cyBzbwoJbWF0Y2hpbmcgd29ya3MgcmlnaHQuCglGaXhlcyBSSCMxNTk3ODcuCgoJKiBsaW51eC9zeXNjYWxsLmggKFNZU19zb2NrZXQsIFNZU19iaW5kLCBTWVNfY29ubmVjdCwgU1lTX2xpc3RlbikKCShTWVNfYWNjZXB0LCBTWVNfZ2V0c29ja25hbWUsIFNZU19nZXRwZWVybmFtZSwgU1lTX3NvY2tldHBhaXIpCgkoU1lTX3NlbmQsIFNZU19yZWN2LCBTWVNfc2VuZHRvLCBTWVNfcmVjdmZyb20sIFNZU19zaHV0ZG93bikKCShTWVNfc2V0c29ja29wdCwgU1lTX2dldHNvY2tvcHQsIFNZU19zZW5kbXNnLCBTWVNfcmVjdm1zZykKCShTWVNfZ2V0c29ja25hbWUsIFNZU19zZW1vcCwgU1lTX3NlbWdzdWJfZXQsIFNZU19zZW1nZXQsIFNZU19zZW1jdGwpCgkoU1lTX3NlbXRpbWVkb3AsIFNZU19tc2dzbmQsIFNZU19tc2dyY3YsIFNZU19tc2dnZXQpCgkoU1lTX21zZ2N0bCwgU1lTX3NobWF0LCBTWVNfc2htZHQsIFNZU19zaG1nZXQpCgkoU1lTX3NobWN0bCk6IE1hY3JvcyByZW5hbWVkIHRvIFNZU19zdWJfKi4KCSogc3lzY2FsbC5jIChkdW1waW8pOiBNYXRjaCBTWVNfc3ViXyogaWYgZGVmaW5lZCBpbnN0ZWFkIG9mIFNZU18qLgoKCSogbGludXgvc3lzY2FsbC5oIChTWVNfd2FpdGlkKTogRGVmaW5lIGlmIG5vdCBkZWZpbmVkLgoKCSogbGludXgvc3lzY2FsbGVudC5oOiBGaXggcHJlYWQvcHdyaXRlIG5hbWVzIHRvIHByZWFkNjQvcHdyaXRlNjQuCgoJKiBkZWZzLmggKHN0cnVjdCBzeXNlbnQpOiBOZXcgbWVtYmVyIGBuYXRpdmVfc2NubycuCgkoa25vd25fc2Nubyk6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IEFkZCBuZXcgZmluYWwgZmllbGQgdG8gaW50ZXJlc3Rpbmcgc3lzY2FsbHMuCgkqIHN5c2NhbGwuYyAoa25vd25fc2Nubyk6IE5ldyBmdW5jdGlvbi4KCShkdW1waW8sIGludGVybmFsX3N5c2NhbGwsIHN5c2NhbGxfZml4dXAsIHRyYWNlX3N5c2NhbGwpOiBVc2UgaXQuCgkqIHByb2Nlc3MuYyAoaW50ZXJuYWxfZm9yaywgaW50ZXJuYWxfZXhpdCk6IExpa2V3aXNlLgoJW0lBNjRdIChBUkdfU1RBQ0tTSVpFLCBBUkdfUFRJRCwgQVJHX0NUSUQsIEFSR19UTFMpOiBMaWtld2lzZS4KCSogc3RyYWNlLmMgKHByb2Nfb3Blbik6IExpa2V3aXNlLgoJKiB1dGlsLmMgW0xJTlVYXSAoc2V0YnB0KTogTGlrZXdpc2UuCgkqIGxpbnV4L3N5c2NhbGwuaDogUmVtb3ZlIFshZGVmaW5lZChYODZfNjQpXSBmcm9tIGNvbmRpdGlvbmFsCglmb3IgZGVmaW5pbmcgU1lTX3NvY2tldF9zdWJjYWxsIGV0IGFsLgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlIGZvciAjZXJyb3IgY2hlY2suCgkqIHN5c2NhbGwuYyAodHJhY2Vfc3lzY2FsbCk6IExpa2V3aXNlIGZvciBTWVNfe3NvY2tldGNhbGwsaXBjfSBjYXNlcy4KCUZpeGVzIFJIIzE1ODkzNC4KCjIwMDUtMDYtMDIgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBmaWxlLmMgKHByaW50c3RhdGZzNjQpOiBDYXN0IHZhbHVlcyB0byB1bnNpZ25lZCBsb25nIGxvbmcgYW5kIHVzZQoJJWxsdSBmb3JtYXRzLgoJRml4ZXMgUkgjMTU4MjQzLgoKMjAwNS0wNS0zMSAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCglEZWFsIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzLgoJKiBkZWZzLmggKHRwcmludF9pb3YpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBkZXNjLmMgKHN5c19lcG9sbF93YWl0KSBbSEFWRV9TWVNfRVBPTExfSF06IERvIG5vdCBhbGxvY2F0ZQoJZXBvbGxfZXZlbnQgYXJyYXkgb2YgYXJiaXRyYXJ5IHNpemUgb24gdGhlIHN0YWNrLCB0byBhdm9pZAoJc3RhY2sgb3ZlcmZsb3cuCgkqIGZpbGUuYyAocHJpbnRfeGF0dHJfdmFsKTogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nCgltYWxsb2Mgc2l6ZSBjYWxjdWxhdGlvbiwgdG8gYXZvaWQgaGVhcCBjb3JydXB0aW9uLgoJKiBpby5jICh0cHJpbnRfaW92KSBbSEFWRV9TWVNfVUlPX0hdOiBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdwoJZHVyaW5nIG1hbGxvYyBzaXplIGNhbGN1bGF0aW9uLCB0byBhdm9pZCBoZWFwIGNvcnJ1cHRpb24uCglDaGFuZ2UgaW92ZWMgYXJyYXkgaGFuZGxpbmcgdG8gYXZvaWQgaGVhcCBtZW1vcnkgYWxsb2NhdGlvbi4KCSogbWVtLmMgKGdldF9ub2RlcykgW0xJTlVYXTogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgZHVyaW5nCglzaXplIGNhbGN1bGF0aW9uIGFuZCBkbyBub3QgYWxsb2NhdGUgYXJyYXkgb2YgYXJiaXRyYXJ5IHNpemUgb24KCXRoZSBzdGFjaywgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cuCgkqIG5ldC5jIChwcmludGNtc2doZHIpIFtIQVZFX1NFTkRNU0ddOiBEbyBub3QgYWxsb2NhdGUgYXJyYXkgb2YKCWFyYml0cmFyeSBzaXplIG9uIHRoZSBzdGFjaywgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3cuICBEbyBub3QKCXRydXN0IGNtc2cuY21zZ19sZW4gdG8gYXZvaWQgcmVhZCBiZXlvbmQgdGhlIGVuZCBvZiBhbGxvY2F0ZWQKCW9iamVjdC4KCShwcmludG1zZ2hkcikgW0hBVkVfU0VORE1TR106IFVwZGF0ZSB0cHJpbnRfaW92KCkgdXNhZ2UuCgkqIHByb2Nlc3MuYyAoc3lzX3NldGdyb3Vwcyk6IENoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93IGR1cmluZwoJbWFsbG9jIHNpemUgY2FsY3VsYXRpb24sIHRvIGF2b2lkIGhlYXAgY29ycnVwdGlvbi4gIENoYW5nZSBnaWRfdAoJYXJyYXkgaGFuZGxpbmcgdG8gYXZvaWQgaGVhcCBtZW1vcnkgYWxsb2NhdGlvbi4KCShzeXNfZ2V0Z3JvdXBzKTogTGlrZXdpc2UuCgkoc3lzX3NldGdyb3VwczMyKSBbTElOVVhdOiBMaWtld2lzZS4KCShzeXNfZ2V0Z3JvdXBzMzIpIFtMSU5VWF06IExpa2V3aXNlLgoJKiBzdHJlYW0uYyAoc3lzX3BvbGwpIFtIQVZFX1NZU19QT0xMX0hdOiBDaGVjayBmb3IgaW50ZWdlcgoJb3ZlcmZsb3cgZHVyaW5nIG1hbGxvYyBzaXplIGNhbGN1bGF0aW9uLCB0byBhdm9pZCBoZWFwIGNvcnJ1cHRpb24uCglDaGFuZ2UgcG9sbGZkIGFycmF5IGhhbmRsaW5nIHRvIGF2b2lkIGhlYXAgbWVtb3J5IGFsbG9jYXRpb24uCgkqIHN5c3RlbS5jIChzeXNfc3lzY3RsKSBbTElOVVhdOiBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdwoJZHVyaW5nIG1hbGxvYyBzaXplIGNhbGN1bGF0aW9uLCB0byBhdm9pZCBoZWFwIGNvcnJ1cHRpb24uCgkqIHV0aWwuYyAoZHVtcGlvdikgW0hBVkVfU1lTX1VJT19IXTogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cKCWR1cmluZyBtYWxsb2Mgc2l6ZSBjYWxjdWxhdGlvbiwgdG8gYXZvaWQgaGVhcCBjb3JydXB0aW9uLgoJRml4ZXMgUkgjMTU5MTk2LgoKCSogdXRpbC5jIChwcmludHh2YWwpOiBDaGFuZ2UgdGhpcmQgYXJndW1lbnQgZnJvbSAiY2hhciAqIiB0bwoJImNvbnN0IGNoYXIgKiIuCgkocHJpbnRmbGFncyk6IEFkZCB0aGlyZCBhcmd1bWVudCwgImNvbnN0IGNoYXIgKiIsIHdpdGggc2ltaWxhcgoJbWVhbmluZyB0byB0aGUgdGhpcmQgYXJndW1lbnQgb2YgcHJpbnR4dmFsKCkuCgkqIGRlZnMuaCAocHJpbnR4dmFsKTogQ2hhbmdlIHRoaXJkIGFyZ3VtZW50IGZyb20gImNoYXIgKiIgdG8KCSJjb25zdCBjaGFyICoiLgoJKHByaW50ZmxhZ3MpOiBBZGQgdGhpcmQgYXJndW1lbnQuCgkqIGJqbS5jIChzeXNfcXVlcnlfbW9kdWxlKSBbTElOVVhdOiBQYXNzIHRoaXJkIGFyZ3VtZW50IHRvCglwcmludGZsYWdzKCkuCgkqIGRlc2MuYyAoc3lzX2ZjbnRsKTogTGlrZXdpc2UuCgkoc3lzX2Zsb2NrKSBbTE9DS19TSF06IExpa2V3aXNlLgoJKHByaW50X2Vwb2xsX2V2ZW50KSBbSEFWRV9TWVNfRVBPTExfSF06IExpa2V3aXNlLgoJKiBmaWxlLmMgKHN5c19vcGVuKTogTGlrZXdpc2UuCgkoc29sYXJpc19vcGVuKSBbTElOVVhTUEFSQ106IExpa2V3aXNlLgoJKHN5c19hY2Nlc3MpOiBMaWtld2lzZS4KCShzeXNfY2hmbGFncywgc3lzX2ZjaGZsYWdzKSBbRlJFRUJTRF06IExpa2V3aXNlLgoJKHJlYWxwcmludHN0YXQpIFtIQVZFX0xPTkdfTE9OR19PRkZfVCAmJgoJSEFWRV9TVFJVQ1RfU1RBVF9TVF9GTEFHU106IExpa2V3aXNlLgoJKHByaW50c3RhdDY0KSBbSEFWRV9TVEFUNjQgJiYKCUhBVkVfU1RSVUNUX1NUQVRfU1RfRkxBR1NdOiBMaWtld2lzZS4KCShzeXNfc2V0eGF0dHIsIHN5c19mc2V0eGF0dHIpOiBMaWtld2lzZS4KCSogaXBjLmMgKHN5c19tc2dnZXQsIHN5c19tc2dzbmQsIHN5c19tc2dyY3YsIHN5c19zZW1nZXQsCglzeXNfc2htZ2V0LCBzeXNfc2htYXQpIFtMSU5VWCB8fCBTVU5PUzQgfHwgRlJFRUJTRF06IExpa2V3aXNlLgoJKHN5c19tcV9vcGVuKSBbTElOVVhdOiBMaWtld2lzZS4KCShwcmludG1xYXR0cikgW0hBVkVfTVFVRVVFX0hdOiBMaWtld2lzZS4KCSogbWVtLmMgKHByaW50X21tYXApIFshSEFWRV9MT05HX0xPTkdfT0ZGX1RdOiBMaWtld2lzZS4KCShzeXNfbW1hcDY0KSBbX0xGUzY0X0xBUkdFRklMRSB8fCBIQVZFX0xPTkdfTE9OR19PRkZfVF06IExpa2V3aXNlLgoJKHN5c19tcHJvdGVjdCk6IExpa2V3aXNlLgoJKHN5c19tcmVtYXAsIHN5c19tYWR2aXNlLCBzeXNfbWxvY2thbGwpIFtMSU5VWF06IExpa2V3aXNlLgoJKHN5c19tc3luYykgW01TX0FTWU5DXTogTGlrZXdpc2UuCgkoc3lzX21jdGwpIFtNQ19TWU5DXTogTGlrZXdpc2UuCgkoc3lzX3JlbWFwX2ZpbGVfcGFnZXMsIHN5c19tYmluZCwgc3lzX2dldF9tZW1wb2xpY3kpIFtMSU5VWF06CglMaWtld2lzZS4KCSogbmV0LmMgKHByaW50bXNnaGRyKSBbSEFWRV9TVFJVQ1RfTVNHSERSX01TR19DT05UUk9MXTogTGlrZXdpc2UuCgkoc3lzX3NlbmQsIHN5c19zZW5kdG8pOiBMaWtld2lzZS4KCShzeXNfc2VuZG1zZykgW0hBVkVfU0VORE1TR106IExpa2V3aXNlLgoJKHN5c19yZWN2LCBzeXNfcmVjdmZyb20pOiBMaWtld2lzZS4KCShzeXNfcmVjdm1zZykgW0hBVkVfU0VORE1TR106IExpa2V3aXNlLgoJKHByaW50aWNtcGZpbHRlcikgW0lDTVBfRklMVEVSXTogTGlrZXdpc2UuCgkqIHByb2MuYyAocHJvY19pb2N0bCkgW1NWUjQgJiYgIUhBVkVfTVBfUFJPQ0ZTIHx8IEZSRUVCU0RdOiBMaWtld2lzZS4KCSogcHJvY2Vzcy5jIChzeXNfY2xvbmUpIFtMSU5VWF06IExpa2V3aXNlLgoJKHByaW50d2FpdG4pOiBMaWtld2lzZS4KCShzeXNfd2FpdGlkKSBbU1ZSNCB8fCBMSU5VWF06IExpa2V3aXNlLgoJKiBzaWduYWwuYyAoc3lzX3NpZ3ZlYykgW1NVTk9TNCB8fCBGUkVFQlNEXTogTGlrZXdpc2UuCgkoc3lzX3NpZ2FjdGlvbik6IExpa2V3aXNlLgoJKHByaW50Y29udGV4dCkgW1NWUjRdOiBMaWtld2lzZS4KCShwcmludF9zdGFja190KSBbTElOVVgpIHx8IEZSRUVCU0RdOiBMaWtld2lzZS4KCShzeXNfcnRfc2lnYWN0aW9uKSBbTElOVVhdOiBMaWtld2lzZS4KCSogc29jay5jIChzb2NrX2lvY3RsKSBbTElOVVhdOiBMaWtld2lzZS4KCSogc3RyZWFtLmMgKHN5c19wdXRtc2csIHN5c19nZXRtc2cpOiBMaWtld2lzZS4KCShzeXNfcHV0cG1zZykgW1NZU19wdXRwbXNnXTogTGlrZXdpc2UuCgkoc3lzX2dldHBtc2cpIFtTWVNfZ2V0cG1zZ106IExpa2V3aXNlLgoJKHN5c19wb2xsKTogTGlrZXdpc2UuCgkocHJpbnRfdHJhbnNwb3J0X21lc3NhZ2UpIFtUSV9CSU5EXTogTGlrZXdpc2UuCgkoc3RyZWFtX2lvY3RsKTogTGlrZXdpc2UuCgkqIHN5c3RlbS5jIChzeXNfbW91bnQsIHN5c19yZWJvb3QpOiBMaWtld2lzZS4KCShzeXNfY2FjaGVmbHVzaCkgW0xJTlVYICYmIE02OEtdOiBMaWtld2lzZS4KCShzeXNfY2FwZ2V0LCBzeXNfY2Fwc2V0KSBbU1lTX2NhcGdldF06IExpa2V3aXNlLgoJKiB0ZXJtLmMgKHRlcm1faW9jdGwpIFtUSU9DTUdFVF06IExpa2V3aXNlLgoJKiB0aW1lLmMgKHN5c19jbG9ja19uYW5vc2xlZXAsIHN5c190aW1lcl9zZXR0aW1lKSBbTElOVVhdOgoJTGlrZXdpc2UuCglGaXhlcyBSSCMxNTkzMTAuCgoJKiBiam0uYyAoc3lzX3F1ZXJ5X21vZHVsZSkgW0xJTlVYXTogVW5pdGl6ZSAib3V0IG9mIG1lbW9yeSIKCWVycm9ycyByZXBvcnRpbmcgc3R5bGUuCgkqIHN0cmFjZS5jIChyZWJ1aWxkX3BvbGx2KSBbVVNFX1BST0NGU106IExpa2V3aXNlLgoJKiBzeXN0ZW0uYyAoc3lzX2NhcGdldCwgc3lzX2NhcHNldCkgW1NZU19jYXBnZXRdOiBMaWtld2lzZS4KCSogdXRpbC5jIChwcmludHN0cik6IExpa2V3aXNlLgoJKGR1bXBpb3YpIFtIQVZFX1NZU19VSU9fSF06IExpa2V3aXNlLgoJKGZpeHZmb3JrKSBbU1VOT1M0XTogTGlrZXdpc2UuCgkqIGRlc2MuYyAoZGVjb2RlX3NlbGVjdCk6IENvbnRpbnVlIHRvIGRlY29kZSBzeXNjYWxsIGFyZ3VtZW50cwoJaW4gY2FzZSBvZiBPT00gY29uZGl0aW9uLgoJKiBmaWxlLmMgKHN5c19nZXRkZW50cyk6IExpa2V3aXNlLgoJKHN5c19nZXRkZW50czY0KSBbX0xGUzY0X0xBUkdFRklMRV06IExpa2V3aXNlLgoJKHN5c19nZXRkaXJlbnRyaWVzKSBbRlJFRUJTRF06IExpa2V3aXNlLgoJKiBtZW0uYyAoc3lzX21pbmNvcmUpOiBDaGFuZ2VkIHR5cGUgb2YgdmFyaWFibGVzIHdoaWNoIGRlYWwgd2l0aAoJbWFsbG9jIHNpemUgZnJvbSBpbnQgdG8gdW5zaWduZWQgbG9uZy4KCUZpeGVzIFJIIzE1OTMwOC4KCjIwMDUtMDUtMjIgIERtaXRyeSBWLiBMZXZpbiAgPGxkdkBhbHRsaW51eC5vcmc+CgoJKiBiam0uYyBbTElOVVhdOiBEbyBub3QgaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPi4gIEl0IGlzIG5vdAoJc2FmZSB0byBpbmNsdWRlIGtlcm5lbCBoZWFkZXJzLCBhbmQgdGhpcyBvbmUgaXMgbm90IHVzZWQgYW55d2F5LgoJRml4ZXMgUkgjMTU4NDg4LgoKMjAwNS0wNS0yNiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHN5c3RlbS5jIChzeXNfc3lzY3RsKTogQ2hlY2sgZm9yIGVycm9ycyBhY2Nlc3NpbmcgdXNlciBwb2ludGVycy4KCVVzZSBtYWxsb2MgaW5zdGVhZCBvZiBhbGxvY2EgaW4gY2FzZSBzaXplIGlzIGluc2FuZS4KCjIwMDUtMDUtMDkgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBsaWJhaW8uaC4KCSogZGVzYy5jIChzeXNfaW9fc2V0dXAsIHN5c19pb19zdWJtaXQsIHN5c19pb19jYW5jZWwsCglzeXNfaW9fZ2V0ZXZlbnRzLCBzeXNfaW9fZGVzdHJveSk6IE5ldyBmdW5jdGlvbnMuCgkqIGxpbnV4L3N5c2NhbGwuaDogRGVjbGFyZSB0aGVtLgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IFVzZSB0aG9zZSBmb3IgaW9fKiBzeXNjYWxscy4KCSogbGludXgvYWxwaGEvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCSogbGludXgvaHBwYS9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9pYTY0L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L21pcHMvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCSogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9zMzkwL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3MzOTB4L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJRnJvbSBaYWNoIEJyb3duIDx6YWNoLmJyb3duQG9yYWNsZS5jb20+LgoJRml4ZXMgUkgjMTU1MDY1LgoKCSogZGViaWFuL2NvbnRyb2wgKEFyY2hpdGVjdHVyZSk6IEFkZCBwcGM2NC4KCUZpeGVzIERlYmlhbiBidWcgIzMwMTA4OS4KCjIwMDUtMDUtMDUgIEFudG9uIEJsYW5jaGFyZCAgPGFudG9uQHNhbWJhLm9yZz4KCgkqIHByb2Nlc3MuYyAocHRyYWNlX2NtZHMpOiBBZGQgUFRSQUNFX0dFVFZSUkVHUyBhbmQgUFRSQUNFX1NFVFZSUkVHUwoJaWYgZGVmaW5lZC4KCjIwMDUtMDUtMDkgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBzdHJhY2UuYyAobWFpbik6IFJlZnVzZSBuZWdhdGl2ZSAtcyBhcmd1bWVudCB2YWx1ZS4KCUZpeGVzIERlYmlhbiBidWcgIzMwMzI1Ni4KCjIwMDUtMDQtMjUgIEFudG9uIEJsYW5jaGFyZCAgPGFudG9uQHNhbWJhLm9yZz4KCgkqIGZpbGUuYyAob3Blbm1vZGVzKTogQWRkIE9fTk9BVElNRSBmbGFnIGlmIGRlZmluZWQuCgoyMDA1LTA0LTA1ICBBbnRvbiBCbGFuY2hhcmQgIDxhbnRvbkBzYW1iYS5vcmc+CgoJKiBsaW51eC9wb3dlcnBjL2lvY3RsZW50Lmg6IFJlZ2VuZXJhdGVkLgoKCSogc2lnbmFsLmMgKHNpZ25hbWUpOiBEb24ndCB0cnkgYW5kIGRlcmVmZXJlbmNlIG5lZ2F0aXZlIGluZGV4LgoKCSogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50Lmg6IEFkZCBkZWJ1Z19zZXRjb250ZXh0LCB2c2VydmVyLAoJbWJpbmQsICpfbWVtcG9saWN5LCBtcV8qLCBzeXNfa2V4ZWNfbG9hZCwgYWRkX2tleSwgcmVxdWVzdF9rZXksCglrZXljdGwsIHdhaXRpZCwgc3lzX3NlbXRpbWVkb3AuICBGaXggdmFyaW91cyBvdGhlciBzeXNjYWxscy4KCgkqIGlwYy5jIChzaG1fcmVzb3VyY2VfZmxhZ3MpOiBOZXcgdmFyaWFibGUsIHRhYmxlIGhhcyBTSE1fSFVHRVRMQgoJYnV0IG5vdCBJUENfTk9XQUlULCB3aGljaCBoYXZlIHRoZSBzYW1lIHZhbHVlLgoJKHN5c19zaG1nZXQpOiBVc2UgdGhhdCBpbnN0ZWFkIG9mIHJlc291cmNlX2ZsYWdzLgoKMjAwNS0wMy0yMiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGRlc2MuYyAoZGVjb2RlX3NlbGVjdCk6IEluY3JlYXNlIGxvY2FsIGJ1ZmZlciBzaXplLgoJRml4ZXMgUkgjMTUxNTcwLgoKCSogY29uZmlndXJlLmFjLCBORVdTOiBWZXJzaW9uIDQuNS4xMS4KCSogZGViaWFuL2NoYW5nZWxvZywgc3RyYWNlLnNwZWM6IDQuNS4xMS0xLgoKCSogbGludXgvYXJtL3N5c2NhbGxlbnQuaDogRml4IDExMyBlbnRyeSAoc3lzY2FsbCwgbm90IHZtODZvbGQpLgoKMjAwNS0wMy0xNCAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjUuMTAuCgkqIGRlYmlhbi9jaGFuZ2Vsb2csIHN0cmFjZS5zcGVjOiA0LjUuMTAtMS4KCjIwMDUtMDItMjYgIEdPVE8gTWFzYW5vcmkgIDxnb3RvbUBkZWJpYW4ub3IuanA+CgoJKiBsaW51eC9hbHBoYS9zeXNjYWxsZW50Lmg6IEZpeCB0aGUgcmV2ZXJzZWQgb3JkZXIgb2YgbHN0YXQ2NCBhbmQKCWZzdGF0NjQuICBDbGVhbiB1cCBvc2ZfbnJlY3Ztc2cgYW5kIG9zZl9uZ2V0c29ja25hbWUuCgoyMDA1LTAyLTI4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogc3lzY2FsbC5jIChnZXRydmFsMik6IE1vdmUgI2lmZGVmIElBNjQgaW5zaWRlICNpZmRlZiBMSU5VWC4KCjIwMDUtMDMtMTQgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9taXBzL3N5c2NhbGxlbnQuaDogVXBkYXRlIHZhcmlvdXMgY2FsbHMuCglGcm9tIFRoaWVtbyBTZXVmZXIgPHRoc0BuZXR3b3Jrbm8uZGU+LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjU2Njg0LgoKCSogZGViaWFuL2NvbnRyb2wgKEFyY2hpdGVjdHVyZSk6IEFkZCBzMzkwLgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjk0MTcyLgoKMjAwNS0wMy0wNiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHN0cmFjZS5jICh0cmFjZSkgW1BUUkFDRV9HRVRTSUdJTkZPXTogRmV0Y2ggc2lnaW5mb190IGZvciBTSUdTRUdWCglhbmQgU0lHQlVTIHNpZ25hbHMsIHVzZSBzaV9hZGRyIGluIG91dHB1dC4KCjIwMDUtMDMtMDEgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBmaWxlLmMgKHByaW50X3hhdHRyX3ZhbCk6IEFkZCBhIGNhc3QuCgoyMDA1LTAyLTA1ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogZGVzYy5jIChkZWNvZGVfc2VsZWN0KTogQ2FsY3VsYXRlIHNpemUgb2YgcGFzc2VkIGZkX3NldCB2ZWN0b3JzIGFuZAoJY29weSBpbiB0aGUgdXNlcidzIHNpemUgcmF0aGVyIHRoYW4gdGhlIHN0YW5kYXJkIHNpemVvZihmZF9zZXQpLgoJRml4ZXMgRGViaWFuIGJ1ZyAjNjU2NTQsICMyODQyOTAuCgoJKiB1dGlsLmMgKHByaW50cGF0aCwgcHJpbnRwYXRobik6IFByaW50IE5VTEwgYW5kIGRvbid0IHRyeSBhbnkgZmV0Y2gKCXdoZW4gQUREUiBpcyB6ZXJvLgoJRml4ZXMgRGViaWFuIGJ1ZyAjNjMwOTMuCgoJKiBkZWJpYW4vY29udHJvbCAoQnVpbGQtRGVwZW5kcyk6IEZpeCBmb3IgczM5MCBhbmQgc3BhcmMuCglGcm9tIEJhc3RpYW4gQmxhbmsgPHdhbGRpQGRlYmlhbi5vcmc+LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjkzNTY0LgoKMjAwNC0xMi0xOSAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCgkqIHN0cmFjZS5jIChtYWluKSBbIVVTRV9QUk9DRlNdOiBJbiBjaGlsZCBwcm9jZXNzLCByYWlzZSBTSUdTVE9QCglyaWdodCBiZWZvcmUgZXhlY3YoKSBjYWxsLiAgUmVtb3ZlIGZha2VfZXhlY3ZlKCkgY2FsbC4KCSogZGVmcy5oIChmYWtlX2V4ZWN2ZSk6IFJlbW92ZSB1bnVzZWQgZGVjbGFyYXRpb24uCgkqIHByb2Nlc3MuYyAoZmFrZV9leGVjdmUpOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9uLgoJRml4ZXMgUkgjMTQzMzY1LgoKMjAwNS0wMi0wNCAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjUuOS4KCSogZGViaWFuL2NoYW5nZWxvZywgc3RyYWNlLnNwZWM6IDQuNS45LTIuCgoJKiBmaWxlLmMgKE9fTEFSR0VGSUxFKTogT21pdCB3aGVuICN1bmRlZidkIGJlY2F1c2UgaXQgd2FzIHplcm8uCgoyMDA1LTAyLTAyICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogZGViaWFuL2NvbnRyb2w6IEFkZCBzdHJhY2UtdWRlYiBwYWNrYWdlIGZvciBpbnN0YWxsZXIgZGVidWdnaW5nLgoJKiBkZWJpYW4vcnVsZXMgKGJpbmFyeS1hcmNoKTogQnVpbGQgaXQuCglGcm9tIEpvc2h1YSBLd2FuIDxqb3Noa0B0cmlwbGVoZWxpeC5vcmc+LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjY4Mjk0LgoKCSogZmlsZS5jIChvcGVubW9kZXMpIFtPX0xBUkdFRklMRV0gW09fTEFSR0VGSUxFID09IDBdOiBSZWRlZmluZSB0bwoJa25vd24gdmFsdWVzIGZvciBMaW51eC4KCgkqIHV0aWwuYyAocHJpbnRjYWxsKTogUHJpbnQgMTYgP3Mgd2hlbiBsb25nIGlzIDggYnl0ZXMuCglGaXhlcyBSSCMxNDY5MzIuCgoJKiBsaW51eC9zcGFyYy9zeXNjYWxsLmg6IERlY2xhcmUgc3lzX2Vwb2xsX2NyZWF0ZSwgc3lzX2Vwb2xsX2N0bCwKCXN5c19lcG9sbF93YWl0LgoJKiBsaW51eC9zcGFyYzY0L3N5c2NhbGwuaDogSnVzdCAjaW5jbHVkZSAiLi4vc3BhcmMvc3lzY2FsbC5oIiBoZXJlLgoJKiBpb2N0bC5jIChuaW9jdGxlbnRzMik6IEFkZCBjb25zdCB0byB0eXBlLgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjc4NDQ5LgoKCSogc29jay5jIChpZmZmbGFncyk6IE5ldyB2YXJpYWJsZSwgdGFibGUgb2YgSUZGXyogdmFsdWVzLgoJKHByaW50X2FkZHIpOiBOZXcgZnVuY3Rpb24uCgkoc29ja19pb2N0bCk6IEhhbmRsZSBTSU9DR0lGQUREUiwgU0lPQ0dJRkRTVEFERFIsIFNJT0NHSUZCUkRBRERSLAoJU0lPQ0dJRk5FVE1BU0ssIFNJT0NHSUZGTEFHUywgU0lPQ0dJRk1FVFJJQywgU0lPQ0dJRk1UVSwgU0lPQ0dJRlNMQVZFLAoJU0lPQ0dJRkhXQUREUi4JVXNlIHByaW50X2FkZHIgZm9yIFNJT0NHSUZDT05GLCBTSU9DR0lGTkFNRSwgYW5kCglTSU9DR0lGSU5ERVgsIGFuZCBmaXggdGhlaXIgb3V0cHV0LgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCUZpeGVzIFJIIzEzODIyMy4KCUZpeGVzIERlYmlhbiBidWcgIzE5MjE2NC4KCjIwMDQtMTItMjAgIERtaXRyeSBWLiBMZXZpbiAgPGxkdkBhbHRsaW51eC5vcmc+CgoJKiBjb25maWd1cmUuYWM6IFVzZSBBQ19HTlVfU09VUkNFIG1hY3JvIGluc3RlYWQgb2YgY2hhbmdpbmcgQ0ZMQUdTLgoJKiBkZWZzLmggW0hBVkVfQ09ORklHX0hdOiBJbmNsdWRlIGNvbmZpZy5oIGZpcnN0LgoJKiBzdHJhY2UuYzogSW5jbHVkZSAiZGVmcy5oIiBmaXJzdC4KCUZpeGVzIFJIIzE0MzM3MC4KCgkqIHN5c2NhbGwuYyAoY2FsbF9zdW1tYXJ5KTogRml4IHBvdGVudGlhbCBOVUxMIGRlcmVmZXJlbmNlLgoJRml4ZXMgUkgjMTQzMzY5LgoKMjAwNC0xMi0xOSAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCgkqIHN5c2NhbGwuYyAocXVhbF9zaWduYWwpOiBDaGVjayBib3VuZHMgZm9yIG51bWVyaWMgc2lnbmFsIG5hbWVzLgoJRml4IHBhcnNlciBvZiBzeW1ib2xpYyBzaWduYWwgbmFtZXMuCglGaXggcmV0dXJuIGNvZGUsIGFzIHJlcXVpcmVkIGJ5IHF1YWxpZnkoKSBmdW5jdGlvbi4KCSogc3lzY2FsbC5jIChxdWFsX2Rlc2MpOiBDaGVjayBib3VuZHMgZm9yIGRlc2NyaXB0b3IgbnVtYmVyLgoJKiBzeXNjYWxsLmMgKHF1YWxfc3lzY2FsbCk6IENvcnJlY3QgcmV0dXJuIGNvZGUsIHRvIGJlIGNvbnNpc3RlbnQKCXdpdGggcXVhbGlmeSgpIGFuZCBvdGhlciBxdWFsXyogZnVuY3Rpb25zLgoJRml4ZXMgUkgjMTQzMzYyLgoKMjAwNS0wMi0wMSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHN5c3RlbS5jIFtMSU5VWF0gKE1TX01BTkRMT0NLLCBNU19OT0FUSU1FLCBNU19OT0RJUkFUSU1FLCBNU19CSU5ELAoJTVNfTU9WRSwgTVNfUkVDLCBNU19WRVJCT1NFLCBNU19QT1NJWEFDTCwgTVNfQUNUSVZFLCBNU19OT1VTRVIpOgoJTmV3IG1hY3Jvcy4KCVtMSU5VWF0gKG1vdW50X2ZsYWdzKTogQWRkIHRoZW0uCglbTElOVVhdIChzeXNfbW91bnQpOiBJZiBhbnkgb2YgKE1TX0JJTkR8TVNfTU9WRXxNU19SRU1PVU5UKSBiaXRzIGFyZQoJc2V0IGluIHRoZSBmbGFncyBhcmd1bWVudCwgZG9uJ3QgdHJ5IHRvIGZldGNoIHRoZSBmaWxlc3lzdGVtIHN0cmluZy4KCUZpeGVzIFJIIzE0MTkzMi4KCgkqIGNvbmZpZy5ndWVzczogVXBkYXRlIGZyb20gY2Fub25pY2FsIHZlcnNpb24sIHRpbWVzdGFtcCAyMDA0LTExLTEyLgoJKiBjb25maWcuc3ViOiBMaWtld2lzZSwgdGltZXN0YW1wIDIwMDQtMTEtMzAuCgoJKiBwcm9jZXNzLmMgW0xJTlVYXSBbWDg2XzY0XSAoc3lzX2FyY2hfcHJjdGwpOiBOZXcgZnVuY3Rpb24uCgkqIGxpbnV4L3N5c2NhbGwuaDogRGVjbGFyZSBpdC4KCSogbGludXgveDg2XzY0L3N5c2NhbGxlbnQuaDogVXNlIGl0LgoJUGFydCBvZiBSSCMxNDI2NjcuCgoJKiBwcm9jZXNzLmMgKHN5c19zY2hlZF9zZXRzY2hlZHVsZXIpOiBVc2UgJSNseCBmb3JtYXQgZm9yIGJhZCBwb2ludGVyLgoJKHN5c19zY2hlZF9nZXRwYXJhbSwgc3lzX3NjaGVkX3NldHBhcmFtKTogTGlrZXdpc2UuCglQYXJ0IG9mIFJIIzE0MjY2Ny4KCgkqIHNpZ25hbC5jIFtIQVZFX1NJR0FDVElPTl0gW0xJTlVYICYmIFg4Nl82NF0gKFNBX1JFU1RPUkVSKTogRGVmaW5lCgloZXJlIHRvby4KCVBhcnQgb2YgUkgjMTQyNjY3LgoKCSogbGludXgvc3lzY2FsbGVudC5oOiBVc2Ugc3lzX21pbmNvcmUgaW5zdGVhZCBvZiBwcmludGFyZ3MuCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLiAgQWxzbyB1c2Ugc3lzX2dldHJsaW1pdCwKCXN5c19zZW10aW1lZG9wLCBzeXNfdW1vdW50Mi4KCVBhcnQgb2YgUkgjMTQyNjY3LgoKCSogc3lzY2FsbC5jIChxdWFsX3NpZ25hbCk6IEZpeCBpbnZlcnRlZCByZXR1cm4gdmFsdWUgYW5kIGJvZ3VzCglhcmd1bWVudCB0byBxdWFsaWZ5X29uZSBpbiB0aGUgbmFtZWQgY2FzZS4KCgkqIGZpbGUuYyAocHJpbnRfeGF0dHJfdmFsKTogRG9uJ3QgdXNlIGF1dG8gYXJyYXkgc2l6ZWQgYnkgc3lzY2FsbAoJYXJndW1lbnQuICBVc2UgbWFsbG9jIGluc3RlYWQsIHNvIGl0IGNhbiBmYWlsIGZvciBpbnNhbmUgdmFsdWVzLgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjgzNzA0LgoKCSogbmV0LmMgKHN5c19nZXRzb2Nrb3B0KTogRml4IGEgZm9ybWF0ICVsZCAtPiAlZC4KCgkqIGxpbnV4L3N5c2NhbGwuaCBbSUE2NF0gKFNZU19zZW10aW1lZG9wKTogI3VuZGVmIGl0LgoKCSogc3lzY2FsbC5jIChzeXNjYWxsX2VudGVyKSBbWDg2XzY0XTogRml4IDMyLWJpdCBhcmd1bWVudCByZWdpc3RlciBtYXAKCW5vdCB0byBkb3VibGUgdGhlIG1pZGRsZSBlbnRyeSEKCUZpeGVzIFJIIzE0NjA5My4KCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IEZpeCBleGl0X2dyb3VwIGVudHJ5LgoKCSogdXRpbC5jIChnZXRwYykgW1MzOTAgfHwgUzM5MFhdOiBJbXBsZW1lbnQgaXQuCglQYXRjaCBieSBEYXZpZCBXaWxkZXIgPHdpbGRlckB1cy5pYm0uY29tPi4KCgkqIGxpbnV4L2lhNjQvc3lzY2FsbGVudC5oOiBBZGQgZmFkdmlzZTY0LCBmc3RhdGZzNjQsIHN0YXRmczY0LCBtYmluZCwKCVtnc11ldF9tZW1wb2xpY3ksIG1xXyosIHN5c19rZXhlY19sb2FkLCB2c2VydmVyLCBhbmQgd2FpdGlkLgoJRml4ZXMgUkgjMTQ2MjQ1LgoKMjAwNS0wMS0yMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIG5ldC5jIChzeXNfZ2V0c29ja29wdCk6IENoYW5nZSB0eXBlIG9mIGxlbiB0byBpbnQuCgoyMDA0LTEwLTE5ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjLCBORVdTOiBWZXJzaW9uIDQuNS44LgoJKiBkZWJpYW4vY2hhbmdlbG9nLCBzdHJhY2Uuc3BlYzogNC41LjgtMS4KCgkqIGZpbGUuYyAoc3lzX2ZhZHZpc2U2NCk6IENvbmRpdGlvbmFsaXplIGp1c3Qgb24gW0xJTlVYXS4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIHN5cy9lcG9sbC5oLgoJKiBkZXNjLmM6IFByb3RlY3QgI2luY2x1ZGUgPHN5cy9lcG9sbC5oPiB3aXRoIFtIQVZFX1NZU19FUE9MTF9IXS4KCShlcG9sbGN0bHMsIGVwb2xsZXZlbnRzKTogUHJvdGVjdCBlYWNoIGVudHJ5IHdpdGggI2lmZGVmIG9uIGl0cyBtYWNyby4KCgkqIHN0cmFjZS5jIChoYW5kbGVfZ3JvdXBfZXhpdCk6IERvbid0IGRldGFjaCBsZWFkZXIgdGhhdCB3YXNuJ3QKCVRDQl9BVFRBQ0hFRC4gIEluc3RlYWQgbWFyayBpdCB3aXRoIFRDQl9HUk9VUF9FWElUSU5HLgoJUmVtb3ZlIGRyb3B0Y2IgbG9vcCBhdCBlbmQsIG5vIGxvbmdlciByZXF1aXJlZCBzaW5jZSAyLjYgcmVwb3J0cyBlYWNoCgl0aHJlYWQgZGVhdGguCglGaXhlcyBSSCMxMzUyNTQuCgoJKiBzdHJhY2UuYyAodHJhY2UpOiBVc2UgaGFuZGxlX2dyb3VwX2V4aXQgZm9yIG5vbi1UQ0JfQVRUQUNIRUQgY2hpbGQKCXRha2luZyBzaWduYWwgd2hlbiBpdCBoYXMgbmNsb25lX3RocmVhZHMgPiAwLgoKCSogc3RyYWNlLmMgKGhhbmRsZV9ncm91cF9leGl0LCB0cmFjZSk6IE1hcmsgbGVhZGVyIHdpdGgKCVRDQl9HUk9VUF9FWElUSU5HIGFuZCBkb24ndCBiZSBzdXJwcmlzZWQgYXQgY2hpbGQgZGVhdGhzIHdoZW4gdGhlaXIKCWxlYWRlciBoYXMgaXQgc2V0LgoJRml4ZXMgUkgjMTMyMTUwLgoKCSogcHJvY2Vzcy5jIChXQ09SRUZMQUcpOiBEZWZpbmUgaWYgbm90IGRlZmluZWQuCgkoV19TVE9QQ09ERSwgV19FWElUQ09ERSk6IExpa2V3aXNlLgoJUmVwb3J0ZWQgYnkgTWFydHkgTGVpc25lciA8bWxlaXNuZXJAZW5nLm1jLnhlcm94LmNvbT4uCgoJKiBzb2NrLmMgWyEgTElOVVhdOiBJbmNsdWRlIDxzeXMvc29ja2V0Lmg+IGJlZm9yZSA8c3lzL3NvY2tpby5oPi4KCVJlcG9ydGVkIGJ5IE1hcnR5IExlaXNuZXIgPG1sZWlzbmVyQGVuZy5tYy54ZXJveC5jb20+LgoKCSogZGViaWFuL3J1bGVzOiBNYWtlIHN0cmFjZTY0LjEuZ3ogc3ltbGluayB0byBzdHJhY2UuMS5neiBpbnN0ZWFkIG9mCglzdHJhY2U2NC4xIHRvIHN0cmFjZS4xLCB3aGljaCBkb2Vzbid0IGV4aXN0LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjY5MjIwLgoKMjAwNC0wOS0wNSAgUGhpbCBCbHVuZGVsbCAgPHBiQG5leHVzLmNvLnVrPgoKCSogbGludXgvYXJtL3N5c2NhbGxlbnQuaDogTmV3IGZpbGUuCgoyMDA0LTEwLTE5ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogZGViaWFuL3J1bGVzIChERUJfQlVJTERfR05VX1RZUEUsIENPTkZJR19PUFRTKTogTmV3IHZhcmlhYmxlcy4KCVskKERFQl9IT1NUX0dOVV9UWVBFKSA9PSBzMzkwLWxpbnV4XSAoYnVpbGQ2NCwgSE9TVDY0LCBDQzY0KTogU2V0IHRoZW0uCgkoYnVpbGQvTWFrZWZpbGUpOiBVc2UgJChDT05GSUdfT1BUUykuCgkoYnVpbGQ2NC9NYWtlZmlsZSk6IFBhc3MgLS1ob3N0IGFzIHdlbGwgYXMgLS1idWlsZC4KCUZyb20gQmFzdGlhbiBCbGFuayA8d2FsZGlAZGViaWFuLm9yZz4uCglGaXhlcyBEZWJpYW4gYnVnICMyNzE1MDAuCgoJKiBsaW51eC9ocHBhL3N5c2NhbGxlbnQuaDogVXBkYXRlIGZvciAyLjYuOSBzeXNjYWxscy4KCUZyb20gUmFuZG9scGggQ2h1bmcgPHRhdXNxQGRlYmlhbi5vcmc+CglGaXhlcyBEZWJpYW4gYnVnICMyNzM4ODcuCgoJKiBmaWxlLmMgKHN5c19sbHNlZWspOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgoyMDA0LTA5LTE0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEB0d2lkZGxlLm5ldD4KCgkqIGxpbnV4L2FscGhhL3N5c2NhbGxlbnQuaDogQWRkIHRna2lsbCwgKnN0YXQ2NCwgdnNlcnZlciwgbWJpbmQsCglbZ3NdZXRfbWVtcG9saWN5LCBtcV8qLCB3YWl0aWQuCgoyMDA0LTEwLTA3ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogZmlsZS5jIChzeXNfbGxzc2VrLCBzeXNfcmVhZGFoZWFkLCBzeXNfZmFkdmlzZTY0LCBzeXNfZmFkdmlzZTY0XzY0KToKCVVzZSBMT05HX0xPTkcgbWFjcm8uCgkqIGlvLmMgKHN5c19wcmVhZCwgc3lzX3B3cml0ZSwgc3lzX3NlbmRmaWxlKTogTGlrZXdpc2UuCgoJKiBsaW51eC94ODZfNjQvc3lzY2FsbGVudC5oOiBGaXggYm90Y2hlZCB0YWJsZSBlbnRyaWVzLgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCgkqIG1lbS5jIFtMSU5VWF0gKHN5c19tYmluZCwgc3lzX3NldF9tZW1wb2xpY3ksIHN5c19nZXRfbWVtcG9saWN5KToKCU5ldyBmdW5jdGlvbnMuCgkqIGxpbnV4L3N5c2NhbGwuaDogRGVjbGFyZSB0aGVtLgoJKiBsaW51eC94ODZfNjQvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IEhhbmRsZSBtYmluZCwgc2V0X21lbXBvbGljeSwgZ2V0X21lbXBvbGljeS4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCgoJKiBmaWxlLmMgW0xJTlVYICYmIChJMzg2IHx8IFg4Nl82NCldIChzeXNfZmFkdmlzZTY0LCBzeXNfZmFkdmlzZTY0XzY0KToKCU5ldyBmdW5jdGlvbnMuCgkqIGxpbnV4L3N5c2NhbGwuaDogRGVjbGFyZSB0aGVtLgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IEhhbmRsZSBmYWR2aXNlNjQgYW5kIGZhZHZpc2U2NF82NCB1c2luZyB0aG9zZS4KCSogbGludXgveDg2XzY0L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCglGcm9tIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoKMjAwNC0wOS0xMyAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCgkqIGxpbnV4L2lvY3Rsc29ydC5jIChtYWluKTogT21pdCBkdXBsaWNhdGUgbGluZXMKCSh3aXRoIHNhbWUgbmFtZSBhbmQgY29kZSkgZnJvbSBvdXRwdXQuCgkqIGxpbnV4L2lvY3RsZW50LnNoOiBCdWlsZCB0aGUgbGlzdCBvZiBpb2N0bHMgZGVmaW5lZCBpbgoJc2NzaS9zZy5oICgweDIyLi4pLCBzY3NpL3Njc2kuaCBhbmQgc2NzaS9zY3NpX2lvY3RsLmggKDB4NTMuLiksCglhcyBzdWdnZXN0ZWQgYnkgUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgoJKiBsaW51eC9pb2N0bGVudC5oOiBSZWdlbmVyYXRlZC4KCUZpeGVzIFJIIzEyOTgwOC4KCjIwMDQtMDktMTMgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+CgkgICAgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgoKCSogdGltZS5jIFtMSU5VWF0gKHByaW50X3J0Yyk6IE5ldyBmdW5jdGlvbiwgZm9yIHByaW50aW5nIHJ0Y190aW1lCglzdHJ1Y3R1cmUuCglbTElOVVhdIChydGNfaW9jdGwpOiBOZXcgZnVuY3Rpb24sIGZvciBwYXJzaW5nIFJUQ18qIGlvY3Rscy4KCSogaW9jdGwuYyBbTElOVVhdIChpb2N0bF9kZWNvZGUpOiBDYWxsIHJ0Y19pb2N0bC4KCSogZGVmcy5oIFtMSU5VWF06IERlY2xhcmUgcnRjX2lvY3RsLgoJRml4ZXMgUkgjNTg2MDYuCgoyMDA0LTEwLTA2ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogZGVzYy5jIFtMSU5VWF0gKHN5c19lcG9sbF9jcmVhdGUsIHN5c19lcG9sbF9jdGwsIHN5c19lcG9sbF93YWl0KToKCU5ldyBmdW5jdGlvbnMuCgkqIGxpbnV4L3N5c2NhbGwuaDogRGVjbGFyZSB0aGVtLgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IFVzZSB0aG9zZSBmb3IgZXBvbGxfKiBzeXNjYWxscy4KCSogbGludXgvYWxwaGEvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCSogbGludXgvaHBwYS9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9pYTY0L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3Bvd2VycGMvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCSogbGludXgvczM5MC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9zMzkweC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9zcGFyYy9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9zcGFyYzY0L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3NwYXJjNjQvc3lzY2FsbGVudDIuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCUZpeGVzIFJIIzEzNDQ2My4KCgkqIHJlc291cmNlLmMgKHJlc291cmNlcyk6IEFkZCBSTElNSVRfTE9DS1MsIFJMSU1JVF9TSUdQRU5ESU5HLAoJYW5kIFJMSU1JVF9NU0dRVUVVRSwgaWYgZGVmaW5lZC4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCglGaXhlcyBSSCMxMzM1OTQuCgoJKiBuZXQuYyBbSEFWRV9TRU5ETVNHXSAocHJpbnRjbXNnaGRyKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50bXNnaGRyKTogVXNlIGl0LgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCUZpeGVzIFJIIzEzMTY4OS4KCgkqIGZpbGUuYyAoc3ByaW50bW9kZSk6IEFkZCBjb25zdCB0byByZXR1cm4gdHlwZS4KCShzcHJpbnRmc3R5cGUpOiBMaWtld2lzZS4KCSogc2lnbmFsLmMgKHByaW50c2lnaW5mbyk6IEFkZCBhIGNvbnN0LgoKMjAwNC0wOS0xNSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IFVzZSBzeXNfd2FpdGlkLgoKCSogbGludXgvc3lzY2FsbGVudC5oOiB3YWl0aWQgdGFrZXMgNSBhcmd1bWVudHMsIGFuZCBpcyBpbiBUUCBjYXRlZ29yeS4KCSogcHJvY2Vzcy5jIChzeXNfd2FpdGlkKTogSGFuZGxlIGZpZnRoIGFyZ3VtZW50IChzdHJ1Y3QgcnVzYWdlICopLgoKMjAwNC0wOS0xMSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHRpbWUuYyAoc3lzX2Nsb2NrX25hbm9zbGVlcCk6IFByaW50IHplcm8gZmxhZ3MgYXJnIGNvcnJlY3RseS4KCShzeXNfdGltZXJfc2V0dGltZSk6IExpa2V3aXNlLgoJKHByaW50c2lnZXZlbnQpOiBQcmludCBzaWduYWxzIGJ5IG5hbWUgZm9yIFNJR0VWX1NJR05BTC4KCShzeXNfdGltZXJfY3JlYXRlKTogUHJpbnQgY2xvY2sgSUQgc3ltYm9saWNhbGx5LgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCUZpeGVzIFJIIzEzMTQyMC4KCjIwMDQtMDktMDcgIE1pY2hhbCBMdWR2aWcgIDxtbHVkdmlnQHN1c2UuY3o+CgoJKiBkZWZzLmggKG5pb2N0bGVudHMxLCBuc2lnbmFsczIpOiBGaXggdHlwb3MgaW4gZGVjbHMuCgoyMDA0LTA5LTAzICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3lzY2FsbC5jIChxdWFsX29wdGlvbnMpOiBBZGQgY29uc3QgdG8gZGVmbi4KCVVwZGF0ZSBhbGwgdXNlcy4KCShjYWxsX2NvdW50LCBlcnJvcl9jb3VudCwgdHZfY291bnQpOiBWYXJpYWJsZXMgcmVtb3ZlZC4KCShzdHJ1Y3QgY2FsbF9jb3VudHMsIGNvdW50cyk6IE5ldyB0eXBlIGFuZCB2YXJpYWJsZS4KCVVwZGF0ZSBhbGwgdXNlcnMgb2YgdGhlIG9sZCB0aHJlZSB0byB1c2UgdGhlIG5ldyBhcnJheSBvZiBzdHJ1Y3RzLgoJKHRyYWNlX3N5c2NhbGwpOiBBbGxvY2F0ZSBjb3VudHMgb24gZmlyc3QgdXNlLgoJKHNvcnRlZF9jb3VudCk6IFZhcmlhYmxlIHJlbW92ZWQuCgkoY2FsbF9zdW1tYXJ5KTogQWxsb2NhdGUgbG9jYWxseS4KCgkqIHN5c2NhbGwuYyAoc3lzZW50MCwgc3lzZW50MSwgc3lzZW50Miwgc3lzZW50KTogQWRkIGNvbnN0IHRvIGRlZm4uCgkobnN5c2NhbGxzMCwgbnN5c2NhbGxzMSwgbnN5c2NhbGxzMik6IExpa2V3aXNlLgoJKGVycm5vZW50MCwgZXJybm9lbnQxLCBlcnJub2VudDIsIGVycm5vZW50KTogTGlrZXdpc2UuCgkobmVycm5vczAsIG5lcnJub3MxLCBuZXJybm9zMik6IExpa2V3aXNlLgoJKiBzaWduYWwuYyAoc2lnbmFsZW50MCwgc2lnbmFsZW50MSwgc2lnbmFsZW50Mik6IExpa2V3aXNlLgoJKG5zaWduYWxzMCwgbnNpZ25hbHMxLCBuc2lnbmFsczIpOiBMaWtld2lzZS4KCShzaWduYW1lKTogTElrZXdpc2UuCgkqIGlvY3RsLmMgKGlvY3RsZW50MCwgaW9jdGxlbnQxLCBpb2N0bGVudDIpOiBMaWtld2lzZS4KCShuaW9jdGxlbnRzMCwgbmlvY3RsZW50czEsIG5pb2N0bGVudHMyKTogTGlrZXdpc2UuCgkoaW9jdGxfbG9va3VwLCBpb2N0bF9uZXh0X21hdGNoKTogTGlrZXdpc2UuCgkqIGRlZnMuaDogVXBkYXRlIGRlY2xzLgoJKiBpby5jIChzeXNfaW9jdGwpOiBVcGRhdGUgdXNlcnMuCgoJKiB1dGlsLmMgKHhsb29rdXAsIHByaW50eHZhbCwgYWRkZmxhZ3MsIHByaW50ZmxhZ3MpOiBVc2UgY29uc3QgZm9yCglzdHJ1Y3QgeGxhdCAqIGFyZ3VtZW50LgoJKiBkZWZzLmggKHhsb29rdXAsIHByaW50eHZhbCwgYWRkZmxhZ3MsIHByaW50ZmxhZ3MpOiBVcGRhdGUgZGVjbHMuCgkqIGJqbS5jOiBBZGQgY29uc3QgdG8gYWxsIHN0cnVjdCB4bGF0IGRlZm5zLgoJKiBkZXNjLmM6IExpa2V3aXNlLgoJKiBmaWxlLmM6IExpa2V3aXNlLgoJKiBpcGMuYzogTGlrZXdpc2UuCgkqIG1lbS5jOiBMaWtld2lzZS4KCSogbmV0LmM6IExpa2V3aXNlLgoJKiBwcm9jLmM6IExpa2V3aXNlLgoJKiBwcm9jZXNzLmM6IExpa2V3aXNlLgoJKiByZXNvdXJjZS5jOiBMaWtld2lzZS4KCSogc2lnbmFsLmM6IExpa2V3aXNlLgoJKiBzb2NrLmM6IExpa2V3aXNlLgoJKiBzdHJlYW0uYzogTGlrZXdpc2UuCgkqIHN5c3RlbS5jOiBMaWtld2lzZS4KCSogdGVybS5jOiBMaWtld2lzZS4KCSogdGltZS5jOiBMaWtld2lzZS4KCSogdXRpbC5jOiBMaWtld2lzZS4KCjIwMDQtMDktMDEgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC94ODZfNjQvc3lzY2FsbGVudC5oOiBBZGQgbmV3IGVudHJpZXMgZm9yIHRpbWVyXyosIGNsb2NrXyosIGFuZAoJbXFfKiBzeXNjYWxscywgYW5kIG5hbWVzIG9ubHkgZm9yIG5ldyBjYWxscyB1cCB0byAyNTIuCgkqIGxpbnV4L3N5c2NhbGxlbnQuaDogQWRkIHdhaXRpZC4KCSogbGludXgveDg2XzY0L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3N5c2NhbGwuaDogRGVjbGFyZSBzeXNfd2FpdGlkLgoKCSogcHJvY2Vzcy5jIChpbnRlcm5hbF93YWl0KTogVGFrZSBzZWNvbmQgYXJnIGdpdmluZyBpbmRleCBvZiBmbGFncwoJYXJndW1lbnQuCgkqIGRlZnMuaDogVXBkYXRlIHByb3RvdHlwZS4KCSogc3lzY2FsbC5jIChpbnRlcm5hbF9zeXNjYWxsKTogVXBkYXRlIGNhbGxlci4KCUFsc28gdXNlIGludGVybmFsX3dhaXQgZm9yIFNZU193YWl0aWQuCgkqIHByb2Nlc3MuYyAoc3lzX3dhaXRpZCk6IERlZmluZSBmb3IgW0xJTlVYXSBhcyB3ZWxsLgoJRG9uJ3QgdHdlYWsgVENCX1NVU1BFTkRFRC0taW50ZXJuYWxfd2FpdCBkb2VzIHRoYXQuCgkod2FpdGlkX3R5cGVzKTogQ29uZGl0aW9uYWxpemUgdXNlIG9mIG5vbnN0YW5kYXJkIFBfKiBtYWNyb3MuCgoyMDA0LTA4LTMxICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjLCBORVdTOiBWZXJzaW9uIDQuNS43LgoJKiBkZWJpYW4vY2hhbmdlbG9nOiA0LjUuNy0xLgoJKiBzdHJhY2Uuc3BlYzogNC41LjctMi4KCgkqIGRlYmlhbi9ydWxlczogUmV3cml0ZSBzcGFyYzY0IGNoYW5nZSBvZiAyMDA0LTA3LTEyLgoJQWx3YXlzIGRvIGVhY2ggYnVpbGQgaW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnkuCglGaXhlcyBEZWJpYW4gYnVnICMyNTQ3MjguCgoJKiB0aW1lLmMgKGNsb2NrbmFtZXMpOiBVc2UgI2lmZGVmIGFyb3VuZCBDTE9DS18qIHVzZXMuCgoJKiBzdHJhY2UuMTogU2F5IHRoYXQgLWMgc2hvd3Mgc3lzdGVtIENQVSB0aW1lLCBub3QgcmVhbCB0aW1lLgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjU0NDM4LgoKCSogc3lzY2FsbC5jIChkdW1waW8pOiBNYXRjaCBwcmVhZCBhbmQgcHdyaXRlIHN5c3RlbSBjYWxscyB0b28uCglGaXhlcyBEZWJpYW4gYnVnICMyMzk5NDcuCgoJKiBuZXQuYyAoc29ja29wdGlvbnMpOiBBZGQgYWxsIFNPXyogbWFjcm9zIGtub3duIGluIExpbnV4IDIuNi45LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMTcxNjUzLgoKMjAwNC0wNy0xMiAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCgkqIHNpZ25hbC5jIFtMSU5VWF0gKHBhcnNlX3NpZ3NldF90KTogRml4IGhleCBzdHJpbmdzIHBhcnNlci4KCUZpeGVzIFJIIzEyODA5MS4KCjIwMDQtMDgtMzAgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBzdHJhY2UuYyAobWFpbik6IERvbid0IGNhbGwgZmFrZV9leGVjdmUgdW5kZXIgLWMuCglGcm9tIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoJRml4ZXMgUkgjMTI5MTY2LgoKCSogbmV0LmMgKHNvY2tpcG9wdGlvbnMpOiBBZGQgc29tZSBvcHRpb25zLgoJW1NPTF9JUFY2XSAoc29ja2lwdjZvcHRpb25zKTogTmV3IHZhcmlhYmxlLgoJKHN5c19nZXRzb2Nrb3B0LCBwcmludHNvY2tvcHQpOiBVc2UgaXQgZm9yIFNPTF9JUFY2IGxldmVsLgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCUZpeGVzIFJIIzEyODM5MS4KCgkqIHRpbWUuYyAoY2xvY2tuYW1lcyk6IE5ldyB2YXJpYWJsZSwgc3ltYm9saWMgbmFtZXMgZm9yIGNsb2NrX3QuCgkoc3lzX2Nsb2NrX3NldHRpbWUsIHN5c19jbG9ja19nZXR0aW1lLCBzeXNfY2xvY2tfbmFub3NsZWVwKTogVXNlIGl0LgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCUZpeGVzIFJIIzEyOTM3OC4KCgkqIHN5c3RlbS5jIChwZXJzb25hbGl0eV9vcHRpb25zKTogSGFyZC1jb2RlIHZhbHVlcyBoZXJlLgoJRG9uJ3QgI2luY2x1ZGUgPGxpbnV4L3BlcnNvbmFsaXR5Lmg+IGF0IGFsbC4KCUZpeGVzIFJIIzEzMDk2NSBhbmQgRGViaWFuIGJ1ZyAjNDA1ODguCgoJKiBmaWxlLmMgKHByaW50X3hhdHRyX3ZhbCk6IE5ldyBmdW5jdGlvbiB0byBzaG93IGF0dHJpYnV0ZSB2YWx1ZXMuCgkoc3lzX3NldHhhdHRyLCBzeXNfZnNldHhhdHRyLCBzeXNfZ2V0eGF0dHIsIHN5c19mZ2V0eGF0dHIpOiBVc2UgaXQuCglGcm9tIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoJRml4ZXMgUkgjMTMxMTc3LgoKMjAwNC0wNy0xMiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjUuNi4KCSogc3RyYWNlLnNwZWMsIGRlYmlhbi9jaGFuZ2Vsb2c6IDQuNS42LTEuCgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBsaW51eC9zcGFyYzY0IGZpbGVzLgoKCSogZGViaWFuL3J1bGVzOiBPbiBzcGFyYy1saW51eCwgYnVpbGQgc3RyYWNlNjQgYXMgd2VsbC4KCUZyb20gQmVuIENvbGxpbnMgPGJjb2xsaW5zQGRlYmlhbi5vcmc+LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjU0NzI4LgoKMjAwNC0wNy0wNyAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0PgoKCSogbGludXgvc3BhcmMvc3lzY2FsbGVudC5oOiBTeW5jIHdpdGggcmVhbGl0eS4KCSogbGludXgvc3BhcmMvc3lzY2FsbC5oIChzeXNfc2VuZGZpbGU2NCwgc3lzX2Z1dGV4LCBzeXNfZ2V0dGlkLAoJc3lzX3NjaGVkX3NldGFmZmluaXR5LCBzeXNfc2NoZWRfZ2V0YWZmaW5pdHksIHN5c19zZXR4YXR0ciwKCXN5c19sc2V0eGF0dHIsIHN5c19mc2V0eGF0dHIsIHN5c19nZXR4YXR0ciwgc3lzX2xnZXR4YXR0ciwKCXN5c19mZ2V0eGF0dHIsIHN5c19saXN0eGF0dHIsIHN5c19sbGlzdHhhdHRyLCBzeXNfZmxpc3R4YXR0ciwKCXN5c19yZW1vdmV4YXR0ciwgc3lzX2xyZW1vdmV4YXR0ciwgc3lzX2ZyZW1vdmV4YXR0ciwKCXN5c19yZW1hcF9maWxlX3BhZ2VzLCBzeXNfcmVhZGFoZWFkLCBzeXNfdGdraWxsLCBzeXNfc3RhdGZzNjQsCglzeXNfZnN0YXRmczY0LCBzeXNfY2xvY2tfc2V0dGltZSwgc3lzX2Nsb2NrX2dldHRpbWUsCglzeXNfY2xvY2tfZ2V0cmVzLCBzeXNfY2xvY2tfbmFub3NsZWVwLCBzeXNfdGltZXJfY3JlYXRlLAoJc3lzX3RpbWVyX3NldHRpbWUsIHN5c190aW1lcl9nZXR0aW1lKTogTmV3IGRlY2xhcmF0aW9ucy4KCSogbGludXgvc3BhcmM2NC9kdW1teTIuaCwgbGludXgvc3BhcmM2NC9zeXNjYWxsZW50Mi5oLAoJbGludXgvc3BhcmM2NC9zeXNjYWxsLmgsIGxpbnV4L3NwYXJjNjQvZXJybm9lbnQuaCwKCWxpbnV4L3NwYXJjNjQvZXJybm9lbnQxLmgsIGxpbnV4L3NwYXJjNjQvZXJybm9lbnQyLmgsCglsaW51eC9zcGFyYzY0L2lvY3RsZW50LmgsIGxpbnV4L3NwYXJjNjQvaW9jdGxlbnQxLmgsCglsaW51eC9zcGFyYzY0L2lvY3RsZW50Mi5oLCBsaW51eC9zcGFyYzY0L3NpZ25hbGVudC5oLAoJbGludXgvc3BhcmM2NC9zaWduYWxlbnQuaCwgbGludXgvc3BhcmM2NC9zaWduYWxlbnQuaCwKCWxpbnV4L3NwYXJjNjQvc2lnbmFsZW50MS5oLCBsaW51eC9zcGFyYzY0L3NpZ25hbGVudDIuaCwKCWxpbnV4L3NwYXJjNjQvc3lzY2FsbDEuaCwgbGludXgvc3BhcmM2NC9zeXNjYWxsZW50LmgsCglsaW51eC9zcGFyYzY0L3N5c2NhbGxlbnQxLmg6IE5ldyBmaWxlcy4KCSogZGVmcy5oIChMSU5VWFNQQVJDKTogRGVmaW5lIGFsc28gd2hlbiBTUEFSQzY0LgoJKExJTlVYICYmIFNQQVJDNjQpOiBTZXQgU1VQUE9SVEVEX1BFUlNPTkFMSVRJRVMgdG8gMy4KCUlnbm9yZSBTSUdUUkFQIGFmdGVyIGV4ZWN2ZSBieSBkZWZpbmluZyBUQ0JfV0FJVEVYRUNWRS4KCURlZmluZSBwb3NzaWJseSBtaXNzaW5nIF9fTlJfZXhpdF9ncm91cC4gIERlY2xhcmUgZ2V0cnZhbDIuCgkqIGNvbmZpZ3VyZS5hYyAoc3BhcmM2NCk6IE5ldyBhcmNoaXRlY3R1cmUgY2FzZS4KCSogZmlsZS5jIChzdGF0X3NwYXJjNjQpOiBOZXcgc3RydWN0dXJlLgoJKHByaW50c3RhdF9zcGFyYzY0KTogTmV3IG91dHB1dCByb3V0aW5lIGZvciB0aGF0LgoJKHByaW50c3RhdCk6IENhbGwgaXQsIGlmIHBlcnNvbmFsaXR5IGlzIDIuCgkocHJpbnRzdGF0NjQpOiBMaWtld2lzZS4KCSogdXRpbC5jOiBDb25kaXRpb25hbGl6ZSBwdHJhY2UgZGVmaW5lcyBvbiBMSU5VWFNQQVJDCglub3QgTElOVVggJiYgU1BBUkMuCgkoU1BBUkM2NCAmJiBMSU5VWCk6IERlZmluZSByX3BjIHRvIHJfdHBjLCBhbmQgUFRSQUNFX0ZPT1JFR1MKCXRvIFBUUkFDRV9GT09SRUdTNjQgc28gdGhhdCBtb3JlIHNwYXJjIGNvZGUgY2FuIGJlIHNoYXJlZAoJYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdC4KCShfaGFja19zeXNjYWxsNSk6IENvcnJlY3QgdHJhcCBudW1iZXIgd2hlbiBTUEFSQzY0LgoJKFBUUkFDRV9XUklURXtURVhULERBVEF9KTogQWRkIFNQQVJDNjQgdG8gaWZkZWYgZ3VhcmQuCgkoZ2V0cGMpOiBIYW5kbGUgU1BBUkM2NCAmJiBMSU5VWC4KCShwcmludGNhbGwpOiBMaWtld2lzZS4KCShhcmcgZmV0Y2hpbmcvc2V0dGluZyk6IFVzZSBzYW1lIGNvZGUgZm9yIFNQQVJDNjQgTElOVVgKCWFzIGZvciBTUEFSQy4KCShzZXRicHQpOiBIYW5kbGUgU1BBUkM2NCAmJiBMSU5VWC4KCShjbGVhcmJwdCk6IExpa2V3aXNlLgoJKiBzaWduYWwuYzogQ29uZGl0aW9uYWxpemUgcHRyYWNlIGRlZmluZXMgb24gU1BBUkMgYW5kCglTUEFSQzY0LgoJKFNQQVJDNjQgJiYgTElOVVgpOiBEZWZpbmUgcl9wYyB0byByX3RwYywgYW5kIFBUUkFDRV9GT09SRUdTCgl0byBQVFJBQ0VfRk9PUkVHUzY0IHNvIHRoYXQgbW9yZSBzcGFyYyBjb2RlIGNhbiBiZSBzaGFyZWQKCWJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQuCgkobV9zaWdpbmZvKTogVXNlIHNhbWUgZGVmaW5pdGlvbiBvbiBTUEFSQzY0IGFzIFNQQVJDLgoJKHN5c19zaWdyZXR1cm4pOiBIYW5kbGUgTElOVVggJiYgU1BBUkM2NC4KCSogc3lzY2FsbC5jOiBDb25kaXRpb25hbGl6ZSBwdHJhY2UgZGVmaW5lcyBvbiBTUEFSQyBhbmQKCVNQQVJDNjQuCgkoU1BBUkM2NCAmJiBMSU5VWCk6IERlZmluZSByX3BjIHRvIHJfdHBjLCBhbmQgUFRSQUNFX0ZPT1JFR1MKCXRvIFBUUkFDRV9GT09SRUdTNjQgc28gdGhhdCBtb3JlIHNwYXJjIGNvZGUgY2FuIGJlIHNoYXJlZAoJYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdC4KCShnZXRzY25vKTogVXNlIHNhbWUgc3RhdGljIHN0YXRlIG9uIFNQQVJDNjQgYXMgU1BBUkMsCglhbmQgYWRkIFNQQVJDNjQgaGFuZGxpbmcuCgkoZ2V0X2Vycm9yKTogSGFuZGxlIExJTlVYICYmIFNQQVJDNjQuCgkoZm9yY2VfcmVzdWx0KTogTGlrZXdpc2UuCgkoc3lzY2FsbF9lbnRlcik6IExpa2V3aXNlLgoJKHRyYWNlX3N5c2NhbGwpOiBIYW5kbGUgc3lzX3NvY2tldGNhbGwgYW5kIHN5c19pcGMgb24gU1BBUkM2NAoJanVzdCBsaWtlIFNQQVJDLgoJKGdldHJ2YWwyKTogSGFuZGxlIExJTlVYICYmIFNQQVJDNjQuCgkqIHByb2Nlc3MuYzogQ29uZGl0aW9uYWxpemUgcHRyYWNlIGRlZmluZXMgb24gU1BBUkMgYW5kCglTUEFSQzY0LgoJKFNQQVJDNjQgJiYgTElOVVgpOiBEZWZpbmUgcl9wYyB0byByX3RwYywgYW5kIFBUUkFDRV9GT09SRUdTCgl0byBQVFJBQ0VfRk9PUkVHUzY0IHNvIHRoYXQgbW9yZSBzcGFyYyBjb2RlIGNhbiBiZSBzaGFyZWQKCWJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQuCgkoY2hhbmdlX3N5c2NhbGwpOiBIYW5kbGUgTElOVVggJiYgU1BBUkM2NC4KCShzdHJ1Y3RfdXNlcl9vZmZzZXRzKTogSWZkZWYgb3V0IHRob3NlIHdoaWNoIGRvIG5vdCBleGlzdAoJb24gU1BBUkM2NC4KCSogbmV0LmMgKHN5c19waXBlKTogSGFuZGxlIExJTlVYICYmIFNQQVJDNjQuCgkqIGlvY3RsLmM6IEZpeCBpbml0aWFsaXplciB0eXBvIGZvciBuaW9jdGxlbnRzMiwgd2FzCgluaW9jdGxlbnRzMSBieSBhY2NpZGVudC4KCjIwMDQtMDYtMjggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBwcm9jZXNzLmMgKGludGVybmFsX2V4ZWMpOiBNb3ZlIFRDQl9XQUlURVhFQ1ZFIGhhbmRsaW5nIGhlcmUuCgkoc3lzX2V4ZWN2ZSk6IFJlbW92ZSBpdCBoZXJlLgoKMjAwNC0wNy0xMiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIGxpbnV4L3NoNjQvc3lzY2FsbGVudC5oLgoKCSogZGViaWFuL2NvbnRyb2wgKFNlY3Rpb24pOiBNb3ZlIHRvIHV0aWxzLCBtYXRjaGluZyBEZWJpYW4gb3ZlcnJpZGUuCgoJKiBuZXQuYyAoYWRkcmZhbXMpOiBNYWtlIHZhcmlhYmxlIGdsb2JhbC4KCSogc29jay5jIChzb2NrX2lvY3RsKTogRGVjb2RlIHRoZSBhcmd1bWVudHMgZm9yIFNJT0NHSUZOQU1FLAoJU0lPQ0dJRklOREVYLCBhbmQgU0lPQ0dJRkNPTkYuCglGcm9tIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoJRml4ZXMgUkgjMTI2OTE3LgoKCSogbGludXgvaW9jdGxzb3J0LmM6IEFkZCBzb21lICNpbmNsdWRlcy4KCVtQT1dFUlBDXTogS2x1ZGdlIG91dCBoaWdoIGJpdHMuCgkqIGxpbnV4L2lhNjQvaW9jdGxlbnQuaDogUmVnZW5lcmF0ZWQgdXNpbmcgUkhFTDMgaGVhZGVycy4KCSogbGludXgvcG93ZXJwYy9pb2N0bGVudC5oOiBMaWtld2lzZS4KCjIwMDQtMDctMTEgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9pb2N0bGVudC5zaDogUmVwbGFjZSBhc20gd2l0aCAkYXNtIGluIGFsbCBwbGFjZXMuCgoJKiBjb25maWd1cmUuYWM6IEFkZCBJMzg2IGFzIEFNX0NPTkRJVElPTkFMLgoJKiBNYWtlZmlsZS5hbSBbTElOVVhdOiBBZGQgbWFpbnRhaW5lci1tb2RlIHJ1bGVzIHRvIHJlZ2VuZXJhdGUKCXRoZSBpb2N0bGVudC5oIGZpbGUuCgoyMDA0LTA3LTA4ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogcmVzb3VyY2UuYyAoc3lzX3F1b3RhY3RsKTogVHJ1bmNhdGUgZmlyc3QgYXJndW1lbnQgdG8gMzIgYml0cywgc2luY2UKCXRoYXQncyB3aGF0IHRoZSBrZXJuZWwgd2lsbCBkby4KCjIwMDQtMDctMDcgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9pb2N0bGVudC5zaDogVGFrZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgdG8gdXNlIGFzIGRpcmVjdG9yeQoJbmFtZSBpbiBwbGFjZSBvZiBgYXNtJy4KCjIwMDQtMDYtMjcgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMsIE5FV1M6IFZlcnNpb24gNC41LjUuCgkqIHN0cmFjZS5zcGVjLCBkZWJpYW4vY2hhbmdlbG9nOiA0LjUuNS0xLgoKMjAwNC0wNi0yMiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHN5c2NhbGwuYyAoc3lzY2FsbF9maXh1cCkgW0xJTlVYICYmIFg4Nl82NF06IEZvciAzMi1iaXQgcHJvY2VzcywKCXNpZ24gZXh0ZW5kIHRoZSBsb3cgMzIgYml0cyBvZiBSQVggdG8gNjQgYml0cy4KCUZpeGVzIFJIIzEyNjU0Ny4KCgkqIHN5c2NhbGwuYyAoZm9yY2VfcmVzdWx0KTogW0xJTlVYICYmIFg4Nl82NF06IEZpeCBSQVgqNCAtPiBSQVgqOC4KCjIwMDQtMDYtMDMgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMsIE5FV1M6IFZlcnNpb24gNC41LjQuCgkqIHN0cmFjZS5zcGVjLCBkZWJpYW4vY2hhbmdlbG9nOiA0LjUuNC0xLgoKCSogbmV0LmMgKGRvbWFpbnMpOiBBZGQgbWFueSBQRl8qIHZhbHVlcyAjaWZkZWYgUEZfKi4KCShhZGRyZmFtcyk6IEFkZCBtYW55IEFGXyogdmFsdWVzICNpZmRlZiBBRl8qLgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjUwNTA2LgoKMjAwNC0wNS0wMiAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCgkqIGxpbnV4L2lvY3Rsc29ydC5jIChjb21wYXJlKTogV2hlbiBpb2N0bCBjb2RlcyBlcXVhbCwgY29tcGFyZQoJbmFtZXMuCgkobWFpbik6IFByaW50IGEgbm90ZSB0aGF0IHByb2dyYW0gb3V0cHV0IGlzIGdlbmVyYXRlZCBieQoJaW9jdGxzb3J0LgoJKiBsaW51eC9pb2N0bGVudC5zaDogQnVpbGQgdGhlIGxpc3Qgb2YgaW9jdGxzIGRlZmluZWQgaW4KCWxpbnV4L2ZiLmggKDB4NDYuLiksIGxpbnV4L2tkLmggKDB4NEIuLiksIGxpbnV4L2Nkcm9tLmggKDB4NTMuLiksCglhc20vaW9jdGxzLmggKDB4NTQuLiksIGxpbnV4L3Z0LmggKDB4NTYuLiksIGxpbnV4L3ZpZGVvdGV4dC5oCgkoMHg3MS4uKSwgbGludXgvdmlkZW90ZXh0LmggKDB4NzIuLiksIGFzbS9zb2NraW9zLmggKDB4ODkuLiksCglsaW51eC9zb2NraW9zLmggKDB4ODkuLiksIGxpbnV4L3dpcmVsZXNzLmggKDB4OEIuLikuCgkqIGxpbnV4L2lvY3RsZW50Lmg6IFJlZ2VuZXJhdGVkIGZyb20gbGludXgtMi42LjUuCglGaXhlcyBSSCMxMjIyNTcuCgoyMDA0LTA2LTAzICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogZGViaWFuL2NvbnRyb2wgKEFyY2hpdGVjdHVyZSk6IEFkZCBhbWQ2NC4KCUZpeGVzIERlYmlhbiBidWcgIzI0NjU2OC4KCgkqIHN0cmFjZS5jIChtYWluKSBbTElOVVhdOiBFeHBhbmQgVENCVEFCIGFzIG5lY2Vzc2FyeSBmb3IgdGhyZWFkcwoJYXR0YWNoZWQuICBBdHRhY2ggdGhyZWFkcyBvbmx5IHVuZGVyIC1mLiAgU2V0IFRDQl9GT0xMT1dGT1JLIGluIHRoZW0uCgkoZXhwYW5kX3RjYnRhYik6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZiAuLi4KCSogcHJvY2Vzcy5jIChmb3JrX3RjYik6IC4uLiBoZXJlLCBjYWxsIHRoYXQuCgkqIGRlZnMuaDogRGVjbGFyZSBleHBhbmRfdGNidGFiLgoKMjAwNC0wNC0xOSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHByb2Nlc3MuYyAocHJpbnRzdGF0dXMpOiBBZGQgYSBzcGFjZSBiZWZvcmUgfCBpbiBvdXRwdXQuCgoyMDA0LTA0LTE2ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjOiBWZXJzaW9uIDQuNS4zLgoJKiBzdHJhY2Uuc3BlYywgZGViaWFuL2NoYW5nZWxvZzogNC41LjMtMS4KCjIwMDQtMDMtMTggIERtaXRyeSBWLiBMZXZpbiAgPGxkdkBhbHRsaW51eC5vcmc+CgoJKiByZXNvdXJjZS5jIChzeXNfcXVvdGFjdGwpIFtMSU5VWF06IENhc3QgYXJpdGhtZXRpYyBzaGlmdCBvcGVyYW5kCglmcm9tIGxvbmcgdG8gdW5zaWduZWQgbG9uZywgdG8gZml4IG91dHB1dCBvZiB0aGUgcXVvdGFjdGwgY29tbWFuZAoJcGFyc2VyLgoJRml4ZXMgUkgjMTE4Njk0LgoKMjAwNC0wNC0xNiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGxpbnV4L3MzOTAvaW9jdGxlbnQuaCwgbGludXgvczM5MHgvaW9jdGxlbnQuaDogVXBkYXRlIERBU0QgaW9jdGxzLgoJRnJvbSBNYXhpbSBTaGNoZXR5bmluIDxtYXhpbUBkZS5pYm0uY29tPi4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIDxtcXVldWUuaD4uCgkqIGlwYy5jIChzeXNfbXFfb3BlbiwgcHJpbnRtcWF0dHIpIFshIEhBVkVfTVFVRVVFX0hdOiBEb24ndCB0cnkgdG8KCWRlY29kZSBzdHJ1Y3QgbXFfYXR0ci4KCSogTkVXUzogTWVudGlvbiBtcSBzdXBwb3J0LgoKCSogbGludXgvc3lzY2FsbC5oOiBTdXBwb3J0IG5ldyBtcV8qIHN5c2NhbGxzIG9uIExpbnV4LgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9kdW1teS5oOiBMaWtld2lzZS4KCSogaXBjLmM6IExpa2V3aXNlLgoJKiB0aW1lLmMgKHByaW50c2lnZXZlbnQpOiBIYW5kbGUgU0lHRVZfVEhSRUFELgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCUZpeGVzIFJIIzEyMDcwMS4KCjIwMDQtMDQtMTMgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBuZXQuYyAobXNnX2ZsYWdzKTogR3JvayBNU0dfRklYLCBNU0dfU1lOLCBNU0dfUlNULCBNU0dfTk9TSUdOQUwsCglNU0dfTU9SRS4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCglGaXhlcyBSSCMxMjA1NDEuCgoJKiBwcm9jZXNzLmMgKHByaW50c3RhdHVzKTogTWFzayBvdXQgYml0cyBwcmVzZW50ZWQgc3ltYm9saWNhbGx5LCBhbmQKCXByaW50ICJ8IDB4bm5uIiBpZiB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIG5vdCBhbGwgemVyby4KCUZpeGVzIERlYmlhbiBidWcgIzI0MDA2Mi4KCgkqIHByb2Nlc3MuYyAocHJpbnRfYWZmaW5pdHlsaXN0KTogUmV3cml0dGVuIHRvIGhhbmRsZSBpbmRpcmVjdCB2YWx1ZXMuCgkoc3lzX3NjaGVkX3NldGFmZmluaXR5LCBzeXNfc2NoZWRfZ2V0YWZmaW5pdHkpOiBVcGRhdGUgY2FsbGVycy4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCglGaXhlcyBSSCMxMTg2ODUuCgoJKiBhY2luY2x1ZGUubTQ6IFF1b3RlIGZpcnN0IGFyZ3VtZW50IHRvIEFDX0RFRlVOIGluIGFsbCBjYXNlcy4KCjIwMDQtMDQtMDggIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBzdHJhY2UuYyAobWFpbikgW0xJTlVYXTogV2hlbiBhdHRhY2hpbmcgZm9yIC1wLCBsb29rIGluCgkvcHJvYy9QSUQvdGFzayBmb3IgYWxsIHRocmVhZHMgYW5kIGF0dGFjaCB0aGVtIGFzIHByZXN1bWVkCglDTE9ORV9USFJFQUQgY2hpbGRyZW4uCgkqIE5FV1M6IE1lbnRpb24gdGhlIGZlYXR1cmUuCglGaXhlcyBSSCMxMjA0NjIuCgoyMDA0LTAzLTAyICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogdXRpbC5jIChzZXRicHQpOiBGaXggb25lIG1pc3NlZCBzcG90IHRvIHVzZSBuZXcgYXJnMF9pbmRleCBtYWNyby4KCUZyb20gTWljaGFlbCBIb2x6aGV1IDxIT0xaSEVVQGRlLmlibS5jb20+LgoKCSogZGViaWFuL2NvbnRyb2wgKFN0YW5kYXJkcy1WZXJzaW9uKTogVXBkYXRlIHRvIDMuNi4xLgoKMjAwNC0wMy0wMSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjUuMi4KCSogc3RyYWNlLnNwZWMsIGRlYmlhbi9jaGFuZ2Vsb2c6IDQuNS4yLTEuCgoJKiBzdHJhY2UuYyAobWFpbik6IEF2b2lkIHBvdGVudGlhbCBidWZmZXIgb3ZlcnJ1bnMgZnJvbSBsdWRpY3JvdXMKCWFyZ3VtZW50cyBvciBQQVRIIHZhbHVlcy4KCSogc3lzY2FsbC5jIChxdWFsX3NpZ25hbCk6IEJhaWwgb3V0IGZvciB0b28tbG9uZyBzdHJpbmcuCgoJKiBtZW0uYyBbTElOVVhdOiA8YXNtL21tYW4uaD4gLT4gPGxpbnV4L21tYW4uaD4KCUZpeGVzIERlYmlhbiBidWcgIzIyMzIwNy4KCgkqIGxpbnV4L3NwYXJjL3N5c2NhbGwuaDogQ29weSBsaW51eC9zeXNjYWxsLmggZGVjbHMgb2Ygc3lzX3NjaGVkXyouCgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBgc3RydWN0IHVzZXJfZGVzYycgaW4gPGFzbS9sZHQuaD4uCgkqIHByb2Nlc3MuYyBbSEFWRV9TVFJVQ1RfVVNFUl9ERVNDXTogVXNlIHN0cnVjdCB1c2VyX2Rlc2MgaW4gcGxhY2Ugb2YKCXN0cnVjdCBtb2RpZnlfbGR0X2xkdF9zLgoJKiBtZW0uYyBbSEFWRV9TVFJVQ1RfVVNFUl9ERVNDXTogTGlrZXdpc2UuCgoJKiBzeXN0ZW0uYyAoc3lzY3RsX3ZtKTogQ29uZGl0aW9uYWxpemUgVk1fKiBtYWNybyB1c2VzLCBhZGQgc29tZSBtb3JlLgoJRnJvbSBUaW0gWWFtaW4gPHBsYXNtYXJvb0BnZW50b28ub3JnPi4KCgkqIHByb2Nlc3MuYyAoc3lzX2V4ZWN2ZSk6IENsZWFyIGluc3RlYWQgb2Ygc2V0IFRDQl9XQUlURVhFQ1ZFIG9uCgllcnJpbmcgc3lzY2FsbC4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIGBzdHJ1Y3QgcHRfYWxsX3VzZXJfcmVncycKCWFuZCBgc3RydWN0IGlhNjRfZnByZWcnIGluIDxzeXMvcHRyYWNlLmg+LgoJKiB1dGlsLmMsIHByb2Nlc3MuYywgc3lzY2FsbC5jLCBzaWduYWwuYzogV29yayBhcm91bmQgY29uZmxpY3RzIGJldHdlZW4KCTxzeXMvcHRyYWNlLmg+IGFuZCA8bGludXgvcHRyYWNlLmg+IGZvciBkZWZpbmluZyB0aG9zZSB0eXBlcy4KCgkqIHByb2Nlc3MuYyAoc3RydWN0X3VzZXJfb2Zmc2V0cykgW0xJTlVYICYmIElBNjRdOiBDb25kaXRpb25hbGl6ZQoJUFRfQVJfQ1NEIGFuZCBQVF9BUl9TU0QgdXNlcyBpbiBjYXNlIG9mIG9sZGVyIGtlcm5lbCBoZWFkZXJzLgoKCSogdXRpbC5jIFtMSU5VWF0gKGFyZzBfaW5kZXgsIGFyZzFfaW5kZXgpOiBOZXcgbWFjcm9zLgoJW1MzOTAgfHwgUzM5MFhdOiBEZWZpbmUgdGhlbSB3aXRoIGludmVydGVkIHZhbHVlcy4KCShzZXRicHQpOiBVc2UgdGhlbSBmb3IgdV9hcmcgaW5kaWNlcy4KCjIwMDQtMDItMjYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBkZWZzLmggW0xJTlVYICYmIElBNjRdOiBEZWNsYXJlIGdldHJ2YWwyIGFsc28gb24gSUE2NC4KCSogbmV0LmMgKHN5c19waXBlKSBbTElOVVggJiYgSUE2NF06IEZvciBJQTY0IHVzZSB0aGUgdHdvIHJldHVybiB2YWx1ZXMuCgkqIHN5c2NhbGwuYyAoZ2V0cnZhbDIpIFtMSU5VWCAmJiBJQTY0XTogSW1wbGVtZW50IGZvciBJQTY0LgoKMjAwNC0wMy0wMSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGxpbnV4L2R1bW15LmggKHN5c19zY2hlZF9nZXRzY2hlZHVsZXIsIHN5c19zY2hlZF9zZXRwYXJhbSwKCXN5c19zY2hlZF9nZXRwYXJhbSwgc3lzX3NjaGVkX3NldHNjaGVkdWxlciwgc3lzX3NjaGVkX2dldHNjaGVkdWxlciwKCXN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBzeXNfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbik6IFJlbW92ZSBtYWNyb3MuCgkqIHByb2Nlc3MuYyBbTElOVVhdIChzeXNfc2NoZWRfZ2V0c2NoZWR1bGVyLCBzeXNfc2NoZWRfc2V0cGFyYW0sCglzeXNfc2NoZWRfZ2V0cGFyYW0sIHN5c19zY2hlZF9zZXRzY2hlZHVsZXIsIHN5c19zY2hlZF9nZXRzY2hlZHVsZXIsCglzeXNfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbik6IE5ldyBmdW5jdGlvbnMuCglGcm9tIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoJRml4ZXMgUkgjMTE2OTkwLgoKMjAwNC0wMi0yMCAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGxpbnV4L2hwcGEvc3lzY2FsbGVudC5oOiBVcGRhdGUgc29tZSBzeXNjYWxscy4KCUZyb20gUmFuZG9scGggQ2h1bmcgPHRhdXNxQGRlYmlhbi5vcmc+LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjMxNjMyLgoKMjAwMy0xMi0zMSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBwcm9jZXNzLmMgKGludGVybmFsX2V4aXQpOiBGb3IgaWE2NCwgYWxzbyByZWNvZ25pemUgSUEtMzIgMjUyCglhcyBleGl0X2dyb3VwKCkuCgkoY2hhbmdlX3N5c2NhbGwpOiBGb3IgSUE2NCwgYWxzbyBzdXBwb3J0IGNoYW5naW5nIElBLTMyIHN5c2NhbGxzLgoJKiBzeXNjYWxsLmMgKGludGVybmFsX3N5c2NhbGwpOiBGb3IgSUE2NCwgYWxzbyByZWNvZ25pemUgSUEtMzIKICAgICAgICBzeXNjYWxsIDI1MiAoZXhpdF9ncm91cCkgYXMgYW4gaW50ZXJuYWxfZXhpdCgpIHN5c2NhbGwuCgkqIHV0aWwuYyAoU1lTX2ZvcmspOiBGb3IgSUE2NCwgZGVmaW5lIHRoZW0gdG8gdGhlIElBLTMyIHN5c2NhbGwKCW51bWJlci4KCShTWVNfdmZvcmspOiBMaWtld2lzZS4KCShhcmdfc2V0dXApOiBGb3IgSUE2NCB2ZXJzaW9uLCBhbHNvIHN1cHBvcnQgSUEtMzIgc3lzY2FsbHMuCgkoZ2V0X2FyZzApOiBMaWtld2lzZS4KCShnZXRfYXJnMSk6IExpa2V3aXNlLgoJKHNldF9hcmcwKTogTGlrZXdpc2UuCgkoc2V0X2FyZzEpOiBMaWtld2lzZS4KCjIwMDQtMDItMTUgIEFudG9uIEJsYW5jaGFyZCAgPGFudG9uQHNhbWJhLm9yZz4KCgkqIGxpbnV4L3Bvd2VycGMvc3lzY2FsbGVudC5oOiBBZGQgcnRhcyBjYWxsLgoJU2hpZnQgbXVsdGlwbGV4ZWQgc3lzY2FsbHMgdG8gc3RhcnQgYXQgMzAwLCB3ZSBhcmUgYWxyZWFkeSBhYm91dAoJdG8gaGl0IDI1NiByZWFsIHN5c2NhbGxzLgoJKiBsaW51eC9zeXNjYWxsLmg6IFNZU19zb2NrZXRfc3ViY2FsbCBpcyBub3cgMzAwIGZvciBbUE9XRVJQQ10uCgoyMDA0LTAyLTE5ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3RyYWNlLmMgKG1haW4pOiBVc2UgVENQLT5waWQsIG5vdCBQSUQsIGluIC1wIG1lc3NhZ2UuCglGaXhlcyBEZWJpYW4gYnVnICMyMjk4MDIuCgoyMDA0LTAxLTEzICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3lzY2FsbC5jIChmb3JjZV9yZXN1bHQpIFtMSU5VWF0gW1MzOTAgfHwgUzM5MFhdOiBSZW1vdmUgYm9ndXMgdXBlZWsKCWNhbGwuCgoJKiBzdHJlYW0uYyAoaW50ZXJuYWxfc3RyZWFtX2lvY3RsKTogRml4IHR5cG8gc3RyaWN0IC0+IHN0cnVjdC4KCVJlcG9ydGVkIGJ5IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAaHVuZ3J5LmNvbT4uCgoyMDAzLTEyLTMxICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIHByb2Nlc3MuYyAoc3RydWN0X3VzZXJfb2Zmc2V0cykgW0lBNjRdOiBGaXggdXAgcmVnaXN0ZXIgbmFtZSBsaXN0LgoKMjAwMy0xMi0xNCAgQW50b24gQmxhbmNoYXJkICA8YW50b25Ac2FtYmEub3JnPgoKCSogZmlsZS5jIChzeXNfZ2V0ZGVudHM2NCk6IERvbid0IGNhc3QgZF9pbm8gYW5kIGRfb2ZmIHRvIHVuc2lnbmVkIGxvbmcuCglVc2UgJWxsdSBmb3JtYXRzIGZvciB0aGVtLgoKCSogZmlsZS5jIFtMSU5VWF0gKGZzbWFnaWMpOiBBZGQgU1lTRlNfTUFHSUMuCgoJKiBsaW51eC9wb3dlcnBjL3N5c2NhbGxlbnQuaDogVXBkYXRlIHRvIGluY2x1ZGUgcmVjZW50bHkgYWRkZWQKCXN5c2NhbGxzLgoKCSogc3lzY2FsbC5jIChnZXRfZXJyb3IpIFtQT1dFUlBDXTogQ2FzdCByZXN1bHQgdG8gdW5zaWduZWQgbG9uZyBmb3IKCXBwYzY0LCB3ZSB3ZXJlIG1pc3JlcG9ydGluZyBzeXNjYWxscyB0aGF0IHJlYWxseSBzdWNjZWVkZWQgYXMgaGF2aW5nCglmYWlsZWQuCgoyMDA0LTAxLTEzICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3RyYWNlLjE6IFJlbW92ZSBjb21tZW50IGFib3V0IHZmb3JrIG9uIExpbnV4LgoJRml4ZXMgRGViaWFuIGJ1ZyAjMjIzMzkwLgoKCSogZmlsZS5jIChkaXJlbnR0eXBlcyk6IERlZmluZSB1bmRlciBbTElOVVhdIGFzIHdlbGwuICBBZGQgRFRfVU5LTk9XTi4KCShzeXNfZ2V0ZGVudHM2NCkgW0xJTlVYXTogUHJpbnQgZF90eXBlIGZpZWxkLgoKMjAwMy0xMi0xNSAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCgkqIHN0cmFjZS5jICh0cmFjZSkgW1dDT1JFRFVNUF06IFNob3cgY29yZWR1bXAgc3RhdHVzIG9mIHRoZQoJa2lsbGVkIHByb2Nlc3MgaWYgYXZhaWxhYmxlLiAgRml4ZXMgUkgjMTEyMTE3LgoKMjAwMy0xMS0xMyAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjUuMS4KCSogc3RyYWNlLnNwZWMsIGRlYmlhbi9jaGFuZ2Vsb2c6IDQuNS4xLTEuCgoyMDAzLTA5LTA2ICBEbWl0cnkgVi4gTGV2aW4gIDxsZHZAYWx0bGludXgub3JnPgoKCSogZGVmcy5oIChpb2N0bF9sb29rdXApOiBQcm90b3R5cGUgY2hhbmdlLgoJKiBpb2N0bC5jIChpb2N0bF9uZXh0X21hdGNoKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWZzLmg6IERlY2xhcmUgaXQuCgkqIGlvLmMgKHN5c19pb2N0bCk6IFVzZSBpdCwgdG8gZGlzcGxheSBhbGwgcG9zc2libGUgaW9jdGwgbmFtZXMKCXdoZW4gdGhlcmUncyBtb3JlIHRoYW4gb25lIG1hdGNoLgoJKiBpb2N0bC5jIChpb2N0bF9sb29rdXApOiBMaWtld2lzZS4KCSogc3RyZWFtLmMgKGludGVybmFsX3N0cmVhbV9pb2N0bCk6IExpa2V3aXNlLgoJUGF0Y2ggZnJvbSBTb2xhciBEZXNpZ25lciA8c29sYXJAb3BlbndhbGwuY29tPi4KCjIwMDMtMTEtMTMgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9zaC9zeXNjYWxsZW50Lmg6IFVzZSBzeXNfc2V0Z3JvdXBzMzIsIHN5c19nZXRncm91cHMzMi4KCSogbGludXgvc2g2NC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoKMjAwMy0wOS0wNiAgRG1pdHJ5IFYuIExldmluICA8bGR2QGFsdGxpbnV4Lm9yZz4KCglGaXhlcyBmb3IgUkgjMTA1MzU5LgoJKiB1dGlsLmMgKHByaW50dWlkKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWZzLmg6IERlY2xhcmUgaXQuCgkqIGZpbGUuYyAoc3lzX2Nob3duKTogVXNlIGl0LgoJKiBmaWxlLmMgKHN5c19mY2hvd24pOiBMaWtld2lzZS4KCSogcHJvY2Vzcy5jIChzeXNfc2V0cmV1aWQsIHN5c19zZXRyZWdpZCwgc3lzX3NldHJlc3VpZCwKCXN5c19zZXRyZXNnaWQpOiBMaWtld2lzZS4KCSogbGludXgvc3lzY2FsbGVudC5oOiBCZXR0ZXIgaGFuZGxlIGdldGdpZDMyLCBnZXRldWlkMzIsIGdldGVnaWQzMiwKCXNldHJldWlkMzIsIHNldHJlZ2lkMzIsIGdldGdyb3VwczMyLCBzZXRncm91cHMzMiwgZmNob3duMzIsCglzZXRyZXN1aWQzMiwgZ2V0cmVzdWlkMzIsIHNldHJlc2dpZDMyLCBnZXRyZXNnaWQzMiwgY2hvd24zMiwKCXNldHVpZDMyLCBzZXRnaWQzMiwgc2V0ZnN1aWQzMiwgc2V0ZnNnaWQzMi4KCSogcHJvY2Vzcy5jIFtMSU5VWF06IERlZmluZSBHRVRHUk9VUFMzMl9ULgoJKiBwcm9jZXNzLmMgW0xJTlVYXSAoc3lzX3NldGdyb3VwczMyLCBzeXNfZ2V0Z3JvdXBzMzIpOgoJTmV3IGZ1bmN0aW9ucy4KCSogbGludXgvc3lzY2FsbC5oIChzeXNfc2V0Z3JvdXBzMzIsIHN5c19nZXRncm91cHMzMik6CglEZWNsYXJlIHRoZW0uCgoyMDAzLTExLTExICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3RyYWNlLmMgKG1haW4pOiBCYWlsIHdpdGggdXNhZ2UgZXJyb3IgZm9yIG1pc3NpbmcgY29tbWFuZCBiZWZvcmUgd2UKCW9wZW4gdGhlIC1vIGZpbGUgb3IgZmlkZGxlIHVpZHMuCgoyMDAzLTExLTA2ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3RyYWNlLmMgKG1haW4pOiBUcmVhdCBwaXBlZCBvdXRwdXQgbW9yZSBsaWtlIGZpbGUgb3V0cHV0LgoJRGlzYWxsb3cgLWZmIHdpdGggcGlwZWQgb3V0cHV0LiAgRml4ZXMgUkgjMTA1MzY2LgoJUmVwb3J0ZWQgYnkgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgoKCSogc3RyYWNlLmMgKHRwcmludGYpOiBDaGVjayByZXN1bHQgb2YgdmZwcmludGYgYW5kIHVzZSBwZXJyb3Igd2hlbiBpdAoJZmFpbHMgd2hpbGUgbm90IHdyaXRpbmcgdG8gc3RkZXJyIGl0c2VsZi4gIEZpeGVzIERlYmlhbiBidWcgIzIxODc2Mi4KCgkqIG5ldC5jIChwcmludHNvY2spOiBGaXggdHlwbyBpbiAjaWZkZWYgQUZfTkVUTElOSy4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCgoyMDAzLTExLTAxICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3lzY2FsbC5jICh0cmFjZV9zeXNjYWxsKSBbTElOVVhdOiBDYWxjdWxhdGUgT05FX1RJQ0sgb25jZSB1c2luZwoJc2V0aXRpbWVyIHJhdGhlciB0aGFuIGhhcmQtY29kaW5nIGEgdmFsdWUgYmFzZWQgb24gSFouCglGaXhlcyBSSCMxMDgwMTIsIHJlcG9ydGVkIGJ5IEZsb3JpYW4gTGEgUm9jaGUgPGxhcm9jaGVAcmVkaGF0LmNvbT4uCgoyMDAzLTEwLTIxICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3RyYWNlLjE6IEZpeGVkIGEgZmV3IHNwZWxsaW5nIGVycm9ycy4KCUZpeGVzIERlYmlhbiBidWcgIzIxNzAwOC4KCgkqIHN5c2NhbGwuYzogUmV2ZXJ0IGxhc3QgY2hhbmdlLCB3YXMgYnJva2VuLgoKMjAwMy0xMC0wMSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHByb2Nlc3MuYyAoaW50ZXJuYWxfY2xvbmUpOiBEb24ndCBzdXNwZW5kIHBhcmVudCB3aGVuIGNhbGwgcmVxdWVzdGVkCglhIHNwZWNpZmljIFBJRCB0aGF0IGlzIG5vdCBhIHRyYWNlZCBjaGlsZC4KCgkqIHNpZ25hbC5jIFtMSU5VWF0gKHBhcnNlX3NpZ3NldF90KTogUmV3cml0ZSB0byBwcm9jZXNzIGhleCBzdHJpbmdzCglmcm9tIHJpZ2h0IHRvIGxlZnQgc28gd2UgZG9uJ3QgaGF2ZSB0byBwcmVzdW1lIHRoZSBzaXplLgoJUmVwb3J0ZWQgYnkgRGF2aWQgV29vZGhvdXNlIDxkd213MkByZWRoYXQuY29tPi4KCjIwMDMtMDktMjUgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBtZW0uYyAobW1hcF9wcm90KSBbUFJPVF9TRU0sIFBST1RfR1JPV1NET1dOLCBQUk9UX0dST1dTVVBdOiBJbmNsdWRlCgl0aGVzZSBpbiB0aGUgdGFibGUgaWYgdGhleSBhcmUgZGVmaW5lZC4KCjIwMDMtMDktMjQgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMsIE5FV1M6IFZlcnNpb24gNC41LgoJKiBzdHJhY2Uuc3BlYywgZGViaWFuL2NoYW5nZWxvZzogNC41LTEuCgoJKiBzeXNjYWxsLmMgKGdldF9zY25vKSBbTElOVVhdIFtTMzkwIHx8IFMzOTBYXTogQmFpbCBvdXQgb2YKCWluc3RydWN0aW9uIGRlY29kaW5nIGJyYW5jaCBpZiBUQ0JfSU5TWVNDQUxMIGlzIGNsZWFyLgoJUmVwb3J0ZWQgYnkgPGpvY2hlbkBwZW5ndWluLWJyZWVkZXIub3JnPi4KCgkqIGxpbnV4L2lvY3RsZW50Lmg6IFN3YXAgb3JkZXIgb2Ygb3ZlcmxvYWRlZCBUQyogYW5kIFNORENUTF8qIHZhbHVlcy4KCjIwMDMtMDktMjMgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBzdHJhY2Uuc3BlYzogT24gcHBjNjQgKG1heWJlIG90aGVycyBsYXRlciksIGNyZWF0ZSBhbiBzdHJhY2U2NAoJcGFja2FnZSBhcyB3ZWxsIGNvbnRhaW5pbmcganVzdCAvdXNyL2Jpbi9zdHJhY2U2NC4KCgkqIHNpZ25hbC5jIChzcHJpbnRzaWdtYXNrKTogUHJpbnQgUlRfJXUgZm9yIF9fU0lHUlRNSU4uLl9fU0lHUlRNQVguCglGaXhlcyBSSCMxMDQzNjUuCgoyMDAzLTA4LTIxICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogbGludXgvc3lzY2FsbGVudC5oOiBGaXggbWxvY2sgYXJndW1lbnQgY291bnQuICBGaXhlcyBSSCMxMDE0OTkuCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9zMzkwL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3MzOTB4L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgoyMDAzLTA3LTI4ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGRlZnMuaCAoQUxJR042NCk6IERlZmluZSBmb3IgTUlQUy4KCSogaW8uYyAoUFJFQURfT0ZGU0VUX0FSRyk6IERlZmluZS4KCShzeXNfcHJlYWQsIHN5c19wd3JpdGUpOiBVc2UgaXQuCgkqIHByb2Nlc3MuYyAoc3RydWN0X3VzZXJfb2Zmc2V0cykgW1NIXTogQ2hlY2sgd2hldGhlciBSRUdfWERSRUcwCglpcyBkZWZpbmVkLgoJKiBsaW51eC9zaC9zeXNjYWxsZW50LmggKHByZWFkLCBwd3JpdGUpOiBUYWtlIHNpeCBhcmd1bWVudHMuCgkodHJ1bmNhdGU2NCwgZnRydW5jYXRlNjQpOiBQcmV0dHktcHJpbnQuCgkqIGxpbnV4L21pcHMvc3lzY2FsbGVudC5oIChwcmVhZCwgcHdyaXRlKTogVGFrZSBzaXggYXJndW1lbnRzLgoJKHRydW5jYXRlNjQsIGZ0cnVuY2F0ZTY0KTogVGFrZSBmb3VyIGFyZ3VtZW50cy4KCjIwMDMtMDctMTcgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMsIE5FV1M6IFZlcnNpb24gNC40Ljk5LgoJKiBzdHJhY2Uuc3BlYywgZGViaWFuL2NoYW5nZWxvZzogNC40Ljk5LTEuCgoyMDAzLTA3LTE1ICBBbnRvbiBCbGFuY2hhcmQgIDxhbnRvbkBzYW1iYS5vcmc+CgoJKiBpcGMuYzogQWRkIFNITV9IVUdFVExCIGZpZWxkLgoJTWFzayBvdXQgcGVybWlzc2lvbiBiaXRzIGluIG1zZ2dldCwgc2VtZ2V0IGFuZCBzaG1nZXQgYmVmb3JlCgkJcHJpbnRpbmcgcmVzb3VyY2VfZmxhZ3MuCglNYXNrIGV4ZWN1dGUgcGVybWlzc2lvbiBiaXRzIChldmVuIHRob3VnaCB3ZSBkb250IGN1cnJlbnRseQoJCXVzZSB0aGVtKS4KCjIwMDMtMDctMTcgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9wb3dlcnBjL3N5c2NhbGxlbnQuaCAodGdraWxsKTogTmV3IGF0IDI1MC4KCgkqIGxpbnV4L3N5c2NhbGxlbnQuaDogdHJ1bmNhdGU2NC9mdHJ1bmNhdGU2NCBuZWVkIDMgYXJncy4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IEhhbmRsZSBzdGF0ZnM2NCwgZnN0YXRmczY0LCB1dGltZXMuCgkqIGZpbGUuYyAocHJpbnRzdGF0ZnMpOiBQcmludCBmX2ZzaWQgYW5kIGZfZnJzaXplLgoJW0xJTlVYXSAocHJpbnRzdGF0ZnM2NCwgc3lzX3N0YXRmczY0LCBzeXNfZnN0YXRmczY0KTogTmV3IGZ1bmN0aW9ucy4KCSogbGludXgvc3lzY2FsbC5oOiBBZGQgZGVjbHMuCglGcm9tIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoKMjAwMy0wNy0wOSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGxpbnV4L2lhNjQvc3lzY2FsbGVudC5oICh0Z2tpbGwpOiBOZXcgYXQgMTIzNS4KCjIwMDMtMDctMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHR3aWRkbGUubmV0PgoKCSogcHJvY2Vzcy5jIChzeXNfY2xvbmUpOiBPcmRlciBhcmd1bWVudHMgZm9yIGFscGhhIHRoZSBzYW1lIGFzIHg4Nl82NC4KCSogc3lzY2FsbC5jIChFUkVTVEFSVF9SRVNUQVJUQkxPQ0spOiBOZXcuCgkodHJhY2Vfc3lzY2FsbCk6IFByaW50IGl0LgoJKiBsaW51eC9hbHBoYS9zeXNjYWxsZW50LmggKG9zZl9zeXNjYWxsKTogTmFtZSBwcm9wZXJseS4KCShvc2Zfc2V0X3Byb2dyYW1fYXR0cmlidXRlcyk6IEZpeCB0eXBvLgoJKG9zZl9uZnNzdmMpOiBMaWtld2lzZS4KCShvc2Zfc2lnc2VuZHNldCk6IExpa2V3aXNlLgoJKGdldGRlbnRzNjQsIGdldHRpZCwgcmVhZGFoZWFkLCB0a2lsbCwgc2V0eGF0dHIsIGxzZXR4YXR0ciwgZnNldHhhdHRyLAoJZ2V0eGF0dHIsIGxnZXR4YXR0ciwgZmdldHhhdHRyLCBsaXN0eGF0dHIsIGxsaXN0eGF0dHIsIGZsaXN0eGF0dHIsCglyZW1vdmV4YXR0ciwgbHJlbW92ZXhhdHRyLCBmcmVtb3ZleGF0dHIsIGZ1dGV4LCBzY2hlZF9zZXRhZmZpbml0eSwKCXNjaGVkX2dldGFmZmluaXR5LCB0dXhjYWxsLCBpb19zZXR1cCwgaW9fZGVzdHJveSwgaW9fZ2V0ZXZlbnRzLAoJaW9fc3VibWl0LCBpb19jYW5jZWwsIGV4aXRfZ3JvdXAsIGxvb2t1cF9kY29va2llLCBlcG9sbF9jcmVhdGUsCgllcG9sbF9jdGwsIGVwb2xsX3dhaXQsIHJlbWFwX2ZpbGVfcGFnZXMsIHNldF90aWRfYWRkcmVzcywKCXJlc3RhcnRfc3lzY2FsbCwgZmFkdmlzZSwgdGltZXJfY3JlYXRlLCB0aW1lcl9zZXR0aW1lLCB0aW1lcl9nZXR0aW1lLAoJdGltZXJfZ2V0b3ZlcnJ1biwgdGltZXJfZGVsZXRlLCBjbG9ja19zZXR0aW1lLCBjbG9ja19nZXR0aW1lLAoJY2xvY2tfZ2V0cmVzLCBjbG9ja19uYW5vc2xlZXAsIHNlbXRpbWVkb3ApOiBOZXcuCgoyMDAzLTA3LTA4ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc2lnbmFsLmMgKHN5c190Z2tpbGwpOiBOZXcgZnVuY3Rpb24uCgkqIGxpbnV4L3N5c2NhbGwuaDogRGVjbGFyZSBpdC4KCSogbGludXgvc3lzY2FsbGVudC5oOiBBZGQgdGdraWxsLgoKMjAwMy0wNi0yNyAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIHR5cGUgYHN0cnVjdCBfX29sZF9rZXJuZWxfc3RhdCcuCgkqIGZpbGUuYyAoY29udmVydG9sZHN0YXQsIHByaW50b2xkc3RhdCk6IERlZmluZSB1bmRlcgoJW0xJTlVYICYmIEhBVkVfU1RSVUNUX19fT0xEX0tFUk5FTF9TVEFUXSByYXRoZXIgdGhhbiBhIGxpc3Qgb2YgYXJjaHMuCgkoc3lzX29sZHN0YXQsIHN5c19vbGRmc3RhdCwgc3lzX29sZGxzdGF0KTogTGlrZXdpc2UuCgkqIGxpbnV4L2R1bW15LmggWyEgSEFWRV9TVFJVQ1RfX19PTERfS0VSTkVMX1NUQVRdCgkoc3lzX29sZHN0YXQsIHN5c19vbGRmc3RhdCwgc3lzX29sZGxzdGF0KTogI2RlZmluZSB0byBwcmludGFyZ3MuCgoyMDAzLTA2LTI2ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjOiBTSE1FRElBIC0+IFNINjQKCSogZGVmcy5oOiBMaWtld2lzZS4KCSogbWVtLmM6IExpa2V3aXNlLgoJKiBwcm9jZXNzLmM6IExpa2V3aXNlLgoJKiBzb2NrLmM6IExpa2V3aXNlLgoJKiBzeXNjYWxsLmM6IExpa2V3aXNlLgoJKiB1dGlsLmM6IExpa2V3aXNlLgoJKiBsaW51eC9zaG1lZGlhL3N5c2NhbGxlbnQuaDogTW92ZWQgdG8gLi4uCgkqIGxpbnV4L3NoNjQvc3lzY2FsbGVudC5oOiAuLi4gaGVyZS4KCgkqIGNvbmZpZy5ndWVzczogVXBkYXRlIGZyb20gY2Fub25pY2FsIHZlcnNpb24sIHRpbWVzdGFtcCAyMDAzLTA2LTE3LgoJKiBjb25maWcuc3ViOiBMaWtld2lzZS4KCgkqIHN5c2NhbGwuYyAoZm9yY2VfcmVzdWx0KSBbTElOVVhdIFtBUk1dOiBGaXggdmFyaWFibGUgdXNhZ2UuCglGcm9tOiBKb3NodWEgTmVhbCA8dGluYXJhQG5ldHBpcGVsaW5lLm5ldD4uCgoJKiBwcm9jZXNzLmMgW0xJTlVYXSAoc3lzX2Z1dGV4KTogR3JvayBGVVRFWF9SRVFVRVVFIGFuZCBwcmludCA1dGggYXJnLgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IHN5c19mdXRleCBhcmd1bWVudCBjb3VudCBpcyBub3cgNSwgbm90IDQuCgkqIGxpbnV4L2lhNjQvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCSogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9zMzkwL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3MzOTB4L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJRnJvbSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KCgkqIHN5c2NhbGwuYyAoZ2V0X3Njbm8pIFtTMzkwIHx8IFMzOTBYXTogRml4IG9sZCB2cyBuZXcgbW9kZSBkZXRlY3Rpb24uCglGcm9tIE1pY2hhZWwgSG9semhldSA8SE9MWkhFVUBkZS5pYm0uY29tPi4KCjIwMDMtMDYtMjMgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBuZXQuYyAoc3lzX3NvY2tldCk6IERlY29kZSBwcm90b2NvbCBmb3IgUEZfSU5FVDYgc2FtZSBhcyBQRl9JTkVULgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCjIwMDMtMDYtMTAgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMsIE5FV1M6IFZlcnNpb24gNC40Ljk4LgoJKiBzdHJhY2Uuc3BlYywgZGViaWFuL2NoYW5nZWxvZzogNC40Ljk4LTEuCgoyMDAzLTA2LTA5ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogbGludXgvczM5MHgvc3lzY2FsbGVudC5oOiBVcGRhdGUgbWFueSBzeXNjYWxscy4KCSogbGludXgvc3lzY2FsbC5oIChTWVNfc29ja2V0X3N1YmNhbGwpOiBVcGRhdGUgW1MzOTBYXSB2YWx1ZS4KCgkqIGxpbnV4L3MzOTAvc3lzY2FsbGVudC5oOiBVcGRhdGUgbWFueSBzeXNjYWxscy4KCSogbGludXgvc3lzY2FsbC5oIChTWVNfc29ja2V0X3N1YmNhbGwpOiBVcGRhdGUgW1MzOTBdIHZhbHVlLgoKCSogbGludXgvc2htZWRpYS9zeXNjYWxsZW50Lmg6IE5ldyBmaWxlLgoJRnJvbSBTdGVwaGVuIFRob21hcyA8c3RlcGhlbi50aG9tYXNAc3VwZXJoLmNvbT4uCgoJKiBzdHJhY2UuYyAodHJhY2UpOiBQcmludCBhIG1lc3NhZ2UgYW5kIG5ld2xpbmUgZm9yIGEgV0lGRVhJVEVEIHJlcG9ydAoJZnJvbSB0aGUgcHJvY2VzcyB3ZSBqdXN0IHByaW50ZWQgYW4gdW50ZXJtaW5hdGVkIHN5c2NhbGwgbGluZSBmb3IuCgoyMDAzLTA2LTAzICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogdXRpbC5jIChwcmludGNhbGwpIFtMSU5VWF06IEZpeCB0eXBvIFtJQTYyXSAtPiBbSUE2NF0uCgoJTGludXgvQVJNIGltcHJvdmVtZW50cyBmcm9tIFJ1c3NlbGwgS2luZyA8cm1rQGFybS5saW51eC5vcmcudWs+OgoJKiBkZWZzLmggW0xJTlVYXSAoVENCX1dBSVRFWEVDVkUpOiBEZWZpbmUgZm9yIFtBUk1dIHRvby4KCSogcHJvY2Vzcy5jIChzdHJ1Y3RfdXNlcl9vZmZzZXRzKSBbTElOVVhdIFtBUk1dOiBBZGQgQVJNIHJlZ2lzdGVycy4KCSogc2lnbmFsLmMgW0xJTlVYXSAoc3lzX3NpZ3JldHVybikgW0FSTV06IE5ldyBjYXNlLgoJKiBzeXNjYWxsLmMgKGdldF9zY25vLCBzeXNjYWxsX2ZpeHVwKSBbTElOVVhdIFtBUk1dOiBDYXNlIHJld3JpdHRlbi4KCShnZXRfZXJyb3IpIFtMSU5VWF0gW0FSTV06IFVwZGF0ZS4KCShzeXNjYWxsX2VudGVyKSBbTElOVVhdIFtBUk1dOiBOZXcgY2FzZS4KCSogdXRpbC5jIChwcmludGNhbGwpIFtMSU5VWF0gW0FSTV06IE5ldyBjYXNlLgoKCSogZGViaWFuL2NvbnRyb2wgKFN0YW5kYXJkcy1WZXJzaW9uKTogVXBkYXRlIHRvIDMuNS4xMC4KCgkqIHN0cmFjZS5jIChtYWluKTogSW4gUEFUSCBzZWFyY2gsIGFjY2VwdCBvbmx5IGEgcmVndWxhciBmaWxlIHdpdGgKCWV4ZWN1dGUgYml0cyBzZXQuICBGaXhlcyBEZWJpYW4gYnVnICMxMzcxMDMuCgoyMDAzLTA2LTAyICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3RyYWNlLmMgKG1haW4pOiBTZXQgLXEgd2hlbiBnaXZlbiAtbyBhbmQgbm90IC1wLCBhbmQgbm90IHdoZW4gbm90CglnaXZlbiAtbywgdG8gbWF0Y2ggd2hhdCB0aGUgbWFuIHBhZ2UgYWx3YXlzIHNhaWQuCglGaXhlcyBEZWJpYW4gYnVnICM0NzExMywgIzE1MzY3OC4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjQuOTcuCgkqIHN0cmFjZS5zcGVjLCBkZWJpYW4vY2hhbmdlbG9nOiA0LjQuOTctMS4KCgkqIGNvbmZpZ3VyZS5hYywgZGVmcy5oLCBtZW0uYywgcHJvY2Vzcy5jLCBzb2NrLmMsIHN5c2NhbGwuYywgdXRpbC5jOgoJTWVyZ2VkIGluIFNIbWVkaWEgcG9ydCBmcm9tIFN0ZXBoZW4gVGhvbWFzIDxzdGVwaGVuLnRob21hc0BzdXBlcmguY29tPi4KCgkqIGNvbmZpZy5ndWVzczogVXBkYXRlIGZyb20gZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9jb25maWcvLAoJdGltZXN0YW1wIDIwMDMtMDUtMjIuCgkqIGNvbmZpZy5zdWI6IExpa2V3aXNlLCB0aW1lc3RhbXAgMjAwMy0wNS0yNC4KCjIwMDMtMDUtMjIgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBkZWZzLmggKHN0cnVjdCB0Y2IpOiBOZXcgbWVtYmVyIGBuem9tYmllcycuCgkqIHN0cmFjZS5jIChhbGxvY3RjYik6IEluaXRpYWxpemUgaXQuCgkoZHJvcHRjYik6IEluY3JlbWVudCBvdXIgcGFyZW50J3Mgem9tYmllIGNvdW50LgoJKiBwcm9jZXNzLmMgKGludGVybmFsX3dhaXQpOiBEb24ndCBnbyBpbnRvIFRDQl9TVVNQRU5ERUQgaWYgdGhlCglwcm9jZXNzIGhhcyB6b21iaWVzIGl0IGNhbiByZWFwLiAgT24gdGhlIHdheSBvdXQsIGlmIHdlIHJlYXBlZAoJYW4gdW50cmFjZWQgcHJvY2VzcywgZGVjcmVtZW50IHRoZSB6b21iaWUgY291bnQuCgoJKiBwcm9jZXNzLmMgKHN5c19jbG9uZSk6IE1hc2sgQ1NJR05BTCBvdXQgb2YgZmxhZ3MgYW5kIHByaW50IHRoYXQKCXNlcGFyYXRlbHkgdXNpbmcgc2lnbmFtZS4KCgkqIHByb2Nlc3MuYyAoaW50ZXJuYWxfY2xvbmUpIFtUQ0JfQ0xPTkVfVEhSRUFEXTogVXNlIEFSR19GTEFHUyBpbnN0ZWFkCglvZiBsaXRlcmFsIDAgZm9yIGluZGV4LiAgQ29uc3VsdCB0aGUgcmlnaHQgZmxhZ3Mgd2l0aG91dCBjbG9iYmVyaW5nCglhbnl0aGluZyB3aGVuIHdlIHJlcGFyZW50IHRoZSBuZXcgY2hpbGQgdG8gdGhlIGNhbGxlcidzIHBhcmVudCB0aHJlYWQuCgoJKiBsaW51eC9zMzkwL3N5c2NhbGxlbnQuaDogRml4IHN5c19jbG9uZSBhcmd1bWVudCBjb3VudC4KCSogbGludXgvczM5MHgvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCSogbGludXgvbWlwcy9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9hbHBoYS9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9wb3dlcnBjL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3NoL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3NwYXJjL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L2hwcGEvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCgkqIHByb2Nlc3MuYyBbTElOVVhdIFtTMzkwIHx8IFMzOTBYXSAoQVJHX0NUSUQsIEFSR19UTFMpOiBGaXggc3dhcHBlZAoJaW5kaWNlcy4gIFJlcG9ydGVkIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgoKCSogc2lnbmFsLmMgW0xJTlVYXSAoU0lfU0lHSU8sIFNJX1RLSUxMKTogTmV3IG1hY3Jvcy4KCVtMSU5VWCB8fCBTVlI0XSAoc2lnaW5mb19jb2Rlcyk6IEFkZCBzdHJpbmdzIGZvciB0aGVtLgoKCSogcHJvY2Vzcy5jIChwcmludF9hZmZpbml0eWxpc3QpOiBGaXggbG9vcCBjb25kaXRpb24uCglSZXBvcnRlZCBieSBJYW4gV2llbmFuZCA8aWFud0BnZWxhdG8udW5zdy5lZHUuYXU+LgoKMjAwMy0wNC0xMCAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHN5c2NhbGwuYyAocXVhbF9kZXNjKTogUmV0dXJuIHplcm8gYWZ0ZXIgcGFyc2luZyBudW1iZXIuCglGcm9tIFJvYiBMZXNsaWUgPHJvYkBtYXJzLm9yZz4sIGZpeGVzIERlYmlhbiBidWcgIzE4ODM3OS4KCjIwMDMtMDQtMDcgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IEhhbmRsZSBzZW10aW1lZG9wIHN1YmNhbGwgb2YgaXBjIHN5c2NhbGwuCgkqIGxpbnV4L3N5c2NhbGwuaDogTGlrZXdpc2UuCgkqIGlwYy5jIFtMSU5VWF0gKHN5c19zZW10aW1lZG9wKTogTmV3IGZ1bmN0aW9uLgoJRnJvbSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPi4KCgkqIGlwYy5jIChzeXNfc2VtZ2V0KTogTWFzayBvZmYgcGVybWlzc2lvbiBiaXRzIGZvciByZXNvdXJjZV9mbGFncy4KCUZyb20gVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4uCgoyMDAzLTA0LTAxICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIHNvY2suYywgc3RyZWFtLmM6IENoZWNrICNpZmRlZiBMSU5VWCwgbm90IGxpbnV4LgoJKiBmaWxlLmM6IEFsd2F5cyBwcm92aWRlIHN5c18qYXR0ciwgcmVnYXJkbGVzcyBvZiAjaWZkZWYgWEFUVFJfQ1JFQVRFLgoKMjAwMy0wMy0zMCAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTkVXUzogVmVyc2lvbiA0LjQuOTYuCgkqIHN0cmFjZS5zcGVjLCBkZWJpYW4vY2hhbmdlbG9nOiA0LjQuOTYtMS4KCjIwMDMtMDItMjYgIFN0dWFydCBNZW5lZnkgPHN0dWFydC5tZW5lZnlAc3QuY29tPgoKCVZhcmlvdXMgZml4ZXMgZm9yIFN1cGVySCBbU0hdOgoJKiBtZW0uYyAoc3lzX29sZF9tbWFwKTogbW1hcCgpIHBhcmFtZXRlcnMgcGFzc2VkIGluIHJlZ2lzdGVycwoJKiBuZXQuYyAoc3lzX3BpcGUpLCBzeXNjYWxsLmMgKGdldHJ2YWwyKTogcGlwZSgpIHJlc3VsdHMgcmV0dXJuZWQKCWluIHJlZ2lzdGVycwoJKiBwcm9jZXNzLmMgKGNoYW5nZV9zeXNjYWxsKTogRml4ZWQgcmVnaXN0ZXIgd2hpY2ggaG9sZHMgc3lzdGVtCgljYWxsIG51bWJlcgoJKiB1dGlsLmMgKGFyZzBfb2Zmc2V0LCBhcmcxX29mZnNldCk6IHByb3ZpZGUgZGVmaW5pdGlvbgoJKiBNYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzIGluIGxpbnV4L3NoCgkqIGxpbnV4L3NoL3N5c2NhbGxlbnQuaDogTmV3IGZpbGUuCgkqIGxpbnV4L3NoL2Vycm5vZW50Lmg6IE5ldyBmaWxlLgoJKiBsaW51eC9zaC9pb2N0bGVudC5oOiBOZXcgZmlsZS4KCSogbGludXgvc2gvc2lnbmFsZW50Lmg6IE5ldyBmaWxlLgoKCSogbGludXgvaW9jdGxlbnQuc2g6IFRha2UgYW4gYXJnIGZvciBsb2NhdGlvbiBvZiBoZWFkZXIgZmlsZXMKCSogc3lzY2FsbGVudC5zaDogUmVwbGFjZWQgbG9zdCAkCgoyMDAzLTAzLTMwICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogdGltZS5jIFtMSU5VWF06IEhhbmRsZSBuZXcgTGludXggMi41IGNsb2NrL3RpbWVyIHN5c2NhbGxzLgoJKiBsaW51eC9zeXNjYWxsLmgsIGxpbnV4L3N5c2NhbGxlbnQuaCwgbGludXgvZHVtbXkuaDogTGlrZXdpc2UuCglGcm9tIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoKCSogbGludXgvc3lzY2FsbGVudC5oOiBVc2Ugc3lzX2dldHJsaW1pdCBmb3IgMTkxLgoJVXNlIG5hbWUgIm9sZF9nZXRybGltaXQiIGZvciA3Ni4KCVJlcG9ydGVkIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LgoKMjAwMy0wMy0xOCAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHByb2Nlc3MuYyBbTElOVVhdIChzeXNfY2xvbmUpOiBEb24ndCBkZXJlZmVyZW5jZSBwYXJlbnRfdGlkIGFyZ3VtZW50LgoKMjAwMy0wMy0xNyAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGxpbnV4L3g4Nl82NC9zeXNjYWxsZW50Lmg6IGNsb25lIHRha2VzIDUgYXJncy4KCSogcHJvY2Vzcy5jIFtMSU5VWF0gKHN5c19jbG9uZSkgW1g4Nl82NF06IEZpeCBhcmd1bWVudCBvcmRlci4KCjIwMDMtMDMtMTUgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC94ODZfNjQvc3lzY2FsbGVudC5oOiBBZGQgZXhpdF9ncm91cCBzeXNjYWxsIGF0IDIzMS4KCjIwMDMtMDMtMTQgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC94ODZfNjQvc3lzY2FsbGVudC5oOiBVcGRhdGUgYW5kIGFkZCBtYW55IDIuNSBzeXNjYWxscy4KCgkqIGxpbnV4L2lhNjQvc3lzY2FsbGVudC5oOiBjbG9uZSB0YWtlcyA1IGFyZ3VtZW50cy4KCSogcHJvY2Vzcy5jIFtMSU5VWCAmJiBJQTY0XSAoQVJHXyopOiBVcGRhdGUgZm9yIDIuNSBjbG9uZSBjYWxscy4KCjIwMDMtMDMtMTIgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9pYTY0L3N5c2NhbGxlbnQuaDogRml4IGFyZyBjb3VudHMgZm9yIGNsb25lIGFuZCBjbG9uZTIuCglVc2Ugc3lzX2Nsb25lIGZvciBjbG9uZTIuCgkqIGxpbnV4L3N5c2NhbGwuaDogRG9uJ3QgZGVjbGFyZSBzeXNfY2xvbmUyLgoJKiBwcm9jZXNzLmMgKHN5c19jbG9uZSk6IFJld3JpdHRlbiB0byBoYW5kbGUgYm90aCBmbGF2b3JzLAoJcHJpbnQgYWxsIGV4dHJhIGFyZ3MgZGVwZW5kaW5nIG9uIGZsYWcgYml0cy4KCShzeXNfY2xvbmUyKTogRnVuY3Rpb24gcmVtb3ZlZC4KCgkqIGxpbnV4L2lhNjQvc3lzY2FsbGVudC5oOiBBZGQgYSBidW5jaCBvZiAyLjUgc3lzY2FsbHMuCgoyMDAzLTAzLTA0ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogc3lzY2FsbC5jIChnZXRfc2NubykgW0lBNjRdOiBEbyBUQ0JfV0FJVEVYRUNWRSBjaGVjayBvbmx5IHdoZW4KCVRDQl9JTlNZU0NBTEwgaXMgY2xlYXIsIGxpa2Ugb3RoZXIgcGxhdGZvcm1zIGRvLgoKMjAwMy0wMy0wNCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBtZW0uYyBbTElOVVhdIChzeXNfcmVtYXBfZmlsZV9wYWdlcyk6IE5ldyBmdW5jdGlvbi4KCSogbGludXgvc3lzY2FsbC5oOiBEZWNsYXJlIGl0LgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IFVzZSBpdC4KCSogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoKCSogcHJvY2Vzcy5jIFtMSU5VWF0gKHN5c19mdXRleCk6IE9taXQgZmluYWwgaWYgb3AgaXMgbm90IEZVVEVYX1dBSVQuCgoyMDAzLTAyLTI2ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjOiBGaXggdHlwbyBpbiBuZXRpbmV0L2luLmggY2hlY2suCglBbHNvIGluY2x1ZGUgPHN5cy90eXBlcy5oPiBhbmQgPHN5cy9zb2NrZXQuaD4gYmVmb3JlIDxuZXRpbmV0L2luLmg+LgoJUmVwb3J0ZWQgYnkgQWxleCBTZW1lbnlha2EgPGFsZXhzQHNuYXJrLnJpbmV0LnJ1Pi4KCjIwMDMtMDItMjQgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMsIE5FV1M6IFZlcnNpb24gNC40Ljk1LgoJKiBzdHJhY2Uuc3BlYywgZGViaWFuL2NoYW5nZWxvZzogNC40Ljk1LTEuCgoJKiBwcm9jZXNzLmMgKHN5c19nZXRyZXNnaWQpOiBGaXggdHlwb3MgaW4gYXJndW1lbnQgYWNjZXNzLgoKMjAwMy0wMi0yMyAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHByb2Nlc3MuYyAoc3lzX2dldHJlc3VpZCk6IEZpeCB0eXBvcyBpbiBhcmd1bWVudCBhY2Nlc3MuCglSZXBvcnRlZCBieSBBbnRvbiBCbGFuY2hhcmQgPGFudG9uQHNhbWJhLm9yZz4uCgoyMDAzLTAyLTE5ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjLCBORVdTOiBWZXJzaW9uIDQuNC45NC4KCSogc3RyYWNlLnNwZWMsIGRlYmlhbi9jaGFuZ2Vsb2c6IDQuNC45NC0xLgoKCSogdmVyc2lvbi5jOiBSZW1vdmVkLgoJKiBNYWtlZmlsZS5hbSAoc3RyYWNlX1NPVVJDRVMpOiBSZW1vdmUgaXQuCgkqIHN0cmFjZS5jOiBVc2UgUEFDS0FHRV9OQU1FIGFuZCBWRVJTSU9OIG1hY3JvcyBpbnN0ZWFkIG9mIHZlcnNpb24gdmFyLgoKCUZyZWVCU0QgcmZvcmsgc3VwcG9ydCBjaGFuZ2VzIGZyb20gUnVzcyBDb3ggPHJzY0BwbGFuOS5iZWxsLWxhYnMuY29tPjoKCSogc3lzY2FsbC5jIChpbnRlcm5hbF9zeXNjYWxsKTogSGFuZGxlIFNZU19yZm9yayB3aXRoIGludGVybmFsX2ZvcmsuCgkqIHByb2Nlc3MuYyAoaW50ZXJuYWxfZm9yaykgW1NZU19yZm9ya106IEJhaWwgaWYgUkZQUk9DIGZsYWcgbm90IHNldC4KCjIwMDMtMDEtMjMgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBzaWduYWwuYzogUmVvcmRlciAjaWZkZWZzIHNvIEhBVkVfQVNNX1NJR0NPTlRFWFRfSCBkb2Vzbid0IG1hdHRlciBvbgoJU1BBUkMsIHdoaWNoIGRvZXNuJ3QgdXNlIHRoZSBoZWFkZXIgcmVnYXJkbGVzcy4KCgkqIHV0aWwuYyBbTElOVVggJiYgU1BBUkNdOiBEbyByZW5hbWluZyBrbHVkZ2VzIGFyb3VuZCA8YXNtL3JlZy5oPgoJbGlrZSBzaWduYWwuYyBkb2VzLgoKCSogbGludXgvc3BhcmMvc3lzY2FsbC5oOiBEZWNsYXJlIHN5c19nZXRkZW50czY0LCBzeXNfbGxzZWVrLgoKCSogbGludXgvZHVtbXkuaCBbISBTWVNfZ2V0cG1zZ10gKHN5c19nZXRwbXNnKTogI2RlZmluZSB0byBwcmludGFyZ3MuCglbISBTWVNfcHV0cG1zZ10gKHN5c19wdXRwbXNnKTogTGlrZXdpc2UuCgoJKiBwcm9jZXNzLmM6IFJlb3JkZXIgaW5jbHVkZXMgdG8gcHV0IHN5cy9yZWcuaCBiZWZvcmUgbGludXgvcHRyYWNlLmgsCglzaW5jZSB0aGV5IGNhbiBjb25mbGljdC4KCjIwMDMtMDEtMjEgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBzdHJhY2UuYyAodXNhZ2UpOiBPbWl0IC16LCBzaW5jZSBpdCBoYXMgbmV2ZXIgd29ya2VkIHByb3Blcmx5LgoJKiBORVdTOiBMaWtld2lzZS4KCgkqIHN0cmFjZS5jIChtYWluKTogR3JvayBuZXcgb3B0aW9uIGAtRSB2YXI9dmFsJyBvciBgLUUgdmFyJyB0byBwdXQKCXZhcj12YWwgaW4gZW52aXJvbiBvciB0byByZW1vdmUgdmFyLCByZXNwZWN0aXZlbHkuCgkodXNhZ2UpOiBNZW50aW9uIGl0LgoJKiBzdHJhY2UuMSwgTkVXUzogRG9jdW1lbnQgaXQuCgoJKiBjb25maWd1cmUuYWMsIE5FV1M6IFZlcnNpb24gNC40LjkzLgoJKiBzdHJhY2Uuc3BlYywgZGViaWFuL2NoYW5nZWxvZzogNC40LjkzLTEuCgkqIHN0cmFjZS5zcGVjIChTb3VyY2UwKTogVXNlIHN0cmFjZS1WRVJTSU9OLnRhci5iejIgbm93LgoKMjAwMy0wMS0yMCAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGRlZnMuaCBbTElOVVhdIFtTMzkwIHx8IFMzOTBYXSAoVENCX1dBSVRFWEVDVkUpOiBEZWZpbmUgaXQuCgkqIHN5c2NhbGwuYyAoZ2V0X3Njbm8sIHN5c2NhbGxfZml4dXApIFtMSU5VWF0gW1MzOTAgfHwgUzM5MFhdOiBIYW5kbGUKCVRDQl9XQUlURVhFQ1ZFIHN0YXRlIHdpdGggc3BlY2lhbCBrbHVkZ2VzLgoKCSogcHJvY2Vzcy5jIFtMSU5VWF0gKHN5c19jbG9uZSkgW1MzOTAgfHwgUzM5MFhdOiBBcmd1bWVudCBvcmRlciBpcwoJcmV2ZXJzZWQgZnJvbSBvdGhlciBhcmNoaXRlY3R1cmVzLgoKCSogcHJvY2Vzcy5jIChzeXNfZXhlY3ZlKSBbTElOVVhdOiBNYWtlIHNldHRpbmcgVENCX1dBSVRFWEVDVkUgZmxhZwoJY29uZGl0aW9uYWwgb24gW1RDQl9XQUlURVhFQ1ZFXSBpbnN0ZWFkIG9mIGxpc3Qgb2YgcHJvY2Vzc29ycy4KCgkqIHV0aWwuYyAocmVzdG9yZV9hcmcwKTogRXZhbHVhdGUgYXJncyBpbiBuby1vcCBkZWZucy4KCgkqIHV0aWwuYyBbUzM5MCB8fCBTMzkwWF0gKGFyZzBfb2Zmc2V0LCBhcmcxX29mZnNldCk6IEZpeCBkZWZpbml0aW9ucwoJZm9yIGNsb25lIGNhbGwgb24gUzM5MC4gIEZyb20gTWljaGFlbCBIb2x6aGV1IDxob2x6aGV1QGRlLmlibS5jb20+LgoKMjAwMy0wMS0xNyAgQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+CgoJKiB1dGlsLmMgW0xJTlVYXSAoc2V0YnB0KTogSGFuZGxlIFNZU192Zm9yayBsaWtlIFNZU19mb3JrLgoKCSogbGludXgvc3lzY2FsbC5oIChTWVNfc29ja2V0X3N1YmNhbGwpOiAyNTYgYWxzbyBmb3IgUE9XRVJQQy4KCjIwMDMtMDEtMTQgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9wb3dlcnBjL2Vycm5vZW50Lmg6IEFkZCBtaXNzaW5nIGVycm5vcy4KCSogbGludXgvcG93ZXJwYy9pb2N0bGVudC5oOiBVcGRhdGUgaW9jdGwgdmFsdWVzLgoJRnJvbSBBbnRvbiBCbGFuY2hhcmQgPGFudG9uQHNhbWJhLm9yZz4uCgoJKiBpby5jIFtMSU5VWF0gKHN5c19wcmVhZCwgc3lzX3B3cml0ZSk6IEZpeCBsYXN0IGNoYW5nZS4KCUZyb20gQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+LgoKCSogbGludXgvaHBwYS9zeXNjYWxsZW50Lmg6IFVzZSBzeXNfZ2V0ZGVudHM2NCwgc3lzX3RydW5jYXRlNjQsCglzeXNfZnRydW5jYXRlNjQsIGluc3RlYWQgb2YgcHJpbnRhcmdzLCBmb3IgdGhvc2Ugc3lzY2FsbHMuCgkqIGxpbnV4L21pcHMvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCSogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9zMzkwL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3NwYXJjL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgoJKiBsaW51eC9zeXNjYWxsLmggKFNZU19zb2NrZXRfc3ViY2FsbCk6IE9ubHkgMjU2IGZvciBTMzkwLCBTMzkwWC4KCUFsbCBvdGhlcnMgYXQgdGhlIG1vbWVudCB1c2UgbGludXgvc3lzY2FsbGVudC5oLCB3aGVyZSBpdCdzIDMwMC4KCgkqIHN0cmFjZS4xOiBVcGRhdGUgYnVnIHJlcG9ydGluZyBpbmZvLgoKCSogcmVzb3VyY2UuYyBbTElOVVhdIChxdW90YWNtZHMpOiBHcm9rIG5ldyBjb21tYW5kIGVuY29kaW5ncy4KCUZyb20gTmF0aGFuIFNjb3R0IDxuYXRoYW5zQGRlYmlhbi5vcmc+LgoKCSogY29uZmlndXJlLmFjLCBORVdTOiBWZXJzaW9uIDQuNC45Mi4KCSogc3RyYWNlLnNwZWMsIGRlYmlhbi9jaGFuZ2Vsb2c6IDQuNC45Mi0xLgoKCSogY29uZmlndXJlLmFjOiBNYXRjaCBwb3dlcnBjKiAoaW5jbHVkZXMgcG93ZXJwYzY0KSwgYW5kIGRvbid0IG1hdGNoCglwcGMgKG5ldmVyIGNvbWVzIG91dCBvZiBjb25maWcuc3ViKS4KCgkqIHByb2Nlc3MuYyAoc3lzX3B0cmFjZSk6IFVzZSAjbHggZm9ybWF0IGZvciBhZGRyZXNzIGFyZ3VtZW50LgoJW1BPV0VSUENdOiBVc2Ugc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIGluIHBsYWNlIG9mIDQgZm9yIG11bHRpcGxpZXJzLgoJKiBwcm9jZXNzLmMgW1BPV0VSUENdOiBMaWtld2lzZS4KCSogc2lnbmFsLmMgKHN5c19zaWdyZXR1cm4pIFtQT1dFUlBDXTogTGlrZXdpc2UuCgkqIHN5c2NhbGwuYyAoZ2V0X3Njbm8pIFtQT1dFUlBDXTogTGlrZXdpc2UuCgkqIHV0aWwuYyBbUE9XRVJQQ106IExpa2V3aXNlLgoJKHByaW50bnVtKTogVXNlIGxvbmcgZm9yIE5VTS4KCUZyb20gQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+LgoKCSogZGVmcy5oIChBTElHTjY0KTogRml4IGRlZm4gZm9yIFBQQywgc2FtZSBhcyBGcmVlQlNEIG9uZS4KCgkqIHV0aWwuYyBbTElOVVhdIChyZXN0b3JlX2FyZzAsIHJlc3RvcmVfYXJnMSk6IE5ldyBtYWNyb3MsIGRlZmluZWQKCWFwcHJvcHJpYXRlbHkgdmlhIHNldF9hcmcwIG9yIG5vLW9wcyBmb3IgZWFjaCBhcmNoaXRlY3R1cmUuCgkoY2xlYXJicHQpOiBVc2UgdGhvc2UgaW5zdGVhZCBvZiBzZXRfYXJnMCBhbmQgc2V0X2FyZzEuCgoJKiBkZWZzLmggW19MQVJHRUZJTEU2NF9TT1VSQ0VdIChfTEZTNjRfTEFSR0VGSUxFKTogRGVmaW5lIGl0LgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IFVzZSBzeXNfZ2V0ZGVudHM2NCwgc3lzX3RydW5jYXRlNjQsCglzeXNfZnRydW5jYXRlNjQsIGluc3RlYWQgb2YgcHJpbnRhcmdzLCBmb3IgdGhvc2Ugc3lzY2FsbHMuCgoJKiBwcm9jZXNzLmM6IFVzZSA8bGludXgvcHRyYWNlLmg+IHJlZ2FyZGxlc3Mgb2YgPHN5cy9yZWcuaD4uCgkoc3lzX3B0cmFjZSk6IFVzZSBwcmludHh2YWwuCgkocHRyYWNlX2NtZHMpOiBNYWtlIFBUUkFDRV9HRVRSRUdTIGV0IGFsIGNvbmRpdGlvbmFsIG9uICNpZmRlZiBQVFJBQ0VfKgoJaW5zdGVhZCBvZiBvbmx5ICNpZmRlZiBTVU5PUzQuICBBZGQgUFRSQUNFX1tHU11FVEZQWFJFR1MuCgoJKiBpcGMuYyAoUFJJTlRDVEwpOiBOZXcgbWFjcm8uICAjaWZkZWYgSVBDXzY0LCBmYWN0b3Igb3V0IHRoZSBmbGFnIGFuZAoJcHJpbnQgaXQgYmVmb3JlIHVzaW5nIHByaW50eHZhbC4KCShzeXNfbXNnY3RsLCBzeXNfc2VtY3RsLCBzeXNfc2htY3RsKTogVXNlIGl0LgoKMjAwMy0wMS0xMyAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5ndWVzczogVXBkYXRlIGZyb20gZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9jb25maWcvLAoJdGltZXN0YW1wIDIwMDMtMDEtMTAuCgkqIGNvbmZpZy5zdWI6IExpa2V3aXNlLCB0aW1lc3RhbXAgMjAwMy0wMS0wMy4KCSogaW5zdGFsbC1zaDogVXBkYXRlIGZyb20gQXV0b21ha2UgMS43LjIuCgoJKiBsaW51eC9wb3dlcnBjL3NpZ25hbGVudC5oOiBBZGQgU0lHUlRNSU4uCglGcm9tIEFudG9uIEJsYW5jaGFyZCA8YW50b25Ac2FtYmEub3JnPi4KCgkqIGxpbnV4L3Bvd2VycGMvc3lzY2FsbGVudC5oOiBBZGQgbWlzc2luZyBzeXN0ZW0gY2FsbHMuCglEZWNvZGUgbW9yZSBzeXN0ZW0gY2FsbHMsIHdlIHdlcmUganVzdCBwcmludGFyZ3MgZm9yIG1hbnkgdGhpbmdzLgoJUmVtb3ZlIHNvbWUgeDg2LXNwZWNpZmljIHN5c3RlbSBjYWxscy4KCVJlbW92ZSB0d28gc3lzY2FsbHMgYmV0d2VlbiB0aGUgc29ja2V0IGFuZCBpcGMgc3lzY2FsbHMsCglpdCB3YXMgcmVzdWx0aW5nIGluIGFsbCBJUEMgc3lzY2FsbHMgYmVpbmcgb2ZmIGJ5IHR3by4KCgkqIGlvY3RsLmMgKGlvY3RsX2RlY29kZSkgW1BPV0VSUENdOiBEZWNvZGUgdGVybSBpb2N0bHMgbGlrZSBBbHBoYS4KCUZyb20gQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+LgoKCSogZGVmcy5oIFtQT1dFUlBDXSAoVUVTUCwgRUlQLCBFQVgsIE9SSUdfRUFYKTogUmVtb3ZlIHRoaXMgY3J1ZnQuCglbTElOVVggJiYgUE9XRVJQQyAmJiAhX19wb3dlcnBjNjRfX10gKEFMSUdONjQpOiBOZXcgbWFjcm8uCgkqIGlvLmMgKHN5c19wcmVhZCwgc3lzX3B3cml0ZSk6IFVzZSBBTElHTjY0LgoJRnJvbSBBbnRvbiBCbGFuY2hhcmQgPGFudG9uQHNhbWJhLm9yZz4uCgoJKiB0ZXJtLmMgW0xJTlVYXTogR2V0IGtlcm5lbCBkZWZpbml0aW9uIG9mIHN0cnVjdCB0ZXJtaW9zLgoJRnJvbSBBbnRvbiBCbGFuY2hhcmQgPGFudG9uQHNhbWJhLm9yZz4uCgoJKiBsaW51eC9pb2N0bGVudC5zaDogTG9vayBpbiBzb3VuZC8gZGlyZWN0b3J5IHRvby4KCUZyb20gQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+LgoKCSogZGVzYy5jIChwcmludGZsb2NrNjQpOiBGaXggQUREUiBhcmd1bWVudCB0eXBlLgoJRnJvbSBBbnRvbiBCbGFuY2hhcmQgPGFudG9uQHNhbWJhLm9yZz4uCgoJKiBzdHJhY2UuYyBbISBIQVZFX1NUUlNJR05BTF06IENsZWFuIHVwICNpZmRlZnMgb24gZGVjbHMgZm9yCglzeXNfc2lnbGlzdCBhbmQgX3N5c19zaWdsaXN0LgoJUmVwb3J0ZWQgYnkgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPi4KCgkqIG5ldC5jOiBIQVZFX09QVEhEUiAtPiBIQVZFX1NUUlVDVF9PUFRIRFIKCVJlcG9ydGVkIGJ5IEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4uCgoJKiBsaW51eC9zeXNjYWxsLmggW0FSTV0gKFNZU19zb2NrZXRfc3ViY2FsbCk6IFNldCB0byAzMDAuCgoyMDAzLTAxLTEwICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmFjLCBORVdTOiBWZXJzaW9uIDQuNC45MS4KCSogc3RyYWNlLnNwZWMsIGRlYmlhbi9jaGFuZ2Vsb2c6IDQuNC45MS0xCgoJKiB1dGlsLmMgW0xJTlVYICYmIFg4Nl82NF0gKGFyZzBfb2Zmc2V0LCBhcmcxX29mZnNldCk6IFVzZSBjb3JyZWN0Cgl2YWx1ZXMgZm9yIHg4Ni02NCwgY29uZGl0aW9uYWwgb24gY3VycmVudF9wZXJzb25hbGl0eS4KCgkqIHN0cmFjZS5jIChkcm9wdGNiKTogQ2xlYXIgZmxhZ3Mgd29yZCBiZWZvcmUgY2FsbGluZyByZWJ1aWxkX3BvbGx2LgoKCSogY29uZmlndXJlLmFjOiBDaGVjayBzdHJ1Y3QgVF9jb25uX3JlcyBmb3IgUVVFVUVfcHRyIG9yIEFDQ0VQVE9SX2lkLgoJKiBzdHJlYW0uYyAocHJpbnRfdHJhbnNwb3J0X21lc3NhZ2UpOiBVc2UgI2lmZGVmcyBmb3IgdGhvc2UgbWVtYmVycy4KCgkqIHN0cmFjZS5jIChyZWJ1aWxkX3BvbGx2KTogRml4IHR5cG86IHN0cnVjdCBwb2xsIC0+IHN0cnVjdCBwb2xsZmQuCgoJKiBjb25maWd1cmUuYWM6IEZpeCBzaWdpbmZvX3Qvc2lnX2F0b21pY190IGNoZWNrcy4KCVVzZSBwcmVyZXF1aXNpdGUgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4gZm9yIG5ldGluZXQvKi5oIGNoZWNrcy4KCgkqIHN0cmFjZS5jIChwZmQydGNiKTogRml4IGZvciBuZXcgdGNidGFiIHR5cGUuCgkocmVidWlsZF9wb2xsdik6IExpa2V3aXNlLgoJKGRldGFjaCk6IFB1dCB2YXJpYWJsZXMgdXNlZCB1bmRlciBbTElOVVhdIGluc2lkZSAjaWZkZWYuCgoJKiBwcm9jZXNzLmMgKGNoYW5nZV9zeXNjYWxsKSBbUE9XRVJQQ106IEFkZCBtaXNzaW5nIHJldHVybi4KCSogdXRpbC5jIFtQT1dFUlBDXSAoYXJnMF9vZmZzZXQpOiBTZXQgdG8gNCpQVF9SMywgbm90IDQqUFRfT1JJR19SMy4KCgkqIHN0cmFjZS5zcGVjOiBOZXcgZmlsZS4KCSogZGViaWFuL2NoYW5nZWxvZzogNC40LjkwLTEKCSogZGViaWFuL3J1bGVzIChiaW5hcnktYXJjaCk6IERlcGVuZCBvbiBidWlsZC4KCShjbGVhbik6IERvbid0IHRyeSB0byBydW4gTWFrZWZpbGUuaW4uCgkqIGRlYmlhbi9jb250cm9sIChTdGFuZGFyZHMtVmVyc2lvbik6IE5vdyAzLjUuOC4KCgkqIGNvbmZpZ3VyZS5hYzogRGlkZGxlIENGTEFHUyBhZnRlciBBQ19QUk9HX0NDLCBub3QgYmVmb3JlLgoKMjAwMy0wMS0wOSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHN5c2NhbGwuYyAoZm9yY2VfcmVzdWx0KSBbUzM5MCB8fCBTMzkwWF06IEZpeCB0eXBvLgoKCSogZGViaWFuL2NvbnRyb2w6IFVwZGF0ZSBNYWludGFpbmVyOiBmaWVsZC4KCjIwMDMtMDEtMDggIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBORVdTOiBVcGRhdGUgZm9yIDQuNC45MCB0ZXN0IHJlbGVhc2UuCgoJU3VwcG9ydCBmb3IgbmV3IExpbnV4IDIuNSB0aHJlYWQgZmVhdHVyZXMuCgkqIGRlZnMuaCBbTElOVVhdOiBEZWZpbmUgX19OUl9leGl0X2dyb3VwIGlmIG5vdCBkZWZpbmVkLgoJKHN0cnVjdCB0Y2IpOiBOZXcgbWVtYmVycyBuY2xvbmVfdGhyZWFkcywgbmNsb25lX2RldGFjaGVkLAoJYW5kIG5jbG9uZV93YWl0aW5nLgoJKFRDQl9DTE9ORV9ERVRBQ0hFRCwgVENCX0NMT05FX1RIUkVBRCwgVENCX0dST1VQX0VYSVRJTkcpOiBOZXcgbWFjcm9zLgoJKHdhaXRpbmdfcGFyZW50KTogTWFjcm8gcmVtb3ZlZC4KCShwaWQydGNiKTogRGVjbGFyZSBpdC4KCSogcHJvY2Vzcy5jIChpbnRlcm5hbF9jbG9uZSkgW1RDQl9DTE9ORV9USFJFQURdOiBSZXBhcmVudCB0aGUgbmV3CgljaGlsZCB0byBvdXIgcGFyZW50IGlmIHdlIGFyZSBhIENMT05FX1RIUkVBRCBjaGlsZCBvdXJzZWx2ZXMuCglNYWludGFpbiBUQ0JfQ0xPTkVfVEhSRUFEIGFuZCBUQ0JfQ0xPTkVfREVUQUNIRUQgZmxhZ3MgYW5kIGNvdW50cy4KCShpbnRlcm5hbF93YWl0KSBbVENCX0NMT05FX1RIUkVBRF06IEZhY3RvciBvdXQgZGV0YWNoZWQgY2hpbGRyZW4gd2hlbgoJZGV0ZXJtaW5pbmcgaWYgd2UgaGF2ZSBhbnkuICBJZiBUQ0JfQ0xPTkVfVEhSRUFEIGlzIHNldCwgY2hlY2sKCXBhcmVudCdzIGNoaWxkcmVuIGluc3RlYWQgb2Ygb3VyIG93biwgYW5kIGJ1bXAgbmNsb25lX3dhaXRpbmcgY291bnQuCgkoaW50ZXJuYWxfZXhpdCkgW19fTlJfZXhpdF9ncm91cF06IFNldCB0aGUgVENCX0dST1VQX0VYSVRJTkcgZmxhZyBpZgoJdGhlIHN5c2NhbGwgd2FzIGV4aXRfZ3JvdXAuCgkqIHN5c2NhbGwuYyAoaW50ZXJuYWxfc3lzY2FsbCk6IFVzZSBpbnRlcm5hbF9leGl0IGZvciBleGl0X2dyb3VwLgoJKiBzdHJhY2UuYyAocGlkMnRjYik6IE5vIGxvbmdlciBzdGF0aWMuCgkoYWxsb2N0Y2IpIFtUQ0JfQ0xPTkVfVEhSRUFEXTogSW5pdGlhbGl6ZSBuZXcgZmllbGRzLgoJKGRyb3B0Y2IpIFtUQ0JfQ0xPTkVfVEhSRUFEXTogTWFpbnRhaW4gbmV3IGZpZWxkcy4KCUlmIHdlIGhhdmUgdGhyZWFkIGNoaWxkcmVuLCBzZXQgVENCX0VYSVRJTkcgYW5kIGRvbid0IGNsZWFyIHRoZSBUQ0IuCgkocmVzdW1lKSBbVENCX0NMT05FX1RIUkVBRF06IERlY3JlbWVudCBwYXJlbnQncyBuY2xvbmVfd2FpdGluZy4KCShkZXRhY2gpIFtUQ0JfQ0xPTkVfVEhSRUFEXTogV2hlbiBjYWxsaW5nIHJlc3VtZSwgY2hlY2sgYWxsIHRocmVhZAoJY2hpbGRyZW4gb2Ygb3VyIHBhcmVudCB0aGF0IG1pZ2h0IGJlIHdhaXRpbmcgZm9yIHVzIHRvby4KCVtUQ0JfR1JPVVBfRVhJVElOR10gKGhhbmRsZV9ncm91cF9leGl0KTogTmV3IGZ1bmN0aW9uLgoJKHRyYWNlKSBbVENCX0dST1VQX0VYSVRJTkddOiBVc2UgdGhhdCBpbiBwbGFjZSBvZiBkZXRhY2ggb3IgZHJvcHRjYi4KCglSZXZhbXAgLWYgc3VwcG9ydCBmb3IgTGludXguCgkqIHV0aWwuYyBbTElOVVhdIChzZXRicHQsIGNsZWFyYnB0KTogTmV3IGltcGxlbWVudGF0aW9ucyB0aGF0IHR3ZWFrCgl0aGUgc3lzdGVtIGNhbGwgdG8gYmUgY2xvbmUgd2l0aCBDTE9ORV9QVFJBQ0Ugc2V0LiAgVmFyaW91cyBuZXcgc3RhdGljCgloZWxwZXIgZnVuY3Rpb25zLgoJKiBwcm9jZXNzLmMgKGludGVybmFsX2Nsb25lKTogRGVmaW5lIGFsc28gI2lmZGVmIFNZU19jbG9uZTIuCglJbml0aWFsaXplIFRDUENISUxELT5wYXJlbnQgZmllbGQuCglbQ0xPTkVfUFRSQUNFXTogRG9uJ3QgZG8gUFRSQUNFX0FUVEFDSCBoZXJlLCBiZWNhdXNlIGl0J3MgcHJlYXR0YWNoZWQuCglDaGVjayBpbiBjYXNlIHRoZSBuZXcgY2hpbGQgaXMgaW4gdGhlIHRjYiBhbHJlYWR5LgoJKGludGVybmFsX2ZvcmspIFtMSU5VWF06IEp1c3QgY2FsbCBpbnRlcm5hbF9jbG9uZS4KCSogc3RyYWNlLmMgKHRyYWNlKSBbTElOVVhdOiBVbmRlciAtZi8tRiwgZ3JvayBhbiB1bmtub3duIHBpZAoJcmVwb3J0aW5nIHRvIHdhaXQsIHB1dCBpdCBpbiB0aGUgVENCIHdpdGggVENCX0FUVEFDSEVEfFRDQl9TVVNQRU5ERUQuCgoJKiBsaW51eC94ODZfNjQvc3lzY2FsbGVudDEuaCAoc3lzX29sZGxzdGF0KTogI2RlZmluZSBhcyBwcmludGFyZ3MuCgoJKiBmaWxlLmMgW0xJTlVYXTogI3VuZGVmIHN0X1thbWNddGltZSBpbiBjYXNlIHRoZXkgYXJlIG1hY3Jvcy4KCgkqIE1ha2VmaWxlLmFtIChBTV9DRkxBR1MpOiBOZXcgdmFyaWFibGUsIGRlZmluZSB0byAkKFdBUk5GTEFHUykuCgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IFJlbW92ZSBkZWJpYW4vcG9zdGluc3QgYW5kIGRlYmlhbi9wcmVybS4KCjIwMDMtMDEtMDkgIFdpY2hlcnQgQWtrZXJtYW4gIDx3aWNoZXJ0QGRlZXBoYWNrbW9kZS5vcmc+CgoJKiBkZWJpYW4vcG9zdGluc3QsIGRlYmlhbi9wcmVybTogcmVtb3ZlZCwgL3Vzci9kb2Mgc3ltbGluayBpcyBubwoJbG9uZ2VyIHVzZWQKCSogZGViaWFuL3J1bGVzOiBubyBsb25nZXIgaW5zdGFsbCBwb3N0aW5zdCBhbmQgcHJlcm0KCSogZGViaWFuL2NvbnRyb2w6IGRvIG5vdCBlbmQgc3VtbWFyeSB3aXRoIGZ1bGwgc3RvcCAobGludGlhbikKCjIwMDItMTItMzAgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5hbSAoYmluX1NDUklQVFMpOiBOZXcgdmFyaWFibGUsIGxpc3Qgc3RyYWNlLWdyYXBoLgoJKEVYVFJBX0RJU1QpOiBBZGQgbWlzc2luZyBmaWxlcy4KCgkqIGNvbmZpZ3VyZS5hYzogRml4IGFzbS9zaWdjb250ZXh0LmggY2hlY2sgdG8gaW5jbHVkZSBwcmVyZXF1aXNpdGUuCgoJKiBzeXNjYWxsLmMgKHF1YWxpZnlfb25lKTogTmV3IGZ1bmN0aW9uLgoJKHF1YWxfb3B0aW9ucyk6IFJlcGxhY2UgbG9va3VwIGZpZWxkIHdpdGggcXVhbGlmeSwgdXBkYXRlIGluaXRpYWxpemVyLgoJKHF1YWxpZnkpOiBVcGRhdGUgY2FsbGVyLgoJKHF1YWxfc2lnbmFsLCBxdWFsX2ZhdWx0LCBxdWFsX2Rlc2MpOiBSZXdyaXR0ZW4gZnJvbSBsb29rdXBfKi4KCShxdWFsX3N5c2NhbGwpOiBSZXdyaXR0ZW4gbG9va3VwX3N5c2NhbGwsIG1hdGNoIG5hbWUgbW9yZSB0aGFuIG9uY2UuCglGaXhlcyBSSCM3MDU3OSwgYml0ZXMgSUE2NCAtZWZvbyB3aGVuIGZvbyBleGlzdHMgb24gSUEzMi4KCgkqIHZlcnNpb24uYyAodmVyc2lvbik6IE1ha2UgY29uc3QsIGJ1bXAgdG8gNC40LjkwLgoJKiBzdHJhY2UuYzogVXBkYXRlIGRlY2wuCgoJKiBNYWtlZmlsZS5hbSBbTElOVVggJiYgWDg2XzY0XTogUmVtb3ZlIGNydWZ0LgoJKiBsaW51eC94ODZfNjQvZXJybm9lbnQxLmg6IE5ldyBmaWxlLgoJKiBsaW51eC94ODZfNjQvaW9jdGxlbnQxLmg6IE5ldyBmaWxlLgoJKiBsaW51eC94ODZfNjQvc2lnbmFsZW50MS5oOiBOZXcgZmlsZS4KCSogbGludXgveDg2XzY0L3N5c2NhbGxlbnQxLmg6IE5ldyBmaWxlLgoJKiBsaW51eC94ODZfNjQvaTM4Ni1oZWFkZXJzLmRpZmY6IEZpbGUgcmVtb3ZlZC4KCSogbGludXgveDg2XzY0L21ha2VoZWFkZXJzLnNoOiBGaWxlIHJlbW92ZWQuCgkqIGxpbnV4L3g4Nl82NC9NYWtlZmlsZS5pbjogRmlsZSByZW1vdmVkLgoKCSogbGludXgvc3lzY2FsbGVudC5oIFtYODZfNjRdOiBEaXNhYmxlIHNhbml0eSBjaGVja3MsIHN1YmNhbGwgc3R1ZmYgaXMKCWFscmVhZHkgYnJva2VuIGZvciAzMi1iaXQgcGVyc29uYWxpdHkgb24geDg2LTY0LgoKMjAwMi0xMi0yOSAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgTWFrZWZpbGUuYW06IFB1bnQgc3ViZGlycywgaGFuZGxlIGV2ZXJ5dGhpbmcgaGVyZS4KCSogbGludXgvTWFrZWZpbGUuYW06IEZpbGUgcmVtb3ZlZC4KCSogZnJlZWJzZC9NYWtlZmlsZS5hbTogRmlsZSByZW1vdmVkLgoJKiBzdW5vczQvTWFrZWZpbGUuaW46IEZpbGUgcmVtb3ZlZC4KCSogc3ZyNC9NYWtlZmlsZS5pbjogRmlsZSByZW1vdmVkLgoKCSogbGludXgvYWxwaGEvTWFrZWZpbGUuaW46IEZpbGUgcmVtb3ZlZC4KCSogbGludXgvaHBwYS9NYWtlZmlsZS5pbjogRmlsZSByZW1vdmVkLgoJKiBsaW51eC9pYTY0L01ha2VmaWxlLmluOiBGaWxlIHJlbW92ZWQuCgkqIGxpbnV4L3Bvd2VycGMvTWFrZWZpbGUuaW46IEZpbGUgcmVtb3ZlZC4KCSogbGludXgvczM5MC9NYWtlZmlsZS5pbjogRmlsZSByZW1vdmVkLgoJKiBsaW51eC9zMzkweC9NYWtlZmlsZS5pbjogRmlsZSByZW1vdmVkLgoKMjAwMi0xMi0yNiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHN5c2NhbGxlbnQuc2g6IEdyb2sgdGhyZWUgZmxhdm9ycyBvZiAjZGVmaW5lIGxpbmUsIHVuaXF1aWZ5LgoJKiBsaW51eC9ocHBhL3N5c2NhbGxlbnQuc2g6IEZpbGUgcmVtb3ZlZC4KCSogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50LnNoOiBGaWxlIHJlbW92ZWQuCgoJKiBsaW51eC9NYWtlZmlsZS5hbTogTmV3IGZpbGUuCgkqIGxpbnV4L01ha2VmaWxlLmluOiBGaWxlIHJlbW92ZWQuCgkqIGZyZWVic2QvTWFrZWZpbGUuYW06IE5ldyBmaWxlLgoJKiBmcmVlYnNkL2kzODYvTWFrZWZpbGUuYW06IE5ldyBmaWxlLgoJKiBmcmVlYnNkL2kzODYvTWFrZWZpbGUuaW46IEZpbGUgcmVtb3ZlZC4KCjIwMDItMTItMjIgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJVXBkYXRlIHRvIEF1dG9jb25mIDIuNTcsIGFuZCBBdXRvbWFraWZ5IHdpdGggdmVyc2lvbiAxLjcuCgkqIE1ha2VmaWxlLmFtOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW46IEZpbGUgcmVtb3ZlZC4KCSogY29uZmlndXJlLmluOiBNb3ZlZCB0byAuLi4KCSogY29uZmlndXJlLmFjOiAuLi4gaGVyZS4gIFVwZGF0ZSBmb3IgQXV0b2NvbmYgMi41eCBhbmQgQXV0b21ha2UuCgkqIGFjbG9jYWwubTQ6IE1vdmVkIHRvIC4uLgoJKiBhY2luY2x1ZGUubTQ6IC4uLiBoZXJlLiAgVXBkYXRlIGZvciBBdXRvY29uZiAyLjV4LgoJKiBhY2NvbmZpZy5oOiBGaWxlIHJlbW92ZWQuCgkqIEFVVEhPUlM6IE5ldyBmaWxlLCBtYWtlcyBhdXRvbWFrZSBoYXBweS4KCSogYXV0b2dlbi5zaDogRmlsZSByZW1vdmVkLgoJKiBSRUFETUUtQ1ZTOiBVcGRhdGUgdG8gcmVjb21tZW5kIGF1dG9yZWNvbmYgaW5zdGVhZC4KCSogZmlsZS5jOiBIQVZFX1NUXyogLT4gSEFWRV9TVFJVQ1RfU1RBVF9TVF8qLgoJKiBuZXQuYzogSEFWRV9TSU42X1NDT1BFX0lEIC0+IEhBVkVfU1RSVUNUX1NPQ0tBRERSX0lONl9TSU42X1NDT1BFX0lELAoJSEFWRV9NU0dfQ09OVFJPTCAtPiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wuCgkqIHN0cmFjZS5jOiAqX0RFQ0xBUkVEIC0+IEhBVkVfREVDTF8qCgkqIHN0cmVhbS5jOiBIQVZFXyogLT4gSEFWRV9TVFJVQ1RfKgoKCSogbGludXgvTWFrZWZpbGUuaW4gKGlvY3RsZGVmcy5oIGlvY3Rscy5oKTogVXNlICQoU0hFTEwpIGluc3RlYWQgb2YKCXNoLCBhbmQgdXNlICQoc3JjZGlyKSB0byBmaW5kIHRoZSBzY3JpcHQuCgkqIGxpbnV4L3Bvd2VycGMvTWFrZWZpbGUuaW4gKGlvY3RsZW50LnJhdyk6IEZpbmQgaW9jdGxlbnQuc2ggaW4gLi4vLgoJKGlvY3Rsc29ydC5vKTogVXNlIC4uL2lvY3Rsc29ydC5jLCBub3QgLi4vLi4vaW9jdGxzb3J0LmMuCgkqIGxpbnV4L3g4Nl82NC9NYWtlZmlsZS5pbiAoaGVhZGVycyk6IFJlbmFtZWQgdG8gYWxsLgoJKiBsaW51eC9hbHBoYS9NYWtlZmlsZS5pbjogQWRkIGVtcHR5IGluc3RhbGwgdGFyZ2V0LgoJKiBsaW51eC94ODZfNjQvTWFrZWZpbGUuaW46IExpa2V3aXNlLgoJKiBsaW51eC9wb3dlcnBjL01ha2VmaWxlLmluOiBMaWtld2lzZS4KCSogbGludXgvTWFrZWZpbGUuaW46IExpa2V3aXNlLgoKMjAwMi0xMi0yNiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGRlZnMuaCBbTElOVVggJiYgTUlQU10gKE1BWF9RVUFMUyk6IFNldCB0byA1MDAwLCBub3QgNDk5OS4KCUZyb20gRGFuaWVsIEphY29ib3dpdHogPGRyb3dAZmFsc2Uub3JnPi4KCjIwMDItMTItMjEgIFJvbGFuZCBNY0dyYXRoICA8cm9sYW5kQHJlZGhhdC5jb20+CgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IEFkZCBzb21lIG5ldyAyLjUgc3lzY2FsbCBuYW1lcy4KCU5vdyBjbG9uZSB0YWtlcyA1IGFyZ3MuCgkqIHByb2Nlc3MuYyBbTElOVVhdIChjbG9uZV9mbGFncyk6IFVwZGF0ZSB3aXRoIDIuNSBmbGFnIGJpdHMuCglbTElOVVhdIChzeXNfY2xvbmUpOiBQcmludCBuZXcgYXJncy4KCSogbWVtLmMgKHByaW50X2xkdF9lbnRyeSk6IE1ha2UgZ2xvYmFsLgoKCSogbGludXgvc3lzY2FsbC5oIFtJMzg2IHx8IElBNjRdIChTWVNfc29ja2V0X3N1YmNhbGwpOiBCdW1wIHRvIDMwMCBmb3IKCXNhZmV0eSwgc2luY2UgdXAgdG8gMjYwIGFyZSBhbHJlYWR5IHVzZWQgaW4gMi41IGtlcm5lbHMuCgkqIGxpbnV4L3N5c2NhbGxlbnQuaDogVXBkYXRlIHRoZSB0YWJsZS4KCSogbGludXgvaWE2NC9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoKCSogc3lzY2FsbC5jIChmb3JjZV9yZXN1bHQpOiBOZXcgZnVuY3Rpb24uCgkqIHByb2Nlc3MuYyAoaW50ZXJuYWxfd2FpdCk6IEhhbmRsZSBFQ0hJTEQgZXhpdCBmcm9tIHdhaXQgY2FsbCB3aXRoCglXTk9IQU5HIGZsYWcgc2V0OyBmb3JjZSB0aGUgcmV0dXJuIHZhbHVlIHRvIDAgaW4gdGhlIGluZmVyaW9yIHdoZW4gaXQKCWhhcyBsaXZlIGNoaWxkcmVuIHdlIGFyZSB0cmFjaW5nLgoJKiBORVdTOiBNZW50aW9uIHRoZSBidWcgZml4LgoKMjAwMi0xMi0xNyAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIGxpbnV4L2lhNjQvc3lzY2FsbGVudC5oOiBSZW1vdmUgcGxhY2Vob2xkZXJzIDI3NS0yOTggdG8gY2F0Y2ggdXAKCXdpdGggbGludXgvc3lzY2FsbGVudC5oIGFkZGl0aW9ucy4KCgkqIHN0cmFjZS5jICh0Y2J0YWIpOiBNYWtlIHRoaXMgYSBwb2ludGVyIHRvIHBvaW50ZXJzLCBub3QgYW4gYXJyYXkuCgkodGNidGFic2l6ZSk6IE5ldyB2YXJpYWJsZS4KCShtYWluKTogSW5pdGlhbGl6ZSB0aGVtIHVzaW5nIGR5bmFtaWMgYWxsb2NhdGlvbi4KCShhbGxvY3RjYiwgbWFpbik6IFVzZSB0Y2J0YWJzaXplIGluIHBsYWNlIG9mIE1BWF9QUk9DUzsgaW5kaXJlY3QuCgkocGlkMnRjYiwgY2xlYW51cCk6IExpa2V3aXNlLgoJW1VTRV9QUk9DRlNdIChwb2xsdik6IE1ha2UgdGhpcyBhIHBvaW50ZXIsIG5vdCBhbiBhcnJheTsgbWFrZSBzdGF0aWMuCgkocmVidWlsZF9wb2xsdik6IER5bmFtaWNhbGx5IGFsbG9jYXRlIHRoZSB2ZWN0b3IuCgkqIGRlZnMuaCAodGNidGFiKTogVXBkYXRlIGRlY2xzLgoJKE1BWF9QUk9DUyk6IE1hY3JvIHJlbW92ZWQsIG5vIG1vcmUgc3RhdGljIGxpbWl0IG9uIHRoaXMuCgkqIHByb2Nlc3MuYyAoZm9ya190Y2IpOiBOZXcgZnVuY3Rpb24uCgkoaW50ZXJuYWxfY2xvbmUsIGludGVybmFsX2ZvcmspOiBVc2UgaXQgaW5zdGVhZCBvZiBjaGVja2luZyBucHJvY3MuCgoJKiBzdHJhY2UuYyAoZGV0YWNoKSBbTElOVVhdOiBVc2UgX19XQUxMIChvciBhIHNlY29uZCB0cnkgd2l0aCBfX1dDTE9ORSkKCWluIHdhaXQgYWZ0ZXIgc2VuZGluZyBTSUdTVE9QLgoKMjAwMi0xMi0xNiAgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAcmVkaGF0LmNvbT4KCgkqIHNpZ25hbC5jIChzcHJpbnRzaWdtYXNrKTogSW5jcmVhc2Ugc3RhdGljIGJ1ZmZlciBzaXplIHRvIGFjY291bnQgZm9yCgl3b3JzdCBwb3NzaWJsZSBjYXNlLiAgUmVwb3J0ZWQgYnkgRGFuaWVsIEphY29ib3dpdHogPGRyb3dAZmFsc2Uub3JnPi4KCgkqIHByb2Nlc3MuYyBbTElOVVhdICh3YWl0NF9vcHRpb25zKTogRml4IF9fV0NMT05FIHZhbHVlLiAgQWRkCglfX1dOT1RIUkVBRCBhbmQgX19XQUxMLgoKCSogc3RyYWNlLmMgKHRyYWNlKSBbTElOVVhdOiBPbmx5IGNoZWNrIGVycm5vIGlmIHdhaXQ0IGFjdHVhbGx5IGZhaWxzLAoJc28gd2UgZG9uJ3QgcmVwZWF0IGEgd2FpdCBhbmQgdGh1cyBkcm9wIGEgc3RhdHVzLiAgRml4ZXMgUkgjNjI1OTEuCgoyMDAyLTEyLTE1ICBSb2xhbmQgTWNHcmF0aCAgPHJvbGFuZEByZWRoYXQuY29tPgoKCSogcHJvY2Vzcy5jIChzZXRhcmcpIFtQT1dFUlBDXTogU3VwcG9ydCBpdC4KCgkqIHV0aWwuYyBbUE9XRVJQQ10gKExPT1ApOiBGaXggdmFsdWUsIG5vdyAweDQ4MDAwMDAwICgwOiBiIDBiKS4KCU9sZCB2YWx1ZSB3YXMgYm9ndXMsIG5vdCBldmVuIGEgcHJvcGVyIGluc3RydWN0aW9uLgoJRnJvbSBHdXkgTS4gU3RyZWV0ZXIgPHN0cmVldGVyQHJlZGhhdC5jb20+LgoKCSogc3RyYWNlLmMgKG1haW4pIFshIFVTRV9QUk9DRlNdOiBBbHdheXMgcmVzZXQgU0lHQ0hMRCB0byBTSUdfREZMLgoKCSogY29uZmlndXJlLmluOiBEb24ndCBjaGVjayBmb3IgcHV0cG1zZy4KCSogc3RyZWFtLmMgKHN5c19nZXRwbXNnLCBzeXNfcHV0cG1zZyk6IE1ha2UgdGhlc2UgY29uZGl0aW9uYWwgb24KCSNpZmRlZiBTWVNfKiwgcmF0aGVyIHRoYW4gb24gSEFWRV9QVVRQTVNHLgoKCSogYWNsb2NhbC5tNCAoQUNfU1RBVDY0KTogSW5jbHVkZSA8bGludXgvdHlwZXMuaD4gYmVmb3JlIDxhc20vc3RhdC5oPgoJaW4gdGVzdC4gIFRlc3Qgb3VyIG93biAjaWZkZWYgTElOVVggcmF0aGVyIHRoYW4gcHJlZGVmaW5lZCBgbGludXgnLgoKCSogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50Lmg6IFVzZSBzeXNfbGxzZWVrIGZvciBfbGxzZWVrLgoJKiBsaW51eC9zcGFyYy9zeXNjYWxsZW50Lmg6IExpa2V3aXNlLgoJKiBsaW51eC9ocHBhL3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgoJKiBzeXNjYWxsLmMgKHN5c2NhbGxfZW50ZXIpIFtMSU5VWCAmJiBQT1dFUlBDXTogRGVmaW5lIFBUX09SSUdfUjMgaWYKCW5vdCBkZWZpbmVkLCBzaW5jZSA8YXNtL3B0cmFjZS5oPiBkZWZpbmVzIGl0IG9ubHkgI2lmZGVmIF9fS0VSTkVMX18uCgkqIHByb2Nlc3MuYzogTGlrZXdpc2UuCgoJKiBkZXNjLmMgKHN5c19vc2Zfc2VsZWN0KTogQWRkIG1pc3NpbmcgcmV0dXJuIHR5cGUuCgoJKiBzeXNjYWxsLmMgKHRyYWNlX3N5c2NhbGwpOiBVc2Ugc3RyZXJyb3IsIG5vdCBzeXNfZXJybGlzdC9zeXNfbmVyci4KCgkqIGxpbnV4L2lhNjQvc3lzY2FsbGVudC5oOiBSZW1vdmUgbWFjcm9zIGZvciBzeXNfZGVsZXRlX21vZHVsZSwKCXN5c19uYW5vc2xlZXAsIGJvdGggYWxyZWFkeSBpbiBsaW51eC9kdW1teS5oLgoKCSogc3lzY2FsbC5jIChnZXRfc2Nubyk6IE1vdmUgc3RhdGljIGBjdXJycGVycycgaW5zaWRlICNpZmRlZiBYODZfNjQuCgkodHJhY2Vfc3lzY2FsbCk6IEZpeCByZXR1cm4gd2l0aG91dCB2YWx1ZS4KCgkqIGxpbnV4L3N5c2NhbGxlbnQuaDogVXBkYXRlIHRhYmxlIHdpdGggbmFtZXMgb2YgbmV3IHN5c2NhbGxzCglpb19zZXR1cCwgaW9fZGVzdHJveSwgaW9fZ2V0dmVudHMsIGlvX3N1Ym1pdCwgaW9fY2FuY2VsLgoJKiBsaW51eC9pYTY0L3N5c2NhbGxlbnQuaDogTGlrZXdpc2UuCgkqIGxpbnV4L3Bvd2VycGMvc3lzY2FsbGVudC5oOiBMaWtld2lzZS4KCgkqIHNpZ25hbC5jIFtMSU5VWCAmJiBJMzg2XTogUHJvdmlkZSBTQV9SRVNUT1JFUiBjb25zdGFudCBpZiBub3QKCWRlZmluZWQuICBJZiB0aGUgYml0IGlzIHNldCwgcHJpbnQgdGhlIHNhX3Jlc3RvcmVyIGZpZWxkIG9mIHNpZ2FjdGlvbi4KCgkqIG1lbS5jOiBBZGQgc3lzX3tnZXQsc2V0fV90aHJlYWRfYXJlYS4KCSogbGludXgvc3lzY2FsbC5oOiBEZWNsYXJlIHRoZW0uCgkqIGxpbnV4L3N5c2NhbGxlbnQuaDogVXBkYXRlIHRoZSB0YWJsZSBmb3IgdGhlc2UuCgkqIGxpbnV4L2R1bW15LmggKHN5c19tb2RpZnlfbGR0KTogRGVmaW5lIG9ubHkgI2lmbmRlZiBJMzg2LgoJKHN5c19nZXRfdGhyZWFkX2FyZWEsIHN5c19zZXRfdGhyZWFkX2FyZWEpOiBOZXcgbWFjcm9zICNpZm5kZWYgSTM4Ni4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIGxpbnV4L3hhdHRyLmggYW5kIGxpbnV4L2Z1dGV4LmggaGVhZGVycy4KCSogbGludXgvc3lzY2FsbC5oOiBBZGQgc3lzXyogZGVjbHMgZm9yIG5ldyBzeXNjYWxscyBnZXRwbXNnLCBwdXRwbXNnLAoJcmVhZGFoZWFkLCBzZW5kZmlsZTY0LCBzZXR4YXR0ciwgZnNldHhhdHRyLCBnZXR4YXR0ciwgZmdldHhhdHRyLCBpbnQKCWxpc3R4YXR0ciwgZmxpc3R4YXR0ciwgcmVtb3ZleGF0dHIsIGZyZW1vdmV4YXR0ciwgc2NoZWRfc2V0YWZmaW5pdHksCglzY2hlZF9nZXRhZmZpbml0eSwgZnV0ZXguCgkqIGxpbnV4L3N5c2NhbGxlbnQuaDogVXBkYXRlIHRoZSB0YWJsZS4KCSogaW8uYzogQWRkIHN5c19zZW5kZmlsZTY0LgoJKiBmaWxlLmM6IEFkZCBzeXNfcmVhZGFoZWFkLCBzeXNfKnhhdHRyLgoJKiBwcm9jZXNzLmM6IEFkZCBzeXNfZnV0ZXgsIHN5c18qYWZmaW5pdHkuCgoJKiBsaW51eC9zeXNjYWxsLmggKFNZU19zb2NrZXRfc3ViY2FsbCk6IERlZmluZSB0byAyNTYgb24gYWxsIG1hY2hpbmVzLgoJKFNZU19pcGNfc3ViY2FsbCk6IEFsd2F5cyBTWVNfc29ja2V0X3N1YmNhbGwgKyBTWVNfc29ja2V0X25zdWJjYWxscy4KCSogbGludXgvc3lzY2FsbGVudC5oOiBVcGRhdGUgdGhlIHRhYmxlIGZvciBzb2NrZXQgYW5kIGlwYyBzdWJjYWxscy4KCjIwMDItMTEtMDkgIEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPgoKCUJ1Z2ZpeCBmb3IgczM5MC9zMzkweDoKCSogc3lzY2FsbC5jOiBGaXhlZCBzY25vIGRlcml2YXRpb24gZm9yIHMzOTAvczM5MHguCgoyMDAyLTExLTA2ICBNaWNoYWwgTHVkdmlnICA8bWx1ZHZpZ0BzdXNlLmN6PgoKCU1lcmdlZCBwYXRjaCBmcm9tIFN0ZXZlbiBKLiBIaWxsIDxzamhpbGxAcmVhbGl0eWRpbHV0ZWQuY29tPgoJdG8gYWxsb3cgdGhlIGNvbXBpbGF0aW9uIG9mIGEgbmF0aXZlIE1JUFMgc3RyYWNlLgoKMjAwMi0xMS0wNiAgTWljaGFsIEx1ZHZpZyAgPG1sdWR2aWdAc3VzZS5jej4KCglGcm9tIE1hcnR5IExlaXNuZXIgPGxlaXNuZXJAcm9jaGVzdGVyLnJyLmNvbT4sCglyZXdyaXR0ZW4gYnkgbWx1ZHZpZzoKCSogc3RyYWNlLmMgKG5vdF9mYWlsaW5nX29ubHkpOiBOZXcuCgkodXNhZ2UpOiBBZGRlZCAteiBzd2l0Y2ggZGVzY3JpcHRpb24uCgkobWFpbik6IEFkZGVkIC16IHN3aXRjaCBwYXJzaW5nIHRvIG5vdF9mYWlsaW5nX29ubHkgdmFyaWFibGUuCgkqIHN5c2NhbGwuYyAodHJhY2Vfc3lzY2FsbCk6IEFkZGVkIG5vdF9mYWlsaW5nX29ubHkgaGFuZGxpbmcuCgoyMDAyLTEwLTA4ICBIZWlrbyBDYXJzdGVucyA8aGVpa28uY2Fyc3RlbnNAZGUuaWJtLmNvbT4KCglNaXNzaW5nIGNvbXBsZXRlIGNoYW5nZWxvZyBmb3IgMjAwMi0xMC0wNyBjb21taXQ6CgkqIE1ha2VmaWxlLmluOiBBZGRlZCBsaW51eC9zMzkwLCBsaW51eC9zMzkweCB0byBBTExfU1VCRElSUy4KCSogYWNjb25maWcuaDogTmV3IGRlZmluZSBmb3IgczM5MHguCgkqIGNvbmZpZy5zdWI6IEFkZGVkIG1pc3NpbmcgZGVmaW5lIGZvciBzMzkwIGFuZCBuZXcgb25lIGZvciBzMzkweC4KCSogY29uZmlndXJlLmluOiBBZGRlZCBuZXcgZGVmaW5lIGZvciBzMzkweC4KCSogZmlsZS5jOiBBZGRlZCBtaXNzaW5nICN1bmRlZiBkaXJlbnQ2NCBhbmQgbmV3IGRlZmluZXMgZm9yIHMzOTB4LgoJKiBsaW51eC9zMzkwOiBOZXcgZGlyZWN0b3J5LgoJKiBsaW51eC9zMzkwL01ha2VmaWxlLmluOiBOZXcgZmlsZS4KCSogbGludXgvczM5MC9lcnJub2VudC5oOiBOZXcgZmlsZS4KCSogbGludXgvczM5MC9pb2N0bGVudC5oOiBOZXcgZmlsZS4KCSogbGludXgvczM5MC9zaWduYWxlbnQuaDogTmV3IGZpbGUuCgkqIGxpbnV4L3MzOTAvc3lzY2FsbGVudC5oOiBOZXcgZmlsZS4KCSogbGludXgvczM5MHg6IE5ldyBkaXJlY3RveS4KCSogbGludXgvczM5MHgvTWFrZWZpbGUuaW46IE5ldyBmaWxlLgoJKiBsaW51eC9zMzkweC9lcnJub2VudC5oOiBOZXcgZmlsZS4KCSogbGludXgvczM5MHgvaW9jdGxlbnQuaDogTmV3IGZpbGUuCgkqIGxpbnV4L3MzOTB4L3NpZ25hbGVudC5oOiBOZXcgZmlsZS4KCSogbGludXgvczM5MHgvc3lzY2FsbGVudC5oOiBOZXcgZmlsZS4KCSogbGludXgvc3lzY2FsbC5oOiBBZGRlZCBzeXNfbWluY29yZSgpIHByb3RvdHlwZSBhbmQgYWRkZWQgbmV3CglzMzkweCBkZWZpbmVzLgoJKiBwcm9jZXNzLmM6IEFkZGVkIHMzOTB4IGRlZmluZXMuCgkoY2hhbmdlX3N5c2NhbGwpOiBDaGFuZ2VkIGhhbmRsaW5nIGZvciBzMzkwLgoJKHNldGFyZyk6IEFkZGVkIG1pc3NpbmcgczM5MC9zMzkweCBjb2RlIGluIHNldGFyZygpLgoJKiBzaWduYWwuYzogQWRkZWQgczM5MHggZGVmaW5lLgoJKHN5c19zaWdyZXR1cm4pOiBCdWdmaXggaW4gczM5MC9zMzkweCBjb2RlICh3cm9uZyBudW1iZXIgb2YKCWFyZ3VtZW50cyB0byBzcHJpbnRzaWdtYXNrKCkpLgoJKiBzdHJlYW0uYyAoaW50ZXJuYWxfc3RyZWFtX2lvY3RsKTogQ2hhbmdlZCBpbnQgY2FzdCB0byBsb25nIGNhc3QsCglzaW5jZSBwcmludHN0cigpIGV4cGVjdHMgYSBsb25nLgoJKiBzeXNjYWxsLmMgKGRlY29kZV9zdWJjYWxsKTogQ2hhbmdlZCBzZXZlcmFsIHZhcmlhYmxlcyB0byBiZSBsb25nCglpbnN0ZWFkIG9mIGludCB0byBtYXRjaCA2NCBiaXQgcmVxdWlyZW1lbnRzLiBBZGRlZCBzMzkweCBkZWZpbmVzLgoJKHN5c2NhbGxfZW50ZXIpOiBDaGFuZ2VkIHVwZWVrKCkgY2FsbCB0byBtYXRjaCBzMzkwIGFuZCBzMzkweAoJcmVxdWlyZW1lbnRzLgoJKiB1dGlsLmM6IEFkZGVkIHMzOTB4IGRlZmluZXMuCgoyMDAyLTEwLTA3ICBNaWNoYWwgTHVkdmlnICA8bWx1ZHZpZ0BzdXNlLmN6PgoKCU1lcmdlZCBzMzkweCBwb3J0IGJ5IEhlaWtvIENhcnN0ZW5zIDxIZWlrby5DYXJzdGVuc0BkZS5pYm0uY29tPgoJYW5kIGJ1Z2ZpeGVzIHRvIHMzOTAgYnkgRC5KLiBCYXJyb3cuCgoyMDAyLTA5LTIzICBNaWNoYWwgTHVkdmlnICA8bWx1ZHZpZ0BzdXNlLmN6PgoKCU1lcmdlZCB4ODYtNjQgcG9ydCBieSBBbmRpIEtsZWVuIDxha0BzdXNlLmRlPgoJYW5kIE1pY2hhbCBMdWR2aWcgPG1sdWR2aWdAc3VzZS5jej4KCSogTWFrZWZpbGUuaW46IE5ldyB0YXJnZXQgJ2hlYWRlcnMnLiBGYWlsdXJlIGlnbm9yZWQuCgkqIGFjY29uZmlnLmg6IE5ldyBkZWZpbmVzIGZvciB4ODYtNjQuCgkqIGNvbmZpZ3VyZS5pbjogRGl0dG8uCgkqIGRlZnMuaDogRGl0dG8uCgkqIGZpbGUuYzogRGl0dG8uCgkqIHNpZ25hbC5jOiBEaXR0by4KCSogcHJvY2Vzcy5jOiBBZGRlZCBzdXBwb3J0IGZvciB4ODYtNjQuCgkqIHV0aWwuYzogRGl0dG8uCgkqIHN5c2NhbGwuYzogRGl0dG8gKyBhZGRlZCBhdXRvbWF0aWMgcGVyc29uYWxpdHkgc3dpdGNoaW5nLgoJKiBsaW51eC9zeXNjYWxsLmg6IERpdHRvLgoJKiBsaW51eC94ODZfNjQ6IE5ldyBkaXJlY3RvcnkuCgkqIGxpbnV4L3g4Nl82NC9NYWtlZmlsZS5pbjogTmV3IGZpbGUuCgkqIGxpbnV4L3g4Nl82NC9nZW50YWIucGw6IERpdHRvLgoJKiBsaW51eC94ODZfNjQvaTM4Ni1oZWFkZXJzLmRpZmY6IERpdHRvLgoJKiBsaW51eC94ODZfNjQvbWFrZWhlYWRlcnMuc2g6IERpdHRvLgoJKiBsaW51eC94ODZfNjQvc3lzY2FsbGVudC5oOiBEaXR0by4KCSogbWVtLmMgKHByaW50X21tYXApOiBBbHdheXMgcHJpbnQgYXJnWzRdIGFzIGludC4KCjIwMDItMDktMjMgIE1pY2hhbCBMdWR2aWcgIDxtbHVkdmlnQHN1c2UuY3o+CgoJKiBjb25maWd1cmUuaW46IEZpeCByZWd1bGFyIGV4cHJlc3Npb25zLgoJKiBsaW51eC9zeXNjYWxsLmg6IEFkZGVkIG1pc3NpbmcgYnJhY2VzIGluIHByb3RvdHlwZSBvZgoJc3lzX2dldGRlbnRzNjQoKS4KCSogZmlsZS5jOiBVc2UgJyNpZmRlZiBMSU5VWCcgaW5zdGVhZCBvZiAnI2lmZGVmIGxpbnV4Jy4KCShzdHJ1Y3QgZmlsZWZsYWdzKTogTWFkZSBleHRlcm4gdG8gaW5oaWJpdCBjb21waWF0aW9uIHdhcm5pbmdzLgoJKHN5c19nZXRkZW50czY0KTogTWVyZ2VkIExJTlVYIGFuZCBTVlI0IHBhcnQuCgkqIHN5c2NhbGwuYyAoZ2V0X3Njbm8pOiBTcGxpdCBtdWx0aWxpbmUgc3RyaW5nIGludG8gdHdvIGRpc3RpbmN0CglzdHJpbmdzLgoKMjAwMi0wNS0yNCAgSm9obiBIdWdoZXMgPGpvaG5AY2FsdmEuY29tPgoKCSogc3RyZWFtLmgsIG5ldC5oOiBBdm9pZCBwb3NzaWJsZSBpbmZpbml0ZSBsb29wIGNhdXNlZCBieQoJdW5zaWduZWQgYXJpdGhtZXRpYyBpbiBwcmVjZWVkaW5nIGNoYW5nZS4KCjIwMDItMDUtMjMgIEpvaG4gSHVnaGVzIDxqb2huQGNhbHZhLmNvbT4KCgkqIGFjY29uZmlnLmg6IEFkZCBIQVZFX09QVEhEUiBhbmQgSEFWRV9UX09QVEhEUiBkZWZpbmVzLgoKCSogYWNsb2NhbC5tNDogQWRkIHRlc3RzIGZvciBzdHJ1Y3Qgb3B0aGRyIGluIHN5cy9zb2NrZXQuaCBhbmQKCXN0cnVjdCB0X29wdGhkciBpbiBzeXMvdGl1c2VyLmgsIGRlZmluZSBIQVZFX09QVEhEUiBhbmQgSEFWRV9UX09QVEhEUgoJaWYgZm91bmQuCgoJKiBjb25maWd1cmUuaW46IHVzZSB0ZXN0cyBmb3Igc3RydWN0IG9wdGhkciBhbmQgc3RydWN0IHRfb3B0aGRyLgoKCSogZGVmcy5oOiBhZGQgbmV3IGZ1bmN0aW9uIHByaW50X3NvY2tfb3B0bWdtdC4KCgkqIGlvLmM6IGFkZCBoYWNrIHRoYXQgbGV0cyBpb2N0bCBkZWNvZGUgZnVuY3Rpb25zIHNldCBhdXhpbGxpYXJ5CglzdHJpbmcgcmV0dXJuLgoKCSogc3RyZWFtLmM6IGJldHRlciBkZWNvZGluZyBmb3IgdGltb2QgaW9jdGxzLgoKCSogbmV0LmM6IGFkZCBmdW5jdGlvbiBwcmludF9zb2NrX29wdG1nbXQsIHVzZWQgYnkgdGltb2QgaW9jdGwKCWRlY29kaW5nIGZ1bmN0aW9ucyBpbiBzdHJlYW0uYy4KCjIwMDItMDUtMjMgIEpvaG4gSHVnaGVzIDxqb2huQGNhbHZhLmNvbT4KCgkqIGFjY29uZmlnLmg6IE1ha2UgYXV0b2hlYWRlciBoYXBweSBhYm91dCBMaW51eC9TdXBlckgKCjIwMDItMDUtMjMgIEpvaG4gSHVnaGVzIDxqb2huQGNhbHZhLmNvbT4KCgkqIHN0cmFjZS5jOiBHZXQgcmlkIG9mIHdhcm5pbmcgaWYgbm90IHVzaW5nIFBPTExfSEFDSwoKMjAwMi0wNS0yMiAgSm9obiBIdWdoZXMgPGpvaG5AY2FsdmEuY29tPgoKCSogbmV0LmM6IFNpbXBsaWZ5IHtnZXQsc2V0fXNvY2tvcHQsIGRlY29kZSBTT19MSU5HRVIsIGNvcGUgd2l0aAoJb3B0aW9ucyB0aGF0IGFyZSBub3QganVzdCBpbnRzLCBjb3BlIHdpdGggc3lzdGVtcyB0aGF0IGRvbid0CgkjZGVmaW5lIFNPTF9UQ1AgYW5kIHNvIG9uLgoKMjAwMi0wNS0yMSAgSm9obiBIdWdoZXMgPGpvaG5AY2FsdmEuY29tPgoKCSogc3RyYWNlLmM6IEZpeCB3YXJuaW5nIGlmIFBPTExfSEFDSyBpcyB1c2VkLgoKMjAwMi0wNS0xNyAgSm9obiBIdWdoZXMgPGpvaG5AY2FsdmEuY29tPgoKCSogc3ZyNC9pb2N0bGVudC5zaDogU29tZSBkZWZpbmVzIG9uIFVXIGNvbWUgd2l0aCB0b28gbWFueSBzcGFjZXMuCgoyMDAyLTA1LTE3ICBKb2huIEh1Z2hlcyA8am9obkBjYWx2YS5jb20+CgoJKiBzdnI0L2lvY3RsZW50LnNoOiBDb3BlIHdpdGggI2RlZmluZXMgd3JhcHBlZCBpbiAjaWZkZWZzLgoKMjAwMi0wNS0xNyAgSm9obiBIdWdoZXMgPGpvaG5AY2FsdmEuY29tPgoKCSogc3RyZWFtLmM6IHRpZHkgdXAgb3V0cHV0IGEgbGl0dGxlLgoKMjAwMi0wNS0xNyAgSm9obiBIdWdoZXMgPGpvaG5AY2FsdmEuY29tPgoKCSogcHJvY2Vzcy5jLCBzdnI0L2R1bW15LmgsIHN2cjQvc3lzY2FsbC5oOiBkZWNvZGUgYXJndW1lbnRzCgl0byBwcm9jcHJpdiBzeXNjYWxsLgoKMjAwMi0wNS0wMSAgV2ljaGVydCBBa2tlcm1hbiA8d2ljaGVydEBkZWVwaGFja21vZGUub3JnPgoKCSogY29uZmlndXJlLmluLCBkZWZzLmgsIHByb2Nlc3MuYywgc29jay5jLCBzeXNjYWxsLmMsIHV0aWwuYzogbWVyZ2UKCSAgcGF0Y2ggZnJvbSBHcmVnIEJhbmtzIDxnYmFua3NAcG9ja2V0cGVuZ3VpbnMuY29tPiBmb3IgTGludXgvU3VwZXJICgkgIHN1cHBvcnQKCjIwMDItMDQtMDEgIFdpY2hlcnQgQWtrZXJtYW4gPHdpY2hlcnRAZGVlcGhhY2ttb2RlLm9yZz4KCgkqIHN0cmFjZS5jOiBjbG9zZSB0Y3AtPm91dGYgaW4gZHJvcHRjYigpCgoyMDAyLTA0LTAxICBXaWNoZXJ0IEFra2VybWFuIDx3aWNoZXJ0QGRlZXBoYWNrbW9kZS5vcmc+CgoJKiBuZXQuYzogZGVjb2RlIHBhY2tldCBvcHRpb25zCgoyMDAyLTAzLTMxICBXaWNoZXJ0IEFra2VybWFuIDx3aWNoZXJ0QGRlZXBoYWNrbW9kZS5vcmc+CgoJKiBsaW51eC97YWxwaGEsaHBwYSxpYTY0LG1pcHMscG93ZXJwYyxzcGFyY30vc3lzY2FsbGVudC5oOiByZWdlbmVyYXRlZAoKMjAwMi0wMy0zMSAgV2ljaGVydCBBa2tlcm1hbiA8d2ljaGVydEBkZWVwaGFja21vZGUub3JnPgoKCSogZGViaWFuLyo6IGFkZGVkCgkqIGxpbnV4L3N5c2NhbGxlbnQuaDogZml4IHR5cG8gYW5kIGFkZCB0aGUgcmVzZXJ2ZWQgc3RyZWFtIHN5c2NhbGxzCgkqIGRlZnMuaCwgZmlsZS5jLCBpby5jOiBmaXggc2lnbmVkL3Vuc2lnbmVkIGlzc3VlcwoJKiBzeXNjYWxsLmM6IGNoZWNrIGZvciBuZWdhdGl2ZSB1X2Vycm9ycwoJKiBjdnNidWlsZDogcmVuYW1lZCB0byBhdXRvZ2VuLnNoCgoyMDAxLTEyLTE3ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKCSogbmV0LmM6IGFkZCBuZXcgVENQIHNvY2tldCBvcHRpb25zCgoyMDAxLTEwLTI2ICBKb2huIEh1Z2hlcyA8am9obkBjYWx2YS5jb20+CgoJKiBzdnI0L2lvY3RsZW50LnNoOiBDb3BlIHdpdGggI2RlZmluZSBsaW5lcyBjb250YWluaW5nCgljb21tZW50cyB0aGF0IHRlcm1pbmF0ZSBvbiBzdWJzZXF1ZW50IGxpbmVzLiAgVXNlZCB0bwoJY29tbWVudCBvdXQgc3Vic2VxdWVudCBpb2N0bHMhCgoyMDAxLTEwLTI1ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKCSogbGludXgvaW9jdGxlbnQuaDogcmVnZW5lcmF0ZWQgdXNpbmcgY3VycmVudCBzY3JpcHRzIHNvCgkgIHRlcm0gaW9jdGxzIGFyZSBpbmNsdWRlZAoKMjAwMS0xMC0xOSAgSm9obiBIdWdoZXMgIDxqb2huQENhbHZhLkNPTT4KCgkqIHN0cmFjZS5jKHByb2Nfb3Blbik6IE9uIFNWUjQgb25seSB0cmFjZSB0aGUgc3lzY2FsbHMsCglzaWduYWxzIGFuZCBmYXVsdHMgd2UgY2FyZSBhYm91dC4KCjIwMDEtMTAtMTggIEpvaG4gSHVnaGVzICA8am9obkBDYWx2YS5DT00+CgoJKiBhY2NvbmZpZy5oOiBBZGQgSEFTX1NJR0lORk9fVC4KCSogYWNsb2NhbC5tNDogYWRkIGNoZWNrIGZvciBzaWdpbmZvX3QgaW4gc2lnbmFsLmguCgkqIGNvbmZpZ3VyZS5pbjogdXNlIGNoZWNrIGZvciBzaWdpbmZvX3QuCgkqIGRlZnMuaDogaWYgSEFWRV9TSUdJTkZPX1QgdGhlIGRlY2xhcmUgcHJpbnRzaWdpbmZvLiAgT24gU1ZSNAoJICBhbGxvdyBhY2Nlc3MgdG8gc2lnaW5mbyB3aGVuIHNpZ25hbCByZWNpZXZlZC4KCSogcHJvY2Vzcy5jOiBSZW1vdmUgU1ZSNCBvbmx5IHZlcnNpb24gb2YgcHJpbnRzaWdpbmZvLgoJKiBzaWduYWwuYzogbWVyZ2UgU1ZSNCBhbmQgTElOVVggdmVyc2lvbnMgb2YgcHJpbnRzaWdpbmZvLgoJKiBzdHJhY2UuYzogb24gU1ZSNCBwcmludCBzaWdpbmZvIHdoZW4gc2lnbmFsIHJlY2lldmVkLgoKMjAwMS0xMC0xOCAgSm9obiBIdWdoZXMgIDxqb2huQENhbHZhLkNPTT4KCgkqIHN5c3RlbS5jKHN5c19zc2lzeXMpOiBoYW5kbGUgcmV0dXJuIHZhbHVlcyBmb3Igc3Npc3lzCgoyMDAxLTEwLTE4ICBKb2huIEh1Z2hlcyAgPGpvaG5AQ2FsdmEuQ09NPgoKCSogc2lnbmFsLmM6IGhhbmRsZSBzaWd3YWl0CgkqIHN2cjQvZHVtbXkuYzogTW92ZSBzaWd3YWl0IHRvIGRvbmUKCSogc3ZyNC9zeXNjYWxsLmg6IGhhbmRsZSBzaWd3YWl0CgoyMDAxLTEwLTE2ICBKb2huIEh1Z2hlcyAgPGpvaG5AQ2FsdmEuQ09NPgoKCSogc3lzdGVtLmMoc3lzX3NzaXN5cyk6IGRlY29kZSBzb21lIGFyZ3MgZm9yIHNzaXN5cy4KCjIwMDEtMTAtMTYgIEpvaG4gSHVnaGVzICA8am9obkBDYWx2YS5DT00+CgoJKiBtZW0uYzogTVNfU1lOQyBpcyB6ZXJvLCBzbyBtdXN0IGJlIGZpcnN0IGluIHhsYXQgbGlzdC4KCgkqIHN2cjQvZHVtbXkuaDogbWVtY250bCBpcyBtdWNoIGxpa2UgbWN0bC4KCjIwMDEtMTAtMTYgIEpvaG4gSHVnaGVzICA8am9obkBDYWx2YS5DT00+CgoJKiB1dGlsLmMgKHVtb3Zlc3RyKTogVW5peFdhcmUgKHN2cjQ/KSByZXR1cm5zIDAgd2hlbiB0cnlpbmcKCXRvIHJlYWQgdW5tYXBwZWQgcGFnZS4gIE1ha2UgaXQgcG9zc2libGUgdG8gc3RyYWNlIGtzaC4KCjIwMDEtMTAtMDMgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogcHJvY2Vzcy5jIChpbnRlcm5hbF9jbG9uZSk6IEF2b2lkIHJhY2UgY29uZGl0aW9uIGJ5IGNsZWFyaW5nCglicmVha3BvaW50IGFmdGVyIGF0dGFjaGluZyB0byBjaGlsZC4KCjIwMDEtMTAtMDIgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogbGludXgvaWE2NC9zeXNjYWxsZW50Lmg6IERlZmluZSBpYTMyIHN5c2NhbGwgbnVtYmVycyAob3JpZ2luYWxseQoJYnkgRG9uIER1Z2dlciwgd2l0aCBteSByZWZpbmVtZW50cykuCgoJKiBsaW51eC9pYTY0L2lvY3RsZW50Lmg6IFJlZ2VuZXJhdGUgYW5kIG1hbnVhbGx5IG1lcmdlIGNvbmZsaWN0aW5nCglpb2N0bHMgKFRDR0VUUyAmIFNORENUTF9UTVJfVElNRUJBU0UsIGV0Yy4pLgoKCSogbGludXgvaWE2NC9NYWtlZmlsZS5pbiAoaW9jdGxkZWZzLmggaW9jdGxzLmgpOiBVcGRhdGUgZm9yCgluZXcgaW9jdGxlbnQuaCBnZW5lcmF0aW9uIHNjaGVtZS4KCgkqIGxpbnV4L3N5c2NhbGwuaCAoc3lzX2Nsb25lMik6IERlY2xhcmUuCglbSUE2NF0gRGVmaW5lIGlhMzIgc29ja2V0LCBpcGMsIGFuZCBleHRyYSBzeXNjYWxsIG51bWJlcnMuCgoJKiBsaW51eC9pb2N0bGVudC5zaCAocmVnZXhwKTogQWxzbyBoYW5kbGUgPGFzbS9pb2N0bHMuaD4gc28gd2UKCWRvbid0IG1pc3MgdGhlIHR0eSBpb2N0bHMgKHVuZm9ydHVuYXRlbHksIHNvbWUgb2YgdGhlIHNvdW5kIHRpbWVyCglpb2N0bHMgYXJlIGluIGNvbmZsaWN0IHdpdGggdGhlbSEpLgoKCSogdXRpbC5jIChzZXRicHQpIFtJQTY0XTogQWRkIGlhMzIgc3VwcG9ydCAoYnkgRG9uIER1Z2dlcikuCgkoY2xyYnB0KSBbSUE2NF06IERpdHRvLgoKCSogc3lzY2FsbC5jIChpbnRlcm5hbF9zeXNjYWxsKTogSGFuZGxlIFNZU19jbG9uZTIsIFNZUzMyX3dhaXQ0LAoJYW5kIFNZUzMyX2V4aXQuCgkoZ2V0X3Njbm8pOiBHZXQgaWEzMiBzeXNjYWxsIG51bWJlciBmcm9tIHIxIChvcmlnIGVheCkgaW5zdGVhZCBvZgoJcjggKGVheCkuICBIYW5kbGUgVENCX1dBSVRFWEVDVkUuCgkoc3lzY2FsbF9maXh1cCk6IEhhbmRsZSBpYTY0LgoJKHN5c2NhbGxfZW50ZXIpOiBGaXggYXJndW1lbnQgZmV0Y2hpbmcgZm9yIGlhNjQuCgoJKiBzdHJhY2UuYyBbSUE2NCAmJiBMSU5VWF06IEluY2x1ZGUgPGFzbS9wdHJhY2Vfb2Zmc2V0cy5oPi4KCSh0cmFjZSkgW1BUX0dFVFNJR0lORk9dOiBQcmludCBzaWduYWwgYWRkcmVzcyBhbmQgcGMgaWYgcG9zc2libGUuCgoJKiBwcm9jZXNzLmMgKHRjcCk6IE5ldyBmdW5jdGlvbi4KCShjaGFuZ2Vfc3lzY2FsbCk6IEFkZCBzdXBwb3J0IGZvciBpYTY0IGxpbnV4LgoJKHN5c19leGVjdmUpOiBUdXJuIG9uIFRDQl9XQUlURVhFQ1ZFIGZvciBpYTY0IGxpbnV4LgoKCSogZGVzYy5jIChnZXRsayk6IENhc3QgbF9sZW4gdG8gImxvbmcgbG9uZyIgdG8gYXZvaWQgd2FybmluZ3Mgd2hlbgoJdHlwZSBpcyBuYXJyb3dlci4KCSogcmVzb3VyY2UuYyAoc3ByaW50cmxpbTY0KTogRGl0dG8uCgoJKiBkZWZzLmggKFRDQl9XQUlURVhFQ1ZFKSBbSUE2NF06IERlZmluZS4KCVtJQTY0XTogRGVjbGFyZSAiaWEzMiIgdmFyaWFibGUuCgoJKiBiam0uYzogRG8gbm90IGluY2x1ZGUgPGxpbnV4L21vZHVsZS5oPi4gIEl0J3Mgbm90IHNhZmUgdG8gaW5jbHVkZQoJa2VybmVsIGhlYWRlcnMuICBEZWNsYXJlIHRoZSBuZWNlc3NhcnkgY29uc3RhbnRzIGFuZCBzdHJ1Y3R1cmVzCglkaXJlY3RseSBpbnN0ZWFkLgoKMjAwMS0xMC0wMSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBzaWduYWwuYyAocGFyc2Vfc2lnc2V0X3QpOiBOZXcgZnVuY3Rpb24uCgkoc2lnaXNoYW5kbGVkKTogRml4IG9mZi1ieS1vbmUgYnVnIGJ5IHVzaW5nIHBhcnNlX3NpZ3NldF90KCkgYW5kCglhdm9pZGluZyByZWx5aW5nIG9uIGludGVybmFsIGxheW91dCBvZiBzaWdzZXRfdCBkYXRhc3RydWN0dXJlLgoKMjAwMS0wNC0yNiAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBsaW51eC9pYTY0L3N5c2NhbGxlbnQuaDogQWRkIGdldHVud2luZCgpLgoKMjAwMS0wNC0xMSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBzeXNjYWxsLmMgKHN5c2NhbGxfZW50ZXIpOiBVc2UgUFRfUkJTX0VORCBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWQKCVBUX0FSX0JTUC4gIFBpY2sgdXAgYXJndW1lbnRzIHN0YXJ0aW5nIHdpdGggb3V0MCwgd2hpY2ggaXMgbm90CglhbHdheXMgdGhlIHNhbWUgYXMgcjMyIChlLmcuLCBjb25zaWRlciBpbmxpbmVkIHN5c2NhbGxzKS4KCjIwMDEtMDktMjggICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogcHJvY2Vzcy5jOiBGcmVlQlNELUNVUlJFTlQgbm8gbG9uZ2VyIGhhcyBQVF9SRUFEX1UsIGFuZCBhbnl3YXkgd2UKICAgIHdlcmUgc2hvd2luZyBpdCBhcyBQVF9XUklURV9VISAgRml4IGZyb20gTWF4aW1lIEhlbnJpb24uCgoyMDAxLTA5LTE4ICAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKICAqIG5ldC5jOiBmaXggZGlzcGxheSBvZiBzb2NrYWRkciBzdHJ1Y3R1cmVzLCBzb21ldGltZXMgdG9vIG1hbnkgIn0iLAogICAgc29tZXRpbWVzIHRvbyBmZXcuICBGaXggc3VnZ2VzdGVkIGJ5IFJpY2hhcmQgS2V0dGxld2VsbC4KCjIwMDEtMDgtMTkgICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIHNpZ25hbC5jOiBkbyBub3QgaW5jbHVkZSBhc20vc2lnY29udGV4dC5oIG9uIElBNjQgc2luY2UgaXQgZ2V0cwogICAgdGhlIHN0cnVjdCBmcm9tIGJpdHMvc2lnY29udGV4dC5oIGFscmVhZHkgd2hpY2ggc2lnbmFsLmggaW5jbHVkZXMuCgoyMDAxLTA4LTAzICAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBsaW51eC9pb2N0bGVudC5zaDogY2hhbmdlIHJlZ2V4cHMgc28gd2UgY2F0Y2ggc291bmQgaW9jdGxzIGFzIHdlbGwgaW4KICAgIExpbnV4CiAgKiBsaW51eC9NYWtlZmlsZS5pbjogZml4IGEgZmV3IHRoaW5ncyBzbyB0aGUgaW9jdGwgbGlzdCBpcyBnZW5lcmF0ZWQKICAgIHByb3Blcmx5CiAgKiBpb2N0bC5jOiByZW1lbWJlciB0byBzaGlmdCBpb2N0bCBtYXNrcyBhcyB3ZWxsCgoyMDAxLTA4LTAzICAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBMaW51eC8qKi9zeXNjYWxsZW50Lmg6IHN5bmNocm9uaXplIHNlY3Rpb24gZm9yIGZjbnRsIGFuZCB1c2Ugc3lzX2ZjbnRsCiAgICBmb3Igc3lzX2ZjbnRsIGFzIHdlbGwKCjIwMDEtMDgtMDMgICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxpbnV4L2hwcGEvc3lzY2FsbGVudC5oOiB1cGRhdGVkIGZyb20gTWF0dGhldyBXaWxjb3gKCjIwMDEtMDgtMDMgICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIHByb2Nlc3MuYzogc2VlbXMgTGludXgvSUE2NCBjaGFuZ2VkIHJlZ2lzdGVyIG5hbWVzIG9uIHVzLCBzd2l0Y2ggdG8KICAgIHVzaW5nIG5ldyBuYW1lcy4KCjIwMDEtMDgtMDMgICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIHN0cmFjZS5jOiBzZXQgQ0xPRVhFQyAgZmxhZyBmb3Igb3V0cHV0ZmlsZQoKMjAwMS0wOC0wMyAgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogbGludXgvc3BhcmMvc3lzY2FsbC5oLCBsaW51eC9zcGFyYy9zeXNjYWxsZW50Lmg6IGFkZCBzb21lIExGUyBjYWxscwoKMjAwMS0wNy0yMyAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBjb25maWd1cmUuaW46IFN1cHBvcnQgY3Jvc3MtY29tcGlsaW5nIGJldHdlZW4gYXJjaGl0ZWN0dXJlcwoKMjAwMS0wNy0xMyAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBjb25maWd1cmUuaW46IGFkZCBTMzkwIHRvIGFyY2hpdGVjdHVyZSBsaXN0CgoyMDAxLTA3LTEwICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogVE9ETywgZGVmcy5oLCBpby5oLCBuZXQuYywgc3RyYWNlLmMsIHN5c2NhbGwuYywgdXRpbC5jOiBNZXJnZSBmaXhlcwogICAgZnJvbSBSaWNoYXJkIEtldHRsZXdlbGwgPHJrZXR0bGV3ZWxsQHpldXMuY29tPiB3aGljaCBhZGQgSS9PIGR1bXBpbmcKICAgIG9mIGFyZ3MgdG8gcmVhZHYvd3JpdGV2LiAgQWxzbyBnZXRzIHJpZCBvZiByZWR1bmRhbnQgcHJpbnRpb3ZlYwogICAgcm91dGluZSBmcm9tIG5ldC5jIChkdXBsaWNhdGUgb2YgdHByaW50X2lvdiBpbiB1dGlsLmMpLgoKMjAwMS0wNy0wMiAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBjb25maWcue2d1ZXNzLHN1Yn06IHVwZGF0ZWQKCjIwMDEtMDUtMTUgIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBzaWduYWwuYzogcGFzcyBhIHBvaW50ZXIgdG8gc2lnbWFzayB0byBwcmludHNpZ21hc2sgZnJvbSBwcmludGNvbnRleHQsCiAgICBpdCB3YXMganVzdCBwYXNzaW5nIHRoZSBzaWdtYXNrICh1Y3AtPnVjX3NpZ21hc2spLgoKMjAwMS0wNS0xNSAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKICAqIHV0aWwuYzogRG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mIHZhbGlkIG1lbW9yeSBpbiB1bW92ZXN0ciB3aGVuCiAgICBVU0VfUFJPQ0ZTLiAgSW1wb3J0YW50IGZvciBGUkVFQlNEIHN5c3RlbXMgKHdoaWNoIHNlZW0gdG8gaGF2ZSBhbgogICAgdW5tYXBwZWQgcGFnZSBqdXN0IGFmdGVyIHRoZSBhcmdzL2VudiBhcmVhKS4KCjIwMDEtMDQtMTggIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBjb25maWd1cmUuaW46IHRlc3QgZm9yIHN5cy9uc2NzeXMuaCwgdGhlIG5vbi1zdG9wIGNsdXN0ZXJzIGluY2x1ZGVzLgogICogcHJvY2Vzcy5jOiBoYW5kbGUgcmZvcmt7MSxhbGx9IGFuZCByZXhlY3ZlIGNhbGxzIG9uIG5vbi1zdG9wIGNsdXN0ZXJzLgogICogc3lzY2FsbC5jOiB0cmVhdCByZm9ya3sxLGFsbH0gYW5kIGZvcmt7MSxhbGx9IGFzIGZvcmsgbGlrZSBjYWxscy4KICAgIFRyZWF0IHJleGVjdmUgYXMgYW4gZXhlYy4KICAqIHN5c3RlbS5jOiBkZWNvZGUgYXJndW1lbnRzIHRvIHNzaXN5cyBjYWxsIG9uIG5zYyBzeXN0ZW1zLgogICogc3ZyNC9kdW1teS5oLCBzdnI0L3N5c2NhbGwuaDogbm93IHdlIGhhbmRsZSByZm9ya3sxLGFsbH0sIHNzaXN5cyBhbmQKICAgIHJleGVjdmUgY2FsbHMuCgoyMDAxLTA0LTEyICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIHByb2Nlc3MuYzogZml4IGNhc3QgZm9yIHBvd2VycGMgY29kZQogICogbGludXgvcG93ZXJwYy9zeXNjYWxsZW50Lmg6IHVwZGF0ZSBzeXNjYWxsIGxpc3QKICAqIFJFQURNRTogZml4IGFkZHJlc3MgZm9yIHRoZSBzdHJhY2UgbWFpbGluZ2xpc3QKICAqIHNpZ25hbC5jOiBzd2l0Y2ggdG8gdXNpbmcgL3Byb2MvPHBpZD4vc3RhdHVzIG9uIExpbnV4IHNvIHdlIGNhbiBnZXQKICAgIHRoZSByZWFsdGltZSBzaWduYWxzIGFzIHdlbGwKCjIwMDEtMDQtMTAgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogTWVyZ2UgcGF0Y2hlcyBmcm9tIE1hY2llaiBXLiBSb3p5Y2tpOgogICAgKyB1dGlsLmM6IGFkZCBjb2RlIHRvIHByaW50IFBDIGZvciBNSVBTCiAgICArIGxpbnV4L21pcHMvc3lzY2FsbGVudC5oOiB1cGRhdGVkCiAgICArIHN5c3RlbS5jOiBmb3JtYXRpbmcgZml4ZXMgZm9yIHN5c19zeXNtaXBzCiAgICArIGNvbmZpZ3VyZS5pbjogdGVzdCBmb3IgeWV0IG1vcmUgaGVhZGVycwogICAgKyBzdHJlYW0uYzogdXNlIGNvbmZpZ3VyZS1oZWFkZXJ0ZXN0cyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gT1MgaGludHMKCjIwMDEtMDQtMDcgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogTkVXUzogc3RhcnQgNC4zLjEgaXRlbXMKICAqIHZlcnNpb24uYzogdXBkYXRlZCB0byBzYXkgNC4zLjEgKHdhcyBzdGlsbCA0LjIsIG9vcHMhKQoKMjAwMS0wNC0wNyAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBjb25maWd1cmUuaW46IHRlc3QgZm9yIGFzbS9zeXNtaXBzLmggYW5kIGxpbnV4L3V0c25hbWUuaAogICogbGludXgvc3lzY2FsbC5oOiBmaXggYSB0eXBvIGZvciBzeXNfc3lzbWlwcwogICogc3lzdGVtLmM6IGluY2x1ZGUgYXNtL3N5c21pcHMuaCBhbmQgbGludXgvdXRzbmFtZS5oIGlmIHRoZXkgZXhpc3QsCiAgICBmaXggdHlwbwoKMjAwMS0wMy0zMSAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBsaW51eC9taXBzL2lvY3RsZW50Lmg6IHVwZGF0ZWQgdXNpbmcgbmV3IExpbnV4IGlvY3RsIHNldHVwCgoyMDAxLTAzLTMxICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxpbnV4L2lhNjQvaW9jdGxlbnQuaDogcmVnZW5lcmF0ZWQKCjIwMDEtMDMtMzEgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogbGludXgve2FscGhhLGlhNjQscG93ZXJwY30vaW9jdGxlbnQuc2g6IHJlbW92ZWQsIGFsbCBhcmNocyB1c2UgdGhlCiAgICBnZW5lcmFsIExpbnV4IGlvY3RsZW50LnNoCgoyMDAxLTAzLTMxICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxpbnV4L2lvY3RsZW50LnNoOiBhZGQgZGlyIHZhcmlhYmxlIGZvciBsb2NhdGlvbiBvZiBrZXJuZWwgaGVhZGVycwoKMjAwMS0wMy0yOSAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBsaW51eC9pYTY0L2lvY3RsZW50Lmg6IHVwZGF0ZWQgdXNpbmcgbmV3IExpbnV4IGlvY3RsIHNldHVwCgoyMDAxLTAzLTI5ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxpbnV4L3Bvd2VycGMvaW9jdGxlbnQuaDogdXBkYXRlZCB1c2luZyBuZXcgTGludXggaW9jdGwgc2V0dXAKCjIwMDEtMDMtMjkgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogbGludXgvaHBwYS9pb2N0bGVudC5oOiB1cGRhdGVkIHVzaW5nIG5ldyBMaW51eCBpb2N0bCBzZXR1cAoKMjAwMS0wMy0yOSAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBsaW51eC9hbHBoYS9pb2N0bGVudC5oOiB1cGRhdGVkIHVzaW5nIG5ldyBMaW51eCBpb2N0bCBzZXR1cAoKMjAwMS0wMy0yOCAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBjb25maWd1cmUuaW46IHVzZSBzcGFyYyogc28gd2UgY2FuIGNvbXBpbGUgb24gc3BhcmM2NCBhcyB3ZWxsCiAgKiBwcm9jZXNzLmMsIHN5c2NhbGwuYzogd29yayBhcm91bmQgZG91YmxlIGRlZmluZSBvZiBmcHEsIGZxIGFuZCBmcHUKICAgIHN0cnVjdHMgb24gTGludXgvc3BhcmMsIGFuZCB1c2UgcmVncyBpbnN0ZWFkIG9mIHB0X3JlZ3MKICAqIGRvbid0IHVzZSBhc20vc2lnY29udGV4dC5oIG9uIExpbnV4L3NwYXJjCgoyMDAxLTAzLTI4ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxpbnV4L3NwYXJjL2lvY3RsZW50Lmg6IHVwZGF0ZWQgdXNpbmcgbmV3IExpbnV4IGlvY3RsIHNldHVwCgoyMDAxLTAzLTI4ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIHN0cmFjZS5jOiB1c2UgX19XQUxMIGFzIHdhaXQ0IGZsYWcgaWYgaXQgZXhpc3RzIHNvIHdlIGNhbiBwcm9wZXJseQogICAgdHJhY2UgdGhyZWFkZWQgcHJvZ3JhbXMKCjIwMDEtMDMtMjcgIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBhY2xvY2FsLm00OiBhZGQgY2hlY2sgZm9yIGVuZGlhbm5lc3Mgb2YgbG9uZyBsb25nLgogICogYWNjb25maWcuaDogYWRkICNkZWZpbmUgZm9yIExJVFRMRV9FTkRJQU5fTE9OR19MT05HLgogICogY29uZmlndXJlLmluOiBjaGVjayBmb3IgZW5kaWFubmVzcyBvZiBsb25nIGxvbmcuCiAgKiBkZWZzLmg6IGNoYW5nZSBMT05HX0xPTkcgbWFjcm8gdG8gd29yayB3aXRoIGVpdGhlciBlbmRpYW5uZXNzIG9mCiAgICBsb25nIGxvbmcuCgoyMDAxLTAzLTI3ICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogbmV0LmM6IE1ha2UgY29tcGlsYWJsZSBieSBTQ08gVURLIGNvbXBpbGVyIChkb2Vzbid0IGxpa2UgZW1wdHkKICAgIGluaXRpYWxpc2F0aW9uIGxpc3QgZm9yIGFycmF5KS4KCjIwMDEtMDMtMjcgIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBzdnI0L3N5c2NhbGxlbnQuaDogbnRwX2FkanRpbWUgZW50cnkgd2FzIGR1cGxpY2F0ZWQgb24gU29sYXJpcwogICAgc3lzdGVtcyAtIGJhZCBtZXJnZSBvZiBIYXJhbGQgQm9laG1lJ3MgcGF0Y2ggYnkgbWUuCgoyMDAxLTAzLTI3ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxvdHMgb2YgZmlsZXM6IGFkZCBMaW51eC9ocHBhIHN1cHBvcnQKCjIwMDEtMDMtMTkgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogbGludXgvbWlwcy9zeXNjYWxsZW50Lmg6IHdlIGNhbid0IGhhdmUgLTEgbmFyZ3MsIGNoYW5nZSB0byAwCiAgKiBsaW51eC9zeXNjYWxsZW50Lmg6IG5vdCB0aGF0IHN5c2NhbGxzIDIyMCBhbmQgMjIxIGFyZSB1c2VkIG5vdwogICogY29uZmlnLmd1ZXNzOiB1cGRhdGVkCgoyMDAxLTAzLTE3ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxpbnV4L2lvY2xzb3J0LmM6IG5ldyBmaWxlCiAgKiBsaW51eC9pb2N0bGVudC5zaDogY29tcGxldGUgcmV3cml0ZSB0byB1c2UgYSBtb3JlIHNhbmUgYXBwcm9hY2ggdG8gZ2V0CiAgICB0aGUgaW9jdGwgbGlzdCB0aGF0IGRvZXNuJ3QgaW52b2x2ZSBhdHRlbXB0aW5nIHRvICNpbmNsdWRlIGFsbCBrZXJuZWwKICAgIGhlYWRlcnMKICAqIGxpbnV4Ly5jdnNpZ25vcmU6IGFkZGVkIGlvY3RkZWZzLmggYW5kIGlvY3Rscy5oIHdoaWNoIGFyZSBnZW5lcmF0ZWQKICAgIGJ5IHRoZSBuZXcgaW9jdGxlbnQuc2gKICAqIGlvY3RsLmM6IG9ubHkgbG9vayBhdCB0aGUgbnVtYmVyIGFuZCB0eXBlIGJpdHMgZm9yIGxpbnV4LCBzaW5jZQogICAgaW9jdGxlbnQuc2ggbm8gbG9uZ2VyIHN1cHBsaWVzIHRoZSBvdGhlcnMKCjIwMDEtMDMtMDggIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBmcmVlYnNkL3N5c2NhbGxzLnBsOiBPbiBGcmVlQlNEIHdlIG11c3QgY29wZSB3aXRoIENPTVBBVGliaWxpdHkgc3lzY2FsbHMsCiAgICBwcmV0ZW5kIHRoZXkgaGF2ZSBuYW1lcyBlbmRpbmcgd2l0aCAiPyIgc28gdGhhdCAtZSB0cmFjZT1zdGF0IChmb3IKICAgIGV4YW1wbGUpIHdpbGwgd29yay4KICAqIGZyZWVic2QvaTM4Ni9zeXNjYWxsZW50Lmg6IGFkZCA/IHRvIGNvbXBhdGFiaWxpdHkgc3lzY2FsbHMuCiAgKiBmcmVlYnNkL2kzODYvc3lzY2FsbC5oOiBjb25zaXN0ZW5jeS4KCjIwMDEtMDMtMDggIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBhY2NvbmZpZy5oOiBhZGQgbmV3IFNUX3h4eCBkZWZpbmVzLgogICogYWNsb2NhbC5tNDogbWFjcm9zIHRvIGNoZWNrIGZvciBtb3JlIGZpZWxkcyBpbiBzdHJ1Y3Qgc3RhdC4KICAqIGNvbmZpZ3VyZS5pbjogdXNlIG5ldyBtYWNyb3MgdG8gY2hlY2sgZm9yIGZpZWxkcyBpbiBzdHJ1Y3Qgc3RhdC4KICAqIGZpbGUuYzogdXNlIG5ldyBkZWZpbmVzIHRvIHJlcGxhY2UgI2lmZGVmIEZSRUVCU0QgYnkgI2lmIEhBVkVfU1RfeHh4LgoKMjAwMS0wMy0wOCAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKICAqIGRlZnMuaDogcmVuYW1lIHdpbXB5IGdldDY0IGFzIHBvd2VyZnVsIG5ldyBMT05HX0xPTkcKICAqIGZpbGUuYzogdXNlIExPTkdfTE9ORwogICogaW8uYzogdXNlIExPTkdfTE9ORwogICogbWVtLmMgdXNlIExPTkdfTE9ORwoKMjAwMS0wMy0wOCAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKICAqIGFjY29uZmlnLmg6IG5ldyAjZGVmaW5lcyBIQVZFX0xPTkdfTE9OR19PRkZfVCBhbmQgSEFWRV9MT05HX0xPTkdfUkxJTV9ULgogICogYWNsb2NhbC5tNDogcm91dGluZXMgdG8gY2hlY2sgZm9yIGxvbmcgbG9uZyBvZmZfdCBhbmQgcmxpbV90LgogICogY29uZmlndXJlLmluOiBjaGVjayBmb3IgbG9uZyBsb25nIG9mZl90IGFuZCBybGltX3QuCiAgKiBkZXNjLmM6IGlmIEhBVkVfTE9OR19MT05HX09GRl9UIHRyZWF0IGZsb2NrIGFzIGZsb2NrNjQKICAqIGZpbGUuYzogaWYgSEFWRV9MT05HX0xPTkdfT0ZGX1QgdHJlYXQgc3RhdCxsc3RhdCxmc3RhdCBhbmQgbHNlZWsgYXMgNjQKICAgIGJpdCB2ZXJzaW9ucy4KICAqIGlvLmM6IGlmIEhBVkVfTE9OR19MT05HX09GRl9UIHVzZSA2NCBiaXQgdmVyc2lvbnMgb2YgcHJlYWQgYW5kIHB3cml0ZS4KICAqIG1lbS5jOiBpZiBIQVZFX0xPTkdfTE9OR19PRkZfVCB1c2UgNjQgYml0IHZlcnNpb24gb2YgbW1hcAogICogcmVzb3VyY2UuYzogaWYgSEFWRV9MT05HX0xPTkdfT0ZGX1QgdXNlIDY0IGJpdCB2ZXJzaW9ucyBvZiBnZXRybGltaXQKICAgIGFuZCBzZXRybGltaXQuCiAgKiBmcmVlYnNkL3N5c2NhbGxzLnByaW50OiBkb24ndCBleHBsaWNpdGx5IHVzZSA2NCBiaXQgdmVyc2lvbnMgb2YgY2FsbHMsCiAgICBub3cgZG9uZSBhdXRvbWF0aWNhbHkgZm9yIHVzLgogICogZnJlZWJzZC9pMzg2L3N5c2NhbGwuaDogZGl0dG8uCiAgKiBmcmVlYnNkL2kzODYvc3lzY2FsbGVudC5oIGRpdHRvLgoKMjAwMS0wMy0wNyAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKICAqIGRlc2MuYzogT24gRnJlZUJTRCBmbG9jayBzdHJ1Y3R1cmUgdXNlcyA2NCBiaXQgb2Zmc2V0cy4KICAqIGZpbGUuYzogT24gRnJlZUJTRCB1c2Ugc3RhdDY0IGFuZCBwYWxzIGluc3RlYWQgb2Ygc3RhdC4KICAqIGZyZWVic2Qvc3lzY2FsbHMucHJpbnQ6IHVzZSBzdGF0NjQsIGxzdGF0NjQgYW5kIGZzdGF0NjQuCiAgKiBmcmVlYnNkL2kzODYvc3lzY2FsbC5oOiBkaXR0by4KICAqIGZyZWVic2QvaTM4Ni9zeXNjYWxsZW50Lmg6IGRpdHRvLgoKMjAwMS0wMy0wNyAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKICAqIGZpbGUuYzogbWVyZ2UgbWlzc2luZyBwYXJ0IG9mIEhhcmFsZCBC9mhtZSdzIHNvbGFyaXMgcGF0Y2hlcywKICAgIHdhcyBvbmx5IGRlY2xhcmluZyBzeXNfe3N0YXQ2NCxsc3RhdDY0LGZzdGF0NjR9IG9uIGxpbnV4IQoKMjAwMS0wMy0wNyAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKICAqIHN2cjQvZHVtbXkuaDogZml4IG11bHRpcGxlIGRlZmluZSB3YXJuaW5nIG9uIG5vbiBMRlM2NCBzeXN0ZW1zLgogICogc3ZyNC9zeXNjYWxsZW50Lmg6IHByZWFkL3B3cml0ZSBhcmUgVEYgY2FsbHMuCgoyMDAxLTAzLTA3ICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogZGVmcy5oOiBhZGQgQUxJR042NCBtYWNybyB0byBjb3BlIHdpdGggRnJlZUJTRCdzIHN0cmFuZ2UgaW5zaXN0ZW5jZQogICAgb24gYWxpZ25tZW50IGZvciBvZmZfdCAoNjQgYml0KSBhcmd1bWVudHMuICBBbHNvIHNpbXBsaWZ5IGdldDY0IHNvCiAgICB3ZSBkb24ndCBuZWVkIHRvIGtub3cgZW5kaWFubmVzcyBvZiBsb25nIGxvbmcuCiAgKiBmaWxlLmM6IEZyZWVCU0Qgbm93IHVzZXMgNjQgYml0IHZlcnNpb25zIG9mIGxzZWVrLCB0cnVuY2F0ZSwKICAgIGZ0cnVuY2F0ZSwgYWxsb3dzIHJlZHVjdGlvbiBpbiBudW12YmVyIG9mIGhvcnJpZCAjaWYncwogICogaW8uYzogRnJlZUJTRCBub3cgdXNlcyA2NCBiaXQgdmVyc2lvbnMgb2YgcHJlYWQsIHB3cml0ZS4KICAqIG1lbS5jOiBGcmVlQlNEIG5vdyB1c2VzIDY0IGJpdCB2ZXJzaW9uIG9mIG1tYXAuCiAgKiBmcmVlYnNkL3N5c2NhbGxzLnByaW50OiB1c2UgNjQgYml0IHZlcnNpb25zIG9mIHZhcmlvdXMgc3lzY2FsbHMuCiAgKiBmcmVlYnNkL2kzODYvc3lzY2FsbC5oOiB1c2UgNjQgYml0IHZlcnNpb25zIG9mIHZhcmlvdXMgc3lzY2FsbHMuCiAgKiBmcmVlYnNkL2kzODYvc3lzY2FsbGVudC5oOiB1c2UgNjQgYml0IHZlcnNpb25zIG9mIHZhcmlvdXMgc3lzY2FsbHMuCgoyMDAxLTAzLTA2ICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogZmlsZS5jOiBJbXBsZW1lbnQgdHJ1bmNhdGU2NCBhbmQgZnRydW5jYXRlNjQKICAqIHN2cjQvZHVtbXkuaDogYWRkIGR1bW1pZXMgZm9yIHRydW5jYXRlNjQgYW5kIGZ0cnVuY2F0ZTY0IGZvciBub24KICAgIExGUzY0IHN5c3RlbXMuCiAgKiBzdnI0L3N5c2NhbGwuaDogYWRkIGRlY2xhcmF0aW9ucyBmb3IgdHJ1bmNhdGU2NCBhbmQgZnRydW5jYXRlNjQuCgoyMDAxLTAzLTA2ICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogZnJlZWJzZC9zeXNjYWxscy5wbDogZml4IGZvciBGcmVlQlNEIDQuMSAobmV3IG9wdGlvbmFsIGZpZWxkIGluCiAgICBzeXNjYWxsIG1hc3RlciBmaWxlKS4KCjIwMDEtMDMtMDYgIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBzeXNjYWxsLmM6IGZpeCBmb3IgRnJlZUJTRCA0LjEgKFNZU19zZW1jb25maWcgaGFzIGRpc2FwcGVhcmVkKS4gIEFsc28KICAgIHphcCBpbmNvcnJlY3Qgc3lzY2FsbCBzdWJhcmcgcmFuZ2UgY2hlY2suCgoyMDAxLTAzLTA2ICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogY29uZmlndXJlLmluLCBkZWZzLmgsIGRlc2MuYywgZmlsZS5jLCBpby5jLCBtZW0uYywgbmV0LmMsIHJlc291cmNlLmMsCiAgICBzaWduYWwuYywgc3lzY2FsbC5jLCBzdnI0L2R1bW15LmgsIHN2cjQvc3lzY2FsbC5oLCBzdnI0L3N5c2NhbGxlbnQuaDoKICAgIG1lcmdlIEhhcmFsZCBC9mhtZSdzIHNvbGFyaXMgcGF0Y2hlcyAoX0xGUzY0X0xBUkdFRklMRSBhbmQga2VybmVsIGFpbwogICAgbW9zdGx5KS4KCjIwMDEtMDMtMDYgIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBkdW1teS5oOiBhZGQgdW5pbXBsZW1lbnRlZCBVVyBzeWNhbGxzCiAgKiBzeXNjYWxsLmg6IHdlIGNhbiBkbyBzZXR0aW1lb2ZkYXkgZm9yIFVXLCB3aG9wZWUhCiAgKiBzeXNjYWxsZW50Lmg6IGZpeCB1bmltcGxlbWVudGVkIFVXIHN5c2NhbGxzCgoyMDAxLTAzLTA2ICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogYWNsb2NhbC5tNDogbG9vayBmb3IgcHJfc3lzY2FsbCBpbiBwcl9sd3AgaWYgd2UgSEFWRV9NUF9QUk9DRlMKICAqIGRlZnMuaDogYWRkIFBSX1NZU0NBTEwgdG8gYWxsb3cgdXNlIG9mIHByX2x3cC5wcl9zeXNjYWxsIGlmIGl0IGV4aXN0cy4KICAqIHN5c2NhbGwuYzogdXNlIFBSX1NZU0NBTEwgaW5zdGVhZCBvZiBwcl9zeXNjYWxsLCBmaXggdXAgVW5peFdhcmUgY29kZQogICAgc28gaXQgZG9lc24ndCB0cnkgdG8gdXNlIHByX3N5c2FyZy4KCjIwMDEtMDMtMDYgIEpvaG4gSHVnaGVzIDxqb2huQENhbHZhLkNPTT4KCiAgKiBhY2xvY2FsLm00OiBvbiBzeXN0ZW1zIG90aGVyIHRoYW4gbGludXggbG9vayBmb3Igc3RhdDY0IGluIHN5cy9zdGF0LmgKICAqIGZpbGUuYzogaGFuZGxlIHhzdGF0IHZlcnNpb24gX1NUQVQ2NF9WRVIsIGFrYSBzdGF0NjQuCgoyMDAxLTAzLTA2ICBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgogICogbmV0LmM6IG1ha2Ugc3VyZSBTT0xfIG9wdGlvbnMgYXJlIGRlZmluZWQgYmVmb3JlIHVzaW5nLgogICogc2lnbmFsLmM6IGRlY2xhcmUgc2lnc2V0IHZhcmlhYmxlLCBvbmx5IHVzZWQgb24gbGludXgsIGluc2lkZSAjaWZkZWYuCgoyMDAxLTAyLTIxICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIG5ldC5jOiBmaXggZm9ybWF0IGZvciBwcmludGluZyBVbml4IGRvbWFpbiBzb2NrZXRzCgoyMDAxLTAyLTE5ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGxpbnV4L21pcHMvc3lzY2FsbGVudC5oOiB1c2UgbmV3IHN5c19zeXNtaXBzCiAgKiBzeXN0ZW0uYzogYWRkIHN5c19zeXNtaXBzIGRlY29kaW5nCgoyMDAxLTAyLTE2ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIENSRURJVFM6IGFkZCBBcmthZGl1c3ogTWlza2lld2ljeiA8bWlzaWVrQHBsZC5vcmcucGw+IHdobwogICAgc3VibWl0dGVkIHRoZSBJUDYgc2NvcGUgSUQgdXBkYXRlcwogICogYWNjb25maWcuaDogYWRkIEhBVkVfU0lONl9TQ09QRV9JRCBhbmQgSEFWRV9TSU42X1NDT1BFX0lEX0xJTlVYCiAgKiBhY2xvY2FsLm00OiBhZGQgQUNfU0lONl9TQ09QRV9JRCB0byBjaGVjayBpZiBzaW42X3Njb3BlX2lkIGlzCiAgICBhdmFpbGFibGUKICAqIGNvbmZpZ3VyZS5pbjogY2hlY2sgZm9yIGlmX2luZGV4dG9uYW1lIGZ1bmN0aW9uIGFuZCBzaW42X3Njb3BlX2lkCiAgKiBuZXQuYzogdGVhY2ggcHJpbnRzb2NrIGFib3V0IElQNiBzY29wZSBpZHMKCjIwMDEtMDItMTYgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogY29uZmlndXJlLmluOiB0ZXN0IGZvciBuZXRpbmV0L3RjcC5oIGFuZCBuZXRpbmV0L3VkcC5oIGV4aXN0YW5jZQogICogbmV0LmM6IGluY2x1ZGUgbmV0aW5ldC90Y3AuaCBhbmQgbmV0aW5ldC91ZHAuaCBpZiB0aGV5IGV4aXN0CiAgKiBNYWtlZmlsZS5pbjogdXNlIEBtYW5kaXJAIGFuZCBAYmluZGlyQAoKMjAwMC0xMS0yNiAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiAgbmV0LmM6IGZpeCBmb3JtYXRpbmcgZXJyb3IgaW4gc3lzX3NldHNvY2tvcHQKICAqICBuZXQuYzogYWRkIGxpc3Qgb2Ygc29ja2V0bGF5ZXJzIGFuZCB1c2UgdGhhdCBmb3IgW2dzXWV0c29ja29wdAoKMjAwMC0xMC0xMiAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiB0aW1lLmM6IHVzZSBzeXMvdGltZXguaCBzbyB0aGluZ3MgY29tcGlsZSB3aXRoIDIuMiBrZXJuZWxzCiAgKiBzdHJlYW0uYzogdGVzdCBpZiBNU0dfKiBjb25zdGFudHMgYXJlICNkZWZpbmVkCgoyMDAwLTA5LTAzICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIHByb2Nlc3MuYzogcGVyZm9ybSBicHQgdHJpY2sgZm9yIGNsb25lIGFzIHdlbGwgc28gd2UgY2FuIGdldCB0aGUKICAgIHBpZCBvZiB0aGUgY2hpbGQgYmVmb3JlIGl0IHN0YXJ0cyBkb2luZyBzb21ldGhpbmcKICAqIGZpbGUuYzogcmVuYW1lIGRpcmVudDY0IHN0cnVjdCB0byBrZXJuZWxfZGlyZW50NjQgc28gdGhpbmdzIGNvbXBpbGUKICAgIGFnYWluIHdpdGggbmV3ZXIgbGliY3MKICAqIHRlc3QvY2xvbmUuYzogaW1wcm92ZSBvdXIgdGVzdGNhc2UgYSBiaXQKICAqIE1lcmdlIGFub3RoZXIgcGF0Y2ggZnJvbSBH5GVsIFJvdWFsbGFuZCB3aXRoIEZyZWVCU0QgdXBkYXRlcwoKMjAwMC0wOS0wMSAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBsb3RzIG9mIGZpbGVzOiBtZXJnZSBwYXRjaCBmcm9tIEdh62wgUm91YWxsYW5kIHRvIGFkZAogICAgc3VwcG9ydCBmb3IgRnJlZUJTRC4KCjIwMDAtMDgtMDkgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogZmlsZS5jOiB1cGRhdGUgdG8gcmVmbGVjdCB0aGF0IHN0X2lubyBzdWRkZW5seSBiZWNhbWUgYSBsb25nIGxvbmcKICAgIGluIHRoZSBpbiBMaW51eCAyLjQuMC10ZXN0NgoKMjAwMC0wOC0wOSAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiB0ZXN0L2Nsb25lLmM6IG1pbm9yIGZpeHVwCiAgKiBBbm90aGVyIGJ1bmNoIG9mIHBhdGNoZXMgZnJvbSBKb2huIEh1Z2hlcyBtZXJnZWQ6CiAgKiBzaWduYWwuYzoKICAgICsgU1ZSNCBwcmludGNvbnRleHQoKTogc2lnc2V0X3QgIT0gc2lnc2V0X3QqCiAgICArIGdldGNvbnRleHQgcmV0dXJucyBhIHZhbHVlLCBzbyBwcmludCBvbiBleGl0IG9mIHN5c2NhbGwKICAgICsgYWRkIFVDX0ZQIHRvIHVjb250ZXh0X2ZsYWdzIGZvciBPUyB3cml0ZXJzIHRoYXQgY2FuJ3Qgc3BlbGwKICAgICsgc3lzX3NpZ25hbCgpOiBzcGVjaWFsIGNhc2UgU0lHX3tFUlIsREZMLElHTn0KICAgICsgZGVjb2RlX3N1YmNhbGwoKTogb25seSBkbyBzdWJjYWxsIHJhbmdlIGNoZWNraW5nIHdoZW4gbmVlZGVkCiAgKiBidW5jaCBvZiBVbml4V2FyZSB1cGRhdGVzCiAgKiBhY2xvY2FsLm00LCBhY2NvbmZpZy5oLCBjb25maWd1cmUuaW46IGFkZCB0ZXN0IGZvciBsb25nIGxvbmcgdHlwZQoKMjAwMC0wNy0wNCAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBuZXQuYzogYWRkIFNPTF9QQUNLRVQgYW5kIFNPTF9SQVcgc29ja2V0IG9wdGlvbnMsIHVwZGF0ZQogICAgU09MX0lQIGFuZCBTT0xfVENQCgoyMDAwLTA2LTIzICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIHN0cmFjZS5jOiBjbG9zZSBvdXRmIGJlZm9yZSB3ZSBleGVjIGEgY2hpbGQgcHJvY2VzcwoKMjAwMC0wNi0wOSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgogICogY29uZmlndXJlLmluOiBEb24ndCBsaW5rIGFnYWluc3QgbGlibnNsIG9uIExpbnV4LCBpdCdzIHVubmVjZXNzYXJ5LgogICogZGVmcy5oIChzdHJ1Y3QgdGNiKTogTWFrZSBhdXhzdHIgbWVtYmVyIGNvbnN0LgogICogZmlsZS5jIChmc21hZ2ljKTogQW5kIG1hbnkgbW9yZSBtYWdpYyBudW1iZXJzLgogICogdXRpbC5jOiBEb24ndCBpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4gZm9yIGdsaWJjIDIuMSBhbmQgdXAuCgoyMDAwLTA0LTI2ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIGRlZnMuaDogYmFsYW5jZSAjaWYvI2VuZGlmIGFnYWluCiAgKiBzeXN0ZW0uYzogZml4IHJldHVybiBzdGF0ZW1lbnRzIGluIHN5c19jYXBnZXQoKQogICogTWVyZ2UgdXBkYXRlcyBmcm9tIFRvcGkgTWlldHRpbmVuIDxUb3BpLk1pZXR0aW5lbkBuaWMuZmk+OgogICAgKyBmaWxlLmM6IGFkZCBGX1tTR11FVFNJRyB0byBmY250bCBmbGFncwogICAgKyBzdHJhY2UuYzogZG9uJ3Qgc2V0cmVbZ3VdaWQgaWYgbm90IG5lZWRlZAogICAgKyBzeXN0ZW0uYzogaGFuZGxlIHN5c19yZWJvb3QgZm9yIExpbnV4CiAgICArIHRlcm0uYzogYWRkIGJhdWRyYXRlIGNvbnN0YW50cyB1cCB0byBCNDAwMDAwMAogICAgKyBsaW51eC8qKi9zeXNjYWxsZW50Lmg6IG5vdGUgdGhhdCBtdW5sb2NrYWxsIGhhcyBubyBhcmd1bWVudHMKCjIwMDAtMDQtMjUgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKICAqIENSRURJVFM6IGZpeCBlbWFpbCBhZGRyZXNzCiAgKiBwcm9jZXNzLmM6IGhhbmRsZSBQUl9bR1NdRVRfVU5BTElHTiBhbmQgUFJfW0dTXUVUX0tFRVBDQVBTCiAgKiBzaWduYWwuYzogaG9ub3VyIG9mZnNldCBvZiBzaWdjb25maWcgaW4gc2lnZnJhbWUgc3RydWN0dXJlIGZvcgogICAgTGludXgvaWE2NAogICogbGludXgvaWE2NC9zeXNjYWxsZW50Lmg6IEFkZCBwZXJmbW9uY3RsLCBwaXZvdHJvb3QsIG1pbmNvcmUsIGFuZAogICAgbWFkdmlzZSBzeXNjYWxscy4KICAqIHN5c2NhbGwuYyAoc3lzY2FsbF9lbnRlcik6IFdpdGggS2V2aW4ncyBsYXRlc3QgcHRyYWNlIHBhdGNoZXMsCiAgICBBUl9CU1AgcG9pbnRzIHRvIHRoZSBfZW5kXyBvZiB0aGUgYWN0aXZlIHJlZ2lzdGVyIGZyYW1lLCBzbyB3ZSBuZWVkCiAgICB0byBhZGp1c3QgYnNwIGJ5IG1vdmluZyBpdCBiYWNrIGJ5IHRoZSBzaXplIG9mIHRoZSBhY3RpdmUgZnJhbWUKICAgIGJlZm9yZSB1c2luZyBpdC4KCjIwMDAtMDQtMjQgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogcHJvY2Vzcy5jOiBhZGQgc3BhcmMgc3VwcG9ydCB0byBjaGFuZ2Vfc3lzY2FsbAoKMjAwMC0wNC0yMiAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBsaW51eC9taXBzL3N5c2NhbGxlbnQuaDogZml4IHNvbWUgdHlwb3MKCjIwMDAtMDQtMTQgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogbGludXgvbWlwcy9zeXNjYWxsZW50Lmg6IGFkZGVkIG5hbWVzIGZvciBTVlI0LCBTWVNWLCBCU0Q0LjMgYW5kIFBPU0lYCiAgICBzeXNjYWxscwoKMjAwMC0wNC0xMyAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBkZWZzLmg6IExpbnV4L01JUFMgdXNlcyBzeXNjYWxscyB1cCB0byA+NGssIHNvIHNldCBNQVhfUVVBTFMgdG8KICAgIDQ5OTkKCjIwMDAtMDQtMDkgIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogUkVBRE1FLWxpbnV4OiB1cGRhdGVkIHRvIG5vdGUgdGhhdCBzdHJhY2UgbWlnaHQgbm90IGNvbXBpbGUKICAgIHdpdGggZGV2ZWxvcG1lbnQga2VybmVscwogICogYmptLmM6IHN5c19xdWVyeV9tb2R1bGU6IGNoZWNrIGlmIG1hbGxvYyBzdWNjZWVkcwogICogc3lzdGVtLmM6IHN5c19jYXBbZ3NdZXQoKTogY2hlY2sgaWYgbWFsbG9jIHN1Y2NlZWRzLCBvbmx5IG1hbGxvYyBvbmNlCiAgKiBsaW51eC9zeXNjYWxsZW50Lmg6IHVwZGF0ZWQgZm9yIDIuMy45OXByZTMKICAqIGxpbnV4L2FscGhhL3N5c2NhbGxlbnQuaDogdXBkYXRlZCBmb3IgMi4zLjk5cHJlMywgYWRkIGFsbCBvc2Ygc3lzY2FsbHMKICAgIGV2ZW4gdGhvdWdoIExpbnV4IGRvZXNuJ3QgaW1wbGVtZW50IHRoZW0KICAqIHN5c2NhbGwuYzogYWRkIGdsb2JhbCB2YXJpYWJsZXMgZm9yIE1JUFMgcmVnaXN0ZXJzIGFzIHdlbGwKICAqIHN5c2NhbGwuYzogbW92ZSBnbG9iYWwgdmFyaWFibGVzIHRvIGJlZm9yZSBnZXRfc2NubyBzaW5jZSB0aGF0IHVzZXMgdGhlbQogICogdXRpbC5jOiBvb3BzLCBtaXNzcGVsbGVkIGRlZmluZWQKICAqIHByb2Nlc3MuYzogZml4IHB0cmFjZSBjYWxscyBpbiBjaGFuZ2Vfc3lzY2FsbAogICogbWVtLmM6IGRlY29kZSBzeXNfbWFkdmlzZQogICogTWVyZ2UgcGF0Y2ggZnJvbSBUb3BpIE1pZXR0aW5lbiA8VG9waS5NaWV0dGluZW5AbmljLmZpPgogICAgKyBhZGQgc3VwcG9ydCBmb3IgcXVvdGFjdGwsIGZkYXRhc3luYywgbWxvY2ssIG1sb2NrYWxsLCBtdW5sb2NrYWxsICYgYWNjdAogICAgKyBzbWFsbCBmaXggZm9yIFJMSU1JVF8qIGFuZCBSVVNBR0VfQk9USAogICAgKyBlbmhhY2Ugc3VwcG9ydCBmb3IgY2FwZ2V0IGFuZCBjYXBzZXQKCjIwMDAtMDItMTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiB0ZXN0L3Zmb3JrLmM6IG5ldyBmaWxlIHRvIHRlc3QgdmZvcmsgdHJhY2VzCiAgKiB0ZXN0Ly5jdnNpZ25vcmU6IG5ldyBmaWxlCiAgKiBkZWZzLmg6IFVwIG1heGltdW0gbnVtYmVyIG9mIHRyYWNlZCBwcm9jZXNzZWQgdG8gNjQKICAqIHN0cmFjZS5jOiBEaXNhYmxlIHNvbWUgZGVidWdnaW5nIGNvZGUgZnJvbSBkYXZpZG0KICAqIGltcGxlbWVudCBzZXRhcmcgZm9yIG1vcmUgYXJjaGl0ZWN0dXJlcwogICogaW1wbGVtZW50IGNoYW5nZV9zeXNjYWxsCgoxOTk5LTEyLTI3ICBNb3J0ZW4gV2VsaW5kZXIgIDx0ZXJyYUBkaWt1LmRrPgoKCSogc3lzY2FsbC5jIChsb29rdXBfc2lnbmFsLCBsb29rdXBfZGVzYyk6IGlzZGlnaXQgcmVxdWlyZXMgYW4KIAlfdW5zaWduZWRfIGNoYXIgcGFyYW1ldGVyLgoKMjAwMC0wMi0xNCBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIFMzOTAgdXBkYXRlcwoKMjAwMC0wMi0wMyBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIE1lcmdlIExpbnV4L2lhNjQgcGF0Y2hlcwoKMjAwMC0wMS0wMiBQYXZlbCBNYWNoZWsJICAgICA8cGF2ZWxAdWN3LmN6PgoKICAqIHByb2JlIGlmIHN5cy9wb2xsLmggZXhpc3RzIGluIGNvbmZpZ3VyZSArIG1pbm9yIGNsZWFudXBzCgogICogc3lzY2FsbC5jOiBzcGxpdCB0cmFjZV9zeXNjYWxsIGludG8gZmV3IHBpZWNlcyB0byBtYWtlIGNvZGUgcmVhZGFibGUKCjIwMDAtMDEtMjEgV2ljaGVydCBBa2tlcm1hbiAgPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogUmVsZWFzZSB2ZXJzaW9uIDQuMiB0byBnZXQgdGhlIGN1cnJlbnQgdXBkYXRlcyBvdXQgYW5kIHNvCiAgICB3ZSBjYW4gY29uY2VudHJhdGUgaW4gZmluaXNoaW5nIHRoZSBjbG9uZSBzdXBwb3J0LgoKMjAwMC0wMS0xMSBXaWNoZXJ0IEFra2VybWFuICA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBBZGQgMTkwMCB0byB0bV95ZWFyIGluIHNwcmludHRpbWUKCjE5OTktMTItMjQgIFdpY2hlcnQgQWtrZXJtYW4gIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICogZmlsZS5jOiBwcm90ZWN0IHByaW50c3RhdDY0IHdpdGggU1RBVDY0IGluc3RlYWQgb2YgbGludXggc28gd2UgY2FuCiAgIGNvbXBpbGUgb24gTGludXggYXJjaGl0ZWN0dXJlcyB0aGF0IGRvbid0IGhhdmUgaXQKICogdXRpbC5jOiBmaXggTE9PUCBmb3IgQVJNCgpGcmkgRGVjIDI0IDE4OjA1OjAwIEVTVCAxOTk5CgoxOTk5LTEyLTIzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCiAqIGZpbGUuYzogVXNlIHVnbHkgbGliY19zdGF0IHRyaWNrIGFsc28gZm9yIHN0YXQ2NC4KICAgSW1wbGVtZW50IHN5c19zdGF0NjQsIHN5c19mc3RhdDY0LCBzeXNfbHN0YXQ2NCwgYW5kIHByaW50c3RhdDY0LgogKiBwcm9jZXNzLmMgKGludGVybmFsX2Nsb25lKTogRml4IGEgZmV3IHR5cG9zIGFuZCBhZGQgZGVmaW5pdGlvbnMgdG8gbWFrZQogICBpdCBhdCBsZWFzdCBjb21waWxlLgogKiBsaW51eC9zeXNjYWxsLmg6IERlY2xhcmUgc3lzX3N0YXQ2NCwgc3lzX2xzdGF0NjQsIGFuZCBzeXNfZnN0YXQ2NC4KICogbGludXgvc3lzY2FsbGVudC5oOiBEZWZpbmUgdGFibGUgZW50cmllcyBmb3Igc3lzX3N0YXQ2NCwgc3lzX2xzdGF0NjQsCiAgIGFuZCBzeXNfZnN0YXQ2NC4KICogYWNsb2NhbC5tNDogRGVmaW5lIEFDX1NUQVQ2NC4KICogYWNjb25maWcuaDogRGVmaW5lIEhBVkVfU1RBVDY0LgogKiBjb25maWd1cmUuaW46IEFkZCBBQ19TVEFUNjQuCgpUaHUgRGVjIDIzIDE1OjAxOjM3IENFVCAxOTk5IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogTWVyZ2UgcGF0Y2ggZnJvbSBmdHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9saW51eDM5MC8gdG8gYWRkCiAgICBzdXBwb3J0IGZvciBMaW51eCBvbiB0aGUgSUJNIFMvMzkwIGFyY2hpdGVjdHVyZQogICogcHJvY2Vzcy5jOiBhZGQgaW50ZXJuYWxfY2xvbmUoKSwgY3VycmVudGx5IG9ubHkgc2hvd3MgdGhlIG9wdGlvbnMKICAqIHN5c2NhbGwuYzogdXNlIGludGVybmFsX2Nsb25lIHRvIGhhbmRsZSBTWVNfY2xvbmUKCk1vbiBEZWMgMjAgMDA6Mjc6NTAgQ0VUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBSZXdyaXRlIG1tYXAtaGFuZGxpbmcgdG8gc3VwcG9ydCBtbWFwMiBvbiBMaW51eAoKVHVlIERlYyAxNCAxMTozNToxNiBDRVQgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIE5vdGUgdGhhdCBMaW51eCBjYW4gaGFuZGxlIHN5c19zZW1vcCgpIGFzIHdlbGwKClR1ZSBOb3YgMzAgMTE6MDU6MjYgQ0VUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBJbmNsdWRlIGxpbnV4L2luNi5oIGZvciBnbGliYzIuMCBhbmQgb2xkZXIKCk1vbiBOb3YgMjkgMTY6MzM6MDQgQ0VUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBNZXJnZSBwYXRjaGVzIGZyb20gSm9obiBIdWdoZXMgdG8gbWFrZSBjb25maWd1cmUgc3VwcG9ydCBVbml4V2FyZQoKU2F0IE5vdiAyNyAyMTozODoxNyBDRVQgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIEVuaGFuY2Ugc3lzX3F1ZXJ5X21vZHVsZQoKRnJpIE5vdiAyNiAxMDo1MTo1NSBDRVQgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIFBhdGNoZXMgZnJvbSBKb2huIEh1Z2hlczoKICAgICsgY29zbWVjdGljIGZpeCBpbiBzeXNfZ2V0cG1zZwogICAgKyBhbGxvdyBuZXQuYyB0byBjb21waWxlIG9uIHN5c3RlbXMgd2l0aG91dCBBRl9JTkVUNgogICAgKyBPbmx5IHVzZSBsb25nX3RvX3NpZ3NldCBvbiBMaW51eCBzeXN0ZW1zCiAgICArIFVuaXhXYXJlIHRyZWF0cyBzaWdtYXNrX3QgYW5kIHNpZ21hc2tfdCogYXMgdGhlIHNhbWUgdGhpbmcKICAgICsgQWRkIHBvbGxoYWNrCiAgICArIFBhcnNlIG1vdW50IGFyZ3VtZW50cyBmb3IgVW5peFdhcmUKICAgICsgQUNMIGZpeGVzIGZvciBVbml4V2FyZQoKRnJpIE5vdiAyNiAwMToyODowOSBDRVQgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIFJlbGVhc2UgNC4xIHRvIGdldCBhbGwgdGhlIGNoYW5nZXMgbWFkZSBvdXQgdGhlcmUKClRodSBOb3YgMTggMTg6MDQ6MDQgQ0VUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBNZXJnZSBzdHJhY2Vmb3JrIGZyb20gQWxleGV5IEt1em5ldHNvdiA8a3V6bmV0QG1zMi5pbnIuYWMucnU+CiAgICArIFNvY2tldCBjYWxscyBwYXJzZWQgYmV0dGVyCgkrIGJ1bmNoIG9mIGFscGhhIE9TRiBzeXNjYWxscyBhZGRlZAoJKyBGaXggYWxwaGEgMzIvNjQgYml0IGlzc3VlcwoKTW9uIE5vdiAgMSAyMDo1MjowOCBDRVQgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIE1vdmUgTGludXgga2VybmVsbW9kdWxlLWZ1bmN0aW9ucyBmcm9tIHN5c3RlbS5jIHRvIGJqbS5jIGFuZAogICAgcmVtb3ZlIGR1cGxpY2F0ZSBmb3Igc3lzX2NyZWF0ZV9tb2R1bGUKICAqIExpbnV4IE1JUFMgdXBkYXRlczoKICAgICsgUGxheSB3aXRoICNpZmRlZidzIGluIG5ldC5jIHRvIGdldCBJUHY2IHJpZ2h0CiAgICArIFVzZSBwcmludGFyZ3MgZm9yIHZtODYtc3lzY2FsbAoKU3VuIE9jdCAzMSAyMjowMzowMCBDRVQgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIE1lcmdlIExpbnV4IG1pcHMgcGF0Y2ggZnJvbSBGbG9yaWFuIExvaG9mZiA8ZmxvQHJmYzgyMi5vcmc+CgpNb24gT2N0IDExIDAwOjM2OjI1IENFU1QgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIE1lcmdlIHBhdGNoIGZyb20gS2VpdGggT3dlbnMgPGthb3NAb2NzLmNvbS5hdT4gdG8gc3lzX3F1ZXJ5X21vZHVsZQogICAgYW5kIHN5c19kZWxldGVfbW9kdWxlIGNvcnJlY3RseQoKV2VkIE9jdCAgNiAwMjowMDozMyBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBVcGRhdGUgY3ZzYnVpbGQgdG8gZ2l2ZSBhIGJldHRlciBlcnJvciBpZiBhdXRvY29uZiBpc24ndCBpbnN0YWxsZWQKICAqIEFkZCB0ZXN0IGZvciBsaW51eC9wdHJhY2UuaCB0byBjb25maWd1cmUKICAqIFNpbmNlIHdlIGRlZmluZSBHTlVfU09VUkNFIGluIHRoZSBNYWtlZmlsZSB3ZSBkb24ndCBuZWVkIHRvIGRlZmluZQogICAgVVNFX0dOVSBpbiBmaWxlLmMgYW55bW9yZQoKRnJpIFNlcCAxMCAwNDozNToxNiBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiAjZGVmaW5lIFVTRV9HTlUgYmVmb3JlIGluY2x1ZGluZyBmaWxlLmMgc28gd2UgZ2V0IHNvbWUgZXh0cmEgT18qIGZsYWdzCgpUdWUgQXVnIDMxIDE2OjI3OjIxIENFU1QgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIEFkZCBtaXNzaW5nIH0gaW4gSVB2NiBvdXRwdXQKClR1ZSBBdWcgMzEgMDE6MjM6MDggQ0VTVCAxOTk5ICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIFVwZGF0ZSBjb3B5cmlnaHQgZm9yIHN0cmFjZS1ncmFwaCB0byBCU0QgdG8gYmUgY29uc2lzdGVudCB3aXRoCiAgICB0aGUgcmVzdCBvZiBzdHJhY2UKCk1vbiBBdWcgMzAgMDA6NTM6NTcgQ0VTVCAxOTk5IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogTWVyZ2UgcGF0Y2ggZnJvbSBEYW5pZWwgSmFjb2Jvd2l0ejogS0VSTl9KQVZBXyogYW5kIEtFUk5fU0VDVVJFTFZMIGFyZW4ndAogICAgZGVmaW5lZCBmb3IgYWxsIGtlcm5lbHZlcnNpb25zCiAgKiBBZGQgc3RyYWNlLWdyYXBoLCB3cml0dGVuIGJ5IFJpY2hhcmQgQnJhYWttYW4gPGRhcmtAeHM0YWxsLm5sPgoKVGh1IEF1ZyAxOSAxMzoxMDoxNSBDRVNUIDE5OTkgSmFrdWIgSmVsaW5layA8ampAdWx0cmEubGludXguY3o+CgogICogbGludXgvc3BhcmMvc3lzY2FsbC5oOiBEZWNsYXJlIGNyZWF0ZV9tb2R1bGUvaW5pdF9tb2R1bGUuCiAgKiBjb25maWd1cmUuaW46IEFsbG93IGNvbXBpbGF0aW9uIGluIGEgZGlmZmVyZW50IGRpcmVjdG9yeQogICAgdGhhbiB0aGUgc291cmNlIG9uZS4KICAqIHNpZ25hbC5jOiBVc2UgYXNtL3JlZy5oIGFuZCBzdHJ1Y3QgcmVncyBpbnN0ZWFkIG9mIHB0X3JlZ3MKICAgIHNvIHRoYXQgd2UgZG9uJ3QgZGVwZW5kIG9uIGFzbS9wdHJhY2UuaCB3aGljaCBjbGFzaGVzIHdpdGgKICAgIGdsaWJjIHN5cy9wdHJhY2UuaC4KICAqIHV0aWwuYzogTGlrZXdpc2UuCiAgKiBzeXNjYWxsLmM6IExpa2V3aXNlLgoKV2VkIEF1ZyAgNCAxODowMTo1MCBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBTeXNjYWxsIDk0IG9uIExpbnV4IGFscGhhIGlzIHN5c19wb2xsCgpTdW4gSnVsIDI1IDE0OjM4OjMzIENFU1QgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIE1lcmdlIGluIFVuaXhXYXJlIHBhdGNoZXMgZnJvbSBKb2huIEh1Z2hlcyA8am9obkBDYWx2YS5DT00+CgpUaHUgSnVsIDE1IDIzOjAwOjMyIENFU1QgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIE1lcmdlIHBhdGNoIGZyb20gTWFjaWVqIFcuIFJvenlja2kgPG1hY3JvQGRzMi5wZy5nZGEucGw+OgogICAgKyBDb3JyZWN0bHkgaW1wbGVtZW50IGZpeCBzeXNfY3JlYXRlbW9kdWxlIChMaW51eCkKICAgICsgQWRkIGxpbWl0ZWQgaGFuZGxpZyBvZiBzeXNfaW5pdG1vZHVsZSAoTGludXgpCgpUdWUgSnVsIDEzIDE3OjA3OjUwIENFU1QgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIEFkZCBjb25maWd1cmUtdGVzdCBmb3Igc3lzL3JlZy5oIGFuZCB1c2UgdGhhdAogICogVXNlIHN5cy9yZWcuaCBpbnN0ZWFkIG9mIGFzbS9wdHJhY2UuaAoKU2F0IEp1bCAxMCAwMTo0NjoxMCBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBSZW1vdmUgaGFjayBpbiBzaWduYWwuYyBmb3IgYXJtIGFyY2hpdGVjdHVyZQogICogQWRkIGhhY2sgc28gd2UgY29tcGlsZSBjb3JyZWN0bHkgb24gcG93ZXJwYwoKRnJpIEp1bCAgOSAwMjoyODoxNiBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBBZGQgYSBjb3JyZWN0ZWQgcGF0Y2ggZnJvbSBEYW5pZWwgSmFjb2Jvd2l0egoKVGh1IEp1bCAgOCAxNjowMDowNCBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBNZXJnZSBwYXRjaCBmcm9tIERhbmllbCBKYWNvYm93aXR6IHRvIGFsbG93IHVzIHRvIHVzZSB0aGUga2VybmVsIHR5cGVzCiAgICBmb3IgdGhlIHN0YXQgc3RydWN0dXJlCgpUaHUgSnVuIDI0IDE1OjU0OjE4IENFU1QgMTk5OSBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgoKICAqIEZpeCB0ZXN0IGZvciBzeXMvcmVnIGluY2x1ZGUKClR1ZSBKdW4gMjIgMTc6MjY6MzMgQ0VTVCAxOTk5IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogRml4ZWQgc29tZSBMaW51eC9wb3dlcnBjIHNpbGx5bmVzcywgdGhhbmtzIHRvIERhbmllbCBKYWNvYm93aXR6CiAgKiBGaXhlZCBzb21lIFN1bk9TIGNvbXBpbGUgcHJvYmxlbXMgZWFybGllciB0aGF0IEkgZm9yZ290IHRvIGluY2x1ZGUKICAgIGhlcmUKCk1vbiBKdW4gMTQgMTI6NDQ6MjUgQ0VTVCAxOTk5CgogICogQXZvaWQgbGVha2ludCBmZCBpbnRvIGNoaWxkIHdoZW4gZm9ya2luZywgcGF0Y2ggZnJvbQogICAgSm9obiBIdWdoZXMgPGpvaG5AQ2FsdmEuQ09NPgoKRnJpIEp1biAxMSAxNDo1NDo0NyBDRVNUIDE5OTkKCiAgKiBBcHBsaWVkIElSSVg2NCBwYXRjaCBmcm9tIFRob21hcyBFLiBEaWNrZXkgPGRpY2tleUBjbGFyay5uZXQ+CiAgKiBBcHBsaWVkIFNvbGFyaXMgYW5kIG1hbnBhZ2UgdXBkYXRlcyBmcm9tIEd1eSBIYXJyaXMgPGd1eUBuZXRhcHAuY29tPgoKV2VkIEp1biAgOSAxNDo0ODo0OSBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBCcm91Z2h0IHN5c2NhbGwgbGlzdCBmb3IgYWxwaGEgdXAgdG8gZGF0ZQoKV2VkIEp1biAgMiAxODozMDoxMiBDRVNUIDE5OTkgSmFrdWIgSmVsaW5layA8ampAdWx0cmEubGludXguY3o+CgogICogc3lzdGVtLmM6IHN5c191bW91bnQyIHN5c2NhbGwgc3VwcG9ydC4KICAqIGxpbnV4L3NwYXJjL2Vycm5vZW50Lmg6IFVwZGF0ZSBzcGFyYy1saW51eCBlcnJub3MuCiAgKiBsaW51eC9zcGFyYy9zeXNjYWxsLmg6IFVwZGF0ZSB1c2VkIHNwYXJjLWxpbnV4IHN5c2NhbGxzLgogICogbGludXgvc3BhcmMvc3lzY2FsbGVudC5oOiBNYXRjaCAyLjIuOSBzeXN0ZW0gY2FsbHMuCiAgKiBmaWxlLmM6IHNwYXJjLWxpbnV4IGFzbS9zdGF0LmggdXNlcyBkZXZfdCBldGMuIHR5cGVzLAogICAgc28gaXQgbmVlZHMgc3RyYWNlJ3Mgb3duIGNvcHkgb2YgdGhlIHN0YXQgc3RydWN0dXJlLgogICogdXRpbC5jOiBNYWtlIGl0IGNvbXBpbGUgb24gc3BhcmMtbGludXguCiAgKiBzdHJhY2UuYzogRml4IHN0cmFjZSAtZiBhbmQgLWZmIG9wZXJhdGlvbiBvbiBzcGFyYy1saW51eC4KICAqIHNpZ25hbC5jOiBydF9zaWdhY3Rpb24gaGFzIGRpZmZlcmVudCBhcmd1bWVudHMgb24gc3BhcmMqLWxpbnV4CiAgICBhbmQgYWxwaGEtbGludXguCiAgKiBzeXNjYWxsLmM6IFJlY29nbml6ZSBzcGFyYzY0LWxpbnV4IGJpbmFyaWVzLgoKRnJpIE1heSAyOCAyMTowOTowMCBQU1QgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCiAgKiBjb25maWd1cmUuaW46IEZpeCB0eXBvIChDRkxBRyAtPiBDRkxBR1MpLgoKICAqIHN5c2NhbGwuYzogRG9uJ3QgaW5jbHVkZSBsaW51eC9wdHJhY2UuaCBleHBsaWNpdGx5IGZvciBnbGliYy4KClRodSBNYXkgMjcgMTM6NTk6MjcgQ0VTVCAxOTk5IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogQWRkIHNvbWUgc3lzY3RsIHN1cHBvcnQsIHBhdGNoIGZyb20gVWxyaWNoIERyZXBwZXIKCldlZCBNYXkgMjYgMDE6MDQ6MzQgQ0VTVCAxOTk5IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogVXNlIGtlcm5lbCBkaXJlbnQgc3RydWN0dXJlIGZvciBMaW51eAoKU3VuIE1heSAgOSAwMjoxODozMCBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBNZXJnZSBpbiBwYXRjaGVzIGZyb20gQW5kcmVhcyBTY2h3YWIgPHNjaHdhYkBpc3Nhbi5jcy51bmktZG9ydG11bmQuZGU+CiAgICArIHNvbWUgbGF5b3V0IGFuZCBvdGhlciBtaW5vciBmaXhlcwogICAgKyBhZGQgc29tZSBtNjhrLXNwZWNpZmljIHRoaW5ncyB0byBsaW51eC9zeXNjYWxsZW50LmguIE5vdGUgdGhhdCBtNjhrCiAgICAgIGlzIHNpbWlsYXIgZW5vdWdoIHRvIGkzODYgdG8gbm90IG5lZWQgaXQncyBvd24gc3ViZGlyZWN0b3J5CiAgICArIGFkZCBzdXBwb3J0IGZvciBzZW5kZmlsZSBhbmQgbXJlbWFwIHN5c2NhbGxzIGZvciBMaW51eAogICogTWVyZ2UgaW4gcGF0Y2hlcyBmcm9tIFNhc2NoYSBTY2h1bWFubiA8c2FzY2hhQHNjaHVtYW5uLjJucy5kZT4KICAgICsgaW9jdGxzLmggdnMgc3lzL2lvY3RsLmggb24gQWxwaGEgcGxhdGZvcm0KICAgICsgcG9pbnRlciB3YXMgY2FzdGVkIHRvIGFuIGludCBpbiBzdHJlYW0uYwogICAgKyBzdHJzaWduYWwoKSBuZWVkcyAtRF9HTlVfU09VUkNFIGluIENGTEFHUwogICAgKyBzZXZlcmFsIG90aGVyIGNhc3RzIGNoYW5nZWQKICAgICsgY29ycmVjdCBBUk0vUE9XRVJQQyBhcmNoaXRlY3R1cmUgZGVmaW5lcyBpbiBhY2NvbmZpZy5oCiAgKiBNZXJnZSBpbiBwYXRjaGVzIGZyb20gTW9ydGVuIFdlbGluZGVyIDx0ZXJyYUBkaWt1LmRrPgogICAgKyBhZGQgc29tZSBhdXRvY29uZi10ZXN0cyBmb3IgaW5jbHVkZWZpbGVzCiAgICArIGhhbmRsZSBzb2xhcmlzIHZlcnNpb24gb2Ygc2lnY29udGV4dCBzdHJ1Y3QgKGFjdHVhbGx5IEkgaGFja2VkIHRoaXMKICAgICAgdXAgYWdhaW4sIGJ1dCB0aGUgaWRlYSBpcyBoaXMgOikKClN1biBBcHIgMTggMjI6MzI6NDIgQ0VTVCAxOTk5IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogVXBkYXRlIHN5c2NhbGxzIGZvciBsaW51eCBhbHBoYSwgcGF0Y2ggZnJvbSBCYXJ0IFdhcm1lcmRhbQogICAgPGJhcnR3QGRlYmlhbi5vcmc+CiAgKiBVcGRhdGUgc3BhcmMgY29kZSBzbyBpdCBhY3R1YWxseSBjb21waWxlcwoKRnJpIEFwciAxNiAwMjoxODowNSBDRVNUIDE5OTkgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KCiAgKiBBZGQgc3VwcG9ydCBmb3Igb2xkXypzdGF0IGZ1bmN0aW9ucyBmb3IgTGludXguIFBsZWFzZSBub3RlIHlvdSBuZWVkCiAgICB0byB1c2UgcmVhc29uYWJseSByZWNlbnQga2VybmVsIGhlYWRlcnMgdG8gY29tcGlsZSBzdHJhY2Ugbm93LgogICogQ2hhbmdlIHJlZmVyZW5jZXMgdG8gTElOVVggaW50byBsaW51eCBpbiBmaWxlLmMKICAqIEZpeCBpbmNsdWRlIGZvciBMRFQgaW4gbWVtLmMKClRodSBBcHIgMTUgMjI6Mjg6MTUgQ0VTVCAxOTk5IFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+CgogICogQ2hhbmdlIGluIHN0cmFjZSBtYWludGFpbmVyc2hpcCwganJzIHBhc3NlZCB0aGUgdG9yY2ggdG8gbWUuCiAgKiBVc2UgYXV0b2NvbmYgMi4xMwogICogSW5jb3Jwb3JhdGUgYWxsIGNoYW5nZXMgYWxyZWFkeSBtYWRlIGluIHRoZSBEZWJpYW4gc3RyYWNlIHBhY2thZ2U6CiAgICArIGNvbXBpbGVzIHdpdGggbW9yZSBMaW51eCBrZXJuZWxzCiAgICArIGFkZGVkIHN1cHBvcnQgZm9yIG1vcmUgTGludXggYXJjaGl0ZWN0dXJlcwogICAgKyBhZGQgc3VwcG9ydCBmb3IgYSBsb3Qgb2YgZXh0cmEgc3lzY2FsbHMKICAgICsgZml4IHNvbWUgcHJvYmxlbXMgd2l0aCBoYW5naW5nIGNoaWxkcmVuCiAgICArIGNoZWNrIHN0cmF5IHN5c2NhbGwgYWZ0ZXIgZXhlY3YKICAgICsgZGVjb2RlIGNhcGdldCBhbmQgY2Fwc2V0IGFyZ3VtZW50cwogICAgKyBhZGQgbW9yZSBjb25zdGFudHMgdG8gbmV0LmMKICAgICsgZGV0ZWN0IFJPU0UgbmV0d29ya2luZwogICAgKyBhZGQgbW9yZSBwcm90b2NvbCBmYW1pbGllcyB0byBkb21haW5zCiAgICArIGFkZCBJUElQIHByb3RvY29sCiAgICArIGFkZGVkIE1TR19QUk9YWSBhbmQgTVNHX0NUUlVOQyB0byBtc2dfZmxhZ3MKICAgICsgYWRkZWQgU09fQlNEQ09NUEFUIGFuZCBTT19SRVVTRVBPUlQgdG8gc29ja29wdGlvbnMKICAgICsgYWRkZWQgSVAsIElQWCBhbmQgVENQLW9wdGlvbnMKICAgICsgYWRkZWQgSVAsIElQWCBhbmQgVENQIHN1cHBvcnQgdG8gZ2V0LS9zZXRzb2Nrb3B0KCkKICAgICsgYWRkZWQgSVBYIHN1cHBvcnQKICAgICsgdXBkYXRlZCBoYW5kbGluZyBvZiBzaWduYWxzCgpTdW4gT2N0IDI3IDIyOjI4OjAwIDE5OTYgIEouIFJpY2hhcmQgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdXRpbC5jICh1bW92ZXN0cikgW0xJTlVYXTogSGFuZGxlIExpbnV4IGxpa2UgU3VuT1M0CglpbnN0ZWFkIG9mIFNWUjQuICBUaGF0IGlzLCByZWFkIGEgZmV3IGJ5dGVzIGF0IGEgdGltZQoJdG8gYXZvaWQgb3ZlcnJ1bm5pbmcgdGhlIGVuZCBvZiB0aGUgc3RhY2suCgpGcmkgTWF5IDMxIDAxOjQ4OjQ5IDE5OTYgIEouIFJpY2hhcmQgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdmVyc2lvbi5jOiBWZXJzaW9uIDMuMSBpcyByZWxlYXNlZC4KClRodSBNYXkgMjMgMDE6MDQ6NDMgMTk5NiAgSi4gUmljaGFyZCBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBhY2xvY2FsLm00IChBQ19ERUNMX1NZU19FUlJMSVNUKTogVHJ5IGxvb2tpbmcgaW4gc3RkaW8uaAoJYXMgd2VsbCBzaW5jZSB0aGF0J3Mgd2hlcmUgZ2xpYmMgZGVjbGFyZXMgaXQuICBHbyBmaWd1cmUuCgkqIHNpZ25hbC5jIChzeXNfc2lncmV0dXJuKSBbQUxQSEFdOiBVc2Ugc2lnY29udGV4dAoJaW5zdGVhZCBvZiBzaWdjb250ZXh0X3N0cnVjdCBzaW5jZSBnbGliYyB2NSsgYXBwYXJlbnRseQoJcGxheXMgZ2FtZXMgd2l0aCB0aGUgbmF0aXZlIE9TIG5hbWVzcGFjZS4KCUZyb20gRGF2aWQgTW9zYmVyZ2VyLVRhbmcgPGRhdmlkbUBBWlN0YXJOZXQuY29tPi4KCk1vbiBNYXkgMjAgMjM6MTc6MTQgMTk5NiAgSi4gUmljaGFyZCBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiB2ZXJzaW9uLmM6IFZlcnNpb24gMy4wLjE0IGlzIHJlbGVhc2VkLgoKCSogYWNsb2NhbC5tNCAoQUNfU1RSVUNUX01TR19DT05UUk9MKTogTmV3IG1hY3JvLgoJKiBjb25maWd1cmUuaW46IEFkZCBjYWxsIHRvIEFDX1NUUlVDVF9NU0dfQ09OVFJPTC4KCSogbmV0LmMgKHByaW50bXNnaGRyKTogSGFuZGxlIEJTRCA0LjMgYW5kIDQuNCBtc2doZHIgbWVtYmVycwogCWRpZmZlcmVudGx5LgoJUmVwb3J0ZWQgYnkgSGVucmlrIFN0b3JuZXIgPHN0b3JuZXJAb3NpcmlzLnBpbmcuZGs+LgoKCSogY29uZmlndXJlLmluOiAoQUNfQ0hFQ0tfe0hFQURFUlMsRlVOQ1N9KTogQWRkIGNoZWNrcyBmb3IKIAlzeXMvZmlsaW8uaCBhbmQgc3lzL3N0cmVhbS5oIGFuZCByZW1vdmUgY2hlY2sgZm9yIHBvbGwuCgkqIGRlc2MuYyAoZGVjb2RlX3NlbGVjdCwgc3lzX3NlbGVjdCwgc3lzX29sZHNlbGVjdCkgW0xJTlVYXToKIAlIYW5kbGUgb2xkIGFuZCBuZXcgc3R5bGVzIG9mIGFyZ3VtZW50IHBhc3NpbmcgZm9yIHNlbGVjdCBvbiBMaW51eC4KCSogaW9jdGwuYywgc3RyZWFtLmM6IENvbmRpdGlvbmFsaXplIHN0cmVhbSBjb2RlIG9uIHByZXNlbmNlIG9mCglzeXMvc3RyZWFtLmggaW5zdGVhZCBvZiBwb2xsIGJlY2F1c2UgZ2xpYmMgaW1wbGVtZW50cyBwb2xsIGJ1dAoJbm90IHRoZSByZXN0IG9mIHRoZSBzdHJlYW0gaW50ZXJmYWNlLgoJKiBzaWduYWwuYyBbTElOVVhdOiBTdGFuZGFyZGl6ZSBvbiB0aGUgbmFtZSBzaWdjb250ZXh0X3N0cnVjdC4KCShzeXNfc2lncHJvY21hc2spIFtBTFBIQV06IEhhbmRsZSBPU0YgZmxhdm9yIHdoaWNoIGlzIG1vcmUgbGlrZQoJc2lnc2V0bWFzay4KCSogdGVybS5jICh0ZXJtX2lvY3RsKTogVXNlIF9WTUlOLCBpZiBwcmVzZW50LCBmb3IgVEN7RyxTfUVUQSouCgkqIHV0aWwuYyAodW1vdmVuLCB1bW92ZXN0cik6IE1vdmUgZGF0YSBpbiBsb25nLXNpemVkIGNodW5rcwoJYXQgYSB0aW1lLCBpbnN0ZWFkIG9mIGhhcmQgY29kaW5nIGl0IHRvIGJlIDQuCglGcm9tIERhdmlkIE1vc2Jlcmdlci1UYW5nIDxkYXZpZG1AQVpTdGFyTmV0LmNvbT4uCgpNb24gTWF5IDIwIDAxOjE5OjM2IDE5OTYgIEouIFJpY2hhcmQgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdmVyc2lvbi5jOiBWZXJzaW9uIDMuMC4xMyBpcyByZWxlYXNlZC4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ0hFQ0tfSEVBREVSUyk6IEFkZCBjaGVjayBmb3IgYXNtL3NpZ2NvbnRleHQuaC4KCSogc2lnbmFsLmMgW0hBVkVfQVNNX1NJR0NPTlRFWFRfSF06IENvbmRpdGlvbmFsbHkgaW5jbHVkZQoJYXNtL3NpZ2NvbnRleHQuaCB0byBkZWZpbmUgc2lnY29udGV4dF9zdHJ1Y3QgYW5kIGRvbid0IGRlZmluZSBpdAoJbG9jYWxseSBpZiB0aGUgaGVhZGVyIGlzIHByZXNlbnQuCgoJKiBzeXNjYWxsLmMgKG5lcnJub3N7MCwyfSk6IENvcnJlY3Qgc2l6ZSBjb21wdXRhdGlvbi4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgZGVwZW5kZW5jaWVzIGFuZCBydWxlcyByZWxhdGluZyB0byBmaWxlcwogCW5vcm1hbGx5IGZvdW5kIGluIHRoZSBvcyBkaXJlY3RvcnkuICBCZWNhdXNlIG9mIHRoZSBuZXcgc2NoZW1lIHdlCiAJZG9uJ3Qga25vdyBwcmVjaXNlbHkgd2hlcmUgdGhleSBjb21lIGZyb20uICBTaWdoLgoJKiBzaWduYWxlbnQuc2g6IE1ha2UgaXQgd29yayBmb3Igc3Vub3M0LCBsaW51eCwgYW5kIHN2cjQuCgkqIHtzdW5vczQsbGludXh7LC9hbHBoYX0sc3ZyNH0vTWFrZWZpbGUuaW46IE1ha2UgcnVsZXMgY29ycmVzcG9uZAogCXRvIHRyYWRpdGlvbmFsIG1ha2Ugc3ludGF4LiAgQWRkIHNpZ25hbGVudC5oIHRvIGZpbGVzIHdoaWNoIGNhbgogCXVuY29uZGl0aW9uYWxseSBiZSByZWJ1aWx0LiAgUHJldmVudCBzaWduYWxlbnQuaCBmcm9tIGJlaW5nCiAJdW5jb25kaXRpb25hbGx5IGJlaW5nIHJlYnVpbHQgc2luY2UgaXQncyBjdXN0b21pemVkLgoJKiB7c3Vub3M0LGxpbnV4eywvYWxwaGF9LHN2cjR9L3tpb2N0bGVudCxlcnJub2VudCxzaWduYWxlbnR9Lmg6CiAJVXNlIHZlcnNpb25zIGJ1aWx0IGJ5IHtpb2N0bGVudCxlcnJub2VudCxzaWduYWx0ZW50fS5zaC4KICAJKiBzdW5vczQvaW9jdGxlbnQuc2g6IFdvcmsgYXJvdW5kIHNwcmludGYgdHJvdWJsZXMgd2l0aCBTdW5PUwogCTQuMS40IGFuZCBnY2MgMi43LjIuCgpTdW4gTWF5IDE5IDE3OjE0OjA5IDE5OTYgIEouIFJpY2hhcmQgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbjogQWRkIE9TQVJDSCBjb25jZXB0IHRvIGZpbmlzaAoJYnVpbGQgc3VwcG9ydCBmb3IgdGhlIGFscGhhLgoJKiBNYWtlZmlsZS5pbiwgbGludXgvTWFrZWZpbGUuaW46IFJld3JpdGUgY2xlYW4sIGRpc3RjbGVhbiwKCWFuZCBtYWludGFpbmVyLWNsZWFuIHJ1bGVzLgoJKiBkZWZzLmgsIGlvY3Rsc29ydC5jOiBNYWtlIGlvY3RsIGNvZGUgbWVtYmVyIHVuc2lnbmVkLgoJKiBpb2N0bC5jLCBpb2N0bHNvcnQuYyAoY29tcGFyZSk6IFBlcmZvcm0gZXhwbGljaXQgY2hlY2tpbmcKCWZvciBsZXNzLCBncmVhdGVyLCBhbmQgZXF1YWwgc2luY2Ugc3VidHJhY3Rpb24gb24gdHdvJ3MKCWNvbXBsZW1lbnQgbnVtYmVycyBpc24ndCBhbiBvcmRlciByZWxhdGlvbiAoaXQgaXNuJ3QgdHJhbnNpdGl2ZSkhCgkqIGxpbnV4L01ha2VmaWxlLmluOiBBZGQgcnVsZXMgZm9yIHRoZSBzaWduYWxlbnQuaCBmaWxlLgoJKiBsaW51eC9hbHBoYS9NYWtlZmlsZS5pbjogTmV3IGZpbGUuCgpTdW4gTWF5IDE5IDAxOjEyOjI4IDE5OTYgIEouIFJpY2hhcmQgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdmVyc2lvbi5jOiBWZXJzaW9uIDMuMC4xMiBpcyByZWxlYXNlZC4KCgkqIGxpbnV4eyxhbHBoYX0vaW9jdGxlbnQuc2g6IFR3ZWFrIGZvciByZWNlbnQga2VybmVscy4KCUZyb20gTWljaGFlbCBFIENoYXN0YWluIDxtZWNAZHVyYWNlZi5zaG91dC5uZXQ+LgoKCSogZGVmcy5oIChTVVBQT1JURURfUEVSU09OQUxJVEVTLCBERUZBVUxUX1BFUlNPTkFMSVRZKTogTmV3LgoJKiBzeXNjYWxsLmMgKHNldF9wZXJzb25hbGl0eSk6IE5ldy4KCSogc3RyYWNlLmMgKG1haW4pOiBDYWxsIHNldF9wZXJzb25hbGl0eS4KIAkqIGRlZnMuaCwgc3lzY2FsbC5jLCBpb2N0bC5jLCBzaWduYWwuYzogTWFrZSBzeXNlbnQsIGVycm5vZW50LAogCWlvY3RsZW50LCBhbmQgc2lnbmFsZW50IGluZGlyZWN0IHBvaW50ZXJzIGFuZCByZWRpcmVjdCB0aGVtCgliYXNlZCBvbiBwZXJzb25hbGl0eS4KCSoge3N1bm9zNCxzdnI0LGxpbnV4eywvYWxwaGF9fS9zaWduYWxlbnQuaDogTmV3IGZpbGVzLgoJU3VnZ2VzdGVkIGJ5IFRvbSBEeWFzIDx0ZHlhc0BlZGVuLnJ1dGdlcnMuZWR1Pi4KCgkqIHV0aWwuYyAodXBlZWspOiBIYW5kbGUgY2FzZSB3aGVyZSBwdHJhY2UgcmV0dXJucyBhIGxvbmcKCWFuZCBzaXplb2YobG9uZykgIT0gc2l6ZW9mKGludCkuCglGcm9tIFJpY2hhcmQgSGVuZGVyc29uIDxyaWNoYXJkQHR3aWRkbGUudGFtdS5lZHU+CgpGcmkgTWF5IDE3IDIxOjAzOjM2IDE5OTYgIEouIFJpY2hhcmQgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdmVyc2lvbi5jOiBWZXJzaW9uIDMuMC4xMSBpcyByZWxlYXNlZC4KCgkqIG1hbnkgZmlsZXM6IEZpeCBtb3JlIHByaW50ZiB3YXJuaW5ncyBmb3Igb3RoZXIgcGxhdGZvcm1zLgoKCSogaXBjLmMgKHN5c19tc2dyY3YpIFtMSU5VWF06IENvbmRpdGlvbmFsaXplIGRlZmluaXRpb24gb2YgaXBjX3dyYXBwZXIuCgoJKiBsaW51eC9kdW1teS5oOiBIYW5kbGUgbWlzc2luZyBsaWJyYXJ5IHN1cHBvcnQgZm9yIHtzZW5kLHJlY3Z9bXNnLgoJUmVwb3J0ZWQgYnkgVGhvbWFzIEJvZ2VuZG9lcmZlciA8dHNib2dlbmRAYmlnYnVnLmZyYW5rZW4uZGU+LgoKCSogbGludXgvc3lzY2FsbC5oIChzeXNfdXRpbWVzKTogRml4IGEgdHlwbyBpbiB0aGUgZGVjbGFyYXRpb24uCglGcm9tIFRob21hcyBCb2dlbmRvZXJmZXIgPHRzYm9nZW5kQGJpZ2J1Zy5mcmFua2VuLmRlPi4KCkZyaSBNYXkgMTcgMDA6NTA6MDYgMTk5NiAgSi4gUmljaGFyZCBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiB2ZXJzaW9uLmM6IFZlcnNpb24gMy4wLjEwIGlzIHJlbGVhc2VkLgoKCSogTWFrZmlsZS5pbjogQWRkIG9zL2FyY2ggdG8gaW5jbHVkZXMgc28gdGhhdCBhIGdpdmVuIGFyY2gKCShsaWtlIGFscGhhKSBjYW4gb3ZlcnJpZGUgdGhlIG5hdGl2ZSBhcmNoIChsaWtlIGkzODYpLgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBzZW5kbXNnLgoKCSogbmV0LmM6IE1ha2Ugc2VuZG1zZyBhbmQgcmVjdm1zZyBkZXBlbmRlbnQgb24gYW4gYXV0b2NvbmYKCXRlc3QuICBSZXBvcnRlZCBieSBNaWNoYWVsIEUgQ2hhc3RhaW4gPG1lY0BkdXJhY2VmLnNob3V0Lm5ldD4uCgoJKiBhY2NvbmZpZy5oLCBjb25maWd1cmUuaW46IERldGVjdCB0aGUgYWxwaGEuCgkqIGlvY3RsLmM6IEhhbmRsZSB0aGUgYWxwaGEuCgkqIGRlZnMuaDogTWFrZSBzb21lIG1lbWJlcnMgbG9uZyBmb3IgdGhlIGFscGhhLiAgRGVmaW5lCglzb21lIHJlZ2lzdGVyIG5pY2tuYW1lcy4gIEFkZCBzdXBwb3J0IGZvciBXQUlURVhFQ1ZFLgoJKiBmaWxlLmMgW0FMUEhBXTogU3VwcG9ydCB0aGUgYWxwaGEgZm9yIHN0YXRmcy4gIEFkZAoJb3NmX3N0YXRmcyBhbmQgb3NmX2ZzdGF0ZnMgZm9yIHRoZSBhbHBoYS4gIE1ha2UgZGFtbiBzdXJlCgltYWpvciBhbmQgbWlub3IgcmVzdWx0cyBhcmUgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gcHJpbnRmLgoJKiBzaWduYWwuYywgc3lzY2FsbC5jOiBTdXBwb3J0IHRoZSBhbHBoYS4KCSogcHJvY2Vzcy5jOiBBZGQgYWxwaGEgdXNlciBvZmZzZXRzLgoJKiBtb3N0IGZpbGVzOiBVc2UgJWw/IGZvciBwcmludGYgYXJndW1lbnRzIHNpbmNlCgltb3N0IGFyZSBub3cgbG9uZ3MgZm9yIHRoZSBhbHBoYS4KCSogbGludXgvYWxwaGEve2Vycm5vZW50LmgsaW9jdGxlbnQue2gsc2h9LHN5c2NhbGxlbnQuaH06CglOZXcgZm9yIHRoZSBhbHBoYS4KCUZyb20gVGhvbWFzIEJvZ2VuZG9lcmZlciA8dHNib2dlbmRAYmlnYnVnLmZyYW5rZW4uZGU+LgoKV2VkIE1heSAxNSAwMDoyOTozNyAxOTk2ICBKLiBSaWNoYXJkIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHZlcnNpb24uYzogVmVyc2lvbiAzLjAuOSBpcyByZWxlYXNlZC4KCgkqIGNvbmZpZy5pbiwgY29uZmlnLnN1YiwgaW5zdGFsbC1zaDogVXBncmFkZSB0byBhdXRvY29uZiAyLjEwLgoKCSogbGludXgvZHVtbXkuaCwgbGludXgvc3lzY2FsbGVudC5oLCBsaW51eC9zeXNjYWxsLmg6IEFkZCByZWNlbnQKCUxpbnV4IGtlcm5lbCB2ZXJzaW9uIHN5c3RlbSBjYWxscy4KCldlZCBNYXIgMTMgMDE6MDM6MzggMTk5NiAgSi4gUmljaGFyZCBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBpcGMuYyBbU1VOT1M0XTogQWRkIFN1bk9TIHN1cHBvcnQgZm9yIGRlY29kaW5nIElQQyBjYWxscy4KCSogc3lzY2FsbC5jIFtTVU5PUzRdOiBDb21waWxlIGRlY29kZV9zdWJjYWxsIG9uIFN1bk9TIGFuZAoJZGVjb2RlIElQQyBjYWxscyB1c2luZyBpdC4KCSogc3Vub3M0L2R1bW15Lmg6IEFsaWFzIHN5c19zZW1vcCB0byBwcmludGFyZ3MuCgkqIHN1bm9zNC9zeXNjYWxsLmg6IEFkZCBuZXcgcHNldWRvIHN5c2NhbGxzIGZvciBJUEMuCgkqIHN1bm9zNC9zeXNjYWxsZW50Lmg6IEluY2x1ZGUgbmV3IHN1YmNhbGxzIGZvciBJUEMuCglGcm9tIE1hdHRoaWFzIFBmYWxsZXIgPGxlb0BkYWNoYXUubWFyY28uZGU+LgoKVHVlIEZlYiAxMyAyMjowODoyNSAxOTk2ICBKLiBSaWNoYXJkIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHZlcnNpb24uYzogVmVyc2lvbiAzLjAuOCBpcyByZWxlYXNlZC4KCgkqIHRpbWUuYyBbTElOVVhdOiBFeHBsaWNpdGx5IGluY2x1ZGUgbGludXgvdmVyc2lvbi5oLgoKCSogc3RyYWNlLmMgKG1haW4pOiBEb24ndCBsZXQgdGhlbSBldmVuICp0cnkqIHRvCglnZXQgc3RyYWNlIHRvIGF0dGFjaCB0byBpdHNlbGYgc2luY2Ugc29tZSBzeXN0ZW1zCglkb24ndCBoYW5kbGUgdGhpcyBjYXNlIHZlcnkgZ3JhY2VmdWxseS4KCVJlcG9ydGVkIGJ5IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AY2FpcC5ydXRnZXJzLmVkdT4uCgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogRml4IGl0IGZvciBzdWJkaXJlY3Rvcmllcy4KCgkqIHN1bm9zNC9zeXNjYWxsZW50LmgsIHN2cjQvc3lzY2FsbGVudC5oOiBGaWxsIGluIHRoZSBuZXcKCXN5c19mbGFncyBtZW1iZXIgZm9yIGVhY2ggZGVmaW5lZCBzeXN0ZW0gY2FsbC4KCkZyaSBEZWMgIDggMDE6MTc6MjggMTk5NSAgUmljayBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBkZWZzLmggKFRSQUNFXyopOiBOZXcgZmxhZ3MgdG8gZGVzY3JpYmUgd2hhdCBjbGFzcwoJb2Ygc3lzdGVtIGNhbGwgZWFjaCBzeXN0ZW0gY2FsbCBpcy4KCShzeXNlbnQpOiBBZGQgc3lzX2ZsYWdzIG1lbWJlci4KCSogc3lzY2FsbC5jIChzeXNlbnQpOiBEZWZpbmUgKGFuZCBsYXRlciB1bmRlZikgYWJicmV2aWF0aW9ucwoJZm9yIHRoZSBzeXN0ZW0gY2FsbCBjbGFzcyBmbGFncy4KCShsb29rdXBfY2xhc3MpOiBOZXcgZnVuY3Rpb24gdG8gdHJhbnNsYXRlIHN0cmluZ3MgdG8KCXN5c3RlbSBjYWxsIGNsYXNzIGZsYWdzLgoJKHF1YWxpZnkpOiBIYW5kbGUgbmV3IHN5c3RlbSBjYWxsIGNsYXNzIG1lY2hhbmlzbS4KCSogbGludXgvc3lzY2FsbGVudC5oOiBGaWxsIGluIHRoZSBuZXcgc3lzX2ZsYWdzIG1lbWJlcgoJZm9yIGVhY2ggZGVmaW5lZCBzeXN0ZW0gY2FsbC4KCgkqIGRlZnMuaCAocHJpbnRfc29jayk6IFJlbW92ZSByZWR1bmRhbnQgYW5kIG5vbi1LJlIgQwoJY29tcGF0aWJsZSBwcm90b3R5cGUuICBGcm9tIEp1ZXJnZW4gV2VpZ2VydAoJPGpud2VpZ2VyQGltbWQ0LmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPi4KClRodSBEZWMgIDcgMDE6MTc6NDAgMTk5NSAgUmljayBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBsaW51eC9pb2N0bGVudC5zaDogVHdlYWsgdG8gaW1wcm92ZSBpb2N0bCBhY2N1cmFjeS4KCUZyb20gTWljaGFlbCBFIENoYXN0YWluIDxtZWNAZHVyYWNlZi5zaG91dC5uZXQ+LgoKCSogc3lzdGVtLmMgKGluY2x1ZGVzKSBbTElOVVhdOiBBZGQgbGludXgvbmZzLmggZm9yIHJlY2VudAoJa2VybmVscy4gIEZyb20gTWljaGFlbCBFIENoYXN0YWluIDxtZWNAZHVyYWNlZi5zaG91dC5uZXQ+LgoKV2VkIERlYyAgNiAyMTo1MjoyOCAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIGZpbGUuYyAoc3ByaW50ZnN0eXBlKTogRW5jbG9zZSBzdHJpbmcgcmVzdWx0IGluIGRvdWJsZQoJcXVvdGVzLgoKCSogdGltZS5jIChzeXNfYWRqdGltZXgpIFtMSU5VWF06IENvbmRpdGlvbmFsaXplCgljb25zdGFudGx5IGV2b2x2aW5nIHRpbWV4IHN0cnVjdHVyZS4KCUZyb20gQWFyb24gVWNrbyA8VUNLT0BWQVgxLlJPQ0tIVVJTVC5FRFU+LgoKCSogZGVmcy5oLCBzeXNjYWxsLmMsIHN0cmFjZS5jOiBSZW5hbWUgc3lzY2FsbCB0bwoJdHJhY2Vfc3lzY2FsbCBhbmQgY2hhbmdlIHByb3RvdHlwZSBhbmQgYWxsIGNhbGxlcnMKCWJlY2F1c2Ugb2YgYnJva2VuIExpbnV4IHNoYXJlZCBsaWJyYXJpZXMuCglGcm9tIEFhcm9uIFVja28gPFVDS09AVkFYMS5ST0NLSFVSU1QuRURVPi4KCgkqIE1ha2VmaWxlLmluIChjbGVhbik6IENoZWNrIGZvciBhIGZpbGUgd2l0aCB0ZXN0IC1mIG5vdAoJdGVzdCAtZC4gIEZyb20gQWFyb24gVWNrbyA8VUNLT0BWQVgxLlJPQ0tIVVJTVC5FRFU+LgoKVHVlIFNlcCAyNiAwMjozMjozMSAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHZlcnNpb24uYzogVmVyc2lvbiAzLjAuNyBpcyByZWxlYXNlZC4KCgkqIHV0aWwuYyAoc3RyaW5nX3F1b3RlKTogRml4IHRoaW5rbyB3aGljaCBjYXVzZWQgY29yZQoJZHVtcHMgZm9yIHN0cmluZ3Mgd2l0aCBxdW90ZXMgaW4gdGhlbS4KCVJlcG9ydGVkIGJ5IE1hcnR5IExlaXNuZXIgPGxlaXNuZXJAc2RzcC5tYy54ZXJveC5jb20+LgoKCSogbGludXgvTWFrZWZpbGUuaW4gKGVycm5vZW50LmggcnVsZSk6IEdyYWIgYWxsIGVycm5vLmgKCWZpbGVzIGZyb20gL3Vzci9pbmNsdWRlLCBub3QganVzdCB0aGUgbGludXggb25lLgoJRnJvbSBNaWNoYWVsIEUgQ2hhc3RhaW4gPG1lY0BkdXJhY2VmLnNob3V0Lm5ldD4uCgoJKiBsaW51eC9lcnJub2VudC5zaDogVG90YWwgcmV3cml0ZSB0byBoYW5kbGUgbW9yZSBpb2N0bHMgd2l0aAoJZmV3ZXIgZmFsc2UgcG9zaXRpdmVzIG9uIG1vcmUga2VybmVsIGZsYXZvcnMuCglGcm9tIE1pY2hhZWwgRSBDaGFzdGFpbiA8bWVjQGR1cmFjZWYuc2hvdXQubmV0Pi4KCk1vbiBTZXAgIDQgMDE6Mjk6MjIgMTk5NSAgUmljayBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiB2ZXJzaW9uLmM6IFZlcnNpb24gMy4wLjYgaXMgcmVsZWFzZWQuCgoJKiBsaW51eC9kdW1teS5oLCBsaW51eC9zeXNjYWxsLmgsIGxpbnV4L3N5c2NhbGxlbnQuaDogQWRkCglzeXNfbXN5bmMuCgkqIG1lbS5jIChtY3RsX2Z1bmNzLCBtY3RsX2xvY2thcywgc3lzX21jdGwpOiBDb25kaXRpb25hbGl6ZQoJb24gTUNfU1lOQyBpbnN0ZWFkIG9mIEhBVkVfTUNUTC4KCShtY3RsX3N5bmMpOiBDb25kaXRpb25hbGl6ZSBvbiBNU19BU1lOQyBpbnN0ZWFkIG9mIEhBVkVfTUNUTC4KCShzeXNfbXN5bmMpOiBOZXcgZnVuY3Rpb24uCgpTYXQgU2VwICAyIDEyOjA2OjA0IDE5OTUgIFJpY2sgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogbGludXgvZHVtbXkuaCwgbGludXgvc3lzY2FsbC5oLCBsaW51eC9zeXNjYWxsZW50Lmg6IEFkZAoJc3lzX2Zsb2NrIGFuZCBzeXNfZ2V0ZGVudHMuCgkqIGRlc2MuYyAoZmxvY2tjbWRzLCBzeXNfZmxvY2spOiBDb25kaXRpb25hbGl6ZSBvbiBMT0NLX1NICglub3QgU1VOT1M0LgoJKiBmaWxlLmMgKHN5c19nZXRkZW50cyk6IERlZmluZSB1bmNvbmRpdGlvbmFsbHkgYW5kIGhhbmRsZQoJTElOVVggY2FzZS4KCSogc3RyYWNlLmMgKG1haW4pOiBEaXNhbGxvdyB1c2VybmFtZSBvcHRpb24gdW5sZXNzIGJvdGggcmVhbAoJYW5kIGVmZmVjdGl2ZSB1aWRzIGFyZSByb290LgoKV2VkIEF1ZyAzMCAwMToyOTo1OCAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHN0cmFjZS5jIChtYWluKTogRW5zdXJlIHRoYXQgcnVuX3VpZCBhbmQgcnVuX2dpZCBhcmUKCWFsd2F5cyBzZXQgdG8gc29tZXRoaW5nIG1lYW5pbmdmdWwuCgkobWFpbiwgbmV3b3V0ZikgWyFTVlI0XTogU3dhcCByZWFsIGFuZCBlZmZlY3RpdmUgdWlkcyB3aGlsZQoJb3BlbmluZyBhbnkgb3V0cHV0IGZpbGVzLgoJKG1haW4pIFshU1ZSNF06IFRyZWF0IGVmZmVjdGl2ZSB1aWQgb2Ygcm9vdCBhcyBhIHJlcXVlc3QKCXRvIGhhbmRsZSBzdWlkIGJpbmFyaWVzIGNvcnJlY3RseSB1c2luZyB0aGUgcmVhbCB1aWQgb2YKCXRoZSBpbnZva2luZyB1c2VyLgoKU2F0IEF1ZyAxOSAwMDowNjowOCAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgYHx8IHRydWUnIHRvIGNsZWFuIHJ1bGUgYmVjYXVzZQoJYWx0aG91Z2ggR05VIG1ha2UgMy43NCB1c2VzIGBzaCAtYycgdG8gaW52b2tlIGNvbW1hbmRzCglldmVyeSBvdGhlciBtYWtlIGluIHRoZSB3b3JsZCB1c2VzIGBzaCAtZWMnLgoKCSogc3lzY2FsbC5jIChzeXNjYWxsKSBbU1ZSNCwgTUlQU106IFRoZSBmaWZ0aCBhbmQgc3Vic2VxdWVudAoJYXJndW1lbnRzIGFwcGVhciB0byBiZSBzdG9yZWQgb24gdGhlIHN0YWNrLCBub3QgaW4gdGhlCglyZWdpc3RlcnMgZm9sbG93aW5nIEEzIChlbXBpcmljYWwgcmVzdWx0KS4KCgkqIGRlZnMuaDogQWRkIHByb3RvdHlwZSBmb3IgcHJpbnRzb2NrLgoJKiBzdnI0L2R1bW15Lmg6IFJlbW92ZSBnZW5lcmljIGhhbmRsaW5nIG9mIHN5c19tb3VudC4KCSogc3lzdGVtLmMgW1NWUjQsIE1JUFNdOiBJbmNsdWRlIHNldmVyYWwgc3lzdGVtIGhlYWRlcnMgdG8gY2xlYW5seQoJZ2V0IGFjY2VzcyB0byBTR0kgbW91bnQgaW5mb3JtYXRpb24uCgkobW91bnRfZmxhZ3MsIG5mc19mbGFncykgW1NWUjQsIE1JUFNdOiBOZXcgb2JqZWN0cy4KCShzeXNfbW91bnQpIFtTVlI0LCBNSVBTXTogTmV3IGZ1bmN0aW9uLgoJKHN5c19tb3VudCkgW1NWUjQsICFNSVBTXTogTmV3IGZ1bmN0aW9uLgoKVHVlIEp1bCAgNCAwMDozMDozNCAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHZlcnNpb24uYzogVmVyc2lvbiAzLjAuNSBpcyByZWxlYXNlZC4KCgkqIGRlc2MuYywgcmVzb3VyY2UuYywgc3RyYWNlLmMsIHN5c2NhbGwuYywgdGltZS5jOiBDYXN0IHR2X3NlYyBhbmQKIAl0dl91c2VjIG1lbWJlcnMgdG8gbG9uZyB3aGVuIHVzaW5nIHByaW50Zi4KCgkqIGlwYy5jOiBPbWl0IGRlZmluZSBvZiBfX0tFUk5FTF9fLgoJKHtNU0csU0VNLFNITX1fe1NUQVQsSU5GT30pOiBFeHBsaWNpdGx5IGRlZmluZSB0aG9zZSB0aGluZ3Mgd2UKIAl3YW50IHdoaWNoIF9fS0VSTkVMX18gdXNlZCB0byBwcm92aWRlLgoJKHN5c19tc2dyY3YpOiBDaGFuZ2UgcmVmZXJlbmNlIHRvIGlwY19rbHVkZ2Ugc3RydWN0dXJlIHRvCglsb29rLWFsaWtlIGlwY193cmFwcGVyIHRvIGF2b2lkIGRlcGVuZGVuY2Ugb24gX19LRVJORUxfXy4KCgltZW0uYyAobW1hcF9mbGFncykgW01BUF97R1JPV1NET1dOLERFTllXUklURSxFWEVDVVRBQkxFfV06IEFkZAogCUxpbnV4IHNwZWNpZmljIG9wdGlvbnMuCgoJc3lzY2FsbC5jOiBVc2UgU1lTX0VSUkxJU1RfREVDTEFSRUQgaW5zdGVhZCBvZiBndWVzc2luZy4KICAJW0V7UkVTVEFSVHtTWVMsTk97SU5UUixIQU5EfX0sTk9JT0NUTENNRH1dOiBFeHBsaWNpdGx5IGRlZmluZQogCWluc3RlYWQgb2YgZGVwZW5kaW5nIG9mIF9fS0VSTkVMX18uCgoJdGVybS5jOiBDYXN0IGNfe2ksbyxjLGx9ZmxhZyB0byBsb25nIHdoZW4gdXNpbmcgcHJpbnRmLgoKVHVlIEp1biAgNiAwMDoyNzo0OCAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIGFjbG9jYWwubTQgKEFDX0RFQ0xfU1lTX0VSUkxJU1QsIEFDX0RFQ0xfX1NZU19TSUdMSVNUKTogTmV3LgoJKiBjb25maWd1cmUuaW46IENhbGwgQUNfREVDTF9TWVNfRVJSTElTVCwgQUNfREVDTF9TWVNfU0lHTElTVCwKCWFuZCBBQ19ERUNMX19TWVNfU0lHTElTVC4KCSogYWNjb25maWcuaCAoU1lTX0VSUkxJU1RfREVDTEFSRUQpOiBOZXcuCgkqIHN0cmFjZS5jIChzdHJlcnJvcik6IFVzZSBTWVNfRVJSTElTVF9ERUNMQVJFRC4KCShzdHJzaWduYWwpOiBVc2UgU1lTX1NJR0xJU1RfREVDTEFSRUQuCgoJbmV0LmMgKHN5c19zb2NrZXQpOiBPbWl0IGluYWR2ZXJ0ZW50IHN1cnBsdXMgY29tbWEgd2hlbgoJcHJvdG9jb2wgZmFtaWx5IGlzbid0IFBGX0lORVQuCgoJdXRpbC5jIChkdW1wc3RyKTogRml4IGluY29ycmVjdCBwcmludGluZyBvZiBvbmUgdG9vIG1hbnkKCWNoYXJhY3RlcnMgd2hlbiB0aGUgbGVuZ3RoIGlzIG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIDE2IGJ5dGVzLgoJUmVwb3J0ZWQgYnkgSnVlcmdlbiBXZWlnZXJ0Cgk8am53ZWlnZXJAaW1tZDQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+LgoKVGh1IE1heSAgNCAyMzozNzo0NyAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIGlvY3RsLmMgKGNvbXBhcmUpOiBDaGFuZ2UgcHJvdG90eXBlIHRvIG1hdGNoIFBPU0lYIHFzb3J0LgoJKiBzaWduYWwuYyAoc2lnaXNoYW5kbGVkKSBbU1ZSNF06IE9taXQgZXZlcnl0aGluZyBhZnRlciByZXR1cm4uCgkqIHN0cmFjZS5jICh0cmFjZSkgW1NWUjRdOiBCcmVhayBvdXQgb2YgZm9yIGxvb3AgaW5zdGVhZCBvZgoJcmV0dXJuaW5nIHdoZW4gZmluaXNoZWQgc28gZmluYWwgcmV0dXJuIHN0YXRlbWVudCBpcyBleGVjdXRlZC4KCSogc3lzY2FsbC5jIChpbnRlcm5hbF9zeXNjYWxsKTogQWRkIG1vcmUgU1lTX3dhaXQqIHZhcmlhdGlvbnMuCgkoc3lzY2FsbCkgW0xJTlVYXTogQ29ycmVjdCB0eXBvIHdoaWNoIGNvbW1lbnRlZCBvdXQgdGhlIE02OEsKCWFyZ3VtZW50IHRvIGlmZGVmLgoJKiB1dGlsLmMgKHByaW50c3RyKTogQ2FzdCB1bnNpZ25lZCBjaGFyIHBvaW50ZXIgYXJndW1lbnQKCXRvIGNoYXIgcG9pbnRlciBpbiB1bW92ZXN0ciBjYWxsLgoJKGR1bXBzdHIpOiBMaWtld2lzZSBmb3IgdW1vdmVuLgoKV2VkIE1heSAgMyAwMToxMDo1NiAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHZlcnNpb24uYzogVmVyc2lvbiAzLjAuNCBpcyByZWxlYXNlZC4KCgkqIHNpZ25hbC5jIChzeXNfc2lnYmxvY2spOiBNb3ZlIGFmdGVyIHRoZSBkZWZpbml0aW9uIG9mCglzeXNfc2lnc2V0bWFzayB0aGF0IGl0IGNhbGxzIHRvIGF2b2lkIGFuIGltcGxpY2l0IGRlY2xhcmF0aW9uLgoJKiBzdHJlYW0uYyAodHJhbnNwb3J0X3VzZXJfb3B0aW9ucywgdHJhbnNwb3J0X3NlcnZlcl9vcHRpb25zKToKCU9ubHkgbmVlZGVkIGlmIFRJX0JJTkQgaXMgZGVmaW5lZC4KCSogY29uZmlndXJlLmluOiBBZGQgLVduby1pbXBsaWNpdCB0byBXQVJORkxBR1Mgb24gU3VuT1MgNC54LgoKCSogcHJvY2Vzcy5jIChpbnRlcm5hbF9mb3JrKSBbU1ZSNF06IEZpeCBhIHR5cG8gdGhhdCBvbWl0dGVkCgl0aGUgdGNwIGFyZ3VlbWVudCBmcm9tIHRoZSBjYWxsIHRvIGV4aXRpbmcuICBBZGQgZ2V0cnZhbDIKCWNoZWNrIHNvIG5vIGZvcmsgcHJvY2Vzc2luZyBpcyBkb25lIGluIHRoZSBjaGlsZC4KCShwcmludHdhaXRuKTogSW5pdGlhbGl6ZSBleGl0ZWQgc28gdGhhdCBpdHMgdmFsdWUgaXMgZGVmaW5lZAoJZm9yIGFsbCBmbG93cyBvZiBleGVjdXRpb24uCgpUdWUgTWF5ICAyIDIyOjM5OjQyIDE5OTUgIFJpY2sgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogbGludXgvZHVtbXkuaDogQWRkIGFsaWFzZXMgZm9yIHN5c2ZzLCBwZXJzb25hbGl0eSwgYWZzX3N5c2NhbGwsCglzZXRmc3VpZCwgc2V0ZnNnaWQsIGFuZCBfbGxzZWVrIHN5c2NhbGxzLgoJKiBsaW51eC9zeXNjYWxsLmg6IEFkZCBwcm90b3R5cGVzIGZvciB0aGVtLgoJKiBsaW51eC9zeXNjYWxsZW50Lmg6IEFkZCB0aGVtIHRvIHRoZSBzeXNjYWxsIGVudHJpZXMgdGFibGUuCgkqIHN5c3RlbS5jIChoZWFkZXJzKSBbTElOVVhdOiBJbmNsdWRlIGxpbnV4L3VuaXN0ZC5oIHRvIGdldCBfX05SXyoKCWRlZmluZXMgYW5kIGNvbmRpdGlvbmFsbHkgaW5jbHVkZSBsaW51eC9wZXJzb25hbGl0eS5oIGlmCglfX05SX3BlcnNvbmFsaXR5IGlzIGRlZmluZWQuCgkocGVyc29uYWxpdHlfb3B0aW9ucykgW0xJTlVYXTogTmV3IHRhYmxlLgoJKHN5c19wZXJzb25hbGl0eSkgW0xJTlVYXTogTmV3IGZ1bmN0aW9uLgoKVHVlIE1heSAgMiAwMDoyMDozOSAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHN0cmFjZS5jICh0cmFjZSkgWyFTVlI0XTogQ2hhbmdlIGZvcmV2ZXIgbG9vcCB0byBvbmUgcHJlZGljYXRlZAoJb24gdGhlIG51bWJlciBvZiB0cmFjZWQgcHJvY2Vzc2VzIHNvIHRoYXQgd2UgY2FuIGhhdmUgdW50cmFjZWQKCWNoaWxkcmVuIChlLmcuIHZpYSBwb3BlbikuCgoJKiBzdHJhY2UgKG1haW4pIFshU1ZSNF06IENhbGwgZmFrZV9leGVjdmUgdG8gZ2V0IHRoZSBhY3R1YWwKCWV4ZWMgYW5kIGl0cyBhcmd1bWVudHMgaW50byB0aGUgdHJhY2UuCgkoZW52aXJvbik6IERlY2xhcmUgaXQuCgkqIHByb2Nlc3MuYyAoZmFrZV9leGVjdmUpOiBOZXcgZnVuY3Rpb24uCgkoaGVhZGVycyk6IEluY2x1ZGUgc3lzL3N5c2NhbGwuaCB0byBnZXQgU1lTXyogZGVmaW5lcy4KCgkqIHByb2Nlc3MuYyAoc3lzX2V4ZWN2LCBzeXNfZXhlY3ZlKTogU3Vycm91bmQgYXJndW1lbnQgYW5ub3RhdGlvbnMKCXdpdGggQyBjb21tZW50IGRlbGltaXRlcnMuCgkocHJpbnRhcmd2LCBwcmludGFyZ2MpOiBUaGUgYXJnIHZlY3RvciBpcyBhbiBhcnJheSBvZiBjaGFyIHBvaW50ZXJzCglub3QgaW50cy4KCgkqIHN0cmFjZS5jIChwcmludGxlYWRlcik6IEFsc28gY2hlY2sgZm9yIG11bHRpcGxlIC1wIGFyZ3VtZW50cwoJd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIHByaW50IHRoZSBwaWQgZmllbGQuCgoJKiBzdHJhY2UuYyAoc3RyZXJyb3IpIFshSEFWRV9TVFJFUlJPUl06IE5ldyBmdW5jdGlvbi4KCSogZGVmcy5oIChzdHJlcnJvciwgc3Ryc2lnbmFsKTogQWRkIHRoZXNlIHByb3RvdHlwZXMgaWYgd2UgcHJvdmlkZQoJdGhlIGZ1bmN0aW9ucy4KCSogY29uZmlndXJlLmluIChBQ19DSEVDS19GVU5DUyk6IEFkZCBzdHJlcnJvci4KCgkqIHN0cmFjZS5jIChtYWluLCBwcm9jX3BvbGxlcik6IEFkZCBTSUdQSVBFIHRvIHRoZSBsaXN0IG9mIGNhdWdodAoJYW5kIGJsb2NrZWQgc2lnbmFscy4KCgkqIHN0cmFjZS5jIChtYWluKTogQWRkIHVzZXJuYW1lIG9wdGlvbi4gIFZlcmlmeSB0aGV5IGFyZSByb290IGJlZm9yZQoJbGV0dGluZyB0aGVtIHVzZSBpdC4gIExvb2sgdXAgdGhlIGlkcyBpbiB0aGUgcGFzc3dvcmQgZmlsZS4gIFNldAoJdGhlbSBqdXN0IGJlZm9yZSBleGVjdXRpbmcgdGhlIHByb2dyYW0uCglGcm9tIFJldWJlbiBTdW1uZXIgPHJhc3VtbmVyQHVuZGVyZ3JhZC5tYXRoLnV3YXRlcmxvby5jYT4uCgpTYXQgQXByIDI5IDAwOjA5OjU2IDE5OTUgIFJpY2sgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdmVyc2lvbi5jOiBWZXJzaW9uIDMuMC4zIGlzIHJlbGVhc2VkLgoKCSogc3lzdGVtLmMgKG1vdW50X2ZsYWdzKSBbTElOVVhdOiBPbWl0IGR1cGxpY2F0ZWQgTVNfTk9TVUlEIGVudHJ5LgoJRnJvbSBSZXViZW4gU3VtbmVyIDxyYXN1bW5lckB1bmRlcmdyYWQubWF0aC51d2F0ZXJsb28uY2E+LgoKCSogc3RyYWNlLmMgKG91dGZuYW1lKTogSW5pdGlhbGl6ZSB0byBOVUxMLgoJKG1haW4pOiBEZWZlciBvdXRwdXQgZmlsZSBwcm9jZXNzaW5nIHVudGlsIGFmdGVyIGFyZ3VtZW50cy4KCUFsbG93IGVpdGhlciBhIHBpcGUgb3IgYSBiYW5nIGZvciBjb21tYW5kIGFyZ3VtZW50cy4KCUNoZWNrIGlmIG91dGZuYW1lIGlzIE5VTEwgaW5zdGVhZCBvZiBjaGVja2luZyBvdXRmIGZvciBzdGRlcnIuCglSZWluaXRpYWxpemUgZWFjaCBzdGFydHVwIFRDQidzIG91dGYgdG8gZml4IC1wLy1vIG9yZGVyaW5nIGJ1Zy4KCShkcm9wdGNiKTogUmVzZXQgY2xvc2UgVENCJ3Mgb3V0ZiB0byBOVUxMIGluc3RlYWQgb2Ygc3RkZXJyLgoJKHRwcmludGYpOiBBdm9pZCBjYWxsaW5nIHZmcHJpbnRmIGlmIG91dGYgaXMgTlVMTC4KCgkqIHN0cmFjZS5jIChtYWluKTogVXNlIHBvcGVuIGlmIC1vIGFyZ3VtZW50IGJlZ2lucyB3aXRoIGEgcGlwZS4KCUZyb20gTWFydHkgTGVpc25lciA8bGVpc25lckBzZHNwLm1jLnhlcm94LmNvbT4uCgoJKiBwcm9jZXNzLmMgKHByaW50c3RhdHVzKTogRml4IGEgdHlwbyB3aGVyZSBXSUZTSUdOQUxFRCB3YXMgbWVhbnQKCWJ1dCBXSUZTVE9QUEVEIHdhcyB1c2VkLgoKCSogTWFrZWZpbGUuaW46IEFkZCBhbiBFWFRSQV9ERUZTIHZhcmlhYmxlIGFuZCB1c2UgaXQgaW4gdGhlIC5jLm8KCXJ1bGUgdG8gcHJldmVudCB0aGUgY29tbWVudCBmcm9tIGJlaW5nIHVudHJ1ZS4KCkZyaSBBcHIgMjggMjI6MDE6NTYgMTk5NSAgUmljayBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBzdHJhY2UuYyAoc3lzX2V4aXQpOiBNb3ZlIGZvbGxvdyBmb3JrIGNvZGUgdG8gaW50ZXJuYWxfZXhpdC4KCShzeXNfZm9yayk6IE1vdmUgZm9sbG93IGZvcmsgY29kZSB0byBpbnRlcm5hbF9mb3JrLgoJKHN5c19leGVjdiwgc3lzX2V4ZWN2ZSk6IE1vdmUgZm9sbG93IGZvcmsgY29kZSB0byBpbnRlcm5hbF9leGVjLgoJKHN5c193YWl0cGlkLCBzeXNfd2FpdDQpOiBNb3ZlIGZvbGxvdyBmb3JrIGNvZGUgdG8gaW50ZXJuYWxfd2FpdC4KCSh2Zm9ya2luZyk6IFJlbW92ZSB0aGlzIHN0YXRpYyB2YXJpYWJsZSBhbmQgY2hlY2sgc2NubyBpbgoJaW50ZXJuYWxfZm9yayBpbnN0ZWFkLgoJKGludGVybmFsX2V4aXQsIGludGVybmFsX2ZvcmssIGludGVybmFsX2V4ZWMsIGludGVybmFsX3dhaXQpOiBOZXcKCWZ1bmN0aW9ucy4KCSogZGVmcy5oOiBBZGQgcHJvdG90eXBlcyBmb3IgdGhlIG5ldyBpbnRlcm5hbF8qIGZ1bmN0aW9ucy4KCSogc3lzY2FsbC5jIChzeXNjYWxsKTogTW92ZSBzeXNjYWxsIGVudGVyaW5nIHRyYWNlIHF1YWxpZmllciBjaGVjawoJYW5kIHJlcHJpbnQgY2hlY2tpbmcgYWZ0ZXIgY29udGV4dCBkZWNvZGluZyBhbmQgcHJlY2VkZSB0aGVtIHdpdGgKCWEgY2FsbCB0byBpbnRlcm5hbF9zeXNjYWxsLiAgUHJlY2VkZSBzeXNjYWxsIGV4aXRpbmcgdHJhY2UKCXF1YWxpZmllciBjaGVjayB3aXRoIGEgY2FsbCB0byBpbnRlcm5hbF9zeXNjYWxsLgoJKGludGVybmFsX3N5c2NhbGwpOiBOZXcgZnVuY3Rpb24uCgoJKiBkZWZzLmggKHN0cnVjdCB0Y2IpOiBNYWtlIHNjbm8gc2lnbmVkLgoJKiBzdHJhY2UuYyAoc3lzY2FsbCkgTWFrZSB1X2Vycm9yIHNpZ25lZC4KCVtMSU5VWCwgSTM4Nl06IEF2b2lkIHVuc2lnbmVkIGNhc3QgaW4gZWF4IGNoZWNrLgoJKiBzeXNjYWxsLmMgKHN5c19pbmRpcik6IE1ha2UgaSwgc2NubywgYW5kIG5hcmdzIHNpZ25lZC4KCSogZGVzYy5jIChzeXNfc2VsZWN0KTogTWFrZSBjdW1sZW4gdW5zaWduZWQKCk1vbiBBcHIgMjQgMjM6NTI6NDcgMTk5NSAgUmljayBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBuZXQuYyAoc29ja3R5cGVzKTogQWRkIFNPQ0tfUEFDS0VULgoKU3VuIEFwciAgMiAyMzo1MDozOSAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIE1ha2VmaWxlIChjbGVhbik6IENoZWNrIGV4cGxpY2l0bHkgZm9yIGEgTWFrZWZpbGUgaW4gc3ViZGlycwoJYmVmb3JlIHJ1bm5pbmcgbWFrZSBpbiB0aGVtLgoKU3VuIE1hciAyNiAxMjozNzoyMSAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHN0cmFjZS5jIFtNSVBTXSAocHJvY19vcGVuKTogQ29uZGl0aW9uYWxpemUgcnVuIG9uIE1JUFMuCglbTUlQU10gKGRldGFjaCk6IEluaXRpYWxpemUgZXJyb3IgZm9yIE1JUFMgY2FzZS4KCSh0cmFjZSk6IEluaXRpYWxpemUgaW9jdGxfcmVzdWx0IGFuZCBpb2N0bF9lcnJubyBmb3Igb3Zlcmx5IGhlbHBmdWwKCWNvbXBpbGVycy4KCSogc3lzY2FsbC5jIChkZWNvZGVfc3ViY2FsbCk6IE1vdmUgdmFyaWFibGUgaSBpbnRvIGNvbmRpdGlvbmFscwoJdGhhdCB1c2UgdXNlIGl0LgoJKiBzeXN0ZW0uYyAoc3lzc2dpX29wdGlvbnMpOiBDb25kaXRpb25hbGl6ZSBTR0lfUkVDVkxNU0cgYW5kCglTR0lfU0VUX0ZQREVCVUcgdGhhdCBTR0kgZGVjaWRlZCB0byBkcm9wLiAgSSBkb24ndCBoYXZlIHRoZSBzdG9tYWNoCgl0byBjaGFuZ2UgdGhlbSBhbGwuCgkqIHRlcm0uYyAodGVybV9pb2N0bCk6IEZvcmNlIFtjX1tpb2NsXWZsYWdzIG1lbWJlcnMgdG8gbG9uZyBiZWZvcmUKCXByaW50aW5nIHNpbmNlIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgc2l6ZSBvZiB0aGVpciB0eXBlIGlzLgoJKiB1dGlsLmMgW1NWUjQsIE1JUFNdICh1bW92ZW4pOiBQcmV2ZW50IE1JUFMgZnJvbSB1c2luZyBwcmVhZCBldmVuCglpZiBhdXRvY29uZiBkZXRlY3RzIGl0IHNpbmNlIGl0IHNlZW1zIHRvIGVpdGhlciBub3Qgd29yayBvciBkbwoJc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgb24gSXJpeCA1LjMuCgpTdW4gTWFyIDI2IDAwOjAxOjExIDE5OTUgIFJpY2sgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdmVyc2lvbi5jOiBWZXJzaW9uIDMuMC4yIGlzIHJlbGVhc2VkLgoJKiBsaW51eC9kdW1teS5oOiBNYWtlIHN5c19mY2hkaXIgbGlrZSBzeXNfY2xvc2UgaW5zdGVhZCBvZiBwcmludGFyZ3MKCXNvIHRoYXQgdGhlIGZpbGUgZGVzY3JpcHRvciBhcmcgaXMgZGVjaW1hbC4KClNhdCBNYXIgMjUgMjI6NTA6MTMgMTk5NSAgUmljayBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBuZXQuYyBbTElOVVhdIChwcm90b2NvbHMpOiBFeHBsaWNpdGx5IGRlZmluZSBhbGwgSVBQUk9UT18qIGVudHJpZXMKCWJlY2F1c2Ugb24gTGludXggdGhleSBhcmUgZW51bWVyYXRvcnMuCgoJKiBzeXN0ZW0uYyBbTElOVVhdIChtb3VudF9mbGFncyk6IEhhbmRsZSByZW5hbWluZyBvZiBNU19TWU5DIHRvCglNU19TWU5DSFJPTk9VUy4KCgkqIHV0aWwuYyAocHJpbnR4dmFsKTogV2hlbiB0aGVyZSBpcyBubyB0cmFuc2xhdGlvbiwgcHJpbnQgdGhlIGFjdHVhbAoJbnVtYmVyIGZpcnN0IGFuZCB0aGUgdGhlIGRlZmF1bHQgdmFsdWUgYXMgYSBDIGNvbW1lbnQuCgoJKiBuZXQuYyAoc3lzX3NlbmQsIHN5c19zZW5kdG8sIHN5c19zZW5kbXNnLCBzeXNfZ2V0c29ja29wdCwKCXN5c19zZXRzb2Nrb3B0KTogQ2hhbmdlIGZpcnN0IGFyZ3VtZW50IGZyb20gdW5zaWduZWQgdG8gc2lnbmVkIHRvCgljYXRlciB0byB0aGUgZnJlcXVlbnQgcHJhY3RpY2Ugb2YgY2FsbGluZyBzeXN0ZW0gY2FsbHMgd2l0aCBhIGZpbGUKCWRlc2NyaXB0b3Igb2YgLTEuCgkqIG1lbS5jIChzeXNfbW1hcCk6IExpa2V3aXNlLgoKU3VuIE1hciAxOSAxMzo1Mzo1MiAxOTk1ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIHNpZ25hbC5jIFtMSU5VWF0gKHNpZ25hbGVudCk6IEhhbmRsZSBvbGQgYW5kIG5ldyB2YWx1ZXMgb2YgU0lHSU8uCgpTdW4gRGVjIDExIDIyOjUxOjUxIDE5OTQgIFJpY2sgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogdmVyc2lvbi5jOiBWZXJzaW9uIDMuMC4xIGlzIHJlbGVhc2VkLgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLmluLCBhY2xvY2FsLm00OiBDaGFuZ2VzIGZvciBhdXRvY29uZiAyLjAuCgkqIGNvbmZpZy5ndWVzcywgY29uZmlnLmd1ZXNzOiBVcGRhdGUgZnJvbSB0aGUgRlNGLgoJKiBpbnN0YWxsLXNoOiBOZXcgZnJvbSB0aGUgRlNGLgoKTW9uIERlYyAgNSAyMDo1MToyOSAxOTk0ICBSaWNrIFNsYWRrZXkgIDxqcnNAd29ybGQuc3RkLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgbTY4ayBhcmNoLgoJKiBhY2NvbmZpZy5oIChNNjhLKTogQWRkIG02OGsgZGVmaW5lLgoJKiBjb25maWd1cmUuaW46IEFkZCBkZXRlY3Rpb24gb2YgYXJjaCBtNjhrLgoJKiBwcm9jZXNzLmMgW002OEtdIChzdHJ1Y3RfdXNlcl9vZmZzZXRzKTogU3VwcG9ydCBtNjhrIHJlZ2lzdGVycyBhbmQKCW9mZnNldHMuCgkqIHNpZ25hbC5jIFtNNjhLXSAoc2lnY29udGV4dF9zdHJ1Y3QpOiBTdXBwb3J0IG02OGsgc2lnY29udGV4dAoJc3RydWN0dXJlLgoJW002OEtdIChzeXNfc2lncmV0dXJuKTogU3VwcG9ydCBtNjhrIHNpZ3JldHVybiBoYW5kbGluZy4KCSogc3lzY2FsbC5jIFtNNjhLXSAoc3lzY2FsbCk6IFN1cHBvcnQgbTY4ayBzeXNjYWxsIG51bWJlciByZWdpc3RlcgoJYW5kIGVycm5vIGluIGQwIGluc3RlYWQgb2YgZWF4LgoJKiB1dGlsLmMgW002OEtdIChnZXRwYywgcHJpbnRjYWxsLCBzZXRicHQsIGNsZWFyYnB0KTogU3VwcG9ydCBtNjhrCglwcm9ncmFtIGNvdW50ZXIgaW4gUFRfUEMgaW5zdGVhZCBvZiBFSVAuCglbTTY4S10gKExPT1ApOiBTdXBwb3J0IG02OGsgbG9vcCBpbnN0cnVjdGlvbi4KCUZyb20gQW5kcmVhcyBTY2h3YWIgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4uCgoJKiBtZW0uYyBbTUFQX0FOT05ZTU9VU10gKG1tYXBfZmxhZ3MpOiBDb3JyZWN0IGluYWR2ZXJ0ZW50IHJlZmVyZW5jZQoJdG8gTUFQX0ZJWEVEIGluc3RlYWQgb2YgTUFQX0FOT05ZTU9VUy4KCUZyb20gQW5kcmVhcyBTY2h3YWIgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4uCgoJKiBzaWduYWwuYyBbTElOVVhdIChzaWduYWxlbnQpOiBTaWduYWwgMzAgaXMgbm93IFNJR1BXUi4KCUZyb20gQW5kcmVhcyBTY2h3YWIgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4uCgpNb24gRGVjICA1IDAxOjA1OjQ2IDE5OTQgIFJpY2sgU2xhZGtleSAgPGpyc0B3b3JsZC5zdGQuY29tPgoKCSogZGVmcy5oICh0cHJpbnRmKTogRml4IHR5cG8gaW4gbm9uLWdjYyBhbnNpIHByb3RvdHlwZSBmb3IgdHByaW50Zi4KCVJlcG9ydGVkIGJ5IFRoYW5oIE1hIDx0bWFAZW5jb3JlLmNvbT4uCgoJKiBzdHJhY2UuYyAoY2xlYW51cCk6IFNlbmQgU0lHQ09OVCBiZWZvcmUgU0lHVEVSTSBiZWNhdXNlIExpbnV4CgkxLjEuNjIgZG9lc24ndCBjb250aW51ZSBhIHRyYWNlZCBjaGlsZCB3aGVuIHRoZSBwYXJlbnQgZXhpdHMuCglSZXBvcnRlZCBieSBNYXR0IERheSA8bWRheUBhcnRpc29mdC5jb20+LgoKCSogc3lzdGVtLmMgW0xJTlVYXTogSW5jbHVkZSBuZXRpbmV0L2luLmggYmVmb3JlIGFycGEvaW5ldC5oLgoKCSogdXRpbC5jIChwcmludHN0cik6IEZpeCBsb25nc3RhbmRpbmcgYnVnIGluIG5vdGF0aW5nIHN0cmluZwoJY29udGludWF0aW9uLgoKCSogc3RyYWNlLmMgW1NWUjRdIChwcm9jX29wZW4pOiBTcGVjaWZpY2FsbHkgd2FpdCBmb3IgdGhlIGNoaWxkIHRoZQoJY2hpbGQgdG8gZ28gaW50byB0aGUgZXhlY3ZlIHN5c2NhbGwgdG8gYXZvaWQgc3B1cmlvdXMgdHJhY2VzLgoJW0xJTlVYXSAoZGV0YWNoKTogQ29uZGl0aW9uYWxpemUgdGhlIHN0YXR1cyB2YXJpYWJsZS4KClN1biBEZWMgIDQgMjM6MjE6NDIgMTk5NCAgUmljayBTbGFka2V5ICA8anJzQHdvcmxkLnN0ZC5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIG1pcHMgYXJjaC4KCSogYWNjb25maWcuaCAoTUlQUyk6IEFkZCBtaXBzIGRlZmluZS4KCSogY29uZmlndXJlLmluOiBBZGQgZGV0ZWN0aW9uIG9mIG9wc3lzIGlyaXg1IGFuZCBhcmNoIG1pcHMuICBDaGVjawoJZm9yIHByY3RsIGZ1bmN0aW9uLgoJQ2hlY2sgZm9yIHN5cy9zeXNjb25maWcuaCBoZWFkZXIuCgkqIGRlZnMuaCAoTUFYX0FSR1MpOiBCdW1wIG1heGltdW0gc3lzY2FsbCBhcmd1bWVudHMgZnJvbSA4IHRvIDMyLgoJKiBmaWxlLmMgW1NWUjRdOiBJbmNsdWRlIHN5cy9jcmVkLmguCgkoYWNjZXNzX2ZsYWdzKTogVXBkYXRlIGFjY2VzcyBmbGFncyBmb3IgU0dJLgoJKHNwcmludHRpbWUpOiBDaGFuZ2UgdHlwZSBvZiBzcHJpbnR0aW1lIGFyZ3VtZW50IGZyb20gdW5zaWduZWQKCWxvbmcgdG8gdGltZV90LgoJKiBwcm9jZXNzLmMgW0hBVkVfUFJDVExdOiBJbmNsdWRlIHN5cy9wcmN0bC5oLgoJW0hBVkVfUFJDVExdIChwcmN0bF9vcHRpb25zLCBzeXNfcHJjdGwpOiBOZXcgZm9yIFNHSS4KCShwcmludHNpZ2luZm8pOiBDb25kaXRpb25hbGx5IGNvbXBpbGUgU0lfVElNRVIgYW5kIFNJX01FU0dRLgoJQ2FzdCBzaV9iYW5kIG1lbWJlciB0byBsb25nIGJlZm9yZSBwcmludGluZy4KCSogc2lnbmFsLmMgKHNpZ2FjdF9mbGFncyk6IEFkZCBfU0FfQlNEQ0FMTCBmb3IgU0dJLgoJKHNpZ3Byb2NtYXNrY21kcyk6IEFkZCBTSUdfU0VUTUFTSzMyIGZvciBTR0kuCgkqIHN0cmFjZS5jIFtTVlI0XSBbTUlQU106CgkoZm9vYmFyKTogTmV3IGR1bW15IHNpZ25hbCBoYW5kbGVyLgoJKG1haW4pOiBJbnN0YWxsIGEgZHVtbXkgc2lnbmFsIGhhbmRsZXIgaW4gdGhlIGNoaWxkIGJlZm9yZSBwYXVzaW5nCgl0byB3b3JrIGFyb3VuZCBhbiBTR0kgYnVnIGluIFBSU0FCT1JULgoJKHByb2Nfb3Blbik6IFNlbmQgYSBpbnRlcnJ1cHQgdG8gdGhlIGNoaWxkIGluc3RlYWQgb2YgYWJvcnRpbmcgdGhlCglzeXNjYWxsIHdoaWNoIGRvZXNuJ3Qgd29yayBvbiBJcml4NS4yLgoJKiBzdnI0L2R1bW15Lmg6IEFkZCBuZXcgdW5maW5pc2hlZCBTR0kgc3lzY2FsbHMKCShlLmcuIHN5c19zeXNtcCwgc3lzX3NnaW5hcCwgZXRjLikuICBIYW5kbGUgc29tZSBTR0kgc3lzY2FsbHMgbGlrZQoJZXhpc3RpbmcgY2FsbHMgKGUuZy4gc3lzX2tzaWdhY3Rpb24gbGlrZSBzeXNfc2lnYWN0aW9uKS4KCVByaW50YXJncyBkb2VzIHRoZSBwcmludCB0aGluZyBmb3Igc3lzX3NldGhvc3RpZC4KCSogc3ZyNC9zeXNjYWxsLmg6IERlY2xhcmUgYWxsIG5ldyBTR0kgc3lzY2FsbHMuCgkoU0dJX0tMVURHRSk6IERlZmluZSBzeXNjYWxsIHRhYmxlIHN0YXJ0aW5nIGluZGV4IHRvIGJlIDEgZm9yIFNHSQoJYW5kIGFkZCBpdCB0byBhbGwgc3ViY2FsbCBlbnRyeSBwb2ludHMuCgkoU1lTX3BncnBzeXNfc3ViY2FsbCwgU1lTX3NpZ2NhbGxfc3ViY2FsbCwgU1lTX2NvbnRleHQpOiBEb24ndAoJZGVjb2RlIGFzIHN1YmNhbGxzIG9uIE1JUFMuIEluc3RlYWQsIHVzZSB0aGUgbm9ybWFsIHN5c2NhbGxzLgoJKiBzdnI0L3N5c2NhbGxlbnQuaCBbTUlQU106IExlYWQgc3lzY2FsbCB0YWJsZSB3aXRoIGEgZHVtbXkgZW50cnkKCXNpbmNlIFNHSSBzeXNjYWxsIG51bWJlcnMgYXJlIG9mZiBieSBvbmUuCglbTUlQU10gKHN5c19wZ3Jwc3lzKTogUmVuYW1lIHRvIHN5c19zZXRwZ3JwIG9uIFNHSS4KCVtNSVBTXSAoc3lzX3hlbml4KTogUmVuYW1lIHRvIHN5c19zeXNzZ2kgb24gU0dJLgoJW01JUFNdIChzeXNfc3lzbWFjaGluZSk6IFJlbmFtZSB0byBzeXNfc3lzbWlwcyBvbiBTR0kuCglbTUlQU106IENvbmRpdGlvbmFsaXplIFNWUjQgZXh0ZW5zaW9uIGludG8gU0dJIGFuZCBTb2xhcmlzIGNsYXNzZXMuCgkqIHN5c2NhbGwuYyAoZHVtcGlvKTogVmFsaWRhdGUgZGVzY3JpcHRvciBhZ2FpbnN0IE1BWF9RVUFMUy4KCVtIQVZFX1BSX1NZU0NBTExdIChzeXNjYWxsKTogQ29uZGl0aW9uYWxpemUgU1lTX3Zmb3JrLgoJW01JUFNdIChzeXNjYWxsKTogQWRkIFNHSSBzZWN0aW9uIGZvciBkZWNvZGluZyB1X2Vycm9yIGFuZCB1X3J2YWwuCglBZGQgd29ya2Fyb3VuZCBmb3IgYnJva2VuIFNHSSBwcl9zeXNhcmcgb24gc3lzY2FsbCBlbnRyeS4KCVtTVlI0XSAoc3lzY2FsbCk6IENvbmRpdGlvbmFsaXplIHN1YmNhbGwgZGVjb2RpbmcgZm9yCglTWVNfcHRycHN5c19zdWJjYWxsLCBTWVNfc2lnY2FsbF9zdWJjYWxsIGFuZCBTWVNfY29udGV4dF9zdWJjYWxsLgoJW1NWUjRdIFtNSVBTXSAoZ2V0cnZhbDIpOiBIYW5kbGUgU0dJLgoJKiBzeXNjYWxsZW50LnNoOiBEb3JrIHRoZSBzZWQgbGluZSB0byBiZSBjaG9vc2llciBhYm91dCBTWVNfIGxpbmVzLgoJKiBzeXN0ZW0uYyBbSEFWRV9TWVNDT05GSUdfSF06IEluY2x1ZGUgc3lzL3N5c2NvbmZpZy5oLgoJW01JUFNdIChzeXNzZ2lfb3B0aW9ucywgc3lzX3N5c3NnaSk6IE5ldyBmb3IgU0dJLgo=