ICMgQVBQTEUgTE9DQUwgYmVnaW4gbWFpbmxpbmUgcmFkYXIgNjE5NDg3OQoyMDA3LTA4LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjkzNjUKCSogcHQuYyAob3V0ZXJtb3N0X3RpbnN0X2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKiBsZXguYyAoaW5fbWFpbl9pbnB1dF9jb250ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIGRlY2wyLmMgKGNvbnN0cmFpbl9jbGFzc192aXNpYmlsaXR5KTogVXNlIGl0IHRvIGF2b2lkIHdhcm5pbmcKCWFib3V0IHVzZXMgb2YgdGhlIGFub255bW91cyBuYW1lc3BhY2UgaW4gdGhlIG1haW4gaW5wdXQgZmlsZS4KCQogIyBBUFBMRSBMT0NBTCBlbmQgbWFpbmxpbmUgcmFkYXIgNjE5NDg3OQogIyBBUFBMRSBMT0NBTCBiZWdpbiBmb3ItZnNmLTRfNCAzMjc0MTMwIDUyOTU1NDkKMjAwNy0wOC0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJUmFkYXIgNTI5NTU0OQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2l0ZXJhdGlvbl9zdGF0ZW1lbnQpOiBIYW5kbGUgYXR0cmlidXRlcy4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2Zvcl9zdG10KTogUHV0IGF0dHJpYnV0ZXMgaW4gYnVpbHQgdHJlZS4KCShiZWdpbl93aGlsZV9zdG10KTogUHV0IGF0dHJpYnV0ZXMgaW4gYnVpbHQgdHJlZS4KCShiZWdpbl9kb19zdG10KTogUHV0IGF0dHJpYnV0ZXMgaW4gYnVpbHQgdHJlZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgYXR0cmlidXRlcyBmb3IgRk9SX1NUTVQsIFdISUxFX1NUTVQsCglET19TVE1ULgoJKiBjcC1naW1wbGlmeS5jIChnaW1wbGlmeV9jcF9sb29wKTogSGFuZGxlIGF0dHJpYnV0ZXMuCgkoZ2ltcGxpZnlfZm9yX3N0bXQpOiBQYXNzIGF0dHJpYnV0ZXMgdG8gZ2ltcGxpZnlfY3BfbG9vcC4KCShnaW1wbGlmeV93aGlsZV9zdG10KTogUGFzcyBhdHRyaWJ1dGVzIHRvIGdpbXBsaWZ5X2NwX2xvb3AuCgkoZ2ltcGxpZnlfZG9fc3RtdCk6IFBhc3MgYXR0cmlidXRlcyB0byBnaW1wbGlmeV9jcF9sb29wLgoJKiBkdW1wLmMgKGNwX2R1bXBfdHJlZSk6IER1bXAgYXR0cmlidXRlcyBmb3IgRk9SX1NUTVQsIFdISUxFX1NUTVQsCglET19TVE1ULgoJKiBjcC10cmVlLmggKGJlZ2luX3doaWxlX3N0bXQpOiBVcGRhdGUgcHJvdG90eXBlLgoJKGJlZ2luX2RvX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl9mb3Jfc3RtdCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmRlZiAoRk9SX1NUTVQpOiBBZGQgZXh0cmEgcGFyYW1ldGVyLgoJKFdISUxFX1NUTVQpOiBMaWtld2lzZS4KCShET19TVE1UKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfdmVjX2luaXQpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBiZWdpbl9mb3Jfc3RtdC4KCiAjIEFQUExFIExPQ0FMIGVuZCBmb3ItZnNmLTRfNCAzMjc0MTMwIDUyOTU1NDkKMjAwNy0wNi0yOCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkZWNsMi5jIChzdGFydF9vYmplY3RzKTogTWFyayBjb25zdHJ1Y3Rvci1ydW5ubmluZyBmdW5jdGlvbgoJYXMgYXJ0aWZpY2lhbC4KCjIwMDctMDYtMTQgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBFbnN1cmUgdGhhdCBmdW5jdGlvbnMgd2l0aAoJaGlkZGVuIHR5cGVzIGFzIHBhcmFtZXRlcnMgYXJlIGhpZGRlbi4KCglQUiAzMTA5MwoJKiBkZWNsMi5jIChkZXRlcm1pbmVfdmlzaWJpbGl0eSk6IFJlbW92ZSBkdXBsaWNhdGUgY29kZSBmb3IKCWhhbmRsaW5nIHR5cGUgaW5mby4KCjIwMDctMDUtMDcgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogcGFyc2VyLmMgKGNoZWNrX2VtcHR5X2JvZHkpOiBBZGQuCgkoY3BfcGFyc2VyX2l0ZXJhdGlvbl9zdGF0ZW1lbnQpOiBBZGQgY2FsbCB0byBjaGVja19lbXB0eV9ib2R5LgoKICMgQVBQTEUgTE9DQUwgYmVnaW4gbWFpbmxpbmUgMjAwNy0wNS0wOSA1MTczMTQ5CjIwMDctMDUtMDUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCVBSIDMxNzc1CgkqIG1hbmdsZS5jICh3cml0ZV9tYW5nbGVkX25hbWUpOiBNYW5nbGUgc3RhdGljIHZhcmlhYmxlIG5hbWVzLgoJKHdyaXRlX3VucXVhbGlmaWVkX25hbWUpOiBVc2UgbG9jYWwtc291cmNlLW5hbWUgZm9yCgluYW1lc3BhY2Utc2NvcGUgc3RhdGljIHZhcmlhYmxlcy4KCiAjIEFQUExFIExPQ0FMIGVuZCBtYWlubGluZSAyMDA3LTA1LTA5IDUxNzMxNDkKMjAwNi0xMi0wMSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBkZWNsLmMgKHBvcGxldmVsKTogQ2hlY2sgREVDTF9JTklUSUFMIGludmFyaWFudC4KCShkdXBsaWNhdGVfZGVjbHMpOiBQcmVzZXJ2ZSBERUNMX0lOSVRJQUwgd2hlbiBlbGltaW5hdGluZwoJYSBuZXcgZGVmaW5pdGlvbiBpbiBmYXZvdXIgb2YgYW4gb2xkIGRlY2xhcmF0aW9uLgoJKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbik6IERlZmluZSBhbmQgZG9jdW1lbnQgdmFsdWUgb2YKCURFQ0xfSU5JVElBTCBiZWZvcmUgYW5kIGFmdGVyIHJvdXRpbmUuCgkoZmluaXNoX2Z1bmN0aW9uKTogQ2hlY2sgREVDTF9JTklUSUFMIGludmFyaWFudC4KCSogcGFyc2VyLmMgCgkoY3BfcGFyc2VyX2Z1bmN0aW9uX2RlZmluaXRpb25fZnJvbV9zcGVjaWZpZXJzX2FuZF9kZWNsYXJhdG9yKTogCglTa2lwIGR1cGxpY2F0ZSBmdW5jdGlvbiBkZWZpbml0aW9ucy4KCjIwMDYtMTAtMzEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogbmFtZS1sb29rdXAuYyAoZ2V0X2Fub255bW91c19uYW1lc3BhY2VfbmFtZSk6IE5ldy4KCShwdXNoX25hbWVzcGFjZV93aXRoX2F0dHJpYnMpOiBVc2UgZ2V0X2Fub255bW91c19uYW1lc3BhY2VfbmFtZS4KCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IFVwZGF0ZSBmb3IgcmVuYW1lIG9mCglnZXRfZmlsZV9mdW5jdGlvbl9uYW1lX2xvbmcuCgoyMDA3LTAzLTAyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBBZGQgLWxzdGRjKysgd2hlbiBjb21waWxpbmcKCU9iamVjdGl2ZS1DKysuICBEb24ndCBleGl0IGVhcmx5IGlmIC1zaGFyZWQtbGliZ2NjIG5lZWRzIHRvIGJlCglhZGRlZC4KCi8qIEFQUExFIExPQ0FMIG1lcmdlIG1hcmdlciAqLwovKiBTdHVmZiBhYm92ZSBpcyBvbmx5IGluIG1haW5saW5lLCBub3QgdGhlIDQuMiBicmFuY2ggKi8KMjAwNy0wNy0xOSAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4yLjEgcmVsZWFzZWQuCgoyMDA3LTA3LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zMjIzMgoJKiBwdC5jIChyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBSb2J1c3RpZnkuICBSZXR1cm4gYQoJYm9vbCwgbm90IGFuIGludC4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgoyMDA3LTA3LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zMjI0NQoJKiBpbml0LmMgKGJ1aWxkX3plcm9faW5pdCk6IEFsd2F5cyBidWlsZCBhbiBpbml0aWFsaXplciBmb3IKCW5vbi1zdGF0aWMgc3RvcmFnZS4KCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBVc2UgYnVpbGRfemVyb19pbml0LgoKCVBSIGMrKy8zMjI1MQoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQWx3YXlzIHBhc3MgdGhlIGFsbG9jYXRpb24gZnVuY3Rpb24gdG8KCWJ1aWxkX29wX2RlbGV0ZV9jYWxsLgoJKiBjYWxsLmMgKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogSGFuZGxlIG9wZXJhdG9yIGRlbGV0ZSB3aXRoIGEKCXZhcmlhYmxlLWFyZ3VtZW50IGxpc3QuICBEbyBub3QgaXNzdWUgYW4gZXJyb3Igd2hlbiBubyBtYXRjaGluZwoJZGVhbGxvY2F0aW9uIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYSBuZXcgb3BlcmF0b3IuCgoJUFIgYysrLzMxOTkyCgkqIGNwLXRyZWUuaCAoYW55X3ZhbHVlX2RlcGVuZGVudF9lbGVtZW50c19wKTogRGVjbGFyZSBpdC4KCSogZGVjbC5jICh2YWx1ZV9kZXBlbmRlbnRfaW5pdF9wKTogTmV3IGZ1bmN0aW9uLgoJKGNwX2ZpbmlzaF9kZWNsKTogVXNlIGl0LgoJKiBwdC5jICh2YWx1ZV9kZXBlbmRlbnRfZXhwcmVzc2lvbl9wKTogVXNlCglhbnlfdmFsdWVfZGVwZW5kZW50X2VsZW1lbnRzX3AuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uKTogQWRkIGNvbW1lbnQgYWJvdXQKCXRyZWF0aW5nIGRlcGVuZGVudCBxdWFsaWZpZWQgbmFtZXMgYXMgaW50ZWdyYWwKCWNvbnN0YW50LWV4cHJlc3Npb25zLgoKMjAwNy0wNy0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzEzMzgKCSogY3AtdHJlZS5oIChBUklUSE1FVElDX1RZUEUpOiBJbmNsdWRlIENPTVBMRVhfVFlQRS4KCSogdHlwZWNrLmMgKHR5cGVfYWZ0ZXJfdXN1YWxfYXJpdGhtZXRpY19jb252ZXJzaW9ucyk6IEFkanVzdCwgYXMKCUNPTVBMRVhfVFlQRSBpcyBub3cgYW4gQVJJVEhNRVRJQ19UWVBFLgoJKiBpbml0LmMgKGJ1aWxkX3plcm9faW5pdCk6IEFkanVzdCwgYXMKCUNPTVBMRVhfVFlQRSBpcyBub3cgYSBTQ0FMQVJfVFlQRS4KCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IEFsbG93IGJyYWNlLWVuY2xvc2VkIGluaXRpYWxpemVycyBmb3IKCUNPTVBMRVhfVFlQRSwgZXZlbiB0aG91Z2ggdGhhdCBpcyBub3cgYSBTQ0FMQVJfVFlQRS4KCjIwMDctMDctMDMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBjKysvMzI2MDkKCSogY2xhc3MuYyAoZml4ZWRfdHlwZV9vcl9udWxsKTogUmUtbG9va3VwIHRoZSBoYXNodGFibGUgc2xvdAoJYWZ0ZXIgcmVjdXJzaW5nLgoKMjAwNy0wNy0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzMxNzQ4CgkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2NsYXVzZXMpOiBVc2UgJXFEIGluc3RlYWQgb2YgJXFFIGZvcgoJREVDTF9QIGluIG5vdCBhIHZhcmlhYmxlIGFuZCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGVycm9yIG1lc3NhZ2VzLgoKMjAwNy0wNi0yNyAgU2ltb24gTWFydGluICA8c2ltYXJ0aW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8yNzQ5MgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IHJlc2V0IERFQ0xfSU5WQUxJRF9PVkVSUklERVJfUCBmb3IKCWZ1bmN0aW9uIGRlY2xzLgoKMjAwNy0wNi0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9WQVJfTUFSS0VEX1ApOiBSZW1vdmUuCgkoREVDTF9BTk9OX1VOSU9OX1ZBUl9QKTogTmV3IG1hY3JvLgoJKiBjbGFzcy5jIChmaXhlZF90eXBlX29yX251bGwpOiBUaWR5LiAgVXNlIGEgaGFzaCB0YWJsZSwgcmF0aGVyCgl0aGFuIERFQ0xfVkFSX01BUktFRF9QLCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIHZhcmlhYmxlcyB3ZSBoYXZlCglzZWVuLgoJKiBkZWNsLmMgKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IENvbXBsYWluIGFib3V0IHJlZGVjbGFyaW5nCglhbm9ueW1vdXMgdW5pb24gbWVtYmVycyBhdCBuYW1lc3BhY2Ugc2NvcGUuCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IFNldCBERUNMX0FOT05fVU5JT05fVkFSX1AuCgoyMDA3LTA2LTA4ICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCVBSIGMrKy8zMTgwOQoJUFIgYysrLzMxODA2CglCYWNrcG9ydCBmcm9tIG1haW5saW5lOgoJMjAwNy0wNS0zMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogQWxzbyBjbGVhciB3YXNfcmVhZG9ubHkgaWYgYSBzdGF0aWMgdmFyCgluZWVkcyBydW50aW1lIGluaXRpYWxpemF0aW9uLgoKCTIwMDctMDUtMzAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENsZWFyIFRSRUVfUkVBRE9OTFkgZmxhZyBvbiBUUkVFX1NUQVRJQwoJdmFyaWFibGVzIHRoYXQgbmVlZCBydW50aW1lIGluaXRpYWxpemF0aW9uLgoKMjAwNy0wNS0xMyAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4yLjAgcmVsZWFzZWQuCgoyMDA3LTA0LTI4ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBDKysvMzAyMjEKCSogZGVjbC5jIChyZXNoYXBlX2luaXRfcik6IERvbid0IHJlc2hhcGUgdGhlIGZpcnN0IGVsZW1lbnQgaWYgaXQKCWlzIGEgcG9pbnRlciB0byBtZW1iZXIgZnVuY3Rpb24uCgoyMDA3LTA0LTI2ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBDKysvMzAwMTYKCSogdHlwZWNrLmMgKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3RfMSk6IE9ubHkgYWxsb3cgY29udmVyc2lvbiB0bwoJaW50ZWdlcmFsIHR5cGVzIGZyb20gdmVjdG9ycyB0eXBlcy4KCjIwMDctMDQtMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMTU5OAoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9jbGF1c2VzKTogRG9uJ3QgY3JlYXRlIENQX09NUF9DTEFVU0VfSU5GTwoJZm9yIHR5cGUgZGVwZW5kZW50IE9NUF9DTEFVU0VfREVDTHMuCgoyMDA3LTA0LTI0ICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCglQUiBjKysvMzA1MDAKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFNldCBpbl9zeXN0ZW1faGVhZGVyLgoKMjAwNy0wNC0xNyAgU2ltb24gTWFydGluICA8c2ltYXJ0aW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8zMTUxNwoJKiBwdC5jICh2YWx1ZV9kZXBlbmRlbnRfZXhwcmVzc2lvbl9wKTogSGFuZGxlIE1PRE9QX0VYUFJzLgoKMjAwNy0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzE1MTMKCSogY2FsbC5jIChjb252ZXJ0X2Zvcl9hcmdfcGFzc2luZyk6IENvbnZlcnQgYml0ZmllbGRzIHRvIHRoZWlyCglkZWNsYXJlZCB0eXBlcy4KCjIwMDctMDQtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMTA3NAoJKiBjYWxsLmMgKHJlZmVyZW5jZV9iaW5kaW5nKTogQWRkIGNfY2FzdF9wIHBhcm0uICBJZiB0cnVlLAoJYWRkIHF1YWxzIHRvIFRPIGFzIG5lZWRlZCB0byBtYWtlIGl0IHJlZmVyZW5jZS1jb21wYXRpYmxlLgoKMjAwNy0wNC0xMCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBjbGFzcy5jIChkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogU2xhbSB0aGUgdnRibCB0eXBlIGJhY2sgdG8KCXZ0YmxfcHRyX3R5cGVfbm9kZSB0byBlbnN1cmUgdGhlIG1vZGUgaXMgY29ycmVjdC4KCjIwMDctMDQtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMxNDQ5CgkqIGNsYXNzLmMgKGJ1aWxkX2Jhc2VfcGF0aCk6IEVuc3VyZSB0aGF0IHRoZSBjb252ZXJ0ZWQgcG9pbnRlciBoYXMKCXRoZSBzYW1lIGN2LXF1YWxpZmljYXRpb24gYXMgdGhlIGlucHV0LgoKMjAwNy0wNC0wMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzMwODQ3CgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IEZvciBDT05EX0VYUFIgb24gTEhTLCBpZiBSSFMgaGFzIHZvaWQKCXR5cGUgaXNzdWUgZXJyb3IgYW5kIHJldHVybiBlYXJseS4KCjIwMDctMDMtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8zMTE4NwoJKiB0eXBlY2suYyAoY3BfdHlwZV9yZWFkb25seSk6IE5ldyBmbi4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBTZXQgaW1wbGljaXQgREVDTF9USElTX1NUQVRJQyBoZXJlLgoJKGNwX2ZpbmlzaF9kZWNsKTogTm90IGhlcmUuCgoyMDA3LTAzLTMxICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIDI5NTg1CgkqIGNsYXNzLmMgKGRmc19hY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBVc2UgYnVpbGRfYWRkcmVzcwoJdG8gYnVpbGQgdGhlIHZ0YmwgZW50cnkuCgoyMDA3LTAzLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zMDg2MwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3BhcnNlX2FuZF9kaWFnbm9zZV9pbnZhbGlkX3R5cGVfbmFtZSk6IERvCglub3QgY29uc3VtZSB0b2tlbnMgd2hlbiBmYWlsaW5nLgoKMjAwNy0wMy0yMiAgSmltIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeC5jb20+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzEyNzMKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogVXNlIHR5cGVfZGVjYXlzX3RvLiAgS2VlcCBGQ09ERQoJY29uc2lzdGVudCB3aXRoIEZST00uCgoyMDA3LTAzLTE0ICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBjKysvMzExNjUKCSogY2FsbC5jICAoY29udmVydF9kZWZhdWx0X2FyZyk6IEluc3RlYWQgb2YgY29weWluZyB0aGUgbm9kZSwKCXVuc2hhcmUgaXQuCgoyMDA3LTAzLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGJvb3RzdHJhcC8zMDg5OQoJKiBNYWtlLWxhbmcuaW4gKGRvYy9nKysuMSk6IFVzZSAkPCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBmcm9tCgl3aGljaCB0byBjb3B5LgoKMjAwNy0wMy0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzEwMzgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBEaXNhbGxvdyBjb21wb3VuZAoJbGl0ZXJhbHMgaW4gY29uc3RhbnQgZXhwcmVzc2lvbnMuCgoyMDA3LTAzLTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFudEBnb29nbGUuY29tPgoKCUJhY2twb3J0ZWQgLWZzdHJpY3Qtb3ZlcmZsb3cvLVdzdHJpY3Qtb3ZlcmZsb3cgZnJvbSBtYWlubGluZToKCTIwMDctMDEtMTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQ2FsbCBWRUNfcmVzZXJ2ZV9leGFjdCByYXRoZXIgdGhhbiBwYXNzaW5nCglhIG5lZ2F0aXZlIHNpemUgdG8gVkVDX3Jlc2VydmUuCgoyMDA3LTAzLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zMTAzOAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IERpc2FsbG93IGNvbXBvdW5kCglsaXRlcmFscyBpbiBjb25zdGFudCBleHByZXNzaW9ucy4KCglQUiBjKysvMzAzMjgKCSogc2VtYW50aWNzLmMgKGZpbmlzaF90eXBlb2YpOiBVc2UgdW5sb3dlcmVkX2V4cHJfdHlwZS4KCQoyMDA3LTAzLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zMDI3NAoJKiBjcC10cmVlLmggKHVubG93ZXJlZF9leHByX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIHR5cGVjay5jIChpc19iaXRmaWVsZF9leHByX3dpdGhfbG93ZXJlZF90eXBlKTogSGFuZGxlCglDT01QT1VORF9FWFBSLCBNT0RJRllfRVhQUiwgYW5kIFNBVkVfRVhQUi4KCSh1bmxvd2VyZWRfZXhwcl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3VuYXJ5X29wKTogRGlzYWxsb3cgcHJlZGVjcmVtZW50cyBvZiBib29sIGJpdGZpZWxkcy4KCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIHVubG93ZXJlZF9leHByX3R5cGUuCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IExpa2V3aXNlLgoKMjAwNy0wMy0wOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAZ21haWwuY29tPiAKCglQUiBDKysvMzAxNjgKCSogb3B0aW1pemUuYyAodXBkYXRlX2Nsb25lZF9wYXJtKTogQ29weSBERUNMX0NPTVBMRVhfR0lNUExFX1JFR19QIGFsc28uCgoyMDA3LTAzLTA4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBuZXRjb2xvZ25lLmRlPgoKCVBSIGMrKy8zMDg1MgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29mZnNldG9mKTogSGFuZGxlIENPTVBPVU5EX0VYUFIuCgoyMDA3LTAzLTA3ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBSZXBsYWNlIC1Xc3RyaW5nLWxpdGVyYWwtY29tcGFyaXNvbgoJYW5kIC1XYWx3YXlzLXRydWUgd2l0aCAtV2FkZHJlc3MuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBSZXBsYWNlIHVuY29uZGl0aW9uYWwgd2FybmluZyB3aXRoCgktV2FkZHJlc3MuCgkKMjAwNy0wMy0wNSAgU2ltb24gTWFydGluICA8c2ltYXJ0aW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8zMDg5NQoJKiB0cmVlLmMgKGNwX3RyZWVfZXF1YWwpOiBQcm9wZXJseSBoYW5kbGUgQ09NUExFWF9DU1QgdHJlZXMuCgoyMDA3LTAyLTIyICBTaW1vbiBNYXJ0aW4gIDxzaW1hcnRpbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzI5NDc1CgkqIGNwLXRyZWUuaCAoc3RydWN0IGRlZmVycmVkX2FjY2Vzc19jaGVjayk6IE5ldyBzdHJ1Y3R1cmUgdG8gcmVwcmVzZW50IGEKCWRlZmVycmVkIGFjY2VzcyBjaGVjay4gSXQgcmVwbGFjZXMgdGhlIHByZXZpb3VzIHJlcHJlc2VudGF0aW9uIGFzIGEgdHJlZS4KCShnZXRfZGVmZXJyZWRfYWNjZXNzX2NoZWNrcyk6IFJldHVybiBhIHZlY3RvciBvZiBzdHJ1Y3QKCWRlZmVycmVkX2FjY2Vzc19jaGVjayBpbnN0ZWFkIG9mIGEgdHJlZSBsaXN0LgoJKHBlcmZvcm1fYWNjZXNzX2NoZWNrcyk6IFRha2UgYSB2ZWN0b3Igb2Ygc3RydWN0IGRlZmVycmVkX2FjY2Vzc19jaGVjawoJaW5zdGVhZCBvZiBhIHRyZWUgbGlzdC4KCShlbmZvcmNlX2FjY2VzcywgcGVyZm9ybV9vcl9kZWZlcl9hY2Nlc3NfY2hlY2spOiBBZGRlZCBhbgoJZXh0cmEgYXJndW1lbnQgdGhhdCByZXByZXNlbnRzIHRoZSBkZWNsYXJhdGlvbiB0byB1c2UgdG8gcHJpbnQKCXBvdGVudGlhbCBlcnJvciBtZXNzYWdlcy4KCSogc2VtYW50aWNzLmMgKHN0cnVjdCBkZWZlcnJlZF9hY2Nlc3MpOiBTdG9yZSB0aGUgZGVmZXJyZWQgYWNjZXNzIGNoZWNrcwoJYXMgYSB2ZWN0b3Igb2Ygc3RydWN0IGRlZmVycmVkX2FjY2Vzc19jaGVjayBpbnN0ZWFkIG9mIGEgdHJlZSBsaXN0LgoJKHB1c2hfZGVmZXJyaW5nX2FjY2Vzc19jaGVja3MpOiBIYW5kbGUgdGhlIGNoYW5nZSBpbiBzdHJ1Y3QKCWRlZmVycmVkX2FjY2Vzcy4KCShnZXRfZGVmZXJyZWRfYWNjZXNzX2NoZWNrcyk6IExpa2V3aXNlLgoJKHBvcF90b19wYXJlbnRfZGVmZXJyaW5nX2FjY2Vzc19jaGVja3MpOiBMaWtld2lzZS4KCShwZXJmb3JtX29yX2RlZmVyX2FjY2Vzc19jaGVjayk6IExpa2V3aXNlLgoJKHBlcmZvcm1fYWNjZXNzX2NoZWNrcyk6IFRha2UgYSB2ZWN0b3Igb2Ygc3RydWN0IGRlZmVycmVkX2FjY2Vzc19jaGVjawoJaW5zdGVhZCBvZiBhIHRyZWUgbGlzdC4KCShmaW5pc2hfbm9uX3N0YXRpY19kYXRhX21lbWJlciwgY2hlY2tfYWNjZXNzaWJpbGl0eV9vZl9xdWFsaWZpZWRfaWQsCglmaW5pc2hfaWRfZXhwcmVzc2lvbik6IEFkanVzdGVkIHRoZSBjYWxsIHRvIHBlcmZvcm1fb3JfZGVmZXJfYWNjZXNzX2NoZWNrLgoJKHBvcF90b19wYXJlbnRfZGVmZXJyaW5nX2FjY2Vzc19jaGVja3MsIHBlcmZvcm1fYWNjZXNzX2NoZWNrcywKCXBlcmZvcm1fb3JfZGVmZXJfYWNjZXNzX2NoZWNrKTogQWRqdXN0ZWQgdGhlIGNhbGwgdG8gZW5mb3JjZV9hY2Nlc3MuCgkqIHBhcnNlci5jIChzdHJ1Y3QgdHJlZV9jaGVjayk6IE5ldyBzdHJ1Y3R1cmUgdG8gc3RvcmUgdmFyaW91cyBkYXRhCglhc3NvY2lhdGVkIHdpdGggYSBDUFBfTkVTVEVEX05BTUVfU1BFQ0lGSUVSIG9yIENQUF9URU1QTEFURV9JRCB0b2tlbi4KCShzdHJ1Y3QgY3BfdG9rZW4pOiBDaGFuZ2VkIHRoZSB2YWx1ZSBmaWVsZCB0byBiZSBhIHVuaW9uIHdpdGggYSBwb2ludGVyIHRvCglhIHN0cnVjdCB0cmVlX2NoZWNrIGZvciBDUFBfTkVTVEVEX05BTUVfU1BFQ0lGSUVSIG9yIENQUF9URU1QTEFURV9JRAoJdG9rZW5zIGFuZCBhIHRyZWUgZmllbGQgZm9yIGFsbCBvdGhlciB0b2tlbnMuCgkoZW9mX3Rva2VuKTogQWRqdXN0ZWQgZHVlIHRvIHRoZSBjaGFuZ2UgaW4gc3RydWN0IGNwX3Rva2VuLgoJKGNwX2xleGVyX2dldF9wcmVwcm9jZXNzb3JfdG9rZW4pOiBMaWtld2lzZS4KCShjcF9sZXhlcl9wdXJnZV90b2tlbik6IExpa2V3aXNlLgoJKGNwX2xleGVyX3B1cmdlX3Rva2Vuc19hZnRlcik6IExpa2V3aXNlLgoJKGNwX2xleGVyX3ByaW50X3Rva2VuKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2Vycm9yKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfc3RyaW5nX2xpdGVyYWwpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9saXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3N0b3JhZ2VfY2xhc3Nfc3BlY2lmaWVyX29wdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9mdW5jdGlvbl9zcGVjaWZpZXJfb3B0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3R5cGVfc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3NpbXBsZV90eXBlX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9pbml0aWFsaXplcl9saXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX21lbWJlcl9zcGVjaWZpY2F0aW9uX29wdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9hdHRyaWJ1dGVfbGlzdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19wcm90b2NvbF9xdWFsaWZpZXJzKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfc2VsZWN0b3IpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vbXBfY2xhdXNlX25hbWUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb21wX2NsYXVzZV9kZWZhdWx0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29tcF9jbGF1c2Vfc2NoZWR1bGUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb21wX3BhcmFsbGVsKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2luaXRpYWxfcHJhZ21hKTogTGlrZXdpc2UuCgkocHJhZ21hX2xleCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9wcmVfcGFyc2VkX25lc3RlZF9uYW1lX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9uZXN0ZWRfbmFtZV9zcGVjaWZpZXJfb3B0KTogTGlrZXdpc2UuCglVc2UgY3BfdG9rZW46OnU6OnRyZWVfY2hlY2tfdmFsdWUgdG8gc2F2ZSB0aGUgdG9rZW4ncyB2YWx1ZSwgdGhlCglhc3NvY2lhdGVkIGRlZmVycmVkIGNoZWNrcyBhbmQgaXRzIHF1YWxpZnlpbmcgc2NvcGUuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2lkKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2RlY2xhcmF0aW9uX2FmdGVyX2V4cG9ydCk6IEFkanVzdGVkIHRoZSBjYWxsIHRvCglnZXRfZGVmZXJyZWRfYWNjZXNzX2NoZWNrcy4KCShjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogVGFrZSB0aGUgYWNjZXNzIGNoZWNrcyBhcyBhIHZlY3RvciBvZiBzdHJ1Y3QKCWRlZmVycmVkX2FjY2Vzc19jaGVjayBpbnN0ZWFkIG9mIGEgdHJlZSBsaXN0LgoJKGNwX3BhcnNlcl9zaW5nbGVfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfcGVyZm9ybV90ZW1wbGF0ZV9wYXJhbWV0ZXJfYWNjZXNzX2NoZWNrcyk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9zaW1wbGVfZGVjbGFyYXRpb24pOiBBZGp1c3RlZCB0aGUgY2FsbCB0bwoJY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvci4KCShjcF9wYXJzZXJfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBBZGp1c3RlZCB0aGUgY2FsbCB0bwoJY3BfcGFyc2VyX3NpbmdsZV9kZWNsYXJhdGlvbi4KCShjcF9wYXJzZXJfdGVtcGxhdGVfaWQsIGNwX3BhcnNlcl9wcmVfcGFyc2VkX25lc3RlZF9uYW1lX3NwZWNpZmllcik6CglBZGp1c3RlZCB0aGUgY2FsbCB0byBwZXJmb3JtX29yX2RlZmVyX2FjY2Vzc19jaGVjay4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogQWRqdXN0ZWQgdGhlIGNhbGwgdG8KCXBlcmZvcm1fb3JfZGVmZXJfYWNjZXNzX2NoZWNrLgoJKiBjbGFzcy5jIChhbHRlcl9hY2Nlc3MsIHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKToKCUxpa2V3aXNlLgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSwgbWFrZV91bmJvdW5kX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfbWVtYmVyKTogTGlrZXdpc2UuCgkqIGZyaWVuZC5jIChhZGRfZnJpZW5kKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoZW5mb3JjZV9hY2Nlc3MpOiBVc2UgdGhlIG5ldyBleHRyYSBhcmd1bWVudCB0byBidWlsZCB0aGUKCWVycm9yIG1lc3NhZ2UuCgkoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBBZGp1c3RlZCB0aGUgY2FsbCB0bwoJcGVyZm9ybV9vcl9kZWZlcl9hY2Nlc3NfY2hlY2suCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgoyMDA3LTAyLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBFbnN1cmUgdGhhdCBleHBsaWNpdCBjYWxscyBvZgoJZGVzdHJ1Y3RvcnMgaGF2ZSB0eXBlICJ2b2lkIi4KCjIwMDctMDItMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI2OTg4CgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFVzZSBza2lwX2FydGlmaWNpYWxfcGFybXNfZm9yLgoJKGZuX3R5cGVfdW5pZmljaWF0aW9uKTogTGlrZXdpc2UuCgkoZ2V0X2JpbmRpbmdzKTogTGlrZXdpc2UuCgoyMDA3LTAyLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIHRhcmdldC8yOTQ4NwoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IFVzZSBERUNMX1JFUExBQ0VBQkxFLgoJKiB0cmVlLmMgKGNwX2Nhbm5vdF9pbmxpbmVfdHJlZV9mbik6IExpa2V3aXNlLgoKMjAwNy0wMi0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzMwNzAzCgkqIGNwLWdpbXBsaWZ5LmMgKGNwX2dlbmVyaWNpemVfcik6IERvbid0IGRlcmVmZXJlbmNlIGludmlzaXJlZgoJcGFyYW1ldGVycyBhbmQgcmVzdWx0IGRlY2xzIGluIG9tcCBjbGF1c2VzLgoJKGN4eF9vbXBfcHJpdmF0aXplX2J5X3JlZmVyZW5jZSk6IFBhc3MgYWxzbyBpbnZpc2lyZWYgUEFSTV9ERUNMcwoJYnkgcmVmZXJlbmNlLgoKMjAwNy0wMi0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzMwNTM2CgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBJZiBfX3RocmVhZCBpcyB1c2VkIHRvZ2V0aGVyIHdpdGgKCWEgc3RvcmFnZSBjbGFzcyBvdGhlciB0aGFuIGV4dGVybiBhbmQgc3RhdGljLCBjbGVhciB0aHJlYWRfcAoJYWZ0ZXIgaXNzdWluZyBkaWFnbm9zdGljcyBhbmQgZmFsbCB0aHJvdWdoIHRvIGNoZWNraW5nIHRoZQoJc3RvcmFnZSBjbGFzcy4KCjIwMDctMDEtMjggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiBDKysvMjg5ODgKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9wc2V1ZG9fZGVzdHJ1Y3Rvcl9leHByKTogQ2hlY2sgdGhlCglkZXN0cnV0b3IgbmFtZSBieSBjYWxsaW5nIGNoZWNrX2R0b3JfbmFtZS4KCjIwMDctMDEtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4OTk5CgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogSWYgdGhlIHF1YWxpZmllZCBuYW1lIGlzIG5vdCBhCgl0eXBlLCBpc3N1ZSBhbiBlcnJvci4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKTogRml4IGNvbW1lbnQKCWZvcm1hdHRpbmcuCgoyMDA2LTEyLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTczMgoJKiBjcC10cmVlLmggKERFQ0xfVVNFX1RFTVBMQVRFKTogTWVudGlvbiBwYXJ0aWFsIHNwZWNpYWxpemF0aW9ucy4KCShleHBsaWNpdF9jbGFzc19zcGVjaWFsaXphdGlvbl9wKTogRGVjbGFyZS4KCSogcHQuYyAoZXhwbGljaXRfY2xhc3Nfc3BlY2lhbGl6YXRpb25fcCk6IE5ldyBmdW5jdGlvbi4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IpOiBDaGVjayBjb3JyZWN0IG51bWJlciBvZgoJdGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgaW4tY2xhc3MgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCgkoY3BfcGFyc2VyX2NoZWNrX2RlY2xhcmF0b3JfdGVtcGxhdGVfcGFyYW1ldGVycyk6IFN0b3AgbG9va2luZyBmb3IKCXRlbXBsYXRlIGNsYXNzZXMgd2hlbiB3ZSBmaW5kIGFuIGV4cGxpY2l0IHNwZWNpYWxpemF0aW9uLgoKMjAwNi0xMi0wNyAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgogICAgICAgIFBSIGMrKy8yOTk4MAogICAgICAgICogY3BfcGFyc2VyX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXI6IENoZWNrCiAgICAgICAgdGhlIHJldHVybiB2YWx1ZSBvZiBjaGVja19lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyLgoJCjIwMDYtMTItMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5NzMwCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogUmVqZWN0IGluaXRpYWxpemF0aW9uIG9mCglmdW5jdGlvbnMuCgoyMDA2LTEyLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTcyOQoJKiBkZWNsMi5jIChjaGVja19tZW1iZXJfdGVtcGxhdGUpOiBNb3ZlIGNoZWNrIGZvciBtZW1iZXIKCXRlbXBsYXRlcyBpbiBsb2NhbCBjbGFzc2VzIHRvIC4uLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3RlbXBsYXRlX2RlY2xhcmF0aW9uX2FmdGVyX2V4cG9ydCk6CgkuLi4gaGVyZS4KCjIwMDYtMTItMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5NzI4CgkqIGRlY2wuYyAoY2hlY2tfYXJyYXlfZGVzaWduYXRlZF9pbml0aWFsaXplcik6IE5ldyBmdW5jdGlvbi4KCShtYXliZV9kZWR1Y2Vfc2l6ZV9mcm9tX2FycmF5X2luaXQpOiBVc2UgaXQuCgkocmVzaGFwZV9pbml0X2FycmF5KTogTGlrZXdpc2UuCgoyMDA2LTEyLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTczMwoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IERpc2FsbG93IHZhcmlhYmxlcyBvZiBmdW5jdGlvbiB0eXBlLgoKMjAwNi0xMi0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjk2MzIKCSogY2FsbC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBEbyBub3QgcGVybWl0IE5VTEwgcG9pbnRlcgoJY29uc3RhbnRzIHRvIGJlIGNvbXBhcmVkIHdpdGggdGVtcGxhdGUgcGFyYW1ldGVycy4KCjIwMDYtMTItMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CiAgICAgICAgICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiBDKysvMTQzMjkKCSogZXJyb3IuYyAoY3BfcHJpbnRlcikgPCdEJz46IEhhbmRsZSBERUNMX0RFQlVHX0VYUFIuCgoyMDA2LTEyLTAxICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8zMDAyMgoJKiB0eXBlY2suYyAodHlwZV9hZnRlcl91c3VhbF9hcml0aG1ldGljX2NvbnZlcnNpb25zKToKCUZpeCBhc3NlcnRpb24gZm9yIHZlY3RvciB0eXBlcy4KCShidWlsZF9iaW5hcnlfb3ApOiBVc2UgdGVtcG9yYXJ5IGZvciBpbm5lciB0eXBlIG9mIHZlY3RvciB0eXBlcy4KCjIwMDYtMTEtMjkgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPiAKCglQUiBjKysvMjkwMjIKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9jbGFzc19oZWFkKTogTW92ZSBwcm9jZXNzaW5nCglvZiBhbnkgYmFzZSBjbGFzc2VzIHRvLi4uCgkoY3BfcGFyc2VyX2NsYXNzX3NwZWNpZmllcikgLi4uaGVyZS4gVGFrZSBhbiBleHRyYQoJdHJlZSogcGFyYW1ldGVyIGZvciBhbnkgYmFzZSBjbGFzc2VzLiBPbmx5IHByb2Nlc3MKCXRoZW0gaWYgdGhlIG9wZW5pbmcgYnJhY2Ugd2FzIGZvdW5kLgoJCjIwMDYtMTEtMjggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yOTczNQoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBDaGVjayBtYWluJ3MgdHlwZSBhZnRlciBhcHBseWluZwoJYXR0cmlidXRlcywgbm90IGJlZm9yZS4KCjIwMDYtMTEtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5ODg2CgkqIHBhcnNlci5jIChjcF9wYXJzZXIpOiBBZGQgaW5fZnVuY3Rpb25fYm9keS4KCShjcF9wYXJzZXJfbmV3KTogSW5pdGlhbGl6ZSBpdC4KCShjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uKTogVXNlIHBhcnNlci0+aW5fZnVuY3Rpb25fYm9keQoJaW5zdGVhZCBvZiBhdF9mdW5jdGlvbl9zY29wZV9wLgoJKGNwX3BhcnNlcl9hc21fZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9kaXJlY3RfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9jbGFzc19zcGVjaWZpZXIpOiBDbGVhciBwYXJzZXItPmluX2Z1bmN0aW9uX2JvZHkuCgkoY3BfcGFyc2VyX2NvbnN0cnVjdG9yX2RlY2xhcmF0b3JfcCk6IFVzZSBwYXJzZXItPmluX2Z1bmN0aW9uX2JvZHkKCWluc3RlYWQgb2YgYXRfZnVuY3Rpb25fc2NvcGVfcC4KCShjcF9wYXJzZXJfZnVuY3Rpb25fYm9keV9hZnRlcl9kZWNsYXJhdG9yKTogU2V0CglwYXJzZXItPmluX2Z1bmN0aW9uX2JvZHkuCgoyMDA2LTExLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjk1NzAKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENoZWNrIGZvciB2YWx1ZSBkZXBlbmRlbnQgYnJhY2UgZW5jbG9zZWQKCXNjYWxhciBpbml0aWFsaXplci4KCglQUiBjKysvMjk3MzQKCSogY3AtdHJlZS5oIChXQU5UX1ZFQ1RPUik6IERlZmluZS4KCShXQU5UX0FSSVRIKTogQWRkIFdBTlRfVkVDVE9SLgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBIYW5kbGUgdmVjdG9yIHR5cGVzLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBBZGQgV0FOVF9WRUNUT1IgdG8KCWJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uIGZsYWdzLgoKMjAwNi0xMS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjk1MTgKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogRG8gbm90IHNraXBfZXZhbHVhdGlvbiB3aGlsZQoJc3Vic3RpdHV0aW5nIHRlbXBsYXRlIGFyZ3VtZW50cy4KCjIwMDYtMTAtMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwNjQ3CgkqIHJ0dGkuYyAodGluZm9fYmFzZV9pbml0KTogVGhlIHR5cGUgaW5mbyBzdHJpbmcgaXMgYWx3YXlzIGdsb2JhbC4KCjIwMDYtMTAtMjAgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgogICAgICAgICAgICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgogICAgICAgIFBSIGMrKy8yODA1MwogICAgICAgICogZGVjbDIuYyAoZ3Jva2JpdGZpZWxkKTogRGV0ZWN0IGludmFsaWQgbm9uLWludGVncmFsIAogICAgICAgIHR5cGVzIGVhcmxpZXIgd2hlbiBwb3NzaWJsZS4KCQoyMDA2LTEwLTE4ICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjY4ODQKCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IFJhaXNlIGVycm9yIHVwb24gYXR0ZW1wdHMgdG8KCWluaXRpYWxpemUgYXJyYXlzIHdpdGggdmFyaWFibGVzLgoKMjAwNi0xMC0xNyAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+IAoKICAgICAgICBQUiBjKysvMjc5NTIKICAgICAgICAqIGNwLXRyZWUuaCAoeHJlZl9iYXNldHlwZXMpOiBSZXR1cm4gYm9vbCBpbnN0ZWFkIG9mIHZvaWQuCiAgICAgICAgKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogQWRqdXN0IGRlZmluaXRpb24uIFJldHVybiBmYWxzZQogICAgICAgIGlmIHRoZSBjbGFzcyBiYXNlcyBhcmUgaW52YWxpZC4KICAgICAgICAqIHBhcnNlci5jIChjcF9wYXJzZXJfY2xhc3NfaGVhZCk6IENoZWNrIHRoZSByZXR1cm4gdmFsdWUKICAgICAgICBmcm9tIHhyZWZfYmFzZXR5cGVzLgoJCjIwMDYtMTAtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MjYxCgkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXh0X3Rva2VuX2lzX2RlY2xfc3BlY2lmaWVyX2tleXdvcmQpOiBBZGQKCWNvbW1lbnQuCgoJUFIgYysrLzI4MjYxCgkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXh0X3Rva2VuX2lzX2RlY2xfc3BlY2lmaWVyX2tleXdvcmQpOiBOZXcKCWZ1bmN0aW9uLgoJKGNwX3BhcnNlcl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yX3ApOiBVc2UgaXQuCgkoY3BfcGFyc2VyX2NoZWNrX3R5cGVfZGVmaW5pdGlvbik6IFJldHVybiBhIHZhbHVlIGluZGljYXRpbmcKCXdoZXRoZXIgb3Igbm90IHRoZSBkZWZpbml0aW9uIGlzIHZhbGlkLgoJKGNwX3BhcnNlcl9lbnVtX3NwZWNpZmllcik6IFNraXAgaW52YWxpZCBlbnVtIGRlZmluaXRpb25zLgoKMjAwNi0xMC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjkwMzkKCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBEb24ndCB6ZXJvLWluaXRpYWxpemUKCW5vbi1QT0RzOyBpbnN0ZWFkLCBjYWxsIHRoZWlyIGNvbnN0cnVjdG9ycy4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogQWx3YXlzIGJ1aWxkIG1lbS1pbml0aWFsaXplcnMsIGlmCgl3ZSdyZSBzeW50aGVzaXppbmcgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IuCgoyMDA2LTEwLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzI3MAoJKiBkZWNsLmMgKHJlc2hhcGVfaW5pdF9jbGFzcyk6IE1vdmUgY2hlY2sgZm9yIGRlc2lnbmF0ZWQKCXRvIC4uLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRpYWxpemVyX2xpc3QpOiAuLi4gaGVyZS4KCSogcHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogVXNlIGZpbmlzaF9jb21wb3VuZF9saXRlcmFsLgoKMjAwNi0xMC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcyNzAKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3JfYXJyYXkpOiBSZXdvcmQgY29tbWVudC4KCSogcHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWx0KTogQ2FsbCByZXNoYXBlX2luaXQgYmVmb3JlIGNhbGxpbmcKCWRpZ2VzdF9pbml0LgoKCVBSIGMrKy8yOTQwOAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VzaW5nX2RlY2xhcmF0aW9uKTogU3RvcCBwYXJzaW5nIHdoZW4KCXNvbWV0aGluZyBnb2VzIHdyb25nIHdpdGggYW4gYWNjZXNzIGRlY2xhcmF0aW9uLgoKCVBSIGMrKy8yOTQzNQoJKiB0eXBlY2suYyAoY3h4X3NpemVvZl9vcl9hbGlnbm9mX3R5cGUpOiBDb21wbGV0ZSBub24tZGVwZW5kZW50Cgl0eXBlcyB3aGVuIHRoZWlyIHNpemVzIGFyZSByZXF1aXJlZC4gIFJlZmluZSB0ZXN0IGZvciBWTEFzLgoKCVBSIGMrKy8yODIxMQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3RlbXBsYXRlX2FyZ3VtZW50KTogRG9uJ3QgY29uc2lkZXIgIiZ2YXIiIGEKCXBvc3NpYmxlIGNvbnN0YW50LWV4cHJlc3Npb24uCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFJlZmluZSBoYW5kbGluZyBvZiBhcmd1bWVudHMgb2YKCXBvaW50ZXIgdHlwZS4KCjIwMDYtMTAtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4NTA2CgkqIHBhcnNlci5jIChmdW5jdGlvbl9kZWNsYXJhdG9yX3ApOiBOZXcgZnVuY3Rpb24uCgkoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IFVzZSBpdC4KCShjcF9wYXJzZXJfbWVtYmVyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgoyMDA2LTEwLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTMxOAoJKiBydHRpLmMgKGdldF90aW5mb19kZWNsKTogUmVmdXNlIHRvIGNyZWF0ZSB0eXBlIGluZm8gb2JqZWN0cyBmb3IKCXZhcmlhYmx5IG1vZGlmaWVkIHR5cGVzLgoKMjAwNi0xMC0xMiBMZWUgTWlsbHdhcmQgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKICAgICAgIFBSIGMrKy8yNzk2MQogICAgICAgKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGlmIGEKICAgICAgIGZ1bmN0aW9uIGlzIGluaXRpYWxpemVkIGxpa2UgYSB2YXJpYWJsZS4KICAgICAgIChjaGVja192YXJfdHlwZSk6IElmIGEgdmFyaWFibGUgb2YgZmllbGQgaXMgZGVjbGFyZWQgdm9pZCwKICAgICAgIHNldCB0aGUgdHlwZSB0byBlcnJvcl9tYXJrX25vZGUuCiAgICAgICAoZ3Jva2RlY2xhcmF0b3IpOiBDaGVjayB0aGUgcmV0dXJuIHR5cGUgb2YgY2hlY2tfdmFyX3R5cGUuCiAgICAgICAqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFJvYnVzdGlmeS4KCQoyMDA2LTEwLTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yOTE3NQoJKiBkZWNsLmMgKGNoZWNrX2luaXRpYWxpemVyKTogSXNzdWUgZXJyb3JzIGFib3V0IHRyeWluZyB0bwoJaW5pdGlhbGl6ZSBhcnJheXMgd2hvc2UgZWxlbWVudHMgaGF2ZSB2YXJpYWJsZSBzaXplLgoKMjAwNi0xMC0xMSAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5MDI0CiAgICAgICAgKiBjcC10cmVlIChzdHJ1Y3QgY3BfZGVjbF9zcGVjaWZpZXJfc2VxKTogUmVuYW1lIHRvIAogICAgICAgIGNvbmZsaWN0aW5nX3NwZWNpZmllcnNfcAogICAgICAgICogcGFyc2VyLmMgKGNwX3BhcnNlcl9zZXRfc3RvcmFnZV9jbGFzcyk6IFNldAogICAgICAgIGNvbmZsaWN0aW5nX3NwZWNpZmllcnNfcCBmb3IgdGhlIGlucHV0IGRlY2wgc3BlY2lmaWVyIAogICAgICAgIGlmIGEgdHlwZWRlZiBzcGVjaWZpZXIgaXMgcHJlc2VudC4gUmVuYW1lIHVzZXMgb2YKICAgICAgICBtdWx0aXBsZV9zcGVjaWZpZXJzX3AgdG8gY29uZmxpY3Rpbmdfc3BlY2lmaWVyc19wLgogICAgICAgIChjcF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxKSA8UklEX1RZUEVERUY+OiBJZiBhIHN0b3JhZ2UgCiAgICAgICAgY2xhc3Mgc3BlY2lmaWVyIGhhcyBhbHJlYWR5IGJlZW4gc2V0IGZvciB0aGlzIGRlY2xhcmF0aW9uLCAKICAgICAgICBzZXQgY29uZmxpY3Rpbmdfc3BlY2lmaWVyc19wIHRvIHRydWUgb24gdGhlIGRlY2xfc3BlY3MuCiAgICAgICAgKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVuYW1lIHVzZXMgb2YKICAgICAgICBtdWx0aXBsZV9zcGVjaWZpZXJzX3AgdG8gY29uZmxpY3Rpbmdfc3BlY2lmaWVyc19wLgoKMjAwNi0xMC0xMCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIE1ha2UtbGFuZy5pbjogQWRkZWQgImMrKy5wZGYiIHRhcmdldCBzdXBwb3J0LgoKMjAwNi0xMC0xMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCVBSIHJ0bC1vcHRpbWl6YXRpb24vMjkzMjMKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBTZXQgVFJFRV9OT1RIUk9XIG9ubHkgZm9yCglmdW5jdGlvbnMgdGhhdCBiaW5kIGxvY2FsLgoKMjAwNi0xMC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglSZXZlcnQgZW11dGxzIHBhdGNoLgoKMjAwNi0xMC0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCSAgICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBEb24ndCBlcnJvciBpZiAhaGF2ZV90bHMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfdGhyZWFkcHJpdmF0ZSk6IExpa2V3aXNlLgoKMjAwNi0xMC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjkwMjAKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IEltcHJvdmUgY29tbWVudHM7IGFkZCBhc3NlcnRpb24uCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbmVzdGVkX25hbWVfc3BlY2lmaWVyX29wdCk6IFJlc29sdmUKCXR5cGVuYW1lcyBmb3IgcXVhbGlmaWVkIG5hbWVzIHVzZWQgaW4gZGVjbGFyYXRpb25zLCBldmVuIHdoZW4KCWNhY2hpbmcgcXVhbGlmaWVkIG5hbWUgbG9va3VwLgoKCVBSIGMrKy8yOTEzOAoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBEb24ndCBoYW5kbGUgYWNjZXNzIGRlY2xhcmF0aW9ucyBoZXJlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VzaW5nX2RlY2xhcmF0aW9uKTogSGFuZGxlIGFjY2VzcwoJZGVjbGFyYXRpb25zIHRvby4KCShjcF9wYXJzZXJfYmxvY2tfZGVjbGFyYXRpb24pOiBBZGp1c3QgY2FsbHMgdG8KCWNwX3BhcnNlcl91c2luZ19kZWNsYXJhdGlvbi4KCShjcF9wYXJzZXJfbWVtYmVyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuICBVc2UKCWNwX3BhcnNlcl91c2luZ19kZWNsYXJhdGlvbiB0byBsb29rIGZvciBhY2Nlc3NfZGVjbGFyYXRpb25zLgoKMjAwNi0xMC0wMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjkyOTEKCSogaW5pdC5jIChidWlsZF9uZXcpOiBDaGVjayBmb3IgaW52YWxpZCBpbml0LgoKMjAwNi0xMC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjkyMjYKCSogdHlwZWNrLmMgKGN4eF9zaXplb2Zfb3JfYWxpZ25vZl90eXBlKTogVGlkeS4gIEluIHRlbXBsYXRlcywgZG8KCW5vdCB0cnkgdG8gYWN0dWFsbHkgZXZhbHVhdGUgc2l6ZW9mIGZvciBhIFZMQSB0eXBlLgoKMjAwNi0xMC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjkxMDUKCSogcHQuYyAodHN1YnN0X2Jhc2VsaW5rKTogU3Vic3RpdHV0ZWludG8gdGhlIHF1YWxpZnlpbmcgc2NvcGUuCgkqIHNlbWFudGljcy5jIChiYXNlbGlua19mb3JfZm5zKTogQnVpbGQgYSBiYXNlbGluaywgZXZlbiB3aGVuCglwcm9jZXNzaW5nIGEgdGVtcGxhdGUuCgoJUFIgYysrLzI5MDgwCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9kb3RfZGVyZWZfZXhwcmVzc2lvbik6IFVzZQoJQkFTRUxJTktfQUNDRVNTX0JJTkZPIGFzIHRoZSBxdWFsaWZ5aW5nIHNjb3BlIHdoZW4gY2FsbGluZwoJYWRqdXN0X3Jlc3VsdF9vZl9xdWFsaWZpZWRfbmFtZV9sb29rdXAuIAoKMjAwNi0wOS0yNSAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgogICAgICAgIFBSIGMrKy8yNzMyOQogICAgICAgIFBSIGMrKy8yNjkzOAogICAgICAgICogY3AtdHJlZS5oIChyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUpOiBBZGp1c3QgZGVjbGFyYXRpb24KICAgICAgICB0byByZXR1cm4gYm9vbCBpbnN0ZWFkIG9mIHZvaWQuCiAgICAgICAgKiBwdC5jIChyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUpOiBVcGRhdGUgZGVmaW5pdGlvbi4KCVJldHVybiBmYWxzZSBvbiBlcnJvci4KICAgICAgICAqIGRlY2wuYyAoeHJlZl90YWcpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGlmCglyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUgcmV0dXJuZWQgZmFsc2UuCgoJUFIgYysrLzI3NjY3CiAgICAgICAgKiBjcC10cmVlLmggKGJlZ2luX3NwZWNpYWxpemF0aW9uKTogUmV0dXJuIGJvb2wgCglpbnN0ZWFkIG9mIHZvaWQuCiAgICAgICAgKiBwdC5jIChjaGVja19zcGVjaWFsaXphdGlvbl9zY29wZSk6IExpa3dpc2UuIAoJQWRqdXN0IGNvbW1lbnQuIFJldHVybiBmYWxzZSBpZiBhIHNwZWNpYWxpemF0aW9uIAoJaXNuJ3QgcGVybWl0dGVkIGluIHRoZSBjdXJyZW50IHNjb3BlLgogICAgICAgIChiZWdpbl9zcGVjaWFsaXphdGlvbik6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mICAKICAgICAgICBjaGVja19zcGVjaWFsaXphdGlvbl9zY29wZS4KICAgICAgICAqIHBhcnNlci5jIChjcF9wYXJzZXJfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBJZgogICAgICAgIGJlZ2luX3NwZWNpYWxpemF0aW9uIHJldHVybmVkIGZhbHNlLCBza2lwIHRoZSByZXN0IAoJb2YgdGhlIHNwZWNpYWxpemF0aW9uLgoJCjIwMDYtMDktMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5MDE2CgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IERvbid0IGZvcm0gYW4gQUREUl9FWFBSIGFyb3VuZCBhCglCQVNFTElOSy4KCjIwMDYtMDktMjEgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODg2MQoJKiBkZWNsLmMgKHNoYWRvd190YWcpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlCiAgICAgICAgaWYgbWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uIGZhaWxlZC4KCglQUiBjKysvMjgzMDMKICAgICAgICAqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG9uCiAgICAgICAgZGVjbGFyYXRpb24gd2l0aCB0d28gb3IgbW9yZSBkYXRhIHR5cGVzLgoJCjIwMDYtMDktMjAgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgdGFyZ2V0LzI3NjUwCgkqIGNsYXNzLmMgKGNoZWNrX2Zvcl9vdmVycmlkZSk6IFJlbW92ZSBkbGxpbXBvcnQgZnJvbSB2aXJ0dWFsCgltZXRob2RzLgoKMjAwNi0wOS0xOCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8yOTA4NwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xhYmVsZWRfc3RhdGVtZW50KTogUmV0dXJuIG5vdGhpbmcuICBEbwoJbm90IHRha2UgaW5fc3RhdGVtZW50X2V4cHIgYW5kIGluX2NvbXBvdW5kIGFzIGFyZ3VtZW50cy4gIFJlbmFtZQoJdG8gY3BfcGFyc2VyX2xhYmVsX2Zvcl9sYWJlbGVkX3N0YXRlbWVudC4gIFBhcnNlIG9ubHkgdGhlIGxhYmVsLAoJbm90IHRoZSBzdGF0ZW1lbnQuCgkoY3BfcGFyc2VyX3N0YXRlbWVudCk6IFBhcnNlIHRoZSBzdGF0ZW1lbnQgb2YgYSBsYWJlbGVkLXN0YXRlbWVudAoJZnJvbSBoZXJlLCB1c2luZyB0YWlsIHJlY3Vyc2lvbi4KCjIwMDYtMDktMTQgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIEMrKy8yOTAwMgoJKiBpbml0LmMgKGJ1aWxkX3plcm9faW5pdCk6IElmIHdlIGhhdmUgYW4gZXJyb3IgbWFyayBub2RlIGZvcgoJdGhlIGFycmF5IHNpemUsIHJldHVybi4KCjIwMDYtMDktMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4OTkxCgkqIGNwLW9iamNwLWNvbW1vbi5jIChjeHhfc3RhdGljcCk6IE5ldyBmdW5jdGlvbi4KCSogY3Atb2JqY3AtY29tbW9uLmggKExBTkdfSE9PT0tTX1NUQVRJQ1ApOiBVc2UgaXQuCgkqIGNwLXRyZWUuaCAoY3h4X3N0YXRpY3ApOiBOZXcgZnVuY3Rpb24uCgoyMDA2LTA5LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjg5OTYKCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IFN0cmlwIENPTVBPTkVOVF9SRUYgdG8gZnVuY3Rpb25zLgoKMjAwNi0wOS0wOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjg4NTgKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9za2lwX3VudGlsX2ZvdW5kKTogUmVuYW1lIHRvCgljcF9wYXJzZXJfc2tpcF90b19lbmRfb2ZfdGVtcGxhdGVfcGFyYW1ldGVyX2xpc3QuICBSZW1vdmUgbGFzdCB0d28KCXBhcmFtZXRlcnMuICBUcmFjayBsZXZlbHMgb2YgJzwgLi4uID4nLiAgU3RvcCBhdCAneycsICd9Jywgb3IgJzsnLgoJUmVvcmdhbml6ZS4gIEFkanVzdCBjb21tZW50LgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9kZWNsYXJhdGlvbl9hZnRlcl9leHBvcnQpOiBBZGp1c3QgY2FsbC4KCShjcF9wYXJzZXJfZW5jbG9zZWRfdGVtcGxhdGVfYXJndW1lbnRfbGlzdCk6IExpa2V3aXNlLgoKMjAwNi0wOS0wNyAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQysrLzI4OTA2CgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBCdWlsZCBhIGRpc3RpbmN0IHR5cGUgY29weQoJZm9yIHRoZSBhcnJheSB0eXBlIHRoYXQgd2FzIHJldHVybmVkIGZyb20KCWJ1aWxkX2NwbHVzX2FycmF5X3R5cGUuCgoyMDA2LTA5LTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjczNzEKCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IEVuYWJsZSBwcmV2aW91cyBjaGFuZ2UuCgoJUFIgYysrLzI2OTU3CgkqIG1ldGhvZC5jICh1c2VfdGh1bmspOiBDbGVhciBERUNMX0hBU19WQUxVRV9FWFBSX1Agb24gY29waWVkCglwYXJtcy4KCjIwMDYtMDktMDcgIFNpbW9uIE1hcnRpbiAgPHNpbWFydGluQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMjgyODQKCSogcHQuYyAoZm9sZF9ub25fZGVwZW5kZW50X2V4cHIpOiBNYWtlIHN1cmUgZXhwciBpcyBub3QKCWRlcmVmZXJlbmNlZCBpZiBpdCBpcyBOVUxMLgoKMjAwNi0wOS0wNiAgWmFrIEtpcGxpbmcgIDx6YWtAdHJhbnN2ZXJzYWwuY29tPgoKCVBSIGMrKy8yNjE5NQoJKiBkZWNsLmMgKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKSwKCShzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBEb24ndCB1c2UgbGJhc2VuYW1lIG9uCglpbnB1dF9maWxlbmFtZSB3aGVuIGNhbGxpbmcgZ2V0X2ZpbGVpbmZvLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiBsZXguYyAoY3h4X21ha2VfdHlwZSk6IExpa2V3aXNlLgoJKGhhbmRsZV9wcmFnbWFfaW50ZXJmYWNlKTogQ2FsbCBnZXRfZmlsZWluZm8gb24gaW5wdXRfZmlsZW5hbWUsCglub3Qgb24gdGhlIHBhcmFtZXRlciB0byB0aGUgZGlyZWN0aXZlLgoKMjAwNi0wOS0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjg5MDMKCSogcHQuYyAodHN1YnN0KTogVXNlIGZvbGRfbm9uX2RlcGVuZGVudF9leHByIHRvIGZvbGQgYXJyYXkKCWRpbWVuc2lvbnMuCgoJUFIgYysrLzI4ODg2CgkqIHB0LmMgKHVuaWZ5KTogQXZvaWQgdW5uZWNlc3NhcnkgY2FsbHMgdG8gZm9sZF9idWlsZDIgZm9yIGFycmF5CglkaW1lbnNpb25zLgoKMjAwNi0wOS0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3MzcxCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBTdHJpcCB1c2VsZXNzIFRBUkdFVF9FWFBSLgoJKiBjcC10cmVlLmggKFRBUkdFVF9FWFBSX0lNUExJQ0lUX1ApOiBOZXcgbWFjcm8uCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbmV3KTogU2V0IGl0LgoKCVBSIGMrKy8yNjY5NgoJKiBjdnQuYyAoY29udmVydF90b192b2lkKTogUmVwbGFjZSBhIHN1YmV4cHJlc3Npb24gd2l0aCBubyBzaWRlIAoJZWZmZWN0cyB3aXRoIHZvaWRfemVyb19ub2RlLgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBMb29rIHRocm91Z2ggQ09NUE9ORU5UX1JFRi4KCShnZXRfZmlyc3RfZm4pOiBEaXR0by4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IE5vIG5lZWQgdG8gbG9vayB0aHJvdWdoIENPTVBPTkVOVF9SRUYuCgoyMDA2LTA5LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjY1NzEKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kaWFnbm9zZV9pbnZhbGlkX3R5cGVfbmFtZSk6IEhhbmRsZSB0aGUgY2FzZQoJd2hlcmUgdGhlIG5hbWUgaXMgYSB0eXBlIHVzZWQgaW5jb3JyZWN0bHkuCgoJUFIgYysrLzI2NjcxCgkqIHR5cGVjay5jIChtYXliZV93YXJuX2Fib3V0X3JldHVybmluZ19hZGRyZXNzX29mX2xvY2FsKTogTG9vayAKCXRocm91Z2ggQ09NUE9ORU5UX1JFRiBhbmQgQVJSQVlfUkVGLgkKCglQUiBjKysvMjYxMDIKCSogbmFtZS1sb29rdXAuYyAoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IFRyeSB0byBmaW5kIHRoZSBiYXNlIGV2ZW4KCWlmIGJhc2VzX2RlcGVuZGVudF9wLgoJKiBwdC5jICh0eXBlX2RlcGVuZGVudF9leHByZXNzaW9uX3ApOiBBIFVTSU5HX0RFQ0wgaXMgZGVwZW5kZW50LgkKCglQUiBjKysvMTk4MDkKCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IFNldCBERUNMX0lOSVRJQUwgYmVmb3JlIHB1c2hkZWNsLgoKMjAwNi0wOS0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiAyMzI4NyBSZXZlcnQgbXkgMjAwNi0wOS0wMSBwYXRjaC4KCSogcGFyc2VyLmM6IFJldmVydGVkLgoJKiBwdC5jOiBSZXZlcnRlZC4KCjIwMDYtMDktMDIgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzY3MAoJUFIgYysrLzI3NDkzCglQUiBjKysvMjc0OTQKCVBSIGMrKy8yNzM5NwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3RlbXBsYXRlX3BhcmFtZXRlcl9saXN0KTogQWRkCglpbnZhbGlkIHRlbXBsYXRlIHBhcmFtZXRlcnMgdG8gdGhlIHBhcmFtZXRlciBsaXN0IGFzCgllcnJvcl9tYXJrX25vZGUuCgoyMDA2LTA5LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjg4NzgKCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogT25seSBzZXQgY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX2Fibm9ybWFsbHkKCWlmIGNmdW4gaXMgbm90IE5VTEwuCgoJUFIgYysrLzI2OTE3CgkqIHJlcG8uYyAocmVwb19maWxlKTogUmVtb3ZlLgoJKG9wZW5fcmVwb19maWxlLCByZW9wZW5fcmVwb19maWxlX2Zvcl93cml0ZSk6IFJldHVybiBmb3BlbmVkCglGSUxFICogaW5zdGVhZCBvZiBzZXR0aW5nIGdsb2JhbCByZXBvX2ZpbGUgdmFyaWFibGUuCgkoaW5pdF9yZXBvKTogQWRqdXN0IGNhbGxlci4KCShmaW5pc2hfcmVwbyk6IExpa2V3aXNlLiAgUmV0dXJuIGluc3RlYWQgb2YgZ290byBvdXQgYmVmb3JlCglyZW9wZW5fcmVwb19maWxlX2Zvcl93cml0ZSBoYXMgYmVlbiBjYWxsZWQuCgoyMDA2LTA5LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODcwNQoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NhbGxfZXhwcik6IEFkZCBhc3NlcnQuCgkqIG5hbWUtbG9va3VwLmMgKGxvb2t1cF9hcmdfZGVwZW5kZW50KTogQ2hlY2sgd2UgZm91bmQgYW4gb3ZlcmxvYWQKCW9yIGFuIG9iamVjdC4KCglQUiBjKysvMjMyODcKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pZF9leHByZXNzaW9uKTogQWRkIG1lbWJlcl9wCglhcmd1bWVudC4gVXBkYXRlIGFsbCBjYWxsZXJzLgoJKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IExpa2V3aXNlLiAgTG9va3VwIGEgZGVzdHJ1Y3RvciBuYW1lIGluCgl0aGUgb2JqZWN0J3Mgc2NvcGUsIGlmIHZhbGlkLgoJKGNwX3BhcnNlcl9nbG9iYWxfc2NvcGVfb3B0KTogQWRkIG9iamVjdF9zY29wZV92YWxpZF9wLiAgVXBkYXRlCgljYWxsZXJzLgoJKGNwX3BhcnNlcl9wb3N0Zml4X2RvdF9kZXJlZl9leHByZXNzaW9uKTogU2V0IG9iamVjdF9zY29wZS4KCSogcHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogTG9va3VwIGRlcGVuZGVudCBkdG9yIG5hbWUgaGVyZS4KCjIwMDYtMDgtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNjY3MAoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IERvbid0IHVuc2V0IFRZUEVfUEFDS0VEIHVudGlsIGFsbAoJdGhlIGZpZWxkcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLgoKMjAwNi0wOC0yOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQysrLzI4MzQ5CgkqIGNhbGwuYyAoYnVpbGRfeF92YV9hcmcpOiBSZW1vdmUgdGhlIHJlZmVyZW5jZSB0eXBlCglmcm9tIHRoZSB0eXBlIGJlZm9yZSBjcmVhdGluZyB0aGUgcG9pbnRlciB0eXBlLgoKMjAwNi0wOC0yOSAgSiJvcm4gUmVubmVja2UgIDxqb2Vybi5yZW5uZWNrZUBzdC5jb20+CgoJUFIgYysrLzI4MTM5CgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBVc2UgY29ycmVjdCB0eXBlcyBmb3IgYml0d2lzZQoJY29weS4KCjIwMDYtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNjY3MAoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IFVuc2V0IFRZUEVfUEFDS0VEICh0KSBpZiBvbmUgb2YgdGhlCglmaWVsZHMgY2FuJ3QgYmUgcGFja2VkLgoKCVBSIGMrKy8yNjU3NwoJKiBjdnQuYyAoY29udmVydF90b192b2lkKTogRG9uJ3QgYXV0b21hdGljYWxseSBsb2FkIGZyb20gdm9sYXRpbGVzIAoJb2YgVFJFRV9BRERSRVNTQUJMRSB0eXBlLgoKMjAwNi0wOC0yOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjg4NjAKCSogY3AtdHJlZS5oIChtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBSZXR1cm4KCXRyZWUgaW5zdGVhZCBvZiB2b2lkLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NsYXNzX2hlYWQpOiBVc2UgcmV0dXJuIHZhbHVlIG9mCgltYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24uCgkqIHB0LmMgKG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IFJldHVybiBlcnJvcl9tYXJrX25vZGUKCWZvciBicm9rZW4gc3BlY2lhbGl6YXRpb25zLCBUWVBFIG90aGVyd2lzZS4gIENoZWNrIGZvciB0ZW1wbGF0ZQoJdGVtcGxhdGUgcGFyYW1ldGVycy4KCjIwMDYtMDgtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MDU4CgkqIHB0LmMgKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBmb3IKCXNwZWNpYWxpemF0aW9uLWFmdGVyLWluc3RhbnRpYXRpb24uCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IE1hcmsgdGhlIG1haW4gZnVuY3Rpb24gdXNlZCB3aGVuIG9uZSBvZiBpdHMKCWNsb25lcyBpcyB1c2VkLgoJCjIwMDYtMDgtMjcgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNjU3MwoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IERvbid0IGlzc3VlIGVycm9yIGFib3V0Cglsb2NhbCBjbGFzc2VzIGNvbnRhaW5pbmcgc3RhdGljIGRhdGEgbWVtYmVycy4KCQoyMDA2LTA4LTI2ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQwMDkKCSogcGFyc2VyLmMgKHN0cnVjdCBjcF90b2tlbik6IEFkZCBpbnB1dF9maWxlX3N0YWNrX2luZGV4LgoJKGVvZl90b2tlbik6IFVwZGF0ZS4KCShjcF9sZXhlcl9nZXRfcHJlcHJvY2Vzc29yX3Rva2VuKTogU2F2ZSBpbnB1dF9maWxlX3N0YWNrX3RpY2suCgkoY3BfbGV4ZXJfc2V0X3NvdXJjZV9wb3NpdGlvbl9mcm9tX3Rva2VuKTogUmVzdG9yZSBpbnB1dCBmaWxlCglzdGFjay4KCjIwMDYtMDgtMjYgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODczNgoJUFIgYysrLzI4NzM3CglQUiBjKysvMjg3MzgKCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogU3RvcmUgaW52YWxpZCB0ZW1wbGF0ZQoJcGFyYW1ldGVycyBhcyBhIFRSRUVfTElTVCB3aXRoIGEgVFJFRV9WQUxVRSBvZiBlcnJvcl9tYXJrX25vZGUuCgkocHVzaF9pbmxpbmVfdGVtcGxhdGVfcGFybXNfcmVjdXJzaXZlKTogQ2hlY2sgZm9yIHRlbXBsYXRlCglwYXJhbWV0ZXJzIGhhdmluZyBhIFRSRUVfVkFMVUUgb2YgZXJyb3JfbWFya19ub2RlIHJhdGhlciB0aGFuCgljaGVjayB0aGUgcGFyYW1ldGVyIGl0c2VsZi4KCShtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShjb21wX3RlbXBsYXRlX3Bhcm1zKTogV2hlbiBjb21wYXJpbmcgdGhlIGluZGl2aWR1YWwgdGVtcGxhdGUKCXBhcmFtZXRlcnMsIHJldHVybiAxIGlmIGVpdGhlciBpcyBlcnJvcl9tYXJrX25vZGUuCgkoY3VycmVudF90ZW1wbGF0ZV9hcmdzKTogUm9idXN0aWZ5LgoJKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJCjIwMDYtMDgtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4NTg4CgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogQWRkCglhY2Nlc3NfcGF0aCBwYXJhbWV0ZXIuICBQZXJmb3JtIGFjY2VzcyBjaGVja3MuCgkoaW5zdGFudGlhdGVfdHlwZSk6IEFkanVzdCBjYWxsIHRvCglyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbi4gIFJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlLgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBEb2N1bWVudC4gIFJldHVybiAyIHdoZW4gdGhlcmUgYXJlCglhY3V0YWxseSBtdWx0aXBsZSBmdW5jdGlvbnMuCgkocmVhbGx5X292ZXJsb2FkZWRfZm4pOiBVc2UgaXNfb3ZlcmxvYWRlZF9mbi4KCSogbWFuZ2xlLmMgKHdyaXRlX2V4cHJlc3Npb24pOiBIYW5kbGUgQkFTRUxJTktzLgoJKiBjcC10cmVlLmggKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogUmV0dXJuIGJvb2wuCgkoYmFzZWxpbmtfZm9yX2Zucyk6IERlY2xhcmUuCgkqIHNlYXJjaC5jIChsb29rdXBfbWVtYmVyKTogQ2hlY2sgYWNjZXNzIGZvciBzaW5nbGUgc3RhdGljCglmdW5jdGlvbnMgaGVyZS4KCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50X2Z1bmN0aW9uKTogSGFuZGxlIEJBU0VMSU5Lcy4KCSh0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBHZW5lcmF0ZSBCQVNFTElOS3MgZm9yIHRlbXBsYXRlLWlkcy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBVc2UgYmFzZWxpbmtfZm9yX2Zucy4KCShiYXNlbGlua19mb3JfZm5zKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9pZF9leHByZXNzaW9uKTogVXNlIGl0LgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3RlbXBsYXRlX2FyZ3VtZW50KTogRG9uJ3Qgc3RyaXAgQkFTRUxJTktzLgoKCVBSIGMrKy8yODU5NQoJKiBwdC5jICh0c3Vic3QpOiBJc3N1ZSBlcnJvcnMgYWJvdXQgYXR0ZW1wdHMgdG8gY3JlYXRlIFZMQXMgYXQKCXRlbXBsYXRlLWluc3RhbnRpYXRpb24gdGltZS4KCjIwMDYtMDgtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4ODUzCgkqIHR5cGVjazIuYyAoY3h4X2luY29tcGxldGVfdHlwZV9kaWFnbm9zdGljKTogSGFuZGxlIHRlbXBsYXRlCgl0ZW1wbGF0ZSBwYXJhbWV0ZXJzLiAgSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciB0ZW1wbGF0ZSB0eXBlCglwYXJhbWV0ZXJzLgoKCVBSIGMrKy8yODg1MgoJKiBjcC10cmVlLmggKGdyb2tfb3BfcHJvcGVydGllcyk6IFJldHVybiBib29sIGluc3RlYWQgb2Ygdm9pZC4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogRGlzY2FyZCBpbnZhbGlkIG9wZXJhdG9yIGRlY2xhcmF0aW9ucy4KCShjb3B5X2ZuX3ApOiBSZXZlcnQgY2hhbmdlIGZvciBQUiAyNzU0Ny4KCShncm9rX29wX3Byb3BlcnRpZXMpOiBSZXR1cm4gZXJyb3Igc3RhdHVzICh0cnVlIG9uIHN1Y2Nlc3MpLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IERpc2NhcmQgaW52YWxpZCBvcGVyYXRvciBkZWNsYXJhdGlvbnMuCgoyMDA2LTA4LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODA1NgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRGlzYWxsb3cgZGVjbGFyYXRpb25zIHdpdGggcXVhbGlmaWVkCgluYW1lcyBpbiBsb2NhbCBzY29wZXMuCgoyMDA2LTA4LTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzc4NwoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IE9ubHkgdHJ5IGFuZCByZXNvbHZlIGl0IHdoZW4KCWNvbnRleHQgaXMgbm90IGRlcGVuZGVudC4gIFJlZmFjdG9yLgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogUHVzaCB0byBjbGFzcyBzY29wZSBiZWZvcmUgbG9va2luZyBmb3IKCXRoZSBmdW5jdGlvbi4KCjIwMDYtMDgtMjQgIERhbm55IFNtaXRoICAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGRyaXZlci8yODUyOAoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQWx3YXlzIGNoZWNrIGlmIHdlIG5lZWQgdG8KCXN3YWxsb3cgYSBzcGFjZS1zZXBhcmF0ZWQgIGFyZyB0byAnLXgnLgoJKiBsYW5nLXNwZWNzLmg6IERvbid0IGNyZWF0ZSBvdXB1dCBmaWxlcyBmb3IgJy14YysrLWhlYWRlcicKCWlmIC1mc3ludGF4LW9ubHkuCgoyMDA2LTA4LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjc3MTQKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBBIGZyaWVuZCB0ZW1wbGF0ZSB3aXRoIGNsYXNzIAoJc2NvcGUgaXNuJ3QgcHJpbWFyeS4KCjIwMDYtMDgtMjMgIEJlbmphbWluIFNtZWRiZXJnIDxiZW5qYW1pbkBzbWVkYmVyZ3MudXM+CgoJUFIgYysrLzI4Njg3CgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0LCBidWlsZF9keW5hbWljX2Nhc3RfMSk6CglNb3ZlIC1mbm8tcnR0aSBjaGVjayB0byBiZSBtb3JlIHNwZWNpZmljLgoKMjAwNi0wOC0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzIzMzcyCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3QgbWFrZSBhIGNvcHkgaGVyZSBpZiBidWlsZF9jYWxsIAoJd2lsbCBtYWtlIG9uZSB0b28uCgoyMDA2LTA4LTIyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBDKysvMjg0NTAKCSogY3AvaW5pdC5jIChidWlsZF96ZXJvX2luaXQpOiBIYW5kbGUgVkVDVE9SX1RZUEUgYW5kCglDT01QTEVYX1RZUEVzLgoKMjAwNi0wOC0yMiAgU2ltb24gTWFydGluICA8c2ltYXJ0aW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy8yODQyMAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IE1ha2Ugc3VyZSB0aGF0IHRoZQoJc2F2ZWQgdmFsdWUgZm9yIHBhcnNlci0+dHlwZV9kZWZpbml0aW9uX2ZvcmJpZGRlbl9tZXNzYWdlIGlzCglyZXN0b3JlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIGF2b2lkIGFuIGludmFsaWQgZnJlZSgpLgoKMjAwNi0wOC0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI4NjU5CgkqIHR5cGVjay5jIChtZXJnZV90eXBlcyk6IElmIGVpdGhlciBvZiB0aGUgdHlwZXMgaGF2ZSB0aGUgcmlnaHQgCglhdHRyaWJ1dGVzLCByZXR1cm4gdGhhdCBvbmUuCgoJKiB0cmVlLmMgKGNwX2J1aWxkX3R5cGVfYXR0cmlidXRlX3ZhcmlhbnQpOiBNYWtlIHN1cmUgd2UgYXJlbid0Cglkb2luZyB0aGlzIHRvIGNsYXNzIHR5cGVzLgoJKiB0eXBlY2suYyAob3JpZ2luYWxfdHlwZSk6IERlYWwgd2l0aCB0eXBlIHF1YWxzIHByb3Blcmx5LgoKMjAwNi0wOC0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3MTE1CgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3RtdF9leHByX2V4cHIpOiBEb24ndCB0cnkgdG8gdm9pZGlmeSBoZXJlLAoJanVzdCBsZWF2ZSB0aGUgZXhwcmVzc2lvbiBhcyBpdCBpcy4KCShmaW5pc2hfc3RtdF9leHByKTogSWYgdGhlIHN0YXRlbWVudC1leHByZXNzaW9uIGhhcyBjbGFzcyB0eXBlLAoJd3JhcCBpdCBpbiBhIFRBUkdFVF9FWFBSLgoJKiBjcC1naW1wbGlmeS5jIChjcF9naW1wbGlmeV9pbml0X2V4cHIpOiBEb24ndCBib3RoZXIgd2l0aAoJQ0xFQU5VUF9QT0lOVF9FWFBSLgoJKiBleGNlcHQuYyAoYnVpbGRfdGhyb3cpOiBHaXZlIHRoZSBDTEVBTlVQX1BPSU5UX0VYUFIgdm9pZCB0eXBlLgoKMjAwNi0wOC0yMSAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI2MjY5CgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogUmV0dXJuIGVhcmx5IGlmIGVpdGhlcgoJbmV3ZGVjbCBvciBvbGRkZWNsIGlzIGVycm9yX21hcmtfbm9kZS4KCgkgUFIgYysrLzI4NTA1CgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gZWFybHkgYWZ0ZXIKCWlzc3VpbmcgZGlhZ25vc3RpYyBhYm91dCBhbiBpbmNvbXBsZXRlIHR5cGUuCgoJUFIgYysrLzI4NzQxCgkqIHRyZWUuYyAoZGVjbF9hbm9uX25zX21lbV9wKTogUm9idXN0aWZ5LgoJKiBkZWNsMi5jIChkZXRlcm1pbmVfdmlzaWJpbGl0eSk6IExpa2V3aXNlLgoJCjIwMDYtMDgtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MzQxCgkqIHRyZWUuYyAoY2FzdF92YWxpZF9pbl9pbnRlZ3JhbF9jb25zdGFudF9leHByZXNzaW9uX3ApOiBOZXcKCWZ1bmN0aW9uLgoJKiBjcC10cmVlLmggKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IEFkanVzdCBwcm90b3R5cGUuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogQWRkIGludGVncmFsX2NvbnN0YW50X2V4cHJlc3Npb25fcAoJcGFyYW1ldGVyLgoJKGZvbGRfbm9uX2RlcGVuZGVudF9leHByKTogQWRqdXN0IGNhbGxlcnMgb2YKCXRzdWJzdF97ZXhwcixjb3B5X2FuZF9idWlsZH0uCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmcpOiBMaWtld2lzZS4KCSh0c3Vic3RfZGVmYXVsdF9hcmd1bWVudCk6IExpa2V3aXNlLgoJKHRzdWJzdF9kZWNsKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkodHN1YnN0X29tcF9jbGFzdXNlcyk6IExpa2V3aXNlLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tcF90ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KCSh0c3Vic3RfaW5pdGlhbGl6ZXJfbGlzdCk6IExpa2V3aXNlLgoJKHRzdWJzdF9lbnVtKTogTGlrZXdpc2UuCgkodHN1YnN0X2V4cHIpOiBVc2UgUkVDVVIgdGhyb3VnaG91dC4KCSh0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBDaGFuZ2UgZGVmaW5pdGlvbiBvZiBSRUNVUi4gIERvIG5vdCBhbGxvdwoJaW52YWxpZCBjYXN0cyBpbiBpbnRlZ3JhbCBjb25zdGFudCBleHByZXNzaW9ucy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBVc2UKCWNhc3RfdmFsaWRfaW5faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wLgoJKGNwX3BhcnNlcl9jYXN0X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZnVuY3Rpb25hbF9jYXN0KTogTGlrZXdpc2UuCgoJUFIgYysrLzI4MzQ2CgkqIHB0LmMgKHRzdWJzdF9xdWFsaWZpZWRfaWQpOiBEbyBub3Qgc3RyaXAgcmVmZXJlbmNlcyBmcm9tCglPRkZTRVRfUkVGcy4gCgoyMDA2LTA4LTE3ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yODYwNgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RpYWdub3NlX2ludmFsaWRfdHlwZV9uYW1lKTogSGFuZGxlIEJJVF9OT1RfRVhQUi4KCUZpeCBmb3JtYXR0aW5nLgoJKGNwX3BhcnNlcl9wYXJzZV9hbmRfZGlhZ25vc2VfaW52YWxpZF90eXBlX25hbWUpOiBUaWdodGVuIGNvbmRpdGlvbgoJZm9yIHZhbGlkIHR5cGUtbmFtZXMuCgkoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogRml4IGVycm9yIGhhbmRsaW5nIGZvciBkZXN0cnVjdG9ycy4KCglQUiBjKysvMjg3MTAKCSogZGVjbC5jICh4cmVmX3RhZyk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4gIFJldHVybiBlYXJseSBvbiBlcnJvci4KCglQUiBjKysvMjg3MTEKCSogcHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWxkKSA8Y2FzZSBDT05TVFJVQ1RPUj46IFJvYnVzdGlmeS4KCjIwMDYtMDgtMTcgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgYysrLzI4NTczCgkqIHNlbWFudGljcy5jIChmaW5pc2hfb2Zmc2V0b2YpOiBBZGQgbmV3IGFyZ3VtZW50IHRvIGZvbGRfb2Zmc2V0b2YuCgoyMDA2LTA4LTE2ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBjKysvMjgzMDIKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wIDxjYXNlIEJJVF9OT1RfRVhQUjo+KTogRG9uJ3QgY2FsbAoJcGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rpb25zIGZvciBub24gaW50ZWdyYWwgdHlwZS4KCjIwMDYtMDgtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yODM4NQoJKiBwdC5jICh0c3Vic3QpIFtURU1QTEFURV9UWVBFX1BBUk1dOiBJZ25vcmUgcXVhbHMgZnJvbSB0ZW1wbGF0ZQoJaWYgYXJnIGlzIGEgZnVuY3Rpb24uCgoyMDA2LTA4LTE2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yODU5MwoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFJldHVybiBlYXJseSBvbiBpbnZhbGlkIHBsYWNlbWVudC4KCjIwMDYtMDgtMTUgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODU5NAoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBSb2J1c3RpZnkuCgkKMjAwNi0wOC0xNCAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgYysrLzI4Mjg4CglQUiBjKysvMTQ1NTYKCSogb3BlcmF0b3JzLmRlZjogUmVtb3ZlIDw/LCA/PiwgPD89LCBhbmQgPj89IG9wZXJhdG9ycy4KCSogcGFyc2VyLmM6IFJlbW92ZSBDUFBfTUlOLCBDUFBfTUFYLCBDUFBfTUlOX0VRLCBhbmQgQ1BQX01BWF9FUS4KCShjcF9wYXJzZXJfd2Fybl9taW5fbWF4KTogUmVtb3ZlLgoKMjAwNi0wOC0xMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI4NTU5CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllcik6IEFsc28gaWdub3JlCglhdHRyaWJ1dGVzIGFwcGxpZWQgdG8gYSBUWVBFTkFNRV9UWVBFLgoKMjAwNi0wOC0wOSAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4NjM3CgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IENvcHkgYWNyb3NzIHRoZQoJaW52YWxpZCB0ZW1wbGF0ZSBhcmd1bWVudHMgdG8gdGhlIG5ldyB0ZW1wbGF0ZSBpbm5lciBhcmd1bWVudHMuCgkocmV0cmlldmVfc3BlY2lhbGl6YXRpb24pOiBSb2J1c3RpZnkuCgoJUFIgYysrLzI4NjM4CgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtcyk6IFJvYnVzdGlmeS4KCglQUiBjKysvMjg2MzkKCSogZXJyb3IuYyAoZHVtcF90ZW1wbGF0ZV9wYXJtcyk6IFJvYnVzdGlmeS4KCglQUiBjKysvMjg2NDAKCSogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogUm9idXN0aWZ5LgoKCVBSIGMrKy8yODY0MQoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBSb2J1c3RpZnkuCgkKMjAwNi0wOC0wMyAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MzQ3CgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgaWYgYQoJZGlhZ25vc3RpYyB3YXMgaXNzZWQgZm9yIGFuIGludmFsaWQgdHlwZWRlZiBpbml0aWFsaXphdGlvbi4KCQoyMDA2LTA4LTAzICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzUwOAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogQ2hlY2sgZm9yIGludmFsaWQgc2NvcGVzCgl3aGVuIHBhcnNpbmcgZGVzdHJ1Y3RvciBuYW1lcy4KCglQUiBjKysvMjgyNzQKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDYWxsIGNoZWNrX2RlZmF1bHRfYXJncyBoZXJlLgoJKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbik6IERvIG5vdCBjYWxsIGNoZWNrX2RlZmF1bHRfYXJncy4KCSogbmFtZS1sb29rdXAuYyAocHVzaGRlY2xfbWF5YmVfZnJpZW5kKTogT25seSBjYWxsCgljaGVja19kZWZhdWx0X2FyZ3MgaWYgZHVwbGljYXRlX2RlY2xzIGdvdCBieXBhc3NlZC4KCjIwMDYtMDgtMDIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBjKysvMjg0NzkKCVJldmVydAoJMjAwNi0wNy0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAZ2NjLmdudS5vcmc+CgoJUFIgYysrLzI3MDg0CgkqIGNwLW9iamNwLWNvbW1vbi5jIChjeHhfdHlwZXNfY29tcGF0aWJsZV9wKTogSWdub3JlCgl0b3AgbGV2ZWwgcXVhbGlmaWVycyBmb3IgcG9pbnRlciB0eXBlIGNvbXBhcmlzb25zLgoKMjAwNi0wOC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjg1NTcKCSogcHQuYyAodHN1YnN0X2Jhc2VsaW5rKTogU3Vic3RpdHV0ZSBpbnRvIEJBU0VMSU5LX09QVFlQRS4KCjIwMDYtMDctMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4NTIzCgkqIHRyZWUuYyAoc3RhYmlsaXplX2V4cHIpOiBUd2VhayBkb2N1bWVudGF0aW9uLiAgQWRkIGFzc2VydGlvbi4KCShzdGFiaWxpemVfY2FsbCk6IFR3ZWFrIGRvY3VtZW50YXRpb24uCgkoc3RhYmlsaXplX2luaXQpOiBPbmx5IGNhbGwgc3RhYmlsaXplX2NhbGwgZm9yIGNhbGxzLgoKMjAwNi0wOC0wMSAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgYysrLzI4NDMyCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBSZW1vdmUgZWFybHkgcmV0dXJuLgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IFJldHVybiBOVUxMIHdpdGggYmFkIHR5cGUuCgoyMDA2LTA4LTAxICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBjKysvMjgyNTYKCSogZGVjbC5jIChjaGVja19pbml0aWFsaXplcik6IENoZWNrIGZvciAxIGluaXRpYWxpemVyIG9uIHNjYWxhciB0eXBlcy4KCjIwMDYtMDgtMDEgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgZGVidWcvMjMzMzYKCSogcHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogTWFyayB1c2VkIGVudW0gdHlwZXMuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfaWRfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoKMjAwNi0wNy0zMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvNjYzNAoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2hlY2sgd2hldGhlciAibG9uZyIgb3IgInNob3J0IiB3YXMKCXNwZWNpZmllZCBmb3Igbm9uLWludGVncmFsIHR5cGVzLgoKMjAwNi0wNy0yOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIE1ha2UtbGFuZy5pbjogVXNlICQoSEVBREVSX0gpIGluc3RlYWQgb2YgaGVhZGVyLmggaW4gZGVwZW5kZW5jaWVzLgoKMjAwNi0wNy0yOCAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI3NjY4CglQUiBjKysvMjc5NjIKCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKSBTdG9yZSBpbnZhbGlkIHRlbXBsYXRlCglwYXJhbWV0ZXJzIGFzIGVycm9yX21hcmtfbm9kZSBpbiB0aGUgcGFyYW1hdGVyIGxpc3QuCgkocHVzaF9pbmxpbmVfdGVtcGxhdGVfcGFybXNfcmVjdXJzaXZlKTogSGFuZGxlIGludmFsaWQKCXRlbXBsYXRlIHBhcmFtZXRlcnMuCgkoY29tcF90ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoJKGNoZWNrX2RlZmF1bHRfdG1wbF9hcmcpOiBMaWtld2lzZS4KCShjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCShtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSh0c3Vic3RfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF90ZW1wbGF0ZV9hcmd1bWVudF9saXN0KTogTGlrZXdpc2UuCgkKMjAwNi0wNy0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmg6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDYtMDctMjQgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI3NTcyCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGFmdGVyIGludmFsaWQKCXR5cGVkZWYuCgoyMDA2LTA3LTIzICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODQ2MAoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogVXNlIEZST0JfQ09OVEVYVC4KCSogcHQuYyAocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCjIwMDYtMDctMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MDI1CgkqIGNwLXRyZWUuaCAoTE9PS1VQX0hJRERFTik6IE5ldyBtYWNyby4gIFJlZm9ybWF0IGNvbW1lbnRzLgoJKiBuYW1lLWxvb2t1cC5jICh1bnF1YWxpZmllZF9uYW1lc3BhY2VfbG9va3VwKTogVGhlcmUgaXMgbm8gd2F5IHRvCgloYXZlIGEgaGlkZGVuIG5hbWUgaW4gbm9uLW5hbWVzcGFjZSBzY29wZXMuCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBMb29rIGZvciBoaWRkZW4gbmFtZXMuCgkqIGRlY2wuYyAobG9va3VwX2FuZF9jaGVja190YWcpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jb21wb3VuZF9saXRlcmFsKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDYtMDctMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBEb24ndCBwcm9wYWdhdGUgdmlzaWJpbGl0eSBmcm9tCgl0eXBlIHRvIGRlY2wuCgkoY29uc3RyYWluX2NsYXNzX3Zpc2liaWxpdHkpOiBEb24ndCB3YXJuIGluIHN5c3RlbSBoZWFkZXJzLgoJRG9uJ3Qgd2FybiBhYm91dCBwb2ludGVyIGZpZWxkcy4KCjIwMDYtMDctMjAgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHlfZnJvbV9jbGFzcyk6IERvbid0IHVzZSBoaWRkZW4KCXZpc2liaWxpdHkgZm9yIGV4cGxpY2l0IGluc3RhbnRpYXRpb25zLgoKMjAwNi0wNy0yMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjgyNTAKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBPbmx5IGFwcGx5IERFQ0xfVEVNUExBVEVfSU5TVEFOVElBVEVEIHRvCgl2YWxpZCBkZWNscy4gIENsZWFudXAuCgoJUFIgYysrLzI4MzYzCgkqIHNlbWFudGljcy5jIChjaGVja190ZW1wbGF0ZV90ZW1wbGF0ZV9kZWZhdWx0X2FyZyk6IFNpbXBsaWZ5CgllcnJvciBoYW5kbGluZy4KCjIwMDYtMDctMjAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yODQwNwoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogU2V0IERFQ0xfVEhJU19TVEFUSUMgb24gZmlsZS1zY29wZQoJY29uc3QgdmFyaWFibGVzIHdpdGggaW1wbGljaXQgaW50ZXJuYWwgbGlua2FnZS4KCSogdHJlZS5jIChkZWNsX2xpbmthZ2UpOiBPbmx5IHJldHVybiBsa19leHRlcm5hbCBpZiBpdCdzIHNldC4KCglQUiBjKysvMjg0MDkKCSogZGVjbDIuYyAoY29uc3RyYWluX3Zpc2liaWxpdHkpOiBJZ25vcmUgdGhlIGFub255bW91cyBuYW1lc3BhY2UgCglmb3IgZXh0ZXJuICJDIiBkZWNscy4KCShWSVNJQklMSVRZX1NUQVRJQyk6IFJlbmFtZSB0byBWSVNJQklMSVRZX0FOT04uCgoJKiBkZWNsMi5jIChjb25zdHJhaW5fdmlzaWJpbGl0eSk6IFJlbW92ZSBzcGVjaWZpZWQgYW5kIHJlYXNvbiAKCXBhcmFtZXRlcnMuICBEb24ndCB0b3VjaCBkZWNscyB0aGF0IGFscmVhZHkgaGF2ZSBleHBsaWNpdCB2aXNpYmlsaXR5LgoJKGRldGVybWluZV92aXNpYmlsaXR5KTogRG8gY29weSBERUNMX1ZJU0lCSUxJVFlfU1BFQ0lGSUVEIGZyb20gCgl0ZW1wbGF0ZS4KCShkZXRlcm1pbmVfdmlzaWJpbGl0eV9mcm9tX2NsYXNzKTogUmV2ZXJzZSBzZW5zZSBvZiAKCURFQ0xfVklTSUJJTElUWV9TUEVDSUZJRUQgdGVzdCBmb3IgdGFyZ2V0LXNwZWNpZmljIHZpc2liaWxpdHkgcnVsZXMuCgkoY29uc3RyYWluX2NsYXNzX3Zpc2liaWxpdHkpOiBPbmx5IGNvbXBsYWluIGFib3V0IG1lbWJlciB2aXNpYmlsaXR5CglpZiB0aGUgbWVtYmVyIHR5cGUgaXMgYW5vdGhlciBjbGFzcy4gIERvbid0IGNoYW5nZSB2aXNpYmlsaXR5IG9mIHRoZQoJY3VycmVudCBjbGFzcy4KCjIwMDYtMDctMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI4MzM4CgkqIGRlY2wuYyAobGF5b3V0X3Zhcl9kZWNsKTogRG9uJ3QgY2FsbCBwdXNoX2xvY2FsX25hbWUgaGVyZS4KCShpbml0aWFsaXplX2FydGlmaWNpYWxfdmFyKTogQXNzZXJ0IGFydGlmaWNpYWxpdHkuCgkoY3BfZmluaXNoX2RlY2wpOiBDYWxsIHB1c2hfbG9jYWxfbmFtZSBoZXJlLgoKMjAwNi0wNy0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjgzMzcKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IFNob3J0LWNpcmN1aXQgcG9pbnRlciBhcml0aG1ldGljIGluCgl0ZW1wbGF0ZXMuCgoyMDA2LTA3LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yODA0OAoJKiBzZW1hbnRpY3MuYyAoY2hlY2tfYWNjZXNzaWJpbGl0eV9vZl9xdWFsaWZpZWRfaWQpOiBSb2J1c3RpZnkuCgoJUFIgYysrLzI4MjM1CgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogSGFuZGxpbmcgc3Vic3RpdHV0aW9ucyBpbnRvIGEgc3RhdGljIGRhdGEKCW1lbWJlciBmcm9tIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIHRlbXBhbHRlIGl0c2VsZi4KCjIwMDYtMDctMTggIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBnbWFpbC5jb20+CgoJUFIgYysrLzI4MjU4CgkqIG1ldGhvZC5jIChsb2NhdGVfY29weSk6IENoZWNrIGZvciBub25fcmVmZXJlbmNlCglyZXR1cm5pbmcgZXJyb3JfbWFya19ub2RlLgoKCVBSIGMrKy8yODI2MAoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUKCW9uIGFtYmlndW91cyBkZWNsYXJhdGlvbi4KCQoyMDA2LTA3LTE4ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBjKysvMjc0OTUKCSogc2VhcmNoLmMgKGFkanVzdF9yZXN1bHRfb2ZfcXVhbGlmaWVkX25hbWVfbG9va3VwKTogQ2hhbmdlCglhc3NlcnQgdG8gcGFydCBvZiBpZiBzdGF0ZW1lbnQuCgoyMDA2LTA3LTE3ICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBjKysvMjgyOTEKCSogZGVjbC5jIChyZXNoYXBlX2luaXRfY2xhc3MpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG9uIGVycm9yLgoKMjAwNi0wNy0xNyAgU3RldmUgRWxsY2V5ICA8c2plQGN1cC5ocC5jb20+CgoJUFIgYysrLzI4MzA0CgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBSZXR1cm4gTlVMTF9UUkVFIG9uIGVycm9yLgoKMjAwNi0wNy0xNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjgyNTAKCSogbmFtZS1sb29rdXAuYyAocHVzaGRlY2xfbWF5YmVfZnJpZW5kKTogUmV0dXJuIGVhcmx5IG9uCgllcnJvcl9tYXJrX25vZGUuCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBVc2UgZXJyb3JfbWFya19ub2RlIGluc3RlYWQKCW9mIE5VTExfVFJFRSBmb3IgaW52YWxpZCBkZWNscy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9leGNlcHRpb25fZGVjbGFyYXRpb24pOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlCglvbiBpbnZhbGlkIGNhdGNoIHBhcmFtZXRlci4gU2ltcGxpZnkuCgoyMDA2LTA3LTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjgzNzAKCSogZGVjbDIuYyAobm90ZV92YWd1ZV9saW5rYWdlX3Zhcik6IFJlbW92ZWQuCgkoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsKTogQWRkIGRlY2wgdG8gcGVuZGluZ19zdGF0aWNzIHZlY3RvcgoJZGlyZWN0bHkuICBEbyBpdCBldmVuIGZvciBub24tcHVibGljIGRlY2xzLgoKMjAwNi0wNy0xNSAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGdtYWlsLmNvbT4KCglQUiBjKysvMjgyOTIKCSogZGVjbDIuYyAoYWNjZXB0YWJsZV9qYXZhX3R5cGUpOiBSb2J1c3RpZnkuIFVzZQoJcHJvcGVyIEJvb2xlYW4gcmV0dXJuIHR5cGUgaW5zdGVhZCBvZiByZXR1cm4gMS4KCShjaGVja19qYXZhX21ldGhvZCk6IERvbid0IGlzc3VlIGVycm9yIGFib3V0Cgl0eXBlIG5vdCBiZWluZyBhbiBhY2NlcHRhYmxlIEphdmEgcGFyYW1ldGVyIGlmIAoJaXQncyBlcnJvcl9tYXJrX25vZGUuCgkKCVBSIGMrKy8yODI2OQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXIpOgoJUmV0dXJuIGVhcmx5IGlmIGFuIGludmFsaWQgdHlwZSB3YXMgZGV0ZWN0ZWQuCgkKMjAwNi0wNy0xNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjgyNDkKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9jaGVja19kZWNsX3NwZWMpOiBOZXcgZnVuY3Rpb24uCgkoY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSk6IEZhY3RvciBvdXQgY2hlY2sgZm9yIHJlcGVhdGVkCglkZWNsLXNwZWNpZmllcnMgaW50byBjcF9wYXJzZXJfY2hlY2tfZGVjbF9zcGVjLiBVc2UgaXQuCgkoY3BfcGFyc2VyX3R5cGVfc3BlY2lmaWVyX3NlcSk6IFVzZSBpdC4KCglQUiBjKysvMjgyOTQKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vZmZzZXRvZik6IFVzZSBUUkVFX09QRVJBTkQgZm9yIENPTVBPTkVOVF9SRUZzCglvbmx5LgoKCVBSIGMrKy8yODM4NwoJKiBkZWNsMi5jIChjcGx1c19kZWNsX2F0dHJpYnV0ZXMpOiBDaGVjayBmb3IgaW52YWxpZCBkZWNscy4KCjIwMDYtMDctMTQgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI4MzQzCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDaGVjayBhc21zcGVjX3RyZWUgZm9yIGVycm9yX21hcmtfbm9kZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgoyMDA2LTA3LTEyICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5KTogRG9uJ3QgY2hhbmdlIHZpc2liaWxpdHkgb2YKCWZ1bmN0aW9uIGxvY2FscyBiZWNhdXNlIG9mIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbi4KCjIwMDYtMDctMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yODIxNwoJKiBzZW1hbnRpY3MuYyAobm90ZV9kZWNsX2Zvcl9wY2gpOiBEb24ndCBwcmVtYW5nbGUgdGVtcGxhdGVzLgoKMjAwNi0wNy0xMiAgTWFydGluIE1pY2hsbWF5ciAgPHRibUBjeXJpdXMuY29tPgoKCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBSZW1vdmUgc3B1cmlvdXMgcXVvdGF0aW9uIG1hcmsgaW4KCXdhcm5pbmcuCgoyMDA2LTA3LTA3ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAZ21haWwuY29tPgoJICAgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdtYWlsLmNvbT4KCglQUiBjKysvMjc4MjAKCSogZGVjbC5jIChkZWZpbmVfbGFiZWwpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG9uIGVycm9yLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2xhYmVsX3N0bXQpOiBEb24ndCBjYWxsCglhZGRfc3RtdCBmb3IgaW52YWxpZCBsYWJlbHMuCgkKMjAwNi0wNy0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI4Mjc5CgkqIGRlY2wyLmMgKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IERvbid0IGFzc2VydAoJVFJFRV9QVUJMSUMuCgoyMDA2LTA3LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTM5ODMKCVBSIGMrKy8xNzUxOQoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IENoZWNrIFRZUEVfUEFDS0VEIGFmdGVyCglzdHJpcHBpbmcgYXJyYXkgdHlwZXMuCgkoZmluaXNoX3N0cnVjdF9iaXRzKTogRG9uJ3QgY29weSBUWVBFX1NJWkUgaGVyZS4KCglQUiBjKysvMTg2ODEKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IEZpeCBEUiA0NSBpbXBsZW1lbnRhdGlvbi4KCjIwMDYtMDctMDUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCUFuZHJldyBQaW5za2kgIDxwaW5za2lhQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8yNzA4NAoJKiBjcC1vYmpjcC1jb21tb24uYyAoY3h4X3R5cGVzX2NvbXBhdGlibGVfcCk6IElnbm9yZQoJdG9wIGxldmVsIHF1YWxpZmllcnMgZm9yIHBvaW50ZXIgdHlwZSBjb21wYXJpc29ucy4KCjIwMDYtMDctMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yODIxNQoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IFVuc2V0IERFQ0xfVVNFX1RFTVBMQVRFIGFuZCAKCURFQ0xfVEVNUExBVEVfSU5GTy4KCjIwMDYtMDYtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNjU3NwoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IEZvcmNlIGV2YWx1YXRpb24gb2YgdGhlIAoJaW5zdGFuY2UgcG9pbnRlciwgbm90IHRoZSBvYmplY3QuCgoyMDA2LTA2LTMwICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDYtMDYtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xODY5OAoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBPbmx5IHRyeSB0byB0cmVhdCB0aGUgZGVjbCBhcyBhbiBhY2Nlc3MgCglkZWNsYXJhdGlvbiBpZiB0aGUgc2NvcGUgaXMgYSBjbGFzcy4KCjIwMDYtMDYtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNjkwNQoJUFIgYysrLzI2NjEyCglQUiBjKysvMjcwMDAKCVBSIGMrKy8yNjk4NAoJUFIgYysrLzE5MTM0CgkqIGRlY2wyLmMgKGRldGVybWluZV92aXNpYmlsaXR5KTogT3ZlcmhhdWwuCgkoZGV0ZXJtaW5lX3Zpc2liaWxpdHlfZnJvbV9jbGFzcyk6IExpa2V3aXNlLgoJKG1pbl92aXNfciwgdHlwZV92aXNpYmlsaXR5LCBjb25zdHJhaW5fdmlzaWJpbGl0eSk6IE5ldyBmbnMuCgkoY29uc3RyYWluX3Zpc2liaWxpdHlfZm9yX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoY29uc3RyYWluX2NsYXNzX3Zpc2liaWxpdHkpOiBMaWtld2lzZS4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENhbGwgZGV0ZXJtaW5lX3Zpc2liaWxpdHkgZm9yIGZ1bmN0aW9uCglkZWNscywgdG9vLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNodGFnKTogQ2FsbCBkZXRlcm1pbmVfdmlzaWJpbGl0eS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBjb3B5IHZpc2liaWxpdHkgZnJvbSB0ZW1wbGF0ZSB0bwoJc3BlY2lhbGl6YXRpb24uCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzLCB0c3Vic3RfZGVjbCk6IENhbGwgZGV0ZXJtaW5lX3Zpc2liaWxpdHkuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IENhbGwgY29uc3RyYWluX2NsYXNzX3Zpc2liaWxpdHkuCgoJUFIgYysrLzI2OTA1CglQUiBjKysvMjE2NzUKCVBSIGMrKy8xNzQ3MAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBQYXNzIHRoZSBhdHRyaWJ1dGVzCgl0byBncm9rZGVjbGFyYXRvci4KCShjcF9wYXJzZXJfdHlwZV9zcGVjaWZpZXIpOiBBbGxvdyAnZW51bSBfX2F0dHJpYnV0ZSAoKC4uLikpIEUnLgoJKGNwX3BhcnNlcl9lbnVtX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKTogQXBwbHkgYXR0cmlidXRlcyBpZiB0aGlzCglkZWNsYXJlcyBvbmx5IHRoZSBjbGFzcy4KCShjcF9wYXJzZXJfY2xhc3Nfc3BlY2lmaWVyKTogQXBwbHkgbGVhZGluZyBhdHRyaWJ1dGVzIGltbWVkaWF0ZWx5LgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IEFkZCBhdHRyaWJ1dGVzIHBhcmFtZXRlciwKCWFwcGx5IHRoZW0gdG8gdGhlIHR5cGUuCgoJUFIgYysrLzIxNTgxCglQUiBjKysvMjU5MTUKCSogdHJlZS5jIChkZWNsX2Fub25fbnNfbWVtX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBNYWtlIGFub255bW91cyBuYW1lc3BhY2UKCW1lbWJlcnMgc3RhdGljLgoJKG1pbl92aXNfciwgY29uc3RyYWluX3Zpc2liaWxpdHkpOiBMaWtld2lzZS4KCSogcnR0aS5jIChjcmVhdGVfcHNldWRvX3R5cGVfaW5mbyk6IFNldCBUUkVFX1BVQkxJQyBvbgoJcHNldWRvLXR5cGVzLgoJKiBkZWNsLmMgKGN4eF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBUUkVFX1BVQkxJQyBvbgoJZ2xvYmFsX25hbWVzcGFjZS4KCSogbmFtZS1sb29rdXAuYyAocHVzaF9uYW1lc3BhY2Vfd2l0aF9hdHRyaWJzKTogRG9uJ3Qgc2V0IFRSRUVfUFVCTElDCglvbiBhbm9ueW1vdXMgbmFtZXNwYWNlcy4KCjIwMDYtMDYtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNzQyNAoJKiBwdC5jIChjb252ZXJ0X3RlbXBsYXRlX2FyZ3VtZW50KTogUGFzcyBhbGwgdGVtcGxhdGUgYXJndW1lbnRzIAoJb24gdG8gY29lcmNlX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1zLgoKMjAwNi0wNi0yNSAgTGVlIE1pbGx3YXJkICA8bGVlLm1pbGx3YXJkQGdtYWlsLmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzdW9yY2VyeS5jb20+CgoJUFIgYysrLzI4MDU0CgkqIGRlY2wyLmMgKGdyb2tiaXRmaWVkKTogUmVtb3ZlIGNoZWNrIGZvciBncm9rZGVjbGFyYXRvcgoJcmV0dXJuaW5nIE5VTExfVFJFRSwgaW5zdGVhZCBjaGVjayBmb3IgZXJyb3JfbWFya19ub2RlCgl0byBpbmRpY2F0ZSBmYWlsdXJlLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWRqdXN0IGJsb2NrIGNvbW1lbnQuCgoyMDA2LTA2LTI1ICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAZ21haWwuY29tPgoKCVBSIGMrKy8yODA1MQoJKiBtYW5nbGUuYyAobWFuZ2xlX2NvbnZfb3BfbmFtZV9mb3JfdHlwZSk6IENoZWNrIGZvcgoJaW52YWxpZCB0eXBlcy4KCSogbmFtZS1sb29rdXAuYyAocHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nKTogUm9idXN0aWZ5LgoJKGRvX2NsYXNzX3VzaW5nX2RlY2wpOiBSZXR1cm4gZWFybHkgaWYgbmFtZSBpcyBlcnJvcl9tYXJrX25vZGUuCgoyMDA2LTA2LTIzICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBjKysvMjgxMTQKCSogbmFtZS1sb29rdXAuYyAocHVzaHRhZyk6IFJldHVybiBpZiB3ZSBoYXZlIGVycm9yX21hcmtfbm9kZS4KCjIwMDYtMDYtMjMgIFN0ZXZlIEVsbGNleSAgPHNqZUBjdXAuaHAuY29tPgoKCVBSIGMrKy8yNzAxOQoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcl9hcnJheSk6IFNldCBjZS0+dmFsdWUgb24gZXJyb3JzLgoKMjAwNi0wNi0yMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjgxMTIKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9hdHRyaWJ1dGVfbGlzdCk6IFNraXAgYXR0cmlidXRlcyB3aXRoIGludmFsaWQKCWFyZ3VtZW50cy4gIEZpeCBjb21tZW50LgoKCVBSIGMrKy8xMTQ2OAoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogSGFuZGxlIGVycm9yX21hcmtfbm9kZXMgcmV0dXJuZWQgYnkKCWJ1aWxkX2phdmFfY2xhc3NfcmVmLgoJKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogRG8gbm90IGFib3J0IGNvbXBpbGF0aW9uLCBidXQgcmV0dXJuCgllcnJvcl9tYXJrX25vZGUuICBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuICBGaXggaW5kZW50YXRpb24uCgoyMDA2LTA2LTIzICBEYW5ueSBTbWl0aCAgIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMjc3ODkKCSogZGVjbC5jIChzdGFydF9kZWNsKTogQ2hlY2sgdGhhdCBkbGxpbXBvcnRzIGFyZSBub3QgaW5pdGlhbGl6ZWQuCgoyMDA2LTA2LTIyICBMZWUgTWlsbHdhcmQgIDxsZWUubWlsbHdhcmRAZ21haWwuY29tPgoKCVBSIGMrKy8yNzgwNQoJKiB0eXBlY2syLmMgKGJ1aWxkX21fY29tcG9uZW50X3JlZik6IFVzZSBlcnJvcl9vcGVyYW5kX3AuCgoJUFIgYysrLzI3ODIxCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG9uCglpbnZhbGlkIHVzZXMgb2YgdGhlIHNjb3BlIHJlc29sdXRpb24gb3BlcmF0b3IuCgoyMDA2LTA2LTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yODExMQoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBDaGVjayBmb3IgaW52YWxpZCBkZWNscy4KCglQUiBjKysvMjgxMTAKCSogcHQuYyAodW5pZnkpIDxjYXNlIFRFTVBMQVRFX1BBUk1fSU5ERVg+OiBDaGVjayBmb3IgaW52YWxpZAoJcGFyYW1ldGVycy4KCglQUiBjKysvMjgxMDkKCSogcnR0aS5jIChnZXRfdGluZm9fZGVjbF9keW5hbWljKTogUm9idXN0aWZ5LgoKMjAwNi0wNi0yMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjgwNTIKCSogaW5pdC5jIChwdXNoX2Jhc2VfY2xlYW51cHMpOiBTa2lwIG1lbWJlcnMgd2l0aCBpbnZhbGlkIHR5cGVzLgoJKiB0eXBlY2suYyAoYnVpbGRfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByKTogUm9idXN0aWZ5LgoKMjAwNi0wNi0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDYtMDYtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHBhcnNlci5jIChDUF9MRVhFUl9CVUZGRVJfU0laRSk6IEFkanVzdCB0byBhc3N1cmUgbmVhcgoJcG93ZXItb2YtdHdvIHRva2VuIHZlY3RvciBzaXplLgoKMjAwNi0wNi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjgwMTYKCSogZGVjbC5jIChjcF9maW5zaF9kZWNsKTogRG8gbm90IGVtaXQgdW5pbnN0YW50aWF0ZWQgc3RhdGljIGRhdGEKCW1lbWJlcnMuCgoJUFIgYysrLzI3OTc5CgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IFN0cmlwIGN2LXF1YWxpZmllcnMgZnJvbSBiaXRmaWVsZAoJdHlwZXMuCgoJUFIgYysrLzI3ODg0CgkqIGRlY2wuYyAoaGF2ZV9leHRlcm5fc3BlYyk6IFJlbW92ZS4KCShzdGFydF9kZWNsKTogRG8gbm90IGNoZWNrIGhhdmVfZXh0ZXJuX3NwZWMuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChoYXZlX2V4dGVybl9zcGVjKTogUmVtb3ZlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xpbmthZ2Vfc3BlY2lmaWNhdGlvbik6IERvbid0IHNldAoJaGF2ZV9leHRlcm5fc3BlYy4KCShjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3BhcmFtZXRlcl9kZWNsYXJhdGlvbik6IERvIG5vdCB0cmVhdCBwYXJhbWV0ZXJzIGFzCgl3aXRoaW4gdGhlIHNjb3BlIG9mIGFuIHVuYnJhY2VkIGxpbmthZ2Ugc3BlY2lmaWNhdGlvbi4KCjIwMDYtMDYtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI3Njg5CgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1NQRUNJQUxJWkFUSU9OX09GX1BSSU1BUllfVEVNUExBVEVfUCk6IE5ldwoJbWFjcm8uCgkqIHB0LmMgKHVuaWZ5KTogVXNlIGl0LgoKCVBSIGMrKy8yNzY2NgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBSb2J1c3RpZnkuCgoJUFIgYysrLzI3NjQwCgkqIHB0LmMgKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogU2V0IHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCB0bwoJemVybyB3aGlsZSBwZXJmb3JtaW5nIHN1YnN0aXR1dGlvbnMuCgoyMDA2LTA2LTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzY2NQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogVXNlIGNvbnN0cnVjdG9yX25hbWVfcCB0bwoJaWRlbnRpZnkgZGVzdHJ1Y3RvcnMuCgkoY3BfcGFyc2VyX25lc3RlZF9uYW1lX3NwZWNpZmllcl9vcHQpOiBSZW1vdmUgaW52YWxpZAoJb3B0aW1pemF0aW9uLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9pZCk6IFJlZmluZSBoZXVyaXN0aWMgZm9yIGRldGVybWluaW5nIHdoZXRoZXIKCXdlIGFyZSBlbnRlcmluZyBhIHNjb3BlLgoKCVBSIGMrKy8yNzY0OAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RlY2xhcmF0b3IpOiBSb2J1c3RpZnkuCgoJUFIgYysrLzI2NTU5CgkqIHB0LmMgKHRzdWJzdF9leHByKTogVXNlIGZpbmlzaF9vbXBfYXRvbWljLgoJKHZhbHVlX2RlcGVuZGVudF9leHByZXNzaW9uX3ApOiBBbGwgQ0FMTF9FWFBScyBhcmUgZGVwZW5kZW50LgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9hdG9taWMpOiBSZXdvcmsgdG8gdXNlIHN0YW5kYXJkCglwYXJhZGlnbXMgZm9yIGhhbmRsaW5nIG5vbi1kZXBlbmRlbnQgZXhwcmVzc2lvbnMuCgoyMDA2LTA2LTE0ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IFRpZHkgZGlhZ25vc3RpYyBtZXNzYWdlLgoKMjAwNi0wNi0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjgwMTgKCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRGlzYWxsb3cgYXJyYXkgYXNzaWdubWVudC4KCjIwMDYtMDYtMTQgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogY3AtdHJlZS5kZWY6IEZpeCB0eXBvLgoKMjAwNi0wNi0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcyMjcKCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IEFsbG93IGFuIGV4dGVybiAiQyIgdmFyaWFibGUgZGVjbGFyYXRpb25zCglmcm9tIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIG1hdGNoLgoJKGR1cGxpY2F0ZV9kZWNscyk6IERpc2FsbG93IHJlZGVjbGFyaW5nIGEgdmFyaWFibGUgd2l0aCBhCglkaWZmZXJlbnQgbGlua2FnZSBzcGVjaWZpY2F0aW9uLgoKMjAwNi0wNi0xMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzc5MwoJKiBjcC10cmVlLmggKGN4eF9pbnRfdHJlZV9tYXApOiBOZXcgc3RydWN0LgoJKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCBleHRlcm5fZGVjbF9tYXAgZmllbGQuCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IEFkZCB4IC0+IHQgbWFwcGluZwoJdG8gY3BfZnVuY3Rpb25fY2hhaW4tPmV4dGVybl9kZWNsX21hcCBoYXNoIHRhYmxlIGluc3RlYWQgb2YKCWNvcHlpbmcgb3ZlciBERUNMX1VJRC4KCSogY3AtZ2ltcGxpZnkuYyAoY3h4X2ludF90cmVlX21hcF9lcSwgY3h4X2ludF90cmVlX21hcF9oYXNoKTogTmV3CglmdW5jdGlvbnMuCgkoY3BfZ2VuZXJpY2l6ZV9yKTogUmVtYXAgREVDTF9FWFRFUk4gbG9jYWwgZGVjbHMgdXNpbmcKCWNwX2Z1bmN0aW9uX2NoYWluLT5leHRlcm5fZGVjbF9tYXAgaGFzaCB0YWJsZS4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBDbGVhciBleHRlcm5fZGVjbF9tYXAuCgoyMDA2LTA2LTEyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzYwMQoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29mZnNldG9mKTogSGFuZGxlIHBzZXVkby1kZXN0cnVjdG9ycy4KCglQUiBjKysvMjc5MzMKCSogbmFtZS1sb29rdXAuYyAobG9va3VwX3F1YWxpZmllZF9uYW1lKTogQWx3YXlzIHJldHVybiBlcnJvcl9tYXJrX25vZGUKCWlmIGxvb2t1cCBmYWlscy4KCglQUiBjKysvMjc5NTEKCSogZGVjbDIuYyAoZmluaXNoX2Fub25fdW5pb24pOiBSZXR1cm4gZWFybHkgaWYgYnVpbGRfYW5vbl91bmlvbl92YXJzCglmYWlscy4KCjIwMDYtMDYtMTIgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGMrKy8yMTIxMAoJKiB0eXBlY2syLmMgKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IFVzZSBjcF9jb252ZXJ0IHRvIGNvbnN0cnVjdAoJbm9uLWFnZ3JlZ2F0ZSBpbml0aWFsaXplcnMgaW5zdGVhZCBvZiB0aGUgdXNlci1sZXZlbCBidWlsZF9jX2Nhc3QuCgoyMDA2LTA2LTA3ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzYwMQoJKiBjcC10cmVlLmggKGZpbmlzaF9vZmZzZXRvZik6IEFkZCBwcm90b3R5cGUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfb2Zmc2V0b2YpOiBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfYnVpbHRpbl9vZmZzZXRvZik6IENhbGwgaXQgaW5zdGVhZCBvZgoJZm9sZF9vZmZzZXRvZi4KCSogcHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogTGlrZXdpc2UuCgoyMDA2LTA2LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzE3NwoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBSZXF1aXJlIHRoYXQgdGhlIGRlcml2ZWQgdHlwZSBiZQoJY29tcGxldGUgd2hlbiBwZXJmb3JtaW5nIGEgZGVyaXZlZC10by1iYXNlIGNvbnZlcnNpb24uCgoyMDA2LTA2LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzgxOQoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogUHJvY2VzcyBpbml0aWFsaXplcnMgZm9yIHN0YXRpYyBkYXRhCgltZW1iZXJzIHdpdGggbm9uLWRlcGVuZGVudCBpbml0aWFsaXplcnMsIGV2ZW4gaW4gdGVtcGxhdGVzLgoKCVBSIGMrKy8yNzcyMgoJKiBkZWNsLmMgKG1heWJlX2RlZHVjZV9zaXplX2Zyb21fYXJyYXlfaW5pdCk6IElmIHRoZSBkZWNsYXJhdGlvbgoJaXMgZXJyb25lb3VzLCBnaXZlIGl0IGFuIGVycm9uZW91cyB0eXBlLgoJKGxheW91dF92YXJfZGVjbCk6IElmIHRoZSB0eXBlIGlzIGVycm9uZW91cywgZ2l2ZSB1cC4KCShjaGVja19pbml0aWFsaXplcik6IExpa2V3aXNlLgoKCVBSIGMrKy8yNzgwNwoJKiBjcC10cmVlLmggKFRZUEVfT0JKX1ApOiBOZXcgbWFjcm8uCgkoVFlQRV9QVFJPQl9QKTogVXNlIGl0LgoJKFRZUEVfUkVGX09CSl9QKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY29tcG91bmRfbGl0ZXJhbCk6IERvIG5vdCBwZXJtaXQgY29tcG91bmQKCWxpdGVyYWxzIG9mIG5vbi1vYmplY3QgdHlwZXMuCgoJUFIgYysrLzI3ODA2CgkqIHR5cGVjay5jIChvcmlnaW5hbF90eXBlKTogUm9idXN0aWZ5LgoKMjAwNi0wNi0wNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc4MDQKCSogaW5pdC5jIChjb25zdGFudF92YWx1ZV8xKTogUmV0dXJuIGRlY2wgaW5zdGVhZCBvZiBlcnJvcl9tYXJrX25vZGUKCWZvciBpbnZhbGlkIGluaXRpYWxpemVycy4KCjIwMDYtMDYtMDEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMrKy8yNzU5MgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogQ2FsbCBjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24KCW9uIG9wZXJhbmQgb2YgdGhlIENPTkRfRVhQUiBmb3IgdGhlIG51bGwgcG9pbnRlciBjaGVjay4KCjIwMDYtMDYtMDEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMrKy8yNjc0MAoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBNYXJrIHRoZSBmdW5jdGlvbiBhcyBiZWluZyB1c2VkLgoKMjAwNi0wNi0wMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJUFIgYysrLzI2NjYwCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfaW5pdGlhbF9wcmFnbWEpOiBSZWFkIG9uZSBtb3JlIHRva2VuIGZvcgoJY2FsbGVyIGFmdGVyIHJlYWRpbmcgUENIIGZpbGUgaW4uCgoyMDA2LTA1LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzgwMQoJKiBjYWxsLmMgKHBlcmZvcm1faW1wbGljaXRfY29udmVyc2lvbik6IERvIG5vdCBhY3R1YWxseSBwZXJmb3JtCgljb252ZXJzaW9ucyBpbiB0ZW1wbGF0ZXMuCgoJUFIgYysrLzI2NDk2CgkqIGNhbGwuYyAocmVzb2x2ZV9hcmdzKTogQ2hlY2sgZm9yIGludmFsaWQgdXNlcyBvZiBib3VuZAoJbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGZvciBlcnJvcnMuCgoJUFIgYysrLzI3Mzg1CgkqIGRlY2wuYyAocmVzaGFwZV9pbml0KTogUm9idXN0aWZ5LgoJKHJlc2hhcGVfaW5pdF9hcnJheV8xKTogTGlrZXdpc2UuCgoyMDA2LTA1LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzgwOAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSk6IElzc3VlIGVycm9ycyBhYm91dAoJImZyaWVuZCIgc3BlY2lmaWVycyB0aGF0IGRvIG5vdCBhcHBlYXIgaW4gY2xhc3Mgc2NvcGVzLgoKCVBSIGMrKy8yNzgwMwoJKiBjbGFzcy5jIChjaGVja19iaXRmaWVsZF9kZWNsKTogRW5zdXJlIHRoYXQgYWxsIGJpdGZpZWxkcyBoYXZlCglpbnRlZ3JhbCB0eXBlLgoKMjAwNi0wNS0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBGaXggYSB0eXBvIGluIGFuIGVycm9yCgltZXNzYWdlLgoKMjAwNi0wNS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMsIGRlY2wyLmMsIHBhcnNlci5jOiBGaXggY29tbWVudCB0eXBvcy4gIEZvbGxvdwoJc3BlbGxpbmcgY29udmVudGlvbnMuCgoyMDA2LTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDEwMwoJKiBkZWNsLmMgKGNwX21ha2VfZm5hbWVfZGVjbCk6IERvbid0IHNldCBERUNMX0lOSVRJQUwgdG8KCWVycm9yX21hcmtfbm9kZSB0byBpbmRpY2F0ZSBhbiBpbml0aWFsaXphdGlvbiBpcyBPSy4KCShzdGFydF9kZWNsKTogTGlrZXdpc2UuICBBZGp1c3QgY2FsbCB0byBzdGFydF9kZWNsXzEuCgkoc3RhcnRfZGVjbF8xKTogQWRkIGluaXRpYWxpemVkIHBhcmFtZXRlci4gIFNpbXBsaWZ5LgoJKiBleGNlcHQuYyAoaW5pdGlhbGl6ZV9oYW5kbGVyX3Bhcm0pOiBBZGp1c3QgY2FsbCB0bwoJc2V0YXJ0X2RlY2xfMS4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBMZXQgY3BfZmluaXNoX2RlY2wgaW5pdGlhbGl6ZSBjYXRjaAoJcGFyYW1ldGVycy4KCSogY3AtdHJlZS5oIChzdGFydF9kZWNsXzEpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IERvbid0IHNldCBERUNMX0lOSVRJQUwgdG8gZXJyb3JfbWFya19ub2RlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBMZXQgY3BfZmluaXNoX2RlY2wgaGFuZGxlIGluaXRpYWxpemF0aW9uLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NvbXBvdW5kX2xpdGVyYWwpOiBDcmVhdGUgYSB0ZW1wb3JhcnkKCXZhcmlhYmxlIGZvciB0aGUgbGl0ZXJhbC4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogUmVtb3ZlIENPTVBPVU5EX0xJVEVSQUxfUCBzcGVjaWFsCgljYXNlcy4KCSogZGVjbDIuYyAoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsKTogRG9uJ3Qgc2V0CglERUNMX0lOSVRJQUwuCgkoZ3Jva2ZpZWxkKTogRG8gbm90IHRyeSB0byBpbml0aWFsaXplIGZ1bmN0aW9ucy4KCjIwMDYtMDUtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwMTczCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IERpc2FsbG93IHBhcnRpYWwKCXNwZWNpYWxpemF0aW9ucyBvZiB0ZW1wbGF0ZXMuCgoyMDA2LTA1LTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzcxNgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBUZXN0IGFyZ3VtZW50cyBmb3IgZXJyb3Jfb3BlcmFuZF9wLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgaW5zdGVhZCBvZiBOVUxMX1RSRUUuCgoyMDA2LTA1LTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzIxMAoJKiBjcC10cmVlLmggKGNwX3NhdmVfZXhwcik6IE5ldyBmdW5jdGlvbi4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBDb3JyZWN0IGxvZ2ljIGZvciB6ZXJvLWVsZW1lbnQgYXJyYXkKCXdhcm5pbmcuICBVc2UgY3Bfc2F2ZV9leHByLgoJKiB0cmVlLmMgKGNwX3NhdmVfZXhwcik6IE5ldyBmdW5jdGlvbi4KCjIwMDYtMDUtMjEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI3Mzk4CgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGluc3RlYWQgb2YgTlVMTF9UUkVFCglvciB2b2lkX3R5cGVfbm9kZS4KCjIwMDYtMDUtMTkgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogdHlwZWNrLmMgKGRlZmF1bHRfY29udmVyc2lvbik6IFJlbW92ZSBzdGF0aWMuCgoyMDA2LTA1LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNjQzMwoJKiBjcC10cmVlLmggKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IENoYW5nZSBwcm90b3R5cGUuCgkoZmluaXNoX2Z1bmN0aW9uX2hhbmRsZXJfc2VxdWVuY2UpOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9mdW5jdGlvbl90cnlfYmxvY2spOiBBZGp1c3QgY2FsbHMuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogQWRqdXN0IGNhbGxzLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fZnVuY3Rpb25fdHJ5X2Jsb2NrKTogQ3JlYXRlIGFuIGFydGlmaWNpYWwKCW91dGVyIHNjb3BlLgoJKGZpbmlzaF9mdW5jdGlvbl9oYW5kbGVyX3NlcXVlbmNlKTogQ2xvc2UgaXQuCgoyMDA2LTA1LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzQ3MQoJUFIgYysrLzI3NTA2CgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogQ29udmVydCBiaXRmaWVsZHMgdG8gdGhlaXIgZGVjbGFyZWQKCXR5cGVzIGhlcmUuICBJbXByb3ZlIGRvY3VtZW50YXRpb24uICBBdm9pZCB1c2Ugb2YgY3BfY29udmVydC4KCShkZWZhdWx0X2NvbnZlcnNpb24pOiBNYWtlIGl0IHN0YXRpYy4gIFBlcmZvcm0gaW50ZWdyYWwgcHJvbW90aW9ucwoJYmVmb3JlIGx2YWx1ZS10by1ydmFsdWUsIGZ1bmN0aW9uLXRvLXBvaW50ZXIsIGFuZCBhcnJheS10by1wb2ludGVyCgljb252ZXJzaW9ucy4KCSogaW5pdC5jIChidWlsZF9pbml0KTogUmVtb3ZlLgoJKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBEbyBub3QgY2FsbCBydmFsdWUuCgkqIGNhbGwuYyAobnVsbF9wdHJfY3N0X3ApOiBSb2J1c3RpZnkuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFRpZHkuCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IERvIG5vdCBwZXJmb3JtIGx2YWx1ZS10by1ydmFsdWUKCWNvbnZlcnNpb24gb24gb3BlcmFuZCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRlbXBvcmFyeS4KCSogdHJlZS5jIChjb252ZXJ0LmgpOiBJbmNsdWRlIGl0LgoJKGNvbnZlcnRfYml0ZmllbGRfdG9fZGVjbGFyZWRfdHlwZSk6IFVzZSBjb252ZXJ0X3RvX2ludGVnZXIsIG5vdAoJY3BfY29udmVydC4KCShydmFsdWUpOiBEb24ndCBjb252ZXJ0IGJpdGZpZWxkcyB0byB0aGVpciBkZWNsYXJlZCB0eXBlIGhlcmUuCgkqIGNwLXRyZWUuaCAoYnVpbGRfaW5pdCk6IFJlbW92ZS4KCShkZWZhdWx0X2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChidWlsZF9tX2NvbXBvbmVudF9yZWYpOiBEbyBub3QgcGVyZm9ybQoJbHZhbHVlLXRvLXJ2YWx1ZSwgZnVuY3Rpb24tdG8tcG9pbnRlciwgb3IgYXJyYXktdG8tcG9pbnRlcgoJY29udmVyc2lvbnMgaGVyZS4gIENvcnJlY3QgZXJyb3IgbWVzc2FnZS4KCjIwMDYtMDUtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI2MTIyCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IFJlbW92ZSBjaGVja3MgZm9yIHZpcnR1YWwKCWZ1bmN0aW9ucy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9mdW5jdGlvbl9zcGVjaWZpZXJfb3B0KTogQ29tcGxhaW4gYWJvdXQKCXZpcnR1YWwgdGVtcGxhdGVzLgoJKGNwX3BhcnNlcl9wdXJlX3NwZWNpZmllcik6IExpa2V3aXNlLgoKCVBSIGMrKy8yNjA2OAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3NldF9zdG9yYWdlX2NsYXNzKTogQ2hlY2sgZm9yCglpbnZhbGlkIHVzZXMgb2Ygc3RvcmFnZSBjbGFzc2VzIG9uIHVuYnJhY2VkIGxpbmthZ2UKCXNwZWNpZmljYXRpb25zLgoJKGNwX3BhcnNlcl9kZWNsX3NwZWNpZmllcl9zZXEpOiBQYXNzIGtleXdvcmRzLCBub3Qgc3RvcmFnZSBjbGFzc2VzLAoJdG8gY3BfcGFyc2VyX3NldF9zdG9yYWdlX2NsYXNzLgoKMjAwNi0wNS0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3NDkxCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY29tcG91bmRfbGl0ZXJhbCk6IE9ubHkgc2V0IFRSRUVfSEFTX0NPTlNUUlVDVE9SCglvbiBDT05TVFJVQ1RPUnMuCgoJUFIgbWlkZGxlLWVuZC8yNzQxNQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9wYXJhbGxlbCk6IFNldCBPTVBfUEFSQUxMRUxfQ09NQklORUQKCW9uIGNvbWJpbmVkIHBhcmFsbGVsIHdvcmtzaGFyZSBjb25zdHJ1Y3RzLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IENvcHkgT01QX1BBUkFMTEVMX0NPTUJJTkVEIGZsYWcuCgoyMDA2LTA1LTE2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgZHJpdmVyLzI2ODg1CgkqIE1ha2UtbGFuZy5pbiAoR1hYX09CSlMpOiBSZXBsYWNlIGdjYy5vIHdpdGggJChHQ0NfT0JKUykuCgoyMDA2LTA1LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzMzOQoJKiBjcC10cmVlLmggKHBlcmZvcm1fYWNjZXNzX2NoZWNrcyk6IE5ldyBmdW5jdGlvbi4KCSogc2VtYW50aWNzLmMgKHBlcmZvcm1fYWNjZXNzX2NoZWNrcyk6IE5ldyBmdW5jdGlvbi4KCShwZXJmb3JtX2RlZmVycmVkX2FjY2Vzc19jaGVja3MpOiBVc2UgaXQuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfc2ltcGxlX2RlY2xhcmF0aW9uKTogQWRqdXN0IGNhbGwgdG8KCWNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IuCgkoY3BfcGFyc2VyX3R5cGVfcGFyYW1ldGVyKTogRG8gbm90IGRlZmVyIGNoZWNrcyBpbiBkZWZhdWx0Cglhcmd1bWVudHMuCgkoY3BfcGFyc2VyX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQWRqdXN0IGNhbGwgdG8KCWNwX3BhcnNlcl9zaW5nbGVfZGVjbGFyYXRpb24uCgkoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IFBlcmZvcm0gdGVtcGxhdGUtcGFyYW1ldGVyIGFjY2VzcwoJY2hlY2tzLgoJKGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24pOiBEbyBub3QgZGVmZXIgY2hlY2tzIGZvcgoJdGVtcGxhdGUgcGFyYW1ldGVyIGRlZmF1bHQgYXJndW1lbnRzLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9kZWNsYXJhdGlvbl9hZnRlcl9leHBvcnQpOiBHYXRoZXIgYWNjZXNzCgljaGVja3MgZm9yIHRlbXBsYXRlIHBhcmFtZXRlcnMsIGFuZCBwYXNzIHRoZW0gdG8KCWNwX3BhcnNlcl9zaW5nbGVfZGVjbGFyYXRpb24uCgkoY3BfcGFyc2VyX3RlbXBsYXRlX3BhcmFtZXRlcl9hY2Nlc3NfY2hlY2tzKTogTmV3IGZ1bmN0aW9uLgoJKGNwX3BhcnNlcl9zaW5nbGVfZGVjbGFyYXRpb24pOiBBZGQgY2hlY2tzIHBhcmFtZXRlci4KCglQUiBjKysvMjc1MDUKCSogY2FsbC5jIChjb252ZXJ0X2xpa2VfcmVhbCk6IENvbnZlcnQgYml0ZmllbGRzIHRvIHRoZWlyIGRlY2xhcmVkCgl0eXBlcyB3aGVuIGZvcm1pbmcgYW4gcnZhbHVlLgoJKiB0cmVlLmMgKGNvbnZlcnRfYml0ZmllbGRfdG9fZGVjbGFyZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShydmFsdWUpOiBVc2UgaXQuCgkqIGNwLXRyZWUuaCAoY29udmVydF9iaXRmaWVsZF90b19kZWNsYXJlX3R5cGUpOiBEZWNsYXJlIGl0LgoKMjAwNi0wNS0xNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjc1ODIKCSogcHQuYyAoYW55X2RlcGVuZGVudF90ZW1wbGF0ZV9hcmd1bWVudHNfcCk6IFJldHVybiBlYXJseSBvbiBpbnZhbGlkCglhcmd1bWVudCBsaXN0LgoKCVBSIGMrKy8yNzU4MQoJKiBzZWFyY2guYyAoYWRqdXN0X3Jlc3VsdF9vZl9xdWFsaWZpZWRfbmFtZV9sb29rdXApOiBTa2lwIG9uCglpbnZhbGlkIGNvbnRleHRfY2xhc3MuCgoJUFIgYysrLzI3MzE1CgkqIHB0LmMgKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IFJldHVybiBlYXJseSBvbiBpbnZhbGlkIGRlY2wuCgoJUFIgYysrLzI3NTU5CgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpbnN0ZWFkCglvZiBicm9rZW4gZGVjbC4KCglQUiBjKysvMjc0OTYKCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IFJldHVybiBlYXJseSBvbiBpbnZhbGlkIGZyaWVuZAoJZGVjbGFyYXRpb25zLgoKMjAwNi0wNS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZS1sYW5nLmluIChjcC9kZWNsLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiAkKFRBUkdFVF9IKS4KCShjcC9kZWNsMi5vKTogTGlrZXdpc2UuCgkoY3AvdHlwZWNrLm8pOiBMaWtld2lzZS4KCShjcC9jdnQubyk6IExpa2V3aXNlLgoJKGNwL3BhcnNlci5vKTogTGlrZXdpc2UuCgkoY3AvY2FsbC5vKTogUmVwbGFjZSB0YXJnZXQuaCB3aXRoICQoVEFSR0VUX0gpLgoKMjAwNi0wNS0xNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBwdC5jIChidWlsZF9ub25fZGVwZW5kZW50X2V4cHIpOiBMZWF2ZSBBRERSX0VYUFIgb2YKCUNPTVBPTkVOVF9SRUYgYWxvbmUuCgoyMDA2LTA1LTExICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzU0NwoJKiBkZWNsLmMgKGNvcHlfZm5fcCk6IFJldHVybiBlYXJseSBvbiBub24tbWVtYmVyIGZ1bmN0aW9ucy4KCjIwMDYtMDUtMDggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI3NDQ3CgkqIGRlY2wyLmMgKGJ1aWxkX21lbWZuX3R5cGUpOiBTa2lwIGludmFsaWQgZnVuY3Rpb25zIGFuZCBjbGFzcyB0eXBlcy4KCjIwMDYtMDUtMDYgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI3NDI3CgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFJldHVybiBlYXJseSBvbiBpbnZhbGlkIGFyZ3VtZW50cy4KCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IFJlbW92ZSBzdXBlcmZsdW91cyB0ZW1wb3JhcnkuCgoJUFIgYysrLzI3NDMwCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEhhbmRsZSBlcnJvbmVvdXMgbm9uLXR5cGUgcGFyYW1ldGVycy4KCglQUiBjKysvMjc0MjMKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogU2tpcCBlcnJvbmVvdXMgdHlwZXMuCgoJUFIgYysrLzI3NDIyCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IFJldHVybiBlYXJseSBvbiBhcmdzIHdpdGgKCWludmFsaWQgdHlwZXMuCgoyMDA2LTA1LTAzICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJUFIvMjEzOTEKCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0XzEpOiBTYXZlIGNhc3RlZCB0eXBlcyBpbiB1c2VkIHR5cGVzCgloYXNoIHRhYmxlLgoJKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3RfMSk6IFNhbWUuCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBTYW1lLgoKMjAwNi0wNS0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI3MzU5CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX2Zvcl9sb29wKTogT25seSBjYWxsCgljcF9wYXJzZXJfYWJvcnRfdGVudGF0aXZlX3BhcnNlIGlmIGNwX3BhcnNlcl9wYXJzZV9kZWZpbml0ZWx5IHdhcyBub3QKCWNhbGxlZC4KCjIwMDYtMDUtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI3MTAyCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSb2J1c3RpZnkgY2hlY2tzIGZvciBkZWZpbmluZyBtZW1iZXJzCglvZiBpbmNvbXBsZXRlIHR5cGVzLgoKCVBSIGMrKy8yNzMwOQoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQ2FsbCBncm9rX3NwZWNpYWxfbWVtYmVyX3Byb3BlcnRpZXMuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBjYWxsIGl0IGhlcmUuCgkoY29weV9mbl9wKTogQSBURU1QTEFURV9ERUNMIGlzIG5ldmVyIGEgY29weSBjb25zdHJ1Y3RvciBvcgoJYXNzaWdubWVudCBvcGVyYXRvci4gIFNldCBUWVBFX0hBU19DT05TVFVSQ1RPUiBpZiBERUNMIGlzIGEKCWNvbnN0cnVjdG9yLgoJKHN0YXJ0X21ldGhvZCk6IERvbid0IGNhbGwgZ3Jva19zcGVjaWFsX21lbWJlcl9wcm9wZXJ0aWVzLgoJKiBtZXRob2QuYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoKMjAwNi0wNS0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgbWlkZGxlLWVuZC8yNzMzNwoJKiBjcC1naW1wbGlmeS5jIChjeHhfb21wX3ByaXZhdGl6ZV9ieV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaCAoY3h4X29tcF9wcml2YXRpemVfYnlfcmVmZXJlbmNlKTogTmV3IHByb3RvdHlwZS4KCSogY3Atb2JqY3AtY29tbW9uLmggKExBTkdfSE9PS1NfT01QX1BSSVZBVElaRV9CWV9SRUZFUkVOQ0UpOiBEZWZpbmUuCgoyMDA2LTA0LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzA5NAoJKiBwdC5jICh0c3Vic3RfZGVmYXVsdF9hcmd1bWVudCk6IEluY3JlbWVudCBmdW5jdGlvbl9kZXB0aCBhcm91bmQKCWNhbGwgdG8gdHN1YnN0X2V4cHIuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcGFyYW1ldGVyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IFRpZHkuCgoyMDA2LTA0LTMwICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNzI3OAoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IFNraXAgb3BlcmF0b3JzIHdpdGggaW52YWxpZCBhcmdzCgl3aGVuIGNoZWNraW5nIGZvciBjbGFzcy10eXBlIG9yIGVudW0tdHlwZSBhcmdzLgoKMjAwNi0wNC0yOSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjcyNzkKCSogZGVjbC5jIChjb3B5X2ZuX3ApOiBTa2lwIGZ1bmN0aW9ucyB3aXRoIGludmFsaWQgZmlyc3QgYXJnLgoKMjAwNi0wNC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjcyOTIKCSogdHJlZS5jIChydmFsdWUpOiBDb252ZXJ0IGJpdGZpZWxkcyB0byB0aGVpciBkZWNsYXJlZCB0eXBlcy4KCglQUiBjKysvMjcxMDIKCSogdHlwZWNrMi5jIChjeHhfaW5jb21wbGV0ZV90eXBlX2RpYWdub3N0aWMpOiBIYW5kbGUKCVRZUEVOQU1FX1RZUEUuCgoyMDA2LTA0LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzI5MgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IERvbid0IGFkanVzdCBiaXRmaWVsZCB0eXBlcy4KCShwZXJmb3JtX2ludGVncmFsX3Byb21vdGlvbnMpOiBUcmVhdCBiaXRmaWVsZCBlbnVtcyBhcyBlbnVtcywgbm90CglhcyBzaG9ydCBpbnRlZ2VyIHR5cGVzLgoJKiB0cmVlLmMgKHJ2YWx1ZSk6IENvbnZlcnQgYml0ZmllbGRzIHRvIHRoZWlyIGNvcnJlY3QgdHlwZXMuCgoyMDA2LTA0LTI0ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8xOTk2MwoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfdHlwZSk6IFNraXAgZmllbGRzIHdpdGggaW52YWxpZCB0eXBlcy4KCjIwMDYtMDQtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI2OTEyCgkqIGNwLXRyZWUuaCAoYnVpbGRfdGhpc19wYXJtKTogRGVjbGFyZS4KCShncm9rX21ldGhvZF9xdWFscyk6IFJlbW92ZS4KCShidWlsZF9tZW1mbl90eXBlKTogRGVjbGFyZS4KCShidWlsZF9hcnRpZmljaWFsX3Bhcm0pOiBEZWNsYXJlLgoJKGRvX2ZyaWVuZCk6IFJlbW92ZSBxdWFscyBwYXJhbWV0ZXIuCgkqIGRlY2wuYyAoYnVpbGRfdGhpc19wYXJtKTogTmV3IGZ1bmN0aW9uLgoJKGdyb2tmbmRlY2wpOiBVc2UgaXQuICBEbyBub3QgcGFzcyBxdWFscyB0byBncm9rY2xhc3Nmbi4KCShncm9rZGVjbGFyYXRvcik6IFJlbmFtZSBxdWFscyB0byBtZW1mbl9xdWFscy4gIEF2b2lkIGFsbG9jYXRpbmcKCXVubmVjZXNzYXJ5IFRZUEVfREVDTHMuICBDb3JyZWN0IHF1YWxpZmljYXRpb24gb2YgbWVtYmVyIGZ1bmN0aW9uCgl0eXBlcy4gIFRpZHkuCgkqIG1ldGhvZC5jIChpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBVc2UgYnVpbGRfdGhpc19wYXJtLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogUmVtb3ZlIHF1YWxzIHBhcmFtZXRlci4KCSogZGVjbDIuYyAoZ3Jva19tZXRob2RfcXVhbHMpOiBSZW1vdmUuCgkoYnVpbGRfbWVtZm5fdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9hcnRpZmljaWFsX3Bhcm0pOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuCgkoZ3Jva2NsYXNzZm4pOiBSZW1vdmUgcXVhbHMgcGFyYW1ldGVyLiAgRG8gbm90IGJ1aWxkICJ0aGlzIgoJUEFSTV9ERUNMIGhlcmUuCgoJUFIgYysrLzI2NTM0CgkqIGNwLXRyZWUuaCAoaXNfYml0ZmllbGRfZXhwcl93aXRoX2xvd2VyZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCSogdHlwZWNrLmMgKGlzX2JpdGZpZWxkX2V4cHJfd2l0aF9sb3dlcmVkX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoZGVjYXlfY29udmVyc2lvbik6IENvbnZlcnQgYml0ZmllbGQgZXhwcmVzc2lvbnMgdG8gdGhlIGNvcnJlY3QKCXR5cGUuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBSZW1vdmUgc3B1cmlvdXMgY29udmVyc2lvbnMuCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc190eXBlKTogTW9kaWZ5IHRoZSB0eXBlIG9mIGJpdGZpZWxkcyB0bwoJaW5kaWNhdGUgYSBsaW1pdGVkIHJhbmdlLgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBBZGp1c3QgdGhlIHR5cGUgb2YgYml0ZmllbGQKCWV4cHJlc3Npb25zIHVzZWQgaW4gYW4gcnZhbHVlIGNvbnRleHQuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoKMjAwNi0wNC0yMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNi0wNC0yMSAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGRlY2wuYzogRml4IHR5cG8gaW4gZnVuY3Rpb24gbmFtZS4KCjIwMDYtMDQtMTkgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI2NTU4CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY2xhc3NfbmFtZSk6IENoZWNrIGZvciBpbnZhbGlkIHR5cGVuYW1lcy4KCVJlYXJyYW5nZSBjb2RlLgoKCVBSIGMrKy8yNjczOQoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogUmV0dXJuIGVhcmx5IGlmCglwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwgZmFpbHMuCgoJUFIgYysrLzI2MDM2CgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgaW5zdGVhZCBvZgoJZXJyb3JfbWFya19saXN0LgoJKiBjcC10cmVlLmggKGVycm9yX21hcmtfbGlzdCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogZGVjbC5jIChlcnJvcl9tYXJrX2xpc3QpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCShjeHhfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEbyBub3QgaW5pdGlhbGl6ZSBlcnJvcl9tYXJrX2xpc3QuCgoJUFIgYysrLzEwMzg1CgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBDaGVjayBmb3IgaW52YWxpZCBjb252ZXJzaW9ucwoJYmVmb3JlIGNhbGxpbmcgY29udmVydF90b19yZWZlcmVuY2UuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IEFzc2VydCB0aGF0IHJlZnR5cGUgaXMgYQoJUkVGRVJFTkNFX1RZUEUuCgoyMDA2LTA0LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNzEwMgoJKiBjbGFzcy5jIChjdXJyZW50bHlfb3Blbl9jbGFzcyk6IFRpZHkuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBJZiB3ZSBlbmNvdW50ZXIgYW4gZXJyb25lb3VzCglkZWNsYXJhdG9yLCBhc3N1bWUgdGhhdCB3ZSBoYXZlIGFscmVhZHkgaXNzdWVkIGFuIGVycm9yIG1lc3NhZ2UKCWFuZCByZXR1cm4uICBSZXR1cm4gZXJyb3JfbWFya19ub2RlIGluc3RlYWQgb2YgTlVMTF9UUkVFIGluIG1vcmUKCXBsYWNlcy4gIElzc3VlIGVycm9ycyBhYm91dCBmdW5jdGlvbiBkZWZpbml0aW9ucyB0aGF0IGRvIG5vdCBoYXZlCglhIGZ1bmN0aW9uIGRlY2xhcmF0b3IuICBDaGVjayBmb3IgY29tcGxldGUgdHlwZXMgZm9yIGFsbCBmdW5jdGlvbgoJZGVmaW5pdGlvbnMuCgkqIGNwLXRyZWUuaCAoY3BfZXJyb3JfZGVjbGFyYXRvcik6IFJlbW92ZS4KCShjdXJyZW50bHlfb3Blbl9jbGFzcyk6IENoYW5nZSByZXR1cm4gdHlwZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9pZF9leHByZXNzaW9uKTogQWRkIG9wdGlvbmFsX3AgcGFyYW1ldGVyLgoJKGNwX3BhcnNlcl9wYXJzZV9kaWFnbm9zZV9pbnZhbGlkX3R5cGVfbmFtZSk6IEFkanVzdCBjYWxscy4KCShjcF9wYXJzZXJfaWRfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IElmIHRoZSBuYW1lIGlzIG9wdGlvbmFsLCByZXR1cm4KCU5VTExfVFJFRS4KCShjcF9wYXJzZXJfcG9zdGZpeF9kb3RfZGVyZWZfZXhwcmVzc2lvbik6IEFkanVzdCBjYWxscy4KCShjcF9wYXJzZXJfdHlwZV9wYXJhbWV0ZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfdW5xdWFsaWZpZWRfaWQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZGlyZWN0X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZGVjbGFyYXRvcl9pZCk6IEFkZCBvcHRpb25hbF9wIHBhcmFtZXRlci4KCShjcF9wYXJzZXJfZnVuY3Rpb25fZGVmaW5pdGlvbl9mcm9tX3NwZWNpZmllcnNfYW5kX2RlY2xhcmF0b3IpOgoJQXNzdW1lIHRoYXQgc3RhcnRfZnVuY3Rpb24gaW5kaWNhdGVzIGZhaWx1cmUgb25seSBpZiBpdCBoYXMgaXNzdWVkCglhbiBlcnJvci4KCShjcF9wYXJzZXJfb21wX3Zhcl9saXN0X25vX29wZW4pOiBBZGp1c3QgY2FsbHMuCgoyMDA2LTA0LTE3ICBKYW5pcyBKb2huc29uICA8amFuaXMxODdAdXMuaWJtLmNvbT4KCglQUiBjKysvMjYxMTQsIGMrKy8yNjExNQoJKiB0eXBlY2suYyAoY3h4X21hcmtfYWRkcmVzc2FibGUpOiBSZXN0b3JlIGNoZWNrIGZvciBleHRyYV93YXJuaW5ncy4KCSogY2xhc3MuYyAoY2hlY2tfZmllbGRfZGVjbHMpOiBEaXR0by4KCjIwMDYtMDQtMTcgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBSZW1vdmUgc3VwZXJmbHVvdXMgdGVtcG9yYXJ5LgoKMjAwNi0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjYzNjUKCSogdHlwZWNrLmMgKGZpbmlzaF9jbGFzc19tZW1iZXJfYWNjZXNzX2V4cHIpOiBSb2J1c3RpZnkKCjIwMDYtMDQtMTUgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChjcC9wdC5vKTogRGVwZW5kIG9uIHZlY3ByaW0uaC4KCSogcHQuYzogSW5jbHVkZSB2ZWNwcmltLmguCgkoaW5saW5lX3Bhcm1fbGV2ZWxzKTogQ2hhbmdlIHRoZSB0eXBlIHRvIFZFQyhpbnQsaGVhcCkgKi4KCShpbmxpbmVfcGFybV9sZXZlbHNfdXNlZCk6IFJlbW92ZS4KCShtYXliZV9iZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZywKCW1heWJlX2VuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IFVzZSBWRUMgaW5zdGVhZCBvZgoJVkFSUkFZLgoKCSogY3AvY2FsbC5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDYtMDQtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IEluaXRpYWxpemUgbG9jYWwgdmFyaWFibGVzCglhZ2dyZXNzaXZlbHkuCgoyMDA2LTA0LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogSW5pdGlhbGlzZQoJaXNfcGFyZW50aGVzaXplZF9pbml0IHRvIGZhbHNlIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDA2LTA0LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChidWlsZF9vcGVyYXRvcl9uZXdfY2FsbCk6IEFkanVzdCBwcm90b3R5cGUuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9yYXdfbmV3X2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfbmV3XzEpOiBQYXNzIGluZm9ybWF0aW9uIGFzIHBhcmFtZXRlcnMsIHJhdGhlciB0aGFuCglidW5kbGluZyBpdCBpbnRvIGEgTkVXX0VYUFIuCgkoYnVpbGRfbmV3KTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKGJ1aWxkX3ZlY19kZWxldGVfMSk6IEFkanVzdCBmb3IgY2hhbmdlcyB0byBidWlsZF9vcF9kZWxldGVfY2FsbC4KCShidWlsZF9kZWxldGUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfb3BlcmF0b3JfbmV3X2NhbGwpOiBSZXR1cm4gdGhlIGFsbG9jYXRpb24gZnVuY3Rpb24KCXVzZWQuCgkoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBUYWtlIGFsbG9jYXRpb24gZnVuY3Rpb24gYXMgcGFyYW1ldGVyLgoJKGJ1aWxkX3NwZWNpYWxfbWVtYmVyX2NhbGwpOiBBZGp1c3QgY2FsbCB0byBidWlsZF9uZXdfbWV0aG9kX2NhbGwuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogUmV0dXJuIGZ1bmN0aW9uIGNhbGxlZC4KCSogcHQuYyAodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogQWRqdXN0IGNhbGwgdG8KCWJ1aWxkX25ld19tZXRob2RfY2FsbC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChjeHhfaW5jb21wbGV0ZV90eXBlX2RpYWdub3N0aWMpOiBSZWZlciB0bwoJImluY29tcGxldGUiLCBub3QgInVuZGVmaW5lZCIsIHR5cGVzLgoKCVBSIGMrKy8yNjI5NQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIG5hbWVzcGFjZS1oYW5kbGluZyBjb2RlIGZvcgoJcG9pbnRlcnMtdG8tbWVtYmVycy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wdHJfb3BlcmF0b3IpOiBDaGVjayBmb3IgcXVhbGlmaWVkIG5hbWVzCgl1c2luZyBuYW1lc3BhY2VzLgoKCVBSIGMrKy8yNjEyMgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRfZGVjbGFyYXRvcik6IEFkanVzdCBsb2dpYyBmb3IgZGVjaWRpbmcKCXdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIGEgcHVyZS1zcGVjaWZpZXIuCgkoY3BfcGFyc2VyX21lbWJlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoKMjAwNi0wNC0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jLCBwdC5jLCBzZW1hbnRpY3MuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA2LTA0LTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGNhbGwuYyAobnVsbF9wdHJfY3N0X3ApOiBBZGQgZXhwbGljaXQgVFJFRV9DT05TVEFOVF9PVkVSRkxPVyBjaGVjay4KCjIwMDYtMDQtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbmFtZS1sb29rdXAuYyAocHVzaF9uYW1lc3BhY2Vfd2l0aF9hdHRyaWJzKTogVGVtcG9yYXJpbHkgZGlzYWJsZQoJZGVmYXVsdCBoaWRkZW4gdmlzaWJpbGl0eSBmb3IgYW5vbnltb3VzIG5hbWVzcGFjZS4KCjIwMDYtMDMtMjkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGMrKy8yMjQ5NAoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IENvbnZlcnQgQkFTRSBwb2ludGVyJ3MgdHlwZSB0bwoJdGhlIGJhc2UgcG9pbnRlciB0eXBlIHRvIGF2b2lkIGEgdHlwZSBtaXNtYXRjaCBpbiB0aGUgRVFfRVhQUi4KCjIwMDYtMDMtMjQgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VhcmNoLmMgKG1heWJlX3N1cHByZXNzX2RlYnVnX2luZm8pOiBJZgoJZmxhZ19lbWl0X2NsYXNzX2RlYnVnX2Fsd2F5cyB0aGVuIGRvbid0IHN1cHByZXNzLgoKMjAwNi0wMy0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX25hbWVzcGFjZV93aXRoX2F0dHJpYnMpOiBPbmx5IGFwcGx5IGhpZGRlbgoJdmlzaWJpbGl0eSB0byBhbm9ueW1vdXMgbmFtZXNwYWNlcyBpZiBIQVZFX0dBU19ISURERU4uCgoyMDA2LTAzLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjY2OTEKCSogY3AtZ2ltcGxpZnkuYyAoY3h4X29tcF9jbGF1c2VfYXBwbHlfZm4pOiBIYW5kbGUgZGVmYXVsdCBhcmd1bWVudHMuCgoyMDA2LTAzLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjE1ODEKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsYXJhdGlvbik6IFN1cHBvcnQgYXR0cmlidXRlcyBvbgoJYW5vbnltb3VzIG5hbWVzcGFjZXMuCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hfbmFtZXNwYWNlX3dpdGhfYXR0cmlicyk6IEFub255bW91cwoJbmFtZXNwYWNlcyBkZWZhdWx0IHRvIGhpZGRlbiB2aXNpYmlsaXR5LgoKMjAwNi0wMy0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzIxNzY0LCBjKysvMTkyMzgKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENhbGwgZGV0ZXJtaW5lX3Zpc2liaWxpdHkgbGF0ZXIuCgkoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoQ1BfVFlQRV9DT05URVhULCBUWVBFX05BTUVTUEFDRV9TQ09QRV9QKTogTmV3IG1hY3Jvcy4KCShUWVBFX0NMQVNTX1NDT1BFX1AsIFRZUEVfRlVOQ1RJT05fU0NPUEVfUCk6IE5ldyBtYWNyb3MuCgkqIG5hbWUtbG9va3VwLmggKHN0cnVjdCBjcF9iaW5kaW5nX2xldmVsKTogQWRkIGhhc192aXNpYmlsaXR5CgliaXRmaWVsZC4KCSogbmFtZS1sb29rdXAuYzogSW5jbHVkZSBjLXByYWdtYS5oLgoJKHB1c2hfbmFtZXNwYWNlX3dpdGhfYXR0cmlicyk6IFNwbGl0IG91dCBmcm9tIHB1c2hfbmFtZXNwYWNlLgoJUHVzaCB2aXNpYmlsaXR5IGlmIGFwcHJvcHJpYXRlLiAgU2V0IFRSRUVfUFVCTElDIG9uIG5hbWVzcGFjZXMuCgkobGVhdmVfc2NvcGUpOiBQb3AgdmlzaWJpbGl0eSBpZiBhcHByb3ByaWF0ZS4KCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHlfZnJvbV9jbGFzcyk6IFNwbGl0IG91dCBmcm9tLi4uCgkoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiAuLi5oZXJlLiAgSGFuZGxlIGZ1bmN0aW9uIHNjb3BlIGFuZAoJbmVzdGVkIGNsYXNzZXMuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTW92ZSB2aXNpYmlsaXR5IGhhbmRsaW5nIHRvCglkZXRlcm1pbmVfdmlzaWJpbGl0eV9mcm9tX2NsYXNzLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RlY2xhcmF0aW9uLCBjcF9wYXJzZXJfbmFtZXNwYWNlX25hbWUpOiBBbGxvdwoJYXR0cmlidXRlcyBvbiBuYW1lc3BhY2UgZGVjbGFyYXRpb25zLgoKMjAwNi0wMy0xNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvNjYzNAoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG8gbm90IGFjY2VwdCBsb25nIGxvbmcgZG91YmxlLgoJUmVvcmdhbml6ZSBjaGVja3MgZm9yIGludmFsaWQgKGNvbWJpbmF0aW9ucyBvZikgdHlwZSBtb2RpZmllcnMuCglRdW90ZSBtb2RpZmllcnMgaW4gbWVzc2FnZXMuCgoyMDA2LTAzLTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTYzODcsIGMrKy8xNjM4OQoJKiB0eXBlY2suYyAoY3h4X2FsaWdub2ZfZXhwciwgY3h4X3NpemVvZl9leHByKTogTmV3IGZ1bmN0aW9ucy4KCShjeHhfc2l6ZW9mX29yX2FsaWdub2ZfZXhwcik6IFNwbGl0IG91dCBmcm9tIGhlcmUuCgoyMDA2LTAzLTA5ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIGdvbXAtMjAwNTA2MDgtYnJhbmNoCgoJMjAwNi0wMi0wMiAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJCSogZGVjbC5jIChwb3BfbGFiZWxzXzEpOiBVc2UgYXBwcm9wcmlhdGUgcG9pbnRlciBjYXN0aW5nLgoJCShwb3BsZXZlbF9uYW1lZF9sYWJlbF8xKTogTGlrZXdpc2UuCgkJKG5hbWVkX2xhYmVsX2VudHJ5X2hhc2gpOiBMaWtld2lzZS4KCQkobmFtZWRfbGFiZWxfZW50cnlfZXEpOiBMaWtld2lzZS4KCQkoY2hlY2tfZ290byk6IExpa2V3aXNlLgoJCShkZWZpbmVfbGFiZWwpOiBMaWtld2lzZS4KCgkyMDA2LTAxLTI2ICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkJKiBjcC10cmVlLmggKENQX09NUF9DTEFVU0VfSU5GTyk6IFVzZSBUUkVFX1RZUEUgaW5zdGVhZAoJCW9mIFRSRUVfQkxPQ0suCgkJKiBwdC5jOiBVc2UgT01QX0NMQVVTRV9DT0RFIGFuZCBPTVBfQ0xBVVNFX09QRVJBTkQKCQlpbnN0ZWFkIG9mIFRSRUVfQ09ERS9UUkVFX09QRVJBTkQuCgkJKiBzZW1hbnRpY3MuYzogTGlrZXdpc2UuCgkJKiBwYXJzZXIuYzogTGlrZXdpc2UuCgoJMjAwNS0xMS0xMCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfdGhyZWFkcHJpdmF0ZSk6IEVtaXQgZGlhZ25vc3RpYyBpZgoJCXRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IFRMUy4KCgkyMDA1LTExLTA5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkJKiBkZWNsLmMgKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IERvbid0IGVycm9yIGFib3V0CgkJREVDTF9USFJFQURfTE9DQUxfUCBtaXNtYXRjaGVzIGlmIENQX0RFQ0xfVEhSRUFEUFJJVkFURV9QCgkJKG9sZGRlY2wpLgoKCTIwMDUtMTEtMDggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCQlQUiBjKysvMjQ3MzUKCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2JhcnJpZXIsIGZpbmlzaF9vbXBfZmx1c2gpOiBOZXcKCQkgIGZ1bmN0aW9ucy4KCQkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX2JhcnJpZXIpOiBDYWxsIGZpbmlzaF9vbXBfYmFycmllci4KCQkoY3BfcGFyc2VyX29tcF9mbHVzaCk6IENhbGwgZmluaXNoX29tcF9mbHVzaC4KCQkqIGNwLXRyZWUuaCAoZmluaXNoX29tcF9iYXJyaWVyLCBmaW5pc2hfb21wX2ZsdXNoKTogTmV3CgkJICBwcm90b3R5cGVzLgoKCQlQUiBjKysvMjQ3MzQKCQkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIE9NUF9NQVNURVIgYW5kIE9NUF9PUkRFUkVELgoKCTIwMDUtMTEtMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX3RocmVhZHByaXZhdGUpOiBFcnJvciBvbiBjbGFzcy1zY29wZQoJCXZhcmlhYmxlcy4KCgkyMDA1LTExLTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9hbGxfY2xhdXNlcyk6IElmIHNvbWUgY2xhdXNlCgkJdHlwZSBpcyBub3QgYWxsb3dlZCwgZG9uJ3QgcmVtb3ZlIGp1c3Qgb25lIG9mIHRoZQoJCWNsYXVzZXMsIGJ1dCBhbGwgY2xhdXNlcyBhZGRlZCBpbiB0aGF0IGxvb3Agcm91bmQuCgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfY2xhdXNlcyk6IEZpeCBmdW5jdGlvbgoJCWNvbW1lbnQuIERvbid0IGhhbmRsZSBub24tY29uc3Qgb3IgbXV0YWJsZSBzcGVjaWFsbHksCgkJYXMgY29uc3QgYW5kIG5vdCBtdXRhYmxlIGlzIHByZWRldGVybWluZWQgc2hhcmVkIGFuZAoJCXRoYXQgbGVhZHMgdG8gZG91YmxlIGVycm9yLiBEb24ndCBJQ0UgaWYgY29weWluIHZhciBpcwoJCVBBUk1fREVDTC4KCgkJUFIgYysrLzI0NjEzCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3ByYWdtYSk6IERpYWdub3NlCgkJUFJBR01BX09NUF9TRUNUSU9OIG91dHNpZGUgb2YgUFJBR01BX09NUF9TRUNUSU9OUwoJCWNvbnN0cnVjdC4KCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF90aHJlYWRwcml2YXRlKTogRXJyb3IgaWYgVgoJCSAgaXMgYXV0b21hdGljIHZhcmlhYmxlIG9yIGhhcyBpbmNvbXBsZXRlIHR5cGUuCgoJMjAwNS0xMS0wMSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMpOiBVc2UKCQlPTVBfQ0xBVVNFX0NIQUlOIGluc3RlYWQgb2YgVFJFRV9DSEFJTi4KCgkyMDA1LTExLTAxICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9hbGxfY2xhdXNlcyk6IFdoZW4gZW1pdHRpbmcgYW4KCQllcnJvciBtZXNzYWdlLCByZW1vdmUgdGhlIGludmFsaWQgY2xhdXNlIGZyb20gdGhlIGxpc3QuCgoJMjAwNS0xMC0zMSAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfcGFyYWxsZWwpOiBEbyBub3QgYWxsb3cgJ25vd2FpdCcgaW4KCQljb21iaW5lZCBwYXJhbGxlbCt3b3Jrc2hhcmUgZGlyZWN0aXZlcy4KCgkyMDA1LTEwLTMxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT0tTX09NUF9DTEFVU0VfRFRPUik6CgkJVXNlIGN4eF9vbXBfY2xhdXNlX2R0b3IuCgkJKiBjcC10cmVlLmggKENQX09NUF9DTEFVU0VfSU5GTyk6IE5ldy4KCQkoY3h4X29tcF9jbGF1c2VfZHRvcik6IE5ldy4KCQkqIGNwLWdpbXBsaWZ5LmMgKGN4eF9vbXBfY2xhdXNlX2FwcGx5X2ZuKTogTmV3LgoJCShjeHhfb21wX2NsYXVzZV9kZWZhdWx0X2N0b3IpOiBVc2UgaXQuCgkJKGN4eF9vbXBfY2xhdXNlX2NvcHlfY3RvciwgY3h4X29tcF9jbGF1c2VfYXNzaWduX29wKToKCQlMaWtld2lzZS4KCQkoY3h4X29tcF9jbGF1c2VfZHRvcik6IE5ldy4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2NsYXVzZXMpOiBSZXdyaXRlIGNkdG9yCgkJY2hlY2tpbmcgdG8gZmlsbCBpbiBDUF9PTVBfQ0xBVVNFX0lORk8uICBEb24ndAoJCXNwZWNpYWxjYXNlIExBU1RQUklWQVRFIGZvciByZW1vdmFsLgoJCShjeHhfb21wX2NsYXVzZV9kZWZhdWx0X2N0b3IsIGN4eF9vbXBfY2xhdXNlX2NvcHlfY3RvciwKCQljeHhfb21wX2NsYXVzZV9hc3NpZ25fb3ApOiBNb3ZlIHRvIGNwLWdpbXBsaWZ5LmMuCgoJMjAwNS0xMC0yOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfdGhyZWFkcHJpdmF0ZSk6IElmCgkJICBERUNMX1JUTF9TRVRfUCwgY2FsbCBtYWtlX2RlY2xfcnRsIGFnYWluIHNvIHRoYXQKCQkgIGVuY29kZV9zZWN0aW9uX2luZm8gY2FuIHVwZGF0ZSBTWU1CT0xfUkVGJ3MgZmxhZ3MuCgoJMjAwNS0xMC0yNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfZm9yKTogRG9uJ3Qgc2VnZmF1bHQgaWYgQ09ORAoJCW9yIElOQ1IgaXMgTlVMTC4gIElmIG5vdCBjYWxsaW5nIGNfZmluaXNoX29tcF9mb3IKCQlyaWdodCBhd2F5IGFuZCBvbmUgb2YgQ09ORCBhbmQgSU5DUiBpcyBOVUxMLCBpc3N1ZQoJCWVycm9yIGFuZCBkb24ndCBleHBhbmQgYW55dGhpbmcuCgoJCVBSIGMrKy8yNDUxMgoJCSogY3AtdHJlZS5oIChmaW5pc2hfb21wX2Zvcik6IEFkZCBQUkVfQk9EWSBhcmd1bWVudC4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2Zvcik6IExpa2V3aXNlLiAgU2V0CgkJT01QX0ZPUl9QUkVfQk9EWSB0byBQUkVfQk9EWSBpZiBkZWZlcnJpbmcsIGFkZCBpdAoJCWludG8gdGhlIGN1cnJlbnQgc3RhdGVtZW50IGxpc3QgaWYgbm90IHByb2Nlc3NpbmcKCQl0ZW1wbGF0ZSBkZWNsIG9yIHBhc3MgaXQgdG8gY19maW5pc2hfb21wX2Zvci4KCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9mb3JfbG9vcCk6IEV4cGFuZCBvcHRpb25hbCBERUNMX0VYUFJzCgkJaW50byBQUkVfQk9EWSBzdGF0ZW1lbnQgbGlzdC4gIFBhc3MgaXQgdG8gZmluaXNoX29tcF9mb3IuCgkJKiBwdC5jICh0c3Vic3RfZXhwcikgPGNhc2UgT01QX0ZPUj46IHRzdWJzdF9leHByIGFsc28KCQlPTVBfRk9SX1BSRV9CT0RZIGludG8gUFJFX0JPRFkgc3RtdCBsaXN0LCBwYXNzIGl0IHRvCgkJZmluaXNoX29tcF9mb3IuICBQdXQgYWxsIHRoZSBzdGF0ZW1lbnRzIGludG8gc2tfb21wCgkJc2NvcGUuCgoJMjAwNS0xMC0yNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJCVBSIGMrKy8yNDUxNgoJCSogcGFyc2VyLmMgKHN0cnVjdCBjcF9wYXJzZXIpOiBSZW5hbWUgaW5faXRlcmF0aW9uX3N0YXRlbWVudAoJCWZpZWxkIHRvIGluX3N0YXRlbWVudC4KCQkoSU5fU1dJVENIX1NUTVQsIElOX0lURVJBVElPTl9TVE1UKTogRGVmaW5lLgoJCShJTl9PTVBfQkxPQ0ssIElOX09NUF9GT1IpOiBDaGFuZ2UgdmFsdWVzLgoJCShjcF9wYXJzZXJfbmV3LCBjcF9wYXJzZXJfYmVnaW5fb21wX3N0cnVjdHVyZWRfYmxvY2ssCgkJY3BfcGFyc2VyX2VuZF9vbXBfc3RydWN0dXJlZF9ibG9jaywKCQljcF9wYXJzZXJfb21wX2Zvcl9sb29wKTogQWRqdXN0IGZvcgoJCWluX2l0ZXJhdGlvbl9zdGF0ZW1lbnQgcmVuYW1pbmcuCgkJKGNwX3BhcnNlcl9zZWxlY3Rpb25fc3RhdGVtZW50KTogU2F2ZQoJCXBhcnNlci0+aW5faXRlcmF0aW9uLCBvciBpdCB0ZW1wb3JhcmlseSB3aXRoCgkJSU5fU1dJVENIX1NUTVQgZm9yIHRoZQoJCWNwX3BhcnNlcl9pbXBsaWNpdGx5X3Njb3BlZF9zdGF0ZW1lbnQgY2FsbC4KCQkoY3BfcGFyc2VyX2l0ZXJhdGlvbl9zdGF0ZW1lbnQpOiBBZGp1c3QgZm9yCgkJaW5faXRlcmF0aW9uX3N0YXRlbWVudCByZW5hbWluZy4gIFVzZQoJCUlOX0lURVJBVElPTl9TVE1UIHJhdGhlciB0aGFuIHRydWUuCgkJKGNwX3BhcnNlcl9qdW1wX3N0YXRlbWVudCk6IEFkanVzdCBmb3IKCQlpbl9pdGVyYXRpb25fc3RhdGVtZW50IHJlbmFtaW5nIGFuZCBuZXcgdmFsdWVzLiAgRG9uJ3QKCQllcnJvciBvbiBicmVhayBpbiBhIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aGluIE9NUF9GT1Igb3IKCQlPcGVuTVAgc3RydWN0dXJlZCBibG9jay4KCgkJUFIgYysrLzI0NTEzCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NhY2hlX2dyb3VwKTogRG9uJ3Qgc3RvcCBpZiBuZXh0CgkJdG9rZW4gaXMgQ1BQX1BSQUdNQV9FT0wgYW5kIGVuZCBpcyBDUFBfUFJBR01BX0VPTCBhcwoJCXdlbGwuICBJZiBjdXJyZW50IHRva2VuIGlzIENQUF9QUkFHTUEsIGNvbnN1bWUKCQlldmVyeXRoaW5nIHVudGlsIENQUF9QUkFHTUFfRU9MIGluY2x1c2l2ZS4KCgkyMDA1LTEwLTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkJUFIgYysrLzI0NTAyCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9mb3IpOiBIYW5kbGUgTU9ET1BfRVhQUiBpbgoJCWFkZGl0aW9uIHRvIE1PRElGWV9FWFBSLgoKCTIwMDUtMTAtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogY3AtZ2ltcGxpZnkuYyAoc3RydWN0IGNwX2dpbXBsaWZ5X2N0eCk6IFJlbW92ZS4KCQkoYmNfbGFiZWwpOiBOZXcuCgkJKGJlZ2luX2JjX2Jsb2NrLCBmaW5pc2hfYmNfYmxvY2spOiBVc2UgaXQuCgkJKHB1c2hfY29udGV4dCwgcG9wX2NvbnRleHQpOiBSZW1vdmUuCgkJKGNwX2dlbmVyaWNpemUpOiBEb24ndCB1c2UgdGhlbS4gIEFzc2VydCBiY19sYWJlbCBpcyBudWxsLgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfY2xhdXNlcyk6IENyZWF0ZSBhIGZha2UgZGF0YQoJCWVsZW1lbnQgb2YgVFlQRSBmb3IgcHJvYmluZyBjdG9ycy4KCgkyMDA1LTEwLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT0tTX09NUF9DTEFVU0VfREVGQVVMVF9DVE9SKTogTmV3LgoJCShMQU5HX0hPT0tTX09NUF9DTEFVU0VfQ09QWV9DVE9SKTogTmV3LgoJCShMQU5HX0hPT0tTX09NUF9DTEFVU0VfQVNTSUdOX09QKTogTmV3LgoJCShMQU5HX0hPT0tTX09NUF9DTEFVU0VfRFRPUik6IE5ldy4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2NsYXVzZXMpOiBMb29rIHRocm91Z2gKCQlhcnJheXMgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWVtYmVyIGNhbGxzLiAgQWxzbwoJCXJlbW92ZSBGSVJTVFBSSVZBVEUgd2hlbiBMQVNUUFJJVkFURSBmYWlscy4KCQkoY3h4X29tcF9jbGF1c2VfZGVmYXVsdF9jdG9yLCBjeHhfb21wX2NsYXVzZV9jb3B5X2N0b3IpOiBOZXcuCgkJKGN4eF9vbXBfY2xhdXNlX2Fzc2lnbl9vcCk6IE5ldy4KCQkqIGNwLXRyZWUuaDogRGVjbGFyZSB0aGVtLgoKCTIwMDUtMTAtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogZGVjbC5jIChjaGVja19wcmV2aW91c19nb3RvXzEpOiBSZXR1cm4gZmFsc2UgaWYgZXJyb3IuCgkJKGNoZWNrX3N3aXRjaF9nb3RvKTogTGlrZXdpc2UuCgkJKGZpbmlzaF9jYXNlX2xhYmVsKTogRG9uJ3QgZW1pdCB0aGUgY2FzZSBsYWJlbCBvbiBlcnJvci4KCQkqIHBhcnNlci5jIChzdHJ1Y3QgY3BfcGFyc2VyKTogUmV2ZXJ0CgkJaW5fc3dpdGNoX3N0YXRlbWVudF9wIGNoYW5nZXMuCgkJKGNwX3BhcnNlcl9sYWJlbGVkX3N0YXRlbWVudCwKCQljcF9wYXJzZXJfc2VsZWN0aW9uX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfYmVnaW5fb21wX3N0cnVjdHVyZWRfYmxvY2spOiBEb24ndCBzYXZlLi4uCgkJKGNwX3BhcnNlcl9lbmRfb21wX3N0cnVjdHVyZWRfYmxvY2spOiBvciByZXN0b3JlCgkJaW5fc3dpdGNoX3N0YXRlbWVudF9wLgoKCTIwMDUtMTAtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfdGhyZWFkcHJpdmF0ZSk6IFNldAoJCWRlY2xfZmxhZ3MudTJzZWwgd2hlbiBuZWNlc3NhcnkuCgoJMjAwNS0xMC0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBkZWNsLmMgKHBvcGxldmVsX25hbWVkX2xhYmVsXzEpOiBSZXN0b3JlIGNyZWF0aW9uIG9mIHRoZQoJCWJhZF9kZWNscyBsaXN0LgoJCShkZWNsX2p1bXBfdW5zYWZlKTogQ2hlY2sgZm9yIGVycm9yX21hcmtfbm9kZSB0eXBlcy4KCQkoY2hlY2tfZ290byk6IERvbid0IGNoZWNrIGNkdG9yX2xhYmVsLiAgRG9uJ3QgdXNlIGlkZW50aWZ5X2dvdG8uCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3JldHVybl9zdG10KTogRG8gY2hlY2tfb21wX3JldHVybiBiZWZvcmUKCQljb252ZXJ0aW5nIHRvIGNkdG9yX2xhYmVsIGdvdG8uCgoJMjAwNS0xMC0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJUFIgYysrLzI0NDUxCgkJKiBkZWNsLmMgKGNoZWNrX29tcF9yZXR1cm4pOiBSZXR1cm4gZmFsc2Ugb24gZXJyb3IuCgkJKiBjcC10cmVlLmggKGNoZWNrX29tcF9yZXR1cm4pOiBVcGRhdGUgZGVjbC4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfcmV0dXJuX3N0bXQpOiBBdm9pZCBhZGRpbmcKCQlyZXR1cm4gb24gZXJyb3IuCgoJMjAwNS0xMC0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IFJlbW92ZQoJCXhfbmFtZWRfbGFiZWxfdXNlcy4KCQlDaGFuZ2UgeF9uYW1lZF9sYWJlbHMgdG8gYSBoYXNodGFibGUuCgkJKGNoZWNrX29tcF9yZXR1cm4pOiBEZWNsYXJlLgoJCSogZGVjbC5jIChzdHJ1Y3QgbmFtZWRfbGFiZWxfdXNlX2VudHJ5KTogUmVuYW1lIGZyb20KCQluYW1lZF9sYWJlbF91c2VfbGlzdC4gIFJlbW92ZSBsYWJlbF9kZWNsLgoJCShzdHJ1Y3QgbmFtZWRfbGFiZWxfZW50cnkpOiBSZW5hbWUgZnJvbQoJCW5hbWVkX2xhYmVsX2xpc3QuICBSZW1vdmUgb2xkX3ZhbHVlIGFuZCBuZXh0LiAgQ2hhbmdlCgkJaW5fdHJ5X3Njb3BlIGFuZCBpbl9jYXRjaF9zY29wZSB0byBib29sLiBBZGQKCQlpbl9vbXBfc2NvcGUuCgkJKHBvcF9sYWJlbHNfMSk6IE5ldy4KCQkocG9wX2xhYmVscyk6IFVzZSBpdC4KCQkocG9wX2xvY2FsX2xhYmVsLCBwb3BsZXZlbF9uYW1lZF9sYWJlbF8xKTogTmV3LgoJCShwb3BsZXZlbCk6IFVzZSB0aGVtLgoJCShuYW1lZF9sYWJlbF9lbnRyeV9oYXNoLCBuYW1lZF9sYWJlbF9lbnRyeV9lcSk6IE5ldy4KCQkobWFrZV9sYWJlbF9kZWNsKTogQ3JlYXRlIG5hbWVkX2xhYmVscy4gIE1vdmUgbGFiZWwKCQljcmVhdGlvbiBiaXRzIGZyb20gbG9va3VwX2xhYmVsLgoJCShkZWNsYXJlX2xvY2FsX2xhYmVsKTogVGlkeS4KCQkoaWRlbnRpZnlfZ290byk6IFNwbGl0IG91dCBmcm9tIC4uLgoJCShjaGVja19wcmV2aW91c19nb3RvXzEpOiBBZGQgZXhpdGVkX29tcCBhcmd1bWVudC4KCQlIYW5kbGUgb21wIHNjb3Blcy4KCgkJKHVzZV9sYWJlbCk6IE1lcmdlIGludG8uLi4KCQkoY2hlY2tfZ290byk6IC4uLiBoZXJlLiAgSGFuZGxlIG9tcCBzY29wZXMuCgkJKGNoZWNrX29tcF9yZXR1cm4pOiBOZXcuCgkJKGNoZWNrX3ByZXZpb3VzX2dvdG9zKTogTWVyZ2UgaW50by4uLgoJCShkZWZpbmVfbGFiZWwpOiAuLi4gaGVyZS4KCQkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogUmVtb3ZlIHhfbmFtZWRfbGFiZWxfdXNlcyByZWZlcmVuY2UuCgkJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJCSogbmFtZS1sb29rdXAuaCAoc2tfb21wKTogTmV3LgoJCSogbmFtZS1sb29rdXAuYyAoYmVnaW5fc2NvcGUpOiBIYW5kbGUgaXQuCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9mb3IpOiBEb24ndCBjcmVhdGUgZXh0cmEKCQljb21wb3VuZCBzdG10LgoKCQkoY3BfcGFyc2VyX29tcF9zZWN0aW9ucyk6IExpa2V3aXNlLgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9yZXR1cm5fc3RtdCk6IENhbGwgY2hlY2tfb21wX3JldHVybi4KCQkoYmVnaW5fb21wX3N0cnVjdHVyZWRfYmxvY2spOiBVc2Ugc2tfb21wLgoJCShmaW5pc2hfb21wX3N0cnVjdHVyZWRfYmxvY2spOiBVc2UgZG9fcG9wbGV2ZWwuICBEb24ndCBidWlsZCBhCgkJTVVTVF9OT1RfVEhST1cgZXhwcmVzc2lvbiBoZXJlLgoJCShiZWdpbl9vbXBfcGFyYWxsZWwsIGZpbmlzaF9vbXBfcGFyYWxsZWwpOiBEb24ndCBjcmVhdGUgZXh0cmEKCQljb21wb3VuZCBzdGF0ZW1lbnRzLgoKCTIwMDUtMTAtMjEgIERpZWdvIE5vdmlsbG8gIDxkbm92aWxsb0ByZWRoYXQuY29tPgoKCQlQUiAyNDQ1NQoJCSogY3AvY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogQWRkIGZpZWxkCgkJdGhyZWFkcHJpdmF0ZV9wLgoJCShDUF9ERUNMX0lTX1RIUkVBRFBSSVZBVEUpOiBEZWZpbmUuCgkJKiBjcC9zZW1hbnRpY3MuYyAoZmluaXNoX29tcF90aHJlYWRwcml2YXRlKTogU2V0LiAgRG8KCQlub3QgZXJyb3Igb3V0IGlmIENQX0RFQ0xfSVNfVEhSRUFEUFJJVkFURSBpcyBzZXQKCQlhbHJlYWR5LgoJCSogY3AvZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBNZXJnZQoJCUNQX0RFQ0xfVEhSRUFEUFJJVkFURV9QLgoKCTIwMDUtMTAtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogY3AtZ2ltcGxpZnkuYyAoY3BfZ2ltcGxpZnlfb21wX2Zvcik6IE5ldy4KCQkoY3BfZ2ltcGxpZnlfZXhwcik6IENhbGwgaXQuCgkJKiBjcC10cmVlLmggKE9NUF9GT1JfR0lNUExJRllJTkdfUCk6IE5ldy4KCQkqIHBhcnNlci5jIChzdHJ1Y3QgY3BfcGFyc2VyKTogUmVuYW1lCgkJaW5faXRlcmF0aW9uX3N0YXRlbWVudF9wIHRvIGluX2l0ZXJhdGlvbl9zdGF0ZW1lbnQgYW5kCgkJY2hhbmdlIHRvIHVuc2lnbmVkIGNoYXIuICBTaW1pbGFybHkgd2l0aAoJCWluX3N3aXRjaF9zdGF0ZW1lbnQuICBVcGRhdGUgYWxsIHVzZXJzLgoJCShJTl9PTVBfQkxPQ0ssIElOX09NUF9GT1IpOiBOZXcuCgkJKGNwX3BhcnNlcl9sYWJlbGVkX3N0YXRlbWVudCk6IERpYWdub3NlIGNhc2UgbGFiZWxzCgkJYmluZGluZyBjbG9zZXIgdG8gYW4gb3Blbm1wIGJsb2NrIG5lc3RlZCB0aGFuIHRoZQoJCXN3aXRjaC4KCQkoY3BfcGFyc2VyX2p1bXBfc3RhdGVtZW50KTogRGlhZ25vc2UgYnJlYWsgYW5kCgkJY29udGludWUgbGFiZWxzIGJpbmRpbmcgY2xvc2VyIHRvIGFuIG9wZW5tcCBibG9jayB0aGFuCgkJYW4gaXRlcmF0aW9uIG9yIHN3aXRjaC4KCQkoY3BfcGFyc2VyX29tcF9mb3JfbG9vcCk6IE1hcmsgaW5faXRlcmF0aW9uX3N0YXRlbWVudAoJCWZvciBhbiBvbXAgZm9yLgoJCShjcF9wYXJzZXJfYmVnaW5fb21wX3N0cnVjdHVyZWRfYmxvY2spOiBOZXcuCgkJKGNwX3BhcnNlcl9lbmRfb21wX3N0cnVjdHVyZWRfYmxvY2spOiBOZXcuCgkJKGNwX3BhcnNlcl9vbXBfc3RydWN0dXJlZF9ibG9jayk6IFVzZSB0aGVtLgoJCShjcF9wYXJzZXJfb21wX2ZvciwgY3BfcGFyc2VyX29tcF9zZWN0aW9uc19zY29wZSk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfb21wX3BhcmFsbGVsKTogTGlrZXdpc2UuCgoJMjAwNS0xMC0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBzZW1hbnRpY3MuYyAoYmVnaW5fb21wX3N0cnVjdHVyZWRfYmxvY2spOiBOZXcuCgkJKGZpbmlzaF9vbXBfc3RydWN0dXJlZF9ibG9jayk6IE5ldy4KCQkoYmVnaW5fb21wX3BhcmFsbGVsLCBmaW5pc2hfb21wX3BhcmFsbGVsKTogVXNlIHRoZW0uCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrKTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9vbXBfZm9yKTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9vbXBfc2VjdGlvbnNfc2NvcGUpOiBMaWtld2lzZS4KCQkqIGNwLXRyZWUuaDogRGVjbGFyZSB0aGVtLgoKCTIwMDUtMTAtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfbWFzdGVyKTogUmV0dXJuIHRoZSBzdGF0ZW1lbnQuCgkJKGNwX3BhcnNlcl9vbXBfb3JkZXJlZCk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfb21wX2NvbnN0cnVjdCk6IFNldCB0aGUgbG9jdXMgZm9yIHRoZW0uCgoJMjAwNS0xMC0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBzZW1hbnRpY3MuYyAoZmluaXNoX29tcF9hdG9taWMpOiBSZXZlcnQgdG8KCQl1c2VzX3RlbXBsYXRlX3Bhcm1zLgoKCTIwMDUtMTAtMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vbXBfY2xhdXNlcyk6IEF2b2lkCgkJREVDTF9USFJFQURfTE9DQUxfUCBvbiBhIFBBUk1fREVDTC4gIFJlbW92ZSBzb21lCgkJc3R1YiBhc3NlcnRzIGd1YXJhbnRlZWQgdG8gZmFpbC4KCgkyMDA1LTEwLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIGNwLXRyZWUuaCAoT01QX0FUT01JQ19ERVBFTkRFTlRfUCwgT01QX0FUT01JQ19DT0RFKTogTmV3LgoJCShmaW5pc2hfb21wX2NsYXVzZXMsIGZpbmlzaF9vbXBfZm9yLCBmaW5pc2hfb21wX2F0b21pYyk6IE5ldy4KCQkqIHBhcnNlci5jIChjcF9wYXJzZXJfb21wX2NsYXVzZV9jb3B5aW4pOiBSZW1vdmUuCgkJKGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMpOiBVc2UgY3BfcGFyc2VyX29tcF92YXJfbGlzdCBpbnN0ZWFkLgoJCUNhbGwgZmluaXNoX29tcF9jbGF1c2VzLgoJCShjcF9wYXJzZXJfb21wX2NsYXVzZV9pZik6IERvbid0IGRvIGVycm9yIGNoZWNraW5nIGhlcmUuCgkJKGNwX3BhcnNlcl9vbXBfY2xhdXNlX251bV90aHJlYWRzKTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9vbXBfY2xhdXNlX3NjaGVkdWxlKTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9vbXBfYXRvbWljKTogVXNlIGZpbmlzaF9vbXBfYXRvbWljLgoJCShjcF9wYXJzZXJfb21wX2Zvcl9sb29wKTogRG9uJ3QgZGlzY2FyZCBERUNMX0VYUFIuCgkJRG9uJ3QgZGVjb21wb3NlIGFzc2lnbm1lbnQgc3RhdG1lbnQgaGVyZS4gIFVzZQoJCWZpbmlzaF9vbXBfZm9yLgoKCQkqIHB0LmMgKHRzdWJzdF9vbXBfY2xhdXNlcyk6IE5ldy4KCQkodHN1YnN0X2V4cHIpOiBIYW5kbGUgT01QX1BBUkFMTEVMLCBPTVBfRk9SLCBPTVBfU0VDVElPTlMsCgkJT01QX1NJTkdMRSwgT01QX1NFQ1RJT04sIE9NUF9DUklUSUNBTCwgT01QX0FUT01JQy4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX2NsYXVzZXMpOiBOZXcuCgkJKGJlZ2luX29tcF9wYXJhbGxlbCwgZmluaXNoX29tcF9wYXJhbGxlbCk6IEtub3cgTGVzcyBhYm91dCB0aGUKCQlpbnRlcm5hbHMgb2YgdGhlIHN0bXRfbGlzdCBzdGFjay4KCQkoZmluaXNoX29tcF9mb3IsIGZpbmlzaF9vbXBfYXRvbWljKTogTmV3LgoKCTIwMDUtMTAtMTggIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCQkqIHNlbWFudGljcy5jIChjeHhfb21wX3ByZWRldGVybWluZWRfc2hhcmluZyk6IE5ldyBmdW5jdGlvbi4KCQkqIGNwLXRyZWUuaCAoY3h4X29tcF9wcmVkZXRlcm1pbmVkX3NoYXJpbmcpOiBOZXcgcHJvdG90eXBlLgoJCSogY3Atb2JqY3AtY29tbW9uLmgKCQkoTEFOR19IT09LU19PTVBfUFJFREVURVJNSU5FRF9TSEFSSU5HKTogUmVkZWZpbmUuCgoJMjAwNS0xMC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29tcF9zaW5nbGUpOiBVc2UgbWFrZV9ub2RlIGFuZCBhY2Nlc3NvcnMKCQlpbnN0ZWFkIG9mIGJ1aWxkLgoKCTIwMDUtMTAtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9vbXBfZm9yX2xvb3ApOiBIYW5kbGUgZGVjbGFyYXRpb25zLgoKCTIwMDUtMTAtMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogTWFrZS1sYW5nLmluIChDWFhfQ19PQkpTKTogQWRkIGMtb21wLm8uCgkJKiBjcC10cmVlLmggKGJlZ2luX29tcF9wYXJhbGxlbCwgZmluaXNoX29tcF9wYXJhbGxlbCk6IERlY2xhcmUuCgkJKGZpbmlzaF9vbXBfdGhyZWFkcHJpdmF0ZSk6IERlY2xhcmUuCgkJKiBwYXJzZXIuYyAoc3RydWN0IGNwX2xleGVyKTogQWRkIGluX3ByYWdtYS4KCQkoY3BfbGV4ZXJfY29uc3VtZV90b2tlbik6IERvbid0IGNvbnN1bWUgYSBQUkFHTUFfRU9MCgkJd2hlbiBpbl9wcmFnbWEuCgkJKGNwX3BhcnNlcl9za2lwX3RvX2Nsb3NpbmdfcGFyZW50aGVzaXMpOiBTdG9wIGF0IFBSQUdNQV9FT0wuCgkJKGNwX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX3NraXBfdG9fZW5kX29mX2Jsb2NrX29yX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfc2tpcF90b19jbG9zaW5nX2JyYWNlKTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9za2lwX3RvX3ByYWdtYV9lb2wpOiBSZXNldCBpbl9wcmFnbWEuCgkJKGNwX3BhcnNlcl9yZXF1aXJlX3ByYWdtYV9lb2wpOiBOZXcuCgkJKGNwX3BhcnNlcl9zdGF0ZW1lbnQpOiBBZGQgaW5fY29tcG91bmQgYXJndW1lbnQ7CgkJdXBkYXRlIGFsbCBjYWxsZXJzLgoJCVJlc3RhcnQgaWYgYSBub24tc3RhdGVtZW50IHByYWdtYSBzZWVuIG91dHNpZGUgYQoJCWNvbXBvdW5kLgoJCShjcF9wYXJzZXJfc3RhdGVtZW50X3NlcV9vcHQpOiBTdG9wIGF0IFBSQUdNQV9FT0wuCgkJKGNwX3BhcnNlcl9kZWNsYXJhdGlvbl9zZXFfb3B0KTogTGlrZXdpc2UuCgkJKGNwX3BhcnNlcl9tZW1iZXJfc3BlY2lmaWNhdGlvbl9vcHQpOiBMaWtld2lzZS4KCQkoY3BfcGFyc2VyX2Z1bmN0aW9uX2RlZmluaXRpb25fYWZ0ZXJfZGVjbCk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfc2tpcF91bnRpbF9mb3VuZCk6IExpa2V3aXNlLgoJCShjcF9wYXJzZXJfY2FjaGVfZ3JvdXApOiBMaWtld2lzZS4KCQkoZW51bSBwcmFnbWFfb21wX2NsYXVzZSwgY3BfcGFyc2VyX29tcF9jbGF1c2VfbmFtZSwKCQljaGVja19ub19kdXBsaWNhdGVfY2xhdXNlLAoJCWNwX3BhcnNlcl9vbXBfdmFyX2xpc3Rfbm9fb3BlbiwKCQljcF9wYXJzZXJfb21wX3Zhcl9saXN0LCBjcF9wYXJzZXJfb21wX2NsYXVzZV9jb3B5aW4sCgkJY3BfcGFyc2VyX29tcF9jbGF1c2VfZGVmYXVsdCwgY3BfcGFyc2VyX29tcF9jbGF1c2VfaWYsCgkJY3BfcGFyc2VyX29tcF9jbGF1c2Vfbm93YWl0LAoJCWNwX3BhcnNlcl9vbXBfY2xhdXNlX251bV90aHJlYWRzLAoJCWNwX3BhcnNlcl9vbXBfY2xhdXNlX29yZGVyZWQsCgkJY3BfcGFyc2VyX29tcF9jbGF1c2VfcmVkdWN0aW9uLAoJCWNwX3BhcnNlcl9vbXBfY2xhdXNlX3NjaGVkdWxlLAoJCWNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMsCgkJY3BfcGFyc2VyX29tcF9zdHJ1Y3R1cmVkX2Jsb2NrLCBjcF9wYXJzZXJfb21wX2F0b21pYywKCQljcF9wYXJzZXJfb21wX2JhcnJpZXIsIGNwX3BhcnNlcl9vbXBfY3JpdGljYWwsCgkJY3BfcGFyc2VyX29tcF9mbHVzaCwgY3BfcGFyc2VyX29tcF9mb3JfbG9vcCwKCQljcF9wYXJzZXJfb21wX2ZvciwgY3BfcGFyc2VyX29tcF9tYXN0ZXIsCgkJY3BfcGFyc2VyX29tcF9vcmRlcmVkLCBjcF9wYXJzZXJfb21wX3NlY3Rpb25zX3Njb3BlLAoJCWNwX3BhcnNlcl9vbXBfc2VjdGlvbnMsIGNwX3BhcnNlcl9vbXBfcGFyYWxsZWwsCgkJY3BfcGFyc2VyX29tcF9zaW5nbGUsIGNwX3BhcnNlcl9vbXBfdGhyZWFkcHJpdmF0ZSwKCQljcF9wYXJzZXJfb21wX2NvbnN0cnVjdCk6IE5ldy4KCQkoY3BfcGFyc2VyX3ByYWdtYSk6IEhhbmRsZSBPcGVuTVAgcHJhZ21hcy4KCQkqIHNlbWFudGljcy5jIChmaW5pc2hfb21wX3RocmVhZHByaXZhdGUpOiBOZXcuCgkJKGJlZ2luX29tcF9wYXJhbGxlbCwgZmluaXNoX29tcF9wYXJhbGxlbCk6IE5ldy4KCgkyMDA1LTEwLTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCQkqIHBhcnNlci5jIChzdHJ1Y3QgY3BfdG9rZW4pOiBBZGQgcHJhZ21hX2tpbmQuCgkJKGVvZl90b2tlbik6IEluaXRpYWxpemUgaXQuCgkJKGNwX2xleGVyX2hhbmRsZV9wcmFnbWEpOiBSZW1vdmUuCgkJKGNwX3BhcnNlcl9pbml0aWFsX3ByYWdtYSk6IE5ldy4KCQkoY3BfbGV4ZXJfbmV3X21haW4pOiBVc2UgaXQuCgkJKGNwX2xleGVyX2dldF9wcmVwcm9jZXNzb3JfdG9rZW4pOiBJbml0aWFsaXplIHByYWdtYV9raW5kLgoJCShjcF9sZXhlcl9wcmludF90b2tlbik6IERvbid0IGhhbmRsZSBDUFBfUFJBR01BLgoJCShjcF9wYXJzZXJfc2tpcF90b19wcmFnbWFfZW9sKTogTmV3LgoJCShjcF9wYXJzZXJfZXJyb3IpOiBVc2UgaXQuCgkJKHByYWdtYV9sZXgpOiBOZXcuCgoJMjAwNS0xMC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBsZXguYyAocGFyc2Vfc3RyY29uc3RfcHJhZ21hKTogVXBkYXRlIGZvciBjX2xleCBuYW1lIGNoYW5nZS4KCQkoaGFuZGxlX3ByYWdtYV9qYXZhX2V4Y2VwdGlvbnMpOiBMaWtld2lzZS4KCQkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXdfbWFpbik6IExpa2V3aXNlLgoKCTIwMDUtMTAtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJCSogcGFyc2VyLmMgKGNwX2xleGVyX25ld19tYWluKTogQ29tbWVudCBvdXQgZGVmZXJfcHJhZ21hcy4KCQkoY3BfbGV4ZXJfaGFuZGxlX3ByYWdtYSk6IENvbW1lbnQgb3V0CgkJY3BwX2hhbmRsZV9kZWZlcnJlZF9wcmFnbWEuCgoJMjAwNS0xMC0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkJKiBuYW1lLWxvb2t1cC5jIChsb29rdXBfbmFtZSk6IFJlbW92ZSBwcmVmZXJfdHlwZSBhcmd1bWVudC4KCQkobG9va3VwX25hbWVfcHJlZmVyX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkJKiBuYW1lLWxvb2t1cC5oIChsb29rdXBfbmFtZV9wcmVmZXJfdHlwZSk6IERlY2xhcmUgaXQuCgkJKiBkZWNsLmMgKGxvb2t1cF9hbmRfY2hlY2tfdGFnKTogVXNlIGl0LgoJCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IExpa2V3aXNlLiBVcGRhdGUgZm9yCgkJbG9va3VwX25hbWUgY2hhbmdlLgoJCShsb29rdXBfdGVtcGxhdGVfY2xhc3MsIHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IExpa2V3aXNlLgoKMjAwNi0wMy0wNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMTU3NTkKCSogdHJlZS5jIChib3RfbWFuaXApOiBEb24ndCBjYWxsIG1hcmtfdXNlZC4KCjIwMDYtMDMtMDIgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogUmVtb3ZlIHJlZHVuZGFudCBjYWxsIHRvCgl0YXJnZXRtLmN4eC5rZXlfbWV0aG9kX21heV9iZV9pbmxpbmUgKCkuCgoyMDA2LTAzLTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFVzZSBoYXZlX2dsb2JhbF9ic3NfcCB3aGVuIGRlY2lkaW5nCgl3aGV0aGVyIHRvIG1ha2UgdGhlIGRlY2wgY29tbW9uLgoKMjAwNi0wMy0wMSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJUFIgZGFyd2luLzI1OTA4CgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IEZpeCBBQkkgYnJlYWthZ2Ugb24gZGFyd2luLgoKMjAwNi0wMi0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogSGFuZGxlCglmbGFnX3VzZV9jeGFfZ2V0X2V4Y2VwdGlvbl9wdHIuCgoyMDA2LTAyLTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNjI5MQoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IENoZWNrIGZvciBlbGxpcHNpcyBpbiBhcmd1bWVudHMgb2YKCW9wZXJhdG9ycy4KCjIwMDYtMDItMjAgIFJhZmFlbCDBdmlsYSBkZSBFc3DtbmRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQysrKTogUmVtb3ZlLgoJKC5QSE9OWSk6IFJlbW92ZSBDKysuCgoyMDA2LTAyLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNjI2NgoJKiBjcC10cmVlLmggKGNwX2ZpbmlzaF9kZWNsKTogQWRqdXN0IGRlY2xhcmF0aW9uLgoJKGdyb2tiaXRmaWVsZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGNvbnN0YW50X3ZhbHVlXzEpOiBFbnN1cmUgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsIHdoZW4KCWZvbGRpbmcgbm9uLWRlcGVuZGVudCBpbml0aWFsaXplcnMgZm9yIHN0YXRpYyBkYXRhIG1lbWJlcnMgb2YKCWRlcGVuZGVudCB0eXBlcy4gIFJldHVybiBlcnJvcl9tYXJrX25vZGUgZm9yIGVycm9uZW91cwoJaW5pdGFpbGl6ZXJzLgoJKiBjbGFzcy5jIChnZXRfdnRhYmxlX2RlY2wpOiBVc2UgZmluaXNoX2RlY2wsIG5vdCBjcF9maW5pc2hfZGVjbC4KCSogZGVjbC5jIChjcF9tYWtlX2ZuYW1lX2RlY2wpOiBBZGp1c3QgY2FsbCB0byBjcF9maW5pc2hfZGVjbC4KCShjcF9maW5pc2hfZGVjbCk6IEFkZCBpbml0X2NvbnN0X2V4cHJfcCBwYXJhbWV0ZXIuICBTZXQKCURFQ0xfSU5JVElBTElaRURfQllfQ09OU1RBTlRfRVhQUkVTU0lPTl9QIGhlcmUuCgkoZmluaXNoX2RlY2wpOiBBZGp1c3QgY2FsbCB0byBjcF9maW5pc2hfZGVjbC4KCShjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBSb2J1c3RpZnkuCgkoc3RhcnRfbWV0aG9kKTogVXNlIGZpbmlzaF9kZWNsLCBub3QgY3BfZmluaXNoX2RlY2wuCgkqIHJ0dGkuYyAoZW1pdF90aW5mb19kZWNsKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChpbml0aWFsaXplX2hhbmRsZXJfcGFybSk6IEFkanVzdCBjYWxsIHRvCgljcF9maW5pc2hfZGVjbC4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IEFkanVzdCBjYWxsIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IEFkanVzdCBjYWxsIHRvCglmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wuCgkodHN1YnN0X2V4cHIpOiBVc2UgZmluaXNoX2RlY2wsIG5vdCBjcF9maW5pc2hfZGVjbC4KCShpbnN0YW50aWF0ZV9kZWNsKTogQWRqdXN0IGNhbGwgdG8gY3BfZmluaXNoX2RlY2wuCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX3RvcF9sZXZlbF8xKTogVXNlIGZpbmlzaF9kZWNsLCBub3QKCWNwX2ZpbmlzaF9kZWNsLgoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBBZGQgaW5pdF9jb25zdF9leHByX3AKCXBhcmFtZXRlci4KCShncm9rZmllbGQpOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9jb25kaXRpb24pOiBDaGVjayBmb3IgY29uc3RhbnQgaW5pdGlhbGl6ZXJzLgoJKGNwX3BhcnNlcl9pbml0X2RlY2xhcmF0b3IpOiBBZGp1c3QgY2FsbHMgdG8gZ3Jva2ZpZWxkIGFuZAoJY3BfZmluaXNoX2RlY2wuICBEb24ndCBzZXQKCURFQ0xfSU5JVElBTElaRURfQllfQ09OU1RBTlRfRVhQUkVTU0lPTl9QIGhlcmUuCgkoY3BfcGFyc2VyX21lbWJlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2NsYXNzX2l2YXJzKTogTGlrZXdpc2UuCgoyMDA2LTAyLTE0ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogUmV0dXJuIE5VTEwgaW5zdGVhZCBvZiAwLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBMaWtld2lzZS4KCSh0b3VybmV5KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGxhbmd1YWdlX3RvX3N0cmluZyk6IExpa2V3aXNlLgoKMjAwNi0wMi0xMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNwLXRyZWUuaCAod2Fybl9oaWRkZW4pOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBjbGFzcy5jICh3YXJuX2hpZGRlbik6IE1ha2Ugc3RhdGljLgoKCSogY3AtdHJlZS5oIChidWlsZF90eXBlX2NvbnZlcnNpb24pOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBjdnQuYyAoYnVpbGRfdHlwZV9jb252ZXJzaW9uKTogQWRkIHByb3RvdHlwZSwgbWFrZSBzdGF0aWMuCgoJKiBjcC10cmVlLmggKHB1c2hfdGluc3RfbGV2ZWwpOiBSZW1vdmUgcHJvdG90eXBlLgoJKHBvcF90aW5zdF9sZXZlbCk6IExpa2V3aXNlLgoJKiBwdC5jIChwdXNoX3RpbnN0X2xldmVsKTogQWRkIHByb3RvdHlwZSwgbWFrZSBzdGF0aWMuCgkocG9wX3RpbnN0X2xldmVsKTogTGlrZXdpc2UuCgoyMDA2LTAyLTEzICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJldHVybiBOVUxMX1RSRUUgaW5zdGVhZCBvZiAwLgoJKiB0eXBlY2suYyAodW5hcnlfY29tcGxleF9sdmFsdWUpOiBMaWtld2lzZS4KCjIwMDYtMDItMTMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBsZXguYyAocGFyc2Vfc3RyY29uc3RfcHJhZ21hKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpbnN0ZWFkIG9mCgkiKHRyZWUpLTEiIHRvIGluZGljYXRlIGZhaWx1cmUuICBTaW1wbGlmeS4KCShoYW5kbGVfcHJhZ21hX2ludGVyZmFjZSk6IFRlc3QgZm9yIGVycm9yX21hcmtfbm9kZSBpbnN0ZWFkIG9mCgkiKHRyZWUpLTEiLgoJKGhhbmRsZV9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBMaWtld2lzZS4KCjIwMDYtMDItMTMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI2MTUxCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxKTogQ2hlY2sgZm9yIGR1cGxpY2F0ZQoJZGVjbC1zcGVjaWZpZXJzLiAgUmVtb3ZlIGV4dHJhIGNoZWNrIGZvciBkdXBsaWNhdGUgJ2ZyaWVuZCcuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgY2hlY2sgZm9yIGR1cGxpY2F0ZQoJZGVjbC1zcGVjaWZpZXJzLiAgU2V0IGxvbmdsb25nIHRvZ2V0aGVyIHdpdGggbG9uZ19wLgoKMjAwNi0wMi0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI0OTk2CgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IEFkZCBhIENMRUFOVVBfUE9JTlRfRVhQUiBpbnNpZGUgdGhlCglUUllfQ0FUQ0hfRVhQUiBvciBNVVNUX05PVF9USFJPV19FWFBSLgoKMjAwNi0wMi0xMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNsYXNzLmMgKGRlYnVnX2NsYXNzKTogUmVtb3ZlIGV4dGVybi4KCShkZWJ1Z190aHVua3MpOiBMaWtld2lzZS4KCjIwMDYtMDItMDkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBEb24ndCB0ZXN0IGZvciBmbGFnX2NvbnN0X3N0cmluZ3MuCgoyMDA2LTAyLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjU5NzkKCSogY3AtZ2ltcGxpZnkuYyAoY3BfZ2ltcGxpZnlfZXhwcik6IERvbid0IGNhbGwKCWNwX2dpbXBsaWZ5X2luaXRfZXhwciBmb3IgTU9ESUZZX0VYUFJzLgoJKiB0eXBlY2syLmMgKHNwbGl0X25vbmNvbnN0YW50X2luaXRfMSk6IFVzZSBJTklUX0VYUFIuCgoyMDA2LTAyLTA4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yNjA3MQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogU2V0IGRuYW1lIGFsc28gZm9yIGRlc3RydWN0b3IuCgoJUFIgYysrLzI2MDcwCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDbGVhciBzdG9yYWdlX2NsYXNzIHRvZ2V0aGVyIHdpdGggc3RhdGljcC4KCjIwMDYtMDItMDcgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogY3AtdHJlZS5oICh0Zl93YXJuaW5nX29yX2Vycm9yKTogUmVuYW1lZCBmcm9tIHRmX3dhcm5fb3JfZXJyb3IuCgkoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUpOiBQcm9wb2dhdGUgcmVuYW1pbmcuCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlciwgY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUsIGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24sIGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlLAoJdHN1YnN0X2RlZmF1bHRfYXJndW1lbnQsIGluc3RhbnRpYXRlX2RlY2wsCgl0c3Vic3RfaW5pdGlhbGl6ZXJfbGlzdCwgdHN1YnN0X2VudW0pOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF90ZW1wbGF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jLCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgoyMDA2LTAyLTA3ICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBBbm5vdGF0ZSBkaXYtYnktemVybwoJd2FybmluZ3MgdG8gbWFrZSAtV25vLWRpdi1ieS16ZXJvIGhhdmUgYW4gZWZmZWN0LgoKMjAwNi0wMi0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvOTczNwoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBEbyBub3QgdGVtcGxhdGVzIHdpdGgKCWV4Y2VzcyBkZWZhdWx0IGFyZ3VtZW50cyB0byBtYXRjaCB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzCgl3aXRoIGZld2VyIHBhcmFtZXRlcnMuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWRkIHVzZV9kZWZhdWx0X2FyZ3MgcGFyYW1ldGVyOyB1c2UKCWRlZmF1bHQgYXJndW1lbnRzIG9ubHkgd2hlbiB0cnVlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEFkanVzdCBjYWxsIHRvIGNvZXJjZV90ZW1wbGF0ZV9wYXJtcy4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkodW5pZnkpOiBMaWtld2lzZS4KCShnZXRfYmluZGluZ3MpOiBMaWtld2lzZS4KCShkZXBlbmRlbnRfdHlwZV9wKTogQWRkIGFzc2VydGlvbnMuCgoyMDA2LTAyLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBib3RoZXIgY2hlY2tpbmcgZm9yIENIQVJfVFlQRS4KCSogcnR0aS5jICh0eXBlaW5mb19pbl9saWJfcCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKElOVEVHUkFMX0NPREVfUCwgQ1BfSU5URUdSQUxfVFlQRV9QKTogTGlrZXdpc2UuCgkqIG5hbWUtbG9va3VwLmMgKGFyZ19hc3NvY190eXBlKTogTGlrZXdpc2UuCgoyMDA2LTAyLTA0ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGNwLXRyZWUuaCAodGZfd2Fybl9vcl9lcnJvcik6IE5ldyBzdWJzdGl0dWlvbiBmbGFnLgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlKTogVXNlIGl0LgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogTGlrZXdpc2UuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCShjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSh0c3Vic3RfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSh0c3Vic3RfZGVmYXVsdF9hcmd1bWVudCk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KCSh0c3Vic3RfaW5pdGlhbGl6ZXJfbGlzdCk6IExpa2V3aXNlLgoJKHRzdWJzdF9lbnVtKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYyk6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCjIwMDYtMDItMDMgIExlZSBNaWxsd2FyZCAgPGxlZS5taWxsd2FyZEBnbWFpbC5jb20+CgoJKiB0eXBlY2suYyAoc3RyaW5nX2NvbnZfcCk6IFBhc3MgYXBwcm9waWF0ZQoJT1BUX1d4eHh4IHZhbHVlcyB3aGVuIGNhbGxpbmcgd2FybmluZygpLgoJKGJ1aWxkX2FycmF5X3JlZiwgY3h4X21hcmtfYWRkcmVzc2FibGUpOiBMaWtld2lzZS4KCShjaGVja19yZXR1cm5fZXhwcik6IExpa2V3aXNlLgoKCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogTGlrZXdpc2UuCgkoc29ydF9tZW1faW5pdGlhbGl6ZXJzLCBlbWl0X21lbV9pbml0aWFsaXplcnMpOiBMaWtld2lzZS4KCgkqIGNsYXNzLmMgKGNoZWNrX2ZpZWxkX2RlY2xzKTogTGlrZXdpc2UuCgkod2Fybl9hYm91dF9hbWJpZ3VvdXNfYmFzZXMpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAocG9wX2xhYmVsLCBwb3BsZXZlbCk6IExpa2V3aXNlLgoJKGR1cGxpY2F0ZV9kZWNscywgZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uLCBmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IExpa2V3aXNlLgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl93YXJuX21pbl9tYXgpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfY2FzdF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgoJKiBtZXRob2QuYyAobGF6aWx5X2RlY2xhcmVfZm4pOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IExpa2V3aXNlLgoJKiBtYW5nbGUuYyAoZmluaXNoX21hbmdsaW5nKTogTGlrZXdpc2UuCgkqIGNwLWdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2V4cHJfc3RtdCk6IExpa2V3aXNlLgoKMjAwNi0wMi0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG5hbWUtbG9va3VwLmMgKGRvX2NsYXNzX3VzaW5nX2RlY2wpOiBVc2UgSURFTlRJRklFUl9UWVBFTkFNRV9QLAoJbm90IElERU5USUZJRVJfT1BOQU1FX1AuCgoyMDA2LTAxLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTM0MgoJKiBjcC10cmVlLmggKERFQ0xfVEVNUExBVEVfU1BFQ0lBTElaQVRJT05TKTogUmV2aXNlCglkb2N1bWVudGF0aW9uLgoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBVc2UgSU5ORVJNT1NUX1RFTVBMQVRFX1BBUk1TLAoJbm90IFRSRUVfVkFMVUUuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBTaW1wbGlmeS4KCSh2ZXJpZnlfY2xhc3NfdW5pZmljYXRpb24pOiBSZW1vdmUuCgkodW5pZnkpOiBEb2N1bWVudCBwYXJhbWV0ZXJzLiAgVXNlIElOTkVSTU9TVF9URU1QTEFURV9BUkdTIHRvCglwZXJtaXQgbXVsdGlwbGUgbGV2ZWxzIG9mIHRlbXBsYXRlIGFyZ3VtZW50cy4KCShtb3JlX3NwZWNpYWxpemVkX2NsYXNzKTogU2ltcGxpZnkuCgkoZ2V0X2NsYXNzX2JpbmRpbmdzKTogUGFzcyBmdWxsIGFyZ3VtZW50cyB0byB1bmlmeS4gIEZvbGQKCXZlcmlmeV9jbGFzc191bmlmaWNhdGlvbiBpbnRvIHRoaXMgZnVuY3Rpb24uICBSZXR1cm4gZnVsbAoJYXJndW1lbnRzLgoJKG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBBZGp1c3QgZm9yIGNoYW5nZXMgdG8KCWdldF9jbGFzc19iaW5kaW5ncy4gIElzc3VlIGVycm9ycyBoZXJlIGZvciBhbWJpZ3VpdHkuICBSZXR1cm4gdGhlCglmdWxseSBkZWR1Y2VkIGFyZ3VtZW50cyBmb3IgdGhlIG1vc3Qgc3BlY2lhbGl6ZWQgY2xhc3MsIGluCglhZGRpdGlvbiB0byB0aGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbi4KCjIwMDYtMDEtMzEgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogbWFuZ2xlLmM6IENvbW1lbnQgZml4LgoKMjAwNi0wMS0yOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBNYWtlLWxhbmcuaW4gKGNwLXdhcm4pOiBJbmNsdWRlIENYWF9DT01QQVRfV0FSTi4KCSogcmVwby5jIChleHRyYWN0X3N0cmluZywgYWZnZXRzKTogVXNlIGNhc3Qgd2hlbiBjb252ZXJ0aW5nIGZyb20KCXZvaWQgKi4KCjIwMDYtMDEtMjkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogY2FsbC5jIChhbGxvY19jb252ZXJzaW9uKTogVXNlIGNhc3Qgd2hlbiBjb252ZXJ0aW5nIGZyb20gdm9pZCAqLgoJKGFsbG9jX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuCgkoYWRkX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKHByaW50X3pfY2FuZGlkYXRlcyk6IExpa2V3aXNlLgoJKGFkZF93YXJuaW5nKTogTGlrZXdpc2UuCgkqIHB0LmMgKHJldHJpZXZlX2xvY2FsX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkodHN1YnN0X3RlbXBsYXRlX2FyZ3MpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChwYXRfY2FsY19oYXNoKTogTGlrZXdpc2UuCgkocGF0X2NvbXBhcmUpOiBMaWtld2lzZS4KCShhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChtZXRob2RfbmFtZV9jbXApOiBMaWtld2lzZS4KCShyZXNvcnRfbWV0aG9kX25hbWVfY21wKTogTGlrZXdpc2UuCgkoZ2V0X3ZmaWVsZF9uYW1lKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdlbmVyYXRlX2N0b3JfYW5kX2R0b3JfZnVuY3Rpb25zX2Zvcl9wcmlvcml0eSk6IExpa2V3aXNlLgoJKiBsZXguYyAoaW5pdF9yZXN3b3Jkcyk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGNyZWF0ZV9wc2V1ZG9fdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChkZnNfbG9va3VwX2Jhc2UpOiBMaWtld2lzZS4KCShkZnNfZGNhc3RfaGludF9wcmUpOiBMaWtld2lzZS4KCShkZnNfZGNhc3RfaGludF9wb3N0KTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoaGFzaF90cmVlX2NvbnMpOiBMaWtld2lzZS4KCSogcmVwby5jIChleHRyYWN0X3N0cmluZyk6IExpa2V3aXNlLgoJKGFmZ2V0cyk6IExpa2V3aXNlLgoJKiBjcC1vYmpjcC1jb21tb24uYyAoZGVjbF9zaGFkb3dlZF9mb3JfdmFyX2xvb2t1cCk6IExpa2V3aXNlLgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogTGlrZXdpc2UuCgoyMDA2LTAxLTI4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGNhbGwuYyAoam91c3QpOiBQYXNzIG9wdGlvbiBjb2RlIHRvIHdhcm5pbmcuICBVc2UgaW5mb3JtIGZvcgoJZXhwbGFuYXRpb24uCgkqIGNsYXNzLmMgKGNoZWNrX2Jhc2VzKTogTGlrZXdpc2UuCgkobWF5YmVfd2Fybl9hYm91dF9vdmVybHlfcHJpdmF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogTGlrZXdpc2UuCgkobGF5b3V0X2VtcHR5X2Jhc2UpOiBMaWtld2lzZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IExpa2V3aXNlLgoJKGxheW91dF9jbGFzc190eXBlKTogTGlrZXdpc2UuCgoyMDA2LTAxLTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTk5OQoJKiBkZWNsLmMgKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbik6IENhbGwgbWF5YmVfYXBwbHlfcHJhZ21hX3dlYWsKCWhlcmUsIG5vdCAuLi4KCShzdGFydF9mdW5jdGlvbik6IC4uLiBoZXJlLgoKMjAwNi0wMS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjU4NTUKCSogY2xhc3MuYyAocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBBZGp1c3QgdXNlIG9mCglyZXR1cm4gdmFsdWUgZnJvbSBtb3N0X3NwZWNpYWxpemVkX2luc3RhbnRpYXRpb24uCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEF2b2lkIG11bHRpcGxlIGNhbGxzIHRvCglnZXRfYmluZGluZ3MuCgkobW9zdF9zcGVjaWFsaXplZF9pbnN0YW50aWF0aW9uKTogV2hlbiBhIHRpZSBvY2N1cnMsIHNldCB0aGUKCWN1cnJlbnQgcHJlc3VtZWQgY2hhbXBpb24gdG8gdGhlIG5leHQgdGVtcGxhdGUuICBSZXR1cm4gdGhlCglUUkVFX0xJU1Qgbm9kZSBjb250YWluaW5nIHRoZSB0ZW1wbGF0ZSwgcmF0aGVyIHRoYW4gdGhlIHRlbXBsYXRlCglpdHNlbGYuCgkobW9zdF9zcGVjaWFsaXplZCk6IFJlbW92ZS4KCSogbmFtZS1sb29rdXAuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBXaGVuIGR1cGxpY2F0ZV9kZWNscwoJaW5kaWNhdGVzIGEgZmFpbGVkIHJlZGVjbGFyYXRpb24sIHJlcG9ydCB0aGF0IHRvIGNhbGxlcnMuCgoyMDA2LTAxLTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTYwMjEKCSogbmFtZS1sb29rdXAuYyAocGFyc2VfdXNpbmdfZGlyZWN0aXZlKTogUmVxdWlyZSBzdHJvbmcgdXNpbmcgdG8KCW5hbWUgYSBuZXN0ZWQgbmFtZXNwYWNlLgoKMjAwNi0wMS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglSZXZlcnQ6CgkqIGNwLXRyZWUuaCAoZG9fcG9wbGV2ZWwpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBzZW1hbnRpY3MuYyAoZG9fcG9wbGV2ZWwpOiBBZGQgcHJvdG90eXBlLiAgTWFrZSBzdGF0aWMuCgoJUmV2ZXJ0OgoJKiBjcC10cmVlLmggKGRlZmF1bHRfY29udmVyc2lvbik6IFJlbW92ZSBwcm90b3R5cGUuCgkqIHR5cGVjay5jIChkZWZhdWx0X2NvbnZlcnNpb24pOiBNYWtlIHN0YXRpYy4KCjIwMDYtMDEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjcC10cmVlLmggKGdldF9wcmltYXJ5X2JpbmZvKTogUmVtb3ZlIHByb3RvdHlwZS4KCShwdXNoX3VzaW5nX2RlY2wpOiBMaWtld2lzZS4KCShjdXJyZW50X3RlbXBsYXRlX2FyZ3MpOiBMaWtld2lzZS4KCShtb3JlX3NwZWNpYWxpemVkX2NsYXNzKTogTGlrZXdpc2UuCgkobWFya19jbGFzc19pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCShkZWZhdWx0X2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShwZm5fZnJvbV9wdHJtZW1mdW5jKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGdldF9wcmltYXJ5X2JpbmZvKTogQWRkIHByb3RvdHlwZSwgbWFrZSBzdGF0aWMsIHNpbXBsaWZ5LgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX3VzaW5nX2RlY2wpOiBNYWtlIHN0YXRpYy4KCSogcHQuYyAoY3VycmVudF90ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkobW9yZV9zcGVjaWFsaXplZF9jbGFzcyk6IExpa2V3aXNlLgoJKG1hcmtfY2xhc3NfaW5zdGFudGlhdGVkKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChkZWZhdWx0X2NvbnZlcnNpb24pOiBNYWtlIHN0YXRpYy4KCShwZm5fZnJvbV9wdHJtZW1mdW5jKTogQWRkIHByb3RvdHlwZSwgbWFrZSBzdGF0aWMuCgoyMDA2LTAxLTI0ICBEaXJrIE11ZWxsZXIgIDxkbXVlbGxlckBzdXNlLmRlPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBPUFRfV2Zsb2F0X2VxdWFsIGluIHdhcm5pbmcoKS4KCjIwMDYtMDEtMjQgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI1NTUyCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdW5xdWFsaWZpZWRfaWQpOiBDaGVjayB0aGF0IGRlc3RydWN0b3IgbmFtZQoJYW5kIHNjb3BlIG1hdGNoLgoJKiBjYWxsLmMgKGNoZWNrX2R0b3JfbmFtZSk6IERvIG5vdCBleHBlY3QgYSBCSVRfTk9UX0VYUFIuCglBZGp1c3QgY29tbWVudC4gIFJldHVybiBlYXJseSBpZiBwb3NzaWJsZS4KCVVzZSBzYW1lX3R5cGVfcCB0byBjb21wYXJlIHR5cGVzLgoJKiB0eXBlY2suYyAobG9va3VwX2Rlc3RydWN0b3IpOiBBZGp1c3QgY2FsbCB0byBjaGVja19kdG9yX25hbWUuCgoyMDA2LTAxLTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmM6IFJlbW92ZSBvdXRkYXRlZCBjb21tZW50LgoKMjAwNi0wMS0yMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNwLXRyZWUuaCAoZG9fcG9wbGV2ZWwpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBzZW1hbnRpY3MuYyAoZG9fcG9wbGV2ZWwpOiBBZGQgcHJvdG90eXBlLiAgTWFrZSBzdGF0aWMuCgoJKiBjcC10cmVlLmggKG9yaWdpbmFsX3R5cGUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiB0eXBlY2suYyAob3JpZ2luYWxfdHlwZSk6IE1ha2Ugc3RhdGljLgoKCSogY3AtdHJlZS5oIChkZWNsYXJlX2dsb2JhbF92YXIpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGRlY2xhcmVfZ2xvYmFsX3Zhcik6IE1ha2Ugc3RhdGljLgoKCSogY3AtdHJlZS5oIChpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBtZXRob2QuYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogTWFrZSBzdGF0aWMuCgoJKiBjcC10cmVlLmggKGZvbGRfZGVjbF9jb25zdGFudF92YWx1ZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIHB0LmMgKGZvbGRfZGVjbF9jb25zdGFudF92YWx1ZSk6IE1ha2Ugc3RhdGljLgoKCSogY3AtdHJlZS5oIChidWlsZF94X2RlbGV0ZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGluaXQuYyAoYnVpbGRfdmVjX2RlbGV0ZV8xKTogQ2FsbCBidWlsZF9vcF9kZWxldGVfY2FsbCBkaXJlY3RseQoJYW5kIG5vdCB2aWEgYnVpbGRfeF9kZWxldGUuCgkoYnVpbGRfeF9kZWxldGUpOiBSZW1vdmUuCgoJKiBjcC10cmVlLmggKGdldF92dHRfbmFtZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGNsYXNzLmMgKGdldF92dHRfbmFtZSk6IFJlbW92ZS4KCShidWlsZF92dHQpOiBDYWxsIG1hbmdsZV92dHRfZm9yX3R5cGUgaW5zdGVhZCBvZiBnZXRfdnR0X25hbWUuCgoyMDA2LTAxLTIyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogRml4IGNvbW1lbnQuCgoyMDA2LTAxLTIyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglQUiBjKysvMTA4OTEKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3QpOiBSZWplY3QgZHluYW1pY19jYXN0IHVzZSBpZgoJLWZuby1ydHRpLgoKMjAwNi0wMS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjU4OTUKCSogY2xhc3MuYyAoYnVpbGRfYmFzZV9wYXRoKTogR2VuZXJhdGUgYSBOT1BfRVhQUiBpbnN0ZWFkIG9mIGEKCUNPTVBPTkVOVF9SRUYgaWYgdGhlIGJhc2UgYW5kIGRlcml2ZWQgY2xhc3NlcyBhcmUgYXQgdGhlIHNhbWUKCWFkZHJlc3MuCgoJUFIgYysrLzI1ODU2CgkqIGRlY2wuYyAoYmVnaW5fZGVzdHJ1Y3Rvcl9ib2R5KTogUm9idXN0aWZ5LgoKCVBSIGMrKy8yNTg1OAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yKTogUm9idXN0aWZ5LgoKMjAwNi0wMS0yMCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXh0X3Rva2VuX2lzX2tleXdvcmQpOiBTaW1wbGlmeS4KCgkqIHBhcnNlci5jIChjbGVhcl9kZWNsX3NwZWNzKTogUmVtb3ZlIHByb3RvdHlwZS4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZXhwcmVzc2lvbl9mbik6IFJlbW92ZS4KCgkqIGNhbGwuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IFJlbW92ZSBzdXBlcmZsdW91cyByZXR1cm4uCgkqIG5hbWUtbG9va3VwLmMgKGRvX3RvcGxldmVsX3VzaW5nX2RlY2wpOiBMaWtld2lzZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90eXBlX3NwZWNpZmllcl9zZXEpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfc2F2ZV9kZWZhdWx0X2FyZ3MpOiBMaWtld2lzZS4KCjIwMDYtMDEtMjAgIERpcmsgTXVlbGxlciAgPGRtdWVsbGVyQHN1c2UuY29tPgoKCVBSIGMrKy81NTIwCgkqIHNlbWFudGljcy5jIChmaW5pc2hfaWZfc3RtdCk6IENhbGwgZW1wdHlfYm9keV93YXJuaW5nLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2ltcGxpY2l0bHlfc2NvcGVkX3N0YXRlbWVudCk6CglNYXJrIGVtcHR5IHN0YXRlbWVudCB3aXRoIGFuIGVtcHR5IHN0bXQuCgoyMDA2LTAxLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMjEzNgoJKiBuYW1lLWxvb2t1cC5jIChkb19jbGFzc191c2luZ19kZWNsKTogRG9uJ3QgdHJ5IHRvIGxvb2sgdXAgYmFzZQoJY2xhc3NlcyBpbiB0ZW1wbGF0ZXMgd2l0aCBkZXBlbmRlbnQgYmFzZSB0eXBlcy4KCjIwMDYtMDEtMTkgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzI1ODU0CgkqIHB0LmMgKG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IFJldHVybiBlYXJseSBvbgoJZXJyb3JfbWFya19ub2RlLgoKMjAwNi0wMS0xOSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMTY4MjkKCSogZGVjbC5jIChzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBDaGVjayBkZWZhdWx0IGFyZ3VtZW50cwoJdW5jb25kaXRpb25hbGx5LgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoZGVjbF9tYXliZV9mcmllbmQpOiBDaGVjayBkZWZhdWx0IGFyZ3VtZW50cwoJb2YgYWxsIGZ1bmN0aW9ucyBhbmQgZnVuY3Rpb24gdGVtcGxhdGVzLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xhdGVfcGFyc2luZ19kZWZhdWx0X2FyZ3MpOiBDaGVjayBkZWZhdWx0Cglhcmd1bWVudHMuCgkqIGRlY2wyLmMgKGNoZWNrX2RlZmF1bHRfYXJncyk6IFNldCBtaXNzaW5nIGRlZmF1bHQgYXJndW1lbnRzIHRvCgllcnJvcl9tYXJrX25vZGUuCgoyMDA2LTAxLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTgzNgoJKiBjcC10cmVlLmggKHB1c2hfY2xhc3Nfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkocG9wX2NsYXNzX3N0YWNrKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGNsYXNzX3N0YWNrX25vZGUpOiBBZGQgaGlkZGVuIGZpZWxkLgoJKHB1c2hjbGFzcyk6IENsZWFyIGl0LgoJKHB1c2hfY2xhc3Nfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkocG9wX2NsYXNzX3N0YWNrKTogTGlrZXdpc2UuCgkoY3VycmVudGx5X29wZW5fY2xhc3MpOiBJZ25vcmUgaGlkZGVuIGNsYXNzZXMuCgkoY3VycmVudGx5X29wZW5fZGVyaXZlZF9jbGFzcyk6IExpa2V3aXNlLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX3RvX3RvcF9sZXZlbCk6IENhbGwgcHVzaF9jbGFzc19zdGFjay4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBDYWxsIHBvcF9jbGFzc19zdGFjay4KCjIwMDYtMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jIChmaW5kX3RyZWVfdCwgZmluZF90cmVlKTogUmVtb3ZlLgoJKiBjcC10cmVlLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvciBmaW5kX3RyZWUuCgoyMDA2LTAxLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnNfcik6IEZpeCBhIHBhc3RvLgoKMjAwNi0wMS0xNyAgRXJpYyBDaHJpc3RvcGhlciAgPGVjaHJpc3RvQGFwcGxlLmNvbT4KCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBXaGVuIGlzc3VpbmcgY29udmVyc2lvbgoJd2FybmluZ3MsIGRlcGVuZCBvbiBPUFRfV2NvbnZlcnNpb24uCgkqIGN2dC5jIChidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IERpdHRvLgoKMjAwNi0wMS0xNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBuYW1lLWxvb2t1cC5jIChsb29rdXBfbmFtZXNwYWNlX25hbWUpOiBSZW1vdmUuCgkqIG5hbWUtbG9va3VwLmg6IFJlbW92ZSB0aGUgcHJvdG90eXBlIGZvcgoJbG9va3VwX25hbWVzcGFjZV9uYW1lLgoKMjAwNi0wMS0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYy8yNTY4MgoJKiBkZWNsLmMgKGNvbXB1dGVfYXJyYXlfaW5kZXhfdHlwZSk6IEFmdGVyIGlzc3Vpbmcgbm90IGFuIGludGVncmFsCgljb25zdGFudC1leHByZXNzaW9uIGVycm9yLCBzZXQgc2l6ZSB0byAxIHRvIGF2b2lkIElDRXMgbGF0ZXIgb24uCgoyMDA2LTAxLTE2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogcGFyc2VyLmM6IEluY2x1ZGUgImNncmFwaC5oIi4KCShjcF9wYXJzZXJfYXNtX2RlZmluaXRpb24pOiBDYWxsIGNncmFwaF9hZGRfYXNtX25vZGUgcmF0aGVyIHRoYW4KCWFzc2VtYmxlX2FzbS4KCjIwMDYtMDEtMTYgIFJhZmFlbCDvv71pbGEgZGUgRXNw77+9ZG9sYSAgPHJhZmFlbC5lc3BpbmRvbGFAZ21haWwuY29tPgoKCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX3NwZWNfZnVuY3Rpb25zKTogUmVtb3ZlLgoKMjAwNi0wMS0xNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBkZWNsLmMgKGNoZWNrX2luaXRpYWxpemVyKTogRml4IHRoaW5rby4KCjIwMDYtMDEtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI1NjYzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGlyZWN0X2RlY2xhcmF0b3IpOiBVc2UgY3BfcGFyc2VyX2Vycm9yCglpbnN0ZWFkIG9mIGVycm9yLgoKMjAwNi0wMS0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFVzZSBDUF9ERUNMX0NPTlRFWFQgZXZlbiBtb3JlLgoKCSogbmFtZS1sb29rdXAuYyAoc2V0X2RlY2xfbmFtZXNwYWNlKTogVXNlIENQX0RFQ0xfQ09OVEVYVC4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCjIwMDYtMDEtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGxpYnN0ZGMrKy8yNDY2MAoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEhhbmRsZSBuYW1lc3BhY2UKCWFzc29jaWF0aW9uLgoJKiBuYW1lLWxvb2t1cC5jIChzZXRfZGVjbF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCjIwMDYtMDEtMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0ODI0CgkqIGNsYXNzLmMgKGhhbmRsZV91c2luZ19kZWNsKTogUGFzcyBjb3JyZWN0IHNjb3BlIHRvCgljcF9lbWl0X2RlYnVnX2luZm9fZm9yX3VzaW5nLgoKMjAwNi0wMS0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjUzODYKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQW55IHBhcnQgb2YgYSBDT01QT05FTlRfUkVGIGFmZmVjdHMKCXBhY2tlZG5lc3MuCgoyMDA2LTAxLTA2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGVzb2x1dGlvbnMubmV0PgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBEb2N1bWVudCB0aGUgZ3JhbW1hcgoJZm9yIHRoZSBidWlsdC1pbiBvZmZzZXRvZiwgYSBHTlUgZXh0ZW5zaW9uLgoKMjAwNi0wMS0wNCAgWmRlbmVrIER2b3JhayA8ZHZvcmFrekBzdXNlLmN6PgoKCVBSIGMrKy8yNTYzMgoJKiBpbml0LmMgKGNvbnN0YW50X3ZhbHVlXzEpOiBVbnNoYXJlIHVzZSBvZiBERUNMX0lOSVRJQUwuICBGaXggYSB0eXBvCglpbiBjb25kaXRpb24uCgoyMDA2LTAxLTA0ICBDaHJpcyBMYXR0bmVyICA8c2FicmVAZ251Lm9yZz4KCgkqIHR5cGVjazIuYzogdXBkYXRlIGNvcHlyaWdodCB0byAyMDA2Cgkoc3BsaXRfbm9uY29uc3RhbnRfaW5pdF8xKTogIFNldCBUUkVFX0NPTlNUQU5UIHRvIHRydWUuCgoyMDA2LTAxLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNDc4MgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX25lc3RlZF9uYW1lX3NwZWNpZmllcl9vcHQpOiBQcmVzZXJ2ZSBhY2Nlc3MKCWNoZWNrcywgZXZlbiB3aGVuIHBhcnNpbmcgdGVudGF0aXZlbHkuCgoyMDA2LTAxLTA0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCU1lcmdlIGZyb20gZ29tcCBicmFuY2guCgkqIGxleC5jIChoYW5kbGVfcHJhZ21hX2phdmFfZXhjZXB0aW9ucyk6IEZpeCB3aGl0ZXNwYWNlLgoJKiBwYXJzZXIuYyAoc3RydWN0IGNwX3Rva2VuKTogQWRkIHByYWdtYV9raW5kLgoJKGVvZl90b2tlbik6IFVwZGF0ZSB0byBtYXRjaC4KCShzdHJ1Y3QgY3BfbGV4ZXIpOiBBZGQgaW5fcHJhZ21hOyByZWFycmFuZ2UgbmV4dCBmb3IgYmV0dGVyIHBhY2tpbmcuCgkoY3BfcGFyc2VyX2luaXRpYWxfcHJhZ21hKTogTmV3LgoJKGNwX2xleGVyX25ld19tYWluKTogVXNlIGl0LiAgRG9uJ3QgYm90aGVyIGNsZWFyaW5nCgljX2xleF9yZXR1cm5fcmF3X3N0cmluZ3MuCgkoY3BfbGV4ZXJfZ2V0X3ByZXByb2Nlc3Nvcl90b2tlbik6IEFsd2F5cyBpbml0aWFsaXplIGtleXdvcmQKCWFuZCBwcmFnbWFfa2luZCBmaWVsZHMuICBIYW5kbGUgQ1BQX1BSQUdNQS4KCShjcF9sZXhlcl9jb25zdW1lX3Rva2VuKTogRG9uJ3QgYWxsb3cgQ1BQX1BSQUdNQV9FT0wgd2hlbgoJaW5fcHJhZ21hIGlzIHNldC4KCShjcF9sZXhlcl9oYW5kbGVfcHJhZ21hKTogUmVtb3ZlLiAgVXBkYXRlIGNhbGxlcnMgdG8gY3BfcGFyc2VyX3ByYWdtYS4KCShjcF9sZXhlcl9wcmludF90b2tlbikgPENQUF9QUkFHTUE+OiBEb24ndCBwcmludCBhcyBhIHN0cmluZy4KCShjcF9wYXJzZXJfc2tpcF90b19wcmFnbWFfZW9sKTogTmV3LgoJKGNwX3BhcnNlcl9lcnJvcik6IFVzZSBpdC4KCShjcF9wYXJzZXJfc2tpcF90b19jbG9zaW5nX3BhcmVudGhlc2lzKTogU3RvcCBhdCBDUFBfUFJBR01BX0VPTDsKCXJlYXJyYW5nZSB3aXRoIHN3aXRjaCBzdGF0ZW1lbnQuCgkoY3BfcGFyc2VyX3NraXBfdG9fZW5kX29mX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9za2lwX3RvX2VuZF9vZl9ibG9ja19vcl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfc2tpcF90b19jbG9zaW5nX2JyYWNlKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3NraXBfdW50aWxfZm91bmQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfc3RhdGVtZW50KTogQWRkIGluX2NvbXBvdW5kIGFyZ3VtZW50OyB1cGRhdGUgY2FsbGVycy4KCVVzZSBpdCB0byBkZWNpZGUgaG93IHRvIGhhbmRsZSBwcmFnbWEgcGFyc2luZy4KCShjcF9wYXJzZXJfbGFiZWxlZF9zdGF0ZW1lbnQpOiBBZGQgaW5fY29tcG91bmQgYXJndW1lbnQ7IHBhc3MKCWl0IG9uIHRvIGNwX3BhcnNlcl9zdGF0ZW1lbnQuCgkoY3BfcGFyc2VyX3N0YXRlbWVudF9zZXFfb3B0KTogU3RvcCBhdCBDUFBfUFJBR01BX0VPTC4KCShjcF9wYXJzZXJfZGVjbGFyYXRpb25fc2VxX29wdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbWVtYmVyX3NwZWNpZmljYXRpb25fb3B0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2Z1bmN0aW9uX2RlZmluaXRpb25fYWZ0ZXJfZGVjbCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9jYWNoZV9ncm91cCk6IEhhbmRsZSBDUFBfUFJBR01BL0NQUF9QUkFHTUFfRU9MIHBhaXJzLgoJKGNwX3BhcnNlcl9wcmFnbWEpOiBOZXcuCgkocHJhZ21hX2xleCk6IE5ldy4KCjIwMDYtMDEtMDQgIERpcmsgTXVlbGxlciA8ZG11ZWxsZXJAc3VzZS5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9jb25zdHJ1Y3Rvcl9ib2R5KTogY3JlYXRlIHNpbXBsZQoJY29tcG91bmQgc3RtdCBpbnN0ZWFkIG9mIGEgaWYoMSkgeyB9IGNvbnN0cnVjdC4KCjIwMDYtMDEtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI1NDkyCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hfY2xhc3NfbGV2ZWxfYmluZGluZyk6IFdoZW4gYSBkZXJpdmVkIGNsYXNzCglwcm92aWRlcyBhIHR5cGUgYmluZGluZywgZWxpbWluYXRlIGFueSB0eXBlIGJpbmRpbmcgZnJvbSBhIGJhc2UKCWNsYXNzLgoKCVBSIGMrKy8yNTYyNQoJKiByZXBvLmMgKHJlcG9fZW1pdF9wKTogQWx3YXlzIGluc3RhbnRpYXRlIHN0YXRpYyBkYXRhIG1lbWJlcnMKCWluaXRpYWxpemVkIGJ5IGNvbnN0YW50IGV4cHJlc3Npb25zLCBzbyB0aGF0IHRoZXJlIHZhbHVlcyBhcmUKCWF2YWlsYWJsZS4KCjIwMDYtMDEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI1NjM1CgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBTZXQgVFlQRV9IQVNfQ09OVkVSU0lPTiBmb3IgY2xhc3NlcyB3aXRoIGEKCWNvbnZlcnNpb24gb3BlcmF0b3IuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEbyBub3Qgc2V0IFRZUEVfSEFTX0NPTlZFUlNJT04gaGVyZS4KCglQUiBjKysvMjU2MzgKCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IE5ldmVyIGFzc29jaWF0ZSBtb3JlIHRoYW4gb25lIGRlc3RydWN0b3IKCXdpdGggYSBzaW5nbGUgY2xhc3MuCgoJUFIgYysrLzI1NjM3CgkqIGNwLXRyZWUuaCAoZG9fZnJpZW5kKTogQWRqdXN0IHByb3RvdHlwZS4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogTWFrZSBmdW5jZGVmX2ZsYWcgYSBib29sLCBub3QgYW4gaW50LgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuICBSZWZpbmUgY2hlY2sgZm9yIGludmFsaWQKCWRlY2xhcmF0aW9ucy9kZWZpbml0aW9ucyBvZiBtZW1iZXIgZnVuY3Rpb25zIG91dHNpZGUgb2YgdGhlaXIgb3duCgljbGFzcy4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IE1ha2UgZnVuY2RlZl9mbGFnIGEgYm9vbCwgbm90IGFuIGludC4KCglQUiBjKysvMjU2MzMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9tZW1faW5pdGlhbGl6ZXJfbGlzdCk6IENoZWNrIHJlc3VsdCBvZgoJY3BfcGFyc2VyX21lbV9pbml0aWFsaXplciBhZ2FpbnN0IGVycm9yX21hcmtfbm9kZSwgbm90IE5VTExfVFJFRS4KCShjcF9wYXJzZXJfbWVtX2luaXRpYWxpemVyKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBmb3IgZmFpbHVyZS4KCglQUiBjKysvMjU2MzQKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9wYXJhbWV0ZXJfbGlzdCk6IENhbGwKCWJlZ2luX3RlbXBsYXRlX3Bhcm1fbGlzdCBhbmQgZW5kX3RlbXBsYXRlX3Bhcm1fbGlzdCBoZXJlLgoJKGNwX3BhcnNlcl90eXBlX3BhcmFtZXRlcik6IE5vdCBoZXJlLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9kZWNsYXJhdGlvbl9hZnRlcl9leHBvcnQpOiBPciBoZXJlLgoJKGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKTogQ2FsbAoJY3BfcGFyc2VyX2NoZWNrX3RlbXBsYXRlX3BhcmFtZXRlcnMuCgoJKiB0cmVlLmMgKGJ1aWxkX3RhcmdldF9leHByX3dpdGhfdHlwZSk6IFVzZSBmb3JjZV90YXJnZXRfZXhwci4KCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDA2LTAxLTAyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl91c2luZ19kZWNsYXJhdGlvbik6IFNraXAgbmFtZS1sb29rdXAgb24KCWludmFsaWQgc2NvcGUuCgoyMDA1LTEyLTMwICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X2NvbnN0YW50KTogTmV3LiAgUHJpbnQKCXN0cmluZy1saXRlcmFsIGluIHBhcmVucyBpZiBpbnB1dCBwcm9ncmFtIHNheXMgc28uCgkocHBfY3h4X3ByaW1hcnlfZXhwcmVzc2lvbik6IEhhbmQgb2ZmIGNvbnN0YW50IHByaW50aW5nIHRvCglwcF9jeHhfY29uc3RhbnQuCgkocHBfY3h4X3ByZXR0eV9wcmludGVyX2luaXQpOiBTZXQgcHAtPmNfYmFzZS5jb25zdGFudC4KCShwcF9jeHhfZXhwcmVzc2lvbik6IFVzZSBwcF9jeHhfY29uc3RhbnQgZm9yIGxpdGVyYWxzLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBVc2UgcHBfY29uc3RhbnQgZm9yIGxpdGVyYWxzLgoKMjAwNS0xMi0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogRG9uJ3Qgc2V0IGNvbWRhdF9saW5rYWdlIGhlcmUuCgkodXNlX3RodW5rKTogTWFrZSB0aHVuayBvbmUgb25seSBoZXJlLCBpZiB0aHVuayB0YXJnZXQgaXMKCURFQ0xfT05FX09OTFkuCgoyMDA1LTEyLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTQzOQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogcHRyZWUuYyAoY3h4X3ByaW50X3hub2RlKTogSGFuZGxlIEJBU0VMSU5LLgoJKiBwYXJzZXIuYyAobWFrZV9pZF9kZWNsYXJhdG9yKTogQWRkIHNmayBwYXJhbWV0ZXIuCgkoY3BfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yKTogRG8gbm90IHBhc3MgVFlQRV9ERUNMcyB0bwoJbWFrZV9pZF9kZWNsYXJhdG9yLgoJKGNwX3BhcnNlcl9kZWNsYXJhdG9yX2lkKTogU2ltcGxpZnkgQkFTRUxJTktzIGhlcmUuCgkoY3BfcGFyc2VyX21lbWJlcl9kZWNsYXJhdGlvbik6IEFkanVzdCBjYWxscyB0bwoJbWFrZV9pZF9kZWNsYXJhdG9yLgoKMjAwNS0xMi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjMxNzEsIGMrKy8yMzE3MiwgYysrLzI1NDE3LgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBDcmVhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcyBmb3IKCWNvbXBvdW5kIGxpdGVyYWxzIHdob3NlIGFkZHJlc3NlcyBhcmUgdGFrZW4uCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogVXNlIENPTVBPVU5EX0xJVEVSQUxfUC4KCSogZGVjbC5jIChyZXNoYXBlX2luaXRfdmVjdG9yKTogTGlrZXdpc2UuCgkocmVzaGFwZV9pbml0KTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKGNoZWNrX2luaXRpYWxpemVyKTogVXNlIENPTVBPVU5EX0xJVEVSQUxfUC4KCShpbml0aWFsaXplX2FydGlmaWNpYWxfdmFyKTogQWxsb3cgdGhlIGluaXRpYWxpemVyIHRvIGJlIGEKCUNPTlNUUlVDVE9SLgoJKiBjYWxsLmMgKG1ha2VfdGVtcG9yYXJ5X3Zhcl9mb3JfcmVmX3RvX3RlbXApOiBVc2UKCWNyZWF0ZV90ZW1wb3JhcnlfdmFyLgoJKiBjcC10cmVlLmggKENPTVBPVU5EX0xJVEVSQUxfUCk6IE5ldyBtYWNyby4KCShyZWhhcGVfaW5pdCk6IERlY2xhcmUuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBVc2UgQ09NUE9VTkRfTElURVJBTF9QLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NvbXBvdW5kX2xpdGVyYWwpOiBVc2UgcmVzaGFwZV9pbml0LgoKMjAwNS0xMi0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQ2NzEKCSogcHQuYyAoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBIYW5kbGUgU0ZJTkFFLgoKMjAwNS0xMi0yMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBJbXByb3ZlIGRpYWdub3N0aWMgZm9yIGZyaWVuZAoJZGVjbGFyYXRpb25zIG9mIGNsYXNzIG1lbWJlcnMuCgoyMDA1LTEyLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTM2OQoJKiB0cmVlLmMgKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogVHdlYWsgY29tbWVudC4KCSogcHQuYyAodHN1YnN0X2NhbGxfZGVjbGFyYXRvcl9wYXJtcyk6IFJlbW92ZS4KCSh0c3Vic3RfY29weSk6IENhbGwgbWFya191c2VkIG9uIHRoZSBtZW1iZXIgcmVmZXJlbmNlZCBieSBhbgoJT0ZGU0VUX1JFRi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9xdWFsaWZpZWRfaWRfZXhwcik6IFNpbXBsaWZ5LgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBBY2NlcHQgQkFTRUxJTktzLgoKCVBSIGMrKy8yNTM2NAoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBQYXNzIERFQ0xzIG5vdCBuYW1lcyB0bwoJYnVpbGRfb2Zmc2V0X3JlZnMuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IERvIG5vdCBkbyBuYW1lIGxvb2t1cC4gIERvIG5vdCBjYWxsCgltYXJrX3VzZWQuCgkqIGNhbGwuYyAoYnVpbGRfY2FsbCk6IFNpbXBsaWZ5IGFuZCB0aWR5LgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3F1YWxpZmllZF9pZF9leHByKTogQ2FsbCBtYXJrX3VzZWQuCgoyMDA1LTEyLTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMzMzMwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3B1cmVfc3BlY2lmaWVyKTogQ2hlY2sgZm9yIFBVUkVfWkVSTyB0bwoJaWRlbnRpZnkgYSBzaW5nbGUgJzAnLgoKMjAwNS0xMi0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjEyMjgKCSogZGVjbC5jICh1c2VfZWhfc3BlY19ibG9jayk6IE5ldyBmdW5jdGlvbi4KCShzdG9yZV9wYXJtX2RlY2xzKTogVXNlIGl0LgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoKMjAwNS0xMi0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQyNzgKCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBQcmludCBtZXNzYWdlcyBhYm91dCBiYXNlY2xhc3NlcwoJdXNpbmcgJVQgcmF0aGVyIHRoYW4gJUQuCgoJUFIgYysrLzI0OTE1CgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBEbyBub3QgdHJlYXQgdGVtcGxhdGVzIGFzIGlkZW50aWNhbCB1bmxlc3MKCXRoZWlyIHJldHVybiB0eXBlcyBhcmUgdGhlIHNhbWUuCgoyMDA1LTEyLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yNTMwMAoJKiB0cmVlLmMgKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBmb3IKCWVycm9uZW91cyBpbnB1dC4KCjIwMDUtMTItMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI1MzM3CgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IFBlcm1pdCBkZXBlbmRlbnQgdHlwZXMgZm9yIHRoZQoJb2JqZWN0IGluIGEgY2xhc3MgbWVtYmVyIGFjY2VzcyBleHByZXNzaW9uLgoKMjAwNS0xMi0xMCAgVGVycnkgTGF1cmVuem8gIDx0bGF1cmVuem9AZ21haWwuY29tPgoKCVBSIGphdmEvOTg2MQoJKiBtYW5nbGUuYyAod3JpdGVfYmFyZV9mdW5jdGlvbl90eXBlKTogTWFuZ2xlIHJldHVybiB0eXBlIGZvcgoJbWV0aG9kcyBvZiBKYXZhIGNsYXNzZXMKCjIwMDUtMTItMDggIFRo77+9ZG9yZSBQYXBhZG9wb3VsbyA8VGhlb2RvcmUuUGFwYWRvcG91bG9Ac29waGlhLmlucmlhLmZyPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogUHJpbnQgdHlwZXMgaW4gZXJyb3IgbWVzc2FnZXMuCgoyMDA1LTEyLTA3ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogZXhwci5jIChjeHhfZXhwYW5kX2V4cHIpOiBDYWxsIGdjY191bnJlYWNoYWJsZSBpbnN0ZWFkIG9mIGFib3J0LgoKMjAwNS0xMi0wNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNwLWdpbXBsaWZ5LmMgKGdpbXBsaWZ5X2NwX2xvb3ApOiBVc2UgZm9sZF9idWlsZDMuCgoyMDA1LTEyLTA3ICBSYWZhZWwg77+9aWxhIGRlIEVzcO+/vWRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoYysrLmFsbC5idWlsZCwgYysrLmluc3RhbGwtbm9ybWFsKTogUmVtb3ZlLgoKMjAwNS0xMi0wNyAgUmFmYWVsIO+/vWlsYSBkZSBFc3Dvv71kb2xhICA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSBhbGwgZGVwZW5kZW5jaWVzIG9uIHMtZ3R5cGUuCgoyMDA1LTEyLTA2ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJUFIgQysrLzI0MTM4CgkqIGRlY2wuYyAocmVzaGFwZV9pbml0X2FycmF5XzEpOiBIYW5kbGUgbWF4X2luZGV4IG9mIC0xLgoKMjAwNS0xMi0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogSXNzdWUgd2FybmluZyBpZiBlaXRoZXIgb3BlcmFuZCBvZiBhCgljb21wYXJpc29uIG9wZXJhdG9yIGlzIGEgc3RyaW5nIGxpdGVyYWwsIGV4Y2VwdCBmb3IgdGVzdGluZyBlcXVhbGl0eQoJb3IgaW5lcXVhbGl0eSBhZ2FpbnN0IE5VTEwuCgoyMDA1LTEyLTA2ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBjKysvMjUyNjMKCSogZGVjbC5jIChjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBDaGVjayB0aGF0IGl0eXBlIGlzIGFuCglJTlRFR0VSX0NTVCBub2RlIGJlZm9yZSB0ZXN0aW5nL2NsZWFyaW5nIFRSRUVfT1ZFUkZMT1cuCgoyMDA1LTEyLTA1ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHB0cmVlLmMgKGN4eF9wcmludF9kZWNsKTogVXBkYXRlIHRvIGNoZWNrIGZvciBkZWNsX2NvbW1vbgoJc3RydWN0dXJlLgoKMjAwNS0xMi0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQxNzMKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCByZWx5IG9uIERFQ0xfVEVNUExBVEVfSU5GTyBhZnRlcgoJY2xvYmJlcmluZyBuZXdkZWNsLgoKMjAwNS0xMi0wMiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogc2VtYW50aWNzLmMgKHNpbXBsaWZ5X2FnZ3JfaW5pdF9leHByKTogVXNlIGJ1aWxkTiBpbnN0ZWFkCglvZiBidWlsZC4KCjIwMDUtMTItMDIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcGFyc2VyLmMgKGNwX2xleGVyX25ld19tYWluKTogVXNyIEdHQ19SRVNJWkVWRUMgaW5zdGVhZCBvZgoJZ2djX3JlYWxsb2MuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2FyZ3VtZW50X2xpc3QpOiBVc2UgWFJFU0laRVZFQyBpbnN0ZWFkIG9mCgl4cmVhbGxvYy4KCSogY2xhc3MuYyAocHVzaGNsYXNzKTogTGlrZXdpc2UuCgoyMDA1LTEyLTAyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGRlY2wyLmMgKGdldF9wcmlvcml0eV9pbmZvKTogVXNlIFhORVcsIG5vdCB4bWFsbG9jLgoJKiBkZWNsLmMgKHB1c2hfc3dpdGNoKTogTGlrZXdpc2UuCgkqIGxleC5jIChoYW5kbGVfcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogTGlrZXdpc2UuCgkqIGNwLW9iamNwLWNvbW1vbi5jIChkZWNsX3NoYWRvd2VkX2Zvcl92YXJfaW5zZXJ0KTogVXNlIEdHQ19ORVcsCglub3QgZ2djX2FsbG9jLgoJKGN4eF9pbml0aWFsaXplX2RpYWdub3N0aWNzKTogVXNlIFhORVcsIG5vdCB4bWFsbG9jLgoJKiBjbGFzcy5jIChpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBVc2UgWE5FV1ZFQywgbm90IHhtYWxsb2MuCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBMaWtld2lzZS4KCSogbWFuZ2xlLmMgKHNhdmVfcGFydGlhbGx5X21hbmdsZWRfbmFtZSk6IExpa2V3aXNlLgoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfbmV3X21haW4pOiBVc2UgR0dDX05FV1ZFQywgbm90IGdnY19hbGxvYy4KCShjcF9wYXJzZXJfdGVtcGxhdGVfYXJndW1lbnRfbGlzdCk6IFVzZSBYTkVXVkVDLCBudG8geG1hbGxvYy4KCShjcF9wYXJzZXJfc2l6ZW9mX29wZXJhbmQpOiBMaWtld2lzZS4KCSogcmVwby5jIChvcGVuX3JlcG9fZmlsZSwgb3Blbl9yZXBvX2ZpbGUpOiBMaWtld2lzZS4KCjIwMDUtMTItMDEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9tYWtlX3R5cGVuYW1lX3R5cGUpOiBDYWxsIG1ha2VfdHlwZW5hbWVfdHlwZQoJd2l0aCB0Zl9ub25lIGluc3RlYWQgb2YgbWFnaWMgdmFsdWUgMC4KCShjcF9wYXJzZXJfZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IENhbGwgZG9fdHlwZV9pbnN0YW50aWF0aW9uCgl3aXRoIHRmX2Vycm9yIGluc3RlYWQgb2YgbWFnaWMgdmFsdWUgMS4KCShjcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllcik6IENhbGwgbWFrZV90eXBlbmFtZV90eXBlCgl3aXRoIHRmX2Vycm9yIGluc3RlYWQgb2YgbWFnaWMgdmFsdWUgMS4KCShjcF9wYXJzZXJfY2xhc3NfbmFtZSk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9sb29rdXBfbmFtZSk6IExpa2V3aXNlLgoKMjAwNS0xMi0wMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RlY2xhcmF0aW9uKTogU2V0IHRva2VuMi50eXBlIHRvIENQUF9FT0YsCglub3QgUklEX01BWC4KCjIwMDUtMTEtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMTEyMwoJKiBjcC1naW1wbGlmeS5jIChjcF9nZW5lcmljaXplX3IpOiBEb24ndCBkZXJlZmVyZW5jZSBpbnZpc2libGUgcmVmZXJlbmNlCglwYXJtcyBpbiBhIHRodW5rLgoKMjAwNS0xMS0zMCAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfeF91bmFyeV9vcCk6IENvcnJlY3Qgc3BlbGxpbmcgaW4gZXJyb3IgbWVzc2FnZS4KCjIwMDUtMTEtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxMTY2CgkqIGNsYXNzLmMgKGNoZWNrX2ZpZWxkX2RlY2xzKTogT25seSBzZXQgREVDTF9QQUNLRUQgb24gYSBmaWVsZAoJd2hlbiBpdHMgbmF0dXJhbCBhbGlnbm1lbnQgaXMgPiBCSVRTX1BFUl9VTklULgoKMjAwNS0xMS0yNyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjQ5NzkKCSogY3AtdHJlZS5oIChERUNMX01BSU5fUCk6IFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbi4KCjIwMDUtMTEtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBsZXguYzogVXBkYXRlIGZvciBwcmFnbWFfbGV4IHJlbmFtZS4KCSogcGFyc2VyLmM6IExpa2V3aXNlLgoKMjAwNS0xMS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvOTI3OAoJKiBkZWNsLmMgKGdyb2twYXJtcyk6IERvIG5vdCBhbGxvdyB0eXBlZGVmLW5hbWVzIGluIGEgJyh2b2lkKScKCXBhcm1saXN0LgoKMjAwNS0xMS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yX3VuaW9uKTogUmVtb3ZlIGNoZWNrIGZvcgoJdW5uYW1lZCB1bmlvbiBtZW1iZXJzLgoKMjAwNS0xMS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIG5hbWUtbG9va3VwLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBNZXJnZSB0d28gaWYncy4KCjIwMDUtMTEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IENsZWFuLXVwLgoKMjAwNS0xMS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIHB0LmMgKHRlbXBsYXRlX2NsYXNzX2RlcHRoX3JlYWwpOiBSZW1vdmUuIE1vdmUgZnVuY3Rpb25hbGl0eSB0byAuLi4KCSh0ZW1wbGF0ZV9jbGFzc19kZXB0aCk6IC4uLiBoZXJlLCByZXBsYWNpbmcgY291bnRfc3BlY2lhbGl6YXRpb25zCgl3aXRoIDAuICBBZGp1c3QgY29tbWVudC4KCjIwMDUtMTEtMjQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCURpcmsgTXVlbGxlciA8ZG11ZWxsZXJAc3VzZS5kZT4KCglQUiBjKysvMTQwMjQKCSogdHlwZWNrLmMgKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3RfMSk6IFVzZQoJc3RyaWN0X2FsaWFzaW5nX3dhcm5pbmcuCgoyMDA1LTExLTIzICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglQUiBjKysvMjQyMzUKCSogcHQuYyAoY2hlY2tfaW5zdGFudGlhdGVkX2FyZ3MpOiBSZXdvcmQgZGlhZ25vc3RpYyBtZXNzYWdlIGFib3V0Cgl0ZW1wbGF0ZSBhcmd1bWVudCBpbnZvbHZpbmcgbG9jYWwgdHlwZXMuCgoyMDA1LTExLTIzICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglQUiBjKysvMjE2NjcKCSogdHlwZWNrLmMgKGJ1aWxkX2FycmF5X3JlZik6IEF2b2lkIGNvZGUgZHVwbGljYXRlLiAgVXNlIGNvbW1vbgoJQy9DKysgZGlhZ25vc3RpYyBmdW5jdGlvbiB3YXJuX2FycmF5X3N1YnNjcmlwdF93aXRoX3R5cGVfY2hhci4KCjIwMDUtMTEtMjEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCVBSIGMrKy8yMjIzOAoJKiBlcnJvci5jIChyZXNvbHZlX3ZpcnR1YWxfZnVuX2Zyb21fb2JqX3R5cGVfcmVmKTogTmV3LgoJKGR1bXBfZXhwcik6IFVzZSBpdCBpbiA8Y2FzZSBDQUxMX0VYUFI+LgoKMjAwNS0xMS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNwLW9iamNwLWNvbW1vbi5oLCBuYW1lLWxvb2t1cC5jLCBuYW1lLWxvb2t1cC5oOiBSZXZlcnQgMTEtMTggcGF0Y2guCgoJKiBuYW1lLWxvb2t1cC5jIChsb29rdXBfbmFtZSk6IFJlbW92ZSBwcmVmZXJfdHlwZSBhcmd1bWVudC4KCShsb29rdXBfbmFtZV9wcmVmZXJfdHlwZSk6IE5ldy4KCSogZGVjbC5jIChsb29rdXBfYW5kX2NoZWNrX3RhZyk6IFVzZSB0aGVtLgoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogTGlrZXdpc2UuCgkqIG5hbWUtbG9va3VwLmggKGxvb2t1cF9uYW1lX3ByZWZlcl90eXBlKTogTmV3LgoJKGxvb2t1cF9uYW1lKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoKMjAwNS0xMS0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvODM1NQoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBTZXQgdXAgREVDTF9URU1QTEFURV9JTkZPIGJlZm9yZSBjYWxsaW5nCglzZXRfZGVjbF9uYW1lc3BhY2UuCgkqIG5hbWUtbG9va3VwLmMgKHNldF9kZWNsX25hbWVzcGFjZSk6CgoyMDA1LTExLTE4ICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT0tTX0xPT0tVUF9OQU1FKTogQWRkLgoJKiBuYW1lLWxvb2t1cC5jIChsb29rdXBfbmFtZV90d28pOiBSZW1vdmUuCgkobG9va3VwX25hbWVfb25lKTogQWRkLgoJKiBuYW1lLWxvb2t1cC5oIChsb29rdXBfbmFtZV90d28pOiBSZW1vdmUuCgkobG9va3VwX25hbWVfb25lKTogQWRkLgoKMjAwNS0xMS0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJUFIgYysrLzI0NTgwCgkqIG1ldGhvZC5jIChsb2NhdGVfY29weSk6IEFsc28gdXNlIHNraXBfYXJ0aWZpY2lhbF9wYXJtcyBoZXJlLgoJKHN5bnRoZXNpemVfZXhjZXB0aW9uX3NwZWMpOiBVc2UgQ0xBU1NfVFlQRV9QIHJhdGhlciB0aGFuIGNoZWNraW5nCglmb3IgUkVDT1JEX1RZUEUuCgkobG9jYXRlX2N0b3IpOiBBYm9ydCBpZiB3ZSBmYWlsIHRvIGZpbmQgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgoKMjAwNS0xMS0xNSAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBuYW1lLWxvb2t1cC5jIChsb29rdXBfbmFtZV90d28pOiBBZGQuCgkqIG5hbWUtbG9va3VwLmg6IExpa2V3aXNlLgoKMjAwNS0xMS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQ2NjcKCSogdHlwZWNrLmMgKGNoZWNrX2Zvcl9jYXN0aW5nX2F3YXlfY29uc3RuZXNzKTogVXNlIHRoZSBkaWFnX2ZuLgoJKGJ1aWxkX2NvbnN0X2Nhc3RfMSk6IENhbGwgaXQsIGZvciBDLXN0eWxlIGNhc3RzLgoKMjAwNS0xMS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQ2ODcKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBEb24ndCBjaGVjayBmb3IgQyBsaW5rYWdlLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogTGlrZXdpc2UuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBDaGVjayBoZXJlLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9kZWNsYXJhdGlvbl9hZnRlcl9leHBvcnQpOiBBbmQgaGVyZS4KCgkqIHBhcnNlci5jIChjcF9sZXhlcl9nZXRfcHJlcHJvY2Vzc29yX3Rva2VuKTogSW5pdGlhbGl6ZSBrZXl3b3JkCglmaWVsZC4KCjIwMDUtMTEtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yNDU4MAoJKiBtZXRob2QuYyAobG9jYXRlX2N0b3IpOiBTa2lwIGFsbCBhcnRpZmljaWFsIHBhcm1zLCBub3QganVzdAoJJ3RoaXMnLgoKMjAwNS0xMS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnNlci5jIChlb2ZfdG9rZW4pOiBBZGQgaW5pdGlhbGl6ZXIgZm9yIGFtYmlndW91c19wLgoKMjAwNS0xMS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQ4MTcKCSogZGVjbC5jIChjaGVja19yZWRlY2xhcmF0aW9uX2V4Y2VwdGlvbl9zcGVjaWZpY2F0aW9uKTogTmV3CglmdW5jdGlvbi4KCShkdXBsaWNhdGVfZGVjbHMpOiBVc2UgaXQuCgkqIGVycm9yLmMgKGZuZGVjbF90b19zdHJpbmcpOiBQcmludCB0aGUgdGVtcGxhdGUgcGFyYW1ldGVyIGxpc3QuCgoJUFIgYysrLzIwMjkzCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X3N0YXRlbWVudCk6IFByaW50IHF1YWxpZnlpbmcgc2NvcGVzCglmb3IgbmFtZXNwYWNlcy4KCShwcF9jeHhfb3JpZ2luYWxfbmFtZXNwYWNlX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCSogbmFtZS1sb29rdXAuYyAoYW1iaWd1b3VzX2RlY2wpOiBEb24ndCBpc3N1ZSBlcnJvciBtZXNzYWdlczsKCWluc3RlYWQgcmV0dXJuIGxpc3RzIG9mIGFtYmlndW91cyBjYW5kaWRhdGVzLgoJKHNlbGVjdF9kZWNsKTogSGFuZGxlIGFtYmlndW91cyBuYW1lc3BhY2UgbG9va3Vwcy4KCSogcGFyc2VyLmMgKGNwX3Rva2VuKTogQWRkIGFtYmlndW91c19wLgoJKGNwX2xleGVyX2dldF9wcmVwcm9jZXNzb3JfdG9rZW4pOiBTZXQgaXQuCgkoY3BfcGFyc2VyX2RpYWdub3NlX2ludmFsaWRfdHlwZV9uYW1lKTogQXZvaWQgZHVwbGljYXRlIG1lc3NhZ2VzCgl3aGVuIGEgcXVhbGlmaWVkIG5hbWUgdXNlcyBhbiBpbnZhbGlkIHNjb3BlLgoJKGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBQcmludCBhbWJpZ3VvdXMgY2FuZGlkYXRlcy4KCShjcF9wYXJzZXJfdHlwZV9wYXJhbWV0ZXIpOiBBZGp1c3QgY29tbWVudCB0byByZWZsZWN0IG5ldwoJcGFyYW1ldGVyIG5hbWUgZm9yIGNwX3BhcnNlcl9sb29rdXBfbmFtZS4KCShjcF9wYXJzZXJfdGVtcGxhdGVfYXJndW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZWxhYm9yYXRlZF90eXBlX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9uYW1lc3BhY2VfbmFtZSk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9jbGFzc19uYW1lKTogUHJpbnQgYW1iaWd1b3VzIGNhbmRpZGF0ZXMuCgkoY3BfcGFyc2VyX2xvb2t1cF9uYW1lKTogUmVuYW1lIGFtYmlndW91c19wIHBhcmFtZXRlciB0bwoJYW1iaWd1b3VzX2RlY2xzLiAgVXNlIGl0IHRvIHJldHVybiBhIGxpc3Qgb2YgYW1iaWd1b3VzIGNhbmRpYXRlcwoJd2hlbiBhIGxvb2t1cCBpcyBhbWJpZ3VvdXMuCgkoY3BfcGFyc2VyX2xvb2t1cF9uYW1lX3NpbXBsZSk6IEFkanVzdCBjb21tZW50IHRvIHJlZmxlY3QgbmV3CglwYXJhbWV0ZXIgbmFtZSBmb3IgY3BfcGFyc2VyX2xvb2t1cF9uYW1lLgoKMjAwNS0xMS0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzI0NzgwCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogU2V0IFRZUEVfTkVFRFNfQ09OU1RSVUNUSU5HCglhbmQgVFlQRV9IQVNfTk9OVFJJVklBTF9ERVNUUlVDVE9SIGZsYWdzIGZvciBhbGwgdmFyaWFudHMKCW9mIGFycmF5IHR5cGUuCgoJUFIgYysrLzI0NzYxCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FzbV9vcGVyYW5kcyk6IE5ldyBmdW5jdGlvbi4KCSh0c3Vic3RfZXhwcikgPGNhc2UgQVNNX0VYUFI+OiBVc2UgaXQuCgoyMDA1LTExLTA4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMTk0NTAKCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBJc3N1ZSBkaWFnbm9zdGljcyBhYm91dAoJb2xkZGVjbCBhbmQgbmV3ZGVjbCBkaXNhZ3JlZW1lbnQgb24gX190aHJlYWQgcHJvcGVydHkuCgkoZ3Jva2RlY2xhcmF0b3IpOiBTZXQgREVDTF9UTFNfTU9ERUwgb24gY2xhc3Mgc3RhdGljIHZhcmlhYmxlcy4KCjIwMDUtMTEtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMTEyMwoJKiBtZXRob2QuYyAodXNlX3RodW5rKTogVXNlIGJ1aWxkX2NwbHVzX25ldyBpbnN0ZWFkIG9mCglmb3JjZV90YXJnZXRfZXhwci4KCjIwMDUtMTEtMDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoJICAgIEphbWVzIEEuIE1vcnJpc29uIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8xNzI1NgoJKiBkZWNsMi5jIChjcF9maW5pc2hfZmlsZSk6IEZpeCBjb25kaXRpb25zIGZvciB1bmRlZmluZWQgd2FybmluZy4KCVNldCBUUkVFX05PX1dBUk5JTkcgaW5zdGVhZCBvZiBUUkVFX1BVQkxJQy4KCSogcHQuYyAoaW5zdGFudGlhdGVfcGVuZGluZ190ZW1wbGF0ZXMpOiBTZXQgREVDTF9JTklUSUFMIHRvIGF2b2lkCglhIHdhcm5pbmcgb24gYSBmdW5jdGlvbiB3ZSBkaWRuJ3QgaW5zdGFudGlhdGUgYmVjYXVzZSBvZiBleGNlc3NpdmUKCXJlY3Vyc2lvbi4KCjIwMDUtMTEtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChyZWNvcmRfc3Vib2JqZWN0X29mZnNldHMpOiBEb24ndCByZWNvcmQgb2Zmc2V0cyBwYXN0CgliaWdnZXN0IGVtcHR5IGNsYXNzIGZvciBub24tZW1wdHkgYmFzZSBjbGFzc2VzLgoJKGxheW91dF9jbGFzc190eXBlKTogVXNlIFRZUEVfU0laRV9VTklULCBub3QgVFlQRV9TSVpFLCB3aGVuCglrZWVwaW5nIHRyYWNrIG9mIHRoZSBzaXplIG9mIGVtcHR5Y2xhc3Nlcy4KCglQUiBjKysvMjEzMDgKCSogY2xhc3MuYyAoc2l6ZW9mX2JpZ2dlc3RfZW1wdHlfY2xhc3MpOiBOZXcgdmFyaWFibGUuCgkocmVjb3JkX3N1Ym9iamVjdF9vZmZzZXRzKTogRG9uJ3QgcmVjb3JkIG9mZnNldHMgcGFzdCBiaWdnZXN0CgllbXB0eSBjbGFzcyBmb3IgZGF0YSBtZW1iZXJzLiAgUmVwbGFjZSB2YmFzZXNfcCBwYXJhbWV0ZXIgd2l0aAoJaXNfZGF0YV9tZW1iZXIgcGFyYW1ldGVyLgoJKGJ1aWxkX2Jhc2VfZmllbGQpOiBBZGp1c3QgY2FsbC4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IExpa2V3aXNlLiAgTWFpbnRhaW4KCXNpemVvZl9iaWdnZXN0X2VtcHR5X2NsYXNzLgoKMjAwNS0xMS0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jLCBpbml0LmMsIHR5cGVjay5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDUtMTEtMDQgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBjKysvMjI0ODcKCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IEJ1aWxkIGNvbXBhcmlzb24gb2YgbWF0Y2hpbmcKCXR5cGVzLgoKMjAwNS0xMS0wMyAgSm9zaCBDb25uZXIgIDxqY29ubmVyQGFwcGxlLmNvbT4KCglQUiBjKysvMTk5ODkKCXB0LmMgKHRzdWJzdCk6IEFjY2VwdCB6ZXJvLWxlbmd0aCBhcnJheSBpZiB0Zl9lcnJvciBpcyBzZXQKCWluIGNvbXBsYWluIGZsYWdzLiAgQ2hhbmdlIGVycm9yIG1lc3NhZ2UgZm9yIG5lZ2F0aXZlLQoJbGVuZ3RoIGFycmF5LgoKMjAwNS0xMS0wNCAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGNwX2NwcF9lcnJvciksIGVycm9yLmMgKGNwX2NwcF9lcnJvcik6IFRha2UgdmFfbGlzdCoKCXBhcmFtZXRlci4KCjIwMDUtMTEtMDMgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xNzk2NAoJKiBlcnJvci5jIChjcF9jcHBfZXJyb3IpOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaCAoY3BfY3BwX2Vycm9yKTogRGVjbGFyZS4KCSogcGFyc2VyLmMgKGNwX2xleGVyX25ld19tYWluKTogU2V0IENQUCBvcHRpb24gY2xpZW50X2RpYWdub3N0aWMKCWFuZCBlcnJvciBjYWxsYmFjayBhZnRlciBsZXhpbmcuCgoyMDA1LTExLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTYyNwoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IFVwZGF0ZSBpbmxpbmUgZmxhZ3Mgb24gY2xvbmVzLnkKCjIwMDUtMTEtMDMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMrKy8yNDU4MgoJKiBkZWNsLmMgKGRlY2xhcmVfbG9jYWxfbGFiZWwpOiBSZXR1cm4gMCBmb3IgdmFyaWFibGVzCgl3aXRoIGVycm9yX21hcmtfbm9kZSBhcyB0aGVpciB0eXBlcy4KCjIwMDUtMTEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyNDM0CgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IERvIGJhZCBjb252ZXJzaW9ucywgaWYgdGhlcmUncwoJbm8gb3RoZXIgY2hvaWNlLgoKCVBSIGMrKy8yNDU2MAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3Bvc3RmaXhfZG90X2RlcmVmX2V4cHJlc3Npb24pOiBJbXByb3ZlIGVycm9yCgltZXNzYWdlIGZvciB1c2Ugb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbnMgb24gTEhTIG9mICIuIiBvcGVyYXRvci4KCglQUiBjKysvMTkyNTMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBVc2UKCWNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyIHRvIGhhbmRsZSB0eXBlbmFtZS10eXBlcyBpbgoJZnVuY3Rpb25hbCBjYXN0cy4KCShjcF9wYXJzZXJfZW5jbG9zZWRfYXJndW1lbnRfbGlzdCk6IFNraXAgYWhlYWQgdG8gdGhlIGVuZCBvZiB0aGUKCXRlbXBsYXRlIGFyZ3VtZW50IGxpc3QgaWYgdGhlIGNsb3NpbmcgIj4iIGlzIG5vdCBmb3VuZC4KCglQUiBjKysvMjQ1NjkKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFVzZSBjcF9maW5pc2hfZGVjbCwgbm90CglmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wuCgoyMDA1LTEwLTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFJlbW92ZSB0aGUgc2V0dGluZwoJb2YgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0eXBlCglvZiBtYWluIGFmdGVyIGVycm9yaW5nIGFib3V0IG11c3QgcmV0dXJuaW5nCglpbnQuCgoyMDA1LTEwLTI4ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBDKysvMjMyMjkKCSogZGVjbC5jIChncm9rZm5kZWNsKTogQ3JlYXRlIGEgbmV3IGZ1bmN0aW9uIHR5cGUKCWFmdGVyIGVycm9yaW5nIG91dCBhYm91dCBtYWluIG5vdCByZXR1cm5pbmcgaW50LgoKMjAwNS0xMC0yOCAgSm9zaCBDb25uZXIgIDxqY29ubmVyQGFwcGxlLmNvbT4KCglQUiBjKysvMjIxNTMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9tZW1iZXJfZGVjbGFyYXRpb24pOiBEZXRlY3QgYW5kIGhhbmRsZQoJYSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbi4KCjIwMDUtMTAtMjggIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIEMrKy8yMzQyNgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBDaGVjayB0aGF0IHRoZSBkZWNsIGlzIGFuCgllcnJvcl9tYXJrX25vZGUgYmVmb3JlIGdldHRpbmcgdGhlIHR5cGUuCglSZW1vdmUgdGhlIGNoZWNrIGZvciB0aGUgZGVjbCdzIHR5cGUgYmVpbmcgYW4KCWVycm9yX21hcmtfbm9kZS4KCjIwMDUtMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0MjYwCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogUGFzcyBhdHRyaWJ1dGVzIHRvCglncm9rZmllbGQuCgoyMDA1LTEwLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMjYxOAoJKiBzZWFyY2guYyAoYWNjZXNzaWJsZV9wKTogQ2hlY2sgYWNjZXNzIGluIHRoZSBvdXRlcm1vc3Qgc2V0IG9mCgl0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKMjAwNS0xMC0yMCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEZpeCBhbWJpZ3VvdXMgcGVkd2FybiBtZXNzYWdlLgoKMjAwNS0xMC0xOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjIyOTMKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlamVjdCB1bnF1YWxpZmllZCBkZXN0cnVjdG9ycyBpbgoJZnJpZW5kIGRlY2xhcmF0aW9ucy4KCjIwMDUtMTAtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzMjkzCgkqIHB0LmMgKGNvbnZlcnRfdGVtcGxhdGVfYXJndW1lbnQpOiBVc2UgY2Fub25pY2FsIHR5cGUgdmFyaWFudHMgaW4KCXRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucy4KCjIwMDUtMTAtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxMzgzCgkqIG5hbWUtbG9va3VwLmMgKGFyZ19hc3NvYyk6IFRlbXBsYXRlIGFyZ3MgY2FuIGJlIG51bGwgaW4gYQoJdGVtcGxhdGUtaWQtZXhwci4KCglQUiBjKysvMjI2MDQKCSogY2xhc3MuYyAodXBkYXRlX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBEb24ndCBwcm9jZXNzIGludmFsaWQKCWNvdmFyaWFudCBvdmVycmlkZXJzLgoKCVBSIGMrKy8yMzExOAoJKiBjcC10cmVlLmggKGFkZF9tZXRob2QpOiBBZGQgcmV0dXJuIHZhbHVlLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogUmV0dXJuIHN1Y2Nlc3MgaW5kaWNhdG9yLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbik6IERvbid0IGFkZCBhbiBpbnZhbGlkCgltZXRob2QgdG8gdGhlIG1ldGhvZCBsaXN0LgoKMjAwNS0xMC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE5MDgKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBEbyBub3Qgc2hvdyBWVFQgcGFyYW1ldGVycyB0bwoJdGhlIHVzZXIuCgoyMDA1LTEwLTE3ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMzQ0MAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3N0YXRlbWVudCk6IElmIHRoZSBwYXJzZXIgcmVhY2hlZCBDUFBfRU9GLAoJb25seSBjb21wbGFpbiBhYm91dCBtaXNzaW5nIHN0YXRlbWVudC4KCjIwMDUtMTAtMTcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI0Mzg2CgkqIGNwLXRyZWUuaCAoQkFTRUxJTktfUVVBTElGSUVEX1ApOiBOZXcuCgkqIHB0LmMgKHRzdWJzdF9jb3B5X2FuZF9idWlsZCk6IDxDQUxMX0VYUFIgY2FzZT46IFVzZSBpdC4KCSogdHlwZWNrLmMgKGZpbmlzaF9jbGFzc19tZW1iZXJfYWNjZXNzX2V4cHIpOiBTZXQgaXQuCgoJUFIgYysrLzIxMzUzCgkqIGRlY2wuYyAoY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IERvbid0IGNoZWNrCglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wgb3IgdXNlc190ZW1wbGF0ZV9wYXJtcyBoZXJlLgoJKGdyb2twYXJtcyk6IE9ubHkgY2FsbCBjaGVja19kZWZhdWx0X2FyZ3VtZW50IHdoZW4gbm90IHByb2Nlc3NpbmcKCWEgdGVtcGxhdGUgZGVjbC4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfZGVmYXVsdF9hcmcpOiBDYWxsCgljaGVja19kZWZhdWx0X2FyZ3VtZW50IHdoZW4gbm90IHByb2Nlc3NpbmcgYSB0ZW1wbGF0ZSBkZWNsLgoKMjAwNS0xMC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQzODkKCSogZGVjbDIuYyAobWFya191c2VkKTogVXNlIHVzZXNfdGVtcGxhdGVfcGFybXMgaW5zdGVhZCBvZgoJZGVwZW5kZW50X3R5cGVfcC4KCSogaW5pdC5jIChjb25zdGFudF92YWx1ZV8xKTogSGFuZGxlIHVuaW5zdGFudGlhdGVkIHRlbXBsYXRlcwoJc3BlY2lhbGx5LgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogQWRkIHNhbml0eSBjaGVjay4KCjIwMDUtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyMTczCgkqIHR5cGVjay5jIChjaGVja190ZW1wbGF0ZV9rZXl3b3JkKTogRml4IHRoaW5rby4KCjIwMDUtMTAtMTYgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGMrKy8yMzk1OQoJKiBkZWNsLmMgKHBvcF9zd2l0Y2gpOiBPbmx5IGNhbGwgY19kb19zd2l0Y2hfd2FybmluZ3MKCXdoZW4gbm90IHByb2Nlc3NpbmcgdGVtcGxhdGVzLgoKMjAwNS0xMC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjIxNzMKCSogY3AtdHJlZS5oIChRVUFMSUZJRURfTkFNRV9JU19URU1QTEFURSk6IE5ldyBtYWNyby4KCShjaGVja190ZW1wbGF0ZV9rZXl3b3JkKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9pZF9leHByZXNzaW9uKTogQ2hhbmdlIHByb3RvdG95cGUuCgkoZmluaXNoX3F1YWxpZmllZF9pZF9leHByKTogQ2hhbmdlIHByb3RvdHlwZS4KCShidWlsZF9xdWFsaWZpZWRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogVXNlIGJ1aWxkX3F1YWxpZmllZF9uYW1lLgoJKiBtYW5nbGUuYyAod3JpdGVfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbik6IFJlbW92ZSBxdWFsaWZ5aW5nX2NsYXNzCglwYXJhbWV0ZXIuICBBZGQgYWRkcmVzc19wIGFuZCB0ZW1wbGF0ZV9hcmdfcC4gIFVzZQoJYnVpbGRfcXVhbGlmaWVkX25hbWUuCgkoY3BfcGFyc2VyX2lkX2V4cHJlc3Npb24pOiBEZWZhdWx0ICp0ZW1wbGF0ZV9wIHRvCgl0ZW1wbGF0ZV9rZXl3b3JkX3AuICBDaGVjayBmb3IgaW52YWxpZCB1c2VzIG9mIHRoZSB0ZW1wbGF0ZQoJa2V5d29yZC4KCShjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogRWxpbWluYXRlIHNwZWNpYWwgaGFuZGxpbmcgZm9yCglxdWFsaWZpZWQgbmFtZXMuICBBZGp1c3QgY2FsbCB0byBjcF9wYXJzZXJfcHJpbWFyeV9leHByZXNzaW9uLgoJKGNwX3BhcnNlcl9wb3N0Zml4X2RvdF9kZXJlZl9leHByZXNzaW9uKTogQWRqdXN0IGNhbGwgdG8KCWNwX3BhcnNlcl9pZF9leHByZXNzaW9uIGFuZCBmaW5pc2hfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByLgoJKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudF9saXN0KTogQWRkIGNvbW1lbnQuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2FyZ3VtZW50KTogQWRqdXN0IHVzZSBvZgoJY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbi4gIFJlbW92ZSBjYWxsIHRvCglmaW5pc2hfcXVhbGlmaWVkX2lkX2V4cHIuCgkoY3BfcGFyc2VyX2xvb2t1cF9uYW1lKTogVXNlIGJ1aWxkX3F1YWxpZmllZF9uYW1lLgoJKiBwdC5jICh0c3Vic3QpOiBVc2UgYnVpbGRfcXVhbGlmaWVkX25hbWUuCgkodHN1YnN0X3F1YWxpZmllZF9pZCk6IExpa2V3aXNlLiAgQWRqdXN0IGNhbGwgdG8KCWZpbmlzaF9xdWFsaWZpZWRfaWRfZXhwci4KCSh0c3Vic3RfY29weSk6IFVzZSBidWlsZF9xdWFsaWZpZWRfbmFtZS4KCSh0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBBZGp1c3RzIGNhbGwgdG8gZmluaXNoX2lkX2V4cHJlc3Npb24gYW5kCglmaW5pc2hfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX25vbl9zdGF0aWNfZGF0YV9tZW1iZXIpOiBVc2UKCWJ1aWxkX3F1YWxpZmllZF9uYW1lLgoJKGZpbmlzaF9xdWFsaWZpZWRfaWRfZXhwcik6IEFkZCB0ZW1wbGF0ZV9wIGFuZCB0ZW1wbGF0ZV9hcmdfcAoJcGFyYW1ldGVycy4KCShmaW5pc2hfaWRfZXhwcmVzc2lvbik6IFJlbW92ZSBxdWFsaWZpeWluZ19jbGFzcyBwYXJhbWV0ZXIuICBBZGQKCXRlbXBsYXRlX3AsIGRvbmUsIGFkZHJlc3NfcCwgYW5kIHRlbXBsYXRlX2FyZ19wLiAgVXNlCglidWlsZF9xdWFsaWZpZWRfbmFtZS4gIEFkanVzdCBjYWxscyB0bwoJZmluaXNoX2NsYXNzX21lbWJlcl9hY2Vzc19leHByLgoJKiB0cmVlLmMgKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoY2hlY2tfdGVtcGxhdGVfa2V5d29yZCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByKTogQWRkIHRlbXBsYXRlX3AgYXJndW1lbnQuICBDaGVjawoJZm9yIGludmFsaWQgdXNlcyBvZiB0aGUgdGVtcGxhdGUga2V5d29yZC4KCjIwMDUtMTAtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxMzQ3CgkqIGNsYXNzLmMgKG1heWJlX3dhcm5fYWJvdXRfb3Zlcmx5X3ByaXZhdGVfY2xhc3MpOiBMYXp5Cgljb25zdHJ1Y3RvcnMgYXJlIHB1YmxpYy4KCjIwMDUtMTAtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5NTY1CgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBSZWx5IG9uIGNvbnZlcnRfYW5kX2NoZWNrIHRvIGlzc3VlCgl3YXJuaW5ncyBhYm91dCBvdmVyZmxvdyBhbmQgY29udmVyc2lvbiB0byB1bnNpZ25lZC4KCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IFVzZSB0aGUgbG9jYXRpb24gb2YgdGhlIGVudW1lcmF0b3JzLCBub3QKCXRoZSBjbG9zaW5nIGJyYWNlIG9mIHRoZSBlbnVtZXJhdGlvbiwgd2hlbiByZXBvcnRpbmcgd2FybmluZ3MKCWFib3V0IGNvbnZlcnNpb25zLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBVc2UgZXJyb3JfbWFya19ub2RlIGZvciBlcnJvbmVvdXMgdmFsdWVzLgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogUmVtb3ZlIHJlZmVyZW5jZSB0byAic2lnbmF0dXJlIHBvaW50ZXIiCglmcm9tIGNvbW1lbnQuCgoyMDA1LTEwLTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xNzc5NgoJKiBvcHRpbWl6ZS5jICh1cGRhdGVfY2xvbmVkX3Bhcm0pOiBBZGQgRklSU1QgcGFyYW1ldGVyLiBVc2UgaXQuCgkobWF5YmVfY2xvbmVfYm9keSk6IFRyYWNrIHRoZSBmaXJzdCBjbG9uZS4KCjIwMDUtMTAtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzOTg0CgkqIGNsYXNzLmMgKGJ1aWxkX2Jhc2VfcGF0aCk6IFRoZSB2dGFibGUgaXMgYWx3YXlzIHRoZSBmaXJzdCB0aGluZwoJaW4gdGhlIHZ0dC4KCjIwMDUtMTAtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwNzIxCgkqIGNwLXRyZWUuaCAoREVDTF9OT05UUklWSUFMTFlfSU5JVElBTElaRURfUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBNZXJnZSBpdCBpbnRvIG5ldyBkZWNsYXJhdGlvbnMuCgkoZGVjbF9qdW1wX3Vuc2FmZSk6IFVzZSBpdCwgcmF0aGVyIHRoYW4gREVDTF9JTklUSUFMLgoJKGNwX2ZpbmlzaF9kZWNsKTogU2V0IGl0LCB3aGVuIGFwcHJvcHJpYXRlLgoKCVBSIGMrKy8yMjE4MAoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IENvcnJlY3QgcHJldHR5LXByaW50aW5nIG9mCglkZXN0cnVjdG9yIG5hbWVzLgoJKiBwdC5jICh0c3Vic3RfcXVhbGlmaWVkX2lkKTogUmVjb2duaXplIGludmFsaWQgdXNlcyBvZiAiflQiIGFzIGFuCglpZGVudGlmaWVyLgoKCVBSIGMrKy8yMzY5NAoJKiBkZWNsLmMgKHN0YXJ0X21ldGhvZCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgZm9yIGVycm9ycy4KCglQUiBjKysvMjMzMDcKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBDb21wbGFpbiBhYm91dCBhdHRlbXB0cyB0bwoJZGVjbGFyZSB0ZW1wbGF0ZSB2YXJpYWJsZXMuCgoJUFIgYysrLzIyMzUyCgkqIHB0LmMgKHRzdWJzdF90ZW1wbGF0ZV9wYXJtcyk6IFNldCBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wgd2hpbGUKCXByb2Nlc3NpbmcgdGhlIHBhcmFtZXRlcnMuCgkodHN1YnN0X2RlY2wpOiBTZXQgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsIHdoZW4gc3Vic3RpdHV0aW5nIGludG8KCWEgVEVNUExBVEVfREVDTC4KCglQUiBjKysvMjI0MDUKCSogcHQuYyAobW9zdF9zcGVjaWFsaXplZF9pbnN0YW50aWF0aW9uKTogUm9idXN0aWZ5LgoKCVBSIGMrKy8yMjQ2NAoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lkX2V4cHJlc3Npb24pOiBJc3N1ZSBlcnJvcnMgYWJvdXQgdXNlcyBvZgoJbG9jYWwgdmFyaWFibGVzIGluIGNvbnRhaW5pbmcgZnVuY3Rpb25zIGV2ZW4gaW4gdGVtcGxhdGVzLgoKMjAwNS0xMC0xMiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiB0YXJnZXQvMjE4MDEKCVBSIHRhcmdldC8yMzU4OQoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDYWxsCgl0YXJnZXRtLmN4eC5hZGp1c3RfY2xhc3NfYXRfZGVmaW5pdGlvbi4KCgoyMDA1LTEwLTEyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTU5MgoJKiBwdC5jIChidWlsZF9ub25fZGVwZW5kZW50X2V4cHIpOiBEb24ndCB3cmFwIGEgQ09NUE9ORU5UX1JFRgoJd2l0aCBhbHJlYWR5IGxvb2tlZCB1cCBtZW1iZXIgZnVuY3Rpb25zLiAgQXNzZXJ0IHdlJ3JlIG5vdAoJcmV0dXJuaW5nIGEgTk9OX0RFUEVOREVOVF9FWFBSIHdpdGggdW5rbm93biB0eXBlLgoJKiB0eXBlY2suYyAoZmluaXNoX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwcik6ICBXZSBjYW4gZ2V0Cglub24tdGVtcGxhdGUtaWQtZXhwciBiYXNlbGlua3MuICBJZiB0aGUgbG9va3VwIGZpbmRzIGEgYmFzZWxpbmssCglyZW1lbWJlciBpdCBldmVuIGluc2lkZSB0ZW1wbGF0ZXMuCgoJUFIgYysrLzIzNzk3CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZnVuY3Rpb25hbF9jYXN0KTogQ29wZSB3aGVuIFRZUEUgaXMgbm90IGEKCVRZUEVfREVDTC4gIFVzZSBkZXBlbmRlbnRfdHlwZV9wIHRvIGNoZWNrIHR5cGUuCgkqIHB0LmMgKHVzZXNfdGVtcGxhdGVfcGFybXNfcCk6IFVzZSBkZXBlbmRlbnRfdHlwZV9wIGZvciBhCglUWVBFX0RFQ0wuCgkodHlwZV9kZXBlbmRlbnRfZXhwcmVzc2lvbl9wKTogQXNzZXJ0IHdlJ3ZlIG5vdCBiZWVuIGdpdmVuIGEKCVRZUEVfREVDTC4KCglQUiBjKysvMjExMTcKCSogZGVjbC5jIChjaGVja19mdW5jdGlvbl90eXBlKTogQ29ycmVjdGx5IG92ZXJ3cml0ZSBpbmNvbXBsZXRlCglyZXR1cm4gdHlwZSB3aXRoIHZvaWQgdHlwZS4KCSogdHlwZWNrLmMgKGNoZWNrX3JldHVybl9leHByKTogSWYgdGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgaXMKCXZvaWQsIGRvbid0IHRyeSBhbmQgY29udmVydCBhIHJldHVybiBleHByLgoKMjAwNS0xMC0xMiAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCVBSIGMrKy8yMzczMAoJKiBjYWxsLmMgKGJ1aWxkX29iamVjdF9jYWxsKTogSWYgQklORk8gaXMgTlVMTCwgYnlwYXNzCglsb29rdXBfZm5maWVsZHMgYW5kIHNldCBmbnMgdG8gTlVMTF9UUkVFLgoKMjAwNS0xMC0xMiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCglQUiBjKysvMjQwNTIKCSogZXJyb3IuYyAoZHVtcF9leHByKTogUGFzcyBMQUJFTF9ERUNMIHRvIGR1bXBfZGVjbC4gIFByaW50CglhbiBBRERSX0VYUFIgb2YgYSBMQUJFTF9ERUNMIGFzICYmLgoKMjAwNS0xMC0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTk5NjQKCSogY2xhc3MuYyAod2Fsa19zdWJvYmplY3Rfb2Zmc2V0cyk6IERvbid0IHdhbGsgZXJyb3JfbWFya19ub2RlLgoKMjAwNS0xMC0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCglQUiBjKysvODA1NwoJKiBjdnQuYyAoY29udmVydF90b192b2lkKTogRG9uJ3Qgd2FybiBhYm91dCB1bnVzZWQgdmFsdWVzIHdoZW4KCXByb2Nlc3NpbmcgYSB0ZW1wbGF0ZSBkZWNsYXJhdGlvbi4KCjIwMDUtMTAtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxMDg5CgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBVc2UgZGVjbF9jb25zdGFudF92YWx1ZSwgbm90CglpbnRlZ3JhbF9jb25zdGFudF92YWx1ZS4KCSogaW5pdC5jIChjb25zdGFudF92YWx1ZV8xKTogTmV3IGZ1bmN0aW9uLgoJKGludGVncmFsX2NvbnN0YW50X3ZhbHVlKTogVXNlIGl0LgoJKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBVc2UgZGVjbF9jb25zdGFudF92YWx1ZSwgbm90CglpbnRlZ3JhbF9jb25zdGFudF92YWx1ZS4KCglQUiBjKysvMjEzNjkKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyKTogRG9uJ3QgdHJlYXQKCWNsYXNzIHR5cGVzIGFzIHRlbXBsYXRlcyBpZiB0aGUgdHlwZSBpcyBub3QgYXBwZWFyaW5nIGFzIHBhcnQgb2YgYQoJdHlwZSBkZWZpbml0aW9uIG9yIGRlY2xhcmF0aW9uLgoKMjAwNS0xMC0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQyNzcKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IENhbGwgZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsIGZvcgoJc3RhdGljIGRhdGEgbWVtYmVycy4KCjIwMDUtMTAtMTAgIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AZ2NjLmdudS5vcmc+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM0MzcKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudF9saXN0KTogRG8gbm90IHRyZWF0Cgljb250ZW50cyBvZiBhcmd1bWVudCBsaXN0IGFzIHBhcnQgb2YgYSBjb25zdGFudCBleHByZXNzaW9uLgoKMjAwNS0xMC0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjQxMzkKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERvIG5vdCByZXF1aXJlIHRlbXBsYXRlIHBhcmFtZXRlciBsaXN0cwoJZm9yIGV4cGxpY2l0bHkgc3BlY2lhbGl6ZWQgY2xhc3MuCgkqIGVycm9yLmMgKGR1bXBfYWdncl90eXBlKTogRG8gbm90IGR1bXAgdGVtcGxhdGUgYXJndW1lbnRzIGZvcgoJbm9uLXByaW1hcnkgc3BlY2lhbGl6YXRpb25zLgoJKGR1bXBfZnVuY3Rpb25fbmFtZSk6IExpa2V3aXNlLgoKCVBSIGMrKy8yNDI3NQoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogSW5zdGFudGlhdGUgdGhlIGluaXRpYWxpemVyIG9mCglhIHN0YXRpYyBkYXRhIG1lbWJlciBpbiB0aGUgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdGhlIGNsYXNzCgljb250YWluaW5nIHRoZSBzdGF0aWMgZGF0YSBtZW1iZXIuCgoyMDA1LTEwLTA4ICBKYW1lcyBBLiBNb3JyaXNvbiAgPHBoeXRob25AZ2NjLmdudS5vcmc+CgoJUFIgYysrLzIyMTcyCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKSA8UklEX1RZUEVOQU1FPjogVHJlYXQgbm9udHlwZQoJc2NvcGVzIGFzIG5vbmRlcGVuZGVudC4KCjIwMDUtMTAtMDYgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjYWxsLmMgKHJlc29sdmVfYXJncyk6IFJlbW92ZSByZWR1bmRhbnQgdGVzdC4KCjIwMDUtMTAtMDUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjE0MTkKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI0MTQ2CglQUiB0cmVlLW9wdGltaXphdGlvbi8yNDE1MQoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IENhbGwgcmVhZG9ubHlfZXJyb3IgaWYgb3V0cHV0cyBhcmUKCXJlYWQtb25seS4gIFNldCBBU01fVk9MQVRJTEVfUCBmb3IgYXNtcyB3aXRob3V0IG91dHB1dHMuCgoyMDA1LTEwLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzUxMwoJKiBjYWxsLmMgKGpvdXN0KTogQWRqdXN0IGxlbmd0aCBjb3VudCB0byBtb3JlX3NwZWNpYWxpemVkX2ZuLgoJKiBwdC5jIChtb3JlX3NwZWNpYWxpemVkX2ZuKTogQ29wZSB3aXRoIG5vbi1zdGF0aWMgbWVtYmVyIHZzCglub24tbWVtYmVyLgoKMjAwNS0xMC0wNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgbWlkZGxlLWVuZC8yMzEyNQoJKiBkZWNsLmMgKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogVXNlIHNldF91c2VyX2Fzc2VtYmxlcl9uYW1lCglpbnN0ZWFkIG9mIGNoYW5nZV9kZWNsX2Fzc2VtYmxlcl9uYW1lLgoKMjAwNS0xMC0wMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBlcnJvci5jIChkdW1wX3R5cGUpIDxVTktOT1dOX1RZUEU+OiBQcmludCByZXdvcmRlZCBtZXNzYWdlLgoKMjAwNS0xMC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTc3NzUKCSogcmVwby5jOiBJbmNsdWRlIGZsYWdzLmguCgkoZmluaXNoX3JlcG8pOiBBZGQgLWZyYW5kb20tc2VlZCB0byB0aGUgYXJndW1lbnRzLgoKMjAwNS0xMC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjI2MjEKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9hcmd1bWVudCk6IERvbid0IHR1cm4gIlQ6OmYiIGludG8KCSIoKnRoaXMpLlQ6OmYiLgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBSZW1vdmUgPz8/IGNvbW1lbnQuCgoJUFIgYysrLzIzODQwCgkqIHRyZWUuYyAobHZhbHVlX3BfMSk6IEEgVkFfQVJHX0VYUFIgd2l0aCBjbGFzcyB0eXBlIGlzIGFuIGx2YWx1ZSwKCXdoZW4gY2xhc3MgcnZhbHVlcyBhcmUgbHZhbHVlcy4KCjIwMDUtMDktMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE2NzgyCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbHdheXMgcGVkd2FybiBhYm91dCBvdmVycXVhbGlmaWVkCgltZW1iZXIgbmFtZXMuCgoyMDA1LTA5LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMjE0NwoJKiBuYW1lLWxvb2t1cC5jIChtYXliZV9wcm9jZXNzX3RlbXBsYXRlX3R5cGVfZGVjbGFyYXRpb24pOiBEb24ndAoJdHJlYXQgZm9yd2FyZCBkZWNsYXJhdGlvbnMgb2YgY2xhc3NlcyBhcyB0ZW1wbGF0ZXMganVzdCBiZWNhdXNlCgl3ZSdyZSBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wuCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogQ2xlYXIgREVDTF9URU1QTEFURV9JTkZPIGZvciBmcmllbmQKCWZ1bmN0aW9ucy4KCjIwMDUtMDktMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCVBSIGMrKy8xMzc2NAoJKiBjcC10cmVlLmggKEZVTkNUSU9OX05FRURTX0JPRFlfQkxPQ0spOiBOZXcgbWFjcm8uCgkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX21heWJlX2ZyaWVuZCk6IENoZWNrIGl0LgoJKiBkZWNsLmMgKGJlZ2luX2Z1bmN0aW9uX2JvZHkpOiBEbyBub3RoaW5nIGlmIGl0J3MgZmFsc2UuCgkoZmluaXNoX2Z1bmN0aW9uX2JvZHkpOiBEaXR0by4KCShvdXRlcl9jdXJseV9icmFjZV9ibG9jayk6IE5ldyBmbi4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgaXQuCgoyMDA1LTA5LTI2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8xNTg1NQoJKiBkZWNsMi5jIChkb19zdGF0aWNfZGVzdHJ1Y3Rpb24pOiBSZW1vdmUuCgkoZmluaXNoX3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbik6IExpa2V3aXNlLgoJKERFQ0xfRUZGRUNUSVZFX0lOSVRfUFJJT1JJVFkpOiBOZXcgbWFjcm8uCgkoTkVFRFNfR1VBUkRfUCk6IExpa2V3aXNlLgoJKGRvX3N0YXRpY19pbml0aWFsaXphdGlvbik6IFJlbmFtZSB0bwoJZG9fc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uLiAgUHJvY2VzcyBhbGwKCWluaXRpYWxpemVycy9kZXN0cnVjdG9ycyBhbmQgaGFuZGxlIGNvbW1vbiBjb25kaXRpb25hbGl6aW5nLgoJKHN0YXJ0X3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbik6IFJlbmFtZSB0bwoJb25lX3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbi4gIEhhbmRsZSBvbmx5CglkZWNsLXNwZWNpZmljIGNvbmRpdGlvbmFsaXppbmcuCgkoY3BfZmluaXNoX2ZpbGUpOiBDYWxsIGRvX3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbi4KCjIwMDUtMDktMjIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8yMTk4MwoJKiBjbGFzcy5jIChmaW5kX2ZpbmFsX292ZXJyaWRlcik6IE1vdmUgZGlhZ25vc3RpYyBhYm91dCBubyB1bmlxdWUgZmluYWwKCW92ZXJyaWRlciB0by4uLgoJKHVwZGF0ZV92dGFibGVfZW50cnlfZm9yX2ZuKTogLi4uIGhlcmUuCgoyMDA1LTA5LTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzk5MwoJKiBpbml0LmMgKGludGVncmFsX2NvbnN0YW50X3ZhbHVlKTogVXNlIERFQ0xfSU5URUdSQUxfQ09OU1RBTlRfVkFSX1AuCgoyMDA1LTA5LTIxICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMzk2NQoJKiBjYWxsLmMgKHJlc29sdmVfYXJncyk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUgb24gYXJndW1lbnRzCgl3aG9zZSBUUkVFX1RZUEUgaXMgZXJyb3JfbWFya19ub2RlLgoKMjAwNS0wOS0yMCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzIzOTQ3CgkqIHJ0dGkuYyAoZ2V0X3BzZXVkb190aV9pbml0KTogUmVjb21wdXRlIHRpIHBvaW50ZXIgYWZ0ZXIKCWdldF90aW5mb19wdHIgY2FsbHMuCgoyMDA1LTA5LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzkxNAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2VuY2xvc2VkX3RlbXBsYXRlX2FyZ3VtZW50X2xpc3QpOiBNYWtlIHN1cmUKCXNraXBfZXZhbHVhdGlvbiBpcyBmYWxzZSB3aGVuIHByb2Nlc3NpbmcgdGVtcGxhdGUgYXJndW1lbnRzLgoKCVBSIGMrKy8yMTUxNAoJKiBwdC5jIChjaGVja19pbnN0YW50aWF0ZWRfYXJncyk6IFRyZWF0IHVzZXMgb2YgYW5vbnltb3VzIHR5cGVzIGFzCgljYXVzaW5nIHR5cGUtZGVkdWN0aW9uIGZhaWx1cmUuCgoyMDA1LTA5LTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMjMzNTcKCSogY3AtdHJlZS5kZWYgKFNJWkVPRl9FWFBSLCBBTElHTk9GX0VYUFIpOiBDaGFuZ2UgY29kZSBjbGFzcyB0bwoJdGNjX2V4cHJlc3Npb24uCgoyMDA1LTA5LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzg5NgoJKiBwdC5jICh0c3Vic3RfYWdncl90eXBlKTogTWFrZSBzdXJlIHNraXBfZXZhbHVhdGlvbiBpcyBmYWxzZSB3aGVuCglwcm9jZXNzaW5nIHRlbXBsYXRlIGFyZ3VtZW50cy4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X2luc3RhbnRpYXRpb25fbmFtZXNwYWNlKTogRml4IHR5cG8uCgoJUFIgYysrLzEzMTQwCgkqIGRlY2wuYyAoY2hlY2tfY2xhc3NfbWVtYmVyX2RlZmluaXRpb25fbmFtZXNwYWNlKTogTmV3IGZ1bmN0aW9uLgoJKGdyb2tmbmRlY2wpOiBVc2UgaXQuCgkoZ3Jva3ZhcmRlY2wpOiBMaWtld2lzZS4KCShncm9rZGVjbCk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfaW5zdGFudGlhdGlvbl9uYW1lc3BhY2UpOiBOZXcgZnVuY3Rpb24uCgkocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBDYWxsIGNoZWNrX3NwZWNpYWxpemF0aW9uX25hbWVzcGFjZQoJd2hlbiByZXBsYWNpbmcgYW4gaW1wbGljaXRseSBpbnN0YW50aWF0ZWQgZnVuY3Rpb24uCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBFbnN1cmUgdGhhdCBERUNMX0NPTlRFWFQgaXMgc2V0Cgljb3JyZWN0bHkgZm9yIG5hbWVzcGFjZS1zY29wZSBzcGVjaWFsaXphdGlvbnMuCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogVXNlCgljaGVja19leHBsaWNpdF9pbnN0YW50aWF0aW9uX25hbWVzcGFjZS4KCShkb190eXBlX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCjIwMDUtMDktMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzNzI1CgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IDxVU0lOR19ERUNMIGNhc2U+IFVzZSBVU0lOR19ERUNMX1NDT1BFLgoKMjAwNS0wOS0xMyAgQmFzdGlhbiBCbGFuayA8d2FsZGlAZGViaWFuLm9yZz4KCglQUiBjKysvMTYxNzEKCSogbWFuZ2xlLmMgKGZpbmRfc3Vic3RpdHV0aW9uKTogRG8gbm90IHVzZSBzcGVjaWFsIHN1YnN0aXR1dGlvbnMKCWZvciBpZGVudGlmaWVycyBub3QgaW4gc3RkOjouCgoyMDA1LTA5LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzgzOQoJKiB0eXBlY2suYyAoY3h4X21hcmtfYWRkcmVzc2FibGUpOiBPbmx5IGNoZWNrIERFQ0xfSEFSRF9SRUdJU1RFUgoJZm9yIFZBUl9ERUNMcy4KCjIwMDUtMDktMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzODQyCgkqIHB0LmMgKHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50KTogRG8gdHJlYXQgZGVmYXVsdCBhcmd1bWVudAoJZXhwcmVzc2lvbnMgYXMgb2NjdXJyaW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBmdW5jdGlvbiBjYWxsZWQuCgoyMDA1LTA5LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzg0MQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbik6IFJlY29nbml6ZSB0aGUgY2xvc2luZwoJIj4iIG9mIGEgdGVtcGxhdGUtYXJndW1lbnQtbGlzdCBhZnRlciBhIGZsb2F0aW5nLXBvaW50IGxpdGVyYWwgYXMKCXRoZSBlbmQgb2YgYSBjYXN0IGV4cHJlc3Npb24uCgoyMDA1LTA5LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMzc4OQoJKiBjdnQuYyAocGVyZm9ybV9xdWFsaWZpY2F0aW9uX2NvbnZlcnNpb25zKTogRG9uJ3QgY3JlYXRlCgl1bm5lY2Vzc2FyeSBOT1BfRVhQUnMuCgkqIHB0LmMgKHRzdWJzdF90ZW1wbGF0ZV9hcmcpOiBVc2UgZm9sZF9ub25fZGVwZW5kZW50X2V4cHIuCgoyMDA1LTA5LTEyICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCVBSIGcrKy83ODc0CgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IEFkZCBoaWRkZW5fZnJpZW5kX3AKCWJpdGZpZWxkLiAgTWFrZSBkdW1teSBiaXRmaWVsZCBvbmUgYml0IHNtYWxsZXIuCgkoREVDTF9ISURERU5fRlJJRU5EX1ApOiBEZWZpbmUuCgkocHVzaGRlY2xfbWF5YmVfZnJpZW5kKTogRGVjbGFyZS4KCShwdXNoZGVjbF90b3BfbGV2ZWxfbWF5YmVfZnJpZW5kKTogRGVjbGFyZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBBZGQgbmV3ZGVjbF9pc19mcmllbmQgcGFyYW1ldGVyLgoJQ2hhbmdlIHByb3RvdHlwZSBhbmQgYWxsIGNhbGxlcnMuICBBZGQgYXNzZXJ0aW9uIHRoYXQgYQoJREVDTF9BUlRJRklDSUFMIEZVTkNUSU9OX0RFQ0wgaXMgbm90IERFQ0xfSElEREVOX0ZSSUVORF9QLiAgU2V0CglERUNMX0FOVElDSVBBVEVEIGFuZCBERUNMX0hJRERFTl9GUklFTkRfUCBpbiBkdXBsaWNhdGVkIGRlY2wgaWYKCWFwcHJvcHJpYXRlLgoJKiBuYW1lLWxvb2t1cC5jIChzdXBwbGVtZW50X2JpbmRpbmcpOiBEb24ndCBpZ25vcmUgYQoJREVDTF9ISURERU5fRlJJRU5EX1AuCgkocHVzaGRlY2xfbWF5YmVfZnJpZW5kKTogQnJlYWsgb3V0IGNvbnRlbnRzIG9mIHB1c2hkZWNsLiAgQWRkCglpc19mcmllbmQgcGFyYW1ldGVyLiAgU2V0IERFQ0xfQU5USUNJUEFURUQgYW5kCglERUNMX0hJRERFTl9GUklFTkRfUCBmb3IgYSBmcmllbmQgZnVuY3Rpb24uCgkocHVzaGRlY2wpOiBKdXN0IGNhbGwgcHVzaGRlY2xfbWF5YmVfZnJpZW5kLgoJKHB1c2hkZWNsX3dpdGhfc2NvcGUpOiBBZGQgaXNfZnJpZW5kIHBhcmFtZXRlci4gIENoYW5nZSBwcm90b3R5cGUKCWFuZCBhbGwgY2FsbGVycy4KCShwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwpOiBMaWtld2lzZS4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IExpa2V3aXNlLiAgQ2hlY2sgREVDTF9ISURERU5fRlJJRU5EX1AgYXMKCXdlbGwgYXMgREVDTF9BTlRJQ0lQQVRFRCB3aGVuIGNoZWNraW5nIGZvciBhIGJ1aWx0aW4uCgkoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBDaGVjayBERUNMX0hJRERFTl9GUklFTkRfUCBhcyB3ZWxsIGFzCglERUNMX0FOVElDSVBBVEVEIHdoZW4gY2hlY2tpbmcgZm9yIGEgYnVpbHRpbi4KCShkb19ub25tZW1iZXJfdXNpbmdfZGVjbCk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX3RvcF9sZXZlbF8xKTogQWRkIGlzX2ZyaWVuZCBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsCgljYWxsZXJzLgoJKHB1c2hkZWNsX3RvcF9sZXZlbF9tYXliZV9mcmllbmQpOiBOZXcgZnVuY3Rpb24uCgkocmVtb3ZlX2hpZGRlbl9uYW1lcyk6IE5ldyBmdW5jdGlvbi4KCShzdHJ1Y3QgYXJnX2xvb2t1cCk6IEFkZCBhcmdzIGZpZWxkLgoJKGZyaWVuZF9vZl9hc3NvY2lhdGVkX2NsYXNzX3ApOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGFyZ19hc3NvY19uYW1lc3BhY2UpOiBJZ25vcmUgaGlkZGVuIGZ1bmN0aW9ucyB3aGljaCBhcmUgbm90CglmcmllbmRzIG9mIGFuIGFzc29jaWF0ZWQgY2xhc3Mgb2Ygc29tZSBhcmd1bWVudC4KCShsb29rdXBfYXJnX2RlcGVuZGVudCk6IFJlbW92ZSBoaWRkZW4gZnVuY3Rpb25zIGZyb20gbGlzdCBwYXNzZWQKCWluLiAgSW5pdGlhbGl6ZSBrLmFyZ3MuCgkqIG5hbWUtbG9va3VwLmggKHJlbW92ZV9oaWRkZW5fbmFtZXMpOiBEZWNsYXJlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogQ2FsbCBwdXNoZGVjbF9tYXliZV9mcmllbmQgaW5zdGVhZCBvZgoJcHVzaGRlY2wuCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IENoYW5nZSBERUNMX0FOVElDSVBBVEVEIHRlc3QgdG8KCWFuIGFzc2VydGlvbiwgd2l0aCBhIGNoZWNrIGZvciBERUNMX0hJRERFTl9GUklFTkRfUC4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IEFkZCBrb2VuaWdfcCBwYXJhbWV0ZXIuICBDaGFuZ2UKCXByb3RvdHlwZSBhbmQgY2FsbGVycy4KCSogcHQuYyAocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBBZGQgaXNfZnJpZW5kIHBhcmFtZXRlci4gIENoYW5nZQoJYWxsIGNhbGxlcnMuCgkocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBDaGFuZ2UgaXNfZnJpZW5kIHBhcmFtZXRlciB0byBib29sLgoJQ2hhbmdlIHByb3RvdHlwZSBhbmQgYWxsIGNhbGxlcnMuCgkodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IENhbGwgcHVzaGRlY2xfdG9wX2xldmVsX21heWJlX2ZyaWVuZAoJaW5zdGVhZCBvZiBwdXNoZGVjbF90b3BfbGV2ZWwuCgoyMDA1LTA5LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVjbDIuYyAoYnVpbGRfYW5vbl91bmlvbl92YXJzKTogQ29weSBhdHRyaWJ1dGVzIGZyb20gdGhlIGJhc2UgYWRkci4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBTdWJzdGl0dXRlIGluIERFQ0xfVkFMVUVfRVhQUi4KCjIwMDUtMDktMDkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90cmFuc2xhdGlvbl91bml0KTogU2ltcGxpZnkuICBUaGUgd2hpbGUtYmxvY2sKCXdhcyBhY3R1YWxseSBleGVjdXRlZCBhdCBtb3N0IG9uY2UuCgoyMDA1LTA5LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzIwOTk4CgkqIGNwLXRyZWUuZGVmIChBTElBU19ERUNMKTogUmVtb3ZlLgoJKiBjcC1sYW5nLmMgKGNwX2luaXRfdHMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgaXQuCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IExpa2V3aXNlLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoZGVjbCk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lkX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoYnVpbGRfYW5vbl91bmlvbl92YXJzKTogVXNlIGEgVkFSX0RFQ0wgd2l0aAoJREVDTF9WQUxVRV9FWFBSIGluc3RlYWQuCgoyMDA1LTA5LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMjI1MgoJKiBkZWNsLmMgKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbik6IERvIG5vdCBwYXkgYXR0ZW50aW9uIHRvCgkjcHJhZ21hIGludGVyZmFjZSBmb3IgaW1wbGljaXRseS1kZWZpbmVkIG1ldGhvZHMuCgkqIGRlY2wyLmMgKGNwX2ZpbmlzaF9maWxlKTogRG8gbm90IGNvbXBsYWluIGFib3V0IHVzZXMgb2YgaW5saW5lCglmdW5jdGlvbnMgdGhhdCBoYXZlIGJvZGllcywgZXZlbiBpZiB3ZSBkZWNpZGVkIG5vdCB0byBlbWl0IHRoZQoJYm9keSBpbiB0aGlzIHRyYW5zbGF0aW9uIHVuaXQuCgkqIHNlbWFudGljcy5jIChub3RlX2RlY2xfZm9yX3BjaCk6IERvIG5vdCBtZXNzIHdpdGggbGlua2FnZS4KCShleHBhbmRfb3JfZGVmZXJfZm4pOiBNYWtlIGlubGluZSwgbm9uLXRlbXBsYXRlIGZ1bmN0aW9ucyBDT01EQVQKCWF0IHRoaXMgcG9pbnQuCgoyMDA1LTA5LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGRlYnVnLzIzMTkwCgkqIGRlY2wuYyAod3JhcHVwX2dsb2JhbHNfZm9yX25hbWVzcGFjZSk6IENhbGwKCWVtaXRfZGVidWdfZ2xvYmFsX2RlY2xhcmF0aW9ucy4KCSogZGVjbDIuYyAoY3BfZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KCjIwMDUtMDktMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzNjkxCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IEluc3RhbnRpYXRlIHN0YXRpYyBkYXRhIG1lbWJlcnMgaW5pdGlhbGl6ZWQKCWJ5IGNvbnN0YW50cywgZXZlbiBpbiBhIHRlbXBsYXRlLgoKMjAwNS0wOS0wOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgb2JqLWMrKy8xNjgxNgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX29iamNfc2VsZWN0b3JfZXhwcmVzc2lvbik6IFRyZWF0IENQUF9TQ09QRSBhcwoJdHdvIENQUF9DT0xPTi4KCjIwMDUtMDktMDcgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIGNwLWdpbXBsaWZ5LmMgKGNwX2dpbXBsaWZ5X2V4cHIpOiBDcmVhdGUgZW1wdHkgQ09OU1RSVUNUT1IKCWZvciBFTVBUWV9DTEFTU19FWFBSLgoKMjAwNS0wOS0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYy8yMzA3NQoJKiB0eXBlY2suYyAoY2hlY2tfcmV0dXJuX2V4cHIpOiBBZGQgbm9fd2FybmluZyBhcmd1bWVudC4gIFNldAoJKm5vX3dhcm5pbmcgdG8gdHJ1ZSBpZiAicmV0dXJuLXN0YXRlbWVudCB3aXRoIG5vIHZhbHVlLCBpbiBmdW5jdGlvbgoJcmV0dXJuaW5nIiB3YXJuaW5nIGhhcyBiZWVuIGlzc3VlZC4KCSogY3AtdHJlZS5oIChjaGVja19yZXR1cm5fZXhwcik6IEFkanVzdCBwcm90b3R5cGUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfcmV0dXJuX3N0bXQpOiBTZXQgVFJFRV9OT19XQVJOSU5HIGlmCgljaGVja19yZXR1cm5fZXhwciBzZXQgKm5vX3dhcm5pbmcgdG8gdHJ1ZS4KCjIwMDUtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHJ2YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIGl0LgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBMaWtld2lzZS4KCSogdHJlZS5jIChydmFsdWUpOiBOZXcgZnVuY3Rpb24uCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IFVzZSBpdC4KCShidWlsZF9zdGF0aWNfY2FzdF8xKTogTGlrZXdpc2UuCgoJUFIgYysrLzk3ODIKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IE1ha2Ugc3VyZSB0aGUgZW50aXJlIGFycmF5IHR5cGUgaXMKCWNvbXBsZXRlLCBub3QganVzdCBpdHMgZWxlbWVudCB0eXBlcy4KCjIwMDUtMDktMDYgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBkZWNsLmMgKGNoZWNrX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXIpOiBSZW1vdmUgcmVkdW5kYW50IGNoZWNrLgoKMjAwNS0wOS0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzIzMDU2CgkqIHR5cGVjay5jIChpZ25vcmVfb3ZlcmZsb3dzKTogTmV3IGhlbHBlciBmdW5jdGlvbi4KCShidWlsZF9zdGF0aWNfY2FzdF8xKTogVXNlIGl0LgoKMjAwNS0wOS0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmgsIGRlY2wuYywgZGVjbDIuYywgc2VtYW50aWNzLmM6IEZpeCBjb21tZW50IHR5cG9zLgoJRm9sbG93IHNwZWxsaW5nIGNvbnZlbnRpb25zLgoKMjAwNS0wOS0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjM2NjcKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBDbGVhciBERUNMX1RFTVBMQVRFX0lOU1RBTlRJQVRFRCB3aGVuCgljb3B5aW5nIGEgVkFSX0RFQ0wuCgoyMDA1LTA5LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTQ0MAoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3N0bXRfZXhwcl9leHByKTogQWRkIGFuIGV4cGxpY2l0Cglpbml0aWFsaXphdGlvbiB0byB0aGUgbGFzdCBzdGF0ZW1lbnQgaW4gdGhlIHN0YXRlbWVudC1leHByZXNzaW9uLgoJKiAoZmluaXNoX3N0bXRfZXhwcik6IEFkanVzdCBhY2NvcmRpbmdseS4KCjIwMDUtMDktMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzNjk5CgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IEFsd2F5cyBpbnN0YW50aWF0ZSBzdGF0aWMgZGF0YSBtZW1iZXJzCglpbml0aWFsaXplZCBieSBjb25zdGFudCBleHByZXNzaW9ucy4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IEluc3RhbnRpYXRlIHRoZSBpbml0aWFsaXplcnMgZm9yIHN0YXRpYwoJZGF0YSBtZW1iZXJzIGluaXRpYWxpemVkIGJ5IGNvbnN0YW50IGV4cHJlc3Npb25zLgoKCVBSIGMrKy8yMTY4NwoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX29yX2RlZmVyX2ZuKTogRG8gbm90IGNhbGwgZ2djX2NvbGxlY3Qgd2hlbgoJZmluaXNoaW5nIHByb2Nlc3NpbmcgZm9yIGEgdGVtcGxhdGUgZnVuY3Rpb24gaW4gYSBsb2NhbCBjbGFzcy4KCVJldmVydDoKCTIwMDUtMDktMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY2xhc3Nfc3BlY2lmaWVyKTogUHVzaC9wb3AgR0MgY29udGV4dHMKCWFyb3VuZCBmdW5jdGlvbnMgaW4gbG9jYWwgY2xhc3Nlcy4KCjIwMDUtMDktMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxNjg3CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY2xhc3Nfc3BlY2lmaWVyKTogUHVzaC9wb3AgR0MgY29udGV4dHMKCWFyb3VuZCBmdW5jdGlvbnMgaW4gbG9jYWwgY2xhc3Nlcy4KCjIwMDUtMDgtMzEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIG9iai1jKysvMjM2NDAKCSogZGVjbDIuYyAoY3BfZmluaXNoX2ZpbGUpOiBJZiB0aGlzIGlzIG9iai1jKysgYW5kIHdlIG5lZWQgYSBzdGF0aWMKCWluaXQsIGNhbGwgZ2VuZXJhdGVfY3Rvcl9vcl9kdG9yX2Z1bmN0aW9uLgoKMjAwNS0wOC0zMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMTMzNzcKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sb29rdXBfbmFtZSk6IFBhc3MgTE9PS1VQX0NPTVBMQUlOIHRvCglsb29rdXBfbmFtZV9yZWFsIG9uIGZpbmFsIHBhcnNlLgoKMjAwNS0wOC0zMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjM2MzkKCSogc2VtYW50aWNzLmMgKHF1YWxpZmllZF9uYW1lX2xvb2t1cF9lcnJvcik6IERvIG5vdCBjb21wbGFpbiBhZ2FpbgoJb24gaW52YWxpZCBzY29wZS4KCjIwMDUtMDgtMzAgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIzNTg2CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbmFtZXNwYWNlX25hbWUpOiBNb3ZlIGRpYWdub3N0aWMgZm9yCglpbnZhbGlkIG5hbWVzcGFjZS1uYW1lIHRvIGhlcmUgZnJvbSAuLi4KCSogbmFtZS1sb29rdXAuYyAoZG9fbmFtZXNwYWNlX2FsaWFzKTogLi4uIGhlcmUgYW5kIC4uLgoJKGRvX3VzaW5nX2RpcmVjdGl2ZSk6IC4uLiBoZXJlLiAgUmVtb3ZlIGRlYWQgY29kZS4KCjIwMDUtMDgtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzMDk5CgkqIGNwLXRyZWUuaCAoc2F2ZWRfc2NvcGUpOiBBZGQgc2tpcF9ldmFsdWF0aW9uLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBVc2UgREVDTF9JTklUSUFMSVpFRF9JTl9DTEFTU19QLCBub3QKCURFQ0xfSU5JVElBTCwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgc3RhdGljIGRhdGEgbWVtYmVyIHdhcwoJaW5pdGlhbGl6ZWQgaW4gdGhlIGNsYXNzLXNwZWNpZmllci4KCShjcF9maW5pc2hfZGVjbCk6IEFkZCBjb21tZW50LgoJKiBpbml0LmMgKGludGVncmFsX2NvbnN0YW50X3ZhbHVlKTogU3VidGl0dXRlIGludG8gdGhlCglpbml0aWFsaXplcnMgZm9yIHN0YXRpYyBkYXRhIG1lbWJlcnMgaW4JdGVtcGxhdGVzLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX3RvX3RvcF9sZXZlbCk6IFNhdmUgc2tpcF9ldmFsdWF0aW9uLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFJlc3RvcmUgaXQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG8gbm90IHN1YnN0aXR1dGUgaW50byB0aGUKCWludGlhbGl6ZXJzIG9mIHN0YXRpYyBkYXRhIG1lbWJlcnMgd2hlbiBpbnN0YW50aWF0aW5nIGEgY2xhc3MuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBTaW1wbGlmeS4KCShpbnN0YW50aWF0ZV9kZWNsKTogVGlkeS4gIFN1YnN0aXR1dGUgaW50byB0aGUgaW5pdGlhbGl6ZXIgZm9yIGEKCXN0YXRpYyBkYXRhIG1lbWJlciBldmVuIHdoZW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGRhdGEgbWVtYmVyIGlzCglub3QgYXZhaWxhYmxlLgoKMjAwNS0wOC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTkwMDQKCSogcHQuYyAodXNlc190ZW1wbGF0ZV9wYXJtcyk6IEhhbmRsZSBJREVOVElGSUVSX05PREUuCgkodHlwZV9kZXBlbmRlbnRfZXhwcmVzc2lvbl9wKTogQWxsb3cgQkFTRUxJTktzIHdob3NlIGFzc29jaWF0ZWQKCWZ1bmN0aW9ucyBhcmUgc2ltcGx5IGEgRlVOQ1RJT05fREVDTC4KCglQUiBjKysvMjM0OTEKCSogY3AtdHJlZS5oIChidWlsZF92ZWNfaW5pdCk6IEFkanVzdCBwcm90b3R5cGUuCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX3ZlY19pbml0LgoJKGJ1aWxkX2FnZ3JfaW5pdCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld18xKTogRG8gbm90IGNhbGwgYnVpbGRfZGVmYXVsdF9pbml0IGZvciBhcnJheSB0eXBlcy4KCShidWlsZF92ZWNfaW5pdCk6IEFkZCBleHBsaWNpdF9kZWZhdWx0X2luaXRfcCBwYXJhbWV0ZXIuICBQZXJmb3JtCglkZWZhdWx0IGluaXRpYWxpemF0aW9uIG9mIHZlY3RvciBlbGVtZW50cyB3aGVuIHNldC4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogQWRqdXN0IGNhbGwgdG8gYnVpbGRfdmVjX2luaXQuCgoyMDA1LTA4LTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDgxNwoJKiB0eXBlY2suYyAoYnVpbGRfeF91bmFyeV9vcCk6IE1ha2Ugc3VyZSBPRkZTRVRfUkVGIGlzIG5vdCBmb3IgYQoJLT4qLgoKMjAwNS0wOC0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjI0NTQKCSogcGFyc2VyLmMgKGNwX2xleGVyX3BlZWtfbnRoX3Rva2VuKTogUmVsYXggYXNzZXJ0LgoKMjAwNS0wOC0yMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjMwNDQKCSogcHQuYyAodHN1YnN0X3F1YWxpZmllZF9pZCk6IEEgU0NPUEVfUkVGIGNhbiBzdGlsbCByZW1haW4uCgoyMDA1LTA4LTIyICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeC5jb20+CgoJUFIgdHJlZS1vcHRpbWl6YXRpb24vMjM0MjYKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBUWVBFX1NJWkVfVU5JVCBub3QgVFlQRV9TSVpFIGZvcgoJYXJyYXkgc2l6ZSBjaGVjay4KCjIwMDUtMDgtMjIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIyMjMzCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSBpZiB0aGUKCW51bWJlciBvZiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGRvZXMgbm90IG1hdGNoIHByZXZpb3VzIGRlZmluaXRpb24uCgoyMDA1LTA4LTIyICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMzA4OQoJKiBkZWNsLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZXNfZm9yX3Bhcm1zKTogTWFyayBpbmNvbXBsZXRlIHR5cGVzCglhcyBpbnZhbGlkLgoKMjAwNS0wOC0xOSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbnRoX3Rva2VuX3N0YXJ0c190ZW1wbGF0ZV9hcmd1bWVudF9saXN0X3ApOgoJRml4IHR5cG8gaW4gbGVhZGluZyBjb21tZW50LgoKMjAwNS0wOC0xNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbmFtZS1sb29rdXAuYywgcHRyZWUuYzogRGVsZXRlIEhPU1RfUFRSX1BSSU5URi4KCjIwMDUtMDgtMTUgRmFyaWJvcnogSmFoYW5pYW4gPGZqYWhhbmlhbkBhcHBsZS5jb20+CgoJKiBjcC10cmVlLmggKGNhbl9jb252ZXJ0X2FyZywgZm5fdHlwZV91bmlmaWNhdGlvbik6IE5ldyBhcmd1bWVudC4KCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBQYXNzIGRvd24gJ2ZsYWdzJyB0bwoJZm5fdHlwZV91bmlmaWNhdGlvbi4KCShjYW5fY29udmVydF9hcmcpOiBOZXcgJ2ZsYWdzJyBhcmd1bWVudC4gUGFzcyBpdCB0byBjYWxsIHRvCglpbXBsaWNpdF9jb252ZXJzaW9uIGluc3RlYWQgb2YgTE9PS1VQX05PUk1BTC4KCShjYW5fY29udmVydCk6IEFkZCBMT09LVVBfTk9STUFMIHRvIGNhbGwgdG8gY2FuX2NvbnZlcnRfYXJnLgoJKiBjbGFzcy5jIChyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IERpdHRvLgoJKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogRGl0dG8uCgkqIGRlY2wuYyAocmVzaGFwZV9pbml0LCBjaGVja19kZWZhdWx0X2FyZ3VtZW50KTogRGl0dG8uCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogRGl0dG8uCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IEFkZCAnZmxhZ3MnIGFyZ3VtZW50LgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBQYXNzICdmbGFncycgdG8gdHlwZV91bmlmaWNhdGlvbl9yZWFsLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IFBhc3MgbmV3ICdmbGFncycgYXJndW1lbnQgdG8gY2FsbCB0bwoJY2FuX2NvbnZlcnRfYXJnLgoKMjAwNS0wOC0xMiAgR2lvdmFubmkgQmFqbyAgPGdpb3Zhbm5pYmFqb0BsaWJlcm8uaXQ+CgkgICAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE3OTkKCVBSIGMrKy84MjcxCgkqIHB0LmMgKHVuaWZ5KSA8TUVUSE9EX1RZUEU+OiBDaGVjayB0aGlzLXBvaW50ZXIgY3YtcXVhbGlmaWVycwoJZXhwbGljaXRseS4KCjIwMDUtMDgtMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxNzk5CglSZXZlcnQgbXkgMjAwNS0wNy0wOCBwYXRjaAoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBSZW1vdmUgaXNfbWV0aG9kX2FyZ3VtZW50IGFuZAoJYXNzb2ljYXRlZCBjaGVja3MuCgkoZm5fdHlwZV91bmlmaWNhdGlvbiwgdW5pZnkpOiBBZGp1c3QgdHlwZV91bmlmaWNhdGlvbl9yZWFsIGNhbGxzLgoKMjAwNS0wOC0xMSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjMyNjYKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogQ2hlY2sgdGhhdCBtZXRob2QgaXMgbm90IHN0YXRpYyBiZWZvcmUKCW1hcmtpbmcgaXQgYXMgcHVyZS4KCjIwMDUtMDgtMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIzMjE5CgkqIG5hbWUtbG9va3VwLmMgKHB1c2h0YWcpOiBQcm9jZXNzIHRoZSB0ZW1wbGF0ZSB0eXBlIGJlZm9yZQoJYWx0ZXJpbmcgdGhlIGlkZW50aWZpZXIgbG9va3VwIGZpZWxkcy4gIFJlbW92ZSB1bnJlYWNoYWJsZSBjb2RlCgljcmVhdGluZyBhbiBlbXB0eSBzdHViIGRlY2wuCgoyMDA1LTA4LTEwICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMDY0NgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVzZXQgc3RvcmFnZV9jbGFzcyBhZnRlciBlcnJvci4KCjIwMDUtMDgtMDggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzIyNTA4CgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBDaGVjayBmb3IgZW1wdHkgY2FuZGlkYXRlIGxpc3QuCgoyMDA1LTA4LTA2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMzE5MQoJKiBwdC5jICh0c3Vic3QpIDxjYXNlIE1FVEhPRF9UWVBFPjogQ2hlY2sgZm9yIGVycm9yX21hcmtfbm9kZQoJYmVmb3JlIGNhbGxpbmcgYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQuCgoyMDA1LTA4LTA2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8xOTQ5OAoJKiBwdC5jICh0c3Vic3RfZGVjbCkgPGNhc2UgVEVNUExBVEVfREVDTD46IFJldHVybiBFUlJPUl9NQVJLX05PREUKCWlmIHN1YnN0aXR1dGlvbiBvZiB0ZW1wbGF0ZSBhcmdzIGRpZCBub3Qgc3VjY2VlZC4KCjIwMDUtMDgtMDYgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIG1ldGhvZC5jICh1c2VfdGh1bmspOiBDYWxsIGluaXRfaW5zbl9sZW5ndGhzLgoKMjAwNS0wOC0wNSAgSmFtZXMgQS4gTW9ycmlzb24gIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8yMjUxNAoJKiBuYW1lLWxvb2t1cC5jIChjcF9lbWl0X2RlYnVnX2luZm9fZm9yX3VzaW5nKTogRG8gbm90aGluZyBpZgoJc29ycnljb3VudCBvciBlcnJvcmNvdW50IGFyZSBub256ZXJvLgoKMjAwNS0wOC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG5hbWUtbG9va3VwLmMgKHB1c2h0YWcpOiBSZW1vdmUgYWNjaWRlbnRhbCBjb21taXQgZnJvbToKCTIwMDQtMTItMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CglQUiBjKysvMTkwNjMKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJldHVybiBlcnJvcl9tYXJrX25vZGUsIG5vdAoJdm9pZF90eXBlX25vZGUsIHRvIGluZGljYXRlIGVycm9ycy4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90ZW1wbGF0ZV9wYXJhbWV0ZXJfbGlzdCk6IFJvYnVzdGlmeS4KCShjcF9wYXJzZXJfdGVtcGxhdGVfcGFyYW1ldGVyKTogTGlrZXdpc2UuCgoyMDA1LTA4LTAxICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMsIGRlY2wuYywgbmFtZS1sb29rdXAuYywgcHQuYywgdHlwZWNrLmMsIHR5cGVjazIuYzoKCUZpeCBjb21tZW50IHR5cG9zLgoKMjAwNS0wNy0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtZXRob2QuYzogRml4IGEgY29tbWVudCB0eXBvLgoKMjAwNS0wNy0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjI1NDUKCSogY2FsbC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBBZGp1c3QgZm9yIGNoYW5nZXMgaW4KCXJlcHJlc2VudGF0aW9uIG9mIHBvaW50ZXItdG8tbWVtYmVyIHR5cGVzLgoKMjAwNS0wNy0yOCAgTWlrZSBTdHVtcCAgPG1yc0BhcHBsZS5jb20+CgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEFkZCB2aXNpYmlsaXR5IGxvZ2ljLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgoyMDA1LTA3LTI3ICBEZXZhbmcgUGF0ZWwgIDxkcGF0ZWxAYXBwbGUuY29tPgoKCSogbmFtZS1sb29rdXAuYyAocHVzaHRhZyk6IERvIG5vIHNldCBERUNMX0lHTk9SRURfUCBiaXQuCgoyMDA1LTA3LTI1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogcHRyZWUuYyAoY3h4X3ByaW50X2lkZW50aWZpZXIpOiBQcmludCBhIGxlYWRpbmcgc3BhY2UgaWYgdGhlCglpbmRlbnQgbGV2ZWwgaXMgMC4KCjIwMDUtMDctMjQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAoY29udmVydF9mb3JfYXJnX3Bhc3NpbmcpOiBDaGVjayBmdW5jdGlvbiBwb2ludGVycyB3aGVuCgktV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSBpcyBhY3RpdmF0ZWQuCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgoyMDA1LTA3LTIyICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1oQHN1c2UuY29tPgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kZWNsYXJhdGlvbik6IEZpeCB1bml0aWFsaXNlZCB3YXJuaW5ncy4KCjIwMDUtMDctMjEgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY2xhc3MuYyAoYnVpbGRfYmFzZV9wYXRoKTogRml4IHR5cG8uCgoyMDA1LTA3LTIxICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBDKysvMjIzNTgKCSogY2xhc3MuYyAoYnVpbGRfYmFzZV9wYXRoKTogQ29udmVydCBCSU5GT19PRkZTRVQgdG8gdGhlIGNvcnJlY3QgdHlwZS4KCjIwMDUtMDctMjEgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjYWxsLmM6IEZpeCBjb21tZW50IHR5cG8ocykuCgkqIGN4eC1wcmV0dHktcHJpbnQuaDogTGlrZXdpc2UuCgkqIG5hbWUtbG9va3VwLmM6IExpa2V3aXNlLgoJKiBwYXJzZXIuYzogTGlrZXdpc2UuCgoyMDA1LTA3LTIwICBEb3VnbGFzIEdyZWdvciA8ZG91Zy5ncmVnb3JAZ21haWwuY29tPgoKCVBSIGMrKy8yOTIyCgkqIHNlbWFudGljcy5jIChwZXJmb3JtX2tvZW5pZ19sb29rdXApOiBGb3IgZGVwZW5kZW50IGNhbGxzLCBqdXN0CglyZXR1cm4gdGhlIHNldCBvZiBmdW5jdGlvbnMgd2UndmUgZm91bmQgc28gZmFyLiBMYXRlciwgaXQgd2lsbCBiZQoJYXVnbWVudGVkIGJ5IHRob3NlIGZvdW5kIHRocm91Z2ggYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KCSogbmFtZS1sb29rdXAuYyAobG9va3VwX2FyZ19kZXBlbmRlbnQpOiBJbXBsZW1lbnQgRFIgMTY0IGJ5IHJlbW92aW5nCgl0aGUgb3B0aW1pemF0aW9uIHRoYXQgc2tpcHMgbmFtZXNwYWNlcyB3aGVyZSB0aGUgZnVuY3Rpb25zIHdlcmUKCW9yaWdpbmFsbHkgZm91bmQuCgoyMDA1LTA3LTIwICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGxpYmVyby5pdD4KCglNYWtlIENPTlNUUlVDVE9SIHVzZSBWRUMgdG8gc3RvcmUgaW5pdGlhbGl6ZXJzLgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBVcGRhdGUgY2FsbCB0byBkaWdlc3RfaW5pdC4KCSogY2xhc3MuYyAoZHVtcF9jbGFzc19oaWVyYXJjaHksIGR1bXBfYXJyYXkpOiBVcGRhdGUgdG8gY29wZSB3aXRoCglWRUMgaW4gQ09OU1RSVUNUT1JfRUxUUy4KCSogY3AtdHJlZS5oIChFTVBUWV9DT05TVFJVQ1RPUl9QKTogTGlrZXdpc2UuCgkoZmluaXNoX2NvbXBvdW5kX2xpdGVyYWwsIGRpZ2VzdF9pbml0KTogVXBkYXRlIGRlY2xhcmF0aW9uLgoJKiBkZWNsLmMgKHN0cnVjdCByZXNoYXBlX2l0ZXIpOiBOZXcgZGF0YSB0eXBlLgoJKHJlc2hhcGVfaW5pdF9hcnJheSk6IFJlbmFtZSB0by4uLgoJKHJlc2hhcGVfaW5pdF9hcnJheV8xKTogVXBkYXRlIHRvIGNvcGUgd2l0aCBWRUMgaW4gQ09OU1RSVUNUT1JfRUxUUy4KCShyZXNoYXBlX2luaXQpOiBSZXdyaXRlIGZyb20gc2NyYXRjaC4gU3BsaXQgcGFydHMgaW50by4uLgoJKHJlc2hhcGVfaW5pdF9hcnJheSwgcmVzaGFwZV9pbml0X3ZlY3RvciwgcmVzaGFwZV9pbml0X2NsYXNzLAoJcmVzaGFwZV9pbml0X3IpOiBOZXcgZnVuY3Rpb25zLgoJKGNoZWNrX2luaXRpYWxpemVyKTogVXBkYXRlIGNhbGwgdG8gcmVzaGFwZV9pbml0LiBSZW1vdmUgb2Jzb2xldGUKCWNvZGUuCgkoaW5pdGlhbGl6ZV9hcnRpZmljaWFsX3ZhciwgY3BfY29tcGxldGVfYXJyYXlfdHlwZSk6IFVwZGF0ZSB0byBjb3BlCgl3aXRoIFZFQyBpbiBDT05TVFJVQ1RPUl9FTFRTLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBVcGRhdGUgY2FsbHMgdG8gZGlnZXN0X2luaXQuCgkobWFya192dGFibGVfZW50cmllcyk6IFVwZGF0ZSB0byBjb3BlIHdpdGggVkVDIGluIENPTlNUUlVDVE9SX0VMVFMuCgkqIGVycm9yLmMgKGR1bXBfZXhwcl9pbml0X3ZlYyk6IE5ldyBmdW5jdGlvbi4KCShkdW1wX2V4cHIpOiBVc2UgZHVtcF9leHByX2luaXRfdmVjLgoJKiBpbml0LmMgKGJ1aWxkX3plcm9faW5pdCwgYnVpbGRfdmVjX2luaXQpOiBVcGRhdGUgdG8gY29wZSB3aXRoIFZFQwoJaW4gQ09OU1RSVUNUT1JfRUxUUy4KCShleHBhbmRfZGVmYXVsdF9pbml0KTogVXBkYXRlIGNhbGwgdG8gZGlnZXN0X2luaXQuCgkqIHBhcnNlci5jICAoY3BfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IFVzZSBhIFZFQyBmb3IgdGhlCglpbml0aWFsaXplcnMuCgkoY3BfcGFyc2VyX2luaXRpYWxpemVyX2xpc3QpOiBCdWlsZCBhIFZFQyBvZiBpbml0aWFsaXplcnMuCgkqIHB0LmMgKHRzdWJzdF9jb3B5LCB0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBVcGRhdGUgdG8gY29wZSB3aXRoIFZFQwoJaW4gQ09OU1RSVUNUT1JfRUxUUy4KCSogcnR0aS5jICh0aW5mb19iYXNlX2luaXQsIGdlbmVyaWNfaW5pdGlhbGl6ZXIsIHB0cl9pbml0aWFsaXplciwKCXB0bV9pbml0aWFsaXplciwgY2xhc3NfaW5pdGlhbGl6ZXIsIGdldF9wc2V1ZG9fdGlfaW5pdCk6IFVzZQoJYnVpbGRfY29uc3RydWN0b3JfZnJvbV9saXN0IGluc3RlYWQgb2YgYnVpbGRfY29uc3RydWN0b3IuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY29tcG91bmRfbGl0ZXJhbCk6IFVwZGF0ZSBjYWxsIHRvIGRpZ2VzdF9pbml0LgoJKiB0cmVlLmMgKHN0YWJpbGl6ZV9pbml0KTogVXBkYXRlIHRvIGNvcGUgd2l0aCBWRUMgaW4KCUNPTlNUUlVDVE9SX0VMVFMuCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jMSk6IExpa2V3aXNlLgoJKiB0eXBlY2syLmM6IChjeHhfaW5jb21wbGV0ZV90eXBlX2Vycm9yLCBzcGxpdF9ub25jb25zdGFudF9pbml0XzEpOgoJTGlrZXdpc2UuCgkoc3RvcmVfaW5pdF92YWx1ZSk6IFVzZSBidWlsZF9jb25zdHJ1Y3Rvcl9mcm9tX2xpc3QgYW5kIHVwZGF0ZSBjYWxsCgl0byBkaWdlc3RfaW5pdC4KCShkaWdlc3RfaW5pdCk6IFJld3JpdGUuCgkocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogUmV3cml0ZSBmcm9tIHNjcmF0Y2guIFNwbGl0IGludG8uLi4KCShwcm9jZXNzX2luaXRfY29uc3RydWN0b3JfYXJyYXksIHBpY2ZsYWdfZnJvbV9pbml0aWFsaXplciwKCXByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcl9yZWNvcmQsIHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcl91bmlvbik6CglOZXcgZnVuY3Rpb25zLgoJKFBJQ0ZMQUdfRVJST05FT1VTLCBQSUNGTEFHX05PVF9BTExfQ09OU1RBTlQsIFBJQ0ZMQUdfTk9UX0FMTF9TSU1QTEUpOgoJTmV3IG1hY3Jvcy4KCShidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBVc2UgYnVpbGRfY29uc3RydWN0b3JfZnJvbV9saXN0IGluc3RlYWQgb2YKCWJ1aWxkX2NvbnN0cnVjdG9yLgoKMjAwNS0wNy0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjIyNjMKCSogY3AtdHJlZS5oIChpbnN0YW50aWF0ZV9kZWNsKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbDIuYyAobWFya191c2VkKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKiBwdC5jIChkb19kZWNsX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc19tZW1iZXIpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogUmVuYW1lIHVuZGVmaW5lZF9vayBhcyBleHBsX2luc3RfY2xhc3NfbWVtX3AuCglDbGVhciBERUNMX0lOVEVSRkFDRV9LTk9XTiBmb3IgYW4gZXhwbGljaXRseSBpbnN0YW50aWF0ZWQgdGVtcGxhdGUKCXRoYXQgaGFzIG5vIGRlZmluaXRpb24gYXZhaWxhYmxlLgoJKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogQWRqdXN0IGNhbGwgdG8gaW5zdGFudGlhdGVfZGVjbC4KCjIwMDUtMDctMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIyMTM5CgkqIGNwLXRyZWUuaCAoREVDTF9URU1QTEFURV9JTkZPKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFJlLXJlZ2lzdGVyIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucwoJZm9yIGZ1bmN0aW9ucyB0aGF0IGhhdmUgREVDTF9URU1MUExBVEVfSU5GTywgZXZlbiBpZiB0aGV5IGRvIG5vdAoJaGF2ZSBERUNMX1RFTVBMQVRFX0lOU1RBTlRJQVRJT04gc2V0LgoKMjAwNS0wNy0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2FsbC5jIChkaWFnbm9zdGljX2ZuX3QpOiBOZXcuCgkoYnVpbGRfdGVtcCwgY29udmVydF9saWtlX3JlYWwpOiBVc2UgZGlhZ25vc3RpY19mbl90LgoKMjAwNS0wNy0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjIyMDQKCSogcmVwby5jIChyZXBvX2VtaXRfcCk6IFJvYnVzdGlmeS4KCjIwMDUtMDctMTQgIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCUZpeCBQUiBjKysvMjI0NTIKCSogdHJlZS5jIChkZWNsX2xpbmthZ2UpOiBEb24ndCBjaGVjayBERUNMX0NPTURBVCBvbiBDT05TVF9ERUNMLgoKMjAwNS0wNy0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjIxMzIKCSogY2FsbC5jIChpbXBsaWNpdF9jb252ZXJzaW9uKTogQWRkIGNfY2FzdF9wIHBhcmFtZXRlci4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogTGlrZXdpc2UuICBBbGxvdyBjb252ZXJzaW9ucyBiZXR3ZWVuCglkaWZmZXJlbnRseS1xdWFsaWZpZWQgcG9pbnRlciB0eXBlcyB3aGVuIHBlcmZvcm1pbmcgYSBDLXN0eWxlCgljYXN0LgoJKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBBZGp1c3QgY2FsbGVlLgoJKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IExpa2V3aXNlLgoJKGNvbmRpdGlvbmFsX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShjYW5fY29udmVydF9hcmcpOiBMaWtld2lzZS4KCShjYW5fY29udmVydF9hcmdfYmFkKTogTGlrZXdpc2UuCgkocGVyZm9ybV9pbXBsaWNpdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoY29tcF9wdHJfdHR5cGVzX2NvbnN0KTogRGVjbGFyZS4KCSogdHlwZWNrLmMgKGNvbXBfcHRyX3R0eXBlc19jb25zdCk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4KCVJldHVybiBib29sLgoKMjAwNS0wNy0xMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCSAgICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDE3MgoJKiBwdC5jICh0c3Vic3RfdGVtcGxhdGVfcGFybXMpOiBDaGVjayBmb3IgaW52YWxpZCBub24tdHlwZQoJcGFyYW1ldGVycy4KCjIwMDUtMDctMDkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogY3AtbGFuZy5jIChzaGFkb3dlZF92YXJfZm9yX2RlY2wsIGRlY2xfc2hhZG93ZWRfZm9yX3Zhcl9sb29rdXAsCglkZWNsX3NoYWRvd2VkX2Zvcl92YXJfaW5zZXJ0KTogTW92ZSBvdmVyIHRvIGNwLW9iamNwLWNvbW1vbi5jLgoJKGNwX2luaXRfdHMpOiBDYWxsIGluaXRfc2hhZG93ZWRfdmFyX2Zvcl9kZWNsLgoJUmVtb3ZlIGluY2x1ZGUgb2YgZ3QtY3AtY3AtbGFuZy5oLgoJKiBjcC1vYmpjcC1jb21tb24uYyAoc2hhZG93ZWRfdmFyX2Zvcl9kZWNsLAoJZGVjbF9zaGFkb3dlZF9mb3JfdmFyX2xvb2t1cCwgZGVjbF9zaGFkb3dlZF9mb3JfdmFyX2luc2VydCk6IE1vdmVkIGZyb20KCWNwLWxhbmcuYy4KCShpbml0X3NoYWRvd2VkX3Zhcl9mb3JfZGVjbCk6IE5ldyBmdW5jdGlvbiB0byBpbml0aWFsaXplCglzaGFkb3dlZF92YXJfZm9yX2RlY2wuCglJbmNsdWRlIGd0LWNwLWNwLW9iamNwLWNvbW1vbi5oLgoJKiBNYWtlLWxhbmcuaW4gKGd0LWNwLWxhbmcuaCk6IFJlbW92ZS4KCShndC1jcC1jcC1vYmpjcC1jb21tb24uaCk6IEFkZC4KCShjcC9jcC1sYW5nLm8pOiBSZW1vdmUgZGVwZW5kYW5jeSBvbiBndC1jcC1sYW5nLmguCgkoY3AvY3Atb2JqY3AtY29tbW9uLm8pOiBBZGQgZGVwZW5kYW5jeSBvbiBndC1jcC1jcC1vYmpjcC1jb21tb24uaC4KCSogY29uZmlnLWxhbmcuaW4gKGd0ZmlsZXMpOiBSZW1vdmUgY3AtbGFuZy5jIGFuZCBBZGQgY3Atb2JqY3AtY29tbW9uLmMuCgkqIGNwLXRyZWUgKGluaXRfc2hhZG93ZWRfdmFyX2Zvcl9kZWNsKTogQWRkIHByb3RvdHlwZS4KCjIwMDUtMDctMDggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogTWFrZS1sYW5nLmluOiBBZGQgZ3QtY3AtbGFuZy5oLgoJKGNwLWxhbmcubyk6IERpdHRvLgoJKiBjbGFzcy5jIChjcmVhdGVfdnRhYmxlX3B0cik6IFN0b3Agc2V0dGluZyBERUNMX0FTU0VNQkxFUl9OQU1FIG9uCgl0aGUgZmllbGQuCgkqIGNvbmZpZy1sYW5nLmluOiBBZGQgY3AtbGFuZy5jIHRvIGd0ZmlsZXMuCgkqIGNwLWxhbmcuYzogSW5jbHVkZSBoYXNodGFiLmguCgkoY3BfaW5pdF90cyk6IE5ldyBmdW5jdGlvbi4KCShMQU5HX0hPT0tfSU5JVF9UUyk6IFVzZSBtYWNyby4KCShkZWNsX3NoYWRvd2VkX2Zvcl92YXJfbG9va3VwKTogTmV3IGZ1bmN0aW9uLgoJKGRlY2xfc2hhZG93ZWRfZm9yX3Zhcl9pbnNlcnQpOiBEaXR0by4KCSogY3AtdHJlZS5oIChUSFVOS19GVU5DVElPTl9DSEVDSyk6IFVzZSBkZWNsX2NvbW1vbi4KCShOT05fVEhVTktfRlVOQ1RJT05fQ0hFQ0spOiBEaXR0by4KCShERUNMX05BTUVTUEFDRV9BU1NPQ0lBVElPTlMpOiBVc2UgZGVjbF9ub25fY29tbW9uLgoJKERFQ0xfSU5JVF9QUklPUklUWSk6IERpdHRvLgoJKERFQ0xfSEFTX1NIQURPV0VEX0ZPUl9WQVJfUCk6IERpdHRvLgoJKERFQ0xfU0hBRE9XRURfRk9SX1ZBUik6IFVzZSBoYXNodGFibGUuCgkoU0VUX0RFQ0xfU0hBRE9XRURfRk9SX1ZBUik6IERpdHRvLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVwZGF0ZSBmb3IgbmV3L3VwZGF0ZWQgc3RydWN0dXJlcy4KCShwb3BsZXZlbCk6IFVzZSBTRVRfREVDTF9TSEFET1dFRF9GT1JfVkFSLgoJKiBkZWNsMi5jIChzdGFydF9zdGF0aWNfaW5pdGlhbGl6YXRpb25fb3JfZGVzdHJ1Y3Rpb24pOiBEZWFsIHdpdGgKCXByaW9yaXR5LgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IENoZWNrIFRTX0RFQ0xfV1JUTCBiZWZvcmUgZG9pbmcKCVNFVF9ERUNMX1JUTC4KCSogdHJlZS5jIChoYW5kbGVfaW5pdF9wcmlvcml0eV9hdHRyaWJ1dGUpOiBIYW5kbGUgcHJpb3JpdHkuCgoyMDA1LTA3LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTc5OQoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBBZGQgaXNfbWV0aG9kIGFyZ3VtZW50LiAgVXNlIGl0Cglmb3IgdGhpcyBwb2ludGVyIHVuaWZpY2F0aW9uLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBBZGp1c3QgdHlwZV91bmlmaWNhdGlvbl9yZWFsIGNhbGwuCgkodW5pZnkpOiBMaWtld2lzZS4KCjIwMDUtMDctMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBSZW1vdmUgYWxsb3dfaW5jb21wbGV0ZSBhcmd1bWVudC4KCVJlbW92ZSB1bnJlYWNoYWJsZSBjb2RlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBBZGp1c3QgY2FsbCB0byB0eXBlX3VuaWZpY2F0aW9uX3JlYWwuCgkodW5pZnkpOiBMaWtld2lzZS4KCjIwMDUtMDctMDUgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoY2xhc3MubywgZGVjbDIubyk6IEFkanVzdCBkZXBlbmRlbmNpZXMuCgkqIGNsYXNzLmM6IEluY2x1ZGUgdHJlZS1kdW1wLmguCgkqIGRlY2wyLmM6IEluY2x1ZGUgdHJlZS1kdW1wLmguCgoyMDA1LTA3LTAyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGR1bXAuYzogVXNlIGR1bXBfc3RyaW5nX2ZpZWxkLgoKMjAwNS0wNy0wMyAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKEdDQ19ESUFHX1NUWUxFKTogI3VuZGVmIGJlZm9yZSBkZWZpbmluZy4gIENoYW5nZQoJbWluaW11bSBHQ0MgdmVyc2lvbiBmb3IgZm9ybWF0IGNoZWNraW5nIHRvIDQuMS4KCjIwMDUtMDctMDIgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChjYzFwbHVzLWNoZWNrc3VtLmMpOiBVc2UKCWJ1aWxkL2dlbmNoZWNrc3VtJChidWlsZF9leGVleHQpLCBub3QgYnVpbGQvZ2VuY2hlY2tzdW0kKGV4ZWV4dCkuCgoyMDA1LTA3LTAyICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG5hbWUtbG9va3VwLmMsIHBhcnNlci5jOiBVc2UgJXEsICU8IGFuZCAlPiB0byBxdW90ZSBpbgoJZGlhZ25vc3RpY3MuCgoyMDA1LTA3LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAobG9jYXRpb25fb2YpOiBBZGQgY29tbWVudC4KCShsb2NhdGVfZXJyb3IsIGNwX2Vycm9yX2F0LCBjcF93YXJuaW5nX2F0LCBjcF9wZWR3YXJuX2F0KTogUmVtb3ZlLgoJKiBjcC10cmVlLmggKGNwX2Vycm9yX2F0LCBjcF93YXJuaW5nX2F0LCBjcF9wZWR3YXJuX2F0KTogUmVtb3ZlLgoJKiBjYWxsLmMsIGNsYXNzLmMsIGRlY2wuYywgZGVjbDIuYywgZnJpZW5kLmMsIGluaXQuYywKCW5hbWUtbG9va3VwLmMsIHBhcnNlci5jLCBwdC5jLCBzZWFyY2guYywgc2VtYW50aWNzLmMsIHR5cGVjay5jLAoJdHlwZWNrMi5jOiBVc2UgJysnIGZsYWcgaW5zdGVhZCBvZiAlSiwgY3BfZXJyb3JfYXQsIGNwX3dhcm5pbmdfYXQKCW9yIGNwX3BlZHdhcm5fYXQuICBNYXJrIHVwIHNvbWUgZGlhZ25vc3RpYyBzdHJpbmdzIHdpdGggTl8uCgoyMDA1LTA2LTMwICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGRlY2wuYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlc19mb3JfcGFybXMpOiBDYWxsIHJlbGF5b3V0X2RlY2wKCWluc3RlYWQgb2YgbGF5b3V0X2RlY2wuCgoyMDA1LTA2LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY3AtbGFuZy5jOiBObyBuZWVkIHRvIGluY2x1ZGUgY3h4LXByZXR0eS1wcmludC5oLgoJKiBlcnJvci5jIChjcF9wcmludGVyKTogVXBkYXRlIHNpZ25hdHVyZS4gIE5vIG5lZWQgdG8gcHJvY2VzcwoJZmxhZ3MuCgkocHJpbnRfaW5zdGFudGlhdGlvbl9wYXJ0aWFsX2NvbnRleHQpOiBPdXRwdXQgbGFzdCBuZXdsaW5lCgl3aXRoIHBwX2Jhc2VfbmV3bGluZS4KCSogTWFrZS1sYW5nLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwNS0wNi0zMCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogUmVwbGFjZSBERUNMX1RIUkVBRF9MT0NBTCB3aXRoCglERUNMX1RIUkVBRF9MT0NBTF9QLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoZ3Jva3ZhcmRlY2wpOiBTZXQgdGhlIGRlZmF1bHQgREVDTF9UTFNfTU9ERUwgaGVyZS4KCjIwMDUtMDYtMjggIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogVXNlIGludmFsaWRfY29udmVyc2lvbiBob29rLgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogVXNlIGludmFsaWRfYmluYXJ5X29wIGhvb2suCgkoYnVpbGRfdW5hcnlfb3ApOiBVc2UgaW52YWxpZF91bmFyeV9vcCBob29rLgoKMjAwNS0wNi0yOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3AvZXhjZXB0Lm8pOiBEZXBlbmQgb24gJChUQVJHRVRfSCkKCSogZXhjZXB0LmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgdW53aW5kX3Jlc3VtZV9saWJmdW5jLgoJKiBkb2MvdG0udGV4aTogRG9jdW1lbnQgVEFSR0VUX0FTTV9UVFlQRQoKMjAwNS0wNi0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBQYXNzIGluIG5hbWVkIGFyZ3VtZW50IGxpc3QgdG8KCWBjaGVja19mdW5jdGlvbl9hcmd1bWVudHMnLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoKMjAwNS0wNi0yNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtdHJlZS5oIChsYW5nX2NoZWNrX2ZhaWxlZCk6IEFkZCBub3JldHVybiBhdHRyaWJ1dGUuCgoyMDA1LTA2LTI1ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogYWxsIGZpbGVzOiBVcGRhdGUgRlNGIGFkZHJlc3MgaW4gY29weXJpZ2h0IGhlYWRlcnMuCgoyMDA1LTA2LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTkzMTcKCSogc2VtYW50aWNzLmMgKHNpbXBsaWZ5X2FnZ3JfaW5pdF9leHByKTogVXNlCglDQUxMX0VYUFJfUkVUVVJOX1NMT1RfT1BULCBub3QgQ0FMTF9FWFBSX0hBU19SRVRVUk5fU0xPVF9BRERSLgoKMjAwNS0wNi0yMyAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIHB0LmMgKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogUmVtb3ZlIHN1cGVyZmx1b3VzIGFzc2VydGlvbi4KCjIwMDUtMDYtMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBBZGQgZm9ybWF0IGF0dHJpYnV0ZS4KCSogdHlwZWNrLmMgKGNoZWNrX2Zvcl9jYXN0aW5nX2F3YXlfY29uc3RuZXNzLAoJYnVpbGRfc3RhdGljX2Nhc3RfMSk6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKHJlYWRvbmx5X2Vycm9yLCBjeHhfaW5jb21wbGV0ZV90eXBlX2RpYWdub3N0aWMpOgoJTGlrZXdpc2UuCgoyMDA1LTA2LTE3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCglQUiBjKysvMTc0MTMKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogQXBwbHkgdGVtcGxhdGUgdHlwZSBkZWR1Y3Rpb24gZXZlbgoJdG8gcHJvY2VkdXJlIHBhcmFtZXRlcnMgdGhhdCBhcmUgbm90IGRlcGVuZGVudCBvbiBhIHRlbXBsYXRlCglwYXJhbWV0ZXIuCgoyMDA1LTA2LTE2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnR0aS5jIChnZXRfdGluZm9fZGVjbCk6IEF2b2lkIGNhY2hpbmcgdGluZm9fZGVzY3Mgd2hlbiBpdCBtaWdodAoJY2hhbmdlLgoJKGNyZWF0ZV9wc2V1ZG9fdHlwZV9pbmZvKTogRmlyc3QgcGFyYW1ldGVyIGlzIGFuIGludC4KCjIwMDUtMDYtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwNjc4CgkqIGVycm9yLmMgKGR1bXBfZXhwcikgPENPTVBPTkVOVF9SRUYgY2FzZT46IENoZWNrIERFQ0xfTkFNRSBpcyBub3QKCW51bGwuCgoJKiBNYWtlLWxhbmcuaW46IFJlZm9ybWF0IHNvbWUgbG9uZyBsaW5lcy4KCShndC1jcC1ydHRpLmgpOiBOZXcgdGFyZ2V0LgoJKGNwL3J0dGkubyk6IEFkZCBkZXBlbmRlbmN5LgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IEFkZCBjcC9ydHRpLmMuCgkqIGNwLXRyZWUuaCAoQ1BUSV9USV9ERVNDX1RZUEUsIENQVElfQkxUTl9ERVNDX1RZUEUsCglDUFRJX1BUUl9ERVNDX1RZUEUsIENQVElfQVJZX0RFU0NfVFlQRSwgQ1BUSV9GVU5DX0RFU0NfVFlQRSwKCUNQVElfRU5VTV9ERVNDX1RZUEUsIENQVElfQ0xBU1NfREVTQ19UWVBFLAoJQ1BUSV9TSV9DTEFTU19ERVNDX1RZUEUsIENQVElfVk1JX0NMQVNTX0RFU0NfVFlQRSwKCUNQVElfUFRNX0RFU0NfVFlQRSwgQ1BUSV9CQVNFX0RFU0NfVFlQRSk6IFJlbW92ZS4KCSh0aV9kZXNjX3R5cGVfbm9kZSwgYmx0bl9kZXNjX3R5cGVfbm9kZSwgcHRyX2Rlc2NfdHlwZV9ub2RlLAoJYXJ5X2Rlc2NfdHlwZV9ub2RlLCBmdW5jX2Rlc2NfdHlwZV9ub2RlLCBlbnVtX2Rlc2NfdHlwZV9ub2RlLAoJY2xhc3NfZGVzY190eXBlX25vZGUsIHNpX2NsYXNzX2Rlc2NfdHlwZV9ub2RlLAoJdm1pX2NsYXNzX2Rlc2NfdHlwZV9ub2RlLCBwdG1fZGVzY190eXBlX25vZGUsCgliYXNlX2Rlc2NfdHlwZV9ub2RlKTogUmVtb3ZlLgoJKiBkZWNsLmM6IEFkanVzdCBkb2N1bWVudGF0aW9uIG9mIGdsb2JhbCB0cmVlcy4KCSogcnR0aS5jIChUSU5GT19QU0VVRE9fVFlQRSwgVElORk9fVlRBQkxFX0RFQ0wsCglUSU5GT19SRUFMX05BTUUpOiBSZW1vdmUuCgkoc3RydWN0IHRpbmZvX3MpOiBOZXcuCgkoZW51bSB0aW5mb19raW5kKTogTmV3LgoJKHRpbmZvX2Rlc2NzKTogTmV3LgoJKGdldF90aW5mb19kZWNsKTogQWRqdXN0IHVzZSBvZiB0aW5mbyBkZXNjcmlwdG9yLgoJKHRpbmZvX2Jhc2VfaW5pdCwgZ2VuZXJpY19pbml0aWFsaXplciwgcHRyX2luaXRpYWxpemVyLAoJcHRtX2luaXRpYWxpemVyLCBjbGFzc19pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKGdldF9wc2V1ZG9fdGlfaW5pdCk6IFRha2UgZGVzY3JpcHRvciBpbmRleC4gQWRqdXN0LgoJKGNyZWF0ZV9wc2V1ZG9fdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoZ2V0X3BzZXVkb190aV9kZXNjKTogUmV0dXJuIGRlc2NyaXB0b3IgaW5kZXguIEFkanVzdC4KCShjcmVhdGVfdGluZm9fdHlwZXMpOiBBZGp1c3QgdXNlIG9mIGNyZWF0ZV9wc2V1ZG9fdHlwZV9pbmZvLgoJKGVtaXRfdGluZm9fZGVjbCk6IEFkanVzdCB1c2Ugb2YgdGluZm8gZGVzY3JpcHRvci4KCjIwMDUtMDYtMTQgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IE9ubHkgY2hlY2sgVFJFRV9PVkVSRkxPVyBvbiBJTlRFR0VSX0NTVC4KCjIwMDUtMDYtMTMgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogTWFrZS1sYW5nLmluIChjKysuaW5zdGFsbC1tYW4pOiBEb2Vzbid0IHJlYWxseSBkZXBlbmQgb24gaW5zdGFsbGRpcnMuCgkocnVsZSBmb3IgaW5zdGFsbGluZyBnKysuMSBtYW5wYWdlKTogRG9lcyBkZXBlbmQgb24gaW5zdGFsbGRpcnMuCgoyMDA1LTA2LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDc4OQoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogQ2xlYXIgcnVudGltZSBydW50aW1lIGluaXRpYWxpemF0aW9uIGlmCglpbi1jbGFzcyBkZWNsJ3MgaW5pdGlhbGl6ZXIgaXMgYmFkLgoKCVBSIGMrKy8yMTkyOQoJKiBwYXJzZXIuYyAoc3RydWN0IGNwX3BhcnNlcik6IERvY3VtZW50IHRoYXQgc2NvcGUgY291bGQgYmUKCWVycm9yX21hcmsuCgkoY3BfcGFyc2VyX2RpYWdub3NlX2ludmFsaWRfdHlwZV9uYW1lKTogQ29wZSB3aXRoIGVycm9yX21hcmsgZm9yCglzY29wZS4KCShjcF9wYXJzZXJfbmVzdGVkX25hbWVfc3BlY2lmaWVyKTogUmV0dXJuIE5VTExfVFJFRSBvbiBlcnJvci4KCShjcF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uKTogRGVhbCB3aXRoIG51bGwgb3IgZXJyb3JfbWFyawoJc2NvcGUuCgkoY3BfcGFyc2VyX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXIpOiBBZGp1c3QKCWNwX3BhcnNlcl9uZXN0ZWRfbmFtZV9zcGVjaWZpZXIgY2FsbC4KCgkqIHBhcnNlciAoY3BfcGFyc2VyX3NraXBfdG9fZW5kX29mX2Jsb2NrX29yX3N0YXRlbWVudCk6IENsZWFudXAuCgoyMDA1LTA2LTEyICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBjKysvMjE5MzAKCSogZXJyb3IuYyAoZHVtcF9leHByKTogVU5BUllfUExVU19FWFBSIG5lZWQgbm90IGhhbmRsZSB2b2lkIHR5cGVzLgoJVHJlYXQgQ09OVkVSVF9FWFBSIGlkZW50aWNhbGx5IHRvIE5PUF9FWFBSLgoKMjAwNS0wNi0xMCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCVBSIGMrKy8xMDYxMQoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBTYW1lLgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogSGFuZGxlIHZlY3RvcnMuCgkoY29tbW9uX3R5cGUpOiBTYW1lLgoJKHR5cGVfYWZ0ZXJfdXN1YWxfYXJpdGhtZXRpY19jb252ZXJzaW9ucyk6IFNhbWUuCgoyMDA1LTA2LTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTQ5NwoJKiBjcC10cmVlLmRlZiAoVVNJTkdfREVDTCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiBjcC10cmVlLmggKERFQ0xfREVQRU5ERU5UX1ApOiBOZXcuCgkoVVNJTkdfREVDTF9ERUNMUywgVVNJTkdfREVDTF9TQ09QRSk6IE5ldy4KCSogY2xhc3MuYyAoaGFuZGxlX3VzaW5nX2RlY2wpOiBNb3ZlIG1vc3Qgb2YgdGhlIHByb2Nlc3NpbmcgdG8gLi4uCgkqIG5hbWUtbG9va3VwLmMgKGRvX2NsYXNzX3VzaW5nX2RlY2wpOiAuLi4gaGVyZS4gIE1ha2Ugc3RyaWN0ZXIuCgkocHVzaF91c2luZ19kZWNsKTogVXNlIFVTSU5HX0RFQ0xfU0NPUEUuCgkoY3BfZW1pdF9kZWJ1Z19pbmZvX2Zvcl91c2luZyk6IE1ha2UgZXh0ZXJuLgoJKiBjeHgtcHJldHR5LXByaW50LmMgKHBwX2N4eF9zdGF0ZW1lbnQpIDxVU0lOR19ERUNMIGNhc2U+OiBBZGp1c3QuCgkqIG5hbWUtbG9va3VwLmggKGNwX2VtaXRfZGVidWdfaW5mb19mb3JfdXNpbmcpOiBEZWNsYXJlLgoJKiBwdC5jICh0c3Vic3RfZGVjbCkgPFVTSU5HX0RFQ0wgY2FzZT46IFVzZSBkb19jbGFzc191c2luZ19kZWNsCgl3aGVuIHRzdWJzdGluZy4KCSh0c3Vic3RfZXhwcik6IFVzZSBVU0lOR19ERUNMX1NDT1BFLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBVc2UgREVDTF9ERVBFTkRFTlRfUC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCjIwMDUtMDYtMDggIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzE5ODk0CgkqIHB0LmMgKHRzdWJzdCk6IFJlamVjdCBwb2ludGVyLXRvLW1lbWJlciBvZiB0eXBlIHZvaWQuCgoJUFIgYysrLzIwNTYzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbGFiZWxfZGVjbGFyYXRpb24pOiBEZWFsIHdpdGggaW52YWxpZC9taXNzaW5nCglpZGVudGlmaWVycy4KCjIwMDUtMDYtMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoREVGQVVMVF9BUkcpOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCSogY3AtdHJlZS5oIChERUZBUkdfSU5TVEFOVElBVElPTlMpOiBOZXcuCgkoc3RydWN0IHRyZWVfZGVmYXVsdF9hcmcpOiBBZGQgaW5zdGFudGlhdGlvbnMgbWVtYmVyLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xhdGVfcGFyc2luZ19kZWZhdWx0X2FyZ3MpOiBBZGp1c3QgdG8gdXNlIGEKCVZFQy4KCSogcHQuYyAodHN1YnN0X2FyZ190eXBlcyk6IExpa2V3aXNlLgoKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfZGVmYXVsdF9hcmdzKTogRml4IG92ZXJlYWdlcgoJYXNzZXJ0IGluIHByZXZpb3VzIHBhdGNoLgoKMjAwNS0wNi0wNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBlcnJvci5jIChsb2NhdGVfZXJyb3IpOiBVc2UgZ21zZ2lkIGluc3RlYWQgb2YgbXNnaWQgZm9yIGFyZ3VtZW50CgluYW1lLgoJKGNwX2Vycm9yX2F0LCBjcF93YXJuaW5nX2F0LCBjcF9wZWR3YXJuX2F0KTogTGlrZXdpc2UuCgoyMDA1LTA2LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIDIxOTAzCgkqIGNwLXRyZWUuZGVmIChERUZBVUxUX0FSRyk6IERvY3VtZW50IFRSRUVfQ0hBSU4gdXNlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2xhdGVfcGFyc2luZ19kZWZhdWx0X2FyZ3MpOiBQcm9wYWdhdGUgcGFyc2VkCglhcmd1bWVudCB0byBhbnkgZWFybHkgaW5zdGFudGlhdGlvbnMuCgkqIHB0LmMgKHRzdWJzdF9hcmdfdHlwZXMpOiBDaGFpbiBlYXJseSBpbnN0YW50aWF0aW9uIG9mIGRlZmF1bHQgYXJnLgoKCVBSIGMrKy8yMDYzNwoJKiBjcC10cmVlLmggKGFkZF9tZXRob2QpOiBBZGQgdXNpbmdfZGVjbCBwYXJhbWV0ZXIuCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBBZGQgdXNpbmdfZGVjbCBwYXJhbWV0ZXIuICBBZGp1c3QgZXJyb3IKCW1lc3NhZ2VzLgoJKGhhbmRsZV91c2luZ19kZWNsKTogUGFzcyB0aGUgdXNpbmcgZGVjbCB0byBhZGRfbWV0aG9kLgoJKGNsb25lX2Z1bmN0aW9uX2RlY2wpOiBBZGp1c3QgYWRkX21lbWJlciBjYWxscy4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAobGF6aWx5X2RlY2xhcmVfZm4pOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IFVzZSBpbmZvcm0sIG5vdCB3YXJuaW5nLgoKMjAwNS0wNi0wNiAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5zZT4KCgkqIGNvbmZpZy1sYW5nLmluICh0YXJnZXRfbGlicyk6IFJlbW92ZSB0YXJnZXQtZ3BlcmYuCgoyMDA1LTA2LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTYxOQoJKiBjcC10cmVlLmggKERFQ0xfSVNfQlVJTFRJTl9DT05TVEFOVF9QKTogTmV3IG1hY3JvLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbik6IEFsbG93IG5vbi1jb25zdGFudAoJZXhwcmVzc2lvbnMgYXMgYXJndW1lbnRzIHRvIF9fYnVpbHRpbl9jb25zdGFudF9wLgoJKiB0cmVlLmMgKGJ1aWx0aW5fdmFsaWRfaW5fY29uc3RhbnRfZXhwcl9wKTogVXNlCglERUNMX0lTX0JVSUxUSU5fQ09OU1RBTlRfUC4KCjIwMDUtMDYtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxODUzCgkqIHR5cGVjay5jIChjYXN0c19hd2F5X2NvbnN0bmVzc19yKTogRG8gbm90IGRyb3AgY3YtcXVhbGlmaWVycyBvbgoJdGhlIHBvaW50ZWQtdG8gdHlwZSBmb3IgYSBwb2ludGVyLXRvLW1lbWJlci4KCglQUiBjKysvMjEzMzYKCSogY3AtdHJlZS5oIChncm9rX29wX3Byb3BlcnRpZXMpOiBSZW1vdmUgZnJpZW5kcCBwYXJhbWV0ZXIuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IEFkanVzdCBjYWxsLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IERldGVybWluZSB0aGUgY2xhc3Mgb2Ygd2hpY2ggdGhlIGZ1bmN0aW9uIGlzCglhIG1lbWJlciBieSBsb29raW5nIGF0IGl0cyBERUNMX0NPTlRFWFQsIG5vdCBjdXJyZW50X2NsYXNzX3R5cGUuCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogQWRqdXN0IGNhbGwgdG8gZ3Jva19vcF9wcm9wZXJ0aWVzLgoKMjAwNS0wNi0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IEFkZCBhZGR0aW9uYWwgYXJnIHRvIHdhcm5pbmcgY2FsbC4KCglQUiBjKysvMjEyODAKCSogTWFrZS1sYW5nLmluIChtZXRob2Qubyk6IEFkZCBkaWFnbm9zdGljLmgKCSogZGVjbC5jIChzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBVc2UgZGVjbCdzIGxvY2F0aW9uIGZvciBmaWxlCglpbmZvLgoJKiBkZWNsMi5jIChjcF9maW5pc2hfZmlsZSk6IFNldCBpbnB1dF9sb2NhdGlvbiBiZWZvcmUgc3ludGhlc2l6aW5nCglhIGZ1bmN0aW9uLgoJKG1hcmtfdXNlZCk6IFdoZW4gZGVmZXJyaW5nIGEgc3ludGhlc2l6ZWQgZnVuY3Rpb24sIHNhdmUgY3VycmVudAoJbG9jYXRpb24uICBEbyBub3Qgc2V0IGZ1bmN0aW9uJ3MgbG9jYXRpb24gd2hlbiBhY3R1YWxseQoJc3ludGhlc2l6aW5nIGl0LgoJKiBtZXRob2QuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogU2V0IHRoZSBmdW5jdGlvbnMgc291cmNlIGxvY2F0aW9uLiAgU2hvdwoJbmVlZGVkIGxvY2F0aW9uIGlmIGVycm9ycyBhcmUgZW1pdHRlZC4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFNpbXBsaWZ5IHNwZWNpYWxpemF0aW9uIGhhbmRsaW5nLiBSZW1vdmUKCXVubmVlZGVkIENMQVNTVFlQRV9URU1QTEFURV9JTlNUQU5USUFUSU9OIGNoZWNrLgoJKiBtYW5nbGUuYyAoZGlzY3JpbWluYXRvcl9mb3JfbG9jYWxfZW50aXR5KTogVXNlIFZFQ19pbmRleC4KCglQUiBjKysvMjAzNTAKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IGFsbCBvZiBERUNMX1VTRV9URU1QTEFURS4KCglQUiBjKysvMjExNTEKCSogbmFtZS1sb29rdXAuYyAocHVzaHRhZyk6IFB1c2ggbG9jYWwgY2xhc3MgZXZlbiBpbiBhIHRlbXBsYXRlLgoKMjAwNS0wNS0zMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjExNjUKCSogaW5pdC5jIChpbnRlZ3JhbF9jb25zdGFudF92YWx1ZSk6IENoZWNrIHRoZSB0eXBlIG9mIHRoZQoJaW5pdGlhbGl6ZXIsIG5vdCB0aGUgZGVjbC4KCjIwMDUtMDUtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxNzg0CgkqIG5hbWUtbG9va3VwLmMgKGRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogSWdub3JlIGJ1aWx0aW4KCWZ1bmN0aW9ucywgZXZlbgl3aGVuIHRoZSB1c2VkIG5hbWUgaXMgbm90IGEgZnVuY3Rpb24uCgoyMDA1LTA1LTMwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogb3BlcmF0b3JzLmRlZiwgb3B0aW1pemUuYzogVXBkYXRlIGNvcHlyaWdodC4KCjIwMDUtMDUtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxMjEwCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IFBlcm1pdCBjb252ZXJzaW9ucyB0byBjb21wbGV4Cgl0eXBlcyBpZiBjb252ZXJzaW9uIHRvIHRoZSBjb3JyZXNwb25kaW5nIHNjYWxhciB0eXBlIHdvdWxkIGJlCglwZXJtaXR0ZWQuCgoJUFIgYysrLzIxMzQwCgkqIG1ldGhvZC5jIChpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBDbGVhciBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wKCXdoZW4gZ2VuZXJhdGluZyBpbXBsaWNpdCBkZWNsYXJhdGlvbi4KCjIwMDUtMDUtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIxNjE0CgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IERvIG5vdCBhdHRlbXB0Cgljb252ZXJzaW9ucyB0byBiYXNlIGNsYXNzZXMgb2YgaW5jb21wbGV0ZSB0eXBlcy4KCjIwMDUtMDUtMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoYWRkX3N0bXQpOiBBZGQgQysrIGZyb250ZW5kIHNwZWNpZmljIHZlcnNpb24uCgkqIGNwLXRyZWUuaCAoU1RNVF9JU19GVUxMX0VYUFJfUCk6IERlZmluZS4KCShzdG10c19hcmVfZnVsbF9leHByc19wKTogRGVjbGFyZS4KCjIwMDUtMDUtMjcgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoJICAgIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AZ2NjLmdudS5vcmc+CgoJKiBjcC10cmVlLmRlZiAoVU5BUllfUExVU19FWFBSKTogTmV3IEMrKyB1bmFyeSB0cmVlIGNvZGUuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdW5hcnlfZXhwcmVzc2lvbik6IFVzZSBVTkFSWV9QTFVTX0VYUFIgaW5zdGVhZAoJb2YgQ09OVkVSVF9FWFBSLgoJKGNwX3BhcnNlcl91bmFyeV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZSwgYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfY29weSwgdHN1YnN0X2NvcHlfYW5kX2J1aWxkKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoYW1iaV9vcF9wLCBncm9rX29wX3Byb3BlcnRpZXMpOiBMaWtld2lzZS4KCSogZHVtcC5jIChkdW1wX29wKTogTGlrZXdpc2UuCgkqIGxleC5jIChpbml0X29wZXJhdG9ycyk6IExpa2V3aXNlLgoJKiBvcGVyYXRvcnMuZGVmICgiKyIpOiBMaWtld2lzZS4KCSogY3AtZ2ltcGxpZnkuYyAoY3BfZ2ltcGxpZnlfZXhwcik6IEhhbmRsZSBVTkFSWV9QTFVTX0VYUFIgbGlrZSBhCgljb252ZXJzaW9uLCBpZiB0aGUgcmVzdWx0IGFuZCBhcmd1bWVudCB0eXBlcyBkaWZmZXIuCgkqIHRyZWUuYyAoZm9sZF9pZl9ub3RfaW5fdGVtcGxhdGUpOiBGb2xkIFVOQVJZX1BMVVNfRVhQUiBtdWNoCglsaWtlIGEgTk9QX0VYUFIgd2hlbiAhcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoKCSogY3h4LXByZXR0eS1wcmludC5jIChwcF9jeHhfY2FzdF9leHByZXNzaW9uKTogUHJvdG90eXBlLgoJKHBwX2N4eF91bmFyeV9leHByZXNzaW9uKTogSGFuZGxlIG5ldyBVTkFSWV9QTFVTX0VYUFIgdHJlZSBjb2RlLgoKMjAwNS0wNS0yNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE0NTUKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogQ29wZSB3aXRoIGluY29tcGxldGUgYnV0IGVxdWFsCgljbGFzc2VzLiAgUmVvcmRlciBpZi4KCglQUiBjKysvMjE2ODEKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9sYXRlX3BhcnNpbmdfZm9yX21lbWJlcik6IERpc2FibGUgYWNjZXNzCgljaGVja2luZyBmb3IgdGVtcGxhdGUgZnVuY3Rpb25zLgoKMjAwNS0wNS0yNiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjE3NjgKCSogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogQ2hhbmdlIGVycm9yIG1lc3NhZ2UgYWNjb3JkaW5nCgl0byBjb2RpbmcgY29udmVudGlvbnMuCgoyMDA1LTA1LTI2ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IEZpeCBxdW90aW5nIGluIGVycm9yIG1lc3NhZ2UuCgoyMDA1LTA1LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGxpYmdjai8yMTY5MgoJKiBjcC10cmVlLmggKG1ha2VfYWxpYXNfZm9yKTogRGVjbGFyZS4KCSogZGVjbDIuYyAoYnVpbGRfamF2YV9tZXRob2RfYWxpYXNlcyk6IE5ldy4KCShjcF9maW5pc2hfZmlsZSk6IENhbGwgaXQuCgkqIG1ldGhvZC5jIChtYWtlX2FsaWFzX2Zvcik6IFNwbGl0IG91dCBmcm9tIC4uLgoJKG1ha2VfYWxpYXNfZm9yX3RodW5rKTogLi4uIGhlcmUuCgoyMDA1LTA1LTI1ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCVBSIGMrKy8yMTY4NgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lkX2V4cHJlc3Npb24pOiBGaXggcXVvdGluZyBpbiBlcnJvciBtZXNzYWdlLgoKMjAwNS0wNS0yNSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE1vdmUgd2FybmluZyBjb250cm9sIGZyb20gaWYoKSB0bwoJd2FybmluZyhPUFRfKikuCgkqIG5hbWUtbG9va3VwLmMgKHBhcnNlX3VzaW5nX2RpcmVjdGl2ZSk6IExpa2V3aXNlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2VsYWJvcmF0ZWRfdHlwZV9zcGVjaWZpZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoaGFuZGxlX2NvbV9pbnRlcmZhY2VfYXR0cmlidXRlKTogTGlrZXdpc2UuCgoyMDA1LTA1LTI0ICBaaWVtb3dpdCBMYXNraSAgPHpsYXNraUBhcHBsZS5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfdHlwZSk6IERvIG5vdCBpc3N1ZSBDKysgQUJJIHdhcm5pbmdzCglmb3IgT2JqQyBzdHJ1Y3RzLgoJKiBkZWNsLmMgKG9iamNfbWFya19sb2NhbHNfdm9sYXRpbGUpOiBTdHJlYW1saW5lIGJ5IGNhbGxpbmcKCW9iamNfdm9sYXRpbGl6ZV9kZWNsKCkuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfb2JqY19tZXNzYWdlX2V4cHJlc3Npb24pOiBBbGxvdyBzaW1wbGUKCXR5cGUgc3BlY2lmaWVycyAoaW5zdGVhZCBvZiBtZXJlbHkgdHlwZSBuYW1lcykgYXMgbWVzc2FnZQoJcmVjZWl2ZXJzLgoJKiBwdC5jICh0ZW1wbGF0ZV9hcmdzX2VxdWFsKTogRG8gbm90IGNhbGwgb2JqY19jb21wdHlwZXMoKS4KCSogdHlwZWNrLmMgKGNvbXBvc2l0ZV9wb2ludGVyX3R5cGUpOiBJZiBib3RoIHBvaW50ZXJzIGFyZQoJT2JqQy1lc3F1ZSwgYXJiaXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdDsgZG8gbm90IGNhbGwKCW9iamNfY29tcHR5cGVzKCkuCgkoY29tcHR5cGVzKTogRG8gbm90IGNhbGwgb2JqY19jb21wdHlwZXMoKS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQ2FsbCBvYmpjX2NvbXBhcmVfdHlwZXMoKS4KCShjb21wX3B0cl90dHlwZXNfcmVhbCk6IENhbGwgb2JqY190eXBlX3F1YWxzX21hdGNoKCkgYmVmb3JlCgljb25jbHVkaW5nIHRoYXQgdHlwZXMgZG8gbm90IG1hdGNoLgoKMjAwNS0wNS0yNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQysrLzIxNjQ1CgkqIG9wdGltaXplLmMgKHVwZGF0ZV9jbG9uZWRfcGFybSk6IENvcHkgdGhlIFRZUEUgYWxzbyBmcm9tIHRoZQoJb3JpZ2luYWwgb25lLgoKMjAwNS0wNS0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzIxNDk1CgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBGaXggInN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWVkIGZvciIKCWVycm9yIHJlcG9ydGluZy4KCjIwMDUtMDUtMTkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwYXJzZXIuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA1LTA1LTE4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cy1kdW1teSk6IE5ldy4KCShjYzFwbHVzLWNoZWNrc3VtLmMpOiBOZXcuCgkoY2MxcGx1cy1jaGVja3N1bS5vKTogTmV3LgoJKGNjMXBsdXMpOiBBZGQgY2MxcGx1cy1jaGVja3N1bS5vLgoKMjAwNS0wNS0xNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIEMrKy8xOTY2NAoJKiBkZWNsMi5jIChkZXRlcm1pbmVfdmlzaWJpbGl0eSk6IERvbid0IHNldCB2aXNpYmlsaXR5IHRvCgloaWRkZW4gaWYgaXQgaGFzIGJlZW4gc2V0IGV4cGxpY2l0bHkgYnkgdXNlci4KCjIwMDUtMDUtMTcgIFppZW1vd2l0IExhc2tpICA8emxhc2tpQGFwcGxlLmNvbT4KCSAgICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCglZZXQgbW9yZSBPYmplY3RpdmUtQysrLi4uCgoJKiBjcC1vYmpjcC1jb21tb24uaCAoY3h4X2dldF9hbGlhc19zZXQpOiBNb3ZlIGZyb20KCWhlcmUuLi4KCShjeHhfd2Fybl91bnVzZWRfZ2xvYmFsX2RlY2wpOiBMaWtld2lzZS4KCShjcF9leHByX3NpemUpOiBMaWtld2lzZS4KCShjcF90cmVlX3NpemUpOiBMaWtld2lzZS4KCShjcF92YXJfbW9kX3R5cGVfcCk6IExpa2V3aXNlLgoJKGN4eF9pbml0aWFsaXplX2RpYWdub3N0aWNzKTogTGlrZXdpc2UuCgkoY3h4X3R5cGVzX2NvbXBhdGlibGVfcCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IHRvIGhlcmUuCgkoZG9fcG9wbGV2ZWwpOiBBZGQuCgkqIGxleC5jIChEX09CSkMpOiBBZGQuCgkoaW5pdF9yZXN3b3Jkcyk6IEFkZC4KCSogTWFrZS1sYW5nLmluIChjcC9wdC5vKTogQWRkIGNwL2NwLW9iamNwLWNvbW1vbi5oLgoJKiBwYXJzZXIuYzogQWRkIGMtY29tbW9uLmggaW5jbHVkZS4KCSogcHQuYzogQWRkIGMtY29tbW9uLmggYW5kIGNwLW9iamNwLWNvbW1vbi5oIGluY2x1ZGVzLgoJKHRlbXBsYXRlX2FyZ3NfZXF1YWwpOiBVc2Ugb2JqY19jb21wdHlwZXMgYXMgd2VsbC4KCSh0c3Vic3RfY29weV9hbmRfYnVpbGQpOiBVc2Ugb2JqY3BfdHN1YnN0X2NvcHlfYW5kX2J1aWxkIGFzIHdlbGwuCgkqIHNlbWFudGljcy5jIChkb19wb3BsZXZlbCk6IFJlbW92ZSBzdGF0aWMuCgoJKiBkZWNsLmMgKG9iamNfbWFya19sb2NhbHNfdm9sYXRpbGUpOiBEb24ndCBjaGFuZ2UgZGVjbHMgdGhhdCBhcmUKCWFscmVhZHkgb2suCgkqIGRlY2wyLmMgKGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbik6IEFkZCBjb2RlIHRvIGluaXRpYWxpemUKCU9iamVjdGl2ZSBDKysgZWFybHkgZW5vdWdoLgoJKiBsZXguYyAoc3RydWN0IHJlc3dvcmQgcmVzd29yZHMpOiBBZGQgT2JqZWN0aXZlLUMrKyBzdXBwb3J0LgoJKiBwYXJzZXIuYyAoY3BfbGV4ZXJfZ2V0X3ByZXByb2Nlc3Nvcl90b2tlbik6IEFkZCBPYmplY3RpdmUtQysrLgoJKGNwX3BhcnNlcl9vYmpjX21lc3NhZ2VfcmVjZWl2ZXIpOiBBZGQuCgkoY3BfcGFyc2VyX29iamNfbWVzc2FnZV9hcmdzKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfbWVzc2FnZV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfZW5jb2RlX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19kZWZzX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19wcm90b2NvbF9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfc2VsZWN0b3JfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY192aXNpYmlsaXR5X3NwZWMpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19tZXRob2RfdHlwZSk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3Byb3RvY29sX3F1YWxpZmllcnMpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY190eXBlbmFtZSk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3NlbGVjdG9yX3ApOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19zZWxlY3Rvcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX21ldGhvZF9rZXl3b3JkX3BhcmFtcyk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX21ldGhvZF90YWlsX3BhcmFtc19vcHQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19pbnRlcnN0aXRpYWxfY29kZSk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX21ldGhvZF9zaWduYXR1cmUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19tZXRob2RfcHJvdG90eXBlX2xpc3QpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19tZXRob2RfZGVmaW5pdGlvbl9saXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfY2xhc3NfaXZhcnMpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19pZGVudGlmaWVyX2xpc3QpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19hbGlhc19kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2NsYXNzX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfcHJvdG9jb2xfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19wcm90b2NvbF9yZWZzX29wdCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3N1cGVyY2xhc3Nfb3JfY2F0ZWdvcnkpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19jbGFzc19pbnRlcmZhY2UpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb2JqY19jbGFzc19pbXBsZW1lbnRhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2VuZF9pbXBsZW1lbnRhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfdHJ5X2NhdGNoX2ZpbmFsbHlfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX29iamNfc3luY2hyb25pemVkX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3Rocm93X3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9vYmpjX3N0YXRlbWVudCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBBZGQgT2JqZWN0aXZlLUMrKy4KCShjcF9wYXJzZXJfc3RhdGVtZW50KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3NpbXBsZV90eXBlX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl90eXBlX25hbWUpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfcGFyYW1ldGVyX2RlY2xhcmF0aW9uX2xpc3QpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbWVtYmVyX2RlY2xhcmF0aW9uKSBMaWtld2lzZS4KCSogdHJlZS5jOiBJbmNsdWRlIGRlYnVnLmguCgkqIHR5cGVjay5jIChjb21wb3NpdGVfcG9pbnRlcl90eXBlKTogQWRkIE9iamVjdGl2ZS1DKysgc3VwcG9ydC4KCShmaW5pc2hfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByKTogTGlrZXdpc2UuCgkoYnVpbGRfZnVuY3Rpb25fY2FsbCk6IEFsbG93IG9iamMgdG8gcmV3cml0ZSBGVU5DVElPTl9ERUNMcy4KCShidWlsZF9tb2RpZnlfZXhwcik6IEFsbG93IG9iamMgdG8gZ2VuZXJhdGUgd3JpdGUgYmFycmllcnMuCgoJKiBNYWtlLWxhbmcuaW4gKGNwL3RyZWUubyk6IEFkZCBkZWJ1Zy5oLgoJKiB0cmVlLmMgKGx2YWx1ZV9wXzEsIGNhc2UgQ09OU1RfREVDTCk6IEFkZC4KCjIwMDUtMDUtMTggIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG1ldGhvZC5jOiBJbmNsdWRlIHRyZWUtcGFzcy5oCgkodXNlX3RodW5rKTogTG93ZXIgYm9keSBiZWZvcmUgZXhwYW5kaW5nLgoKMjAwNS0wNS0xNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzIxNDU0CgkqIGRlY2wuYyAobWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0KTogQ2FsbAoJY3BfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsIGFmdGVyIGNvbXBsZXRpbmcgYXJyYXkgdHlwZS4KCjIwMDUtMDUtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX2xpYnJhcnlfZm5fMSk6IE1vdmUgc2V0dGluZyBUUkVFX05PVEhST1cgLi4uCgkoYnVpbGRfbGlicmFyeV9mbik6IC4uLiBoZXJlLgoKMjAwNS0wNS0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIGNwLXRyZWUuaCAoY3Bfc3RtdF9jb2Rlcyk6IERvbid0IGRlZmluZS4KCShzdGF0ZW1lbnRfY29kZV9wKTogRGVjbGFyZS4KCShTVEFURU1FTlRfQ09ERV9QKTogRGVmaW5lLgoJKiBsZXguYyAoc3RhdGVtZW50X2NvZGVfcCk6IERlZmluZS4KCShjeHhfaW5pdCk6IFVzZSBhY3R1YWwgY29kZXMgaW4gc3RtdF9jb2RlcyBpbml0aWFsaXplciwgbm90CgljcF9zdG10X2NvZGVzIG1hY3JvLiAgSW5pdGlhbGl6ZSBzdGF0ZW1lbnRfY29kZV9wIGRpcmVjdGx5LCByYXRoZXIKCXRoYW4gdXNpbmcgSU5JVF9TVEFURU1FTlRfQ09ERVMuCgoyMDA1LTA1LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogRG8gbm90IHJlc29ydCB0byBhZGRyZXNzIGFyaXRobWV0aWMKCXdoZW4gdGFraW5nIHRoZSBhZGRyZXNzIG9mIGEgQ09NUE9ORU5UX1JFRi4KCjIwMDUtMDUtMDggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjbGFzcy5jICh2dGJsX2luaXRfZGF0YV9zKTogQ2hhbmdlIHRoZSB0eXBlIG9mIGZucyB0bwoJVkVDKHRyZWUsZ2MpKi4KCShidWlsZF92dGJsX2luaXRpYWxpemVyLCBhZGRfdmNhbGxfb2Zmc2V0LCBhZGRfdmNhbGxfb2Zmc2V0KToKCVVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgoyMDA1LTA1LTA3ICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiBtYW5nbGUuYzogUmVtb3ZlIGEgcmVmZXJlbmNlIHRvIHRoZSBNSVBTIC1taW50NjQgb3B0aW9uLgoKMjAwNS0wNS0wNyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRlY2wuYyAod3JhcHVwX2dsb2JhbHNfZm9yX25hbWVzcGFjZSk6IFVzZSBWRUMgaW5zdGVhZCBvZgoJVkFSUkFZLgoJKiBuYW1lLWxvb2t1cC5jIChhZGRfZGVjbF90b19sZXZlbCwgYmVnaW5fc2NvcGUpOiBMaWtld2lzZS4KCSogbmFtZS1sb29rdXAuaCAoY3BfYmluZGluZ19sZXZlbCk6IENoYW5nZSB0aGUgdHlwZSBvZgoJc3RhdGljX2RlY2xzIHRvIFZFQyh0cmVlLGdjKSouCgoJKiBtYW5nbGUuYyAoZ2xvYmFscyk6IENoYW5nZSB0aGUgdHlwZSBvZiBzdWJzdGl0dXRpb25zIHRvCglWRUModHJlZSxnYykqLgoJKGR1bXBfc3Vic3RpdHV0aW9uX2NhbmRpZGF0ZXMsIGFkZF9zdWJzdGl0dXRpb24sCglmaW5kX3N1YnN0aXR1dGlvbiwgZmluaXNoX21hbmdsaW5nLCBpbml0X21hbmdsZSk6IFVzZSBWRUMKCWluc3RlYWQgb2YgVkFSUkFZLgoKMjAwNS0wNS0wNiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRlY2wyLmMgKHNwZXdfZGVidWcpOiBSZW1vdmUuCgoJKiBkZWNsMi5jIChzc2RmX2RlY2xzLCBzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbiwKCWdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbik6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgoJKiBkZWNsMi5jIChwZW5kaW5nX3N0YXRpY3MsIG5vdGVfdmFndWVfbGlua2FnZV92YXIsCgljcF9maW5pc2hfZmlsZSk6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkocGVuZGluZ19zdGF0aWNzX3VzZWQpOiBSZW1vdmUuCgoyMDA1LTA1LTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZGVjbDIuYyAoZGVmZXJyZWRfZm5zLCBub3RlX3ZhZ3VlX2xpbmthZ2VfZm4sCgljcF9maW5pc2hfZmlsZSk6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgoyMDA1LTA1LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTM1MgoJKiBwdC5jIChidWlsZF9ub25fZGVwZW5kZW50X2V4cHIpOiBVc2UgaXNfb3ZlcmxvYWRlZF9mbi4KCjIwMDUtMDUtMDUgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBwdC5jOiBGaXggYSBjb21tZW50IHR5cG8uCgoyMDA1LTA1LTA0ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY3AtdHJlZS5oIChsYW5ndWFnZV9mdW5jdGlvbik6IENoYW5nZSB0aGUgdHlwZSBvZgoJeF9sb2NhbF9uYW1lcyB0byBWRUMuCgkqIGRlY2wuYyAocHVzaF9sb2NhbF9uYW1lKTogQWRqdXN0IHVzZXMgb2YgbG9jYWxfbmFtZXMuCgoyMDA1LTA1LTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZnJpZW5kLmMsIGxleC5jLCBtYW5nbGUuYywgcmVwby5jOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNS0wNS0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNsYXNzLmMgKGxvY2FsX2NsYXNzZXMsIGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IFVzZSBWRUMKCWluc3RlYWQgb2YgVkFSUkFZLgoJKiBjcC10cmVlLmggKGxvY2FsX2NsYXNzZXMpOiBMaWtld2lzZS4KCSogbWFuZ2xlLmMgKGRpc2NyaW1pbmF0b3JfZm9yX2xvY2FsX2VudGl0eSk6IExpa2V3aXNlLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNodGFnKTogTGlrZXdpc2UuCgoJKiBjbGFzcy5jIChjdXJyZW50X2xhbmdfZGVwdGgsIHB1c2hfbGFuZ19jb250ZXh0LAoJcG9wX2xhbmdfY29udGV4dCk6IFVzZSBWRUMgaW5zdGVhZCBvZiBWQVJSQVkuCgkqIGNwLXRyZWUuaCAoc2F2ZWRfc2NvcGUpOiBVc2UgVkVDIGZvciBsYW5nX2Jhc2UgaW5zdGVhZCBvZgoJVkFSUkFZLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX3RvX3RvcF9sZXZlbCk6IFVzZSBWRUMgaW5zdGVhZCBvZgoJVkFSUkFZLgoKMjAwNS0wNS0wMiAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY2FsbF9leHByKTogQ2FsbCByZXNvbHZlX292ZXJsb2FkZWRfYnVpbHRpbgoJZm9yIEJVSUxUX0lOX01EIGJ1aWx0LWlucy4KCjIwMDUtMDUtMDIgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCglQUiBjKysvMTk1NDIKCSogY3AtdHJlZS5oIChjcF90cmVlX2luZGV4KTogUmVtb3ZlIENQVElfTlVMTCwgdG8gYmUgZGVmaW5lZCBpbiBDCgljb21tb24gZnJvbnRlbmQuCgkobnVsbF9ub2RlKTogUmVtb3ZlLgoJKiBsZXguYyAoY3h4X2luaXQpOiBNb3ZlIG51bGxfbm9kZSBpbml0aWFsaXNhdGlvbiB0byBDIGNvbW1vbiBmcm9udGVuZC4KCjIwMDUtMDQtMjUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjcC10cmVlLmRlZjogQWRkIEVYUFJfU1RNVC4KCSogY3AtdHJlZS5oIChjcF9zdG10X2NvZGVzKTogQWRkIEVYUFJfU1RNVC4KCShFWFBSX1NUTVRfRVhQUik6IERlZmluZS4KCSogY3AtZ2ltcGxpZnkuYzogSW5jbHVkZSAiZmxhZ3MuaCIuCgkoZ2ltcGxpZnlfZXhwcl9zdG10KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShjcF9naW1wbGlmeV9leHByKTogSGFuZGxlIEVYUFJfU1RNVC4KCSogY3h4LXByZXR0eS1wcmludC5jIChwcF9jeHhfc3RhdGVtZW50KTogVXNlIHBwX2N4eF9leHByZXNzaW9uCglyYXRoZXIgdGhhbiBwcF9leHByZXNzaW9uLgoJKHBwX2N4eF9zdGF0ZW1lbnQpOiBIYW5kbGUgRVhQUl9TVE1ULgoJKiBkdW1wLmMgKGNwX2R1bXBfdHJlZSk6IEhhbmRsZSBFWFBSX1NUTVQuCgkqIGxleC5jIChjeHhfaW5pdCk6IERvbid0IHVzZSBjX2NvbW1vbl9zdG10X2NvZGVzIGluIHN0bXRfY29kZXMKCWluaXRpYWxpemVyLgoKMjAwNS0wNC0yNSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgQysrLzIxMTg4CgkqIHJ0dGkuYyAoaWZub25udWxsKTogQ2FzdCB0aGUgemVybyBjb21wYXJpc29uIG9wZXJhbmQKCXRvIHRoZSBjb3JyZWN0IHR5cGUuCgoyMDA1LTA0LTI0ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBtaWRkbGUtZW5kLzIwOTkxCgkqIGNsYXNzLmM6IEluY2x1ZGUgY2dyYXBoLmguCgkoY3BfZm9sZF9vYmpfdHlwZV9yZWYpOiBTZXQgbm9kZS0+bG9jYWwudnRhYmxlX21ldGhvZC4KCSogTWFrZS1sYW5nLmluIChjZ3JhcGgubyk6IERlcGVuZCBvbiAkKENHUkFQSF9IKS4KCjIwMDUtMDQtMTIgIE1hcmt1cyBGLlguSi4gT2Jlcmh1bWVyICA8bWFya3VzQG9iZXJodW1lci5jb20+CgoJKiBtYW5nbGUuYyAod3JpdGVfYnVpbHRpbl90eXBlKTogSGFuZGxlIGludGVnZXIgdHlwZXMgd2hpY2ggYXJlCglub3Qgb25lIG9mIHRoZSBzaGFyZWQgaW50ZWdlciB0eXBlIG5vZGVzIGFuZCBlbWl0IGEgInZlbmRvcgoJZXh0ZW5kZWQgYnVpbHRpbiB0eXBlIiB3aXRoIGFuIGVuY29kaW5nIGluIHRoZSBmb3JtIG9mICJ1NWludDk2Ii4KCjIwMDUtMDQtMjQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjcC10cmVlLmRlZiAoVVNJTkdfU1RNVCk6IENoYW5nZSBjbGFzcyB0byB0Y2Nfc3RhdGVtZW50LgoJKFRSWV9CTE9DSywgRUhfU1BFQ19CTE9DSywgSEFORExFUiwgQ0xFQU5VUF9TVE1UKTogTGlrZXdpc2UuCgkoSUZfU1RNVCwgRk9SX1NUTVQsIFdISUxFX1NUTVQsIERPX1NUTVQpOiBMaWtld2lzZS4KCShCUkVBS19TVE1ULCBDT05USU5VRV9TVE1ULCBTV0lUQ0hfU1RNVCk6IExpa2V3aXNlLgoKMjAwNS0wNC0yMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjYWxsLmMsIGNsYXNzLmMsIGN2dC5jLCBkZWNsLmMsIGRlY2wyLmMsIGV4Y2VwdC5jLCBmcmllbmQuYywKCWluaXQuYywgbGV4LmMsIG1hbmdsZS5jLCBtZXRob2QuYywgbmFtZS1sb29rdXAuYywgcGFyc2VyLmMsCglyZXBvLmMsIHJ0dGkuYywgdHJlZS5jLCB0eXBlY2suYywgdHlwZWNrMi5jOiBBZGp1c3Qgd2FybmluZygpCgljYWxsZXJzLgoKMjAwNS0wNC0yMiAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBkZWNsLmMgKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogRG9uJ3QgdHJ5IGdldF9maWxlaW5mbyBpZgoJaW5wdXRfZmlsZW5hbWUgaXMgTlVMTCwgYXMgaXQgaXMgZm9yIChzYXkpIF9fUFJFVFRZX0ZVTkNUSU9OX18uCgoyMDA1LTA0LTIyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBjKysvMjEwODcKCSogbmFtZS1sb29rdXAuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEbyBub3Qgb3ZlcmxvYWQgd2l0aAoJbm9uLWR1cGxpY2F0ZSBhbnRpY2lwYXRlZCBidWlsdC1pbi4KCjIwMDUtMDQtMjEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC10cmVlLmggKFRIUk9XX05BTUUsIEFVVE9fVlRBQkxFX05BTUUsIEFVVE9fVEVNUF9GT1JNQVQsCglWVEFCTEVfQkFTRSwgVlRBQkxFX05BTUVfUFJFRklYLCBTVEFUSUNfTkFNRV9GT1JNQVQpOiBSZW1vdmUuCgoyMDA1LTA0LTIxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oOiBBZGp1c3QgZm9yIG5ldyBWRUMgQVBJLgoJRGVmaW5lIFZFQyh0cmVlX3BhaXJfcyxnYykuCgkoc3RydWN0IHNhdmVfc2NvcGUpOiBBZGp1c3QuCgkoc3RydWN0IGxhbmdfdHlwZV9jbGFzcyk6IEFkanVzdC4KCSh1bmVtaXR0ZWRfdGluZm9fZGVjbHMpOiBBZGp1c3QuCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QsIHJlc29ydF90eXBlX21ldGhvZF92ZWMsCglmaW5pc2hfc3RydWN0X21ldGhvZHMsIHN0cnVjdCBmaW5kX2ZpbmFsX292ZXJyaWRlcl9kYXRhLAoJZGZzX2ZpbmRfZmluYWxfb3ZlcnJpZGVyX3ByZSwgZmluZF9maW5hbF9vdmVycmlkZXIsCglnZXRfdmNhbGxfaW5kZXgsIHdhcm5faGlkZGVuLCB3YWxrX3N1Ym9iamVjdF9vZmZzZXRzLAoJY2hlY2tfbWV0aG9kcywgZml4dXBfaW5saW5lX21ldGhvZHMsIGVuZF9vZl9jbGFzcywKCXdhcm5fYWJvdXRfYW1iaWd1b3VzX2Jhc2VzLCBmaW5pc2hfc3RydWN0LCBidWlsZF92dGJsX2luaXRpYWxpemVyLAoJYWRkX3ZjYWxsX29mZnNldCk6IEFkanVzdC4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcywgZmluaXNoX21ldGhvZCk6IEFkanVzdC4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IEFkanVzdC4KCSogaW5pdC5jIChzb3J0X21lbV9pbml0aWFsaXplcnMsIHB1c2hfYmFzZV9jbGVhbnVwcyk6IEFkanVzdC4KCSogbWV0aG9kLmMgKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBBZGp1c3QuCgkqIG5hbWUtbG9va3VwLmMgKG5ld19jbGFzc19iaW5kaW5nLCBzdG9yZV9iaW5kaW5nLAoJc3RvcmVfYmluZGluZ3MsIHN0b3JlX2NsYXNzX2JpbmRpbmdzKTogQWRqdXN0LgoJKiBuYW1lLWxvb2t1cC5oOiBEZWZpbmUgVkVDKGN4eF9zYXZlZF9iaW5kaW5nLGdjKSwKCVZFQyhjcF9jbGFzc19iaW5kaW5nLGdjKS4KCShzdHJ1Y3QgY3BfYmluZGluZ19sZXZlbCk6IEFkanVzdC4KCSogcGFyc2VyLmM6IERlZmluZSBWRUMoY3BfdG9rZW5fcG9zaXRpb24saGVhcCkuCgkoc3RydWN0IGNwX2xleGVyKTogQWRqdXN0LgoJKGNwX2xleGVyX25ld19tYWluLCBjcF9sZXhlcl9uZXdfZnJvbV90b2tlbnMsIGNwX2xleGVyX2Rlc3Ryb3ksCgljcF9sZXhlcl9zYXZlX3Rva2Vucyk6IEFkanVzdC4KCSogcHQuYyAocmV0cmlldmVfc3BlY2lhbGl6YXRpb24sCgljaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEFkanVzdC4KCSogcnR0aS5jICh1bmVtaXR0ZWRfdGluZm9fZGVjbHMpOiBBZGp1c3QuCgkoaW5pdF9ydHRpX3Byb2Nlc3NpbmcsIGdldF90aW5mb19kZWNsLCBnZXRfcHNldWRvX3RpX2luaXQsCglnZXRfcHNldWRvX3RpX2Rlc2MpOiBBZGp1c3QuCgkqIHNlYXJjaC5jIChkZnNfYWNjZXNzX2luX3R5cGUsIGxvb2t1cF9jb252ZXJzaW9uX29wZXJhdG9yLAoJbG9va3VwX2ZuZmllbGRzXzEsIGRmc193YWxrX29uY2UsIGRmc193YWxrX29uY2VfYWNjZXNzaWJsZSwKCWRmc19nZXRfcHVyZV92aXJ0dWFscywgbG9va3VwX2NvbnZlcnNpb25zX3IsIGJpbmZvX2Zvcl92YmFzZSk6IEFkanVzdC4KCSogc2VtYW50aWNzLmM6IERlZmluZSBWRUMoZGVmZXJyZWRfYWNjZXNzLGdjKS4KCShwdXNoX2RlZmVycmluZ19hY2Nlc3NfY2hlY2tzKTogQWRqdXN0LgoJKiB0eXBlY2syLmMgKGFic3RyYWN0X3ZpcnR1YWxzX2Vycm9yKTogQWRqdXN0LgoKMjAwNS0wNC0yMCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgU1RNVF9FWFBSLgoJKiBjcC10cmVlLmggKFNUTVRfRVhQUl9OT19TQ09QRSk6IERlZmluZS4KCShTVE1UX0VYUFJfU1RNVCk6IERlZmluZS4KCSogY3h4LXByZXR0eS1wcmludC5jIChwcF9jeHhfcHJpbWFyeV9leHByZXNzaW9uKTogSGFuZGxlCglTVE1UX0VYUFIuCgkocHBfY3h4X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShwcF9jeHhfc3RhdGVtZW50KTogQ2FsbCBwcF9jeHhfc3RhdGVtZW50LCBub3QgcHBfc3RhdGVtZW50LgoJKiBkdW1wLmMgKGNwX2R1bXBfdHJlZSk6IEhhbmRsZSBTVE1UX0VYUFIuCgoyMDA1LTA0LTE4ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogZGVjbC5jIChleHBhbmRfc3RhdGljX2luaXQpOiBDYWxsIGJ1aWxkMiBhbmQgYnVpbGQzIGluc3RlYWQKCW9mIGJ1aWxkLgoKCSogY3AtdHJlZS5oIChWUFRSX05BTUUsIFZQVFJfTkFNRV9QKTogUmVtb3ZlLgoKMjAwNS0wNC0xNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgU0laRU9GX0VYUFIsIEFSUk9XX0VYUFIgYW5kIEFMSUdOT0ZfRVhQUi4KCSogY3h4LXByZXR0eS1wcmludC5jIChwcF9jeHhfcG9zdGZpeF9leHByZXNzaW9uKTogSGFuZGxlCglBUlJPV19FWFBSLgoJKHBwX2N4eF91bmFyeV9leHByZXNzaW9uKTogSGFuZGxlIFNJWkVPRl9FWFBSIGFuZCBBTElHTk9GX0VYUFIuCgkocHBfY3h4X2V4cHJlc3Npb24pOiBIYW5kbGUgQVJST1dfRVhQUiwgU0laRU9GX0VYUFIsIGFuZAoJQUxJR05PRl9FWFBSLgoJKiB0eXBlY2suYyAoY3h4X3NpemVvZl9vcl9hbGlnbm9mX3R5cGUpOiBVcGRhdGUgY2FsbCB0bwoJY19zaXplb2Zfb3JfYWxpZ25vZl90eXBlIGZvciBjaGFuZ2UgaW4gcGFyYW1ldGVyIHR5cGUuCgoyMDA1LTA0LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMTAyNQoJKiB0eXBlY2suYyAoY3h4X3NpemVvZl9vcl9hbGlnbm9mX3R5cGUpOiBDaGVjayB3aGV0aGVyIHRoZSB0eXBlIHRvCgl3aGljaCBzaXplb2YvYWxpZ25vZiBpcyBkZXBlbmRlbnQsIHJhdGhlciB0aGFuIGp1c3Qgd2hldGhlciB3ZSBhcmUKCXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCjIwMDUtMDQtMTcgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC10cmVlLmggKExPT0tVUF9HTE9CQUwpOiBSZW1vdmUuCgkoTE9PS1VQX09OTFlDT05WRVJUSU5HLCBESVJFQ1RfQklORCwgTE9PS1VQX05PX0NPTlZFUlNJT04sCglMT09LVVBfREVTVFJVQ1RPUiwgTE9PS1VQX05PX1RFTVBfQklORCwgTE9PS1VQX1BSRUZFUl9UWVBFUywKCUxPT0tVUF9QUkVGRVJfTkFNRVNQQUNFUywgTE9PS1VQX0NPTlNUUlVDVE9SX0NBTExBQkxFKTogQWRqdXN0Cgl0aGVpciB2YWx1ZXMuCgoyMDA1LTA0LTE1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIG1pZGRsZS1lbmQvMTQzMTEKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBDYWxsIHJlc29sdmVfb3ZlcmxvYWRlZF9idWlsdGluLgoKMjAwNS0wNC0xNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwLXRyZWUuaCAobGFuZ190eXBlX2NsYXNzKTogUmVtb3ZlIHJlZGVmaW5lZC4gIE1vdmUKCWphdmFfaW50ZXJmYWNlIGludG8gd2hlcmUgcmVkZWZpbmVkIHdhcy4gIEluY3JlbWVudCB0aGUgd2lkdGgKCW9mIGR1bW15LgoJKFRZUEVfUkVERUZJTkVEKTogUmVtb3ZlLgoKMjAwNS0wNC0xNCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwLXRyZWUuaCAoU0VUX1RNUExfQVJHLCBFTlVNX1RJX1RFTVBMQVRFLCBFTlVNX1RJX0FSR1MsCglDTEFTU1RZUEVfVEVNUExBVEVfTEVWRUwpOiBSZW1vdmUuCgoyMDA1LTA0LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZGV0ZXJtaW5lX3Zpc2liaWxpdHkpOiBEb24ndCB1c2UgZXhwb3J0X2NsYXNzX2RhdGEuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogSG9ub3IgVEFSR0VUX0NYWF9DTEFTU19EQVRBX0FMV0FZU19XRUFLIGFuZAoJVEFSR0VUX0NYWF9ERVRFUk1JTkVfQ0xBU1NfREFUQV9WSVNJQklMSVRZLgoKMjAwNS0wNC0wOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwLXRyZWUuaCAoY3h4X2FsaWdub2YpOiBSZW1vdmUuCgoJKiBjcC10cmVlLmggKERFQ0xfQVJSQVlfREVMRVRFX09QRVJBVE9SX1ApOiBSZW1vdmUuCgoJKiBjcC10cmVlLmggKEVYQ0VQVElPTl9DTEVBTlVQX05BTUUsIEJfU0VULCBCX0NMUiwgQl9UU1QsCglDT05WX1NUQVRJQ19DQVNUKTogUmVtb3ZlLgoKCSogcHQuYyAoVU5JRllfQUxMT1dfTUFYX0NPUlJFQ1RJT04pOiBSZW1vdmUuCgoJKiBjcC10cmVlLmggKFZGX0JJTkZPX1ZBTFVFLCBWRl9CQVNFVFlQRV9WQUxVRSk6IFJlbW92ZS4KCgkqIGNwLXRyZWUuaCAoY3BfZGVwcmVjYXRlZCk6IFJlbW92ZS4KCjIwMDUtMDQtMDggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjcC10cmVlLmRlZjogRGVmaW5lIEZPUl9TVE1ULCBXSElMRV9TVE1ULCBET19TVE1ULCBCUkVBS19TVE1ULAoJQ09OVElOVUVfU1RNVCwgU1dJVENIX1NUTVQuCgkqIGNwLXRyZWUuaCAoY3Bfc3RtdF9jb2Rlcyk6IEFkZCBGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwKCUJSRUFLX1NUTVQsIENPTlRJTlVFX1NUTVQsIFNXSVRDSF9TVE1ULgoJKFdISUxFX0NPTkQsIFdISUxFX0JPRFkpOiBEZWZpbmUuCgkoRE9fQ09ORCwgRE9fQk9EWSk6IERlZmluZS4KCShGT1JfSU5JVF9TVE1ULCBGT1JfQ09ORCwgRk9SX0VYUFIsIEZPUl9CT0RZKTogRGVmaW5lLgoJKFNXSVRDSF9TVE1UX0NPTkQsIFNXSVRDSF9TVE1UX0JPRFksIFNXSVRDSF9TVE1UX1RZUEUpOiBEZWZpbmUuCgkqIGNwLWdpbXBsaWZ5LmMgKGVudW0gYmNfdCk6IERlZmluZS4KCShzdHJ1Y3QgY3BfZ2ltcGxpZnlfY3R4LCBjdHhwKTogRGVmaW5lLgoJKHB1c2hfY29udGV4dCwgcG9wX2NvbnRleHQpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShiZWdpbl9iY19ibG9jaywgZmluaXNoX2JjX2Jsb2NrKTogTmV3IHN0YXRpYyBmdW5jdGlvbnMuCgkoYnVpbGRfYmNfZ290byk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZ2ltcGxpZnlfY3BfbG9vcCwgZ2ltcGxpZnlfZm9yX3N0bXQpOiBOZXcgc3RhdGljIGZ1bmN0aW9ucy4KCShnaW1wbGlmeV93aGlsZV9zdG10LCBnaW1wbGlmeV9kb19zdG10KTogTGlrZXdpc2UuCgkoZ2ltcGxpZnlfc3dpdGNoX3N0bXQpOiBMaWtld2lzZS4KCShjcF9naW1wbGlmeV9leHByKTogSGFuZGxlIEZPUl9TVE1ULCBXSElMRV9TVE1ULCBET19TVE1ULAoJU1dJVENIX1NUTVQsIENPTlRJTlVFX1NUTVQsIEJSRUFLX1NUTVQuCgkoY3BfZ2VuZXJpY2l6ZSk6IENhbGwgcHVzaF9jb250ZXh0IGFuZCBwb3BfY29udGV4dC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9icmVha19zdG10KTogSnVzdCBjYWxsIGJ1aWxkX3N0bXQKCShCUkVBS19TVE1UKSByYXRoZXIgdGhhbiBidWlsZF9icmVha19zdG10LgoJKGZpbmlzaF9jb250aW51ZV9zdG10KTogQ29ycmVzcG9uZGluZyBjaGFuZ2UuCgkqIGRlY2wuYyAocG9wX3N3aXRjaCk6IFVwZGF0ZSBjYWxsIHRvIGNfZG9fc3dpdGNoX3dhcm5pbmdzIGZvciBuZXcKCXBhcmFtZXRlcnMuCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X3N0YXRlbWVudCk6IEhhbmRsZSBTV0lUQ0hfU1RNVCwKCVdISUxFX1NUTVQsIERPX1NUTVQsIEZPUl9TVE1ULCBCUkVBS19TVE1ULCBDT05USU5VRV9TVE1ULgoJKiBkdW1wLmMgKGNwX2R1bXBfdHJlZSk6IExpa2V3aXNlLgoKMjAwNS0wNC0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA5MDUKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl90eXBlX3NwZWNpZmllcl9zZXEpOiBBZGQgaXNfY29uZGl0aW9uCglwYXJhbWV0ZXIuCgkoY3BfcGFyc2VyX25ld190eXBlX2lkKTogUGFzcyBpdC4KCShjcF9wYXJzZXJfY29uZGl0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2NvbnZlcnNpb25fdHlwZV9pZCk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl90eXBlX2lkKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3R5cGVfc3BlY2lmaWVyX3NlcSk6IEluIGEgY29uZGl0aW9uLCBkbyBub3QgYWxsb3cKCWludmFsaWQgdHlwZS1zcGVjaWZpZXIgY29tYmluYXRpb25zLgoJKGNwX3BhcnNlcl9leGNlcHRpb25fZGVjbGFyYXRpb24pOiBBZGp1c3QgY2FsbCB0bwoJY3BfcGFyc2VyX3R5cGVfc3BlY2lmaWVyX3NlcS4KCgkqIGNwLXRyZWUuZGVmIChUSU5TVF9MRVZFTCk6IERvY3VtZW50IFRJTlNUX0lOX1NZU1RFTV9IRUFERVJfUC4KCSogY3AtdHJlZS5oIChzdHJ1Y3QgdGluc3RfbGV2ZWwpOiBBZGQgaW5fc3lzdGVtX2hlYWRlcl9wLgoJKFRJTlNUX0lOX1NZU1RFTV9IRUFERVJfUCk6IE5ldyBtYWNyby4KCShtYWtlX3RpbnN0X2xldmVsKTogUmVtb3ZlLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBQcmVzZXJ2ZSBERUNMX0lOX1NZU1RFTV9IRUFERVIgb24KCXRoZSBpbnN0YW50aWF0ZWQgY2xhc3MuCgkocHVzaF90aW5zdF9sZXZlbCk6IERvIG5vdCB1c2UgbWFrZV90aW5zdF9sZXZlbC4gIFNldAoJVElOU1RfSU5fU1lTVEVNX0hFQURFUl9QLgoJKHBvcF90aW5zdF9sZXZlbCk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogU2V0IGluX3N5c3RlbV9oZWFkZXIuCgkoaW5zdGFudGlhdGVfcGVuZGluZ190ZW1wbGF0ZXMpOiBMaWtld2lzZS4KCSogdHJlZS5jIChtYWtlX3RpbnN0X2xldmVsKTogUmVtb3ZlLgoKMjAwNS0wNC0wNiAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBcHBseSBwZW5kaW5nICNwcmFnbWEgd2VhayByZWdhcmRsZXNzIG9mCglzY29wZS4KCjIwMDUtMDQtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwMjEyCgkqIHB0LmMgKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogQ29weSBhdHRyaWJ1dGVzIGZvcgoJcGFyYW1ldGVycyBmcm9tIHRoZSBwYXR0ZXJuIHRvIHRoZSBpbnN0YW50aWF0aW9uLgoKMjAwNS0wNC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA3MzQKCSogY3AtdHJlZS5kZWYgKE9GRlNFVF9SRUYpOiBDb3JyZWN0IGNvbW1lbnRzLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50LgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBIYW5kbGUgcG9pbnRlci10by1tZW1iZXIgY3JlYXRpb24KCWhlcmUsIHJhdGhlciB0aGFuIC4uLgoJKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogLi4uIGhlcmUuCgoyMDA1LTA0LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglQUiBjKysvMTkzMTIKCSogdHJlZS5jIChzdGFiaWxpemVfaW5pdCk6IERvbid0IGJvdGhlciB0cnlpbmcgdG8gc3RhYmlsaXplCglzb21ldGhpbmcgd2l0aCBubyBzaWRlLWVmZmVjdHMuCgoyMDA1LTA0LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDc2MwoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ29ycmVjdCBhdHRyaWJ1dGUgaGFuZGxpbmcuCgoyMDA1LTA0LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTE1OQoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBVc2Ugbm9uLUNPTURBVCBleHRlcm5hbCBsaW5rYWdlCglmb3IgdmlydHVhbCB0YWJsZXMsIHR5cGVpbmZvLCBldGMuIHRoYXQgd2lsbCBiZSBlbWl0dGVkIGluIG9ubHkKCW9uZSB0cmFuc2xhdGlvbiB1bml0IG9uIHN5c3RlbXMgd2l0aG91dCB3ZWFrIHN5bWJvbHMuCgoyMDA1LTA0LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDY3OQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3RlbXBsYXRlX25hbWUpOiBGaXggdGhpbmtvLgoKMjAwNS0wNC0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA3NDYKCSogbWV0aG9kLmMgKHVzZV90aHVuayk6IFByb3RlY3QgY292YXJpYW50IHBvaW50ZXIgcmV0dXJuCglhZGp1c3RtZW50cyBmcm9tIE5VTEwgcG9pbnRlcnMuCgoyMDA1LTA0LTA0ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBkZWNsMi5jIChmaW5pc2hfb2JqZWN0cyk6IFJldmVydCBteSBwcmV2aW91cyBwYXRjaC4KCShjcF9maW5pc2hfZmlsZSk6IExpa2V3aXNlLgoKMjAwNS0wNC0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHB0LmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNS0wNC0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjA3MjMKCSogcHQuYyAobW9yZV9zcGVjaWFsaXplZF9mbik6IE1lbWJlciBmdW5jdGlvbnMgYXJlIHVub3JkZXJlZCB3cnQKCW5vbi1tZW1iZXJzLiAgQ29udmVyc2lvbiBvcGVyYXRvcnMgYXJlIHVub3JkZXJlZCB3cnQgb3RoZXIKCWZ1bmN0aW9ucy4KCjIwMDUtMDQtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVzX3JlYWwpOiBSZW1vdmUgbGVuZ3RoIHBhcmFtZXRlcgoJZnJvbSBmbl90eXBlX3VuaWZpY2F0aW9uIGNhbGwuCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogTGlrZXdpc2UKCSogY3AtdHJlZS5oIChmbl90eXBlX3VuaWZpY2F0aW9uKTogUmVtb3ZlIGxlbmd0aCBwYXJhbWV0ZXIuCgkqIHB0LmMgKGdldF9iaW5kaW5nc19vdmVybG9hZCk6IFJlbW92ZS4KCShnZXRfYmluZGluZ3NfcmVhbCk6IFJlbmFtZSB0byAuLi4KCShnZXRfYmluZGluZ3MpOiAuLi4gaGVyZS4gIFJlbW92ZSBsZW5ndGggYW5kIHN0cmljdAoJcGFyYW1ldGVycy4gQ2hhbmdlIHJldHVybiB0eXBlIGZsYWcgdG8gYm9vbGVhbi4gIFJlbW92ZSBvcmlnaW5hbAoJZm9yd2FyZGluZyBmdW5jdGlvbi4KCShkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBBZGp1c3QgZ2V0X2JpbmRpbmdzIGNhbGwuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSBsZW5ndGggcGFyYW1ldGVyLiAgQWRqdXN0LgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IFJlbW92ZSBsZW5ndGggcGFyYW1ldGVyLiAgQWRqdXN0LgoJKHJlc29sdmVfb3ZlcmxvYWRlZF91bmlmaWNhdGlvbik6IEFkanVzdCBnZXRfYmluZGluZ3MgY2FsbC4KCSh0cnlfb25lX292ZXJsb2FkKTogU2ltcGxpZnkgY29uZnVzaW5nIGNhc2NhZGVkIGlmIGNvbnRyb2wgZmxvdy4KCSh1bmlmeSk6IFJlbW92ZSBsZW5ndGggcGFyYW10ZXIgZnJvbSB0eXBlX3VuaWZpY2F0aW9uX3JlYWwgY2FsbC4KCShtb3N0X3NwZWNpYWxpemVkX2luc3RhbnRpYXRpb24pOiBBZGp1c3QgZ2V0X2JpbmRpbmdzIGNhbGxzLgoJKG1vc3Rfc3BlY2lhbGl6ZWQpOiBMaWtld2lzZS4KCjIwMDUtMDMtMzEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5MjAzLCBpbXBsZW1lbnQgRFIgMjE0CgkqIGNhbGwuYyAoam91c3QpOiBVc2UgbW9yZV9zcGVjaWFsaXplZF9mbi4KCSogY3AtdHJlZS5oIChERURVQ0VfT1JERVIpOiBSZW1vdmUuCgkobW9yZV9zcGVjaWFsaXplZCk6IFJlcGxhY2Ugd2l0aCAuLi4KCShtb3JlX3NwZWNpYWxpemVkX2ZuKTogLi4uIHRoaXMuCgkqIHB0LmMgKG1heWJlX2FkanVzdF90eXBlc19mb3JfZGVkdWN0aW9uKTogUmVtb3ZlIERFRFVDRV9PUkRFUgoJY2FzZS4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBSZW1vdmUgREVEVUNFX09SREVSIGNhc2UuCgkobW9yZV9zcGVjaWFsaXplZCk6IFJlcGxhY2Ugd2l0aCAuLi4KCShtb3JlX3NwZWNpYWxpemVkX2ZuKTogLi4uIHRoaXMuICBJbXBsZW1lbnQgRFIgMjE0LgoJKG1vc3Rfc3BlY2lhbGl6ZWRfaW5zdGFudGlhdGlvbik6IFVzZSBnZXRfYmluZGluZ3NfcmVhbCBkaXJlY3RseS4KCjIwMDUtMDMtMzEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCVBSIGMrKy8xODY0NAoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IFJlbW92ZSBjaGVjayBmb3IgLVdzeW50aC4KCjIwMDUtMDMtMzEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGRlY2wyLmMgKGZpbmlzaF9vYmplY3RzKTogTWFyayBjdG9yIGFzIG5lZWRlZC4KCShjcF9maW5pc2hfZmlsZSk6IE91dHB1dCB2YXJpYWJsZXMgb25seSBpbiBub251bml0LWF0LWEtdGltZS4KCjIwMDUtMDMtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJUFIgYy8yMDUxOQoJKiBkZWNsLmMgKGNwX2NvbXBsZXRlX2FycmF5X3R5cGUpOiBSZW5hbWUgZnJvbSBjb21wbGV0ZV9hcnJheV90eXBlLgoJVXNlIHRoZSBuZXcgY29tcGxldGVfYXJyYXlfdHlwZSBpbiBjLWNvbW1vbi5jLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKiBjcC10cmVlLmggKGNwX2NvbXBsZXRlX2FycmF5X3R5cGUpOiBVcGRhdGUgdG8gbWF0Y2guCgoyMDA1LTAzLTI0ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdF8xKTogQWxsb3cgc2NhbGFyX2Nhc3QgYmV0d2VlbgoJYW55IGludGVncmFsLCBmbG9hdGluZywgb3IgZW51bWVyYXRpb24gdHlwZS4KCjIwMDUtMDMtMjQgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBGaXJzdCBkZXRlcm1pbmUgaWYgdGhlIHR5cGVzIGFyZSBjb21wYXRpYmxlCglmcm9tIGEgdGFyZ2V0LWluZGVwZW5kZW50IHBvaW50IG9mIHZpZXcuICBDaGVjayB0YXJnZXQgYXR0cmlidXRlcwoJbGFzdC4KCgkqIGNsYXNzLmMgKGJ1aWxkX2Jhc2VfcGF0aCk6CgkoYnVpbGRfdmJhc2Vfb2Zmc2V0X3Z0YmxfZW50cmllcyk6CgkoYWRkX3ZjYWxsX29mZnNldCk6IFJlcGxhY2UgZm9sZCAoYnVpbGROICguLi4pKSB3aXRoIGZvbGRfYnVpbGROLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF96ZXJvX2luaXQsIGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlLAoJYnVpbGRfdmVjX2RlbGV0ZV8xKTogTGlrZXdpc2UuCgkqIG1hbmdsZS5jICh3cml0ZV9pbnRlZ2VyX2NzdCk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAodGh1bmtfYWRqdXN0KTogTGlrZXdpc2UuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCwgdHN1YnN0LCB1bmlmeSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGN4eF9wcmludF9zdGF0aXN0aWNzLCBhcnJheV90eXBlX25lbHRzX3RvdGFsKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jX2FjY2Vzc19leHByLAoJKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogTGlrZXdpc2UuCgoyMDA1LTAzLTIzICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT0tTX1RSVVRIVkFMVUVfQ09OVkVSU0lPTik6IFJlbW92ZS4KCjIwMDUtMDMtMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChwZXJmb3JtX2ludGVncmFsX3Byb21vdGlvbnMpOiBSZW1vdmUuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogQWRkLgoKMjAwNS0wMy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfd2Fybl9taW5fbWF4KTogTmV3IGZ1bmN0aW9uLgoJKGNwX3BhcnNlcl9iaW5hcnlfZXhwcmVzc2lvbik6IFVzZSBpdC4KCShjcF9wYXJzZXJfYXNzaWdubWVudF9vcGVyYXRvcl9vcHQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb3BlcmF0b3IpOiBMaWtld2lzZS4KCjIwMDUtMDMtMjIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzE5OTgwCgkqIGRlY2wuYyAoc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uKTogUm9idXN0aWZ5LgoKMjAwNS0wMy0yMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCglQUiBjKysvMjA0OTkKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9jbGFzc19oZWFkKTogUmV0dXJuIE5VTExfVFJFRSB3aGVuCgllbmNvdW50ZXJpbmcgYSByZWRlZmluaXRpb24uCgoyMDA1LTAzLTIyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDQ2NQoJUFIgYysrLzIwMzgxCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogQWxsb3cgT0ZGU0VUX1JFRiB3aGVuIHByb2Nlc3NpbmcgYQoJdGVtcGxhdGUuCgoyMDA1LTAzLTIxICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCglQUiBjKysvMjA0NjEKCVBSIGMrKy8yMDUzNgoJKiBpbml0LmMgKGVtaXRfbWVtX2luaXRpYWxpemVycyk6IERvbid0IGNyYXNoIG9uIHVuZGVmaW5lZAoJdHlwZXMuCgoyMDA1LTAzLTIxICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCglQUiBjKysvMjAxNDcKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHJfZXhwcik6IFJldHVybiBpbW1lZGlhdGVseQoJaWYgZXJyb3Jfb3BlcmFuZF9wIChleHByKS4KCjIwMDUtMDMtMjEgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsdmFsdWVfb3JfZWxzZSwgbHZhbHVlX3ApOiBOZXcuCgkqIHR5cGVjay5jIChsdmFsdWVfb3JfZWxzZSk6IE5ldy4gIENhbGwgbHZhbHVlX2Vycm9yLgoKMjAwNS0wMy0xOSAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzIwMjQwCgkqIGRlY2wuYyAoZGVjbHNfbWF0Y2gpOiBDb21wYXJlIGNvbnRleHQgb2YgVkFSX0RFQ0wuCgoyMDA1LTAzLTE5ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMjAzMzMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pIDxjYXNlIFJJRF9UWVBFTkFNRT46CglDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGNwX3BhcnNlcl9uZXN0ZWRfbmFtZV9zcGVjaWZpZXIuCgoyMDA1LTAzLTE4ICBEYWxlIEpvaGFubmVzZW4gPGRhbGVqQGFwcGxlLmNvbT4KCgkqIGNwL3RyZWUuYyAoY3BfdHJlZV9lcXVhbCk6ICBIYW5kbGUgU1NBX05BTUUuCgoyMDA1LTAzLTE4ICBQYW9sbyBDYXJsaW5pICA8cGNhcmxpbmlAc3VzZS5kZT4KCglQUiBjKysvMjA0NjMKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kaWFnbm9zZV9pbnZhbGlkX3R5cGVfbmFtZSk6CglDaGVjayBUWVBFX0JJTkZPIChjdXJyZW50X2NsYXNzX3R5cGUpIGJlZm9yZSBhdHRlbXB0aW5nCgl0byBlbWl0IGluZm9ybSBtZXNzYWdlcy4KCjIwMDUtMDMtMTcgIFBhb2xvIENhcmxpbmkgIDxwY2FybGluaUBzdXNlLmRlPgoKCVBSIGMrKy8xOTk2NgoJKiBjcC10cmVlLmggKGdyb2tfb3BfcHJvcGVydGllcyk6IENoYW5nZSByZXR1cm4gdHlwZSB0byB2b2lkLgoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IFJldHVybiBlYXJseSAtIGRvbid0IGNoZWNrIHRoZQoJYXJpdHkgLSBpbiBjYXNlIG9mIGEgc3RhdGljIG1lbWJlciBvciBhbiBvcGVyYXRvciB0aGF0IGNhbm5vdAoJYmUgbm9uLW1lbWJlcjsgdGlkeSBhIGJpdC4KCjIwMDUtMDMtMTcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwMTg2CgkqIHB0LmMgKGNvbnRhaW5zX2RlcGVuZGVudF9jYXN0X3ApOiBSZW1vdmUuCgkoZm9sZF9ub25fZGVwZW5kZW50X2V4cHIpOiBEb24ndCB1c2UgaXQuCgkodmFsdWVfZGVwZW5kZW50X2V4cHJlc3Npb25fcCk6IFVzZSBhIHN3aXRjaCBzdGF0ZW1lbnQuCglyZWZlcmVuY2VfZXhwcnMgY2FuIGJlIGRlcGVuZGVudC4KCjIwMDUtMDMtMTQgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCVBSIGMrKy80NDAzCglQUiBjKysvOTc4MywgRFI0MzMKCSogbmFtZS1sb29rdXAuYyAocHVzaHRhZyk6IFNraXAgdGVtcGxhdGUgcGFyYW1ldGVyIHNjb3BlIHdoZW4KCXNjb3BlIGlzIHRzX2dsb2JhbC4gIERvbid0IHB1c2ggdGFnIGludG8gdGVtcGxhdGUgcGFyYW1ldGVyCglzY29wZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZW9yZGVyIGZyaWVuZCBjbGFzcwoJdGVtcGxhdGUgc3Vic3RpdHV0aW9uIHRvIGhhbmRsZSBub24tZGVwZW5kZW50IGZyaWVuZCBjbGFzcwoJdGhhdCBoYXNuJ3QgYmVlbiBwcmV2aW91c2x5IGRlY2xhcmVkLgoKMjAwNS0wMy0xNCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJRnJpZW5kIGNsYXNzIG5hbWUgbG9va3VwIDUvbgoJUFIgYysrLzEwMTYKCSogY3AtdHJlZS5oIChwdXNodGFnKTogQWRqdXN0IGRlY2xhcmF0aW9uLgoJKiBkZWNsLmMgKGxvb2t1cF9hbmRfY2hlY2tfdGFnKTogQ2FsbCBsb29rdXBfdHlwZV9zY29wZSBpZgoJbG9va3VwX25hbWUgZmFpbHMuCgkoeHJlZl90YWcpOiBBZGp1c3QgY2FsbCB0byBwdXNodGFnLiAgTWFrZSBoaWRkZW4gY2xhc3MgdmlzaWJsZS4KCShzdGFydF9lbnVtKTogQWRqdXN0IGNhbGwgdG8gcHVzaHRhZy4KCSogbmFtZS1sb29rdXAuYyAoYW1iaWd1b3VzX2RlY2wpOiBJZ25vcmUgaGlkZGVuIG5hbWVzLgoJKHF1YWxpZnlfbG9va3VwKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGJvb2wuCgkoaGlkZGVuX25hbWVfcCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfbmFtZXNwYWNlX25hbWUsIHVucXVhbGlmaWVkX25hbWVzcGFjZV9sb29rdXAsCglsb29rdXBfbmFtZV9yZWFsKTogVXNlIGl0LgoJKGxvb2t1cF90eXBlX3Njb3BlKTogVXBkYXRlIGNvbW1lbnRzLgoJKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IENoYW5nZSBwYXJhbWV0ZXIgbmFtZQoJZnJvbSBnbG9iYWxpemUgdG8gaXNfZnJpZW5kLgoJKHB1c2h0YWcpOiBDaGFuZ2UgZ2xvYmFsaXplIHBhcmFtZXRlciBvZiB0eXBlIGludCB0byB0YWdfc2NvcGUuCglIaWRlIG5hbWUgaWYgaW50cm9kdWNlZCBieSBmcmllbmQgZGVjbGFyYXRpb24uCgkqIG5hbWUtbG9va3VwLmggKGhpZGRlbl9uYW1lX3ApOiBBZGQgZGVjbGFyYXRpb24uCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbG9va3VwX25hbWUpOiBEb24ndCBkZWFsIHdpdGggaGlkZGVuIG5hbWUKCWhlcmUuCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogTWFrZSBoaWRkZW4gY2xhc3MgdGVtcGxhdGUKCXZpc2libGUuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzLCBpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IEFkanVzdCBjYWxsCgl0byBwdXNodGFnLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiBydHRpLmMgKGluaXRfcnR0aV9wcm9jZXNzaW5nLCBidWlsZF9keW5hbWljX2Nhc3RfMSwKCXRpbmZvX2Jhc2VfaW5pdCwgZW1pdF9zdXBwb3J0X3RpbmZvcyk6IFVzZSB0c19jdXJyZW50IGluc3RlYWQgb2YKCXRzX2dsb2JhbC4KCjIwMDUtMDMtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwMTU3CgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFJlamVjdCBub24tc3BlY2lhbGl6YXRpb25zLgoKMjAwNS0wMy0xMSAgUGVyIEJvdGhuZXIgIDxwZXJAYm90aG5lci5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBjcF9kZWNsYXJhdG9yKTogTmV3IGlkX2xvYyBmaWVsZC4KCSogY3AvcGFyc2VyLmMgKGNwX2xleGVyX2dldF9wcmVwcm9jZXNzb3JfdG9rZW4pOiBTZXQgY3BfdG9rZW4ncwoJbG9jYXRpb24gdXNpbmcgY19sZXhfd2l0aF9mbGFncywgaW5zdGVhZCBvZiBpbnB1dF9sb2NhdGlvbi4KCShjcF9wYXJzZXJfZGlyZWN0X2RlY2xhcmF0b3IpOiBTZXQgZGVjbGFyYXRvcidzIGlkX2xvYyBmcm9tCgljcF90b2tlbidzIGlkX2xvYy4KCjIwMDUtMDMtMTAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8xODM4NCwgYysrLzE4MzI3CgkqIGRlY2wuYyAocmVzaGFwZV9pbml0X2FycmF5KTogVXNlIFVIV0kgdHlwZSBmb3IgbWF4X2luZGV4X2NzdAoJYW5kIGluZGV4LiAgQ29udmVydCBtYXhfaW5kZXggdG8gc2l6ZV90eXBlX25vZGUgaWYgaXQgaXNuJ3QKCWhvc3RfaW50ZWdlcnAgKCwgMSkuCgoyMDA1LTAzLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDIwOAoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IEFwcGx5IGFycmF5LXRvLXBvaW50ZXIgYW5kCglmdW5jdGlvbi10by1wb2ludGVyIGNvbnZlcnNpb25zIHRvIGZ1bmN0aW9uIGFyZ3VtZW50cy4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IExpa2V3aXNlLgoKMjAwNS0wMy0wOSAgUGFvbG8gQ2FybGluaSAgPHBjYXJsaW5pQHN1c2UuZGU+CgoJUFIgYysrLzE2ODU5CgkqIGRlY2wuYyAoY29tcGxldGVfYXJyYXlfdHlwZSk6IEluIHBlZGFudGljIG1vZGUsIHJldHVybgoJMyBmb3IgYW4gZW1wdHkgaW5pdGlhbGl6ZXIgbGlzdCBhcyB0aGUgaW5pdGlhbGl6ZXIgZm9yIGFuCglhcnJheSBvZiB1bmtub3duIGJvdW5kICg4LjUuMS80KS4KCShtYXliZV9kZWR1Y2Vfc2l6ZV9mcm9tX2FycmF5X2luaXQpOiBGaXggZmluYWwgdGVzdCB0byB1c2UKCXRoZSBhYm92ZS4KCjIwMDUtMDMtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzIwMTg2CgkqIHB0LmMgKGNvbnRhaW5zX2RlcGVuZGVudF9jYXN0X3ApOiBOZXcuCgkoZm9sZF9ub25fZGVwZW5kZW50X2V4cHIpOiBDYWxsIGl0LgoKMjAwNS0wMy0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjAxNDIKCSogY3AtdHJlZS5oICh0YXJnZXRfdHlwZSk6IFJlbW92ZS4KCSogZGVjbC5jIChsYXlvdXRfdmFyX2RlY2wpOiBSZW1vdmUgI2lmIDAnZCBjb2RlLgoJKGNwX2ZpbmlzaF9kZWNsKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IFdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdGhlCgllbGVtZW50IHR5cGUgaGFzIGFuIGFzaWdubWVudCBvcGVyYXRvciwgbG9vayB0aHJvdWdoIGFsbCBhcnJheQoJZGltZW5zaW9ucy4KCSogdHlwZWNrLmMgKHRhcmdldF90eXBlKTogUmVtb3ZlLgoKMjAwNS0wMy0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERvIG5vdCB3YXJuIGFib3V0IG5vbi12aXJ0dWFsCglkZXN0cnVjdG9ycyBpbiBKYXZhIGNsYXNzZXMuCgoyMDA1LTAzLTA1ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMTkzMTEKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogRG9uJ3QgYnVpbGQgbm9uLWRlcGVuZGVudCBTQ09QRV9SRUYuCgkqIHB0LmMgKGJ1aWxkX25vbl9kZXBlbmRlbnRfZXhwcik6IERvbid0IGJ1aWxkIE5PTl9ERVBFTkRFTlRfRVhQUgoJZm9yIE9GRlNFVF9UWVBFLgoJKiB0eXBlY2suYyAoYnVpbGRfeF91bmFyeV9vcCk6IERvbid0IGJ1aWxkIG5vbi1kZXBlbmRlbnQgU0NPUEVfUkVGLgoJQWxzbyBzZXQgUFRSTUVNX09LX1AgZm9yIE5PTl9ERVBFTkRFTlRfRVhQUi4KCShidWlsZF91bmFyeV9vcCk6IEhhbmRsZSBidWlsZGluZyBBRERSX0VYUFIgb2YgT0ZGU0VUX1JFRiBpbnNpZGUKCXRlbXBsYXRlLgoKMjAwNS0wMy0wMiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX292ZXJsb2FkZWRfZGVjbCk6IERvbid0IGVycm9yIGlmIHRoZSBuZXcKCWRlY2wgbWF0Y2hlcyB0aGUgb2xkIG9uZS4KCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBMaWtld2lzZS4KCjIwMDUtMDMtMDEgIFBlciBCb3RobmVyICA8cGVyQGJvdGhuZXIuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVc2UgU0VUX0VYUFJfTE9DQVRJT04gaW5zdGVhZCBvZgoJdW5hdmFpbGFibGUgYW5ub3RhdGVfd2l0aF9maWxlX2xpbmUsIGlmIFVTRV9NQVBQRURfTE9DQVRJT04uCgoyMDA1LTAzLTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8yMDIzMgoJKiBjbGFzcy5jICh1cGRhdGVfdnRhYmxlX2VudHJ5X2Zvcl9mbik6IERvbid0IGNyYXNoIG9uIGludmFsaWQKCWNvdmFyaWFuY3kuCgoJKiBjcC10cmVlLmcgKFRIVU5LX1RBUkdFVCk6IEV4cGFuZCBjb21tZW50LgoJKiBtZXRob2QuYyAodXNlX3RodW5rKTogTWFrZSBzdXJlIHdlIGFsc28gdXNlIHRoZSB0YXJnZXQsIGlmIHRoYXQKCWlzIGEgdGh1bmsuCgoyMDA1LTAyLTI3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMjAyMDYKCSogZGVjbC5jIChjeHhfY29tZGF0X2dyb3VwKTogUHV0IHRodW5rcyBmb3IKCVRBUkdFVF9VU0VfTE9DQUxfVEhVTktfQUxJQVNfUCAoZnVuY3Rpb24pIGZ1bmN0aW9ucyBpbnRvIHRoZSBzYW1lCgljb21kYXQgZ3JvdXAgYXMgdGhlIHRodW5rIHRhcmdldC4KCjIwMDUtMDItMjQgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjYWxsLmMsIGNsYXNzLmMsIGNwLXRyZWUuaCwgZGVjbDIuYywgZXJyb3IuYywgaW5pdC5jLCBtYW5nbGUuYywKCXBhcnNlci5jOiBGaXggY29tbWVudCB0eXBvKHMpLgoKMjAwNS0wMi0yNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYysrLzIwMTc1CgkqIGRlY2wuYyAocmVzaGFwZV9pbml0KTogRG9uJ3Qgd2FybiBhYm91dCBtaXNzaW5nIGJyYWNlcyBpZiBTVFJJTkdfQ1NUCglpbml0aWFsaXplcyBhIGNoYXIvd2NoYXJfdCBhcnJheS4KCjIwMDUtMDItMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5ODc4CgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBTZXQgREVDTF9JTlRFUkZBQ0VfS05PV04gZm9yIGRlY2xhcmF0aW9ucwoJd2l0aCBpbnRlcm5hbCBsaW5rYWdlLgoKMjAwNS0wMi0yMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogRG9uJ3QgZXhlbXB0IGFub255bW91cyB0eXBlcyBmcm9tIGhhdmluZwoJbGlua2FnZSBmb3IgdmFyaWFibGVzIHRoYXQgaGF2ZSBsaW5rYWdlIG90aGVyIHRoYW4gIkMiLgoKMjAwNS0wMi0yMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwLW9iamNwLWNvbW1vbi5oLCBlcnJvci5jOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNS0wMi0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjAwNzMKCSogZGVjbC5jIChzdGFydF9kZWNsXzEpOiBEb24ndCBjbGVhciBUUkVFX1JFQURPTkxZLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoY29tcGxldGVfdmFycyk6IENhbGwgY3BfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsLgoJKiB0eXBlY2suYyAoY3BfYXBwbHlfdHlwZV9xdWFscyk6IEF2b2lkIHNldHRpbmcgVFJFRV9SRUFET05MWSBpbgoJY2FzZXMgd2hlcmUgdGhhdCdzIG5vdCB2YWxpZC4KCglQUiBjKysvMTk5OTEKCSogaW5pdC5jIChpbnRlZ3JhbF9jb25zdGFudF92YWx1ZSk6IEl0ZXJhdGUgaWYgdGhlIHZhbHVlIG9mIGEgZGVjbAoJaXMgaXRzZWxmIGEgY29uc3RhbnQuCgoJUFIgYysrLzIwMTUyCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfY2xhc3NfaGVhZCk6IENoZWNrIGZvciByZWRlZmludGlvbnMgaGVyZS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBOb3QgaGVyZS4KCglQUiBjKysvMjAxNTMKCSogZGVjbDIuYyAoYnVpbGRfYW5vbl91bmlvbl92YXJzKTogQWRkIHR5cGUgcGFyYW1ldGVyLgoJKGZpbmlzaF9hbm9uX3VuaW9uKTogUGFzcyBpdC4KCglQUiBjKysvMjAxNDgKCSogZXJyb3IuYyAoZHVtcF9leHByKTogRG8gbm90IHByaW50IHRoZSBib2R5IG9mIGEgQklORF9FWFBSLgoJSGFuZGxlIFNUQVRFTUVOVF9MSVNULgoKCVBSIGMrKy8xOTg4MwoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2RpcmVjdF9kZWNsYXJhdG9yKTogQWx3YXlzIGNvbXBsYWluIGFib3V0Cglub24tY29uc3RhbnQgYXJyYXkgYm91bmRzIHdoZW4gaW4gYSBmdW5jdGlvbiBzY29wZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByZXNzaW9uKTogRG8gbm90IG1hcmsgZGVwZW5kZW50IG5hbWVzCglhcyBub24tY29uc3RhbnQuCgoyMDA1LTAyLTIxICBEb3VnbGFzIEdyZWdvciAgPGRncmVnb3JAY3MuaW5kaWFuYS5lZHU+CgoJUFIgYysrLzE5MDc2CglQUiBjKysvNjYyOAoJKiBjcC10cmVlLmggKGNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IERlY2xhcmVkLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUGVkd2FybiBhYm91dCBxdWFsaWZ5aW5nIGEgZnVuY3Rpb24KCXR5cGUuCglBZGQgcXVhbGlmaWVycyB3aGVuIGRlY2xhcmluZyBhIHR5cGVkZWYgb2YgYSBmdW5jdGlvbiB0eXBlLgoJTWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzIHBpY2sgdXAgdGhlIHF1YWxpZmllcnMgb2YgdGhlIHR5cGVkZWYKCXVzZWQgdG8gZGVjbGFyZSB0aGVtLgoJRG9uJ3QgY29tcGxhaW4gYWJvdXQgY3JlYXRpbmcgY3YtcXVhbGlmaWVkIGZ1bmN0aW9uIHR5cGVzLgoJQ29tcGxhaW4gYWJvdXQgcXVhbGlmaWVkIGZ1bmN0aW9uIHR5cGVkZWZzIHRoYXQgYXJlIHVzZWQgdG8KCWRlY2xhcmUgbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIG9yIGZyZWUgZnVuY3Rpb25zLgoJVXNlIGNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbC4KCShzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24pOiBVc2UgY3BfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsLgoJKGdyb2tjbGFzc2ZuKTogVXNlIGNwX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbC4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3N1ZmZpeCk6IFByaW50IHF1YWxpZmllcnMgZm9yIGZ1bmN0aW9uCgl0eXBlcy4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBVc2UgY3BfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsLgoJKHRzdWJzdCk6IFdoZW4gc3Vic3RpdHV0aW5nIGEgZnVuY3Rpb24gdHlwZSBpbnRvIGEgbWVtYmVyCglwb2ludGVyIHR5cGUsIHBhc3MgYWxvbmcgdGhlIHF1YWxpZmllcnMuCgkodW5pZnkpOiBVbmlmeSBtZW1iZXIgcG9pbnRlcnMgdG8gbWVtYmVyIGZ1bmN0aW9uIHBvaW50ZXJzLgoJKiB0cmVlLmMgKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlX3JlYWwpOiBGdW5jdGlvbiB0eXBlcyBtYXkgYmUKCXF1YWxpZmllZC4gVGhpcyBpbmNsdWRlcyByZXN0cmljdCBxdWFsaWZpZXJzLgoJKiB0eXBlY2suYyAoY3BfYXBwbHlfdHlwZV9xdWFsc190b19kZWNsKTogTmV3IGZ1bmN0aW9uIHRvIHJlcGxhY2UKCXVzZSBvZiBjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbC4gRHJvcHMgcXVhbGlmaWVycyB0aGF0IGFyZSBiZWluZwoJYWRkZWQgdG8gZnVuY3Rpb24gdHlwZXMuCgoyMDA1LTAyLTIwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIDE4Nzg1CgkqIGNwLW9iamNwLWNvbW1vbi5oIChMQU5HX0hPT0tTX1RPX1RBUkdFVF9DSEFSU0VUKTogU2V0IHRvCgljX2NvbW1vbl90b190YXJnZXRfY2hhcnNldC4gIERlbGV0ZSBib2d1cyBjb21tZW50LgoKMjAwNS0wMi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCglQUiBsaWJzdGRjKysvMTA2MDYKCSogZXhjZXB0LmMgKGRvX2dldF9leGNlcHRpb25fcHRyKTogTmV3LgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVzZSBpdC4KCjIwMDUtMDItMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsXzEpOiBPbmx5IGNoZWNrIFRZUEVfTkVFRFNfQ09OU1RSVUNUSU5HCglpZiB0eXBlIGlzIG5vdCBlcnJvcl9tYXJrX25vZGUuCgoyMDA1LTAxLTIwICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8xOTUwOAoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBEbyBub3QgYXBwbHkgYXR0cmlidXRlcyB0byB0ZW1wbGF0ZSBwYXJhbWV0ZXJzCglhcyB0aGV5IGFyZSBpZ25vcmVkIGJ5IHRzdWJzdCBhbnl3YXkuCgoyMDA1LTAyLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBjKysvMTk4MTMKCSogZGVjbC5jIChzdGFydF9kZWNsXzEpOiBDbGVhciBUUkVFX1JFQURPTkxZIGZsYWcgaWYKCWl0cyB0eXBlIGhhcyBUWVBFX05FRURTX0NPTlNUUlVDVElORy4KCShjb21wbGV0ZV92YXJzKTogTGlrZXdpc2UuCgoyMDA1LTAyLTE3ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCglQUiBjKysvMjAwMjgKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IEluaXRpYWxpemUgVFlQRV9TSVpFX1VOSVQgb2YgYQoJdGVtcGxhdGUgYWxvbmcgd2l0aCBUWVBFX1NJWkUuCgoJUFIgYysrLzIwMDIyCgkqIHNlbWFudGljcy5jIChwZXJmb3JtX2RlZmVycmVkX2FjY2Vzc19jaGVja3MpOiBVc2UKCWdldF9kZWZlcnJlZF9hY2Nlc3NfY2hlY2tzIHRvIGdldCB0aGUgdG9wIG9mIHRoZSBzdGFjay4KCjIwMDUtMDItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGMrKy8xNzc4OAoJKiBjbGFzcy5jIChhZGRfaW1wbGljaXRseV9kZWNsYXJlZF9tZW1iZXJzLCBjaGVja19maWVsZF9kZWNsKQoJKGNoZWNrX2ZpZWxkX2RlY2xzLCBjaGVja19iYXNlcyk6IFJlbW92ZSBhcmd1bWVudHMsIHRlc3RzIGFuZAoJYXNzaWdubWVudHMgb2YgY2FudF9oYXZlX2RlZmF1bHRfY3Rvci1yZWxhdGVkIHZhcmlhYmxlcy4KCjIwMDUtMDItMTUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZGVjbDIuYyAobWFya191c2VkKTogU2V0IHRoZSBzb3VyY2UgbG9jYXRpb24gb2YgdGhlIHVzZWQgZGVjbCB0bwoJdGhlIGN1cnJlbnQgaW5wdXQgbG9jYXRpb24gaGVyZS4uLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiAuLi4gbm90IGhlcmUuICBTZXQgaW5wdXRfbG9jYXRpb24KCWZyb20gdGhlIGRlY2wgaW5zdGVhZC4KCjIwMDUtMDItMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5NjA4CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbGF0ZV9wYXJzaW5nX2Zvcl9tZW1iZXIpOiBVc2UKCWN1cnJlbnRfZnVuY3Rpb25fZGVjbCBhcyBzY29wZSB0byBwdXNoIHRvIGFuZCBmcm9tLgoKCVBSIGMrKy8xOTg4NAoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IE1ha2Ugc3VyZSBuYW1lc3BhY2UKCWJpbmRpbmcgbG9va3VwIGZvdW5kIGFuIG92ZXJsb2FkZWQgZnVuY3Rpb24uCgkobG9va3VwX3RlbXBsYXRlX2Z1bmN0aW9uKTogSnVzdCBhc3NlcnQgRk5TIGlzIGFuIG92ZXJsb2FkZWQKCWZ1bmN0aW9uLgoKCVBSIGMrKy8xOTg5NQoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2hlY2sgZm9yIGVycm9yIG1hcmsgbm9kZSBpbiBwdHJtZW0KCWNvbnN0cnVjdGlvbi4KCjIwMDUtMDItMTQgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVBSIGMrKy8xNzgxNgoJKiBkZWNsLmMgKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IFJlcG9ydCByZWRlZmluaXRpb24gb2YKCXB1cmUgdmlydHVhbCBmdW5jdGlvbi4KCjIwMDUtMDItMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5ODkxCgkqIGNsYXNzLmMgKGJ1aWxkX3NpbXBsZV9iYXNlX3BhdGgpOiBCdWlsZCB0aGUgY29tcG9uZW50X3JlZgoJZGlyZWN0bHkuCgkodXBkYXRlX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBXYWxrIHRoZSBjb3ZhcmlhbnQncyBiaW5mbyBjaGFpbgoJcmF0aGVyIHRoYW4gdXNpbmcgbG9va3VwX2Jhc2UuCgkqIHNlYXJjaC5jIChkZnNfd2Fsa19vbmNlKTogQWRkIG5vbi1yZWN1cnNpdmUgYXNzZXJ0IGNoZWNrLgoJKiB0eXBlY2suYyAoYnVpbGRfY2xhc3NfbWVtYmVyX2FjY2Vzc19leHByKTogSXQgaXMgcG9zc2libGUgZm9yCgl0aGUgbWVtYmVyIHR5cGUgdG8gYmUgYm90aCBjb25zdCBhbmQgdm9sYXRpbGUuCgoyMDA1LTAyLTEyICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMTQ0NzkKCVBSIGMrKy8xOTQ4NwoJKiBwdC5jIChtYXliZV9jaGVja190ZW1wbGF0ZV90eXBlKTogUmVtb3ZlLgoJKiBjcC10cmVlLmggKG1heWJlX2NoZWNrX3RlbXBsYXRlX3R5cGUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiBuYW1lLWxvb2t1cC5jIChtYXliZV9wcm9jZXNzX3RlbXBsYXRlX3R5cGVfZGVjbGFyYXRpb24pOiBEb24ndAoJdXNlIG1heWJlX2NoZWNrX3RlbXBsYXRlX3R5cGUuCgoyMDA1LTAyLTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCVBSIGMrKy8xOTYzMgoJKiBwdC5jIChnZXRfbW9zdGx5X2luc3RhbnRpYXRlZF9mdW5jdGlvbl90eXBlKTogU2F2ZSBhbmQgcmVzdG9yZQoJZmxhZ19hY2Nlc3NfY29udHJvbCBpbnN0ZWFkIG9mIHB1c2gvcG9wX2FjY2Vzc19zY29wZS4KCjIwMDUtMDItMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5NzU1CgkqIGRlY2wuYyAocmVzaGFwZV9pbml0KTogSXNzdWUgd2FybmluZ3MgYWJvdXQgbWlzc2luZyBicmFjZXMuCgoyMDA1LTAyLTExICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY3AtdHJlZS5kZWYsIGV4Y2VwdC5jLCBwdHJlZS5jOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNS0wMi0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTk4MTEKCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IENoZWNrIENPTVBMRVRFX1RZUEVfUCBiZWZvcmUKCWF0dGVtcHRpbmcgbmFtZSBsb29rdXAuCgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3VucXVhbGlmaWVkX2lkKTogSW5pdGlhbGl6ZSB0eXBlX2RlY2wuCgoJUFIgYysrLzE5Nzg3CgkqIGNhbGwuYyAoaW5pdGlhbGl6ZV9yZWZlcmVuY2UpOiBSb2J1c3RpZnkuCgoJUFIgKysvMTk3MzIKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENoZWNrIGZvciBpbnZhbGlkIHVzZSBvZiBkZXN0cnVjdG9yCgluYW1lcy4KCglQUiBjKysvMTk3NjIKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl91bnF1YWxpZmllZF9pZCk6IEF2b2lkIGNyZWF0aW5nIGRlc3RydWN0b3IKCW5hbWVzIHdpdGggaW52YWxpZCB0eXBlcy4KCglQUiBjKysvMTk4MjYKCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kaXJlY3RfZGVjbGFyYXRvcik6IEFsbG93IHR5cGUtZGVwZW5kZW50CglleHByZXNzaW9ucyBhcyBhcnJheSBib3VuZHMuCgoJUFIgYysrLzE5NzM5CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfYXR0cmlidXRlc19saXN0KTogQWxsb3cgZW1wdHkgbGlzdHMuCgoyMDA1LTAyLTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTczMwoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogRG9uJ3Qgc2V0IFRZUEVfSEFTX0RFU1RSVUNUT1IuCgkoY2hlY2tfYmFzZXMpOiBHaXZlIHdhcm5pbmdzIGFib3V0IGEgYmFzZSBjbGFzcyB3aXRoIGEKCW5vbi12aXJ0dWFsIGRlc3RydWN0b3IsIGV2ZW4gaWYgaXQgaXMgaW1wbGljaXQuCgkoZmluaXNoX3N0cnVjdF9iaXRzKTogRG9uJ3QgY29weSBUWVBFX0hBU19ERVNUUlVDVE9SLgoJKG1heWJlX3dhcm5fYWJvdXRfb3Zlcmx5X3ByaXZhdGVfY2xhc3MpOiBEb24ndCB1c2UKCVRZUEVfSEFTX0RFU1RSVUNUT1IuCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRG9uJ3Qgc2V0IFRZUEVfSEFTX0RFU1RSVUNUT1IuCgkoY2hlY2tfZm9yX292ZXJyaWRlKTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMpOiBHZW5lcmF0ZSBkZXN0cnVjdG9ycyBsYXppbHkuCgkoY2hlY2tfZmllbGRfZGVjbHMpOiBVc2UgVFlQRV9IQVNfTk9OVFJJVklBTF9ERVNUUlVDVE9SLCBub3QKCVRZUEVfSEFTX0RFU1RSVUNUT1IuCgkoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBDYWxsIGNoZWNrX21ldGhvZHMgYmVmb3JlCgljaGVja19maWVsZF9kZWNscy4KCShjaGVja19iYXNlc19hbmRfbWVtYmVycyk6IFVzZSBUWVBFX0hBU19OT05UUklWSUFMX0RFU1RSVUNUT1IsIG5vdAoJVFlQRV9IQVNfREVTVFJVQ1RPUi4KCShmaW5pc2hfc3RydWN0XzEpOiBEbyBub3QgdXNlIFRZUEVfSEFTX0RFU1RSVUNUT1IuCgkqIGNwLXRyZWUuZGVmIChQU0VVRE9fRFRPUl9FWFBSKTogRG9jdW1lbnQuCgkqIGNwLXRyZWUuaCAoVFlQRV9IQVNfREVTVFJVQ1RPUik6IFJlbW92ZS4KCShsYW5nX3R5cGVfY2xhc3MpOiBBZGQgbGF6eV9kZXN0cnVjdG9yLgoJKENMQVNTVFlQRV9MQVpZX0RFU1RSVUNUT1IpOiBOZXcgbWFjcm8uCgkoQ0xBU1NUWVBFX0RFU1RSVUNUT1JTKTogUm9idXN0aWZ5LgoJKFRZUEVfSEFTX0RFU1RSVUNUT1IpOiBSZW1vdmUuCgkoY2hlY2tfZm9yX292ZXJyaWRlKTogRGVjbGFyZS4KCShidWlsZF92YmFzZV9kZWxldGUpOiBSZW1vdmUuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBJc3N1ZSBlcnJvcnMgYWJvdXQgcHNldWRvLWRlc3RydWN0b3IKCWV4cHJlc3Npb25zLgoJKiBkZWNsLmMgKGN4eF9tYXliZV9idWlsZF9jbGVhbnVwKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogZXhjZXB0LmMgKGR0b3Jfbm90aHJvdyk6IExhemlseSBjcmVhdGUgZGVzdHJ1Y3RvcnMgaWYgbmVjZXNzYXJ5LgoJKGJ1aWxkX3Rocm93KTogVXNlIFRZUEVfSEFTX05PTlRSSVZJQUxfREVTVFJVQ1RPUi4KCSogaW5pdC5jIChidWlsZF9kZWxldGUpOiBMYXppbHkgY3JlYXRlIGRlc3RydWN0b3JzLCBpZiBuZWNlc3NhcnkuCgkoYnVpbGRfdmJhc2VfZGVsZXRlKTogUmVtb3ZlLgoJKiBtZXRob2QuYyAobG9jYXRlX2R0b3IpOiBTaW1wbGlmeS4KCShpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBBZGQgc3VwcG9ydCBmb3IgZGVzdHJ1Y3RvcnMuCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfbG9va3VwX25hbWUpOiBMYXppbHkgY3JlYXRlIGRlc3RydWN0b3JzLCBpZgoJbmVjZXNzYXJ5LgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IERvbid0IHVzZQoJVFlQRV9IQVNfREVTVFJVQ1RPUi4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiBwdHJlZS5jIChjeHhfcHJpbnRfdHlwZSk6IERvbid0IHByaW50IFRZUEVfSEFTX0RFU1RSVUNUT1IuCgkqIHJ0dGkuYyAoZW1pdF9zdXBwb3J0X3RpbmZvcyk6IFJvYnVzdGlmeS4KCSogc2VhcmNoLmMgKGxvb2t1cF9mbmZpZWxkc18xKTogTGF6aWx5IGNyZWF0ZSBkZXN0cnVjdG9ycy4KCSogdHlwZWNrLmMgKGJ1aWxkX2NsYXNzX21lbWJlcl9hY2Nlc3NfZXhwcik6IFJlbW92ZQoJUFNFVURPX0RUT1JfRVhQUiBoYW5kbGluZy4KCShsb29rdXBfZGVzdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMjAwNS0wMi0wOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGN4eC1wcmV0dHktcHJpbnQuYywgY3h4LXByZXR0eS1wcmludC5oLCBkZWNsLmg6IFVwZGF0ZQoJY29weXJpZ2h0LgoKMjAwNS0wMi0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnNlci5jIChjcF9sZXhlcl9zdGFydF9kZWJ1Z2dpbmcpOiBBdm9pZCBhcml0aG1ldGljIG9wZXJhdGlvbnMKCW9uIGJvb2xlYW4gdmFyaWFibGVzLgoJKGNwX2xleGVyX3N0b3BfZGVidWdnaW5nKTogTGlrZXdpc2UuCgoyMDA1LTAyLTAzICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGdjYy5nbnUub3JnPgoKCVBSIGMrKy8xNzQwMQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3B1cmVfc3BlY2lmaWVyKTogRW1pdCBhIHNwZWNpZmljIGVycm9yCgltZXNzYWdlIHdpdGggYW4gaW52YWxpZCBwdXJlIHNwZWNpZmllci4KCSogZGVjbDIuYyAoZ3Jva19mdW5jdGlvbl9pbml0KTogUmVtb3ZlLgoJKGdyb2tmaWVsZCk6IEFuIGluaXRpYWxpemVyIGZvciBhIG1ldGhvZCBpcyBhIGFsd2F5cyBhIHB1cmUKCXNwZWNpZmllci4KCjIwMDUtMDItMDIgIE1hdHQgQXVzdGVybiAgPGF1c3Rlcm5AYXBwbGUuY29tPgoKCVBSIGMrKy8xOTYyOAoJKiBjcC10cmVlLmggKGJ1aWx0aW5fdmFsaWRfaW5fY29uc3RhbnRfZXhwcl9wKTogRGVjbGFyZS4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBBY2NlcHQgZnVuY3Rpb24gY2FsbCBpbgoJY29uc3RhbnQgZXhwcmVzc2lvbiBpZiBidWlsdGluX3ZhbGlkX2luX2NvbnN0YW50X2V4cHJfcCBpcyB0cnVlCglmb3IgdGhhdCBmdW5jdGlvbi4KCSogcHQuYyAodmFsdWVfZGVwZW5kZW50X2V4cHJlc3Npb25fcCk6IEhhbmRsZSBDQUxMX0VYUFJzIHByb3Blcmx5LgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lkX2V4cHJlc3Npb24pOiBBY2NlcHQgZnVuY3Rpb24gY2FsbCBpbiBjb25zdGFudAoJZXhwcmVzc2lvbiBpZiBidWlsdGluX3ZhbGlkX2luX2NvbnN0YW50X2V4cHJfcCBpcyB0cnVlIGZvciB0aGF0CglmdW5jdGlvbi4KCSogdHJlZS5jIChidWlsdGluX3ZhbGlkX2luX2NvbnN0YW50X2V4cHJfcCk6IE5ldy4KCjIwMDUtMDItMDIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzE3NDEzCgkqIHB0LmMgKGNoZWNrX2luc3RhbnRpYXRlZF9hcmdzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJRml4IGxvZ2ljIHdoZW4gdG8gcHJpbnQgaXRzIHNlY29uZCBwYXJ0LgoKMjAwNS0wMi0wMiAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGNwLXRyZWUuaCAoY29tcGxldGVfdHlwZV9vcl9lbHNlKTogUmVtb3ZlIG1hY3JvLgoJKGNvbXBsZXRlX3R5cGVfb3JfZGlhZ25vc3RpYyk6IFJlbmFtZSB0byBjb21wbGV0ZV90eXBlX29yX2Vsc2UKCWFuZCByZW1vdmUgbGFzdCBhcmd1bWVudC4KCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGVfb3JfZGlhZ25vc3RpYyk6IFJlbmFtZSB0bwoJY29tcGxldGVfdHlwZV9vcl9lbHNlIGFuZCByZW1vdmUgbGFzdCBhcmd1bWVudC4KCjIwMDUtMDItMDIgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBjcC10cmVlLmggKGNvbW1vbnBhcm1zKTogUmVtb3ZlIHByb3RvdHlwZS4KCShjb252ZXJ0X2FyZ3VtZW50cyk6IExpa2V3aXNlLgoJKFBGTl9GUk9NX1BUUk1FTUZVTkMpOiBSZW1vdmUuCgkqIHR5cGVjay5jIChjb21tb25wYXJtcyk6IE1ha2Ugc3RhdGljLgoJKGNvbnZlcnRfYXJndW1lbnRzKTogQWRkIHByb3RvdHlwZS4gTWFrZSBzdGF0aWMuCgkoUEZOX0ZST01fUFRSTUVNRlVOQyk6IFJlcGxhY2UgYnkgcGZuX2Zyb21fcHRybWVtZnVuYy4KCjIwMDUtMDEtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3ByaW1hcnlfZXhwcmVzc2lvbik6IERvbid0IGNvbXBsYWluIGFib3V0CglmbG9hdGluZy1wb2ludCBsaXRlcmFscyBpbiBpbnRlZ3JhbCBjb25zdGFudCBleHByZXNzaW9ucyB3aGVuCgkhcGVkYW50aWMuCgoyMDA1LTAyLTAxICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdGVtcGxhdGVfaWQpOiBSZXZlcnQgY29tbWVudCBwYXRjaCB0b28uCgoJUFIgYysrLzE4NzU3CglQUiBjKysvMTkzNjYKCVBSIGMrKy8xOTQ5OQoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX3RlbXBsYXRlX2lkKTogUmV2ZXJ0IDIwMDQtMTItMDkncyBwYXRjaC4KCUlzc3VlIGFuIGVycm9yIHdoZW4gY3JlYXRpbmcgdGhlIHRlbXBsYXRlIGlkLgoJKiBwdC5jIChmbl90eXBlX3VuaWZpY2F0aW9uKTogUmV0dXJuIGVhcmx5IGlmIHRoZSBleHBsaWNpdAoJdGVtcGxhdGUgYXJnIGxpc3QgaXMgYW4gZXJyb3JfbWFya19ub2RlLgoKMjAwNS0wMS0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfZW51bWVyYXRvcik6IERvIG5vdCBpc3N1ZSBkdXBsaWNhdGUgZXJyb3IgbWVzc2FnZXMKCWFib3V0IGludmFsaWQgZW51bWVyYXRpb24gY29uc3RhbnRzLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX25vbl9pbnRlZ3JhbF9jb25zdGFudF9leHByZXNzaW9uKTogQWx3YXlzCglzZXQgcGFyc2VyLT5ub25faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wLgoJKGNwX3BhcnNlcl9wcmltYXJ5X2V4cHJlc3Npb24pOiBBZGQgY2FzdF9wIHBhcmFtZXRlci4gIElzc3VlCgllcnJvcnMgYWJvdXQgaW52YWxpZCB1c2VzIG9mIGZsb2F0aW5nLXBvaW50IGxpdGVyYWxzIGluCgljYXN0LWV4cHJlc3Npb25zLgoJKGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24pOiBBZGQgY2FzdF9wIHBhcmFtZXRlci4KCShjcF9wYXJzZXJfb3Blbl9zcXVhcmVfZXhwcmVzc2lvbik6IFBhc3MgaXQuCgkoY3BfcGFyc2VyX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9saXN0KTogQWRkIGNhc3RfcCBwYXJhbWV0ZXIuCgkoY3BfcGFyc2VyX3VuYXJ5X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbmV3X3BsYWNlbWVudCk6IFBhc3MgaXQuCgkoY3BfcGFyc2VyX2RpcmVjdF9uZXdfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9uZXdfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfY2FzdF9leHByZXNzaW9uKTogQWRkIGNhc3RfcCBwYXJhbWV0ZXIuCgkoY3BfcGFyc2VyX2JpbmFyeV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3F1ZXN0aW9uX2NvbG9uX2NsYXVzZSk6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9hc3NpZ25tZW50X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZXhwcmVzc2lvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9jb25zdGFudF9leHByZXNzaW9uKTogSWYgYW4gaW50ZWdyYWwgY29uc3RhbnQKCWV4cHJlc3Npb24gaXMgaW52YWxpZCwgcmV0dXJuIGVycm9yX21hcmtfbm9kZS4KCShjcF9wYXJzZXJfZXhwcmVzc2lvbl9zdGF0ZW1lbnQpOiBQYXNzIGNhc3RfcC4KCShjcF9wYXJzZXJfY29uZGl0aW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2l0ZXJhdGlvbl9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfanVtcF9zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfbWVtX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3RlbXBsYXRlX2FyZ3VtZW50KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3BhcmFtZXRlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKGNwX3BhcnNlcl90aHJvd19leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2F0dHJpYnV0ZV9saXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX3NpbXBsZV9jYXN0X2V4cHJlc3Npb24pOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfZnVuY3Rpb25hbF9jYXN0KTogTGlrZXdpc2UuCgkoY3BfcGFyc2VyX2xhdGVfcGFyc2luZ19kZWZhdWx0X2FyZ3MpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfc2l6ZW9mX29wZXJhbmQpOiBTYXZlL3Jlc3RvcmUKCW5vbl9pbnRlZ3JhbF9jb25zdGFudF9leHByZXNzaW9uX3AuCgoyMDA1LTAxLTMxICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIHBhcnNlci5jIChjcF9sZXhlcl9uZXdfbWFpbik6IEdldCB0aGUgZmlyc3QgdG9rZW4sIGZpcnN0LCBiZWZvcmUKCWRvaW5nIGFueXRoaW5nLgoKMjAwNS0wMS0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IEFkZCBtaXNzaW5nIHBhcmVudGhlc2VzLgoKMjAwNS0wMS0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMTk1NTUKCSogY3AtdHJlZS5oIChERUNMX1VTRV9URU1QTEFURSk6IEV4cGFuZCBkb2N1bWVudGF0aW9uLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvIG5vdCBkaXNjYXJkCglERUNMX0lNUExJQ0lUX0lOU1RBTlRJQVRJT04gd2hlbiBtZXJnaW5nIGRlY2xhcmF0aW9ucy4KCShzdGFydF9kZWNsKTogRG8gbm90IFNFVF9ERUNMX1RFTVBMQVRFX1NQRUNJQUxJWkFUSU9OIGZvcgoJdmFyaWFibGVzIHRoYXQgZG8gbm90IGhhdmUgREVDTF9VU0VfVEVNUExBVEUuCgoJUFIgYysrLzE5Mzk1CgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZWZhY3RvciBjb2RlIHNvIHRoYXQgcXVhbGlmaWVkIG5hbWVzCglhcmUgbmV2ZXIgYWxsb3dlZCBhcyB0aGUgZGVjbGFyYXRvciBpbiBhIHR5cGVkZWYuCgoJUFIgYysrLzE5MzY3CgkqIG5hbWUtbG9va3VwLmMgKGRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogQXZvaWQgb3ZlcmxvYWRpbmcKCWJ1aWx0aW4gZGVjbGFyYXRpb25zLgoKCVBSIGMrKy8xOTQ1NwoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZV9yZWFsKTogSW5saW5lIGNhbGwgdG8KCWR1YmlvdXNfY29udmVyc2lvbl93YXJuaW5ncyBoZXJlLgoJKiBjcC10cmVlLmggKGR1YmlvdXNfY29udmVyc2lvbl93YXJuaW5ncyk6IFJlbW92ZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF91bmFyeV9vcF9leHByKTogQ29weSBJTlRFR0VSX0NTVHMgYmVmb3JlCglzZXR0aW5nIFRSRUVfTkVHQVRFRF9JTlQuCgkqIHR5cGVjay5jIChkdWJpb3VzX2NvbnZlcnNpb25fd2FybmluZ3MpOiBSZW1vdmUuCgoJUFIgYysrLzE5MzQ5CgkqIG5hbWUtbG9va3VwLmMgKHB1c2hkZWNsX25hbWVzcGFjZV9sZXZlbCk6IEF2b2lkIGFjY2Vzc2luZyBmcmVlJ2QKCW1lbW9yeS4KCjIwMDUtMDEtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5MjUzCgkqIHBhcnNlci5jIChjcF9wYXJzZXJfZGlhZ25vc2VfaW52YWxpZF90eXBlX25hbWUpOiBDb21taXQgdG8KCXRlbnRhdGl2ZSBwYXJzZXMuCgoJUFIgYysrLzE5NjY3CgkqIHB0LmMgKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IFJvYnVzdGlmeS4KCjIwMDUtMDEtMjcgIFN0ZXZlbiBCb3NzY2hlciAgPHN0ZXZlbmJAc3VzZS5kZT4KCgkqIGRlY2wuYyAoZmluaXNoX2Nhc2VfbGFiZWwpOiBVc2UgU1dJVENIX1NUTVQgYWNjZXNzb3IgbWFjcm9zCglpbnN0ZWFkIG9mIFNXSVRDSF9FWFBSIG9uZXMuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChiZWdpbl9zd2l0Y2hfc3RtdCwgZmluaXNoX3N3aXRjaF9jb25kLAoJZmluaXNoX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgoyMDA1LTAxLTI2ICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCVBSIGMrKy8xODM3MAoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2luaXRpYWxpemVyX2NsYXVzZSk6IEluaXRpYWxpemUgKm5vbl9jb25zdGFudF9wLgoKMjAwNS0wMS0yNSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBjbGFzcy5jIChhYm9ydF9mbmRlY2xfYWRkcik6IE5ldyB2YXJpYWJsZS4KCShidWlsZF92dGJsX2luaXRpYWxpemVyKTogSWYgd2UgaGF2ZSBhIHB1cmUgdmlydHVhbCBmdW5jdGlvbgoJc2hhcmUgdGhlIGFib3J0IGZ1bmN0aW9uJ3MgYWRkcmVzcy4KCUluY2x1ZGUgZ3QtY3AtY2xhc3MuaCBhdCB0aGUgZW5kLgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IEFkZCBjcC9jbGFzcy5jLgoKMjAwNS0wMS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGN4eC1wcmV0dHktcHJpbnQuYyAocHBfY3h4X3N0YXRlbWVudCk6IEFkZCBwcm90b3R5cGUuIE1ha2Ugc3RhdGljLgoJKHBwX2N4eF9mdW5jdGlvbl9kZWZpbml0aW9uKTogTWFrZSBzdGF0aWMuCgkqIGN4eC1wcmV0dHktcHJpbnQuaCAocHBfY3h4X3N0YXRlbWVudCk6IFJlbW92ZSBwcm90b3R5cGUuCgkocHBfY3h4X2Z1bmN0aW9uX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCjIwMDUtMDEtMjUgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJKiBuYW1lLWxvb2t1cC5jIChwcmludF9iaW5kaW5nX2xldmVsKTogTWFrZSBzdGF0aWMuCgkoY29uc3RydWN0b3JfbmFtZV9mdWxsKTogTWFrZSBzdGF0aWMgaW5saW5lLgoJKGN1cnJlbnRfZGVjbF9uYW1lc3BhY2UpOiBNYWtlIHN0YXRpYy4KCSogbmFtZS1sb29rdXAuaCAoY29uc3RydWN0b3JfbmFtZV9mdWxsKTogUmVtb3ZlIHByb3RvdHlwZS4KCShwcmludF9iaW5kaW5nX2xldmVsKTogTGlrZXdpc2UuCgkoY3VycmVudF9kZWNsX25hbWVzcGFjZSk6IExpa2V3aXNlLgoKMjAwNS0wMS0yNSAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIGRlY2wuaCAoZGVidWdfYmluZGluZ3NfaW5kZW50YXRpb24pOiBSZW1vdmUuCgoyMDA1LTAxLTIzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogdHlwZWNrLmM6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDUtMDEtMjEgIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AZ2NjLmdudS5vcmc+CgoJUFIgYysrLzE5MjA4CgkqIHB0LmMgKGZvbGRfZGVjbF9jb25zdGFudF92YWx1ZSk6IEFsd2F5cyBjYWxsIGZvbGRfbm9uX2RlcGVuZGVudF9leHByCglhdCBsZWFzdCBvbmNlLgoJKHRzdWJzdCk6IFVzZSBmb2xkX2RlY2xfY29uc3RhbnRfdmFsdWUgaW4gcGxhY2Ugb2YgYSBiYXJlIGNhbGwgdG8KCWludGVncmFsX2NvbnN0YW50X3ZhbHVlLgoKMjAwNS0wMS0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHR5cGVjay5jIChtb3JlX3F1YWxpZmllZF9wKTogUmVtb3ZlLgoJKiBjcC10cmVlLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoyMDA1LTAxLTE5ICBNYXR0IEF1c3Rlcm4gIDxhdXN0ZXJuQGFwcGxlLmNvbT4KCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBIYW5kbGUgcmV0dXJuIGNvZGUgZnJvbSBvYmpjX2NvbXB0eXBlcwoJY29ycmVjdGx5LgoKMjAwNS0wMS0xOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGNwLXRyZWUuaCwgbmFtZS1sb29rdXAuaDogUmVtb3ZlIHVudXNlZCBwcm90b3R5cGVzLgoKMjAwNS0wMS0xOSAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzE5Mzc1CgkqIHNlbWFudGljcy5jIChmaW5pc2hfaWRfZXhwcmVzc2lvbik6IERpc2FibGUgYWNjZXNzIGNoZWNraW5nIGZvcgoJYWxyZWFkeSBsb29rdXBlZCBGSUVMRF9ERUNMLgoKMjAwNS0wMS0xOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGRlY2wuYyAoZGVsZXRlX2Jsb2NrKTogUmVtb3ZlLgoJKiBjcC10cmVlLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGUuCgoJKiBkZWNsLmMgKHZ0YWJsZV9kZWNsX3AsIHZ0eXBlX2RlY2xfcCwgd2Fsa19nbG9iYWxzX2RhdGEsCgl3YWxrX3Z0YWJsZXNfciwgd2Fsa192dGFibGVzLCB3YWxrX2dsb2JhbHNfciwgd2Fsa19nbG9iYWxzKToKCVJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCgkqIHRyZWUuYyAoY291bnRfZnVuY3Rpb25zLCBib3VuZF9wbWZfcCwgY3BfaXNfb3ZlcmxvYWRfcCwKCWNwX3VwZGF0ZV9kZWNsX2FmdGVyX3NhdmluZywgbmFtZV9wKTogUmVtb3ZlLgoJKiBjcC10cmVlLmg6IFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBwcm90b3R5cGVzLgoKMjAwNS0wMS0xOCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYy8xOTQ3MgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogU3RyaXAgbm9wcyBvZmYKCWlucHV0IG1lbW9yeSBvcGVyYW5kcy4KCjIwMDUtMDEtMTggIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4sIGNhbGwuYywgY3Z0LmMsIGluaXQuYywgcnR0aS5jLCB0cmVlLmMsCgl0eXBlY2syLmM6IFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDA1LTAxLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2xhc3MuYyAoZ2V0X2VuY2xvc2luZ19jbGFzcyk6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCgkqIGN2dC5jIChjb252ZXJ0X2x2YWx1ZSk6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlLgoKCSogcHQuYyAodGluc3RfZm9yX2RlY2wpOiBSZW1vdmUuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZXMuCgoJKiB0cmVlLmMgKGhhc2hfY2hhaW5vbik6IFJlbW92ZS4KCSogY3AtdHJlZS5oOiBSZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvdG90eXBlcy4KCjIwMDUtMDEtMTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCVBSIGMrKy8xOTI2MwoJKiB0eXBlY2syLmMgKHNwbGl0X25vbmNvbnN0YW50X2luaXRfMSkgPGNhc2UgVkVDVE9SX1RZUEU+OiBQdXQgYSBjb3B5CglvZiBDT05TVFJVQ1RPUidzIG5vZGUgaW50byBNT0RJRllfRVhQUiwgYXMgdGhlIG9yaWdpbmFsIGlzIG1vZGlmaWVkLgoKMjAwNS0wMS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChjcC13YXJuKTogRG9uJ3QgYXBwZW5kICQoV0VSUk9SKS4KCjIwMDUtMDEtMTAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjcC10cmVlLmg6IEZpeCBhIGNvbW1lbnQgdHlwby4KCjIwMDUtMDEtMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5Mjk4CgkqIHB0LmMgKHRzdWJzdF9xdWFsaWZpZWRfaWQpOiBDYWxsIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2UuCgoyMDA1LTAxLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTI0NAoJKiBjbGFzcy5jIChhZGRfaW1wbGljaXRseV9kZWNsYXJlZF9tZW1iZXJzKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogQWRkIHNmayBwYXJhbWV0ZXIuICBVc2UgaXQgZG8gc2V0CglERUNMX0NPTlNUUlVDVE9SX1AuCgkoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QgY2FsbHMgdG8gZ3Jva2ZuZGVjbC4KCSogbWV0aG9kLmMgKGltcGxpY2l0bHlfZGVjbGFyZV9mbik6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCSogcGFyc2VyLmMgKGNwX3BhcnNlcl9kaXJlY3RfZGVjbGFyYXRvcik6IERvIG5vdCBjb25zaWRlciBhCglmdW5jdGlvbiB0byBiZSBhIGNvbnN0cnVjdG9yIGlmIHRoZSBjb250YWluaW5nIGNsYXNzIHdhcwoJb3JpZ2luYWxseSBhbm9ueW1vdXMuCgoyMDA1LTAxLTA2ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCglQUiBjKysvMTcxNTQKCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZF8xKTogSGFuZGxlIHVzaW5nIGRlY2xhcmF0aW9uIGluCgljbGFzcyB0ZW1wbGF0ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLgoKMjAwNS0wMS0wNiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJUFIgYysrLzE5MjU4CgkqIHB0LmMgKHB1c2hfYWNjZXNzX3Njb3BlKTogSGFuZGxlIGZyaWVuZCBkZWZpbmVkIGluIGNsYXNzLgoJKHBvcF9hY2Nlc3Nfc2NvcGUpOiBMaWtld2lzZS4KCjIwMDUtMDEtMDYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzE5MjcwCgkqIHB0LmMgKHRzdWJzdF9jb3B5KSA8QVJSQVlfUkVGIGNhc2U+OiBIYW5kbGUgc2VwYXJhdGVseS4KCSh0c3Vic3RfY29weV9hbmRfYnVpbGQpIDxBUlJBWV9SRUYgY2FzZT46IFJlbW92ZSBvYnNvbGV0ZQoJYXJyYXktbmV3IGhhbmRsaW5nIGNvZGUuICBVc2UgYnVpbGRfeF9iaW5hcnlfb3AuCgoyMDA1LTAxLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8xOTAzMAoJKiBjcC10cmVlLmggKHN0YXJ0X2RlY2wpOiBUYWtlIHBvaW50ZXIgdG8gcHVzaGVkIHNjb3BlLCBub3QgYm9vbC4KCSogbmFtZS1sb29rdXAuaCAocHVzaF9zY29wZSk6IFJldHVybiBwdXNoZWQgc2NvcGUsIG5vdCBmbGFnLgoJKiBuYW1lLWxvb2t1cC5jIChwdXNoX3Njb3BlKTogUmV0dXJuIHNjb3BlIHRoYXQgc2hvdWxkIGJlIHBvcHBlZCwKCW5vdCBhIGZsYWcuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IEFkanVzdC4KCShncm9rZm5kZWNsKTogQWRqdXN0IHNjb3BlIHB1c2ggYW5kIHBvcC4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IExpa2V3aXNlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2VyX2NvbmRpdGlvbiwgY3BfcGFyc2VyX2NvbnZlcnNpb25fZnVuY3Rpb25faWQsCgljcF9wYXJzZXJfaW5pdF9kZWNsYXJhdG9yLCBjcF9wYXJzZXJfZGlyZWN0X2RlY2xhcmF0b3IsCgljcF9wYXJzZXJfY2xhc3Nfc3BlY2lmaWVyLCBjcF9wYXJzZXJfY2xhc3NfaGVhZCwKCWNwX3BhcnNlcl9sb29rdXBfbmFtZSwKCWNwX3BhcnNlcl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yX3ApOiBMaWtld2lzZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUsCglyZXNvbHZlX3R5cGVuYW1lX3R5cGUpOiBMaWtld2lzZS4KCjIwMDUtMDEtMDMgIFZvbGtlciBSZWljaGVsdCAgPHJlaWNoZWx0QGlncG0ucnd0aC1hYWNoZW4uZGU+CgoJUFIgYysrLzE0MTM2CgkqIHBhcnNlci5jIChjcF9wYXJzZXJfdW5xdWFsaWZpZWRfaWQpOiBEbyBub3QgaXNzdWUgZXJyb3IgbWVzc2FnZQoJZm9yIHR5cGVkZWYtbmFtZSBhcyBkZXN0cnVjdG9yIGRlY2xhcmF0b3Igd2hlbiBwZXJmb3JtaW5nIGFuCgl1bmNvbW1pdHRlZCB0ZW50YXRpdmUgcGFyc2UuCgoyMDA1LTAxLTAxICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJUFIgbWlkZGxlLWVuZC8xNzU0NAoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IEZpeCBjb21tZW50LiAgQW5ub3RhdGUgdGhlIGNvbXBpbGVyCglnZW5lcmF0ZWQgcmV0dXJuIHdpdGggdGhlIGN1cnJlbnQgZmlsZSBuYW1lIGFuZCBsaW5lIDAuCg==