MjAwMi0wOS0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYveDg2LTY0Lmg6IEFkZCBUTFMgcmVsb2NzLgoKMjAwMi0wOS0yNiAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiByZWdzLzogRGVsZXRlIGRpcmVjdG9yeS4KCjIwMDItMDktMTkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbGliaWJlcnR5LmggKGFzcHJpbnRmLCB2YXNwcmludGYpOiBEb24ndCBkZWNsYXJlIHRoZW0gaWYgdGhlCgljb3JyZXNwb25kaW5nIEhBVkVfREVDTF8gbWFjcm8gaXMgMS4KCjIwMDItMDktMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmL2kzODYuaCAoUl8zODZfVExTX1RQT0ZGLCBSXzM4Nl9UTFNfSUUsIFJfMzg2X1RMU19HT1RJRSk6CglEZWZpbmUuCgoyMDAyLTA5LTE5ICBOYXRoYW4gVGFsbGVudCAgPGVyYXh4b25AYWx1bW5pLnJpY2UuZWR1PgoKCSogZGlzLWFzbS5oOiBSZW1vdmUgKGVycmFudCkgdHJhaWxpbmcgc2VtaWNvbG9uICg7KSBmcm9tIHRoZQoJZXh0ZXJuICJDIiB7IH0gZGVjbGFyYXRpb24uCgoyMDAyLTA5LTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9wcGNfZGlzYXNzZW1ibGVyX29wdGlvbnMpOiBQcm90b3R5cGUuCgoyMDAyLTA4LTI4ICBNaWNoYWVsIEhheWVzIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIGNvZmYvaW50ZXJuYWwuaDogQWRkIG5ldyByZWxvY2F0aW9uIHR5cGVzLgoJKiBjb2ZmL3RpLmg6IEFkZCBmaWxlLWhlYWRlciBmbGFncyBmb3IgdGljNHggY29kZS4KCSogZGlzLWFzbS5oOiBBZGQgc3RhbmRhcmQgZGlzYXNzZW1ibGVyIGZvciB0aWM0eC4KCSogb3Bjb2RlL3RpYzR4Lmg6IE5ldyBmaWxlLgoJKiBjb2ZmL3RpYzR4Lmg6IE5ldyBmaWxlCgoyMDAyLTA4LTA3ICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaW5mbyk6IEFkZCBhbGxvd191bmRlZmluZWRfdmVyc2lvbi4KCShiZmRfZWxmX3ZlcnNpb25fZXhwcik6IEFkZCBzeW12ZXIgYW5kIHNjcmlwdC4KCjIwMDItMDctMzEgIElhbiBEYWxsICA8aWFuQHNpYnlsLmJld2FyZS5kcm9wYmVhci5pZC5hdT4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfY29tbW9uX3NraXBfYXJfc3ltYm9scyk6IE5ldyBlbnVtLgoJKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCAnY29tbW9uX3NraXBfYXJfc3ltYm9scycuCgoyMDAyLTA3LTI1ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBvcGNvZGUvbWlwcy5oIChDUFVfUjIwMDApOiBSZW1vdmUuCgoyMDAyLTA3LTE5ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoJICAgIE1hdHRoZXcgR3JlZW4gIDxtcmdAcmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pcDJrKTogRGVjbGFyZS4KCjIwMDItMDctMTAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmL2NvbW1vbi5oIChTSFRfR05VX0xJQkxJU1QsIERUX0dOVV9QUkVMSU5LRUQsCglEVF9HTlVfQ09ORkxJQ1QqLCBEVF9HTlVfTElCTElTVCopOiBEZWZpbmUuCgoyMDAyLTA3LTAxICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX3N5bV9jaGFpbik6IERlY2xhcmUuCgkoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgZ2Nfc3ltX2xpc3QuICBGb3JtYXR0aW5nIGZpeGVzLgoKMjAwMi0wNi0yNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGRlbWFuZ2xlLmg6ICNpbmNsdWRlICJhbnNpZGVjbC5oIiByYXRoZXIgdGhhbiAjaW5jbHVkZSA8YW5zaWRlY2wuaD4uCgkqIGZpYmhlYXAuaDogTGlrZXdpc2UuCgkqIGhhc2h0YWIuaDogTGlrZXdpc2UuCgkqIHBhcnRpdGlvbi5oOiBMaWtld2lzZS4KCSogc29ydC5oOiBMaWtld2lzZS4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KCjIwMDItMDYtMjQgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBEb24ndCBkZWNsYXJlIGlmIEhBVkVfREVDTF9CQVNFTkFNRS4KCSogZ2V0b3B0LmggKGdldG9wdCk6IERvbid0IGRlY2xhcmUgaWYgSEFWRV9ERUNMX0dFVE9QVC4KCjIwMDItMDYtMTggIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAcmVkaGF0LmNvbT4KCglGcm9tIENhdGhlcmluZSBNb29yZToKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2Zydik6IE5ldyBwcm90b3R5cGUuCgoyMDAyLTA2LTA5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QHJlZGhhdC5jb20+CgoJKiByZW1vdGUtc2ltLmg6IE1vdmUgdG8gZGlyZWN0b3J5IGdkYi8uCgkqIGNhbGxiYWNrLmg6IE1vdmUgdG8gZGlyZWN0b3J5IGdkYi8uCgoyMDAyLTA2LTA3ICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQ2hhbmdlIHR5cGUgb2YKCXBlaTM4Nl9hdXRvX2ltcG9ydCBmaWVsZCB0byBpbnQgc28gdGhhdCAtMSBjYW4gbWVhbiBlbmFibGVkIGJ5CglkZWZhdWx0IGFuZCAxIGNhbiBtZWFuIGVuYWJsZWQgYnkgY29tbWFuZCBsaW5lIHN3aXRjaC4KCjIwMDItMDYtMDYgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChodGFiKTogUmVhcnJhbmdlIG5ldyBtZW1iZXJzIGZvciBiYWNrd2FyZAoJY29tcGF0aWJpbGl0eS4KCShodGFiX2NyZWF0ZSk6IERvbid0IHVzZSBhIG1hY3JvIHRoYXQgcmVxdWlyZXMgb3RoZXIgaGVhZGVycy4KCjIwMDItMDYtMDUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuaCAoaHRhYl9jcmVhdGUpOiBSZXN0b3JlIHByb3RvdHlwZSBmb3IgYmFja3dhcmQKCWNvbXBhdGliaWxpdHkuCgkoaHRhYl90cnlfY3JlYXRlKTogTGlrZXdpc2UuCgoyMDAyLTA1LTIyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmggKHN0cnVjdCBodGFiKTogVXBkYXRlIGZvciBjaGFuZ2UgdG8gbGVuZ3RoIHNwZWNpZmllci4KCjIwMDItMDUtMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuaCAoR1RZKTogRGVmaW5lIGlmIHVuZGVmaW5lZC4KCShodGFiX2FsbG9jKTogTmV3IHR5cGVkZWYuCgkoaHRhYl9mcmVlKTogTmV3IHR5cGVkZWYuCgkoc3RydWN0IGh0YWIpOiBTdXBwb3J0IGdlbmd0eXBlOyBhbGxvdyB1c2VyLXNwZWNpZmllZCBtZW1vcnkKCWFsbG9jYXRpb24uCgkoaHRhYl9jcmVhdGVfYWxsb2MpOiBOZXcuCgkoaHRhYl9jcmVhdGUpOiBSZXBsYWNlIHdpdGggI2RlZmluZS4KCShodGFiX3RyeV9jcmVhdGUpOiBEZWxldGUuCgoyMDAyLTA1LTMxICBNaWNoYWwgTHVkdmlnICA8bWx1ZHZpZ0BzdXNlLmN6PgoKCSogZWxmL2R3YXJmMi5oIChEV19DRkFfbG93X3VzZXIsIERXX0NGQV9oaWdoX3VzZXIpOiBSZW5hbWVkCgl0byBEV19DRkFfbG9fdXNlciwgRFdfQ0ZBX2hpX3VzZXIgcmVzcGVjdGl2ZWx5LgoJCjIwMDItMDUtMjggIEt1YW5nIEh3YSBMaW4gPGt1YW5nQHNiY2dsb2JhbC5uZXQ+CgoJKiBkaXMtYXNtLmg6IFByb3RvdHlwZSBwcmludF9pbnNuX2RseC4KCjIwMDItMDUtMjMgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogc2ltLWQxMHYuaDogRGVsZXRlIGZpbGUuICBNb3ZlZCB0byBpbmNsdWRlL2dkYi8uCgoyMDAyLTA1LTIzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZi9jb21tb24uaCAoUFRfVExTLCBTSEZfVExTLCBTVFRfVExTLCBERl9TVEFUSUNfVExTKTogRGVmaW5lLgoJKiBlbGYvaWE2NC5oIChSX0lBNjRfTFRPRkZfVFBSRUwyMik6IFJlbmFtZWQgZnJvbSBSX0lBNjRfTFRPRkZfVFAyMi4KCSogZWxmL2kzODYuaDogQWRkIFRMUyByZWxvY3MuCgoyMDAyLTA1LTIxICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2luZm8pOiBBZGQgYWxsb3dfbXVsdGlwbGVfZGVmaW5pdGlvbi4KCjIwMDItMDUtMTcgIEoib3JuIFJlbm5lY2tlIDxqb2Vybi5yZW5uZWNrZUBzdXBlcmguY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NobCwgcHJpbnRfaW5zbl9zaDY0bCk6IFJlbW92ZSBwcm90b3R5cGUuCgoyMDAyLTA0LTE2ICBEYXZpZCBTLiBNaWxsZXIgIDxkYXZlbUByZWRoYXQuY29tPgoKCSogeHJlZ2V4Mi5oIChfX3Jlc3RyaWN0X2Fycik6IERlZmluZSB0byBfX3Jlc3RyaWN0IG9uIEdDQwoJMy4xIGFuZCBsYXRlci4gIERvIG5vdCByZWRlZmluZS4KCjIwMDItMDQtMDEgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGR5bi1zdHJpbmcuaDogIEFsc28gYWxsb3cgSU5fR0xJQkNQUF9WMyB0byByZWRlZmluZSBuYW1lcy4KCjIwMDItMDMtMTAgIERhbmllbCBKYWNvYm93aXR6IDxkcm93QG12aXN0YS5jb20+CgoJKiBnZGI6IE5ldyBkaXJlY3RvcnkuCgoyMDAyLTAzLTA2ICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2FybV9leHQpOiBEZWxldGUgZGVjbGFyYXRpb24uCgoyMDAyLTAyLTIxICBKaW0gQmxhbmR5ICA8amltYkByZWRoYXQuY29tPgoKCUFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgZnVuY3Rpb25zIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IKCXNwbGF5IHRyZWUgcm9vdHMgYW5kIG5vZGVzLgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfYWxsb2NhdGVfZm4sIHNwbGF5X3RyZWVfZGVhbGxvY2F0ZV9mbik6CglOZXcgdHlwZXMuCgkoc3BsYXlfdHJlZSk6IE5ldyBmaWVsZHM6IGBhbGxvY2F0ZScsIGBkZWFsbG9jYXRlJywgYW5kCglgYWxsb2NhdGVfZGF0YScuCgkoc3BsYXlfdHJlZV9uZXdfd2l0aF9hbGxvY2F0b3IpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoyMDAyLTAyLTE1ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCVN1cHBvcnQgYXJiaXRyYXJ5IGxlbmd0aCBmaWxsIHBhdHRlcm5zLgoJKiBiZmRsaW5rLmggKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IFJlbW92ZSBiZmRfZmlsbF9saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IFJlbW92ZSBmaWxsLiAgQWRkIGRhdGEuc2l6ZS4KCjIwMDItMDItMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCUNvbnRyaWJ1dGUgc2g2NC1lbGYuCgkyMDAwLTExLTI1ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocG5AY3lnbnVzLmNvbT4KCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NoNjQpOiBOZXcgcHJvdG90eXBlLgoJKHByaW50X2luc25fc2g2NGwpOiBOZXcgcHJvdG90eXBlLgoJKHByaW50X2luc25fc2g2NHhfbWVkaWEpOiBOZXcgcHJvdG90eXBlLgoKMjAwMi0wMi0wNSAgRnJhbmsgQ2guIEVpZ2xlciAgPGZjaGVAcmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBmaWVsZCBgaW5zbl9zZXRzJy4KCShJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBDbGVhciBpdC4KCjIwMDItMDItMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfdjMpOiBBZGQgIm9wdGlvbnMiIHBhcm0uCgkoY3BsdXNfZGVtYW5nbGVfdjNfdHlwZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkoRE1HTF9WRVJCT1NFKTogTmV3IG1hY3JvLgoJKERNR0xfVFlQRVMpOiBOZXcgbWFjcm8uCgoyMDAyLTAyLTAyICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV92M190eXBlKTogTmV3IHByb3RvdHlwZS4KCjIwMDItMDEtMzEgIEl2YW4gR3V6dmluZWMgIDxpdmFuZ0BvcGVuY29yZXMub3JnPgoKCSogZGlzLWFzbS5oIDogQWRkIHN1cHBvcnQgZm9yIG9yMzIgdGFyZ2V0cwoKMjAwMi0wMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKENfYWxsb2NhKTogQWRkIEFUVFJJQlVURV9NQUxMT0MuCgoyMDAyLTAxLTI3ICBEYXZpZCBPJ0JyaWVuICA8b2JyaWVuQEZyZWVCU0Qub3JnPgoKCSogY2dlbi5oIChCRkRfVkVSU0lPTik6IFVzZSBCRkRfVkVSU0lPTl9EQVRFIGluc3RlYWQuCgoyMDAxLTEyLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXNlIHRoZQoJZGlzYXNzZW1ibGVyX29wdGlvbnMgZmllbGQgKHRvIE5VTEwpLgoKMjAwMS0xMi0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIGVoX2ZyYW1lX2hkciBmaWVsZC4KCjIwMDEtMTItMDcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl94c3Rvcm15MTYpOiBEZWNsYXJlLgoKMjAwMS0xMi0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmggKG5vX2RlbWFuZ2xpbmcpOiBOZXcuCgkoTk9fREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBOZXcuCgoyMDAxLTExLTE0ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2kzODYpOiBEZWNsYXJlLgoKMjAwMS0xMS0xMSAgVGltb3RoeSBXYWxsICA8dHdhbGxAYWx1bS5taXQuZWR1PgoKCSogZGlzLWFzbS5oOiBGaXggY29tbWVudCB0byByZWZlciB0byBvY3RldHMgcmF0aGVyIHRoYW4gYnl0ZXMuCgoyMDAxLTEwLTMwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbW1peCk6IEFkZCBwcm90b3R5cGUuCgoyMDAxLTEwLTI0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBzYWZlLWN0eXBlLmggKF9zY2hfaXNiYXNpYywgSVNfSVNPQkFTSUMpOiBOZXcuCgoyMDAxLTEwLTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoaGV4X2luaXQpOiBSZXZlcnQgZGVsZXRlLgoKCSogbGliaWJlcnR5LmggKF9oZXhfdmFsdWUpOiBDb25zdC1pZnkuCgkoaGV4X2luaXQpOiBEZWxldGUuCgoyMDAxLTEwLTE2ICBDaHJpc3RvcGhlciBGYXlsb3IgIDxjZ2ZAcmVkaGF0LmNvbT4KCgkqIGZpbGVuYW1lcy5oOiBBZGQgY3lnd2luIHRvIHRoZSBsaXN0IG9mIGRvc2lzaCBzdHlsZSBwYXRoIHN5c3RlbXMuCgoyMDAxLTEwLTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oIChkZW1hbmdsZXJfZW5naW5lKTogQ29uc3QtaWZ5LgoJKiBsaWJpYmVydHkuaCAoYnVpbGRhcmd2KTogTGlrZXdpc2UuCgoyMDAxLTEwLTAzICBWYXNzaWxpIEthcnBvdiAgPG1hbGNAcHVsc2Vzb2Z0LmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbm9jb3B5cmVsb2MgZmllbGQuCgoyMDAxLTA5LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAocmVjb25jYXQpOiBOZXcgZnVuY3Rpb24uCgoyMDAxLTA5LTE4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoY29uY2F0LCBjb25jYXRfbGVuZ3RoLCBjb25jYXRfY29weSwgY29uY2F0X2NvcHkyLAoJQUNPTkNBVCk6IEltcHJvdmUgY29tbWVudHMuCgoyMDAxLTA5LTE4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogb2JqYWxsb2MuaCAoT0JKQUxMT0NfQUxJR04pOiBEZWZpbmUgdXNpbmcgb2Zmc2V0b2YuCgoyMDAxLTA5LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoY29uY2F0X2xlbmd0aCwgY29uY2F0X2NvcHksIGNvbmNhdF9jb3B5MiwKCWxpYmliZXJ0eV9jb25jYXRfcHRyLCBBQ09OQ0FUKTogTmV3LgoKCSogbGliaWJlcnR5LmggKEFTVFJEVVApOiBOZXcgbWFjcm8uCglsaWJpYmVydHlfb3B0ciwgbGliaWJlcnR5X25wdHIsIGxpYmliZXJ0eV9sZW4pOiBEZWNsYXJlLgoKMjAwMS0wOC0yOSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaDogVXBkYXRlIGNvbW1lbnRzIHJlZmxlY3RpbmcgcHJldmlvdXMgY2hhbmdlLgoKMjAwMS0wOC0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoVkFfT1BFTiwgVkFfQ0xPU0UpOiBBbGxvdyBtdWx0aXBsZSB1c2VzLgoKMjAwMS0wOC0yNSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQ2hhbmdlICdzcGFyZV9keW5hbWljX3RhZ3MnIHRvCgl1bnNpZ25lZCB0byByZW1vdmUgYSBjb21waWxlIHRpbWUgd2FybmluZyBtZXNzYWdlLgoKMjAwMS0wOC0yNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogYmZkbGluay5oIChiZmRfbGlua19oYXNoX3RhYmxlX3R5cGUpOiBOZXcuIFRoZSBsaW5rZXIgaGFzaAoJdGFibGUgdHlwZSwgYmZkX2xpbmtfZ2VuZXJpY19oYXNoX3RhYmxlIGFuZAoJYmZkX2xpbmtfZWxmX2hhc2hfdGFibGUuCgkoYmZkX2xpbmtfaGFzaF90YWJsZSk6IEFkZCBhIG5ldyBmaWVsZCwgdHlwZSwgZm9yIHRoZSBsaW5rZXIKCWhhc2ggdGFibGUgdHlwZS4KCjIwMDEtMDgtMjMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBjb21icmVsb2MgYW5kCglzcGFyZV9keW5hbWljX3RhZ3MgZmllbGRzLgoKMjAwMS0wOC0yMyAgTGFycyBCcmlua2hvZmYgIDxsYXJzQG5vY3Jldy5vcmc+CgoJKiBkeW4tc3RyaW5nLmgsIGZpYmhlYXAuaCwgcGFydGl0aW9uLmgsIHNvcnQuaCwgc3BsYXktdHJlZS5oOgoJcmVwbGFjZSAiR05VIENDIiB3aXRoICJHQ0MiLgoKMjAwMS0wOC0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGZpYmhlYXAuaDogVGlkeSBmb3JtYXR0aW5nLgoJKGZpYm5vZGVfdCk6IExpbWl0IGRlZ3JlZSB0byAzMSBiaXRzIHRvIGF2b2lkIHdhcm5pbmcuCgoyMDAxLTA4LTIwICBEYW5pZWwgQmVybGluICA8ZGFuQGNnc29mdHdhcmUuY29tPgoKCSogZmliaGVhcC5oOiBOZXcgZmlsZS4gRmlib25hY2NpIGhlYXAuCgoyMDAxLTA4LTIwICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2FybV9leHQpOiBEb2N1bWVudCBhcyBkZXByZWNhdGVkLgoJKGZsb2F0Zm9ybWF0X2FybV9leHRfYmlnLCBmbG9hdGZvcm1hdF9hcm1fZXh0X2xpdHRsZWJ5dGVfYmlnd29yZCkKCShmbG9hdGZvcm1hdF9pYTY0X3NwaWxsX2xpdHRsZSwgZmxvYXRmb3JtYXRfaWE2NF9xdWFkX2xpdHRsZSkKCShmbG9hdGZvcm1hdF9pYTY0X3NwaWxsX2JpZywgZmxvYXRmb3JtYXRfaWE2NF9xdWFkX2JpZykKCShmbG9hdGZvcm1hdF9tODgxMTBfaGFycmlzX2V4dCk6IERlY2xhcmUuCgoyMDAxLTA4LTE4ICBaYWNrIFdlaW5iZXJnICA8emFja3dAcGFuaXguY29tPgoKCSogYW5zaWRlY2wuaDogUmVvcmdhbml6ZSBmb3IgcmVhZGFiaWxpdHksIHJlbW92ZSBkb2N1bWVudGF0aW9uCglvZiBvYnNvbGV0ZSBtYWNyb3MsIGRvY3VtZW50IFBBUkFNUyBhbmQgVlBBUkFNUy4gIEFkZCBuZXcKCW1hY3JvcyBWQV9PUEVOLCBWQV9DTE9TRSwgYW5kIFZBX0ZJWEVEQVJHIGZvciBuaWNlciB2YXJpYWRpYwoJZnVuY3Rpb24gaW1wbGVtZW50YXRpb24uCgoyMDAxLTA4LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5oIChodGFiX2hhc2hfc3RyaW5nKTogRGVjbGFyZS4KCjIwMDEtMDgtMTAgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogbGliaWJlcnR5LmggKGxiYXNlbmFtZSk6IENoYW5nZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiB0byByZXR1cm4gYQoJY29uc3QgY2hhciBwb2ludGVyLgoKMjAwMS0wOC0wMiAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgoJKiB4cmVnZXguaCAoX1JFR0VYX1JFX0NPTVApOiBEZWZpbmUuCgkocmVfY29tcCk6IERlZmluZSB0byB4cmVfY29tcC4KCShyZV9leGVjKTogRGVmaW5lIHRvIHhyZV9leGVjLgoKMjAwMS0wOC0wMiAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKICAgICAgICAqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBhZGQgbmV3IGJvb2xlYW4KICAgICAgICBmaWVsZCBwZWkzODZfYXV0b19pbXBvcnQuCgoyMDAxLTA3LTE4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB4cmVnZXgyLmg6IFBsYWNlIHVuZGVyIExHUEwgdmVyc2lvbiAyLjEuCgoyMDAxLTA3LTEwICBKZWZmIEpvaG5zdG9uICA8ampvaG5zdG5AcmVkaGF0LmNvbT4KCgkqIHhyZWdleC5oOiBOZXcgZmlsZSB0byBzdXBwb3J0IGxpYmliZXJ0eSByZWdleC4KCSogeHJlZ2V4Mi5oOiBEaXR0by4KCjIwMDEtMDYtMTUgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IE5ldyBtZW1iZXIgZXhwb3J0X2R5bmFtaWMuCgoyMDAxLTA1LTE2ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNhcm5lZ2llbWVsbG9uLmVkdT4KCgkqIHBhcnRpdGlvbi5oOiBGaXggbWlzc3BlbGxpbmcgb2YgYGltcGxlbWVudGF0aW9uJy4KCjIwMDEtMDUtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKE5VTExfUFRSKTogRGVsZXRlLgoKMjAwMS0wNS0wNyAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGRlbWFuZ2xlLmg6IFVzZSBQQVJBTVMgZm9yIGFsbCBwcm90b3R5cGVzLgoJKiB0ZXJuYXJ5Lmg6IFVzZSBQQVJBTVMgZm9yIGFsbCBwcm90b3R5cGVzLiAgVXNlIFBUUiwgbm90IHZvaWQgKi4KCU1ha2UgYXJndW1lbnRzIGNvbnN0YW50IHdoZXJlIHBvc3NpYmxlLgoKMjAwMS0wNS0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9tYXgpOiBOZXcgZnVuY3Rpb24uCgkoc3BsYXlfdHJlZV9taW4pOiBMaWtld2lzZS4KCjIwMDEtMDQtMjcgIEpvaGFuIFJ5ZGJlcmcgIDxqcnlkYmVyZ0BvcGVuY29yZXMub3JnPgoKICAgICAgICAqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9vcGVucmlzYyk6IEFkZCBwcm90b3R5cGUuCgoyMDAxLTA0LTE1ICBEYW5pZWwgQmVybGluICA8ZGFuQGNnc29mdHdhcmUuY29tPgoKCSogdGVybmFyeS5oOiBOZXcgZmlsZSAtIFRlcm5hcnkgc2VhcmNoIHRyZWUgaGVhZGVyLgoKMjAwMS0wNC0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2Rpc2NhcmQpOiBBZGQgZGlzY2FyZF9zZWNfbWVyZ2UuCgoyMDAxLTA0LTAzICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogYW5zaWRlY2wuaDogQWxsIGxvZ2ljIGZyb20gZ2NjL2dhbnNpZGVjbC5oIG1vdmVkIGhlcmUuCgoyMDAxLTAzLTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoYWxsb2NhKTogSGFuZGxlIHNldHRpbmcgQ19BTExPQ0EuCgoyMDAxLTAzLTIwICBKaW0gQmxhbmR5ICA8amltYkByZWRoYXQuY29tPgoKCSogZGVtYW5nbGUuaCAoZW51bSBnbnVfdjNfY29uc3RydWN0b3Jfa2luZHMsCglpc19nbnVfdjNfbWFuZ2xlZF9jdG9yLCBlbnVtIGdudV92M19kZXN0cnVjdG9yX2tpbmRzLAoJaXNfZ251X3YzX21hbmdsZWRfZHRvcik6IE5ldyBkZWNsYXJhdGlvbnMuCgoyMDAxLTAzLTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogYW5zaWRlY2wuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogZGVtYW5nbGUuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogZmxvYXRmb3JtYXQuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogZm5tYXRjaC5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBnZXRvcHQuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogbGliaWJlcnR5Lmg6IEFkZCBGU0YgY29weXJpZ2h0IG5vdGljZS4KCSogbWQ1Lmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIG9ic3RhY2suaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogc3BsYXktdHJlZS5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoKMjAwMS0wMy0xMCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBsaWJpYmVydHkuaDogQWRkIGxiYXNlbmFtZS4KCjIwMDEtMDMtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBsaWJpYmVydHkuaDogUHJvdG90eXBlIENfYWxsb2NhOyBkZWZpbmUgYWxsb2NhIHRvIGVpdGhlcgoJX19idWlsdGluX2FsbG9jYSBvciBDX2FsbG9jYSBhcyBhcHByb3ByaWF0ZS4KCjIwMDEtMDMtMDEgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBzYWZlLWN0eXBlLmggKF9zY2hfdGVzdCk6IENhc3QgZW51bSBiaXQgdG8gdW5zaWduZWQgc2hvcnQgaW50IGZvciBwY2MKCWNvbXBhdGliaWxpdHkuCgoyMDAxLTAyLTE4ICBsYXJzIGJyaW5raG9mZiAgPGxhcnNAbm9jcmV3Lm9yZz4KCgkqIGRpcy1hc20uaDogQWRkIFBEUC0xMSB0YXJnZXQuCgoyMDAxLTAyLTA5ICBNYXJ0aW4gU2Nod2lkZWZza3kgIDxzY2h3aWRlZnNreUBkZS5pYm0uY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgbGludXggdGFyZ2V0IGZvciBTLzM5MC4KCjIwMDEtMDEtMTEgIFBldGVyIFRhcmdldHQgIDxwZXRlci50YXJnZXR0QGFyY2NvcmVzLmNvbT4KCgkqIGRpcy1hc20uaCAoYXJjX2dldF9kaXNhc3NlbWJsZXIpOiBDb3JyZWN0IGRlY2xhcmF0aW9uLgoKMjAwMS0wMS0wOSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGJpbi1idWdzLmggKFJFUE9SVF9CVUdTX1RPKTogU2V0IHRvIGBidWctYmludXRpbHNAZ251Lm9yZycuCgoyMDAwLTEyLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBDT1BZSU5HOiBVcGRhdGUgdG8gY3VycmVudAoJZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9MaWNlbnNlcy9DT1BZSU5HLTIuMCAoZml4ZXMgcmVmZXJlbmNlcwoJdG8gMTl5eSBhcyBleGFtcGxlIHllYXIgaW4gY29weXJpZ2h0IG5vdGljZSkuCgoyMDAwLTEyLTE5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IG1lbWJlciAic2VjdGlvbiIuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplIHByaXZhdGVfZGF0YSBtZW1iZXIuCglJbml0aWFsaXplIHNlY3Rpb24gbWVtYmVyLgoKMjAwMC0xMi0xNiAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSAgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBzYWZlLWN0eXBlLmg6IE1ha2UgY29kZSB3b3JrIG9uIGFsbCB0YXJnZXRzIGFuZCBub3QganVzdCBvbgoJdGFyZ2V0cyB3aGVyZSBhIGNoYXIgaXMgOCBiaXRzLgoKMjAwMC0xMi0xMCAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGFsbG93X3NobGliX3VuZGVmaW5lZAoJbWVtYmVyIHRvIHN0cnVjdCBmb3Igc3lzdGVtcyB3aGVyZSBpdCBpcyBub3JtYWwgdG8gaGF2ZSB1bmRlZmluZWQKCXN5bWJvbHMgaW4gc2hhcmVkIGxpYnJhcmllcyBhdCBydW50aW1lIGFuZCB0aGUgcnVudGltZSBsaW5rZXIKCXRha2VzIGNhcmUgb2YgcmVkaXJlY3RpbmcgdGhlbS4KCjIwMDAtMTItMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBzYWZlLWN0eXBlLmg6IE5ldyBmaWxlLgoKMjAwMC0xMi0wNiAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AbXluZC5jb20+CgoJKiBnZXRvcHQuaCBvYnN0YWNrLmg6IFN0YW5kYXJpemUgY29weXJpZ2h0IHN0YXRlbWVudC4KCjIwMDAtMTItMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oOiBDaGFuZ2UgIm5ld19hYmkiIHRvICJ2MyIgZXZlcnl3aGVyZS4KCjIwMDAtMTEtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBsaWJpYmVydHkuaDogTW92ZSAjaW5jbHVkZXMgdG8gdG9wLiAgUHJvdG90eXBlIHhtYWxsb2NfZmFpbGVkLgoKMjAwMC0xMS0xNSAgS2VubmV0aCBCbG9jayAgPGtlbm5ldGguYmxvY2tAY29tcGFxLmNvbT4KCgkqIGRlbWFuZ2xlLmg6IEFkZCBnbmF0IGFuZCBqYXZhIGRlbWFuZ2xlIHN0eWxlcy4KCjIwMDAtMTEtMDQgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGhhc2h0YWIuaCAoc3RydWN0IGh0YWIpOiBBZGQgbWVtYmVyIHJldHVybl9hbGxvY2F0aW9uX2ZhaWx1cmUuCgkoaHRhYl90cnlfY3JlYXRlKTogTmV3IHByb3RvdHlwZS4gIE1lbnRpb24gd2hpY2ggZnVuY3Rpb25zIG1heQoJcmV0dXJuIE5VTEwgd2hlbiB0aGlzIGlzIHVzZWQuCgoyMDAwLTExLTAzICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBoYXNodGFiLmg6IENoYW5nZSB2b2lkICogdG8gUFRSIHdoZXJlIG5lY2Vzc2FyeS4KCjIwMDAtMTAtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfcHJlZGVjZXNzb3IpOiBEZWNsYXJlLgoKMjAwMC0wOS0yOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBkaXMtYXNtLmg6IERlY2xhcmUgY3Jpc19nZXRfZGlzYXNzZW1ibGVyLCBub3QgcHJpbnRfaW5zbl9jcmlzLgoJRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDAtMDktMjggIEpvaG4gRGF2aWQgQW5nbGluIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGFsbG9jYS1jb25mLmg6IE5ldyBmaWxlIChjb3BpZWQgZnJvbSBsaWJpYmVydHkpLgoKMjAwMC0wOS0wNSAgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogbWQ1LmggKG1kNV91aW50MzIpOiBDaG9vc2UgdmlhIElOVF9NQVggaW5zdGVhZCBvZiBVSU5UX01BWC4KCjIwMDAtMDktMDQgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkeW4tc3RyaW5nLmg6IEFkanVzdCBmb3JtYXR0aW5nLgoJKGR5bl9zdHJpbmdfaW5zZXJ0X2NoYXIpOiBOZXcgbWFjcm8uICBOZXcgZGVjbGFyYXRpb24uCgoyMDAwLTA4LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIG1kNS5oOiBOZXcgZmlsZS4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogbGliaWJlcnR5LmggKEFSUkFZX1NJWkUpOiBOZXcgbWFjcm8uCgoyMDAwLTA3LTI5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogb3M5ay5oOiBBZGQgY29weXJpZ2h0IG5vdGljZS4KCUZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wNy0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pODYwKTogQWRkIHByb3RvdHlwZS4KCjIwMDAtMDctMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXdfZHRhZ3MuCgoyMDAwLTA3LTIwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9jcmlzKTogRGVjbGFyZS4KCjIwMDAtMDctMTkgIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaW5mbyk6IEFkZCBmbGFncyBhbmQgZmxhZ3NfMS4KCjIwMDAtMDYtMDUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogTUFJTlRBSU5FUlM6IG5ldwoKMjAwMC0wNi0yMSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR5bi1zdHJpbmcuaCAoZHluX3N0cmluZ19pbml0LCBkeW5fc3RyaW5nX25ldywKCWR5bl9zdHJpbmdfZGVsZXRlLCBkeW5fc3RyaW5nX3JlbGVhc2UsIGR5bl9zdHJpbmdfcmVzaXplLAoJZHluX3N0cmluZ19jbGVhciwgZHluX3N0cmluZ19jb3B5LCBkeW5fc3RyaW5nX2NvcHlfY3N0ciwKCWR5bl9zdHJpbmdfcHJlcGVuZCwgZHluX3N0cmluZ19wcmVwZW5kX2NzdHIsIGR5bl9zdHJpbmdfaW5zZXJ0LAoJZHluX3N0cmluZ19pbnNlcnRfY3N0ciwgZHluX3N0cmluZ19hcHBlbmQsIGR5bl9zdHJpbmdfYXBwZW5kX2NzdHIsCglkeW5fc3RyaW5nX2FwcGVuZF9jaGFyLCBkeW5fc3RyaW5nX3N1YnN0cmluZ19keW5fc3RyaW5nX2VxKToKCURlZmluZSBhcyBzYW1lIG5hbWUgd2l0aCBfX2N4YV8gcHJlcGVuZGVkLCBpZiBJTl9MSUJHQ0MyLgoJKGR5bl9zdHJpbmdfaW5pdCwgZHluX3N0cmluZ19jb3B5LCBkeW5fc3RyaW5nX2NvcHlfY3N0ciwKCWR5bl9zdHJpbmdfcHJlcGVuZCwgZHluX3N0cmluZ19wcmVwZW5kX2NzdHIsIGR5bl9zdHJpbmdfaW5zZXJ0LAoJZHluX3N0cmluZ19pbnNlcnRfY3N0ciwgZHluX3N0cmluZ19hcHBlbmQsIGR5bl9zdHJpbmdfYXBwZW5kX2NzdHIsCglkeW5fc3RyaW5nX2FwcGVuZF9jaGFyLCBkeW5fc3RyaW5nX3N1YnN0cmluZyk6IENoYW5nZSByZXR1cm4gdHlwZQoJdG8gaW50LgoKMjAwMC0wNi0xOCAgU3RlcGhhbmUgQ2FycmV6ICA8c3RjYXJyZXpAd29ybGRuZXQuZnI+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbTY4aGMxMik6IERlZmluZS4KCShwcmludF9pbnNuX202OGhjMTEpOiBMaWtld2lzZS4KCjIwMDAtMDYtMTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBvczlrLmg6IENoYW5nZSB2YWx1ZXMgb2YgTU9EU1lOQyBhbmQgQ1JDQ09OIGR1ZSB0byBidWcgcmVwb3J0Cglmcm9tIFJ1c3MgTWFnZWUgPHJtYWdlZUBob21lLmNvbT4uCgoyMDAwLTA2LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oIChkZW1hbmdsaW5nX3N0eWxlcyk6IFJlbW92ZSB0cmFpbGluZyBjb21tYSBpbiBlbnVtLgoKCSogZHluLXN0cmluZy5oIChkeW5fc3RyaW5nX2FwcGVuZF9jaGFyKTogQ2hhbmdlIHBhcmFtZXRlciBmcm9tCgljaGFyIHRvIGludC4KCjIwMDAtMDYtMDQgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkeW4tc3RyaW5nLmg6IE1vdmUgaGVyZSBmcm9tIGdjYy9keW4tc3RyaW5nLmguICBBZGQgbmV3IGZ1bmN0aW9ucy4KCgkqIGRlbWFuZ2xlLmggKERNR0xfR05VX05FV19BQkkpOiBOZXcgbWFjcm8uCgkoRE1HTF9TVFlMRV9NQVNLKTogT3IgaW4gRE1HTF9HTlVfTkVXX0FCSS4KCShjdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUpOiBBZGQgZ251X25ld19hYmlfZGVtYW5nbGluZy4KCShHTlVfTkVXX0FCSV9ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IE5ldyBtYWNyby4KCShHTlVfTkVXX0FCSV9ERU1BTkdMSU5HKTogTGlrZXdpc2UuCgkoY3BsdXNfZGVtYW5nbGVfbmV3X2FiaSk6IE5ldyBkZWNsYXJhdGlvbi4KClR1ZSBNYXkgMzAgMTY6NTM6MzQgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoc3RydWN0IGZsb2F0Zm9ybWF0KTogQWRkIGZpZWxkIG5hbWUuCgoyMDAwLTA1LTI2ICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogZmlsZW5hbWVzLmg6IE5ldyBmaWxlLgoJKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNLCBJU19ESVJfU0VQQVJBVE9SKQoJKElTX0FCU09MVVRFX1BBVEgsIEZJTEVOQU1FX0NNUCk6IE5ldyBtYWNyb3MuCgoyMDAwLTA1LTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnZXRvcHQuaCAoZ2V0b3B0KTogQWxzbyBjaGVjayBIQVZFX0RFQ0xfKiB3aGVuIHByb3RvdHlwaW5nLgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogTGlrZXdpc2UuCgoyMDAwLTA1LTE3ICBTLiBCaGFyYWR3YWogWWFkYXZhbGxpICA8c2J5QHNjcnVncy5sa2cuZGVjLmNvbT4KCSAgICBSaWNrIEdvcnRvbgkgICAgICAgICAgICA8Z29ydG9uQHNjcnVncy5sa2cuZGVjLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgZW1pdHJlbG9jYXRpb25zIGZsYWcuCgoyMDAwLTA1LTA4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3RpYzU0eCk6IERlY2xhcmUuCgoyMDAwLTA1LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgogCSogYW5zaWRlY2wuaDogI2RlZmluZSBfX2V4dGVuc2lvbl9fIHRvIG5vdGhpbmcgaWYKIAlHQ0NfVkVSU0lPTiA8IDIwMDguCgoyMDAwLTA1LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oIChkZW1hbmdsZXJfZW5naW5lKTogQ29uc3RpZnkuCgpUaHUgTWF5ICA0IDE3OjE1OjI2IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogc29ydC5oIChzeXMvdHlwZXMuaCk6IEZpbGUgaW5jbHVkZWQgdW5jb25kaXRpb25uYWx5LgoJKHN0ZGRlZi5oKTogRmlsZSBpbmNsdWRlIG9ubHkgI2lmZGVmIF9fU1REQ19fLgoKMjAwMC0wNS0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogc3ltY2F0Lmg6IFJlbW92ZSAjZW5kaWYgbGFiZWwuCgoyMDAwLTA0LTI4ICBLZW5uZXRoIEJsb2NrICA8YmxvY2tAemszLmRlYy5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgogICAgICAgICogZGVtYW5nbGUuaCAobGliaWJlcnR5X2RlbWFuZ2xlcnMpOiBuZXcgdGFibGUgZm9yIGRpZmZlcmVudCBzdHlsZXMuCiAgICAgICAgKGNwbHVzX2RlbWFuZ2xlX3NldF9zdHlsZSk6IE5ldyBmdW5jdGlvbiBmb3Igc2V0dGluZyBzdHlsZS4KICAgICAgICAoY3BsdXNfZGVtYW5nbGVfbmFtZV90b19zdHlsZSk6IE5ldyBmdW5jdGlvbiB0byB0cmFuc2xhdGUgbmFtZS4KCjIwMDAtMDQtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBoYXNodGFiLmggKGhhc2hfcG9pbnRlcik6IERlY2xhcmUuCgkoZXFfcG9pbnRlcik6IExpa2V3aXNlLgoKMjAwMC0wNC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNvcnQuaDogTmV3IGZpbGUuCgpGcmkgQXByIDIxIDEzOjIwOjUzIDIwMDAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkJCSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faWE2NCk6IERlY2xhcmUuCgpUdWUgQXByIDE4IDE2OjIyOjMwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBoYXNodGFiLmggKGVudW0gaW5zZXJ0X29wdGlvbik6IE5ldyB0eXBlLgoJKGh0YWJfZmluZF9zbG90LCBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBVc2UgaXQuCgoyMDAwLTA0LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeW1jYXQuaDogSG9ub3IgYXV0b2NvbmYgbWFjcm8gSEFWRV9TVFJJTkdJWkUuICBBZGQKCWNvbW1lbnRzL2NhdmVhdHMgd2l0aCByZWdhcmQgdG8gdHJhZGl0aW9uYWwgQyBiZWhhdmlvci4KCjIwMDAtMDQtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfcmVtb3ZlKTogRGVjbGFyZS4KCjIwMDAtMDQtMDQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBiaW4tYnVncy5oIChSRVBPUlRfQlVHU19UTyk6IFJlbW92ZSB0cmFuc2xhdGVkIHBhcnQuCgoyMDAwLTA0LTAzICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogYmluLWJ1Z3MuaDogTmV3IGZpbGUuCgoyMDAwLTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaGFzaHRhYi5oIChoYXNodmFsX3QpOiBOZXcgdHlwZS4KCShodGFiX2ZpbmRfd2l0aF9oYXNoKTogVXNlIGl0IGFzIGFuIGFyZ3VtZW50LgoJKGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IExpa2V3aXNlLgoKMjAwMC0wMy0yNyAgRGVuaXMgQ2hlcnR5a292ICA8ZGVuaXNjQG92ZXJ0YS5ydT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9hdnIpOiBEZWNsYXJlLgoKMjAwMC0wMy0xNCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBoYXNodGFiLmggKGh0YWJfdHJhdik6IE1vZGlmeSB0eXBlIHNvIHRoYXQgZmlyc3QgYXJnIGlzIG9mIHR5cGUKCXZvaWQgKiouCgkoaHRhYl9maW5kX3dpdGhfaGFzaCwgaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogRGVjbGFyZSBuZXcKCWZ1bmN0aW9ucy4KCjIwMDAtMDMtMDkgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJ0aXRpb24uaDogTmV3IGZpbGUuCgoyMDAwLTAzLTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBoYXNodGFiLmggKHN0cnVjdCBodGFiKTogQWRkIGRlbF9mLgoJKGh0YWJfZGVsKTogTmV3IHR5cGUuCgkoaHRhYl9jcmVhdGUpOiBBZGQgZm91cnRoIGFyZ3VtZW50LgoKMjAwMC0wMy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaGFzaHRhYi5oIChoYXNoX3RhYmxlX3QpOiBSZW5hbWUgdG8gaHRhYl90LgoJKHN0cnVjdCBoYXNoX3RhYmxlKTogUmVuYW1lIHRvIHN0cnVjdCBodGFiLiAgU2hvcnRlbiBlbGVtZW50CgluYW1lcy4gIFJlb3JkZXIgZWxlbWVudHMgYnkgc2l6ZS4KCShodGFiX2hhc2gsIGh0YWJfZXEsIGh0YWJfdHJhdik6IE5ldyB0eXBlZGVmcyBmb3IgdGhlIGNhbGxiYWNrCglmdW5jdGlvbiBwb2ludGVycy4KCShoYXNoX3RhYmxlX2VudHJ5X3QpOiBEaXNjYXJkOyBqdXN0IHVzZSB2b2lkICogZm9yIGVsZW1lbnQKCXR5cGUuCgoyMDAwLTAzLTAxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBhIGJvb2xlYW4gYXJnIHRvCgl0aGUgdW5kZWZpbmVkX3N5bWJvbCBjYWxsYmFjay4KCjIwMDAtMDItMjMgIExpbmFzIFZlcHN0YXMgPGxpbmFzQGxpbmFzLm9yZz4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pMzcwKTogRGVjbGFyZS4KClR1ZSBGZWIgMjIgMTU6MTk6NTQgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fdHJhY2UpOiBEb2N1bWVudCByZXR1cm4gdmFsdWVzLgoJKHNpbV9zZXRfdHJhY2UpOiBEZWNsYXJlLiAgRGVwcmVjYXRlLgoKMjAwMC0wMi0yMSAgQWxhbiBNb2RyYSAgPGFsYW5Ac3ByaS5sZXZlbHMudW5pc2EuZWR1LmF1PgoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IENoYW5nZSBgbGVuZ3RoJyBwYXJhbSBvZgoJcmVhZF9tZW1vcnlfZnVuYyB0byB1bnNpZ25lZC4gIENoYW5nZSB0eXBlIG9mIGBidWZmZXJfbGVuZ3RoJyBhbmQKCWBvY3RldHNfcGVyX2J5dGUnIHRvIHVuc2lnbmVkLgoJKGJ1ZmZlcl9yZWFkX21lbW9yeSk6IENoYW5nZSBgbGVuZ3RoJyBwYXJhbSB0byB1bnNpZ25lZC4KCjIwMDAtMDItMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBwcm90b3R5cGVzIGZvciBBUk0gcmVnaXN0ZXIgbmFtZSBmdW5jdGlvbnMuCgpXZWQgRmViICA5IDE4OjQ1OjQ5IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHdhaXQuaDogRGVsZXRlLiBObyBsb25nZXIgdXNlZCBieSBHREIuCgpUdWUgRmViICA4IDE3OjAxOjEzIDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3Jlc3VtZSk6IENsYXJpZnkgdXNlIG9mIFNJR0dOQUwuCgkoc2ltX3N0b3BfcmVhc29uKTogQ2xhcmlmeSBtZWFuaW5nIG9mIHNpbV9zaWduYWxsZWQuCgoyMDAwLTAyLTAzICBUaW1vdGh5IFdhbGwgPHR3YWxsQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogQWRkZWQgb2N0ZXRzX3Blcl9ieXRlCglmaWVsZCBhbmQgaW5pdGlhbGl6ZSBpdCB0byBvbmUgKDEpLgoKMjAwMC0wMS0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIHByb3RvdHlwZSBmb3IgZGlzYXNzZW1ibGVyX3VzYWdlKCkuCglBZGQgcHJvdG90eXBlIGZvciBhcm1fZGlzYXNzZW1ibGVyX29wdGlvbnMoKS4KCVJlbW92ZSBwcm90b3R5cGUgZm9yIGFybV90b2dnbGVfcmVnbmFtZXMoKS4KCUFkZCBwcm90b3R5cGUgZm9yIHBhcnNlX2FybV9kaXNhc3NlbWJsZXJfb3B0aW9uKCkuCgpTYXQgSmFuICAxIDE5OjA2OjUyIDIwMDAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIHN5bWNhdC5oIChTVFJJTkdYKSBbIV9fU1REQ19fIHx8IEFMTU9TVF9TVERDXTogQ2hhbmdlICI/IiB0byAicyIKCXRvIHN0cmluZ2lmeSBhcmd1bWVudCBzLgoKV2VkIERlYyAxNSAxMToyMjo1NiAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBocC1zeW10YWIuaCAoSFBfTEFOR1VBR0VfRk9SVFJBTik6IE5ldyBlbnVtZXJhdGlvbiBjb25zdGFudC4KCShIUF9MQU5HVUFHRV9GNzcpOiBEZWZpbmUgdXNpbmcgSFBfTEFOR1VBR0VfRk9SVFJBTi4KCjE5OTktMTItMTUgIERvdWcgRXZhbnMgIDxkamVAdHJhbnNtZXRhLmNvbT4KCgkqIGRpcy1hc20uaDogRW5jbG9zZSBpbiBleHRlcm4gIkMiIGlmZGVmIF9fY3BsdXNwbHVzLgoKMTk5OS0xMi0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3RydWN0IHNwbGF5X3RyZWVfbm9kZSk6IFJlbmFtZSB0byAuLi4KCShzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlX3MpOiAuLi4gdGhpcy4KCShzdHJ1Y3Qgc3BsYXlfdHJlZSk6IFJlbmFtZSB0byAuLi4KCShzdHJ1Y3Qgc3BsYXlfdHJlZV9zKTogLi4uIHRoaXMuCgoxOTk5LTExLTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChBVFRSSUJVVEVfTUFMTE9DKTogTmV3IG1hY3JvLgoKCSogbGliaWJlcnR5LmggKGJ1aWxkYXJndiwgZHVwYXJndiwgY29uY2F0LCBjaG9vc2VfdGVtcF9iYXNlLAoJbWFrZV90ZW1wX2ZpbGUsIHhtYWxsb2MsIHhjYWxsb2MsIHhzdHJkdXAsIHhtZW1kdXApOiBBZGQKCUFUVFJJQlVURV9NQUxMT0MuCgkoeGF0ZXhpdCk6IFJlbW92ZSBfX0dOVUNfXyBjaGVjaywgYWRkIEFUVFJJQlVURV9OT1JFVFVSTi4KCjE5OTktMTEtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBJbmNsdWRlIHN0ZGFyZy5oIHdoZW4gQU5TSV9QUk9UT1RZUEVTIGlzIGRlZmluZWQuCgkoYXNwcmludGYsIHZhc3ByaW50Zik6IFByb3ZpZGUgZGVjbGFyYXRpb25zLgoKV2VkIE5vdiAxMCAxMjo0MzoyMSAxOTk5ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCQkJICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBEZWZpbmUgYW5kIHRlc3QgYEdDQ19WRVJTSU9OJywgbm90IGBIQVZFX0dDQ19WRVJTSU9OJy4KCjE5OTktMTEtMDQgICAgICBKaW1teSBHdW8gICAgICAgPGd1b0BjdXAuaHAuY29tPgoKCSogaHAtc3ltdGFiLmggKGRudHRfdHlwZV9mcGFyYW0pOiBBZGQgZG9jX3JhbmdlcywgbWlzY19raW5kCglmaWVsZHMsIGNoYW5nZSBsb2NhdGlvbiB0eXBlIHRvIENPUkVfQUREUiBmcm9tIGludC4KCShkbnR0X3R5cGVfY29uc3QpOiBOYW1lIHRoZSA1dGggZmllbGQgbG9jYXRpb25fdHlwZS4KClN1biBPY3QgMjQgMTk6MTE6MzIgMTk5OSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogc2ltLWQxMHYuaCAoU0lNX0QxMFZfVFMyX0RNQVBfUkVHTlVNKTogRGVmaW5lLgoKMTk5OS0xMC0yMyAwODo1MSAtMDcwMCAgWmFjayBXZWluYmVyZyAgPHphY2tAYml0bW92ZXIuY29tPgoKCSogaGFzaHRhYi5oOiBHaXZlIGhhc2hfdGFibGVfdCBhIHN0cnVjdCB0YWcuICBBZGQgcHJvdG90eXBlcwoJZm9yIGNsZWFyX2hhc2hfdGFibGVfc2xvdCBhbmQgdHJhdmVyc2VfaGFzaF90YWJsZS4gIENvcnJlY3QKCXByb3RvdHlwZSBvZiBhbGxfaGFzaF90YWJsZV9jb2xsaXNpb25zLgoKU2F0IE9jdCAyMyAxOTowMDoxMyAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBzaW0tZDEwdi5oOiBOZXcgZmlsZS4KCkZyaSBPY3QgMTUgMDE6NDc6NTEgMTk5OSAgVmxhZGltaXIgTWFrYXJvdiAgPHZtYWthcm92QGxvb255LmN5Z251cy5jb20+CgoJKiBoYXNodGFiLmg6IE5ldyBmaWxlLgoKMTk5OS0xMC0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoSEFWRV9HQ0NfVkVSU0lPTik6IE5ldyBtYWNyby4gIFVzZSBpdCBpbnN0ZWFkIG9mCglleHBsaWNpdGx5IHRlc3RpbmcgX19HTlVDX18gYW5kIF9fR05VQ19NSU5PUl9fLgoKCShBVFRSSUJVVEVfUFJJTlRGKTogVXNlIGBfX2Zvcm1hdF9fJywgbm90IGBmb3JtYXQnLgoKMTk5OS0wOS0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKG1ha2VfdGVtcF9maWxlKTogIEFkZCBhIHByb3RvdHlwZS4KClR1ZSBTZXAgMTQgMDA6MzU6MDIgMTk5OSAgTWFyYyBFc3BpZSA8ZXNwaWVAY3ZzLm9wZW5ic2Qub3JnPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogIE9wZW5CU0QgaGFzIGEgY29ycmVjdCBwcm90b3R5cGUuCgkoeHJlYWxsb2MpOiAgUmVtb3ZlIG91dGRhdGVkIGNvbW1lbnQuCgoxOTk5LTA5LTA3ICBKZWZmIEdhcnppayAgPGpnYXJ6aWtAcG9ib3guY29tPgoKCSogbGliaWJlcnR5LmggKHhtZW1kdXApOiBBZGQgcHJvdG90eXBlIGZvciBuZXcgZnVuY3Rpb24uCgoxOTk5LTA5LTA0ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0Bwb2JveC5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fcGopOiBEZWNsYXJlLgoKMTk5OS0wOS0wMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogb2JzdGFjay5oIChvYnN0YWNrX2dyb3csIG9ic3RhY2tfZ3JvdzApOiBNb3ZlIChjaGFyKikgY2FzdHMKCWluIGNhbGxzIHRvIGBfb2JzdGFja19tZW1jcHknIGZyb20gaGVyZSAuLi4KCgkoX29ic3RhY2tfbWVtY3B5KTogLi4uIHRvIGhlcmUsIGV4Y2VwdCBpbiB0aGUgX19TVERDX18gY2FzZSB3aGljaAoJZG9lc24ndCBuZWVkIGl0LgoKMTk5OS0wOC0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGdldHB3ZCk6IFByb3RvdHlwZS4KCjE5OTktMDgtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfaW5zZXJ0KTogUmV0dXJuIHRoZSBuZXcgbm9kZS4KCjE5OTktMDctMTEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogYW5zaWRlY2wuaDogQ29weSBhdHRyaWJ1dGUgc3VwcG9ydCBtYWNyb3MgZnJvbSBlZ2NzLgoKMTk5OS0wNi0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBBZGQgaW5pdF9mdW5jdGlvbiBhbmQKCWZpbmlfZnVuY3Rpb24uCgoxOTk5LTA2LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWlwcy5oIChFbGYzMl9JbnRlcm5hbF9Nc3ltKTogTmV3IHN0cnVjdHVyZS4KCShFbGYzMl9FeHRlcm5hbF9Nc3ltKTogTGlrZXdpc2UuCgkoRUxGMzJfTVNfUkVMX0lOREVYKTogTmV3IG1hY3JvLgoJKEVMRjMyX01TX0ZMQUdTKTogTGlrZXdpc2UuCgkoRUxGMzJfTVNfSU5GTyk6IExpa2V3aXNlLgoKMTk5OS0wNi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoYXJtX3RvZ2dsZV9yZWduYW1lcyk6IE5ldyBwcm90b3R5cGUuCgkoc3RydWN0IGRpYXNzZW1ibGVfaW5mbyk6IE5ldyBmaWVsZDogZGlzYXNzZW1ibGVyX29wdGlvbnMuCgoxOTk5LTA0LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfZWxmX3ZlcnNpb25fZXhwcik6IFJlbmFtZSBgbWF0Y2gnIHRvIGBwYXR0ZXJuJy4KCUFkZCBgbWF0Y2gnIGNhbGxiYWNrIGZ1bmN0aW9uLgoKMTk5OS0wNC0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaW5mbyk6IEFkZCBub191bmRlZmluZWQuCgoxOTk5LTA0LTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgcHJvdG90eXBlIGZvciBwcmludF9pbnNuX21jb3JlLgoKMTk5OS0wNC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9jb21wYXJlX3BvaW50ZXJzKTogRGVjbGFyZS4KCjE5OTktMDMtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfY29tcGFyZV9pbnRzKTogRGVjbGFyZS4KCldlZCBNYXIgMjQgMTI6NDY6MjkgMTk5OSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBhbXkuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IEN5Z3dpbnssMzJ9IHNob3VsZCBoYXZlIHRoZSBwcm90b3R5cGUuCgoxOTk5LTAyLTIyICBKaW0gTGVta2UgIDxqbGVta2VAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaW5mbyk6IGFkZCBmaWVsZCAibXBjODYwYzAiLgoKTW9uIEZlYiAgMSAyMTowNTo0NiAxOTk5ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCiAgICAgICAqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pMzg2X2F0dCk6ICBEZWNsYXJlLgogICAgICAgKHByaW50X2luc25faTM4Nl9pbnRlbCk6ICBEZWNsYXJlLgoKMTk5OC0xMi0zMCAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogQ2FzdCBTVFJFQU0gYW5kCglGUFJJTlRGX0ZVTkMgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgpXZWQgRGVjIDMwIDE2OjA3OjE0IDE5OTggIERhdmlkIFRheWxvciAgPHRheWxvckB0ZXhhcy5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBjaGFuZ2Ugdm9pZCAqIHRvIFBUUiAodHdvIHBsYWNlcykuCgpNb24gRGVjIDE0IDA5OjUzOjMxIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmg6IERvbid0IGNoZWNrIElOX0dDQyBhbnltb3JlLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKVHVlIERlYyAgOCAwMDozMDozMSAxOTk4ICBFbGVuYSBaYW5ub25pICA8ZXphbm5vbmlAa3dpa2VtYXJ0LmN5Z251cy5jb20+CgoJVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSBieSBFbGVuYSBaYW5ub25pCiAJPGV6YW5ub25pQGt3aWtlbWFydC5jeWdudXMuY29tPiBhbmQgRWRpdGggRXBzdGVpbgogCTxlZXBzdGVpbkBzb3BoaWEuY3lnbnVzLmNvbT4gYXMgcGFydCBvZiBhIHByb2plY3QgdG8gbWVyZ2UgaW4KIAljaGFuZ2VzIG1hZGUgYnkgSFA7IEhQIGRpZCBub3QgY3JlYXRlIENoYW5nZUxvZyBlbnRyaWVzLgoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IGNoYW5nZSB0aGUgdHlwZSBvZiBzdHJlYW0KCWZyb20gRklMRSogdG8gdm9pZCosIGZvciB1c2Ugd2l0aCBnZGIncyBuZXcgdHlwZSBHREJfRklMRS4KCShmcHJpbnRmX2Z0eXBlKTogY2hhbmdlIEZJTEUqIHBhcmFtZXRlciB0eXBlIHRvIHZvaWQqLgoKCSogZGVtYW5nbGUuaDogKERNR0xfRURHKTogbmV3IG1hY3JvIGZvciBLdWNrIGFuZCBBc3NvY2lhdGVzCgkoRE1HTF9TVFlMRV9NQVNLKTogbW9kaWZ5IHRvIGluY2x1ZGUgS3VjayBhbmQgQXNzb2Mgc3R5bGUKCShkZW1hbmdsaW5nX3N0eWxlcyk6IGFkZCBuZXcgZWRnX2RlbWFuZ2xpbmcgc3R5bGUKCShFREdfREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBuZXcgbWFjcm8KCShFREdfREVNQU5HTElORyk6IG5ldyBtYWNybwoJKERNR0xfSFApOiBuZXcgbWFjcm8sIGZvciBIUC9hQ0MgY29tcGlsZXIuCgkoRE1HTF9TVFlMRV9NQVNLKTogbW9kaWZ5IHRvIGluY2x1ZGUgbmV3IEhQJ3Mgc3R5bGUuCgkoZGVtYW5nbGluZ19zdHlsZXMpOiBhZGQgbmV3IGhwX2RlbWFuZ2xpbmcgdmFsdWUuCgkoSFBfREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBuZXcgbWFjcm8uCgkoQVJNX0RFTUFOR0xJTkcpOiBjb2VyY2UgdG8gaW50LgoJKEhQX0RFTUFOR0xJTkcpOiBuZXcgbWFjcm8uCgoJKiBocC1zeW10YWIuaDogcmV3cml0dGVuLCBmcm9tIEhQLgoJKHF1aWNrX3Byb2NlZHVyZSk6IGNoYW5nZSB0eXBlIG9mIGxhbmd1YWdlIGZpZWxkIHRvIHVuc2lnbmVkIGludAoJKHF1aWNrX21vZHVsZSk6IGNoYW5nZSB0eXBlIG9mIGxhbmd1YWdlIGZpZWxkIHRvIHVuc2lnbmVkIGludAoJKHN0cnVjdCBkbnR0X3R5cGVfc3Zhcik6IGFkZCBmaWVsZCB0aHJlYWRfc3BlY2lmaWMuCgkoaHBfbGFuZ3VhZ2UpOiBhZGQgbGFuZ3VhZ2VzIG1vZGNhbCBhbmQgZG1wYXNjYWwuCgpGcmkgTm92IDIwIDEzOjE0OjAwIDE5OTggIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IEFkZCBwcm90b3R5cGUgZm9yIEZyZWVCU0QuCgpGcmkgTm92IDEzIDE5OjE5OjExIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBQcm90b3R5cGUgeGNhbGxvYy4KClN1biBOb3YgIDggMTc6NDI6MjUgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaDogV3JhcCBwcm9ibGVtYXRpYyBtYWNyb3Mgd2l0aCAhSU5fR0NDLgoKCSogZGVtYW5nbGUuaDogTmV2ZXIgZGVmaW5lIFBBUkFNUygpLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKU2F0IE5vdiAgNyAxODozMDoyMCAxOTk4ICBQZXRlciBTY2hhdWVyICA8cGV0ZXIuc2NoYXVlckByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3ZheCk6IERlY2xhcmUuCgpTYXQgTm92ICA3IDE2OjA0OjAzIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmg6IERvbid0IGluY2x1ZGUgZ2Fuc2lkZWNsLmguCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgoxOTk4LTEwLTI2IDE2OjAzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkIG9wdGltaXplLgoKVGh1IE9jdCAyMiAxOTo1ODowMCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzcGxheS10cmVlLmg6IFdyYXAgZnVuY3Rpb24gcG9pbnRlciBwYXJhbWV0ZXIgZGVjbGFyYXRpb25zIGluCglQQVJBTVMoKSBtYWNyby4KCjE5OTgtMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzcGxheS10cmVlLmg6IE5ldyBmaWxlLgoKRnJpIE9jdCAgOSAwMDowMjowMyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNZXJnZSBkZXZvIGFuZCBlZ2NzIGluY2x1ZGUgZGlyZWN0b3JpZXMuCgpTYXQgU2VwICA1IDEyOjE2OjMzIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oLCBvYnN0YWNrLmg6IFVwZGF0ZWQgZnJvbSBnY2MuCgoxOTk4LTA4LTAzICBKYXNvbiBNb2xlbmRhICAoanNtQGJ1Z3NoYWNrLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaCAoeGV4aXQpOiBDaGFuZ2UgZGVjbCB0byB1c2UgbW9kZXJuIEdDQyBhdHRyaWJ1dGUKCXRvIGluZGljYXRlIGV4aXQgZG9lcyBub3QgcmV0dXJuLgoKTW9uIEp1biAgMSAxMzo0ODozMiAxOTk4ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KClR1ZSBGZWIgMjQgMTM6MDU6MDIgMTk5OCAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IE1lbWJlciBgc3ltYm9sJyByZW5hbWVkIHRvIGBzeW1ib2xzJwoJYW5kIG1hZGUgYW4gImFzeW1ib2wgKioiLiAgTmV3IG1lbWJlciBudW1fc3ltYm9scy4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IFVwZGF0ZS4KClR1ZSBGZWIgMTcgMTI6MzI6MTggMTk5OCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fZmV0Y2hfcmVnaXN0ZXIsIHNpbV9zdG9yZV9yZWdpc3Rlcik6IEFkZAogCXJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXIuICBGdW5jdGlvbnMgcmV0dXJuIGFjdHVhbCBsZW5ndGggb2YKIAlyZWdpc3Rlci4KClRodSBGZWIgMTIgMTY6Mjk6MDEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZ2V0b3B0Lmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpXZWQgRmViIDExIDE2OjU2OjA2IDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBzeW1jYXQuaDogTmV3IGZpbGUuCgpNb24gRmViICAyIDE3OjEzOjMxIDE5OTggIFN0ZXZlIEhhd29ydGggIDxzdGV2ZUBwbS5jc2Uucm1pdC5FRFUuQVU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdGljMzApOiBEZWNsYXJlLgoKVGh1IEphbiAyMiAxNjoyMzo1OSAxOTk4ICBGcmVkIEZpc2ggPGZuZkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgZmxhZyBJTlNOX0hBU19SRUxPQyB0byB0ZWxsIGRpc2Fzc2VtYmx5CglmdW5jdGlvbiB0aGVyZSBpcyBhIHJlbG9jIG9uIHRoaXMgbGluZS4KCk1vbiBEZWMgIDggMTE6MjI6MjMgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogUmVtb3ZlIHByb3RvdHlwZSBvZiBkaXNhc21fc3ltYWRkcigpIGFzIHRoaXMgZnVuY3Rpb24KCW5vIGxvbmdlciBleGlzdHMuCgpUdWUgRGVjICAyIDEwOjIwOjUzIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2FzbV9zeW1hZGRyKTogTmV3IHByb3RvdHlwZS4KCk1vbiBEZWMgIDEgMTE6Mjk6MzUgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDb21tZW50IG91dCBhcmcgbmFtZXMgaW4gcHJvdG90eXBlcy4KCldlZCBOb3YgMjYgMTY6NDc6NTggMTk5NyAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9TWVNDQUxMKTogQ29uc2lzdGFudGx5IHVzZSBuYW1lcyBmb3IgcHJvdG90eXBlCglhcmd1bWVudHMuCgpXZWQgTm92IDI2IDExOjM5OjMwIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9TWVNDQUxMKTogQ2hhbmdlIGJ5dGUgY291bnQgYXJndW1lbnRzIHRvCgl7cmVhZCx3cml0ZX1fbWVtIHRvIGBpbnQnLiAgTmV3IG1lbWJlciBgbWFnaWMnLgoJKENCX1NZU0NBTExfTUFHSUMsQ0JfU1lTQ0FMTF9JTklUKTogTmV3IG1hY3Jvcy4KClR1ZSBOb3YgMjUgMDE6MzU6NTIgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BzZWJhLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChzdHJ1Y3Qgc3RhdCk6IE1vdmUgZm9yd2FyZCBkZWNsIHVwLgoJKGhvc3RfY2FsbGJhY2spOiBQYXNzIHN0YXQgc3RydWN0IHBvaW50ZXIgdG8gc3RhdCxmc3RhdC4KCShDQl9TWVNfbm5uKTogUmVvcmdhbml6ZS4KCShDQl9TWVNDQUxMKTogTmV3IG1lbWJlcnMgcDEscDIuCgkoY2JfaG9zdF90b190YXJnZXRfc3RhdCk6IERlbGV0ZSBmb3VydGggYXJnLgoKU2F0IE5vdiAyMiAyMzozNDoxNSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zdG9wX3JlYXNvbik6IENsYXJpZnkgc2ltX3NpZ25hbGxlZCBTSUdSQwogCWFyZ3VtZW50LgoKTW9uIE5vdiAxNyAxNDowMDo1MSAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQHNlYmEuY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1RBUkdFVF9ERUZTX01BUCk6IFJlbmFtZWQgZnJvbSB0YXJnZXRfZGVmc19tYXAuCgkoaG9zdF9jYWxsYmFjayk6IEFkZCBzdGF0LCBmc3RhdCwgc3lzY2FsbF9tYXAsIGVycm5vX21hcCwgb3Blbl9tYXAsCglzaWduYWxfbWFwLCBzdGF0X21hcC4KCShlcnJuX21hcCxvcGVuX21hcCk6IFJlbmFtZWQgdG8gY2JfaW5pdF9mb29fbWFwLgoJKGNiX2hvc3RfdG9fdGFyZ2V0X2Vycm5vLGNiX3RhcmdldF90b19ob3N0X29wZW4pOiBSZW5hbWVkIGZyb20KCWhvc3RfdG9fdGFyZ2V0X2Vycm5vLHRhcmdldF90b19ob3N0X29wZW4uCgkoY2JfcmVhZF90YXJnZXRfc3lzY2FsbF9tYXBzKTogQWRkIHByb3RvdHlwZS4KCShjYl90YXJnZXRfdG9faG9zdF9zeXNjYWxsKTogTGlrZXdpc2UuCgkoY2JfaG9zdF90b190YXJnZXRfc3RhdCk6IExpa2V3aXNlLgoJKGNiX3N5c2NhbGwpOiBMaWtld2lzZS4KCShDQl9TWVNfe2V4aXQsb3BlbixjbG9zZSxyZWFkLHdyaXRlLGxzZWVrLHVubGluayxnZXRwaWQsa2lsbCxmc3RhdCwKCWFyZ3ZsZW4sYXJndixjaGRpcixzdGF0LGNobW9kLHV0aW1lLHRpbWV9KTogRGVmaW5lLgoJKENCX1NZU0NBTEwpOiBOZXcgdHlwZS4KCShDQl9SQyk6IE5ldyBlbnVtLgoKRnJpIE5vdiAgNyAxMDozNDowOSAxOTk3ICBSb2IgU2F2b3llICA8cm9iQGRhcmtzdGFyLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogQWRkIGV4dGVybiAiQyIgeyBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIEMrKwoJcHJvZ3JhbXMuCgkqIHJlbW90ZS1zaW0uaDogIEFkZCBleHRlcm4gIkMiIHsgc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBDKysKCXByb2dyYW1zLgoKVHVlIE9jdCAxNCAxNjowNzo1MSAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBmaWVsZAoJJ3N5bWJvbF9hdF9hZGRyZXNzX2Z1bmMnLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGlzZSBuZXcgZmllbGQgd2l0aAoJZ2VuZXJpY19zeW1ib2xfYXRfYWRkcmVzcy4KCk1vbiBPY3QgMTMgMTA6MTc6MTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBDbGFyaWZ5IHNpbV9yZWFkLCBzaW1fd3JpdGUgTUVNIGFyZ3VtZW50LgoKV2VkIFNlcCAyNCAxODowMzoxMCAxOTk3ICBTdHUgR3Jvc3NtYW4gIDxncm9zc21hbkBiYWJ5bG9uLTUuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoU0lNX1JDKTogIEFkZCBhIGJ1bmNoIG9mIG5ldyByZXR1cm4gY29kZXMgZm9yCglicmVha3BvaW50IHN0dWZmLgoJKiBBZGQgZnVuY3Rpb25zIHRvIHRlbGwgdGhlIHNpbXVsYXRvciB0byBzZXQvY2xlYXIvZW5hYmxlL2Rpc2FibGUKCWludHJpbnNpYyBicmVha3BvaW50cy4KClRodSBBdWcgMjggMTk6NDE6NDIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGR1cGFyZ3YpOiBBZGQgcHJvdG90eXBlLgoKVHVlIEF1ZyAyNiAxMjoyNTo0OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9jcmVhdGVfaW5mZXJpb3IpOiBBZGQgQUJGRCBhcmcuIERvY3VtZW50LgoKTW9uIEF1ZyAyNSAxMDo1MDo1MSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9vcGVuKTogQWRkIEFCRkQgYXJnLiBEb2N1bWVudC4KCkZyaSBBdWcgIDggMTY6NDM6NTYgMTk5NyAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoYXJjX2dldF9kaXNhc3NlbWJsZXIpOiBEZWNsYXJlLgoKV2VkIEp1bCAzMCAxMTozOTo1MCAxOTk3ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmggKERNR0xfSkFWQSk6ICBOZXcgb3B0aW9uIHRvIHJlcXVlc3QgSmF2YSBkZW1hbmdsaW5nLgoKVHVlIEp1bCAyMiAxNzo1OTo1NCAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoUEVYRUNVVEVfKik6IERlZmluZS4KCShwZXhlY3V0ZSwgcHdhaXQpOiBEZWNsYXJlLgoKRnJpIEp1biAgNiAxMzowMjozMyAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9raWxsKTogTWFyayBhcyBkZXByZWNpYXRlZC4KCkZyaSBNYXkgMjMgMTM6NDM6NDEgMTk5NyAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHRhc2tfbGluayBtZW1iZXIuCgpUaHUgTWF5IDIyIDExOjMyOjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogUmV2aWV3IGRvY3VtZW50YXRpb24uICBDbGFyaWZ5IHJlc3RyaWN0aW9ucyBvbgogCXdoZW4gZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQuCgpXZWQgTWF5IDIxIDE2OjQ3OjUzIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3NldF9wcm9maWxlX3NpemUpOiBBZGQgcHJvdG90eXBlLCBkb2N1bWVudCBhcwogCWRlcHJlY2lhdGVkLgoKVHVlIE1heSAyMCAwOTozMjoyMiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9vcGVuKTogQWRkIGNhbGxiYWNrIHN0cnVjdC4KCShzaW1fc2V0X2NhbGxiYWNrcyk6IERyb3AgU0lNX0RFU0MgYXJndW1lbnQuIERvY3VtZW50LgoJKHNpbV9zaXplKTogUmVtb3ZlIHJlY2VudGx5IGFkZGVkIFNJTV9ERVNDIGFyZ3VtZW50LiBEb2N1bWVudC4KCk1vbiBNYXkgMTkgMTk6MTQ6NDQgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBQYXNzIFNEIGludG8gc2ltX3NpemUuCgpUaHUgTWF5IDE1IDAxOjI0OjE2IDE5OTcgIE1hcmsgQWxleGFuZGVyICA8bWFya2FAY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suaCAob2JzdGFja19zcGVjaWZ5X2FsbG9jYXRpb25fd2l0aF9hcmcsIG9ic3RhY2tfY2h1bmtmdW4sCglvYnN0YWNrX2ZyZWVmdW4pOiBFbGltaW5hdGUgY29tcGlsZSB3YXJuaW5ncyBpbiBnZGIuCgpUdWUgQXByIDIyIDEwOjI0OjM0IDE5OTcgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYnl0ZW9yZGVycyk6IEFkZCBjb21tZW50cyBmb3IgcHJldmlvdXMKCWZvcm1hdHMgYW5kIGFkZCBmbG9hdGZvcm1hdF9saXR0bGVieXRlX2JpZ3dvcmQsIHByaW1hcmlseSBmb3IgQVJNLgoJQWRkIGRlY2xhcmF0aW9uIGZvciBmbG9hdGZvcm1hdF9pZWVlX2RvdWJsZV9saXR0bGVieXRlX2JpZ3dvcmQuCgpGcmkgQXByIDE4IDEzOjA0OjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3N0b3ApOiBOZXcgaW50ZXJmYWNlIC0gYXN5bmNocm9ub3VzCiAJbm90aWZpY2F0aW9uIG9mIGEgcmVxdWVzdCB0byBzdG9wIC8gc3VzcGVuZCB0aGUgcnVubmluZwogCXNpbXVsYXRpb24uCgoJKiByZW1vdGUtc2ltLmggKGVudW0gc2ltX3N0b3ApOiBBZGQgc2ltX3J1bm5pbmcgYW5kIHNpbV9wb2xsaW5nIGFzCiAJc3RhdGVzIGZvciB1c2UgaW50ZXJuYWwgdG8gc2ltdWxhdG9ycy4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnV0KTogUHV0IGEgbWFnaWMgbnVtYmVyIGF0CiAJdGhlIGVuZCBvZiB0aGUgc3RydWN0IHRvIGFsbG93IGJhc2ljIGNoZWNraW5nLgoJKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnVjdCApOiBBZGQgcG9sbF9xdWl0IC0gc28KIAl0aGF0IHRoZSBjb25zb2xlIGV0YyBjYW4gYmUgcG9sbGVkIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzLgoKVGh1IEFwciAxNyAwMjoxNzoxMiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzdHJ1Y3QgX2JmZCk6IERlY2xhcmUuCgkoc2ltX2xvYWQpOiBSZXR1cm4gU0lNX1JDLiAgTmV3IGFyZyBgYWJmZCcuCgkoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IFJldHVybiBTSU1fUkMuICBEZWxldGUgYXJnIGBzdGFydF9hZGRyZXNzJy4KCldlZCBBcHIgIDIgMTc6MDk6MTIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV90cmFjZSwgc2ltX3NpemUpOiBNYWtlIHRoZXNlIGdsb2JhbC4gIFRoZXkKIAl3aWxsIGdvIGF3YXkgc2hvcnRseS4KCldlZCBBcHIgIDIgMTU6MjM6NDkgMTk5NyAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoU0lNX09QRU5fS0lORCwgU0lNX1JDKTogTmV3IGVudW1zLgoJKHNpbV9vcGVuKTogTmV3IGFyZ3VtZW50IGBraW5kJy4KCldlZCBBcHIgIDIgMTQ6NDU6NTEgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogQ09QWUlORzogVXBkYXRlIEZTRiBhZGRyZXNzLgoKRnJpIE1hciAyOCAxNToyOTo1NCAxOTk3ICBNaWtlIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHRvcCBsZXZlbCk6IEluY2x1ZGUgc3RkYXJnLmggb3IgdmFyYXJncy5oIGlmCgl2YV9zdGFydCBpcyBub3QgZGVmaW5lZC4KCShob3N0X2NhbGxiYWNrX3N0cnVjdCk6IE1ha2UgeyxlfXZwcmludGZfZmlsdGVyZWQgdGFrZSBhIHZhX2xpc3QKCWluc3RlYWQgb2Ygdm9pZCAqLCBzaW5jZSB2YV9saXN0IG1pZ2h0IGJlIGFuIGFycmF5IG9yIHN0cnVjdHVyZQoJdHlwZS4KCkZyaSBNYXIgMjggMTU6NDQ6NDEgMTk5NyAgSC5KLiBMdSAgPGhqbEBnbnUuYWkubWl0LmVkdT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IEFkZCBwcm90b3R5cGUgZm9yIGdsaWJjIGFuZCBsaW51eC4KCk1vbiBNYXIgMTcgMTk6MjI6MTIgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogb2JqYWxsb2MuaDogTmV3IGZpbGUuCgpNb24gTWFyIDE3IDE0OjU3OjU1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBOZXcgZmlsZSwgY29waWVkIGluIGZyb20gZ2RiL3JlbW90ZS1zaW0uaC4gIE9uZQogCWRheSB0aGlzIHdpbGwgYmUgcGxhY2VkIGluIGEgZGlyZWN0b3J5IG9mIGl0cyBvd24uCgpTYXQgTWFyIDE1IDE5OjAwOjE0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suaDogVXBkYXRlIHRvIGN1cnJlbnQgRlNGIHZlcnNpb24uCgpUaHUgTWFyICA2IDE1OjQ2OjU5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydWN0KTogQWRkIGNhbGxiYWNrcyAtCiAJZmx1c2hfc3Rkb3V0LCB3cml0ZV9zdGRlcnIsIGZsdXNoX3N0ZGVyciwgdnByaW50Zl9maWx0ZXJlZCwKIAlldnByaW50Zl9maWx0ZXJlZC4gIERlbGV0ZSByZWR1bmRhbnQgY2FsbGJhY2tzIC0gcHJpbnRmX2ZpbHRlcmVkLgoKVGh1IEZlYiAyNyAyMzoxODoyNyAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIGxwcmVmaXggYW5kIGxwcmVmaXhfbGVuCglmaWVsZHMuCgpUdWUgRmViIDI1IDAwOjEwOjQ5IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplCglieXRlc19wZXJfY2h1bmsgYW5kIGRpc3BsYXlfZW5kaWFuLgoKTW9uIEZlYiAyNCAxNzo0NzowMiAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJRnJvbSBFcmljIFlvdW5nZGFsZSA8ZXJpY0BhbmRhbnRlLmppYy5jb20+OgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZXhwcik6IERlZmluZS4KCShzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX2RlcHMpOiBEZWZpbmUuCgkoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlKTogRGVmaW5lLgoKVGh1IEZlYiAgNiAxNDoyMDowMSAxOTk3ICBNYXJ0aW4gTS4gSHVudCAgPGh1bnRAcGl6emEuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogKGRpc2Fzc2VtYmxlX2luZm8pOiAgQWRkIG5ldyBmaWVsZHMKCWJ5dGVzX3Blcl9jaHVuayBhbmQgZGlzcGxheV9lbmRpYW4gdG8gY29udHJvbCB0aGUKCWRpc3BsYXkgb2YgcmF3IGluc3RydWN0aW9ucy4KCkZyaSBEZWMgMjcgMjI6MTc6MzcgMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdGljODApOiBEZWNsYXJlLgoKU3VuIERlYyAgOCAxNzoxMToxMiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoaG9zdF9jYWxsYmFjayk6IE5ldyBtZW1iZXIgYGVycm9yJy4KCldlZCBOb3YgMjAgMDA6NDA6MjMgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmg6IE5ldyBmaWxlLCBtb3ZlZCBoZXJlIGZyb20gZ2RiLgoKTW9uIE5vdiAxOCAxNjozNDowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogQ2hlY2tpbiBhZ2FpbjsgbGFzdCBjaGVja2luIGZhaWxlZCBkdWUgdG8gc3RpY2t5IHRhZy4KCldlZCBOb3YgMTMgMDg6MjI6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IFJldmVydCBsYXN0IGNvbW1pdCBkdWUgdG8gY29uZmxpY3RzIHdpdGggaHB1eAoJc3lzdGVtIGhlYWRlcnMuCgpUdWUgTm92IDEyIDE2OjMxOjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBNb3ZlIHByb3RvdHlwZXMgZnJvbSBhcmd2LmMgaGVyZS4KClRodSBPY3QgMzEgMTQ6NTY6MTggMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGFuc2lkZWNsLmggKFZQQVJBTVMsVkFfU1RBUlQpOiBEZWZpbmUuCgpGcmkgT2N0IDI1IDEyOjA4OjA0IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IEFkZCBieXRlc19wZXJfbGluZSBmaWVsZC4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUgYnl0ZXNfcGVyX2xpbmUgZmllbGQuCgpUaHUgT2N0IDI0IDE3OjEwOjAxIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IEFkZCBzeW1ib2wgZmllbGQuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplIHN5bWJvbCBmaWVsZC4KClRodSBPY3QgMTcgMTE6MTc6NDAgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tMzJyKTogRGVjbGFyZS4KCk1vbiBPY3QgMTQgMjM6NTY6NTIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IERlY2xhcmUgcGFyYW1ldGVyIHR5cGVzIGZvciB4bWFsbG9jIGFuZCB4cmVhbGxvYy4KClRodSBPY3QgIDMgMTM6NDU6MjcgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZm5tYXRjaC5oOiBOZXcgZmlsZS4KClRodSBPY3QgIDMgMTA6MzM6MTQgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX21uMTB4MDApOiBEZWxldGUgZGVjbGFyYXRpb24uCgkocHJpbnRfaW5zbl9tbjEwMjAwLCBwcmludF9pbnNuX21uMTAzMDApOiBEZWNsYXJlLgoKV2VkIE9jdCAgMiAyMToyNDo0MyAxOTk2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbW4xMHgwMCk6IERlY2xhcmUuCgpNb24gU2VwIDMwIDEzOjU2OjExIDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IFJlbW92ZSAjaWZuZGVmIFBSSVZBVEVfWE1BTExPQy4KClNhdCBBdWcgMzEgMTM6Mjc6MDYgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3Y4NTApOiBEZWNsYXJlLgoKVHVlIEF1ZyAxMyAxNjoxMDozMCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQ2hhbmdlIGJjb3B5IHRvIG1lbWNweS4gIFdvcmtzIGJldHRlciBvbiBQb3NpeAoJc3lzdGVtcywgd2hpY2ggZ2VuZXJhbGx5IGxhY2sgYmNvcHkuCgpNb24gQXVnIDEyIDE3OjAzOjE4IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiAgQ2hhbmdlIFdJTjMyIHRvIF9XSU4zMi4KCkZyaSBKdWwgMjYgMTM6NTg6MTggMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgZmxhdm91ciBmaWVsZC4KCShwcmludF9pbnNuX2FscGhhKTogRGVjbGFyZS4KCShwcmludF9pbnNuX2FscGhhX29zZiwgcHJpbnRfaW5zbl9hbHBoYV92bXMpOiBEb24ndCBkZWNsYXJlLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IEluaXRpYWxpemUgZmxhdm91ciBmaWVsZC4KClR1ZSBKdWwgMjMgMTc6Mzc6NTggMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoUFJJVkFURV9YTUFMTE9DKTogRW5jbG9zZSB4bWFsbG9jL3hyZWFsbG9jCglkZWZpbml0aW9ucyBpbnNpZGUgI2lmbmRlZiBzbyB0aGF0IHByb2dyYW1zIHRoYXQgd2FudCB0bwoJY2FuIGRlZmluZSBQUklWQVRFX1hNQUxMT0MgYW5kIHRoZW4gZGVmaW5lIHhtYWxsb2MgYW5kCgl4cmVhbGxvYyBhbnl3YXkgdGhleSB3YW50LgoJKGJhc2VuYW1lKTogRG9jdW1lbnQgaW4gc291cmNlIHRoYXQgd2UgY2FuJ3QgZGVjbGFyZSB0aGUKIAlwYXJhbWV0ZXIgdHlwZSBiZWNhdXNlIGl0IGlzIGRlY2xhcmVkIGluY29uc2lzdGVudGx5IGFjcm9zcwoJZGlmZmVyZW50IHN5c3RlbXMuCgpNb24gSnVsIDIyIDEzOjE2OjEzIDE5OTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHRhbXUuZWR1PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2FscGhhKTogRG9uJ3QgZGVjbGFyZS4KCShwcmludF9pbnNuX2FscGhhX29zZiwgcHJpbnRfaW5zbl9hbHBoYV92bXMpOiBEZWNsYXJlLgoKV2VkIEp1bCAxNyAxNDo0NToxMiAxOTk2ICBNYXJ0aW4gTS4gSHVudCAgPGh1bnRAcGl6emEuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogKHByaW50X2luc25fZDEwdik6IERlY2xhcmUuCgpNb24gSnVsIDE1IDE2OjU1OjM4IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6ICBHZXQgcmlkIG9mIGRlY2xzIGZvciBwcmludF9pbnNuX2k4MDg2LAoJcHJpbnRfaW5zbl9zcGFyYzY0IGFuZCBwcmludF9pbnNuX3NwYXJjbGl0ZS4KCSogKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6ICBTcGxpdCBpbnRvIHR3byBwaWVjZXMuICBPbmUsCglJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCBpbml0cyBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgZW5kaWFuLAoJbWFjaCwgYW5kIGFyY2guCgpGcmkgSnVsIDEyIDEwOjE5OjI3IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faTgwODYpOiAgRGVjbGFyZS4KCldlZCBKdWwgIDMgMTY6MDI6MzkgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9zcGFyY2xpdGUpOiAgRGVjbGFyZS4KClR1ZSBKdW4gMTggMTY6MDI6NDYgMTk5NiAgSmVmZnJleSBBLiBMYXcgIDxsYXdAcnRsLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faDgzMDBzKTogRGVjbGFyZS4KClR1ZSBKdW4gMTggMTU6MTE6MzMgMTk5NiAgS2xhdXMgS2FlbXBmICA8a2thZW1wZkBwcm9naXMuZGU+CgoJKiBmb3Blbi12bXMuaDogTmV3IGZpbGUuCgpUdWUgSnVuICA0IDE4OjU4OjE2IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbm90aWNlX2FsbCBmaWVsZC4KCkZyaSBBcHIgMjYgMTA6MzM6MTIgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmggKCNpZmRlZiBJTl9HQ0MpOiAjaW5jbHVkZSAiZ2Fuc2lkZWNsLmgiLgoJKFBST1RPLFBUUixjb25zdCk6IERlbGV0ZS4KCk1vbiBBcHIgMjIgMTc6Mjc6NDIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB0cmFkaXRpb25hbF9mb3JtYXQgZmllbGQuCgpNb24gQXByIDE1IDE1OjE2OjU2IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoY2hvb3NlX3RlbXBfYmFzZSk6IEFkZCBwcm90b3R5cGUuCgpUdWUgTWFyIDEyIDE3OjI5OjQ2IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoYmZkX3dyYXBwZWRfbGlua19oYXNoX2xvb2t1cCk6IERlY2xhcmUuCgkoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgd3JhcF9oYXNoIGZpZWxkLgoKV2VkIEZlYiAxNCAxNjo0OToxNyAxOTk2ICBNYXJ0aW4gQW5hbnRoYXJhbWFuICA8bWFydGluQG1haWwuaW1lY2gudW5pLWR1aXNidXJnLmRlPgoKCSogaWVlZS5oIChpZWVlX3JlY29yZF9lbnVtX3R5cGUpOiBEZWZpbmUKCWllZWVfZXh0ZXJuYWxfcmVmZXJlbmNlX2luZm9fZW51bS4KCkZyaSBGZWIgIDIgMTc6MDk6MjUgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKERJU0FTTV9SQVdfSU5TTik6IERlbGV0ZS4KClR1ZSBKYW4gMjMgMDk6MjE6NDcgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IFNldCBlbmRpYW4gdG8gQkZEX0VORElBTl9VTktOT1dOLgoJTmV3IGFyZ3VtZW50IEZQUklOVEZfRlVOQy4KCk1vbiBKYW4gMjIgMTY6Mzc6NTkgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgbWVtYmVycyBhcmNoLCBtYWNoLCBlbmRpYW4uCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogSW5pdGlhbGl6ZSB0aGVtLgoJKERJU0FTTV9SQVdfSU5TTnssRkxBR30pOiBEZWZpbmUuCgpUaHUgSmFuIDE4IDExOjMyOjM4IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IENoYW5nZSBvcG5hbWUgcGFyYW1ldGVyIHRvCgljb25zdCBjaGFyICouCgkoY3BsdXNfbWFuZ2xlX29wbmFtZSk6IENoYW5nZSByZXR1cm4gdHlwZSBhbmQgb3BuYW1lIHBhcmFtZXRlciB0bwoJY29uc3QgY2hhciAqLgoKRnJpIEphbiAgNSAwMDowMToyMiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBpZWVlLmggKGVudW0gaWVlZV9yZWNvcmQpOiBBZGQgaWVlZV9hc25fcmVjb3JkX2VudW0sCglpZWVlX2F0X3JlY29yZF9lbnVtLCBpZWVlX3R5X3JlY29yZF9lbnVtLCBpZWVlX2F0bl9yZWNvcmRfZW51bSwKCWllZWVfYmJfcmVjb3JkX2VudW0sIGFuZCBpZWVlX2JlX3JlY29yZF9lbnVtLgoKV2VkIEphbiAgMyAxMzoxMjowOSAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suaDogVXBkYXRlIGNvcHlyaWdodCB0byAxOTk2LgoJKF9vYnN0YWNrX21lbW9yeV91c2VkKTogRGVjbGFyZS4KCShvYnN0YWNrX21lbW9yeV91c2VkKTogRGVmaW5lIG1hY3JvLgoKVGh1IERlYyAyOCAxMTo0MjoxMiAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoeHN0cmR1cCk6IERlY2xhcmUuCgpUaHUgRGVjIDIxIDE0OjQ3OjE3IDE5OTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckB0aWt0b2suY3lnbnVzLmNvbT4KCgkqIHdhaXQuaDogUHJvdGVjdCBhbGwgbWFjcm9zIHdpdGggI2lmbmRlZi4KClR1ZSBPY3QgMjQgMjE6NDU6NDAgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBzdGF0aWNfbGluayBmaWVsZC4KClR1ZSBTZXAgMTIgMTY6Mjg6MDQgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQWRkIHN5bWJvbCBwYXJhbWV0ZXIgdG8KCXdhcm5pbmcgY2FsbGJhY2suCgpGcmkgU2VwICAxIDEzOjExOjUxIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IENoYW5nZSB3YXJuaW5nIGNhbGxiYWNrCgl0byB0YWtlIEJGRCwgc2VjdGlvbiwgYW5kIGFkZHJlc3MgYXJndW1lbnRzLgoKVGh1IEF1ZyAzMSAxNjo0NToxMiAxOTk1ICBzdGV2ZSBjaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IFJlbW92ZSBQRSBzdHVmZi4KClR1ZSBBdWcgMjIgMDM6MTg6MjMgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IERlY2xhcmUgeHN0cmVycm9yLiAgRnJvbSBQYXQgUmFua2luLgoKTW9uIEF1ZyAyMSAxODoxMTozNiAxOTk1ICBzdGV2ZSBjaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IFJlbW92ZSBQRSBzdHVmZi4KCldlZCBBdWcgIDIgMDg6MTQ6MTIgMTk5NSAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9zcGFyYzY0KTogRGVjbGFyZS4KCk1vbiBKdWwgMTAgMTM6MjY6NDkgMTk5NSAgRXJpYyBZb3VuZ2RhbGUgIDxlcmljQGFpYi5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCBzeW1ib2xpYy4KClN1biBKdWwgIDIgMTc6NDg6NDAgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IENoYW5nZSB0eXBlIG9mIGJhc2VfZmlsZSB0bwoJUFRSLgoKVGh1IEp1biAyOSAwMDowMjo0NSAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZGVkIGJhc2VfZmlsZSBtZW1iZXIuCgpUdWUgSnVuIDIwIDE2OjQwOjA0IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBhbnNpZGVjbC5oOiB3aW4zMnMgaXMgQU5TSSBlbm91Z2guCgpUaHUgTWF5IDE4IDA0OjI1OjUwIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBrci1sYXB0b3AuY3lnbnVzLmNvbT4KCglXZWQgTWF5IDEwIDE0OjI4OjE2IDE5OTUgUmljaGFyZCBFYXJuc2hhdyAocmVhcm5zaGFAYXJtbHRkLmNvLnVrKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2FybSk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCShwcmludF9pbnNuX3tsaXR0bGUsYmlnfV9hcm0pOiBOZXcgZGVjbGFyYXRpb25zLgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYXJtX2V4dCk6IERlY2xhcmUuCgpTYXQgTWF5IDEzIDEwOjE0OjA4IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN1YnN5dGVtLCBzdGFja19oZWFwX3BhcmFtZXRlcnMpOiBOZXcuCgpUaHUgTWF5ICA0IDE0OjM2OjQyIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgaW5jbHVkZSBhbnNpZGVjbC5oIGlmIElOX0dDQy4KClR1ZSBGZWIgMjEgMDA6Mzc6MjggMTk5NSAgSmVmZiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBocC1zeW10YWIuaDogRG9uJ3QgdXNlIGJpdGZpZWxkIGVudW1lcmF0aW9ucywgdGhlIEhQIEMgY29tcGlsZXIKCWRvZXMgbm90IGhhbmRsZSB0aGVtIGNvcnJlY3RseS4KClRodSBGZWIgIDkgMTQ6MjA6MjcgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogRG9uJ3QgZGVjbGFyZSBwYXJhbWV0ZXIgdHlwZTsgc29tZQoJc3lzdGVtcyBoYXZlIHRoaXMgaW4gdGhlaXIgaGVhZGVyIGZpbGVzLgoKV2VkIEZlYiAgOCAxNzozNTozOCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIGZvcm1hdCBvZiBjb21tb24KCXN5bWJvbCBpbmZvcm1hdGlvbiwgdG8gcmVtb3ZlIHJlc3RyaWN0aW9ucyBvbiBtYXhpbXVtIHNpemUgYW5kCglhbGlnbm1lbnQgcG93ZXIsIGJ5IHVzaW5nIGEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBpbnN0ZWFkLgoKTW9uIEZlYiAgNiAxNDo1NTozMiAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGVudW0gYmZkX2xpbmtfaGFzaF90eXBlKTogUmVuYW1lIGJmZF9saW5rX2hhc2hfd2VhawoJdG8gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsuICBBZGQgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrLgoKTW9uIEphbiAxNiAyMTowMDoyMyAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKEdEQl9JTklUX0RJU0FTU0VNQkxFX0lORk8sIGV0Yyk6IFJlbW92ZSBhbGwKCUdEQi1zcGVjaWZpYyBkZWZpbml0aW9ucy4KClN1biBKYW4gMTUgMTg6Mzk6MzUgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc3BsYXQ+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdzY1KTogRGVjbGFyZS4KClRodSBKYW4gMTIgMTc6NTE6MTcgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGN1am8uY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChoZXhfcCk6IEZpeCBzZW5zZSBvZiB0ZXN0LgoKV2VkIEphbiAxMSAyMjozNjo0MCAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKF9oZXhfYXJyYXlfc2l6ZSwgX2hleF9iYWQsIF9oZXhfdmFsdWUsIGhleF9pbml0LAoJaGV4X3AsIGhleF92YWx1ZSk6IE5ldyBtYWNyb3MgYW5kIGRlY2xhcmF0aW9ucywgZm9yIGhleC5jLgoKRnJpIEphbiAgNiAxNzo0NDoxNCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IE1ha2UgaWRlbXBvdGVudC4KCldlZCBEZWMgMTQgMTM6MDg6NDMgMTk5NCAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogcHJvZ3Jlc3MuaDogTmV3IGZpbGUsIGVtcHR5IGRlZmluaXRpb25zIGZvciBwcm9ncmVzcyBtYWNyb3MuCgpGcmkgTm92IDI1IDAwOjE0OjA1IDE5OTQgIEplZmYgTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogaHAtc3ltdGFiLmg6IE5ldyBmaWxlIGRlc2NyaWJpbmcgdGhlIGRlYnVnIHN5bWJvbHMgZW1pdHRlZAoJYnkgdGhlIEhQIEMgY29tcGlsZXJzLgoKRnJpIE5vdiAxMSAxNTo0ODozNyAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIHUuYy5zaXplIGZyb20gMjQKCXRvIDI2IGJpdHMsIGFuZCBjaGFuZ2UgdS5jLmFsaWdubWVudF9wb3dlciBmcm9tIDggdG8gNiBiaXRzLiAgNgoJYml0IGluIHRoZSBhbGlnbm1lbnQgcG93ZXIgaXMgZW5vdWdoIGZvciBhIDY0IGJpdCBhZGRyZXNzIHNwYWNlLgoKTW9uIE9jdCAzMSAxMzowMjo1MSAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChjcGx1c19tYW5nbGVfb3BuYW1lKTogRGVjbGFyZS4KClR1ZSBPY3QgMjUgMTE6Mzg6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBzYW5ndWluZS5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogRml4IGNvbW1lbnRzIGZvcgoJbXVsdGlwbGVfY29tbW9uIGZpZWxkLgoKU3VuIFNlcCAwNCAxNzo1ODoxMCAxOTk0ICBSaWNoYXJkIEVhcm5zaGF3IChyd2VAcGVnYXN1cy5lc3ByaXQuZWMub3JnKQoKCSogZGlzLWFzbS5oOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEFSTS4KCldlZCBBdWcgMTAgMTI6NTE6NDEgMTk5NCAgRG91ZyBFdmFucyAgKGRqZUBjYW51Y2suY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oIChzdHJzaWduYWwpOiBEb2N1bWVudCBpdHMgZXhpc3RlbmNlIGV2ZW4gaWYgd2UKCWNhbid0IGRlY2xhcmUgaXQuCgpUdWUgQXVnICAyIDE0OjQwOjAzIDE5OTQgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogb3M5ay5oOiBSZW1vdmUgdV9pbnQxNiwgdV9pbnQzMiwgYW5kIG93bmVyX2lkIHR5cGVkZWZzIGFuZAoJZXhwYW5kIHRoZWlyIHVzZXMuICBUaG9zZSBuYW1lcyBjb25mbGljdCB3aXRoIE1hY2ggaGVhZGVycy4KCkZyaSBKdWwgMjIgMTQ6MTc6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBzYW5ndWluZS5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IENoYW5nZSB1LmMuc2l6ZSBpbnRvIGEKCWJpdGZpZWxkLiAgQWRkIGZpZWxkIHUuYy5hbGlnbm1lbnRfcG93ZXIuCgpTdW4gSnVsIDEwIDAwOjI2OjM5IDE5OTQgIElhbiBEYWxsICAoZGFsbEBoZnJkLmRzdG8uZ292LmF1KQoKCSogZGlzLWFzbS5oOiBBZGQgcHJpbnRfaW5zbl9uczMyayBkZWNsYXJhdGlvbi4KCk1vbiBKdW4gMjAgMTc6MTM6MjkgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBzYW5ndWluZS5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChiZmRfbGlua19oYXNoX3RhYmxlKTogTWFrZSBjcmVhdG9yIGEgY29uc3QgcG9pbnRlci4KClNhdCBKdW4gMTggMTY6MDk6MzIgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogRGVjbGFyZS4KClRodSBKdW4gMTYgMTU6MTk6MDMgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgc2hhcmVkLgoKTW9uIEp1biAgNiAxNDozOTo0NCAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogUmVtb3ZlIHdyaXR0ZW4gZmllbGQ6Cglub3QgbmVlZGVkIGZvciBhbGwgYmFja2VuZHMuCgpUaHUgQXByIDI4IDE5OjA2OjUwIDE5OTQgIEtlbiBSYWVidXJuICAocmFlYnVybkBjdWpvLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlcik6IERlY2xhcmUuCgpGcmkgQXByICAxIDAwOjM4OjE3IDE5OTQgIEppbSBXaWxzb24gICh3aWxzb25AbW9sZS5nbnUuYWkubWl0LmVkdSkKCgkqIG9ic3RhY2suaDogRGVsZXRlIHVzZSBvZiBJTl9HQ0MgdG8gY29udHJvbCB3aGV0aGVyCglzdGRkZWYuaCBvciBnc3RkZGVmLmggaXMgaW5jbHVkZWQuCgpUdWUgTWFyIDIyIDEzOjA2OjAyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoZW51bSBiZmRfbGlua19vcmRlcl90eXBlKTogQWRkIGJmZF9kYXRhX2xpbmtfb3JkZXIuCgkoc3RydWN0IGJmZF9saW5rX29yZGVyKTogQWRkIGRhdGEgZmllbGQgdG8gdW5pb24uCgpNb24gTWFyIDIxIDE4OjQ1OjI2IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IENoYW5nZSBiaXRzaXplIGFyZ3VtZW50Cgl0byBhZGRfdG9fc2V0IHRvIHJlbG9jLiAgUmVtb3ZlIGJpdHNpemUgYXJndW1lbnQgZnJvbSBjb25zdHJ1Y3Rvci4KCUNvbW1lbnQgdGhhdCByZWxvY19vdmVyZmxvdywgcmVsb2NfZGFuZ2Vyb3VzIGFuZCB1bmF0dGFjaGVkX3JlbG9jCgltdXN0IGhhbmRsZSBOVUxMIHBvaW50ZXJzIGZvciByZWxvYyBsb2NhdGlvbi4KCShlbnVtIGJmZF9saW5rX29yZGVyX3R5cGUpOiBBZGQgYmZkX3NlY3Rpb25fcmVsb2NfbGlua19vcmRlciBhbmQKCWJmZF9zeW1ib2xfcmVsb2NfbGlua19vcmRlci4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIpOiBBZGQgcmVsb2MgZmllbGQgdG8gdW5pb24uCgkoc3RydWN0IGJmZF9saW5rX29yZGVyX3JlbG9jKTogRGVmaW5lLgoKTW9uIE1hciAxNCAxMjoyNzo1MCAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBpZWVlLWZsb2F0Lmg6IFJlbW92ZWQ7IG5vIGxvbmdlciB1c2VkLgoKVHVlIE1hciAgMSAxODoxMDo0OSAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogb3M5ay5oOiBvczkwMDAgdGFyZ2V0IHNwZWNpZmljIGhlYWRlciBmaWxlLCB0aGUgaGVhZGVyIG9mIHRoZQoJb2JqZWN0IGZpbGUgaXMgdXNlZCBub3cuCgpTdW4gRmViIDI3IDIxOjUyOjI2IDE5OTQgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBkZW5lYi5jeWdudXMuY29tKQoKCSogZmxvYXRmb3JtYXQuaDogTmV3IGZpbGUsIGludGVuZGVkIHRvIHJlcGxhY2UgaWVlZS1mbG9hdC5oLgoKU3VuIEZlYiAyMCAxNzoxNTo0MiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGxpc2EuY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKEFOU0lfUFJPVE9UWVBFUyk6IERlZmluZSBpZiB1c2luZyBBTlNJIHByb3RvdHlwZXMuCgpXZWQgRmViIDE2IDAxOjA3OjEyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oOiBEb24ndCBkZWNsYXJlIHN0cnNpZ25hbCwgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGgKCVNvbGFyaXMgc3lzdGVtIGhlYWRlciBmaWxlcy4KClNhdCBGZWIgMTIgMjI6MTE6MzIgMTk5NCAgSmVmZnJleSBBLiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBsaWJpYmVydHkuaCAoeGV4aXQpOiBVc2UgX192b2xhdGlsZV9fIHRvIGF2b2lkIGxvc2luZyBpZgoJY29tcGlsaW5nIHdpdGggZ2NjIC10cmFkaXRpb25hbC4KClRodSBGZWIgMTAgMTQ6MDU6NDEgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogbGliaWJlcnR5Lmg6IE5ldyBmaWxlLiAgRGVjbGFyZXMgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5CglsaWJpYmVydHkuCgpUdWUgRmViICA4IDA1OjE5OjUyIDE5OTQgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCglIYW5kbGUgb2JzdGFja19jaHVua19hbGxvYyByZXR1cm5pbmcgTlVMTC4gIFRoaXMgYWxsb3dzCglvYnN0YWNrcyB0byBiZSB1c2VkIGJ5IGxpYnJhcmllcywgd2l0aG91dCBmb3JjaW5nIHRoZW0KCXRvIGNhbGwgZXhpdCBvciBsb25nam1wLgoJKiBvYnN0YWNrLmggKHN0cnVjdCBvYnN0YWNrKTogQWRkIGFsbG9jX2ZhaWxlZCBmbGFnLgoJX29ic3RhY2tfYmVnaW4sIF9vYnN0YWNrX2JlZ2luXzEpOiBEZWNsYXJlIHRvIHJldHVybiBpbnQsIG5vdCB2b2lkLgoJKG9ic3RhY2tfZmluaXNoKTogSWYgYWxsb2NfZmFpbGVkLCByZXR1cm4gTlVMTC4KCShvYnN0YWNrX2Jhc2UsIG9ic3RhY2tfbmV4dF9mcmVlLCBvYmpzdGFja19vYmplY3Rfc2l6ZSk6CglJZiBhbGxvY19mYWlsZWQsIHJldHVybiAwLgoJKG9ic3RhY2tfZ3Jvdywgb2JzdGFja19ncm93MCwgb2JzdGFja18xZ3Jvdywgb2JzdGFja19wdHJfZ3JvdywKCW9ic3RhY2tfaW50X2dyb3csIG9ic3RhY2tfYmxhbmspOiBJZiBhbGxvY19mYWlsZWQsIGRvIG5vdGhpbmcgdGhhdAoJY291bGQgY29ycnVwdCB0aGUgb2JzdGFjay4KCk1vbiBKYW4gMjQgMTU6MDY6MDUgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQWRkIG5hbWUsIHJlbG9jX25hbWUgYW5kCglhZGRlbmQgYXJnbWVudHMgdG8gcmVsb2Nfb3ZlcmZsb3cgY2FsbGJhY2suCgpGcmkgSmFuIDIxIDE5OjEzOjEyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9iaWdfcG93ZXJwYywgcHJpbnRfaW5zbl9saXR0bGVfcG93ZXJwYywKCXByaW50X2luc25fcnM2MDAwKTogRGVjbGFyZS4KClRodSBKYW4gIDYgMTQ6MTU6NTUgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQWRkIGJpdHNpemUgYXJndW1lbnQgdG8KCWFkZF90b19zZXQgZmllbGQuICBBZGQgbmV3IGNhbGxiYWNrIG5hbWVkIGNvbnN0cnVjdG9yLgoKVGh1IERlYyAzMCAxMDo0NDowNiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHJ0bC5jeWdudXMuY29tKQoKCSogYmZkbGluay5oOiBOZXcgZmlsZSBmb3IgbmV3IEJGRCBsaW5rZXIgYmFja2VuZCByb3V0aW5lcy4KCk1vbiBOb3YgMjkgMTA6NDM6NTcgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChlbnVtIGRpc19pbnNuX3R5dXBlKTogUmVtb3ZlIG5vbi1BTlNJIHRyYWlsaW5nIGNvbW1hLgoKU2F0IE9jdCAgMiAyMDo0MjoyNiAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogTW92ZSBjb21tZW50IHRvIHJpZ2h0IHBsYWNlLgoKTW9uIEF1ZyAgOSAxOTowMzozNSAxOTkzICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfY2h1bmtmdW4sIG9ic3RhY2tfZnJlZWZ1bik6IEFkZCBkZWZucyBmcm9tCglwcmV2aW91cyB2ZXJzaW9uLiAgQXJlIHRoZXNlIEN5Z251cyBsb2NhbCBjaGFuZ2VzPwoKRnJpIEF1ZyAgNiAxNzowNTo0NyAxOTkzICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJKiBnZXRvcHQuaCwgb2JzdGFjay5oOiBVcGRhdGUgdG8gbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKTW9uIEF1ZyAgMiAxNDo0NToyOSAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIE1vdmUgZW51bSBvdXRzaWRlIG9mIHN0cnVjdCBkZWZuIHRvIGF2b2lkIHdhcm5pbmdzLgoKTW9uIEF1ZyAgMiAwODo0OTozMCAxOTkzICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogd2FpdC5oIChXRVhJVFNUQVRVUywgV1NUT1BTSUcpOiBNYXNrIGRvd24gdG8gOCBiaXRzLiAgVGhpcyBpcwoJZm9yIHN5c3RlbXMgdGhhdCBzdG9yZSBzdHVmZiBpbnRvIHRoZSBoaWdoIDE2IGJpdHMgb2YgYSB3YWl0CglzdGF0dXMuCgpGcmkgSnVsIDMwIDE4OjM4OjAyIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgQWRkIG5ldyBmaWVsZHMgaW5zbl9pbmZvX3ZhbGlkLCBicmFuY2hfZGVsYXlfaW5zbnMsCglkYXRhX3NpemUsIGluc25fdHlwZSwgdGFyZ2V0LCB0YXJnZXQyLiAgVGhlc2UgYXJlIHVzZWQgdG8gcmV0dXJuCglpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbnN0cnVjdGlvbiBkZWNvZGVycyBiYWNrIHRvIHRoZSBjYWxsaW5nCglwcm9ncmFtLiAgQWRkIGNvbW1lbnRzLCBtYWtlIG1vcmUgcmVhZGFibGUuCgpNb24gSnVsIDE5IDIyOjE0OjE0IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBkZW5lYi5jeWdudXMuY29tKQoKCSogbmxtOiAgTmV3IGRpcmVjdG9yeSBjb250YWluaW5nIE5MTS9OZXRXYXJlIGluY2x1ZGVzLgoKVGh1IEp1bCAxNSAxMjoxMDowNCAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY2FtYnJpZGdlLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkIGFwcGxpY2F0aW9uX2RhdGEuCgpUaHUgSnVsIDE1IDEyOjQxOjE1IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkZWQgZGVjbGFyYXRpb24gb2YgcHJpbnRfaW5zbl9tODhrLgoKRnJpIEp1bCAgMiAxMDozMTo1OSAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiBVc2UgQU5TSSBtYWNyb3MgaWYgX19taXBzIGFuZCBfU1lTVFlQRV9TVlI0IGFyZQoJZGVmaW5lZCwgc2luY2UgUklTQy9PUyBjYyBoYW5kbGVzIEFOU0kgZGVjbGFyYXRpb25zIGluIFNWUjQgbW9kZQoJYnV0IGRvZXMgbm90IGRlZmluZSBfX1NURENfXy4KClN1biBKdW4gMjAgMTg6Mjc6NTIgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQHBvc2VpZG9uLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IERvbid0IG5lZWQgdG8gaW5jbHVkZSBhbnNpZGVjbC5oIGFueSBtb3JlLgoKRnJpIEp1biAxOCAwMzoyMjoxMCAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIG9hc3lzLmg6ICBFbGltaW5hdGUgImludDhfdHlwZSIsICJpbnQxNl90eXBlIiwgImludDMyX3R5cGUiLCBhbmQKCXRoZWlyIHZhcmlhbnRzLiAgVGhlc2UgY2hhbmdlcyBhcmUgY29vcmRpbmF0ZWQgd2l0aCBjb3JyZXNwb25kaW5nCgljaGFuZ2VzIGluIC4uL2JmZC9vYXN5cy5jLgoKV2VkIEp1biAxNiAxMDo0MzowOCAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgTm90ZSB0aGF0IGl0IGhhcyBiZWVuIHJlbW92ZWQuCgpUdWUgSnVuICA4IDEyOjE2OjAzIDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHBoeWRlYXV4LmN5Z251cy5jb20pCgoJIFN1cHBvcnQgZm9yIEg4LzMwMC1ICgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9oODMwMCwgcHJpbnRfaW5zbl9oODMwMGgpOiBEZWNsYXJlIGl0LgoKVHVlIEp1biAgMSAwNzozNTowMyAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5Aa3ItcGMuY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKGNvbnN0KTogRG9uJ3QgZGVmaW5lIGl0IGlmIGl0J3MgYWxyZWFkeSBkZWZpbmVkLgoKVGh1IE1heSAyNyAxODoxOTo1MSAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY2FtYnJpZGdlLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faHBwYSk6IERlY2xhcmUgaXQuCgoJKiBiZmQuaDogTW92ZWQgdG8gYmZkIGRpcmVjdG9yeS4gIFNtYWxsIHN0dWIgaGVyZSBpbmNsdWRlcyBpdAoJd2l0aG91dCByZXF1aXJpbmcgIi1JLi4vYmZkIi4KClRodSBBcHIgMjkgMTI6MDY6MTMgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGRlbmViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCB3aXRoIEJTRl9GVU5DVElPTi4KCk1vbiBBcHIgMjYgMTg6MTU6NTAgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaCwgZGlzLWFzbS5oOiBVcGRhdGVkIHdpdGggSGl0YWNoaSBTSC4KCkZyaSBBcHIgMjMgMTg6NDE6MzggMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCB3aXRoIGFscGhhIGNoYW5nZXMuCgkqIGRpcy1hc20uaDogQWRkZWQgYWxwaGEuCgpGcmkgQXByIDE2IDE3OjM1OjMwIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3Igc2lnbmVkIGJmZF8qZ2V0XyouCgpUaHUgQXByIDE1IDA5OjI0OjIxIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZWQgZm9yIGZpbGVfdHJ1bmNhdGVkIGVycm9yLgoKVGh1IEFwciAgOCAxMDo1Mzo0NyAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oOiBJZiBubyBBTlNJLCBkZWZpbmUgY29uc3QgdG8gYmUgZW1wdHkuCgpUaHUgQXByICAxIDA5OjAwOjEwIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBEZWNsYXJlIGEyOWsgYW5kIGk5NjAgcHJpbnRfaW5zbl8qLgoKCSogZGlzLWFzbS5oOiBBZGQgcHJpbnRfYWRkcmVzc19mdW5jIGFuZCByZWxhdGVkIHN0dWZmLgoKCSogZGlzLWFzbS5oIChkaXNfYXNtX3JlYWRfbWVtb3J5KTogRml4IHByb3RvdHlwZS4KCldlZCBNYXIgMzEgMTc6NDA6MTYgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9pbnNuX3NwYXJjLgoKV2VkIE1hciAzMSAxNzo1MTo0MiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmb3IgQkZEX1JFTE9DX01JUFNfR1BSRUwgYW5kIGJmZF9bZ3NdZXRfZ3Bfc2l6ZQoJcHJvdG90eXBlcy4KCldlZCBNYXIgMzEgMTY6MzU6MTIgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogKGRpc2Fzc2VtYmxlX2luZm8pOiAgRml4IHR5cG8gaW4gcHJvdG90eXBlIG9mCglkaXNfYXNtX21lbW9yeV9lcnJvcigpLgoKVHVlIE1hciAzMCAxOTowOToyMyAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVyX2luZm8pOiBBZGQgcmVhZF9tZW1vcnlfZnVuYywKCW1lbW9yeV9lcnJvcl9mdW5jLCBidWZmZXIsIGFuZCBsZW5ndGguCgkoe0dEQl8sfUlOSVRfRElTQVNTRU1CTEVfSU5GTyk6IFNldCB0aGVtLgoJcHJpbnRfaW5zbl8qOiBSZW1vdmUgc2Vjb25kIGFyZ3VtZW50LgoKVHVlIE1hciAzMCAxNDo0ODo1NSAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIGxtYSBmaWVsZCBvZiBzZWN0aW9uLgoKVHVlIE1hciAzMCAxMjoyMjo1NSAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IFVzZSBBTlNJIHZlcnNpb25zIG9uIEFJWCByZWdhcmRsZXNzIG9mIF9fU1REQ19fLgoKRnJpIE1hciAxOSAxNDo0OTo0OSAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkIGg4NTAwLgoKVGh1IE1hciAxOCAxMzo0OTowOSAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBpZWVlLWZsb2F0Lmg6ICBNb3ZlZCBmcm9tIC4uL2dkYi4KCSogZGlzLWFzbS5oOiAgTmV3IGZpbGUuICBJbnRlcmZhY2UgdG8gZGlzLWFzc2VtYmxlci4KClRodSBNYXIgMTEgMTA6NTI6NTcgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChETUdMX05PX09QVFMpOiAgQWRkIGRlZmluZSAoc2V0IHRvIDApIHRvIHVzZQoJaW4gcGxhY2Ugb2YgYmFyZSAwLCBmb3IgcmVhZGFiaWxpdHkgcmVhc29ucy4KClR1ZSBNYXIgIDIgMTc6NTA6MTEgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgUmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byBjZnJvbnQgd2l0aCBBUk0uCgpUdWUgRmViIDIzIDEyOjIxOjE0IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIG5ldyBlbGVtZW50cyBpbiBKVU1QX1RBQkxFLgoKVHVlIEZlYiAxNiAwMDo1MTozMCAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIGZvciBCRkRfVkVSU0lPTiAyLjEuCgpUdWUgSmFuIDI2IDExOjQ5OjIwIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgZm9yIFNFQ19JU19DT01NT04gZmxhZy4KClR1ZSBKYW4gMTkgMTI6MjU6MTIgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgYmZkX2FzeW1ib2xfdmFsdWUgYnVnIGZpeC4KCkZyaSBKYW4gIDggMTY6Mzc6MTggMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSB0byBpbmNsdWRlIEVDT0ZGIHRkYXRhIGFuZCB0YXJnZXRfZmxhdm91ci4KClN1biBEZWMgMjcgMTc6NTI6MzAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBiZmQuaDogIEFkZCBkZWNsYXJhdGlvbiBmb3IgYmZkX2dldF9zaXplKCkuCgpUdWUgRGVjIDIyIDIyOjQyOjQ2IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogZGVtYW5nbGUuaDogIFByb3RlY3QgZmlsZSBmcm9tIG11bHRpcGxlIGluY2x1c2lvbnMgd2l0aAoJI2lmICFkZWZpbmVkKERFTUFOR0xFX0gpLi4uI2RlZmluZSBERU1BTkdMRV9ILi4uI2VuZGlmLgoKTW9uIERlYyAyMSAyMToyNTo1MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gZ2V0IGhwcGFfY29yZV9zdHJ1Y3QgZnJvbSBiZmQuYy4KClRodSBEZWMgMTcgMDA6NDI6MzUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBnZXQgdGVraGV4IHRkYXRhIG5hbWUgY2hhbmdlIGZyb20gYmZkLgoKTW9uIE5vdiAgOSAyMzo1NTo0MiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6ICBVcGRhdGUgY29tbWVudHMgdG8gZGlzY291cmFnZSB1c2Ugb2YgRVhGVU4uCgpUaHUgTm92ICA1IDE2OjM1OjQ0IDE5OTIgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGUgdG8gYnJpbmcgaW4gU0VDX1NIQVJFRF9MSUJSQVJZLgoKVGh1IE5vdiAgNSAwMzoyMTozMiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIG1hdGNoIEVYRlVOLCBiZmRfc2VjbGV0X3N0cnVjdCwgYW5kIFNERUYKCWNsZWFudXBzIGluIGJmZC4KCldlZCBOb3YgIDQgMDc6Mjg6MDUgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBib3V0LmggKE5fQ0FMTE5BTUUsIE5fQkFMTkFNRSk6IERlZmluZSBhcyBjaGFyLXR5cGUgdmFsdWVzLCBzbwoJd2lkZW5pbmcgd29ya3MgY29uc2lzdGVudGx5LgoKRnJpIE9jdCAxNiAwMzoxNzowOCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiAgVXBkYXRlIHRvIFJldmlzZWQgU3RhbmRhcmQgRlNGIFZlcnNpb24uCgpUaHUgT2N0IDE1IDIxOjQzOjIyIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBzZW5kYWkuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oIChzdHJ1Y3Qgb3B0aW9uKTogdXNlIHRoZSBwcm92aWRlZCBlbnVtIGZvciBoYXNfYXJnLgoKCSogZGVtYW5nbGUuaCAoQVVUT19ERU1BTkdMSU5HLCBHTlVfREVNQU5HTElORywKCSAgTFVDSURfREVNQU5HTElORyk6IHVsdHJpeCBjb21waWxlcnMgcmVxdWlyZSBlbnVtcyB0byBiZQoJICBlbnVtcyBhbmQgaW50cyB0byBiZSBpbnRzIGFuZCBjYXN0cyB3aGVyZSB0aGV5IG1lZXQuICBjYXN0IHNvbWUKCSAgZW51bXMgaW50byBpbnRzLgoKVGh1IE9jdCAxNSAwNDozNTo1MSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIGFmdGVyIGNvbW1lbnQgY2hhbmdlcy4KClRodSBPY3QgIDggMDk6MDM6MDIgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaCAoYmZkX2dldF9zeW1ib2xfbGVhZGluZ19jaGFyKTogbmV3IG1hY3JvIGZvciBnZXR0aW5nIGluIHh2ZWMKClRodSBTZXAgIDMgMDk6MTA6NTAgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oIChzdHJ1Y3QgcmVsb2NfaG93dG9fc3RydWN0KTogIHNpemUgbmVlZHMgdG8gYmUgc2lnbmVkIGlmCglpdCdzIGdvaW5nIHRvIGhvbGQgbmVnYXRpdmUgdmFsdWVzLgoKU3VuIEF1ZyAzMCAxNzo1MDoyNyAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgTmV3IGZpbGUsIG1vdmVkIGZyb20gLi4vZ2RiLiAgTWFkZSBpbmRlcGVuZGVudAoJb2YgZ2RiLiAgQWxsb3cgZGVtYW5nbGluZyBzdHlsZSBvcHRpb24gdG8gYmUgcGFzc2VkIGFzIGEKCXBhcmFtZXRlciB0byBjcGx1c19kZW1hbmdsZSgpLCBidXQgdXNpbmcgdGhlCgljdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUgZ2xvYmFsIGFzIHRoZSBkZWZhdWx0LgoKU2F0IEF1ZyAyOSAxMDowNzo1NSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIE1lcmdlIGNvbW1lbnQgY2hhbmdlIGZyb20gY3VycmVudCBGU0YgdmVyc2lvbi4KClRodSBBdWcgMjcgMTI6NTk6MjkgMTk5MiAgQnJlbmRhbiBLZWhvZSAgKGJyZW5kYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBhZGQgd2UzMmsKClR1ZSBBdWcgMjUgMTU6MDc6NDcgMTk5MiAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAdGhlcHViLmN5Z251cy5jb20pCgoJKiBiZmQuaDogbmV3IGFmdGVyIFo4MDAwIHN0dWZmCgpNb24gQXVnIDE3IDA5OjAxOjIzIDE5OTIgIEtlbiBSYWVidXJuICAocmFlYnVybkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFJlZ2VuZXJhdGVkIGFmdGVyIHBhZ2Uvc2VnbWVudCBzaXplIGNoYW5nZXMuCgpTYXQgQXVnICAxIDEzOjQ2OjMxIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiBNZXJnZSBjaGFuZ2VzIGZyb20gY3VycmVudCBGU0YgdmVyc2lvbi4KCk1vbiBKdWwgMjAgMjE6MDY6MjMgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmggKGFyZWFfaWQsIGZsYWdzKTogIFJlbW92ZSwgcmVwbGFjZSB3aXRoIGV4dHJhX2FyZywKCXVzZV9leHRyYV9hcmcsIGFuZCBtYXliZV9lbXB0eV9vYmplY3QuCgkqIG9ic3RhY2suaCAoT0JTVEFDS19NQVlCRV9FTVBUWV9PQkpFQ1QsIE9CU1RBQ0tfTU1BTExPQ19MSUtFKToKCVJlbW92ZSwgcmVwbGFjZWQgYnkgbWF5YmVfZW1wdHlfb2JqZWN0IGFuZCB1c2VfZXh0cmFfYXJnIGJpdGZpZWxkcy4KCSogb2JzdGFjay5oIChvYnN0YWNrX2Z1bGxfYmVnaW4sIF9vYnN0YWNrX2JlZ2luKTogIFJlbW92ZSBhcmVhX2lkCglhbmQgZmxhZ3MgYXJndW1lbnRzLgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfYWxsb2NfYXJnKTogIE5ldyBtYWNybyB0byBzZXQgZXh0cmFfYXJnLgoKVGh1IEp1bCAxNiAwODoxMjo0NCAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBuZXcgYWZ0ZXIgYWRkaW5nIEJGRF9JU19SRUxBWEFCTEUKClNhdCBKdWwgIDQgMDM6MjI6MjMgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlZ2VuIGFmdGVyIGFkZGluZyBCU0ZfRklMRS4KCk1vbiBKdW4gMjkgMTQ6MTg6MzYgMTk5MiAgRnJlZCBGaXNoICAoZm5mIGF0IHN1bmZpc2gpCgoJKiBvYnN0YWNrLmg6ICBDb252ZXJ0IGJjb3B5KCkgdXNlIHRvIG1lbWNweSgpLCB3aGljaCBpcyBtb3JlCglwb3J0YWJsZSwgbW9yZSBzdGFuZGFyZCwgYW5kIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBnY2MncyBidWlsdGluCglmdW5jdGlvbnMgZm9yIGluY3JlYXNlZCBwZXJmb3JtYW5jZS4KClRodSBKdW4gMjUgMDQ6NDY6MDggMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oIChQQVJBTVMpOiAgSW5jb3Jwb3JhdGUgdGhpcyBtYWNybyBmcm9tIGdkYidzIGRlZnMuaC4KCUl0J3MgYSBjbGVhbmVyIHdheSB0byBmb3J3YXJkLWRlY2xhcmUgZnVuY3Rpb24gcHJvdG90eXBlcy4KCkZyaSBKdW4gMTkgMTU6NDY6MzIgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgSFBQQSBtZXJnZS4KClR1ZSBKdW4gMTYgMjE6MzA6NTYgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogZ3JhdHVpdG91cyB3aGl0ZSBzcGFjZSBjaGFuZ2VzIG1lcmdlZCBmcm9tIG90aGVyIHByZXAKCSAgcmVsZWFzZXMuCgpUaHUgSnVuIDExIDAxOjEwOjU1IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBSZWdlbidkIGZyb20gYmZkLmMgYWZ0ZXIgcmVtb3ZpbmcgZWxmX2NvcmVfdGRhdGFfc3RydWN0LgoKTW9uIE1heSAxOCAxNzoyOTowMyAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBtZXJnZWQgY2hhbmdlcyBmcm9tIG1ha2UtMy42Mi4xMS4KCgkqIGdldG9wdC5oOiBtZXJnZWQgY2hhbmdlcyBmcm9tIGdyZXAtMS42IChhbHBoYSkuCgpGcmkgTWF5ICA4IDE0OjUzOjMyIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gYmlzb24tMS4xOC4KClNhdCBNYXIgMTQgMTc6MjU6MjAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6ICBBZGQgImFyZWFfaWQiIGFuZCAiZmxhZ3MiIG1lbWJlcnMgdG8gb2JzdGFjawoJc3RydWN0dXJlLiAgQWRkIG9ic3RhY2tfY2h1bmtmdW4oKSBhbmQgb2JzdGFja19mcmVlZnVuKCkgdG8KCXNldCBmdW5jdGlvbnMgZXhwbGljaXRseS4gIENvbnZlcnQgbWF5YmVfZW1wdHlfb2JqZWN0IHRvCglhIGJpdCBpbiAiZmxhZ3MiLgoKVGh1IEZlYiAyNyAyMjowMTowMiAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAY3lnbnVzLmNvbSkKCgkqIHdhaXQuaCAoV0lGU1RPUFBFRCk6ICBBZGQgSUJNIHJzNjAwMC1zcGVjaWZpYyB2ZXJzaW9uLgoKRnJpIEZlYiAyMSAyMDo0OToyMCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIEFkZCBvYnN0YWNrX2Z1bGxfYmVnaW4uCgkqIGJmZC5oLCBvYnN0YWNrLmg6ICBQcm90b2xpbnQuCgpUaHUgSmFuIDMwIDAxOjE4OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBSZW1vdmUgY29tbWEgZnJvbSBlbnVtIGRlY2xhcmF0aW9uLgoKTW9uIEphbiAyNyAyMjowMToxMyAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBjeWdudXMuY29tKQoKCSogYmZkLmggOiBuZXcgdGFyZ2V0IGVudHIsIGJmZF9yZWxheF9zZWN0aW9uCgpXZWQgRGVjIDE4IDE3OjE5OjQ0IDE5OTEgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCwgaWVlZS5oOiAgQU5TSWZ5IGVudW1zLgoKVGh1IERlYyAxMiAyMDo1OTo1NiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGZvcGVuLXNhbWUuaCwgZm9wZW4tYmluLmg6ICBOZXcgZmlsZXMgZm9yIGNvbmZpZ3VyaW5nCgl3aGV0aGVyIGZvcGVuIGRpc3Rpbmd1aXNoZXMgYmluYXJ5IGZpbGVzIG9yIG5vdC4gIEZvciB1c2UKCWJ5IGhvc3QtZGVwZW5kZW50IGNvbmZpZyBmaWxlcy4KClNhdCBOb3YgMzAgMjA6NDY6NDMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgcnRsLmN5Z251cy5jb20pCgoJKiBiZmQuaDogY2hhbmdlIHRoZSBkb2N1bWVudGF0aW9uIGZvcm1hdC4KCgkqIGNyZWF0ZWQgY29mZiwgZWxmIGFuZCBvcGNvZGUgYW5kIGFvdXQgZGlyZWN0b3JpZXMuIE1vdmVkOgoKCWFvdXQ2NC5oCT09PiBhb3V0L2FvdXQ2NC5oCglhci5oCQk9PT4gYW91dC9hci5oCglhLm91dC5lbmNhcC5oCT09PiBhb3V0L2VuY2FwLmgKCWEub3V0Lmhvc3QuaAk9PT4gYW91dC9ob3N0LmgKCWEub3V0LmhwLmgJPT0+IGFvdXQvaHAuaAoJYS5vdXQuc3VuNC5oCT09PiBhb3V0L3N1bjQuaAoJcmFubGliLmgJPT0+IGFvdXQvcmFubGliLmgKCXJlbG9jLmgJCT09PiBhb3V0L3JlbG9jLmgKCXN0YWIuZGVmCT09PiBhb3V0L3N0YWIuZGVmCglzdGFiLmdudS5oCT09PiBhb3V0L3N0YWJfZ251LmgKCgljb2ZmLWEyOWsuaAk9PT4gY29mZi9hMjlrLmgKCWNvZmYtaDgzMDAuaAk9PT4gY29mZi9oODMwMC5oCgljb2ZmLWkzODYuaAk9PT4gY29mZi9pMzg2LmgKCWNvZmYtaTk2MC5oCT09PiBjb2ZmL2k5NjAuaAoJaW50ZXJuYWxjb2ZmLmgJPT0+IGNvZmYvaW50ZXJuYWwuaAoJY29mZi1tNjhrLmgJPT0+IGNvZmYvbTY4ay5oCgljb2ZmLW04OGsuaAk9PT4gY29mZi9tODhrLmgKCWNvZmYtbWlwcy5oCT09PiBjb2ZmL21pcHMuaAoJY29mZi1yczYwMDAuaAk9PT4gY29mZi9yczYwMDAuaAoKCWVsZi1jb21tb24uaAk9PT4gZWxmL2NvbW1vbi5oCglkd2FyZi5oCQk9PT4gZWxmL2R3YXJmLmgKCWVsZi1leHRlcm5hbC5oCT09PiBlbGYvZXh0ZXJuYWwuaAoJZWxmLWludGVybmFsLmggID09PiBlbGYvaW50ZXJuYWwuaAoKCWEyOWstb3Bjb2RlLmgJPT0+IG9wY29kZS9hMjlrLmgKCWFybS1vcGNvZGUuaAk9PT4gb3Bjb2RlL2FybS5oCgloODMwMC1vcGNvZGUuaAk9PT4gb3Bjb2RlL2g4MzAwLmgKCWkzODYtb3Bjb2RlLmgJPT0+IG9wY29kZS9pMzg2LmgKCWk4NjAtb3Bjb2RlLmgJPT0+IG9wY29kZS9pODYwLmgKCWk5NjAtb3Bjb2RlLmgJPT0+IG9wY29kZS9pOTYwLmgKCW02OGstb3Bjb2RlLmgJPT0+IG9wY29kZS9tNjhrLmgKCW04OGstb3Bjb2RlLmgJPT0+IG9wY29kZS9tODhrLmgKCW1pcHMtb3Bjb2RlLmgJPT0+IG9wY29kZS9taXBzLmgKCW5wMS1vcGNvZGUuaAk9PT4gb3Bjb2RlL25wMS5oCgluczMyay1vcGNvZGUuaAk9PT4gb3Bjb2RlL25zMzJrLmgKCXBuLW9wY29kZS5oCT09PiBvcGNvZGUvcG4uaAoJcHlyLW9wY29kZS5oCT09PiBvcGNvZGUvcHlyLmgKCXNwYXJjLW9wY29kZS5oCT09PiBvcGNvZGUvc3BhcmMuaAoJdGFob2Utb3Bjb2RlLmgJPT0+IG9wY29kZS90YWhvZS5oCgl2YXgtb3Bjb2RlLmgJPT0+IG9wY29kZS92YXguaAoKCgpXZWQgTm92IDI3IDEwOjM4OjMxIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6IChpbnRlcm5hbF9zY25oZHIpIHRvb2sgb3V0ICNkZWYgZGVwZW5kZW5jeSwgbm93CglzX25yZWxvYyBhbmQgc19ubG5ubyBhcmUgYWx3YXlzIGxvbmcuIAkoaW50ZXJuYWxfcmVsb2MpOiBhbGx3YXlzCgloYXMgYW4gb2Zmc2V0IGZpZWxkIG5vdy4KCkZyaSBOb3YgMjIgMDg6MTI6NTggMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBjb2ZmLXJzNjAwMC5oOiAgTGludDsgdXNlIHVuc2lnbmVkIGNoYXJzIGZvciBleHRlcm5hbCBmaWVsZHMuCgkqIGludGVybmFsY29mZi5oOiAgTGludDsgY2FzdCBzdG9yYWdlIGNsYXNzZXMgdG8gc2lnbmVkIGNoYXIuCgpUaHUgTm92IDIxIDIxOjAxOjA1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3RhYi5kZWY6IFJlbW92ZSB0aGUgR05VIGV4dGVuZGVkIHR5cGUgY29kZXMgKGUuZy4gTl9TRVRUKS4KCSogYW91dDY0Lmg6ICBUaGUgaGV1cmlzdGljIGZvciBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuCglzdW5vcy1zdHlsZSBhbmQgYnNkLXN0eWxlIFpNQUdJQyBmaWxlcyAod3J0LiB3aGVyZSB0aGUKCXRleHQgc2VnbWVudCBzdGFydHMpIGlzIG1vdmVkIGludG8gKHRoZSBkZWZhdWx0IGRlZmluaXRpb24gb2YpCgl0aGUgbWFjcm8gTl9IRUFERVJfSU5fVEVYVC4gIFRoaXMgZGVmaW5pdGlvbiBpcyBvbmx5IHVzZWQKCWlmIG5vIG90aGVyIGRlZmluaXRpb24gaXMgdXNlZCAtIGUuZy4gYmZkL25ld3NvczMuYyBkZWZpbmVzCglOX0hFQURFUl9JTl9URVhUKHgpIHRvIGJlIGFsd2F5cyAwIChhcyBiZWZvcmUpLgoKVGh1IE5vdiAyMSAxMTo1MzowMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oIChOX1RYVEFERFIsIE5fVFhUT0ZGLCBOX1RYVFNJWkUpOiAgTmV3IGRlZmluaXRpb25zCgl0aGF0IHNob3VsZCBoYW5kbGUgYWxsIHVzZXMuICBMT0dJQ0FMXyB2ZXJzaW9ucyBkZWxldGVkLgoJRWxpbWluYXRlIE5fSEVBREVSX0lOX1RFWFQsIHVzaW5nIGFfZW50cnkgdG8gZGV0ZXJtaW5lIHdoaWNoCglraW5kIG9mIHptYWdpYyBhLm91dCBmaWxlIHdlIGFyZSBsb29raW5nIGF0LgoJKiBjb2ZmLXJzNjAwMC5oOiAgVHlwby4KClR1ZSBOb3YgMTkgMTg6NDM6MzcgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKE5vdGU6ICBUaGlzIGlzIGEgcmV2aXNlZCBlbnRyeSwgYXMgd2FzIGFvdXQ2NC5oLikKCSogYW91dDY0Lmg6ICBTb21lIGNsZWFudXBzIG9mIE5fVFhUQUREUiBhbmQgTl9UWFRPRkY6CglXaWxsIG5vdyB3b3JrIGZvciBib3RoIG9sZC0gYW5kIG5ldy1zdHlsZSBaTUFHSUMgZmlsZXMsCglkZXBlbmRpbmcgb24gTl9IRUFERVJfSU5fVEVYVCBtYWNyby4KCUFkZCBMT0dJQ0FMX1RYVEFERFIsIExPSUNBTF9UWFRPRkYgYW5kIExPR0lDQUxfVFhUU0laRQoJdGhhdCBkb24ndCBjb3VudCB0aGUgZXhlYyBoZWFkZXIgYXMgcGFydAoJb2YgdGhlIHRleHQgc2VnbWVudCwgdG8gYmUgY29uc2lzdGVudCB3aXRoIGJmZC4KCSogYS5vdXQuc3VuNC5oOiAgU2ltcGxpZmllZC9maXhlZCBmb3IgcHJldmlvdXMgY2hhbmdlLgoKTW9uIE5vdiAxOCAwMDowMjowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGR3YXJmLmg6ICBVcGRhdGUgdG8gRFdBUkYgZHJhZnQgNSB2ZXJzaW9uIGZyb20gZ2NjMi4KClRodSBOb3YgMTQgMTk6NDQ6NTkgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzdGFiLmRlZjogIEFkZGVkIGRlZnMgZm9yIGV4dGVuZGVkIEdOVSBzeW1ib2wgdHlwZXMsCglzdWNoIGFzIE5fU0VUVC4gIFRoZXNlIGFyZSBub3JtYWxseSBpZmRlZidkIG91dCAoYmVjYXVzZQoJb2YgY29uZmxpY3RzIHdpdGggYS5vdXQuZ251LmgpLCBidXQgYXJlIHVzZWQgYnkgYmZiX3N0YWJfbmFtZSgpLgoKVGh1IE5vdiAxNCAxOToxNzowMyAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1jb21tb24uaDogIEFkZCBkZWZpbmVzIHRvIHN1cHBvcnQgRUxGIHN5bWJvbCB0YWJsZSBjb2RlLgoKTW9uIE5vdiAxMSAxOTowMTowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1pbnRlcm5hbC5oLCBlbGYtZXh0ZXJuYWwuaCwgZWxmLWNvbW1vbi5oOiAgQWRkIHN1cHBvcnQgZm9yCglub3RlIHNlY3Rpb25zLCB3aGljaCBhcmUgdXNlZCBpbiBFTEYgY29yZSBmaWxlcyB0byBob2xkIGNvcGllcwoJb2YgdmFyaW91cyAvcHJvYyBzdHJ1Y3R1cmVzLgoKVGh1IE5vdiAgNyAwODo1ODoyNiAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBjeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6IHRvb2sgb3V0IHRoZSBNODggZGVwZW5kZW5jeSBpbiB0aGUgbGluZW5vCglzdHJ1Y3QuCgkqIGNvZmYtbTg4ay5oOiBkZWZpbmVzIEdFVF9MSU5FTk9fTE5OTyBhbmQgUFVUX0xJTkVOT19MTk5PIHRvIHVzZQoJMzJiaXQgbGlubm8gZW50cmllcy4KCSogYTI5ay1vcGNvZGUuaDogZml4ZWQgZW5jb2Rpbmcgb2YgbXRhY2MKClN1biBOb3YgIDMgMTE6NTQ6MjIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmcm9tIC4uL2JmZC9iZmQtaW4uaCAocS52KS4KCkZyaSBOb3YgIDEgMTE6MTM6NTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCB4X2NzZWN0IGRlZmluZXMuCgpGcmkgT2N0IDI1IDAzOjE4OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogUmVuYW1lIENPRkYtcmVsYXRlZCBmaWxlcyBpbiBgY29mZi1BUkNILmgnIGZvcm0uCgljb2ZmLWEyOWsuaCwgY29mZi1pMzg2LmgsIGNvZmYtaTk2MC5oLCBjb2ZmLW02OGsuaCwgY29mZi1tODhrLmgsCgljb2ZmLW1pcHMuaCwgY29mZi1yczYwMDAuaCB0byBiZSBleGFjdC4KClRodSBPY3QgMjQgMjI6MTE6MTEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJUlMvNjAwMCBzdXBwb3J0LCBieSBNZXRpbiBHLiBPemlzaWssIE1pbWkgUGiB+4H0bmctVGiB5W8gVoH1LCBhbmQKCUpvaG4gR2lsbW9yZS4KCgkqIGEub3V0LmdudS5oOiAgVXBkYXRlIHNsaWdodGx5LgoJKiBiZmQuaDogIEFkZCBuZXcgZXJyb3IgY29kZSwgZml4IGRvYywgYWRkIGJmZF9hcmNoX3JzNjAwMC4KCSogaW50ZXJuYWxjb2ZmLmg6ICBBZGQgbW9yZSBGXyBjb2RlcyBmb3IgZmlsZWhkci4gIEFkZAoJcnMvNjAwMC1kZXBlbmRlbnQgZmllbGRzIHRvIGFvdXRoZHIuICBBZGQgc3RvcmFnZSBjbGFzc2VzCgl0byBzeW1lbnRzLiAgQWRkIDYwMDAtc3BlY2lmaWMgYXV4ZW50LiAgQWRkIHJfc2l6ZSBpbiByZWxvYy4KCSogcnM2MDAwY29mZi5jOiAgTmV3IGZpbGUuCgpUaHUgT2N0IDI0IDA0OjEzOjIwIDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZHdhcmYuaDogTmV3IGZpbGUgZm9yIGR3YXJmIHN1cHBvcnQuICBDb3BpZWQgZnJvbSBnY2MyCglkaXN0cmlidXRpb24uCgpXZWQgT2N0IDE2IDEzOjMxOjQ1IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYW91dDY0Lmg6ICBSZW1vdmUgUEFHRV9TSVpFIGRlZmluZXM7IHRoZXkgYXJlIHRhcmdldC1kZXBlbmRlbnQuCglBZGQgTl9GTl9TRVEgZm9yIE5fRk4gc3ltYm9sIHR5cGUgdXNlZCBvbiBTZXF1ZW50IG1hY2hpbmVzLgoJKiBzdGFiLmRlZjogIEluY2x1ZGUgTl9GTl9TRVEgaW4gdGFibGUuCgkqIGJvdXQuaDogIEV4dGVybmFsIGZvcm1hdHMgb2Ygc3RydWN0dXJlcyB1c2UgdW5zaWduZWQgY2hhcnMuCgpGcmkgT2N0IDExIDEyOjQwOjQzIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc3RldmUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOnVwZ3JhZGUgZnJvbSBiZmQuYwoJKiBpbnRlcm5hbGNvZmYuaDogYWRkIG5fbmFtZSwgbl96ZXJvZXMgYW5kIG5fb2Zmc2V0IG1hY3JvcwoJKiBhbWRjb2ZmLmg6IERlZmluZSBPTUFHSUMgYW5kIEFPVVRIRFJTWi4KCkZyaSBPY3QgMTEgMTA6NTg6MDYgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBhLm91dC5ob3N0Lmg6IENoYW5nZSBTRUdNRU5UX1NJWkUgdG8gMHgxMDAwIGZvciBTb255LgoJKiBiZmQuaCAoYWxpZ25fcG93ZXIpOiBBZGQgKGFjdHVhbGx5IG1vdmUpIGNvbW1lbnQuCgpUdWUgT2N0ICA4IDE1OjI5OjMyIDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3lzL2gtcnRic2QuaDogRGVmaW5lIE1JU1NJTkdfVkZQUklOVCAoZm9yIGJpbnV0aWxzL2J1Y29tbS5jKS4KClN1biBPY3QgIDYgMTk6MjQ6MzkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaDogIE1vdmUgc3RydWN0IGludGVybmFsX2V4ZWMgdG8gLi4vYmZkL2xpYmFvdXQuaCBzbwoJaXQgY2FuIGJlIHNoYXJlZCBieSBhbGwgYGEub3V0LWZhbWlseScgY29kZS4gIFJlbmFtZQoJRVhURVJOQUxfTElTVF9TSVpFIHRvIEVYVEVSTkFMX05MSVNUX1NJWkUuICBVc2UgYmFzaWMgdHlwZXMKCWZvciBubGlzdCBtZW1iZXJzLCBhbmQgbWFrZSBzdHJ4IGludGVncmFsIHJhdGhlciB0aGFuIHBvaW50ZXIuCglNb3JlIGNvbW1lbnRhcnkgb24gbl90eXBlIHZhbHVlcy4KCSogYm91dC5oOiAgUHJvdmlkZSBhIHN0cnVjdCBleHRlcm5hbF9leGVjIHJhdGhlciB0aGFuIGFuCglpbnRlcm5hbF9leGVjLgoJKiBtNjhrY29mZi5oOiAgUmVtb3ZlIGB0YWdlbnRyaWVzJyB3aGljaCBzbnVjayBpbiBmcm9tIHRoZSBpOTYwCglDT0ZGIHBvcnQuCgpGcmkgT2N0ICA0IDAxOjI1OjU5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogaDgzMDAtb3Bjb2RlLmg6ICBSZW1vdmUgYF9lbnVtJyBmcm9tIHRoZSB0eXBlZGVmIGZvciBhbiBlbnVtLgoJKiBiZmQuaDogIFVwZGF0ZSB0byBtYXRjaCBiZmQgY2hhbmdlcy4KCgkqIHN5cy9oLWkzODZtYWNoLmgsIHN5c2RlcC5oOiAgQWRkIDM4NiBNYWNoIGhvc3Qgc3VwcG9ydC4KClR1ZSBPY3QgIDEgMDQ6NTg6NDIgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCwgZWxmLWNvbW1vbi5oLCBlbGYtZXh0ZXJuYWwuaCwgZWxmLWludGVybmFsLmg6CglBZGQgcHJlbGltaW5hcnkgRUxGIHN1cHBvcnQsIHN1ZmZpY2llbnQgZm9yIEdEQiwgZnJvbSBGcmVkIEZpc2guCgkqIHN5c2RlcC5oLCBzeXMvaC1hbWl4Lmg6ICBTdXBwb3J0IEFtaWdhIFNWUjQuCgoJKiBzeXMvaC12YXh1bHQuaDogIE1ha2UgaXQgd29yay4gIChEYXZpZCBUYXlsb3IgPHRheWxvckB0aGluay5jb20+KQoJKiBhLm91dC52YXguaDogIFJlbW92ZSB1bnVzZWQgYW5kIGNvbmZ1c2luZyBmaWxlLgoKTW9uIFNlcCAzMCAxMjo1MjozNSAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN5c2RlcC5oOiBEZWZpbmUgTkVXU09TM19TWVMsIGFuZCB1c2UgaXQuCgpGcmkgU2VwIDIwIDEzOjM4OjIxIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmggKE5fRk4pOiAgSXRzIHZhbHVlICpyZWFsbHkgaXMqIDB4MUYuCglGaXggaXQsIGFuZCBhZGQgY29tbWVudHMgd2FybmluZyBhYm91dCBvci1pbmcgTl9FWFQgd2l0aCBpdAoJYW5kL29yIE5fV0FSTklORy4KCSogYW91dDY0LmggKE5fRk4pOiAgRml4IHZhbHVlLCBhZGQgY29tbWVudHMgYWJvdXQgTl9FWFQuCgkqIHN0YWIuZGVmICh0YWJsZSBhdCBlbmQpOiAgVXBkYXRlIHRvIHNob3cgYWxsIHRoZSB0eXBlCgl2YWx1ZXMgPDB4MjAsIGluY2x1ZGluZyBsb3cgb3JkZXIgYml0cy4gIE1vdmUgTl9GTiB0bwoJaXRzIHJpZ2h0ZnVsIHBsYWNlLgoKVHVlIFNlcCAxNyAxNzo0MTozNyAxOTkxICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogc3lzL2gtaXJpeDMuaDogIHNnaS9pcml4IHN1cHBvcnQuCgpUdWUgU2VwIDE3IDA3OjUyOjU5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIHN0YWIuZGVmIChOX0RFRkQpOiAgQWRkIEdOVSBNb2R1bGEtMiBkZWJ1ZyBzdGFiLCBmcm9tIEFuZHJldwoJQmVlcnMuCgpUaHUgU2VwIDEyIDE0OjEyOjU5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oIChTWU1OTUxFTiwgRklMTk1MRU4sIERJTU5VTSk6ICBEZWZpbmUgdGhlc2UKCWZvciBpbnRlcm5hbGNvZmYsIHNlcGFyYXRlbHkgZnJvbSB0aGUgdmFyaW91cyBleHRlcm5hbCBjb2ZmJ3MuCgkqIGFtZGNvZmYuaCwgYmNzODhrY29mZi5oLCBpMzg2Y29mZi5oLCBpbnRlbC1jb2ZmLmgsIG02OGtjb2ZmLmgsCgltODhrLWJjcy5oOiBQcmVmaXggU1lNTk1MRU4sIEZJTE5NTEVOLCBhbmQgRElNTlVNIHdpdGggRV8ncyBmb3IKCXRoZSBleHRlcm5hbCBzdHJ1Y3QgZGVmaW5pdGlvbnMuCgkqIGVjb2ZmLmg6IFJlbW92ZSB0aGVzZSAjZGVmaW5lJ3MsIGtsdWRnZSBubyBsb25nZXIgbmVlZGVkLgoKCSogc3lzL2gtdWx0cmEzLmg6ICBBZGQgbmV3IFVsdHJhY29tcHV0ZXIgaG9zdC4KCSogc3lzZGVwLmg6ICBBZGQgVUxUUkEzX1NZTTFfU1lTIGFuZCB1c2UgaXQuCgpUdWUgU2VwIDEwIDEwOjExOjQ2IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGkzODZjb2ZmLmggKExJTkVTWik6ICBBbHdheXMgNiwgbm90IGJhc2VkIG9uIHNpemVvZigpLgoJKEZpeCBmcm9tIFBldGVyIFNjaGF1ZXIgPHBlc0ByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlPi4pCgpXZWQgU2VwICA0IDA4OjU4OjM3IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGEub3V0LmdudS5oLCBhb3V0NjQuaDogIEFkZCBOX1dBUk5JTkcuICBDaGFuZ2UgTl9GTiB0byAweDBFLAoJdG8gbWF0Y2ggU3VuT1MgYW5kIEJTRC4gIEFkZCBOX0NPTU0gYXMgMHgxMiBmb3IgU3VuT1Mgc2hhcmVkIGxpYgoJc3VwcG9ydC4KCSogc3RhYi5kZWY6ICBBZGQgTl9DT01NIHRvIHRhYmxlLCBmaXggb3ZlcmxhcCBjb21tZW50LgoKVHVlIFNlcCAgMyAwNjoyOToyMCAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJTWVyZ2Ugd2l0aCBsYXRlc3QgRlNGIHZlcnNpb25zIG9mIHRoZXNlIGZpbGVzLgoKCSogc3RhYi5nbnUuaDogIEFkZCBMQVNUX1VOVVNFRF9TVEFCX0NPREUuCgkqIHN0YWIuZGVmOiAgVXBkYXRlIHRvIEdQTDIuICBNb3ZlIE5fV0FSTklORyBvdXQsIHNpbmNlIG5vdCBhCglkZWJ1ZyBzeW1ib2wuICBDaGFuZ2UgY29tbWVudHMsIGFuZCByZW9yZGVyIHRhYmxlIHRvIG51bWVyaWMKCW9yZGVyLiAgVXBkYXRlIGZpbmFsIHRhYmxlIGNvbW1lbnQuCgkoTl9EU0xJTkUsIE5fQlNMSU5FKTogIFJlbnVtYmVyIGZyb20gMHg2NiBhbmQgMHg2OCwgdG8gMHg0NiBhbmQgMHg0OC4KCgkqIG9ic3RhY2suaDogIEdQTDIuICBNZXJnZS4KCkZyaSBBdWcgMjMgMDE6NTQ6MjMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmgsIGEub3V0LnN1bjQuaDogIE1ha2UgU0VHTUVOVF9TSVpFIGFibGUgdG8gZGVwZW5kCglvbiB0aGUgcGFydGljdWxhciBhLm91dCBiZWluZyBleGFtaW5lZC4KCSogYS5vdXQuc3VuNC5oOiAgRGVmaW5lIHNlZ21lbnQgc2l6ZXMgZm9yIFN1bi0zJ3MgYW5kIFN1bi00J3MuCgkqIEZJWE1FOiAgYS5vdXQuZ251LmggaXMgYWxtb3N0IG9ic29sZXRlLgoJKiBGSVhNRTogIGEub3V0LnN1bjQuaCBzaG91bGQgYmUgcmVuYW1lZCBhLm91dC5zdW4uaCBub3cuCgpXZWQgQXVnIDIxIDIwOjMyOjEzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIFN0YXJ0IGEgQ2hhbmdlTG9nIGZvciB0aGUgaW5jbHVkZXMgZGlyZWN0b3J5LgoKCSogYS5vdXQuZ251LmggKE5fRk4pOiAgRml4IHZhbHVlIC0tIHdhcyAxNSwgc2hvdWxkIGJlIDB4MUUuCgkqIHN0YWIuZGVmOiAgVXBkYXRlIGFsbG9jYXRpb24gdGFibGUgaW4gY29tbWVudHMgYXQgZW5kLAoJdG8gcmVmbGVjdCByZWFsaXR5IGFzIEkga25vdyBpdC4KCgwKTG9jYWwgVmFyaWFibGVzOgptb2RlOiBjaGFuZ2UtbG9nCmxlZnQtbWFyZ2luOiA4CmZpbGwtY29sdW1uOiA3NAp2ZXJzaW9uLWNvbnRyb2w6IG5ldmVyCkVuZDoK