MjAwMC0xMC0yMyAgUGhpbGlwIEJsdW5kZWxsICA8cGJAZnV0dXJldHYuY29tPgoKCSogZGVtYW5nbGUuaCwgZHluLXN0cmluZy5oOiBVcGRhdGUgZnJvbSB0cnVuayB2ZXJzaW9uLgoKMjAwMC0wNS0yNiAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGZpbGVuYW1lcy5oOiBOZXcgZmlsZS4KCShIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSwgSVNfRElSX1NFUEFSQVRPUikKCShJU19BQlNPTFVURV9QQVRILCBGSUxFTkFNRV9DTVApOiBOZXcgbWFjcm9zLgoKMjAwMC0wNC0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGJpbi1idWdzLmggKFJFUE9SVF9CVUdTX1RPKTogUmVtb3ZlIHRyYW5zbGF0ZWQgcGFydC4KCjIwMDAtMDQtMDMgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBiaW4tYnVncy5oOiBOZXcgZmlsZS4KCjIwMDAtMDMtMjcgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYXZyKTogRGVjbGFyZS4KCjIwMDAtMDMtMTQgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogaGFzaHRhYi5oIChodGFiX3RyYXYpOiBNb2RpZnkgdHlwZSBzbyB0aGF0IGZpcnN0IGFyZyBpcyBvZiB0eXBlCgl2b2lkICoqLgoJKGh0YWJfZmluZF93aXRoX2hhc2gsIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IERlY2xhcmUgbmV3CglmdW5jdGlvbnMuCgoyMDAwLTAzLTA5ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFydGl0aW9uLmg6IE5ldyBmaWxlLgoKMjAwMC0wMy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaGFzaHRhYi5oIChzdHJ1Y3QgaHRhYik6IEFkZCBkZWxfZi4KCShodGFiX2RlbCk6IE5ldyB0eXBlLgoJKGh0YWJfY3JlYXRlKTogQWRkIGZvdXJ0aCBhcmd1bWVudC4KCjIwMDAtMDMtMDggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuaCAoaGFzaF90YWJsZV90KTogUmVuYW1lIHRvIGh0YWJfdC4KCShzdHJ1Y3QgaGFzaF90YWJsZSk6IFJlbmFtZSB0byBzdHJ1Y3QgaHRhYi4gIFNob3J0ZW4gZWxlbWVudAoJbmFtZXMuICBSZW9yZGVyIGVsZW1lbnRzIGJ5IHNpemUuCgkoaHRhYl9oYXNoLCBodGFiX2VxLCBodGFiX3RyYXYpOiBOZXcgdHlwZWRlZnMgZm9yIHRoZSBjYWxsYmFjawoJZnVuY3Rpb24gcG9pbnRlcnMuCgkoaGFzaF90YWJsZV9lbnRyeV90KTogRGlzY2FyZDsganVzdCB1c2Ugdm9pZCAqIGZvciBlbGVtZW50Cgl0eXBlLgoKMjAwMC0wMy0wMSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogYmZkbGluay5oIChiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgYSBib29sZWFuIGFyZyB0bwoJdGhlIHVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2suCgoyMDAwLTAyLTIzICBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25faTM3MCk6IERlY2xhcmUuCgoyMDAwLTAyLTIyICBDaGFuZHJhIENoYXZ2YSAgPGNjaGF2dmFAY3lnbnVzLmNvbT4KCgkqIG9wY29kZS9kMzB2LmggKEZMQUdfTk9UX1dJVEhfQUREU1VCcHBwKTogUmVkZWZpbmVkIGFzIG9wZXJhdGlvbgoJY2Fubm90IGJlIGNvbWJpbmVkIGluIHBhcmFsbGVsIHdpdGggQUREL1NVQnBwcC4KClR1ZSBGZWIgMjIgMTU6MTk6NTQgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fdHJhY2UpOiBEb2N1bWVudCByZXR1cm4gdmFsdWVzLgoJKHNpbV9zZXRfdHJhY2UpOiBEZWNsYXJlLiAgRGVwcmVjYXRlLgoKMjAwMC0wMi0yMSAgQWxhbiBNb2RyYSAgPGFsYW5Ac3ByaS5sZXZlbHMudW5pc2EuZWR1LmF1PgoKCSogZGlzLWFzbS5oIChzdHJ1Y3QgZGlzYXNzZW1ibGVfaW5mbyk6IENoYW5nZSBgbGVuZ3RoJyBwYXJhbSBvZgoJcmVhZF9tZW1vcnlfZnVuYyB0byB1bnNpZ25lZC4gIENoYW5nZSB0eXBlIG9mIGBidWZmZXJfbGVuZ3RoJyBhbmQKCWBvY3RldHNfcGVyX2J5dGUnIHRvIHVuc2lnbmVkLgoJKGJ1ZmZlcl9yZWFkX21lbW9yeSk6IENoYW5nZSBgbGVuZ3RoJyBwYXJhbSB0byB1bnNpZ25lZC4KCjIwMDAtMDItMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBwcm90b3R5cGVzIGZvciBBUk0gcmVnaXN0ZXIgbmFtZSBmdW5jdGlvbnMuCgpXZWQgRmViICA5IDE4OjQ1OjQ5IDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHdhaXQuaDogRGVsZXRlLiBObyBsb25nZXIgdXNlZCBieSBHREIuCgpUdWUgRmViICA4IDE3OjAxOjEzIDIwMDAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3Jlc3VtZSk6IENsYXJpZnkgdXNlIG9mIFNJR0dOQUwuCgkoc2ltX3N0b3BfcmVhc29uKTogQ2xhcmlmeSBtZWFuaW5nIG9mIHNpbV9zaWduYWxsZWQuCgoyMDAwLTAyLTAzICBUaW1vdGh5IFdhbGwgPHR3YWxsQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogQWRkZWQgb2N0ZXRzX3Blcl9ieXRlCglmaWVsZCBhbmQgaW5pdGlhbGl6ZSBpdCB0byBvbmUgKDEpLgoJCjIwMDAtMDEtMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBwcm90b3R5cGUgZm9yIGRpc2Fzc2VtYmxlcl91c2FnZSgpLgoJQWRkIHByb3RvdHlwZSBmb3IgYXJtX2Rpc2Fzc2VtYmxlcl9vcHRpb25zKCkuCglSZW1vdmUgcHJvdG90eXBlIGZvciBhcm1fdG9nZ2xlX3JlZ25hbWVzKCkuCglBZGQgcHJvdG90eXBlIGZvciBwYXJzZV9hcm1fZGlzYXNzZW1ibGVyX29wdGlvbigpLgoKU2F0IEphbiAgMSAxOTowNjo1MiAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBzeW1jYXQuaCAoU1RSSU5HWCkgWyFfX1NURENfXyB8fCBBTE1PU1RfU1REQ106IENoYW5nZSAiPyIgdG8gInMiCgl0byBzdHJpbmdpZnkgYXJndW1lbnQgcy4KCldlZCBEZWMgMTUgMTE6MjI6NTYgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaHAtc3ltdGFiLmggKEhQX0xBTkdVQUdFX0ZPUlRSQU4pOiBOZXcgZW51bWVyYXRpb24gY29uc3RhbnQuCgkoSFBfTEFOR1VBR0VfRjc3KTogRGVmaW5lIHVzaW5nIEhQX0xBTkdVQUdFX0ZPUlRSQU4uCgoxOTk5LTEyLTE1ICBEb3VnIEV2YW5zICA8ZGplQHRyYW5zbWV0YS5jb20+CgoJKiBkaXMtYXNtLmg6IEVuY2xvc2UgaW4gZXh0ZXJuICJDIiBpZmRlZiBfX2NwbHVzcGx1cy4KCjE5OTktMTItMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHN0cnVjdCBzcGxheV90cmVlX25vZGUpOiBSZW5hbWUgdG8gLi4uCgkoc3RydWN0IHNwbGF5X3RyZWVfbm9kZV9zKTogLi4uIHRoaXMuCgkoc3RydWN0IHNwbGF5X3RyZWUpOiBSZW5hbWUgdG8gLi4uCgkoc3RydWN0IHNwbGF5X3RyZWVfcyk6IC4uLiB0aGlzLgoKMTk5OS0xMS0zMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaCAoQVRUUklCVVRFX01BTExPQyk6IE5ldyBtYWNyby4KCgkqIGxpYmliZXJ0eS5oIChidWlsZGFyZ3YsIGR1cGFyZ3YsIGNvbmNhdCwgY2hvb3NlX3RlbXBfYmFzZSwKCW1ha2VfdGVtcF9maWxlLCB4bWFsbG9jLCB4Y2FsbG9jLCB4c3RyZHVwLCB4bWVtZHVwKTogQWRkCglBVFRSSUJVVEVfTUFMTE9DLgoJKHhhdGV4aXQpOiBSZW1vdmUgX19HTlVDX18gY2hlY2ssIGFkZCBBVFRSSUJVVEVfTk9SRVRVUk4uCgoxOTk5LTExLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaDogSW5jbHVkZSBzdGRhcmcuaCB3aGVuIEFOU0lfUFJPVE9UWVBFUyBpcyBkZWZpbmVkLgoJKGFzcHJpbnRmLCB2YXNwcmludGYpOiBQcm92aWRlIGRlY2xhcmF0aW9ucy4KCldlZCBOb3YgMTAgMTI6NDM6MjEgMTk5OSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgkJCSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaDogRGVmaW5lIGFuZCB0ZXN0IGBHQ0NfVkVSU0lPTicsIG5vdCBgSEFWRV9HQ0NfVkVSU0lPTicuCgoxOTk5LTExLTA0ICAgICAgSmltbXkgR3VvICAgICAgIDxndW9AY3VwLmhwLmNvbT4KCgkqIGhwLXN5bXRhYi5oIChkbnR0X3R5cGVfZnBhcmFtKTogQWRkIGRvY19yYW5nZXMsIG1pc2Nfa2luZAoJZmllbGRzLCBjaGFuZ2UgbG9jYXRpb24gdHlwZSB0byBDT1JFX0FERFIgZnJvbSBpbnQuCgkoZG50dF90eXBlX2NvbnN0KTogTmFtZSB0aGUgNXRoIGZpZWxkIGxvY2F0aW9uX3R5cGUuCgpTdW4gT2N0IDI0IDE5OjExOjMyIDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHNpbS1kMTB2LmggKFNJTV9EMTBWX1RTMl9ETUFQX1JFR05VTSk6IERlZmluZS4KCjE5OTktMTAtMjMgMDg6NTEgLTA3MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGJpdG1vdmVyLmNvbT4KCgkqIGhhc2h0YWIuaDogR2l2ZSBoYXNoX3RhYmxlX3QgYSBzdHJ1Y3QgdGFnLiAgQWRkIHByb3RvdHlwZXMKCWZvciBjbGVhcl9oYXNoX3RhYmxlX3Nsb3QgYW5kIHRyYXZlcnNlX2hhc2hfdGFibGUuICBDb3JyZWN0Cglwcm90b3R5cGUgb2YgYWxsX2hhc2hfdGFibGVfY29sbGlzaW9ucy4KClNhdCBPY3QgMjMgMTk6MDA6MTMgMTk5OSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogc2ltLWQxMHYuaDogTmV3IGZpbGUuCgpGcmkgT2N0IDE1IDAxOjQ3OjUxIDE5OTkgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkBsb29ueS5jeWdudXMuY29tPgoKCSogaGFzaHRhYi5oOiBOZXcgZmlsZS4KCjE5OTktMTAtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKEhBVkVfR0NDX1ZFUlNJT04pOiBOZXcgbWFjcm8uICBVc2UgaXQgaW5zdGVhZCBvZgoJZXhwbGljaXRseSB0ZXN0aW5nIF9fR05VQ19fIGFuZCBfX0dOVUNfTUlOT1JfXy4KCgkoQVRUUklCVVRFX1BSSU5URik6IFVzZSBgX19mb3JtYXRfXycsIG5vdCBgZm9ybWF0Jy4KCjE5OTktMDktMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChtYWtlX3RlbXBfZmlsZSk6ICBBZGQgYSBwcm90b3R5cGUuCgpUdWUgU2VwIDE0IDAwOjM1OjAyIDE5OTkgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6ICBPcGVuQlNEIGhhcyBhIGNvcnJlY3QgcHJvdG90eXBlLgoJKHhyZWFsbG9jKTogIFJlbW92ZSBvdXRkYXRlZCBjb21tZW50LgoKMTk5OS0wOS0wNyAgSmVmZiBHYXJ6aWsgIDxqZ2FyemlrQHBvYm94LmNvbT4KCgkqIGxpYmliZXJ0eS5oICh4bWVtZHVwKTogQWRkIHByb3RvdHlwZSBmb3IgbmV3IGZ1bmN0aW9uLgoKMTk5OS0wOS0wNCAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAcG9ib3guY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3BqKTogRGVjbGFyZS4KCjE5OTktMDktMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG9ic3RhY2suaCAob2JzdGFja19ncm93LCBvYnN0YWNrX2dyb3cwKTogTW92ZSAoY2hhciopIGNhc3RzCglpbiBjYWxscyB0byBgX29ic3RhY2tfbWVtY3B5JyBmcm9tIGhlcmUgLi4uCgoJKF9vYnN0YWNrX21lbWNweSk6IC4uLiB0byBoZXJlLCBleGNlcHQgaW4gdGhlIF9fU1REQ19fIGNhc2Ugd2hpY2gKCWRvZXNuJ3QgbmVlZCBpdC4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChnZXRwd2QpOiBQcm90b3R5cGUuCgoxOTk5LTA4LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2luc2VydCk6IFJldHVybiB0aGUgbmV3IG5vZGUuCgoxOTk5LTA3LTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGFuc2lkZWNsLmg6IENvcHkgYXR0cmlidXRlIHN1cHBvcnQgbWFjcm9zIGZyb20gZWdjcy4KCjE5OTktMDYtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQWRkIGluaXRfZnVuY3Rpb24gYW5kCglmaW5pX2Z1bmN0aW9uLgoKMTk5OS0wNi0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pcHMuaCAoRWxmMzJfSW50ZXJuYWxfTXN5bSk6IE5ldyBzdHJ1Y3R1cmUuCgkoRWxmMzJfRXh0ZXJuYWxfTXN5bSk6IExpa2V3aXNlLgoJKEVMRjMyX01TX1JFTF9JTkRFWCk6IE5ldyBtYWNyby4KCShFTEYzMl9NU19GTEFHUyk6IExpa2V3aXNlLgoJKEVMRjMyX01TX0lORk8pOiBMaWtld2lzZS4KCQoxOTk5LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChhcm1fdG9nZ2xlX3JlZ25hbWVzKTogTmV3IHByb3RvdHlwZS4KCShzdHJ1Y3QgZGlhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkOiBkaXNhc3NlbWJsZXJfb3B0aW9ucy4KCjE5OTktMDQtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9lbGZfdmVyc2lvbl9leHByKTogUmVuYW1lIGBtYXRjaCcgdG8gYHBhdHRlcm4nLgoJQWRkIGBtYXRjaCcgY2FsbGJhY2sgZnVuY3Rpb24uCgoxOTk5LTA0LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIG5vX3VuZGVmaW5lZC4KCjE5OTktMDQtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBwcm90b3R5cGUgZm9yIHByaW50X2luc25fbWNvcmUuCgoxOTk5LTA0LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfcG9pbnRlcnMpOiBEZWNsYXJlLgoKMTk5OS0wMy0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9jb21wYXJlX2ludHMpOiBEZWNsYXJlLgoKV2VkIE1hciAyNCAxMjo0NjoyOSAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGFteS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQ3lnd2lueywzMn0gc2hvdWxkIGhhdmUgdGhlIHByb3RvdHlwZS4KCjE5OTktMDItMjIgIEppbSBMZW1rZSAgPGpsZW1rZUBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogYWRkIGZpZWxkICJtcGM4NjBjMCIuCgpNb24gRmViICAxIDIxOjA1OjQ2IDE5OTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKICAgICAgICogZGlzLWFzbS5oIChwcmludF9pbnNuX2kzODZfYXR0KTogIERlY2xhcmUuCiAgICAgICAocHJpbnRfaW5zbl9pMzg2X2ludGVsKTogIERlY2xhcmUuCgo5OTgtMTItMzAgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IENhc3QgU1RSRUFNIGFuZAoJRlBSSU5URl9GVU5DIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKV2VkIERlYyAzMCAxNjowNzoxNCAxOTk4ICBEYXZpZCBUYXlsb3IgIDx0YXlsb3JAdGV4YXMuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogY2hhbmdlIHZvaWQgKiB0byBQVFIgKHR3byBwbGFjZXMpLgoKTW9uIERlYyAxNCAwOTo1MzozMSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBjaGVjayBJTl9HQ0MgYW55bW9yZS4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KClR1ZSBEZWMgIDggMDA6MzA6MzEgMTk5OCAgRWxlbmEgWmFubm9uaSAgPGV6YW5ub25pQGt3aWtlbWFydC5jeWdudXMuY29tPgoKCVRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGUgYnkgRWxlbmEgWmFubm9uaQogCTxlemFubm9uaUBrd2lrZW1hcnQuY3lnbnVzLmNvbT4gYW5kIEVkaXRoIEVwc3RlaW4KIAk8ZWVwc3RlaW5Ac29waGlhLmN5Z251cy5jb20+IGFzIHBhcnQgb2YgYSBwcm9qZWN0IHRvIG1lcmdlIGluCiAJY2hhbmdlcyBtYWRlIGJ5IEhQOyBIUCBkaWQgbm90IGNyZWF0ZSBDaGFuZ2VMb2cgZW50cmllcy4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBjaGFuZ2UgdGhlIHR5cGUgb2Ygc3RyZWFtCglmcm9tIEZJTEUqIHRvIHZvaWQqLCBmb3IgdXNlIHdpdGggZ2RiJ3MgbmV3IHR5cGUgR0RCX0ZJTEUuCgkoZnByaW50Zl9mdHlwZSk6IGNoYW5nZSBGSUxFKiBwYXJhbWV0ZXIgdHlwZSB0byB2b2lkKi4KCgkqIGRlbWFuZ2xlLmg6IChETUdMX0VERyk6IG5ldyBtYWNybyBmb3IgS3VjayBhbmQgQXNzb2NpYXRlcwoJKERNR0xfU1RZTEVfTUFTSyk6IG1vZGlmeSB0byBpbmNsdWRlIEt1Y2sgYW5kIEFzc29jIHN0eWxlCgkoZGVtYW5nbGluZ19zdHlsZXMpOiBhZGQgbmV3IGVkZ19kZW1hbmdsaW5nIHN0eWxlCgkoRURHX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogbmV3IG1hY3JvCgkoRURHX0RFTUFOR0xJTkcpOiBuZXcgbWFjcm8KCgkqIGRlbWFuZ2xlLmggKERNR0xfSFApOiBuZXcgbWFjcm8sIGZvciBIUC9hQ0MgY29tcGlsZXIuCgkoRE1HTF9TVFlMRV9NQVNLKTogbW9kaWZ5IHRvIGluY2x1ZGUgbmV3IEhQJ3Mgc3R5bGUuCgkoZGVtYW5nbGluZ19zdHlsZXMpOiBhZGQgbmV3IGhwX2RlbWFuZ2xpbmcgdmFsdWUuCgkoSFBfREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBuZXcgbWFjcm8uCgkoQVJNX0RFTUFOR0xJTkcpOiBjb2VyY2UgdG8gaW50LgoJKEhQX0RFTUFOR0xJTkcpOiBuZXcgbWFjcm8uCgoJKiBocC1zeW10YWIuaDogcmV3cml0dGVuLCBmcm9tIEhQLgoJKHF1aWNrX3Byb2NlZHVyZSk6IGNoYW5nZSB0eXBlIG9mIGxhbmd1YWdlIGZpZWxkIHRvIHVuc2lnbmVkIGludAoJKHF1aWNrX21vZHVsZSk6IGNoYW5nZSB0eXBlIG9mIGxhbmd1YWdlIGZpZWxkIHRvIHVuc2lnbmVkIGludAoJKHN0cnVjdCBkbnR0X3R5cGVfc3Zhcik6IGFkZCBmaWVsZCB0aHJlYWRfc3BlY2lmaWMuCgkoaHBfbGFuZ3VhZ2UpOiBhZGQgbGFuZ3VhZ2VzIG1vZGNhbCBhbmQgZG1wYXNjYWwuCgpNb24gTm92IDMwIDE1OjI1OjU4IDE5OTggIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGVsZi9zaC5oIChlbGZfc2hfcmVsb2NfdHlwZSk6IEFkZCBSX1NIX0ZJUlNUX0lOVkFMSURfUkVMT0MsCglSX1NIX0xBU1RfSU5WQUxJRF9SRUxPQywgUl9TSF9TV0lUQ0g4IGFuZCBSX1NIX21heC4KCkZyaSBOb3YgMjAgMTM6MTQ6MDAgMTk5OCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQWRkIHByb3RvdHlwZSBmb3IgRnJlZUJTRC4KCkZyaSBOb3YgMTMgMTk6MTk6MTEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5Lmg6IFByb3RvdHlwZSB4Y2FsbG9jLgoKU3VuIE5vdiAgOCAxNzo0MjoyNSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBXcmFwIHByb2JsZW1hdGljIG1hY3JvcyB3aXRoICFJTl9HQ0MuCgoJKiBkZW1hbmdsZS5oOiBOZXZlciBkZWZpbmUgUEFSQU1TKCkuCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgpTYXQgTm92ICA3IDE4OjMwOjIwIDE5OTggIFBldGVyIFNjaGF1ZXIgIDxwZXRlci5zY2hhdWVyQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdmF4KTogRGVjbGFyZS4KClNhdCBOb3YgIDcgMTY6MDQ6MDMgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgaW5jbHVkZSBnYW5zaWRlY2wuaC4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KCjE5OTgtMTAtMjYgMTY6MDMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgb3B0aW1pemUuCgpUaHUgT2N0IDIyIDE5OjU4OjAwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHNwbGF5LXRyZWUuaDogV3JhcCBmdW5jdGlvbiBwb2ludGVyIHBhcmFtZXRlciBkZWNsYXJhdGlvbnMgaW4KCVBBUkFNUygpIG1hY3JvLgoKMTk5OC0xMC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNwbGF5LXRyZWUuaDogTmV3IGZpbGUuCgpGcmkgT2N0ICA5IDAwOjAyOjAzIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1lcmdlIGRldm8gYW5kIGVnY3MgaW5jbHVkZSBkaXJlY3Rvcmllcy4KClNhdCBTZXAgIDUgMTI6MTY6MzMgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2V0b3B0LmgsIG9ic3RhY2suaDogVXBkYXRlZCBmcm9tIGdjYy4KCjE5OTgtMDgtMDMgIEphc29uIE1vbGVuZGEgIChqc21AYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oICh4ZXhpdCk6IENoYW5nZSBkZWNsIHRvIHVzZSBtb2Rlcm4gR0NDIGF0dHJpYnV0ZQoJdG8gaW5kaWNhdGUgZXhpdCBkb2VzIG5vdCByZXR1cm4uCgpNb24gSnVuICAxIDEzOjQ4OjMyIDE5OTggIEphc29uIE1vbGVuZGEgIChjcmFzaEBidWdzaGFjay5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiBVcGRhdGUgdG8gbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKVHVlIE1heSAyNiAyMDo1Nzo0MyAxOTk4ICBTdGFuIENveCAgPHNjb3hAZXF1aW5veC5jeWdudXMuY29tPgoKCSogZWxmL3NwYXJjLmggKEVGX1NQQVJDX0xFREFUQSwgUl9TUEFSQ18zMkxFKTogQWRkZWQuCgpUdWUgRmViIDI0IDEzOjA1OjAyIDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBNZW1iZXIgYHN5bWJvbCcgcmVuYW1lZCB0byBgc3ltYm9scycKCWFuZCBtYWRlIGFuICJhc3ltYm9sICoqIi4gIE5ldyBtZW1iZXIgbnVtX3N5bWJvbHMuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBVcGRhdGUuCgpUdWUgRmViIDE3IDEyOjMyOjE4IDE5OTggIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2ZldGNoX3JlZ2lzdGVyLCBzaW1fc3RvcmVfcmVnaXN0ZXIpOiBBZGQKIAlyZWdpc3RlciBsZW5ndGggcGFyYW1ldGVyLiAgRnVuY3Rpb25zIHJldHVybiBhY3R1YWwgbGVuZ3RoIG9mCiAJcmVnaXN0ZXIuCgpUaHUgRmViIDEyIDE2OjI5OjAxIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGdldG9wdC5oOiBVcGRhdGUgdG8gbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKV2VkIEZlYiAxMSAxNjo1NjowNiAxOTk4ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogc3ltY2F0Lmg6IE5ldyBmaWxlLgoKTW9uIEZlYiAgMiAxNzoxMzozMSAxOTk4ICBTdGV2ZSBIYXdvcnRoICA8c3RldmVAcG0uY3NlLnJtaXQuRURVLkFVPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3RpYzMwKTogRGVjbGFyZS4KClRodSBKYW4gMjIgMTY6MjM6NTkgMTk5OCAgRnJlZCBGaXNoIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIGZsYWcgSU5TTl9IQVNfUkVMT0MgdG8gdGVsbCBkaXNhc3NlbWJseQoJZnVuY3Rpb24gdGhlcmUgaXMgYSByZWxvYyBvbiB0aGlzIGxpbmUuCgpNb24gRGVjICA4IDExOjIyOjIzIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IFJlbW92ZSBwcm90b3R5cGUgb2YgZGlzYXNtX3N5bWFkZHIoKSBhcyB0aGlzIGZ1bmN0aW9uCglubyBsb25nZXIgZXhpc3RzLgoKVHVlIERlYyAgMiAxMDoyMDo1MyAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc21fc3ltYWRkcik6IE5ldyBwcm90b3R5cGUuCgpNb24gRGVjICAxIDIwOjI0OjE4IDE5OTcgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGNvZmYvc2guaCAoUl9TSF9TV0lUQ0g4KTogTmV3LgoKTW9uIERlYyAgMSAxMToyOTozNSAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENvbW1lbnQgb3V0IGFyZyBuYW1lcyBpbiBwcm90b3R5cGVzLgoKV2VkIE5vdiAyNiAxNjo0Nzo1OCAxOTk3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDb25zaXN0YW50bHkgdXNlIG5hbWVzIGZvciBwcm90b3R5cGUKCWFyZ3VtZW50cy4KCldlZCBOb3YgMjYgMTE6Mzk6MzAgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDaGFuZ2UgYnl0ZSBjb3VudCBhcmd1bWVudHMgdG8KCXtyZWFkLHdyaXRlfV9tZW0gdG8gYGludCcuICBOZXcgbWVtYmVyIGBtYWdpYycuCgkoQ0JfU1lTQ0FMTF9NQUdJQyxDQl9TWVNDQUxMX0lOSVQpOiBOZXcgbWFjcm9zLgoKVHVlIE5vdiAyNSAwMTozNTo1MiAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQHNlYmEuY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBzdGF0KTogTW92ZSBmb3J3YXJkIGRlY2wgdXAuCgkoaG9zdF9jYWxsYmFjayk6IFBhc3Mgc3RhdCBzdHJ1Y3QgcG9pbnRlciB0byBzdGF0LGZzdGF0LgoJKENCX1NZU19ubm4pOiBSZW9yZ2FuaXplLgoJKENCX1NZU0NBTEwpOiBOZXcgbWVtYmVycyBwMSxwMi4KCShjYl9ob3N0X3RvX3RhcmdldF9zdGF0KTogRGVsZXRlIGZvdXJ0aCBhcmcuCgpTYXQgTm92IDIyIDIzOjM0OjE1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3N0b3BfcmVhc29uKTogQ2xhcmlmeSBzaW1fc2lnbmFsbGVkIFNJR1JDCiAJYXJndW1lbnQuCgpNb24gTm92IDE3IDE0OjAwOjUxIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAc2ViYS5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfVEFSR0VUX0RFRlNfTUFQKTogUmVuYW1lZCBmcm9tIHRhcmdldF9kZWZzX21hcC4KCShob3N0X2NhbGxiYWNrKTogQWRkIHN0YXQsIGZzdGF0LCBzeXNjYWxsX21hcCwgZXJybm9fbWFwLCBvcGVuX21hcCwKCXNpZ25hbF9tYXAsIHN0YXRfbWFwLgoJKGVycm5fbWFwLG9wZW5fbWFwKTogUmVuYW1lZCB0byBjYl9pbml0X2Zvb19tYXAuCgkoY2JfaG9zdF90b190YXJnZXRfZXJybm8sY2JfdGFyZ2V0X3RvX2hvc3Rfb3Blbik6IFJlbmFtZWQgZnJvbQoJaG9zdF90b190YXJnZXRfZXJybm8sdGFyZ2V0X3RvX2hvc3Rfb3Blbi4KCShjYl9yZWFkX3RhcmdldF9zeXNjYWxsX21hcHMpOiBBZGQgcHJvdG90eXBlLgoJKGNiX3RhcmdldF90b19ob3N0X3N5c2NhbGwpOiBMaWtld2lzZS4KCShjYl9ob3N0X3RvX3RhcmdldF9zdGF0KTogTGlrZXdpc2UuCgkoY2Jfc3lzY2FsbCk6IExpa2V3aXNlLgoJKENCX1NZU197ZXhpdCxvcGVuLGNsb3NlLHJlYWQsd3JpdGUsbHNlZWssdW5saW5rLGdldHBpZCxraWxsLGZzdGF0LAoJYXJndmxlbixhcmd2LGNoZGlyLHN0YXQsY2htb2QsdXRpbWUsdGltZX0pOiBEZWZpbmUuCgkoQ0JfU1lTQ0FMTCk6IE5ldyB0eXBlLgoJKENCX1JDKTogTmV3IGVudW0uCgpGcmkgTm92ICA3IDEwOjM0OjA5IDE5OTcgIFJvYiBTYXZveWUgIDxyb2JAZGFya3N0YXIuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBBZGQgZXh0ZXJuICJDIiB7IHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggQysrCglwcm9ncmFtcy4KCSogcmVtb3RlLXNpbS5oOiAgQWRkIGV4dGVybiAiQyIgeyBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIEMrKwoJcHJvZ3JhbXMuCgpUdWUgT2N0IDE0IDE2OjA3OjUxIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkCgknc3ltYm9sX2F0X2FkZHJlc3NfZnVuYycuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXNlIG5ldyBmaWVsZCB3aXRoCglnZW5lcmljX3N5bWJvbF9hdF9hZGRyZXNzLgoKTW9uIE9jdCAxMyAxMDoxNzoxNSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IENsYXJpZnkgc2ltX3JlYWQsIHNpbV93cml0ZSBNRU0gYXJndW1lbnQuCgpXZWQgU2VwIDI0IDE4OjAzOjEwIDE5OTcgIFN0dSBHcm9zc21hbiAgPGdyb3NzbWFuQGJhYnlsb24tNS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChTSU1fUkMpOiAgQWRkIGEgYnVuY2ggb2YgbmV3IHJldHVybiBjb2RlcyBmb3IKCWJyZWFrcG9pbnQgc3R1ZmYuCgkqIEFkZCBmdW5jdGlvbnMgdG8gdGVsbCB0aGUgc2ltdWxhdG9yIHRvIHNldC9jbGVhci9lbmFibGUvZGlzYWJsZQoJaW50cmluc2ljIGJyZWFrcG9pbnRzLgoKVGh1IEF1ZyAyOCAxOTo0MTo0MiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoZHVwYXJndik6IEFkZCBwcm90b3R5cGUuCgpUdWUgQXVnIDI2IDEyOjI1OjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IEFkZCBBQkZEIGFyZy4gRG9jdW1lbnQuCgpNb24gQXVnIDI1IDEwOjUwOjUxIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX29wZW4pOiBBZGQgQUJGRCBhcmcuIERvY3VtZW50LgoKRnJpIEF1ZyAgOCAxNjo0Mzo1NiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChhcmNfZ2V0X2Rpc2Fzc2VtYmxlcik6IERlY2xhcmUuCgpXZWQgSnVsIDMwIDExOjM5OjUwIDE5OTcgIFBlciBCb3RobmVyICA8Ym90aG5lckBkZW5lYi5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoRE1HTF9KQVZBKTogIE5ldyBvcHRpb24gdG8gcmVxdWVzdCBKYXZhIGRlbWFuZ2xpbmcuCgpUdWUgSnVsIDIyIDE3OjU5OjU0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChQRVhFQ1VURV8qKTogRGVmaW5lLgoJKHBleGVjdXRlLCBwd2FpdCk6IERlY2xhcmUuCgpGcmkgSnVuICA2IDEzOjAyOjMzIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2tpbGwpOiBNYXJrIGFzIGRlcHJlY2lhdGVkLgoKRnJpIE1heSAyMyAxMzo0Mzo0MSAxOTk3ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgdGFza19saW5rIG1lbWJlci4KClRodSBNYXkgMjIgMTE6MzI6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBSZXZpZXcgZG9jdW1lbnRhdGlvbi4gIENsYXJpZnkgcmVzdHJpY3Rpb25zIG9uCiAJd2hlbiBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4KCldlZCBNYXkgMjEgMTY6NDc6NTMgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc2V0X3Byb2ZpbGVfc2l6ZSk6IEFkZCBwcm90b3R5cGUsIGRvY3VtZW50IGFzCiAJZGVwcmVjaWF0ZWQuCgpUdWUgTWF5IDIwIDA5OjMyOjIyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX29wZW4pOiBBZGQgY2FsbGJhY2sgc3RydWN0LgoJKHNpbV9zZXRfY2FsbGJhY2tzKTogRHJvcCBTSU1fREVTQyBhcmd1bWVudC4gRG9jdW1lbnQuCgkoc2ltX3NpemUpOiBSZW1vdmUgcmVjZW50bHkgYWRkZWQgU0lNX0RFU0MgYXJndW1lbnQuIERvY3VtZW50LgoKTW9uIE1heSAxOSAxOToxNDo0NCAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IFBhc3MgU0QgaW50byBzaW1fc2l6ZS4KClRodSBNYXkgMTUgMDE6MjQ6MTYgMTk5NyAgTWFyayBBbGV4YW5kZXIgIDxtYXJrYUBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oIChvYnN0YWNrX3NwZWNpZnlfYWxsb2NhdGlvbl93aXRoX2FyZywgb2JzdGFja19jaHVua2Z1biwKCW9ic3RhY2tfZnJlZWZ1bik6IEVsaW1pbmF0ZSBjb21waWxlIHdhcm5pbmdzIGluIGdkYi4KClR1ZSBNYXkgMTMgMTA6MjE6MTQgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYvYXJtLmggKGNvbnN0YW50cyk6ICAgQWRkZWQgbmV3IGZsYWcgYml0cyBGX0FQQ1NfMjYgYW5kCglGX0FQQ1NfU0VUIGZvciB0aGUgZl9mbGFncyBmaWVsZCBvZiB0aGUgZmlsZWhkciBzdHJ1Y3R1cmUuICBBZGRlZCBuZXcKCWZsYWdzOiBGX0FQQ1MyNiwgRl9BUk1fMiwgRl9BUk1fMywgRl9BUk1fNywgRl9BUk1fN1QgdG8gc3RvcmUKCWluZm9ybWF0aW9uIGluIHRoZSBmbGFncyBmaWVsZCBvZiB0aGUgaW50ZXJuYWxfZiBzdHJ1Y3R1cmUgdXNlZCBieSBCRkQKCXJvdXRpbmVzLgoKVHVlIEFwciAyMiAxMDoyNDozNCAxOTk3ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2J5dGVvcmRlcnMpOiBBZGQgY29tbWVudHMgZm9yIHByZXZpb3VzCglmb3JtYXRzIGFuZCBhZGQgZmxvYXRmb3JtYXRfbGl0dGxlYnl0ZV9iaWd3b3JkLCBwcmltYXJpbHkgZm9yIEFSTS4KCUFkZCBkZWNsYXJhdGlvbiBmb3IgZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlYnl0ZV9iaWd3b3JkLgoKRnJpIEFwciAxOCAxMzowNDo0OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zdG9wKTogTmV3IGludGVyZmFjZSAtIGFzeW5jaHJvbm91cwogCW5vdGlmaWNhdGlvbiBvZiBhIHJlcXVlc3QgdG8gc3RvcCAvIHN1c3BlbmQgdGhlIHJ1bm5pbmcKIAlzaW11bGF0aW9uLgoKCSogcmVtb3RlLXNpbS5oIChlbnVtIHNpbV9zdG9wKTogQWRkIHNpbV9ydW5uaW5nIGFuZCBzaW1fcG9sbGluZyBhcwogCXN0YXRlcyBmb3IgdXNlIGludGVybmFsIHRvIHNpbXVsYXRvcnMuCgoJKiBjYWxsYmFjay5oIChzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1dCk6IFB1dCBhIG1hZ2ljIG51bWJlciBhdAogCXRoZSBlbmQgb2YgdGhlIHN0cnVjdCB0byBhbGxvdyBiYXNpYyBjaGVja2luZy4KCShzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1Y3QgKTogQWRkIHBvbGxfcXVpdCAtIHNvCiAJdGhhdCB0aGUgY29uc29sZSBldGMgY2FuIGJlIHBvbGxlZCBhdCByZWd1bGFyIGludGVydmFscy4KClRodSBBcHIgMTcgMDI6MTc6MTIgMTk5NyAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc3RydWN0IF9iZmQpOiBEZWNsYXJlLgoJKHNpbV9sb2FkKTogUmV0dXJuIFNJTV9SQy4gIE5ldyBhcmcgYGFiZmQnLgoJKHNpbV9jcmVhdGVfaW5mZXJpb3IpOiBSZXR1cm4gU0lNX1JDLiAgRGVsZXRlIGFyZyBgc3RhcnRfYWRkcmVzcycuCgpXZWQgQXByICAyIDE3OjA5OjEyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fdHJhY2UsIHNpbV9zaXplKTogTWFrZSB0aGVzZSBnbG9iYWwuICBUaGV5CiAJd2lsbCBnbyBhd2F5IHNob3J0bHkuCgpXZWQgQXByICAyIDE1OjIzOjQ5IDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKFNJTV9PUEVOX0tJTkQsIFNJTV9SQyk6IE5ldyBlbnVtcy4KCShzaW1fb3Blbik6IE5ldyBhcmd1bWVudCBga2luZCcuCgpXZWQgQXByICAyIDE0OjQ1OjUxIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIENPUFlJTkc6IFVwZGF0ZSBGU0YgYWRkcmVzcy4KCkZyaSBNYXIgMjggMTU6Mjk6NTQgMTk5NyAgTWlrZSBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oICh0b3AgbGV2ZWwpOiBJbmNsdWRlIHN0ZGFyZy5oIG9yIHZhcmFyZ3MuaCBpZgoJdmFfc3RhcnQgaXMgbm90IGRlZmluZWQuCgkoaG9zdF9jYWxsYmFja19zdHJ1Y3QpOiBNYWtlIHssZX12cHJpbnRmX2ZpbHRlcmVkIHRha2UgYSB2YV9saXN0CglpbnN0ZWFkIG9mIHZvaWQgKiwgc2luY2UgdmFfbGlzdCBtaWdodCBiZSBhbiBhcnJheSBvciBzdHJ1Y3R1cmUKCXR5cGUuCgpGcmkgTWFyIDI4IDE1OjQ0OjQxIDE5OTcgIEguSi4gTHUgIDxoamxAZ251LmFpLm1pdC5lZHU+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBBZGQgcHJvdG90eXBlIGZvciBnbGliYyBhbmQgbGludXguCgpNb24gTWFyIDE3IDE5OjIyOjEyIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9iamFsbG9jLmg6IE5ldyBmaWxlLgoKTW9uIE1hciAxNyAxNDo1Nzo1NSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogTmV3IGZpbGUsIGNvcGllZCBpbiBmcm9tIGdkYi9yZW1vdGUtc2ltLmguICBPbmUKIAlkYXkgdGhpcyB3aWxsIGJlIHBsYWNlZCBpbiBhIGRpcmVjdG9yeSBvZiBpdHMgb3duLgoKU2F0IE1hciAxNSAxOTowMDoxNCAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSB0byBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKVGh1IE1hciAgNiAxNTo0Njo1OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnVjdCk6IEFkZCBjYWxsYmFja3MgLQogCWZsdXNoX3N0ZG91dCwgd3JpdGVfc3RkZXJyLCBmbHVzaF9zdGRlcnIsIHZwcmludGZfZmlsdGVyZWQsCiAJZXZwcmludGZfZmlsdGVyZWQuICBEZWxldGUgcmVkdW5kYW50IGNhbGxiYWNrcyAtIHByaW50Zl9maWx0ZXJlZC4KClRodSBGZWIgMjcgMjM6MTg6MjcgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IFJlbW92ZSBscHJlZml4IGFuZCBscHJlZml4X2xlbgoJZmllbGRzLgoKVHVlIEZlYiAyNSAwMDoxMDo0OSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZQoJYnl0ZXNfcGVyX2NodW5rIGFuZCBkaXNwbGF5X2VuZGlhbi4KCk1vbiBGZWIgMjQgMTc6NDc6MDIgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCUZyb20gRXJpYyBZb3VuZ2RhbGUgPGVyaWNAYW5kYW50ZS5qaWMuY29tPjoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX2V4cHIpOiBEZWZpbmUuCgkoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9kZXBzKTogRGVmaW5lLgoJKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fdHJlZSk6IERlZmluZS4KClRodSBGZWIgIDYgMTQ6MjA6MDEgMTk5NyAgTWFydGluIE0uIEh1bnQgIDxodW50QHBpenphLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IChkaXNhc3NlbWJsZV9pbmZvKTogIEFkZCBuZXcgZmllbGRzCglieXRlc19wZXJfY2h1bmsgYW5kIGRpc3BsYXlfZW5kaWFuIHRvIGNvbnRyb2wgdGhlCglkaXNwbGF5IG9mIHJhdyBpbnN0cnVjdGlvbnMuCgpGcmkgRGVjIDI3IDIyOjE3OjM3IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3RpYzgwKTogRGVjbGFyZS4KClN1biBEZWMgIDggMTc6MTE6MTIgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKGhvc3RfY2FsbGJhY2spOiBOZXcgbWVtYmVyIGBlcnJvcicuCgpXZWQgTm92IDIwIDAwOjQwOjIzIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oOiBOZXcgZmlsZSwgbW92ZWQgaGVyZSBmcm9tIGdkYi4KCk1vbiBOb3YgMTggMTY6MzQ6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IENoZWNraW4gYWdhaW47IGxhc3QgY2hlY2tpbiBmYWlsZWQgZHVlIHRvIHN0aWNreSB0YWcuCgpXZWQgTm92IDEzIDA4OjIyOjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBSZXZlcnQgbGFzdCBjb21taXQgZHVlIHRvIGNvbmZsaWN0cyB3aXRoIGhwdXgKCXN5c3RlbSBoZWFkZXJzLgoKVHVlIE5vdiAxMiAxNjozMTowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogTW92ZSBwcm90b3R5cGVzIGZyb20gYXJndi5jIGhlcmUuCgpUaHUgT2N0IDMxIDE0OjU2OjE4IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBhbnNpZGVjbC5oIChWUEFSQU1TLFZBX1NUQVJUKTogRGVmaW5lLgoKRnJpIE9jdCAyNSAxMjowODowNCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBBZGQgYnl0ZXNfcGVyX2xpbmUgZmllbGQuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplIGJ5dGVzX3Blcl9saW5lIGZpZWxkLgoKVGh1IE9jdCAyNCAxNzoxMDowMSAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBBZGQgc3ltYm9sIGZpZWxkLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZSBzeW1ib2wgZmllbGQuCgpUaHUgT2N0IDE3IDExOjE3OjQwIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbTMycik6IERlY2xhcmUuCgpNb24gT2N0IDE0IDIzOjU2OjUyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBEZWNsYXJlIHBhcmFtZXRlciB0eXBlcyBmb3IgeG1hbGxvYyBhbmQgeHJlYWxsb2MuCgpUaHUgT2N0ICAzIDEzOjQ1OjI3IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZubWF0Y2guaDogTmV3IGZpbGUuCgpUaHUgT2N0ICAzIDEwOjMzOjE0IDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tbjEweDAwKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHByaW50X2luc25fbW4xMDIwMCwgcHJpbnRfaW5zbl9tbjEwMzAwKTogRGVjbGFyZS4KCldlZCBPY3QgIDIgMjE6MjQ6NDMgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX21uMTB4MDApOiBEZWNsYXJlLgoKTW9uIFNlcCAzMCAxMzo1NjoxMSAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBSZW1vdmUgI2lmbmRlZiBQUklWQVRFX1hNQUxMT0MuCgpTYXQgQXVnIDMxIDEzOjI3OjA2IDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl92ODUwKTogRGVjbGFyZS4KClR1ZSBBdWcgMTMgMTY6MTA6MzAgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIENoYW5nZSBiY29weSB0byBtZW1jcHkuICBXb3JrcyBiZXR0ZXIgb24gUG9zaXgKCXN5c3RlbXMsIHdoaWNoIGdlbmVyYWxseSBsYWNrIGJjb3B5LgoKTW9uIEF1ZyAxMiAxNzowMzoxOCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogIENoYW5nZSBXSU4zMiB0byBfV0lOMzIuCgpGcmkgSnVsIDI2IDEzOjU4OjE4IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIGZsYXZvdXIgZmllbGQuCgkocHJpbnRfaW5zbl9hbHBoYSk6IERlY2xhcmUuCgkocHJpbnRfaW5zbl9hbHBoYV9vc2YsIHByaW50X2luc25fYWxwaGFfdm1zKTogRG9uJ3QgZGVjbGFyZS4KCShJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBJbml0aWFsaXplIGZsYXZvdXIgZmllbGQuCgpUdWUgSnVsIDIzIDE3OjM3OjU4IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKFBSSVZBVEVfWE1BTExPQyk6IEVuY2xvc2UgeG1hbGxvYy94cmVhbGxvYwoJZGVmaW5pdGlvbnMgaW5zaWRlICNpZm5kZWYgc28gdGhhdCBwcm9ncmFtcyB0aGF0IHdhbnQgdG8KCWNhbiBkZWZpbmUgUFJJVkFURV9YTUFMTE9DIGFuZCB0aGVuIGRlZmluZSB4bWFsbG9jIGFuZAoJeHJlYWxsb2MgYW55d2F5IHRoZXkgd2FudC4KCShiYXNlbmFtZSk6IERvY3VtZW50IGluIHNvdXJjZSB0aGF0IHdlIGNhbid0IGRlY2xhcmUgdGhlCiAJcGFyYW1ldGVyIHR5cGUgYmVjYXVzZSBpdCBpcyBkZWNsYXJlZCBpbmNvbnNpc3RlbnRseSBhY3Jvc3MKCWRpZmZlcmVudCBzeXN0ZW1zLgoKTW9uIEp1bCAyMiAxMzoxNjoxMyAxOTk2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEB0YW11LmVkdT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9hbHBoYSk6IERvbid0IGRlY2xhcmUuCgkocHJpbnRfaW5zbl9hbHBoYV9vc2YsIHByaW50X2luc25fYWxwaGFfdm1zKTogRGVjbGFyZS4KCldlZCBKdWwgMTcgMTQ6NDU6MTIgMTk5NiAgTWFydGluIE0uIEh1bnQgIDxodW50QHBpenphLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IChwcmludF9pbnNuX2QxMHYpOiBEZWNsYXJlLgoKTW9uIEp1bCAxNSAxNjo1NTozOCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgR2V0IHJpZCBvZiBkZWNscyBmb3IgcHJpbnRfaW5zbl9pODA4NiwKCXByaW50X2luc25fc3BhcmM2NCBhbmQgcHJpbnRfaW5zbl9zcGFyY2xpdGUuCgkqIChJTklUX0RJU0FTU0VNQkxFX0lORk8pOiAgU3BsaXQgaW50byB0d28gcGllY2VzLiAgT25lLAoJSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0ggaW5pdHMgZXZlcnl0aGluZyBleGNlcHQgZm9yIGVuZGlhbiwKCW1hY2gsIGFuZCBhcmNoLgoKRnJpIEp1bCAxMiAxMDoxOToyNyAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2k4MDg2KTogIERlY2xhcmUuCgpXZWQgSnVsICAzIDE2OjAyOjM5IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc3BhcmNsaXRlKTogIERlY2xhcmUuCgpUdWUgSnVuIDE4IDE2OjAyOjQ2IDE5OTYgIEplZmZyZXkgQS4gTGF3ICA8bGF3QHJ0bC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2g4MzAwcyk6IERlY2xhcmUuCgpUdWUgSnVuIDE4IDE1OjExOjMzIDE5OTYgIEtsYXVzIEthZW1wZiAgPGtrYWVtcGZAcHJvZ2lzLmRlPgoKCSogZm9wZW4tdm1zLmg6IE5ldyBmaWxlLgoKVHVlIEp1biAgNCAxODo1ODoxNiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5vdGljZV9hbGwgZmllbGQuCgpGcmkgQXByIDI2IDEwOjMzOjEyIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oICgjaWZkZWYgSU5fR0NDKTogI2luY2x1ZGUgImdhbnNpZGVjbC5oIi4KCShQUk9UTyxQVFIsY29uc3QpOiBEZWxldGUuCgpNb24gQXByIDIyIDE3OjI3OjQyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgdHJhZGl0aW9uYWxfZm9ybWF0IGZpZWxkLgoKTW9uIEFwciAxNSAxNToxNjo1NiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGNob29zZV90ZW1wX2Jhc2UpOiBBZGQgcHJvdG90eXBlLgoKVHVlIE1hciAxMiAxNzoyOTo0NiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF93cmFwcGVkX2xpbmtfaGFzaF9sb29rdXApOiBEZWNsYXJlLgoJKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHdyYXBfaGFzaCBmaWVsZC4KCldlZCBGZWIgMTQgMTY6NDk6MTcgMTk5NiAgTWFydGluIEFuYW50aGFyYW1hbiAgPG1hcnRpbkBtYWlsLmltZWNoLnVuaS1kdWlzYnVyZy5kZT4KCgkqIGllZWUuaCAoaWVlZV9yZWNvcmRfZW51bV90eXBlKTogRGVmaW5lCglpZWVlX2V4dGVybmFsX3JlZmVyZW5jZV9pbmZvX2VudW0uCgpGcmkgRmViICAyIDE3OjA5OjI1IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChESVNBU01fUkFXX0lOU04pOiBEZWxldGUuCgpUdWUgSmFuIDIzIDA5OjIxOjQ3IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBTZXQgZW5kaWFuIHRvIEJGRF9FTkRJQU5fVU5LTk9XTi4KCU5ldyBhcmd1bWVudCBGUFJJTlRGX0ZVTkMuCgpNb24gSmFuIDIyIDE2OjM3OjU5IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogTmV3IG1lbWJlcnMgYXJjaCwgbWFjaCwgZW5kaWFuLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IEluaXRpYWxpemUgdGhlbS4KCShESVNBU01fUkFXX0lOU057LEZMQUd9KTogRGVmaW5lLgoKVGh1IEphbiAxOCAxMTozMjozOCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiBDaGFuZ2Ugb3BuYW1lIHBhcmFtZXRlciB0bwoJY29uc3QgY2hhciAqLgoJKGNwbHVzX21hbmdsZV9vcG5hbWUpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgYW5kIG9wbmFtZSBwYXJhbWV0ZXIgdG8KCWNvbnN0IGNoYXIgKi4KCkZyaSBKYW4gIDUgMDA6MDE6MjIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogaWVlZS5oIChlbnVtIGllZWVfcmVjb3JkKTogQWRkIGllZWVfYXNuX3JlY29yZF9lbnVtLAoJaWVlZV9hdF9yZWNvcmRfZW51bSwgaWVlZV90eV9yZWNvcmRfZW51bSwgaWVlZV9hdG5fcmVjb3JkX2VudW0sCglpZWVlX2JiX3JlY29yZF9lbnVtLCBhbmQgaWVlZV9iZV9yZWNvcmRfZW51bS4KCldlZCBKYW4gIDMgMTM6MTI6MDkgMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSBjb3B5cmlnaHQgdG8gMTk5Ni4KCShfb2JzdGFja19tZW1vcnlfdXNlZCk6IERlY2xhcmUuCgkob2JzdGFja19tZW1vcnlfdXNlZCk6IERlZmluZSBtYWNyby4KClRodSBEZWMgMjggMTE6NDI6MTIgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKHhzdHJkdXApOiBEZWNsYXJlLgoKVGh1IERlYyAyMSAxNDo0NzoxNyAxOTk1ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiB3YWl0Lmg6IFByb3RlY3QgYWxsIG1hY3JvcyB3aXRoICNpZm5kZWYuCgpUdWUgT2N0IDI0IDIxOjQ1OjQwIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgc3RhdGljX2xpbmsgZmllbGQuCgpUdWUgU2VwIDEyIDE2OjI4OjA0IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBzeW1ib2wgcGFyYW1ldGVyIHRvCgl3YXJuaW5nIGNhbGxiYWNrLgoKRnJpIFNlcCAgMSAxMzoxMTo1MSAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBDaGFuZ2Ugd2FybmluZyBjYWxsYmFjawoJdG8gdGFrZSBCRkQsIHNlY3Rpb24sIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KClRodSBBdWcgMzEgMTY6NDU6MTIgMTk5NSAgc3RldmUgY2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgUEUgc3R1ZmYuCgpUdWUgQXVnIDIyIDAzOjE4OjIzIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBrci1sYXB0b3AuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBEZWNsYXJlIHhzdHJlcnJvci4gIEZyb20gUGF0IFJhbmtpbi4KCk1vbiBBdWcgMjEgMTg6MTE6MzYgMTk5NSAgc3RldmUgY2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgUEUgc3R1ZmYuCgpXZWQgQXVnICAyIDA4OjE0OjEyIDE5OTUgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc3BhcmM2NCk6IERlY2xhcmUuCgpNb24gSnVsIDEwIDEzOjI2OjQ5IDE5OTUgIEVyaWMgWW91bmdkYWxlICA8ZXJpY0BhaWIuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgc3ltYm9saWMuCgpTdW4gSnVsICAyIDE3OjQ4OjQwIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBDaGFuZ2UgdHlwZSBvZiBiYXNlX2ZpbGUgdG8KCVBUUi4KClRodSBKdW4gMjkgMDA6MDI6NDUgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGRlZCBiYXNlX2ZpbGUgbWVtYmVyLgoKVHVlIEp1biAyMCAxNjo0MDowNCAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYW5zaWRlY2wuaDogd2luMzJzIGlzIEFOU0kgZW5vdWdoLgoKVGh1IE1heSAxOCAwNDoyNTo1MCAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJV2VkIE1heSAxMCAxNDoyODoxNiAxOTk1IFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybWx0ZC5jby51aykKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9hcm0pOiBEZWxldGUgZGVjbGFyYXRpb24uCgkocHJpbnRfaW5zbl97bGl0dGxlLGJpZ31fYXJtKTogTmV3IGRlY2xhcmF0aW9ucy4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2FybV9leHQpOiBEZWNsYXJlLgoKU2F0IE1heSAxMyAxMDoxNDowOCAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogY29mZi9wZS5oOiBOZXcgZmlsZS4KCSogYmZkbGluay5oIChzdWJzeXRlbSwgc3RhY2tfaGVhcF9wYXJhbWV0ZXJzKTogTmV3LgoJKiBjb2ZmL2kzODYuaCAoTlRfU0VDVElPTl9BTElHTk1FTlQsIE5UX0ZJTEVfQUxJR05NRU5ULAoJTlRfREVGX1JFU0VSVkUsIE5UX0RFRl9DT01NSVQpOiBOZXcuCgkqIGNvZmYvaW50ZXJuYWwuaCAoaW50ZXJuYWxfZmlsZWhkcik6ICBOZXcgZmllbGRzIGZvciBQRS4KCShJTUFHRV9EQVRBX0RJUkVDVE9SWSk6IE5ldy4KCShpbnRlcm5hbF9hb3V0aGRyKTogTmV3IGZpZWxkcyBmb3IgUEUuCgpUaHUgTWF5ICA0IDE0OjM2OjQyIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgaW5jbHVkZSBhbnNpZGVjbC5oIGlmIElOX0dDQy4KClR1ZSBGZWIgMjEgMDA6Mzc6MjggMTk5NSAgSmVmZiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBocC1zeW10YWIuaDogRG9uJ3QgdXNlIGJpdGZpZWxkIGVudW1lcmF0aW9ucywgdGhlIEhQIEMgY29tcGlsZXIKCWRvZXMgbm90IGhhbmRsZSB0aGVtIGNvcnJlY3RseS4KClRodSBGZWIgIDkgMTQ6MjA6MjcgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogRG9uJ3QgZGVjbGFyZSBwYXJhbWV0ZXIgdHlwZTsgc29tZQoJc3lzdGVtcyBoYXZlIHRoaXMgaW4gdGhlaXIgaGVhZGVyIGZpbGVzLgoKV2VkIEZlYiAgOCAxNzozNTozOCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIGZvcm1hdCBvZiBjb21tb24KCXN5bWJvbCBpbmZvcm1hdGlvbiwgdG8gcmVtb3ZlIHJlc3RyaWN0aW9ucyBvbiBtYXhpbXVtIHNpemUgYW5kCglhbGlnbm1lbnQgcG93ZXIsIGJ5IHVzaW5nIGEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBpbnN0ZWFkLgoKTW9uIEZlYiAgNiAxNDo1NTozMiAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGVudW0gYmZkX2xpbmtfaGFzaF90eXBlKTogUmVuYW1lIGJmZF9saW5rX2hhc2hfd2VhawoJdG8gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsuICBBZGQgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrLgoKTW9uIEphbiAxNiAyMTowMDoyMyAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKEdEQl9JTklUX0RJU0FTU0VNQkxFX0lORk8sIGV0Yyk6IFJlbW92ZSBhbGwKCUdEQi1zcGVjaWZpYyBkZWZpbml0aW9ucy4KClN1biBKYW4gMTUgMTg6Mzk6MzUgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc3BsYXQ+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdzY1KTogRGVjbGFyZS4KClRodSBKYW4gMTIgMTc6NTE6MTcgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGN1am8uY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChoZXhfcCk6IEZpeCBzZW5zZSBvZiB0ZXN0LgoKV2VkIEphbiAxMSAyMjozNjo0MCAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKF9oZXhfYXJyYXlfc2l6ZSwgX2hleF9iYWQsIF9oZXhfdmFsdWUsIGhleF9pbml0LAoJaGV4X3AsIGhleF92YWx1ZSk6IE5ldyBtYWNyb3MgYW5kIGRlY2xhcmF0aW9ucywgZm9yIGhleC5jLgoKRnJpIEphbiAgNiAxNzo0NDoxNCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IE1ha2UgaWRlbXBvdGVudC4KCldlZCBEZWMgMTQgMTM6MDg6NDMgMTk5NCAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogcHJvZ3Jlc3MuaDogTmV3IGZpbGUsIGVtcHR5IGRlZmluaXRpb25zIGZvciBwcm9ncmVzcyBtYWNyb3MuCgpGcmkgTm92IDI1IDAwOjE0OjA1IDE5OTQgIEplZmYgTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogaHAtc3ltdGFiLmg6IE5ldyBmaWxlIGRlc2NyaWJpbmcgdGhlIGRlYnVnIHN5bWJvbHMgZW1pdHRlZAoJYnkgdGhlIEhQIEMgY29tcGlsZXJzLgoKRnJpIE5vdiAxMSAxNTo0ODozNyAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIHUuYy5zaXplIGZyb20gMjQKCXRvIDI2IGJpdHMsIGFuZCBjaGFuZ2UgdS5jLmFsaWdubWVudF9wb3dlciBmcm9tIDggdG8gNiBiaXRzLiAgNgoJYml0IGluIHRoZSBhbGlnbm1lbnQgcG93ZXIgaXMgZW5vdWdoIGZvciBhIDY0IGJpdCBhZGRyZXNzIHNwYWNlLgoKTW9uIE9jdCAzMSAxMzowMjo1MSAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChjcGx1c19tYW5nbGVfb3BuYW1lKTogRGVjbGFyZS4KClR1ZSBPY3QgMjUgMTE6Mzg6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBzYW5ndWluZS5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogRml4IGNvbW1lbnRzIGZvcgoJbXVsdGlwbGVfY29tbW9uIGZpZWxkLgoKU3VuIFNlcCAwNCAxNzo1ODoxMCAxOTk0ICBSaWNoYXJkIEVhcm5zaGF3IChyd2VAcGVnYXN1cy5lc3ByaXQuZWMub3JnKQoKCSogYW91dC9hb3V0NjQuaDogT25seSBkZWZpbmUgUU1BR0lDIGlmIGl0IGlzbid0IGFscmVhZHkgZGVmaW5lZC4KCgkqIGRpcy1hc20uaDogQWRkIHN1cHBvcnQgZm9yIHRoZSBBUk0uCgpXZWQgQXVnIDEwIDEyOjUxOjQxIDE5OTQgIERvdWcgRXZhbnMgIChkamVAY2FudWNrLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaCAoc3Ryc2lnbmFsKTogRG9jdW1lbnQgaXRzIGV4aXN0ZW5jZSBldmVuIGlmIHdlCgljYW4ndCBkZWNsYXJlIGl0LgoKVHVlIEF1ZyAgMiAxNDo0MDowMyAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIG9zOWsuaDogUmVtb3ZlIHVfaW50MTYsIHVfaW50MzIsIGFuZCBvd25lcl9pZCB0eXBlZGVmcyBhbmQKCWV4cGFuZCB0aGVpciB1c2VzLiAgVGhvc2UgbmFtZXMgY29uZmxpY3Qgd2l0aCBNYWNoIGhlYWRlcnMuCgpGcmkgSnVsIDIyIDE0OjE3OjEyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgdS5jLnNpemUgaW50byBhCgliaXRmaWVsZC4gIEFkZCBmaWVsZCB1LmMuYWxpZ25tZW50X3Bvd2VyLgoKU3VuIEp1bCAxMCAwMDoyNjozOSAxOTk0ICBJYW4gRGFsbCAgKGRhbGxAaGZyZC5kc3RvLmdvdi5hdSkKCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2luc25fbnMzMmsgZGVjbGFyYXRpb24uCgpNb24gSnVuIDIwIDE3OjEzOjI5IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaGFzaF90YWJsZSk6IE1ha2UgY3JlYXRvciBhIGNvbnN0IHBvaW50ZXIuCgpTYXQgSnVuIDE4IDE2OjA5OjMyIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IERlY2xhcmUuCgpUaHUgSnVuIDE2IDE1OjE5OjAzIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkIHNoYXJlZC4KCk1vbiBKdW4gIDYgMTQ6Mzk6NDQgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IFJlbW92ZSB3cml0dGVuIGZpZWxkOgoJbm90IG5lZWRlZCBmb3IgYWxsIGJhY2tlbmRzLgoKVGh1IEFwciAyOCAxOTowNjo1MCAxOTk0ICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZXIpOiBEZWNsYXJlLgoKRnJpIEFwciAgMSAwMDozODoxNyAxOTk0ICBKaW0gV2lsc29uICAod2lsc29uQG1vbGUuZ251LmFpLm1pdC5lZHUpCgoJKiBvYnN0YWNrLmg6IERlbGV0ZSB1c2Ugb2YgSU5fR0NDIHRvIGNvbnRyb2wgd2hldGhlcgoJc3RkZGVmLmggb3IgZ3N0ZGRlZi5oIGlzIGluY2x1ZGVkLgoKVHVlIE1hciAyMiAxMzowNjowMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IEFkZCBiZmRfZGF0YV9saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IEFkZCBkYXRhIGZpZWxkIHRvIHVuaW9uLgoKTW9uIE1hciAyMSAxODo0NToyNiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBDaGFuZ2UgYml0c2l6ZSBhcmd1bWVudAoJdG8gYWRkX3RvX3NldCB0byByZWxvYy4gIFJlbW92ZSBiaXRzaXplIGFyZ3VtZW50IGZyb20gY29uc3RydWN0b3IuCglDb21tZW50IHRoYXQgcmVsb2Nfb3ZlcmZsb3csIHJlbG9jX2Rhbmdlcm91cyBhbmQgdW5hdHRhY2hlZF9yZWxvYwoJbXVzdCBoYW5kbGUgTlVMTCBwb2ludGVycyBmb3IgcmVsb2MgbG9jYXRpb24uCgkoZW51bSBiZmRfbGlua19vcmRlcl90eXBlKTogQWRkIGJmZF9zZWN0aW9uX3JlbG9jX2xpbmtfb3JkZXIgYW5kCgliZmRfc3ltYm9sX3JlbG9jX2xpbmtfb3JkZXIuCgkoc3RydWN0IGJmZF9saW5rX29yZGVyKTogQWRkIHJlbG9jIGZpZWxkIHRvIHVuaW9uLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcl9yZWxvYyk6IERlZmluZS4KCk1vbiBNYXIgMTQgMTI6Mjc6NTAgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogaWVlZS1mbG9hdC5oOiBSZW1vdmVkOyBubyBsb25nZXIgdXNlZC4KClR1ZSBNYXIgIDEgMTg6MTA6NDkgMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIG9zOWsuaDogb3M5MDAwIHRhcmdldCBzcGVjaWZpYyBoZWFkZXIgZmlsZSwgdGhlIGhlYWRlciBvZiB0aGUKCW9iamVjdCBmaWxlIGlzIHVzZWQgbm93LgoKU3VuIEZlYiAyNyAyMTo1MjoyNiAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGZsb2F0Zm9ybWF0Lmg6IE5ldyBmaWxlLCBpbnRlbmRlZCB0byByZXBsYWNlIGllZWUtZmxvYXQuaC4KClN1biBGZWIgMjAgMTc6MTU6NDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBsaXNhLmN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oIChBTlNJX1BST1RPVFlQRVMpOiBEZWZpbmUgaWYgdXNpbmcgQU5TSSBwcm90b3R5cGVzLgoKV2VkIEZlYiAxNiAwMTowNzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaDogRG9uJ3QgZGVjbGFyZSBzdHJzaWduYWwsIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoCglTb2xhcmlzIHN5c3RlbSBoZWFkZXIgZmlsZXMuCgpTYXQgRmViIDEyIDIyOjExOjMyIDE5OTQgIEplZmZyZXkgQS4gTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogbGliaWJlcnR5LmggKHhleGl0KTogVXNlIF9fdm9sYXRpbGVfXyB0byBhdm9pZCBsb3NpbmcgaWYKCWNvbXBpbGluZyB3aXRoIGdjYyAtdHJhZGl0aW9uYWwuCgpUaHUgRmViIDEwIDE0OjA1OjQxIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oOiBOZXcgZmlsZS4gIERlY2xhcmVzIGZ1bmN0aW9ucyBwcm92aWRlZCBieQoJbGliaWJlcnR5LgoKVHVlIEZlYiAgOCAwNToxOTo1MiAxOTk0ICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJSGFuZGxlIG9ic3RhY2tfY2h1bmtfYWxsb2MgcmV0dXJuaW5nIE5VTEwuICBUaGlzIGFsbG93cwoJb2JzdGFja3MgdG8gYmUgdXNlZCBieSBsaWJyYXJpZXMsIHdpdGhvdXQgZm9yY2luZyB0aGVtCgl0byBjYWxsIGV4aXQgb3IgbG9uZ2ptcC4KCSogb2JzdGFjay5oIChzdHJ1Y3Qgb2JzdGFjayk6IEFkZCBhbGxvY19mYWlsZWQgZmxhZy4KCV9vYnN0YWNrX2JlZ2luLCBfb2JzdGFja19iZWdpbl8xKTogRGVjbGFyZSB0byByZXR1cm4gaW50LCBub3Qgdm9pZC4KCShvYnN0YWNrX2ZpbmlzaCk6IElmIGFsbG9jX2ZhaWxlZCwgcmV0dXJuIE5VTEwuCgkob2JzdGFja19iYXNlLCBvYnN0YWNrX25leHRfZnJlZSwgb2Jqc3RhY2tfb2JqZWN0X3NpemUpOgoJSWYgYWxsb2NfZmFpbGVkLCByZXR1cm4gMC4KCShvYnN0YWNrX2dyb3csIG9ic3RhY2tfZ3JvdzAsIG9ic3RhY2tfMWdyb3csIG9ic3RhY2tfcHRyX2dyb3csCglvYnN0YWNrX2ludF9ncm93LCBvYnN0YWNrX2JsYW5rKTogSWYgYWxsb2NfZmFpbGVkLCBkbyBub3RoaW5nIHRoYXQKCWNvdWxkIGNvcnJ1cHQgdGhlIG9ic3RhY2suCgpNb24gSmFuIDI0IDE1OjA2OjA1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBuYW1lLCByZWxvY19uYW1lIGFuZAoJYWRkZW5kIGFyZ21lbnRzIHRvIHJlbG9jX292ZXJmbG93IGNhbGxiYWNrLgoKRnJpIEphbiAyMSAxOToxMzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYmlnX3Bvd2VycGMsIHByaW50X2luc25fbGl0dGxlX3Bvd2VycGMsCglwcmludF9pbnNuX3JzNjAwMCk6IERlY2xhcmUuCgpUaHUgSmFuICA2IDE0OjE1OjU1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBiaXRzaXplIGFyZ3VtZW50IHRvCglhZGRfdG9fc2V0IGZpZWxkLiAgQWRkIG5ldyBjYWxsYmFjayBuYW1lZCBjb25zdHJ1Y3Rvci4KClRodSBEZWMgMzAgMTA6NDQ6MDYgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBydGwuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaDogTmV3IGZpbGUgZm9yIG5ldyBCRkQgbGlua2VyIGJhY2tlbmQgcm91dGluZXMuCgpNb24gTm92IDI5IDEwOjQzOjU3IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZW51bSBkaXNfaW5zbl90eXVwZSk6IFJlbW92ZSBub24tQU5TSSB0cmFpbGluZyBjb21tYS4KClNhdCBPY3QgIDIgMjA6NDI6MjYgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IE1vdmUgY29tbWVudCB0byByaWdodCBwbGFjZS4KCk1vbiBBdWcgIDkgMTk6MDM6MzUgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oIChvYnN0YWNrX2NodW5rZnVuLCBvYnN0YWNrX2ZyZWVmdW4pOiBBZGQgZGVmbnMgZnJvbQoJcHJldmlvdXMgdmVyc2lvbi4gIEFyZSB0aGVzZSBDeWdudXMgbG9jYWwgY2hhbmdlcz8KCkZyaSBBdWcgIDYgMTc6MDU6NDcgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmgsIG9ic3RhY2suaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCk1vbiBBdWcgIDIgMTY6Mzc6MTQgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGNvZmYvaTM4Ni5oOiAgQWRkIEx5bnggbWFnaWMgbnVtYmVyLgoKTW9uIEF1ZyAgMiAxNDo0NToyOSAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIE1vdmUgZW51bSBvdXRzaWRlIG9mIHN0cnVjdCBkZWZuIHRvIGF2b2lkIHdhcm5pbmdzLgoKTW9uIEF1ZyAgMiAwODo0OTozMCAxOTkzICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogd2FpdC5oIChXRVhJVFNUQVRVUywgV1NUT1BTSUcpOiBNYXNrIGRvd24gdG8gOCBiaXRzLiAgVGhpcyBpcwoJZm9yIHN5c3RlbXMgdGhhdCBzdG9yZSBzdHVmZiBpbnRvIHRoZSBoaWdoIDE2IGJpdHMgb2YgYSB3YWl0CglzdGF0dXMuCgpGcmkgSnVsIDMwIDE4OjM4OjAyIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgQWRkIG5ldyBmaWVsZHMgaW5zbl9pbmZvX3ZhbGlkLCBicmFuY2hfZGVsYXlfaW5zbnMsCglkYXRhX3NpemUsIGluc25fdHlwZSwgdGFyZ2V0LCB0YXJnZXQyLiAgVGhlc2UgYXJlIHVzZWQgdG8gcmV0dXJuCglpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbnN0cnVjdGlvbiBkZWNvZGVycyBiYWNrIHRvIHRoZSBjYWxsaW5nCglwcm9ncmFtLiAgQWRkIGNvbW1lbnRzLCBtYWtlIG1vcmUgcmVhZGFibGUuCgpNb24gSnVsIDE5IDIyOjE0OjE0IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBkZW5lYi5jeWdudXMuY29tKQoKCSogbmxtOiAgTmV3IGRpcmVjdG9yeSBjb250YWluaW5nIE5MTS9OZXRXYXJlIGluY2x1ZGVzLgoKVGh1IEp1bCAxNSAxMjoxMDowNCAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY2FtYnJpZGdlLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkIGFwcGxpY2F0aW9uX2RhdGEuCgpUaHUgSnVsIDE1IDEyOjQxOjE1IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkZWQgZGVjbGFyYXRpb24gb2YgcHJpbnRfaW5zbl9tODhrLgoKVGh1IEp1bCAgOCAwOTowNToyNiAxOTkzICBEb3VnIEV2YW5zICAoZGplQGNhbnVjay5jeWdudXMuY29tKQoKCSogb3Bjb2RlL2g4MzAwLmg6IExvdHMgb2YgbGl0dGxlIGZpeGVzIGZvciB0aGUgaDgvMzAwaC4KCkZyaSBKdWwgIDIgMTA6MzE6NTkgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogVXNlIEFOU0kgbWFjcm9zIGlmIF9fbWlwcyBhbmQgX1NZU1RZUEVfU1ZSNCBhcmUKCWRlZmluZWQsIHNpbmNlIFJJU0MvT1MgY2MgaGFuZGxlcyBBTlNJIGRlY2xhcmF0aW9ucyBpbiBTVlI0IG1vZGUKCWJ1dCBkb2VzIG5vdCBkZWZpbmUgX19TVERDX18uCgpTdW4gSnVuIDIwIDE4OjI3OjUyIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBwb3NlaWRvbi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBEb24ndCBuZWVkIHRvIGluY2x1ZGUgYW5zaWRlY2wuaCBhbnkgbW9yZS4KCkZyaSBKdW4gMTggMDM6MjI6MTAgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBvYXN5cy5oOiAgRWxpbWluYXRlICJpbnQ4X3R5cGUiLCAiaW50MTZfdHlwZSIsICJpbnQzMl90eXBlIiwgYW5kCgl0aGVpciB2YXJpYW50cy4gIFRoZXNlIGNoYW5nZXMgYXJlIGNvb3JkaW5hdGVkIHdpdGggY29ycmVzcG9uZGluZwoJY2hhbmdlcyBpbiAuLi9iZmQvb2FzeXMuYy4KCldlZCBKdW4gMTYgMTA6NDM6MDggMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBiZmQuaDogIE5vdGUgdGhhdCBpdCBoYXMgYmVlbiByZW1vdmVkLgoKVHVlIEp1biAgOCAxMjoxNjowMyAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0BwaHlkZWF1eC5jeWdudXMuY29tKQoKCSBTdXBwb3J0IGZvciBIOC8zMDAtSAoJKiBkaXMtYXNtLmggKHByaW50X2luc25faDgzMDAsIHByaW50X2luc25faDgzMDBoKTogRGVjbGFyZSBpdC4KCSogY29mZi9oODMwMC5oOiBOZXcgbWFnaWMgbnVtYmVyLgoJKiBjb2ZmL2ludGVybmFsLmg6IE5ldyByZWxvY2F0aW9ucy4KCSogb3Bjb2RlL2g4MzAwLmg6IExvdHMgb2YgbmV3IG9wY29kZXMuCgpUdWUgSnVuICAxIDA3OjM1OjAzIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBrci1wYy5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoY29uc3QpOiBEb24ndCBkZWZpbmUgaXQgaWYgaXQncyBhbHJlYWR5IGRlZmluZWQuCgpUaHUgTWF5IDI3IDE4OjE5OjUxIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBjYW1icmlkZ2UuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9ocHBhKTogRGVjbGFyZSBpdC4KCgkqIGJmZC5oOiBNb3ZlZCB0byBiZmQgZGlyZWN0b3J5LiAgU21hbGwgc3R1YiBoZXJlIGluY2x1ZGVzIGl0Cgl3aXRob3V0IHJlcXVpcmluZyAiLUkuLi9iZmQiLgoKVGh1IEFwciAyOSAxMjowNjoxMyAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggQlNGX0ZVTkNUSU9OLgoKTW9uIEFwciAyNiAxODoxNTo1MCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBkaXMtYXNtLmg6IFVwZGF0ZWQgd2l0aCBIaXRhY2hpIFNILgoKRnJpIEFwciAyMyAxODo0MTozOCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggYWxwaGEgY2hhbmdlcy4KCSogZGlzLWFzbS5oOiBBZGRlZCBhbHBoYS4KCkZyaSBBcHIgMTYgMTc6MzU6MzAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBzaWduZWQgYmZkXypnZXRfKi4KClRodSBBcHIgMTUgMDk6MjQ6MjEgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmb3IgZmlsZV90cnVuY2F0ZWQgZXJyb3IuCgpUaHUgQXByICA4IDEwOjUzOjQ3IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IElmIG5vIEFOU0ksIGRlZmluZSBjb25zdCB0byBiZSBlbXB0eS4KClRodSBBcHIgIDEgMDk6MDA6MTAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IERlY2xhcmUgYTI5ayBhbmQgaTk2MCBwcmludF9pbnNuXyouCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9hZGRyZXNzX2Z1bmMgYW5kIHJlbGF0ZWQgc3R1ZmYuCgoJKiBkaXMtYXNtLmggKGRpc19hc21fcmVhZF9tZW1vcnkpOiBGaXggcHJvdG90eXBlLgoKV2VkIE1hciAzMSAxNzo0MDoxNiAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2luc25fc3BhcmMuCgpXZWQgTWFyIDMxIDE3OjUxOjQyIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIGZvciBCRkRfUkVMT0NfTUlQU19HUFJFTCBhbmQgYmZkX1tnc11ldF9ncF9zaXplCglwcm90b3R5cGVzLgoKV2VkIE1hciAzMSAxNjozNToxMiAxOTkzICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAoZGlzYXNzZW1ibGVfaW5mbyk6ICBGaXggdHlwbyBpbiBwcm90b3R5cGUgb2YKCWRpc19hc21fbWVtb3J5X2Vycm9yKCkuCgpUdWUgTWFyIDMwIDE5OjA5OjIzIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZXJfaW5mbyk6IEFkZCByZWFkX21lbW9yeV9mdW5jLAoJbWVtb3J5X2Vycm9yX2Z1bmMsIGJ1ZmZlciwgYW5kIGxlbmd0aC4KCSh7R0RCXyx9SU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogU2V0IHRoZW0uCglwcmludF9pbnNuXyo6IFJlbW92ZSBzZWNvbmQgYXJndW1lbnQuCgpUdWUgTWFyIDMwIDE0OjQ4OjU1IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbG1hIGZpZWxkIG9mIHNlY3Rpb24uCgpUdWUgTWFyIDMwIDEyOjIyOjU1IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogVXNlIEFOU0kgdmVyc2lvbnMgb24gQUlYIHJlZ2FyZGxlc3Mgb2YgX19TVERDX18uCgpGcmkgTWFyIDE5IDE0OjQ5OjQ5IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBBZGQgaDg1MDAuCgpUaHUgTWFyIDE4IDEzOjQ5OjA5IDE5OTMgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogIE1vdmVkIGZyb20gLi4vZ2RiLgoJKiBkaXMtYXNtLmg6ICBOZXcgZmlsZS4gIEludGVyZmFjZSB0byBkaXMtYXNzZW1ibGVyLgoKVGh1IE1hciAxMSAxMDo1Mjo1NyAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKERNR0xfTk9fT1BUUyk6ICBBZGQgZGVmaW5lIChzZXQgdG8gMCkgdG8gdXNlCglpbiBwbGFjZSBvZiBiYXJlIDAsIGZvciByZWFkYWJpbGl0eSByZWFzb25zLgoKVHVlIE1hciAgMiAxNzo1MDoxMSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIGNmcm9udCB3aXRoIEFSTS4KClR1ZSBGZWIgMjMgMTI6MjE6MTQgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbmV3IGVsZW1lbnRzIGluIEpVTVBfVEFCTEUuCgpUdWUgRmViIDE2IDAwOjUxOjMwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgZm9yIEJGRF9WRVJTSU9OIDIuMS4KClR1ZSBKYW4gMjYgMTE6NDk6MjAgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgU0VDX0lTX0NPTU1PTiBmbGFnLgoKVHVlIEphbiAxOSAxMjoyNToxMiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBiZmRfYXN5bWJvbF92YWx1ZSBidWcgZml4LgoKRnJpIEphbiAgOCAxNjozNzoxOCAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIHRvIGluY2x1ZGUgRUNPRkYgdGRhdGEgYW5kIHRhcmdldF9mbGF2b3VyLgoKU3VuIERlYyAyNyAxNzo1MjozMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgQWRkIGRlY2xhcmF0aW9uIGZvciBiZmRfZ2V0X3NpemUoKS4KClR1ZSBEZWMgMjIgMjI6NDI6NDYgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgUHJvdGVjdCBmaWxlIGZyb20gbXVsdGlwbGUgaW5jbHVzaW9ucyB3aXRoCgkjaWYgIWRlZmluZWQoREVNQU5HTEVfSCkuLi4jZGVmaW5lIERFTUFOR0xFX0guLi4jZW5kaWYuCgpNb24gRGVjIDIxIDIxOjI1OjUwIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBnZXQgaHBwYV9jb3JlX3N0cnVjdCBmcm9tIGJmZC5jLgoKVGh1IERlYyAxNyAwMDo0MjozNSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIGdldCB0ZWtoZXggdGRhdGEgbmFtZSBjaGFuZ2UgZnJvbSBiZmQuCgpNb24gTm92ICA5IDIzOjU1OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogIFVwZGF0ZSBjb21tZW50cyB0byBkaXNjb3VyYWdlIHVzZSBvZiBFWEZVTi4KClRodSBOb3YgIDUgMTY6MzU6NDQgMTk5MiAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSB0byBicmluZyBpbiBTRUNfU0hBUkVEX0xJQlJBUlkuCgpUaHUgTm92ICA1IDAzOjIxOjMyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gbWF0Y2ggRVhGVU4sIGJmZF9zZWNsZXRfc3RydWN0LCBhbmQgU0RFRgoJY2xlYW51cHMgaW4gYmZkLgoKV2VkIE5vdiAgNCAwNzoyODowNSAxOTkyICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3lnbnVzLmNvbSkKCgkqIGJvdXQuaCAoTl9DQUxMTkFNRSwgTl9CQUxOQU1FKTogRGVmaW5lIGFzIGNoYXItdHlwZSB2YWx1ZXMsIHNvCgl3aWRlbmluZyB3b3JrcyBjb25zaXN0ZW50bHkuCgpGcmkgT2N0IDE2IDAzOjE3OjA4IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6ICBVcGRhdGUgdG8gUmV2aXNlZCBTdGFuZGFyZCBGU0YgVmVyc2lvbi4KClRodSBPY3QgMTUgMjE6NDM6MjIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQHNlbmRhaS5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmggKHN0cnVjdCBvcHRpb24pOiB1c2UgdGhlIHByb3ZpZGVkIGVudW0gZm9yIGhhc19hcmcuCgoJKiBkZW1hbmdsZS5oIChBVVRPX0RFTUFOR0xJTkcsIEdOVV9ERU1BTkdMSU5HLAoJICBMVUNJRF9ERU1BTkdMSU5HKTogdWx0cml4IGNvbXBpbGVycyByZXF1aXJlIGVudW1zIHRvIGJlCgkgIGVudW1zIGFuZCBpbnRzIHRvIGJlIGludHMgYW5kIGNhc3RzIHdoZXJlIHRoZXkgbWVldC4gIGNhc3Qgc29tZQoJICBlbnVtcyBpbnRvIGludHMuCgpUaHUgT2N0IDE1IDA0OjM1OjUxIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgYWZ0ZXIgY29tbWVudCBjaGFuZ2VzLgoKVGh1IE9jdCAgOCAwOTowMzowMiAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oIChiZmRfZ2V0X3N5bWJvbF9sZWFkaW5nX2NoYXIpOiBuZXcgbWFjcm8gZm9yIGdldHRpbmcgaW4geHZlYwoKVGh1IFNlcCAgMyAwOToxMDo1MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmggKHN0cnVjdCByZWxvY19ob3d0b19zdHJ1Y3QpOiAgc2l6ZSBuZWVkcyB0byBiZSBzaWduZWQgaWYKCWl0J3MgZ29pbmcgdG8gaG9sZCBuZWdhdGl2ZSB2YWx1ZXMuCgpTdW4gQXVnIDMwIDE3OjUwOjI3IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBOZXcgZmlsZSwgbW92ZWQgZnJvbSAuLi9nZGIuICBNYWRlIGluZGVwZW5kZW50CglvZiBnZGIuICBBbGxvdyBkZW1hbmdsaW5nIHN0eWxlIG9wdGlvbiB0byBiZSBwYXNzZWQgYXMgYQoJcGFyYW1ldGVyIHRvIGNwbHVzX2RlbWFuZ2xlKCksIGJ1dCB1c2luZyB0aGUKCWN1cnJlbnRfZGVtYW5nbGluZ19zdHlsZSBnbG9iYWwgYXMgdGhlIGRlZmF1bHQuCgpTYXQgQXVnIDI5IDEwOjA3OjU1IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgTWVyZ2UgY29tbWVudCBjaGFuZ2UgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKVGh1IEF1ZyAyNyAxMjo1OToyOSAxOTkyICBCcmVuZGFuIEtlaG9lICAoYnJlbmRhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IGFkZCB3ZTMyawoKVHVlIEF1ZyAyNSAxNTowNzo0NyAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBuZXcgYWZ0ZXIgWjgwMDAgc3R1ZmYKCk1vbiBBdWcgMTcgMDk6MDE6MjMgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogUmVnZW5lcmF0ZWQgYWZ0ZXIgcGFnZS9zZWdtZW50IHNpemUgY2hhbmdlcy4KClNhdCBBdWcgIDEgMTM6NDY6MzEgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6IE1lcmdlIGNoYW5nZXMgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKTW9uIEp1bCAyMCAyMTowNjoyMyAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAoYXJlYV9pZCwgZmxhZ3MpOiAgUmVtb3ZlLCByZXBsYWNlIHdpdGggZXh0cmFfYXJnLAoJdXNlX2V4dHJhX2FyZywgYW5kIG1heWJlX2VtcHR5X29iamVjdC4KCSogb2JzdGFjay5oIChPQlNUQUNLX01BWUJFX0VNUFRZX09CSkVDVCwgT0JTVEFDS19NTUFMTE9DX0xJS0UpOgoJUmVtb3ZlLCByZXBsYWNlZCBieSBtYXliZV9lbXB0eV9vYmplY3QgYW5kIHVzZV9leHRyYV9hcmcgYml0ZmllbGRzLgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfZnVsbF9iZWdpbiwgX29ic3RhY2tfYmVnaW4pOiAgUmVtb3ZlIGFyZWFfaWQKCWFuZCBmbGFncyBhcmd1bWVudHMuCgkqIG9ic3RhY2suaCAob2JzdGFja19hbGxvY19hcmcpOiAgTmV3IG1hY3JvIHRvIHNldCBleHRyYV9hcmcuCgpUaHUgSnVsIDE2IDA4OjEyOjQ0IDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IG5ldyBhZnRlciBhZGRpbmcgQkZEX0lTX1JFTEFYQUJMRQoKU2F0IEp1bCAgNCAwMzoyMjoyMyAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgUmVnZW4gYWZ0ZXIgYWRkaW5nIEJTRl9GSUxFLgoKTW9uIEp1biAyOSAxNDoxODozNiAxOTkyICBGcmVkIEZpc2ggIChmbmYgYXQgc3VuZmlzaCkKCgkqIG9ic3RhY2suaDogIENvbnZlcnQgYmNvcHkoKSB1c2UgdG8gbWVtY3B5KCksIHdoaWNoIGlzIG1vcmUKCXBvcnRhYmxlLCBtb3JlIHN0YW5kYXJkLCBhbmQgY2FuIHRha2UgYWR2YW50YWdlIG9mIGdjYydzIGJ1aWx0aW4KCWZ1bmN0aW9ucyBmb3IgaW5jcmVhc2VkIHBlcmZvcm1hbmNlLgoKVGh1IEp1biAyNSAwNDo0NjowOCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKFBBUkFNUyk6ICBJbmNvcnBvcmF0ZSB0aGlzIG1hY3JvIGZyb20gZ2RiJ3MgZGVmcy5oLgoJSXQncyBhIGNsZWFuZXIgd2F5IHRvIGZvcndhcmQtZGVjbGFyZSBmdW5jdGlvbiBwcm90b3R5cGVzLgoKRnJpIEp1biAxOSAxNTo0NjozMiAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBIUFBBIG1lcmdlLgoKVHVlIEp1biAxNiAyMTozMDo1NiAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBncmF0dWl0b3VzIHdoaXRlIHNwYWNlIGNoYW5nZXMgbWVyZ2VkIGZyb20gb3RoZXIgcHJlcAoJICByZWxlYXNlcy4KClRodSBKdW4gMTEgMDE6MTA6NTUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlZ2VuJ2QgZnJvbSBiZmQuYyBhZnRlciByZW1vdmluZyBlbGZfY29yZV90ZGF0YV9zdHJ1Y3QuCgpNb24gTWF5IDE4IDE3OjI5OjAzIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gbWFrZS0zLjYyLjExLgoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gZ3JlcC0xLjYgKGFscGhhKS4KCkZyaSBNYXkgIDggMTQ6NTM6MzIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogbWVyZ2VkIGNoYW5nZXMgZnJvbSBiaXNvbi0xLjE4LgoKU2F0IE1hciAxNCAxNzoyNToyMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIEFkZCAiYXJlYV9pZCIgYW5kICJmbGFncyIgbWVtYmVycyB0byBvYnN0YWNrCglzdHJ1Y3R1cmUuICBBZGQgb2JzdGFja19jaHVua2Z1bigpIGFuZCBvYnN0YWNrX2ZyZWVmdW4oKSB0bwoJc2V0IGZ1bmN0aW9ucyBleHBsaWNpdGx5LiAgQ29udmVydCBtYXliZV9lbXB0eV9vYmplY3QgdG8KCWEgYml0IGluICJmbGFncyIuCgpUaHUgRmViIDI3IDIyOjAxOjAyIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogd2FpdC5oIChXSUZTVE9QUEVEKTogIEFkZCBJQk0gcnM2MDAwLXNwZWNpZmljIHZlcnNpb24uCgpGcmkgRmViIDIxIDIwOjQ5OjIwIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQWRkIG9ic3RhY2tfZnVsbF9iZWdpbi4KCSogYmZkLmgsIG9ic3RhY2suaDogIFByb3RvbGludC4KClRodSBKYW4gMzAgMDE6MTg6NDIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlbW92ZSBjb21tYSBmcm9tIGVudW0gZGVjbGFyYXRpb24uCgpNb24gSmFuIDI3IDIyOjAxOjEzIDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCA6IG5ldyB0YXJnZXQgZW50ciwgYmZkX3JlbGF4X3NlY3Rpb24KCldlZCBEZWMgMTggMTc6MTk6NDQgMTk5MSAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBpZWVlLmgsIG9wY29kZS9tNjhrLmgsIG9wY29kZS9zcGFyYy5oOiAgQU5TSWZ5IGVudW1zLgoKVGh1IERlYyAxMiAyMDo1OTo1NiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGZvcGVuLXNhbWUuaCwgZm9wZW4tYmluLmg6ICBOZXcgZmlsZXMgZm9yIGNvbmZpZ3VyaW5nCgl3aGV0aGVyIGZvcGVuIGRpc3Rpbmd1aXNoZXMgYmluYXJ5IGZpbGVzIG9yIG5vdC4gIEZvciB1c2UKCWJ5IGhvc3QtZGVwZW5kZW50IGNvbmZpZyBmaWxlcy4KClNhdCBOb3YgMzAgMjA6NDY6NDMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgcnRsLmN5Z251cy5jb20pCgoJKiBiZmQuaDogY2hhbmdlIHRoZSBkb2N1bWVudGF0aW9uIGZvcm1hdC4KCgkqIGNyZWF0ZWQgY29mZiwgZWxmIGFuZCBvcGNvZGUgYW5kIGFvdXQgZGlyZWN0b3JpZXMuIE1vdmVkOgoKCWFvdXQ2NC5oCT09PiBhb3V0L2FvdXQ2NC5oCglhci5oCQk9PT4gYW91dC9hci5oCglhLm91dC5lbmNhcC5oCT09PiBhb3V0L2VuY2FwLmgKCWEub3V0Lmhvc3QuaAk9PT4gYW91dC9ob3N0LmgKCWEub3V0LmhwLmgJPT0+IGFvdXQvaHAuaAoJYS5vdXQuc3VuNC5oCT09PiBhb3V0L3N1bjQuaAoJcmFubGliLmgJPT0+IGFvdXQvcmFubGliLmgKCXJlbG9jLmgJCT09PiBhb3V0L3JlbG9jLmgKCXN0YWIuZGVmCT09PiBhb3V0L3N0YWIuZGVmCglzdGFiLmdudS5oCT09PiBhb3V0L3N0YWJfZ251LmgKCgljb2ZmLWEyOWsuaAk9PT4gY29mZi9hMjlrLmgKCWNvZmYtaDgzMDAuaAk9PT4gY29mZi9oODMwMC5oCgljb2ZmLWkzODYuaAk9PT4gY29mZi9pMzg2LmgKCWNvZmYtaTk2MC5oCT09PiBjb2ZmL2k5NjAuaAoJaW50ZXJuYWxjb2ZmLmgJPT0+IGNvZmYvaW50ZXJuYWwuaAoJY29mZi1tNjhrLmgJPT0+IGNvZmYvbTY4ay5oCgljb2ZmLW04OGsuaAk9PT4gY29mZi9tODhrLmgKCWNvZmYtbWlwcy5oCT09PiBjb2ZmL21pcHMuaAoJY29mZi1yczYwMDAuaAk9PT4gY29mZi9yczYwMDAuaAoKCWVsZi1jb21tb24uaAk9PT4gZWxmL2NvbW1vbi5oCglkd2FyZi5oCQk9PT4gZWxmL2R3YXJmLmgKCWVsZi1leHRlcm5hbC5oCT09PiBlbGYvZXh0ZXJuYWwuaAoJZWxmLWludGVybmFsLmggID09PiBlbGYvaW50ZXJuYWwuaAoKCWEyOWstb3Bjb2RlLmgJPT0+IG9wY29kZS9hMjlrLmgKCWFybS1vcGNvZGUuaAk9PT4gb3Bjb2RlL2FybS5oCgloODMwMC1vcGNvZGUuaAk9PT4gb3Bjb2RlL2g4MzAwLmgKCWkzODYtb3Bjb2RlLmgJPT0+IG9wY29kZS9pMzg2LmgKCWk4NjAtb3Bjb2RlLmgJPT0+IG9wY29kZS9pODYwLmgKCWk5NjAtb3Bjb2RlLmgJPT0+IG9wY29kZS9pOTYwLmgKCW02OGstb3Bjb2RlLmgJPT0+IG9wY29kZS9tNjhrLmgKCW04OGstb3Bjb2RlLmgJPT0+IG9wY29kZS9tODhrLmgKCW1pcHMtb3Bjb2RlLmgJPT0+IG9wY29kZS9taXBzLmgKCW5wMS1vcGNvZGUuaAk9PT4gb3Bjb2RlL25wMS5oCgluczMyay1vcGNvZGUuaAk9PT4gb3Bjb2RlL25zMzJrLmgKCXBuLW9wY29kZS5oCT09PiBvcGNvZGUvcG4uaAoJcHlyLW9wY29kZS5oCT09PiBvcGNvZGUvcHlyLmgKCXNwYXJjLW9wY29kZS5oCT09PiBvcGNvZGUvc3BhcmMuaAoJdGFob2Utb3Bjb2RlLmgJPT0+IG9wY29kZS90YWhvZS5oCgl2YXgtb3Bjb2RlLmgJPT0+IG9wY29kZS92YXguaAoKCgpXZWQgTm92IDI3IDEwOjM4OjMxIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6IChpbnRlcm5hbF9zY25oZHIpIHRvb2sgb3V0ICNkZWYgZGVwZW5kZW5jeSwgbm93CglzX25yZWxvYyBhbmQgc19ubG5ubyBhcmUgYWx3YXlzIGxvbmcuIAkoaW50ZXJuYWxfcmVsb2MpOiBhbGx3YXlzCgloYXMgYW4gb2Zmc2V0IGZpZWxkIG5vdy4KCkZyaSBOb3YgMjIgMDg6MTI6NTggMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBjb2ZmLXJzNjAwMC5oOiAgTGludDsgdXNlIHVuc2lnbmVkIGNoYXJzIGZvciBleHRlcm5hbCBmaWVsZHMuCgkqIGludGVybmFsY29mZi5oOiAgTGludDsgY2FzdCBzdG9yYWdlIGNsYXNzZXMgdG8gc2lnbmVkIGNoYXIuCgpUaHUgTm92IDIxIDIxOjAxOjA1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3RhYi5kZWY6IFJlbW92ZSB0aGUgR05VIGV4dGVuZGVkIHR5cGUgY29kZXMgKGUuZy4gTl9TRVRUKS4KCSogYW91dDY0Lmg6ICBUaGUgaGV1cmlzdGljIGZvciBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuCglzdW5vcy1zdHlsZSBhbmQgYnNkLXN0eWxlIFpNQUdJQyBmaWxlcyAod3J0LiB3aGVyZSB0aGUKCXRleHQgc2VnbWVudCBzdGFydHMpIGlzIG1vdmVkIGludG8gKHRoZSBkZWZhdWx0IGRlZmluaXRpb24gb2YpCgl0aGUgbWFjcm8gTl9IRUFERVJfSU5fVEVYVC4gIFRoaXMgZGVmaW5pdGlvbiBpcyBvbmx5IHVzZWQKCWlmIG5vIG90aGVyIGRlZmluaXRpb24gaXMgdXNlZCAtIGUuZy4gYmZkL25ld3NvczMuYyBkZWZpbmVzCglOX0hFQURFUl9JTl9URVhUKHgpIHRvIGJlIGFsd2F5cyAwIChhcyBiZWZvcmUpLgoKVGh1IE5vdiAyMSAxMTo1MzowMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oIChOX1RYVEFERFIsIE5fVFhUT0ZGLCBOX1RYVFNJWkUpOiAgTmV3IGRlZmluaXRpb25zCgl0aGF0IHNob3VsZCBoYW5kbGUgYWxsIHVzZXMuICBMT0dJQ0FMXyB2ZXJzaW9ucyBkZWxldGVkLgoJRWxpbWluYXRlIE5fSEVBREVSX0lOX1RFWFQsIHVzaW5nIGFfZW50cnkgdG8gZGV0ZXJtaW5lIHdoaWNoCglraW5kIG9mIHptYWdpYyBhLm91dCBmaWxlIHdlIGFyZSBsb29raW5nIGF0LgoJKiBjb2ZmLXJzNjAwMC5oOiAgVHlwby4KClR1ZSBOb3YgMTkgMTg6NDM6MzcgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKE5vdGU6ICBUaGlzIGlzIGEgcmV2aXNlZCBlbnRyeSwgYXMgd2FzIGFvdXQ2NC5oLikKCSogYW91dDY0Lmg6ICBTb21lIGNsZWFudXBzIG9mIE5fVFhUQUREUiBhbmQgTl9UWFRPRkY6CglXaWxsIG5vdyB3b3JrIGZvciBib3RoIG9sZC0gYW5kIG5ldy1zdHlsZSBaTUFHSUMgZmlsZXMsCglkZXBlbmRpbmcgb24gTl9IRUFERVJfSU5fVEVYVCBtYWNyby4KCUFkZCBMT0dJQ0FMX1RYVEFERFIsIExPSUNBTF9UWFRPRkYgYW5kIExPR0lDQUxfVFhUU0laRQoJdGhhdCBkb24ndCBjb3VudCB0aGUgZXhlYyBoZWFkZXIgYXMgcGFydAoJb2YgdGhlIHRleHQgc2VnbWVudCwgdG8gYmUgY29uc2lzdGVudCB3aXRoIGJmZC4KCSogYS5vdXQuc3VuNC5oOiAgU2ltcGxpZmllZC9maXhlZCBmb3IgcHJldmlvdXMgY2hhbmdlLgoKTW9uIE5vdiAxOCAwMDowMjowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGR3YXJmLmg6ICBVcGRhdGUgdG8gRFdBUkYgZHJhZnQgNSB2ZXJzaW9uIGZyb20gZ2NjMi4KClRodSBOb3YgMTQgMTk6NDQ6NTkgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzdGFiLmRlZjogIEFkZGVkIGRlZnMgZm9yIGV4dGVuZGVkIEdOVSBzeW1ib2wgdHlwZXMsCglzdWNoIGFzIE5fU0VUVC4gIFRoZXNlIGFyZSBub3JtYWxseSBpZmRlZidkIG91dCAoYmVjYXVzZQoJb2YgY29uZmxpY3RzIHdpdGggYS5vdXQuZ251LmgpLCBidXQgYXJlIHVzZWQgYnkgYmZiX3N0YWJfbmFtZSgpLgoKVGh1IE5vdiAxNCAxOToxNzowMyAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1jb21tb24uaDogIEFkZCBkZWZpbmVzIHRvIHN1cHBvcnQgRUxGIHN5bWJvbCB0YWJsZSBjb2RlLgoKTW9uIE5vdiAxMSAxOTowMTowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1pbnRlcm5hbC5oLCBlbGYtZXh0ZXJuYWwuaCwgZWxmLWNvbW1vbi5oOiAgQWRkIHN1cHBvcnQgZm9yCglub3RlIHNlY3Rpb25zLCB3aGljaCBhcmUgdXNlZCBpbiBFTEYgY29yZSBmaWxlcyB0byBob2xkIGNvcGllcwoJb2YgdmFyaW91cyAvcHJvYyBzdHJ1Y3R1cmVzLgoKVGh1IE5vdiAgNyAwODo1ODoyNiAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBjeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6IHRvb2sgb3V0IHRoZSBNODggZGVwZW5kZW5jeSBpbiB0aGUgbGluZW5vCglzdHJ1Y3QuCgkqIGNvZmYtbTg4ay5oOiBkZWZpbmVzIEdFVF9MSU5FTk9fTE5OTyBhbmQgUFVUX0xJTkVOT19MTk5PIHRvIHVzZQoJMzJiaXQgbGlubm8gZW50cmllcy4KCSogYTI5ay1vcGNvZGUuaDogZml4ZWQgZW5jb2Rpbmcgb2YgbXRhY2MKClN1biBOb3YgIDMgMTE6NTQ6MjIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmcm9tIC4uL2JmZC9iZmQtaW4uaCAocS52KS4KCkZyaSBOb3YgIDEgMTE6MTM6NTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCB4X2NzZWN0IGRlZmluZXMuCgpGcmkgT2N0IDI1IDAzOjE4OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogUmVuYW1lIENPRkYtcmVsYXRlZCBmaWxlcyBpbiBgY29mZi1BUkNILmgnIGZvcm0uCgljb2ZmLWEyOWsuaCwgY29mZi1pMzg2LmgsIGNvZmYtaTk2MC5oLCBjb2ZmLW02OGsuaCwgY29mZi1tODhrLmgsCgljb2ZmLW1pcHMuaCwgY29mZi1yczYwMDAuaCB0byBiZSBleGFjdC4KClRodSBPY3QgMjQgMjI6MTE6MTEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJUlMvNjAwMCBzdXBwb3J0LCBieSBNZXRpbiBHLiBPemlzaWssIE1pbWkgUGj79G5nLVRo5W8gVvUsIGFuZAoJSm9obiBHaWxtb3JlLgoKCSogYS5vdXQuZ251Lmg6ICBVcGRhdGUgc2xpZ2h0bHkuCgkqIGJmZC5oOiAgQWRkIG5ldyBlcnJvciBjb2RlLCBmaXggZG9jLCBhZGQgYmZkX2FyY2hfcnM2MDAwLgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCBtb3JlIEZfIGNvZGVzIGZvciBmaWxlaGRyLiAgQWRkCglycy82MDAwLWRlcGVuZGVudCBmaWVsZHMgdG8gYW91dGhkci4gIEFkZCBzdG9yYWdlIGNsYXNzZXMKCXRvIHN5bWVudHMuICBBZGQgNjAwMC1zcGVjaWZpYyBhdXhlbnQuICBBZGQgcl9zaXplIGluIHJlbG9jLgoJKiByczYwMDBjb2ZmLmM6ICBOZXcgZmlsZS4KClRodSBPY3QgMjQgMDQ6MTM6MjAgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBkd2FyZi5oOiBOZXcgZmlsZSBmb3IgZHdhcmYgc3VwcG9ydC4gIENvcGllZCBmcm9tIGdjYzIKCWRpc3RyaWJ1dGlvbi4KCldlZCBPY3QgMTYgMTM6MzE6NDUgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaDogIFJlbW92ZSBQQUdFX1NJWkUgZGVmaW5lczsgdGhleSBhcmUgdGFyZ2V0LWRlcGVuZGVudC4KCUFkZCBOX0ZOX1NFUSBmb3IgTl9GTiBzeW1ib2wgdHlwZSB1c2VkIG9uIFNlcXVlbnQgbWFjaGluZXMuCgkqIHN0YWIuZGVmOiAgSW5jbHVkZSBOX0ZOX1NFUSBpbiB0YWJsZS4KCSogYm91dC5oOiAgRXh0ZXJuYWwgZm9ybWF0cyBvZiBzdHJ1Y3R1cmVzIHVzZSB1bnNpZ25lZCBjaGFycy4KCkZyaSBPY3QgMTEgMTI6NDA6NDMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzdGV2ZSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6dXBncmFkZSBmcm9tIGJmZC5jCgkqIGludGVybmFsY29mZi5oOiBhZGQgbl9uYW1lLCBuX3plcm9lcyBhbmQgbl9vZmZzZXQgbWFjcm9zCgkqIGFtZGNvZmYuaDogRGVmaW5lIE9NQUdJQyBhbmQgQU9VVEhEUlNaLgoKRnJpIE9jdCAxMSAxMDo1ODowNiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIGEub3V0Lmhvc3QuaDogQ2hhbmdlIFNFR01FTlRfU0laRSB0byAweDEwMDAgZm9yIFNvbnkuCgkqIGJmZC5oIChhbGlnbl9wb3dlcik6IEFkZCAoYWN0dWFsbHkgbW92ZSkgY29tbWVudC4KClR1ZSBPY3QgIDggMTU6Mjk6MzIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1ydGJzZC5oOiBEZWZpbmUgTUlTU0lOR19WRlBSSU5UIChmb3IgYmludXRpbHMvYnVjb21tLmMpLgoKU3VuIE9jdCAgNiAxOToyNDozOSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oOiAgTW92ZSBzdHJ1Y3QgaW50ZXJuYWxfZXhlYyB0byAuLi9iZmQvbGliYW91dC5oIHNvCglpdCBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBgYS5vdXQtZmFtaWx5JyBjb2RlLiAgUmVuYW1lCglFWFRFUk5BTF9MSVNUX1NJWkUgdG8gRVhURVJOQUxfTkxJU1RfU0laRS4gIFVzZSBiYXNpYyB0eXBlcwoJZm9yIG5saXN0IG1lbWJlcnMsIGFuZCBtYWtlIHN0cnggaW50ZWdyYWwgcmF0aGVyIHRoYW4gcG9pbnRlci4KCU1vcmUgY29tbWVudGFyeSBvbiBuX3R5cGUgdmFsdWVzLgoJKiBib3V0Lmg6ICBQcm92aWRlIGEgc3RydWN0IGV4dGVybmFsX2V4ZWMgcmF0aGVyIHRoYW4gYW4KCWludGVybmFsX2V4ZWMuCgkqIG02OGtjb2ZmLmg6ICBSZW1vdmUgYHRhZ2VudHJpZXMnIHdoaWNoIHNudWNrIGluIGZyb20gdGhlIGk5NjAKCUNPRkYgcG9ydC4KCkZyaSBPY3QgIDQgMDE6MjU6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBoODMwMC1vcGNvZGUuaDogIFJlbW92ZSBgX2VudW0nIGZyb20gdGhlIHR5cGVkZWYgZm9yIGFuIGVudW0uCgkqIGJmZC5oOiAgVXBkYXRlIHRvIG1hdGNoIGJmZCBjaGFuZ2VzLgoKCSogc3lzL2gtaTM4Nm1hY2guaCwgc3lzZGVwLmg6ICBBZGQgMzg2IE1hY2ggaG9zdCBzdXBwb3J0LgoKVHVlIE9jdCAgMSAwNDo1ODo0MiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBlbGYtY29tbW9uLmgsIGVsZi1leHRlcm5hbC5oLCBlbGYtaW50ZXJuYWwuaDoKCUFkZCBwcmVsaW1pbmFyeSBFTEYgc3VwcG9ydCwgc3VmZmljaWVudCBmb3IgR0RCLCBmcm9tIEZyZWQgRmlzaC4KCSogc3lzZGVwLmgsIHN5cy9oLWFtaXguaDogIFN1cHBvcnQgQW1pZ2EgU1ZSNC4KCgkqIHN5cy9oLXZheHVsdC5oOiAgTWFrZSBpdCB3b3JrLiAgKERhdmlkIFRheWxvciA8dGF5bG9yQHRoaW5rLmNvbT4pCgkqIGEub3V0LnZheC5oOiAgUmVtb3ZlIHVudXNlZCBhbmQgY29uZnVzaW5nIGZpbGUuCgpNb24gU2VwIDMwIDEyOjUyOjM1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3lzZGVwLmg6IERlZmluZSBORVdTT1MzX1NZUywgYW5kIHVzZSBpdC4KCkZyaSBTZXAgMjAgMTM6Mzg6MjEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBJdHMgdmFsdWUgKnJlYWxseSBpcyogMHgxRi4KCUZpeCBpdCwgYW5kIGFkZCBjb21tZW50cyB3YXJuaW5nIGFib3V0IG9yLWluZyBOX0VYVCB3aXRoIGl0CglhbmQvb3IgTl9XQVJOSU5HLgoJKiBhb3V0NjQuaCAoTl9GTik6ICBGaXggdmFsdWUsIGFkZCBjb21tZW50cyBhYm91dCBOX0VYVC4KCSogc3RhYi5kZWYgKHRhYmxlIGF0IGVuZCk6ICBVcGRhdGUgdG8gc2hvdyBhbGwgdGhlIHR5cGUKCXZhbHVlcyA8MHgyMCwgaW5jbHVkaW5nIGxvdyBvcmRlciBiaXRzLiAgTW92ZSBOX0ZOIHRvCglpdHMgcmlnaHRmdWwgcGxhY2UuCgpUdWUgU2VwIDE3IDE3OjQxOjM3IDE5OTEgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1pcml4My5oOiAgc2dpL2lyaXggc3VwcG9ydC4KClR1ZSBTZXAgMTcgMDc6NTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogc3RhYi5kZWYgKE5fREVGRCk6ICBBZGQgR05VIE1vZHVsYS0yIGRlYnVnIHN0YWIsIGZyb20gQW5kcmV3CglCZWVycy4KClRodSBTZXAgMTIgMTQ6MTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmggKFNZTU5NTEVOLCBGSUxOTUxFTiwgRElNTlVNKTogIERlZmluZSB0aGVzZQoJZm9yIGludGVybmFsY29mZiwgc2VwYXJhdGVseSBmcm9tIHRoZSB2YXJpb3VzIGV4dGVybmFsIGNvZmYncy4KCSogYW1kY29mZi5oLCBiY3M4OGtjb2ZmLmgsIGkzODZjb2ZmLmgsIGludGVsLWNvZmYuaCwgbTY4a2NvZmYuaCwKCW04OGstYmNzLmg6IFByZWZpeCBTWU1OTUxFTiwgRklMTk1MRU4sIGFuZCBESU1OVU0gd2l0aCBFXydzIGZvcgoJdGhlIGV4dGVybmFsIHN0cnVjdCBkZWZpbml0aW9ucy4KCSogZWNvZmYuaDogUmVtb3ZlIHRoZXNlICNkZWZpbmUncywga2x1ZGdlIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBzeXMvaC11bHRyYTMuaDogIEFkZCBuZXcgVWx0cmFjb21wdXRlciBob3N0LgoJKiBzeXNkZXAuaDogIEFkZCBVTFRSQTNfU1lNMV9TWVMgYW5kIHVzZSBpdC4KClR1ZSBTZXAgMTAgMTA6MTE6NDYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaTM4NmNvZmYuaCAoTElORVNaKTogIEFsd2F5cyA2LCBub3QgYmFzZWQgb24gc2l6ZW9mKCkuCgkoRml4IGZyb20gUGV0ZXIgU2NoYXVlciA8cGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+LikKCldlZCBTZXAgIDQgMDg6NTg6MzcgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmgsIGFvdXQ2NC5oOiAgQWRkIE5fV0FSTklORy4gIENoYW5nZSBOX0ZOIHRvIDB4MEUsCgl0byBtYXRjaCBTdW5PUyBhbmQgQlNELiAgQWRkIE5fQ09NTSBhcyAweDEyIGZvciBTdW5PUyBzaGFyZWQgbGliCglzdXBwb3J0LgoJKiBzdGFiLmRlZjogIEFkZCBOX0NPTU0gdG8gdGFibGUsIGZpeCBvdmVybGFwIGNvbW1lbnQuCgpUdWUgU2VwICAzIDA2OjI5OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCglNZXJnZSB3aXRoIGxhdGVzdCBGU0YgdmVyc2lvbnMgb2YgdGhlc2UgZmlsZXMuCgoJKiBzdGFiLmdudS5oOiAgQWRkIExBU1RfVU5VU0VEX1NUQUJfQ09ERS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgdG8gR1BMMi4gIE1vdmUgTl9XQVJOSU5HIG91dCwgc2luY2Ugbm90IGEKCWRlYnVnIHN5bWJvbC4gIENoYW5nZSBjb21tZW50cywgYW5kIHJlb3JkZXIgdGFibGUgdG8gbnVtZXJpYwoJb3JkZXIuICBVcGRhdGUgZmluYWwgdGFibGUgY29tbWVudC4KCShOX0RTTElORSwgTl9CU0xJTkUpOiAgUmVudW1iZXIgZnJvbSAweDY2IGFuZCAweDY4LCB0byAweDQ2IGFuZCAweDQ4LgoKCSogb2JzdGFjay5oOiAgR1BMMi4gIE1lcmdlLgoKRnJpIEF1ZyAyMyAwMTo1NDoyMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCwgYS5vdXQuc3VuNC5oOiAgTWFrZSBTRUdNRU5UX1NJWkUgYWJsZSB0byBkZXBlbmQKCW9uIHRoZSBwYXJ0aWN1bGFyIGEub3V0IGJlaW5nIGV4YW1pbmVkLgoJKiBhLm91dC5zdW40Lmg6ICBEZWZpbmUgc2VnbWVudCBzaXplcyBmb3IgU3VuLTMncyBhbmQgU3VuLTQncy4KCSogRklYTUU6ICBhLm91dC5nbnUuaCBpcyBhbG1vc3Qgb2Jzb2xldGUuCgkqIEZJWE1FOiAgYS5vdXQuc3VuNC5oIHNob3VsZCBiZSByZW5hbWVkIGEub3V0LnN1bi5oIG5vdy4KCldlZCBBdWcgMjEgMjA6MzI6MTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogU3RhcnQgYSBDaGFuZ2VMb2cgZm9yIHRoZSBpbmNsdWRlcyBkaXJlY3RvcnkuCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBGaXggdmFsdWUgLS0gd2FzIDE1LCBzaG91bGQgYmUgMHgxRS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgYWxsb2NhdGlvbiB0YWJsZSBpbiBjb21tZW50cyBhdCBlbmQsCgl0byByZWZsZWN0IHJlYWxpdHkgYXMgSSBrbm93IGl0LgoKDApMb2NhbCBWYXJpYWJsZXM6Cm1vZGU6IGNoYW5nZS1sb2cKbGVmdC1tYXJnaW46IDgKZmlsbC1jb2x1bW46IDc0CnZlcnNpb24tY29udHJvbDogbmV2ZXIKRW5kOgo=