QXV0aG9yOiBTdGVpbmFyIEguIEd1bmRlcnNvbiA8c2d1bmRlcnNvbkBiaWdmb290LmNvbT4KRGF0ZTogIFdlZCBTZXAgMTMgMjI6MjM6MjMgQ0VTVCAyMDA2CgogICAgRml4IC1uIG9wdGlvbiB0byBtb3VudGQKCiAgICBUaGUgZ2V0b3B0X2xvbmcoKSBvcHRpb24gc3RyaW5nIGluIG1vdW50ZCB3YXMgaGF2aW5nIGEgc3B1cmlvdXMKICAgIGNvbG9uIGFmdGVyIHRoZSAnbicsIGxlYWRpbmcgdG8gdGhlIHNob3J0IGZvcm0gb2YgLS1uby10Y3Agbm90CiAgICBiZWluZyB1c2FibGUgKGV4cGVjdGluZyBhIHBhcmFtZXRlciwgY29udHJhcnkgdG8gdGhlIGxvbmcgZm9ybQogICAgYW5kIHRoZSBkb2N1bWVudGF0aW9uKS4gRml4LgogICAgCkF1dGhvcjogU3RlaW5hciBILiBHdW5kZXJzb24gPHNndW5kZXJzb25AYmlnZm9vdC5jb20+CkRhdGU6ICBXZWQgU2VwIDEzIDIyOjE5OjM5IENFU1QgMjAwNgoKICAgIERvY3VtZW50IHNlbnNpdGl2ZSBnaWRzCgogICAgVGhlIGV4cG9ydHMoOCkgbWFuIHBhZ2UgYWxyZWFkeSBtZW50aW9ucyB0aGF0IHNvbWUgbm9uLXJvb3QgdXNlcnMsCiAgICBzdWNoIGFzIGJpbiwgbWlnaHQgYmUganVzdCBhcyBzZW5zaXRpdmUgYXMgcm9vdCwgYW5kIHRoYXQgcm9vdF9zcXVhc2gKICAgIHRodXMgbWlnaHQgbm90IGJlIGFzIGVmZmVjdGl2ZSBhcyBvbmUgY291bGQgaG9wZSBmb3IuIFVwZGF0ZSB0aGUKICAgIGRvY3VtZW50YXRpb24gdG8gYWxzbyBtZW50aW9uIHRoYXQgdGhpcyBjb3VsZCBiZSB0aGUgY2FzZSBmb3Igbm9uLXJvb3QKICAgIGdyb3Vwcywgc3VjaCBhcyBzdGFmZi4KCkF1dGhvcjogTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CkRhdGU6ICBNb24gQXVnICA3IDE2OjM1OjAzIEFFU1QgMjAwNgoKICAgIFNldCB2ZXJzaW9uIHRvIDEuMC4xMAoJTm90ZTogMS4wLjEwIHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8KCSAxLjAuOSBlc3BlY2lhbGx5IHdpdGgga2VybmVscyAyLjYuMTggYW5kIGxhdGVyCgkgb3RoZXJ3aXNlICdycGMubmZzZCBOJyB3b24ndCB3b3JrIHRvIGNoYW5nZSB0aGUKCSBudW1iZXIgb2YgdGhyZWFkcyBhZnRlciBuZnNkIGhhcyBiZWVuIHN0YXJ0ZWQuCgkKQXV0aG9yOiBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KRGF0ZTogIE1vbiBBdWcgIDcgMTY6MzU6MDMgQUVTVCAyMDA2CgogICAgc3VwcG9ydC9uZnMvbmZzc3ZjLmM6ICBpZiBhbnkgcG9ydHMgYXJlIGFscmVhZHkgb3BlbiwKCSAgIGRvbid0IHRyeSB0byBvcGVuIGFueSBtb3JlLiAgCgkgVGhpcyBtZWFucyB0aGF0IG9uY2UgbmZzZCBpcyBydW5uaW5nCgkgICAgIHJwYy5uZnNkICBYCgkgd2lsbCBqdXN0IGNoYW5nZSB0aGUgbnVtYmVyIG9mIHRocmVhZHMsIG5vdCB0aGUKCSBwb3J0cyBpbiB1c2UuCgpBdXRob3I6IE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgpEYXRlOiAgTW9uIEF1ZyAgNyAxNDowMTozNSBBRVNUIDIwMDYKCiAgICBSZW1vdmUgd2FybmluZyBpZiBuZWl0aGVyICdzeW5jJyBvciAnYXN5bmMnIHByZXNlbnQuCiAgICBBZGQgd2FybmluZyBvZiBuZWl0aGVyICdzdWJ0cmVlX2NoZWNrJyBvciAnbm9fc3VidHJlZV9jaGVjaycgcHJlc2VudC4KCQpjb21taXQgNzE5NGQ3ZDYzMjA3MzZjMTRmNDBkMzFjMzczOGQ0MGYzMTE5ZWFkNQpBdXRob3I6IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KRGF0ZTogICBTYXQgSnVsIDggMTA6MDE6NDAgMjAwNiArMTAwMAoKICAgIFVzZSB1aWQvZ2lkIG9mIC0xIHRvIGluZGljYXRlIHRoZSBleHBvcnQncyBhbm9udWlkL2Fub25naWQgc2hvdWxkIGJlIHVzZWQKICAgIAogICAgS2VybmVsIHJvdXRpbmUgbmZzZF9zZXR1c2VyKCkgaW4gZnMvbmZzZC9hdXRoLmMgY2hlY2tzIGZvciB0aGUKICAgIHZhbHVlIC0xIGFuZCBkZWZhdWx0cyB0aGUgY3JlZGVudGlhbCdzIGZzdWlkL2ZzZ2lkIHRvIHRoZQogICAgY29ycmVjdCBhbm9udWlkL2Fub25naWQgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gZXhwb3J0LiAgV2Ugc2hvdWxkCiAgICBiZSBwYXNzaW5nIHRoaXMgdmFsdWUgKC0xKSBkb3duIHdoZW4gYSBuYW1lIG1hcHBpbmcgY2Fubm90IGJlIGZvdW5kLgogICAgVGhhbmtzIHRvIEouIEJydWNlIEZpZWxkcyA8YmZpZWxkc0BmaWVsZHNlcy5vcmc+IGZvciB0aGUgcmVmZXJlbmNlLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CiAgICBBY2tlZC1ieTogSi4gQnJ1Y2UgRmllbGRzIDxiZmllbGRzQGZpZWxkc2VzLm9yZz4KCmNvbW1pdCBiMDYwNGM2MjNmN2E5OGM2MDYxZGZmMTk5ODg3MjJkM2FlODQ4YmQ3CkF1dGhvcjogS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgpEYXRlOiAgIFNhdCBKdWwgOCAwOTo1ODowMyAyMDA2ICsxMDAwCgogICAgQ2hhbmdlIHN2Y2dzc2RfTERGTEFHUyB0byBtYXRjaCBnc3NkX0xERkxBR1MKCmNvbW1pdCA5OTQxNGJkM2VlY2Y5M2YyM2MzNzhkM2JiM2Q0NWJjOThmMzY0YWJjCkF1dGhvcjogTmVpbCBCcm93biA8bmVpbGJAc3VzZS5kZT4KRGF0ZTogICBTYXQgSnVsIDggMDk6NDE6NTggMjAwNiArMTAwMAoKICAgIERpc2FibGUgYnVpbGRpbmcvaW5zdGFsbGluZyBtb3VudC5uZnMgYnkgZGVmYXVsdC4KICAgIAogICAgbW91bnQubmZzIGRvZXMgbm90IHlldCBzdXBwb3J0ICd1c2VyJyBvcHRpb24gYW5kIHNvbWUgb3RoZXJzLgogICAgVG8gbWFrZSBpdCBzdXBwb3J0IHRoaXMgd2UgbmVlZCB0byBtYWtlIGl0IHNldHVpZC1yb290LCBhbmQKICAgIHNvbWUgc2VjdXJpdHkgaXNzZXMgbmVlZCB0byBiZSByZXNvbHZlZCBiZWZvcmUgdGhhdCBjYW4gYmUgZG9uZQogICAgc2FmZWx5LgoKY29tbWl0IGIwYzNjYmZlZTcwMmMwMTlkYWIwYTIyNTU3YmJmMzhlMjRkZmNlZTEKQXV0aG9yOiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KRGF0ZTogICBTYXQgSnVsIDggMDk6MzU6MDIgMjAwNiArMTAwMAoKICAgIENhbGwgbmZzc3ZjX3ZlcnNiaXRzIGJlZm9yZSBuZnNzdmNfc2V0ZmRzCiAgICAKICAgIG5mc3N2Y192ZXJzYml0cygpIGhhcyB0byBiZSBjYWxsZWQgYmVmb3JlIG5mc3N2Y19zZXRmZHMoKQogICAgZm9yIHRoZSB2ZXJzaW9uIHByb2Nlc3NpbmcgdG8gd29yayBjb3JyZWN0bHkKCmNvbW1pdCAyNmZmZjkxMWIyMTk0M2YyMGUzOTM3YWUzZjJkMjlhMTU3MmQyMzA5CkF1dGhvcjogTmVpbCBCcm93biA8bmVpbGJAc3VzZS5kZT4KRGF0ZTogICBUaHUgSnVsIDYgMTM6MDU6MTEgMjAwNiArMTAwMAoKICAgIE9ubHkgdXNlIC1ycGF0aCBmb3IgS2VyYmVyb3MgbGlicyB3aGVuIGFjdHVhbGx5IG5lZWRlZC4KICAgIAogICAgQXZvaWQgdXNhZ2Ugb2YgLXJwYXRoIGlzIGdlbmVyYWxseSBzYWZlciwgYW5kIGlzIHJlcXVpcmVkIGJ5IERlYmlhbiBwb2xpY3kuCgpjb21taXQgMjhhNzYwM2I3MTlmOGQzNWJmMjJmZDMwMThiNjEwYjQ4OWZlYzc4ZgpBdXRob3I6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+CkRhdGU6ICAgVGh1IEp1bCA2IDEyOjI4OjMzIDIwMDYgKzEwMDAKCiAgICBVc2UgNjU1MzQgaW5zdGVhZCBvZiAtMiBpbiBzdmNnc3NkX3Byb2MuYwogICAgCiAgICBhcyB0aGlzIGlzIG1vcmUgY29uc2lzdGFudCBhY3Jvc3MgYWNoaXRlY3R1cmVzLgoKY29tbWl0IDkwNGRlOTIwZWE0ZGEzYWQ1NjA0YzQxN2YwZDc4NGZjZGE4M2VkMmEKQXV0aG9yOiBTaGFua2FyIEFuYW5kIDxzaGFuYW5kQG5vdmVsbC5jb20+CkRhdGU6ICAgVHVlIEp1bCA0IDA4OjUwOjU2IDIwMDYgLTA2MDAKCiAgICBUaGlzIHBhdGNoIGFkZHMgY29kZSB0byBuZnNzdGF0IHRvIHJlYWQgL3Byb2MvbmV0L3JwYy9uZnNkIGZvciBuZnN2NCBzZXJ2ZXIgc3RhdGlzdGljcyBhbmQgcHJpbnQgdGhlbS4KICAgIAogICAgU3VibWl0dGVkIGJ5OiBTaGFua2FyIEFuYW5kIDxzaGFuYW5kQG5vdmVsbC5jb20+Cgpjb21taXQgMjE3OWMxMTJiOWEzODZjYTNkNTFkMGUxOTM5MGRkZmFkZDc0NTAzMApBdXRob3I6IFN0ZWluYXIgSC4gR3VuZGVyc29uIDxzZXNzZUBkZWJpYW4ub3JnPgpEYXRlOiAgIFdlZCBKdWwgNSAxNTo1NTo0NSAyMDA2ICsxMDAwCgogICAgRml4IHR5cG9zIGluIHZhcmlvdXMgbWFuIHBhZ2VzLgoKY29tbWl0IDM0MTllMzc1MDBkZmQxOWNiMmMyNDYyNjBkYmQyYmMwZWU0NzA0ZDQKQXV0aG9yOiBTdGVpbmFyIEguIEd1bmRlcnNvbiA8c2Vzc2VAZGViaWFuLm9yZz4KRGF0ZTogICBXZWQgSnVsIDUgMTU6NTE6MzAgMjAwNiArMTAwMAoKICAgIFVzZSA2NTUzNCBmb3IgYW5vbiB1aWQvZ2lkIHJhdGhlciB0aGFuIC0yCiAgICAKICAgIFRoaXMgaXMgbW9yZSBjb25zaXN0YW50IGFjcm9zcyBwbGF0Zm9ybXMuCgpjb21taXQgNjU3MzVlZWY4YTk0NDE5MDEyNDVmNjA0N2VkYWZjNTBmMmQ5N2M5NwpBdXRob3I6IEdyZWcgQmFua3MgPGduYkBjaG9vay5tZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBXZWQgSnVsIDUgMTM6Mzc6MjEgMjAwNiArMTAwMAoKICAgIFVwZGF0ZSBycGNkZWJ1ZyB0byBrbm93IGFib3V0IG5ldyAyLjYgZGVidWcgZmxhZ3MuICBBZGRlZAogICAgYSBtYW5wYWdlIGFuZCBpbnN0YWxsZWQgcnBjZGVidWcgKGluIHNiaW5kaXIpLgoKY29tbWl0IDIzYjNhOWQwMjg0ZDc4Y2I2YmY5NmI4Y2Q0NGU5YTQ2NjJmZjYwYWUKQXV0aG9yOiBHcmVnIEJhbmtzIDxnbmJAY2hvb2subWVsYm91cm5lLnNnaS5jb20+CkRhdGU6ICAgV2VkIEp1bCA1IDEyOjIyOjQ1IDIwMDYgKzEwMDAKCiAgICBJZ25vcmUgbmV3IGdlbmVyYXRlZCBmaWxlcy4KCmNvbW1pdCA4OTA1M2YzZjQ0MGI2Mjk5MTFjYjk5NGEyOTNkNWJlNzNiYjc5YmY5CkF1dGhvcjogR3JlZyBCYW5rcyA8Z25iQGNob29rLm1lbGJvdXJuZS5zZ2kuY29tPgpEYXRlOiAgIFdlZCBKdWwgNSAxMjoyMDoyMCAyMDA2ICsxMDAwCgogICAgQWRkIHJxdW90YS5oIHRvIEJVSUxUX1NPVVJDRVMgc28gcnF1b3RhZCBidWlsZHMgb24gdGhlIGZpcnN0IHRyeS4KCmNvbW1pdCA2NmY5ZDgyNTFjOTIxMjRlNDZhMjA5YzQ3ZTVjMGY3ZDNhMGM0ZTZlCkF1dGhvcjogTmVpbCBCcm93biA8bmVpbGJAc3VzZS5kZT4KRGF0ZTogICBXZWQgSnVsIDUgMTE6MDY6MDkgMjAwNiArMTAwMAoKICAgIEdlbmVyYXRlIHJxdW90YV94ZHIuYyBhbmQgcnF1b3RhLmggZnJvbSBycXVvdGEueAogICAgCiAgICBycXVvdGFfc3ZjLmMgaXMgc3RpbGwgYnktaGFuZCBhcyBpdCBjb250YWlucyBhbG90IG9mIGV4dHJhcy4KICAgIFRoZXNlIHNob3VsZCByZWFsbHkgYmUgbW92ZWQgdG8gcnF1b3RhX3NlcnZlci5jCgpjb21taXQgOWY1YjQwYjdhNjhmZTBhMjY0ODU2NWVjYmQ0YjA4YmY2MDI4NzEzMApBdXRob3I6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+CkRhdGU6ICAgV2VkIEp1bCA1IDEwOjQxOjAzIDIwMDYgKzEwMDAKCiAgICBSZW1vdmUgc29tZSBmaWxlcyB0aGF0IG9sZCwgdW51c2VkLCB1bm5lZWRlZC4KICAgIAogICAgCWRlbGV0ZWQ6ICBzdXBwb3J0L2V4cG9ydC9rZXlzLmMKICAgIAlkZWxldGVkOiAgc3VwcG9ydC9pbmNsdWRlL3JwY2Rpc3BhdGNoLmgKICAgIAlkZWxldGVkOiAgc3VwcG9ydC9pbmNsdWRlL3JwY3NlYy5oCiAgICAJZGVsZXRlZDogIHN1cHBvcnQvaW5jbHVkZS92ZXJzaW9uLmgKICAgIAlkZWxldGVkOiAgc3VwcG9ydC9pbmNsdWRlL3lwdXBkYXRlLmgKICAgIAlkZWxldGVkOiAgc3VwcG9ydC9uZnMvY2xpZW50cy5jCiAgICAJZGVsZXRlZDogIHN1cHBvcnQvbmZzL2tleXRhYi5jCiAgICAJZGVsZXRlZDogIHN1cHBvcnQvbmZzL3lwdXBkYXRlX3hkci5jCiAgICAJZGVsZXRlZDogIHN1cHBvcnQvcnBjL2luY2x1ZGUvTWFrZWZpbGUuYW0KICAgIAlkZWxldGVkOiAgdG9vbHMvcnBjZGVidWcvbmVhdF9pZGVhLmMKICAgIAlkZWxldGVkOiAgdXRpbHMvbW91bnRkL21vdW50X3hkci5jCiAgICAJZGVsZXRlZDogIHV0aWxzL3JxdW90YWQvcGF0aG5hbWVzLmgKCmNvbW1pdCBmYmIxNjAyYmJkMzRjYmU4OWRkNTVjYTZlYWFhMTk0MzIyMzdkYjFkCkF1dGhvcjogTmVpbCBCcm93biA8bmVpbGJAc3VzZS5kZT4KRGF0ZTogICBXZWQgSnVsIDUgMTA6MzA6NTEgMjAwNiArMTAwMAoKICAgIEF2b2lkIGVycm9yIGNyZWF0aW5nIGFuIGV4aXN0aW5nIHN5bWxpbmsKICAgIAogICAgSnVzdCByZW1vdmUgdGhlIGxpbmsgZmlyc3QuCgpjb21taXQgMGJjNzEwYTVhMmI2OTUwMzk2MTNhOTE3ZTAwOWRiYTM1NTJhYjFjYwpBdXRob3I6IGt3Y0BjaXRpLnVtaWNoLmVkdSA8a3djQGNpdGkudW1pY2guZWR1PgpEYXRlOiAgIE1vbiBKdWwgMyAxODozMzo1NCAyMDA2IC0wNDAwCgogICAgRG9uJ3QgZGVwZW5kIG9uIEtlcmJlcm9zIGhlYWRlcnMgd2hlbiBjaGVja2luZyBsaWJycGNzZWNnc3MgaW4gY29uZmlndXJlCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KICAgIAogICAgT2xkZXIgdmVyc2lvbnMgb2YgTUlUIEtlcmJlcm9zIGFyZSBtaXNzaW5nIGFuIE9JRCBkZWZpbml0aW9uLCBjYXVzaW5nCiAgICB0aGUgY29uZmlndXJlIGNoZWNrcyBmb3IgbGlicnBjc2VjZ3NzIHRvIGZhaWwuICBXZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nCiAgICBvbiB0aGVpciBsaWJyYXJpZXMgZHVyaW5nIHRoZSBjb25maWd1cmUuCgpjb21taXQgNWJmYTEwYzk0YzQ0ZjA4MmRjMjExYTVmYjQzMWUyMjAyZWE5YmIzNQpBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBUdWUgSnVsIDQgMTg6MzM6NTYgMjAwNiArMTAwMAoKICAgIEVsaW1pbmF0ZSB3YXJuaW5ncyBmcm9tIGNvZGUgZ2VuZXJhdGVkIGJ5IHJwY2dlbgogICAgCiAgICAgLSB1bnVzZWQgdmFyaWFibGUgJ2J1ZicKICAgICAgICAtIGVtaXQgYSBkZWNsYXJhdGlvbiBmb3IgYGJ1Zicgb24gZGVtYW5kLgogICAgIC0gdW51c2VkIHZhcmlhYmxlICdpJwogICAgICAgIC0gZGVjbGFyZSBpIGltbWVkaWF0ZWx5IGJlZm9yZSB1c2UKICAgICAtIHVudXNlZCB2YWx1ZSBmcm9tIElYRFJfUFVUXwogICAgICAgIC0gY2FzdCB0byAodm9pZCkKICAgICAtIHR5cGUtcHVubmVkIHBvaW50ZXIgcmVmZXJlbmNlCiAgICAgICAgLSBjYXN0IHRvICh2b2lkKikgZmlyc3QgOi0oCgpjb21taXQgYWNhZTQ0NDI0NjYzNWVjMmNhODk5MGQ1M2U2ODVjOTA2MmQ3MzA5MQpBdXRob3I6IGt3Y0BjaXRpLnVtaWNoLmVkdSA8a3djQGNpdGkudW1pY2guZWR1PgpEYXRlOiAgIE1vbiBKdWwgMyAxODozNDo0MyAyMDA2IC0wNDAwCgogICAgSGFuZGxlIG1hcHBpbmcgZmFpbHVyZSBmcm9tIGdldF9pZHMuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KICAgIAogICAgVGVtcG9yYXJ5IHBhdGNoIHRvIGRvIGRlZmF1bHQgbWFwcGluZyBpZiB3ZSBnZXQgYW4gZXJyb3Igd2hpbGUgdHJ5aW5nIHRvCiAgICBtYXAgYSBnc3MgcHJpbmNpcGFsIHRvIHRoZSBhcHByb3ByaWF0ZSB1aWQvZ2lkLiAgVGhpcyBjdXJyZW50bHkgcmV0dXJucwogICAgaGFyZGNvZGVkIHZhbHVlcy4gIFRoaXMgbWF5IGJlIGNvcnJlY3QsIG9yIHdlIG1heSBuZWVkIHRvIHRyeSBhbmQgZmlndXJlCiAgICBvdXQgdGhlIGNvcnJlY3QgdmFsdWVzIHRvIG1hdGNoIHRoZSBhbm9udWlkL2Fub25naWQgZm9yIHRoZSBleHBvcnQuCgpjb21taXQgMWYxYjA1YTY1ZWYzZGM2NTk3YzdiYzFlMmEzOGYzOGFlOTViZjIzMApBdXRob3I6IGt3Y0BjaXRpLnVtaWNoLmVkdSA8a3djQGNpdGkudW1pY2guZWR1PgpEYXRlOiAgIE1vbiBKdWwgMyAxODozNDozOCAyMDA2IC0wNDAwCgogICAgUHJvcGVybHkgcmVwb3J0IGVycm9ycyBpbiByZWFkbGluZSgpIGZ1bmN0aW9uCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KICAgIAogICAgQ2hhbmdlIG1lc3NhZ2UgcHJpb3JpdGllcyBmb3IgZXJyb3JzIGFuZCBkZWJ1ZyBtZXNzYWdlcy4KCmNvbW1pdCBlZTY2NGZkMjQ2ZDc3MDEwYWYxM2ZiNTU3NDA3YzYxMjc1MmE1ZWE4CkF1dGhvcjoga3djQGNpdGkudW1pY2guZWR1IDxrd2NAY2l0aS51bWljaC5lZHU+CkRhdGU6ICAgTW9uIEp1bCAzIDE4OjM0OjMzIDIwMDYgLTA0MDAKCiAgICBDaGFuZ2UgZGVmYXVsdCBidWZmZXIgc2l6ZSBpbmNyZW1lbnQgZm9yIHJlYWRsaW5lKCkKICAgIAogICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgogICAgCiAgICBUaGUgcmVhZGxpbmUgcm91dGluZSBleHBlY3RzIG11Y2ggc21hbGxlciBtZXNzYWdlcyB0aGFuIHdlIGFyZSBwYXNzaW5nLgogICAgQ2hhbmdlIHRoZSBkZWZhdWx0IGluaXRpYWwgYWxsb2NhdGlvbiBhbmQgaW5jcmVtZW50IHZhbHVlIGZyb20gMTI4CiAgICB0byAyMDQ4LiAgVGhpcyBzYXZlcyBtYW55IGNhbGxzIHRvIHJlYWxsb2MoKS4KCmNvbW1pdCAzZGE2OWNlNWM0ZmFjNTY3N2U5MWFhMjBlNjA3NTBhYjhkZTJhYjk3CkF1dGhvcjoga3djQGNpdGkudW1pY2guZWR1IDxrd2NAY2l0aS51bWljaC5lZHU+CkRhdGU6ICAgTW9uIEp1bCAzIDE4OjM0OjI3IDIwMDYgLTA0MDAKCiAgICBDbGVhbiB1cCB0aGUgcHJpbnRlcnIoKSBsb2dnaW5nIGZ1bmN0aW9uLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CiAgICAKICAgIFVwZGF0ZSB0aGUgcHJpbnRlcnIoKSBmdW5jdGlvbiB0bzoKICAgIAogICAgMSkgRGV0ZXJtaW5lIHdoZXRoZXIgd2UnbGwgcHJpbnQgdGhlIG1lc3NhZ2UgYmVmb3JlIGdvaW5nIHRvIGFsbCB0aGUKICAgICAgIHdvcmsgb2YgZm9ybWF0dGluZyBpdC4KICAgIDIpIERvbid0IGp1c3QgdG9zcyBhd2F5IG1lc3NhZ2VzIHRoYXQgYXJlIHRvbyBsb25nIGZvciB0aGUgYnVmZmVyLgogICAgICAgUHJpbnQgd2hhdCB3ZSBjYW4gYW5kIGdpdmUgYW4gaW5kaWNhdGlvbiBvZiB0aGUgdHJ1bmNhdGlvbiB3aXRoCiAgICAgICAiLi4uIiBhdCB0aGUgZW5kLgogICAgMykgVXNlIGEgc2luZ2xlIGJ1ZmZlciByYXRoZXIgdGhhbiB0d28uCiAgICA0KSBNZXNzYWdlcyBlaXRoZXIgZ28gdG8gc3lzbG9nICh3aXRoIGxldmVsIEVSUikgb3Igc3RkZXJyLiAgRG9uJ3QKICAgICAgIHNlbmQgc29tZSBtZXNzYWdlcyB0byBzeXNsb2cgbGV2ZWwgREVCVUcuCgpjb21taXQgMGIyYTViNTc0YzdmZmQ5OWFhMzIyNmQzNmUxZDI2MTgyNjQwNTYyNQpBdXRob3I6IGt3Y0BjaXRpLnVtaWNoLmVkdSA8a3djQGNpdGkudW1pY2guZWR1PgpEYXRlOiAgIE1vbiBKdWwgMyAxODozNDoyMSAyMDA2IC0wNDAwCgogICAgVXNlIHNldGZzdWlkKCkgcmF0aGVyIHRoYW4gc2V0ZXVpZCgpIHdoaWxlIGNyZWF0aW5nIGNvbnRleHRzCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KICAgIAogICAgQXMgc3VnZ2VzdGVkIGJ5IE9sYWYgS2lyY2ggPG9raXJAc3VzZS5kZT4sIHVzZSBzZXRmc3VpZCgpIHJhdGhlciB0aGFuCiAgICBzZXRldWlkKCkgd2hlbiBjcmVhdGluZyBhIGdzcyBjb250ZXh0LiAgVGhpcyBwcmV2ZW50cyB1c2VycyBmcm9tIHVzaW5nCiAgICBjcmVkZW50aWFscyB0aGF0IGRvIG5vdCBiZWxvbmcgdG8gdGhlbSwgd2hpbGUgYWxzbyBwcmV2ZW50aW5nIHRoZW0gZnJvbQogICAgZG9pbmcgdGhpbmdzIGxpa2Uga2lsbGluZywgcmVuaWNpbmcsIG9yIGNoYW5naW5nIHRoZSBwcmlvcml0eSBvZiB0aGUKICAgIGdzc2QgcHJvY2VzcyB3aGlsZSBpdCBpcyBwcm9jZXNzaW5nIHRoZSBjb250ZXh0IGNyZWF0aW9uLgoKY29tbWl0IDBmODk5ZTZkODYyOTk0ZmZiNDM3YWU3M2UwODdjNGEyMWFiNTk3MjMKQXV0aG9yOiBrd2NAY2l0aS51bWljaC5lZHUgPGt3Y0BjaXRpLnVtaWNoLmVkdT4KRGF0ZTogICBNb24gSnVsIDMgMTg6MzQ6MTYgMjAwNiAtMDQwMAoKICAgIExpbWl0IGFjcXVpcmVfY3JlZCBjYWxsIHRvIHRvIEtlcmJlcm9zIG9ubHkKICAgIAogICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgogICAgCiAgICBTcGVjaWZ5IHRoYXQgdGhlIGFjcXVpcmVfY3JlZCBjYWxsIHNob3VsZCBvbmx5IGJlIGNvbmNlcm5lZCB3aXRoIHJldHVybmluZwogICAgS2VyYmVyb3MgY3JlZGVudGlhbHMgc2luY2UgdGhpcyBpcyBLZXJiZXJvcy1vbmx5IGZ1bmN0aW9uYWxpdHkuCgpjb21taXQgMzgyOWJiOTBlNzY0Y2Q3MmMwMDA5Y2IzMmE4YjM5ZDBmYWI4OWQ4MQpBdXRob3I6IGt3Y0BjaXRpLnVtaWNoLmVkdSA8a3djQGNpdGkudW1pY2guZWR1PgpEYXRlOiAgIE1vbiBKdWwgMyAxODozNDoxMCAyMDA2IC0wNDAwCgogICAgQ2hlY2sgdGhhdCB0aGUgZ3NzYXBpIGxpYnJhcnkgaXMgdXNhYmxlIGVhcmx5IG9uLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CiAgICAKICAgIERvIGEgY2FsbCB0byBkZXRlcm1pbmUgbWVjaGFuaXNtcyBzdXBwb3J0ZWQgYnkgdGhlIGdzc2FwaSBsaWJyYXJ5IGVhcmx5LgogICAgVGhpcyBhbGxvd3MgdXMgdG8gZGlzY292ZXIgZWFybHkgaW4gY2FzZSB0aGUgZ3NzYXBpIGxpYnJhcnkgaXMgc29tZWhvdwogICAgbWlzY29uZmlndXJlZC4gIFdlIGNhbiBiYWlsIG91dCBlYXJseSBhbmQgZ2l2ZSBhIG1lYW5pbmdmdWwgbWVzc2FnZQogICAgcmF0aGVyIHRoYW4gZ2V0dGluZyBlcnJvcnMgb24gZWFjaCBhdHRlbXB0IGF0IGEgY29udGV4dCBuZWdvdGlhdGlvbi4KCmNvbW1pdCAxMTljM2U5YWFmZTg0YzBmN2MyODQ2YzQ2YWQ1ZTZmNWVlZWNlMGRhCkF1dGhvcjoga3djQGNpdGkudW1pY2guZWR1IDxrd2NAY2l0aS51bWljaC5lZHU+CkRhdGU6ICAgTW9uIEp1bCAzIDE4OjM0OjA1IDIwMDYgLTA0MDAKCiAgICBGaXggcHJvYmxlbXMgd2l0aCA2NC1iaXQgYmlnLWVuZGlhbiBtYWNoaW5lcwogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CiAgICAKICAgIENvcnJlY3QgdGhlIGRlZmluaXRpb24gb2YgbWVjaF91c2VkIGluIHRoZSBnc3MgY29udGV4dCB0byB1c2UgZ3NzX09JRF9kZXNjLgogICAgVGhpcyBmaXhlcyBwcm9ibGVtcyBvbiA2NC1iaXQgbWFjaGluZXMgd2hlbiByZWZlcmVuY2luZyB0aGUgT0lELgogICAgCiAgICBBbHNvIHVwZGF0ZXMgd3JpdGVfYnVmZmVyIGZ1bmN0aW9uIHRvIHVzZSB1X2ludCByYXRoZXIgdGhhbiBzaXplX3Qgd2hlbgogICAgZG9pbmcgY2FsY3VsYXRpb25zLgoKY29tbWl0IGMzZjA1NTQ4ZDdiM2Q1ODZlN2VlYmJkZGU5MzM5NjE3ZTg4NTMwZjMKQXV0aG9yOiBrd2NAY2l0aS51bWljaC5lZHUgPGt3Y0BjaXRpLnVtaWNoLmVkdT4KRGF0ZTogICBNb24gSnVsIDMgMTg6MzM6NTkgMjAwNiAtMDQwMAoKICAgIERlZmluZSBDRkxBR1MgZm9yIGdzc19jbG50X3NlbmRfZXJyIGNvbXBpbGUKICAgIAogICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgogICAgCiAgICBBZGQgQ0ZMQUdTIHRvIG1ha2Ugc3VyZSB3ZSBmaW5kIGFuZCB1c2UgdGhlIGNvcnJlY3QgZ3NzYXBpLmggd2hlbgogICAgYnVpbGRpbmcgZ3NzX2NsbnRfc2VuZF9lcnIKCmNvbW1pdCA0ZTllZDA2ZjhmOGEwY2Q5ZjM0YTY4MzBjMGZmMTQzNDRhNTI4MDQyCkF1dGhvcjogR3JlZyBCYW5rcyA8Z25iQG1lbGJvdXJuZS5zZ2kuY29tPgpEYXRlOiAgIE1vbiBKdWwgMyAxNTo1OTo1NCAyMDA2ICsxMDAwCgogICAgVXNlIHNvY2tsZW5fdCBzb21lIG1vcmUgdG8gYXZvaWQgd2FybmluZ3MuCgpjb21taXQgNmM0MDIzNjgyMGZkYTg5NjBhZjg5MWY0MWFhOWQ1M2Y4YmJlNTBhMgpBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBNb24gSnVsIDMgMTU6Mzk6NDEgMjAwNiArMTAwMAoKICAgIEZpeCB3YXJuaW5nIGFib3V0IHBvaW50ZXIgc2lnbmVkbmVzcyBkaWZmZXJpbmcuCgpjb21taXQgM2JmNzAyYjFhOTE0YjM4NjcxMTdiNzRkNTE5YzU1ZmE2OGY0ZGMyOApBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBNb24gSnVsIDMgMTU6MTc6MzQgMjAwNiArMTAwMAoKICAgIEluY2x1ZGUgdGhlIHJpZ2h0IGhlYWRlciB0byBnZXQgeG1hbGxvYygpIGRlY2xhcmF0aW9uLgoKY29tbWl0IDk0MGM3YzMwNGQ0YTQzYzAwYzI3NTI5Y2RkZGM3Yzg3ZGI2ZWVmODcKTWVyZ2U6IGI5MGQyMDEuLi4gYTUwMzg0OC4uLgpBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBNb24gSnVsIDMgMTQ6MjE6NDggMjAwNiArMTAwMAoKICAgIE1lcmdlIGJyYW5jaCAnbWFzdGVyJyBvZiBnaXQ6Ly9saW51eC1uZnMub3JnL25mcy11dGlscwoKY29tbWl0IGI5MGQyMDE1NTFhYWE3MTJjMDExYzNkNWRlOTAwZmFkNzE0YTI2YTYKQXV0aG9yOiBHcmVnIEJhbmtzIDxnbmJAbWVsYm91cm5lLnNnaS5jb20+CkRhdGU6ICAgVHVlIEp1biAyNyAyMTozMDoxOCAyMDA2ICsxMDAwCgogICAgQ29tbWVudCBvdXQgdW51c2VkIHZhcmlhYmxlLgoKY29tbWl0IDMzYmViNDJkM2QyY2QxM2E4MmRkYmJkYzQyNzVkMmEwNDgwMzBhZTMKQXV0aG9yOiBHcmVnIEJhbmtzIDxnbmJAbWVsYm91cm5lLnNnaS5jb20+CkRhdGU6ICAgVHVlIEp1biAyNyAyMToyMjo1OSAyMDA2ICsxMDAwCgogICAgQ29tbWVudCBvdXQgdGhlIGRlY2FkZXMtb2xkIFNDQ1MgaWQgc3RyaW5ncyBmcm9tIHRoZSBvcmlnaW5hbCBTdW4KICAgIGRpc3RyaWJ1dGlvbi4gIFRoZXkgY2F1c2UgY29tcGlsZSB3YXJuaW5ncywgdGhlcmUgaXMgbm8gbG9uZ2VyIGFueQogICAgcmVhc29uIHRvIHRyeSB0byBidWlsZCB0aGVtIGludG8gdGhlIGJpbmFyaWVzLCBhbmQgZ2NjIHNlZW1zIHRvIGJlCiAgICBlbGlkaW5nIHNvbWUgb2YgdGhlbSBhbnl3YXkuCgpjb21taXQgMzE3MjA2M2VhZDZiOTk2MTFkMDQ5YTU5OTM4ODA4YTYzNThmNDhhNApBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBUdWUgSnVuIDI3IDIwOjU1OjA3IDIwMDYgKzEwMDAKCiAgICBEZXRlY3QgaWYgZ2xpYmMgcHJvdmlkZXMgc29ja2xlbl90IGFuZCB1c2UgdGhhdCBpbnN0ZWFkCiAgICBvZiBpbnQgaW4gdGhvc2UgY2FzZXMgd2hpY2ggZ2VuZXJhdGUgY29tcGlsZSB3YXJuaW5ncywKICAgIGUuZy4gdGhlIGxhc3QgYXJndW1lbnQgb2YgcmVjdmZyb20oKS4KCmNvbW1pdCBhMDllZWIzNmMyYzQ1MTUxYjliYjg5ZjUwMTVkYTBjNTg0Nzk5NzE2CkF1dGhvcjogR3JlZyBCYW5rcyA8Z25iQG1lbGJvdXJuZS5zZ2kuY29tPgpEYXRlOiAgIFR1ZSBKdW4gMjcgMjA6Mjg6MDIgMjAwNiArMTAwMAoKICAgIFJlcGxhY2UgdGhlIGRlcHJlY2F0ZWQgc2lnYmxvY2soKSB3aXRoIG1vcmUgbW9kZXJuCiAgICBzaWduYWwgZnVuY3Rpb25zIHRvIGF2b2lkIGNvbXBpbGUgd2FybmluZ3MuCgpjb21taXQgOTM2MDhhNTI2NTVhYmY1YWMyMzQwNGM0YjVjYzA1ZmU1NzVhOWMwNApBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBUaHUgSnVuIDIyIDE4OjAxOjEwIDIwMDYgKzEwMDAKCiAgICBGaXggYSBudW1iZXIgb2YgdGhlIGVhc2llciBjb21waWxlIHdhcm5pbmdzOiB1bnVzZWQgdmFyaWFibGVzLAogICAgdW51c2VkIGxhYmVscywgY29uc3RuZXNzLCBzaWduZWRuZXNzLgoKY29tbWl0IGEwNzM0M2VlMGRhNGYwOTc0YTIzYjY3M2FlMWIwZDQ4MmM3NDI2YTEKQXV0aG9yOiBHcmVnIEJhbmtzIDxnbmJAbWVsYm91cm5lLnNnaS5jb20+CkRhdGU6ICAgVGh1IEp1biAyMiAxNzozMToyNCAyMDA2ICsxMDAwCgogICAgRGV0ZWN0IHByZXNlbmNlIG9mIG5mczRfc2V0X2RlYnVnKCkgaW4gbGlibmZzaWRtYXAgYW5kCiAgICBkb24ndCBib3RoZXIgY2FsbGluZyBpdCBpZiBpdCdzIG1pc3NpbmcuCgpjb21taXQgZGNmY2I2NzdiMzk0NDNiNjM5MmRiMzIzNGZkNTA0OThiYzE1ODUwNwpBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBUaHUgSnVuIDIyIDE3OjE5OjE3IDIwMDYgKzEwMDAKCiAgICBSZW1vdmUgdXNlbGVzcyBtNCBxdW90aW5nIGFyb3VuZCBhcmdzIHRvIFBLR19DSEVDS19NT0RVTEVTKCkuCgpjb21taXQgMjRkMzAzZmZhZTY4NjE5MmJkYTBhNTk5NmU4NTkwMjE5ZGNjODJlNwpBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBUaHUgSnVuIDIyIDE3OjE2OjE5IDIwMDYgKzEwMDAKCiAgICBEbyBtNCBxdW90aW5nIG9mIEFDX01TR19FUlJPUigpIGFuZCBBQ19NU0dfV0FSTigpIGFzCiAgICB0aGUgYXV0b2NvbmYgcGVvcGxlIGludGVuZGVkLiAgVGhpcyBhdm9pZHMgZXJyb3JzIGluCiAgICBhdXRvY29uZiBvbiBTTEVTMTAuCgpjb21taXQgNjZhNjk5ZDk1MzcyN2QzYTk5MmNjMDllZDUzMDRiODNkNjYxYTczNwpBdXRob3I6IEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KRGF0ZTogICBUaHUgSnVuIDIyIDE2OjUxOjQ0IDIwMDYgKzEwMDAKCiAgICBBZGQgYSAuZ2l0aWdub3JlIGZpbGUgdG8gc3VwcHJlc3MgdGhlIGZpbGVzIGdlbmVyYXRlZAogICAgZHVyaW5nIGF1dG9nZW4sIGNvbmZpZ3VyZSBhbmQgYnVpbGQuCmNvbW1pdCA0OWIxNjRkOTc4ZWU2MjY2ZGY3YmEwYmQzMzVjYjM0MzM3ZTdjMzgxCkF1dGhvcjogU3RldmUgRGlja3NvbiA8U3RldmVEQHJlZGhhdC5jb20+CkRhdGU6ICAgTW9uIEp1bCAzIDA5OjUyOjAwIDIwMDYgKzEwMDAKCiAgICBBbGxvdyBycGMubmZzZCB0byBzdXBwcmVzcyB0Y3Agb3IgdWRwLCBhbmQgbGlzdGVuIG9uIGEgc3BlY2lmaWMgYWRkcmVzcy4KICAgIAogICAgIC1UICAgICAgIC0gd2lsbCBzdXBwcmVzc2luZyBsaXN0ZW5pbmcgZm9yIFRDUCBjb25uZWN0aW9uLgogICAgIC1VICAgICAgIC0gd2lsbCBzdXBwcmVzcyBVRFAKICAgICAtSCBob3N0ICAtIHdpbGwgb25seSBsaXN0ZW4gb24gdGhhdCBsb2NhbCBhZGRyZXNzCiAgICAgLXAgcG9ydCAgLSB3aWxsIGxpc3RlbiBvbiB0aGF0IHBvcnQuCiAgICAKICAgIFRoaXMgcmVxdWlyZXMga2VybmVsIHBhdGNoZXMgd2hpY2ggd2lsbCBob3BlZnVsbHkgYmUgaW4gMi42LjE5IGFuZCBwb3NzaWJseSBzb21lCiAgICBlYXJsaWVyIHRlc3QgYW5kIHZlbmRvciBrZXJuZWxzLgoKY29tbWl0IGZkZTJhZTc3OTQwNDdhNjk4ZmVlYWYxNzk2M2Q2OTBhMWU2NjBhODAKQXV0aG9yOiBTdGV2ZSBEaWNrc29uIDxTdGV2ZURAcmVkaGF0LmNvbT4KRGF0ZTogICBNb24gSnVuIDI2IDE1OjIzOjE5IDIwMDYgKzEwMDAKCiAgICBBZGQgc3VwcG9ydCBmb3Igc3VwcHJlc3NpbmcgZGlmZmVyZW50IE5GUyB2ZXJzaW9ucy4KICAgIAogICAgZS5nLiAgLU4gMgogICAgbWVhbnMgdGhhdCBORlN2MiB3b24ndCBiZSBzdXBwb3J0ZWQsIGp1c3QgdjMgYW5kIHY0IChpZiB0aGUga2VybmVsCiAgICBzdXBwb3J0cyB0aGVtKS4KCmNvbW1pdCAwNTIzZmQ1MTNjNmJhYThkYmY0NWQxYTdhZmVhMjA0NDI2MmFlYjNkCkF1dGhvcjogTmVpbCBCcm93biA8bmVpbGJAc3VzZS5kZT4KRGF0ZTogICBGcmkgSnVuIDIzIDE3OjEwOjU2IDIwMDYgKzEwMDAKCiAgICBGdXJ0aGVyIGNvdmVyaXR5IHJlbGF0ZWQgY2xlYW51cHMuCiAgICAKICAgIEdyZWcgQmFua3Mgc3VnZ2VzdGVkIHNvbWUgdmFyaWF0aW9ucywgcGFydGljdWxhcmx5IGltcHJvdmVkCiAgICB1c2Ugb2YgeG1hbGxvYy94c3RyZHVwIGZ1bmN0aW9ucy4gIFRoYW5rcy4KCmNvbW1pdCAyZTA3NWExNmRhNDk2M2Y1NGNkNTU2NDAzY2E5ZTE1YTY4ZGUyN2ZkCkF1dGhvcjogTmVpbCBCcm93biA8bmVpbGJAc3VzZS5kZT4KRGF0ZTogICBGcmkgSnVuIDIzIDE0OjM4OjMzIDIwMDYgKzEwMDAKCiAgICBGaXggdmFyaW91cyBpc3N1ZXMgZGlzY292ZXJlZCBieSBDb3Zlcml0eQogICAgCiAgICBUaGFua3MgdG8gTWljaGFlbCBIYWxjcm93IGZvciBmaW5kaW5nIHRoZW0uCgpjb21taXQgZmY0MjE4MDkzMGE0NDRjZWE3ZjE5ZTU1ZTJjZDJiZmU2ZDNmMTA4YgpBdXRob3I6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+CkRhdGU6ICAgRnJpIEp1biAyMyAxNDowNjowMCAyMDA2ICsxMDAwCgogICAgRml4IGNvbW1lbnQgcGFyc2luZyAoYWdhaW4pCiAgICAKICAgIEJydWNlIEZpZWxkcyBub3RpY2VkIHRoYXQgSSBicm9rZSBjb21tZW50IHBhcnNpbmcuLi4KICAgIAogICAgYXMgeHNraXAoKSBpcyBhbHdheXMgY2FsbGVkIGJlZm9yZSB4Z2V0dG9rKCksIHRoYXQgaXMgdGhlCiAgICBiZXN0IHBsYWNlIHRvIHB1dCB4c2tpcGNvbW1lbnQgYW5kIHN0aWxsIG1haW50YWluIHByb3BlcgogICAgc2VtYW50aWNzIG9mIHhza2lwIGFuZCB4Z2V0dG9rLgoKY29tbWl0IGJlYzk2ODU3OGQ5N2VhYmM2M2FlNGExMmJkZWIyYjMzZjQwYmFlYzQKQXV0aG9yOiBBbWl0IEd1ZCA8YWd1ZEByZWRoYXQuY29tPgpEYXRlOiAgIFRodSBKdW4gMjIgMTI6NTE6MDQgMjAwNiAtMDQwMAoKICAgIENoYW5nZSBtb3VudCBjb25maWd1cmUgb3B0aW9uIHRvIC0tZW5hYmxlLW1vdW50CiAgICAKICAgIENoYW5nZSB0aGUgY29uZmlndXJlIG9wdGlvbiBmcm9tIC0td2l0aC1tb3VudCB0byAtLWVuYWJsZS1tb3VudC4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW1pdCBHdWQgPGFndWRAcmVkaGF0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgoKY29tbWl0IGNlZWZmYzFmNzY0ODViNDA4NGIyYzYxZjRmZjNjNDBlNGY1MWMzYjgKQXV0aG9yOiBBbWl0IEd1ZCA8Z3VkQGV0aC5uZXQ+CkRhdGU6ICAgVGh1IEp1biAyMiAxMjo0OToyNCAyMDA2IC0wNDAwCgogICAgTWVyZ2UgbmZzbW91bnQueCBhbmQgbW91bnQueCBpbnRvIG1vdW50LngKICAgIAogICAgCiAgICBNZXJnZSB1dGlscy9tb3VudC9uZnNtb3VudC54IGFuZCBzdXBwb3J0L2V4cG9ydC9tb3VudC54IGludG8gc3VwcG9ydC9leHBvcnQvbW91bnQueC4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW1pdCBHdWQgPGFndWRAcmVkaGF0LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgoKY29tbWl0IGMyZGI0MWU4YWJiNmRkYzlkMDNhMGM5MWM2ZGIwNDNmYTBmODVhOGYKQXV0aG9yOiBOZWlsIEJyb3duIDxuZWlsYkBzdXNlLmRlPgpEYXRlOiAgIEZyaSBKdW4gMjMgMTM6Mzc6MDggMjAwNiArMTAwMAoKICAgIFRyeSB0byBtYWtlIHN1cmUgdGhhdCBjbGllbnRpZCB1c2VkIGZvciBORlN2NCBpcyByZWxpYWJsZS4KICAgIAogICAgV2UgbmVlZCB0byBnaXZlIGFuIElQIGFkZHJlc3MgdG8gaWRlbnRpZnkgdGhpcyBjbGllbnQgdG8gdGhlCiAgICBzZXJ2ZXIuCiAgICBUaGUgY3VycmVudCBjb2RlIGRvZXMgYSBnZXRob3N0YnluYW1lIG9mIHRoZSBob3N0bmFtZS4gT25lCiAgICBzb21lIHN5c3RlbXMgdGhpcyByZXR1cm5zIDEyNy4wLjAuMSBvciBzaW1pbGFyLCB3aGljaCBpcyBub3QgdXNlZnVsLgogICAgCiAgICBJbnN0ZWFkLCB1c2UgZ2V0c29ja25hbWUgb2YgdGhlIHNvY2sgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIKICAgIHRvIGNvbmZpcm0gdGhhdCB0aGUgc2VydmVyIGlzIHdvcmtpbmcuICBUaGlzIGdpdmVzIHRoZSBhZGRyZXNzIG9uIHRoZQogICAgaW50ZXJmYWNlIHRoYXQgd2FzIGNob3NlbiB0byB0YWxrIHRvIHRoYXQgc2VydmVyLCB3aGljaCBpcyB0aGUKICAgIGJlc3QgYWRkcmVzcyB3ZSBjYW4gZmluZCAoaWYgdGhlcmUgaXMgYSBOQVQgaW4gdGhlIHdheSwgaXQgbWlnaHQKICAgIHN0aWxsIG5vdCB3b3JrLCBidXQgaW4gdGhhdCBjYXNlIHRoZXJlIGlzIG5vdGhpbmcgd2UgY2FuIGRvKS4KCmNvbW1pdCAxMWQzNGQxMTE1M2RmMTk4MTAzYTU3MjkxOTM3ZWE5ZmY4YjczNTZlCkF1dGhvcjogR3JlZyBCYW5rcyA8Z25iQG1lbGJvdXJuZS5zZ2kuY29tPgpEYXRlOiAgIFdlZCBKdW4gMTQgMjI6NDg6MTAgMjAwNiArMTAwMAoKICAgIG11bHRpcGxlIHRocmVhZHMgZm9yIG1vdW50ZAogICAgCiAgICAKICAgIEhvdyBhYm91dCB0aGUgYXR0YWNoZWQgcGF0Y2ggYWdhaW5zdCBuZnMtdXRpbHMgdG90PyAgSXQKICAgIGFkZHMgYSAtdCBvcHRpb24gdG8gc2V0IHRoZSBudW1iZXIgb2YgZm9ya2VkIHdvcmtlcnMuCiAgICBEZWZhdWx0IGlzIDEgdGhyZWFkLCBpLmUuIHRoZSBvbGQgYmVoYXZpb3VyLgogICAgCiAgICBJJ3ZlIHZlcmlmaWVkIHRoYXQgc2hvd21vdW50IC1lLCB0aGUgT2dhdGEgbW91bnQgY2xpZW50LAogICAgYW5kIGEgcmVhbCBtb3VudCBmcm9tIExpbnV4IGFuZCBJUklYIGJveGVzIHdvcmsgd2l0aCBhbmQKICAgIHdpdGhvdXQgdGhlIG5ldyBvcHRpb24uCiAgICAKICAgIEkndmUgdmVyaWZpZWQgdGhhdCB5b3UgY2FuIG1hbnVhbGx5IGtpbGwgYW55IG9mIHRoZSB3b3JrZXJzCiAgICB3aXRob3V0IHRoZSBwb3J0bWFwIHJlZ2lzdHJhdGlvbiBnb2luZyBhd2F5LCB0aGF0IGtpbGxpbmcKICAgIGFsbCB0aGUgd29ya2VycyBjYXVzZXMgdGhlIG1hbmFnZXIgcHJvY2VzcyB0byB3YWtlIHVwIGFuZAogICAgdW5yZWdpc3RlciwgYW5kIGtpbGxpbmcgdGhlIG1hbmFnZXIgcHJvY2VzcyBjYXVzZXMgdGhlCiAgICB3b3JrZXJzIHRvIGJlIGtpbGxlZCBhbmQgcG9ydG1hcCB1bnJlZ2lzdGVyZWQuCiAgICAKICAgIEkndmUgdmVyaWZpZWQgdGhhdCBhbGwgdGhlIHdvcmtlcnMgaGF2ZSBmaWxlIGRlc2NyaXB0b3JzCiAgICBmb3IgdGhlIHVkcCBzb2NrZXQgYW5kIHRoZSB0Y3AgcmVuZGV6dm91cyBzb2NrZXQsIHRoYXQKICAgIGNvbm5lY3Rpb25zIGFyZSBiYWxhbmNlZCBhY3Jvc3MgYWxsIHRoZSB3b3JrZXJzIGlmIHNlcnZpY2UKICAgIHRpbWVzIGFyZSBzdWZmaWNpZW50bHkgbG9uZywgYW5kIHRoYXQgcGVyZm9ybWFuY2UgaXMKICAgIGltcHJvdmVkIGJ5IHRoYXQgcGFyYWxsZWxpc20sIGF0IGxlYXN0IGZvciBzbWFsbCBudW1iZXJzCiAgICBvZiB0aHJlYWRzLiAgRm9yIGV4YW1wbGUsIHdpdGggNjAgcGFyYWxsZWwgTU9VTlQgY2FsbHMKICAgIGFuZCBhIHRlc3RpbmcgcGF0Y2ggdG8gbWFrZSBETlMgbG9va3VwcyB0YWtlIDEwMCBtaWxsaXNlY29uZHMKICAgIHRpbWUgdG8gcGVyZm9ybSBhbGwgbW91bnRzIChhdmVyYWdlZCBvdmVyIDUgcnVucykgaXM6CiAgICAKICAgIG51bQkJZWxhcHNlZAogICAgdGhyZWFkcwkJdGltZSAoc2VjKQogICAgIC0tLS0tLQkJLS0tLS0tLS0tLQogICAgMQkJMTMuMTI1CiAgICAyIAkJIDYuODU5CiAgICAzCQkgNC44MzYKICAgIDQJIAkgMy44NDEKICAgIDUJCSAzLjMwMwogICAgNgkJIDMuMTAwCiAgICA3CQkgMy4wNzgKICAgIDgJCSAzLjAxOAogICAgCiAgICBHcmVnLgogICAgLS0KICAgIEdyZWcgQmFua3MsIFImRCBTb2Z0d2FyZSBFbmdpbmVlciwgU0dJIEF1c3RyYWxpYW4gU29mdHdhcmUgR3JvdXAuCiAgICBJIGRvbid0IHNwZWFrIGZvciBTR0kuCgpjb21taXQgZGI5NmQwNTY1NzgzMzhkZDFiYjAzNzFkYzg0NjM4OTczYzE4N2VjNgpBdXRob3I6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+CkRhdGU6ICAgRnJpIEp1biAxNiAxMzoxNjowOSAyMDA2ICsxMDAwCgogICAgUmVtb3ZlIHNvbWUgdGVtcG9yYXJ5IGZpbGVzIHRoYXQgc2hvdWxkbid0IGJlIGluICdnaXQnLgogICAgCiAgICAJZGVsZXRlZDogIGNvbXBpbGUKICAgIAlkZWxldGVkOiAgY29uZmlnLmd1ZXNzCiAgICAJZGVsZXRlZDogIGNvbmZpZy5zdWIKICAgIAlkZWxldGVkOiAgZGVwY29tcAogICAgCWRlbGV0ZWQ6ICBpbnN0YWxsLXNoCiAgICAJZGVsZXRlZDogIGx0bWFpbi5zaAogICAgCWRlbGV0ZWQ6ICBtaXNzaW5nCgpjb21taXQgODJiNTMxODhhYWZmYWQwZTIzNzQ2MWY4ZjEyNzQ3OTQxNjZmZWIzYQpBdXRob3I6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+CkRhdGU6ICAgRnJpIEp1biAxNiAxMzowOToyNiAyMDA2ICsxMDAwCgogICAgQWRkIHN1cHBvcnQgdG8gYXV0by1nZW5lcmF0ZSBuZnNtb3VudCogZmlsZXMgZm9yIG5ldyBuZnMubW91bnQgcHJvZ3JhbQoKY29tbWl0IDRlMmJhZTc5NWU1ZWFmOTkyMmYwYjk2NmFiNWRmNjQ5OTRjODM2YTIKQXV0aG9yOiBBbWl0IEd1ZCA8YWd1ZEByZWRoYXQuY29tPgpEYXRlOiAgIE1vbiBKdW4gMTIgMTk6MDg6MjcgMjAwNiAtMDQwMAoKICAgIE1vdmUgTkZTIG1vdW50IGNvZGUgZnJvbSB1dGlsLWxpbnV4IHRvIG5mcy11dGlscyAtIHBhcnQgMgogICAgCiAgICBBZGRzIHRoZSBzdXBwb3J0IGZ1bmN0aW9ucyBuZWVkZWQgZm9yIG1vdW50IGFuZCB1bW91bnQuIFRoaXMKICAgIGZ1bmN0aW9uYWxpdHkgd2lsbCBzb21lZGF5IGJlIGF2YWlsYWJsZSBpbiB0aGUgZm9ybSBvZiBzaGFyZWQgbW91bnQKICAgIGxpYnJhcnkuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEFtaXQgR3VkIDxhZ3VkQHJlZGhhdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KCmNvbW1pdCBhMDUyMGZhMWE0MWJkMzM4MTViMzMxYjY2MGI0NTQ1ZjI3MjM0OTVjCkF1dGhvcjogQW1pdCBHdWQgPGFndWRAcmVkaGF0LmNvbT4KRGF0ZTogICBNb24gSnVuIDEyIDE5OjA2OjM2IDIwMDYgLTA0MDAKCiAgICBNb3ZlIE5GUyBtb3VudCBjb2RlIGZyb20gdXRpbC1saW51eCB0byBuZnMtdXRpbHMgLSBwYXJ0IDEKICAgIAogICAgQWRkcyB0aGUgbW91bnQgZGlyZWN0b3J5IGFuZCB0aGUgY29kZSB0byBtb3VudCBhbmQgdW1vdW50IHRoZSBORlMgZmlsZSBzeXN0ZW0uCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEFtaXQgR3VkIDxhZ3VkQHJlZGhhdC5jb20+CiAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KCjIwMDYtMDYtMDUgTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJLSBSZW1vdmUgZGViaWFuLyBhdCByZXF1ZXN0IG9mIERlYmlhbiBtYWludGFpbmVyICJTdGVpbmFyIEguIEd1bmRlcnNvbiIgPHNlc3NlQGRlYmlhbi5vcmc+CgktIGZpeF9leHBvcnRmc193aXRoX211bHRpcGxlX21hdGNoZXMuZGlmZjogRml4ZXMgYSBwcm9ibGVtIHdpdGggZXhwb3J0ZnMgLW8KCSAgYW5kIG11bHRpcGxlIGVudHJpZXMgb2YgdGhlIHNhbWUgdHlwZSBmb3IgdGhlIHNhbWUgcGF0Y2ggdGhhdCBtYXRjaGVzCgkgIGEgZ2l2ZW4gY2xpZW50LiBUaGUgZW50aXJlIHJhdGlvbmFsZSBhbmQgcHJvYmxlbSBkZXNjcmlwdGlvbiBjYW4gYmUgZm91bmQKCSAgYXQgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy8yNDU0NDkgKGZ1bWloaWtvIGtha3VtYSA8a2FrbXlAbXZoLmJpZ2xvYmUubmUuanA+KQogICAgICAgIC0gZXNjYXBlIGhhc2hlcyBpbiBleHBvcnRzCgkgIE1ha2VzIHN1cmUgYW55ICMgc2lnbnMgaW4gdGhlIHByaW50ZWQtb3V0IGV4cG9ydHMgZmlsZSBhcmUKCSAgZXNjYXBlZCAoYXMgd2l0aCBxdW90ZXMsIHNwYWNlcywgZXRjLiksIHNvIHRoZXkgd29uJ3QgYmUgdHJlYXRlZAoJICBhcyBhIGNvbW1lbnQgd2hlbiB0aGV5J3JlIHJlYWQgYmFjayBpbiBhZ2Fpbi4KCSAgICAgICAgIlN0ZWluYXIgSC4gR3VuZGVyc29uIiA8c2Vzc2VAZGViaWFuLm9yZz4KCS0gT25seSB0cmVhdCAnIycgYXMgc3RhcnRpbmcgYSBjb21tZW50IHdoZW4gYXQgdGhlIHN0YXJ0IG9mIGEKCSAgdG9rZW4sIG90aGVyd2lzZSAnIycgaW4gZmlsZW5hbWVzIGNhbm5vdCBiZSByZWFkLgoJICAgICAgICBOZWlsQnJvd24KCS0gZG9jdW1lbnQgc3luYyBvcHRpb246CgkgIERvY3VtZW50IHRoZSAnc3luYycgb3B0aW9uIGluIHRoZSBleHBvcnRzKDUpIG1hbiBwYWdlIC0tIEFUTQoJICBvbmx5IHRoZSAnYXN5bmMnIG9wdGlvbiBpcyBkb2N1bWVudGVkLCB3aGljaCBpcyBub3QgdmVyeQoJICBzeW1tZXRyaWMuIDotKSAgIlN0ZWluYXIgSC4gR3VuZGVyc29uIiA8c2Vzc2VAZGViaWFuLm9yZz4KCS0gbW91bnRkIHN0YXRlIGRpcmVjdG9yeToKCSAgTGV0IHRoZSB1c2VyIHNlbGVjdCAodmlhIGEgbmV3IHBhcmFtZXRlcikgdGhlIHBhdGggdG8gdGhlIE5GUwoJICBzdGF0ZSBkaXJlY3RvcnkgZm9yIG1vdW50ZCwgdG8gbWF0Y2ggdGhlIHN0YXRkIGZ1bmN0aW9uYWxpdHkuCgkgICAgICAgICAiU3RlaW5hciBILiBHdW5kZXJzb24iIDxzZXNzZUBkZWJpYW4ub3JnPgoJLSBmaXggbmhmc3J1biBzaWduYWw6CgkgIG5oZnNydW4gaXMgc3VwcG9zZWQgdG8gYmUgYWJsZSB0byBiZSBzaWduYWxsZWQgd2l0aCBTSUdVU1IxLCBidXQKCSAgdGhlIHNpZ25hbCB0cmFwcGVkIGlzIG51bWJlciAzMCwgd2hpY2ggaXMgc29tZXRoaW5nIGVsc2UKCSAgZW50aXJlbHkgKFNJR1BXUikuIFRoaXMgcGF0Y2ggc2ltcGx5IGNoYW5nZXMgaXQgdG8gc2F5ICJVU1IxIiwKCSAgd2hpY2ggZ2V0cyBpdCByaWdodCBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgaXMuCgkgICAgICAgICAiU3RlaW5hciBILiBHdW5kZXJzb24iIDxzZXNzZUBkZWJpYW4ub3JnPgoJLSBNaW5vciBtYW4gcGFnZSB0aWR5IHVwCgkKMjAwNi0wNC0xMiBOZWlsQnJvd24gPG5laWxiQHN1c2UuZGU+CglSZW1vdmUgKiovTWFrZWZpbGUuaW4sIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgYW5kCgkgc3VwcG9ydC9pbmNsdWRlL2NvbmZpZy5oLmluIGZyb20gc291cmNlIGNvbnRyb2wKCVRoZXNlIGFyZSBhdXRvIGF1dG9nZW5lcmF0ZWQgYnkKCSAgYWNsb2NhbCAtSSBhY2xvY2FsIDsgYXV0b2hlYWRlciA7IGF1dG9tYWtlIDsgYXV0b2NvbmYKCQoyMDA2LTA0LTEyIE5laWxCcm93biA8bmVpbGJAc3VzZS5kZT4KCXV0aWxzL3N0YXRkL3JtdGNhbGwuYzogdXNlIEhBVkVfSUZBRERSU19IIHRvIGNvbnRyb2wgY29tcGlsYXRpb24KCW9mIGNvZGUgdXNpbmcgaWZhZGRycy5oCgljb25maWd1cmUuaW46IHRlc3QgZm9yIHByZXNlbnQgb2YgaWZhZGRycy5oCgoJT2xkIGdsaWJjJ3MgZG9uJ3QgaGF2ZSBpZmFkZHJzLmgKCQoyMDA2LTA2LTEyIEFtaXQgR3VkIDxhZ3VkQHJlZGhhdC5jb20+CglBZGRlZCB0aGUgbW91bnQgZnVuY3Rpb25hbGl0eSBmcm9tIHV0aWwtbGludXguCglBZGRlZCAtLXdpdGhvdXQtbW91bnQgY29uZmlndXJlIG9wdGlvbi4KCjIwMDYtMDQtMTIgTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJU2V0IHZlcnNpb24gdG8gMS4wLjgsIAoJYWNsb2NhbCAtSSBhY2xvY2FsIDsgYXV0b2hlYWRlciA7IGF1dG9tYWtlIDsgYXV0b2NvbmYKCjIwMDYtMDQtMTAgTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJVmFyaW91cyBwYXJhbm9pYSBjaGVja3M6Cglnc3NkX3Byb2MuYzogcGFzcyBtYXhfZmllbGQgc2l6ZXMgdG8gc3NjYW5mIHRvIGF2b2lkIGJ1ZmZlcgoJICBvdmVyZmxvdwoJc3ZjZ3NzZF9wcm9jLmM6IHJhbmdlX2NoZWNrIG5hbWUubGVuZ3RoLCB0byBlbnN1cmUgbmFtZS5sZW5ndGgrMQoJICBkb2Vzbid0IHdyYXAKCWlkbWFwZC5jKG5mc2RjYik6IG1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgYnl0ZSBpcyByZWFkIGJlZm9yZQoJIHplcm9pbmcgdGhlIGxhc3QgYnl0ZSB0aGF0IHdhcyByZWFkLCBvdGhlcndpc2UgbWVtb3J5IGNvcnJ1cHRpb24KCSBpcyBwb3NzaWJsZS4KCglGb3VuZCBieSBTdVNFIHNlY3VyaXR5IGF1ZGl0LgoJCjIwMDYtMDQtMTAgIktldmluIENvZmZtYW4iIDxrd2NAY2l0aS51bWljaC5lZHU+CglDaGVjayBmb3Igc3VmZmljaWVudCB2ZXJzaW9uIG9mIGxpYnJwY3NlY2dzcyBhbmQgbGliZ3NzYXBpCglpbiBjb25maWd1cmUuaW4KCjIwMDYtMDQtMTAgIktldmluIENvZmZtYW4iIDxrd2NAY2l0aS51bWljaC5lZHU+CglVcGRhdGUgYWNsb2NhbC90Y3Atd3JhcHBlcnMubTQgdG8gZGVmaW5lIEhBVkVfTElCV1JBUCBhbmQKCUhBVkVfVENQX1dSQVBQRVJTIGFzIGFwcHJvcHJpYXRlLgkKCjIwMDYtMDQtMTAgTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJQWRkIGNoZWNraW5nIGZvciBpbm5ldGdyIGJhY2sgdG8gY29uZmlndXJlLmluCgkKMjAwNi0wNC0xMCBrd2NAY2l0aS51bWljaC5lZHUKCVVwZGF0ZSBjYWxscyB0byBnc3NfZXhwb3J0X2x1Y2lkX3NlY19jb250ZXh0KCkKCQoJQ2hhbmdlIHRoZSBjYWxscyB0byBnc3NfZXhwb3J0X2x1Y2lkX3NlY19jb250ZXh0KCkgdG8gbWF0Y2ggdGhlIGNvcnJlY3RlZAoJaW50ZXJmYWNlIGRlZmluaXRpb24gaW4gbGliZ3NzYXBpLTAuOS4KCQoyMDA2LTA0LTEwIGt3Y0BjaXRpLnVtaWNoLmVkdQoJUGx1ZyBtZW1vcnkgbGVha3MgaW4gc3ZjZ3NzZAoJCglWYXJpb3VzIG1lbW9yeSBsZWFrcyBpbiB0aGUgc3ZjZ3NzZCBjb250ZXh0IHByb2Nlc3NpbmcgYXJlIGVsaW1pbmF0ZWQuCgkKMjAwNi0wNC0xMCBrd2NAY2l0aS51bWljaC5lZHUKCUZpeCBtZW1vcnkgbGVhayBvZiB0aGUgQVVUSCBzdHJ1Y3R1cmUgb24gY29udGV4dCBuZWdvdGlhdGlvbnMKCQoJRnJlZSBBVVRIIHN0cnVjdHVyZSBhZnRlciBjb21wbGV0aW5nIGNvbnRleHQgbmVnb3RpYXRpb24gYW5kIHNlbmRpbmcKCWNvbnRleHQgaW5mb3JtYXRpb24gdG8gdGhlIGtlcm5lbC4KCQoyMDA2LTA0LTEwIGt3Y0BjaXRpLnVtaWNoLmVkdQoJRml4IHN1cHBvcnQvaW5jbHVkZS9jb25maWcuaC5pbiBzdWNoIGFzIHdvdWxkIGJlIGRvbmUgYmUgcnVubmluZyBhdXRvaGVhZGVyLgoJCjIwMDYtMDMtMjggTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJMS4wLjgtcHJlMywgYWNsb2NhbC9hdXRvY29uZi9hdXRvbWFrZQoJCjIwMDYtMDMtMjgga3djQGNpdGkudW1pY2guZWR1CglVc2UgUEtHQ09ORklHIHRvIGxvY2F0ZSBnc3NhcGkgYW5kIHJwY3NlY2dzcyBoZWFkZXIgZmlsZXMKCQoJSW5zdGVhZCBvZiBoYXZpbmcgc2VwYXJhdGUgY29waWVzIG9mIHRoZSBnc3NhcGkgYW5kIHJwY3NlY2dzcwoJaGVhZGVyIGZpbGVzLCBvciBkZXBlbmRpbmcgb24gdGhlIEtlcmJlcm9zIGdzc2FwaSBoZWFkZXIsCglsb2NhdGUgdGhlIGhlYWRlcnMgbm93IGluc3RhbGxlZCB3aXRoIHRoZSBsaWJnc3NhcGkgYW5kIGxpYnJwY3NlY2dzcwoJbGlicmFyaWVzLgoJCglSZW1vdmUgbG9jYWwgY29waWVzIG9mIHRoZSBnc3NhcGkgYW5kIHJwY3NlY2dzcyBoZWFkZXIgZmlsZXMuCgkKCVRoaXMgZGVwZW5kcyBvbiB0aGUgY29uZmlndXJlX3VzZV9hdXRvdG9vbHMgcGF0Y2guCgkKMjAwNi0wMy0yOCBrd2NAY2l0aS51bWljaC5lZHUKCUFkZCBkZWJ1Z2dpbmcgdG8gYmV0dGVyIGRldGVjdCBuZWdvdGlhdGlvbiBvZiBlbmN0eXBlIG5vdCBzdXBwb3J0ZWQgYnkga2VybmVsCgkKCVByaW50IGRlYnVnZ2luZyBtZXNzYWdlIGluZGljYXRpbmcgdGhlIHR5cGUgb2YgZW5jcnlwdGlvbiBrZXlzIGJlaW5nIHNlbnQKCWRvd24gdG8gdGhlIGtlcm5lbC4gIFRoaXMgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIGRldGVjdCBjYXNlcyB3aGVyZQoJdW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiB0eXBlcyBhcmUgYmVpbmcgbmVnb3RpYXRlZC4KCShyZWFsbHkgdGhpcyB0aW1lKQoJCjIwMDYtMDMtMjgga3djQGNpdGkudW1pY2guZWR1CgkKCURvbid0IGNsb3NlIGFuZCByZW9wZW4gYWxsIHBpcGVzIG9uIGV2ZXJ5IEROT1RJRlkgc2lnbmFsLgoJCglGcm9tOiBWaW5jZSBCdXNhbSA8dmJ1c2FtQGdvb2dsZS5jb20+CglTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CgkKCURvbid0IHVubmVjZXNzYXJpbHkgY2xvc2UgYW5kIHJlLW9wZW4gYWxsIHBpcGVzIGFmdGVyIGV2ZXJ5IEROT1RJRlkKCXNpZ25hbC4gIFRoZXNlIHVubmVjZXNzYXJ5IGNsb3NlcyB3ZXJlIHRyaWdnZXJpbmcgYSBrZXJuZWwgT29wcy4KCU9yaWdpbmFsIHBhdGNoIG1vZGlmaWVkIHRvIGNvcnJlY3Qgc2VnZmF1bHQgd2hlbiB1bm1vdW50aW5nIGxhc3QKCU5GU3Y0IG1vdW50LgoJCjIwMDYtMDMtMjgga3djQGNpdGkudW1pY2guZWR1CglBZGQgb3B0aW9uIHRvIHNwZWNpZnkgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgY3JlZGVudGlhbHMgY2FjaGUgZmlsZXMKCQoJCglGcm9tOiBWaW5jZSBCdXNhbSA8dmJ1c2FtQGdvb2dsZS5jb20+CglTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CgkKCUFkZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIHNwZWNpZnkgd2hpY2ggZGlyZWN0b3J5IHNob3VsZCBiZSBzZWFyY2hlZAoJdG8gZmluZCBjcmVkZW50aWFscyBjYWNoZXMuCgkocmVhbGx5IHRoaXMgdGltZSkJCgkKMjAwNi0wMy0yOCBrd2NAY2l0aS51bWljaC5lZHUKCU11c3Qgc3RpbGwgdXNlIGtub3dsZWRnZSBvZiB0aGUgZ2x1ZSBjb250ZXh0IGZvciBwcmUtMS40IHZlcnNpb25zIG9mIE1JVCBrcmI1CgkKCVdlIG5lZWQgdG8gZ2V0IGFjY2VzcyB0byB0aGUgaW50ZXJuYWwga3JiNSBjb250ZXh0IHBvaW50ZXIgZm9yCglvbGRlciAocHJlLTEuNCkgdmVyc2lvbnMgb2YgTUlUIEtlcmJlcm9zLiAgV2UgZ2V0IGEgcG9pbnRlciB0bwoJdGhlIGdzcyBnbHVlJ3MgY29udGV4dC4gIEdldCB0aGUgcmlnaHQgcG9pbnRlciBiZWZvcmUgYWNjZXNzaW5nCgl0aGUgY29udGV4dCBpbmZvcm1hdGlvbi4KCShyZWFsbHkgdGhpcyB0aW1lKQoJCjIwMDYtMDMtMjgga3djQGNpdGkudW1pY2guZWR1CgkKCVJlbW92ZSB1bnVzZWQgZ3JvdXBzIHZhcmlhYmxlIGZyb20gZ2V0X2lkcygpIHdoaWNoIHdhcyBjYXVzaW5nIGEgY29tcGlsZXIgd2FybmluZy4KCShyZWFsbHkgdGhpcyB0aW1lKQoJCjIwMDYtMDMtMjgga3djQGNpdGkudW1pY2guZWR1CglVcGRhdGUga3JiNSBjb2RlIHRvIHVzZSBnbHVlIHJvdXRpbmUgbHVjaWQgY29udGV4dCBmdW5jdGlvbnMKCQoJCgkKCVRoZSBnc3NkIGNvZGUgc2hvdWxkIG5vdCBrbm93IGFib3V0IHRoZSBnbHVlIGxheWVyJ3MgY29udGV4dCBzdHJ1Y3R1cmUuCglBIHByZXZpb3VzIHBhdGNoIGFkZGVkIGdzc19leHBvcnRfbHVjaWRfc2VjX2NvbnRleHQoKSBhbmQKCWdzc19mcmVlX2x1Y2lkX3NlY19jb250ZXh0KCkgZnVuY3Rpb25zIHRvIHRoZSBnc3NhcGkgZ2x1ZSBsYXllci4KCVVzZSB0aGVzZSBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gY2FsbGluZyBkaXJlY3RseSB0byB0aGUgS2VyYmVyb3MKCWdzc2FwaSBjb2RlICh3aGljaCByZXF1aXJlcyB0aGUgS2VyYmVyb3MgY29udGV4dCBoYW5kbGUgcmF0aGVyCgl0aGFuIHRoZSBnbHVlJ3MgY29udGV4dCBoYW5kbGUpLgoJCgkocmVhbGx5IHRoaXMgdGltZSkKCQoyMDA2LTAzLTI4IGt3Y0BjaXRpLnVtaWNoLmVkdQoJCglTZXBhcmF0ZSBvdXQgY29udGV4dCBoYW5kbGluZyBjb2RlIGZvciBNSVQgS2VyYmVyb3MgYW5kIFNQS00zCglpbnRvIHRoZWlyIG93biBmaWxlLgoJKFJlYWxseSB0aGlzIHRpbWUpCgkKMjAwNi0wMy0yOCBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CglVc2VyLXNlbGVjdGFibGUgaWRtYXBwaW5nIGNhY2hlIGxpZmV0aW1lCgkKCVJlYWQgYW5kIHByb2Nlc3MgbmV3IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBDYWNoZS1FeHBpcmF0aW9uLCBhbmQgdXNlCgl0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGhvdyBsb25nIGlkbWFwcGluZyBlbnRyaWVzIGFyZSBjYWNoZWQuCgkoUmVhbGx5IHRoaXMgdGltZSkKCQoyMDA2LTAzLTI3IE5laWxCcm93biA8bmVpbGJAc3VzZS5kZT4KCTEuMC44LXJjMwoKMjAwNi0wMy0yNyBrd2NAY2l0aS51bWljaC5lZHUKCUFkZCBkZWJ1Z2dpbmcgdG8gYmV0dGVyIGRldGVjdCBuZWdvdGlhdGlvbiBvZiBlbmN0eXBlIG5vdCBzdXBwb3J0ZWQgYnkga2VybmVsCgoJUHJpbnQgZGVidWdnaW5nIG1lc3NhZ2UgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBlbmNyeXB0aW9uIGtleXMgYmVpbmcgc2VudAoJZG93biB0byB0aGUga2VybmVsLiAgVGhpcyBzaG91bGQgbWFrZSBpdCBlYXNpZXIgdG8gZGV0ZWN0IGNhc2VzIHdoZXJlCgl1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIHR5cGVzIGFyZSBiZWluZyBuZWdvdGlhdGVkLgoJCjIwMDYtMDMtMjcKCURvbid0IGNsb3NlIGFuZCByZW9wZW4gYWxsIHBpcGVzIG9uIGV2ZXJ5IEROT1RJRlkgc2lnbmFsLgoJCglEb24ndCB1bm5lY2Vzc2FyaWx5IGNsb3NlIGFuZCByZS1vcGVuIGFsbCBwaXBlcyBhZnRlciBldmVyeSBETk9USUZZCglzaWduYWwuICBUaGVzZSB1bm5lY2Vzc2FyeSBjbG9zZXMgd2VyZSB0cmlnZ2VyaW5nIGEga2VybmVsIE9vcHMuCglPcmlnaW5hbCBwYXRjaCBtb2RpZmllZCB0byBjb3JyZWN0IHNlZ2ZhdWx0IHdoZW4gdW5tb3VudGluZyBsYXN0CglORlN2NCBtb3VudC4KCQoyMDA2LTAzLTI3CglBZGQgb3B0aW9uIHRvIHNwZWNpZnkgZGlyZWN0b3J5IHRvIHNlYXJjaCBmb3IgY3JlZGVudGlhbHMgY2FjaGUgZmlsZXMKCQoJQWRkIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gc3BlY2lmeSB3aGljaCBkaXJlY3Rvcnkgc2hvdWxkIGJlIHNlYXJjaGVkCgl0byBmaW5kIGNyZWRlbnRpYWxzIGNhY2hlcy4KCQoyMDA2LTAzLTI3IGt3Y0BjaXRpLnVtaWNoLmVkdQoJTXVzdCBzdGlsbCB1c2Uga25vd2xlZGdlIG9mIHRoZSBnbHVlIGNvbnRleHQgZm9yIHByZS0xLjQgdmVyc2lvbnMgb2YgTUlUIGtyYjUKCQoJV2UgbmVlZCB0byBnZXQgYWNjZXNzIHRvIHRoZSBpbnRlcm5hbCBrcmI1IGNvbnRleHQgcG9pbnRlciBmb3IKCW9sZGVyIChwcmUtMS40KSB2ZXJzaW9ucyBvZiBNSVQgS2VyYmVyb3MuICBXZSBnZXQgYSBwb2ludGVyIHRvCgl0aGUgZ3NzIGdsdWUncyBjb250ZXh0LiAgR2V0IHRoZSByaWdodCBwb2ludGVyIGJlZm9yZSBhY2Nlc3NpbmcKCXRoZSBjb250ZXh0IGluZm9ybWF0aW9uLgoJCjIwMDYtMDMtMjcgS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBjYXVzaW5nIGNvbXBpbGUgd2FybmluZwoJCglSZW1vdmUgdW51c2VkIGdyb3VwcyB2YXJpYWJsZSBmcm9tIGdldF9pZHMoKSB3aGljaCB3YXMgY2F1c2luZyBhIGNvbXBpbGVyIHdhcm5pbmcuCgkKMjAwNi0wMy0yNyBrd2NAY2l0aS51bWljaC5lZHUKCVVwZGF0ZSBrcmI1IGNvZGUgdG8gdXNlIGdsdWUgcm91dGluZSBsdWNpZCBjb250ZXh0IGZ1bmN0aW9ucwoJCglUaGUgZ3NzZCBjb2RlIHNob3VsZCBub3Qga25vdyBhYm91dCB0aGUgZ2x1ZSBsYXllcidzIGNvbnRleHQgc3RydWN0dXJlLgoJQSBwcmV2aW91cyBwYXRjaCBhZGRlZCBnc3NfZXhwb3J0X2x1Y2lkX3NlY19jb250ZXh0KCkgYW5kCglnc3NfZnJlZV9sdWNpZF9zZWNfY29udGV4dCgpIGZ1bmN0aW9ucyB0byB0aGUgZ3NzYXBpIGdsdWUgbGF5ZXIuCglVc2UgdGhlc2UgZnVuY3Rpb25zIHJhdGhlciB0aGFuIGNhbGxpbmcgZGlyZWN0bHkgdG8gdGhlIEtlcmJlcm9zCglnc3NhcGkgY29kZSAod2hpY2ggcmVxdWlyZXMgdGhlIEtlcmJlcm9zIGNvbnRleHQgaGFuZGxlIHJhdGhlcgoJdGhhbiB0aGUgZ2x1ZSdzIGNvbnRleHQgaGFuZGxlKS4KCQoyMDA2LTAzLTI3IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KCVNlcGFyYXRlIG91dCBjb250ZXh0IGhhbmRsaW5nIGNvZGUgZm9yIE1JVCBLZXJiZXJvcyBhbmQgU1BLTTMKCWludG8gdGhlaXIgb3duIGZpbGUuCgkKMjAwNi0wMy0yNyBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CglDb25zb2xpZGF0ZSBnc3NkIGFuZCBzdmNnc3NkIHNpbmNlIHRoZXkgc2hhcmUgbXVjaCBjb2RlCgkKCVJlbW92ZSBkaXJlY3Rvcnkgc3ZjZ3NzZCB3aGljaCB3YXMgb25seSBjcmVhdGVkIGJlY2F1c2UgdGhlIG9sZAoJYnVpbGQgc3lzdGVtIGNvdWxkIG5vdCBoYW5kbGUgYnVpbGRpbmcgdHdvIGRhZW1vbnMgaW4gdGhlIHNhbWUKCWRpcmVjdG9yeS4gIFRoaXMgZWxpbWluYXRlcyBidWlsZCBjb21wbGljYXRpb25zIHNpbmNlIGdzc2QgYW5kCglzdmNnc3NkIGFsc28gc2hhcmUgbWFueSBzb3VyY2UgZmlsZXMuCgkKCVRoaXMgcGF0Y2ggZWZmZWN0aXZlbHkgcmVtb3ZlcyB0aGUgdXRpbHMvc3ZjZ3NzZCBkaXJlY3RvcnksIG1vdmluZwoJYWxsIGl0cyBmaWxlcyB0byB0aGUgdXRpbHMvZ3NzZCBkaXJlY3RvcnkuICBGaWxlIHV0aWxzL2dzc2QvTWFrZWZpbGUuYW0KCWlzIG1vZGlmaWVkIHdpdGggZGlyZWN0aW9ucyB0byBidWlsZCBib3RoIGdzc2QgYW5kIHN2Y2dzc2QuCgkKMjAwNi0wMy0yNyBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CglVc2UgUEtHQ09ORklHIHRvIGxvY2F0ZSBnc3NhcGkgYW5kIHJwY3NlY2dzcyBoZWFkZXIgZmlsZXMKCQoJSW5zdGVhZCBvZiBoYXZpbmcgc2VwYXJhdGUgY29waWVzIG9mIHRoZSBnc3NhcGkgYW5kIHJwY3NlY2dzcwoJaGVhZGVyIGZpbGVzLCBvciBkZXBlbmRpbmcgb24gdGhlIEtlcmJlcm9zIGdzc2FwaSBoZWFkZXIsCglsb2NhdGUgdGhlIGhlYWRlcnMgbm93IGluc3RhbGxlZCB3aXRoIHRoZSBsaWJnc3NhcGkgYW5kIGxpYnJwY3NlY2dzcwoJbGlicmFyaWVzLgoJCglSZW1vdmUgbG9jYWwgY29waWVzIG9mIHRoZSBnc3NhcGkgYW5kIHJwY3NlY2dzcyBoZWFkZXIgZmlsZXMuCgkKCVRoaXMgZGVwZW5kcyBvbiB0aGUgY29uZmlndXJlX3VzZV9hdXRvdG9vbHMgcGF0Y2guCgkKMjAwNi0wMy0yNyBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CglVc2VyLXNlbGVjdGFibGUgaWRtYXBwaW5nIGNhY2hlIGxpZmV0aW1lCgkKCVJlYWQgYW5kIHByb2Nlc3MgbmV3IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBDYWNoZS1FeHBpcmF0aW9uLCBhbmQgdXNlCgl0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGhvdyBsb25nIGlkbWFwcGluZyBlbnRyaWVzIGFyZSBjYWNoZWQuCgkKMjAwNi0wMy0yNyBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KCVNldCBsaWJuZnNpZG1hcCBsaWJyYXJ5IGRlYnVnZ2luZyBsZXZlbCBhbmQgbG9nZ2luZyBmdW5jdGlvbi4KCglUaGlzIHBhdGNoIGFkZHMgYSBjYWxsIHRvIHRoZSBuZXcgbGlibmZzaWRtYXAgbGlicmFyeSBmdW5jdGlvbiAKCW5mczRfc2V0X2RlYnVnKCksIHdoaWNoIGRlZmluZXMgdGhlIHZlcmJvc2l0eSBsZXZlbCBsaWJuZnNpZG1hcAoJc2hvdWxkIHVzZSBhcyB3ZWxsIGFzIHRoZSBsb2dnaW5nIGZ1bmN0aW9uLgoKMjAwNi0wMy0yNyBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CglEb24ndCBjbG9zZSBmaWxlIGRlc2NyaXB0b3IgdW50aWwgYWZ0ZXIgY2FsbGluZyBldmVudF9kZWwoKS4KCglEZWxldGUgZXZlbnQgcHJvY2Vzc2luZyBmb3IgYSBmaWxlIGRlc2NyaXB0b3IgYmVmb3JlIGNsb3NpbmcgaXQuCglUaGlzIHdhcyBjYXVzaW5nIGhhbmdzIHdoZW4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGxpYmV2ZW50LTEuMGIuCgoyMDA2LTAzLTI3IGt3Y0BjaXRpLnVtaWNoLmVkdQoJRmluZCBrcmI1LWNvbmZpZyBvbiBTdVNFIDEwCgoJU3VTRSAxMC4wIHB1dHMga3JiNS1jb25maWcgaW4geWV0IGFub3RoZXIgb2JzY3VyZSBsb2NhdGlvbi4KCUxvb2sgZm9yIGl0IHRoZXJlIGFuZCB1c2UgaXQgaWYgZm91bmQuCgoyMDA2LTAzLTI3IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KCVVwZGF0ZSBkZWJpYW4gcGFja2FnZSBpbmZvcm1hdGlvbi4KCjIwMDYtMDMtMjcgS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgoJSW5zdGFsbCAvdmFyL2xpYi9uZnMgZmlsZXMgdXNpbmcgREVTVERJUiBhbmQgYWRkIHJwY3NlYyBoZWFkZXJzIHRvIGRpc3RyaWJ1dGlvbgoKCUFkZCAiJChERVNURElSKSIgdG8gdGhlIHBhdGhzIGZvciB0aGUgIiQoc3RhdGVkaXIpIiBmaWxlcyBzbyB0aGV5IGFyZQoJcHV0IGluIHRoZSByaWdodCBwbGFjZSB3aGVuIERFU1RESVIgaXMgZGVmaW5lZC4KCglBZGQgdGhlIHJwY3NlYyBoZWFkZXIgZmlsZXMgdG8gRVhUUkFfRElTVCBsaXN0LgoKMjAwNS0xMi0yMSBOZWlsQnJvd24gPG5laWxiQHN1c2UuZGU+CgkqdXRpbHMvcnF1b3RhZC9ycXVvdGFfc2VydmVyLmM6IERldGVjdCBhbmQgaGFuZGxlIGJvdGggb2xkLXN0eWxlCgkoMi40KSBhbmQgbmV3LXN0eWxlKDIuNikgcXVvdGFjdGwuCgkqdXRpbHMvZ3NzZC9nc3NfZGVzdHJveV9jcmVkOiByZW1vdmUgZGVwZW5kZW5jZSBvbiAiaGVhZCAtMSIgd2hpY2gKCW1pZ2h0IG5lZWQgdG8gYmUgImhlYWQgLW4gMSIKCSp1dGlscy9uaGZzc3RvbmUvbmhmc3J1bjogY29udmVydCAidGFpbCAtMSIgdG8gInRhaWwgLW4gMSIKCQoyMDA1LTEyLTIwIEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4gTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJU3Vic3RhbnRpYWwgTWFrZWZpbGUvY29uZmlndXJlIHJld3JpdGUuICAKCVJ1biAnYXV0b2dlbi5zaCcgdG8gY3JlYXRlICJNYWtlZmlsZS5pbiIgZXRjLgoKCUFsc28gYWRkIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgdG8gQ1BQX0ZMQUdTIHNvIHRoYXQgbW91bnRkIGNhbgoJc3RhdCBhbmQgZXhwb3J0IGZpbGVzIGxhcmdlciB0aGFuIDJHaWcuCgoJMS4wLjgtcmMyIHJlbGVhc2VkCgoyMDA1LTEyLTIwIE5laWxCcm93biA8bmVpbGJAc3VzZS5kZT4KCXN1cHBvcnQvbmZzL2V4cG9ydHMuYyhnZXRleHBvcnRlbnQpOiBpcyBhIG51bGwgaG9zdCBuYW1lIGlzIGdpdmVuLAoJcmVwbGFjZSBpdCB3aXRoICcqJyBzbyB3ZSBoYXZlIGEgbm9uLWVtcHR5IGhvc3QgbmFtZSBmb3IgbWVzc2FnZXMKCWV0Yy4KCXV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLm1hbjogQ29ycmVjdCBkb2N1bWVudGF0aW9uIGFib3V0IGRlZmF1bHQKCWV4cG9ydCBvcHRpb25zLgoKMjAwNS0xMi0yMCBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+Cgl1dGlscy9nc3NkL2dzc2RfcHJvYy5jKGNyZWF0ZV9hdXRoX3JwY19jbGllbnQpOiBVc2Ugc2VydmljZQoJICBwb3J0aW9uIG9mIGNscC0+c2VydmljZW5hbWUgcmF0aGVyIHRoYW4gaGFyZC1jb2RpbmcgIm5mcyIuIAoKMjAwNS0xMi0xNiBOZWlsQnJvd24gPG5laWxiQHN1c2UuZGU+CgkxLjAuOC1yYzEgcmVsZWFzZWQKCjIwMDUtMTItMTYgS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgoJc3ZjZ3NzZCBuZWVkcyAtbG5mcyB3aGVuIHVzaW5nIG5ldyBmdW5jdGlvbiBjbG9zZWFsbCgpLgoJCgktLS0KCVJlbW92ZSB1bnVzZWQgYXJndW1lbnQgZnJvbSBuZnNkb3BlbigpCgkKCUFmdGVyIHByZXZpb3VzIGNoYW5nZXMsIHRoZSBhcmd1ZW1lbnQgdG8gbmZzZG9wZW4oKSBoYXMgYmVjb21lIHVudXNlZC4KCVJlbW92ZSBpdC4KCQoJLS0tCglGaXggaWRtYXBkIGVycm9yIHJlcG9ydGluZyBhZnRlciBjYWxsIHRvIG15ZGFlbW9uKCkKCQoJQWZ0ZXIgY2FsbCB0byBteWRhZW1vbigpLCBjYWxscyB0byBlcnJbeF0gYW5kIHdhcm5beF0gcmVzdWx0CglpbiB0aGUgbWVzc2FnZSBnb2luZyBub3doZXJlLiAgQ2hhbmdlIHRvIHVzaW5nIGlkbWFwZF8qCgl2ZXJzaW9ucyBvZiB0aGVzZSByb3V0aW5lcyB3aGljaCB3cml0ZSB0byBzeXNsb2cuCglPcmlnaW5hbCBwcm9ibGVtIHJlcG9ydGVkIGJ5IFZpbmNlbnQgUm9xdWV0YSA8dmluY2VudC5yb3F1ZXRhQGV4dC5idWxsLm5ldD4KCXdpdGggYSBkaWZmZXJlbnQgcGF0Y2guCgkKCS0tLQoJRG9uJ3QgYWRkIEBkb21haW4gdG8gbmFtZXMgdGhhdCBjYW5ub3QgYmUgbWFwcGVkLgoJCglQZXIgcmZjMzUzMCBzZWN0aW9uIDUuODogd2hlbiB1bmFibGUgdG8gbWFwIGEgdWlkIHRvIGEgbmFtZSwgZG9uJ3QKCWFkZCB0aGUgQGRvbWFpbiB0byB0aGUgIm5vYm9keSIgbmFtZS4KCQoJLS0tCglGaXggaWRtYXBkIGZvciBzeXN0ZW1zIHdoZXJlIHNpemVvZih1aWRfdCkhPTQgYW5kIHNpemVvZihnaWRfdCkhPTQKCQoJRml4IGNvbnZlcnNpb24gY2FzZXMgd2hlcmUgdWlkX3QgYW5kIGdpZF90IGFyZSBub3QgMzIgYml0cy4KCQoJLS0tCglEb24ndCBzZWdmYXVsdCBiZWNhdXNlIG1lY2ggd2Fzbid0IGZpbGxlZCBpbiBiZWNhdXNlIG9mIGFuIGVycm9yCgkKCUZyb20gS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgoJCglJbml0aWFsaXplIG1lY2ggdG8gbnVsbCB0byBhdm9pZCBzZWdmYXVsdCBpZiBhbiBlcnJvciBvY2N1cnMKCWFuZCBtZWNoIGlzIG5ldmVyIHJldHVybmVkIGZyb20gZ3NzX2FjY2VwdF9zZWNfY29udGV4dC4KCQoJLS0tCglSZW1vdmUgdXNlIG9mIHN0YXRpYyBidWZmZXIgaW4gZG9fZG93bmNhbGwKCQoJU2lnbmVkLW9mZi1ieTogS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgoJCglEeW5hbWljYWxseSBhbGxvY2F0ZSBidWZmZXIgb2YgdGhlIGNvcnJlY3QgbGVuZ3RoIHJhdGhlcgoJdGhhbiB1c2luZyBmaXhlZC1sZW5ndGggYnVmZmVyLgoJCgktLS0KCVByaW50IGJldHRlciBlcnJvciBtZXNzYWdlIGlmIHJwYyByb3V0aW5lIGNsbnRfY3JlYXRlKCkgZmFpbHMuCgkKCS0tLQoJUHJpbnQgYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZXMgYWZ0ZXIgZ3NzIGNhbGxzLgoJCglQcmludCBnc3MgZXJyb3IgbWVzc2FnZXMgYWZ0ZXIgY2FsbHMgdG8gZ3NzIGZ1bmN0aW9ucywgZXZlbiBpZiB0aGV5CglhcmUgZm9yIEtlcmJlcm9zIG9ubHkuCgkKCS0tLQoJVXBkYXRlIGdzc2QgYW5kIHN2Y2dzc2QgdG8gdXNlIHRoZSBuZXcgZ3NzIG1lY2ggZ2x1ZSBsdWNpZCBjb250ZXh0IGNhbGxzLgoJCglTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CgkKCVVwZGF0ZSBnc3NkIGFuZCBzdmNnc3NkIHRvIHVzZSBhIGx1Y2lkIGNvbnRleHQgZnJvbSBTUEtNMyB0byBzZW5kIGRvd24KCXRvIHRoZSBrZXJuZWwuCglVcGRhdGUgZ3NzZCBhbmQgc3ZjZ3NzZCB0byB1c2UgdGhlIG5ldyBnc3MgbWVjaCBnbHVlIGx1Y2lkIGNvbnRleHQgY2FsbHMuCglBZGQgY29uZmlndXJlIGNoZWNrIHRvIHNlZSBpZiBzcGttMyBzdXBwb3J0IGlzIGF2YWlsYWJsZS4KCQoJLS0tCglBZGQgc3VwcG9ydCBmb3IgQ09OVElOVUVfTkVFREVEIHJldHVybiBmcm9tIGdzc19hY2NlcHRfc2VjX2NvbnRleHQuCgkKCVNpZ25lZC1vZmYtYnk6IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KCQoJQWRkIENPTlRJTlVFX0lOSVQgaGFuZGxpbmcgdG8gc3ZjZ3NzZC4gU3RvcmUgdGhlIHBhcnRpYWxseSBjb21wbGV0ZSBzcGttCgljb250ZXh0IGhhbmRsZSBpbiB0aGUgb3V0X2hhbmRsZSBvZiBDT05USU5VRV9JTklUIG1lc3NhZ2VzIHNvIHRoYXQgaXQgaXMKCXJldHVybmVkIGluIHRoZSBpbl9oYW5kbGUgb2Ygc3Vic2VxdWVudCBtZXNzYWdlcy4KCQoJLS0tCglSZXBsYWNlIEdTU19DX0FOT05fRkxBRyB3aXRoIEdTU19DX01VVFVBTF9GTEFHLgoJCglTaWduZWQtb2ZmLWJ5OiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CgkKCVNwZWNpZnkgR1NTX0NfTVVUVUFMX0ZMQUcgcmF0aGVyIHRoYW4gR1NTX0NfQU5PTl9GTEFHIGZvcgoJc3BrbTMuCgkKCU5PVEU6IHdlIG5lZWQgYSB3YXkgdG8gcGFzcyB0aGUgYXBwcm9wcmlhdGUgdmFsdWUgcmF0aGVyIHRoYW4KCWhhcmQtY29kaW5nIHRoaXMgZmxhZy4KCQoJLS0tCglJbmNyZWFzZSBzaXplIG9mIHJwYyBzZW5kL3JlY2VpdmUgYnVmZmVycwoJCglDaGFuZ2UgdGhlIGNsbnRfY3JlYXRlKCkgdG8gdXNlIHJvdXRpbmVzIHdoaWNoIGFsbG93IHVzIHRvIHNldCB0aGUKCXNlbmQgYW5kIHJlY2VpdmUgYnVmZmVyIHNpemUuICBUaGlzIGlzIG5lZWRlZCBmb3IgbGFyZ2VyIHNwa20zCglleGNoYW5nZXMgaW5jbHVkaW5nIGNlcnRpZmljYXRlIGNoYWlucy4KCQoJVGhpcyBoYXMgdGhlIHNpZGUtZWZmZWN0IG9mIHNraXBwaW5nIHRoZSBwb3J0bWFwIGNhbGwgc2luY2UKCXdlIHNwZWNpZnkgdGhlIHBvcnQgKGJ5IHNwZWNpZnlpbmcgdGhlIHNlcnZpY2UpIHdoZW4gZ2V0dGluZwoJdGhlIHNlcnZlcidzIGFkZHJlc3MgaW5mb3JtYXRpb24uCgkKCS0tLQoJRGVmaW5lIF9MSU5VWF9RVU9UQV9WRVJTSU9OIHRvIDEKCQoJVGhlIHJxdW90YWQgY29kZSBpcyB3cml0dGVuIGFnYWluc3QgdGhlICJvbGQiIGtlcm5lbCBxdW90YSBpbnRlcmZhY2UuCglGZWRvcmEgQ29yZSA0IGlzIHRoZSBvbmx5IHBsYXRmb3JtIGtub3duIHRvIGNoZWNrIGZvciBkaWZmZXJlbnQKCXZlcnNpb25zLCBzbyB0aGlzIHNob3VsZCBub3QgaGF2ZSBhbnkgYWZmZWN0IG9uIG90aGVyIHBsYXRmb3JtcwoJYW5kIGZpeGVzIHRoZSBidWlsZCBmb3IgRkM0LgoJCgktLS0KCjIwMDUtMTItMTIgVXNoYSBLZXRpbmVuaSA8a2V0aW5lbmlAdXMuaWJtLmNvbT4sIE5laWxCcm93biA8bmVpbGJAc3VzZS5kZT4KCSpzdXBwb3J0L25mcy9ycGNtaXNjLmMocnBjX2luaXQpOiBpcyBzdGRpbiBpcyBhIHNvY2tldCwgYnV0CglpcyBhbHJlYWR5IGNvbm5lY3RlZCAoYXMgZS5nLiBmcm9tIHNzaCksIGRvbid0IGFzc3VtZSB3ZQoJd2VyZSBzdGFydGVkIGJ5IGluZXRkLgoKMjAwNS0xMS0wMyBTdGV2ZSBEaWNrc29uIDxTdGV2ZURAcmVkaGF0LmNvbT4gTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJKnV0aWxzL2lkbWFwZC9pZG1hcHMuYzoKCQoJSSd2ZSByZWNlbnRseSB1cGRhdGVkIHRoZSBuZnMtdXRpbHMgaW4gcmF3aGlkZSB3aXRoIHRoZQoJbGF0ZXN0IHBhdGNoZXMgZnJvbSB0aGUgU291cmNlRm9yZ2UgQ1ZTIHRyZWUgYW5kIHRoZQoJbGF0ZXN0IENJVEkgcGF0Y2hlcyAoMS4wLjctNCkuCgkKCUluIHRlc3RpbmcgdGhlc2UgcGF0Y2hlcywgSSBub3RpY2UgdGhhdCB3aGVuIHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQKCWFuZCBhIFNJR0hVUCB3YXMgc2VudCB0byBycGMuaWRtYXBkIHRvIG9wZW4gdGhlIG5mczQubmFtZXRvaWQvY2hhbm5lbAoJYW5kIG5mczQuaWR0b25hbWUvY2hhbm5lbCBmaWxlcywgdGhlIHNlY29uZCBvcGVuICh0aGUgbmZzNC5pZHRvbmFtZSBvbmUpCglmYWlsZWQgYmVjYXVzZSB0aGUgcGF0aCAoaS5lLiBpYy0+aWNfcGF0aCkgd2FzIE5VTEwuCgkKCU5vdyB0aGUgcmVhc29uIHRoZSBpY19wYXRoIHdhcyBOVUxMIHdhcyBiZWNhdXNlIGl0IHdhcyBuZXZlciBzZXQKCWR1cmluZyB0aGUgY2FsbCB0byBuZnNkb3BlbigpLiBuZnNkb3BlbigpIGxvb2tzIGxpa2U6CgluZnNkb3BlbihjaGFyICpwYXRoKQoJewoJICAgICByZXR1cm4gKChuZnNkb3Blbm9uZSgmbmZzZF9pY1tJQ19OQU1FSURdLCBJQ19OQU1FSUQsIHBhdGgpID09IDAgJiYKICAgICAgICAgICAgIG5mc2RvcGVub25lKCZuZnNkX2ljW0lDX0lETkFNRV0sIElDX0lETkFNRSwgcGF0aCkgPT0gMCkgPyAwIAoJICAgICAgIDogLTEpOwoJfQoKCU5vdGU6IHRoZSBjYWxsIHRvIG5mc2RvcGVub25lKCkgaXMgaG93IHRoZSBwYXRoIGlzIHNldCBpbiBlYWNoIG5mc2RfaWNbXQoJZW50cnkgYW5kIG5mc2RvcGVuKCkgaXMgb25seSBjYWxsZWQgb25jZS4KCQoJU28gd2hlbiBycGMuaWRtYXAgY29tZXMgdXAgYW5kIHRoZSBmaXJzdCBjYWxsIHRvIG5mc2RvcGVub25lKCkgZmFpbHMKCShiZWNhdXNlIHRoZSBzZXJ2ZXIgaXMgbm90IHJ1bm5pbmcpIHRoZSBwYXRoIGluIG5mc2RfaWNbSUNfSUROQU1FXSBpcwoJbmV2ZXIgZmlsbGVkIGluIGJlY2F1c2UgdGhlIHNlY29uZCBuZnNkb3Blbm9uZSgpIG5ldmVyIGhhcHBlbi4uLgoJCglOb3cgdGhlcmUgd2FzIGEgQ0lUSSBwYXRjaGUgKGlkbWFwZF9yZXZlcnRfZml4X3Jlb3Blbl9vbl9zaWdodXAuZGlmKQoJdGhhdCB0cmllZCB0byBhZGRyZXNzIHRoaXMgcHJvYmxlbSBidXQgZGlkIHNlZW0gdG8gZml4IGl0Li4gVGhlCglhdHRhY2hlZCBwYXRjaCBmaXggdGhlIHByb2JsZW0gYnkgaW5pdGlhbGl6aW5nIGJvdGggbmZzZF9pY1tJQ19JRE5BTUVdCglhbmQgbmZzZF9pY1tJQ19OQU1FSURdIHN0cnVjdHVyZXMgd2l0aCB0aGUgbmVlZGVkIGluZm8uLi4KCUkgZmlndXJlZCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgb2YgY2hhbmdpbmcgdGhlc2UgcGF0aHMgb3IgZmlsZW5hbWVzCglieSBjb21tYW5kIGxpbmUgYXJncywgd2h5IG5vdCBqdXN0IHNldCB0aGVtIGR1cmluZyBjb21waWxlIHRpbWUuLi4KCXNvIHRoYXQncyB3aGF0IHRoaXMgcGF0Y2ggZG9lcy4KCQoJVGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgaG93IG5mc2RyZW9wZW5fb25lKCkgaGFuZGxlcyB0aGUKCWNhc2Ugd2hlcmUgdGhlIGV2ZW50IGhhcyBhbHJlYWR5IGJlZW4gc2V0LiBVbmxpa2UgdGhlIENJVEkKCXBhdGNoIChpZG1hcGRfcmV2ZXJ0X2ZpeF9yZW9wZW5fb25fc2lnaHVwLmRpZikgd2hpY2gganVzdAoJanVzdCBkb2VzIG5vdCByZWdpc3RlciB0aGUgc2Vjb25kIGV2ZW50LCBteSBwYXRjaCBkZWxldGVzCgl0aGUgb2xkIGV2ZW50IGFuZCB0aGUgcmVnaXN0ZXJzIHRoZSBuZXcgb25lLiBJdCBqdXN0IHNlZW1zIGxpa2UKCXRoZSByaWdodCB0aGluZyB0byBkbyBzaW5jZSBhIFNJR0hVUCBtZWFucyBhIG5ldyBzZXJ2ZXIganVzdAoJc3RhcnRlZCBzbyB3ZSBwcm9iYWJseSBzaG91bGQgY3JlYXRlIGEgbmV3IGV2ZW50IGFzIHdlbGwuLi4KCQoJc3RldmVkLgoJCjIwMDUtMTAtMTQgTmVpbEJyb3duIDxuZWlsYkBzdXNlLmRlPgoJKnV0aWxzL21vdW50ZC9jYWNoZS5jKG5mc2RfZmgpOiBVbmRlcnN0YW5kIHR5cGUgMiBhbmQgdHlwZSAzCglmaWxlc3lzdGVtIGlkZW50aWZpZXJzLCB3aGljaCBhcmUgdXNlZCB3aXRoIGRldmljZSBudW1iZXJzCglUaGF0IGRvbid0IGZpdCBpbnRvIDE2IGJpdHMuCgoyMDA1LTEwLTA3IE9sYWYgS2lyY2ggPG9raXJAc3VzZS5kZT4KCSogdXRpbHMvbW91bnRkL21vdW50ZC5jKGdldF9leHBvcnRsaXN0KTogV2l0aG91dCB0aGlzIHBhdGNoLAoJc2hvd21vdW50IC1lIHdvdWxkIHNvbWV0aW1lcyBkaXNwbGF5IGhvc3QgbmFtZXMgdGhhdCBzaG91bGQgcmVhbGx5CgloYXZlIGJlZW4gc3Vic3VtZWQgdW5kZXIgYSB3aWxkY2FyZCBlbnRyeS4KCglUaGUgcHJvYmxlbSB3YXMgdGhhdCB0aGUgY29kZSBpbiBnZXRfZXhwb3J0bGlzdCB3b3VsZCBhbHdheXMKCXNraXAgdGhlIG5leHQgZ3JvdXAgZW50cnkgYWZ0ZXIgcmVtb3Zpbmcgb25lIEZRRE4uCgoyMDA1LTEwLTA2IFN0ZXZlIERpY2tzb24gPFN0ZXZlREByZWRoYXQuY29tPiBOZWlsQnJvd24gPG5laWxiQHN1c2UuZGU+CgkqIHN1cHBvcnQvbmZzL2V4cG9ydC5jOiBkb24ndCB3YXJuIGFib3V0IHN5bmMvYXN5bmMgZm9yIHJlYWRvbmx5CglleHBvcnRzCgkqIHN1cHBvcnQvbmZzL2Nsb3NlYWxsLmM6IG5ldyBmaWxlIHdpdGggZnVuY3Rpb24gdG8gY2xvc2UgYWxsIAoJZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGEgZ2l2ZSBtaW5pbXVtIHVwd2FyZHMuCgkqIG5mc2QvbW91bnRkL3N0YXRkL2lkbWFwZC9nc3NzdmNkOiB1c2UgY2xvc2VhbGwuCgkqIHV0aWxzL21vdW50ZC9tb3VudGQuYzogRWxpbWluYXRlIDMgc3lzbG9nIG1lc3NhZ2UgdGhhdCBhcmUKCWxvZ2dlZCBmb3Igc3VjY2Vzc2Z1bCBldmVudHMuIAoJKiB1dGlscy9tb3VudGQvbW91bnRkLmM6IG1ha2Ugc3VyZSB0aGUgY29ycmVjdCBob3N0bmFtZSBpcyB1c2VkIGluCgl0aGUgU01fTk9USUZZIG1lc3NhZ2UgdGhhdCBpcyBzZW50IGZyb20gYSByZWJvb3RlZCBzZXJ2ZXIgd2hpY2gKCWhhcyBtdWx0aXBsZSBuZXR3b3JrIGludGVyZmFjZXMuIChieiAxMzkxMDEpCgoJRGV0YWlscyBjYW4gYmUgZm91bmQgaW46CglodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEzOTEwMQoKCSp1dGlscy9pZG1hcGQvaWRtYXBkLmM6Rml4ZWQgc3Vic2NyaXB0aW5nIHByb2JsZW0gaW4gaWRtYXBkIChiegoJMTU4MTg4KSBUaGlzIGZpeGVzIHRoZSBmb2xsb3dpbmcgcHJvYmxlbTogCiAgICAgICAgIHJwYy5pZG1hcGQ6IG5mc2RyZW9wZW46IE9wZW5pbmcgJycgZmFpbGVkOiBlcnJubyAyIChObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5KQoKCSBEZXRhaWxzIGNhbiBiZSBmb3VuZCBpbjoKCSBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE1ODE4OAoKCSp1dGlscy9zdGF0ZC9zdGF0ZC5jKGRyb3BfcHJpdnMpOiBjbGVhciBzdF9naWQgYXMgd2VsbCBhcyBzdF91aWQKCW9mIHN0YXQgZmFpbHMuCgkqdXRpbHMvc3RhdGQvc3ZjX3J1bi5jKG15X3N2Y19ydW4pOiByZW1vdmUgdXNhZ2Ugb2YgdW5kb2N1bWVudGVkCgklbSBmb3JtYXQgc3BlY2lmaWVyLgoJKnV0aWxzL3N0YXRkL21vbnRvci5jKHNtX21vbl8xX3N2Yyk6IGFzIGFib3ZlCgkqc3VwcG9ydC9uZnMveGxvZy5jKHhsb2cpOiBDaGFuZ2VkIHhsb2cgdG8gdXNlIExPR19JTkZPIGluc3RlYWQgb2YKCUxPR19ERUJVRyBzbyBkZWJ1ZyBtZXNzYWdlcyB3aWxsIGFwcGVhciB3L291dCBhbnkgY29uZmlnIGNoYW5nZXMKCXRvIHN5c2xvZy5jb25mLiAKCgkKMjAwNS0wOS0wMiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CgkqIHV0aWxzL3JxdW90YWQvcnF1b3RhX3NlcnZlci5jKGdldHF1b3RhaW5mbyk6IHVzZSBleHBsaWNpdAoJc3RydXR1cmUtbWVtYmVyIGNvcHlpbmcgcmF0aGVyIHRoYW4gbWVtY3B5LCBhcyB0aGUgZWxlbWVudAoJc2l6ZXMgYXJlIHRoZSBzYW1lIG9uIGFsbCBhcmNoaXRlY3R1cmVzLgoKMjAwNS0wOC0yNiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CglBZGQgb3B0aW9uIHRvIHNldCBycGNzZWNfZ3NzIGRlYnVnZ2luZyBsZXZlbCAoaWYgYXZhaWxhYmxlKQoKCUNoYW5nZXMgdG8gYWxsb3cgZ3NzZC9zdmNnc3NkIHRvIGJ1aWxkIHdoZW4gdXNpbmcgSGllbWRhbCBLZXJiZXJvcwoJbGlicmFyaWVzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzdGlsbCBydW4tdGltZSBpc3N1ZXMgcHJldmVudGluZwoJdGhpcyBmcm9tIHdvcmtpbmcgd2hlbiBzaGFyZWQgbGlicmFyaWVzIGZvciBsaWJnc3NhcGkgYW5kIGxpYnJwY3NlY2dzcwoJYXJlIHVzZWQuCgkKMjAwNS0wOC0yNiBLZXZpbiBDb2ZmbWFuIDxrd2NAY2l0aS51bWljaC5lZHU+CglSZW1vdmUgdGhlIHJwY3NlY19nc3MgY29kZSBhbmQgcmVseSBvbiBhbiBleHRlcm5hbCBsaWJyYXJ5IGluc3RlYWQuCgoyMDA1LTA4LTI2IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KCSp1dGlscy9tb3VudGQvbW91bnRkLmM6Cgltb3VudGQgY3VycmVudGx5IGFsd2F5cyByZXR1cm5zIEFVVEhfTlVMTCBhbmQgQVVUSF9TWVMgYXMgdGhlCglhbGxvd2FibGUgZmxhdm9ycyBpbiBtb3VudCByZXBsaWVzLiAgV2Ugd2FudCBpdCB0byBhbHNvIHJldHVybiBnc3MKCWZsYXZvcnMgd2hlbiBhcHByb3ByaWF0ZS4gRm9yIG5vdyBhcyBhIGhhY2sgd2UganVzdCBoYXZlIGl0IGFsd2F5cwoJcmV0dXJuIHRoZSBLUkI1IGZsYXZvcnMgYXMgd2VsbC4gCgoJKnV0aWxzL21vdW50ZC9jYWNoZS5jOgoJCglXaGVuIGF0dGVtcHRpbmcgdG8gbW91bnQgYW4gTkZTdjQgcHNldWRvZmlsZXN5c3RlbSAoZnNpZD0wKSBhbmQgdGhlCglhY3R1YWwgZXhwb3J0ZWQgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0IG9uIHRoZSBzZXJ2ZXIsIHJwYy5tb3VudGQKCWRvZXNuJ3QgY2hlY2sgdGhlIGRpcmVjdG9yeSBleGlzdHMgKHdoZW4gZnNpZHR5cGU9MSwgaS5lLiB1c2luZyBmc2lkLAoJYnV0IGRvZXMgY2hlY2sgZm9yIGZzaWR0eXBlPTAsIGkuZS4gdXNpbmcgZGV2L2lubykuICBUaGUgbm9uLWV4aXN0ZW50CglleHBvcnRlZCBkaXJlY3RvcnkgcGF0aCB3aXRoIGZzaWQ9MCBpcyB3cml0dGVuIHRvIHRoZSBrZXJuZWwgdmlhCgkvcHJvYy9uZXQvcnBjL25mc2QuZXhwb3J0L2NoYW5uZWwsIHdoaWNoIGxlYWRzIHRvIHBhdGhfbG9va3VwKCkgdG8KCXJldHVybiBFTk9FTlQgKHNlZW1zIGFwcHJvcHJpYXRlKS4gIFVuZm9ydHVuYXRlbHksIHRoZSBuZXdfY2FjaGUKCWFwcHJvYWNoIGlnbm9yZXMgZXJyb3JzIHJldHVybmVkIHdoZW4gd3JpdGluZyB2aWEgdGhlIGNoYW5uZWwgZmlsZSBzbwoJdGhhdCBwYXJ0aWN1bGFyIGVycm9yIGlzIGxvc3QgYW5kIHRoZSBtb3VudCByZXF1ZXN0IGlzIHNpbGVudGx5IGlnbm9yZWQuCgkKCUFzc3VtaW5nIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byByZXZhbXAgdGhlIG5ld19jYWNoZS91cC1jYWxsIG1ldGhvZCB0bwoJbm90IGlnbm9yZSByZXR1cm5lZCBlcnJvcnMsIGl0IHNlZW1zIGFwcHJvcHJpYXRlIHRvIGZpeCB0aGUgY2FzZSB3aGVyZQoJcnBjLm1vdW50ZCBkb2Vzbid0IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIGV4cG9ydGVkIGRpcmVjdG9yeSB3aXRoCglmc2lkPSBzZW1hbnRpY3MuICBUaGUgZm9sbG93aW5nIHBhdGNoIGRvZXMgdGhpcyBieSBtb3ZpbmcgdGhlIHN0YXQoKSB1cAoJc28gaXQgaXMgZG9uZSBmb3IgYm90aCBmc2lkdHlwZSdzLiAgSSdtIG5vdCBjZXJ0YWluIHdoZXRoZXIgdGhlIG90aGVyCgl0ZXN0cyBuZWVkIHRvIGJlIGV4ZWN1dGVkIGZvciBmc2lkdHlwZT0xLCBidXQgaXQgZG9lc24ndCBhcHBlYXIgdG8gaHVydAoJW05vdCBleGFjdGx5IHRydWU6IHRoZSBjb21wYXJpc29uIG9mIGlub2RlIG51bWJlcnMgY2F1c2VkIHByb2JsZW1zIHNvCglub3cgaXQncyBrZXB0IGZvciBmc2lkdHlwZT0wIG9ubHldLgoJCglXb3VsZCBpdCBiZSBhbHNvIGRlc2lyYWJsZSB0byBsb2cgYSB3YXJuaW5nIGZvciBldmVyeSBlcnJvciwgaWYgYW55LAoJcmV0dXJuZWQgYnkgYSB3cml0ZSB0byBhbnkgb2YgdGhlIC9wcm9jL25ldC9ycGMvKi9jaGFubmVsIGZpbGVzIHdoaWNoCgl3b3VsZCBvdGhlcndpc2UgYmUgaWdub3JlZCAobWF5YmUgdW5kZXIgYSBkZWJ1ZyBmbGFnKT8KCgkqIGdzc2QvbW91bnRkL3N2Y2dzc2Q6IENoYW5nZXMgZ3NzZCwgc3ZjZ3NzZCwgYW5kIG1vdW50ZCB0byBpZ25vcmUgYQoJU0lHSFVQIHJhdGhlciB0aGFuIGR5aW5nLgoKCSogbWFueTogUmVtb3ZlIHRoZSBnc3NhcGkgY29kZSBhbmQgcmVseSBvbiBhbiBleHRlcm5hbCBsaWJyYXJ5IGluc3RlYWQuCgoyMDA1LTA4LTI2IEtldmluIENvZmZtYW4gPGt3Y0BjaXRpLnVtaWNoLmVkdT4KCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0cy5tYW46IERvY3VtZW50IHRoZSAiY3Jvc3NtbnQiIGV4cG9ydCBleHBvcnQgb3B0aW9uCgkqIHV0aWxzL2dzc2Qva3JiNV91dGlsLmM6IAoJQWRkIGJldHRlciBkZWJ1Z2dpbmcgYW5kIHBhcnRpYWxseSByZXZlcnQgdGhlIGZ1bmN0aW9uCgljaGVjayBmb3IgZ3NzX2tyYjVfY2NhY2hlX25hbWUuCgkKCUZvciBNSVQgS2VyYmVyb3MgcmVsZWFzZXMgdXAgdG8gYW5kIGluY2x1ZGluZyAxLjMuMSwgd2UgKm11c3QqCgl1c2UgdGhlIHJvdXRpbmUgZ3NzX2tyYjVfY2NhY2hlX25hbWUgdG8gZ2V0IHRoZSBLNSBnc3NhcGkgY29kZQoJdG8gdXNlIGEgZGlmZmVyZW50IGNyZWRlbnRpYWxzIGNhY2hlLgoJCglGb3IgcmVsZWFzZXMgMS4zLjIgYW5kIG9uLCB3ZSB3YW50IHRvIHVzZSB0aGUgS1JCNUNDTkFNRQoJZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGVsbCBpdCB3aGF0IHRvIHVzZS4KCShBIHByb2JsZW0gd2FzIHJlcG9ydGVkIHdoZXJlIDEuMy41IHdhcyBiZWluZyB1c2VkLCBvdXIKCWNvZGUgd2FzIHVzaW5nIGdzc19rcmI1X2NjYWNoZV9uYW1lLCBidXQgdGhlIHVuZGVybHlpbmcKCWNvZGUgY29udGludWVkIHRvIHVzZSB0aGUgZmlyc3QgKG9yIGRlZmF1bHQ/KSBjcmVkZW50aWFscwoJY2FjaGUuICBTd2l0Y2hpbmcgdG8gdXNpbmcgdGhlIGVudiB2YXJpYWJsZSBmaXhlZCB0aGUgcHJvYmxlbS4KCUkgY2Fubm90IHJlY3JlYXRlIHRoaXMgcHJvYmxlbS4KCgkqdXRpbHMvZ3NzZC9rcmI1X3V0aWwuYzoKCUFuZHJldyBNYWhvbmUgPGFuZHJldy5tYWhvbmVAZ21haWwuY29tPiByZXBvcnRlZCB0aGF0IHJlaXNlcjQKCWFsd2F5cyBoYXMgRFRfVU5LTk9XTi4gIEhlIHN1cHBsaWVkIHBhdGNoIHRvIG1vdmUgdGhlIGNoZWNrCglmb3IgcmVndWxhciBmaWxlcyBhZnRlciB0aGUgc3RhdCgpIGNhbGwgdG8gY29ycmVjdGx5IGZpbmQKCWNjYWNoZSBmaWxlcyBpbiByZWlzZXI0IGZpbGVzeXN0ZW0uCgkKCUFsc28gY2hhbmdlIHRoZSBuYW1lIGNvbXBhcmlzb24gc28gdGhhdCB0aGUgd3JvbmcgZmlsZSBpcwoJbm90IHNlbGVjdGVkIHdoZW4gdGhlIHN1YnN0cmluZyBjb21wYXJpc29uIGlzIGRvbmUuCgoJKnV0aWxzL2dzc2Qva3JiNV91dGlsLmM6CglMaW1pdCB0aGUgc2V0IG9mIGVuY3J5cHRpb24gdHlwZXMgdGhhdCBjYW4gYmUgbmVnb3RpYXRlZCBieQoJdGhlIEtlcmJlcm9zIGxpYnJhcnkgdG8gdGhvc2UgdGhhdCB0aGUga2VybmVsIGNvZGUgY3VycmVudGx5CglzdXBwb3J0cy4KCQoJVGhpcyBzaG91bGQgZXZlbnR1YWxseSBxdWVyeSB0aGUga2VybmVsIGZvciB0aGUgbGlzdCBvZgoJc3VwcG9ydGVkIGVuY3R5cGVzLgoKCSp1dGlscy9nc3NkL2dzc191dGlsLmMsIHV0aWxzL3N2Y2dzc2Qvc3ZjZ3NzZF9tYWluX2xvb3AuYzoKCVByaW50IG1vcmUgaW5mb3JtYXRpb24gaW4gZXJyb3IgbWVzc2FnZXMgdG8gaGVscCBkZWJ1Z2dpbmcgZmFpbHVyZXMuCgoJKnV0aWxzL3N2Y2dzc2Qvc3ZjZ3NzZF9wcm9jLmM6IEluY3JlYXNlIHRva2VuIGJ1ZmZlciBzaXplIGFuZAoJdXBkYXRlIGVycm9yIGhhbmRsaW5nIHNvIHRoYXQgYSByZXNwb25zZSBpcyBhbHdheXMgc2VudC4KCgkqdXRpbHMvc3ZjZ3NzZC9zdmNnc3NkX3Byb2MuYzogQWRkIHN1cHBvcnQgdG8gcmV0cmlldmUKCXN1cHBsZW1lbnRhcnkgZ3JvdXBzLiAKCQoJCjIwMDUtMDgtMjYgS2V2aW4gQ29mZm1hbiA8a3djQGNpdGkudW1pY2guZWR1PgoJKiBjb25maWd1cmUuaW4gZXRjCglDb25zb2xpZGF0ZSBzb21lIG9mIHRoZSBLZXJiZXJvcyBjaGVja2luZyBpbnN0ZWFkIG9mIHJlcGVhdGluZwoJdGhlIHNhbWUgdGhpbmdzIGZvciBNSVQgYW5kIEhlaW1kYWwuCglBbHNvIGFkZHMgbW9yZSBjaGVja3MgdG8gZGlzdGluZ3Vpc2ggMzItYml0IGZyb20gNjQtYml0CgkobWFpbmx5IGZvciBnc3NhcGkuaCkKCUZpeCBzdmNnc3NkIE1ha2VmaWxlIHNvIG1ha2UgVE9QPS4uLy4uLyB3b3JrcyBjb3JyZWN0bHkgdGhlcmUuCglFbmFibGUgcnVubmluZyBhIG1vZGVybiBhdXRvaGVhZGVyLgoJKiB1dGlscy9nc3NkL2dzc19vaWRzLmM6IFVzZSBjb3JyZWN0IE9JRCB2YWx1ZSBmb3IgU1BLTS0zCgkqIHV0aWxzL2dzc2QvZ3NzX3V0aWwuYzogRml4IGJ1aWxkIHdpdGggb2xkZXIgTUlUIHJlbGVhc2VzIHRoYXQgZG8gbm90IGRlZmluZSBHU1NfQ19OVF9IT1NUQkFTRURfU0VSVklDRQoJKiB1dGlscy9nc3NkL3dyaXRlX2J5dGVzLmgsIHN1cHBvcnQvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpLmg6CglMZW5ndGggb2YgZ3NzX2J1ZmZlcl9kZXNjIGlzIGEgc2l6ZV90IHdoaWNoIGlzIDY0LWJpdHMgb24gYQoJNjQtYml0IG1hY2hpbmUuICBLZXJuZWwgY29kZSBleHBlY3RzIDMyLWJpdCBpbnRlZ2VyIGZvciBsZW5ndGguCglDb2VyY2UgbGVuZ3RoIHZhbHVlIGludG8gYSAzMi1iaXQgdmFsdWUgd2hlbiByZWFkaW5nIGZyb20gb3IKCXdyaXRpbmcgdG8gdGhlIGtlcm5lbC4KCUNoYW5nZSBnc3NhcGkuaCB0byB1c2UgZGF0YXR5cGUgc2l6ZSB2YWx1ZXMgb2J0YWluZWQgZnJvbQoJY29uZmlndXJlIHJhdGhlciB0aGFuIGhhcmQtY29kZWQgdmFsdWVzLgoJKiB1dGlscy9pZG1hcGQvaWRtYXBkLmM6IFRoZSBFVl9JTklUIGNoZWNrIGhlcmUgd2FzIHdyb25nLCBhbmQgd2FzCgljYXVzaW5nIGlkbWFwZCB0byBiZWNvbWUgdW5yZXNwb25zaXZlIHRvIHNlcnZlciByZXF1ZXN0cyBhZnRlcgoJcmVjZWl2aW5nIGEgc2lnaHVwLiAKCSogdXRpbHMvaWRtYXBkL2lkbWFwZC5jOiBJZG1hcGQgc2hvdWxkIGZsdXNoIHRoZSBzZXJ2ZXIgaWQ8LT5uYW1lCgljYWNoZXMgd2hlbiBpdHMgc3RhcnRlZC4gCgoyMDA1LTA0LTEyICBHLiBBbGxlbiBNb3JyaXMgSUlJIDxnYW0zQGdhbTMubmV0PgoKCSogQWxsIE1ha2VmaWxlOiBhZGRlZCBUT1AgYXMgbmVlZGVkIGZvciBlYXNpZXIgY29tcGlsZS4KCgkqIHV0aWxzL25mc3N0YXQvbmZzc3RhdC5jOiBhZGRlZCBORlMgVjQgc3VwcG9ydDsgYWRkZWQgdGhlIC1tCgkgIG9wdGlvbjsgQWRkZWQgLTIsIC0zLCBhbmQgLTQgb3B0aW9uczsgY2hhbmdlZCAtYSBvcHRpb24gdG8gLXYKCSAgb3B0aW9uOyBhZGRlZCBsb25nIG9wdGlvbnM7IGNoYW5nZWQgZGVmYXVsdCBvdXRwdXQgdG8gbm90CgkgIHNob3cgVjIgTkZTIHN0YXRpc3RpY3MgdW5sZXNzIHVzZWQuCgoJKiB1dGlscy9uZnNzdGF0L25mc3N0YXQubWFuOiBEb2N1bWVudGVkIGFib3ZlIGNoYW5nZXM7IGNoYW5nZWQKCSAgYXV0aG9ycyBlbWFpbCBhZGRyZXNzOyBhZGRlZCBCVUdTIHNlY3Rpb24uCgoyMDA1LTA0LTA3ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIGRlYmlhbi9jaGFuZ2Vsb2c6IFZlcnNpb24gMS4wLjctMi4KCjIwMDUtMDQtMDYgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAcG9ib3guY29tPgoKCSogY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViOiBVcGRhdGUuCgoJKiBzdXBwb3J0L3JwYy9zdmNfYXV0aF9nc3MuYyAoX3N2Y2F1dGhfZ3NzKTogQXZvaWQgdXNpbmcgYSBjYXN0IGFzCglhbiBsdmFsdWUsIGFzIGl0IGlzIG5vbi1wb3J0YWJsZS4KCgkqIHN1cHBvcnQvbmZzL2V4cG9ydHMuYyAocGFyc2VvcHRzKTogQWNjZXB0ICJhY2wiIG9wdGlvbiB0byBtZWFuCgl+TkZTRVhQX05PQUNMLCBhbmQgIm5vX2FjbCIgdG8gbWVhbiBORlNFWFBfTk9BQ0wuCgkocHV0ZXhwb3J0ZW50KTogUmVwb3J0IE5GU0VYUF9OT0FDTCBhcyAibm9fYWNsIiwgYW5kIH5ORlNFWFBfTk9BQ0wKCWFzICJhY2wiLgoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jIChkdW1wKTogUmVwb3J0IE5GU0VYUF9OT0FDTCBhcwoJIm5vX2FjbCIuCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydHMubWFuOiBEb2N1bWVudCAibm9fYWNsIi4KCjIwMDUtMDMtMTQgIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoJRGVuaXMgVmxhc2Vua28gPHZkYUBpbHBvcnQuY29tLnVhPgoJKiBzdXBwb3J0L2V4cG9ydC9jbGllbnQuYyhjbGllbnRfaW5pdCBhbmQgY2xpZW50X2dldHR5cGUpOgoJdHJlYXQgTi5OLk4uTiBhcyBhIHNwZWNpYWwgY2FzZSBvZiBNQ0xfU1VCTkVUV09SSyBpbnN0ZWFkIG9mIAoJTUNMX0ZRRE4KCjIwMDUtMDMtMDYgIEcuIEFsbGVuIE1vcnJpcyBJSUkgPGdhbTNAZ2FtMy5uZXQ+CgkqIHN1cHBvcnQvbmZzL2NhY2hlaW8uYyhyZWFkbGluZSk6IENvdWxkIG5vdCByZWFkIGxpbmVzIGdyZWF0ZXIKCXRoYW4gMTI4IGJ5dGVzLiBbMTE1Nzc5MV0gCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydHMubWFuOiBBZGRlZCBhIFNFRSBBTFNPIHNlY3Rpb24gYW5kCglmaXhlZCAyIHR5cG9zLiBbMTAxODQ1MF0KCjIwMDUtMDItMjggIFRyb25kIE15a2xlYnVzdCA8dHJvbmQubXlrbGVidXN0QGZ5cy51aW8ubm8+CgkqIHV0aWxzL3N0YXRkL3JtdGNhbGwuYyhzdGF0ZF9nZXRfc29ja2V0KTogSWYgYSBwb3J0IG51bWJlciBpcwoJZXhwbGljaXRseSBnaXZlbiwgbWFrZSBzdXJlIHRvIHRyeSB0byBiaW5kIHRvIHRoYXQuCgkKMjAwNS0wMS0xMSAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC43LTEuCgkqIGRlYmlhbi9uZnMtY29tbW9uLmRlZmF1bHQgKE5FRURfSURNQVBELCBORUVEX0dTU0QpOgoJRGlzYWJsZSBieSBkZWZhdWx0LCBvbiBhZHZpY2Ugb2YgdXBzdHJlYW0uCgkqIGRlYmlhbi9uZnMta2VybmVsLXNlcnZlci5kZWZhdWx0IChORUVEX1NWQ0dTU0QpOgoJTGlrZXdpc2UuCgoJKiB1dGlscy9zdmNnc3NkL01ha2VmaWxlIChwcmVkZXApOiBTeW1ib2xpY2FsbHkgbGluayBkdXBsaWNhdGVkCglzb3VyY2UgZmlsZXMuCgkoZGlzdGNsZWFuKTogUmVtb3ZlIHN5bWxpbmtzIHRvIGR1cGxpY2F0ZWQgZmlsZXMuCgoyMDA0LTEyLTE3IE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoJUmVsZWFzZSAxLjAuNwoKCSogY29uZmlnLm1rLCBjb25maWd1cmUuaW46IHVwZGF0ZSB2ZXJzaW9uIG51bWJlciwgcnVuIGF1dG9jb25mCgkqIGNvbmZpZ3VyZS5pbjogcmVxdWlyZSBuZnNpZG1hcC5oIGlmIGdzcyBpcyBlbmFibGVkLgoJCjIwMDQtMTItMTAgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CglSZWxlYXNlIDEuMC43LXByZTIKCQoJKiBjb25maWcubWssIGNvbmZpZ3VyZS5pbjogdXBkYXRlIHZlcnNpb24gbnVtYmVyLCBydW4gYXV0b2NvbmYKCQoyMDA0LTEyLTEwIE5laWwgQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCSogUkVBRE1FIDogbm90ZSBkZXBlbmRhbmN5IG9uIGtlcmJlcm9zLCBsaWJldmVudCwgYW5kIG5mc2lkbWFwCgkqIGNvbmZpZ3VyZS5pbiA6IGZhaWwgaWYgLS1lbmFibGUtbmZzdjQgYW5kIGxpYmV2ZW50IG9yCglsaWJuZnNpZG1hcCBhcmUgbWlzc2luZy4KCSogY29uZmlndXlyZS5pbjogaW1wcm92ZSBtZXNzYWdlIGlmIGtyYjUgc3VwcG9ydCBpcyBtaXNzaW5nCgkKMjAwNC0xMi0wNiBQYXVsIENsZW1lbnRzIDxwYXVsLmNsZW1lbnRzQHN0ZWVsZXllLmNvbT4JCgkqIHN1cHBvcnQvaW5jbHVkZS9oYS1jYWxsb3V0Lmg6IGdldCByZXR1cm4gc3RhdHVzIGZyb20gd2FpdHBpZAoJY29ycmVjdGx5LiAKCSogc3VwcG9ydC9pbmNsdWRlL2hhLWNhbGxvdXQuaDogZG9uJ3QgaWdub3JlIFNJR0NITEQgd2hpbGUgd2FpdGluZwoJZm9yIGEgY2FsbG91dCB0byBjb21wbGV0ZS4KCSogdXRpbHMvc3RhdGQvc3RhdGQuYyhzaWd1c3IpOiBwcmludCBjdXJyZW50IHN0YXJ0IHdoZW4gcmUtcmVhZGluZwoJbm90aWZ5IGxpc3QgZHVlIHRvIFNJR1VTUjEKCSogdXRpbHMvc3RhdGQvc3ZjX3J1bi5jKG15X3N2Y19ydW4pOiBjYWxsIGNoYW5nZV9zdGF0ZSB3aGVuCglyZS1ub3RpZnlpbmcgY2xpZW50cy4KCQoyMDA0LTEyLTA2IE1hcmMgRXNoZWwgPGVzaGVsQGFsbWFkZW4uaWJtLmNvbT4KCSogdXRpbHMvc3RhdGQvc3ZjX3J1bi5jKG15X3N2Y19ydW4pOiBhbGxvdyBsb29wIHRvIGV4aXQgd2hlbiBpbgoJTU9ERV9OT1RJRllfT05MWQoJKnV0aWxzL3N0YXRkL3JtdGNhbGwuYyhzdGF0ZF9nZXRfc29ja2V0KTogaWYgYSBob3N0bmFtZSBpcyBnaXZlbgoJdG8gc3RhdGQgd2l0aCAtbiwgcHJlZmVyIGl0J3MgSVAgYWRkcmVzcyB0byB0aGUgZGVmYXVsdCBmb3IKCWxpc3RlbmluZyBvbi4KCQoyMDA0LTEyLTA2IEJydWNlIEFsbGFuIDxid2FAdXMuaWJtLmNvbT4KCSogdXRpbHMvbW91bnRkL2F1dGguYyhhdXRoX3JlbG9hZCkgIENsZWFyIHRoZSAibXlfY2xpZW50IiBjYWNoZSBvbgoJYW4gYXV0aF9yZWxvYWQgdG8gYXZvaWQgb2xkIGRhdGEgZ2V0dGluZyB1c2VkLgoJCjIwMDQtMTItMDMgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CglSZWxlYXNlIDEuMC43LXByZTEgZm9yIHRlc3RpbmcKCQoJKiBjb25maWcubWssIGNvbmZpZ3VyZS5pbjogdXBkYXRlIHZlcnNpb24gbnVtYmVyLCBydW4gYXV0b2NvbmYKCQoyMDA0LTEyLTAzIFRyb25kIE15a2xlYnVzdCA8dHJvbmQubXlrbGVidXN0QGZ5cy51aW8ubm8+CgoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jKG1haW4pOiBpZ25vcmUgU0lHUElQRQoJCjIwMDQtMTEtMjIgIkouIEJydWNlIEZpZWxkcyIgPGJmaWVsZHNAZmllbGRzZXMub3JnPgoKCSogdG9vbHMvcnBjZGVidWcvcnBjZGVidWcuYzogc3VwcG9ydCBhbGlhc2VzICJuZnNkZWJ1ZyIgYW5kCgkibmZzZGRlYnVnIiBhbmQgdXBkYXRlIGZsYWcgbmFtZXMuCgkqIGNvbmZpZ3VyZS5pbiwgbm9kaXN0LyogcmVkaGF0LyogbmZzLXV0aWxzLnNwZWMqOiByZW1vdmUgcmVkaGF0CglzcGVjaWZpYyBmaWxlcyAoYXMgbm8tb25lIGFjdHVhbGx5IHVzZXMgdGhlbSwgZXNwZWNpYWxseSBub3QKCXJlZGhhdCksIGFuZCB0aGUgbm9kaXN0IC9ldGMgZmlsZXMgKGFzIHRoZXkgZHJpZnQgb3V0LW9mLWRhdGUsIGFuZAoJdGhlIGRlYmlhbiBkaXJlY3RvcnkgcHJvdmlkZXMgYSBzdWl0YWJsZSBleGFtcGxlLgoJKiB1dGlscy9zdmNnc3NkX3Byb2MuYyhnZXRfaWRzKTogZml4IG1lbW9yeSBsZWFrCgkqIHV0aWxzL3N2Y2dzc2Qvc3ZjZ3NzZF9wcm9jLmM6IFJlbHkgb24gY291bnQgb2YgdGhlIG51bWJlciBvZgoJZ3JvdXBzIGluc3RlYWQgb2YgdXNpbmcgYSBzcGVjaWFsIGd1YXJkIHZhbHVlIHRvIGlkZW50aWZ5IHRoZSBlbmQKCW9mIHRoZSBsaXN0LiAKCSogdXRpbHMvaWRtYXBkL2lkbWFwZC5jOiBkb24ndCBhbGxvdyBEZWZhdWx0IGRvbWFpbiBhbmQgYW5vbi11aWQKCW9yIC1naWQgdG8gYmUgc3BlY2lmaWVkIG9uIGNvbW1hbmQgbGluZS4KCSogdXRpbHMvaWRtYXBkL2lkbWFwZC5jOiBpbXByb3ZlIGVycm9yIG1lc3NhZ2VzCgkqIHV0aWxzL2lkbWFwZC9pZG1hcGQuYzogUmVvcGVuIG5mc2QgZmlsZXMgb24gc2lnaHVwLiAgQWxsb3dzIHVzCgl0byBzdGFydCB1cCBjbGllbnQgc2lkZSBvbmx5IChldmVuIHdoZW4gbmZzZCBtb2R1bGUgbm90IGxvYWRlZCksCglhbmQgdGhlbiBzaWdodXAgbGF0ZXIgYWZ0ZXIgaW5zbW9kZGluZyBuZnNkIG1vZHVsZS4gCgkqIHV0aWxzL2lkbWFwZC9pZG1hcGQuYzogTWFrZSBzdXJlIHdlIGNhdGNoIGFsbCBlcnJvcnMgb24KCWRhZW1vbml6aW5nIGJ5IHdhaXRpbmcgZm9yIGNoaWxkIHRvIHJlcG9ydCBzdWNjZXNmdWxsIHN0YXJ0dXAKCXVzaW5nIGEgcGlwZS4gCgkqIHV0aWxzL2lkbWFwZC9pZG1hcGQuYzogTGV0IGxpYm5mc2lkbWFwZCBwYXJzZSB0aGUgaWRtYXBkLmNvbmYKCWZpbGUgZm9yIHRoZSBkZWZhdWx0IGRvbWFpbiwgaW5zdGVhZCBvZiBkb2luZyB0aGF0IG91cnNlbHZlcy4KCSogdXRpbHMvZ3NzZC9nc3NkX3Byb2MuYzogTWFrZSBzdXJlIHdlIGdldCBhbiBlcnJvciB3aGVuIGEgZ3NzZAoJZG93bmNhbGwgZmFpbHMuIAoJKiB1dGlscy9nc3NkL2dzc2RfcHJvYy5jOiBXZSB3ZXJlIGZvcmdldHRpbmcgdG8gcmVzdG9yZSB0aGUgZXVpZAoJb24gY2VydGFpbiBmYWlsdXJlcywgd2hpY2ggbWVhbnQgZ3NzZCBjb3VsZCBnZXQgc3R1Y2sgaW4gYSBzdGF0ZQoJd2hlcmUgaXQgZGlkbid0IGhhdmUgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgZmlsZXMgaW4gcnBjX3BpcGVmcwoJdGhhdCBpdCBuZWVkZWQgdG8uIAoJKiB1dGlscy9nc3NkL2dzc2RfcHJvYy5jOiBVc2UgbGlibmZzaWRtYXBkIHRvIG1hcCBnc3MgcHJpbmNpcGFscwoJdG8gdWlkcy4gCgkqIGRlYmlhbi9uZnMta2VybmVsLXNlcnZlci5kZWZhdWx0OiBEb2N1bWVudCB0aGUgTkVFRF9TVkNHU1NECgl2YXJpYWJsZSBpbiAvZXRjL2RlZmF1bHQvbmZzLWtlcm5lbC1zZXJ2ZXIuIAoKCQoyMDA0LTExLTIyIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogdXRpbHMvZXhwb3J0ZnMvbmZzZC5tYW46IGNvcnJlY3RlZCB0eXBvIGluIC5CUiBtYWNybyB1c2FnZSAtCglyZXBvcnRlZCBieSBFcmljIFJheW1vbmQKCQoyMDA0LTEwLTE5ICJKLiBCcnVjZSBGaWVsZHMiIDxiZmllbGRzQGZpZWxkc2VzLm9yZz4KCgkqIHN1cHBvcnQvZ3NzYXBpLyogc3VwcG9ydC9ycGMvKiB1dGlscy9nc3NkLyogdXRpbHMvc3ZjZ3NzZC8qIGV0YwoJaW5pdGlhbCBzdXBwb3J0IGZvciBHU1NBUEkgYXV0aGVudGljYXRpb24KCQoyMDA0LTA5LTE1IE5laWwgQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHV0aWxzL3N0YXRkL21vbml0b3IuYyhzbV91bm1vbl8xX3N2Yyk6IGlzIFJFU1RSSUNURURfU1RBVEQsIHRoZW4KCWNoZWNrIElQIGFkZHJlc3MgYW5kIGZvcmNlIG15X25hbWUgdG8gMTI3LjAuMC4xIHRvIG1hdGNoIAoJd2hhdCBoYXBwZW5zIGluIHNtX21vbl8xX3N2Yy4gIFRoaXMgYXZvaWQgc3B1cmlvdXMgImVycm9uZW91cwoJU01fVU5NT04iIG1lc3NhZ2VzLgoJKiB1dGlscy9zdGF0ZC5tb25pdG9yLmMoc21fdW5tb25fYWxsXzFfc3ZjKTogbGlrZXdpc2UKCQoyMDA0LTA5LTE1ICJKLiBCcnVjZSBGaWVsZHMiIDxiZmllbGRzQGZpZWxkc2VzLm9yZz4JCgoJKiBBc3NvcnRlZCBjaGFuZ2VzIHRvIHN1cHBvcnQgImdzcy8qIiBzdHlsZSBhdXRoZW50aWNhdGlvbgoJKiB1dGlscy9pZG1hcGQ6IG5ldyBpZG1hcGQgZGFlbW9uIGZvciBuZnN2NCB1c2VybmFtZSBsb29rdXAKCQoyMDA0LTA5LTA2IFRyb25kIE15a2xlYnVzdCA8dHJvbmQubXlrbGVidXN0QGZ5cy51aW8ubm8+CglOZWlsIEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiB1dGlscy9tb3VudGQvYXV0aC5jKGF1dGhfYXV0aGVudGljYXRlX2ludGVybmFsKTogZml4Cgl1bmluaXRpYWxzZWQgdmFyaWFibGUgcHJvYmxlbSAoY2F1c2VzIGJhZCBlcnJvciBtZXNzYWdlcykuCgoyMDA0LTA5LTA2IFBhdWwgQ2xlbWVudHMgPHBhdWwuY2xlbWVudHNAc3RlZWxleWUuY29tPgoJTmVpbCBCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jKG1haW4pOiBzdXBwb3J0IC0taGEtY2FsbG91dCAoLUgpIGZvcgoJc3BlY2lmeWluZyBhIGNhbGxvdXQgcHJvZ3JhbQoJKiB1dGlscy9tb3VudGQvcm10YWIuYzogQ2FsbCBoYV9jYWxsb3V0IG9uIG1vdW50L3VubW91bnQKCSogdXRpbHMvc3RhdGQvbW9uaXRvci5jOiBDYWxsIGhhX2NhbGxvdXQgb24gYWRkL2RlbCBjbGllbnQKCSogdXRpbHMvc3RhdGQvcm10Y2FsbC5jOiBhcyBhYm92ZQoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jOiBoYW5kbGUgLS1oYS1jYWxsb3V0ICgtSCkKCSogdXRpbHMvc3RhdGQvc3ZjX3J1bi5jOiBjYWxsIG5vdGlmeV9ob3N0cyBpcyB3ZSBoYXZlIHJlY2VpdmVkIGEKCXNpZ2h1cAoJKiBzdXBwb3J0L2luY2x1ZGUvaGEtY2FsbG91dC5oOiBkZWZpbmUgaGFfY2FsbG91dCBmdW5jdGlvbgoJIAoJCjIwMDQtMDgtMzEgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgkqIHV0aWxzL21vdW50ZC9jYWNoZS5jKGNhY2hlX3Byb2Nlc3NfcmVxKTogY2xlYXIgZmQgYWZ0ZXIKCXByb2Nlc3Npbmcgc28gYXMgbm90IHRvIGNvbmZ1c2VkIGxpYmMvc3VucnBjIGludG8gdGhpbmtpbmcKCWl0IG5lZWQgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhhdCBmZC4KCQoyMDA0LTA4LTMxIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogZGViaWFuL25mcy1rZXJuZWwtc2VydmVyLmluaXQoc3RhcnQsc3RvcCkgbW91bnQgdGhlIG5mc2QKCWZpbGVzeXN0ZW0sIGlmIGF2YWlsYWJsZSwgYmVmb3JlIHN0YXJ0aW5nIG5mcyBzZXJ2aWNlcywgYW5kIAoJdW5tb3VudCBpdCBhZnRlcndhcmRzLgoJKiBldGMvbm9kaXN0L25mcy1zZXJ2ZXI6IGRpdHRvCgkqIGV0Yy9yZWRoYXQvbmZzLmluaXQ6IGxpa2V3aXNlCgkqIGV0Yy9yZWRoYXQvbmZzOiBhZGQgIk1PVU5UX05GU0QiIGZsYWcgdG8gY29udHJvbCBhYm92ZS4KCQoyMDA0LTA2LTA4IE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYzogRG9uJ3Qgcm10YWJfcmVhZCBpZiBuZXdfY2FjaGUsIGl0CgkgIGlzbid0IG5lY2Vzc2FyeS4KCSogc3VwcG9ydC9uZnMvY2FjaGVpby5jKGNhY2hlX2ZsdXNoKTogQ2hhbmdlIG9yZGVyIGluIHdoaWNoIGNhY2hlcwoJICBhcmUgZmx1c2hlZCBzbyB0aGF0IGRlcGVuZGFuY2llcyBkb24ndCBrZWVwIHRoaW5ncyBpbiB0aGUgY2FjaGUKCSAgdG9vIGxvbmcuCgkKMjAwNC0wMy0xOCAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC42LTIuCgoyMDA0LTAyLTI0IE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoJZnJvbSAiSi4gQnJ1Y2UgRmllbGRzIiA8YmZpZWxkc0BmaWVsZHNlcy5vcmc+CgoJKiB1dGlscy9tb3VudGQvY2FjaGUuYzogY2FsbCBhdXRoX3JlbG9hZCB0byBtYWtlIHN1cmUgYXV0aCBkYXRhIGlzCgljdXJyZW50IGJlZm9yZSByZXNwb25kaW5nIHRvIGtlcm5lbCB1cGNhbGwuCgkKMjAwNC0wMi0yNCBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCUJhc2VkIG9uIHBhdGNoIGZyb20gIEdyZWcgQmFua3MgPGduYkBtZWxib3VybmUuc2dpLmNvbT4KCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydHMubWFuOiBEb2N1bWVudCBmc2lkPSBvcHRpb24uCgkKMjAwMy0wOS0xNSBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCglSZWxlYXNlIDEuMC42CgoJKiBydWxlcy5tazogQWRkIGRlcDogcnVsZSB3aGVuIG5vIE9CSlMsIHNvICJtYWtlIGRlcCIgd29ya3MgaW4KCXN1cHBvcnQvaW5jbHVkZSwgYW5kIGRlcGVuZCBpbiAicHJlZGVwIgoJKiBzdXBwb3J0L2V4cG9ydC9NYWtlZmlsZSwgdG9vbHMvcnBjZ2VuL01ha2VmaWxlLAoJdXRpbHMvc3RhdGQvTWFrZWZpbGU6IGFkZCAicHJlZGVwIiBydWxlIHNvIHRoYXQgIm1ha2UgZGVwIiB3b3Jrcy4KCSogTWFrZWZpbGU6IGFsbG93IGEgc2ltcGxlICJtYWtlIiB0byBydW4gLi9jb25maWd1cmUgYW5kICJtYWtlIGRlcCIKCWlmIG5lZWRlZC4KCSogY29uZmlndXJlLmluLCBuZnMtdXRpbHMuc3BlYzogVXBkYXRlIHZlcnNpb24gdG8gMS4wLjYKCSogcnVuIGF1dG9jb25mCgkKMjAwMy0wOS0xMiAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC42LTEuCgoyMDAzLTA5LTEyIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jKG1haW4pOiBJbXBvc2UgRkRfU0VUU0laRSBhcyBhbiB1cHBlciBsaW1pdAoJZm9yIFJMSU1JVF9OT0ZJTEUKCSogdXRpbHMvc3RhdGQvc3RhdGQuYyhtYWluKTogRGl0dG8uCgoJICAgbWljaGFlbCA8bWljaGFlbEBuZXdkcmVhbS5uZXQ+IGRpc2NvdmVyZWQgdGhhdCBzdmNfc2V0cmVxc2l6ZQoJICAgaW4gZ2xpYmMgY2FuIHNlZ2ZhdWx0IGlmIFJMSU1JVF9OT0ZJTEUgaXMgYmlnZ2VyIHRoYW4KCSAgIEZEX1NFVFNJWkUsIHNvIGEgc2ltcGxlIHNvbHV0aW9uIGlzIHRvIGltcG9zZSBhIGhhcmQgbGltaXQuCgoyMDAzLTA5LTA5ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIGRlYmlhbi9jaGFuZ2Vsb2c6IFZlcnNpb24gMS4wLjUtMy4KCSogc3VwcG9ydC9leHBvcnQvaG9zdG5hbWUuYyAoZ2V0X3JlbGlhYmxlX2hvc3RieWFkZHIpOiBGaXggY3Jhc2gKCW9uIGludmFsaWQgcmV2ZXJzZSBETlMuCgkqIHV0aWxzL3Nob3dtb3VudC9zaG93bW91bnQuYyAobWFpbik6IEZpeCBpbmV0X250b2EoKSBwYXJhbWV0ZXIuCgkqIHRvb2xzL3JwY2dlbi9ycGNfY291dC5jIChwcmludF9oZWFkZXIpOiBSZW1vdmUgdW51c2VkIHZhcnMuCgkqIHRvb2xzL3JwY2dlbi9ycGNfcGFyc2UuYyAoZGVmX3VuaW9uKTogTGlrZXdpc2UuCgoyMDAzLTA4LTIyICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIHV0aWxzL3N0YXRkL3tsb2cuaCxsb2cuY306IFJlbmFtZSBsb2coKSB0byBub3RlKCkgYW5kIExfKiB0bwoJTl8qLCB0byBhdm9pZCBjb25mbGljdCB3aXRoIElTTyBDIGJ1aWx0LWluIGxvZygpIGZ1bmN0aW9uLgoJKiB1dGlscy9zdGF0ZC8qLmM6IFVzZSBub3RlKCkuCgoyMDAzLTA4LTIwICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIGRlYmlhbi9jaGFuZ2Vsb2c6IFZlcnNpb24gMS4wLjUtMi4KCjIwMDMtMDgtMTEgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiB1dGlscy9tb3VudGQvY2FjaGUuYyhjYWNoZV9nZXRfZmlsZWhhbmRsZSk6IGNsb3NlIHRoZSBmaWxlaGFuZGxlCgliZWZvcmUgcmV0dXJuaW5nLgoJCjIwMDMtMDgtMDQgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2luY2x1ZGUvbmZzL2V4cG9ydC5oLCBzdXBwb3J0L25mcy9leHBvcnRzLmMsCgl1dGlscy9leHBvcnRmcy9leHBvcnRzLmMsIHV0aWxzL21vdW50ZC9tb3VudGQuYzogIGNoYW5nZQoJTkZTRVhQX0NST1NTTU5UIHRvIE5GU0VYUF9DUk9TU01PVU5UIHRvIGF2b2lkIGNvbmZ1c2lvbiB3aXRoIG9sZGVyCgltZWFuaW5nLiBBbHNvIHJlbW92ZSBtZWFuaW5nbGVzcwoJTkZTRVhQX3tVSURNQVAsS0VSQkVST1MsU1VOU0VDVVJFfQoJCjIwMDMtMDgtMDQgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2V4cG9ydC94dGFiLmMsIHN1cHBvcnQvaW5jbHVkZS9uZnNsaWIuaCwKCXN1cHBvcnQvbmZzL2NhY2hlaW8uYywgc3VwcG9ydC9uZnMvbmZzc3ZjLmMsCgl1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jLCB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5tYW4sCgl1dGlscy9leHBvcnRmcy9uZnNkLm1hbiwgdXRpbHMvbW91bnRkL2NhY2hlLmM6IHN1cHBvcnQKCS9wcm9jL2ZzL25mc2QvKiBhcyBhIHBlcmZlcnJlZCBhbHRlcm5hdGUgdG8gL3Byb2MvZnMvbmZzLyoKCShuZnMtdXRpbHMtMS4wLjUtcG9zdDIpCgkKMjAwMy0wOC0wNCBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHN1cHBvcnQvbmZzL25mc2V4cG9ydC5jOiBvcGVuIGNoYW5uZWwgZmlsZSBPX1dST05MWSB3aGVuCglvbmx5IHdyaXRpbmcuCgkqIHV0aWxzL21vdW50ZC9jYWNoZS5jOiBtYWludGFpbiBtb3VudGxpc3Qgd2hlbiBuZXdfY2FjaGUgaXMKCWFjdGl2ZS4gQWxzbyB1c2UgT19XUk9OTFkgZm9yIGNoYW5uZWwgZmlsZXMuCgkqIHV0aWxzL21vdW50ZC9tb3VudGQuaDogbW91bnRsaXN0X3tkZWwsYWRkfSBub3cgdGFrZSBhIGhvc3QgbmFtZQoJcmF0aGVyIHRoYW4gYW4gbmZzX2V4cG9ydC4KCSogdXRpbHMvbW91bnRkL3JtdGFiLmM6IGRpdHRvLgoJKG5mcy11dGlscy0xLjUuMC1wb3N0MSkKCQoyMDAzLTA3LTI0ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIHN1cHBvcnQvbmZzL3hsb2cuYyAoeGxvZyk6IFJldmlzZSBidWZmZXItb3ZlcmZsb3cgZml4IHRvCgl1c2UgRGViaWFuIHNlY3VyaXR5IHRlYW0ncyBjbGVhbmVyIGFwcHJvYWNoLgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC41LTEuCgkqIGRlYmlhbi9uZnMta2VybmVsLXNlcnZlci5pbml0OiBDb3NtZXRpYyBjaGFuZ2VzLgoKMjAwMy0wNy0xOCBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCglSZWxlYXNlIDEuMC41OgoJIDEuMC40IHdhcyBhIGJpdCBvZiBhIGJyb3duLXBhcGVyLWJhZy1yZWxlYXNlIGJlY2F1c2Ugb2YgdGhlIGV4dHJhCgkgJ2ZyZWUnIGluIGF1dGguYy4gIFNvIEknbSByZWxlYXNpbmcgdGhpcyBqdXN0IGEgZmV3IGRheXMgbGF0ZXIuCgoJKiBzdXBwb3J0L25mcy9jYWNoZWlvLmMoY2FjaGVfZmx1c2gpOiBDb3JyZWN0IHRlc3QgZm9yICdvcGVuCglmYWlsZWQnCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMobWFpbik6IElmICItZiIgZ2l2ZW4gYXMgbG9uZSBvcHRpb24sCgljaGVjayBpZiBuZXdfY2FjaGUgaXMgZW5hYmxlZCwgZXJyb3IgaWYgbm90LCBmbHVzaCBhbmQgZXhpdCBpZiBpdAoJaXMuIAoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5tYW46IEV4cGxhaW4gLWYgb3B0aW9uIGFuZCBleHBsYWluIHRoZQoJdHdvIGRpZmZlcmVudCBtb2RlcyB0aGF0IGV4cG9ydGZzIGNhbiB3b3JrIGluLgoJKiB1dGlscy9tb3VudGQvbW91bnRkLmM6IERvIG5vdCBjaGFuZ2UgUkxJTUlUX05PRklMRSBpZiB0aGUgLW8KCW9wdGlvbiB3YXNuJ3QgZ2l2ZW4uCgkqIHV0aWxzL21vdW50ZC9tb3VudGQubWFuOiBSZWNvcmQgdGhlIGNoYW5nZSBpZiBkZWZhdWx0IGJlaGF2aW91cgoJZm9yIFJMSU1JVF9OT0ZJTEUuCgkqIGNvbmZpZ3VyZS5pbiwgbmZzLXV0aWxzLnNwZWM6IHVwZGF0ZSB2ZXJzaW9uIHRvIDEuMC41IGFuZAoJcnVuIGF1dG9jb25mCgkKMjAwMy0wNy0xNSBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHV0aWxzL21vdW50ZC9tb3VudGQuYyhtYWluKTogZ2V0b3B0IHN0cmluZyBmaXggZm9yICdvJwoJKiB1dGlscy9tb3VudGQvYXV0aC5jKGF1dGhfYXV0aGVudGljYXRlKTogcmVtb3ZlIGV4dHJhICdmcmVlJwoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jKG1haW4pOiBtYWtlICdleHBvcnRmcyAtZicganVzdCBmbHVzaAoJdGhlIGNhY2hlcy4KCSogc3VwcG9ydC9pbmNsdWRlL25mcy9leHBvcnQuaDogUmVzZXJ2ZSBhIGJpdCBmb3IgcG9zc2libGUgQUNMCglyZWxhdGVkIHVzZS4KCQoyMDAzLTA3LTAzIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogdXRpbHMvZXhwb3J0ZnMvbmZzZC5tYW46IG5ldyBtYW4gcGFnZSBmb3IgbmZzZCBmaWxlc3lzdGVtLiBBbHNvCglhc3NvcnRlZCBjaGFuZ2VkIHRvIGNvcGUgd2l0aCBzZWN0aW9uIDcgb2YgdGhlIG1hbnVhbC4KCSogY29uZmlndXJlLmluLCBuZnMtdXRpbHMuc3BlYzogVXBkYXRlIHZlcnNpb24gdG8gMS4wLjQKCSogcnVuIGF1dG9jb25mCgoJVGhpcyBpcyBhICdwcmUtcmVsZWFzZScgZm9yIDEuMS4wICBIb3BlZnVsbHkgMS4xLjAgd2lsbCBiZSB0aGUKCWJhc2VsaW5lIGZvciAyLjYgYW5kIDIuOC4gIEkuZS4gaXQgc2hvdWxkIGNvbnRpbnVlIHRvIHdvcmsgcmlnaHQKCXRocm91Z2ggdGhlIDIuOCAob3IgMy4wKSBrZXJuZWwgc2VyaWVzLiAgUHJldmlvdXMgcmVsZWFzZXMgd29udC4KCjIwMDMtMDctMDQgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CQoJU3RldmUgRGlja3NvbiA8U3RldmVEQHJlZGhhdC5jb20+CgoJc3RhdGQgY2xlYW51cDoKCSogdXRpbHMvc3RhdGQvc3RhdGQuYzogY3JlYXRlIGEgcGlkZmlsZSB3aXRoIHBpZCBvZiBzdGF0ZCwgYW5kCgl0cnVuY2F0ZSBpdCB3aGVuIHN0YXRkIGV4aXN0cy4KCSogdXRpbHMvc3RhdGQvc3RhdGQuYzogZHJvcCBwcml2cyBieSBzZXR1aWQgdG8gb3duZXIgb2YgU01fRElSLAoJYW5kIHdhcm4gaWYgdGhpcyBpcyByb290LgoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jOiB3aGVuIHN0YXRkIGZvcmtzLCBjb25uZWN0IGNoaWxkIHRvIHBhcmVudAoJd2l0aCBhIHBpcGUsIGFuZCBzZW5kIGEgYnl0ZSBkb3duIHRoZSBwaXBlIG9uY2UgdGhlIGNoaWxkIGlzCgl3b3JraW5nIHByb3Blcmx5LgoJKiBNYWtlZmlsZTogY3JlYXRlIGFuZCBjaG93biBzbSwgc20uYmFrLCBzdGF0ZSB3aGVuICJtYWtlIGluc3RhbGwiCgkqIGNvbmZpZ3VyZS5pbjogYWRkIC0td2l0aC1zdGF0ZHVzZXI9IG9wdGlvbiB3aGljaCBkZWZhdWx0cyB0bwoJInJwY3VzZXIiIG9yICJub2JvZHkiCgkqIGNvbmZpZy5tay5pbjogcGFzcyAic3RhdGR1c2VyIiB0aHJvdWdoIHRvIE1ha2VmaWxlCgkKMjAwMy0wNy0wMyBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHN1cHBvcnQvaW5jbHVkZS9uZnMvbmZzLmg6IE1ha2Ugc3VyZSBjb3JyZWN0IF9fa2VybmVsX2Rldl90IGlzCgl1c2VkIGFzIHRoZSBzaXplIHdhcyBjaGFuZ2VkIHNvbWV3aGVyZSBpbiAyLjUuNjAtMi41LjcwLiAgV2l0aG91dAoJdGhpcyBuZnMtdXRpbHMgY29tcGlsZXMgYWdhaW5zdCAyLjYgaGVhZGVycyB3aWxsIG5vdCB3b3JrIG9uIGEKCTIuNCBrZXJuZWwuCQoJCjIwMDMtMDctMDMgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L25mcy9uZnNzdmMuYyhuZnNzdmMpOiBJZiAvcHJvYy9mcy9uZnMvdGhyZWFkcyBleGlzdHMsCglzZXQgbnVtYmVyIG9mIHRocmVhZHMgYnkgd3JpdGluZyB0byB0aGVyZS4gIFRoaXMgbWVhbnMgaXQgd2lsbAoJc3RpbGwgd29yayB3aGVuIHRoZSBzeXNjYWxsIGludGVyZmFjZSBnb2VzIGF3YXkgaW4gMi43LgoKMjAwMy0wNy0wMyBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCWZ1bWloaWtvIGtha3VtYSA8a2FrbXlAbXZoLmJpZ2xvYmUubmUuanA+CgoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jKHVuZXhwb3J0ZnMpOiBpbXByb3ZlIGhvc3QgY29tcGFyaXNvbgoJc28gYXMgdG8gb25seSBleHBvcnQgdGhlIHdpbGRjYXJkIGV4cG9ydHMgdGhhdCB3ZXJlIGFza2VkIGZvci4KCSogc3VwcG9ydC9leHBvcnQvZXhwb3J0LmMoZXhwb3J0X2FsbG93ZWQpOiBjaGFuZ2VkIHRvIHJldHVybiB0aGUKCW5mc19leHBvcnQgcmF0aGVyIHRoYW4gYSAic3RydWN0IGV4cG9ydGVudCIsIGFzIG1fY2hhbmdlZCBpcwoJbmVlZGVkIGJ5IGNhbGxlZAoJKiBzdXBwb3J0L2V4cG9ydC9ybXRhYi5jKHJtdGFiX3JlYWQpOiBtb2RpZmllZCB0byBkZWFsIHdpdGgKCWludGVyZmFjZSBjaGFuZ2UgZm9yIGV4cG9ydF9hbGxvd2VkKCksIGFuZCBlbmhhbmNlZCB0byBwcmVzZXJ2ZQoJbV9jaGFuZ2VkIGZsYWcgd2hlbiBhIHdpbGQtY2FyZCBleHBvcnQgY2F1c2VzIHRoZSBjcmVhdGlvbiBvZgoJYSBub24td2lsZGNhcmQgZXhwb3J0LgoJCjIwMDMtMDctMDIgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CglTdGV2ZSBEaWNrc29uIDxTdGV2ZURAcmVkaGF0LmNvbT4KCgkqIHV0aWxzL21vdW50ZC9tb3VudGQubWFuOiBBZGQgdmFsaWQga2luZHMgb2YgZGVidWdnaW5nLgoJKiB1dGlscy9tb3VudGQvbW91bnRkLmMobWFpbik6IGlnbm9yZSBTSUdQSVBFCgkqIHV0aWxzL25mc3N0YXQvbmZzc3RhdC5jOiBmaW5lLXR1bmUgcHJpbnRpbmcgb2Ygd2FybmluZyBzbwoJd2UgZG9uJ3QgZ2V0IHdhcm5pbmdzIGFib3V0IHVuYXZhaWxhYmxlIHN0YXRzIHRoYXQgd2VyZW4ndCBhc2tlZAoJZm9yLgoJCjIwMDMtMDYtMjQgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L25mcy9uZnNleHBvcnQuYyhleHBfdW5leHApOiBXaGVuIHVuZXhwb3J0aW5nIGZpbGVzeXN0ZW1zCgl2aWEgL3JwYy9uZXQvcnBjL25mc2QqL2NoYW5uZWwsIHNldCB0aGUgZXhwaXJ5IGRhdGUgdG8gMSwgbm90CgknZm9yZXZlcicsIHNvIHRoaW5ncyBkaXNhcHBlYXIgb3V0IG9mIHRoZSBjYWNoZSByYXRoZXIgdGhhbiBqdXN0CgliZSBpZ25vcmVkLiAKCQoyMDAzLTA2LTE2ICAiSi4gQnJ1Y2UgRmllbGRzIiA8YmZpZWxkc0BmaWVsZHNlcy5vcmc+CgoJKiB1dGlscy9tb3VudGQvY2FjaGUuYyhuZnNkX2ZoKTogZG9uJ3QgZXhwb3J0IHRoZSBleHBvcnRfZW50CglpZiBpdCB3YXNuJ3QgZm91bmQuCgoyMDAzLTA2LTE2ICBOZWlsQnJvd24JPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIGRlYmlhbi9uZnMta2VybmVsLXNlcnZlci5pbml0LGV0Yy9ub2Rpc3QvbmZzLXNlcnZlciwKCWV0Yy9yZWRoYXQvbmZzLmluaXQ6IHdoZW4gY2hlY2tpbmcgaWYgVjMgaXMgc3VwcG9ydGVkLCBtYWtlIHN1cmUKCW5mcyBzZXJ2ZXIgJ2tub3dzJyBhYm91dCAxMjcuMC4wLjEgZmlyc3QuCgkKMjAwMy0wNi0xMCAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiBzdXBwb3J0L25mcy94bG9nLmMgKHhsb2cpOiBGaXggb2ZmLWJ5LW9uZSBidWZmZXIgb3ZlcmZsb3cgYnVnLgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC4zLTIuCgoyMDAzLTA1LTMwIE1pY2hhZWwgR3JpZmZpdGggPGdyaWZAbWljaGFlbGdyaWZmaXRoLmNvbT4KCU5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCXV0aWxzL25mc3N0YXQvbmZzc3RhdC5jKHByaW50X2NhbGxzdGF0cyk6IHVzZSB1bnNpZ25lZAoJbG9uZyBsb25nIHRvIGF2b2lkIG92ZXJmbG93IHdoZW4gcHJpbnRpbmcgc3RhdHMuCgkKMjAwMy0wNS0zMCAgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2V4cG9ydC9leHBvcnQuYywgc3VwcG9ydC9pbmNsdWRlL25mc2xpYi5oLAoJc3VwcG9ydC9uZnMvZXhwb3J0LmMsIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMsCgl1dGlscy9tb3VudGQvbW91bnRkLmM6IG5ldyBleHBvcnQgb3B0aW9uICJtb3VudHBvaW50IgoJSWYgbm8gcGF0aCBpcyBnaXZlbiwgdGhlbiB0aGUgZXhwb3J0IHBvaW50IG11c3QgYmUgYQoJbW91bnQgcG9pbnQsIG9yIGl0IHdvbid0IGJlIGV4cG9ydGVkLiAgSWYgYSBwYXRoIGlzIAoJZ2l2ZW4gKGUuZy4gbW91bnRwb2ludD0vcGF0aCkgdGhlbiB0aGF0IHBhdGggbXVzdCBiZQoJYSBtb3VudHBvaW50IG9yIHRoZSBleHBvcnRwb2ludCB3b24ndCBiZSBleHBvcnRlZC4KCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMubWFuOiBkb2N1bWVudCBtb3VudHBvaW50IG9wdGlvbi4KCSogc3VwcG9ydC9taXNjL21vdW50cG9pbnQuYzogTmV3IGZpbGUgd2l0aCBpc19tb3VudHBvaW50KCkKCXRvIGRldGVybWluZSBpZiBzb21ldGhpbmcgaXMgYSBtb3VudHBvaW50LgoJCjIwMDMtMDUtMjMgIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogdXRpbHMvbW91bnRkL2NhY2hlLmMoY2FjaGVfZ2V0X2ZpbGVoYW5kbGUpOiB0YWtlIGEgc2VwYXJhdGUgcGF0aAoJYXJndW1lbnQgYXMgd2UgbWlnaHQgbm90IGJlIGdldHRpbmcgdGhlIGZpbGVoYW5kbGUgZm9yIHRoZQoJbW91bnRwb2ludC4KCSogdXRpbHMvbW91bnRkL21vdW50ZC5jKGdldF9yb290ZmgpOiBwYXNzIHJlYWwgcGF0aCB3aGVuIGNhbGxpbmcKCWNhY2hlX2dldF9maWxlaGFuZGxlLgoJKiB1dGlscy9tb3VudGQvbW91bnRkLmMoZ2V0X3Jvb3RmaCk6IGNoZWNrIGV4cG9ydCBwb2ludCBhbmQKCXJlcXVlc3RlZCBkaXJlY3RvcnkgYXJlIG9uIHRoZSBzYW1lIGZpbGVzeXN0ZW0sIGFuZCBjb21wbGFpbiBpZgoJbm90LgoJCjIwMDMtMDUtMjIgIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogdXRpbHMvbW91bnRkL2F1dGguYyhhdXRoX2F1dGhlbnRpY2F0ZV9pbnRlcm5hbCk6IG1ha2Ugc3VyZQoJcG9ydG51bWJlciBpcyBzdGlsbCBjaGVja2VkIHdoZW4gdXNpbmcgbmV3IGNhY2hlIGxvb2t1cC4KCQoyMDAzLTA1LTIxICBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmM6IFVzZSBjaGVja19uZXdfY2FjaGUgYW5kIGNhY2hlX2ZsdXNoCgkgRG9uJ3QgYWN0dWFsbHkgdGFsayB0byBrZXJuZWwgd2hlbiBuZXcgY2FjaGUgaXMgaW4gZWZmZWN0LCBleGNlcHQKCSB0byBmbHVzaAoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jOiBhZGQgLWYgb3B0aW9uIHRvIGZ1bGx5IGZsdXNoIGNhY2hlLgoJKiBzdXBwb3J0L2V4cG9ydC94dGFiLmM6IE9ubHkgcmVuYW1lIG5ldyB4dGFiIGludG8gcGxhY2UgaWYgaXQgaGFzCgkgY2hhbmdlZCwgdGh1cyBwcmVzZXJ2aW5nIG1vZGlmeSBkYXRlIGZvciBleHBvcnRmcyB0byB1c2Ugd2hlbgoJIGZsdXNoaW5nLgoJKiBzdXBwb3J0L25mcy9jYWNoZWlvLmM6IEFkZCBjYWNoZV9mbHVzaAoJKiBzdXBwb3J0L2V4cG9ydC94dGFiLmM6IE9ubHkgcmVuYW1lIG5ldyB4dGFiIGludG8gcGxhY2UgaWYgaXQgaGFzCgkgY2hhbmdlZCwgdGh1cyBwcmVzZXJ2aW5nIG1vZGlmeSBkYXRlIGZvciBleHBvcnRmcyB0byB1c2Ugd2hlbgoJIGZsdXNoaW5nLgoJCjIwMDMtMDUtMjEgIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9leHBvcnQvY2xpZW50LmM6IEFkZCBjbGllbnRfY29tcG9zZSwgY2xpZW50X21lbWJlciB0bwoJaGFuZGxlIG5ldyBjb21wb3NpdGUgY2xpZW50IG5hbWVzCgkqIHN1cHBvcnQvaW5jbHVkZS9leHBvcnRmcy5oOiBEZWNsYXJlIGFib3ZlIGZ1bmN0aW9ucy4KCSogdXRpbHMvbW91bnRkL2F1dGguYzogdXNlIGNsaWVudF9jb21wb3NlIHRvIGRldGVybWluZSBjYWxsaW5nCgljbGllbnQgaWYgbmV3IGNhY2hlIGlzIGJlaW5nIHVzZWQuCgkqIHV0aWxzL21vdW50ZC9hdXRoLmM6IGNhbGwgY2FjaGVfZXhwb3J0IHRvIGV4cG9ydCBhIGZpbGVzeXN0ZW0gaWYKCW5ld19jYWNoZSwgY2hlY2sgaWYgbmV3IGNhY2hlIGlzIHVzZWQsIGFuZCBjYWxsIG15X3N2Y19ydW4gaW5zdGVhZAoJb2Ygc3ZjX3J1bgoJKiB1dGlscy9tb3VudGQvc3ZjX3J1bi5jOiBuZXcgZmlsZSBkZWZpbmluZyBteV9zdmNfcnVuCgkqIHV0aWxzL21vdW50ZC9jYWNoZS5jOiBuZXcgZmlsZSBmb3IgaGFuZGxpbmcgY2FjaGUgdXBjYWxscy4KCSogc3VwcG9ydC9uZnMvY2FjaGVpby5jKGNoZWNrX25ld19jYWNoZSk6IG5ldyBmdW5jdGlvbiB0byBjaGVjayBpZgoJbmV3IGNhY2hlIHNob3VsZCBiZSB1c2VkLgoJCgkKMjAwMy0wNS0yMSAgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2luY2x1ZGUvbmZzL2V4cG9ydC5oOiBOZXcgQ1JPU1NNTlQgZGlzdGluY3QgZnJvbSBOT0hJREUKCSogc3VwcG9ydC9uZnMvZXhwb3J0cy5jOiBNYWtlIENST1NTTU5UIGRpc3RpbmN0IGZyb20gTk9ISURFCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMoZHVtcCk6IGRpdHRvCgkKMjAwMy0wNS0yMSAgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2V4cG9ydC9ob3N0bmFtZS5jKGdldF9yZWxpYWJsZV9ob3N0YnlhZGRyKTogbmV3IGZ1bmN0aW9uCgl0byBnZXQgaG9zdCBuYW1lIGZyb20gYWRkcmVzcyB3aXRoIGZ1bGwgY2hlY2tpbmcgb2YgYXV0aGVudGljaXR5LgoJKiBzdXBwb3J0L2luY2x1ZGUvbWlzYy5oOiBkZWNsYXJlIGFib3ZlIGZ1bmN0aW9uCgkqIHV0aWxzL21vdW50ZC9hdXRoLmMoYXV0aF9hdXRoZW50aWNhdGVfaW50ZXJuYWwpOiByZW1vdmUgYWxsCglsb2dpYyBmb3IgYXV0aGVudGljYXRpbmcgYWRkcmVzcy4KCSogdXRpbHMvbW91bnRkL2F1dGguYyhhdXRoX2F1dGhlbnRpY2F0ZSk6IGNhbGwgbmV3CglnZXRfcmVsaWFibGVfaG9zdGJ5YWRkciB0byB0byBob3N0bmFtZSBsb29rdXAgYmVmb3JlIGNhbGxpbmcgX2ludGVybmFsLgoJCgkKMjAwMy0wMy0zMCAgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiB0b29scy9ycGNnZW4vcnBjX21haW4uYyhmaW5kX2NwcCk6IHJlbW92ZWQKCSogdG9vbHMvcnBjZ2VuL3JwY19tYWluLmMob3Blbl9pbnB1dCk6IHVzZSBleGVjdnAgdG8gZmluZCAiY3BwIiwgCgl0aGVuIHRyeSBoYXJkLWNvZGVkIHBhdGhzLgoJCjIwMDMtMDMtMjYgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAcG9ib3guY29tPgoKCSogZGViaWFuL2NoYW5nZWxvZzogVmVyc2lvbiAxLjAuMy0xLgoKMjAwMy0wMy0yNiBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHV0aWxzL21vdW50ZC9ybXRhYi5jIChzbGlua19zYWZlX3JlbmFtZSk6IHJlYWxfbmV3cGF0aCBzaG91bGQgYmUKCSJjb25zdCBjaGFyKiIsIG5vdCAiY2hhcioiLgoKMjAwMy0wMy0yNiBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFNldCB0byAiMS4wLjMiLgoJKiBuZnMtdXRpbHMuc3BlYzogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAzLTAzLTI2IE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9uZnMvY2FjaGVpby5jOiBOZXcgRmlsZSAtIHN1cHBvcnQgZm9yIHJlYWQvd3JpdGluZwoJdG8gZXhwb3J0IGNhY2hlIGluIC9wcm9jL3JwYy8qL2NoYW5uZWwKCSogc3VwcG9ydC9uZnMvTWFrZWZpbGU6IGNvbXBpbGUgY2FjaGVpby5jCgkqIHN1cHBvcnQvaW5jbHVkZS9uZnNsaWIuaDogZGVjbGFyZSBjYWNoZWlvLmMgZnVuY3Rpb25zCgkqIHN1cHBvcnQvbmZzL25mc2V4cG9ydC5jOiBleHBvcnQgYW5kIHVuZXhwb3J0IHRocm91Z2gKCS9wcm9jL3JwYy8qL2NoYW5uZWwgaWYgcG9zc2libGUsIGFzIG9sZCBzeXNjYWxsIGludGVyZmFjZQoJbWF5IG5vdCBzdXJ2aXZlIGludG8gMi42IG9uIGFsbCBhcmNoaXRlY3R1cmVzLgoJCjIwMDMtMDItMTkgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CQoJQmVuIExlc2xpZSA8YmVubm9Ac2VzZ3JvdXAubmV0PgoKCSogc3VwcG9ydC9uZnMvcnBjbWlzYy5jKHJwY19pbml0KTogIGNoYW5nZSB0ZXN0IGZvciBpZ25vcmluZwoJImRlZnBvcnQiIGZyb20gKF9fcnBjZmR0eXBlID09IDApIHRvIChfX3JwY3Btc3RhcnQ9PTApLiAgVGhlCglmb3JtZXIgd291bGQgaW5jb3JlY3RseSBpZ25vcmUgZGVmcG9ydCBpZiB0aGUgYXBwbGljYXRpb24gCglleHBsaWNpdGx5IHNldCBfX3JwY2ZkdHlwZS4gIFRoZSBsYXRlciBpcyBzdWZmaWNpZW50IHRvIGF2b2lkIHRoZQoJc3BlY2lhbCBoYW5kbGluZyBpbiB0aGUgY2FzZSB3aGVyZSBzdGRpbiBpcyBhbiBpbnRlcm5ldCBzb2NrZXQuCgoJKiB1dGlscy9tb3VudGQvbW91bnRkLmMobWFpbik6IEFkZCAnbicgdG8gb3B0aW9uIGxpc3QgaW4KCWdldG9wdF9sb25nIGFzIHRoaXMgaXMgYSBzaG9ydCBmb3JtIG9mIC0tbm8tdGNwIHdoaWNoIHdhbnQgYmVpbmcKCWNoZWNrZWQuCgkKMjAwMy0wMi0xMiAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC4yLTIuCgoyMDAyLTExLTI3ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIHV0aWxzL21vdW50ZC9ybXRhYi5jIChzbGlua19zYWZlX3JlbmFtZSk6IEZpeCBvZmYtYnktb25lIGJ1ZmZlcgoJb3ZlcmZsb3cgYnVnLiAgUmVmb3JtYXQgcGVyIHJlc3Qgb2Ygc291cmNlIGZpbGUuCgoyMDAyLTExLTE5ICBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydHMubWFuOiBDb3JyZWN0IG5vdGVzIGFib3V0IHdoZXRoZXIgdGhlIHdpbGQKCWNhcmQgY2hhcmFjdGVycyBtYXRjaCBhIHBlcmlvZC4gIFRoZXkgZG8uCgkKMjAwMi0xMC0xNSAgSnVhbiBHb21leiA8anVhbmdAdXMuaWJtLmNvbT4KCgkqIHV0aWxzL21vdW50ZC9ybXRhYi5jIChzbGlua19zYWZlX3JlbmFtZSk6IE5ldy4gU3VwcG9ydAoJc3ltbGluay4KCShtb3VudGxpc3RfYWRkKTogQ2FsbCBzbGlua19zYWZlX3JlbmFtZSBpbnN0ZWFkIG9mIHJlbmFtZS4KCjIwMDItMTAtMTEgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBzdXBwb3J0L2luY2x1ZGUvZXhwb3J0ZnMuaCAoZXhwb3J0X2Vycm5vKTogTmV3LgoKCSogc3VwcG9ydC9uZnMvZXhwb3J0cy5jOiBJbmNsdWRlIDxlcnJuby5oPi4KCShleHBvcnRfZXJybm8pOiBOZXcuCgkoZ2V0ZXhwb3J0ZW50KTogU2V0IGV4cG9ydF9lcnJubyB0byBFSU5WQUwgZm9yIGJhZCBvcHRpb24uCgkocGFyc2VvcHRzKTogTGlrZXdpc2UuCglSZXBvcnQgdGhlIGxvY2F0aW9uIG9mIHRoZSBkZWZhdWx0IHN5bmMvYXN5bmMgb3B0aW9uLgoKCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYyAobWFpbik6IEluaXRpYWxpemUgZXhwb3J0X2Vycm5vIHRvCgkwLiBSZXR1cm4gZXhwb3J0X2Vycm5vLgoKMjAwMi0xMC0xMSAgSnVhbiBHb21leiAgPGdvbWV6QGNzLnNqc3UuZWR1PgoJTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJdXRpbHMvc3RhdGQvc3RhdGQuYyhraWxsZXIpOiBkb24ndCBwbWFwX3Vuc2V0IGlmIGluIG5vdGlmeV9vbmx5IG1vZGUKCXV0aWxzL3N0YXRkL3N0YXRkLmMobWFpbik6IGRvbid0IHBtYXBfdW5zZXQgaWYgaW4gbm90aWZ5X29ubHkgbW9kZQoJCjIwMDItMDktMTYgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAcG9ib3guY29tPgoKCSogdXRpbHMvcnF1b3RhZC9ycXVvdGFfc3ZjLmMgKG1haW4pOiBVc2UgaW50IGZvciB2YWx1ZSBvZiBnZXRvcHQuCgoyMDAyLTA5LTE1ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIHN1cHBvcnQvbmZzL3JwY21pc2MuYyAocnBjX2luaXQpOiBBbGxvdyBzdGRpbiB0byBiZSBhIG5vbi1JTkVUCglzb2NrZXQsIGFzIG9jY3VycyB3aGVuIHJ1biBmcm9tIHNzaGQuCgkqIGRlYmlhbi9jaGFuZ2Vsb2c6IFZlcnNpb24gMS4wLjItMS4KCjIwMDItMDktMTIgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBzdXBwb3J0L25mcy9zdmNfc29ja2V0LmM6IFJlbW92ZSBIQVZFX1NWQ1RDUF9TT0NLRVQgYW5kCglIQVZFX1NWQ1VEUF9TT0NLRVQuCgoyMDAyLTA5LTEyICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogY29uZmlndXJlLmluOiBSZW1vdmUgY2hlY2tpbmcgc3ZjdGNwX3NvY2tldCBhbmQgc3ZjdWRwX3NvY2tldC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIHN1cHBvcnQvaW5jbHVkZS9jb25maWcuaC5pbiAoSEFWRV9TVkNUQ1BfU09DS0VUKTogUmVtb3ZlZC4KCShIQVZFX1NWQ1VEUF9TT0NLRVQpOiBSZW1vdmVkLgoKCSogc3VwcG9ydC9pbmNsdWRlL25mc2xpYi5oOiBVbmRvIHRoZSBsYXN0IGNoYW5nZS4KCjIwMDItMDktMTIgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBzdXBwb3J0L2luY2x1ZGUvbmZzbGliLmggKHN2Y3RjcF9zb2NrZXQpOiBQcm90ZWN0IGl0IHdpdGgKCUhBVkVfU1ZDVENQX1NPQ0tFVC4KCShzdmN1ZHBfc29ja2V0KTogUHJvdGVjdCBpdCB3aXRoIEhBVkVfU1ZDVURQX1NPQ0tFVC4KCjIwMDItMDktMTIgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjEuMC4yIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IExpa2V3aXNlLgoKMjAwMi0wOS0xMiAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgc3ZjdGNwX3NvY2tldCBhbmQgc3ZjdWRwX3NvY2tldC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIHN1cHBvcnQvaW5jbHVkZS9jb25maWcuaC5pbiAoSEFWRV9TVkNUQ1BfU09DS0VUKTogTmV3LgoJKEhBVkVfU1ZDVURQX1NPQ0tFVCk6IE5ldy4KCgkqIHN1cHBvcnQvaW5jbHVkZS9uZnNsaWIuaCAoc3ZjdGNwX3NvY2tldCk6IE5ldy4KCShzdmN1ZHBfc29ja2V0KTogTmV3LgoKCSogc3VwcG9ydC9uZnMvTWFrZWZpbGUgKE9CSlMpOiBBZGQgc3ZjX3NvY2tldC5vLgoKCSogc3VwcG9ydC9uZnMvc3ZjX3NvY2tldC5jOiBOZXcuCgoJKiBzdXBwb3J0L25mcy9ycGNtaXNjLmMgKHJwY19pbml0KTogQ2FsbCBzdmN0Y3Bfc29ja2V0IGFuZAoJc3ZjdWRwX3NvY2tldCBpZiBwb3J0IGlzIHVuc3BlY2lmaWVkLgoKCSogdXRpbHMvbmZzZC9uZnNkLmMgKG1haW4pOiBDYWxsIGdldHNlcnZieW5hbWUgZm9yIHBvcnQuCgoJKiB1dGlscy9ycXVvdGFkL3JxdW90YV9zdmMuYzogSW5jbHVkZSA8bmZzbGliLmg+LgoJKGtpbGxlcik6IE5ldy4gU2lnbmFsIGhhbmRsZXIgdG8gdW5yZWdpc3Rlci4KCShtYWluKTogVXNlIGtpbGxlci4gQ2FsbCBzdmN1ZHBfc29ja2V0IHRvIGdldCB0aGUgZGVmYXVsdAoJc29ja2V0LgoKMjAwMi0wOS0wMiBKdWFuIEdvbWV6IDxqdWFuZ0B1cy5pYm0uY29tPgoJTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJQWRkIC1OIG9wdGlvbiB0byBzdGF0ZCB0byBydW4gaW4gbm90aWZ5LW9ubHkgbW9kZS4KCgkqIHV0aWxzL3N0YXRkL3N0YXRkLmg6IHVuY29tbWVudCBNT0RFX05PVElGWV9PTkxZCgkqIHV0aWxzL3N0YXRkL3N0YXRkLm1hbjogZG9jdW1lbnQgLU4KCSogdXRpbHMvc3RhdGQvc3RhdGQuYzogZW5hYmxlZCAtTiwgbGFyZ2VseSBleGlzdHMgYnV0IG5lZWRlZCB0byBiZQoJdW5jb21tZW50ZWQgYW5kIGNvbXBsZXRlZAoJCjIwMDItMDktMDIgSnVhbiBHb21leiA8anVhbmdAdXMuaWJtLmNvbT4KCU5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCXN0YXRkIHRvIGhhdmUgIiAtUCBkaXJlY3RvcnkiIGFyZyB0byB1c2UgdGhhdCBkaXJlY3RvcnkgaW5zdGVhZAoJb2YgL3Zhci9saWIvbmZzLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGZhaWwtb3ZlciBjbHVzdGVycy4KCQoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5oOiBkZWZpbmUgU01fRElSIGV0YyBhcyB2YXIsIG5vdCBjb25zdC4KCSogdXRpbHMvc3RhdGQvc3RhdGQuYzogZGVmaW5lICItUCIgb3B0aW9uIHRvIHNldCBTTV8qCglhcHByb3ByaWF0ZWx5LgoJKiB1dGlscy9zdGF0ZC9tb25pdG9yLmM6IHNwcmludGYgdG8gY29wZSB3aXRoIFNNX0RJUiBub3QgYmVpbmcKCWEgY29uc3RhbnQgYW55IG1vcmUuCgkqIHV0aWxzL3N0YXRkL25vdGlmeS5jOiBkaXR0by4KCSogdXRpbHMvc3RhdGQvc3RhdGQubWFuOiBkb2N1bWVudCAtUCBvcHRpb24uCgkKMjAwMi0wOC0yNiAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiB1dGlscy9uZnNkL25mc2QubWFuOiBGaXggdHlwby4KCSogZGViaWFuL2NoYW5nZWxvZzogVmVyc2lvbiAxLjAuMS0xLgoKMjAwMi0wNS0yOSBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIGxldCBwYXJzZW9wdHMga25vdyBpZiAvZXRjL2V4cG9ydHMgd2FzIGJlaW5nIHJlYWQgb3Igbm90LCAKCWFuZCBoYXZlIGl0IG9ubHkgcHJpbnQgIm5vIHN5bmMgb3IgYXN5bmMiIHdhcm5pbmcgaW4gdGhhdCBjYXNlLgoJCjIwMDItMDUtMDYgVG9tIE1jTmVhbCA8dHJtY25lYWxAYXR0YmkuY29tPgoJTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiB1dGlscy9uZnNzdGF0L25mc3N0YXQuYzogSGFuZGxlIGRpZmZlcmluZyBmb3JtYXQgZm9yCgkgICAvcHJvYy9uZXQvcnBjL25mc2QgYmV0d2VlbiBwcmUgYW5kIHBvc3QgMi40LjAKCQoyMDAyLTA0LTA5ICBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCUphbWVzIFBlYXJzb24gPGphbWVzLXBAbW92aW5nLXBpY3R1cmUuY29tPgoKCSogc3VwcG9ydC9uZnMvcm10YWIuYyhmZW5kcm10YWJlbnQpOiBzeW5jIGNoYW5nZXMgdG8gCglzdG9yYWdlIGJlZm9yZSByZXR1cm5pbmcsIGFzIHRoaXMgaXMgY3JpdGljYWwgc3RhdGUKCjIwMDItMDQtMDggIFNlYW4gTydDb25uZWxsIDxzZWFuQGVlLmR1a2UuZWR1PgoJICAgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mczogTmV3LgoKMjAwMi0wNC0wOCAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGV0Yy9yZWRoYXQvbmZzLmluaXQ6IFVwZGF0ZWQuCgoJKiBuZnMtdXRpbHMuc3BlYy5pbjogVXBkYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFJlZ2VuZXJhdGVkLgoKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jIChsb25nb3B0cyk6IEZpeCBhIHR5cG8uCgoJKiB1dGlscy9tb3VudGQvbW91bnRkLm1hbjogVXBkYXRlZC4KCjIwMDItMDQtMDcgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mc2xvY2suaW5pdCAocmVzdGFydCk6IEp1c3QgZG8gc3RvcCBhbmQgc3RhcnQuCgoJKiBldGMvcmVkaGF0L25mcy5pbml0OiBGaXggYSB0eXBvLgoKMjAwMi0wNC0wNyAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFNldCB0byAiMS4wLjEiLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBuZnMtdXRpbHMuc3BlYzogTGlrZXdpc2UuCgoJKiBSRUFETUU6IFVwZGF0ZWQgZm9yIDEuMC4xLgoKMjAwMi0wNC0wNyAgU2VhbiBPJ0Nvbm5lbGwgPHNlYW5AZWUuZHVrZS5lZHU+CgkgICAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGV0Yy9yZWRoYXQvbmZzLmluaXQ6IFJlYWQgL2V0Yy9zeXNjb25maWcvbmZzZCBmb3IgTkZTIHR1bmluZy4KCjIwMDItMDItMjggICBTdGV2ZW4gV2hpdGVob3VzZSA8c3RldmVAZ3cuY2h5Z3d5bi5jb20+CgkgICAgICBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCglBZGQgc3VwcG9ydCBmb3IgZnNpZD1ubiBleHBvcnQgb3B0aW9uIHNvIHRoYXQgZGV2aWNlCgludW1iZXJzIGRvbid0IGdvIGluIGZpbGVoYW5kbGVzLgoJKiBzdXBwb3J0L2V4cG9ydC9uZnNjdGwuYyhleHBzZXR1cCk6IGlmIGV4cG9ydGluZyBhbmQgTkZTRVhQX0ZTSUQKCWlzIHNldCwgcGFzcyB0aGUgZnNpZCBpbi1wbGFjZSBvZiB0aGUgZGV2aWNlIG51bWJlcgoJKiBzdXBwb3J0L25mcy9leHBvcnRzLmM6IHBhcnNlIGFuZCBwcmludCBmc2lkPSBvcHRpb24uCglBbHNvIGNoZWNrIGlmIGVmbmFtZSBoYXMgYmVlbiBzZXQsIGFuZCB1c2UgImNvbW1hbmQgbGluZSIKCWluc3RlYWQgaW4gZXJyb3IgbWVzc2FnZXMuCglBbHNvLCB1c2Ugc3RydG9sIGluc3RlYWQgb2YgYXRvaSBmb3IgYW5vblt1Z11pZD0gc28gdGhhdAoJYmFkIG51bWJlcnMgY2F1c2UgZXJyb3JzLgoJCjIwMDItMDEtMTcgICBBZHJpYW4gRHJ6ZXdpZWNraSA8ZHJ6ZUBNaXNzaW9uQ3JpdGljYWxMaW51eC5jb20+CgkgICAgIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9uZnMvZXhwb3J0cy5jOiByZW1vdmUgTkZTRVhQX0FTWU5DIGFzIGEgZGVmYXVsdAoJZmxhZyBzbyB0aGF0ICJzeW5jIiBiZWNvbWVzIHRoZSBkZWZhdWx0LgoJQ2hlY2sgdGhhdCBlaXRoZXIgInN5bmMiIG9yICJhc3luYyIgaXMgZ2l2ZW4gYXMgYW4gb3B0aW9uCglhbmQgd2FybiBpZiBuZWl0aGVyIGFyZSBwcmVzZW50CgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydHMubWFuOiBjaGFuZ2UgZG9jdW1lbnRhdGlvbiBmb3IgInN5bmMiCgl0byBiZSBkb2N1bWVudGF0aW9uIGZvciAiYXN5bmMiLgoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5tYW46IG5vdGUgdGhhdCAic3luYyIgaXMgdGhlIGRlZmF1bHQKCXJhdGhlciB0aGFuICJhc3luYyIKCQoJCjIwMDItMDEtMDIgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAcG9ib3guY29tPgoKCSogc3VwcG9ydC9leHBvcnQvbmZzY3RsLmMgKGV4cHNldHVwKTogRG9uJ3QgZXhwb3J0IGVudHJpZXMgdGhhdAoJc3BlY2lmeSBpZCBtYXBwaW5ncyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwuICBObyBleHRhbnQga2VybmVsCglzdXBwb3J0cyBhbnkgc2lnbmlmaWNhbnQgbWFwcGluZywgb25seSAnaWRlbnRpdHknIChpLmUuIG5vbmUpLgoJV2hlbiBvdGhlciBtYXBwaW5ncyBhcmUgc3VwcG9ydGVkLCB0aGlzIGNvZGUgd2lsbCBuZWVkIGNoYW5naW5nLgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC0yLgoKMjAwMS0xMi0yNiAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiBuZnMtdXRpbHMuc3BlYyAoVmVyc2lvbik6IFNldCB0byAiMS4wIi4KCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIFJFQURNRTogUmV3cml0dGVuLgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDEuMC0xLgoKCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0cy5tYW46IEVtcGhhc2l6ZSB0aGUgbmVlZCBmb3Igb3B0aW9ucyB0bwoJaW1tZWRpYXRlbHkgZm9sbG93IGNsaWVudCBuYW1lcy4gIEV4cGxhaW4gdGhhdCB3aWxkY2FyZHMgZG9uJ3QKCXVzdWFsbHkgd29yayBvbiBhZGRyZXNzZXMsIGJ1dCBtYXkgd29yayB3aGVuIHJldmVyc2UgRE5TIGZhaWxzLgoJQ29tbWVudCBvdXQgYSBsZWZ0b3ZlciBUUCB0aGF0IHdhcyBUUGluZyBvdXIgaW5kZW50YXRpb24uCgkqIHV0aWxzL21vdW50ZC9tb3VudGQubWFuLCB1dGlscy9ycXVvdGFkL3JxdW90YWQubWFuLAoJdXRpbHMvc3RhdGQvc3RhdGQubWFuOiBSZW1vdmUgcmVmcyB0byBub24tZXhpc3RlbnQgImhvc3RzX2FsbG93KDUpIi4KCSogZGViaWFuL2NoYW5nZWxvZzogVmVyc2lvbiAwLjMuMy02LgoKMjAwMS0xMi0yMCAgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2V4cG9ydC9jbGllbnQuYyhjbGllbnRfbG9va3VwKTogSWYgYSBob3N0IGhhcyBtdWx0aXBsZQoJSVAgYWRkcmVzc2VzLCB0aGVuIHdlIG11c3QgYWx3YXlzIHVzZSB0aGUgcmVzdWx0IG9mIGEKCWdldGhvc3RieW5hbWUsIG5vdCB0aGF0IG9mIGdldGhvc3RieWFkZHIgZm9yIGV4cG9ydGluZwoJCjIwMDEtMTItMjAgIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9leHBvcnQvY2xpZW50LmMgKGNsaWVudF9sb29rdXApOiB1c2Ugc3RyY2FzZWNtcCB3aGVuCgljb21wYXJpbmcgaG9zdCBuYW1lcwoJKiBzdXBwb3J0L25mcy9leHBvcnQuYyAoZ2V0ZXhwb3J0ZW50KTogYWRkIGZyb21rZXJuZWwgYXJnIGFuZCB1c2UKCWRpZmZlcmVudCBkZWZhdWx0cyBhcyBrZXJuZWxzIHByaW9yIHRvIDIuNC4xMSBhc3N1bWUgZGlmZmVyZW50CglkZWZhdWx0cyBpbiAvcHJvYy9mcy9uZnMvZXhwb3J0cwoJKiBzdXBwb3J0L2luY2x1ZGUvbmZzbGliLmgsIHN1cHBvcnQvZXhwb3J0L2V4cG9ydC5jLAoJc3VwcG9ydC9leHBvcnQveHRhYi5jOiAgc3VwcG9ydCBleHRyYSAiZnJvbWtlcm5lbCIgYXJnIGZvcgoJZ2V0ZXhwb3J0ZW50LiAKCQoyMDAxLTEyLTEzICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIGRlYmlhbi9jaGFuZ2Vsb2c6IFZlcnNpb24gMC4zLjMtNS4KCjIwMDEtMTEtMjYgIFRBS0FJIEtvdXN1a2UgPHRha2FpQHZsc2kua3VlZS5reW90by11LmFjLmpwPgoKCSogc3VwcG9ydC9uZnMveGlvLmMgKHhza2lwKTogQ2FsbCBgeHVuZ2V0YycgaW5zdGVhZCBvZgogICAgICAgIGB1bmdldGMnIHRvIGtlZXAgeF9saW5lIG1vcmUgcHJvcGVybHkuCgoyMDAxLTExLTI2ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIHV0aWxzL3Nob3dtb3VudC9zaG93bW91bnQuYyAobWFpbik6IERvbid0IGFzc3VtZSB0aGF0IHN0cmluZ3MKCXN0YXJ0aW5nIHdpdGggZGlnaXRzIGFyZSBJUCBhZGRyZXNzZXMuCgkqIHV0aWxzL25mc2QvbmZzZC5jIChtYWluKTogQ2xvc2UgYWxsIGZkcyBhbmQgcmVvcGVuIDAsMSwyIG9uCgkvZGV2L251bGwgYmVmb3JlIG5mc3N2YygpLiAgVXNlIHN5c2xvZyB0byByZXBvcnQgbmZzc3ZjIGVycm9ycy4KCSogc3VwcG9ydC9taXNjL3RjcHdyYXBwZXIuYywgdXRpbHMvbW91bnRkL21vdW50ZC5tYW4sCgl1dGlscy9ycXVvdGFkL3JxdW90YWQubWFuLCB1dGlscy9zdGF0ZC9zdGF0ZC5tYW46IEZpeCBjb21tZW50cyBhbmQKCW1hbiBwYWdlczogV2UgY2hlY2sgaG9zdCBuYW1lcyAqYW5kKiBhZGRyZXNzZXMgd2l0aCB0Y3B3cmFwcGVycy4KCSogZGViaWFuL2NoYW5nZWxvZzogVmVyc2lvbiAwLjMuMy00LgoKMjAwMS0xMS0yMSAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiBzdXBwb3J0L25mcy9jbGllbnRzLmMgKGNmbmFtZSk6IEFkZGVkOiBjdXJyZW50IGNsaWVudHMgZmlsZSBuYW1lLgoJKHNldG5mc2NsbnRlbnQpOiBTZXQgaXQuCgkoe2dldCxlbmR9bmZzY2xudGVudCwgc3ludGF4ZXJyKTogVXNlIGl0LgoJKiBzdXBwb3J0L25mcy9leHBvcnRzLmMgKGVmbmFtZSk6IEFkZGVkOiBjdXJyZW50IGV4cG9ydHMgZmlsZSBuYW1lLgoJKHNldG5mc2V4cG9ydGVudCk6IFNldCBpdC4KCShlbmRuZnNleHBvcnRlbnQsIHBhcnNlb3B0cywgZ2V0ZXhwb3J0LCBzeW50YXhlcnIpOiBVc2UgaXQuCgkocGFyc2VvcHRzKTogQWNjZXB0IG9sZC1zdHlsZSAiY3Jvc3NtbnQiIG9wdGlvbiwgZm9yIG9sZCB4dGFicy4KCSogZGViaWFuL2NoYW5nZWxvZzogVmVyc2lvbiAwLjMuMy0zLgoKMjAwMS0xMC0xMSAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEBwb2JveC5jb20+CgoJKiB1dGlscy9tb3VudGQvbW91bnRkLmMgKG1haW4pOiBDbG9zZSBmZHMgPiAyIF9iZWZvcmVfIFJQQyBpbml0LgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDAuMy4zLTIuCgoyMDAxLTEwLTA4ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBvYm94LmNvbT4KCgkqIHV0aWxzL21vdW50ZC9tb3VudGQuYyAobWFpbik6IFdoZW4gZGFlbW9uaXppbmcsIGNsb3NlIGFsbCBmZHMgPiAyLgoJKiB1dGlscy9NYWtlZmlsZS5pbjogUmVtb3ZlIG9sZCBNYWtlZmlsZSBpbiB0YXJnZXQgJ2Rpc3RjbGVhbicuCgkqIHV0aWxzL21vdW50ZC9tb3VudGQubWFuOiBVcGRhdGUgcGF0aHMgdG8gL3Zhci9saWIuCgkqIGRlYmlhbi8qOiBWZXJzaW9uIDAuMy4zLTEsIHdpdGggRGViaWFuLXNwZWNpZmljIGZpeGVzLgoKMjAwMS0xMC0wNiAgUHJlc3RvbiBCcm93biA8cGJyb3duQHJlZGhhdC5jb20+CgoJKiB1dGlscy9uZnNzdGF0L25mc3N0YXQubWFuOiBVcGRhdGVkLgoKMjAwMS0wOS0yNCAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFNldCB0byAiMC4zLjMiLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBuZnMtdXRpbHMuc3BlYzogTGlrZXdpc2UuCgoJKiBSRUFETUU6IFVwZGF0ZWQgZm9yIDAuMy4zLgoKMjAwMS0wOS0yMCBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCglBcnJhbmdlIHRoYXQgImV4cG9ydGZzIC1hdSIgbmV2ZXIgZG9lcyBETlMgbG9va3VwOgoJCgkqIHN1cHBvcnQvZXhwb3J0L2NsaWVudC5jIChjbGllbnRfbG9va3VwKSA6IGFkZCAiY2Fub25pY2FsIgoJZmxhZyB3aGljaCBzYXlzIHRoYXQgdGhlIGhvc3RuYW1lIGlzIGtub3duIHRvIGJlIGNhbm9uaWNhbCwgc28KCWRvbid0IGRvIGEgbG9va3VwCgoJKiBzdXBwb3J0L2V4cG9ydC9leHBvcnQuYyAoZXhwb3J0X2NyZWF0ZSkgOiBhZGQgImNhbm9uaWNhbCIKCWZsYWcgdG8gYmUgcGFzc2VkIGRvd24gdG8gY2xpZW50X2xvb2t1cAoJKiBzdXBwb3J0L2V4cG9ydC9leHBvcnQuYyAoZXhwb3J0X2xvb2t1cCkgOiBMaWtld2lzZQoKCSogc3VwcG9ydC9leHBvcnQveHRhYi5jICh4dGFiX3JlYWQpIDogcGFzcyBhcHByb3ByaWF0ZQoJImNhbm9uaWNhbCIgZmxhZyB0byBleHBvcnRfbG9va3VwIGFuZCBleHBvcnRfY3JlYXRlOgoJc2V0IGlmIHJlYWRpbmcgbGlzdCBvZiBmaWxlc3lzdGVtcyBjdXJyZW50bHkgZXhwb3J0cwoJKGlzX2V4cG9ydCAhPSAxKS4gCgoJKiBzdXBwb3J0L2V4cG9ydC9leHBvcnQuYyAoZXhwb3J0X3JlYWQpIDogcGFzcyAwIGFzIAoJImNhbm9uaWNhbCIgZmxhZyB0byBleHBvcnRfbG9va3VwIGFuZCBleHBvcnRfY3JlYXRlCgkqIHN1cHBvcnQvZXhwb3J0L3JtdGFiLnMgKHJtdGFiX3JlYWQpIDogTGlrZXdpc2UKCgkqIHN1cHBvcnQvaW5jbHVkZS9leHBvcnRmcy5oIDogcmVkZWNsYXJlIHZhcmlvdXMgcm91dGluZXMKCXRvIGhhdmUgImNhbm9uaWNhbCIgZmxhZwoKCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYyAobWFpbikgOiByZWRvIGxvZ2ljIGZvciAKCSItYXUiIHRvIHJlYWQgaW4gd2hhdCBpcyBjdXJyZW50bHkgZXhwb3J0ZWQsIGJ1dCBuZXZlciBldmVuIAoJbG9vayBhdCB3aGF0ICJzaG91bGQiIGJlIGV4cG9ydGVkLgoKCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYyAodW5leHBvcnRhbGwpIDogcmVtb3ZlIHRoaXMKCXJvdXRpbmUuIEZ1bmN0aW9uYWxpdHkgaXMgY29tcGxldGVseSBpbmNsdWRlZCBpbgoJZXhwb3J0c191cGRhdGUKCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMgKGV4cG9ydGZzKSA6IHNldCAiY2Fub25pY2FsIgoJZmxhZyB0byB6ZXJvIGluIGNhbGxzIHRvIGV4cG9ydF9sb29rdXAgYW5kIGV4cG9ydF9jcmVhdGUuCgoJCjIwMDEtMDktMjAgTmVpbEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgkgICAgQW5uZSBNaWxpY2lhIDxtaWxpY2lhQG1pc3Npb25jcml0aWNhbGxpbnV4LmNvbT4KCgkqIHN1cHBvcnQvZXhwb3J0L2NsaWVudC5jIChjbGllbnRfbG9va3VwKSBjYWxsIGdldGhvc3RieWFkZAoJdG8gbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIGNhbm9uaWNhbCBob3N0bmFtZSwgZXZlbiBmb3IKCWRvdHRlZC1xdWFkcwoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jIChleHBvcnRmcykgTGlrZXdpc2UKCQoyMDAxLTA5LTEyIE5laWxCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9uZnMvZXhwb3J0cy5jIChwdXRleHBvcnRlbnQpOiBcb2N0YWwgcXVvdGUgYW55IHNwYWNlcwoJZXRjIGluIGEgcGF0aCBuYW1lCgkqIHN1cHBvcnQvbmZzL3hpby5jICh4Z2V0dG9rKTogcmVjb2duaXNlIGRvdWJsZS1xdW90ZSBhbmQKCVxvY3RhbCBxdW90aW5nIGluIHBhdGggbmFtZXMKCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0cy5tYW46IGRvY3VtZW50IHF1b3RpbmcgY29udmVudGlvbnMKCWZvciBwYXRoIG5hbWVzCgkKMjAwMS0wOS0xMiBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHV0aWxzL21vdW50ZC9hdXRoLmMgKGF1dGhfYXV0aGVudGljYXRlX2ludGVybmFsKTogUmV2ZXJzZQoJICBjaGFuZ2UgZnJvbSAyMDAwLTA4LTAyOiAgSXQgY2F1c2VzIHByb2JsZW1zIGlmIHNvbWVvbmUgZXhwb3J0cwoJICB0byBib3RoIGEgaG9zdG5hbWUgYW5kIElQIGFkZHJlc3Nlcy4gIG5mcy11dGlscyBtdXN0IGJlCgkgIGNvbnNpc3RhbnQgYWJvdXQgdGhlIGNhbm9uaWNhbCBuYW1lIHRoYXQgaXQgY2hvb3Nlcy4KCjIwMDEtMDgtMTcgIFJhZ25hciBLavhyc3RhZCA8bmZzQHJhZ25hcmsudmVzdGRhdGEubm8+CgkgICAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGV0Yy9yZWRoYXQvbmZzbG9jay5pbml0IChTVEFUREFSRyk6IE5ldy4gUGFzcyBpdCB0byBycGMuc3RhdGQuCgoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jIChsb25nb3B0cyk6IEFkZCAibmFtZSIuCgkodXNhZ2UpOiBBZGQgIi1uLy0tbmFtZSIuCgkobWFpbik6IFNldCBNWV9OQU1FIHdpdGggIi1uLy0tbmFtZSIuCgoJKiB1dGlscy9zdGF0ZC9zdGF0ZS5jIChjaGFuZ2Vfc3RhdGUpOiBTZXQgTVlfTkFNRSBvbmx5IGlmIGl0CglpcyBOVUxMLgoJCgkqIHV0aWxzL3N0YXRkL3N0YXRkLm1hbjogVXBkYXRlZCBmb3IgIi1uLy0tbmFtZSIuCgoyMDAxLTA3LTI2ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogbmZzLXV0aWxzLnNwZWMgKFJlbGVhc2UpOiBTZXQgdG8gOC4KCjIwMDEtMDctMjUgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mcy5pbml0OiBDaGVjayBpZiBycGMucnF1b3RhZCBleGlzdHMgYmVmb3JlIGRvaW5nCglhbnl0aGluZyBhYm91dCBpdC4KCjIwMDEtMDYtMjcgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mcy5pbml0OiBSdW4gcnBjLnJxdW90YWQgb25seSBpZiBpdCBleGlzdHMuCgoyMDAxLTA2LTI3ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogdXRpbHMvcnF1b3RhZC9ycXVvdGFfc2VydmVyLmM6IERvbid0IGNhbGwgc3RhdGZzICgpIGZvcgoJdGhlIGJsb2NrIHNpemUuIFVzZSBCTE9DS19TSVpFIGluc3RlYWQuCgoyMDAxLTA2LTI3ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogY29uZmlnLm1rLmluIChDQ19GT1JfQlVJTEQpOiBSZW5hbWVkIGZyb20gQlVJTERfQ0MuCgkoQ0ZMQUdTX0ZPUl9CVUlMRCk6IE5ldy4gRG9uJ3QgdXNlIEBDRkxBR1NALgoKCSogY29uZmlndXJlLmluIChlbmFibGVfbmZzdjMpOiBTZXQgdG8geWVzIGJ5IGRlZmF1bHQuCgkoLS1lbmFibGUtcnF1b3RhZCk6IEFkZGVkCgkoQUNfUFJPR19DWFgpOiBSZW1vdmVkLgoJKEFDX09VVFBVVCk6IEFkZCB1dGlscy9NYWtlZmlsZS4KCShDQ19GT1JfQlVJTEQpOiBSZW5hbWVkIGZyb20gQlVJTERfQ0MuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiB1dGlscy9NYWtlZmlsZTogUmVtb3ZlZC4KCgkqIHV0aWxzL01ha2VmaWxlLmluOiBOZXcuCgoJKiBuZnMtdXRpbHMuc3BlYy5pbiAocnF1b3RhZCk6IE5ldy4gU2V0IHRvIDAgdG8gZGlzYWJsZQoJcnF1b3RhZC4KCShDQ19GT1JfQlVJTEQpOiBSZW5hbWVkIGZyb20gQlVJTERfQ0MuCgkqIG5mcy11dGlscy5zcGVjOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMTUgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAZGViaWFuLm9yZz4KCgkqIGRlYmlhbi9jaGFuZ2Vsb2c6IFZlcnNpb24gMC4zLjItMi4KCSogZGViaWFuLyouaW5pdDogTWlub3IgZml4ZXMuCgoyMDAxLTA2LTA3ICBMb24gSC4gSG9oYmVyZ2VyIDxob2hiZXJnZXJAbWlzc2lvbmNyaXRpY2FsbGludXguY29tPgoKCSogZXRjL25vZGlzdC9uZnMtc2VydmVyOiBGaXhlZCBhIGJ1ZyB3aGVyZSB0aGUgc2NyaXB0IHdvdWxkCglkaXNhYmxlIG1vdW50cyBmcm9tIE5GU3YzIGNsaWVudHMgaWYgTkZTdjMgaXMgcHJlc2VudC4KCjIwMDEtMDYtMDUgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiB1dGlscy9tb3VudGQvbW91bnRkLmMgKGxvbmdvcHRzKTogQWRkICJkZXNjcmlwdG9ycy9vIi4KCShtYWluKTogU3VwcG9ydCAtLWRlc2NyaXB0b3JzLy1vIHRvIHNldCB0aGUgbGltaXQgb2YgdGhlIG51bWJlcgoJb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzLgoJKHVzYWdlKTogVXBkYXRlZC4KCgkqIHV0aWxzL21vdW50ZC9tb3VudGQubWFuOiBVcGRhdGVkIGZvciAtLWRlc2NyaXB0b3JzLy1vLgoKMjAwMS0wNi0wNCAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIG5mcy11dGlscy5zcGVjIChSZWxlYXNlKTogU2V0IHRvIDYuCgoyMDAxLTA1LTI4ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogdXRpbHMvbG9ja2QvbG9ja2QuYyAobWFpbik6IGNoZGlyIHRvIE5GU19TVEFURURJUi4KCSogdXRpbHMvbW91bnRkL21vdW50ZC5jIChtYWluKTogTGlrZXdpc2UuCgkqIHV0aWxzL25mc2QvbmZzZC5jIChtYWluKTogTGlrZXdpc2UuCgkqIHV0aWxzL3JxdW90YWQvcnF1b3RhX3N2Yy5jIChtYWluKTogTGlrZXdpc2UuCgoyMDAxLTA1LTA2ICBBbm5lIE1pbGljaWEgPG1pbGljaWFAbWlzc2lvbmNyaXRpY2FsbGludXguY29tPgoKCSogc3VwcG9ydC9leHBvcnQvY2xpZW50LmMgKGNsaWVudF9jaGVjayk6IENoZWNrIElQIGFkZHJlc3MKCWFnYWluZXQgbmV0Z3JvdXAuCgoyMDAxLTA1LTA2ICBOZWlsIEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2V4cG9ydC9jbGllbnQuYyAoY2xpZW50X2dldHR5cGUpOiBUcmVhdCBgKicgYXMKCU1DTF9BTk9OWU1PVVMuCgoyMDAxLTA0LTIyICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogbmZzLXV0aWxzLnNwZWMuaW46IEZpeCBhIHR5cG8uCgkqIG5mcy11dGlscy5zcGVjOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDQtMjEgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBuZnMtdXRpbHMuc3BlYy5pbjogRml4IGNyb3NzIGJ1aWxkLgoJKiBuZnMtdXRpbHMuc3BlYzogUmVnZW5lcmF0ZWQuCgkoUmVsZWFzZSk6IFNldCB0byA1LgoKMjAwMS0wNC0xOCAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIG5mcy11dGlscy5zcGVjLmluOiBTdXBwb3J0IGNyb3NzIGJ1aWxkLgoJKiBuZnMtdXRpbHMuc3BlYzogUmVnZW5lcmF0ZWQuCgkoUmVsZWFzZSk6IFNldCB0byA0LgoKCSogY29uZmlnLnN1YjogTmV3LgoJKiBjb25maWcuZ3Vlc3M6IE5ldy4KCgkqIGNvbmZpZy5tay5pbiAoQlVJTERfQ0MpOiBOZXcuCgkoQ0MpOiBTZXQgdG8gJChCVUlMRF9DQykgaWYgQlVJTEQgaXMgZGVmaW5lZC4KCShBUik6IFNldCB0byBAQVJALgoJKExEKTogU2V0IHRvIEBMREAuCgkoUkFOTElCKTogU2V0IHRvIEBSQU5MSUJALgoKCSogY29uZmlndXJlLmluOiBDaGVjayBCVUlMRF9DQywgUkFOTElCLCBBUiBhbmQgTEQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiB0b29scy9ycGNnZW4vTWFrZWZpbGUgKEJVSUxEKTogU2V0IHRvIHRydWUuCgoyMDAxLTA0LTAxICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHZhbGludXguY29tPgoKCSogdG9vbHMvcnBjZ2VuL3JwY19zdmNvdXQuYyAod3JpdGVfdGltZW91dF9mdW5jKTogUmVtb3ZlCglyZWR1bmRhbnQsIGFuZCBzb21ldGltZXMgYnJva2VuLCBkZWNsYXJhdGlvbiBvZiBzdmNfZmRzZXQ7CglpdCBtYXkgYmUgYSBtYWNyby4KCSogc3VwcG9ydC9uZnMvcnBjbWlzYy5jIChjbG9zZWRvd24pOiBMaWtld2lzZS4KCQoyMDAxLTAzLTIxICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogbmZzLXV0aWxzLnNwZWM6IFJlZ2VuZXJhdGVkLgoJKFJlbGVhc2UpOiBTZXQgdG8gMy4KCjIwMDEtMDMtMjEgIElvbiBCYWR1bGVzY3UgIDxpb251dEBjcy5jb2x1bWJpYS5lZHU+CgoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jIChtYWluKTogbWFrZSBzdXJlIGZpbGUgZGVzY3JpcHRvcnMgMC0yCglhcmUgb3BlbiB0byAvZGV2L251bGwuCgoyMDAxLTAzLTIxICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogc3VwcG9ydC9uZnMvcnBjbWlzYy5jOiBSZXN0b3JlIHRoZSBjaGFuZ2UgbWFkZSBvbiAyMDAxLTAzLTEwLgoJKiBzdXBwb3J0L25mcy9ycGNtaXNjLmM6IExpa2V3aXNlLgoJKiB1dGlscy9ycXVvdGFkL3JxdW90YV9zdmMuYzogTGlrZXdpc2UuCgkqIHV0aWxzL3JxdW90YWQvcnF1b3RhZC5tYW46IExpa2V3aXNlLgoJKiB1dGlscy9zdGF0ZC9NYWtlZmlsZTogTGlrZXdpc2UuCgkqIHV0aWxzL3N0YXRkL3JtdGNhbGwuYzogTGlrZXdpc2UuCgkqIHV0aWxzL3N0YXRkL3NpbXVsYXRlLmM6IExpa2V3aXNlLgoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jOiBMaWtld2lzZS4KCSogdXRpbHMvc3RhdGQvc3RhdGQubWFuOiBMaWtld2lzZS4KCjIwMDEtMDMtMTEgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFJFTEVBU0UpOiBOZXcuIERlZmF1bHQgdG8gMSwgc2V0IGJ5CgktLXdpdGgtcmVsZWFzZT1YWFguIFN1YnN0aXR1dGUgbmZzLXV0aWxzLnNwZWMuCgkqIG5mcy11dGlscy5zcGVjLmluIChSZWxlYXNlKTogU2V0IHRvIEBSRUxFQVNFQC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IExpa2V3aXNlLgoKMjAwMS0wMy0xMSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL3JxdW90YWQvcnF1b3RhZC5tYW46IEZpeCBhIHR5cG8uCgoyMDAxLTAzLTExICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogc3VwcG9ydC9pbmNsdWRlL3JwY21pc2MuaDogVW5kbyB0aGUgY2hhbmdlIG1hZGUgb24gMjAwMS0wMy0xMC4KCSogc3VwcG9ydC9uZnMvcnBjbWlzYy5jOiBMaWtld2lzZS4KCSogdXRpbHMvcnF1b3RhZC9ycXVvdGFfc3ZjLmM6IExpa2V3aXNlLgoJKiB1dGlscy9ycXVvdGFkL3JxdW90YWQubWFuOiBMaWtld2lzZS4KCSogdXRpbHMvc3RhdGQvTWFrZWZpbGU6IExpa2V3aXNlLgoJKiB1dGlscy9zdGF0ZC9ybXRjYWxsLmM6IExpa2V3aXNlLgoJKiB1dGlscy9zdGF0ZC9zaW11bGF0ZS5jOiBMaWtld2lzZS4KCSogdXRpbHMvc3RhdGQvc3RhdGQuYzogTGlrZXdpc2UuCgkqIHV0aWxzL3N0YXRkL3N0YXRkLm1hbjogTGlrZXdpc2UuCgoyMDAxLTAzLTEwICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICIwLjMuMiIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIG5mcy11dGlscy5zcGVjOiBMaWtld2lzZS4KCgkqIFJFQURNRTogVXBkYXRlZCBmb3IgMC4zLjIuCgoyMDAxLTAzLTEwICBUYXZpcyBCYXJyIDx0YXZpc0Bib29sZS5pc2V0ci5jb2x1bWJpYS5lZHU+CgoJKiB1dGlscy9ycXVvdGFkL3JxdW90YWQubWFuOiBVcGRhdGVkIGZvciAtcC4KCSogdXRpbHMvc3RhdGQvc3RhdGQubWFuOiBMaWtld2lzZS4KCjIwMDEtMDMtMTAgIElvbiBCYWR1bGVzY3UgIDxpb251dEBjcy5jb2x1bWJpYS5lZHU+CgoJKiBzdXBwb3J0L25mcy9ycGNtaXNjLmM6IGV4cG9ydCBtYWtlc29jaygpCgoJKiBzdXBwb3J0L2luY2x1ZGUvcnBjbWlzYy5oIChtYWtlc29jayk6IERlY2xhcmVkLgoKCSogdXRpbHMvcnF1b3RhZC9ycXVvdGFfc3ZjLmM6IGFkZGVkIGxvbmdvcHRzLCBhZGRlZCBzdXBwb3J0IGZvcgoJc3BlY2lmeWluZyB0aGUgcG9ydCB0byBiaW5kIHRvIG9uIHRoZSBjb21tYW5kIGxpbmUuCgoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jOiBkaXR0bywgYWxzbyBzcGVjaWZ5IHBvcnQgdXNlZCBmb3IKCW91dGdvaW5nIGNvbm5lY3Rpb25zLgoJKGRvX3JlZ2lzdCk6IFJlbW92ZWQuCgoJKiB1dGlscy9zdGF0ZC9ybXRjYWxsLmMgKHN0YXRkX2dldF9zb2NrZXQpOiBSZW5hbWVkIGZyb20KCWdldF9zb2NrZXQuIE1ha2UgaXQgZXh0ZXJuLgoKCSogdXRpbHMvc3RhdGQvc2ltdWxhdGUuYyAoZGFlbW9uX3NpbXVsYXRvcik6IENhbGwgcnBjX2luaXQKCWluc3RlYWQgb2YgZG9fcmVnaXN0LgoKCSogdXRpbHMvc3RhdGQvTWFrZWZpbGUgKExJQlMpOiBsaW5rIHdpdGggb3VyIG93biBsaWJuZnMKCjIwMDEtMDMtMDkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mc2xvY2suaW5pdDogQ2hhbmdlZCBjaGtjb25maWcgbGluZSB0byA2MCA4Ni4KCSogZXRjL25vZGlzdC9uZnMtY2xpZW50OiBMaWtld2lzZS4KCjIwMDEtMDItMjYgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDAuMy4xLTEuCgkqIE1lbnRpb24gdXBzdHJlYW0gc291cmNlIGFuZCBsaWNlbnNlIGluIGNvcHlyaWdodCBmaWxlLgoJKiBBZGQgYnVpbGQtRGVwZW5kcyBmb3IgZGViaGVscGVyIGFuZCBsaWJ3cmFwMC1kZXYuCgoyMDAxLTAyLTIwICBMb24gSG9oYmVyZ2VyIDxob2hiZXJnZXJAbWlzc2lvbmNyaXRpY2FsbGludXguY29tPgoKCSogZXRjL25vZGlzdC9uZnMtc2VydmVyOiBDaGFuZ2VkIGNoa2NvbmZpZyBsaW5lIHRvIDYwIDIwCgkqIGV0Yy9ub2Rpc3QvbmZzLWNsaWVudDogTGlrZXdpc2UuCgoyMDAxLTAyLTE4ICBMb24gSG9oYmVyZ2VyIDxob2hiZXJnZXJAbWlzc2lvbmNyaXRpY2FsbGludXguY29tPgoKCSogdXRpbHMvc3RhdGQvc3RhdGQubWFuOiBDaGFuZ2VkIC91c3Ivc2Jpbi9ycGMuc3RhdGQgdG8KCS9zYmluL3JwYy5zdGF0ZC4KCjIwMDEtMDItMTcgIFBhdHJpY2sgSi4gTG9QcmVzdGkgPHBhdGxAY3VybC5jb20+CgoJKiB1dGlscy9zdGF0ZC9sb2cuYyAobG9nX2luaXQpOiBVc2UgTE9HX0RBRU1PTiBpbnN0ZWFkIG9mCglMT0dfTE9DQUw1LgoKMjAwMS0wMi0xNCAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL3N0YXRkL3JtdGNhbGwuYzogSW5jbHVkZSA8dGltZS5oPi4KCSogdXRpbHMvc3RhdGQvc3ZjX3J1bi5jOiBMaWtld2lzZS4KCjIwMDEtMDItMTQgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMy4xIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IExpa2V3aXNlLgoKCSogUkVBRE1FOiBVcGRhdGVkIGZvciAwLjMuMS4KCjIwMDEtMDItMTQgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBzdXBwb3J0L25mcy9ycGNtaXNjLmM6IEluY2x1ZGUgPHRpbWUuaD4uCgoyMDAxLTAyLTE0ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHZhbGludXguY29tPgoKCSogZGViaWFuL2NvbnRyb2w6IENoYW5nZSBwcmlvcml0eSBvZiBuaGZzc3RvbmUgcGFja2FnZSB0byAnZXh0cmEnLgoKMjAwMS0wMi0xMiAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIGRlYmlhbi9jaGFuZ2Vsb2c6IFZlcnNpb24gMC4zLTIuCgoyMDAxLTAyLTAyICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogc3VwcG9ydC9pbmNsdWRlL3JwY21pc2MuaCAocnBjX2luaXQpOiBSZW1vdmUgYnVmc2l6ZS4KCQoJKiBzdXBwb3J0L25mcy9ycGNtaXNjLmMgKG1ha2Vzb2NrKTogUmVtb3ZlIHNvY2tzeiBhbmQgY29tbWVudAoJb3V0IFNPX1NOREJVRi9TT19SQ1ZCVUYuCgkocnBjX2luaXQpOiBSZW1vdmUgYnVmc2l6ZSBhbmQgcmVtb3ZlIHNvY2tzeiBpbiBjYWxscyB0bwoJbWFrZXNvY2sgKCkuCgoJKiB1dGlscy9tb3VudGQvbW91bnRkLmMgKG1haW4pOiBSZW1vdmUgYnVmc2l6ZSBpbiBjYWxscyB0bwoJcnBjX2luaXQgKCkuCgoyMDAxLTAxLTI4ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHZhbGludXguY29tPgoKCSogZGViaWFuL2NoYW5nZWxvZzogVmVyc2lvbiAwLjMtMS4KCjIwMDEtMDEtMjUgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMyIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIG5mcy11dGlscy5zcGVjOiBMaWtld2lzZS4KCgkqIFJFQURNRTogVXBkYXRlZCBmb3IgMC4zLgoKMjAwMS0wMS0yNSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL2xvY2tkL2xvY2tkLmMgKG1haW4pOiBJZ25vcmUgZXJybm8gPT0gRUlOVkFMLgoKMjAwMS0wMS0yMCAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIHN1cHBvcnQvaW5jbHVkZS94aW8uaCAoeGdldGMpOiBEZWNsYXJlIHRvIHJldHVybiBpbnQuCgkqIHN1cHBvcnQvbmZzL3hpby5jICh4Z2V0Yyk6IFJldHVybiBpbnQuCgkoeGdldHRvaywgeHNraXAsIHhza2lwY29tbWVudCk6IFVzZSBpbnQgZm9yIHZhbHVlIG9mIHhnZXRjLgoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jIChtYWluKTogVXNlIGludCBmb3IgdmFsdWUgb2YgZ2V0b3B0LgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDAuMi4xLTUuCgkKMjAwMC0xMi0xMCAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIHV0aWxzL3N0YXRkL21vbml0b3IuYyAoc21fbW9uXzFfc3ZjKTogRml4IGJ1Z2d5IGNoZWNrIGZvcgoJcHJvZ3JhbSBhbmQgcHJvY2VkdXJlIG51bWJlcnMgb2Yga2VybmVsIGxvY2tkJ3MgY2FsbGJhY2suICBBbHNvLAoJYmVzaWRlcyB0aGUgb2xkIChhbmQgYnJva2VuKSBwcm9jZWR1cmUgIzI0LCBhbGxvdyAjMTYgcGVyIFRyb25kLgoKMjAwMC0xMi0wMyAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIHN1cHBvcnQvbmZzL3hpby5jICh4Zm9wZW4pOiBJbml0aWFsaXplIHhfbGluZSB0byBvbmUsIG5vdCB6ZXJvLgoJKiBkZWJpYW4vY29udHJvbDogTGV0IG5oZnNzdG9uZSByZXBsYWNlIGZpbGVzIGluIG5mcy1rZXJuZWwtc2VydmVyLgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDAuMi4xLTQuCgoyMDAwLTExLTI3ICBUb2JpYXMgUmluZ3N0cm9tIDx0b3JpQHRlbGx1cy5taW5lLm51PgoKCSogdXRpbHMvbW91bnRkL2F1dGguYyAoYXV0aF9hdXRoZW50aWNhdGUpOiBMb2cgdGhlIGJhZCBwYXRoCgl3YXJuaW5nLgoKMjAwMC0xMS0yNCAgTmVpbCBCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKICAgICAgICAqIHN1cHBvcnQvbmZzL2V4cG9ydHMuYyAoZ2V0ZXhwb3J0ZW50KTogQ2hlY2sgZm9yIGhvc3QgbmFtZQoJd2l0aG91dCBvcHRpb24sIG9yIG9wdGlvbnMgd2l0aG91dCBob3N0bmFtZSwgYW5kIHByaW50IGEgd2FybmluZywKCWFzIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSB0eXBvLgoKMjAwMC0xMS0xOSAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIGRlYmlhbi9jb250cm9sOiBBZGQgZGVwZW5kZW5jeSBvbiBwb3J0bWFwLgoJKiBkZWJpYW4vY2hhbmdlbG9nOiBWZXJzaW9uIDAuMi4xLTMuCgoyMDAwLTExLTEwICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogbmZzLXV0aWxzLnNwZWMuaW46IERvbid0IHVzZSBsaWJ0b29sLgoJQWRkIENoYW5nZUxvZyBhbmQgQ09QWUlORyB0byBkb2MuCgkqIG5mcy11dGlscy5zcGVjOiBSZWJ1aWxkLgoKMjAwMC0xMS0wOSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGV0Yy9yZWRoYXQvbmZzLmluaXQgKHN0YXJ0KTogQmFjayBvdXQgdGhlIGxhc3QgY2hhbmdlLgoKMjAwMC0xMS0wOSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGV0Yy9yZWRoYXQvbmZzLmluaXQgKHN0YXJ0KTogUGFzcyAtLW5vLXRjcCB0byBtb3VudGQgaWYKCVRDUCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGtlcm5lbC4KCgkqIHN1cHBvcnQvbmZzL3JwY21pc2MuYyAocnBjX2luaXQpOiBEb24ndCBzZXQgX3JwY2ZkdHlwZSB0byAwLgoKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jIChsb25nb3B0cyk6IEFkZCAiLW4vLS1uby10Y3AiLgoJKG1haW4pOiBTZXQgdG8gX3JwY2ZkdHlwZSB0byBTT0NLX0RHUkFNIGZvciAiLW4vLS1uby10Y3AiLgoKCSogdXRpbHMvbW91bnRkL21vdW50ZC5tYW46IFVwZGF0ZWQgZm9yICItbi8tLW5vLXRjcCIuCgoyMDAwLTEwLTI0ICBMb24gSG9oYmVyZ2VyIDxob2hiZXJnZXJAbWlzc2lvbmNyaXRpY2FsbGludXguY29tPgoKCSogdXRpbHMvc3RhdGQvY2FsbGJhY2suYzogRml4IGJ1ZyBwcmV2ZW50aW5nIGNhbGxiYWNrcyB0byBsb2NhbCBsb2NrZC4KCSogdXRpbHMvc3RhdGQvcm10Y2FsbC5jOiBBZGQgc29tZSBJUCBhZGRyZXNzIHBhcmFub2lhIHdoZW4gZG9pbmcKCWNhbGxiYWNrcyB0byBsb2NhbCBsb2NrZC4KCjIwMDAtMTAtMTggIFNjb3R0IE1jRGVybW90dCA8bWNkZXJtb3RAcXVlc3RyYS5jb20+CgoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRzLm1hbjogVXBkYXRlZCBmb3IgQ0lEUiBuZXRtYXNrLgoKMjAwMC0xMC0xNyAgU2NvdHQgTWNEZXJtb3R0IDxtY2Rlcm1vdEBxdWVzdHJhLmNvbT4KCgkqIHN1cHBvcnQvZXhwb3J0L2NsaWVudC5jIChjbGllbnRfaW5pdCk6IFN1cHBvcnQgQ0lEUiBuZXRtYXNrCglpbiAvZXRjL2V4cG9ydHMuCgoyMDAwLTEwLTExICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogYWNsb2NhbC5tNCAoQUNfVENQX1dSQVBQRVIpOiBGaXggYSB0eXBvLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAwLTEwLTA2ICBMb24gSG9oYmVyZ2VyIDxob2hiZXJnZXJAbWlzc2lvbmNyaXRpY2FsbGludXguY29tPgoKCSogdXRpbHMvc3RhdGQvc3RhdGQubWFuOiBDaGFuZ2UgIi92YXIvbGliL25mcy9zbS9zdGF0ZSIgdG8KCSIvdmFyL2xpYi9uZnMvc3RhdGUiLgoKMjAwMC0xMC0wNSAgTG9uIEhvaGJlcmdlciA8aG9oYmVyZ2VyQG1pc3Npb25jcml0aWNhbGxpbnV4LmNvbT4KCgkqIHV0aWxzL3N0YXRkL3N0YXRkLmggKHJ1bl9tb2RlKTogTmV3IGdsb2JhbCBiaXRtYXNrIG9mIHJ1bnRpbWUKCWJlaGF2aW9yczogZmcvYmcsIGxvZ2dpbmcsIGV0Yy4KCSogdXRpbHMvc3RhdGQvc3RhdGQuYzogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zOiAtViAtaCAtPyAtZCAuCgkqIHV0aWxzL3N0YXRkL3N0YXRkLm1hbjogVXBkYXRlIGZvciBjaGFuZ2VzIHRvIHN0YXRkLgoKCSogdXRpbHMvc3RhdGQvbG9nLmggKGxvZ19pbml0KTogUmVtb3ZlIHBhcmFtZXRlciBvZiBmdW5jdGlvbjsgdXNlCglnbG9iYWwgdmFyaWFibGUgIm5hbWVfcCIgaW5zdGVhZC4KCSogdXRpbHMvc3RhdGQvbG9nLmM6IEFkZCBzdXBwb3J0IGZvciBsb2dnaW5nIHRvIHN0ZGVyci4KCgkqIHV0aWxzL3N0YXRkL25vdGxpc3QuYzogUGFydGlhbGx5IHJld3JpdGUgbm90aWZ5IGxpc3QgaGFuZGxpbmcKCWZ1bmN0aW9ucy4gIEVsaW1pbmF0ZSBydW4tb2ZmLWVuZC1vZi1saXN0IGJ1ZyB3aGVuIGNhbGxpbmcKCW5saXN0X2luc2VydF90aW1lci4gIEFkZCBsb3RzIG9mIGNvbW1lbnRzLgoJCjIwMDAtMDktMjcgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBSRUFETUU6IFVwZGF0ZWQgZm9yIFJlZEhhdCA3LjAuCgoyMDAwLTA5LTI3ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogbmZzLXV0aWxzLnNwZWM6IFJlYnVpbGQuCgoyMDAwLTA5LTI3ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogUkVBRE1FOiBVcGRhdGVkIGZvciAwLjIuMS4KCjIwMDAtMDktMjcgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBuZnMtdXRpbHMuc3BlYy5pbjogVXBkYXRlZCB0byB1c2UgcnBtIG1hY3JvcyBhbmQgc3VwcG9ydAoJUmVkSGF0IDcuMC4KCjIwMDAtMDktMjUgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMi4xIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoyMDAwLTA5LTI1ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogdXRpbHMvbW91bnRkL2F1dGguYyAoYXV0aF9hdXRoZW50aWNhdGVfaW50ZXJuYWwpOiBNYWtlIHN1cmUgYQoJbm9uLU5VTEwgaG9zdGVudCBpcyBhbHdheXMgcmV0dXJuZWQuCgoyMDAwLTA5LTExICBJb24gQmFkdWxlc2N1ICA8aW9udXRAY3MuY29sdW1iaWEuZWR1PgoKCSogZXRjL3JlZGhhdC9uZnNsb2NrLmluaXQ6IGRvbid0IGtpbGwgbG9ja2QgcHJvY2Vzc2VzIHRoYXQgZG8gbm90CgloYXZlIGFuIGV4ZWN1dGFibGUgKGkuZS4ga2VybmVsIHRocmVhZHMpCgoyMDAwLTA5LTAxICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogUkVBRE1FOiBVcGRhdGVkIGZvciAwLjIuCgoyMDAwLTA5LTAxICBKYXkgV2ViZXIgPGp3ZWJlckB2YWxpbnV4LmNvbT4KCgkqIGV0Yy9yZWRoYXQvbmZzLmluaXQ6IEFkZGVkIGFiaWxpdHkgZm9yIHJwYy5tb3VudGQgdG8gZGVmYXVsdCB0bwoJc3VwcG9ydGluZyB2ZXJzaW9uIDMgb2YgbmZzIGlmIGF2YWlsYWJsZSwgZWxzZSBpdCB3aWxsIGZhbGwgYmFjayB0bwoJdmVyc2lvbiAyIHN1cHBvcnQgb25seS4KCjIwMDAtMDgtMzAgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMiIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIG5mcy11dGlscy5zcGVjOiBVcGRhdGVkLgoKMjAwMC0wOC0yNSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHN1cHBvcnQvbWlzYy90Y3B3cmFwcGVyLmMgKGxvZ2l0KTogTW9kaWZ5IHRoZSBsb2cgb3V0cHV0LgoKMjAwMC0wOC0yNSAgSW9uIEJhZHVsZXNjdSAgPGlvbnV0QGNzLmNvbHVtYmlhLmVkdT4KCgkqIHV0aWxzL3JxdW90YWQvcnF1b3RhZC5tYW4sIHV0aWxzL3N0YXRkL3N0YXRkLm1hbiwKCXV0aWxzL21vdW50ZC9tb3VudGQubWFuOiB1cGRhdGVkCiAgICAgICAgCgkqIHV0aWxzL21vdW50ZC9NYWtlZmlsZSAoTElCUyk6IGFkZGVkIC1sbWlzYyAkKExJQldSQVApICQoTElCTlNMKQoJKiB1dGlscy9ycXVvdGFkL01ha2VmaWxlOiBmaXggY29tbWVudAoKCSogc3VwcG9ydC9taXNjL3RjcHdyYXBwZXIuYyAobG9naXQpOiBhZGRlZCBjb21tZW50IGFib3V0IHdhaXRpbmcKCWZvciB0aGUgY2hpbGRyZW4gYWZ0ZXIgZm9yaygpCgkKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jIChtYWluKTogaWdub3JlIFNJR0NITEQgdG8gcHJldmVudCBsZWF2aW5nCgl6b21iaWVzIGJlaGluZCAoZnJvbSBsb2dpdCgpJ3MgZm9yaykKCSogdXRpbHMvcnF1b3RhZC9ycXVvdGFfc3ZjLmMgKG1haW4pOiBkaXR0bwoJKiB1dGlscy9zdGF0ZC9zdGF0ZC5jIChtYWluKTogZGl0dG8KCgkqIHV0aWxzL3JxdW90YWQvcnF1b3RhX3N2Yy5jIChycXVvdGFwcm9nXzEpOiBwYXNzIFJRVU9UQVBST0cKCXRvIGNoZWNrX2RlZmF1bHQgaW5zdGVhZCBvZiAwLCBmb3IgcHJvZ251bQoKCSogdXRpbHMvc3RhdGQvc3RhdGQuYyAoc21fcHJvZ18xX3dyYXBwZXIpOiBwYXNzIFNNX1BST0cKCXRvIGNoZWNrX2RlZmF1bHQgaW5zdGVhZCBvZiAwLCBmb3IgcHJvZ251bQoKCSogdXRpbHMvbW91bnRkL21vdW50X2Rpc3BhdGNoLmM6IEluY2x1ZGUgInRjcHdyYXBwZXIuaCIgaWYKCUhBVkVfVENQX1dSQVBQRVIgaXMgZGVmaW5lZC4KCShtb3VudF9kaXNwYXRjaCk6IENhbGwgY2hlY2tfZGVmYXVsdCAoKSBpZiBIQVZFX1RDUF9XUkFQUEVSIGlzCglkZWZpbmVkLiBSZWplY3QgYW4gUlBDIGNhbGwgaWYgY2hlY2tfZGVmYXVsdCAoKSBmYWlscy4KCjIwMDAtMDgtMjUgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBzdXBwb3J0L2luY2x1ZGUvdGNwd3JhcHBlci5oOiBOZXcgZm9yIHRoZSB0Y3Agd3JhcHBlcgoJc3VwcG9ydC4KCSogc3VwcG9ydC9taXNjL01ha2VmaWxlOiBMaWtld2lzZS4KCSogc3VwcG9ydC9taXNjL2Zyb21fbG9jYWwuYzogTGlrZXdpc2UuCgkqIHN1cHBvcnQvbWlzYy90Y3B3cmFwcGVyLmM6IExpa2V3aXNlLgoKCSogYWNsb2NhbC5tNCAoQUNfVENQX1dSQVBQRVIpOiBOZXcuCgkqIGNvbmZpZ3VyZS5pbjogVXNlIGl0LiBTdWJzdGl0dXRlIExJQldSQVAuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCgkqIGNvbmZpZy5tay5pbiAoTElCTlNMKTogTmV3LgoJKExJQldSQVApOiBMaWtld2lzZS4KCgkqIHN1cHBvcnQvTWFrZWZpbGUgKFNVQkRJUlMpOiBBZGQgbWlzYy4KCgkqIHN1cHBvcnQvbGliL01ha2VmaWxlIChMSUJTKTogQWRkIGxpYm1pc2MuYS4KCgkqIHV0aWxzL3JxdW90YWQvTWFrZWZpbGUgKExJQlMpOiBBZGQKCQoJCS1sbWlzYyAkKExJQldSQVApICQoTElCTlNMKQoKCSogdXRpbHMvc3RhdGQvTWFrZWZpbGUgKExJQlMpOiBMaWtld2lzZS4KCgkqIHV0aWxzL3JxdW90YWQvcnF1b3RhX3N2Yy5jOiBJbmNsdWRlICJ0Y3B3cmFwcGVyLmgiIGlmCglIQVZFX1RDUF9XUkFQUEVSIGlzIGRlZmluZWQuCgkocnF1b3RhcHJvZ18xKTogQ2FsbCBjaGVja19kZWZhdWx0ICgpIGlmIEhBVkVfVENQX1dSQVBQRVIgaXMKCWRlZmluZWQuIFJlamVjdCBhbiBSUEMgY2FsbCBpZiBjaGVja19kZWZhdWx0ICgpIGZhaWxzLgoKCSogdXRpbHMvc3RhdGQvc3RhdGQuYzogSW5jbHVkZSAidGNwd3JhcHBlci5oIiBpZgoJSEFWRV9UQ1BfV1JBUFBFUiBpcyBkZWZpbmVkLgoJKHNtX3Byb2dfMV93cmFwcGVyKTogTmV3LiBBIHdyYXBwZXIgZm9yIHNtX3Byb2dfMS4gQ2FsbAoJY2hlY2tfZGVmYXVsdCAoKSBiZWZvcmUgY2FsbGluZyBzbV9wcm9nXzEgKCkuIERlZmluZSBpdCBhcwoJc21fcHJvZ18xX3dyYXBwZXIgaWYgSEFWRV9UQ1BfV1JBUFBFUiBpcyBkZWZpbmVkLgoKMjAwMC0wOC0yNSAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIGRlYmlhbi8qOiBDb21wbGV0ZSBEZWJpYW4gYnVpbGQgc3VwcG9ydC4KCSogZXRjL2RlYmlhbi8qOiBSZW1vdmUuCgoyMDAwLTA4LTI0ICBOZWlsIEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CgoJKiBzdXBwb3J0L2V4cG9ydC9jbGllbnQuYyhjbGllbnRfY2hlY2spOiByZW1vdmVkIHRoZSAiZG90KzEiIGFzIGEKCSAgeXBkb21haW4gYXJndW1lbnQgdG8gaW5uZXRnciBhcyB0aGlzIGlzIGVudGlyZWx5IGJvZ3VzLgoJICBJdCBzaG91bGQgYWx3YXlzIGJlIE5VTEwuCgkKMjAwMC0wOC0yMyAgTmVpbCBCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9leHBvcnQveHRhYi5jKHh0YWJfcmVhZCk6IGludHJvZHVjZSBuZXcgbW9kZSBmb3IKCSAgIHJlYWRpbmcgeHRhYi4gaS5lLiBhIGxpc3Qgb2YgZXhwb3J0cyB0aGF0IG1pZ2h0IGJlIGtub3duIHRvIHRoZQoJICAga2VybmVsLCBvciBtaWdodCBub3QuICBUaGVzZSBhcmUgZmxhZ2dlZCBhcyBtX2V4cG9ydGVkID09IC0xCgkqIHN1cHBvcnQvZXhwb3J0L3h0YWIuYyh4dGFiX21vdW50X3JlYWQpOiAgY2FsbCB4dGFiX3JlYWQgd2l0aCBuZXcKCSAgIHZhbHVlICIyIiBmb3IgeHRhYiwgbWVhbmluZyBkb24ndCB0cnVzdCB0aGlzIHRvbyBtdWNoLgoJKiBzdXBwb3J0L2luY2x1ZGUvZXhwb3J0ZnMuaChzdHJ1Y3QgbWV4cG9ydCk6IGNoYW5nZWQgbV9leHBvcnRlZAoJICAgZnJvbSBvbmUgYml0IHRvIGFuIGludCBzbyB0aGF0IGl0IGNhbiBob2xkIG5ldyB2YWx1ZQoJKiB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jKGV4cG9ydGZzX2lwZGF0ZSk6IGFkZCBhbiBleHBvcnQgdG8gdGhlCgkgICBrZXJuZWwgaWYgaXQgaXMgdW5jZXJ0YWluIHdoZXRoZXIgdGhlIGtlcm5lbCBrbm93cyAobV9leHBvcnRlZCA9PSAtMSkKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jKGdldF9yb290ZmgpOiBzaW1pbGFybHkgZXhwb3J0IHRvIGtlcm5lbCBpZgoJICAgc3RhdHVzIGlzIHVuY2VydGFpbgoKCSogc3VwcG9ydC9uZnMveGlvLmMoeGZsb2NrKTogYWRkZWQgT19DUkVBVCB3aGVuIGdldHRpbmcKCSAgIGEgd3JpdGUgbG9jayBzbyB0aGF0IG1pc3NpbmcgZmlsZXMgYXJlbid0IGZhdGFsLgoKCSogZXRjL2RlYmlhbi9uZnMtY29tbW9uOiBuZXcgZmlsZSBmcm9tICJwb3RhdG8iCgkqIGV0Yy9kZWJpYW4vbmZzLWtlcm5lbC1zZXJ2ZXI6IG5ldyBmaWxlIGZyb20gInBvdGF0byIgcGx1cyBmaXhlcy4KCSAKMjAwMC0wOC0wOSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGV0Yy9yZWRoYXQvbmZzLmluaXQ6IFJ1biAvdXNyL3NiaW4vZXhwb3J0ZnMgZmlyc3QgZHVyaW5nCglzdGFydHVwIHRvIGVuc3VyZSBhbGwgZXhpc3RpbmcgY2xpZW50cyB3b3JrIGZpbmUuCgoJKiBzdXBwb3J0L2V4cG9ydC94dGFiLmMgKHh0YWJfbW91bnRfcmVhZCk6IFBhc3MgMSBpbnN0ZWFkIG9mIDAKCXRvIHh0YWJfcmVhZCAoKSBmb3IgcmVhZGluZyBfUEFUSF9YVEFCLgoKMjAwMC0wOC0wMiAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL21vdW50ZC9hdXRoLmMgKGF1dGhfYXV0aGVudGljYXRlX2ludGVybmFsKTogVHJ5IHRvCglhdm9pZCB0aGUgcmV2ZXJzZSBuYW1lIGxvb2t1cC4KCjIwMDAtMDctMDQgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiB1dGlscy9zdGF0ZC9sb2cuYzogSW5jbHVkZSA8c3RkbGliLmg+IGZvciBleGl0ICgpLgoKCSogdXRpbHMvc3RhdGQvbWlzYy5jICh4dW5saW5rKTogQWRkIGB7JyBhbmQgYH0nIHRvIHF1aWV0IHRoZQoJZ2NjIHdhcm5pbmcuCgoyMDAwLTA3LTA0ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICIwLjEuOS4xIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoJKiBSRUFETUU6IFVwZGF0ZWQuCgoyMDAwLTA3LTA0ICBOZWlsIEJyb3duICA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9leHBvcnQvaG9zdG5hbWUuYyAoaG9zdGVudF9kdXApOiBIYW5kbGUgdGhlIE5VTEwKCWhfYWxpYXNlcyBmaWVsZC4KCjIwMDAtMDctMDMgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBSRUFETUU6IFVwZGF0ZSB0aGUgdXRpbC1saW51eCByZXF1aXJlbWVudC4KCjIwMDAtMDctMDMgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMS45Ii4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoJKiBSRUFETUU6IFVwZGF0ZWQuCgoyMDAwLTA3LTAzICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogZXRjL3JlZGhhdC9uZnMuaW5pdDogUnVuIC91c3Ivc2Jpbi9leHBvcnRmcyBsYXN0IGR1cmluZwoJc3RvcCB0byBlbnN1cmUgYWxsIGNsaWVudHMgY2FuIHN0aWxsIGFjY2VzcyB0aGUgc2VydmVyCgliZWZvcmUgaXQgaXMgc2h1dGRvd24uCgoyMDAwLTA2LTMwICBKZWZmIFVwaG9mZiA8anVwaG9mZkB0cmFuc21ldGEuY29tPgoKCSogdG9vbHMvcnBjZ2VuL3JwY19zdmNvdXQuYyAod3JpdGVfbXNnX291dCk6IEdlbmVyYXRlIHN5c2xvZygpCiAJY2FsbHMgd2l0aCBmb3JtYXQgc3RyaW5nLgoJCjIwMDAtMDYtMjggIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgoJKiB1dGlscy9zdGF0ZC9sb2cuYyAobG9nKTogQ2FsbCBzeXNsb2cgd2l0aCBmb3JtYXQgc3RyaW5nLgoKMjAwMC0wNi0yNyAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL3N0YXRkL3N0YXRkLmMgKG1haW4pOiBVc2Ugc3lzY29uZiAoX1NDX09QRU5fTUFYKQoJaW5zdGVhZCBvZiBPUEVOX01BWC4KCjIwMDAtMDYtMjcgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBSRUFETUU6IFVwZGF0ZWQuCgoyMDAwLTA2LTI3ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogZXRjL3JlZGhhdC9uZnMuaW5pdDogUnVuIC91c3Ivc2Jpbi9leHBvcnRmcyBsYXN0IGR1cmluZwoJc3RhcnR1cCB0byBlbnN1cmUgYWxsIGV4aXN0aW5nIGNsaWVudHMgYXJlIGV4cG9ydGVkLgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICIwLjEuOC4yIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoyMDAwLTA2LTA2ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICIwLjEuOC4xIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoyMDAwLTA2LTA2ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jIChtb3VudF9kdW1wXzFfc3ZjKTogQ2FzdCBzdmNfZ2V0Y2FsbGVyCgl0byAic3RydWN0IHNvY2thZGRyX2luICoiIGZvciBnbGliYyAyLjIuCgkobW91bnRfdW1udF8xX3N2Yyk6IExpa2V3aXNlLgoJKG1vdW50X3VtbnRhbGxfMV9zdmMpOiBMaWtld2lzZS4KCShtb3VudF9leHBvcnRfMV9zdmMpOiBMaWtld2lzZS4KCShtb3VudF9leHBvcnRhbGxfMV9zdmMpOiBMaWtld2lzZS4KCShtb3VudF9wYXRoY29uZl8yX3N2Yyk6IExpa2V3aXNlLgoJKGdldF9yb290ZmgpOiBMaWtld2lzZS4KCjIwMDAtMDYtMDQgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mcy5pbml0OiBGaXggYSB0eXBvIGluIGNvbW1lbnQuCgoyMDAwLTA1LTMxICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICIwLjEuOCIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIG5mcy11dGlscy5zcGVjOiBVcGRhdGVkLgoKCSogUkVBRE1FOiBVcGRhdGVkLgoKMjAwMC0wNS0zMSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFNldCB0byAiMC4xLjcuNSIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIG5mcy11dGlscy5zcGVjOiBVcGRhdGVkLgoKCSogc3VwcG9ydC9pbmNsdWRlL25mc2xpYi5oIChleHBvcnRlbnQpOiBBZGQgYSBuZXcgZmllbGQsCglyX2NvdW50LCB0byBjb3VudCB0aGUgbnVtYmVyIG9mIG1vdW50cyBmcm9tIGEgY2xpZW50LgoJKGdldHJtdGFiZW50KTogVGFrZSBhIG5ldyBhcmd1bWVudCBmb3IgcG9zaXRpb24gaW4gZmlsZS4KCShwdXRybXRhYmVudCk6IExpa2V3aXNlLgoJKGZnZXRybXRhYmVudCk6IExpa2V3aXNlLgoJKGZwdXRybXRhYmVudCk6IExpa2V3aXNlLgoJKiBzdXBwb3J0L25mcy9ybXRhYi5jIChnZXRybXRhYmVudCk6IEhhbmRsZSB0aGUgbmV3IGFyZ3VtZW50Cglmb3IgcG9zaXRpb24gaW4gZmlsZS4KCShmZ2V0cm10YWJlbnQpOiBMaWtld2lzZS4KCShwdXRybXRhYmVudCk6IExpa2V3aXNlLgoJKGZwdXRybXRhYmVudCk6IExpa2V3aXNlLgoKCSogc3VwcG9ydC9uZnMvcm10YWIuYyAoZmdldHJtdGFiZW50KTogR2V0IHZhbHVlIGZvciB0aGUgbmV3CglmaWVsZCwgcl9jb3VudC4KCgkqIHN1cHBvcnQvZXhwb3J0L3JtdGFiLmMgKHJtdGFiX3JlYWQpOiBQYXNzIE5VTEwgYXMgdGhlIG5ldwoJYXJndW1lbnQgdG8gZ2V0cm10YWJlbnQgKCksIGZnZXRybXRhYmVudCAoKSwgcHV0cm10YWJlbnQgKCkKCWFuZCBmcHV0cm10YWJlbnQgKCkuCgkqIHV0aWxzL21vdW50ZC9ybXRhYi5jIChtb3VudGxpc3RfYWRkKTogTGlrZXdpc2UuCgkobW91bnRsaXN0X2RlbCk6IExpa2V3aXNlLgoJKG1vdW50bGlzdF9kZWxfYWxsKTogTGlrZXdpc2UuCgkobW91bnRsaXN0X2xpc3QpOiBMaWtld2lzZS4KCgkqIHV0aWxzL21vdW50ZC9ybXRhYi5jIChtb3VudGxpc3RfYWRkKTogSW5jcmVtZW50ICJyX2NvdW50IgoJZm9yIHRoZSBleGlzdGluZyBlbnRyeSBhbmQgaW5pdGlhbGl6ZSAicl9jb3VudCIgdG8gMS4KCShtb3VudGxpc3RfZGVsKTogRGVjcmVtZW50ICJyX2NvdW50Ii4KCjIwMDAtMDUtMTggIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMS43LjQiLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBuZnMtdXRpbHMuc3BlYzogVXBkYXRlZC4KCjIwMDAtMDUtMTggIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mcy5pbml0IChyZXN0YXJ0KTogSnVzdCBkbyBzdG9wIGFuZCBzdGFydC4KCjIwMDAtMDUtMDkgIEpheSBXZWJlciA8andlYmVyQHZhbGludXguY29tPgoKCSogdXRpbHMvcnF1b3RhZC9oYXNxdW90YS5jOiBhZGRlZCBzdXBwb3J0IGZvciBleHQzIHJlY29nbml0aW9uCglpbiBycXVvdGFkLgoJKiB1dGlscy9ycXVvdGFkL21udGVudC5oOiBMaWtld2lzZS4KCjIwMDAtMDUtMDEgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMS43LjMiLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBuZnMtdXRpbHMuc3BlYzogVXBkYXRlZC4KCjIwMDAtMDUtMDEgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiB1dGlscy9ycXVvdGFkL3JxdW90YV9zZXJ2ZXIuYyAoZ2V0cXVvdGFpbmZvKTogU2tpcCBiYWQKCW1vdW50aW5nIHBvaW5zIGluIC9ldGMvZnN0YWIuCgoyMDAwLTA1LTAxICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICIwLjEuNy4yIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoyMDAwLTA1LTAxICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogdXRpbHMvcnF1b3RhZC9ycXVvdGFfc2VydmVyLmMgKGdldHF1b3RhaW5mbyk6IENhbGwgc3RhdCAoKQoJdG8gY2hlY2sgZm9yIHRoZSBtb3VudGluZyBwb2ludC4KCjIwMDAtMDQtMjkgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgkgICAgTmVpbCBCcm93biAgPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIFJlYWxseSByZS11c2UgUlBDIHBvcnRzLgoJICAoRml4ZXMgZWFybGllciBwYXRjaC4gIFNvcnJ5LCBOZWlsLikKCjIwMDAtMDQtMjYgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMS43LjEiLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBuZnMtdXRpbHMuc3BlYzogVXBkYXRlZC4KCjIwMDAtMDQtMjYgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBldGMvcmVkaGF0L25mc2xvY2suaW5pdDogQ2hlY2sgaWYgbG9ja2QgZXhpdHMgYmVmb3JlIGtpbGxpbmcKCWl0LgoKMjAwMC0wNC0yNSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIFJFQURNRTogUmVxdWlyZSB1dGlsLWxpbnV4LTIuMTBmLW1vdW50LXJwYy5wYXRjaCBmb3IgbW91bnQuCgoyMDAwLTAzLTIxIE1pY2hhZWwgV2Vpc2VyIDxtaWNoYWVsQHdlaXNlci5zYWFsZS1uZXQuZGU+CgoJKiBzdXBwb3J0L25mcy9leHBvcnRzLmMgKHBhcnNlc3F1YXNoKTogQ29ycmVjdGx5IHNldCB0aGUKCXJldHVybiBwb2ludGVyLgoKVHVlIE1hciAyMSAxMTozODo0OCBFU1QgMjAwMCBOZWlsQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHN1cHBvcnQvaW5jbHVkZS9uZnMvbmZzLmg6IFJlbW92ZWQga25vd2xlZGdlIG9mIGludGVybmFscyBvZgoJICAgICBrZXJuZWwgZmlsZWhhbmRsZXMgKHdoaWNoIGNhbiBjaGFuZ2UpIGFuZCBkZWZpbmVkIG5mc19maF9zaXplCgkgICAgIHdoaWNoIGhhcyB2YXJpYWJsZSBzaXplCgkKCSogc3VwcG9ydC9uZnMvZ2V0ZmguYzogZGVmaW5lZCBnZXRmaF9zaXplIHRvIHVzZSBuZXcgc3lzY2FsbCB0bwoJICAgICBnZXQgdmFyaWFibGUgc2l6ZWQgZmlsZSBoYW5kbGVzLCBhbmQgY2hhbmdlIGdldGZoeyxvbGR9IHRvCgkgICAgIHVzZSBuZnNfZmhfc2l6ZQkgICAgCgkKCSogdXRpbHMvbW91bnRkL21vdW50ZC5jOiB1c2UgbmZkX2ZoX3NpemUgYW5kIGNhbGwgZ2V0Zmhfc2l6ZSBmb3IKCSAgICAgTkZTdjMgZmlsZSBoYW5kbGVzCgoJKiB0b29scy9NYWtlZmlsZSwgdG9vbHMvbmxtdGVzdC9ubG10ZXN0LmMKCSAgICAgbmxtdGVzdC5jIGRlcGVuZGVkIG9uIGludGVybmVsIGZvcm1hdCBvZiBmaWxlIGhhbmRsZXMsIHNvIG5vdwoJICAgICBkb2Vzbid0IHdvcmsuCgoJCjIwMDAtMDMtMTIgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgkgICAgTmVpbCBCcm93biAgPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHN1cHBvcnQvbmZzL3JwY21pc2MuYyAocnBjX2luaXQpOiBTaGFyZSB0cmFuc3BvcnRzLgoKMjAwMC0wMy0xMyBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogZXRjL3JlZGhhdC9uZnNkLmluaXQ6IFVwZGF0ZWQuCgoJKiBldGMvcmVkaGF0L25mc2xvY2suaW5pdDogVXBkYXRlZC4KCgkqIG5mcy11dGlscy5zcGVjLmluOiBVcGRhdGVkLgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICIwLjEuNyIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIG5mcy11dGlscy5zcGVjOiBVcGRhdGVkLgoKCSogUkVBRE1FOiBVcGRhdGVkLgoKV2VkIE1hciAgOCAwOTo0Mjo0MyAyMDAwIE5laWwgQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMgKGR1bXApOiBJbmNsdWRlZCBwcmludGluZyBvZgoJICAgbm9oaWRlLCBub19zdWJ0cmVlX2NoZWNrLCBhbmQgaW5zZWN1cmVfbG9ja3MKCjIwMDAtMDItMjYgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgoJKiBjb25maWcubWsuaW4gKElOU1RBTExTVUlEKTogU3RyaXAgKCItcyIpLgoJKElOU1RBTExTQ1JJUFQpOiBEZWZpbmUuCgkqIHV0aWxzL25oZnNzdG9uZS9NYWtlZmlsZTogVXNlIGl0LgoKMjAwMC0wMi0yNiAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIHV0aWxzL2xvY2tkL2xvY2tkLm1hbjogQ3JlYXRlLgoJKiB1dGlscy9sb2NrZC9NYWtlZmlsZTogSW5zdGFsbCBpdC4KCSogdXRpbHMvbmhmc3N0b25lL25oZnN7cnVuLG51bXMsZ3JhcGh9Lm1hbjogQ3JlYXRlLgoJKiB1dGlscy9uaGZzc3RvbmUvbmhmc3N0b25lLm1hbjogQ2hhbmdlIHN1ZmZpeCBmcm9tICIuMSIuCgkqIHV0aWxzL25oZnNzdG9uZS9NYWtlZmlsZTogSW5zdGFsbCB0aGUgaGVscGVyIHNjcmlwdHMgYW5kCgkgIGFsbCBmb3VyIG1hbiBwYWdlcy4KCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0cy5tYW46IEZpeCB0eXBvLgoKMjAwMC0wMi0yNiAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIHN1cHBvcnQvbmZzL3hpby5jICh4dW5nZXRjKTogRGVjcmVtZW50IGxpbmUgbnVtYmVyIHdoZW4KCWNoYXJhY3RlciB0byB1bmdldCBpcyBuZXdsaW5lLiAgTWFrZSBmaXJzdCBwYXJhbWV0ZXIgaW50LCBzbwoJaXQgY2FuIGRpc3Rpbmd1aXNoIEVPRiBmcm9tIFwzNzcuCgkqIHN1cHBvcnQvaW5jbHVkZS94aW8uaCAoeHVuZ2V0Yyk6IEFkanVzdCBwcm90b3R5cGUuCgpGcmkgRmViICA0IDIzOjQyOjIzIDIwMDAgTmVpbCBCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9pbmNsdWRlL25mcy9leHBvcnQuaDogYWRkZWQgTkZTRVhQX05PQVVUSE5MTQoJKiBzdXBwb3J0L25mcy9leHBvcnRzLmM6IGFkZGVkIGhhbmRsaW5nIGZvciBORlNFWFBfTk9BVVRITkxNCgkqIHV0aWxzL2V4cG9ydGZzL2V4cG9ydHMubWFuOiBhZGRlZCBkb2N1bWVudGF0aW9uIGZvciBub19hdXRoX25sbS4KCglUaGlzIGlzIGZvciBzdXBwb3J0aW5nIGEgbmV3IG9wdGlvbiBpbnRyb2R1Y2VkIGluIDIuMy40MgoKVGh1IEZlYiAgMyAxNDo1NTo0OCAyMDAwIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBDT1BZSU5HOiBBZGRlZC4gR1BMLgoKVGh1IEZlYiAwMyAxNDo0MDo0MCAyMDAwIENyaXN0aWFuIEdhZnRvbiA8Z2FmdG9uQHJlZGhhdC5jb20+CgoJKiB1dGlscy9ycXVvdGFkL3JxdW90YV9zZXJ2ZXIuYyAoZ2V0cXVvdGFpbmZvKTogQ2FsbCBzdGF0ZnMgKCkKCXRvIGdldCB0aGUgYmxvY2sgc2l6ZS4KClR1ZSBKYW4gMjUgMTE6MDQ6MTcgMjAwMCBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogbmZzLXV0aWxzLnNwZWMuaW46IFVwZGF0ZSBmdHAgc2l0ZS4KCk1vbiBKYW4gMTcgMTE6NDg6MTggMjAwMCBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogUkVBRE1FOiBVcGRhdGUgaG9zdG5hbWVzLgoKVHVlIEphbiAxMSAxMDowNjoyMiAyMDAwIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMS42Ii4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoJKiBSRUFETUU6IFVwZGF0ZWQuCgpNb24gSmFuIDEwIDE0OjI2OjMzIDIwMDAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL21vdW50ZC9hdXRoLmMgKGF1dGhfYXV0aGVudGljYXRlX2ludGVybmFsKTogQ2FsbAoJeHN0cmR1cCBmb3IgaG9zdG5hbWUgYmVmb3JlIHBhc3NpbmcgaXQgdG8gZ2V0aG9zdGJ5bmFtZS4KCgkqIHV0aWxzL21vdW50ZC9tb3VudGQuYyAoZ2V0X2V4cG9ydGxpc3QpOiBVc2UgeHN0cmR1cCBpbnN0ZWFkCglvZiBzdHJkdXAuCgpTdW4gRGVjIDE5IDA5OjM1OjAxIDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBSRUFETUU6IFVwZGF0ZSB0aGUgbWFpbGluZyBsaXN0IGFkZHJlc3MuCgpTdW4gRGVjIDE5IDA5OjIyOjI4IDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMS41Ii4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoJKiBSRUFETUU6IFVwZGF0ZWQuCgpNb24gRGVjIDEzIDEzOjQwOjIwIDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiB1dGlscy9ycXVvdGFkL2hhc3F1b3RhLmMgKGhhc3F1b3RhKTogTWFsbG9jIG9uZSBtb3JlIGNoYXIKCWZvciAnLycuCgpNb24gRGVjICA2IDA5OjQyOjQ1IDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIjAuMS40Ii4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogbmZzLXV0aWxzLnNwZWM6IFVwZGF0ZWQuCgoJKiBSRUFETUU6IFVwZGF0ZWQuCgpNb24gRGVjICA2IDA5OjI4OjA3IDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBuZnMtdXRpbHMuc3BlYy5pbjogTmV3IGZpbGUuCgoJKiBjb25maWcubWsuaW4gKFZFUlNJT04pOiBDaGFuZ2VkIHRvICJuZnMtdXRpbHMgQFZFUlNJT05AIi4KCgkqIGNvbmZpZ3VyZS5pbiAobmZzLXV0aWxzLnNwZWMpOiBBZGRlZCB0byBBQ19PVVRQVVQuCgoxOTk5LTEyLTA0ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHZhbGludXguY29tPgoKCSogY29uZmlnLm1rLmluOiBVc2UgJChDQykgYXMgc2V0IGJ5IGNvbmZpZ3VyZS4KCjE5OTktMTItMDQgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgoJKiBydWxlcy5tazogQ2FsbCAkKE1BS0UpIHdpdGggJChNRkxBR1MpLgoKTW9uIE5vdiAyOSAxMToxNzozNSAxOTk5ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogdG9vbHMvcnBjZ2VuL3JwY19tYWluLmMgKGhfb3V0cHV0KTogR2VuZXJhdGUgSVhEUl9HRVRfSU5UMzIsCglJWERSX1BVVF9JTlQzMiwgSVhEUl9HRVRfVV9JTlQzMiBhbmQgSVhEUl9QVVRfVV9JTlQzMi4KCk1vbiBOb3YgMjkgMTE6MTc6MzUgMTk5OSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIG5mcy11dGlscy5zcGVjIChWZXJzaW9uKTogU2V0IHRvIDAuMS4zLgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICJuZnMtdXRpbHMgMC4xLjMiLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogUkVBRE1FOiBVcGRhdGVkLgoKTW9uIE5vdiAyOSAxMToxNTo0NyAxOTk5ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogdXRpbHMvcnF1b3RhZC9ycXVvdGFfc2VydmVyLmMgKG5mc21vdW50X3RvX2Rldm5hbWUpOiBSZW1vdmVkLgoJKF9QQVRIX0RFVl9EU0spOiBMaWtld2lzZS4KCShnZXRxdW90YWluZm8pOiBNYXRjaCB0aGUgbW91bnRpbmcgcG9pbnQgZnJvbSAvZXRjL210YWIKCWluc3RlYWQgb2YgY2FsbGluZyBuZnNtb3VudF90b19kZXZuYW1lICgpLgoKMTk5OS0xMS0yNCAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCgkqIHV0aWxzL3N0YXRkL21vbml0b3IuYyAoc21fbW9uXzFfc3ZjKTogQWNjZXB0IGxvY2tkIGNhbGxiYWNrcwoJdG8gdGhlIG5ldyBwb3J0IDI0IGFzIHdlbGwgYXMgdGhlIGhpc3RvcmljYWwgcG9ydCAxMDAwMjEuCgpUdWUgTm92IDIzIDEwOjIxOjM0IDE5OTkgTmVpbCBCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogZXRjL3JlZGhhdC9uZnNkLmluaXQgKHN0b3ApOiBtb3ZlZCBleHBvcnRmcyAtdWEgYWZ0ZXIKCXN0b3BwaW5nIG5mc2QgdG8gc3RvcCBzcHVyaW91cyBFU1RBTEUgb24gc2VydmVyIHNodXRkb3duLgoJClR1ZSBOb3YgMjMgMTA6MTM6MzkgMTk5OSAgTmVpbCBCcm93biA8bmVpbGJAY3NlLnVuc3cuZWR1LmF1PgoKCSogc3VwcG9ydC9uZnMvZXhwb3J0cy5jIChwYXJzZW9wdHMpOiBtYWtlIGNvcHkgb2Ygb3B0IHN0cmluZwoJYmVmb3JlICdudWwnaW5nIG91dCBjb21tYXMgc28gdGhhdAoKCSMgZXhwb3J0ZnMgLW8gb3B0aW9uMSxvcHRpb24yIGhvc3RhOi9mcyBob3N0YjovZnMKCiAgICAgICAgYXBwbGllcyBib3RoIG9wdGlvbnMgdG8gYm90aCBleHBvcnRzLgoKVGh1IE9jdCAyOCAxMjo1NTo0MiAxOTk5ICBILkouIEx1IDxoamxAbHVjb24ub3JnPgoKCSogUkVBRE1FOiBGaXggYSBmZXcgdHlwb3MuCgoJKiB0b29scy9ycGNnZW4vcnBjX2NvdXQuYyAocHJpbnRfaGVhZGVyKTogVXNlIGludDMyX3QgaW5zdGVhZAoJb2YgbG9uZy4KCSogdG9vbHMvcnBjZ2VuL3JwY19ob3V0LmMgKHBkZWZpbmUpOiBMaWtld2lzZS4KCSogdG9vbHMvcnBjZ2VuL3JwY19tYWluLmMgKGNfaW5pdGlhbGl6ZSk6IExpa2V3aXNlLgoJKiB0b29scy9ycGNnZW4vcnBjX3BhcnNlLmMgKGdldF90eXBlKTogTGlrZXdpc2UuCgkodW5zaWduZWRfZGVjKTogTGlrZXdpc2UuCgkqIHRvb2xzL3JwY2dlbi9ycGNfc2Nhbi5jIChzeW1ib2xzKTogTGlrZXdpc2UuCgkqIHRvb2xzL3JwY2dlbi9ycGNfdXRpbC5jICh0b2tzdHJpbmdzKTogTGlrZXdpc2UuCgoJKiB0b29scy9ycGNnZW4vcnBjX2NvdXQuYyAoZW1pdF9zaW5nbGVfaW5fbGluZSk6IFVzZSBJTlQzMgoJaW5zdGVhZCBvZiBMT05HLgoJKiB0b29scy9ycGNnZW4vcnBjX3BhcnNlLmMgKGdldF90eXBlKTogTGlrZXdpc2UuCgkodW5zaWduZWRfZGVjKTogTGlrZXdpc2UuCgkqIHRvb2xzL3JwY2dlbi9ycGNfc2Nhbi5jIChzeW1ib2xzKTogTGlrZXdpc2UuCgkqIHRvb2xzL3JwY2dlbi9ycGNfc2Nhbi5oICh0b2tfa2luZCk6IExpa2V3aXNlLgoJKiB0b29scy9ycGNnZW4vcnBjX3V0aWwuYyAodG9rc3RyaW5ncyk6IExpa2V3aXNlLgoKVGh1IE9jdCAyOCAxMToyNzo1MSAxOTk5IE5laWwgQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCiAgICAgICAgKiBzdXBwb3J0L2luY2x1ZGUvbmZzL2V4cG9ydC5oIGFkZGVkZCBORlNFWFBfTk9TVUJUUkVFQ0hFQ0sKICAgICAgICAqIHN1cHBvcnQvbmZzL2V4cG9ydHMuYzogYWRkZWQge25vXyx9c3VidHJlZV9jaGVjayBhbmQgY2hhbmdlZAogICAgICAgICAgY3Jvc3NtbnQgdG8gbm9oaWRlCiAgICAgICAgKiB1dGlscy9leHBvcnRmcy9leHBvcnRzLm1hbjogYWRkZWQgbm9fc3VidHJlZV9jaGVjayBhbmQgbm9oaWRlCiAgICAgICAgICBhbmQgcmVtb3ZlZCBpcnJlbGV2YW50IHN0dWZmIGZyb20gdW5mc2QuCiAgICAgICAgKiBzdXBwb3J0L2V4cG9ydC9ybXRhYi5jOiBybXRhYl9yZWFkIGRpZG4ndCBxdWl0ZSBkbyB0aGUgcmlnaHQKICAgICAgICAgIHRoaW5nIGlmIGEgcGF0aG5hbWUgZnJvbSBybXRhYiB3YXMgYSBzdWJkaXJlY3Rvcnkgb2YgYW4gZXhwb3J0LXBvaW50CgpUdWUgT2N0IDI2IDE3OjIyOjQwIDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBSRUFETUU6IFVwZGF0ZWQgZnRwIHNpdGUuCgpNb24gT2N0IDI1IDE4OjEyOjQ1IDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBuZnMtdXRpbHMuc3BlYyAoVmVyc2lvbik6IFNldCB0byAwLjEuMi4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFNldCB0byAibmZzLXV0aWxzIDAuMS4yIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIFJFQURNRTogVXBkYXRlZC4KCk1vbiBPY3QgMjUgMTg6MTE6MjEgMTk5OSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL21vdW50ZC9hdXRoLmMgKGF1dGhfZXJyb3IpOiBBZGQgIm5vX2ZvcndhcmRfZG5zIi4KCShhdXRoX2F1dGhlbnRpY2F0ZV9pbnRlcm5hbCk6IENoZWNrIGZvciBOVUxMIHJldHVybiBvbiBmb3J3YXJkCglETlMgbG9va3VwLgoJKGF1dGhfYXV0aGVudGljYXRlKTogSGFuZGxlICJub19mb3J3YXJkX2RucyIuCgpUaHUgT2N0IDIxIDE2OjIyOjA2IDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBWZXJzaW9uIDAuMS4xIHJlbGVhc2VkLgoKCSogbmZzLXV0aWxzLnNwZWMgKFZlcnNpb24pOiBTZXQgdG8gMC4xLjEuCgoJKiBjb25maWd1cmUuaW4gKFZFUlNJT04pOiBTZXQgdG8gIm5mcy11dGlscyAwLjEuMSIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBSRUFETUU6IFVwZGF0ZWQuCgpNb24gT2N0IDE4IDE3OjQzOjI5IDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBuZnMtdXRpbHMuc3BlYyAoT2Jzb2xldGVzKTogRml4ZWQgYSB0eXBvLCBjaGFuZ2Uga25mc2QtY2xpZW50Cgl0byBrbmZzZC1jbGllbnRzLgoJKFByb3ZpZGVzKTogTGlrZXdpc2UuCgpNb24gT2N0IDE4IDE0OjU2OjIyIDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBJbml0aWFsIHZlcnNpb24gMC4xIHJlbGVhc2VkLgoKCSogY29uZmlndXJlLmluIChWRVJTSU9OKTogU2V0IHRvICJuZnMtdXRpbHMgMC4xIi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCk1vbiBPY3QgMTggMTQ6NTQ6NTcgMTk5OSAgSC5KLiBMdSA8aGpsQGx1Y29uLm9yZz4KCgkqIHV0aWxzL21vdW50ZC9tb3VudGQuYyAoZ2V0X2V4cG9ydGxpc3QpOiBDbGVhbnVwLgoKCSogdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYyAodW5leHBvcnRfYWxsKTogVW5leHBvcnQgZnJvbQoJa2VybmVsIG9ubHkgaWYgdGhlIGVudHJ5IGlzIGV4cG9ydGVkIHRvIGtlcm5lbC4KCSh1bmV4cG9ydGZzKTogTGlrZXdpc2UuCgpXZWQgU2VwIDA4IDE2OjQ5OjMyIDE5OTkgIE5laWwgQnJvd24gPG5laWxiQGNzZS51bnN3LmVkdS5hdT4KCjEvIHV0aWxzL21vdW50ZC9ybXRhYi5jOjptb3VudGxpc3RfbGlzdAoKICAgICBUaGlzIHJvdXRpbmUgc3RhdHMgdGhlIHJtdGFiIGZpbGUgdG8gc2VlIGlmIGl0IGhhcyBjaGFuZ2VkLiAgSXQKICAgICBpZiBoYXMsIGl0IGNsZWFucyB1cCBpdCdzIG9sZCBjb3B5IG9mIHRoZSBkYXRhLiBCdXQgaXQgc3RpbGwKICAgICBhbHdheXMgcmUtcmVhZCB0aGUgZmlsZSwgdGh1cyByZXR1cm5pbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZQogICAgIGRhdGEgb24gY29uc2VjdXRpdmUgY2FsbHMgd2l0aG91dCBpbnRlcnZlbmluZyBjaGFuZ2VzLgogICAgICJTaG93bW91bnQgLWEiIGRpZG4ndCBzaG93IHRoaXMgYXMgaXQgYXBwZWFycyB0byBzb3J0L3VuaXF1ZSB0aGUKICAgICBkYXRhLCBidXQgJ3N0cmFjZSBzaG93bW91bnQgLWEnIHNob3dlZCB0aGF0IHRoZSBzaXplIG9mIHRoZQogICAgIGRhdGFncmFtIHRoYXQgaXQgcmVjZWl2ZWQgZ3Jldy4KCiAgICAgSSBtb3ZlZCB0aGUgZ2V0cm10YWJlbnQgbG9vcCBpbnNpZGUgdGhlIG10aW1lIHRlc3QuCgoyLyB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jCiAgIAogICAgIE1hbnkgcm91dGluZXMgdXNlZCB0aGUgbV9wYXRoIGZpZWxkIG9mIG1fZXhwb3J0IGluc3RlYWQgb2YKICAgICBlX3BhdGguCiAgICAgQWNjb3JkaW5nIHRvIHRoZSBjb21tZW50IGluIG5mc2xpYi5oLCBtX3BhdGggc2hvdWxkIG9ubHkKICAgICBiZSB1c2VkIHdoZW4gcHJvY2Vzc2luZyBhIG1vdW50IHJlcXVlc3QgKGkuZS4gaW4gbW91bnRkKQogICAgIHdoZXJlIHRoZSBtb3VudHBvaW50IG1heSBiZSBhIHN1YmRpcmVjdG9yeSBvZiB0aGUgZXhwb3J0IHBvaW50LgoKICAgICBJIGNoYW5nZWQgYWxsIG9jY3VyYW5jZXMgb2YgbV9wYXRoIHRvIGVfcGF0aAoKCjMvIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmM6bWFpbgoKICAgICAgZXh0cmEgYXJndW1lbnRzIGFyZSBub3QgbWVhbmluZ2Z1bCB3aXRoIC1hIG9yIC1yLCBidXQKICAgICAgZXhwb3J0ZnMgYWNjZXB0ZWQgdGhlbSBhbmQgdGhlbiBpZ25vcmVkIHRoZSAtYS8tciwgZXhwZWN0IHRoYXQKICAgICAgLXIgd291bGQgc3RpbGwgdW5leHBvcnQgZXZlcnl0aGluZyBmaXJzdC4KCiAgICAgIEkgZ2VuZXJhdGUgYW4gZXJyb3IgaWYgdGhlcmUgYXJlIGV4dHJhIGFyZ3MgYW5kIGZfYWxsCgo0LyB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jOm1haW4KICAgICBleHRyYWN0IGR1bXAgb3V0IGFzIGEgc3BlY2lhbCBjYXNlLgoKNS8gdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYwogICAgIG1hZGUgZl9yZWV4cG9ydCBhIGxvY2FsIHZhcmlhYmxlLgoKCjYvIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmM6bWFpbixleHBvcnRhbGwKCiAgICBzdXBwb3J0L2V4cG9ydC9ybXRhYi5jCiAgICAgICBvbmx5ICBtYXlleHBvcnQgb24gbmV3bHkgY3JlYXRlZCBlbnRyaWVzLCBkb24ndCBzZXQgeHRhYmVudCBhdCBhbGwKCjcvIHN1cHBvcnQvaW5jbHVkZS9uZnNsaWIuaAoKICAgICAgYWRkICNkZWZpbmUgX1BBVEhfUFJPQ19FWFBPUlRTIHRvIGJlIC9wcm9jL2ZzL25kcy9leHBvcnRzCgo4LyBzdXBwb3J0L2V4cG9ydC94dGFiLmMKCiAgICAgIHh0YWJfbW91bnRfcmVhZCBsb2FkcyBkYXRhIGZyb20gX1BBVEhfUFJPQ19FWFBPUlRTIGlmIGl0IGV4aXN0cywKICAgICAgZWxzZSBmcm9tIHh0YWIKCgo5LyBzdXBwb3J0L2V4cG9ydC94dGFiLmMKCiAgICAgIHh0YWJfbW91bnRfcmVhZCBub3cgc2V0cyBtX2V4cG9ydGVkLCBhbmQgTk9UCgl4dGFiZW50IGFuZCBtYXlleHBvcnQKCiAgICAgIHJlbW92ZWQgdGhlIGFwcGVuZCBhcmd1ZW1lbnQgZnJvbSB4dGFiX3dyaXRlIGFzIGl0IHdhcwoJbmV2ZXIgdXNlZC4KCiAgICAgIGFkZGVkIGlzX2V4cG9ydCBmbGFnIHRvIHh0YWJfd3JpdGUgc2ltaWxhciB0byB4dGFiX3JlYWQKCWlmIGlzX2V4cG9ydCwgb25seSB3cml0ZSBlbnRyaWVzIHdpdGggbV94dGFiZW50IG9yIG1fYWRkeHRhYgoJaWYgIWlzX2V4cG9ydCwgb25seSB3cml0ZSBlbnRyaWVzIHdpdGggbV9leHBvcnRlZAogICAgIAoxMC8gc3VwcG9ydC9leHBvcnQvZXhwb3J0LmM6OmV4cG9ydF9hbGxvd2VkX2ludGVybmFsCgogICAgICBhZGRlZCB0ZXN0IGZvciBleHAtPm1fbWF5ZXhwb3J0LCBhcyB0aGUgZXhwb3J0IHRyZWUKCW1heSBoYXZlIGVudHJpZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGFsbG93ZWQgdG8gYmUgZXhwb3J0ZWQsCglhbmQgc28gc2hvdWxkbid0IGNhdXNlZCBkZWR1Y2VkIGV4cG9ydGVkIGJ5IHJtdGFiX3JlYWQKCjExLyB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jOjptYWluCgllcnJvciBjaGVja2luZyBvZiBmbGFncy4KCjEyLyB1dGlscy9leHBvcnRmcy9leHBvcnRmcy5jCgoJdG90YWwgcmV3cml0ZSBvZiBleHBvcnQgYW5kIHVuZXhwb3J0IGxvZ2ljLgoJV2Ugbm93OgoJLSAgYnVpbGQgYW4gZXhwb3J0c2xpc3Qgb2YgdmFsaWQgZXhwb3J0cywgYmFzZWQgb24KCSAgIGN1cnJlbnQgZXRhYiBmaWxlICBhbmQgYXJndW1lbnRzLAogICAgICAgIC0gIHJlYWQgcm10YWIgdG8gaW5zdGFudGlhdGUgcmVsZXZhbnQgd2lsZCBjYXJkIGVudHJpZXMKCS0gIHJlYWQgZXRhYiB0byBmaW5kIG91dCB3aGF0IGlzIGN1cnJlbnRseSBleHBvcnRlZAoJLSAgc3luY2hyb25pc2UgaW50ZW50aW9uIHdpdGggcmVhbGl0eQoJLSAgd3JpdGUgb3V0IGV0YWIgYW5kIHh0YWIKCjEzLyAgdmFyaW91cwoJZGlzY2FyZCB0aGUgbV9hZGR4dGFiIGZsYWcKCWFkZCBtX2NoYW5nZWQgZmxhZyBzbyB3ZSBrbm93IHdoYXQgdG8gcmVwb3J0IGluIGV4cG9ydGZzCgoxNC8gdXRpbHMvbW91bnRkL2F1dGguYzphdXRoX2F1dGhlbnRpY2F0ZQoKCXRoZSB2YWx1ZSByZXR1cm5lZCBieSBnZXRob3N0YnlhZGRyIHdhcyB0cnVzdGVkLgoKCUl0IG5vdyBmb2xsb3dzIHRoaXMgd2l0aCBhIGNhbGwgdG8gZ2V0aG9zdGJ5bmFtZQoJYW5kIGNoZWNrcyB0aGF0IHRoZSBhZGRyZXNzIGlzIGluIHRoZSBsaXN0LgoKMTUvIHN1cHBvcnQvZXhwb3J0L25mc2N0bC5jOjpjbHRzZXR1cCxleHBzZXR1cAoKCWZvcmNlIGNsaWVudCBuYW1lcyB0byBsb3dlcmNhc2UgYXMga2VybmVsIGlzCglzZW5zaXRpdmUgdG8gY2FzZQoKMTYvIHF1aWV0ZW5lZCBhIGZldyBjb21waWxlciB3YXJuaW5ncwoKMTcvIHN1cHBvcnQvZXhwb3J0L2NsaWVudDpjbGllbnRfbG9va3VwCgogICAgIGxvb2sgZm9yIHByZS1leGlzdGluZyBjbGllbnQgd2l0aCBzYW1lIG5hbWUgYmVmb3JlIGNyZWF0aW5nCglhIG5ldyBvbmUuCgoxOC8gc3VwcG9ydC9pbmNsdWRlL2V4cG9ydGZzLmgKCiAgICAgVGhlIG9yZGVyaW5nIG9mIHRoZSBNQ0xfKiBlbnVtIHdhczoKCUFOT05ZTU9VUywgRlFETiwgU1VCTkVUV09SSywgV0lMRENBUkQsIE5FVEdST1VQCgogICAgIEkgbW92ZWQgQU5PTllNT1VTIHRvIHRoZSBlbmQuCgogICAgIFRoZSBvcmRlcmluZyBpcyBzaWduaWZpY2FudCB3aGVuIGFuIGV4cG9ydCBlbnRyeSBpcyBiZWluZyBzZWFyY2hlZCBmb3IgdG8gCgltYXRjaCBhIGdpdmVuIGFkZHJlc3MuICBUaGVyZSBhcmUgdHdvIHByb2JsZW1zIHdpdGggQU5PTllNT1VTIGJlaW5nIGZpcnN0LgoKCTEvIGlmIGEgZGlyZWN0b3J5IGlzIGV4cG9ydGVkIHJ3IHRvIGEgY291cGxlIG9mIGhvc3RzIGFuZCBybyB0byBldmVyeW9uZSBlbHNlLAoJICAgdGhlbiB0aGUgcm8gY2FzZSB3aWxsIGFsd2F5cyBiZSBmb3VuZCBmaXJzdCBhbmQgdGhlIHByaXZpbGVnZWQgaG9zdHMgd29uJ3QgZ2V0CgkgICB0aGVpciBwcml2aWxlZ2UKCTIvIFdoZW4gbW91bnRkIGdldHMgYSByZXF1ZXN0IHRvIG1vdW50IGFuIEFOT05ZTU9VU2x5IGV4cG9ydGVkIHRyZWUsIGl0IGNyZWF0ZXMgYSBGUUROCgkgICBleHBvcnQgZW50cnkgZm9yIHRoZSBzcGVjaWZpYyBob3N0LCBhbmQgd3JpdGVzIGl0IHRvIHh0YWIuCgkgICBXaGVuIGFub3RoZXIgcmVxdWVzdCBjb21lcyBmcm9tIHRoZSBzYW1lIGhvc3QsIHRoZSBBTk9OWU1PVVMgZW50cnkgaXMgZm91bmQgYWdhaW4sIAoJICAgYmVmb3JlIHRoZSBuZXcgRlFETiBlbnRyeSwgc28gaXQgY3JlYXRlcyBhbm90aGVyIEZRRE4gZW50cnkgYW5kIHdyaXRlcyBpdCB0byB4dGFiCgkgICBhZ2Fpbi4gIElmIGNhdXNlcyBibG9hdCBpbiB4dGFiLgoKICAgICAgUHV0dGluZyBBTk9OWU1PVVMgYXQgdGhlIGVuZCByZWZsZWN0cyBpdCdzIG5hdHVyZSBhcyBhIGNhdGNoLWFsbAoKMTkvIHV0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLm1hbgoJbWFueSB1cGRhdGVzIHRvIHRoZSBtYW4gcGFnZSB0byByZWZsZWN0IGNoYW5nZXMgdG8gdGhlIGNvZGUKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKClRPRE86CgotIGFsbG93IGV4cG9ydGZzIHRvIG1vZGlmeSBybXRhYiBmaWxlCi0gbWFrZSBzdXJlIGtlcm5lbCBuZXZlciBnZXRzIHR3byBjbGllbnRzIHdpdGggc2FtZSBJUCBhZGRyZXNzCiAgICAtIHBvc3NpYmxlIGtlcm5lbCBzaG91bGQgcmVqZWN0CiAgICAtIG5lZWRzIHRvIGJlIHNvbWUgd2F5IHRvIGxvb2t1cCBjbGllbnQgaW4ga2VybmVsIGJ5IElQIGFkZHJlc3MKLSBtYXliZSBnZXQga2VybmVsIHRvIGRvIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbnMgb24gY2xpZW50IG5hbWVzCi0gcmVtb3ZlIHVudXNlZCBjbGllbnRzIGZyb20ga2VybmVsCgotIGNoYW5nZSBldGFiIHRvIHh0YWIgYW5kIHh0YWIgdG8geHRhYi5hY3RpdmUKCi0gdGltZXN0YW1wIGFuZC9vciBzdGF0ZC1zdGFtcCBpbiBybXRhYiBmb3IgcmVtb3Zpbmcgb2xkIGVudHJpZXMuCgpNb24gT2N0IDE4IDExOjQ4OjA3IDE5OTkgIEguSi4gTHUgPGhqbEBsdWNvbi5vcmc+CgoJKiBsaW51eC1uZnM6IE5ldyBkaXJlY3RvcnkuCgkqIGxpbnV4LW5mcy9DaGFuZ2VMb2c6IE1vdmVkIGZyb20gLi4KCSogbGludXgtbmZzL0lOU1RBTEw6IExpa2V3aXNlLgoJKiBsaW51eC1uZnMvS05PV05CVUdTOiBMaWtld2lzZS4KCSogbGludXgtbmZzL05FVzogTGlrZXdpc2UuCgkqIGxpbnV4LW5mcy9SRUFETUU6IExpa2V3aXNlLgoJKiBsaW51eC1uZnMvVEhBTktTOiBMaWtld2lzZS4KCSogbGludXgtbmZzL1RPRE86IExpa2V3aXNlLgoKCSogU3RhcnRpbmcgZnJvbSBrbmZzZCAxLjQuNy4K