MjAwMS0xMC0yNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHBlWFhpZ2VuLmMgKF9iZmRfWFhfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24pOiBDb3B5Cgl0aW1lc3RhbXAgdG8gdGltZV90IGZvciBjdGltZS4KCjIwMDEtMTAtMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJMjAwMS0wOC0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9oYXNoX3RhYmxlX2NyZWF0ZSk6IENsZWFyIGlhNjRfaW5mby4KCjIwMDEtMTAtMDYgIFN0ZXBoYW5lIENhcnJleiAgPFN0ZXBoYW5lLkNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGR3YXJmMi5jIChjb21wX3VuaXRfZmluZF9uZWFyZXN0X2xpbmUpOiBDaGVjayBmb3IgZW5kIG9mCgljb21waWxhdGlvbiB1bml0LgoKMjAwMS0wOC0yOSAgSm9lbCBTaGVycmlsbCA8am9lbEBPQVJjb3JwLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGlbMzQ1Nl04Ni0qLXJ0ZW1zKiwgbTY4Ki0qLXJ0ZW1zKik6IENoYW5nZSAKCWRlZmF1bHQgZnJvbSBjb2ZmIHRvIGVsZi4KCjIwMDEtMDgtMDMgIEJlbiBIYXJyaXMgPGJqaDIxQG5ldGJzZC5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBJbmNsdWRlIG9mZnNldCBvZgoJcmVsb2MgZnJvbSBzdGFydCBvZiBzZWN0aW9uIHdoZW4gY29tcHV0aW5nIHZhbHVlIGZvciBSX0FSTV9SRUwzMgoJcmVsb2MuCgoyMDAxLTA3LTA2ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ29ycmVjdCBzZW5zZSBvZgoJYGludGVyd29ya2luZycgd2FybmluZyBtZXNzYWdlLgoKMjAwMS0wNy0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBwZWljb2RlLmggKGNvZmZfc3dhcF9zY25oZHJfaW4pOiBGb3Igc2VjdGlvbnMgY29udGFpbmluZwoJdW5pbml0aWFsaXNlZCBkYXRhLCBvbmx5IHNldCB0aGVpciBzaXplIHRvIHNfcGFkZHIgaWYgdGhpcyBkb2VzCglub3QgcmVzZXQgdGhlaXIgc2l6ZSB0byB6ZXJvLiAgTVMncyBsYXRlc3QgY29tcGlsZXJzIHdpbGwgc2V0CglzX3BhZGRyIHRvIHplcm8uCgoyMDAxLTA2LTIwICBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5jby51az4KCiAgICAgICAgKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggbGlua2luZyBvZgogICAgICAgIHNoYXJlZCBsaWJyYXJpZXMuCgoyMDAxLTA2LTIxICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEFsd2F5cwoJYWxsb2NhdGUgbG9jYWwgLmdvdCBzcGFjZS4gIFVzZSBzaG9ydGN1dHMgZnJvbSBoYXNoIHRhYmxlIGZvciAuZ290CglhbmQgLnBsdCByYXRoZXIgdGhhbiBjb21wYXJpbmcgc2VjdGlvbiBuYW1lcy4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IFVzZSBsb2NhbF9wbHRfcmVmY291bnRzIHZhciByYXRoZXIgdGhhbgoJYWRqdXN0aW5nIGluZGV4IGludG8gbG9jYWxfZ290X3JlZmNvdW50cyB0byBkb2N1bWVudCB3aGF0IHdlIGFyZQoJcmVhbGx5IGRvaW5nLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFNpbWlsYXJseSBmb3IgbG9jYWxfcGx0X29mZnNldHMuCglUaWR5IC5nb3QgYW5kIC5wbHQgZXJyb3IgY2hlY2tpbmcuCgoyMDAxLTA2LTE5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBTZXQgdmVyc2lvbiB0byAyLjExLjIuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDYtMTkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCglNZXJnZSBmcm9tIG1haW5saW5lIHNvdXJjZXM6CgkyMDAxLTA2LTE5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBjcmVhdGlvbiBvZgoJZHluYW1pYyBzeW1ib2xzLgoJMjAwMS0wNi0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoJKiBlbGY2NC14ODYtNjQuYyAoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEFkZCBhbgoJYXNzZXJ0aW9uLgoJKGVsZjY0X3g4Nl82NF9jaGVja19yZWxvY3MpOiBTZXQgYW4gYWxpZ25tZW50IG9mIDggZm9yIC5yZWxhCglzZWN0aW9uczsgaGFuZGxlIGZ1cnRoZXIgcmVsb2NhdGlvbnMuCgkyMDAxLTA2LTAxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IEFkZCBQQzgKCXJlbG9jYXRpb24sIHNtYWxsIHJlZm9ybWF0dGluZy4KCjIwMDEtMDYtMTQgIE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIG1haW5saW5lIHNvdXJjZXM6CgkyMDAxLTA0LTI3ICBTZWFuIE1jTmVpbCA8c2VhbkBtY25laWwuY29tPgoJKiBjb25maWcuYmZkOiBBZGQgYXJtLXZ4d29ya3MgdGFyZ2V0LgoJKiBjb2ZmLWFybSAoY29mZl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IEFkZCBpbiBzeW1ib2wgdmFsdWUgdG8KCWFkZGVuZCAoZnJvIFZYd29ya3MgdGFyZ2V0cykuCgkyMDAxLTAzLTA2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBDbGVhciBiaXQgemVybwoJb2Ygb2Zmc2V0IGluIEJMWCgxKSBpbnN0cnVjdGlvbi4KCSogY29mZi1hcm0uYyAoY29mZl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IENsZWFyIGJpdCB6ZXJvIG9mCglvZmZzZXQgaW4gQkxYKDEpIGluc3RydWN0aW9uLgogICAgICAgIEZpeCBmb3JtYXR0aW5nLgoJMjAwMS0wMy0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCSogY29mZi1hcm0uYyAoY29mZl9hcm1fcmVsb2NfdHlwZV9sb29rdXApOiBBZGQKCUJGRF9SRUxPQ19USFVNQl9QQ1JFTF9CTFguCgkyMDAxLTA1LTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogU2V0CiAgICAgICAgRUZfQVJNX0hBU0VOVFJZIGlmIHRoZSBzdGFydCBhZGRyZXNzIGlzIHNldC4KCjIwMDEtMDYtMTEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CgoJKiBjb25maWd1cmUuaW4gKDxDT1JFRklMRSBjYXNlIHN0bXQ+KTogTW92ZSBwb3dlcnBjLSotKmJzZCogYWZ0ZXIKCXBvd2VycGMtKi1mcmVlYnNkKi4KCglNZXJnZSBmcm9tIG1haW5saW5lLgoJMjAwMS0wNi0wMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfb2JqZWN0X3ApOiBDaGVjayBFTEZPU0FCSV9MSU5VWAoJYW5kIEVMRk9TQUJJX0hQVVguCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9vYmplY3RfcCk6IExpa2V3aXNlLgoKCTIwMDEtMDYtMDIgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoJKiBzZWN0aW9uLmMgKF9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCk6IEhhbmRsZSBOVUxMCglvdXRwdXRfc2VjdGlvbi4KCgkyMDAxLTA1LTMwICBBbGFuIE1vZHJhICA8YW1vZHJhQG9uZS5uZXQuYXU+CgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBEb24ndCBORUVEX1BMVCBmb3IKCW1pbGxpY29kZS4gIERvbid0IGFsbG9jYXRlIC5nb3QgYW5kIC5yZWxhLmdvdCBzcGFjZSBoZXJlLi4KCShlbGYzMl9ocHBhX2djX3N3ZWVwX2hvb2spOiAuLmFuZCBubyBuZWVkIHRvIGRlYWxsb2NhdGUgaGVyZS4uCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiAuLmFuZCBkb24ndCBhbGxvY2F0ZSAucGx0IGFuZAoJLnJlbGEucGx0IGhlcmUuLgoJKGhwcGFfaGFuZGxlX1BJQ19jYWxscyk6IC4ubm9yIGhlcmUuLgoJKGFsbG9jYXRlX3BsdF9hbmRfZ290KTogLi5pbnN0ZWFkIGRvIGl0IGFsbCBoZXJlLiAgTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQWxsb2NhdGUgbG9jYWwgLmdvdCBzcGFjZSBhbmQKCWNhbGwgYWxsb2NhdGVfcGx0X2FuZF9nb3QuICBObyBuZWVkIHRvIHphcCAuZ290IGlmIG5vdCBkeW5hbWljLgoJKGVsZjMyX2hwcGFfZmluYWxfbGluayk6IENhbGwgcmVndWxhciBiZmRfZmluYWxfbGluayBpbnN0ZWFkIG9mCglnY19jb21tb25fZmluYWxfbGluay4KCShXSUxMX0NBTExfRklOSVNIX0RZTkFNSUNfU1lNQk9MKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFVzZSBpdCBoZXJlLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogUmVtb3ZlIHN1cGVyZmx1b3VzIHRlc3Qgb2YKCWR5bmFtaWNfc2VjdGlvbnNfY3JlYXRlZC4KCShocHBhX3R5cGVfb2Zfc3R1Yik6IERvbid0IExPTkdfQlJBTkNIX1ZJQV9QTFQgaWYgbWlsbGljb2RlIHN5bS4KCgkyMDAxLTA1LTI4ICBUaGllbW8gU2V1ZmVyICA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCSogZWxmbGluay5oIChlbGZfbGlua19zaXplX3JlbG9jX3NlY3Rpb24pOiBVc2UgYmZkX3ptYWxsb2MgaW5zdGVhZCBvZgoJYSB6ZXJvaW5nIGxvb3AuCgkoZWxmX2xpbmtfb3V0cHV0X3JlbG9jcyk6IEhhbmRsZSBNSVBTIEVMRjY0IHJlbG9jYXRpb25zIGNvcnJlY3RseS4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBMaWtld2lzZS4KCShlbGZfcmVsb2NfbGlua19vcmRlcik6IExpa2V3aXNlLgoJKGVsZl9maW5pc2hfcG9pbnRlcl9saW5rZXJfc2VjdGlvbik6IFR5cG8uIEhhbmRsZSBNSVBTIEVMRjY0CglyZWxvY2F0aW9ucyBjb3JyZWN0bHkuCgoJMjAwMS0wNS0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFNldCB1cCAucGx0IGVudHJpZXMKCWZvciBzeW1ib2xzIGZvcmNlZCBsb2NhbCB0aGF0IG5lZWQgcGxhYmVscy4KCShlbGYzMl9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IERvbid0IGFsbG9jYXRlIHNwYWNlIGluCgkucGx0LnJlbGEgZm9yIGxvY2FsIHN5bXMgaWYgbm9uLXNoYXJlZC4KCShocHBhX2J1aWxkX29uZV9zdHViKTogTWFzayBsc2Igb2YgcGx0Lm9mZnNldC4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEFib3J0IGlmIGxzYiBvZiBwbHQub2Zmc2V0IHNldC4KCShjbG9iYmVyX21pbGxpY29kZV9zeW1ib2xzKTogQ29ycmVjdCBjb21tZW50LgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgoJMjAwMS0wNS0yNSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGFsbG93Cgl1bmRlZmluZWQgbWlsbGljb2RlIHN5bXMgaW4gc2hhcmVkIGxpYnMuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IFR1cm4gQkZEX0FTU0VSVHMgaW50byBhYm9ydHMuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoJMjAwMS0wNS0yMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3NsdXJwX3JlbG9jX3RhYmxlKTogRml4IHR5cG8KCXMvRU5USVJFUy9FTlRSSUVTLy4KCgkyMDAxLTA1LTIzICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoJKiByZWxvYy5jIChiZmRfcmVsb2NfY29kZV9yZWFsKTogQWRkIE1JUFMgRUxGNjQgcmVsb2NhdGlvbnMuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGFvdXR4LmggKGFvdXRfQHZhcntzaXplfV9tYWNoaW5lX3R5cGUpOiBBZGQgTUlQUyByMTJrIHN1cHBvcnQuCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX21pcHMxMjAwMCk6IERlZmluZS4KCSogY3B1LW1pcHMuYyAoYXJjaF9pbmZvX3N0cnVjdCk6IEFkZCBNSVBTIHIxMmsgc3VwcG9ydC4KCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBBZGQgTUlQUyByMTJrCglzdXBwb3J0LgoJKF9iZmRfbWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogVXNlIG9mZmljaWFsIGJmZCB0eXBlZGVmLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGVsZnh4LXRhcmdldC5oOiBEbyBub3QgcmVkZWZpbmUgYmZkX2VsZk5OX2JmZF9tYWtlX2RlYnVnX3N5bWJvbC4KCgkyMDAxLTA1LTIzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCSogZWxmLWJmZC5oIChOVU1fU0hEUl9FTlRSSUVTKTogTmV3IG1hY3JvOiBjb21wdXRlIHRoZSBudW1iZXIKCW9mIGVudHJpZXMgaW4gYSBzdHJ1Y3R1cmVkIHNlY3Rpb24uCiAgICAgICAgKiBlbGYuYzogVXNlIG5ldyBtYWNyby4KICAgICAgICAqIGVsZjMyLWkzODYuYzogVXNlIG5ldyBtYWNyby4KICAgICAgICAqIGVsZjMyLW1pcHMuYzogVXNlIG5ldyBtYWNyby4KICAgICAgICAqIGVsZjY0LWFscGhhLmM6IFVzZSBuZXcgbWFjcm8uCiAgICAgICAgKiBlbGY2NC1zcGFyYy5jOiBVc2UgbmV3IG1hY3JvLgogICAgICAgICogZWxmY29kZS5oOiBVc2UgbmV3IG1hY3JvLgogICAgICAgICogZWxmbGluay5oOiBVc2UgbmV3IG1hY3JvLgoKCTIwMDEtMDUtMjEgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCSogZHdhcmYyLmMgKGRlY29kZV9saW5lX2luZm8pOiBGaXggZXJyb3IgbWVzc2FnZS4KCShyZWFkX2FiYnJldnMpOiBGaXggdGVzdCBmb3Igb2Zmc2V0IGFzIHN1Z2dlc3RlZCBieSBBbGFuIE1vZHJhIGFuZAoJYWRqdXN0IGVycm9yIG1lc3NhZ2UuCgoJMjAwMS0wNS0xNyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGZsaW5rLmggKE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpKTogU2V0IHRoZQoJdmVyc2lvbiBkZWZpbml0aW9uIHRvIGJhc2VuYW1lIG9mIHRoZSBvdXRwdXQgZmlsZW5hbWUuCgoJMjAwMS0wNS0xNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsYXhfc2VjdGlvbik6IERvbid0IHJlbGF4CgluZWdhdGl2ZSAzMi1iaXQgb3BlcmFuZHMgdG8gMTYgb3BlcmFuZHMgd2hlbiB0aGUgb3BlcmFuZCBpcwoJZ29pbmcgdG8gYmUgemVyby1leHRlbmRlZCBieSB0aGUgbW9kaWZpZWQgb3Bjb2RlLgoKCTIwMDEtMDUtMTEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoJKiBlbGZ4eC1pYTY0LmMgKGlzX3Vud2luZF9zZWN0aW9uX25hbWUpOiBDb25zaWRlciBsaW5rb25jZSB1bndpbmQKCXNlY3Rpb25zIGFzIHdlbGwuCgkoZWxmTk5faWE2NF9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTWFwIC5nbnUubGlua29uY2UuaWE2NHVudy5GT08KCXRvIC5nbnUubGlua29uY2UudC5GT08gdGV4dCBzZWN0aW9uLgoKCTIwMDEtMDUtMTEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGNhbWJyaWRnZS5yZWRoYXQuY29tPgoJKiBkd2FyZjEuYyAoX2JmZF9kd2FyZjFfZmluZF9uZWFyZXN0X2xpbmUpOiBDaGFuZ2UgdHlwZSBvZiAnYWRkcicKCXRvIGJlIHVuc2lnbmVkIGxvbmcsIGluIG9yZGVyIHRvIG1hdGNoIGl0cyB1c2UuCgoJMjAwMS0wNS0xMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBsaW5rZXIuYyAoX2JmZF9nZW5lcmljX2xpbmtfYWRkX29uZV9zeW1ib2wpOiBDaGVjayBsb29wIG9uCglpbmRpcmVjdCBzeW1ib2xzLgoKCTIwMDEtMDUtMDkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBGaXggYSB0eXBvLiBBbGxvY2F0ZQoJdmVyc3ltaGRyLT5zaF9zaXplIGJ5dGVzIGZvciBleHR2ZXJzeW0gaW5zdGVhZCBvZiBoZHItPnNoX3NpemUuCglSZW1vdmUgdGhlIHVudXNlZCB2ZXJpYWJsZSBgZHludmVyJy4KCgkyMDAxLTA1LTA3ICBUaGllbW8gU2V1ZmVyIDxzZXVmZXJAY3N2LmljYS51bmktc3R1dHRnYXJ0LmRlPgoJKiBlbGYuYyAoX2JmZF9lbGZfc2x1cnBfdmVyc2lvbl90YWJsZXMpOiBDaGFuZ2UgbWF4aWR4IHRvIHVuc2lnbmVkLCBpdAoJaXMgYWx3YXlzIGEgcG9zaXRpdmUgaW50ZWdlci4gQ2FzdCBhd2F5IHNpZ24gbWlzbWF0Y2guCgkqIGVsZjMyLW1pcHMuYzogRml4IG1pc2xlYWRpbmcgY29tbWVudCBhbmQgdHlwby4KCShfYmZkX21pcHNfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbik6IFJlbW92ZSB1bnVzZWQgYXR0cmlidXRlLCB1c2UKCWNvcnJlY3QgZGF0YSB0eXBlLgoJKiBlbGZsaW5rLmM6IEZpeCB0eXBvLgoJKF9iZmRfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogUmVtb3ZlIHN1cGVyZmx1b3VzIGluaXRpYWxpemF0aW9uLgoJKiBlY29mZnN3YXAuaCAoZWNvZmZfc3dhcF9mZHJfaW4pOiBDYXN0IGF3YXkgc2lnbiBtaXNtYXRjaC4KCgkyMDAxLTA1LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjYW1icmlkZ2UucmVkaGF0LmNvbT4KCSogdGFyZ2V0cy5jIChfYmZkX3RhcmdldF92ZWN0b3JfZW50cmllcyk6IENvbXB1dGUgdmFsdWUgYmFzZWQgb24KCXRoZSBzaXplIG9mIHRoZSBfYmZkX3RhcmdldF92ZWN0b3IgYW5kIG5vdCBiZmRfdGFyZ2V0X3ZlY3Rvci4KCgkyMDAxLTA1LTAzICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgkqIGVsZjY0LWdlbi5jIChlbGZfZ2VuZXJpY19pbmZvX3RvX2hvd3RvKTogQWRkIHVudXNlZCBhdHRyaWJ1dGUuCgkoZWxmX2dlbmVyaWNfaW5mb190b19ob3d0b19yZWwpOiBMaWtld2lzZS4KCSogY29mZi1hbHBoYS5jIChyZWxvY19uaWwpOiBMaWtld2lzZS4KCShhbHBoYV9lY29mZl9iYWRfZm9ybWF0X2hvb2spOiBMaWtld2lzZS4KCShhbHBoYV9hZGp1c3RfcmVsb2Nfb3V0KTogTGlrZXdpc2UuCgkoYWxwaGFfYmZkX3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkoYWxwaGFfY29udmVydF9leHRlcm5hbF9yZWxvYyk6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY19uaWwpOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9yZWxvY19iYWQpOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9yZWxvY19ncGRpc3ApOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9pbmZvX3RvX2hvd3RvKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfYWRkX3N5bWJvbF9ob29rKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfY3JlYXRlX2dvdF9zZWN0aW9uKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX21lcmdlX2luZF9zeW1ib2xzKTogTGlrZXdpc2UuCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF9yZWxvY190eXBlX2xvb2t1cCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfZ2V0X3JlbG9jX3VwcGVyX2JvdW5kKTogTGlrZXdpc2UuCgkqIG5sbTMyLWFscGhhLmMgKG5sbV9hbHBoYV9tYW5nbGVfcmVsb2NzKTogTGlrZXdpc2UuCgkobmxtX2FscGhhX2dldF9wdWJsaWNfb2Zmc2V0KTogTGlrZXdpc2UuCgoJMjAwMS0wNC0zMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogU2V0IGR5bmluZHggdG8gLTEKCW9ubHkgZm9yIEVMRl9MSU5LX0ZPUkNFRF9MT0NBTC4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmggKGVsZl9maXhfc3ltYm9sX2ZsYWdzKTogU2V0IEVMRl9MSU5LX0ZPUkNFRF9MT0NBTAoJaWYgdGhlIHN5bWJvbCBoYXMgaGlkZGVuIG9yIGludGVybmFsIHZpc2liaWxpdHkuCgoJMjAwMS0wNC0xNCAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBVc2UKCWJmZF9jb2ZmX3N3YXBfZmlsZWhkcl9vdXQgaW5zdGVhZCBvZiBjb2ZmX3N3YXBfZmlsZWhkcl9vdXQuCgoJMjAwMS0wNC0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgkqIGVsZmxpbmsuaCAoZWxmX2ZpeF9zeW1ib2xfZmxhZ3MpOiBGb3Igbm9uLWRlZmF1bHQgdmlzaWJpbGl0aWVzLAoJb25seSBoaWRlIHN5bWJvbHMgbWFya2VkIFNUVl9JTlRFUk5BTCBvciBTVFZfSElEREVOLgoKCTIwMDEtMDQtMDUgIFN0ZXZlbiBKLiBIaWxsICA8c2poaWxsQGNvdHcuY29tPgoJKiBjb25maWcuYmZkIChtaXBzKmVsKi0qLWxpbnV4LWdudSopOiBVc2UgdHJhZGl0aW9uYWwgbGl0dGxlCgllbmRpYW4gTUlQUyBFTEYgdGFyZ2V0LgoJKG1pcHMqLSotbGludXgtZ251Kik6IFVzZSB0cmFkaXRpb25hbCBiaWcgZW5kaWFuIE1JUFMgRUxGIHRhcmdldC4KCSogY29uZmlndXJlLmluIChiZmRfZWxmNjRfdHJhZGJpZ21pcHNfdmVjKTogTmV3LiBUcmFkaXRpb25hbAoJNjRiaXQgYmlnIGVuZGlhbiBNSVBTIEVMRiB0YXJnZXQuCgkoYmZkX2VsZjY0X3RyYWRsaXR0bGVtaXBzX3ZlYyk6IE5ldy4gVHJhZGl0aW9uYWwgNjRiaXQgbGl0dGxlCgllbmRpYW4gTUlQUyBFTEYgdGFyZ2V0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBlbGYzMi1taXBzLmMgKElSSVhfQ09NUEFUKTogSGFuZGxlIHRyYWRpdGlvbmFsIDY0Yml0IGFuZAoJbGl0dGxlIGVuZGlhbiB0YXJnZXRzLgoJKG1pcHNfZWxmX3N5bV9pc19nbG9iYWwpOiBIYW5kbGUgdHJhZGl0aW9uYWwgdGFyZ2V0cy4KCSogZWxmNjQtbWlwcy5jIChiZmRfZWxmNjRfdHJhZGJpZ21pcHNfdmVjKTogTmV3LiBUcmFkaXRpb25hbAoJNjRiaXQgYmlnIGVuZGlhbiBNSVBTIEVMRiB0YXJnZXQuCgkoYmZkX2VsZjY0X3RyYWRsaXR0bGVtaXBzX3ZlYyk6IE5ldy4gVHJhZGl0aW9uYWwgNjRiaXQgbGl0dGxlCgllbmRpYW4gTUlQUyBFTEYgdGFyZ2V0LgoJKiB0YXJnZXRzLmM6IChfYmZkX3RhcmdldF92ZWN0b3IpOiBBZGQgYmZkX2VsZjY0X3RyYWRiaWdtaXBzX3ZlYwoJYW5kIGJmZF9lbGY2NF90cmFkbGl0dGxlbWlwc192ZWMuCgoJMjAwMS0wNC0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCSogZWxmbGluay5oIChlbGZfZml4X3N5bWJvbF9mbGFncyk6IENhbGwgZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wKCXdoZW4gLUJzeW1ib2xpYyBjYXVzZXMgYSBzeW1ib2wgdG8gbm8gbG9uZ2VyIG5lZWQgYSAucGx0IGVudHJ5LgoKCTIwMDEtMDQtMDMgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoJKiBlZmktYXBwLWlhMzIuYyAoQUxJR05fU0VDVElPTlNfSU5fRklMRSk6IERlbGV0ZWQuCgoJMjAwMS0wMy0zMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlZmktYXBwLWlhMzIuYyAoUEVJX1RBUkdFVF9TVUJTWVNURU0pOiBSZW5hbWUgZnJvbSAuLi4KCShQRUlfREVGQVVMVF9UQVJHRVRfU1VCU1lTVEVNKTogVGhpcy4KCgkyMDAxLTAzLTIzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoJKiBNYWtlZmlsZS5hbSAoQlVJTERfQ0ZJTEVTKTogTmV3IHZhcmlhYmxlOiBMaXN0IG9mIEMgc291cmNlCiAgICAgICAgZmlsZXMgY3JlYXRlZCBpbiBidWlsZCBkaXJlY3RvcnkuCiAgICAgICAgKEJVSUxEX0hGSUxFUyk6IE5ldyB2YXJpYWJsZTogTGlzdCBvZiBoZWFkZXIgZmlsZXMgY3JlYXRlZCBpbgogICAgICAgIGJ1aWxkIGRpcmVjdG9yeS4KICAgICAgICAoUE9URklMRVMpOiBEZWxldGUuCiAgICAgICAgKHBvL1BPVEZJTEVTLmluKTogUmVwbGFjZSBydWxlIHdpdGggZW1wdHkgZW50cnkuCiAgICAgICAgKHBvL1NSQy1QT1RGSUxFUy5pbik6IE5ldyBydWxlOiBDcmVhdGUgYSBsaXN0IG9mIHNvdXJjZSBmaWxlcwogICAgICAgIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgIChwby9CTEQtUE9URklMRVMuaW4pOiBOZXcgcnVsZTogQ3JlYXRlIGEgbGlzdCBvZiBzb3VyY2UgZmlsZXMKICAgICAgICBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LgogICAgICAgIChNT1NUTFlDTEVBTik6IERvIG5vdCBkZWxldGUgc291cmNlIGZpbGVzIGNyZWF0ZWQgaW4gYnVpbGQKICAgICAgICBkaXJlY3RvcnkuCiAgICAgICAgKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KICAgICAgICAqIGNvbmZpZ3VyZS5pbjogSW5zZXJ0IFNSQy1QT1RGSUxFUy5pbiBhbmQgQkxELVBPVEZJTEVTLmluCiAgICAgICAgaW50byBwby9NYWtlZmlsZS4KICAgICAgICAqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KICAgICAgICAqIHBvL01ha2UtaW46IFJlcGxhY2Ugb2NjdXJyZW5jZXMgb2YgUE9URklMRVMgd2l0aCBTUkMtUE9URklMRVMKICAgICAgICBhbmQgQkxEX1BPVEZJTEVTLgoJQWRkIC4uIHRvIHRoZSBzZWFyY2ggcGF0aCB3aGVuIGJ1aWxkaW5nIGJmZC5wb3QuCiAgICAgICAgRGVsZXRlIFBPVEZJTEVTIHdoZW4gcGVyZm9ybWluZyBkaXN0Y2xlYW4uCiAgICAgICAgQWRkIGNvbW1lbnQgZGVzY3JpYmluZyB3aHkgZGlzdGNsZWFuIGlzIGJyb2tlbiBpbiBtYWludGFpbmVyIG1vZGUuCgkqIHBvL1BPVEZJTEVTLmluOiBEZWxldGUuCgkqIHBvL1NSQy1QT1RGSUxFUy5pbjogTmV3IGZpbGUuCgkqIHBvL0JMRC1QT1RGSUxFUy5pbjogTmV3IGZpbGUuCiAgICAgICAgKiBwby9iZmQucG90OiBSZWdlbmVyYXRlLgoKCTIwMDEtMDMtMDYgIElnb3IgU2hldmx5YWtvdiAgPGlnb3JAd2luZHJpdmVyLmNvbT4KCSogYXJjaHVyZXMuYyAoYmZkX2RlZmF1bHRfc2Nhbik6IEFkZCBDb2xkZmlyZSBDUFVzLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNwdS1tNjhrLmM6IEFkZCBDb2xkZmlyZSBDUFVzIGZvciBhcmNoIHRhYmxlLgoJKiBpZWVlLmMgKGllZWVfd3JpdGVfcHJvY2Vzc29yKTogU2V0IHByb3BlciBpZCBmb3IKCUNvbGRmaXJlIENQVXMuCgoJMjAwMS0wMi0yNyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBhb3V0eC5oIChOQU1FKGFvdXQsYmZkX2ZyZWVfY2FjaGVkX2luZm8pKTogUmV0dXJuIHRydWUgaWYKCWFiZmQtPnRkYXRhLmFvdXRfZGF0YSA9PSBOVUxMLgoKCTIwMDEtMDItMjYgIE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpIFtDT0ZGX1dJVEhfUEUgdmVyc2lvbl06IFRpZHkKCXVwLCByZXBsYWNpbmcgbXVsdGlwbGUgaWYgc3RhdGVtZW50cyB3aXRoIGEgc3dpdGNoLgogICAgICAgIChoYW5kbGVfQ09NREFUKTogTmV3IGZ1bmN0aW9uLgoKCTIwMDEtMDItMjYgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpIFtDT0ZGX1dJVEhfUEUgdmVyc2lvbl06IElzc3VlCglhIHdhcm5pbmcgZm9yIHNlY3Rpb24gZmxhZ3Mgd2UgZG8gbm90IGhhbmRsZSBpbnN0ZWFkIG9mCglhYm9ydGluZy4KCgkyMDAxLTAyLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgbWFrZSBQTFQKCWVudHJpZXMgdGhhdCBjb3VsZCBzZXJ2ZSBhcyBhIGRlZmluaXRpb24gZm9yIGEgd2VhayBzeW1ib2wuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoKCTIwMDEtMDItMTggIEppbSBLaW5nZG9uICA8amtpbmdkb25AZW5nci5zZ2kuY29tPgoJKiBpcml4LWNvcmUuYyAoaXJpeF9jb3JlX2NvcmVfZmlsZV9wKTogU2V0IHRoZSBhcmNoaXRlY3R1cmUgKEdEQgoJbXVsdGlhcmNoIG5lZWRzIGl0KS4KCgkyMDAxLTAyLTE4ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfaW5wdXRfYmZkKTogSWdub3JlIGludmFsaWQgc2VjdGlvbiBzeW1ib2wKCWluZGV4LgoKCTIwMDEtMDItMTggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoJKiB2bXMtbWlzYy5jOiBGaXggZm9ybWF0dGluZy4KCgkyMDAxLTAyLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCSogdm1zLmM6IEZpeCBmb3JtYXR0aW5nLgoKCTIwMDEtMDItMTQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmLmMgKGVsZl9maW5kX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKF9iZmRfZWxmX2ZpbmRfbmVhcmVzdF9saW5lKTogQ2FsbCBlbGZfZmluZF9mdW5jdGlvbiAoKSB0byBmaW5kCgl0aGUgZmlsZSBuYW1lIGFuZCBmdW5jdGlvbiBuYW1lLgoKCTIwMDEtMDItMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgkqIE1ha2VmaWxlLmFtIChCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBSZW1vdmUgcGVpZ2VuLmMKCShCRkQ2NF9CQUNLRU5EUyk6IEFkZCBwZXBpZ2VuLmMKCUFkZCBydWxlcyB0byBjcmVhdGUgcGVpZ2VuLmMgYW5kIHBlcGlnZW4uYyBmcm9tIHBlWFhpZ2VuLmMuCgoJMjAwMS0wMi0xNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBsaWJjb2ZmLWluLmggKHBlX3RkYXRhKTogQWRkIG1lbWJlcnMgdGFyZ2V0X3N1YnN5c3RlbSBhbmQKCWZvcmNlX21pbmltdW1fYWxpZ25tZW50LgoKCTIwMDEtMDItMTMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoJKiB2bXMuYyAodm1zX3ByaW50X3N5bWJvbCk6IFJlbW92ZSB1bnJlYWNoYWJsZSBjb2RlLgoJKiByczYwMDAtY29yZS5jOiBGaXggZm9ybWF0dGluZy4KCgkyMDAxLTAyLTEzICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfZmlsZWhkcl9vdXQpIFtDT0ZGX0lNQUdFX1dJVEhfUEVdOiBEZWZpbmUKCWFzIF9iZmRfWFhpX29ubHlfc3dhcF9maWxlaGRyX291dC4KCShwZV9ta29iamVjdCkgW1BFSV9GT1JDRV9NSU5JTVVNX0FMSUdOTUVOVF06IFNldAoJcGUtPmZvcmNlX21pbmltdW1fYWxpZ25tZW50IHRvIFRSVUUuCgkocGVfbWtvYmplY3QpIFtQRUlfVEFSR0VUX1NVQlNZU1RFTV06IFNldCBwZS0+dGFyZ2V0X3N1YnN5c3RlbSB0bwoJUEVJX1RBUkdFVF9TVUJTWVNURU0uCgkocGVfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IENhbGwKCV9iZmRfWFhfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24oKSBpbnN0ZWFkIG9mCglfYmZkX3BlX3ByaW50X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKCkuCgkocGVfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IENhbGwKCV9iZmRfWFhfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24oKSBpbnN0ZWFkIG9mCglfYmZkX3BlX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKCkuCgkoY29mZl9iZmRfY29weV9wcml2YXRlX3NlY3Rpb25fZGF0YSk6IERlZmluZSBhcwoJX2JmZF9YWF9iZmRfY29weV9wcml2YXRlX3NlY3Rpb25fZGF0YSBpbnN0ZWFkIG9mCglfYmZkX3BlX2JmZF9jb3B5X3ByaXZhdGVfc2VjdGlvbl9kYXRhLgoJKGNvZmZfZ2V0X3N5bWJvbF9pbmZvKTogRGVmaW5lIGFzIF9iZmRfWFhfZ2V0X3N5bWJvbF9pbmZvIGluc3RlYWQKCW9mIGEgX2JmZF9wZV9nZXRfc3ltYm9sX2luZm8uCgkqIHBlaWdlbi5jOiBEZWxldGUuCgkqIHBlWFhpZ2VuLmM6IFJlbmFtZWQgZnJvbSBwZWlnZW4uYy4KCShDT0ZGX1dJVEhfWFgpOiBEZWZpbmUgdGhpcyBtYWNybyAod2lsbCBnZXQgZXhwYW5kZWQgaW50bwoJQ09GRl9XSVRIX3BlcCBvciBDT0ZGX1dJVEhfcGUsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgYmVpbmcKCWNvbXBpbGVkIGFzIHBlaWdlbi5jIG9yIHBlcGlnZW4uYy4KCVtDT0ZGX1dJVEhfcGVwXTogSW5jbHVkZSAiY29mZi9pYTY0LmgiIGluc3RlYWQgb2YgImNvZmYvaTM4Ni5oIiB0bwoJZGVmaW5lIHRoZSBjYW5vbmljYWwgUEVQIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zLgoJKF9iZmRfWFhpX3N3YXBfYW91dGhkcl9vdXQpOiBJZiBwZS0+Zm9yY2VfbWluaW11bV9hbGlnbm1lbnQgaXMgaW4KCWVmZmVjdCwgZW5mb3JjZSBtaW5pbXVtIGZpbGUgYW5kIHNlY3Rpb24gYWxpZ25tZW50cy4gIElmCglleHRyYS0+U3Vic3lzdGVtIGlzIElNQUdFX1NVQlNZU1RFTV9VTktOT1dOLCBzZXQgaXQgdG8KCXBlLT50YXJnZXRfc3Vic3lzdGVtICh0aGlzIGRlZmF1bHRzIHRvIElNQUdFX1NVQlNZU1RFTV9VTktOT1dOLAoJc28sIGJ5IGRlZmF1bHQsIHRoaXMgaXMgYSBuby1vcCkuCgkqIGxpYnBlaS5oOiBSZW5hbWUgQ09GRl9XSVRIX1BFUCB0byBDT0ZGX1dJVEhfcGVwLgoJKF9iZmRfWFhfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24pOiBBZGQgbWFjcm9zIHRvIG1hcAoJX2JmZF9YWGZvbyB0byBfYmZkX3BlcGZvbyBpZiBDT0ZGX1dJVF9QRVAgaXMgZGVmaW5lZCBhbmQgdG8KCV9iZmRfcGVmb28gaWYgaXQncyBub3QgZGVmaW5lZC4gIFVzZSB0aGVzZSBtYWNyb3MgdG8gZGVmaW5lCgljb2ZmIHN3YXAgbWFjcm9zLgoJKiBsaWJjb2ZmLmggKHBlX3RkYXRhKTogQWRkIG1lbWJlcnMgdGFyZ2V0X3N1YnN5c3RlbSBhbmQKCWZvcmNlX21pbmltdW1fYWxpZ25tZW50LgoJKiBlZmktYXBwLWlhNjQuYyAoQ09GRl9XSVRIX3BlcCk6IFJlbmFtZSBDT0ZGX1dJVEhfUEVQIHRvCglDT0ZGX1dJVEhfcGVwLgoJKFBFSV9UQVJHRVRfU1VCU1lTVEVNKTogUmVuYW1lIGZyb20gUEVJX0RFRkFVTFRfVEFSR0VUX1NVQlNZU1RFTS4KCSogY29uZmlndXJlLmluIChiZmRfZWZpX2FwcF9pYTY0X3ZlYyk6IFVzZSBwZXBpZ2VuLmxvIGluc3RlYWQgb2YKCXBlaWdlbi5sby4KCSogY29mZi1pYTY0LmM6IFJlbmFtZSBDT0ZGX1dJVEhfUEVQIHRvIENPRkZfV0lUSF9wZXAuCgkoQU9VVFNaKTogUmVuYW1lIFBFUDY0QU9VVFNaIGFuZCBQRVA2NEFPVVRIRFIgdG8gUEVQQU9VVFNaIGFuZAoJUEVQQU9VVEhEUi4KCSogTWFrZWZpbGUuaW4gKEJGRDY0X0JBQ0tFTkRTKTogTWVudGlvbiBwZXBpZ2VuLmxvLgoJKEJGRDY0X0JBQ0tFTkRTX0NGSUxFUyk6IE1lbnRpb24gcGVwaWdlbi5jCgkocGVpZ2VuLmMpOiBBZGQgcnVsZSB0byBnZW5lcmF0ZSBmcm9tIHBlWFhpZ2VuLmMuCgkocGVwaWdlbi5jKTogRGl0dG8uCgkocGVwaWdlbi5sbyk6IExpc3QgZGVwZW5kZW5jaWVzIGZvciBwZXBpZ2VuLmxvLgoKCTIwMDEtMDItMTEgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmbGluay5oIChlbGZfYmZkX2ZpbmFsX2xpbmspOiBVc2UgZmlsZV9hbGlnbiBmb3IgU1lNVEFCCglhbGlnbm1lbnQuCgoJMjAwMS0wMi0xMSAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3JlbG9jYXRpb24pOiBVbmRvIHBhdGNoCglmcm9tIDIwMDAtMTAtMTMuICBEbyBub3QgYWRkIHRoZSBzeW1ib2wncyB2YWx1ZSBmb3IgUl9NSVBTX1JFTDMyCglyZWxvY2F0aW9ucyBhZ2FpbnN0IGR5bnN5bSBzeW1ib2xzLgoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzX2hvd3RvX3RhYmxlKTogRml4IHRoZSBjb21tZW50IG9uCgl0aGUgUl9NSVBTXzI2IHJlbG9jYXRpb24uCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBVc2UgKHAgKyA0KSBpbnN0ZWFkIG9mIHAgZm9yCgl0aGUgUl9NSVBTXzI2IHJlbG9jYXRpb24uCgkobWlwc19lbGZfcGVyZm9ybV9yZWxvY2F0aW9uKTogRml4IHRoZSBjb21tZW50IG9uIHRoZSBSX01JUFMxNl8yNgoJcmVsb2NhdGlvbi4KCSogZWxmNjQtbWlwcy5jIChtaXBzX2VsZjY0X2hvd3RvX3RhYmxlX3JlbCk6IEZpeCB0aGUgY29tbWVudCBvbgoJdGhlIFJfTUlQU18yNiByZWxvY2F0aW9uLgoJKG1pcHNfZWxmNjRfaG93dG9fdGFibGVfcmVsYSk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKHN0cnVjdCBtaXBzX2VsZl9saW5rX2hhc2hfZW50cnkpOiBBZGRlZCBub19mbl9zdHViCgltZW1iZXIgdG8gbWFyayBzeW1ib2xzIHRoYXQgaGF2ZSBub24tQ0FMTCByZWxvY2F0aW9ucyBhZ2FpbnN0Cgl0aGVtLgoJKG1pcHNfZWxmX2xpbmtfaGFzaF9uZXdmdW5jKTogSW5pdGlhbGl6ZSBub19mbl9zdHViLgoJKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogSGFuZGxlIFJfTUlQU19DQUxMMTYgbGlrZQoJUl9NSVBTX0dPVDE2LgoJKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogU2V0IG5vX2ZuX3N0dWIgZm9yIGEgc3ltYm9sIGlmIGEKCW5vbi1DQUxMIHJlbG9jYXRpb24gYWdhaW5zdCBpdCBpcyBlbmNvdW50ZXJlZC4KCShfYmZkX21pcHNfZWxmX2NvcHlfaW5kaXJlY3Rfc3ltYm9sKTogTWVyZ2Ugbm9fZm5fc3R1YiBhcyB3ZWxsLgoJKF9iZmRfbWlwc19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogT25seSBjcmVhdGUgYSBzdHViIGlmCglub19mbl9zdHViIGlzIG5vdCBzZXQuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfb3V0cHV0X2V4dHN5bSk6IEdldCB0aGUgb3V0cHV0IHNlY3Rpb24KCWluZm9ybWF0aW9uIGZyb20gdGhlIHJlYWwgc3ltYm9sIGZvciBpbmRpcmVjdCBvbmVzLgoJQ2hlY2sgbm9fZm5fc3R1YiB0byBmaW5kIG91dCBpZiBhIHN5bWJvbCBoYXMgYSBmdW5jdGlvbiBzdHViCglpbmRlZWQuCgoJMjAwMS0wMi0wOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldyBmdW5jdGlvbi4KCgkyMDAxLTAyLTA5ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCSogZWxmMzItc3BhcmMuYyAoX2JmZF9zcGFyY19lbGZfaG93dG9fdGFibGUpOiBUcmVhdCBSX1NQQVJDX1VBMzIKCXNpbWlsYXIgdG8gUl9TUEFSQ18zMi4KCSogZWxmNjQtc3BhcmMuYwkoc3BhcmM2NF9lbGZfaG93dG9fdGFibGUpOiBMaWtld2lzZS4KCgkyMDAxLTAyLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoJKiBlbGY2NC1hbHBoYS5jIChhbHBoYV9lbGZfZHluYW1pY19zeW1ib2xfcCk6IFJlc3BlY3Qgd2Vha25lc3MKCWJlZm9yZSB2aXNpYmlsaXR5LiAgTG9jYWxseSBkZWZpbmVkIHByb3RlY3RlZCBzeW1ib2xzIGFyZSBub3QKCWR5bmFtaWMuCgoJMjAwMS0wMi0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgkqIGVsZmxpbmsuaCAoaXNfZ2xvYmFsX3N5bWJvbF9kZWZpbml0aW9uKTogUmVuYW1lIHRvCglpc19nbG9iYWxfZGF0YV9zeW1ib2xfZGVmaW5pdGlvbiBhbmQgaGF2ZSBpdCByZWplY3QgZnVuY3Rpb24KCXN5bWJvbHMuCgkoZWxmX2xpbmtfaXNfZGVmaW5lZF9hcmNoaXZlX3N5bWJvbCk6IFVzZSByZW5hbWVkIGZ1bmN0aW9uLgoKCTIwMDEtMDItMDcgIFRvZGQgVmllcmxpbmcgIDx0dkB3YXNhYmlzeXN0ZW1zLmNvbT4KCSogbGliYmZkLWluLmggKGJmZF90YXJnZXRfdmVjdG9yKTogQ2hhbmdlIGV4dGVybiBhcnJheSB0byBwb2ludGVyLgoJKiBsaWJiZmQuaCAoYmZkX3RhcmdldF92ZWN0b3IpOiBMaWtld2lzZS4KCSogdGFyZ2V0cy5jIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IFJlbmFtZSB0byBfYmZkX3RhcmdldF92ZWN0b3IgYW5kCgltYWtlIHN0YXRpYzsgY3JlYXRlIHBvaW50ZXIgcmVmZXJlbmNlIG5hbWVkIGJmZF90YXJnZXRfdmVjdG9yLgoJKF9iZmRfdGFyZ2V0X3ZlY3Rvcl9lbnRyaWVzKTogQ2FsY3VsYXRlIHRoaXMgYmFzZWQgb24gdGhlIGFycmF5Cgl0eXBlZCBfYmZkX3RhcmdldF92ZWN0b3IuCgoJMjAwMS0wMi0wNiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfZHluYW1pY19zeW1ib2xfcCk6IE9ubHkgaGlkZGVuIGFuZAoJaW50ZXJuYWwgc3ltYm9scyBhcmUgbm90IGR5bmFtaWMuCgkqIGVsZjY0LWFscGhhLmMgKGFscGhhX2VsZl9keW5hbWljX3N5bWJvbF9wKTogTGlrZXdpc2UuCgoJMjAwMS0wMi0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgkqIGVsZi1tMTAyMDAuYzogRml4IGZvcm1hdHRpbmcuCgoJMjAwMS0wMi0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgkqIGVsZi1tMTAzMDAuYzogRml4IGZvcm1hdHRpbmcuCgoyMDAxLTA2LTEwICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlndXJlLmluOiBTZXQgdmVyc2lvbiB0byAyLjExLjEuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDYtMDkgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3BsdDBfZW50cnkpOiBDb3JyZWN0IGVycm9yIGluIGxhc3QKCWNoYW5nZS4KCShlbGYzMl9hcm1fcGx0X2VudHJ5KTogTGlrZXdpc2UuCgoyMDAxLTA2LTA3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogTW9zdCBmaWxlczogVXBkYXRlIGNvcHlyaWdodCBub3RpY2VzLgoKMjAwMS0wNS0yOSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9jaGVja19yZWxvY3MpOiBIYW5kbGUgUl9YODZfNjRfNjQuCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDEtMDUtMjggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF84Nl82NF9zaXplX2luZm8pOiBSZW1vdmUsIHdlIGNhbiB1c2UgdGhlCglnZW5lcmljIHZlcnNpb24gc2luY2Ugd2Ugd2FudCBhIGhhc2hzaXplIG9mIDQuCgkoZWxmX2JhY2tlbmRfc2l6ZV9pbmZvKTogTGlrZXdpc2UuCgoyMDAxLTA1LTI4ICBOaWNvbGFzIFBpdHJlIDxuaWNvQGNhbS5vcmc+CgoJKiBlbGYzMi1hcm0uaDogRml4IFBMVCBnZW5lcmF0aW9uIGZvciBiaWcgZW5kaWFuIEFSTS4KCjIwMDEtMDUtMjggIEplZmYgU3R1cm0gIDxqc3R1cm1Ab25lLXBvaW50LmNvbT4KCgkqIHJlbG9jLmM6IEFkZCBCRkRfUkVMT0NfU1BBUkNfVUExNiBhbmQgQkZEX1JFTE9DX1NQQVJDX1VBNjQuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgkqIGVsZjMyLXNwYXJjLmM6IEVuYWJsZSBCRkRfUkVMT0NfU1BBUkNfVUExNiwgQkZEX1JFTE9DX1NQQVJDX1VBMzIKCWFuZCBCRkRfUkVMT0NfU1BBUkNfVUE2NCBtYXBwaW5nCgkqIGVsZjY0LXNwYXJjLmM6IExpa2V3aXNlLgoKMjAwMS0wNS0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoKCU1lcmdlIGZyb20gbWFpbmxpbmUuCgkyMDAxLTA1LTE3ICBBbGFuIE1vZHJhICA8YW1vZHJhQG9uZS5uZXQuYXU+CgkqIGVsZjMyLWhwcGEuYyAoaHBwYV9idWlsZF9vbmVfc3R1Yik6IEFkZCBhbiBhc3NlcnQgdG8gY2hlY2sKCXBsdC5vZmZzZXQuCgoJMjAwMS0wNS0xNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBvbmUubmV0LmF1PgoJKiBzZWN0aW9uLmMgKGFzZWN0aW9uKTogQWRkIGxpbmtlcl9oYXNfaW5wdXQgZmllbGQuCgkoU1REX1NFQ1RJT04pOiBBZGp1c3QgaW5pdGlhbGl6YXRpb24gdG8gc3VpdC4KCSogZWNvZmYuYyAoYmZkX2RlYnVnX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCTIwMDEtMDUtMDcgIFRoaWVtbyBTZXVmZXIgPHNldWZlckBjc3YuaWNhLnVuaS1zdHV0dGdhcnQuZGU+CgkqIGVjb2ZmLmMgKGJmZF9kZWJ1Z19zZWN0aW9uKTogRml4IGluaXRpYWxpemF0aW9uLgoKCTIwMDEtMDUtMTIgIFBldGVyIFRhcmdldHQgIDxwZXRlci50YXJnZXR0QGFyY2NvcmVzLmNvbT4KCSogY3B1LWFyYy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkIGVudHJ5ICdiYXNlJyByZXByZXNlbnRpbmcgb2xkCgluYW1lIGZvciAnYXJjNScgY29yZSB2ZXJzaW9ucy4KCShiZmRfYXJjX2FyY2gpOiBNYWtlIGJmZF9tYWNoX2FyY182IGRlZmF1bHQuCgkqIGVsZjMyLWFyYy5jIChhcmNfZWxmX29iamVjdF9wKTogTWFrZSBFX0FSQ19NQUNIX0FSQzYgZGVmYXVsdAoJYXJjaGl0ZWN0dXJlLgoJKGFyY19lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IE1ha2UgYmZkX21hY2hfYXJjXzYgZGVmYXVsdC4KCgkyMDAxLTA1LTA4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCSogY29mZi1pMzg2LmMgKGNvZmZfaTM4Nl9yZWxvYyk6IERvbid0IGR1bXAgY29yZSBpZiBvdXRwdXRfYmZkIGlzCglOVUxMIG9yIGlzIG5vdCBDT0ZGLgoJKGNvZmZfaTM4Nl9ydHlwZV90b19ob3d0byk6IERvbid0IGR1bXAgY29yZSBpZiBvdXRwdXQgc2VjdGlvbgoJb3duZXIgaXMgbm90IENPRkYuCgoJMjAwMS0wNC0xMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBtZXRhcGhvcmljcy5jb20+CgkqIGNvZmYtaTM4Ni5jIChUQVJHRVRfU1lNKTogU0VDX1JFQURPTkxZIGlzIGFuIGFwcGxpY2FibGUgc2VjdGlvbgoJZmxhZyBvbiBwZS1pMzg2IHRhcmdldHMuCgoJMjAwMS0wNC0yNiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IFZlcmlmeSBpZiByX3N5bW5keCBpcwoJdmFsaWQuCgoJMjAwMS0wNC0wNSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfZmFrZV9zZWN0aW9ucyk6IFRyZWF0ICIucmVsb2MiIGFzIGFuCglvcmRpbmFyeSAicHJvZ2JpdHMiIHNlY3Rpb24uCgoyMDAxLTA1LTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoU1JFTDE2LCBTUkVMMzIsIFNSRUw2NCk6IFNldCBwY3JlbF9vZmZzZXQgdHJ1ZS4KCjIwMDEtMDQtMzAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4sIEFuZHJlYXMgU2Nod2FiIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IENvcnJlY3QgdGVzdCBmb3IKCVJfWDg2XzY0X0dPVFBDUkVMLCBkb24ndCB1c2UgYXNzaWdubWVudHMgaW5zdGVhZCBvZiBjb21wYXJpc29ucy4KCjIwMDEtMDQtMjcgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBPbmx5IHN3YXAKCW91dCBoYW5kbGVkIGVudHJpZXMuCgkoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFNldCB1cCBHT1QgZW50cmllcy4KCShlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBHT1RQQ1JFTCBjYWxjdWxhdGlvbi4KCShlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IE1lcmdlIGVudHJpZXMgZm9yIEdPVFBDUkVMIGFuZAoJR09UMzIuCgoyMDAxLTA0LTMwICBBbGFuIE1vZHJhICA8YW1vZHJhQG9uZS5uZXQuYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGZpbmFsX2xpbmtfcmVsb2NhdGUpOiBCcmFuY2ggdG8gLis4IGZvcgoJY2FsbHMgdG8gdW5kZWZpbmVkIHdlYWsgc3ltYm9scy4KCjIwMDEtMDQtMTkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfcGx0MF9lbnRyeSk6IEZpeCBpbnN0cnVjdGlvbnMuCgkoZWxmNjRfeDg2XzY0X3BsdF9lbnRyeSk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IEZpeCBQTFQwIGdlbmVyYXRpb24uCgkoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEZpeCBQTFQgZ2VuZXJhdGlvbi4KCjIwMDEtMDMtMzEgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJRnJvbSAyMDAxLTAzLTI2ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZjMyLWdlbi5jIChlbGYzMl9nZW5lcmljX2xpbmtfYWRkX3N5bWJvbHMpOiBOZXcuIENoZWNrCglpZiB0aGVyZSBhcmUgYW55IHJlbG9jYXRpb25zIGZvciBnZW5lcmljIEVMRi4KCShiZmRfZWxmMzJfYmZkX2xpbmtfYWRkX3N5bWJvbHMpOiBEZWZpbmVkIHRvCgllbGYzMl9nZW5lcmljX2xpbmtfYWRkX3N5bWJvbHMuCgkqIGVsZjY0LWdlbi5jIChlbGY2NF9nZW5lcmljX2xpbmtfYWRkX3N5bWJvbHMpOiBOZXcuIENoZWNrCglpZiB0aGVyZSBhcmUgYW55IHJlbG9jYXRpb25zIGZvciBnZW5lcmljIEVMRi4KCShiZmRfZWxmNjRfYmZkX2xpbmtfYWRkX3N5bWJvbHMpOiBEZWZpbmVkIHRvCgllbGY2NF9nZW5lcmljX2xpbmtfYWRkX3N5bWJvbHMuCgoyMDAxLTAzLTIxICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NldF9ncCk6IENoZWNrIHNlYy0+b3V0cHV0X3NlY3Rpb24KCW5vbi1OVUxMIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRlcmVmZXJlbmNlLgoKMjAwMS0wMy0yMCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IG5lZWQgdGhlCglyZWxvY2F0aW9uIHZhbHVlIHdoZW4gcmVzb2x2aW5nIGEgcmVmZXJlbmNlIGZyb20gYSBkZWJ1Z2dpbmcKCXNlY3Rpb24uCgoyMDAxLTAzLTE2ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wMy0xNiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9saW5rX2hhc2hfZW50cnkpOiBBZGQgbWF5YmVfcGljX2NhbGwuCgkoaHBwYV9saW5rX2hhc2hfbmV3ZnVuYyk6IEluaXQgaXQuCgkoaHBwYV90eXBlX29mX3N0dWIpOiBPbmx5IHVzZSBub24tUElDIHRvIFBJQyBjYWxsIHN0dWIgaWYgY2FsbGVyCglzZWN0aW9uIGFwcGVhcnMgdG8gYmUgbm9uLVBJQy4KCShmaW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBTZXQgbWF5YmVfcGljX2NhbGwgZm9yIGFueQoJcG9zc2libGUgY2FuZGlkYXRlIGZ1bmN0aW9uLCBhbmQgc2V0IHBpY19jYWxsIGZvciB0aG9zZSB0aGF0IHdpbGwKCW9ubHkgaGF2ZSBhIC5wbHQgZW50cnkgZm9yIHRoZSBQSUMgY2FsbCBzdHViLgoJKGhwcGFfaGFuZGxlX1BJQ19jYWxscyk6IFNldCBtYXliZV9waWNfY2FsbC4KCgkqIGVsZjMyLWhwcGEuYzogQ29ycmVjdCBmaWVsZCBzZWxlY3RvciBpbiBzdHViIGNvbW1lbnRzLgoJKGNsb2JiZXJfbWlsbGljb2RlX3N5bWJvbHMpOiBGb3JtYXR0aW5nIGZpeC4KCjIwMDEtMDMtMTEgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW46IFNldCB2ZXJzaW9uIHRvIDIuMTEuCgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERvbid0IG1ha2UgUExUCgllbnRyaWVzIHRoYXQgY291bGQgc2VydmUgYXMgYSBkZWZpbml0aW9uIGZvciBhIHdlYWsgc3ltYm9sLgoKMjAwMS0wMy0wNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IGhhbmRsaW5nIG9mCglzb21lIHJlbG9jYXRpb24gdmFsdWVzLgoKMjAwMS0wMi0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogQWRkIHJlbG9jYXRpb24KCXRvIGFkZGVuZC4KCjIwMDEtMDItMjYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jICh4ODZfNjRfZWxmX2hvd3RvX3RhYmxlKTogRml4IG9yZGVyIG9mIGVudHJpZXMuCgoyMDAxLTAyLTIxICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIGNwdS1pYTY0LW9wYy5jIChlbGY2NF9pYTY0X29wZXJhbmRzfTogRml4IHR5cG86IGVycm9yIHN0cmluZyBmb3IKCUM4IHNhaWQgIjEiIGluc3RlYWQgb2YgIjgiLiAgQ2xhcmlmeSBlcnJvciBzdHJpbmcgZm9yIElNTTIyOgoJInNpZ25lZCBpbnRlZ2VyIiBpbnN0ZWFkIG9mIGp1c3QgImludGVnZXIiLgoKMjAwMS0wMi0yMCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmMgKGVsZjY0X3g4Nl82NF9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBEb24ndCBtYWtlCglQTFQgZW50cmllcyB0aGF0IGNvdWxkIHNlcnZlIGFzIGEgZGVmaW5pdGlvbiBmb3IgYSB3ZWFrIHN5bWJvbC4KCjIwMDEtMDItMTggIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRD4KCgkqIGNvbmZpZ3VyZS5pbjogUmVjb2duaXplIEZyZWVCU0QvYXJtLCBGcmVlQlNEL1Bvd2VyUEMsIGFuZCB0cmVhdAoJRnJlZUJTRC9pMzg2LUNVUlJFTlQgZGlmZmVyZW50bHkgdW50aWwgSSBjYW4gZmlndXJlIG91dCB0aGUgbmVlZGVkCgljb3JlZmlsZSBjaGFuZ2VzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5iZmQ6IFJlY29nbml6ZSBGcmVlQlNEL3g4Ni02NCwgRnJlZUJTRC9pYTY0LCBGcmVlQlNEL2FybSwKCUZyZWVCU0QvUG93ZXJQQywgYW5kIEZyZWVCU0Qvc3BhcmM2NC4KCjIwMDEtMDItMTQgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCglGcm9tIDIwMDEtMDItMDYgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogYmZkL3BlaWNvZGUuaCAoY29mZl9zd2FwX2ZpbGVoZHJfaW4pOiBSZW1vdmUgdGhlIGVfbWFnaWMKCWNoZWNraW5nLgoJKHBlX2JmZF9vYmplY3RfcCk6IFJld3JpdGUgd2l0aCBleHRlcm5hbF9QRUlfRE9TX2hkciBhbmQKCWV4dGVybmFsX1BFSV9JTUFHRV9oZHIuCgoyMDAxLTAyLTE0ICBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5kZT4KCiAgICAgICAgKiBlbGY2NC14ODYtNjQuYzogU21hbGwgZm9ybWF0dGluZyBmaXhlcyBhbmQgcmVhcnJhbmdlbWVudHMgb2YgY29kZS4KICAgICAgICAoZWxmNjRfODZfNjRfc2l6ZV9pbmZvKTogU3RydWN0IGFkZGVkIHRvIGZpeCBhIHByb2JsZW0KICAgICAgICB3aXRoIHRoZSBoYXNodGFibGUgc3RyaW5nIGVudHJpZXMuCiAgICAgICAgKGVsZjY0X3g4Nl82NF9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBBZGQgZ2VuZXJhdGlvbiBvZiAuZ290LnBsdC4KICAgICAgICAoZWxmNjRfeDg2XzY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEEgRklYTUUgcmVtb3ZlZC4KICAgICAgICAoZWxmNjRfeDg2XzY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEZpeCBhIGR5bmFtaWMgZW50cnkgYW5kCiAgICAgICAgcmVtb3ZlIHRoZSBGSVhNRSBmb3IgdGhpcy4KICAgICAgICAoZWxmNjRfeDg2XzY0X2FkanVzdF9keW5hbWljX3N5bWJvbCk6IEZpeCBjaGVjayBmb3IgdW5uZWVkZWQgLnBsdAogICAgICAgIHNlY3Rpb24uIEFsc28gcmVtb3ZlZCB0aGUgRklYTUUgZm9yIGl0LgogICAgICAgICh4ODZfNjRfZWxmX2hvd3RvX3RhYmxlKTogVXNlIGJmZF9lbGZfZ2VuZXJpY19yZWxvYy4KICAgICAgICAoRUxGX0RZTkFNSUNfSU5URVJQUkVURVIpOiBGaXggdGhlIG5hbWUgb2YgdGhlIGR5bmFtaWMgbGlua2VyLgogICAgICAgIChlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBFbmFibGUgLmdvdC5wbHQgd3JpdGluZy4KCjIwMDEtMDItMTQgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCglGcm9tIDIwMDEtMDItMDggIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBSZXNlcnZlIFJfMzg2XzMyCglyZWxvY2F0aW9uIGVudHJpZXMgZm9yIHdlYWsgZGVmaW5pdGlvbnMgd2hlbiBidWlsZGluZyBEU08gd2l0aAoJLUJzeW1ib2xpYy4KCjIwMDEtMDItMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfZmluYWxfbGluayk6IFNldCBfX2dwIGlmIHJlcXVpcmVkCglhbmQgbm90IHVzZXIgcHJvdmlkZWQuCgoyMDAxLTAyLTEzICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NldF9ncCk6IEhhbmRsZSB3ZWFrICRnbG9iYWwkLiAgSWYKCSRnbG9iYWwkIHJlZmVyZW5jZWQgYnV0IG5vdCBkZWZpbmVkLCBzZXQgaXRzIHZhbHVlIGhlcmUuCgoyMDAxLTAyLTA5ICBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5kZT4KCgkqIGVsZjY0LXg4Ni02NC5jIChlbGY2NF94ODZfNjRfY2hlY2tfcmVsb2NzKTogU2V0IC5yZWxhLmdvdCBzZWN0aW9uCglhbGlnbm1lbnQgdG8gMy4KCShlbGY2NF94ODZfNjRfY2hlY2tfcmVsb2NzKTogV3JpdGUgUl9YODZfNjRfR09UUENSRUwgR09UIGVudHJ5CglhbmQgcmVsb2NhdGlvbi4KCShlbGY2NF94ODZfNjRfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBmb3JtYXR0aW5nLgoJKGVsZjY0X3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IGFkZGVuZCBmb3IgcmVsb2NhdGlvbiBvZgoJUl9YODZfNjRfKDh8MTZ8MzJ8UEM4fFBDMTZ8UEMzMikuCgpNb24gRmViIDEyIDE3OjQ0OjM5IENFVCAyMDAxICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBlbGY2NC14ODYtNjQuYyAoeDg2XzY0X2VsZl9ob3d0byk6IEZpeCBuYW1lIG9mIFJfWDg2XzY0X0dPVFBDUkVMLgoKMjAwMS0wMi0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfcmVsb2MpOiBEbyBub3QgY29udmVydCByZWxvYyBhZGRlbmQgdG8gUEMKCXJlbCwgaXQgd2lsbCBiZSBoYW5kbGVkIGxhdGVyIG9uLgoKMjAwMS0wMi0wOSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgoJKiBlbGZ4eC1pYTY0LmMgKGlzX3Vud2luZF9zZWN0aW9uX25hbWUpOiBOZXcgZnVuY3Rpb24uICBSZXR1cm5zCgl0cnVlIGlmIHNlY3Rpb24gbmFtZSBpcyBhbiB1bndpbmQgdGFibGUgc2VjdGlvbiBuYW1lLgoJKGVsZk5OX2lhNjRfYWRkaXRpb25hbF9wcm9ncmFtX2hlYWRlcnMpOiBDb3VudCBlYWNoIHVud2luZCBzZWN0aW9uCglzZXBhcmF0ZWx5LgoJKGVsZk5OX2lhNjRfbW9kaWZ5X3NlZ21lbnRfbWFwKTogSW5zdGFsbCBvbmUgdW53aW5kIHByb2dyYW0gaGVhZGVyCglmb3IgZWFjaCB1bndpbmQgc2VwYXJhdGUgc2VjdGlvbi4gIE5vdGU6IG5vcm1hbGx5IHRoZSBsaW5rZXIKCXNjcmlwdCBtZXJnZXMgdGhlIHVud2luZCBzZWN0aW9ucyB0aGF0IGdvIGludG8gYSBzaW5nbGUgc2VnbWVudCwKCXNvIHRoaXMgc3RpbGwgZ2VuZXJhdGVzIGF0IG1vc3Qgb25lIHVud2luZCBwcm9ncmFtIGhlYWRlciBwZXIKCXNlZ21lbnQuCgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfc2VjdGlvbl9mcm9tX3NoZHIpOiBBY2NlcHQgYW55IHNlY3Rpb24KCW5hbWUgZm9yIFNIVF9JQV82NF9VTldJTkQsIG5vdCBqdXN0IC5JQV82NC51bndpbmQuCgkoZWxmTk5faWE2NF9mYWtlX3NlY3Rpb25zKTogTWFyayBzZWN0aW9ucyB3aXRoIG5hbWVzIHRoYXQgc3RhcnQKCXdpdGggLklBXzY0LnVud2luZCBidXQgbm90IHdpdGggLklBXzY0LnVud2luZF9pbmZvIGFzIGFuIElBLTY0Cgl1bndpbmQgc2VjdGlvbi4KCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTmV3IGZ1bmN0aW9uLgoJVXNlIGl0IHRvIG1ha2Ugc2hfaW5mbyBpbiB1bndpbmQgc2VjdGlvbiBwb2ludCB0byB0aGUgdGV4dCBzZWN0aW9uCglpdCBhcHBsaWVzIHRvLgoKMjAwMS0wMi0wNyAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNvZmZnZW4uYyAoY29mZl9maW5kX25lYXJlc3RfbGluZSk6IElmIHN0YWJzIGluZm8gaXMgc3VjY2Vzc2Z1bGx5Cglmb3VuZCwgZG8gbm90IGF0dGVtcHQgdG8gZmluZCBkd2FyZjIgaW5mbyBiZWZvcmUgcmV0dXJuaW5nLgoKMjAwMS0wMS0zMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9lbGZfZ2V0X3N5bWJvbF90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2dldF9zeW1ib2xfdHlwZSk6IERlZmluZS4KCShlbGY2NF9ocHBhX29iamVjdF9wKTogU2V0IGFyY2hpdGVjdHVyZSBhbmQgbWFjaGluZSBmcm9tIGVsZgoJaGVhZGVyIGZsYWdzLgoKMjAwMS0wMS0zMCAgQ3VydGlzIEwuIEphbnNzZW4gIDxjbGphbnNzQGNhLnNhbmRpYS5nb3Y+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9maW5kX25lYXJlc3RfbGluZSk6IFF1ZXJ5IGR3YXJmMgoJYmVmb3JlIG1kZWJ1Zy4KCjIwMDEtMDEtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfZHluYW1pY19zeW1ib2xfcCk6IFJldHVybiBmYWxzZQoJZm9yIG5vbi1kZWZhdWx0IHZpc2liaWxpdHkuCgkqIGVsZjY0LWFscGhhLmMgKGFscGhhX2VsZl9keW5hbWljX3N5bWJvbF9wKTogTGlrZXdpc2UsIGJ1dAoJZGVsZXRlIHVnbHkgbWFjcm8gYW5kIHJlcGxhY2Ugd2l0aCBwcmV0dHkgZnVuY3Rpb24uCgoyMDAxLTAxLTI1ICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY29mZi1nbzMyLmM6IFVwZGF0ZSBjb3B5cmlnaHQuCgkqIGNvZmYtc3RnbzMyLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWdvMzIuYyAoQ09GRl9MT05HX0ZJTEVOQU1FUyk6IERlZmluZS4KCSogY29mZi1zdGdvMzIuYyAoQ09GRl9MT05HX0ZJTEVOQU1FUyk6IExpa2V3aXNlLgoJKiBjb2ZmLWdvMzIuYyAoQ09GRl9TRUNUSU9OX0FMSUdOTUVOVF9FTlRSSUVTKTogUmVtb3ZlIC5ic3MgZW50cnkuCgkqIGNvZmYtc3RnbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IExpa2V3aXNlLgoKMjAwMS0wMS0yNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgkqIGxpYmJmZC5oOiBMaWtld2lzZS4KCjIwMDEtMDEtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjIwMDEtMDEtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIHZtcy1taXNjLmMgKF9iZmRfdm1zX25leHRfcmVjb3JkKTogUmV0dXJuIC0xIGlmIFBSSVYodm1zX2J1ZikKCWlzIE5VTEwgb3IgUFJJVih2bXNfcmVjKSBpcyBvdXRzaWRlIG9mIHRoZSBidWZmZXIuCgoyMDAxLTAxLTIzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmY2NC1yczYwMDAuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvZmYtYXJtLmM6IExpa2V3aXNlLgoJKiBjb2ZmZ2VuLmM6IExpa2V3aXNlLgoJKiBjb2ZmbGluay5jOiBMaWtld2lzZS4KCSogY29mZi1tY29yZS5jOiBMaWtld2lzZS4KCSogY29mZi1taXBzLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXBtYWMuYzogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXJzNjAwMC5jOiBMaWtld2lzZS4KCSogZWxmMzIuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWZyMzAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWkzNzAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWk4NjAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW0zMnIuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmM6IExpa2V3aXNlLgoJKiBlbGYzMi12ODUwLmM6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYzogTGlrZXdpc2UuCgkqIGVsZmxpbmsuYzogTGlrZXdpc2UuCgkqIGVsZmxpbmsuaDogTGlrZXdpc2UuCgkqIGVsZi1tMTAyMDAuYzogTGlrZXdpc2UuCgkqIGVsZi1tMTAzMDAuYzogTGlrZXdpc2UuCgkqIGVsZnh4LWlhNjQuYzogTGlrZXdpc2UuCgoJKiBhb3V0eC5oOiBGaXggZm9ybWF0dGluZy4KCSogYmZkLmM6IExpa2V3aXNlLgoJKiBiZmQtaW4yLmg6IExpa2V3aXNlLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGNwdS1pMzg2LmM6IExpa2V3aXNlLgoJKiBjcHUtbTY4aGMxMS5jOiBMaWtld2lzZS4KCSogZHdhcmYyLmM6IExpa2V3aXNlLgoJKiBlbGY2NC14ODYtNjQuYzogTGlrZXdpc2UuCgkqIGZvcm1hdC5jOiBMaWtld2lzZS4KCSogZnJlZWJzZC5oOiBMaWtld2lzZS4KCSogaGFzaC5jOiBMaWtld2lzZS4KCSogaHAzMDBocHV4LmM6IExpa2V3aXNlLgoJKiBocHBhYnNkLWNvcmUuYzogTGlrZXdpc2UuCgkqIGhwdXgtY29yZS5jOiBMaWtld2lzZS4KCjIwMDEtMDEtMjIgIEJvIFRob3JzZW4gIDxib0BzdXNlLmRlPgoKCSogZWxmNjQteDg2LTY0LmM6IEFkZGVkIFBJQyBzdXBwb3J0IGZvciBYODYtNjQuCgkoZWxmNjRfeDg2XzY0X2xpbmtfaGFzaF9uZXdmdW5jKTogRnVuY3Rpb24gYWRkZWQuCgkoZWxmNjRfeDg2XzY0X2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfY2hlY2tfcmVsb2NzKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9nY19zd2VlcF9ob29rKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2FkanVzdF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZjY0X3g4Nl82NF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfZGlzY2FyZF9jb3BpZXMpOiBMaWtld2lzZS4KCShlbGY2NF94ODZfNjRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmNjRfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgcmVsb2NhdGlvbiBvZiBQSUMgc2VjdGlvbnMuCgoyMDAxLTAxLTIxICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgoJKiBNYWtlZmlsZS5hbSAoaW5zdGFsbC1kYXRhLWxvY2FsKTogTWFrZSB1c2Ugb2YgJChERVNURElSKS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAxLTAxLTIxICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmYtYTI5ay5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDEtMDEtMTkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogUmVwb3J0IGZpbGVzIHdpdGggYmFkCglyZWxvY2F0aW9uIHNlY3Rpb24gbmFtZXMuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IFJlcG9ydCBmaWxlcyB3aXRoIGJhZCByZWxvY2F0aW9uCglzZWN0aW9uIG5hbWVzIGFuZCByZXR1cm4gZmFsc2UuCgoyMDAxLTAxLTE3ICBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5kZT4KCgkqIHRhcmdldHMuYzogQWxwaGFiZXRpemUgbGlzdCBvZiB4dmVjcy4KCjIwMDEtMDEtMTQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb25maWcuYmZkOiBBZGQgbGludXggdGFyZ2V0IHZhcmlhbnQgZm9yIGVsZnh4LWhwcGEuCgkqIGNvbmZpZ3VyZS5pbjogUmVjb2duaXplIGJmZF9lbGYzMl9ocHBhX2xpbnV4X3ZlYyBhbmQKCWJmZF9lbGY2NF9ocHBhX2xpbnV4X3ZlYy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBlbGY2NC1ocHBhLmM6IEluY2x1ZGUgZWxmNjQtdGFyZ2V0LmggYWdhaW4gdG8gc3VwcG9ydCBsaW51eAoJdGFyZ2V0IHZhcmlhbnQuCgkoZWxmNjRfaHBwYV9wb3N0X3Byb2Nlc3NfaGVhZGVycyk6IFNldCBFTEZPU0FCSV9MSU5VWCBmb3IgbGludXguCgkqIGVsZjMyLWhwcGEuYzogSW5jbHVkZSBlbGYzMi10YXJnZXQuaCBhZ2FpbiB0byBzdXBwb3J0IGxpbnV4Cgl0YXJnZXQgdmFyaWFudC4KCShlbGYzMl9ocHBhX3Bvc3RfcHJvY2Vzc19oZWFkZXJzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX3Bvc3RfcHJvY2Vzc19oZWFkZXJzKTogRGVmaW5lLgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogQWRkIGJmZF9lbGY2NF9ocHBhX2xpbnV4X3ZlYyBhbmQKCWJmZF9lbGYzMl9ocHBhX2xpbnV4X3ZlYy4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBBZGQgdGV4dF9zZWdtZW50X2Jhc2UsCglhbmQgZGF0YV9zZWdtZW50X2Jhc2UgZmllbGRzLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSApOiBJbml0IHRoZW0uCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBVcGRhdGUgY29tbWVudHMuCgkoaHBwYV9yZWNvcmRfc2VnbWVudF9hZGRyKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IENhbGwgaXQuCgkoZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBSX1BBUklTQ19TRUdSRUwzMi4KCShlbGYzMl9ocHBhX2ZpbmFsX2xpbmspOiBOZXcgZnVuY3Rpb24uCgkoYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rKTogRGVmaW5lIHRvIGNhbGwgaXQuCgkoaHBwYV91bndpbmRfZW50cnlfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCSogY2FjaGUuYyAoYmZkX29wZW5fZmlsZSk6IENyZWF0ZSBmaWxlcyBpbiB3cml0ZStyZWFkIG1vZGUuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9ob3d0b190YWJsZSk6IFNldCBiaXRzaXplIHZhbHVlIGZvcgoJU0VHUkVMMzIgYW5kIG51bWVyb3VzIG90aGVyIHJlbG9jcy4gIENoYW5nZSBkdXBsaWNhdGUKCVJfUEFSSVNDX05PTkUgcmVsb2NzIHRvIFJfUEFSSVNDX1VOSU1QTEVNRU5URUQuCgoJKiBvcG5jbHMuYyAoYmZkX2Zkb3BlbnIpOiBBZGQgcGFyZW5zIGxpa2UgdGhlIGNvbW1lbnQgc2F5cyBhcm91bmQKCU9fQUNDTU9ERS4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBjcmVhdGUKCS5wbHQgZW50cmllcyBmb3IgRFRfSU5JVCBhbmQgRFRfRklOSS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgb2YKCURUX0lOSVQgYW5kIERUX0ZJTkkuCgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogVXNlIDE2LWJpdAoJb2Zmc2V0cyBmb3Igc3R1YiAucGx0IGFjY2VzcyBpZiB3aWRlIG1vZGUuICBDaGVjayBvZmZzZXQgaW4gcmFuZ2UuCgoyMDAxLTAxLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZWxmMzItZnIzMC5jIChmcjMwX2VsZl9ob3d0b190YWJsZSk6IFJlbW92ZSBzcHVyaW91cyBibGFuawoJbGluZS4KCgkqIGNvZmZjb2RlLmggKGNvZmZfY2Fub25pY2FsaXplX3JlbG9jKTogUmVtb3ZlIHNwdXJpb3VzIGJsYW5rCglsaW5lLgoKMjAwMS0wMS0xMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvbmZpZ3VyZS5pbiAoW2JmZF9lbGY2NF94ODZfNjRfdmVjXSk6IFNldCB0YXJnZXQ2NC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wMS0xMSAgUGV0ZXIgVGFyZ2V0dCAgPHBldGVyLnRhcmdldHRAYXJjY29yZXMuY29tPgoKCSogYmZkLWluMi5oIChiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIGJmZF9tYWNoX2FyY181LAoJYmZkX21hY2hfYXJjXzYsIGJmZF9tYWNoX2FyY183LCBiZmRfbWFjaF9hcmNfOCBmb3IgQVJDIHZhcmlhbnRzLgoJKiBjcHUtYXJjLmMgKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGQgZW50cmllcyBmb3IgdmFyaWFudHMuCgkoYmZkX2FyY19hcmNoKSBTZXQgZGVmYXVsdCB0byBiZmRfbWFjaF9hcmNfNS4KCShhcmNfZ2V0X21hY2gpIERvbid0IGFzc3VtZSBtYWNoaW5lIG5hbWVzIHByZWZpeGVkIGFyYy0gYmVmb3JlCgl0ZXN0aW5nLgoJKiBlbGYzMi1hcmMuYyAoYXJjX2VsZl9vYmplY3RfcCk6IFNldCBtYWNoaW5lIG51bWJlciBiYXNlZCBvbiBuZXcKCXNlbGVjdGlvbnMuCgkoYXJjX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKSBMaWtld2lzZS4KCShFTEZfTUFDSElORV9DT0RFKSBVc2UgRU1fQVJDLgoKMjAwMS0wMS0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvZmYtYXJtLmMgKExPQ0FMX0xBQkVMX1BSRUZJWCk6IENoYW5nZSBkZWZpbml0aW9uIHRvICIiLgoKMjAwMS0wMS0wNyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIFJFQURNRTogUmVwbGFjZSBgYnVnLWdudS11dGlsc0BnbnUub3JnJyB3aXRoCglgYnVnLWJpbnV0aWxzQGdudS5vcmcnLgoKMjAwMS0wMS0wNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBzb20uYzogRml4IGZvcm1hdHRpbmcuCgoyMDAxLTAxLTAzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGVjb2Zmc3dhcC5oOiBGaXggZm9ybWF0dGluZy4KCSogZWxmLWJmZC5oOiBMaWtld2lzZS4KCSogZWxmYXJtLW5hYmkuYzogTGlrZXdpc2UuCgkqIGVsZmFybS1vYWJpLmM6IExpa2V3aXNlLgoJKiBlbGZjb2RlLmg6IExpa2V3aXNlLgoJKiBlbGZjb3JlLmg6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmM6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmg6IExpa2V3aXNlLgoJKiBlbGZ4eC1pYTY0LmM6IExpa2V3aXNlLgoJKiBlbGZ4eC10YXJnZXQuaDogTGlrZXdpc2UuCgkqIGxpYmJmZC5jOiBMaWtld2lzZQoJKiBsaW5rZXIuYzogTGlrZXdpc2UuCgkqIGx5bngtY29yZS5jOiBMaWtld2lzZS4KCjIwMDEtMDEtMDIgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogcGM1MzItbWFjaC5jOiBGaXggZm9ybWF0dGluZy4KCSogcGUtYXJtLmM6IExpa2V3aXNlLgoJKiBwZS1pMzg2LmM6IExpa2V3aXNlLgoJKiBwZS1taXBzLmM6IExpa2V3aXNlLgoJKiBwZS1wcGMuYzogTGlrZXdpc2UuCgkqIHBlLXNoLmM6IExpa2V3aXNlLgoJKiBwZWktbWlwcy5jOiBMaWtld2lzZS4KCSogcGVpLXNoLmM6IExpa2V3aXNlLgoJKiBwZWljb2RlLmg6IExpa2V3aXNlLgoJKiBwcGNib290LmM6IExpa2V3aXNlLgoJKiBwdHJhY2UtY29yZS5jOiBMaWtld2lzZS4KCjIwMDEtMDEtMDEgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogcmVsb2MuYzogRml4IGZvcm1hdHRpbmcuCgkqIHJpc2NpeC5jOiBMaWtld2lzZS4KCSogcnM2MDAwLWNvcmUuYzogTGlrZXdpc2UuCgkqIHhjb2ZmLXRhcmdldC5oOiBMaWtld2lzZS4KCjIwMDAtMTItMjkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogQWxzbyByZXN0b3JlIHRoZSBiZmQgbWFjaCBmaWVsZCBvbgoJZXJyb3IsIGJ5IGNhbGxpbmcgYmZkX2RlZmF1bHRfc2V0X2FyY2hfbWFjaCB3aXRoIGluY29taW5nCgl2YWx1ZXMuCgoyMDAwLTEyLTI2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHZheG5ldGJzZC5jOiBGaXggZm9ybWF0dGluZy4KCSogdmVyc2Fkb3MuYzogTGlrZXdpc2UuCgkqIHZtcy1nc2QuYzogTGlrZXdpc2UuCgkqIHZtcy1oZHIuYzogTGlrZXdpc2UuCgkqIHZtcy1taXNjLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0yNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBhcmNoaXZlLmMgKGNvZmZfd3JpdGVfYXJtYXApOiBEb24ndCB3cml0ZSBtb3JlIHRoYW4gc3ltYm9sX2NvdW50CglgYXJjaGl2ZV9tZW1iZXJfZmlsZV9wdHIncy4KCjIwMDAtMTItMjUgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogdm1zLXRpci5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTItMjMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogdm1zLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiB2bXMuaDogTGlrZXdpc2UuCgoyMDAwLTEyLTIxICBTYW50ZXJpIFBhYXZvbGFpbmVuIDxzYW50dHVAc3NoLmNvbT4KCgkqIHZtcy1oZHIuYzogSW5jbHVkZSBhbGxvY2EuaCBpZiBIQVZFX0FMTE9DQV9IIGlzIGRlZmluZWQuCgoJKiBwZWljb2RlLmggKHBlX0lMRl9vYmplY3RfcCk6IEFkZCBjb25zdCB0byBpbXBvcnQgb2YgVEFSR0VUX0xJVFRMRV9TWU0uCgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX2dlbmVyaWNfcmVsb2MpOiBBZGQgY2FzdCB0byBhdm9pZCAodm9pZCAqKQoJYXJpdGhtZXRpYy4KCgkqIGVsZjMyLWZyMzAuYzogQWRkIGNhc3RzIHRvIGF2b2lkICh2b2lkICopIGFyaXRobWV0aWMuCgoJKiBjb2ZmY29kZS5oIChzdHlwX3RvX3NlY19mbGFncyk6IEFkZCBlbXB0eSBzdGF0ZW1lbnQgYWZ0ZXIgbGFiZWwuCgoyMDAwLTEyLTIxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBsaWJiZmQuYyAoYmZkX2dldF9iaXRzKTogQWRkZWQKCShiZmRfcHV0X2JpdHMpOiBMaWtld2lzZQoJKiBiZmQtaW4uaDogRGVjbGFyZWQgdGhlIGFib3ZlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMC0xMi0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiB0YXJnZXRzLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiB0ZWtoZXguYzogTGlrZXdpc2UuCgkqIHRyYWQtY29yZS5jOiBMaWtld2lzZS4KCjIwMDAtMTItMTkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogc2NvNS1jb3JlLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBzZWN0aW9uLmM6IExpa2V3aXNlLgoJKiBzcGFyY2xpbnV4LmM6IExpa2V3aXNlLgoJKiBzcGFyY2x5bnguYzogTGlrZXdpc2UuCgkqIHNwYXJjbmV0YnNkLmM6IExpa2V3aXNlLgoJKiBzcmVjLmM6IExpa2V3aXNlLgoJKiBzdGFicy5jOiBMaWtld2lzZS4KCSogc3RhYi1zeW1zLmM6IExpa2V3aXNlLgoJKiBzdW5vcy5jOiBMaWtld2lzZS4KCSogc3ltcy5jOiBMaWtld2lzZS4KCSogc3lzZGVwLmg6IExpa2V3aXNlLgoKMjAwMC0xMi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvZmYtYXJtLmMgKEVYVFJBX1NfRkxBR1MpOiBPbmx5IGRlZmluZSBpZiBub3QgYWxyZWFkeQoJZGVmaW5lZC4KCSogZXBvYy1wZS1hcm0uYyAoRVhUUkFfU19GTEFHUyk6IERlZmluZS4KCSogZXBvYy1wZWktYXJtLmMgKEVYVFJBX1NfRkxBR1MpOiBEZWZpbmUuCgoyMDAwLTEyLTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogdm1zLW1pc2MuYyAoX2JmZF92bXNfZ2V0X3JlY29yZCk6IEFkZCBkZWZhdWx0IGNhc2UgdG8KCWZpbGVfZm9ybWF0IHN3aXRjaC4KCjIwMDAtMTItMTUgIE1pbG9zbGF2IFRybWFjIDxtaXRyQHZvbG55LmN6PgoKCSogZWxmY29yZS5oIChlbGZfY29yZV9maWxlX3ApOiBNb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbQoJaGVhZGVycyBiZWZvcmUgYXR0ZW1wdGluZyB0byByZWFkIHRoZW0uCgoyMDAwLTEyLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHBlaWdlbi5jOiBGaXggZm9ybWF0dGluZy4KCSogc29tLmM6IExpa2V3aXNlLgoJKiBzb20uaDogTGlrZXdpc2UuCgoyMDAwLTEyLTEzICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHBlaWdlbi5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTItMTIgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqICBlbGZ4eC1pYTY0LmMgKGdldF9keW5fc3ltX2luZm8pOiBDYXN0ICVwIGFyZ3VtZW50IHRvIHZvaWQgKi4KCjIwMDAtMTItMDggIE1hcmsgU2FsdGVyICA8bXNhbHRlckByZWRoYXQuY29tPgoKCSogYmluYXJ5LmMgKGJpbmFyeV9zZXRfc2VjdGlvbl9jb250ZW50cyk6IElnbm9yZSBzZWN0aW9ucwoJd2l0aCB6ZXJvIHNpemUuCgoyMDAwLTEyLTEyICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIG02OGtsaW51eC5jOiBGaXggZm9ybWF0dGluZy4KCSogbTY4a25ldGJzZC5jOiBMaWtld2lzZS4KCSogbWlwc2JzZC5jOiBMaWtld2lzZS4KCSogbmV0YnNkLWNvcmUuYzogTGlrZXdpc2UuCgkqIG5ldGJzZC5oOiBMaWtld2lzZS4KCSogbmV3c29zMy5jOiBMaWtld2lzZS4KCSogbmxtMzItYWxwaGEuYzogTGlrZXdpc2UuCgkqIG5sbTMyLWkzODYuYzogTGlrZXdpc2UuCgkqIG5sbTMyLXBwYy5jOiBMaWtld2lzZS4KCSogbmxtMzItc3BhcmMuYzogTGlrZXdpc2UuCgkqIG5sbWNvZGUuaDogTGlrZXdpc2UuCgkqIG5sbXN3YXAuaDogTGlrZXdpc2UuCgkqIG5sbS10YXJnZXQuaDogTGlrZXdpc2UuCgkqIG5zMzJrbmV0YnNkLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0xMCAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IERvbid0IGNvbXBsYWluIGFib3V0IHVuZGVmaW5lZAoJc3ltYm9scyBpbiBzaGFyZWQgb2JqZWN0cyBpZiBhbGxvd19zaGxpYl91bmRlZmluZWQgaXMgdHJ1ZS4KCjIwMDAtMTItMTIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBjcHUtc2guYzogRml4IGZvcm1hdHRuZy4KCSogZWxmLmM6IEZpeCBmb3JtYXR0bmcuCgkqIGVsZjMyLW1pcHMuYzogRml4IGZvcm1hdHRuZy4KCSogZWxmMzItc2guYzogRml4IGZvcm1hdHRuZy4KCSogZWxmNjQtYWxwaGEuYzogRml4IGZvcm1hdHRuZy4KCjIwMDAtMTItMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBQYXNzCglkd2FyZjJfZmluZF9saW5lX2luZm8gYXMgbGFzdCBwYXJhbWV0ZXIgdG8gaW52b2NhdGlvbiBvZgoJX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluZF9uZWFyZXN0X2xpbmUpOiBQYXNzCglkd2FyZjJfZmluZF9saW5lX2luZm8gYXMgbGFzdCBwYXJhbWV0ZXIgdG8gaW52b2NhdGlvbiBvZgoJX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUuCgoyMDAwLTEyLTA4ICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogTW92ZSBkd2FyZjIubG8gZnJvbSBoZXJlLi4uCgkoQkZEX0xJQlMpOiAuLi50byBoZXJlLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IE1vdmUgZHdhcmYyLmMgZnJvbSBoZXJlLi4uCgkoQkZEX0xJQlNfQ0ZJTEVTKTogLi4udG8gaGVyZS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIGR3YXJmLmxvIGZyb20gdGhlIGVsZiBzaGVsbCB2YXJpYWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBsaWJjb2ZmLWluLmggKGNvZmZfdGRhdGEpOiBBZGQgcG9pbnRlciBkd2FyZjJfZmluZF9saW5lX2luZm8uCgkqIGxpYmNvZmYuaDogUmVnZW5lcmF0ZS4KCSogY29mZmdlbi5jIChjb2ZmX2ZpbmRfbmVhcmVzdF9saW5lKTogQ2FsbAoJX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUuCgkqIGR3YXJmMi5jIChfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IEFkZCBwYXJhbWV0ZXIuIFVwZGF0ZQoJYWNjb3JkaW5nbHkuCgkocmVhZF9hYmJyZXZzKTogTGlrZXdpc2UKCShkZWNvZGVfbGluZV9pbmZvKTogTGlrZXdpc2UuCgkocGFyc2VfY29tcF91bml0KTogTGlrZXdpc2UuCgkoY29tcF91bml0X2ZpbmRfbmVhcmVzdF9saW5lKTogTGlrZXdpc2UuCgkqIGxpYmJmZC1pbi5oIChfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBlbGYuYyAoX2JmZF9lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBVcGRhdGUgY2FsbC4KCSogZWxmLWJmZC5oIChlbGZfb2JqX3RkYXRhKTogQ2hhbmdlIGR3YXJmMl9maW5kX2xpbmVfaW5mbyB0byB0eXBlIFBUUi4KCSogZHdhcmYyLmMgKGNvbmNhdF9maWxlbmFtZSk6IFVzZSBJU19BQlNPTFVURV9QQVRILgoJKiBjb2ZmY29kZS5oIChTVFlQX1hDT0ZGX0RFQlVHLCBTVFlQX0RFQlVHX0lORk8pOiBOZXcgbWFjcm9zLgoJKHNlY190b19zdHlwX2ZsYWdzKTogVXNlIHRoZW0uIEhhbmRsZSBEV0FSRjIgc2VjdGlvbnMuCgkoc3R5cF90b19zZWNfZmxhZ3MpOiBIYW5kbGUgRFdBUkYyIHNlY3Rpb25zLgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmRfbmVhcmVzdF9saW5lKTogQWRkIHBhcmFtZXRlciB0byBjYWxsCgl0byBfYmZkX2ZpbmRfbmVhcmVzdF9saW5lLgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBBZGQgcGFyYW1ldGVyIHRvCgljYWxsIHRvIF9iZmRfZmluZF9uZWFyZXN0X2xpbmUuCgoyMDAwLTEyLTA4ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmZnZW4uYzogRml4IGZvcm1hdHRpbmcuCgkqIGVsZi1tMTAzMDAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWkzODYuYzogTGlrZXdpc2UuCgkqIGVsZjMyLWk5NjAuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jOiBMaWtld2lzZS4KCSogZWxmMzItdjg1MC5jOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYzogTGlrZXdpc2UuCgkqIGVsZjY0LWhwcGEuYzogTGlrZXdpc2UuCgkqIGVsZjY0LW1pcHMuYzogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYzMi1wcGMuYzogRml4IGZvcm1hdHRpbmcuCgkqIGVsZjY0LXg4Ni02NC5jOiBMaWtld2lzZS4KCjIwMDAtMTItMDYgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCUZyb20gIFJhbGYgQmFlY2hsZSAgPHJhbGZAZ251Lm9yZz4KCgkqIGVsZjMyLW1pcHMuYyAoZWxmMzJfbWlwc19tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQWx3YXlzIHBlcm1pdAoJQkZEcyBjb250YWluaW5nIG5vIHNlY3Rpb25zIG9yIGVtcHR5IC50ZXh0LCAuZGF0YSBvciAuYnNzIHNlY3Rpb25zCgl0byBiZSBtZXJnZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZmxhZ3MuCgoyMDAwLTEyLTA2ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGVsZjMyLW0zMnIuYzogRml4IGZvcm1hdHRpbmcuCgkqIGVsZjMyLW02OGhjMTEuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGhjMTIuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wai5jOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYzMi1mcjMwLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBlbGYzMi1ocHBhLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pODYwLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1pOTYwLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBlbGYzMi1hcm0uaDogRml4IGZvcm1hdHRpbmcuCgkqIGVsZjMyLWF2ci5jOiBMaWtld2lzZS4KCSogZWxmMzItY3Jpcy5jOiBMaWtld2lzZS4KCSogZWxmMzItZDEwdi5jOiBMaWtld2lzZS4KCSogZWxmMzItZDMwdi5jOiBMaWtld2lzZS4KCSogZWxmLWhwcGEuaDogTGlrZXdpc2UuCgkqIGVsZi1tMTAyMDAuYzogTGlrZXdpc2UuCgkqIGVsZi1tMTAzMDAuYzogTGlrZXdpc2UuCgoyMDAwLTEyLTAxICBDaHJpcyBEZW1ldHJpb3UgIDxjZ2RAc2lieXRlLmNvbT4KCgkqIGFvdXR4LmggKE5BTUUoYW91dCxtYWNoaW5lX3R5cGUpKTogQWRkIGJmZF9tYWNoX21pcHMzMiBhbmQKCWJmZF9tYWNoX21pcHMzMl80ay4gIFVwZGF0ZSBGSVhNRSBjb21tZW50LgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9taXBzMzIpOiBOZXcgY29uc3RhbnQuCgkoYmZkX21hY2hfbWlwczRLLCBiZmRfbWFjaF9taXBzMzJfNGspIFJlbmFtZSB0aGUgZm9ybWVyIHRvCgl0aGUgbGF0dGVyLCByZW51bWJlciBpdC4KCSogYmZkLWluMi5oIChiZmRfbWFjaF9taXBzMzIpOiBOZXcgY29uc3RhbnQuCgkoYmZkX21hY2hfbWlwczRLLCBiZmRfbWFjaF9taXBzMzJfNGspIFJlbmFtZSB0aGUgZm9ybWVyIHRvCgl0aGUgbGF0dGVyLCByZW51bWJlciBpdC4KCSogY3B1LW1pcHMuYyAoSV9taXBzMzIpOiBOZXcgY29uc3RhbnQuCgkoSV9taXBzNEssIElfbWlwczMyXzRrKTogUmVuYW1lIHRoZSBmb3JtZXIgdG8gdGhlIGxhdHRlci4KCShhcmNoX2luZm9fc3RydWN0KTogQWRkIGJmZF9tYWNoX21pcHMzMiBlbnRyeSwgcmVwbGFjZQoJYmZkX21hY2hfbWlwczRLIGVudHJ5IHdpdGggYmZkX21hY2hfbWlwczMyXzRrIGVudHJ5LgoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzX2lzYSk6IEFkZCBFX01JUFNfQVJDSF8zMiBjYXNlLgoJKGVsZl9taXBzX21hY2gpOiBMaWtld2lzZS4gIEFsc28sIHJlcGxhY2UgRV9NSVBTX01BQ0hfTUlQUzMyCgl3aXRoIEVfTUlQU19NQUNIX01JUFMzMl80Sy4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBSZXBsYWNlCgliZmRfbWFjaF9taXBzNEsgd2l0aCBiZmRfbWFjaF9taXBzMzJfNGsgY2FzZSwgYWRkCgliZmRfbWFjaF9taXBzMzIgY2FzZS4KCShfYmZkX21pcHNfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBHZW5lcmFsaXplIElTQSBtaXhpbmcKCWNvbXBhcmlzb24gd2l0aCBzdXBwb3J0IGZvciBNSVBTMzIuCgkoX2JmZF9taXBzX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogUHJpbnQgSVNBIG5hbWUgZm9yCglNSVBTMzIuCgoJKiBhb3V0eC5oIChOQU1FKGFvdXQsbWFjaGluZV90eXBlKSk6IEFkZCBjYXNlcyBmb3IKCWJmZF9tYWNoX21pcHM1IGFuZCBiZmRfbWFjaF9taXBzNjQuCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX21pcHM1LCBiZmRfbWFjaF9taXBzNjQpOiBOZXcgY29uc3RhbnRzLgoJKiBiZmQtaW4yLmggKGJmZF9tYWNoX21pcHM1LCBiZmRfbWFjaF9taXBzNjQpOiBMaWtld2lzZS4KCSogY3B1X21pcHMuYyAoSV9taXBzNSwgSV9taXBzNjQpOiBOZXcgZGVmaW5pdGlvbnMuCgkoYXJjaF9pbmZvX3N0cnVjdCk6IEFkZCBlbnRyaWVzIGZvciBiZmRfbWFjaF9taXBzNSBhbmQKCWJmZF9tYWNoX21pcHM2NC4KCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19pc2EsIGVsZl9taXBzX21hY2gsCglfYmZkX21pcHNfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBBZGQgY2FzZXMgZm9yCglFX01JUFNfQVJDSF81IGFuZCBFX01JUFNfQVJDSF82NC4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBBZGQgY2FzZXMgZm9yCgliZmRfbWFjaF9taXBzNSBhbmQgYmZkX21hY2hfbWlwczY0LgoKCSogYmZkL2FvdXR4LmggKE5BTUUoYW91dCxtYWNoaW5lX3R5cGUpKTogQWRkIGEKCWJmZF9tYWNoX21pcHNfc2IxIGNhc2UuCgkqIGJmZC9hcmNodXJlcy5jIChiZmRfbWFjaF9taXBzX3NiMSk6IE5ldyBjb25zdGFudC4KCSogYmZkL2JmZC1pbjIuaCAoYmZkX21hY2hfbWlwc19zYjEpOiBOZXcgY29uc3RhbnQuCgkqIGJmZC9jcHUtbWlwcy5jIChJX3NiMSk6IE5ldyBjb25zdGFudC4KCShhcmNoX2luZm9fc3RydWN0KTogQWRkIGVudHJ5IGZvciBiZmRfbWFjaF9taXBzX3NiMS4KCSogYmZkL2VsZjMyLW1pcHMuYyAoZWxmX21pcHNfbWFjaCk6IEFkZCBjYXNlIGZvcgoJRV9NSVBTX01BQ0hfU0IxLgoJKF9iZmRfbWlwc19lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IEFkZCBjYXNlIGZvcgoJYmZkX21hY2hfbWlwc19zYjEuCgoyMDAwLTEyLTAxICBKb2VsIFNoZXJyaWxsIDxqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlnLmJmZCAoYXJtLSotcnRlbXMqLCBhMjlrLSpydGVtcyopOiBOZXcgdGFyZ2V0cy4KCShzcGFyYyotKi1ydGVtc2VsZiosIHNwYXJjKi0qLXJ0ZW1zYW91dCopOiBOZXcgdGFyZ2V0cy4KCShzcGFyYyotKi1ydGVtcyopOiBTd2l0Y2hlZCBmcm9tIGEub3V0IHRvIEVMRi4KCjIwMDAtMTEtMzAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIE1ha2VmaWxlLmFtIChCRkQ2NF9CQUNLRU5EUyk6IEFkZCBlbGY2NC14ODYtNjQubG8KCUJGRDY0X0JBQ0tFTkRTX0NGSUxFUyk6IEFkZCBlbGY2NC14ODYtNjQuYwoJKGVsZjY0LXg4Ni02NC5sbyk6IEFkZCBkZXBlbmRlbmNpZXMuCgkqIGFyY2h1cmVzLmMgKERFU0NSSVBUSU9OKTogQWRkIGJmZF9tYWNoX3g4Nl82NCwKCWJmZF9tYWNoX3g4Nl82NF9pbnRlbF9zeW50YXguCgkqIGVsZi5jIChwcmVwX2hlYWRlcnMpOiBVc2UgRU1feDg2XzY0IGZvciA2NGJpdCBvdXRwdXQuCgkqIGNvbmZpZy5iZmQgKHg4Nl82NCk6IEFkZC4KCSogY29uZmlndXJlLmluOiBBZGQgc3VwcG9ydCBmb3IgYmZkX2VsZjY0X3g4Nl82NF92ZWMuCgkqIGNwdS1pMzg2LmMgKGJmZF94ODZfNjRfYXJjaF9pbnRlbF9zeW50YXgsIGJmZF94ODZfNjRfYXJjaCk6IEFkZC4KCShiZmRfaTM4Nl9hcmNoLCBpODA4Nl9hcik6IExpbmsgaW4uCgkqIGVsZjY0LXg4Ni02NC5jOiBOZXcgZmlsZS4KCSogcmVsb2MuYyAoRU5VTURPQyk6IEFkZCBCRkRfUkVMT0NfWDg2XzY0Ki4KCSogdGFyZ2V0cy5jIChiZmRfZWxmNjRfeDg2XzY0X3ZlYyk6IEFkZC4KCShiZmRfdGFyZ2V0X3ZlY3QpOiBBZGQgYmZkX2VsZjY0X3g4Nl82NF92ZWMuCgoyMDAwLTExLTMwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHhjb2ZmbGluay5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTEtMjggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYW91dHguaDogRml4IGZvcm1hdHRpbmcuCgkqIGJmZC1pbi5oOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBMaWtld2lzZS4KCSogY2FjaGUuYzogTGlrZXdpc2UuCgkqIGNpc2NvLWNvcmUuYzogTGlrZXdpc2UuCgkqIGNvZmY2NC1yczYwMDAuYzogTGlrZXdpc2UuCgkqIGNvZmZjb2RlLmg6IExpa2V3aXNlLgoJKiBjb2Zmc3dhcC5oOiBMaWtld2lzZS4KCSogY29yZWZpbGUuYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYzogTGlrZXdpc2UuCgoyMDAwLTExLTI3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFvdXQtYWRvYmUuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvZmY2NC1yczYwMDAuYzogTGlrZXdpc2UuCgkqIGNvZmZnZW4uYzogTGlrZXdpc2UuCgkqIGNvZmZsaW5rLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0yNyAgUGhpbGlwIEJsdW5kZWxsICA8cGJAZnV0dXJldHYuY29tPgoKCSogbGliY29mZi1pbi5oIChjb2ZmX3RkYXRhKTogQWRkIGBzdHJpbmdzX3dyaXR0ZW4nIGZsYWcuCgkob2JqX2NvZmZfc3RyaW5nc193cml0dGVuKTogTmV3IGFjY2Vzc29yIG1hY3JvIGZvciBhYm92ZS4KCSogbGliY29mZi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmbGluay5jIChfYmZkX2NvZmZfZmluYWxfbGluayk6IFNheSB0aGF0IHdlIHdyb3RlIHRoZQoJc3RyaW5ncy4KCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBObyBuZWVkIHRvIHdyaXRlIG91dAoJdGhlIHN0cmluZyB0YWJsZSBpZiBpdCdzIGFscmVhZHkgYmVlbiBkb25lLgoKMjAwMC0xMS0yMiAgUGhpbGlwIEJsdW5kZWxsICA8cGJAZnV0dXJldHYuY29tPgoKCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2dlbmVyaWNfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IG9iamVjdCB0bwoJd2VhayB1bmRlZmluZWQgc3ltYm9scy4KCjIwMDAtMTEtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9hcm1fNVRFKTogRGVmaW5lLgoJKGJmZF9tYWNoX2FybStYU2NhbGUpOiBEZWZpbmUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3JlbG9jX3R5cGVfbG9va3VwKTogQWNjZXB0CglCRkRfUkVMT0NfQVJNX1BDUkVMX0JMWC4KCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2ZsYWdzKTogU2V0IGZsYWdzIGZvciA1dCwgNXRlIGFuZAoJWFNjYWxlIG1hY2hpbmUgbnVtYmVycy4KCgkqIGNvbmZpZy5iZmQgKHhzY2FsZS1lbGYpOiBBZGQgdGFyZ2V0LgoJKHhzY2FsZS1jb2ZmKTogQWRkIHRhcmdldC4KCgkqIGNwdS1hcm0uYzogQWRkIHhzY2FsZSBtYWNoaW5lIG5hbWUuCglBZGQgdjV0LCB2NXRlIGFuZCBYU2NhbGUgbWFjaGluZSBudW1iZXJzLgoKMjAwMC0xMS0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhaXgzODYtY29yZS5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMTEtMjIgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGNvZmYtaWE2NC5jIChob3d0b190YWJsZSk6IFVzZSBFTVBUWV9IT1dUTy4KCShpbl9yZWxvY19wKTogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIHBhcmFtZXRlcnMuCgkqIGNwdS1pYTY0LW9wYy5jIChpbnNfcnN2ZCwgZXh0X3JzdmQsIGluc19jb25zdCwgZXh0X2NvbnN0KTogTGlrZXdpc2UuCgkoaW5zX2ltbXNfc2NhbGVkKTogSW5pdGlhbGl6ZSBzaWduX2JpdCBhdCBmdW5jdGlvbiBlbnRyeS4KCShlbGY2NF9pYTY0X29wZXJhbmRzKTogQWRkIG1pc3NpbmcgaW5pdGlhbGl6ZXJzLgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfcmVsb2MsIGVsZk5OX2lhNjRfcmVsb2NfdHlwZV9sb29rdXAsCgllbGZOTl9pYTY0X2luZm9fdG9faG93dG8sIGVsZk5OX2lhNjRfZmFrZV9zZWN0aW9ucywKCWVsZk5OX2lhNjRfYWRkX3N5bWJvbF9ob29rLCBlbGZOTl9pYTY0X2lzX2xvY2FsX2xhYmVsX25hbWUsCgllbGZOTl9pYTY0X2xvY2FsX2hhc2hfdGFibGVfaW5pdCwgZ2V0X2ZwdHIsIGdldF9wbHRvZmYsCgllbGZOTl9pYTY0X2FkanVzdF9keW5hbWljX3N5bWJvbCk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIGZvciB1bnVzZWQKCXBhcmFtZXRlcnMuCgkoZWxmTk5faWE2NF9pbmZvX3RvX2hvd3RvKTogSW5pdGlhbGl6ZSBmcmVlX3JlbG9jcywgZnJlZV9jb250ZW50cywKCWFuZCBmcmVlX2V4dHN5bXMgYXQgZnVuY3Rpb24gZW50cnkuCgkoZWxmTk5fYWRkX3N5bWJvbF9ob29rKTogQWRkIHVuc2lnbmVkIGNhc3QgdG8gYmZkX2dldF9ncF9zaXplIHJlc3VsdC4KCShlbGZOTl9pYTY0X2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogRGVsZXRlIHVudXNlZCBsb2NhbCBoLgoJKGdldF9nb3QpOiBEZWxldGUgdW51c2VkIGxvY2FsIHNyZWwuCgkoZWxmTk5faWE2NF9jaGVja19yZWxvY3MpOiBJbml0aWFsaXplIGR5bnJlbF90eXBlIHdoZW4gZGVjbGFyZWQuCgkoZWxmTk5faWE2NF9yZWxvY2F0ZV9zZWN0aW9uKTogRGVsZXRlIHVudXNlZCBsb2NhbCBkeW5pbmR4LgoKMjAwMC0xMS0yMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWEyOWsuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvZmYtaDg1MDAuYzogTGlrZXdpc2UuCgkqIGNvZmYtaTk2MC5jOiBMaWtld2lzZS4KCSogY29mZi1wcGMuYzogTGlrZXdpc2UuCgkqIGNvZmYtcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXN0Z28zMi5jOiBMaWtld2lzZS4KCSogY29mZi10aWM1NHguYzogTGlrZXdpc2UuCgkqIGNvZmYtdzY1LmM6IExpa2V3aXNlLgoJKiBjcHUtaDg1MDAuYzogTGlrZXdpc2UuCgkqIGNwdS1ocHBhLmM6IExpa2V3aXNlLgoJKiBjcHUtbnMzMmsuYzogTGlrZXdpc2UuCgkqIGVjb2ZmLmM6IExpa2V3aXNlLgoJKiBlY29mZmxpbmsuYzogTGlrZXdpc2UuCgoyMDAwLTExLTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jX2xvb3ApOiBGaXggY29tcGlsZSB0aW1lIHdhcm5pbmcsIGFuZAoJcmVtb3ZlIHBvc3NpYmlsaXR5IG9mIGluZmluaXRlIGxvb3AuCgoyMDAwLTExLTIwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFpeDM4Ni1jb3JlLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBhb3V0LWFkb2JlLmM6IExpa2V3aXNlLgoJKiBhb3V0LWFybS5jOiBMaWtld2lzZS4KCSogYW91dC1lbmNhcC5jOiBMaWtld2lzZS4KCSogYW91dC1uczMyay5jOiBMaWtld2lzZS4KCSogYW91dC10YXJnZXQuaDogTGlrZXdpc2UuCgkqIGFvdXQtdGljMzAuYzogTGlrZXdpc2UuCgkqIGFvdXRmMS5oOiBMaWtld2lzZS4KCSogYW91dHguaDogTGlrZXdpc2UuCgkqIGFyY2hpdmUuYzogTGlrZXdpc2UuCgkqIGJmZC1pbi5oOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBMaWtld2lzZS4KCSogYmZkLmM6IExpa2V3aXNlLgoJKiBib3V0LmM6IExpa2V3aXNlLgoKMjAwMC0xMS0xNyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmeHgtaWE2NC5jIChlbGZOTl9pYTY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IERvbid0IGNyZWF0ZQoJcGx0b2ZmIGVudHJpZXMgZm9yIERUX0lOSVQgYW5kIERUX0ZJTkkuCgkoZWxmTk5faWE2NF9maW5hbF9saW5rKTogRG9uJ3Qgc2V0IERUX0lOSVQvRklOSSBlbnRyaWVzLgoJKGVsZk5OX2lhNjRfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBmaWxsIGluIERUX0lOSVQvRklOSQoJZW50cmllcy4KCjIwMDAtMTEtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBlbGZ4eC1pYTY0LmMgKGVsZk5OX2lhNjRfY2hlY2tfcmVsb2NzKTogSGFuZGxlIElQTFQgcmVsb2NzLgoJKGFsbG9jYXRlX2R5bnJlbF9lbnRyaWVzKTogTGlrZXdpc2UuCgkoZWxmTk5faWE2NF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuICBTZXQgUkVMIGFkZGVuZHMgY29ycmVjdGx5LgoJKHNldF9wbHRvZmZfZW50cnkpOiBMaWtld2lzZS4KCShpYTY0X2hvd3RvX3RhYmxlKTogUmVtb3ZlIFJfSUE2NF9TRUdCQVNFLCBhbmQgUl9JQTY0X0VQTFRbTUxdU0IKCShlbGZOTl9pYTY0X3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkoZWxmTk5faWE2NF9pbnN0YWxsX3ZhbHVlKTogTGlrZXdpc2UuCgkoZWxmTk5faWE2NF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19JQTY0X1NFR0JBU0UpOiBSZW1vdmUuCgkoQkZEX1JFTE9DX0lBNjRfRVBMVE1TQiwgQkZEX1JFTE9DX0lBNjRfRVBMVExTQik6IFJlbW92ZS4KCjIwMDAtMTEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY3B1LWEyOWsuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNwdS1hbHBoYS5jOiBMaWtld2lzZS4KCSogY3B1LWFybS5jOiBMaWtld2lzZS4KCSogY3B1LWF2ci5jOiBMaWtld2lzZS4KCSogY3B1LWQxMHYuYzogTGlrZXdpc2UuCgkqIGNwdS1oODUwMC5jOiBMaWtld2lzZS4KCSogY3B1LWhwcGEuYzogTGlrZXdpc2UuCgkqIGNwdS1pMzcwLmM6IExpa2V3aXNlLgoJKiBjcHUtaTM4Ni5jOiBMaWtld2lzZS4KCSogY3B1LWk5NjAuYzogTGlrZXdpc2UuCgkqIGNwdS1pYTY0LW9wYy5jOiBMaWtld2lzZS4KCSogY3B1LWlhNjQuYzogTGlrZXdpc2UuCgkqIGNwdS1tMzJyLmM6IExpa2V3aXNlLgoJKiBjcHUtbTY4aGMxMS5jOiBMaWtld2lzZS4KCSogY3B1LW02OGhjMTIuYzogTGlrZXdpc2UuCgkqIGNwdS1tNjhrLmM6IExpa2V3aXNlLgoJKiBjcHUtbTg4ay5jOiBMaWtld2lzZS4KCSogY3B1LW1pcHMuYzogTGlrZXdpc2UuCgkqIGNwdS1uczMyay5jOiBMaWtld2lzZS4KCSogY3B1LXBqLmM6IExpa2V3aXNlLgoJKiBjcHUtcG93ZXJwYy5jOiBMaWtld2lzZS4KCSogY3B1LXNoLmM6IExpa2V3aXNlLgoJKiBjcHUtc3BhcmMuYzogTGlrZXdpc2UuCgkqIGNwdS10aWM1NHguYzogTGlrZXdpc2UuCgkqIGNwdS12ODUwLmM6IExpa2V3aXNlLgoJKiBjcHUtdmF4LmM6IExpa2V3aXNlLgoJKiBjcHUtdzY1LmM6IExpa2V3aXNlLgoJKiBjcHUtd2UzMmsuYzogTGlrZXdpc2UuCgkqIGNwdS16OGsuYzogTGlrZXdpc2UuCgkqIGR3YXJmMS5jOiBMaWtld2lzZS4KCSogZHdhcmYyLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWFybS5jOiBGaXggZm9ybWF0dGluZy4KCSogY29mZi1wcGMuYzogTGlrZXdpc2UuCgkqIGNvZmYtcnM2MDAwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXNoLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXNwYXJjLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXRpYzMwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLXRpYzU0eC5jOiBMaWtld2lzZS4KCSogY29mZi10aWM4MC5jOiBMaWtld2lzZS4KCSogY29mZi13NjUuYzogTGlrZXdpc2UuCgkqIGNvZmYtd2UzMmsuYzogTGlrZXdpc2UuCgkqIGNvZmYtejhrLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX2NoZWNrX3JlbG9jcyk6IENyZWF0ZSB0aGUgcmVsb2MKCXNlY3Rpb24gd2l0aCB0aGUgc2FtZSBBTExPQ3xMT0FEIGZsYWdzIGFzIHRoZSBzb3VyY2Ugc2VjdGlvbi4KCjIwMDAtMTEtMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsYXhfb3B0X2NhbGwpOiBPbmx5IGNoZWNrIGJpdHMgdXNlZAoJYnkgU1RPX0FMUEhBIGNvbnN0YW50cy4KCjIwMDAtMTEtMTQgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1wbWFjLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLXBwYy5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMTMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQWxzbyBhZGQgaW5kaXJlY3QKCXN5bWJvbHMgZm9yIGNvbW1vbiBzeW1ib2xzIHdpdGggdGhlIGRlZmF1bHQgdmVyc2lvbi4KCjIwMDAtMTEtMDkgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIHNlY3Rpb24uYyAoU1REX1NFQ1RJT04pOiBTZXQgZ2NfbWFyayBmbGFnLgoKMjAwMC0xMS0xMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWk5NjAuYzogTGlrZXdpc2UuCgkqIGNvZmYtbTY4ay5jOiBMaWtld2lzZS4KCSogY29mZi1tODhrLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW1jb3JlLmM6IExpa2V3aXNlLgoJKiBjb2ZmLW1pcHMuYzogTGlrZXdpc2UuCgoyMDAwLTExLTExICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogSWdub3JlIFJfU0hfTk9ORSByZWxvY3MuCgoyMDAwLTExLTEwICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGNvZmYtaDgzMDAuYzogRml4IGZvcm1hdHRpbmcuCgkqIGNvZmYtaDg1MDAuYzogTGlrZXdpc2UuCgkqIGNvZmYtaTM4Ni5jOiBMaWtld2lzZS4KCSogY29mZi1pODYwLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWk5NjAuYzogTGlrZXdpc2UuCgkqIGNvZmYtaWE2NC5jOiBMaWtld2lzZS4KCjIwMDAtMTEtMDkgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYXJjaGl2ZS5jOiBGaXggZm9ybWF0dGluZy4KCSogYXJjaHVyZXMuYzogTGlrZXdpc2UuCgoyMDAwLTExLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZWxmeHgtaWE2NC5jIChlbGY2NF9pYTY0X2ZpbmFsX2xpbmspOiBOZXcgbG9jYWwgdW53aW5kX291dHB1dF9zZWMuCglTZXQgaXQgYmVmb3JlIGJmZF9lbGY2NF9iZmRfZmluYWxfbGluayBjYWxsLiAgVXNlIGl0IGFmdGVyIHRoZSBjYWxsLgoJKiBzZWN0aW9uLmMgKGJmZF9zZXRfc2VjdGlvbl9jb250ZW50cyk6IENhbGwgbWVtY3B5IGlmCglzZWN0aW9uLT5jb250ZW50cyBzZXQgYW5kIGxvY2F0aW9uIG5vdCBlcXVhbCB0byBjb250ZW50cyBwbHVzIG9mZnNldC4KCjIwMDAtMTEtMDggIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYmZkLWluLmg6IEZpeCBmb3JtYXR0aW5nLgoJKiBiZmQtaW4yLmg6IExpa2V3aXNlLgoJKiBiZmQuYzogTGlrZXdpc2UuCgkqIGJpbmFyeS5jOiBMaWtld2lzZS4KCSogYm91dC5jOiBMaWtld2lzZS4KCSogY29mZi1hMjlrLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWFscGhhLmM6IExpa2V3aXNlLgoJKiBjb2ZmLWFwb2xsby5jOiBMaWtld2lzZS4KCSogY29mZi1hdXguYzogTGlrZXdpc2UuCgoyMDAwLTExLTA3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGFpeDM4Ni1jb3JlLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBhb3V0ZjEuaDogTGlrZXdpc2UuCgkqIGFvdXR4Lmg6IExpa2V3aXNlLgoJKiBhcmNodXJlcy5jOiBMaWtld2lzZS4KCSogYXJtbmV0YnNkLmM6IExpa2V3aXNlLgoKMjAwMC0xMS0wNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvZmYtaDgzMDAuYyAoc3BlY2lhbCk6IEFkanVzdCByZWxvYyBhZGRyZXNzLgoKMjAwMC0xMS0wNiAgU3RldmUgRWxsY2V5IDxzamVAY3VwLmhwLmNvbT4KCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX2lhNjRfZWxmNjQsIGJmZF9tYWNoX2lhNjRfZWxmMzIpOiBBZGQgZGVmaW5lcwoJdG8gZGlmZmVyZW50aWF0ZSBlbGYzMiBhbmQgZWxmNjQgb24gaWE2NC4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuYmZkOiBBZGQgdGFyZ2V0IGZvciAiaWE2NCotKi1ocHV4KiIuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGJmZF9lbGYzMl9pYTY0X2JpZ192ZWMgdG8gc2VsdmVjcyBzd2l0Y2guCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY3B1LWlhNjQuYyAoYmZkX2lhNjRfZWxmMzJfYXJjaCk6IEFkZCBlbGYzMiBhcmNoIGluZm8gc3RydWN0dXJlLgoJKiB0YXJnZXRzLmM6IEFkZCBiZmRfdGFyZ2V0IGJmZF9lbGYzMl9pYTY0X2JpZ192ZWMuCgoJKiBNYWtlZmlsZS5hbTogTWFrZSBlbGYzMi1pYTY0LmMgYW5kIGVsZjY0LWlhNjQuYyBkZXJpdmVkIG9iamVjdHMKCWZyb20gZWxmeHgtaWE2NC5jLiAgQWRkIGRlcGVuZW5jeSBydWxlcyBmb3IgbWFraW5nIGVsZjMyLWlhNjQubG8uCgkqIE1ha2VmaWxlLmluOiBSZWduZXJhdGUuCgkqIGVsZjY0LWlhNjQuYzogRGVsZXRlZC4KCSogZWxmeHgtaWE2NC5jOiBOZXcgZmlsZSwgcGFyYW1hdGVyaXplZCB2ZXJzaW9uIG9mIGVsZjY0LWlhNjQuYy4KCjIwMDAtMTEtMDYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogYW91dC1hZG9iZS5jOiBGaXggZm9ybWF0dGluZy4KCSogYW91dC1hcm0uYzogTGlrZXdpc2UuCgkqIGFvdXQtY3Jpcy5jOiBMaWtld2lzZS4KCSogYW91dC1lbmNhcC5jOiBMaWtld2lzZS4KCSogYW91dC1uczMyay5jOiBMaWtld2lzZS4KCSogYW91dC10YXJnZXQuaDogTGlrZXdpc2UuCgkqIGFvdXQtdGljMzAuYzogTGlrZXdpc2UuCgoyMDAwLTExLTA1ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQWx3YXlzIHBlcm1pdAoJQkZEcyBjb250YWluaW5nIG5vIHNlY3Rpb25zIHRvIGJlIG1lcmdlZCwgcmVnYXJkbGVzcyBvZiB0aGVpciBmbGFncy4KCjIwMDAtMTEtMDQgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBTdXBwcmVzcyBlcnJvciBtZXNzYWdlCglpZiBhIHJlbG9jYXRpb24gZm9yIGFuIHVuZGVmaW5lZCBzeW1ib2wgYWxzbyByZXN1bHRzIGluIGFuCglvdmVyZmxvdy4KCjIwMDAtMTEtMDYgIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBjb25maWcuYmZkOiBBZGQgc3VwcG9ydCBmb3IgU3VuIENob3J1cy4KCjIwMDAtMTEtMDUgIERhdmlkIE8nQnJpZW4gIDxvYnJpZW5ARnJlZUJTRC5vcmc+CgoJKiBjb25maWd1cmUuaW46IFJlY29nbml6ZSBhbHBoYS0qLWZyZWVic2QqLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTExLTAyICBMdWNpYW5vIEdlbW1lIDxpc2hpdGF3YUB5YWhvby5jb20+CgoJKiBzcmVjLmMgKENIVU5LKTogUmVuYW1lIHRvIERFRkFVTFRfQ0hVTksuCgkoQ2h1bmspOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIHNldCBieSBhIHBhcmFtZXRlciBpbiBvYmpjb3B5LmMuCgkoUzNGb3JjZWQpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlIHNldCBieSBhIHBhcmFtZXRlciBpbgoJb2JqY29weS5jLgoJKHNyZWNfc2V0X3NlY3Rpb25fY29udGVudHMpOiBJZiBTM0ZvcmNlZCBpcyB0cnVlLCBhbHdheXMgZ2VuZXJhdGUKCVMzIHJlY29yZHMuCgkoc3JlY193cml0ZV9zZWN0aW9uKTogVXNlICdDaHVuaycgdG8gbGltaXQgbWF4aW11bSBsZW5ndGggb2YgUwoJcmVjb3Jkcy4KCjIwMDAtMTEtMDIgIFBlciBMdW5kYmVyZyAgPHBsdW5kaXNAY2hhb3NkZXYub3JnPgoKCSogY29uZmlnLmJmZDogQWRkIHN1cHBvcnQgZm9yIGlbMzQ1Nl04Ni1jaGFvc2Rldi1zdG9ybS1jaGFvcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogcG8vYmZkLnBvdDogUmVnZW5lcmF0ZS4KCjIwMDAtMTAtMzEgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBPbmx5IGhhbmRsZQoJRUZfU09GVF9GTE9BVCBpZiBpdCBpcyBkZWZpbmVkLgoKMjAwMC0xMC0yNyAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fY29weV9wcml2YXRlX2JmZF9kYXRhKTogRG9uJ3QgcmVmdXNlCglhdHRlbXB0cyB0byBtaXggUElDIGNvZGUgd2l0aCBub24tUElDLCBqdXN0IG1hcmsgdGhlIG91dHB1dCBhcwoJYmVpbmcgcG9zaXRpb24gZGVwZW5kZW50LgoJKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogTGlrZXdpc2UuICBQcmludCBhbiBlcnJvcgoJbWVzc2FnZSBmb3IgRUZfU09GVF9GTE9BVCBtaXNtYXRjaGVzLiAgRGlzcGxheSBkaWFnbm9zdGljcyBmb3IKCWFsbCBtaXNtYXRjaGVzLCBub3QganVzdCB0aGUgZmlyc3Qgb25lLgoKMjAwMC0xMC0yNSAgQ2hyaXMgRGVtZXRyaW91ICA8Y2dkQHNpYnl0ZS5jb20+CgoJKiBpZWVlLmMgKGllZWVfYXJjaGl2ZV9wKTogUGx1ZyBvbmUgb2YgbWFueSBwb3NzaWJsZQoJbWVtb3J5IGxlYWtzIGluIGVycm9yIGhhbmRsaW5nLgoKMjAwMC0xMC0yMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19tZXJnZV9wcml2YXRlX2JmZF9kYXRhLAoJZWxmMzJfc3BhcmNfb2JqZWN0X3AsIGVsZjMyX3NwYXJjX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOgoJU3VwcG9ydCB2OHBsdXNiLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhLAoJc3BhcmM2NF9lbGZfb2JqZWN0X3ApOiBTdXBwb3J0IHY5Yi4KCSogYXJjaHVyZXMuYzogRGVjbGFyZSB2OHBsdXNiIGFuZCB2OWIgbWFjaGluZXMuCgkqIGJmZC1pbjIuaDogRGl0dG8uCgkqIGNwdS1zcGFyYy5jOiBEaXR0by4KCjIwMDAtMTAtMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAc2hvZ2dvdGguY3lnbnVzLmNvbT4KCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBDbGVhciB0aGUgbG9jYXRpb24KCW9mIGEgR09UIHJlbG9jLgoKCSogZWxmMzItcHBjLmMgKFNZTUJPTF9SRUZFUkVOQ0VTX0xPQ0FMKTogTmV3IG1hY3JvLgoJKFNZTUJPTF9DQUxMU19MT0NBTCk6IE5ldyBtYWNyby4KCShwcGNfZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IFVzZSBTWU1CT0xfQ0FMTFNfTE9DQUwuCgkocHBjX2VsZl9jaGVja19yZWxvY3MpOiBVc2UgU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUwuCgkocHBjX2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBVc2UgU1lNQk9MX1JFRkVSRU5DRVNfTE9DQUwuCgkocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlIGZsYWcgdmFyaWFibGUgdG8gZGV0ZXJtaW5lCgl3aGV0aGVyIHRoZSByZWxvY2F0aW9uIHJlZmVycyB0byBhIGxvY2FsIHN5bWJvbC4KCVRlc3Qgd2hldGhlciBhIFBMVFJFTDI0IHJlbG9jIHdpbGwgcHJvZHVjZSBhIHJlbG9jIGJ5IGxvb2tpbmcKCXRvIHNlZSB3aGV0aGVyIGEgUExUIGVudHJ5IHdhcyBtYWRlLgoKMjAwMC0xMC0xNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BzaG9nZ290aC5jeWdudXMuY29tPgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgbWFrZSBQTFQKCWVudHJpZXMgdGhhdCBjb3VsZCBzZXJ2ZSBhcyBhIGRlZmluaXRpb24gZm9yIGEgd2VhayBzeW1ib2wuCgoyMDAwLTEwLTEzICBVbGYgQ2FybHNzb24gIDx1bGZjQGVuZ3Iuc2dpLmNvbT4KCglGcm9tICBSYWxmIEJhZWNobGUgIDxyYWxmQGdudS5vcmc+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3JlbG9jYXRpb24pOiBOZXcgYXJndW1lbnQKCWxvY2FsX3AuICBBZGQgc3ltYm9sIHZhbHVlIG9ubHkgZm9yIG5vbi1SX01JUFNfUkVMMzIgcmVsb2NhdGlvbnMKCWFnYWluc3QgbG9jYWwgc3ltYm9scy4KCShfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogVW5kbyBwYXRjaCBmcm9tIDIwMDAtMTAtMDEuCgoyMDAwLTEwLTEyICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChzdHJ1Y3Qgc2VjKTogQWRkIGtlcHRfc2VjdGlvbi4KCShzdHJ1Y3QgYmZkX2NvbWRhdF9pbmZvKTogUmVtb3ZlIHNlYywgd2UgY2FuIHVzZSBhYm92ZS4KCShTVERfU0VDVElPTik6IEFkZCBpbml0aWFsaXplci4KCShiZmRfbWFrZV9zZWN0aW9uX2FueXdheSk6IEluaXQgaGVyZSB0b28uCgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFJlbW92ZSB1bm5lY2Vzc2FyeQoJemVyb2luZyBvZiBgZmxhZ3MnLgoJKGVsZl9saW5rX2lucHV0X2JmZCk6IFNldCBhbGwgYXNlY3Rpb24tPnN5bWJvbC0+dmFsdWUncyBoZXJlLCBhbmQKCWZ1ZGdlIHZhbHVlcyBmb3IgZGlzY2FyZGVkIGxpbmstb25jZSBzZWN0aW9uIHN5bWJvbHMuCgoJKiBlbGY2NC1ocHBhLmM6IEluY2x1ZGUgYWxsb2NhLWNvbmYuaAoKMjAwMC0xMC0xMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZi5jIChzd2FwX291dF9zeW1zKTogUmV2ZXJ0IDIwMDAtMTAtMDcgY2hhbmdlcy4KCgkqIGllZWUuYyAoaWVlZV9tYWtlX2VtcHR5X3N5bWJvbCk6IE9vcHMsIGJmZF96YWxsb2MgbmVlZHMgYW5vdGhlciBhcmcuCgoyMDAwLTEwLTEwICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogaWVlZS5jIChpZWVlX21ha2VfZW1wdHlfc3ltYm9sKTogVXNlIGJmZF96YWxsb2MsIG5vdCBiZmRfem1hbGxvYy4KCjIwMDAtMTAtMTAgIFRvbSBSaXggPHRyaXhAcmVkaGF0LmNvbT4KCgkqIHNlY3Rpb24uYyAoYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkpOiBSZWxlYXNlIG5ld3NlY3QgcHRyIHdoZW4KCW5ld3NlY3QtPnN5bWJvbCBmYWlscyB0byBhbGxvYy4gIFVzZSBiZmRfcmVsZWFzZSBpbnN0ZWFkIG9mIGZyZWUuCgoyMDAwLTEwLTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tCgoJKiBlbGY2NC1pYTY0LmMgKGVsZjY0X2lhNjRfdW53aW5kX2VudHJ5X2NvbXBhcmVfYmZkKTogTmV3LgoJKGVsZjY0X2lhNjRfdW53aW5kX2VudHJ5X2NvbXBhcmUpOiBOZXcuCgkoZWxmNjRfaWE2NF9maW5hbF9saW5rKTogU29ydCB0aGUgLklBXzY0LnVud2luZCBzZWN0aW9uLgoKMjAwMC0xMC0wNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZmxpbmsuaCAoc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgY3JlYXRlIHZhcmlvdXMgdGFncyBpZgoJLmR5bnN0ciBpcyBleGNsdWRlZCBmcm9tIHRoZSBsaW5rLiAgRG9uJ3Qgc2V0IGZpcnN0IGR5bnN5bSBlbnRyeQoJaWYgZHluc3ltY291bnQgaXMgemVyby4KCShlbGZfYmZkX2ZpbmFsX2xpbmspOiBEb24ndCB0cnkgdG8gc3dhcCBvdXQgZHluYW1pYyBzeW1zIGlmCgkuZHluc3ltIGV4Y2x1ZGVkIGZyb20gdGhlIGxpbmsuICBEb24ndCB0cnkgdG8gd3JpdGUgYW55IGR5bmFtaWMKCXNlY3Rpb25zIGV4Y2x1ZGVkIGZyb20gdGhlIGxpbmsuCgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6IEhhbmRsZSBnbG9iYWwgc2VjdGlvbiBzeW1ib2xzLgoKMjAwMC0xMC0wNSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBwZWlnZW4uYyAoX2JmZF9wZWlfc3dhcF9zY25oZHJfb3V0KTogbm90ZSBleHRlbmRlZCByZWxvY3MKCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYWxpZ25tZW50X2hvb2spOiByZWFkIGV4dGVuZGVkIHJlbG9jIGNvdW50CgkoY29mZl93cml0ZV9yZWxvY3MpOiB3cml0ZSBleHRlbmRlZCByZWxvYyBjb3VudAoJKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogYWNjb3VudCBmb3IgZXh0ZW5kZWQgcmVsb2NzCgoyMDAwLTEwLTA1ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIGVsZl9iYWNrZW5kX3NlY3Rpb25fZmxhZ3MKCWZpZWxkLgoJKiBlbGYuYyAoX2JmZF9lbGZfbWFrZV9zZWN0aW9uX2Zyb21fc2hkcik6IENhbGwgdGhlCgllbGZfYmFja2VuZF9zZWN0aW9uX2ZsYWdzIGZ1bmN0aW9uLgoJKiBlbGY2NC1pYTY0LmMgKGVsZjY0X2lhNjRfc2VjdGlvbl9mcm9tX3NoZHIpOiBEZWxldGUgZmxhZyBjb252ZXJzaW9uCgljb2RlLgoJKGVsZjY0X2lhNjRfc2VjdGlvbl9mbGFncyk6IE5ldyBmdW5jdGlvbiBjb250YWluaW5nIGZsYWcgY29udmVyc2lvbgoJY29kZS4KCShlbGZfYmFja2VuZF9zZWN0aW9uX2ZsYWdzKTogRGVmaW5lIHRvIGVsZjY0X2lhNjRfc2VjdGlvbl9mbGFncy4KCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX3NlY3Rpb25fZmxhZ3MpOiBEZWZpbmUuCgkoZWxmTk5fYmVkKTogSW5pdGlhbGl6ZSBlbGZfYmFja2VuZF9zZWN0aW9uX2ZsYWdzIGZpZWxkLgoKMjAwMC0xMC0wMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBDb3JyZWN0IGNhbGwgdG8KCV9iZmRfZWxmMzJfZ2NfcmVjb3JkX3Z0YWJsZS4gIENvcnJlY3QgYSBjb21tZW50LgoKMjAwMC0xMC0wMSAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJRnJvbSAgUmFsZiBCYWVjaGxlICA8cmFsZkBnbnUub3JnPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTWFyayBnbGQKCXByb2R1Y2VzIGJpbmFyaWVzIHdpdGggZ290WzFdID0gMHg4MDAwMDAwMSB0byBkaWZmZXJlbmNpYXRlIHRoZW0KCWZvciB0aGUgZHluYW1pYyBsaW5rZXIgZnJvbSB0aGUgYnJva2VuIGJpbmFyaWVzIHByb2R1Y2VkIGJ5IG9sZAoJdmVyc2lvbnMuCgoyMDAwLTA5LTMwICBQZXRyIFNvcmZhIDxwZXRyc0BzY28uY29tPgoKCSogZWxmLmMgKGVsZmNvcmVfZ3Jva19wc3RhdHVzKTogQ2hlY2sgZm9yIHNpemUgb2YgcHhzdGF0dXNfdC4KCShlbGZjb3JlX2dyb2tfbHdwc3RhdHVzKTogQ2hlY2sgZm9yIHNpemUgb2YgbHdweHN0YXR1c190LgoJKiBjb25maWd1cmUuaW46IEFkZCBjaGVjayBmb3IgcHhzdGF0dXNfdCBhbmQgbHdweHN0YXR1c190LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTI3ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCglEZWZpbmUgdHdvIGJmZF90YXJnZXRzIGZvciBhYnNlbmNlIGFuZCBwcmVzZW5jZSBvZiBsZWFkaW5nCgl1bmRlcnNjb3JlIG9uIHN5bWJvbHMuICBNYWtlIHN1cmUgdG8gb25seSBsaW5rIHNhbWUga2luZC4KCSogZWxmMzItY3Jpcy5jIChjcmlzX2VsZl9vYmplY3RfcCwKCWNyaXNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcsIGNyaXNfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEsCgljcmlzX2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogTmV3LgoJKGVsZl9iYWNrZW5kX29iamVjdF9wLCBlbGZfYmFja2VuZF9maW5hbF93cml0ZV9wcm9jZXNzaW5nLAoJYmZkX2VsZjMyX2JmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhLAoJYmZkX2VsZjMyX2JmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogRGVmaW5lLgoJPFRhcmdldCB2ZWN0b3IgZGVmaW5pdGlvbj46IEluY2x1ZGUgZWxmMzItdGFyZ2V0LmggdHdpY2Ugd2l0aAoJZGlmZmVyZW50IG1hY3JvIHNldHRpbmdzOgoJKFRBUkdFVF9MSVRUTEVfU1lNKTogRmlyc3QgYXMgYmZkX2VsZjMyX2NyaXNfdmVjLCB0aGVuIGFzCgliZmRfZWxmMzJfdXNfY3Jpc192ZWMuCgkoVEFSR0VUX0xJVFRMRV9OQU1FKTogRmlyc3QgYXMgImVsZjMyLWNyaXMiLCB0aGVuICJlbGYzMi11cy1jcmlzIi4KCShlbGZfc3ltYm9sX2xlYWRpbmdfY2hhcik6IEZpcnN0IGFzIDAsIHRoZW4gJ18nLgoJKElOQ0xVREVEX1RBUkdFVF9GSUxFKTogRGVmaW5lIGZvciBzZWNvbmQgaW5jbHVkZSBvZiBlbGYzMi10YXJnZXQuaC4KCSogY29uZmlnLmJmZCAoY3Jpcy0qLSopOiBBZGQgYmZkX2VsZjMyX3VzX2NyaXNfdmVjIHRvIHRhcmdfc2VsdmVjcy4KCSogY29uZmlndXJlLmluIChiZmRfZWxmMzJfY3Jpc192ZWMsIGNyaXNfYW91dF92ZWMpOiBOZXcgdmVjdG9yLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIHRhcmdldHMuYzogRGVjbGFyZSBiZmRfZWxmMzJfdXNfY3Jpc192ZWMuCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTI5ICBNb21jaGlsIFZlbGlrb3YgIDx2ZWxjb0BmYWRhdGEuYmc+CgoJKiBlbGYzMi1hcm0uaCAoYXJtX2FkZF90b19yZWwpOiBDb3JyZWN0bHkgYWRqdXN0IHRoZSBhZGRlbmQgZm9yCglSX0FSTV9USE1fUEMyMiByZWxvY2F0aW9ucy4KCjIwMDAtMDktMjkgIE5JSUJFIFl1dGFrYSA8Z25paWJlQGNocm9vdC5vcmc+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IERvbid0IGJmZF9yZWxlYXNlIHJ1bnBhdGguCgoyMDAwLTA5LTI5ICBNb21jaGlsIFZlbGlrb3YgPHZlbGNvQGZhZGF0YS5iZz4KCgkqIGVsZi5jIChlbGZfZmFrZV9zZWN0aW9ucyk6IERvIG5vdCBtYXJrIHRoZSBzZWN0aW9uIFNIVF9OT0JJVFMgaWYKCWlzIGhhcyB0aGUgU0VDX0hBU19DT05URU5UUyBmbGFnIHNldC4KCjIwMDAtMDktMjggINZyamFuIEZyaWJlcmcgIDxvcmphbmZAYXhpcy5jb20+CgkgICAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBhb3V0LWNyaXMuYyAoTl9UWFRBRERSKTogRGVmaW5lLgoKMjAwMC0wOS0yOCAgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogc29tLmM6IEluY2x1ZGUgYWxsb2NhLWNvbmYuaC4KCSogTWFrZWZpbGUuYW06ICJtYWtlIGRlcC1hbSIKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTI3ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChwbHRfc3R1Yik6IE5ldy4KCShQTFRfU1RVQl9FTlRSWSk6IERlZmluZS4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZSk6IENoYW5nZSBtdWx0aV9zdWJzcGFjZSB0byBwYWNrZWQKCWJvb2xlYW4uICBBZGQgbmVlZF9wbHRfc3R1YiwgaGFzXzEyYml0X2JyYW5jaCBhbmQgaGFzXzE3Yml0X2JyYW5jaC4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBJbml0IHRvIHN1aXQuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBTZXQgaGFzXzEyYml0X2JyYW5jaCBhbmQKCWhhc18xN2JpdF9icmFuY2ggYXMgYXBwcm9wcmlhdGUuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBTZXQgbmVlZF9wbHRfc3R1YiBmb3IKCW5vbi1sb2NhbCBmdW5jdGlvbnMuCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBDb3JyZWN0IHNldHRpbmcgb2YgcmVsdGV4dC4KCUFkZCBzcGFjZSBmb3IgcGx0X3N0dWIgYXMgbmVlZGVkLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogUG9pbnQgLnBsdCBlbnRyaWVzIGZvciBnbG9iYWwKCWZ1bmN0aW9ucyBhdCBwbHRfc3R1Yi4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogV3JpdGUgcGx0X3N0dWIuCgkoZWxmMzJfaHBwYV9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IExlYXZlIC5wbHQgZXhlY3V0YWJsZS4KCgkqIGVsZjMyLWhwcGEuaCAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogQWRkIGdyb3VwX3NpemUgcGFyYW0uCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogTGlrZXdpc2UuICBVc2UgaXQgaW5zdGVhZAoJb2YgZml4ZWQgc2l6ZSwgYW5kIGlmIG5lZ2F0aXZlLCBkaXNhYmxlIGhhbmRsaW5nIG9mIGlucHV0IHNlY3Rpb25zCgliZWZvcmUgc3R1YiBzZWN0aW9uLiAgU2V0IHVwIGRlZmF1bHQgc3R1YiBncm91cCBzaXplIGRlcGVuZGluZwoJb24gZGV0ZWN0ZWQgYnJhbmNoIHJlbG9jcy4KCShocHBhX2J1aWxkX29uZV9zdHViKTogVXNlIGxyc2VsIGFuZCBycnNlbCBmb3IgaW1wb3J0IHN0dWJzIHRvCgllbnN1cmUgZGlmZmVyZW50IG9mZnNldHMgZnJvbSBzeW1fdmFsdWUgYXJlbid0IHJvdW5kZWQgdG8KCWRpZmZlcmVudCAyayBibG9ja3MuICBVc2UgbHJzZWwgYW5kIHJyc2VsIGZvciBvdGhlciBzdHVicyB0b28gZm9yCgljb25zaXN0ZW5jeSByYXRoZXIgdGhhbiBuZWNlc3NpdHkuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBIYW5kbGUgUl9QQVJJU0NfRElSMTRGLgoJKGZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2hvd3RvX3RhYmxlKTogQWRkIFJfUEFSSVNDX0RJUjE0RiByZWxvYy4KCShfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogR2VuZXJhdGUgdGhlbS4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlIHRoZW0uCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IExpa2V3aXNlLgoJKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBBZGQgbWlzc2luZyBlX2xkc2VsIGFuZCBlX3Jkc2VsIGNhc2VzLgoKMjAwMC0wOS0yNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBlbGZjb2RlLmggKGVsZl9vYmplY3RfcCk6IFByZXNlcnZlIGFuZCBjbGVhciBhYmZkIHNlY3Rpb24KCWluZm9ybWF0aW9uLiAgUmVzdG9yZSBhdCBlcnJvci4KCjIwMDAtMDktMjYgIFBhdWwgU29rb2xvdnNreSAgPFBhdWwuU29rb2xvdnNreUB0ZWNobm9sb2dpc3QuY29tPgoKCSogcGVpZ2VuLmMgKF9iZmRfcGVpX3N3YXBfYW91dGhkcl9pbik6IElmIHNvbWUgRGF0YURpcmVjdG9yeQoJaXMgZW1wdHksIG1ha2Ugc3VyZSB0aGF0IGl0cyBydmEgYWxzbyAwLiBOVCBsb2FkZXIgZGlzbGlrZXMKCWhhdmluZyBvdGhlcndpc2UuCgoyMDAwLTA5LTI2ICBTdGV2ZSBFbGxjZXkgPHNqZUBjdXAuaHAuY29tPgoKCSogc29tLmMgKHNvbV9iZmRfZGVyaXZlX21pc2Nfc3ltYm9sX2luZm8pOiBNYWtlIHdlYWsgc3ltYm9scwoJZ2xvYmFsIGJ5IGRlZmF1bHQuCgoyMDAwLTA5LTIxICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IEZpeCB3ZWFrIHN5bSBoYW5kbGluZyBpbgoJY3VycmVudGx5IHVudXNlZCBSRUxBVElWRV9EWU5BTUlDX1JFTE9DUyBjb2RlLgoJKGhwcGFfZGlzY2FyZF9jb3BpZXMpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBTaXplIGBpbnB1dF9saXN0JyBhcnJheSBjb3JyZWN0bHkuICBDb3JyZWN0Cgljb21tZW50cy4gIERvbid0IGNoZWNrIG5vbi1jb2RlIG91dHB1dCBzZWN0aW9ucyBmb3Igc3R1YiBncm91cGluZy4KCjIwMDAtMDktMjAgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBzZWN0aW9uLmMgKGJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFtZSk6IFJldHVybiBOVUxMIGlmCgliZmRfbWFsbG9jIGZhaWxzLgoKMjAwMC0wOS0xOSAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogZWxmMzItbTY4ay5jIChlbGZfY3B1MzJfcGx0MF9lbnRyeSk6IENoYW5nZSB0aGUgUExUIGVudHJ5IDAKCWluc3RydWN0aW9uIHNlcXVlbmNlIHRvIGFjdHVhbGx5IHdvcmsuCgkoZWxmX202OGtfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBDaGFuZ2UgdGhlIHBhdGNoLWluIG9mZnNldAoJYWNjb3JkaW5nbHkuCgoyMDAwLTA5LTE4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlCglfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUgdG8gYXBwbHkgdGhlIHJlbG9jYXRpb24gYWdhaW5zdCBhIHNlY3Rpb24KCXN5bWJvbCwgd2hlbiBkb2luZyByZWxvY2F0YWJsZSBsaW5rcy4KCjIwMDAtMDktMTggIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX2VudHJ5KTogUmVuYW1lIGlucHV0X3NlY3Rpb24KCXRvIGlkX3NlYy4KCShzdHViX2hhc2hfbmV3ZnVuYyk6IEhlcmUgdG9vLgoJKGhwcGFfYWRkX3N0dWIpOiBBbmQgaGVyZS4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZSk6IFJlbW92ZSBzdHViX3NlY3Rpb25fY3JlYXRlZCwKCXJlbG9jX3NlY3Rpb25fY3JlYXRlZCwgZmlyc3RfaW5pdF9zZWMgYW5kIGZpcnN0X2Zpbmlfc2VjLiAgQWRkCglzdHViX2dyb3VwLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IEluaXQgdG8gc3VpdC4KCShocHBhX2dldF9zdHViX2VudHJ5KTogQWRkIHN1cHBvcnQgZm9yIGdyb3VwaW5nIHN0dWIgc2VjdGlvbnMuCgkoaHBwYV9hZGRfc3R1Yik6IExpa2V3aXNlLiAgUmVtb3ZlIHNlY19jb3VudCBwYXJhbSBhbmQgaW5pdC9maW5pCglzZWN0aW9uIGNvZGUuICBJbmRleCBzdHViIHZhcnMgYnkgc2VjdGlvbi0+aWQuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogTGlrZXdpc2UuICBSZW1vdmUgZHVwbGljYXRlZCBmdW5jdGlvbgoJZXhpdCBwYXRocy4gIFphcCBhbGxvY2F0aW9uIG9mIGFib3ZlIHJlbW92ZWQgdmFycy4gIFJlZmluZQoJbGluay1vbmNlIHRlc3QuCgoJKiBlbGYzMi1ocHBhLmggKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IEFkZCBvdXRwdXRfYmZkIHBhcmFtLgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IExpa2V3aXNlLgoJKGhwcGFfZ2V0X3N0dWJfZW50cnkpOiBQYXNzIGluIHBvaW50ZXIgdG8gZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUKCXJhdGhlciB0aGFuIHBvaW50ZXIgdG8gYmZkX2xpbmtfaW5mby4KCShocHBhX2FkZF9zdHViKTogTGlrZXdpc2UuCgkoZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0xNyAgRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogRG9uJ3QgdHJ5IHRvIGJ1aWxkIHN0dWJzIGZvciBkaXNjYXJkZWQKCWxpbmstb25jZSBzZWN0aW9ucy4KCjIwMDAtMDktMTYgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoRUxGX01BWFBBR0VTSVpFKTogRGVmaW5lIHRvIDEyOCwgdG8gbWF0Y2gKCWxkL2VtdWxwYXJhbXMvc2hlbGYuc2guCgoyMDAwLTA5LTEwICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBlbGYzMi1tNjhrLmMgKGJmZF9tNjhrX2VsZjMyX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MpOiBOZXcgZnVuY3Rpb24uCgkqIGJmZC1pbi5oIChiZmRfbTY4a19lbGYzMl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzKTogQWRkIGRlY2xhcmF0aW9uLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTE1ICBLZW5uZXRoIEJsb2NrICA8S2VubmV0aC5CbG9ja0Bjb21wYXEuY29tPgoKCSogYmZkL2VsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbGF4X3dpdGhfbGl0dXNlKTogbGQgcGVyZm9ybXMKCUxJVFVTRSByZWxvY2F0aW9ucyBpbmNvcnJlY3RseSBpZiAtcmVsYXggaXMgc3BlY2lmaWVkIG9uIHRoZSBsZAoJY29tbWFuZCBsaW5lIGFuZCB0aGUgZGlzcGxhY2VtZW50IGZpZWxkIG9mIHRoZSBsb2FkIG9yIHN0b3JlCglpbnN0cnVjdGlvbiBpcyBub24temVyby4gKFBhdGNoIGJ5IHBhdWwud2luYWxza2lAY29tcGFxLmNvbSkKCjIwMDAtMDktMTUgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGhwcGFfYWRkX3N0dWIpOiBEb250IHNldCBmaXJzdF9pbml0X3NlYyBhbmQKCWZpcnN0X2Zpbmlfc2VjIGhlcmUuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogSW5zdGVhZCBjb3JyZWN0bHkgZmluZCB0aGUgZmlyc3QgLmluaXQKCWFuZCAuZmluaSBzZWN0aW9uIGhlcmUuCgoyMDAwLTA5LTE1ICBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoKCSogZWxmMzItaHBwYS5jIChjbG9iYmVyX21pbGxpY29kZV9zeW1ib2xzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQ2FsbCBpdC4KCjIwMDAtMDktMTQgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfbGlua19oYXNoX2VudHJ5KTogTWFrZSBwaWNfY2FsbAoJcGFja2VkLiAgQWRkIHBsYWJlbCwgcGx0X2FicyBwYWNrZWQgYm9vbGVhbnMuCgkoaHBwYV9saW5rX2hhc2hfbmV3ZnVuYyk6IEluaXQgbmV3IGZpZWxkcy4KCShQTEFCRUxfUExUX0VOVFJZX1NJWkUpOiBEZWZpbmUuCgkoaHBwYV9zdHViX25hbWUpOiBVc2Ugc2l6ZV90IGxlbiB2YXJzLgoJKGhwcGFfYWRkX3N0dWIpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2J1aWxkX3N0dWJzKTogTGlrZXdpc2UuCgkoaHBwYV9idWlsZF9vbmVfc3R1Yik6IEtpbGwgc29tZSBjb21waWxlciB3YXJuaW5ncy4KCShlbGYzMl9ocHBhX2NoZWNrX3JlbG9jcyk6IEFsd2F5cyBnZW5lcmF0ZSBhIHBsdCBlbnRyeSBmb3IgUExBQkVMcwoJaWYgZHluYW1pYyBsaW5raW5nLiAgTXVuZ2UgdGhlIGxvY2FsIHBsdCBvZmZzZXRzIGludG8KCWxvY2FsX2dvdF9yZWZjb3VudHMuICBTZXQgaC0+cGxhYmVsIGZvciBhbGwgZ2xvYmFsIFBMQUJFTHMuICBVc2UKCXNpemVfdCBsZW4gdmFycy4gIEFkZCBhc3NlcnQgZm9yIHBsYWJlbCBhZGRlbmQuCgkoZWxmMzJfaHBwYV9nY19zd2VlcF9ob29rKTogU3dlZXAgbG9jYWwgcGx0IGVudHJpZXMgdG9vLgoJKGVsZjMyX2hwcGFfaGlkZV9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wpOiBEZWZpbmUuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBEb24ndCB0aHJvdyBhd2F5IHBsdCBlbnRyaWVzCgl3aXRoIGgtPnBsYWJlbCBzZXQuICBEb24ndCBtYWtlIHBsdCBlbnRyaWVzIHRvIGhhdmUgZHluYW1pYyBzeW1zCgl3aGVuIHRoZXkgaGF2ZSBiZWVuIGZvcmNlZCBsb2NhbC4gIElmIHBsdCBlbnRyeSBpcyB1c2VkIGJ5IGEKCXBsYWJlbCwgbWFrZSBpdCBQTEFCRUxfUExUX0VOVFJZX1NJWkUuCgkoZWxmMzJfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBTZXQgcGx0X2FicyBmb3IgaW5pdCBmbnMuCglTZXQgdXAgLnBsdCBvZmZzZXRzIGZvciBsb2NhbCBzeW1zLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IEluaXRpYWxpc2UgcGx0IGVudHJpZXMgZm9yIGxvY2FsCglzeW1zLiAgTGVhdmUgd2VhayB1bmRlZmluZWQgcGxhYmVscyB6ZXJvLiAgTWFrZSBnbG9iYWwgcGxhYmVsCglyZWxvY3MgYWdhaW5zdCBmdW5jdGlvbiBzeW1ib2wsIGFuZCBsZWF2ZSB0aGUgYWRkZW5kIHplcm8uCglVc2UgKkFCUyogRElSMzIgcmVsb2NzIGluc3RlYWQgb2YgU0VHUkVMMzIgZm9yIGR5bmFtaWMgZ290IHJlbG9jcy4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFNldCB1cCBJUExUIHJlbG9jcyBmb3IKCW5vbi1keW5hbWljIHN5bXMuICBJbml0IGV4dHJhIHBsdCBmb3IgcGxhYmVscy4gIFVzZSAqQUJTKiBESVIzMgoJcmVsb2NzIGluc3RlYWQgb2YgU0VHUkVMMzIgZm9yIGR5bmFtaWMgZ290IHJlbG9jcy4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogUmVzZXJ2ZSBvbmUgbW9yZSAuZ290IGVudHJ5LgoJKGVsZl9iYWNrZW5kX2dvdF9oZWFkZXJfc2l6ZSk6IEFkanVzdC4KCShlbGYzMl9ocHBhX3NldF9ncCk6IENhbGN1bGF0ZSBhbiAiaWRlYWwiIExUUC4KCgkqIGVsZjMyLWhwcGEuYyAoTE9OR19CUkFOQ0hfVklBX1BMVCk6IERlZmluZS4KCShocHBhX3R5cGVfb2Zfc3R1Yik6IFVzZSBpdCBpbnN0ZWFkIG9mICNpZiAwCgkoaHBwYV9kaXNjYXJkX2NvcGllcyk6IFVzZSBpdCBoZXJlIHRvby4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEFuZCBoZXJlLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZSk6IFJlbW92ZSBgb2Zmc2V0JyBmaWVsZC4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBBbmQgaGVyZS4KCShocHBhX2J1aWxkX29uZV9zdHViKTogQW5kIGhlcmUuICBJbnN0ZWFkIGtlZXAgdHJhY2sgb2Ygc3R1YgoJb2Zmc2V0IHVzaW5nIF9yYXdfc2l6ZS4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2J1aWxkX3N0dWJzKTogTGlrZXdpc2UuCgkoaHBwYV9zaXplX29uZV9zdHViKTogTGlrZXdpc2UuICBSZXNpemUgcmVsb2Mgc2VjdGlvbiB0b28uCgoJKiBlbGYzMi1ocHBhLmMgKGhwcGFfYWRkX3N0dWIpOiBDb3JyZWN0IGZpcnN0X2luaXRfc2VjIGFuZAoJZmlyc3RfZmluaV9zZWMgaGFuZGxpbmcuICBEb24ndCBzZWFyY2ggZm9yIHJlbG9jIHNlY3Rpb24gb3Igc2V0CglocGxpbmstPnJlbG9jX3NlY3Rpb25fY3JlYXRlZCBoZXJlLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IEluc3RlYWQgc2VhcmNoIGZvciByZWxvYyBzZWN0aW9ucywgYW5kCglzZXQgcmVsb2Nfc2VjdGlvbl9jcmVhdGVkIGhlcmUuCgkoaHBwYV9oYW5kbGVfUElDX2NhbGxzKTogU2V0IEVMRl9MSU5LX0hBU0hfTkVFRFNfUExULgoJKGVsZjMyX2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTWFrZSBhIC5wbHQgZW50cnkgZm9yIERUX0lOSVQKCWFuZCBEVF9GSU5JLgoJKGVsZjMyX2hwcGFfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBTZXQgRFRfSU5JVCBhbmQgRFRfRklOSS4KCgkqIGVsZjMyLWhwcGEuYyAoaHBwYV9idWlsZF9vbmVfc3R1Yik6IFJlcGxhY2UgYGVsZl9oYXNoX3RhYmxlIChpbmZvKScKCXdpdGggYGhwbGluay0+cm9vdC4nLgoJKGVsZjMyX2hwcGFfY2hlY2tfcmVsb2NzKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9nY19zd2VlcF9ob29rKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShocHBhX2hhbmRsZV9QSUNfY2FsbHMpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGVsZjMyX2hwcGFfc2V0X2dwKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoJRnJvbSAgRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCSogZWxmMzItaHBwYS5jIChocHBhX3R5cGVfb2Zfc3R1Yik6IEdlbmVyYXRlIGltcG9ydCBzdHVicyBmb3IKCWRlZmluZWQgd2VhayBzeW1ib2xzIGluIHNoYXJlZCBsaW5rcy4KCShmaW5hbF9saW5rX3JlbG9jYXRlKTogQ2FsbHMgdG8gZGVmaW5lZCB3ZWFrIHN5bWJvbHMgaW4gc2hhcmVkCglvYmplY3RzIG11c3QgZ28gdmlhIGltcG9ydCBzdHVicywgYXMgdGhlIHRhcmdldCBtaWdodCBub3QgYmUga25vd24KCWF0IGxpbmsgdGltZS4KCjIwMDAtMDktMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX2hvd3RvX3RhYmxlKTogTW92ZWQgUl9TSF9HT1QzMiwgUl9TSF9QTFQzMiwKCVJfU0hfQ09QWSwgUl9TSF9HTE9CX0RBVCwgUl9TSF9KTVBfU0xPVCwgUl9TSF9SRUxBVElWRSwKCVJfU0hfR09UT0ZGLCBSX1NIX0dPVFBDKSB0byB0aGUgcmFuZ2UgZnJvbSAxNjAgdG8gMTY3LiAgUmVwbGFjZWQKCXRoZSBvcmlnaW5hbCBlbnRyaWVzIHdpdGggRU1QVFlfSE9XVE9zLCBhbmQgYWRkZWQgbmV3IG9uZXMgdG8gZmlsbAoJaW4gdGhlIGdhcC4KCShzaF9lbGZfaW5mb190b19ob3d0byk6IE1ha2Ugc3VyZSB0aGUgbmV3IGdhcCBpc24ndCB1c2VkLgoJKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA5LTEzICBBbmRlcnMgTm9ybGFuZGVyICA8YW5vcmxhbmRAYWNjLnVtdS5zZT4KCgkqIGNwdS1taXBzLmMgKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGQgbWlwczo0SwoJKiBiZmQtaW4yLmggKGJmZF9tYWNoX21pcHM0Syk6IE5ldyBkZWZpbmUuCgkqIGFyY2h1cmVzLmM6IEFkZCBiZmRfbWFjaF9taXBzNEsgdG8gY29tbWVudC4KCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBSZXR1cm4KCUVfTUlQU19BUkNIXzIgZm9yIGJmZF9tYWNoX21pcHM0Sy4KCjIwMDAtMDktMTMgIE1hcmNvIEZyYW56ZW4gPG1hcmNvZkB0aHlyb24uY29tPgoKCSogc29tLmMgKHNvbV93cml0ZV9zeW1ib2xfc3RyaW5ncyk6IERvIG5vdCB1c2VkIGZpeGVkIGJ1ZmZlcnMsCgl1c2Ugc2l6ZV90IGFzIGEgY291bnRlci4KCShzb21fd3JpdGVfc3BhY2Vfc3RyaW5ncyk6IFNpbWlsYXJseS4KCjIwMDAtMDktMTIgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwLmMgKGVsZjMyX2k4NjBfcmVsb2NhdGVfcGMyNik6IE5ldyBmdW5jdGlvbgoJYW5kIHByb3RvdHlwZS4KCShlbGYzMl9pODYwX3JlbG9jYXRlX3NlY3Rpb24pOiBJbnZva2UgbmV3IGZ1bmN0aW9uIGZyb20gaGVyZS4KCjIwMDAtMDktMTEgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIGVsZi5jIChfYmZkX2VsZl9tYWtlX3NlY3Rpb25fZnJvbV9zaGRyKTogTWFrZSBkZWJ1Z19zZWNfbmFtZXMKCXN0YXRpYy4KCjIwMDAtMDktMTAgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIGNvZmYtbTY4ay5jIChiZmRfbTY4a19jb2ZmX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MpOiBFbWl0IDggTlVMcyBmb3IKCXRhcmdldCBzZWN0aW9uIG5hbWUgaW5zdGVhZCBvZiBkdW1waW5nIGNvcmUgd2hlbiB0aGUgdGFyZ2V0IHN5bWJvbCBpcwoJdW5kZWZpbmVkLgoKMjAwMC0wOS0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiByaXNjaXguYzogUmVtb3ZlIERFRlVOLgoKMjAwMC0wOS0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IERvIG5vdAoJaW5pdGlhbGlzZSBmbGFncyBpbiBvdXRwdXQgYmZkIGlmIHRoZSBpbnB1dCBiZmQgaXMgdGhlIGRlZmF1bHQKCWFyY2hpdGVjdHVyZSB3aXRoIHRoZSBkZWZhdWx0IGZsYWdzLgoKMjAwMC0wOS0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBhcmNoaXZlLmM6IEZpeCBmb3JtYXR0aW5nLgoJKiBjb2ZmLWFybS5jOiBMaWtld2lzZS4KCSogZG9jL2NoZXcuYzogTGlrZXdpc2UuCgoyMDAwLTA5LTA4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChiZmRfZ2V0X3VuaXF1ZV9zZWN0aW9uX25hbWUpOiBQdXQgYSBkb3QgYmVmb3JlIHRoZQoJbnVtZXJpYyBzdWZmaXguCgoyMDAwLTA5LTA3ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIGRvYy9jaGV3LmM6IFJlbW92ZSBhbGwgdXNlcyBvZiBERUZVTiBhbmQgREVGVU5fVk9JRC4KCSogZWxmLmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOS0wNyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWcuYmZkIChzaC0qLWxpbnV4Kik6IEFkZGVkLgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGYzMl9zaGxpbl92ZWMsIGJmZF9lbGYzMl9zaGJsaW5fdmVjKTogTmV3LgoJKiB0YXJnZXRzLmM6IERlY2xhcmUgdGhlbS4KCSogZWxmMzItc2gtbGluLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5hbTogQ29tcGlsZSBpdC4KCSogZWxmMzItc2guYzogRG9uJ3Qgb3ZlcnJpZGUgZGVmaW5lcyBmcm9tIGVsZjMyLXNoLWxpbi5jLgoJKiBjb25maWd1cmUsIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgoKMjAwMC0wOS0wNiAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogeGNvZmZsaW5rLmMgKHhjb2ZmX2xpbmtfaW5wdXRfYmZkKTogSW5jbHVkZSB0aGUgLnRvY2JzcwoJcHNlZHVvLXNlY3Rpb24gd2hlbiBkZXRlcm1pbmluZyB3aGVyZSB0aGUgVE9DIGVuZHMuCgoJKiBjb2ZmLXJzNjAwMC5jIChfYmZkX3hjb2ZmX3N3YXBfYXV4X291dCk6IFVzZSBiZmRfaF9wdXRfMTYgdG8KCW91dHB1dCB4X3R2bmR4IGFzIGl0IGlzIG9ubHkgdHdvIGJ5dGVzIHdpZGUuCgoJKiBjb2ZmLXJzNjAwMC5jICh4Y29mZl9ob3d0b190YWJsZSk6IEEgbW9kaWZpYWJsZSBicmFuY2gtYWJzb2x1dGUKCXJlbG9jIGlzIDI2IG9yIDMyIGJpdHMgd2lkZS4KCgkqIGNvZmYtcnM2MDAwLmMgKF9iZmRfeGNvZmZfcnR5cGUyaG93dG8pOiBUaGUgYml0c2l6ZSBpcyBpcnJlbGV2YW50Cglmb3IgcmVsb2NzIHRoYXQgZG9uJ3QgY2hhbmdlIGFueXRoaW5nLiAgQWxzbyBsb29rIGF0IHRoZSBmdWxsCgk2IGJpdHMgb2YgYml0c2l6ZS4KCjIwMDAtMDktMDYgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBjb25maWcuYmZkIChhcm0qLSotdWNsaW51eCopOiBOZXcgdGFyZ2V0LgoKMjAwMC0wOS0wNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmU6IFJlYnVpbHQgd2l0aCBuZXcgbGlidG9vbC5tNC4KCjIwMDAtMDktMDYgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBzZWN0aW9uLmMgKGJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFtZSk6IEF2b2lkIGMrKyByZXNlcnZlZAoJd29yZCBmb3IgdmFyaWFibGUgbmFtZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wOS0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgkqIGRvYy9iZmRpbnQudGV4aTogUmVtb3ZlIENWUyBkYXRlIHN0cmluZyAtIGl0IGZvaWxzIGNvbXBhcmVzIHdpdGgKCWxvY2FsIHZlcnNpb25zLgoKMjAwMC0wOS0wNSAgU3RldmVuIEpvaG5zb24gIDxzYmpvaG5zb25Ab3plbWFpbC5jb20uYXU+CgoJKiBjcHUtcG93ZXJwYy5jICAoYXJjaF9pbmZvX3N0cnVjdCk6IEFkZGVkIE1QQzg2MCBGYW1pbHkgZW50cnkuCgoyMDAwLTA5LTA1ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCVNoYXJlZCBsaWJyYXJ5IGFuZCBQSUMgc3VwcG9ydC4KCSogZWxmMzItaHBwYS5jIChQTFRfRU5UUllfU0laRSk6IE5ldy4KCShHT1RfRU5UUllfU0laRSk6IE5ldy4KCShFTEZfRFlOQU1JQ19JTlRFUlBSRVRFUik6IE5ldy4KCShTVFVCX1NVRkZJWCk6IERlZmluZS4KCShMT05HX0JSQU5DSF9QSUNfSU5fU0hMSUIpOiBEZWZpbmUuCgkoUkVMQVRJVkVfRFlOQU1JQ19SRUxPQ1MpOiBEZWZpbmUuCgkoZW51bSBlbGYzMl9ocHBhX3N0dWJfdHlwZSk6IE5ldy4KCShzdHJ1Y3QgZWxmMzJfaHBwYV9zdHViX2hhc2hfZW50cnkpOiBSZW5hbWUgb2Zmc2V0IHRvCglzdHViX29mZnNldC4gIEFkZCBhIG51bWJlciBvZiBuZXcgZmllbGRzLgoJKHN0cnVjdCBlbGYzMl9ocHBhX2xpbmtfaGFzaF9lbnRyeSk6IE5ldy4KCShzdHJ1Y3QgZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBBZGQgbnVtZXJvdXMgZmllbGRzLiAgUmVtb3ZlCglnbG9iYWxfdmFsdWUuCgkoZWxmMzJfaHBwYV9oYXNoX3RhYmxlKTogUmVuYW1lIHRvIGhwcGFfbGlua19oYXNoX3RhYmxlLgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX2xvb2t1cCk6IFJlbmFtZSB0byBocHBhX3N0dWJfaGFzaF9sb29rdXAuCgkoZWxmMzJfaHBwYV9zdHViX2hhc2hfbmV3ZnVuYyk6IFJlbmFtZSB0byBzdHViX2hhc2hfbmV3ZnVuYy4gIEluaXQKCW5ldyBmaWVsZHMuCgkoaHBwYV9saW5rX2hhc2hfbmV3ZnVuYyk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBVc2UgYWJvdmUgZnVuY3Rpb24uIEluaXQgbmV3CglmaWVsZHMuCgkoZWxmMzJfaHBwYV9zdHViX25hbWUpOiBSZW5hbWUgdG8gaHBwYV9zdHViX25hbWUuICBQYXNzIGluIHJlbG9jCglpbnN0ZWFkIG9mIGFkZGVuZCwgYW5kIHJlbW92ZSBzeW1fbmFtZSBmcm9tIGFyZ3MuICBEb24ndCB1c2UKCXN5bWJvbCBuYW1lIGZvciBsb2NhbCBzeW1zLCBpbnN0ZWFkIHVzZSBzeW0gaW5kZXguCgkoZWxmMzJfaHBwYV9zaXplX29mX3N0dWIpOiBSZW5hbWUgdG8gaHBwYV90eXBlX29mX3N0dWIsIGFuZCByZXR1cm4KCXN0dWIgdHlwZSByYXRoZXIgdGhhbiBzaXplLiAgUGFzcyBpbiBoYXNoIGFuZCBoYW5kbGUgaW1wb3J0IHN0dWIKCWNhc2UuICBBbHNvIHBhc3MgaW4gcmVsb2MgaW5zdGVhZCBvZiBvZmZzZXQgc28gd2UgY2FuIGNhbGN1bGF0ZQoJUENSRUwyMkYgYW5kIFBDUkVMMTJGIGJyYW5jaGVzIHByb3Blcmx5LgoJKGVsZjMyX2hwcGFfYnVpbGRfb25lX3N0dWIpOiBSZW5hbWUgdG8gaHBwYV9idWlsZF9vbmVfc3R1Yi4gIEJ1aWxkCglpbXBvcnQgYW5kIGV4cG9ydCBzdHVicyB0b28uCgkoZWxmMzJfaHBwYV9zaXplX29uZV9zdHViKTogUmVuYW1lIHRvIGhwcGFfc2l6ZV9vbmVfc3R1Yi4gIEhhbmRsZQoJaW1wb3J0IGFuZCBleHBvcnQgc3R1YiBzaXppbmcuCgkoZWxmMzJfaHBwYV9jaGVja19yZWxvY3MpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoaHBwYV9kaXNjYXJkX2NvcGllcyk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEZWZpbmUuCgkoZWxmMzJfaHBwYV9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFN0YXNoIHBhcmFtcyBpbiBsaW5rIGhhc2ggdGFibGUsIGFuZCBtb3ZlCglzb21lIGxvY2FsIHZhcnMgaW50byB0aGUgbGluayBoYXNoIHRhYmxlIHRvby4gIEZvciBzaGFyZWQgbGlua3MsCgl0cnVuZGxlIG92ZXIgZnVuY3Rpb24gc3ltcywgZ2VuZXJhdGluZyBleHBvcnQgc3R1YnMuICBIYW5kbGUKCVBDUkVMMjJGIGJyYW5jaGVzLiAgQnJlYWsgb3V0IHN0dWIgY3JlYXRpb24gY29kZSBmcm9tIGhlcmUuLgoJKGhwcGFfYWRkX3N0dWIpOiAuLiB0byBoZXJlLiAgTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfZmluYWxfbGluayk6IFJlbmFtZSB0byBlbGYzMl9ocHBhX3NldF9ncCwgYW5kIGRvbid0CgljYWxsIHRoZSBiZmQgbGlua2VyLiAgVXNlIGVsZl9ncCB0byByZWNvcmQgZ2xvYmFsIHBvaW50ZXIuCglDYWxjdWxhdGUgYSB2YWx1ZSBmcm9tIHNlY3Rpb25zIGlmICRnbG9iYWwkIGlzIG1pc3NpbmcuCgkoYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rKTogRGVmaW5lIGFzIF9iZmRfZWxmMzJfZ2NfY29tbW9uX2ZpbmFsX2xpbmsuCgkoZWxmMzJfaHBwYV9nY19tYXJrX2hvb2spOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfZ2NfbWFya19ob29rKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfZ2Nfc3dlZXBfaG9vayk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9nY19zd2VlcF9ob29rKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBSZW5hbWUgdG8gZmluYWxfbGlua19yZWxvY2F0ZS4KCUFkZCByZWwgdG8gYXJncywgYW5kIHJlbW92ZSBob3d0bywgaW5wdXRfYmZkLCBvZmZzZXQsIGFkZGVuZCwKCXN5bV9uYW1lIGFzIHdlIGNhbiByZWNhbGN1bGF0ZSB0aGVzZSBsb2NhbGx5LiAgSGFuZGxlIGNhbGxzIHRvCglkeW5hbWljIG9iamVjdHMsIGV4dHJhIFBJQyByZWxvY3MsIFBDUkVMMjJGIGJyYW5jaGVzLiAgQ2hhbmdlCgloYW5kbGluZyBvZiB1bmRlZmluZWQgd2VhayBzeW1zLiAgQ2hlY2sgdGhhdCBzdHVicyBhcmUgaW4gcmFuZ2UuCglPbmx5IGxvb2sgZm9yIGltcG9ydCBzdHVicyBvbiBQQ1JFTDE3RiBhbmQgUENSRUwyMkYgcmVsb2NzLiAgQWRkCgltZXNzYWdlIG9uIGhpdHRpbmcgYSBEUFJFTDIxTCByZWxvYyB0aGF0IG5lZWRzIGZpeGluZy4gIFN1YnRyYWN0CglvZmYgUEMgZm9yIFBDUkVMMTRGLiAgQnJlYWsgb3V0IGNvZGUgdGhhdCBkb2VzIGEgc3R1YiBsb29rdXAgZnJvbQoJaGVyZS4uCgkoaHBwYV9nZXRfc3R1Yl9lbnRyeSk6IC4udG8gaGVyZS4gIE5ldyBmdW5jdGlvbi4KCShlbGYzMl9ocHBhX3JlbG9jYXRlX2luc24pOiBNZXJnZSBpbnRvIGZpbmFsX2xpbmtfcmVsb2NhdGUuCgkoZWxmMzJfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogSGFuZGxlIGdvdCBhbmQgcGx0IHJlbG9jcywgZHluYW1pYwoJcmVsb2NzLCBldGMuIGV0Yy4KCShlbGYzMl9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpIERlZmluZS4KCShocHBhX2hhbmRsZV9QSUNfY2FsbHMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaHBwYV9idWlsZF9zdHVicyk6IENhbGwgaXQuICBQYXNzIGxpbmtfaW5mbyB0bwoJaHBwYV9idWlsZF9vbmVfc3R1Yi4KCShlbGYzMl9ocHBhX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogTmV3IGZ1bmN0aW9uCgl0byBjcmVhdGUgLnBsdCBhbmQgLmdvdCB0aGVuIHNldCAucGx0IGZsYWdzIGNvcnJlY3RseS4KCShlbGZfYmFja2VuZF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IERlZmluZS4KCShlbGYzMl9ocHBhX29iamVjdF9wKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iYWNrZW5kX29iamVjdF9wKTogRGVmaW5lLgoJKGVsZjMyX2hwcGFfZWxmX2dldF9zeW1ib2xfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9nZXRfc3ltYm9sX3R5cGUpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfY2FuX2djX3NlY3Rpb25zKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3dhbnRfZ290X3BsdCk6IERlZmluZS4KCShlbGZfYmFja2VuZF9wbHRfYWxpZ25tZW50KTogU2V0IHRvIDIuCgkoZWxmX2JhY2tlbmRfcGx0X3JlYWRvbmx5KTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3dhbnRfcGx0X3N5bSk6IERlZmluZS4KCShlbGZfYmFja2VuZF9nb3RfaGVhZGVyX3NpemUpOiBSZXNlcnZlIG9uZSBlbnRyeS4KCgkqIGVsZjMyLWhwcGEuaCAoZWxmMzJfaHBwYV9idWlsZF9zdHVicyk6IERvbid0IHBhc3Mgc3R1YiBiZmQuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogUGFzcyBpbiBtdWx0aV9zdWJzcGFjZS4KCShlbGYzMl9ocHBhX3NldF9ncCk6IERlY2xhcmUuCgoJKiBzZWN0aW9uLmMgKFNFQ19IQVNfR09UX1JFRik6IERlZmluZSBuZXcgZmxhZyBmb3IgYXNlY3Rpb24uCgkoYmZkX2dldF91bmlxdWVfc2VjdGlvbl9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiBiZmRfaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBlbGY2NC1ocHBhLmMgKGVsZjY0X2hwcGFfY2hlY2tfcmVsb2NzKTogSGFuZGxlIFJfUEFSSVNDX1BDUkVMMTJGLgoJKGVsZjY0X2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogUmVtb3ZlIHRoZSBGSVhNRSBhdCBiZmRfemFsbG9jCgljb21tZW50LgoKCUZyb20gIERhdmlkIEh1Z2dpbnMtRGFpbmVzICA8ZGhkQGxpbnV4Y2FyZS5jb20+CgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9jaGVja19yZWxvY3MpOiBGaXggYSB3YXJuaW5nLgoJKGVsZjY0X2hwcGFfbWFya19leHBvcnRlZF9mdW5jdGlvbnMpOiBTZXQgZHluX2gtPnN0X3NobmR4LgoJKGVsZjY0X2hwcGFfbGlua19vdXRwdXRfc3ltYm9sX2hvb2spOiBUZXN0IGR5bl9oLT5zdF9zaG5keCBoYXMKCWJlZW4gdXBkYXRlZCBpbiBmaW5pc2hfZHluYW1pY19zeW1ib2wgYmVmb3JlIG1vZGlmeWluZyBmdW5jdGlvbgoJc3ltYm9sLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaG93dG9fdGFibGUpOiBSZXN0cnVjdHVyZSBpbnRvIGdyb3VwcyBvZgoJZWlnaHQgZW50cmllcy4gIFJlcGxhY2UgTlVMTCB3aXRoIGJmZF9lbGZfZ2VuZXJpY19yZWxvYy4gIEFkZAoJUl9QQVJJU0NfR05VX1ZURU5UUlksIFJfUEFSSVNDX0dOVV9WVElOSEVSSVQgYW5kIFJfUEFSSVNDX1BDUkVMMTJGLgoJKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBIYW5kbGUgUl9QQVJJU0NfR05VX1ZUKi4gIEFkZCBzb21lCgljb21tZW50cy4gIEhhbmRsZSBmb3JtYXQgPT0gMTIgZm9yIFJfSFBQQV9QQ1JFTF9DQUxMLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUgUl9QQVJJU0NfUENSRUwxMkYuCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IExpa2V3aXNlLiAgUmVmb3JtYXQgc29tZSBjb21tZW50cy4KCShlbGZfaHBwYV9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogRXhwb3NlIGl0IGZvciBBUkNIX1NJWkUgPT0gMzIuCgoJRnJvbSBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9pc19sb2NhbF9sYWJlbF9uYW1lKTogQWNjZXB0IHRoZSBTeXNWL0VMRgoJc3R5bGUgb2YgbG9jYWwgbGFiZWxzIGFzIHdlbGwuCgoyMDAwLTA5LTAzICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogRG9uJ3QgdHJ5IHRvIHJlbG9jYXRlCglyZWZlcmVuY2VzIHRvIHVuZGVmaW5lZCBzeW1ib2xzIGluIGRlYnVnZ2luZyBzZWN0aW9ucy4KCjIwMDAtMDktMDIgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19TSF9DT1BZLCBCRkRfUkVMT0NfU0hfR0xPQl9EQVQsCglCRkRfUkVMT0NfU0hfSk1QX1NMT1QsIEJGRF9SRUxPQ19TSF9SRUxBVElWRSwKCUJGRF9SRUxPQ19TSF9HT1RQQyk6IE1vdmUgdGhlbSBmcm9tIHRoZSBNSVBTIHNlY3Rpb24gdG8gdGhlIFNICglzZWN0aW9uLgoKMjAwMC0wOS0wMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWk4NjAuYyAoYmZkX2VsZjMyX2JmZF9pc19sb2NhbF9sYWJlbF9uYW1lKTogRGVmaW5lIG1hY3JvLgoJKGVsZjMyX2k4NjBfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IE5ldyBmdW5jdGlvbiBhbmQgcHJvdG90eXBlLgoKMjAwMC0wOS0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogSW5jcmVhc2UgdmVyc2lvbiBudW1iZXIgdG8gMi4xMC45MS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBhY2xvY2FsLm00OiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTAyICBEYW5pZWwgQmVybGluIDxkYmVybGluQHJlZGhhdC5jb20+CgoJKiBlbGYuYyAoX2JmZF9lbGZfbWFrZV9zZWN0aW9uX2Zyb21fc2hkcik6IEFkZAoJLmdudS5saW5rb2JjZS53aS4gdG8gdGhlIGxpc3Qgb2YgZGVidWcgc2VjdGlvbiBuYW1lcy4KCjIwMDAtMDktMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBkd2FyZjIuYyAoZmluZF9kZWJ1Z19pbmZvKTogTmV3IGZ1bmN0aW9uOiBMb2NhdGUgYSBzZWN0aW9uCgljb250YWluaW5nIGR3YXJmMiBkZWJ1ZyBpbmZvcm1hdGlvbi4KCShiZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lKTogRmluZCBhbGwgc2VjdGlvbnMgY29udGFpbmluZwoJZGVidWcgaW5mb3JtYXRpb24gYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUgc3Rhc2guCgoyMDAwLTA5LTAxICBOaWliZSBZdXRha2EgIDxnbmlpYmVAbTE3bi5vcmc+LCBLYXogS29qaW1hICA8a2tvamltYUByci5paWo0dS5vci5qcD4sIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZWxmMzItc2guYyAoUl9TSF9HT1QzMiwgUl9TSF9QTFQzMiwgUl9TSF9DT1BZLCBSX1NIX0dMT0JfREFULAoJUl9TSF9KTVBfU0xPVCwgUl9TSF9SRUxBVElWRSwgUl9TSF9HT1RPRkYsIFJfU0hfR09UUEMpOiBOZXcuCgkoc2hfcmVsb2NfbWFwKTogQWRkIG5ldyByZWxvY3MuCgkoc2hfZWxmX2NoZWNrX3JlbG9jcywgc2hfZWxmX2xpbmtfaGFzaF9uZXdmdW5jLAoJc2hfZWxmX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUsIHNoX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wsCglzaF9lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zLCBzaF9lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sLAoJc2hfZWxmX2ZpbmlzaGVfZHluYW1pY19zZWN0aW9ucywgc2hfZWxmX2Rpc2NhcmRfY29waWVzKTogTmV3CglmdW5jdGlvbnMuCgkoRUxGX0RZTkFNSUNfSU5URVJQUkVURVIsIFBMVF9FTlRSWV9TSVpFKTogRGVmaW5lLgoJKGVsZl9zaF9wbHQwX2VudHJ5X2JlLCBlbGZfc2hfcGx0MF9lbnRyeV9sZSwKCWVsZl9zaF9wbHRfZW50cnlfYmUsIGVsZl9zaF9wbHRfZW50cnlfbGUsCgllbGZfc2hfcGljX3BsdF9lbnRyeV9iZSwgZWxmX3NoX3BpY19wbHRfZW50cnlfbGUpOgoJTmV3IGFycmF5IGNvbnN0YW50cy4KCShlbGZfc2hfcGx0MF9lbnRyeSwgZWxmX3NoX3BsdF9lbnRyeSwgZWxmX3NoX3BpY19wbHRfZW50cnkpOgoJTmV3IHZhcmlhYmxlcy4KCShlbGZfc2hfc2l6ZW9mX3BsdCwgZWxmX3NoX3BsdF9wbHQwX29mZnNldCwKCWVsZl9zaF9wbHQwX2xpbmtlcl9vZmZzZXQsIGVsZl9zaF9wbHQwX2dvdGlkX29mZnNldCwKCWVsZl9zaF9wbHRfdGVtcF9vZmZzZXQsIGVsZl9zaF9wbHRfc3ltYm9sX29mZnNldCwKCWVsZl9zaF9wbHRfcmVsb2Nfb2Zmc2V0KTogRGVmaW5lLgoJKGVsZl9zaF9wY3JlbF9yZWxvY3NfY29waWVkLCBlbGZfc2hfbGlua19oYXNoX2VudHJ5LAoJZWxmX3NoX2xpbmtfaGFzaF90YWJsZSk6IE5ldyBzdHJ1Y3RzLgoJKHNoX2VsZl9saW5rX2hhc2hfdHJhdmVyc2UsIHNoX2VsZl9oYXNoX3RhYmxlKTogTmV3IG1hY3Jvcy4KCShzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbiwgc2hfZWxmX2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBuZXcKCXJlbG9jYXRpb24gdHlwZXMuCgkoZWxmX2JhY2tlbmRfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMsCgliZmRfZWxmMzJfYmZkX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUsCgllbGZfYmFja2VuZF9hZGp1c3RfZHluYW1pY19zeW1ib2wsCgllbGZfYmFja2VuZF9zaXplX2R5bmFtaWNfc2VjdGlvbnMsCgllbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zeW1ib2wsCgllbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zZWN0aW9ucywgZWxmX2JhY2tlbmRfd2FudF9nb3RfcGx0LAoJZWxmX2JhY2tlbmRfcGx0X3JlYWRvbmx5LCBlbGZfYmFja2VuZF93YW50X3BsdF9zeW0sCgllbGZfYmFja2VuZF9nb3RfaGVhZGVyX3NpemUsIGVsZl9iYWNrZW5kX3BsdF9oZWFkZXJfc2l6ZSk6CglEZWZpbmUuCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19TSF9DT1BZLCBCRkRfUkVMT0NfU0hfR0xPQl9EQVQsCglCRkRfUkVMT0NfU0hfSk1QX1NMT1QsIEJGRF9SRUxPQ19TSF9SRUxBVElWRSwgQkZEX1JFTE9DX1NIX0dPVFBDKToKCU5ldyByZWxvY3MuCgkqIGJmZC1pbjIuaCwgbGliYmZkLmg6IFJlYnVpbHQuCgoyMDAwLTA5LTAxICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBSZXZlcnQgMjAwMC0wOC0yNwoJY2hhbmdlLgoKMjAwMC0wOC0zMSAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX21lcmdlX3ByaXZhdGVfZGF0YSk6IElmIGliZmQncyBlbGYgaGVhZGVyIGZsYWdzCglub3QgaW5pdGlhbGl6ZWQsIHNldCB0aGVtIHRvIGluZGljYXRlIHRoZSBTSDEgaW5zdHJ1Y3Rpb24gc2V0LgoKMjAwMC0wOC0zMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBhY2luY2x1ZGUubTQ6IEluY2x1ZGUgbGlidG9vbCBhbmQgZ2V0dGV4dCBtYWNyb3MgZnJvbSB0aGUKCXRvcCBsZXZlbC4KCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOiBSZWJ1aWx0LgoKMjAwMC0wOC0yOSAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHNlYWRvZy5jeWdudXMuY29tPgoKCSogZWxmLmM6IEVsaW1pbmF0ZSByZWZlcmVuY2VzIHRvIF9fc3BhcmN2OSBtYWNybzsgcmVwbGFjZSB3aXRoCglhdXRvY29uZiB2YXJpYWJsZXMgSEFWRV9QU0lORk8zMl9UIGV0Yy4KCSogY29uZmlndXJlLmluOiBBdXRvLWNvbmZpZ3VyZSBIQVZFX1BTSU5GT18zMl9ULCBIQVZFX1BSUFNJTkZPMzJfVCwKCUhBVkVfUFNUQVRVUzMyX1QsIEhBVkVfUFJTVEFUVVMzMl9ULCBIQVZFX1BSU1RBVFVTMzJfVF9QUl9XSE8uCgkqIGNvbmZpZy5pbjogRGl0dG8uCgkqIGFjaW5jbHVkZS5tNCAoQkZEX0hBVkVfU1lTX1BST0NGU19UWVBFKSBkZWZpbmUgX1NZU0NBTEwzMiBzbyBpdCBjYW4KCWRldGVjdCB0aGUgYWJvdmUgdHlwZWRlZnMuICAoQkZEX0hBVkVfU1lTX1BST0NGU19UWVBFX01FTUJFUik6IERpdHRvLgoJKiBhY2xvY2FsLm00OiBEaXR0by4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wOC0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogS2VlcCBpbmZvIG9uIHJlbG9jcyBjb3BpZWQKCWZvciBhbnkgc2hhcmVkIGxpbmssIG5vdCBqdXN0IHNoYXJlZCAtQnN5bWJvbGljLgoJKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IENhbGwgZWxmX2kzODZfZGlzY2FyZF9jb3BpZXMgb24KCWFueSBzaGFyZWQgbGluaywgYW5kIHBhc3MgbGluayBpbmZvIHRvIGl0LgoJKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVwZGF0ZSBjb21tZW50LgoJKGVsZl9pMzg2X2Rpc2NhcmRfY29waWVzKTogTW9kaWZ5IHRvIGRpc2NhcmQgcmVsb2NzIGZvciBzeW1ib2xzCgl0aGF0IGhhdmUgYmVlbiBmb3JjZWQgbG9jYWwuCgkoZWxmX2kzODZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgY29weSByZWxvY3MgZm9yIHN5bWJvbHMKCXRoYXQgaGF2ZSBiZWVuIGZvcmNlZCBsb2NhbC4KCjIwMDAtMDgtMjQgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+ICYgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQWxsb3cgY29tbW9uCglzeW1ib2xzIHRvIGhhdmUgYW4gYWxpZ25tZW50IG9mIDEgaWYgZXhwbGljaXRseSByZXF1ZXN0ZWQsIGFuZAoJbm90IG92ZXJyaWRkZW4gYnkgb3RoZXIgZGVmaW5pdGlvbnMuCgoyMDAwLTA4LTIyICBEb3VnIEt3YW4gPGRrd2FuQHRyYW5zbWV0YS5jb20+CgoJKiBjb2ZmLXc2NS5jIChDUkVBVEVfTElUVExFX0NPRkZfVEFSR0VUKTogRml4IHR5cG8uCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2ZsYWdzKTogQWRkIGRldGVjdGlvbiBvZiB3NjUgYXJjaGl0ZWN0dXJlLgoKMjAwMC0wOC0yMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLWJmZC5oIChlbGZfbGlua19oYXNoX3RhYmxlKTogQWRkIHJ1bnBhdGguCgoJKiBiZmQtaW4uaCAoYmZkX2VsZl9nZXRfcnVucGF0aF9saXN0KTogTmV3IHByb3RvdHlwZS4KCSogYmZkLWluMi5oOiBSZWJ1aWx0LgoKCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9pbml0KTogSW5pdGlhbGl6ZSB0aGUKCSJydW5wYXRoIiBmaWVsZCB0byBOVUxMLgoJKGJmZF9lbGZfZ2V0X3J1bnBhdGhfbGlzdCk6IE5ldyBmdW5jdGlvbi4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogUmVjb3JkIERUX1JQQVRIIGFuZAoJRFRfUlVOUEFUSCBlbnRyaWVzLgoKMjAwMC0wOC0yMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbikgW1JfU0hfSU5EMTJXLAoJUl9TSF9ESVI4V1BOLCBSX1NIX0RJUjhXUFosIFJfU0hfRElSOFdQTF06IEhhbmRsZSB0aGVtCglleHBsaWNpdGx5LiAgSW1wcm92ZSB2YWxpZGF0aW9uIG9mIHJfdHlwZS4KCjIwMDAtMDgtMjEgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogWmVybyBvdXQgdGhlCglkeW5hbWljIGFsbG9jYXRlZCBjb250ZW50IHNwYWNlLiAgQWRkIGEgY29tbWVudCB0byByZW1pbmQgdXMgdGhhdAoJb25lIGRheSB0aGlzIG91Z2h0IHRvIGJlIGZpeGVkLgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoKMjAwMC0wOC0yMSAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWk4NjAuYyAoZWxmMzJfaTg2MF9yZWxvY2F0ZV9wYzE2KTogSnVzdCB3cml0ZSB0aGUgaW1tZWRpYXRlCglmaWVsZCB3aXRoIHRoZSBuZXdseSByZWxvY2F0ZWQgdmFsdWUgaW5zdGVhZCBvZiBhZGRpbmcgaXQgdG8gdGhlCglleGlzdGluZyBpbW1lZGlhdGUgZmllbGQuCgkoZWxmMzJfaTg2MF9yZWxvY2F0ZV9zcGxpdG4pOiBMaWtld2lzZS4KCShlbGYzMl9pODYwX3JlbG9jYXRlX2hpZ2hhZGopOiBMaWtld2lzZS4KCjIwMDAtMDgtMTYgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pODYwLmMgKGVsZjMyX2k4NjBfcmVsb2NhdGVfcGMxNik6IEltcGxlbWVudGVkIGZ1bmN0aW9uIChpdAoJd2FzIHByZXZpb3VzbHkganVzdCBhIHN0dWIpLgoKMjAwMC0wOC0xNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2NyZWF0ZV9nb3Rfc2VjdGlvbik6IERvbid0IGFib3J0KCkuCglGb3JtYXR0aW5nIGZpeGVzLgoJKF9iZmRfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoyMDAwLTA4LTE2ICBBbmRyZXcgTWFjbGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogU2V0IHJlbG9jYXRpb24gYWRkcmVzcwoJZm9yIHVuZGVmaW5lZCBzeW1ib2xzIHRvIGJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY3Rpb24uCgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBEb24ndCBhbGxvY2F0ZQoJZm91ciBleHRyYSBlbnRyaWVzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIC5yZWxhLnBsdCBzZWN0aW9uLgoJKHNwYXJjNjRfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEFkanVzdCB0aGUgb2Zmc2V0IGluIHRoZSAucmVsYS5wbHQKCXNlY3Rpb24gdG8gYWNjb3VudCBmb3IgdGhlIGZvdXIgcmVzZXJ2ZWQgZW50cmllcyBpbiB0aGUgLnBsdCBzZWN0aW9uLgoKMjAwMC0wOC0xNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogeGNvZmZsaW5rLmMgKF9iZmRfcHBjX3hjb2ZmX3JlbG9jYXRlX3NlY3Rpb24pOiBBZGQgb3JpIHIwLHIwLDAKCXRvIHRoZSBsaXN0IG9mIE5PUHMgd2UgcmVjb2duaXplIGFmdGVyIGEgYnJhbmNoLWFuZC1saW5rLgoJVXNlIHRoZSBvcmkgTk9QIHdoZW4gb25lIGlzIG5lZWRlZC4KCgkqIGNvZmYtcnM2MDAwLmMgKF9iZmRfeGNvZmZfc2x1cnBfYXJtYXApOiBGaW5pc2ggaW1wbGVtZW50YXRpb24KCWZvciBsYXJnZSBhcmNoaXZlcy4KCjIwMDAtMDgtMTQgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWlhNjQuYyAoZWxmNjRfaWE2NF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogSGFuZGxlCglFRl9JQV82NF9SRURVQ0VERlAsIEVGX0lBXzY0X0NPTlNfR1AsIGFuZCBFRl9JQV82NF9OT0ZVTkNERVNDX0NPTlNfR1AuCgkoZWxmNjRfaWE2NF9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogTGlrZXdpc2UuICBBbHNvIGhhbmRsZQoJRUZfSUFfNjRfQUJTT0xVVEUuCgoyMDAwLTA4LTExICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzKTogTWFrZSBpdCBzdGF0aWMuCgoyMDAwLTA4LTEwICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZWxmMzItaTg2MC5jIChlbGYzMl9pODYwX3JlbG9jYXRlX3NlY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoaTg2MF9maW5hbF9saW5rX3JlbG9jYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2k4NjBfcmVsb2NhdGVfc3BsaXRuKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2k4NjBfcmVsb2NhdGVfcGMxNik6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX3JlbG9jYXRlX2hpZ2hhZGopOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfaTg2MF9ob3d0byk6IE1pbm9yIGFkanVzdG1lbnRzIHRvIHNvbWUgcmVsb2NhdGlvbnMuCgkoZWxmX2luZm9fdG9faG93dG9fcmVsKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3JlbG9jYXRlX3NlY3Rpb24pOiBEZWZpbmUuCgoyMDAwLTA4LTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItYXJtLmg6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wOC0xMCAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NfbG9vcCk6IE1ha2UgTEFTVF9TWU1CT0xfU0VDVElPTiBzdGF0aWMuCgoyMDAwLTA4LTA4ICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZWxmMzItaTg2MC5jIChlbGYzMl9pODYwX2hvd3RvX3RhYmxlKTogVXBkYXRlZCBzb21lIGZpZWxkcy4KCjIwMDAtMDgtMDcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogaWVlZS5jIChpZWVlX3dyaXRlX2RlYnVnX3BhcnQpOiBSZXdyaXRlIGEgY29tbWVudC4KCSogZWxmNjQtaWE2NC5jOiBGaXggYSB0eXBvLgoKMjAwMC0wOC0wNSAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWk4NjAgKGVsZjMyX2k4NjBfaG93dG9fdGFibGUpOiBOZXcgc3RydWN0dXJlLgoJKGxvb2t1cF9ob3d0byk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9pODYwX3JlbG9jX3R5cGVfbG9va3VwKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2k4NjBfaW5mb190b19ob3d0b19yZWxhKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9jb2RlX3RvX2hvd3RvX2luZGV4KTogTmV3IHN0cnVjdHVyZS4KCShlbGZfaW5mb190b19ob3d0byk6IFJlLWRlZmluZSBhcyBlbGYzMl9pODYwX2luZm9fdG9faG93dG9fcmVsYS4KCShiZmRfZWxmMzJfYmZkX3JlbG9jX3R5cGVfbG9va3VwKTogUmUtZGVmaW5lIGFzCgllbGYzMl9pODYwX3JlbG9jX3R5cGVfbG9va3VwLgoKMjAwMC0wOC0wNCAgUm9kbmV5IEJyb3duICA8Um9kbmV5QnJvd25AcG1zYy5jb20+CgoJKiBzb20uYyAoc3RydWN0IGZpeHVwX2Zvcm1hdCk6IENvbnN0aWZ5IGBmb3JtYXQnLgoJKHNvbV9ocHBhX2hvd3RvX3RhYmxlKTogVXNlIFNPTV9IT1dUTyBtYWNyby4KCSh0cnlfcHJldl9maXh1cCwgaHBwYV9zb21fcmVsb2MpOiBEZWNvcmF0ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKHNvbV9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShjb21wYXJlX3N1YnNwYWNlcyk6IFJlbW92ZSB1bnVzZWQgYGNvdW50MScsIGBjb3VudDInLgoJKHNvbV9iZWdpbl93cml0aW5nKTogUmVtb3ZlIHVudXNlZCBgdG90YWxfcmVsb2Nfc2l6ZScuCgkoc29tX2JmZF9kZXJpdmVfbWlzY19zeW1ib2xfaW5mbyk6IERlY29yYXRlIHVudXNlZCBwYXJhbWV0ZXIuCgkoc29tX3ByaW50X3N5bWJvbCwgc29tX2JmZF9pc19sb2NhbF9sYWJlbF9uYW1lKTogTGlrZXdpc2UuCgkoc29tX3NldF9yZWxvY19pbmZvKTogQ29uc3RpZnkgYGNwJy4gUmVtb3ZlIHVudXNlZCBgYWRkZW5kJy4KCShzb21fZmluZF9uZWFyZXN0X2xpbmUpOiBEZWNvcmF0ZSB1bnVzZWQgcGFyYW1ldGVyKHMpLgoJKHNvbV9zaXplb2ZfaGVhZGVycywgc29tX2dldF9zeW1ib2xfaW5mbywgc29tX3dyaXRlX2FybWFwKTogTGlrZXdpc2UuCgkoc29tX2JmZF9saW5rX3NwbGl0X3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDgtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBzZWN0aW9uLmM6IFJlc3RvcmUgYmFja2VkIG91dCBjb2RlLgoJKiBlbGYuYzogUmVzdG9yZSBiYWNrZWQgb3V0IGNvZGUuCgkoY29weV9wcml2YXRlX2JmZF9kYXRhKTogRml4IGJ1ZyBwcmV2ZW50aW5nIHN0aXBwZWQgZHluYW1pYwoJYmluYXJpZXMgZnJvbSB3b3JraW5nLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA4LTAzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBzZWN0aW9uLmM6IEJhY2sgb3V0IHRoZSBjaGFuZ2UgbWFkZSBieSBOaWNrIENsaWZ0b24KCTxuaWNrY0BjeWdudXMuY29tPiBvbiAyMDAwLTA3LTMxLiBJdCBicmVha3Mgc3RyaXBwaW5nIGR5bmFtaWMKCWJpbmFyaWVzLgoJKiBiZmQtaW4yLmg6IExpa2V3aXNlLgoJKiBlbGYuYzogTGlrZXdpc2UuCgoyMDAwLTA4LTAzICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY19sb29wKTogV2FybmluZyByZW1vdmFsLgoKMjAwMC0wNy0zMSAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ184NjBfKik6IE5ldyBiZmQgcmVsb2NzIGZvciBpODYwLgoJKiBiZmQtaW4yLmgsIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0zMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHNlY3Rpb24uYyAoc3RydWN0IHNlYyk6IEFkZCBuZXcgYm9vbGVhbiBmaWVsZCAnc2VnbWVudF9tYXJrJy4KCShTVERfU0VDVElPTik6IEluaXRpYWxpc2UgbmV3IGZpZWxkIHRvIHplcm8uCgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBlbGYuYyAoY29weV9wcml2YXRlX2JmZF9kYXRhKTogUmVvcmdhbmlzZSBzZWN0aW9uIHRvIHNlZ21lbnQKCW1hcHBpbmcgdG8gY29wZSB3aXRoIG1vdmVkIHNlY3Rpb25zIHJlcXVpcmluZyBuZXcgc2VnbWVudHMsCglhbmQgb3ZlcmxhcHBpbmcgc2VnbWVudHMuCgkoU0VHTUVOVF9FTkQpOiBOZXcgbWFjcm86IFJldHVybiB0aGUgZW5kIGFkZHJlc3Mgb2YgYSBzZWdtZW50LgoJKElTX0NPTlRBSU5FRF9CWV9WTUEpOiBOZXcgbWFjcm86IERldGVybWluZSBpZiBhIHNlZ21lbnQKCWNvbnRhaW5zIGEgc2VjdGlvbiBieSBjb21wYXJpbmcgdGhlaXIgVk1BIGFkZHJlc3Nlcy4KCShJU19DT05UQUlORURfQllfTE1BKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgYSBzZWdtZW50Cgljb250YWlucyBhIHNlY3Rpb24gYnkgY29tcGFyaW5nIHRoZWlyIExNQSBhZGRyZXNzZXMuCgkoSU5DTFVERV9TRUNUSU9OX0lOX1NFR01FTlQpOiBOZXcgbWFjcm86IERldGVybWluZSBpZiBhCglzZWN0aW9uIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBhIHNlZ21lbnQuCgkoU0VHTUVOVF9BRlRFUl9TRUdNRU5UKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgb25lIHNlZ21lbnQKCWZvbGxvd3MgYW5vdGhlciBpbiBtZW1vcnkuCgkoU0VHTUVOVF9PVkVSTEFQU19TRUdNRU5UKTogTmV3IG1hY3JvOiBEZXRlcm1pbmUgaWYgdHdvCglzZWdtZW50cyBvdmVybGFwLgoKMjAwMC0wNy0yMiAgSmFzb24gRWNraGFyZHQgIDxqbGVAY3lnbnVzLmNvbT4KCgkqIGNwdS1pODYwLmM6IEFkZGVkIGNvbW1lbnRzLgoKCSogZWxmMzItaTg2MC5jIChUQVJHRVRfTElUVExFX1NZTSk6IERlZmluZWQgdG8KCWJmZF9lbGYzMl9pODYwX2xpdHRsZV92ZWMuCgkoVEFSR0VUX0xJVFRMRV9OQU1FKTogRGVmaW5lZCB0byAiZWxmMzItaTg2MC1saXR0bGUiLgoJKEVMRl9NQVhQQUdFU0laRSk6IENoYW5nZWQgdG8gNDA5Ni4KCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYyk6IERlY2xhcmF0aW9uIG9mCgluZXcgdGFyZ2V0LgoJKGJmZF90YXJnZXRfdmVjdG9yKTogQWRkZWQgYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYy4KCgkqIGNvbmZpZy5iZmQgKGk4NjAtc3RhcmRlbnQtc3lzdjQqLCBpODYwLXN0YXJkZW50LWVsZiopOiBBZGRlZAoJY29uZmlnIGZvciBsaXR0bGUgZW5kaWFuIGVsZjMyIGk4NjAuCgkodGFyZ19kZWZ2ZWMpOiBEZWZpbmUgZm9yIHRoZSBuZXcgY29uZmlnIGFib3ZlCglhcyAiYmZkX2VsZjMyX2k4NjBfbGl0dGxlX3ZlYyIuCgkodGFyZ19zZWx2ZWNzKTogRGVmaW5lIGZvciB0aGUgbmV3IGNvbmZpZyBhYm92ZQoJYXMgImJmZF9lbGYzMl9pODYwX3ZlYyBiZmRfZWxmMzJfaTg2MF9saXR0bGVfdmVjIgoKCSogY29uZmlndXJlLmluIChiZmRfZWxmMzJfaTg2MF9saXR0bGVfdmVjKTogQWRkZWQgcmVjb2duaXRpb24KCW9mIG5ldyB0YXJnZXQgdmVjLgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDAtMDctMjcgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoZWxmX21lcmdlX3N5bWJvbCk6IFRha2Ugb25lIG1vcmUgYXJndW1lbnQsCglkdF9uZWVkZWQsIHRvIGluZGljYXRlIGlmIHRoZSBzeW1ib2wgY29tZXMgZnJvbSBhIERUX05FRURFRAoJZW50cnkuIERvbid0IG92ZXJpZGUgdGhlIGV4aXN0aW5nIHdlYWsgZGVmaW5pdGlvbiBpZiBkdF9uZWVkZWQKCWlzIHRydWUuCgkoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogUGFzcyBkdF9uZWVkZWQgdG8KCWVsZl9tZXJnZV9zeW1ib2wgKCkuCgoyMDAwLTA3LTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfbGlua19zaXplX3JlbG9jX3NlY3Rpb24pOiBaZXJvZXMgdGhlIHNlY3Rpb24ncwoJYWxsb2NhdGVkIGNvbnRlbnRzLgoKMjAwMC0wNy0yNSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmhvc3QgKCotKi1haXgqKTogQUlYIGhhcyAnbG9uZyBsb25nJyBhbHdheXMuCgoJKiBjb2ZmLXJzNjAwMC5jICh4Y29mZl93cml0ZV9vbmVfYXJtYXBfYmlnKTogTmV3IHByb2NlZHVyZS4KCSh4Y29mZl93cml0ZV9hcm1hcF9iaWcpOiBXcml0ZSBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGFybWFwcy4KCSh4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzX2JpZyk6IERvbid0IHVwZGF0ZSB0aGUgb2Zmc2V0CglvZiB0aGUgc3ltYm9sIHRhYmxlLCB4Y29mZl93cml0ZV9hcm1hcCB3aWxsIGRvIGl0LgoKMjAwMC0wNy0yMyAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogVXNlIGFiZmQgaW5zdGVhZAoJb2YgZHlub2JqIGZvciBTR0lfQ09NUEFUIGNoZWNrcy4KCjIwMDAtMDctMjEgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIGNvZmYtbTY4ay5jIChiZmRfbTY4a19jb2ZmX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MpOiBOZXcgZnVuY3Rpb24uCgkqIGJmZC1pbi5oIChiZmRfbTY4a19jb2ZmX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MpOiBBZGQgZGVjbGFyYXRpb24uCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDctMjEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogRGV0ZWN0IG91dCBvZgoJcmFuZ2Ugc3ltYm9sIGluZGljZXMgaW4gcmVsb2NzIGFuZCBpc3N1ZSBhbiBlcnJvciBtZXNzYWdlLgoKMjAwMC0wNy0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChOQU1FKGJmZF9lbGYsc2l6ZV9keW5hbWljX3NlY3Rpb25zKSk6IERvbid0IGNoZWNrCglpbmZvLT5uZXdfZHRhZ3Mgd2hlbiBzZXR0aW5nIERUX0ZMQUdTXzEuIEl0IHdpbGwgb25seSBiZSBzZXQKCWJ5IHRoZSBuZXcgbGlua2VyIG9wdGlvbnMuIEl0IHNob3VsZG4ndCBicmVhayBhbnl0aGluZy4KCjIwMDAtMDctMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBTZXQgRFRfRkxBR1NfMQoJb25seSBpZiBpbmZvLT5uZXdfZHRhZ3MgaXMgdHJ1ZS4KCjIwMDAtMDctMjAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBTZXQKCURUX1JVTlBBVEggYW5kIERUX0ZMQUdTIG9ubHkgaWYgaW5mby0+bmV3X2R0YWdzIGlzIHRydWUuCgoyMDAwLTA3LTIwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChBTExfTUFDSElORVMpOiBBZGQgY3B1LWNyaXMubG8uCgkoQUxMX01BQ0hJTkVTX0NGSUxFUyk6IEFkZCBjcHUtY3Jpcy5jLgoJKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGFvdXQtY3Jpcy5sbyBhbmQgZWxmMzItY3Jpcy5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgYW91dC1jcmlzLmMgYW5kIGVsZjMyLWNyaXMuYy4KCShjcHUtY3Jpcy5sbywgYW91dC1jcmlzLmxvLCBlbGYzMi1jcmlzLmxvKTogTmV3IHJ1bGVzLgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCSogYWNsb2NhbC5tNDogUmVidWlsZC4KCSogYW91dHguaCAoTkFNRShhb3V0LG1hY2hpbmVfdHlwZSkpOiBBZGQgY2FzZSBmb3IgYmZkX2FyY2hfY3Jpcy4KCSogYXJjaHVyZXMuYyAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIGJmZF9hcmNoX2NyaXMuCgkoYmZkX2NyaXNfYXJjaCk6IERlY2xhcmUuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgYmZkX2NyaXNfYXJjaC4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoJKiBjb25maWcuYmZkOiAoY3Jpcy0qLSopOiBOZXcgdGFyZ2V0LgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGYzMl9jcmlzX3ZlYywgY3Jpc19hb3V0X3ZlYyk6IE5ldyB2ZWN0b3JzLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIGVsZi5jIChwcmVwX2hlYWRlcnMpOiBBZGQgYmZkX2FyY2hfY3Jpcy4KCSogbGliYmZkLmg6IFJlYnVpbGQuCgkqIGxpYmFvdXQuaCAoZW51bSBtYWNoaW5lX3R5cGUpOiBBZGQgTV9DUklTLgoJKiByZWxvYy5jOiBBZGQgQ1JJUyByZWxvY2F0aW9ucy4KCSogdGFyZ2V0cy5jIChiZmRfZWxmMzJfY3Jpc192ZWMsIGNyaXNfYW91dF92ZWMpOiBEZWNsYXJlLgoJKGJmZF90YXJnZXRfdmVjdCk6IEFkZCBiZmRfZWxmMzJfY3Jpc192ZWMgYW5kIGNyaXNfYW91dF92ZWMuCgkqIGNwdS1jcmlzLmMsIGFvdXQtY3Jpcy5jLCBlbGYzMi1jcmlzLmM6IE5ldyBmaWxlcy4KCSogcG8vUE9URklMRVMuaW4sIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEFsc28gc2V0CglERl9URVhUUkVMIGlmIERUX1RFWFRSRUwgaXMgc2V0LgoJKiBlbGYzMi1pMzcwLmMgKGkzNzBfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmNjQtaWE2NC5jIChlbGY2NF9pYTY0X3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBBbHNvCglzZXQgREZfU1lNQk9MSUMgZm9yIHN5bWJvbGljIGxpbmsuIEFsc28gc2V0IERUX1JVTlBBVEggaWYKCURUX1JQQVRIIGlzIHNldC4KCVNldCB0aGUgRFRfRkxBR1MgYW5kIERUX0ZMQUdTXzEgZW50cmllcyBpZiBuZWNlc3NhcnkuCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBiZmQtaW4uaCAoYmZkX2VsZl9zZXRfZHRfbmVlZGVkX3NvbmFtZSk6IE5ldy4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKCSogZWxmLWJmZC5oIChlbGZfb2JqX3RkYXRhKTogQWRkIGR0X3NvbmFtZS4KCShlbGZfZHRfc29uYW1lKTogTmV3LgoKCSogZWxmLmMgKGJmZF9lbGZfc2V0X2R0X25lZWRlZF9zb25hbWUpOiBOZXcuCgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEFkZCB0aGUgRFRfTkVFREVECgllbnRyeSBpZiB0aGUgc2hhcmVkIG9iamVjdCBsb2FkZWQgYnkgRFRfTkVFREVEIGlzIHVzZWQgdG8KCXJlc29sdmUgdGhlIHJlZmVyZW5jZSBpbiBhIHJlZ3VsYXIgb2JqZWN0LgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKF9iZmRfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBIYW5kbGUgRFRfQ09ORklHLAoJRFRfREVQQVVESVQgYW5kIERUX0FVRElUIGFzIHN0cmluZ3MuCgoyMDAwLTA3LTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZm9ybWF0LmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKF9iZmRfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBGaXggRFRfQ0hFQ0tTVU0uCgoyMDAwLTA3LTE5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGYuYyAoX2JmZF9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IEhhbmRsZSBEVF9CSU5EX05PVywKCURUX0lOSVRfQVJSQVksIERUX0ZJTklfQVJSQVksIERUX0lOSVRfQVJSQVlTWiwgRFRfRklOSV9BUlJBWVNaLAoJRFRfUlVOUEFUSCwgRFRfRkxBR1MsIERUX1BSRUlOSVRfQVJSQVksIERUX1BSRUlOSVRfQVJSQVlTWiwKCURUX1BMVFBBRFNaLCBEVF9NT1ZFRU5ULCBEVF9NT1ZFU1osIERUX0ZFQVRVUkUsIERUX1BPU0ZMQUdfMSwKCURUX1NZTUlOU1osIERUX1NZTUlORU5ULCBEVF9DT05GSUcsIERUX0RFUEFVRElULCBEVF9BVURJVCwKCURUX1BMVFBBRCwgRFRfTU9WRVRBQiwgRFRfU1lNSU5GTywgRFRfUkVMQUNPVU5ULCBEVF9SRUxDT1VOVCwKCURUX0ZMQUdTXzEsIERUX1VTRUQgYW5kIERUX0NIRUNLU1VNLgoKMjAwMC0wNy0xOCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZWxmLmMgKGJmZF9lbGZfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSwgYmZkX2VsZl9nZXRfYXJjaF9zaXplKTogTW92ZQoJcmVuYW1lZCBmdW5jdGlvbnMgZnJvbSBoZXJlLi4uCgkoYXNzaWduX3NlY3Rpb25fbnVtYmVycyk6IFVzZSByZW5hbWVkIGZ1bmN0aW9ucy4KCShwcmVwX2hlYWRlcnMpOiBVc2UgcmVuYW1lZCBmdW5jdGlvbnMuCgoJKiBiZmQuYyAoYmZkX2dldF9zaWduX2V4dGVuZF92bWEsIGJmZF9nZXRfYXJjaF9zaXplKTogLi4uVG8gaGVyZS4KCSogYmZkLWluLmggKGJmZF9nZXRfc2lnbl9leHRlbmRfdm1hLCBiZmRfZ2V0X2FyY2hfc2l6ZSk6IFVwZGF0ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0xOCAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogQWRkCglwYXJlbnRoZXNpcyBpbiBpZiBzdGF0ZW1lbnQuCgoyMDAwLTA3LTE3ICBLb3VuZGlueWEgSyAgPGtrQGRkZW9yZy5zb2Z0Lm5ldD4KCglFbmFibGUgdGhlIHN1cHBvcnQgZm9yIFRyYWRpdGlvbmFsIE1JUFMuCgkqIGVsZjMyLW1pcHMuYyAoSVJJWF9DT01QQVQpOiBSZWNvZ25pemUgYmZkX2VsZjMyX3RyYWRiaWdtaXBzX3ZlY2FuZAoJcmV0dXJuIGljdF9ub25lIGFwcHJvcHJpYXRlbHkgZm9yIHRyYWRpdGlvbmFsIG1pcHMgdGFyZ2V0cy4KCShTVFVCX0xXKTogQ2hhbmdlIDB4OGY5OTgwMDAgdG8gMHg4Zjk5ODAxMCBmb3IgdHJhZGl0aW9uYWwgbWlwcy4KCShTVFVCX01PVkUpOiBDb25kaXRpb25hbGl6ZSBmb3IgdHJhZGl0b25hbCBtaXBzLgoJKFNUVUJfTEkxNik6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfbW9kaWZ5X3NlZ21lbnRfbWFwKTogQ29uZGl0aW9uYWxpemUgdG8gYXZvaWQgbWFraW5nCglyb29tIGZvciBSVFBST0MgaGVhZGVyLgoJKF9iZmRfbWlwc19lbGZfbW9kaWZ5X3NlZ21lbnRfbWFwKTogRm9yIGEgbm9ybWFsIG1pcHMgZXhlY3V0YWJsZSBzZXQKCXRoZSBwZXJtaXNzaW9uIGZvciB0aGUgUFRfRFlOQU1JQyBhcyByZWFkLCB3cml0ZSBhbmQgZXhlY3V0ZS4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IENoZWNrIGZvciB0aGUgc3ltYm9sIF9EWU5BTUlDX0xJTktJTkcKCWZvciB0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IEFkZCB0aGUgc3ltYm9sCglfRFlOQU1JQ19MSU5LSU5HIGZvciB0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IEFkZCB0aGUgc3ltYm9sIF9fUkxEX01BUAoJaW4gY2FzZSBvZiB0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBDcmVhdGUgYSBzdHViIG9ubHkgaWYgYSBQTFQKCWVudHJ5IGlzIHJlcXVpcmVkLiBGb3IgYSBmdW5jdGlvbiBpZiBQTFQgaXMgbm90IHJlcXVpcmVkIHRoZW4gc2V0IHRoZQoJY29ycmVzcG9uZGluZyBoYXNoIHRhYmxlIGVudHJ5IHRvIDAuCgkoX2JmZF9taXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBZGQgRFRfREVCVUcgZW50cnkgZm9yCgl0cmFkaXRvbmFsIG1pcHMuCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBmb3IgYSB1bmRlZmluZWQgc3ltYm9sIGluIGEKCXNoYXJlZCBvYmplY3Qgc2V0IHRoZSB2YWx1ZSB0byAwLgoJKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogQ2hlY2sgZm9yIHRoZSBzeW1ib2wKCV9EWU5BTUlDX0xJTktJTkcgZm9yIHRyYWRpdG9uYWwgbWlwcy4KCShfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IENoZWNrIGZvciB0aGUgc3ltYm9sIF9fUkxEX01BUAoJZm9yIHRyYWRpdG9uYWwgbWlwcy4KCjIwMDAtMDctMTUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGFvdXR4LmggKHRyYW5zbGF0ZV90b19uYXRpdmVfc3ltX2ZsYWdzKTogSGFuZGxlIEJTRl9MT0NBTC4KCjIwMDAtMDctMTIgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGxpYmJmZC5jIChiZmRfc2Vlayk6IGZpeCAnc2VlayBiZXlvbmQgRU9GJyBlcnJvciB3aGVuIHdyaXRpbmcKCW91dCBhIHN0cnVjdHVyZSB0aGF0IGlzIEJGRF9JTl9NRU1PUlkuCgoyMDAwLTA3LTExICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmNjQtaHBwYS5jIChnZXRfZHluX25hbWUpOiBQYXNzIGluIHNlY3Rpb24gcG9pbnRlciBpbnN0ZWFkIG9mCgliZmQgcG9pbnRlci4gIFByaW50IHNlY3Rpb24gaWQgaW5zdGVhZCBvZiBiZmQgcG9pbnRlciBmb3IgbG9jYWwKCXN5bXMuICBQcmVmaXggYWRkZW5kIHdpdGggYCsnIGZvciBnbG9iYWwgc3ltcyBhcyB3ZWxsIGFzIGxvY2FsLgoJQ29ycmVjdCBjYWxjdWxhdGlvbiBvZiBuYW1lIGNvbXBvbmVudCBsZW5ndGhzLgoJKGVsZjY0X2hwcGFfY2hlY2tfcmVsb2NzKTogVXBkYXRlIGNhbGwgdG8gZ2V0X2R5bl9uYW1lLgoKCUZyb20gRGF2aWQgSHVnZ2lucy1EYWluZXMgIDxkaGRAbGludXhjYXJlLmNvbT4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFVwZGF0ZSBjYWxscyBoZXJlIHRvby4KCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX2NoZWNrX3JlbG9jcyk6IEZpeCBzb21lIHdhcm5pbmdzLgoJKGVsZjY0X2hwcGFfbW9kaWZ5X3NlZ21lbnRfbWFwKTogTGlrZXdpc2UuCgoyMDAwLTA3LTExICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoYmZkX2VsZl9nZXRfc2lnbl9leHRlbmRfdm1hKTogUmV0dXJuIHRlbmRlbmN5IG9mIFZNQQoJYWRkcmVzc2VzIHRvIGJlICJuYXR1cmFsbHkiIHNpZ24gZXh0ZW5kZWQuICBSZXR1cm4gLTEgaWYgdW5rbm93bi4KCSogYmZkLWluLmggKGJmZF9lbGZfZ2V0X3NpZ25fZXh0ZW5kX3ZtYSk6IEFkZCBkZWNsYXJhdGlvbi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0xMSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZWNvZmZzd2FwLmggKGVjb2ZmX2dldF9vZmYsIGVjb2ZmX3B1dF9vZmYpOiBBZGQgRUNPRkZfU0lHTkVEXzMyCglhbmQgRUNPRl9TSUdORURfNjQgdG8gbGlzdCB3YXlzIHRvIGV4dHJhY3QgYW4gb2Zmc2V0LgoJKGVjb2ZmX3N3YXBfZmRyX2luLCBlY29mZl9zd2FwX2Zkcl9vdXQsIGVjb2ZmX3N3YXBfcGRyX2luLAoJZWNvZmZfc3dhcF9wZHJfb3V0LCBlY29mZl9zd2FwX2V4dF9pbiwgZWNvZmZfc3dhcF9leHRfb3V0KToKCVVwZGF0ZS4KCSogZWxmNjQtbWlwcy5jIChFQ09GRl9TSUdORURfNjQpOiBEZWZpbmUgaW5zdGVhZCBvZiBFQ09GRl82NC4KCSogZWxmMzItbWlwcy5jIChFQ09GRl9TSUdORURfMzIpOiBEZWZpbmUgaW5zdGVhZCBvZiBFQ09GRl8zMi4KCjIwMDAtMDctMTEgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogVXNlIGJmZF9zZXRfc3RhcnRfYWRkcmVzcyBhbmQgbm90CgliZmRfZ2V0X3N0YXJ0X2FkZHJlc3MuCgkoZWxmX3N3YXBfZWhkcl9pbik6IFNpZ24gZXh0ZW5kIGVfZW50cnkgd2hlbiBhcHBsaWNhYmxlLgoJKGVsZl9zd2FwX2VoZHJfb3V0KTogRGl0dG8uCgoyMDAwLTA3LTEwICBBbGV4YW5kZXIgQWdhbmljaGV2ICA8QUFnYW5pY2hldkBoeXBlcmNvbS5jb20+CgoJKiBhcmNodXJlcy5jIChiZmRfZGVmYXVsdF9zY2FuKTogQWRkIHNldCBvZiBiZmRfbWFjaF8gY2FzZXMgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgYmludXRpbHMuCgoyMDAwLTA3LTEwICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChiZmRfbWFrZV9zZWN0aW9uX2FueXdheSk6IFN0YXJ0IHNlY3Rpb25faWQgYXQgMHgxMC4KCShTVERfU0VDVElPTik6IEF2b2lkIG5lZ2F0aXZlIGlkcywgaW5zdGVhZCB1c2UgMCB0byAzLgoKCUZyb20gUnlhbiBCcmFkZXRpY2ggIDxyYnJhZGV0aWNoQHVzd2VzdC5uZXQ+CgkqIGR3YXJmMS5jIChwYXJzZV9kaWUpOiBDdXJlIHNpZ25lZC91bnNpZ25lZCBjaGFyIHdhcm5pbmdzLgoJKHBhcnNlX2xpbmVfdGFibGUpOiBEaXR0by4KCShfYmZkX2R3YXJmMV9maW5kX25lYXJlc3RfbGluZSk6IERpdHRvLgoJKiBzeW1zLmMgKGNtcGluZGV4ZW50cnkpOiBSZW1vdmUgZXh0cmEgYConIGZyb20gcGFyYW1zLgoKMjAwMC0wNy0wOSAgS291bmRpbnlhIEsgIDxra0BkZGVvcmcuc29mdC5uZXQ+CgoJKiBlbGYzMi1taXBzLmMgKHNvcnRfZHluYW1pY19yZWxvY3MpOiBOZXcgRnVuY3Rpb24uCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IENhbGwgc29ydF9keW5hbWljX3JlbG9jcwoJdmlhIHFzb3J0IHRvIHNvcnQgdGhlIGR5bmFtaWMgcmVsb2NhdGlvbnMgaW4gaW5jcmVhc2luZyByX3N5bW5keAoJdmFsdWUuCgoyMDAwLTA3LTA5ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmNjQtaHBwYS5jIChlbGY2NF9ocHBhX2R5bl9oYXNoX3RhYmxlX2luaXQpOiBBZGQKCUFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGFyZ3MuCgkoZ2V0X29wZCk6IExpa2V3aXNlLgoJKGdldF9wbHQpOiBMaWtld2lzZS4KCShnZXRfZGx0KTogTGlrZXdpc2UuCgkoZ2V0X3N0dWIpOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKGVsZjY0X2hwcGFfbGlua19vdXRwdXRfc3ltYm9sX2hvb2spOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2NoZWNrX3JlbG9jcyk6IERlbGV0ZSB1bnVzZWQgdmFyLgoJKGVsZjY0X2hwcGFfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9maW5hbGl6ZV9vcGQpOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2ZpbmFsaXplX2R5bnJlbG9jKTogTGlrZXdpc2UuCgkoZWxmNjRfaHBwYV9tb2RpZnlfc2VnbWVudF9tYXApOiBMaWtld2lzZS4KCShlbGY2NF9ocHBhX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogQWRkCglBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBhcmdzLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KCShlbGZfaHBwYV9yZWNvcmRfc2VnbWVudF9hZGRycyk6IEFkZCBwYXJldGhlc2VzLgoJKGVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBDb25zdGlmeSBkeW5fbmFtZS4KCglGcm9tICBEYXZpZCBIdWdnaW5zLURhaW5lcyAgPGRoZEBsaW51eGNhcmUuY29tPgoJKiBjb25maWcuYmZkOiBBZGQgaHBwYSo2NCotKi1saW51eC1nbnUgNjQtYml0IHRhcmdldCwgYW5kCglyZWFycmFuZ2UgY2FzZSBzdGF0ZW1lbnQgc28gdGhhdCBpdCBnZXRzIHByZWZlcnJlZCB0byAzMi1iaXQgb25lcy4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IFVzZQoJYXNlY3Rpb24tPmlkIGluc3RlYWQgb2YgYWRkcmVzcyBvZiBhc2VjdGlvbiBzdHJ1Y3R1cmUuCgkoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogTGlrZXdpc2UuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFVzZSBqdXN0IG9uZSBzdHViIHNlY3Rpb24KCWZvciAuaW5pdCogYW5kIC5maW5pKi4KCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IE1hc2sgcG9pbnRlcnMKCWFuZCBhZGRlbmRzIHVzZWQgaW4gc3R1YiBuYW1lcyB0byAzMiBiaXRzLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IExpa2V3aXNlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IERvbid0IHN1bSBhZGRlbmQKCXR3aWNlIGZvciBSX1BBUklTQ19HUFJFTDY0LiAgVXNlIGJmZF9wdXRfMzIgZm9yIFJfUEFSSVNDX1BDUkVMMzIsCglub3QgYmZkX3B1dF82NC4gIEZpeCBtaW5vciBjb21tZW50IHR5cG8gYW5kIGZvcm1hdHRpbmcuCgoJQ2hhbmdlcyB0byBjcmVhdGUgbXVsdGlwbGUgbGlua2VyIHN0dWJzLCBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5CgliZWZvcmUgdGhlIHNlY3Rpb24gd2hlcmUgdGhleSBhcmUgcmVxdWlyZWQuCgkqIGVsZjMyLWhwcGEuYzogRG9uJ3QgaW5jbHVkZSBocHBhX3N0dWJzLmguCgkoZWxmMzJfaHBwYV9zdHViX2hhc2hfZW50cnkpOiBBZGQgYSBwb2ludGVyIHRvIHRoZSBzdHViIHNlY3Rpb24uCgkoZWxmMzJfaHBwYV9zdHViX2hhc2hfdGFibGUpOiBEZWxldGUuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfZW50cnkpOiBEZWxldGUuCgkoZWxmMzJfaHBwYV9saW5rX2hhc2hfdGFibGUpOiBVc2UgcGxhaW4gYmZkX2hhc2hfdGFibGUgZm9yCglzdHViX2hhc2hfdGFibGUsIGFuZCBzdG9yZSB0aGUgc3RydWN0IGhlcmUgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgoJRGVsZXRlIG91dHB1dF9zeW1ib2xfY291bnQuICBBZGQgb2Zmc2V0IGFycmF5LiAgQ2hhbmdlCglnbG9iYWxfdmFsdWUgdG8gYSBiZmRfdm1hLgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX2xvb2t1cCk6IFVzZSB0YWJsZSBpbnN0ZWFkIG9mIHRhYmxlLT5yb290LgoJKGVsZjMyX2hwcGFfc3R1Yl9oYXNoX3RyYXZlcnNlKTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfbmFtZV9vZl9zdHViKTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX2xvb2t1cCk6IERlbGV0ZS4KCShlbGYzMl9ocHBhX2xpbmtfaGFzaF90cmF2ZXJzZSk6IERlbGV0ZS4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF90YWJsZV9pbml0KTogRGVsZXRlLgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogUGFzcyBpbnB1dCBzZWN0aW9uIGFuZCBvZmZzZXQgcmF0aGVyCgl0aGFuIGxvY2F0aW9uIGFuZCBjYWxjdWxhdGUgbG9jYXRpb24gaGVyZS4gIERvbid0IHBhc3MgbmFtZSBhcyBhbGwKCXN0dWJzIGFyZSBub3cgdGhlIHNhbWUgc2l6ZS4KCShlbGYzMl9ocHBhX3N0dWJfaGFzaF9uZXdmdW5jKTogSW5pdCBuZXcgZmllbGRzLgoJKGVsZjMyX2hwcGFfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IExpa2V3aXNlLCBhbmQgc3R1Yl9oYXNoX3RhYmxlCgl0b28uCgkoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IENhc3QgZW51bXMgdG8gaW50IGJlZm9yZQoJY29tcGFyaW5nIGFnYWluc3QgaW50cy4gIFJld3JpdGUgc3R1YiBoYW5kbGluZyBjb2RlLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IE1ha2Ugcl90eXBlIGFuZCByX3N5bW5keCB1bnNpZ25lZC4KCUNhc2UgZW51bXMgdG8gaW50IGJlZm9yZSBjb21wYXJpbmcgYWdhaW5zdCBpbnRzLiAgUmVtb3ZlCgliZmRfcmVsb2NfZGFuZ2Vyb3VzIGNhc2UuCgkoZWxmMzJfaHBwYV9idWlsZF9vbmVfc3R1Yik6IFJld3JpdGUuCgkoZWxmMzJfaHBwYV9zaXplX29uZV9zdHViKTogTmV3IGZ1bmN0aW9uLgoJKGVsZjMyX2hwcGFfYnVpbGRfc3R1YnMpOiBSZXdyaXRlLgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IFBhc3MgaW4gbGlua2VyIGNhbGwtYmFjayBmdW5jdGlvbnMuCglSZXdyaXRlIHN0dWItaGFuZGxpbmcgc3BlY2lmaWMgY29kZS4KCgkqIGVsZjMyLWhwcGEuaCAoZWxmMzJfaHBwYV9zaXplX3N0dWJzKTogVXBkYXRlIHByb3RvdHlwZS4KCgkqIGVsZjY0LWhwcGEuYyAoZWxmNjRfaHBwYV9keW5faGFzaF9lbnRyeSk6IEZpeCBhIGNvbW1lbnQgdHlwby4KCgkqIGhwcGFfc3R1YnMuaDogRGVsZXRlLgoJKiBNYWtlZmlsZS5hbSAoU09VUkNFX0hGSUxFUyk6IFJlbW92ZSBocHBhX3N0dWJzLmgKCShlbGYzMi1ocHBhLmxvKTogUmVtb3ZlIGhwcGFfc3R1YnMuaCBmcm9tIGRlcGVuZGVuY2llcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoJKiBlbGYtaHBwYS5oIChfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogSGFuZGxlIGVfbmxzZWwgYW5kCgllX25scnNlbC4KCgkqIGxpYmhwcGEuaCAoaHBwYV9maWVsZF9hZGp1c3QpOiBDb3JyZWN0IGVfbnNlbCBjYXNlLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBNZW50aW9uIHRoZSBvZmZzZXQKCWFuZCBzZWN0aW9uIG5hbWUgZm9yIGJmZF9yZWxvY19ub3RzdXBwb3J0ZWQgZXJyb3IgbWVzc2FnZS4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogUHJpbnQgcmVhc29ucyBmb3IgcmV0dXJuaW5nCgliZmRfcmVsb2Nfbm90c3VwcG9ydGVkLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIG91dHB1dF9iZmQuCgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUKCXVuZGVmaW5lZCB3ZWFrIHN5bWJvbHMgZm9yIGFsbCByZWxvY3MuCgkoZWxmMzJfaHBwYV9zaXplX29mX3N0dWIpOiBBZGp1c3QgY2FsY3VsYXRpb24gYnkgOCBzaW5jZSBicmFuY2gKCW9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIG9uZSBwYXN0IHRoZSBkZWxheSBzbG90LgoJKGVsZjMyX2hwcGFfc2l6ZV9zdHVicyk6IEFjY291bnQgZm9yIHJlbG9jIGFkZGVuZCB3aGVuIGNhbGN1bGF0aW5nCglicmFuY2ggZGVzdGluYXRpb24uICBQdXQgYWRkZW5kIGludG8gc3R1YiBuYW1lIHRvby4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogQWNjb3VudCBmb3IgcmVsb2MgYWRkZW5kIGFuZAoJYWRqdXN0IGJ5IDggd2hlbiBkZWNpZGluZyB3aGV0aGVyIGEgbGlua2VyIHN0dWIgaXMgbmVlZGVkLiAgUHV0CglhZGRlbmQgaW50byBzdHViIG5hbWUgYXMgZm9yIGFib3ZlLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2VsZl9yZWxvY2F0ZV9pbnNuKTogQ2hhbmdlIHNpZ25lZC91bnNpZ25lZCBvbgoJdmFyaW91cyBhcmdzIGFuZCB2YXJzLgoJKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIZXJlIHRvby4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBSZW5hbWUgaW5kZXggLT4gaW5keC4gIFVzZSBlX2luZHggZm9yCglpbm5lciBibG9jayB2YXIgdG8gYXZvaWQgc2hhZG93aW5nLgoKCSogZWxmMzItaHBwYS5oIChfYmZkX2VsZjMyX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiAgTWFrZSBgZmllbGQnIGFyZwoJdW5zaWduZWQuCgkqIGVsZjY0LWhwcGEuaCAoX2JmZF9lbGY2NF9ocHBhX2dlbl9yZWxvY190eXBlKTogRGl0dG8uCgkqIGVsZi1ocHBhLmggKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBEaXR0by4KCShlbGZfaHBwYV9mYWtlX3NlY3Rpb25zKTogUmVuYW1lIGxvY2FsIHZhciB0byBhdm9pZCBzaGFkb3dpbmcuCgoJKiBsaWJocHBhLmg6IENoYW5nZSBwcmFjdGljYWxseSBhbGwgdW5zaWduZWQgaW50cyB0byBwbGFpbiBpbnRzLgoJUmVtb3ZlIHRlc3RzIG9uIGdjYyB2ZXJzaW9uLiAgSW5zdGVhZCB1c2UgQVRUUklCVVRFX1VOVVNFRCBmb3IKCXByb3RvdHlwZXMuCgoJRnJvbSBSeWFuIEJyYWRldGljaCAgPHJicmFkZXRpY2hAdXN3ZXN0Lm5ldD4KCSogbGliaHBwYS5oIChocHBhX29wY29kZV90eXBlKTogTmV3IGVudW0gdG8gcmVwbGFjZSAjZGVmaW5lJ3MuCgkqIGVsZjMyLWhwcGEuYyAoZWxmMzJfaHBwYV9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IE1vZGlmeSB0bwoJc3VpdCBhYm92ZS4KCUZyb20gIERhdmlkIEh1Z2dpbnMtRGFpbmVzICA8ZGhkQGxpbnV4Y2FyZS5jb20+CgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBVcGRhdGUgdGhlIG9wY29kZSBjb25zdGFudHMKCXRvIHRoZSBuZXcgT1BfKiBvbmVzLgoKCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBDb25zb2xpZGF0ZSBmcmVlaW5nIG9uCgllcnJvciBleGl0LiAgQmFpbCBvdXQgZWFybGllciBvbiBwbGFiZWwgcmVsb2NzIHRoYXQgd2UgYXJlbid0CglpbnRlcmVzdGVkIGluLiAgRG9uJ3QgdGVsbCBlbGYzMl9ocHBhX3N0dWJfaGFzaF9sb29rdXAgdG8gY29weQoJc3RyaW5nLCBhbmQgdGhlbiBkb24ndCBmcmVlIG91ciBjb3B5LgoJKGVsZjMyX2hwcGFfYnVpbGRfb25lX3N0dWIpOiBNYWtlIGluc24gdW5zaWduZWQgaW50LgoKCSogbGliaHBwYS5oIChiZmRfaHBwYV9pbnNuMmZtdCk6IDIyIGJpdCBicmFuY2hlcyBhcmUgb25seQoJYXZhaWxhYmxlIHdpdGggQkwsIG5vdCBCRSBhbmQgQkxFLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2VsZl9yZWxvY2F0ZV9pbnNuKTogQWRkIHNvbWUgbW9yZSBleGFtcGxlCgljb2RlIGZvciBlbGYgYXJnIHJlbG9jcy4KCShlbGYzMl9ocHBhX2JmZF9maW5hbF9saW5rX3JlbG9jYXRlKTogUmVwbGFjZSBib29sZWFuIGlzX2xvY2FsCglhcmd1bWVudCB3aXRoIGVsZl9saW5rX2hhc2hfZW50cnkgaC4gIEhhbmRsZSB1bmRlZmluZWQgd2VhawoJc3ltYm9scy4gIE1vdmUgJGdsb2JhbCQgbG9va3VwIGZyb20gaGVyZS4uLgoJKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IC4uLnRvIGhlcmUuICBSZXR1cm4gY29ycmVjdCBlcnJvcgoJbWVzc2FnZSBmb3Igbm9uLWhhbmRsZWQgcmVsb2NzLgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogQ29ycmVjdGx5IHRlc3QgYnJhbmNoIHJhbmdlLiAgUHJldmlvdXMKCXdyb25nIHRlc3Qgd2FzIC0weDNmZmZmIHRvICsweDQwMDAwLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IFJfUEFSSVNDX0RJUjE3UiwKCVJfUEFSSVNDX0RJUjE3RiwgYW5kIFJfUEFSSVNDX0RJUjIxTCBhcmUgZm9yIGFic29sdXRlIGJyYW5jaGVzOwoJSGFuZGxlIHRoZW0gYXMgc3VjaC4KCShlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogRml4IGEgdHlwby4KCgkqIGxpYmhwcGEuaCAoR0VUX0ZJRUxELCBHRVRfQklULCBNQVNLLCBDQVRFTkFURSwgRUxFVkVOKTogRGVsZXRlLgoJKGFzc2VtYmxlXzMsIGFzc2VtYmxlXzYsIGFzc2VtYmxlXzEyLCBhc3NlbWJsZV8xNiwgYXNzZW1ibGVfMTZhLAoJYXNzZW1ibGVfMTcsIGFzc2VtYmxlXzIxKTogRGVsZXRlLgoJU3VwcGx5IGRlZmluZXMgZm9yIGFsbCA2NCBwb3NzaWJsZSBvcGNvZGVzLgoJKGJmZF9ocHBhX2luc24yZm10KTogQWRkIGJmZCBhcmd1bWVudCwgYW5kIHVzZSB0byBzZWxlY3Qgd2lkZSBtb2RlCglmb3JtYXRzLiAgSGFuZGxlIENPTUlDTFIuCgkoaHBwYV9yZWJ1aWxkX2luc24pOiBEZWxldGUgYmZkIGFyZ3VtZW50LiAgSGFuZGxlIGZvcm1hdHMgMTAsIC0xMSwKCS0xMCwgLTE2LCAxNiwgMjIuCgoJKiBlbGYzMi1ocHBhLmMgKGhwcGFfZWxmX3JlbG9jYXRlX2luc24pOiBDb21wbGV0ZSByZXdyaXRlLgoJKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBNYWpvciByZXdyaXRlLgoJKGVsZjMyX2hwcGFfYnVpbGRfb25lX3N0dWIpOiBNb2RpZnkgaHBwYV9lbGZfcmVsb2NhdGVfaW5zbiBjYWxscwoJdG8gc3VpdC4KCShlbGYzMl9ocHBhX3NpemVfc3R1YnMpOiBEb24ndCBmcmVlIHN0dWJfbmFtZSB0d2ljZS4gIFJlYWQgaW4gYWxsCgl0aGUgbG9jYWwgc3ltcyAtIGRpZCB0aGlzIGNvZGUgZ2V0IGRlbGV0ZWQgYWNjaWRlbnRhbGx5PyAgSWdub3JlCgl1bmRlZmluZWQgYW5kIHVuZGVmd2VhayBzeW1zLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGluayk6IE1vdmUgaHBwYV9pbmZvIHRvIG91dGVybW9zdAoJYmxvY2suICBVc2UgaXQgaW5zdGVhZCBvZiBlbGY2NF9ocHBhX2hhc2hfdGFibGUgKGluZm8pLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBVc2UgaHBwYV9pbmZvIGluc3RlYWQgb2YKCWVsZjY0X2hwcGFfaGFzaF90YWJsZSAoaW5mbykuCgoJKiBsaWJocHBhLmggKHJlX2Fzc2VtYmxlXzMsIHJlX2Fzc2VtYmxlXzEyLCByZV9hc3NlbWJsZV8xNiwKCXJlX2Fzc2VtYmxlXzE3LCByZV9hc3NlbWJsZV8yMSwgcmVfYXNzZW1ibGVfMjIpOiBEb24ndCBtYXNrIGluc24uCgkoaHBwYV9yZWJ1aWxkX2luc24pOiBNYXNrIGltbWVkaWF0ZSBiaXRzIGhlcmUgaW5zdGVhZC4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IE1hc2sgaGVyZSB0b28uCgoyMDAwLTA3LTA4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogc2VjdGlvbi5jIChzdHJ1Y3Qgc2VjKTogQWRkIGlkIGZpZWxkLiAgVGlkeSBjb21tZW50IGZvcm1hdHRpbmcuCgkoYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkpOiBTZXQgaWQuCgkoU1REX1NFQ1RJT04pOiBJbml0IGlkIHRvby4KCUNoYW5nZSBDT05TVCB0byBjb25zdCB0aHJvdWdob3V0LgoJKiBhcmNodXJlcy5jIChiZmRfYXJjaF9pbmZvKTogVGlkeSBjb21tZW50LgoJKGJmZF9hcmNoX2xpc3QpOiBDaGFuZ2UgYSBDT05TVCB0byBjb25zdC4KCSogbGliYmZkLWluLmg6IFRpZHkgY29tbWVudHMgYW5kIHJlcGxhY2UgQ09OU1Qgd2l0aCBjb25zdC4KCSogZWxmLWJmZC5oOiBMaWtld2lzZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogbGliY29mZi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNy0wNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBhcmNoaXZlLmMgKF9iZmRfd3JpdGVfYXJjaGl2ZV9jb250ZW50cyk6IEFkZCBhbiBpbmZvcm1hdGl2ZQoJY29tbWVudC4KCjIwMDAtMDctMDYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogc3JlYy5jOiBGaXggZm9ybWF0dGluZy4KCjIwMDAtMDYtMDUgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogTUFJTlRBSU5FUlM6IG5ldwoKMjAwMC0wNy0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogRG8gbm90IGlnbm9yZSB0aGUgc3ltYm9sCgl2YWx1ZSBvZiBQQy1yZWxhdGl2ZSBvZmZzZXRzLgoKMjAwMC0wNy0wMyAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoYWxwaGFfZWxmX3NpemVfaW5mbyk6IE5ldy4KCShlbGZfYmFja2VuZF9zaXplX2luZm8pOiBEZWZpbmUgdG8gYWxwaGFfZWxmX3NpemVfaW5mby4KCSogZWxmY29kZS5oIChlbGZfc2l6ZV9pbmZvKTogQ2hhbmdlIGhhc2ggYnVja2V0IHNpemUgdG8gNC4KCjIwMDAtMDctMDMgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmMzItbWlwcy5jOiBJbmNsdWRlIGVsZjMyLXRhcmdldC5oIGFnYWluIGZvciB0aGUgdHJhZGl0aW9uYWwKCU1JUFMgdGFyZ2V0cy4KCjIwMDAtMDctMDMgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogZWxmMzItYXZyLmMgKGJmZF9lbGYzMl9iZmRfcmVsb2NfdHlwZV9sb29rdXApOgoJQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGFyZ3VtZW50cyB0byBhdm9pZCB3YXJuaW5ncy4KCShhdnJfaW5mb190b19ob3d0b19yZWxhKTogTGlrZXdpc2UuCgkoZWxmMzJfYXZyX2djX21hcmtfaG9vayk6IExpa2V3aXNlLgoJKGVsZjMyX2F2cl9nY19zd2VlcF9ob29rKTogTGlrZXdpc2UuCgkoZWxmMzJfYXZyX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDctMDMgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBjb2ZmbGluay5jIChfYmZkX2NvZmZfd3JpdGVfZ2xvYmFsX3N5bSk6IFR1cm4gYSB3ZWFrIHN5bWJvbCBpbnRvCglhbiBleHRlcm5hbCBzeW1ib2wgZm9yIGEgbm9uLXNoYXJlZCwgbm9uLXJlbG9jYXRhYmxlIGxpbmsuCgoyMDAwLTA3LTAzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogY29mZmxpbmsuYyAoSVNfRVhURVJOQUwpOiBOZXcgbWFjcm86IFJldHVybiB0cnVlIGlmIHRoZSBzeW1ib2wKCWlzIGFuIGV4dGVybmFsIHN5bWJvbC4KCShJU19XRUFLX0VYVEVSTkFMKTogTmV3IG1hY3JvOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3ltYm9sIGlzIGEgd2VhawoJZXh0ZXJuYWwgc3ltYm9sLgoKMjAwMC0wNy0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiByZWxvYzE2LmM6IEZpeCBmb3JtYXR0aW5nLgoKMjAwMC0wNy0wMSAgS291bmRpbnlhIEsgIDxra0BkZGVvcmcuc29mdC5uZXQ+CgoJKiBjb25maWcuYmZkOiBDaGFuZ2UgdGFyZ19kZWZ2ZWMgYW5kIHRhcmdfc2VsdmVjcyBmb3IgbWlwcyotKi1zeXN2NCoKCXRvIGFkZCBhIG5ldyB0YXJnZXQgZm9yIHRyYWRpdGlvbmFsIG1pcHMgaS5lCgliZmRfZWxmMzJfdHJhZGJpZ21pcHNfdmVjIGFuZCBiZmRfZWxmMzJfdHJhZGxpdHRsZW1pcHNfdmVjLgoJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX3RyYWRiaWdtaXBzX3ZlYyk6IERlY2xhcmUgYW5kIHB1dCBpbgoJYmZkX3RhcmdldF92ZWN0b3IuCgkoYmZkX2VsZjMyX3RyYWRsaXR0bGVtaXBzX3ZlYyk6IExpa2V3aXNlLgoJKiBlbGZ4eC10YXJnZXQuaDogQWRkIG1hY3JvIElOQ0xVREVEX1RBUkdFVF9GSUxFIHdoaWNoIGlzIG1vcmUgYSB0ZXN0Cgl0byBzZWUgdGhhdCBlbGZOTl9iZWQgZG9lcyBub3QgZ2V0IHJlZGVmaW5lZCBldmVuIGlmIHRoZSB0YXJnZXQgZmlsZQoJaXMgaW5jbHVkZWQgdHdpY2UgZm9yIGEgY2hpcC4gU2VlIGVsZjMyLW1pcHMuYy4KCjIwMDAtMDctMDEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBNYWtlZmlsZS5hbSAoREVQKTogRml4IDIwMDAtMDYtMjIuICBncmVwIGFmdGVyIHJ1bm5pbmcgZGVwLnNlZAoJKENMRUFORklMRVMpOiBBZGQgREVQQS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA2LTMwICBESiBEZWxvcmllICA8ZGpAY3lnbnVzLmNvbT4KCgkqIHBlaWNvZGUuaCAoY29mZl9zd2FwX2ZpbGVoZHJfaW4pOiBjYW4ndCB1c2UgZV9tYWdpYyBiZWNhdXNlIHdlCgljYW4ndCBhc3N1bWUgdGhlIFBFIGhlYWRlciBpcyBhdCAweDgwLgoKMjAwMC0wNi0yOSAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIHN5bXMuYyAoX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUpOiBVc2UgSVNfQUJTT0xVVEVfUEFUSC4KCjIwMDAtMDYtMjggIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBnbzMyc3R1Yi5oOiBVcGRhdGUgc3R1Yi4KCjIwMDAtMDYtMjYgIE1hcmVrIE1pY2hhbGtpZXdpY3ogIDxtYXJla21AbGludXgub3JnLnBsPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfYXZyNSk6IERlZmluZS4KCSogYmZkLWluMi5oIChiZmRfbWFjaF9hdnI1KTogRGVmaW5lLgoJKiBjcHUtYXZyLmMgKGFyY2hfaW5mb19zdHJ1Y3QpOiBSZW5hbWUgYmZkX21hY2hfYXZyNCB0bwoJYmZkX21hY2hfYXZyNSwgYWRkIGJmZF9tYWNoX2F2cjQuICBVcGRhdGUgY29tbWVudHMuCgkoY29tcGF0aWJsZSk6IFVwZGF0ZSBjb21tZW50LiAgQWRkIG1pc3NpbmcgdGVzdC4KCSogZWxmMzItYXZyLmMgKGF2cl9maW5hbF9saW5rX3JlbG9jYXRlKTogU3VwcG9ydCA4SyB3cmFwCglmb3IgYXZyMiBhbmQgYXZyNC4gIFNpbXBsaWZ5IDhLIHdyYXAgY29kZS4KCShiZmRfZWxmX2F2cl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogUmVjb2duaXplIGJmZF9tYWNoX2F2cjUuCgkoZWxmMzJfYXZyX29iamVjdF9wKTogUmVjb2duaXplIEVfQVZSX01BQ0hfQVZSNS4KCjIwMDAtMDYtMjYgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1oODMwMC5jOiBGaXggZm9ybWF0dGluZy4KCSogY3B1LWg4MzAwLmM6IExpa2V3aXNlLgoKMjAwMC0wNi0yNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBQcmludCBgKGxvY2FsKScKCWZvciBsb2NhbCBzeW1ib2xzIHdob3NlIG5hbWVzIGFyZSB1bmtub3duLgoKMjAwMC0wNi0yMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIE1ha2VmaWxlLmFtIChERVApOiBncmVwIGZvciBsZWFkaW5nIGAvJyBpbiBERVAxLCBhbmQgZmFpbCBpZiB3ZQoJZmluZCBvbmUuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBkb2MvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA2LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmN5LgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCjIwMDAtMDYtMjAgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IE1hcCB0byB0aGUgbmV3IGZ1bmN0aW9uLgoKMjAwMC0wNi0yMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGFyY2hpdmUuYyAobm9ybWFsaXplKTogQ29ycmVjdCBwb2ludGVyIGNvbXBhcmlzb24gd2hlbiBjaGVja2luZwoJZm9yIGJhY2tzbGFzaGVzLgoJKGJmZF9ic2RfdHJ1bmNhdGVfYXJuYW1lKTogTGlrZXdpc2UuCgkoYmZkX2dudV90cnVuY2F0ZV9hcm5hbWUpOiBMaWtld2lzZS4KCjIwMDAtMDYtMjAgIFVsZiBDYXJsc3NvbiAgPHVsZmNAZW5nci5zZ2kuY29tPgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX29ial90ZGF0YSk6IERlZmluZSBwZXIgQkZEIElyaXggNSB2aXJ0dWFsCglzZWN0aW9ucyBlbGZfe3RleHQsZGF0YX1fe3NlY3Rpb24sc3ltYm9sfS4KCSogZWxmMzItbWlwcy5jOiBtaXBzX2VsZl97dGV4dCxkYXRhfV97c2VjdGlvbixzeW1ib2x9eyxfcHRyfTogUmVtb3ZlLgoJKF9iZmRfbWlwc19lbGZfaGlkZV9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wpOiBNYXAgdG8gdGhlIG5ldyBmdW5jdGlvbi4KCShfYmZkX21pcHNfZWxmX2FkZF9zeW1ib2xfaG9vayk6IENoYW5nZSB0byB1c2UgbmV3IHBlciBCRkQKCWRlZmluaXRpb25zIG9mIG1pcHNfZWxmX3t0ZXh0LGRhdGF9X3tzZWN0aW9uLHN5bWJvbH0uCgkobWlwc19lbGZfbG9jYWxfcmVsb2NhdGlvbl9wKTogVHJ5IHRvIGZpbmQgdGhlIGRpcmVjdCBzeW1ib2wKCWJhc2VkIG9uIG5ldyBjaGVja19mb3JjZWQgYXJndW1lbnQuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBVc2UgbmV3IHZlcnNpb24gb2YKCW1pcHNfZWxmX2xvY2FsX3JlbG9jYXRpb25fcC4KCShtaXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkobWlwc19lbGZfc29ydF9oYXNoX3RhYmxlKTogT25seSBhc3NlcnQgdGhhdCBoYXZlIGVub3VnaCBHT1QKCXNwYWNlLgoJKG1pcHNfZWxmX2dvdDE2X2VudHJ5KTogTWF0Y2ggYWxsIDMyIGJpdHMgdG8gdGhlIGV4aXN0aW5nIEdPVAoJZW50cnkgaWYgdGhlIHJlbG9jYXRpb24gYmFzZWQgb24gdGhlIG5ldyBleHRlcm5hbCBhcmd1bWVudC4KCShtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19yZWxvY2F0aW9uKTogQXNzZXJ0IHRoYXQgd2UgaGF2ZSBhCglzZWN0aW9uIGNvbnRlbnRzIGFsbG9jYXRlZCB3aGVyZSB3ZSBjYW4gc3dhcCBvdXQgdGhlIGR5bmFtaWMKCXJlbG9jYXRpb25zLgoJKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogRmluZCB0aGUgcmVhbCBoYXNoLXRhYmxlIGVudHJ5Cgljb3JyZWN0bHkgYnkgdXNpbmcgaC0+cm9vdC5yb290LnR5cGUuICBPbmx5IGNyZWF0ZSBhIGR5bmFtaWMKCXJlbG9jYXRpb24gZW50cnkgaWYgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIGEgc2hhcmVkIGxpYnJhcnkuCglDcmVhdGUgYW4gZXh0ZXJuYWwgR09UIGVudHJ5IGZvciB0aGUgR09UMTYgcmVsb2NhdGlvbiBpZiB0aGUKCXN5bWJvbCB3YXMgZm9yY2VkIGxvY2FsLgoJKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgYXNzZXJ0IHRoZXJlIGlzIGEKCWR5bmFtaWMgaW5kZXggaWYgdGhlIHN5bWJvbCB3YXMgZm9yY2VkIGxvY2FsLgoKMjAwMC0wNi0yMCAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgoKCSogZWxmMzItbWlwcy5jOiBGaXggdHlwb3MgaW4gY29tbWVudHMuCgoyMDAwLTA2LTE5ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIHJzNjAwMC1jb3JlLmM6IFdyYXAgZGVmaW5pdGlvbiBvZiBgdW5pb24gVm1JbmZvJyB3aXRoaW4gI2lmZGVmCglDT1JFX1ZFUlNJT05fMS4KCjIwMDAtMDYtMTggIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogTWFrZWZpbGUuaW4sIGJmZC1pbjIuaCwgbGliYmZkLmgsIGNvbmZpZ3VyZTogUmVidWlsZC4KCSogTWFrZWZpbGUuYW0gKEFMTF9NQUNISU5FUywgQUxMX01BQ0hJTkVTX0NGSUxFUywgQkZEMzJfQkFDS0VORFMsCglCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgNjhoYzEyLCA2OGhjMTEgZmlsZXMuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjMyX202OGhjMTJfdmVjKTogUmVjb2duaXplLgoJKGJmZF9lbGYzMl9tNjhoYzExX3ZlYyk6IExpa2V3aXNlLgoJKiBjb25maWcuYmZkICh0YXJnX2NwdSk6IFJlY29nbml6ZSA2OGhjMTIgYW5kIDY4aGMxMS4KCVN1cHBvcnRzIDY4aGMxMSAmIDY4aGMxMiAgYXQgdGhlIHNhbWUgdGltZS4KCSogdGFyZ2V0cy5jIChiZmRfZWxmMzJfbTY4aGMxMl92ZWMpOiBEZWNsYXJlIGFuZCBwdXQgaW4KCWJmZF90YXJnZXRfdmVjdG9yLgoJKGJmZF9lbGYzMl9tNjhoYzExX3ZlYyk6IExpa2V3aXNlLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogUmVjb2duaXplIGJmZF9hcmNoX202OGhjMTIgYW5kIDY4aGMxMS4KCSogYXJjaHVyZXMuYyAoYmZkX202OGhjMTJfYXJjaCk6IERlZmluZSBhbmQgcmVnaXN0ZXIgaW4gZ2xvYmFsIGxpc3QKCShiZmRfbTY4aGMxMV9hcmNoKTogTGlrZXdpc2UuCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19NNjhIQzExX0hJOCwgQkZEX1JFTE9DX002OEhDMTFfTE84LAoJQkZEX1JFTE9DX002OEhDMTFfM0IpOiBEZWZpbmUuCgkqIGNwdS1tNjhoYzEyLmMsIGVsZjMyLW02OGhjMTIuYzogTmV3IGZpbGVzIGZvciA2OGhjMTIgc3VwcG9ydC4KCSogY3B1LW02OGhjMTEuYywgZWxmMzItbTY4aGMxMS5jOiBOZXcgZmlsZXMgZm9yIDY4aGMxMSBzdXBwb3J0LgoKMjAwMC0wNi0xOCAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGZfYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIGluZm8gYXJndW1lbnQgdG8KCWVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sLgoJKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZjY0LWlhNjQuYyAoZWxmNjRfaWE2NF9oYXNoX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogTGlrZXdpc2UuCgkoZWxmX2xpbmtfYXNzaWduX3N5bV92ZXJzaW9uKTogTGlrZXdpc2UuCgoyMDAwLTA2LTE4ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb2ZmLWkzODYuYyAoY29mZl9pMzg2X3JlbG9jKTogRG9uJ3QgcmV0dXJuIGluIGNhc2Ugb2YKCW91dHB1dF9iZmQgPT0gKGJmZCAqKSBOVUxMIGlmIENPRkZfV0lUSF9QRSBpcyBkZWZpbmVkLgoJQ29tcGVuc2F0ZSBQRSByZWxvY2F0aW9ucyB3aGVuIGxpbmtpbmcgd2l0aCBub24tUEUgb2JqZWN0CglmaWxlcyB0byBnZW5lcmF0ZSBhIG5vbi1QRSBleGVjdXRhYmxlLgoKMjAwMC0wNi0xNyAgVWxmIENhcmxzc29uICA8dWxmY0BlbmdyLnNnaS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogRXhwbGljaXRseSB3cml0ZQoJR09UIGVudHJpZXMgaWYgd2UncmUgZG9pbmcgYSBzdGF0aWMgbGluayBvciAtQnN5bWJvbGljIGxpbmsuCgoyMDAwLTA2LTE1ICBVbGYgQ2FybHNzb24gIDx1bGZjQGVuZ3Iuc2dpLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRqdXN0X3JlbG9jcyk6IENoZWNrIGZvciBhbmQgY2FsbCBiYWNrZW5kCglzcGVjaWZpZmljIHN3YXBfcmVsb2Nfe2luLG91dH0gYW5kIHN3YXBfcmVsb2NhX3tpbixvdXR9IGlmCglhdmFpbGFibGUuCgkoZWxmX2xpbmtfb3V0cHV0X3JlbG9jcyk6IExpa2V3aXNlLgoJKGVsZl9yZWxvY19saW5rX29yZGVyKTogTGlrZXdpc2UuCgoyMDAwLTA2LTE2ICBOaWNob2xhcyBEdWZmZWsgIDxuc2RAcmVkaGF0LmNvbT4KCgkqIGFyY2h1cmVzLmMgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSk6ICNkZWZpbmUgY29uc3RhbnRzIGZvcgoJUG93ZXJQYyBhbmQgUlM2MDAwIG1hY2hpbmUgbnVtYmVycy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6ICNpZmRlZiBYQ09GRjY0LCBzZXQgYXJjaAoJdG8gYmZkX2FyY2hfcG93ZXJwYyBpbnN0ZWFkIG9mIGJmZF9hcmNoX3JzNjAwMC4gIFJlZmVyIHRvIFBvd2VyUGMKCWFuZCBSUzYwMDAgbWFjaGluZSBudW1iZXJzIHVzaW5nICNkZWZpbmVkIGNvbnN0YW50cyBmcm9tCglhcmNodXJlcy5jLgoJKiBjcHUtcG93ZXJwYy5jIChhcmNoX2luZm9fc3RydWN0KTogUmVmZXIgdG8gUG93ZXJQYyBhbmQgUlM2MDAwCgltYWNoaW5lIG51bWJlcnMgdXNpbmcgI2RlZmluZWQgY29uc3RhbnRzIGZyb20gYXJjaHVyZXMuYy4gIEFkZAoJZW50cmllcyBmb3IgRUM2MDNlLCA2MzAsIEEzNSwgUlM2NElJLCBSUzY0SUlJLCA3NDAwLiAgU3BlY2lmeQoJNjQtYml0IHdvcmRzIGluIDYyMCBlbnRyeS4KCSogY3B1LXJzNjAwMC5jIChhcmNoX2luZm9fc3RydWN0KTogQ3JlYXRlIHdpdGggZW50cmllcyBmb3IgUlMxLAoJUlNDLCBhbmQgUlMyLgoJKGJmZF9yczYwMDBfYXJjaCk6IENoYW5nZSBkZWZhdWx0IG1hY2hpbmUgdG8gMCAoYmZkX21hY2hfcnM2aykuCgoyMDAwLTA2LTE2ICBOaWNob2xhcyBEdWZmZWsgIDxuc2RAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfbWtvYmplY3RfaG9vayk6IFNldCB4Y29mZl90ZGF0YS54Y29mZjY0LgoJKiBsaWJjb2ZmLWluLmggKHN0cnVjdCB4Y29mZl90ZGF0YSk6IERlZmluZSB4Y29mZjY0IGZpZWxkLgoJKiBsaWJjb2ZmLmggKHN0cnVjdCB4Y29mZl90ZGF0YSk6IERlZmluZSB4Y29mZjY0IGZpZWxkLgoKMjAwMC0wNi0xNiAgTmljaG9sYXMgRHVmZmVrICA8bnNkQHJlZGhhdC5jb20+CgoJKiBiZmQtaW4uaCAoYmZkX2ZhbWlseV9jb2ZmKTogRGVmaW5lLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmZnZW4uYyAoY29mZl9jb3VudF9saW5lbnVtYmVycywgY29mZl9zeW1ib2xfZnJvbSwKCWNvZmZfZmluZF9uZWFyZXN0X2xpbmUpOiBDaGVjayBDT0ZGbmVzcyB1c2luZyBiZmRfZmFtaWx5X2NvZmYoKQoJaW5zdGVhZCBvZiBiZmRfdGFyZ2V0X2NvZmZfZmxhdm91ci4KCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2ZpbmFsX2xpbmspOiBMaWtld2lzZS4KCSogY3B1LW5zMzJrLmMgKGRvX25zMzJrX3JlbG9jKTogRG9uJ3Qgc3RyY21wKCkgdGFyZ2V0IG5hbWUgdG8KCWV4Y2x1ZGUgWENPRkYgZmlsZXMuCgkqIHJlbG9jLmMgKGJmZF9wZXJmb3JtX3JlbG9jYXRpb24sIGJmZF9pbnN0YWxsX3JlbG9jYXRpb24pOgoJTGlrZXdpc2UuCgkqIHRhcmdldHMuYyAoZW51bSBiZmRfZmxhdm91cik6IEFkZCBiZmRfdGFyZ2V0X3hjb2ZmX2ZsYXZvdXIuCgkqIHhjb2ZmLXRhcmdldC5oIChUQVJHRVRfU1lNKTogVXNlIGJmZF90YXJnZXRfeGNvZmZfZmxhdm91ci4KCSogeGNvZmZsaW5rLmMgKFhDT0ZGX1hWRUNQKTogRGVsZXRlLgoJKGJmZF94Y29mZl9saW5rX3JlY29yZF9zZXQsIGJmZF94Y29mZl9pbXBvcnRfc3ltYm9sLAoJYmZkX3hjb2ZmX2V4cG9ydF9zeW1ib2wsIGJmZF94Y29mZl9saW5rX2NvdW50X3JlbG9jLAoJYmZkX3hjb2ZmX3JlY29yZF9saW5rX2Fzc2lnbm1lbnQsCgliZmRfeGNvZmZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogUmVwbGFjZSBYQ09GRl9YVkVDUCgpIHdpdGgKCWNoZWNrIGZvciBiZmRfdGFyZ2V0X3hjb2ZmX2ZsYXZvdXIuCgoyMDAwLTA2LTE2ICBOaWNob2xhcyBEdWZmZWsgIDxuc2RAcmVkaGF0LmNvbT4KCgkqIHJzNjAwMC1jb3JlLmM6IFN1cHBvcnQgNjQtYml0IGNvcmUgZmlsZXMsIHN1cHBvcnQgcHJlLTQuMyBjb3JlCglmaWxlcyBvbiBBSVggNC4zLgoJKHJlYWRfaGRyKTogTmV3IGZ1bmN0aW9uLgoJKHJzNjAwMGNvZmZfY29yZV9wKTogU3RvcmUgbXN0c2F2ZSBvciBfX2NvbnRleHQ2NCBzdHJ1Y3QgaW5zdGVhZAoJb2YgdHJ5aW5nIHRvIGV4dHJhY3QgaW5kaXZpZHVhbCByZWdpc3RlcnMuICBTZXQgYWJmZC0+YXJjaF9pbmZvCgl0byBtYXRjaCB0aGUgYXJjaGl0ZWN0dXJlIHRoYXQgY3JlYXRlZCB0aGUgY29yZSBmaWxlLgoJKHJzNjAwMGNvZmZfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBEZWxldGUuCgkqIHhjb2ZmLXRhcmdldC5oIChyczYwMDBjb2ZmX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogRGVsZXRlLgoKMjAwMC0wNi0xNCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogdm1zLW1pc2MuYyAoX2JmZF92bXNfbmV4dF9yZWNvcmQpOiBSZXR1cm4gLTEgaWYgUFJJVih2bXNfcmVjKQoJaXMgTlVMTC4KCjIwMDAtMDYtMTMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDYtMTMgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIHBlaWNvZGUuaCAocGVfSUxGX29iamVjdF9wKTogVXNlIFRBUkdFVF9MSVRUTEVfU1lNIGluc3RlYWQgb2YKCWFybXBlaV9saXR0bGVfdmVjLgoKMjAwMC0wNi0wOCAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoVkVSU0lPTik6IFVwZGF0ZSB0byBzaG93IHRoaXMgaXMgdGhlIENWUyBtYWlubGluZS4KCjIwMDAtMDYtMDcgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYzMi1kMTB2LmM6IEluY2x1ZGUgZWxmL2QxMHYuaAoJKGVudW0gcmVsb2NfdHlwZSk6IERlbGV0ZS4KCSogZWxmMzItZDMwdi5jOiBJbmNsdWRlIGVsZi9kMzB2LmgKCShlbnVtIHJlbG9jX3R5cGUpOiBEZWxldGUuCgoJKiBNYWtlZmlsZS5hbTogUnVuICJtYWtlIGRlcC1hbSIgdG8gcmVnZW5lcmF0ZSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaG93dG9fdGFibGUpOiBSZW1vdmUgRU1QVFlfSE9XVE9zLgoJKGVsZjMyX2kzODZfdnRpbmhlcml0X2hvd3RvLCBlbGYzMl9pMzg2X3Z0ZW50cnlfaG93dG8pOiBEZWxldGUgYW5kCgltb3ZlIEhPV1RPcyBpbnRvIGVsZl9ob3d0b190YWJsZS4KCShSXzM4Nl9zdGFuZGFyZCwgUl8zODZfZXh0X29mZnNldCk6IERlZmluZS4KCShSXzM4Nl9leHQsIFJfMzg2X3Z0X29mZnNldCwgUl8zODZfdnQpOiBEZWZpbmUuCgkoZWxmX2kzODZfcmVsb2NfdHlwZV9sb29rdXApOiBNb2RpZnkgY2FsY3VsYXRpb24gb2YgaW5kZXggaW50bwoJZWxmX2hvd3RvX3RhYmxlIHNpbmNlIHdlJ3ZlIHJlbW92ZWQgdGhlIHBhZGRpbmcuCgkoZWxmX2kzODZfaW5mb190b19ob3d0b19yZWwpOiBMaWtld2lzZS4KCShlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA2LTA2ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAc2VhZG9nLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoZWxmX2dyb2tfcHJfc3RhdHVzKTogRWxpbWluYXRlIHJlZmVyZW5jZSB0byBwcmdyZWdzZXRfdC4KCjIwMDAtMDYtMDUgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBEb24ndCBmbGFnCglhbiBlcnJvciB3aGVuIHNlZWluZyBhbiB1bmRlZmluZWQgc3ltYm9sIHdpdGggaGlkZGVuL2ludGVybmFsCglhdHRyaWJ1dGUuIEl0IGlzIGhhbmRsZWQgaW4gKl9yZWxvY2F0ZV9zZWN0aW9uICgpLgoKMjAwMC0wNi0wNSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfZml4X3N5bWJvbF9mbGFncyk6IEZvbGxvdyB0aGUgbGluayBmb3IgdGhlCglpbmRpcmVjdCBzeW1ib2wgZm9yIHRoZSBFTEZfTElOS19OT05fRUxGIGJpdC4KCShlbGZfbGlua19vdXRwdXRfZXh0c3ltKTogRG9uJ3Qgb3V0cHV0IHRoZSBpbmRpcmVjdCBzeW1ib2wgZXZlbgoJaWYgdGhlIEVMRl9MSU5LX05PTl9FTEYgYml0IGlzIHNldC4KCjIwMDAtMDYtMDEgIEouVC4gQ29ua2xpbiAgPGp0Y0ByZWRiYWNrLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGlbMzQ1Nl04Ni0qLW5ldGJzZGVsZiopOiBOZXcgdGFyZ2V0LgoJKGlbMzQ1Nl04Ni0qLW5ldGJzZGFvdXQqKTogTmV3IHRhcmdldC4KCShpWzM0NTZdODYtKi1uZXRic2QqKTogQWRkIGJmZF9lbGYzMl9pMzg2X3ZlYyB0byB0YXJnX3NlbHZlY3MuCgkoaVszNDU2XTg2LSotb3BlbmJzZCopOiBMaWtld2lzZS4KCjIwMDAtMDUtMzAgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHRyYWQtY29yZS5jOiBGcm9tIGhwdXgtY29yZS5jLCBpbmNsdWRlIDxkaXJlbnQuaD4gb3IKCTxzeXMvbmRpci5oPiB3aGVuIHBvc3NpYmxlLgoKMjAwMC0wNS0zMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIG9waW50bC5oIChfKFN0cmluZykpOiBFeHBsYWluIHdoeSBkZ2V0dGV4dCBpcyB1c2VkIGluc3RlYWQKCW9mIGdldHRleHQuCgoyMDAwLTA1LTMxICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGVsZi5jIChfYmZkX2VsZl9zbHVycF92ZXJzaW9uX3RhYmxlcyk6IENvcnJlY3QgcmVhZGluZyBvZiB2ZXJzaW9uCglkZWZpbml0aW9ucy4gIFdlIG11c3Qgbm90IGFzc3VtZSB0aGV5IGFyZSBzb3J0ZWQgaW4gdGhlIGZpbGUKCWFjY29yZGluZyB0byB0aGVpciBpbmRleCBudW1iZXJzLgoKMjAwMC0wNS0zMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZi1ocHBhLmg6IChlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogVXNlIGVfcnNlbCBmaWVsZAoJc2VsZWN0b3IgZm9yIFJfUEFSSVNDX1BDUkVMMTdSLiAgUl9QQVJJU0NfRElSMTdSIGFuZAoJUl9QQVJJU0NfRElSMTdGIGFyZSBmb3IgYWJzb2x1dGUgYnJhbmNoZXM7IEhhbmRsZSB0aGVtIGFzIHN1Y2guCgoyMDAwLTA1LTMwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY3B1LWk5NjAuYyAoc2Nhbl85NjBfbWFjaCk6IEFjY2VwdCA4MDk2MEtBLCA4MDk2MEtCLAoJODA5NjBDQSwgODA5NjBNQyBhcyB2YWxpZCBtYWNoaW5lIG5hbWVzLgoKMjAwMC0wNS0zMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IENsZWFyIHRoZQoJdmlzaWJpbGl0eSBiaXRzIGlmIHRoZSBzeW1ib2wgaXMgdW5kZWZpbmVkLiBDb3JyZWN0bHkgaGFuZGxlCgl3ZWFrIHVuZGVmaW5lZCBzeW1ib2xzIHdpdGggaGlkZGVuIGFuZCBpbnRlcm5hbCBhdHRyaWJ1dGVzLgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBBbHdheXMgdHVybiB0aGUKCXN5bWJvbCBpbnRvIGxvY2FsIGlmIGl0IGhhcyB0aGUgaGlkZGVuIG9yIGludGVybmFsIGF0dHJpYnV0ZS4KCjIwMDAtMDUtMjkgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBwcGNib290LmM6ICBBZGQgcGFja2VkIGF0dHJpYnV0ZSBpZiBjb21waWxpbmcgd2l0aCBHQ0MuCgoyMDAwLTA1LTI5ICBBbmF0b2x5IFZvcm9iZXkgIDxtZWxsb25AcG9ib3guY29tPgoKCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9pbml0KTogSW5pdGlhbGl6ZSBkeW5sb2NhbC4KCjIwMDAtMDUtMjYgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckBzZWFkb2cuY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChlbGZjb3JlX2dyb2tfcHJzdGF0dXMsIGVsZmNvcmVfZ3Jva19wc3RhdHVzLAoJZWxmY29yZV9ncm9rX3BzaW5mbyk6IEFkZCBjb2RlIHRvIGFsbG93IGRlYnVnZ2luZyBhIDMyLWJpdAoJY29yZWZpbGUgb24gYSA2NC1iaXQgKFNwYXJjIFNvbGFyaXMpIGhvc3QuICBBbHNvIGNsZWFuIHVwCglhIGZldyBvbGQgY29tbWVudHMuCgoyMDAwLTA1LTI2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogTWFrZWZpbGUuYW06IFVwZGF0ZSBkZXBlbmRlbmNpZXMgd2l0aCAibWFrZSBkZXAtYW0iCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogc3lzZGVwLmggKGdldHRleHQsIGRnZXR0ZXh0LCBkY2dldHRleHQsIHRleHRkb21haW4sCgliaW5kdGV4dGRvbWFpbik6IFJlcGxhY2UgZGVmaW5lcyB3aXRoIHRob3NlIGZyb20gaW50bC9saWJnZXR0ZXh0LmgKCXRvIHF1aWV0ZW4gZ2NjIHdhcm5pbmdzLgoKMjAwMC0wNS0yNiAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIGFvdXR4LmggKGZpbmRfbmVhcmVzdF9saW5lKTogVXNlIElTX0FCU09MVVRFX1BBVEguCgoJKiBhcmNoaXZlLmMgKG5vcm1hbGl6ZSwgYmZkX2JzZF90cnVuY2F0ZV9hcm5hbWUsCgliZmRfZ251X3RydW5jYXRlX2FybmFtZSkgW0hBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNXTogU3VwcG9ydAoJZmlsZSBuYW1lcyB3aXRoIGJhY2tzbGFzaGVzLgoKCSogY2FjaGUuYyAoYmZkX29wZW5fZmlsZSkgW19fTVNET1NfX106IERvbid0IHVubGluayB0aGUgZmlsZQoJYmVmb3JlIG9wZW5pbmcgaXQuCgoJKiBzeXNkZXAuaDogSW5jbHVkZSBmaWxlbmFtZXMuaC4KCjIwMDAtMDUtMjYgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBvcG5jbHMuYyAoYmZkX2Nsb3NlX2FsbF9kb25lKTogTWFzayBmaWxlIHBlcm1zIHdpdGggMDc3NyBub3QgMHg3NzcuCgoyMDAwLTA1LTI2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbGF4X3NlY3Rpb24pOiBOZXcuCgkoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IE9wdGltaXplIHRhaWwgY2FsbCBpbnRvIGJyYW5jaCBhbHdheXMKCWlmIHBvc3NpYmxlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoZWxmMzJfc3BhcmNfcmVsYXhfc2VjdGlvbik6IE5ldy4KCjIwMDAtMDUtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmNjQtc3BhcmMuYzogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGZ1bmN0aW9uIHBhcmFtZXRlcnMuCglSZW1vdmUgdW51c3VlZCB2YXJpYWJsZXMuCgkoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IENoYW5nZSByX3N5bW5keCB0eXBlIHRvIHVuc2lnbmVkIGxvbmcuCgkoc3BhcmM2NF9lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEZpeCBzaGFyZWQgbGlicmFyeSBjYXNlIGZyb20KCXByZXZpb3VzIGZpeCwgc28gdGhhdCBzaGFyZWQgbGlicyByZWFsbHkgZG9uJ3QgaW5mbHVlbmNlIHRhcmdldHMKCWV4dGVuc2lvbiBtYXNrIGFuZCBtZW1vcnkgbW9kZWwuCgoyMDAwLTA1LTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogQ2hlY2sKCWgtPnJvb3Qub3RoZXIgbm90IGgtPm90aGVyLgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogTGlrZXdpc2UuCgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IGEgdHlwby4KCjIwMDAtMDUtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGFsbG93IHRoZQoJdW5kZWZpbmVkIHN5bWJvbCB3aXRoIHRoZSBub24tZGVmYXVsdCB2aXNpYmlsaXR5IGF0dHJpYnV0ZXMuCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWkzNzAuYyAoaTM3MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbWNvcmUuYyAobWNvcmVfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1pYTY0LmMgKGVsZjY0X2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoyMDAwLTA1LTIyICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmNjQtaWE2NC5jIChpYTY0X2hvd3RvX3RhYmxlKTogQWRkIFBDUkVMNjBCLCBQQ1JFTDIxQkksCglQQ1JFTDIyLCBQQ1JFTDY0SS4gIFplcm8gc2l6ZSBvZiBzcGVjaWFsIHJlbG9jcy4KCShlbGY2NF9pYTY0X3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkoVVNFX0JSTCwgb29yX2JybCwgb29yX2lwKTogTmV3LgoJKGVsZjY0X2lhNjRfcmVsYXhfc2VjdGlvbik6IE5ldy4KCShlbGY2NF9pYTY0X2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBQQ1JFTDYwQiwgUENSRUwyMiwgUENSRUw2NEkuCgkoZWxmNjRfaWE2NF9pbnN0YWxsX3ZhbHVlKTogTGlrZXdpc2UsIHBsdXMgUENSRUwyMUJJLgoJKGVsZjY0X2lhNjRfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKGJmZF9lbGY2NF9iZmRfcmVsYXhfc2VjdGlvbik6IE5ldy4KCSogcmVsb2MuYyAoQkZEX1JFTE9DX0lBNjRfUENSRUwyMUJJKTogTmV3LgoJKEJGRF9SRUxPQ19JQTY0X3tQQ1JFTDIyLFBDUkVMNjBCLFBDUkVMNjRJfSk6IE5ldy4KCSogYmZkLWluMi5oLCBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMjIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gOiBBZGQgcGVpZ2VuLmxvIHRvIE1JUFMgUEUgdGFyZ2V0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0yMiAgTW9tY2hpbCBWZWxpa292ICA8dmVsY29AZmFkYXRhLmJnPgoKCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY192ZXJpZnlfZW5kaWFuX21hdGNoKTogQ29tcGFyZSBlbmRpYW5lc3MKCW9ubHkgaWYgaXQgaXMga25vd24gZm9yIGJvdGggaW5wdXQgYW5kIG91dHB1dCBiZmRzLiBTZXBhcmF0ZQoJZXJyb3IgbWVzc2FnZSBzdHJpbmdzIGFzIGluIHNvbWUgbGFuZ3VhZ2VzLCBpdCBtYXkgYmUgbmVjZXNzYXJ5Cgl0byBjaGFuZ2UgbW9yZSB0aGFuIG9uZSBwbGFjZSBpbiB0aGUgc3RyaW5nIHRvIGNoYW5nZSBiZXR3ZWVuCgknYmlnJyBhbmQgJ2xpdHRsZScuCgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogUmVtb3ZlIGlubGluZQoJZW5kaWFuZXNzIGNoZWNrcywgY2FsbCBfYmZkX2dlbmVyaWNfdmVyaWZ5X2VuZGlhbl9tYXRjaCgpIGluc3RlYWQuCgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IExpa2V3aXNlLgoKCSogZWxmMzItbWNvcmUuYyAobWNvcmVfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IExpa2V3aXNlLiBWZXJpZnkKCWVuZGlhbmVzcyBiZWZvcmUgY2hlY2tpbmcgYmZkIGZsYXZvdXJzLgoKMjAwMC0wNS0yMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19vdXRwdXRfZXh0c3ltKTogQ2xlYXIgdGhlIHZpc2liaWxpdHkKCWZpZWxkIGZvciBzeW1ib2xzIG5vdCBkZWZpbmVkIGxvY2FsbHkuCgoyMDAwLTA1LTE4ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogbGliaHBwYS5oIChyZV9hc3NlbWJsZV8zLCByZV9hc3NlbWJsZV8xMiwgcmVfYXNzZW1ibGVfMTYsCglyZV9hc3NlbWJsZV8xNywgcmVfYXNzZW1ibGVfMjEsIHJlX2Fzc2VtYmxlXzIyKTogRG9uJ3QgbWFzayBpbnNuLgoJKGhwcGFfcmVidWlsZF9pbnNuKTogTWFzayBpbW1lZGlhdGUgYml0cyBoZXJlIGluc3RlYWQuCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBNYXNrIGhlcmUgdG9vLgoKMjAwMC0wNS0xOCAgTW9tY2hpbCBWZWxpa292IDx2ZWxjb0BmYWRhdGEuYmc+CgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluaywgZWxmX2xpbmtfaW5wdXRfYmZkKTogV2hlbiBlbWl0aW5nCglyZWxvY3MgZm9yIGFuIGV4ZWN1dGFibGUsIGVuc3VyZSB0aGF0IHRoZXkgYXJlIHZpcnR1YWwgYWRkcmVzc2VzLgoKMjAwMC0wNS0xOCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY29uZmlnLmJmZCAoaHBwYSo2NCotKi1ocHV4MTEqKTogTmV3IHRhcmdldCB0cmlwbGV0LgoKMjAwMC0wNS0xNyAgUy4gQmhhcmFkd2FqIFlhZGF2YWxsaSAgPHNieUBzY3J1Z3MubGtnLmRlYy5jb20+CgkgICAgUmljayBHb3J0b24JICAgICAgICAgICAgPGdvcnRvbkBzY3J1Z3MubGtnLmRlYy5jb20+CgoJKiBlbGZsaW5rLmg6IEFkZCBlbWl0cmVsb2NhdGlvbnMgc3VwcG9ydDogd2hlbiBlbmFibGVkLCByZWxvY2F0aW9uCglpbmZvcm1hdGlvbiBhbmQgcmVsb2NhdGlvbiBzZWN0aW9ucyBhcmUgcHV0IGludG8gZmluYWwgb3V0cHV0CglleGVjdXRhYmxlcy4gIElmIHRoZSBlbWl0cmVsb2NhdGlvbnMgZmxhZyBpcyBzZXQsIGRvIHRoZSBmb2xsb3dpbmc6CgkoZWxmX2JmZF9maW5hbF9saW5rKTogRW1pdCByZWxvY2F0aW9uIHNlY3Rpb25zLgoJKGVsZl9saW5rX2lucHV0X2JmZCk6IENvbXB1dGUgcmVsb2NhdGlvbiBzZWN0aW9uIGNvbnRlbnRzLgoJKGVsZl9nY19zZWN0aW9ucyk6IERvbid0IGNsZWFuIHJlbG9jYXRpb24gc2VjdGlvbnMuCgoyMDAwLTA1LTE2ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIHNvbS5jIChzb21fZGVjb2RlX3N5bWNsYXNzKTogIFJlY29nbml6ZSB3ZWFrIHN5bWJvbHMuCgoyMDAwLTA1LTE2ICBTemFib2xjcyBTemFrYWNzaXRzIDxzemFrYUBGLVNlY3VyZS5jb20+CgoJKiBwZWlnZW4uYyAocGVfcHJpbnRfaWRhdGEpOiBVbmRvIHBhcnQgb2YgMjAwMC0wNS0xMiBjaGFuZ2UgdGhhdAoJcmVhZCBpZGF0YSBzZWN0aW9uIG9ubHkgZnJvbSBkYXRhb2ZmLgoJKHBlX3ByaW50X2VkYXRhKTogQ29ycmVjdGx5IGNoZWNrIGZvciB2YWxpZCBlYXRfbWVtYmVyLgoKMjAwMC0wNS0xNiAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbGF4X2RlbGV0ZV9ieXRlcyk6IEhhbmRsZSBSX1NIX1NXSVRDSDguCgoyMDAwLTA1LTE0ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnLmJmZCAoYXJtZWItKi1lbGYsIGFybSpiLSotbGludXgtZ251Kik6IE5ldyB0YXJnZXRzLgoKMjAwMC0wNS0xMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiAjaWZkZWYgQkZENjQgcnM2MDAwY29mZjY0X3ZlYwoKCSogcGVpZ2VuLmMgKHBlX3ByaW50X2lkYXRhKTogTG9vayBmb3IgLmlkYXRhIHNlY3Rpb24gYW5kIHByaW50CglpbmZvIGV2ZW4gaWYgZGF0YSBkaXJlY3RvcnkgaGFzIHplcm8gZW50cmllcy4gIFJlYWQgaWRhdGEgc2VjdGlvbgoJc3RhcnRpbmcgZnJvbSBkYXRhb2ZmLCBhbmQgYWRqdXN0IGFsbCBkYXRhIG9mZnNldHMgdG8gc3VpdC4gIENhc3QKCWFsbCBiZmRfdm1hIHZhcnMgdG8gdW5zaWduZWQgbG9uZyBiZWZvcmUgcGFzc2luZyB0byBmcHJpbnRmLgoJKiBwZWlnZW4uYyAocGVfcHJpbnRfZWRhdGEpOiBTaW1pbGFybHksIGxvb2sgZm9yIC5lZGF0YSBzZWN0aW9uCglhbmQgcHJpbnQgaW5mbyBldmVuIGlmIGRhdGEgZGlyZWN0b3J5IGhhcyB6ZXJvIGVudHJpZXMuICBDYXN0CglhbGwgYmZkX3ZtYSB2YXJzIHRvIHVuc2lnbmVkIGxvbmcgYmVmb3JlIHBhc3NpbmcgdG8gZnByaW50Zi4KCglGcm9tIFN6YWJvbGNzIFN6YWthY3NpdHMgPHN6YWthQEYtU2VjdXJlLmNvbT4KCSogcGVpZ2VuLmMgKHBlX3ByaW50X2lkYXRhKTogVXNlIGJmZF9zZWN0aW9uX3NpemUgcmF0aGVyIHRoYW4gZGF0YQoJZGlyZWN0b3J5IHNpemUgd2hpY2ggbWF5IGJlIGJvZ3VzLgoJKiBwZWlnZW4uYyAocGVfcHJpbnRfZWRhdGEpOiBTaW1pbGFybHkuCgoyMDAwLTA1LTA5ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmLmMgKGJmZF9zZWN0aW9uX2Zyb21fc2hkcik6IERvbid0IHNldCB1c2VfcmVsYV9wIGlmIHJlbGEKCXNlY3Rpb24gaXMgZW1wdHkuCgkoY29weV9wcml2YXRlX2JmZF9kYXRhKTogQWxsb3cgZm9yIHNwYWNlIHBvc3NpYmx5IHRha2VuIHVwIGJ5IGVsZgoJaGVhZGVycyB3aGVuIGNhbGN1bGF0aW5nIHNlZ21lbnQgcGh5c2ljYWwgYWRkcmVzcyBmcm9tIGxtYS4KCjIwMDAtMDUtMDggIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiB2ZXJzYWRvcy5jICh2ZXJzYWRvc19zY2FuKTogSW5pdCBzdHJpbmdsZW4gYW5kIHBhc3NfMl9kb25lLgoKCSogdHJhZC1jb3JlLmMgKHRyYWRfdW5peF9jb3JlX2ZpbGVfcCk6IFJldHVybgoJYmZkX2Vycm9yX3dyb25nX2Zvcm1hdCByYXRoZXIgdGhhbiBiZmRfZXJyb3JfZmlsZV90cnVuY2F0ZWQuCgoJKiBwZWlnZW4uYyAoX2JmZF9wZWlfc3dhcF9hb3V0aGRyX291dCk6IFBhc3MgSW1hZ2VCYXNlIHRvCglhZGRfZGF0YV9lbnRyeS4gIERhdGFEaXJlY3RvcnkgdmlydHVhbCBhZGRyZXNzIGlzIHJlbGF0aXZlLgoJKHBlX3ByaW50X2lkYXRhKTogQWNjb3VudCBmb3IgcmVsYXRpdmUgRGF0YURpcmVjdG9yeSB2aXJ0dWFsCglhZGRyZXNzZXMuICBEb24ndCB0cmFzaCBkYXRhc2l6ZSBpbnNpZGUgUE9XRVJQQ19MRV9QRSBjb2RlLgoJKHBlX3ByaW50X2VkYXRhKTogU2ltaWxhcmx5LgoKCUZyb20gU3phYm9sY3MgU3pha2Fjc2l0cyA8c3pha2FARi1TZWN1cmUuY29tPgoJKiBwZWlnZW4uYyAoZGlyX25hbWVzKTogQWRkIERlbGF5IEltcG9ydCBEaXJlY3RvcnkuCgkocGVfcHJpbnRfaWRhdGEpOiAgQWx3YXlzIHNlYXJjaCBmb3IgYmZkIHNlY3Rpb24gY29udGFpbmluZwoJaWRhdGEgYWRkcmVzcyByYXRoZXIgdGhhbiBsb29raW5nIHVwIHNlY3Rpb24gbmFtZS4gIFByaW50IHRoaXMKCXNlY3Rpb24gbmFtZSByYXRoZXIgdGhhbiAuaWRhdGEuCgkocGVfcHJpbnRfZWRhdGEpOiBTaW1pbGFybHkuICBBbHNvIHByaW50IHNvbWUgZmllbGRzIGFzICUwOGx4LgoJKF9iZmRfcGVfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24pOiBQcmludCBSZXNlcnZlZDEgZmllbGQgYXMKCVdpbjMyVmVyc2lvbi4KCjIwMDAtMDUtMDUgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogeGNvZmYuaDogUmVuYW1lIHRvIHhjb2ZmLXRhcmdldC5oCgkqIE1ha2VmaWxlLmFtOiBDaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiB4Y29mZi5oIHRvIHhjb2ZmLXRhcmdldC5oCgkqIGNvZmYtcnM2MDAwLmM6IERpdHRvLgoJKiBjb2ZmNjQtcnM2MDAwLmM6IERpdHRvLgoJKiBjb2ZmLXBtYWMuYzogRGl0dG8uCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0wNSAgQ2xpbnRvbiBQb3BldHogIDxjcG9wZXR6QGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vaywgY29mZl9zZXRfZmxhZ3MpOgoJQ2hhbmdlIFU4MDJUT0M2NE1BR0lDIHRvIFU4MDNYVE9DTUFHSUMuCgoyMDAwLTA1LTA0ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAc2VhZG9nLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoYmZkX2VsZl9nZXRfYXJjaF9zaXplKTogTmV3IGZ1bmN0aW9uLCByZXR1cm4gMzIgfCA2NCB8IC0xLgoJKiBiZmQtaW4uaDogUHJvdG90eXBlIGJmZF9lbGZfZ2V0X2FyY2hfc2l6ZS4KCSogYmZkLWluMi5oOiBQcm90b3R5cGUgYmZkX2VsZl9nZXRfYXJjaF9zaXplLgoKMjAwMC0wNS0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGxpYmhwcGEuaCAoSFBQQV9SX0NPTlNUQU5UKTogQ2FzdCBhcmd1bWVudCB0byBiZmRfc2lnbmVkX3ZtYS4KCjIwMDAtMDUtMDMgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogUmVzZXQgZHluaW5keCBmb3IKCWhpZGRlbiBhbmQgaW50ZXJuYWwgc3ltYm9scy4KCShlbGZfZml4X3N5bWJvbF9mbGFncyk6IENsZWFyIE5FRURTX1BMVCBmb3Igc3ltYm9scyB3aXRoCgl2aXNpYmlsaXR5LgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sKTogRG8gbm90Cglhc3NpZ24gYSBQTFQgb3IgR09UIGVudHJ5IHRvIHN5bWJvbHMgd2l0aCBoaWRkZW4gYW5kCglpbnRlcm5hbCB2aXNpYmlsaXR5LgoKMjAwMC0wNS0wMyAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGJmZC9jb2ZmLWdvMzIuYyAoQ09GRl9TRUNUSU9OX0FMSUdOTUVOVF9FTlRSSUVTKTogQWRkIGVudHJ5IGZvcgoJdGhlIC5ic3Mgc2VjdGlvbi4KCSogYmZkL2NvZmYtc3RnbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IExpa2V3aXNlLgoKMjAwMC0wNS0wMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IFVzZSBFTEZPU0FCSV9OT05FIGluc3RlYWQgb2YKCUVMRk9TQUJJX1NZU1YuCgoyMDAwLTA1LTAyICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogdGFyZ2V0cy5jIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IFJlc3RvcmUgYmZkX2VsZjMyX2hwcGFfdmVjLgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFMpOiBSZXN0b3JlIGVsZjMyLWhwcGEubG8uICBSZWdlbmVyYXRlCglkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKMjAwMC0wNS0wMSAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGVmaS1hcHAtaWEzMi5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWZpLWFwcC1pYTMyLmMuCgkoQkZENjRfQkFDS0VORFMpOiBEZWxldGUgY29mZi1pYTY0LmxvLiAgQWRkIGVmaS1hcHAtaWE2NC5sby4KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBEZWxldGUgY29mZi1pYTY0LmMuICBBZGQgZWZpLWFwcC1pYTY0LmMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKMjAwMC0wNS0wMiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvbmZpZy5iZmQ6IFJlLWVuYWJsZSBlbGYzMi1ocHBhLiAgSXQgbm93IGNvbXBpbGVzLCBldmVuIGlmIGl0Cglkb2Vzbid0IHdvcmsgdmVyeSB3ZWxsLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaW50ZXJuYWxfc2hkcik6IERlZmluZS4KCShlbGZfaHBwYV9mYWtlX3NlY3Rpb25zKTogaGRyIGlzIGVsZl9ocHBhX2ludGVybmFsX3NoZHIuCglTZXQgaGRyLT5zX3R5cGUgdG8gMSBpZiBBUkNIX1NJWkUgPT0gMzIuCgkoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEFkZCBwcm90b3R5cGUuCgkoZWxmX2hwcGFfaW5mb190b19ob3d0byk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX2luZm9fdG9faG93dG9fcmVsKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShlbGZfaHBwYV9pc19sb2NhbF9sYWJlbF9uYW1lKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfZmFrZV9zZWN0aW9ucyk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShlbGZfaHBwYV9ob3d0b190YWJsZSk6IEZ1bGx5IGluaXRpYWxpc2UgYWxsIGVudHJpZXMuCgkoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIGFyZ3MuCgkoZWxmX2hwcGFfaW5mb190b19ob3d0byk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX2luZm9fdG9faG93dG9fcmVsKTogTGlrZXdpc2UuCgkoZWxmX2hwcGFfcmVsb2NfdHlwZV9sb29rdXApOiBMaWtld2lzZS4KCShlbGZfaHBwYV9maW5hbF93cml0ZV9wcm9jZXNzaW5nLCBlbGZfaHBwYV9hZGRfc3ltYm9sX2hvb2ssCgllbGZfaHBwYV91bm1hcmtfdXNlbGVzc19keW5hbWljX3N5bWJvbHMsCgllbGZfaHBwYV9yZW1hcmtfdXNlbGVzc19keW5hbWljX3N5bWJvbHMsCgllbGZfaHBwYV9yZWNvcmRfc2VnbWVudF9hZGRycywgZWxmX2hwcGFfZmluYWxfbGluaywKCWVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24sIGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUsCgllbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogQ29tcGlsZSBvbmx5IGlmIEFSQ0hfU0laRSA9PSA2NCB1bnRpbAoJZWxmMzItaHBwYS5jIG1lc3MgaXMgY2xlYW5lZCB1cC4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogTWFrZSBpbnNuIGFuZCByX3R5cGUgdW5zaWduZWQKCWludC4gIERlbGV0ZSByX2ZpZWxkLiAgSW4gY2FzZSBSX1BBUklTQ19QQ1JFTDIxTCwgZG9uJ3Qgc2V0CglyX2ZpZWxkIHRoZW4gY2FsbCBocHBhX2ZpZWxkX2FkanVzdCBpbmxpbmUgZnVuYyB3aXRoIHZhcmlhYmxlCglyX2ZpZWxkIGFyZywgaW5zdGVhZCBjYWxsIGhwcGFfZmllbGRfYWRqdXN0IHdpdGggZml4ZWQgYXJnLgoJSW4gY2FzZSBSX1BBUklTQ19QQ1JFTDIyRiwgZG9uJ3Qgc2V0IHJfZmllbGQuCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IENoYW5nZSBhcmdzIGFuZCByZXR1cm4gdHlwZSB0byB1bnNpZ25lZAoJaW50LiAgQ2FsbCByZV9hc3NlbWJsZV8qIGZ1bmNzIHRvIGRvIHRoZSB3b3JrLgoKCSogZWxmMzItaHBwYS5jIChocHBhX2VsZl9yZWxvY2F0ZV9pbnNuKTogRG9uJ3QgYXNzdW1lIDMyIGJpdCB3aGVuCglzaWduIGV4dGVuZGluZy4KCgkqIGxpYmhwcGEuaCAoSFBQQV9SX0NPTlNUQU5UKTogRG9uJ3QgYXNzdW1lIDMyIGJpdCB3aGVuIHNpZ24KCWV4dGVuZGluZy4KCShzaWduX2V4dGVuZCk6IE1hc2sgZmlyc3QgYmVmb3JlIHNpZ24gZXh0ZW5kaW5nLgoJKGxvd19zaWduX2V4dGVuZCk6IFJld3JpdGUgd2l0aG91dCBjb25kaXRpb24gZXhwcmVzc2lvbi4KCShvbmVzLCBkaXNfYXNzZW1ibGVfMywgZGlzX2Fzc2VtYmxlXzEyLCBkaXNfYXNzZW1ibGVfMTYsCglkaXNfYXNzZW1ibGVfMTcsIGRpc19hc3NlbWJsZV8yMSwgZGlzX2Fzc2VtYmxlXzIyKTogRGVsZXRlLgoJKGFzc2VtYmxlXzMsIGFzc2VtYmxlXzYsIGFzc2VtYmxlXzEyLCBhc3NlbWJsZV8xNiwgYXNzZW1ibGVfMTZhLAoJYXNzZW1ibGVfMTcsIGFzc2VtYmxlXzIxLCBzaWduX3VuZXh0LCBsb3dfc2lnbl91bmV4dCk6IFJldHVybgoJcmVzdWx0IGFzIGZ1bmN0aW9uIHJldHVybiB2YWx1ZSByYXRoZXIgdGhhbiB0aHJvdWdoIHBvaW50ZXIgYXJnLgoJQWNjZXB0IHVuc2lnbmVkIGludCBhcmdzLCBhbmQgcmV0dXJuIHVuc2lnbmVkIGludC4KCShyZV9hc3NlbWJsZV8zKTogTmV3LiAgQ29tYmluZXMgZnVuY3Rpb24gb2YgZGlzX2Fzc2VtYmxlXzMgd2l0aAoJcmUtYXNzZW1ibHkgb2Ygb3Bjb2RlIGFuZCBpbW1lZGlhdGUuCgkocmVfYXNzZW1ibGVfMTIpOiBMaWtld2lzZS4KCShyZV9hc3NlbWJsZV8xNik6IExpa2V3aXNlLgoJKHJlX2Fzc2VtYmxlXzE3KTogTGlrZXdpc2UuCgkocmVfYXNzZW1ibGVfMjEpOiBMaWtld2lzZS4KCShyZV9hc3NlbWJsZV8yMik6IExpa2V3aXNlLgoJKGhwcGFfZmllbGRfYWRqdXN0KTogUmV3cml0ZSBhbmQgZG9jdW1lbnQsIHBheWluZyBhdHRlbnRpb24gdG8KCXNpemUgb2YgdHlwZXMgYW5kIHNpZ25lZC91bnNpZ25lZCBpc3N1ZXMuCgkoZ2V0X29wY29kZSk6IFNoaWZ0IGJlZm9yZSBtYXNraW5nLgoJKEZETFcpOiBSZW5hbWUgdG8gRkxEVy4KCShiZmRfaHBwYV9pbnNuMmZtdCk6IENoYW5nZSBhcmcgdG8gdW5zaWduZWQgaW50LiAgRGVsZXRlIGZtdC4KCShocHBhX3JlYnVpbGRfaW5zbik6IENoYW5nZSBhcmdzIGFuZCByZXR1cm4gdmFsdWUgdG8gdW5zaWduZWQKCWludC4gIE1ha2UgdXNlIG9mIHJlX2Fzc2VtYmxlXyouICBDb3JyZWN0IGNhc2UgMTEuCgoJKiBkZXAtaW4uc2VkOiBIYW5kbGUgLi4vb3Bjb2Rlcy8uCgkqIE1ha2VmaWxlLmFtIChTT1VSQ0VfSEZJTEVTKTogQWRkIGVsZi1ocHBhLmgsIGVsZjMyLWhwcGEuaCwKCWVsZjY0LWhwcGEuaCwgaHBwYV9zdHVicy5oLCB4Y29mZi5oLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IFJlc3RvcmUgZWxmMzItaHBwYS5jLgoJUmVtb3ZlIGVsZjY0LWhwcGEubG8sIGNwdS1pYTY0LmxvLCBlbGY2NC1pYTY0LmxvLCBlbGZhcm0tb2FiaS5sbywKCWVsZmFybS1uYWJpLmxvIGRlcGVuZGVuY2llcyBvdXRzaWRlIG9mIGF1dG8tZGVwZW5kZW5jeSBhcmVhLgoJUmVnZW5lcmF0ZSBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogY29uZmlndXJlLmluIChUUkFEX0hFQURFUik6IFRlc3Qgbm9uLW51bGwgYmVmb3JlCglBQ19ERUZJTkVfVU5RVU9URUQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIHJlbG9jLmM6IEZpeCBtaXMtc3BlbGxpbmcgaW4gY29tbWVudC4KCjIwMDAtMDUtMDEgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBjb2ZmLXNoLmMgKGJmZF9jb2ZmX3NtYWxsX3N3YXBfdGFibGUpOiBGaXggRnJpIEFwciAyOCBjaGFuZ2UuCgkqIHZtcy5jICh2bXNfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlKTogUmV0dXJuIE5VTEwuCgoyMDAwLTA0LTI4ICBDbGludG9uIFBvcGV0eiAgPGNwb3BldHpAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggQ29weSBjaGFuZ2VzIG1pc3Rha2VubHkgZG9uZSB0byBsaWJjb2ZmLmggaW4KCTQvMjQvMjAwMCBwYXRjaC4KCjIwMDAtMDQtMjkgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGxpYmJmZC1pbi5oOiBDb3JyZWN0bHkgY2hlY2sgR0NDIHZlcnNpb24uCgkqIGJmZC1pbi5oOiBMaWtld2lzZS4KCSogbGliaHBwYS5oOiBMaWtld2lzZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCjIwMDAtMDQtMjggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKEJGRDY0X0JBQ0tFTkRTLCBCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBBZGQKCWNvZmZkdS1yczYwMDAue2xvLGN9LgoJKGNvZmYtcG1hYy5sbywgY29mZi1yczYwMDAubG8sIGNvZmY2NC1yczYwMDAubG8pOiBBZGQgZGVwZW5kZW5jeQoJb24geGNvZmYuaAoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogeGNvZmYuaDogTmV3IGZpbGUuCgkqIGNvZmYtcG1hYy5jOiBVc2UgeGNvZmYuaCBpbnN0ZWFkIG9mIGNvZmYtcnM2MDAwLmMuCgkqIGNvZmYtcnM2MDAwLmM6IE1vdmUgYWxsIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5lcyB0aGF0IGFyZQoJY29tbW9uIHRvIHRoZSB4Y29mZiBiYWNrZW5kcyBpbnRvIHhjb2ZmLmgKCSogY29mZjY0LXJzNjAwMC5jOiBEaXR0bywKCjIwMDAtMDQtMjggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29mZi1taXBzLmMgKG1pcHNfZWNvZmZfYmFja2VuZF9kYXRhKTogIEFkZCBpbml0aWFsaXphdGlvbiBvZgoJX2JmZF9jb2ZmX2ZvcmNlX3N5bW5hbWVzIGluIHN0cmluZ3MgYW5kCglfYmZkX2NvZmZfZGVidWdfc3RyaW5nX3ByZWZpeF9sZW5ndGggdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCgkqIGNvZmYtc2guYzogKGJmZF9jb2ZmX3NtYWxsX3N3YXBfdGFibGUpOiBEaXR0by4KCjIwMDAtMDQtMjggIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29mZi1hbHBoYS5jIChhbHBoYV9lY29mZl9iYWNrZW5kX2RhdGEpOiBBZGQgaW5pdGlhbGl6YXRpb24gb2YKCV9iZmRfY29mZl9mb3JjZV9zeW1uYW1lcyBpbiBzdHJpbmdzIGFuZAoJX2JmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgoKMjAwMC0wNC0yNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfZ2Nfc3dlZXBfaG9vayk6ICBSZXR1cm4gaWYgZHlub2JqIE5VTEwuCglDaGVjayBsb2NhbF9nb3RfcmVmY291bnRzIGJlZm9yZSBkZXJlZmVyZW5jaW5nLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IENoZWNrIHNwbHQgIT0gTlVMTAoJYmVmb3JlIGRlY2lkaW5nIHdlIGRvbid0IG5lZWQgUl9QUENfUExUMzIgcmVsb2NhdGlvbi4KCShwcGNfZWxmX2djX3N3ZWVwX2hvb2spOiBDaGVjayBsb2NhbF9nb3RfcmVmY291bnRzIGJlZm9yZQoJZGVyZWZlcmVuY2luZy4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyk6IEZpeCBjb21tZW50LgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9jaGVja19yZWxvY3MpOiBSZWZlcmVuY2UgY291bnQgLmdvdCBhbmQKCS5wbHQgZW50cmllcy4KCShlbGZfaTM4Nl9nY19zd2VlcF9ob29rKTogR2FyYmFnZSBjb2xsZWN0IC5nb3QgYW5kIC5wbHQgZW50cmllcy4KCShlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBSZWNvZ25pemUgdW51c2VkIC5wbHQgZW50cmllcy4KCShlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogQWxsb3cgZm9yIC5wbHQgdG8gZ28gbWlzc2luZy4KCShlbGZfaTM4Nl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBVc2Ugc2FtZSB0ZXN0IHRvIGRlY2lkZSBpZiB3ZQoJY2FuIHVzZSBhIHJlbGF0aXZlIHJlbG9jIGZvciBnb3QgYXMgZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbi4KCShiZmRfZWxmMzJfYmZkX2ZpbmFsX2xpbmspOiBEZWZpbmUgdG8gdXNlIGdjIGZvcm0gb2YgZmluYWwgbGluay4KCjIwMDAtMDQtMjYgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogUmVtb3ZlIGV4dHJhbmVvdXMgYmZkX3Bvd2VycGNfNjRfYXJjaC4KCjIwMDAtMDQtMjQgIENsaW50b24gUG9wZXR6ICA8Y3BvcGV0ekBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKGNvZmY2NC1yczYwMDAubG8pOiBOZXcgcnVsZS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvZmYtcnM2MDAwLmMgKHhjb2ZmX21rb2JqZWN0LCB4Y29mZl9jb3B5X3ByaXZhdGVfYmZkX2RhdGEsCgl4Y29mZl9pc19sb2NhbF9sYWJlbF9uYW1lLCB4Y29mZl9ydHlwZTJob3d0bywKCXhjb2ZmX3JlbG9jX3R5cGVfbG9va3VwLCB4Y29mZl9zbHVycF9hcm1hcCwgeGNvZmZfYXJjaGl2ZV9wLAoJeGNvZmZfcmVhZF9hcl9oZHIsIHhjb2ZmX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSwgeGNvZmZfd3JpdGVfYXJtYXAsCgl4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzKTogTm8gbG9uZ2VyIHN0YXRpYywgYW5kIHByZWZpeCB3aXRoIF9iZmRfLgoJKE5PX0NPRkZfU1lNQk9MUyk6IERlZmluZS4KCSh4Y29mZjY0X3N3YXBfc3ltX2luLCB4Y29mZjY0X3N3YXBfc3ltX291dCwgeGNvZmY2NF9zd2FwX2F1eF9pbiwKCXhjb2ZmNjRfc3dhcF9hdXhfb3V0KTogTmV3IGZ1bmN0aW9uczsgaGFuZGxlIHhjb2ZmIHN5bWJvbCB0YWJsZXMKCWludGVybmFsbHkuCgkoTUlOVVNfT05FKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2hvd3RvX3RhYmwsIHhjb2ZmX3JlbG9jX3R5cGVfbG9va3VwKTogQWRkIDY0IGJpdCBQT1MKCXJlbG9jYXRpb24uCgkoY29mZl9TV0FQX3N5bV9pbiwgY29mZl9TV0FQX3N5bV9vdXQsIGNvZmZfU1dBUF9hdXhfaW4sCgljb2ZmX1NXQVBfYXV4X291dCk6IE1hcCB0byB0aGUgbmV3IGZ1bmN0aW9ucy4KCSogY29mZjY0LXJzNjAwMC5jOiBOZXcgZmlsZS4KCSogbGliY29mZi5oIChiZmRfY29mZl9iYWNrZW5kX2RhdGEpOiBBZGQgbmV3IGZpZWxkcwoJX2JmZF9jb2ZmX2ZvcmNlX3N5bW5hbWVzX2luX3N0cmluZ3MgYW5kCglfYmZkX2NvZmZfZGVidWdfc3RyaW5nX3ByZWZpeF9sZW5ndGguCgkoYmZkX2NvZmZfZm9yY2Vfc3ltbmFtZXNfaW5fc3RyaW5ncywKCWJmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoKTogTmV3IG1hY3JvcyBmb3IgYWJvdmUgZmllbGRzLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IEhhbmRsZSBYQ09GRjY0IG1hZ2ljLgoJU2V0IG1hY2hpbmUgdG8gNjIwIGZvciBYQ09GRjY0LiAgVXNlIGJmZF9jb2ZmX3N3YXBfc3ltX2luIGluc3RlYWQKCW9mIHVzaW5nIGNvZmZfc3dhcF9zeW1faW4gZGlyZWN0bHkuCgkoRk9SQ0VfU1lNTkFNRVNfSU5fU1RSSU5HUyk6IE5ldyBtYWNybywgZGVmaW5lZCBmb3IgWENPRkY2NC4KCShjb2ZmX3NldF9mbGFncykgU2V0IG1hZ2ljIGZvciBYQ09GRjY0LgoJKGNvZmZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogQWRkIHN5bWJvbCBuYW1lIGxlbmd0aCB0bwoJc3RyaW5nIHNlY3Rpb24gbGVuZ3RoIGlmIGJmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoIGlzCgl0cnVlLgoJKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogRG9uJ3QgZG8gcmVsb2Mgb3ZlcmZsb3cgZm9yIFhDT0ZGNjQuCgkoY29mZl9zbHVycF9saW5lX3RhYmxlKTogVXNlIGJmZF9jb2ZmX3N3YXBfbGluZW5vX2luIGluc3RlYWQgb2YKCXVzaW5nIGNvZmZfc3dhcF9saW5lbm9faW4gZGlyZWN0bHkuCgkoYmZkX2NvZmZfYmFja2VuZF9kYXRhKTogQWRkIF9iZmRfY29mZl9mb3JjZV9zeW1uYW1lc19pbl9zdHJpbmdzCglhbmQgX2JmZF9jb2ZmX2RlYnVnX3N0cmluZ19wcmVmaXhfbGVuZ3RoIGZpZWxkcy4KCSogY29mZmdlbi5jIChjb2ZmX2ZpeF9zeW1ib2xfbmFtZSwgY29mZl93cml0ZV9zeW1ib2xzKTogRm9yY2UKCXN5bWJvbCBuYW1lcyBpbnRvIHN0cmluZ3MgdGFibGUgd2hlbgoJYmZkX2NvZmZfZm9yY2Vfc3ltbmFtZXNfaW5fc3RyaW5ncyBpcyB0cnVlLgoJKiBjb2Zmc3dhcC5oIChNQVhfU0NOSERSX05SRUxPQywgTUFYX1NDTkhEUl9OTE5OTywgR0VUX1JFTE9DX1ZBRERSLAoJU0VUX1JFTE9DX1ZBRERSKTogTmV3IG1hY3Jvcy4KCShjb2ZmX3N3YXBfcmVsb2NfaW4sIGNvZmZfc3dhcF9yZWxvY19vdXQpOiBVc2UgYWJvdmUgbWFjcm9zLgoJKGNvZmZfc3dhcF9hdXhfaW4sIGNvZmZfc3dhcF9hdXhfb3V0KTogUmVtb3ZlIFJTNjAwMENPRkZfQwoJY29kZS4KCShjb2ZmX3N3YXBfYW91dGhkcl9pbiwgY29mZl9zd2FwX2FvdXRoZHJfb3V0KTogSGFuZGxlIFhDT0ZGNjQKCWNoYW5nZXMgd2l0aGluIFJTNjAwMENPRkZfQyBzcGVjaWZpYyBjb2RlLgoJKGNvZmZfc3dhcF9zY25oZHJfb3V0KTogVXNlIFBVVF9TQ05IRFJfTkxOTk8sIFBVVF9TQ05IRFJfTlJFTE9DLAoJTUFYX1NDTkhEUl9OUkVMT0MsIGFuZCBNQVhfU0NOSERSX05MTk5PLgoJKiByZWxvYy5jIChiZmRfcGVyZm9ybV9yZWxvY2F0aW9uLCBiZmRfaW5zdGFsbF9yZWxvY2F0aW9uKToKCUV4dGVuZCBleGlzdGluZyBoYWNrIG9uIHRhcmdldCBuYW1lLgoJKiB4Y29mZmxpbmsuYyAoWENPRkZfWFZFQ1ApOiBFeHRlbmQgZXhpc3RpbmcgaGFjayBvbgoJdGFyZ2V0IG5hbWUuCgkqIGNvZmYtdGljNTR4LmMgKHRpY29mKTogS2VlcCB1cCB0byBkYXRlIHdpdGggbmV3IGZpZWxkcwoJaW4gYmZkX2NvZmZfYmFja2VuZF9kYXRhLgoJKiBjb25maWcuYmZkOiBBZGQgYmZkX3Bvd2VycGNfNjRfYXJjaCB0byB0YXJnX2FyY2ggYW5kIGRlZmluZQoJdGFyZ19zZWx2ZWNzIHRvIGluY2x1ZGUgcnM2MDAwY29mZjY0X3ZlYyBmb3IgcnM2MDAwLgoJKiBjb25maWd1cmUuaW46IEFkZCByczYwMDBjb2ZmNjRfdmVjIGNhc2UuCgkqIGNwdS1wb3dlcnBjLmM6IE5ldyBiZmRfYXJjaF9pbmZvX3R5cGUuCgoyMDAwLTA0LTI0ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjb25maWcuYmZkOiBPbmx5IGRpc2FibGUgZWxmMzItaHBwYSB2ZWN0b3JzLCBub3QgYWxsIG9mIHRoZQoJQlNEIGFuZCBPU0YgY29uZmlndXJhdGlvbiBzdXBwb3J0LiAgUHJvdmlkZSAoZGlzYWJsZWQpIGNsYXVzZXMKCWZvciBQQTY0IHN1cHBvcnQuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGNsYXVzZSBmb3IgUEE2NCBzdXBwb3J0LgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogQWRkIGJmZF9lbGY2NF9ocHBhX3ZlYy4KCShiZmRfZWxmNjRfaHBwYV92ZWMpOiBEZWNsYXJlLgoKCSogTWFrZWZpbGUuYW0gKEJGRDY0X0JBQ0tFTkRTKTogQWRkIGVsZjY0LWhwcGEubG8KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmNjQtaHBwYS5jCgkoZWxmNjQtaHBwYS5sbyk6IEFkZCBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgoKCSogZWxmNjQtaHBwYS5jLCBlbGY2NC1ocHBhLmg6IE5ldyBmaWxlcyB3aXRoIFBBNjQgc3VwcG9ydC4KCjIwMDAtMDQtMjQgIEphc29uIEVja2hhcmR0ICA8amxlQGN5Z251cy5jb20+CgoJKiBsaWJocHBhLmggKGRpc19hc3NlbWJsZV8xNik6IE5ldyBmdW5jdGlvbi4KCShwYV9hcmNoKTogQWRkZWQgcGEyMHcgZWxlbWVudC4KCjIwMDAtMDQtMjQgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oOiBBZGQgcHJvdG90eXBlcyBmb3IgYmZkX2VsZjMyX3dyaXRlX3JlbG9jcywKCWJmZF9lbGYzMl9zbHVycF9yZWxvY190YWJsZSwgYmZkX2VsZjY0X3dyaXRlX3JlbG9jcywgYW5kCgliZmRfZWxmNjRfc2x1cnBfcmVsb2NfdGFibGUuCgoJKiBlbGZjb2RlLmggKGVsZl93cml0ZV9yZWxvY3MsIGVsZl9zbHVycF9yZWxvY190YWJsZSk6IE5ldwoJZGVmaW5pdGlvbnMgdG8gZ2V0IGV4dGVybmFsIG5hbWVzLgoJKGVsZl93cml0ZV9yZWxvY3MpOiBSZW5hbWVkIGZyb20gd3JpdGVfcmVsb2NzIGFuZCBtYWtlIGdsb2JhbC4KCShlbGZfc2x1cnBfcmVsb2NfdGFibGUpOiBNYWtlIGdsb2JhbC4KCShfYmZkX2VsZixzaXplX2luZm8pOiBVc2UgZWxmX3dyaXRlX3JlbG9jcyBpbnN0ZWFkIG9mIHdyaXRlX3JlbG9jcy4KCgkqIGFyY2hpdmUuYyAoaHB1eF91aWRfZ2lkX2VuY29kZSk6IE5ldyBmdW5jdGlvbi4KCShiZmRfYXJfaGRyX2Zyb21fZmlsZXN5c3RlbSk6IFVzZSBpdCBpZiBIUFVYX0xBUkdFX0FSX0lEUyBpcwoJZGVmaW5lZCBhbmQgdGhlIElEIGlzIGdyZWF0ZXIgdGhhbiA5OTk5OS4KCShiZmRfZ2VuZXJpY19zdGF0X2FyY2hfZWx0KTogSWYgSFBVWF9MQVJHRV9BUl9JRFMgaXMgZGVmaW5lZCBkZWNvZGUKCXNwZWNpYWwgdWlkL2dpZCBmaWVsZHMgaW50byAzMiBiaXQgdmFsdWVzLgoKMjAwMC0wNC0yMSAgTWF0dGhldyBHcmVlbiAgPG1yZ0BjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogQWRkIE5ldEJTRC9zcGFyYzY0IHN1cHBvcnQuCgpGcmkgQXByIDIxIDEzOjIwOjUzIDIwMDAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkJCSAgRGF2aWQgTW9zYmVyZ2VyICA8ZGF2aWRtQGhwbC5ocC5jb20+CgkJCSAgVGltb3RoeSBXYWxsIDx0d2FsbEBjeWdudXMuY29tPgoJCQkgIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChBTExfTUFDSElORVMpOiBBZGQgY3B1LWlhNjQubG8uCgkoQUxMX01BQ0hJTkVTX0NGSUxFUyk6IEFkZCBjcHUtaWE2NC5jLgoJKEJGRDY0X0JBQ0tFTkRTKTogQWRkIGVsZjY0LWlhNjQubG8uCgkoQkZENjRfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIGVsZjY0LWlhNjQuYy4KCShjcHUtaWE2NC5sbywgZWxmNjQtaWE2NC5sbyk6IE5ldyBydWxlcy4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgkqIGFyY2h1cmVzLmMgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSk6IEFkZCBiZmRfYXJjaF9pYTY0LgoJKGJmZF9pYTY0X2FyY2gpOiBEZWNsYXJlLgoJKGJmZF9hcmNodXJlc19saXN0KTogQWRkIGJmZF9pYTY0X2FyY2guCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCSogY29uZmlnLmJmZDogKGlhNjQqLSotbGludXgtZ251KiwgaWE2NCotKi1lbGYqKTogTmV3IHRhcmdldHMuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCSogY29uZmlndXJlLmhvc3Q6IChpYTY0LSotbGludXgqKTogTmV3IGhvc3QuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjY0X2lhNjRfbGl0dGxlX3ZlYywgYmZkX2VsZjY0X2lhNjRfYmlnX3ZlYywKCWJmZF9lZmlfYXBwX2lhNjRfdmVjLCBiZmRfZWZpX2FwcF9pYTY0X3ZlYyk6IE5ldyB2ZWN0b3JzLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogQWRkIGJmZF9hcmNoX2lhNjQuCgkqIGxpYmJmZC5oOiBSZWJ1aWxkLgoJKiByZWxvYy5jOiBBZGQgSUEtNjQgcmVsb2NhdGlvbnMuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjY0X2lhNjRfbGl0dGxlX3ZlYywgYmZkX2VsZjY0X2lhNjRfYmlnX3ZlYyk6CglEZWNsYXJlLgoJKGJmZF90YXJnZXRfdmVjdCk6IEFkZCBiZmRfZWxmNjRfaWE2NF9saXR0bGVfdmVjLgoJKiBjcHUtaWE2NC1vcGMuYywgY3B1LWlhNjQuYywgZWxmNjQtaWE2NC5jOiBOZXcgZmlsZXMuCgoyMDAwLTA0LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmMzItZDMwdi5jIChiZmRfZWxmX2QzMHZfcmVsb2MpOiBEb24ndCBtb2RpZnkgc2VjdGlvbgoJY29udGVudHMgd2hlbiBwZXJmb3JtaW5nIGEgcGFydGlhbCBsaW5rLgoJKGJmZF9lbGZfZDMwdl9yZWxvY18yMSk6IExpa2V3aXNlLgoKMjAwMC0wNC0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogUmVzdHJpY3QgMTk5OC0xMi0xMAoJcGF0Y2ggdG8gc3ltYm9scyBkZWZpbmVkIGJ5IGEgc2hhcmVkIG9iamVjdC4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFNpbWlsYXJseS4KCjIwMDAtMDQtMTkgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCglLJlIgY29tcGlsZXIgZml4ZXMuCgkqIGR3YXJmMi5jIChjb25jYXRfZmlsZW5hbWUpOiBBdm9pZCBzdHJpbmcgbGl0ZXJhbCBjb25jYXRlbmF0aW9uLgoJKiBpZWVlLmMgKGllZWVfZ2V0X3N5bXRhYik6IERvbid0IGluaXRpYWxpc2UgdW5pb24gaW4gc3RydWN0LgoKTW9uIEFwciAxNyAxOToxNDozNiAyMDAwICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChCRkQ2NF9CQUNLRU5EUyk6IE1lbnRpb24gY29mZi1pYTY0LmxvLgoJKEJGRDY0X0JBQ0tFTkRTX0NGSUxFUyk6IE1lbnRpb24gY29mZi1pYTY0LmMKCShjb2ZmLWlhNjQubG8pOiBBZGQgZGVwZW5kZW5jeS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvZmYtaWE2NC5jOiBOZXcgZmlsZS4KCSogZWZpLWFwcC1pYTMyLmM6IERpdHRvLgoJKiBlZmktYXBwLWlhNjQuYzogRGl0dG8uCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FyY2hfbWFjaF9ob29rKTogSGFuZGxlIElBNjRNQUdJQy4KCShjb2ZmX3NldF9mbGFncyk6IERpdHRvLgoJKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKSBbSUE2NF06IFNldCBtYWdpYyBudW1iZXIgdG8gWk1BR0lDLgoJKiBjb25maWcuYmZkIChpWzM0NTZdODYtKi1saW51eC1nbnUqKTogTWVudGlvbiBiZmRfZWZpX2FwcF9pYTMyX3ZlYy4KCSogY29uZmlndXJlLmluIChlbGYpOiBIYW5kbGUgYmZkX2VmaV9hcHBfaWEzMiBhbmQgYmZkX2VmaV9hcHBfaWE2NF92ZWMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogbGlicGVpLmggKEdFVF9PUFRIRFJfSU1BR0VfQkFTRSk6IE5ldyBtYWNyby4KCShQVVRfT1BUSERSX0lNQUdFX0JBU0UpOiBEaXR0by4KCShHRVRfT1BUSERSX1NJWkVfT0ZfU1RBQ0tfUkVTRVJWRSk6IERpdHRvLgoJKFBVVF9PUFRIRFJfU0laRV9PRl9TVEFDS19SRVNFUlZFKTogRGl0dG8uCgkoR0VUX09QVEhEUl9TSVpFX09GX1NUQUNLX0NPTU1JVCk6IERpdHRvLgoJKFBVVF9PUFRIRFJfU0laRV9PRl9TVEFDS19DT01NSVQpOiBEaXR0by4KCShHRVRfT1BUSERSX1NJWkVfT0ZfSEVBUF9SRVNFUlZFKTogRGl0dG8uCgkoUFVUX09QVEhEUl9TSVpFX09GX0hFQVBfUkVTRVJWRSk6IERpdHRvLgoJKEdFVF9PUFRIRFJfU0laRV9PRl9IRUFQX0NPTU1JVCk6IERpdHRvLgoJKFBVVF9PUFRIRFJfU0laRV9PRl9IRUFQX0NPTU1JVCk6IERpdHRvLgoJKEdFVF9QREFUQV9FTlRSWSk6IERpdHRvLgoJKiBwZWlnZW4uYyAoX2JmZF9wZWlfc3dhcF9hb3V0aGRyX2luKSBbQ09GRl9XSVRIX1BFUDY0XTogRG9uJ3QgcmVhZAoJZGF0YV9zdGFydC4gIFVzZSBhYm92ZSBtYWNyb3MgdG8gcmVhZCBmaWVsZHMgdGhhdCBhcmUgNjQgYml0IHdpZGUgZm9yCglDT0ZGX1dJVEhfUEVQNjQuICBEb24ndCB0cnVuY2F0ZSBlbnRyeSBhbmQgdGV4dF9zdGFydCB0byAzMiBiaXRzLgoJKF9iZmRfcGVpX3N3YXBfYW91dGhkcl9vdXQpIFtQRUlfRk9SQ0VfTUlOSU1VTV9BTElHTk1FTlRdOiBGb3JjZQoJRmlsZUFsaWdubWVudCBhbmQgU2VjdGlvbkFsaWdubWVudCB0byBtaW5pbXVtIGFsaWdubWVudCBpZiB0aGV5CglhcmUgemVyby4KCShfYmZkX3BlaV9zd2FwX2FvdXRoZHJfb3V0KSBbUEVJX0RFRkFVTFRfVEFSR0VUX1NVQlNZU1RFTV06IFNldAoJU3Vic3lzdGVtIHRvIGRlZmF1bHQgUEVJX0RFRkFVTFRfVEFSR0VUX1NVQlNZU1RFTS4KCShfYmZkX3BlaV9zd2FwX2FvdXRoZHJfb3V0KSBbQ09GRl9XSVRIX1BFUDY0XTogRG9uJ3Qgc2V0IGRhdGFfc3RhcnQuCglVc2UgYWJvdmUgbWFjcm9zIHRvIHdyaXRlIGZpZWxkcyB0aGF0IGFyZSA2NCBiaXQgd2lkZSBmb3IKCUNPRkZfV0lUSF9QRVA2NC4KCShwZV9wcmludF9wZGF0YSk6IFNldCBQREFUQV9ST1dfU0laRSB0byAzKjggZm9yIENPRkZfV0lUSF9QRVA2NCwKCTUqNCBvdGhlcndpc2UuICBUaGlzIHNob3VsZCBiZSByaWdodCBmb3IgSUEtMzIgYW5kIElBLTY0LCBidXQgbWF5CgliZSB3cm9uZyBmb3IgcGxhdGZvcm1zLiAgVXNlIFBEQVRBX1JPV19TSVpFIGluc3RlYWQgb2YgaGFyZGNvZGVkCgl2YWx1ZSBvZiAyMCBieXRlcy4gIE1vZGlmeSBwcmludGluZyBmb3IgQ09GRl9XSVRIX1BFUDY0IHRvIHByaW50CgliZWdpbiBhZGRyZXNzLCBlbmQgYWRkcmVzcywgYW5kIHVud2luZCBpbmZvIGFkZHJlc3Mgb25seS4gIFVzZQoJR0VUX1BEQVRBX0VOVFJZKCkgdG8gcmVhZCAucGRhdGEgZW50cmllcy4gIFVzZSBmcHJpbnRmX3ZtYSgpIHRvCglwcmludCBhZGRyZXNzZXMuCgkodGJsKTogQWRkIFNFQ1RJT04sIFJFTDMyLCBSRVNFUlZFRDEsIE1JUFNfSk1QQUREUjE2LCBESVI2NCwgYW5kCglISUdIM0FESiByZWxvY2F0aW9uIG5hbWVzLgoJKF9iZmRfcGVfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IFByaW50IFN1YnN5c3RlbSBuYW1lIGluIGxlZ2libGUgZm9ybS4KCSogdGFyZ2V0cy5jOiBEZWNsYXJlIGJmZF9lZmlfYXBwX2lhMzJfdmVjIGFuZAoJYmZkX2VmaV9hcHBfaWE2NF92ZWMuCgkoYmZkX3RhcmdldF92ZWN0b3IpOiBNZW50aW9uIGJmZF9lZmlfYXBwX2lhMzJfdmVjIGFuZAoJYmZkX2VmaV9hcHBfaWE2NF92ZWMuCgoyMDAwLTA0LTE3ICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBjeWdudXMuY29tPgoKCSogYmZkLWluMi5oOiBBZGQgcHJvdG90eXBlcyBmb3IgdGljNTR4IGxvYWQgcGFnZSBhY2Nlc3MuCgkqIGJmZC1pbi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmLXRpYzU0eC5jOiBBZGQgbG9hZCBwYWdlIGZ1bmN0aW9uczsgYWxsb3cgYmZkX2FyY2hfdW5rbm93bgoJaW4gY3VzdG9taXplZCBfc2V0X2FyY2hfbWFjaCBmdW5jdGlvbi4KCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYWxpZ25tZW50X2hvb2spOiBTZXQgc2VjdGlvbiBsb2FkIHBhZ2UgaWYKCXRoZSBhcHByb3ByaWF0ZSBtYWNybyBpcyBkZWZpbmVkLgoJKHdyaXRlX29iamVjdF9jb250ZW50cyk6IFJlYWQgc2VjdGlvbiBsb2FkIHBhZ2UuCgoyMDAwLTA0LTEzICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItaHBwYS5oOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZWxmX2kyMF9yZWxvYyk6IERvbid0IHVzZSBVIHN1ZmZpeC4KCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBBbmQgaGVyZS4KCgkqIGVsZjMyLWQzMHYuYyAoTUFYMzIpOiBEb24ndCB1c2UgTEwgc3VmZml4LgoJKE1JTjMyKTogRGVmaW5lIGluIHRlcm1zIG9mIE1BWDMyLgoJKGJmZF9lbGZfZDMwdl9yZWxvYyk6IE1ha2UgcmVsb2NhdGlvbiBhIGJmZF9zaWduZWRfdm1hLgoKCSogY29mZi1hMjlrLmMgKFNJR05fRVhURU5EX0hXT1JEKTogUmVwbGFjZSB3aXRoIG1vcmUgY29uY2lzZQoJZXhwcmVzc2lvbi4KCgkqIHBlaWNvZGUuaCAocGVfSUxGX2J1aWxkX2FfYmZkKTogUmVtb3ZlIFVMIGZyb20gaGV4IGNvbnN0YW50cy4KCjIwMDAtMDQtMTIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBkZXAtaW4uc2VkOiBNYXRjaCBzcGFjZSBiZWZvcmUgZmlsZSBuYW1lLCBub3QgYWZ0ZXIuCgkqIE1ha2VmaWxlLmFtOiBSZWdlbmVyYXRlIGRlcGVuZGVuY2llcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoJKiByZWxvYy5jIChfYmZkX3JlbG9jYXRlX2NvbnRlbnRzKTogSW4gY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQKCWNhc2UsIGFsbG93IGFkZHJlc3Mgd3JhcC1hcm91bmQgc3R1cGlkbHkgcmVtb3ZlZCAyMDAwLTAzLTE3LiAgU2lnbgoJZXh0ZW5kIHdpdGhvdXQgYW4gaWYgc3RhdGVtZW50LgoKMjAwMC0wNC0xMSAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvZmYtbWlwcy5jIChtaXBzX2dwcmVsX3JlbG9jKTogVGVzdCBmb3IgMTYgYml0IHJhbmdlIHVzaW5nCglzaWduZWQgcXVhbnRpdGVzLgoJKiBlbGYzMi1taXBzLmMgKGdwcmVsMTZfd2l0aF9ncCk6IExpa2V3aXNlLgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBUZXN0IHJhbmdlCgloZXJlIHVzaW5nIC0weDQwMDAwLCBub3QgKGludCkweGZmZmMwMDAwLgoJKGVsZjMyX2hwcGFfc2l6ZV9vZl9zdHViKTogTGlrZXdpc2UuCgoyMDAwLTA0LTExICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBjeWdudXMuY29tPgoKCSogY29mZi10aWM1NHguYzogTm93IGJ1aWxkcyB3aXRoIGFsbCB0YXJnZXRzLgoJKiBNYWtlZmlsZS5hbTogQWRkIGNvZmYvdGljNTR4LmggdG8gY29mZi10aWM1NHgubyBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IEVsaW1pbmF0ZSB3YXJuaW5nIG9uCgl1bml0aWFsaXplZCB2YXJpYWJsZS4KCkZyaSBBcHIgIDcgMTU6NTY6NTcgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChXQVJOX0NGTEFHUyk6IFNldCB0byAtVyAtV2FsbCBieSBkZWZhdWx0LiAgQWRkCgktLWVuYWJsZS1idWlsZC13YXJuaW5ncyBvcHRpb24uCgkqIE1ha2VmaWxlLmFtIChBTV9DRkxBR1MsIFdBUk5fQ0ZMQUdTKTogQWRkIGRlZmluaXRpb25zLgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlOiBSZS1nZW5lcmF0ZS4KCjIwMDAtMDQtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiByZWxvYy5jOiBBZGQgQkZEX1JFTE9DX0FSTV9QQ1JFTF9CTFggYW5kCglCRkRfUkVMT0NfVEhVTUJfUENSRUxfQkxYLgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlCglSX0FSTV9YUEMyNSBhbmQgUl9BUk1fVEhNX1BDMjIuCgoJKiBlbGZhcm0tbmFiaS5jIChlbGYzMl9hcm1faG93dG9fKTogRml4IGRlZmluaXRpb25zIG9mCglSX0FSTV9YUEMyNSBhbmQgUl9BUk1fVEhNX1hQQzIyLgoJKGVsZjMyX2FybV9yZWxvY19tYXApOiBNYWtlIEJGRF9SRUxPQ197QVJNfFRIVU1CfV9QQ1JFTF9CTFggdG8KCVJfQVJNX1tYUEMyNXxUSE1fWFBDMjJdLgoKCSogZWxmYXJtLW9hYmkuYzogRGVmaW5lIE9MRF9BUk1fQUJJIGFuZCBjaGFuZ2UgaW5jbHVkZSBmcm9tCgllbGYvYXJtLW9hYmkuaCB0byBlbGYvYXJtLmgKCgkqIE1ha2VmaWxlLmFtOiBGaXggZGVwZW5kZW5jeSBmb3IgZWxmYXJtLW9hYmkuYwoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTA2ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAc2VhZG9nLmN5Z251cy5jb20+CgoJKiBlbGZjb3JlLmggKGVsZl9jb3JlX2ZpbGVfcCk6IHByZXNlcnZlIHZhbHVlIG9mIHRkYXRhIGF0IGVudHJ5LAoJYW5kIHJlc3RvcmUgaXQgb24gZmFpbHVyZS4gIFJlbGVhc2UgbmV3bHkgYWxsb2NhdGVkIHRkYXRhIG9uCglmYWlsdXJlLgoKRnJpIEFwciAgNyAxMTozMzo0NyAyMDAwICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkd2FyZjIuYyAoc3RydWN0IGR3YXJmMl9kZWJ1Zyk6IE5ldyBmaWVsZCBkd2FyZl9saW5lX3NpemUuCgkoZGVjb2RlX2xpbmVfaW5mbyk6IFNldCBpdC4gIFJlcG9ydCBlcnJvciBpZiB1bml0LT5saW5lX29mZnNldCBpcwoJZXF1YWwgdG8gb3IgbGFyZ2VyIHRoYW4gaXQuCgoyMDAwLTA0LTA3ICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBjeWdudXMuY29tPgoKCSogdGFyZ2V0cy5jOiBBZGRlZCB2ZWNzIGZvciB0aWM1NHguCgkqIHJlbG9jLmM6IEFkZGVkIHJlbG9jcyBmb3IgdGljNTR4LgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZWQuCgkqIGNvbmZpZ3VyZTogQWRkIFRJIENPRkYgdmVjcyBmb3IgdGljNTR4LgoJKiBjb25maWd1cmUuaW46IERpdHRvLgoJKiBjb25maWcuYmZkICh0YXJnX2NwdSk6IFJlY29nbml6ZSBuZXcgdGljNTR4IHRhcmdldC4KCSogY29mZmNvZGUuaCAoY29mZl9zbHVycF9zeW1ib2xfdGFibGUpOiBBZGRpdGlvbnMgZm9yIFRJIENPRkYgaGFuZGxpbmcuCgkqIGJmZC1pbjIuaDogQWRkIHRpYzU0eCB0YXJnZXQgYW5kIHJlbG9jYXRpb25zLgoJKiBNYWtlZmlsZS5hbSwgTWFrZWZpbGUuaW46IEFkZCB0aWM1NHggdGFyZ2V0LgoJKiBhcmNodXJlcy5jIChiZmRfYXJjaHVyZXNfbGlzdCk6IEFkZCB0aWM1NHggdGFyZ2V0LgoJKiBjb2ZmLXRpYzU0eC5jOiBOZXcuCgkqIGNwdS10aWM1NHguYzogTmV3LgoKMjAwMC0wNC0wNiAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHNlYWRvZy5jeWdudXMuY29tPgoKCSogZWxmY29yZS5oIChlbGZfY29yZV9maWxlX3ApOiBjYWxsIGJhY2tlbmRfb2JqZWN0X3Agd2hpY2gKCXRoZXJlYnkgZ2V0cyBhbiBvcHBvcnR1bml0eSB0byB1cGRhdGUgdGhlIGFyY2gvbWFjaGluZSB0eXBlLgoKMjAwMC0wNC0wNiAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfc2x1cnBfc3ltYm9sX3RhYmxlKTogSGFuZGxlIENfU1RBVExBQiBzdG9yYWdlCgljbGFzcy4gIEhhbmRsZSBTRUNfQ0xJTksgYW5kIFNFQ19CTE9DSyBmbGFncy4KCSogc2VjdGlvbi5jOiBBZGQgU0VDX0NMSU5LIGFuZCBTRUNfQkxPQ0sgZmxhZ3MuCgkqIGJmZC1pbjIuaDogQWRkIFNFQ19DTElOSyBhbmQgU0VDX0JMT0NLIGZsYWdzLgoKMjAwMC0wNC0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fc2V0X3ByaXZhdGVfZmxhZ3MpOiBPbmx5IGNoZWNrIGZvcgoJRUZfSU5URVJXT1JLIGlmIHRoaXMgaXMgYW4gdW5rbm93biBFQUJJLgoJKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ2hlY2sgRUFCSSB2ZXJzaW9uCgludW1iZXJzLiAgT25seSBjaGVjayBFRl94eHggZmxhZ3MgaWYgdGhlIEVBQkkgdmVyc2lvbiBudW1iZXIKCWlzIHVua25vd24uCgkoZWxmMzJfYXJtX2NoZWNrX3ByaXZhdGVfYmZkX2RhdGEpOiBPbmx5IGNoZWNrIEVGX3h4eCBmbGFncwoJaWYgdGhlIEVBQkkgdmVyc2lvbiBudW1iZXIgaXMgdW5rbm93bi4KCShlbGYzMl9hcm1fcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IE9ubHkgZGVjb2RlIEVGX3h4eCBmbGFncwoJaWYgdGhlIEVBQkkgdmVyc2lvbiBudW1iZXIgaXMgdW5rbm93bi4KCldlZCBBcHIgIDUgMjI6MDQ6MjAgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogcmVsb2MuYyAoX2JmZF9yZWxvY2F0ZV9jb250ZW50cyk6IEFkZCBCRkRfUkVMT0NfU0hfTE9PUF9TVEFSVCBhbmQKCUJGRF9SRUxPQ19TSF9MT09QX0VORC4KCSogZWxmMzItc2guYyAoc2hfZWxmX2hvd3RvX3RhYik6IENoYW5nZSBzcGVjaWFsX2Z1bmMgdG8KCXNoX2VsZl9pZ25vcmVfcmVsb2MgZm9yIGFsbCBlbnRyaWVzIHRoYXQgc2hfZWxmX3JlbG9jIHVzZWQgdG8gaWdub3JlLgoJQWRkIGVudHJpZXMgZm9yIFJfU0hfTE9PUF9TVEFSVCBhbmQgUl9TSF9MT09QX0VORC4KCShzaF9lbGZfcmVsb2NfbG9vcCk6IE5ldyBmdW5jdGlvbi4KCShzaF9lbGZfcmVsb2MpOiBObyBuZWVkIHRvIHRlc3QgZm9yIGFsd2F5cy10by1iZS1pZ25vcmVkIHJlbG9jcwoJYW55IG1vcmUuCgkoc2hfcmVsKTogQWRkIGVudHJpZXMgZm9yIEJGRF9SRUxPQ19TSF9MT09QX3tTVEFSVCxFTkR9LgoJKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogSGFuZGxlIEJGRF9SRUxPQ19TSF9MT09QX3tTVEFSVCxFTkR9LgoJKiBiZmQtaW4yLmgsIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wNC0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoJKiBNYWtlZmlsZS5hbTogUmVtb3ZlIGV4dHJhbmVvdXMgbWtkZXAgY29tbWVudC4KCShNS0RFUCk6IFVzZSBnY2MgLU1NIHJhdGhlciB0aGFuIG1rZGVwLgoJKERFUCk6IFF1b3RlIHdoZW4gcGFzc2luZyB2YXJzIHRvIHN1Yi1tYWtlLiAgQWRkIHdhcm5pbmcKCW1lc3NhZ2UgdG8gZW5kLgoJKERFUDEpOiBSZXdyaXRlIGZvciAiZ2NjIC1NTSIuCgkoQ0xFQU5GSUxFUyk6IEFkZCBERVAyLgoJVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTAzICBLZXZpbiBCdWV0dG5lciAgPGtldmluYkByZWRoYXQuY29tPgoKCSogY29uZmlndXJlLmluOiBBZGRlZCBjb3JlZmlsZSBzdXBwb3J0IGZvciBBSVggNC4zLiAgSW4gcGFydGljdWxhciwKCUFJWF9DT1JFX0RVTVBYX0NPUkUgd2lsbCBiZSBkZWZpbmVkIGluIGFkZGl0aW9uIHRvIEFJWF9DT1JFIHdoZW4KCWNvbXBpbGluZyByczYwMDAtY29yZS5jLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMC0wNC0wMyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY2FjaGUuYyAoYmZkX29wZW5fZmlsZSk6IFVubGluayB0aGUgb3V0cHV0IGZpbGUgb25seSBpZgoJaXQgaGFzIG5vbi16ZXJvIHNpemUuCgoyMDAwLTA0LTAxICBLZW4gQmxvY2sgVVNHICA8YmxvY2tAemszLmRlYy5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogRG9uJ3QgZW1pdAoJcmVsYXRpdmUgcmVsb2NhdGlvbnMgZm9yIG5vbi1sb2FkZWQgc2VjdGlvbnMgaW4gc2hhcmVkIG9iamVjdHMuCgkoZWxmNjRfYWxwaGFfY2hlY2tfcmVsb2NzKTogU2ltaWxhcmx5LgoKTW9uIEFwciAgMyAxMzozNzoxNSAyMDAwICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGFvdXR4LmggKE5BTUUoYW91dCxyZWxvY190eXBlX2xvb2t1cCkpOiBBZGQgQkZEX1JFTE9DXzggYW5kCglCRkRfUkVMT0NfMTYgdG8gc3dpdGNoIGZvciBleHRlbmRlZCByZWxvY3MuCgkoTVlfc3dhcF9leHRfcmVsb2NfaW4pOiBOZXcuCgkoTVlfc3dhcF9leHRfcmVsb2Nfb3V0KTogTmV3LgoJKE5BTUUoYW91dCxzbHVycF9yZWxvY190YWJsZSkpOiBVc2UgTVlfc3dhcF9leHRfcmVsb2NfaW4gcmF0aGVyCgl0aGFuIE5BTUUoYW91dCxzd2FwX2V4dF9yZWxvY19pbikgZm9yIGV4dGVuZGVkIHJlbG9jcy4KCShOQU1FKGFvdXQsc3F1aXJ0X291dF9yZWxvY3MpKTogU2ltaWxhcmx5IHVzZQoJTVlfc3dhcF9leHRfcmVsb2Nfb3V0LgoJKGFvdXRfbGlua19yZWxvY19saW5rX29yZGVyKTogVXNlIE1ZX3B1dF9leHRfcmVsb2MgaWYgZGVmaW5lZC4KCjIwMDAtMDQtMDMgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY29mZi1oODMwMC5jIChoODMwMF9yZWxvYzE2X2V4dHJhX2Nhc2VzKTogQWRkIGJzcjoxNiAtPiBic3I6OCB0bwoJdGhlIFJfUENSV09SRF9CIGNhc2UuCgoyMDAwLTAzLTMxICBUaG9tYXMgZGUgTGVsbGlzICA8dGRlbEB3cnMuY29tPgoKCSogc3JlYy5jIDogU2V0IENIVU5LIHNpemUgdG8gMTYgYnl0ZXMgdG8gcHJldmVudCBkb3dubG9hZCBmYWlsdXJlcwoJb24gc29tZSB0YXJnZXRzLgoJKiBpaGV4LmMgOiBEaXR0by4KCldlZCBNYXIgMzAgMTU6Mjg6MDAgMjAwMCAgRG9uYWxkIExpbmRzYXkgIDxkbGluZHNheUBjeWdudXMuY29tPgoKCSogZWxmMzItbTMyci5jIChtMzJyX2VsZl9nZW5lcmljX3JlbG9jKTogbmV3IGZ1bmN0aW9uLiAgQWxsCglIT1dUTyByZWZlcmVuY2VzIHRvIGJmZF9lbGZfZ2VuZXJpY19yZWxvYywgdGhhdCBoYXZlCglwYXJ0aWFsX2lucGxhY2UgPT0gdHJ1ZSwgbm93IHVzZSB0aGUgbmV3IGZ1bmN0aW9uLiAgVGhlIGZ1bmN0aW9uCglpcyBiYXNlZCBvbiB0aGUgcmVjZW50IHJld3JpdGUgb2YgbTMycl9lbGZfbG8xNl9yZWxvYygpLCBhbmQKCWV4dGVuZHMgaXRzIGZpeGVzIHRvIHRoZSBSX00zMlJfezE2LDI0LDMyfSByZWxvY3MuCglUaGUgbmV3IGxvZ2ljIGluIG0zMnJfZWxmX2xvMTZfcmVsb2MoKSBoYXMgYmVlbiByZW1vdmVkLCBhbmQKCWl0IGluc3RlYWQgY2FsbHMgdGhlIG5ldyByb3V0aW5lIHRvIG9idGFpbiB0aGF0IGZ1bmN0aW9uYWxpdHkuCgoyMDAwLTAzLTI3ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItYXZyLmMgKGVsZjMyX2F2cl9nY19tYXJrX2hvb2ssIGVsZjMyX2F2cl9nY19zd2VlcF9ob29rLAoJZWxmMzJfYXZyX2NoZWNrX3JlbG9jcywgYXZyX2ZpbmFsX2xpbmtfcmVsb2NhdGUsCgllbGYzMl9hdnJfcmVsb2NhdGVfc2VjdGlvbiwgYmZkX2VsZl9hdnJfZmluYWxfd3JpdGVfcHJvY2Vzc2luZywKCWVsZjMyX2F2cl9vYmplY3RfcCk6IEFkZCBwcm90b3R5cGVzLgoJKGVsZjMyX2F2cl9nY19tYXJrX2hvb2spOiBBZGQgZGVmYXVsdCBmb3IgaC0+cm9vdC50eXBlLgoJKGJmZF9lbGZfYXZyX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBNYWtlIHN0YXRpYy4KCjIwMDAtMDMtMjcgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjcHUtYXZyLmM6IE5ldyBmaWxlLiAgQkZEIHN1cHBvcnQgcm91dGluZXMgZm9yIEFWUiBhcmNoaXRlY3R1cmUuCgkqIGFyY2h1cmVzLmMgKGJmZF9hcmNoaXRlY3R1cmUpOiBBZGQgQVZSIGFyY2hpdGVjdHVyZS4KCShiZmRfYXJjaHVyZXNfbGlzdCk6IEFkZCByZWZlcmVuY2UgdG8gQVZSIGFyY2hpdGVjdHVyZSBpbmZvLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogSGFuZGxlIGJmZF9hcmNoX2F2ci4KCSogcmVsb2MuYzogQWRkIHZhcmlvdXMgQVZSIHJlbG9jYXRpb24gZW51bXMuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX2F2cl92ZWMpOiBEZWNsYXJlIGFuZCBhZGQgdG8gdGFyZ2V0IHZlY3RvcgoJbGlzdC4KCSogTWFrZWZpbGUuYW06IEFkZCBzdXBwb3J0IGZvciBBVlIgZWxmLgoJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBjb25maWcuYmZkOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogVGhpcyB0b28uCgkqIGJmZC1pbjIuaDogQW5kIHRoaXMuCgkqIGxpYmJmZC5oOiBBbmQgdGhpcy4KCjIwMDAtMDMtMjQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX21lcmdlX2luZF9zeW1ib2xzKTogQWRkIHByb3RvdHlwZS4KCShlbGY2NF9hbHBoYV9maW5kX3JlbG9jX2F0X29mcyk6IExpa2V3aXNlLgoKMjAwMC0wMy0xNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHJlbG9jLmMgKGJmZF9jaGVja19vdmVyZmxvdyk6IEluIGNhc2UgY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQsCglmbGFnIGFuIG92ZXJmbG93IGlmIHRoZSBiaXRmaWVsZCBpcyBvdXRzaWRlIC0yKipuIHRvIDIqKm4tMS4gIFRoZQoJYWxsb3dhYmxlIHJhbmdlIHVzZWQgdG8gYmUgLTIqKihuLTEpIHRvIDIqKm4tMS4KCSogcmVsb2MuYyAoX2JmZF9yZWxvY2F0ZV9jb250ZW50cyk6IFNhbWUgaGVyZS4gIEFsc28gcmVwbGFjZQoJImJvb2xlYW4gb3ZlcmZsb3ciIHdpdGggImJmZF9yZWxvY19zdGF0dXNfdHlwZSBmbGFnIi4KCjIwMDAtMDMtMTQgIERvdWcgRXZhbnMgIDxkamVAY2FzZXkudHJhbnNtZXRhLmNvbT4KCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfbG8xNl9yZWxvYyk6IFJld3JpdGUuCgoyMDAwLTAzLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHJlbG9jMTYuYyAoYmZkX2NvZmZfcmVsb2MxNl9yZWxheF9zZWN0aW9uKTogQ291bnQgdGhlIHRvdGFsIG51bWJlcgoJb2Ygc2hyaW5rcyBwcm9wZXJseSwgaW5jbHVkaW5nIHRoZSBsYXN0IHJlbG9jLgoKMjAwMC0wMy0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWg4MzAwLmMgKGg4MzAwX3JlbG9jMTZfZXh0cmFfY2FzZXMpOiBGaXggdGhlIHNhbml0eQoJY2hlY2sgZm9yIFJfTU9WTDIuCgoyMDAwLTAzLTExICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogaWVlZS5jIChpZWVlX2FyY2hpdmVfcCk6IFJldHVybiBiZmRfZXJyb3Jfd3JvbmdfZm9ybWF0IG9uCglhIGZvcm1hdCBtaXNtYXRjaCByYXRoZXIgdGhhbiBhbiAiZXJyb3IiIGZyb20gYmZkX3JlYWQgc3VjaCBhcwoJYmZkX2Vycm9yX2ZpbGVfdHJ1bmNhdGVkLgoKMjAwMC0wMy0xMCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBEbyBwcm9wZXIKCXNpZ24tZXh0ZW5zaW9uIGFuZCBiaWctZW5kaWFuIGNvbXBlbnNhdGlvbiBmb3IKCVJfTUlQU182NCBldmVuIGluIGxkIC1yLgoKMjAwMC0wMy0xMCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9uZXh0X3JlbG9jYXRpb24pOiBSZW5hbWUgZnJvbQoJbWlwc19lbGZfbmV4dF9sbzE2X3JlbG9jYXRpb24sIGFuZCBnZW5lcmFsaXplIHRvIGxvb2sKCWZvciBhbnkgcmVsb2NhdGlvbiB0eXBlLgoJKGVsZl9taXBzX2hvd3RvX3RhYmxlKTogTWFrZSBSX01JUFNfUEMxNiBwY3JlbF9vZmZzZXQuCgkoZWxmX21pcHNfZ251X3JlbF9oaTE2KTogSG93dG8gZm9yIFJfTUlQU19HTlVfUkVMX0hJMTYuCgkoZWxmX21pcHNfZ251X3JlbF9sbzE2KTogSG93dG8gZm9yIFJfTUlQU19HTlVfUkVMX0xPMTYuCgkoZWxmX21pcHNfZ251X3JlbDE2X3MyKTogSG93dG8gZm9yIFJfTUlQU19HTlVfUkVMMTZfUzIuCgkoZWxmX21pcHNfZ251X3BjcmVsNjQpOiBIb3d0byBmb3IgUl9NSVBTX1BDNjQuCgkoZWxmX21pcHNfZ251X3BjcmVsMzIpOiBIb3d0byBmb3IgUl9NSVBTX1BDMzIuCgkoYmZkX2VsZjMyX2JmZF9yZWxvY190eXBlX2xvb2t1cCk6IEFkZCBuZXcgcmVsb2NzLgoJKG1pcHNfcnR5cGVfdG9faG93dG8pOiBMaWtld2lzZS4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEhhbmRsZSBuZXcgcmVsb2NzLgoJKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFJFTF9ISTE2L1JFTF9MTzE2IHJlbG9jcwoJYXJlIHBhaXJlZC4gIFRoZSBhZGRlbmQgZm9yIFJfTUlQU19HTlVfUkVMMTZfUzIKCWlzIHNoaWZ0ZWQgcmlnaHQgdHdvIGJpdHMuCgoyMDAwLTAzLTEwICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogcmVsb2MuYyAoYmZkX3BlcmZvcm1fcmVsb2NhdGlvbik6IFVuZG8gZW1hY3MgZm9ybWF0dGluZyBvZgoJY29tbWVudCwgYW5kIGVuc3VyZSBpdCBkb2Vzbid0IGhhcHBlbiBhZ2Fpbi4KCShiZmRfaW5zdGFsbF9yZWxvY2F0aW9uKTogU2FtZSBoZXJlLgoJKF9iZmRfcmVsb2NhdGVfY29udGVudHMpOiBEb24ndCBib3RoZXIgYXNzaWduaW5nIHVudXNlZCBzaWdubWFzawoJc2hpZnQgcmVzdWx0LiAgRml4IHR5cG9zIGluIGNvbW1lbnRzLgoJUmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgdGhyb3VnaG91dCBmaWxlLgoKMjAwMC0wMy0wNyAgRG91ZyBFdmFucyAgPGRqZUBjYXNleS50cmFuc21ldGEuY29tPgoKCSogcmVsb2MuYyAocmVsb2NfaG93dG9fc3RydWN0KTogRml4IHBhcnRpYWxfaW5wbGFjZSBjb21tZW50LgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgoyMDAwLTAzLTA2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogcGVpY29kZS5oIChzdHJ1Y3QgcGVfSUxGX3ZhcnMpOiBBZGQgc3ltX3B0cl90YWJsZSBhbmQKCXN5bV9wdHJfcHRyIGZpZWxkcy4KCShTSVpFT0ZfSUxGX1NZTV9QVFJfVEFCTEUpOiBEZWZpbmUuCgkoU0laRU9GX0lMRl9TVFJJTkdTKTogUmVkZWZpbmUuCgkocGVfSUxGX21ha2VfYV9zeW1ib2wtcmVsb2MpOiBOZXcgZnVuY3Rpb24uICBDcmVhdGVzIGEgc3ltYm9sCglyZWxhdGl2ZSByZWxvYywgYXMgb3Bwb3NlZCB0byBhIHNlY3Rpb24gcmVsYXRpdmUgcmVsb2MuCgkocGVfSUxGX21ha2VfYV9zeW1ib2wpOiBTZXQgdGhlIGNsYXNzIG9mIGxvY2FsIHN5bWJvbHMgdG8gQ19TVEFUCglub3QgQ19MQUJFTC4KCUFkZCBsZW5ndGggb2Ygc3ltYm9sJ3MgcHJlZml4IHRvIHN0cmluZyBwb2ludGVyLgoJU3RvcmUgYSBwb2ludGVyIHRvIHRoZSBzeW1ib2wgaW4gdGhlIHN5bWJvbCBwb2ludGVyIHRhYmxlLgoJKHBlX0lMRl9idWlsZF9hX2JmZCk6IERvIG5vdCBidWlsZCAuaWRhdGEkMiBvciAuaWRhdGEkNy4KCUluaXRpYWxpc2UgdGhlIHN5bWJvbCBwb2ludGVyIHRhYmxlLgoJU3RvcmUgdGhlIGhpbnQgaW4gdGhlIEhpbnQvTmFtZSB0YWJsZS4KCU1ha2UgdGhlIGp1bXAgcmVsb2MgYmUgc3ltYm9sIHJlYWx0aXZlLCBub3Qgc2VjdGlvbiByZWxhdGl2ZS4KCUNyZWF0ZSBhbiBpbXBvcnQgc3ltYm9sIGZvciBpbXBvcnRlZCBjb2RlLgoKMjAwMC0wMy0wNiAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6ICBDaGVjayBmb3IgbnVsbCB0eXBlX3B0ci4KCjIwMDAtMDMtMDEgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogYW91dC10YXJnZXQuaCAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IFJlbW92ZSB1bnVzZWQKCWFuZCB1bnVzYWJsZSAiI2lmIENIT09TRV9SRUxPQ19TSVpFIi4KCSogcGM1MzItbWFjaC5jIChNWSh3cml0ZV9vYmplY3RfY29udGVudHMpKTogRGl0dG8uCgkqIG5ldGJzZC5oIChNWSh3cml0ZV9vYmplY3RfY29udGVudHMpKTogRGl0dG8uCgkqIGhwMzAwaHB1eC5jIChNWSh3cml0ZV9vYmplY3RfY29udGVudHMpKTogRGl0dG8uCgkqIGZyZWVic2QuaCAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBhb3V0LXRpYzMwLmMgKHRpYzMwX2FvdXRfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogRGl0dG8uCgoyMDAwLTAyLTI5ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBwZWljb2RlLmggKGp0YWIpOiBNYWtlIGl0IHN0YXRpYy4KCgkqIGNvZmYtc2guYyAoc2hfYWxpZ25fbG9hZF9zcGFuKTogRGVjbGFyZWQgaWYgQ09GRl9XSVRIX1BFIGlzCglkZWZpbmVkIGFuZCBDT0ZGX0lNQUdFX1dJVEhfUEUgaXMgbm90IGRlZmluZWQuCgkoX2JmZF9zaF9hbGlnbl9sb2FkX3NwYW4pOiBEZWZpbmVkIGFzIHNoX2FsaWduX2xvYWRfc3BhbiBpZgoJQ09GRl9XSVRIX1BFIGlzIGRlZmluZWQgYW5kIENPRkZfSU1BR0VfV0lUSF9QRSBpcyBub3QgZGVmaW5lZC4KCjIwMDAtMDMtMDEgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChiZmRfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24pOiBNYWtlCgknc3ltbmR4JyBzaWduZWQgdG8gcHJldmVudCBjb21waWxlIHRpbWUgd2FybmluZy4KCgkqIGNvZmYtbWNvcmUuYzogUmVtb3ZlIHVudXNlZCBwcm90b3R5cGUgZm9yIHBlX29iamVjdF9wLgoKCSogY29mZi1zaC5jOiBBZGQgIiNpZm5kZWYgQ09GRl9JTUFHRV9XSVRIX1BFIiBhcm91bmQgc3RhdGljCglmdW5jdGlvbnMgdGhhdCBhcmUgbm90IHVzZWQgd2hlbiBDT0ZGX0lNQUdFX1dJVEhfUEUgaXMKCWRlZmluZWQuCgkoc3RydWN0IHNoX29wY29kZSk6IENoYW5nZSB0eXBlIG9mICdmbGFncycgZmllbGQgdG8gdW5zaWduZWQKCWxvbmcgc28gdGhhdCBpdCBjYW4gaG9sZCB0aGUgVVNFU0FTIGZsYWcuCgoJKiBjb2ZmY29kZS5oIChzdHlwX3RvX3NlY19mbGFncyk6IEluaXRpYWxpc2UgJ3RhcmdldF9uYW1lJy4KCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsYXhfc2VjdGlvbik6IEluaXRpYWxpc2UKCSdzeW1fc2VjJy4KCgkqIGVsZjMyLWkzNzAuYzogQWRkIEFUVFJJQlVURV9VTlVTRUQgdG8gdW51c2VkIGZ1bmN0aW9uCglwYXJhbWV0ZXJzLgoJUmVtb3ZlIHVudXN1ZWQgdmFyaWFibGVzIGFuZCBjb2RlLgoJKGVsZl9iYWNrZW5kX2FkZF9zeW1ib2xfaG9vayk6IEZpeCBwcm90b3R5cGUuCgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX2djX3N3ZWVwX2hvb2spOiBJbml0aWFsaXNlICdzZ290JyBhbmQKCSdzcmVsZ290Jy4KCgkqIGVsZjMyLW1jb3JlLmMgKG1jb3JlX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogSW5pdGlhbGlzZQoJJ29sZGluc3QnLgoKCSogZWxmMzItbWlwcy5jOiBBZGQgQVRUUklCVVRFX1VOVVNFRCB0byB1bnVzZWQgZnVuY3Rpb24KCXBhcmFtZXRlcnMuCglSZW1vdmUgdW51c3VlZCB2YXJpYWJsZXMgYW5kIGNvZGUuCgkoZWxmX2JhY2tlbmRfYWRkX3N5bWJvbF9ob29rKTogRml4IHByb3RvdHlwZS4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzKTogVXNlICdmbGFncycuCgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfbGlua19hZGRfc3ltYm9scyk6IEFkZCBBVFRSSUJVVEVfVU5VU0VECgl0byB1bnVzZWQgZnVuY3Rpb24gcGFyYW1ldGVyLgoKCSogcGUtbWlwcy5jOiBBZGQgQVRUUklCVVRFX1VOVVNFRCB0byB1bnVzZWQgZnVuY3Rpb24KCXBhcmFtZXRlcnMuCglVc2UgRU1QVFlfSE9XVE8gdG8gaW5pdGlhbGlzZSBlbXB0eSBob3d0byBzbG90cy4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoKCSogcGVpY29kZS5oIChwZV9JTEZfYnVpbGRfYV9iZmQpOiBJbml0aWFsaXNlIGlkNi4KCjIwMDAtMDMtMDEgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGFvdXR4LmggKGFvdXRfbGlua19pbnB1dF9zZWN0aW9uX3N0ZCk6IFBhc3MgInRydWUiIHRvCgl0aGUgdW5kZWZpbmVkX3N5bWJvbCBjYWxsYmFjay4KCShhb3V0X2xpbmtfaW5wdXRfc2VjdGlvbl9leHQpOiBMaWtld2lzZS4KCSogYm91dC5jIChnZXRfdmFsdWUpOiBMaWtld2lzZS4KCSogY29mZi1hMjlrLmMgKGNvZmZfYTI5a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtYWxwaGEuYyAoYWxwaGFfZWNvZmZfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbik6CglMaWtld2lzZS4KCShhbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZi1pOTYwLmMgKGNvZmZfaTk2MF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtbWNvcmUuYyAoY29mZl9tY29yZV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtbWlwcy5jIChtaXBzX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZi1wcGMuYyAoY29mZl9wcGNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLXNoLmMgKHNoX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZi10aWM4MC5jIChjb2ZmX3RpYzgwX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2dlbmVyaWNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYtbTEwMjAwLmMgKG1uMTAyMDBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmLW0xMDMwMC5jIChtbjEwMzAwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWQxMHYuYyAoZWxmMzJfZDEwdl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWZyMzAuYyAoZnIzMF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1ocHBhLmMgKGVsZjMyX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzcwLmMgKGkzNzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTMyci5jIChtMzJyX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1jb3JlLmMgKG1jb3JlX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IExpa2V3aXNlLgoJKiBwZS1taXBzLmMgKGNvZmZfcGVfbWlwc19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIHJlbG9jLmMgKGJmZF9nZW5lcmljX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW4pOiBMaWtld2lzZS4KCSogcmVsb2MxNi5jIChfYmZkX3BwY194Y29mZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogUGFzcyAiZmFsc2UiIHRvIHRoZQoJdW5kZWZpbmVkX3N5bWJvbCBjYWxsYmFjayB3aGVuIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJ5IHdpdGgKCS1Cc3ltYm9saWMgYW5kIHVuZGVmaW5lZCBzeW1ib2xzIGFyZSBhbGxvd2VkLiBPdGhlcndpc2UsIHBhc3MKCSJ0cnVlIi4KCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKGVsZjMyX21pcHNfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnQpOiBMaWtld2lzZS4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wMi0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtOiBBZGQgcnVsZXMgdG8gYnVpbGQgcGVbaV0te3NofG1pcHN9LmxvIG9iamVjdHMuCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgoKCSogY29uZmlndXJlLmluOiBBZGQgc3VwcG9ydCBmb3IgbWlwcyBhbmQgc2ggcGUgdmVjdG9ycy4KCSogY29uZmlndXJlOiByZWdlbmVyYXRlLgoKCSogY29uZmlnLmJmZDogQWRkIHN1cHBvcnQgZm9yIGFybS13aW5jZSwgbWlwcy1wZSBhbmQgc2gtcGUKCXRhcmdldHMuCgoJKiB0YXJnZXRzLmM6IEFkZCBtaXBzIGFuZCBzaCBwZSB2ZWN0b3JzLgoKCSogbGlicGVpLmggKGNvZmZfZmluYWxfbGlua19wb3N0c2NyaXB0KTogT25seSBkZWZpbmUgaWYgbm90CglhbHJlYWR5IGRlZmluZWQuCgoJKiBjb2ZmY29kZS5oOiBBZGQgc3VwcG9ydCBmb3IgV2luQ0UgbWFnaWMgbnVtYmVycy4KCgkqIHBlaWdlbi5jIChwZV9wcmludF9yZWxvYyk6IFVwZGF0ZSBjb21tZW50IGFuZCByZWFycmFuZ2UKCWFwcGVuZGluZyBvZiBuZXdsaW5lIGNoYXJhY3Rlci4KCgkqIHBlaWNvZGUuaDogQWRkIHN1cHBvcnQgZm9yIEltYWdlIExpYnJhcnkgRm9ybWF0LgoJKHBlX0lMRl92YXJzKTogU3RydWN0dXJlIGNvbnRhaW5pbmcgZGF0YSB1c2VkIGJ5IElMRiBjb2RlLgoJKHBlX0lMRl9tYWtlX2Ffc2VjdGlvbik6IE5ldyBmdW5jdGlvbi4gIENyZWF0ZSBhIHNlY3Rpb24gYmFzZWQKCW9uIElMRiBkYXRhLgoJKHBlX0lMRl9tYWtlX2FfcmVsb2MpOiBOZXcgZnVuY3Rpb24uICBDcmVhdGUgYSByZWxvYyBiYXNlZCBvbgoJSUxGIGRhdGEuCgkocGVfSUxGX21ha2VfYV9zeW1ib2wpOiBOZXcgZnVuY3Rpb24uICBDcmVhdGUgYSBzeW1ib2wgYmFzZWQKCW9uIElMRiBkYXRhLgoJKHBlX0lMRl9zYXZlX3JlbG9jcyk6IE5ldyBmdW5jdGlvbi4gIFN0b3JlIHRoZSByZWxvY3MgY3JlYXRlZAoJYnkgcGVfSUxGX21ha2VfYV9yZWxvYyBpbiBhIHNlY3Rpb24uCgkocGVfSUxGX2J1aWxkX2FfYmZkKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlIGEgQkZEIGRlc2NyaWJpbmcKCWFuIElMRiBvYmplY3QuCgkocGVfSUxGX29iamVjdF9wKTogTmV3IGZ1bmN0aW9uLiAgUmV0dXJuIGEgYmZkX3RhcmdldCBwb2ludGVyCglmb3IgYW4gSUxGIG9iamVjdC4KCShwZV9iZmRfb2JqZWN0X3ApOiBJZiBhbiBJTEYgb2JqZWN0IGlzIGRldGVjdGVkIGNhbGwKCXBlX0lMRl9vYmplY3RfcCBvbiBpdC4KCgkqIGNvZmYtYXJtLmM6IEFkZCBzdXBwb3J0IGZvciBXaW5DRSByZWxvY3Mgd2hpY2ggYXJlIGRpZmZlcmVudAoJZnJvbSBub3JtYWwgQVJNIENPRkYgcmVsb2NzLgoJKiBwZS1hcm0uYzogVW5zZXQgVEFSR0VUX1VOREVSU0NPUkUgZm9yIGEgV2luQ0UgdGFyZ2V0LgoKCSogY29mZi1zaC5jOiBBZGQgc3VwcG9ydCBmb3Igc2gtcGUgdGFyZ2V0LgoJKiBwZS1zaC5jOiBOZXcgZmlsZS4gIFN1cHBvcnQgY29kZSBmb3Igc2gtcGUgdGFyZ2V0LgoJKiBwZWktc2guYzogTmV3IGZpbGUuICBTdXBwb3J0IGNvZGUgZm9yIHNoLXBlIHRhcmdldC4KCgkqIHBlLW1pcHMuYzogTmV3IGZpbGUuICBTdXBwb3J0IGNvZGUgZm9yIG1pcHMtcGUgdGFyZ2V0LgoJKiBwZWktbWlwcy5jOiBOZXcgZmlsZS4gIFN1cHBvcnQgY29kZSBmb3IgbWlwcy1wZSB0YXJnZXQuCgoyMDAwLTAyLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBEb24ndCBidW1wCglhcmNoaXRlY3R1cmUgaWYgdGhlIG9iamVjdCBjYXVzaW5nIHRoZSBidW1wIGlzIGR5bmFtaWMuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZSwKCWFuZCBhbHNvIGRvbid0IGl0IGZvciBtZW1vcnkgb3JkZXJpbmcuCgkoc3BhcmM2NF9lbGZfd3JpdGVfcmVsb2NzKTogVGFrZSBzcmNfcmVsYSBvdXQgb2YgdGhlIGxvb3AuCgoyMDAwLTAyLTI3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGR3YXJmMi5jIChyZWFkX2FiYnJldnMpOiBVc2UgX3Jhd19zaXplIGRpcmVjdGx5IHJhdGhlciB0aGFuCgljYWxsaW5nIGJmZF9nZXRfc2VjdGlvbl9zaXplX2JlZm9yZV9yZWxvYy4KCShkZWNvZGVfbGluZV9pbmZvKTogTGlrZXdpc2UuCgkoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBMaWtld2lzZS4KCjIwMDAtMDItMjcgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBNYWtlZmlsZS5hbSAoc3RhbXAtbGliKTogVXNlICQoTElCVE9PTCkgLS1jb25maWcgdG8gZ2V0IHRoZQoJbmFtZSBvZiB0aGUgbGlidG9vbCBkaXJlY3RvcnkuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKRnJpIEZlYiAyNSAxODozOToyNiAyMDAwICBSb2RuZXkgQnJvd24gKFJvZG5leUJyb3duQHBtc2MuY29tKQoKCSogc29tLmMgKFNPTV9IT1dUTyk6IERlZmluZS4KCShzb21faHBwYV9ob3d0b190YWJsZSk6IFVzZSBpdC4KCjIwMDAtMDItMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogY29uZmlnLmJmZDogRW5hYmxlIDY0IGJpdCBzdXBwb3J0IGZvciBHTlUvTGludXgvc3BhcmMuCgoJKiBjb25maWcuYmZkOiBFbmFibGUgNjQgYml0IHN1cHBvcnQgZm9yIFNvbGFyaXM3Ky9zcGFyYy4KCjIwMDAtMDItMjQgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogc29tLmMgKHNvbV9taXNjX3N5bWJvbF9pbmZvKTogIEFkZCBmaWVsZAoJc2Vjb25kYXJ5X2RlZi4KCShzb21fYmZkX2Rlcml2ZV9taXNjX3N5bWJvbF9pbmZvKTogIEluaXRpYWxpemUKCXNlY29uZGFyeV9kZWYuCgkoc29tX2J1aWxkX2FuZF93cml0ZV9zeW1ib2xfdGFibGUpOiBLZWVwIHRyYWNrCglvZiBzZWNvbmRhcnlfZGVmIGZpZWxkLgoJKHNvbV9zbHVycF9zeW1ib2xfdGFibGUpOiBTZXQgQlNGX1dFQUsgc3ltYm9sIGZsYWcKCWlmIHNlY29uZGFyeV9kZWYgZmllbGQgaXMgc2V0LgoJKHNvbV9iZmRfYXJfd3JpdGVfc3ltYm9sX3N0dWZmKTogSW5pdGlhbGl6ZQoJc2Vjb25kYXJ5X2RlZi4KCjIwMDAtMDItMjMgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZHdhcmYyLmMgKHJlYWRfYWRkcmVzcyk6IFJlYWQgMTYtYml0cyBhZGRyZXNzZXMuCgkocGFyc2VfY29tcF91bml0KTogQWNjZXB0IGFkZHJfc2l6ZSA9PSAyLgoKMjAwMC0wMi0yMyAgQWxhbiBNb2RyYSAgPGFsYW5Ac3ByaS5sZXZlbHMudW5pc2EuZWR1LmF1PgoKCSogYmZkLWluLmg6IFVwZGF0ZSBjb3B5cmlnaHQgZGF0ZS4KCjIwMDAtMDItMjMgIExpbmFzIFZlcHN0YXMgPGxpbmFzQGxpbmFzLm9yZz4KCgkqIGNwdS1pMzcwLmM6IE5ldyBmaWxlLgoJKiBlbGYzMi1pMzcwLmM6ICBOZXcgZmlsZS4KCSogYXJjaHVyZXMuYyAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlKTogQWRkIGJmZF9hcmNoX2kzNzAuCgkoYmZkX2kzNzBfYXJjaCk6IE5ldy4KCShiZmRfYXJjaHVyZXNfbGlzdCk6IEFkZCBiZmRfaTM3MF9hcmNoLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogQWRkIGJmZF9hcmNoX2kzNzAuCgkqIE1ha2VmaWxlLmFtOiBBZGQgc3VwcG9ydCBmb3IgSUJNIDM3MCBlbGYuCgkqIGNvbmZpZy5iZmQ6IExpa2V3aXNlLgoJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBsaWJiZmQuaCAoYmZkX3JlbG9jX2NvZGVfcmVhbF9uYW1lcyk6IExpa2V3aXNlLgoJKiByZWxvYy5jIChiZmRfcmVsb2NfY29kZV90eXBlKTogTGlrZXdpc2UuCgkqIHRhcmdldHMuYzogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTAyLTIyICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfaW5mb190b19ob3d0b19yZWwpOiBHaXZlIGEgd2FybmluZyBmb3IKCWludmFsaWQgcmVsb2NhdGlvbiB0eXBlcywgYW5kIGNoYW5nZSB0aGVtIHRvIFJfMzg2X05PTkUuCgoyMDAwLTAyLTIyICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IElmIGEgdmVyc2lvbiBzeW1ib2wgaXMKCW5vdCBkZWZpbmVkLCBkb24ndCBhZGQgYSBzZWNvbmQgRUxGX1ZFUl9DSFIuCgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluayk6IENhbGwgb3V0cHV0X2V4dHN5bSBmb3IgZ2xvYmFsCglzeW1ib2xzIGNvbnZlcnRlZCB0byBsb2NhbCBzeW1ib2xzIGV2ZW4gd2hlbiBzdHJpcHBpbmcgYWxsCglzeW1ib2xzLgoJKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBQcm9jZXNzIGdsb2JhbCBzeW1ib2xzIGNvbnZlcnRlZCB0bwoJbG9jYWwgc3ltYm9scyBldmVuIGlmIHRoZXkgYXJlIGJlaW5nIHN0cmlwcGVkLgoKMjAwMC0wMi0yMSAgQWxhbiBNb2RyYSAgPGFsYW5Ac3ByaS5sZXZlbHMudW5pc2EuZWR1LmF1PgoKCSogYXJjaHVyZXMuYyAoYmZkX29jdGV0c19wZXJfYnl0ZSk6IFJldHVybiB1bnNpZ25lZCBpbnQuCgkoYmZkX2FyY2hfbWFjaF9vY3RldHNfcGVyX2J5dGUpOiBEaXR0by4KCSogbGliYmZkLmMgKGJmZF9yZWFkLCBiZmRfc2Vlayk6IFF1ZWxsIHNpZ25lZCB2cy4gdW5zaWduZWQKCWNvbXBhcmlzb24gd2FybmluZy4KCSogc2VjdGlvbi5jIChiZmRfZ2V0X3NlY3Rpb25fc2l6ZV9iZWZvcmVfcmVsb2MpOiBRdWVsbCBzaWduZWQKCXZzLiB1bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmcuCgkoYmZkX2dldF9zZWN0aW9uX3NpemVfYWZ0ZXJfcmVsb2MpOiBTYW1lIGhlcmUuICBGaXggcGFyZW50aGVzZXMgdG9vLgoJKiB0cmFkLWNvcmUuYyAodHJhZF91bml4X2NvcmVfZmlsZV9wKTogQ29ycmVjdCAyMDAwLTAxLTI3CgljaGFuZ2UuICBXaGF0IHdhcyBJIHRoaW5raW5nPwoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBlbGZsaW5rLmggKGVsZl9nY19zd2VlcCk6IFNraXAgbm9uLWVsZiBpbnB1dCBiZmRzLgoJKGVsZl9nY19zZWN0aW9ucyk6IFNhbWUgaGVyZS4KCShlbGZfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzKTogQW5kIGhlcmUuCgoyMDAwLTAyLTIxICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCglFTEYgSFBQQSBkb2Vzbid0IHdvcmsgYXQgcHJlc2VudDsgcmVtb3ZlIGl0IHVudGlsIGl0IGRvZXMuCgkqIGNvbmZpZy5iZmQ6IENvbW1lbnQgb3V0IHNldHRpbmcgdGFyZ19kZWZ2ZWMgdG8KCWJmZF9lbGYzMl9ocHBhX3ZlYy4KCSogTWFrZWZpbGUuYW06IFJlYnVpbGQgZGVwZW5kZW5jaWVzLgoJKEJGRDMyX0JBQ0tFTkRTKTogUmVtb3ZlIGVsZjMyLWhwcGEubG8uCgkoQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogUmVtb3ZlIGVsZjMyLWhwcGEuYy4KCShTT1VSQ0VfSEZJTEVTKTogUmVtb3ZlIGVsZjMyLWhwcGEuaCBhbmQgaHBwYV9zdHVicy5oLgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCSogdGFyZ2V0cy5jIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IENvbW1lbnQgb3V0IGJmZF9lbGYzMl9ocHBhX3ZlYy4KCjIwMDAtMDItMTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FyY2hfbWFjaF9ob29rKTogVXNlIGZyZWUoKSwgYmVjYXVzZSB0aGVyZQoJaXMgbm8gYmZkX2ZyZWUoKS4gIFJldmVydCBiZmRfZnJlZSBwYXJ0IG9mIHByZXZpb3VzIGNoYW5nZS4KCjIwMDAtMDItMTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FyY2hfbWFjaF9ob29rKTogRG9uJ3QgdXNlIHZhcmlhYmxlLXNpemUKCWFycmF5cy4KCShjb2ZmX2NvbXB1dGVfc2VjdGlvbl9maWxlX3Bvc2l0aW9ucyk6IFVzZSBiZmRfZnJlZSB0byBwYWlyCgliZmRfbWFsbG9jLgoJKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogTGlrZXdpc2UuCgoJKiBjb2ZmLXJzNjAwMC5jICh4Y29mZl9ob3d0b190YWJsZV8xNik6IE5ldyB2YXJpYWJsZS4KCSh4Y29mZl9ydHlwZTJob3d0byk6IEhhbmRsZSAxNi1iaXQgdmFyaWFudHMgb2YgMzItYml0IHJlbG9jcy4KCjIwMDAtMDItMTggIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogY29mZi1yczYwMDAuYyAoWENPRkZBUk1BR0JJRyk6IE5ldyBtYWNyby4KCSh4Y29mZl9hcl9maWxlX2hkcl9iaWcpOiBOZXcgc3RydWN0dXJlLgoJKFNJWkVPRl9BUl9GSUxFX0hEUl9CSUcpOiBOZXcgbWFjcm8uCgkoeGNvZmZfYXJfaGRyX2JpZyk6IE5ldyBzdHJ1Y3R1cmUuCgkoU0laRU9GX0FSX0hEUl9CSUcpOiBOZXcgbWFjcm8uCgkoeGNvZmZfYmlnX2Zvcm1hdF9wKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2FyZGF0YV9iaWcpOiBOZXcgbWFjcm8uCgkoYXJjaF94aGRyX2JpZyk6IE5ldyBtYWNyby4KCSh4Y29mZl9zbHVycF9hcm1hcCk6IEhhbmRsZSBsYXJnZSBhcmNoaXZlcy4KCSh4Y29mZl9hcmNoaXZlX3ApOiBEZXRlY3QgbGFyZ2UgYXJjaGl2ZXMuCgkoeGNvZmZfcmVhZF9hcl9oZHIpOiBIYW5kbGUgbGFyZ2UgYXJjaGl2ZXMuCgkoeGNvZmZfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlKTogSGFuZGxlIGxhcmdlIGFyY2hpdmVzLgoJKHhjb2ZmX2dlbmVyaWNfc3RhdF9hcmNoX2VsdCk6IEhhbmRsZSBsYXJnZSBhcmNoaXZlcy4KCSh4Y29mZl93cml0ZV9hcm1hcF9vbGQpOiBSZW5hbWUgZnJvbSB4Y29mZl93cml0ZV9hcm1hcC4KCSh4Y29mZl93cml0ZV9hcm1hcF9iaWcpOiBOZXcgZnVuY3Rpb24uCgkoeGNvZmZfd3JpdGVfYXJtYXApOiBOZXcgZnVuY3Rpb24sIGRpc3BhdGNoIHRvIF9vbGQgb3IgX2JpZy4KCSh4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzX29sZCk6IFJlbmFtZSBmcm9tCgl4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzLgoJKHhjb2ZmX3dyaXRlX2FyY2hpdmVfY29udGVudHNfYmlnKTogTmV3IGZ1bmN0aW9uLgoJKHhjb2ZmX3dyaXRlX2FyY2hpdmVfY29udGVudHMpOiBOZXcgZnVuY3Rpb24sIGRpc3BhdGNoIHRvIF9vbGQgb3IKCV9iaWcuCgoyMDAwLTAyLTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2xpbmtfaGFzaF90YWJsZSk6IFJlbW92ZSBjb3B5X2luZGlyZWN0CglhbmQgaGlkZV9zeW1ib2wgbWVtYmVycy4KCShlbGZfbGlua19oYXNoX2NvcHlfaW5kaXJlY3QpOiBSZW1vdmUuCgkoZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IFJlbW92ZS4KCShzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZCBlbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbAoJYW5kIGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sLgoJKF9iZmRfZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogRGVjbGFyZS4KCShfYmZkX2VsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBEZWNsYXJlLgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX2NvcHlfaW5kaXJlY3QpOiBSZW1vdmUgdGFibGUgYXJndW1lbnQuCgkoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkoX2JmZF9lbGZfbGlua19oYXNoX3RhYmxlX2luaXQpOiBEb24ndCBpbml0IGtpbGxlZCBtZW1iZXJzLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFVzZSB0aGUgYmVkIGZ1bmN0aW9uCglwb2ludGVycyBub3QgZWxmX2xpbmtfaGFzaF97Y29weV9pbmRpcmVjdCxoaWRlX3N5bWJvbH0uCgkoZWxmX2xpbmtfYXNzaWduX3N5bV92ZXJzaW9uKTogTGlrZXdpc2UuCgkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9jb3B5X2luZGlyZWN0X3N5bWJvbCk6IERlZmF1bHQuCgkoZWxmX2JhY2tlbmRfaGlkZV9zeW1ib2wpOiBMaWtld2lzZS4KCShlbGZOTl9iZWQpOiBVcGRhdGUgZm9yIG5ldyBtZW1iZXJzLgoKMjAwMC0wMi0xNyAgS2V2aW4gQnVldHRuZXIgIDxrZXZpbmJAcmVkaGF0LmNvbT4KCgkqIHJzNjAwMC1jb3JlLmMgKENPUkVfREFUQV9TSVpFX0ZJRUxELCBDT1JFX0NPTU1fRklFTEQsIFNBVkVfRklFTEQsCglTVEFDS19FTkRfQUREUik6IERlZmluZSBmb3IgbmV3IGNvcmUgZmlsZSBmb3JtYXQuCgkoTE9BREVSX09GRlNFVF9GSUVMRCwgTE9BREVSX1JFR0lPTl9TSVpFLCBDT1JFX0RVTVApOiBOZXcgZGVmaW5lcwoJZm9yIGhhbmRsaW5nIHRoZSB2YWdhcmllcyBvZiB0aGUgdmFyaW91cyBjb3JlIGZpbGUgc3RydWN0dXJlcyB1c2VkCglieSBBSVggb3ZlciB0aGUgeWVhcnMuCgkocnM2MDAwY29mZl9jb3JlX3AsIHJzNjAwMGNvZmZfY29yZV9maWxlX21hdGNoZXNfZXhlY3V0YWJsZSwKCVJzNmtDb3JEYXRhKTogVXNlIGFib3ZlIGRlZmluZXMgdG8gYWRhcHQgY29kZSB0byB1c2UgQUlYIDQuMydzCgljb3JlX2R1bXB4IHN0cnVjdHVyZS4KClRodSBGZWIgMTcgMDA6MDQ6NDggMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfc2gyLCBiZmRfbWFjaF9zaF9kc3ApOiBOZXcgbWFjcm9zLgoJKGJmZF9tYWNoX3NoM19kc3ApOiBMaWtld2lzZS4KCShiZmRfbWFjaF9zaDQpOiBSZWluc3RhdGUuCgkoYmZkX2RlZmF1bHRfc2Nhbik6IFJlY29nbml6ZSA3NDEwLCA3NzA4LCA3NzI5IGFuZCA3NzUwLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmYtc2guYyAoc3RydWN0IHNoX29wY29kZSk6IGZsYWdzIGlzIG5vIGxvbmdlciBzaG9ydC4KCShVU0VTQVMsIFVTRVNBU19SRUcsIFVTRVNSOCwgU0VUU0FTLCBTRVRTQVNfUkVHKTogTmV3IG1hY3Jvcy4KCShzaF9vcGNvZGU0MSwgc2hfb3Bjb2RlNDIpOiBJbnRlZ3JhdGUgYXMgc2hfb3Bjb2RlNDEuCgkoc2hfb3Bjb2RlMDEsIHNoX29wY29kZTAyLCBzaF9vcGNvZGU0MCk6IEFkZCBzaC1kc3Agb3Bjb2Rlcy4KCShzaF9vcGNvZGU0MSwgc2hfb3Bjb2RlNCwgc2hfb3Bjb2RlODApOiBMaWtld2lzZS4KCShzaF9vcGNvZGVzKTogTm8gbG9uZ2VyIGNvbnN0LgoJKHNoX2RzcF9vcGNvZGVmMCwgc2hfZHNwX29wY29kZWYpOiBOZXcgYXJyYXlzLgoJKHNoX2luc25fdXNlc19yZWcpOiBDaGVjayBmb3IgVVNFU0FTIGFuZCBVU0VTUjguCgkoc2hfaW5zbl9zZXRzX3JlZywgc2hfaW5zbnNfY29uZmxpY3QpOiBDaGVjayBmb3IgU0VUU0FTLgoJKF9iZmRfc2hfYWxpZ25fbG9hZF9zcGFuKTogUmV0dXJuIGVhcmx5IGZvciBTSDQuCglNb2RpZnkgc2hfb3Bjb2RlcyBsb29rdXAgdGFibGUgZm9yIHNoLWRzcCAvIHNoMy1kc3AuCglUYWtlIGludG8gYWNjb3VudCB0aGF0IGZpZWxkIGIgb2YgYSBwYXJhbGxlbCBwcm9jZXNzaW5nIGluc24KCWNvdWxkIGJlIG1pc3Rha2VuIGZvciBhIHNlcGFyYXRlIGluc24uCgkqIGNwdS1zaC5jIChhcmNoX2luZm9fc3RydWN0KTogTmV3IGFycmF5IGVsZW1lbnRzIGZvcgoJc2gyLCBzaC1kc3AgYW5kIHNoMy1kc3AuCglSZWluc3RhdGUgZWxlbWVudCBmb3Igc2g0LgoJKFNIMl9ORVhULCBTSF9EU1BfTkVYVCwgU0gzX0RTUF9ORVhUKTogTmV3IG1hY3Jvcy4KCShTSDRfTkVYVCk6IFJlaW5zdGF0ZS4KCShTSDNfTkVYVCwgU0gzRV9ORVhUKTogQWRqdXN0LgoJKiBlbGYtYmZkLmggKF9zaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IERlY2xhcmUuCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9zZXRfcHJpdmF0ZV9mbGFncyk6IE5ldyBmdW5jdGlvbi4KCShzaF9lbGZfY29weV9wcml2YXRlX2RhdGEsIHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzKTogTGlrZXdpc2UuCgkoc2hfZWxmX21lcmdlX3ByaXZhdGVfZGF0YSk6IE5ldyBmdW5jdGlvbi4KCShlbGZfYmFja2VuZF9vYmplY3RfcCwgYmZkX2VsZjMyX2JmZF9zZXRfcHJpdmF0ZV9iZmRfZmxhZ3MpOiBEZWZpbmUuCgkoYmZkX2VsZjMyX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBEZWZpbmUuCgkoYmZkX2VsZjMyX2JmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ2hhbmdlIHRvCglzaF9lbGZfbWVyZ2VfcHJpdmF0ZV9kYXRhLgoKMjAwMC0wMi0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9saW5rX2hhc2hfdGFibGUpOiBBZGQgY29weV9pbmRpcmVjdCBhbmQKCWhpZGVfc3ltYm9sIG1lbWJlcnMuCgkoZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogTmV3LgoJKGVsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBOZXcuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQnJlYWsgb3V0IGNvcHkgZnJvbQoJaW5kaXJlY3QgbmV3IG5ldyBzeW1ib2wgdG8gZWxmLmMuCgkoZWxmX2xpbmtfYXNzaWduX3N5bV92ZXJzaW9uKTogQnJlYWsgb3V0IHByaXZhdGl6YXRpb24gb2YKCW5vbi1leHBvcnRlZCBzeW1ib2wgdG8gZWxmLmMuCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IE5ldy4KCShfYmZkX2VsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBOZXcuCgkoX2JmZF9lbGZfbGlua19oYXNoX3RhYmxlX2luaXQpOiBJbml0IGNvcHlfaW5kaXJlY3QgYW5kIGhpZGVfc3ltYm9sLgoKMjAwMC0wMi0xMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBzZWN0aW9uLmMgKF9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCk6IEFkZCBpbmZvIHBhcmFtZXRlci4KCUlmIGl0IHBhc3NlZCBhcyBub24tTlVMTCwgdXNlIGl0IHRvIGNoZWNrIHdoZXRoZXIgYW55IGlucHV0IEJGRAoJaGFzIGFuIGlucHV0IHNlY3Rpb24gd2hpY2ggdXNlcyB0aGlzIG91dHB1dCBzZWN0aW9uLiAgQ2hhbmdlIGFsbAoJY2FsbGVycy4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKCSogYmZkLWluLmg6IE1vdmUgZGVjbGFyYXRpb25zIG9mIGJmZF9nZXRfZWxmX3BoZHJfdXBwZXJfYm91bmQgYW5kCgliZmRfZ2V0X2VsZl9waGRycyBpbiBmcm9tIGJmZC1pbjIuaCwgY29ycmVjdGluZyBwYXRjaCBvZgoJMTk5OS0xMS0yOS4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKMjAwMC0wMi0xMCAgVGltb3RoeSBXYWxsICA8dHdhbGxAY3lnbnVzLmNvbT4KCgkqIGNvZmZzd2FwLmggKGNvZmZfc3dhcF9zeW1faW4pOiBBZGQgaG9vayBTV0FQX1NZTV9JTl9QT1NUIHRvCglhbGxvdyBmaW5hbCBtb2RpZmljYXRpb25zIG9mIHN3YXBwZWQtaW4gc3ltYm9sLgoJKGNvZmZfc3dhcF9zeW1fb3V0KTogRGl0dG8gd2l0aCBTV0FQX1NZTV9PVVRfUE9TVC4KCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9yZWxvY3MpOiBVc2UgbWFjcm8KCVNFQ1RJT05fUkVMQVRJVkVfQUJTT0xVVEVfU1lNQk9MX1AgaWYgZGVmaW5lZCB0byBkZXRlcm1pbmUgd2hldGhlcgoJc3ltYm9sIGluZGV4IHNob3VsZCBiZSBzZXQgdG8gLTEuCgpUaHUgRmViIDEwIDIwOjA3OjUwIEdNVCAyMDAwICBUb3NoaXlhc3UgTW9yaXRhICh0b3NoaS5tb3JpdGFAc2VnYS5jb20pCgoJKiBjb2ZmLXNoLmMgKFVTRVMxX1JFRywgVVNFUzJfUkVHLCBTRVRTMV9SRUcsIFNFVFMyX1JFRywKCVVTRVNGMV9SRUcsIFVTRVNGMl9SRUcsIFNFVFNGMV9SRUcsIFNFVFNGMl9SRUcpOiBOZXcgbWFjcm9zLgoJKiAoc2hfaW5zbl9zZXRzX3JlZywgc2hfaW5zbl9zZXRzX2ZyZWcpOiBOZXcgcHJvdG90eXBlcy4KCSogKHNoX2luc25fc2V0c19yZWcsIHNoX2luc25fdXNlc19vcl9zZXRzX3JlZywgc2hfaW5zbnNfc2V0c19mcmVnLAoJc2hfaW5zbnNfdXNlc19vcl9zZXRzX2ZyZWcpOiBOZXcgZnVuY3Rpb25zLgoJKiAoc2hfaW5zbl91c2VzX3JlZywgc2hfaW5zbl91c2VzX2ZyZWcpOiBVc2UgbmV3IG1hY3Jvcy4KCSogKHNoX2luc25zX2NvbmZsaWN0KTogVXNlIG5ldyBmdW5jdGlvbnMgYW5kIG5ldyBtYWNyb3MgdG8KCWRldGVjdCBjb25mbGljdHMgd2hlbiB0d28gaW5zdHJ1Y3Rpb25zIGJvdGggc2V0IHNhbWUgaW50ZWdlciByZWdpc3RlcnMsCglib3RoIHNldCBzYW1lIGZwIHJlZ2lzdGVyLCBhbmQgYm90aCBzZXQgc3BlY2lhbCByZWdpc3Rlci4KCjIwMDAtMDItMDkgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb2ZmZ2VuLmMgKGNvZmZfcmVhbF9vYmplY3RfcCk6IFNldCBhcmNoL21hY2ggaW5mbyBwcmlvciB0bwoJc3dhcHBpbmcgaW4gc2VjdGlvbnMsIHNvIHRoYXQgdGhlIHN3YXBwaW5nIHJvdXRpbmVzIGhhdmUgYWNjZXNzIHRvCgl0aGUgYXJjaC9tYWNoIGluZm8uCgoyMDAwLTAyLTA4IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGNvZmYtZ28zMi5jOiBVcGRhdGUgY29tbWVudC4gVXBkYXRlIGNvcHlyaWdodC4KCjIwMDAtMDEtMjcgIFRob21hcyBkZSBMZWxsaXMgIDx0ZGVsQHdpbmRyaXZlci5jb20+CgoJKiBzeW1zLmMgKGJmZF9kZWNvZGVfc3ltY2xhc3MpCglUd28gbmV3IGNsYXNzIGNoYXJhY3RlcnMgd2VyZSBhZGRlZCAtICdWJyBhbmQgJ3YnLiAgVGhlCgltZWFuaW5nIG9mICdXJyBpcyBub3cgcmVzdHJpY3RlZCB0byBqdXN0IHdlYWsgbm9uLW9iamVjdAoJc3ltYm9scy4gIFRoaXMgYWxsb3dzIGRpZmZlcmVudGlhdGlvbiBiZXR3ZWVuLCBmb3IgZXhhbXBsZSwKCXdlYWsgZnVuY3Rpb25zIHZzIHdlYWsgb2JqZWN0cy4gIG5tIGZvciBleGFtcGxlIG5vdyBkdW1wczoKCSdXJyA9IHdlYWsgZ2xvYmFsCgkndycgPSB3ZWFrIHVucmVzb2x2ZWQKCSdWJyA9IHdlYWsgZ2xvYmFsIG9iamVjdAoJJ3YnID0gd2VhayB1bnJlc29sdmVkIG9iamVjdAoKCShiZmRfaXNfdW5kZWZpbmVkX3N5bWNsYXNzKTogTmV3IGZ1bmN0aW9uLiAgUmV0dXJuIHRydWUgaWYgdGhlCglnaXZlbiBzeW1ib2wgY2xhc3MgcmVwcmVzZW50cyBhbmQgdW5kZWZpbmVkL3VucmVzb2x2ZWQgc3ltYm9sLgoKCShiZmRfc3ltYm9sX2luZm8pOiBVc2UgYmZkX2lzX3VuZGVmaW5lZF9zeW1jbGFzcyB0byBjaGVjayBmb3IKCXVucmVzb2x2ZWQgc3ltYm9scy4KCgkqIGJmZC1pbjIuaDogQWRkIHByb3RvdHlwZSBmb3IgYmZkX2lzX3VuZGVmaW5lZF9zeW1ib2woKS4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZ2V0X3N5bWJvbF90eXBlKTogSWYgYSBzeW1ib2wgaGFzIHRoZQoJU1RUX0FSTV8xNkJJVCBmbGFnIHNldCwgYnV0IGl0IGlzIG5vdCBhdHRhY2hlZCB0byBhIGRhdGEgb2JqZWN0CglyZXR1cm4gU1RUX0FSTV8xNkJJVCBzbyB0aGF0IGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBjb2RlIGJ5IHRoZQoJZGlzYXNzZW1ibGVyLgoKMjAwMC0wMS0yNyAgQWxhbiBNb2RyYSAgPGFsYW5Ac3ByaS5sZXZlbHMudW5pc2EuZWR1LmF1PgoKCSogY29mZi1pMzg2LmMgKGkzY29mZl9vYmplY3RfcCk6IFJlbW92ZSBwcm90b3R5cGUuCglVcGRhdGUgY29weXJpZ2h0LgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IEFkZCBjb25zdAoJdG8gbmFtZS4gIFVwZGF0ZSBjb3B5cmlnaHQuCgoJKiB0cmFkLWNvcmUuYyAodHJhZF91bml4X2NvcmVfZmlsZV9wKTogQ2FzdCBjb3JlX3JlZ3NlYwoJYXNzaWdubWVudCB0byBhdm9pZCB3YXJuaW5nLiAgVXBkYXRlIGNvcHlyaWdodC4KCjIwMDAtMDEtMjQgIFJvYmVydCBMaXBlICAocm9iZXJ0bEBzY28uY29tKQoKCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBHZXQgYnVmZiB2aWEgYmZkX21hbGxvYwoJaW5zdGVhZCBvZiB1c2luZyBHTlUgQyBleHRlbnNpb24uCgoyMDAwLTAxLTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogbGliYmZkLmMgKGJmZF9yZWFkKTogRG8gbm90IGF0dGVtcHQgdG8gZ2V0IGEgbmVnYXRpdmx5IHNpemVkCglhbW91bnQgZnJvbSBhIGJmZF9pbl9tZW1vcnkgc3RydWN0dXJlLgoJKGJmZF9zZWVrKTogRG8gbm90IGFsbG93IHNlZWtzIHBhc3QgdGhlIGVuZCBvZiBhIGJmZF9pbl9tZW1vcnkKCXN0cnVjdHVyZS4KCjIwMDAtMDEtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsaW5rZXIuYyAoZGVmYXVsdF9pbmRpcmVjdF9saW5rX29yZGVyKTogb29wcyAtIGZpeCBpbmNvcnJlY3RseQoJYXBwbGllZCBwYXRjaCBmcm9tIFRpbSBXYWxsLgoKMjAwMC0wMS0xMyAgVGltb3RoeSBXYWxsICh0d2FsbEB0aWFjLm5ldD4KCgkqIGNvZmZjb2RlLmg6IFVzZSBiZmRfY29mZl94eHggaW5zdGVhZCBvZiB0aGUgbWFjcm8gWFhYICh3aGVyZSB4eHgKCT0gc2NuaHN6LCBmaWxoc3osIHJlbHN6LCBhb3V0c3osIGV0YykKCgkqIGNvZmZzd2FwLmg6IERpdHRvLgoKMjAwMC0wMS0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl90aHVtYl90b19hcm1fc3R1Yik6IEZpeCBvZmZzZXQgaW4gYnJhbmNoIHRvCglpbnRlcndvcmsgdGh1bWIgdG8gYXJtIHN0dWIuCgoyMDAwLTAxLTEzICBUaW1vdGh5IFdhbGwgKHR3YWxsQHRpYWMubmV0PgoKCSogYXJjaHVyZXMuYyAoYmZkX29jdGV0c19wZXJfYnl0ZSk6IE5ldyBmdW5jdGlvbjogUmV0dXJuCgl0YXJnZXQgYnl0ZSBzaXplLgoJKGJmZF9hcmNoX21hY2hfb2N0ZXRzX3Blcl9ieXRlKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4gdGFyZ2V0CglieXRlIHNpemUuCgoJKiBzZWN0aW9uLmM6IERpc3Rpbmd1aXNoIGJldHdlZW4gb2N0ZXRzIGFuZCBieXRlcyBmb3IgdXNhZ2Ugb2YKCV9jb29rZWRfc2l6ZSwgIF9yYXdfc2l6ZSwgYW5kIG91dHB1dF9vZmZzZXQuICBDbGFyaWZ5CglkZXNjcmlwdGlvbiBvZiBiZmRfc2V0X3NlY3Rpb25fY29udGVudHMuCgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoJKiBjb2ZmZ2VuLmM6IEluZGljYXRlIHRoYXQgdGhlIG9mZnNldCBwYXJhbWV0ZXIgaXMgaW4gYnl0ZXMsIG5vdAoJb2N0ZXRzLgoKCSogY29mZmxpbmsuYyAoYmZkX2NvZmZfbGlua19pbnB1dF9iZmQpOiBVc2UgYmZkX29jdGV0c19wZXJfYnl0ZQoJd2hlcmUgYXBwcm9wcmlhdGUgdG8gZ2V0IHRoZSBvY3RldCBvZmZzZXQgd2hlbiBjYWxsaW5nCgliZmRfc2V0X3NlY3Rpb25fY29udGVudHMuCgkoYmZkX2NvZmZfcmVsb2NfbGlua19vcmRlcik6IERpdHRvLgoKCSogbGlua2VyLmMgKGJmZF9nZW5lcmljX3JlbG9jX2xpbmtfb3JkZXIpOiBEaXR0by4KCShfYmZkX2RlZmF1bHRfbGlua19vcmRlcik6IERpdHRvLgoKCSogcmVsb2MuYyAoYmZkX3BlcmZvcm1fcmVsb2NhdGlvbik6ICBEaXN0aW5ndWlzaCBiZXR3ZWVuIG9jdGV0cwoJYW5kIGJ5dGVzLiAgVXNlIG9jdGV0cyB3aGVuIGluZGV4aW5nIGludG8gb2N0ZXQgZGF0YTsgdXNlIGJ5dGVzCgl3aGVuIGNhbGN1bGF0aW5nIHRhcmdldCBhZGRyZXNzZXMuCgkoYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IERpdHRvLgoKCSogc3JlYy5jIChzcmVjX3dyaXRlX3NlY3Rpb24pOiBEaXR0by4KCjIwMDAtMDEtMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLW1jb3JlLmMgKENPRkZfREVGQVVMVF9TRUNUSU9OX0FMSUdOTUVOVF9QT1dFUik6IENoYW5nZSBmcm9tCgkzIHRvIDIuICBUaGlzIGFsbG93cyA0IGJ5dGUgc2l6ZWQgc2VjdGlvbnMsIHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IKCWRsbHRvb2wgdG8gYnVpbGQgZnVuY3Rpb25pbmcgRExMcy4KCjIwMDAtMDEtMTAgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvbmZpZy5iZmQgKGFybSotKi1saW51eC1nbnUqKTogTWF0Y2ggaW5zdGVhZCBvZiBhcm0qLSotbGludXgtZ251LgoJKGFybSotKi1jb25peCopOiBOZXcgdGFyZ2V0LgoKMjAwMC0wMS0xMCAgRWdvciBEdWRhICA8ZGVvQGxvZ29zLW0ucnU+CgoJKiBjb25maWcuYmZkOiBJbmNsdWRlIGVsZjMyX2kzODYgdmVjdG9yIHRvIHRhcmdldCBsaXN0IGZvciBjeWd3aW4KCWFuZCBtaW5ndy4KCgkqIGNvbmZpZy5pbjogVW5kZWZpbmUgSEFWRV9XSU4zMl9QU1RBVFVTX1QuCgkqIGNvbmZpZ3VyZS5pbjogVGVzdCBmb3Igc3RydWN0dXJlIHdpbjMyX3BzdGF0dXNfdCBpbgoJPHN5cy9wcm9jZnMuaD4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKCSogZWxmLmMgKGVsZmNvcmVfZ3Jva193aW4zMnBzdGF0dXMpOiBOZXcgZnVuY3Rpb246IHByb2Nlc3MKCXdpbjMyX3BzdGF0dXNfdCBub3RlcyBpbiBlbGYgY29yZSBmaWxlLgoJKGVsZmNvcmVfZ3Jva19ub3RlKTogRGV0ZWN0IHdpbjMyX3BzdGF0dXMgbm90ZXMuCgoyMDAwLTAxLTAzICBNYXJ0aW4gdi4gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IFByb2Nlc3Mgc3ltYm9sCgl2aXNpYmlsaXR5LgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IENvbWJpbmUgdmlzaWJpbGl0aWVzLgoJKiBlbGYuYyAoYmZkX2VsZl9wcmludF9zeW1ib2wpOiBJbnRlcnByZXQgc3Rfb3RoZXIgYXMgdmlzaWJpbGl0eS4KCkZvciBvbGRlciBjaGFuZ2VzIHNlZSBDaGFuZ2VMb2ctOTg5OQoMCkxvY2FsIFZhcmlhYmxlczoKbW9kZTogY2hhbmdlLWxvZwpsZWZ0LW1hcmdpbjogOApmaWxsLWNvbHVtbjogNzQKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpFbmQ6Cg==